PyQt-gpl-5.5.1/0000755000076500000240000000000012613140041013246 5ustar philstaff00000000000000PyQt-gpl-5.5.1/__init__.py0000644000076500000240000000147212613140030015361 0ustar philstaff00000000000000# Copyright (c) 2015 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. PyQt-gpl-5.5.1/AddToPath.nsh0000644000076500000240000001461512613140030015575 0ustar philstaff00000000000000;---------------------------------------- ; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02" ;---------------------------------------- !verbose 3 !include "WinMessages.NSH" !verbose 4 ;---------------------------------------------------- !define NT_current_env 'HKCU "Environment"' !define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' ;==================================================== ; IsNT - Returns 1 if the current system is NT, 0 ; otherwise. ; Output: head of the stack ;==================================================== !macro IsNT UN Function ${UN}IsNT Push $0 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion StrCmp $0 "" 0 IsNT_yes ; we are not NT. Pop $0 Push 0 Return IsNT_yes: ; NT!!! Pop $0 Push 1 FunctionEnd !macroend !insertmacro IsNT "" !insertmacro IsNT "un." ;==================================================== ; AddToPath - Adds the given dir to the search path. ; Input - head of the stack ; Note - Win9x systems requires reboot ;==================================================== Function AddToPath Exch $0 Push $1 Push $2 Call IsNT Pop $1 StrCmp $1 1 AddToPath_NT ; Not on NT StrCpy $1 $WINDIR 2 FileOpen $1 "$1\autoexec.bat" a FileSeek $1 0 END GetFullPathName /SHORT $0 $0 FileWrite $1 "$\r$\nSET PATH=$0;%PATH%$\r$\n" FileClose $1 Goto AddToPath_done AddToPath_NT: Push $4 ; Try to set PATH for all. StrCpy $4 "all" AddToPath_NT_selection_done: StrCmp $4 "current" read_path_NT_current ReadRegStr $1 ${NT_all_env} "PATH" Goto read_path_NT_resume read_path_NT_current: ReadRegStr $1 ${NT_current_env} "PATH" read_path_NT_resume: StrCpy $2 $0 StrCmp $1 "" AddToPath_NTdoIt StrCpy $2 "$0;$1" AddToPath_NTdoIt: StrCmp $4 "current" write_path_NT_current ClearErrors WriteRegExpandStr ${NT_all_env} "PATH" $2 IfErrors 0 write_path_NT_resume ; Try again for the current user. StrCpy $4 "current" Goto AddToPath_NT_selection_done write_path_NT_current: ClearErrors WriteRegExpandStr ${NT_current_env} "PATH" $2 IfErrors 0 write_path_NT_resume MessageBox MB_OK|MB_ICONINFORMATION "PATH could not be updated for all users or the current user." Goto write_path_NT_failed write_path_NT_resume: SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 DetailPrint "added path for user ($4), $0" write_path_NT_failed: Pop $4 AddToPath_done: Pop $2 Pop $1 Pop $0 FunctionEnd ;==================================================== ; RemoveFromPath - Remove a given dir from the path ; Input: head of the stack ;==================================================== Function un.RemoveFromPath Exch $0 Push $1 Push $2 Push $3 Push $4 Push $5 Call un.IsNT Pop $1 StrCmp $1 1 unRemoveFromPath_NT ; Not on NT StrCpy $1 $WINDIR 2 FileOpen $1 "$1\autoexec.bat" r GetTempFileName $4 FileOpen $2 $4 w GetFullPathName /SHORT $0 $0 StrCpy $0 "SET PATH=%PATH%;$0" SetRebootFlag true Goto unRemoveFromPath_dosLoop unRemoveFromPath_dosLoop: FileRead $1 $3 StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoop StrCmp $3 "$0$\n" unRemoveFromPath_dosLoop StrCmp $3 "$0" unRemoveFromPath_dosLoop StrCmp $3 "" unRemoveFromPath_dosLoopEnd FileWrite $2 $3 Goto unRemoveFromPath_dosLoop unRemoveFromPath_dosLoopEnd: FileClose $2 FileClose $1 StrCpy $1 $WINDIR 2 Delete "$1\autoexec.bat" CopyFiles /SILENT $4 "$1\autoexec.bat" Delete $4 Goto unRemoveFromPath_done unRemoveFromPath_NT: StrLen $2 $0 ; Try to unset PATH for all. StrCpy $4 "all" ReadRegStr $1 ${NT_all_env} "PATH" unRemoveFromPath_find: Push $1 Push $0 Call un.StrStr ; Find $0 in $1 Pop $5 ; pos of our dir IntCmp $5 -1 unRemoveFromPath_next ; else, it is in path StrCpy $3 $1 $5 ; $3 now has the part of the path before our dir IntOp $2 $2 + $5 ; $2 now contains the pos after our dir in the path (';') IntOp $2 $2 + 1 ; $2 now containts the pos after our dir and the semicolon. StrLen $5 $1 StrCpy $1 $1 $5 $2 StrCpy $3 "$3$1" StrCmp $4 "current" un_write_path_NT_current WriteRegExpandStr ${NT_all_env} "PATH" $3 Goto unRemoveFromPath_next un_write_path_NT_current: WriteRegExpandStr ${NT_current_env} "PATH" $3 unRemoveFromPath_next: StrCmp $4 "current" unRemoveFromPath_done ; Go round again for the current user. StrCpy $4 "current" ReadRegStr $1 ${NT_current_env} "PATH" Goto unRemoveFromPath_find unRemoveFromPath_done: SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Uninstall sutff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;==================================================== ; StrStr - Finds a given string in another given string. ; Returns -1 if not found and the pos if found. ; Input: head of the stack - string to find ; second in the stack - string to find in ; Output: head of the stack ;==================================================== Function un.StrStr Push $0 Exch Pop $0 ; $0 now have the string to find Push $1 Exch 2 Pop $1 ; $1 now have the string to find in Exch Push $2 Push $3 Push $4 Push $5 StrCpy $2 -1 StrLen $3 $0 StrLen $4 $1 IntOp $4 $4 - $3 unStrStr_loop: IntOp $2 $2 + 1 IntCmp $2 $4 0 0 unStrStrReturn_notFound StrCpy $5 $1 $3 $2 StrCmp $5 $0 unStrStr_done unStrStr_loop unStrStrReturn_notFound: StrCpy $2 -1 unStrStr_done: Pop $5 Pop $4 Pop $3 Exch $2 Exch 2 Pop $0 Pop $1 FunctionEnd ;==================================================== PyQt-gpl-5.5.1/ChangeLog0000644000076500000240000075103112613140030015025 0ustar philstaff000000000000002015-10-25 Phil Thompson * .hgtags: Added tag 5.5.1 for changeset ee08241be21f [0659e00fc2ab] [tip] <5.5-maint> * NEWS, installers/PyQt5-Qt5-gpl.nsi: Released as v5.5.1. [ee08241be21f] [5.5.1] <5.5-maint> * qpy/QtCore/qpycore_pyqtproperty.cpp: Fixed the handling of getter docstrings by pyqtProperty. [75fe5856da75] <5.5-maint> * lib/configure.py: Make sure configure.py enables debug flags early enough. [71a413789681] <5.5-maint> 2015-10-18 Phil Thompson * Makefile, PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, qpy/QtCore/qsysinfo.sip: Remainig updates for Qt v5.5.1. [13f9ece29d02] <5.5-maint> 2015-10-17 Phil Thompson * lib/configure.py: The workaround for the Qt v5.5 rpath problem on OS X will now handle Qt builds where any of QtPrintSupport, QtDBus or QtWidgets have been disabled. [aec0addf0acb] <5.5-maint> * PyQt5.msp: Updated from the initial scan of Qt v5.5.1. [942ae18cf71c] <5.5-maint> 2015-10-16 Phil Thompson * examples/network/http/http.py: Another minor fix to http.py. [0be6496d6bfe] <5.5-maint> * examples/network/http/http.py: Fixed a bug in the http.py example. [e4609df54374] <5.5-maint> 2015-09-22 Phil Thompson * PyQt5.msp: Fixed ownership issues with QQuickFramebufferObject.Renderer. [32c52859b93a] <5.5-maint> * installers/BuildGPL.txt, installers/pyqt5-config.bat, lib/configure.py, sphinx/installation.rst: Added the --disable option to configure.py. [992d1d3c2439] <5.5-maint> 2015-09-19 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Don't assume unicode objects being converted to QStrings are ready. [dd00723a6712] <5.5-maint> 2015-09-18 Phil Thompson * PyQt5.msp: Hopefully fixed the ownership of the object returned by QQuickFramebufferObject.createRenderer(). [28175521934f] <5.5-maint> * PyQt5.msp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquickframebufferobject.cpp, qpy/QtQuick/qpyquickframebufferobject.h: Handle a QQuickFramebufferObject in the same was as QQuickPaintedItem. [af9ef4c21748] <5.5-maint> * pyuic/uic/properties.py: Fixed pyuic's handling of non-ASCII font family names. [cf72929c8d36] <5.5-maint> 2015-09-10 Phil Thompson * PyQt5.msp: Fixed all handwritten code that uses C++11 lambdas. [5c39838726ef] <5.5-maint> * Makefile, PyQt5.msp: Improved some handwritten code. [7bf4b1f25365] <5.5-maint> 2015-09-09 Phil Thompson * build.py: Updated the root URL for the Qt docs. [c52056ca5ef2] <5.5-maint> 2015-09-08 Phil Thompson * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers /psql-config.bat: Updates to installers for Python v3.5. [df9e3329a638] <5.5-maint> * lib/configure.py: Use win32-msvc2015 for Python v3.5. [8ab07055894e] <5.5-maint> * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi: Installer updates for Python v3.5. [bf1db67f03e7] <5.5-maint> * PyQt5.msp: Remainder of QMacCocoaViewContainer fix. [06cf88343082] <5.5-maint> 2015-09-07 Phil Thompson * lib/SubclassCode/QtWidgets.versions, qpy/QtWidgets/qmaccocoaviewcontainer.sip: QMacCocoaViewContainer is now feature dependent so that it can be disabled for iOS. [ee9b7b0e0576] <5.5-maint> 2015-09-02 Phil Thompson * examples/animation/animatedtiles/animatedtiles.py, examples/animation/appchooser/appchooser.py, examples/animation/easing/easing.py, examples/animation/moveblocks.py, examples/animation/states/states.py, examples/animation/stickman/stickman.py, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/padnavigator/padnavigator.py: Fixed implicit conversions from strings to QByteArray in the examples. [03781fa3b27e] <5.5-maint> * PyQt5.msp: Implemented __matmul__ and __imatmul__ for QMatrix4x4 and QTransform. [f13ef1501dfb] <5.5-maint> 2015-09-01 Phil Thompson * Makefile: The internal build system now defaults to Python v3.5. [514fd7675915] <5.5-maint> 2015-08-28 Phil Thompson * README-PyQml.txt: Added the README-PyQml.txt to document the state of the branch. [626b6d11f93c] 2015-08-27 Phil Thompson * PyQml/QtQml/__init__.py, PyQml/QtQml/v2_2/__init__.py, PyQml/QtQml/v2_2/qtobject.py, PyQml/QtQuick/__init__.py, PyQml/QtQuick/v2_5/__init__.py, PyQml/QtQuick/v2_5/item.py, PyQml/QtQuick/v2_5/rectangle.py, PyQml/__init__.py, PyQml/component.py, PyQml/properties.py, examples/PyQml/properties.py: Added minimal QtQml and QtQuick QML modules. [8ab6fb1dbb3f] * examples/qml/referenceexamples/attached.py, examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/coercion.py, examples/qml/referenceexamples/default.py, examples/qml/referenceexamples/grouped.py, examples/qml/referenceexamples/methods.py, examples/qml/referenceexamples/properties.py, examples/qml/referenceexamples/signal.py, examples/qml/referenceexamples/valuesource.py, qpy/QtCore/qpycore_namespace.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.sip, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQml/qpyqmllistpropertywrapper.h, sphinx/qml.rst: QQmlListProperty now acts as a proxy for any underlying Python list. [0118d626268a] 2015-08-26 Phil Thompson * PyQt5.msp: Applied a better fix than 56be1a87fd2c that doesn't break proxy resolution. [d4abeb2c9492] * PyQml/__init__.py, PyQml/component.py, PyQml/meta_component.py, PyQml/properties.py, examples/PyQml/properties.py: All property types can now have initial values. PyQmlComponent.qml() is now a class method. [63fc6972574d] 2015-08-25 Phil Thompson * PyQt5.msp: Backed out 56be1a87fd2c because it breaks the proxy resolution. [eeff9acbcf1c] * PyQml/__init__.py, PyQml/component.py, PyQml/register_components.py, examples/PyQml/properties.py: Added support for __uri__ and __version__. [a242c6cb3da4] * Makefile, PyQml/__init__.py, PyQml/component.py, PyQml/meta_component.py, PyQml/properties.py, PyQml/qml_types.py: Completed the initial implementation of properties and the meta- class. [4f5dfbdfa7e3] * PyQml/__init__.py, PyQml/component.py, PyQml/qml_types.py, PyQml/register_components.py, examples/PyQml/properties.py: Added stubs for the initial API. [6b3aafdf0cfd] 2015-08-24 Phil Thompson * PyQml/__init__.py, build.py, examples/PyQml/properties.py, lib/configure.py: Added the stub of the PyQml module. [a8d40cffa7ba] 2015-08-28 Phil Thompson * qpy/QtCore/qpycore_qobject_getattr.cpp: Fixed a legacy comment. [fc27a24424ee] <5.5-maint> 2015-08-27 Phil Thompson * examples/qml/referenceexamples/attached.py, examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/coercion.py, examples/qml/referenceexamples/default.py, examples/qml/referenceexamples/grouped.py, examples/qml/referenceexamples/methods.py, examples/qml/referenceexamples/properties.py, examples/qml/referenceexamples/signal.py, examples/qml/referenceexamples/valuesource.py, qpy/QtCore/qpycore_namespace.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.sip, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQml/qpyqmllistpropertywrapper.h, sphinx/qml.rst: QQmlListProperty now acts as a proxy for any underlying Python list. [ffd5437ab83f] <5.5-maint> 2015-08-26 Phil Thompson * PyQt5.msp: Applied a better fix than 56be1a87fd2c that doesn't break proxy resolution. [e0fc4cba9b47] <5.5-maint> 2015-08-25 Phil Thompson * PyQt5.msp: Backed out 56be1a87fd2c because it breaks the proxy resolution. [209dc1cc0ecc] <5.5-maint> 2015-08-17 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Fixed the conversion of enums for Qt v5.5. [698e32887e28] <5.5-maint> 2015-08-12 Phil Thompson * PyQt5.msp: Fixed a remaining OpenGL feature. [02a5c02ddbcb] <5.5-maint> 2015-08-11 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Fixed a missing exception when failing to parse types. [fb938891400e] <5.5-maint> 2015-08-10 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtWidgets.versions: Fixes for building against a Qt without OpenGL support. [2bd297e85e66] <5.5-maint> 2015-08-02 Phil Thompson * PyQt5.msp: Fixed a leak in the handling of QQuickItem.updatePaintNode(). [8bfac6a28129] <5.5-maint> * lib/configure.py: Properly fix the different licensee values for the LGPL version of Qt. [45a7890b0823] <5.5-maint> * PyQt5.msp: Ensure that QtWebEngineWidgets is imported before a QCoreApplication instance is created. [a4041c1d6446] <5.5-maint> 2015-07-23 Phil Thompson * examples/qtdemo/demoitemanimation.py: Fixed an implicit coding bug in qtdemo. [7ff58420e62e] <5.5-maint> 2015-07-22 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtCore.versions, lib/configure.py: Changes needed because iOS doesn't have QProcess etc. [4e482908fc36] <5.5-maint> * lib/configure.py: Interpret a licensee of "Builder Qt" as being the LGPL version. [1327c48468e4] <5.5-maint> * Merge the forgotten tagging of the v5.5 release. [fec61fb57dc8] <5.5-maint> * .hgtags: Added tag 5.5 for changeset a4bf2ec86f1e [9d7d3e5d6370] * Makefile: Updated the default target version. [4e9e6b798220] <5.5-maint> * PyQt5.msp: Fixes for compiling against Qt builds without SSL support. [a5cfb55177fc] <5.5-maint> 2015-07-17 Phil Thompson * NEWS, installers/pyqt5-check.py: Released as v5.5. [a4bf2ec86f1e] [5.5] * lib/configure.py: Tidied up the format of chenerated .pro files. [3481361d7081] * installers/pyqt5-check.py: pyqt5-check.py now checks the import of each module. [204bcf3320a3] 2015-07-12 Phil Thompson * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers/pyqt5-check.py: Updated the Windows installer for Qt v5.5.0. [7291c392fd1f] * PyQt5.msp: Fixed a build problem when compiling each class separately. [6968432991a7] * sphinx/deprecations.rst, sphinx/index.rst, sphinx/platforms.rst: Added the section covering platform specific issues to the docs. [872c73dc46ec] * PyQt5.msp, designer/pluginloader.cpp, designer/pluginloader.h, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h, qpy/QtDesigner/qpydesignercustomwidgetplugin.h: Eliminated the warning messages when compiling QtDesigner against Qt v5.5.0. [ef816a6023fa] * PyQt5.msp: Ignore the Qt3D namespace. [f76909162b0d] 2015-07-10 Phil Thompson * qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qmap.sip: Made small improvements to the exception text for some mapped type conversions. [6636b3382c7c] * NEWS, PyQt5.msp, sphinx/api_metadata.cfg: Implemented QProxyStyle. [4a8da89efee1] * PyQt5.msp: Added the initial scan of QProxyStyle. [10918a24693d] 2015-07-09 Phil Thompson * NEWS, sphinx/api_metadata.cfg, sphinx/introduction.rst: Documented the QtNfc module. [098fa0059151] * PyQt5.msp, lib/configure.py: Completed the implementation of the QtNfc module. [980a642056c2] * PyQt5.msp: Completed the initial scan of the QtNfc module. [f84dc533613e] * PyQt5.msp: Really scan Qt v5.5.0. [e942243e71f2] * lib/configure.py: Update QMAKE_RPATHDIR rather than set it. [6e7ef843d1a8] 2015-07-07 Phil Thompson * NEWS, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added QtLocation to the documentation. Updated the NEWS file. [6fd628724de4] * PyQt5.msp: Updated for Qt v5.5.0. [825d80753312] * lib/configure.py: Fixed the remaining problems caused by the use of rpath in Qt v5.5.0 on OS X. [5245460dd4e0] 2015-07-01 Phil Thompson * PyQt5.msp, lib/configure.py: Completed the implementation of QtLocation. [5ef6f88ed7cc] * pyuic/uic/uiparser.py: Fixed the adding of a widget to a box layout when an alignment is specified. [c7462b03a569] * PyQt5.msp: Added the initial support for QtLocation. [74dba26ade24] * lib/configure.py: Updated configure.py for the QtLocation module. [2adcdd927f7b] * sphinx/api_metadata.cfg: Updated the API configuration for the recently added new classes. [46d2397e4bac] * PyQt5.msp: Completed the initial scan of QtLocation. [01c5d7b2f5c1] 2015-06-30 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtWebEngineWidgets.versions, lib/configure.py: Updated QtWebEngineWidgets for Qt v5.5.0-rc. [9d90aaba2346] * PyQt5.msp: Updated QtGui for Qt v5.5.0-rc. [29e5da47d4eb] * PyQt5.msp: Added QT v5.5.0-rc support to QtOpenGL, QtPositioning, QtPrintSupport, QtQml, QtQuick, QtQuickWidgets, QtSensors, QtSerialPort and QtTest. [16c53510a247] 2015-06-25 Phil Thompson * PyQt5.msp: Completed the Qt v5.5 support for QtNetwork. [7df1482cd7cd] * PyQt5.msp, lib/SubclassCode/QtMultimedia.versions: Completed the Qt v5.5 support for QtMultimedia. [9bc46f0d7c99] * PyQt5.msp: Initial scan of the remaining existing modules. [c267700a94e9] 2015-06-24 Phil Thompson * PyQt5.msp: Fixed a missing reference in the QtGui module. [639da5a3046f] * lib/configure.py: Set QMAKE_RPATHDIR for Qt v5.5 and later on OS X. [4cb6a26802dd] * PyQt5.msp, lib/configure.py: Completed the updates for QtGui for Qt v5.5.0-rc. [40bfae01fe1a] 2015-06-23 Phil Thompson * PyQt5.msp: Completed the QtDBus and QtDesigner modules for Qt v5.5.0-rc. [9169626a8e94] * PyQt5.msp: Initial scan of QtDBus, QtDesigner and QtGui for Qt v5.5.0-rc. [bd6a2e668fd7] * PyQt5.msp: Completed the initial Qt v5.5 support for QtBluetooth and QtCore. [19bff136b8f4] * PyQt5.msp: Parsed the Qt v5.5.0-rc changes for Enginio, QtBluetooth and QtCore. [051e57a17d18] 2015-06-20 Phil Thompson * PyQt5.msp: Simplified the fix for the memory leak in attributeNames(). [d5b00e76067f] 2015-06-19 Phil Thompson * PyQt5.msp: QSGMaterialShader.attributeNames() no longer leaks memory. [be201b77bdb6] * QtMacExtras/QtMacExtrasmod.sip, QtMacExtras/qmactoolbar.sip, QtMacExtras/qmactoolbaritem.sip: Added QMacToolBar and QMacToolBarItem. [07cd3c5604f2] * PyQt5.msp: Added /ReleaseGIL/ to the QCoreApplication, QGuiApplication and QApplication dtors to allow for the internal mutex in OpenGL rendering. [64f2c9dbf061] 2015-06-18 Phil Thompson * PyQt5.msp: The ownership of the QSGNode returned by QQuickItem.updatePaintNode() is now handled correctly. [97ce4458a5c1] * PyQt5.msp: Added /ReleaseGIL/ for all QQuickWindow methods that seem to lock the internal mutex. [61740b8dd171] * PyQt5.msp: Fix the QSGMaterialShader super-type as it can be owned. [67adc9416118] * PyQt5.msp: The QQuickView dtor now releases the GIL in order to avoid a deadlock. [70f4a305607e] 2015-06-17 Phil Thompson * PyQt5.msp: Added the missing Qt.NoOpaqueDetection and Qt.NoFormatConversion values. [f800f67c3286] 2015-06-12 Phil Thompson * sphinx/deprecations.rst, sphinx/incompatibilities.rst, sphinx/index.rst: Documented the incompatible changes. [f6bfd44ba749] * PyQt5.msp, build.py, qpy/QtCore/qpycore_public_api.cpp: Removed the (deprecated) ability to convert a Latin-1 string to a QByteArray(). Unhandled Python exceptions now call qFatal(). [de30e9dedad8] * examples/graphicsview/dragdroprobot/dragdroprobot.qrc, examples/graphicsview/dragdroprobot/dragdroprobot_rc.py, examples/opengl/samplebuffers.py, examples/opengl/textures/textures.qrc, examples/opengl/textures/textures_rc.py, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, sphinx/static/default.css: Merged the v5.4 maintenance branch with the trunk. [b512611dd0ea] 2015-06-11 Phil Thompson * .hgtags: Added tag 5.4.2 for changeset 5a34feb6b31d [6f80aa2771d3] <5.4-maint> * NEWS: Released as v5.4.2. [5a34feb6b31d] [5.4.2] <5.4-maint> * installers/PyQt5-Qt5-gpl.nsi: Fixed a missing image plugin in the Windows installer. [29760ab3d5f9] <5.4-maint> * Makefile: Clean up any extra Mac crap. [dcbc92d15a8b] <5.4-maint> 2015-06-07 Phil Thompson * pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/qobjectcreator.py: Make sure all generedt imports are sorted and therefore repeatable. [9ad1a251d97b] <5.4-maint> 2015-06-05 Phil Thompson * NEWS, PyQt5.msp: Completed the support for Qt v5.4.2. [02c99f5affde] <5.4-maint> * PyQt5.msp: Scanned Qt v5.4.2. [7fbd795f8c5e] <5.4-maint> * installers/PyQt5-Qt5-gpl.nsi: Updated the Windows installer for Qt v5.4.2. [74c080b5bdb2] <5.4-maint> * PyQt5.msp: Added missing /Factory/ annotations from the create() and beginCreate() methods of QQmlComponent. [56be1a87fd2c] <5.4-maint> 2015-06-02 Phil Thompson * PyQt5.msp: Fixed the handling of the value returned by Python re- implementations of QSGMaterialShader.attributeNames(). [cb620297cbc8] <5.4-maint> 2015-05-23 Phil Thompson * lib/configure.py, sphinx/installation.rst: Added the --no-python-dbus option to configure.py. [df17d3eace7a] <5.4-maint> 2015-05-18 Phil Thompson * pyuic/uic/uiparser.py: Fixed another deprecation warning in pyuic. [6333c15a9a6b] <5.4-maint> * pyuic/uic/driver.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v3/load_plugin.py: Fixed all the deprecation warnings from pyuic. [e8f96fbc8cf0] <5.4-maint> 2015-05-08 Phil Thompson * Makefile: Fixed the path to SIP on OS/X. [39ecf0bc71e1] <5.4-maint> 2015-05-06 Phil Thompson * pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py: Fixed the handling of themed icons by uic.loadUi(). [506c268c8f43] <5.4-maint> 2015-04-24 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Handle properties that are objects that are defined in QML. [aebd6aab85d4] <5.4-maint> 2015-04-04 Phil Thompson * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Fixed pyuic's handling of default margins. [6a7e3e6175c8] <5.4-maint> * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Fixed pyuic's handling of the default spacing. [12193d5afbe1] <5.4-maint> 2015-04-03 Phil Thompson * pylupdate/main.cpp: pylupdate now saves locations as relative to the .ts file. [1757d2e318f6] <5.4-maint> 2015-04-01 Phil Thompson * PyQt5.msp: Added QWIDGETSIZE_MAX to QtWidgets. [b136fd7c485e] <5.4-maint> 2015-03-25 Phil Thompson * sphinx/static/classic.css, sphinx/static/default.css: Fixed the stylesheet. [d35996e57f02] <5.4-maint> 2015-03-16 Phil Thompson * PyQt5.msp: The GIL is now released for all QImage ctors and methods that might block. [3fd70eec66b9] <5.4-maint> * PyQt5.msp: Removed the internal QGraphicsSceneEvent.setWidget(). [622e5b5ebcfc] <5.4-maint> 2015-03-11 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Added the OpenGL v2.1 backend to the Windows installer. [ca1e4c121c78] <5.4-maint> * sphinx/conf.py: Updated for sphinx v1.3. [1c1cd1eac7ce] <5.4-maint> * qpy/QtCore/qsysinfo.sip: Added Yosemite and iOS v8.0 to QSysInfo. [01d4d1af5961] <5.4-maint> * pyuic/uic/uiparser.py: pyuic now handles empty zorder elements. [a0dcd07b7e72] <5.4-maint> * lib/configure.py: Added nostrup to the generated .pro file. [d6445df281a6] <5.4-maint> 2015-03-01 Phil Thompson * pyuic/uic/uiparser.py: pyuic will now ignore spacer items when setting the z-order. [28704a096a3a] <5.4-maint> 2015-02-26 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Installer fix for Qt v5.4.1. [0b21a7fa6750] <5.4-maint> * .hgtags: Added tag 5.4.1 for changeset 0a5d7730c142 [e9b5f2d5bd48] <5.4-maint> * NEWS: Released as v5.4.1. [0a5d7730c142] [5.4.1] <5.4-maint> 2015-02-25 Phil Thompson * PyQt5.msp: Completed the changes for Qt v5.4.1. [368c0d736e49] <5.4-maint> * PyQt5.msp: Scanned Qt v5.4.1. [2045a358e1e4] <5.4-maint> * installers/PyQt5-Qt5-gpl.nsi: Updated the installer for Qt v5.4.1. [22974f5a4007] <5.4-maint> * NEWS: Updated the NEWS file. [fd53bf1f9638] <5.4-maint> 2015-02-24 Phil Thompson * lib/LicenseFAQ.txt: Slight clarification in the license FAQ. [a4e16da29a86] <5.4-maint> * examples/opengl/grabber.py: grabber.py now uses QtOpenGLWidget and no longer uses PyOpenGL. [cf42f047f5af] <5.4-maint> * examples/opengl/samplebuffers.py, examples/qtdemo/examples.xml, examples/qtdemo/mainwindow.py, examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo.py, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: qtdemo.py no longer uses pyrcc. Removed the samplebuffers.py example. [9dd44e33dbf2] <5.4-maint> 2015-02-15 Phil Thompson * examples/opengl/overpainting.py: overpainting.py no longer uses PyOpenGL. [0095ac30f3f1] <5.4-maint> * examples/opengl/hellogl.py: hellogl.py no longer uses PyOpenGL. [2466595ffaa8] <5.4-maint> * examples/opengl/textures/textures.py: textures.py no longer uses PyOpenGL. [cea54a81d734] <5.4-maint> * examples/opengl/textures/textures.py, examples/opengl/textures/textures.qrc, examples/opengl/textures/textures_rc.py: The textures.py example now uses QOpenGLWidget and does not use pyrcc. [0038f626c540] <5.4-maint> * examples/opengl/overpainting.py: overpainting.py now uses QOpenGLWidget. [adb738a8823d] <5.4-maint> * PyQt5.msp: Added the _QOpenGLFunctions_2_1 module. [831d9420cdb9] <5.4-maint> * PyQt5.msp: Initial scan of the _QOpenGLFunctions_2_1 module. [87965430e499] <5.4-maint> * examples/opengl/2dpainting.py: Updated 2dpainting.py to match Qt v5.4. [2444297431e1] <5.4-maint> * examples/opengl/2dpainting.py, examples/opengl/hellogl.py: 2dpainting.py and hellogl.py now use QOpenGLWidget. [7570b3ee5137] <5.4-maint> 2015-02-14 Phil Thompson * Makefile: Default to sip4. [56103de21ca0] <5.4-maint> * Makefile, lib/configure.py: Installing into a virtual env should now work. [d18494d4f984] <5.4-maint> 2015-02-12 Phil Thompson * examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/dragdroprobot/dragdroprobot.qrc, examples/graphicsview/dragdroprobot/dragdroprobot_rc.py: Fixed the dragdroprobot.py example. [29d42f347e05] <5.4-maint> * examples/widgets/calendarwidget.py: Fixed the calendarwidget.py example so it doesn't use obsolete methods. [5bfdad59eee6] <5.4-maint> 2015-02-08 Phil Thompson * Makefile, lib/configure.py: Improved the implementation of the executable search. [c8a254ad3b53] <5.4-maint> * Makefile: Switch the internal build system to sip5. [8553ce1a8cff] <5.4-maint> * lib/configure.py: Use sip5 in preference to sip4. [e104f5f49120] <5.4-maint> 2015-02-06 Phil Thompson * PyQt5.msp: QEvent.None is now QEvent.None_. [21c5779b9a9a] <5.4-maint> * PyQt5.msp: Added some missing QEvent.Type values. [09db852ff2ee] <5.4-maint> 2015-02-05 Phil Thompson * PyQt5.msp: Fixed all the pseudo-ctors that take a QVariant argument. [1507018b0814] <5.4-maint> 2015-02-03 Phil Thompson * PyQt5.msp: Enabled the simplest calls in OpenGL 4.0-core. [bcb234196361] <5.4-maint> 2015-02-02 Phil Thompson * PyQt5.msp: Updated OpenGL 4.1Core from 2.0. [2197f1d1f00b] <5.4-maint> * PyQt5.msp: Get the name right for the _QOpenGLFunctions_4_1_Core module. [8ce7c02e45da] <5.4-maint> * PyQt5.msp: Added the stub of the _QOpenGLFunctions_4_1_core module. [cc4b33b46918] <5.4-maint> 2015-02-01 Phil Thompson * lib/configure.py: configure.py will now ignore old moc generated C++ files. [b9f4e00ddb92] <5.4-maint> 2015-01-31 Phil Thompson * lib/configure.py, sphinx/installation.rst: Added the --license-dir command line option to configure.py. [bc8255a4dd33] <5.4-maint> 2015-01-30 Phil Thompson * lib/configure.py: configure.py will now handle a blank licensee. [0db0131e1ac0] <5.4-maint> * lib/configure.py: Fixed the handling of the --qml-plugindir option to configure.py. [c4f830debfc8] <5.4-maint> * qpy/QtCore/qpycore_public_api.cpp: Converting argv now uses the current locale codec rather than Latin-1. [73c52f636ad1] <5.4-maint> * pyuic/uic/uiparser.py: pyuic now supports the z-order of widgets. [f9b37fb09d6e] <5.4-maint> * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Improved the fix for handling frame shadows of lines. [9904222abd9b] <5.4-maint> 2015-01-29 Phil Thompson * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Fixed pyuic's handling of the frame shadow of lines. [0b20cc5fda6f] <5.4-maint> * pyrcc/rcc.cpp, pyuic/uic/__init__.py: Removed the timestamp from the header generated by pyrcc. [a56bb17ad8ce] <5.4-maint> * pyuic/uic/__init__.py: Removed the timestamp from the header generated by pyuic. [83ff904a1929] <5.4-maint> 2015-01-23 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed a regression converting a QString with a surrogate pair as the last character. [55f521ae431b] <5.4-maint> 2015-01-14 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Fixed the previous fix. [0d0762e7b5ef] <5.4-maint> 2015-01-12 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Ensure any exception is cleared after introspecting QObject class attributes. [afaaea82b022] <5.4-maint> 2015-01-03 Phil Thompson * lib/configure.py: The QtWebChannel and QtWebSockets modules don't need a GUI. [154b7ed4e071] <5.4-maint> * PyQt5.msp: The loadUrl() methods of QQmlComponent now release the GIL. [c7a9f34318ad] <5.4-maint> 2015-01-02 Phil Thompson * lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, sphinx/conf.py: Updated the copyright notices. [83f2a9f8495b] <5.4-maint> * PyQt5.msp, lib/SubclassCode/QtWidgets.versions, lib/configure.py, qpy/QtWidgets/qmaccocoaviewcontainer.sip, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QMacCocoaViewContainer class. [4e2f742ce34d] <5.4-maint> 2014-12-25 Phil Thompson * .hgtags: Added tag 5.4 for changeset 51e7270c0aad [5bf7aad36927] * NEWS: Released as v5.4. [51e7270c0aad] [5.4] 2014-12-24 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi, installers/qt5-config.bat: Enable ICU support for the WIndows build of Qt. Updated the installer now that the default OpenGL support is desktop. [bcbeae513872] 2014-12-23 Phil Thompson * installers/pyqt5-check.py, installers/qt5-config.bat: Updated the check script to handle the additional image formats in Qt v5.4.0. Updated the Qt5 configure script to enable dynamic OpenGL selection. [8d58795da4b1] * installers/PyQt5-Qt5-gpl.nsi: Updated the installer for Qt v5.4.0. [0d2998cc5275] 2014-12-22 Phil Thompson * qmlscene/pluginloader.cpp: Fixed a bug in the qmlscene plugin when building against Python v2. [73b7aaf3c7cc] * sphinx/introduction.rst: Updated the docs regarding the commercial license. [c8a533acf511] * lib/LICENSE.commercial.short: Fixed the short commercial license to match the full one. [1a7134faa09a] * lib/LicenseFAQ.txt: Tweaks to the license FAQ. [75f024dc27b1] 2014-12-21 Phil Thompson * lib/LICENSE.commercial: Updated the commercial license to v4.0. [6f91254b3779] * lib/LicenseFAQ.txt: Added the license FAQ. [970d31cd4a5e] 2014-12-18 Phil Thompson * lib/SubclassCode/mksccode.py: The sub-class convertor code generator now handles hidden C++ namespaces. [f951bd1e9437] 2014-12-16 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed the QString to Unicode conversion to not assume that a QString has a trailing null QChar. [7c319bbde1bf] 2014-12-14 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Fixed a bug in the relaying of signals defined in Python to QML. [850ad2e2dd38] 2014-12-12 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Removed a forgotton debug statement. [10c73f88bfd5] * PyQt5.msp: Updated for Qt v5.4.0. [dde3d6b31be9] * PyQt5.msp: Scanned Qt v5.4.0. [77ec0fc59d92] 2014-12-07 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Fixed problems with creating item models in Python and accessing from QML. [646b6aafd24f] 2014-12-05 Phil Thompson * sphinx/pyqt4_differences.rst: Further doc updates regarding QtXml. [fd14d57dd224] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi: Completed the QtXml module. [29dcc0a9556a] * sphinx/api_metadata.cfg, sphinx/introduction.rst: Updated the docs for the QtXml module. [3170490e2c54] * lib/configure.py: Updated configure.py for QtXml. [907b21fd87f3] * PyQt5.msp: Added the initial scan of the QtXml module. [b0ad7a93f4f3] 2014-12-01 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Final fixes for QWebEnginePage. Added the QtWebChannel and QtWebEngineWidgets classes to the docs. [dddb0c57ea0a] * PyQt5.msp: Scanned QWebEngineCertificateError now that we know it is part of the API. [1afa4ca635d0] 2014-11-30 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi, sphinx/introduction.rst: Updated the docs and installer in relation to QtWebEngineWidgets and Windows. [c84926e7bb99] * PyQt5.msp: Completed the implementation of QWebEnginePage. [f23dc18cbc3d] * PyQt5.msp, lib/configure.py: Completed the implementation of QWebEngineView. [8a7d384eaf6d] * PyQt5.msp, qpy/QtCore/qpycore_qhash.sip: Completed the QtWebChannel module. [f184466d65d2] 2014-11-29 Phil Thompson * PyQt5.msp, lib/configure.py: Implemented the majority of the QtWebChannel and QtWebEngineWidgets modules. [c7a7ad2384ab] * PyQt5.msp: Scanned the QtWebChannel and QtWebEngineWidgets modules. [3a6e2f146f7b] * sphinx/introduction.rst: Updated the docs for QtWebChannel and QtWebEngineWidgets. [01d762d375dd] * pyuic/uic/Compiler/qtproxies.py, pyuic/uic/widget- plugins/qtquickwidgets.py: Added support for QQuickWidget and QOpenGLWidget to pyuic5. [78b75d36ff67] * installers/PyQt5-Qt5-gpl.nsi, lib/configure.py: Updated configure.py and the installer for QtWebChannel and QtWebEngineWidgets. [1f0847cc6406] * PyQt5.msp, lib/SubclassCode/QtWidgets.versions, sphinx/api_metadata.cfg: Updated QtWidgets for Qt v5.4.0-rc. [c42a45936b60] * PyQt5.msp: Updated QtSql, QtWebKit and QtWebSockets for Qy v5.4.0-rc. [0db3c6fc10e9] * PyQt5.msp, lib/SubclassCode/QtSensors.versions, sphinx/api_metadata.cfg: Updated QtSensors for Qt v5.4.0-rc. [89bd5ee95fc7] * PyQt5.msp, lib/SubclassCode/QtQuick.versions, sphinx/api_metadata.cfg: Updated QtQml, QtQuick and QtQuickWidgets for Qt v5.4.0-rc. [a3465156fcca] * PyQt5.msp, qpy/QtPrintSupport/qpyprintsupport_qlist.sip: Updated QtNetwork and QtPrintSupport for Qt v5.4.0-rc. [e2ddf6704ca0] * PyQt5.msp, sphinx/api_metadata.cfg: Completed QtMultimedia (mostly by ignoring the difficult bits because they are very unlikely to ever be needed). [aaf808e972a1] * PyQt5.msp, sphinx/api_metadata.cfg: Fixed the transfer annotations on one of the QCompleter ctors. Updated the easy parts of QtMultimedia for Qt v5.5.0-rc. [a5a2787aac3c] 2014-11-28 Phil Thompson * sphinx/api_metadata.cfg: Updated the docs meta-data for the new classes added so far. [4b9612f9fd6e] * PyQt5.msp, lib/SubclassCode/QtGui.versions: Updated QtGui and QtHelp for Qt v5.4.0-rc. [0040ab36e770] * PyQt5.msp: Updated QtCore for Qt v5.4.0-rc. [41f942bc3e5b] * PyQt5.msp, lib/SubclassCode/QtBluetooth.versions: Updated the Enginio and QtBluetooth modules for Qt v5.4.0-rc. [2cbf21f8c128] * QtX11Extras/qx11info_x11.sip: Updated QtX11Extras for Qt v5.4.0-rc. [6d979ec944e4] * QtWinExtras/qwinthumbnailtoolbar.sip: Updated QtWinExtras for Qt v5.4.0-rc. [5cc43b61d591] * installers/PyQt5-Qt5-gpl.nsi: Updated the Qt version number in the installer. [cd16e111cb7c] * PyQt5.msp: Initial scan of Qt v5.4.0-rc for existing modules. [7fa71f7ee0df] 2014-11-27 Phil Thompson * PyQt5.msp: Fixed the return values of the addWidget() and insertWidget() methods of QStackedLayout. [d3f5d1f98b7d] 2014-11-25 Phil Thompson * sphinx/gotchas.rst: Updated the description of conversions to QByteArray from latin-1 strings. [4e4b64fa2936] 2014-11-20 Phil Thompson * sphinx/qml.rst: Updated the docs to describe how to run the qmlscene plugin example. [360981336f2f] 2014-11-16 Phil Thompson * qpy/QtQml/qmlregistertype.sip: Added the missing non-template overloads of qmlRegisterType() and qmlRegisterSingletonType(). [15b37c22d541] * build.py: A source package now contains a full ChangeLog. [51a45084f486] 2014-10-24 Phil Thompson * PyQt5.msp: QObject.findChild() and QObject.findChildren() now handle QML proxy objects. [837edec02d98] * lib/configure.py: Fixed a regression in configure.py related to the DBus Python module. [c45eba355f57] 2014-10-23 Phil Thompson * PyQt5.msp: Reduced the delay in the input hook on Windows. [6e9a8b1ba494] 2014-10-22 Phil Thompson * lib/configure.py: Always check for the Python dbus module. [661bf1f5c6e0] * lib/configure.py: Run qmake once, recursively. [3729fd92a74b] * lib/configure.py: Renamed the .pro files for pyrcc5 and pylupdate5. [2c328ebcc4a3] * designer/designer.pro-in, designer/python.pro-in, lib/configure.py, qmlscene/python.pro-in, qmlscene/qmlscene.pro-in: Renamed the .pro files for the designer and qmlscene plugins. [c6ba2b645332] 2014-10-10 Phil Thompson * lib/configure.py: Handle OS/X with --enable-shared as well as --enable-framework. [f2a6301eac36] 2014-10-04 Phil Thompson * sphinx/deprecations.rst: Updated the docs regarding unhandled Python exceptions. [027db5a97624] * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_virtual_error_handler.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQuick/qpyquick_api.h, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp, sphinx/extension_api.rst: Added pyqt5_err_print() to the public API (as a replacement for PyErr_Print() that implements the new policy for unhandled exceptions). [05a22fdd6ce2] * PyQt5.msp, qpy/QtCore/qpycore_virtual_error_handler.sip: Implemented the new behaviour for unhandled Python exceptions in virtual reimplementations. [bd744ebca21d] 2014-10-03 Phil Thompson * PyQt5.msp, build.py, sphinx/deprecations.rst, sphinx/incompatibilities.rst, sphinx/index.rst: The automatic conversion of a Latin-1 encoded string to QByteArray is now deprecated. [ce37c9511e58] 2014-10-02 Phil Thompson * examples/mainwindows/application/application.qrc, examples/mainwindows/application/application_rc.py, qpy/QtCore/qpycore_qstringlist.sip: Merged the 5.3-maint branch into the trunk. [db7746b0db88] 2014-10-01 Phil Thompson * PyQt5.msp, installers/BuildGPL.txt, lib/configure.py: Fixed QNetworkAccessManager.createRequest() so that it aborts rather than crashes when None is returned of there is an unhandled exception. [028a89e8d6a2] <5.3-maint> 2014-09-23 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Updated the Qt version number in the installer. [5cef3154ebc0] <5.3-maint> 2014-09-22 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Updated the version of ICU included in the installers. [b50fd07dcd1a] <5.3-maint> * installers/PyQt5-Qt5-gpl.nsi: The qt.conf files now use relative pathnames. [345f75972cd2] <5.3-maint> * PyQt5.msp: Updated the project file for Qt v5.3.2. [1b51adc53538] <5.3-maint> * lib/configure.py: Fixed building against Qt v5.3.2. [3d76ad16a090] <5.3-maint> 2014-09-16 Phil Thompson * lib/configure.py: Fixed a configure.py regression when introspecting for a static Python library. [35dae695e5fe] <5.3-maint> 2014-09-13 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Allow an invalid QVariant to be converted to None if a QMetaType::Void is expected because QML seems to expect it. [9b8a2870307b] <5.3-maint> 2014-09-12 Phil Thompson * .hgtags: Added tag 5.3.2 for changeset b0872e23eef2 [09479720708a] <5.3-maint> * NEWS: Released as v5.3.2. [b0872e23eef2] [5.3.2] <5.3-maint> * installers/PyQt5-Qt5-gpl.nsi: Add the Enginio DLL to the installer. [9913df0c09a7] <5.3-maint> 2014-09-10 Phil Thompson * lib/configure.py: Improved a configure.py error message. [55d2db4d2016] <5.3-maint> 2014-09-09 Phil Thompson * designer/pluginloader.cpp, designer/python.pro-in, lib/configure.py: Reverted the behaviour of the designer plugin so that it explicitly loads the Python interpreter library. [520c69cecd7f] <5.3-maint> 2014-09-07 Phil Thompson * sphinx/incompatibilities.rst: Documented the different handling of signals with default arguments as a potential incompatibility in PyQt v5.3. [21c492233b4f] <5.3-maint> 2014-09-04 Phil Thompson * NEWS: Updated the NEWS file. [3e67087edaa6] <5.3-maint> 2014-09-03 Phil Thompson * pyuic/uic/uiparser.py: Fixed a pyuic bug handling the alignment of box layouts. [8ceffd80eb09] <5.3-maint> 2014-09-02 Phil Thompson * .hgignore, PyQt5.msp, installers/BuildGPL.txt, lib/configure.py: Fixed the handling of Python exceptions in QWebPage.extension(). [6b688d2514d2] <5.3-maint> 2014-08-25 Phil Thompson * installers/BuildGPL.txt, lib/configure.py: Avoid a qmake warning by embedding the SIP flags earlier. Fix the license check when using a configuration file. [2764886c6cc6] <5.3-maint> 2014-08-14 Phil Thompson * sphinx/signals_slots.rst: Tightened up the docs regarding pyqtSignal(). [920e22cba0c2] <5.3-maint> * installers/PyQt5-Qt5-gpl.nsi: Updated the installer to include qmake and mkspecs which are needed by lrelease when it is given a .pro file. [946843b4db4e] <5.3-maint> 2014-08-13 Phil Thompson * PyQt5.msp: Added the (no longer preliminary) QWidget.windowHandle(). [eec511d5634f] <5.3-maint> 2014-07-31 Phil Thompson * Makefile, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtQml/qpyqml_qjsvalue.cpp: Fixed a couple of Python v2 build regressions. [dcc21846e00f] <5.3-maint> * Makefile, PyQt5.msp: Fixed QAbstractPrintDialog.PrintDialogOption.None for Python v3. [6cfab73403c8] <5.3-maint> 2014-07-28 Phil Thompson * NEWS, PyQt5.msp, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the implementation of the Enginio module. [4a9d7e1d5662] <5.3-maint> 2014-07-27 Phil Thompson * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py: Implemented the rest of the Enginio module except for EnginioModel. [6f28c7ec4a3a] <5.3-maint> * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg: Added the Enginio module to the build system. Implemented the Enginio.Enginio namespace. [bf79ca211de1] <5.3-maint> * PyQt5.msp: Initial scan of the Enginio module. [b90c5231f98b] <5.3-maint> * build.py, sphinx/api_details/qjsonarray.rst, sphinx/api_details/qjsonobject.rst, sphinx/api_details/qjsonvalue.rst: Added support for including additional API specific documentation. [7c4bc36ed40a] <5.3-maint> * PyQt5.msp, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtCore/qpycore_qstringlist.sip, qpy/QtCore/qstringlist.sip, qpy/QtQml/qpyqml_qjsvalue.cpp, sphinx/api_metadata.cfg: Implemented the QJsonDocument, QJsonParseError and QJsonValue classes. Implemented QJsonArray and QJsonObject as mapped types. Remove redundant QJSValue ctors. [abc3d82e4430] <5.3-maint> * PyQt5.msp: Initial scan of the JSON classes. [e454d7715289] <5.3-maint> 2014-07-22 Phil Thompson * installers/BuildGPL.txt: Updated the internal docs for installing MSVC2010. [dae53e32f8d7] <5.3-maint> 2014-07-21 Phil Thompson * PyQt5.msp: Added the missing setUnifiedTitleAndToolBarOnMac() and unifiedTitleAndToolBarOnMac() to QMainWindow. [1cfe8cdfc5a8] <5.3-maint> * qpy/QtCore/qpycore_enums_flags.cpp: Fixed a benign exception while parsing Q_ENUMS and Q_FLAGS. [b8e6f34be940] <5.3-maint> 2014-07-20 Phil Thompson * PyQt5.msp: Fixed ownership changes when calling QQmlEngine.setObjectOwnership(). [77bc10e785e2] <5.3-maint> * sphinx/pyqt4_differences.rst: Clarified the advice about setdestroyonexit(). [126152cc8091] <5.3-maint> * qpy/QtQml/qpyqmlobject.cpp: Fixed an attempt to decrement a reference count with the GIL in the QML proxy. [722a2bd8deb3] <5.3-maint> * PyQt5.msp: Added a missing /TransferThis/ to the QItemSelectionModel single arg ctor. [c0c1d57cd8a8] <5.3-maint> * build.py, examples/mainwindows/application/application.py, examples/mainwindows/application/application.qrc, examples/mainwindows/application/application_rc.py: Updated the application.py example so that it doesn't use pyrcc and will work as a deployed application without changes. [b4b75e5b26f5] <5.3-maint> 2014-07-12 Phil Thompson * pylupdate/fetchtr.cpp: Fixed the pylupdate parsing of translate(). [7687a1e7a9e3] <5.3-maint> * PyQt5.msp: Make sure widgets always have an owner even if the layout isn't in a widget. [51060169e5be] <5.3-maint> * PyQt5.msp: Ensure that the ownership of widgets in a layout are always correct. [09687398dc66] <5.3-maint> 2014-07-10 Phil Thompson * designer/python.pro-in, lib/configure.py, qmlscene/python.pro-in: Work around QTBUG-39300. [0b94a0c4f4d2] <5.3-maint> 2014-07-09 Phil Thompson * PyQt5.msp: Fixed QWebSocket when SSL support is disabled. [bae1d0bfb5a4] <5.3-maint> 2014-07-04 Phil Thompson * .hgtags: Added tag 5.3.1 for changeset 04f59a3d5419 [afc3fc029eef] <5.3-maint> * NEWS: Released as v5.3.1. [04f59a3d5419] [5.3.1] <5.3-maint> 2014-07-03 Phil Thompson * sphinx/deploy_commercial.rst, sphinx/installation.rst: Updated the docs to refer to pyqtdeploy rather than VendorID. [144f912ad1eb] <5.3-maint> 2014-07-01 Phil Thompson * installers/BuildGPL.txt: Updates to the installer docs. [796d5e8ebe63] <5.3-maint> 2014-06-26 Phil Thompson * Makefile, PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi: Updated for Qt v5.3.1. [43eca77eb086] <5.3-maint> * PyQt5.msp: Scanned Qt v5.3.1. [ed0fcce6113e] <5.3-maint> * PyQt5.msp: Added a missing /ReleaseGIL/ to QNetworkAccessManager.createRequest(). [a09288c24355] <5.3-maint> 2014-06-25 Phil Thompson * qpy/QtGui/qpyopengl_value_array.cpp: Fixed for building against Python v2.6.2 and earlier. [b10aab47cc69] <5.3-maint> 2014-06-17 Phil Thompson * pyuic/uic/uiparser.py: Fixed a pyuic regression in the handling of implicit QTableWidget dimensions. [65acf1dcaa30] <5.3-maint> 2014-06-16 Phil Thompson * Makefile, lib/configure.py, sphinx/installation.rst: Removed the --consolidate argument to configure.py as it never worked and pyqtdeploy is the way forward. [8110e649a041] <5.3-maint> 2014-06-14 Phil Thompson * lib/configure.py: Only pass -spec to qmake if it is really necessary. [770fc634f362] <5.3-maint> 2014-06-03 Phil Thompson * lib/configure.py: Fixes for Python v2.6. [0e31a2da0fa2] <5.3-maint> 2014-06-02 Phil Thompson * lib/configure.py: Fixed the handling of the default qmake spec. Fixed the linker version scripts generated for Linux. [6ec15bc5d1bd] <5.3-maint> 2014-06-01 Phil Thompson * pylupdate/fetchtr.cpp, pylupdate/main.cpp: Added the -tr-function and -translate-function command line options to pylupdate5. [6cb476d4cc9a] <5.3-maint> 2014-05-30 Phil Thompson * qpy/QtCore/qpycore_qvariant_value.cpp: Ported the QSettings.value() fixes from PyQt4. [4466a72038cc] <5.3-maint> 2014-05-29 Phil Thompson * Makefile, installers/PyQt5-Qt5-gpl.nsi: Fixed the link to the Qt documentation in the installers. Updated the cross-compile target version. [3d4d0f24d41b] 2014-05-26 Phil Thompson * .hgtags: Added tag 5.3 for changeset 1c94cbc7c33f [50cfe16807be] * NEWS: Released as v5.3. [1c94cbc7c33f] [5.3] * PyQt5.msp: Backed out the changes related to the parenting of dialogs. It introduces potential incompatibilities for no real gain. [187d130762ae] 2014-05-24 Phil Thompson * PyQt5.msp: Removed (rather than ignored) the missing QDnsLookup ctor so that we will consider it again with Qt v5.3.1. [db2986a5beb0] 2014-05-23 Phil Thompson * PyQt5.msp: Updated for Qt v5.3.0. Ignore the missing QDnsLookup ctor. [bce757fd6b87] 2014-05-19 Phil Thompson * Makefile: Added the Android build target. [f6e83c05f2a1] 2014-05-16 Phil Thompson * lib/configure.py: Make sure that the -B flag isn't included in PYQT_CONFIGURATION. [e43b3f33502e] * Makefile: Install the .sip files into sysroot when cross-compiling. [5d636dfea5d7] * lib/configure.py, sphinx/installation.rst: Renamed qt_disabled_features to pyqt_disabled_features. [64489c7ec72b] * lib/configure.py: Make use of SIP v4.16's handling of timelines to avoid having to work out the exact version tag to use. [be0afd3dfe65] 2014-05-15 Phil Thompson * PyQt5.msp: Added some missing PyQt_Printer features. Added the PyQt_NoBootstrap feature for iOS. [22e30a316ffc] * Makefile: Fix the installation of __init__.py and uic for the iOS simulator build. [6707f8fb7fcd] * Makefile: Fixed the installation of the Qt module for the iOS simulator build. [d4cbad9ba118] * PyQt5.msp: Fixed another desktop OpenGL dependency. [a96eb576b700] * Makefile: Refactored the top level Makefile and added support for iOS builds. [0c7fb2aa9b47] 2014-05-14 Phil Thompson * lib/configure.py: Don't generate the QScintilla .api file if it isn't going to be installed. [3fdd63dd47f1] * lib/configure.py, sphinx/installation.rst: Adjustments to the license handling because there is no way to discover the licensee when cross-compiling. [559814273fde] * qpy/QtGui/opengl_types.sip, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Fixes for building for an OpenGL ES system. [b90c3d5ccd5d] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the implementation of the QWebSockets module. [b1dfa886d9a7] * PyQt5.msp: Disabled the new (but missing) QDnsLookup ctor. [fb490165ca64] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the QtQuickWidgets module. [a251131319a4] * PyQt5.msp: Added the scanned stubs of the QtQuickWidgets and QtWebSockets modules. [dc836db4f607] 2014-05-13 Phil Thompson * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg: Updated all existing non-platform-specific modules for Qt v5.3.0-rc1. [8ec4f9396cd6] * PyQt5.msp: Initial scan of Qt v5.3.0-rc1. [a0143121db58] 2014-05-12 Phil Thompson * PyQt5.msp: Fixes for building against Qt v5.3.0-rc1. [90a1ae3f0434] * lib/configure.py: Fixed the default configure.py help text related to prot-is-public. [6ec1bbe11d50] 2014-05-11 Phil Thompson * Makefile, lib/configure.py, sphinx/installation.rst: Added the --no-tools option to configure.py. [3afc3d6a0b8c] * Makefile, build.py, configurations/rpi_py3.cfg, lib/configure.py, sphinx/installation.rst: Reimplemented the support for configuration files so that it is portable to Python v2. Removed the configurations directory. --sysroot now replaces the sys.prefix part of a directory name. [2bc27b9bbc8a] 2014-05-10 Phil Thompson * lib/configure.py, sphinx/conf.py, sphinx/installation.rst: Documented the --target-py-version and --sysroot options. A couple of minor configure.py bug fixes. [629d4c624ee3] * configurations/rpi_py3.cfg, lib/configure.py: Added the --target-py-version and --sysroot options to configure.py. Configuration files now have the Python version and sysroot pre- populated from the command line. sysroot is now automatically prepended to the relevent introspected directories. Updated the RPi configuration file appropriately. [a65adbbac0f5] 2014-05-06 Phil Thompson * lib/configure.py, pyuic/uic/widget-plugins/qtdeclarative.py, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_sip.h, qpy/QtDBus/qpydbus.pro, qpy/QtDesigner/qpydesigner.pro, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtQml/qpyqml.pro, qpy/QtQuick/qpyquick.pro: Merged the 5.2-maint branch into the trunk. [c00d9ae88bd0] * configurations/rpi_py3.cfg, lib/configure.py: A configuration file is now parsed with configparser with ExtraInterpolation. A configuration file must define a section covering the version of Qt being used. Updated the Raspberry Pi configuration file to meet the revised requirements. [38fca2a9702d] 2014-04-30 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Qt::UniqueConnection is a flag. [3b978cee5968] <5.2-maint> 2014-04-29 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Implement support for Qt::UniqueConnection when connecting to Python slots. [33b67d803637] <5.2-maint> 2014-04-28 Phil Thompson * qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp: Fixed a bug detecting when the Python receiver object has been garbage collected. Delete slot proxies if the slot receiver no longer exists. [3a4d245409f0] <5.2-maint> * PyQt5.msp: Removed the /TransferThis/ from the parent argument of the ctor of all dialog classes. This is a better approach to the special ownership behaviour of dialogs as that taken by PyQt4. QWidget.setParent() now handles dialogs properly. [4535ef2b7372] <5.2-maint> 2014-04-23 Phil Thompson * PyQt5.msp: Handle top-level widgets in the QApplication dtor as PyQt4 does because sip.setdestoyonexit() can't help if the GUI isn't held in the main block. [f6521c24d6b1] <5.2-maint> 2014-04-22 Phil Thompson * PyQt5.msp: Added a missing /ReleaseGIL/ to the QSqlQuery ctor that can execute a query. [d11e914518cc] <5.2-maint> * sphinx/incompatibilities.rst, sphinx/index.rst, sphinx/signals_slots.rst: Documented the no_receiver_check issues. [3acf8677f5aa] <5.2-maint> 2014-04-21 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h: Implemented the 'no_receiver_check' argument to connect(). By default checks for receiver C++ instances are enabled. [c29a6eac4aff] <5.2-maint> 2014-04-15 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed a bug in the conversion of QStrings with surrogate pairs. [16a9c19d08cf] <5.2-maint> * Makefile, lib/configure.py: Make sure the SIP include directory is searched before the Python include directory if they are different. [50212db2acde] <5.2-maint> 2014-04-06 Phil Thompson * PyQt5.msp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp: Fixed the remaining symbol name clashes with static builds. [e1ef73ca0fbd] <5.2-maint> * pyuic/uic/uiparser.py: Fixed pyuic handling of non-exclusive button groups. [a46790060328] <5.2-maint> 2014-03-31 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Fixed a regression with Python v2 where a classic class is used as a mixin. [5fc3bba566c7] <5.2-maint> 2014-03-30 Phil Thompson * lib/configure.py: Fixed the display of the static/shared status by configure.py. [39a2d2d3925c] <5.2-maint> 2014-03-29 Phil Thompson * pyuic/uic/uiparser.py: Fixed pyuic's handling of connecting to QButtonGroups. [6b06e4c8a5d2] <5.2-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Improved the text of an exception now that signals can be defined in mixins. [be0c8c6b433b] <5.2-maint> 2014-03-24 Phil Thompson * pyuic/uic/widget-plugins/qtdeclarative.py: Removed the unsupported pyuic widget plgin for QDeclarativeView. [d8a05545da5d] <5.2-maint> 2014-03-21 Phil Thompson * PyQt5.msp: Added a missing /KeepReference/ to QThreadPool::globalInstance(). Added /ReleaseGIL/ to start() and tryStart() for documentation reasons. Removed /NewThread/ from QRunnable::run(). [143e8bb4c4b9] <5.2-maint> * PyQt5.msp, lib/configure.py, sphinx/deploy_commercial.rst, sphinx/installation.rst: VendorID is Python v2 specific. [1bf09b117cb2] <5.2-maint> 2014-03-20 Phil Thompson * Makefile, lib/OpenGL/gen_opengl_constants.py, lib/configure.py, qpy/QtGui/qpyopengl_add_constants.cpp: Fixed the generated OpenGL constants to be C++11 compatible. [5db729002562] <5.2-maint> 2014-03-18 Phil Thompson * Makefile, PyQt5.msp: Fixed a symbol clash when built as static modules. [b582b195ed9f] <5.2-maint> 2014-03-14 Phil Thompson * .hgtags: Added tag 5.2.1 for changeset 8709a1871929 [e86b25532c02] <5.2-maint> * NEWS: Released as v5.2.1. [8709a1871929] [5.2.1] <5.2-maint> 2014-03-13 Phil Thompson * qpy/QtCore/qpycore_qobject_getattr.cpp: Fixed a regression parsing introspected signal signatures. [b12f051bec16] <5.2-maint> * qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.h: Fixes for building against the latest XCode. [67b67beb6e4b] <5.2-maint> 2014-03-10 Phil Thompson * PyQt5.msp, lib/configure.py: Fixed Windows build problems. [f63c627bece7] <5.2-maint> 2014-03-09 Phil Thompson * lib/LICENSE.commercial: Updates to the commercial license. [3a484144e4ff] <5.2-maint> 2014-03-05 Phil Thompson * NEWS: Updated the NEWS file. [f6528098012c] <5.2-maint> 2014-03-04 Phil Thompson * qpy/QtCore/qpycore_types.cpp, sphinx/pyqt4_differences.rst, sphinx/signals_slots.rst: Properties, signals and slots can now be defined in mixins (ie. non- QObject) classes. [3942032af2de] <5.2-maint> * pylupdate/fetchtr.cpp: Backed out ab343b486918 (pylupdate support for nested classes) because it breaks a common use case. [6cf443fbd854] <5.2-maint> * pylupdate/fetchtr.cpp, pylupdate/main.cpp, pylupdate/merge.cpp, pylupdate/metatranslator.cpp, pylupdate/metatranslator.h, pylupdate/numberh.cpp, pylupdate/proparser.cpp, pylupdate/proparser.h, pylupdate/sametexth.cpp, pylupdate/simtexth.cpp, pylupdate/simtexth.h, pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h: Updated the pylupdate5 and pyrcc5 copyright and license notices. [379869955e02] <5.2-maint> 2014-03-03 Phil Thompson * PyQt5.msp: The first stride argument of the ArgumentSet ctor is now the optional second argument. The stride is computed if not explicitly specified. [19a0243f60c2] <5.2-maint> * dbus/dbus.cpp, dbus/helper.h: Fixed the licensing of the dbus module. [6e831021c4ef] <5.2-maint> 2014-02-22 Phil Thompson * lib/LICENSE.commercial: Updated the commercial license. [2685b40cf32d] <5.2-maint> * sphinx/pyqt4_differences.rst, sphinx/signals_slots.rst: Updated the docs regarding the handling of Qt signals with optional arguments. [9b1debc115c7] <5.2-maint> * PyQt5.msp: Added the QSGGeometry.AttributeSet ctor and fixed a couple of related bugs. [d5adaa40b597] <5.2-maint> * lib/configure.py: Fixed configure.py when QtCore is not being built. [d0b2571b8413] <5.2-maint> 2014-02-21 Phil Thompson * PyQt5.msp: Release the GIL when using QQmlApplicationEngine to load a QML file. [8e4b7e2d80b4] <5.2-maint> * qpy/QtCore/qpycore_chimera_storage.cpp: Fixed the handling of results of JavaScript functions in QML. [548c6b36b376] <5.2-maint> * lib/configure.py: Fix remaining misleading error messages about qmake on Windows. [a527a1cb7ab0] <5.2-maint> * lib/configure.py: Fixed the pyuic5 wrapper for Python v3.4 on OS/X. [82582f4dbc26] <5.2-maint> 2014-02-18 Phil Thompson * qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_types.cpp: Use SIP generated signal emitters if they are available. [e48c35dc1609] <5.2-maint> * Makefile, PyQt5.msp, QAxContainer/qaxbase.sip, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, lib/configure.py, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Changes needed by the SIP v11.0 internal API. [04cb8f12f608] <5.2-maint> 2014-02-15 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtGui.versions: Fixes when building against OpenGL/ES2. [c8f5b569c377] <5.2-maint> 2014-02-10 Phil Thompson * lib/configure.py: Removed a workaroud for a bug in the OS/X Python installation that no longer seems necessary. [42b4bf1a7bbc] <5.2-maint> * Makefile, lib/configure.py: Fixed the building of the Qt module. [cdfe5633ab6b] <5.2-maint> * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi: Updated for Qt v5.2.1. [8858e7832a48] <5.2-maint> * lib/OpenGL/gen_opengl_constants.py, lib/configure.py, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtGui/qpyopengl_add_constants.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: More fixes for the OpenGL changes. [e40a56e2861e] <5.2-maint> * PyQt5.msp: Don't call qpyopengl_init() if OpenGL is disabled. [b3169a87acdd] <5.2-maint> 2014-02-09 Phil Thompson * qpy/QtDBus/qpydbus_chimera_helpers.cpp: Another fix for the QPy refactoring. [db0f04a03742] <5.2-maint> * lib/OpenGL/gen_opengl_constants.py, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: Fixes for the QPy QtGui library when building with OpenGL disabled. [32991310ea1e] <5.2-maint> * PyQt5.msp, qpy/QtDBus/qpydbus_api.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtQml/qpyqml_sip.h, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquick_register_type.h: Refactored the rest of the QPy libraries with the exception of QtGui. [9cc5f284b315] <5.2-maint> * qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_objectified_strings.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvariant.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_sip.h, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: Refactored the QPy QtCore header files slightly so that the private API to the generated code is qpycore_api.h and the private API from the generated code is sipAPIQtCore.h. The public API remains qpycore_public_api.h. [2194a7a65de6] <5.2-maint> * lib/configure.py: Generate relative pathnames for the .sip files in the .pro files. [501007c40b60] <5.2-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtGui/qpyopengl_data_cache.cpp: Suppress warnings about tp_finalize. [351f44e52713] <5.2-maint> * qpy/QtGui/opengl_types.sip, qpy/QtGui/qpygui_qpair.sip: Added PyQt_OpenGL to a couple of extra places (primarily for documentation purposes as wouldn't generate code). [3c1cefcb0c1d] <5.2-maint> * lib/configure.py: The extension modules now have the correct install name on OS/X. [2b36703b6419] <5.2-maint> 2014-02-06 Phil Thompson * lib/configure.py, qpy/QtCore/qpycore.pro, qpy/QtDBus/qpydbus.pro, qpy/QtDesigner/qpydesigner.pro, qpy/QtGui/qpygui.pro, qpy/QtQml/qpyqml.pro, qpy/QtQuick/qpyquick.pro: The QPy support code is no longer built as separate libraries. [b160ecda2f38] <5.2-maint> 2014-02-05 Phil Thompson * PyQt5.msp, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtQml/qpyqml_sip.h: A special value, bool, int, float or string may be specified whenever a QJSValue is expected. [4fe146b380cb] <5.2-maint> * pylupdate/fetchtr.cpp: Fixes for the handling of nested classes in pylupdate from Matteo Bertini. [ab343b486918] <5.2-maint> * examples/widgets/tetrix.py: Fixes to the tetrix.py example from Mike Taverne. [1ff4b79a485e] <5.2-maint> 2014-02-04 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtGui.versions, lib/configure.py: PyQt should now build against a Qt installation with no OpenGL support. [1fc92a957229] <5.2-maint> * lib/configure.py: qreal is defined as double on all platforms when built against Qt v5.2. [0c098ca98d24] <5.2-maint> 2014-02-03 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed the QString to Python conversion for Python v3.3 and later as I hadn't realised that the KIND is interpreted very strictly. [ef3ac28273c8] <5.2-maint> 2014-01-29 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_qstringlist.sip: The mapping of QStringList is now handled the same as QList. [9f2c1e2bc3c9] <5.2-maint> 2014-01-17 Phil Thompson * QtX11Extras/qx11info_x11.sip, lib/configure.py: Fixes for QX11Info so that it will build against Qt v5.1. [7d0f384170fd] <5.2-maint> 2014-01-13 Phil Thompson * PyQt5.msp: Fixed the build when SSL support is disabled. [cb3debf77d04] <5.2-maint> 2014-01-10 Phil Thompson * build.py, sphinx/api_metadata.cfg: Updated the docs generation to reflect the changes to the structure of the docs on qt-project.org. [9301cdf68316] <5.2-maint> 2014-01-08 Phil Thompson * qpy/QtGui/qpygui_qpair.sip: Fixed a bug building against versions of Qt prior to v5.2.0. [5c798e751276] <5.2-maint> 2014-01-07 Phil Thompson * .hgtags: Added tag 5.2 for changeset 9352d801a9da [0bb3d7b8c32a] * Makefile, NEWS: Released as v5.2. [9352d801a9da] [5.2] 2014-01-04 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed the PEP 393 conversion from QString to Python unicode objects so that it properly handles surrogates. Also made the common case where the text is Latin-1 faster and the final object smaller. [52e28eb8f54e] 2014-01-02 Phil Thompson * Makefile, build.py, dbus/dbus.cpp, dbus/helper.h, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, pyrcc/rcc.cpp, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/indenter.py, pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/__init__.py, pyuic/uic/exceptions.py, pyuic/uic/objcreator.py, pyuic/uic/properties.py, pyuic/uic/uiparser.py, pyuic/uic/widget- plugins/qtwebkit.py, sphinx/conf.py: Updated the copyright notices. [95cd691c347d] 2013-12-29 Phil Thompson * PyQt5.msp: Fixed the QJSValue ctors. [480c23d29277] 2013-12-25 Phil Thompson * QtWinExtras/qwinjumplist.sip: Updated the sub-class convertor code for the QtWinExtras module. [31049d3853ae] * installers/PyQt5-Qt5-gpl.nsi: Fixes for the installer for Qt v5.2.0. [421c92fb3c1a] * QtWinExtras/qwinthumbnailtoolbar.sip, lib/configure.py: More QtWinExtras fixes. [35df5513f242] * QtWinExtras/qwinfunctions.sip: Fixes for the QtWinExtras module. [1cb902bbb5c1] * installers/PyQt5-Qt5-gpl.nsi: Updated the installer for Qt v5.2.0. [bb68738fcc1b] 2013-12-24 Phil Thompson * sphinx/api_metadata.cfg: Updated the documentation for the QtWinExtras module. [c8cbc2483694] * QtWinExtras/QtWinExtrasmod.sip, QtWinExtras/qwinjumplist.sip, QtWinExtras/qwinjumplistcategory.sip, QtWinExtras/qwinjumplistitem.sip, QtWinExtras/qwintaskbarbutton.sip, QtWinExtras/qwintaskbarprogress.sip, QtWinExtras/qwinthumbnailtoolbar.sip, QtWinExtras/qwinthumbnailtoolbutton.sip: Completed the initial implementation of the QtWinExtras module. [d27e0faa5fe7] * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip: Completed the implementation of the QtBluetooth module. [cc31f2f83bb0] 2013-12-22 Phil Thompson * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip: Completed the implementation of QBluetoohUuid. [7aa305b853b0] * PyQt5.msp: Fixed the signature of the QUuid ctor. [dbaff74f3365] * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip: Implemented QList. [4ef77ea90719] * PyQt5.msp: Complete the Qt v5.2.0 support for QtGui. [d2c55646d351] * PyQt5.msp, qpy/QtGui/qpygui_qpair.sip: Implemented the new QtGui specific QPair based mapped types. [91180027e254] 2013-12-21 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Emitting a signal with default arguments ommitted no longer requires the exact signal overload to be specified - the default overload can be used. [a9cbd3fc6215] * examples/multimediawidgets/player.py: Removed some old debugging messages from the player.py example. [4c6847702264] 2013-12-20 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtNetwork/qpynetwork_qmap.sip: Refactored QMap and QMultiMap. [cfb5008d4436] * PyQt5.msp, qpy/QtCore/qpycore_qpair.sip: Refactored QPair. [49eaf99ce9de] * qpy/QtCore/qpycore_collections.sip, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtGui/qlist.sip, qpy/QtGui/qpygui_collections.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_collections.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtPrintSupport/qpyprintsupport_collections.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_collections.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Split up the mapped type implementations. [2e1239c043cd] * PyQt5.msp, qpy/QtCore/qpycore_collections.sip, qpy/QtNetwork/qpynetwork_qhash.sip: Refactored QHash. [567d67e5eb6f] 2013-12-19 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore_collections.sip: Refactored the QSet implementations. [0127ff8a7de9] * qpy/QtCore/qpycore_collections.sip, qpy/QtGui/qpygui_collections.sip, qpy/QtMultimedia/qpymultimedia_collections.sip, qpy/QtPrintSupport/qpyprintsupport_collections.sip, qpy/QtWidgets/qpywidgets_collections.sip: QList and QVector implementations now accept iterables rather than sequences. [fea8a346e95d] * test/tests/mapped_types/test_QList.py: Fixed the QList unit tests. [f7f4b9928694] 2013-12-18 Phil Thompson * PyQt5.msp, qpy/QtCore/qlist.sip, qpy/QtCore/qpycore_collections.sip, qpy/QtGui/qpygui_collections.sip, qpy/QtGui/qpyopengl_collections.sip, qpy/QtMultimedia/qlist.sip, qpy/QtMultimedia/qpymultimedia_collections.sip, qpy/QtPrintSupport/qlist.sip, qpy/QtPrintSupport/qpyprintsupport_collections.sip, qpy/QtWidgets/qlist.sip, qpy/QtWidgets/qpywidgets_collections.sip: Refactored QVector along the lines of QList. [39671105f383] * PyQt5.msp, qpy/QtCore/qlist.sip, qpy/QtGui/qlist.sip, qpy/QtMultimedia/qlist.sip, qpy/QtPrintSupport/qlist.sip, qpy/QtWidgets/qlist.sip: Completed the refactoring and standardisation of the QList implementations. [511f34c97c88] * qpy/QtCore/qlist.sip, test/tests/mapped_types/__init__.py, test/tests/mapped_types/test_QList.py: Added unit tests for most of the QList mapped types. More fixes for QList mapped types. [eebdef19090a] * PyQt5.msp, qpy/QtCore/qlist.sip: Fixes to the QList implementations. Added the QList of enums used by the QtCore module. [05c4b4c81f62] 2013-12-17 Phil Thompson * PyQt5.msp, qpy/QtCore/qlist.sip: QList mapped types now only check for a sequence rather than also checking the individual elements. This allows much more useful exceptions to be raised. qlist.sip is now maintained separately from the project file. [5bdef54961f6] * QtMacExtras/qmacpasteboardmime.sip, QtWinExtras/qwinfunctions.sip, QtX11Extras/qx11info_x11.sip: Added version qualifiers to the platform specific modules. [6182642eb464] 2013-12-16 Phil Thompson * QtWinExtras/QtWinExtrasmod.sip, QtWinExtras/qwinfunctions.sip, build.py, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QtWinExtras module with only (for the moment) the QtWin namespace implemented. [5b7a6055d52e] * QAxContainer/qaxbase.sip, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, QtMacExtras/qmacpasteboardmime.sip, QtX11Extras/qx11info_x11.sip: Removed the (superfluous) platform directives from the platform specific modules. [719aa5e321e0] * lib/configure.py: SIP v4.15.4 is now required. [be675acbfe2d] * QtX11Extras/QtX11Extrasmod.sip, QtX11Extras/qx11info_x11.sip, build.py, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtX11Extras module. [c8cd08e0db4d] * PyQt5.msp: Implemented the QOpenGLPixelTransferOptions class. [b4919f0a515c] * QtMacExtras/QtMacExtrasmod.sip, QtMacExtras/qmacpasteboardmime.sip, build.py, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtMacExtras module. [3af1359543b4] * QAxContainer/QAxContainermod.sip: Fixed the module configuration for the QAxContainer module. [6cd0e9e81e5a] * PyQt5.msp, qpy/QtCore/qsysinfo.sip, sphinx/api_metadata.cfg: Updated QSysInfo for Qt v5.2.0. qsysinfo.sip is now maintained manually as it has so much platform specific code. [039aa7167784] 2013-12-15 Phil Thompson * Makefile, PyQt5.msp, sphinx/api_metadata.cfg: Completed the QtPositioning module. [94719e40833a] * Makefile, PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Removed the QtNfc module. Added the QtPositioning module to the build system and docs. [34457b8e4c87] * PyQt5.msp, sphinx/api_metadata.cfg: Completed the majority of the QtBluetooth module. [7ef992ea2ca8] * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QtBluetooth module to the build system and docs. [9075d7437589] * Merge. [a6a3c89427cd] * PyQt5.msp: Added the initial implementation of the QtPositioning module. [57a1a255ac9d] * sphinx/api_metadata.cfg: Updated the docs for the new Qt 5.2.0 classes in the existing modules. [b4c9ed0667e3] 2013-12-14 Phil Thompson * PyQt5.msp: Added the initial QtBluetooth and QtNfc modules. [7ab9befa4814] * PyQt5.msp: Updated for Qt v5.2.0. [abdbaeefb925] 2013-12-11 Phil Thompson * lib/configure.py: Fixed the required SIP version. [5e2fa0fdc2d0] 2013-12-09 Phil Thompson * PyQt5.msp: Completed the update of QtWidgets. [1b52104b143c] * examples/graphicsview/elasticnodes.py: Fix an obsolete call in the elasticnodes.py example. [db2f88d066a7] 2013-12-06 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtWidgets.versions: Partially updated QtWidgets. [05868fa42655] * PyQt5.msp: Updated the vast majority of QtGui. [f124efa2590b] * PyQt5.msp, lib/SubclassCode/QtQuick.versions: Updated QtQuick. [bac6eac771a3] * PyQt5.msp, lib/SubclassCode/QtQml.versions: Updated QtQml. [34b8d95c229c] * PyQt5.msp: Updated QtSensors. [ca372e3fdb40] * PyQt5.msp: Updated QtNetwork. [4b28b3eb46e0] 2013-12-05 Phil Thompson * PyQt5.msp: Updated QtWebKitWidgets. [17bcdd6819d5] * PyQt5.msp: Updated QtWebKit for Qt v5.2.0-rc1. Completed the update for QtCore. [8b2f27fc1f47] * PyQt5.msp: Updated QtSerialPort for Qt v5.2.0-rc1. [82f4f311dcea] 2013-12-04 Phil Thompson * Makefile, PyQt5.msp, lib/SubclassCode/QtCore.versions, lib/configure.py: Updated QtCore for Qt v5.2.0-rc1 (except for the broken QUrl). [0409bc818f8b] 2013-11-23 Phil Thompson * qpy/QtCore/qpycore_pyqtsignal.cpp: Fixed the handling of pyqtsignal() keyword arguments with Python2. [ceb50aaa7969] 2013-11-19 Phil Thompson * sphinx/index.rst, sphinx/metaobjects.rst: Documented Q_CLASSINFO(), Q_ENUMS() and Q_FLAGS(). [c773b532165e] * qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_qmetaobject.cpp: Enums/flags types are now registered as such. [fd9f3c1eb07a] * qpy/QtCore/qpycore_types.cpp: Enums/flags now have a scope corresponding to the class they are registered (rather than defined) in. [0b2396183bc2] 2013-11-18 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_enums_flags.h, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp: Reimplemented Q_ENUMS() and Q_FLAGS() so that they are added to the meta-object. [e1bd545bd994] * Merged the v5.1 maintenance branch. [67e9f33f2606] * qpy/QtGui/opengl_types.sip, qpy/QtGui/qpyopengl_collections.sip: Support for GLuint64 is disabled for ES 2. [3f0065d77ee3] <5.1-maint> 2013-11-17 Phil Thompson * examples/widgets/stylesheet/stylesheeteditor.py: Fixes for examples. [5346065f46ea] <5.1-maint> 2013-11-15 Phil Thompson * pyrcc/main.cpp: pyrcc5 uses the local encoding for the name of the .qrc file. [ae550ef924d3] <5.1-maint> * qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQml/qpyqmlsingletonobject.h: 60 QML types can now be defined. 30 QML singleton types can now be defined. [faa179cff2c7] <5.1-maint> * qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickitem.h, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickpainteditem.h: 30 each of Quick items and painted Quick items are now supported. [53c7f63b5ad5] <5.1-maint> 2013-11-11 Phil Thompson * examples/designer/plugins/widgets/datetimeedit.py, examples/graphicsview/diagramscene/diagramscene.py, examples/itemviews/chart/chart.py, examples/itemviews/pixelator/pixelator.py, examples/multimediawidgets/camera/camera.py, examples/multimediawidgets/player.py, examples/network/fortuneclient.py, examples/qtdemo/scanitem.py, examples/richtext/textedit/textedit.py, examples/widgets/tetrix.py: Various fixes to the examples from Dmitry Shachnev. [440d468a0ae8] <5.1-maint> 2013-11-05 Phil Thompson * qpy/QtQml/qpyqml_register_type.cpp: Revised the previous change for really, really old (GCC 4.3) compilers. [f9d93ebb35b1] <5.1-maint> * qpy/QtQml/qpyqml_register_type.cpp: Applied a couple of specific casts which might be needed by older compilers. [8ffa9810eb28] <5.1-maint> 2013-10-25 Phil Thompson * Makefile, lib/configure.py: Enable the QML debugger when --debug is passed to configure.py. [c483162df565] <5.1-maint> 2013-10-20 Phil Thompson * lib/configure.py: Any qmake variables passed on the command line to configure.py are also applied the plugins and applications Makefiles. [44c92d7c6f19] <5.1-maint> 2013-10-16 Phil Thompson * .hgtags: Added tag 5.1.1 for changeset 06a65a43f646 [2e77fd32377a] <5.1-maint> * NEWS: Released as v5.1.1. [06a65a43f646] [5.1.1] <5.1-maint> 2013-10-15 Phil Thompson * examples/quick/canvas/contents/images/gloss.png, examples/quick/canvas/contents/images/lineedit.png, examples/quick/canvas/contents/images/quit.png, examples/quick/canvas/contents/images/stripes.png, examples/quick/canvas/contents/images/titlebar.png, examples/quick/canvas/contents/images/toolbutton.png: Removed the execute bits on some .png files. [ac974835d7fe] <5.1-maint> 2013-10-13 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Fixed a problem with Python properties that have notify signals emitted. [ebd36baa56e9] <5.1-maint> * Makefile, designer/python.pro-in, lib/configure.py, qmlscene/python .pro-in: PyQt will now build against a debug only version of Qt. [d65e39e3cd7d] <5.1-maint> 2013-10-12 Phil Thompson * lib/configure.py: Fixed the handling of VendorID in configure.py. [97319b4351e8] <5.1-maint> 2013-10-07 Phil Thompson * Makefile, PyQt5.msp: Minor fixes for building against Qt v5.2.0-alpha. [41b8f6ca2ea4] <5.1-maint> * qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed the support for QObject meta-casting. [aaa5588d9982] <5.1-maint> 2013-10-05 Phil Thompson * PyQt5.msp: Updated the project for Qt v5.1.1. [fc7b8711dba0] <5.1-maint> * qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: Fixed building against Qt v5.0. [6666b6259893] <5.1-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed (hopefully) building with GCC v4.6 and earlier. [0aa3e18d07a1] <5.1-maint> 2013-10-04 Phil Thompson * PyQt5.msp: Fixed the QShortcut ctor when passing slot arguments. [3c895ca14f00] <5.1-maint> 2013-10-03 Phil Thompson * qmlscene/pluginloader.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmlobject.cpp: Fixed a number of incorrect (for Python2) format characters. [b63b9dc3a3fa] <5.1-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed a bad format character when raising an exception. [3547edcdd278] <5.1-maint> * build.py: Updated the internal build script to use the latest hg rather than that provided with MacHg. [42f3b031a7b9] <5.1-maint> 2013-10-02 Phil Thompson * .hgtags: Added tag 5.1 for changeset e5fd9644dd9c [6cb80b7fd2ed] * NEWS: Released as v5.1. [e5fd9644dd9c] [5.1] 2013-09-28 Phil Thompson * qpy/QtCore/qpycore_pyqtsignal.cpp: Improve the text of the exception raised when the type of a C++ signal argument couldn't be parsed. [fc0039af3b73] * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi: Minor updates for the Windows installers. [1a103cd1db02] 2013-09-27 Phil Thompson * sphinx/installation.rst: Updated the docs regarding the --configuration flag to configure.py. [40038372e538] 2013-09-26 Phil Thompson * lib/RaspberryPi/configuration.txt: Added the Raspberry Pi configuration notes to the internal documentation. [3de62eb92856] * configurations/rpi_py3.cfg: Updated the Raspberry Pi configuration for a full build. [5f21be94b635] * qmlscene/pluginloader.cpp: Fixed the build when Python3, prior to Python v3.3, has wide characters. [5b01202be52b] * designer/pluginloader.cpp, designer/python.pro-in, lib/configure.py, qmlscene/pluginloader.cpp, qmlscene/python.pro-in: The plugins no longer try to dynamically load the interpreter library (as they are already linked against it). The plugins shoulkd now build when cross-compiling. [edd0734e2a64] 2013-09-25 Phil Thompson * configurations/rpi_py3.cfg, lib/configure.py: More cross-compilation fixes. The openglwindow.py example now runs on the Pi. [7ed7bf039abe] 2013-09-24 Phil Thompson * lib/configure.py: The --no-sip-files option to configure.py now works. [10dd80985ac7] * PyQt5.msp: Minor tweaks to handwritten OpenGL code. [79a533fc00a1] * Makefile, configurations/rpi_py3.cfg, lib/configure.py, qpy/QtGui/opengl_types.sip: Further fixes for cross-compilation. OpenGL types are now hard- coded. [3166145ee331] * Makefile, configurations/rpi_py3.cfg, lib/configure.py: QtCore can now be cross-compiled. [f3bbee7cffae] * PyQt5.msp: Fix QVector when qreal is float. [b9a9f60ac6f4] 2013-09-16 Phil Thompson * qpy/QtGui/qpyopengl_version_functions.cpp: _QOpenGLFunctions_ES2 now works. [597681874226] * Makefile, PyQt5.msp, qpy/QtGui/qpyopengl_value_array.cpp: More _QOpenGLFunctions_ES2. [6a10b084e6ca] 2013-09-15 Phil Thompson * PyQt5.msp, lib/configure.py: More _QOpenGLFunctions_ES2. [5f6ec7374914] * PyQt5.msp: More _QOpenGLFunctions_2_0. [ee04c8a2c022] * PyQt5.msp, lib/configure.py: More _QOpenGLFunctions_ES2. [90c93700c52b] * PyQt5.msp: More on _QOpenGLFunctions_ES2. [9685fbc2b622] * PyQt5.msp: Added the _QOpenGLFunctions_ES2 module. [bd8d9c35627f] 2013-09-09 Phil Thompson * Makefile, PyQt5.msp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp, sphinx/opengl.rst: Completed the initial implementation of _QOpenGLFunctions_2_0. [daa2bea192b2] * Makefile, PyQt5.msp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: More _QOpenGLFunctions_2_0. [b5534bf36a20] 2013-09-08 Phil Thompson * pylupdate/fetchtr.cpp: Added support for the different line endings to pylupdate based on a patch from Florent Rougon. [96069d4e7caa] * lib/configure.py: Do a better job of detecting when the user is trying to use Qt3. Do a better job of detecting when the use doesn't have write permissions. [1610b9abbf10] * Makefile, PyQt5.msp, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp: More _QOpenGLFunctions_2_0. [64cb4aa6f8cf] 2013-09-07 Phil Thompson * examples/opengl/textures/textures.py: Fixed the textures.py example. [7b33930e4c2d] * examples/opengl/grabber.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/opengl/textures/textures.py: Fixed the OpenGL examples for Python3. [af3d975869cc] * PyQt5.msp, qpy/QtGui/qpyopengl_value_array.cpp: OpenGL calls now accept None when a non-cached array is expected. OpenGL calls now accept an offset when a cached array is expected. [283b44baca06] 2013-09-06 Phil Thompson * PyQt5.msp: More _QOpenGLFunctions_2_0. [cd5cd9bdbcfd] * PyQt5.msp, examples/opengl/openglwindow.py: More _QOpenGLFunctions_2_0. [2b2312a2da64] * PyQt5.msp: More _QOpenGLFunctions_2_0. [24610a59a9dc] 2013-09-05 Phil Thompson * PyQt5.msp, lib/configure.py: Implemented more of _QOpenGLFunctions_2_0. [448e0631c418] * Makefile, PyQt5.msp, lib/configure.py, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Updated the OpenGL array support to optimise the most common case where the array doesn't have to be persistent. Implemented a bit more of _QOpenGLFunctions_2_0. [f7bd5bd22f67] 2013-09-04 Phil Thompson * Makefile, examples/opengl/openglwindow.py, qpy/QtGui/qpyopengl_value_array.cpp: Added support for sequences as the basis of OPenGL arrays. [98d2b977e23f] * qpy/QtGui/qpyopengl_value_array.cpp: Added OpenGL array support for versions of Python that don't support the new buffer protocol. [844aaa83c62c] * Makefile, PyQt5.msp, examples/opengl/openglwindow.py, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Implemented the buffer support for raw arrays passed to OpenGL. [9bfb71b1d0f5] 2013-09-03 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Slight tweak on the previous change. [ead833d00e02] 2013-09-02 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Improved the handling of QGraphicsItem when parsing a Python type object of a sub-class. [527c79f1594f] * lib/configure.py: Worked around SIP's broken handling of composite modules. [6b8496f8cb72] 2013-09-01 Phil Thompson * pylupdate/fetchtr.cpp: pylupdate now handles backslash at the end of a line within a quoted string. [1e0878bd6a21] 2013-08-30 Phil Thompson * PyQt5.msp, lib/configure.py: Only check for OpenGL modules according to whether Qt is configured for desktop OpenGL or OpenGL ES. Implemented the remaining easy parst of _QOpenGLFunctions_2_0. [3ba267894012] 2013-08-29 Phil Thompson * PyQt5.msp, lib/configure.py: Implemented more of the _QOpenGLFunctions_2_0 module. [936925a906bb] * sphinx/index.rst, sphinx/introduction.rst, sphinx/opengl.rst: Documented the OpenGL bindings support. [9eca323f87e2] * PyQt5.msp, examples/opengl/openglwindow.py, lib/OpenGL/gen_opengl_constants.py, lib/configure.py, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: Implemented the framework for the version specific OpenGL bindings. Added the skeleton bindings for OpenGL v2.0. Updated the openglwindow.py example to use the bindings. [3a08e74da74f] * PyQt5.msp, lib/SubclassCode/QtGui.versions, lib/configure.py: Fixed QAbstractOpenGLFunctions. Fixed things so that it will build on an OpenGL ES system. [318b82b05b53] 2013-08-28 Phil Thompson * PyQt5.msp, lib/OpenGL/gen_opengl_constants.py, lib/OpenGL/gl.xml: Added the beginnings of the full OpenGL bindings. [3dd128404e5c] 2013-08-27 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the implementation of QtSensors. [5ff7407d37c2] 2013-08-26 Phil Thompson * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/introduction.rst: Added the stub of the QtSensors module. [ffa47c3ca333] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtSerialPort module. [5e397a878471] * PyQt5.msp: Fixed build errors in third-party modules that use --public-not- protected. [ca9e6073899a] 2013-08-24 Phil Thompson * PyQt5.msp: Updated QtWidgets for Qt v5.1. [693a95fde3fa] * PyQt5.msp: Updated QtWebKit, QtWebKitWidgets and QtXmlPatterns for Qt v5.1. [feefcd6865ab] * PyQt5.msp: Updated QtSql, QtSvg and QtTest for Qt v5.1. [b41ab51caad3] * PyQt5.msp, lib/SubclassCode/QtQuick.versions, sphinx/api_metadata.cfg: Updated QtQuick for Qt v5.1. [06a106bb3979] * PyQt5.msp, lib/SubclassCode/QtQml.versions, sphinx/api_metadata.cfg: Updated QtQml for Qt v5.1. [b21cddbc7055] * PyQt5.msp: Updated QtOpenGL and QtPrintSupport for Qt v5.1. [d95b6fe223f7] * PyQt5.msp: Updated QtNetwork for Qt v5.1. [542876931098] * qpy/QtGui/qpyopengl_collections.sip: Added the missing OpenGL mapped type implementations. [5734b486da0e] * PyQt5.msp: Updated QtMultimedia and QtMultimediaWidgets for Qt v5.1. [6aa815198cb4] * PyQt5.msp: Updated QtHelp for Qt v5.1. [39e72b951edd] * PyQt5.msp: Updated the QObject sub-class convertor code fro QtGui. [c85fc0a95473] * PyQt5.msp, lib/SubclassCode/QtGui.versions, lib/configure.py, sphinx/api_metadata.cfg: Updated QtGui for Qt v5.1. [dc11dcd36ea0] 2013-08-22 Phil Thompson * sphinx/api_metadata.cfg: Added the new QtCore classes to the docs. [74868b1f6fbe] * PyQt5.msp: Updated QtDBus and QtDesigner for Qt v5.1. [ed9b4b48ed21] * PyQt5.msp, lib/SubclassCode/QtCore.versions: Updated QtCore for Qt v5.1. [a231bd34acb3] * lib/configure.py: Added MULTIARCH support to configure.py. [b6e3146e2327] 2013-08-21 Phil Thompson * NEWS, PyQt5.msp, build.py, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py: Switch to Qt v5.1 in the various places that need it. [85f42f774296] * sphinx/api_metadata.cfg: Added the missing QQmlParserStatus from the documentation. [ad31726b792f] * contrib/lang/Makefile, contrib/lang/lang.py, contrib/lang/lang.qrc, contrib/lang/lang/cs_cs.qm, contrib/lang/lang/cs_cs.ts, contrib/lang/lang/da_da.qm, contrib/lang/lang/da_da.ts, contrib/lang/lang/de_ch.qm, contrib/lang/lang/de_ch.ts, contrib/lang/lang/de_de.qm, contrib/lang/lang/de_de.ts, contrib/lang/lang/en_gb.qm, contrib/lang/lang/en_gb.ts, contrib/lang/lang/en_us.qm, contrib/lang/lang/en_us.ts, contrib/lang/lang/es_es.qm, contrib/lang/lang/es_es.ts, contrib/lang/lang/et_et.qm, contrib/lang/lang/et_et.ts, contrib/lang/lang/fi_fi.qm, contrib/lang/lang/fi_fi.ts, contrib/lang/lang/fr_ca.qm, contrib/lang/lang/fr_ca.ts, contrib/lang/lang/fr_fr.qm, contrib/lang/lang/fr_fr.ts, contrib/lang/lang/hu_hu.qm, contrib/lang/lang/hu_hu.ts, contrib/lang/lang/it_it.qm, contrib/lang/lang/it_it.ts, contrib/lang/lang/nl_nl.qm, contrib/lang/lang/nl_nl.ts, contrib/lang/lang/no_no.qm, contrib/lang/lang/no_no.ts, contrib/lang/lang/pl_pl.qm, contrib/lang/lang/pl_pl.ts, contrib/lang/lang/pt_pt.qm, contrib/lang/lang/pt_pt.ts, contrib/lang/lang/sv_sv.qm, contrib/lang/lang/sv_sv.ts, contrib/lang/lang/tr_tr.qm, contrib/lang/lang/tr_tr.ts, contrib/lang/mainwindow.ui, contrib/pymodeltest/LICENSE.GPL, contrib/pymodeltest/README, contrib/pymodeltest/modeltest.py, contrib/sandbox/README, contrib/sandbox/sandbox.pyw, dbus/dbus.sbf, qpy/QtGui/qpytextobject.h, qpy/QtGui/qpytextobject.sip, qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp: Merged v5.0.1 into the trunk. [82643b45e53c] * .hgtags: Added tag 5.0.1 for changeset 59b34385ff6d [72037931b2a8] <5.0-maint> * NEWS: Released as v5.0.1. [59b34385ff6d] [5.0.1] <5.0-maint> 2013-08-19 Phil Thompson * installers/qt5-config.bat: Updated the internal Qt5 build documentation. [e131f74b7106] <5.0-maint> * lib/configure.py: Fixed an error message bug in configure.py. [1e1ad89c6da7] <5.0-maint> 2013-08-18 Phil Thompson * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, qmlscene/python.pro-in: Updated the installer for Qt v5.1.0. [8463e4cb0371] <5.0-maint> * lib/configure.py: More fixes for out of tree builds. [a188359a1bf2] <5.0-maint> * lib/configure.py: Fixed configure.py for out of tree builds. [435ccc473b5d] <5.0-maint> 2013-08-17 Phil Thompson * NEWS: Updated the NEWS file. [7e6f3768c519] <5.0-maint> * examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/valuesource.py: Added the valuesource.py example. [9992e2e174c1] <5.0-maint> * qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp, sphinx/gotchas.rst, sphinx/signals_slots.rst: Added the arguments keyword argument to pyqtSignal(). [0073e2386c2d] <5.0-maint> * examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/signal.py: Fixed the signal definition in the binding.py and signal.py examples. [c5345f8bcb87] <5.0-maint> * examples/qml/referenceexamples/signal.py: Added the signal.py example. [5cdcf5b00f52] <5.0-maint> * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: QML proxies now relay signals to QML. [2080cdb152cc] <5.0-maint> 2013-08-16 Phil Thompson * PyQt5.msp: Tweak the previous fix. [da4e96198c0b] <5.0-maint> * PyQt5.msp: Fixed the error detection in the QList convertors based on Matt Newell's patch. [ea5ea9b31075] <5.0-maint> * qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, sphinx/qml.rst: Added support for QQmlParserStatus to the QML proxies. [d9296d0519e9] <5.0-maint> * PyQt5.msp: QQmlPropertyValueSource is also a mixin. [a55b7bf0af7d] <5.0-maint> * examples/qml/referenceexamples/properties.py: Added the properties.py example. [84f06aab5c9a] <5.0-maint> * examples/qml/referenceexamples/methods.py: Added the methods.py example. [0621954b0ccb] <5.0-maint> * examples/qml/referenceexamples/grouped.py: Added the grouped.py example. [5b4a7349bb9d] <5.0-maint> * examples/qml/referenceexamples/coercion.py, examples/qml/referenceexamples/default.py: Added the default.py example. Cleaned up the coercion.py example. [65212f2a631a] <5.0-maint> * examples/qml/referenceexamples/coercion.py: Added the coercion.py example. [36c88aa58b10] <5.0-maint> * examples/qml/referenceexamples/binding.py, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, sphinx/qml.rst: Completed the support for property value sources. [4db347bfa0fa] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added QQmlPropertyValueSource. [39c886b5f3a2] <5.0-maint> * examples/qml/referenceexamples/binding.py: Added the initial implementation of the binding.py example. [24a37fc53116] <5.0-maint> 2013-08-15 Phil Thompson * Makefile, examples/qml/referenceexamples/attached.py, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.h, sphinx/qml.rst: Completed the implementation of qmlAttachedPropertiesObject(). Documented the use of attached properties. Added the attach.py example. [9bb44d8cd582] <5.0-maint> * qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h: Added the initial implementation of qmlAttachedPropertiesObject(). [7dd0fa517103] <5.0-maint> * Makefile, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Added support for defining and creating (but not yet retrieving) attached properties. [e284892a8884] <5.0-maint> * Makefile, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp: Make sure types get registered with the original meta-object and not a copy. [37335dddfa48] <5.0-maint> 2013-08-14 Phil Thompson * Makefile, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_types.cpp: The Python type name is now returned as a property type name for types that derive from QObject (as opposed to any C++ QObject sub- class). This means that they have distinct types to QML. [c954bec31706] <5.0-maint> * qpy/QtQuick/qpyquickitem.cpp: Removed more redundant QByteArrays. [1ef26c21cb3d] <5.0-maint> * Makefile, qpy/QtCore/qpycore_types.cpp, qpy/QtQml/qpyqml_register_type.cpp: Removed redundant QByteArrays from the registration of QML proxies. [d3a3b05f836b] <5.0-maint> 2013-08-13 Phil Thompson * PyQt5.msp, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Improved the handling of QML proxies. [7893d27b5297] <5.0-maint> 2013-08-12 Phil Thompson * qpy/QtQml/qpyqml_listdata.cpp, qpy/QtQml/qpyqml_listdata.h, qpy/QtQml/qpyqmllistproperty.cpp: QQmlListProperty now supports automatic handling of a Python list. [60d80fb8b575] <5.0-maint> * examples/qml/referenceexamples/adding.py: Added the adding.py QML example. [b743e47396da] <5.0-maint> * sphinx/introduction.rst, sphinx/qml.rst: Documented the QML plugin. [5540ce69ca6d] <5.0-maint> * examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: qtdemo.py now handles launching qmlscene. [23c41bdedce8] <5.0-maint> * examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir, lib/configure.py: configure.py now fixes the qmldir file of the chapter6-plugins example. [c83b531d316e] <5.0-maint> * qmlscene/pluginloader.cpp: Completed the implementation of the qmlscene plugin. [55b870798e9c] <5.0-maint> * examples/quick/tutorials/extending/chapter6-plugins/Charts/chartsplu gin.py, examples/quick/tutorials/extending/chapter6-plugins/Charts/p iechart.py, examples/quick/tutorials/extending/chapter6-plugins/Char ts/pieslice.py, examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir, examples/quick/tutorials/extending/chapter6-plugins/app.qml: Added the chapter6-plugins example. [bebaac7a0d7d] <5.0-maint> * qmlscene/pluginloader.cpp, qmlscene/pluginloader.h: The Qml plugin now calls any Python implementation of initializeEngine(). [3c588fa07a63] <5.0-maint> 2013-08-11 Phil Thompson * Makefile, qmlscene/pluginloader.cpp, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed the handling of reading properties via a meta-call. [ccdb334aad87] <5.0-maint> * Makefile, build.py, lib/configure.py, qmlscene/pluginloader.cpp, qmlscene/pluginloader.h, qmlscene/python.pro-in, sphinx/installation.rst: Added the initial implementation of the qmlscene plugin. [1be57f8f651f] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added QQmlExtensionPlugin. [e88c65a97583] <5.0-maint> 2013-08-10 Phil Thompson * build.py: Removed an old reference to elementtree in the internal build system. [77a8aa22c304] <5.0-maint> * lib/configure.py: Fixed the handling of the Designer plugin installation directory. [0f65c507b625] <5.0-maint> * lib/configure.py: Made sure the qmake version is checked before any other output. [a8b6f4139914] <5.0-maint> 2013-08-09 Phil Thompson * sphinx/api_metadata.cfg, sphinx/qml.rst: Documented QQmlListProperty. [ab75bbfed2d0] <5.0-maint> * PyQt5.msp, examples/quick/tutorials/extending/chapter5-listpropertie s/chapter5-listproperties.py, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_listdata.cpp, qpy/QtQml/qpyqml_listdata.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.h, qpy/QtQml/qpyqmllistproperty.sip: Implemented QQmlListProperty. [44a9f9f1e42c] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Fixed the launching of the Quick tutorial examples. [a4d11dd6fb95] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/tutorials/extending/chapter1-basics/app.qml, examples /quick/tutorials/extending/chapter1-basics/chapter1-basics.py, examples/quick/tutorials/extending/chapter2-methods/app.qml, example s/quick/tutorials/extending/chapter2-methods/chapter2-methods.py, examples/quick/tutorials/extending/chapter3-bindings/app.qml, exampl es/quick/tutorials/extending/chapter3-bindings/chapter3-bindings.py, examples/quick/tutorials/extending/chapter4-customPropertyTypes/app. qml, examples/quick/tutorials/extending/chapter4-customPropertyTypes /chapter4-customPropertyTypes.py, examples/quick/tutorials/extending/chapter5-listproperties/app.qml, e xamples/quick/tutorials/extending/chapter5-listproperties/chapter5-l istproperties.py: Added the first five extending QtQuick tutorial examples. [741a1c2515ab] <5.0-maint> 2013-08-08 Phil Thompson * PyQt5.msp: Fixed the QOpenGLFramebufferObject ctors for OpenGL/ES. [2d63832f17f9] <5.0-maint> * PyQt5.msp: Removed the desktop OpenGL specific enum members from QSGGeometry. [ae254303ee10] <5.0-maint> 2013-08-07 Phil Thompson * PyQt5.msp: Removed remaining QList. [5353ace04cdf] <5.0-maint> * PyQt5.msp: Removed unused QSet and QMultiHash mapped types. [f9d55d2d3f80] <5.0-maint> * PyQt5.msp: Fixed the types of setDashPattern() and dashPattern() of QPen. [d59baf568cd7] <5.0-maint> * PyQt5.msp: Fixed the types of setDashPattern() and dashPattern() of QPainterPath. [65c2c020bd91] <5.0-maint> * PyQt5.msp: Removed the unused QList mapped types. [f931a114fe4e] <5.0-maint> * lib/configure.py: The configure.py test for qreal is now the same as the one in qglobal.h. [2a46b7f185aa] <5.0-maint> 2013-08-06 Phil Thompson * PyQt5.msp: Fixed the QGradientStops typedef. [d1bfba006b28] <5.0-maint> 2013-08-05 Phil Thompson * PyQt5.msp, examples/quick/scenegraph/customgeometry/customgeometry.py: Completed the implementation of QSGGeometry. Ported the customgeometry.py example to Qt v5.1. [dc70ed4b71f2] <5.0-maint> * PyQt5.msp: Added the remaining QSGGeometry methods that returned typed arrays. [85c6ae5aae0b] <5.0-maint> * PyQt5.msp: Fixed QSGNode.setFlags(). The customgeometry.py example now works. [475543e43c7f] <5.0-maint> 2013-08-04 Phil Thompson * PyQt5.msp, examples/quick/scenegraph/customgeometry/customgeometry.py: Added the GL drawing modes to QSGGeometry. Updated the customgeometry.py example. Passed the struct format to the typed array calls. [da15276a17c7] <5.0-maint> * examples/quick/scenegraph/customgeometry/customgeometry.py: Fixes to the customgeometry.py example. [51419d8bd817] <5.0-maint> 2013-08-03 Phil Thompson * PyQt5.msp: Added some annotations to QSGGeometry. [9f4a5ec6265a] <5.0-maint> 2013-08-02 Phil Thompson * PyQt5.msp: Implemented QSGGeometry.vertexDataAsPoint2D(). [5dce48f13136] <5.0-maint> 2013-07-31 Phil Thompson * examples/quick/scenegraph/customgeometry/customgeometry.py, qpy/QtQuick/qpyquick.pro, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickpainteditem.h: Added support for QQuickPaintedItem. Fixes to the customgeometry.py example. [78c6a5e85fef] <5.0-maint> * PyQt5.msp: Added /ReleaseGIL/ to the QWindow show methods to avoid an apparent deadlock. [31330f114be8] <5.0-maint> 2013-07-30 Phil Thompson * qpy/QtQml/qpyqmlsingletonobject.h: Fixed a typo affecting case sensitive filesystems. [55557cf6c754] <5.0-maint> * PyQt5.msp, examples/quick/scenegraph/customgeometry/customgeometry.py, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQuick/qpyquick.pro, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquick_register_type.h, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickitem.h: Python QQuickItem implementations now get created and their properties updated. [70f46d0d1f2f] <5.0-maint> 2013-07-28 Phil Thompson * pyuic/uic/uiparser.py: Grid alignments can now be a set of or-ed values. [45a3ca3e06db] <5.0-maint> 2013-07-27 Phil Thompson * examples/sql/connection.py: Removed the unnecessary #! line from connection.py. [26e093f17858] <5.0-maint> 2013-07-26 Phil Thompson * examples/itemviews/puzzle/puzzle.py: Fixed the item views version of the puzzle.py example. [5cb5b4bdafbd] <5.0-maint> * examples/itemviews/stardelegate.py: Fixed the stardelegate.py example. [0cf81f6fbbe5] <5.0-maint> * pyuic/uic/uiparser.py: Added support for the alignment of grid items in pyuic. [8a7e107cfe07] <5.0-maint> * examples/layouts/borderlayout.py, examples/layouts/flowlayout.py, examples/mainwindows/menus.py, examples/mainwindows/separations.py, examples/widgets/styles.py: Fixed the remaining calls to QLayout.setMargin(). [630b2d432fc4] <5.0-maint> * examples/dialogs/extension.py, examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py, examples/dialogs/trivialwizard.py: Fixed the dialog examples so that the close buttons are enabled on OS/X when needed. [63d2aaff27a8] <5.0-maint> * examples/activeqt/webbrowser/ui_mainwindow.py, examples/dbus/chat/ui_chatmainwindow.py, examples/dbus/chat/ui_chatsetnickname.py, examples/designer/calculatorform/ui_calculatorform.py, examples/itemviews/editabletreemodel/ui_mainwindow.py, examples/webkit/domtraversal/ui_window.py, examples/widgets/stylesheet/ui_mainwindow.py, examples/widgets/stylesheet/ui_stylesheeteditor.py: Re-rean pyuic5 on the examples to get rid of calls to setMargin(). [cdfc8d862f73] <5.0-maint> * examples/quick/scenegraph/customgeometry/customgeometry.py, examples/quick/scenegraph/customgeometry/customgeometry_rc.py, examples/quick/scenegraph/customgeometry/main.qml: Made the QML more readable. [6442069f40a5] <5.0-maint> * examples/painting/concentriccircles.py: Simplifies the concentriccircles.py example. [5429c29179eb] <5.0-maint> 2013-07-25 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Improvements to the QML object proxy. [b78c48ae7358] <5.0-maint> 2013-07-23 Phil Thompson * PyQt5.msp: Added /ReleaseGIL/ to QQuickView.setSource(). Removed /TransferThis/ from QQuickItem.setParentItem(). [af06eab58162] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/scenegraph/customgeometry/customgeometry.py, examples/quick/scenegraph/customgeometry/customgeometry.qrc, examples/quick/scenegraph/customgeometry/customgeometry_rc.py, examples/quick/scenegraph/customgeometry/main.qml: Added the customgeometry.py example. [c0cb02e1ed62] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the abstractitemmodel.py example to qtdemo.py. [554d667ee318] <5.0-maint> * PyQt5.msp, examples/quick/models/abstractitemmodel/abstractitemmodel.py, examples/quick/models/abstractitemmodel/abstractitemmodel.qrc, examples/quick/models/abstractitemmodel/abstractitemmodel_rc.py, examples/quick/models/abstractitemmodel/view.qml, examples/quick/models/objectlistmodel/objectlistmodel.py: Fixed QTextBlock.setUserData() and QSyntaxHighlighter.setCurrentBlockUserData() so that an explicit reference to the owning document doesn't need to be kept. [fcd867e2f9c6] <5.0-maint> * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, sphinx/extension_api.rst: Improved the API of pyqt5_register_to_qvariant_convertor(). [fd3dda9d913b] <5.0-maint> * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, sphinx/extension_api.rst: Removed pyqt5_qobject_sender() from the public API. [c13032fa3dfd] <5.0-maint> * PyQt5.msp, lib/configure.py, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtQuick/qpyquick.pro, qpy/QtQuick/qpyquick_api.h, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, qpy/QtQuick/qpyquick_post_init.cpp, sphinx/extension_api.rst: Added the QtQuick support library to add the necessary QVariant convertors. [16d58eaa4f93] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/models/objectlistmodel/objectlistmodel.py, examples/quick/models/objectlistmodel/objectlistmodel.qrc, examples/quick/models/objectlistmodel/objectlistmodel_rc.py, examples/quick/models/objectlistmodel/view.qml, examples/quick/models/stringlistmodel/stringlistmodel.py, examples/quick/models/stringlistmodel/stringlistmodel.qrc, examples/quick/models/stringlistmodel/stringlistmodel_rc.py, examples/quick/models/stringlistmodel/view.qml: Added the objectlistmodel.py and stringlistmodel.py examples. [f29e57d95c66] <5.0-maint> 2013-07-22 Phil Thompson * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/animation/animation.py, examples/quick/canvas/bezierCurve/bezierCurve.qml, examples/quick/canvas/canvas.py, examples/quick/canvas/canvas.qml, examples/quick/canvas/canvas.qrc, examples/quick/canvas/canvas_rc.py, examples/quick/canvas/clip/clip.qml, examples/quick/canvas/contents/Button.qml, examples/quick/canvas/contents/ScrollBar.qml, examples/quick/canvas/contents/Slider.qml, examples/quick/canvas/contents/TitleBar.qml, examples/quick/canvas/contents/ToolBar.qml, examples/quick/canvas/contents/images/button-pressed.png, examples/quick/canvas/contents/images/button.png, examples/quick/canvas/contents/images/default.svg, examples/quick/canvas/contents/images/gloss.png, examples/quick/canvas/contents/images/lineedit.png, examples/quick/canvas/contents/images/lineedit.sci, examples/quick/canvas/contents/images/quit.png, examples/quick/canvas/contents/images/stripes.png, examples/quick/canvas/contents/images/titlebar.png, examples/quick/canvas/contents/images/titlebar.sci, examples/quick/canvas/contents/images/toolbutton.png, examples/quick/canvas/contents/images/toolbutton.sci, examples/quick/canvas/contents/qt-logo.png, examples/quick/canvas/quadraticCurveTo/quadraticCurveTo.qml, examples/quick/canvas/roundedrect/roundedrect.qml, examples/quick/canvas/smile/smile.qml, examples/quick/canvas/squircle/squircle.png, examples/quick/canvas/squircle/squircle.qml, examples/quick/canvas/tiger/tiger.js, examples/quick/canvas/tiger/tiger.qml: Added the QtQuick canvas.py example. [268df5fd8d34] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/README, examples/quick/animation/animation.py, examples/quick/animation/animation.qml, examples/quick/animation/animation.qrc, examples/quick/animation/animation_rc.py, examples/quick/animation/basics/color-animation.qml, examples/quick/animation/basics/images/face-smile.png, examples/quick/animation/basics/images/moon.png, examples/quick/animation/basics/images/shadow.png, examples/quick/animation/basics/images/star.png, examples/quick/animation/basics/images/sun.png, examples/quick/animation/basics/property-animation.qml, examples/quick/animation/behaviors/SideRect.qml, examples/quick/animation/behaviors/behavior-example.qml, examples/quick/animation/behaviors/tvtennis.qml, examples/quick/animation/behaviors/wigglytext.qml, examples/quick/animation/easing/easing.qml, examples/quick/animation/pathanimation/pathanimation.qml, examples/quick/animation/pathinterpolator/pathinterpolator.qml, examples/quick/animation/states/qt-logo.png, examples/quick/animation/states/states.qml, examples/quick/animation/states/transitions.qml, examples/quick/shared/Button.qml, examples/quick/shared/LauncherList.qml, examples/quick/shared/SimpleLauncherDelegate.qml, examples/quick/shared/images/back.png, examples/quick/shared/images/next.png, examples/quick/shared/shared.qrc, examples/quick/shared/shared_rc.py: Added the QtQuick animation.py example. [837150b71731] <5.0-maint> 2013-07-21 Phil Thompson * PyQt5.msp: QQmlParserStatus is now defined as a Qt interface. [f14be28e462e] <5.0-maint> * PyQt5.msp, examples/richtext/textobject/textobject.py, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtGui/qpygui.pro, qpy/QtGui/qpytextobject.h, qpy/QtGui/qpytextobject.sip, sphinx/api_metadata.cfg, sphinx/index.rst, sphinx/pyqt4_differences.rst, sphinx/qt_interfaces.rst: QTextObjectInterface is now supported as an interface that is used as a mixin. Removed QPyTextObject as it is no longer needed. Updated the textobject.py example. [57bb15a5475d] <5.0-maint> 2013-07-20 Phil Thompson * Makefile, PyQt5.msp, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the initial implementation of the QtQuick module. [2a99e59669ee] <5.0-maint> * PyQt5.msp: Added the remaining QSG texture classes. [334127f294d9] <5.0-maint> 2013-07-19 Phil Thompson * Makefile, PyQt5.msp: Completed the implementation of QSGMaterialShader. [7bcb69ebcfc8] <5.0-maint> 2013-07-14 Phil Thompson * PyQt5.msp: More work on QSGMaterial and QSGGeometry. [9c09c69e011c] <5.0-maint> 2013-07-13 Phil Thompson * PyQt5.msp: Completed the support for QQuickWindow and QQuickItem. [770f796c0a61] <5.0-maint> * PyQt5.msp, lib/configure.py: Added the minimal QtQuick module. [1c3b391ebb72] <5.0-maint> 2013-07-12 Phil Thompson * NEWS, sphinx/index.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst, sphinx/qml.rst: Documented the QtQml module. [f6f498d697aa] <5.0-maint> * qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQml/qpyqmlsingletonobject.h: Implemented qmlRegisterSingletonType(). [7a2acb8c9a93] <5.0-maint> 2013-07-11 Phil Thompson * qpy/QtCore/qpycore_public_api.h, sphinx/extension_api.rst: Documented pyqt5_get_qmetaaobject(). [5beb97f61993] <5.0-maint> * qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_types.cpp, sphinx/signals_slots.rst: Added the revision argument to pyqtSlot(). [be2b6cd9bd25] <5.0-maint> * qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_types.cpp, sphinx/signals_slots.rst: Added the revision argument to pyqtSignal(). [c1f360ca39a1] <5.0-maint> * qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp, sphinx/qt_properties.rst: Implemented the revision argument to pyqtProperty(). [c8392c02c9b0] <5.0-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed qmlRegisterUncreatableType(). [5d1a0f917f11] <5.0-maint> * qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp: Completed the implementation of qmlRegisterType(), qmlRegisterRevision() and qmlRegisterUncreatableType(). [12800b23bc24] <5.0-maint> * Makefile, test/tests/classes/test_QQmlComponent.py: Added the start of the Qml unit tests. [e50b70a97479] <5.0-maint> * qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Tidied up the implementation of qmlRegisterType(). 20 types can now be registered. [91d2f136b7a5] <5.0-maint> * PyQt5.msp, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: The simple test to create a Python object from QML now works. [6cdb584a8a51] <5.0-maint> 2013-07-10 Phil Thompson * Makefile, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: More work on the implementation of qmlRegisterType(). [2ed50117bb0e] <5.0-maint> * Makefile, lib/configure.py, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Added initial support (ie. it compiles) for qmlRegisterType(). [4221776fc22b] <5.0-maint> 2013-07-09 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Added the QQmlExpression, QQmlListReference, QQmlProperty, QQmlPropertyMap and QQmlScriptString classes. [bfcd01be5691] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added the QQmlComponent, QQmlContext, QQmlEngine, QQmlError, QQmlIncubator, QQmlIncubatorControl, QQmlImageProviderBase and QQmlNetworkAccessManagerFactory classes. [06ff494f83cc] <5.0-maint> * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg: Added the start of the QtQml module containing the QJSEngine, QJSValue and QJSValueIterator classes. [7c4a6b081187] <5.0-maint> * PyQt5.msp: Removed the stub for QOpenGLFunctions as we still don't have an example where we can remove the dependency on PyOpenGL (because of glViewport() and glDrawArrays()). [6ccb0554b869] <5.0-maint> * examples/opengl/openglwindow.py: Updated the openglwindow.py example to use QOpenGLShaderProgram. [ddd7a0259c4a] <5.0-maint> * PyQt5.msp, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_attribute_array.cpp, sphinx/api_metadata.cfg: Completed the implementation of QOpenGLShaderProgram. [665fb10f93e1] <5.0-maint> 2013-07-08 Phil Thompson * PyQt5.msp, lib/configure.py, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp: Implemented more of QOpenGLShaderProgram. [b0afb72fc0ca] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added the QOpenGLBuffer, QOpenGLFramebufferObject, QOpenGLFramebufferFormat, QOpenGLPaintDevice and QOpenGLShader classes. Added stubs for the QOpenGLFunctions and QOpenGLShaderProgram classes. [5686e52f7350] <5.0-maint> 2013-07-07 Phil Thompson * PyQt5.msp, lib/configure.py: Backed out changeset c432a87e3a48, the correct fix is to SIP. [de3d55fb4945] <5.0-maint> * PyQt5.msp, lib/configure.py: Worked around a incompatibility with QProcess in Qt v5.1. [c432a87e3a48] <5.0-maint> 2013-07-06 Phil Thompson * Makefile, lib/configure.py: Improved the error message when configure.py detects an incorrect Qt version. Clean up __pycache__ directories. [3513f56e65bf] <5.0-maint> 2013-07-01 Phil Thompson * sphinx/multiinheritance.rst: Tweaked the docs. [cffb77db7dc1] <5.0-maint> * Makefile, PyQt5.msp, sphinx/gotchas.rst, sphinx/index.rst, sphinx/multiinheritance.rst, sphinx/pyqt4_differences.rst: Enabled call_super_init. Added the cooperative multi-inheritance section to the documentation. [a0323ed8bc1d] <5.0-maint> 2013-06-30 Phil Thompson * examples/xmlpatterns/schema/schema.py: Fixed bugs in the schema.py example. [0d3ae95c947b] <5.0-maint> * PyQt5.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qobject_getattr.cpp: Moved a const_cast closer to where it is needed. [c96b00d73380] <5.0-maint> * Makefile, PyQt5.msp, lib/configure.py, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_qobject_helpers.h: Changed the handling of QObject ctor keywords arguments so that it doesn't break cooperative multi-inheritance and is compatible with SIP v5. SIP v4.15 is now required. [8c442640f72e] <5.0-maint> * dbus/dbus.cpp: Fixed the names of the module init functions. [950cd70446a1] <5.0-maint> 2013-06-29 Phil Thompson * lib/configure.py: Fixed the previous fix so that the framework status is still checked. [901a31b124a3] <5.0-maint> 2013-06-28 Phil Thompson * lib/configure.py: Make sure that the --spec value passed to configure.py is always used. [fe4c612ae259] <5.0-maint> * examples/multimediawidgets/camera/camera.py, examples/multimediawidgets/camera/camera.ui, examples/multimediawidgets/camera/imagesettings.ui, examples/multimediawidgets/camera/ui_camera.py, examples/multimediawidgets/camera/ui_imagesettings.py, examples/multimediawidgets/camera/ui_videosettings.py, examples/multimediawidgets/camera/videosettings.ui, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the camera.py example. [e74dbc5074d0] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Removed QVideoWidgetControl. [8c268c606cc4] <5.0-maint> 2013-06-26 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Completed the implementation of the QtMultimedia module. [6a522f87648d] <5.0-maint> * PyQt5.msp: Added the radio classes. [9420fcb1da43] <5.0-maint> * PyQt5.msp: Removed QMediaControl as it seems pointless without a documented way to create a QMediaService. [b02de4d09d04] <5.0-maint> * PyQt5.msp: More QtMultimedia classes. [f52207a4280a] <5.0-maint> 2013-06-25 Phil Thompson * PyQt5.msp, examples/multimedia/audiooutput.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the audiooutput.py example. [23e2468a55f1] <5.0-maint> * examples/multimedia/README, examples/multimedia/audiodevices/audiodevices.py, examples/multimedia/audiodevices/audiodevicesbase.ui, examples/multimedia/audiodevices/ui_audiodevicesbase.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the audiodevices.py example. [8918a6427814] <5.0-maint> * lib/configure.py: Make the pyuic5 wrapper executable before running qmake so that the permissions don't get stripped when installing on Linux. [b5c2fb502885] <5.0-maint> 2013-06-23 Phil Thompson * dbus/dbus.cpp, dbus/dbus.sbf, dbus/helper.h, lib/configure.py, sphinx/dbus.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: The dbus.mainloop.qt module is now called dbus.mainloop.pyqt5 so that it can be installed side by side with the PyQt4 equivalent. [b72659988feb] <5.0-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, test/tests/metaobject/test_connections.py: Fixed the lack of exception when connect() is given a bad slot. [a4985399df5e] <5.0-maint> * examples/multimediawidgets/player.py, examples/multimediawidgets/videographicsitem.py, examples/multimediawidgets/videowidget.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the player.py example. [67351785a13c] <5.0-maint> * PyQt5.msp: Implemented some more of the QtMutimedia classes. [3e35bd4e468a] <5.0-maint> 2013-06-22 Phil Thompson * examples/graphicsview/elasticnodes.py, examples/qtdemo/itemcircleanimation.py, examples/threads/mandelbrot.py: Removed the calls to the QWheelEvent.delta() method in the examples. [562ea33d38e0] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Completed the QtMultimediaWidgets module. [d9d42fdc6b18] <5.0-maint> * build.py, contrib/lang/Makefile, contrib/lang/lang.py, contrib/lang/lang.qrc, contrib/lang/lang/cs_cs.qm, contrib/lang/lang/cs_cs.ts, contrib/lang/lang/da_da.qm, contrib/lang/lang/da_da.ts, contrib/lang/lang/de_ch.qm, contrib/lang/lang/de_ch.ts, contrib/lang/lang/de_de.qm, contrib/lang/lang/de_de.ts, contrib/lang/lang/en_gb.qm, contrib/lang/lang/en_gb.ts, contrib/lang/lang/en_us.qm, contrib/lang/lang/en_us.ts, contrib/lang/lang/es_es.qm, contrib/lang/lang/es_es.ts, contrib/lang/lang/et_et.qm, contrib/lang/lang/et_et.ts, contrib/lang/lang/fi_fi.qm, contrib/lang/lang/fi_fi.ts, contrib/lang/lang/fr_ca.qm, contrib/lang/lang/fr_ca.ts, contrib/lang/lang/fr_fr.qm, contrib/lang/lang/fr_fr.ts, contrib/lang/lang/hu_hu.qm, contrib/lang/lang/hu_hu.ts, contrib/lang/lang/it_it.qm, contrib/lang/lang/it_it.ts, contrib/lang/lang/nl_nl.qm, contrib/lang/lang/nl_nl.ts, contrib/lang/lang/no_no.qm, contrib/lang/lang/no_no.ts, contrib/lang/lang/pl_pl.qm, contrib/lang/lang/pl_pl.ts, contrib/lang/lang/pt_pt.qm, contrib/lang/lang/pt_pt.ts, contrib/lang/lang/sv_sv.qm, contrib/lang/lang/sv_sv.ts, contrib/lang/lang/tr_tr.qm, contrib/lang/lang/tr_tr.ts, contrib/lang/mainwindow.ui, contrib/pymodeltest/LICENSE.GPL, contrib/pymodeltest/README, contrib/pymodeltest/modeltest.py, contrib/sandbox/README, contrib/sandbox/sandbox.pyw: Removed the contrib directory. [591c9a622a71] <5.0-maint> * PyQt5.msp: Added %ConvertToSubClassCode for QGraphicsVideoItem. [de85f62e8967] <5.0-maint> * examples/multimediawidgets/videowidget.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the videowidget.py example. [9acd16b2bdce] <5.0-maint> * examples/multimedia/README, examples/multimedia/videographicsitem.py, examples/multimediawidgets/README, examples/multimediawidgets/videographicsitem.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: The QtMultimediaWidgets examples now go in their own directory. [891bb8122a11] <5.0-maint> * examples/multimedia/videographicsitem.py: Debugged the videographicsitem.py example. [d1e778504aab] <5.0-maint> * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/introduction.rst: Added the QtMultimediaWidgets module (with a subset of the classes). Added some of the new Qt5 QtMultimedia classes. [6bfb31f31b0d] <5.0-maint> * examples/multimedia/README, examples/multimedia/videographicsitem.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the (untested) videographicsitem.py example. [1eea557f6cad] <5.0-maint> * lib/configure.py: configure.py now checks the Qt version as soon as possible. [e1cf0c849548] <5.0-maint> 2013-06-21 Phil Thompson * PyQt5.msp: Manually fixed the project file for the parse state of all ignored QtMultimedia header files. [f02eb87af35c] <5.0-maint> 2013-06-16 Phil Thompson * .hgtags: Added tag 5.0 for changeset 785762fc2868 [5d5021bfff4c] * NEWS, Qt5-TODO.txt: Released as v5.0. [785762fc2868] [5.0] * Makefile, examples/designer/plugins/plugins.py: Fixed the plugins.py example so that it doesn't have to be run from the directory containing it. [2c51ab7a3c68] * examples/qtdemo/menumanager.py: Removed the Help support from qtdemo.py because of bugs in QtSql in Qt5 causing crashes on exit. [f5b9ce401532] 2013-06-15 Phil Thompson * build.py: Fix to the build system when creating source packages. [d700a2283637] * sphinx/pyqt4_differences.rst: Fixed a short label in the docs. [ca941a71d917] * PyQt5.msp, Qt5-TODO.txt, sphinx/api_metadata.cfg, sphinx/pyqt4_differences.rst: Removed the obsolete QtOpenGL classes. [1a15fc8788a9] * build.py, sphinx/api_metadata.cfg, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: Added the API metadata for all but the QtOpenGL module. [478d7f271b71] * Makefile, build.py, sphinx/api_metadata.cfg, sphinx/class_reference.rst: Updated build.py to read the API meta-data from a file. [4379f27de31d] * sphinx/class_reference.rst, sphinx/conf.py, sphinx/designer.rst, sphinx/index.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: Documentation updates including the skeleton structure of the class reference. [aa1ba2118845] 2013-06-14 Phil Thompson * Qt5-TODO.txt, sphinx/introduction.rst: Updated the reference guide relating to QtOpenGL. [7b37d453ec88] * PyQt5.msp, Qt5-TODO.txt, sphinx/buffer_interface.rst, sphinx/build_system.rst, sphinx/dbus.rst, sphinx/deploy_commercial.rst, sphinx/designer.rst, sphinx/extension_api.rst, sphinx/gotchas.rst, sphinx/i18n.rst, sphinx/incompatibilities.rst, sphinx/incompatible_apis.rst, sphinx/index.rst, sphinx/installation.rst, sphinx/introduction.rst, sphinx/keyword_arguments.rst, sphinx/new_style_signals_slots.rst, sphinx/old_style_signals_slots.rst, sphinx/pickle.rst, sphinx/pyqt4_differences.rst, sphinx/pyqt_qsettings.rst, sphinx/pyqt_qvariant.rst, sphinx/python_shell.rst, sphinx/python_v3.rst, sphinx/qml.rst, sphinx/qt_properties.rst, sphinx/qt_v5.rst, sphinx/resources.rst, sphinx/signals_slots.rst, sphinx/webkit.rst: Updated the reference guide. [f3e4f0cf5959] 2013-06-13 Phil Thompson * Makefile, build.py: Added build support for creating standalone documentation. [8322dc67c499] 2013-06-12 Phil Thompson * Qt5-TODO.txt, examples/designer/plugins/plugins.py, examples/qtdemo/menumanager.py: Fixed another use of QProcess.setEnvironment() in the examples. [18f7592450f7] * Qt5-TODO.txt, installers/PyQt5-Qt5-gpl.nsi: More installer fixes. [08445543af31] * examples/qtdemo/examplecontent.py, examples/qtdemo/menumanager.py: Windows and Python3 fixes for qtdemo.py. [94ea20102c8f] * lib/configure.py: Another fix for installing opengl_types.sip in the right place. [f87b6b02fd2c] * installers/PyQt5-Qt5-gpl.nsi, installers/qsci-pyqt5-config.bat, lib/configure.py: pylupdate5 and pyrcc5 now get built again. More out-of-tree build fixes. Installer fixes. [519d3934205d] * lib/configure.py, qpy/QtOpenGL/opengl_types.sip: Fixed the handling of OpenGL types with out-of-tree builds. [116f5369e841] * installers/BuildGPL.txt, lib/configure.py: Minor tweek to configure.py. [d71d7716da87] * Qt5-TODO.txt, lib/configure.py: Fixes for configure.py to handle debug builds on Windows. [86a3338117e0] * installers/PyQt5-Qt5-gpl.nsi: Updates to the installer to handle conflicts with PyQt4. [a4ae753bd3e3] 2013-06-11 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h: Proxied slots are now handled properly by the garbage collector. [67de01d44e88] * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Clear a benign exception that was tripping up the garbage collector. [8c527c6f681b] * Makefile, test/dbus/test_multibus.py, test/runtests.py, test/tests/classes/test_QObject.py, test/tests/classes/test_QSettings.py, test/tests/classes/test_QSignalSpy.py, test/tests/classes/test_QStringList.py, test/tests/classes/test_QVariant.py, test/tests/metaobject/test_connections.py, test/tests/metaobject/test_connections_old_style.py, test/tests/metaobject/test_connectslotsbyname.py, test/tests/metaobject/test_destroyed.py, test/tests/metaobject/test_gc_slots.py, test/tests/metaobject/test_invoke.py, test/tests/metaobject/test_pyqtproperty.py, test/tests/metaobject/test_pyqtsignal.py, test/tests/metaobject/test_pyqtsignature.py, test/tests/metaobject/test_pyqtslot.py, test/tests/metaobject/test_qvariantmap.py, test/tests/metaobject/test_sender.py, test/tests/metaobject/test_signal.py, test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py, test/tests/pyuic/test_pyuic.py, test/v2_unicode.py, test/v3_unicode.py: Ported the unit tests. [17137bd344c2] 2013-06-10 Phil Thompson * qpy/QtCore/qpycore_qmetaobject_helpers.cpp: Fixed QMetaObject.connectSlotsByName(). [ef6ebf8e9f8d] * PyQt5.msp: Fixed the QVariant ctors. [3350bac153b0] * PyQt5.msp, Qt5-TODO.txt: Updated to Qt v5.0.2. [a9f027d06f8b] 2013-06-08 Phil Thompson * PyQt5.msp: QSyntaxHighlighter.setCurrentBlockUserData() now keeps a reference to the document. [0debe193744d] * PyQt5.msp, Qt5-TODO.txt: Removed all qSwap() implementations. All QDataStream << and >> operators now release the GIL. [23e3a9f5433c] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_qpynullvariant.cpp, qpy/QtCore/qpycore_qpynullvariant.h, qpy/QtCore/qpynullvariant.sip: Implemented the new QVariant support. [c84a17f0d329] 2013-06-07 Phil Thompson * PyQt5.msp: Updated the project format to v4. [b0c3cafe79e0] 2013-06-06 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added support for QSignalSpy. [3a69020f1620] 2013-06-03 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h: Removed the unused argument from pyqt5_qobject_sender(). [cdc78cf84e0d] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_types.cpp: Removed the remaining support for pyqtSignature and __pyqtSignals__. [9d544b4c475d] * qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtproxy.cpp, qpy/QtCore/qpycore_pyqtproxy.h, qpy/QtCore/qpycore_qobject_getattr.cpp: Removed the old PyQtProxy implementation. [d1543cb6f559] 2013-06-02 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_sip_helpers.cpp, qpy/QtCore/qpycore_sip_helpers.h: Removed the legacy SIP helpers. [036f09c3b943] * Makefile, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/helloglwidget.py, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/elasticnodes.py, examples/graphicsview/padnavigator/padnavigator.py, examples/itemviews/spreadsheet/spreadsheet.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/widgets/tetrix.py, examples/xmlpatterns/schema/schema.py: Fixed some use of deprecated calls in the examples. [f860e211c790] * Makefile, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: Refactored the slot support so that doesn't used the support from SIP and only supports what can happen with new-style connections. [1579721f5e05] 2013-06-01 Phil Thompson * qpy/QtCore/qpycore_init.cpp: Temporarily disabled parts of the API that were used by the QtDeclarative module. [7af4bfe5aa42] * PyQt5.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_shared.h: Added pyqt5_from_argv_list() and pyqt5_update_argv_list() to the public API. [da24f909db1a] * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_shared.h, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp: Added pyqt5_from_qvariant_by_type() to the public API. [2dd262e0cd5c] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp: Added pyqt5_qobject_sender() and pyqt5_register_from_qvariant_convertor() to the public API. [66f421a3b6e7] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h: Changed the prefix of public API functions from qtcore_api_ to pyqt5_. [e32d69b5cc32] * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Fixed a bug in the handling of bound signals. [3cc1a7558a51] * qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h: Added the missing slot proxy implementation to the repo. [820b5f9d9b47] * PyQt5.msp, Qt5-TODO.txt: Deprecated SIP features are no longer used anywhere. [7aa4515516a4] * PyQt5.msp, Qt5-TODO.txt: Removed the use of deprecated SIP feature from all QtWidgets dialogs. [cf1c268f04cc] 2013-05-31 Phil Thompson * PyQt5.msp: The QtPrintSupport module no longer uses deprecated SIP features. [200f23469b4e] * Makefile, PyQt5.msp, examples/dbus/remotecontrolledcar/controller/ui_controller.py, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_shared.h: The QtDBus module no longer uses deprecated SIP features. [d8fb2e91a60b] * pyuic/uic/properties.py: Fixed pyuic5's handling of margins. [dd808c1bcced] * Makefile, PyQt5.msp: The QtNetwork module no longer uses deprecated SIP features. [8b15f81ccc85] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_shared.h: The QtCore modules no longer uses the deprecated SIP features. [631505f300c6] * Makefile, PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_shared.h: qtimer.sip no longer uses the deprecated SIP support. Added QObject.disconnect(). [bab5304e0ff1] 2013-05-30 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h: Removed connect(), disconnect() and emit() from QObject. Removed SIGNAL() and SLOT(). QObject.receivers() now takes a signal argument rather than the output of SIGNAL(). Added the infrastructure for the public API. [12dc206d7ff6] 2013-05-28 Phil Thompson * Qt5-TODO.txt, examples/qtdemo/colors.py, examples/qtdemo/mainwindow.py: qtdemo.py now only uses software rendering. [29ad9b391d27] * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the openglwindow.py example to qtdemo.py. [b5dd1edaeef4] * examples/opengl/openglwindow.py: Added the openglwindow.py example. [c40a6f2ed560] * PyQt5.msp: Added the missing %PostInitialisationCode to the QtGui module. [61727b76007a] * PyQt5.msp, lib/configure.py: Added QOpenGLContext and QOpenGLContextGroup to QtGui. [50c926bd4d3f] 2013-05-27 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added QTemporaryDir to QtCore. [b5eed4b461b8] * PyQt5.msp: Updated QMutex. [7af8195ab193] * PyQt5.msp: Added QMimeDatabase and QMimeType to QtCore. [32a91aa8c689] * PyQt5.msp, lib/SubclassCode/QtCore.versions, qpy/QtCore/qwineventnotifier.sip: Fixed the sub-class convertor code for QWinEventNotifier. [1d9649254821] * lib/SubclassCode/mksccode.py: Fixed mksccode.py to handle optional classes whose super-class is QObject. [fc5f5053c426] * PyQt5.msp: Updated findChild() and findChildren(). [af265098377b] 2013-05-26 Phil Thompson * PyQt5.msp: Added QRegularExpression, QRegularExpressionMatch and QRegularExpressionMatchIterator to QtCore. [744a790e2c26] * PyQt5.msp: Added QEventLoopLocker to QtCore. [fade28309590] * PyQt5.msp, Qt5-TODO.txt: Added QBackingStore, QInputMethod, QPdfWriter and QStyleHints to QtGui. [408493dfd7db] * PyQt5.msp: Added QScroller and QScrollerProperties to QtWidgets. [fa49e60c4e92] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qmessagelogger.cpp: qDebug() etc. now use the correct Python context. [00bf19f063d2] * PyQt5.msp: Split qlogging.sip out from qglobal.sip. Implemented qInstalleMessageHandler, QMessageLogContext and QMessageLogger. [29629f01a51f] 2013-05-25 Phil Thompson * PyQt5.msp: Broke the qsysinfo.h contents out from qglobal.h. [daa956d2a33d] 2013-05-21 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: The QDataStream methods that handle qint8 and quint8 types now interpret them as numeric values rather than single character strings. [c9b76fc250ce] * PyQt5.msp, Qt5-TODO.txt: Added support for QTouchSequence. [cbe60f53ab07] * PyQt5.msp: Updated QtTest to support testing QWindows. [5383cc77757c] * PyQt5.msp, Qt5-TODO.txt: Updated QtGui for all API elements that use QWindow. [d9a9af037a33] 2013-05-20 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added support for the QSurface, QSurfaceFormat and QWindow classes. [4c23a9d62c5a] * PyQt5.msp, Qt5-TODO.txt, examples/qtdemo/examplecontent.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/xml/README, examples/xml/dombookmarks/dombookmarks.py, examples/xml/dombookmarks/frank.xbel, examples/xml/dombookmarks/jennifer.xbel, examples/xml/saxbookmarks/frank.xbel, examples/xml/saxbookmarks/jennifer.xbel, examples/xml/saxbookmarks/saxbookmarks.py, lib/configure.py: Removed the QtXml module. [b83926ccd7cb] * PyQt5.msp, Qt5-TODO.txt, examples/declarative/minehunt/MinehuntCore/Explosion.qml, examples/declarative/minehunt/MinehuntCore/Tile.qml, examples/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/declarative/minehunt/MinehuntCore/pics/back.png, examples/declarative/minehunt/MinehuntCore/pics/bomb-color.png, examples/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile-big.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile.png, examples/declarative/minehunt/MinehuntCore/pics/flag-color.png, examples/declarative/minehunt/MinehuntCore/pics/flag.png, examples/declarative/minehunt/MinehuntCore/pics/front.png, examples/declarative/minehunt/MinehuntCore/pics/quit.png, examples/declarative/minehunt/MinehuntCore/pics/star.png, examples/declarative/minehunt/MinehuntCore/qmldir, examples/declarative/minehunt/minehunt.py, examples/declarative/minehunt/minehunt.qml, examples/declarative/modelviews/objectlistmodel/objectlistmodel.py, examples/declarative/modelviews/objectlistmodel/objectlistmodel.qrc, examples/declarative/modelviews/objectlistmodel/objectlistmodel_rc.p y, examples/declarative/modelviews/objectlistmodel/view.qml, examples/declarative/samegame/SamegameCore/BoomBlock.qml, examples/declarative/samegame/SamegameCore/Button.qml, examples/declarative/samegame/SamegameCore/Dialog.qml, examples/declarative/samegame/SamegameCore/pics/background.png, examples/declarative/samegame/SamegameCore/pics/blueStar.png, examples/declarative/samegame/SamegameCore/pics/blueStone.png, examples/declarative/samegame/SamegameCore/pics/greenStar.png, examples/declarative/samegame/SamegameCore/pics/greenStone.png, examples/declarative/samegame/SamegameCore/pics/redStar.png, examples/declarative/samegame/SamegameCore/pics/redStone.png, examples/declarative/samegame/SamegameCore/pics/star.png, examples/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/declarative/samegame/SamegameCore/qmldir, examples/declarative/samegame/SamegameCore/samegame.js, examples/declarative/samegame/highscores/README, examples/declarative/samegame/highscores/score_data.xml, examples/declarative/samegame/highscores/score_style.xsl, examples/declarative/samegame/highscores/scores.php, examples/declarative/samegame/samegame.qml, examples/declarative/toys/README, examples/declarative/toys/clocks/clocks.qml, examples/declarative/toys/clocks/content/Clock.qml, examples/declarative/toys/clocks/content/QuitButton.qml, examples/declarative/toys/clocks/content/background.png, examples/declarative/toys/clocks/content/center.png, examples/declarative/toys/clocks/content/clock-night.png, examples/declarative/toys/clocks/content/clock.png, examples/declarative/toys/clocks/content/hour.png, examples/declarative/toys/clocks/content/minute.png, examples/declarative/toys/clocks/content/quit.png, examples/declarative/toys/clocks/content/second.png, examples/declarative/toys/corkboards/Day.qml, examples/declarative/toys/corkboards/cork.jpg, examples/declarative/toys/corkboards/corkboards.qml, examples/declarative/toys/corkboards/note-yellow.png, examples/declarative/toys/corkboards/tack.png, examples/declarative/toys/dynamicscene/Button.qml, examples/declarative/toys/dynamicscene/GenericSceneItem.qml, examples/declarative/toys/dynamicscene/PaletteItem.qml, examples/declarative/toys/dynamicscene/PerspectiveItem.qml, examples/declarative/toys/dynamicscene/Sun.qml, examples/declarative/toys/dynamicscene/dynamicscene.qml, examples/declarative/toys/dynamicscene/images/face-smile.png, examples/declarative/toys/dynamicscene/images/moon.png, examples/declarative/toys/dynamicscene/images/rabbit_brown.png, examples/declarative/toys/dynamicscene/images/rabbit_bw.png, examples/declarative/toys/dynamicscene/images/star.png, examples/declarative/toys/dynamicscene/images/sun.png, examples/declarative/toys/dynamicscene/images/tree_s.png, examples/declarative/toys/dynamicscene/itemCreation.js, examples/declarative/toys/tic-tac-toe/content/Button.qml, examples/declarative/toys/tic-tac-toe/content/TicTac.qml, examples/declarative/toys/tic-tac-toe/content/pics/board.png, examples/declarative/toys/tic-tac-toe/content/pics/o.png, examples/declarative/toys/tic-tac-toe/content/pics/x.png, examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js, examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml, examples/declarative/toys/tvtennis/tvtennis.qml, examples/declarative/ui-components/README, examples/declarative/ui- components/dialcontrol/content/Dial.qml, examples/declarative/ui- components/dialcontrol/content/QuitButton.qml, examples/declarative /ui-components/dialcontrol/content/background.png, examples/declarative/ui-components/dialcontrol/content/needle.png, examples/declarative/ui- components/dialcontrol/content/needle_shadow.png, examples/declarative/ui-components/dialcontrol/content/overlay.png, examples/declarative/ui-components/dialcontrol/content/quit.png, examples/declarative/ui-components/dialcontrol/dialcontrol.qml, examples/declarative/ui-components/flipable/content/5_heart.png, examples/declarative/ui-components/flipable/content/9_club.png, examples/declarative/ui-components/flipable/content/Card.qml, examples/declarative/ui-components/flipable/content/back.png, examples/declarative/ui-components/flipable/flipable.qml, examples/declarative/ui- components/progressbar/content/ProgressBar.qml, examples/declarative /ui-components/progressbar/content/background.png, examples/declarative/ui-components/progressbar/main.qml, examples/declarative/ui-components/scrollbar/ScrollBar.qml, examples/declarative/ui-components/scrollbar/main.qml, examples/declarative/ui-components/scrollbar/niagara_falls.jpg, examples/declarative/ui-components/searchbox/SearchBox.qml, examples/declarative/ui-components/searchbox/images/clear.png, examples/declarative/ui-components/searchbox/images/lineedit-bg- focus.png, examples/declarative/ui-components/searchbox/images /lineedit-bg.png, examples/declarative/ui- components/searchbox/main.qml, examples/declarative/ui- components/slideswitch/content/Switch.qml, examples/declarative/ui- components/slideswitch/content/background.svg, examples/declarative /ui-components/slideswitch/content/knob.svg, examples/declarative /ui-components/slideswitch/slideswitch.qml, examples/declarative/ui- components/spinner/content/Spinner.qml, examples/declarative/ui- components/spinner/content/spinner-bg.png, examples/declarative/ui- components/spinner/content/spinner-select.png, examples/declarative /ui-components/spinner/main.qml, examples/declarative/ui- components/tabwidget/TabWidget.qml, examples/declarative/ui- components/tabwidget/main.qml, examples/declarative/ui- components/tabwidget/tab.png, examples/qtdemo/menumanager.py, examples/qtdemo/qmlShell.qml, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc.py, lib/configure.py, qpy/QtDeclarative/qpydeclarative.pro, qpy/QtDeclarative/qpydeclarative_api.h, qpy/QtDeclarative/qpydeclarative_chimera_helpers.cpp, qpy/QtDeclarative/qpydeclarative_chimera_helpers.h, qpy/QtDeclarative/qpydeclarative_listwrapper.cpp, qpy/QtDeclarative/qpydeclarative_listwrapper.h, qpy/QtDeclarative/qpydeclarative_post_init.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.h, qpy/QtDeclarative/qpydeclarativelistproperty.sip, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.h, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.sip: Removed QtDeclarative. [fa3ac0a64e09] * PyQt5.msp, Qt5-TODO.txt, examples/script/README, examples/script/helloscript.py, lib/configure.py: Removed the QtScript and QtScriptTools modules. [8e5764df83df] * pylupdate/translator.h: Fixed the compiler warning messages from pylupdate. [ee49c8ae893f] * PyQt5.msp, Qt5-TODO.txt: Removed support for QMatrix. [29512282f3c3] 2013-05-18 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Removed remaining parts of the API that are part of the compatibility layer. [82a5ee70a4f3] * PyQt5.msp, Qt5-TODO.txt: Removed support for deprecated (as opposed to obsolete) parts of the API. [4e8c4499a9ee] * PyQt5.msp, Qt5-TODO.txt: Fixed QPixmapCache.find(). [a320fdbc45b9] * PyQt5.msp, Qt5-TODO.txt, examples/mainwindows/application/application.py, examples/mainwindows/dockwidgets/dockwidgets.py, examples/mainwindows/mdi/mdi.py, examples/qtdemo/demoitem.py, examples/qtdemo/demoscene.py, examples/qtdemo/demotextitem.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/scanitem.py, examples/qtdemo/textbutton.py, examples/webkit/fancybrowser/fancybrowser.py, examples/webkit/formextractor/formextractor.py: Removed all parts of the API marked as obsolete. Updated qtdemo.py not to use any obsolete calls. [2d237a7da2f4] 2013-05-17 Phil Thompson * PyQt5.msp: Removed the deprecated QGraphicsItemAnimation. [84eb34c80f46] * examples/qtdemo/colors.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/menumanager.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: qtdemo.py no longer uses the deprecated QGraphicsItemAnimation. [7149eefd1fe8] * examples/qtdemo/demoitem.py, examples/qtdemo/textbutton.py: DemoItem is now a QGraphicsObject. [f5a12cb364ad] * examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/examplecontent.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/menucontent.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: Refactored DemoItem in preparation for subclassing from QGraphicsObject. [12ef1f22debf] * examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/menumanager.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: Refactored DemoItemAnimation in preparation for removing the dependency on QGraphicsItemAnimation. [857a57eb41a0] 2013-05-16 Phil Thompson * examples/qtdemo/colors.py, examples/qtdemo/demoitem.py, examples/qtdemo/demotextitem.py, examples/qtdemo/dockitem.py, examples/qtdemo/examplecontent.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/scanitem.py, examples/qtdemo/textbutton.py: Removed the obsolete passing around of the scene. [49dc741ba538] * examples/embedded/lightmaps.py, examples/network/lightmaps.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Moved the lightmaps.py example to the network category. [997d9560dea5] * examples/qtdemo/mainwindow.py, examples/qtdemo/menumanager.py: Removed some PyQt4 specific hacks from qtdemo.py. [05abb8647b3b] * Makefile, PyQt5.msp, Qt5-TODO.txt: Removed the code that tracked certain widgets in an attempt to delete things in the right order when the QApplication instance was being destroyed. [9e3abbcd7b7e] * examples/qtdemo/colors.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menumanager.py: qtdemo.py basically works. [9333a816276f] * Qt5-TODO.txt: Updated the TODO list. [c1673e305a89] * examples/declarative/toys/README, examples/declarative/ui- components/README, examples/designer/plugins/python/multipagewidgetplugin.py, examples/tutorials/addressbook/README: Removed the last remaining references to PyQt4 in the examples. [5ffe74c1d33b] * examples/qtdemo/colors.py, examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/demoscene.py, examples/qtdemo/demotextitem.py, examples/qtdemo/dockitem.py, examples/qtdemo/examplecontent.py, examples/qtdemo/guide.py, examples/qtdemo/guidecircle.py, examples/qtdemo/guideline.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/qtdemo_rc2.py, examples/qtdemo/qtdemo_rc3.py, examples/qtdemo/scanitem.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: Initial update of qtdemo.py. [4d70ea6fed11] 2013-05-15 Phil Thompson * examples/demos/README, examples/demos/qtdemo/colors.py, examples/demos/qtdemo/demoitem.py, examples/demos/qtdemo/demoitemanimation.py, examples/demos/qtdemo/demoscene.py, examples/demos/qtdemo/demotextitem.py, examples/demos/qtdemo/dockitem.py, examples/demos/qtdemo/examplecontent.py, examples/demos/qtdemo/guide.py, examples/demos/qtdemo/guidecircle.py, examples/demos/qtdemo/guideline.py, examples/demos/qtdemo/headingitem.py, examples/demos/qtdemo/imageitem.py, examples/demos/qtdemo/images/demobg.png, examples/demos/qtdemo/images/qtlogo_small.png, examples/demos/qtdemo/images/trolltech-logo.png, examples/demos/qtdemo/itemcircleanimation.py, examples/demos/qtdemo/letteritem.py, examples/demos/qtdemo/mainwindow.py, examples/demos/qtdemo/menucontent.py, examples/demos/qtdemo/menumanager.py, examples/demos/qtdemo/qmlShell.qml, examples/demos/qtdemo/qtdemo.py, examples/demos/qtdemo/qtdemo.qrc, examples/demos/qtdemo/qtdemo_rc2.py, examples/demos/qtdemo/qtdemo_rc3.py, examples/demos/qtdemo/scanitem.py, examples/demos/qtdemo/score.py, examples/demos/qtdemo/textbutton.py, examples/demos/qtdemo/xml/examples.xml, examples/qtdemo/colors.py, examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/demoscene.py, examples/qtdemo/demotextitem.py, examples/qtdemo/dockitem.py, examples/qtdemo/examplecontent.py, examples/qtdemo/guide.py, examples/qtdemo/guidecircle.py, examples/qtdemo/guideline.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/images/demobg.png, examples/qtdemo/images/qtlogo_small.png, examples/qtdemo/images /trolltech-logo.png, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/qmlShell.qml, examples/qtdemo/qtdemo.py, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc2.py, examples/qtdemo/qtdemo_rc3.py, examples/qtdemo/scanitem.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py, examples/qtdemo/xml/examples.xml, installers/PyQt5-Qt5-gpl.nsi: Moved the qtdemo demo so there is no longer a demos directory. [03b9dced2481] * examples/demos/qtdemo/xml/examples.xml, examples/demos/textedit/example.html, examples/demos/textedit/images/logo.png, examples/demos/textedit/images/logo32.png, examples/demos/textedit/images/mac/editcopy.png, examples/demos/textedit/images/mac/editcut.png, examples/demos/textedit/images/mac/editpaste.png, examples/demos/textedit/images/mac/editredo.png, examples/demos/textedit/images/mac/editundo.png, examples/demos/textedit/images/mac/exportpdf.png, examples/demos/textedit/images/mac/filenew.png, examples/demos/textedit/images/mac/fileopen.png, examples/demos/textedit/images/mac/fileprint.png, examples/demos/textedit/images/mac/filesave.png, examples/demos/textedit/images/mac/textbold.png, examples/demos/textedit/images/mac/textcenter.png, examples/demos/textedit/images/mac/textitalic.png, examples/demos/textedit/images/mac/textjustify.png, examples/demos/textedit/images/mac/textleft.png, examples/demos/textedit/images/mac/textright.png, examples/demos/textedit/images/mac/textunder.png, examples/demos/textedit/images/mac/zoomin.png, examples/demos/textedit/images/mac/zoomout.png, examples/demos/textedit/images/win/editcopy.png, examples/demos/textedit/images/win/editcut.png, examples/demos/textedit/images/win/editpaste.png, examples/demos/textedit/images/win/editredo.png, examples/demos/textedit/images/win/editundo.png, examples/demos/textedit/images/win/exportpdf.png, examples/demos/textedit/images/win/filenew.png, examples/demos/textedit/images/win/fileopen.png, examples/demos/textedit/images/win/fileprint.png, examples/demos/textedit/images/win/filesave.png, examples/demos/textedit/images/win/textbold.png, examples/demos/textedit/images/win/textcenter.png, examples/demos/textedit/images/win/textitalic.png, examples/demos/textedit/images/win/textjustify.png, examples/demos/textedit/images/win/textleft.png, examples/demos/textedit/images/win/textright.png, examples/demos/textedit/images/win/textunder.png, examples/demos/textedit/images/win/zoomin.png, examples/demos/textedit/images/win/zoomout.png, examples/demos/textedit/textedit.py, examples/demos/textedit/textedit.qrc, examples/demos/textedit/textedit_rc2.py, examples/demos/textedit/textedit_rc3.py, examples/richtext/textedit/example.html, examples/richtext/textedit/images/logo.png, examples/richtext/textedit/images/logo32.png, examples/richtext/textedit/images/mac/editcopy.png, examples/richtext/textedit/images/mac/editcut.png, examples/richtext/textedit/images/mac/editpaste.png, examples/richtext/textedit/images/mac/editredo.png, examples/richtext/textedit/images/mac/editundo.png, examples/richtext/textedit/images/mac/exportpdf.png, examples/richtext/textedit/images/mac/filenew.png, examples/richtext/textedit/images/mac/fileopen.png, examples/richtext/textedit/images/mac/fileprint.png, examples/richtext/textedit/images/mac/filesave.png, examples/richtext/textedit/images/mac/textbold.png, examples/richtext/textedit/images/mac/textcenter.png, examples/richtext/textedit/images/mac/textitalic.png, examples/richtext/textedit/images/mac/textjustify.png, examples/richtext/textedit/images/mac/textleft.png, examples/richtext/textedit/images/mac/textright.png, examples/richtext/textedit/images/mac/textunder.png, examples/richtext/textedit/images/mac/zoomin.png, examples/richtext/textedit/images/mac/zoomout.png, examples/richtext/textedit/images/win/editcopy.png, examples/richtext/textedit/images/win/editcut.png, examples/richtext/textedit/images/win/editpaste.png, examples/richtext/textedit/images/win/editredo.png, examples/richtext/textedit/images/win/editundo.png, examples/richtext/textedit/images/win/exportpdf.png, examples/richtext/textedit/images/win/filenew.png, examples/richtext/textedit/images/win/fileopen.png, examples/richtext/textedit/images/win/fileprint.png, examples/richtext/textedit/images/win/filesave.png, examples/richtext/textedit/images/win/textbold.png, examples/richtext/textedit/images/win/textcenter.png, examples/richtext/textedit/images/win/textitalic.png, examples/richtext/textedit/images/win/textjustify.png, examples/richtext/textedit/images/win/textleft.png, examples/richtext/textedit/images/win/textright.png, examples/richtext/textedit/images/win/textunder.png, examples/richtext/textedit/images/win/zoomin.png, examples/richtext/textedit/images/win/zoomout.png, examples/richtext/textedit/textedit.py, examples/richtext/textedit/textedit.qrc, examples/richtext/textedit/textedit_rc.py: Updated the richtext.py demo. [ec5054cef278] * examples/demos/qtdemo/xml/examples.xml, examples/demos/spreadsheet/images/interview.png, examples/demos/spreadsheet/printview.py, examples/demos/spreadsheet/spreadsheet.py, examples/demos/spreadsheet/spreadsheet.qrc, examples/demos/spreadsheet/spreadsheet_rc2.py, examples/demos/spreadsheet/spreadsheet_rc3.py, examples/demos/spreadsheet/spreadsheetdelegate.py, examples/demos/spreadsheet/spreadsheetitem.py, examples/demos/spreadsheet/util.py, examples/itemviews/spreadsheet/images/interview.png, examples/itemviews/spreadsheet/printview.py, examples/itemviews/spreadsheet/spreadsheet.py, examples/itemviews/spreadsheet/spreadsheet.qrc, examples/itemviews/spreadsheet/spreadsheet_rc.py, examples/itemviews/spreadsheet/spreadsheetdelegate.py, examples/itemviews/spreadsheet/spreadsheetitem.py, examples/itemviews/spreadsheet/util.py: Updated the spreadsheet.py example. [c2f9d4c351ba] * examples/demos/embedded/lightmaps.py, examples/embedded/lightmaps.py: Moved the lightmaps.py demo. [9e961be64807] * examples/declarative/minehunt/MinehuntCore/Explosion.qml, examples/declarative/minehunt/MinehuntCore/Tile.qml, examples/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/declarative/minehunt/MinehuntCore/pics/back.png, examples/declarative/minehunt/MinehuntCore/pics/bomb-color.png, examples/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile-big.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile.png, examples/declarative/minehunt/MinehuntCore/pics/flag-color.png, examples/declarative/minehunt/MinehuntCore/pics/flag.png, examples/declarative/minehunt/MinehuntCore/pics/front.png, examples/declarative/minehunt/MinehuntCore/pics/quit.png, examples/declarative/minehunt/MinehuntCore/pics/star.png, examples/declarative/minehunt/MinehuntCore/qmldir, examples/declarative/minehunt/minehunt.py, examples/declarative/minehunt/minehunt.qml, examples/declarative/samegame/SamegameCore/BoomBlock.qml, examples/declarative/samegame/SamegameCore/Button.qml, examples/declarative/samegame/SamegameCore/Dialog.qml, examples/declarative/samegame/SamegameCore/pics/background.png, examples/declarative/samegame/SamegameCore/pics/blueStar.png, examples/declarative/samegame/SamegameCore/pics/blueStone.png, examples/declarative/samegame/SamegameCore/pics/greenStar.png, examples/declarative/samegame/SamegameCore/pics/greenStone.png, examples/declarative/samegame/SamegameCore/pics/redStar.png, examples/declarative/samegame/SamegameCore/pics/redStone.png, examples/declarative/samegame/SamegameCore/pics/star.png, examples/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/declarative/samegame/SamegameCore/qmldir, examples/declarative/samegame/SamegameCore/samegame.js, examples/declarative/samegame/highscores/README, examples/declarative/samegame/highscores/score_data.xml, examples/declarative/samegame/highscores/score_style.xsl, examples/declarative/samegame/highscores/scores.php, examples/declarative/samegame/samegame.qml, examples/demos/declarative/minehunt/MinehuntCore/Explosion.qml, examples/demos/declarative/minehunt/MinehuntCore/Tile.qml, examples/demos/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/demos/declarative/minehunt/MinehuntCore/pics/back.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb- color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-smile- big.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face- smile.png, examples/demos/declarative/minehunt/MinehuntCore/pics /flag-color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/flag.png, examples/demos/declarative/minehunt/MinehuntCore/pics/front.png, examples/demos/declarative/minehunt/MinehuntCore/pics/quit.png, examples/demos/declarative/minehunt/MinehuntCore/pics/star.png, examples/demos/declarative/minehunt/MinehuntCore/qmldir, examples/demos/declarative/minehunt/minehunt.py, examples/demos/declarative/minehunt/minehunt.qml, examples/demos/declarative/samegame/SamegameCore/BoomBlock.qml, examples/demos/declarative/samegame/SamegameCore/Button.qml, examples/demos/declarative/samegame/SamegameCore/Dialog.qml, example s/demos/declarative/samegame/SamegameCore/pics/background.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStar.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStone.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStar.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStone.png , examples/demos/declarative/samegame/SamegameCore/pics/redStar.png, examples/demos/declarative/samegame/SamegameCore/pics/redStone.png, examples/demos/declarative/samegame/SamegameCore/pics/star.png, exam ples/demos/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/demos/declarative/samegame/SamegameCore/qmldir, examples/demos/declarative/samegame/SamegameCore/samegame.js, examples/demos/declarative/samegame/highscores/README, examples/demos/declarative/samegame/highscores/score_data.xml, examples/demos/declarative/samegame/highscores/score_style.xsl, examples/demos/declarative/samegame/highscores/scores.php, examples/demos/declarative/samegame/samegame.qml, examples/demos/qtdemo/xml/examples.xml: Moved the declarative demos to the declarative examples. [de4d2ee69036] * examples/demos/embeddeddialogs/No-Ones-Laughing-3.jpg, examples/demos/embeddeddialogs/embeddeddialog.py, examples/demos/embeddeddialogs/embeddeddialog.ui, examples/demos/embeddeddialogs/embeddeddialogs.py, examples/demos/embeddeddialogs/embeddeddialogs.qrc, examples/demos/embeddeddialogs/embeddeddialogs_rc.py, examples/demos/qtdemo/xml/examples.xml, examples/graphicsview/embeddeddialogs/No-Ones-Laughing-3.jpg, examples/graphicsview/embeddeddialogs/embeddeddialog.py, examples/graphicsview/embeddeddialogs/embeddeddialog.ui, examples/graphicsview/embeddeddialogs/embeddeddialogs.py, examples/graphicsview/embeddeddialogs/embeddeddialogs.qrc, examples/graphicsview/embeddeddialogs/embeddeddialogs_rc.py: Moved the embeddeddialogs demo to the graphicsview examples. [f4df98190d50] * examples/demos/embeddeddialogs/embeddeddialog.py, examples/demos/embeddeddialogs/embeddeddialogs.py, examples/demos/embeddeddialogs/embeddeddialogs_rc.py, examples/demos/embeddeddialogs/embeddeddialogs_rc2.py, examples/demos/embeddeddialogs/embeddeddialogs_rc3.py: Updated the embeddeddialogs.py demo. [30580c7f89b8] * examples/demos/embedded/lightmaps.py: Updated the lightmaps.py example. [0369ce3c4e98] * PyQt5.msp: Added support for QStandardPaths. [aaef91f631de] * examples/demos/declarative/minehunt/minehunt.py: Updated the minehunt.py example. [8d430da208a7] * examples/xmlpatterns/schema/schema.py, examples/xmlpatterns/schema/schema_rc.py, examples/xmlpatterns/schema/schema_rc2.py, examples/xmlpatterns/schema/schema_rc3.py, examples/xmlpatterns/schema/ui_schema.py: Updated the xmlpatterns example. [609c81ebfc0c] * examples/xml/dombookmarks/dombookmarks.py, examples/xml/saxbookmarks/saxbookmarks.py: Updated the xml examples. [d81ecf65893f] * examples/widgets/analogclock.py, examples/widgets/calculator.py, examples/widgets/calendarwidget.py, examples/widgets/charactermap.py, examples/widgets/digitalclock.py, examples/widgets/groupbox.py, examples/widgets/icons/icons.py, examples/widgets/imageviewer.py, examples/widgets/lineedits.py, examples/widgets/movie/movie.py, examples/widgets/scribble.py, examples/widgets/shapedclock.py, examples/widgets/sliders.py, examples/widgets/spinboxes.py, examples/widgets/styles.py, examples/widgets/stylesheet/stylesheet.py, examples/widgets/stylesheet/stylesheet_rc.py, examples/widgets/stylesheet/stylesheet_rc2.py, examples/widgets/stylesheet/stylesheet_rc3.py, examples/widgets/stylesheet/stylesheeteditor.py, examples/widgets/stylesheet/ui_mainwindow.py, examples/widgets/stylesheet/ui_stylesheeteditor.py, examples/widgets/tetrix.py, examples/widgets/tooltips/tooltips.py, examples/widgets/tooltips/tooltips_rc.py, examples/widgets/tooltips/tooltips_rc2.py, examples/widgets/tooltips/tooltips_rc3.py, examples/widgets/wiggly.py, examples/widgets/windowflags.py: Updated the widgets examples. [d2f301ac201a] * examples/tools/regexp.py: Fixed the regexp.py example so that the close button works. [8fede383c772] 2013-05-14 Phil Thompson * examples/webkit/README, examples/webkit/domtraversal/domtraversal.py, examples/webkit/domtraversal/ui_window.py, examples/webkit/fancybrowser/fancybrowser.py, examples/webkit/fancybrowser/jquery_rc.py, examples/webkit/fancybrowser/jquery_rc2.py, examples/webkit/fancybrowser/jquery_rc3.py, examples/webkit/formextractor/formextractor.py, examples/webkit/formextractor/formextractor_rc.py, examples/webkit/formextractor/formextractor_rc2.py, examples/webkit/formextractor/formextractor_rc3.py, examples/webkit/formextractor/ui_formextractor.py, examples/webkit/framecapture.py, examples/webkit/googlechat/form.ui, examples/webkit/googlechat/googlechat.py, examples/webkit/googlechat/ui_form.py, examples/webkit/previewer/previewer.py, examples/webkit/previewer/ui_previewer.py, examples/webkit/simpleselector/simpleselector.py, examples/webkit/simpleselector/ui_window.py: Updated the webkit examples. However formextractor.py and simpleselector.py crash but this maybe due to Qt bugs (although the C++ versions seem to be Ok). [70aa9e5575f0] * PyQt5.msp: Removed a wrong /Transfer/ annotation from QWebFrame.addToJavaScriptWindowObject(). [595fc25030b6] * examples/tutorials/addressbook/part1.py, examples/tutorials/addressbook/part2.py, examples/tutorials/addressbook/part3.py, examples/tutorials/addressbook/part4.py, examples/tutorials/addressbook/part5.py, examples/tutorials/addressbook/part6.py, examples/tutorials/addressbook/part7.py: Updated the tutorials example. [3507ed3a4178] * examples/tools/codecs/codecs.py, examples/tools/customcompleter/customcompleter.py, examples/tools/customcompleter/customcompleter_rc.py, examples/tools/customcompleter/customcompleter_rc2.py, examples/tools/customcompleter/customcompleter_rc3.py, examples/tools/i18n/i18n.py, examples/tools/i18n/i18n_rc.py, examples/tools/i18n/i18n_rc2.py, examples/tools/i18n/i18n_rc3.py, examples/tools/regexp.py, examples/tools/settingseditor/settingseditor.py: Updated the tools examples. [67da45febe99] * examples/threads/mandelbrot.py, examples/threads/semaphores.py, examples/threads/waitconditions.py: Updated the threads examples. [9d668a2d5f1e] * examples/sql/cachedtable.py, examples/sql/connection.py, examples/sql/querymodel.py, examples/sql/relationaltablemodel.py, examples/sql/tablemodel.py: Updated the sql examples. [cfee8e97f2b0] * examples/script/helloscript.py: Updated the script example. [edc67efd321e] * examples/richtext/calendar.py, examples/richtext/orderform.py, examples/richtext/syntaxhighlighter.py, examples/richtext/textobject/textobject.py: Updated the richtext examples. [68202805ef7d] * examples/pyuic/compile-on-the-fly.py, examples/pyuic/demo.ui, examples/pyuic/load_ui1.py, examples/pyuic/load_ui2.py: Updated the pyuic examples. [37fa592b6de2] * examples/painting/basicdrawing/basicdrawing.py, examples/painting/basicdrawing/basicdrawing_rc.py, examples/painting/basicdrawing/basicdrawing_rc2.py, examples/painting/basicdrawing/basicdrawing_rc3.py, examples/painting/concentriccircles.py, examples/painting/painterpaths.py, examples/painting/svgviewer/svgviewer.py, examples/painting/svgviewer/svgviewer_rc.py, examples/painting/svgviewer/svgviewer_rc2.py, examples/painting/svgviewer/svgviewer_rc3.py, examples/painting/transformations.py: Updated the painting examples. [1dc59a60cc5a] 2013-05-13 Phil Thompson * examples/phonon/README, examples/phonon/capabilities.py, examples/phonon/musicplayer.py: Removed the phonon examples. [66e123471275] * examples/opengl/2dpainting.py, examples/opengl/grabber.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/opengl/samplebuffers.py, examples/opengl/textures/textures.py, examples/opengl/textures/textures_rc.py, examples/opengl/textures/textures_rc2.py, examples/opengl/textures/textures_rc3.py: Updated the opengl examples. [56994aef7046] * examples/README, examples/activeqt/README, examples/animation/README, examples/demos/README, examples/designer/README, examples/desktop/README, examples/dialogs/README, examples/draganddrop/README, examples/effects/README, examples/graphicsview/README, examples/ipc/README, examples/itemviews/README, examples/layouts/README, examples/mainwindows/README, examples/network/README, examples/network/blockingfortuneclient.py, examples/network/broadcastreceiver.py, examples/network/broadcastsender.py, examples/network/fortuneclient.py, examples/network/fortuneserver.py, examples/network/ftp/ftp.py, examples/network/ftp/ftp.qrc, examples/network/ftp/ftp_rc2.py, examples/network/ftp/ftp_rc3.py, examples/network/ftp/images/cdtoparent.png, examples/network/ftp/images/dir.png, examples/network/ftp/images/file.png, examples/network/http/http.py, examples/network/loopback.py, examples/network/threadedfortuneserver.py, examples/opengl/README, examples/painting/README, examples/phonon/README, examples/richtext/README, examples/script/README, examples/sql/README, examples/threads/README, examples/tools/README, examples/widgets/README, examples/xml/README, examples/xmlpatterns/README: Updated the network examples. [17ed9232524b] 2013-05-12 Phil Thompson * examples/mainwindows/application/application.py, examples/mainwindows/application/application_rc.py, examples/mainwindows/application/application_rc2.py, examples/mainwindows/application/application_rc3.py, examples/mainwindows/dockwidgets/dockwidgets.py, examples/mainwindows/dockwidgets/dockwidgets_rc.py, examples/mainwindows/dockwidgets/dockwidgets_rc2.py, examples/mainwindows/dockwidgets/dockwidgets_rc3.py, examples/mainwindows/mdi/mdi.py, examples/mainwindows/mdi/mdi_rc.py, examples/mainwindows/mdi/mdi_rc2.py, examples/mainwindows/mdi/mdi_rc3.py, examples/mainwindows/menus.py, examples/mainwindows/recentfiles.py, examples/mainwindows/sdi/sdi.py, examples/mainwindows/sdi/sdi_rc.py, examples/mainwindows/sdi/sdi_rc2.py, examples/mainwindows/sdi/sdi_rc3.py, examples/mainwindows/separations.py: Updated the mainwindows examples. [4fa26f6310ae] * examples/layouts/basiclayouts.py, examples/layouts/borderlayout.py, examples/layouts/flowlayout.py: Updated the layouts examples. [b710b235f26d] * examples/itemviews/basicsortfiltermodel.py, examples/itemviews/chart/chart.py, examples/itemviews/chart/chart_rc.py, examples/itemviews/chart/chart_rc2.py, examples/itemviews/chart/chart_rc3.py, examples/itemviews/coloreditorfactory.py, examples/itemviews/combowidgetmapper.py, examples/itemviews/customsortfiltermodel.py, examples/itemviews/dirview.py, examples/itemviews/editabletreemodel/editabletreemodel.py, examples/itemviews/editabletreemodel/editabletreemodel_rc.py, examples/itemviews/editabletreemodel/editabletreemodel_rc2.py, examples/itemviews/editabletreemodel/editabletreemodel_rc3.py, examples/itemviews/editabletreemodel/ui_mainwindow.py, examples/itemviews/fetchmore.py, examples/itemviews/pixelator/pixelator.py, examples/itemviews/pixelator/pixelator_rc.py, examples/itemviews/pixelator/pixelator_rc2.py, examples/itemviews/pixelator/pixelator_rc3.py, examples/itemviews/puzzle/puzzle.py, examples/itemviews/puzzle/puzzle_rc.py, examples/itemviews/puzzle/puzzle_rc2.py, examples/itemviews/puzzle/puzzle_rc3.py, examples/itemviews/simpledommodel.py, examples/itemviews/simpletreemodel/simpletreemodel.py, examples/itemviews/simpletreemodel/simpletreemodel_rc.py, examples/itemviews/simpletreemodel/simpletreemodel_rc2.py, examples/itemviews/simpletreemodel/simpletreemodel_rc3.py, examples/itemviews/simplewidgetmapper.py, examples/itemviews/spinboxdelegate.py, examples/itemviews/stardelegate.py: Updated the itemviews examples. [9a82c6b6c206] * examples/ipc/localfortuneclient.py, examples/ipc/localfortuneserver.py, examples/ipc/sharedmemory/dialog.py, examples/ipc/sharedmemory/sharedmemory.py: Updated the ipc examples. [51e1605974ae] 2013-05-05 Phil Thompson * examples/graphicsview/padnavigator/backside.ui, examples/graphicsview/padnavigator/form.ui, examples/graphicsview/padnavigator/padnavigator.py, examples/graphicsview/padnavigator/padnavigator_rc.py, examples/graphicsview/padnavigator/padnavigator_rc2.py, examples/graphicsview/padnavigator/padnavigator_rc3.py, examples/graphicsview/padnavigator/ui_backside.py, examples/graphicsview/padnavigator/ui_form.py: Updated the padnavigator.py example. [dd29bc79def2] * PyQt5.msp: Several fixes for properly tracking QPropertyAnimation instances. Several fixes for properly handling the parent relationships of transitions. [f0b3dedbb506] * examples/graphicsview/elasticnodes.py: Updated the elasticnodes.py example. [b0831183bf83] * PyQt5.msp: Added the missing Type and UserType to QGraphicsItem. [57a15a6a1562] * QAxContainer/QAxContainermod.sip, QAxContainer/qaxwidget.sip: QAxContainer fixes for PyQt5. [74eb89bd4fb2] * installers/pyqt5-config.bat: Fixed pyqt5-config.bat. [2f55460b7aba] * examples/graphicsview/diagramscene/diagramscene.py, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc2.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc3.py: Updated the dragdroprobot.py example. [8870ed27b984] * installers/BuildGPL.txt, installers/qsci-config.bat, installers /qsci-pyqt5-config.bat: More installer updates. [2eaf68f6a2e8] * installers/BuildGPL.txt, installers/pyqt-check.py, installers/pyqt- config.bat, installers/pyqt5-check.py, installers/pyqt5-config.bat, installers/sip-config.bat, installers/sip-pyqt5-config.bat: Updated the installer docs configuration scripts for PyQt5. [6b2d127117e5] * build.py: Fixed the previous change. [f4c1ed30ad7d] * build.py: Changed the format of the name of a snapshot to match other packages. [735211c341dd] * examples/graphicsview/diagramscene/diagramscene.py, examples/graphicsview/diagramscene/diagramscene_rc.py, examples/graphicsview/diagramscene/diagramscene_rc2.py, examples/graphicsview/diagramscene/diagramscene_rc3.py: Updated the diagramscene.py example. [94f191b56126] * examples/graphicsview/collidingmice/collidingmice.py, examples/graphicsview/collidingmice/mice_rc.py, examples/graphicsview/collidingmice/mice_rc2.py, examples/graphicsview/collidingmice/mice_rc3.py: Updated the collidingmouse.py example. [dcf139d2a4f2] * examples/graphicsview/anchorlayout.py: Updated the anchorlayout.py example. [951da62e51cd] 2013-05-04 Phil Thompson * examples/effects/lighting.py: Updated the lighting.py example. [36e50731bdd0] * examples/draganddrop/puzzle/puzzle.py, examples/draganddrop/puzzle/puzzle_rc.py, examples/draganddrop/puzzle/puzzle_rc2.py, examples/draganddrop/puzzle/puzzle_rc3.py: Updated the puzzle.py example. [2eb7204b878d] * examples/draganddrop/dropsite.py, examples/draganddrop/fridgemagnets/fridgemagnets.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc2.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc3.py: Updated the fridgemagnets.py example. [45b96eb4dfe5] * examples/draganddrop/draggabletext/draggabletext.py, examples/draganddrop/draggabletext/draggabletext_rc.py, examples/draganddrop/draggabletext/draggabletext_rc2.py, examples/draganddrop/draggabletext/draggabletext_rc3.py: Updated the draggabletext.py example. [4e560c89eb82] * examples/draganddrop/draggableicons/draggableicons.py, examples/draganddrop/draggableicons/draggableicons_rc.py, examples/draganddrop/draggableicons/draggableicons_rc2.py, examples/draganddrop/draggableicons/draggableicons_rc3.py: Updated the draggableicons.py example. [9483b75a05c6] * examples/draganddrop/delayedencoding/delayedencoding.py, examples/draganddrop/delayedencoding/delayedencoding_rc.py, examples/draganddrop/delayedencoding/delayedencoding_rc2.py, examples/draganddrop/delayedencoding/delayedencoding_rc3.py: Updated the delayedencoding.py example. [b588fe1a4afd] * examples/dialogs/trivialwizard.py: Updated the trivialwizard.py example. [5a07f1e46607] * examples/dialogs/tabdialog.py: Updated the tabdialog.py example. [833ac17ac8fa] * examples/dialogs/standarddialogs.py: Updated the standarddialogs.py example. [05f085d04ad0] * examples/dialogs/findfiles.py: Updated the findfiles.py example. [6ef07cd09834] * examples/dialogs/extension.py: Updated the extension.py example. [76898b56b744] * examples/dialogs/configdialog/configdialog.py, examples/dialogs/configdialog/configdialog_rc.py, examples/dialogs/configdialog/configdialog_rc2.py, examples/dialogs/configdialog/configdialog_rc3.py: Updated the configdialog.py example. [90003346d304] * examples/dialogs/classwizard/classwizard.py, examples/dialogs/classwizard/classwizard_rc.py, examples/dialogs/classwizard/classwizard_rc2.py, examples/dialogs/classwizard/classwizard_rc3.py: Updated the classwizard.py example. [b4f1babe9513] * examples/desktop/systray/images/bad.png, examples/desktop/systray/images/bad.svg, examples/desktop/systray/images/heart.png, examples/desktop/systray/images/heart.svg, examples/desktop/systray/images/trash.png, examples/desktop/systray/images/trash.svg, examples/desktop/systray/systray.py, examples/desktop/systray/systray.qrc, examples/desktop/systray/systray_rc.py, examples/desktop/systray/systray_rc2.py, examples/desktop/systray/systray_rc3.py: Updated the systray.py example. [63266a59e774] * Qt5-TODO.txt, examples/desktop/screenshot.py: Updated the screenshot.py example. [f0d706faeaf8] * designer/pluginloader.cpp, designer/pluginloader.h, designer/python .pro-in, installers/PyQt5-Qt5-gpl.nsi: Updated the Qt Designer Python plugin for PyQt5. [13fc7007e2e1] * examples/designer/plugins/plugins.py, examples/designer/plugins/python/analogclockplugin.py, examples/designer/plugins/python/bubbleswidgetplugin.py, examples/designer/plugins/python/counterlabelplugin.py, examples/designer/plugins/python/datetimeeditplugin.py, examples/designer/plugins/python/helloglwidgetplugin.py, examples/designer/plugins/python/highlightedtexteditplugin.py, examples/designer/plugins/python/multipagewidgetplugin.py, examples/designer/plugins/python/polygonwidgetplugin.py, examples/designer/plugins/python/pydemoplugin.py, examples/designer/plugins/python/pythonconsoleplugin.py, examples/designer/plugins/widgets/analogclock.py, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/counterlabel.py, examples/designer/plugins/widgets/datetimeedit.py, examples/designer/plugins/widgets/helloglwidget.py, examples/designer/plugins/widgets/highlightedtextedit.py, examples/designer/plugins/widgets/multipagewidget.py, examples/designer/plugins/widgets/polygonwidget.py, examples/designer/plugins/widgets/pydemo.py, examples/designer/plugins/widgets/pythonconsolewidget.py: Updated the plugins.py example. [0621efd149fc] * examples/designer/calculatorform/calculatorform.py, examples/designer/calculatorform/ui_calculatorform.py: Updated the calculatorform.py example. [950978fbdba4] * examples/declarative/modelviews/objectlistmodel/objectlistmodel.py, e xamples/declarative/modelviews/objectlistmodel/objectlistmodel_rc.py , examples/declarative/modelviews/objectlistmodel/objectlistmodel_rc 2.py, examples/declarative/modelviews/objectlistmodel/objectlistmode l_rc3.py: Updated the objectlistmodel.py example. [ea57e6a3e242] 2013-05-03 Phil Thompson * examples/dbus/remotecontrolledcar/car/car.py, examples/dbus/remotecontrolledcar/controller/controller.py, examples/dbus/remotecontrolledcar/controller/ui_controller.py: Updated the remotecontrolledcar example. [808da6e6f117] * examples/dbus/pingpong/ping.py, examples/dbus/pingpong/pong.py: Updated the pingpong example. [12131d11ac01] * examples/dbus/listnames.py: Updated the listname.py example. [e64adc3c51d6] * examples/dbus/chat/chat.py, examples/dbus/chat/chatmainwindow.ui, examples/dbus/chat/ui_chatmainwindow.py, examples/dbus/chat/ui_chatsetnickname.py: Updated the chat.py example. [fd1e12a91493] * installers/BuildGPL.txt: Updated the installer notes regarding Qt 5.0.2 installation bugs. [f686f54765aa] * pyuic/uic/properties.py: Fix to the previous fix which was PyQt4 specific. [0b7f4feca737] 2013-05-02 Phil Thompson * pyuic/uic/properties.py: Backed out a pyuic5 change so that .ui files created by Qt Designer prior to v4.3 can still be handled. [e79c0c532f3e] * Qt5-TODO.txt, examples/animation/stickman/stickman.py, examples/animation/stickman/stickman_rc.py, examples/animation/stickman/stickman_rc2.py, examples/animation/stickman/stickman_rc3.py: Updated the stickman.py example. [3976f1aa9e2f] * examples/animation/states/states.py, examples/animation/states/states_rc.py, examples/animation/states/states_rc2.py, examples/animation/states/states_rc3.py: Updated the states.py example. [ec420e524416] * examples/animation/moveblocks.py: Updated the moveblocks.py example. [dae4e83bc570] * examples/animation/animatedtiles/animatedtiles.py, examples/animation/appchooser/appchooser.py, examples/animation/easing/easing.py, examples/animation/easing/easing_rc.py, examples/animation/easing/easing_rc2.py, examples/animation/easing/easing_rc3.py, examples/animation/easing/form.ui, examples/animation/easing/ui_form.py: Updated the easing.py example. [3ed6c3313bfa] * examples/animation/appchooser/appchooser.py, examples/animation/appchooser/appchooser_rc.py, examples/animation/appchooser/appchooser_rc2.py, examples/animation/appchooser/appchooser_rc3.py: Updated the appchooser.py example. [39bfe5aa8be1] * examples/activeqt/webbrowser/webbrowser.py, examples/animation/animatedtiles/animatedtiles.py, examples/animation/animatedtiles/animatedtiles_rc.py, examples/animation/animatedtiles/animatedtiles_rc2.py, examples/animation/animatedtiles/animatedtiles_rc3.py: Updated the animatedtiles.py example. [59c8a26a0b41] * Qt5-TODO.txt, examples/activeqt/webbrowser/mainwindow_rc.py, examples/activeqt/webbrowser/mainwindow_rc2.py, examples/activeqt/webbrowser/mainwindow_rc3.py, examples/activeqt/webbrowser/ui_mainwindow.py, examples/activeqt/webbrowser/webbrowser.py: Updated the activeqt examples. [9578fffd0970] * Makefile, Qt5-TODO.txt, lib/configure.py, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/loader.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/exceptions.py, pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/invoke.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v2/proxy_base.py, pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py, pyuic/uic/port_v3/proxy_base.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py: pyuic5 now uses relative imports throughout. [4a1fcf0692c1] * Qt5-TODO.txt, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/uiparser.py: pyuic5 now uses new-style signal connections. [e46cc7cf20da] * pyuic/uic/Compiler/qtproxies.py, pyuic/uic/widget- plugins/qtprintsupport.py: Moved the pyuic support for QtPrintSupport classes to a separate plugin. [8c7f068d41fc] 2013-05-01 Phil Thompson * Makefile, Qt5-TODO.txt, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/as_string.py, pyuic/uic/port_v3/as_string.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py, pyuic/uic/widget-plugins/phonon.py, pyuic/uic/widget- plugins/qtwebkit.py: Updated pyuic for PyQt5. [f2a13577dc76] * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtDeclarative/qpydeclarative_post_init.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.cpp: Updated type objects to refer to PyQt5. Removed remaining references to PyQt4 in strings. [ae097f4e7c86] * installers/PyQt5-Qt5-gpl.nsi: Updated the Windows installer. [4b2182d32457] * Makefile, Qt5-TODO.txt, qpy/QtCore/qpycore_post_init.cpp.in: Call sipSetDestroyOnExit(0) on initialisation. [6e6dc5602337] * Makefile, PyQt5.msp, Qt5-TODO.txt: Removed the implementation of QSet (as it was there for QtMobility). QSet implementations now always use Python set objects. [ed773507d3a4] * PyQt5.msp, Qt5-TODO.txt: Updated the docstrings to reflect the updated API version support. [d56eb3f2e743] * PyQt5.msp, Qt5-TODO.txt, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpynullvariant.sip: Stripped out the support for the various v1 APIs. [fc729edff1c6] 2013-04-30 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Updated the remaining %ConvertToSubClassCode. [122e8bd052e2] * PyQt5.msp: Updated the %ConvertToSubClassCode for all QObject derived classes. [95ab26300286] * PyQt5.msp, Qt5-TODO.txt, lib/SubclassCode/QtGui.versions, lib/SubclassCode/QtGuiQt4.versions, lib/SubclassCode/QtNetwork.versions, lib/SubclassCode/QtPrintSupport.versions, lib/configure.py: Updated the supported features and made sure the remaining ones are applied where needed. [bf764c6fabc2] 2013-04-29 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added a missing /Transfer/ from QStandardItemModel.invisibleRootItem(). [d1df8f38fcfb] * PyQt5.msp, Qt5-TODO.txt: Removed all code specific to Python earlier than v2.6. [911d7106cb25] * PyQt5.msp, Qt5-TODO.txt, designer/python.pro-in, lib/configure.py, qpy/QtDesigner/qpydesigner.pro: Completed the project restructure. Added the new modules to the build system. [f17ee2a44642] * PyQt5.msp, lib/configure.py: Removed the phonon and QtAssistant modules. Added the QtPrintSupport, QtWebKitWidgets and QtWidgets modules. Reassigned the header files to the new modules. Removed (unimplemented) support for static plugins. [a5cd5130a3ef] * PyQt5.msp, Qt5-TODO.txt: Removed all the unused header files. [9c872bd80a39] 2013-04-28 Phil Thompson * PyQt5.msp, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, Qt5-TODO.txt, qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.sip: Stripped out all remaining Qt4 specific code and API items. [4001b637e5e3] * PyQt5.msp: qabstractnativeeventfilter.h doesn't need parsing. [f3fca0f11bf5] 2013-04-27 Phil Thompson * PyQt5.msp: Added the historical Qt_4_1_0 version tag. [84436fb6ca22] 2013-04-25 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Updated the installer to include the qminimal.dll platform plugin. [553a88d5d8dd] * Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproxy.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_qabstracteventdispatcher.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_sip_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, qpy/QtDeclarative/qpydeclarativelistproperty.cpp, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp: Removed all Qt4 and earlier than Python v2.6 specific code from the qpy support libraries. [834b61dd5472] * PyQt5.msp, lib/configure.py: Removed support for Qt4 features deprecated in Qt5. The SIP requirement is now for v4.14.7 to avoid a bug triggered by PyQt5. [fdbfb94b63ec] 2013-04-23 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Connections to partial slots of objects in a different thread are now handled correctly. [632d7398e654] * lib/configure.py: Directories are now ignored when searching for qmake and sip. [9329bbaaeb65] * lib/configure.py: Checking for modules is now tolerant of qmake failing to create a makefile which can happen with an unsupported Qt5 module. [9e54734d1e24] 2013-04-22 Phil Thompson * Makefile, Qt5-TODO.txt, build.py: Source packages are no longer platform specific. [2ab4a5ae1714] * build.py: Fix the initial version number. [4a88db09cdc1] * Makefile, build.py: Fixes to build.py so that a source package gets created. [ec8a0d7d131a] * .hgignore, Makefile, NEWS, PyQt5.msp, QAxContainer/QAxContainermod.sip, QAxContainer/qaxbase.sip, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, Qt5-TODO.txt, build.py, configurations/rpi_py3.cfg, contrib/lang/Makefile, contrib/lang/lang.py, contrib/lang/lang.qrc, contrib/lang/lang/cs_cs.qm, contrib/lang/lang/cs_cs.ts, contrib/lang/lang/da_da.qm, contrib/lang/lang/da_da.ts, contrib/lang/lang/de_ch.qm, contrib/lang/lang/de_ch.ts, contrib/lang/lang/de_de.qm, contrib/lang/lang/de_de.ts, contrib/lang/lang/en_gb.qm, contrib/lang/lang/en_gb.ts, contrib/lang/lang/en_us.qm, contrib/lang/lang/en_us.ts, contrib/lang/lang/es_es.qm, contrib/lang/lang/es_es.ts, contrib/lang/lang/et_et.qm, contrib/lang/lang/et_et.ts, contrib/lang/lang/fi_fi.qm, contrib/lang/lang/fi_fi.ts, contrib/lang/lang/fr_ca.qm, contrib/lang/lang/fr_ca.ts, contrib/lang/lang/fr_fr.qm, contrib/lang/lang/fr_fr.ts, contrib/lang/lang/hu_hu.qm, contrib/lang/lang/hu_hu.ts, contrib/lang/lang/it_it.qm, contrib/lang/lang/it_it.ts, contrib/lang/lang/nl_nl.qm, contrib/lang/lang/nl_nl.ts, contrib/lang/lang/no_no.qm, contrib/lang/lang/no_no.ts, contrib/lang/lang/pl_pl.qm, contrib/lang/lang/pl_pl.ts, contrib/lang/lang/pt_pt.qm, contrib/lang/lang/pt_pt.ts, contrib/lang/lang/sv_sv.qm, contrib/lang/lang/sv_sv.ts, contrib/lang/lang/tr_tr.qm, contrib/lang/lang/tr_tr.ts, contrib/lang/mainwindow.ui, contrib/pymodeltest/LICENSE.GPL, contrib/pymodeltest/README, contrib/pymodeltest/modeltest.py, contrib/sandbox/README, contrib/sandbox/sandbox.pyw, dbus/dbus.cpp, dbus/dbus.sbf, dbus/helper.h, designer/pluginloader.cpp, designer/pluginloader.h, designer/python.pro-in, examples/README, examples/activeqt/README, examples/activeqt/webbrowser/icons/image0.xpm, examples/activeqt/webbrowser/icons/image1.xpm, examples/activeqt/webbrowser/icons/image2.xpm, examples/activeqt/webbrowser/icons/image3.xpm, examples/activeqt/webbrowser/icons/image4.xpm, examples/activeqt/webbrowser/icons/image5.xpm, examples/activeqt/webbrowser/icons/image6.xpm, examples/activeqt/webbrowser/mainwindow.qrc, examples/activeqt/webbrowser/mainwindow.ui, examples/activeqt/webbrowser/mainwindow_rc2.py, examples/activeqt/webbrowser/mainwindow_rc3.py, examples/activeqt/webbrowser/ui_mainwindow.py, examples/activeqt/webbrowser/webbrowser.py, examples/animation/README, examples/animation/animatedtiles/animatedtiles.py, examples/animation/animatedtiles/animatedtiles.qrc, examples/animation/animatedtiles/animatedtiles_rc2.py, examples/animation/animatedtiles/animatedtiles_rc3.py, examples/animation/animatedtiles/images/Time-For-Lunch-2.jpg, examples/animation/animatedtiles/images/centered.png, examples/animation/animatedtiles/images/ellipse.png, examples/animation/animatedtiles/images/figure8.png, examples/animation/animatedtiles/images/kinetic.png, examples/animation/animatedtiles/images/random.png, examples/animation/animatedtiles/images/tile.png, examples/animation/appchooser/accessories-dictionary.png, examples/animation/appchooser/akregator.png, examples/animation/appchooser/appchooser.py, examples/animation/appchooser/appchooser.qrc, examples/animation/appchooser/appchooser_rc2.py, examples/animation/appchooser/appchooser_rc3.py, examples/animation/appchooser/digikam.png, examples/animation/appchooser/k3b.png, examples/animation/easing/easing.py, examples/animation/easing/easing.qrc, examples/animation/easing/easing_rc2.py, examples/animation/easing/easing_rc3.py, examples/animation/easing/form.ui, examples/animation/easing/images /qt-logo.png, examples/animation/easing/ui_form.py, examples/animation/moveblocks.py, examples/animation/states /accessories-dictionary.png, examples/animation/states/akregator.png, examples/animation/states/digikam.png, examples/animation/states /help-browser.png, examples/animation/states/k3b.png, examples/animation/states/kchart.png, examples/animation/states/states.py, examples/animation/states/states.qrc, examples/animation/states/states_rc2.py, examples/animation/states/states_rc3.py, examples/animation/stickman/animations/chilling, examples/animation/stickman/animations/dancing, examples/animation/stickman/animations/dead, examples/animation/stickman/animations/jumping, examples/animation/stickman/stickman.py, examples/animation/stickman/stickman.qrc, examples/animation/stickman/stickman_rc2.py, examples/animation/stickman/stickman_rc3.py, examples/dbus/chat/chat.py, examples/dbus/chat/chatmainwindow.ui, examples/dbus/chat/chatsetnickname.ui, examples/dbus/chat/ui_chatmainwindow.py, examples/dbus/chat/ui_chatsetnickname.py, examples/dbus/listnames.py, examples/dbus/pingpong/ping.py, examples/dbus/pingpong/pong.py, examples/dbus/remotecontrolledcar/car/car.py, examples/dbus/remotecontrolledcar/controller/controller.py, examples/dbus/remotecontrolledcar/controller/controller.ui, examples/dbus/remotecontrolledcar/controller/ui_controller.py, examples/declarative/modelviews/objectlistmodel/objectlistmodel.py, examples/declarative/modelviews/objectlistmodel/objectlistmodel.qrc, examples/declarative/modelviews/objectlistmodel/objectlistmodel_rc2. py, examples/declarative/modelviews/objectlistmodel/objectlistmodel_ rc3.py, examples/declarative/modelviews/objectlistmodel/view.qml, examples/declarative/toys/README, examples/declarative/toys/clocks/clocks.qml, examples/declarative/toys/clocks/content/Clock.qml, examples/declarative/toys/clocks/content/QuitButton.qml, examples/declarative/toys/clocks/content/background.png, examples/declarative/toys/clocks/content/center.png, examples/declarative/toys/clocks/content/clock-night.png, examples/declarative/toys/clocks/content/clock.png, examples/declarative/toys/clocks/content/hour.png, examples/declarative/toys/clocks/content/minute.png, examples/declarative/toys/clocks/content/quit.png, examples/declarative/toys/clocks/content/second.png, examples/declarative/toys/corkboards/Day.qml, examples/declarative/toys/corkboards/cork.jpg, examples/declarative/toys/corkboards/corkboards.qml, examples/declarative/toys/corkboards/note-yellow.png, examples/declarative/toys/corkboards/tack.png, examples/declarative/toys/dynamicscene/Button.qml, examples/declarative/toys/dynamicscene/GenericSceneItem.qml, examples/declarative/toys/dynamicscene/PaletteItem.qml, examples/declarative/toys/dynamicscene/PerspectiveItem.qml, examples/declarative/toys/dynamicscene/Sun.qml, examples/declarative/toys/dynamicscene/dynamicscene.qml, examples/declarative/toys/dynamicscene/images/face-smile.png, examples/declarative/toys/dynamicscene/images/moon.png, examples/declarative/toys/dynamicscene/images/rabbit_brown.png, examples/declarative/toys/dynamicscene/images/rabbit_bw.png, examples/declarative/toys/dynamicscene/images/star.png, examples/declarative/toys/dynamicscene/images/sun.png, examples/declarative/toys/dynamicscene/images/tree_s.png, examples/declarative/toys/dynamicscene/itemCreation.js, examples/declarative/toys/tic-tac-toe/content/Button.qml, examples/declarative/toys/tic-tac-toe/content/TicTac.qml, examples/declarative/toys/tic-tac-toe/content/pics/board.png, examples/declarative/toys/tic-tac-toe/content/pics/o.png, examples/declarative/toys/tic-tac-toe/content/pics/x.png, examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js, examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml, examples/declarative/toys/tvtennis/tvtennis.qml, examples/declarative/ui-components/README, examples/declarative/ui- components/dialcontrol/content/Dial.qml, examples/declarative/ui- components/dialcontrol/content/QuitButton.qml, examples/declarative /ui-components/dialcontrol/content/background.png, examples/declarative/ui-components/dialcontrol/content/needle.png, examples/declarative/ui- components/dialcontrol/content/needle_shadow.png, examples/declarative/ui-components/dialcontrol/content/overlay.png, examples/declarative/ui-components/dialcontrol/content/quit.png, examples/declarative/ui-components/dialcontrol/dialcontrol.qml, examples/declarative/ui-components/flipable/content/5_heart.png, examples/declarative/ui-components/flipable/content/9_club.png, examples/declarative/ui-components/flipable/content/Card.qml, examples/declarative/ui-components/flipable/content/back.png, examples/declarative/ui-components/flipable/flipable.qml, examples/declarative/ui- components/progressbar/content/ProgressBar.qml, examples/declarative /ui-components/progressbar/content/background.png, examples/declarative/ui-components/progressbar/main.qml, examples/declarative/ui-components/scrollbar/ScrollBar.qml, examples/declarative/ui-components/scrollbar/main.qml, examples/declarative/ui-components/scrollbar/niagara_falls.jpg, examples/declarative/ui-components/searchbox/SearchBox.qml, examples/declarative/ui-components/searchbox/images/clear.png, examples/declarative/ui-components/searchbox/images/lineedit-bg- focus.png, examples/declarative/ui-components/searchbox/images /lineedit-bg.png, examples/declarative/ui- components/searchbox/main.qml, examples/declarative/ui- components/slideswitch/content/Switch.qml, examples/declarative/ui- components/slideswitch/content/background.svg, examples/declarative /ui-components/slideswitch/content/knob.svg, examples/declarative /ui-components/slideswitch/slideswitch.qml, examples/declarative/ui- components/spinner/content/Spinner.qml, examples/declarative/ui- components/spinner/content/spinner-bg.png, examples/declarative/ui- components/spinner/content/spinner-select.png, examples/declarative /ui-components/spinner/main.qml, examples/declarative/ui- components/tabwidget/TabWidget.qml, examples/declarative/ui- components/tabwidget/main.qml, examples/declarative/ui- components/tabwidget/tab.png, examples/demos/README, examples/demos/declarative/minehunt/MinehuntCore/Explosion.qml, examples/demos/declarative/minehunt/MinehuntCore/Tile.qml, examples/demos/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/demos/declarative/minehunt/MinehuntCore/pics/back.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb- color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-smile- big.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face- smile.png, examples/demos/declarative/minehunt/MinehuntCore/pics /flag-color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/flag.png, examples/demos/declarative/minehunt/MinehuntCore/pics/front.png, examples/demos/declarative/minehunt/MinehuntCore/pics/quit.png, examples/demos/declarative/minehunt/MinehuntCore/pics/star.png, examples/demos/declarative/minehunt/MinehuntCore/qmldir, examples/demos/declarative/minehunt/minehunt.py, examples/demos/declarative/minehunt/minehunt.qml, examples/demos/declarative/samegame/SamegameCore/BoomBlock.qml, examples/demos/declarative/samegame/SamegameCore/Button.qml, examples/demos/declarative/samegame/SamegameCore/Dialog.qml, example s/demos/declarative/samegame/SamegameCore/pics/background.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStar.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStone.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStar.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStone.png , examples/demos/declarative/samegame/SamegameCore/pics/redStar.png, examples/demos/declarative/samegame/SamegameCore/pics/redStone.png, examples/demos/declarative/samegame/SamegameCore/pics/star.png, exam ples/demos/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/demos/declarative/samegame/SamegameCore/qmldir, examples/demos/declarative/samegame/SamegameCore/samegame.js, examples/demos/declarative/samegame/highscores/README, examples/demos/declarative/samegame/highscores/score_data.xml, examples/demos/declarative/samegame/highscores/score_style.xsl, examples/demos/declarative/samegame/highscores/scores.php, examples/demos/declarative/samegame/samegame.qml, examples/demos/embedded/lightmaps.py, examples/demos/embeddeddialogs /No-Ones-Laughing-3.jpg, examples/demos/embeddeddialogs/embeddeddialog.py, examples/demos/embeddeddialogs/embeddeddialog.ui, examples/demos/embeddeddialogs/embeddeddialogs.py, examples/demos/embeddeddialogs/embeddeddialogs.qrc, examples/demos/embeddeddialogs/embeddeddialogs_rc2.py, examples/demos/embeddeddialogs/embeddeddialogs_rc3.py, examples/demos/qtdemo/colors.py, examples/demos/qtdemo/demoitem.py, examples/demos/qtdemo/demoitemanimation.py, examples/demos/qtdemo/demoscene.py, examples/demos/qtdemo/demotextitem.py, examples/demos/qtdemo/dockitem.py, examples/demos/qtdemo/examplecontent.py, examples/demos/qtdemo/guide.py, examples/demos/qtdemo/guidecircle.py, examples/demos/qtdemo/guideline.py, examples/demos/qtdemo/headingitem.py, examples/demos/qtdemo/imageitem.py, examples/demos/qtdemo/images/demobg.png, examples/demos/qtdemo/images/qtlogo_small.png, examples/demos/qtdemo/images/trolltech-logo.png, examples/demos/qtdemo/itemcircleanimation.py, examples/demos/qtdemo/letteritem.py, examples/demos/qtdemo/mainwindow.py, examples/demos/qtdemo/menucontent.py, examples/demos/qtdemo/menumanager.py, examples/demos/qtdemo/qmlShell.qml, examples/demos/qtdemo/qtdemo.py, examples/demos/qtdemo/qtdemo.qrc, examples/demos/qtdemo/qtdemo_rc2.py, examples/demos/qtdemo/qtdemo_rc3.py, examples/demos/qtdemo/scanitem.py, examples/demos/qtdemo/score.py, examples/demos/qtdemo/textbutton.py, examples/demos/qtdemo/xml/examples.xml, examples/demos/spreadsheet/images/interview.png, examples/demos/spreadsheet/printview.py, examples/demos/spreadsheet/spreadsheet.py, examples/demos/spreadsheet/spreadsheet.qrc, examples/demos/spreadsheet/spreadsheet_rc2.py, examples/demos/spreadsheet/spreadsheet_rc3.py, examples/demos/spreadsheet/spreadsheetdelegate.py, examples/demos/spreadsheet/spreadsheetitem.py, examples/demos/spreadsheet/util.py, examples/demos/textedit/example.html, examples/demos/textedit/images/logo.png, examples/demos/textedit/images/logo32.png, examples/demos/textedit/images/mac/editcopy.png, examples/demos/textedit/images/mac/editcut.png, examples/demos/textedit/images/mac/editpaste.png, examples/demos/textedit/images/mac/editredo.png, examples/demos/textedit/images/mac/editundo.png, examples/demos/textedit/images/mac/exportpdf.png, examples/demos/textedit/images/mac/filenew.png, examples/demos/textedit/images/mac/fileopen.png, examples/demos/textedit/images/mac/fileprint.png, examples/demos/textedit/images/mac/filesave.png, examples/demos/textedit/images/mac/textbold.png, examples/demos/textedit/images/mac/textcenter.png, examples/demos/textedit/images/mac/textitalic.png, examples/demos/textedit/images/mac/textjustify.png, examples/demos/textedit/images/mac/textleft.png, examples/demos/textedit/images/mac/textright.png, examples/demos/textedit/images/mac/textunder.png, examples/demos/textedit/images/mac/zoomin.png, examples/demos/textedit/images/mac/zoomout.png, examples/demos/textedit/images/win/editcopy.png, examples/demos/textedit/images/win/editcut.png, examples/demos/textedit/images/win/editpaste.png, examples/demos/textedit/images/win/editredo.png, examples/demos/textedit/images/win/editundo.png, examples/demos/textedit/images/win/exportpdf.png, examples/demos/textedit/images/win/filenew.png, examples/demos/textedit/images/win/fileopen.png, examples/demos/textedit/images/win/fileprint.png, examples/demos/textedit/images/win/filesave.png, examples/demos/textedit/images/win/textbold.png, examples/demos/textedit/images/win/textcenter.png, examples/demos/textedit/images/win/textitalic.png, examples/demos/textedit/images/win/textjustify.png, examples/demos/textedit/images/win/textleft.png, examples/demos/textedit/images/win/textright.png, examples/demos/textedit/images/win/textunder.png, examples/demos/textedit/images/win/zoomin.png, examples/demos/textedit/images/win/zoomout.png, examples/demos/textedit/textedit.py, examples/demos/textedit/textedit.qrc, examples/demos/textedit/textedit_rc2.py, examples/demos/textedit/textedit_rc3.py, examples/designer/README, examples/designer/calculatorform/calculatorform.py, examples/designer/calculatorform/calculatorform.ui, examples/designer/calculatorform/ui_calculatorform.py, examples/designer/plugins/plugins.py, examples/designer/plugins/python/analogclockplugin.py, examples/designer/plugins/python/bubbleswidgetplugin.py, examples/designer/plugins/python/counterlabelplugin.py, examples/designer/plugins/python/datetimeeditplugin.py, examples/designer/plugins/python/helloglwidgetplugin.py, examples/designer/plugins/python/highlightedtexteditplugin.py, examples/designer/plugins/python/multipagewidgetplugin.py, examples/designer/plugins/python/polygonwidgetplugin.py, examples/designer/plugins/python/pydemoplugin.py, examples/designer/plugins/python/pythonconsoleplugin.py, examples/designer/plugins/widgets/analogclock.py, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/counterlabel.py, examples/designer/plugins/widgets/datetimeedit.py, examples/designer/plugins/widgets/helloglwidget.py, examples/designer/plugins/widgets/highlightedtextedit.py, examples/designer/plugins/widgets/multipagewidget.py, examples/designer/plugins/widgets/polygonwidget.py, examples/designer/plugins/widgets/pydemo.py, examples/designer/plugins/widgets/pythonconsolewidget.py, examples/desktop/README, examples/desktop/screenshot.py, examples/desktop/systray/images/bad.svg, examples/desktop/systray/images/heart.svg, examples/desktop/systray/images/trash.svg, examples/desktop/systray/systray.py, examples/desktop/systray/systray.qrc, examples/desktop/systray/systray_rc2.py, examples/desktop/systray/systray_rc3.py, examples/dialogs/README, examples/dialogs/classwizard/classwizard.py, examples/dialogs/classwizard/classwizard.qrc, examples/dialogs/classwizard/classwizard_rc2.py, examples/dialogs/classwizard/classwizard_rc3.py, examples/dialogs/classwizard/images/background.png, examples/dialogs/classwizard/images/banner.png, examples/dialogs/classwizard/images/logo1.png, examples/dialogs/classwizard/images/logo2.png, examples/dialogs/classwizard/images/logo3.png, examples/dialogs/classwizard/images/watermark1.png, examples/dialogs/classwizard/images/watermark2.png, examples/dialogs/configdialog/configdialog.py, examples/dialogs/configdialog/configdialog.qrc, examples/dialogs/configdialog/configdialog_rc2.py, examples/dialogs/configdialog/configdialog_rc3.py, examples/dialogs/configdialog/images/config.png, examples/dialogs/configdialog/images/query.png, examples/dialogs/configdialog/images/update.png, examples/dialogs/extension.py, examples/dialogs/findfiles.py, examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py, examples/dialogs/trivialwizard.py, examples/draganddrop/README, examples/draganddrop/delayedencoding/delayedencoding.py, examples/draganddrop/delayedencoding/delayedencoding.qrc, examples/draganddrop/delayedencoding/delayedencoding_rc2.py, examples/draganddrop/delayedencoding/delayedencoding_rc3.py, examples/draganddrop/delayedencoding/images/drag.png, examples/draganddrop/delayedencoding/images/example.svg, examples/draganddrop/draggableicons/draggableicons.py, examples/draganddrop/draggableicons/draggableicons.qrc, examples/draganddrop/draggableicons/draggableicons_rc2.py, examples/draganddrop/draggableicons/draggableicons_rc3.py, examples/draganddrop/draggableicons/images/boat.png, examples/draganddrop/draggableicons/images/car.png, examples/draganddrop/draggableicons/images/house.png, examples/draganddrop/draggabletext/draggabletext.py, examples/draganddrop/draggabletext/draggabletext.qrc, examples/draganddrop/draggabletext/draggabletext_rc2.py, examples/draganddrop/draggabletext/draggabletext_rc3.py, examples/draganddrop/draggabletext/words.txt, examples/draganddrop/dropsite.py, examples/draganddrop/fridgemagnets/fridgemagnets.py, examples/draganddrop/fridgemagnets/fridgemagnets.qrc, examples/draganddrop/fridgemagnets/fridgemagnets_rc2.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc3.py, examples/draganddrop/fridgemagnets/words.txt, examples/draganddrop/puzzle/example.jpg, examples/draganddrop/puzzle/puzzle.py, examples/draganddrop/puzzle/puzzle.qrc, examples/draganddrop/puzzle/puzzle_rc2.py, examples/draganddrop/puzzle/puzzle_rc3.py, examples/effects/README, examples/effects/lighting.py, examples/graphicsview/README, examples/graphicsview/anchorlayout.py, examples/graphicsview/collidingmice/collidingmice.py, examples/graphicsview/collidingmice/images/cheese.jpg, examples/graphicsview/collidingmice/mice.qrc, examples/graphicsview/collidingmice/mice_rc2.py, examples/graphicsview/collidingmice/mice_rc3.py, examples/graphicsview/diagramscene/diagramscene.py, examples/graphicsview/diagramscene/diagramscene.qrc, examples/graphicsview/diagramscene/diagramscene_rc2.py, examples/graphicsview/diagramscene/diagramscene_rc3.py, examples/graphicsview/diagramscene/images/background1.png, examples/graphicsview/diagramscene/images/background2.png, examples/graphicsview/diagramscene/images/background3.png, examples/graphicsview/diagramscene/images/background4.png, examples/graphicsview/diagramscene/images/bold.png, examples/graphicsview/diagramscene/images/bringtofront.png, examples/graphicsview/diagramscene/images/delete.png, examples/graphicsview/diagramscene/images/floodfill.png, examples/graphicsview/diagramscene/images/italic.png, examples/graphicsview/diagramscene/images/linecolor.png, examples/graphicsview/diagramscene/images/linepointer.png, examples/graphicsview/diagramscene/images/pointer.png, examples/graphicsview/diagramscene/images/sendtoback.png, examples/graphicsview/diagramscene/images/textpointer.png, examples/graphicsview/diagramscene/images/underline.png, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/dragdroprobot/dragdroprobot.qrc, examples/graphicsview/dragdroprobot/dragdroprobot_rc2.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc3.py, examples/graphicsview/dragdroprobot/images/head.png, examples/graphicsview/elasticnodes.py, examples/graphicsview/padnavigator/backside.ui, examples/graphicsview/padnavigator/images/artsfftscope.png, examples/graphicsview/padnavigator/images/blue_angle_swirl.jpg, examples/graphicsview/padnavigator/images/kontact_contacts.png, examples/graphicsview/padnavigator/images/kontact_journal.png, examples/graphicsview/padnavigator/images/kontact_mail.png, examples/graphicsview/padnavigator/images/kontact_notes.png, examples/graphicsview/padnavigator/images/kopeteavailable.png, examples/graphicsview/padnavigator/images/metacontact_online.png, examples/graphicsview/padnavigator/images/minitools.png, examples/graphicsview/padnavigator/padnavigator.py, examples/graphicsview/padnavigator/padnavigator.qrc, examples/graphicsview/padnavigator/padnavigator_rc2.py, examples/graphicsview/padnavigator/padnavigator_rc3.py, examples/graphicsview/padnavigator/ui_backside.py, examples/ipc/README, examples/ipc/localfortuneclient.py, examples/ipc/localfortuneserver.py, examples/ipc/sharedmemory/dialog.py, examples/ipc/sharedmemory/dialog.ui, examples/ipc/sharedmemory/image.png, examples/ipc/sharedmemory/qt.png, examples/ipc/sharedmemory/sharedmemory.py, examples/itemviews/README, examples/itemviews/basicsortfiltermodel.py, examples/itemviews/chart/chart.py, examples/itemviews/chart/chart.qrc, examples/itemviews/chart/chart_rc2.py, examples/itemviews/chart/chart_rc3.py, examples/itemviews/chart/mydata.cht, examples/itemviews/chart/qtdata.cht, examples/itemviews/coloreditorfactory.py, examples/itemviews/combowidgetmapper.py, examples/itemviews/customsortfiltermodel.py, examples/itemviews/dirview.py, examples/itemviews/editabletreemodel/default.txt, examples/itemviews/editabletreemodel/editabletreemodel.py, examples/itemviews/editabletreemodel/editabletreemodel.qrc, examples/itemviews/editabletreemodel/editabletreemodel_rc2.py, examples/itemviews/editabletreemodel/editabletreemodel_rc3.py, examples/itemviews/editabletreemodel/mainwindow.ui, examples/itemviews/editabletreemodel/ui_mainwindow.py, examples/itemviews/fetchmore.py, examples/itemviews/pixelator/images/qt.png, examples/itemviews/pixelator/pixelator.py, examples/itemviews/pixelator/pixelator.qrc, examples/itemviews/pixelator/pixelator_rc2.py, examples/itemviews/pixelator/pixelator_rc3.py, examples/itemviews/puzzle/example.jpg, examples/itemviews/puzzle/puzzle.py, examples/itemviews/puzzle/puzzle.qrc, examples/itemviews/puzzle/puzzle_rc2.py, examples/itemviews/puzzle/puzzle_rc3.py, examples/itemviews/simpledommodel.py, examples/itemviews/simpletreemodel/default.txt, examples/itemviews/simpletreemodel/simpletreemodel.py, examples/itemviews/simpletreemodel/simpletreemodel.qrc, examples/itemviews/simpletreemodel/simpletreemodel_rc2.py, examples/itemviews/simpletreemodel/simpletreemodel_rc3.py, examples/itemviews/simplewidgetmapper.py, examples/itemviews/spinboxdelegate.py, examples/itemviews/stardelegate.py, examples/layouts/README, examples/layouts/basiclayouts.py, examples/layouts/borderlayout.py, examples/layouts/flowlayout.py, examples/mainwindows/README, examples/mainwindows/application/application.py, examples/mainwindows/application/application.qrc, examples/mainwindows/application/application_rc2.py, examples/mainwindows/application/application_rc3.py, examples/mainwindows/application/images/copy.png, examples/mainwindows/application/images/cut.png, examples/mainwindows/application/images/new.png, examples/mainwindows/application/images/open.png, examples/mainwindows/application/images/paste.png, examples/mainwindows/application/images/save.png, examples/mainwindows/dockwidgets/dockwidgets.py, examples/mainwindows/dockwidgets/dockwidgets.qrc, examples/mainwindows/dockwidgets/dockwidgets_rc2.py, examples/mainwindows/dockwidgets/dockwidgets_rc3.py, examples/mainwindows/dockwidgets/images/new.png, examples/mainwindows/dockwidgets/images/print.png, examples/mainwindows/dockwidgets/images/save.png, examples/mainwindows/dockwidgets/images/undo.png, examples/mainwindows/mdi/images/copy.png, examples/mainwindows/mdi/images/cut.png, examples/mainwindows/mdi/images/new.png, examples/mainwindows/mdi/images/open.png, examples/mainwindows/mdi/images/paste.png, examples/mainwindows/mdi/images/save.png, examples/mainwindows/mdi/mdi.py, examples/mainwindows/mdi/mdi.qrc, examples/mainwindows/mdi/mdi_rc2.py, examples/mainwindows/mdi/mdi_rc3.py, examples/mainwindows/menus.py, examples/mainwindows/recentfiles.py, examples/mainwindows/sdi/images/copy.png, examples/mainwindows/sdi/images/cut.png, examples/mainwindows/sdi/images/new.png, examples/mainwindows/sdi/images/open.png, examples/mainwindows/sdi/images/paste.png, examples/mainwindows/sdi/images/save.png, examples/mainwindows/sdi/sdi.py, examples/mainwindows/sdi/sdi.qrc, examples/mainwindows/sdi/sdi_rc2.py, examples/mainwindows/sdi/sdi_rc3.py, examples/mainwindows/separations.py, examples/network/README, examples/network/blockingfortuneclient.py, examples/network/broadcastreceiver.py, examples/network/broadcastsender.py, examples/network/fortuneclient.py, examples/network/fortuneserver.py, examples/network/ftp/ftp.py, examples/network/ftp/ftp.qrc, examples/network/ftp/ftp_rc2.py, examples/network/ftp/ftp_rc3.py, examples/network/ftp/images/cdtoparent.png, examples/network/ftp/images/dir.png, examples/network/ftp/images/file.png, examples/network/http/authenticationdialog.ui, examples/network/http/http.py, examples/network/loopback.py, examples/network/threadedfortuneserver.py, examples/opengl/2dpainting.py, examples/opengl/README, examples/opengl/grabber.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/opengl/samplebuffers.py, examples/opengl/textures/images/side1.png, examples/opengl/textures/images/side2.png, examples/opengl/textures/images/side3.png, examples/opengl/textures/images/side4.png, examples/opengl/textures/images/side5.png, examples/opengl/textures/images/side6.png, examples/opengl/textures/textures.py, examples/opengl/textures/textures.qrc, examples/opengl/textures/textures_rc2.py, examples/opengl/textures/textures_rc3.py, examples/painting/README, examples/painting/basicdrawing/basicdrawing.py, examples/painting/basicdrawing/basicdrawing.qrc, examples/painting/basicdrawing/basicdrawing_rc2.py, examples/painting/basicdrawing/basicdrawing_rc3.py, examples/painting/basicdrawing/images/brick.png, examples/painting/basicdrawing/images/qt-logo.png, examples/painting/concentriccircles.py, examples/painting/painterpaths.py, examples/painting/svgviewer/files/bubbles.svg, examples/painting/svgviewer/files/cubic.svg, examples/painting/svgviewer/files/spheres.svg, examples/painting/svgviewer/svgviewer.py, examples/painting/svgviewer/svgviewer.qrc, examples/painting/svgviewer/svgviewer_rc2.py, examples/painting/svgviewer/svgviewer_rc3.py, examples/painting/transformations.py, examples/phonon/README, examples/phonon/capabilities.py, examples/phonon/musicplayer.py, examples/pyuic/compile-on-the-fly.py, examples/pyuic/demo.ui, examples/pyuic/load_ui1.py, examples/pyuic/load_ui2.py, examples/richtext/README, examples/richtext/calendar.py, examples/richtext/orderform.py, examples/richtext/syntaxhighlighter.py, examples/richtext/textobject/files/heart.svg, examples/richtext/textobject/textobject.py, examples/script/README, examples/script/helloscript.py, examples/sql/README, examples/sql/cachedtable.py, examples/sql/connection.py, examples/sql/querymodel.py, examples/sql/relationaltablemodel.py, examples/sql/tablemodel.py, examples/threads/README, examples/threads/mandelbrot.py, examples/threads/semaphores.py, examples/threads/waitconditions.py, examples/tools/README, examples/tools/codecs/codecs.py, examples/tools/codecs/encodedfiles/iso-8859-1.txt, examples/tools/codecs/encodedfiles/iso-8859-15.txt, examples/tools/codecs/encodedfiles/utf-16.txt, examples/tools/codecs/encodedfiles/utf-16be.txt, examples/tools/codecs/encodedfiles/utf-16le.txt, examples/tools/codecs/encodedfiles/utf-8.txt, examples/tools/customcompleter/customcompleter.py, examples/tools/customcompleter/customcompleter.qrc, examples/tools/customcompleter/customcompleter_rc2.py, examples/tools/customcompleter/customcompleter_rc3.py, examples/tools/customcompleter/resources/wordlist.txt, examples/tools/i18n/i18n.py, examples/tools/i18n/i18n.qrc, examples/tools/i18n/i18n_rc2.py, examples/tools/i18n/i18n_rc3.py, examples/tools/i18n/translations/i18n_ar.qm, examples/tools/i18n/translations/i18n_ar.ts, examples/tools/i18n/translations/i18n_cs.qm, examples/tools/i18n/translations/i18n_cs.ts, examples/tools/i18n/translations/i18n_de.qm, examples/tools/i18n/translations/i18n_de.ts, examples/tools/i18n/translations/i18n_el.qm, examples/tools/i18n/translations/i18n_el.ts, examples/tools/i18n/translations/i18n_en.qm, examples/tools/i18n/translations/i18n_en.ts, examples/tools/i18n/translations/i18n_eo.qm, examples/tools/i18n/translations/i18n_eo.ts, examples/tools/i18n/translations/i18n_fr.qm, examples/tools/i18n/translations/i18n_fr.ts, examples/tools/i18n/translations/i18n_it.qm, examples/tools/i18n/translations/i18n_it.ts, examples/tools/i18n/translations/i18n_jp.qm, examples/tools/i18n/translations/i18n_jp.ts, examples/tools/i18n/translations/i18n_ko.qm, examples/tools/i18n/translations/i18n_ko.ts, examples/tools/i18n/translations/i18n_no.qm, examples/tools/i18n/translations/i18n_no.ts, examples/tools/i18n/translations/i18n_pt.qm, examples/tools/i18n/translations/i18n_pt.ts, examples/tools/i18n/translations/i18n_ru.qm, examples/tools/i18n/translations/i18n_ru.ts, examples/tools/i18n/translations/i18n_sv.qm, examples/tools/i18n/translations/i18n_sv.ts, examples/tools/i18n/translations/i18n_zh.qm, examples/tools/i18n/translations/i18n_zh.ts, examples/tools/regexp.py, examples/tools/settingseditor/inifiles/licensepage.ini, examples/tools/settingseditor/inifiles/qsa.ini, examples/tools/settingseditor/settingseditor.py, examples/tutorials/addressbook/README, examples/tutorials/addressbook/part1.py, examples/tutorials/addressbook/part2.py, examples/tutorials/addressbook/part3.py, examples/tutorials/addressbook/part4.py, examples/tutorials/addressbook/part5.py, examples/tutorials/addressbook/part6.py, examples/tutorials/addressbook/part7.py, examples/webkit/domtraversal/domtraversal.py, examples/webkit/domtraversal/ui_window.py, examples/webkit/domtraversal/window.ui, examples/webkit/fancybrowser/fancybrowser.py, examples/webkit/fancybrowser/jquery.min.js, examples/webkit/fancybrowser/jquery.qrc, examples/webkit/fancybrowser/jquery_rc2.py, examples/webkit/fancybrowser/jquery_rc3.py, examples/webkit/formextractor/form.html, examples/webkit/formextractor/formextractor.py, examples/webkit/formextractor/formextractor.qrc, examples/webkit/formextractor/formextractor.ui, examples/webkit/formextractor/formextractor_rc2.py, examples/webkit/formextractor/formextractor_rc3.py, examples/webkit/formextractor/ui_formextractor.py, examples/webkit/framecapture.py, examples/webkit/googlechat/form.ui, examples/webkit/googlechat/googlechat.py, examples/webkit/googlechat/ui_form.py, examples/webkit/previewer/previewer.py, examples/webkit/previewer/previewer.ui, examples/webkit/previewer/ui_previewer.py, examples/webkit/simpleselector/simpleselector.py, examples/webkit/simpleselector/ui_window.py, examples/webkit/simpleselector/window.ui, examples/widgets/README, examples/widgets/analogclock.py, examples/widgets/calculator.py, examples/widgets/calendarwidget.py, examples/widgets/charactermap.py, examples/widgets/digitalclock.py, examples/widgets/groupbox.py, examples/widgets/icons/icons.py, examples/widgets/icons/images/designer.png, examples/widgets/icons/images/find_disabled.png, examples/widgets/icons/images/find_normal.png, examples/widgets/icons/images/monkey_off_128x128.png, examples/widgets/icons/images/monkey_off_16x16.png, examples/widgets/icons/images/monkey_off_32x32.png, examples/widgets/icons/images/monkey_off_64x64.png, examples/widgets/icons/images/monkey_on_128x128.png, examples/widgets/icons/images/monkey_on_16x16.png, examples/widgets/icons/images/monkey_on_32x32.png, examples/widgets/icons/images/monkey_on_64x64.png, examples/widgets/icons/images/qt_extended_16x16.png, examples/widgets/icons/images/qt_extended_32x32.png, examples/widgets/icons/images/qt_extended_48x48.png, examples/widgets/imageviewer.py, examples/widgets/lineedits.py, examples/widgets/movie/animation.mng, examples/widgets/movie/movie.py, examples/widgets/scribble.py, examples/widgets/shapedclock.py, examples/widgets/sliders.py, examples/widgets/spinboxes.py, examples/widgets/styles.py, examples/widgets/stylesheet/images/checkbox_checked.png, examples/widgets/stylesheet/images/checkbox_checked_hover.png, examples/widgets/stylesheet/images/checkbox_checked_pressed.png, examples/widgets/stylesheet/images/checkbox_unchecked.png, examples/widgets/stylesheet/images/checkbox_unchecked_hover.png, examples/widgets/stylesheet/images/checkbox_unchecked_pressed.png, examples/widgets/stylesheet/images/down_arrow.png, examples/widgets/stylesheet/images/down_arrow_disabled.png, examples/widgets/stylesheet/images/frame.png, examples/widgets/stylesheet/images/pagefold.png, examples/widgets/stylesheet/images/pushbutton.png, examples/widgets/stylesheet/images/pushbutton_hover.png, examples/widgets/stylesheet/images/pushbutton_pressed.png, examples/widgets/stylesheet/images/radiobutton_checked.png, examples/widgets/stylesheet/images/radiobutton_checked_hover.png, examples/widgets/stylesheet/images/radiobutton_checked_pressed.png, examples/widgets/stylesheet/images/radiobutton_unchecked.png, examples/widgets/stylesheet/images/radiobutton_unchecked_hover.png, e xamples/widgets/stylesheet/images/radiobutton_unchecked_pressed.png, examples/widgets/stylesheet/images/sizegrip.png, examples/widgets/stylesheet/images/spindown.png, examples/widgets/stylesheet/images/spindown_hover.png, examples/widgets/stylesheet/images/spindown_off.png, examples/widgets/stylesheet/images/spindown_pressed.png, examples/widgets/stylesheet/images/spinup.png, examples/widgets/stylesheet/images/spinup_hover.png, examples/widgets/stylesheet/images/spinup_off.png, examples/widgets/stylesheet/images/spinup_pressed.png, examples/widgets/stylesheet/images/up_arrow.png, examples/widgets/stylesheet/images/up_arrow_disabled.png, examples/widgets/stylesheet/mainwindow.ui, examples/widgets/stylesheet/qss/coffee.qss, examples/widgets/stylesheet/qss/default.qss, examples/widgets/stylesheet/qss/pagefold.qss, examples/widgets/stylesheet/stylesheet.py, examples/widgets/stylesheet/stylesheet.qrc, examples/widgets/stylesheet/stylesheet_rc2.py, examples/widgets/stylesheet/stylesheet_rc3.py, examples/widgets/stylesheet/stylesheeteditor.py, examples/widgets/stylesheet/stylesheeteditor.ui, examples/widgets/stylesheet/ui_mainwindow.py, examples/widgets/stylesheet/ui_stylesheeteditor.py, examples/widgets/tetrix.py, examples/widgets/tooltips/images/circle.png, examples/widgets/tooltips/images/square.png, examples/widgets/tooltips/images/triangle.png, examples/widgets/tooltips/tooltips.py, examples/widgets/tooltips/tooltips.qrc, examples/widgets/tooltips/tooltips_rc2.py, examples/widgets/tooltips/tooltips_rc3.py, examples/widgets/wiggly.py, examples/widgets/windowflags.py, examples/xml/README, examples/xml/dombookmarks/dombookmarks.py, examples/xml/dombookmarks/frank.xbel, examples/xml/dombookmarks/jennifer.xbel, examples/xml/saxbookmarks/frank.xbel, examples/xml/saxbookmarks/jennifer.xbel, examples/xml/saxbookmarks/saxbookmarks.py, examples/xmlpatterns/README, examples/xmlpatterns/schema/files/contact.xsd, examples/xmlpatterns/schema/files/invalid_contact.xml, examples/xmlpatterns/schema/files/invalid_order.xml, examples/xmlpatterns/schema/files/invalid_recipe.xml, examples/xmlpatterns/schema/files/order.xsd, examples/xmlpatterns/schema/files/recipe.xsd, examples/xmlpatterns/schema/files/valid_contact.xml, examples/xmlpatterns/schema/files/valid_order.xml, examples/xmlpatterns/schema/files/valid_recipe.xml, examples/xmlpatterns/schema/schema.py, examples/xmlpatterns/schema/schema.qrc, examples/xmlpatterns/schema/schema.ui, examples/xmlpatterns/schema/schema_rc2.py, examples/xmlpatterns/schema/schema_rc3.py, examples/xmlpatterns/schema/ui_schema.py, installers/AddToPath.nsh, installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers/StrSlash.nsh, installers/mysql-config.bat, installers /psql-config.bat, installers/pyqt-check.py, installers/pyqt- config.bat, installers/qsci-config.bat, installers/qt5-config.bat, installers/sip-config.bat, lib/LICENSE.commercial, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, lib/QMetaObjectFormats.txt, lib/README, lib/SubclassCode/QtGuiQt4.versions, lib/SubclassCode/QtNetwork.versions, lib/SubclassCode/mksccode.py, lib/UpdatingArgumentNames.txt, lib/__init__.py, lib/configure.py, lib/license.py.commercial, lib/license.py.internal, lib/pyqt- gpl.sip, lib/pyqt-internal.sip, pylupdate/fetchtr.cpp, pylupdate/main.cpp, pylupdate/merge.cpp, pylupdate/metatranslator.cpp, pylupdate/metatranslator.h, pylupdate/numberh.cpp, pylupdate/proparser.cpp, pylupdate/proparser.h, pylupdate/sametexth.cpp, pylupdate/simtexth.cpp, pylupdate/simtexth.h, pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h, pyuic/uic/Compiler/__init__.py, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/indenter.py, pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/__init__.py, pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/exceptions.py, pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/__init__.py, pyuic/uic/port_v2/as_string.py, pyuic/uic/port_v2/ascii_upper.py, pyuic/uic/port_v2/invoke.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v2/proxy_base.py, pyuic/uic/port_v2/string_io.py, pyuic/uic/port_v3/__init__.py, pyuic/uic/port_v3/as_string.py, pyuic/uic/port_v3/ascii_upper.py, pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py, pyuic/uic/port_v3/proxy_base.py, pyuic/uic/port_v3/string_io.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py, pyuic/uic/widget-plugins/phonon.py, pyuic/uic/widget- plugins/qaxcontainer.py, pyuic/uic/widget-plugins/qscintilla.py, pyuic/uic/widget-plugins/qtdeclarative.py, pyuic/uic/widget- plugins/qtwebkit.py, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_chimera_signature.cpp, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_classinfo.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_namespace.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.h, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_pyqtproxy.cpp, qpy/QtCore/qpycore_pyqtproxy.h, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtpyobject.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_qabstracteventdispatcher.cpp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtCore/qpycore_qpynullvariant.cpp, qpy/QtCore/qpycore_qpynullvariant.h, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_qvariant.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_shared.h, qpy/QtCore/qpycore_sip.h, qpy/QtCore/qpycore_sip_helpers.cpp, qpy/QtCore/qpycore_sip_helpers.h, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, qpy/QtCore/qpynullvariant.sip, qpy/QtCore/qwineventnotifier.sip, qpy/QtDBus/qpydbus.pro, qpy/QtDBus/qpydbus_api.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbuspendingreply.h, qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.cpp, qpy/QtDBus/qpydbusreply.h, qpy/QtDBus/qpydbusreply.sip, qpy/QtDeclarative/qpydeclarative.pro, qpy/QtDeclarative/qpydeclarative_api.h, qpy/QtDeclarative/qpydeclarative_chimera_helpers.cpp, qpy/QtDeclarative/qpydeclarative_chimera_helpers.h, qpy/QtDeclarative/qpydeclarative_listwrapper.cpp, qpy/QtDeclarative/qpydeclarative_listwrapper.h, qpy/QtDeclarative/qpydeclarative_post_init.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.h, qpy/QtDeclarative/qpydeclarativelistproperty.sip, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.h, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.sip, qpy/QtDesigner/qpydesigner.pro, qpy/QtDesigner/qpydesignercontainerextension.h, qpy/QtDesigner/qpydesignercontainerextension.sip, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip, qpy/QtDesigner/qpydesignercustomwidgetplugin.h, qpy/QtDesigner/qpydesignercustomwidgetplugin.sip, qpy/QtDesigner/qpydesignermembersheetextension.h, qpy/QtDesigner/qpydesignermembersheetextension.sip, qpy/QtDesigner/qpydesignerpropertysheetextension.h, qpy/QtDesigner/qpydesignerpropertysheetextension.sip, qpy/QtDesigner/qpydesignertaskmenuextension.h, qpy/QtDesigner/qpydesignertaskmenuextension.sip, qpy/QtGui/qpygui.pro, qpy/QtGui/qpytextobject.h, qpy/QtGui/qpytextobject.sip, qpy/QtOpenGL/opengl_types.sip, qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp, sphinx/buffer_interface.rst, sphinx/build_system.rst, sphinx/conf.py, sphinx/dbus.rst, sphinx/deploy_commercial.rst, sphinx/designer.rst, sphinx/gotchas.rst, sphinx/i18n.rst, sphinx/incompatibilities.rst, sphinx/incompatible_apis.rst, sphinx/index.rst, sphinx/installation.rst, sphinx/introduction.rst, sphinx/keyword_arguments.rst, sphinx/new_style_signals_slots.rst, sphinx/old_style_signals_slots.rst, sphinx/pickle.rst, sphinx/pyqt_qsettings.rst, sphinx/pyqt_qvariant.rst, sphinx/python_shell.rst, sphinx/python_v3.rst, sphinx/qml.rst, sphinx/qt_properties.rst, sphinx/qt_v5.rst, sphinx/resources.rst, sphinx/static/default.css, sphinx/static/logo.png, sphinx/static/logo_tn.ico, sphinx/webkit.rst, test/dbus/test_multibus.py, test/runtests.py, test/tests/__init__.py, test/tests/classes/__init__.py, test/tests/classes/test_QObject.py, test/tests/classes/test_QSettings.py, test/tests/classes/test_QStringList.py, test/tests/classes/test_QVariant.py, test/tests/metaobject/__init__.py, test/tests/metaobject/test_connections.py, test/tests/metaobject/test_connections_old_style.py, test/tests/metaobject/test_connectslotsbyname.py, test/tests/metaobject/test_destroyed.py, test/tests/metaobject/test_gc_slots.py, test/tests/metaobject/test_invoke.py, test/tests/metaobject/test_pyqtproperty.py, test/tests/metaobject/test_pyqtsignal.py, test/tests/metaobject/test_pyqtsignature.py, test/tests/metaobject/test_pyqtslot.py, test/tests/metaobject/test_qvariantmap.py, test/tests/metaobject/test_sender.py, test/tests/metaobject/test_signal.py, test/tests/misc/__init__.py, test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py, test/tests/pyuic/QMainWindow/MainWindow00.ui, test/tests/pyuic/QToolBox/ToolBox00.ui, test/tests/pyuic/QToolBox/ToolBox01.ui, test/tests/pyuic/QWidget/Widget00.ui, test/tests/pyuic/QWidget/Widget01.ui, test/tests/pyuic/QWidget/Widget02.ui, test/tests/pyuic/QWidget/Widget03.ui, test/tests/pyuic/QWidget/Widget04.ui, test/tests/pyuic/QWidget/Widget05.ui, test/tests/pyuic/__init__.py, test/tests/pyuic/test_pyuic.py, test/v2_unicode.py, test/v3_unicode.py: Initial import of PyQt5 based on a stripped down PyQt4. [b135a1e082d2] PyQt-gpl-5.5.1/configure.py0000644000076500000240000031035312613140030015604 0ustar philstaff00000000000000# This script generates the Makefiles for building PyQt5. # # Copyright (c) 2015 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. from distutils import sysconfig import glob import optparse import os import shutil import stat import sys # Initialise the constants. PYQT_VERSION_STR = "5.5.1" SIP_MIN_VERSION = '4.16.6' # The different values QLibraryInfo::licensee() can return for the LGPL version # of Qt. OPEN_SOURCE_LICENSEES = ('Open Source', 'Builder Qt') class ModuleMetadata: """ This class encapsulates the meta-data about a PyQt5 module. """ def __init__(self, qmake_QT=None, qmake_TARGET='', qpy_lib=False, cpp11=False): """ Initialise the meta-data. """ # The values to update qmake's QT variable. self.qmake_QT = [] if qmake_QT is None else qmake_QT # The value to set qmake's TARGET variable to. It defaults to the name # of the module. self.qmake_TARGET = qmake_TARGET # Set if there is a qpy support library. self.qpy_lib = qpy_lib # Set if C++11 support is required. self.cpp11 = cpp11 # The module meta-data. MODULE_METADATA = { 'dbus': ModuleMetadata(qmake_QT=['-gui'], qmake_TARGET='pyqt5'), 'QAxContainer': ModuleMetadata(qmake_QT=['axcontainer']), 'Qt': ModuleMetadata(qmake_QT=['-core', '-gui']), 'QtBluetooth': ModuleMetadata(qmake_QT=['bluetooth']), 'QtCore': ModuleMetadata(qmake_QT=['-gui'], qpy_lib=True), 'QtDBus': ModuleMetadata(qmake_QT=['dbus', '-gui'], qpy_lib=True), 'QtDesigner': ModuleMetadata(qmake_QT=['designer'], qpy_lib=True), 'Enginio': ModuleMetadata(qmake_QT=['enginio']), 'QtGui': ModuleMetadata(qpy_lib=True), 'QtHelp': ModuleMetadata(qmake_QT=['help']), 'QtLocation': ModuleMetadata(qmake_QT=['location']), 'QtMacExtras': ModuleMetadata(qmake_QT=['macextras']), 'QtMultimedia': ModuleMetadata(qmake_QT=['multimedia']), 'QtMultimediaWidgets': ModuleMetadata( qmake_QT=['multimediawidgets', 'multimedia']), 'QtNetwork': ModuleMetadata(qmake_QT=['network', '-gui']), 'QtNfc': ModuleMetadata(qmake_QT=['nfc', '-gui']), 'QtOpenGL': ModuleMetadata(qmake_QT=['opengl']), 'QtPositioning': ModuleMetadata(qmake_QT=['positioning']), 'QtPrintSupport': ModuleMetadata(qmake_QT=['printsupport']), 'QtQml': ModuleMetadata(qmake_QT=['qml'], qpy_lib=True), 'QtQuick': ModuleMetadata(qmake_QT=['quick'], qpy_lib=True), 'QtQuickWidgets': ModuleMetadata(qmake_QT=['quickwidgets']), 'QtSensors': ModuleMetadata(qmake_QT=['sensors']), 'QtSerialPort': ModuleMetadata(qmake_QT=['serialport']), 'QtSql': ModuleMetadata(qmake_QT=['sql', 'widgets']), 'QtSvg': ModuleMetadata(qmake_QT=['svg']), 'QtTest': ModuleMetadata(qmake_QT=['testlib', 'widgets']), 'QtWebChannel': ModuleMetadata( qmake_QT=['webchannel', 'network', '-gui']), 'QtWebEngineWidgets': ModuleMetadata( qmake_QT=['webenginewidgets', 'webchannel', 'network', 'widgets'], cpp11=True), 'QtWebKit': ModuleMetadata(qmake_QT=['webkit', 'network']), 'QtWebKitWidgets': ModuleMetadata( qmake_QT=['webkitwidgets', 'printsupport']), 'QtWebSockets': ModuleMetadata(qmake_QT=['websockets', '-gui']), 'QtWidgets': ModuleMetadata(qmake_QT=['widgets']), 'QtWinExtras': ModuleMetadata(qmake_QT=['winextras', 'widgets']), 'QtX11Extras': ModuleMetadata(qmake_QT=['x11extras']), 'QtXml': ModuleMetadata(qmake_QT=['xml', '-gui']), 'QtXmlPatterns': ModuleMetadata( qmake_QT=['xmlpatterns', '-gui', 'network']), # The OpenGL wrappers. '_QOpenGLFunctions_1_0': ModuleMetadata(), '_QOpenGLFunctions_1_1': ModuleMetadata(), '_QOpenGLFunctions_1_2': ModuleMetadata(), '_QOpenGLFunctions_1_3': ModuleMetadata(), '_QOpenGLFunctions_1_4': ModuleMetadata(), '_QOpenGLFunctions_1_5': ModuleMetadata(), '_QOpenGLFunctions_2_0': ModuleMetadata(), '_QOpenGLFunctions_2_1': ModuleMetadata(), '_QOpenGLFunctions_3_0': ModuleMetadata(), '_QOpenGLFunctions_3_1': ModuleMetadata(), '_QOpenGLFunctions_3_2_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_3_2_Core': ModuleMetadata(), '_QOpenGLFunctions_3_3_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_3_3_Core': ModuleMetadata(), '_QOpenGLFunctions_4_0_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_4_0_Core': ModuleMetadata(), '_QOpenGLFunctions_4_1_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_4_1_Core': ModuleMetadata(), '_QOpenGLFunctions_4_2_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_4_2_Core': ModuleMetadata(), '_QOpenGLFunctions_4_3_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_4_3_Core': ModuleMetadata(), '_QOpenGLFunctions_4_4_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_4_4_Core': ModuleMetadata(), '_QOpenGLFunctions_4_5_Compatibility': ModuleMetadata(), '_QOpenGLFunctions_4_5_Core': ModuleMetadata(), '_QOpenGLFunctions_ES2': ModuleMetadata() } # The component modules that make up the composite Qt module. SIP is broken in # its handling of composite module in that a component module must be %Included # before it is first %Imported. In other words, a module must appear before # any modules that depend on it. COMPOSITE_COMPONENTS = ( 'QtCore', 'QtDBus', 'QtGui', 'QtNetwork', 'QtSensors', 'QtSerialPort', 'QtMultimedia', 'QtQml', 'QtWebKit', 'QtWidgets', 'QtXml', 'QtXmlPatterns', 'QtAxContainer', 'QtDesigner', 'QtHelp', 'QtMultimediaWidgets', 'QtOpenGL', 'QtPrintSupport', 'QtQuick', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKitWidgets', 'QtBluetooth', 'QtMacExtras', 'QtPositioning', 'QtWinExtras', 'QtX11Extras', 'QtQuickWidgets', 'QtWebSockets', 'Enginio', 'QtWebChannel', 'QtWebEngineWidgets', 'QtLocation', 'QtNfc' ) def error(msg): """ Display an error message and terminate. msg is the text of the error message. """ sys.stderr.write(format("Error: " + msg) + "\n") sys.exit(1) def inform(msg): """ Display an information message. msg is the text of the error message. """ sys.stdout.write(format(msg) + "\n") def format(msg, left_margin=0, right_margin=78): """ Format a message by inserting line breaks at appropriate places. msg is the text of the message. left_margin is the position of the left margin. right_margin is the position of the right margin. Returns the formatted message. """ curs = left_margin fmsg = " " * left_margin for w in msg.split(): l = len(w) if curs != left_margin and curs + l > right_margin: fmsg = fmsg + "\n" + (" " * left_margin) curs = left_margin if curs > left_margin: fmsg = fmsg + " " curs = curs + 1 fmsg = fmsg + w curs = curs + l return fmsg def version_to_sip_tag(version): """ Convert a version number to a SIP tag. version is the version number. """ # Anything after Qt v5 is assumed to be Qt v6.0. if version > 0x060000: version = 0x060000 major = (version >> 16) & 0xff minor = (version >> 8) & 0xff patch = version & 0xff return 'Qt_%d_%d_%d' % (major, minor, patch) def version_to_string(version, parts=3): """ Convert an n-part version number encoded as a hexadecimal value to a string. version is the version number. Returns the string. """ part_list = [str((version >> 16) & 0xff)] if parts > 1: part_list.append(str((version >> 8) & 0xff)) if parts > 2: part_list.append(str(version & 0xff)) return '.'.join(part_list) class ConfigurationFileParser: """ A parser for configuration files. """ def __init__(self, config_file): """ Read and parse a configuration file. """ self._config = {} self._extrapolating = [] cfg = open(config_file) line_nr = 0 last_name = None section = '' section_config = {} self._config[section] = section_config for l in cfg: line_nr += 1 # Strip comments. l = l.split('#')[0] # See if this might be part of a multi-line. multiline = (last_name is not None and len(l) != 0 and l[0] == ' ') l = l.strip() if l == '': last_name = None continue # See if this is a new section. if l[0] == '[' and l[-1] == ']': section = l[1:-1].strip() if section == '': error( "%s:%d: Empty section name." % ( config_file, line_nr)) if section in self._config: error( "%s:%d: Section '%s' defined more than once." % ( config_file, line_nr, section)) section_config = {} self._config[section] = section_config last_name = None continue parts = l.split('=', 1) if len(parts) == 2: name = parts[0].strip() value = parts[1].strip() elif multiline: name = last_name value = section_config[last_name] value += ' ' + l else: name = value = '' if name == '' or value == '': error("%s:%d: Invalid line." % (config_file, line_nr)) section_config[name] = value last_name = name cfg.close() def sections(self): """ Return the list of sections, excluding the default one. """ return [s for s in self._config.keys() if s != ''] def preset(self, name, value): """ Add a preset value to the configuration. """ self._config[''][name] = value def get(self, section, name, default=None): """ Get a configuration value while extrapolating. """ # Get the name from the section, or the default section. value = self._config[section].get(name) if value is None: value = self._config[''].get(name) if value is None: if default is None: error( "Configuration file references non-existent name " "'%s'." % name) return default # Handle any extrapolations. parts = value.split('%(', 1) while len(parts) == 2: prefix, tail = parts parts = tail.split(')', 1) if len(parts) != 2: error( "Configuration file contains unterminated " "extrapolated name '%s'." % tail) xtra_name, suffix = parts if xtra_name in self._extrapolating: error( "Configuration file contains a recursive reference to " "'%s'." % xtra_name) self._extrapolating.append(xtra_name) xtra_value = self.get(section, xtra_name) self._extrapolating.pop() value = prefix + xtra_value + suffix parts = value.split('%(', 1) return value def getboolean(self, section, name, default): """ Get a boolean configuration value while extrapolating. """ value = self.get(section, name, default) # In case the default was returned. if isinstance(value, bool): return value if value in ('True', 'true', '1'): return True if value in ('False', 'false', '0'): return False error( "Configuration file contains invalid boolean value for " "'%s'." % name) def getlist(self, section, name, default): """ Get a list configuration value while extrapolating. """ value = self.get(section, name, default) # In case the default was returned. if isinstance(value, list): return value return value.split() class HostPythonConfiguration: """ A container for the host Python configuration. """ def __init__(self): """ Initialise the configuration. """ self.platform = sys.platform self.version = sys.hexversion >> 8 self.inc_dir = sysconfig.get_python_inc() self.venv_inc_dir = sysconfig.get_python_inc(prefix=sys.prefix) self.module_dir = sysconfig.get_python_lib(plat_specific=1) if sys.platform == 'win32': self.bin_dir = sys.exec_prefix self.data_dir = sys.prefix self.lib_dir = sys.prefix + '\\libs' else: self.bin_dir = sys.exec_prefix + '/bin' self.data_dir = sys.prefix + '/share' self.lib_dir = sys.prefix + '/lib' # The name of the interpreter used by the pyuic5 wrapper. if sys.platform == 'darwin': # The installation of MacOS's python is a mess that changes from # version to version and where sys.executable is useless. py_major = self.version >> 16 py_minor = (self.version >> 8) & 0xff # In Python v3.4 and later there is no pythonw. if (py_major == 3 and py_minor >= 4) or py_major >= 4: exe = "python" else: exe = "pythonw" self.pyuic_interpreter = '%s%d.%d' % (exe, py_major, py_minor) else: self.pyuic_interpreter = sys.executable class TargetQtConfiguration: """ A container for the target Qt configuration. """ def __init__(self, qmake): """ Initialise the configuration. qmake is the full pathname of the qmake executable that will provide the configuration. """ inform("Querying qmake about your Qt installation...") pipe = os.popen(' '.join([qmake, '-query'])) for l in pipe: l = l.strip() tokens = l.split(':', 1) if isinstance(tokens, list): if len(tokens) != 2: error("Unexpected output from qmake: '%s'\n" % l) name, value = tokens else: name = tokens value = None name = name.replace('/', '_') setattr(self, name, value) pipe.close() class TargetConfiguration: """ A container for configuration information about the target. """ def __init__(self): """ Initialise the configuration with default values. """ # Values based on the host Python configuration. py_config = HostPythonConfiguration() self.py_inc_dir = py_config.inc_dir self.py_venv_inc_dir = py_config.venv_inc_dir self.py_lib_dir = py_config.lib_dir self.py_platform = py_config.platform self.py_version = py_config.version self.pyqt_bin_dir = py_config.bin_dir self.pyqt_module_dir = py_config.module_dir self.pyqt_sip_dir = os.path.join(py_config.data_dir, 'sip', 'PyQt5') self.pyuic_interpreter = py_config.pyuic_interpreter # The qmake spec we want to use. if self.py_platform == 'win32': if self.py_version >= 0x030500: self.qmake_spec = 'win32-msvc2015' elif self.py_version >= 0x030300: self.qmake_spec = 'win32-msvc2010' elif self.py_version >= 0x020600: self.qmake_spec = 'win32-msvc2008' elif self.py_version >= 0x020400: self.qmake_spec = 'win32-msvc.net' else: self.qmake_spec = 'win32-msvc' else: # Use the Qt default. (We may update it for OS/X later.) self.qmake_spec = '' self.default_qmake_spec = '' # Remaining values. self.dbus_inc_dirs = [] self.dbus_lib_dirs = [] self.dbus_libs = [] self.debug = False self.designer_plugin_dir = '' self.license_dir = source_path('sip') self.no_designer_plugin = False self.no_docstrings = False self.no_pydbus = False self.no_qml_plugin = False self.no_tools = False self.prot_is_public = (self.py_platform.startswith('linux') or self.py_platform == 'darwin') self.qmake = self._find_exe('qmake') self.qmake_variables = [] self.py_pylib_dir = '' self.py_pylib_lib = '' self.py_pyshlib = '' self.pydbus_inc_dir = '' self.pydbus_module_dir = '' self.pyqt_disabled_features = [] self.pyqt_modules = [] self.qml_plugin_dir = '' self.qsci_api = False self.qsci_api_dir = '' self.qt_licensee = '' self.qt_shared = False self.qt_version = 0 self.sip = self._find_exe('sip5', 'sip') self.sip_inc_dir = '' self.static = False self.sysroot = '' self.vend_enabled = False self.vend_inc_dir = '' self.vend_lib_dir = '' def from_configuration_file(self, config_file): """ Initialise the configuration with values from a file. config_file is the name of the configuration file. """ inform("Reading configuration from %s..." % config_file) parser = ConfigurationFileParser(config_file) # Populate some presets from the command line. version = version_to_string(self.py_version).split('.') parser.preset('py_major', version[0]) parser.preset('py_minor', version[1]) parser.preset('sysroot', self.sysroot) # Find the section corresponding to the version of Qt. qt_major = self.qt_version >> 16 section = None latest_section = -1 for name in parser.sections(): parts = name.split() if len(parts) != 2 or parts[0] != 'Qt': continue section_qt_version = version_from_string(parts[1]) if section_qt_version is None: continue # Major versions must match. if section_qt_version >> 16 != self.qt_version >> 16: continue # It must be no later that the version of Qt. if section_qt_version > self.qt_version: continue # Save it if it is the latest so far. if section_qt_version > latest_section: section = name latest_section = section_qt_version if section is None: error("%s does not define a section that covers Qt v%s." % (config_file, version_to_string(self.qt_version))) self.py_platform = parser.get(section, 'py_platform', self.py_platform) self.py_inc_dir = parser.get(section, 'py_inc_dir', self.py_inc_dir) self.py_venv_inc_dir = self.py_inc_dir self.py_pylib_dir = parser.get(section, 'py_pylib_dir', self.py_pylib_dir) self.py_pylib_lib = parser.get(section, 'py_pylib_lib', self.py_pylib_lib) self.py_pyshlib = parser.get(section, 'py_pyshlib', self.py_pyshlib) self.qt_shared = parser.getboolean(section, 'qt_shared', self.qt_shared) self.pyqt_disabled_features = parser.getlist(section, 'pyqt_disabled_features', self.pyqt_disabled_features) self.pyqt_modules = parser.getlist(section, 'pyqt_modules', self.pyqt_modules) self.pyqt_module_dir = parser.get(section, 'pyqt_module_dir', self.pyqt_module_dir) self.pyqt_bin_dir = parser.get(section, 'pyqt_bin_dir', self.pyqt_bin_dir) self.pyqt_sip_dir = parser.get(section, 'pyqt_sip_dir', self.pyqt_sip_dir) self.pyuic_interpreter = parser.get(section, 'pyuic_interpreter', self.pyuic_interpreter) def from_introspection(self, verbose, debug): """ Initialise the configuration by introspecting the system. """ inform("Determining the details of your Qt installation...") out_file = 'qtdetail.out' source = '''#include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf("%s"); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); out << QLibraryInfo::licensee() << '\\n'; #if defined(QT_SHARED) || defined(QT_DLL) out << "shared\\n"; #else out << "static\\n"; #endif // Determine which features should be disabled. #if defined(QT_NO_ACCESSIBILITY) out << "PyQt_Accessibility\\n"; #endif #if defined(QT_NO_SESSIONMANAGER) out << "PyQt_SessionManager\\n"; #endif #if defined(QT_NO_SSL) out << "PyQt_SSL\\n"; #endif #if defined(QT_NO_PRINTDIALOG) out << "PyQt_PrintDialog\\n"; #endif #if defined(QT_NO_PRINTER) out << "PyQt_Printer\\n"; #endif #if defined(QT_NO_PRINTPREVIEWDIALOG) out << "PyQt_PrintPreviewDialog\\n"; #endif #if defined(QT_NO_PRINTPREVIEWWIDGET) out << "PyQt_PrintPreviewWidget\\n"; #endif #if defined(QT_NO_RAWFONT) out << "PyQt_RawFont\\n"; #endif #if defined(QT_NO_OPENGL) out << "PyQt_OpenGL\\n"; out << "PyQt_Desktop_OpenGL\\n"; #elif defined(QT_OPENGL_ES_2) out << "PyQt_Desktop_OpenGL\\n"; #endif #if QT_VERSION < 0x050200 // This is the test used in qglobal.h in Qt prior to v5.2. In v5.2 and later // qreal is always double. #if defined(QT_NO_FPU) || defined(Q_PROCESSOR_ARM) || defined(Q_OS_WINCE) out << "PyQt_qreal_double\\n"; #endif #endif #if defined(QT_NO_PROCESS) out << "PyQt_Process\\n"; #endif return 0; } ''' % out_file cmd = compile_qt_program(self, verbose, 'qtdetail', source, 'QtCore', debug=debug) if cmd is None: error("Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.") # Create the output file, first making sure it doesn't exist. remove_file(out_file) run_command(cmd, verbose) if not os.access(out_file, os.F_OK): error("%s failed to create %s. Make sure your Qt installation is correct." % (cmd, out_file)) # Read the details. f = open(out_file) lines = f.read().split('\n') f.close() self.qt_licensee = lines[0] self.qt_shared = (lines[1] == 'shared') self.pyqt_disabled_features = lines[2:-1] # Get the details of the Python interpreter library. py_major = self.py_version >> 16 py_minor = (self.py_version >> 8) & 0x0ff if sys.platform == 'win32': debug_suffix = get_win32_debug_suffix(debug) pylib_lib = 'python%d%d%s' % (py_major, py_minor, debug_suffix) pylib_dir = self.py_lib_dir # Assume Python is a DLL on Windows. pyshlib = pylib_lib else: abi = getattr(sys, 'abiflags', '') pylib_lib = 'python%d.%d%s' % (py_major, py_minor, abi) pylib_dir = pyshlib = '' # Use distutils to get the additional configuration. ducfg = sysconfig.get_config_vars() config_args = ducfg.get('CONFIG_ARGS', '') dynamic_pylib = '--enable-shared' in config_args if not dynamic_pylib: dynamic_pylib = '--enable-framework' in config_args if dynamic_pylib: pyshlib = ducfg.get('LDLIBRARY', '') exec_prefix = ducfg['exec_prefix'] multiarch = ducfg.get('MULTIARCH', '') libdir = ducfg['LIBDIR'] if glob.glob('%s/lib/libpython%d.%d*' % (exec_prefix, py_major, py_minor)): pylib_dir = exec_prefix + '/lib' elif multiarch != '' and glob.glob('%s/lib/%s/libpython%d.%d*' % (exec_prefix, multiarch, py_major, py_minor)): pylib_dir = exec_prefix + '/lib/' + multiarch elif glob.glob('%s/libpython%d.%d*' % (libdir, py_major, py_minor)): pylib_dir = libdir self.py_pylib_dir = pylib_dir self.py_pylib_lib = pylib_lib self.py_pyshlib = pyshlib # Apply sysroot where necessary. if self.sysroot != '': self.py_inc_dir = self._apply_sysroot(self.py_inc_dir) self.py_venv_inc_dir = self._apply_sysroot(self.py_venv_inc_dir) self.py_pylib_dir = self._apply_sysroot(self.py_pylib_dir) self.pyqt_bin_dir = self._apply_sysroot(self.pyqt_bin_dir) self.pyqt_module_dir = self._apply_sysroot(self.pyqt_module_dir) self.pyqt_sip_dir = self._apply_sysroot(self.pyqt_sip_dir) def _apply_sysroot(self, dir_name): """ Replace any leading sys.prefix of a directory name with sysroot. """ if dir_name.startswith(sys.prefix): dir_name = self.sysroot + dir_name[len(sys.prefix):] return dir_name def get_qt_configuration(self): """ Get the Qt configuration that can be extracted from qmake. """ # Query qmake. qt_config = TargetQtConfiguration(self.qmake) self.qt_version = 0 try: qt_version_str = qt_config.QT_VERSION for v in qt_version_str.split('.'): self.qt_version *= 256 self.qt_version += int(v) except AttributeError: qt_version_str = "3" # Check the Qt version number as soon as possible. if self.qt_version < 0x050000: if sys.platform == 'win32': error( "PyQt5 requires Qt v5.0 or later. You seem to be " "using v%s. Make sure the correct version of qmake is " "on your PATH." % qt_version_str) else: error( "PyQt5 requires Qt v5.0 or later. You seem to be " "using v%s. Use the --qmake flag to specify the " "correct version of qmake." % qt_version_str) self.designer_plugin_dir = qt_config.QT_INSTALL_PLUGINS + '/designer' self.qml_plugin_dir = qt_config.QT_INSTALL_PLUGINS + '/PyQt5' if self.sysroot == '': self.sysroot = qt_config.QT_SYSROOT # By default, install the API file if QScintilla seems to be installed # in the default location. self.qsci_api_dir = os.path.join(qt_config.QT_INSTALL_DATA, 'qsci') self.qsci_api = os.path.isdir(self.qsci_api_dir) # Save the default qmake spec. and finalise the value we want to use. self.default_qmake_spec = qt_config.QMAKE_SPEC if self.qmake_spec == '': self.qmake_spec = self.default_qmake_spec # The binary OS/X Qt installer defaults to XCode. If this is what we # might have then use macx-clang. if self.qmake_spec == 'macx-xcode': # This will exist (and we can't check anyway). self.qmake_spec = 'macx-clang' def post_configuration(self): """ Handle any remaining default configuration after having read a configuration file or introspected the system. """ # The platform may have changed so update the default. if self.py_platform.startswith('linux') or self.py_platform == 'darwin': self.prot_is_public = True self.sip_inc_dir = self.py_venv_inc_dir self.vend_inc_dir = self.py_venv_inc_dir self.vend_lib_dir = self.py_lib_dir def apply_pre_options(self, opts): """ Apply options from the command line that influence subsequent configuration. opts are the command line options. """ # Get the target Python version. if opts.target_py_version is not None: self.py_version = opts.target_py_version # Get the system root. if opts.sysroot is not None: self.sysroot = opts.sysroot # Determine how to run qmake. try: qmake = opts.qmake except AttributeError: # Windows. qmake = None if qmake is not None: self.qmake = qmake elif self.qmake is None: # Under Windows qmake and the Qt DLLs must be on the system PATH # otherwise the dynamic linker won't be able to resolve the # symbols. On other systems we assume we can just run qmake by # using its full pathname. if sys.platform == 'win32': error("Make sure you have a working Qt qmake on your PATH.") else: error( "Use the --qmake argument to explicitly specify a " "working Qt qmake.") if opts.qmakespec is not None: self.qmake_spec = opts.qmakespec if opts.debug: self.debug = True def apply_post_options(self, opts): """ Apply options from the command line that override the previous configuration. opts are the command line options. """ if opts.assumeshared: self.qt_shared = True if opts.bindir is not None: self.pyqt_bin_dir = opts.bindir if opts.licensedir is not None: self.license_dir = opts.licensedir if opts.designerplugindir is not None: self.designer_plugin_dir = opts.designerplugindir if opts.qmlplugindir is not None: self.qml_plugin_dir = opts.qmlplugindir if opts.destdir is not None: self.pyqt_module_dir = opts.destdir if len(opts.modules) > 0: self.pyqt_modules = opts.modules if opts.nodesignerplugin: self.no_designer_plugin = True if opts.nodocstrings: self.no_docstrings = True if opts.nopydbus: self.no_pydbus = True if opts.noqmlplugin: self.no_qml_plugin = True if opts.notools: self.no_tools = True if opts.protispublic is not None: self.prot_is_public = opts.protispublic if opts.pydbusincdir is not None: self.pydbus_inc_dir = opts.pydbusincdir if opts.pyuicinterpreter is not None: self.pyuic_interpreter = opts.pyuicinterpreter if opts.qsciapidir is not None: self.qsci_api_dir = opts.qsciapidir # Assume we want to install the API file if we have provided an # installation directory. self.qsci_api = True if opts.qsciapi is not None: self.qsci_api = opts.qsciapi if opts.qsciapidir is not None: self.qsci_api_dir = opts.qsciapidir if opts.sip is not None: self.sip = opts.sip if opts.sipdir is not None: self.pyqt_sip_dir = opts.sipdir elif not opts.install_sipfiles: self.pyqt_sip_dir = '' if opts.sipincdir is not None: self.sip_inc_dir = opts.sipincdir if opts.static: self.static = True if opts.vendenabled: self.vend_enabled = True if opts.vendincdir is not None: self.vend_inc_dir = opts.vendincdir if opts.vendlibdir is not None: self.vend_lib_dir = opts.vendlibdir # Handle any conflicts. if not self.qt_shared: if not self.static: error( "Qt has been built as static libraries so the " "--static argument should be used.") if self.vend_enabled and self.static: error( "Using the VendorID package when building static " "libraries makes no sense.") def get_pylib_link_arguments(self): """ Return a string to append to qmake's LIBS macro to link against the Python interpreter library. """ return qmake_quote('-L' + self.py_pylib_dir) + ' -l' + self.py_pylib_lib @staticmethod def _find_exe(*exes): """ Find an executable, ie. the first on the path. """ path_dirs = os.environ.get('PATH', '').split(os.pathsep) for exe in exes: if sys.platform == 'win32': exe = exe + '.exe' for d in path_dirs: exe_path = os.path.join(d, exe) if os.access(exe_path, os.X_OK): return exe_path return None def create_optparser(target_config): """ Create the parser for the command line. target_config is the target configuration containing default values. """ def store_abspath(option, opt_str, value, parser): setattr(parser.values, option.dest, os.path.abspath(value)) def store_abspath_dir(option, opt_str, value, parser): if not os.path.isdir(value): raise optparse.OptionValueError("'%s' is not a directory" % value) setattr(parser.values, option.dest, os.path.abspath(value)) def store_abspath_exe(option, opt_str, value, parser): if not os.access(value, os.X_OK): raise optparse.OptionValueError("'%s' is not an executable" % value) setattr(parser.values, option.dest, os.path.abspath(value)) def store_abspath_file(option, opt_str, value, parser): if not os.path.isfile(value): raise optparse.OptionValueError("'%s' is not a file" % value) setattr(parser.values, option.dest, os.path.abspath(value)) def store_version(option, opt_str, value, parser): version = version_from_string(value) if version is None: raise optparse.OptionValueError( "'%s' is not a valid version number" % value) setattr(parser.values, option.dest, version) p = optparse.OptionParser(usage="python %prog [opts] [name=value] " "[name+=value]", version=PYQT_VERSION_STR) # Note: we don't use %default to be compatible with Python 2.3. p.add_option("--static", "-k", dest='static', default=False, action='store_true', help="build modules as static libraries") p.add_option("--no-docstrings", dest='nodocstrings', default=False, action='store_true', help="disable the generation of docstrings") p.add_option("--trace", "-r", dest='tracing', default=False, action='store_true', help="build modules with tracing enabled") p.add_option("--debug", "-u", dest='debug', default=False, action='store_true', help="build modules with debugging symbols") p.add_option("--verbose", "-w", dest='verbose', default=False, action='store_true', help="enable verbose output during configuration") p.add_option("--concatenate", "-c", dest='concat', default=False, action='store_true', help="concatenate each module's C++ source files") p.add_option("--concatenate-split", "-j", dest='split', type='int', default=1, metavar="N", help="split the concatenated C++ source files into N pieces " "[default: 1]") # Configuration. g = optparse.OptionGroup(p, title="Configuration") g.add_option("--confirm-license", dest='license_confirmed', default=False, action='store_true', help="confirm acceptance of the license") g.add_option("--license-dir", dest='licensedir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="the license file can be found in DIR [default: " "%s]" % target_config.license_dir) g.add_option("--target-py-version", dest='target_py_version', type='string', action='callback', callback=store_version, metavar="VERSION", help="the major.minor version of the target Python [default: " "%s]" % version_to_string(target_config.py_version, parts=2)) g.add_option("--sysroot", dest='sysroot', type='string', action='callback', callback=store_abspath_dir, metavar="DIR", help="DIR is the target system root directory") g.add_option("--spec", dest='qmakespec', default=None, action='store', metavar="SPEC", help="pass -spec SPEC to qmake [default: %s]" % "don't pass -spec" if target_config.qmake_spec == '' else target_config.qmake_spec) g.add_option("--disable", dest='disabled_modules', default=[], action='append', metavar="MODULE", help="disable the specified MODULE [default: checks for all " "modules will be enabled]") g.add_option("--enable", "-e", dest='modules', default=[], action='append', metavar="MODULE", help="enable checks for the specified MODULE [default: checks for " "all modules will be enabled]") g.add_option("--no-designer-plugin", dest='nodesignerplugin', default=False, action='store_true', help="disable the building of the Python plugin for Qt Designer " "[default: enabled]") g.add_option("--no-qml-plugin", dest='noqmlplugin', default=False, action='store_true', help="disable the building of the Python plugin for qmlscene " "[default: enabled]") g.add_option("--assume-shared", dest='assumeshared', default=False, action='store_true', help="assume that the Qt libraries have been built as shared " "libraries [default: check]") g.add_option("--no-timestamp", "-T", dest='notimestamp', default=False, action='store_true', help="suppress timestamps in the header comments of generated " "code [default: include timestamps]") g.add_option("--configuration", dest='config_file', type='string', action='callback', callback=store_abspath_file, metavar="FILE", help="FILE contains the target configuration") g.add_option("--protected-is-public", dest='protispublic', default=None, action='store_true', help="enable building with 'protected' redefined as 'public' " "[default: %s]" % "enabled" if target_config.prot_is_public else "disabled") g.add_option("--protected-not-public", dest='protispublic', default=None, action='store_false', help="disable building with 'protected' redefined as 'public'") g.add_option("--pyuic5-interpreter", dest='pyuicinterpreter', type='string', default=None, action='callback', callback=store_abspath_exe, metavar="FILE", help="the name of the Python interpreter to run the pyuic5 " "wrapper is FILE [default: %s]" % target_config.pyuic_interpreter) if sys.platform != 'win32': g.add_option("--qmake", "-q", dest='qmake', type='string', default=None, action='callback', callback=store_abspath_exe, metavar="FILE", help="the pathname of qmake is FILE [default: " "%s]" % (target_config.qmake or "search PATH")) g.add_option("--sip", dest='sip', type='string', default=None, action='callback', callback=store_abspath_exe, metavar="FILE", help="the pathname of sip is FILE [default: " "%s]" % (target_config.sip or "None")) g.add_option("--sip-incdir", dest='sipincdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the directory containing the sip.h header file is DIR " "[default: %s]" % target_config.sip_inc_dir) g.add_option("--no-python-dbus", dest='nopydbus', default=False, action='store_true', help="disable the Qt support for the standard Python DBus " "bindings [default: enabled]") g.add_option("--dbus", "-s", dest='pydbusincdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the directory containing the dbus/dbus-python.h header is " "DIR [default: supplied by pkg-config]") p.add_option_group(g) # Installation. g = optparse.OptionGroup(p, title="Installation") g.add_option("--bindir", "-b", dest='bindir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install pyuic5, pyrcc5 and pylupdate5 in DIR [default: " "%s]" % target_config.pyqt_bin_dir) g.add_option("--destdir", "-d", dest='destdir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PyQt5 Python package in DIR [default: " "%s]" % target_config.pyqt_module_dir) g.add_option("--designer-plugindir", dest='designerplugindir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the Python plugin for Qt Designer in DIR " "[default: QT_INSTALL_PLUGINS/designer]") g.add_option("--qml-plugindir", dest='qmlplugindir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the Python plugin for qmlscene in DIR " "[default: QT_INSTALL_PLUGINS/PyQt5]") g.add_option("--no-sip-files", action="store_false", default=True, dest="install_sipfiles", help="disable the installation of the " ".sip files [default: enabled]") g.add_option("--sipdir", "-v", dest='sipdir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PyQt5 .sip files in DIR [default: %s]" % target_config.pyqt_sip_dir) g.add_option("--no-tools", action="store_true", default=False, dest="notools", help="disable the building of pyuic5, pyrcc5 and pylupdate5 " "[default: enabled]") p.add_option_group(g) # Vendor ID. g = optparse.OptionGroup(p, title="VendorID support") g.add_option("--vendorid", "-i", dest='vendenabled', default=False, action='store_true', help="enable checking of signed interpreters using the VendorID " "package [default: %s]" % "enabled" if target_config.vend_enabled else "disabled") g.add_option("--vendorid-incdir", "-l", dest='vendincdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the VendorID header file is installed in DIR [default: " "%s]" % target_config.vend_inc_dir) g.add_option("--vendorid-libdir", "-m", dest='vendlibdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the VendorID library is installed in DIR [default: " "%s]" % target_config.vend_lib_dir) p.add_option_group(g) # QScintilla. g = optparse.OptionGroup(p, title="QScintilla support") g.add_option("--qsci-api", "-a", dest='qsciapi', default=None, action='store_true', help="always install the PyQt API file for QScintilla [default: " "install only if QScintilla installed]") g.add_option("--no-qsci-api", dest='qsciapi', default=None, action='store_false', help="do not install the PyQt API file for QScintilla [default: " "install only if QScintilla installed]") g.add_option("--qsci-api-destdir", "-n", dest='qsciapidir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PyQt5 API file for QScintilla in DIR [default: " "QT_INSTALL_DATA/qsci]") p.add_option_group(g) return p def check_modules(target_config, disabled_modules, verbose): """ Check which modules can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ target_config.pyqt_modules.append('QtCore') check_module(target_config, disabled_modules, verbose, 'QtGui', 'qfont.h', 'new QFont()') check_module(target_config, disabled_modules, verbose, 'QtHelp', 'qhelpengine.h', 'new QHelpEngine("foo")') check_module(target_config, disabled_modules, verbose, 'QtMultimedia', 'QAudioDeviceInfo', 'new QAudioDeviceInfo()') check_module(target_config, disabled_modules, verbose, 'QtMultimediaWidgets', 'QVideoWidget', 'new QVideoWidget()') check_module(target_config, disabled_modules, verbose, 'QtNetwork', 'qhostaddress.h', 'new QHostAddress()') check_module(target_config, disabled_modules, verbose, 'QtOpenGL', 'qgl.h', 'new QGLWidget()') check_module(target_config, disabled_modules, verbose, 'QtPrintSupport', 'qprinter.h', 'new QPrinter()') check_module(target_config, disabled_modules, verbose, 'QtQml', 'qjsengine.h', 'new QJSEngine()') check_module(target_config, disabled_modules, verbose, 'QtQuick', 'qquickwindow.h', 'new QQuickWindow()') check_module(target_config, disabled_modules, verbose, 'QtSql', 'qsqldatabase.h', 'new QSqlDatabase()') check_module(target_config, disabled_modules, verbose, 'QtSvg', 'qsvgwidget.h', 'new QSvgWidget()') check_module(target_config, disabled_modules, verbose, 'QtTest', 'QtTest', 'QTest::qSleep(0)') check_module(target_config, disabled_modules, verbose, 'QtWebKit', 'qwebkitglobal.h', 'qWebKitVersion()') check_module(target_config, disabled_modules, verbose, 'QtWebKitWidgets', 'qwebpage.h', 'new QWebPage()') check_module(target_config, disabled_modules, verbose, 'QtWidgets', 'qwidget.h', 'new QWidget()') check_module(target_config, disabled_modules, verbose, 'QtXml', 'qdom.h', 'new QDomDocument()') check_module(target_config, disabled_modules, verbose, 'QtXmlPatterns', 'qxmlname.h', 'new QXmlName()') if target_config.qt_shared: check_module(target_config, disabled_modules, verbose, 'QtDesigner', 'QExtensionFactory', 'new QExtensionFactory()') else: inform("QtDesigner module disabled with static Qt libraries.") check_module(target_config, disabled_modules, verbose, 'QAxContainer', 'qaxobject.h', 'new QAxObject()') check_module(target_config, disabled_modules, verbose, 'QtDBus', 'qdbusconnection.h', 'QDBusConnection::systemBus()') if target_config.qt_version >= 0x050100: check_5_1_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050200: check_5_2_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050300: check_5_3_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050400: check_5_4_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050500: check_5_5_modules(target_config, disabled_modules, verbose) def check_5_1_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.1 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ # Check the OpenGL functions. if 'PyQt_OpenGL' in target_config.pyqt_disabled_features: pass elif 'PyQt_Desktop_OpenGL' in target_config.pyqt_disabled_features: check_module(target_config, disabled_modules, verbose, '_QOpenGLFunctions_ES2', 'qopenglfunctions_es2.h', 'new QOpenGLFunctions_ES2()') else: desktop_versions = ( '1_0', '1_1', '1_2', '1_3', '1_4', '1_5', '2_0', '2_1', '3_0', '3_1', '3_2_Compatibility', '3_2_Core', '3_3_Compatibility', '3_3_Core', '4_0_Compatibility', '4_0_Core', '4_1_Compatibility', '4_1_Core', '4_2_Compatibility', '4_2_Core', '4_3_Compatibility', '4_3_Core', '4_4_Compatibility', '4_4_Core', '4_5_Compatibility', '4_5_Core') for ogl in desktop_versions: ogl_module = '_QOpenGLFunctions_' + ogl ogl_h = 'qopenglfunctions_' + ogl.lower() + '.h' ogl_ctor = 'new QOpenGLFunctions_' + ogl + '()' check_module(target_config, disabled_modules, verbose, ogl_module, ogl_h, ogl_ctor) check_module(target_config, disabled_modules, verbose, 'QtSensors', 'qsensor.h', 'new QSensor(QByteArray())') check_module(target_config, disabled_modules, verbose, 'QtSerialPort', 'qserialport.h', 'new QSerialPort()') check_module(target_config, disabled_modules, verbose, 'QtX11Extras', 'QX11Info', 'QX11Info::display()') def check_5_2_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.2 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtBluetooth', 'qbluetoothaddress.h', 'new QBluetoothAddress()') check_module(target_config, disabled_modules, verbose, 'QtMacExtras', 'qmacpasteboardmime.h', 'class Foo : public QMacPasteboardMime {}') check_module(target_config, disabled_modules, verbose, 'QtPositioning', 'qgeoaddress.h', 'new QGeoAddress()') check_module(target_config, disabled_modules, verbose, 'QtWinExtras', 'QtWin', 'QtWin::isCompositionEnabled()') def check_5_3_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.3 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtQuickWidgets', 'qquickwidget.h', 'new QQuickWidget()') check_module(target_config, disabled_modules, verbose, 'QtWebSockets', 'qwebsocket.h', 'new QWebSocket()') check_module(target_config, disabled_modules, verbose, 'Enginio', 'enginioclient.h', 'new EnginioClient()') def check_5_4_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.4 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtWebChannel', 'qwebchannel.h', 'new QWebChannel()') check_module(target_config, disabled_modules, verbose, 'QtWebEngineWidgets', 'qwebengineview.h', 'new QWebEngineView()') def check_5_5_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.5 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtLocation', 'qplace.h', 'new QPlace()') check_module(target_config, disabled_modules, verbose, 'QtNfc', 'qnearfieldmanager.h', 'new QNearFieldManager()') def generate_makefiles(target_config, verbose, no_timestamp, parts, tracing): """ Generate the makefiles to build everything. target_config is the target configuration. verbose is set if the output is to be displayed. no_timestamp is set if the .sip files should exclude the timestamp. parts is the number of parts the generated code should be split into. tracing is set if the generated code should include tracing calls. """ # For the top-level .pro file. toplevel_pro = 'PyQt5.pro' subdirs = [] # Set the SIP platform, version and feature flags. sip_flags = get_sip_flags(target_config) # Go through the modules. for mname in target_config.pyqt_modules: metadata = MODULE_METADATA[mname] if metadata.qpy_lib: sp_qpy_dir = source_path('qpy', mname) qpy_c_sources = [os.path.relpath(f, mname) for f in glob.glob(os.path.join(sp_qpy_dir, '*.c'))] qpy_cpp_sources = [os.path.relpath(f, mname) for f in glob.glob(os.path.join(sp_qpy_dir, '*.cpp'))] qpy_headers = [os.path.relpath(f, mname) for f in glob.glob(os.path.join(sp_qpy_dir, '*.h'))] qpy_sources = qpy_c_sources + qpy_cpp_sources else: qpy_sources = [] qpy_headers = [] generate_sip_module_code(target_config, verbose, no_timestamp, parts, tracing, mname, sip_flags, qpy_sources, qpy_headers) subdirs.append(mname) # Generate the composite module. qtmod_sipdir = os.path.join('sip', 'Qt') mk_clean_dir(qtmod_sipdir) qtmod_sipfile = os.path.join(qtmod_sipdir, 'Qtmod.sip') f = open_for_writing(qtmod_sipfile) f.write('''%CompositeModule PyQt5.Qt ''') for mname in COMPOSITE_COMPONENTS: if mname in target_config.pyqt_modules: f.write('%%Include %s/%smod.sip\n' % (mname, mname)) f.close() generate_sip_module_code(target_config, verbose, no_timestamp, parts, tracing, 'Qt', sip_flags) subdirs.append('Qt') if not target_config.no_tools: # Generate pylupdate5 and pyrcc5. for tool in ('pylupdate', 'pyrcc'): generate_application_makefile(target_config, verbose, tool) subdirs.append(tool) # Generate the pyuic5 wrapper. pyuic_wrapper = generate_pyuic5_wrapper(target_config) # Generate the Qt Designer plugin. if not target_config.no_designer_plugin and 'QtDesigner' in target_config.pyqt_modules: if generate_plugin_makefile(target_config, verbose, 'designer', target_config.designer_plugin_dir, "Qt Designer"): subdirs.append('designer') # Generate the qmlscene plugin. if not target_config.no_qml_plugin and 'QtQml' in target_config.pyqt_modules: if generate_plugin_makefile(target_config, verbose, 'qmlscene', target_config.qml_plugin_dir, "qmlscene"): subdirs.append('qmlscene') rewrite_qmldir(target_config, 'Charts', source_path('examples', 'quick', 'tutorials', 'extending', 'chapter6-plugins')) # Generate the QScintilla API file. if target_config.qsci_api: inform("Generating the QScintilla API file...") f = open_for_writing('PyQt5.api') for mname in target_config.pyqt_modules: api = open(mname + '.api') for l in api: f.write('PyQt5.' + l) api.close() os.remove(mname + '.api') f.close() # Generate the Python dbus module. if target_config.pydbus_module_dir != '': mname = 'dbus' mk_dir(mname) sp_src_dir = source_path(mname) includepath = ' '.join(target_config.dbus_inc_dirs) lib_dirs = ['-L' + l for l in target_config.dbus_lib_dirs] lib_names = ['-l' + l for l in target_config.dbus_libs] libs = ' '.join(lib_dirs + lib_names) generate_module_makefile(target_config, verbose, mname, includepath=includepath, libs=libs, install_path=target_config.pydbus_module_dir, src_dir=sp_src_dir) subdirs.append(mname) # Generate the top-level .pro file. inform("Generating the top-level .pro file...") out_f = open_for_writing(toplevel_pro) out_f.write('''TEMPLATE = subdirs CONFIG += ordered nostrip SUBDIRS = %s init_py.files = %s init_py.path = %s/PyQt5 INSTALLS += init_py ''' % (' '.join(subdirs), source_path('__init__.py'), target_config.pyqt_module_dir)) # Install the uic module and the pyuic5 wrapper. out_f.write(''' uic_package.files = %s uic_package.path = %s/PyQt5 INSTALLS += uic_package ''' % (source_path('pyuic', 'uic'), target_config.pyqt_module_dir)) if not target_config.no_tools: out_f.write(''' pyuic5.files = %s pyuic5.path = %s INSTALLS += pyuic5 ''' % (pyuic_wrapper, target_config.pyqt_bin_dir)) # Install the QScintilla .api file. if target_config.qsci_api: out_f.write(''' qscintilla_api.files = PyQt5.api qscintilla_api.path = %s/api/python INSTALLS += qscintilla_api ''' % target_config.qsci_api_dir) out_f.close() # Make the pyuic5 wrapper executable on platforms that support it. If we # did it after running qmake then (on Linux) the execute bits would be # stripped on installation. if not target_config.no_tools and target_config.py_platform != 'win32': inform("Making the %s wrapper executable..." % pyuic_wrapper) sbuf = os.stat(pyuic_wrapper) mode = sbuf.st_mode mode |= (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) os.chmod(pyuic_wrapper, mode) # Generate the makefiles. inform("Generating the Makefiles...") run_qmake(target_config, verbose, toplevel_pro, recursive=True) def generate_plugin_makefile(target_config, verbose, plugin_dir, install_dir, plugin_name): """ Generate the makefile for a plugin that embeds the Python interpreter. target_config is the target configuration. verbose is set if the output is to be displayed. plugin_dir is the name of the directory containing the plugin implementation. install_dir is the name of the directory that the plugin will be installed in. plugin_name is a descriptive name of the plugin to be used in user messages. Returns True if the makefile could be generated. """ # Check we have a shared interpreter library. if target_config.py_pyshlib == '': inform("The %s plugin was disabled because a dynamic Python library couldn't be found." % plugin_name) return False # Create the qmake project file. inform("Generating the %s plugin .pro file..." % plugin_name) sp_plugin_dir = source_path(plugin_dir) fin = open(os.path.join(sp_plugin_dir, '%s.pro-in' % plugin_dir)) prj = fin.read() fin.close() prj = prj.replace('@QTCONFIG@', 'debug' if target_config.debug else 'release') prj = prj.replace('@PYINCDIR@', qmake_quote(target_config.py_inc_dir)) prj = prj.replace('@SIPINCDIR@', qmake_quote(target_config.sip_inc_dir)) prj = prj.replace('@PYLINK@', target_config.get_pylib_link_arguments()) prj = prj.replace('@PYSHLIB@', target_config.py_pyshlib) prj = prj.replace('@QTPLUGINDIR@', qmake_quote(install_dir)) pro_name = os.path.join(plugin_dir, '%s.pro' % plugin_dir) mk_dir(plugin_dir) fout = open_for_writing(pro_name) fout.write(prj) if sp_plugin_dir != plugin_dir: fout.write(''' INCLUDEPATH += %s VPATH = %s ''' % (qmake_quote(sp_plugin_dir), qmake_quote(sp_plugin_dir))) fout.write('\n'.join(target_config.qmake_variables) + '\n') fout.close() return True def generate_application_makefile(target_config, verbose, src_dir): """ Create the makefile for a QtXml based application. target_config is the target configuration. verbose is set if the output is to be displayed. src_dir is the name of the directory containing the source files. (It is assumed that it is not a path.) """ mk_dir(src_dir) sp_src_dir = source_path(src_dir) # The standard naming convention. app = src_dir + '5' inform("Generating the .pro file for %s..." % app) pro_lines = ['TARGET = %s' % app] pro_lines.extend(['TEMPLATE = app', 'QT -= gui', 'QT += xml']) pro_lines.append( 'CONFIG += warn_on %s' % ('debug' if target_config.debug else 'release')) if target_config.py_platform == 'win32': pro_lines.append('CONFIG += console') elif target_config.py_platform == 'darwin': pro_lines.append('CONFIG -= app_bundle') # Work around QTBUG-39300. pro_lines.append('CONFIG -= android_install') pro_lines.append('target.path = %s' % target_config.pyqt_bin_dir) pro_lines.append('INSTALLS += target') if sp_src_dir != src_dir: pro_lines.append('INCLUDEPATH += %s' % qmake_quote(sp_src_dir)) pro_lines.append('VPATH = %s' % qmake_quote(sp_src_dir)) pro_lines.extend(pro_sources(sp_src_dir)) pro_lines.extend(target_config.qmake_variables) pro_name = os.path.join(src_dir, src_dir + '.pro') pro = open_for_writing(pro_name) pro.write('\n'.join(pro_lines)) pro.close() def pro_sources(src_dir, other_headers=None, other_sources=None): """ Return the HEADERS, SOURCES and OBJECTIVE_SOURCES variables for a .pro file by introspecting a directory. src_dir is the name of the directory. other_headers is an optional list of other header files. other_sources is an optional list of other source files. """ pro_lines = [] headers = [os.path.basename(f) for f in glob.glob('%s/*.h' % src_dir)] if other_headers is not None: headers += other_headers if len(headers) != 0: pro_lines.append('HEADERS = %s' % ' '.join(headers)) sources = [os.path.basename(f) for f in glob.glob('%s/*.c' % src_dir)] for f in glob.glob('%s/*.cpp' % src_dir): f = os.path.basename(f) # Exclude any moc generated C++ files that might be around from a # previous build. if not f.startswith('moc_'): sources.append(f) if other_sources is not None: sources += other_sources if len(sources) != 0: pro_lines.append('SOURCES = %s' % ' '.join(sources)) objective_sources = [ os.path.basename(f) for f in glob.glob('%s/*.mm' % src_dir)] if len(objective_sources) != 0: pro_lines.append('OBJECTIVE_SOURCES = %s' % ' '.join(objective_sources)) return pro_lines def generate_pyuic5_wrapper(target_config): """ Create a platform dependent executable wrapper for the pyuic.py script. target_config is the target configuration. Returns the platform specific name of the wrapper. """ wrapper = 'pyuic5.bat' if target_config.py_platform == 'win32' else 'pyuic5' inform("Generating the %s wrapper..." % wrapper) exe = quote(target_config.pyuic_interpreter) wf = open_for_writing(wrapper) if target_config.py_platform == 'win32': wf.write('@%s -m PyQt5.uic.pyuic %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9\n' % exe) else: wf.write('#!/bin/sh\n') wf.write('exec %s -m PyQt5.uic.pyuic ${1+"$@"}\n' % exe) wf.close() return wrapper def rewrite_qmldir(target_config, module, module_dir): """ Re-write a qmldir file for a module that used the qmlscene plugin. target_config is the target configuration. module is the name of the QML module. module_dir is the name of the directory containing the QML module. """ qmldir_fn = os.path.join(module_dir, module, 'qmldir') inform("Re-writing %s..." % qmldir_fn) qmldir = open_for_writing(qmldir_fn) qmldir.write('module %s\nplugin pyqt5qmlplugin %s\n' % (module, target_config.qml_plugin_dir)) qmldir.close() def quote(path): """ Return a path with quotes added if it contains spaces. path is the path. """ if ' ' in path: path = '"%s"' % path return path def qmake_quote(path): """ Return a path quoted for qmake if it contains spaces. path is the path. """ if ' ' in path: path = '$$quote(%s)' % path return path def inform_user(target_config, sip_version): """ Tell the user the values that are going to be used. target_config is the target configuration. sip_version is the SIP version string. """ if target_config.qt_licensee == '': detail = '' elif target_config.qt_licensee in OPEN_SOURCE_LICENSEES: detail = " (Open Source)" else: detail = " licensed to %s" % target_config.qt_licensee inform("Qt v%s%s is being used." % ( version_to_string(target_config.qt_version), detail)) inform("The qmake executable is %s." % target_config.qmake) inform( "Qt is built as a %s library." % ( "shared" if target_config.qt_shared else "static")) if target_config.sysroot != '': inform("The system root directory is %s." % target_config.sysroot) inform("SIP %s is being used." % sip_version) inform("The sip executable is %s." % target_config.sip) inform("These PyQt5 modules will be built: %s." % ', '.join(target_config.pyqt_modules)) inform("The PyQt5 Python package will be installed in %s." % target_config.pyqt_module_dir) if target_config.no_docstrings: inform("PyQt5 is being built without generated docstrings.") else: inform("PyQt5 is being built with generated docstrings.") if target_config.prot_is_public: inform("PyQt5 is being built with 'protected' redefined as 'public'.") if target_config.no_designer_plugin: inform("The Designer plugin will not be built.") else: inform("The Designer plugin will be installed in %s." % target_config.designer_plugin_dir) if target_config.no_qml_plugin: inform("The qmlscene plugin will not be built.") else: inform("The qmlscene plugin will be installed in %s." % target_config.qml_plugin_dir) if target_config.qsci_api: inform( "The QScintilla API file will be installed in %s." % os.path.join( target_config.qsci_api_dir, 'api', 'python')) if target_config.pydbus_module_dir: inform( "The dbus support module will be installed in %s." % target_config.pydbus_module_dir) if target_config.pyqt_sip_dir: inform("The PyQt5 .sip files will be installed in %s." % target_config.pyqt_sip_dir) if target_config.no_tools: inform("pyuic5, pyrcc5 and pylupdate5 will not be built.") else: inform("pyuic5, pyrcc5 and pylupdate5 will be installed in %s." % target_config.pyqt_bin_dir) inform("The interpreter used by pyuic5 is %s." % target_config.pyuic_interpreter) if target_config.vend_enabled: inform("PyQt5 will only be usable with signed interpreters.") def run_qmake(target_config, verbose, pro_name, makefile_name='', fatal=True, recursive=False): """ Run qmake against a .pro file. target_config is the target configuration. verbose is set if the output is to be displayed. pro_name is the name of the .pro file. makefile_name is the name of the makefile to generate (and defaults to Makefile). fatal is set if a qmake failure is considered a fatal error, otherwise False is returned if qmake fails. recursive is set to use the -recursive flag. """ # qmake doesn't behave consistently if it is not run from the directory # containing the .pro file - so make sure it is. pro_dir, pro_file = os.path.split(pro_name) if pro_dir != '': cwd = os.getcwd() os.chdir(pro_dir) else: cwd = None mf = makefile_name if makefile_name != '' else 'Makefile' remove_file(mf) args = [quote(target_config.qmake)] if target_config.qmake_spec != target_config.default_qmake_spec: args.append('-spec') args.append(target_config.qmake_spec) if makefile_name != '': args.append('-o') args.append(makefile_name) if recursive: args.append('-recursive') args.append(pro_file) run_command(' '.join(args), verbose) if not os.access(mf, os.F_OK): if fatal: error( "%s failed to create a makefile from %s." % (target_config.qmake, pro_name)) return False # Restore the current directory. if cwd is not None: os.chdir(cwd) return True def run_make(target_config, verbose, exe, makefile_name): """ Run make against a makefile to create an executable. target_config is the target configuration. verbose is set if the output is to be displayed. exe is the platform independent name of the executable that will be created. makefile_name is the name of the makefile. Returns the platform specific name of the executable, or None if an executable wasn't created. """ # Guess the name of make and set the default target and platform specific # name of the executable. if target_config.py_platform == 'win32': if target_config.qmake_spec == 'win32-borland': make = 'bmake' elif target_config.qmake_spec == 'win32-g++': make = 'mingw32-make' else: make = 'nmake' if target_config.debug: makefile_target = 'debug' platform_exe = os.path.join('debug', exe + '.exe') else: makefile_target = 'release' platform_exe = os.path.join('release', exe + '.exe') else: make = 'make' makefile_target = '' if target_config.py_platform == 'darwin': platform_exe = os.path.join(exe + '.app', 'Contents', 'MacOS', exe) else: platform_exe = os.path.join('.', exe) remove_file(platform_exe) args = [make, '-f', makefile_name] if makefile_target != '': args.append(makefile_target) run_command(' '.join(args), verbose) return platform_exe if os.access(platform_exe, os.X_OK) else None def run_command(cmd, verbose): """ Run a command and display the output if requested. cmd is the command to run. verbose is set if the output is to be displayed. """ if verbose: sys.stdout.write(cmd + "\n") fout = get_command_output(cmd, and_stderr=True) # Read stdout and stderr until there is no more output. lout = fout.readline() while lout: if verbose: if sys.hexversion >= 0x03000000: sys.stdout.write(str(lout, encoding=sys.stdout.encoding)) else: sys.stdout.write(lout) lout = fout.readline() fout.close() try: os.wait() except: pass def remove_file(fname): """ Remove a file which may or may not exist. fname is the name of the file. """ try: os.remove(fname) except OSError: pass def check_vendorid(target_config): """ See if the VendorID library and include file can be found. target_config is the target configuration. """ if target_config.py_version >= 0x030000: # VendorID doesn't support Python v3. target_config.vend_enabled = False elif target_config.vend_enabled: if os.access(os.path.join(target_config.vend_inc_dir, 'vendorid.h'), os.F_OK): if glob.glob(os.path.join(target_config.vend_lib_dir, '*vendorid*')): inform("The VendorID package was found.") else: target_config.vend_enabled = False inform( "The VendorID library could not be found in %s and so " "signed interpreter checking will be disabled. If the " "VendorID package is installed then use the " "--vendorid-libdir argument to explicitly specify the " "correct directory." % target_config.vend_lib_dir) else: target_config.vend_enabled = False inform( "vendorid.h could not be found in %s and so signed " "interpreter checking will be disabled. If the VendorID " "package is installed then use the --vendorid-incdir " "argument to explicitly specify the correct directory." % target_config.vend_inc_dir) def get_command_output(cmd, and_stderr=False): """ Return a pipe from which a command's output can be read. cmd is the command. and_stderr is set if the output should include stderr as well as stdout. """ try: import subprocess except ImportError: if and_stderr: _, sout = os.popen4(cmd) else: _, sout, _ = os.popen3(cmd) return sout if and_stderr: stderr = subprocess.STDOUT else: stderr = subprocess.PIPE p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=stderr) return p.stdout def source_path(*names): """ Return the native path for a list of components rooted at the directory containing this script. names is the sequence of component names. """ path = [os.path.dirname(os.path.abspath(__file__))] + list(names) return os.path.join(*path) def check_dbus(target_config, verbose): """ See if the DBus support module should be built and update the target configuration accordingly. target_config is the target configuration. verbose is set if the output is to be displayed. """ if target_config.no_pydbus or not os.path.isdir(source_path('dbus')): return inform("Checking to see if the dbus support module should be built...") cmd = 'pkg-config --cflags-only-I --libs dbus-1' if verbose: sys.stdout.write(cmd + "\n") sout = get_command_output(cmd) iflags = sout.read().strip() if not iflags: inform("DBus v1 does not seem to be installed.") return if sys.hexversion >= 0x03000000: iflags = iflags.decode() for f in iflags.split(): if f.startswith('-I'): target_config.dbus_inc_dirs.append(f[2:]) elif f.startswith('-L'): target_config.dbus_lib_dirs.append(f[2:]) elif f.startswith('-l'): target_config.dbus_libs.append(f[2:]) try: import dbus.mainloop except: inform("The Python dbus module doesn't seem to be installed.") return target_config.pydbus_module_dir = dbus.mainloop.__path__[0] # Try and find dbus-python.h. We don't use pkg-config because it is broken # for dbus-python (at least for versions up to and including v0.81.0). # Instead we look where DBus itself is installed - which in most cases will # be where dbus-python is also installed. if target_config.pydbus_inc_dir != '': dlist = [target_config.pydbus_inc_dir] else: dlist = target_config.dbus_inc_dirs for d in dlist: if os.access(os.path.join(d, 'dbus', 'dbus-python.h'), os.F_OK): if d not in target_config.dbus_inc_dirs: target_config.dbus_inc_dirs.append(d) break else: inform( "dbus/dbus-python.h could not be found and so the DBus " "support module will be disabled. If dbus-python v0.80 or " "later is installed then use the --dbus argument to " "explicitly specify the directory containing " "dbus/dbus-python.h.") target_config.pydbus_module_dir = '' def check_module(target_config, disabled_modules, verbose, mname, incfile, test): """ See if a module can be built and, if so, add it to the target configurations list of modules. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. mname is the name of the module. incfile is the name of the include file needed for the test. test is a C++ statement being used for the test. """ if mname in disabled_modules: return # Check the module's main .sip file exists. if not os.access(source_path('sip', mname, mname + 'mod.sip'), os.F_OK): return inform("Checking to see if the %s module should be built..." % mname) source = '''#include <%s> int main(int, char **) { %s; } ''' % (incfile, test) if compile_qt_program(target_config, verbose, 'cfgtest_' + mname, source, mname) is not None: target_config.pyqt_modules.append(mname) def compile_qt_program(target_config, verbose, name, source, mname, debug=None): """ Compile the source of a Qt program and return the name of the executable or None if it couldn't be created. target_config is the target configuration. verbose is set if the output is to be displayed. name is the root name of the program from which all program-specific file names will be derived. source is the C++ source of the program. mname is the name of the Qt module that the program uses. debug is set if debug, rather than release, mode is to be used. If it is None then the mode is taken from the target configuration. """ metadata = MODULE_METADATA[mname] # The derived file names. name_pro = name + '.pro' name_makefile = name + '.mk' name_source = name + '.cpp' # Create the .pro file. pro_lines = [] pro_add_qt_dependencies(target_config, metadata, pro_lines, debug) pro_lines.append('TARGET = %s' % name) pro_lines.append('SOURCES = %s' % name_source) f = open_for_writing(name_pro) f.write('\n'.join(pro_lines)) f.close() # Create the source file. f = open_for_writing(name_source) f.write(source) f.close() if not run_qmake(target_config, verbose, name_pro, name_makefile, fatal=False): return None return run_make(target_config, verbose, name, name_makefile) def pro_add_qt_dependencies(target_config, metadata, pro_lines, debug=None): """ Add the Qt dependencies of a module to a .pro file. target_config is the target configuration. metadata is the module's meta-data. pro_lines is the list of lines making up the .pro file that is updated. debug is set if debug, rather than release, mode is to be used. If it is None then the mode is taken from the target configuration. """ if debug is None: debug = target_config.debug add = [] remove = [] for qt in metadata.qmake_QT: if qt.startswith('-'): remove.append(qt[1:]) else: add.append(qt) if len(remove) != 0: pro_lines.append('QT -= %s' % ' '.join(remove)) if len(add) != 0: pro_lines.append('QT += %s' % ' '.join(add)) pro_lines.append( 'CONFIG += %s' % ('debug qml_debug' if debug else 'release')) if metadata.cpp11: pro_lines.append('CONFIG += c++11') pro_lines.extend(target_config.qmake_variables) def get_sip_flags(target_config): """ Return the SIP platform, version and feature flags. target_config is the target configuration. """ sip_flags = [] # If we don't check for signed interpreters, we exclude the 'VendorID' # feature if target_config.py_version < 0x030000 and not target_config.vend_enabled: sip_flags.append('-x') sip_flags.append('VendorID') # Handle the platform tag. if target_config.py_platform == 'win32': plattag = 'WS_WIN' elif target_config.py_platform == 'darwin': plattag = 'WS_MACX' else: plattag = 'WS_X11' sip_flags.append('-t') sip_flags.append(plattag) # Handle the Qt version tag. sip_flags.append('-t') sip_flags.append(version_to_sip_tag(target_config.qt_version)) # Handle any feature flags. for xf in target_config.pyqt_disabled_features: sip_flags.append('-x') sip_flags.append(xf) # Handle the version specific Python features. if target_config.py_version < 0x030000: sip_flags.append('-x') sip_flags.append('Py_v3') return ' '.join(sip_flags) def mk_clean_dir(name): """ Create a clean (ie. empty) directory. name is the name of the directory. """ try: shutil.rmtree(name) except: pass try: os.makedirs(name) except: error("Unable to create the %s directory." % name) def mk_dir(name): """ Ensure a directory exists, creating it if necessary. name is the name of the directory. """ try: os.makedirs(name) except: pass def generate_sip_module_code(target_config, verbose, no_timestamp, parts, tracing, mname, sip_flags, qpy_sources=None, qpy_headers=None): """ Generate the code for a module. target_config is the target configuration. verbose is set if the output is to be displayed. no_timestamp is set if the .sip files should exclude the timestamp. parts is the number of parts the generated code should be split into. tracing is set if the generated code should include tracing calls. mname is the name of the module to generate the code for. sip_flags is the string of flags to pass to sip. qpy_sources is the optional list of QPy support code source files. qpy_headers is the optional list of QPy support code header files. """ inform("Generating the C++ source for the %s module..." % mname) mk_clean_dir(mname) # Build the SIP command line. argv = [quote(target_config.sip), '-w', sip_flags] # Make sure any unknown Qt version gets treated as the latest Qt v5. argv.append('-B') argv.append('Qt_6_0_0') if no_timestamp: argv.append('-T') if not target_config.no_docstrings: argv.append('-o'); if target_config.prot_is_public: argv.append('-P'); if parts != 0: argv.append('-j') argv.append(str(parts)) if tracing: argv.append('-r') if target_config.qsci_api and mname != 'Qt': argv.append('-a') argv.append(mname + '.api') # Pass the absolute pathname so that #line files are absolute. argv.append('-c') argv.append(os.path.abspath(mname)) argv.append('-I') argv.append('sip') sp_sip_dir = source_path('sip') if sp_sip_dir != 'sip': # SIP assumes POSIX style separators. sp_sip_dir = sp_sip_dir.replace(os.pathsep, '/') argv.append('-I') argv.append(sp_sip_dir) # The .sip files for the Qt modules will be in the out-of-tree directory. if mname == 'Qt': sip_dir = 'sip' else: sip_dir = sp_sip_dir # Add the name of the .sip file. argv.append('%s/%s/%smod.sip' % (sip_dir, mname, mname)) run_command(' '.join(argv), verbose) # Check the result. if mname == 'Qt': file_check = 'sip%scmodule.c' % mname else: file_check = 'sipAPI%s.h' % mname if not os.access(os.path.join(mname, file_check), os.F_OK): error("Unable to create the C++ code.") # Embed the sip flags. if mname == 'QtCore': inform("Embedding sip flags...") in_f = open(source_path('qpy', 'QtCore', 'qpycore_post_init.cpp.in')) out_f = open_for_writing( os.path.join('QtCore', 'qpycore_post_init.cpp')) for line in in_f: line = line.replace('@@PYQT_SIP_FLAGS@@', sip_flags) out_f.write(line) in_f.close() out_f.close() # Generate the makefile. includepath = libs = '' if target_config.vend_enabled: if mname == 'QtCore': includepath = target_config.vend_inc_dir libs = '-L%s -lvendorid' % target_config.vend_lib_dir generate_module_makefile(target_config, verbose, mname, includepath=includepath, libs=libs, qpy_sources=qpy_sources, qpy_headers=qpy_headers) def generate_module_makefile(target_config, verbose, mname, includepath='', libs='', install_path='', src_dir='', qpy_sources=None, qpy_headers=None): """ Generate the makefile for a module. target_config is the target configuration. verbose is set if the output is to be displayed. mname is the name of the module. includepath is an optional additional value of INCLUDEPATH. libs is an optional additional value of LIBS. install_path is the optional name of the directory that the module will be installed in. src_dir is the optional source directory (by default the sources are assumed to be in the module directory). qpy_sources is the optional list of QPy support code source files. qpy_headers is the optional list of QPy support code header files. """ inform("Generating the .pro file for the %s module..." % mname) if src_dir == '': src_dir = mname target_name = mname metadata = MODULE_METADATA[mname] if metadata.qmake_TARGET != '': target_name = metadata.qmake_TARGET pro_lines = ['TEMPLATE = lib'] pro_lines.append('CONFIG += warn_on %s' % ('staticlib' if target_config.static else 'plugin')) pro_add_qt_dependencies(target_config, metadata, pro_lines) # Work around QTBUG-39300. pro_lines.append('CONFIG -= android_install') if not target_config.static: debug_suffix = get_win32_debug_suffix(target_config.debug) link = target_config.get_pylib_link_arguments() shared = ''' win32 { PY_MODULE = %s%s.pyd target.files = %s%s.pyd LIBS += %s } else { PY_MODULE = %s.so target.files = %s.so } ''' % (target_name, debug_suffix, target_name, debug_suffix, link, target_name, target_name) pro_lines.extend(shared.split('\n')) # Without the 'no_check_exist' magic the target.files must exist when # qmake is run otherwise the install and uninstall targets are not # generated. pro_lines.append('target.CONFIG = no_check_exist') if install_path == '': install_path = target_config.pyqt_module_dir + '/PyQt5' pro_lines.append('target.path = %s' % install_path) pro_lines.append('INSTALLS += target') if target_config.pyqt_sip_dir: sip_files = [os.path.relpath(f, mname) for f in glob.glob(source_path('sip', mname, '*.sip'))] if len(sip_files) != 0: pro_lines.append('sip.path = %s/%s' % (target_config.pyqt_sip_dir, mname)) pro_lines.append('sip.files = %s' % ' '.join(sip_files)) pro_lines.append('INSTALLS += sip') if 'g++' in target_config.qmake_spec or 'clang' in target_config.qmake_spec: pro_lines.append('QMAKE_CXXFLAGS += -fno-exceptions') # This optimisation could apply to other platforms. if 'linux' in target_config.qmake_spec and not target_config.static: if target_config.py_version >= 0x030000: entry_point = 'PyInit_%s' % target_name else: entry_point = 'init%s' % target_name exp = open_for_writing(os.path.join(mname, target_name + '.exp')) exp.write('{ global: %s; local: *; };' % entry_point) exp.close() pro_lines.append('QMAKE_LFLAGS += -Wl,--version-script=%s.exp' % target_name) if target_config.prot_is_public: pro_lines.append('DEFINES += SIP_PROTECTED_IS_PUBLIC protected=public') # This is needed for Windows. pro_lines.append('INCLUDEPATH += .') # Make sure the SIP include directory is searched before the Python include # directory if they are different. pro_lines.append('INCLUDEPATH += %s' % target_config.sip_inc_dir) if target_config.py_inc_dir != target_config.sip_inc_dir: pro_lines.append('INCLUDEPATH += %s' % target_config.py_inc_dir) pro_add_qpy(mname, metadata, pro_lines) if includepath != '': pro_lines.append('INCLUDEPATH += %s' % includepath) if libs != '': pro_lines.append('LIBS += %s' % libs) if not target_config.static: # For Qt v5.5 and later, Make sure these frameworks are already loaded # by the time the libqcocoa.dylib plugin gets loaded. This problem is # due to be fixed in Qt v5.6. extra_lflags = '' if mname == 'QtGui': # Note that this workaround is flawed because it looks at the PyQt # configuration rather than the Qt configuration. It will fail if # the user is building a PyQt without the QtDBus module against a # Qt with the QtDBus library. However it will be fine for the # common case where the PyQt configuration reflects the Qt # configuration. fwks = [] for m in ('QtPrintSupport', 'QtDBus', 'QtWidgets'): if m in target_config.pyqt_modules: fwks.append('-framework ' + m) if len(fwks) != 0: extra_lflags = 'QMAKE_LFLAGS += "%s"\n ' % ' '.join(fwks) shared = ''' win32 { QMAKE_POST_LINK = $(COPY_FILE) $(DESTDIR_TARGET) $$PY_MODULE } else { QMAKE_POST_LINK = $(COPY_FILE) $(TARGET) $$PY_MODULE } macx { QMAKE_LFLAGS += "-undefined dynamic_lookup" QMAKE_LFLAGS += "-install_name $$absolute_path($$PY_MODULE, $$target.path)" greaterThan(QT_MINOR_VERSION, 4) { %sQMAKE_RPATHDIR += $$[QT_INSTALL_LIBS] } } ''' % extra_lflags pro_lines.extend(shared.split('\n')) pro_lines.append('TARGET = %s' % target_name) if src_dir != mname: pro_lines.append('INCLUDEPATH += %s' % qmake_quote(src_dir)) pro_lines.append('VPATH = %s' % qmake_quote(src_dir)) pro_lines.extend(pro_sources(src_dir, qpy_headers, qpy_sources)) pro_name = os.path.join(mname, mname + '.pro') pro = open_for_writing(pro_name) pro.write('\n'.join(pro_lines)) pro.write('\n') pro.close() def pro_add_qpy(mname, metadata, pro_lines): """ Add the qpy dependencies of a module to a .pro file. mname is the module's name. metadata is the module's meta-data. pro_lines is the list of lines making up the .pro file that is updated. """ if metadata.qpy_lib: pro_lines.append('INCLUDEPATH += %s' % qmake_quote(os.path.relpath(source_path('qpy', mname), mname))) def fix_license(src_lfile, dst_lfile): """ Fix the license file, if there is one, so that it conforms to the SIP v5 syntax. src_lfile is the name of the license file. dst_lfile is the name of the fixed license file. """ f = open(src_lfile) f5 = open_for_writing(dst_lfile) for line in f: if line.startswith('%License'): anno_start = line.find('/') anno_end = line.rfind('/') if anno_start < 0 or anno_end < 0 or anno_start == anno_end: error("%s has missing annotations." % name) annos = line[anno_start + 1:anno_end].split(', ') annos5 = [anno[0].lower() + anno[1:] for anno in annos] f5.write('%License(') f5.write(', '.join(annos5)) f5.write(')\n') else: f5.write(line) f5.close() f.close() def check_license(target_config, license_confirmed, introspecting): """ Handle the validation of the PyQt5 license. target_config is the target configuration. license_confirmed is set if the user has already accepted the license. introspecting is set if the configuration is being determined by introspection. """ try: import license ltype = license.LicenseType lname = license.LicenseName try: lfile = license.LicenseFile except AttributeError: lfile = None except ImportError: ltype = None if ltype is None: ltype = 'GPL' lname = "GNU General Public License" lfile = 'pyqt-gpl.sip' inform( "This is the %s version of PyQt %s (licensed under the %s) for " "Python %s on %s." % (ltype, PYQT_VERSION_STR, lname, sys.version.split()[0], sys.platform)) # Common checks. if introspecting and target_config.qt_licensee not in OPEN_SOURCE_LICENSEES and ltype == 'GPL': error( "This version of PyQt5 and the commercial version of Qt have " "incompatible licenses.") # Confirm the license if not already done. if not license_confirmed: loptions = """ Type 'L' to view the license. """ sys.stdout.write(loptions) sys.stdout.write("""Type 'yes' to accept the terms of the license. Type 'no' to decline the terms of the license. """) while 1: sys.stdout.write("Do you accept the terms of the license? ") sys.stdout.flush() try: resp = sys.stdin.readline() except KeyboardInterrupt: raise SystemExit except: resp = "" resp = resp.strip().lower() if resp == "yes": break if resp == "no": sys.exit(0) if resp == 'l': os.system('more LICENSE') # Check that the license file exists and fix its syntax. sip_dir = 'sip' mk_dir(sip_dir) src_lfile = os.path.join(target_config.license_dir, lfile) if os.access(src_lfile, os.F_OK): inform("Found the license file %s." % lfile) fix_license(src_lfile, os.path.join(sip_dir, lfile + '5')) else: error( "Please copy the license file %s to %s." % (lfile, target_config.license_dir)) def check_qt(target_config): """ Check the Qt installation. target_config is the target configuration. """ # Starting with v4.7, Qt (when built with MinGW) assumes that stack frames # are 16 byte aligned because it uses SSE. However the Python Windows # installers are built with 4 byte aligned stack frames. We therefore need # to tweak the g++ flags to deal with it. if target_config.qmake_spec == 'win32-g++': target_config.qmake_variables.append('QMAKE_CFLAGS += -mstackrealign') target_config.qmake_variables.append('QMAKE_CXXFLAGS += -mstackrealign') def check_python(target_config): """ Check the Python installation. target_config is the target configuration. """ # Check the Python version number. This allows us to assume relative # imports and ElemenTree are available. if target_config.py_version < 0x020600: error("PyQt5 requires Python v2.6 or later.") def check_sip(target_config): """ Check that the version of sip is good enough and return its version. target_config is the target configuration. """ if target_config.sip is None: error( "Make sure you have a working sip on your PATH or use the " "--sip argument to explicitly specify a working sip.") pipe = os.popen(' '.join([target_config.sip, '-V'])) for l in pipe: version_str = l.strip() break else: error("'%s -V' did not generate any output." % target_config.sip) pipe.close() if 'preview' not in version_str and 'snapshot' not in version_str: version = version_from_string(version_str) if version is None: error( "'%s -V' generated unexpected output: '%s'." % ( target_config.sip, version_str)) min_version = version_from_string(SIP_MIN_VERSION) if version < min_version: error( "This version of PyQt5 requires sip %s or later." % SIP_MIN_VERSION) return version_str def version_from_string(version_str): """ Convert a version string of the form m.n or m.n.o to an encoded version number (or None if it was an invalid format). version_str is the version string. """ parts = version_str.split('.') if not isinstance(parts, list): return None if len(parts) == 2: parts.append('0') if len(parts) != 3: return None version = 0 for part in parts: try: v = int(part) except ValueError: return None version = (version << 8) + v return version def open_for_writing(fname): """ Return a file opened for writing while handling the most common problem of not having write permission on the directory. fname is the name of the file to open. """ try: return open(fname, 'w') except IOError: error( "There was an error creating %s. Make sure you have write " "permission on the parent directory." % fname) def get_win32_debug_suffix(debug): """ Return the debug-dependent suffix appended to the name of Windows libraries. debug is set if the debug version is to be used. """ return '_d' if debug else '' def main(argv): """ Create the configuration module module. argv is the list of command line arguments. """ # Create the default target configuration. target_config = TargetConfiguration() # Parse the command line. parser = create_optparser(target_config) opts, target_config.qmake_variables = parser.parse_args() target_config.apply_pre_options(opts) # Query qmake for the basic configuration information. target_config.get_qt_configuration() # Update the target configuration. if opts.config_file is not None: target_config.from_configuration_file(opts.config_file) else: target_config.from_introspection(opts.verbose, opts.debug) target_config.post_configuration() target_config.apply_post_options(opts) # Check the licenses are compatible. check_license(target_config, opts.license_confirmed, (opts.config_file is None)) # Check Python is what we need. check_python(target_config) # Check SIP is what we need. sip_version = check_sip(target_config) # Check Qt is what we need. check_qt(target_config) # Check for the VendorID package. check_vendorid(target_config) # Check which modules to build if we haven't been told. if len(target_config.pyqt_modules) == 0: check_modules(target_config, opts.disabled_modules, opts.verbose) check_dbus(target_config, opts.verbose) # Tell the user what's been found. inform_user(target_config, sip_version) # Generate the makefiles. generate_makefiles(target_config, opts.verbose, opts.notimestamp, opts.split if opts.concat else 0, opts.tracing) ############################################################################### # The script starts here. ############################################################################### if __name__ == '__main__': try: main(sys.argv) except SystemExit: raise except: sys.stderr.write( """An internal error occured. Please report all the output from the program, including the following traceback, to support@riverbankcomputing.com. """) raise PyQt-gpl-5.5.1/dbus/0000755000076500000240000000000012613140040014202 5ustar philstaff00000000000000PyQt-gpl-5.5.1/dbus/dbus.cpp0000644000076500000240000002651712613140040015656 0ustar philstaff00000000000000// This is the SIP interface definition for the Qt support for the standard // Python DBus bindings. // // Copyright (c) 2014 Riverbank Computing Limited // // 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. #include #include #include #include #include #include "helper.h" // The callback to add a watch. extern "C" {static dbus_bool_t add_watch(DBusWatch *watch, void *data);} static dbus_bool_t add_watch(DBusWatch *watch, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); unsigned int flags = dbus_watch_get_flags(watch); dbus_bool_t enabled = dbus_watch_get_enabled(watch); pyqt5DBusHelper::Watcher watcher; watcher.watch = watch; if (flags & DBUS_WATCH_READABLE) { watcher.read = new QSocketNotifier(fd, QSocketNotifier::Read, hlp); watcher.read->setEnabled(enabled); hlp->connect(watcher.read, SIGNAL(activated(int)), SLOT(readSocket(int))); } if (flags & DBUS_WATCH_WRITABLE) { watcher.write = new QSocketNotifier(fd, QSocketNotifier::Write, hlp); watcher.write->setEnabled(enabled); hlp->connect(watcher.write, SIGNAL(activated(int)), SLOT(writeSocket(int))); } hlp->watchers.insertMulti(fd, watcher); return true; } // The callback to remove a watch. extern "C" {static void remove_watch(DBusWatch *watch, void *data);} static void remove_watch(DBusWatch *watch, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); pyqt5DBusHelper::Watchers::iterator it = hlp->watchers.find(fd); while (it != hlp->watchers.end() && it.key() == fd) { pyqt5DBusHelper::Watcher &watcher = it.value(); if (watcher.watch == watch) { if (watcher.read) delete watcher.read; if (watcher.write) delete watcher.write; hlp->watchers.erase(it); return; } ++it; } } // The callback to toggle a watch. extern "C" {static void toggle_watch(DBusWatch *watch, void *data);} static void toggle_watch(DBusWatch *watch, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); unsigned int flags = dbus_watch_get_flags(watch); dbus_bool_t enabled = dbus_watch_get_enabled(watch); pyqt5DBusHelper::Watchers::const_iterator it = hlp->watchers.find(fd); while (it != hlp->watchers.end() && it.key() == fd) { const pyqt5DBusHelper::Watcher &watcher = it.value(); if (watcher.watch == watch) { if (flags & DBUS_WATCH_READABLE && watcher.read) watcher.read->setEnabled(enabled); if (flags & DBUS_WATCH_WRITABLE && watcher.write) watcher.write->setEnabled(enabled); return; } ++it; } } // The callback to add a timeout. extern "C" {static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data);} static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) { // Nothing to do if the timeout is disabled. if (!dbus_timeout_get_enabled(timeout)) return true; // Pretend it is successful if there is no application instance. This can // happen if the global application gets garbage collected before the // dbus-python main loop does. if (!QCoreApplication::instance()) return true; pyqt5DBusHelper *hlp = reinterpret_cast(data); int id = hlp->startTimer(dbus_timeout_get_interval(timeout)); if (!id) return false; hlp->timeouts[id] = timeout; return true; } // The callback to remove a timeout. extern "C" {static void remove_timeout(DBusTimeout *timeout, void *data);} static void remove_timeout(DBusTimeout *timeout, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); pyqt5DBusHelper::Timeouts::iterator it = hlp->timeouts.begin(); while (it != hlp->timeouts.end()) if (it.value() == timeout) { hlp->killTimer(it.key()); it = hlp->timeouts.erase(it); } else ++it; } // The callback to toggle a timeout. extern "C" {static void toggle_timeout(DBusTimeout *timeout, void *data);} static void toggle_timeout(DBusTimeout *timeout, void *data) { remove_timeout(timeout, data); add_timeout(timeout, data); } // The callback to delete a helper instance. extern "C" {static void dbus_qt_delete_helper(void *data);} static void dbus_qt_delete_helper(void *data) { delete reinterpret_cast(data); } // The callback to wakeup the event loop. extern "C" {static void wakeup_main(void *data);} static void wakeup_main(void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); QTimer::singleShot(0, hlp, SLOT(dispatch())); } // The callback to set up a DBus connection. extern "C" {static dbus_bool_t dbus_qt_conn(DBusConnection *conn, void *data);} static dbus_bool_t dbus_qt_conn(DBusConnection *conn, void *data) { bool rc; Py_BEGIN_ALLOW_THREADS pyqt5DBusHelper *hlp = reinterpret_cast(data); hlp->connections.append(conn); if (!dbus_connection_set_watch_functions(conn, add_watch, remove_watch, toggle_watch, data, 0)) rc = false; else if (!dbus_connection_set_timeout_functions(conn, add_timeout, remove_timeout, toggle_timeout, data, 0)) rc = false; else rc = true; dbus_connection_set_wakeup_main_function(conn, wakeup_main, hlp, 0); Py_END_ALLOW_THREADS return rc; } // The callback to set up a DBus server. extern "C" {static dbus_bool_t dbus_qt_srv(DBusServer *srv, void *data);} static dbus_bool_t dbus_qt_srv(DBusServer *srv, void *data) { bool rc; Py_BEGIN_ALLOW_THREADS if (!dbus_server_set_watch_functions(srv, add_watch, remove_watch, toggle_watch, data, 0)) rc = false; else if (!dbus_server_set_timeout_functions(srv, add_timeout, remove_timeout, toggle_timeout, data, 0)) rc = false; else rc = true; Py_END_ALLOW_THREADS return rc; } // Create a new helper instance. pyqt5DBusHelper::pyqt5DBusHelper() : QObject() { } // Handle a socket being ready to read. void pyqt5DBusHelper::readSocket(int fd) { Watchers::const_iterator it = watchers.find(fd); while (it != watchers.end() && it.key() == fd) { const Watcher &watcher = it.value(); if (watcher.read && watcher.read->isEnabled()) { watcher.read->setEnabled(false); dbus_watch_handle(watcher.watch, DBUS_WATCH_READABLE); // The notifier could have just been destroyed. if (watcher.read) watcher.read->setEnabled(true); break; } ++it; } dispatch(); } // Handle a socket being ready to write. void pyqt5DBusHelper::writeSocket(int fd) { Watchers::const_iterator it = watchers.find(fd); while (it != watchers.end() && it.key() == fd) { const Watcher &watcher = it.value(); if (watcher.write && watcher.write->isEnabled()) { watcher.write->setEnabled(false); dbus_watch_handle(watcher.watch, DBUS_WATCH_WRITABLE); // The notifier could have just been destroyed. if (watcher.write) watcher.write->setEnabled(true); break; } ++it; } } // Handoff to the connection dispatcher while there is data. void pyqt5DBusHelper::dispatch() { for (Connections::const_iterator it = connections.constBegin(); it != connections.constEnd(); ++it) while (dbus_connection_dispatch(*it) == DBUS_DISPATCH_DATA_REMAINS) ; } // Reimplemented to handle timer events. void pyqt5DBusHelper::timerEvent(QTimerEvent *e) { DBusTimeout *timeout = timeouts.value(e->timerId()); if (timeout) dbus_timeout_handle(timeout); } PyDoc_STRVAR(DBusQtMainLoop__doc__, "DBusQtMainLoop([set_as_default=False]) -> NativeMainLoop\n" "\n" "Return a NativeMainLoop object.\n" "\n" "If the keyword argument set_as_default is given and is True, set the new\n" "main loop as the default for all new Connection or Bus instances.\n"); extern "C" {static PyObject *DBusQtMainLoop(PyObject *, PyObject *args, PyObject *kwargs);} static PyObject *DBusQtMainLoop(PyObject *, PyObject *args, PyObject *kwargs) { if (PyTuple_Size(args) != 0) { PyErr_SetString(PyExc_TypeError, "DBusQtMainLoop() takes no positional arguments"); return 0; } int set_as_default = 0; static char *argnames[] = {"set_as_default", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i", argnames, &set_as_default)) return 0; pyqt5DBusHelper *hlp = new pyqt5DBusHelper; PyObject *mainloop = DBusPyNativeMainLoop_New4(dbus_qt_conn, dbus_qt_srv, dbus_qt_delete_helper, hlp); if (!mainloop) { delete hlp; return 0; } if (set_as_default) { PyObject *func = PyObject_GetAttrString(_dbus_bindings_module, "set_default_main_loop"); if (!func) { Py_DECREF(mainloop); return 0; } PyObject *res = PyObject_CallFunctionObjArgs(func, mainloop, 0); Py_DECREF(func); if (!res) { Py_DECREF(mainloop); return 0; } Py_DECREF(res); } return mainloop; } // The table of module functions. static PyMethodDef module_functions[] = { {"DBusQtMainLoop", (PyCFunction)DBusQtMainLoop, METH_VARARGS|METH_KEYWORDS, DBusQtMainLoop__doc__}, {0, 0, 0, 0} }; // The module entry point. #if PY_MAJOR_VERSION >= 3 PyMODINIT_FUNC PyInit_pyqt5() { static PyModuleDef module_def = { PyModuleDef_HEAD_INIT, "pyqt5", NULL, -1, module_functions, }; // Import the generic part of the Python DBus bindings. if (import_dbus_bindings("dbus.mainloop.pyqt5") < 0) return 0; return PyModule_Create(&module_def); } #else PyMODINIT_FUNC initpyqt5() { // Import the generic part of the Python DBus bindings. if (import_dbus_bindings("dbus.mainloop.pyqt5") < 0) return; Py_InitModule("pyqt5", module_functions); } #endif PyQt-gpl-5.5.1/dbus/helper.h0000644000076500000240000000402312613140040015631 0ustar philstaff00000000000000// This is the declaration of the helper class for the Qt specific support for // the standard Python DBus bindings. // // Copyright (c) 2014 Riverbank Computing Limited // // 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. #include #include #include #include #include #include #include class QTimerEvent; class pyqt5DBusHelper : public QObject { Q_OBJECT public: struct Watcher { Watcher() : watch(0), read(0), write(0) {} DBusWatch *watch; QPointer read; QPointer write; }; typedef QMultiHash Watchers; typedef QHash Timeouts; typedef QListConnections; pyqt5DBusHelper(); Watchers watchers; Timeouts timeouts; Connections connections; public slots: void readSocket(int fd); void writeSocket(int fd); void dispatch(); protected: void timerEvent(QTimerEvent *e); }; PyQt-gpl-5.5.1/designer/0000755000076500000240000000000012613140041015046 5ustar philstaff00000000000000PyQt-gpl-5.5.1/designer/designer.pro-in0000644000076500000240000000066312613140041020001 0ustar philstaff00000000000000CONFIG += plugin @QTCONFIG@ warn_on QT += designer # Work around QTBUG-39300. CONFIG -= android_install TARGET = pyqt5 TEMPLATE = lib INCLUDEPATH += @PYINCDIR@ LIBS += @PYLINK@ DEFINES += PYTHON_LIB=\\\"@PYSHLIB@\\\" SOURCES = pluginloader.cpp HEADERS = pluginloader.h # Install. target.path = @QTPLUGINDIR@ python.path = @QTPLUGINDIR@ python.files = python INSTALLS += target python PyQt-gpl-5.5.1/designer/pluginloader.cpp0000644000076500000240000002172412613140041020245 0ustar philstaff00000000000000/* * This is the Qt Designer plugin that collects all the Python plugins it can * find as a widget collection to Designer. * * Copyright (c) 2015 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "pluginloader.h" #include #include #include #include #include #include #include #include #include #include "../qpy/QtDesigner/qpydesignercustomwidgetplugin.h" // Construct the collection of Python widgets. PyCustomWidgets::PyCustomWidgets(QObject *parent) : QObject(parent) { // Get the default list of directories to search. These correspond to a // standard "python" subdirectory of all the places that Designer looks for // its own plugins. QStringList default_dirs; QStringList path_list = QCoreApplication::libraryPaths(); foreach (const QString &path, path_list) default_dirs.append(path + QDir::separator() + QLatin1String("designer") + QDir::separator() + QLatin1String("python")); default_dirs.append(QDir::homePath() + QDir::separator() + QLatin1String(".designer") + QDir::separator() + QLatin1String("plugins") + QDir::separator() + QLatin1String("python")); // Get the list of directories to search. QStringList dirs; char *pyqt_path = getenv("PYQTDESIGNERPATH"); if (pyqt_path) { #if defined(Q_OS_WIN) QLatin1Char sep(';'); #else QLatin1Char sep(':'); #endif QStringList pyqt_dirs = QString::fromLatin1(pyqt_path).split(sep); for (QStringList::const_iterator it = pyqt_dirs.constBegin(); it != pyqt_dirs.constEnd(); ++it) if ((*it).isEmpty()) dirs << default_dirs; else dirs.append(QDir(*it).canonicalPath()); } else dirs = default_dirs; // The sys.path object if we need it. PyObject *sys_path = 0; // The sip.unwrapinstance object if we need it. PyObject *sip_unwrapinstance = 0; // The PyQt5.QtDesigner.QPyDesignerCustomWidgetPlugin object if we need it. PyObject *qtdesigner_custom = 0; // Go through each directory. for (int i = 0; i < dirs.size(); ++i) { QString dir = dirs.at(i); // Get a list of all candidate plugin modules. We sort by name to // provide control over the order they are imported. QStringList candidates = QDir(dir).entryList(QDir::Files, QDir::Name); QStringList plugins; for (int p = 0; p < candidates.size(); ++p) { QStringList parts = candidates.at(p).split('.'); if (parts.size() != 2) continue; if (!parts.at(1).startsWith("py")) continue; const QString &plugin = parts.at(0); if (!plugin.endsWith("plugin")) continue; if (plugins.contains(plugin)) continue; plugins.append(plugin); } // Skip if there is nothing of interest in this directory. if (!plugins.size()) continue; // Make sure the interpreter is initialised. Leave this as late as // possible. if (!Py_IsInitialized()) { QLibrary library(PYTHON_LIB); library.setLoadHints(QLibrary::ExportExternalSymbolsHint); if (!library.load()) return; Py_Initialize(); } // Make sure we have sys.path. if (!sys_path) { sys_path = getModuleAttr("sys", "path"); if (!sys_path) return; } // Make sure we have sip.unwrapinstance. if (!sip_unwrapinstance) { sip_unwrapinstance = getModuleAttr("sip", "unwrapinstance"); if (!sip_unwrapinstance) return; } // Convert the directory to a Python object with native separators. dir = QDir::toNativeSeparators(dir); #if PY_VERSION_HEX >= 0x03030000 PyObject *dobj = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, dir.constData(), dir.length()); if (!dobj) { PyErr_Print(); continue; } #elif PY_VERSION_HEX >= 0x03000000 #if defined(Py_UNICODE_WIDE) QVector ucs4 = dir.toUcs4(); PyObject *dobj = PyUnicode_FromUnicode(0, ucs4.size()); if (!dobj) { PyErr_Print(); continue; } memcpy(PyUnicode_AS_UNICODE(dobj), ucs4.constData(), ucs4.size() * sizeof (Py_UNICODE)); #else PyObject *dobj = PyUnicode_FromUnicode(0, dir.length()); if (!dobj) { PyErr_Print(); continue; } memcpy(PyUnicode_AS_UNICODE(dobj), dir.utf16(), dir.length() * sizeof (Py_UNICODE)); #endif #else PyObject *dobj = PyString_FromString(dir.toLatin1().constData()); if (!dobj) { PyErr_Print(); continue; } #endif // Add the directory to sys.path. int rc = PyList_Append(sys_path, dobj); Py_DECREF(dobj); if (rc < 0) { PyErr_Print(); continue; } // Import each plugin. for (int plug = 0; plug < plugins.size(); ++plug) { PyObject *plug_mod = PyImport_ImportModule(plugins.at(plug).toLatin1().data()); if (!plug_mod) { PyErr_Print(); continue; } // Make sure we have QPyDesignerCustomWidgetPlugin. We make sure // this is after the import of the first plugin to allow that // plugin to change any API versions. if (!qtdesigner_custom) { qtdesigner_custom = getModuleAttr("PyQt5.QtDesigner", "QPyDesignerCustomWidgetPlugin"); if (!qtdesigner_custom) return; } // Go through the module looking for types that implement // QDesignerCustomWidgetInterface (ie. by deriving from // QPyDesignerCustomWidgetPlugin). PyObject *mod_dict = PyModule_GetDict(plug_mod); PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(mod_dict, &pos, &key, &value)) { if (!PyType_Check(value)) continue; if (value == qtdesigner_custom) continue; if (!PyType_IsSubtype((PyTypeObject *)value, (PyTypeObject *)qtdesigner_custom)) continue; // Create the plugin instance. Note that we don't give it a // parent, which make things easier. It also means that Python // owns the instance so we don't decrement the reference count // so that it doesn't get garbage collected. PyObject *plugobj = PyObject_CallObject(value, NULL); if (!plugobj) { PyErr_Print(); continue; } // Get the address of the C++ instance. PyObject *plugaddr = PyObject_CallFunctionObjArgs(sip_unwrapinstance, plugobj, NULL); if (!plugaddr) { Py_DECREF(plugobj); PyErr_Print(); continue; } void *addr = PyLong_AsVoidPtr(plugaddr); Py_DECREF(plugaddr); widgets.append(reinterpret_cast(addr)); } Py_DECREF(plug_mod); } } } // Return the list of custom widgets. QList PyCustomWidgets::customWidgets() const { return widgets; } // Return the named attribute object from the named module. PyObject *PyCustomWidgets::getModuleAttr(const char *module, const char *attr) { PyObject *mod = PyImport_ImportModule(module); if (!mod) { PyErr_Print(); return 0; } PyObject *obj = PyObject_GetAttrString(mod, attr); Py_DECREF(mod); if (!obj) { PyErr_Print(); return 0; } return obj; } PyQt-gpl-5.5.1/designer/pluginloader.h0000644000076500000240000000315212613140041017705 0ustar philstaff00000000000000/* * This is the interface of the Qt Designer plugin. * * Copyright (c) 2015 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PLUGINLOADER_H #define _PLUGINLOADER_H #include #include #include #include QT_BEGIN_NAMESPACE class QDesignerCustomWidgetInterface; QT_END_NAMESPACE class PyCustomWidgets : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface") Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: PyCustomWidgets(QObject *parent = 0); virtual QList customWidgets() const; private: static PyObject *getModuleAttr(const char *module, const char *attr); QList widgets; }; #endif PyQt-gpl-5.5.1/doc/0000755000076500000240000000000012613140041014013 5ustar philstaff00000000000000PyQt-gpl-5.5.1/doc/sphinx/0000755000076500000240000000000012613140041015324 5ustar philstaff00000000000000PyQt-gpl-5.5.1/doc/sphinx/api/0000755000076500000240000000000012613140041016075 5ustar philstaff00000000000000PyQt-gpl-5.5.1/doc/sphinx/api/enginio.rst0000644000076500000240000000020512613140041020254 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio Enginio ------- .. class:: Enginio `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/enginioclient.rst0000644000076500000240000000023512613140041021456 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio EnginioClient ------------- .. class:: EnginioClient `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/enginioclientconnection.rst0000644000076500000240000000030512613140041023534 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio EnginioClientConnection ----------------------- .. class:: EnginioClientConnection `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/enginioidentity.rst0000644000076500000240000000024512613140041022032 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio EnginioIdentity --------------- .. class:: EnginioIdentity `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/enginiomodel.rst0000644000076500000240000000023112613140041021274 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio EnginioModel ------------ .. class:: EnginioModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/enginiooauth2authentication.rst0000644000076500000240000000032512613140041024342 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio EnginioOAuth2Authentication --------------------------- .. class:: EnginioOAuth2Authentication `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/enginioreply.rst0000644000076500000240000000023112613140041021327 0ustar philstaff00000000000000.. currentmodule:: PyQt5.Enginio EnginioReply ------------ .. class:: EnginioReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractanimation.rst0000644000076500000240000000026012613140041022511 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractAnimation ------------------ .. class:: QAbstractAnimation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractbutton.rst0000644000076500000240000000024712613140041022052 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractButton --------------- .. class:: QAbstractButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstracteventdispatcher.rst0000644000076500000240000000031012613140041023716 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractEventDispatcher ------------------------ .. class:: QAbstractEventDispatcher `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractextensionfactory.rst0000644000076500000240000000032012613140041024133 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QAbstractExtensionFactory ------------------------- .. class:: QAbstractExtensionFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractextensionmanager.rst0000644000076500000240000000032012613140041024076 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QAbstractExtensionManager ------------------------- .. class:: QAbstractExtensionManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractformbuilder.rst0000644000076500000240000000027412613140041023051 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QAbstractFormBuilder -------------------- .. class:: QAbstractFormBuilder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractgraphicsshapeitem.rst0000644000076500000240000000032312613140041024232 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractGraphicsShapeItem -------------------------- .. class:: QAbstractGraphicsShapeItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractitemdelegate.rst0000644000076500000240000000027712613140041023173 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractItemDelegate --------------------- .. class:: QAbstractItemDelegate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractitemmodel.rst0000644000076500000240000000026012613140041022511 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractItemModel ------------------ .. class:: QAbstractItemModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractitemview.rst0000644000076500000240000000025712613140041022371 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractItemView ----------------- .. class:: QAbstractItemView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractlistmodel.rst0000644000076500000240000000026012613140041022526 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractListModel ------------------ .. class:: QAbstractListModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractmessagehandler.rst0000644000076500000240000000031312613140041023513 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QAbstractMessageHandler ----------------------- .. class:: QAbstractMessageHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractnativeeventfilter.rst0000644000076500000240000000032012613140041024265 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractNativeEventFilter -------------------------- .. class:: QAbstractNativeEventFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractnetworkcache.rst0000644000076500000240000000027712613140041023217 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QAbstractNetworkCache --------------------- .. class:: QAbstractNetworkCache `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractprintdialog.rst0000644000076500000240000000030012613140041023041 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QAbstractPrintDialog -------------------- .. class:: QAbstractPrintDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractproxymodel.rst0000644000076500000240000000026412613140041022740 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractProxyModel ------------------- .. class:: QAbstractProxyModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractscrollarea.rst0000644000076500000240000000026712613140041022670 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractScrollArea ------------------- .. class:: QAbstractScrollArea `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractslider.rst0000644000076500000240000000024712613140041022021 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractSlider --------------- .. class:: QAbstractSlider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractsocket.rst0000644000076500000240000000024712613140041022027 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QAbstractSocket --------------- .. class:: QAbstractSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractspinbox.rst0000644000076500000240000000025312613140041022216 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAbstractSpinBox ---------------- .. class:: QAbstractSpinBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractstate.rst0000644000076500000240000000024012613140041021650 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractState -------------- .. class:: QAbstractState `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstracttablemodel.rst0000644000076500000240000000026412613140041022646 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractTableModel ------------------- .. class:: QAbstractTableModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstracttextdocumentlayout.rst0000644000076500000240000000032312613140041024513 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QAbstractTextDocumentLayout --------------------------- .. class:: QAbstractTextDocumentLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstracttransition.rst0000644000076500000240000000026412613140041022730 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAbstractTransition ------------------- .. class:: QAbstractTransition `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstracturiresolver.rst0000644000076500000240000000027712613140041023123 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QAbstractUriResolver -------------------- .. class:: QAbstractUriResolver `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractvideobuffer.rst0000644000076500000240000000027612613140041023041 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAbstractVideoBuffer -------------------- .. class:: QAbstractVideoBuffer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractvideosurface.rst0000644000076500000240000000030212613140041023206 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAbstractVideoSurface --------------------- .. class:: QAbstractVideoSurface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractxmlnodemodel.rst0000644000076500000240000000030312613140041023217 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QAbstractXmlNodeModel --------------------- .. class:: QAbstractXmlNodeModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qabstractxmlreceiver.rst0000644000076500000240000000027712613140041023067 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QAbstractXmlReceiver -------------------- .. class:: QAbstractXmlReceiver `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaccelerometer.rst0000644000076500000240000000024312613140041021621 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAccelerometer -------------- .. class:: QAccelerometer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaccelerometerfilter.rst0000644000076500000240000000027312613140041023032 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAccelerometerFilter -------------------- .. class:: QAccelerometerFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaccelerometerreading.rst0000644000076500000240000000027712613140041023162 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAccelerometerReading --------------------- .. class:: QAccelerometerReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaction.rst0000644000076500000240000000020712613140041020264 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QAction ------- .. class:: QAction `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qactionevent.rst0000644000076500000240000000022712613140041021330 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QActionEvent ------------ .. class:: QActionEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qactiongroup.rst0000644000076500000240000000023312613140041021340 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QActionGroup ------------ .. class:: QActionGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaltimeter.rst0000644000076500000240000000022312613140041020773 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAltimeter ---------- .. class:: QAltimeter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaltimeterfilter.rst0000644000076500000240000000025312613140041022204 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAltimeterFilter ---------------- .. class:: QAltimeterFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaltimeterreading.rst0000644000076500000240000000025712613140041022334 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAltimeterReading ----------------- .. class:: QAltimeterReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qambientlightfilter.rst0000644000076500000240000000026712613140041022672 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAmbientLightFilter ------------------- .. class:: QAmbientLightFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qambientlightreading.rst0000644000076500000240000000027312613140041023013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAmbientLightReading -------------------- .. class:: QAmbientLightReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qambientlightsensor.rst0000644000076500000240000000026712613140041022716 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAmbientLightSensor ------------------- .. class:: QAmbientLightSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qambienttemperaturefilter.rst0000644000076500000240000000031712613140041024114 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAmbientTemperatureFilter ------------------------- .. class:: QAmbientTemperatureFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qambienttemperaturereading.rst0000644000076500000240000000032312613140041024235 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAmbientTemperatureReading -------------------------- .. class:: QAmbientTemperatureReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qambienttemperaturesensor.rst0000644000076500000240000000031712613140041024140 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QAmbientTemperatureSensor ------------------------- .. class:: QAmbientTemperatureSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qanimationgroup.rst0000644000076500000240000000024412613140041022044 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QAnimationGroup --------------- .. class:: QAnimationGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qapplication.rst0000644000076500000240000000023312613140041021311 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QApplication ------------ .. class:: QApplication `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudio.rst0000644000076500000240000000020612613140041020107 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudio ------ .. class:: QAudio `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudiobuffer.rst0000644000076500000240000000023612613140041021304 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioBuffer ------------ .. class:: QAudioBuffer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudiodecoder.rst0000644000076500000240000000024212613140041021435 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioDecoder ------------- .. class:: QAudioDecoder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudiodeviceinfo.rst0000644000076500000240000000025612613140041022150 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioDeviceInfo ---------------- .. class:: QAudioDeviceInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudioencodersettings.rst0000644000076500000240000000030212613140041023225 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioEncoderSettings --------------------- .. class:: QAudioEncoderSettings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudioformat.rst0000644000076500000240000000023612613140041021323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioFormat ------------ .. class:: QAudioFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudioinput.rst0000644000076500000240000000023212613140041021166 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioInput ----------- .. class:: QAudioInput `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudiooutput.rst0000644000076500000240000000023612613140041021373 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioOutput ------------ .. class:: QAudioOutput `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudioprobe.rst0000644000076500000240000000023212613140041021136 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioProbe ----------- .. class:: QAudioProbe `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaudiorecorder.rst0000644000076500000240000000024612613140041021641 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QAudioRecorder -------------- .. class:: QAudioRecorder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qauthenticator.rst0000644000076500000240000000024312613140041021661 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QAuthenticator -------------- .. class:: QAuthenticator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaxbase.rst0000644000076500000240000000021212613140041020246 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QAxContainer QAxBase ------- .. class:: QAxBase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaxobject.rst0000644000076500000240000000022212613140041020603 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QAxContainer QAxObject --------- .. class:: QAxObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qaxwidget.rst0000644000076500000240000000022212613140041020620 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QAxContainer QAxWidget --------- .. class:: QAxWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbackingstore.rst0000644000076500000240000000023312613140041021461 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QBackingStore ------------- .. class:: QBackingStore `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbasictimer.rst0000644000076500000240000000022412613140041021130 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QBasicTimer ----------- .. class:: QBasicTimer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbitarray.rst0000644000076500000240000000021412613140041020622 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QBitArray --------- .. class:: QBitArray `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbitmap.rst0000644000076500000240000000020312613140041020257 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QBitmap ------- .. class:: QBitmap `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothaddress.rst0000644000076500000240000000026112613140041022362 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothAddress ----------------- .. class:: QBluetoothAddress `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothdevicediscoveryagent.rst0000644000076500000240000000034512613140041025146 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothDeviceDiscoveryAgent ------------------------------ .. class:: QBluetoothDeviceDiscoveryAgent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothdeviceinfo.rst0000644000076500000240000000027512613140041023055 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothDeviceInfo -------------------- .. class:: QBluetoothDeviceInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothhostinfo.rst0000644000076500000240000000026512613140041022572 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothHostInfo ------------------ .. class:: QBluetoothHostInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothlocaldevice.rst0000644000076500000240000000030112613140041023202 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothLocalDevice --------------------- .. class:: QBluetoothLocalDevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothserver.rst0000644000076500000240000000025512613140041022246 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothServer ---------------- .. class:: QBluetoothServer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothservicediscoveryagent.rst0000644000076500000240000000035112613140041025344 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothServiceDiscoveryAgent ------------------------------- .. class:: QBluetoothServiceDiscoveryAgent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothserviceinfo.rst0000644000076500000240000000030112613140041023244 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothServiceInfo --------------------- .. class:: QBluetoothServiceInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothsocket.rst0000644000076500000240000000025512613140041022230 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothSocket ---------------- .. class:: QBluetoothSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothtransfermanager.rst0000644000076500000240000000032112613140041024111 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothTransferManager ------------------------- .. class:: QBluetoothTransferManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothtransferreply.rst0000644000076500000240000000031112613140041023631 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothTransferReply ----------------------- .. class:: QBluetoothTransferReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothtransferrequest.rst0000644000076500000240000000032112613140041024167 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothTransferRequest ------------------------- .. class:: QBluetoothTransferRequest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbluetoothuuid.rst0000644000076500000240000000024512613140041021705 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QBluetoothUuid -------------- .. class:: QBluetoothUuid `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qboxlayout.rst0000644000076500000240000000022312613140041021033 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QBoxLayout ---------- .. class:: QBoxLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbrush.rst0000644000076500000240000000017712613140041020140 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QBrush ------ .. class:: QBrush `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbuffer.rst0000644000076500000240000000020412613140041020255 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QBuffer ------- .. class:: QBuffer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbuttongroup.rst0000644000076500000240000000023312613140041021376 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QButtonGroup ------------ .. class:: QButtonGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbytearray.rst0000644000076500000240000000022012613140041021004 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QByteArray ---------- .. class:: QByteArray `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qbytearraymatcher.rst0000644000076500000240000000025412613140041022357 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QByteArrayMatcher ----------------- .. class:: QByteArrayMatcher `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcalendarwidget.rst0000644000076500000240000000024712613140041021770 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QCalendarWidget --------------- .. class:: QCalendarWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcamera.rst0000644000076500000240000000021212613140041020233 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCamera ------- .. class:: QCamera `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcameraexposure.rst0000644000076500000240000000025212613140041022032 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCameraExposure --------------- .. class:: QCameraExposure `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcamerafocus.rst0000644000076500000240000000023612613140041021301 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCameraFocus ------------ .. class:: QCameraFocus `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcamerafocuszone.rst0000644000076500000240000000025612613140041022177 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCameraFocusZone ---------------- .. class:: QCameraFocusZone `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcameraimagecapture.rst0000644000076500000240000000027212613140041022630 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCameraImageCapture ------------------- .. class:: QCameraImageCapture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcameraimageprocessing.rst0000644000076500000240000000030612613140041023337 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCameraImageProcessing ---------------------- .. class:: QCameraImageProcessing `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcamerainfo.rst0000644000076500000240000000023212613140041021111 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QCameraInfo ----------- .. class:: QCameraInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcameraviewfinder.rst0000644000076500000240000000027112613140041022323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimediaWidgets QCameraViewFinder ----------------- .. class:: QCameraViewFinder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcheckbox.rst0000644000076500000240000000021712613140041020576 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QCheckBox --------- .. class:: QCheckBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qchildevent.rst0000644000076500000240000000022412613140041021133 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QChildEvent ----------- .. class:: QChildEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qclipboard.rst0000644000076500000240000000021712613140041020747 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QClipboard ---------- .. class:: QClipboard `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcloseevent.rst0000644000076500000240000000022312613140041021154 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QCloseEvent ----------- .. class:: QCloseEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcollator.rst0000644000076500000240000000021412613140041020624 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QCollator --------- .. class:: QCollator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcollatorsortkey.rst0000644000076500000240000000025012613140041022245 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QCollatorSortKey ---------------- .. class:: QCollatorSortKey `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcolor.rst0000644000076500000240000000017712613140041020133 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QColor ------ .. class:: QColor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcolordialog.rst0000644000076500000240000000023312613140041021304 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QColorDialog ------------ .. class:: QColorDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcolumnview.rst0000644000076500000240000000022712613140041021201 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QColumnView ----------- .. class:: QColumnView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcombobox.rst0000644000076500000240000000021712613140041020620 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QComboBox --------- .. class:: QComboBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcommandlineoption.rst0000644000076500000240000000026012613140041022525 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QCommandLineOption ------------------ .. class:: QCommandLineOption `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcommandlineparser.rst0000644000076500000240000000026012613140041022511 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QCommandLineParser ------------------ .. class:: QCommandLineParser `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcommandlinkbutton.rst0000644000076500000240000000026312613140041022541 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QCommandLinkButton ------------------ .. class:: QCommandLinkButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcommonstyle.rst0000644000076500000240000000023312613140041021357 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QCommonStyle ------------ .. class:: QCommonStyle `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcompass.rst0000644000076500000240000000021312613140041020451 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QCompass -------- .. class:: QCompass `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcompassfilter.rst0000644000076500000240000000024312613140041021662 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QCompassFilter -------------- .. class:: QCompassFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcompassreading.rst0000644000076500000240000000024712613140041022012 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QCompassReading --------------- .. class:: QCompassReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcompleter.rst0000644000076500000240000000022312613140041020777 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QCompleter ---------- .. class:: QCompleter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qconicalgradient.rst0000644000076500000240000000024712613140041022141 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QConicalGradient ---------------- .. class:: QConicalGradient `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcontextmenuevent.rst0000644000076500000240000000025312613140041022423 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QContextMenuEvent ----------------- .. class:: QContextMenuEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcoreapplication.rst0000644000076500000240000000025012613140041022161 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QCoreApplication ---------------- .. class:: QCoreApplication `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcryptographichash.rst0000644000076500000240000000026012613140041022530 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QCryptographicHash ------------------ .. class:: QCryptographicHash `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qcursor.rst0000644000076500000240000000020312613140041020320 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QCursor ------- .. class:: QCursor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdatastream.rst0000644000076500000240000000022412613140041021133 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QDataStream ----------- .. class:: QDataStream `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdatawidgetmapper.rst0000644000076500000240000000025712613140041022336 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDataWidgetMapper ----------------- .. class:: QDataWidgetMapper `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdate.rst0000644000076500000240000000017412613140041017727 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QDate ----- .. class:: QDate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdateedit.rst0000644000076500000240000000021712613140041020573 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDateEdit --------- .. class:: QDateEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdatetime.rst0000644000076500000240000000021412613140041020601 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QDateTime --------- .. class:: QDateTime `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdatetimeedit.rst0000644000076500000240000000023712613140041021454 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDateTimeEdit ------------- .. class:: QDateTimeEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbus.rst0000644000076500000240000000017412613140041017747 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBus ----- .. class:: QDBus `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusabstractadaptor.rst0000644000076500000240000000027012613140041023043 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusAbstractAdaptor -------------------- .. class:: QDBusAbstractAdaptor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusabstractinterface.rst0000644000076500000240000000030012613140041023343 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusAbstractInterface ---------------------- .. class:: QDBusAbstractInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusargument.rst0000644000076500000240000000023412613140041021507 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusArgument ------------- .. class:: QDBusArgument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusconnection.rst0000644000076500000240000000024412613140041022025 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusConnection --------------- .. class:: QDBusConnection `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusconnectioninterface.rst0000644000076500000240000000031012613140041023700 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusConnectionInterface ------------------------ .. class:: QDBusConnectionInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbuserror.rst0000644000076500000240000000022012613140041021011 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusError ---------- .. class:: QDBusError `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusinterface.rst0000644000076500000240000000024012613140041021622 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusInterface -------------- .. class:: QDBusInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusmessage.rst0000644000076500000240000000023012613140041021305 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusMessage ------------ .. class:: QDBusMessage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusobjectpath.rst0000644000076500000240000000024412613140041022011 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusObjectPath --------------- .. class:: QDBusObjectPath `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbuspendingcall.rst0000644000076500000240000000025012613140041022143 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusPendingCall ---------------- .. class:: QDBusPendingCall `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbuspendingcallwatcher.rst0000644000076500000240000000030412613140041023521 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusPendingCallWatcher ----------------------- .. class:: QDBusPendingCallWatcher `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbuspendingreply.rst0000644000076500000240000000025412613140041022367 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusPendingReply ----------------- .. class:: QDBusPendingReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusreply.rst0000644000076500000240000000022012613140041021013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusReply ---------- .. class:: QDBusReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusservicewatcher.rst0000644000076500000240000000026412613140041022706 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusServiceWatcher ------------------- .. class:: QDBusServiceWatcher `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbussignature.rst0000644000076500000240000000024012613140041021663 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusSignature -------------- .. class:: QDBusSignature `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusunixfiledescriptor.rst0000644000076500000240000000030412613140041023605 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusUnixFileDescriptor ----------------------- .. class:: QDBusUnixFileDescriptor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdbusvariant.rst0000644000076500000240000000023012613140041021325 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDBus QDBusVariant ------------ .. class:: QDBusVariant `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesigneractioneditorinterface.rst0000644000076500000240000000034412613140041025077 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerActionEditorInterface ------------------------------ .. class:: QDesignerActionEditorInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignercontainerextension.rst0000644000076500000240000000033012613140041024444 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerContainerExtension --------------------------- .. class:: QDesignerContainerExtension `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignercustomwidgetcollectioninterface.rst0000644000076500000240000000041412613140041027203 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerCustomWidgetCollectionInterface ---------------------------------------- .. class:: QDesignerCustomWidgetCollectionInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignercustomwidgetinterface.rst0000644000076500000240000000034412613140041025131 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerCustomWidgetInterface ------------------------------ .. class:: QDesignerCustomWidgetInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerformeditorinterface.rst0000644000076500000240000000033412613140041024564 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerFormEditorInterface ---------------------------- .. class:: QDesignerFormEditorInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerformwindowcursorinterface.rst0000644000076500000240000000036412613140041026046 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerFormWindowCursorInterface ---------------------------------- .. class:: QDesignerFormWindowCursorInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerformwindowinterface.rst0000644000076500000240000000033412613140041024605 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerFormWindowInterface ---------------------------- .. class:: QDesignerFormWindowInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerformwindowmanagerinterface.rst0000644000076500000240000000037012613140041026140 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerFormWindowManagerInterface ----------------------------------- .. class:: QDesignerFormWindowManagerInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignermembersheetextension.rst0000644000076500000240000000034012613140041024763 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerMemberSheetExtension ----------------------------- .. class:: QDesignerMemberSheetExtension `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerobjectinspectorinterface.rst0000644000076500000240000000036012613140041025606 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerObjectInspectorInterface --------------------------------- .. class:: QDesignerObjectInspectorInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerpropertyeditorinterface.rst0000644000076500000240000000035412613140041025507 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerPropertyEditorInterface -------------------------------- .. class:: QDesignerPropertyEditorInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerpropertysheetextension.rst0000644000076500000240000000035012613140041025401 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerPropertySheetExtension ------------------------------- .. class:: QDesignerPropertySheetExtension `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignertaskmenuextension.rst0000644000076500000240000000032412613140041024314 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerTaskMenuExtension -------------------------- .. class:: QDesignerTaskMenuExtension `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesignerwidgetboxinterface.rst0000644000076500000240000000033012613140041024402 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QDesignerWidgetBoxInterface --------------------------- .. class:: QDesignerWidgetBoxInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesktopservices.rst0000644000076500000240000000024712613140041022230 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDesktopServices ---------------- .. class:: QDesktopServices `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdesktopwidget.rst0000644000076500000240000000024312613140041021664 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDesktopWidget -------------- .. class:: QDesktopWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdial.rst0000644000076500000240000000017712613140041017726 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDial ----- .. class:: QDial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdialog.rst0000644000076500000240000000020712613140041020246 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDialog ------- .. class:: QDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdialogbuttonbox.rst0000644000076500000240000000025312613140041022214 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDialogButtonBox ---------------- .. class:: QDialogButtonBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdir.rst0000644000076500000240000000017012613140041017564 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QDir ---- .. class:: QDir `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdiriterator.rst0000644000076500000240000000023012613140041021333 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QDirIterator ------------ .. class:: QDirIterator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdirmodel.rst0000644000076500000240000000021712613140041020607 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDirModel --------- .. class:: QDirModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdistancefilter.rst0000644000076500000240000000024712613140041022013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QDistanceFilter --------------- .. class:: QDistanceFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdistancereading.rst0000644000076500000240000000025312613140041022134 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QDistanceReading ---------------- .. class:: QDistanceReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdistancesensor.rst0000644000076500000240000000024712613140041022037 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QDistanceSensor --------------- .. class:: QDistanceSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdnsdomainnamerecord.rst0000644000076500000240000000027312613140041023026 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QDnsDomainNameRecord -------------------- .. class:: QDnsDomainNameRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdnshostaddressrecord.rst0000644000076500000240000000027712613140041023245 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QDnsHostAddressRecord --------------------- .. class:: QDnsHostAddressRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdnslookup.rst0000644000076500000240000000022312613140041021023 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QDnsLookup ---------- .. class:: QDnsLookup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdnsmailexchangerecord.rst0000644000076500000240000000030312613140041023335 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QDnsMailExchangeRecord ---------------------- .. class:: QDnsMailExchangeRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdnsservicerecord.rst0000644000076500000240000000025712613140041022360 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QDnsServiceRecord ----------------- .. class:: QDnsServiceRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdnstextrecord.rst0000644000076500000240000000024312613140041021677 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QDnsTextRecord -------------- .. class:: QDnsTextRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdockwidget.rst0000644000076500000240000000022712613140041021135 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDockWidget ----------- .. class:: QDockWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomattr.rst0000644000076500000240000000020712613140041020461 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomAttr -------- .. class:: QDomAttr `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomcdatasection.rst0000644000076500000240000000024712613140041022154 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomCDATASection ---------------- .. class:: QDomCDATASection `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomcharacterdata.rst0000644000076500000240000000025312613140041022276 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomCharacterData ----------------- .. class:: QDomCharacterData `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomcomment.rst0000644000076500000240000000022312613140041021147 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomComment ----------- .. class:: QDomComment `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomdocument.rst0000644000076500000240000000022712613140041021327 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomDocument ------------ .. class:: QDomDocument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomdocumentfragment.rst0000644000076500000240000000026712613140041023057 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomDocumentFragment -------------------- .. class:: QDomDocumentFragment `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomdocumenttype.rst0000644000076500000240000000024712613140041022233 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomDocumentType ---------------- .. class:: QDomDocumentType `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomelement.rst0000644000076500000240000000022312613140041021136 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomElement ----------- .. class:: QDomElement `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomentity.rst0000644000076500000240000000021712613140041021024 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomEntity ---------- .. class:: QDomEntity `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomentityreference.rst0000644000076500000240000000026312613140041022704 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomEntityReference ------------------- .. class:: QDomEntityReference `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomimplementation.rst0000644000076500000240000000025712613140041022541 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomImplementation ------------------ .. class:: QDomImplementation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomnamednodemap.rst0000644000076500000240000000024712613140041022143 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomNamedNodeMap ---------------- .. class:: QDomNamedNodeMap `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomnode.rst0000644000076500000240000000020712613140041020434 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomNode -------- .. class:: QDomNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomnodelist.rst0000644000076500000240000000022712613140041021332 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomNodeList ------------ .. class:: QDomNodeList `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomnotation.rst0000644000076500000240000000022712613140041021344 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomNotation ------------ .. class:: QDomNotation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomprocessinginstruction.rst0000644000076500000240000000031312613140041024163 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomProcessingInstruction ------------------------- .. class:: QDomProcessingInstruction `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdomtext.rst0000644000076500000240000000020712613140041020473 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QDomText -------- .. class:: QDomText `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdoublespinbox.rst0000644000076500000240000000024312613140041021664 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QDoubleSpinBox -------------- .. class:: QDoubleSpinBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdoublevalidator.rst0000644000076500000240000000024712613140041022173 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDoubleValidator ---------------- .. class:: QDoubleValidator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdrag.rst0000644000076500000240000000017312613140041017726 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDrag ----- .. class:: QDrag `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdragenterevent.rst0000644000076500000240000000024312613140041022024 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDragEnterEvent --------------- .. class:: QDragEnterEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdragleaveevent.rst0000644000076500000240000000024312613140041022003 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDragLeaveEvent --------------- .. class:: QDragLeaveEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdragmoveevent.rst0000644000076500000240000000023712613140041021660 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDragMoveEvent -------------- .. class:: QDragMoveEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdropevent.rst0000644000076500000240000000021712613140041021016 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QDropEvent ---------- .. class:: QDropEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qdynamicpropertychangeevent.rst0000644000076500000240000000032412613140041024450 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QDynamicPropertyChangeEvent --------------------------- .. class:: QDynamicPropertyChangeEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qeasingcurve.rst0000644000076500000240000000023012613140041021316 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QEasingCurve ------------ .. class:: QEasingCurve `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qelapsedtimer.rst0000644000076500000240000000023412613140041021465 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QElapsedTimer ------------- .. class:: QElapsedTimer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qenterevent.rst0000644000076500000240000000022312613140041021164 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QEnterEvent ----------- .. class:: QEnterEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qerrormessage.rst0000644000076500000240000000023712613140041021510 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QErrorMessage ------------- .. class:: QErrorMessage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qevent.rst0000644000076500000240000000020012613140041020121 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QEvent ------ .. class:: QEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qeventloop.rst0000644000076500000240000000022012613140041021015 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QEventLoop ---------- .. class:: QEventLoop `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qeventlooplocker.rst0000644000076500000240000000025012613140041022220 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QEventLoopLocker ---------------- .. class:: QEventLoopLocker `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qeventtransition.rst0000644000076500000240000000025012613140041022241 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QEventTransition ---------------- .. class:: QEventTransition `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qexposeevent.rst0000644000076500000240000000022712613140041021356 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QExposeEvent ------------ .. class:: QExposeEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qextensionfactory.rst0000644000076500000240000000026012613140041022412 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QExtensionFactory ----------------- .. class:: QExtensionFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qextensionmanager.rst0000644000076500000240000000026012613140041022355 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QExtensionManager ----------------- .. class:: QExtensionManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfile.rst0000644000076500000240000000017412613140041017731 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QFile ----- .. class:: QFile `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfiledevice.rst0000644000076500000240000000022412613140041021105 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QFileDevice ----------- .. class:: QFileDevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfiledialog.rst0000644000076500000240000000022712613140041021110 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFileDialog ----------- .. class:: QFileDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfileiconprovider.rst0000644000076500000240000000025712613140041022357 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFileIconProvider ----------------- .. class:: QFileIconProvider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfileinfo.rst0000644000076500000240000000021412613140041020600 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QFileInfo --------- .. class:: QFileInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfileopenevent.rst0000644000076500000240000000023712613140041021655 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFileOpenEvent -------------- .. class:: QFileOpenEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfileselector.rst0000644000076500000240000000023412613140041021467 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QFileSelector ------------- .. class:: QFileSelector `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfilesystemmodel.rst0000644000076500000240000000025312613140041022215 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFileSystemModel ---------------- .. class:: QFileSystemModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfilesystemwatcher.rst0000644000076500000240000000026012613140041022550 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QFileSystemWatcher ------------------ .. class:: QFileSystemWatcher `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfinalstate.rst0000644000076500000240000000022412613140041021140 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QFinalState ----------- .. class:: QFinalState `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfocusevent.rst0000644000076500000240000000022312613140041021166 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFocusEvent ----------- .. class:: QFocusEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfocusframe.rst0000644000076500000240000000022712613140041021143 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFocusFrame ----------- .. class:: QFocusFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfont.rst0000644000076500000240000000017312613140041017757 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFont ----- .. class:: QFont `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfontcombobox.rst0000644000076500000240000000023712613140041021511 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFontComboBox ------------- .. class:: QFontComboBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfontdatabase.rst0000644000076500000240000000023312613140041021441 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFontDatabase ------------- .. class:: QFontDatabase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfontdialog.rst0000644000076500000240000000022712613140041021137 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFontDialog ----------- .. class:: QFontDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfontinfo.rst0000644000076500000240000000021312613140041020626 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFontInfo --------- .. class:: QFontInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfontmetrics.rst0000644000076500000240000000022712613140041021346 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFontMetrics ------------ .. class:: QFontMetrics `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qfontmetricsf.rst0000644000076500000240000000023312613140041021511 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QFontMetricsF ------------- .. class:: QFontMetricsF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qformbuilder.rst0000644000076500000240000000023412613140041021321 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtDesigner QFormBuilder ------------ .. class:: QFormBuilder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qformlayout.rst0000644000076500000240000000022712613140041021212 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFormLayout ----------- .. class:: QFormLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qframe.rst0000644000076500000240000000020312613140041020075 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QFrame ------ .. class:: QFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgenericargument.rst0000644000076500000240000000025012613140041022164 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QGenericArgument ---------------- .. class:: QGenericArgument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgenericreturnargument.rst0000644000076500000240000000030012613140041023420 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QGenericReturnArgument ---------------------- .. class:: QGenericReturnArgument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoaddress.rst0000644000076500000240000000023312613140041021126 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoAddress ----------- .. class:: QGeoAddress `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoareamonitorinfo.rst0000644000076500000240000000027312613140041022701 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoAreaMonitorInfo ------------------- .. class:: QGeoAreaMonitorInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoareamonitorsource.rst0000644000076500000240000000030312613140041023240 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoAreaMonitorSource --------------------- .. class:: QGeoAreaMonitorSource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeocircle.rst0000644000076500000240000000022712613140041020745 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoCircle ---------- .. class:: QGeoCircle `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeocodereply.rst0000644000076500000240000000024012613140041021465 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoCodeReply ------------- .. class:: QGeoCodeReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeocodingmanager.rst0000644000076500000240000000026012613140041022277 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoCodingManager ----------------- .. class:: QGeoCodingManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeocodingmanagerengine.rst0000644000076500000240000000031012613140041023461 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoCodingManagerEngine ----------------------- .. class:: QGeoCodingManagerEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeocoordinate.rst0000644000076500000240000000024712613140041021635 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoCoordinate -------------- .. class:: QGeoCoordinate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeolocation.rst0000644000076500000240000000023712613140041021315 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoLocation ------------ .. class:: QGeoLocation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeomaneuver.rst0000644000076500000240000000023412613140041021324 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoManeuver ------------ .. class:: QGeoManeuver `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeopositioninfo.rst0000644000076500000240000000025712613140041022227 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoPositionInfo ---------------- .. class:: QGeoPositionInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeopositioninfosource.rst0000644000076500000240000000030712613140041023444 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoPositionInfoSource ---------------------- .. class:: QGeoPositionInfoSource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeorectangle.rst0000644000076500000240000000024312613140041021446 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoRectangle ------------- .. class:: QGeoRectangle `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoroute.rst0000644000076500000240000000022012613140041020633 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoRoute --------- .. class:: QGeoRoute `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoroutereply.rst0000644000076500000240000000024412613140041021715 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoRouteReply -------------- .. class:: QGeoRouteReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeorouterequest.rst0000644000076500000240000000025412613140041022253 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoRouteRequest ---------------- .. class:: QGeoRouteRequest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoroutesegment.rst0000644000076500000240000000025412613140041022225 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoRouteSegment ---------------- .. class:: QGeoRouteSegment `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoroutingmanager.rst0000644000076500000240000000026412613140041022527 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoRoutingManager ------------------ .. class:: QGeoRoutingManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoroutingmanagerengine.rst0000644000076500000240000000031412613140041023711 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoRoutingManagerEngine ------------------------ .. class:: QGeoRoutingManagerEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeosatelliteinfo.rst0000644000076500000240000000026312613140041022346 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoSatelliteInfo ----------------- .. class:: QGeoSatelliteInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeosatelliteinfosource.rst0000644000076500000240000000031312613140041023563 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoSatelliteInfoSource ----------------------- .. class:: QGeoSatelliteInfoSource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoserviceprovider.rst0000644000076500000240000000027012613140041022715 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QGeoServiceProvider ------------------- .. class:: QGeoServiceProvider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgeoshape.rst0000644000076500000240000000022312613140041020600 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QGeoShape --------- .. class:: QGeoShape `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgesture.rst0000644000076500000240000000021312613140041020462 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGesture -------- .. class:: QGesture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgestureevent.rst0000644000076500000240000000023712613140041021532 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGestureEvent ------------- .. class:: QGestureEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgesturerecognizer.rst0000644000076500000240000000026312613140041022557 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGestureRecognizer ------------------ .. class:: QGestureRecognizer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgl.rst0000644000076500000240000000016612613140041017415 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtOpenGL QGL --- .. class:: QGL `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qglcontext.rst0000644000076500000240000000022212613140041021013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtOpenGL QGLContext ---------- .. class:: QGLContext `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qglformat.rst0000644000076500000240000000021612613140041020622 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtOpenGL QGLFormat --------- .. class:: QGLFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qglwidget.rst0000644000076500000240000000021612613140041020615 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtOpenGL QGLWidget --------- .. class:: QGLWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qglyphrun.rst0000644000076500000240000000021312613140041020654 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QGlyphRun --------- .. class:: QGlyphRun `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgradient.rst0000644000076500000240000000021312613140041020601 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QGradient --------- .. class:: QGradient `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsanchor.rst0000644000076500000240000000024712613140041022006 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsAnchor --------------- .. class:: QGraphicsAnchor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsanchorlayout.rst0000644000076500000240000000027712613140041023247 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsAnchorLayout --------------------- .. class:: QGraphicsAnchorLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsblureffect.rst0000644000076500000240000000026712613140041022657 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsBlurEffect ------------------- .. class:: QGraphicsBlurEffect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicscolorizeeffect.rst0000644000076500000240000000030712613140041023534 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsColorizeEffect ----------------------- .. class:: QGraphicsColorizeEffect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsdropshadoweffect.rst0000644000076500000240000000031712613140041024061 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsDropShadowEffect ------------------------- .. class:: QGraphicsDropShadowEffect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicseffect.rst0000644000076500000240000000024712613140041021770 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsEffect --------------- .. class:: QGraphicsEffect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsellipseitem.rst0000644000076500000240000000027312613140041023047 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsEllipseItem -------------------- .. class:: QGraphicsEllipseItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsgridlayout.rst0000644000076500000240000000026712613140041022721 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsGridLayout ------------------- .. class:: QGraphicsGridLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsitem.rst0000644000076500000240000000023712613140041021471 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsItem ------------- .. class:: QGraphicsItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsitemgroup.rst0000644000076500000240000000026312613140041022545 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsItemGroup ------------------ .. class:: QGraphicsItemGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicslayout.rst0000644000076500000240000000024712613140041022051 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsLayout --------------- .. class:: QGraphicsLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicslayoutitem.rst0000644000076500000240000000026712613140041022732 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsLayoutItem ------------------- .. class:: QGraphicsLayoutItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicslinearlayout.rst0000644000076500000240000000027712613140041023247 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsLinearLayout --------------------- .. class:: QGraphicsLinearLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicslineitem.rst0000644000076500000240000000025712613140041022343 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsLineItem ----------------- .. class:: QGraphicsLineItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsobject.rst0000644000076500000240000000024712613140041022002 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsObject --------------- .. class:: QGraphicsObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsopacityeffect.rst0000644000076500000240000000030312613140041023352 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsOpacityEffect ---------------------- .. class:: QGraphicsOpacityEffect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicspathitem.rst0000644000076500000240000000025712613140041022350 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsPathItem ----------------- .. class:: QGraphicsPathItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicspixmapitem.rst0000644000076500000240000000026712613140041022713 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsPixmapItem ------------------- .. class:: QGraphicsPixmapItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicspolygonitem.rst0000644000076500000240000000027312613140041023101 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsPolygonItem -------------------- .. class:: QGraphicsPolygonItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsproxywidget.rst0000644000076500000240000000027312613140041023120 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsProxyWidget -------------------- .. class:: QGraphicsProxyWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsrectitem.rst0000644000076500000240000000025712613140041022351 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsRectItem ----------------- .. class:: QGraphicsRectItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsrotation.rst0000644000076500000240000000025712613140041022374 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsRotation ----------------- .. class:: QGraphicsRotation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscale.rst0000644000076500000240000000024312613140041021617 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsScale -------------- .. class:: QGraphicsScale `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscene.rst0000644000076500000240000000024312613140041021625 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsScene -------------- .. class:: QGraphicsScene `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenecontextmenuevent.rst0000644000076500000240000000034312613140041025162 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneContextMenuEvent ------------------------------ .. class:: QGraphicsSceneContextMenuEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenedragdropevent.rst0000644000076500000240000000032712613140041024415 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneDragDropEvent --------------------------- .. class:: QGraphicsSceneDragDropEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicssceneevent.rst0000644000076500000240000000026712613140041022675 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneEvent ------------------- .. class:: QGraphicsSceneEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenehelpevent.rst0000644000076500000240000000030712613140041023541 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneHelpEvent ----------------------- .. class:: QGraphicsSceneHelpEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenehoverevent.rst0000644000076500000240000000031312613140041023731 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneHoverEvent ------------------------ .. class:: QGraphicsSceneHoverEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenemouseevent.rst0000644000076500000240000000031312613140041023736 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneMouseEvent ------------------------ .. class:: QGraphicsSceneMouseEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenemoveevent.rst0000644000076500000240000000030712613140041023557 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneMoveEvent ----------------------- .. class:: QGraphicsSceneMoveEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicssceneresizeevent.rst0000644000076500000240000000031712613140041024113 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneResizeEvent ------------------------- .. class:: QGraphicsSceneResizeEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsscenewheelevent.rst0000644000076500000240000000031312613140041023712 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSceneWheelEvent ------------------------ .. class:: QGraphicsSceneWheelEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicssimpletextitem.rst0000644000076500000240000000030712613140041023606 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsSimpleTextItem ----------------------- .. class:: QGraphicsSimpleTextItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicssvgitem.rst0000644000076500000240000000024712613140041022212 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSvg QGraphicsSvgItem ---------------- .. class:: QGraphicsSvgItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicstextitem.rst0000644000076500000240000000025712613140041022400 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsTextItem ----------------- .. class:: QGraphicsTextItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicstransform.rst0000644000076500000240000000026312613140041022545 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsTransform ------------------ .. class:: QGraphicsTransform `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsvideoitem.rst0000644000076500000240000000027512613140041022522 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimediaWidgets QGraphicsVideoItem ------------------ .. class:: QGraphicsVideoItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicsview.rst0000644000076500000240000000023712613140041021505 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsView ------------- .. class:: QGraphicsView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicswebview.rst0000644000076500000240000000026112613140041022200 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKitWidgets QGraphicsWebView ---------------- .. class:: QGraphicsWebView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgraphicswidget.rst0000644000076500000240000000024712613140041022017 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGraphicsWidget --------------- .. class:: QGraphicsWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgridlayout.rst0000644000076500000240000000022712613140041021174 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGridLayout ----------- .. class:: QGridLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgroupbox.rst0000644000076500000240000000021712613140041020655 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QGroupBox --------- .. class:: QGroupBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qguiapplication.rst0000644000076500000240000000024312613140041022017 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QGuiApplication --------------- .. class:: QGuiApplication `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgyroscope.rst0000644000076500000240000000022312613140041021017 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QGyroscope ---------- .. class:: QGyroscope `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgyroscopefilter.rst0000644000076500000240000000025312613140041022230 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QGyroscopeFilter ---------------- .. class:: QGyroscopeFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qgyroscopereading.rst0000644000076500000240000000025712613140041022360 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QGyroscopeReading ----------------- .. class:: QGyroscopeReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhboxlayout.rst0000644000076500000240000000022712613140041021207 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QHBoxLayout ----------- .. class:: QHBoxLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qheaderview.rst0000644000076500000240000000022712613140041021134 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QHeaderView ----------- .. class:: QHeaderView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpcontentitem.rst0000644000076500000240000000025012613140041022207 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpContentItem ---------------- .. class:: QHelpContentItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpcontentmodel.rst0000644000076500000240000000025412613140041022355 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpContentModel ----------------- .. class:: QHelpContentModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpcontentwidget.rst0000644000076500000240000000026012613140041022535 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpContentWidget ------------------ .. class:: QHelpContentWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpengine.rst0000644000076500000240000000022412613140041021124 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpEngine ----------- .. class:: QHelpEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpenginecore.rst0000644000076500000240000000024412613140041021777 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpEngineCore --------------- .. class:: QHelpEngineCore `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpevent.rst0000644000076500000240000000021712613140041021002 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QHelpEvent ---------- .. class:: QHelpEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpindexmodel.rst0000644000076500000240000000024412613140041022011 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpIndexModel --------------- .. class:: QHelpIndexModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpindexwidget.rst0000644000076500000240000000025012613140041022171 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpIndexWidget ---------------- .. class:: QHelpIndexWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpsearchengine.rst0000644000076500000240000000025412613140041022315 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpSearchEngine ----------------- .. class:: QHelpSearchEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpsearchquery.rst0000644000076500000240000000025012613140041022211 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpSearchQuery ---------------- .. class:: QHelpSearchQuery `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpsearchquerywidget.rst0000644000076500000240000000030012613140041023411 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpSearchQueryWidget ---------------------- .. class:: QHelpSearchQueryWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhelpsearchresultwidget.rst0000644000076500000240000000030412613140041023566 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtHelp QHelpSearchResultWidget ----------------------- .. class:: QHelpSearchResultWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhideevent.rst0000644000076500000240000000021712613140041020763 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QHideEvent ---------- .. class:: QHideEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhistorystate.rst0000644000076500000240000000023412613140041021551 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QHistoryState ------------- .. class:: QHistoryState `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qholsterfilter.rst0000644000076500000240000000024312613140041021675 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QHolsterFilter -------------- .. class:: QHolsterFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qholsterreading.rst0000644000076500000240000000024712613140041022025 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QHolsterReading --------------- .. class:: QHolsterReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qholstersensor.rst0000644000076500000240000000024312613140041021721 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QHolsterSensor -------------- .. class:: QHolsterSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhostaddress.rst0000644000076500000240000000023312613140041021331 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QHostAddress ------------ .. class:: QHostAddress `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhostinfo.rst0000644000076500000240000000021712613140041020641 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QHostInfo --------- .. class:: QHostInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhoverevent.rst0000644000076500000240000000022312613140041021172 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QHoverEvent ----------- .. class:: QHoverEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhttpmultipart.rst0000644000076500000240000000024312613140041021730 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QHttpMultiPart -------------- .. class:: QHttpMultiPart `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qhttppart.rst0000644000076500000240000000021712613140041020656 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QHttpPart --------- .. class:: QHttpPart `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qicon.rst0000644000076500000240000000017312613140041017741 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QIcon ----- .. class:: QIcon `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qicondragevent.rst0000644000076500000240000000023712613140041021642 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QIconDragEvent -------------- .. class:: QIconDragEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qiconengine.rst0000644000076500000240000000022312613140041021123 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QIconEngine ----------- .. class:: QIconEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qidentityproxymodel.rst0000644000076500000240000000026412613140041022766 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QIdentityProxyModel ------------------- .. class:: QIdentityProxyModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qimage.rst0000644000076500000240000000017712613140041020077 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QImage ------ .. class:: QImage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qimageencodersettings.rst0000644000076500000240000000030212613140041023206 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QImageEncoderSettings --------------------- .. class:: QImageEncoderSettings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qimageiohandler.rst0000644000076500000240000000024312613140041021757 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QImageIOHandler --------------- .. class:: QImageIOHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qimagereader.rst0000644000076500000240000000022712613140041021256 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QImageReader ------------ .. class:: QImageReader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qimagewriter.rst0000644000076500000240000000022712613140041021330 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QImageWriter ------------ .. class:: QImageWriter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qinputdialog.rst0000644000076500000240000000023312613140041021325 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QInputDialog ------------ .. class:: QInputDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qinputevent.rst0000644000076500000240000000022312613140041021206 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QInputEvent ----------- .. class:: QInputEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qinputmethod.rst0000644000076500000240000000022712613140041021351 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QInputMethod ------------ .. class:: QInputMethod `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qinputmethodevent.rst0000644000076500000240000000025312613140041022412 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QInputMethodEvent ----------------- .. class:: QInputMethodEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qinputmethodqueryevent.rst0000644000076500000240000000027712613140041023506 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QInputMethodQueryEvent ---------------------- .. class:: QInputMethodQueryEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qintvalidator.rst0000644000076500000240000000023312613140041021506 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QIntValidator ------------- .. class:: QIntValidator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qiodevice.rst0000644000076500000240000000021412613140041020574 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QIODevice --------- .. class:: QIODevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qirproximityfilter.rst0000644000076500000240000000026312613140041022616 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QIRProximityFilter ------------------ .. class:: QIRProximityFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qirproximityreading.rst0000644000076500000240000000026712613140041022746 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QIRProximityReading ------------------- .. class:: QIRProximityReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qirproximitysensor.rst0000644000076500000240000000026312613140041022642 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QIRProximitySensor ------------------ .. class:: QIRProximitySensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qitemdelegate.rst0000644000076500000240000000023712613140041021443 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QItemDelegate ------------- .. class:: QItemDelegate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qitemeditorcreatorbase.rst0000644000076500000240000000030312613140041023364 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QItemEditorCreatorBase ---------------------- .. class:: QItemEditorCreatorBase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qitemeditorfactory.rst0000644000076500000240000000026312613140041022546 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QItemEditorFactory ------------------ .. class:: QItemEditorFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qitemselection.rst0000644000076500000240000000024012613140041021650 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QItemSelection -------------- .. class:: QItemSelection `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qitemselectionmodel.rst0000644000076500000240000000026412613140041022677 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QItemSelectionModel ------------------- .. class:: QItemSelectionModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qitemselectionrange.rst0000644000076500000240000000026412613140041022673 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QItemSelectionRange ------------------- .. class:: QItemSelectionRange `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsengine.rst0000644000076500000240000000021312613140041020606 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QJSEngine --------- .. class:: QJSEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsonarray.rst0000644000076500000240000000035712613140041021025 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QJsonArray ---------- .. class:: QJsonArray :class:`QJsonArray` is implemented as a Python list of :class:`QJsonValue` instances. `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsondocument.rst0000644000076500000240000000023412613140041021517 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QJsonDocument ------------- .. class:: QJsonDocument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsonobject.rst0000644000076500000240000000037612613140041021156 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QJsonObject ----------- .. class:: QJsonObject :class:`QJsonObject` is implemented as a Python dict of str keys and :class:`QJsonValue` values. `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsonparseerror.rst0000644000076500000240000000024412613140041022066 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QJsonParseError --------------- .. class:: QJsonParseError `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsonvalue.rst0000644000076500000240000000057212613140041021022 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QJsonValue ---------- .. class:: QJsonValue Any of the following can also be given when a :class:`QJsonValue` is expected: - a :class:`QJsonValue.Type` - a bool - an int - a float - a str - a :class:`QJsonObject` - a :class:`QJsonArray`. `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsvalue.rst0000644000076500000240000000020712613140041020460 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QJSValue -------- .. class:: QJSValue `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qjsvalueiterator.rst0000644000076500000240000000024712613140041022236 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QJSValueIterator ---------------- .. class:: QJSValueIterator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qkeyevent.rst0000644000076500000240000000021312613140041020636 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QKeyEvent --------- .. class:: QKeyEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qkeyeventtransition.rst0000644000076500000240000000026712613140041022762 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QKeyEventTransition ------------------- .. class:: QKeyEventTransition `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qkeysequence.rst0000644000076500000240000000022712613140041021332 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QKeySequence ------------ .. class:: QKeySequence `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qkeysequenceedit.rst0000644000076500000240000000025312613140041022177 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QKeySequenceEdit ---------------- .. class:: QKeySequenceEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlabel.rst0000644000076500000240000000020312613140041020062 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QLabel ------ .. class:: QLabel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlayout.rst0000644000076500000240000000020712613140041020324 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QLayout ------- .. class:: QLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlayoutitem.rst0000644000076500000240000000022712613140041021205 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QLayoutItem ----------- .. class:: QLayoutItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlcdnumber.rst0000644000076500000240000000022312613140041020760 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QLCDNumber ---------- .. class:: QLCDNumber `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlibrary.rst0000644000076500000240000000021012613140041020445 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QLibrary -------- .. class:: QLibrary `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlibraryinfo.rst0000644000076500000240000000023012613140041021323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QLibraryInfo ------------ .. class:: QLibraryInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlightfilter.rst0000644000076500000240000000023312613140041021323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QLightFilter ------------ .. class:: QLightFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlightreading.rst0000644000076500000240000000023712613140041021453 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QLightReading ------------- .. class:: QLightReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlightsensor.rst0000644000076500000240000000023312613140041021347 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QLightSensor ------------ .. class:: QLightSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qline.rst0000644000076500000240000000017412613140041017741 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QLine ----- .. class:: QLine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlineargradient.rst0000644000076500000240000000024312613140041021777 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QLinearGradient --------------- .. class:: QLinearGradient `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlineedit.rst0000644000076500000240000000021712613140041020605 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QLineEdit --------- .. class:: QLineEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlinef.rst0000644000076500000240000000020012613140041020075 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QLineF ------ .. class:: QLineF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlistview.rst0000644000076500000240000000021712613140041020656 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QListView --------- .. class:: QListView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlistwidget.rst0000644000076500000240000000022712613140041021170 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QListWidget ----------- .. class:: QListWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlistwidgetitem.rst0000644000076500000240000000024712613140041022051 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QListWidgetItem --------------- .. class:: QListWidgetItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlocale.rst0000644000076500000240000000020412613140041020243 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QLocale ------- .. class:: QLocale `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlocalserver.rst0000644000076500000240000000023312613140041021327 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QLocalServer ------------ .. class:: QLocalServer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlocalsocket.rst0000644000076500000240000000023312613140041021311 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QLocalSocket ------------ .. class:: QLocalSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlocation.rst0000644000076500000240000000022012613140041020612 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QLocation --------- .. class:: QLocation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlockfile.rst0000644000076500000240000000021412613140041020575 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QLockFile --------- .. class:: QLockFile `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlowenergycharacteristic.rst0000644000076500000240000000031512613140041023733 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QLowEnergyCharacteristic ------------------------ .. class:: QLowEnergyCharacteristic `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlowenergycontroller.rst0000644000076500000240000000027512613140041023133 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QLowEnergyController -------------------- .. class:: QLowEnergyController `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlowenergydescriptor.rst0000644000076500000240000000027512613140041023126 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QLowEnergyDescriptor -------------------- .. class:: QLowEnergyDescriptor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qlowenergyservice.rst0000644000076500000240000000026112613140041022403 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtBluetooth QLowEnergyService ----------------- .. class:: QLowEnergyService `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmaccocoaviewcontainer.rst0000644000076500000240000000030312613140041023347 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMacCocoaViewContainer ---------------------- .. class:: QMacCocoaViewContainer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmacpasteboardmime.rst0000644000076500000240000000026512613140041022470 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMacExtras QMacPasteboardMime ------------------ .. class:: QMacPasteboardMime `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmactoolbar.rst0000644000076500000240000000023112613140041021127 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMacExtras QMacToolBar ----------- .. class:: QMacToolBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmactoolbaritem.rst0000644000076500000240000000025112613140041022010 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMacExtras QMacToolBarItem --------------- .. class:: QMacToolBarItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmagnetometer.rst0000644000076500000240000000023712613140041021501 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QMagnetometer ------------- .. class:: QMagnetometer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmagnetometerfilter.rst0000644000076500000240000000026712613140041022712 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QMagnetometerFilter ------------------- .. class:: QMagnetometerFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmagnetometerreading.rst0000644000076500000240000000027312613140041023033 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QMagnetometerReading -------------------- .. class:: QMagnetometerReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmainwindow.rst0000644000076500000240000000022712613140041021165 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMainWindow ----------- .. class:: QMainWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmargins.rst0000644000076500000240000000021012613140041020441 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMargins -------- .. class:: QMargins `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmarginsf.rst0000644000076500000240000000021412613140041020613 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMarginsF --------- .. class:: QMarginsF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmaskgenerator.rst0000644000076500000240000000024612613140041021654 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebSockets QMaskGenerator -------------- .. class:: QMaskGenerator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix2x2.rst0000644000076500000240000000021712613140041020650 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix2x2 ---------- .. class:: QMatrix2x2 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix2x3.rst0000644000076500000240000000021712613140041020651 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix2x3 ---------- .. class:: QMatrix2x3 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix2x4.rst0000644000076500000240000000021712613140041020652 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix2x4 ---------- .. class:: QMatrix2x4 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix3x2.rst0000644000076500000240000000021712613140041020651 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix3x2 ---------- .. class:: QMatrix3x2 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix3x3.rst0000644000076500000240000000021712613140041020652 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix3x3 ---------- .. class:: QMatrix3x3 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix3x4.rst0000644000076500000240000000021712613140041020653 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix3x4 ---------- .. class:: QMatrix3x4 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix4x2.rst0000644000076500000240000000021712613140041020652 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix4x2 ---------- .. class:: QMatrix4x2 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix4x3.rst0000644000076500000240000000021712613140041020653 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix4x3 ---------- .. class:: QMatrix4x3 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmatrix4x4.rst0000644000076500000240000000021712613140041020654 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMatrix4x4 ---------- .. class:: QMatrix4x4 `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmdiarea.rst0000644000076500000240000000021312613140041020406 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMdiArea -------- .. class:: QMdiArea `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmdisubwindow.rst0000644000076500000240000000023712613140041021525 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMdiSubWindow ------------- .. class:: QMdiSubWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediabindableinterface.rst0000644000076500000240000000031212613140041023425 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaBindableInterface ----------------------- .. class:: QMediaBindableInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediacontent.rst0000644000076500000240000000024212613140041021460 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaContent ------------- .. class:: QMediaContent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediacontrol.rst0000644000076500000240000000024212613140041021466 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaControl ------------- .. class:: QMediaControl `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediametadata.rst0000644000076500000240000000024612613140041021572 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaMetaData -------------- .. class:: QMediaMetaData `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediaobject.rst0000644000076500000240000000023612613140041021257 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaObject ------------ .. class:: QMediaObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediaplayer.rst0000644000076500000240000000023612613140041021305 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaPlayer ------------ .. class:: QMediaPlayer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediaplaylist.rst0000644000076500000240000000024612613140041021653 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaPlaylist -------------- .. class:: QMediaPlaylist `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediarecorder.rst0000644000076500000240000000024612613140041021617 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaRecorder -------------- .. class:: QMediaRecorder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediaresource.rst0000644000076500000240000000024612613140041021641 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaResource -------------- .. class:: QMediaResource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediaservice.rst0000644000076500000240000000024212613140041021446 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaService ------------- .. class:: QMediaService `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediatimeinterval.rst0000644000076500000240000000026612613140041022517 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaTimeInterval ------------------ .. class:: QMediaTimeInterval `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmediatimerange.rst0000644000076500000240000000025212613140041021762 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMediaTimeRange --------------- .. class:: QMediaTimeRange `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmenu.rst0000644000076500000240000000017712613140041017761 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMenu ----- .. class:: QMenu `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmenubar.rst0000644000076500000240000000021312613140041020435 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMenuBar -------- .. class:: QMenuBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmessageauthenticationcode.rst0000644000076500000240000000032012613140041024222 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMessageAuthenticationCode -------------------------- .. class:: QMessageAuthenticationCode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmessagebox.rst0000644000076500000240000000022712613140041021146 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMessageBox ----------- .. class:: QMessageBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmessagelogcontext.rst0000644000076500000240000000026012613140041022541 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMessageLogContext ------------------ .. class:: QMessageLogContext `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmessagelogger.rst0000644000076500000240000000024012613140041021630 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMessageLogger -------------- .. class:: QMessageLogger `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmetaclassinfo.rst0000644000076500000240000000024012613140041021634 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMetaClassInfo -------------- .. class:: QMetaClassInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmetaenum.rst0000644000076500000240000000021412613140041020620 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMetaEnum --------- .. class:: QMetaEnum `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmetamethod.rst0000644000076500000240000000022412613140041021135 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMetaMethod ----------- .. class:: QMetaMethod `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmetaobject.rst0000644000076500000240000000022412613140041021123 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMetaObject ----------- .. class:: QMetaObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmetaproperty.rst0000644000076500000240000000023412613140041021542 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMetaProperty ------------- .. class:: QMetaProperty `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmetatype.rst0000644000076500000240000000021412613140041020635 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMetaType --------- .. class:: QMetaType `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmimedata.rst0000644000076500000240000000021412613140041020566 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMimeData --------- .. class:: QMimeData `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmimedatabase.rst0000644000076500000240000000023412613140041021423 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMimeDatabase ------------- .. class:: QMimeDatabase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmimetype.rst0000644000076500000240000000021412613140041020636 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMimeType --------- .. class:: QMimeType `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmodelindex.rst0000644000076500000240000000022412613140041021136 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QModelIndex ----------- .. class:: QModelIndex `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmouseevent.rst0000644000076500000240000000022312613140041021177 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMouseEvent ----------- .. class:: QMouseEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmouseeventtransition.rst0000644000076500000240000000027712613140041023323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QMouseEventTransition --------------------- .. class:: QMouseEventTransition `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmoveevent.rst0000644000076500000240000000021712613140041021020 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMoveEvent ---------- .. class:: QMoveEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmovie.rst0000644000076500000240000000017712613140041020134 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QMovie ------ .. class:: QMovie `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmultimedia.rst0000644000076500000240000000023212613140041021137 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QMultimedia ----------- .. class:: QMultimedia `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmutex.rst0000644000076500000240000000020012613140041020142 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMutex ------ .. class:: QMutex `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qmutexlocker.rst0000644000076500000240000000023012613140041021345 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QMutexLocker ------------ .. class:: QMutexLocker `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndeffilter.rst0000644000076500000240000000022312613140041021127 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefFilter ----------- .. class:: QNdefFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndefmessage.rst0000644000076500000240000000022712613140041021272 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefMessage ------------ .. class:: QNdefMessage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndefnfciconrecord.rst0000644000076500000240000000025712613140041022467 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefNfcIconRecord ------------------ .. class:: QNdefNfcIconRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndefnfcsmartposterrecord.rst0000644000076500000240000000031312613140041024113 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefNfcSmartPosterRecord ------------------------- .. class:: QNdefNfcSmartPosterRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndefnfctextrecord.rst0000644000076500000240000000025712613140041022523 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefNfcTextRecord ------------------ .. class:: QNdefNfcTextRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndefnfcurirecord.rst0000644000076500000240000000025312613140041022332 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefNfcUriRecord ----------------- .. class:: QNdefNfcUriRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qndefrecord.rst0000644000076500000240000000022312613140041021120 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNdefRecord ----------- .. class:: QNdefRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnearfieldmanager.rst0000644000076500000240000000025312613140041022274 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNearFieldManager ----------------- .. class:: QNearFieldManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnearfieldsharemanager.rst0000644000076500000240000000027712613140041023325 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNearFieldShareManager ---------------------- .. class:: QNearFieldShareManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnearfieldsharetarget.rst0000644000076500000240000000027312613140041023175 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNearFieldShareTarget --------------------- .. class:: QNearFieldShareTarget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnearfieldtarget.rst0000644000076500000240000000024712613140041022153 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QNearFieldTarget ---------------- .. class:: QNearFieldTarget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkaccessmanager.rst0000644000076500000240000000027712613140041023224 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkAccessManager --------------------- .. class:: QNetworkAccessManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkaddressentry.rst0000644000076500000240000000027312613140041023133 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkAddressEntry -------------------- .. class:: QNetworkAddressEntry `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkcachemetadata.rst0000644000076500000240000000027712613140041023174 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkCacheMetaData --------------------- .. class:: QNetworkCacheMetaData `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkconfiguration.rst0000644000076500000240000000027712613140041023277 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkConfiguration --------------------- .. class:: QNetworkConfiguration `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkconfigurationmanager.rst0000644000076500000240000000033312613140041024623 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkConfigurationManager ---------------------------- .. class:: QNetworkConfigurationManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkcookie.rst0000644000076500000240000000024312613140041021672 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkCookie -------------- .. class:: QNetworkCookie `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkcookiejar.rst0000644000076500000240000000025712613140041022374 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkCookieJar ----------------- .. class:: QNetworkCookieJar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkdiskcache.rst0000644000076500000240000000025712613140041022344 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkDiskCache ----------------- .. class:: QNetworkDiskCache `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkinterface.rst0000644000076500000240000000025712613140041022366 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkInterface ----------------- .. class:: QNetworkInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkproxy.rst0000644000076500000240000000023712613140041021605 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkProxy ------------- .. class:: QNetworkProxy `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkproxyfactory.rst0000644000076500000240000000027312613140041023175 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkProxyFactory -------------------- .. class:: QNetworkProxyFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkproxyquery.rst0000644000076500000240000000026312613140041022672 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkProxyQuery ------------------ .. class:: QNetworkProxyQuery `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkreply.rst0000644000076500000240000000023712613140041021557 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkReply ------------- .. class:: QNetworkReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworkrequest.rst0000644000076500000240000000024712613140041022115 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkRequest --------------- .. class:: QNetworkRequest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnetworksession.rst0000644000076500000240000000024712613140041022110 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QNetworkSession --------------- .. class:: QNetworkSession `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qnmeapositioninfosource.rst0000644000076500000240000000031312613140041023607 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPositioning QNmeaPositionInfoSource ----------------------- .. class:: QNmeaPositionInfoSource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qobject.rst0000644000076500000240000000020412613140041020252 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QObject ------- .. class:: QObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qobjectcleanuphandler.rst0000644000076500000240000000027412613140041023167 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QObjectCleanupHandler --------------------- .. class:: QObjectCleanupHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qoffscreensurface.rst0000644000076500000240000000025312613140041022333 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOffscreenSurface ----------------- .. class:: QOffscreenSurface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglbuffer.rst0000644000076500000240000000023312613140041021464 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLBuffer ------------- .. class:: QOpenGLBuffer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglcontext.rst0000644000076500000240000000023712613140041021703 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLContext -------------- .. class:: QOpenGLContext `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglcontextgroup.rst0000644000076500000240000000026312613140041022757 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLContextGroup ------------------- .. class:: QOpenGLContextGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopengldebuglogger.rst0000644000076500000240000000025712613140041022507 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLDebugLogger ------------------ .. class:: QOpenGLDebugLogger `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopengldebugmessage.rst0000644000076500000240000000026312613140041022651 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLDebugMessage ------------------- .. class:: QOpenGLDebugMessage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglframebufferobject.rst0000644000076500000240000000030712613140041023670 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLFramebufferObject ------------------------ .. class:: QOpenGLFramebufferObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglframebufferobjectformat.rst0000644000076500000240000000033712613140041025104 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLFramebufferObjectFormat ------------------------------ .. class:: QOpenGLFramebufferObjectFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglpaintdevice.rst0000644000076500000240000000025712613140041022514 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLPaintDevice ------------------ .. class:: QOpenGLPaintDevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglshader.rst0000644000076500000240000000023312613140041021461 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLShader ------------- .. class:: QOpenGLShader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglshaderprogram.rst0000644000076500000240000000026712613140041023060 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLShaderProgram -------------------- .. class:: QOpenGLShaderProgram `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopengltexture.rst0000644000076500000240000000023712613140041021717 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLTexture -------------- .. class:: QOpenGLTexture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopengltimemonitor.rst0000644000076500000240000000025712613140041022567 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLTimeMonitor ------------------ .. class:: QOpenGLTimeMonitor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopengltimerquery.rst0000644000076500000240000000025312613140041022423 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLTimerQuery ----------------- .. class:: QOpenGLTimerQuery `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglvertexarrayobject.rst0000644000076500000240000000030712613140041023760 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLVertexArrayObject ------------------------ .. class:: QOpenGLVertexArrayObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglwidget.rst0000644000076500000240000000023712613140041021502 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QOpenGLWidget ------------- .. class:: QOpenGLWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qopenglwindow.rst0000644000076500000240000000023312613140041021522 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QOpenGLWindow ------------- .. class:: QOpenGLWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qorientationfilter.rst0000644000076500000240000000026312613140041022552 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QOrientationFilter ------------------ .. class:: QOrientationFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qorientationreading.rst0000644000076500000240000000026712613140041022702 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QOrientationReading ------------------- .. class:: QOrientationReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qorientationsensor.rst0000644000076500000240000000026312613140041022576 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QOrientationSensor ------------------ .. class:: QOrientationSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpagedpaintdevice.rst0000644000076500000240000000025312613140041022304 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPagedPaintDevice ----------------- .. class:: QPagedPaintDevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpagelayout.rst0000644000076500000240000000022312613140041021157 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPageLayout ----------- .. class:: QPageLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpagesetupdialog.rst0000644000076500000240000000026012613140041022163 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPageSetupDialog ---------------- .. class:: QPageSetupDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpagesize.rst0000644000076500000240000000021312613140041020613 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPageSize --------- .. class:: QPageSize `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpaintdevice.rst0000644000076500000240000000022712613140041021304 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPaintDevice ------------ .. class:: QPaintDevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpaintdevicewindow.rst0000644000076500000240000000025712613140041022537 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPaintDeviceWindow ------------------ .. class:: QPaintDeviceWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpaintengine.rst0000644000076500000240000000022712613140041021312 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPaintEngine ------------ .. class:: QPaintEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpaintenginestate.rst0000644000076500000240000000025312613140041022352 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPaintEngineState ----------------- .. class:: QPaintEngineState `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpainter.rst0000644000076500000240000000020712613140041020451 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPainter -------- .. class:: QPainter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpainterpath.rst0000644000076500000240000000022712613140041021330 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPainterPath ------------ .. class:: QPainterPath `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpainterpathstroker.rst0000644000076500000240000000026312613140041022742 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPainterPathStroker ------------------- .. class:: QPainterPathStroker `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpaintevent.rst0000644000076500000240000000022312613140041021162 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPaintEvent ----------- .. class:: QPaintEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpalette.rst0000644000076500000240000000020712613140041020445 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPalette -------- .. class:: QPalette `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpangesture.rst0000644000076500000240000000022712613140041021166 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QPanGesture ----------- .. class:: QPanGesture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qparallelanimationgroup.rst0000644000076500000240000000030412613140041023556 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QParallelAnimationGroup ----------------------- .. class:: QParallelAnimationGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpauseanimation.rst0000644000076500000240000000024412613140041022025 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QPauseAnimation --------------- .. class:: QPauseAnimation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpdfwriter.rst0000644000076500000240000000021712613140041021016 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPdfWriter ---------- .. class:: QPdfWriter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpen.rst0000644000076500000240000000016712613140041017576 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPen ---- .. class:: QPen `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpersistentmodelindex.rst0000644000076500000240000000027412613140041023264 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QPersistentModelIndex --------------------- .. class:: QPersistentModelIndex `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpicture.rst0000644000076500000240000000020712613140041020462 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPicture -------- .. class:: QPicture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpictureio.rst0000644000076500000240000000021712613140041021013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPictureIO ---------- .. class:: QPictureIO `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpinchgesture.rst0000644000076500000240000000023712613140041021512 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QPinchGesture ------------- .. class:: QPinchGesture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpixelformat.rst0000644000076500000240000000022712613140041021343 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPixelFormat ------------ .. class:: QPixelFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpixmap.rst0000644000076500000240000000020312613140041020301 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPixmap ------- .. class:: QPixmap `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpixmapcache.rst0000644000076500000240000000022712613140041021273 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPixmapCache ------------ .. class:: QPixmapCache `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplace.rst0000644000076500000240000000020412613140041020070 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlace ------ .. class:: QPlace `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceattribute.rst0000644000076500000240000000025012613140041022015 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceAttribute --------------- .. class:: QPlaceAttribute `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacecategory.rst0000644000076500000240000000024412613140041021632 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceCategory -------------- .. class:: QPlaceCategory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacecontactdetail.rst0000644000076500000240000000027012613140041022632 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceContactDetail ------------------- .. class:: QPlaceContactDetail `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacecontent.rst0000644000076500000240000000024012613140041021463 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceContent ------------- .. class:: QPlaceContent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacecontentreply.rst0000644000076500000240000000026412613140041022545 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceContentReply ------------------ .. class:: QPlaceContentReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacecontentrequest.rst0000644000076500000240000000027412613140041023103 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceContentRequest -------------------- .. class:: QPlaceContentRequest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacedetailsreply.rst0000644000076500000240000000026412613140041022520 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceDetailsReply ------------------ .. class:: QPlaceDetailsReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceeditorial.rst0000644000076500000240000000025012613140041021766 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceEditorial --------------- .. class:: QPlaceEditorial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceicon.rst0000644000076500000240000000022412613140041020743 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceIcon ---------- .. class:: QPlaceIcon `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceidreply.rst0000644000076500000240000000024012613140041021461 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceIdReply ------------- .. class:: QPlaceIdReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceimage.rst0000644000076500000240000000023012613140041021072 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceImage ----------- .. class:: QPlaceImage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacemanager.rst0000644000076500000240000000024012613140041021423 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceManager ------------- .. class:: QPlaceManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacemanagerengine.rst0000644000076500000240000000027012613140041022614 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceManagerEngine ------------------- .. class:: QPlaceManagerEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacematchreply.rst0000644000076500000240000000025412613140041022166 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceMatchReply ---------------- .. class:: QPlaceMatchReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacematchrequest.rst0000644000076500000240000000026412613140041022524 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceMatchRequest ------------------ .. class:: QPlaceMatchRequest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceproposedsearchresult.rst0000644000076500000240000000032412613140041024274 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceProposedSearchResult -------------------------- .. class:: QPlaceProposedSearchResult `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceratings.rst0000644000076500000240000000024012613140041021460 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceRatings ------------- .. class:: QPlaceRatings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacereply.rst0000644000076500000240000000023012613140041021143 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceReply ----------- .. class:: QPlaceReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceresult.rst0000644000076500000240000000023412613140041021332 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceResult ------------ .. class:: QPlaceResult `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacereview.rst0000644000076500000240000000023412613140041021315 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceReview ------------ .. class:: QPlaceReview `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacesearchreply.rst0000644000076500000240000000026012613140041022334 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceSearchReply ----------------- .. class:: QPlaceSearchReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacesearchrequest.rst0000644000076500000240000000027012613140041022672 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceSearchRequest ------------------- .. class:: QPlaceSearchRequest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacesearchresult.rst0000644000076500000240000000026412613140041022523 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceSearchResult ------------------ .. class:: QPlaceSearchResult `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacesearchsuggestionreply.rst0000644000076500000240000000033012613140041024442 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceSearchSuggestionReply --------------------------- .. class:: QPlaceSearchSuggestionReply `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplacesupplier.rst0000644000076500000240000000024412613140041021660 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceSupplier -------------- .. class:: QPlaceSupplier `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaceuser.rst0000644000076500000240000000022412613140041020771 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtLocation QPlaceUser ---------- .. class:: QPlaceUser `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaintextdocumentlayout.rst0000644000076500000240000000031312613140041024012 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QPlainTextDocumentLayout ------------------------ .. class:: QPlainTextDocumentLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qplaintextedit.rst0000644000076500000240000000024312613140041021665 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QPlainTextEdit -------------- .. class:: QPlainTextEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpluginloader.rst0000644000076500000240000000023412613140041021474 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QPluginLoader ------------- .. class:: QPluginLoader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpoint.rst0000644000076500000240000000020012613140041020131 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QPoint ------ .. class:: QPoint `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpointf.rst0000644000076500000240000000020412613140041020303 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QPointF ------- .. class:: QPointF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpolygon.rst0000644000076500000240000000020712613140041020476 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPolygon -------- .. class:: QPolygon `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpolygonf.rst0000644000076500000240000000021312613140041020641 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QPolygonF --------- .. class:: QPolygonF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpressurefilter.rst0000644000076500000240000000024712613140041022071 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QPressureFilter --------------- .. class:: QPressureFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpressurereading.rst0000644000076500000240000000025312613140041022212 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QPressureReading ---------------- .. class:: QPressureReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpressuresensor.rst0000644000076500000240000000024712613140041022115 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QPressureSensor --------------- .. class:: QPressureSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprintdialog.rst0000644000076500000240000000024012613140041021320 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPrintDialog ------------ .. class:: QPrintDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprintengine.rst0000644000076500000240000000024012613140041021326 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPrintEngine ------------ .. class:: QPrintEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprinter.rst0000644000076500000240000000022012613140041020465 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPrinter -------- .. class:: QPrinter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprinterinfo.rst0000644000076500000240000000024012613140041021343 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPrinterInfo ------------ .. class:: QPrinterInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprintpreviewdialog.rst0000644000076500000240000000027412613140041022731 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPrintPreviewDialog ------------------- .. class:: QPrintPreviewDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprintpreviewwidget.rst0000644000076500000240000000027412613140041022755 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtPrintSupport QPrintPreviewWidget ------------------- .. class:: QPrintPreviewWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprocess.rst0000644000076500000240000000021012613140041020457 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QProcess -------- .. class:: QProcess `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprocessenvironment.rst0000644000076500000240000000026412613140041022755 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QProcessEnvironment ------------------- .. class:: QProcessEnvironment `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprogressbar.rst0000644000076500000240000000023312613140041021337 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QProgressBar ------------ .. class:: QProgressBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qprogressdialog.rst0000644000076500000240000000024712613140041022037 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QProgressDialog --------------- .. class:: QProgressDialog `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpropertyanimation.rst0000644000076500000240000000026012613140041022572 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QPropertyAnimation ------------------ .. class:: QPropertyAnimation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qproximityfilter.rst0000644000076500000240000000025312613140041022262 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QProximityFilter ---------------- .. class:: QProximityFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qproximityreading.rst0000644000076500000240000000025712613140041022412 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QProximityReading ----------------- .. class:: QProximityReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qproximitysensor.rst0000644000076500000240000000025312613140041022306 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QProximitySensor ---------------- .. class:: QProximitySensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qproxystyle.rst0000644000076500000240000000022712613140041021253 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QProxyStyle ----------- .. class:: QProxyStyle `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qpushbutton.rst0000644000076500000240000000022712613140041021224 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QPushButton ----------- .. class:: QPushButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlabstracturlinterceptor.rst0000644000076500000240000000031712613140041024330 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlAbstractUrlInterceptor -------------------------- .. class:: QQmlAbstractUrlInterceptor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlapplicationengine.rst0000644000076500000240000000027312613140041023215 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlApplicationEngine --------------------- .. class:: QQmlApplicationEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlcomponent.rst0000644000076500000240000000023312613140041021522 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlComponent ------------- .. class:: QQmlComponent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlcontext.rst0000644000076500000240000000022312613140041021203 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlContext ----------- .. class:: QQmlContext `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlengine.rst0000644000076500000240000000021712613140041020767 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlEngine ---------- .. class:: QQmlEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlerror.rst0000644000076500000240000000021312613140041020647 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlError --------- .. class:: QQmlError `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlexpression.rst0000644000076500000240000000023712613140041021723 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlExpression -------------- .. class:: QQmlExpression `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlextensionplugin.rst0000644000076500000240000000026312613140041022756 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlExtensionPlugin ------------------- .. class:: QQmlExtensionPlugin `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlfileselector.rst0000644000076500000240000000024712613140041022205 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlFileSelector ---------------- .. class:: QQmlFileSelector `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlimageproviderbase.rst0000644000076500000240000000027312613140041023214 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlImageProviderBase --------------------- .. class:: QQmlImageProviderBase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlincubator.rst0000644000076500000240000000023312613140041021506 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlIncubator ------------- .. class:: QQmlIncubator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlincubatorcontrol.rst0000644000076500000240000000026712613140041023116 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlIncubatorControl -------------------- .. class:: QQmlIncubatorControl `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmllistproperty.rst0000644000076500000240000000024712613140041022305 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlListProperty ---------------- .. class:: QQmlListProperty `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmllistreference.rst0000644000076500000240000000025312613140041022354 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlListReference ----------------- .. class:: QQmlListReference `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlndefrecord.rst0000644000076500000240000000023712613140041021637 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNfc QQmlNdefRecord -------------- .. class:: QQmlNdefRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlnetworkaccessmanagerfactory.rst0000644000076500000240000000034312613140041025320 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlNetworkAccessManagerFactory ------------------------------- .. class:: QQmlNetworkAccessManagerFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlparserstatus.rst0000644000076500000240000000024712613140041022265 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlParserStatus ---------------- .. class:: QQmlParserStatus `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlproperty.rst0000644000076500000240000000022712613140041021407 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlProperty ------------ .. class:: QQmlProperty `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlpropertymap.rst0000644000076500000240000000024312613140041022103 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlPropertyMap --------------- .. class:: QQmlPropertyMap `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlpropertyvaluesource.rst0000644000076500000240000000030312613140041023660 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlPropertyValueSource ----------------------- .. class:: QQmlPropertyValueSource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qqmlscriptstring.rst0000644000076500000240000000024712613140041022260 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQml QQmlScriptString ---------------- .. class:: QQmlScriptString `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquaternion.rst0000644000076500000240000000022312613140041021172 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QQuaternion ----------- .. class:: QQuaternion `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickframebufferobject.rst0000644000076500000240000000030512613140041023516 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickFramebufferObject ----------------------- .. class:: QQuickFramebufferObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickimageprovider.rst0000644000076500000240000000026512613140041022705 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickImageProvider ------------------- .. class:: QQuickImageProvider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickitem.rst0000644000076500000240000000022112613140041020776 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickItem ---------- .. class:: QQuickItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickitemgrabresult.rst0000644000076500000240000000027112613140041023076 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickItemGrabResult -------------------- .. class:: QQuickItemGrabResult `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickpainteditem.rst0000644000076500000240000000025512613140041022352 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickPaintedItem ----------------- .. class:: QQuickPaintedItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickrendercontrol.rst0000644000076500000240000000026512613140041022730 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickRenderControl ------------------- .. class:: QQuickRenderControl `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquicktextdocument.rst0000644000076500000240000000026112613140041022567 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickTextDocument ------------------ .. class:: QQuickTextDocument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquicktexturefactory.rst0000644000076500000240000000027112613140041023135 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickTextureFactory -------------------- .. class:: QQuickTextureFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickview.rst0000644000076500000240000000022112613140041021012 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickView ---------- .. class:: QQuickView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickwidget.rst0000644000076500000240000000024012613140041021324 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuickWidgets QQuickWidget ------------ .. class:: QQuickWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qquickwindow.rst0000644000076500000240000000023112613140041021350 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QQuickWindow ------------ .. class:: QQuickWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qradialgradient.rst0000644000076500000240000000024312613140041021761 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QRadialGradient --------------- .. class:: QRadialGradient `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qradiobutton.rst0000644000076500000240000000023312613140041021340 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QRadioButton ------------ .. class:: QRadioButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qradiodata.rst0000644000076500000240000000022612613140041020740 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QRadioData ---------- .. class:: QRadioData `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qradiotuner.rst0000644000076500000240000000023212613140041021161 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QRadioTuner ----------- .. class:: QRadioTuner `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrasterwindow.rst0000644000076500000240000000023312613140041021536 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QRasterWindow ------------- .. class:: QRasterWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrawfont.rst0000644000076500000240000000020712613140041020467 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QRawFont -------- .. class:: QRawFont `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qreadlocker.rst0000644000076500000240000000022412613140041021121 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QReadLocker ----------- .. class:: QReadLocker `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qreadwritelock.rst0000644000076500000240000000024012613140041021643 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QReadWriteLock -------------- .. class:: QReadWriteLock `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrect.rst0000644000076500000240000000017412613140041017747 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRect ----- .. class:: QRect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrectf.rst0000644000076500000240000000020012613140041020103 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRectF ------ .. class:: QRectF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregexp.rst0000644000076500000240000000020412613140041020276 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRegExp ------- .. class:: QRegExp `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregexpvalidator.rst0000644000076500000240000000024712613140041022213 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QRegExpValidator ---------------- .. class:: QRegExpValidator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregion.rst0000644000076500000240000000020312613140041020266 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QRegion ------- .. class:: QRegion `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregularexpression.rst0000644000076500000240000000026012613140041022567 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRegularExpression ------------------ .. class:: QRegularExpression `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregularexpressionmatch.rst0000644000076500000240000000030412613140041023603 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRegularExpressionMatch ----------------------- .. class:: QRegularExpressionMatch `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregularexpressionmatchiterator.rst0000644000076500000240000000034412613140041025361 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRegularExpressionMatchIterator ------------------------------- .. class:: QRegularExpressionMatchIterator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qregularexpressionvalidator.rst0000644000076500000240000000032312613140041024475 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QRegularExpressionValidator --------------------------- .. class:: QRegularExpressionValidator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qresizeevent.rst0000644000076500000240000000022712613140041021354 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QResizeEvent ------------ .. class:: QResizeEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qresource.rst0000644000076500000240000000021412613140041020634 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QResource --------- .. class:: QResource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrotationfilter.rst0000644000076500000240000000024712613140041022060 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QRotationFilter --------------- .. class:: QRotationFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrotationreading.rst0000644000076500000240000000025312613140041022201 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QRotationReading ---------------- .. class:: QRotationReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrotationsensor.rst0000644000076500000240000000024712613140041022104 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QRotationSensor --------------- .. class:: QRotationSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrubberband.rst0000644000076500000240000000022712613140041021117 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QRubberBand ----------- .. class:: QRubberBand `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qrunnable.rst0000644000076500000240000000021412613140041020613 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QRunnable --------- .. class:: QRunnable `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsavefile.rst0000644000076500000240000000021412613140041020603 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSaveFile --------- .. class:: QSaveFile `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscreen.rst0000644000076500000240000000020312613140041020262 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QScreen ------- .. class:: QScreen `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscrollarea.rst0000644000076500000240000000022712613140041021140 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QScrollArea ----------- .. class:: QScrollArea `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscrollbar.rst0000644000076500000240000000022312613140041020770 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QScrollBar ---------- .. class:: QScrollBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscroller.rst0000644000076500000240000000021712613140041020635 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QScroller --------- .. class:: QScroller `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscrollerproperties.rst0000644000076500000240000000026712613140041022757 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QScrollerProperties ------------------- .. class:: QScrollerProperties `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscrollevent.rst0000644000076500000240000000022712613140041021351 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QScrollEvent ------------ .. class:: QScrollEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qscrollprepareevent.rst0000644000076500000240000000026312613140041022730 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QScrollPrepareEvent ------------------- .. class:: QScrollPrepareEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsemaphore.rst0000644000076500000240000000022012613140041020765 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSemaphore ---------- .. class:: QSemaphore `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsensor.rst0000644000076500000240000000020712613140041020320 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QSensor ------- .. class:: QSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsensorfilter.rst0000644000076500000240000000023712613140041021531 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QSensorFilter ------------- .. class:: QSensorFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsensorreading.rst0000644000076500000240000000024312613140041021652 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QSensorReading -------------- .. class:: QSensorReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsequentialanimationgroup.rst0000644000076500000240000000031412613140041024135 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSequentialAnimationGroup ------------------------- .. class:: QSequentialAnimationGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qserialport.rst0000644000076500000240000000023212613140041021171 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSerialPort QSerialPort ----------- .. class:: QSerialPort `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qserialportinfo.rst0000644000076500000240000000025212613140041022047 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSerialPort QSerialPortInfo --------------- .. class:: QSerialPortInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsessionmanager.rst0000644000076500000240000000024312613140041022025 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QSessionManager --------------- .. class:: QSessionManager `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsettings.rst0000644000076500000240000000021412613140041020645 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSettings --------- .. class:: QSettings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgabstractrenderer.rst0000644000076500000240000000026512613140041022677 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGAbstractRenderer ------------------- .. class:: QSGAbstractRenderer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgbasicgeometrynode.rst0000644000076500000240000000027112613140041023045 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGBasicGeometryNode -------------------- .. class:: QSGBasicGeometryNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgclipnode.rst0000644000076500000240000000022512613140041021136 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGClipNode ----------- .. class:: QSGClipNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgdynamictexture.rst0000644000076500000240000000025512613140041022411 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGDynamicTexture ----------------- .. class:: QSGDynamicTexture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgengine.rst0000644000076500000240000000021512613140041020605 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGEngine --------- .. class:: QSGEngine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgflatcolormaterial.rst0000644000076500000240000000027112613140041023046 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGFlatColorMaterial -------------------- .. class:: QSGFlatColorMaterial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsggeometry.rst0000644000076500000240000000022512613140041021174 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGGeometry ----------- .. class:: QSGGeometry `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsggeometrynode.rst0000644000076500000240000000024512613140041022044 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGGeometryNode --------------- .. class:: QSGGeometryNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgmaterial.rst0000644000076500000240000000022512613140041021137 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGMaterial ----------- .. class:: QSGMaterial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgmaterialshader.rst0000644000076500000240000000025512613140041022331 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGMaterialShader ----------------- .. class:: QSGMaterialShader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgmaterialtype.rst0000644000076500000240000000024512613140041022043 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGMaterialType --------------- .. class:: QSGMaterialType `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgnode.rst0000644000076500000240000000020512613140041020264 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGNode ------- .. class:: QSGNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgopacitynode.rst0000644000076500000240000000024112613140041021655 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGOpacityNode -------------- .. class:: QSGOpacityNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgopaquetexturematerial.rst0000644000076500000240000000031112613140041023767 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGOpaqueTextureMaterial ------------------------ .. class:: QSGOpaqueTextureMaterial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgsimplerectnode.rst0000644000076500000240000000025512613140041022361 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGSimpleRectNode ----------------- .. class:: QSGSimpleRectNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgsimpletexturenode.rst0000644000076500000240000000027112613140041023122 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGSimpleTextureNode -------------------- .. class:: QSGSimpleTextureNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgtexture.rst0000644000076500000240000000022112613140041021035 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGTexture ---------- .. class:: QSGTexture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgtexturematerial.rst0000644000076500000240000000026112613140041022560 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGTextureMaterial ------------------ .. class:: QSGTextureMaterial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgtextureprovider.rst0000644000076500000240000000026112613140041022614 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGTextureProvider ------------------ .. class:: QSGTextureProvider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgtransformnode.rst0000644000076500000240000000025112613140041022221 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGTransformNode ---------------- .. class:: QSGTransformNode `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsgvertexcolormaterial.rst0000644000076500000240000000030112613140041023427 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtQuick QSGVertexColorMaterial ---------------------- .. class:: QSGVertexColorMaterial `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsharedmemory.rst0000644000076500000240000000023412613140041021506 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSharedMemory ------------- .. class:: QSharedMemory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qshortcut.rst0000644000076500000240000000021712613140041020663 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QShortcut --------- .. class:: QShortcut `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qshortcutevent.rst0000644000076500000240000000023712613140041021727 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QShortcutEvent -------------- .. class:: QShortcutEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qshowevent.rst0000644000076500000240000000021712613140041021032 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QShowEvent ---------- .. class:: QShowEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsignalblocker.rst0000644000076500000240000000024012613140041021623 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSignalBlocker -------------- .. class:: QSignalBlocker `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsignalmapper.rst0000644000076500000240000000023412613140041021471 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSignalMapper ------------- .. class:: QSignalMapper `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsignalspy.rst0000644000076500000240000000022012613140041021013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtTest QSignalSpy ---------- .. class:: QSignalSpy `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsignaltransition.rst0000644000076500000240000000025412613140041022401 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSignalTransition ----------------- .. class:: QSignalTransition `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsimplexmlnodemodel.rst0000644000076500000240000000027312613140041022713 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QSimpleXmlNodeModel ------------------- .. class:: QSimpleXmlNodeModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsize.rst0000644000076500000240000000017412613140041017764 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSize ----- .. class:: QSize `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsizef.rst0000644000076500000240000000020012613140041020120 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSizeF ------ .. class:: QSizeF `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsizegrip.rst0000644000076500000240000000021712613140041020644 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSizeGrip --------- .. class:: QSizeGrip `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsizepolicy.rst0000644000076500000240000000022712613140041021203 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSizePolicy ----------- .. class:: QSizePolicy `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qslider.rst0000644000076500000240000000020712613140041020271 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSlider ------- .. class:: QSlider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsocketnotifier.rst0000644000076500000240000000024412613140041022040 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSocketNotifier --------------- .. class:: QSocketNotifier `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsortfilterproxymodel.rst0000644000076500000240000000027412613140041023333 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSortFilterProxyModel --------------------- .. class:: QSortFilterProxyModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsound.rst0000644000076500000240000000020612613140041020136 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QSound ------ .. class:: QSound `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsoundeffect.rst0000644000076500000240000000023612613140041021316 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QSoundEffect ------------ .. class:: QSoundEffect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsourcelocation.rst0000644000076500000240000000025312613140041022041 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QSourceLocation --------------- .. class:: QSourceLocation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qspaceritem.rst0000644000076500000240000000022712613140041021145 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSpacerItem ----------- .. class:: QSpacerItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qspinbox.rst0000644000076500000240000000021312613140041020466 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSpinBox -------- .. class:: QSpinBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsplashscreen.rst0000644000076500000240000000023712613140041021504 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSplashScreen ------------- .. class:: QSplashScreen `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsplitter.rst0000644000076500000240000000021712613140041020656 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSplitter --------- .. class:: QSplitter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsplitterhandle.rst0000644000076500000240000000024712613140041022035 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSplitterHandle --------------- .. class:: QSplitterHandle `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsql.rst0000644000076500000240000000016712613140041017613 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSql ---- .. class:: QSql `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqldatabase.rst0000644000076500000240000000022712613140041021275 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlDatabase ------------ .. class:: QSqlDatabase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqldriver.rst0000644000076500000240000000021712613140041021023 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlDriver ---------- .. class:: QSqlDriver `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqldrivercreatorbase.rst0000644000076500000240000000027312613140041023240 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlDriverCreatorBase --------------------- .. class:: QSqlDriverCreatorBase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlerror.rst0000644000076500000240000000021312613140041020655 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlError --------- .. class:: QSqlError `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlfield.rst0000644000076500000240000000021312613140041020607 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlField --------- .. class:: QSqlField `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlindex.rst0000644000076500000240000000021312613140041020633 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlIndex --------- .. class:: QSqlIndex `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlquery.rst0000644000076500000240000000021312613140041020671 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlQuery --------- .. class:: QSqlQuery `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlquerymodel.rst0000644000076500000240000000023712613140041021720 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlQueryModel -------------- .. class:: QSqlQueryModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlrecord.rst0000644000076500000240000000021712613140041021006 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlRecord ---------- .. class:: QSqlRecord `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlrelation.rst0000644000076500000240000000022712613140041021346 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlRelation ------------ .. class:: QSqlRelation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlrelationaldelegate.rst0000644000076500000240000000027712613140041023363 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlRelationalDelegate ---------------------- .. class:: QSqlRelationalDelegate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlrelationaltablemodel.rst0000644000076500000240000000030712613140041023713 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlRelationalTableModel ------------------------ .. class:: QSqlRelationalTableModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqlresult.rst0000644000076500000240000000021712613140041021046 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlResult ---------- .. class:: QSqlResult `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsqltablemodel.rst0000644000076500000240000000023712613140041021642 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSql QSqlTableModel -------------- .. class:: QSqlTableModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qssl.rst0000644000076500000240000000017312613140041017612 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSsl ---- .. class:: QSsl `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslcertificate.rst0000644000076500000240000000024712613140041022017 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslCertificate --------------- .. class:: QSslCertificate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslcertificateextension.rst0000644000076500000240000000031312613140041023746 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslCertificateExtension ------------------------ .. class:: QSslCertificateExtension `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslcipher.rst0000644000076500000240000000022312613140041021001 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslCipher ---------- .. class:: QSslCipher `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslconfiguration.rst0000644000076500000240000000025712613140041022405 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslConfiguration ----------------- .. class:: QSslConfiguration `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslerror.rst0000644000076500000240000000021712613140041020663 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslError --------- .. class:: QSslError `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslkey.rst0000644000076500000240000000020712613140041020321 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslKey ------- .. class:: QSslKey `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsslsocket.rst0000644000076500000240000000022312613140041021017 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QSslSocket ---------- .. class:: QSslSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstackedlayout.rst0000644000076500000240000000024312613140041021663 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStackedLayout -------------- .. class:: QStackedLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstackedwidget.rst0000644000076500000240000000024312613140041021631 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStackedWidget -------------- .. class:: QStackedWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstandarditem.rst0000644000076500000240000000023312613140041021465 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QStandardItem ------------- .. class:: QStandardItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstandarditemmodel.rst0000644000076500000240000000025712613140041022514 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QStandardItemModel ------------------ .. class:: QStandardItemModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstandardpaths.rst0000644000076500000240000000024012613140041021644 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QStandardPaths -------------- .. class:: QStandardPaths `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstate.rst0000644000076500000240000000020012613140041020120 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QState ------ .. class:: QState `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstatemachine.rst0000644000076500000240000000023412613140041021454 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QStateMachine ------------- .. class:: QStateMachine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstatictext.rst0000644000076500000240000000022312613140041021201 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QStaticText ----------- .. class:: QStaticText `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstatusbar.rst0000644000076500000240000000022312613140041021015 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStatusBar ---------- .. class:: QStatusBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstatustipevent.rst0000644000076500000240000000024312613140041022111 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QStatusTipEvent --------------- .. class:: QStatusTipEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstorageinfo.rst0000644000076500000240000000023012613140041021323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QStorageInfo ------------ .. class:: QStorageInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstringlistmodel.rst0000644000076500000240000000025012613140041022230 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QStringListModel ---------------- .. class:: QStringListModel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyle.rst0000644000076500000240000000020312613140041020143 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyle ------ .. class:: QStyle `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleditemdelegate.rst0000644000076500000240000000026712613140041022673 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyledItemDelegate ------------------- .. class:: QStyledItemDelegate `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstylefactory.rst0000644000076500000240000000023712613140041021542 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleFactory ------------- .. class:: QStyleFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstylehintreturn.rst0000644000076500000240000000025312613140041022273 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleHintReturn ---------------- .. class:: QStyleHintReturn `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstylehintreturnmask.rst0000644000076500000240000000027312613140041023151 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleHintReturnMask -------------------- .. class:: QStyleHintReturnMask `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstylehintreturnvariant.rst0000644000076500000240000000030712613140041023660 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleHintReturnVariant ----------------------- .. class:: QStyleHintReturnVariant `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstylehints.rst0000644000076500000240000000022312613140041021213 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QStyleHints ----------- .. class:: QStyleHints `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoption.rst0000644000076500000240000000023312613140041021377 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOption ------------ .. class:: QStyleOption `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionbutton.rst0000644000076500000240000000026312613140041022636 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionButton ------------------ .. class:: QStyleOptionButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptioncombobox.rst0000644000076500000240000000027312613140041023134 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionComboBox -------------------- .. class:: QStyleOptionComboBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptioncomplex.rst0000644000076500000240000000026712613140041022776 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionComplex ------------------- .. class:: QStyleOptionComplex `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiondockwidget.rst0000644000076500000240000000030312613140041023442 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionDockWidget ---------------------- .. class:: QStyleOptionDockWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionfocusrect.rst0000644000076500000240000000027712613140041023325 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionFocusRect --------------------- .. class:: QStyleOptionFocusRect `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionframe.rst0000644000076500000240000000025712613140041022420 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionFrame ----------------- .. class:: QStyleOptionFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiongraphicsitem.rst0000644000076500000240000000031312613140041023776 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionGraphicsItem ------------------------ .. class:: QStyleOptionGraphicsItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiongroupbox.rst0000644000076500000240000000027312613140041023171 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionGroupBox -------------------- .. class:: QStyleOptionGroupBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionheader.rst0000644000076500000240000000026312613140041022553 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionHeader ------------------ .. class:: QStyleOptionHeader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionmenuitem.rst0000644000076500000240000000027312613140041023147 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionMenuItem -------------------- .. class:: QStyleOptionMenuItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionprogressbar.rst0000644000076500000240000000030712613140041023653 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionProgressBar ----------------------- .. class:: QStyleOptionProgressBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionrubberband.rst0000644000076500000240000000030312613140041023424 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionRubberBand ---------------------- .. class:: QStyleOptionRubberBand `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionsizegrip.rst0000644000076500000240000000027312613140041023160 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionSizeGrip -------------------- .. class:: QStyleOptionSizeGrip `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionslider.rst0000644000076500000240000000026312613140041022605 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionSlider ------------------ .. class:: QStyleOptionSlider `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionspinbox.rst0000644000076500000240000000026712613140041023011 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionSpinBox ------------------- .. class:: QStyleOptionSpinBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontab.rst0000644000076500000240000000024712613140041022073 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionTab --------------- .. class:: QStyleOptionTab `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontabbarbase.rst0000644000076500000240000000030312613140041023404 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionTabBarBase ---------------------- .. class:: QStyleOptionTabBarBase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontabwidgetframe.rst0000644000076500000240000000032312613140041024305 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionTabWidgetFrame -------------------------- .. class:: QStyleOptionTabWidgetFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontitlebar.rst0000644000076500000240000000027312613140041023132 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionTitleBar -------------------- .. class:: QStyleOptionTitleBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontoolbar.rst0000644000076500000240000000026712613140041022771 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionToolBar ------------------- .. class:: QStyleOptionToolBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontoolbox.rst0000644000076500000240000000026712613140041023015 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionToolBox ------------------- .. class:: QStyleOptionToolBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptiontoolbutton.rst0000644000076500000240000000030312613140041023527 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionToolButton ---------------------- .. class:: QStyleOptionToolButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstyleoptionviewitem.rst0000644000076500000240000000027312613140041023155 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStyleOptionViewItem -------------------- .. class:: QStyleOptionViewItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qstylepainter.rst0000644000076500000240000000023712613140041021535 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QStylePainter ------------- .. class:: QStylePainter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsurface.rst0000644000076500000240000000020712613140041020437 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QSurface -------- .. class:: QSurface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsurfaceformat.rst0000644000076500000240000000023712613140041021653 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QSurfaceFormat -------------- .. class:: QSurfaceFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsvggenerator.rst0000644000076500000240000000023312613140041021514 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSvg QSvgGenerator ------------- .. class:: QSvgGenerator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsvgrenderer.rst0000644000076500000240000000022712613140041021337 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSvg QSvgRenderer ------------ .. class:: QSvgRenderer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsvgwidget.rst0000644000076500000240000000021712613140041021013 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSvg QSvgWidget ---------- .. class:: QSvgWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qswipegesture.rst0000644000076500000240000000023712613140041021540 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSwipeGesture ------------- .. class:: QSwipeGesture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsyntaxhighlighter.rst0000644000076500000240000000025712613140041022561 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QSyntaxHighlighter ------------------ .. class:: QSyntaxHighlighter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsysinfo.rst0000644000076500000240000000021012613140041020473 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSysInfo -------- .. class:: QSysInfo `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsystemsemaphore.rst0000644000076500000240000000025012613140041022235 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QSystemSemaphore ---------------- .. class:: QSystemSemaphore `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qsystemtrayicon.rst0000644000076500000240000000024712613140041022110 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QSystemTrayIcon --------------- .. class:: QSystemTrayIcon `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qt.rst0000644000076500000240000000016012613140041017250 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore Qt -- .. class:: Qt `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtabbar.rst0000644000076500000240000000020712613140041020242 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTabBar ------- .. class:: QTabBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtabletevent.rst0000644000076500000240000000022712613140041021326 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTabletEvent ------------ .. class:: QTabletEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtableview.rst0000644000076500000240000000022312613140041020767 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTableView ---------- .. class:: QTableView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtablewidget.rst0000644000076500000240000000023312613140041021301 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTableWidget ------------ .. class:: QTableWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtablewidgetitem.rst0000644000076500000240000000025312613140041022162 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTableWidgetItem ---------------- .. class:: QTableWidgetItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtablewidgetselectionrange.rst0000644000076500000240000000032312613140041024224 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTableWidgetSelectionRange -------------------------- .. class:: QTableWidgetSelectionRange `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtabwidget.rst0000644000076500000240000000022312613140041020757 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTabWidget ---------- .. class:: QTabWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtapandholdgesture.rst0000644000076500000240000000026312613140041022526 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTapAndHoldGesture ------------------ .. class:: QTapAndHoldGesture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtapfilter.rst0000644000076500000240000000022312613140041020777 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QTapFilter ---------- .. class:: QTapFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtapgesture.rst0000644000076500000240000000022712613140041021174 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTapGesture ----------- .. class:: QTapGesture `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtapreading.rst0000644000076500000240000000022712613140041021127 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QTapReading ----------- .. class:: QTapReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtapsensor.rst0000644000076500000240000000022312613140041021023 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QTapSensor ---------- .. class:: QTapSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtcpserver.rst0000644000076500000240000000022312613140041021022 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QTcpServer ---------- .. class:: QTcpServer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtcpsocket.rst0000644000076500000240000000022312613140041021004 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QTcpSocket ---------- .. class:: QTcpSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtemporarydir.rst0000644000076500000240000000023412613140041021530 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTemporaryDir ------------- .. class:: QTemporaryDir `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtemporaryfile.rst0000644000076500000240000000024012613140041021666 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTemporaryFile -------------- .. class:: QTemporaryFile `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtest.rst0000644000076500000240000000017412613140041017771 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtTest QTest ----- .. class:: QTest `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextblock.rst0000644000076500000240000000021712613140041021007 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextBlock ---------- .. class:: QTextBlock `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextblockformat.rst0000644000076500000240000000024712613140041022223 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextBlockFormat ---------------- .. class:: QTextBlockFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextblockgroup.rst0000644000076500000240000000024312613140041022063 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextBlockGroup --------------- .. class:: QTextBlockGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextblockuserdata.rst0000644000076500000240000000025712613140041022544 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextBlockUserData ------------------ .. class:: QTextBlockUserData `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextboundaryfinder.rst0000644000076500000240000000026412613140041022732 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTextBoundaryFinder ------------------- .. class:: QTextBoundaryFinder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextbrowser.rst0000644000076500000240000000023312613140041021376 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTextBrowser ------------ .. class:: QTextBrowser `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextcharformat.rst0000644000076500000240000000024312613140041022042 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextCharFormat --------------- .. class:: QTextCharFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextcodec.rst0000644000076500000240000000022012613140041020764 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTextCodec ---------- .. class:: QTextCodec `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextcursor.rst0000644000076500000240000000022312613140041021227 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextCursor ----------- .. class:: QTextCursor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextdecoder.rst0000644000076500000240000000023012613140041021315 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTextDecoder ------------ .. class:: QTextDecoder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextdocument.rst0000644000076500000240000000023312613140041021531 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextDocument ------------- .. class:: QTextDocument `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextdocumentfragment.rst0000644000076500000240000000027312613140041023261 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextDocumentFragment --------------------- .. class:: QTextDocumentFragment `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextdocumentwriter.rst0000644000076500000240000000026312613140041022771 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextDocumentWriter ------------------- .. class:: QTextDocumentWriter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextedit.rst0000644000076500000240000000021712613140041020642 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTextEdit --------- .. class:: QTextEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextencoder.rst0000644000076500000240000000023012613140041021327 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTextEncoder ------------ .. class:: QTextEncoder `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextformat.rst0000644000076500000240000000022312613140041021202 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextFormat ----------- .. class:: QTextFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextfragment.rst0000644000076500000240000000023312613140041021516 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextFragment ------------- .. class:: QTextFragment `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextframe.rst0000644000076500000240000000021712613140041021007 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextFrame ---------- .. class:: QTextFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextframeformat.rst0000644000076500000240000000024712613140041022223 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextFrameFormat ---------------- .. class:: QTextFrameFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextimageformat.rst0000644000076500000240000000024712613140041022213 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextImageFormat ---------------- .. class:: QTextImageFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextinlineobject.rst0000644000076500000240000000025312613140041022362 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextInlineObject ----------------- .. class:: QTextInlineObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextitem.rst0000644000076500000240000000021312613140041020647 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextItem --------- .. class:: QTextItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextlayout.rst0000644000076500000240000000022312613140041021227 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextLayout ----------- .. class:: QTextLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextlength.rst0000644000076500000240000000022312613140041021173 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextLength ----------- .. class:: QTextLength `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextline.rst0000644000076500000240000000021312613140041020640 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextLine --------- .. class:: QTextLine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextlist.rst0000644000076500000240000000021312613140041020664 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextList --------- .. class:: QTextList `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextlistformat.rst0000644000076500000240000000024312613140041022100 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextListFormat --------------- .. class:: QTextListFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextobject.rst0000644000076500000240000000022312613140041021160 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextObject ----------- .. class:: QTextObject `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextobjectinterface.rst0000644000076500000240000000026712613140041023051 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextObjectInterface -------------------- .. class:: QTextObjectInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextoption.rst0000644000076500000240000000022312613140041021222 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextOption ----------- .. class:: QTextOption `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextstream.rst0000644000076500000240000000022412613140041021206 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTextStream ----------- .. class:: QTextStream `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtextstreammanipulator.rst0000644000076500000240000000030012613140041023455 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTextStreamManipulator ---------------------- .. class:: QTextStreamManipulator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtexttable.rst0000644000076500000240000000021712613140041021004 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextTable ---------- .. class:: QTextTable `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtexttablecell.rst0000644000076500000240000000023712613140041021646 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextTableCell -------------- .. class:: QTextTableCell `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtexttablecellformat.rst0000644000076500000240000000026712613140041023062 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextTableCellFormat -------------------- .. class:: QTextTableCellFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtexttableformat.rst0000644000076500000240000000024712613140041022220 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTextTableFormat ---------------- .. class:: QTextTableFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qthread.rst0000644000076500000240000000020412613140041020253 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QThread ------- .. class:: QThread `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qthreadpool.rst0000644000076500000240000000022412613140041021147 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QThreadPool ----------- .. class:: QThreadPool `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtiltfilter.rst0000644000076500000240000000022712613140041021173 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QTiltFilter ----------- .. class:: QTiltFilter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtiltreading.rst0000644000076500000240000000023312613140041021314 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QTiltReading ------------ .. class:: QTiltReading `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtiltsensor.rst0000644000076500000240000000022712613140041021217 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtSensors QTiltSensor ----------- .. class:: QTiltSensor `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtime.rst0000644000076500000240000000017412613140041017750 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTime ----- .. class:: QTime `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtimeedit.rst0000644000076500000240000000021712613140041020614 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTimeEdit --------- .. class:: QTimeEdit `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtimeline.rst0000644000076500000240000000021412613140041020613 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTimeLine --------- .. class:: QTimeLine `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtimer.rst0000644000076500000240000000020012613140041020120 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTimer ------ .. class:: QTimer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtimerevent.rst0000644000076500000240000000022412613140041021170 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTimerEvent ----------- .. class:: QTimerEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtimezone.rst0000644000076500000240000000021412613140041020637 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTimeZone --------- .. class:: QTimeZone `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtoolbar.rst0000644000076500000240000000021312613140041020446 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QToolBar -------- .. class:: QToolBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtoolbox.rst0000644000076500000240000000021312613140041020472 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QToolBox -------- .. class:: QToolBox `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtoolbutton.rst0000644000076500000240000000022712613140041021222 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QToolButton ----------- .. class:: QToolButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtooltip.rst0000644000076500000240000000021312613140041020476 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QToolTip -------- .. class:: QToolTip `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtouchdevice.rst0000644000076500000240000000022712613140041021313 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTouchDevice ------------ .. class:: QTouchDevice `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtouchevent.rst0000644000076500000240000000022312613140041021171 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTouchEvent ----------- .. class:: QTouchEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtransform.rst0000644000076500000240000000021712613140041021023 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QTransform ---------- .. class:: QTransform `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtranslator.rst0000644000076500000240000000022412613140041021177 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QTranslator ----------- .. class:: QTranslator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtreeview.rst0000644000076500000240000000021712613140041020642 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTreeView --------- .. class:: QTreeView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtreewidget.rst0000644000076500000240000000022712613140041021154 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTreeWidget ----------- .. class:: QTreeWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtreewidgetitem.rst0000644000076500000240000000024712613140041022035 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTreeWidgetItem --------------- .. class:: QTreeWidgetItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtreewidgetitemiterator.rst0000644000076500000240000000030712613140041023604 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QTreeWidgetItemIterator ----------------------- .. class:: QTreeWidgetItemIterator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qtwin.rst0000644000076500000240000000020112613140041017762 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QtWin ----- .. class:: QtWin `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qudpsocket.rst0000644000076500000240000000022312613140041021006 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtNetwork QUdpSocket ---------- .. class:: QUdpSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qundocommand.rst0000644000076500000240000000023312613140041021312 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QUndoCommand ------------ .. class:: QUndoCommand `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qundogroup.rst0000644000076500000240000000022312613140041021027 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QUndoGroup ---------- .. class:: QUndoGroup `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qundostack.rst0000644000076500000240000000022312613140041021000 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QUndoStack ---------- .. class:: QUndoStack `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qundoview.rst0000644000076500000240000000021712613140041020650 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QUndoView --------- .. class:: QUndoView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qurl.rst0000644000076500000240000000017012613140041017610 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QUrl ---- .. class:: QUrl `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qurlquery.rst0000644000076500000240000000021412613140041020675 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QUrlQuery --------- .. class:: QUrlQuery `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/quuid.rst0000644000076500000240000000017412613140041017760 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QUuid ----- .. class:: QUuid `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvalidator.rst0000644000076500000240000000021712613140041020775 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QValidator ---------- .. class:: QValidator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvariant.rst0000644000076500000240000000021012613140041020445 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QVariant -------- .. class:: QVariant `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvariantanimation.rst0000644000076500000240000000025412613140041022355 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QVariantAnimation ----------------- .. class:: QVariantAnimation `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvboxlayout.rst0000644000076500000240000000022712613140041021225 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QVBoxLayout ----------- .. class:: QVBoxLayout `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvector2d.rst0000644000076500000240000000021312613140041020534 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QVector2D --------- .. class:: QVector2D `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvector3d.rst0000644000076500000240000000021312613140041020535 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QVector3D --------- .. class:: QVector3D `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvector4d.rst0000644000076500000240000000021312613140041020536 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QVector4D --------- .. class:: QVector4D `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvideoencodersettings.rst0000644000076500000240000000030212613140041023232 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QVideoEncoderSettings --------------------- .. class:: QVideoEncoderSettings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvideoframe.rst0000644000076500000240000000023212613140041021126 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QVideoFrame ----------- .. class:: QVideoFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvideoprobe.rst0000644000076500000240000000023212613140041021143 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QVideoProbe ----------- .. class:: QVideoProbe `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvideosurfaceformat.rst0000644000076500000240000000027212613140041022701 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimedia QVideoSurfaceFormat ------------------- .. class:: QVideoSurfaceFormat `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qvideowidget.rst0000644000076500000240000000024512613140041021323 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtMultimediaWidgets QVideoWidget ------------ .. class:: QVideoWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwaitcondition.rst0000644000076500000240000000024012613140041021657 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QWaitCondition -------------- .. class:: QWaitCondition `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebchannel.rst0000644000076500000240000000023212613140041021113 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebChannel QWebChannel ----------- .. class:: QWebChannel `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebchannelabstracttransport.rst0000644000076500000240000000033612613140041024621 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebChannel QWebChannelAbstractTransport ---------------------------- .. class:: QWebChannelAbstractTransport `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebdatabase.rst0000644000076500000240000000023212613140041021247 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebDatabase ------------ .. class:: QWebDatabase `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebelement.rst0000644000076500000240000000022612613140041021137 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebElement ----------- .. class:: QWebElement `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebelementcollection.rst0000644000076500000240000000027612613140041023220 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebElementCollection --------------------- .. class:: QWebElementCollection `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginecertificateerror.rst0000644000076500000240000000033412613140041024230 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineCertificateError -------------------------- .. class:: QWebEngineCertificateError `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginedownloaditem.rst0000644000076500000240000000031412613140041023360 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineDownloadItem ---------------------- .. class:: QWebEngineDownloadItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginehistory.rst0000644000076500000240000000027012613140041022374 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineHistory ----------------- .. class:: QWebEngineHistory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginehistoryitem.rst0000644000076500000240000000031012613140041023246 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineHistoryItem --------------------- .. class:: QWebEngineHistoryItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginepage.rst0000644000076500000240000000025412613140041021611 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEnginePage -------------- .. class:: QWebEnginePage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebengineprofile.rst0000644000076500000240000000027012613140041022333 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineProfile ----------------- .. class:: QWebEngineProfile `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginescript.rst0000644000076500000240000000026412613140041022202 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineScript ---------------- .. class:: QWebEngineScript `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginescriptcollection.rst0000644000076500000240000000033412613140041024254 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineScriptCollection -------------------------- .. class:: QWebEngineScriptCollection `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebenginesettings.rst0000644000076500000240000000027412613140041022537 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineSettings ------------------ .. class:: QWebEngineSettings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebengineview.rst0000644000076500000240000000025412613140041021647 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebEngineWidgets QWebEngineView -------------- .. class:: QWebEngineView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebframe.rst0000644000076500000240000000022512613140041020577 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKitWidgets QWebFrame --------- .. class:: QWebFrame `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebhistory.rst0000644000076500000240000000022612613140041021207 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebHistory ----------- .. class:: QWebHistory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebhistoryinterface.rst0000644000076500000240000000027212613140041023071 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebHistoryInterface -------------------- .. class:: QWebHistoryInterface `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebhistoryitem.rst0000644000076500000240000000024612613140041022070 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebHistoryItem --------------- .. class:: QWebHistoryItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebhittestresult.rst0000644000076500000240000000026512613140041022434 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKitWidgets QWebHitTestResult ----------------- .. class:: QWebHitTestResult `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebinspector.rst0000644000076500000240000000024512613140041021515 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKitWidgets QWebInspector ------------- .. class:: QWebInspector `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebpage.rst0000644000076500000240000000022112613140041020415 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKitWidgets QWebPage -------- .. class:: QWebPage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebpluginfactory.rst0000644000076500000240000000025612613140041022377 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebPluginFactory ----------------- .. class:: QWebPluginFactory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebsecurityorigin.rst0000644000076500000240000000026212613140041022565 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebSecurityOrigin ------------------ .. class:: QWebSecurityOrigin `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebsettings.rst0000644000076500000240000000023212613140041021343 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKit QWebSettings ------------ .. class:: QWebSettings `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebsocket.rst0000644000076500000240000000022612613140041020776 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebSockets QWebSocket ---------- .. class:: QWebSocket `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebsocketcorsauthenticator.rst0000644000076500000240000000033212613140041024456 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebSockets QWebSocketCorsAuthenticator --------------------------- .. class:: QWebSocketCorsAuthenticator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebsocketprotocol.rst0000644000076500000240000000026612613140041022564 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebSockets QWebSocketProtocol ------------------ .. class:: QWebSocketProtocol `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebsocketserver.rst0000644000076500000240000000025612613140041022230 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebSockets QWebSocketServer ---------------- .. class:: QWebSocketServer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwebview.rst0000644000076500000240000000022112613140041020453 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWebKitWidgets QWebView -------- .. class:: QWebView `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwhatsthis.rst0000644000076500000240000000022312613140041021023 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QWhatsThis ---------- .. class:: QWhatsThis `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwhatsthisclickedevent.rst0000644000076500000240000000027712613140041023415 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QWhatsThisClickedEvent ---------------------- .. class:: QWhatsThisClickedEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwheelevent.rst0000644000076500000240000000022312613140041021153 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QWheelEvent ----------- .. class:: QWheelEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwidget.rst0000644000076500000240000000020712613140041020272 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QWidget ------- .. class:: QWidget `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwidgetaction.rst0000644000076500000240000000023712613140041021473 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QWidgetAction ------------- .. class:: QWidgetAction `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwidgetitem.rst0000644000076500000240000000022712613140041021153 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QWidgetItem ----------- .. class:: QWidgetItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwindow.rst0000644000076500000240000000020312613140041020312 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QWindow ------- .. class:: QWindow `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwindowstatechangeevent.rst0000644000076500000240000000030312613140041023564 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtGui QWindowStateChangeEvent ----------------------- .. class:: QWindowStateChangeEvent `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwinjumplist.rst0000644000076500000240000000023512613140041021375 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinJumpList ------------ .. class:: QWinJumpList `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwinjumplistcategory.rst0000644000076500000240000000027512613140041023137 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinJumpListCategory -------------------- .. class:: QWinJumpListCategory `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwinjumplistitem.rst0000644000076500000240000000025512613140041022256 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinJumpListItem ---------------- .. class:: QWinJumpListItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwintaskbarbutton.rst0000644000076500000240000000026112613140041022410 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinTaskbarButton ----------------- .. class:: QWinTaskbarButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwintaskbarprogress.rst0000644000076500000240000000027112613140041022742 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinTaskbarProgress ------------------- .. class:: QWinTaskbarProgress `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwinthumbnailtoolbar.rst0000644000076500000240000000027512613140041023100 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinThumbnailToolBar -------------------- .. class:: QWinThumbnailToolBar `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwinthumbnailtoolbutton.rst0000644000076500000240000000031112613140041023636 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWinExtras QWinThumbnailToolButton ----------------------- .. class:: QWinThumbnailToolButton `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwizard.rst0000644000076500000240000000020712613140041020307 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QWizard ------- .. class:: QWizard `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwizardpage.rst0000644000076500000240000000022712613140041021146 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtWidgets QWizardPage ----------- .. class:: QWizardPage `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qwritelocker.rst0000644000076500000240000000023012613140041021335 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QWriteLocker ------------ .. class:: QWriteLocker `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qx11info.rst0000644000076500000240000000021512613140041020273 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtX11Extras QX11Info -------- .. class:: QX11Info `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlattributes.rst0000644000076500000240000000023712613140041021721 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlAttributes -------------- .. class:: QXmlAttributes `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlcontenthandler.rst0000644000076500000240000000025712613140041022545 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlContentHandler ------------------ .. class:: QXmlContentHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmldeclhandler.rst0000644000076500000240000000024312613140041021775 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlDeclHandler --------------- .. class:: QXmlDeclHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmldefaulthandler.rst0000644000076500000240000000025712613140041022517 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlDefaultHandler ------------------ .. class:: QXmlDefaultHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmldtdhandler.rst0000644000076500000240000000023712613140041021644 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlDTDHandler -------------- .. class:: QXmlDTDHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlentityresolver.rst0000644000076500000240000000025712613140041022633 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlEntityResolver ------------------ .. class:: QXmlEntityResolver `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlerrorhandler.rst0000644000076500000240000000024712613140041022223 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlErrorHandler ---------------- .. class:: QXmlErrorHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlformatter.rst0000644000076500000240000000024312613140041021533 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlFormatter ------------- .. class:: QXmlFormatter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlinputsource.rst0000644000076500000240000000024312613140041022110 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlInputSource --------------- .. class:: QXmlInputSource `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlitem.rst0000644000076500000240000000021712613140041020467 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlItem -------- .. class:: QXmlItem `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmllexicalhandler.rst0000644000076500000240000000025712613140041022514 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlLexicalHandler ------------------ .. class:: QXmlLexicalHandler `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmllocator.rst0000644000076500000240000000022312613140041021171 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlLocator ----------- .. class:: QXmlLocator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlname.rst0000644000076500000240000000021712613140041020451 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlName -------- .. class:: QXmlName `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlnamepool.rst0000644000076500000240000000023712613140041021345 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlNamePool ------------ .. class:: QXmlNamePool `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlnamespacesupport.rst0000644000076500000240000000026712613140041023127 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlNamespaceSupport -------------------- .. class:: QXmlNamespaceSupport `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlnodemodelindex.rst0000644000076500000240000000026712613140041022534 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlNodeModelIndex ------------------ .. class:: QXmlNodeModelIndex `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlparseexception.rst0000644000076500000240000000025712613140041022566 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlParseException ------------------ .. class:: QXmlParseException `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlquery.rst0000644000076500000240000000022312613140041020673 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlQuery --------- .. class:: QXmlQuery `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlreader.rst0000644000076500000240000000021712613140041020773 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlReader ---------- .. class:: QXmlReader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlresultitems.rst0000644000076500000240000000025312613140041022111 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlResultItems --------------- .. class:: QXmlResultItems `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlschema.rst0000644000076500000240000000022712613140041020772 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlSchema ---------- .. class:: QXmlSchema `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlschemavalidator.rst0000644000076500000240000000027312613140041022701 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlSchemaValidator ------------------- .. class:: QXmlSchemaValidator `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlserializer.rst0000644000076500000240000000024712613140041021705 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXmlPatterns QXmlSerializer -------------- .. class:: QXmlSerializer `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlsimplereader.rst0000644000076500000240000000024712613140041022210 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtXml QXmlSimpleReader ---------------- .. class:: QXmlSimpleReader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamattribute.rst0000644000076500000240000000026412613140041022752 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamAttribute ------------------- .. class:: QXmlStreamAttribute `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamattributes.rst0000644000076500000240000000027012613140041023132 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamAttributes -------------------- .. class:: QXmlStreamAttributes `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamentitydeclaration.rst0000644000076500000240000000032412613140041024466 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamEntityDeclaration --------------------------- .. class:: QXmlStreamEntityDeclaration `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamentityresolver.rst0000644000076500000240000000031012613140041024035 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamEntityResolver ------------------------ .. class:: QXmlStreamEntityResolver `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamnamespacedeclaration.rst0000644000076500000240000000034012613140041025104 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamNamespaceDeclaration ------------------------------ .. class:: QXmlStreamNamespaceDeclaration `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamnotationdeclaration.rst0000644000076500000240000000033412613140041025006 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamNotationDeclaration ----------------------------- .. class:: QXmlStreamNotationDeclaration `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamreader.rst0000644000076500000240000000025012613140041022204 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamReader ---------------- .. class:: QXmlStreamReader `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api/qxmlstreamwriter.rst0000644000076500000240000000025012613140041022256 0ustar philstaff00000000000000.. currentmodule:: PyQt5.QtCore QXmlStreamWriter ---------------- .. class:: QXmlStreamWriter `C++ documentation `_ PyQt-gpl-5.5.1/doc/sphinx/api_metadata.cfg0000644000076500000240000010414512567127140020440 0ustar philstaff00000000000000# Python Module Python Class # ------------- ------------ QAxContainer QAxBase QAxContainer QAxObject QAxContainer QAxWidget QtBluetooth QBluetoothAddress QtBluetooth QBluetoothDeviceDiscoveryAgent QtBluetooth QBluetoothDeviceInfo QtBluetooth QBluetoothHostInfo QtBluetooth QBluetoothLocalDevice QtBluetooth QBluetoothServer QtBluetooth QBluetoothServiceDiscoveryAgent QtBluetooth QBluetoothServiceInfo QtBluetooth QBluetoothSocket QtBluetooth QBluetoothTransferManager QtBluetooth QBluetoothTransferReply QtBluetooth QBluetoothTransferRequest QtBluetooth QBluetoothUuid QtBluetooth QLowEnergyCharacteristic QtBluetooth QLowEnergyController QtBluetooth QLowEnergyDescriptor QtBluetooth QLowEnergyService QtCore QAbstractAnimation QtCore QAbstractEventDispatcher QtCore QAbstractItemModel QtCore QAbstractListModel QtCore QAbstractNativeEventFilter QtCore QAbstractProxyModel QtCore QAbstractState QtCore QAbstractTableModel QtCore QAbstractTransition QtCore QAnimationGroup QtCore QBasicTimer QtCore QBitArray QtCore QBuffer QtCore QByteArray QtCore QByteArrayMatcher QtCore QChildEvent QtCore QCollator QtCore QCollatorSortKey QtCore QCommandLineOption QtCore QCommandLineParser QtCore QCoreApplication QtCore QCryptographicHash QtCore QDataStream QtCore QDate QtCore QDateTime QtCore QDir QtCore QDirIterator QtCore QDynamicPropertyChangeEvent QtCore QEasingCurve QtCore QElapsedTimer QtCore QEvent QtCore QEventLoop QtCore QEventLoopLocker QtCore QEventTransition QtCore QFile QtCore QFileDevice QtCore QFileInfo QtCore QFileSelector QtCore QFileSystemWatcher QtCore QFinalState QtCore QGenericArgument QtCore QGenericReturnArgument QtCore QHistoryState QtCore QIODevice QtCore QIdentityProxyModel QtCore QItemSelection QtCore QItemSelectionModel QtCore QItemSelectionRange QtCore QJsonArray QtCore QJsonDocument QtCore QJsonObject QtCore QJsonParseError QtCore QJsonValue QtCore QLibrary QtCore QLibraryInfo QtCore QLine QtCore QLineF QtCore QLocale QtCore QLockFile QtCore QMargins QtCore QMarginsF QtCore QMessageAuthenticationCode QtCore QMessageLogContext QtCore QMessageLogger QtCore QMetaClassInfo QtCore QMetaEnum QtCore QMetaMethod QtCore QMetaObject QtCore QMetaProperty QtCore QMetaType QtCore QMimeData QtCore QMimeDatabase QtCore QMimeType QtCore QModelIndex QtCore QMutex QtCore QMutexLocker QtCore QObject QtCore QObjectCleanupHandler QtCore QParallelAnimationGroup QtCore QPauseAnimation QtCore QPersistentModelIndex QtCore QPluginLoader QtCore QPoint QtCore QPointF QtCore QProcess QtCore QProcessEnvironment QtCore QPropertyAnimation QtCore QReadLocker QtCore QReadWriteLock QtCore QRect QtCore QRectF QtCore QRegExp QtCore QRegularExpression QtCore QRegularExpressionMatch QtCore QRegularExpressionMatchIterator QtCore QResource QtCore QRunnable QtCore QSaveFile QtCore QSemaphore QtCore QSequentialAnimationGroup QtCore QSettings QtCore QSharedMemory QtCore QSignalBlocker QtCore QSignalMapper QtCore QSignalTransition QtCore QSize QtCore QSizeF QtCore QSocketNotifier QtCore QSortFilterProxyModel QtCore QStandardPaths QtCore QState QtCore QStateMachine QtCore QStorageInfo QtCore QStringListModel QtCore QSysInfo QtCore QSystemSemaphore QtCore Qt QtCore QTemporaryDir QtCore QTemporaryFile QtCore QTextBoundaryFinder QtCore QTextCodec QtCore QTextDecoder QtCore QTextEncoder QtCore QTextStream QtCore QTextStreamManipulator QtCore QThread QtCore QThreadPool QtCore QTime QtCore QTimeLine QtCore QTimer QtCore QTimerEvent QtCore QTimeZone QtCore QTranslator QtCore QUrl QtCore QUrlQuery QtCore QUuid QtCore QVariant QtCore QVariantAnimation QtCore QWaitCondition QtCore QWriteLocker QtCore QXmlStreamAttribute QtCore QXmlStreamAttributes QtCore QXmlStreamEntityDeclaration QtCore QXmlStreamEntityResolver QtCore QXmlStreamNamespaceDeclaration QtCore QXmlStreamNotationDeclaration QtCore QXmlStreamReader QtCore QXmlStreamWriter QtDBus QDBus QtDBus QDBusAbstractAdaptor QtDBus QDBusAbstractInterface QtDBus QDBusArgument QtDBus QDBusConnection QtDBus QDBusConnectionInterface QtDBus QDBusError QtDBus QDBusInterface QtDBus QDBusMessage QtDBus QDBusObjectPath QtDBus QDBusPendingCall QtDBus QDBusPendingCallWatcher QtDBus QDBusPendingReply QtDBus QDBusReply QtDBus QDBusServiceWatcher QtDBus QDBusSignature QtDBus QDBusUnixFileDescriptor QtDBus QDBusVariant QtDesigner QAbstractExtensionFactory QtDesigner QAbstractExtensionManager QtDesigner QAbstractFormBuilder QtDesigner QDesignerActionEditorInterface QtDesigner QDesignerContainerExtension QtDesigner QDesignerCustomWidgetCollectionInterface QtDesigner QDesignerCustomWidgetInterface QtDesigner QDesignerFormEditorInterface QtDesigner QDesignerFormWindowCursorInterface QtDesigner QDesignerFormWindowInterface QtDesigner QDesignerFormWindowManagerInterface QtDesigner QDesignerMemberSheetExtension QtDesigner QDesignerObjectInspectorInterface QtDesigner QDesignerPropertyEditorInterface QtDesigner QDesignerPropertySheetExtension QtDesigner QDesignerTaskMenuExtension QtDesigner QDesignerWidgetBoxInterface QtDesigner QExtensionFactory QtDesigner QExtensionManager QtDesigner QFormBuilder #QtDesigner QPyDesignerContainerExtension #QtDesigner QPyDesignerCustomWidgetCollectionPlugin #QtDesigner QPyDesignerCustomWidgetPlugin #QtDesigner QPyDesignerMemberSheetExtension #QtDesigner QPyDesignerPropertySheetExtension #QtDesigner QPyDesignerTaskMenuExtension Enginio Enginio Enginio EnginioClient Enginio EnginioClientConnection Enginio EnginioIdentity Enginio EnginioModel Enginio EnginioOAuth2Authentication Enginio EnginioReply QtGui QAbstractTextDocumentLayout QtGui QActionEvent QtGui QBackingStore QtGui QBitmap QtGui QBrush QtGui QClipboard QtGui QCloseEvent QtGui QColor QtGui QConicalGradient QtGui QContextMenuEvent QtGui QCursor QtGui QDesktopServices QtGui QDoubleValidator QtGui QDrag QtGui QDragEnterEvent QtGui QDragLeaveEvent QtGui QDragMoveEvent QtGui QDropEvent QtGui QEnterEvent QtGui QExposeEvent QtGui QFileOpenEvent QtGui QFocusEvent QtGui QFont QtGui QFontDatabase QtGui QFontInfo QtGui QFontMetrics QtGui QFontMetricsF QtGui QGlyphRun QtGui QGradient QtGui QGuiApplication QtGui QHelpEvent QtGui QHideEvent QtGui QHoverEvent QtGui QIcon QtGui QIconDragEvent QtGui QIconEngine QtGui QImage QtGui QImageIOHandler QtGui QImageReader QtGui QImageWriter QtGui QInputEvent QtGui QInputMethod QtGui QInputMethodEvent QtGui QInputMethodQueryEvent QtGui QIntValidator QtGui QKeyEvent QtGui QKeySequence QtGui QLinearGradient QtGui QMatrix2x2 QtGui QMatrix2x3 QtGui QMatrix2x4 QtGui QMatrix3x2 QtGui QMatrix3x3 QtGui QMatrix3x4 QtGui QMatrix4x2 QtGui QMatrix4x3 QtGui QMatrix4x4 QtGui QMouseEvent QtGui QMoveEvent QtGui QMovie QtGui QOffscreenSurface QtGui QOpenGLBuffer QtGui QOpenGLContext QtGui QOpenGLContextGroup QtGui QOpenGLDebugLogger QtGui QOpenGLDebugMessage QtGui QOpenGLFramebufferObject QtGui QOpenGLFramebufferObjectFormat QtGui QOpenGLPaintDevice QtGui QOpenGLShader QtGui QOpenGLShaderProgram QtGui QOpenGLTexture QtGui QOpenGLTimeMonitor QtGui QOpenGLTimerQuery QtGui QOpenGLVertexArrayObject QtGui QOpenGLWindow QtGui QPageLayout QtGui QPageSize QtGui QPagedPaintDevice QtGui QPaintDevice QtGui QPaintDeviceWindow QtGui QPaintEngine QtGui QPaintEngineState QtGui QPaintEvent QtGui QPainter QtGui QPainterPath QtGui QPainterPathStroker QtGui QPalette QtGui QPdfWriter QtGui QPen QtGui QPicture QtGui QPictureIO QtGui QPixelFormat QtGui QPixmap QtGui QPixmapCache QtGui QPolygon QtGui QPolygonF QtGui QQuaternion QtGui QRadialGradient QtGui QRasterWindow QtGui QRawFont QtGui QRegExpValidator QtGui QRegion QtGui QRegularExpressionValidator QtGui QResizeEvent QtGui QScreen QtGui QScrollEvent QtGui QScrollPrepareEvent QtGui QSessionManager QtGui QShortcutEvent QtGui QShowEvent QtGui QStandardItem QtGui QStandardItemModel QtGui QStaticText QtGui QStatusTipEvent QtGui QStyleHints QtGui QSurface QtGui QSurfaceFormat QtGui QSyntaxHighlighter QtGui QTabletEvent QtGui QTextBlock QtGui QTextBlockFormat QtGui QTextBlockGroup QtGui QTextBlockUserData QtGui QTextCharFormat QtGui QTextCursor QtGui QTextDocument QtGui QTextDocumentFragment QtGui QTextDocumentWriter QtGui QTextFormat QtGui QTextFragment QtGui QTextFrame QtGui QTextFrameFormat QtGui QTextImageFormat QtGui QTextInlineObject QtGui QTextItem QtGui QTextLayout QtGui QTextLength QtGui QTextLine QtGui QTextList QtGui QTextListFormat QtGui QTextObject QtGui QTextObjectInterface QtGui QTextOption QtGui QTextTable QtGui QTextTableCell QtGui QTextTableCellFormat QtGui QTextTableFormat QtGui QTouchDevice QtGui QTouchEvent QtGui QTransform QtGui QValidator QtGui QVector2D QtGui QVector3D QtGui QVector4D QtGui QWhatsThisClickedEvent QtGui QWheelEvent QtGui QWindow QtGui QWindowStateChangeEvent QtHelp QHelpContentItem QtHelp QHelpContentModel QtHelp QHelpContentWidget QtHelp QHelpEngine QtHelp QHelpEngineCore QtHelp QHelpIndexModel QtHelp QHelpIndexWidget QtHelp QHelpSearchEngine QtHelp QHelpSearchQuery QtHelp QHelpSearchQueryWidget QtHelp QHelpSearchResultWidget QtLocation QGeoCodeReply QtLocation QGeoCodingManager QtLocation QGeoCodingManagerEngine QtLocation QGeoManeuver QtLocation QGeoRoute QtLocation QGeoRouteReply QtLocation QGeoRouteRequest QtLocation QGeoRouteSegment QtLocation QGeoRoutingManager QtLocation QGeoRoutingManagerEngine QtLocation QGeoServiceProvider QtLocation QLocation QtLocation QPlace QtLocation QPlaceAttribute QtLocation QPlaceCategory QtLocation QPlaceContactDetail QtLocation QPlaceContent QtLocation QPlaceContentReply QtLocation QPlaceContentRequest QtLocation QPlaceDetailsReply QtLocation QPlaceEditorial QtLocation QPlaceIcon QtLocation QPlaceIdReply QtLocation QPlaceImage QtLocation QPlaceManager QtLocation QPlaceManagerEngine QtLocation QPlaceMatchReply QtLocation QPlaceMatchRequest QtLocation QPlaceProposedSearchResult QtLocation QPlaceRatings QtLocation QPlaceReply QtLocation QPlaceResult QtLocation QPlaceReview QtLocation QPlaceSearchReply QtLocation QPlaceSearchRequest QtLocation QPlaceSearchResult QtLocation QPlaceSearchSuggestionReply QtLocation QPlaceSupplier QtLocation QPlaceUser QtMacExtras QMacPasteboardMime QtMacExtras QMacToolBar QtMacExtras QMacToolBarItem #QtMultimedia QAbstractPlanarVideoBuffer QtMultimedia QAbstractVideoBuffer QtMultimedia QAbstractVideoSurface QtMultimedia QAudio QtMultimedia QAudioBuffer QtMultimedia QAudioDecoder QtMultimedia QAudioDeviceInfo QtMultimedia QAudioEncoderSettings QtMultimedia QAudioFormat QtMultimedia QAudioInput QtMultimedia QAudioOutput QtMultimedia QAudioProbe QtMultimedia QAudioRecorder QtMultimedia QCamera QtMultimedia QCameraExposure QtMultimedia QCameraFocus QtMultimedia QCameraFocusZone QtMultimedia QCameraInfo QtMultimedia QCameraImageCapture QtMultimedia QCameraImageProcessing QtMultimedia QImageEncoderSettings QtMultimedia QMediaBindableInterface QtMultimedia QMediaContent QtMultimedia QMediaControl QtMultimedia QMediaMetaData QtMultimedia QMediaObject QtMultimedia QMediaPlayer QtMultimedia QMediaPlaylist QtMultimedia QMediaRecorder QtMultimedia QMediaResource QtMultimedia QMediaService QtMultimedia QMediaTimeInterval QtMultimedia QMediaTimeRange QtMultimedia QMultimedia QtMultimedia QRadioData QtMultimedia QRadioTuner QtMultimedia QSound QtMultimedia QSoundEffect QtMultimedia QVideoEncoderSettings QtMultimedia QVideoFrame QtMultimedia QVideoProbe QtMultimedia QVideoSurfaceFormat QtMultimediaWidgets QCameraViewFinder QtMultimediaWidgets QGraphicsVideoItem QtMultimediaWidgets QVideoWidget QtNetwork QAbstractNetworkCache QtNetwork QAbstractSocket QtNetwork QAuthenticator QtNetwork QDnsDomainNameRecord QtNetwork QDnsHostAddressRecord QtNetwork QDnsLookup QtNetwork QDnsMailExchangeRecord QtNetwork QDnsServiceRecord QtNetwork QDnsTextRecord QtNetwork QHostAddress QtNetwork QHostInfo QtNetwork QHttpMultiPart QtNetwork QHttpPart QtNetwork QLocalServer QtNetwork QLocalSocket QtNetwork QNetworkAccessManager QtNetwork QNetworkAddressEntry QtNetwork QNetworkCacheMetaData QtNetwork QNetworkConfiguration QtNetwork QNetworkConfigurationManager QtNetwork QNetworkCookie QtNetwork QNetworkCookieJar QtNetwork QNetworkDiskCache QtNetwork QNetworkInterface QtNetwork QNetworkProxy QtNetwork QNetworkProxyFactory QtNetwork QNetworkProxyQuery QtNetwork QNetworkReply QtNetwork QNetworkRequest QtNetwork QNetworkSession QtNetwork QSsl QtNetwork QSslCertificate QtNetwork QSslCertificateExtension QtNetwork QSslCipher QtNetwork QSslConfiguration QtNetwork QSslError QtNetwork QSslKey QtNetwork QSslSocket QtNetwork QTcpServer QtNetwork QTcpSocket QtNetwork QUdpSocket QtNfc QNdefFilter QtNfc QNdefMessage QtNfc QNdefNfcIconRecord QtNfc QNdefNfcSmartPosterRecord QtNfc QNdefNfcTextRecord QtNfc QNdefNfcUriRecord QtNfc QNdefRecord QtNfc QNearFieldManager QtNfc QNearFieldShareManager QtNfc QNearFieldShareTarget QtNfc QNearFieldTarget QtNfc QQmlNdefRecord QtOpenGL QGL QtOpenGL QGLContext QtOpenGL QGLFormat QtOpenGL QGLWidget QtPositioning QGeoAddress QtPositioning QGeoAreaMonitorInfo QtPositioning QGeoAreaMonitorSource QtPositioning QGeoCircle QtPositioning QGeoCoordinate QtPositioning QGeoLocation QtPositioning QGeoPositionInfo QtPositioning QGeoPositionInfoSource QtPositioning QGeoRectangle QtPositioning QGeoSatelliteInfo QtPositioning QGeoSatelliteInfoSource QtPositioning QGeoShape QtPositioning QNmeaPositionInfoSource QtPrintSupport QAbstractPrintDialog QtPrintSupport QPageSetupDialog QtPrintSupport QPrintDialog QtPrintSupport QPrintEngine QtPrintSupport QPrintPreviewDialog QtPrintSupport QPrintPreviewWidget QtPrintSupport QPrinter QtPrintSupport QPrinterInfo QtQml QJSEngine QtQml QJSValue QtQml QJSValueIterator QtQml QQmlAbstractUrlInterceptor QtQml QQmlApplicationEngine QtQml QQmlComponent QtQml QQmlContext QtQml QQmlEngine QtQml QQmlError QtQml QQmlExpression QtQml QQmlExtensionPlugin QtQml QQmlFileSelector QtQml QQmlIncubator QtQml QQmlIncubatorControl QtQml QQmlImageProviderBase QtQml QQmlListProperty QtQml QQmlListReference QtQml QQmlNetworkAccessManagerFactory QtQml QQmlParserStatus QtQml QQmlProperty QtQml QQmlPropertyMap QtQml QQmlPropertyValueSource QtQml QQmlScriptString QtQuick QQuickFramebufferObject QtQuick QQuickImageProvider QtQuick QQuickItem QtQuick QQuickItemGrabResult QtQuick QQuickPaintedItem QtQuick QQuickRenderControl QtQuick QQuickTextDocument QtQuick QQuickTextureFactory QtQuick QQuickView QtQuick QQuickWindow QtQuick QSGAbstractRenderer QtQuick QSGBasicGeometryNode QtQuick QSGClipNode QtQuick QSGDynamicTexture QtQuick QSGEngine QtQuick QSGFlatColorMaterial QtQuick QSGGeometry QtQuick QSGGeometryNode QtQuick QSGMaterial QtQuick QSGMaterialShader QtQuick QSGMaterialType QtQuick QSGNode QtQuick QSGOpacityNode QtQuick QSGOpaqueTextureMaterial QtQuick QSGSimpleRectNode QtQuick QSGSimpleTextureNode QtQuick QSGTexture QtQuick QSGTextureMaterial QtQuick QSGTextureProvider QtQuick QSGTransformNode QtQuick QSGVertexColorMaterial QtQuickWidgets QQuickWidget QtSensors QAccelerometer QtSensors QAccelerometerFilter QtSensors QAccelerometerReading QtSensors QAltimeter QtSensors QAltimeterFilter QtSensors QAltimeterReading QtSensors QAmbientLightFilter QtSensors QAmbientLightReading QtSensors QAmbientLightSensor QtSensors QAmbientTemperatureFilter QtSensors QAmbientTemperatureReading QtSensors QAmbientTemperatureSensor QtSensors QCompass QtSensors QCompassFilter QtSensors QCompassReading QtSensors QDistanceFilter QtSensors QDistanceReading QtSensors QDistanceSensor QtSensors QGyroscope QtSensors QGyroscopeFilter QtSensors QGyroscopeReading QtSensors QHolsterFilter QtSensors QHolsterReading QtSensors QHolsterSensor QtSensors QIRProximityFilter QtSensors QIRProximityReading QtSensors QIRProximitySensor QtSensors QLightFilter QtSensors QLightReading QtSensors QLightSensor QtSensors QMagnetometer QtSensors QMagnetometerFilter QtSensors QMagnetometerReading QtSensors QOrientationFilter QtSensors QOrientationReading QtSensors QOrientationSensor QtSensors QPressureFilter QtSensors QPressureReading QtSensors QPressureSensor QtSensors QProximityFilter QtSensors QProximityReading QtSensors QProximitySensor QtSensors QSensor QtSensors QSensorFilter QtSensors QSensorReading QtSensors QTapFilter QtSensors QTapReading QtSensors QTapSensor QtSensors QTiltFilter QtSensors QTiltReading QtSensors QTiltSensor QtSensors QRotationFilter QtSensors QRotationReading QtSensors QRotationSensor QtSerialPort QSerialPort QtSerialPort QSerialPortInfo QtSql QSql QtSql QSqlDatabase QtSql QSqlDriver QtSql QSqlDriverCreatorBase QtSql QSqlError QtSql QSqlField QtSql QSqlIndex QtSql QSqlQuery QtSql QSqlQueryModel QtSql QSqlRecord QtSql QSqlRelation QtSql QSqlRelationalDelegate QtSql QSqlRelationalTableModel QtSql QSqlResult QtSql QSqlTableModel QtSvg QGraphicsSvgItem QtSvg QSvgGenerator QtSvg QSvgRenderer QtSvg QSvgWidget QtTest QSignalSpy QtTest QTest QtWebChannel QWebChannel QtWebChannel QWebChannelAbstractTransport QtWebEngineWidgets QWebEngineCertificateError QtWebEngineWidgets QWebEngineDownloadItem QtWebEngineWidgets QWebEngineHistory QtWebEngineWidgets QWebEngineHistoryItem QtWebEngineWidgets QWebEnginePage QtWebEngineWidgets QWebEngineProfile QtWebEngineWidgets QWebEngineScript QtWebEngineWidgets QWebEngineScriptCollection QtWebEngineWidgets QWebEngineSettings QtWebEngineWidgets QWebEngineView QtWebKit QWebDatabase QtWebKit QWebElement QtWebKit QWebElementCollection QtWebKit QWebHistory QtWebKit QWebHistoryInterface QtWebKit QWebHistoryItem QtWebKit QWebPluginFactory QtWebKit QWebSecurityOrigin QtWebKit QWebSettings QtWebKitWidgets QGraphicsWebView QtWebKitWidgets QWebFrame QtWebKitWidgets QWebHitTestResult QtWebKitWidgets QWebInspector QtWebKitWidgets QWebPage QtWebKitWidgets QWebView QtWebSockets QMaskGenerator QtWebSockets QWebSocket QtWebSockets QWebSocketCorsAuthenticator QtWebSockets QWebSocketProtocol QtWebSockets QWebSocketServer QtWidgets QAbstractButton QtWidgets QAbstractGraphicsShapeItem QtWidgets QAbstractItemDelegate QtWidgets QAbstractItemView QtWidgets QAbstractScrollArea QtWidgets QAbstractSlider QtWidgets QAbstractSpinBox QtWidgets QAction QtWidgets QActionGroup QtWidgets QApplication QtWidgets QBoxLayout QtWidgets QButtonGroup QtWidgets QCalendarWidget QtWidgets QCheckBox QtWidgets QColorDialog QtWidgets QColumnView QtWidgets QComboBox QtWidgets QCommandLinkButton QtWidgets QCommonStyle QtWidgets QCompleter QtWidgets QDataWidgetMapper QtWidgets QDateEdit QtWidgets QDateTimeEdit QtWidgets QDesktopWidget QtWidgets QDial QtWidgets QDialog QtWidgets QDialogButtonBox QtWidgets QDirModel QtWidgets QDockWidget QtWidgets QDoubleSpinBox QtWidgets QErrorMessage QtWidgets QFileDialog QtWidgets QFileIconProvider QtWidgets QFileSystemModel QtWidgets QFocusFrame QtWidgets QFontComboBox QtWidgets QFontDialog QtWidgets QFormLayout QtWidgets QFrame QtWidgets QGesture QtWidgets QGestureEvent QtWidgets QGestureRecognizer QtWidgets QGraphicsAnchor QtWidgets QGraphicsAnchorLayout QtWidgets QGraphicsBlurEffect QtWidgets QGraphicsColorizeEffect QtWidgets QGraphicsDropShadowEffect QtWidgets QGraphicsEffect QtWidgets QGraphicsEllipseItem QtWidgets QGraphicsGridLayout QtWidgets QGraphicsItem QtWidgets QGraphicsItemGroup QtWidgets QGraphicsLayout QtWidgets QGraphicsLayoutItem QtWidgets QGraphicsLineItem QtWidgets QGraphicsLinearLayout QtWidgets QGraphicsObject QtWidgets QGraphicsOpacityEffect QtWidgets QGraphicsPathItem QtWidgets QGraphicsPixmapItem QtWidgets QGraphicsPolygonItem QtWidgets QGraphicsProxyWidget QtWidgets QGraphicsRectItem QtWidgets QGraphicsRotation QtWidgets QGraphicsScale QtWidgets QGraphicsScene QtWidgets QGraphicsSceneContextMenuEvent QtWidgets QGraphicsSceneDragDropEvent QtWidgets QGraphicsSceneEvent QtWidgets QGraphicsSceneHelpEvent QtWidgets QGraphicsSceneHoverEvent QtWidgets QGraphicsSceneMouseEvent QtWidgets QGraphicsSceneMoveEvent QtWidgets QGraphicsSceneResizeEvent QtWidgets QGraphicsSceneWheelEvent QtWidgets QGraphicsSimpleTextItem QtWidgets QGraphicsTextItem QtWidgets QGraphicsTransform QtWidgets QGraphicsView QtWidgets QGraphicsWidget QtWidgets QGridLayout QtWidgets QGroupBox QtWidgets QHBoxLayout QtWidgets QHeaderView QtWidgets QInputDialog QtWidgets QItemDelegate QtWidgets QItemEditorCreatorBase QtWidgets QItemEditorFactory QtWidgets QKeyEventTransition QtWidgets QKeySequenceEdit QtWidgets QLCDNumber QtWidgets QLabel QtWidgets QLayout QtWidgets QLayoutItem QtWidgets QLineEdit QtWidgets QListView QtWidgets QListWidget QtWidgets QListWidgetItem QtWidgets QMacCocoaViewContainer QtWidgets QMainWindow QtWidgets QMdiArea QtWidgets QMdiSubWindow QtWidgets QMenu QtWidgets QMenuBar QtWidgets QMessageBox QtWidgets QMouseEventTransition QtWidgets QOpenGLWidget QtWidgets QPanGesture QtWidgets QPinchGesture QtWidgets QPlainTextDocumentLayout QtWidgets QPlainTextEdit QtWidgets QProgressBar QtWidgets QProgressDialog QtWidgets QProxyStyle QtWidgets QPushButton QtWidgets QRadioButton QtWidgets QRubberBand QtWidgets QScrollArea QtWidgets QScrollBar QtWidgets QScroller QtWidgets QScrollerProperties QtWidgets QShortcut QtWidgets QSizeGrip QtWidgets QSizePolicy QtWidgets QSlider QtWidgets QSpacerItem QtWidgets QSpinBox QtWidgets QSplashScreen QtWidgets QSplitter QtWidgets QSplitterHandle QtWidgets QStackedLayout QtWidgets QStackedWidget QtWidgets QStatusBar QtWidgets QStyle QtWidgets QStyleFactory QtWidgets QStyleHintReturn QtWidgets QStyleHintReturnMask QtWidgets QStyleHintReturnVariant QtWidgets QStyleOption QtWidgets QStyleOptionButton QtWidgets QStyleOptionComboBox QtWidgets QStyleOptionComplex QtWidgets QStyleOptionDockWidget QtWidgets QStyleOptionFocusRect QtWidgets QStyleOptionFrame QtWidgets QStyleOptionGraphicsItem QtWidgets QStyleOptionGroupBox QtWidgets QStyleOptionHeader QtWidgets QStyleOptionMenuItem QtWidgets QStyleOptionProgressBar QtWidgets QStyleOptionRubberBand QtWidgets QStyleOptionSizeGrip QtWidgets QStyleOptionSlider QtWidgets QStyleOptionSpinBox QtWidgets QStyleOptionTab QtWidgets QStyleOptionTabBarBase QtWidgets QStyleOptionTabWidgetFrame QtWidgets QStyleOptionTitleBar QtWidgets QStyleOptionToolBar QtWidgets QStyleOptionToolBox QtWidgets QStyleOptionToolButton QtWidgets QStyleOptionViewItem QtWidgets QStylePainter QtWidgets QStyledItemDelegate QtWidgets QSwipeGesture QtWidgets QSystemTrayIcon QtWidgets QTabBar QtWidgets QTabWidget QtWidgets QTableView QtWidgets QTableWidget QtWidgets QTableWidgetItem QtWidgets QTableWidgetSelectionRange QtWidgets QTapAndHoldGesture QtWidgets QTapGesture QtWidgets QTextBrowser QtWidgets QTextEdit QtWidgets QTimeEdit QtWidgets QToolBar QtWidgets QToolBox QtWidgets QToolButton QtWidgets QToolTip QtWidgets QTreeView QtWidgets QTreeWidget QtWidgets QTreeWidgetItem QtWidgets QTreeWidgetItemIterator QtWidgets QUndoCommand QtWidgets QUndoGroup QtWidgets QUndoStack QtWidgets QUndoView QtWidgets QVBoxLayout QtWidgets QWhatsThis QtWidgets QWidget QtWidgets QWidgetAction QtWidgets QWidgetItem QtWidgets QWizard QtWidgets QWizardPage QtWinExtras QtWin QtWinExtras QWinJumpList QtWinExtras QWinJumpListCategory QtWinExtras QWinJumpListItem QtWinExtras QWinTaskbarButton QtWinExtras QWinTaskbarProgress QtWinExtras QWinThumbnailToolBar QtWinExtras QWinThumbnailToolButton QtX11Extras QX11Info QtXml QDomAttr QtXml QDomCDATASection QtXml QDomCharacterData QtXml QDomComment QtXml QDomDocument QtXml QDomDocumentFragment QtXml QDomDocumentType QtXml QDomElement QtXml QDomEntity QtXml QDomEntityReference QtXml QDomImplementation QtXml QDomNamedNodeMap QtXml QDomNode QtXml QDomNodeList QtXml QDomNotation QtXml QDomProcessingInstruction QtXml QDomText QtXml QXmlAttributes QtXml QXmlContentHandler QtXml QXmlDeclHandler QtXml QXmlDefaultHandler QtXml QXmlDTDHandler QtXml QXmlEntityResolver QtXml QXmlErrorHandler QtXml QXmlInputSource QtXml QXmlLexicalHandler QtXml QXmlLocator QtXml QXmlNamespaceSupport QtXml QXmlParseException QtXml QXmlReader QtXml QXmlSimpleReader QtXmlPatterns QAbstractMessageHandler QtXmlPatterns QAbstractUriResolver QtXmlPatterns QAbstractXmlNodeModel QtXmlPatterns QAbstractXmlReceiver QtXmlPatterns QSimpleXmlNodeModel QtXmlPatterns QSourceLocation QtXmlPatterns QXmlFormatter QtXmlPatterns QXmlItem QtXmlPatterns QXmlName QtXmlPatterns QXmlNamePool QtXmlPatterns QXmlNodeModelIndex QtXmlPatterns QXmlQuery QtXmlPatterns QXmlResultItems QtXmlPatterns QXmlSchema QtXmlPatterns QXmlSchemaValidator QtXmlPatterns QXmlSerializer PyQt-gpl-5.5.1/doc/sphinx/class_reference.rst0000644000076500000240000000051712552164565021227 0ustar philstaff00000000000000PyQt5 Class Reference ===================== This section contains the reference documentation for the classes and functions implemented by :mod:`PyQt5`. At the moment most of this consists of links to the corresponding C++ documentation. Future versions will include more Pythonic documentation. .. toctree:: :glob: api/* PyQt-gpl-5.5.1/doc/sphinx/conf.py0000644000076500000240000001443512613140041016632 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # # PyQt documentation build configuration file, created by # sphinx-quickstart on Sat May 30 14:28:55 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. #extensions = [] # Add any paths that contain templates here, relative to this directory. templates_path = ['templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'PyQt' copyright = u'2015 Riverbank Computing Limited' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '5.5.1' # The full version, including alpha/beta/rc tags. release = '5.5.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. #exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. modindex_common_prefix = ['PyQt5.'] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'classic' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". html_title = "PyQt 5.5.1 Reference Guide" # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. html_logo = 'static/logo.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. html_favicon = 'static/logo_tn.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = False # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'PyQtdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'PyQt.tex', u'PyQt Documentation', u'Riverbank Computing Limited', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True def setup(app): """ Define roles specific to PyQt. """ pass PyQt-gpl-5.5.1/doc/sphinx/dbus.rst0000644000076500000240000000610212552164565017035 0ustar philstaff00000000000000.. _ref-dbus: DBus Support ============ PyQt5 provides two different modules that implement support for DBus. The :mod:`~PyQt5.QtDBus` module provides wrappers for the standard Qt DBus classes. The :mod:`dbus.mainloop.pyqt5` module add support for the Qt event loop to the standard ``dbus-python`` Python module. :mod:`~PyQt5.QtDBus` -------------------- The :mod:`~PyQt5.QtDBus` module is used in a similar way to the C++ library it wraps. The main difference is in the way it supports the demarshalling of DBus structures. C++ relies on the template-based registration of types using ``qDBusRegisterMetaType()`` which isn't possible from Python. Instead a slot that accepts a DBus structure in an argument should specify a slot with a single :class:`~PyQt5.QtDBus.QDBusMessage` argument. The implementation of the slot should then extract the arguments from the message using its :meth:`~PyQt5.QtDBus.QDBusMessage.arguments` method. For example, say we have a DBus method called ``setColors()`` that has a single argument that is an array of structures of three integers (red, green and blue). The DBus signature of the argument would then be ``a(iii)``. In C++ you would typically define a class to hold the red, green and blue values and so your code would include the following (incomplete) fragments:: struct Color { int red; int green; int blue; }; Q_DECLARE_METATYPE(Color) qDBusRegisterMetaType(); class ServerAdaptor : public QDBusAbstractAdaptor { Q_OBJECT public slots: void setColors(QList colors); }; The Python version is, of course, much simpler:: class ServerAdaptor(QDBusAbstractAdaptor): @pyqtSlot(QDBusMessage) def setColors(self, message): # Get the single argument. colors = message.arguments()[0] # The argument will be a list of 3-tuples of ints. for red, green, blue in colors: print("RGB:", red, green, blue) Note that this technique can be used for arguments of any type, it is only require if DBus structures are involved. :mod:`dbus.mainloop.pyqt5` -------------------------- The :mod:`dbus.mainloop.pyqt5` module provides support for the Qt event loop to ``dbus-python``. The module's API is almost identical to that of the :mod:`dbus.mainloop.glib` modules that provides support for the GLib event loop. The :mod:`dbus.mainloop.pyqt5` module contains the following function. .. function:: DBusQtMainLoop(set_as_default=False) Create a ``dbus.mainloop.NativeMainLoop`` object that uses the the Qt event loop. :param set_as_default: is optionally set to make the main loop instance the default for all new Connection and Bus instances. It may only be specified as a keyword argument, and not as a positional argument. The following code fragment is all that is normally needed to set up the standard ``dbus-python`` language bindings package to be used with PyQt5:: from dbus.mainloop.pyqt5 import DBusQtMainLoop DBusQtMainLoop(set_as_default=True) PyQt-gpl-5.5.1/doc/sphinx/deploy_commercial.rst0000644000076500000240000000200612552164565021566 0ustar philstaff00000000000000Deploying Commercial PyQt5 Applications ======================================= Deploying commercial PyQt5 applications can be a complicated process for a number of reasons: - It is usually better not to rely on pre-requisite packages being already installed on the user's system. This means that as well as your application code, you also need to include the Python interpreter, the standard library, third-pary packages and extension modules, and Qt itself. - Some target platforms (iOS for example) have restrictions on how an application is built in order for it to be included in app stores. - It is necessary to discourage users from accessing the underlying PyQt5 modules for themselves. A user that used the modules shipped with your application to develop new applications would themselves be considered a developer and would need their own commercial PyQt5 license. The recommended solution to all of these issues is to use `pyqtdeploy `__. PyQt-gpl-5.5.1/doc/sphinx/deprecations.rst0000644000076500000240000000105212567127140020551 0ustar philstaff00000000000000Deprecated Features and Behaviours ================================== The are currently no deprecated features or behaviours. .. These features and behaviours currenly issue deprecation warnings and will be .. removed in PyQt v5.X. To ensure that the warnings are written to ``stderr`` .. pass the ``-Wa`` command line option to the Python interpreter. To run your .. application as it would with PyQt v5.X pass the ``-We`` command line option .. instead. .. Deprecated Feature Title .. ------------------------ .. Deprecated feature description. PyQt-gpl-5.5.1/doc/sphinx/designer.rst0000644000076500000240000003712212552164565017706 0ustar philstaff00000000000000Using Qt Designer ================= Qt Designer is the Qt tool for designing and building graphical user interfaces. It allows you to design widgets, dialogs or complete main windows using on-screen forms and a simple drag-and-drop interface. It has the ability to preview your designs to ensure they work as you intended, and to allow you to prototype them with your users, before you have to write any code. Qt Designer uses XML ``.ui`` files to store designs and does not generate any code itself. Qt includes the ``uic`` utility that generates the C++ code that creates the user interface. Qt also includes the ``QUiLoader`` class that allows an application to load a ``.ui`` file and to create the corresponding user interface dynamically. PyQt5 does not wrap the ``QUiLoader`` class but instead includes the :mod:`~PyQt5.uic` Python module. Like ``QUiLoader`` this module can load ``.ui`` files to create a user interface dynamically. Like the :program:`uic` utility it can also generate the Python code that will create the user interface. PyQt5's :program:`pyuic5` utility is a command line interface to the :mod:`~PyQt5.uic` module. Both are described in detail in the following sections. Using the Generated Code ------------------------ The code that is generated has an identical structure to that generated by Qt's ``uic`` and can be used in the same way. The code is structured as a single class that is derived from the Python ``object`` type. The name of the class is the name of the toplevel object set in Designer with ``Ui_`` prepended. (In the C++ version the class is defined in the ``Ui`` namespace.) We refer to this class as the *form class*. The class contains a method called ``setupUi()``. This takes a single argument which is the widget in which the user interface is created. The type of this argument (typically :class:`~PyQt5.QtWidgets.QDialog`, :class:`~PyQt5.QtWidgets.QWidget` or :class:`~PyQt5.QtWidgets.QMainWindow`) is set in Designer. We refer to this type as the *Qt base class*. In the following examples we assume that a ``.ui`` file has been created containing a dialog and the name of the :class:`~PyQt5.QtWidgets.QDialog` object is ``ImageDialog``. We also assume that the name of the file containing the generated Python code is :file:`ui_imagedialog.py`. The generated code can then be used in a number of ways. The first example shows the direct approach where we simply create a simple application to create the dialog:: import sys from PyQt5.QtWidgets import QApplication, QDialog from ui_imagedialog import Ui_ImageDialog app = QApplication(sys.argv) window = QDialog() ui = Ui_ImageDialog() ui.setupUi(window) window.show() sys.exit(app.exec_()) The second example shows the single inheritance approach where we sub-class :class:`~PyQt5.QtWidgets.QDialog` and set up the user interface in the ``__init__()`` method:: from PyQt5.QtWidgets import QDialog from ui_imagedialog import Ui_ImageDialog class ImageDialog(QDialog): def __init__(self): super(ImageDialog, self).__init__() # Set up the user interface from Designer. self.ui = Ui_ImageDialog() self.ui.setupUi(self) # Make some local modifications. self.ui.colorDepthCombo.addItem("2 colors (1 bit per pixel)") # Connect up the buttons. self.ui.okButton.clicked.connect(self.accept) self.ui.cancelButton.clicked.connect(self.reject) The third example shows the multiple inheritance approach:: from PyQt5.QtGui import QDialog from ui_imagedialog import Ui_ImageDialog class ImageDialog(QDialog, Ui_ImageDialog): def __init__(self): super(ImageDialog, self).__init__() # Set up the user interface from Designer. self.setupUi(self) # Make some local modifications. self.colorDepthCombo.addItem("2 colors (1 bit per pixel)") # Connect up the buttons. self.okButton.clicked.connect(self.accept) self.cancelButton.clicked.connect(self.reject) It is also possible to use the same approach used in PyQt v3. This is shown in the final example:: from ui_imagedialog import ImageDialog class MyImageDialog(ImageDialog): def __init__(self): super(MyImageDialog, self).__init__() # Make some local modifications. self.colorDepthCombo.addItem("2 colors (1 bit per pixel)") # Connect up the buttons. self.okButton.clicked.connect(self.accept) self.cancelButton.clicked.connect(self.reject) For a full description see the Qt Designer Manual in the Qt Documentation. The :mod:`~PyQt5.uic` Module ---------------------------- The :mod:`~PyQt5.uic` module contains the following functions and objects. .. currentmodule:: PyQt5.uic .. data:: widgetPluginPath The list of the directories that are searched for widget plugins. Initially it contains the name of the directory that contains the widget plugins included with PyQt5. .. function:: compileUi(uifile, pyfile[, execute=False[, indent=4[, from_imports=False[, resource_suffix='_rc']]]]) Generate a Python module that will create a user interface from a Qt Designer ``.ui`` file. :param uifile: the file name or file-like object containing the ``.ui`` file. :param pyfile: the file-like object to which the generated Python code will be written to. :param execute: is optionally set if a small amount of additional code is to be generated that will display the user interface if the code is run as a standalone application. :param indent: the optional number of spaces used for indentation in the generated code. If it is zero then a tab character is used instead. :param from_imports: is optionally set to generate import statements that are relative to ``'.'``. At the moment this only applies to the import of resource modules. :resource_suffix: is the suffix appended to the basename of any resource file specified in the ``.ui`` file to create the name of the Python module generated from the resource file by ``pyrcc5``. The default is ``'_rc'``, i.e. if the ``.ui`` file specified a resource file called ``foo.qrc`` then the corresponding Python module is ``foo_rc``. .. function:: compileUiDir(dir[, recurse=False[, map=None[, \*\*compileUi_args]]]) Create Python modules from Qt Designer ``.ui`` files in a directory or directory tree. :param dir: the name of the directory to scan for files whose name ends with ``.ui``. By default the generated Python module is created in the same directory ending with ``.py``. :param recurse: is optionally set if any sub-directories should be scanned. :param map: an optional callable that is passed the name of the directory containing the ``.ui`` file and the name of the Python module that will be created. The callable should return a tuple of the name of the directory in which the Python module will be created and the (possibly modified) name of the module. :param compileUi_args: are any additional keyword arguments that are passed to :func:`~PyQt5.uic.compileUi` that is called to create each Python module. .. function:: loadUiType(uifile[, from_imports=False[, resource_suffix='_rc']]) Load a Qt Designer ``.ui`` file and return a tuple of the generated *form class* and the *Qt base class*. These can then be used to create any number of instances of the user interface without having to parse the ``.ui`` file more than once. :param uifile: the file name or file-like object containing the ``.ui`` file. :param from_imports: is optionally set to use import statements that are relative to ``'.'``. At the moment this only applies to the import of resource modules. :resource_suffix: is the suffix appended to the basename of any resource file specified in the ``.ui`` file to create the name of the Python module generated from the resource file by ``pyrcc5``. The default is ``'_rc'``, i.e. if the ``.ui`` file specified a resource file called ``foo.qrc`` then the corresponding Python module is ``foo_rc``. :rtype: the *form class* and the *Qt base class*. .. function:: loadUi(uifile[, baseinstance=None[, package=''[, resource_suffix='_rc']]]) Load a Qt Designer ``.ui`` file and returns an instance of the user interface. :param uifile: the file name or file-like object containing the ``.ui`` file. :param baseinstance: the optional instance of the *Qt base class*. If specified then the user interface is created in it. Otherwise a new instance of the base class is automatically created. :param package: the optional package that is the base package for any relative imports of custom widgets. :resource_suffix: is the suffix appended to the basename of any resource file specified in the ``.ui`` file to create the name of the Python module generated from the resource file by ``pyrcc5``. The default is ``'_rc'``, i.e. if the ``.ui`` file specified a resource file called ``foo.qrc`` then the corresponding Python module is ``foo_rc``. :rtype: the ``QWidget`` sub-class that implements the user interface. :program:`pyuic5` ----------------- The :program:`pyuic5` utility is a command line interface to the :mod:`~PyQt5.uic` module. The command has the following syntax:: pyuic5 [options] .ui-file The full set of command line options is: .. program:: pyuic5 .. cmdoption:: -h, --help A help message is written to ``stdout``. .. cmdoption:: --version The version number is written to ``stdout``. .. cmdoption:: -i , --indent The Python code is generated using an indentation of ```` spaces. If ```` is 0 then a tab is used. The default is 4. .. cmdoption:: -o , --output The Python code generated is written to the file ````. .. cmdoption:: -p, --preview The GUI is created dynamically and displayed. No Python code is generated. .. cmdoption:: -x, --execute The generated Python code includes a small amount of additional code that creates and displays the GUI when it is executes as a standalone application. .. cmdoption:: --from-imports Resource modules are imported using ``from . import`` rather than a simple ``import``. .. cmdoption:: --resource-suffix The suffix ```` is appended to the basename of any resource file specified in the ``.ui`` file to create the name of the Python module generated from the resource file by :program:`pyrcc5`. The default is ``_rc``. For example if the ``.ui`` file specified a resource file called ``foo.qrc`` then the corresponding Python module is ``foo_rc``. Note that code generated by :program:`pyuic5` is not guaranteed to be compatible with earlier versions of PyQt5. However, it is guaranteed to be compatible with later versions. If you have no control over the version of PyQt5 the users of your application are using then you should run :program:`pyuic5`, or call :func:`~PyQt5.uic.compileUi()`, as part of your installation process. Another alternative would be to distribute the ``.ui`` files (perhaps as part of a resource file) and have your application load them dynamically. .. _ref-designer-plugins: Writing Qt Designer Plugins --------------------------- Qt Designer can be extended by writing plugins. Normally this is done using C++ but PyQt5 also allows you to write plugins in Python. Most of the time a plugin is used to expose a custom widget to Designer so that it appears in Designer's widget box just like any other widget. It is possibe to change the widget's properties and to connect its signals and slots. It is also possible to add new functionality to Designer. See the Qt documentation for the full details. Here we will concentrate on describing how to write custom widgets in Python. The process of integrating Python custom widgets with Designer is very similar to that used with widget written using C++. However, there are particular issues that have to be addressed. - Designer needs to have a C++ plugin that conforms to the interface defined by the ``QDesignerCustomWidgetInterface`` class. (If the plugin exposes more than one custom widget then it must conform to the interface defined by the ``QDesignerCustomWidgetCollectionInterface`` class.) In addition the plugin class must sub-class :class:`~PyQt5.QtCore.QObject` as well as the interface class. PyQt5 does not allow Python classes to be sub-classed from more than one Qt class. - Designer can only connect Qt signals and slots. It has no understanding of Python signals or callables. - Designer can only edit Qt properties that represent C++ types. It has no understanding of Python attributes or Python types. PyQt5 provides the following components and features to resolve these issues as simply as possible. - PyQt5's QtDesigner module includes additional classes (all of which have a ``QPy`` prefix) that are already sub-classed from the necessary Qt classes. This avoids the need to sub-class from more than one Qt class in Python. For example, where a C++ custom widget plugin would sub-class from :class:`~PyQt5.QtCore.QObject` and ``QDesignerCustomWidgetInterface``, a Python custom widget plugin would instead sub-class from :class:`~PyQt5.QtDesigner.QPyDesignerCustomWidgetPlugin`. - PyQt5 installs a C++ plugin in Designer's plugin directory. It conforms to the interface defined by the ``QDesignerCustomWidgetCollectionInterface`` class. It searches a configurable set of directories looking for Python plugins that implement a class sub-classed from :class:`~PyQt5.QtDesigner.QPyDesignerCustomWidgetPlugin`. Each class that is found is instantiated and the instance created is added to the custom widget collection. The :envvar:`PYQTDESIGNERPATH` environment variable specifies the set of directories to search for plugins. Directory names are separated by a path separator (a semi-colon on Windows and a colon on other platforms). If a directory name is empty (ie. there are consecutive path separators or a leading or trailing path separator) then a set of default directories is automatically inserted at that point. The default directories are the :file:`python` subdirectory of each directory that Designer searches for its own plugins. If the environment variable is not set then only the default directories are searched. If a file's basename does not end with ``plugin`` then it is ignored. - A Python custom widget may define new Qt signals using :func:`~PyQt5.QtCore.pyqtSignal`. - A Python method may be defined as a new Qt slot by using the :func:`~PyQt5.QtCore.pyqtSlot` decorator. - A new Qt property may be defined using the :func:`~PyQt5.QtCore.pyqtProperty` function. Note that the ability to define new Qt signals, slots and properties from Python is potentially useful to plugins conforming to any plugin interface and not just that used by Designer. For a simple but complete and fully documented example of a custom widget that defines new Qt signals, slots and properties, and its plugin, look in the :file:`examples/designer/plugins` directory of the PyQt5 source package. The :file:`widgets` subdirectory contains the :file:`pydemo.py` custom widget and the :file:`python` subdirectory contains its :file:`pydemoplugin.py` plugin. PyQt-gpl-5.5.1/doc/sphinx/extension_api.rst0000644000076500000240000002133312552164565020750 0ustar philstaff00000000000000.. _ref-build-system: The PyQt5 Extension API ======================= An important feature of PyQt5 (and SIP generated modules in general) is the ability for other extension modules to build on top of it. `QScintilla `__ is such an example. PyQt5 provides an extension API that can be used by other modules. This has the advantage of sharing code and also enforcing consistent behaviour. Part of the API is accessable from Python and part from C++. Python API ---------- The Python part of the API is accessible via the :mod:`~PyQt5.QtCore` module and is typically used by an extension module's equivalent of PyQt5's :program:`configure.py`. The API consists of :attr:`PyQt5.QtCore.PYQT_CONFIGURATION` which is a dict that describes how PyQt5 was configured. At the moment it contains a single value called ``sip_flags`` which is a string containing the ``-t`` and ``-x`` flags that were passed to the :program:`sip` executable by :program:`configure.py`. Other extension modules must use the same flags in their configuration. This information is also provided by SIP v4's :mod:`~sip.sipconfig` module. However this module will not be implemented by SIP v5. C++ API ------- The C++ API is a set of functions. The addresses of each function is obtained by calling SIP's :c:func:`sipImportSymbol` function with the name of the function required. Several of the functions are provided as a replacement for SIP v4 features (i.e. ``SIP_ANYSLOT``, ``SIP_QOBJECT``, ``SIP_RXOBJ_CON``, ``SIP_RXOBJ_DIS``, ``SIP_SIGNAL``, ``SIP_SLOT``, ``SIP_SLOT_CON`` and ``SIP_SLOT_DIS``) that will not be supported by SIP v5. The functions exported by PyQt5 are as follows: .. cpp:function:: void pyqt_err_print() .. versionadded:: 5.4 A replacement for :c:func:`PyErr_Print`. In PyQt v5.4 it raises a deprecation warning and calls :c:func:`PyErr_Print`. In PyQt v5.5 and later it passes the text of the exception and traceback to :c:func:`qFatal`. .. cpp:function:: char **pyqt5_from_argv_list(PyObject *argv_list, int &argc) Convert a Python list to a standard C array of command line arguments and an argument count. :param argv_list: is the Python list of arguments. :param argc: is updated with the number of arguments in the list. :return: an array of pointers to the arguments on the heap. .. cpp:function:: PyObject *pyqt5_from_qvariant_by_type(QVariant &value, PyObject *type) Convert a :class:`~PyQt5.QtCore.QVariant` to a Python object according to an optional Python type. :param value: is the value to convert. :param type: is the Python type. :return: the converted value. If it is ``0`` then a Python exception will have been raised. .. cpp:function:: sipErrorState pyqt5_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) Get the receiver object and slot signature to allow a signal to be connected to an optional transmitter. :param slot: is the slot and should be a callable or a bound signal. :param transmitter: is the optional :class:`~PyQt5.QtCore.QObject` transmitter. :param signal_signature: is the signature of the signal to be connected. :param single_shot: is ``true`` if the signal will only ever be emitted once. :param receiver: is updated with the :class:`~PyQt5.QtCore.QObject` receiver. This may be a proxy if the slot requires it. :param slot_signature: is updated with the signature of the slot. :return: the error state. If this is :c:data:`sipErrorFail` then a Python exception will have been raised. .. cpp:function:: const QMetaObject *pyqt5_get_qmetaobject(PyTypeObject *type) Get the QMetaObject instance for a Python type. The Python type must be a sub-type of :class:`~PyQt5.QtCore.QObject`'s Python type. :param type: is the Python type object. :return: the :class:`~PyQt5.QtCore.QMetaObject`. .. cpp:function:: sipErrorState pyqt5_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature) Get the transmitter object and signal signature from a bound signal. :param signal: is the bound signal. :param transmitter: is updated with the :class:`~PyQt5.QtCore.QObject` transmitter. :param signal_signature: is updated with the signature of the signal. :return: the error state. If this is :c:data:`sipErrorFail` then a Python exception will have been raised. .. cpp:function:: sipErrorState pyqt5_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature) Get the receiver object and slot signature from a callable decorated with :func:`~PyQt5.QtCore.pyqtSlot`. :param slot: is the callable slot. :param receiver: is updated with the :class:`~PyQt5.QtCore.QObject` receiver. :param slot_signature: is updated with the signature of the slot. :return: the error state. If this is :c:data:`sipErrorFail` then a Python exception will have been raised. .. cpp:function:: sipErrorState pyqt5_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature) Get the signature string for a bound or unbound signal. If the signal is bound then it must be bound to the given transmitter. :param signal: is the signal. :param transmitter: is the :class:`~PyQt5.QtCore.QObject` transmitter. :param signal_signature: is updated with the signature of the signal. :return: the error state. If this is :c:data:`sipErrorFail` then a Python exception will have been raised. .. cpp:function:: void pyqt5_register_from_qvariant_convertor(bool (*convertor)(const QVariant &, PyObject **)) Register a convertor function that converts a :class:`~PyQt5.QtCore.QVariant` value to a Python object. :param convertor: is the convertor function. This takes two arguments. The first argument is the :class:`~PyQt5.QtCore.QVariant` value to be converted. The second argument is updated with a reference to the result of the conversion and it will be ``0``, and a Python exception raised, if there was an error. The convertor will return ``true`` if the value was handled so that no other convertor will be tried. .. cpp:function:: void pyqt5_register_to_qvariant_convertor(bool (*convertor)(PyObject *, QVariant &, bool *)) Register a convertor function that converts a Python object to a :class:`~PyQt5.QtCore.QVariant` value. :param convertor: is the convertor function. This takes three arguments. The first argument is the Python object to be converted. The second argument is a pointer to :class:`~PyQt5.QtCore.QVariant` value that is updated with the result of the conversion. The third argument is updated with an error flag which will be ``false``, and a Python exception raised, if there was an error. The convertor will return ``true`` if the value was handled so that no other convertor will be tried. .. cpp:function:: void pyqt5_register_to_qvariant_data_convertor(bool (*convertor)(PyObject *, void *, int, bool *)) Register a convertor function that converts a Python object to the pre-allocated data of a :class:`~PyQt5.QtCore.QVariant` value. :param convertor: is the convertor function. This takes four arguments. The first argument is the Python object to be converted. The second argument is a pointer to the pre-allocated data of a :class:`~PyQt5.QtCore.QVariant` value that is updated with the result of the conversion. The third argument is the meta-type of the value. The fourth argument is updated with an error flag which will be ``false``, and a Python exception raised, if there was an error. The convertor will return ``true`` if the value was handled so that no other convertor will be tried. .. cpp:function:: void pyqt5_update_argv_list(PyObject *argv_list, int argc, char **argv) Update a Python list from a standard C array of command line arguments and an argument count. This is used in conjunction with :cpp:func:`pyqt5_from_argv_list` to handle the updating of argument lists after calling constructors of classes such as :class:`~PyQt5.QtCore.QCoreApplication`. :param argv_list: is the Python list of arguments that will be updated. :param argc: is the number of command line arguments. :param argv: is the array of pointers to the arguments on the heap. PyQt-gpl-5.5.1/doc/sphinx/gotchas.rst0000644000076500000240000001603212552164565017533 0ustar philstaff00000000000000Things to be Aware Of ===================== Keyword Arguments ----------------- PyQt5 supports the use of keyword arguments for optional arguments. Although the PyQt5 and Qt documentation may indicate that an argument has a particular name, you may find that PyQt5 actually uses a different name. This is because the name of an argument is not part of the Qt API and there is some inconsistency in the way that similar arguments are named. Different versions of Qt may use a different name for an argument which wouldn't affect the C++ API but would break the Python API. The docstrings that PyQt5 generates for all classes, functions and methods will contain the correct argument names. In a future version of PyQt5 the documentation will also be guaranteed to contain the correct argument names. Python Strings, Qt Strings and Unicode -------------------------------------- Qt uses the ``QString`` class to represent Unicode strings, and the ``QByteArray`` to represent byte arrays or strings. In Python v3 the corresponding native object types are ``str`` and ``bytes``. In Python v2 the corresponding native object types are ``unicode`` and ``str``. PyQt5 does its best to automatically convert between objects of the various types. Explicit conversions can be easily made where necessary. In some cases PyQt5 will not perform automatic conversions where it is necessary to distinguish between different overloaded methods. For Python v3 the following conversions are done by default. - If Qt expects a ``char *`` (or a ``const`` version) then PyQt5 will accept a ``str`` that contains only ASCII characters, a ``bytes``, a ``QByteArray``, or a Python object that implements the buffer protocol. - If Qt expects a ``char`` (or a ``const`` version) then PyQt5 will accept the same types as for ``char *`` and also require that a single character is provided. - If Qt expects a ``signed char *`` or an ``unsigned char *`` (or a ``const`` version) then PyQt5 will accept a ``bytes``. - If Qt expects a ``signed char`` or an ``unsigned char`` (or a ``const`` version) then PyQt5 will accept a ``bytes`` of length 1. - If Qt expects a ``QString`` then PyQt5 will accept a ``str``, a ``bytes`` that contains only ASCII characters or a ``QByteArray``. - If Qt expects a ``QByteArray`` then PyQt5 will also accept a ``bytes``. - If Qt expects a ``QByteArray`` then PyQt5 will also accept a ``str`` that contains only Latin-1 characters. **This is deprecated in PyQt v5.4 and will be removed in PyQt v5.5.)** For Python v2 the following conversions are done by default. - If Qt expects a ``char *``, ``signed char *`` or an ``unsigned char *`` (or a ``const`` version) then PyQt5 will accept a ``unicode`` that contains only ASCII characters, a ``str``, a ``QByteArray``, or a Python object that implements the buffer protocol. - If Qt expects a ``char``, ``signed char`` or an ``unsigned char`` (or a ``const`` version) then PyQt5 will accept the same types as for ``char *``, ``signed char *`` and ``unsigned char *`` and also require that a single character is provided. - If Qt expects a ``QString`` then PyQt5 will accept a ``unicode``, a ``str`` that contains only ASCII characters or a ``QByteArray``. - If Qt expects a ``QByteArray`` then PyQt5 will accept a ``str``. - If Qt expects a ``QByteArray`` then PyQt5 will accept a ``unicode`` that contains only Latin-1 characters. **This is deprecated in PyQt v5.4 and will be removed in PyQt v5.5.)** Note that the different behaviour between Python v2 and v3 is due to v3's reduced support for the buffer protocol. Garbage Collection ------------------ C++ does not garbage collect unreferenced class instances, whereas Python does. In the following C++ fragment both colours exist even though the first can no longer be referenced from within the program:: col = new QColor(); col = new QColor(); In the corresponding Python fragment, the first colour is destroyed when the second is assigned to ``col``:: col = QColor() col = QColor() In Python, each colour must be assigned to different names. Typically this is done within class definitions, so the code fragment would be something like:: self.col1 = QColor() self.col2 = QColor() Sometimes a Qt class instance will maintain a pointer to another instance and will eventually call the destructor of that second instance. The most common example is that a :class:`~PyQt5.QtCore.QObject` (and any of its sub-classes) keeps pointers to its children and will automatically call their destructors. In these cases, the corresponding Python object will also keep a reference to the corresponding child objects. So, in the following Python fragment, the first :class:`~PyQt5.QtWidgets.QLabel` is not destroyed when the second is assigned to ``lab`` because the parent :class:`~PyQt5.QtWidgets.QWidget` still has a reference to it:: parent = QWidget() lab = QLabel("First label", parent) lab = QLabel("Second label", parent) Multiple Inheritance -------------------- It is not possible to define a new Python class that sub-classes from more than one Qt class. The exception is classes specifically intended to act as mixin classes such as those (like :class:`~PyQt5.QtQml.QQmlParserStatus`) that implement Qt interfaces. Access to Protected Member Functions ------------------------------------ When an instance of a C++ class is not created from Python it is not possible to access the protected member functions of that instance. Attempts to do so will raise a Python exception. Also, any Python methods corresponding to the instance's virtual member functions will never be called. ``None`` and ``NULL`` --------------------- Throughout PyQt5, the ``None`` value can be specified wherever ``NULL`` is acceptable to the underlying C++ code. Equally, ``NULL`` is converted to ``None`` whenever it is returned by the underlying C++ code. Support for ``void *`` ---------------------- PyQt5 (actually SIP) represents ``void *`` values as objects of type :class:`sip.voidptr`. Such values are often used to pass the addresses of external objects between different Python modules. To make this easier, a Python integer (or anything that Python can convert to an integer) can be used whenever a :class:`sip.voidptr` is expected. A :class:`sip.voidptr` may be converted to a Python integer by using the ``int()`` builtin function. A :class:`sip.voidptr` may be converted to a Python string by using its :meth:`~sip.voidptr.asstring` method. The :meth:`~sip.voidptr.asstring` method takes an optional integer argument which is the length of the data in bytes. A :class:`sip.voidptr` may also be given a size (ie. the size of the block of memory that is pointed to) by calling its :meth:`~sip.voidptr.setsize` method. If it has a size then it is also able to support Python's buffer protocol and behaves like a Python ``memoryview`` object so that the block of memory can be treated as a mutable list of bytes. It also means that the Python :mod:`struct` module can be used to unpack and pack binary data structures in memory, memory mapped files or shared memory. PyQt-gpl-5.5.1/doc/sphinx/i18n.rst0000644000076500000240000001011212552164565016653 0ustar philstaff00000000000000Internationalisation of PyQt5 Applications ========================================== PyQt5 and Qt include a comprehensive set of tools for translating applications into local languages. For a full description, see the Qt Linguist Manual in the Qt documentation. The process of internationalising an application comprises the following steps. - The programmer uses :program:`pylupdate5` to create or update a ``.ts`` translation file for each language that the application is to be translated into. A ``.ts`` file is an XML file that contains the strings to be translated and the corresponding translations that have already been made. :program:`pylupdate5` can be run any number of times during development to update the ``.ts`` files with the latest strings for translation. - The translator uses Qt Linguist to update the ``.ts`` files with translations of the strings. - The release manager then uses Qt's :program:`lrelease` utility to convert the ``.ts`` files to ``.qm`` files which are compact binary equivalents used by the application. If an application cannot find an appropriate ``.qm`` file, or a particular string hasn't been translated, then the strings used in the original source code are used instead. - The release manage may optionally use :program:`pyrcc5` to embed the ``.qm`` files, along with other application resources such as icons, in a Python module. This may make packaging and distribution of the application easier. :program:`pylupdate5` --------------------- .. program:: pylupdate5 :program:`pylupdate5` is PyQt5's equivalent to Qt's :program:`lupdate` utility and is used in exactly the same way. A Qt ``.pro`` project file is read that specifies the Python source files and Qt Designer interface files from which the text that needs to be translated is extracted. The ``.pro`` file also specifies the ``.ts`` translation files that :program:`pylupdate5` updates (or creates if necessary) and are subsequently used by Qt Linguist. Differences Between PyQt5 and Qt -------------------------------- Qt implements internationalisation support through the :class:`~PyQt5.QtCore.QTranslator` class, and the :meth:`~PyQt5.QtCore.QCoreApplication.translate` and :meth:`~PyQt5.QtCore.QObject.tr` methods. Usually :meth:`~PyQt5.QtCore.QObject.tr` is used to obtain the correct translation of a message. The translation process uses a message context to allow the same message to be translated differently. In Qt :meth:`~PyQt5.QtCore.QObject.tr` is actually generated by ``moc`` and uses the hardcoded class name as the context. On the other hand, :meth:`~PyQt5.QtCore.QApplication.translate` allows the context to be specified explicitly. Unfortunately, because of the way Qt implements :meth:`~PyQt5.QtCore.QObject.tr` it is not possible for PyQt5 to exactly reproduce its behaviour. The PyQt5 implementation of :meth:`~PyQt5.QtCore.QObject.tr` uses the class name of the instance as the context. The key difference, and the source of potential problems, is that the context is determined dynamically in PyQt5, but is hardcoded in Qt. In other words, the context of a translation may change depending on an instance's class hierarchy. For example:: class A(QObject): def hello(self): return self.tr("Hello") class B(A): pass a = A() a.hello() b = B() b.hello() In the above the message is translated by ``a.hello()`` using a context of ``A``, and by ``b.hello()`` using a context of ``B``. In the equivalent C++ version the context would be ``A`` in both cases. The PyQt5 behaviour is unsatisfactory and may be changed in the future. It is recommended that :meth:`~PyQt5.QtCore.QCoreApplication.translate` be used in preference to :meth:`~PyQt5.QtCore.QObject.tr`. This is guaranteed to work with current and future versions of PyQt5 and makes it much easier to share message files between Python and C++ code. Below is the alternative implementation of ``A`` that uses :meth:`~PyQt5.QtCore.QCoreApplication.translate`:: class A(QObject): def hello(self): return QCoreApplication.translate('A', "Hello") PyQt-gpl-5.5.1/doc/sphinx/incompatibilities.rst0000644000076500000240000000635112567127140021610 0ustar philstaff00000000000000Incompatibilities with Earlier Versions ======================================= PyQt v5.5 --------- Conversion of Latin-1 Strings to :class:`~PyQt5.QtCore.QByteArray` ****************************************************************** This version removes the automatic conversion of a Latin-1 encoded string when a :class:`~PyQt5.QtCore.QByteArray` is expected. It was deprecated in PyQt v5.4. Unhandled Python Exceptions *************************** There are a number of situations where Python code is executed from C++. Python reimplementations of C++ virtual methods is probably the most common example. In previous versions, if the Python code raised an exception then PyQt would call Python's :c:func:`PyErr_Print` function which would then call :func:`sys.excepthook`. The default exception hook would then display the exception and any traceback to ``stderr``. There are number of disadvantages to this behaviour: - the application does not terminate, meaning the behaviour is different to when exceptions are raised in other situations - the output written to ``stderr`` may not be seen by the developer or user (particularly if it is a GUI application) thereby hiding the fact that the application is trying to report a potential bug. This behaviour was deprecated in PyQt v5.4. In PyQt v5.5 an unhandled Python exception will result in a call to Qt's :cpp:func:`qFatal` function. By default this will call :c:func:`abort` and the application will terminate. Note that an application installed exception hook will still take precedence. PyQt v5.3 --------- Execution of Python Slots ************************* In previous versions, when a signal was emitted to a Python slot that was not decorated with :func:`~PyQt5.QtCore.pyqtSlot`, it would not check that the underlying C++ receiver instance still existed. This matched the PyQt4 behaviour at the time that PyQt5 v5.0 was released, but doesn't reflect the standard C++ behaviour. The lack of a check meant that an object could connect its :func:`~PyQt5.QtCore.QObject.destroyed` signal to itself so that it could monitor when its underlying C++ instance was destroyed. Unfortunately this turned out to be a potential source of obscure bugs for more common code. In this version the check has been introduced - hence creating an incompatibility for any code that relies on the earlier behaviour. As a workaround for this the ``no_receiver_check`` argument has been added to :func:`~PyQt5.QtCore.QObject.connect` which allows the check to be suppressed on a per connection basis. Qt Signals with Default Arguments ********************************* In previous versions Qt signals with default arguments were exposed as multiple signals each with one additional default argument. For example ``QAbstractButton::clicked(bool checked = false)`` was exposed as ``QAbstractButton::clicked(bool checked)`` and ``QAbstractButton::clicked()`` where the former was the default signal. It was therefore possible to index the latter by using an empty tuple as the key - although there was no benefit in doing so. In this version only the signal with all arguments supplied is exposed. However the signal's ``emit()`` method still supports the default argument, i.e. when used normally the change should not be noticed. PyQt-gpl-5.5.1/doc/sphinx/index.rst0000644000076500000240000000073512567127140017207 0ustar philstaff00000000000000PyQt5 Reference Guide ===================== .. toctree:: :maxdepth: 2 introduction platforms deprecations incompatibilities installation pyqt4_differences class_reference signals_slots qt_properties metaobjects opengl qt_interfaces pyqt_qvariant pyqt_qsettings qml multiinheritance gotchas designer resources pickle python_shell i18n dbus deploy_commercial extension_api PyQt-gpl-5.5.1/doc/sphinx/installation.rst0000644000076500000240000003561312600266542020602 0ustar philstaff00000000000000Installing PyQt5 ================ Downloading SIP --------------- SIP must be installed before building and using PyQt5. You can get the latest release of the SIP source code from http://www.riverbankcomputing.com/software/sip/download. The SIP documentation can be found at http://pyqt.sourceforge.net/Docs/sip4/. Downloading PyQt5 ----------------- You can get the latest release of the GPL version of the PyQt5 source code from http://www.riverbankcomputing.com/software/pyqt/download5. If you are using the commercial version of PyQt5 then you should use the download instructions which were sent to you when you made your purchase. You must also download your license file. Configuring PyQt5 ----------------- After unpacking the source package (either a ``.tar.gz`` or a ``.zip`` file depending on your platform) you should then check for any :file:`README` files that relate to your platform. If you are using the commercial version of PyQt5 then you must copy your license file to the :file:`sip` directory, or to the directory specified by the :option:`--license-dir` option of :program:`configure.py`. You need to make sure your environment variables are set properly for your development environment. In order to configure the build of PyQt5 you need to run the :program:`configure.py` script as follows:: python configure.py This assumes that the Python interpreter is on your path. Something like the following may be appropriate on Windows:: c:\Python34\python configure.py If you have multiple versions of Python installed then make sure you use the interpreter for which you wish to build PyQt5 for. The full set of command line options is: .. program:: configure.py .. cmdoption:: --assume-shared Normally Qt is checked to see if it has been built as shared libraries. Some Linux distributions configure their Qt builds to make this check unreliable. This option ignores the result of the check and assumes that Qt has been built as shared libraries. .. cmdoption:: --bindir The :program:`pyuic5`, :program:`pyrcc5` and :program:`pylupdate5` utilities will be installed in the directory ````. .. cmdoption:: --concatenate The C++ source files for a Python module will be concatenated. This results in significantly reduced compilation times. Most, but not all, C++ compilers can handle the large files that result. See also the :option:`--concatenate-split` option. .. cmdoption:: --concatenate-split If the :option:`--concatenate` option is used to concatenate the C++ source files then this option determines how many files are created. The default is 1. .. cmdoption:: --configuration ```` contains the configuration of the PyQt5 build to be used instead of dynamically introspecting the system and is typically used when cross-compiling. See :ref:`ref-configuration-files`. .. cmdoption:: --confirm-license Using this confirms that you accept the terms of the PyQt5 license. If it is omitted then you will be asked for confirmation during configuration. .. cmdoption:: --dbus The :file:`dbus-python.h` header file of the dbus-python package can be found in the directory ``/dbus``. .. cmdoption:: --debug The PyQt5 modules will be built with debugging symbols. On Windows this requires that a debug version of Python is installed. .. cmdoption:: --designer-plugindir The Python plugin for Qt Designer will be installed in the directory ````. .. cmdoption:: --destdir The PyQt5 Python package will be installed in the directory ````. The default is the Python installation's :file:`site-packages` directory. If you use this option then the :envvar:`PYTHONPATH` environment variable must include ````. .. cmdoption:: --disable .. versionadded:: 5.5.1 Normally all PyQt5 modules are enabled and are built if the corresponding Qt library can be found. This option will suppress the check for ``>``. The option may be specified any number of times. .. cmdoption:: --enable Normally all PyQt5 modules are enabled and are built if the corresponding Qt library can be found. Using this option only those modules specifically enabled will be checked for and built. The option may be specified any number of times. .. cmdoption:: --help, -h Display a help message. .. cmdoption:: --license-dir The license files needed by the commercial version of PyQt5 can be found in the directory ````. .. cmdoption:: --no-designer-plugin The Qt Designer plugin will not be built. .. cmdoption:: --no-docstrings The PyQt5 modules will not contain automatically generated docstrings. .. cmdoption:: --no-python-dbus The Qt support for the standard Python DBus bindings is disabled. .. cmdoption:: --no-qml-plugin The :program:`qmlscene` plugin will not be built. .. cmdoption:: --no-qsci-api The :file:`PyQt5.api` QScintilla API file is not installed even if QScintilla does appear to be installed. .. cmdoption:: --no-sip-files The ``.sip`` files for the PyQt5 modules will not be installed. .. cmdoption:: --no-tools .. versionadded:: 5.3 The ``pyuic5``, ``pyrcc5`` and ``pylupdate5`` tools will not be built. .. cmdoption:: --no-timestamp Normally the header comments of each generated C/C++ source file includes a timestamp corresponding to when the file was generated. This option suppresses the inclusion of the timestamp. .. cmdoption:: --protected-is-public On certain platforms the size of PyQt5 modules can be significantly reduced by redefining the C++ ``protected`` keyword as ``public`` during compilation. This option enables this behaviour and is the default on Linux and MacOS/X. .. cmdoption:: --protected-not-public The default redefinition of ``protected`` to ``public`` during compilation on Linux and MacOS/X is disabled. .. cmdoption:: --pyuic5-interpreter ```` is the name of the Python interpreter used in the pyuic5 wrapper. The default is platform dependent. .. cmdoption:: --qmake Qt's :program:`qmake` program is used to determine how your Qt installation is laid out. Normally :program:`qmake` is found on your :envvar:`PATH`. This option can be used to specify a particular instance of :program:`qmake` to use. This option is not available on Windows where :program:`qmake` must be on :envvar:`PATH`. .. cmdoption:: --qml-plugindir The Python plugin for :program:`qmlscene` will be installed in the directory ````. .. cmdoption:: --qsci-api The :file:`PyQt5.api` QScintilla API file is installed even if QScintilla does not appear to be installed. This option is implied if the :option:`--qsci-api-destdir` option is specified. .. cmdoption:: --qsci-api-destdir The QScintilla API file will be installed in the :file:`python` subdirectory of the :file:`api` subdirectory of the directory ````. .. cmdoption:: --sip The :program:`sip` program is used to generate PyQt5's C++ source code. Normally :program:`sip` is found on your :envvar:`PATH`. This option can be used to specify a particular instance of :program:`sip` to use. .. cmdoption:: --sip-incdir The ``sip.h`` header file can be found in the directory ````. .. cmdoption:: --sipdir The ``.sip`` files for the PyQt5 modules will be installed in the directory ````. .. cmdoption:: --spec The argument ``-spec SPEC`` will be passed to :program:`qmake`. The default behaviour is platform specific. On Windows :program:`configure.py` will choose the value that is correct for the version of Python that is being used. (However if you have built Python yourself then you may need to explicitly specify ````.) On MacOS :program:`configure.py` will try and avoid ``macx-xcode`` if possible.) .. cmdoption:: --static The PyQt5 modules will be built as static libraries. This is useful when building a custom interpreter with the PyQt5 modules built in to the interpreter. .. cmdoption:: --sysroot .. versionadded:: 5.3 ```` is the name of an optional directory that replaces ``sys.prefix`` in the names of other directories (specifically those specifying where the various PyQt5 components will be installed and where the Python include and library directories can be found). It is typically used when cross-compiling or when building a static version of PyQt5. See :ref:`ref-configuration-files`. .. cmdoption:: --target-py-version .. versionadded:: 5.3 ```` is the major and minor version (e.g. ``3.4``) of the version of Python being targetted. By default the version of Python being used to run the :program:`configure.py` script is used. It is typically used when cross-compiling. See :ref:`ref-configuration-files`. .. cmdoption:: --trace The generated PyQt5 modules contain additional tracing code that is enabled using SIP's :func:`sip.settracemask` function. .. cmdoption:: --verbose Compiler commands and any output issued during configuration is displayed instead of being suppressed. Use this if :program:`configure.py` is having problems to see what exactly is going wrong. .. cmdoption:: --version Display the PyQt5 version number. Any remaining command line arguments are expected to be in the form ``name=value`` or ``name+=value``. Such arguments are added to any :program:`qmake` ``.pro`` file created by :program:`configure.py`. Building PyQt5 -------------- The next step is to build PyQt5 by running your platform's :program:`make` command. For example:: make The final step is to install PyQt5 by running the following command:: make install (Depending on your system you may require root or administrator privileges.) This will install the various PyQt5 components. Co-existence with PyQt4 ----------------------- PyQt5 can be installed alongside PyQt4 using the same Python interpreter without any problems so long as they are built with the same version of SIP. .. _ref-configuration-files: Configuring with Configuration Files ------------------------------------ The :program:`configure.py` script normally introspects the Python installation of the interpreter running it in order to determine the names of the various files and directories it needs. This is fine for a native build of PyQt5 but isn't appropriate when cross-compiling. In this case it is possible to supply a configuration file, specified using the :option:`--configuration` option, which contains definitions of all the required values. A configuration file is made up of a number of named sections each of which contains a number of configuration items. The format of a configuration file is as follows: - a section name is a single line with the name enclosed between ``[`` and ``]`` - a configuration item is a single line containing a name/value pair separated by ``=`` - values may be extended to lines immediately following if they are indented by at least one space - a value may include another value by embedding the name of that value enclosed between ``%(`` and ``)`` - comments begin with ``#`` and continue to the end of the line - blank lines are ignored. Those configuration items that appear before the first section name are automatically added to all sections. A configuration file defines a section for each version of Qt that requires a different configuration. :program:`configure.py` will choose the most appropriate section according to the version of Qt you are actually using. For example, if a configuration file contains sections for Qt v5.3 and Qt v5.1 and you are using Qt v5.2.1 then the section for Qt v5.1 will be chosen. :program:`configure.py` provides the following preset values for a configuration: ``py_major`` is the major version number of the target Python installation. ``py_minor`` is the minor version number of the target Python installation. ``sysroot`` is the name of the system root directory. This is specified with the :option:`--sysroot` option. The following is an example configuration file:: # The target Python installation. py_platform = linux py_inc_dir = %(sysroot)/usr/include/python%(py_major).%(py_minor) py_pylib_dir = %(sysroot)/usr/lib/python%(py_major).%(py_minor)/config py_pylib_lib = python%(py_major).%(py_minor)mu # The target PyQt installation. pyqt_module_dir = %(sysroot)/usr/lib/python%(py_major)/dist-packages pyqt_bin_dir = %(sysroot)/usr/bin pyqt_sip_dir = %(sysroot)/usr/share/sip/PyQt5 pyuic_interpreter = /usr/bin/python%(py_major).%(py_minor) pyqt_disabled_features = PyQt_Desktop_OpenGL PyQt_qreal_double # Qt configuration common to all versions. qt_shared = True [Qt 5.1] pyqt_modules = QtCore QtDBus QtDesigner QtGui QtHelp QtMultimedia QtMultimediaWidgets QtNetwork QtOpenGL QtPrintSupport QtQml QtQuick QtSensors QtSerialPort QtSql QtSvg QtTest QtWebKit QtWebKitWidgets QtWidgets QtXmlPatterns _QOpenGLFunctions_ES2 This example contains a section for Qt v5.1. We have defined a number of values before the start of the section as they are not specific to any particular version of Qt. Note that if you use this configuration with a version of Qt earlier than v5.1 then you will get an error. The following values can be specified in the configuration file: ``qt_shared`` is set if Qt has been built as shared libraries. The default value is ``False``. ``py_platform`` is the target Python platform. ``py_inc_dir`` is the target Python include directory, i.e. the directory containing the ``Python.h`` file. ``py_pylib_dir`` is the target Python library directory. ``py_pylib_lib`` is the target Python interpreter library. It should not include any platform-specific prefix or suffix. ``pyqt_disabled_features`` is the space separated list of features (as defined by SIP's ``%Feature`` directive) that should be disabled. ``pyqt_module_dir`` is the target directory where the PyQt5 modules will be installed. It can be overridden by the :option:`--destdir` option. ``pyqt_modules`` is the space separated list of PyQt5 modules that will be built. It can be overridden by the :option:`--enable` option. ``pyqt_bin_dir`` is the name of the target directory where the PyQt5 related executables will be installed. It can be overridden by the :option:`--bindir` option. ``pyqt_sip_dir`` is the name of the target directory where the PyQt5 ``.sip`` files will be installed. It can be overridden by the :option:`--sipdir` option. ``pyuic_interpreter`` is the name of the Python interpreter (as it would be called from the target system) that will be used to run :program:`pyuic5`. It can be overridden by the :option:`--pyuic5-interpreter` option. PyQt-gpl-5.5.1/doc/sphinx/introduction.rst0000644000076500000240000003453712613140041020613 0ustar philstaff00000000000000Introduction ============ This is the reference guide for PyQt5 5.5.1. PyQt5 is a set of `Python `__ bindings for v5 of the Qt application framework from `The Qt Company `__. Qt is a set of C++ libraries and development tools that includes platform independent abstractions for graphical user interfaces, networking, threads, regular expressions, SQL databases, SVG, OpenGL, XML, user and application settings, positioning and location services, short range communications (NFC and Bluetooth) and access to the cloud. PyQt5 implements over 1000 of these classes as a set of Python modules. PyQt5 supports the Windows, Linux, UNIX, Android, OS X and iOS platforms. PyQt5 does not include Qt itself - you must obtain it separately. The homepage for PyQt5 is http://www.riverbankcomputing.com/software/pyqt/. Here you will always find the latest stable version, current development previews, and the latest version of this documentation. PyQt5 is built using the `SIP bindings generator `__. SIP must be installed in order to build and use PyQt5. Earlier versions of Qt are supported by PyQt4. License ------- PyQt5 is dual licensed on all platforms under the Riverbank Commercial License and the GPL v3. Your PyQt5 license must be compatible with your Qt license. If you use the GPL version then your own code must also use a compatible license. PyQt5, unlike Qt, is not available under the LGPL. You can purchase a commercial PyQt5 license `here `__. PyQt5 Components ---------------- .. module:: PyQt5 PyQt5 comprises a number of different components. First of all there are a number of Python extension modules. These are all installed in the :mod:`PyQt5` Python package. .. module:: PyQt5.QAxContainer :platform: Windows - :mod:`~PyQt5.QAxContainer` contains classes that allow access to ActiveX controls and COM objects. It does not support the ability to write ActiveX servers in Python. It is only available under Windows. .. module:: PyQt5.QtBluetooth - :mod:`~PyQt5.QtBluetooth` contains classes that enables an application to scan for devices and connect and interact with them. .. module:: PyQt5.QtCore - :mod:`~PyQt5.QtCore` contains the core classes, including the event loop and Qt's signal and slot mechanism. It also includes platform independent abstractions for animations, state machines, threads, mapped files, shared memory, regular expressions, and user and application settings. .. module:: PyQt5.QtDBus :platform: UNIX - :mod:`~PyQt5.QtDBus` contains classes that support Inter-Process Communication using the D-Bus protocol. It is not available under Windows. .. module:: PyQt5.QtDesigner - :mod:`~PyQt5.QtDesigner` contains classes that allow Qt Designer to be extended using PyQt5. See :ref:`ref-designer-plugins` for a full description of how to do this. .. module:: PyQt5.QtGui - :mod:`~PyQt5.QtGui` contains classes for windowing system integration, event handling, 2D graphics, basic imaging, fonts and text. It also containes a complete set of OpenGL and OpenGL ES bindings (see :ref:`ref-opengl`). Application developers would normally use this with higher level APIs such as those contained in the :mod:`~PyQt5.QtWidgets` module. .. module:: PyQt5.QtHelp - :mod:`~PyQt5.QtHelp` contains classes for creating and viewing searchable documentation. .. module:: PyQt5.QtLocation - :mod:`~PyQt5.QtLocation` contains classes for accessing geocoding and navigation information, and also place search. It allows the creation of mapping solutions using data from some of the popular location services. .. module:: PyQt5.QtMacExtras :platform: OS X, iOS - :mod:`~PyQt5.QtMacExtras` contains additional classes that are specific to OS X and iOS. .. module:: PyQt5.QtMultimedia - :mod:`~PyQt5.QtMultimedia` contains classes to handle multimedia content and APIs to access camera and radio functionality. .. module:: PyQt5.QtMultimediaWidgets - :mod:`~PyQt5.QtMultimediaWidgets` contains classes to handle multimedia content in :mod:`~PyQt5.QtWidgets` based applications. .. module:: PyQt5.QtNetwork - :mod:`~PyQt5.QtNetwork` contains classes for writing UDP and TCP clients and servers. It includes classes that implement HTTP clients and support DNS lookups. .. module:: PyQt5.QtNfc - :mod:`~PyQt5.QtNfc` contains classes to provide connectivity between NFC enabled devices. The NFC API provides APIs for interacting with NFC Forum Tags and NFC Forum Devices, including target detection and loss, registering NDEF message handlers, reading and writing NDEF messages on NFC Forum Tags and sending tag specific commands. .. module:: PyQt5.QtOpenGL - :mod:`~PyQt5.QtOpenGL` contains classes that allow the use of OpenGL in rendering 3D graphics in :mod:`~PyQt5.QtWidgets` based applications. .. module:: PyQt5.QtPositioning - :mod:`~PyQt5.QtPositioning` contains classes to determine a position by using a variety of possible sources, including satellite, or Wi-Fi, or a text file, and so on. That information can then be used to, for example, determine a position on a map. In addition satellite information can be retrieved and area based monitoring can be performed. .. module:: PyQt5.QtPrintSupport - :mod:`~PyQt5.QtPrintSupport` contains classes to allow applications to print to locally attached and remote printers. It also enables the generation of PostScript and PDF files. .. module:: PyQt5.QtQml - :mod:`~PyQt5.QtQml` contains classes to allow applications to integrate support for QML and JavaScript. Python objects can be exported to QML or be created from QML in the same way that Qt allows the same with C++ instances. See :ref:`ref-integrating-qml` for a fuller description of how to do this. .. module:: PyQt5.QtQuick - :mod:`~PyQt5.QtQuick` contains classes that provide the basic elements necessary for creating user interfaces with QML. .. module:: PyQt5.QtQuickWidgets - :mod:`~PyQt5.QtQuickWidgets` contains classes that support the display of a QML scene in a traditional widget. .. module:: PyQt5.QtSensors - :mod:`~PyQt5.QtSensors` contains classes that provide access to a system's hardware sensors including accelerometers, altimeters, ambient light and temperature sensors, gyroscopes and magnetometers. Note that sensor gestures are not currently supported. .. module:: PyQt5.QtSerialPort - :mod:`~PyQt5.QtSerialPort` contains classes that provide access to a system's serial ports. .. module:: PyQt5.QtSql - :mod:`~PyQt5.QtSql` contains classes that integrate with SQL databases. It includes editable data models for database tables that can be used with GUI classes. It also includes an implementation of `SQLite `__. .. module:: PyQt5.QtSvg - :mod:`~PyQt5.QtSvg` contains classes for displaying the contents of SVG files. .. module:: PyQt5.QtTest - :mod:`~PyQt5.QtTest` contains functions that enable unit testing of PyQt5 applications. (PyQt5 does not implement the complete Qt unit test framework. Instead it assumes that the standard Python unit test framework will be used and implements those functions that simulate a user interacting with a GUI.) In addition the :class:`~PyQt5.QtTest.QSignalSpy` class provides easy introspection of Qt's signals and slots. .. module:: PyQt5.QtWebChannel - :mod:`~PyQt5.QtWebChannel` contains classes for transparently accessing :class:`~PyQt5.QtCore.QObject` or QML objects from HTML clients. .. module:: PyQt5.QtWebEngineWidgets - :mod:`~PyQt5.QtWebEngineWidgets` contains classes for a Chromium based implementation of a web browser. This supercedes the :mod:`~PyQt5.QtWebKit` module and provides better and up-to-date support for HTML, CSS and JavaScript features. However it also consumes more resources and doesn't give direct access to the network stack and the HTML document via C++ APIs. .. note:: :mod:`~PyQt5.QtWebEngineWidgets` is not normally available under Windows because of compiler incompatibilities. :mod:`~PyQt5.QtWebEngineWidgets` requires MSVC2013 (or later) but the version used to build Python v3 is MSVC2010. .. module:: PyQt5.QtWebKit - :mod:`~PyQt5.QtWebKit` contains classes for a WebKit2 based implementation of a web browser. .. module:: PyQt5.QtWebKitWidgets - :mod:`~PyQt5.QtWebKitWidgets` contains classes for a WebKit1 based implementation of a web browser for use in :mod:`~PyQt5.QtWidgets` based applications. .. module:: PyQt5.QtWebSockets - :mod:`~PyQt5.QtWebSockets` contains classes that implement the WebSocket protocol described in RFC 6455. .. module:: PyQt5.QtWidgets - :mod:`~PyQt5.QtWidgets` contains classes that provide a set of UI elements to create classic desktop-style user interfaces. .. module:: PyQt5.QtWinExtras :platform: Windows - :mod:`~PyQt5.QtWinExtras` contains additional classes that are specific to Windows, for example providing access to Jump Lists, a progress indicator on a taskbar button, and a thumbnail toolbar. .. module:: PyQt5.QtX11Extras :platform: X11 - :mod:`~PyQt5.QtX11Extras` contains additional classes that are specific to X11. .. module:: PyQt5.QtXml - :mod:`~PyQt5.QtXml` module. This module contains classes that implement SAX and DOM interfaces to Qt's XML parser. .. module:: PyQt5.QtXmlPatterns - :mod:`~PyQt5.QtXmlPatterns` contains classes that provide support for XPath, XQuery, XSLT and XML Schema validation. .. module:: PyQt5.Enginio - :mod:`~PyQt5.Enginio` implements the client-side library for accessing the Qt Cloud Services Managed Application Runtime. .. module:: PyQt5.Qt - :mod:`~PyQt5.Qt` consolidates the classes contained in all of the modules described above into a single module. This has the advantage that you don't have to worry about which underlying module contains a particular class. It has the disadvantage that it loads the whole of the Qt framework, thereby increasing the memory footprint of an application. Whether you use this consolidated module, or the individual component modules is down to personal taste. .. module:: PyQt5.uic - :mod:`~PyQt5.uic` contains classes for handling the ``.ui`` files created by Qt Designer that describe the whole or part of a graphical user interface. It includes classes that load a ``.ui`` file and render it directly, and classes that generate Python code from a ``.ui`` file for later execution. PyQt5 contains plugins that enable Qt Designer and :program:`qmlscene` to be extended using Python code. See :ref:`ref-designer-plugins` and :ref:`ref-integrating-qml` respectively for the details. PyQt5 also contains a number of utility programs. - :program:`pyuic5` corresponds to the Qt :program:`uic` utility. It converts :mod:`~PyQt5.QtWidgets` based GUIs created using Qt Designer to Python code. - :program:`pyrcc5` corresponds to the Qt :program:`rcc` utility. It embeds arbitrary resources (eg. icons, images, translation files) described by a resource collection file in a Python module. - :program:`pylupdate5` corresponds to the Qt :program:`lupdate` utility. It extracts all of the translatable strings from Python code and creates or updates ``.ts`` translation files. These are then used by Qt Linguist to manage the translation of those strings. The `DBus `__ support module is installed as :mod:`dbus.mainloop.pyqt5`. This module provides support for the Qt event loop in the same way that the :mod:`dbus.mainloop.glib` included with the standard ``dbus-python`` bindings package provides support for the GLib event loop. The API is described in :ref:`ref-dbus`. It is only available if the ``dbus-python`` v0.80 (or later) bindings package is installed. The :mod:`~PyQt5.QtDBus` module provides a more Qt-like interface to DBus. When PyQt5 is configured a file called :file:`PyQt5.api` is generated. This can be used by the `QScintilla `_ editor component to enable the use of auto-completion and call tips when editing PyQt5 code. The API file is installed automatically if `QScintilla `_ is already installed. PyQt5 includes a large number of examples. These are ports to Python of many of the C++ examples provided with Qt. They can be found in the :file:`examples` directory. Finally, PyQt5 contains the ``.sip`` files used by SIP to generate PyQt5 itself. These can be used by developers of bindings of other Qt based class libraries. An Explanation of Version Numbers --------------------------------- Historically the version number of PyQt bears no relation to the version of Qt supported. It's no longer even true that PyQt4 requires Qt v4 as it will also build against Qt v5. People sometimes mistakenly believe that, for example, PyQt4 v4.8 is needed when building against Qt v4.8. When refering to a version number we assume it consists of three numbers separated by a dot. These are the major number, the minor number and the maintenance number. The major number will always be ``5``. The maintenance number may be omitted if it is ``0``. Starting with PyQt5 the version number of PyQt5 is tied, to a certain extent, to the version of Qt v5. This is based on the following assumptions. - All parts of the Qt API will be supported throughout the life of Qt v5 even though some may be marked as deprecated or obsolete at some point. - When new parts of the Qt API are introduced the minor number of the version will be increased and the maintenance number will be reset to ``0``. Therefore, for PyQt5 v5.n.* the following are true. - It will build against any version of Qt v5, but will not support any new features introduced in Qt v5.n+1 or later. - It will support all the features of supported modules of Qt v5.n or earlier. - Support for new modules may be added to PyQt5 at any time. This would result in a change of maintenance number only. The maintenance numbers of PyQt5 and Qt v5 are entirely unrelated to each other. So, for example, PyQt5 v5.1 will build against Qt v5.2 but will not support any new features introduced in Qt v5.2. PyQt5 v5.1 will support all the features of supported modules of Qt v5.0 and those new features introduced in Qt v5.1. In summary, just as with PyQt4, you should always try and use the latest version of PyQt5 no matter what version of Qt v5 you are using. PyQt-gpl-5.5.1/doc/sphinx/metaobjects.rst0000644000076500000240000000364412552164565020410 0ustar philstaff00000000000000Other Support for Dynamic Meta-objects ====================================== PyQt5 creates a :class:`~PyQt5.QtCore.QMetaObject` instance for any Python sub-class of :class:`~PyQt5.QtCore.QObject` without the need for the equivalent of Qt's ``Q_OBJECT`` macro. Most of a :class:`~PyQt5.QtCore.QMetaObject` is populated automatically by defining signals, slots and properties as described in previous sections. In this section we cover the ways in which the remaining parts of a :class:`~PyQt5.QtCore.QMetaObject` are populated. :func:`~PyQt5.QtCore.Q_ENUMS` and :func:`~PyQt5.QtCore.Q_FLAGS` --------------------------------------------------------------- .. versionadded:: 5.2 The :func:`~PyQt5.QtCore.Q_ENUMS` and :func:`~PyQt5.QtCore.Q_FLAGS` functions declare enumerated types and flag types respectively that are published in the :class:`~PyQt5.QtCore.QMetaObject`. The typical use in PyQt5 is to declare symbolic constants that can be used by QML. Each function takes a number of Python type objects that implement the enumerated or flag type. For example:: from PyQt5.QtCore import Q_ENUMS, Q_FLAGS, QObject class Instruction(QObject): class Direction: Up, Down, Left, Right = range(4) Q_ENUMS(Direction) class Status: Null = 0x00 Urgent = 0x01 Acknowledged = 0x02 Completed = 0x04 Q_FLAGS(Status) :func:`~PyQt5.QtCore.Q_CLASSINFO` --------------------------------- The :func:`~PyQt5.QtCore.Q_CLASSINFO` function is used in the same way as Qt's macro of the same name, i.e. it is called from a class's definition in order to specify a name/value pair that is placed in the class's :class:`~PyQt5.QtCore.QMetaObject`. For example it is used by QML to define the default property of a class:: from PyQt5.QtCore import Q_CLASSINFO, QObject class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') PyQt-gpl-5.5.1/doc/sphinx/multiinheritance.rst0000644000076500000240000001000512552164565021441 0ustar philstaff00000000000000.. _ref-cooperative-multiinheritance: Support for Cooperative Multi-inheritance ========================================= .. note:: This section is not about sub-classing from more that one Qt class. Cooperative multi-inheritance is a technique for implementing classes that inherit multiple super-classes - typically a main super-class and one or more mixin classes that add additional behaviour. It makes it easy to add new mixins at a later date to further extend the behavior, without needing to change either the implementation of the class or any existing code that creates an instance of the class. The technique requires that all the super-class's ``__init__`` methods follow the same pattern in the way that they handle unrecognised keyword arguments and use ``super()`` to invoke their own super-class's ``__init__`` methods. PyQt5's classes follow this pattern. See Raymond Hettinger's `Python's super() considered super! `__ blog post for some more background on the subject. As an example, let's say we have a class that represents a person, and that a person has a name. The following might be an initial implementation:: class Person(QObject): def __init__(self, name, parent=None) QObject.__init__(self, parent) self.name = name An instance would normally be created in one of the following ways:: person = Person("Joe") person = Person("Joe", some_parent) This approach has some limitations: - Only a sub-set of the :class:`~PyQt5.QtCore.QObject` API is exposed. For example you cannot set the value of a Qt property or connect a signal by passing appropriate keyword arguments to ``Person.__init__``. - Adding another class to ``Person``'s list of super-classes means that its ``__init__`` implementation needs to be changed. If the new mixin takes non-optional arguments then every call to create a ``Person`` instance will need changing. Consider this alternative implementation:: class Person(QObject): def __init__(self, name, **kwds): super().__init__(**kwds) self.name = name The difference is that we only handle arguments that are used by the ``Person`` class itself and we punt all the other arguments to the super-classes by calling ``super()``. With this implementation an instance would normally created in one of the following ways:: person = Person("Joe") person = Person("Joe", parent=some_parent) Here the difference is that we are using keyword arguments to specify any arguments that are not handled by the ``Person`` class itself. Note that we could use keyword arguments for all arguments - whether or not you do so is down to personal choice. The limitations of the first implementation no longer apply. For example, without any further changes we can also do this:: person = Person("Joe", destroyed=some_callable) Let's say we now want to extend the behaviour of the ``Person`` class by adding a mixin that handles a person's age. The implementation of the mixin would be as follows:: class Age(object): def __init__(self, age=0, **kwds): super().__init__(**kwds) self.age = age This follows a similar pattern to our ``Person`` implementation, but notice that we have provided the ``age`` argument with a default value. The following is our new ``Person`` implementation:: class Person(QObject, Age): def __init__(self, name, **kwds): super().__init__(**kwds) self.name = name The only change we have had to make is to add ``Age`` to ``Person``'s list of super-classes. More importantly we do not need to change any call to create a ``Person`` instance. If we do want to create a ``Person`` instance with a non-default age then we simply pass it as a keyword argument as follows:: person = Person("Joe", age=38) This technique increases the use of keyword arguments - while this means a bit more typing, it significantly increases the readability of application code. PyQt-gpl-5.5.1/doc/sphinx/opengl.rst0000644000076500000240000000153612552164565017372 0ustar philstaff00000000000000.. _ref-opengl: Support for OpenGL ================== When compiled against Qt v5.1 or later, PyQt5 implements a set of either desktop QOpenGL bindings or OpenGL ES v2 bindings depending on how Qt was configured. This removes the dependency on any third-party OpenGL bindings such as :mod:`PyOpenGL`. At the moment the desktop bindings are for OpenGL v2.0 and are mostly complete. Other versions will be added in later releases. If there are calls which you need, but are currently unsupported, then please ask for the support to be added. Obtaining an object that implements the bindings for a particular OpenGL version and profile is done in the same way as it is done from C++, i.e. by calling :meth:`~PyQt5.QtGui.QOpenGLContext.versionFunctions`. In addition, the bindings object also contains attributes corresponding to all of the OpenGL constants. PyQt-gpl-5.5.1/doc/sphinx/pickle.rst0000644000076500000240000000122012552164565017343 0ustar philstaff00000000000000Support for Pickling ==================== The following PyQt5 classes may be pickled. - :class:`~PyQt5.QtCore.QByteArray` - :class:`~PyQt5.QtGui.QColor` - :class:`~PyQt5.QtCore.QDate` - :class:`~PyQt5.QtCore.QDateTime` - :class:`~PyQt5.QtGui.QKeySequence` - :class:`~PyQt5.QtCore.QLine` - :class:`~PyQt5.QtCore.QLineF` - :class:`~PyQt5.QtCore.QPoint` - :class:`~PyQt5.QtCore.QPointF` - :class:`~PyQt5.QtGui.QPolygon` - :class:`~PyQt5.QtCore.QRect` - :class:`~PyQt5.QtCore.QRectF` - :class:`~PyQt5.QtCore.QSize` - :class:`~PyQt5.QtCore.QSizeF` - :class:`~PyQt5.QtCore.QTime` Also all named enums (:attr:`PyQt5.QtCore.Qt.Key` for example) may be pickled. PyQt-gpl-5.5.1/doc/sphinx/platforms.rst0000644000076500000240000000172112567127140020103 0ustar philstaff00000000000000Platform Specific Issues ======================== OS X ---- Starting with v5.5.0 the OS X version of Qt is built so that the Qt frameworks are built using the *rpath* mechanism. Unfortunately this causes problems for plugin based applications. The Python interpreter (with it's use of dynamically loaded C/C++ extension modules) is one such application. The problem arises when a Qt framework tries to dynamically load it's own plugins and those plugins are also linked against a Qt framework. PyQt v5.5 (and later) implements a workaround for the most common situation which is the loading of the QPA platform plugin (``libqcocoa.dylib``) by the :mod:`QtGui` module. However the problem can arise with other plugins. The solution is the set the :envvar:`DYLD_FRAMEWORK_PATH` environment variable to the name of the ``lib`` directory in your Qt installation, i.e. the directory containg the Qt frameworks. Hopefully the problem with be fixed in a later version of Qt. PyQt-gpl-5.5.1/doc/sphinx/pyqt4_differences.rst0000644000076500000240000002130312552164565021516 0ustar philstaff00000000000000Differences Between PyQt4 and PyQt5 =================================== PyQt5 is not compatibile with PyQt4 (although experience shows that the effort in porting applications from PyQt4 to PyQt5 is not great). This section describes the main differences between the two. Supported Python Versions ------------------------- Versions of Python earlier than v2.6 are not supported. Deprecated Features ------------------- PyQt5 does not support any parts of the Qt API that are marked as deprecated or obsolete in Qt v5.0. However it is possible that some of these have been included accidentaly. These are considered bugs and will be removed if found. Multiple APIs ------------- PyQt4 supports a number of different API versions (``QString``, :class:`~PyQt5.QtCore.QVariant` etc.). With the exception of :class:`~PyQt5.QtCore.QVariant`, PyQt5 only implements v2 of those APIs for all versions of Python. The changed support for :class:`~PyQt5.QtCore.QVariant`, including the removal of ``QPyNullVariant``, is described in :ref:`ref-qvariant`. Old-style Signals and Slots --------------------------- PyQt4's old-style signals and slots are not supported. Therefore the following are not implemented in PyQt5: - ``QObject.connect()`` - ``QObject.emit()`` - ``SIGNAL()`` - ``SLOT()`` All methods that had arguments that are usually the results of calls to ``SIGNAL()`` or ``SLOT()`` are no longer supported. There will always be an equivalent that takes a bound signal or callable respectively. In addition the following methods have differences: - :meth:`~PyQt5.QtCore.QObject.disconnect` takes no arguments and disconnects all connections to the :class:`~PyQt5.QtCore.QObject` instance. New-style Signals and Slots --------------------------- Qt implements signals with an optional argument as two separate signals, one with the argument and one without it. PyQt4 exposed both of these allowing you to connect to each of them. However, when emitting the signal, you had to use the signal appropriate to the number of arguments being emitted. PyQt5 exposes only the signal where all arguments are specified. However it allows any optional arguments to be omitted when emitting the signal. Unlike PyQt4, PyQt5 supports the definition of properties, signals and slots in classes not sub-classed from :class:`~PyQt5.QtCore.QObject` (i.e. in mixins). ``QtDeclarative``, ``QtScript`` and ``QtScriptTools`` Modules ------------------------------------------------------------- PyQt4's ``QtDeclarative``, ``QtScript`` and ``QtScriptTools`` modules are not supported. These have been replaced by PyQt5's :mod:`~PyQt5.QtQml` and :mod:`~PyQt5.QtQuick` modules. Unlike PyQt4, PyQt5 supports the creation of Python objects from QML. ``QtGui`` Module ---------------- PyQt4's ``QtGui`` module has been split into PyQt5's :mod:`~PyQt5.QtGui`, :mod:`~PyQt5.QtPrintSupport` and :mod:`~PyQt5.QtWidgets` modules. ``QtOpenGL`` Module ------------------- Only the :class:`~PyQt5.QtOpenGL.QGLContext`, :class:`~PyQt5.QtOpenGL.QGLFormat` and :class:`~PyQt5.QtOpenGL.QGLWidget` classes are supported by PyQt5. ``QtWebKit`` Module ------------------- PyQt4's ``QtWebKit`` module has been split into PyQt5's :mod:`~PyQt5.QtWebKit` and :mod:`~PyQt5.QtWebKitWidgets` modules. ``pyqtconfig`` Module --------------------- PyQt4's ``pyqtconfig`` module is not supported. The section :ref:`ref-build-system` describes the support that PyQt5 provides to third-party packages (e.g. `QScintilla `__) that want to build on top of PyQt5. ``dbus.mainloop.qt`` Module --------------------------- PyQt4's ``dbus.mainloop.qt`` module is called :mod:`dbus.mainloop.pyqt5` in PyQt5. This allows them to be installed side by side. Their functionality is identical. ``QDataStream`` --------------- The :meth:`~PyQt5.QtCore.QDataStream.readUInt8`, :meth:`~PyQt5.QtCore.QDataStream.readInt8`, :meth:`~PyQt5.QtCore.QDataStream.writeUInt8` and :meth:`~PyQt5.QtCore.QDataStream.writeInt8` methods all interpret the values being read and written as numeric values. In PyQt4 they are interpreted as single character strings. ``QFileDialog`` --------------- The ``getOpenFileNameAndFilter()``, ``getOpenFileNamesAndFilter()`` and ``getSaveFileNameAndFilter()`` methods of PyQt4's ``QFileDialog`` have now been renamed :meth:`~PyQt5.QtWidgets.QFileDialog.getOpenFileName`, :meth:`~PyQt5.QtWidgets.QFileDialog.getOpenFileNames` and :meth:`~PyQt5.QtWidgets.QFileDialog.getSaveFileName` respectively in PyQt5. PyQt4's implementations of ``getOpenFileName()``, ``getOpenFileNames()`` and ``getSaveFileName()`` are not supported in PyQt5. ``QGraphicsItemAnimation`` -------------------------- Support for the deprecated ``QGraphicsItemAnimation`` class has been removed. If porting an existing PyQt4 application then consider first updating it to use :class:`~PyQt5.QtCore.QPropertyAnimation` instead. ``QMatrix`` ----------- Support for the deprecated ``QMatrix`` class has been removed. If porting an existing PyQt4 application then consider first updating it to use :class:`~PyQt5.QtGui.QTransform` instead. ``QPyTextObject`` ----------------- PyQt4 implements the ``QPyTextObject`` as a workaround for the inability to define a Python class that is sub-classed from more than one Qt class. PyQt5 does support the ability to define a Python class that is sub-classed from more than one Qt class so long as all but one of the Qt classes are interfaces, i.e. they have been declared in C++ as such using ``Q_DECLARE_INTERFACE``. Therefore ``QPyTextObject`` is not implemented in PyQt5. ``QSet`` -------- In PyQt4, ``QSet`` was implemented as a list in Python v2 and a set in Python v3. In PyQt5 ``QSet`` is always implemented as a set. ``pyuic5`` ---------- :program:`pyuic5` does not support the ``--pyqt3-wrapper`` flag of ``pyuic4``. ``pyrcc5`` ---------- :program:`pyrcc5` does not support the ``-py2`` and ``-py3`` flags of ``pyrcc4``. The output of :program:`pyrcc5` is compatible with all versions of Python starting with Python v2.6. Cooperative Multi-inheritance ----------------------------- Unlike PyQt4, PyQt5 classes implement cooperative multi-inheritance. In other words PyQt5 classes always do the equivalent of the following Python v3 code in their ``__init__`` methods (where ``kwds`` is a dictionary of unused keyword arguments):: super().__init__(**kwds) This means that those unused keyword arguments are passed to the ``__init__`` methods of any mixin classes. Those mixin classes must cooperate, i.e. they must make a similar call if they have their own ``__init__`` implementations. When using multiple inheritance in PyQt4 it is common to call the ``__init__`` methods of the super-classes explicitly, for example:: class MyQObject(QObject, MyMixin): def __init__(self, parent, mixin_arg): QObject.__init__(self, parent) MyMixin.__init__(self, mixin_arg) # Other initialisation... In PyQt5 the above would cause ``MyMixin.__init__`` to be called twice. Instead it should be implemented as follows:: class MyQObject(QObject, MyMixin): def __init__(self, **kwds): super().__init__(**kwds) # Other initialisation... Note that if there is no other initialisation to do then the ``__init__`` method isn't actually needed. The mixin class should be implemented as follows:: class MyMixin: def __init__(self, mixin_arg, **kwds): super().__init__(**kwds) # Other initialisation... If a class only inherits from a single class then it can still call the super-class's ``__init__`` method explicitly (although it is recommended to use ``super()``). See :ref:`ref-cooperative-multiinheritance`. Releasing the GIL ----------------- The GIL is only released when it is known to be needed. PyQt4 always released the GIL when calling Qt. Object Destruction on Exit -------------------------- When the Python interpreter exits PyQt4 (by default) calls the C++ destructor of all wrapped instances that it owns. This happens in a random order and can therefore cause the interpreter to crash. This behavior can be disabled by calling the :func:`sip.setdestroyonexit` function. PyQt5 always calls :func:`sip.setdestroyonexit` automatically. However if the wrapped instances have not been created at the module level and have instead been created in a function then the problem will still exist. For example, do not do the following:: def main(): app = QApplication(sys.argv) w = QWidget() w.show() app.exec() if __name__ == '__main__': main() Instead, do the following:: if __name__ == '__main__': app = QApplication(sys.argv) w = QWidget() w.show() app.exec() PyQt-gpl-5.5.1/doc/sphinx/pyqt_qsettings.rst0000644000076500000240000000465712552164565021213 0ustar philstaff00000000000000Support for :class:`~PyQt5.QtCore.QSettings` ============================================ Qt provies the :class:`~PyQt5.QtCore.QSettings` class as a platform independent API for the persistent storage and retrieval of application settings. Settings are retrieved using the :meth:`~PyQt5.QtCore.QSettings.value` method. However the type of the value returned may not be what is expected. Some platforms only ever store string values which means that the type of the original value is lost. Therefore a setting with an integer value of ``42`` may be retrieved (on some platforms) as a string value of ``'42'``. As a solution to this problem PyQt5's implementation of :meth:`~PyQt4.QtCore.QSettings.value` takes an optional third argument called ``type``. This is either a Python type object, e.g. ``int``, or a string that is the name of a C++ type, e.g. ``'QStringList'``. The value returned will be an object of the requested type. For example:: from PyQt5.QtCore import QSettings, QPoint settings = QSettings('foo', 'foo') settings.setValue('int_value', 42) settings.setValue('point_value', QPoint(10, 12)) # This will write the setting to the platform specific storage. del settings settings = QSettings('foo', 'foo') int_value = settings.value('int_value', type=int) print("int_value: %s" % repr(int_value)) point_value = settings.value('point_value', type=QPoint) print("point_value: %s" % repr(point_value)) When this is executed then the following will be displayed for all platforms:: int_value: 42 point_value: PyQt5.QtCore.QPoint(10, 20) If the value of the setting is a container (corresponding to either ``QVariantList``, ``QVariantMap`` or ``QVariantHash``) then the type is applied to the contents of the container. For example:: from PyQt5.QtCore import QSettings settings = QSettings('foo', 'foo') settings.setValue('list_value', [1, 2, 3]) settings.setValue('dict_value', {'one': 1, 'two': 2}) # This will write the setting to the platform specific storage. del settings settings = QSettings('foo', 'foo') list_value = settings.value('list_value', type=int) print("list_value: %s" % repr(list_value)) dict_value = settings.value('dict_value', type=int) print("dict_value: %s" % repr(dict_value)) When this is executed then the following will be displayed for all platforms:: list_value: [1, 2, 3] dict_value: {'one': 1, 'two': 2} PyQt-gpl-5.5.1/doc/sphinx/pyqt_qvariant.rst0000644000076500000240000000414012552164565021002 0ustar philstaff00000000000000.. _ref-qvariant: Support for :class:`~PyQt5.QtCore.QVariant` =========================================== PyQt4 implements two APIs for :class:`~PyQt5.QtCore.QVariant`. v1 (the default for Python v2) exposes the :class:`~PyQt5.QtCore.QVariant` class to Python and requires applications to explicitly convert a :class:`~PyQt5.QtCore.QVariant` to the actual value. v2 (the default for Python v3) does not expose the :class:`~PyQt5.QtCore.QVariant` class to Python and automatically converts a :class:`~PyQt5.QtCore.QVariant` to the actual value. While this is usually the best thing to do, it does raise problems of its own: - Information is lost when converting between a C++ :class:`~PyQt5.QtCore.QVariant` and the corresponding Python object. For example a :class:`~PyQt5.QtCore.QVariant` distinguishes between signed and unsigned integers but Python doesn't. Normally this doesn't matter but some applications may need to make the distinction. - There is no obvious way to represent a null :class:`~PyQt5.QtCore.QVariant` as a standard Python object. PyQt4 introduced the ``QPyNullVariant`` class to address this problem. Multiple APIs are intended to help manage an application's use of an old API to a newer, incompatible API. They cannot be used to temporarily change the behaviour - modules that rely on different API versions cannot be used in the same application. In PyQt5 the implementation of :class:`~PyQt5.QtCore.QVariant` is different to those of PyQt4. By default the behaviour is the same as PyQt4's v2 API. However it is possible to temporarily suppress the automatic conversion of a C++ :class:`~PyQt5.QtCore.QVariant` to a Python object and to return a wrapped Python :class:`~PyQt5.QtCore.QVariant` instead - behaviour similar to PyQt4's v1 API - by calling the :func:`sip.enableautoconversion` function. The actual value of a wrapped Python :class:`~PyQt5.QtCore.QVariant` is obtained by calling its :meth:`~PyQt5.QtCore.QVariant.value` method. (Note that in PyQt4's v1 API this method is called ``toPyObject()``.) PyQt5 does not support the ``QPyNullVariant`` class as it is no longer needed. PyQt-gpl-5.5.1/doc/sphinx/python_shell.rst0000644000076500000240000000202012552164565020603 0ustar philstaff00000000000000Using PyQt5 from the Python Shell ================================= PyQt5 installs an input hook (using ``PyOS_InputHook``) that processes events when an interactive interpreter is waiting for user input. This means that you can, for example, create widgets from the Python shell prompt, interact with them, and still being able to enter other Python commands. For example, if you enter the following in the Python shell:: >>> from PyQt5.QtWidgets import QApplication, QWidget >>> a = QApplication([]) >>> w = QWidget() >>> w.show() >>> w.hide() >>> The widget would be displayed when ``w.show()`` was entered and hidden as soon as ``w.hide()`` was entered. The installation of an input hook can cause problems for certain applications (particularly those that implement a similar feature using different means). The :mod:`~PyQt5.QtCore` module contains the :func:`~PyQt5.QtCore.pyqtRemoveInputHook` and :func:`~PyQt5.QtCore.pyqtRestoreInputHook` functions that remove and restore the input hook respectively. PyQt-gpl-5.5.1/doc/sphinx/qml.rst0000644000076500000240000003126012567550363016675 0ustar philstaff00000000000000.. _ref-integrating-qml: Integrating Python and QML ========================== Qt includes QML as a means of declaratively describing a user interface and using JavaScript as a scripting language within it. It is possible to write complete standalone QML applications, or to combine them with C++. PyQt5 allows QML to be integrated with Python in exactly the same way. In particular: - Python types that are sub-classed from :class:`~PyQt5.QtCore.QObject` can be registered with QML. - Instances of registered Python types can be created and made available to QML scripts. - Instances of registered Python types can be created by QML scripts. - Singleton instances of registered Python types can be created automatically by a QML engine and made available to QML scripts. - QML scripts interact with Python objects through their properties, signals and slots. - Python properties, signals and slots can be given revision numbers that only those implemented by a specific version are made available to QML. Registering Python Types ------------------------ Registering Python types with QML is done in the same way is it is done with C++ classes, i.e. using the :func:`~PyQt5.QtQml.qmlRegisterType`, :func:`~PyQt5.QtQml.qmlRegisterSingletonType`, :func:`~PyQt5.QtQml.qmlRegisterUncreatableType` and :func:`~PyQt5.QtQml.qmlRegisterRevision` functions. In C++ these are template based functions that take the C++ class, and sometimes a revision, as template arguments. In the Python implementation these are simply passed as the first arguments to the respective functions. A Simple Example ---------------- The following simple example demonstates the implementation of a Python class that is registered with QML. The class defines two properties. A QML script is executed which creates an instance of the class and sets the values of the properties. That instance is then returned to Python which then prints the values of those properties. Hopefully the comments are self explanatory:: import sys from PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import qmlRegisterType, QQmlComponent, QQmlEngine # This is the type that will be registered with QML. It must be a # sub-class of QObject. class Person(QObject): def __init__(self, parent=None): super().__init__(parent) # Initialise the value of the properties. self._name = '' self._shoeSize = 0 # Define the getter of the 'name' property. The C++ type of the # property is QString which Python will convert to and from a string. @pyqtProperty('QString') def name(self): return self._name # Define the setter of the 'name' property. @name.setter def name(self, name): self._name = name # Define the getter of the 'shoeSize' property. The C++ type and # Python type of the property is int. @pyqtProperty(int) def shoeSize(self): return self._shoeSize # Define the setter of the 'shoeSize' property. @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize # Create the application instance. app = QCoreApplication(sys.argv) # Register the Python type. Its URI is 'People', it's v1.0 and the type # will be called 'Person' in QML. qmlRegisterType(Person, 'People', 1, 0, 'Person') # Create a QML engine. engine = QQmlEngine() # Create a component factory and load the QML script. component = QQmlComponent(engine) component.loadUrl(QUrl('example.qml')) # Create an instance of the component. person = component.create() if person is not None: # Print the value of the properties. print("The person's name is %s." % person.name) print("They wear a size %d shoe." % person.shoeSize) else: # Print all errors that occurred. for error in component.errors(): print(error.toString()) The following is the ``example.qml`` QML script that is executed:: import People 1.0 Person { name: "Bob Jones" shoeSize: 12 } Using :class:`~PyQt5.QtQml.QQmlListProperty` -------------------------------------------- Defining list-based properties in Python that can be updated from QML is done using the :class:`~PyQt5.QtQml.QQmlListProperty` class. However the way it is used in Python is slightly different to the way it is used in C++. In the simple case :class:`~PyQt5.QtQml.QQmlListProperty` wraps a Python list that is usually an instance sttribute, for example:: class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) # The list which will be accessible from QML. self._guests = [] @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) QML can now manipulate the Python list of ``Person`` instances. :class:`~PyQt5.QtQml.QQmlListProperty` also acts as a proxy for the Python list so that the following can be written:: for guest in party.guests: print("Guest:", guest.name) :class:`~PyQt5.QtQml.QQmlListProperty` can also be used to wrap a *virtual* list. The following code fragment is taken from the ``chapter5-listproperties.py`` example included with PyQt5:: class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) ``PieChart`` and ``PieSlice`` are Quick items that are registered using :func:`~PyQt5.QtQml.qmlRegisterType`. Instances of both can be created from QML. ``slices`` is a property of ``PieChart`` that, as far as QML is concerned, is a list of ``PieSlice`` instances. The :func:`~PyQt5.QtCore.pyqtProperty` decorator specifies that the property is a :class:`~PyQt5.QtQml.QQmlListProperty`, that its name is ``slices`` and that the ``slices()`` function is its getter. The getter returns an instance of :class:`~PyQt5.QtQml.QQmlListProperty`. This specifies that elements of the list should be of type ``PieSlice``, that the ``PieChart`` instance (i.e. ``self``) has the property, and defines the callable that will be invoked in order to append a new element to the list. The ``append`` callable is passed two arguments: the object whose property is to be updated (i.e. the ``PyChart`` instance), and the element to be appended (i.e. a ``PieSlice`` instance). Here we simply set the chart as the slice's parent item. Note that there isn't actually a list anywhere - this is because, in this particular example, one isn't needed. The signature of the ``append`` callable is slightly different to that of the corresponding C++ function. In C++ the first argument is the :class:`~PyQt5.QtQml.QQmlListProperty` instance rather than the ``PyChart`` instance. The signatures of the ``at``, ``clear`` and ``count`` callables are different in the same way. Using Attached Properties ------------------------- In order to use attached properties in C++, three steps need to be taken. - A type that has attached properties must implement a static function called ``qmlAttachedProperties``. This is a factory that creates an instance of the properties object to attach. - A type that has attached properties needs to be defined as such using the ``QML_DECLARE_TYPEINFO`` macro with the ``QML_HAS_ATTACHED_PROPERTIES`` argument. - The instance of an attached properties object is retrieved using the ``qmlAttachedPropertiesObject()`` template function. The template type is the type that has the attached properties. PyQt5 uses similar, but slightly simpler steps to achieve the same thing. - When calling :func:`~PyQt5.QtQml.qmlRegisterType` to register a type that has attached properties the type of the properties object is passed as the ``attachedProperties`` argument. This type will be used as the factory for creating an instance of the properties object. - The instance of an attached properties object is retrieved using the :func:`~PyQt5.QtQml.qmlAttachedPropertiesObject` function in the same way that you would from C++. Just like :func:`~PyQt5.QtQml.qmlRegisterType`, :func:`~PyQt5.QtQml.qmlAttachedPropertiesObject` takes an additional first argument that is the type that, in C++, would be the template argument. See the ``attach.py`` example included with PyQt5 for a complete example showing the use of attached properties. Using Property Value Sources ---------------------------- Property values sources are implemented in PyQt5 in the same way as they are implemented in C++. Simply sub-class from both :class:`~PyQt5.QtCore.QObject` and :class:`~PyQt5.QtQml.QQmlPropertyValueSource` and provide an implementation of the :meth:`~PyQt5.QtQml.QQmlPropertyValueSource.setTarget` method. Using :class:`~PyQt5.QtQml.QQmlParserStatus` -------------------------------------------- Monitoring the QML parser status is implemented in PyQt5 in the same way as it is implemented in C++. Simply sub-class from both :class:`~PyQt5.QtCore.QObject` and :class:`~PyQt5.QtQml.QQmlParserStatus` and provide implementations of the :meth:`~PyQt5.QtQml.QQmlParserStatus.classBegin` and :meth:`~PyQt5.QtQml.QQmlParserStatus.componentComplete` methods. Writing Python Plugins for :program:`qmlscene` ---------------------------------------------- Qt allows plugins that implement QML modules to be written that can be dynamically loaded by a C++ application (e.g. :program:`qmlscene`). These plugins are sub-classes of :class:`~PyQt5.QtQml.QQmlExtensionPlugin`. PyQt5 supports exactly the same thing and allows those plugin to be written in Python. In other words it is possible to provide QML extensions written in Python to a C++ application, and to provide QML extensions written in C++ to a Python application. PyQt5 provides a QML plugin called ``pyqt5qmlplugin``. This acts as a wrapper around the Python code that implements the plugin. It handles the loading of the Python interpreter, locating and importing the Python module that contains the implementation of :class:`~PyQt5.QtQml.QQmlExtensionPlugin`, creating an instance of that class, and calling the instance's :meth:`~PyQt5.QtQml.QQmlExtensionPlugin.registerTypes` method. By default the ``pyqt5qmlplugin`` is installed in the ``PyQt5`` sub-directory of your Qt installation's ``plugin`` directory. .. note:: ``pyqt5qmlplugin`` is the name of the plugin as seen by QML. Its actual filename will be different and operating system dependent. A QML extension module is a directory containing a file called ``qmldir``. The file contains the name of the module and the name of the plugin that implements the module. It may also specify the directory containing the plugin. Usually this isn't needed because the plugin is installed in the same directory. Therefore, for a QML extension module called ``Charts``, the contents of the ``qmldir`` file might be:: module Charts plugin pyqt5qmlplugin /path/to/qt/plugins/PyQt5 The ``pyqt5qmlplugin`` expects to find a Python module in the same directory with a filename ending with ``plugin.py`` or ``plugin.pyw``. In this case the name ``chartsplugin.py`` would be a sensible choice. Before importing this module ``pyqt5qmlplugin`` first places the name of the directory at the start of :attr:`sys.path`. .. note:: ``pyqt5qmlplugin`` has to locate the directory containing the ``qmldir`` file itself. It does this using the same algorithm used by QML, i.e. it searches some standard locations and locations specified by the :envvar:`QML2_IMPORT_PATH` environment variable. When using :program:`qmlscene`, ``pyqt5qmlplugin`` will not know about any additional locations specified by its :option:`-I` option. Therefore, :envvar:`QML2_IMPORT_PATH` should always be used to specify additional locations to search. Due to a limitation in QML it is not possible for multiple QML modules to use the same C++ plugin. In C++ this is not a problem as there is a one-to-one relationship between a module and the plugin. However, when using Python, ``pyqt5qmlplugin`` is used by every module. There are two solutions to this: - on operating systems that support it, place a symbolic link in the directory containing the ``qmldir`` file that points to the actual ``pyqt5qmlplugin`` - make a copy of ``pyqt5qmlplugin`` in the directory containing the ``qmldir`` file. In both cases the contents of the ``qmldir`` file can be simplifed to:: module Charts plugin pyqt5qmlplugin PyQt5 provides an example that can be run as follows:: cd /path/to/examples/quick/tutorials/extending/chapter6-plugins QML2_IMPORT_PATH=. /path/to/qmlscene app.qml PyQt-gpl-5.5.1/doc/sphinx/qt_interfaces.rst0000644000076500000240000000131112552164565020724 0ustar philstaff00000000000000Support for Qt Interfaces ========================= PyQt5 does not, generally, support defining a class that inherits from more than one Qt class. The exception is when inheriting from classes that Qt defines as *interfaces*, for example :class:`~PyQt5.QtGui.QTextObjectInterface`. A Qt interface is an abstract class contains only pure virtual methods and is used as a mixin with (normally) a :class:`~PyQt5.QtCore.QObject` sub-class. It is often used to define the interface that a plugin must implement. Note that PyQt5 does not need an equivalent of Qt's ``Q_INTERFACES`` macro in order to use an interface class. The ``textobject.py`` example includedd with PyQt5 demonstrates the use of an interface. PyQt-gpl-5.5.1/doc/sphinx/qt_properties.rst0000644000076500000240000000724412552164565021010 0ustar philstaff00000000000000Support for Qt Properties ========================= PyQt5 does not support the setting and getting of Qt properties as if they were normal instance attributes. This is because the name of a property often conflicts with the name of the property's getter method. However, PyQt5 does support the initial setting of properties using keyword arguments passed when an instance is created. For example:: act = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) The example also demonstrates the use of a keyword argument to connect a signal to a slot. PyQt5 also supports setting the values of properties (and connecting a signal to a slot) using the :meth:`~PyQt5.QtCore.QObject.pyqtConfigure()` method. For example, the following gives the same results as above:: act = QAction("&Save", self) act.pyqtConfigure(shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) Defining New Qt Properties -------------------------- A new Qt property may be defined using the :func:`~PyQt5.QtCore.pyqtProperty` function. It is used in the same way as the standard Python ``property()`` function. In fact, Qt properties defined in this way also behave as Python properties. .. function:: PyQt5.QtCore.pyqtProperty(type[, fget=None[, fset=None[, freset=None[, fdel=None[, doc=None[, designable=True[, scriptable=True[, stored=True[, user=False[, constant=False[, final=False[, notify=None[, revision=0]]]]]]]]]]]]]) Create a property that behaves as both a Python property and a Qt property. :param type: the type of the property. It is either a Python type object or a string that is the name of a C++ type. :param fget: the optional callable used to get the value of the property. :param fset: the optional callable used to set the value of the property. :param freset: the optional callable used to reset the value of the property to its default value. It is ignored by Python :param fdel: the optional callable used to delete the property. It is ignored by Qt. :param doc: the optional docstring of the property. It is ignored by Qt. :param designable: optionally sets the Qt ``DESIGNABLE`` flag. It is ignored by Python :param scriptable: optionally sets the Qt ``SCRIPTABLE`` flag. It is ignored by Python :param stored: optionally sets the Qt ``STORED`` flag. It is ignored by Python :param user: optionally sets the Qt ``USER`` flag. It is ignored by Python :param constant: optionally sets the Qt ``CONSTANT`` flag. It is ignored by Python :param final: optionally sets the Qt ``FINAL`` flag. It is ignored by Python :param notify: the optional unbound notify signal. It is ignored by Python :param revision: the revision exported to QML. It is ignored by Python :rtype: the property object. It is also possible to use :func:`~PyQt5.QtCore.pyqtProperty` as a decorator in the same way as the standard Python ``property()`` function. The following example shows how to define an ``int`` property with a getter and setter:: from PyQt5.QtCore import QObject, pyqtProperty class Foo(QObject): def __init__(self): QObject.__init__(self) self._total = 0 @pyqtProperty(int) def total(self): return self._total @total.setter def total(self, value): self._total = value If you prefer the Qt terminology you may also use ``write`` instead of ``setter`` (and ``read`` instead of ``getter``). PyQt-gpl-5.5.1/doc/sphinx/resources.rst0000644000076500000240000000173212552164565020116 0ustar philstaff00000000000000The PyQt5 Resource System ========================= PyQt5 supports Qt's resource system. This is a facility for embedding resources such as icons and translation files in an application. This makes the packaging and distribution of those resources much easier. A ``.qrc`` resource collection file is an XML file used to specify which resource files are to be embedded. The application then refers to the resource files by their original names but preceded by a colon. For a full description, including the format of the ``.qrc`` files, see the Qt Resource System in the Qt documentation. :program:`pyrcc5` ----------------- :program:`pyrcc5` is PyQt5's equivalent to Qt's :program:`rcc` utility and is used in exactly the same way. :program:`pyrcc5` reads the ``.qrc`` file, and the resource files, and generates a Python module that only needs to be ``import``\ ed by the application in order for those resources to be made available just as if they were the original files. PyQt-gpl-5.5.1/doc/sphinx/signals_slots.rst0000644000076500000240000003167012552164565020774 0ustar philstaff00000000000000Support for Signals and Slots ============================= One of the key features of Qt is its use of signals and slots to communicate between objects. Their use encourages the development of reusable components. A signal is emitted when something of potential interest happens. A slot is a Python callable. If a signal is connected to a slot then the slot is called when the signal is emitted. If a signal isn't connected then nothing happens. The code (or component) that emits the signal does not know or care if the signal is being used. The signal/slot mechanism has the following features. - A signal may be connected to many slots. - A signal may also be connected to another signal. - Signal arguments may be any Python type. - A slot may be connected to many signals. - Connections may be direct (ie. synchronous) or queued (ie. asynchronous). - Connections may be made across threads. - Signals may be disconnected. Unbound and Bound Signals ------------------------- A signal (specifically an unbound signal) is a class attribute. When a signal is referenced as an attribute of an instance of the class then PyQt5 automatically binds the instance to the signal in order to create a *bound signal*. This is the same mechanism that Python itself uses to create bound methods from class functions. A bound signal has ``connect()``, ``disconnect()`` and ``emit()`` methods that implement the associated functionality. It also has a ``signal`` attribute that is the signature of the signal that would be returned by Qt's ``SIGNAL()`` macro. A signal may be overloaded, ie. a signal with a particular name may support more than one signature. A signal may be indexed with a signature in order to select the one required. A signature is a sequence of types. A type is either a Python type object or a string that is the name of a C++ type. The name of a C++ type is automatically normalised so that, for example, ``QVariant`` can be used instead of the non-normalised ``const QVariant &``. If a signal is overloaded then it will have a default that will be used if no index is given. When a signal is emitted then any arguments are converted to C++ types if possible. If an argument doesn't have a corresponding C++ type then it is wrapped in a special C++ type that allows it to be passed around Qt's meta-type system while ensuring that its reference count is properly maintained. Defining New Signals with :func:`~PyQt5.QtCore.pyqtSignal` ---------------------------------------------------------- PyQt5 automatically defines signals for all Qt's built-in signals. New signals can be defined as class attributes using the :func:`~PyQt5.QtCore.pyqtSignal` factory. .. function:: PyQt5.QtCore.pyqtSignal(types[, name[, revision=0[, arguments=[]]]]) Create one or more overloaded unbound signals as a class attribute. :param types: the types that define the C++ signature of the signal. Each type may be a Python type object or a string that is the name of a C++ type. Alternatively each may be a sequence of type arguments. In this case each sequence defines the signature of a different signal overload. The first overload will be the default. :param name: the name of the signal. If it is omitted then the name of the class attribute is used. This may only be given as a keyword argument. :param revision: the revision of the signal that is exported to QML. This may only be given as a keyword argument. :param arguments: the sequence of the names of the signal's arguments that is exported to QML. This may only be given as a keyword argument. :rtype: an unbound signal The following example shows the definition of a number of new signals:: from PyQt5.QtCore import QObject, pyqtSignal class Foo(QObject): # This defines a signal called 'closed' that takes no arguments. closed = pyqtSignal() # This defines a signal called 'rangeChanged' that takes two # integer arguments. range_changed = pyqtSignal(int, int, name='rangeChanged') # This defines a signal called 'valueChanged' that has two overloads, # one that takes an integer argument and one that takes a QString # argument. Note that because we use a string to specify the type of # the QString argument then this code will run under Python v2 and v3. valueChanged = pyqtSignal([int], ['QString']) New signals should only be defined in sub-classes of :class:`~PyQt5.QtCore.QObject`. They must be part of the class definition and cannot be dynamically added as class attributes after the class has been defined. New signals defined in this way will be automatically added to the class's :class:`~PyQt5.QtCore.QMetaObject`. This means that they will appear in Qt Designer and can be introspected using the :class:`~PyQt5.QtCore.QMetaObject` API. Overloaded signals should be used with care when an argument has a Python type that has no corresponding C++ type. PyQt5 uses the same internal C++ class to represent such objects and so it is possible to have overloaded signals with different Python signatures that are implemented with identical C++ signatures with unexpected results. The following is an example of this:: class Foo(QObject): # This will cause problems because each has the same C++ signature. valueChanged = pyqtSignal([dict], [list]) Connecting, Disconnecting and Emitting Signals ---------------------------------------------- Signals are connected to slots using the :meth:`connect` method of a bound signal. .. method:: connect(slot[, type=PyQt5.QtCore.Qt.AutoConnection[, no_receiver_check=False]]) Connect a signal to a slot. An exception will be raised if the connection failed. :param slot: the slot to connect to, either a Python callable or another bound signal. :param type: the type of the connection to make. :param no_receiver_check: suppress the check that the underlying C++ receiver instance still exists and deliver the signal anyway. Signals are disconnected from slots using the :meth:`disconnect` method of a bound signal. .. method:: disconnect([slot]) Disconnect one or more slots from a signal. An exception will be raised if the slot is not connected to the signal or if the signal has no connections at all. :param slot: the optional slot to disconnect from, either a Python callable or another bound signal. If it is omitted then all slots connected to the signal are disconnected. Signals are emitted from using the :meth:`emit` method of a bound signal. .. method:: emit(\*args) Emit a signal. :param args: the optional sequence of arguments to pass to any connected slots. The following code demonstrates the definition, connection and emit of a signal without arguments:: from PyQt5.QtCore import QObject, pyqtSignal class Foo(QObject): # Define a new signal called 'trigger' that has no arguments. trigger = pyqtSignal() def connect_and_emit_trigger(self): # Connect the trigger signal to a slot. self.trigger.connect(self.handle_trigger) # Emit the signal. self.trigger.emit() def handle_trigger(self): # Show that the slot has been called. print "trigger signal received" The following code demonstrates the connection of overloaded signals:: from PyQt5.QtWidgets import QComboBox class Bar(QComboBox): def connect_activated(self): # The PyQt5 documentation will define what the default overload is. # In this case it is the overload with the single integer argument. self.activated.connect(self.handle_int) # For non-default overloads we have to specify which we want to # connect. In this case the one with the single string argument. # (Note that we could also explicitly specify the default if we # wanted to.) self.activated[str].connect(self.handle_string) def handle_int(self, index): print "activated signal passed integer", index def handle_string(self, text): print "activated signal passed QString", text Connecting Signals Using Keyword Arguments ------------------------------------------ It is also possible to connect signals by passing a slot as a keyword argument corresponding to the name of the signal when creating an object, or using the :meth:`~PyQt5.QtCore.QObject.pyqtConfigure` method. For example the following three fragments are equivalent:: act = QAction("Action", self) act.triggered.connect(self.on_triggered) act = QAction("Action", self, triggered=self.on_triggered) act = QAction("Action", self) act.pyqtConfigure(triggered=self.on_triggered) The :func:`~PyQt5.QtCore.pyqtSlot` Decorator -------------------------------------------- Although PyQt5 allows any Python callable to be used as a slot when connecting signals, it is sometimes necessary to explicitly mark a Python method as being a Qt slot and to provide a C++ signature for it. PyQt5 provides the :func:`~PyQt5.QtCore.pyqtSlot` function decorator to do this. .. function:: PyQt5.QtCore.pyqtSlot(types[, name[, result[, revision=0]]]) Decorate a Python method to create a Qt slot. :param types: the types that define the C++ signature of the slot. Each type may be a Python type object or a string that is the name of a C++ type. :param name: the name of the slot that will be seen by C++. If omitted the name of the Python method being decorated will be used. This may only be given as a keyword argument. :param revision: the revision of the slot that is exported to QML. This may only be given as a keyword argument. :param result: the type of the result and may be a Python type object or a string that specifies a C++ type. This may only be given as a keyword argument. Connecting a signal to a decorated Python method also has the advantage of reducing the amount of memory used and is slightly faster. For example:: from PyQt5.QtCore import QObject, pyqtSlot class Foo(QObject): @pyqtSlot() def foo(self): """ C++: void foo() """ @pyqtSlot(int, str) def foo(self, arg1, arg2): """ C++: void foo(int, QString) """ @pyqtSlot(int, name='bar') def foo(self, arg1): """ C++: void bar(int) """ @pyqtSlot(int, result=int) def foo(self, arg1): """ C++: int foo(int) """ @pyqtSlot(int, QObject) def foo(self, arg1): """ C++: int foo(int, QObject *) """ It is also possible to chain the decorators in order to define a Python method several times with different signatures. For example:: from PyQt5.QtCore import QObject, pyqtSlot class Foo(QObject): @pyqtSlot(int) @pyqtSlot('QString') def valueChanged(self, value): """ Two slots will be defined in the QMetaObject. """ Connecting Slots By Name ------------------------ PyQt5 supports the :meth:`~Pyt5.QtCore.QMetaObject.connectSlotsByName` function that is most commonly used by :program:`pyuic5` generated Python code to automatically connect signals to slots that conform to a simple naming convention. However, where a class has overloaded Qt signals (ie. with the same name but with different arguments) PyQt5 needs additional information in order to automatically connect the correct signal. For example the :class:`~PyQt5.QtWidgets.QSpinBox` class has the following signals:: void valueChanged(int i); void valueChanged(const QString &text); When the value of the spin box changes both of these signals will be emitted. If you have implemented a slot called ``on_spinbox_valueChanged`` (which assumes that you have given the :class:`~PyQt5.QtCore.QSpinBox` instance the name ``spinbox``) then it will be connected to both variations of the signal. Therefore, when the user changes the value, your slot will be called twice - once with an integer argument, and once with a string argument. The :func:`~PyQt5.QtCore.pyqtSlot` decorator can be used to specify which of the signals should be connected to the slot. For example, if you were only interested in the integer variant of the signal then your slot definition would look like the following:: @pyqtSlot(int) def on_spinbox_valueChanged(self, i): # i will be an integer. pass If you wanted to handle both variants of the signal, but with different Python methods, then your slot definitions might look like the following:: @pyqtSlot(int, name='on_spinbox_valueChanged') def spinbox_int_value(self, i): # i will be an integer. pass @pyqtSlot(str, name='on_spinbox_valueChanged') def spinbox_qstring_value(self, s): # s will be a Python string object (or a QString if they are enabled). pass PyQt-gpl-5.5.1/doc/sphinx/static/0000755000076500000240000000000012552164565016636 5ustar philstaff00000000000000PyQt-gpl-5.5.1/doc/sphinx/static/classic.css0000644000076500000240000001015212552164565020770 0ustar philstaff00000000000000/* * The stylesheet (based on the Sphinx default). */ @import url("basic.css"); /* -- page layout ----------------------------------------------------------- */ body { font-family: 100% Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; color: black; margin: 0; padding: 0; } div.document { background-color: white; } div.documentwrapper { float: left; width: 100%; } div.bodywrapper { margin: 0 0 0 230px; } div.body { background-color: white; color: black; padding: 0 20px 30px 20px; } /* "footer" contains the copyright notice and the Sphinx link. */ div.footer { color: black; background-color: white; width: 100%; padding: 9px 0 9px 0; text-align: center; font-size: 75%; } div.footer a { color: black; text-decoration: underline; } /* "related" contains the title and the previous/next/modules/index links. */ div.related { background-color: white; line-height: 30px; color: black; } div.related a { color: #4186cb; } div.sphinxsidebar { } div.sphinxsidebar h3 { font-family: 'Trebuchet MS', sans-serif; color: black; font-size: 1.4em; font-weight: normal; margin: 0; padding: 0; } div.sphinxsidebar h3 a { color: black; } div.sphinxsidebar h4 { font-family: 'Trebuchet MS', sans-serif; color: black; font-size: 1.3em; font-weight: normal; margin: 5px 0 0 0; padding: 0; } div.sphinxsidebar p { color: black; } div.sphinxsidebar p.topless { margin: 5px 10px 10px 10px; } div.sphinxsidebar ul { margin: 10px; padding: 0; color: black; } div.sphinxsidebar a { color: #4186cb; } div.sphinxsidebar input { border: 1px solid #4186cb; font-family: sans-serif; font-size: 1em; } /* -- body styles ----------------------------------------------------------- */ a { color: #4186cb; text-decoration: none; } a:hover { text-decoration: underline; } div.body p, div.body dd, div.body li { text-align: justify; line-height: 130%; } div.body h1 { font-size: 180%; font-weight: bold; border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 2px; color: white; background-color: #4186cb; padding: 5px; margin-top: 20px; -moz-border-radius: 5px; -webkit-border-radius: 5px; -khtml-border-radius: 5px; } div.body h2 { font-size: 140%; font-weight: normal; border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 2px; color: white; background-color: #4186cb; padding: 5px; margin-top: 20px; -moz-border-radius: 5px; -webkit-border-radius: 5px; -khtml-border-radius: 5px; } h1 a, h2 a { color: white; text-decoration: none; } div.body h3 { font-size: 130%; font-weight: bold; color: black; } a.headerlink { color: white; font-size: 0.8em; padding: 0 4px 0 4px; text-decoration: none; } div.body p, div.body dd, div.body li { text-align: justify; line-height: 130%; } div.admonition p.admonition-title + p { display: inline; } div.admonition p { margin-bottom: 5px; } div.admonition pre { margin-bottom: 5px; } div.admonition ul, div.admonition ol { margin-bottom: 5px; } div.note { background-color: #eee; border: 1px solid #ccc; } div.seealso { background-color: #ffc; border: 1px solid #ff6; } div.topic { background-color: #eee; } div.warning { background-color: #ffe4e4; border: 1px solid #f66; } p.admonition-title { display: inline; } p.admonition-title:after { content: ":"; } pre { padding: 5px; /* * Note that this isn't our standard "sun" colour which doesn't contrast * too well with the pygments defaults. */ background-color: #fff4c0; color: black; line-height: 120%; border: 1px solid #ac9; border-left: none; border-right: none; } tt { background-color: #ecf0f3; padding: 0 1px 0 1px; font-size: 0.95em; } .warning tt { background: #efc2c2; } .note tt { background: #d6d6d6; } PyQt-gpl-5.5.1/doc/sphinx/static/logo.png0000644000076500000240000000761312552164565020313 0ustar philstaff00000000000000‰PNG  IHDRddÿ€ pHYs!›ò3=IDATxœí]ipTǵþî}FšÑ¾" ‰ÅÕ0¶–K¶q•ˆ‚1òKùyÅË y&.ˆ1ÏqHB‚])W¨Â/6PÁÂ!ÆÙ ‹ØFrŒA hc¤ÑHI³èÞYn~hÔÝ3 f¤ïWwßíô7}ûž>çôN’$Üš:„í»VÙhõkÏKÑ®½75r,Ç t©g į VÂU×u¸Mp·A²Aœœ²xÈ’!Ÿy”3¡œ Eø¦’„O¯tì=c¬1ÙýÍÊŒÞX<15Fu+å†M–”W˜_ÿ¸¾ÇéaÛ3âÕ?Yœž?96ðe®z8ŽÀ^á Ü­Ãy°, ê|h ¡yò O9ùmÇî“Mí=l£V)ÛP˜¹|züp `Ød .ÏïŽÖ}\Ùæ#J¶¾ í¡¹I2¾ß/ïiƒu¬û!|1lY@µQ«µ|œß—G:x®åíÓ7¢Ïoù଄gîÏTÊùaLIN˜ƒùшc €ä@ë¢í)H.Ò¶.?í'K&wÂ&¸7ù~²ÂMÈ\ž—T³7Z¿(½tA2=ÃÓ‰–ѽ+ˆ„]@Ë÷àé" «ïIy$?TM]âKïU‹.O ‹)#K~w´ŽÕ§Jæ%ûŒ)·Æ%pü=XáÃG9š—ÁÓNÖ¤=47‰T¯mo|\?ø=#«¼ÂÌêè÷åÅ<±,ƒv›Ñ¼4‚¦ó›B8ã–¯§—g.Ì‹!Õ×̟|ÝèJ/$«©Cxa:+^½ieýöy:Ñ\±r˜r‡ bš‹ÈûÈqøùÊì qTIÜY^o´ ¨ô&K’°ýo×È Y­à_.É¥ú”$ÂTñˆÈjç`*…ä…µJÙÖ’I*…·kvѽýðõ„Àd}x±•µº<¹,ÃGGo{ŽŒ„àa‚£íÏ‘ÚÄÍãKéôr©¾ûH…9àuȲØ]»N4’êÂ\CñìDz¸{w¤û†‚®?Àº‡ÔVÞ8?Ç@ª<ÖÐåpõ¿(Yol² ^­J«’=[Ä,²œ—ÑöÔH f˜ÿΫ¤ö\Q™g¬=î?ºÑÿ ²êÚz_¢6¹õiÔê"9aZ‰šçð ÙѺ†(«Éå#÷QÍëƒ ­~¶Cô'ëíS7Èô–¯f5tþúvR†áKtýžÔJæ'§ÇzíÎIzû´ÿàò!«Îì8q™ª!ÿµ8Ú<]×`Ù:‡›áòjHrž{tQ:9rì_íõm>ƒË‡¬²³-¤œ—¢õ±£·ÿ4ÌV—Q‚ä@ûÏHmñ´¸œ$ïŠZÞcK–ÅîbõWŸeðEØ,y!€m?„ó¤Æv¼¼Òl±ÓÏ"%ëh…ÙåöNWi±ªü)̰êØ2z¢F,›IqÑÔ¸ƒwærº%vyÉ’€#—¨&öý»“èÊF¼R;zX`?±¢·ÈqøþÝT¯<üU+Ñç½d]¹a#_J…Œ+œÁ8×:wŒº¬‘€Îß’bá̹Ì;ZêÛzªûì.^²Ž3Á…¹1zMŸéÚm†­,¢†¶2x:z‹1ZùF¡?ñ—€œ¾j!Ç–ÜÅ8,m{GÑßQz`ÝGj, §úÈá4¶õ»„JÎß“KI…uäŒØÞ%Å{ób}obc»—À¹kÔÞ:33JE\Û®úö¶G8zNÃíÕÚÕ ~Fu‘õú´y• ݤu^63¬GB#dÁþ)ÎÏÑ“reƒ/_3¦«ŒÍ~§k ýÁ(IÓ'БÕKßasçJÁç¥hûN œ ™‘‚žS€W¯šœª%3’©K´Ø]|­ÉAÎÌNÔð$øÌY3Ìø©Ûîf¸®÷å<—•@íõ&;­•’5‰õÊŠ_…H¾Hƒx‰s’È{†ëæžufd°†öÛÎs3Rè[÷È`?F‹À·tR²’ LÈ¥«&$¢Eœ´ã)146ÏhxÖ5Ÿ¤gâöú^Ý1¦ãÉ !í6'ßå ‘i f‚›ÆåŒ-0×3„tÚ]|w5nEû5˜#ûN†‡šªØÑcíqñN7u¿ªäLlšd ‰h‘í¸RA£¢Kâng£±cÃØÐŒ«AÉ"º=ƒDÑ ¸5bÌ‚gG;ÊÀõ‹h#à¨þ$2„(eÂQåul§¦‘ 8VÊ9>ZM'ün6B6ü=.·7xÚñN‡ªÀë5²€Ç cGÇd4b¡“qê5ržÝÂbêb¾€ò‰¡,!Ï&ES7%$^§àÙõ »N„<'$¢E“H±ÙBÉJ‰QñiÌ~EŸ8å̈yPÎ Å&ê(5FÅOdlXµŒm ÊÙ!-òÀtœÝ›¨áIЀk­·§O{Pä@ÆDGŽÈRÉv2—Gª3Ó‘•¨ácu 2Ç NO5Ý"ÀA]RA#ê²t¹j´‘=IzeŒVÎsÀô T «h`¶†k C(fd@SDŠ,½N/ÀLÆ›xŽÝ!«y âE8h)Y,½ñæ1ÞÄŠ+ÝT(Ï€êžÐˆPçCædsˆv'Àw²õè%+=NMˆ.ÏgÕ4HQ‡LÔðC·šÿYe!¡}ñ^~xPÀÄù¿ÜA¯ZË®Âïdpjvd°1X}±µ^ûÌ’i”¬Ï«-t‘ÈÇAW:ÚrFt«Á{Iè°9ÏÖÐ kñ4_²&§êÈæ(§[*¯` ð†B jøÁt³¼²ÍÕ§of%h&%{­U^²8€MÌp肉îŒRκó?‹ÚPNï-z$éÐêà)ž•@ ~ÔLZ83áÓ+ÌÌûòèÊvÄÒý'.w´tz×ÏJ9¿œ ¯¥dÅhå÷3Imöž1Ò{©æÝÉ3WÔ²”|;^8#žõ†ù8,V-H!C®Æd?ù-3¸â¶ƒóM rg€Ó"ö5R;þMûu³×šÀqøÁ| ¨YYñj6ðt÷É&2ÏAž…Ø_ŒŽ¼aEì6’WÊé–vŸl"G–ýG<»#ýw…­ËO#Zí=Ï1›WôÏC5wä Tóax†Ôœm&1E<DZ¹ ¼~õŒxõŠ9Ô2óÎi#µ5s $î\f È§Câ>Àë‚0Z„=ÌlõÐÜD²Ž €“uýwÓ£ÔÞ[ØE÷Ž£uô˜b*ÞY™Ã†„]Pä’ÚŽ£udQ­‘¯ë7¬,ƒFþØšîlMç˜xɨuÐ?1R‡ ú ˆú©ýõKÓy&¾ýñ¥|bdúØ}ÿà¬ÄYL¢¤75oÄí¼½M]ÚbÄý†ÔjMŽ]Çéú9YÑ…3û%N0Y‡ÅµJïË(8=[ÖÐcœIePÍÉC Õ$î'yµl‚{ËÁj¡Ï"ªUÉ6gå1``HjŒjCa&©6´õüß¡ZºâõH9zûy€”³‘òqÐ{$é•CµMÔø|QV²aÀ ÁrÑ,›ÿ³`ü¬ºóO˜Ô6|RõO°¹P-@ê1bZ°³¼žµ.¬˜“¸ô.ÿ¬”,#‹6ÜŸ9%UGZÞ?oòÙ“ÎÇ#å·Çü¥-FÊßY¦þÿÓ¦/Ò×´4ÝSË3]Iq“üYJ9¿mU.˜ûΩû?ofn Gò‡Ð?”䡆~’ÞgÃcþüY3»L6(·­ÊeŠbHiìj[ö|khr¶G Òü5ë;0?É?Oo˜Áé°‹Õ¼õiÓ¾3FÒíhµìõOÍJ¸¹²=Ô‰ß4YÿçÏWÙÌÀÍMzzy¦OêdçU´®ðåPn ¨æ#q«yz$igy=ûöi”üož25Mèz‘zó«úîMeU,_ ób~¾2›h ¹Ðõ{tl†äp‹Ó"v ÏÕ ›à~åP-;£k”ü/KóXOàMîTR×5Zÿ·¬Š¼&Ä©·–Lšè7†]õhÿlaÚµ±¯ù娮59¶¬fµ„hµìW?œ<Ä1Õ‹ Ó×¶:6•U±‘\*ÿøÒŒ•w÷ ŒÎòöîðÔ®@ìËPÎñkþë—¦]Ç&ÿa²AùZiÞPæ)ÃIDÝfu¾ô^õ£O üüI†ç‹²|6´ôB¼„ΰ½;ŠÙY85t«axØÑ ŒaÇÑ:vÝ`Zšî•U¹qºÑODÝ Ñåyýãz6o’ä¾´’ùÉò)Î;`ÝÛ~ôŒà†Oê|èV#êaVê…Ó-8Û¼çŒQðMW¿bNâSË3oª%~Þ­üÓÀ'_·í,¯góRHU=º(}ñ´Ta÷ Ø?‚£=§àn|Îà¥B]M´EÄÛÎBŽÓ¾ûd“_ªCJö\QÖà:úà¸%²-ÂöÃ×/Õwûµç$iÖÞ›ºhjÜ`ËàºñÄ 8ûþ–Ác†Çæ}a9ø(ðñ%Až Å$(g@9ò¬64x$éÄåŽ}ÿ4²;N{1'+zcqö 뾡àVÉSοŒYŒ“ÆÉ þxgy·Fã#+Œ“ÆÉ ãzVYA`œ¬ 0NV/ýeĘÌ#ã#+Œ“ÆÉ ÿm‹˜Øú*ëIEND®B`‚PyQt-gpl-5.5.1/doc/sphinx/static/logo_tn.ico0000644000076500000240000000217612552164565021001 0ustar philstaff00000000000000 h(  @ݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿݱ…ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿ|½[ÿþþþÿþþþÿþþþÿïÛÇÿòáÐÿõýþÿ»öþÿ•ñþÿ•ðþÿ»öþÿõýþÿòáÐÿïÛÇÿþþþÿþþþÿþþþÿþþþÿþþþÿäÁžÿ䯦ÿŒîüÿàþÿÝþÿÝþÿÝþÿÝþÿàþÿŒîüÿäÅ¥ÿäÁŸÿþþþÿþþþÿþþþÿéͱÿâ˯ÿPèþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿQèþÿã˯ÿéβÿþþþÿùòìÿݱ…ÿsìýÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿtìþÿݱ…ÿùóìÿåáÿÒâÙÿÞþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÞþÿÒâØÿåáÿܯ‚ÿ…îþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿ†îþÿܯ‚ÿݰ„ÿTèþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿTèþÿݰ„ÿݱ„ÿIçþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿIçþÿݱ…ÿݰƒÿeêþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿeêþÿݰƒÿÞ²‡ÿ¦î÷ÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿ¦îöÿÞ²‡ÿîØÂÿãεÿ#âþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿ#âþÿãδÿîØÂÿþýüÿÛ­ÿ»ìîÿÞþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿÞþÿ»ìîÿÛ­ÿþýüÿþþþÿ÷íãÿÛ­~ÿ²íòÿàþÿÝþÿÝþÿÝþÿÝþÿÝþÿÝþÿàþÿ³íòÿÛ­~ÿ÷íãÿþþþÿþþþÿþþþÿöêßÿÚªzÿÛÝÏÿ|íþÿ,ãþÿÞþÿÞþÿ,ãþÿ|íþÿÛÝÎÿÚªzÿöêßÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPyQt-gpl-5.5.1/examples/0000755000076500000240000000000012613140041015064 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/activeqt/0000755000076500000240000000000012613140041016704 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/activeqt/README0000644000076500000240000000140512613140041017564 0ustar philstaff00000000000000On Windows PyQt provides support for integration with ActiveX controls. These examples demonstrate the basic techniques used to take advantage of ActiveX in PyQt applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/activeqt/webbrowser/0000755000076500000240000000000012613140041021065 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/0000755000076500000240000000000012613140041022200 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image0.xpm0000644000076500000240000000233212613140041024070 0ustar philstaff00000000000000/* XPM */ static char *image0[]={ "32 32 3 1", ". c None", "a c #000080", "# c #808080", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", ".......#aaaaaaaaa...............", "......#aaaaaaaaaaa.........a....", ".....#aaa.......aaa.......aa....", "....#aaa.........aaaa....aaa....", "....aaa...........aaaa..aaaa....", "....aa..............aaaaaaaa....", "....aa...............aaaaaaa....", "....aa...............aaaaaaa....", "....aa..............aaaaaaaa....", "....aa.............aaaaaaaaa....", "....#aa...........aaaaaaaaaa....", ".....#aa.........aaaaaaaaaaa....", "......aa#.......................", ".......aa#......................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................"}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image1.xpm0000644000076500000240000001061712613140041024076 0ustar philstaff00000000000000/* XPM */ static char *image1[]={ "32 32 142 2", "Qt c None", "#O c #0010f7", "#P c #0021ef", "#R c #0021f7", "#S c #0021ff", "#T c #0029ff", "ah c #0031ff", "#N c #0829f7", "#x c #0831ff", "#C c #0839ff", "#E c #1029e7", "#r c #1039ff", "#o c #1042ff", "#Q c #1831de", "ak c #1831e7", "#k c #1842ff", "#H c #184aff", "aj c #2139e7", "#s c #2142de", "#G c #214aff", ".9 c #2152ff", "#2 c #2939c6", "ag c #2939d6", "a# c #2942ce", "#p c #2942de", "#U c #2952ff", "ae c #295aff", "#y c #3152de", ".2 c #3152e7", "#I c #315aff", "#z c #3163ff", "#1 c #394abd", "#L c #394ade", "#B c #3963ff", "#w c #396bff", "#V c #4252d6", "#l c #4252de", "#W c #4263ef", "#q c #426bff", ".1 c #4273ff", "#5 c #4a5ad6", "#J c #4a73ff", "#K c #4a7bff", "ac c #4a84ff", "ab c #5263c6", ".T c #5263ce", ".M c #5273d6", ".c c #5273e7", ".U c #527bde", "#t c #527bf7", "#A c #5284ff", "#X c #5a63ad", ".V c #5a84ef", "#F c #5a84ff", "#v c #5a8cff", "ad c #636bbd", ".e c #637bc6", ".W c #637bce", ".3 c #637bd6", ".Q c #6384de", ".5 c #638cef", "#b c #638cff", "#j c #6394ff", "af c #6b73bd", "#0 c #6b73c6", ".S c #6b84ce", "#u c #6b94ff", ".C c #6b9cff", "ai c #737bce", ".z c #7384b5", ".j c #7384c6", "#6 c #738cce", ".4 c #738cd6", ".b c #739ce7", ".I c #73a5ff", "#n c #73adff", "#Z c #7b84b5", ".R c #7b8cbd", ".J c #7b94bd", ".n c #7ba5e7", ".P c #7badff", "#c c #7bb5ff", "#M c #84849c", "#3 c #8484ad", ".i c #848cc6", "al c #8494bd", "aa c #849cc6", ".y c #84adff", ".O c #84b5ff", "#a c #84bdff", ".t c #8c94ad", ".a c #8c94b5", ".D c #8c9cbd", ".m c #8c9cce", ".A c #8ca5ef", ".f c #8cadf7", ".H c #8cbdff", "#D c #9494a5", "#8 c #9494bd", "#9 c #9494c6", "a. c #949cbd", ".r c #94c6ff", "#d c #94ceff", "#4 c #9ca5ad", "#7 c #9ca5b5", ".u c #9cbdf7", ".6 c #9cc6ff", ".0 c #9cceff", ".x c #9cd6ff", ".L c #a5a5b5", "#Y c #a5a5bd", "#e c #a5ceff", "## c #a5d6ff", ".X c #adadb5", ".k c #adc6ff", "#i c #add6ff", ".E c #b5b5b5", ".d c #b5b5bd", ".K c #b5bdc6", ".F c #b5ceff", ".N c #b5d6ff", ".B c #b5deff", ".s c #bdbdbd", ".# c #bdbdc6", "#. c #bdd6ff", ".G c #bde7ff", "#h c #c6e7ff", "#f c #c6efff", ".w c #c6f7ff", ".h c #ced6ff", ".Y c #cee7ff", ".q c #ceefff", ".Z c #cef7ff", ".l c #d6efff", ".8 c #d6f7ff", ".o c #deefff", ".7 c #def7ff", "#m c #deffff", "#g c #e7ffff", ".v c #efffff", ".p c #f7ffff", ".g c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.#.a.b.c.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.d.e.f.g.h.iQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.d.j.k.g.g.l.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.a.n.o.g.p.q.r.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.s.t.u.g.g.v.w.x.y.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.z.A.g.g.v.B.x.r.C.DQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.E.a.F.g.g.v.G.r.H.H.I.JQtQtQtQtQtQtQtQtQtQt.s.s.K.K.KQtQt", "QtQt.L.M.N.g.g.q.x.H.O.y.P.P.Q.LQtQtQt.s.s.K.a.R.S.T.U.V.V.Q.W.X", "Qt.#.Q.Y.g.g.Z.0.O.y.P.P.P.P.1.2.3.4.S.e.c.5.f.6.N.l.7.8.Z.0.9.T", ".s.W#..g.p.Z###a.O.P.P.I.I.P#b#c#d#e.B#f#g.7.8.8.q#h#i.r.H#j#k#l", ".e#e.g#m.G#d.O.y.P.I.I.I.I.I.I.H.6####.0.r.H#a.O#c.I#n.I#j.1#o#p", ".5.p#f.x.0.O.y.P.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.C.C.C#b#q#r#s", "#t##.r.H.O#c.P.I.I.I.I.I.I.C.I.C.C.I.C.I.C.C.C.C#u.C#j#j#v#w#x#p", "#y#z#j.I.I.P.I.I.C.C.C.I.I.C.C#j#b#v#v#b#j#j#j#b#j#v#b#v#A#B#C#p", "#D#E#k#q#A#j.C.I.C.I.C.C.C.I#F#G#k#k#H#G#I#B.1.1#J#K#K.1#q#z#x#L", ".s#M#N#r#z#K#b#u.C#u.C.C.I.I#B#O#P#Q#E#P#R#S#T#x#r#r#H.9#U#G#T#V", "QtQt.z#N#r#I.1#v#j#u#j.C#u.I#W#X#D.s#Y#D#Z#0#1#2#Q#P#P#N#N#T#E#3", "QtQt.s#4#5#x#H#B#K#v#j#j#j#j#6QtQtQtQtQtQtQt.s.s.d.X#7#8#9a..X.s", "QtQtQtQt.da##S#k#z#J#v#b#j#vaaQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.Eab#x#o#I#K#v#vac.iQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.sad#E#rae#q#K#wafQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.#.Lagah#k#U#kafQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt#4#Q#T#xahaiQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt#4adajakalQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image2.xpm0000644000076500000240000001061712613140041024077 0ustar philstaff00000000000000/* XPM */ static char *image2[]={ "32 32 142 2", "Qt c None", "#Y c #0018e7", "aa c #0018ef", "#E c #0018ff", "#Q c #0021ef", "#K c #0021ff", "a# c #0029ff", "a. c #0829ff", "#P c #0831ff", "#4 c #1021d6", "#R c #1021de", "#L c #1029d6", "#V c #1029e7", "#n c #1039f7", "#W c #1039ff", "#O c #1042ff", "ah c #1831ce", "#y c #1842ff", "aj c #2131c6", "#S c #2131ce", "#z c #2139de", ".0 c #2142de", "ai c #2142e7", ".t c #214aef", "#D c #214aff", ".x c #2152ff", "al c #2939de", "#d c #294ae7", "#I c #2952ff", "#J c #295aff", "#T c #3142bd", "#N c #315aff", "#s c #3163ff", "#F c #394ac6", "#G c #3952d6", "ag c #395ae7", ".B c #3963f7", "ae c #3963ff", ".g c #396bff", "#U c #424ab5", "#2 c #4252b5", ".J c #425ace", "#A c #4263de", ".b c #426be7", "#p c #426bef", "#x c #426bff", ".n c #4273ff", ".o c #4a63ce", "#t c #4a6be7", ".Q c #4a73de", "#3 c #4a73ff", "#C c #4a7bff", "#Z c #525abd", ".1 c #526bbd", ".W c #526bc6", ".R c #526bce", ".P c #527be7", "#w c #5284ff", "#m c #528cff", "ac c #5a63bd", "ak c #5a6bbd", ".O c #5a7bf7", "#H c #5a84ff", "#9 c #5a8cff", "af c #636bb5", ".h c #636bbd", "ab c #6384ef", "#v c #638cff", ".w c #6394ff", ".s c #639cff", "#M c #6b73b5", ".C c #6b73bd", "#u c #6b9cff", ".c c #737bb5", ".S c #7384ce", ".N c #738ce7", ".a c #7394de", ".8 c #7394ef", "#8 c #739cf7", "#B c #739cff", ".A c #73a5ff", "#0 c #7b84b5", ".T c #7b8cbd", ".9 c #7b94c6", "#. c #7b94d6", ".7 c #7ba5ff", ".X c #7badff", ".I c #7bb5ff", "#5 c #848ca5", ".y c #848cad", ".M c #8494b5", "## c #849cd6", "#c c #84adff", ".G c #84b5ff", ".Z c #84bdff", "#o c #8c8cad", "#a c #8ca5ce", ".Y c #8cb5ff", ".H c #8cbdff", "#1 c #9494a5", ".U c #9494ad", "#7 c #949cad", "#b c #94ade7", ".z c #94c6ff", ".v c #94ceff", ".j c #9c9cad", ".u c #9ca5ad", "#r c #9cc6ff", ".m c #9cceff", ".d c #a5a5a5", "#6 c #a5a5ad", ".V c #a5a5b5", ".K c #a5adb5", ".2 c #a5ceff", ".r c #a5d6ff", ".L c #adadad", ".i c #adadb5", ".p c #adadbd", ".q c #addeff", "#e c #ade7ff", "#X c #b5b5b5", ".D c #b5b5bd", ".E c #b5b5c6", ".F c #b5bdc6", ".f c #b5deff", "#q c #b5efff", ".# c #bdbdbd", "ad c #bdbdc6", ".6 c #bddeff", "#i c #bde7ff", "#h c #bdefff", "#g c #c6f7ff", "#l c #cee7ff", "#j c #cef7ff", "#f c #ceffff", ".k c #d6efff", "#k c #d6f7ff", ".l c #d6ffff", ".e c #deefff", ".5 c #e7ffff", ".4 c #efffff", ".3 c #f7ffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.#QtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.e.f.g.h.iQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.j.k.l.m.n.o.pQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.f.q.r.m.s.t.cQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u.q.v.m.r.m.w.x.y.#QtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u.z.z.z.z.m.m.A.B.C.DQtQtQtQt", "QtQt.#.E.F.#.#QtQtQtQtQtQtQtQtQtQt.j.G.H.z.H.z.m.m.I.n.J.KQtQtQt", ".L.M.N.O.P.Q.R.S.T.U.E.#.#QtQtQt.V.W.X.H.Y.H.H.z.z.z.Z.g.0.VQtQt", ".1.2.3.4.5.k.6.2.Y.7.8.a.9#.###a#b.Y.G.G.G.G.Y.G.Y.H.z#c.n#d.u.#", ".b#e#f#g#h#i.f#h#g#g#j#k#k#k.e.4.4#l#c.X.G.G.G.G.G.G.G.H.H#m#n#o", "#p.m#q.r.m.m.m.z#r.m.z.m.r.q.q.q.m.H.G.G.X#c.G.G.G.X.X.X.X.7#s.J", "#t.v.q.m.z.H.H.H.H.H.Z.Y.G.G.G.G.G.G.G.X#c.I#c.X.X.X.A.A#u#u.n#d", "#t.H.r.z.Y.G#c.X.X.X.7.X.X.X.X.X.X.X.X.X.X.X.X.X.7.A#u#v#w#x#y#z", "#A.I.m.H.X.X.X.A.A#B.A#B#u#u#u#u#B.X#c.X.X.X.X.A.A#u.w#C.g#D#E#F", "#G.s.G.A.w#v#H#w#C.n#x#s#I#y#y#y#J#H.X.7.X.X.7.A#u.w#w#J#y#K#L.U", "#M.x.n#N#D#O#P#K#K#Q#Q#R#S#T#U#U#V#W.A.X.A.A#B#u.w.n#D#P#E#L.VQt", "#X.h#V#Q#Y#R#S#U#Z#0#1.p.#.#.#.#.V#2.s.7.A#u#u.w#3#D#P#E#4#5QtQt", "QtQt#6#1#7.D.#.#QtQtQtQtQtQtQtQtQt#6#8#B#u.w#9#s#ya.#E#F.V.#QtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.8#9#H#w#s#Wa#aa#2#XQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ab#w#C#N#W#K#Eac.#QtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtad.Pae#J#Wa##Vaf#XQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ag#W#P#Eah#6QtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ai#K#Eaj.jQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#akalak.iQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image3.xpm0000644000076500000240000000144312613140041024075 0ustar philstaff00000000000000/* XPM */ static char *image3[]={ "25 25 2 1", "# c #000000", ". c #ffffff", ".........................", ".........................", ".........................", ".........######..........", ".......##########........", "......####....####.......", ".....###........###......", "....#####........###.....", "....##.###........##.....", "...###..###.......###....", "...##....###.......##....", "...##.....###......##....", "...##......###.....##....", "...##.......###....##....", "...###.......###..###....", "....##........###.##.....", "....###........#####.....", ".....###........###......", "......####....####.......", ".......##########........", ".........######..........", ".........................", ".........................", ".........................", "........................."}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image4.xpm0000644000076500000240000000233212613140041024074 0ustar philstaff00000000000000/* XPM */ static char *image4[]={ "32 32 3 1", ". c None", "# c #000080", "a c #808080", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "...............#########a.......", "....#.........###########a......", "....##.......###.......###a.....", "....###....####.........###a....", "....####..####...........###....", "....########..............##....", "....#######...............##....", "....#######...............##....", "....########..............##....", "....#########.............##....", "....##########...........##a....", "....###########.........##a.....", ".......................a##......", "......................a##.......", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................"}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image5.xpm0000644000076500000240000001273712613140041024107 0ustar philstaff00000000000000/* XPM */ static char *image5[]={ "32 32 211 2", "Qt c None", "aJ c #000000", "#W c #080800", "#N c #100800", "#V c #101000", "#E c #101008", "#M c #181000", "#L c #181800", "#D c #181808", "#F c #181810", "as c #211800", "#K c #211808", "#J c #212110", "#G c #212118", "#q c #212121", "an c #292100", "#I c #292110", "aN c #292910", "#H c #292918", "#y c #292921", "aF c #312900", "#C c #312918", "#i c #312929", ".0 c #313131", "#7 c #393100", "#U c #393108", "aG c #393931", ".M c #393939", "#u c #423939", "#c c #424a42", "aE c #4a4200", "aY c #4a4210", ".V c #4a4239", "#B c #4a4a39", ".m c #4a4a42", "aP c #4a5218", ".G c #4a5252", ".z c #4a5a52", "aO c #524200", "am c #524a00", "#T c #524a08", "#p c #524a4a", ".s c #525252", "#a c #525a52", ".7 c #52635a", "#b c #526363", "az c #5a4a00", "#6 c #5a5208", "aw c #5a5210", ".Z c #5a524a", ".L c #5a5a52", ".y c #5a5a5a", ".F c #5a635a", "#S c #635208", "ax c #635a10", ".U c #635a52", ".r c #635a5a", "aZ c #636321", "## c #63635a", ".A c #636363", "#h c #636b6b", "aL c #637329", "af c #6b5a00", ".6 c #6b635a", "#o c #6b6363", ".E c #6b6b63", "a4 c #6b7321", "aS c #6b7329", "aR c #6b7331", "aX c #736300", "al c #736308", "#R c #736b10", ".T c #736b63", "a5 c #737329", ".i c #73736b", ".K c #737373", "a7 c #737b29", "#g c #737b73", "a9 c #7b7318", "#A c #7b7373", "a8 c #7b7b21", "aV c #7b7b29", "aQ c #7b7b5a", ".J c #7b7b73", ".1 c #7b7b7b", "b# c #7b8431", "a3 c #7b844a", ".8 c #7b847b", "ay c #847308", "#5 c #847310", "aT c #847b21", "b. c #847b29", ".S c #847b73", ".d c #847b7b", "aW c #848421", "a1 c #848429", "a0 c #848431", "bq c #84844a", ".H c #848484", "ae c #8c7b08", "ak c #8c7b10", "#j c #8c8484", "ba c #8c8c63", "a2 c #8c8c7b", ".x c #8c8c84", ".2 c #8c948c", ".9 c #8cada5", "aC c #947b08", ".Y c #947b73", "aK c #948c10", "#Q c #948c18", "a6 c #948c29", "#m c #948c84", "bp c #949442", "aH c #949484", ".D c #94948c", ".n c #949494", "bn c #949c4a", "bl c #949c5a", "bj c #949c63", ".u c #949c94", ".v c #94a59c", "aI c #9c8c10", "#4 c #9c8c18", "#O c #9c8c29", "aM c #9c9418", "#r c #9c948c", "bo c #9c9c4a", "bm c #9c9c52", "bk c #9c9c5a", "bh c #9c9c6b", ".k c #9c9c94", ".a c #9c9c9c", "bi c #9ca56b", "bf c #9ca573", ".h c #9ca59c", "#f c #9ca5a5", ".B c #9cbdb5", "#P c #a59400", "aB c #a59418", "#k c #a5948c", "ar c #a59c29", ".N c #a59c8c", ".P c #a59c94", ".W c #a59c9c", "bg c #a5a573", "bd c #a5a584", ".q c #a5a59c", ".c c #a5a5a5", "be c #a5ad7b", ".o c #a5ada5", ".C c #a5adad", ".I c #a5b5ad", "#d c #a5bdb5", ".w c #a5c6bd", "ad c #ad9c10", "aj c #ad9c18", "#w c #ad9c94", ".f c #ada59c", "bc c #adad7b", "bb c #adad84", ".# c #adada5", ".t c #adadad", ".4 c #adb5ad", "ai c #b5a518", "aq c #b5a529", "aD c #b5a542", "ao c #b5a54a", ".O c #b5a594", "#v c #b5a59c", "at c #b5ad52", "#z c #b5ad9c", ".5 c #b5ada5", ".j c #b5b5ad", ".e c #b5b5b5", ".3 c #b5bdb5", ".Q c #b5bdbd", "#e c #b5cec6", "#8 c #bda539", "#x c #bda59c", "#3 c #bdad29", "#X c #bdad31", "ag c #bdad42", "#n c #bdb5ad", ".b c #bdbdbd", ".X c #bdcec6", "aU c #c6b510", "#. c #c6c6bd", ".p c #c6cece", ".g c #c6ded6", "ac c #cebd31", "#l c #ced6ce", "#s c #ced6d6", "#t c #cedede", "#9 c #d6c610", "#2 c #d6c631", "ap c #dec608", "ah c #dece10", "ab c #dece31", ".l c #deefe7", ".R c #deefef", "au c #e7ce08", "a. c #e7d621", "a# c #e7d631", "aa c #e7d639", "#1 c #e7de39", "#Y c #efde10", "av c #efde21", "aA c #efde29", "#Z c #f7e729", "#0 c #f7e739", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.b.c.d.eQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.bQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.j.k.l.e.m.nQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.b.a.o.p.q.r.s.tQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.u.v.w.k.x.y.z.A.bQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.t.k.B.C.k.D.E.F.G.HQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.b.#.#.o.I.b.c.J.K.L.M.tQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.a.N.O.P.Q.R.o.S.T.U.V.s.bQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.t.N.P.W.k.X.R.P.Y.i.A.Z.0.1QtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b.x.2.w.3.4.I.j.#.5.6.L.F.7.0.cQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.n.8.9.p#..o.4.x.x.x##.s#a#b.s#c.bQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.t.D.##d#e.h#f.o.P.2.2#g###h.A.z#i.KQtQtQtQtQtQtQt", "QtQtQtQtQtQt.b#j.P.f.P#k.q.4.X#l#m#n.n#o.J.6#p#i#q.cQtQtQtQtQtQt", "QtQtQtQtQtQt.W#m#k.O#m#r.5.k#s#t#m.q#r.U.E.T#p#u#i.M.eQtQtQtQtQt", "QtQtQtQtQt.b.x#r.o.t#v.f.o.4.l#l#w#x.f.i#o.E###a.m#y.nQtQtQtQtQt", "QtQtQtQtQt.b.e.c#d.o#z.u.q#f.I.q.#.#.2#A.U.m#B#h.h.j.bQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#C#D#E#F#G#G#G#H#I#J#K#L#M#N.iQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#O#P#Q#R#S#T#U#L#M#V#W#N#V#V.iQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#X#Y#Z#0#0#1#2#3#4#5#6#7#M#V#AQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#8#9a.a#aaaaabac#3adaeaf#7#M.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.bagaha.a##1aaaa#2aiajakalaman#AQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtaoapa.a#aaaqaraq#3aj#5afamas.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtatauava#aw#V#W#Max#4ayafazan.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtatahaAaB#W#N#M#V#V#RaCalazas.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.baDap#Z#Q#N#M#V#M#N#6akafaEaFaG.E#h.JQtQtQtQtQt", "QtQtQtQtQtQtQtQtaHaIahaAaB#W#W#N#WaJ#6aKalamaF#WaJaJ#yQtQtQtQtQt", "QtQtQtQtQtQtQt.qaLaIahavaM#WaJ#W#DaN#RaealaOan#NaNaPaQQtQtQtQtQt", "QtQtQtQtQtQt.jaRaSaTaUavaB#WaNaPaLaVaWaeaX#6aYaZa0a1a2QtQtQtQtQt", "QtQtQtQtQt.ba3a4a5a5aVa6a1aZa7aSaSa5a8a9a4a5b.b#a5a5.kQtQtQtQtQt", "QtQtQtQtQtbaa7a7aVa0b.b#a7b#a0a7a7a7aSaSa7b.aVa0aVaR.#QtQtQtQtQt", "QtQtQtQtQtbbbcbdbebebfbgbhbhbibjbjbkbkblbmbmbnbobpbq.bQtQtQtQtQt"}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/icons/image6.xpm0000644000076500000240000000723712613140041024107 0ustar philstaff00000000000000/* XPM */ static char *image6[]={ "22 22 165 2", "Qt c None", ".h c #000000", ".o c #010101", "aF c #030303", "#n c #060606", ".H c #080808", ".r c #0c0c0c", ".q c #121212", "#V c #124e7f", "#m c #131313", ".G c #161615", "aI c #172cac", ".6 c #181818", "aH c #1841b2", ".p c #191919", "#8 c #1928ba", "#W c #1929ba", "aj c #192aba", "av c #1a31c2", "aE c #1b1b1b", "aD c #1b2bc8", "at c #1c79d2", "ah c #1c7dd4", "aA c #1d1d1d", "aC c #1d7ad7", "#6 c #1d7eda", ".5 c #1e1e1e", "#7 c #1e8ae0", "ai c #1e8de0", "au c #1e90e0", ".g c #242424", "#5 c #313b6c", "aB c #343d8d", "#3 c #393939", ".f c #3d3d3d", "ak c #433967", "#C c #434442", "aw c #443c6e", "#l c #454643", "as c #454fa3", ".4 c #474845", "#R c #474846", ".e c #484848", "aG c #4856a0", ".d c #4a4a4a", "#9 c #4c416a", ".c c #4c4c4c", "ag c #4c5cae", "#X c #4d4669", "#z c #4dc2b2", "#P c #4e445a", "#G c #53504e", ".l c #545454", ".b c #555555", "#Q c #595274", "#i c #62b2a2", ".a c #676767", "#j c #69b6a3", ".F c #6f6f6a", ".K c #6f8b89", "ax c #747474", "#a c #76a1a0", ".# c #797979", "#A c #7bd7e8", "ay c #7d7d7d", "#U c #7e7d73", ".I c #808080", ".O c #81a3b8", "az c #828282", "#y c #82d1c0", "#S c #848484", "#O c #857e7c", "#F c #86add2", "#k c #86cdda", "#N c #89b1bd", "#h c #8acec3", "#o c #8c8c8c", "#L c #8cbbca", "al c #8d8d8d", ".s c #8f8f8f", "#H c #909090", "#K c #90bac9", "#M c #91c4cf", "#t c #929292", ".X c #94c2cf", ".N c #94c2d0", ".W c #959595", "#B c #96b9cb", ".3 c #97bede", ".L c #98c2ce", ".P c #9b9b9b", "a. c #9c9c9c", "am c #9d9d9d", "#s c #9dbdc4", "#b c #9e9e9e", "#Y c #a0a0a0", "an c #a6a6a6", "#v c #a6d1d6", ".Z c #a7a1a1", "#I c #a7a7a7", "#D c #a7edde", ".M c #a8d8e5", "#u c #aeaeae", "ac c #b1b1b1", "a# c #b2b2b2", ".2 c #b5cbd6", ".V c #b6b6b6", "ar c #b7b7b7", "#Z c #b8b8b8", "#2 c #bababa", ".Q c #babbb9", "aq c #bbbbbb", "#c c #bcbcbc", ".8 c #bfbfbf", "ap c #c0c0c0", ".1 c #c1d9d2", "aa c #c8c8c8", "ab c #cacaca", "ao c #cbcbcb", ".Y c #ccf8f1", "#J c #cdcdcd", ".R c #cecece", "#p c #d1f9f4", "#4 c #d5d5d5", "#w c #d5ece4", ".9 c #d5f6f5", "#0 c #d6d6d6", ".U c #d7d7d7", "af c #d8d8d8", ".x c #dadada", ".y c #dbdbdb", ".w c #dcdcdc", "#e c #dcf7f4", "#1 c #dddddd", "ae c #dedede", ".E c #dfdfdf", ".z c #e0e0e0", "#g c #e0ebe4", "#q c #e1edea", "#d c #e2e2e2", "#x c #e2ebe2", ".0 c #e2eee5", ".v c #e3e3e3", "## c #e3e7d5", "#r c #e4ebd9", "#E c #e4f2ec", ".u c #e5e5e5", ".S c #e7e7e7", ".k c #e9e9e9", ".A c #ebebeb", ".D c #ededed", ".t c #f0f0f0", "#T c #f4f4f4", ".n c #f6f6f6", ".C c #f7f7f7", "#f c #f8f5f2", ".m c #f8f8f8", ".7 c #f9f9f9", "ad c #fafafa", "#. c #fbf0eb", ".J c #fbfbfb", ".T c #fcfcfc", ".B c #fdfdfd", ".j c #fefefe", ".i c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.#.a.b.c.d.d.e.f.g.hQtQtQtQtQtQtQt", "QtQtQtQt.#.i.i.i.i.i.i.i.i.i.h.hQtQtQtQtQtQt", "QtQtQtQt.a.j.j.j.j.j.j.i.i.i.h.k.hQtQtQtQtQt", "QtQtQtQt.l.m.n.o.p.q.r.s.j.i.h.t.u.hQtQtQtQt", "QtQtQtQt.e.v.w.x.y.z.A.n.B.B.h.C.D.E.hQtQtQt", "QtQtQt.h.h.h.h.h.F.G.H.I.n.J.h.h.h.h.h.hQtQt", "QtQt.h.K.L.M.N.O.h.P.Q.R.S.n.T.j.U.V.W.hQtQt", "Qt.h.X.Y.Z.0.1.2.3.h.4.5.6.q.r.s.7.v.8.hQtQt", "Qt.h.9#..###.F.F.F#a.h#b#c#d.m.j.7.v#c.hQtQt", "Qt.h#e#f.a#g#h#i#j#k.h#l#m.r#n#o.7.v#c.hQtQt", "Qt.h#p#q.a#r.F.F.F#s.h#t#u.x.n.j.7.v#c.hQtQt", "Qt.h#v#w.##x#y#z#A#B.h#C#m#m.q#o.7.v#c.hQtQt", "QtQt.h#D.Z#E.F.F#F.h#G#H#I#J.A.7.m.v#c.hQtQt", "QtQtQt.h#K#L#M#N.h#O#P#Q#R#m.q#S#T#d#c.hQtQt", "QtQtQtQt.h.h.h.h.Z#U#V#W#X#Y#Z#0.S#1#2.hQtQt", "QtQtQtQt#3.t.v.x#4#5#6#7#8#9a.a#aaabac.hQtQt", "QtQtQtQt.6ad.kae.yafagahaiajakalamana..oQtQt", "QtQtQtQt.haeaoapaqaqarasatauavawaxayaz.oQtQt", "QtQtQtQtQt.h.h.h.h.haA.oaBaCaiaD.HaEaFQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtaGaHaIQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; PyQt-gpl-5.5.1/examples/activeqt/webbrowser/mainwindow.qrc0000644000076500000240000000050412613140041023747 0ustar philstaff00000000000000 icons/image0.xpm icons/image1.xpm icons/image2.xpm icons/image3.xpm icons/image4.xpm icons/image5.xpm icons/image6.xpm PyQt-gpl-5.5.1/examples/activeqt/webbrowser/mainwindow.ui0000644000076500000240000001326012613140041023602 0ustar philstaff00000000000000 MainWindow 0 0 812 605 Qt WebBrowser 0 6 QFrame::StyledPanel QFrame::Sunken 1 0 Qt::StrongFocus {8856F961-340A-11D0-A96B-00C04FD705A2} Navigation Qt::Horizontal 4 Address Qt::Horizontal 4 0 0 812 26 &File New &Help :/icons/image0.xpm Go :/icons/image1.xpm Back Backspace :/icons/image2.xpm Forward :/icons/image3.xpm Stop :/icons/image4.xpm Refresh :/icons/image5.xpm Home C&lose Close :/icons/image6.xpm Search About About Qt Window Ctrl+N QAxWidget QWidget
qaxwidget.h
1
PyQt-gpl-5.5.1/examples/activeqt/webbrowser/mainwindow_rc.py0000644000076500000240000015040112613140041024300 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 15:37:04 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\xa7\ \x00\ \x00\x03\x23\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ \x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\xca\xcc\x4d\x4c\ \x4f\x35\x8e\x8e\xb5\xad\xe6\x52\x32\x32\x55\x00\x21\x05\x43\x25\ \x1d\x2e\x25\x65\x85\x64\x05\x65\x03\x30\x00\x71\xf5\x40\xdc\x34\ \x30\x00\x73\x71\x01\x2a\x49\x2a\x83\x01\x56\x49\x65\x38\xc0\x94\ \x84\x89\x22\xc9\xc2\x25\x91\x34\xc0\x99\x30\x49\x14\xe3\x60\x4c\ \x84\x24\xaa\x5e\x64\x49\xb0\x04\x42\x16\xca\x82\x4b\xa2\xda\x8b\ \x45\x12\x21\x8b\x4d\x12\x2e\x8b\x55\x52\x0f\xee\x59\x74\x07\x21\ \x64\x51\x1d\xa4\x87\xea\x49\x0c\x7f\x22\xcb\xa2\x49\xe2\x0d\x3e\ \xfc\x01\x8f\x3f\xca\xe0\xd2\x70\x2e\xb5\xd2\x10\x69\x92\xb5\xd6\ \x5c\x00\xe0\x4d\x89\x7e\ \x00\x00\x05\x19\ \x00\ \x00\x11\x8f\x78\x9c\xe5\x96\x5b\x4f\x23\x47\x10\x85\xdf\xf9\x15\ \xd6\xd6\xdb\x2a\xaa\xc5\xe3\xb9\x2a\xca\x03\x77\x03\xcb\xc5\x5c\ \x8c\x21\xca\x43\xcf\x8c\x6f\x80\xcd\xc5\x06\x83\xa3\xfc\xf7\x54\ \xf7\xa9\xee\x45\xbb\xfb\xb0\x6c\xa4\x48\x51\x54\x80\xf8\x5c\x5d\ \xa7\x4e\xd7\xf4\x8c\xe7\xd3\xc7\x46\xef\xf8\xa0\xf1\xf1\xd3\xca\ \x6c\x6e\xe6\xe3\xaa\x51\x8d\xcc\x63\xe3\xe3\x78\x62\x86\xfd\xe8\ \xf7\x3f\x7e\xfb\x73\xe5\x43\x2b\x6a\xc8\x4f\x33\x8e\x1a\xd1\x87\ \x5f\x56\x3e\x74\xe6\x8d\xaa\x71\x78\x37\xed\x5b\xa0\x4b\x01\x5a\ \x5d\x6d\xe6\xfd\xcc\xb2\x31\x81\x07\x2e\xbf\xe5\x79\x00\xee\x80\ \xa3\xa6\xe6\xf7\x3d\x23\x6f\x48\xb9\x50\x66\xc7\xb9\x67\x3a\x06\ \xb7\x74\x3d\xc5\x96\x9b\x52\x5f\xa7\x8e\x4f\x02\xc3\xdf\x67\xe5\ \x42\xf3\x5d\xcf\xf0\x4b\x53\x70\xab\x18\x80\x2f\x02\x43\xff\x08\ \x1c\x47\xea\x67\xe4\x58\xfa\x57\xd0\x7f\x05\x87\xfc\xb5\xe5\xa8\ \x29\x79\xf4\x3b\x0d\x8c\xf5\x4b\xe5\x02\xfe\x78\x15\x1c\x47\x60\ \x33\xf6\x0c\x7f\x3c\x57\x36\x3a\xaf\x4d\xcf\xe8\xc7\x2f\xe0\xc4\ \xf7\xbf\x75\x5c\x78\x7d\xaa\xc1\x52\x8f\xfd\xed\x82\xfd\x7a\xda\ \x53\x56\x3d\x3a\xb3\xdc\x92\xfe\x65\xed\xf8\x10\x1c\xf2\x33\x70\ \xda\x52\xde\x76\x2c\xfa\xba\xdf\x1d\x70\x12\x61\xde\x66\xa8\xac\ \xfd\x79\x1d\x2c\xf5\x38\x2f\xfd\xc0\xd8\x8f\xae\x4f\x4b\xd5\x3f\ \xb7\x1c\x47\xb1\x29\x13\xc7\x11\x38\x89\xc0\xbc\xa7\x6c\x74\xbe\ \x6b\xe0\xb4\xa5\xf3\x2d\x95\x4b\xdd\xff\x7d\x60\xe8\xbf\x78\xd6\ \xfe\x53\x70\xe6\xfd\xdc\x39\x36\x69\x4b\xf5\xe7\xca\xaa\xc7\x1d\ \x70\xa6\xfd\xa8\xe5\x59\xfd\x6f\x28\xfb\xfd\x5c\x59\x4e\xc4\x2f\ \xe6\xcb\x4d\x70\x5a\x2a\x5f\x78\xc6\x3c\xf9\x24\x30\xf6\x73\x0c\ \xce\xfc\x7e\x16\xe0\x3c\x56\xfd\x89\x72\xa5\xe7\xa1\x72\x2c\xfe\ \xa1\x6f\x6e\x94\x7d\xbf\x23\xb0\xf8\x83\x5e\x1b\x1c\xf4\x0a\x65\ \xaf\x37\xb0\x9c\xb6\xa4\x1e\xf3\x1f\x05\x86\x7e\x09\xce\x63\x9d\ \xef\xb3\xb2\xd6\xf3\x02\x5c\xa8\x3e\xcf\x94\x35\x4f\x07\x8e\xcb\ \xac\xa5\xfa\x1b\x81\x71\x1e\x9f\xc0\x7e\x3d\xbb\xfd\x65\xad\xcc\ \xfb\x39\x05\xe7\xb1\xce\xeb\x50\xb9\xd2\xeb\x65\xc0\x45\xac\xe7\ \x23\xf7\xac\x7e\x3d\x57\x3a\x8f\xf5\xc0\xe8\xb7\x06\x36\x89\xfa\ \x75\xf7\x6f\x56\xe6\xb1\xf6\x3f\x53\xae\x74\xbe\x05\xb8\x88\xf5\ \xfe\x60\xcf\xb8\x3f\x38\x03\x7b\x3d\xee\x29\xd7\xca\xbb\xe0\xd2\ \xf7\x4b\x2c\xe7\x71\x5e\x19\xf4\x7b\x0d\x8c\x7e\x07\xe0\x42\xfd\ \x10\x29\x57\xfa\xfc\xab\xc0\x41\x7f\x07\xec\xf5\xf9\x4a\x59\xf3\ \xe4\xce\x7f\x5e\x79\x7d\x32\x60\x93\xe8\x7c\x2f\xc1\xa1\xbe\xad\ \xec\xeb\xdd\xf9\x2e\xc4\x8f\xfa\x3d\x0f\x0c\xbd\x4c\xd9\xeb\x97\ \x60\x53\xeb\xf5\x5a\x82\xab\x54\xf5\x9f\x95\xfb\xca\xee\x79\x5b\ \x54\xbe\x9e\x9f\xc0\x26\x51\xbd\x47\x70\xa8\x9f\x28\xfb\x7a\xf7\ \x7c\x94\xd5\x09\xfc\x51\x1a\x18\x7a\x5d\xcf\x7a\x7d\xf7\x95\x6b\ \xe5\x08\x1c\xf4\x1e\xc1\xb5\xef\xe7\xbe\x7f\x4c\x6d\xc3\xf1\xd8\ \xb3\xd6\xdf\x07\x46\xfe\x01\x5c\xab\x1e\xf5\xc1\xfd\x4c\xd9\x9d\ \x8f\x32\x29\xbd\x9f\xcd\xc0\xa8\xdf\xf2\xac\xcf\x8f\x6d\xe5\x5a\ \x79\x00\x0e\xfa\x0f\x60\x41\xf8\x75\xe7\xa5\xac\x4b\xf5\x63\x6a\ \xcf\x5a\x9f\x82\x43\xfd\x18\x1c\xfc\x8d\x94\x55\x8f\xdc\xf3\x5c\ \xa6\xef\xf3\xee\xfb\xa9\xea\x87\xf5\xd7\xe0\x90\x1f\x28\x7b\x3f\ \xee\x79\x55\xa7\x41\x4f\xd9\xaf\xe7\x5b\x65\xbf\xde\xcd\xab\xee\ \x87\xfd\xb8\xfb\xc5\x76\x53\x76\xef\x0b\x4e\x1e\xec\x9e\xd7\x83\ \x90\xef\xcc\xff\x59\xfc\xff\x34\x98\xd8\x70\xc9\x15\xd3\x3f\xd0\ \xa8\xb9\xcf\x03\x1e\xf2\x88\xc7\x3f\xad\x71\xcd\x37\x7c\xcb\x13\ \x9e\xf2\x1d\xdf\xff\xb4\x8f\x01\x3f\xf0\xa3\xa8\xcc\x78\xce\xd5\ \x4f\x69\x3c\x89\xc2\xb3\x28\x58\x95\x05\xbf\xf0\xeb\xdb\xc9\xfc\ \xb0\xc6\x52\x63\x22\xb1\xc6\xeb\xbc\xc1\x9b\x5f\x6b\xc8\xe4\xb7\ \x78\x5b\xfe\x7e\x77\xf2\x32\x8f\x1d\x6e\x8b\x42\x5b\x55\x76\x65\ \x32\x7b\xbc\xff\x45\x83\x3f\xf3\x01\x1f\xf2\x11\x1f\x73\x87\x4f\ \xf8\x94\xcf\xf8\x5c\x14\x83\x1e\x77\xf9\x82\x7b\x52\x7f\x29\xbf\ \x6d\xf5\x73\x25\x57\x69\x95\xbb\x41\xa3\xc9\x11\xb7\x38\xe6\x44\ \xa6\x9f\xca\xff\x97\x9c\x71\x2e\x27\xa2\x10\x19\x22\x43\xa5\x7c\ \xb2\xa3\x71\xe9\x7e\x45\x89\x2a\x9e\x52\x2d\xbb\x24\xbc\xa3\x51\ \x9f\x06\x34\xa4\x11\x8d\x79\x20\x7f\x87\x12\xd7\x74\x63\x43\xce\ \x45\xcc\x31\xdd\x4a\x45\x2f\xe8\x20\xc4\x13\x4d\x68\x4a\x77\x78\ \xaf\xe3\x09\xe1\xca\xd9\x58\x92\xfd\x6f\xe9\xae\xc2\x83\x8b\x89\ \xac\xb7\x55\x3d\x51\x42\x7d\x4f\x23\xa3\x19\xef\xe1\xdd\x4e\xae\ \xdb\x83\xab\x6b\x87\xb8\x7a\xe3\x7f\x27\x28\xec\x3a\x3f\x36\xd6\ \x78\x8d\x9e\xe8\xc9\xee\x47\x35\xda\xd2\x73\x69\xab\xc2\x9a\x2c\ \xf4\xfa\x36\x32\x57\xff\x4c\x0b\x7a\xa1\x57\x5a\xe2\x1d\x56\xae\ \x95\xf5\xfb\xa5\xc3\xba\xfd\xb5\x7d\x5c\xac\x3b\x0f\xbd\xb7\x0e\ \x78\x41\x1b\x3c\xa4\x4d\xda\xa2\x6d\xbc\x87\xcb\x09\xde\x91\xdc\ \x42\xb4\xdb\x64\xb3\x53\xe9\x30\xa3\x5d\xe9\x62\x63\x8f\xda\xc1\ \x59\xa6\x0a\x0b\xf9\xf4\x95\xf6\xe9\x33\x9f\xe3\x5d\x4c\x4e\xef\ \x94\x0e\x45\xf5\x88\x8e\xe5\xf3\x7d\xea\x48\x9c\xd0\x29\x9d\xd1\ \xb9\x44\x97\x2e\xa4\x83\x3a\xb4\x0a\xb2\x7a\x53\x56\x6e\x89\x42\ \x17\xe7\x83\x7a\x3c\x92\x75\x1d\xba\x74\x75\xe7\x74\x45\xab\xd4\ \xe4\x7b\x7b\xca\x5c\x74\x29\x12\xa7\x99\x4e\x71\x41\x2d\x55\x88\ \x29\x79\x7b\xd6\x29\xa5\x26\x65\xbc\xf9\xfd\xd3\x2e\xd9\x1c\x0e\ \xa8\x90\x3d\xbe\x1a\xb6\x73\x90\xf3\x4b\xef\xb8\xe7\x88\x73\xa9\ \xb6\xb3\x9a\xd1\x85\x21\x63\x28\xa2\xde\x3b\xef\x5b\x32\xa5\x9d\ \xb5\xcc\xec\x42\xa6\xb5\x65\xaa\xf7\xdf\xfb\xa6\xe6\x63\xd3\x97\ \x2b\x21\x1e\xa8\x6b\x06\x5f\x3c\xbc\xcb\xc7\x50\x1c\xc8\x1c\xcd\ \x88\xd2\xaf\xb3\x3f\xac\x31\x76\x7b\xb8\xe6\xeb\x6f\xb3\x3f\xac\ \x71\x63\x6e\xcd\xcd\xf7\x9e\xea\xff\xb5\xef\xb9\x7f\x41\xe3\xaf\ \x5f\x57\xfe\x06\xf5\x23\xb8\x71\ \x00\x00\x0e\x9f\ \x2f\ \x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ \x63\x68\x61\x72\x20\x2a\x69\x6d\x61\x67\x65\x36\x5b\x5d\x3d\x7b\ \x0a\x22\x32\x32\x20\x32\x32\x20\x31\x36\x35\x20\x32\x22\x2c\x0a\ \x22\x51\x74\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x22\x2e\x68\ \x20\x63\x20\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x22\x2e\x6f\ \x20\x63\x20\x23\x30\x31\x30\x31\x30\x31\x22\x2c\x0a\x22\x61\x46\ \x20\x63\x20\x23\x30\x33\x30\x33\x30\x33\x22\x2c\x0a\x22\x23\x6e\ \x20\x63\x20\x23\x30\x36\x30\x36\x30\x36\x22\x2c\x0a\x22\x2e\x48\ \x20\x63\x20\x23\x30\x38\x30\x38\x30\x38\x22\x2c\x0a\x22\x2e\x72\ \x20\x63\x20\x23\x30\x63\x30\x63\x30\x63\x22\x2c\x0a\x22\x2e\x71\ \x20\x63\x20\x23\x31\x32\x31\x32\x31\x32\x22\x2c\x0a\x22\x23\x56\ \x20\x63\x20\x23\x31\x32\x34\x65\x37\x66\x22\x2c\x0a\x22\x23\x6d\ \x20\x63\x20\x23\x31\x33\x31\x33\x31\x33\x22\x2c\x0a\x22\x2e\x47\ \x20\x63\x20\x23\x31\x36\x31\x36\x31\x35\x22\x2c\x0a\x22\x61\x49\ \x20\x63\x20\x23\x31\x37\x32\x63\x61\x63\x22\x2c\x0a\x22\x2e\x36\ \x20\x63\x20\x23\x31\x38\x31\x38\x31\x38\x22\x2c\x0a\x22\x61\x48\ \x20\x63\x20\x23\x31\x38\x34\x31\x62\x32\x22\x2c\x0a\x22\x2e\x70\ \x20\x63\x20\x23\x31\x39\x31\x39\x31\x39\x22\x2c\x0a\x22\x23\x38\ \x20\x63\x20\x23\x31\x39\x32\x38\x62\x61\x22\x2c\x0a\x22\x23\x57\ \x20\x63\x20\x23\x31\x39\x32\x39\x62\x61\x22\x2c\x0a\x22\x61\x6a\ \x20\x63\x20\x23\x31\x39\x32\x61\x62\x61\x22\x2c\x0a\x22\x61\x76\ \x20\x63\x20\x23\x31\x61\x33\x31\x63\x32\x22\x2c\x0a\x22\x61\x45\ \x20\x63\x20\x23\x31\x62\x31\x62\x31\x62\x22\x2c\x0a\x22\x61\x44\ \x20\x63\x20\x23\x31\x62\x32\x62\x63\x38\x22\x2c\x0a\x22\x61\x74\ \x20\x63\x20\x23\x31\x63\x37\x39\x64\x32\x22\x2c\x0a\x22\x61\x68\ \x20\x63\x20\x23\x31\x63\x37\x64\x64\x34\x22\x2c\x0a\x22\x61\x41\ \x20\x63\x20\x23\x31\x64\x31\x64\x31\x64\x22\x2c\x0a\x22\x61\x43\ \x20\x63\x20\x23\x31\x64\x37\x61\x64\x37\x22\x2c\x0a\x22\x23\x36\ \x20\x63\x20\x23\x31\x64\x37\x65\x64\x61\x22\x2c\x0a\x22\x2e\x35\ \x20\x63\x20\x23\x31\x65\x31\x65\x31\x65\x22\x2c\x0a\x22\x23\x37\ \x20\x63\x20\x23\x31\x65\x38\x61\x65\x30\x22\x2c\x0a\x22\x61\x69\ \x20\x63\x20\x23\x31\x65\x38\x64\x65\x30\x22\x2c\x0a\x22\x61\x75\ \x20\x63\x20\x23\x31\x65\x39\x30\x65\x30\x22\x2c\x0a\x22\x2e\x67\ \x20\x63\x20\x23\x32\x34\x32\x34\x32\x34\x22\x2c\x0a\x22\x23\x35\ \x20\x63\x20\x23\x33\x31\x33\x62\x36\x63\x22\x2c\x0a\x22\x61\x42\ \x20\x63\x20\x23\x33\x34\x33\x64\x38\x64\x22\x2c\x0a\x22\x23\x33\ \x20\x63\x20\x23\x33\x39\x33\x39\x33\x39\x22\x2c\x0a\x22\x2e\x66\ \x20\x63\x20\x23\x33\x64\x33\x64\x33\x64\x22\x2c\x0a\x22\x61\x6b\ \x20\x63\x20\x23\x34\x33\x33\x39\x36\x37\x22\x2c\x0a\x22\x23\x43\ \x20\x63\x20\x23\x34\x33\x34\x34\x34\x32\x22\x2c\x0a\x22\x61\x77\ \x20\x63\x20\x23\x34\x34\x33\x63\x36\x65\x22\x2c\x0a\x22\x23\x6c\ \x20\x63\x20\x23\x34\x35\x34\x36\x34\x33\x22\x2c\x0a\x22\x61\x73\ \x20\x63\x20\x23\x34\x35\x34\x66\x61\x33\x22\x2c\x0a\x22\x2e\x34\ \x20\x63\x20\x23\x34\x37\x34\x38\x34\x35\x22\x2c\x0a\x22\x23\x52\ \x20\x63\x20\x23\x34\x37\x34\x38\x34\x36\x22\x2c\x0a\x22\x2e\x65\ \x20\x63\x20\x23\x34\x38\x34\x38\x34\x38\x22\x2c\x0a\x22\x61\x47\ \x20\x63\x20\x23\x34\x38\x35\x36\x61\x30\x22\x2c\x0a\x22\x2e\x64\ \x20\x63\x20\x23\x34\x61\x34\x61\x34\x61\x22\x2c\x0a\x22\x23\x39\ \x20\x63\x20\x23\x34\x63\x34\x31\x36\x61\x22\x2c\x0a\x22\x2e\x63\ \x20\x63\x20\x23\x34\x63\x34\x63\x34\x63\x22\x2c\x0a\x22\x61\x67\ \x20\x63\x20\x23\x34\x63\x35\x63\x61\x65\x22\x2c\x0a\x22\x23\x58\ \x20\x63\x20\x23\x34\x64\x34\x36\x36\x39\x22\x2c\x0a\x22\x23\x7a\ \x20\x63\x20\x23\x34\x64\x63\x32\x62\x32\x22\x2c\x0a\x22\x23\x50\ \x20\x63\x20\x23\x34\x65\x34\x34\x35\x61\x22\x2c\x0a\x22\x23\x47\ \x20\x63\x20\x23\x35\x33\x35\x30\x34\x65\x22\x2c\x0a\x22\x2e\x6c\ \x20\x63\x20\x23\x35\x34\x35\x34\x35\x34\x22\x2c\x0a\x22\x2e\x62\ \x20\x63\x20\x23\x35\x35\x35\x35\x35\x35\x22\x2c\x0a\x22\x23\x51\ \x20\x63\x20\x23\x35\x39\x35\x32\x37\x34\x22\x2c\x0a\x22\x23\x69\ \x20\x63\x20\x23\x36\x32\x62\x32\x61\x32\x22\x2c\x0a\x22\x2e\x61\ \x20\x63\x20\x23\x36\x37\x36\x37\x36\x37\x22\x2c\x0a\x22\x23\x6a\ \x20\x63\x20\x23\x36\x39\x62\x36\x61\x33\x22\x2c\x0a\x22\x2e\x46\ \x20\x63\x20\x23\x36\x66\x36\x66\x36\x61\x22\x2c\x0a\x22\x2e\x4b\ \x20\x63\x20\x23\x36\x66\x38\x62\x38\x39\x22\x2c\x0a\x22\x61\x78\ \x20\x63\x20\x23\x37\x34\x37\x34\x37\x34\x22\x2c\x0a\x22\x23\x61\ \x20\x63\x20\x23\x37\x36\x61\x31\x61\x30\x22\x2c\x0a\x22\x2e\x23\ \x20\x63\x20\x23\x37\x39\x37\x39\x37\x39\x22\x2c\x0a\x22\x23\x41\ \x20\x63\x20\x23\x37\x62\x64\x37\x65\x38\x22\x2c\x0a\x22\x61\x79\ \x20\x63\x20\x23\x37\x64\x37\x64\x37\x64\x22\x2c\x0a\x22\x23\x55\ \x20\x63\x20\x23\x37\x65\x37\x64\x37\x33\x22\x2c\x0a\x22\x2e\x49\ \x20\x63\x20\x23\x38\x30\x38\x30\x38\x30\x22\x2c\x0a\x22\x2e\x4f\ \x20\x63\x20\x23\x38\x31\x61\x33\x62\x38\x22\x2c\x0a\x22\x61\x7a\ \x20\x63\x20\x23\x38\x32\x38\x32\x38\x32\x22\x2c\x0a\x22\x23\x79\ \x20\x63\x20\x23\x38\x32\x64\x31\x63\x30\x22\x2c\x0a\x22\x23\x53\ \x20\x63\x20\x23\x38\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x23\x4f\ \x20\x63\x20\x23\x38\x35\x37\x65\x37\x63\x22\x2c\x0a\x22\x23\x46\ \x20\x63\x20\x23\x38\x36\x61\x64\x64\x32\x22\x2c\x0a\x22\x23\x6b\ \x20\x63\x20\x23\x38\x36\x63\x64\x64\x61\x22\x2c\x0a\x22\x23\x4e\ \x20\x63\x20\x23\x38\x39\x62\x31\x62\x64\x22\x2c\x0a\x22\x23\x68\ \x20\x63\x20\x23\x38\x61\x63\x65\x63\x33\x22\x2c\x0a\x22\x23\x6f\ \x20\x63\x20\x23\x38\x63\x38\x63\x38\x63\x22\x2c\x0a\x22\x23\x4c\ \x20\x63\x20\x23\x38\x63\x62\x62\x63\x61\x22\x2c\x0a\x22\x61\x6c\ \x20\x63\x20\x23\x38\x64\x38\x64\x38\x64\x22\x2c\x0a\x22\x2e\x73\ \x20\x63\x20\x23\x38\x66\x38\x66\x38\x66\x22\x2c\x0a\x22\x23\x48\ \x20\x63\x20\x23\x39\x30\x39\x30\x39\x30\x22\x2c\x0a\x22\x23\x4b\ \x20\x63\x20\x23\x39\x30\x62\x61\x63\x39\x22\x2c\x0a\x22\x23\x4d\ \x20\x63\x20\x23\x39\x31\x63\x34\x63\x66\x22\x2c\x0a\x22\x23\x74\ \x20\x63\x20\x23\x39\x32\x39\x32\x39\x32\x22\x2c\x0a\x22\x2e\x58\ \x20\x63\x20\x23\x39\x34\x63\x32\x63\x66\x22\x2c\x0a\x22\x2e\x4e\ \x20\x63\x20\x23\x39\x34\x63\x32\x64\x30\x22\x2c\x0a\x22\x2e\x57\ \x20\x63\x20\x23\x39\x35\x39\x35\x39\x35\x22\x2c\x0a\x22\x23\x42\ \x20\x63\x20\x23\x39\x36\x62\x39\x63\x62\x22\x2c\x0a\x22\x2e\x33\ \x20\x63\x20\x23\x39\x37\x62\x65\x64\x65\x22\x2c\x0a\x22\x2e\x4c\ \x20\x63\x20\x23\x39\x38\x63\x32\x63\x65\x22\x2c\x0a\x22\x2e\x50\ \x20\x63\x20\x23\x39\x62\x39\x62\x39\x62\x22\x2c\x0a\x22\x61\x2e\ \x20\x63\x20\x23\x39\x63\x39\x63\x39\x63\x22\x2c\x0a\x22\x61\x6d\ \x20\x63\x20\x23\x39\x64\x39\x64\x39\x64\x22\x2c\x0a\x22\x23\x73\ \x20\x63\x20\x23\x39\x64\x62\x64\x63\x34\x22\x2c\x0a\x22\x23\x62\ \x20\x63\x20\x23\x39\x65\x39\x65\x39\x65\x22\x2c\x0a\x22\x23\x59\ \x20\x63\x20\x23\x61\x30\x61\x30\x61\x30\x22\x2c\x0a\x22\x61\x6e\ \x20\x63\x20\x23\x61\x36\x61\x36\x61\x36\x22\x2c\x0a\x22\x23\x76\ \x20\x63\x20\x23\x61\x36\x64\x31\x64\x36\x22\x2c\x0a\x22\x2e\x5a\ \x20\x63\x20\x23\x61\x37\x61\x31\x61\x31\x22\x2c\x0a\x22\x23\x49\ \x20\x63\x20\x23\x61\x37\x61\x37\x61\x37\x22\x2c\x0a\x22\x23\x44\ \x20\x63\x20\x23\x61\x37\x65\x64\x64\x65\x22\x2c\x0a\x22\x2e\x4d\ \x20\x63\x20\x23\x61\x38\x64\x38\x65\x35\x22\x2c\x0a\x22\x23\x75\ \x20\x63\x20\x23\x61\x65\x61\x65\x61\x65\x22\x2c\x0a\x22\x61\x63\ \x20\x63\x20\x23\x62\x31\x62\x31\x62\x31\x22\x2c\x0a\x22\x61\x23\ \x20\x63\x20\x23\x62\x32\x62\x32\x62\x32\x22\x2c\x0a\x22\x2e\x32\ \x20\x63\x20\x23\x62\x35\x63\x62\x64\x36\x22\x2c\x0a\x22\x2e\x56\ \x20\x63\x20\x23\x62\x36\x62\x36\x62\x36\x22\x2c\x0a\x22\x61\x72\ \x20\x63\x20\x23\x62\x37\x62\x37\x62\x37\x22\x2c\x0a\x22\x23\x5a\ \x20\x63\x20\x23\x62\x38\x62\x38\x62\x38\x22\x2c\x0a\x22\x23\x32\ \x20\x63\x20\x23\x62\x61\x62\x61\x62\x61\x22\x2c\x0a\x22\x2e\x51\ \x20\x63\x20\x23\x62\x61\x62\x62\x62\x39\x22\x2c\x0a\x22\x61\x71\ \x20\x63\x20\x23\x62\x62\x62\x62\x62\x62\x22\x2c\x0a\x22\x23\x63\ \x20\x63\x20\x23\x62\x63\x62\x63\x62\x63\x22\x2c\x0a\x22\x2e\x38\ \x20\x63\x20\x23\x62\x66\x62\x66\x62\x66\x22\x2c\x0a\x22\x61\x70\ \x20\x63\x20\x23\x63\x30\x63\x30\x63\x30\x22\x2c\x0a\x22\x2e\x31\ \x20\x63\x20\x23\x63\x31\x64\x39\x64\x32\x22\x2c\x0a\x22\x61\x61\ \x20\x63\x20\x23\x63\x38\x63\x38\x63\x38\x22\x2c\x0a\x22\x61\x62\ \x20\x63\x20\x23\x63\x61\x63\x61\x63\x61\x22\x2c\x0a\x22\x61\x6f\ \x20\x63\x20\x23\x63\x62\x63\x62\x63\x62\x22\x2c\x0a\x22\x2e\x59\ \x20\x63\x20\x23\x63\x63\x66\x38\x66\x31\x22\x2c\x0a\x22\x23\x4a\ \x20\x63\x20\x23\x63\x64\x63\x64\x63\x64\x22\x2c\x0a\x22\x2e\x52\ \x20\x63\x20\x23\x63\x65\x63\x65\x63\x65\x22\x2c\x0a\x22\x23\x70\ \x20\x63\x20\x23\x64\x31\x66\x39\x66\x34\x22\x2c\x0a\x22\x23\x34\ \x20\x63\x20\x23\x64\x35\x64\x35\x64\x35\x22\x2c\x0a\x22\x23\x77\ \x20\x63\x20\x23\x64\x35\x65\x63\x65\x34\x22\x2c\x0a\x22\x2e\x39\ \x20\x63\x20\x23\x64\x35\x66\x36\x66\x35\x22\x2c\x0a\x22\x23\x30\ \x20\x63\x20\x23\x64\x36\x64\x36\x64\x36\x22\x2c\x0a\x22\x2e\x55\ \x20\x63\x20\x23\x64\x37\x64\x37\x64\x37\x22\x2c\x0a\x22\x61\x66\ \x20\x63\x20\x23\x64\x38\x64\x38\x64\x38\x22\x2c\x0a\x22\x2e\x78\ \x20\x63\x20\x23\x64\x61\x64\x61\x64\x61\x22\x2c\x0a\x22\x2e\x79\ \x20\x63\x20\x23\x64\x62\x64\x62\x64\x62\x22\x2c\x0a\x22\x2e\x77\ \x20\x63\x20\x23\x64\x63\x64\x63\x64\x63\x22\x2c\x0a\x22\x23\x65\ \x20\x63\x20\x23\x64\x63\x66\x37\x66\x34\x22\x2c\x0a\x22\x23\x31\ \x20\x63\x20\x23\x64\x64\x64\x64\x64\x64\x22\x2c\x0a\x22\x61\x65\ \x20\x63\x20\x23\x64\x65\x64\x65\x64\x65\x22\x2c\x0a\x22\x2e\x45\ \x20\x63\x20\x23\x64\x66\x64\x66\x64\x66\x22\x2c\x0a\x22\x2e\x7a\ \x20\x63\x20\x23\x65\x30\x65\x30\x65\x30\x22\x2c\x0a\x22\x23\x67\ \x20\x63\x20\x23\x65\x30\x65\x62\x65\x34\x22\x2c\x0a\x22\x23\x71\ \x20\x63\x20\x23\x65\x31\x65\x64\x65\x61\x22\x2c\x0a\x22\x23\x64\ \x20\x63\x20\x23\x65\x32\x65\x32\x65\x32\x22\x2c\x0a\x22\x23\x78\ \x20\x63\x20\x23\x65\x32\x65\x62\x65\x32\x22\x2c\x0a\x22\x2e\x30\ \x20\x63\x20\x23\x65\x32\x65\x65\x65\x35\x22\x2c\x0a\x22\x2e\x76\ \x20\x63\x20\x23\x65\x33\x65\x33\x65\x33\x22\x2c\x0a\x22\x23\x23\ \x20\x63\x20\x23\x65\x33\x65\x37\x64\x35\x22\x2c\x0a\x22\x23\x72\ \x20\x63\x20\x23\x65\x34\x65\x62\x64\x39\x22\x2c\x0a\x22\x23\x45\ \x20\x63\x20\x23\x65\x34\x66\x32\x65\x63\x22\x2c\x0a\x22\x2e\x75\ \x20\x63\x20\x23\x65\x35\x65\x35\x65\x35\x22\x2c\x0a\x22\x2e\x53\ \x20\x63\x20\x23\x65\x37\x65\x37\x65\x37\x22\x2c\x0a\x22\x2e\x6b\ \x20\x63\x20\x23\x65\x39\x65\x39\x65\x39\x22\x2c\x0a\x22\x2e\x41\ \x20\x63\x20\x23\x65\x62\x65\x62\x65\x62\x22\x2c\x0a\x22\x2e\x44\ \x20\x63\x20\x23\x65\x64\x65\x64\x65\x64\x22\x2c\x0a\x22\x2e\x74\ \x20\x63\x20\x23\x66\x30\x66\x30\x66\x30\x22\x2c\x0a\x22\x23\x54\ \x20\x63\x20\x23\x66\x34\x66\x34\x66\x34\x22\x2c\x0a\x22\x2e\x6e\ \x20\x63\x20\x23\x66\x36\x66\x36\x66\x36\x22\x2c\x0a\x22\x2e\x43\ \x20\x63\x20\x23\x66\x37\x66\x37\x66\x37\x22\x2c\x0a\x22\x23\x66\ \x20\x63\x20\x23\x66\x38\x66\x35\x66\x32\x22\x2c\x0a\x22\x2e\x6d\ \x20\x63\x20\x23\x66\x38\x66\x38\x66\x38\x22\x2c\x0a\x22\x2e\x37\ \x20\x63\x20\x23\x66\x39\x66\x39\x66\x39\x22\x2c\x0a\x22\x61\x64\ \x20\x63\x20\x23\x66\x61\x66\x61\x66\x61\x22\x2c\x0a\x22\x23\x2e\ \x20\x63\x20\x23\x66\x62\x66\x30\x65\x62\x22\x2c\x0a\x22\x2e\x4a\ \x20\x63\x20\x23\x66\x62\x66\x62\x66\x62\x22\x2c\x0a\x22\x2e\x54\ \x20\x63\x20\x23\x66\x63\x66\x63\x66\x63\x22\x2c\x0a\x22\x2e\x42\ \x20\x63\x20\x23\x66\x64\x66\x64\x66\x64\x22\x2c\x0a\x22\x2e\x6a\ \x20\x63\x20\x23\x66\x65\x66\x65\x66\x65\x22\x2c\x0a\x22\x2e\x69\ \x20\x63\x20\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x23\x2e\x61\x2e\x62\x2e\x63\ \x2e\x64\x2e\x64\x2e\x65\x2e\x66\x2e\x67\x2e\x68\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x23\x2e\x69\x2e\x69\x2e\x69\x2e\x69\ \x2e\x69\x2e\x69\x2e\x69\x2e\x69\x2e\x69\x2e\x68\x2e\x68\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x61\x2e\x6a\x2e\x6a\x2e\x6a\x2e\x6a\ \x2e\x6a\x2e\x6a\x2e\x69\x2e\x69\x2e\x69\x2e\x68\x2e\x6b\x2e\x68\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x6c\x2e\x6d\x2e\x6e\x2e\x6f\x2e\x70\ \x2e\x71\x2e\x72\x2e\x73\x2e\x6a\x2e\x69\x2e\x68\x2e\x74\x2e\x75\ \x2e\x68\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x65\x2e\x76\x2e\x77\x2e\x78\x2e\x79\ \x2e\x7a\x2e\x41\x2e\x6e\x2e\x42\x2e\x42\x2e\x68\x2e\x43\x2e\x44\ \x2e\x45\x2e\x68\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x2e\x68\x2e\x68\x2e\x68\x2e\x68\x2e\x68\x2e\x46\ \x2e\x47\x2e\x48\x2e\x49\x2e\x6e\x2e\x4a\x2e\x68\x2e\x68\x2e\x68\ \x2e\x68\x2e\x68\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x2e\x68\x2e\x4b\x2e\x4c\x2e\x4d\x2e\x4e\x2e\x4f\x2e\x68\ \x2e\x50\x2e\x51\x2e\x52\x2e\x53\x2e\x6e\x2e\x54\x2e\x6a\x2e\x55\ \x2e\x56\x2e\x57\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x2e\x58\x2e\x59\x2e\x5a\x2e\x30\x2e\x31\x2e\x32\x2e\x33\ \x2e\x68\x2e\x34\x2e\x35\x2e\x36\x2e\x71\x2e\x72\x2e\x73\x2e\x37\ \x2e\x76\x2e\x38\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x2e\x39\x23\x2e\x2e\x23\x23\x23\x2e\x46\x2e\x46\x2e\x46\ \x23\x61\x2e\x68\x23\x62\x23\x63\x23\x64\x2e\x6d\x2e\x6a\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x23\x65\x23\x66\x2e\x61\x23\x67\x23\x68\x23\x69\x23\x6a\ \x23\x6b\x2e\x68\x23\x6c\x23\x6d\x2e\x72\x23\x6e\x23\x6f\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x23\x70\x23\x71\x2e\x61\x23\x72\x2e\x46\x2e\x46\x2e\x46\ \x23\x73\x2e\x68\x23\x74\x23\x75\x2e\x78\x2e\x6e\x2e\x6a\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x23\x76\x23\x77\x2e\x23\x23\x78\x23\x79\x23\x7a\x23\x41\ \x23\x42\x2e\x68\x23\x43\x23\x6d\x23\x6d\x2e\x71\x23\x6f\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x2e\x68\x23\x44\x2e\x5a\x23\x45\x2e\x46\x2e\x46\x23\x46\ \x2e\x68\x23\x47\x23\x48\x23\x49\x23\x4a\x2e\x41\x2e\x37\x2e\x6d\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x2e\x68\x23\x4b\x23\x4c\x23\x4d\x23\x4e\x2e\x68\ \x23\x4f\x23\x50\x23\x51\x23\x52\x23\x6d\x2e\x71\x23\x53\x23\x54\ \x23\x64\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x68\x2e\x68\x2e\x68\x2e\x68\x2e\x5a\ \x23\x55\x23\x56\x23\x57\x23\x58\x23\x59\x23\x5a\x23\x30\x2e\x53\ \x23\x31\x23\x32\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x23\x33\x2e\x74\x2e\x76\x2e\x78\x23\x34\ \x23\x35\x23\x36\x23\x37\x23\x38\x23\x39\x61\x2e\x61\x23\x61\x61\ \x61\x62\x61\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x36\x61\x64\x2e\x6b\x61\x65\x2e\x79\ \x61\x66\x61\x67\x61\x68\x61\x69\x61\x6a\x61\x6b\x61\x6c\x61\x6d\ \x61\x6e\x61\x2e\x2e\x6f\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x68\x61\x65\x61\x6f\x61\x70\x61\x71\ \x61\x71\x61\x72\x61\x73\x61\x74\x61\x75\x61\x76\x61\x77\x61\x78\ \x61\x79\x61\x7a\x2e\x6f\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x68\x2e\x68\x2e\x68\x2e\x68\ \x2e\x68\x61\x41\x2e\x6f\x61\x42\x61\x43\x61\x69\x61\x44\x2e\x48\ \x61\x45\x61\x46\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x61\x47\x61\x48\x61\x49\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x7d\x3b\x0a\ \x00\x00\x05\x1a\ \x00\ \x00\x11\x8f\x78\x9c\xe5\x96\x49\x73\x32\x47\x0c\x86\xef\xfe\x15\ \x94\x75\x73\xa5\xf4\xc1\xcc\x30\xcc\x54\x2a\x07\xef\x60\xbc\x80\ \x8d\xd7\x54\x0e\x3d\x1b\x06\xbc\xb1\x18\x2f\xa9\xfc\xf7\xa8\x5b\ \x52\xdb\xf9\xca\x17\x93\x5b\x52\x32\x86\x07\x49\xaf\xa4\xee\x9e\ \x19\x7e\x6c\xd4\xae\x7a\x47\xb5\x8d\x1f\x6b\xf3\x85\x59\x8c\xf2\ \x5a\x7e\x6b\x66\xb5\x8d\xd1\xbd\x19\x96\x8d\xdf\xff\xf8\xed\xcf\ \xb5\xf5\x30\xa8\xd1\x5f\x23\x0a\x6a\xc1\xfa\x2f\x6b\xeb\xfd\x45\ \x2d\xaf\x1d\x3f\x3e\x94\x16\xe0\x84\x00\xea\xf5\x46\xbd\x6a\x39\ \xee\x31\x07\x8d\xb2\x72\x7c\xaa\x2c\xfe\x33\xcf\xec\x1f\x08\xa7\ \xcc\xe6\x96\x39\x54\xff\xb1\xe3\x84\xfc\x9c\xff\xca\xec\xfd\xdb\ \xc2\x92\x0f\xbb\x96\x1b\xa4\x57\x72\xfc\x8c\xd9\xfb\x1f\x99\xa3\ \x40\xb8\xef\x98\xf4\x0a\x37\x8f\x99\x28\x4b\xbe\xb0\x8f\x6f\x0b\ \x1b\xe9\x77\x6c\x39\x68\x84\x5a\x6f\xce\x1c\x05\xac\x07\xfb\xc2\ \x12\x8f\x29\x73\x53\xf5\x02\xc7\x69\x98\xe6\xb1\xd3\x1b\x2a\x17\ \xcc\xc0\x1c\x05\x39\xeb\x3d\x29\x8b\xfe\x39\xb3\xea\x99\x52\x58\ \xea\xc1\x9b\xe5\x90\xea\x71\x3c\x06\xca\xd2\x6f\x47\x58\xe3\xdf\ \x99\xe3\x50\xb8\xe1\x38\x8d\x4c\x56\x38\x3e\x54\x96\xfa\x5b\xcc\ \x3e\xfe\x45\x38\x13\xbe\xb0\x1c\x05\x54\xdf\xcd\x03\x77\x9e\x39\ \xff\x92\x39\x0e\xe5\xbc\x4c\x85\x25\x1f\x1b\xcc\x2d\xd5\x6f\x3a\ \x36\x4d\x23\x7a\x07\xcc\xde\xdf\x15\x96\x7c\x93\x33\x27\x91\x70\ \x66\xb9\x49\xf5\x78\xbd\x71\xe0\x99\xd7\xe7\x88\xb9\x15\xb2\x3e\ \xe6\xca\xbc\x5e\x78\x2e\x9c\x49\xff\x0b\x65\x39\x9f\x9b\xcc\x5a\ \x0f\xae\x1c\x9b\x38\x34\x6e\xfd\xf0\x82\x39\x89\x64\xde\x3d\x65\ \x89\x5f\x0a\xe7\xd2\x6f\x61\x39\x0e\xe3\x8c\xd7\x1f\x4b\xe6\x56\ \x26\xfd\x5f\x7a\xe6\xfe\x43\x65\xe9\xbf\xcf\x9c\x44\xb2\xff\x4d\ \xe1\x5c\xea\x67\xca\x52\x7f\xcc\x9c\xea\x7a\x55\x8e\xb3\x56\x28\ \xfb\x5f\x57\x96\xfa\x67\xcc\x49\x24\xe7\xf3\x99\x59\xf3\x71\x5b\ \x58\xe7\x19\x59\x6e\x7d\xf4\xfb\xce\x9c\x44\x59\xd3\xf1\x58\x99\ \xf5\x21\x16\xce\x25\x3e\x52\x96\xf9\x32\xe6\x34\x97\xfd\xe9\x30\ \x9b\xa6\xcc\xf3\x20\x5c\x08\xdf\x38\xce\x7c\xbd\x53\xe1\x5c\xd6\ \xf7\x80\x39\x8d\x84\x39\x3f\x33\x4d\xd1\xef\x09\xab\x5e\xce\x9c\ \x69\x3d\x77\x7e\x92\x28\x89\xd2\xdc\x71\xa8\x2c\xfb\x3f\x12\xce\ \xe5\x7a\xbf\x63\xd6\x7a\xc6\x08\x8b\x1f\xdf\x98\xb5\x1e\x9e\x30\ \xfb\x7a\x12\x9f\xa9\xdf\x9d\xc7\x24\x4f\xb5\x9e\x51\x96\x79\x77\ \x84\x75\xde\x7b\x65\x59\xdf\x4d\x66\x9a\x97\xf5\x2a\xe1\x82\xcf\ \x37\xb6\x99\xb5\x1e\x38\xbd\x94\xfa\x37\x4e\x1f\x12\x65\x39\x2f\ \xa9\xb2\xcc\x8b\xc2\x5a\x7f\xc6\x9c\xc7\xa2\x57\x08\x97\xc2\x6e\ \xbf\xd3\xdc\x5e\xf0\x8e\x5b\xca\x32\xcf\x33\x73\xa6\xfd\xc5\xcc\ \xaa\x87\x75\x61\xd1\xc3\x57\xe6\x42\xfd\xee\x7e\x46\xea\xa2\x07\ \xd7\x9e\xb9\x5e\xc9\xec\xfb\x01\x66\x9f\xef\xae\x6f\x53\x98\x42\ \xfa\x99\x30\xfb\x79\x46\xcc\x3e\xde\x3d\x9f\xb2\x66\xa6\xfd\x17\ \x9e\x79\x3d\xba\xc2\x85\xec\xff\x1e\xb3\xef\xff\x98\xd9\xeb\x6d\ \x09\xab\xdf\x3d\x7f\xb2\xc2\x9a\x63\x50\x96\xeb\x09\x99\x7d\xfe\ \x3e\x73\xd9\x92\x7e\xdd\xf3\x37\x8f\x3d\x57\xc2\x95\xc4\xbf\x30\ \x57\xe2\x47\x8e\x2f\xbd\xde\x35\xb3\xe6\xe3\x54\x58\xf3\x6f\x98\ \x7d\xbe\x3b\xff\xc5\x87\x7e\xc2\xec\xfd\xee\x79\x5d\x7c\xe4\xb7\ \x98\xd5\x0f\xf7\xc2\xe2\x07\xf7\xfc\xb4\xd5\x25\xde\xdd\x4f\x9d\ \x9b\xd9\x3d\x3f\xab\x0f\xbf\x8b\xaf\xbc\xbf\xbf\xf8\x77\xf6\x7f\ \xd0\x40\x40\x83\x19\xe6\x68\x56\xd5\xc0\x02\x4b\xac\x70\x88\xb7\ \x38\x5a\x4d\x83\x14\xc6\x38\x21\x85\x21\xde\xe1\xfd\x2a\x1a\x34\ \xc3\x03\x3e\x52\xfe\x13\x4e\x71\xf6\x7d\x0d\x9c\xe3\x02\x9f\x5d\ \x07\x4b\x7c\xc1\x57\x7c\x5b\x41\xe3\x1d\x37\x45\x61\x8b\x14\x66\ \xb8\x8d\x3b\xdf\xd1\xc0\x5d\x9a\x62\x4f\x14\xf6\x29\xbf\x4d\xd6\ \xc1\x83\xaf\xb2\xa8\xdf\x39\x76\xad\x7d\xd6\xc0\x43\x3c\xc2\x63\ \xa7\x30\xa5\x0e\xda\x78\x42\x73\xf4\xc8\xfa\x78\xf8\x8f\x3c\x83\ \xa7\x78\x86\x03\x3c\xc7\x0b\xb2\x3e\x5e\xe2\x15\x6b\xd0\x69\xe8\ \xe3\xb5\x53\xb8\xc1\xba\xcf\xb7\xd6\xc0\x00\x43\x8c\x28\xaf\xa4\ \xd3\xd2\xa4\x1d\x8f\xa9\xd6\x1d\xb6\x30\x71\xb1\x29\x0e\xf8\x9e\ \x85\x97\x80\x6e\x27\x6e\x00\xc0\x90\x86\xcd\xee\x90\xf5\x20\x83\ \x1c\x0a\x28\x71\x0b\x2a\x18\xba\xcc\x04\xa7\x70\x0b\x23\x3b\x2d\ \x8c\x61\x02\x77\xfc\xbb\x88\x62\x86\x70\x8f\xfb\x50\x48\x0f\x9d\ \x4f\xd6\xc6\x98\x94\x81\x6a\xda\x2c\xaa\x00\x39\x76\xe0\x81\x5e\ \x63\x6c\xc0\x23\x3c\xf1\x6f\x23\x7c\x82\x8a\x56\xa1\xfe\x85\xc2\ \xd7\xb6\x6d\x8d\x7a\x9c\xc2\x0c\xe6\xfc\x7b\x90\xaa\xd8\x7d\xb0\ \x15\x7a\x3f\xc5\x72\xfc\xc7\x27\x9b\xfb\x4c\xaf\x31\xd9\x12\x5e\ \xe0\x95\xfb\x80\x37\x78\xa7\xbe\xdc\xfc\x1f\x55\xf4\x13\xc5\x66\ \x14\xbd\xa4\xff\x63\x67\x99\xcb\xb6\xdf\x6d\xc2\x16\x6c\x8b\xc6\ \x0e\xec\xd2\xda\x4c\xe9\xbb\xf1\x4f\x35\x3b\xb0\x07\xfb\xe4\x9b\ \x40\x9b\xde\x3b\xb0\x45\xfb\xd4\x80\x03\xe8\x42\x97\xde\xa7\x54\ \xfb\x15\x0e\x79\x5f\xe0\x08\x8e\x69\xb2\x77\xf2\x65\xae\xd3\x67\ \xed\x84\x2a\x9d\x40\x0f\xfa\x54\xa5\x07\xa7\x70\x06\x03\xca\x9a\ \x91\xb5\x31\x85\x73\xd2\x1d\xc0\x85\x3f\x63\xef\x4e\xa5\x43\xea\ \x4b\xea\xf5\xd9\x76\x44\x4a\x1d\xb8\x84\x2b\xd8\xa1\x2a\xd7\xd4\ \xed\x0d\xd4\xa1\x01\x01\x29\xf6\xc8\x8e\xc9\x06\xa4\x1d\x7a\x8d\ \x39\x44\xd0\xa4\x1a\x6d\xaa\xdc\x75\x3a\x6c\xf1\x17\xa7\xbc\xc0\ \x2b\x68\x41\x02\xa9\x41\xbc\xc2\xf9\xe7\x6b\x0e\x0b\x03\xd4\xed\ \x84\x66\x3a\x90\x35\x5c\x9a\x6f\xdf\xc7\x70\xd7\x64\xd4\xcb\x23\ \xad\x9e\xed\x65\x69\xf2\x55\xee\x63\x38\x37\x05\xcd\x38\x33\x25\ \xad\x7a\x17\x5e\x4c\xf5\x7d\x0d\x77\xfd\x1d\x9a\xa1\xb9\xa5\x99\ \xce\x61\xb2\x9a\x86\x35\x5a\xdf\xbe\xdd\x45\x73\x6b\x56\xbc\x27\ \xb3\x0a\xfd\x16\x1a\x9b\x89\xb9\x5b\x5d\xe3\x3b\xf6\x9f\xd2\xf8\ \xeb\xd7\xb5\xbf\x01\xda\x3f\xb9\x0e\ \x00\x00\x15\xdf\ \x2f\ \x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ \x63\x68\x61\x72\x20\x2a\x69\x6d\x61\x67\x65\x35\x5b\x5d\x3d\x7b\ \x0a\x22\x33\x32\x20\x33\x32\x20\x32\x31\x31\x20\x32\x22\x2c\x0a\ \x22\x51\x74\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x22\x61\x4a\ \x20\x63\x20\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x22\x23\x57\ \x20\x63\x20\x23\x30\x38\x30\x38\x30\x30\x22\x2c\x0a\x22\x23\x4e\ \x20\x63\x20\x23\x31\x30\x30\x38\x30\x30\x22\x2c\x0a\x22\x23\x56\ \x20\x63\x20\x23\x31\x30\x31\x30\x30\x30\x22\x2c\x0a\x22\x23\x45\ \x20\x63\x20\x23\x31\x30\x31\x30\x30\x38\x22\x2c\x0a\x22\x23\x4d\ \x20\x63\x20\x23\x31\x38\x31\x30\x30\x30\x22\x2c\x0a\x22\x23\x4c\ \x20\x63\x20\x23\x31\x38\x31\x38\x30\x30\x22\x2c\x0a\x22\x23\x44\ \x20\x63\x20\x23\x31\x38\x31\x38\x30\x38\x22\x2c\x0a\x22\x23\x46\ \x20\x63\x20\x23\x31\x38\x31\x38\x31\x30\x22\x2c\x0a\x22\x61\x73\ \x20\x63\x20\x23\x32\x31\x31\x38\x30\x30\x22\x2c\x0a\x22\x23\x4b\ \x20\x63\x20\x23\x32\x31\x31\x38\x30\x38\x22\x2c\x0a\x22\x23\x4a\ \x20\x63\x20\x23\x32\x31\x32\x31\x31\x30\x22\x2c\x0a\x22\x23\x47\ \x20\x63\x20\x23\x32\x31\x32\x31\x31\x38\x22\x2c\x0a\x22\x23\x71\ \x20\x63\x20\x23\x32\x31\x32\x31\x32\x31\x22\x2c\x0a\x22\x61\x6e\ \x20\x63\x20\x23\x32\x39\x32\x31\x30\x30\x22\x2c\x0a\x22\x23\x49\ \x20\x63\x20\x23\x32\x39\x32\x31\x31\x30\x22\x2c\x0a\x22\x61\x4e\ \x20\x63\x20\x23\x32\x39\x32\x39\x31\x30\x22\x2c\x0a\x22\x23\x48\ \x20\x63\x20\x23\x32\x39\x32\x39\x31\x38\x22\x2c\x0a\x22\x23\x79\ \x20\x63\x20\x23\x32\x39\x32\x39\x32\x31\x22\x2c\x0a\x22\x61\x46\ \x20\x63\x20\x23\x33\x31\x32\x39\x30\x30\x22\x2c\x0a\x22\x23\x43\ \x20\x63\x20\x23\x33\x31\x32\x39\x31\x38\x22\x2c\x0a\x22\x23\x69\ \x20\x63\x20\x23\x33\x31\x32\x39\x32\x39\x22\x2c\x0a\x22\x2e\x30\ \x20\x63\x20\x23\x33\x31\x33\x31\x33\x31\x22\x2c\x0a\x22\x23\x37\ \x20\x63\x20\x23\x33\x39\x33\x31\x30\x30\x22\x2c\x0a\x22\x23\x55\ \x20\x63\x20\x23\x33\x39\x33\x31\x30\x38\x22\x2c\x0a\x22\x61\x47\ \x20\x63\x20\x23\x33\x39\x33\x39\x33\x31\x22\x2c\x0a\x22\x2e\x4d\ \x20\x63\x20\x23\x33\x39\x33\x39\x33\x39\x22\x2c\x0a\x22\x23\x75\ \x20\x63\x20\x23\x34\x32\x33\x39\x33\x39\x22\x2c\x0a\x22\x23\x63\ \x20\x63\x20\x23\x34\x32\x34\x61\x34\x32\x22\x2c\x0a\x22\x61\x45\ \x20\x63\x20\x23\x34\x61\x34\x32\x30\x30\x22\x2c\x0a\x22\x61\x59\ \x20\x63\x20\x23\x34\x61\x34\x32\x31\x30\x22\x2c\x0a\x22\x2e\x56\ \x20\x63\x20\x23\x34\x61\x34\x32\x33\x39\x22\x2c\x0a\x22\x23\x42\ \x20\x63\x20\x23\x34\x61\x34\x61\x33\x39\x22\x2c\x0a\x22\x2e\x6d\ \x20\x63\x20\x23\x34\x61\x34\x61\x34\x32\x22\x2c\x0a\x22\x61\x50\ \x20\x63\x20\x23\x34\x61\x35\x32\x31\x38\x22\x2c\x0a\x22\x2e\x47\ \x20\x63\x20\x23\x34\x61\x35\x32\x35\x32\x22\x2c\x0a\x22\x2e\x7a\ \x20\x63\x20\x23\x34\x61\x35\x61\x35\x32\x22\x2c\x0a\x22\x61\x4f\ \x20\x63\x20\x23\x35\x32\x34\x32\x30\x30\x22\x2c\x0a\x22\x61\x6d\ \x20\x63\x20\x23\x35\x32\x34\x61\x30\x30\x22\x2c\x0a\x22\x23\x54\ \x20\x63\x20\x23\x35\x32\x34\x61\x30\x38\x22\x2c\x0a\x22\x23\x70\ \x20\x63\x20\x23\x35\x32\x34\x61\x34\x61\x22\x2c\x0a\x22\x2e\x73\ \x20\x63\x20\x23\x35\x32\x35\x32\x35\x32\x22\x2c\x0a\x22\x23\x61\ \x20\x63\x20\x23\x35\x32\x35\x61\x35\x32\x22\x2c\x0a\x22\x2e\x37\ \x20\x63\x20\x23\x35\x32\x36\x33\x35\x61\x22\x2c\x0a\x22\x23\x62\ \x20\x63\x20\x23\x35\x32\x36\x33\x36\x33\x22\x2c\x0a\x22\x61\x7a\ \x20\x63\x20\x23\x35\x61\x34\x61\x30\x30\x22\x2c\x0a\x22\x23\x36\ \x20\x63\x20\x23\x35\x61\x35\x32\x30\x38\x22\x2c\x0a\x22\x61\x77\ \x20\x63\x20\x23\x35\x61\x35\x32\x31\x30\x22\x2c\x0a\x22\x2e\x5a\ \x20\x63\x20\x23\x35\x61\x35\x32\x34\x61\x22\x2c\x0a\x22\x2e\x4c\ \x20\x63\x20\x23\x35\x61\x35\x61\x35\x32\x22\x2c\x0a\x22\x2e\x79\ \x20\x63\x20\x23\x35\x61\x35\x61\x35\x61\x22\x2c\x0a\x22\x2e\x46\ \x20\x63\x20\x23\x35\x61\x36\x33\x35\x61\x22\x2c\x0a\x22\x23\x53\ \x20\x63\x20\x23\x36\x33\x35\x32\x30\x38\x22\x2c\x0a\x22\x61\x78\ \x20\x63\x20\x23\x36\x33\x35\x61\x31\x30\x22\x2c\x0a\x22\x2e\x55\ \x20\x63\x20\x23\x36\x33\x35\x61\x35\x32\x22\x2c\x0a\x22\x2e\x72\ \x20\x63\x20\x23\x36\x33\x35\x61\x35\x61\x22\x2c\x0a\x22\x61\x5a\ \x20\x63\x20\x23\x36\x33\x36\x33\x32\x31\x22\x2c\x0a\x22\x23\x23\ \x20\x63\x20\x23\x36\x33\x36\x33\x35\x61\x22\x2c\x0a\x22\x2e\x41\ \x20\x63\x20\x23\x36\x33\x36\x33\x36\x33\x22\x2c\x0a\x22\x23\x68\ \x20\x63\x20\x23\x36\x33\x36\x62\x36\x62\x22\x2c\x0a\x22\x61\x4c\ \x20\x63\x20\x23\x36\x33\x37\x33\x32\x39\x22\x2c\x0a\x22\x61\x66\ \x20\x63\x20\x23\x36\x62\x35\x61\x30\x30\x22\x2c\x0a\x22\x2e\x36\ \x20\x63\x20\x23\x36\x62\x36\x33\x35\x61\x22\x2c\x0a\x22\x23\x6f\ \x20\x63\x20\x23\x36\x62\x36\x33\x36\x33\x22\x2c\x0a\x22\x2e\x45\ \x20\x63\x20\x23\x36\x62\x36\x62\x36\x33\x22\x2c\x0a\x22\x61\x34\ \x20\x63\x20\x23\x36\x62\x37\x33\x32\x31\x22\x2c\x0a\x22\x61\x53\ \x20\x63\x20\x23\x36\x62\x37\x33\x32\x39\x22\x2c\x0a\x22\x61\x52\ \x20\x63\x20\x23\x36\x62\x37\x33\x33\x31\x22\x2c\x0a\x22\x61\x58\ \x20\x63\x20\x23\x37\x33\x36\x33\x30\x30\x22\x2c\x0a\x22\x61\x6c\ \x20\x63\x20\x23\x37\x33\x36\x33\x30\x38\x22\x2c\x0a\x22\x23\x52\ \x20\x63\x20\x23\x37\x33\x36\x62\x31\x30\x22\x2c\x0a\x22\x2e\x54\ \x20\x63\x20\x23\x37\x33\x36\x62\x36\x33\x22\x2c\x0a\x22\x61\x35\ \x20\x63\x20\x23\x37\x33\x37\x33\x32\x39\x22\x2c\x0a\x22\x2e\x69\ \x20\x63\x20\x23\x37\x33\x37\x33\x36\x62\x22\x2c\x0a\x22\x2e\x4b\ \x20\x63\x20\x23\x37\x33\x37\x33\x37\x33\x22\x2c\x0a\x22\x61\x37\ \x20\x63\x20\x23\x37\x33\x37\x62\x32\x39\x22\x2c\x0a\x22\x23\x67\ \x20\x63\x20\x23\x37\x33\x37\x62\x37\x33\x22\x2c\x0a\x22\x61\x39\ \x20\x63\x20\x23\x37\x62\x37\x33\x31\x38\x22\x2c\x0a\x22\x23\x41\ \x20\x63\x20\x23\x37\x62\x37\x33\x37\x33\x22\x2c\x0a\x22\x61\x38\ \x20\x63\x20\x23\x37\x62\x37\x62\x32\x31\x22\x2c\x0a\x22\x61\x56\ \x20\x63\x20\x23\x37\x62\x37\x62\x32\x39\x22\x2c\x0a\x22\x61\x51\ \x20\x63\x20\x23\x37\x62\x37\x62\x35\x61\x22\x2c\x0a\x22\x2e\x4a\ \x20\x63\x20\x23\x37\x62\x37\x62\x37\x33\x22\x2c\x0a\x22\x2e\x31\ \x20\x63\x20\x23\x37\x62\x37\x62\x37\x62\x22\x2c\x0a\x22\x62\x23\ \x20\x63\x20\x23\x37\x62\x38\x34\x33\x31\x22\x2c\x0a\x22\x61\x33\ \x20\x63\x20\x23\x37\x62\x38\x34\x34\x61\x22\x2c\x0a\x22\x2e\x38\ \x20\x63\x20\x23\x37\x62\x38\x34\x37\x62\x22\x2c\x0a\x22\x61\x79\ \x20\x63\x20\x23\x38\x34\x37\x33\x30\x38\x22\x2c\x0a\x22\x23\x35\ \x20\x63\x20\x23\x38\x34\x37\x33\x31\x30\x22\x2c\x0a\x22\x61\x54\ \x20\x63\x20\x23\x38\x34\x37\x62\x32\x31\x22\x2c\x0a\x22\x62\x2e\ \x20\x63\x20\x23\x38\x34\x37\x62\x32\x39\x22\x2c\x0a\x22\x2e\x53\ \x20\x63\x20\x23\x38\x34\x37\x62\x37\x33\x22\x2c\x0a\x22\x2e\x64\ \x20\x63\x20\x23\x38\x34\x37\x62\x37\x62\x22\x2c\x0a\x22\x61\x57\ \x20\x63\x20\x23\x38\x34\x38\x34\x32\x31\x22\x2c\x0a\x22\x61\x31\ \x20\x63\x20\x23\x38\x34\x38\x34\x32\x39\x22\x2c\x0a\x22\x61\x30\ \x20\x63\x20\x23\x38\x34\x38\x34\x33\x31\x22\x2c\x0a\x22\x62\x71\ \x20\x63\x20\x23\x38\x34\x38\x34\x34\x61\x22\x2c\x0a\x22\x2e\x48\ \x20\x63\x20\x23\x38\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x61\x65\ \x20\x63\x20\x23\x38\x63\x37\x62\x30\x38\x22\x2c\x0a\x22\x61\x6b\ \x20\x63\x20\x23\x38\x63\x37\x62\x31\x30\x22\x2c\x0a\x22\x23\x6a\ \x20\x63\x20\x23\x38\x63\x38\x34\x38\x34\x22\x2c\x0a\x22\x62\x61\ \x20\x63\x20\x23\x38\x63\x38\x63\x36\x33\x22\x2c\x0a\x22\x61\x32\ \x20\x63\x20\x23\x38\x63\x38\x63\x37\x62\x22\x2c\x0a\x22\x2e\x78\ \x20\x63\x20\x23\x38\x63\x38\x63\x38\x34\x22\x2c\x0a\x22\x2e\x32\ \x20\x63\x20\x23\x38\x63\x39\x34\x38\x63\x22\x2c\x0a\x22\x2e\x39\ \x20\x63\x20\x23\x38\x63\x61\x64\x61\x35\x22\x2c\x0a\x22\x61\x43\ \x20\x63\x20\x23\x39\x34\x37\x62\x30\x38\x22\x2c\x0a\x22\x2e\x59\ \x20\x63\x20\x23\x39\x34\x37\x62\x37\x33\x22\x2c\x0a\x22\x61\x4b\ \x20\x63\x20\x23\x39\x34\x38\x63\x31\x30\x22\x2c\x0a\x22\x23\x51\ \x20\x63\x20\x23\x39\x34\x38\x63\x31\x38\x22\x2c\x0a\x22\x61\x36\ \x20\x63\x20\x23\x39\x34\x38\x63\x32\x39\x22\x2c\x0a\x22\x23\x6d\ \x20\x63\x20\x23\x39\x34\x38\x63\x38\x34\x22\x2c\x0a\x22\x62\x70\ \x20\x63\x20\x23\x39\x34\x39\x34\x34\x32\x22\x2c\x0a\x22\x61\x48\ \x20\x63\x20\x23\x39\x34\x39\x34\x38\x34\x22\x2c\x0a\x22\x2e\x44\ \x20\x63\x20\x23\x39\x34\x39\x34\x38\x63\x22\x2c\x0a\x22\x2e\x6e\ \x20\x63\x20\x23\x39\x34\x39\x34\x39\x34\x22\x2c\x0a\x22\x62\x6e\ \x20\x63\x20\x23\x39\x34\x39\x63\x34\x61\x22\x2c\x0a\x22\x62\x6c\ \x20\x63\x20\x23\x39\x34\x39\x63\x35\x61\x22\x2c\x0a\x22\x62\x6a\ \x20\x63\x20\x23\x39\x34\x39\x63\x36\x33\x22\x2c\x0a\x22\x2e\x75\ \x20\x63\x20\x23\x39\x34\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x76\ \x20\x63\x20\x23\x39\x34\x61\x35\x39\x63\x22\x2c\x0a\x22\x61\x49\ \x20\x63\x20\x23\x39\x63\x38\x63\x31\x30\x22\x2c\x0a\x22\x23\x34\ \x20\x63\x20\x23\x39\x63\x38\x63\x31\x38\x22\x2c\x0a\x22\x23\x4f\ \x20\x63\x20\x23\x39\x63\x38\x63\x32\x39\x22\x2c\x0a\x22\x61\x4d\ \x20\x63\x20\x23\x39\x63\x39\x34\x31\x38\x22\x2c\x0a\x22\x23\x72\ \x20\x63\x20\x23\x39\x63\x39\x34\x38\x63\x22\x2c\x0a\x22\x62\x6f\ \x20\x63\x20\x23\x39\x63\x39\x63\x34\x61\x22\x2c\x0a\x22\x62\x6d\ \x20\x63\x20\x23\x39\x63\x39\x63\x35\x32\x22\x2c\x0a\x22\x62\x6b\ \x20\x63\x20\x23\x39\x63\x39\x63\x35\x61\x22\x2c\x0a\x22\x62\x68\ \x20\x63\x20\x23\x39\x63\x39\x63\x36\x62\x22\x2c\x0a\x22\x2e\x6b\ \x20\x63\x20\x23\x39\x63\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x61\ \x20\x63\x20\x23\x39\x63\x39\x63\x39\x63\x22\x2c\x0a\x22\x62\x69\ \x20\x63\x20\x23\x39\x63\x61\x35\x36\x62\x22\x2c\x0a\x22\x62\x66\ \x20\x63\x20\x23\x39\x63\x61\x35\x37\x33\x22\x2c\x0a\x22\x2e\x68\ \x20\x63\x20\x23\x39\x63\x61\x35\x39\x63\x22\x2c\x0a\x22\x23\x66\ \x20\x63\x20\x23\x39\x63\x61\x35\x61\x35\x22\x2c\x0a\x22\x2e\x42\ \x20\x63\x20\x23\x39\x63\x62\x64\x62\x35\x22\x2c\x0a\x22\x23\x50\ \x20\x63\x20\x23\x61\x35\x39\x34\x30\x30\x22\x2c\x0a\x22\x61\x42\ \x20\x63\x20\x23\x61\x35\x39\x34\x31\x38\x22\x2c\x0a\x22\x23\x6b\ \x20\x63\x20\x23\x61\x35\x39\x34\x38\x63\x22\x2c\x0a\x22\x61\x72\ \x20\x63\x20\x23\x61\x35\x39\x63\x32\x39\x22\x2c\x0a\x22\x2e\x4e\ \x20\x63\x20\x23\x61\x35\x39\x63\x38\x63\x22\x2c\x0a\x22\x2e\x50\ \x20\x63\x20\x23\x61\x35\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x57\ \x20\x63\x20\x23\x61\x35\x39\x63\x39\x63\x22\x2c\x0a\x22\x62\x67\ \x20\x63\x20\x23\x61\x35\x61\x35\x37\x33\x22\x2c\x0a\x22\x62\x64\ \x20\x63\x20\x23\x61\x35\x61\x35\x38\x34\x22\x2c\x0a\x22\x2e\x71\ \x20\x63\x20\x23\x61\x35\x61\x35\x39\x63\x22\x2c\x0a\x22\x2e\x63\ \x20\x63\x20\x23\x61\x35\x61\x35\x61\x35\x22\x2c\x0a\x22\x62\x65\ \x20\x63\x20\x23\x61\x35\x61\x64\x37\x62\x22\x2c\x0a\x22\x2e\x6f\ \x20\x63\x20\x23\x61\x35\x61\x64\x61\x35\x22\x2c\x0a\x22\x2e\x43\ \x20\x63\x20\x23\x61\x35\x61\x64\x61\x64\x22\x2c\x0a\x22\x2e\x49\ \x20\x63\x20\x23\x61\x35\x62\x35\x61\x64\x22\x2c\x0a\x22\x23\x64\ \x20\x63\x20\x23\x61\x35\x62\x64\x62\x35\x22\x2c\x0a\x22\x2e\x77\ \x20\x63\x20\x23\x61\x35\x63\x36\x62\x64\x22\x2c\x0a\x22\x61\x64\ \x20\x63\x20\x23\x61\x64\x39\x63\x31\x30\x22\x2c\x0a\x22\x61\x6a\ \x20\x63\x20\x23\x61\x64\x39\x63\x31\x38\x22\x2c\x0a\x22\x23\x77\ \x20\x63\x20\x23\x61\x64\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x66\ \x20\x63\x20\x23\x61\x64\x61\x35\x39\x63\x22\x2c\x0a\x22\x62\x63\ \x20\x63\x20\x23\x61\x64\x61\x64\x37\x62\x22\x2c\x0a\x22\x62\x62\ \x20\x63\x20\x23\x61\x64\x61\x64\x38\x34\x22\x2c\x0a\x22\x2e\x23\ \x20\x63\x20\x23\x61\x64\x61\x64\x61\x35\x22\x2c\x0a\x22\x2e\x74\ \x20\x63\x20\x23\x61\x64\x61\x64\x61\x64\x22\x2c\x0a\x22\x2e\x34\ \x20\x63\x20\x23\x61\x64\x62\x35\x61\x64\x22\x2c\x0a\x22\x61\x69\ \x20\x63\x20\x23\x62\x35\x61\x35\x31\x38\x22\x2c\x0a\x22\x61\x71\ \x20\x63\x20\x23\x62\x35\x61\x35\x32\x39\x22\x2c\x0a\x22\x61\x44\ \x20\x63\x20\x23\x62\x35\x61\x35\x34\x32\x22\x2c\x0a\x22\x61\x6f\ \x20\x63\x20\x23\x62\x35\x61\x35\x34\x61\x22\x2c\x0a\x22\x2e\x4f\ \x20\x63\x20\x23\x62\x35\x61\x35\x39\x34\x22\x2c\x0a\x22\x23\x76\ \x20\x63\x20\x23\x62\x35\x61\x35\x39\x63\x22\x2c\x0a\x22\x61\x74\ \x20\x63\x20\x23\x62\x35\x61\x64\x35\x32\x22\x2c\x0a\x22\x23\x7a\ \x20\x63\x20\x23\x62\x35\x61\x64\x39\x63\x22\x2c\x0a\x22\x2e\x35\ \x20\x63\x20\x23\x62\x35\x61\x64\x61\x35\x22\x2c\x0a\x22\x2e\x6a\ \x20\x63\x20\x23\x62\x35\x62\x35\x61\x64\x22\x2c\x0a\x22\x2e\x65\ \x20\x63\x20\x23\x62\x35\x62\x35\x62\x35\x22\x2c\x0a\x22\x2e\x33\ \x20\x63\x20\x23\x62\x35\x62\x64\x62\x35\x22\x2c\x0a\x22\x2e\x51\ \x20\x63\x20\x23\x62\x35\x62\x64\x62\x64\x22\x2c\x0a\x22\x23\x65\ \x20\x63\x20\x23\x62\x35\x63\x65\x63\x36\x22\x2c\x0a\x22\x23\x38\ \x20\x63\x20\x23\x62\x64\x61\x35\x33\x39\x22\x2c\x0a\x22\x23\x78\ \x20\x63\x20\x23\x62\x64\x61\x35\x39\x63\x22\x2c\x0a\x22\x23\x33\ \x20\x63\x20\x23\x62\x64\x61\x64\x32\x39\x22\x2c\x0a\x22\x23\x58\ \x20\x63\x20\x23\x62\x64\x61\x64\x33\x31\x22\x2c\x0a\x22\x61\x67\ \x20\x63\x20\x23\x62\x64\x61\x64\x34\x32\x22\x2c\x0a\x22\x23\x6e\ \x20\x63\x20\x23\x62\x64\x62\x35\x61\x64\x22\x2c\x0a\x22\x2e\x62\ \x20\x63\x20\x23\x62\x64\x62\x64\x62\x64\x22\x2c\x0a\x22\x2e\x58\ \x20\x63\x20\x23\x62\x64\x63\x65\x63\x36\x22\x2c\x0a\x22\x61\x55\ \x20\x63\x20\x23\x63\x36\x62\x35\x31\x30\x22\x2c\x0a\x22\x23\x2e\ \x20\x63\x20\x23\x63\x36\x63\x36\x62\x64\x22\x2c\x0a\x22\x2e\x70\ \x20\x63\x20\x23\x63\x36\x63\x65\x63\x65\x22\x2c\x0a\x22\x2e\x67\ \x20\x63\x20\x23\x63\x36\x64\x65\x64\x36\x22\x2c\x0a\x22\x61\x63\ \x20\x63\x20\x23\x63\x65\x62\x64\x33\x31\x22\x2c\x0a\x22\x23\x6c\ \x20\x63\x20\x23\x63\x65\x64\x36\x63\x65\x22\x2c\x0a\x22\x23\x73\ \x20\x63\x20\x23\x63\x65\x64\x36\x64\x36\x22\x2c\x0a\x22\x23\x74\ \x20\x63\x20\x23\x63\x65\x64\x65\x64\x65\x22\x2c\x0a\x22\x23\x39\ \x20\x63\x20\x23\x64\x36\x63\x36\x31\x30\x22\x2c\x0a\x22\x23\x32\ \x20\x63\x20\x23\x64\x36\x63\x36\x33\x31\x22\x2c\x0a\x22\x61\x70\ \x20\x63\x20\x23\x64\x65\x63\x36\x30\x38\x22\x2c\x0a\x22\x61\x68\ \x20\x63\x20\x23\x64\x65\x63\x65\x31\x30\x22\x2c\x0a\x22\x61\x62\ \x20\x63\x20\x23\x64\x65\x63\x65\x33\x31\x22\x2c\x0a\x22\x2e\x6c\ \x20\x63\x20\x23\x64\x65\x65\x66\x65\x37\x22\x2c\x0a\x22\x2e\x52\ \x20\x63\x20\x23\x64\x65\x65\x66\x65\x66\x22\x2c\x0a\x22\x61\x75\ \x20\x63\x20\x23\x65\x37\x63\x65\x30\x38\x22\x2c\x0a\x22\x61\x2e\ \x20\x63\x20\x23\x65\x37\x64\x36\x32\x31\x22\x2c\x0a\x22\x61\x23\ \x20\x63\x20\x23\x65\x37\x64\x36\x33\x31\x22\x2c\x0a\x22\x61\x61\ \x20\x63\x20\x23\x65\x37\x64\x36\x33\x39\x22\x2c\x0a\x22\x23\x31\ \x20\x63\x20\x23\x65\x37\x64\x65\x33\x39\x22\x2c\x0a\x22\x23\x59\ \x20\x63\x20\x23\x65\x66\x64\x65\x31\x30\x22\x2c\x0a\x22\x61\x76\ \x20\x63\x20\x23\x65\x66\x64\x65\x32\x31\x22\x2c\x0a\x22\x61\x41\ \x20\x63\x20\x23\x65\x66\x64\x65\x32\x39\x22\x2c\x0a\x22\x23\x5a\ \x20\x63\x20\x23\x66\x37\x65\x37\x32\x39\x22\x2c\x0a\x22\x23\x30\ \x20\x63\x20\x23\x66\x37\x65\x37\x33\x39\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x23\x2e\x61\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x2e\x63\x2e\x64\x2e\x65\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x66\x2e\x67\x2e\x68\x2e\x69\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x2e\x6a\x2e\x6b\x2e\x6c\x2e\x65\x2e\x6d\x2e\x6e\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x62\x2e\x61\x2e\x6f\x2e\x70\x2e\x71\ \x2e\x72\x2e\x73\x2e\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x75\x2e\x76\x2e\x77\ \x2e\x6b\x2e\x78\x2e\x79\x2e\x7a\x2e\x41\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x74\x2e\x6b\ \x2e\x42\x2e\x43\x2e\x6b\x2e\x44\x2e\x45\x2e\x46\x2e\x47\x2e\x48\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x2e\x23\x2e\x23\x2e\x6f\x2e\x49\x2e\x62\x2e\x63\x2e\x4a\x2e\x4b\ \x2e\x4c\x2e\x4d\x2e\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x61\x2e\x4e\x2e\x4f\x2e\x50\x2e\x51\x2e\x52\x2e\x6f\ \x2e\x53\x2e\x54\x2e\x55\x2e\x56\x2e\x73\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x2e\x74\x2e\x4e\x2e\x50\x2e\x57\x2e\x6b\x2e\x58\ \x2e\x52\x2e\x50\x2e\x59\x2e\x69\x2e\x41\x2e\x5a\x2e\x30\x2e\x31\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x62\x2e\x78\x2e\x32\x2e\x77\x2e\x33\ \x2e\x34\x2e\x49\x2e\x6a\x2e\x23\x2e\x35\x2e\x36\x2e\x4c\x2e\x46\ \x2e\x37\x2e\x30\x2e\x63\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x6e\x2e\x38\x2e\x39\ \x2e\x70\x23\x2e\x2e\x6f\x2e\x34\x2e\x78\x2e\x78\x2e\x78\x23\x23\ \x2e\x73\x23\x61\x23\x62\x2e\x73\x23\x63\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x74\x2e\x44\ \x2e\x23\x23\x64\x23\x65\x2e\x68\x23\x66\x2e\x6f\x2e\x50\x2e\x32\ \x2e\x32\x23\x67\x23\x23\x23\x68\x2e\x41\x2e\x7a\x23\x69\x2e\x4b\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x23\x6a\x2e\x50\x2e\x66\x2e\x50\x23\x6b\x2e\x71\x2e\x34\x2e\x58\ \x23\x6c\x23\x6d\x23\x6e\x2e\x6e\x23\x6f\x2e\x4a\x2e\x36\x23\x70\ \x23\x69\x23\x71\x2e\x63\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x57\x23\x6d\x23\x6b\x2e\x4f\x23\x6d\x23\x72\x2e\x35\ \x2e\x6b\x23\x73\x23\x74\x23\x6d\x2e\x71\x23\x72\x2e\x55\x2e\x45\ \x2e\x54\x23\x70\x23\x75\x23\x69\x2e\x4d\x2e\x65\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x2e\x62\x2e\x78\x23\x72\x2e\x6f\x2e\x74\x23\x76\ \x2e\x66\x2e\x6f\x2e\x34\x2e\x6c\x23\x6c\x23\x77\x23\x78\x2e\x66\ \x2e\x69\x23\x6f\x2e\x45\x23\x23\x23\x61\x2e\x6d\x23\x79\x2e\x6e\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\x2e\x65\x2e\x63\x23\x64\ \x2e\x6f\x23\x7a\x2e\x75\x2e\x71\x23\x66\x2e\x49\x2e\x71\x2e\x23\ \x2e\x23\x2e\x32\x23\x41\x2e\x55\x2e\x6d\x23\x42\x23\x68\x2e\x68\ \x2e\x6a\x2e\x62\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x62\x23\x43\x23\x44\x23\x45\x23\x46\x23\x47\x23\x47\ \x23\x47\x23\x48\x23\x49\x23\x4a\x23\x4b\x23\x4c\x23\x4d\x23\x4e\ \x2e\x69\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x62\x23\x4f\x23\x50\x23\x51\x23\x52\ \x23\x53\x23\x54\x23\x55\x23\x4c\x23\x4d\x23\x56\x23\x57\x23\x4e\ \x23\x56\x23\x56\x2e\x69\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\x23\x58\x23\x59\ \x23\x5a\x23\x30\x23\x30\x23\x31\x23\x32\x23\x33\x23\x34\x23\x35\ \x23\x36\x23\x37\x23\x4d\x23\x56\x23\x41\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x23\x38\x23\x39\x61\x2e\x61\x23\x61\x61\x61\x61\x61\x62\x61\x63\ \x23\x33\x61\x64\x61\x65\x61\x66\x23\x37\x23\x4d\x2e\x4a\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x62\x61\x67\x61\x68\x61\x2e\x61\x23\x23\x31\x61\x61\ \x61\x61\x23\x32\x61\x69\x61\x6a\x61\x6b\x61\x6c\x61\x6d\x61\x6e\ \x23\x41\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x61\x6f\x61\x70\x61\x2e\x61\x23\ \x61\x61\x61\x71\x61\x72\x61\x71\x23\x33\x61\x6a\x23\x35\x61\x66\ \x61\x6d\x61\x73\x2e\x4a\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x61\x74\x61\x75\ \x61\x76\x61\x23\x61\x77\x23\x56\x23\x57\x23\x4d\x61\x78\x23\x34\ \x61\x79\x61\x66\x61\x7a\x61\x6e\x2e\x4a\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x61\x74\x61\x68\x61\x41\x61\x42\x23\x57\x23\x4e\x23\x4d\x23\x56\ \x23\x56\x23\x52\x61\x43\x61\x6c\x61\x7a\x61\x73\x2e\x4a\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x62\x61\x44\x61\x70\x23\x5a\x23\x51\x23\x4e\x23\x4d\ \x23\x56\x23\x4d\x23\x4e\x23\x36\x61\x6b\x61\x66\x61\x45\x61\x46\ \x61\x47\x2e\x45\x23\x68\x2e\x4a\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x61\x48\x61\x49\x61\x68\x61\x41\x61\x42\ \x23\x57\x23\x57\x23\x4e\x23\x57\x61\x4a\x23\x36\x61\x4b\x61\x6c\ \x61\x6d\x61\x46\x23\x57\x61\x4a\x61\x4a\x23\x79\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x71\x61\x4c\x61\x49\x61\x68\ \x61\x76\x61\x4d\x23\x57\x61\x4a\x23\x57\x23\x44\x61\x4e\x23\x52\ \x61\x65\x61\x6c\x61\x4f\x61\x6e\x23\x4e\x61\x4e\x61\x50\x61\x51\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x6a\x61\x52\x61\x53\ \x61\x54\x61\x55\x61\x76\x61\x42\x23\x57\x61\x4e\x61\x50\x61\x4c\ \x61\x56\x61\x57\x61\x65\x61\x58\x23\x36\x61\x59\x61\x5a\x61\x30\ \x61\x31\x61\x32\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\x61\x33\ \x61\x34\x61\x35\x61\x35\x61\x56\x61\x36\x61\x31\x61\x5a\x61\x37\ \x61\x53\x61\x53\x61\x35\x61\x38\x61\x39\x61\x34\x61\x35\x62\x2e\ \x62\x23\x61\x35\x61\x35\x2e\x6b\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x62\x61\x61\x37\x61\x37\x61\x56\x61\x30\x62\x2e\x62\x23\x61\x37\ \x62\x23\x61\x30\x61\x37\x61\x37\x61\x37\x61\x53\x61\x53\x61\x37\ \x62\x2e\x61\x56\x61\x30\x61\x56\x61\x52\x2e\x23\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x62\x62\x62\x63\x62\x64\x62\x65\x62\x65\x62\x66\ \x62\x67\x62\x68\x62\x68\x62\x69\x62\x6a\x62\x6a\x62\x6b\x62\x6b\ \x62\x6c\x62\x6d\x62\x6d\x62\x6e\x62\x6f\x62\x70\x62\x71\x2e\x62\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x7d\x3b\x0a\ \x00\x00\x00\xad\ \x00\ \x00\x04\xda\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ \x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\xca\xcc\x4d\x4c\ \x4f\x35\x88\x8e\xb5\xad\xe6\x52\x32\x36\x52\x00\x21\x05\x43\x25\ \x1d\x2e\x25\x3d\x85\x64\x05\xbf\xfc\xbc\x54\x10\x3b\x11\xc8\x56\ \x36\x00\x02\x0b\x03\x10\x57\x19\xc4\xb5\x30\xb0\x80\x72\xf5\x08\ \x80\x51\x35\x60\xa0\x9c\x08\x03\x38\xd5\x20\x94\x20\x29\x4a\x44\ \x51\xa3\x8c\x90\x42\x66\x21\xab\x51\x46\xd1\x0d\xe5\x24\xa2\xaa\ \x41\x75\x05\x44\x51\x22\x86\x1a\x54\x77\x22\xbb\x0c\x97\x1a\x3d\ \x2a\xa9\x21\xc2\xae\x44\x6c\x6a\x94\x31\xfc\x85\xa9\x06\x45\x51\ \x22\x0e\x35\x40\x09\x65\x3d\xec\x00\x29\x4e\x71\x2a\x1a\xc4\xe9\ \x70\x78\xa9\xa9\xb5\xe6\x02\x00\x3d\x48\xf5\x6a\ \x00\x00\x00\xad\ \x00\ \x00\x04\xda\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ \x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\xca\xcc\x4d\x4c\ \x4f\x35\x89\x8e\xb5\xad\xe6\x52\x32\x36\x52\x00\x21\x05\x43\x25\ \x1d\x2e\x25\x3d\x85\x64\x05\xbf\xfc\xbc\x54\x10\x5b\x19\xc8\x56\ \x36\x00\x02\x0b\x03\x10\x37\x11\xc4\xb5\x30\xb0\x80\x72\xf5\x08\ \x80\x51\x35\x24\xab\x51\x86\x81\x44\x34\x35\xca\x98\x4a\xe0\x8a\ \xe0\x6a\x94\x11\x4a\x10\xac\x44\x34\x35\xca\x30\x43\x90\x4d\x4c\ \x44\x53\xa3\x8c\xa6\x04\xae\x11\x59\x0d\x9a\x0a\xb8\x0b\xd0\xd4\ \x60\x78\x91\x4c\x35\xc4\xd8\x85\xa6\x08\x87\x1a\x54\x7f\x61\xf8\ \x1d\x5d\x11\x7a\x18\x62\x01\x89\x30\xe5\xb8\xd5\xc0\x95\x0c\x74\ \x1a\x1b\x1e\x6a\x6a\xad\xb9\x00\xc3\x36\xd8\x5e\ " qt_resource_name = b"\ \x00\x05\ \x00\x6f\xa6\x53\ \x00\x69\ \x00\x63\x00\x6f\x00\x6e\x00\x73\ \x00\x0a\ \x0d\x8c\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8b\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x87\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x36\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8e\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8a\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8d\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x30\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x89\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x78\x00\x70\x00\x6d\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x05\xc8\ \x00\x00\x00\xac\x00\x01\x00\x00\x00\x01\x00\x00\x30\x1d\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x19\x89\ \x00\x00\x00\x2a\x00\x01\x00\x00\x00\x01\x00\x00\x00\xab\ \x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x92\x00\x01\x00\x00\x00\x01\x00\x00\x2f\x6c\ \x00\x00\x00\x5e\x00\x01\x00\x00\x00\x01\x00\x00\x14\x6b\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/activeqt/webbrowser/ui_mainwindow.py0000644000076500000240000001615512613140041024320 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created: Fri Jul 26 06:46:58 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(812, 605) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.hboxlayout = QtWidgets.QHBoxLayout(self.centralWidget) self.hboxlayout.setContentsMargins(0, 0, 0, 0) self.hboxlayout.setSpacing(6) self.hboxlayout.setObjectName("hboxlayout") self.Frame3 = QtWidgets.QFrame(self.centralWidget) self.Frame3.setFrameShape(QtWidgets.QFrame.StyledPanel) self.Frame3.setFrameShadow(QtWidgets.QFrame.Sunken) self.Frame3.setObjectName("Frame3") self.vboxlayout = QtWidgets.QVBoxLayout(self.Frame3) self.vboxlayout.setContentsMargins(1, 1, 1, 1) self.vboxlayout.setSpacing(0) self.vboxlayout.setObjectName("vboxlayout") self.WebBrowser = QAxContainer.QAxWidget(self.Frame3) self.WebBrowser.setFocusPolicy(QtCore.Qt.StrongFocus) self.WebBrowser.setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}") self.WebBrowser.setObjectName("WebBrowser") self.vboxlayout.addWidget(self.WebBrowser) self.hboxlayout.addWidget(self.Frame3) MainWindow.setCentralWidget(self.centralWidget) self.tbNavigate = QtWidgets.QToolBar(MainWindow) self.tbNavigate.setOrientation(QtCore.Qt.Horizontal) self.tbNavigate.setObjectName("tbNavigate") MainWindow.addToolBar(4, self.tbNavigate) self.tbAddress = QtWidgets.QToolBar(MainWindow) self.tbAddress.setOrientation(QtCore.Qt.Horizontal) self.tbAddress.setObjectName("tbAddress") MainWindow.addToolBar(4, self.tbAddress) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 812, 26)) self.menubar.setObjectName("menubar") self.PopupMenu = QtWidgets.QMenu(self.menubar) self.PopupMenu.setObjectName("PopupMenu") self.FileNewGroup_2 = QtWidgets.QMenu(self.PopupMenu) self.FileNewGroup_2.setObjectName("FileNewGroup_2") self.unnamed = QtWidgets.QMenu(self.menubar) self.unnamed.setObjectName("unnamed") MainWindow.setMenuBar(self.menubar) self.actionGo = QtWidgets.QAction(MainWindow) icon = QtGui.QIcon() icon.addFile(":/icons/image0.xpm") self.actionGo.setIcon(icon) self.actionGo.setObjectName("actionGo") self.actionBack = QtWidgets.QAction(MainWindow) icon1 = QtGui.QIcon() icon1.addFile(":/icons/image1.xpm") self.actionBack.setIcon(icon1) self.actionBack.setObjectName("actionBack") self.actionForward = QtWidgets.QAction(MainWindow) icon2 = QtGui.QIcon() icon2.addFile(":/icons/image2.xpm") self.actionForward.setIcon(icon2) self.actionForward.setObjectName("actionForward") self.actionStop = QtWidgets.QAction(MainWindow) icon3 = QtGui.QIcon() icon3.addFile(":/icons/image3.xpm") self.actionStop.setIcon(icon3) self.actionStop.setObjectName("actionStop") self.actionRefresh = QtWidgets.QAction(MainWindow) icon4 = QtGui.QIcon() icon4.addFile(":/icons/image4.xpm") self.actionRefresh.setIcon(icon4) self.actionRefresh.setObjectName("actionRefresh") self.actionHome = QtWidgets.QAction(MainWindow) icon5 = QtGui.QIcon() icon5.addFile(":/icons/image5.xpm") self.actionHome.setIcon(icon5) self.actionHome.setObjectName("actionHome") self.actionFileClose = QtWidgets.QAction(MainWindow) self.actionFileClose.setObjectName("actionFileClose") self.actionSearch = QtWidgets.QAction(MainWindow) icon6 = QtGui.QIcon() icon6.addFile(":/icons/image6.xpm") self.actionSearch.setIcon(icon6) self.actionSearch.setObjectName("actionSearch") self.actionAbout = QtWidgets.QAction(MainWindow) self.actionAbout.setObjectName("actionAbout") self.actionAboutQt = QtWidgets.QAction(MainWindow) self.actionAboutQt.setObjectName("actionAboutQt") self.FileNewGroup = QtWidgets.QActionGroup(MainWindow) self.FileNewGroup.setObjectName("FileNewGroup") self.actionNewWindow = QtWidgets.QAction(self.FileNewGroup) self.actionNewWindow.setObjectName("actionNewWindow") self.tbNavigate.addAction(self.actionBack) self.tbNavigate.addAction(self.actionForward) self.tbNavigate.addAction(self.actionStop) self.tbNavigate.addAction(self.actionRefresh) self.tbNavigate.addAction(self.actionHome) self.tbNavigate.addSeparator() self.tbNavigate.addAction(self.actionSearch) self.tbAddress.addAction(self.actionGo) self.FileNewGroup_2.addAction(self.actionNewWindow) self.PopupMenu.addAction(self.FileNewGroup_2.menuAction()) self.PopupMenu.addSeparator() self.PopupMenu.addAction(self.actionFileClose) self.unnamed.addAction(self.actionAbout) self.unnamed.addAction(self.actionAboutQt) self.menubar.addAction(self.PopupMenu.menuAction()) self.menubar.addAction(self.unnamed.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Qt WebBrowser")) self.tbNavigate.setWindowTitle(_translate("MainWindow", "Navigation")) self.tbAddress.setWindowTitle(_translate("MainWindow", "Address")) self.PopupMenu.setTitle(_translate("MainWindow", "&File")) self.FileNewGroup_2.setTitle(_translate("MainWindow", "New")) self.unnamed.setTitle(_translate("MainWindow", "&Help")) self.actionGo.setIconText(_translate("MainWindow", "Go")) self.actionBack.setIconText(_translate("MainWindow", "Back")) self.actionBack.setShortcut(_translate("MainWindow", "Backspace")) self.actionForward.setIconText(_translate("MainWindow", "Forward")) self.actionStop.setIconText(_translate("MainWindow", "Stop")) self.actionRefresh.setIconText(_translate("MainWindow", "Refresh")) self.actionHome.setIconText(_translate("MainWindow", "Home")) self.actionFileClose.setText(_translate("MainWindow", "C&lose")) self.actionFileClose.setIconText(_translate("MainWindow", "Close")) self.actionSearch.setIconText(_translate("MainWindow", "Search")) self.actionAbout.setIconText(_translate("MainWindow", "About")) self.actionAboutQt.setIconText(_translate("MainWindow", "About Qt")) self.actionNewWindow.setIconText(_translate("MainWindow", "Window")) self.actionNewWindow.setShortcut(_translate("MainWindow", "Ctrl+N")) from PyQt5 import QAxContainer PyQt-gpl-5.5.1/examples/activeqt/webbrowser/webbrowser.py0000755000076500000240000001266412613140041023634 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import (QApplication, QLabel, QLineEdit, QMainWindow, QMessageBox, QProgressBar) import mainwindow_rc from ui_mainwindow import Ui_MainWindow class MainWindow(QMainWindow, Ui_MainWindow): # Maintain the list of browser windows so that they do not get garbage # collected. _window_list = [] def __init__(self): super(MainWindow, self).__init__() MainWindow._window_list.append(self) self.setupUi(self) # Qt Designer (at least to v4.2.1) can't handle arbitrary widgets in a # QToolBar - even though uic can, and they are in the original .ui # file. Therefore we manually add the problematic widgets. self.lblAddress = QLabel("Address", self.tbAddress) self.tbAddress.insertWidget(self.actionGo, self.lblAddress) self.addressEdit = QLineEdit(self.tbAddress) self.tbAddress.insertWidget(self.actionGo, self.addressEdit) self.addressEdit.returnPressed.connect(self.actionGo.trigger) self.actionBack.triggered.connect(self.WebBrowser.GoBack) self.actionForward.triggered.connect(self.WebBrowser.GoForward) self.actionStop.triggered.connect(self.WebBrowser.Stop) self.actionRefresh.triggered.connect(self.WebBrowser.Refresh) self.actionHome.triggered.connect(self.WebBrowser.GoHome) self.actionSearch.triggered.connect(self.WebBrowser.GoSearch) self.pb = QProgressBar(self.statusBar()) self.pb.setTextVisible(False) self.pb.hide() self.statusBar().addPermanentWidget(self.pb) self.WebBrowser.dynamicCall('GoHome()') def closeEvent(self, e): MainWindow._window_list.remove(self) e.accept() def on_WebBrowser_TitleChange(self, title): self.setWindowTitle("Qt WebBrowser - " + title) def on_WebBrowser_ProgressChange(self, a, b): if a <= 0 or b <= 0: self.pb.hide() return self.pb.show() self.pb.setRange(0, b) self.pb.setValue(a) def on_WebBrowser_CommandStateChange(self, cmd, on): if cmd == 1: self.actionForward.setEnabled(on) elif cmd == 2: self.actionBack.setEnabled(on) def on_WebBrowser_BeforeNavigate(self): self.actionStop.setEnabled(True) def on_WebBrowser_NavigateComplete(self, _): self.actionStop.setEnabled(False) @pyqtSlot() def on_actionGo_triggered(self): self.WebBrowser.dynamicCall('Navigate(const QString&)', self.addressEdit.text()) @pyqtSlot() def on_actionNewWindow_triggered(self): window = MainWindow() window.show() if self.addressEdit.text().isEmpty(): return; window.addressEdit.setText(self.addressEdit.text()) window.actionStop.setEnabled(True) window.on_actionGo_triggered() @pyqtSlot() def on_actionAbout_triggered(self): QMessageBox.about(self, "About WebBrowser", "This Example has been created using the ActiveQt integration into Qt Designer.\n" "It demonstrates the use of QAxWidget to embed the Internet Explorer ActiveX\n" "control into a Qt application.") @pyqtSlot() def on_actionAboutQt_triggered(self): QMessageBox.aboutQt(self, "About Qt") if __name__ == "__main__": a = QApplication(sys.argv) w = MainWindow() w.show() sys.exit(a.exec_()) PyQt-gpl-5.5.1/examples/animation/0000755000076500000240000000000012613140041017043 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/animatedtiles/0000755000076500000240000000000012613140041021666 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/animatedtiles/animatedtiles.py0000755000076500000240000002074312613140041025074 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, pyqtSignal, QEasingCurve, QObject, QParallelAnimationGroup, QPointF, QPropertyAnimation, qrand, QRectF, QState, QStateMachine, Qt, QTimer) from PyQt5.QtGui import (QBrush, QLinearGradient, QPainter, QPainterPath, QPixmap) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsPixmapItem, QGraphicsRectItem, QGraphicsScene, QGraphicsView, QGraphicsWidget, QStyle) import animatedtiles_rc # PyQt doesn't support deriving from more than one wrapped class so we use # composition and delegate the property. class Pixmap(QObject): def __init__(self, pix): super(Pixmap, self).__init__() self.pixmap_item = QGraphicsPixmapItem(pix) self.pixmap_item.setCacheMode(QGraphicsItem.DeviceCoordinateCache) def _set_pos(self, pos): self.pixmap_item.setPos(pos) pos = pyqtProperty(QPointF, fset=_set_pos) class Button(QGraphicsWidget): pressed = pyqtSignal() def __init__(self, pixmap, parent=None): super(Button, self).__init__(parent) self._pix = pixmap self.setAcceptHoverEvents(True) self.setCacheMode(QGraphicsItem.DeviceCoordinateCache) def boundingRect(self): return QRectF(-65, -65, 130, 130) def shape(self): path = QPainterPath() path.addEllipse(self.boundingRect()) return path def paint(self, painter, option, widget): down = option.state & QStyle.State_Sunken r = self.boundingRect() grad = QLinearGradient(r.topLeft(), r.bottomRight()) if option.state & QStyle.State_MouseOver: color_0 = Qt.white else: color_0 = Qt.lightGray color_1 = Qt.darkGray if down: color_0, color_1 = color_1, color_0 grad.setColorAt(0, color_0) grad.setColorAt(1, color_1) painter.setPen(Qt.darkGray) painter.setBrush(grad) painter.drawEllipse(r) color_0 = Qt.darkGray color_1 = Qt.lightGray if down: color_0, color_1 = color_1, color_0 grad.setColorAt(0, color_0) grad.setColorAt(1, color_1) painter.setPen(Qt.NoPen) painter.setBrush(grad) if down: painter.translate(2, 2) painter.drawEllipse(r.adjusted(5, 5, -5, -5)) painter.drawPixmap(-self._pix.width() / 2, -self._pix.height() / 2, self._pix) def mousePressEvent(self, ev): self.pressed.emit() self.update() def mouseReleaseEvent(self, ev): self.update() class View(QGraphicsView): def resizeEvent(self, event): super(View, self).resizeEvent(event) self.fitInView(self.sceneRect(), Qt.KeepAspectRatio) if __name__ == '__main__': import sys import math app = QApplication(sys.argv) kineticPix = QPixmap(':/images/kinetic.png') bgPix = QPixmap(':/images/Time-For-Lunch-2.jpg') scene = QGraphicsScene(-350, -350, 700, 700) items = [] for i in range(64): item = Pixmap(kineticPix) item.pixmap_item.setOffset(-kineticPix.width() / 2, -kineticPix.height() / 2) item.pixmap_item.setZValue(i) items.append(item) scene.addItem(item.pixmap_item) # Buttons. buttonParent = QGraphicsRectItem() ellipseButton = Button(QPixmap(':/images/ellipse.png'), buttonParent) figure8Button = Button(QPixmap(':/images/figure8.png'), buttonParent) randomButton = Button(QPixmap(':/images/random.png'), buttonParent) tiledButton = Button(QPixmap(':/images/tile.png'), buttonParent) centeredButton = Button(QPixmap(':/images/centered.png'), buttonParent) ellipseButton.setPos(-100, -100) figure8Button.setPos(100, -100) randomButton.setPos(0, 0) tiledButton.setPos(-100, 100) centeredButton.setPos(100, 100) scene.addItem(buttonParent) buttonParent.setScale(0.75) buttonParent.setPos(200, 200) buttonParent.setZValue(65) # States. rootState = QState() ellipseState = QState(rootState) figure8State = QState(rootState) randomState = QState(rootState) tiledState = QState(rootState) centeredState = QState(rootState) # Values. for i, item in enumerate(items): # Ellipse. ellipseState.assignProperty(item, 'pos', QPointF(math.cos((i / 63.0) * 6.28) * 250, math.sin((i / 63.0) * 6.28) * 250)) # Figure 8. figure8State.assignProperty(item, 'pos', QPointF(math.sin((i / 63.0) * 6.28) * 250, math.sin(((i * 2)/63.0) * 6.28) * 250)) # Random. randomState.assignProperty(item, 'pos', QPointF(-250 + qrand() % 500, -250 + qrand() % 500)) # Tiled. tiledState.assignProperty(item, 'pos', QPointF(((i % 8) - 4) * kineticPix.width() + kineticPix.width() / 2, ((i // 8) - 4) * kineticPix.height() + kineticPix.height() / 2)) # Centered. centeredState.assignProperty(item, 'pos', QPointF()) # Ui. view = View(scene) view.setWindowTitle("Animated Tiles") view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.setBackgroundBrush(QBrush(bgPix)) view.setCacheMode(QGraphicsView.CacheBackground) view.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform) view.show() states = QStateMachine() states.addState(rootState) states.setInitialState(rootState) rootState.setInitialState(centeredState) group = QParallelAnimationGroup() for i, item in enumerate(items): anim = QPropertyAnimation(item, b'pos') anim.setDuration(750 + i * 25) anim.setEasingCurve(QEasingCurve.InOutBack) group.addAnimation(anim) trans = rootState.addTransition(ellipseButton.pressed, ellipseState) trans.addAnimation(group) trans = rootState.addTransition(figure8Button.pressed, figure8State) trans.addAnimation(group) trans = rootState.addTransition(randomButton.pressed, randomState) trans.addAnimation(group) trans = rootState.addTransition(tiledButton.pressed, tiledState) trans.addAnimation(group) trans = rootState.addTransition(centeredButton.pressed, centeredState) trans.addAnimation(group) timer = QTimer() timer.start(125) timer.setSingleShot(True) trans = rootState.addTransition(timer.timeout, ellipseState) trans.addAnimation(group) states.start() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/animation/animatedtiles/animatedtiles.qrc0000644000076500000240000000050412613140041025217 0ustar philstaff00000000000000 images/Time-For-Lunch-2.jpg images/centered.png images/ellipse.png images/figure8.png images/kinetic.png images/random.png images/tile.png PyQt-gpl-5.5.1/examples/animation/animatedtiles/animatedtiles_rc.py0000644000076500000240000141366112613140041025563 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 15:49:03 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x36\xe2\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x24\x7c\x1a\xa6\xff\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\xed\x9d\x77\x98\x9d\x65\x9d\xf7\x3f\xf7\x53\x4e\x9f\x99\x33\ \x33\x99\x4c\x66\x12\x32\xa9\xa4\x03\x91\x90\x10\x6a\xe8\x48\xd9\ \x05\xa5\x88\xc8\xba\xeb\xcb\xb2\xae\x04\x51\x57\x5f\x57\x5d\x5d\ \x76\x5d\x45\x51\x56\x50\x71\x59\x75\xa5\x59\xc0\x12\x3a\x16\x88\ \x94\x00\x09\x29\xa4\x4d\xea\xb4\x4c\xa6\xcf\x9c\x39\xbd\x3d\xf5\ \x7e\xff\x38\xf3\x3c\x99\x41\x94\x34\x7d\xdf\xeb\xbd\xb8\xaf\x2b\ \x57\x32\xc9\xc9\x79\xca\xf7\xfe\xb5\xef\xaf\xdc\xf0\xee\x7a\x77\ \xbd\xbb\xde\x5d\xef\xae\x77\xd7\xbb\xeb\xdd\xf5\xee\x7a\x77\xfd\ \x7f\xbf\xc4\xb1\xfc\xe7\xba\xba\xba\xab\x0c\xc3\x08\x4e\x99\x32\ \xe5\x73\x2b\x57\xae\x3c\x51\x51\x14\xb6\x6d\xdb\x46\x6d\x6d\xed\ \xa1\x0b\xb8\x02\x09\x20\xe4\x1f\x5c\x4d\x55\xd5\x94\xa2\x28\xf9\ \x72\xb9\xac\xbf\xfa\xea\xab\xb3\xfe\x6f\xbf\x8c\xda\xda\xda\x9f\ \x5d\x77\xdd\x75\x57\x97\xcb\x65\x17\x40\x41\xe0\x48\x89\xf8\x23\ \x6f\xc9\x71\x1c\x02\x81\x00\xaf\xbf\xfe\xba\xb3\x60\xc1\x82\xc2\ \xc0\xc0\x40\x6c\xcb\x96\x2d\xd3\x2d\xcb\x4a\x1e\xed\x3d\x68\xc7\ \xf2\x00\x8b\x16\x2d\xfa\xe1\xcc\x99\x33\xeb\x37\x6f\xde\x4c\xa9\ \x54\xc2\xb6\x6d\xea\xeb\xeb\x69\x68\x68\x40\x08\x41\xbf\x95\x62\ \xda\x05\x45\xaa\xa2\x3a\x4e\x3a\x88\x93\xd1\x71\x73\x3a\x76\x4a\ \x43\x16\x35\x80\xb0\x94\xf2\x0f\xbe\x77\xda\xb4\x69\xa2\xb7\xb7\ \x57\xfe\x25\x40\xa8\xaa\xaa\xba\x60\xc5\x8a\x15\x6b\x74\x5d\x37\ \x1d\xc7\xa9\xe9\xef\xed\xd3\x6d\x0b\x84\x22\x31\x30\x09\xc5\x04\ \xb2\xa0\x4d\xd8\x4c\x42\x08\xf6\xee\xdd\xcb\xd2\xa5\x4b\xbd\x8d\ \x85\xa6\x69\xb1\x58\x2c\x86\xeb\xba\xa7\x85\x42\xa1\x6c\x6d\x6d\ \xed\xae\x81\x81\x81\xec\x9f\x1d\x90\x45\x8b\x16\xb1\x77\xef\xde\ \x90\xe3\x38\x28\x8a\xe2\x94\x4a\x25\x5c\xd7\xc5\x34\x4d\x6c\xdb\ \xc6\xb2\x2c\xca\xe5\x32\x42\x08\x8a\xdd\x09\xba\xba\xc3\x48\x69\ \x22\x30\x91\xaa\x8b\x40\x80\xa8\x3c\xf0\x38\x19\x95\x67\x9c\x71\ \x86\x04\xc8\x66\xb3\xb4\xb6\xb6\x8a\xbf\x94\x54\x94\xcb\xe5\xe6\ \xc9\x93\x27\x57\x9b\xa6\x89\x82\xe0\x60\xb8\x87\x85\x17\x2a\xd8\ \xc3\x41\xec\x44\x10\x67\x34\x88\x8c\x0a\xa4\xa9\x20\x2d\xa5\xf2\ \xd2\x34\x0d\x55\x55\x31\x4d\x13\x45\x51\x70\x5d\x17\xc3\x30\x30\ \x4d\x53\x5e\x75\xd5\x55\xbf\x11\x42\xf0\xda\x6b\xaf\x5d\x00\xfc\ \xfe\xcf\x0e\x48\x47\x47\xc7\x9c\xd3\x4e\x3b\xad\xad\xb6\xb6\x96\ \x42\xa1\x80\x69\x9a\x13\x00\xf1\x6e\x4e\x51\x14\xa6\x4c\x6d\x22\ \x1c\x0e\xa3\x08\x41\xab\x71\x80\xe5\x1f\x82\x40\x40\xc1\x1e\xd5\ \xb1\x7a\xa3\x98\x83\x01\x9c\xe1\x20\x42\xa9\x28\x05\x29\x25\xc1\ \x60\xf0\x2f\xab\xb3\x85\xf0\x37\x92\x86\x8a\x3b\x3f\x43\x20\x5e\ \x43\x20\x5e\x82\x13\x4b\x13\x3e\x3b\xf4\xe8\x24\xdc\xa2\x8a\xeb\ \xba\x48\x29\x31\x0c\x03\x21\x04\x52\x4a\x2c\xcb\xc2\x75\x5d\x61\ \x18\x06\x9a\xa6\x01\xb8\x7f\x11\x95\x55\x2e\x97\x1b\x1a\x1a\x1a\ \x08\x85\x42\xe4\xf3\x79\x0c\xc3\xf0\x6f\xce\x71\x1c\x1c\xc7\xf1\ \x6f\x34\x10\x08\x54\xc0\x11\x82\x5e\x7b\x84\xf3\x62\x4d\xb8\x46\ \x90\x25\x4b\x4e\x61\xe7\xe4\x57\x89\x08\x89\xa2\xe8\xa4\x5f\xae\ \xa2\xb0\x27\x8c\x94\x12\xd7\x75\xff\xec\x20\x44\xa3\xd1\xb3\xae\ \xb9\xe6\x9a\x75\xa5\x52\xa9\xf2\x42\x5d\x29\x43\xf5\x42\xb8\x29\ \x9d\x19\xbb\x4e\x61\x74\x97\xac\x48\xf0\x5b\xe4\xb4\x6d\xef\x2e\ \x66\xcc\x98\xe1\x03\x32\x5e\x42\xca\xe5\xb2\xbf\x31\xa5\x94\x94\ \xcb\xe5\x8f\x57\x55\x55\x5d\x57\x55\x55\xf5\x40\x7f\x7f\xff\xa6\ \x3f\xab\x0d\xb1\x6d\x1b\xc3\x30\x7c\x69\xf0\x6e\xc4\x71\x1c\x7f\ \xb7\x09\x21\x50\x55\x15\xcb\xb2\x90\xae\x4b\x7d\x3a\xc4\xc1\xa7\ \x15\x4e\x08\x2e\x26\x57\x3f\x05\x3b\x31\x17\xac\x30\x49\x3a\x29\ \x0c\x98\x38\x79\xc7\x07\xe4\xec\xb3\xcf\xfe\x1f\x29\x65\x20\x99\ \x4c\x86\x7b\x7b\x7b\xff\x36\x9b\xcd\xe6\x8f\x27\x20\x52\xca\xb0\ \xaa\xaa\x15\x89\x96\x92\x5d\x93\x77\x8a\xf3\xaf\xac\xc3\x95\x36\ \x76\x56\x43\x64\xc3\xd8\x59\x0d\x27\xab\x51\xde\x1f\x41\x3a\xc2\ \x97\xa6\x72\xb9\x8c\xa2\x54\x54\x97\x07\x88\x27\x21\x8e\xe3\x54\ \x9e\x57\x4a\xb9\x6a\xd5\xaa\xab\x9b\x9b\x9b\x79\xf0\xc1\x07\xd7\ \x03\x7f\x1e\x40\xa6\x4d\x9b\xb6\xb0\x54\x2a\xcd\xb7\x6d\x1b\x29\ \x25\x8e\xe3\x4c\x50\x59\x8e\xe3\x00\xf8\x2a\x4b\xd3\x34\xff\x33\ \x0b\x1b\x66\x13\x4d\x55\x91\x24\x41\x77\x7f\x37\xf1\xf7\x14\xd0\ \xcc\x00\xd1\x44\x9c\x48\xbd\x86\xac\x11\x48\x43\x01\x57\x80\xe0\ \x23\x00\xe1\x70\x98\xdd\xbb\x77\x7f\x14\x38\x26\x40\x9a\x9a\x9a\ \x18\x18\x18\x18\x0f\x88\x34\x4d\x13\xd3\x34\x31\x5d\x9b\x58\xb5\ \x0e\xb6\xc2\xf2\xc9\xef\xa7\xaa\x25\xc4\x4b\x9d\xbf\x62\xfa\xbc\ \x26\x86\x8c\x2e\xf2\x1d\x2a\x4e\xa9\x02\x80\xf7\x9c\xe3\xed\x86\ \xf7\x67\x4f\x32\xc6\xde\x87\xc8\x66\xb3\x44\xa3\x51\x14\x45\x91\ \x7f\x36\x95\x55\x5b\x5b\xbb\x66\xd9\xb2\x65\xf3\xd2\xe9\xb4\x6f\ \x2f\x1c\xa7\xb2\xb3\x3d\x2f\x2b\x18\x0c\x32\x66\xf0\x09\x06\x83\ \xb8\xae\x8b\x65\x59\xbe\xb1\x57\x51\xd8\x17\xee\xe0\xc2\x05\xd5\ \x40\xf1\x2d\x0a\x5d\x92\x5e\x57\x43\xb9\x2d\x02\x80\x65\x59\xc7\ \x45\x22\x06\x06\x06\x68\x6a\x6a\x9a\x04\x2c\x01\x1c\xc3\x30\x4e\ \x4e\x24\x12\x64\xb3\x59\x6c\x5c\xec\x11\x9b\x9d\xcf\x17\xb8\xf2\ \x7d\xf3\x79\xfa\xd5\x35\xcc\x6b\xbe\x82\xf7\xd4\xaf\xe4\xbf\xb6\ \x7f\x8a\x6c\x2a\x87\x2e\xc3\xbe\x9b\xeb\x01\x02\x50\x28\x14\x70\ \x1c\x07\xd7\x75\x29\x95\x4a\x9e\xed\xc0\xf3\x1c\x3d\x4d\xf1\x67\ \x03\x44\x4a\xa9\x14\x0a\x05\x1f\x08\xdb\xb6\xc9\xe5\x72\xd8\xb6\ \x4d\x3e\x9f\xf7\x75\x6b\xa9\x54\x42\x51\x14\xc2\xe1\x30\xb6\x6d\ \x63\xdb\xf6\xa1\x87\x91\x02\xc2\x15\xf1\xff\xc8\xc2\xbb\x91\x8a\ \x4b\xda\xed\x64\xe3\xd6\x2e\x92\x55\xeb\x18\x1d\xfb\x9c\xb7\x23\ \x8f\xd7\x2a\x95\x4a\x37\x9f\x7f\xfe\xf9\x77\xaa\xaa\x8a\x40\x90\ \x30\x33\x4c\x3f\xbd\x1a\x77\x38\x8c\x33\xda\x82\x48\xc3\x8f\xbe\ \xf3\x53\x14\x55\xf0\x1a\x5b\x78\x55\x6e\x26\xa0\xcd\x27\x9f\x6c\ \x27\x1a\x55\x91\x52\x7a\xb6\xc1\x07\xa4\x58\x2c\xfa\xef\x22\x9b\ \xcd\x12\x8b\xc5\x7c\x30\xc6\x49\x4b\x63\x2c\x16\x9b\x95\xcf\xe7\ \x3b\xff\x1c\x80\xf8\x2f\xd8\xb2\x2c\x6c\xdb\xf6\x5f\x9e\xa6\x69\ \x3e\x10\xaa\xaa\xfa\xde\x4b\xb1\x58\xf4\x8d\xbd\x27\x21\x58\x92\ \xd1\x5e\x83\xa9\xef\x99\xcb\x75\x3f\x5a\xca\xcf\x3e\xb2\x81\xa6\ \x93\xd2\xac\xed\xc9\xb2\x27\xfb\x2a\xf9\x9c\xe9\xab\x3e\xa0\xce\ \xbb\xfe\xf4\xe9\xd3\x93\x07\x0f\x1e\x74\x8f\xd2\x6e\x44\xbd\x0d\ \x53\x74\x4d\xb4\x73\xfa\xa9\x9d\x1f\xc1\x92\x83\x48\x1b\x44\x36\ \x86\x9d\x51\x71\x52\x3a\xf9\x2d\xd5\xa0\x48\x1c\x69\xfb\xb6\xc2\ \x93\x90\x54\x2a\x85\xaa\xaa\x38\x8e\xe3\xc5\x1f\x08\x21\xd0\x34\ \x0d\x45\x51\xc8\xe5\x72\x04\x83\x41\x22\x91\x08\xa6\x69\xca\x93\ \x4f\x3e\xf9\x9b\xaa\xaa\xde\xf1\xca\x2b\xaf\x54\xfd\x39\x00\x91\ \x1e\x10\xde\x4e\x51\x14\x05\xdb\xb6\x99\x34\x69\x12\x37\xdd\x74\ \x13\xdf\xf9\xce\x77\xa8\xad\xad\x65\xfa\xf4\xe9\x74\x75\x75\x91\ \xcd\x66\x7d\x63\xed\x38\x0e\x96\x10\xa8\xdb\x5c\x8a\xf9\xa9\xdc\ \xf4\xab\x0f\x50\x1b\x38\x95\x9b\xd6\xdd\x88\xae\xa9\xa8\x76\x08\ \x4d\x6b\x24\x5e\xe3\xc7\x28\xf2\xca\x2b\xaf\xdc\xe7\xfd\xff\xf5\ \xeb\xd7\xcf\x07\xf6\x1d\xad\x94\x78\x2a\xc4\x74\x4d\xe2\xe1\x00\ \x85\x8c\xcb\x4d\x27\xdf\x81\xab\x16\x59\xb3\xf7\x5e\x26\x37\x34\ \x32\x9c\xef\x65\xf4\xd5\x30\x4a\x40\x4e\x50\xc9\xde\x86\x54\x55\ \xd5\x07\x24\x16\x8b\x21\x84\xf0\x37\xa1\xa2\x28\xfe\x35\x02\x81\ \x00\x96\x65\x09\x21\x04\xe1\x70\xb8\x70\xb8\xf7\xa8\x1c\xce\x87\ \xa6\x4c\x99\x32\x69\xca\x94\x29\x2f\xb9\xae\x3b\xcd\xb3\x05\xd9\ \x6c\x25\x08\xbd\xea\xaa\xab\x68\x6c\x6c\xe4\x57\xbf\xfa\x15\xcd\ \xcd\xcd\x00\xac\x5d\xbb\x96\xdb\x6f\xbf\x9d\x50\x28\x84\xa6\x69\ \xbe\x71\x37\x0c\x83\x72\xa9\x84\xd0\x04\xa1\x58\x90\xda\xda\x5a\ \xba\xd5\x21\x16\x7c\xbc\xcc\xac\x8f\x16\x69\xb9\x75\x94\xc9\xd7\ \x24\x89\x9f\x6e\x10\x69\x16\x04\x83\x01\x11\x0c\x06\x09\x06\x83\ \xd4\xd7\xd7\xe3\x38\xce\x31\xe9\x30\xc3\x30\xbc\x00\x0e\x45\x28\ \x9c\x14\x7e\x3f\xa1\x6a\x9b\xe7\xdf\x78\x9d\x45\xda\xf5\xac\x3e\ \xe3\x6e\x6a\x42\xf5\x94\xcb\xe5\xca\xbd\x96\xcb\x98\xa6\x49\x36\ \x9b\xf5\x37\x56\x20\x10\xf0\xa5\xe1\xb2\xcb\x2e\x23\x12\x89\x50\ \x5f\x5f\xcf\xdc\xb9\x73\x7d\x60\x34\x4d\xf3\xb5\x87\xe7\x7d\x1d\ \x57\x40\x92\xc9\x64\xed\x05\x17\x5c\x70\x6e\x28\x14\x8a\x58\x96\ \xe5\x5f\xb8\x5c\x2e\xf3\xe1\x0f\x7f\x18\xc3\x30\xb8\xff\xfe\xfb\ \x59\xbe\x7c\xb9\xaf\x3b\xbd\x1b\x5f\xb0\x60\x01\xb7\xdd\x76\xdb\ \x04\xe3\xee\xc5\x2d\xa6\x61\xe2\x04\x4c\x34\x4d\x25\x9b\x74\xb8\ \x6a\xe1\xc7\xa8\x9b\x1a\x23\xb2\x38\x4b\xed\x15\xc3\xe8\x0b\x52\ \x18\xa5\x31\x6f\xc8\x34\x8f\xd8\x40\x36\x34\x34\x5c\x1e\x8d\x46\ \x6f\x8a\xc5\x62\x37\x4a\x29\x97\x0c\x0d\x0d\x31\x38\x38\x48\x62\ \x68\x84\x81\x37\xb3\xf4\xed\x18\xe0\xb9\x35\x6b\xd9\xf1\xfa\x0e\ \xf6\x6d\xda\xc3\xfd\x0f\x7c\x97\x9d\x2f\x76\x91\x2f\x64\x7d\xe0\ \x3c\x0f\xca\xf3\xa2\xce\x3e\xfb\x6c\xaa\xab\xab\x91\x52\x92\x48\ \x24\x7c\xa3\x9e\x48\x24\x18\x93\x06\x5f\x75\x65\xb3\x59\x5f\x5d\ \x1f\x57\xa3\xee\xf9\xdf\xde\xc5\x15\x45\xe1\xfc\xf3\xcf\xa7\xb5\ \xb5\x95\xc7\x1f\x7f\x9c\xba\xba\x3a\x9e\x7a\xea\x29\x9e\x79\xe6\ \x19\x42\xa1\x10\x57\x5d\x75\x15\xa7\x9f\x7e\x3a\xa9\x54\x8a\xfb\ \xef\xbf\x9f\xbe\xbe\x3e\x0c\xc3\x20\x99\x4c\xfa\xd1\xb8\x69\x9a\ \x20\x41\x6a\x92\x72\xc9\xe1\xae\xf7\x3e\xc5\xa3\xad\xdf\xe0\xa6\ \xf9\x5f\x65\xed\x8e\x17\x50\x1b\xfa\x78\xcd\xde\x56\xb1\x23\x4a\ \x65\x67\x1e\xe9\x9a\x3c\x79\xf2\xb7\x97\x2d\x5b\x36\xcb\xb2\x2c\ \x54\xa1\x50\xac\x4e\xcb\x58\xb5\x26\xdc\xac\x8e\x9d\xd4\xe9\xdb\ \x36\x0c\x02\xea\xb5\x69\x8c\xa6\x73\x24\x64\x96\xa6\xc0\x0a\xf6\ \x8f\xbe\x44\x53\xa0\xc9\x7f\x91\x9e\x4d\xb4\x2c\x8b\x48\x24\xe2\ \x7b\x91\x1b\x37\x6e\x24\x16\x8b\x91\x48\x24\xa8\xae\xae\x46\x08\ \xc1\xb4\x69\xd3\x18\x1e\x1e\x26\x9f\xcf\xfb\x31\xdb\x91\x48\xb6\ \x72\xb8\x80\x78\x60\x14\x8b\x45\xa6\x4d\x9b\xc6\xbf\xfc\xcb\xbf\ \xa0\x69\x1a\xcf\x3d\xf7\x1c\x7d\x7d\x7d\xc4\x62\x31\x82\xc1\xa0\ \xef\xee\x6e\xdb\xb6\x0d\x4d\xd3\x26\xf8\xff\x9e\xcd\x39\x24\x21\ \x95\x28\x3f\xa0\x46\x98\xd6\x38\x85\x84\xd8\x85\xb4\x42\x48\x09\ \x8e\xb4\x70\x1d\x07\xc3\x34\x7c\xd1\xb7\xde\xe2\x07\x37\x35\x35\ \xbd\xd3\x7d\x3b\xe5\x72\x99\x72\xb9\xcc\xee\x6c\x17\x91\x73\x07\ \x45\xe8\xac\x7e\x42\x97\x75\x50\xf5\xe1\x7d\xd4\x7c\xf0\x00\xa1\ \x73\xfb\x11\x33\x93\x95\xeb\x58\x26\x96\x7b\x28\x9e\xf0\x24\xbd\ \xbe\xbe\x1e\x4d\xd3\xd0\x75\x9d\x97\x5e\x7a\xc9\xb7\x29\xba\xae\ \xfb\x52\x14\x0e\x87\x31\x0c\xc3\x07\xcf\xb3\x35\x63\x80\x34\xad\ \x5c\xb9\x52\xd6\xd7\xd7\xcf\x3f\x6e\x46\xdd\x8b\x3b\x4c\xd3\xa4\ \x54\x2a\x31\x30\x30\x40\x24\x12\x61\x68\x68\x08\xc7\x71\xe8\xef\ \xef\xf7\xe9\xe8\xd1\xd1\xd1\x0a\x97\x35\x65\x0a\x9f\xfd\xec\x67\ \x71\x1c\x87\x60\x30\x88\xaa\x1e\x72\x1f\xbd\x77\xeb\xb4\x97\xd8\ \xf0\xef\x2a\xa7\xfe\xdb\xa9\x00\x3c\xcf\x87\xde\xf6\xfa\xd9\x6c\ \x96\xf9\xf3\xe7\x77\x79\xee\xf0\xd0\xd0\xd0\xbf\x0d\x0c\x0c\xdc\ \xf1\x4e\x5e\xa1\x07\xa6\x29\x2d\x14\x14\xc8\x4c\xe6\x8e\xcb\xbf\ \x47\x7b\x7a\x33\xdf\x7b\xf9\xdf\x58\xbc\x64\x0e\xdd\x75\x9d\x64\ \x77\x69\xbe\x34\x18\x86\x41\x2a\x95\xf2\x8d\xf3\xf5\xd7\x5f\xcf\ \x9a\x35\x6b\xc8\x64\x32\xd4\xd5\x55\x9c\xbe\xd1\xd1\x51\xff\x1a\ \xf5\xf5\xf5\x98\xa6\x49\x38\x1c\x66\x68\x68\x08\x55\x55\x89\xc7\ \xe3\xe8\xba\x4e\x2e\x97\x03\x60\xee\xdc\xb9\xec\xda\xb5\xcb\x39\ \x2e\x80\x58\x96\x55\xf0\x5e\xa0\xa2\x28\x14\x8b\x45\x3e\xf3\x99\ \xcf\x50\x5d\x5d\xed\xe7\x3e\xc6\x7b\x22\xde\x9f\x93\xc9\x24\x81\ \x40\xc0\x07\xe4\x87\x3f\xfc\x21\x86\x61\xf0\xf1\x8f\x7f\xdc\xe7\ \xbb\x54\x54\x96\x2c\x59\x52\x51\x89\xd2\x21\x39\xf7\x00\x73\x16\ \x46\x70\x72\x2a\xd6\x70\x08\x7b\x28\x88\x35\x18\x44\x48\x05\xa1\ \xbb\xfe\x35\x86\x86\x86\x0e\xdb\x90\xdb\x96\x8d\xab\x3a\x08\x45\ \x70\xdd\x82\x4f\xb3\xbe\xf7\x49\x9c\x91\x69\x5c\x37\xf7\x4b\x9c\ \x7f\xea\x99\xdc\xfe\xe8\xe5\xbe\x6b\xab\xaa\xaa\x1f\x03\x79\x6c\ \xc3\x96\x2d\x5b\x2a\xe4\xe3\x98\x73\x32\x69\xd2\x24\xa4\x94\x08\ \x21\x28\x95\x4a\xfe\xc6\x54\x55\x95\x50\x28\x44\xb1\x58\x24\x12\ \x89\xf8\xa1\x80\x65\x59\xfe\xf7\x1f\x33\x20\xb5\xb5\xb5\xb7\x2c\ \x5d\xba\xf4\x2e\x8f\x2e\x39\xe1\x84\x13\x48\xa5\x52\x04\x02\x01\ \xd2\xe9\xb4\xaf\x82\xa4\x94\x28\x8a\xe2\xb3\x9f\xde\xee\x1a\xa3\ \x16\x5c\x65\x2c\x9a\x9a\x36\x6d\x1a\x8e\xe3\x50\x28\x14\x10\x08\ \x6c\x69\x51\x2c\x16\x29\x97\xcb\xf4\x59\x49\x5a\xa6\x3b\xc8\x48\ \x89\xc6\x49\xd3\x49\x4d\xed\x43\x0a\x07\xd3\x35\x51\x4a\x61\x86\ \x1e\x99\x5c\x49\x74\x1d\x01\x45\x62\x59\x16\xb6\x65\x21\x15\x89\ \xa2\x09\x1a\xaa\x9b\x39\x58\xfa\x3d\xc9\x24\x64\xdd\x7e\xea\x4e\ \x30\x08\x07\x23\x5e\xcc\x33\x41\xe5\x78\x2a\xb6\xa7\xa7\x87\x50\ \x28\x84\xeb\xba\xac\x5e\xbd\x9a\xad\x5b\xb7\xd2\xd9\xd9\xe9\x7b\ \x52\xaa\x5a\x61\x80\x6b\x6a\x6a\xc8\x66\xb3\xa8\xaa\x4a\x2c\x16\ \xf3\xd5\x9e\x17\xbb\x1d\x8e\x53\xf2\x8e\x80\x98\xa6\x39\xb5\xa9\ \xa9\xa9\xa6\xa7\xa7\x07\xd3\x34\xb9\xe7\x9e\x7b\xd8\xb3\x67\x0f\ \x37\xde\x78\x23\x3f\xf8\xc1\x0f\x48\x24\x12\xd4\xd6\xd6\x12\x0c\ \x06\x79\xe9\xa5\x97\x58\xb8\x70\x21\xbb\x76\xed\xa2\xa7\xa7\x87\ \xb9\x73\xe7\xb2\x6d\xdb\x36\xf6\xef\xdf\x7f\xfb\x82\x05\x0b\xbe\ \xf3\xec\xb3\xcf\x72\xd1\x45\x17\x51\x2e\x97\x7d\x95\x25\x74\xc5\ \xf7\xbe\x5c\xc7\x45\x55\x04\xa1\xec\x7c\x3e\x71\xd1\x9d\x68\x32\ \xca\x17\x9e\xf8\x08\x1f\x3e\xfb\x46\x7e\xb6\xfd\x6e\x2c\xcb\xac\ \xe4\x52\xfe\xc8\x83\x0d\x0c\x0c\x30\x6b\xd6\xac\x3b\xa3\xd1\xe8\ \x54\x00\xe9\xca\x29\xc9\xd1\x14\xd2\x75\x41\xb7\xe9\xfc\xa5\xc2\ \x77\x5f\xf8\x16\x69\xf7\x20\x46\x36\x88\x4d\x89\xee\x75\x9d\x74\ \x0d\xe6\x30\xcd\xb0\x0f\x48\x38\x1c\x66\xc6\x8c\x19\x0c\x0e\x0e\ \x62\x9a\x66\xaa\x54\x2a\xf5\x38\x8e\xb3\x44\x51\x14\x71\xd7\x5d\ \x77\x49\xd7\x75\x85\xb7\x01\x3d\x1b\x0b\xf8\x86\x1c\x20\x95\x4a\ \x11\x8b\xc5\xfc\x4d\x7a\xb8\x34\x8a\x76\x38\x06\xdd\x34\x4d\x0a\ \x85\x02\xaa\xaa\xf2\xa3\x1f\xfd\x88\x6f\x7f\xfb\xdb\xfc\xf4\xa7\ \x3f\x65\xfd\xfa\xf5\xa8\xaa\x8a\xae\xeb\x68\x9a\x46\x2a\x95\x62\ \xef\xde\xbd\xe4\xf3\x79\xca\xe5\x32\x89\x44\xc2\x53\x5f\x21\x55\ \x55\xd9\xb0\x61\x03\xaf\xbf\xfe\xba\xef\xab\x8f\xbd\x34\xdf\xdf\ \xb7\xb1\x71\x71\x59\xd6\x70\x19\x8f\x6c\xfb\x2a\xb3\xb4\xf3\xb9\ \xf6\xa4\xd5\xb4\xd4\x4c\x41\xa0\x54\xd4\x9c\x22\xde\xc9\xb3\xfa\ \xfb\xe9\xd3\xa7\xd7\x0b\x21\x28\x38\x65\x58\x38\x4c\x7d\x3c\x8c\ \xd3\x1f\xc1\xea\x0b\x93\x19\x4d\x22\x88\x11\xaa\x98\x65\x8a\x43\ \x92\x46\x71\x22\x1d\x66\x87\xcf\x38\x54\x57\x57\x13\x8f\xc7\x49\ \xa5\x52\x98\xa6\xf9\xec\x9e\x3d\x7b\x6e\x8a\xc7\xe3\xd7\x5a\x96\ \x35\xcb\xb2\xac\xaf\x5d\x70\xc1\x05\xac\x58\xb1\x82\x47\x1f\x7d\ \xd4\xb7\xab\x5e\x10\xe9\x51\x4a\x8a\xa2\x30\x3c\x3c\x4c\x34\x1a\ \x3d\x22\x5e\xeb\xb0\x00\xf1\xbe\xcc\x73\xf5\x4e\x3b\xed\x34\x5f\ \x2d\x8d\xb7\x1f\x42\x08\x7a\x7b\x7b\xfd\x3f\x1f\x38\x70\xc0\xf3\ \xbc\xd2\xfb\xf7\xef\xff\xab\xb1\xe8\x95\x50\x28\xf4\xf8\x89\x27\ \x9e\xa8\x7e\xf1\x8b\x5f\xe4\x73\x9f\xfb\x1c\xa6\x69\x56\xf2\x29\ \xaa\x8d\x10\x10\xd0\x22\x38\xae\x8d\x61\x9a\x64\x64\x8a\xae\x4c\ \xe2\x10\x85\x21\xf0\x77\xe6\xdb\x2d\x8f\x85\x05\x78\x23\xbf\x9f\ \xeb\x4f\xaf\xc1\xb2\x73\x94\x5a\x06\xa9\xd6\xc2\x08\x47\x45\x1a\ \x2a\xc5\x3d\x51\xf2\xdb\x62\x20\x2a\x3b\x3d\x95\x4a\xf9\xd7\x28\ \x95\x4a\xa4\x52\xa9\x09\xcf\x98\x4e\xa7\x7f\x01\x9c\xb8\x6a\xd5\ \xaa\xaf\xdd\x79\xe7\x9d\xe8\xba\x8e\x61\x18\x74\x75\x75\xb1\x74\ \xe9\x52\x7e\xf9\xcb\x5f\xf2\xbe\xf7\xbd\x8f\x2d\x5b\xb6\xb0\x67\ \xcf\x1e\x2e\xbd\xf4\x52\x86\x86\x86\x58\xbb\x76\xad\xbf\xa9\x17\ \x2c\x58\xf0\x66\x6b\x6b\xeb\xaa\x6c\x36\xbb\xe5\x98\x25\xc4\x33\ \x70\x93\x27\x4f\x66\x68\x68\xc8\xb7\x15\xde\x4d\xbb\xae\xeb\xff\ \xf2\x78\xac\xb1\x07\x7c\x42\xd7\xf5\xbd\xc3\xc3\xc3\xaf\x7a\xdf\ \xd9\xd2\xd2\x22\x9f\x7b\xee\x39\x5e\x7c\xf1\x45\x96\x2f\x5f\xce\ \x86\x0d\x1b\x2a\xbb\x2c\xe4\x32\xb4\xce\xe2\xf9\xf8\xd3\xc8\xc8\ \x28\xfd\xca\x1b\x18\x56\x89\xaa\x1a\x9d\x83\x43\x06\x85\xa2\xed\ \xdf\x53\x2c\x16\x3b\x77\xf1\xe2\xc5\x5f\x02\x84\x61\x18\x76\x5b\ \x5b\xdb\x57\x3c\xbe\xc9\xf7\x8e\x85\x44\x22\x59\x20\xae\x67\xc5\ \x7b\x4e\x21\x6d\xf6\xb3\x61\xdf\x6b\x64\x42\xfb\x29\x06\x6c\x2c\ \xcb\x44\x22\xd1\x34\xcd\x27\x32\x5d\xd7\x95\xaa\xaa\x0a\xc7\x71\ \x88\xc7\xe3\x24\x12\x89\xf1\xe8\x2b\x43\x43\x43\xec\xde\xbd\x9b\ \xe6\xe6\x66\x3c\x97\x7a\xe3\xc6\x8d\x00\xbc\xf6\xda\x6b\x94\xcb\ \x65\x74\x5d\xe7\xb5\xd7\x5e\xa3\xa1\xa1\xc1\xbf\x5f\xc3\x30\xa8\ \xa9\xa9\x89\x59\x96\xa5\x1f\xab\x97\x25\x6d\xdb\x46\x55\x55\x1e\ \x7e\xf8\x61\xa6\x4e\x9d\xca\x23\x8f\x3c\xc2\xce\x9d\x3b\x09\x85\ \x42\x24\x93\x49\xa2\xd1\x28\x83\x83\x83\x04\x02\x01\x62\xb1\x18\ \x23\x23\x23\x64\x32\x19\xd2\xe9\x34\x6d\x6d\x6d\x57\xbf\xdd\x2e\ \x7e\xf6\xd9\x67\xa9\xad\xad\x25\x97\xcb\xf9\x34\x45\xa9\x54\xa4\ \x2e\xb9\x08\x07\x0b\x91\xa9\xa1\xcf\x19\x22\x34\xbd\x8c\x99\x0d\ \xd0\xc8\x3c\x26\xaf\xa8\xe4\xb5\xa5\x25\x40\x61\x95\x10\xac\x1a\ \x8b\x69\x4a\x1e\x20\xe3\x25\x44\x00\x03\xfd\x79\xfe\xf3\x6f\x3e\ \xce\xc7\x7f\x7d\x36\x5f\x3e\xe7\x69\x6a\xec\x79\xa8\x35\x29\xbe\ \xb5\xe9\xab\x18\x86\x09\xa2\xc2\x59\x79\x2a\x54\xd3\x34\x31\x38\ \x38\xd8\x39\x38\x38\xb8\x4d\x08\xe1\x06\x02\x81\xb5\x6f\xdd\xa0\ \xab\x57\xaf\xc6\xb6\x6d\x42\xa1\xd0\x04\x35\x74\xf0\xe0\xc1\x09\ \x3f\x1f\x38\x70\xc0\xb7\x21\x85\x42\xe1\x0f\x3e\x7f\x54\x80\x28\ \x8a\x32\xc7\xb2\x2c\x54\x55\xa5\x54\x2a\x51\x2c\x16\x99\x3b\x77\ \x2e\x6f\xbe\xf9\x26\x4b\x96\x2c\x61\x78\x78\x98\xda\xda\x5a\xb2\ \xd9\x2c\xe5\x72\x99\x48\x24\xc2\x39\xe7\x9c\xc3\x33\xcf\x3c\xf3\ \x47\x2f\xae\x69\x1a\x5f\xfa\xd2\x97\x7c\x43\xe8\xc5\x0b\x05\xa5\ \x4c\xa9\x54\x42\xa4\x05\x42\x08\x76\xe8\xfb\x78\xef\x19\x35\xd8\ \xd6\x78\xcf\x4a\xe2\x18\x0a\x99\x17\xea\x30\x87\x03\x80\xfc\x03\ \xb0\x7d\x9a\x45\x07\xc7\x86\x80\xae\xa3\x29\x01\x10\x90\xc8\x0f\ \xf2\x46\xff\x03\x48\x57\x8e\xa9\xc0\x8a\x94\x37\x34\x34\xf8\x36\ \x40\x51\x94\x5f\x67\x32\x99\xd5\x6f\x17\x8e\x79\xae\xbc\xb7\xeb\ \x0f\x33\xed\xed\x7f\xff\xb1\x02\x32\xbd\xb6\xb6\xf6\x46\xc3\x30\ \xa4\xa6\x69\xe2\xee\xbb\xef\xa6\xb1\xb1\x91\xbd\x7b\xf7\xe2\xba\ \x2e\x83\x83\x83\x18\x86\x41\x38\x1c\xa6\x50\x28\x20\xa5\x64\x74\ \x74\x94\x5d\xbb\x76\xfd\x49\xee\xa9\x58\x2c\xe6\xa5\x94\xde\xb5\ \x83\xe1\x70\x58\x77\x1c\x07\xdd\x52\x71\xdc\x43\x2a\x47\x09\x09\ \x2c\xc7\x66\x45\xf4\x16\x16\xcf\x5c\xc0\x96\xe4\xe3\xe4\x92\x1a\ \xbb\xdd\xe7\x70\xb4\x18\x96\x09\x12\x39\xc1\xa6\xb8\xae\x2b\x7d\ \x03\x1a\x12\xc4\x27\x85\x28\x18\x65\x02\x21\x95\x9a\xaa\x5a\x4c\ \xa5\x88\x16\xd2\x40\xa9\x00\x22\x91\xbe\xfa\x6d\x6e\x6e\x66\x68\ \x68\x88\xb7\x2b\x4d\x02\x08\x04\x02\xed\x1d\x1d\x1d\x8d\xf3\xe7\ \xcf\x1f\x9a\x32\x65\x0a\x37\xdc\x70\x03\x8f\x3d\xf6\x98\x6f\x7b\ \xbc\x80\xd7\xdb\x60\x1e\xc3\xa1\xeb\xba\xcf\x8a\x1f\x2b\x20\x11\ \x21\x04\xb9\x5c\x4e\xd4\xd7\xd7\x33\x3c\x3c\xcc\xe0\xc0\x10\x20\ \x10\x02\x1f\xf1\x72\xb9\xec\x07\x54\xde\x36\x8e\xc5\x62\xa2\x54\ \x2a\xbd\x6d\xf4\x2c\x84\xf0\x2b\xe9\x66\xce\x9c\xf9\xa0\xaa\xaa\ \x1f\xbe\xfc\xf2\xcb\xfd\x00\xec\x90\x2b\x29\x49\x0d\x0a\xfe\xee\ \xe6\x9b\xb9\xe9\x67\x4b\xf9\x97\xb3\x1f\xa3\x18\x2f\x30\xd3\x6c\ \xe6\x27\xbf\x79\x02\xc3\x90\x9e\x0d\x08\x5d\x74\xd1\x45\x23\x80\ \x14\x8e\xa8\xb3\x2c\x89\xa2\xc0\x22\x3b\xc2\xf0\xc3\x0a\xd7\x3f\ \x74\x2d\x52\x09\x71\xfd\x7f\x5d\x83\x65\x5b\x04\xb5\x08\xdb\x5b\ \x7b\xa9\x8a\xc4\x7d\x4a\xdd\x23\x3f\xff\x18\x18\xe3\xf2\x22\x32\ \x16\x8b\xf1\xe2\x8b\x2f\xb2\x71\xe3\x46\x5a\x5a\x5a\xd8\xba\x75\ \x2b\xe1\x70\x98\xf5\xeb\xd7\xfb\x36\x31\x12\x89\xd0\xd2\xd2\xc2\ \xae\x5d\xbb\x18\x1d\x1d\xf5\x93\x74\xc7\xac\xb2\xa4\x94\xe8\xba\ \xce\xbe\x7d\xfb\x90\xae\xa4\x66\xb1\x4e\x24\xac\x92\xeb\xb7\x29\ \x0e\x39\x48\xf7\x6d\xd5\x9c\x28\x97\xcb\x9d\x8a\xa2\x7c\xf3\xed\ \x9c\x84\xb7\xb0\x00\xfa\x07\x3e\xf0\x01\xe6\xcc\x99\xc3\x07\x3f\ \xf8\x41\x6e\xbd\xf5\x56\x3f\xcf\x20\x10\x54\x05\xe3\xd8\xb2\x44\ \xbc\xaa\x8a\xe6\xda\xa9\x3c\xbf\xe3\xd7\x3c\xd1\x77\x1f\xb6\xd5\ \x88\x69\xb9\x50\xd9\xe1\xa2\xa6\xa6\x66\x92\x40\xd0\x35\x6d\x0f\ \xa7\x5d\x14\xc6\x18\xac\xd4\x55\xd9\x83\x01\x9c\xac\x06\x96\x8e\ \x5b\x52\x50\x75\x0d\x4d\x53\x29\xe5\x4d\x6c\x23\xe5\x25\xdd\x64\ \x34\x1a\x15\x23\x23\x23\x84\x42\xa1\x77\xe4\xf8\x1c\xc7\xe1\x95\ \x57\x5e\x21\x1e\x8f\xe3\xba\x2e\xfd\xfd\xfd\x7e\xa2\xca\x4b\xc8\ \x79\xec\x6f\x5d\x5d\x1d\x03\x03\x03\x68\x9a\xe6\x05\x91\xb1\xe3\ \x02\xc8\xec\xd9\xb3\x2b\x14\x40\xb2\x22\x9a\x51\x29\x89\xd4\xcb\ \x09\xa5\x3b\x9e\x97\x35\xb6\xe3\x7a\x06\x06\x06\xfe\xeb\x70\xe9\ \x8d\xb9\x73\xe7\xfa\x51\xed\x21\x75\x27\xb0\x5d\x13\x45\x68\x80\ \xa0\x64\x15\xd1\x54\x8d\xa0\x16\xc5\x71\x5c\x4c\xd3\xf2\x83\x39\ \xcb\xb2\x28\x38\x65\x6a\xa7\x29\x48\x5b\x25\x5a\x1f\x46\x99\x62\ \x61\xcc\x4f\xf8\x9b\x60\xe0\xa1\x49\x48\x5b\xf1\x3d\x41\x8f\x5b\ \x53\x55\x55\x74\x75\x75\x3d\xe0\xed\x11\x5d\xd7\x7f\xfd\xa7\xee\ \xd7\x75\x5d\x3e\xf9\xc9\x4f\xfa\xdf\x33\x7e\xed\xdb\x77\x28\x7f\ \xd6\xdf\xdf\xef\x7b\xa1\xf1\x78\x1c\xc7\x71\xa8\xaa\xaa\xfa\x72\ \x3a\x9d\x7e\xe1\x98\x00\x59\xb1\x62\x05\x97\x5d\x76\x19\x67\x9f\ \x7d\x36\xdf\xfb\xde\xf7\x68\x6d\x6d\xe5\xe4\x93\x4f\xe6\xf5\xd7\ \x5f\x67\xee\xdc\xb9\x64\x32\x19\x5a\x5b\x5b\x09\x87\xc3\xcc\x9c\ \x39\x93\x37\xde\x78\xe3\xb0\x29\xf2\x40\x20\xc0\x0b\x2f\xbc\xc0\ \xde\xbd\x7b\xe9\xed\xed\xf5\x19\x54\x21\x04\x85\xd6\x1c\x43\x46\ \x23\xff\xeb\xa5\x5b\x18\xcc\xea\x7c\xea\xb1\x4f\x60\x18\x36\x79\ \x27\x8e\x5d\x14\x44\x22\x87\xa4\xae\xa2\x1e\x25\xca\xeb\x93\x39\ \xf8\x86\xe0\xc1\x07\x7e\xc4\xfe\x9e\x2e\x7e\xbb\xf7\xa7\xfc\xed\ \xaa\x8f\x72\xf7\xba\x5b\x31\x4d\x0b\x69\x1f\x02\x42\xd7\x75\x9f\ \x4a\x1f\x19\x19\xf9\xc8\xe1\xde\x73\x3e\x9f\x27\x12\x89\x1c\x02\ \xc3\x01\xcb\x74\xc7\xee\x05\x84\x2a\x50\xd4\x31\x6d\x30\xf6\x91\ \xd1\xd1\x51\x5f\x3d\x1e\x8b\x84\xb8\xde\x2e\x88\xc7\xe3\x84\xc3\ \x61\x9f\x74\x0b\x04\x02\x2c\x5d\xba\x94\xee\xee\x6e\xaa\xab\xab\ \x7d\xa3\xa5\xeb\xfa\x3b\x5e\xf4\x2d\x2a\x2b\xa0\x28\x0a\x07\x0f\ \x1e\xf4\x8a\x06\x64\xb9\x5c\x16\x00\xe5\x62\x91\x69\x2b\x66\x92\ \xcb\xe5\x88\x69\x75\xa4\x67\x1c\xa0\x69\x46\x80\xaa\xb4\x8e\x93\ \x1d\xfb\x95\xd6\x70\x73\x1a\x62\xec\x49\xc2\xe1\x30\xe9\x54\x9a\ \xf5\x3d\xcf\xb2\xe9\xcd\x2e\x2e\x3e\xf9\x06\x1a\x63\xd3\x11\x28\ \x95\x58\xc7\xaa\x48\xd4\xbc\x79\xf3\xfc\x6c\xe6\xe1\x12\x95\x00\ \x35\x35\x35\x23\x1d\x1d\x1d\x4d\xa7\x9c\x72\xca\x40\x2a\x95\x42\ \x48\x70\x67\x0b\x96\x5f\x59\x43\x7e\xc0\xa1\x38\x6c\x93\x1b\x70\ \x28\x0e\xd9\x18\x19\x17\xcf\x24\x79\xef\xf0\x4f\xd9\xa8\x77\x04\ \x24\x1a\x8d\x2e\x07\xd8\xb6\x6d\x1b\x89\x44\x82\xe1\xe1\x61\x8a\ \xc5\x4a\xe9\xce\xee\xdd\xbb\xfd\xc0\xd0\x03\xcd\x75\x5d\x5e\x7e\ \xf9\xe5\x23\x4a\x26\x25\x93\xc9\x2f\x0e\x0d\x0d\x7d\x77\xcc\x8d\ \x9c\xbe\x60\xc1\x82\x87\x0f\x79\x23\x95\x0a\x96\x72\xb9\x4c\xca\ \xcd\x31\x75\xae\x89\xa8\xb2\x69\x9c\xd6\x44\xd9\xcd\x51\x72\x12\ \x28\x0a\xd8\x79\x95\xe1\x9f\x4e\xf6\x1f\x5c\x4a\x89\x57\xb2\x9e\ \x29\x8d\x92\x35\x12\x08\x45\x4c\x00\x24\x93\xc9\x70\xf5\xd5\x57\ \xf3\xf4\xd3\x4f\xfb\x31\xc8\xe1\xac\x4c\x26\x83\xae\xeb\x52\xd3\ \x34\x9a\x9a\x9a\x2a\x36\xa2\x7f\x80\x8e\x07\x15\x2c\xc7\x45\x28\ \x3a\xae\xab\xa2\x11\x40\x09\xbb\x7e\x4e\xc4\x53\xe5\xc7\x04\x88\ \xae\xeb\x7f\xe3\x65\xf8\xfa\xfa\xfa\xfc\xa4\xcc\xf8\xdf\x8f\x75\ \x15\x0a\x85\xbd\xc0\xde\xb1\x1f\xe7\x7b\x8c\x80\x10\x02\xa5\x50\ \x79\x89\xa6\x61\x62\x2b\x0e\xaa\xaa\xd0\xa2\xae\xe2\xef\x56\xde\ \x4a\x4d\xa0\x9e\x0f\x7c\xef\x7c\x6e\xbb\xea\x56\x7e\xb1\xfe\xfb\ \x13\xe8\x73\xdb\xb1\x59\x30\xe9\x34\x92\x53\x54\x06\x72\xdd\x04\ \xd5\xd3\x51\x50\x30\xcd\x32\xae\x55\x89\x83\x32\x99\x0c\x4f\x3f\ \xfd\xb4\xef\x96\x1e\xe9\x52\x14\x85\x07\x1e\x78\x80\xe1\xe1\x61\ \x84\x10\x3c\xfe\xf8\xe3\xc4\xe3\x71\x3a\x3b\x3b\x69\x6e\x6e\x66\ \xcb\x96\x2d\xcc\x9a\x35\x0b\xc7\x71\xd8\xb7\x6f\x1f\xcd\xcd\xcd\ \x74\x74\x74\x1c\x1b\x97\x25\xa5\x54\x63\xb1\x18\x7b\xf6\xec\x41\ \x08\x41\xf4\x7c\x9d\x15\x17\xd5\x20\x01\x23\x27\x49\xee\x35\x18\ \x6d\xb7\xc8\x74\x98\x98\x85\x43\xf9\x90\x9a\x9a\x9a\x11\xe0\x7d\ \x47\x5b\xa6\xfa\xd3\x9f\xfe\x94\x42\xa1\xc0\xe7\x3f\xff\x79\xbf\ \x30\xc1\x52\x4d\x84\x90\x9c\x3c\xe5\x6c\x7e\xd7\xfe\x00\xa9\xce\ \x06\xae\x58\xf8\xb7\xcc\xa8\x59\x84\xed\x54\xaa\x60\x3c\x09\xe9\ \xee\xee\xe6\x6b\xff\xfb\xbb\x95\xc4\x56\x29\xc5\xc6\x9f\xec\xe2\ \xc0\x20\x64\x53\x79\x8f\x02\x92\x8a\xa2\x08\xaf\x8e\xea\x9d\x76\ \xed\xdb\xd9\x55\x8f\x5d\x9e\x3f\x7f\x3e\x5d\x5d\x5d\x8c\x8c\x8c\ \x78\xcf\xce\xc9\x27\x9f\xcc\xe6\xcd\x9b\x19\x19\x19\x61\xd1\xa2\ \x45\xa4\x52\x29\x46\x47\x47\xd1\x34\xed\xd8\x24\xc4\x8b\xaa\x3d\ \xef\xc9\xd9\xa9\xf1\x66\x47\x96\x7c\xbf\x83\x55\x94\x28\x9e\xf1\ \x52\x55\x54\x55\xfa\xb9\x91\x40\x20\xe0\x0e\x0c\x0c\x1c\x55\xd3\ \xca\xbc\x79\xf3\x68\x6e\x6e\x66\x74\x74\x94\xe6\xe6\xe6\x4a\x85\ \xbd\x65\xe2\xe0\x00\x02\x4d\x09\x60\x4b\x0b\xdb\xb1\x18\x48\x0f\ \xd3\x95\x0e\xa3\x09\xdd\x8f\x5f\x34\x4d\x03\xcd\xa1\xa4\xa6\x70\ \xb2\x1a\x8a\xd4\xc9\xe6\xb2\xc4\xf4\x38\xb9\x5c\x07\x8a\xa2\xa0\ \xeb\xba\x28\x14\x0a\x3b\x37\x6d\xda\xf4\x4f\x42\x08\x55\x51\x94\ \x23\x2e\x91\x54\x55\x95\xaf\x7c\xe5\x2b\xcc\x9f\x3f\x9f\xcd\x9b\ \x37\xa3\xeb\x3a\x1d\x1d\x1d\xb8\xae\xcb\xab\xaf\xbe\x8a\xa6\x69\ \x24\x93\x49\xda\xdb\xdb\xc7\x9b\x00\xa4\x94\x35\xc7\x22\x21\x48\ \x29\xf9\xd1\x8f\x7e\xc4\xac\x59\xb3\xb8\xf7\xde\x7b\x2b\x65\x93\ \x73\x4a\x7e\x92\xaa\x58\x2c\x22\xa5\x64\xd2\xa4\x49\x74\x75\x75\ \x91\xc9\x64\x8e\xb8\x3a\x64\x42\x85\x79\x5b\x1b\x2f\xbd\xf4\x12\ \x2d\x2d\x2d\x1c\x38\x70\x80\x78\x3c\x5e\x49\xc3\x62\xa3\x6b\x21\ \x52\xc6\x20\xd3\xa7\xcc\xa3\x7e\x5a\x1d\x9b\x7a\xba\xa9\x8d\x4c\ \x1e\x8b\xba\x0f\xb9\xc0\x7a\x5c\x52\xf7\xfe\x01\x46\x9e\xae\xc3\ \xe8\xad\xd0\x2b\x8e\xe3\xf8\xe5\x3b\x63\xbf\x27\x8b\xc5\xe2\xf3\ \x47\x73\x8f\x63\x84\xab\xab\xeb\xba\xb2\x73\xe7\xce\x4a\x0b\x85\ \x00\x55\x55\x90\x12\x62\x91\x18\x96\x6b\x55\x1c\x2c\x81\x1f\xab\ \x8d\xd5\x78\x2d\x38\x26\x09\x99\x37\x6f\x1e\xb3\x67\xcf\xe6\x84\ \x13\x4e\x60\xd9\xb2\x65\x6c\xdd\xba\x95\x65\xcb\x96\xf1\xe4\x93\ \x4f\x72\xf1\xc5\x17\xb3\x7b\xf7\x6e\x36\x6c\xd8\xc0\x99\x67\x9e\ \x49\x73\x73\x33\xcf\x3e\xfb\xec\x9f\xa4\xc7\xdf\x69\x45\x22\x11\ \xbe\xf5\xad\x6f\x21\x84\x60\x68\x68\xa8\x52\x01\x68\x98\xd8\xaa\ \xcb\x86\xff\x1e\x64\x93\xf9\x55\xe6\x35\x2e\xc1\x95\x2e\x3b\xfa\ \x36\xd1\xfa\x68\x1b\x1d\x23\xbd\x14\x86\x0e\xbd\x2c\x4d\x53\x59\ \xf7\xb5\x61\x8c\xd1\x51\x9c\x92\x64\xc6\x8c\x19\xe8\xba\xce\xd1\ \xaa\xa8\xb7\xf1\x0c\x87\x76\xee\xdc\x79\xf1\xac\x59\xb3\x5e\x28\ \x95\x4a\xb8\x2a\x4c\xbd\x21\xca\xc9\xcb\x63\xd8\x8e\x43\x53\x78\ \x1e\xc3\x46\x3b\x8e\xe1\x72\xf0\xd5\x12\xfb\x9e\xc8\xa3\xa8\x15\ \xa7\x27\xe2\xf9\xea\x47\x0b\x48\x67\x67\x27\xbf\xfc\xe5\x2f\x39\ \xe5\x94\x53\x78\xe5\x95\x57\xc8\xe5\x72\xf4\xf4\xf4\x60\x18\x06\ \x4f\x3e\xf9\xa4\x5f\x99\xf1\x9b\xdf\xfc\x86\x40\x20\xe0\xa7\x3e\ \x8f\x72\x8d\x0e\x0d\x0d\x7d\x43\xd7\x75\x6b\xec\xc1\x3f\x98\x4a\ \xa5\x66\xe4\xf3\x79\x2c\x53\x32\x2b\x3c\x83\x19\x33\xa6\x57\xa4\ \x54\x1a\x2c\xbb\x7e\x16\x55\x91\x32\x0d\xc3\x27\x63\x0d\x06\x71\ \x46\x2b\x69\x27\xa1\x48\x50\x24\x4c\x83\x5c\x2e\xc7\xc8\xc8\x08\ \xd1\x68\x94\x78\x3c\xce\x69\xa7\x9d\xc6\xcb\x2f\xbf\x7c\x5c\x1c\ \x12\x3f\xcd\x2b\xa1\xd4\x6a\xb3\x63\x7f\x8e\x7c\xaf\x83\x6d\x6c\ \xc4\x2e\x4a\xec\x72\xa5\x3f\x51\x0f\x68\xbe\x23\x70\xac\xd4\x49\ \x34\x1a\x8d\xf2\xf4\xd3\x4f\xf3\xc4\xe3\x4f\x1c\xf2\x46\x84\xc7\ \x49\x29\x7e\x4f\x8b\x50\x2a\x89\xac\xea\xea\x6a\x69\xdb\xf6\xd1\ \xea\xac\x91\xde\xde\xde\xff\xed\xfd\x50\x5f\x5f\xbf\x5c\x51\x94\ \x19\xaa\xa2\x80\x03\xae\xe3\x92\xcf\xe7\x11\xc0\x66\xab\x8d\x4b\ \x5a\xa2\xb8\x4a\x8e\xe0\xd4\x22\x8a\x2c\xa1\x6a\x0a\x76\x5a\xa7\ \xbc\x2f\x46\x7e\x5b\xd4\x67\x01\xbc\xea\xc1\x7c\x3e\x5f\xc9\xe5\ \x8b\xe3\xd3\x31\x67\x59\x16\xb7\xdc\x72\x0b\x00\x2f\xae\x7d\x11\ \x51\x56\xd0\xb4\x02\x42\x17\x18\xba\x81\xac\x96\x7e\x6c\x94\x48\ \x24\x0e\x2b\x6b\xa8\xbd\x83\x41\xaf\xf7\x92\xf9\xae\x0a\x93\xe6\ \x05\xd0\x75\x81\xb4\x75\xe6\x4e\x5e\x48\x47\x6a\x07\x28\x50\x4e\ \x39\xa4\xbb\x7c\x1d\x2e\x6c\xdb\xee\xe0\xf8\x2c\x25\x10\x08\x30\ \x7d\xe1\xc2\x4a\x46\xcf\x1a\xa3\xd6\xbd\x88\x58\x11\xac\xac\xbe\ \x85\xf7\x9d\x7e\x2d\x3b\x86\x5f\xe6\x85\x2d\x2f\xa1\x35\x0f\xd3\ \xd6\x37\xe0\x13\x85\x5e\xc2\xca\x8b\x05\xd6\xaf\x5f\xef\xf1\x55\ \xc7\xbc\xce\x3e\xfb\x6c\x2e\xb8\xe0\x02\xe6\xcc\x99\x43\xa1\x50\ \xa0\xb7\xb7\x97\x8b\x2f\xbe\x98\xc7\x1f\x7f\x9c\xf3\xce\x3b\x8f\ \x62\xb1\xc8\xab\xaf\xbe\xca\xfc\xf9\xf3\x89\xc5\x62\x3c\xf5\xd4\ \x53\x7e\x09\xee\x51\x01\xa2\x28\x8a\xa8\xaf\xaf\xa7\x90\x2f\x60\ \x45\x24\x4b\x3f\x52\x47\x75\x8d\x86\x74\x25\xc9\xb6\x7e\xea\xf6\ \x55\x31\xbc\xdd\xc0\x1a\x75\x88\xc5\x82\xbe\x27\x31\x34\x34\xf4\ \xe6\xf1\x78\x60\xd7\x75\xb9\xfd\xf6\xdb\xa9\xae\xae\xe6\x8a\x2b\ \xae\xe0\xa2\x8b\x2e\xaa\xe4\x20\x24\x10\x82\x4c\xba\xc4\x65\x67\ \x5c\xcf\x2d\xbf\x3c\x93\x9f\xff\xcd\x2e\x4e\x08\x2d\x25\xe1\xec\ \x67\xf7\xfa\x3b\x30\x0c\xcd\x0f\x5a\xcb\xe5\x32\xd1\x68\x94\x60\ \x30\x78\x58\xae\xe7\xe1\xae\x6d\xdb\xb6\x31\x75\xea\x54\x06\x06\ \x06\x50\x55\x95\xda\xda\x5a\x76\xec\xd8\x81\x10\x82\x8e\x8e\x0e\ \xbf\x16\x78\xe7\xce\x9d\xac\x5c\xb9\xf2\xd8\xe9\x77\x8f\x7b\x29\ \x95\x4b\xe8\x8e\xce\x9b\x77\xa7\x91\x16\x58\xc5\x43\x39\x74\xa1\ \x4c\xd4\x8d\x47\x42\x9b\x1c\xce\x32\x4d\x93\xfa\xfa\x7a\xbf\xe2\ \xdc\xb2\xac\x4a\x27\x6f\x08\x0c\xc3\x25\x14\x0c\xe0\x52\xa9\x3f\ \xeb\x1e\x3a\xc8\xc6\xfc\x63\x28\xa8\x13\x92\x47\x1e\xf7\xd4\xd6\ \xd6\x36\xb7\x58\x2c\x8e\x00\xb2\xa1\xa1\xc1\x38\x1e\x36\xe4\xea\ \xab\xaf\x46\xd3\xb4\x3f\x48\x56\xb5\xb7\xb7\xfb\xc4\xa2\x94\x92\ \x5f\xfc\xe2\x17\x95\xf7\x75\xac\xf4\xfb\x25\x97\x5c\xc2\x87\x3e\ \xf4\x21\x5c\xd7\xe5\xc9\x27\x9f\xa4\xab\xab\x8b\x68\x34\xca\xc1\ \x83\x07\x89\xc5\x62\x54\x55\x55\x71\xe0\xc0\x01\x72\xb9\x1c\x8d\ \x8d\x8d\xf4\xf4\xf4\x1c\xb7\x1d\x28\x84\xe0\x87\x3f\xfc\x21\xcb\ \x96\x2d\xe3\x3f\xfe\xe3\x3f\x0e\x05\x7f\x08\xa4\x0b\xf1\x78\x88\ \x64\x26\x4d\x4d\xa0\xbe\xe2\x56\x4a\x9b\x80\x88\x20\x5d\x89\x65\ \xd9\x7e\xad\x98\x57\xd6\xa9\xeb\x7a\xce\x75\xdd\x0c\x70\x44\xfc\ \xd5\x1f\x91\x5e\x73\x7c\xbe\xc7\x09\x40\x75\x5c\xc5\x71\x5d\x26\ \x87\x67\x50\x72\xd3\x14\xac\x2c\x42\x48\x8c\xac\x8b\x5b\x92\x7e\ \xf6\xf0\xa8\x01\x19\x6b\xc0\xa4\xb5\xb5\x95\x1b\x6e\xb8\x81\x6d\ \xdb\xb6\x51\x2a\x95\xa8\xab\xab\x63\xd9\xb2\x65\x6c\xdc\xb8\x91\ \x60\x30\x48\x38\x1c\x26\x93\xc9\x1c\xf7\xb6\x66\x29\xa5\x5b\x55\ \x55\x25\x77\xec\xd8\x51\x29\x59\xf0\x4a\x50\x25\x48\x21\x89\x45\ \xc2\x3c\xbe\xfb\x7e\xbe\x75\xe5\x6f\xf8\xcd\xfe\x87\x78\xa9\xe3\ \x65\xce\x3a\xe9\x74\x5e\x73\x37\x62\x18\xa6\xcf\xe8\x7a\x54\x8c\ \x6d\xdb\xb3\xea\xeb\xeb\x03\xa3\xa3\xa3\x3d\xc7\x7a\x6f\xb6\x6d\ \xb7\x09\x21\x2a\xc5\x82\x08\x46\x96\x48\xfe\xee\xf6\x66\x24\x2e\ \x51\x33\x42\x50\x0f\x72\x70\xb8\x80\x55\x90\xbc\x7e\x57\x0a\xe9\ \x54\x34\xce\x31\xb9\xbd\x42\x08\xbe\xf9\xcd\x6f\x72\xfb\xed\xb7\ \xf3\xc9\x4f\x7e\x92\xb6\xb6\x36\x5c\xd7\x9d\xd0\x5f\x38\xd6\x9f\ \x8d\x94\x92\x9e\x9e\x9e\xe3\x0a\x48\x2a\x95\xba\xe8\xf9\xe7\x9f\ \xa7\xa5\xa5\xa5\x7d\xce\x9c\x39\xb3\xb3\xd9\x6c\xa5\x6e\x58\x28\ \x14\x6a\x24\x25\x33\xca\x7e\xf9\x1c\xdf\x79\x56\x67\xd5\xe9\xa7\ \x90\x50\x76\xf0\xcc\xbe\x5d\x0c\xb5\xe5\x48\xa5\x2a\x01\x6b\x28\ \x14\xa2\xa5\xa5\x85\x52\xa9\xc4\xb5\xd7\x5e\xfb\x7a\x5b\x5b\xdb\ \x86\x75\xeb\xd6\xad\x3c\x1e\x0e\x87\xef\xfa\x0a\x85\xba\x83\x92\ \x7d\x4f\x15\x18\xda\x6e\x90\xef\xdb\x38\x41\x35\xa9\x42\x03\x8d\ \xb7\xcd\x9f\x1c\xb1\x0d\x89\xc7\xe3\xdc\x77\xdf\x7d\x7e\xc2\xc8\ \x2b\x34\x00\xd0\x35\x1d\x5d\x3b\xe4\x0a\x7b\xe5\xa3\xfb\xf7\xef\ \x9f\x71\x3c\xed\x88\x57\x2d\xef\xbd\x00\x81\x40\x35\x5c\xb4\x30\ \xe4\x7b\xe1\xf5\xce\x9f\xf3\xe4\x4f\x7e\x4c\x79\x44\x62\x95\x5c\ \xca\x69\xd7\x8f\x85\x54\x55\x25\x9d\x4e\x13\x0a\x85\x18\x19\x19\ \x39\xa2\x5e\x8d\xc3\x21\x18\x2f\xbc\xf0\x42\x6e\xbc\xf1\x46\xbe\ \xf5\xad\x6f\xa1\xf6\xa9\x10\xcc\xd1\x38\x1b\xbf\x7f\xbf\x5c\x2e\ \x53\x55\x55\x45\x2a\x95\xc2\xeb\x8b\x3f\x6a\x40\x62\xb1\x98\xdc\ \xb4\x69\x53\xa5\x92\x23\x06\x0b\xcf\x8f\xa1\x07\x04\x4a\xa9\x9e\ \x0b\x16\x5f\xca\xef\x3a\x1f\x41\x0b\xa8\x8c\xee\x33\x19\xd8\x5c\ \xf6\x12\x4e\x52\xd7\xf5\x29\xc7\x13\x10\xd7\x75\x1d\x2f\x69\xa5\ \xaa\x2a\x8b\x17\x2f\xa6\xb3\xbd\x83\xd7\xfe\xa9\x5c\xd9\x1b\x0a\ \xa0\x54\x28\x12\xe1\xba\x84\x42\xd2\xa7\x2a\xbc\x11\x18\x63\x3d\ \x7f\xc7\xb5\x91\xb4\x58\x2c\xf2\xe9\x4f\x7f\x9a\x54\x2a\xc5\x27\ \x3f\xf9\x49\x1e\x7a\xe8\x21\x4e\x5f\x79\x3a\xdd\xdd\xdd\xcc\x9b\ \x37\x8f\xdf\xfe\xf6\xb7\xac\x5c\xb9\x12\x5d\xd7\xc9\x66\xb3\xec\ \xd8\xb1\xc3\xaf\x9a\x3f\x2a\x40\x42\x63\x4f\x66\xdb\x36\xb2\xda\ \x65\xc6\x39\x35\x68\x08\xac\xb2\xc1\xeb\x23\x3f\x43\xb5\xc3\x24\ \x5a\x0d\x92\xfb\x2b\xc1\xcf\x98\xdb\x2b\x86\x87\x87\x8f\xc9\xaa\ \xc7\xe3\xf1\x96\xb9\x73\xe7\x1e\x08\x04\x02\x15\x4f\x4f\x51\x71\ \x84\x4d\xa9\x54\xe2\xdb\xdf\xfe\x36\x4d\x4d\x4d\x24\x12\x09\x7e\ \xf7\xbb\xdf\xf9\x05\x04\x00\x23\x23\x23\x4c\x9d\x3a\x95\x64\x32\ \xc9\xc8\xc8\x08\xaa\xaa\x92\x4c\x26\x09\x85\x42\x94\xcb\x65\x02\ \x81\xc0\x71\x05\x24\x14\x0a\xb1\x63\xc7\x0e\x66\xcf\x9e\xcd\x0b\ \x2f\xbc\xe0\xf7\xd0\x8c\x8e\x8e\xfa\x95\x90\x83\x83\x83\xc4\xe3\ \x71\xbf\x78\xf0\x9d\x58\x8c\x77\xb4\x21\x9e\x1b\x5b\x9d\x83\x0d\ \x77\x64\xdf\x32\xaa\xa8\xa2\x46\x82\x11\x7d\x82\x18\x1f\x87\x9d\ \x17\x98\x3d\x7b\x36\xb6\x6d\xa3\x0a\x95\x56\x75\x3f\x67\xdd\x10\ \x64\xfd\x7f\x38\xbe\x2b\x3c\x6f\xde\x3c\x1e\x7b\xec\x31\x9a\x9b\ \x9b\xa9\xad\xad\x65\xde\xbc\x79\xdc\x73\xcf\x3d\x68\x9a\xc6\xc2\ \x85\x0b\xd1\x75\x9d\x5f\xff\xfa\xd7\x7e\x56\xd0\xab\x5e\x3f\x9e\ \x80\x84\xc3\x61\xbe\xfa\xd5\xaf\x4e\x50\x43\xad\xad\xad\x00\xec\ \xdf\xbf\xdf\xa7\xe8\xc7\xab\xde\x63\x02\x44\x4a\xc9\x3f\xfe\xe3\ \x3f\x32\x77\xee\x5c\x6a\x6b\x6b\x79\xe2\x89\x27\x38\x78\xf0\x20\ \x9a\xa6\xf9\x85\xd4\x73\xe7\xce\xa5\xbd\xbd\x9d\x44\x22\x41\x73\ \x73\x33\x07\x0e\x1c\x38\x2e\xee\xae\xd7\x68\xa3\x09\x95\x4c\x3c\ \x03\x72\x32\x91\x48\x84\xaf\x7f\xfd\xeb\x9c\x7a\xea\xa9\x7e\xed\ \x97\xc7\x24\xe8\xba\x4e\xb1\x58\x64\xd7\xae\x5d\x7e\x4f\xbc\xe7\ \xf7\x8f\xa7\x2c\x8e\x17\x20\xf1\x78\xfc\x1b\x5e\x40\x08\x20\x15\ \x89\xa6\x09\x5c\x17\xa2\xa1\x28\x05\x23\x57\x69\x10\x12\xe0\xda\ \x87\x18\xdf\x77\xba\xbe\xf6\x4e\x5c\xcd\xfc\xf9\xf3\xc9\xe5\x72\ \x5c\x7a\xe9\xa5\xfc\xfe\xf7\xbf\x67\xce\x9c\x39\xd4\xd7\xd7\x33\ \x73\xe6\x4c\x1e\x7a\xe8\x21\x74\x5d\x67\xd2\xa4\x49\x78\xcd\xa0\ \xc7\xc3\xcb\x1a\x3f\xa1\x47\x52\x29\x42\x28\x17\x25\xf9\xb4\x41\ \x44\x53\x59\xbb\xb6\x52\xdd\xa9\xab\x41\x14\xad\x52\x23\xe6\x35\ \x00\x79\x76\xc2\x8b\xc8\xbd\xde\x72\x2f\x4d\x6b\x59\xd6\xa4\x50\ \x28\x74\x9d\x10\x22\x00\x88\xba\xba\xba\x57\xfb\xfa\xfa\xba\x8e\ \xc2\xae\x4d\xaf\xaf\xaf\xaf\xd8\x04\x45\xa0\x9d\xaf\x73\xe9\xb5\ \x93\x28\x96\x0d\x2e\x3b\xf1\x66\xb6\x8c\x3e\x45\x62\x28\x49\xae\ \xdf\x61\xc3\x37\x93\x3e\xcb\x1c\x8d\x46\x87\x8f\x1a\x90\x60\x30\ \xc8\xbd\xf7\xde\xcb\xe7\x3e\xf7\x39\x3e\xf6\xb1\x8f\xd1\xdf\xdf\ \xef\x8b\xbd\x37\xdb\x24\x95\x4a\x61\x59\x16\xa5\x52\xc9\xcf\x85\ \xc8\xb1\xc8\xf0\xad\x0d\x34\x47\x0a\x88\x61\x18\x38\x28\xa8\xaa\ \x42\x6f\xa7\xc1\xdd\xf7\x7e\x95\x6f\x3c\xfb\x2f\x7c\xe1\xfc\x2f\ \x13\x8f\xc4\xf9\x9f\xad\x5f\xa4\xfd\x37\x39\x8c\x11\xc5\xaf\xec\ \x38\xe1\x84\x13\x68\x6c\x6c\x64\xfb\xf6\xed\xd4\x35\x55\x71\xc2\ \xcc\x46\x96\x4f\x5a\x86\xea\xea\x15\x07\x40\x30\x47\x22\x1f\xf3\ \xd2\xd0\x3f\xfc\xe1\x0f\xff\x06\xe8\x3a\x8a\x7b\x94\xe3\x55\xb4\ \x18\x81\xe1\x5d\x65\x12\x7b\x2d\xbe\xfa\xdd\x7b\x49\xee\xb3\x70\ \x4d\x89\xa2\x0b\x14\x4d\xf1\x35\x8e\x10\x42\x39\x26\x1b\x92\x48\ \x24\xb8\xfd\xf6\xdb\x0f\xeb\x26\xbd\x1e\x43\x21\xc4\xa2\xa6\x43\ \x9e\x9f\xf6\x00\x00\x16\x56\x49\x44\x41\x54\xa6\xa6\x53\x06\x06\ \x06\xb6\x1d\x43\xe0\x55\x01\x5d\x2a\xa8\x42\x05\x14\x96\x2e\x3b\ \x85\x86\xb6\x2a\x96\xaf\x38\x8d\x29\xb5\x4d\xac\x29\xa9\x54\x6d\ \x8c\xa0\xe4\x85\xaf\xd3\x67\xcc\x98\xe1\x79\x88\x4c\x3a\xdd\xa5\ \xf9\xec\x34\xd2\x4d\xe3\x00\xc6\x40\x00\xa3\x2d\x42\xb9\x33\x82\ \x10\x15\xde\x4d\x55\xd5\xa3\x76\x40\x54\x55\x65\xe1\xc2\x85\x9c\ \x74\xd2\x49\x6c\xd8\xb0\x81\x81\x35\x15\xa3\x1e\x70\x1c\x26\x37\ \xba\x7e\xac\xe6\x6d\x62\x6f\xb0\xdb\x51\x03\x32\x3c\x3c\xdc\xe5\ \xba\xee\x5c\xaf\x80\xa0\xe9\xac\x30\x91\x88\x82\xb4\x75\xde\x77\ \xd2\x2d\x3c\xb3\xef\x87\xd8\x18\xd8\x86\xe4\xc0\xef\x8b\x7e\x0a\ \xb5\xaa\xaa\x2a\x52\x2c\x16\xe3\x47\xf2\x70\x53\xa6\x4c\x79\x5f\ \xb1\x58\xbc\x10\x70\xa5\x94\xf1\xce\xce\xce\x8a\xee\x97\x82\xb2\ \x61\x32\xd0\x53\xe2\xab\x89\x6f\xb2\xa7\x6d\x98\x3b\xb6\xfd\x2b\ \xb1\x50\x35\x1b\x0e\x1e\xc4\xee\x8b\xa2\x58\x41\x7f\x07\xb6\xb6\ \xb6\xfa\x6d\x69\x81\x62\x33\x77\x5e\xf4\x23\x36\xf6\xfe\x96\x1f\ \xbc\xf8\x9f\xcc\x9c\x51\xc7\x50\x39\x4f\x76\x77\xa5\xb6\x57\xd7\ \xf5\x63\xa2\xe2\x83\xc1\x20\xdf\xfc\xe6\x37\x89\xc5\x62\x34\x35\ \x35\xb1\x63\xc7\x0e\xce\x3d\xf7\x5c\xd6\xac\x59\xc3\xca\x95\x2b\ \x69\x6b\x6b\x43\x08\xc1\xac\x59\xb3\xc8\x64\x32\xbc\xf2\xca\x2b\ \xc7\xc6\xf6\x5a\x96\xd5\x16\x0c\x06\x2f\xf6\xf2\xd5\xd3\x2f\x09\ \x13\x8f\x6b\xe4\xfa\x6d\x7e\x33\x70\x1f\xb6\x22\x28\x0c\x38\xa4\ \xbb\x0f\x19\x4d\x5d\xd7\x7d\x37\xf4\x08\x49\xc4\x5b\xaf\xbb\xee\ \xba\xf3\xa5\x94\xb8\x48\x32\x55\xa3\x34\x4d\x0f\xe0\x66\xbc\xfa\ \x2b\x9d\x74\x22\xc7\xa9\x0d\xe7\x60\x16\x6d\x92\xc5\x24\xa7\x37\ \x5d\xc9\xb3\x5b\x9f\x21\x18\x74\x7c\x09\x55\x14\x05\xe9\x4a\xa4\ \x25\xb8\x76\xf9\x87\xf8\xef\x0d\xff\xca\xf2\xd8\x87\x58\xd9\x70\ \x23\x2b\x17\x2c\xe0\x3b\xad\x5f\x99\xd0\xfb\x7e\xb4\x80\x48\x29\ \x9d\xf1\x05\xe5\x9e\x93\xe3\xb9\xd9\x5e\xc7\x59\x77\x77\x37\x81\ \x40\x80\xda\xda\x5a\x7f\x9c\xd3\xb1\x90\x8b\x0a\x40\x75\x75\x35\ \xb6\x6d\xb3\xe3\x6b\x45\xac\x9c\x44\x68\x20\x14\x10\xaa\x57\x81\ \xa1\xa2\x69\x87\x22\xe3\xa3\x1c\xab\xa4\x27\x93\x49\x5c\xd7\x25\ \x63\x17\x99\x73\x45\x06\x5b\xad\xa8\x7d\x29\x6c\x74\x4d\x85\xa4\ \x82\x71\x20\x4a\xfe\x8d\xb1\xe1\x30\x63\xde\xd4\xf8\x12\xa0\x48\ \x38\x4c\x32\x98\xe3\xcc\x8f\x45\x38\xff\xfc\x0b\xf8\xd1\xce\xe7\ \x18\x4a\x8d\xb0\xb7\x7f\x27\xc5\x9a\xed\xa8\x54\x6a\x6c\x85\x7a\ \x74\xe3\x93\x00\x1a\x1b\x1b\x4f\x94\x52\xae\x08\x85\x42\x5c\x73\ \xcd\x35\xc4\x62\x31\x7f\x13\x6e\xdd\xba\x15\x45\x51\xd8\xb3\x67\ \x8f\x5f\xf4\x31\x30\x30\xe0\x17\x18\x1e\x2b\x20\x9c\x7c\xf2\xc9\ \x7c\xe9\x4b\x5f\xc2\xb6\x6d\x1e\x7e\xf8\x61\x0e\x1c\x38\x30\x61\ \x8e\x47\x3c\x1e\x67\x70\x70\xd0\x8f\x46\xbd\xc1\x34\x47\x9b\x81\ \x73\x5d\x17\xcb\xb1\x51\x84\x42\xba\x27\xcc\x23\x7f\xff\x3b\xfa\ \x0b\xfb\xb9\xe3\xb7\x7f\xc7\xec\xc6\x79\x74\x96\xdb\x30\xca\x21\ \x14\xfd\xd0\x44\x37\xdf\xf5\xf4\x8a\xf6\x14\x85\x40\x40\xc7\xb2\ \x0c\x34\x25\x88\xaa\x68\x04\xb4\x20\x21\xad\x42\x85\x1b\xa6\x81\ \xa2\x8a\xa3\x9e\xc7\x55\x2a\x95\x5a\x9a\x9b\x9b\xc3\x85\x42\x81\ \xaa\xaa\x2a\x9f\x32\x1a\xbf\xfe\x58\xb1\xa0\x17\x30\x1e\x35\x20\ \x2b\x56\xac\x60\xf7\xee\xdd\xfc\xf5\x5f\xff\x35\x67\x9c\x71\x06\ \x42\x08\x22\x91\x4a\x1b\xb1\x97\x0e\x2d\x16\x8b\x0c\x0f\x0f\xd3\ \xdc\xdc\xcc\xe0\xe0\xa0\x6f\x97\x8f\xf4\x41\xbd\xb9\x8d\x16\x15\ \x55\xb0\x7a\xd5\xbf\xf2\xf3\x3d\x5f\x27\x79\xa0\x9a\x05\xda\x55\ \xdc\x72\xc6\xdf\xf3\x99\x9e\xf7\x57\x5c\x5c\xa7\xa2\x72\x82\xc1\ \xa0\x3f\xdb\xd1\x75\x5d\x0c\xd3\xc4\x2a\x18\x64\xd7\x2c\xe6\x8b\ \xbf\xfa\x22\x8e\xb4\xd9\xcb\xe3\x94\x0d\x8b\xcc\xcb\x02\xe4\x0c\ \x66\xcf\x96\x20\x2a\xb9\x8a\xcb\x2f\xbf\xfc\x7f\x84\x10\xdf\x07\ \xd8\xbc\x79\x73\xc7\xde\xbd\x7b\x97\x1c\xae\x27\x98\x4e\xa7\x2b\ \x1d\xc4\x01\xb8\xe4\xdf\x1a\x50\x54\x01\xa8\x34\xd7\x9f\x40\x7f\ \xea\x00\xa3\xfb\x4c\x0e\xbc\x58\x24\xd5\x5e\x91\xe0\xaa\xaa\x2a\ \xf2\xf9\xfc\xfd\xc7\x14\x18\xfe\xfc\xe7\x3f\xe7\x03\x1f\xf8\x00\ \x77\xdf\x7d\x37\xeb\xd7\xaf\xf7\xfd\xfd\x7c\x3e\xef\xd3\x25\xa9\ \x54\x6a\x42\xaa\x54\x4a\x49\x63\x63\xe3\x97\x14\x45\xb9\xa5\xaf\ \xaf\xef\xc0\x91\x4a\x88\x83\x83\x22\x55\xa6\xd4\x4d\x61\xff\x40\ \x91\xa2\x05\x1d\xc3\xfb\x79\x72\xef\x7d\xd8\xb6\x85\x65\x55\x74\ \xa9\x69\x9a\x04\x83\x41\x4e\x3d\xf5\x54\xf6\xee\xdd\x4b\x22\x91\ \x20\x9d\x4e\x63\xba\x26\x56\xd9\xc6\x30\x2a\x53\x91\x76\xd7\x6e\ \xe6\x9c\x6b\x63\x38\xb9\xca\x1c\x45\x37\x13\xc4\xc9\x6a\x38\x19\ \x0d\x6b\x20\x18\x40\xfa\x33\x15\x83\x47\x60\x43\xd0\xf5\x4a\x3d\ \x98\xee\x2a\x0c\x6c\x36\x29\x0e\x3b\x14\x86\x1c\x5e\x1d\x48\x50\ \x4e\xb9\x95\xba\x35\x4d\xf8\xb5\x08\x63\x36\xcb\x3e\x26\x1b\xe2\ \xba\x2e\x0f\x3c\xf0\xc0\xa1\x1b\xf1\x02\x4d\x01\x99\x74\x06\xcf\ \xad\x16\xa2\xc2\xdb\x78\x63\xfd\xe6\xcc\x99\x73\x51\x26\x93\xa9\ \x07\xfe\x28\x20\xf3\xe6\xcd\x7b\x8f\xae\xeb\x42\x51\x14\x67\x78\ \x78\x38\x56\x2e\x55\x26\x7b\x5a\x8a\x4d\xbe\x3f\xc0\xae\x5d\xbb\ \x48\xe4\x0a\xa4\x07\x6c\xb2\x89\x2c\xa3\x07\x8b\xe4\x07\x2d\x4c\ \x4b\xa2\xc8\x0a\x80\x86\x61\xd0\xdc\xdc\xcc\x8e\x1d\x3b\x50\x94\ \x4a\xeb\xb4\x23\x0f\x4d\x1e\x32\x5c\x8b\x70\x2d\x28\x8e\xc6\xb4\ \xfa\x05\xc4\x67\x54\xb1\x73\x70\x03\x75\x91\xc9\x64\xe5\x10\x03\ \x0f\x36\xe0\x14\x0e\xa9\xbc\x23\x49\x2f\x57\x55\x55\xb1\x7a\xf5\ \x6a\xf6\xec\xd9\xc3\x81\x7d\x07\x08\x18\x65\x54\xc7\x21\x56\xef\ \x62\xd7\xd8\xfe\x98\x0e\x2f\x6e\xf3\xbc\xbf\x63\x89\x43\xfe\xfb\ \xe0\xc1\x83\x17\xdb\xb6\x3d\x53\x08\x41\x31\x26\x39\xf5\xf2\x6a\ \xf4\x80\xa0\x30\x52\xc5\xfb\xcf\xb8\x9e\x67\xf6\xfd\x00\x4d\xd5\ \x19\xda\x6e\x30\xb8\xb5\x84\x50\x84\x3f\xed\xe7\x1d\x1e\xb0\xe1\ \xb4\xd3\x4e\xdb\xac\xaa\xaa\x10\x42\x20\x91\x50\x5b\x82\x6c\x10\ \xe1\xa8\xb0\x11\x9e\xd8\xf8\xd4\x21\xde\x88\x1a\x76\x1c\x18\x64\ \xf4\x60\x0c\x47\xe6\xb0\x4d\xe9\x1b\x73\xaf\x16\xcc\x9b\xec\xe6\ \x9a\xae\xdf\x6a\x6d\x49\x07\x45\x55\xe8\xde\x6f\xf3\x95\x5b\xbf\ \xc2\x0f\xd6\x7e\x97\x4b\x5a\x6e\xe1\x8a\x25\x1f\xe4\x53\xcf\x5f\ \x80\x65\x5a\xd8\xa6\x73\x44\x80\x78\x69\xd9\x6f\x7f\xfb\xdb\x24\ \x12\x09\x6e\xbe\xf9\x66\x9e\x7b\xee\x39\xbf\x72\xb1\xbd\xbd\x9d\ \x65\xcb\x96\x11\x0e\x87\xd9\xb6\x6d\x1b\xdb\xb6\x6d\x63\xe9\xd2\ \xa5\x6c\xd8\xb0\xe1\x1d\xbf\xfb\x4f\x02\x92\xcb\xe5\xb6\x36\x37\ \x37\x0f\x1b\x86\x31\x53\x08\x81\xa1\x3b\xb4\x9c\x57\x8d\x9d\x92\ \xa4\x3b\x0c\x1e\xfd\xed\x03\x14\x07\x04\x56\xd1\xa2\x9c\x92\x84\ \xc2\x21\xdf\xf5\x7d\xa7\xf6\x30\x40\x2f\x97\xcb\xc2\xb6\x6d\x10\ \xb0\x35\xb2\x8b\xf7\x9e\x5f\x87\x2b\x5d\x1c\xc3\x45\xb1\x83\x48\ \x4b\xc1\xc9\xab\xe4\x5e\xab\xc1\x29\xaa\x3e\xb1\x98\x4c\x26\xfd\ \xe0\xd1\xa3\x47\x5c\xd7\xa5\xb3\xb3\x53\xbe\xf1\xc6\x1b\xe2\xd1\ \x47\x1f\x65\xdb\xb6\x6d\x15\xc7\x43\x3a\xa8\x9a\xc2\x09\xd5\x4b\ \x38\x98\xdf\xcd\x48\xf9\x20\xff\xeb\xc4\xdb\x09\x6a\x21\x42\xa1\ \x20\x96\x63\x63\x99\xbe\x1a\x7a\x47\x44\x6a\x6a\x6a\x3e\x71\xde\ \x79\xe7\x7d\xa3\xb5\xb5\x95\x47\x1e\x79\x84\x2f\x7f\xf9\xcb\xf4\ \xf5\xf5\xb1\x77\xef\x5e\x72\xb9\x9c\x4f\xd3\xac\x5d\xbb\x96\x99\ \x33\x67\xd2\xd3\xd3\x83\xe3\x38\x8c\x8e\x8e\x1e\x9f\xc1\x01\x95\ \x0d\x21\x38\xe9\xa4\x93\xe8\xee\xea\x66\xe3\xe7\xca\x48\x7b\xcc\ \x21\x16\x1a\x08\x15\xe9\x38\x84\x42\xba\xff\x72\xbc\x12\xfc\x77\ \xba\x01\xbf\x3c\x07\x49\xa0\xae\xd2\xd9\x74\xd6\xa4\x0f\xd3\x32\ \xb9\x85\xa7\x3b\xbe\xc7\xcc\xaa\x53\xd8\x9a\xfa\x0d\xf6\xc6\x30\ \xb6\x75\xa8\x8a\x64\x7c\x1b\x44\xa1\x50\xb8\x63\xff\xfe\xfd\xff\ \x3e\x69\xd2\xa4\x81\x91\x91\x91\xc6\xb5\x6b\xd7\xb2\x68\xd1\x22\ \x36\x6e\xdc\x58\xe9\xc8\x52\x5d\x92\xbf\x2f\xd3\x3b\x75\x90\x7b\ \x36\x3f\x40\x32\x97\xe0\x0b\xbf\xfb\x12\xaa\xa2\xd2\x9d\x05\x2b\ \x7f\x48\x32\x26\x4f\x9e\x7c\xc2\xb4\x69\xd3\x5e\x05\x54\xc7\x71\ \xd8\xb9\x73\xe7\x75\xc9\x64\xb2\xe7\x2d\x6c\x44\xad\xa2\x28\x9a\ \x94\x92\x4d\x9b\x36\x71\xd1\x45\x17\xf9\xe4\xe6\x5b\xd7\xfe\xfd\ \xfb\x7d\x82\x73\xeb\xd6\xad\xc4\xe3\xf1\x63\x07\xc4\xb2\x2c\x6e\ \xbd\xf5\x56\xce\x3b\xef\x3c\x0c\xc3\xe0\xb1\xc7\x1e\xf3\x07\x41\ \x7a\x9e\xd6\x9c\x39\x73\xd8\xbb\x77\xaf\x4f\x0d\x0c\x0c\x0c\x78\ \x37\xb9\x70\xda\xb4\x69\xc9\xde\xde\xde\xb7\xe3\x8a\x1c\x8f\xaf\ \x92\x02\x14\x45\xd0\xbd\xcf\xe6\xdb\x7f\x75\x13\xff\xf0\xe3\x2b\ \xf8\xe2\xc5\xdf\x27\x1e\x6e\x60\x74\x7b\x27\x83\xd6\x08\x86\xe1\ \xf8\x80\x7b\xc4\xe1\xb8\x2a\x49\xa9\xaa\x2a\xb7\xde\x7a\x2b\x9f\ \xff\xfc\xe7\xb9\xff\xfe\xfb\xfd\x09\x3c\xb6\x70\xd1\x8a\x1a\xb1\ \x13\xaa\x28\x65\x2c\x0a\x96\x60\x64\xd9\x56\xe2\xb1\x10\x93\x46\ \xc2\xd8\xf5\x41\xdc\xb2\x8a\x34\x14\xa4\xa9\x84\x91\xe2\x4c\x2f\ \xf7\xfd\xe6\x9b\x6f\x86\xde\x4e\x5d\x8d\x4f\x5b\x2b\xaa\x4a\xb8\ \x4a\x23\x10\x14\x87\x3a\xa6\x04\xd8\x25\x17\xbb\xa4\xf8\x36\x57\ \x51\x14\x4a\xa5\x92\x65\x9a\x66\xe2\x98\x00\x71\x1c\x87\xd9\xb3\ \x67\x93\x4c\x26\x39\xe5\x94\x53\x08\x85\x42\x9c\x72\xca\x29\x44\ \xa3\x51\xa2\xd1\x28\x3f\xf9\xc9\x4f\xa8\xa9\xa9\xe1\xcc\x33\xcf\ \x24\x9d\x4e\xb3\x6e\xdd\x3a\x02\x81\x00\xb6\x6d\xf3\x9e\xf7\xbc\ \xe7\xe1\xf6\xf6\xf6\x1f\xf7\xf6\xf6\xde\x34\x46\x36\x36\x01\xab\ \x01\xd3\x75\xdd\xea\xde\xde\xde\x4a\x01\x32\x60\x5a\x26\xf9\x6c\ \x8c\x3b\xef\xfc\x1a\x3d\xed\x59\x1e\x1f\x7a\x86\x4c\x21\xc3\x2b\ \x7d\x6f\x52\xe8\x0a\x13\xd3\x6b\x3d\xb6\x94\xaa\xaa\x2a\x72\xb9\ \xdc\x84\xd1\x17\x42\x08\xda\xda\xda\xb8\xe9\xa6\x9b\xc8\xe5\x72\ \x54\x55\x55\x55\x66\x09\x0b\x17\xdc\xb1\x39\xed\xc0\x90\x36\xc2\ \xc2\x85\x01\x6c\xcb\x84\xa6\x89\x23\x93\xb2\x9b\xc7\x2a\x1e\x85\ \xf4\x0b\x23\xfe\x18\xf1\xd9\xd0\xd0\x30\xd6\x82\x00\xb5\xe7\x04\ \x59\x7c\x5a\x8c\xa1\xed\x65\x46\xf7\x59\x8c\xee\x36\x71\xed\xb7\ \x75\x04\x0e\x0c\x0e\x0e\xde\x77\x4c\x80\x44\x22\x11\xee\xbc\xf3\ \x4e\xce\x3c\xf3\x4c\xee\xb9\xe7\x1e\x8a\xc5\xe2\x84\xec\x97\x69\ \x9a\xac\x5d\xbb\x16\xdb\xae\x64\xf4\x82\xc1\xa0\xff\xef\xde\xf0\ \x2e\x6f\x8d\x8c\x8c\xac\xba\xf2\xca\x2b\x3f\xef\x51\xf4\x19\xb3\ \x28\x6b\x67\x3b\x42\x26\xc3\xb8\xc9\x00\xd8\x92\x3d\x6f\x76\x32\ \x59\x59\xc0\xa6\x8d\x95\xe9\xdc\xd3\xb4\xe5\x74\xba\x1d\x7e\x8e\ \x3a\x12\x89\x10\x0c\x06\xfd\x91\x47\xe3\xa8\x97\x7b\x86\x87\x87\ \xab\x84\x10\x6e\xb9\x5c\x5e\x2e\x84\xb8\xb8\x5c\x2e\xe3\x28\x2e\ \xa1\x50\x78\xac\xe2\x51\x80\x2a\x31\x4d\x87\x0f\xcc\xbc\x93\xee\ \xec\x2e\x4e\x9a\xb5\x98\xff\x7a\xee\x3e\xec\xba\x76\x1c\x27\x82\ \x65\x5a\xa0\xc8\xb7\x8d\xe2\x03\x81\xc0\x6c\x29\x65\x9d\x37\x48\ \x61\xd1\xa2\x45\x04\x02\x01\xfa\x5e\xeb\x65\xe7\xcb\x12\x49\x00\ \x29\x75\x62\x91\x90\xaf\x52\xbd\x5f\x5e\x61\xc8\x31\xab\x2c\xdb\ \xb6\x83\x8a\xa2\xf0\xda\x6b\xaf\x55\xf4\xa1\x64\xc2\x64\x05\x21\ \xc0\xb6\x1c\x84\x52\x31\xe6\x5e\x2e\xa2\x50\x28\x4c\x18\x2c\xec\ \x3d\x93\x33\x6e\x50\x72\x76\x61\xa7\x98\x79\x46\x14\xcb\x35\x71\ \x1c\x17\x25\x17\xab\xc4\x07\xde\xec\xdc\x31\xf7\xd2\x9b\x17\x2c\ \xa5\xf4\xe9\xfe\xfa\xfa\x7a\x12\x89\x43\xd2\x9f\x4c\x26\xbf\xe6\ \x19\xfb\xc9\x93\x27\x7f\x4c\xd3\xb4\x8b\xa5\x94\x08\x1b\xb0\x5d\ \xff\x50\x00\xcb\x34\x48\xec\x93\x54\x35\x57\xf3\xfc\x9b\x3f\xc6\ \x3a\xf0\x31\x16\x28\x67\x12\x53\x56\xf0\x58\xef\x4f\xc9\x8d\x06\ \x40\x48\x6f\xf0\xd8\x29\x81\x40\xa0\x5e\x55\x55\x51\x2a\x95\x76\ \x5f\x72\xc9\x25\xed\x3d\x3d\x3d\x58\x96\x25\x6b\x6b\x6b\xc5\x3f\ \xff\xf3\x3f\xb3\x78\xf1\x62\xee\xbd\xf7\x5e\xf6\xed\xdb\xc7\xe2\ \xc5\x8b\x79\xf3\xcd\x37\x69\x69\x69\xa1\xbf\xbf\x9f\x74\x3a\xcd\ \x94\x29\x53\x90\x52\xb2\x7d\xfb\x76\xd2\xe9\xf4\xb1\x03\x72\xe0\ \xc0\x81\xbf\xcb\xe5\x72\x9b\xd4\x31\x7e\x22\x1f\x72\x39\xff\x96\ \x3a\xca\x59\x07\xbb\x24\x29\xa5\x5c\xd2\x5d\x16\x99\x03\x36\xee\ \x38\xa0\x26\x4d\x9a\xe4\xd1\x2b\x55\xb1\x58\x6c\x46\x3e\x9f\x3f\ \x00\xb8\xe3\x77\x4a\x38\xa2\x61\x14\x25\x97\xcf\xfc\x27\x26\xd7\ \xd5\xf2\xf3\x3d\xdf\x20\x56\xd7\x48\xa2\xf9\x00\xc9\xf5\x21\x5f\ \xf7\x3a\x8e\x43\x3a\x9d\x46\x4a\x49\x38\x1c\xc6\xb2\x2c\x06\x06\ \x06\xbc\x06\x98\xb7\xf3\x1c\x54\x4d\xd3\x58\xbd\x7a\x35\xf9\x7c\ \x9e\x1f\xff\xf8\xc7\x7e\x02\xad\xae\x5c\x45\x68\xeb\x1c\xee\xda\ \x7c\x17\xaa\x32\x87\xdf\x06\x9e\x20\xa4\xeb\x48\x43\x65\x8a\xb3\ \x98\xa6\x13\xbd\x9d\x26\xb9\xfa\xea\xab\x7f\xee\x55\x8e\xac\x59\ \xb3\x66\xaa\x57\x13\x6c\xdb\xb6\x37\x8f\xd7\x1f\x36\xe3\xba\x2e\ \x93\x27\x4f\x66\xfa\xf4\xe9\x94\xcb\x65\x66\xcc\x98\xc1\xba\x75\ \xeb\xfc\x64\xde\xce\x9d\x3b\x8f\x8f\x97\x65\x59\xd6\xd6\x40\x20\ \x20\x3d\x35\x13\x01\x76\xfe\xc0\x7c\x4b\x6e\x5d\x27\xa4\xeb\xa0\ \x1f\x8a\x62\x35\x4d\xc3\xb2\x2c\x1a\x1b\x1b\xff\x7a\xc9\x92\x25\ \x97\xbd\xf8\xe2\x8b\x5f\xb5\x2c\xeb\xe4\xbe\xbe\xbe\x43\x63\x9d\ \xde\x28\xa0\xb5\x57\xb3\xeb\xc4\x36\xbe\xb1\xf9\x19\x66\x4e\x99\ \x89\x1e\x9f\x42\xdb\xe0\x4e\xf2\x43\xae\x5f\x1c\xf0\x16\xd1\x2f\ \x77\x74\x74\x3c\x34\x96\xf1\x33\x34\x4d\x7b\xe5\xed\x72\x29\xef\ \x7b\xdf\xfb\xa8\xaf\xaf\xe7\xb6\xdb\x6e\xe3\xd1\x47\x1f\xf5\x53\ \xba\xae\x74\x29\x9b\x15\xb5\xbb\x21\xdd\xca\x7b\x6f\x0d\x4f\x18\ \x33\x65\x0d\x07\x30\x7b\xc2\x98\x07\xc3\x38\x39\x8d\xf1\xb3\x54\ \xbc\x2a\x7a\x2f\xc6\xb9\xed\xb6\xdb\x08\x06\x83\x94\x4a\x25\xa4\ \x94\x7c\xff\xfb\xdf\x9f\xd0\x7f\x22\xa5\x64\xf7\xee\xdd\xb4\xb6\ \xb6\x1e\x36\x89\x79\x58\xed\xa7\xae\xeb\xf2\xd1\x8f\x7e\x94\x73\ \xce\x39\x87\x8e\x8e\x0e\x76\xee\xdc\x49\x67\x67\xa7\x3f\xdb\xc3\ \x34\x4d\x4e\x3f\xfd\x74\xf6\xef\xdf\xcf\x9e\x3d\x7b\x98\x3d\x7b\ \x36\x1d\x1d\x1d\x7e\x26\xb1\x5c\x2e\xeb\xe7\x9e\x7b\xee\xbf\x2a\ \x42\x61\x58\x1b\x96\xd3\x4f\x12\xc2\x1c\x0c\x63\x0f\x07\x71\x53\ \x3a\x3b\x36\xee\xa5\x45\x3d\x11\x67\xc4\xa5\x77\x78\x90\x26\x6d\ \x29\xeb\x13\xaf\xfb\xbd\xe0\x5e\x71\xc0\x18\x91\x98\x4f\x24\x12\ \x1f\xfd\x93\x0f\xa5\x69\xbc\xf2\xca\x2b\xac\x59\xb3\x86\x91\x91\ \x11\x8a\xc5\xa2\x3f\x4f\xd7\x2b\x0b\x02\x28\x0a\x93\x68\x6d\x0c\ \x92\xd3\xb8\xfd\x92\x2f\xf1\x8b\xd6\xff\x64\x24\x32\x82\x3d\x37\ \x4b\x62\xb3\x45\xea\xe5\x2a\x54\xad\xd2\xb2\x7d\xd6\x59\x67\xad\ \xf3\x00\x29\x95\x4a\x84\xc3\x95\xf3\x4e\x8a\xb9\x4a\x39\xa9\x50\ \x15\x94\x3f\x5e\xd6\x2c\x01\x91\x4a\xa5\xa2\xc7\x05\x10\x29\x25\ \xd7\x5c\x73\x0d\x5b\xb6\x6c\x61\xd5\xaa\x55\x24\x12\x09\x16\x2d\ \x5a\xc4\xf6\xed\xdb\x69\x68\x68\xa0\xb3\xb3\x93\x9a\x9a\x1a\x16\ \x2e\x5c\x48\x20\x10\xa0\xbd\xbd\xdd\x1f\x00\xe9\xbd\x80\xfe\xfe\ \x7e\x1c\x29\xa9\xbe\x3e\x2f\xc2\x8b\x63\x84\x97\x66\x41\x91\x48\ \x53\xc1\x4e\x6b\xb8\x59\x9d\xd4\xf3\xb5\x38\x96\x8b\xe6\x1e\xaa\ \x2e\xf1\x06\xa7\xd5\xd5\xd5\x4d\x98\x35\xff\x4e\x91\x74\xb1\x58\ \xe4\x9c\x73\xce\xf1\xc1\xf4\xf4\x77\x5d\x5d\x9d\xff\xbd\x4d\x3d\ \x2a\x7b\xbf\x5c\x87\xed\x66\xf8\x9b\xff\xfc\x18\x02\x9d\x40\x40\ \x45\x1a\x51\x14\x5d\x22\x74\x13\xd5\x55\xbc\xd1\xb8\xb3\x0c\xc3\ \xc0\xb6\x6d\xaa\xab\xab\x2b\xc9\x27\x04\xb5\x4b\x82\xe8\x08\xf2\ \x03\x0e\x46\xc6\x9d\x30\x9c\xc8\x93\x0a\x4d\xd3\x44\x36\x9b\x7d\ \xc3\xb6\xed\xf7\x1e\x17\x40\x74\x5d\xe7\xfa\xeb\xaf\xe7\xae\xbb\ \xee\xe2\xeb\x5f\xff\x3a\xdd\xdd\xdd\x13\x4e\xd2\x29\x16\x8b\x74\ \x75\x75\x91\xcb\xe5\xfc\x29\x9d\xaa\xaa\x92\xcd\x66\xa9\xad\xad\ \xc5\x75\x5d\x7f\xc8\xc0\xc0\x03\x36\x6f\x28\xde\xb0\x49\x65\x1c\ \x65\x61\x52\xb4\xda\x68\x69\x69\x99\x90\xb7\xf7\x26\xea\x7c\xf4\ \xa3\x1f\xe5\xfe\xfb\xef\x3f\xac\x32\x23\xc3\x30\x72\xb6\x6d\x77\ \x7b\x75\x5d\x42\x88\xe9\xaa\xaa\x0a\x4f\xda\xfd\x89\xa8\x01\x8d\ \x9a\x49\x31\x2c\xcb\x62\xb4\x6c\x53\x7d\xe9\x10\xb5\x93\x74\x64\ \x49\xc3\x1c\x0a\x52\xec\x08\x40\x22\xea\x57\x4e\x7a\xf1\x47\x28\ \x14\xe2\x13\x9f\xf8\x04\xc9\x64\x92\xed\xdb\xb7\x57\x1a\x95\x6a\ \x2d\x64\xfc\x90\xf3\xe1\xfd\xee\x15\x5d\x94\x4a\xa5\x72\x22\x91\ \x48\x1d\x17\x40\xbc\xb9\x8a\x5f\xf8\xc2\x17\xfe\xe8\x67\xf2\xf9\ \xbc\x4f\xcd\x4b\x29\x19\x3b\xb1\xcc\x67\x81\x87\x86\x86\x2a\x85\ \xda\x93\xe3\xa8\xaa\x4a\x5b\x5b\x9b\x3f\xcb\x77\xf1\xe2\xc5\x63\ \xd4\x47\xd9\xcf\x71\xd8\xb6\xed\xe7\x0e\xaa\xaa\xaa\xfc\xf9\x86\ \x87\x03\x48\x3a\x9d\x7e\x70\xd3\xa6\x4d\x0f\x7a\x3f\x4f\x9f\x3e\ \xdd\x52\x55\x55\x3b\xf1\xc4\x13\xe9\xee\xee\xf6\x81\xf6\x5e\x98\ \x61\x18\x24\x7b\x46\x68\x5e\x7f\x12\xd9\x52\x89\x75\xeb\xd6\xa1\ \x69\x1a\xcb\x97\x2f\xa7\xa1\xa1\x81\x36\xa5\x7d\xc2\x09\x3a\x17\ \x5e\x78\x21\x93\x27\x4f\xe6\x33\x9f\xf9\x0c\x8f\x3c\xf2\x08\x2f\ \xbf\xfc\x32\x97\x5d\x76\x19\xbf\xff\xfd\xef\x99\x35\x6b\x16\xc3\ \xc3\xc3\x6c\xd8\xb0\x81\x58\x2c\xc6\xa9\xa7\x9e\xca\x73\xcf\x3d\ \x77\xd8\xa4\xe5\x61\x01\x92\x4a\xa5\xfe\x2a\x9b\xcd\x7e\xa3\xa6\ \xa6\x66\x51\x3e\x9f\xf7\xcb\xfb\xc7\x1b\xaa\xb7\x1a\x2d\xaf\xc8\ \xce\x03\xc5\xcb\x75\x54\x55\x55\x11\x08\x04\x68\x6a\x6a\x62\xe6\ \xcc\x99\x0c\x0c\x0c\x4c\x38\xbf\x6a\xfc\x31\x42\xe3\x8b\x93\xbd\ \xe1\x68\x47\x93\xfc\x92\x52\xb2\x6e\xdd\x3a\x86\x86\x86\x58\xbd\ \x7a\xb5\x1f\x4b\x79\x52\xe8\x79\x4a\xb6\x6d\x93\x4e\xa7\x39\xeb\ \xac\xb3\x88\xc5\x62\x24\x93\x49\x32\x99\xcc\xf8\x53\xd8\x30\x4d\ \x93\xbd\x7b\xf7\x72\xdb\x6d\xb7\x31\x32\x32\xc2\x8e\x1d\x3b\x70\ \x5d\x97\xed\xdb\xb7\xe3\xba\x2e\xfb\xf6\xed\xf3\x9f\xbd\x50\x28\ \x30\x38\x38\x78\x44\x2c\xf2\x61\x01\x92\x4c\x26\x7f\x5d\x57\x57\ \xf7\xcf\xcb\x97\x2f\x67\xf5\xea\xd5\x74\x77\x77\xb3\x79\xf3\x66\ \xba\xba\xba\x08\x04\x02\x7e\xe2\x7e\xea\xd4\xa9\xf4\xf5\xf5\x91\ \x4e\xa7\x99\x34\x69\x92\xcf\x7e\xfa\x25\x3d\xe3\x62\x10\xcb\xb2\ \xc8\xe7\xf3\x3e\x4d\x3e\xfe\x40\xb1\xf1\xb3\x73\xc7\x5e\x5c\x6a\ \x60\x60\xe0\xe1\xb1\xff\x37\x72\x34\x65\x45\x86\x61\xf8\x52\x9b\ \xcd\x66\xfd\xef\x1f\x3f\x74\xdf\x53\x4b\xa6\x69\xfa\x07\xd5\x78\ \xff\xe6\xfd\xbd\xe3\x38\x8c\x8c\x8c\xb0\x6a\xd5\x2a\x5f\x9d\x43\ \xa5\x9b\xca\x1f\xeb\x31\x6e\x83\xbe\xf1\xc6\x1b\x47\xd4\x42\x77\ \x24\xe7\x87\x88\x8f\x7f\xfc\xe3\x0c\x0e\x0e\x72\xed\xb5\xd7\x62\ \xdb\x36\xb3\x67\xcf\xa6\xaf\xaf\x0f\xdb\xb6\xa9\xab\xab\x43\x88\ \x4a\x32\xa6\xbd\xbd\x9d\x62\xb1\x48\x30\x18\xf4\x87\x24\x7b\xb6\ \xc0\x03\xc4\x2f\xf3\x19\x03\x61\xbc\x24\xa9\xaa\x4a\x20\x10\xa0\ \xa5\xa5\xc5\x9b\x3b\x35\xd2\xd9\xd9\xf9\x89\xf1\x31\xce\xf8\xa0\ \xf0\x70\x54\xee\xc5\x17\x5f\xcc\x45\x17\x5d\xc4\xf0\xf0\xb0\xaf\ \xb2\x42\xa1\x90\x9f\x8a\xf6\xd4\xd7\x78\x06\x60\xfc\xe1\x67\xde\ \xdc\xc9\xb1\x0d\x3a\x81\x4c\x1c\x5f\x72\xfb\x76\xd7\x96\x52\x76\ \x49\x29\xfb\x8e\x37\x20\x7c\xfa\xd3\x9f\xe6\xa1\x87\x1e\xe2\x67\ \x3f\xfb\x19\x2f\xbe\xf8\xe2\x84\xf3\x38\x0c\xc3\x20\x1a\x8d\xfa\ \x65\xf7\xde\x91\x0e\x9e\x6b\xec\xa9\xaf\xf1\xa7\xd5\x8c\x3f\xe9\ \xcd\x7b\x21\xc5\x62\xd1\xaf\x32\x9c\x3a\x75\x2a\xe9\x74\xfa\x0f\ \x28\x87\x23\x01\xc3\x53\x59\x4d\x4d\x4d\xec\xde\xbd\xdb\x57\xb7\ \x9e\x5a\x1c\x7f\x14\x85\xf7\x67\x4f\x5a\xc7\xd7\x54\x99\xa6\x89\ \xae\xeb\xdc\x71\xc7\x1d\x5c\x70\xc1\x05\xfc\xfb\xbf\xff\xbb\x97\ \x5f\xf7\x59\x6b\x4f\xda\xab\xaa\xaa\xfc\x41\x3d\x52\x4a\x76\xed\ \xda\x35\xeb\xb8\x4b\x88\xe7\x3e\x7e\xf0\x83\x1f\x9c\xd0\x53\x38\ \xde\x76\x78\x93\x9d\x3d\xfd\x59\x55\x55\xe5\x9f\xc4\xe3\xed\x4a\ \x8f\x23\xf2\xa4\xc5\xf3\x46\x3c\x8a\xc4\xa3\xab\xa5\x94\x13\x06\ \x80\x1d\xcb\x4a\xa7\xd3\xb3\x36\x6f\xde\x8c\x65\x59\xf9\xe9\xd3\ \xa7\x77\xac\x5a\xb5\xaa\xf6\x53\x9f\xfa\x14\x37\xdf\x7c\x33\xf9\ \x7c\xde\xef\xb5\xf7\xdc\x5a\x6f\x1c\xdf\x78\x9a\x3f\x93\xc9\x30\ \x7b\xf6\x6c\xce\x3d\xf7\x5c\xa2\xd1\x28\xe7\x9c\x73\x0e\x1b\x36\ \x6c\xe0\x92\x4b\x2e\x61\xcd\x9a\x35\x5c\x79\xe5\x95\x3c\xf9\xe4\ \x93\x2c\x5c\xb8\x90\xda\xda\x5a\x54\x55\xe5\xb9\xe7\x9e\x9b\x30\ \xed\xfa\x78\x03\xf2\x8b\xee\xee\xee\xed\x8a\xa2\xac\x7e\xef\x7b\ \xdf\x8b\xa2\x28\xb4\xb7\xb7\x63\x18\x86\x3f\xef\xdc\xd3\xb7\x35\ \x35\x35\x38\x8e\xe3\x0f\x94\x14\x42\x90\x4a\xa5\xfc\x01\xf5\xe3\ \x55\x96\x57\xd1\xe7\x7d\x6e\xac\x5a\x5d\x3a\x8e\x23\x6c\xdb\xa6\ \xa6\xa6\x86\x4c\x26\xa3\x1e\x23\x20\x7e\x4e\xa3\x58\x2c\xba\x77\ \xdd\x75\x17\xeb\xd7\xaf\xa7\xba\xba\x9a\x91\x91\x11\x7f\xf7\x8f\ \xb7\x67\x1e\xd5\x32\x3e\xd1\x96\xcb\xe5\xd8\xbd\x7b\x37\x0d\x0d\ \x0d\x78\xe7\xff\x7a\x6e\xef\xd6\xad\x5b\xb1\x6d\x9b\x9e\x9e\x1e\ \x7f\x10\x8d\x37\x92\xe9\x88\xec\xdd\xe1\x7c\xc8\x3b\xab\x0f\xd0\ \x96\x2c\x59\x62\x6d\xdd\xba\x95\x9d\x3b\x77\xd2\xd3\xd3\xc3\x96\ \x2d\x5b\x58\xb1\x62\x05\x3f\xf8\xc1\x0f\xb8\xf0\xc2\x0b\xe9\xec\ \xec\x24\x18\x0c\x32\x7f\xfe\x7c\x3a\x3b\x3b\x79\xf5\xd5\x57\xc9\ \x66\xb3\x0c\x0f\x0f\x13\x8b\xc5\xfc\x72\x53\xef\x04\x01\x29\xa5\ \xdf\x9f\x18\x8d\x46\xfd\x03\x51\x06\x07\x07\x13\xe5\x72\xf9\xe5\ \x31\xbb\xb4\x67\x64\x64\xe4\x8b\x1c\x87\x75\xe2\x89\x27\x26\x6e\ \xbc\xf1\xc6\xfa\x4b\x2f\xbd\x94\xcf\x7e\xf6\xb3\x0c\x0c\x0c\x50\ \x2a\x95\xfc\x39\xed\x85\x42\x81\x29\x53\xa6\xf8\x07\x9c\x79\xe3\ \x6f\x55\x55\x65\xe6\xcc\x99\x64\x32\x19\xff\xb4\x87\xb7\x73\x1e\ \xde\x9a\xe6\xb5\x6d\x9b\x37\xdf\x7c\x53\x1c\x57\x09\x19\xa7\xc3\ \x15\xcb\xb2\x78\xf8\xe1\x87\xb9\xec\xb2\xcb\x78\xf4\xd1\x47\x49\ \x26\x93\xbc\xf0\xc2\x0b\x48\x29\x19\x1c\x1c\x64\xdf\xbe\x7d\x95\ \xb3\xa5\xba\xbb\x27\x64\x10\xbd\xc1\x2f\xe9\x74\x9a\x60\x30\xe8\ \x0f\x4f\x8e\x46\xa3\xbe\xd4\x18\x86\xc1\xec\xd9\xb3\xc9\x64\x32\ \x28\x8a\xb2\x2b\x93\xc9\x5c\xc3\x71\x5e\xba\xae\xf3\xe4\x93\x4f\ \xf2\xd4\x53\x4f\x91\xcf\xe7\x99\x3c\x79\x32\x9f\xfd\xec\x67\xf9\ \xf4\xa7\x3f\xed\x0f\x4b\xf3\x46\x8d\xc7\xe3\x71\x9f\x36\xff\xfc\ \xe7\x3f\xcf\x7d\xf7\xdd\xe7\x8f\x05\xf4\xc8\x4e\x4f\x9d\xd7\xd5\ \xd5\x91\xcf\xe7\x49\xa5\x52\x34\x36\x36\x32\x3c\x3c\x8c\x65\x59\ \x7d\x8a\xa2\xe4\xff\x2c\x2a\xcb\x5b\xa1\x50\x88\x7b\xee\xb9\x87\ \xfb\xee\xbb\xcf\x8f\x13\x3c\x75\xd3\xdd\xdd\x8d\x10\xc2\x1f\x76\ \xe6\xdd\x6c\x55\x55\x95\x4f\xc5\x7b\x27\x2d\x7b\xb6\xc6\x3b\xef\ \xd0\x8b\x3f\xf6\xec\xd9\x73\x5c\xfb\x00\xdf\xba\x46\x47\x47\x5f\ \x09\x87\xc3\xd5\x63\xf7\xb6\xf2\x1b\xdf\xf8\x46\xe4\xb5\xd7\x5e\ \xf3\xef\xcd\xb3\x61\xe3\x8f\xde\x70\x5d\x97\x55\xab\x56\x31\x75\ \xea\x54\x96\x2d\x5b\xc6\xd3\x4f\x3f\x4d\x75\x75\x35\x5b\xb6\x6c\ \xa1\xb9\xb9\x99\xad\x5b\xb7\xb2\x72\xe5\x4a\x0a\x85\x02\xed\xed\ \xed\x1c\x3c\x78\x90\x68\x34\x4a\x6f\x6f\xef\xe5\xdd\xdd\xdd\xdb\ \x8f\xa4\x0b\xe0\x48\xad\xa5\x36\x73\xe6\xcc\x27\xa3\xd1\x68\x40\ \xd7\xf5\x0b\x4f\x3c\xf1\x44\x42\xa1\x10\xaa\xaa\xb2\x6f\xdf\x3e\ \xbf\x05\x39\x1c\x0e\xfb\xd3\x0d\x42\xa1\x90\x7f\x1c\x50\x26\x93\ \x21\x97\xcb\x4d\xe0\xb9\x82\xc1\x20\x17\x5e\x78\x21\x2f\xbf\xfc\ \x32\xde\xbc\x75\x21\x04\xed\xed\xed\xaf\x0f\x0c\x0c\x9c\x79\x3c\ \xc1\x18\xb3\x47\xfe\xcf\x73\xe7\xce\xdd\x7b\xed\xb5\xd7\xce\xbb\ \xf9\xe6\x9b\xb9\xfc\xf2\xcb\x59\xb6\x6c\x19\x2d\x2d\x2d\x3c\xf9\ \xe4\x93\xbe\x6a\xfd\x87\x7f\xf8\x07\x1e\x79\xe4\x11\x0c\xc3\xe0\ \x86\x1b\x6e\x60\xd3\xa6\x4d\x8c\x8e\x8e\xfa\xae\xb0\xd7\x93\xa2\ \xeb\xba\x7f\x0c\x47\x30\x18\x44\xd7\x75\xba\xbb\xbb\x97\x1d\x3c\ \x78\x70\xcb\x91\xdc\xe3\x91\xf6\x9f\xd9\x5d\x5d\x5d\x97\xb7\xb6\ \xb6\x5e\x17\x0a\x85\x38\xf3\xcc\x33\xf9\xc2\x17\xbe\x40\x34\x1a\ \xa5\xb9\xb9\x99\xa9\x53\xa7\x52\x55\x55\xc5\x8c\x19\x33\xa8\xa9\ \xa9\xa1\xae\xae\x8e\x48\x24\x82\xeb\xba\x7e\xa0\xb5\x72\xe5\x4a\ \x02\x81\x00\x0d\x0d\x0d\xc4\xe3\x71\x82\xc1\x20\xd1\x68\x94\xb1\ \x81\xcd\x6f\x6e\xdf\xbe\xfd\x9f\xb6\x6f\xdf\xfe\x19\xe0\x2b\xc7\ \x5b\x3a\xc6\x83\x31\x26\xa1\xca\x0b\x2f\xbc\xc0\x25\x97\x5c\x82\ \x10\x82\x7b\xee\xb9\xc7\x3f\x9f\x70\xc3\x86\x0d\x18\x86\xc1\x15\ \x57\x5c\x41\x22\x91\x40\xd7\x75\x7e\xf9\xcb\x5f\xd2\xdd\xdd\x4d\ \xa1\x50\xa0\x58\x2c\x4e\x38\x39\xc7\x73\xed\x43\xa1\x90\xf4\xcb\ \x91\x5c\xf7\x88\xdd\xc3\xa3\x3a\x2d\x5a\xd3\xb4\x80\x10\x82\x07\ \x1f\x7c\x90\x87\x1e\x7a\xe8\x0f\xfe\xfd\xe0\xc1\x83\x7f\xd4\x39\ \x78\xab\x1b\xeb\x38\x0e\xbf\xfd\xed\x6f\xbd\x49\x6f\xbb\x72\xb9\ \xdc\x7f\x02\xef\x58\xb6\x7f\x3c\x56\x36\x9b\x95\x9e\x8a\x12\x42\ \xf0\xfc\xf3\xcf\x73\xfa\xe9\xa7\xb3\x63\xc7\x0e\x36\x6c\xd8\x40\ \x7d\x7d\x3d\x0f\x3e\xf8\x20\x0f\x3e\xf8\x20\x77\xdf\x7d\xb7\xef\ \xba\x7b\x41\xaf\x77\xc2\x90\x97\xbe\x1e\x53\x6f\xa2\xad\xad\xed\ \x5c\xc7\x71\xf6\xd4\xd5\xd5\x25\x8e\xf4\x9e\x8e\xca\xc1\x0f\x85\ \x42\xb1\xba\xba\xba\xcf\x85\x42\x21\x17\xb8\x2a\x1c\x0e\x2f\x3e\ \x1c\xbd\xef\x4d\x7a\xf0\xa6\x3c\x7b\x99\x36\xcf\xdf\x4f\xa7\xd3\ \x6b\x7a\x7a\x7a\xde\xcf\x5f\x7e\x45\x16\x2f\x5e\x5c\xf0\xfa\x45\ \x74\x5d\x67\xe9\xd2\xa5\xec\xdb\xb7\xcf\x77\xc9\x0f\xc7\x7d\xf5\ \xf8\xb1\xed\xdb\xb7\xcf\x2d\x14\x0a\xed\x47\x73\x23\xc7\x3c\x38\ \xaa\xb9\xb9\xf9\xe7\x4d\x4d\x4d\xd7\x1e\xce\x5c\x73\x0f\x14\x8f\ \xce\xae\xa9\xa9\xa1\x50\x28\x14\x5b\x5b\x5b\xa3\xe3\xbe\x8f\xfe\ \xfe\xfe\xbf\x34\x20\xc1\x96\x96\x96\x6d\xf1\x78\x5c\xe4\xf3\xf9\ \x48\x63\x63\xe3\x09\x52\x4a\x0a\x85\xc2\x61\x8f\x90\x2d\x14\x0a\ \x98\xa6\x79\x9f\xeb\xba\x56\xb9\x5c\xfe\x8f\xa1\xa1\xa1\xd1\xff\ \x2b\x80\x00\x81\xb1\xef\x09\x86\x42\xa1\xa5\x87\x1b\xd7\x78\x51\ \x7b\x38\x1c\x4e\x64\x32\x99\x5d\xfc\x3f\xb2\x82\xc1\x60\x6d\x38\ \x1c\xfe\x47\xd7\x75\x9d\x23\x60\x08\x64\x20\x10\x48\x9e\x7c\xf2\ \xc9\xff\xf3\xc2\x0b\x2f\x48\xde\x5d\xef\xae\x77\xd7\xbb\xeb\xdd\ \xf5\xee\x7a\x77\xbd\xbb\xde\x5d\xff\x8f\xad\xff\x03\x21\xf6\x70\ \xa0\xc1\x03\x97\x85\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x3a\x79\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x1e\xba\x16\x7f\x4d\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\xed\xbd\x79\x9c\x5c\x55\x99\xff\xff\x3e\x77\xa9\x5b\xd5\xd5\ \xdd\xd5\xdd\xe9\x2d\x49\x77\xd2\x21\x1b\x09\x59\x00\x59\x02\x81\ \x08\x88\x40\x40\x10\x46\x5c\x66\x1c\xc1\x19\x01\xf9\x02\x83\xdf\ \x41\xe7\x0b\xe3\x38\x83\xc8\x57\x04\x74\x5c\x58\x64\x40\x51\x91\ \x4d\x04\xd9\x05\x21\x04\x08\x09\xd9\x43\x3a\x0b\x4d\xd6\x4e\xa7\ \xf7\xa5\xba\xf6\xed\xae\xe7\xf7\xc7\xed\xba\x49\x00\x35\x60\xc0\ \xef\xcc\x8f\xf3\x7a\xd5\xab\xb7\xea\x53\xf7\x9e\xe7\x9c\x67\xf9\ \x3c\x9f\xe7\xb9\xf0\xd1\xf8\x68\x7c\x34\x3e\x1a\x1f\x8d\x8f\xc6\ \x47\xe3\xa3\xf1\xd1\xf8\x68\xfc\x8f\x1f\xe2\x7f\xf2\xcd\x9d\x74\ \xd2\x49\x3b\xa7\x4c\x99\x32\x51\x4a\x89\x00\xa4\xad\x20\x25\xa0\ \x48\x50\x24\x42\xbc\x73\x05\x4a\xa5\x52\x78\xc9\x92\x25\x5f\x4c\ \xa7\xd3\x0f\xff\x35\xae\x59\xfb\x20\x26\xad\xaf\xaf\x5f\x94\xcf\ \xe7\x27\x1d\xf4\xae\x10\x02\xcf\xf3\xa8\xa9\xa9\x79\x6e\x70\x70\ \x30\x71\xa8\xae\x43\x55\xd5\xea\x42\xa1\x10\x01\xd8\x63\x0f\x32\ \xf3\x73\x05\x2a\xa3\x3a\x4e\x4a\xc3\x4b\x87\xf0\x72\xfe\xf7\x6e\ \x4a\xc3\x4d\x86\x00\xf0\x3c\x0f\x29\xa5\xf6\xd7\xda\x44\x1f\xc8\ \x07\xd7\xd5\xd5\xdd\xf5\xd9\xcf\x7e\x76\x36\x80\x27\x3d\xdc\x0a\ \x8b\xb0\xa1\x20\xad\xb1\x97\xad\x80\x1c\xdb\x9d\x63\x3b\xd4\x30\ \x0c\x1e\x7f\xfc\xf1\x63\x81\x43\x26\x10\x29\xa5\xb4\x2c\x0b\x01\ \x8c\xb8\x29\x3e\x16\xa9\x24\x24\xab\x38\xf6\x88\x05\x6c\x1f\x5d\ \x4f\x22\x93\xa4\xae\x2a\x42\x6e\xd8\x66\xf8\x77\x75\x07\x6c\x90\ \xff\x51\x02\xb1\x6d\xdb\x18\x1a\x1a\x02\x60\x67\xbe\x9f\x85\x57\ \x81\xed\xed\xbf\x50\x60\x0f\x86\x28\xee\x8c\x62\xee\x8e\x80\x90\ \x54\x55\x55\x81\x2f\xa6\x43\x36\x5c\xd7\xc5\xb2\x2c\x90\x20\x74\ \xf0\x84\xc3\x45\x33\xbe\xcf\x73\x3d\xb7\x71\xeb\x99\xbf\xe7\x47\ \x4f\xfe\x90\x89\xad\x1e\x4b\x06\x9e\xf1\xdf\x37\x26\x8c\xbf\xa6\ \x40\x94\x0f\x68\x5e\xcf\x34\x4d\x4c\xd3\xc4\x76\x5d\x74\x5d\x21\ \x37\x50\xc5\xb7\x3f\xfe\x5b\xce\x9e\x71\x31\x8a\x13\x61\xdc\xe4\ \x0a\x42\x93\xf3\x98\x25\x0b\xcb\xb2\x30\x4d\xf3\xa0\x17\xa2\xa5\ \xa5\xe5\xe0\x2e\xc2\xf3\xa4\x65\x59\xd8\xb6\x8d\x87\x24\x95\x31\ \x39\xfa\xf0\x23\xe9\x48\xaf\x40\x11\x0a\x9f\x38\xfa\x93\x54\x55\ \xc5\x50\x42\x12\xc7\x71\x30\x4d\x13\xc7\x71\xfe\xaa\x76\x4f\x7b\ \x1f\xea\xe8\xc2\x63\x8e\x39\xe6\x5f\x1c\xc7\xf1\x24\x12\x55\xaa\ \xb8\xb6\xf4\x45\xab\x48\x34\x5d\x75\x3b\x3b\x3b\x5b\x4d\xd3\xf4\ \x77\xa9\xe7\x62\x96\x14\xfe\xed\xcc\x3b\xf8\xe9\xfa\x6b\x38\xab\ \xf9\x1b\x4c\x51\xe2\x9c\x34\xeb\x28\xee\xde\x7e\xab\x2f\x08\x55\ \x12\x0a\x85\x90\xf2\xe0\x0e\x48\x6f\x6f\x2f\x6d\x6d\x6d\xab\x1a\ \x1b\x1b\x29\x1b\x6c\x3c\x05\x89\x24\x95\x4e\xd6\x4d\x39\x6c\xca\ \x0c\x45\x51\x40\x08\xa4\x2b\x11\x86\xcb\xdc\xfc\x14\x72\xbf\x84\ \xd3\x7e\xf6\x71\x2a\x42\xd3\x39\xf9\x8e\x93\xd1\x55\x0d\x81\x46\ \x28\x54\xc3\xce\x9d\x5b\x68\x6d\x6d\x45\x4a\x89\xeb\xba\x53\x43\ \xa1\xd0\x82\xf7\xb2\x2e\x15\x15\x15\x54\x57\x57\xaf\xe9\xee\xee\ \x96\x1f\xaa\x40\x2c\xcb\x9a\x7b\xd8\x61\x87\x1d\x97\x48\xf8\xaa\ \xbe\xaf\xae\x8b\xd9\x0b\x75\xac\x81\x08\xce\x48\x18\x91\x8b\xd0\ \xdd\xa3\x62\xdb\xb6\xbf\x4b\x85\x87\x6b\x4b\x66\xb5\xcd\x40\xd9\ \x03\x45\x3b\x4b\xb6\x98\xe3\xa5\xdd\x0f\xe0\x79\xbe\x4a\x11\xaa\ \x0c\xde\x7f\x90\x23\x5c\x5f\x5f\xbf\x60\xda\xb4\x69\x78\x9e\x47\ \x51\x9a\x68\x87\xa7\xa8\x0c\x87\xe8\x5c\xe1\x31\xae\xba\x1e\xcb\ \x32\xd1\x84\xca\xf6\xf1\x5b\x39\xe1\xec\x4a\x5c\xd7\xc3\x1e\xd1\ \x71\x07\xa3\x58\xc3\x50\x93\x19\x87\x9d\x52\x28\x16\x4a\xa8\xaa\ \x40\xd3\x34\x72\xb9\x1c\xae\xeb\xca\x93\x4e\x3a\xe9\xfa\xda\xda\ \xda\xeb\x01\x1c\xe9\xa2\x57\x79\xe0\x28\x60\x8f\xd9\xbf\xc0\xf6\ \xc9\x40\xcd\xed\xde\xbd\x9b\xb5\x6b\xd7\x46\x80\xd2\x87\x6e\x43\ \x4a\xa5\x12\xa6\x69\x92\x73\x4b\x44\x8e\x2d\xa2\x56\x2b\x44\xaa\ \x73\x30\x33\x87\x66\x08\xc4\x5a\x27\xd0\xc9\x9e\xe6\xa1\xaa\x2a\ \xa9\x5c\x1a\x45\x51\x51\x15\x1d\xdb\x33\xa9\xd2\x2b\xf1\x24\x58\ \xa6\x89\xd0\x08\xde\x7f\xb0\x8e\x99\xe7\x79\x94\x4a\x25\xf0\x24\ \x9d\x7a\x37\x0b\x8f\xd6\x81\x22\x46\x3c\x83\xbd\xc7\xc2\xb2\x2d\ \x3c\x54\x8c\x98\xc4\x35\x05\xf5\xea\x6c\x1a\x67\xd6\xd0\x51\xb3\ \x8a\x8a\xd9\x2a\x20\xd8\xf4\x23\x9b\xa9\x2d\x87\x53\x55\x55\x45\ \x6b\x6b\x2b\x00\x83\x83\x83\xa2\xac\x42\x55\x14\x76\x36\x6e\x63\ \xc1\xd9\x51\xbc\x31\x1b\xe8\x59\x02\x7b\xd0\xc0\xea\x89\x60\x76\ \x85\xc1\xf5\xb5\xbe\xae\xeb\x78\x9e\xf7\xe1\xdb\x10\x21\x04\x96\ \xe5\xeb\x7d\xc7\x71\x50\x55\x05\x37\x5d\xcf\x4d\xa7\x3f\xc3\x95\ \x47\xfd\x17\x7a\xb1\x85\xd6\xd8\xd4\xe0\x3d\x9e\xe7\x11\x8d\x86\ \xb8\xe5\xf1\xef\xf2\x37\xd3\xaf\x61\x7c\x53\x2d\x49\xaf\x93\x73\ \x66\x5c\x82\x22\xf7\xcd\xf5\x1e\x4f\x08\x52\xca\x31\xdb\x63\x21\ \x3d\xdf\x65\x3b\xa7\xf5\x1b\x2c\x9e\xf6\x0f\x98\xb6\x3f\xa7\x65\ \x9a\xa8\xaa\x82\x9a\x6f\xe2\xfa\xb3\xfe\x0b\x37\x3e\x81\x93\x9b\ \xbe\xcc\x37\x4f\x7a\x88\x90\x6a\x50\x32\x4b\x64\x32\x19\x86\x86\ \x86\x18\x1a\x1a\x62\x53\xec\x75\xe4\xc2\x1d\x38\xa6\x87\x69\x9a\ \x58\xa6\x85\xa2\x4b\x1c\xc7\x65\x6e\xf4\x5c\xbe\x76\xe2\x8f\x89\ \x44\x42\xd4\xb4\x54\x52\x7d\x52\x12\xcf\xf0\x37\x66\xf9\x3e\xff\ \x6a\x46\xbd\xbc\x83\x2c\xcb\x42\x08\x98\xa0\x1e\xc5\x8a\x9e\x27\ \xf9\xed\xf2\xdf\xf0\xa5\x23\xbf\x89\xeb\x3a\xa4\xd3\x69\x52\xa9\ \x14\xf9\x42\x1e\xc7\xb3\x49\xd6\x2e\x63\xeb\xee\xdd\xf4\xe4\x36\ \x43\x6d\x3f\x3f\x5a\x7b\x39\xe9\x64\x8e\x54\x3a\x4d\x3a\x9d\x26\ \x93\xc9\x20\x84\xf8\xb3\xc7\x64\xfc\xf8\xf1\x41\xbc\xe0\x0b\xd2\ \x02\x21\xd1\xc3\x1a\x9f\x9c\x73\x3e\xab\x07\x9f\x41\x7a\xbe\x0a\ \xb4\x6c\x1b\x3d\xac\x23\xac\x18\xbd\xc5\x1d\xb4\xf7\xaf\xe0\xb0\ \xfa\x79\x34\xd5\x34\xa1\x0a\x1d\xd7\x75\x71\x1c\x27\xd8\x14\x91\ \x2a\x81\xaa\x8a\xe0\xf7\xb6\x6d\x23\x74\x41\x85\xde\xc0\x95\x9f\ \xf8\x26\x3f\x7c\xf6\x07\x5c\x7a\xec\xad\x5c\xb3\xe8\x1e\xda\x1a\ \x67\xe0\xb8\x0e\x8e\xe3\xbf\x3c\xcf\x43\x51\x94\x0f\xdf\xa8\x97\ \x4f\x88\x6d\xdb\x38\xd8\x08\xa1\x10\xd6\x23\xb8\x9e\x8d\x2b\x5d\ \x92\xc5\x61\x14\x45\x0b\xbc\x15\xd7\x71\x91\x8a\x87\x6b\x49\x9e\ \xeb\xba\x85\xd2\x56\x97\xe2\x80\x20\xdf\xa5\x31\xb4\xb1\x88\x11\ \xd1\x41\x82\x65\xda\x54\x46\xab\x6e\x9e\x3b\x67\xee\xe8\x1f\xc3\ \x0f\x52\xa9\xd4\xeb\x3d\x3d\x3d\x77\x97\x05\x32\x38\x38\xe8\x7b\ \x66\xa3\x2e\xab\x6f\xca\x70\xfe\x0f\xcf\x63\x30\x91\x43\x9a\x05\ \x24\x1e\x02\x81\x7c\xda\x65\xad\xda\xc1\xe5\x8f\x5c\xc3\x68\x36\ \xc1\xe5\x77\x5f\xc1\x9a\x37\x5e\xc3\x74\x8b\xbe\x5d\xd9\xef\x64\ \x6a\x86\xc2\xf6\x9f\xbb\x54\xc7\x72\x60\xfa\x66\x42\x5f\x51\xc5\ \xea\x57\x93\xcc\xbd\x76\x1e\xd5\x91\x18\x5f\xfa\xd1\x57\x71\xa5\ \x8b\xa1\x46\xd0\x23\x1a\x42\xf8\x1b\x54\x55\xd5\x43\xe2\x2e\x6b\ \xef\xf7\x84\x58\x96\x85\x2d\x1c\x34\x45\x63\x30\xbf\x97\x33\x62\ \x0b\xe8\x89\x99\x24\x0a\x7e\xfc\xa1\x69\xfe\xd4\x75\x05\x95\xa5\ \xd7\x8d\x62\x67\x64\x10\x04\xda\xb6\xcd\xa2\x45\x8b\x68\x98\x6d\ \xa2\x0a\x85\x4e\x6d\x2f\x47\x2c\xd2\xb1\xfb\x2a\xce\xb6\x07\x22\ \xc8\x74\xe8\x5d\x41\x9d\x2d\x5b\xb6\x00\xdc\x5d\x56\x59\x93\x27\ \x4f\x26\x12\x89\x20\x84\xa0\xcf\x19\xa1\xee\xfc\x21\x26\xca\x2a\ \x9c\xfe\x0a\xac\xde\x0a\xdc\x78\x08\xe4\xbe\x89\x6a\xaa\xc6\xb1\ \x77\xef\x5e\x22\x54\x51\x1b\x6e\xc4\x73\x07\x71\x1c\x27\xf0\xee\ \xd4\x9c\x47\x7d\x63\x3d\xe3\xea\xc6\xa1\x28\x0a\x3b\x0b\xfd\xcc\ \xfc\x5c\x91\x58\x4c\xc7\x4d\xc7\xb0\x7a\x23\x38\x83\x35\x58\xfd\ \x61\x14\x45\x04\xaa\x13\xa0\xbb\xbb\xfb\xaf\x2b\x90\x52\xa9\x84\ \xad\x49\xa4\x0c\x63\xd7\x6c\x27\x31\xec\x70\xd2\xc7\x8e\xe4\x57\ \x9b\x6e\xa0\x2f\xd9\xc7\x59\x67\x9d\xc5\xa5\x97\x5e\xca\xf2\xe5\ \xcb\x69\x6f\x6f\x67\x68\x68\x08\xd7\x75\x71\x5d\x97\x81\x81\x01\ \xca\x71\x4a\xca\x29\x10\x3d\x39\x4b\xa8\x39\x8a\xd7\x90\x44\x3b\ \x4a\x10\x12\x15\x38\x25\x0f\x55\x68\x0c\x3d\xd0\xe8\x63\x4f\xfb\ \xdd\x7c\xf9\xfb\x72\xec\xa0\x08\x85\x2d\xd6\x1e\xe6\xd5\x36\x53\ \xb2\x0a\xd4\xcc\x0b\x51\x98\xdd\x0b\x48\x84\x13\x22\xbd\xaa\x9a\ \xe2\x8e\x30\x00\x21\x11\xe6\xba\x57\xcf\x23\x5b\xca\x60\xd9\x56\ \xa0\x72\x00\x2a\x84\x82\x3b\x36\xa7\x10\x82\xbe\xd2\x28\x27\x37\ \xd6\x51\x2c\xba\x1c\x39\xe3\x38\xb6\xd6\xac\x40\xce\x75\x11\xa8\ \xe4\x36\x45\xc9\xac\xa9\x02\x21\x51\x14\x05\xcf\xf3\x3e\x78\x81\ \x8c\x1f\x3f\x9e\x81\x81\x81\x03\x8d\x8e\xa2\x38\xc9\x64\x92\x54\ \x2a\x85\xad\x79\x94\xac\x18\x8e\x90\xdc\xf5\xc6\xd7\xf9\xc6\x19\ \x37\x23\xc3\x26\x96\x5b\xe0\xfa\xeb\xaf\x67\xd9\xb2\x65\x7c\xfe\ \xf3\x9f\x47\xd7\x75\x22\x91\x08\x3b\x76\xec\xa0\xb2\xb2\x92\xf6\ \xf6\x76\x5f\xa0\xb6\x8d\xed\xda\x18\x9a\x4a\x6a\x48\xe5\x07\x17\ \x3e\xcd\x60\x7a\x80\xfb\x36\x5d\xcf\xe2\x79\x7f\xc3\xf3\x5d\xf7\ \x8e\xb9\xc5\xbc\x43\x20\x65\xe1\x5a\x96\x85\x22\x04\x8a\xa2\x60\ \xd9\x36\x5f\x3d\xfc\x67\x64\x44\x17\x9a\xe1\x91\x1c\x75\x58\x91\ \xf8\x39\x49\x7c\x7b\x20\xa5\xc4\x93\x1e\xdd\xdb\x06\x48\xec\xb4\ \xc9\xc6\x4b\x38\xd5\xfb\x3c\xc2\xa8\x50\x02\x35\x26\x84\x00\x01\ \x25\xd3\xe4\x82\xe6\xef\x31\xaa\xb7\x73\xcd\x82\x7b\x78\x65\xf3\ \xcb\x64\x22\x1d\xb4\xb3\x0b\xdb\xb6\x90\x48\x34\x4d\xc3\xb6\x6d\ \x54\x55\x7d\xcf\xce\xc9\x7b\x12\xc8\xc0\xc0\x00\x6d\x6d\x6d\xff\ \xbb\xba\xba\xfa\x68\x3f\x00\x13\x8c\x26\x46\xe7\xab\xaa\x8a\xa2\ \x28\xe8\x52\xc1\xc9\x48\x72\x03\x2e\x76\x9f\xe0\xeb\xff\xf2\xcf\ \xa4\x77\x49\x4a\xa3\x82\xaf\x7c\xe5\x2b\x7c\xfb\xdb\xdf\xe6\x57\ \xbf\xfa\x15\xdb\xb7\x6f\x47\x4a\x49\x22\x91\x20\x16\x8b\xd1\xd9\ \xd9\x49\x7d\x7d\xbd\x1f\x19\x4b\x1b\x01\x1c\x1e\x5e\xcc\x9a\xc1\ \xa7\xd9\xd3\x35\xca\x39\xe3\xff\x0f\x0b\x0f\x3b\x96\x35\x43\xcf\ \xb2\xd3\x2c\xbd\xab\x40\xca\x27\xc4\x71\x1c\x14\x04\x4a\xa5\xa0\ \x73\x67\x96\x23\xcf\x9b\xcd\x65\xbf\xbd\x9c\xfb\xfe\x76\x1d\xc3\ \x75\x23\x78\x03\x23\x3c\xe4\xfc\x0e\xd3\x1c\xfb\x7f\xcd\x63\xe5\ \x77\x53\xa8\xba\x40\x11\x0a\xc5\x62\x91\x62\xb1\x08\x40\x95\x1b\ \xc2\x75\x55\xff\xd4\x29\x0a\x42\x48\x46\x86\x4a\x9c\xfd\xe9\x4f\ \x72\xe5\xd3\x37\x70\xe6\xd4\x8b\x99\xde\x30\x8f\x94\x6e\xb0\xc1\ \xdd\x8e\x69\xfa\x0e\x85\x94\xfe\xeb\x43\x31\xea\xe3\xc6\x8d\xfb\ \xc2\xb4\x69\xd3\x8e\x07\x70\xa5\xc7\xfa\x3d\x6f\xa0\x0a\x95\x89\ \x13\x27\x62\xdb\x36\xe9\x67\x2d\x52\xd2\x43\x4a\x81\x94\x61\x34\ \x40\xd3\x2d\xfa\xfa\xfa\xb8\xf4\xd2\x4b\xdf\x75\xce\x5c\x2e\x47\ \x2c\x16\xf3\x5d\x67\xe1\x20\x84\x42\xa5\x51\x83\xe5\x16\x71\x3d\ \x97\xba\x86\x10\x5d\xa9\xad\x64\xac\x04\x96\xa5\xa1\x68\xe2\x1d\ \x02\x51\x14\x25\x38\x25\x02\x81\xa2\xa8\xb8\x2e\x68\xaa\x8a\x10\ \xfe\xc2\x38\x8e\xc3\xea\x9e\xdf\xe3\xb9\x2e\x96\xe5\x05\xae\xf2\ \x9c\xf9\xb3\xe9\xe8\xe8\x20\x16\x8b\x05\xaa\x13\xc0\xf1\x94\x7d\ \xa7\x4e\x51\xc0\xd8\x87\x7e\x0a\x45\x41\x08\x41\xb6\x94\x65\xc3\ \xc8\x92\x60\x2e\xc4\xbe\xe0\xf0\x60\x91\x86\xbf\x48\x20\x9e\xe7\ \x09\xd3\x34\x91\x52\xf2\x96\xd9\x4b\xed\x14\x97\xe3\x9a\x8e\xe7\ \x9c\x73\xce\xe6\xe4\x93\x4f\xe6\xa7\x3f\xfd\x29\x5b\xb7\x6e\x65\ \xfe\xfc\xf9\xac\x5c\xb9\x92\x99\x33\x67\xb2\x66\xcd\x1a\xe2\xf1\ \x38\xe1\x70\x98\x7c\x3e\x1f\xec\x9c\x8c\x52\x62\xfc\x1c\x85\xfa\ \xc4\x54\x8a\xd9\x9c\xef\x18\x28\x0e\x8a\xa2\x32\x9c\xeb\x61\x7e\ \x74\x2e\x03\xc2\x64\xb4\xd0\xcf\x84\xc8\x44\x84\x14\x58\xa6\x85\ \x70\xdf\x79\x42\xf6\x07\x0f\x05\x02\x01\x34\x35\x45\xc8\x65\x1c\ \xa4\xeb\xab\x26\x17\x9b\xb0\x52\x85\xeb\x66\x30\x4d\xb7\x0c\x8b\ \x80\x84\x49\x93\x26\xa1\x69\x1a\xae\xeb\x06\xf3\x2a\x1b\x24\x39\ \x27\x03\x58\xbe\xca\x0a\x43\x7d\x7d\x84\xcd\x3b\x77\x20\x2d\x1d\ \x45\x51\x48\x17\xe3\x1c\x56\x7d\x34\x3b\xdc\x17\xb0\x2c\x5f\x65\ \x95\x6d\xc7\x87\x22\x10\x29\xe5\x3e\xfd\xeb\xf9\xae\xa4\x10\x82\ \x9a\x9a\x1a\x22\x91\x48\xe0\x7f\x87\x42\x21\x8e\x3a\xea\x28\xf6\ \xee\xdd\xcb\xd1\x47\x1f\xcd\xba\x75\xeb\x30\x0c\x83\x9a\x9a\x1a\ \xd2\xe9\x34\x42\x08\x52\x86\xc7\xb4\x4f\x45\x08\xaf\x9e\xc6\x96\ \xd5\xeb\x7c\xf0\x51\xf7\x50\x44\x98\x41\x63\x39\x13\xf5\x8b\x68\ \x9a\x3f\x9d\x7b\xd6\xff\x1b\xe7\x86\xfe\x91\xaa\x70\x2d\x25\xab\ \x0f\xe5\x5d\x04\x22\x84\x1f\x2f\x94\x4a\x25\x94\x31\x2c\x63\xc2\ \xc4\x6a\x7e\xf2\xca\xb7\xb8\xeb\xc2\x65\xdc\xf4\xda\xc5\x48\x33\ \x42\x63\x4d\x33\xb6\xd3\x45\xa9\x64\xf9\xaa\xc5\x15\x8c\x3f\x5d\ \x62\x0e\x55\xe1\x66\x75\x9c\xa4\x06\xb6\x82\x50\xfd\x13\x35\xe2\ \x24\x82\x13\xe2\x54\xba\x54\x55\x86\xb9\x73\xdd\xff\xe6\xa7\x9f\ \x5b\xca\x7f\x6d\xb8\x86\x1d\x99\x0e\x5a\xf4\x56\x6c\xd7\x22\x9f\ \x2f\x80\xf0\x05\xa2\x28\xca\x87\x76\x42\x28\x9f\x10\x4f\x78\x28\ \x42\xa1\xbd\xbd\x9d\xd1\xd1\x38\xc3\xc3\xc3\x14\x0a\x05\x00\x3a\ \x3a\x3a\x02\x5d\xea\xba\x6e\xb0\x6b\x4a\xa5\x12\x86\x61\xf8\x49\ \x28\xdd\xa3\xc2\x30\xd8\x34\xf4\x3a\x89\x44\x8e\x62\xb1\x88\x19\ \x92\x14\xad\x18\x46\x34\xc2\xb5\xbf\xbb\x98\xbb\xbf\xf2\x5b\x32\ \xde\x20\x8f\x75\xfc\x88\x52\xca\x63\x74\x64\x14\xcd\x50\xca\x6a\ \xca\xdb\x5f\x20\xc5\x62\x91\x54\x2a\x85\x40\x50\x30\x25\x25\xcb\ \xa4\xcb\x7b\x85\x5f\x2f\xbf\x87\x86\xda\x09\xac\x8b\x2f\xc5\x4b\ \x08\xba\x37\x26\xc9\xa7\x7d\xf7\x56\xc3\xa0\x75\x41\x05\xfd\xf1\ \xbd\xfe\x42\x86\x24\x89\x57\x63\x14\x3b\xa2\x41\x90\x58\x2c\x16\ \xfd\xf9\xab\x3c\x2c\xd7\x82\xaa\x38\x5f\xfb\xed\xe7\x39\x72\xc6\ \x0c\x52\xb9\x61\x92\xf1\x38\x3b\x96\x24\xc9\xe7\xfd\x39\x85\x10\ \x18\x86\xf1\xe1\xa0\xbd\xe5\x88\x18\x40\xea\x12\x90\xd4\x8f\x1b\ \x47\x3c\x1e\x47\x51\x14\x2a\x2b\x2b\xff\x64\x10\xd9\xdf\xdf\x4f\ \x32\x99\x44\x51\x14\x72\xc2\xa1\x64\x57\x10\xad\xcf\x93\x56\x55\ \x54\x55\x45\x43\x82\x10\x08\x45\x50\x69\x48\x2e\xfa\xe6\xa7\x19\ \xed\xb0\x49\xed\x2e\x20\x14\x81\x51\xa1\x07\xf3\x19\x86\x71\xf1\ \x84\x09\x13\xf6\xf4\xf7\xf7\xdf\x2a\x84\x40\x1d\x9b\x43\x11\x0a\ \x46\xc1\x45\xba\x92\x64\x07\x3c\xbc\xfd\x1e\x86\x37\x5b\x98\x69\ \x17\x31\x16\x2f\x68\x9a\xe6\x67\x03\x3d\x97\xd3\x26\xfc\x23\x62\ \xa2\x43\x7a\x58\xf0\x4a\xf2\x36\x46\x6c\x5f\xf5\xb9\xae\x8b\xa2\ \x28\x68\x9a\x86\xa2\x28\x44\xd3\x2e\xe9\x5e\x87\xfe\x0d\x26\x89\ \x1d\x9b\x78\x7e\xef\xfa\xfd\x5c\x5b\x81\xae\xeb\x48\x29\x83\xa0\ \xf0\x50\x9c\x10\xf5\xcf\xbd\xa1\xa1\xa1\xe1\x52\x55\x55\x27\xba\ \xae\x4b\x56\xb5\x98\xff\xe9\x28\x67\x1c\xfd\x0f\x94\x66\x6c\xe2\ \xb2\xcf\x5c\x87\xd1\xa2\x30\xfe\x38\x41\x32\xba\x87\xee\x35\x19\ \xf2\x85\x3c\x85\x42\x81\x81\x81\x01\x2b\x9b\xcd\x5a\xb6\x6d\xab\ \x8e\xe3\x08\x29\x25\xc5\x88\xc7\xec\x8f\x57\x92\xed\xb5\x29\xec\ \xd1\x88\x44\x22\x18\x42\xa3\xd8\x01\x5d\x2f\x9a\x0c\xac\xb4\xc9\ \x74\x4a\x9c\xac\x8f\xbe\xaa\xaa\x5a\x4e\xc5\x22\x84\x60\xe2\xc4\ \x89\x24\x12\x89\x64\x38\x1c\x56\x33\x99\xcc\xce\x58\x2c\x76\x7c\ \xb1\x58\x54\x9a\x9b\x9b\x09\x25\x25\x7b\x5f\xb2\x19\xdd\xec\x52\ \xe8\x07\x5c\x05\x4d\x53\xc7\xbc\x25\x7f\x3e\x21\x04\x9a\x30\xc8\ \x1f\xdd\xce\xff\x3a\xf6\x7b\x44\x8d\x2a\x06\x0a\xbb\xd9\xbd\xb9\ \x97\x5c\x9f\x87\xe3\x38\x14\x0a\x05\xc6\x8f\x1f\xcf\x55\x57\x5d\ \x45\xba\x6f\x84\xe4\x46\x0d\x67\x28\x44\xc8\xad\x20\x52\x11\xa1\ \xa2\xa2\x02\x45\x51\x08\x87\xc3\x01\xa0\x68\x18\x06\xf1\x78\xfc\ \x51\x55\x55\x1f\x2b\x14\x0a\xde\x07\x2e\x10\x60\xa2\xe7\x79\xe4\ \x0d\x87\x39\xa7\x56\x93\x74\x07\xb9\xee\x9c\x3b\x18\x12\x6f\xb1\ \x31\xf5\x02\x0b\xe7\x9c\xca\x9e\xc4\x56\x06\xd6\xfa\xd8\x96\xa2\ \x28\x4c\x9f\x32\x53\x9d\x75\xf8\x6c\x3d\x91\x4a\x88\x52\xa9\x44\ \xa9\x54\xa2\xca\x32\xc8\x74\xb9\xf4\xaf\xcb\x33\x67\xd6\x3c\x6e\ \xbd\xf5\x56\xae\xb8\xe2\x0a\xf6\xee\xe9\x26\x16\x8b\xb1\x60\xc1\ \xf1\x84\x42\x21\xe6\xcc\x99\xc3\xcc\x99\x33\x31\x4d\x93\x29\x53\ \xa6\x30\x69\xd2\x24\xe2\xf1\x38\x91\x48\x84\xda\x58\xdd\x2c\x4f\ \xba\x17\xcc\x99\x33\x67\x61\x32\x99\x54\xee\xbe\xfb\x6e\x2e\xbf\ \xfc\x72\x6a\x6a\x6b\xd1\x43\x3a\xf3\xe6\xcf\xa3\xb2\xaa\x92\xb9\ \x73\xe7\x00\x30\x6f\xde\x3c\xa6\x4d\x9b\x86\x94\x92\x48\x24\x42\ \x3e\x5b\x64\xea\xe2\x6a\xce\x9e\x71\x31\xd9\x42\x8e\xe7\x3a\xef\ \x22\xb1\xdd\x09\x04\x52\x2c\x16\x79\xf9\xe5\x97\x91\x52\x72\xd2\ \xc9\x27\x91\x2f\xe4\x99\x35\x7b\x16\x55\x55\x55\xcc\x9b\x37\x0f\ \x80\x73\xce\x39\x87\xe9\xd3\xa7\x07\x73\x16\x8b\x45\xb6\x6d\xdb\ \x36\xe7\x2f\x15\xc6\x41\x81\x8b\x8e\xe3\x30\x3a\x3a\xca\xe8\xe8\ \x28\xe9\x4c\x86\xa2\x55\xa4\x10\xd9\xc5\xf7\x9f\xfa\x2e\x9a\xae\ \x90\x55\xba\x79\xea\xad\xbb\xe9\xeb\x48\x92\x4c\x26\x48\x24\x12\ \xa4\x53\x19\xd4\xd3\x76\x23\x3e\xbe\x1d\x19\x29\x71\xc2\x09\x27\ \xb0\x7e\xfd\x7a\x3e\x76\xcc\xd1\xc4\xec\xf1\x54\x68\xd5\x4c\x99\ \x32\x85\x64\x32\x49\x73\x73\x33\xe3\xc7\x8f\xa7\xb6\xb6\x96\xa9\ \x53\xa7\x32\x7d\xfa\x74\x14\x45\x61\xf2\xe4\xc9\x68\x9a\x46\x38\ \x1c\xa6\xb1\xb1\x31\xd8\x8d\xea\xcc\x38\x42\x11\x54\x54\x54\xe0\ \x79\x1e\x8d\x8d\x8d\xc4\xe3\x71\x26\x4d\x9a\x84\xeb\xba\x4c\x98\ \x30\x81\x86\x86\x06\x66\xce\x9c\x19\xc0\x34\x75\x75\x75\x9c\x7e\ \xfa\xe9\x14\x0a\x05\x54\x45\xa1\x52\xaf\xc5\x76\x4d\x2c\xcf\xa4\ \xda\x68\x08\xbc\xb5\xb2\xda\xea\xea\xea\xc2\x75\x5d\x86\x87\x87\ \xf1\x3c\x8f\xda\xda\x5a\xf2\xf9\x3c\x9a\xa6\x91\x4c\x26\xe9\xeb\ \xeb\xc3\x71\x1c\x9a\x9b\x9b\x29\x95\x4a\xc1\x49\xfe\x50\x68\x40\ \x33\x67\xce\x5c\x63\x9a\xe6\x71\x8a\xa2\x90\xaa\x74\xf8\xd4\x37\ \x1b\x31\x0c\x41\x6a\xb7\xc3\xf0\x16\x93\xf8\x5b\x16\xf9\x61\xf7\ \x00\x6c\x47\x55\x35\xce\xb9\xe2\x54\xf4\x79\x7b\x78\xf1\x3b\x7b\ \xf8\xc9\x0d\x3f\x23\x9d\x4e\x73\xef\xbd\xf7\x52\x53\x53\x43\x67\ \x67\x27\xae\xeb\x72\xec\xb1\xc7\x92\x4c\x26\xe9\xef\xef\x0f\x9c\ \x01\xcf\xf3\xde\xf1\x2a\xbb\xa6\x95\x95\x95\x0c\x65\x7a\x50\x4c\ \x83\x19\x33\x66\x32\x3c\x3c\x4c\x65\x65\x25\x0b\x16\x2c\x60\xcd\ \x9a\x35\x7f\xf6\xff\x1d\xc7\x21\x97\xcb\xb1\x6b\xd7\x2e\xae\x7f\ \xf9\x73\x14\xf3\x50\x5d\xa3\xb1\xf2\x81\xdd\x0c\xac\xdd\x67\x43\ \xde\x4b\x5e\xbd\x7c\x4a\x56\xad\x5a\x25\x3e\x14\xa3\x5e\x1e\xcd\ \xcd\xcd\x18\x89\x24\x1b\x6f\x2e\xe2\x94\xe4\x18\x6b\x44\x22\xd1\ \x30\x0c\x35\xb8\x38\xcf\xf3\x50\x04\x7c\xe6\xd8\xbf\x27\xde\xb4\ \x89\x57\x42\x77\xf2\xfd\xef\x7f\x9f\x6f\x7e\xf3\x9b\x64\x32\x19\ \x22\x91\x08\xb6\x6d\x53\x55\x55\x45\x7b\x7b\xbb\x7f\xf3\x08\x3c\ \x57\xe2\x49\x17\x21\x14\xdf\xb0\x2a\x1a\x9e\x94\x28\x42\x09\x22\ \x75\xcb\xb2\x68\xaa\x6e\x65\x64\x64\xc4\x8f\x01\xa4\xc4\xb1\x1d\ \x96\xbd\xf2\x1a\xae\x74\xd0\x14\x1d\x4f\xfa\x71\x8d\x82\x8a\x16\ \xd2\x82\x6d\x27\x3c\x81\xeb\x4a\x9c\xa2\xc7\xcf\x97\xdf\x49\x63\ \xb4\x85\xcd\x85\xe5\x14\x6d\x95\x3d\x6f\xc4\x29\x26\xfd\x20\x33\ \x1c\x36\xd0\x09\x53\x74\xf2\x44\x42\x11\x2c\xdb\xf6\x6d\x11\x3a\ \x8a\x2e\x0f\xd8\xc2\x41\x7c\x95\xc9\x7c\x78\x39\x75\xdb\xb6\xb9\ \xfa\xea\xab\x59\xb4\x68\x11\x8e\xe3\xf0\xe8\xa3\x8f\x92\xc9\x64\ \x82\xa0\xaf\x50\x28\x30\x7d\xfa\x74\xde\x7c\xf3\x4d\x12\x89\x04\ \xf5\xf5\xf5\x6c\xdd\xba\x15\x4d\xd5\x58\xd3\xf3\x1c\x21\xcd\x20\ \x97\xcb\xf1\xf5\xaf\x7f\x9d\x42\xa1\x40\x4d\x4d\x0d\xd1\x68\x94\ \xad\x5b\xb7\xd2\xd8\xd8\xe8\xab\x0b\xc5\x65\xce\xe7\x22\x1c\x3b\ \xee\x42\xcc\x70\x1f\xa9\xbe\x30\xeb\x7b\x5e\xe5\xf4\x63\x4e\x66\ \xdd\x8e\x57\xd9\xf3\x8c\x83\xa2\x41\x43\x43\x03\xc5\x62\x31\xf0\ \xfc\x5c\xc7\xa1\xdb\xeb\x67\xde\x19\x95\x5c\x71\xc2\xcd\xfc\x62\ \xe3\xb7\x38\xa5\xf1\x32\x56\xed\x7a\x95\x7c\xc5\x36\xb6\x3c\x90\ \x21\x9f\x2d\x20\x10\xe4\xc6\x79\x2c\x38\x3b\x86\x18\xf6\x78\xfc\ \xf9\x9f\x92\xee\x76\x31\x47\x20\xdb\xe7\x60\xe7\xf7\x79\x4a\x9e\ \xa5\x70\xfa\x1d\x2d\xfc\xe8\xec\xdf\xf3\x99\xff\xfc\x24\xff\xf2\ \xe9\x7f\x47\x91\x21\x36\x24\x7f\xc7\x0b\xff\xf5\x06\xa5\x3e\x3d\ \x10\xca\x4b\x2f\xbd\xd4\x0c\x0c\x1f\x4a\xb6\xcc\x41\xb9\xbd\x93\ \x27\x4f\xa6\x58\x2c\x32\x73\xe6\x4c\x14\x45\x61\xda\xb4\x69\x54\ \x56\x56\x52\x55\x55\xc5\x53\x4f\x3d\x15\x18\xe2\x4c\x26\xc3\xc6\ \x8d\x1b\x09\x85\x42\x08\x04\xba\x88\x50\x74\xf2\xec\xdd\x35\xe2\ \xbb\x91\xd1\x68\x80\x13\x95\xed\x83\x6d\xdb\x48\xcd\x63\xe2\x91\ \xd5\xbc\x35\xf8\x2a\x3f\xb8\xe0\x01\x4c\x25\xc5\x7f\x3c\xbb\x86\ \xc5\x27\x9f\x4d\x9f\xda\x4e\xef\xf3\x69\xd4\x90\x4f\xa6\x2b\xc3\ \xe5\x96\x65\x11\x0e\x47\x30\xea\x1c\x5a\xe6\xd7\x70\xc6\x19\x67\ \xb0\x54\xf9\x21\xc7\xb7\x9e\xc8\x50\xa4\x8b\xe1\xe8\x5e\xba\xaa\ \x3c\x0c\x3d\x4c\x43\x43\x03\xc3\x83\x43\x74\x3d\x06\x42\x11\xc4\ \x55\x90\x63\xe6\x53\x78\x1a\x46\x58\x04\x2a\x53\x95\x1a\x8a\x5d\ \x85\xc4\x25\x4b\x2f\x4d\x35\xcd\x3c\xbf\xfa\x55\x76\x2a\x1b\xf1\ \xc6\xd4\x1e\xc2\xf7\xfc\xaa\xaa\xaa\xc8\x66\xb3\x87\x94\xba\xf4\ \x67\x05\x12\x89\x44\xb8\xe9\xa6\x9b\x38\xf7\xdc\x73\xf9\xde\xf7\ \xbe\x47\xa9\x54\x0a\x74\x72\x59\x3f\xf7\xf6\xf6\x1e\x60\x03\x14\ \xa1\xb0\xec\xad\xa5\xcc\x3d\xfe\x44\xd6\xb6\x75\xe3\x0c\x86\x89\ \x46\xa3\xa4\xd3\xe9\x03\xd2\xb5\x89\x44\xc2\x0f\xc6\x42\x12\xcb\ \x0d\x53\xd1\x58\xe2\x7b\x7f\xb8\x86\x1b\x3f\xf3\x13\x8c\x4a\x87\ \x5f\x6e\xfc\x0f\xe2\x03\x26\xa9\x74\x12\x45\x13\xd8\xb6\x1d\xc4\ \x13\x65\xbe\x95\x94\xe0\x78\x26\xb9\x62\x0e\x2b\x6b\xa0\x1a\x16\ \xaa\xaa\x53\x1f\x6a\xa3\x64\x6e\xe0\xb6\x1f\xdf\x41\x7d\x7d\x3d\ \xab\x56\xad\x62\xe3\xc6\x8d\x84\xc3\x61\x7a\x7a\x7a\x68\x6c\x6c\ \xa4\xab\xab\x8b\xd9\xb3\x67\x63\x59\x16\x1b\x36\x6c\xa0\xa2\xa2\ \x82\xbe\xae\x01\x14\x0d\x54\x55\xc7\x71\x05\xae\x74\x89\xe8\x61\ \xa4\xe7\xe1\xd8\x0e\xa6\xe5\x93\x1b\xca\xc1\xee\x87\x4e\x03\x72\ \x5d\x57\xaf\xac\xac\x64\xe9\xd2\xa5\xc1\x05\x94\x8d\x5e\x39\x30\ \x13\x12\xf6\x4f\x29\x3b\xb6\xc7\xda\xc4\x23\x74\xf7\x45\x48\x0d\ \x65\x49\xa7\x0b\x54\x55\x55\x51\x57\x57\x17\x08\xa4\x1c\x50\x79\ \x9e\x87\x82\x44\x0b\x0b\x8a\x09\x97\xc1\x9d\x5b\x39\xeb\xcb\x27\ \x91\xeb\xf5\xb0\xf3\x12\x2b\xe3\xa2\x85\xf6\xc5\x23\xe5\xcd\x50\ \x2a\x95\x90\x9e\xc4\x71\x3c\x22\x51\x95\x6b\x9f\xfd\x2c\x37\x9e\ \xf9\x30\xbf\xd8\x72\x1d\x83\xfa\x4e\x1a\xf4\x06\xa4\x84\x71\xe3\ \xc6\x91\xcd\x66\x69\x6d\x6d\x65\xdd\xba\x75\xcc\x9f\x3f\x1f\xcf\ \xf3\x98\x3d\x7b\x36\x43\x43\x43\xe4\xf3\x79\xda\xda\xda\x98\x35\ \x6b\x16\x0f\x3c\xf0\x00\x42\x51\x70\x34\x3f\xfa\xff\xdb\xa3\xff\ \x89\xbc\xec\x47\xa2\x72\xc6\x94\x7f\x60\xab\x73\x27\xd6\x98\x40\ \x0e\x55\x86\xf0\x3d\x7b\x59\x55\x55\x55\x0b\x3c\xcf\xab\x79\x9b\ \x67\x51\xdb\xda\xda\xfa\x50\x2e\x97\x43\x48\x70\xa7\x08\x8e\x3b\ \xb7\x9a\xfc\x90\x4b\x7e\xd8\xa5\x30\xe4\x11\xa9\xd2\x29\xa5\x3d\ \x92\xbb\x6c\x3c\xe9\x32\x79\xf2\x64\x74\x5d\x27\x97\xcb\x61\xdb\ \x36\xc3\xc3\xc3\x84\x42\x21\xe6\xcd\x9b\x47\x5f\x6f\x1f\x96\x6d\ \xe3\x99\x72\x8c\x08\xed\x3b\x0c\xae\xeb\x1e\xa0\x3a\xa3\xd1\x28\ \xa5\x52\x89\x7c\x3e\xef\x5f\xbc\x04\x73\x9a\xe0\x6f\xbe\xd1\x84\ \xeb\x42\x4b\xf8\x28\xc6\x37\xd7\xb2\x7a\xd7\x4b\xe4\xfa\x5d\xba\ \x1e\x0c\xd1\x32\xb1\x95\x63\x8f\x3d\x96\x17\x5e\x78\x21\x88\xa6\ \x2d\xcb\xc2\x30\x7c\xdb\x56\xce\x65\xf8\xfc\x00\x81\x5d\xf0\x38\ \xed\xce\x4a\xf2\x43\x06\x3f\xff\xfc\x52\x6e\x5a\xf1\x65\xba\xd2\ \x6f\x22\xf1\xd8\xfc\xd3\x12\xc9\x4e\x07\x90\xd4\xd6\xd6\xb2\x73\ \xe7\xce\xe6\x64\x32\x39\xf4\xa1\x0a\xe4\xdd\x86\xae\xeb\x4d\xf3\ \xe7\xcf\x1f\x4c\xa5\x52\xd4\xd4\xd4\x90\xcb\x66\x71\x2c\x3f\x5f\ \x82\x02\x8a\xcf\xb2\x39\x00\xdb\x6a\x69\x69\x61\x60\x60\x00\xcf\ \xf3\x13\x40\xa6\x69\x72\xdf\x7d\xf7\xd1\xd2\xd2\x82\xa2\x28\x3c\ \xf9\xe4\x93\xec\xde\xbd\x1b\xd7\x75\x03\x6f\x6c\xc2\x84\x09\x74\ \x76\x76\x92\x4c\x26\xd1\x34\x8d\x74\x3a\x4d\x22\x91\xc0\x34\xcd\ \x40\x75\x79\x8d\x82\x93\xff\xb1\x96\xf8\x0e\x9b\x54\xa7\xcd\xe8\ \x36\x0b\x33\xe5\xa1\x68\x82\xc6\xf1\xf5\x41\x2a\xf9\xcf\x79\xaf\ \xe5\xb5\xc8\xa5\x0a\x1c\xf5\x8d\x10\x4e\x49\x52\xa1\xd6\xa1\xaa\ \x1e\x59\x33\x49\xba\xc7\x61\xfb\x13\x39\x3c\xc7\x37\x19\xd5\xd5\ \xd5\xe4\xf3\xf9\x33\xc3\xe1\xf0\x68\x2a\x95\x32\x7b\x7a\x7a\xb6\ \xfe\x55\xb9\xbd\x42\x08\x1e\x7d\xf4\x51\xa4\x94\xac\x5c\xb9\x92\ \xdd\xbb\x77\xd3\xdb\xdb\xeb\x67\x01\xc7\x5e\xaa\xaa\x62\x18\x06\ \x9d\x9d\x9d\x44\x22\x11\x74\x5d\x3f\x80\xa1\x31\x7d\xfa\x74\x5e\ \x7f\xfd\x75\x3e\xfb\xd9\xcf\xd2\xda\xda\x4a\x24\x12\xa1\xbf\xbf\ \x9f\x19\x33\x66\xd0\xde\xde\x8e\x61\x18\x34\x34\x34\x90\xcd\x66\ \x49\xa5\x52\xe8\xba\xee\xa3\xbb\x8a\x82\x61\x18\x7c\xf1\x8b\x5f\ \xe4\xe5\x97\x5f\xa6\xe7\xa1\xb1\x39\x5d\x97\x71\x31\x0f\xb7\xd2\ \xb7\x65\xfb\x7b\x64\xb1\x58\x8c\xed\xdb\xb7\x9f\x52\x2a\x95\xf6\ \xbc\xed\x56\x8e\x3e\xfc\xf0\xc3\x9f\xc8\xe5\x72\x14\x0a\x05\x16\ \x2d\x5a\x84\xb2\xbc\x92\x10\x50\xf0\x6c\xb4\x3a\x0b\x2d\x35\x91\ \x06\x04\x0d\x27\xbe\x63\x19\x5e\x50\x55\x95\x8e\x8e\x8e\x1d\x3d\ \x3d\x3d\x33\xff\x6a\x27\x44\xd3\xb4\xa6\xa3\x8f\x3e\x7a\xf0\x96\ \x5b\x6e\xa1\xa9\xa9\x09\xc3\x30\xb8\xe1\x86\x1b\x68\x68\x68\x40\ \x55\x55\x16\x2c\x58\xc0\x5d\x77\xdd\x45\x55\x55\x15\x4d\x4d\x4d\ \x84\xc3\x61\x5e\x78\xe1\x85\x20\xc3\xd7\xd0\xd0\xc0\xde\xbd\x7b\ \x99\x3e\x7d\x3a\x47\x1e\x79\x24\x83\x83\x83\x24\x93\xc9\x20\xe1\ \x34\x56\x12\x80\xae\xeb\x14\x8b\x45\x1c\xc7\x21\x12\x89\x04\x64\ \x02\x45\x51\x78\xf3\xcd\x37\xd9\xbc\x79\x33\x00\x1b\x36\x6c\x40\ \xd3\x34\x56\xae\x5c\xc9\xe4\xc9\x93\xc9\x66\xb3\x4c\x99\x32\x85\ \x62\xb1\xc8\xfa\xf5\xeb\x91\x52\x32\x34\x34\xc4\x5b\x6f\xbd\x35\ \x7d\x74\x74\x74\x57\xf9\x3e\x1a\x1b\x1b\xaf\x2d\x14\x0a\xc7\xd4\ \xd6\xd6\x5e\x58\xbe\xf6\x6c\x36\x1b\x44\xde\x83\xc5\x61\x2a\x23\ \x3e\xac\x2e\xed\x31\xe6\xbe\x23\x98\x34\x69\x12\x55\xd5\x55\x3e\ \x89\x5b\x08\x1c\xc7\xb1\x84\x10\x5d\x63\xea\x5c\xdb\xb4\x69\xd3\ \x7d\xf1\x78\xfc\x3b\x1f\xea\x09\x51\x14\x85\x47\x1f\x7d\x94\xe3\ \x8f\x3f\x9e\x67\x9f\x7d\x96\x5c\x2e\x17\xa8\x93\xce\xce\xce\x20\ \x67\x1e\x8f\xc7\xf1\x3c\x8f\x48\x24\x42\x26\x93\xe1\x86\x1b\x6e\ \x60\xca\x94\x29\x5c\x7c\xf1\xc5\x98\xa6\xc9\xca\x95\x2b\x03\x1b\ \x51\x86\x47\xca\xc6\xb2\x9c\xdb\xd6\x75\x1d\xdb\xb6\x09\x87\xc3\ \x41\x00\xba\x71\xe3\x46\x9a\x9a\x9a\xd8\xb1\x63\x07\xa3\xa3\xa3\ \x81\x0b\x5d\x59\x59\xc9\xc6\x8d\x1b\x19\x1a\x1a\xa2\xa1\xa1\x01\ \x5d\xd7\xe9\xed\xed\x45\x55\x55\xa4\x94\xe2\x6d\xc1\xee\x25\x0b\ \x17\x2e\x9c\x66\xdb\xb6\x44\x22\x8a\xd5\x69\xaa\x62\x1a\x5e\x2a\ \x84\x9b\xd6\x11\x52\x01\x05\x84\x90\x01\xc8\x64\x95\x2c\x7a\xd8\ \x4c\xf3\x94\x5a\xdc\x8c\x8e\x9b\xd2\xf0\xb2\x5a\x48\x68\xcc\x00\ \x08\x87\xc3\x6c\xd8\xb0\xa1\xf1\xc3\x88\xd4\xeb\x92\xc9\xa4\x3e\ \x56\x5c\xd3\xe0\xba\x2e\x6b\xd6\xac\x61\xf5\xea\xd5\xef\xf0\x36\ \xca\xbc\xdf\xb2\x6a\xdb\x3f\xc5\x59\x55\x55\x45\xa9\x54\xe2\x17\ \xbf\xf8\x05\xf7\xde\x7b\x2f\xb6\x6d\x53\x53\x53\x43\x63\x63\x23\ \x2f\xbc\xf0\x02\xad\xad\xad\xe4\xf3\x79\xb2\xd9\x2c\x9e\xe7\x91\ \x4e\xa7\xc9\x66\xb3\xc4\x62\x31\x52\xc9\x14\x55\x95\xd5\x14\x4b\ \x05\x2e\xbb\xec\x32\x62\xb1\x98\x8f\x4f\x8d\xed\x68\x21\x04\x6f\ \xbd\xf5\x56\x90\xde\xdd\x1f\xde\x18\x37\x6e\xdc\xbb\xb2\xe3\x13\ \x89\x04\xb6\x6d\x8b\xbd\xf6\x10\xb3\x3f\x69\x22\xa3\x0a\x1e\x0e\ \xaa\xa6\xe0\xa5\x74\xac\x01\x03\xbb\x2f\x4c\xa9\xd3\x3f\xa1\xd2\ \x85\xda\x79\x61\xea\x16\x94\x28\xba\x71\x14\x05\x9c\x9c\xca\xf0\ \x43\x8d\xef\xb8\xe7\x0f\x54\x20\x8a\xa2\xac\xb9\xf0\xc2\x0b\xa7\ \xbd\x17\xca\x64\x28\x14\xe2\xc5\x17\x5f\x7c\xc2\x34\xcd\x27\x01\ \xea\xeb\xeb\x6f\xbd\xe9\xa6\x9b\x9a\xce\x3a\xeb\x2c\x56\xad\x5a\ \x15\xa8\xa7\x72\x1c\xa3\x28\x0a\xbd\xbd\xbd\x07\xe0\x50\xd1\x68\ \x94\xfa\xfa\x7a\xc6\x35\xd7\xc3\xbc\x21\xaa\x23\x21\x5e\xb9\x6d\ \x37\xb1\x58\x2c\x60\x9d\x1f\xcc\xd8\x3f\x95\xfc\x76\x3a\xaa\x6d\ \xdb\x58\xd2\x46\x41\x41\xcf\x4d\xe4\xe6\xf3\xee\xe1\x85\xdd\xbf\ \xe6\xf9\xd1\xc7\x99\x3c\xbf\x9e\xbe\xd8\x20\xd9\xed\x5a\x70\x6a\ \x3f\x31\xe1\x5c\xae\x38\xf5\x6a\xbe\xf0\xd3\xd3\xf8\xa7\xf3\xaf\ \xe4\xd1\x55\xf7\x04\x39\xa3\xbf\x94\xe8\x70\xd0\x02\xf1\x3c\xaf\ \xaa\x4c\xb1\x1c\x75\x33\x4c\xbc\x20\x4d\xa4\x42\x01\x4b\xc1\xb3\ \x15\xdc\x94\x86\x35\x60\xe0\x0c\x19\xb8\x19\x1d\x21\xfc\xaa\xa8\ \x50\x28\xd4\x3e\x30\x30\xf0\xeb\x31\x28\xff\x3f\xea\xeb\xeb\x1b\ \x57\xae\x5c\x29\xf6\x8f\x63\x74\x5d\xff\x93\xe0\x5d\x3e\x97\x67\ \x43\x7e\x07\x67\xcc\xaa\x40\xd5\x2d\x16\xde\x58\x81\xa6\x14\xd0\ \x55\x1d\xd7\x96\x38\x71\x83\xd4\xd2\xda\xe0\x7f\x5e\x7b\xed\xb5\ \xaf\xe6\xf3\xf9\x47\xde\xb6\xa1\xdc\xa6\xa6\xa6\xfc\xdb\xe7\x37\ \x4d\x13\xc7\x76\xf0\x54\x3f\x99\xf5\x99\xe9\xd7\xf0\x5f\xab\xff\ \x9d\x2f\xcc\xfa\x57\x66\x2d\xfc\x04\x7a\xb4\xc4\xcd\xbb\xaf\xde\ \x47\x06\xf7\x04\xaf\x74\x3f\x88\xf6\x6c\x8c\x4f\xcd\xfe\x32\x6d\ \xb1\x23\x70\x5c\xc7\x27\x7e\x8f\x09\xe4\x43\x39\x21\x65\x70\xcf\ \xb1\x1d\xb2\x4a\x9e\xca\x6a\x41\x36\x67\x72\xce\x11\x7f\xcf\xa8\ \xd9\xcd\x9b\x43\xab\xa9\x9a\xe6\x51\x18\xcd\x30\xf4\x70\x3d\x42\ \x0b\x6a\x3e\x82\xab\x8b\xc7\xe3\x09\xdb\xb6\xa7\x9a\xa6\x19\x40\ \x31\xe5\x2c\x5b\x52\x49\xd1\x38\x51\xc7\x4d\xeb\x78\x59\x1d\x69\ \xa9\x64\x0b\x29\x8c\xb0\xc1\xb8\xba\x71\x40\x06\x45\x15\xcc\x33\ \xbe\xc0\xe2\xc5\x67\x63\x91\xe3\x7b\x4f\xfd\x3b\xf3\x67\x4f\x66\ \xab\xb3\x35\x98\x67\x2c\xbf\x5d\xf4\x3c\x2f\xbd\xff\xb5\x47\xa3\ \xd1\xfa\xbe\xbe\xbe\xf0\xdb\x84\xa1\x96\xe3\x22\xcb\x30\x29\xa6\ \x15\xbc\x82\x4a\xef\xd0\x1e\x36\x29\x5b\x78\xab\xe7\x4d\x1a\x0e\ \xcf\xa1\x29\xa1\x80\x99\xa2\xa0\xa2\x22\x71\x5c\x9b\x81\xd4\x30\ \x7b\x52\x11\x34\xa1\x07\xe8\x43\x39\x9e\xf9\xf0\x04\xe2\x38\x78\ \xba\x8b\x50\x14\x3e\x5e\x7f\x19\xcd\xb1\x3a\x1a\x12\x47\xb1\x6e\ \x68\x3b\x9f\x3d\xf9\x42\x1e\x1f\xf4\xc9\x6d\x8a\xa4\x1c\x91\xef\ \x8f\xf5\x64\xc3\xe1\x30\xae\xeb\xa2\x69\x1a\x13\x27\x4e\xc4\x75\ \x5d\xd2\x4e\x81\x59\x17\xb9\x18\x61\x05\x17\x1b\xa1\x38\x78\x79\ \x85\xed\x77\xd7\x60\x88\x0a\x3f\x4a\xf0\x20\x95\x2a\x72\xfe\xf1\ \x17\x71\xdb\xda\xcb\xf8\xfc\xf4\xff\xe0\xdf\x17\xdf\x81\xad\x8f\ \xd2\xbe\xf5\xaa\x60\xc1\xfe\x48\x04\xad\xb4\xb4\xb4\x8c\x94\x13\ \x55\x00\x9e\xea\xa2\x69\x2a\x9e\x29\x10\x52\xd0\x20\x1a\xc8\x3d\ \x06\x37\x7b\xd7\xa3\x2b\x06\x3f\xf5\x6e\x43\x41\xc5\x99\xbb\x9b\ \x49\xb3\x9a\xf6\x95\xbc\xa1\xd0\x1a\x69\xe5\xb0\xe6\xc3\x58\xdf\ \xbb\x97\x1a\xa3\x11\x89\xc4\xb2\xec\x03\x28\xb4\x1f\x8a\x40\xca\ \xc7\xdb\x15\x0e\x0a\x61\x16\xcd\x5d\xc4\xca\xa1\x87\x19\xe9\xaa\ \xc0\x70\xea\xb1\xbd\x12\x48\xe1\x03\x88\x1e\xe5\x9c\xf3\xa9\xe3\ \xc7\x8f\x1f\x1c\x18\x18\xb8\xa7\x7c\xc1\xe5\x8b\x2e\xd3\xf8\x6d\ \xd7\x26\xa4\x6b\x24\x06\x5d\x7e\x70\xc1\xe3\x74\x66\xd6\xf1\xe0\ \xc6\xff\x44\x7a\xc2\x27\x19\x48\xc0\x00\xab\x24\x89\x46\x2a\xf0\ \x84\x43\xb6\x90\x67\xdd\xce\x0d\x54\xb4\xf4\xa3\x29\xa1\x7d\x05\ \x42\xef\x4e\xe9\x34\x2a\x2a\x2a\x88\x44\x22\x48\xcf\xa3\x47\x0e\ \x33\xff\x22\x6b\x1f\xe1\x6e\x34\x84\x33\x10\xa1\xd4\x6d\x10\x4e\ \x54\x8f\x91\x8a\xc2\x84\x8d\x30\xf3\xa7\x9f\xc4\x26\xf7\x09\x2c\ \x6b\xdf\xbe\x3a\xa5\xed\x52\x26\x4f\x8f\xf0\xfc\xf0\x2a\x56\x74\ \xd9\x50\xe6\x68\x8d\xdd\xdf\x5f\x72\x42\x0e\xda\x02\x95\x0d\xa0\ \x65\x59\x78\xae\x07\x63\xa5\xcc\x08\x51\xa6\x92\x51\x72\x72\x63\ \xef\x33\x83\x72\x85\xc3\x0f\x3f\xfc\x14\xc3\x30\xbe\x5a\x9e\x23\ \x16\x8b\x71\xd7\x5d\x77\x31\x7e\xfc\xf8\x7d\x75\x26\xb6\x83\x10\ \x82\xaf\x1c\xf3\x6d\xd6\x0c\x3d\xce\xce\x6d\x19\x66\xa9\x9f\xa5\ \xd2\xa8\x0e\xe6\x41\x42\xac\xc6\x60\x24\x35\x4a\xb5\x5e\xcf\xf8\ \xba\x46\x5c\xcf\xc6\x76\x6c\x84\x54\x02\xc2\xdb\x1f\xa3\x72\x4a\ \x29\xc7\x6a\x3e\x6c\xf2\x22\x0f\x12\x0a\x29\x95\x0b\x66\xff\x2f\ \xaa\x9b\x43\x18\xb3\xd3\x8c\x3b\x37\x4e\x78\x7e\x22\x98\xcb\x71\ \x5c\x96\x74\xdd\x87\x63\x7b\x24\x93\x49\x92\xc9\x24\xa5\x82\xc9\ \xa3\x9b\xee\xc2\x94\x39\x42\x95\x92\xce\xe2\x5a\x86\x77\xe7\x82\ \xbf\x8f\x51\x9e\x9c\x0f\xd5\x86\xb8\xae\x8b\x82\xc2\x8b\xed\x7f\ \xe0\xe4\x8f\x9d\x4c\x4a\xea\xbc\xd6\xf5\x34\x47\x36\x7e\x8d\x97\ \xc5\x73\x58\x56\x1e\x45\xfa\xe8\xec\x98\x57\xe6\x95\x77\xef\x75\ \xd7\x5d\x47\x3c\x1e\xa7\xa5\xa5\x85\x42\xa1\xe0\x9f\x10\x61\xa3\ \x48\x95\xc3\x9a\xa6\xf2\xda\xe0\x4a\x46\x0b\x25\x76\x0d\x75\x20\ \xf0\x17\x5a\x20\x90\x48\x2a\x2b\x22\x3c\xb2\xe5\x87\x7c\x79\xc1\ \x77\xe8\xcc\xad\xe6\xcd\xfc\xf3\x9c\x11\x39\x1b\x5b\xee\x63\x1f\ \xfe\x31\xb7\xb3\x1c\xb1\x4b\x57\xe2\x85\x7c\xa4\xe0\xc6\x33\x1f\ \xe6\xa9\xad\x3f\xe7\xba\x85\x0f\xb0\x64\xe3\x12\xcc\xea\x9d\x2c\ \x59\xff\x2a\xa6\xe9\x73\x03\x8c\x90\x4d\xff\x6a\x8b\x3d\x23\xa9\ \xa0\x20\xc7\x71\x6d\x92\x9b\x2c\x6e\xf8\xfa\xad\x28\xd2\x20\xdf\ \xef\x61\xe7\x75\x26\x8e\xaf\x06\x21\x51\x35\x85\x9a\x9a\x9a\xcf\ \xcf\x9d\x3b\xf7\xf8\xfd\x3f\x7f\x70\x70\x90\xee\xee\xee\x8f\xe7\ \x72\x39\xeb\x90\x09\xa4\x50\x28\xe0\xd8\x36\x66\xc4\xc3\xc3\x65\ \xb3\xf5\x30\x87\xf5\x4d\xa5\xae\x51\xa1\x6d\x96\xca\x7f\xae\xba\ \x04\xcb\x09\x91\xcb\xe5\x51\x74\x7f\x61\xca\xc1\x5c\xd9\x03\x59\ \xb9\x72\x25\x9f\xf9\xcc\x67\x02\x40\xcf\xf3\x3c\x6c\xc5\x46\x28\ \x1a\x99\x62\x86\x90\x6a\xa0\x8b\x10\x96\x6b\xe2\x38\x36\xa3\xa3\ \xa3\x28\x42\x21\x5b\xe5\x51\xb4\x2a\xe8\x0e\xbd\xc6\x0f\x9e\x4b\ \xf1\xa5\x4f\x7e\x11\x33\xd2\xc3\xb3\xdb\x7f\xce\x68\x57\x91\x64\ \x32\x1b\xb8\xc1\xef\xe6\x7a\x06\xfc\x32\x57\x42\x54\x22\xa4\x42\ \x4d\x64\x1c\x9b\xe3\xaf\x70\xf2\xf0\x67\xf0\x2c\x15\xd7\x75\x70\ \x5d\x89\x65\xfa\xc5\x21\x86\x61\x90\xee\x74\x31\x0c\x0d\x4d\xf3\ \xe7\xb4\x1d\x9b\xa6\xca\x49\x18\xd2\x40\x00\xb9\x89\x83\xcc\x3a\ \xcb\x81\x4c\x08\x37\x6e\xe0\x0c\x87\x91\xb6\xd2\x2c\x4d\xa5\x59\ \xda\x3e\x81\xaf\x4c\xea\xeb\xe8\xe8\x50\x0e\xe9\x09\xc9\xe7\xf3\ \x7e\x4e\xa0\x42\x62\xbb\x16\x9a\xaa\xf2\x78\xe7\x77\x39\xa2\x74\ \x0c\x96\x6d\x61\xa5\x15\xb6\xfd\x3e\x49\xc9\xb6\x10\xce\x81\xf6\ \xa2\x3c\x96\x2f\x5f\xce\xf3\xcf\x3f\xcf\xe0\xe0\x20\x2d\x2d\x2d\ \x7e\xb5\x92\xea\xa7\x6e\xef\x5b\x76\x0f\xff\x72\xc1\xb5\x94\x1a\ \x3c\x56\xfc\xee\x51\x2c\x3b\x12\xf0\xae\x34\xd7\x57\x8b\x9e\x25\ \xe8\x1b\x6e\xe7\x9a\x7f\x5d\xcb\xe8\x36\x93\xc2\xa0\x8b\x50\xc5\ \x01\x94\xa1\x77\xe3\x47\x05\x5c\x5c\x4f\xe2\x49\x89\x50\xfc\x53\ \xa7\x08\x05\x55\x55\x49\x66\x53\xa4\x43\x5d\xe0\x81\x65\xdb\x41\ \x21\x4e\x4b\x4b\x0b\xd1\x68\xb4\x5c\x10\x4a\x32\x99\x0c\xd4\xa2\ \x8a\x42\x69\x72\x82\xc8\xb8\x4a\x64\x5d\x11\xda\x8a\x07\x7c\xe6\ \xf0\xef\xc6\xe1\xa6\xb5\x80\xf6\x7a\xc8\x55\x56\x99\x0b\x1b\xc9\ \x29\xec\x7e\x31\x4f\x6a\xb7\x83\x99\xf6\x58\x55\x58\x82\x5b\x02\ \xd7\x94\x08\x55\xa0\x69\xfb\x16\x67\xff\x82\x18\xa0\xd0\xd3\xd3\ \x93\x97\x52\x4a\xdb\xb6\x23\xe9\x74\x5a\xb5\x6d\xdb\x4f\x50\x39\ \x06\xb2\xae\x9d\x47\x56\x3e\xc4\xe7\x4f\xfe\x3c\x8d\x93\xa0\xc7\ \x49\xe1\x38\x0e\x93\x26\x4d\xc2\x48\x24\x58\x7b\x63\x1e\xb7\x34\ \x06\xce\x0a\x90\x68\x84\xc2\xfb\xf2\xf9\x7f\x8a\x81\x5e\x16\x88\ \x74\x25\xd2\xf3\x91\xe9\x54\x21\xce\xec\xda\x53\x98\x32\x71\x02\ \x2f\xae\xf7\x38\xbe\xf9\x53\xbc\xe1\xfe\x38\x30\xe0\xe1\x70\x98\ \x68\x45\x94\xa6\xba\x09\x34\xd6\x4a\xde\xdc\xbe\x85\xb6\xb6\xb6\ \x7d\xf9\x1c\x1f\x57\xc1\x73\x42\x7c\xef\x93\x4f\xf2\xd2\x96\x17\ \x70\xaa\xf7\x92\xd8\x1b\x61\x93\xfd\x80\x5f\x16\x67\x79\x41\xeb\ \x90\x83\x21\xd3\xbd\x27\x81\xb4\xb5\xb5\x71\xe1\x85\x17\xb2\x7e\ \xfd\x7a\x06\x7a\x06\xf1\xac\x0c\x6e\xc8\x41\xea\x12\x2b\x62\x05\ \x09\x27\xcf\xf3\xc8\xe5\x72\xc1\xcf\x80\x33\x06\xa9\x9c\x5b\x86\ \x55\x62\xb1\xd8\x8b\xae\xeb\x7e\xd2\xcf\x3a\x7a\x28\x86\xbf\x6b\ \xdb\x47\x7e\x47\xc7\xfd\xaf\x30\xd8\x53\xc0\x2a\x48\xee\xbc\xf3\ \x4e\x26\x4f\x9e\xcc\xf0\xf0\x30\x4b\x96\x2c\xc1\x34\x4d\x5c\xd7\ \xa5\x50\x28\x90\xc9\x64\x98\x30\x61\x02\x7b\xf6\xec\x61\x64\x64\ \x84\xe6\xe6\x66\xba\xbb\xbb\xff\x68\x2a\x3a\x9f\xcf\x23\x5d\x0f\ \xcb\xf6\x09\x15\xdf\x7d\xf5\x62\xae\x3f\xf5\x11\x1e\xda\x74\x0b\ \x3b\xb4\x65\xf4\x77\x56\xe2\xd8\x2e\xb9\x5c\xa1\x9c\x66\xa0\xc7\ \x1b\xa1\xf9\xb2\x51\x22\xba\x8e\xbc\x67\x14\xe1\x34\x04\x20\xa8\ \x8a\x82\x22\x04\x21\x6b\x1c\xb1\x68\x8c\x1f\xbd\x74\x1d\xf7\x5e\ \xfc\x07\xea\x4f\xaa\x23\xd7\xbe\x85\x1e\x6b\x17\x96\xa9\x7c\x70\ \x02\xf9\xf5\xaf\x7f\xcd\xab\xaf\xbe\xca\x2d\xb7\xdc\xc2\xb2\x65\ \xcb\xd8\xb8\x71\x23\x42\x08\xba\xbb\xbb\x99\x34\x69\x12\x93\x27\ \x4f\x66\xf5\xea\xd5\x74\x74\x74\x70\xec\xb1\xc7\xb2\x71\xe3\x46\ \x8a\xc5\x22\xaa\xaa\x2e\x38\xf1\xc4\x13\x65\x40\x92\xf6\x3c\x34\ \x5d\x05\x47\x48\x84\xdf\x94\xa7\xfd\x5b\x1e\x12\x50\x14\x1d\xa1\ \xda\xa8\x7a\x2d\x8e\x19\x0f\xa2\xf8\xa9\x53\xa7\xf2\xc8\x23\x5f\ \x1c\x22\x28\x00\x00\x19\xed\x49\x44\x41\x54\x8f\x50\x57\x57\x47\ \x73\x73\x33\x8d\x8d\x8d\xdc\x7f\xff\xfd\x14\x0a\x05\xc2\xe1\x30\ \xb1\x58\xac\x5c\x38\x8a\xe7\x79\x6d\xb5\xb5\xb5\x1f\xdb\x8f\xa8\ \x11\x76\x5d\x37\xb0\x21\xb6\x09\x8e\xb4\x51\x2b\x6d\x7e\xb0\xfa\ \x2b\xb4\xd5\xcc\xa0\x94\xb6\xc9\x0f\x27\xe8\x7c\x2d\x45\xb1\xe8\ \xab\x97\x48\x38\x8c\x5d\x6d\x51\x53\x15\xc6\xce\x87\x69\xac\x99\ \x88\x3d\x60\xe3\x49\x1f\x8d\x76\xa5\x40\x11\x02\xe9\x29\x38\x9e\ \x0d\x02\x14\xdd\x65\xf7\xc0\x2e\xba\xd3\xdb\x70\x6c\xb0\x6d\x11\ \x6c\x88\x72\xa5\xd5\x21\x13\xc8\x13\x4f\x3c\xc1\x69\xa7\x9d\xc6\ \x9e\x3d\x7b\x18\x1a\x1a\xc2\xb6\x7d\xa3\xab\x69\x1a\x5b\xb7\x6e\ \xc5\xb2\x2c\x92\xc9\x64\x40\xb0\x03\x02\xe2\xf2\xc4\x89\x13\x7d\ \x6f\xa3\x94\xa2\x6e\xf1\x30\x13\x26\x86\x71\xb2\xaa\xb0\xfb\x22\ \x38\x03\x61\xac\xbe\x08\x65\x07\xba\xcc\xc1\x2a\x6c\xc9\x73\xe3\ \x8d\x37\x72\xc6\x19\x67\xf0\xfa\xeb\xaf\xe3\x79\x1e\xbb\x76\xed\ \xc2\xb6\x6d\x74\x5d\x67\xc2\x84\x09\x14\x0a\x05\x74\x5d\x0f\xc0\ \xc3\xe6\xe6\x66\x66\xce\x9c\xf9\x1d\xe0\x3b\xfb\x93\xfd\xb6\x6c\ \xd9\x82\xa6\x69\x48\x45\xa2\xc7\x61\xef\xcb\x45\x46\xb6\x9a\xa4\ \xba\x46\x11\x6c\x3b\x20\x23\x51\xb6\x7b\xaa\xea\x17\x75\x96\x8a\ \x2e\xb7\x9c\xf9\x3b\xfe\xfe\xa9\xf3\x28\x39\x2e\x12\x9f\x6c\x21\ \x3c\x40\x0a\xf4\x88\x43\x48\x35\x68\x8c\x4e\x22\x59\x1c\x42\x11\ \x51\xf0\x14\x6c\xc7\x0a\xd4\x5f\x99\x94\x7d\x48\x6d\xc8\x3d\xf7\ \xdc\xc3\x43\x0f\x3d\x44\x2e\x97\x7b\x87\x7e\x06\xd8\xb9\x73\x67\ \xf0\xbb\x35\x6b\xd6\x50\x5d\x5d\x1d\xfc\xbd\x8c\xf5\x8c\x94\x52\ \x1c\x39\xa5\x82\x62\xc9\x66\xf6\xe4\xe3\xd8\x53\xb3\x09\x67\x76\ \x16\xcf\x93\x98\x7b\x2a\x18\x7d\x31\x86\x50\x65\x90\xcc\x8a\x46\ \xa3\x41\x3e\x5f\x08\xe1\x97\xd2\xd9\x36\x93\x27\x4f\xc6\xb6\x6d\ \x14\x04\x3b\xd4\x3d\x1c\x73\xa1\x86\x90\x0a\xd2\x12\x78\x25\x15\ \x27\x1e\xc2\xea\x37\x70\x86\x0d\x9c\xb1\xce\x37\xc7\x1c\x73\x0c\ \x97\x5e\x7a\x29\xf7\xfd\xea\x3e\xe4\x28\x48\x75\x90\xba\x29\x5e\ \x60\x13\x4c\xd3\x24\x1a\x8d\x32\x86\x00\xa3\x69\x2a\x02\xbf\xe6\ \xb1\xae\xaa\x96\x82\x95\xc3\x71\xfc\x66\x39\xa5\x52\x09\x45\x0a\ \x42\x02\x6c\x2d\xc1\x8f\xff\xf0\x7f\xf9\xe5\xa5\x4f\x70\xd3\xeb\ \x17\x61\x78\x31\xaa\x23\x31\x4c\xb3\x97\x52\xc9\x0b\xec\xe9\xc1\ \x00\x8f\xef\x05\x5c\xdc\x65\x9a\xa6\x61\x59\x56\xcd\x3e\x86\xe2\ \x81\x30\xc5\xdb\x4b\xce\xb2\xd9\xec\x01\xb9\x0d\xff\xf7\x1e\x9e\ \x27\x39\x2e\x74\x39\x2d\x0d\x1a\x67\x4c\xba\x84\x5f\xbc\xfe\x9f\ \xcc\x98\xda\xcc\xaa\x3d\xab\xb0\x2d\x1b\xa1\xf9\x35\x29\x75\x8d\ \x31\x42\x5e\xa5\xaf\xd3\x14\x49\xae\x90\x65\xfc\xf8\xf1\x44\xa3\ \x51\xb2\xd9\x6c\xd0\x6d\x21\x57\x59\x40\xd3\xab\x89\x29\x93\x58\ \x38\xf7\x14\x5e\xda\xfd\x30\xce\x38\x17\x31\x2f\x41\xfc\xd5\x28\ \xf9\x2d\x7e\xb1\xcd\x1d\x77\xdc\xc1\x8a\x15\x2b\xf8\xc1\x7f\xfe\ \x80\x5f\xfd\xea\x57\xcc\x91\x47\xd0\xdd\xdd\xcd\xac\x59\xb3\x78\ \xe1\x85\x17\x98\x34\x69\x12\x96\x65\xa1\x69\x1a\xa1\x50\x88\x54\ \x32\x35\x56\x6b\x28\xf6\xab\x49\x71\xb0\x6c\xcb\x2f\x83\x70\xa1\ \xb2\x14\xc2\xf6\x74\x3a\xcc\x27\x59\xdd\x73\x18\x55\x15\x55\x0c\ \xe6\x77\x93\x1f\x74\x89\xf7\x25\xb1\x0b\xfb\x52\xbe\x07\x43\x39\ \x3d\x68\x81\x8c\x8c\x8c\x9c\x54\x2c\x16\x7f\x72\xce\x39\xe7\x5c\ \x7d\xdb\x6d\xb7\x91\xcd\x66\x79\xf8\xe1\x87\xd9\xb5\x6b\x17\x8a\ \xa2\x90\x4c\x26\x89\x44\x22\x28\x8a\xc2\xe8\xe8\x68\x90\xf5\x4b\ \xa5\x52\x94\x4a\xa5\x00\x5a\x70\xa5\x47\xa9\xe8\x71\xf1\x79\x7f\ \xcf\x4d\x2b\xfe\x1e\xad\x66\x02\x53\xab\x8e\x61\x76\x43\x2b\x2b\ \xe5\x2a\x4c\xcb\x44\xb8\x3e\x30\xd9\x74\x41\x96\xaa\x89\x05\xec\ \x11\x03\x77\x30\x02\x1d\x02\x67\xd8\x0b\xa8\x48\xb6\x6d\xe3\x4a\ \xdf\x08\x49\x04\xdf\x3c\xe5\x5e\x7e\xf4\xf2\xbf\xf2\xef\x67\x3c\ \xc4\xea\x8d\x6f\xb2\xc9\xf9\x35\x43\x76\x1f\xb6\xed\x2f\xe6\xd3\ \x4f\x3f\xcd\x82\x05\x0b\x68\x6f\x6f\x67\xe7\xce\x9d\xc1\x02\x25\ \x12\x09\x4a\xa5\x12\x89\x44\x22\x48\x3b\x17\x0a\x05\xca\x0d\x6c\ \x5c\x69\x32\x9a\x1e\xa5\xda\xa8\x23\xed\x24\x02\xc6\x0d\x02\x94\ \xbc\xa0\x30\xe2\x91\x1b\x76\xb9\xf5\xd9\x1b\x49\xec\x70\x49\x75\ \x3a\x20\xfd\xba\xf7\xb2\x0c\x0e\xb6\xa0\xe7\x3d\xa9\x2c\x21\x84\ \xbe\x70\xe1\x42\xd6\xad\x5b\xc7\x39\xe7\x9c\xc3\xe1\x87\x1f\x4e\ \x3e\x9f\xc7\xf3\x3c\x5a\x5b\x5b\x29\x14\x0a\x98\xa6\x49\x3a\x9d\ \x26\x1e\x8f\x53\x5b\x5b\x1b\x64\x01\x83\x1a\x13\xc5\x1b\xd3\xd3\ \xba\x8f\xcc\x0a\x85\xa1\xec\x00\xb9\xde\x4d\xfe\xfb\x4c\x2b\x38\ \x21\xb8\x82\x29\x91\xe3\x08\x1d\xee\xb2\xab\x61\x33\x66\x2c\xcf\ \xf0\x23\x3a\x20\x83\x40\x4f\x91\x3e\x15\x35\x1d\xf7\x88\x86\x2b\ \x58\xd6\xf9\x04\xd7\x6a\x37\xd3\x50\x57\x83\xd5\x6f\xe1\x38\x2e\ \xa6\xe9\x43\x33\x77\xde\x79\x27\x77\xdc\x71\xc7\x1f\xbd\xbf\xd1\ \xd1\xd1\x03\x7e\x8e\x55\x8f\xe5\x5c\xa2\x3a\xff\xe7\xf7\x9f\xa5\ \x36\x34\x89\xed\xc5\x5e\xa2\xd1\x28\x86\x61\xd0\xd4\xd4\x44\x6a\ \x73\x8a\x2d\x9b\xdd\x31\xb7\xdb\xef\x68\x54\x15\xf3\x0e\xa0\xd6\ \x96\x0b\x98\x0e\xb9\x40\xa4\x94\xfc\xf6\xb7\xbf\xa5\x9c\x60\xea\ \xe8\xe8\x08\x20\x8b\xb2\x8d\x10\x42\x50\x28\x14\x70\x5d\x37\x10\ \x56\x59\x3f\x03\xb8\x61\x8f\x48\x58\xe7\xe5\x0d\xcb\x09\x51\x4d\ \x6d\xb4\x9e\x81\x4c\x17\x67\x55\x7f\x9c\xad\x72\x07\xa6\x55\x42\ \xf1\x7c\x20\xb3\x3a\x7d\x2c\xe7\x1f\xfd\x45\x5e\x5a\xbd\x8e\x71\ \xd2\xe3\xf4\xd9\xa7\xf0\x7d\xeb\x76\xc2\xaa\xb1\x8f\x94\x37\x56\ \x61\xa8\x28\x82\x03\x6d\xa6\xc0\xf6\x8a\x63\x27\xc9\x25\x95\x4a\ \xf9\xe9\x80\xb1\x60\x50\x4a\xe9\x7f\xaf\xf9\x7c\xa2\xb0\x16\xa5\ \x60\x67\x51\x84\x8a\x6b\xfa\x0b\x97\x4e\xa5\x70\x5a\x1c\x4c\xa7\ \x84\x16\xf5\xd8\x38\xb4\x02\xd7\x11\x34\x36\x36\x72\xf7\xdd\x77\ \xe3\x79\x1e\xab\x57\xaf\x66\xd5\xaa\x55\xb4\xb6\xb6\xb2\x66\xcd\ \x1a\x8e\x3c\xf2\x48\x36\x6d\xf2\x37\x57\x5d\x5d\x1d\xf9\x7c\x9e\ \xde\xde\xde\x83\xe6\xff\xbe\x57\xac\x58\xd5\x34\x8d\x67\x9e\x79\ \x46\x0a\x21\x84\x22\x94\x80\x3d\xe8\x4a\x9f\xaf\xa4\x29\x21\x3f\ \x3f\xae\x86\x70\x1c\x87\x8a\x8a\x0a\xa4\x94\x41\xe9\xb1\xa5\xd8\ \x68\xba\xe0\xc1\xed\xff\xce\x2d\x67\x3f\xce\xda\xe1\x27\x08\x35\ \xf7\xd3\x93\xdf\x82\xed\x59\x14\xf2\x05\x14\xdd\x8f\x01\x8e\x9b\ \xbe\x80\xee\xd4\x76\xde\xec\x5f\xc7\xc2\x19\xa7\x11\x56\x8c\xb1\ \xb2\x33\x11\xb4\xf8\x50\xa4\x40\x22\xa8\xad\x0f\x91\xce\x67\x38\ \xf7\x88\x7f\x20\x51\x1c\x20\x97\x2b\x31\xb5\xf6\x28\xda\x9d\x3f\ \xe0\xba\xd2\xf7\xf2\x5c\x41\xa9\x26\xc1\xb4\xd8\x5c\x4a\xa5\x12\ \x03\x6e\x8a\x19\x5f\x34\x99\x56\xb1\x90\x8b\xcf\xf8\x12\x35\x6a\ \x2b\x37\x3d\x7e\x0d\xcf\x5e\xbf\x0e\x0f\x5f\xe0\x91\xa2\xce\xc0\ \x1b\x26\x99\x5e\x87\xd4\x9e\x02\xba\x5a\x5d\xce\xed\x30\x77\xee\ \x5c\xaa\xaa\xaa\xc8\xe5\x72\x74\x74\x74\xa0\xeb\x3a\xb1\x58\x0c\ \x29\x25\xc9\x64\x12\xd3\x34\x69\x6b\x6b\x63\xdb\xb6\x6d\x1f\x8c\ \xca\x52\x14\xe5\xd1\x37\xde\x78\x63\xda\xac\x59\xb3\x4e\x2b\x14\ \x0a\x58\xd2\x45\x9f\x9e\xa7\xae\xaa\x96\xb3\xe7\x7e\x8e\x92\x69\ \xb1\x74\xfb\x13\x9c\x39\xfb\x1c\x96\xee\xfe\x2d\xe9\xf5\x61\x0a\ \x85\x02\x42\x88\x60\x87\xe4\x85\x87\xed\x5a\x84\xaa\x3c\xfe\xed\ \xf7\x17\xb1\x78\xfe\xd9\x64\xf3\x29\xd6\xc7\x57\xb2\xf3\xe5\x2c\ \xd9\x82\x19\xec\xf4\x92\x69\xe2\x58\x2a\xae\xe3\x91\x2b\xa5\xf0\ \x1c\x1f\xcd\x95\x78\x68\x9a\xe6\xcf\x2d\xfd\xb8\x06\xe1\x71\xcd\ \xd3\xe7\xf3\xc3\xf3\x9e\xe2\xc6\xd7\x2f\x24\x53\x8a\xa3\xe9\x1a\ \x56\xc9\x22\x97\xdb\x97\x2b\x99\x14\x9d\x46\x3e\x9f\xf7\x53\xb7\ \xd8\xd8\xa6\xcb\xac\xc6\x45\x3c\xd9\xfe\x33\x0e\x53\x3f\xc1\x31\ \x0d\x8b\x79\x46\xae\xa6\xbe\xa1\x9e\xe3\x8f\x3f\x9e\xad\x5b\xb6\ \x12\xff\x83\x83\xe5\x98\xb8\x99\x0c\xd1\x6a\x9d\x64\x32\xc9\xd7\ \xbe\xf6\x35\x5a\x5b\x5b\xe9\xec\xec\xdc\x57\x2e\x27\x25\x3b\x76\ \xec\x08\x16\x3f\x95\x4a\x05\x2c\x99\x3f\x06\xe9\xfc\x45\x02\xc9\ \x64\x32\x2f\x55\x55\x55\x9d\xdc\xda\xda\x7a\x5a\x32\x99\xa4\x88\ \x45\xf5\xc9\x3a\xc7\x34\x9e\xc9\xdc\x63\x9a\x59\xb7\xb1\x93\xef\ \x7f\xe6\x6e\x8e\x9b\x79\x0c\x43\xcf\x2c\x63\x47\x4f\x08\xe1\xaa\ \xa4\x52\xa9\xc0\x80\x46\x4a\x2e\xd9\x21\x87\xc1\x8d\x16\xa3\xdb\ \xf6\xb0\xfa\x96\xbb\x83\x5e\x55\x4d\xa2\x99\xa6\xb9\xfb\x3e\xef\ \xf7\x0f\x3f\x05\x63\xcd\x5a\xfb\x78\x09\x80\x09\x13\xc7\x53\x2c\ \x16\xc9\x66\xb3\xe4\xf3\x79\x84\x14\x38\xa6\xf0\x85\x5c\x6d\x71\ \xe3\x6b\x7f\x47\x24\x5c\x41\x41\xd5\x48\x76\xda\x74\xae\x4c\x21\ \x9d\x80\xe0\xc7\xb8\xea\x71\xf4\xf7\xf7\xfb\xec\x79\xd5\x19\xab\ \xf8\xf2\xf1\x32\xd7\xf3\x48\x17\x13\xa8\xaa\xc6\xaa\x55\xab\x78\ \xf1\xc5\x17\xf9\xd2\x97\xbe\xc4\xb2\x65\xcb\xa8\xa8\xa8\xe0\xfe\ \xfb\xef\xa7\xad\xad\x8d\xae\xae\xae\xc0\x3d\xae\xa9\xa9\x39\xa8\ \xb5\x8b\xc7\xe3\x1f\x0c\x0d\x48\x55\xd5\x69\xe5\xf6\x4c\xb6\xf0\ \x6f\xa8\x52\x8f\x61\xba\x45\x4c\xa7\xc4\x50\xa6\x97\xbe\x6c\x2c\ \x80\xeb\x71\xf6\xf9\xde\xd7\x5e\x7b\x2d\x4b\x96\x2c\xa1\xe7\xbe\ \x04\xae\x6b\x13\x05\xf4\x4a\x2b\x28\x1c\xdd\x59\xe8\xe7\x88\xcf\ \x38\x54\x84\x35\xa4\xa9\x62\x27\x74\xdc\x11\x03\xab\x3f\x8c\x97\ \xd5\x10\x9a\x0c\x82\xc6\x6c\x36\xeb\xef\x4c\xd7\x23\xdc\x2d\xd8\ \xf6\xbb\x1c\xe9\xbd\x0e\x4e\x21\x81\x5d\x90\x38\x45\x89\x94\xa0\ \xa8\x6a\x50\xb8\x67\x84\x22\x6c\xea\x5a\x45\xb5\x6c\xf6\xf3\x1d\ \x86\x87\xae\x18\xec\x18\xdd\xc8\xf1\x47\x9f\xc0\x78\xed\x70\x36\ \xed\x5e\x13\x70\xbd\xda\xda\xda\xe8\xee\xee\xf6\x05\x3f\x86\xd8\ \x0e\x0c\x0c\x70\xc3\x0d\x37\x30\x3a\x3a\xca\x93\x4f\x3e\x19\x54\ \x28\xe7\x72\xb9\xe0\x24\x94\x49\xe5\xb5\xb5\xb5\xe5\x62\xa4\xd1\ \xe1\xe1\xe1\x85\x8d\x8d\x8d\x66\x6f\x6f\xef\xa1\x15\x88\x94\xf2\ \xb0\x80\x9d\xa8\xb8\xa8\x42\x63\xb4\x38\x40\x53\x74\x2e\x35\x15\ \x69\xb2\x56\x1a\x5d\x0d\xa3\xa0\x60\x5b\x26\xd2\x11\x38\x8e\xc3\ \x33\xcf\x3c\xc3\xe8\xe8\x28\x27\x9f\x7c\x32\xbf\xff\xfd\xef\x03\ \x2c\x6a\xd9\xb2\x65\x81\xc1\xef\x2d\xc5\x59\x34\x7e\x1c\x85\xac\ \xc7\x71\xd3\x3f\xce\xa6\xc1\x65\x38\x33\x72\x54\xa9\x92\xec\xe6\ \x0a\x32\xaf\x57\xfb\x86\x58\xf1\x8b\x7a\x16\x2f\x5e\xcc\xec\xd9\ \xb3\x79\x69\xc9\x4b\x78\x19\x09\x8c\x42\x05\x58\x9a\x85\x88\xf9\ \x0b\xa8\xeb\x3a\x99\x4c\x06\xc7\x71\xd0\x74\x85\x64\xb7\x83\x5e\ \x5f\xf4\x93\x55\x38\x78\x9e\xc1\x40\xe8\x55\xc2\xc5\xd3\xc9\xd7\ \xf6\xb0\xdb\x7a\x19\x5d\x35\xb8\xe8\xa2\x8b\x98\x3d\x7b\x76\xd0\ \xe5\xc7\xf3\x3c\x86\x86\x86\x98\x3a\x75\x2a\xdf\xf8\xc6\x37\x10\ \x42\x10\x0a\x85\xde\x35\x07\x53\x2e\x32\xcd\x64\x32\xd4\xd4\xd4\ \x50\x28\x14\x9c\xd1\xd1\xd1\xed\x1f\x14\x51\x4e\x09\x1a\x98\xa9\ \x7e\x6e\xb5\x50\xb9\x8d\xb6\xca\xeb\x38\x62\xf1\x09\x5c\xf3\xe4\ \x05\xb4\x4d\x6c\x06\x01\x96\x65\xe2\x8d\x61\x39\x6f\xbe\xf9\x26\ \x8d\x8d\x8d\x64\x32\x99\x72\xd3\x64\x86\x87\x87\x0f\xf0\xc0\x84\ \x10\x94\x6c\x93\x0b\x5a\x6e\x65\xc4\xdb\xc0\x3f\x2f\xb8\x9b\x97\ \xda\x97\x90\x8e\x6c\xa5\xdd\xde\x15\xf4\x16\x29\x0b\xe4\xf2\xcb\ \x2f\x27\x97\xcb\x71\xda\x69\xa7\x71\xfb\xed\xb7\x73\xc2\x89\x0b\ \xe8\xee\xee\xe6\xc8\x23\x8f\xe4\xd1\x47\x1f\x65\xf2\xe4\xc9\x7e\ \x7b\xc1\x54\x8a\x54\x2a\xc5\xe0\xe0\x20\x95\x95\x51\x32\x99\x0c\ \xa6\x69\x52\xf0\xfc\x32\x08\x4f\x95\xfc\xf4\x8d\x7f\xe2\xaa\x53\ \xbf\x8d\xed\x94\x30\x4d\x18\xd7\x54\x4b\x5f\x5f\x5f\xa0\x6a\x35\ \x4d\xc3\x30\x0c\x7a\x7a\x7a\x10\x9a\x40\xd5\xfc\x66\x01\x39\x33\ \x43\xa5\x51\xed\x57\x69\x45\x4d\xec\x3c\x63\x88\xf4\x81\xbd\xc5\ \x3e\x30\xe6\xa2\x10\x82\x44\x22\xe1\xe7\x05\x34\x49\xc9\x8a\x61\ \xab\x70\xe5\x6f\xcf\xe6\xd1\xaf\x6c\x44\x8b\x58\xdc\xb7\xe9\xdb\ \x78\x2e\xc4\x87\x92\x41\x50\x74\xeb\xad\xb7\xbe\x23\xdf\xbd\x3f\ \x1b\xdd\x87\x46\x60\x78\xa0\xc4\xd9\xe7\x9e\xc6\x95\xcf\x5c\xcf\ \xe2\x19\x17\x33\xa9\x76\x06\x03\xa4\x91\xde\xce\xa0\xb7\x48\xb9\ \x8e\xbc\xbb\xbb\x9b\x13\x4f\x3c\x91\xdf\xfc\xe6\x37\x01\x15\xb5\ \xdc\x4c\x40\x4a\x19\xb4\xf7\xd0\x75\xdd\x8f\xac\xc7\x3e\xaf\x6c\ \x84\x2b\x8a\x1e\xa5\xb8\x47\xcf\xae\x12\xf1\xad\x16\xff\xf0\xdd\ \xaf\xfb\xf9\x7b\x05\x46\x46\x46\x0e\x70\xf7\xcb\xc5\xa4\x0a\x82\ \xf8\x94\x0c\xc7\x9e\x59\xc5\xaf\xfe\x76\x25\x67\xde\x39\x85\x67\ \xae\x58\xc1\xe6\xce\x0e\x9e\xea\xbd\x91\xad\x8f\x8f\x32\xba\xc9\ \x37\xde\x86\x61\xb0\x7d\xfb\x76\x1a\x1b\x1b\x3f\x38\x81\x94\x17\ \x58\x51\x14\x34\x4f\xa2\xea\x02\xd7\xf1\x60\x54\x72\xca\xa5\x87\ \x93\xeb\xf2\xb0\xf2\x12\x33\xe3\x05\x1c\xa5\x62\xb1\x28\xcb\xb5\ \xea\x6f\x17\xae\x10\x62\xdf\x0e\x32\x7c\x17\x7a\xff\xbf\xdb\x8e\ \xcd\xae\xec\xc6\x31\xd6\xbc\x15\xb0\x91\x15\x45\xe1\x5b\xdf\xfa\ \x16\xd1\x68\x34\x20\xc1\x95\xe7\xdf\xbc\x79\x73\x80\x18\xec\xff\ \x99\xe5\xfa\x12\xc3\x30\xb8\xfa\xea\xab\x59\xbe\x7c\x39\x83\x2f\ \x0e\xe2\x7a\x1e\x21\xc7\xa6\xa9\x51\xee\x6b\xed\x37\xa6\xa6\xca\ \xbd\x7c\xcb\xc1\xad\x22\x05\x52\x08\x6a\xea\x74\xe2\x99\x11\xae\ \x38\xe9\x46\xfa\xb3\xbb\x18\x49\xa4\x38\x7e\xe2\xd9\xbc\x61\xff\ \x9c\x32\x85\xab\x6c\x53\xde\x0b\xe9\xe1\x7d\x09\x44\x08\xc1\xb4\ \x69\xd3\x48\xa5\x52\x0c\xdc\x6b\xd2\x63\x9a\x08\x45\xe2\xe7\x6d\ \xfd\xc0\x24\xa4\x4a\xa4\x22\xcb\xa4\x69\x31\x30\x30\xb0\x6c\x64\ \x64\xe4\x94\xb7\xcf\x35\x67\xce\x9c\xb8\x69\x9a\xe3\x84\x10\x60\ \x40\x4d\x4d\x98\x3d\x7d\x7d\x78\x8e\x82\xa6\xe8\x64\xcd\x24\x4d\ \x91\x36\x76\xba\x71\x4c\xd3\x0e\xba\xef\xd8\xb6\x4d\x34\x1a\x0d\ \xd2\xb6\xfb\x7b\x72\x65\xb8\xfb\x80\x93\xe8\x82\x65\xfa\xc4\xed\ \xab\xae\xba\x0a\x21\x04\x0f\x3e\xf8\x20\xdf\xfe\xf6\xb7\xe9\xea\ \xea\x62\xe6\xcc\x99\x8c\x8c\x8c\x60\xdb\x36\x4d\x4d\x4d\xbc\xf2\ \xca\x2b\x84\x42\x21\xc6\x8f\x1f\xcf\xba\x75\xeb\xb0\x6d\xdb\xc7\ \xe6\x3c\xb0\x2c\x70\xa5\xcd\xb5\x2f\x9e\xc7\xff\x3d\xf5\x29\xee\ \xdd\xfc\xcf\xf4\xa4\xde\x42\x4b\xa8\x94\x0a\x26\x99\x8c\x79\xc0\ \x26\x78\x2f\x6c\xc6\xf7\x63\xd4\x39\xf2\xc8\x23\xb9\xec\xb2\xcb\ \x38\xe2\x88\x23\xb8\xf9\xe6\x9b\xe9\xec\xec\xa4\xa6\xa6\x86\x91\ \x91\x11\x74\xdd\x6f\x2e\x39\x38\x38\x88\xae\xeb\x68\x9a\xc6\xe0\ \xe0\x20\xe9\x74\xda\xfb\x63\x89\xa3\x52\xa9\xe4\xef\xc8\x2a\xc9\ \xb8\x71\x95\xfc\x68\xd9\xbf\x70\xd7\xdf\x2d\xe3\x97\x6f\x5c\xcf\ \x9b\xa9\x2d\x1c\x31\x69\x0e\xae\x37\xc6\x0e\x1c\xb3\x21\x53\xa7\ \x4e\x0b\xe2\x15\x55\x55\x59\xb1\x62\x05\xcd\xcd\xcd\xef\xea\xeb\ \xab\x21\x08\xcd\x4d\xd2\xb7\xb2\x48\x21\xe9\xb0\x6b\xd7\x2e\xae\ \xbc\xf2\x4a\xf6\xee\xdd\x4b\xb1\x58\xa4\xb1\xb1\x91\xca\xca\x4a\ \x74\x5d\x67\xd9\xb2\x65\xd4\xd5\xd5\xd1\xda\xda\x4a\x4f\x4f\x4f\ \x50\x4e\x5d\x2c\x16\x83\xb8\xc7\x49\x0b\x92\xfd\x7e\x31\xe9\xbf\ \x3e\x79\x3e\x15\x46\x98\x6c\xce\x25\xdd\x63\xd2\xb9\x22\x8b\xaa\ \xa8\x07\x6c\x9a\xb1\xcd\x11\x06\x98\x34\x69\x92\xdd\xdd\xdd\xed\ \x1e\xb2\x72\x84\xda\xda\xda\x35\x4d\x4d\x4d\xc7\x1d\x2c\xa7\xb6\ \x3c\x5c\xd7\xa5\xbf\xbf\x7f\xc6\xc8\xc8\xc8\xce\xfd\x7f\x3f\x7d\ \xfa\xf4\x78\xa9\x54\x1a\xa7\x28\x0a\xc3\x13\x5c\xfe\xf1\x5b\x13\ \xb1\x2c\x97\x9a\xc2\xb1\x1c\x35\x67\x0a\x4b\x77\xff\x06\x4d\xd3\ \x58\xf5\x83\x04\xa9\x2e\x5f\x17\x54\x56\x54\xb1\xe8\x96\x2a\x86\ \xee\x6f\x44\x3a\xbe\x5a\x58\xbb\x76\x2d\xd1\x68\x94\x70\x38\x1c\ \x30\xef\xcb\x69\x5d\xc7\xb5\x31\xa2\x21\xdc\x92\x0c\x9a\x0b\xec\ \xcf\x52\xf9\x53\x19\xd2\xe6\xe6\xe6\xfd\xaa\x7a\x64\x90\xb3\xf9\ \x63\x9b\xb5\xa7\xa7\x87\x6d\xdb\xb6\x21\x84\xa0\xb2\xb2\x32\x28\ \x8e\x2d\x6f\xbe\xb5\x6b\xd7\x7e\x29\x99\x4c\x3e\x70\x48\x4f\x88\ \x61\x18\xcc\x98\x31\x03\x80\x7e\x33\xc1\xe4\xb3\xf3\x44\xc2\x1a\ \xc2\x34\xb0\x87\x42\x38\xc3\x61\x9c\xe1\x03\x1b\x59\x46\x22\x11\ \xee\xbd\xf7\xde\xf4\xbb\x4d\x59\x26\x97\x85\x73\x50\xca\x78\x0c\ \x6d\xb1\xe8\xd8\xf3\x0a\xcf\xdf\xb9\x04\xcf\x14\xd8\x79\x0f\xd7\ \xf4\x8d\xf1\xbe\xbc\xb9\xc0\x76\x1c\xa4\xed\xeb\xfa\x39\x73\xe6\ \xd0\xda\xda\x4a\x2c\x16\x63\xdb\xb6\x6d\x8c\x8e\x8e\xd2\xd4\xd4\ \xc4\xd0\xd0\x10\xfd\xfd\xfd\x78\xa6\xaf\xba\x4c\xd3\x0c\xe8\x47\ \x0a\x02\xc7\x94\xd8\xb2\x84\x42\x08\xcb\x2d\xa1\xab\x1a\x48\x05\ \x4d\xd5\x28\x95\x8a\x0c\x0d\x0d\x21\x10\xac\x2c\x6d\xe5\x9c\xcb\ \x62\x28\x52\xe0\x9a\x80\xa5\xfb\xd7\x36\x60\x50\xda\x5d\x81\x97\ \xf5\xaf\xad\x50\x28\x50\x5b\x5b\x1b\x54\x1b\x47\x8c\x8a\x20\xce\ \x8a\x46\xa3\x7f\xd6\xe3\x7a\x5f\x02\x29\xe7\xb4\x15\x04\xa3\x5a\ \x9c\xf9\x2d\x61\x32\xd9\x34\xed\x77\x58\x4c\xac\x99\x82\xeb\x65\ \x11\x8a\xc0\x72\x1d\x74\x5d\x20\x4d\x0d\x44\x82\xb3\xce\x5c\x3c\ \x54\xb6\x01\x65\xa3\xd7\xd5\xd5\x45\x28\x14\xe2\xf4\xd3\x4f\x67\ \xfd\xda\x75\xb4\xdf\xec\x20\x85\x0e\x42\x47\x93\x6e\xd9\xd1\xc6\ \x88\x2a\x81\x8b\x5c\x66\xa2\x58\xa6\xef\x56\xab\xaa\xca\xc0\xc0\ \x00\xae\xeb\x52\x59\x59\x49\x26\x93\x09\x58\x1e\x8e\xe3\x10\x0e\ \x87\x39\xef\xbc\xf3\x48\xa7\xd3\x2c\x5f\xbe\x3c\xc8\x08\x0e\x47\ \x8b\x9c\x7e\x55\x15\xc7\x1a\x57\xd1\x30\xc5\x64\x51\xeb\x17\xb8\ \x7f\xc5\x4f\xf9\xf8\x91\x0b\xb9\xf3\xb9\x6f\xd3\xff\x98\x87\xa5\ \xfa\x0d\xd2\x0a\x58\x18\xba\x42\x23\x47\x72\xfa\x51\xe7\xf0\xe4\ \xb6\xbb\x50\x9d\x4a\x72\x2d\xbd\x8c\xe4\x25\xa5\xd1\x48\xe0\x31\ \x1e\x73\xcc\x31\x6c\xdf\xbe\x9d\x7c\xa6\x80\x31\x37\x49\x69\x57\ \x04\xa1\xec\xf3\x0e\x0f\xa9\x40\xaa\xab\xab\x03\x86\xa0\x82\x00\ \x4d\x62\x3b\x2e\x7f\x33\xf1\x26\x12\x8d\x77\x05\xbb\x20\xe5\x66\ \x19\x77\x41\x9c\x71\x0d\x3a\x4e\x1e\xec\xa1\x0a\xdc\x11\x03\x7b\ \xd0\x40\x16\x55\xdc\xbc\x8a\xa6\x69\x94\x4a\x25\x7e\xf3\x9b\xdf\ \x00\x70\xc6\x19\x67\xb0\x7c\xf9\x72\x1c\xc7\x21\x1e\x8f\x53\x53\ \x53\x43\x4f\x4f\x0f\x8b\x16\x2d\x62\x64\x64\x84\x35\x6b\xd6\x10\ \x8d\x46\xd9\xbb\xa7\x1b\x81\xc0\xb2\x6c\x3c\x9b\x20\x3a\x0e\x87\ \xc3\xa4\x52\xa9\xe0\x5a\xfb\xfa\xfa\x08\x87\xc3\x58\x96\x45\x22\ \x91\x60\xca\x94\x29\x81\x6b\x2c\x84\xc0\x0d\xbb\xa8\x8a\xc6\x26\ \xef\x7e\x2e\x09\xdd\xce\x53\xbb\x7f\xc4\x4e\x6f\x29\x3b\xdf\x78\ \x0e\x4f\x2a\x7e\x1a\xda\x94\x7e\x4f\x47\x43\x30\x38\x94\xe3\x3b\ \x17\xdc\xca\xff\x7e\xf6\x0c\xee\xfe\xfc\x12\xf6\xf4\xf7\xf0\x74\ \xef\xad\x0c\xda\x5d\x81\x0a\xf4\x3c\x8f\x78\x3c\x3e\x86\xe1\x29\ \x78\x8e\x87\x6b\x9a\x08\x95\x03\x02\xc9\xbf\x98\x4a\x1a\x90\x64\ \x0d\x23\xd8\x09\x25\xd3\xf4\xdb\x7c\xdb\x06\xe7\x9d\xb8\x98\xbc\ \x99\x09\xe8\xa1\x23\x4e\x9a\x8a\x50\x08\x33\xab\xb0\x70\xca\xf9\ \xd4\x4e\xd1\x88\x1e\x95\xa1\xf6\xec\x11\x2a\x4f\x89\x07\xdd\xb1\ \xcb\x5e\xd0\xc8\xc8\x08\xe1\x70\x18\x45\x51\x98\x33\x67\x0e\x86\ \x61\x30\x69\xd2\x24\x6c\xdb\x0e\x3a\x44\x9c\x78\xe2\x89\xa4\xd3\ \xe9\x31\x57\x52\x39\xa0\x4d\xb9\xeb\xba\x41\xcb\xf0\x72\xb3\x9c\ \x78\x3c\x1e\xd4\x3d\x76\x74\x74\xf0\xec\xb3\xcf\xa2\xaa\x6a\xd0\ \x81\xa2\x50\x2c\x62\x3b\x16\x28\x36\x77\xb4\x5f\xc6\x70\xb6\x0f\ \x89\x24\x3f\xe2\xb2\xfe\xde\x38\xae\xb7\xaf\xeb\xb5\xa2\x28\x8c\ \x0c\x98\xc4\x6a\x42\x28\xaa\x4b\x44\xaf\xa4\xa6\xb2\x86\x78\xae\ \x2f\x48\x96\x95\x89\x7f\x5d\x5d\x5d\x7e\x73\x4e\x55\x41\xba\xde\ \x01\x34\xd7\x3f\xe7\x02\xbf\x2f\xb7\xb7\xac\x3a\x04\x7e\xa0\x55\ \xf6\x2a\xf6\xb5\xff\xb6\x71\x15\x17\x45\x15\x7c\x7a\xd2\x37\xc9\ \xc8\x5d\x5c\xbf\xe8\x31\x1e\x5d\xfd\x20\xcd\x93\x74\x9e\x58\x71\ \x5f\x70\x93\xd1\x68\x94\x2b\xaf\xbc\x92\xc9\x93\x27\xd3\xdf\xdf\ \x8f\xeb\xba\x2c\x5d\xba\x14\xcf\xf3\x68\x6f\x6f\xc7\x71\x9c\x40\ \x1d\x95\x03\xcb\x90\x66\x04\xf1\x8b\x6b\xf9\x49\xa0\x50\x28\x44\ \x5d\x5d\x1d\x42\x08\x6a\x6b\x6b\xdf\x76\xc1\x63\x24\x03\x45\x04\ \xa5\xd0\x9e\xe7\x51\x9d\x51\xe9\x5a\x52\x20\xd7\xed\x62\x65\x3d\ \xd6\x14\x56\xe2\x14\xc1\xb3\x25\x8a\x2a\x70\x0d\x77\x5f\x5b\x43\ \x14\x74\x5d\xc1\x19\xe3\x35\x83\xff\xf4\x20\x04\xb8\xae\x87\x69\ \xfa\xfc\x33\xd7\x71\xa8\x6d\xae\x27\x99\x8f\x13\x8a\x99\x84\x2a\ \x55\xd2\xb6\xdf\x37\xf2\x60\x4a\x15\xde\x57\xa4\x5e\x5e\x78\x81\ \xdf\x30\xc0\xf1\x6c\x4a\xa6\x89\xa6\xe8\xfb\x0a\x60\x0c\x0f\x4f\ \x0a\x5a\xab\x67\xf0\x9b\x3d\xbf\xa0\x2d\x74\x22\xf5\x91\x16\x0c\ \x25\x83\xf4\x08\x04\x52\x2a\x95\x64\x28\x14\x12\x9d\x9d\x9d\xfb\ \x47\xef\x52\x08\x21\x5c\xd7\x45\xda\x60\x7b\xde\x98\x43\xa8\x82\ \x02\x96\x63\x63\x3a\x92\xd1\x91\x04\x72\x8c\x65\x5f\xce\x4c\xe6\ \xf3\xf9\x75\x1d\x1d\x1d\x0f\xd6\xd7\xd7\xff\x58\xd3\x34\xbf\x0f\ \x7c\x9d\xc7\xe1\x0b\x2b\xc0\xae\xa2\x32\x57\x45\x75\x75\x35\x97\ \x5c\x72\x09\xcb\x97\x2f\x67\x78\x70\x18\xc5\xc9\xe1\x86\x5c\x3c\ \xcd\xc3\x8d\xba\x01\xe4\x51\xde\x78\xca\x58\x43\x9c\xa9\xd3\x6b\ \xd8\xd1\xb5\x97\xd3\x0f\xfb\x3b\xde\x1c\x5e\x4d\x32\x51\x64\x76\ \xc3\x09\xbc\xe5\xfc\x01\xcb\xf2\xb3\x86\x85\x7c\x81\x07\x7f\xf9\ \x30\x3f\x79\xea\xfb\xfc\xcd\x27\x4e\xe5\x67\x8f\xfd\xc4\xcf\x82\ \xaa\x7c\x30\x27\x44\x4a\xa9\x4a\x29\x65\xa9\x54\x12\x02\x81\xe7\ \xb9\x54\x44\x15\xfe\xf9\xe1\x8b\x91\x9e\xc0\xb6\x7d\x42\xb6\xa7\ \xb9\x08\x11\x02\x24\xaa\xe2\x1b\xb3\x91\x54\x9c\x5c\x65\x7f\xa0\ \x6e\x00\x1a\x1b\x1b\xc5\x1b\x6f\xbc\xf1\x95\x62\xb1\xf8\x10\xe0\ \x45\xa3\xd1\xeb\xa7\x4d\x9b\xf6\xcd\x64\x32\x89\xa3\x48\xa6\x7f\ \xa5\x92\xd6\x96\x30\x76\x41\x62\x17\x3d\x52\x9d\x36\x99\x6e\x87\ \x25\xff\x6c\x07\x5e\xfb\xd8\xb3\xa6\x44\x2c\x16\x43\xd3\xb4\x5d\ \xf9\x7c\xfe\xce\x96\x96\x96\x1f\x97\x79\x58\x6e\xb5\xa0\xed\xd4\ \x28\x5a\x58\xf2\xd2\xfa\x7e\x7e\xf6\xfd\x5f\xb1\x77\xef\x5e\x6e\ \xbf\xfd\x76\x6e\xb8\xe1\x06\x74\x5d\xa7\xbe\xbe\x9e\x62\xb1\xc8\ \xee\xdd\xbb\x59\xb4\x68\x11\xeb\xd6\xad\x63\xfd\xfa\xf5\xe4\x72\ \x39\xc4\x98\x47\xa7\xeb\x2a\xdf\x79\xf5\x0b\xdc\x7e\xc1\x0b\x7c\ \x7f\xcd\x97\xc8\x5a\x09\x14\x5d\x90\xcf\x9a\x64\xb3\x3e\xea\xeb\ \x58\x2e\x23\x72\x33\x4e\xdd\x56\x96\xed\x4e\x21\x5d\x49\xb1\x54\ \x44\x28\x3e\x13\xf2\x90\x0b\x64\xd7\xae\x5d\x9f\x6a\x69\x69\x19\ \x48\xa7\xd3\x7e\x13\xfd\x71\x02\xd3\x89\xe2\xd5\xee\x61\xb4\x90\ \x25\x22\x6b\x7c\x81\x44\x20\xa4\x84\xe8\x4a\x77\x30\xbf\xfe\x34\ \x8e\x9e\x3e\x8f\xd7\x77\xbc\xc2\x11\xb1\xa3\x59\xea\x3d\x8f\x65\ \x39\x41\x8e\x22\x12\x89\xd8\xc5\x62\xb1\x34\xf6\xb3\x13\x0e\x87\ \x31\x0c\x03\x03\xe8\xff\x95\x43\xbf\x92\x7b\x17\x5a\xab\xbe\x3f\ \xc5\x55\x64\xb3\xd9\x6d\xbb\x76\xed\xba\x41\xd7\xf5\x37\x01\xb5\ \x4c\x44\x90\x42\xe2\xb9\x3e\x27\xca\x35\x21\x6a\x84\x79\xfa\xe9\ \xa7\xb9\xf6\xda\x6b\x79\xe9\xa5\x97\x28\x95\x4a\x44\xa3\x51\xfa\ \xfb\xfb\x89\xc5\x62\x0c\x0f\x0f\xd3\xd9\xd9\x49\x38\xec\x27\xd7\ \x4a\xa5\x12\x8a\x50\xb0\x5d\x0f\xc7\xb3\xa9\xab\x37\xb8\xfe\xb5\ \x4f\xfb\xea\xaf\x4f\x32\xb4\xb9\xc8\x9e\x65\x79\x14\x6d\x8c\x9d\ \xe8\x29\x24\xf2\x43\xa0\xba\x0c\x15\xf6\xb2\x77\x6d\x9a\x5c\xae\ \x04\x82\x43\xef\x65\x8d\x31\xef\x06\x03\xd6\x05\x10\xb2\xa0\x98\ \xf6\x18\x79\xd3\xc4\xca\x7b\xb8\x5e\x0e\xc7\x71\x28\x19\x2e\xb6\ \x5b\xc1\x92\xa1\x9f\x70\x4e\xe3\xb7\x78\x78\xeb\x2d\xec\x16\x2f\ \x92\xd8\xbe\x02\x4f\xba\x64\xb3\xd9\x20\x3e\x79\x3b\x95\xa8\xad\ \xad\x8d\x1b\x6f\xbc\x91\x89\x13\x27\xf2\xcb\x5f\xfe\x92\xae\xae\ \x2e\xc6\x8f\x1f\xcf\xb6\x6d\xdb\xa8\xaf\xf7\xbb\x33\x74\x75\x75\ \x61\x18\x06\x91\x48\x84\xae\xae\x2e\x84\x10\x83\x89\x44\xe2\x37\ \xe5\xb0\xa7\x5c\x60\x34\x61\xc2\x04\xd2\xc3\x69\x5e\xbf\x3e\xe7\ \xc7\x22\x8a\xca\xcb\x2f\xbf\xcc\x86\x0d\x1b\x82\x16\x1d\xe5\xe8\ \xbe\xfc\xb5\x9c\xb3\x28\x63\x76\xae\xeb\x52\xdb\xa9\xb1\xe6\xc7\ \x29\xac\x8c\x87\x53\x92\x38\x79\x89\xf4\x7c\xb7\xa8\xdc\x8b\x45\ \x51\x14\x8c\x90\xc1\x75\x5f\xf8\x21\x6e\xc1\x8f\x9f\x24\xa0\xee\ \xc7\x75\x3e\xa4\xd0\xc9\xfe\xf8\x90\xae\xeb\x2c\x5e\xbc\x98\x75\ \x6b\xd6\xb1\xe9\x66\x0b\x94\x10\x6e\xd1\xc4\x74\x0b\x38\xb6\x43\ \xa9\x52\xe2\x48\x0b\x43\x53\x79\x76\xe8\x26\x4e\x98\x72\x1a\xf9\ \x64\x89\x91\xb7\x7a\xd9\xf3\x72\x81\x62\xf1\xdd\x9f\x8a\xe6\xba\ \x2e\x33\x66\xcc\x20\x1e\x8f\xf3\xc9\x4f\x7e\x92\x19\x33\x66\x90\ \x4a\xa5\x38\xee\xb8\xe3\x68\x6b\x6b\xa3\xbf\xbf\x9f\x50\x28\x14\ \xa4\x46\xcb\x4d\x64\xde\x8e\x3a\x94\x69\x3f\xe5\xf4\xf1\xaa\x55\ \xab\x48\xa5\x52\xbc\xfa\xea\xab\x18\x86\x41\xb1\x58\x0c\xc0\xbf\ \x72\x92\x69\x2c\x6e\x19\x50\x14\xa5\xcc\x48\x98\xfe\xb9\xcf\x7d\ \x4e\x39\xf5\xd4\x53\x79\xf8\xe1\x87\xc9\x66\xb3\xe4\xd4\x5c\x60\ \x43\xcb\x0d\x30\x5d\xd7\x27\x51\x94\x89\xe5\xd5\x4a\x03\x4e\xd8\ \xc1\x52\x2c\x22\x91\x08\x85\x42\x21\xe8\x6c\x71\x48\xb9\xbd\xfb\ \x0b\x66\xcd\x9a\x35\x6c\xd8\xb0\x81\x4f\x7d\xea\x53\x6c\xde\xbc\ \x99\x81\x81\x01\x96\x2e\x5d\x4a\x3e\x9f\xc7\x75\x5c\xa2\x49\x85\ \xa1\x0d\x16\x85\x3e\x87\xe4\xce\x04\xcf\x75\xdf\x87\xa2\x0b\x14\ \x15\x14\x6d\x7f\xba\xa6\xfa\x0e\x44\x76\xd5\xaa\x55\x2c\x58\xb0\ \x80\xdb\x6e\xbb\x8d\xa5\x4b\x97\x22\xa5\xe4\x91\x47\x1e\x21\x9f\ \xcf\x13\x0e\x87\x83\xee\x0e\xa5\x52\x89\xe5\xcb\x97\xbf\x2b\xd5\ \xbf\x0c\xb5\x4b\x29\x39\xec\xb0\xc3\x58\xb2\x64\x09\xba\xae\x73\ \xe2\x89\x27\xb2\x70\xe1\x42\xee\xbd\xf7\x5e\x2a\x2b\x2b\xa9\xaf\ \xaf\x27\x9f\xcf\xb3\x67\x8f\xdf\x71\x63\xeb\xd6\xad\x57\x27\x12\ \x89\xc7\x00\x66\xcc\x98\x51\xb8\xe4\x92\x4b\x22\xa3\xa3\xa3\x5c\ \x7e\xf9\xe5\xdc\x7b\xef\xbd\x9c\x7f\xfe\xf9\xb4\xb7\xb7\x33\x67\ \xce\x1c\x9e\x7b\xee\x39\x66\xce\x9c\x49\x43\x43\x03\xc9\x64\x92\ \x55\xab\x56\xd1\xdb\xdb\x1b\xb8\xe7\x1f\xfb\xd8\xc7\x58\xbb\x76\ \x2d\xbb\x77\xef\xe6\xb0\xc3\x0e\x63\xd7\xae\x5d\x1f\x8c\x40\xca\ \x5e\x48\x2e\x97\xa3\xa1\xa1\x01\x21\x04\xb3\x66\xcd\xe2\xd5\x57\ \x5f\xa5\xb1\xb1\x91\xeb\xaf\xbf\x9e\x07\x1f\x7c\x90\xc4\x8e\x04\ \x8a\x69\x12\x8e\x39\x34\xce\xf6\x4b\xaa\xcb\xcc\xf1\x72\xd3\xe2\ \x77\xab\x1d\x0f\x87\xc3\xdc\x7c\xf3\xcd\xef\xfa\xd9\x65\x1a\x6b\ \xb9\x9b\x36\x10\x60\x45\x6f\xbf\xc6\x2b\xae\xb8\x82\x33\xcf\x3c\ \x93\xe5\xcb\x97\x07\xde\x61\xb9\xe1\x81\x94\x92\xd1\xd1\x51\xf6\ \xec\xd9\x13\x08\x74\x6c\x9e\xa0\xc2\xa8\xb2\xb2\x52\xbc\xfe\xfa\ \xeb\x9c\x7b\xee\xb9\xdc\x70\xc3\x0d\x58\x96\xc5\xe6\xcd\x9b\xe9\ \xea\xea\xa2\xae\xae\x8e\x5c\x2e\xc7\xde\xbd\x7b\xe9\xec\xec\xc4\ \xb2\x2c\x0a\x85\x02\x52\x4a\x8e\x38\xe2\x08\x1e\x7b\xec\x31\x74\ \x5d\x27\x1a\x8d\x52\x51\x51\x41\x22\x91\x38\x28\xd4\xf7\x7d\x55\ \x27\xb6\xb5\xb5\xc9\xa6\xa6\x26\x26\x4f\x9e\xcc\xc0\xc0\x40\xe0\ \x31\xc5\xe3\x71\x1e\x7c\xf0\x41\xde\x78\xe3\x0d\xbe\xfa\xd5\xaf\ \x72\xfb\xed\xb7\x33\x38\x38\x48\x24\x12\xa1\xbe\xbe\x9e\x95\x2b\ \x57\xd2\xdc\xdc\xcc\xae\x5d\xbb\x18\x1d\x1d\xa5\xae\xae\x8e\x81\ \x81\x01\x76\xef\xde\x7d\x51\x22\x91\xb8\x7f\x6c\x51\x66\x56\x55\ \x55\xcd\x14\x42\xbc\x97\x4e\x6d\x9e\xeb\xba\x5d\x83\x83\x83\x6f\ \x96\x6d\xc8\xe1\x87\x1f\x5e\x68\x6e\x6e\x3e\xa0\xcb\xf6\x1f\x2b\ \x77\xdb\x5f\x0d\x6f\xd8\xb0\xe1\xcb\xc9\x64\xf2\x3e\x80\x13\x4e\ \x38\xa1\x58\x28\x14\xc2\x65\x0c\x6d\x7f\xd2\xf4\xfe\x5f\xdf\x4e\ \xa5\x0d\x85\x42\x41\xcc\x54\xee\xef\x55\x6e\x3a\xbd\x65\xcb\x96\ \x2f\x25\x12\x89\x07\x0e\xb9\xca\xca\x64\x32\x74\x74\x74\x04\x79\ \xeb\x32\xd7\xf7\xe9\xa7\x9f\xe6\xea\xab\xaf\xe6\xb5\xd7\x5e\x63\ \xc7\x8e\x1d\x81\x5d\x28\x43\x0a\xa1\x50\x28\xc8\xe2\xbd\xdb\x43\ \x1c\xb3\xd9\xec\xf6\x6c\x36\xbb\xfd\xfd\x5c\x57\x7d\x7d\x7d\x99\ \xdd\x61\x0e\x0d\x0d\x2d\xee\xe9\xe9\x79\xaf\x53\xd8\x35\x35\x35\ \x9b\xcb\x0c\xfe\xe1\xe1\xe1\xe7\xa3\xd1\xa8\x5a\x2c\x16\x8f\x55\ \x14\x65\x3c\x80\xab\x42\xdd\x14\x8d\xe1\xad\x05\xa4\x2b\x29\xd9\ \x25\xc2\x5a\x05\x20\xc7\xf0\xbb\x12\x4d\x4d\x4d\x07\x08\x6f\xff\ \xb6\xeb\x42\x08\xfd\x90\x9f\x90\xfa\xfa\xfa\xdd\xab\x56\xad\x3a\ \xac\xbd\xbd\x9d\xa3\x8f\x3e\x9a\x27\x9f\x7c\xb2\x8c\xe6\x06\x39\ \xec\x70\x38\xfc\x0e\xaf\xe2\xdd\x76\xaa\x61\x18\x6c\xdb\xb6\x2d\ \x38\x21\xff\x2f\x8e\xf1\xe3\xc7\x3f\x1a\x0a\x85\x2e\x04\xc8\x55\ \x78\x9c\xf1\xcd\x46\x22\x06\xe4\x87\xab\xf8\xfa\x79\xff\xc6\xed\ \x2b\xaf\x81\x92\xce\xc0\x86\x22\x6f\x3d\x96\xf5\x1f\xb0\xe9\x37\ \x46\x7b\xa8\xbf\xbf\xff\x8b\xfb\xa9\xc1\xd2\x21\xf5\xb2\xf6\xc3\ \xb3\xe4\x4d\x37\xdd\xc4\x2d\xb7\xdc\xc2\x4b\x2f\xbd\x44\x6f\x6f\ \xaf\xff\x28\x87\x74\x1a\x5d\xd7\x83\x27\xcd\x1c\x4c\x72\x3f\x9b\ \xcd\xfe\xc9\xd6\x1a\xff\x8f\x0c\x25\x70\xf3\x6d\x81\xe7\x49\x4a\ \x49\x41\x72\x47\x9c\xcb\xbe\x7c\x15\x99\x2e\x2b\xd8\xdb\x46\x24\ \x14\xe4\xed\x85\x28\x3f\x68\xe3\xe0\x1f\x36\xf9\xbe\x73\xea\xed\ \xed\xed\x2c\x5e\xbc\x38\x68\x3e\x2c\xa5\xa4\xba\xba\xfa\x8f\x16\ \x5c\xc6\x62\x31\x76\xee\xdc\x79\x6c\x7f\x7f\xff\x7a\xfe\x9b\x8e\ \x53\x4e\x39\x85\xae\xae\x2e\xf6\xdc\x99\xc3\x73\x25\x52\x1a\x08\ \xa9\x53\x5d\x1d\xf1\x0b\x78\xc6\x6c\x46\x39\x3c\xb0\x6d\xfb\x3d\ \xb7\xbc\x7e\x5f\x02\x31\x4d\xf3\x65\xd7\x75\xb7\x95\xbd\x93\x83\ \xe9\x10\x94\x4a\xa5\x6c\xcf\xf3\x46\xff\x3b\x0a\x42\x4a\x69\x5e\ \x72\xc9\x25\x9c\x72\xca\x29\xb4\xb4\xb4\x70\xc7\x1d\x77\x90\x4a\ \xa5\x68\x68\x68\xa0\xb7\xb7\x97\x9a\x9a\x1a\xda\xda\xda\x58\xb1\ \x62\x45\x90\xa2\xd8\xb0\x61\x03\xb6\x6d\xaf\xfb\xc0\x05\x52\x5d\ \x5d\xcd\xf0\xf0\xf0\x65\xc3\xc3\xc3\xfc\xff\x68\xc8\x32\x0e\x15\ \x0e\xfb\x7d\x80\xcb\x7d\xbd\xa6\x4c\x99\xc2\xe6\xcd\x9b\x99\x30\ \x61\x02\x53\xa7\x4e\xa5\xa7\xa7\x87\xee\xee\xee\x32\xb9\xc1\xfe\ \xc0\x05\x72\x28\xdb\x6a\xff\x77\x19\x9a\xa6\x71\xff\xfd\xf7\xf3\ \xc2\x0b\x2f\x90\xcd\x66\x83\xb8\xa5\x1c\x78\x4a\x29\xe9\xee\xee\ \x0e\xbe\xf7\x3c\xef\x7d\x37\xe8\xd7\xf8\x68\xfc\xd9\xe1\x38\x4e\ \xc8\x30\x0c\xd2\xe9\xf4\x01\x1e\xe2\x9f\x8a\x69\xc6\x82\xe7\xf7\ \xec\xad\x88\x8f\x96\xfb\xcf\x8f\x48\x24\xd2\x54\x2a\x95\xaa\xde\ \xe3\xba\xba\x75\x75\x75\x83\xa3\xa3\xa3\x85\x8f\x56\xf0\xa3\xf1\ \xd1\xf8\x68\x7c\x34\x3e\x1a\x1f\x8d\x8f\xc6\x47\xe3\xa3\xf1\xd1\ \x38\x60\xfc\x7f\xa7\x8c\x4b\xc9\xd0\xc3\x6c\x1c\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x1a\x78\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x69\x08\x06\x00\x00\x00\xcc\x7c\x86\x8a\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x88\x26\x00\x00\x88\x26\x01\ \xac\x91\x9d\x06\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x04\x3a\x04\x0e\x03\xc5\x00\x00\x19\xf8\x49\x44\x41\x54\x78\ \xda\xed\x9d\x7b\x74\x54\xf5\xbd\xe8\x3f\xbf\xbd\x67\xcf\x64\x92\ \x0c\x79\x12\xc2\x23\x01\x4a\x28\x8f\x4a\x90\xa2\x16\x6b\xc3\xa9\ \xa0\x02\xf5\xd4\x2e\xbd\xda\x2e\x5b\xee\xa5\x85\x7a\xb4\x75\xf5\ \xae\x16\xef\x83\xf6\xf6\x9c\x73\x5b\xd0\x7a\x7b\xaf\x4b\xaf\xbd\ \xb4\x97\xd5\x7a\x3d\x2a\xb7\xd6\x1e\x3d\xe7\xd4\x5a\xa1\x2a\x78\ \x05\x0f\x4a\x00\x51\x08\xa4\x09\xaf\xc8\x23\x04\xf2\x9a\x24\x33\ \x99\xcc\xec\xc7\xef\xfe\x31\xcc\x66\x1e\x7b\x87\x09\x4c\x12\x70\ \xe5\x3b\x6b\xaf\x64\xf6\xfe\xfd\x7e\xfb\xf7\xfb\xbe\xbf\xdf\xdf\ \x63\x04\x40\x65\x65\x65\x9d\x10\x62\x07\x63\x30\xea\xa0\x00\xaa\ \x65\x59\xda\x18\x2a\xae\x0e\xf0\x00\x85\xa6\x69\x16\xaa\xaa\x0a\ \x80\x94\x12\xcb\xb2\xc6\x30\x33\x42\x20\x84\x40\x51\x94\x14\x82\ \x94\x1b\x86\x51\xe6\xf5\x7a\x01\xc8\xcf\xcf\x67\xe5\xca\x95\x63\ \x98\x1a\x21\xd8\xbf\x7f\x3f\x7b\xf7\xee\x4d\x21\xc8\x44\xc3\x30\ \x2a\xd3\x0b\x9a\xa6\x89\xae\xeb\x63\x18\x1b\x46\xc9\xf0\xf9\x7c\ \x08\x21\x32\x54\xd6\xf8\x0b\x97\x0d\x52\x4a\xfa\xfb\xfb\x69\x6b\ \x6b\x1b\xc3\xdc\x30\x41\x5e\x5e\x1e\x53\xa6\x4c\x41\x4a\x99\x41\ \x90\x80\x65\x59\x81\xf4\x0a\xc3\x65\x4b\x84\x10\x28\x28\x08\x40\ \x20\x88\x19\x26\x31\xcb\x40\xf5\x9b\xf1\x3b\x31\x0f\xaa\xa5\x82\ \x00\xa1\x48\x10\x20\x91\x9f\x38\x82\xa4\x13\x22\x99\x20\x5e\x21\ \x84\xe6\x54\x30\x5d\x9c\x72\x01\x41\xa3\x8f\x93\xfa\x39\xba\x8d\ \x10\x03\x32\xc6\x67\x6e\xc8\x67\x76\x6d\x01\x49\x76\x8d\xfe\x1e\ \x89\x6c\xcf\x27\x76\xce\x87\xd5\xee\xc7\x33\x90\x17\x27\x90\xdd\ \xb1\x4f\x36\x41\x14\xcb\xb2\xd4\x64\x22\x58\x96\x95\x53\x09\x11\ \x40\x8f\x19\xa6\x61\xe0\x04\x1d\x66\x0f\x42\x2a\x4c\x9d\x9e\xc7\ \x8a\xa5\x65\xe4\xe5\x29\x98\x26\x48\x09\xe2\x82\x34\x14\x94\x0a\ \x28\xeb\x47\xcc\x09\x83\x02\xb1\x01\x89\xec\xd3\x30\x7a\x35\x64\ \x9f\x86\x19\xf2\x60\x85\x34\xac\xb0\x07\x2b\xa4\xa2\xe8\x9a\x2d\ \x4d\xf1\x4b\x5e\x13\x04\x49\xe0\x39\x9d\x20\xc2\x49\x12\xdc\x28\ \x78\x39\x10\xb2\x22\xfc\x6b\x7f\x03\x52\x4a\x54\xa9\x52\x31\xc9\ \xcb\x17\xbf\x54\x8a\xb4\xc0\x30\x24\x42\x08\x12\x5d\x10\x71\x1d\ \x05\x52\x20\x11\x60\x48\x34\x55\x81\x62\x13\x6f\xb1\x09\x0c\x10\ \xef\xda\x85\x72\xc0\x40\x48\x62\x9c\xcf\xc3\x68\xf7\xa1\xb7\xf9\ \xf0\x84\xf3\x6d\x4e\x10\x57\xa9\x44\x0d\x26\x21\xae\x94\xcb\x85\ \x84\x18\xd2\x64\x57\xff\xa1\x0b\x12\x20\xf0\xe5\x09\x6e\xbb\xab\ \x0c\x69\x65\xa9\x16\xed\xe7\xc2\xf1\x96\x04\xfc\x45\x02\x8a\x07\ \x10\xb3\x07\x40\x01\x3d\x66\x61\xf6\x7a\xb0\x7a\xbd\x18\xbd\x2a\ \xb2\xcf\x8b\x19\x56\x91\x21\x0f\x46\x48\x41\x89\x7a\x11\x42\xc6\ \xc3\xe2\x51\x92\xa8\xc1\x24\xc4\xb5\x42\x2e\xa4\xe4\xa4\x7e\x0e\ \x43\x9a\x28\x17\xb0\x58\x33\xb7\x00\x45\x11\xc8\x1c\x31\xae\xdd\ \x86\x14\x48\x13\xa4\x09\x1e\xa1\xe0\x29\x92\x50\x14\xbd\x30\x96\ \xfe\x14\x89\xd2\xa3\x92\x81\x36\x0d\xeb\x9c\x9f\x48\x9b\x07\x4f\ \x77\xbe\xad\xee\x46\x4a\xa2\xb2\x96\x90\x64\x62\xe4\x82\x20\xed\ \x46\x4f\x8a\x14\x54\x4e\xf6\x0e\xab\x5d\x16\x4e\xff\x25\x4b\x94\ \x94\x78\xfd\x02\xef\x0c\x1d\x51\xa3\x53\xa2\x48\x4c\xab\x83\x58\ \x8f\x02\x3d\x5e\x62\x3d\x2a\xf4\x7a\x31\xc2\x0a\x84\x35\x62\x21\ \x81\x12\xd1\x10\x6a\x6e\x25\xc9\x0d\xbf\xc3\x4e\x90\x90\x8c\xa4\ \x7c\x2f\x2c\x52\x47\x3d\x20\x03\xc0\x8a\x4b\xa9\x34\x40\x11\x0a\ \x79\x85\x12\x0a\x63\xe4\x4d\x06\x49\x04\x64\xc2\x96\x81\x65\x40\ \xd7\x9f\x4b\x90\x5d\x79\x39\x27\x48\x56\x2a\x2b\x97\x04\x31\x30\ \xe3\x86\xfa\x02\xf8\x7c\xa3\x4b\x10\x57\x02\xa5\xcb\x56\xc2\x63\ \x93\xa0\xfa\x40\xd1\xc0\x90\x72\xe4\x09\x92\x4b\xef\x8a\xf8\x78\ \x6c\xfb\x01\xa0\x88\x6b\x2c\x8c\x10\x49\x03\x19\x01\x18\x54\x42\ \xc6\xb2\xbe\xc3\x97\xb9\x18\x92\x0d\xc9\xb5\xa4\x64\xb6\x25\x87\ \x50\xf7\x82\x5a\x11\xf1\x7a\x71\xc4\x48\x5b\xdd\x08\x2e\xc6\x30\ \xc3\x4a\x90\x1c\x8b\xc8\x90\xbc\xac\x04\x27\xe4\x82\x23\x84\x88\ \x1b\xcd\x54\x50\xb2\xaa\xab\xa8\xd0\xd5\xae\x73\xea\x64\x1f\x35\ \x15\x73\xb8\x61\xc6\x4d\x54\x96\x4e\x60\x7a\xe5\xa7\x50\x15\xe8\ \xec\x6f\xe3\x64\xf0\x2f\xb4\x85\x3e\xe6\x78\x77\x03\x8a\x50\x1d\ \xde\x95\x33\x0c\xe6\x5c\x42\x86\x1c\x87\x0c\xb7\x63\x7a\x29\xc9\ \x78\xfb\x4f\xdd\xf4\xb4\xc3\xab\x3f\xfb\xbf\xcc\x9f\x3e\x1f\x8f\ \xea\x71\xec\xa7\x29\x0d\xce\xf4\x1e\xe5\xd7\x7b\xff\x96\xf3\xa1\ \x93\xa8\x8a\x73\xb9\x44\x46\xc0\x92\x56\x5c\xf2\x10\x59\xe7\xeb\ \xe4\x30\xa8\x40\x27\x3c\x2b\xd9\x78\x01\x57\x72\x5d\x0e\xc4\x06\ \x2c\x5e\x7d\xb1\x0d\x2d\x56\xc6\x47\xcf\xec\x60\x61\xcd\x42\x54\ \x45\x75\xf5\x92\x3c\x8a\xc6\xd4\xe2\x39\x6c\xb8\xed\x65\x6e\xfd\ \xd4\x7d\x18\x96\xee\x58\x2e\xd4\x6b\xb0\xed\x4f\xed\x4c\xb6\xea\ \xb8\xbf\x76\x2d\x4b\x3e\xf5\x55\xe6\x8c\xff\x5c\xd6\x0c\x92\x2b\ \x9c\x0c\x86\x97\x61\x77\x7b\x11\x82\xf4\x66\x06\x6b\xd7\xb2\xe0\ \xf5\x7f\xec\x24\xe0\x2f\xe5\xfd\x5f\xbe\x89\xdf\xeb\xcf\x2a\xc5\ \x92\x90\x80\xfb\x6b\xff\x23\xc5\x79\x15\xfc\x63\xc3\xff\xc4\xab\ \xfa\xec\xe7\xaa\x47\xd0\x72\x64\x80\xe6\xc3\x3d\xdc\xff\xf7\x7f\ \x43\xcd\xc4\x99\x00\xb4\x74\x1f\xe6\xf0\xf9\xf7\xb3\xa0\x88\x95\ \x53\xad\xe1\xa4\xae\x06\x55\x59\xb9\xf3\xf3\xe3\xae\x6e\x32\xa7\ \x2a\x8a\x3b\x72\x0f\x7f\xd0\x47\xa4\xdf\xe4\xe7\x0f\x3e\x62\x13\ \x23\x1d\xa2\x46\x84\xf7\xff\xb2\x1b\x4d\xf8\xb9\x61\xd6\x02\xbc\ \x1e\x6f\x0a\x61\x56\x7c\x7a\x15\x4d\x1d\x7b\x69\xee\xfc\xe0\x22\ \x41\x54\xc1\xc9\x63\x03\x54\x56\x94\x50\x33\x71\xa6\x4d\x40\x04\ \x29\x73\xda\x57\xaa\x6a\x73\xee\xf6\xe6\x42\xe5\x5c\xb6\x1f\x23\ \x05\x87\x3f\x0c\x51\x5e\x12\xe0\xdf\xde\x76\xbf\x63\xa9\x73\xa1\ \x53\xfc\xb7\x9d\xab\xe9\xe9\x0b\xb3\xf5\xe5\x4e\xaa\x27\x54\xf1\ \xde\x2f\xde\xca\x08\xf4\xfe\xcd\x67\xfe\x3d\x8f\xbd\xb3\xca\xfe\ \x1e\x09\x5b\xf4\xf5\x98\xdc\x3c\x6f\x61\x76\x49\xcd\x61\xca\xed\ \x5d\x4a\x0b\x29\x83\x89\x93\x65\x59\x57\x7c\x25\x5c\xc6\xc4\x27\ \xfd\x7b\xe2\xa3\xa8\x82\x86\x7d\x7d\x74\xf7\x84\xf9\xdf\x8f\x3c\ \xe1\x6a\x04\x5f\xf8\xf0\x51\x22\x46\x98\xbc\x7c\xc1\xed\x77\x97\ \x70\xf0\x48\x13\x77\xfe\xf8\xde\x0c\x04\x57\x15\xcd\xa4\xa6\x74\ \x3e\xa6\x65\x20\x91\x74\x77\xe8\x48\x24\xd7\xd7\x5c\xe7\xe8\xd2\ \x5e\xf2\x93\x23\x7c\x24\x2e\x37\x2f\x4b\x71\x32\x7e\xb9\xe4\x06\ \x91\xf6\x71\xba\x27\x10\x28\x42\xa1\xf9\x60\x3f\x15\xe5\x45\x2c\ \xb9\x7e\x89\xa3\x51\xee\x8e\x9c\xa3\xb1\xbd\x1e\x81\x40\x5a\x50\ \x50\xa8\x32\x73\xf6\x38\xde\xfb\x70\x3f\xef\x37\xd6\x67\xd4\x59\ \xb3\xf0\xa7\x58\xc4\xd0\x54\x85\x73\x6d\x61\xf4\x98\xc1\xbc\x4f\ \xcd\xc9\x70\x9f\x84\x14\x5c\xea\x93\x6b\x37\x2b\xeb\xc0\x30\xd9\ \x1d\xcb\xdd\x8c\xa1\xc8\x20\x51\x3a\x74\xb4\xc5\xd0\x63\xb0\xe2\ \xe6\xbf\x72\x8d\x25\xde\x39\xf1\x4f\xa8\xc2\x13\xaf\x7f\xa1\x89\ \x09\x93\x7d\x9c\x3c\x16\xe5\x9d\x8f\xfe\x95\x45\x73\x6e\x4a\x19\ \x47\xb1\x7f\x3c\x4d\x3b\x4b\x68\x3a\x76\x8a\xed\xbf\x78\x99\xfe\ \xaf\xc7\x98\x33\x25\x95\x20\x01\x5f\x09\x9f\xab\x5a\xce\x80\x11\ \x41\x37\x23\xb4\x87\x5b\xe9\xe8\x3f\xe3\x28\x45\xb9\x8e\x43\x46\ \xc7\xcb\xca\x12\xba\xda\x75\x84\x80\x05\x33\xe7\xb9\x96\x69\xee\ \xfc\x00\x55\xa4\xba\xbf\x25\x65\xf1\xe5\x00\x07\x8e\x35\x38\x26\ \x0d\xe7\x55\xcd\xa7\xe1\x2f\x1f\x33\xa9\x64\x32\x25\x53\xca\x33\ \xda\x2c\xcb\x9f\xc8\xaa\x05\x7f\x1b\x4f\xec\x4a\x8b\xff\x77\xe2\ \x65\x5e\x39\xf4\xf4\xd5\x65\x43\x86\x23\x0f\x94\xfa\x72\x99\x71\ \x85\x7a\x4d\xa4\x94\x54\x55\x4c\x74\x6d\xe7\x74\x4f\x33\x42\x28\ \x29\xf5\x0a\x02\x2a\x52\x4a\xce\x76\xb6\x3b\xd6\x99\x3b\xf5\x33\ \x59\x05\x76\x82\x78\x46\x41\x49\x6b\xff\xe2\x75\x15\x24\x17\x73\ \xc1\x11\x8a\x48\x55\x51\xc2\xc5\x7d\x0c\xf7\x59\x08\x21\xa8\x99\ \x3c\xd3\xb5\x2d\xc3\x32\x33\x8c\xb7\x3f\x5f\x41\x08\x41\x6b\xc7\ \x19\xc7\x3a\xd3\x26\x4d\xc6\x32\xa1\xc0\xe7\x4f\x89\x57\x06\x57\ \xaf\xc2\xd9\xf0\xcb\x51\x9a\xa0\x4a\xcf\x69\x5d\x79\x2c\x22\x2e\ \xe9\xd3\x87\x43\x71\x64\x57\x96\x95\x39\x47\xef\x66\xd4\x11\x91\ \xaa\x27\x9e\xfe\x08\x47\x23\xce\x12\x32\xb3\x9a\xaf\xfd\x4d\x25\ \x13\xef\x9b\x45\x59\x51\x11\x47\xfe\xe1\x50\xaa\x1b\xdd\x77\x8a\ \x7f\x3e\xf8\x0c\x9a\xe2\xa3\xc0\x57\x48\x47\xf4\x63\x67\x82\x58\ \x57\x81\x0d\x19\x49\xd0\x63\xf1\xc1\x96\x14\x16\x3b\x3f\x37\x07\ \x5c\x93\x4c\x9a\x4f\x10\x89\x39\x3f\x2f\xce\x1b\x8f\xc7\xa3\x90\ \xe7\xc9\xc7\x32\x32\x35\x74\xc4\xe8\xe3\x40\xc7\x9b\xa9\x32\xe2\ \xb4\x0a\x67\xd8\xd5\xf8\x20\x5e\x56\x6e\xd7\x65\x65\x17\x80\x99\ \x46\xbc\x63\xf9\xde\x80\xab\x84\xb8\x81\xd7\xab\x10\xee\x77\x5e\ \x87\xec\x55\xf3\x2e\xa6\x0c\x84\x73\xf7\x44\x36\x19\xe2\xd1\xcc\ \xf6\x26\x62\x91\x5c\xac\x5c\x8c\xe3\x41\xa4\x7d\x77\x20\x88\x39\ \x78\xf4\xac\x9b\x51\x57\xd2\xfa\x7c\x0a\xba\x61\x3a\x3e\xd3\x54\ \xef\xc5\xf5\x73\x0e\xed\x0b\x57\xab\x96\x8d\xea\xcd\xb5\x2a\x1f\ \x64\x3e\x64\xa4\x67\x0c\x0d\x43\x0e\x3a\xdf\x1e\x1b\x54\x65\x29\ \x18\xba\x85\x69\x99\x19\x59\x61\x4d\xf1\x5d\x94\x84\x2b\xc8\x47\ \xe5\x1a\x1f\xc9\x11\xfb\x88\x67\x7b\xb3\x51\xc0\x8a\x10\xf6\x4c\ \xe0\x50\xb8\x53\x42\xea\xaa\xc7\x61\xe2\xea\x38\x3e\x86\x3f\x52\ \x57\x46\x42\x34\xb3\x01\x55\x15\xe8\x86\x3b\x07\xda\xb6\xc0\x81\ \xde\x7a\xcc\x42\x55\xe3\x3b\x91\xd2\x07\x69\x5a\xc6\x05\x0c\x08\ \x57\x09\x1b\x2d\xc8\x5a\x65\xb9\xcd\x66\x5d\x49\x2e\x2b\xcd\x8a\ \x3a\xbb\xaf\x03\xee\x8c\xa0\xa9\x3e\xc7\x7a\x08\x81\x11\x13\x68\ \x9a\xc7\x71\x90\xba\x15\x03\x71\x31\x8b\xe6\x4a\xd5\x51\xca\xf6\ \x66\x6d\x43\x92\xb3\xb5\x23\x25\x21\x08\x88\x9a\x11\x7c\x6a\xe6\ \x3c\x88\x6d\x0b\x5c\x5c\x66\xaf\xe6\x71\x71\x06\x62\xb9\x41\x20\ \x16\xb9\x44\x47\xd6\xd9\xde\x5c\x4a\x87\x9b\x4d\x72\x4a\x6f\xfb\ \xfc\x71\x75\x73\xae\xfb\xbc\x8b\xca\xf2\x39\xd6\x13\x02\x62\x31\ \x49\x9e\xe6\x75\xce\x00\xc4\x82\x17\xd3\xfe\xd2\x0d\xd9\x97\xfe\ \x0c\x47\xb6\x77\x48\x81\x61\xee\x88\x92\x39\x43\xa8\x38\x98\xae\ \xfc\x02\x15\x45\x51\xe8\xea\x09\x52\x5d\x3e\xd5\x51\x65\x09\xe9\ \x10\xb4\x49\xe2\xa9\x91\x7c\x67\x1b\xd3\x1b\xed\x8e\xef\xd8\x12\ \x02\xb7\x89\x41\x25\x8b\x94\x9e\xcc\xf1\x14\xee\x90\x92\x8b\x39\ \x9d\x0f\x11\xd9\x39\x0c\xfe\xfc\xb8\xbb\xda\xda\xd9\x36\x88\x1d\ \xf1\x66\x1a\x6d\x23\xfe\x8e\xc2\xbc\x80\x0b\x41\x3a\x93\xe2\x53\ \x71\x45\x4a\x2b\xd7\x30\x6a\xb9\xac\x6c\xa0\x70\x5c\x9c\x20\xc7\ \x5b\x5b\x5c\xcb\x54\x17\xcf\xe2\x48\xc7\x47\x29\x29\xf8\x70\x28\ \x1e\x10\x56\x8f\x9f\xe2\x58\xa7\x2d\xd4\x92\x23\xe4\x31\xba\xb9\ \x2c\xb7\x55\x11\x97\x3d\x9a\x34\x9d\x9d\x0e\x25\xe5\x1a\x48\xc9\ \xfe\xa3\x07\x5c\x9b\x99\x51\x32\x9f\xa6\xf6\x0f\x52\x54\x4c\x7f\ \xc8\x02\x29\x19\x5f\x52\xea\x58\xe7\x6c\xdf\x09\xdb\x06\x38\x8e\ \x27\xcb\x4d\xa5\x72\x98\x56\x9d\x64\x6d\xd4\x73\x16\x8b\x08\x01\ \x8a\x62\x5f\x82\xf8\x2e\xdc\xf4\x4f\x69\xb9\x06\x8a\xc2\xa1\x13\ \xcd\xae\x1c\xf4\xb9\xaa\xe5\x58\xd2\x4c\xa9\x17\xec\x34\x40\x51\ \x58\x38\x6b\x81\xe3\x38\x4e\x06\x9b\xe2\x04\x54\x04\xc2\x61\xb5\ \x8b\xa6\xe6\xa1\xc8\xe4\x16\x9d\xfb\x37\x12\x69\x93\x41\x6d\x48\ \x32\x05\x47\x62\xa1\x9c\xd7\x27\x98\x32\xcd\xc7\xc1\xa3\xcd\x1c\ \x3d\xdb\x9c\xd1\x61\x29\x25\x13\x0a\xab\xa9\x2c\x9c\x9a\x82\xf0\ \xf3\xad\x31\x2c\xcb\xa2\xae\xf6\x73\x19\x03\x6e\x09\x1e\xe6\x7c\ \xe8\x54\xdc\xad\x56\x04\xb1\x68\x66\x02\x72\x42\x41\x15\xba\x15\ \x45\x37\x74\x4e\x9f\xee\xa3\x37\xe8\x9c\x13\x93\x96\xcc\xe9\x42\ \xb9\xac\x25\xc4\x2d\x1e\xb9\xa2\x55\x27\xe9\x04\x72\x98\x90\x33\ \x0d\x58\xb0\x28\x80\x47\xd5\xf8\xbb\xff\xf3\xb8\x2b\x47\xdd\x32\ \xf5\x2e\x4c\xcb\x44\x51\x05\xbd\x41\x83\xa3\xcd\xbd\x2c\xbd\x71\ \x11\xb5\xd3\x6b\x33\xea\xbc\xd6\xf8\x1b\x3c\x8a\x06\x12\xbc\x3e\ \x85\x48\x34\x13\xd9\xaa\xe2\xe1\x3f\xd7\x3d\xcb\xd4\xe8\xdd\xac\ \xb9\xfe\x67\xac\xff\xeb\x67\x1d\xfb\x37\x1c\xab\x4e\xb2\xb6\x21\ \x09\x24\xe6\x26\xdb\xeb\xb0\x3a\x5d\x38\xc7\x02\xf9\x85\x2a\x53\ \xa7\x17\xb0\x6d\xdf\x7b\x1c\x6d\x3d\x4a\xcd\xa4\x9a\x8c\x72\x77\ \xd4\xac\xa4\xab\xff\x2c\xbf\xdd\xf9\x02\x3b\xdf\xe8\xe3\xcb\x75\ \xb7\xf3\xcc\x7f\xf8\x5f\x19\xe5\x4e\x74\x1f\xa2\xa9\x73\x9f\xbd\ \xce\xb7\xb8\xd4\x43\x4f\xb7\x41\xd3\xe9\x26\x66\x4d\x99\x95\x32\ \xce\x69\xa5\xb3\x59\xf7\xb5\xd9\x00\x9c\xea\x69\x1a\x24\xa0\x1f\ \xfe\x94\x92\x32\x98\x77\x95\x2b\x09\x89\x13\x45\x5c\xdc\x56\xe0\ \x70\xd9\x8b\x12\x6e\x28\x04\x09\x3f\xfb\xed\x53\xae\xb6\xe4\xfe\ \xf9\xff\x89\x8d\x5f\x7b\x9d\xc3\xcf\xed\x64\xf3\x0f\x7f\x8d\x4f\ \xf3\x65\x38\x0c\x6f\x1c\x7d\x21\xe5\x7d\x53\x6b\xf2\x40\xc2\x3f\ \xed\x7c\x6d\x50\x5b\x29\x50\x1c\xfb\x97\x58\x75\x32\xe2\xeb\xb2\ \x46\xc3\xe5\x4d\x86\xf2\x4a\x8d\x1b\x6e\x19\xc7\x2b\xdb\xff\xcc\ \xaf\xfe\xb4\x29\x13\x61\x17\xbe\x57\x8f\xaf\x62\x52\x49\x55\xc6\ \x80\x04\x82\x57\x0e\xfd\x82\x03\x6d\xef\xa6\xdc\x9f\x54\xed\xe3\ \xc6\xc5\xe3\x78\xea\xa5\x67\xf8\xf5\x96\xe7\x1c\x6d\xd4\xbb\x2d\ \x7f\xe0\xf9\x0f\x1f\xcd\xc6\x51\xcc\x99\xdb\x9b\x55\xfa\x3d\x97\ \xfb\x43\x86\xec\x0e\x9a\x92\x9a\xb9\x7e\x06\x06\x8a\xf9\x2f\x9b\ \xfe\x3b\x05\xbe\x00\xff\xee\xb6\xfb\x5d\x83\xba\x64\xc4\x1a\x96\ \xce\x96\xe6\x7f\x60\xdb\xf1\xdf\xc5\x6d\x47\xca\x98\x24\x33\x66\ \xfb\x99\x3e\xd3\xcf\x96\x8f\x7f\xc1\x9f\x36\x6e\xe4\xf3\x73\x6f\ \xa4\xbc\xa8\x9c\x96\xee\xc3\x9c\xed\x6b\xc1\xa3\x78\xf0\x28\x5e\ \x67\xd5\x34\x4c\x33\x86\x23\x1e\x87\x88\xcb\xb0\x39\x52\xc2\xdc\ \xeb\xf3\x99\x5c\xed\xe3\xd1\x17\x1f\xe7\xb7\x6f\xfc\x0b\xcf\xae\ \x7b\x8a\x89\xa5\x93\x5c\xeb\xed\x6f\x7d\x9b\xd7\x9b\x9f\xe5\x6c\ \xa8\x25\x83\x18\xc9\xed\x0a\x05\xa6\x54\x15\x02\x92\x93\xe1\x83\ \x9c\x0c\x4b\x04\xf1\x39\xf7\xc1\x6c\x84\x35\x42\xab\x4e\x94\x6c\ \xf3\x2d\x23\xb9\x3f\x24\x81\xc0\xe2\x32\x0f\x7f\xfd\xb5\x32\x2a\ \xae\x3b\xc3\xc2\x87\x3f\xcf\xb2\x75\x77\xd3\xda\x75\xd6\xb1\xfc\ \xef\x0e\x3e\xc1\xb9\xf0\xc9\x21\xec\xa0\x12\x17\xd6\x61\xa9\x17\ \xed\xdb\x10\x82\xdb\x2b\xc5\x99\x5b\xc4\x7e\xc9\x19\x43\xd3\x34\ \x87\x1c\xfe\xa7\xa4\xbf\x0d\x23\x65\xbf\xbd\x69\x19\x08\x4b\xb8\ \xe7\x8b\x64\x6a\xe6\xc8\x30\xa1\xb0\x04\x66\xce\x2e\x66\xf7\x9e\ \x8f\x78\x63\xef\x36\xbe\x79\x47\xe6\x89\x77\x9f\xa9\x58\xc4\xfb\ \xa7\x5e\xbf\x44\xe6\x49\x66\x9d\xaa\x92\x69\x37\x23\xfd\x11\xfa\ \xfb\x8d\xdc\x79\x53\x8a\x92\xbd\xca\xb2\x2c\x0b\x5d\xd7\x09\x87\ \xc3\x57\x2c\xa6\x51\xdd\x40\x58\xa9\xf3\x13\xf2\x32\xdc\xc7\x92\ \xf1\x60\x18\x06\xef\x35\xec\xe5\x9b\x77\xac\x8c\xa7\xde\x93\x14\ \xe2\x8a\x4f\x7f\x93\xe6\x8e\x0f\xe8\x8b\x06\x31\xa4\x8e\x31\xc8\ \x2a\x95\x6c\x74\x6b\xfa\x84\x56\xb4\xdf\xc0\x30\x72\x47\x10\xc3\ \x30\x18\x18\x18\xc8\x38\xb5\xcf\x51\xbe\x63\xb1\x18\xb1\x58\x2c\ \x67\x36\x24\xd9\xed\x4d\xec\xeb\x1b\xea\x35\xb1\xca\x87\xd7\xab\ \xf0\xcf\x17\xdc\xd6\x74\x8e\x1e\x5f\x30\x85\xbf\xbb\xf5\xb7\xfc\ \xd7\x25\xbf\xe3\xce\x4f\xaf\xc6\xb0\x62\x43\x7b\x47\xc6\x2a\x7d\ \x71\x31\x1e\x53\xa0\xaf\x2d\x77\xc4\x18\x72\x1c\x62\x9a\x66\x4e\ \xf7\x87\xe4\x2a\x3f\x79\xcb\xed\xc5\xb4\x77\xf5\xf1\xf7\x2f\x6c\ \x70\xd4\xf9\x5e\x4f\x1e\x25\xf9\x15\x14\xfa\x8a\x73\xb6\x8d\x59\ \x51\x05\x67\x0f\x45\x31\x42\x66\x4e\xe3\x10\xb7\x88\x5d\x19\x2e\ \x63\x6e\x1b\xaf\x1c\x05\xb7\x96\x25\x99\x54\xed\xa3\xf6\xb3\x25\ \xfc\x8f\xcd\x9b\x78\x6b\xff\xf6\xac\xed\xd8\x15\x31\x82\x80\xc3\ \x2f\xf6\xa2\x78\x73\x8b\x97\xcb\xf2\xb2\xae\x26\x48\x48\xc4\xe7\ \x97\x14\x31\x77\x41\x80\x6f\x3c\xb6\x9a\x97\x77\xbd\x44\x7b\xef\ \x79\x42\x03\xbd\xe8\x66\x94\xa8\x11\x21\xa2\x87\xe9\x8f\xf5\x72\ \xa5\x9c\x90\x60\xa6\x13\x6f\xf7\x13\x0b\x9a\x23\x36\x4e\x8f\x7b\ \xfe\x49\xe4\x26\x77\x93\x63\x0e\xb6\x2c\x58\x78\x4b\x80\x79\x0b\ \x0b\xf8\x7d\xf3\x63\xfc\xf9\xf4\x46\x4a\x03\x25\xf8\x7d\x7e\x4c\ \xcb\x24\x66\x46\x08\xc7\x7a\xd1\x14\xef\x15\xbd\x47\xf3\x2b\x9c\ \xd8\xd5\xcf\x91\x7f\x09\x0d\x4b\x0e\xcb\x0d\xbf\x1e\xae\x41\x90\ \x16\x68\x5e\x85\x12\x6f\x1e\x10\x25\x18\x6b\x23\x18\xbb\xcc\x44\ \xe0\x85\x55\x49\x52\x82\x11\x95\x98\x31\x0b\x23\x22\x39\xb6\xbd\ \x9f\x33\x3b\x22\xa8\x9a\x18\x56\x89\x77\x3a\xb7\x77\x78\x25\xe4\ \x6a\x52\x7b\x0a\x08\x35\x6e\xa8\x0d\x43\xd2\x73\x46\xa7\xb7\xc5\ \xa0\xe7\xb4\x4e\xff\x19\x13\xbd\x5f\xa2\xf7\x5b\xc4\xfa\x2c\xa4\ \x89\x4d\x8c\xe1\xc2\x43\x62\x0d\xf5\x35\x2f\x21\xd9\xc6\x13\x66\ \x4c\xda\x57\x34\x64\x11\x3c\x65\xd0\x73\x4c\xa7\xfb\x63\x9d\xc8\ \x19\x23\xce\x74\x4a\x9c\x50\xe9\xd6\x54\x0c\xb3\x75\x1d\x35\x09\ \x91\x62\xf8\xce\x98\xb4\x39\x5e\x11\x98\x52\xd2\x7b\xd6\xa0\xaf\ \xc5\xa0\xe7\x8c\x41\xf8\xb4\x41\x2c\x2c\x31\xc2\x16\xb1\x7e\x89\ \x19\x89\xaf\xe1\x4a\xa8\x28\x4f\xde\xe8\xfb\x33\x59\xdb\x90\x5c\ \x8a\x68\x7e\x97\x42\xa4\xd8\xe2\xb2\xd7\x9e\x27\x73\xbc\x2e\xb1\ \x62\x12\x53\x97\xc4\xfa\x25\xc1\xd3\x3a\xbd\xc7\x0c\xba\x3e\xd6\ \xe9\x3f\x69\xc6\xc3\x39\x9b\xe3\x45\x4a\xf4\xa8\x5c\x65\xba\xc0\ \x8d\xe9\x3d\x43\xa5\xe0\x50\x61\xdc\x79\x15\x8f\x2e\xe8\xad\x30\ \x11\x52\x64\xc5\xf1\x42\x11\x48\x24\xbd\xe7\x4d\x42\x1f\x27\x38\ \xde\x24\xd6\x67\xd9\x1c\x6f\xf4\x4b\x7b\xa9\x95\x10\xe0\xf1\x89\ \x1c\xe4\x9a\x47\x1f\x5c\x93\x8b\xb9\x5b\x75\x02\x05\xdd\xf1\xb3\ \xdc\x43\x65\x16\xc9\x7b\x2a\x2d\x23\xae\xdf\x2d\x5d\xa2\x0f\x48\ \x7a\x5a\x8d\x38\xc7\x9f\xd4\x09\xb7\x98\x60\xe2\xaa\xe3\x15\x95\ \x6b\x1e\xb2\x5e\x28\xe7\x66\x70\xae\x84\x28\x85\xdd\x2a\xaa\x2e\ \x68\xff\x4b\x8c\x70\x9b\x49\xf8\x94\x49\xb4\xcf\x42\x0f\x49\xf4\ \xb0\x85\x1e\x96\x71\x5b\xa3\xc4\x39\x5e\xf5\x88\x4f\xa2\xcb\x91\ \xa1\xb2\xb2\xf6\xb2\x72\xed\xea\x49\x01\xfe\x90\xca\xa1\x5f\x87\ \x3e\xb1\x1c\x9f\x0b\xc3\x3e\xb2\x71\x88\x00\x45\x13\x8c\x81\x7b\ \xa4\xae\x8c\xa1\xe6\x1a\x30\xea\x39\xb7\x21\x63\x70\x65\x6e\xaf\ \xc8\x72\x8b\x17\x80\xaa\xaa\x68\x9a\x86\x65\x59\xf6\x74\x6f\x2e\ \x37\x5a\x5e\x6d\x5e\x50\x2e\xeb\x0d\x29\xb9\xe8\xa6\xe3\x2c\xcb\ \x62\x60\x60\x80\x3b\xef\xbc\x93\x3b\xef\xbc\x93\xf1\xe3\xc7\x13\ \x08\x04\x88\xc5\x62\x04\x83\x41\x76\xef\xde\xcd\xee\xdd\xbb\xd1\ \x34\x2d\xc5\x8b\x70\xfa\x9b\xed\xb3\xa1\x96\x4b\xf4\x33\x19\x41\ \x6e\xe5\xae\xf4\x5d\x4e\x7f\x13\x53\xe0\xb1\x58\xcc\x95\x39\xdd\ \xee\x7b\xb2\x49\x78\x25\xc3\x67\x3f\xfb\x59\x7e\xf9\xcb\x5f\x52\ \x96\x76\x26\x49\x22\x76\xb9\xf5\xd6\x5b\xe9\xed\xed\xe5\xe9\xa7\ \x9f\xe6\xe8\xd1\xa3\x19\x03\x4f\xb4\x9d\x3e\x5b\x96\x3e\xd8\xc1\ \xbe\x67\x5b\x6e\xb0\xff\xdd\xbe\x5b\x96\x95\x72\x88\xdb\x60\xfd\ \x75\xeb\x97\xc7\xe3\xc1\xeb\xf5\xe2\xf7\xfb\xe9\xef\xef\xb7\x67\ \x60\xb3\x91\x24\xe5\x52\xfa\x2d\x71\x19\x86\xc1\x8f\x7e\xf4\x23\ \x5e\x7a\xe9\x25\x9b\x18\xe9\xcb\x45\x13\x10\x08\x04\x58\xb7\x6e\ \x1d\x5f\xff\xfa\xd7\x5d\x17\x06\xe4\xe7\xe7\x53\x57\x57\x47\xe2\ \x07\x2d\xaf\xc6\x20\x2d\x5d\x33\xdc\x7a\xeb\xad\x8c\x1f\x3f\x3e\ \x2b\x35\x24\xa5\x44\x51\x14\x0a\x0a\x0a\xc8\xcb\xcb\x73\x9d\xcb\ \x1f\xb2\x97\x95\xa8\xf4\xfd\xef\x7f\x9f\x55\xab\x56\xd9\x1d\xaf\ \xaf\xaf\x67\xf5\xea\xd5\x6c\xdd\xba\xd5\x2e\x6b\x18\x06\x3f\xff\ \xf9\xcf\x59\xb3\x66\x0d\x07\x0e\x1c\xe0\x8e\x3b\xee\xe0\x9e\x7b\ \xee\x71\x1c\xec\x8a\x15\x2b\xf8\xce\x77\xbe\xc3\x4d\x37\xdd\x34\ \xea\x84\x50\x14\x85\x69\xd3\xa6\x0d\x5a\x6e\xee\xdc\xb9\x6c\xd8\ \xb0\x81\x87\x1e\x7a\x68\xc8\xf6\xc1\xe7\xf3\xe1\xf3\xf9\x2e\xcf\ \xcb\xba\x78\x02\xb4\xb0\x7f\x20\x6c\xce\x9c\x39\x7c\xef\x7b\xdf\ \x4b\x79\xd1\xb9\x73\xe7\xf0\xf9\x7c\x4c\x99\x32\xc5\xae\xf7\xf4\ \xd3\x4f\xd3\xd8\xd8\xc8\xda\xb5\x6b\x99\x37\x2f\x7e\x32\xdc\x3d\ \xf7\xdc\xc3\xfe\xfd\xfb\x69\x69\x69\x49\xe9\xe4\xce\x9d\x3b\x89\ \x46\xa3\x1c\x3c\x78\x70\x54\x09\x12\x8d\x46\x79\xe8\xa1\x87\xb8\ \xf9\xe6\x9b\x79\xe0\x81\x07\x5c\xcb\x1d\x3f\x7e\x9c\x27\x9f\x7c\ \x92\x03\x07\x0e\x5c\x56\xe0\xe7\xf3\xf9\x30\x0c\xc3\x79\x01\xfa\ \x50\x24\xc4\x30\x0c\x36\x6d\xda\x94\x71\xff\xdc\xb9\x73\x48\x29\ \xa9\xac\xac\x44\x4a\xc9\x0b\x2f\xbc\x40\x53\x53\x13\xab\x57\xaf\ \x66\xde\xbc\x79\x29\x52\xb1\x76\xed\xda\x94\x05\x77\x7e\xbf\x9f\ \x50\x28\xc4\x5b\x6f\xbd\x45\x38\x1c\x76\x7c\xaf\xa6\x69\x68\x9a\ \x86\x94\x92\xbc\xbc\x3c\x02\x81\x00\xf9\xf9\xf9\x59\x9e\xb1\x1b\ \x7f\x47\x20\x10\xa0\xa0\xa0\xc0\x9d\x1b\x3d\x1e\xaa\xab\xab\x59\ \xb9\x72\x25\xcd\xcd\xcd\xe4\xe7\xe7\xe3\xf7\x67\xee\x91\xf7\xf9\ \x7c\x78\xbd\x5e\xb6\x6c\xd9\xc2\xf1\xe3\xc7\x07\x95\x36\x55\x55\ \x29\x2c\x2c\x64\xdc\xb8\x71\x14\x16\x16\xda\x2a\x59\x08\xe1\xd8\ \x76\x56\x46\x3d\xf9\x5a\xb4\x68\x11\x13\x26\x4c\xc8\x48\x38\xb6\ \xb5\xb5\x21\x84\xa0\xa2\xa2\x82\x17\x5f\x7c\x91\x37\xdf\x7c\x93\ \x07\x1e\x78\x80\xba\xba\xba\x0c\x5d\x5a\x52\x52\xc2\xdc\xb9\x73\ \x69\x6e\x6e\xa6\xa4\xa4\x84\xa7\x9e\x7a\xca\x26\xc4\xb7\xbf\xfd\ \x6d\x47\x3b\x72\xef\xbd\xf7\xe2\xf1\x78\xe8\xea\xea\xe2\xab\x5f\ \xfd\x2a\x7e\xbf\x9f\x48\x24\xc2\x9b\x6f\xbe\xc9\xb3\xcf\x3e\x3b\ \x28\x92\x1f\x7e\xf8\x61\x6e\xb9\xe5\x16\x2c\xcb\xc2\xe3\xf1\xb0\ \x67\xcf\x1e\x1e\x7d\x34\x75\x55\x7b\x2c\x16\xe3\xc1\x07\x1f\xe4\ \xde\x7b\xef\xb5\x55\xe8\xb2\x65\xcb\xa8\xaf\xaf\xe7\x87\x3f\xfc\ \xa1\x5d\x2e\x12\x89\xb0\x71\xe3\x46\x6a\x6a\x6a\x88\x46\xa3\xfc\ \xf8\xc7\x3f\x66\xff\xfe\xfd\x19\xef\xd5\x75\x9d\xeb\xae\xbb\x8e\ \x47\x1e\x79\x84\xda\xda\x5a\x2c\xcb\x42\x55\x55\x36\x6c\xd8\xc0\ \x1f\xff\xf8\x47\x9b\x58\xaa\xaa\xda\x8e\xc3\x65\x49\x48\x42\xc7\ \x27\x57\x94\x52\xd2\xda\xda\x4a\x75\x75\x35\x3b\x76\xec\x60\xfb\ \xf6\xed\xdc\x77\xdf\x7d\x2c\x5e\xbc\x38\x73\x7b\xc0\x85\x7a\xb3\ \x67\xc7\x37\xc4\x74\x77\x77\xb3\x6a\xd5\x2a\xf2\xf3\xf3\xe9\xec\ \xec\x74\xfd\xbd\xdd\xea\xea\x6a\x96\x2c\x59\xc2\xf2\xe5\xcb\x79\ \xf0\xc1\x07\x59\xbe\x7c\x39\x67\xce\x9c\xe1\xae\xbb\xee\xc2\xe3\ \xf1\xb8\x7a\x2d\x6b\xd7\xae\xe5\xb6\xdb\x6e\x63\xe3\xc6\x8d\x7c\ \xe5\x2b\x5f\x61\xf3\xe6\xcd\xd4\xd5\xd5\xb1\x64\x49\xea\xd1\xb3\ \x5e\xaf\x97\x4d\x9b\x36\xb1\x79\xf3\x66\x00\xd6\xad\x5b\xc7\xd2\ \xa5\x4b\x59\xb7\x6e\x5d\x86\xa4\x3d\xfc\xf0\xc3\xd4\xd7\xd7\x53\ \x5c\x5c\xcc\xd9\xb3\xce\x6b\x8b\x67\xcf\x9e\xcd\xf3\xcf\x3f\x4f\ \x51\x51\x11\x2b\x56\xac\xa0\xb6\xb6\x96\x65\xcb\x96\xd9\x2a\x2e\ \x81\x87\x4b\x39\x31\x97\xf4\xb2\x26\x4c\x98\x90\xf1\x3c\x18\x0c\ \xd2\xd7\xd7\xc7\xc0\xc0\x00\x9b\x37\x6f\x66\xd9\xb2\x65\xdc\x75\ \xd7\x5d\x83\xfa\xd7\x25\x25\x25\x36\xd2\x4a\x4b\x4b\x51\x55\x95\ \x8f\x3e\xfa\xc8\xb5\x83\x93\x26\x4d\xa2\xa0\xa0\x80\xf5\xeb\xd7\ \x13\x0e\x87\xf1\x7a\xbd\xec\xde\xbd\x1b\x80\xb2\xb2\xb2\x0c\x82\ \x18\x86\xc1\x82\x05\x0b\x58\xbc\x78\x31\x7f\xf8\xc3\x1f\xd8\xb2\ \x65\x0b\x3e\x9f\xcf\x56\x31\x45\x45\x45\x8e\x04\xac\xae\xae\x06\ \xe0\xe4\xc9\x93\x83\xaa\xa2\xa9\x53\xa7\x62\x9a\xa6\x63\x39\x29\ \x25\x3f\xf8\xc1\x0f\x6c\xf5\xdc\xd9\xd9\x49\x61\x61\x21\x5d\x5d\ \x5d\x9c\x38\x71\x22\x15\xe1\x8a\x32\x74\x2f\x2b\xb9\xe0\xb8\x71\ \xe3\x32\x9e\x1f\x3a\x74\x28\xbe\xd1\xb2\xae\x8e\x68\x34\x3a\xe8\ \x82\xec\x04\x24\x74\xb9\x69\x9a\xd4\xd6\xc6\xf7\x03\x1e\x3c\x78\ \x30\x83\x20\x09\x44\x4f\x9c\x38\x91\x96\x96\x16\x4e\x9c\x38\x61\ \x3b\x17\x55\x55\x55\x00\xb4\xb7\xb7\x67\x1e\x32\xa3\xeb\xb6\xe3\ \xf1\xcc\x33\xcf\x50\x58\x58\x48\x5e\x5e\x1e\xb7\xdf\x7e\x3b\x96\ \x65\xd1\xd8\xd8\xe8\x38\xce\xaa\xaa\x2a\x2c\xcb\xe2\xd4\xa9\x53\ \x83\x06\x71\xd3\xa6\x4d\xe3\xd0\xa1\x43\x19\x63\x95\x52\x52\x54\ \x54\xc4\x8d\x37\xde\xc8\x87\x1f\x7e\x48\x73\x73\xb3\x6d\xe7\x14\ \x45\xc9\xb0\x79\xc9\xef\xb8\xac\x19\xc3\x60\x30\x98\x71\xbf\xb1\ \xb1\x11\x55\x55\x59\xba\x74\x29\x07\x0e\x1c\x60\xdb\xb6\x6d\x2c\ \x5d\xba\x94\xf2\xf2\x72\xd7\xb6\x42\xa1\x90\x4d\x90\x84\x07\x96\ \xdc\xf9\x74\x6e\x04\xd8\xb1\x63\x07\x9a\xa6\xd9\xf5\xae\xbf\xfe\ \x7a\x82\xc1\x60\x4a\xf0\x96\x80\xc9\x93\x27\x53\x51\x51\x41\x24\ \x12\xe1\x27\x3f\xf9\x09\x81\x40\x80\xea\xea\x6a\xda\xda\xda\xd8\ \xb0\x61\x03\x0d\x0d\x0d\x78\x3c\x9e\x8c\xd8\x62\xfa\xf4\xe9\x34\ \x36\x36\xa2\xeb\xba\xfd\xae\xf4\x32\x09\x29\xaa\xaf\xaf\xcf\x60\ \x20\xc3\x30\x58\xbe\x7c\x39\x00\x2f\xbd\xf4\x12\x89\xdf\xa5\x1f\ \x4c\xda\x06\x4b\x2d\x79\x2e\x15\x24\x39\xe9\xcc\xc3\x87\x0f\x53\ \x59\x59\x89\xaa\xaa\x2c\x5e\xbc\x98\xe6\xe6\x66\xde\x7e\xfb\x6d\ \xee\xbb\xef\x3e\xd7\x17\x76\x74\x74\xd8\x03\xbc\xee\xba\xeb\xe8\ \xea\xea\xc2\x34\xcd\x0c\xc4\x26\x10\x0f\xa4\xa8\xb4\xd2\xd2\x52\ \xc6\x8d\x1b\x47\x43\x43\x83\x63\x36\x21\xc1\x0c\x67\xce\x9c\x61\ \xd7\xae\x5d\x74\x74\x74\xd0\xd0\xd0\x40\x30\x18\xc4\xe3\xf1\x64\ \x10\x43\x4a\xc9\xc4\x89\xf1\x33\x82\xf7\xec\xd9\x93\xf1\x3c\xb9\ \x3f\x8b\x16\x2d\x02\x60\xf7\xee\xdd\x19\x04\x31\x4d\x93\x19\x33\ \x66\x00\x70\xe2\xc4\x89\x4b\x7a\x81\xc9\x7b\x1b\x2f\x2b\x52\xaf\ \xaf\xaf\x4f\x69\x28\x12\x89\x10\x0e\x87\xed\xc1\xdc\x74\xd3\x4d\ \x04\x02\x01\xde\x79\xe7\x1d\x0c\xc3\x70\xdc\xbb\x97\x20\x62\x42\ \xff\xe7\xe7\xe7\xd3\xda\xda\xea\x8a\x80\xf9\xf3\xe7\x03\xa4\xa8\ \x91\xc9\x93\x27\xdb\x08\x1f\x6c\xa0\x47\x8e\x1c\xe1\xb5\xd7\x5e\ \xe3\xbd\xf7\xde\x23\x1c\x0e\x3b\x72\x7d\xfa\x7b\xf6\xec\xd9\xe3\ \x6a\xcb\x0c\xc3\xb0\x1d\x9b\xa6\xa6\xa6\x8c\x72\x42\x08\xa2\xd1\ \xa8\xad\x36\x5d\x4f\xbe\x4b\x4b\xcd\xb8\xd9\x5b\xe5\x52\xe9\xf7\ \x7d\xfb\xf6\x71\xe4\xc8\x11\xfb\x5e\xc2\xdd\x4d\x36\xf6\xab\x56\ \xad\x22\x18\x0c\xf2\xfb\xdf\xff\xde\xb1\xad\xd3\xa7\x4f\xd3\xd4\ \xd4\x64\x1b\x6b\x37\xc9\x4b\xc0\x9c\x39\x73\x6c\x82\x25\xde\x9b\ \x08\x40\xdd\x08\x72\xfe\xfc\x79\x5b\x05\x79\xbd\x5e\x54\x35\x7e\ \xba\x50\x79\x79\x39\x85\x85\x85\x99\x87\xd6\x98\x26\x73\xe7\xce\ \x4d\x41\xb4\xdb\x8f\x34\x2f\x58\xb0\x80\xd6\xd6\x56\xc7\xd5\xfc\ \xaa\xaa\xda\xc1\xed\x97\xbe\xf4\x25\x3b\x6f\xa5\x69\x1a\xaa\xaa\ \xa6\x48\x44\xe2\xd9\x60\x46\xfd\x92\x33\x86\x7e\xbf\x9f\xef\x7e\ \xf7\xbb\x6c\xdd\xba\x15\x55\x55\x39\x75\xea\x14\x91\x48\x84\x8a\ \x8a\x0a\xbb\xc3\xb5\xb5\xb5\x4c\x9f\x3e\x9d\xad\x5b\xb7\xb2\x64\ \xc9\x12\x2a\x2b\x2b\x53\x74\xf0\x13\x4f\x3c\x61\xeb\xd6\x04\x62\ \xdd\x08\x32\x69\xd2\x24\x54\x55\xa5\xad\x2d\xf5\x54\xa0\x84\x41\ \x77\x23\x48\x7b\x7b\x3b\xcf\x3d\xf7\x1c\xdf\xfa\xd6\xb7\x78\xfc\ \xf1\xc7\x39\x73\xe6\x0c\xe5\xe5\xe5\xcc\x9e\x3d\x9b\x35\x6b\xd6\ \x64\x72\xa2\xa2\xd8\x1e\xd8\x4f\x7f\xfa\x53\x0c\xc3\xe0\xf5\xd7\ \x5f\x67\xe7\xce\x9d\x29\xea\x6b\xca\x94\x29\xf8\x7c\x3e\x4e\x9f\ \x3e\xed\x1a\xf7\xbc\xf1\xc6\x1b\x7c\xe3\x1b\xdf\x60\xcd\x9a\x35\ \xcc\x98\x31\x83\x48\x24\xc2\xc2\x85\x0b\x59\xbf\x7e\x3d\xbb\x76\ \xed\xb2\xdd\x74\x5d\xd7\x6d\x95\xe6\x46\x10\x15\xb8\x41\xd3\xb4\ \xea\xbc\xbc\xbc\xda\x44\x47\xa7\x4d\x9b\xc6\xc0\xc0\x00\x3d\x3d\ \xf1\xdf\xb1\x0d\x87\xc3\x74\x76\x76\x52\x57\x57\x47\x69\x69\x29\ \x5f\xf8\xc2\x17\x98\x35\x6b\x96\x9d\x62\x07\x58\xb8\x70\x21\x75\ \x75\x75\x04\x02\x01\x3b\x6f\x23\xa5\xe4\xf9\xe7\x9f\xa7\xb1\xb1\ \xd1\x2e\x57\x54\x54\x44\x5f\x5f\x1f\xf5\xf5\xf5\xf4\xf6\xf6\x66\ \x74\x28\x10\x08\x20\xa5\xa4\xbe\xbe\x3e\x05\xf9\xa5\xa5\xa5\x74\ \x74\x74\xf0\xee\xbb\xef\xda\x2a\x22\x9d\x53\x0f\x1d\x3a\xc4\xbe\ \x7d\xfb\x28\x2b\x2b\x23\x10\x08\xd0\xd0\xd0\xc0\x63\x8f\x3d\x46\ \x5f\x5f\x5f\x66\x00\xa6\x28\x34\x36\x36\xd2\xd7\xd7\x47\x55\x55\ \x15\x67\xcf\x9e\x65\xfb\xf6\xed\x0c\x0c\x0c\xa4\x94\x4d\xb8\xcb\ \x3b\x76\xec\xa0\xa5\xa5\xc5\xd5\xf9\x79\xe5\x95\x57\x08\x87\xc3\ \x4c\x98\x30\x81\x68\x34\xca\xaf\x7e\xf5\x2b\xf6\xee\xdd\x6b\x4b\ \x89\xae\xeb\x29\x52\xaa\x69\x1a\xa5\xa5\xa5\x04\x83\x41\xba\xbb\ \xbb\x2f\xb6\x05\x3c\xe8\xf7\xfb\xbf\x50\x5c\x5c\xbc\x32\x41\xf1\ \x2f\x7e\xf1\x8b\x04\x83\xc1\x14\x9f\xdb\x30\x0c\xee\xbe\xfb\x6e\ \xd6\xaf\x5f\x9f\x75\xd2\xee\x37\xbf\xf9\x0d\x3b\x76\xec\xb0\x3b\ \x25\xa5\xc4\x30\x0c\x4c\xd3\x4c\x51\x11\xc9\x69\x6c\xd3\x34\x6d\ \x4e\x4a\xae\xa7\xeb\xba\x1d\x79\x3b\xa5\xc7\x93\xf7\x44\x26\x72\ \x46\x42\x08\x9b\xdb\xdd\xd2\xed\xb1\x58\xcc\xb6\x7d\x89\x54\x4d\ \x72\xfb\x96\x65\x11\x8b\xc5\x52\xfa\xe3\x96\x7e\x8f\xc5\x62\x29\ \xef\x4d\xd8\x1b\x5d\xd7\x6d\x07\x26\x39\xdb\x5d\x53\x53\xc3\xf1\ \xe3\xc7\x53\xd2\x31\x9e\x6c\x53\xd2\x1e\x8f\x87\x57\x5f\x7d\x95\ \xfa\xfa\x7a\x36\x6e\xdc\xc8\xf4\xe9\xd3\x1d\x0d\xa1\x65\x59\xb4\ \xb6\xb6\xf2\xe4\x93\x4f\xd2\xd9\xd9\x99\x51\x26\x91\x3e\x70\xdd\ \xb0\xa2\x28\x78\xbd\x99\x07\x95\xa5\x23\xd6\x35\xd2\x4d\xaa\x9f\ \xcd\xc9\x78\x9a\xa6\xa5\x44\xfe\x4e\x99\x06\x9f\xcf\x97\xd5\xae\ \xe2\x64\x97\x37\x79\xa2\x6a\x28\x27\xf4\x0d\x69\xc6\x50\x08\xc1\ \xd9\xb3\x67\xf9\xf2\x97\xbf\x4c\x6d\x6d\x2d\xb5\xb5\xb5\x4c\x9a\ \x34\x89\x8a\x8a\x0a\x42\xa1\x10\xed\xed\xed\x1c\x3b\x76\x8c\x63\ \xc7\x8e\x39\xba\x99\x83\xcd\xd4\x39\xfd\xbd\xd4\x0c\xa3\x5b\xbb\ \x43\xbd\x7f\xb9\xe5\x2e\x35\xbb\xe8\x34\x57\x74\xd9\x04\x71\x6b\ \x28\xc1\xe1\xcd\xcd\xcd\xb6\xe7\x94\xf3\x33\xb6\x3e\x01\x0b\x18\ \x2e\x85\x8f\x21\x4d\xe1\x66\xbb\x2e\x6b\x8c\x00\x57\x4e\xb8\x21\ \x67\x7b\xc7\x60\x78\xa5\x68\xc8\x71\xc8\x18\x8c\x2c\x51\xc6\x24\ \x64\x4c\x42\xc6\x60\x4c\x42\xae\x21\x4f\xcc\x55\x42\xc6\x8d\x1b\ \xc7\xac\x59\xb3\xc6\x30\x37\x4c\x90\x98\x39\x74\x54\x59\xe9\x01\ \x8f\x53\xae\x68\x0c\x72\x0b\x96\x65\x11\x8d\x46\x33\x16\x12\x7a\ \x00\x4b\x88\x8b\xfb\x64\x0d\xc3\x60\xdb\xb6\x6d\x63\x18\x1b\xa5\ \x58\xc4\x03\xe8\x40\x2c\x5d\x9c\xc6\x60\x94\x54\x19\x10\x16\x42\ \x0c\x8c\x79\x54\xa3\x0f\x52\xc6\x77\x16\x2f\x05\x26\x6a\x9a\x56\ \x21\xa5\xf4\x70\x2d\xee\x25\xbe\x76\xc0\x14\x42\xc4\x80\x5e\x45\ \x51\x3a\x54\x55\x3d\xa7\x69\x5a\x50\xd3\xb4\x88\xc7\xe3\x31\x00\ \xf9\xff\x01\xfa\x90\x4b\xa0\xc0\x4f\x7e\x35\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x3f\xd1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x50\x00\x00\x00\x50\x08\x06\x00\x00\x00\x8e\x11\xf2\xad\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x36\x08\x21\xa9\x06\x34\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\x9c\xbc\x69\x98\x24\x57\x79\xe7\xfb\x3b\xb1\xe6\x9e\x59\x99\ \x59\x5b\xd7\xd2\x55\x5d\xbd\xaa\x17\x49\x2d\xb5\xf6\xd6\x0e\x12\ \x12\x18\x8c\x6d\x60\x7c\x19\x6c\x23\x1b\xcc\xb0\x08\xcf\x18\xdb\ \x63\x3f\x9e\xe5\xde\x67\xbc\x8c\xf1\x78\x7b\xbc\x8c\x3d\x36\xc6\ \xf6\x18\x06\x63\x1b\x0c\xd8\x80\x05\x5a\x11\x12\xdd\x48\xa8\x5b\ \xea\x7d\x51\x55\xd7\xbe\xe4\x16\xfb\x7a\xee\x87\xac\xcc\xae\x06\ \xc6\x73\x9f\x9b\x1f\xba\xb3\x9e\x38\x71\xe2\x8d\x13\x27\x22\xce\ \xef\xfd\xff\xdf\x14\xef\x7a\xd7\xbb\xa4\xe3\x38\xd4\x6a\x35\x5e\ \x7f\xfd\x75\x7c\xdf\x67\x61\x61\xc1\xfa\xe8\x47\x3f\x5a\x2c\x97\ \xcb\x84\x61\xc8\x8b\x2f\xbe\x88\xaa\xaa\x84\x61\x48\x18\x86\x74\ \x3a\x1d\xd6\xd7\xd7\xa9\xd5\x6a\x9c\x39\x73\x66\x75\x68\x68\xa8\ \xf8\xfe\xf7\xbf\x3f\x5b\xab\xd5\xf8\xf4\xa7\x3f\xcd\xf0\xf0\x30\ \x17\x2f\x5e\x64\x68\x68\x88\xf9\xf9\x79\x4c\xd3\xc4\x34\x4d\x4e\ \x9e\x3c\x19\x25\x49\x12\xfc\xe2\x2f\xfe\x62\x61\x78\x78\x98\x67\ \x9e\x79\x06\xc7\x71\xb8\x72\xe5\x0a\x83\x83\x83\x34\x1a\x0d\x86\ \x87\x87\xd9\xd8\xd8\x60\x6e\x6e\x0e\xdb\xb6\x3b\xb7\xdf\x7e\xbb\ \x78\xc3\x1b\xde\x50\xac\xd7\xeb\x3c\xf3\xcc\x33\xac\xac\xac\x90\ \xa6\x29\x8e\xe3\x50\x2a\x95\xb8\x7c\xf9\x32\x51\x14\xe1\xba\x2e\ \xf3\xf3\xf3\xb3\xef\x79\xcf\x7b\xb6\x3f\xf0\xc0\x03\x7c\xe9\x4b\ \x5f\xe2\xca\x95\x2b\x14\x0a\x05\x82\x20\x20\x8a\x22\x66\x67\x67\ \xa9\x56\xab\x34\x9b\x4d\x2e\x5d\xba\x74\xee\xae\xbb\xee\xda\xf9\ \xb3\x3f\xfb\xb3\xca\x73\xcf\x3d\xc7\x4b\x2f\xbd\xc4\xf4\xf4\x34\ \x97\x2f\x5f\x46\xd3\x34\x6c\xdb\x66\x72\x72\x92\x73\xe7\xce\xb1\ \xb8\xb8\xb8\xb4\xb2\xb2\xb2\xfc\xeb\xbf\xfe\xeb\x37\x66\xb3\x59\ \x4e\x9c\x38\xc1\xfa\xfa\x3a\xb6\x6d\xa3\x0c\x0d\x0d\x91\xcb\xe5\ \x10\x42\x30\x39\x39\x89\xa6\x69\x08\x21\xc8\xe7\xf3\xfc\xc8\x8f\ \xfc\x08\x83\x83\x83\x54\xab\x55\xa6\xa6\xa6\xd8\xb1\x63\x07\xc5\ \x62\x91\x52\xa9\x84\xae\xeb\x8c\x8d\x8d\x01\x10\x86\x21\x0f\x3c\ \xf0\x00\xd7\x5f\x7f\x3d\xa6\x69\x32\x35\x35\xc5\xe0\xe0\x20\xdb\ \xb7\x6f\xa7\x5e\xaf\x63\x9a\x26\xfb\xf7\xef\x47\x08\x81\xef\xfb\ \xec\xdf\xbf\xbf\xbf\x6d\x6c\x6c\x8c\x52\xa9\xc4\xbe\x7d\xfb\xc8\ \xe7\xf3\x14\x0a\x05\x76\xee\xdc\x49\xa1\x50\x40\x55\x55\x56\x57\ \x57\xb9\xfd\xf6\xdb\x29\x95\x4a\xa4\x69\x4a\x26\x93\xa1\x54\x2a\ \x11\x04\x01\xba\xae\x23\x84\xa0\x5e\xaf\xa3\x69\x1a\x52\x4a\xf6\ \xee\xdd\xcb\x7d\xf7\xdd\x47\xb1\x58\x64\x70\x70\x90\xe9\xe9\x69\ \x06\x06\x06\x98\x9c\x9c\xc4\x30\x0c\x86\x87\x87\xc9\xe5\x72\x00\ \x68\x9a\xc6\xbe\x7d\xfb\x30\x0c\x83\x5c\x2e\xd7\xdf\x5e\x28\x14\ \x30\x0c\x83\x28\x8a\x28\x16\x8b\xa8\xaa\x8a\x10\x82\xc1\xc1\x41\ \x6e\xbe\xf9\x66\xc6\xc6\xc6\xd8\xbb\x77\x6f\x77\xdc\x0e\x1f\x3e\ \x2c\x01\xa4\x94\xfd\x00\x3b\x9d\x8e\x95\xcf\xe7\x8b\x99\x4c\x06\ \xd7\x75\x11\x42\x20\xa5\xa4\xf7\x91\x52\x22\x84\x40\x08\x41\xa7\ \xd3\x59\x1d\x1c\x1c\x2c\xa6\x69\x9a\x05\x88\xa2\xa8\xbf\x3d\x4d\ \xd3\xfe\xbe\x52\x4a\xe2\x38\x8e\xa2\x28\x0a\xf2\xf9\x7c\xa1\x58\ \x2c\x62\xdb\xf6\xf7\xf4\xbb\xf5\x7f\x4d\xd3\x3a\xed\x76\x5b\x94\ \x4a\xa5\x62\x92\x24\x28\x8a\x72\xcd\xf1\xb7\xf6\x5f\xad\x56\x79\ \xed\xb5\xd7\x66\xaf\xbb\xee\xba\xed\x8e\xe3\x90\xa6\x69\xff\x9c\ \x7a\x6d\x7a\xfb\xe8\xba\xce\xec\xec\xec\xb9\x3d\x7b\xf6\xec\x6c\ \xb7\xdb\x8a\xa6\x69\xd7\x1c\x77\xeb\x47\x4a\x89\xa2\x28\x4b\x6b\ \x6b\x6b\xcb\x43\x43\x43\x37\x9a\xa6\x89\xef\xfb\x08\x21\xba\x31\ \xa6\x89\x6c\x08\x01\x08\x50\x14\x05\xcf\xf3\x52\xcb\xb2\x2e\x67\ \xb3\x59\xdd\xb6\x6d\x04\x82\x34\x95\x80\x40\x08\x09\x9b\x6d\x7b\ \x07\x8b\xe3\x78\xa5\xd3\xe9\xec\xd1\x34\xad\x24\x10\x9b\x07\xdd\ \xfc\x47\x00\x9b\xfb\x6c\x1e\x30\xf4\x3c\x6f\x31\x93\xc9\x28\xed\ \x76\x1b\x05\xe5\xfb\xf6\xdd\x0b\xae\xd3\xe9\x34\x92\x24\xd1\xd3\ \x34\x2d\x0a\x04\x71\x9c\x76\x8f\x20\x05\x42\xa4\xdd\x38\xe8\xc6\ \xb1\xbe\xbe\x1e\x03\x8d\x76\xbb\x5d\x4d\xd3\x34\x12\x88\xee\x96\ \x14\xa4\x90\x88\xcd\xb6\x42\x08\x92\x24\x51\x84\x10\xad\x8d\x8d\ \x8d\xbf\x35\x0c\xc3\x90\x69\x4a\x9a\x00\xdd\x50\xba\x31\x28\xb2\ \x7b\x0a\x42\x08\xd7\x75\x97\xc2\x30\x2c\x48\x29\x35\xcf\x75\x13\ \xa4\x42\x2a\x53\x40\xa0\xed\xb9\x7b\xb4\x9a\xac\x99\xc8\x50\x41\ \x28\x82\x28\x8a\x08\xc3\x30\xbb\x6d\xdb\xb6\x7c\x1c\xc7\xc4\x15\ \x87\xc2\x64\x44\xe2\x81\x6c\xe6\x88\x1b\x3a\x32\x50\x51\x0c\x89\ \xa2\x28\x44\x51\xb4\x32\x33\x33\x53\x52\x55\x35\x1b\x11\x11\x4f\ \x34\xa9\xd6\x35\x22\x4f\x22\x5a\x05\xa2\x0d\x1d\x02\x15\xa1\x82\ \xeb\xba\xe1\xdc\xdc\x5c\x6e\x64\x64\xa4\xa4\x28\x0a\x6b\xe6\x3a\ \x3b\xae\xd3\x08\xda\x02\xd9\xca\x10\x37\x0d\x64\xa0\xa0\x18\xdd\ \x19\xdb\x6a\xb5\xbc\x34\x4d\xe3\xed\xdb\xb7\x17\x9d\xc8\xa3\x7c\ \xd8\x41\x20\x49\x5c\x05\xda\x39\xa2\x75\x1d\x22\x05\x54\x89\xa1\ \x1b\xac\xac\xac\xfc\xf3\xae\x5d\xbb\x8a\x32\x96\xac\x15\x97\x99\ \xdc\xab\x13\x78\x09\x58\x19\xd2\xa6\x49\xdc\xd2\x11\x0a\x18\x86\ \x4e\xa7\xd3\xb9\x65\x64\x64\xe4\xfa\x8c\x99\x31\x37\x42\x8b\xa1\ \xeb\x43\x14\x14\xe2\xa6\x4e\xda\xcc\x90\xb6\x55\x84\x01\x42\x01\ \xcb\xb2\x08\x82\xe0\x89\xd1\xd1\xd1\x83\x41\x18\x11\x8d\xb6\xa9\ \x8d\x2a\x44\x36\x68\xf9\xbb\x56\x21\x51\x69\x7f\xad\x4a\xb8\x6a\ \x20\x14\xd0\x34\x2d\xcd\x66\xb3\xd8\x9e\x8b\x32\x1d\x92\xbf\xa9\ \xc3\x9e\xea\x11\x4e\x2f\x1e\xc3\x4c\xf3\xd0\xc9\xd1\xfc\xe7\x01\ \x54\x55\x45\xd3\x34\xd1\xbb\x75\x6d\xcd\xc1\xd8\xb5\xc1\xd4\xae\ \x03\x8c\x57\xb7\xf3\xe4\xe9\xcf\x53\xd2\xca\xd8\x4f\xd7\x09\x16\ \x75\xa2\x28\x12\x9a\xa6\x29\xa6\x69\x22\x84\xc0\x38\xe0\x33\x70\ \xab\xc6\xb6\xdc\x1e\x2e\x2f\x9f\x45\xa4\x90\xce\xd6\xb0\x5e\xce\ \x23\x63\xc8\xe5\x72\x51\xa7\xd3\x11\x69\x9c\xb2\x21\x5b\x6c\x3b\ \xec\x30\x6a\xec\x43\xd3\x53\xe6\xd6\x2e\x10\x77\x34\xdc\x63\x55\ \xfc\x05\x0d\xd3\x30\x91\x52\x66\xd2\x34\x45\x06\x12\x6b\xef\x2a\ \xc5\x43\x75\x0e\x97\x8f\x70\x6e\xfd\x18\xad\xe6\x32\xb9\x76\x85\ \xc6\xd7\x4a\x28\x8a\xe8\x3d\xe7\x43\x53\xd5\xcd\x97\xc3\x59\x0e\ \xdf\x5f\x24\x8d\x15\x0a\x6a\x9e\xc5\x8d\xd7\xc9\xca\x2a\xd6\xf3\ \x65\xc2\x15\x83\x5c\x2e\x01\x28\x9b\xa6\x49\x33\x08\x98\xba\x1b\ \xcc\x41\x9b\x1d\x85\x9b\x50\x7e\x74\xdf\xaf\x70\xc3\x8e\x3b\x89\ \x65\x80\xe7\xf9\x04\x41\x80\x94\x12\xdf\xf7\xf1\x83\x80\x50\xba\ \xdc\x51\xf9\x71\xee\xdb\xfe\x4e\x7e\xe5\xc1\x2f\x71\xf3\xe4\x0f\ \x50\x1b\xeb\x3e\xc4\x83\x20\x20\x49\x12\xc2\x30\xc4\xf7\x7d\xa2\ \x24\xa4\xb1\x16\xf2\x8e\xeb\xfe\x1d\x39\x6f\x86\xf7\xdf\xfc\x9b\ \xbc\xe7\x9e\x9f\x21\x90\x6e\xbf\x7d\x9a\xa6\x5b\xf6\x8d\x79\x74\ \xfb\x87\xd9\xad\x3f\xcc\x8f\xdd\xf2\x4b\xdc\xbf\xe3\x31\x44\xd1\ \x27\x08\x7c\x7c\xdf\x27\x8e\x63\xa2\x38\xc2\x73\x5d\xa2\x24\x66\ \xbc\xb0\x9b\xa3\xa3\xef\xe4\x07\xa7\x7e\x81\x01\xef\x76\xee\xbf\ \xe1\xcd\xb8\x49\x1b\xdf\xf3\x89\xa2\x08\x00\x3f\xf0\x71\x5d\x17\ \x5d\xd3\x98\xd2\x6f\xe7\x81\xf1\x9f\xe0\x86\xf2\xdb\xf9\xaf\x6f\ \xf9\x12\xb2\xe0\xe1\xfb\x3e\x9e\xeb\x91\xa6\x69\x37\x6e\x2f\x20\ \x11\x09\xae\x1b\xf0\xa1\x83\x7f\xc2\x1b\x76\xbd\x9b\x8f\xde\xfe\ \xe7\x4c\x4c\x8f\x12\xe2\xe1\x7b\x3e\x61\x18\xf6\xc7\x24\x08\x03\ \xa4\xf0\xb9\x5d\x7b\x9c\x5b\x27\xde\x80\xa2\xc4\x3a\x6e\xe0\x10\ \x04\x11\xbe\xe7\xf5\x1b\x7b\x9e\xd7\x7d\xfd\x27\x01\xfb\x87\x6e\ \xe3\xb3\xaf\xfd\x2e\xf3\x4b\xeb\x1c\x1c\xb9\x15\x05\xa5\x3b\xc0\ \xbe\x4f\x92\x24\x44\x51\x84\xe7\x79\x84\x41\xc8\x80\x3e\xc1\xb2\ \x35\xcb\x8b\xb3\x4f\x70\xc7\xf4\x43\x78\x91\x43\x14\x84\xfd\xfe\ \x92\x24\xe9\xef\x6b\xaa\x79\x06\x72\x75\x9e\x5f\xfa\x1b\x6e\xa8\ \xbf\x81\x5a\x6e\x84\x92\x5e\xc7\xf3\xaf\x0e\x60\x12\x27\x78\xbe\ \x4f\x1c\x45\xe4\xf4\x02\x4a\xc6\xe5\x5b\xe7\xbe\x85\x48\x55\x6c\ \xbf\x49\x1c\x26\x78\x7e\x77\x60\x00\x02\x3f\xc0\x75\x3d\x34\x55\ \xc5\x69\x09\xbe\x7e\xfe\xf3\x28\x71\x9e\x6a\xa5\x40\x92\x24\x78\ \x9e\x87\xe7\x79\xf4\xee\x1a\xcf\x73\x51\x15\xc1\xc5\xb3\x16\x03\ \x43\x2a\x1b\xce\x32\xd7\x4f\xde\x4c\x35\x33\x46\x10\x76\xe3\x88\ \xa2\xa8\x7b\xe1\x37\xbf\xb7\x3a\x1e\x3f\xf5\xc8\x63\xfc\xd3\xf9\ \x4f\xa0\x24\x32\x25\xa3\x94\x88\xe2\x88\x20\x08\xfa\x03\xd8\x9b\ \x25\x0a\x2a\x7e\xe2\x50\xcf\x8e\x33\x50\xa8\x32\xb7\x3e\x8b\x84\ \xef\x19\xc0\x30\x0c\x89\x93\x18\x3f\xb1\x19\x2c\x6c\x43\x13\x59\ \x5a\xde\x1a\x59\x2d\x47\x14\xc7\x84\x61\x78\x35\x90\x20\xc0\xf7\ \x7d\x24\x29\x0a\x1a\x9e\x03\xa9\xea\xd1\x72\xdb\xac\xdb\x2b\x84\ \x9b\xdb\x93\x24\x21\x8e\xe3\xcd\x81\x4f\x49\x64\x42\x1a\x19\xcc\ \x8c\xee\xa2\xe3\xd8\x94\x33\x43\x84\x71\xd0\x8f\x15\x20\x08\x43\ \x7c\xdf\x43\x51\x14\xf2\x45\x9d\xbd\x43\x37\x62\xf9\x4d\x32\x4a\ \x09\x4d\x18\xdd\xb6\x61\xf7\x2e\x8b\xa2\x08\xcf\xf7\x91\x52\x50\ \x19\x30\x49\x02\x1d\x29\x05\x48\x85\x86\xbb\x4c\x12\xa7\xfd\x01\ \x94\x52\xe2\xf9\x3e\x61\x14\x62\xe8\x1a\x73\xcb\xcb\x18\x4a\x16\ \xed\x58\xfb\xd3\x78\x4a\x03\xdf\xf3\xb0\xec\x88\x6c\x9a\x41\x4a\ \x89\xe3\x38\xf8\x71\x44\x11\x83\x2f\xbf\xfe\x47\xbc\xf7\xd0\xaf\ \x72\xb2\xf3\x0f\x5c\x72\x4f\x10\x8b\x00\xc7\x71\x50\x55\xb5\x3f\ \x78\xae\xeb\x92\x1a\x30\x52\x57\xf8\xc6\x99\xe7\xf8\xf9\x47\xff\ \x1f\x7e\xeb\x9b\x1f\x64\x7c\x74\x9c\x34\x49\x71\x9c\xcd\x19\xb5\ \x39\x0b\xa4\x94\x0c\x68\x82\xa7\x2e\xfd\x1d\x3f\xff\xc6\xdf\xe4\ \x53\xaf\xfd\x1a\x96\xef\x50\xca\x54\x70\xdd\x79\xe2\x40\x62\x18\ \x06\x61\x18\x62\x5b\x16\xbe\x1e\xb3\x64\x5f\x62\x89\x45\xf6\x6f\ \xaf\x21\x07\x2f\x70\xa9\xd1\x5d\x20\x5b\x96\x8f\x61\xea\x00\xb8\ \x8e\x83\xdb\x71\xd1\x52\x9d\xa5\xe8\x3b\xdc\x9b\x7d\x2b\x51\x71\ \x8e\x8f\x3f\xfd\x41\x14\x15\x6c\xdb\x46\xd3\xf4\xab\x93\xc4\xf1\ \x89\xf2\x31\xdb\xb7\x0f\xf2\xd4\xa9\xaf\x32\xb3\x7d\x86\xdf\x7b\ \xf1\x71\x32\x46\x86\x30\x0e\xb0\xed\x18\xdd\xd4\x48\xd3\x14\x77\ \x73\x4c\xca\xf9\x22\xbf\xf5\xcc\xe3\x7c\xec\xc1\x3f\x40\x5b\x5c\ \x9b\xa5\xd1\x59\x63\xf9\x6c\x9b\xc8\x4d\x91\xa4\xa4\x69\x4a\xab\ \xd5\x22\x48\x22\x8a\x41\x1e\x57\x5b\xe4\xf7\xbe\xf5\x38\x8f\x5e\ \xff\xc3\x9c\x5d\x3d\xc6\xea\x0b\x92\x76\xdb\x46\x51\x14\xd2\x34\ \xc5\xb6\x6d\xda\xed\x36\x52\x15\x08\xa5\xc2\xf3\x8d\x4f\x30\x3e\ \x37\xca\x6a\x67\x8e\xc5\xd5\x39\x16\xce\x34\xf1\xda\x49\x7f\x0d\ \x16\x86\x21\x69\x9a\x52\x48\xf2\xcc\x06\xdf\xe2\xd9\x85\xcf\x62\ \xf9\x4d\x4e\x2f\xbc\xc2\xec\x31\x9f\x8d\x15\x07\x04\x94\x4a\xa5\ \x2e\xf9\x44\x29\x41\x26\x25\x51\x4a\x3c\xb3\xfa\x57\xb4\xd3\xa3\ \xf8\x9e\xc5\x4b\x17\x4f\xb0\x72\xda\xc1\x77\x62\x32\x59\x13\xe8\ \x0e\x90\x6d\xd9\x14\x92\x02\x8e\x58\xe5\x8b\xb3\xbf\x8d\x65\x59\ \x2c\xaf\x2d\xb0\xf2\x4a\x40\xbb\x61\x61\x64\xb5\xfe\x24\xb1\x1a\ \x6d\x9c\xa2\x24\x91\x15\xbe\xd5\xfc\x14\xcb\xfe\x8d\x5c\x6e\xbd\ \x8c\xe3\xb8\x5c\xfa\x66\x03\x99\xa6\xe4\x92\x1c\x69\x9a\xd2\x68\ \x34\xe9\xc8\x84\x30\x32\x71\x33\x97\xf9\x95\xaf\x7c\x04\x31\x3d\ \xb1\x53\x0a\x04\x66\x5e\x23\x8c\x42\xb2\xd9\x2c\x51\x14\x59\x69\ \x9a\x16\x6b\xd5\x3a\x72\xac\x43\x69\x58\x67\xe5\x3b\x1e\xeb\x17\ \x5d\x4c\xc3\x44\xa8\xa0\x1a\xdd\x37\x59\x10\x04\xab\x03\x03\x03\ \x45\x45\x51\xb2\x52\x4f\x29\xdd\x2c\x89\x97\x52\x16\x5e\xe9\x80\ \xa7\x21\x14\x81\x6a\x76\xd7\x60\x69\x9a\x46\x42\x88\xc0\x30\x8c\ \x42\xa5\x52\x41\xee\xb1\x28\x19\x3a\x57\x8e\x5b\x38\x4b\x09\x9a\ \xa6\x81\x2a\x51\x75\x41\x92\x24\x14\x0a\x85\x4e\xb3\xd9\x14\x3b\ \x67\x76\x16\x1b\x9d\x06\xa3\x37\x1b\xcc\xbf\x68\x63\x37\x42\x34\ \x45\x43\x92\xa2\x67\x54\xe2\x24\xa6\x52\xa9\x30\x3b\x3b\xfb\xec\ \xce\x9d\x3b\x8f\x2a\xa8\x24\x43\x16\x6a\x2a\x58\x7e\xd5\x21\x8d\ \x25\xaa\xa2\x22\x34\x50\xba\x6b\x66\xc2\x30\xa4\x5c\x2e\x5b\x02\ \x51\x6c\xe2\x73\xe3\x5b\x0a\x2c\x1c\x77\x59\x3f\xe7\x21\x43\x15\ \x64\x8a\x96\xed\x4e\x10\xc3\x30\xe8\x74\x3a\xc7\xf2\xf9\xfc\x11\ \x33\x5b\x64\xfb\x23\x12\x67\x21\x61\xfd\x9c\x8f\x76\xc7\xdd\xb7\ \xd2\x6c\x36\x19\x1d\x1d\xe5\xc2\x85\x0b\x78\x9e\xc7\xca\xca\x0a\ \x3f\xf6\x63\x3f\xc6\xbe\x7d\x7b\x99\xbb\x3c\xcf\xcb\x2f\xbf\x42\ \x7d\xbb\x24\x9d\xec\xbe\x00\x3c\xcf\xa3\xd1\x68\x50\x2c\x16\xb9\ \x74\xe9\x12\x9a\xa6\xf1\xd3\x3f\xfd\xd3\x0c\x54\x06\xf8\xab\x4f\ \xfe\x35\x95\x6a\x85\xf2\x9e\x25\x6a\xb5\x1a\x0b\x0b\x0b\x18\x86\ \x81\xa2\x28\x5c\xb8\x70\x81\x30\x0c\xf9\xc0\x07\x3e\xc0\xc1\x83\ \x07\xf9\xe4\x9f\xfe\x05\xaa\xd4\x30\x46\x97\x19\xbc\xbe\xce\xc6\ \xc6\x06\x03\x03\x03\x34\x9b\x4d\x16\x16\x16\x08\x82\x80\x3b\xef\ \xbc\x93\xc7\x1e\x7b\x8c\x30\x0c\x79\xe6\xc9\xe7\x18\xbd\x71\x19\ \x55\x53\xe9\x74\x3a\x14\x0a\x05\x16\x16\x16\x70\x5d\x97\x24\x49\ \x50\x55\x95\x87\x1e\x7a\x88\xb7\xbf\xfd\xed\x7c\xe1\x73\x5f\xe4\ \x95\x13\x27\x98\xbe\x53\x23\x9f\xcf\xb3\xb0\xb0\x80\xe3\x38\x64\ \xb3\x59\x9a\xcd\x26\xcb\xcb\xcb\x54\xab\x55\x3e\xf2\xf8\x47\xb8\ \x7c\xf1\x12\xcf\x3e\xf5\x4d\xf6\x0c\x64\xd9\x7d\x5b\xca\xfa\xc6\ \x3a\x85\x42\x01\x21\x04\x4b\x4b\x4b\x58\x96\x45\x92\x24\x7c\xe0\ \x03\x1f\x60\x6a\x6a\x3b\x4f\x7f\xed\x1b\x34\xd3\x06\x83\x13\x2e\ \xda\xe0\xe0\x20\x8e\xe3\x60\x18\x06\x53\x53\x53\x9c\x3b\x77\x8e\ \x24\x49\x98\x99\x99\xe1\xe8\xd1\xbb\x39\x55\x3b\xc5\x5a\x63\x95\ \xc1\xc1\x41\x14\x45\xe1\x95\x57\x5e\x61\x74\x74\x14\x80\xe1\xe1\ \x61\x2e\x5d\xba\x44\x9a\xa6\xdc\x76\xdb\x6d\x64\xb3\x59\xbe\xfc\ \x95\x2f\x73\xfd\xf5\xd7\x73\xe6\x4c\x16\xc3\x30\xfa\x57\xfb\xc0\ \x81\x03\x5c\xbc\x78\x11\x80\xc3\x87\x0f\x33\x3e\x3e\xce\x2d\x77\ \x1c\x61\x65\x65\x05\x2f\xb2\xd9\xb1\x63\x07\x69\x9a\x32\x34\x34\ \xc4\xae\x5d\xbb\xf8\xca\x57\xbe\xd2\x9b\x25\x94\x4a\x25\x86\x86\ \x86\x78\xf5\xd5\x57\x11\x9a\x24\x9f\xcf\x73\xfc\xf8\x71\xc6\xc6\ \xc6\x68\x36\x9b\xe4\xf3\x79\xd6\xd6\xd6\x10\x42\x50\x2a\x95\xd8\ \xbd\x7b\x37\x03\xf5\x0a\x95\x6a\x89\x72\xb9\x8c\x94\x92\x5a\xad\ \x86\x65\x59\x0c\x0d\x0d\x11\x04\x01\x42\x08\x0a\x85\x02\x37\x5c\ \x7f\x03\x19\x33\xc3\x99\xb3\x67\xd9\xbb\x77\x2f\x6b\x6b\x6b\x20\ \xa0\x50\x28\x30\x3a\x3a\x4a\x36\x9b\xe5\xe4\xc9\x93\x00\xdc\x71\ \xc7\x1d\x94\x4a\x25\x3a\x1d\x0b\xcf\xf3\x38\x79\xf2\x24\xe2\xc6\ \x1b\x6f\xec\x03\x60\x8f\x85\xdb\xed\xb6\x55\x2a\x95\x8a\x41\x10\ \xf4\xf9\xf3\xfb\x7d\x14\x45\xa1\xd3\xe9\xac\x0e\x0d\x0d\x15\x1d\ \xc7\xc9\xf6\x10\xec\x7f\xf7\x89\xe3\x38\x0a\xc3\x30\xc8\xe7\xf3\ \x85\xef\xc7\x9d\xdf\xcd\xda\x8a\xa2\x74\x3a\x9d\x8e\x28\x95\x4a\ \xc5\xff\x53\xfb\x72\xb9\xcc\xa9\x53\xa7\x9e\xdd\xb9\x73\xe7\x51\ \xcf\xf3\xf8\xdf\xc5\x22\xa5\x44\xd3\x34\x36\x36\x36\x18\x1c\x1c\ \xb4\x82\x20\x28\xfe\x4b\x71\xf7\x62\x59\x5b\x5b\x3b\x36\x34\x34\ \x74\xa4\xc7\xd6\xbd\x8f\xb6\x35\xae\x4d\x16\xc6\xb2\xac\x20\x9f\ \xcf\x67\x15\x45\x91\x48\x90\x89\xd8\xc2\xb4\x9b\x8d\x05\xa4\x69\ \x2a\xe2\x38\x8e\x3b\x9d\x0e\x3d\x20\x47\x0a\x64\x17\x53\x41\x91\ \xfd\xb6\x9b\xc1\x48\xdf\xf7\xe3\x4c\x26\x13\x2b\x8a\x22\x85\x14\ \x5d\x06\x15\x12\x94\xcd\x66\x5b\x58\xd8\xb2\x2c\xdf\xf7\xfd\x0d\ \x21\x44\x19\x90\x24\xa2\xcb\xd9\xca\xb5\xb1\x48\x29\x85\xe7\x79\ \x91\x94\x72\x61\x63\x63\x63\x5d\x4a\x19\x90\x8a\x2e\x27\xa7\x02\ \x94\x2e\x0b\x6f\xc6\x21\x36\x9f\xdd\x0d\xcb\xb2\xb6\x9b\xa6\x19\ \x0b\x90\x69\xb2\xd9\xd9\x26\x37\xb3\x25\x96\x20\x08\x94\x24\xe9\ \x36\x50\xc4\x26\xbf\xcb\xcd\x64\xc2\xf8\xae\x21\xa4\xa7\x76\x0f\ \xd4\x1d\x14\x96\x96\x96\x2e\xed\xd8\xb1\xe3\x80\xe7\x7a\x69\x98\ \x73\xc9\xef\x08\x10\xae\x46\xd2\x36\x49\x2d\x1d\x19\x75\x77\x56\ \x55\x55\x00\x72\x78\x78\x58\x64\x32\x19\x02\x11\xc2\x74\x8b\x52\ \x41\x25\xee\xe8\xd0\xce\x90\x5a\x1a\x32\x51\x40\x82\xe7\x79\x72\ \x71\x71\x31\x1a\x1b\x1b\x0b\x14\x45\x91\x8d\xcc\x06\x63\xbb\x35\ \xa2\xa6\x86\x6c\x9b\x24\x8e\x0a\x49\xff\xea\x8a\x76\xbb\x1d\x04\ \x41\x30\x36\x39\x31\x59\xf2\x93\x10\x75\x47\x9b\xac\xae\x93\x34\ \x0d\x12\x4b\x47\x06\xdd\x7e\x01\x4c\xd3\xe4\xc9\x27\x9f\xbc\x70\ \xe8\xd0\xa1\xba\x8c\x25\xab\xb9\x65\xb6\x1f\xd0\x08\xda\x20\xdb\ \x19\x92\x8e\x01\xbe\x8a\x4c\xc1\x30\x0c\x8e\x1f\x3f\xbe\x6d\x62\ \x62\x62\xde\x34\x4c\xa5\x15\xda\x72\xe0\x90\x8f\x96\xea\xc4\x0d\ \x9d\xb4\xd3\x65\xf2\x6e\x92\x03\x61\x59\x56\x9c\x24\xc9\xc4\xf4\ \xf4\x34\x96\xef\x93\xd9\x63\x51\xa8\x28\x04\x9d\x14\xad\xfe\x03\ \x1b\xe8\x8a\x49\xf3\xc9\x2e\xf7\x19\x86\x40\x55\xd5\x01\xd3\x34\ \x73\x9e\xe7\xa3\x6e\xf7\xa9\xdc\xee\xa0\x87\x45\xc2\x78\x0d\x25\ \x36\x90\x81\x46\xe3\x8b\xdd\x1c\xdc\xe6\x2d\xae\x26\x49\x82\x9d\ \xb1\x19\xbc\xbe\xc3\xee\xf1\xfd\x90\xa6\xcc\xad\x5c\x44\x55\x54\ \x3a\xcf\xd4\x09\x17\x75\xd2\x34\x55\x54\x55\xcd\x69\x9a\x96\x17\ \x42\xc0\x1e\x8b\x81\xdb\x35\x72\x69\x9d\x56\x7b\x1d\x21\x15\xc2\ \x73\x15\xac\x13\x39\x84\x90\x68\x9a\x96\x7a\x9e\x07\x52\xb2\x21\ \x5b\xec\xbf\xdf\x46\x4b\x32\x04\x6e\x03\x3d\xcd\x10\xb9\x02\xfb\ \x78\x99\x60\x51\x47\xc9\x2a\x48\x29\x37\x1f\xba\xe0\xee\x5d\xa7\ \x74\xc3\x00\x55\x75\x8a\x75\x6b\x0e\xcb\xb2\xd1\x3a\x55\x1a\x4f\ \x14\xe9\xa5\xc6\x0c\xc3\xa8\xe8\xaa\x9e\xbf\x98\xac\xf2\xe6\xbb\ \x73\x44\x81\x4f\x96\x12\x1d\x7b\x03\x43\xe4\xe8\x7c\xa3\x4c\xb8\ \x6c\xf4\x72\x8d\x91\x4c\x25\x56\xea\x30\x7a\x38\xc0\x53\xda\xbc\ \x71\xe7\x0f\xa2\x3c\xba\xfb\x71\x8a\xd5\x22\xb1\xec\xf2\xec\x26\ \x0b\x4b\xdf\xf7\xf1\x7c\x9f\x54\x84\x4c\x72\x37\x1f\xbc\xf3\xbf\ \xf2\xaf\xaf\xfb\x0d\xf6\x0c\x1d\x65\x78\xdb\x60\x9f\x26\x92\x24\ \x91\xbd\x4c\x75\x9c\x46\x24\xcd\x0a\xf7\x8e\xbf\x93\x43\x85\xb7\ \x72\xcf\xf6\x77\xf3\xa6\x5b\xde\x41\x78\x2d\x0b\xcb\xde\x71\xe2\ \x34\xe1\xd1\xed\x1f\x61\x52\x79\x80\x07\x0f\xbc\x8b\xa3\x33\xef\ \xc2\x11\x1b\x5b\x29\x47\xc6\x71\x8c\xe7\xfa\x84\x49\xc8\x48\x76\ \x9a\x47\x26\x3e\xca\xcf\xdd\xfd\x49\xbc\x66\x9d\x1d\xd3\x53\x84\ \xd2\xed\xf3\x6a\x8f\x85\x3d\xcf\xc5\x30\x54\xa6\xd5\xbb\x78\xcb\ \xd4\xe3\x1c\xaa\xbc\x95\x5f\x79\xcb\xdf\x93\xe6\xec\xcd\x55\x84\ \x8f\x94\x92\x30\x0c\xa5\xef\x7a\x44\x32\xc2\x73\x23\x3e\x7c\xfd\ \x27\xb8\x7f\xf7\xbb\xf8\xd0\x1d\x7f\x48\x65\x34\x47\x24\x83\x3e\ \x67\x4b\x29\xf1\x3d\x8f\x38\x89\x68\x76\x5a\xfc\xee\x43\x4f\xb3\ \xb4\xbe\x86\x32\x5e\xd8\xc3\xc1\x91\x3b\x37\x07\xa4\xcb\xc2\x42\ \x08\x3c\xcf\xc3\x0f\x7c\xc2\x38\xe0\xba\xa1\x5b\x79\x7e\xe1\xef\ \x79\xe1\xe4\x09\x6e\x9f\x7a\x08\x4d\xd1\xfb\x4c\x99\x24\x09\x41\ \x10\x74\x59\x38\x0a\x19\x2b\xee\x66\xb1\x73\x91\xf3\x6b\x27\xb9\ \x6d\xfa\x01\x92\x34\x21\x0e\x63\x7c\xbf\x7b\x92\x5b\xdb\x67\xd4\ \x3c\x95\xcc\x20\xaf\x7b\x2f\xb0\xbf\x7c\x3f\x3b\x87\x0e\x50\xd2\ \xeb\xf8\xbe\x8b\xe7\x79\xc4\x71\x4c\x1c\xc7\xf8\x7e\xf7\x7b\x29\ \x53\x21\x57\x4c\x78\xf6\xc4\xf3\x1c\x1c\xbd\x83\xdd\xb5\x9b\x70\ \x03\xe7\x7b\x59\xd8\xf3\x51\x55\x15\xa7\x2d\x78\x71\xee\x9f\xc9\ \x8a\x2a\x43\x03\x43\xa4\x49\x17\x41\x03\xdf\xef\x27\x13\x3c\xcf\ \x43\x51\x15\x2e\x9f\xb3\x18\x1a\xc9\xe2\x47\x2e\x37\x4c\xdc\xc2\ \x64\xe9\x3a\xfc\xb0\x1b\x47\x0f\x41\x3d\xdf\x27\x0a\x23\x34\x99\ \x61\xb8\x3a\xc4\x46\x7a\x06\xcd\x09\x6c\xce\xae\xbc\x4a\x14\xc5\ \xf8\x5e\xda\x7d\xa0\x43\x77\xc6\xf8\x01\x86\x14\xb8\xa1\xc5\x60\ \x69\x02\x59\xc8\xf3\xfa\xfa\xb9\xfe\x76\x55\x55\xfb\x2c\x1c\xc7\ \x31\x69\x92\xd2\xf4\xd7\x18\x2d\x3f\x4c\x73\x3d\x65\xc5\x9d\xc5\ \x54\xb3\x44\x51\x44\x10\x24\x7d\x02\xe9\x65\x74\x75\x52\x14\x45\ \xc1\x77\x25\x46\xce\x67\xfe\xd2\x02\x1b\xf6\x0a\x81\x6f\xf6\x5f\ \x3c\x71\x1c\x77\x93\x09\x5a\xd2\x7d\x46\x27\x0a\x23\x03\x23\xbc\ \x7c\xf9\x18\xb2\xa2\x40\xd2\x1d\xb4\x1e\xc3\x87\x61\x48\xe0\xfb\ \x18\x42\xa5\x50\x30\x98\xa9\xed\xe7\xcc\xc2\x59\x4c\x91\x45\x11\ \x4a\x3f\x23\xd4\xeb\x3b\xf6\x23\xc8\x40\xa9\x62\x92\x84\xda\x66\ \xf6\x1a\x96\x3a\x97\x49\xe2\x6e\x06\x46\x8a\xb4\x8f\x7e\xb1\x1a\ \x23\x45\x42\xe0\xc7\x04\xae\x8e\xf2\xcd\xf5\xbf\xc2\xc8\x4a\x82\ \xd0\xef\xb2\xde\xe6\x95\xec\xcd\x30\x91\x6a\x1c\x6f\xfc\x2d\x39\ \x6f\x86\xfc\xf8\x3a\x67\xed\x67\x71\x93\x36\x8e\xe3\xe0\x38\x4e\ \xf7\x04\x3d\x0f\xdb\xb6\x09\xfc\x90\x38\xbf\xc8\x2b\xe7\xcf\xf0\ \xc0\xf5\xf7\xf1\x77\x67\x7e\x9b\xb3\xad\x6f\x11\xc6\x21\x96\x65\ \xe1\x38\x4e\x3f\x1b\xe3\xba\x2e\x8a\x96\xf0\xb5\x8b\x9f\xe1\x67\ \xee\xff\x35\x3e\xf3\xea\x6f\x73\x39\x78\x8e\xac\x56\xc0\x71\x5d\ \x1c\xc7\xe9\x5f\x18\xcf\x75\x09\xc3\x88\x65\xfb\x75\xd6\x5b\x2d\ \x28\xb4\x48\xab\xb3\x04\x69\x17\xee\x1d\xc7\xe9\x67\x58\x1c\xc7\ \xc1\xea\x58\x24\x69\xca\x7c\xf4\x6d\x34\x91\xc1\xcf\x5d\xe4\x77\ \xbe\xf9\x33\xa8\x9a\x8a\x65\x59\x58\x1d\xab\x3f\xd8\xae\xe3\x12\ \xc7\x29\x53\x53\x15\xbe\xfc\xca\xe7\x19\x2a\x8d\xf0\x3b\x2f\xfe\ \x9b\xae\x26\x12\xfb\x38\x8e\xd3\xcf\x22\x59\x9d\x0e\xae\xeb\x91\ \xcf\x65\xf9\xb5\xa7\xdf\xcf\x2f\xdd\xf3\xe7\x68\xae\xb2\xce\xdc\ \x85\x39\x96\xce\xb5\x08\xac\x84\x84\x04\x80\x66\xb3\x49\xab\xd3\ \x21\xef\xe6\x09\x55\x95\xbf\xbb\xfc\x6b\xbc\xe5\xf0\x3b\x99\xbb\ \xf8\x1a\x6b\x2f\x49\xda\xed\x4e\x7f\x8d\xd8\x9b\x85\x94\x14\x14\ \xd5\xe0\x78\xe7\x53\xd4\xd7\x14\xda\xd1\x32\xf3\x5f\xd9\x60\xfe\ \x44\x9b\xc8\x4e\xbf\x2f\x0b\x2f\xf8\xdf\xe1\xb9\xa5\xff\x45\xa0\ \xd9\x5c\x7a\xfd\x3c\x57\x4e\x3b\xb4\x9a\x1e\x42\xe9\xb2\xb0\xef\ \xfb\xc4\x41\x44\xa0\x4b\xfc\x34\xc7\xb3\x4b\x7f\xcd\xbd\x7b\x7e\ \x00\x99\x6b\xf1\x9d\x6f\xaf\xb0\x7c\xce\xc2\xe9\x44\xe8\x66\x77\ \xf6\xd8\xb6\x8d\xdd\xb1\xc9\xa5\x05\x7c\x75\x9d\x63\xf6\x5f\xd3\ \xf1\x2c\x5e\xfe\xce\x2c\xcb\xaf\x04\x74\x5a\x0e\xba\xa9\xf6\x19\ \xde\x6a\xb6\xb1\x4b\x92\x58\x96\xf9\x8e\xfd\xf7\x74\x16\x6f\x60\ \xae\xf3\x2a\xeb\xb3\x0e\x97\xbf\xd5\x20\x89\x52\xb2\xd9\x2c\x69\ \x9a\xd2\xb1\x2c\xbc\x44\x92\x92\x65\x39\x7e\x95\x3f\x7c\xf9\xe7\ \x10\xe3\x43\x53\x52\x48\x05\xbd\xd0\x5d\xf7\xe4\xf3\x79\xd6\xd7\ \xd7\xcf\x55\xab\xd5\xdd\xaa\xa2\x62\x4e\x47\xd4\x76\x1a\x6c\x9c\ \x0e\x58\x3e\xe5\x90\x76\x34\xf4\x9c\x82\x96\xed\xb2\x70\x1c\xc7\ \xb6\xaa\xaa\x66\x2e\x97\xd3\x63\x23\x62\xec\x1e\x83\x60\x21\x61\ \xe9\x94\x83\x73\x05\xb4\x8c\x40\xcf\x8a\x3e\x0b\x2b\x8a\x12\xa8\ \xaa\x5a\xc8\xe5\x72\x18\x87\x22\x6a\x15\x9d\xc5\x93\x0e\x1b\xa7\ \x62\x44\x22\xd0\x73\x02\x61\x80\x4c\x25\x85\x42\xa1\xb3\xb1\xb1\ \x21\x86\x86\x86\x8a\x9d\xd8\xe6\xd0\x0f\x17\x59\x3b\x15\xb2\x7c\ \xd2\xc6\x5f\x56\x50\x0c\x30\xf2\x5d\x7d\xa2\x5a\xad\x32\x3b\x3b\ \xfb\xec\x8e\x1d\x3b\x8e\x8a\x54\x90\x4e\x38\xe4\x32\x1a\x8b\x2f\ \x3b\x78\xeb\x09\xba\xa9\xa2\x1a\x20\xb4\xee\xda\x2e\x0c\x43\x4a\ \xa5\x92\x15\x87\x71\xb1\x63\x46\xdc\xfc\xd6\x22\xab\xaf\xf9\xac\ \x9e\xf6\xf0\x57\xba\xed\x8c\x42\x97\x85\x4d\xd3\xc4\x75\xdd\xf5\ \x7c\x3e\x5f\xcf\x97\x8b\x54\x0e\x44\x74\xe6\x23\x5a\x97\x43\xb4\ \x3b\xee\xbd\x05\xc7\x71\xa8\x56\xab\x5c\xb9\x72\xa5\xa7\x0b\xf3\ \xe0\x83\x0f\x72\xf0\xe0\x41\x3a\x2d\x8b\x63\xdf\x3a\xce\xd8\x48\ \x96\xf1\x4c\x83\x62\xa9\xc0\xd2\xe2\x12\xcd\x66\xb3\xa7\x0b\x33\ \x3d\x3d\xcd\x23\x8f\x3c\xc2\xf0\xd0\x30\xff\xf3\x2f\x3f\xc5\xde\ \xc9\x09\x4a\x13\x0b\x8c\xde\x3a\xca\xca\xca\x0a\x61\x18\x92\xcb\ \xe5\x38\x79\xf2\x24\x69\x9a\xf2\xde\xf7\xbe\x97\x83\x07\x0f\xf2\ \x99\x4f\xfd\x0d\x19\x37\x8b\x9a\x9b\xe7\xae\x1f\x9e\xdc\xd4\x90\ \x0d\x54\x55\xe3\xdc\xb9\x73\x84\x61\xc8\xe1\xc3\x87\x79\xdb\xdb\ \xde\x46\x12\x27\x9c\x78\xf9\x55\x0a\x6a\x8b\x6d\xfb\x7d\xb4\x1b\ \xbb\x69\xfc\xd7\x5f\x7f\x1d\x45\x51\x70\x5d\x17\x55\x55\x79\xe3\ \x1b\xdf\xc8\xdb\x7f\xa8\xcb\xc2\xaf\x9e\x7c\x95\xd1\x1b\x54\x86\ \x86\x07\x39\x77\xf6\x1c\xae\xeb\x92\xcb\xe5\x68\xb5\x5a\x7d\x16\ \xfe\xc9\x9f\xfc\x49\x56\x96\x57\x78\xfa\xc9\xe7\xd8\x3b\x58\x65\ \xfb\xf5\x1e\xcd\x56\x83\x72\xb9\x8c\xa0\xcb\xc2\x8d\x46\x03\x21\ \x04\x1f\xff\xf8\xc7\x11\x42\xf0\xd4\xd7\x9e\x21\x2d\x27\x5c\xc8\ \x9c\x47\x1b\x1b\x1b\xe3\xd2\xa5\x4b\x14\x8b\x45\xb6\x6d\xdb\xc6\ \xe5\xcb\x97\x49\x92\x84\x3d\x7b\xf6\xf0\xf6\xb7\xbf\x9d\xb9\xb9\ \x39\x56\xd7\x57\xa8\x54\x2a\xb8\xae\xcb\xf2\xf2\x32\x03\x03\x03\ \x58\x96\x45\xa5\x52\xe9\xeb\xab\xef\x78\xc7\x3b\x50\x14\x85\x63\ \xc7\x8f\x31\x3d\x3d\x4d\xa1\x9c\x47\xd7\x75\xb2\xd9\x2c\xcb\xcb\ \xcb\xec\xd9\xb3\x87\xd7\x5e\x7b\x8d\x28\x8a\xb8\xe7\x9e\x7b\xb8\ \xe9\xa6\x9b\x38\x7f\xfe\x3c\xcd\x66\x13\xcb\x6d\x33\x39\x39\xd9\ \xcf\x5a\x6f\xdf\xbe\xbd\xcf\xcd\xdb\xb7\x6f\xef\xeb\xbc\xae\xe7\ \xb2\xb6\xb6\x46\xa5\x52\xe1\xc5\x17\x5f\x64\x68\x70\x88\x6a\xb5\ \xda\x17\xfc\x01\x6a\xb5\x1a\x07\xf6\x1f\xe0\xf9\x6f\x3c\x4f\xb9\ \x5a\xa2\x58\x2c\x02\x30\x30\x30\x80\xeb\xba\x94\xcb\x65\x7a\xa8\ \x57\x2e\x97\x79\xd3\x9b\xde\xc4\xf1\xe3\xc7\x39\x7b\xee\x2c\x3b\ \x77\xee\xc4\x75\x5d\x2e\x5c\xb8\x40\x3e\x9f\xa7\x56\xab\x21\x84\ \xa0\xd5\x6a\x91\xa6\x29\x53\x53\x53\x84\x61\xc8\xd0\x68\x1d\x29\ \x25\x8b\x4b\x0b\x88\x1b\x6e\xb8\xe1\x1a\x16\xce\x66\xb3\xcc\xce\ \xce\x9e\x9b\x9e\x9e\xde\xdd\x4b\x7c\xaa\xaa\xfa\x3d\x9a\x6d\x0f\ \xb7\x3c\xcf\xb3\x33\x99\x8c\xa9\xaa\xaa\xbe\xb5\xcd\xa6\x7c\xd8\ \x6f\x9b\x24\x09\x52\xca\x28\x8a\xa2\x40\x55\xd5\x42\x3e\x9f\x27\ \x8e\xe3\x7e\x3f\xbd\x37\x63\xef\x99\xaa\x28\x0a\xba\xae\x77\x1a\ \x8d\x86\xa8\xd5\x6a\x45\xdf\xf7\xd1\x75\xbd\xdf\x56\x51\x14\xe2\ \x38\x46\x51\x14\x92\x24\xa1\x56\xab\x71\xea\xd4\xa9\x67\xa7\xa6\ \xa6\x8e\xb6\xdb\x6d\xb2\xd9\xec\x35\xcc\xba\xf5\xbb\x61\x18\xac\ \xae\xae\x52\xaf\xd7\xad\x30\x0c\x8b\x3d\x51\xbe\xa7\x25\xf7\x74\ \xe4\x5e\x4c\x9b\xcc\xbf\x5e\x2c\x16\xeb\x61\x18\x62\x18\x46\x5f\ \x17\xd7\x0a\x85\x62\x2a\xb6\xf0\x6a\x18\x86\x8a\x10\x42\xc9\xe5\ \x72\x64\x32\x19\xc4\x26\xdb\xf6\xf4\xd2\x4d\x61\xb6\x1f\x94\xeb\ \xba\x81\xa6\x69\x6a\x26\x93\x51\x85\x10\x90\x6e\x8a\xf0\xdf\xc5\ \xcd\x9b\x4b\x9f\x68\x7d\x7d\xdd\xaf\xd7\xeb\x79\x21\x84\xcc\x9a\ \x59\xd2\x64\x53\x0f\xde\xc2\xc2\xbd\xcf\xfa\xfa\x7a\x92\xcd\x66\ \xf5\x4c\x26\x93\x66\x32\x99\x2e\x93\xb3\x45\x3f\xde\xd2\x7e\x73\ \xad\x16\x46\x51\x44\xbe\x90\x4f\x45\xda\xe3\x6c\xfa\x4b\xb3\x5e\ \x2c\x9b\x59\x74\x99\x24\x49\x52\x2c\x16\xbb\x2a\xf6\xbf\xd0\xb7\ \x65\x59\x22\x08\x02\xaf\x54\x2a\xc5\xa6\x69\x4a\x52\x90\x49\x57\ \x6f\xd6\x46\x76\x97\x93\xc4\xd2\x20\xee\xbf\x14\x12\xdb\xb6\x6b\ \x13\x13\x13\x84\x51\x44\x52\xf4\xc8\x8d\xc4\xa4\xbe\x02\xbe\x4e\ \xea\xa8\xa4\xae\xda\xbf\xa2\xb6\x6d\xaf\xd7\xeb\xf5\x9a\x69\x9a\ \x5a\x24\x62\xc4\xa8\x4d\x2e\xab\x75\xb5\x5b\xd7\x20\xb1\x55\x44\ \xd2\x1d\x1d\xcf\xf3\x9c\x20\x08\xd6\xea\xf5\xfa\x80\xaa\xaa\x69\ \x3b\xd3\x64\x68\x52\x25\x76\x14\xf0\x74\x12\x57\x45\xfa\x2a\x3d\ \x81\x3e\x0c\xc3\x28\x9b\xcd\x16\x6b\xb5\x5a\xe2\xa4\x1e\xa5\x5d\ \x01\x24\x0a\xa9\xab\x76\xdb\xdb\x2a\x24\x0a\x20\x31\x4d\x53\x5c\ \xba\x74\x29\x3e\x78\xf0\x20\x69\x94\x26\x8d\xfc\x2a\xdb\x76\x69\ \x84\x36\xe0\x99\xa4\xae\x42\xea\xe8\xc8\x50\x60\x9a\x26\xed\x76\ \x3b\x19\x1e\x1e\x8e\x73\x99\x6c\xd2\x0c\x6d\x59\xdb\x17\x23\xd2\ \x6e\xdf\xd2\xd3\x49\x6d\x15\x19\x2b\x28\xaa\xc0\x30\x0c\xc5\xf7\ \x7d\x67\xef\x9e\xbd\x81\x1f\x86\xa9\x1c\xb6\x29\xd6\x15\x12\x4f\ \xa2\x95\x1e\x5c\xd5\x55\x55\xa5\xf1\x85\x1a\xb1\xd5\x65\x5b\x21\ \x84\x6e\xdb\x36\x96\xef\x92\x8c\xad\x91\xd9\x1f\xb1\x2d\x3f\xcd\ \x4a\xeb\x75\x34\xa9\x90\xba\x3a\x8d\x2f\xd6\x7a\x6f\xb3\x2c\x90\ \x49\xd3\x54\xef\x18\x16\x43\x47\x9a\x8c\x56\x07\x51\x11\x34\x3a\ \xcb\xe8\x19\x95\x8d\x2f\xd6\x88\x9b\x1a\x49\x92\x64\x85\x10\x85\ \x34\x4d\x55\x40\xf5\x77\xac\x53\xbe\x25\x4b\x4d\x1f\x67\xa9\x79\ \x05\x45\xa8\x78\xa7\x0b\xd8\xaf\x14\x00\x89\xae\xeb\x39\x40\x13\ \x09\x2c\x69\xeb\x6c\xbf\x4b\x62\xa4\x25\x64\x9a\x10\x04\x6d\xd2\ \x40\xa1\xf3\x62\x89\x60\xde\x40\xcd\xa9\x24\x49\x92\xf3\x3c\x8f\ \xd4\x4d\xf5\xd5\xa9\x39\xa6\x0f\x0e\x30\xae\x4d\xb3\x62\xcd\x11\ \x79\x29\x71\x5b\x63\xe3\xcb\x15\xc2\x30\x42\x08\xa1\xab\xaa\x1a\ \x93\xa2\x9d\xf2\x17\x78\xeb\xd1\x3c\x22\x36\x30\x44\x86\xb6\xbd\ \x8e\xae\x99\xb4\x9e\x2a\x13\x2e\x19\xbd\x5b\xba\x1e\x45\x51\x7e\ \xd5\xea\x30\xfd\x88\x8d\x5a\xf6\x98\x2a\xed\x46\x79\x64\xe7\xe3\ \x0c\x54\x86\x08\x93\xb0\xbf\xa2\x07\x64\x10\x04\x84\x41\x48\xac\ \xfa\xdc\x5e\x7b\x37\x77\x6f\x7f\x27\xff\xe9\x0d\x7f\xcb\x74\xe5\ \x36\x06\xea\xa5\xfe\x83\xbb\xc7\x94\x41\x10\x10\xcb\x90\xd6\x1a\ \xbc\xeb\xe0\xcf\xf3\xd0\xc4\xe3\x1c\x9a\x38\xca\xdd\x07\x1f\xc6\ \x0f\x9d\x5e\x7b\xd9\xd3\x91\xc3\x30\x24\x8c\x23\xde\x3c\xf3\x41\ \x86\xd2\xdb\x79\xd3\x0d\xef\xe2\xc8\xe8\x0f\xe1\xd2\xc2\xdf\x8c\ \xa3\xc7\xc2\xbe\x1f\x90\xc8\x88\x89\x81\xdd\xfc\xc8\xde\x7f\xcf\ \xbf\x3b\xfa\xdf\x59\x9e\xd7\xd9\x31\x39\x43\x94\xfa\x04\xfe\x55\ \x55\xae\xcb\xc2\x1e\xba\xa1\x32\x63\x1c\xe5\x8d\x13\xff\x86\xbd\ \x85\x87\xf8\xc5\x37\x7e\x92\xd8\xb0\xfb\x9a\xf3\xa6\x2a\x27\x7d\ \xcf\x27\x25\xc6\x0f\x42\xde\x77\xf0\x0f\xb9\x77\xe7\x3b\xf9\xe0\ \xad\x7f\x40\xa9\x96\x23\x96\x5d\x1a\xbb\xaa\x26\xfa\x04\x51\x48\ \xa2\x7a\xdc\x5b\xfa\x59\xf6\x0e\xde\x8a\xb2\x7f\xe4\x30\x23\x95\ \xb1\x2e\x1d\x78\x2e\xfe\x26\x27\xf6\xde\x88\x71\x1c\xb0\xb7\x7e\ \x84\xaf\x5c\xfc\x73\x2e\x5f\x59\xe4\xd0\xb6\xdb\x50\x64\x77\xd9\ \xd0\xe3\xd5\x3e\x0b\x87\x21\xbb\xaa\x37\x71\x7e\xfd\x15\x8e\xcd\ \x3d\xc9\x1b\xa6\xff\x35\xba\x92\x21\x0c\xbb\xf6\xb3\x5e\xdf\x3d\ \x12\xc9\xe9\x45\x8a\x66\x95\x0b\xce\xb3\x5c\x57\xb8\x9f\xd1\xca\ \x24\x06\x19\x3c\xcf\xed\xaa\x7c\x69\xda\xd7\x6e\xd3\x24\x25\xa3\ \x64\x49\xf4\x16\x4f\x7c\xfb\x49\x0e\x8d\xdc\x41\x2d\xb3\x0d\x3f\ \xf0\xfa\x71\xf7\x58\xd8\x73\x5d\x34\x55\xc5\x6a\xc2\x4b\x8b\x4f\ \x52\x54\x87\x19\xa9\x0e\x41\x2a\xf0\x3d\x1f\xdf\xef\x0a\xeb\x41\ \x18\xe0\x79\x2e\x42\x11\x5c\x3c\x63\x31\x34\x6a\xe0\x86\x1d\x0e\ \x8e\xdf\x44\xc5\x1c\xee\x8a\xf4\x5b\x58\xd8\x75\x5d\xc2\x30\xa0\ \xdd\xf6\xf8\xf1\x87\xde\xcd\x4b\xcb\x5f\x41\xf1\x43\x1f\x3f\xec\ \x66\x1c\xc2\x4d\x1f\xdd\x56\x5d\x18\x54\xfc\xd8\x61\xa8\x30\xc1\ \x40\x7e\x80\xa6\xdd\x04\xa1\x74\x99\x73\x13\x71\xba\xac\x1b\x90\ \xc6\x29\x4e\xd8\x61\x20\x37\x48\xd1\xac\xd2\x8e\x56\x51\x95\xab\ \xbe\xc2\x28\x8a\xfa\xc9\x84\xee\xec\x4d\x11\x08\x94\x24\x4b\xa2\ \xdb\xb8\x5e\x80\x17\xba\x84\xc1\xb5\x7d\xf7\x66\x8c\x50\x54\x34\ \x91\x65\x64\x60\x94\x75\x6b\x0d\x2f\xb2\x49\xe2\x84\x30\xb8\xba\ \x8c\x09\xc2\x00\xcf\xf7\x51\x84\x4a\xbe\xa0\x33\x53\x3f\x84\x15\ \x36\x50\x31\x00\x05\x7f\x73\x06\x02\x44\x61\x57\x17\x46\x42\xa9\ \x6c\x92\x04\x1a\x9a\xa2\x23\x53\x08\x22\x97\x24\x4e\xfa\x62\x7a\ \x6f\x4c\xa2\x28\xc2\xd4\x35\xae\x2c\x2f\x51\xcc\x54\xd1\x3e\x77\ \xf1\xe3\x78\xda\x3a\x41\xe0\xe3\xba\x29\x19\x99\x5e\x75\x26\xc4\ \x11\x65\x25\xcb\x17\x2e\xff\x2e\x3f\x7d\xf8\xe3\x3c\xb9\xf8\xdf\ \x99\xeb\x9c\xc7\x4f\xec\x2e\xcb\x6e\x2e\x21\x7a\x59\x16\x19\x43\ \x98\x9f\xc3\xee\x24\x1c\xd9\x73\x23\x7f\x73\xea\xb7\xa8\x0c\x16\ \x88\xa2\x18\xd7\x0d\x89\xe3\xb8\x6f\x91\x00\xc8\x18\x0a\x4f\x5c\ \xf8\x5f\x7c\xe4\xde\xff\xc2\x5f\x9c\xfa\x45\xe2\x58\xa2\xa2\xe1\ \xba\x5d\x59\x53\xd7\xf5\x6e\xf0\x91\x24\x4d\x25\x0b\xed\x0b\x2c\ \x8a\x55\x4a\x25\x03\x6d\x78\x8e\x85\xb6\x4e\x1c\x77\x6d\x19\x99\ \x9c\xd9\x8d\xdb\xf5\x70\x2d\x17\x43\x6a\x5c\x09\x5f\x62\xc6\xbb\ \x81\x96\xf6\x1a\xbf\xf9\x8d\x0f\xa0\xeb\x1a\xb6\xd3\x46\x57\xf5\ \xbe\xb0\x1e\xba\x01\x69\x51\x32\x35\x35\xc0\x57\x4f\x7e\x81\x99\ \xc9\x51\x7e\xfd\xf9\x1f\x27\x10\x36\x51\x1c\xe1\xba\x11\xaa\xae\ \x5c\xbd\x2b\xe3\x88\x72\xa1\xcc\xef\x7c\xf3\x71\x3e\x72\xf4\xd7\ \xd1\x6c\x7d\x99\xf5\xc5\x16\x2b\xaf\x37\x89\x83\x94\x5c\xd4\xd5\ \x40\x9b\xcd\x26\x7e\x12\x91\x77\x73\x84\xea\x3a\x7f\xf0\xed\x8f\ \x72\xc3\xcc\x8d\xb4\x5a\x57\x38\xff\x4f\x01\xad\x96\xdb\xd7\x85\ \xdb\xed\x36\x71\x1c\x43\x4e\x20\x45\x95\xcf\x5f\xfe\x6f\x3c\x9c\ \xf9\x57\x34\xd3\x79\x16\x8f\xe9\xac\xce\x36\x89\x9c\xee\xba\x4a\ \xd3\xb4\xbe\xff\x26\x17\xe5\x58\x8e\x5e\xe5\xef\xce\xfe\x0e\x8e\ \x6c\xd2\xf6\x9a\x2c\x5d\xb4\x68\x6e\x61\x61\xcf\xf3\x48\xfc\x98\ \x70\x50\xe0\xcb\x0c\x5f\x5f\xf8\x53\x0e\x6b\x47\x49\x0b\x1d\xe6\ \x2f\x84\x2c\x9c\x6e\xe1\xb5\x63\x34\xa3\xbb\x32\xb0\x2c\xab\xcb\ \xc2\x71\x81\x40\x59\xe3\x45\xfb\x2f\x48\x8c\x80\x85\x53\xeb\xbc\ \xfe\xb4\x4b\xa7\xe9\x7e\x17\x0b\x77\xe8\x14\x52\x62\x4a\x1c\x6b\ \x7e\x86\xf9\x78\x27\x4d\xed\x32\xeb\x97\x5c\x2e\x7c\xa3\x2b\x30\ \x65\x32\x19\x92\x24\x61\x63\xa3\x41\x47\x26\x04\xa1\x8e\xa5\xbc\ \xce\xc7\x9f\xfe\x08\x62\xfb\xc4\xb4\x4c\x3c\xc8\x54\xba\x9d\xe6\ \x72\x39\xa2\x28\xb2\xa4\x94\x45\xdd\x30\x30\x27\x13\x8a\x83\x2a\ \xf6\x52\x44\x63\xd6\x23\x6a\xa8\x68\x86\x82\x9a\xe9\x2f\x90\xe7\ \x34\x4d\x1b\x30\x4d\xb3\x18\xeb\x11\x43\x87\x0d\xe2\x46\xc2\xc6\ \x15\x07\x7f\x59\x25\xf1\x25\x66\x59\x25\x4d\x13\x00\x0b\x68\x1a\ \x86\x31\xa9\x69\x1a\xe6\x9e\x84\x72\x51\xa7\x31\xe7\x61\xcf\x27\ \xf8\x1b\xa0\xe7\x15\x14\xbd\x6b\x6f\x2b\x16\x8b\x96\xe7\x79\xc5\ \x8c\x61\xe2\x19\x01\x33\x77\xe6\x68\xcf\x85\x34\xe7\x5d\xfc\x55\ \x95\xd8\x97\x64\x4a\x57\x59\x78\x6e\x6e\xee\xd9\x89\x89\x89\xa3\ \x49\x94\xa2\x8c\x85\xe4\x73\x2a\x8d\xd7\x03\xac\x85\x10\x81\x8a\ \x66\x8a\x4d\x5b\x9e\x4a\x10\x04\x94\xcb\x65\x2b\x0a\xc2\xa2\x65\ \xc4\xec\xbf\xa7\x40\x73\x36\xc0\x5a\x0a\x70\x16\x24\x69\x04\x66\ \x45\x21\x4d\xba\xba\xb0\xe7\x79\xeb\x86\x61\xd4\x51\x75\x26\xef\ \xd6\x88\xec\x14\x77\x2d\x46\x3b\x72\xcb\x4d\x34\x5b\x4d\x0a\x85\ \x02\xed\x76\x9b\x20\x08\x58\x58\x58\xe0\xb1\xc7\x1e\x23\x9f\xcf\ \x93\x84\x29\x2f\xbd\xfc\x32\x5a\x4d\xc5\xcd\x39\x28\xaa\x82\xe3\ \x38\xac\xae\xae\x52\xad\x56\x39\x7b\xf6\x2c\x33\x33\x33\xdc\x7f\ \xff\xfd\x0c\x0f\x0d\xf3\xe9\xff\xf9\x19\x76\x4d\x4d\xb0\xe0\x2e\ \xb0\xed\xe0\x28\x1b\x8d\x0d\x6c\xdb\xa6\x52\xa9\xf0\xca\x2b\xaf\ \x20\xa5\xe4\x7d\xef\x7b\x1f\xf5\x7a\x9d\x27\xbe\xf2\x35\x74\x0c\ \x32\xc6\x22\xe3\xf7\x8c\xb1\xba\xb6\x82\xd1\xb5\xa9\xf5\xfd\xda\ \x77\xde\x79\x27\x37\x1e\x3e\x8c\xa1\xe9\x7c\xfb\x5b\x2f\x33\x5c\ \x0a\x68\x8f\xb7\xd1\xa6\x55\xaa\xd5\x2a\x67\xce\x9c\x21\x93\xc9\ \x6c\x5a\x36\x34\xee\xbb\xef\x3e\x1e\x7d\xf3\xa3\xbc\xf0\x8d\x17\ \x79\xe9\xa5\x97\x98\xda\x97\xa1\x7c\x7b\x89\xd9\xd9\x59\x2c\xcb\ \xa2\x5c\x2e\xb3\xbe\xbe\xce\xd2\xd2\x12\xd5\x6a\x95\x77\xbf\xfb\ \xdd\x34\x36\x36\x78\xe6\xa9\xe7\xd9\x57\x1f\xc0\xcf\x7a\x34\x06\ \x1a\x0c\x0e\x0e\x12\x86\x21\x2b\x2b\x2b\xb4\xdb\x6d\x3c\xcf\xe3\ \xc3\x1f\xfe\x30\x99\x4c\x86\x57\x5f\x39\x4d\x4b\x69\xe2\x97\x3d\ \xb4\xa9\xe9\x29\xdc\x53\x2e\x9a\xa6\x31\x33\x33\xc3\x99\x33\x67\ \x48\xd3\x94\x5d\xbb\x76\xf1\xc8\x23\x8f\xf0\xe2\x8b\x2f\xb2\xde\ \x5c\xa3\x56\xab\x21\xa5\xe4\xfc\xf9\xf3\xd4\xeb\x75\x3c\xcf\x63\ \x60\x60\xa0\x6f\x9b\x7d\xec\xb1\xc7\xf0\x7d\x9f\x13\x27\x4f\x30\ \x33\x33\x43\xa1\x94\xa7\x5c\x2e\x53\x1f\xac\x73\xfa\xf4\x69\x6e\ \xba\xe9\x26\x4e\x9c\x38\x41\x10\x04\xdc\x7f\xff\xfd\x4c\x4d\x4d\ \xd1\x6e\xb7\xd9\xd8\xd8\xc0\x0b\x1d\xf6\xee\xdb\x0b\x02\x5c\xd7\ \x65\xf7\xee\xdd\xcc\xcf\xcf\x03\xb0\x6d\xdb\x36\xde\xf9\x8e\x77\ \xe0\x79\x1e\x17\x2e\x5e\x40\xd7\xab\xec\x1f\xb8\x8e\x6f\x7f\xfb\ \xdb\xd4\x6a\x35\xea\xf5\x3a\xba\xae\xf7\xb3\xe3\xbb\x77\xef\xe6\ \xbe\x7b\xef\xe3\xe4\x89\x93\xd4\x06\xab\x98\xa6\x49\xb9\x5c\xa6\ \xd5\x6a\xf5\x2f\xa4\x65\x59\x00\x94\xcb\x65\xde\xf6\xb6\xb7\xf1\ \xc2\x0b\x2f\x70\xfe\xc2\x05\xf6\xee\xdd\x8b\x65\x59\x5c\xbc\x78\ \x91\x81\x81\x01\x4a\xa5\x12\xa6\x69\xf2\xda\x6b\xaf\x21\xa5\xe4\ \xc8\x91\x23\x4c\x4c\x4c\xf4\x66\x24\xaf\xbd\xf6\x5a\xd7\x23\xdd\ \x63\xbf\x28\x8a\xc8\x66\xb3\x58\x96\x65\x65\x32\x99\xe2\xb6\x6d\ \xdb\x58\x5a\x5a\x42\xd3\xb4\x1e\xcb\xf6\x59\xb4\xb7\x8f\xeb\xba\ \x73\xd9\x6c\x76\x60\x64\x64\xa4\xd8\x4b\x3e\xf6\xb6\xa7\x69\xda\ \xff\xbe\xe9\xdf\xb3\xc2\x30\x6c\xe6\xf3\xf9\xc9\xf1\xf1\x71\x16\ \x17\x17\x7b\x0b\xf7\xee\x33\x74\x93\xa3\x7b\x8c\xab\x69\x9a\xe5\ \xba\x6e\x71\x66\x66\xa6\xef\x70\x48\xd3\xb4\xcf\xca\x3d\x96\x4e\ \x92\x84\x6a\xb5\xda\x67\xe1\x9e\x51\x60\x2b\xe3\xf7\x72\x97\xbd\ \x9c\x64\xa3\xd1\x60\x68\x68\xc8\xca\xe5\x72\xc5\xad\x2b\x84\xad\ \xb1\xf7\x58\x5e\x51\x14\xda\xed\xf6\x7a\xb5\x5a\xad\xd7\x6a\x35\ \x9a\xcd\x66\x9f\x99\xb5\x6c\x26\x1b\xf4\x98\x6f\xf3\xf9\x27\x6d\ \xdb\x6e\xd4\xeb\x75\xa3\xd1\x68\x90\xcd\xe6\x20\x05\x5d\xdd\xc2\ \xc1\x5b\x18\xdd\xb6\x6d\x3f\x93\xc9\x48\xc7\x71\x10\x42\x90\x35\ \x73\x7d\xdf\x72\x9f\x27\xaf\xb2\xb0\xf0\x3c\x8f\x4c\x26\x13\xae\ \xaf\xaf\xcb\x6c\x26\x4b\x9a\x82\x40\xa2\x6b\xc6\x35\xcc\x2a\x13\ \x6a\x82\x26\x00\x00\x1f\x45\x49\x44\x41\x54\x84\x60\x75\x75\xd5\ \xca\xe5\x72\x99\x76\xbb\xad\x17\x8b\xc5\x2e\x93\x7f\x9f\x7e\x7b\ \x03\x93\xa6\x69\x1b\xe8\x14\x8b\xc5\x10\x49\xbf\xfd\x77\xf3\xb0\ \xaa\xaa\x04\x41\x10\x85\x61\xa8\xab\xaa\x6a\x02\x52\x53\x74\x34\ \x45\xbf\xf6\x1c\x05\x08\x04\xb6\x6d\x8b\x24\x49\x56\x72\xb9\x5c\ \xd9\xb6\xed\xd4\xd0\xcd\xbe\x9c\xaa\x8d\xec\x2d\x99\xf1\x86\x81\ \x48\x05\xa8\x5d\x9d\xe0\xf2\xe5\xcb\xcd\xb1\xb1\xb1\xed\x9e\xe7\ \x93\x16\x3d\xb2\x63\x11\x69\x92\x82\xab\x93\xb4\x32\x24\x2d\xad\ \xef\x91\x76\x1c\xa7\x30\x31\x31\xa1\xaa\xaa\x4a\xac\x24\x24\xdb\ \xda\x94\xcb\x2a\x49\x24\x51\x82\x0c\x51\x43\x43\x3a\x3a\x02\x81\ \xe3\x38\xba\xe7\x79\xa5\x7a\xbd\x6e\xa8\xaa\x4a\x33\xdb\x60\x62\ \x87\x4e\xe4\x27\xc8\x4e\x96\xa4\xad\x21\x5d\xb5\x9f\xf4\x74\x5d\ \x37\xc9\x64\x32\xf6\xf6\xc9\xc9\x01\x37\x0e\xc8\xef\x75\x50\x84\ \x20\x75\x55\xd2\x8e\x49\xd2\xd4\x21\xa5\xeb\x91\x36\x0c\xce\x9c\ \x39\xa3\x4f\x4c\x4c\x94\x64\x22\x69\xe6\x36\x18\x99\xd6\x88\xfc\ \x14\x6c\x93\xa4\xad\x93\x74\xba\x71\x1b\x86\xce\xca\xca\x0a\x43\ \x43\x43\xcd\x5c\x36\x67\xac\x07\x1d\x86\x0f\x74\x0d\xec\xa9\xab\ \x20\x2d\x93\x68\xa3\x1b\xb3\xa2\x77\x97\x53\xed\x76\x7b\x6e\x68\ \x70\x70\xbf\x17\x46\x88\x6d\x36\xc5\xaa\x42\x1c\x26\x68\xe5\x37\ \xae\xa2\x48\x9d\xd6\xd7\xab\x44\x2b\x46\xaf\xf6\x22\xaf\x69\x1a\ \x71\x9a\x20\x47\x6d\xb4\xc3\x2d\xf6\xd5\x6e\x66\xc5\xbe\x8c\xed\ \x36\x50\xbc\x0c\x8d\x2f\x0c\xf6\xec\x17\x5a\x1c\xc7\x4a\x18\x86\ \x58\x9a\x83\xb9\x63\x89\xfd\x3b\x0f\x32\x59\x9d\xe6\xe9\x73\xff\ \x40\x25\x57\x63\xfd\xab\x39\x82\x05\x13\xd7\x75\x15\x45\x51\xb4\ \xde\xed\x14\xef\x6c\x52\xbc\x39\xc3\x74\xe9\x00\xe7\x57\x4e\x92\ \xa6\x92\xe8\x74\x15\xfb\x44\xbe\x97\x20\x50\xa3\x28\xd2\x7d\x37\ \x60\x21\x5d\xe1\xe0\x4d\x0e\x25\x31\x8c\x24\xc0\xf6\x56\x89\x2c\ \x81\x73\xac\x4a\xb0\xa0\xf7\x6e\xd1\x9c\xaa\xa9\xc8\x50\x62\x4f\ \xad\x31\x70\x7b\x99\xaa\x36\xc1\xba\x33\x8f\x65\x3b\x18\xd6\x00\ \x8d\x7f\x2e\x03\xa2\x97\x2e\xd3\x55\x29\x38\x1f\x2e\xb2\xff\x68\ \x19\x2d\xc9\x92\x33\xb2\xcc\x6f\xbc\x4e\x45\x14\xe8\x3c\x3b\x40\ \xb8\x64\xf4\xd2\x68\x75\x10\xb4\x02\x8f\x1d\xb7\xfa\x50\x6c\x73\ \xd3\xf0\x3d\x28\x6f\xde\xf1\xb3\x8c\x0c\x4e\x11\xa7\x61\xdf\x23\ \x0d\x48\xdf\xf7\xf1\x3d\x9f\x98\x80\x5d\xc6\x03\xfc\xab\x1b\x3e\ \xc6\x8f\x5d\xf7\x9b\x5c\x3f\xf8\x28\xa3\x63\xa3\x7d\xed\x36\xde\ \x74\x9f\x06\x41\x40\x9c\x44\xac\xaf\x06\xfc\xe8\xc1\x9f\x43\xb6\ \x07\xf9\xa9\x23\xbf\xce\x0f\x1d\x79\x1f\x41\xe2\x5f\xe3\x50\xf5\ \x3c\xaf\xef\xfc\x7c\xf3\xcc\x87\xd8\xa1\x3f\xc8\xdd\x3b\x7f\x90\ \x37\xed\xfc\x20\xa1\x66\xe3\x79\x57\xfb\xee\x89\x56\x51\x1a\x31\ \x9c\x9f\xe2\xa1\x89\x0f\xf1\x73\x77\xfd\x19\xf6\xd2\x20\x37\xee\ \xb9\x95\x20\xb5\xaf\xd5\x85\xfd\x00\xd7\x75\xd1\x74\xc1\x8e\xdc\ \xed\x7c\xf8\xc8\x1f\x70\xa0\xfa\x46\x7e\xe9\xbe\x4f\x11\x67\xba\ \x6d\xb7\x78\xa4\xa5\xeb\x7a\x24\xa4\x78\x81\xcf\xfb\x0e\xfc\x01\ \xf7\xed\xf8\x51\x7e\xe6\x96\x4f\x32\x36\xbe\x8d\x30\xbd\xd6\x23\ \xed\xf9\x1e\x7e\x10\x10\x0b\x97\xbb\x73\x1f\xe3\xc0\xf0\x9d\x28\ \x35\x73\x9c\xa1\xfc\x58\x9f\x67\x7b\xce\xa5\xfe\x49\xc6\x01\xd7\ \x0d\x1f\xe1\x89\x4b\x7f\xc1\x97\x5f\x78\x8a\xbd\x43\x37\xf4\x6c\ \x1a\xfd\x37\x5f\xdf\x23\x1d\xfa\xd4\x8c\x49\xe6\xdb\x17\x78\x75\ \xe5\x05\x6e\x99\x78\x00\x3f\xb6\xfb\xfa\xeb\x56\x8f\xb4\xe7\x79\ \x64\xf5\x22\xe5\x4c\x95\x67\x16\x3e\xcd\x91\x91\x47\x29\x64\x4a\ \x68\xa9\x89\xe7\x79\xb8\xae\xbb\xc5\xc7\xec\x11\x47\x11\xe5\xec\ \x00\x4a\xa1\xcd\x17\x5f\xfc\x12\x3b\x6b\x07\x29\x68\x15\xfc\x20\ \xc0\xf3\xbd\xab\x16\x5f\xdf\xbf\xea\x91\x6e\xe8\x7c\xe6\xe5\x3f\ \x24\x9f\x8e\x33\x33\x3e\x09\xa9\x8a\xe7\x5f\xf5\x48\x77\xe3\xea\ \x7a\xa4\x2f\x9c\xb6\xa8\x0d\x2b\xac\x3b\x8b\xec\x9f\x38\x44\x4e\ \x2d\x6f\xb2\xb2\x77\xcd\x85\x8f\xc2\x90\x76\xdb\xe3\xa7\x1e\xfd\ \x71\xbe\x7a\xe9\x93\x28\x61\x1c\x63\x79\x9d\x4d\x16\xbe\xea\x76\ \xef\x79\x89\x91\x02\x27\xb4\x19\x2e\x6c\x67\xa8\x32\x44\xcb\x6d\ \xf5\xf5\xd5\xad\xbc\x1a\x86\x21\x71\x94\x12\xa4\x0e\xb5\xdc\x08\ \x05\x7d\x80\x8e\xdf\x24\x6f\x94\xfb\x09\x87\x9e\x1a\xd7\x9b\xb1\ \xa9\x4c\x10\x28\x68\x69\x9e\x58\xb3\xf0\xbc\x08\x3f\xf2\x09\x43\ \xbf\xdf\x77\x92\x24\x04\xa1\x4f\x12\xa7\xa4\x52\x22\x63\x9d\xb1\ \xda\x04\xab\xad\x35\xc2\x34\xd8\xe4\xd5\x2d\x1e\xe9\x4d\x83\x80\ \xa2\xa8\x64\xb3\x1a\xe3\xe5\x19\x2c\xbf\x89\x21\xf2\x48\xb9\xe9\ \xcf\x0e\xba\x49\x8d\x5e\xa6\x47\x4a\x28\x57\x4c\xe2\x40\x43\x57\ \x0c\x04\x0a\x61\xe2\x13\x47\xc9\x35\x1e\xe9\x1e\x17\x1b\xba\xc6\ \xdc\xd2\x12\x45\xa3\x8a\x72\xac\xf9\x69\x7c\xd1\xda\xf4\x39\x7b\ \xdf\x57\x17\xfe\xc6\xca\xa7\xd9\x6e\xdc\xce\xf8\x4e\x85\x13\xcd\ \x7f\xc2\x89\xdb\xb8\x6e\x37\x63\xd2\xbb\x85\x5d\xd7\x25\x08\x43\ \x0a\xb5\x90\x97\x5f\xff\x36\x8f\x3f\xfc\x4b\x7c\xfc\xf9\xf7\xf1\ \xed\xc5\x27\x49\x93\xf4\x9a\x6c\x4c\xaf\x6f\xd5\x48\xf9\xfa\x85\ \xcf\xf2\xf8\xbd\xbf\xc2\xe7\x4e\xfd\x01\x67\xec\xaf\xa1\xa2\xe2\ \xba\xd7\xce\x6e\xd7\xf5\x88\xe2\x88\x25\xeb\x12\xed\x8e\x4d\x6d\ \xd8\x40\xd6\x2f\xb2\x61\xaf\x10\x27\xdd\x4c\x4f\x3f\x9d\xe5\xfb\ \xb8\x8e\x8b\x94\xd0\xe0\x2c\x7b\x86\x6e\xc0\xcb\x5f\xe4\x77\x9e\ \xf9\x18\xba\xa6\x5f\x33\xbb\xbb\x71\x3b\x24\x49\xca\xd4\xd4\x00\ \x4f\x9d\xfe\x67\xc6\x6b\x93\xfc\xc6\x73\xef\x07\x91\xf4\xfb\xee\ \x5d\x78\xd7\xeb\xde\xc2\x95\x7c\x99\xdf\x78\xe6\x83\x7c\xf0\xa6\ \xdf\x41\x6b\x27\x8b\xb4\xa3\x15\x96\xce\x35\xf0\x3b\x29\x71\x9a\ \x47\x08\x41\xb3\xd9\xa4\xdd\xb1\x28\xb8\x39\x84\xa9\xf2\x47\x2f\ \x3f\xce\x1b\xf6\xfe\x10\xab\xf1\x79\xd6\xbf\xd3\xe5\xdf\x5e\x32\ \xc1\xb6\x6d\x5a\xad\x56\x37\x87\x2f\x2a\x3c\xbb\xf6\x67\xa8\xaf\ \x25\xb4\xc3\x65\x5a\x97\x57\x59\x38\xd3\xc0\x6f\xa7\xdf\xc3\xc2\ \xf9\x28\xc7\x42\xf8\x32\x9f\x3f\xf3\x87\x58\x41\x93\x96\x7f\x9e\ \xd5\x79\x9b\x56\xd3\x05\x21\xb7\xe8\xc2\x31\x81\x96\x12\x93\xe7\ \x2b\xaf\xff\x0f\xee\xd1\xde\x02\x19\x87\xb3\xf3\x27\x58\x39\xdb\ \xd5\x85\x35\x43\x05\xa0\xdd\x6e\x63\x37\x6d\x32\x51\x81\x66\xf2\ \x3a\x5f\xb8\xf4\xbb\xb8\x71\x93\x8b\xce\x4b\x6c\x2c\xf8\x6c\x2c\ \x37\x31\xf2\x5d\x0d\xc4\xb6\x6d\xac\x46\x07\xbb\xd8\xd5\x85\x9f\ \x5f\xfb\x4b\x2e\xd9\x7b\x58\x8b\xcf\x11\x58\x3e\xe7\x9f\x5e\x43\ \xd1\xe9\xeb\xc2\xcd\x66\x93\x4e\x9a\x10\x44\x06\xe6\xc0\x02\xbf\ \xfc\xa5\x9f\x40\xec\xd8\xb9\x43\xc6\xb6\xc4\x2c\x68\x24\x69\x42\ \x2e\x97\x63\x7d\x7d\xfd\xdc\xe0\xe0\xe0\x6e\x5d\xd3\xd1\xb6\x85\ \xe4\xea\x82\x8d\xb3\x3e\x76\x23\x40\x7a\x3a\xc8\xae\xde\xbb\x99\ \x91\x5e\xad\x54\x2a\x45\x20\x8b\x2e\xc9\x5f\x97\x12\x2d\xa7\xb4\ \x96\x1c\x12\x57\x23\xf1\x40\xcf\x0a\x52\x99\xf6\x3d\xd2\xa6\x69\ \x16\x72\xb9\x1c\xca\x8c\x4f\x5e\x55\x59\x39\xef\x10\x75\x20\xf1\ \xe8\x56\x11\xe9\xdd\x75\x5d\x3e\x9f\x5f\x6c\xb5\x5a\xa5\x91\xe1\ \x91\x82\x15\x5a\xcc\x3c\x98\x63\xf9\x84\x47\x6b\xc9\x45\x09\x0c\ \x02\x27\xc1\xc8\x77\x39\xfb\x1a\x16\x0e\x12\xf4\xbd\x31\x85\xac\ \xca\xca\x69\x9b\xd0\x92\xa4\x9e\x82\x4c\x41\xcb\x82\xd8\x4c\xc7\ \x55\x2a\x15\x4b\xa6\xb2\xd8\xc1\x67\xef\xbd\x79\x56\x4e\xba\xd8\ \xab\x21\xa9\xaf\x10\x3a\x29\x66\x49\x25\x89\x93\x9e\xe9\xf4\x58\ \x3e\x9f\x3f\x62\x98\x59\xc6\xee\x56\xb0\x97\x23\xda\x73\x21\xda\ \xa1\x03\x87\x7a\x86\x6e\xe6\xe6\xe6\x48\xd3\x94\x85\x85\x05\x1e\ \x7e\xf8\x61\x0e\x1c\x38\x40\x6b\xa3\xcd\x73\xcf\x7e\x83\xc9\x5d\ \x19\x36\x1a\x1b\x14\x8b\x05\x36\x36\x36\x68\x34\x1a\x54\xab\x55\ \xce\x9d\x3b\x87\xa6\x69\xbc\xef\x7d\xef\xa3\x90\x2f\xf0\x99\x4f\ \x7d\x96\xda\xb6\x2a\x57\xd2\x39\x86\x86\x87\x58\x5a\x5a\xc2\x34\ \xbb\x0e\xfa\x8b\x17\x2f\x12\x86\x21\x8f\x3f\xfe\x38\xf5\x7a\x9d\ \x2f\x7e\xfe\x1f\xbb\x25\x57\x43\xcb\x8c\x1c\x1a\x61\x75\x75\x95\ \x6c\x2e\xdb\xd7\xa6\x3d\xcf\xe3\xd6\x5b\x6f\xe5\x91\x47\x1e\xc1\ \xd0\x0d\x9e\x7d\xea\x79\x0a\x03\x0d\xe2\x52\x44\x14\xc7\x0c\x0e\ \xd6\xb9\x70\xe1\x02\xaa\xaa\x76\x4d\x42\x8a\xc2\xbd\xf7\xde\xcb\ \xfd\xf7\xdf\xcf\xd3\x5f\x7f\x86\xd3\xa7\xce\x50\x9b\xd4\x31\x32\ \x26\xcd\x46\x03\xdb\xb5\xc9\x66\xb2\x74\x3a\x1d\x56\x56\x56\xa8\ \xd5\x6a\xbc\xef\xfd\xef\x63\x7e\x6e\x9e\xe7\x9e\x7a\x9e\xeb\x46\ \xf3\x44\x83\x01\x8d\x66\x93\x5a\xad\x4a\x14\x45\x2c\x2f\x2f\xf7\ \x2d\x29\x1f\xfa\xd0\x87\xa8\xd7\x6b\x7c\xeb\xf9\x97\x58\xd5\x57\ \x88\xb6\x07\x68\x3b\x76\xec\xe8\x83\x75\xa1\x50\xe0\xf4\xe9\xd3\ \x24\x49\xc2\xde\xbd\x7b\xb9\xfb\xee\xbb\x09\x82\x80\x95\xf5\x65\ \x06\x07\x07\xd9\xd8\xd8\xe8\xdf\xba\x96\x65\x5d\xe3\xa9\x7e\xe0\ \x81\x07\x50\x55\x95\xaf\x3f\xf5\x75\x6e\xbb\xf5\x36\xf4\xe3\x1a\ \xa3\xa3\xa3\xfd\x5b\xf6\xe6\x9b\x6f\xe6\xd2\xa5\x4b\x24\x49\xc2\ \xad\xb7\xde\x4a\xa1\xd0\xbd\x10\xcb\xcb\xcb\xf8\x91\xcb\xee\x3d\ \xbb\x31\x33\x26\x8e\xe3\x70\xd3\x4d\x37\xf1\xb9\xcf\x7d\x0e\xdf\ \xf7\xd9\xb1\x63\x07\x87\x0e\x1d\x62\xdf\xbe\x7d\xb4\xda\x2d\xd6\ \xd7\xd7\x29\x16\x8b\x3c\xf7\xdc\x73\x8c\x8d\x8d\xd1\xe9\x74\xd0\ \x75\x9d\x2b\x57\xae\xa0\x28\x0a\xd3\xd3\xd3\x3c\xfa\xe8\xa3\x34\ \x9b\x4d\x6c\xcf\xa2\x56\xab\x01\xb0\x52\xc8\x73\xee\xdc\x39\x66\ \x66\x66\xb8\x70\xe1\x02\xab\xab\xab\x14\x0a\x05\xee\xb8\xfd\x0e\ \x4e\x16\x4e\x72\xf6\xfc\x59\x0e\x1d\x3c\xc4\xfa\xfa\x3a\x97\x2e\ \x5d\xa2\x5e\xaf\x53\xad\x56\xb9\x78\xf1\x22\x27\x4e\x9c\x00\xd8\ \x52\xb7\xdc\x4d\xae\xbe\xf4\xd2\x4b\x57\x3d\xd2\x3d\x1d\xb4\xa7\ \x0b\xcf\xcc\xcc\xec\xce\xe7\xf3\x7d\xee\xdb\xaa\xdb\x6e\xf5\x09\ \x5b\x96\xb5\x3a\x38\x38\x58\xcc\x64\x32\xd9\x5e\x8e\x6d\x6b\x6d\ \xee\xd6\xbe\x93\x24\x89\xc2\x30\x0c\xaa\xd5\x6a\xa1\x52\xa9\xf4\ \x8d\xe1\x5b\x75\xe1\xad\x35\xbe\x42\x88\xc5\x4e\xa7\x53\xda\xb5\ \x6b\x57\xa1\xd5\x6a\x5d\xc3\xcb\x5b\x75\xe7\x34\x4d\x19\x18\x18\ \xe0\xd4\xa9\x53\xcf\x1e\x38\x70\xe0\xa8\xa2\x28\xdd\x67\xf2\x16\ \x9f\xf3\x56\x8e\xd7\x34\x8d\x66\xb3\xc9\xd0\xd0\x90\x95\xc9\x64\ \x8a\xbd\xaa\xa8\xad\xbc\xdf\xd3\xa7\x7b\xe8\xb7\xb6\xb6\x76\x6c\ \x64\x64\xe4\x48\xb9\x5c\xee\xd6\xc4\xf4\x6a\x9a\xd3\x44\x6e\x28\ \xaa\x10\x42\x88\x1e\x23\xca\x34\x4d\xd7\x3d\xcf\x2b\xb6\xdb\xed\ \x54\x11\x8a\x90\xa9\xb8\xea\x1d\xde\xc2\x9f\x42\x08\x91\x24\xc9\ \x7c\xa7\xd3\xa9\xd8\xb6\x9d\xef\x5a\x8c\x95\x6e\x9d\xad\x72\x0d\ \x33\xf7\x4e\xc4\x0f\xc3\xd0\x75\x5d\xb7\xe6\x38\x8e\x54\x85\x4a\ \x9a\xf2\x7d\xfb\xde\xac\x17\x5e\x54\x14\x45\xac\xac\xac\x44\x02\ \x21\xb7\xb2\xad\x10\xb2\x3f\xf8\xaa\xaa\x62\xdb\xb6\x04\x56\x1a\ \x8d\xc6\x46\x92\x24\xc1\xbf\xd4\xf7\xe6\x52\xca\x71\x1c\x27\xef\ \xfb\x7e\xac\x20\x64\x2a\xaf\xd6\x0b\xf7\xda\xab\xaa\x0a\x20\xa2\ \x28\x0a\xe3\x38\x76\xd3\x34\x6d\x6f\x6c\x6c\x24\x48\x01\x12\x54\ \x4d\xd5\xb4\xf1\xbd\x83\xb5\xa4\xa9\x23\xd4\x6e\x6d\x6c\x77\x6d\ \xe4\x8f\x0e\x0e\x0e\xc6\x49\x9c\x10\x16\x1d\x72\xdb\x03\x68\x65\ \x48\xd6\x4d\x92\x8e\xd6\x7d\xd9\x1a\x12\x40\x49\x92\xc4\xa9\xd5\ \x6a\x59\x4d\xd3\x32\x31\x09\xd1\x78\x83\x81\x5c\x96\x68\xcd\x20\ \xd9\x30\x91\x91\x82\x62\x76\x5d\xe7\x41\x10\xb8\xc0\xda\xe0\xe0\ \xe0\x80\xa2\x28\xe9\xba\xba\xce\xe4\x75\x2a\xc9\x86\x49\xbc\x62\ \x92\x3a\x3a\x42\x93\x08\xad\x3b\x63\x72\xb9\xdc\x36\x45\x51\x46\ \x2b\x95\x0a\x7e\x1c\x92\xb9\xae\x83\xa1\x2a\xc4\x2d\x83\xb4\xd1\ \xe5\x5b\xa1\x4b\x50\x24\xba\xd6\xbd\x8d\x47\x46\x46\x22\x99\xa4\ \xc9\x9a\xb2\xc1\xf6\xeb\x15\xc2\x55\x83\x68\xd5\x44\xda\x3a\x42\ \x91\x08\xbd\xeb\xd2\x6f\x34\x1a\xb9\xc9\xc9\xc9\x11\x24\xca\x62\ \xd0\x60\xea\x66\x20\x12\x24\x4d\x9d\xa4\x91\x21\xb1\x34\x54\x53\ \x22\x14\x41\xb3\xd9\x5c\x0f\xc3\x70\xdf\xb6\x6d\xdb\xca\x8e\xef\ \x63\xee\xb4\xc9\x55\x14\xc2\x0e\x68\xf5\xb7\xae\xa3\xa5\x19\xda\ \x4f\x55\x89\xd6\x34\x0c\xc3\x40\xd7\xf5\xc1\x72\xb9\x5c\xb0\x3d\ \x0f\x65\x8f\xc5\xe8\x6d\x11\x78\x0a\x9e\xdf\x22\x27\xca\xa4\x6d\ \x93\xd6\x53\x15\x14\x45\xa1\xd1\x68\xa4\x85\x42\xa1\xaa\xeb\x7a\ \xbe\x6d\xb4\xd9\x76\x9f\x4a\x21\x17\x90\x84\x1e\x7a\x9c\x27\x49\ \x13\x9c\xa7\x46\x88\x3b\x0a\xaa\xaa\x56\x2d\xcb\x2a\x17\x8b\xc5\ \x31\x21\x04\xde\x75\xab\x8c\xde\x2e\x49\x5d\x41\xea\xc7\xc8\x58\ \x12\x9f\xaf\xe1\x9c\xc9\xf4\x3c\x37\x51\x18\x86\x64\x74\x93\x0d\ \xdd\x62\xc7\x83\x21\x39\x59\xc5\xf7\x3d\x48\x23\xbc\x86\xc4\x7f\ \xa9\x8a\xbf\xa4\x53\x2c\x16\x10\x42\x8c\x54\x06\x2a\x23\xd2\x95\ \x34\xf7\x2e\xb2\xed\xee\x0c\x8d\x8d\x0d\x0a\x4a\x85\xc0\x0b\xd1\ \xdb\x55\x5a\xdf\x28\x62\x9a\x26\x9a\xa6\x91\xcb\xe5\xc2\xc8\x8f\ \x0c\xbb\x6a\x33\x7e\x6f\x91\xd8\x57\x29\x68\x05\xe6\xd6\x2e\x52\ \x52\x86\xd8\xf8\xc7\x32\x32\x50\x31\x0c\x43\x13\x42\xa4\xa6\x61\ \xd0\x4c\x5c\x26\xef\x04\x4f\x5f\xe3\xd6\xd1\x7b\x51\xde\xb6\xeb\ \xe7\x19\x1f\x9b\x21\xc6\xc7\xf7\xaf\xf5\x31\x7b\x81\x47\xa4\x78\ \xec\xd2\xdf\xc4\x2f\x3c\xf0\xa7\xfc\xc2\x83\x9f\x60\x62\xf0\x20\ \xe5\x09\xf3\xbb\x3d\xd2\xa9\xef\xfb\x04\x49\x40\xa7\x19\xf1\xe1\ \x5b\x7f\x9f\x8f\xde\xf1\xa7\x4c\x8c\xec\xe6\xae\x5b\xee\xc1\x4b\ \xec\x1e\xb9\xa4\x49\x92\x5c\xf5\x48\x13\x71\xef\xc8\x7b\x79\xd7\ \xae\x5f\xe5\xd6\xbd\xf7\x73\x64\xe6\x51\x3c\x63\x03\xdf\x0b\x7a\ \x04\x20\xbb\xb5\xc8\x01\x51\x12\x32\x94\x99\xe6\xd1\xc9\x9f\xe1\ \xe7\x8f\xfe\x05\x71\x73\x82\x9b\xf6\x1f\xc1\xc7\xea\x7b\xbb\xbb\ \x0c\xdf\x95\x35\xd5\x0c\x4c\x67\x6e\xe7\x4f\xde\xf6\x1d\xae\x1b\ \x3d\xca\x8f\xdf\xf9\x9f\x89\x2b\xad\x2e\x0b\x7b\x5e\xbf\x6a\xd4\ \xf3\x7d\x34\x1d\xe6\xe7\x3a\xfc\xf2\x5d\x9f\x61\x6f\xf5\x28\xff\ \xe5\x4d\x9f\x23\x3b\x92\x12\xc4\xdd\xed\x71\x1c\xcb\xae\x47\xda\ \x27\x4c\x43\x3a\x5e\x87\x5f\xb8\xf1\xb3\x8c\x99\x07\x51\x46\xf2\ \xd3\x4c\x0d\xec\x25\x08\xc2\x6b\x0a\xae\xbb\x2c\x1c\x10\xc6\x3e\ \x77\x6c\x7f\x94\xdf\x7f\xe1\x63\x84\x56\x86\x1f\xb9\xe1\x03\x64\ \xd4\x5c\x9f\x95\x7b\x32\xa5\xbf\x59\x0a\x3a\x5d\xb8\x99\x53\x6b\ \xcf\xf3\xe5\x93\x7f\xc3\x3b\xf7\xfe\x7b\x26\x2a\x7b\x88\xa3\xb8\ \xcf\xc2\x3d\x5d\xd8\xf3\x3c\x4c\x25\xc7\xc4\xc0\x0e\x3e\x77\xfe\ \xb7\xb9\xa1\xf8\x83\x3c\xb0\xf7\xad\x0c\x66\x27\x71\xbd\xab\x9a\ \x73\x4f\x17\x8e\xa3\x84\x72\x76\x00\x91\xed\xf0\xc4\x4b\x4f\xb0\ \xb3\x76\x3d\xa3\x85\x1d\x78\x81\xb7\xd5\x1c\x4f\xe0\xfb\x38\xae\ \x87\xae\x29\x04\xad\x3c\x9f\x3c\xf6\x1b\x4c\x9a\x47\x78\xf0\xba\ \xb7\x60\xaa\x79\x5c\xdf\xc5\x73\xb7\xb2\xb0\x07\x48\xf2\xe1\x14\ \xeb\xe9\x19\x2a\xf9\x12\xdb\x4a\x3b\xa8\x67\xc7\xf1\x7d\xaf\x8f\ \x6f\x5b\x3d\xd2\x44\x1a\x37\xee\x3e\xc4\xf3\xeb\x9f\x42\x73\x7c\ \x97\xb9\xe6\x25\xa2\x28\x26\xf0\x23\x24\x7a\x5f\x7a\x0c\xc3\x80\ \x2c\x0a\x71\x12\x52\xd0\x2b\xe8\x8a\xc9\x8b\x17\xbf\x42\x9c\x76\ \x1d\xfd\x5b\x65\x4d\x80\x24\x9f\x10\x24\x1e\x05\xa3\x8c\x2a\x3a\ \x38\x2c\xd3\x70\x97\xf1\x7d\x97\xc0\xd7\xae\xa9\x17\x06\x30\x00\ \x55\xa8\x04\x5e\x42\x75\x50\xe5\xc5\xb3\xc7\x98\x6b\x9c\x25\x08\ \xba\xd6\x0e\x4d\xd3\x7a\xcf\x64\x12\x23\x46\x00\x32\x51\xa8\x97\ \x07\x79\xe9\xf2\x4b\xc4\x25\x1f\x91\x76\x8b\xbf\x33\x81\xb9\xe9\ \x4c\x08\x08\xbc\x00\x43\x68\x98\x19\x9d\x4a\x66\x88\xe5\xf6\x3c\ \x31\x1e\x4e\x60\x11\xf8\x06\x32\x95\x57\xb5\x6f\xdf\x47\x20\xf0\ \xd2\x0e\x25\x7d\x90\x86\xf3\x3c\x0a\x0a\xeb\xce\x12\x51\x18\x11\ \xf9\xd1\x35\x72\x6c\xac\xc5\xa4\xa4\x90\x82\x63\xa5\x28\xc7\x5b\ \x9f\xc5\xc8\x48\x82\xc0\xc3\x71\x9d\xfe\xf4\xee\x95\xfc\x6b\x22\ \xcb\x57\x5f\xff\x33\xde\x73\xf0\x3f\x73\xca\xfd\x12\x1b\xf1\xe5\ \x9e\x51\xa8\xcf\xab\xbd\x92\xff\x24\x4a\xe9\x68\x17\xc8\xc8\x41\ \xee\x3b\x78\x2f\x9f\x3f\xfb\x47\xf8\xa9\x4d\x12\x5f\x4d\x61\x6d\ \x2d\xb8\x16\x5a\xc2\x8b\x73\x4f\xf0\x33\xf7\xfe\x06\x7f\x7f\xfa\ \xf7\xb1\xb8\x42\x35\x3b\x8a\xe7\x5d\x75\xc7\xf7\x06\x30\x8a\x62\ \x96\xad\x39\x9c\x4e\xc2\xe8\xb6\x02\x71\x61\x96\x91\xe2\x76\xbc\ \xa0\x3b\xa3\xae\x26\x13\x7c\x7c\xcf\x45\x22\xb0\xb5\xcb\x1c\x1e\ \x3f\x4a\x47\x3f\xc3\x17\x4f\xfe\x15\x05\xb3\xd8\xcd\xc6\xb8\x5e\ \x7f\x40\xba\x3e\xef\x94\xfa\x64\xc4\x4b\xe7\x5e\x65\xa2\x3e\xce\ \x9f\xbc\xfc\x0b\x54\x8b\x75\xdc\xc0\xc1\xb6\x9d\xbe\xee\xed\x38\ \x0e\x81\xef\x53\x2a\x64\xf9\xbf\xff\xf1\x23\xfc\xe6\xa3\x5f\x44\ \x6b\xf9\x8b\x2c\x2e\xcd\xb2\x7c\xb1\x8d\xdf\x8e\x89\x93\x3c\x52\ \x4a\x36\x36\x36\xf0\xe3\x88\x82\x97\xa7\xa5\x9e\xe3\xb7\x9f\xfc\ \x25\x7e\xe2\xc1\xc7\xf8\xc7\x8b\xff\x83\xd6\x49\x95\x66\xb3\xeb\ \x91\x96\x52\x5e\xf5\x48\x67\x04\x46\xb6\xc6\xef\x3e\xf7\x6f\xf9\ \xa3\x1f\xfd\x27\xce\x36\xbe\xc9\x95\xd5\xf3\xac\xce\x37\xf0\x5b\ \x57\x3d\xd2\x3d\xa7\x41\x2e\xc9\x73\xb2\xf5\x55\x0e\x78\xb7\xe1\ \x26\x1d\xce\x2e\x7d\x89\xb9\x4b\x0e\x8d\x75\x17\xa1\x42\xa5\x52\ \xe9\x9e\x60\x10\x13\x69\xe0\xc9\x0c\x4f\xcc\x7d\x92\xf7\x8c\x7c\ \x0c\x51\x6a\xf0\xf5\x57\xbe\x48\x63\xde\xa1\xd5\x0c\x51\xf5\x6e\ \x92\xb6\xd9\x68\x62\xaf\xdb\xe8\x51\x91\xa5\xe0\x14\xc7\xd6\xfe\ \x81\x62\x31\xcb\x17\xce\xfc\x31\x8d\xc5\x90\x8d\x95\x26\x7a\xa6\ \x2b\xe1\x5a\x96\x45\xb3\xd9\xea\x96\xe5\xaa\x79\x9e\x5c\xfe\x63\ \x26\x9d\x43\x9c\x59\xf9\x06\x7e\x27\x61\xe1\xd5\x26\x7a\x01\x4c\ \xb3\xab\x0b\x37\x9b\x4d\xfc\xbc\x24\x4e\x4d\x16\xd2\x17\xf8\xcd\ \xaf\xfd\x1c\x62\xfb\xd8\x0e\x29\x10\xa8\x99\xae\x3f\xae\x57\x2f\ \x1c\x45\x51\x31\x9b\xcd\x91\xbf\x21\x66\x6c\x6f\x8e\xd5\x93\x1e\ \x57\x5e\xea\x80\x65\xa2\xe8\xa0\x9a\xe2\x1a\x5d\x58\xd7\xf5\x62\ \x92\x8f\xd8\xfd\xf6\x02\xe1\x7c\xca\xe5\xe3\x1b\xf8\xb3\x5d\x9d\ \x43\xcb\xf4\xcb\xc8\x2c\x45\x51\x9a\x52\xca\xc9\x7c\x3e\x4f\xfe\ \x68\xca\xd8\x68\x86\xd9\xe3\x6d\xd6\xbf\x93\x90\x86\x02\xd5\x00\ \x45\xeb\x2e\xc2\x2b\x95\x4a\xd8\x6e\xb7\x8d\x5c\x36\x87\xad\xb8\ \xdc\xf5\xc1\x1a\x2b\x27\x7c\x66\x8f\xb5\x09\xe6\x75\x10\x29\x5a\ \x46\x45\x72\x55\x17\x1e\x1d\x1d\x3d\xea\x5b\x01\x95\x37\x2a\x4c\ \x4e\xe5\x98\x7d\xb1\xcd\xda\x89\x08\xe9\x75\x7f\x7a\x45\x35\xe9\ \xeb\xc2\xb5\x5a\x2d\x94\x89\x34\xa2\x91\x88\xe9\x1b\x33\x2c\x1e\ \x77\x68\x5e\x0c\x20\x56\x91\x48\xb4\xac\x20\x4d\x52\x74\x5d\x6f\ \x7a\x9e\x27\x33\x99\x4c\x35\x57\x2e\xb0\xed\x5e\x89\x75\x25\x66\ \xe3\x9c\x8f\x76\xe4\xf6\xc3\x58\x56\x17\x79\x66\x67\x67\x09\xc3\ \x6e\xd9\xc0\x5b\xde\xf2\x16\x76\xed\xda\xc5\xc2\xdc\x22\xa7\xbf\ \x79\x96\xba\x22\x29\xed\xf4\x51\x54\xa5\x5f\x2f\x5c\x28\x14\xb8\ \x72\xe5\x0a\xd5\x6a\x95\x77\xbc\xe3\x1d\x68\xaa\xc6\xe7\xff\xf6\ \x8b\x54\x6b\x03\x4c\xe4\x1b\x54\x8f\x0e\xd0\x6e\xb7\x09\xc3\x10\ \xd3\x34\xb9\x70\xe1\x02\x71\x1c\xf3\xde\xf7\xbe\x97\x1d\x3b\x76\ \xf0\x0f\x7f\xf7\x05\x94\x15\x8d\xaa\xbd\xce\xce\xdb\x06\x68\xb5\ \x5b\x18\x86\x41\x92\x24\x2c\x2e\x2e\x22\xa5\x64\xdf\xbe\x7d\x3c\ \xf2\xe8\x23\xf8\xae\xcf\x77\x9e\x7a\x95\x9c\xd5\x66\xa6\xea\xa3\ \x8f\x6a\x64\xb3\x59\x16\x16\x16\xfa\xd4\x20\x84\xe0\x8e\x3b\xee\ \xe0\xce\xbb\xee\xe4\xb9\xa7\xbe\xc1\xe5\xaf\xce\x52\xd7\x87\x99\ \xbc\x21\x4b\xb3\xd5\xec\xfe\xd0\x85\x69\x62\x59\x16\x2b\x2b\x2b\ \x8c\x8d\x8d\xf1\xe1\x0f\x7f\x98\xe7\x9e\x7e\x8e\x57\x4f\x9e\xe2\ \xfa\xf1\x32\xd6\x40\x87\x30\x0a\x49\xe2\x84\x62\xb1\xc8\xfc\xfc\ \x3c\xcd\x66\x13\x80\xff\xf8\x1f\xff\x23\x00\x2f\x3c\x77\x0c\x37\ \x63\xb3\x3c\xb2\x8c\xb6\x6d\xdb\x36\x66\x67\x67\x19\x18\xe8\xfe\ \x0e\xcc\x85\x0b\x17\x08\x82\x80\xfb\xee\xbb\x8f\xc3\x87\x0f\x33\ \x3b\x3b\x4b\x2c\x23\x86\x86\x86\x30\x4d\x93\x6f\x7e\xf3\x9b\x8c\ \x8e\x8e\x62\x9a\x66\xdf\x12\x3b\x3e\x3e\xce\x43\x0f\x3d\xc4\xd0\ \xd0\x10\x17\x2f\x5d\xec\x0e\xfc\x66\x32\x60\x6c\x6c\x8c\xa5\xa5\ \x25\x46\x46\x46\xb8\x7c\xf9\x32\x00\x0f\x3f\xfc\x30\x7b\xf6\xec\ \xa1\xd3\xe9\xb0\xb6\xb6\xc6\xb9\x73\xb0\x6f\xdf\x3e\x2e\x5f\xbe\ \x8c\xef\xfb\x8c\x8f\x8f\xb3\xb2\xb2\x42\x1c\xc7\xdc\x7c\xf3\xcd\ \xdc\x79\xc7\x9d\xec\xdc\xb9\x93\xbf\xfc\xcb\xbf\x64\x7e\x61\x9e\ \xd1\x91\x51\x9e\x78\xe2\x09\xea\xf5\x3a\x00\x6b\x6b\x6b\x44\x51\ \x84\xa6\x69\x1c\x3c\x78\x90\x77\xff\x5f\xef\xc6\x34\x4c\x9e\x78\ \xe2\x09\x86\x86\x86\x48\x92\x84\xf9\xf9\x79\xae\x5c\xb9\x42\x4f\ \xaa\xed\xb1\xf0\x2d\xb7\xdc\xc2\xdc\xdc\x1c\x4b\xab\x4b\xdc\x78\ \xe3\x8d\xbc\xf2\xca\x2b\x54\x2a\x15\xce\x9c\x39\xc3\xc1\x83\x07\ \xc9\x64\x32\x1c\x3f\x7e\x9c\x34\x4d\x79\xf8\xe1\x87\xb9\x70\xf1\ \x42\x3f\xb9\xf0\xfc\xf3\xcf\x7f\xff\x7a\xe1\x4e\xa7\x63\xe5\x72\ \xb9\x62\xad\x56\xa3\xdd\x6e\xf7\xb7\xf5\x98\x72\xab\x17\xda\xb6\ \xed\xb9\x7c\x3e\x3f\x50\xad\x56\x8b\x5b\xcd\xde\x5b\xf9\xb9\xf7\ \x3d\x8e\x63\x2b\x0c\xc3\x66\xb1\x58\x9c\x1c\x18\x18\xa0\xd3\xe9\ \x5c\xc3\xab\x3d\x1d\xb9\xf7\xb7\x61\x18\xa1\xe3\x38\xc6\xf0\xf0\ \x30\xb6\x6d\x7f\x8f\x77\x79\xeb\xef\x63\x55\x2a\x15\x4e\x9f\x3e\ \xfd\xec\xee\xdd\xbb\x8f\x6e\xb1\xfc\x5e\xb3\x4f\xef\x7f\x4d\xd3\ \x58\x5b\x5b\x63\x7c\x7c\x3c\xb4\x6d\xdb\xf8\x97\x6a\xa2\x37\xcf\ \xb7\x69\x59\x96\x2c\x97\xcb\xd5\xef\xde\xae\xa5\x49\x1a\x6d\xf5\ \x31\x3b\x8e\x83\x65\x59\x5e\xb5\x5a\xcd\xb4\x5a\xdd\xf4\xbd\x4c\ \x05\x8a\x10\x08\xe5\x7b\x78\x55\x58\x96\x95\x68\x9a\xd6\xcd\x5e\ \x23\xd0\x84\xde\xd5\x85\x95\xab\x35\x19\x5b\xfc\xd7\xd2\x75\xdd\ \x50\xd7\x75\x1c\xc7\x41\x57\xf5\x6b\xea\x85\x15\x5d\x5c\xd3\x7f\ \xa7\xd3\x91\x8a\xa2\x44\xbe\xef\x6b\x9a\xa6\x09\x12\x81\x14\xa0\ \x6a\x12\x45\xb9\xb6\xed\x26\xf8\xcb\x24\x49\x64\x9a\xa6\xb1\x82\ \xd2\x35\x5e\x23\x51\x94\x3e\xd7\xf6\xab\x0a\xe2\x38\x4e\x2c\xcb\ \x4a\x55\x55\x15\x02\xf8\x17\xea\x85\xc5\xe6\x7a\x37\xca\x66\xb3\ \x71\x9a\xa6\x52\xc8\xcd\xba\x65\x40\xdb\x36\x39\x12\xc8\x48\xd9\ \x2c\x90\xee\x16\x2f\xaf\xae\xae\x5e\xaa\xd7\xeb\x07\x7d\xcf\x97\ \xa1\xd1\xd5\x85\x71\x4d\xd2\x4e\xb7\x46\x57\x46\x0a\x42\x93\xbd\ \x3c\x9c\x51\x2a\x95\xf4\x4c\x26\x43\x44\x44\x3a\xde\xa6\x98\x35\ \x48\x5a\xbd\xba\xdb\xab\x81\x87\x61\x18\xb8\xae\xbb\x5a\x2c\x16\ \x67\x74\x5d\x17\x2d\xb5\xc5\xf0\x1e\x48\x6d\x8d\xb4\x65\x22\x1d\ \x6d\xd3\x48\xde\xbf\xfa\x9e\xeb\xb9\xb2\x5a\xad\x0e\x04\x49\x88\ \xb2\xa3\x4d\x4e\x33\x88\x5b\x3a\x69\x5b\x47\x46\x6a\xf7\xc7\xc5\ \x90\x64\x32\x19\x2e\x5e\xbc\x58\x19\x1e\x1e\x0e\x7c\xd7\x8f\xdb\ \x99\x16\x23\x13\x2a\xe1\x86\x41\x6a\x6b\xdd\x1a\xe7\x44\x20\x54\ \xd0\x75\x5d\x18\x86\xe1\x8f\x8c\x8c\x04\x19\x33\x53\xfe\x3f\xd4\ \x0b\x63\xdb\xb6\x7e\xe5\xca\x95\xb5\x72\xb9\x5c\x0c\xe3\x38\x0d\ \xca\x16\x95\xba\x4a\xda\xd1\xd1\x46\x7e\xa4\x55\xd0\x35\x9d\xe6\ \x53\x15\xa2\x55\x1d\x45\x15\x08\x21\x6a\xa5\x52\x29\x9f\x4a\x50\ \x76\x39\x8c\xde\x11\x11\x05\x2e\x22\xd2\xd0\x45\x86\x34\x50\x68\ \xfe\x63\x1d\x55\x55\xd1\x75\x5d\x98\xa6\xa9\xea\xba\x8e\x63\xb8\ \x0c\xde\xe5\x53\x2f\x6a\x10\x87\x84\x9e\x0b\xba\xa4\xfd\xe5\x21\ \xe2\x96\x8a\x94\x52\x68\x9a\xa6\x1b\x86\x21\x34\x4d\xc3\x1d\xeb\ \x30\x7c\xbf\x46\x51\x8e\xb2\xda\x58\x41\x93\x1a\xf1\x42\x91\xce\ \xf1\x02\x32\x06\xd3\x34\xd5\x3e\x0b\xab\x1d\xf6\xbf\x29\x42\x4b\ \x54\x7c\xc7\xc1\x24\x47\xe4\x82\x75\xac\x44\xb0\x68\xf4\x7e\x03\ \xb1\x52\x2e\x97\x33\x41\x94\x90\xb9\xc5\x65\xdb\x21\x13\xab\x6d\ \x91\xa1\x40\x10\x06\xe8\x4e\x99\xc6\xd7\xcb\x98\x86\x81\xa6\x69\ \x79\xd3\x34\xed\xff\x2f\xf5\xc2\xaa\xaa\xa2\xaa\x6a\xb5\x90\xcf\ \xe7\x96\xfd\x16\x13\x6f\x94\x14\x06\x7d\x22\xcf\x47\xb9\x63\xea\ \x1d\x88\x3c\xc4\xd2\xff\x2e\xa6\xec\xfe\x9d\xaa\x01\x35\x79\x80\ \xff\xf0\xe0\xa7\x78\xef\x91\x5f\xa5\x56\xdc\x41\x7d\xdb\xc0\x35\ \x35\xbd\x7d\x94\x4b\x03\xec\x35\x9d\x77\x1f\xfa\x65\xde\xbc\xe3\ \x63\x1c\x9c\xb8\x87\x7b\x6e\x78\x23\x5e\xe4\x5c\xf3\xdb\x59\xbd\ \xe3\xf8\x49\xc0\x7d\x23\x3f\xc1\xb0\x72\x23\x8f\xdd\xf1\x1f\xb8\ \x65\xf2\xed\x78\x7a\xa3\xef\x22\x4d\x92\x44\x76\x51\x31\x24\x4c\ \x23\x6a\xe6\x36\x1e\x19\xfb\xb7\xfc\xa7\x87\x3f\xcd\xeb\xf3\x1e\ \xa3\xe3\xc3\xc4\xe2\xaa\x8f\x59\x76\xa7\x2c\x9e\xe7\x63\xe4\x04\ \xdb\x94\xdb\xf9\xbd\x1f\x7c\x9a\x4a\x66\x86\x5f\x7e\xdb\x1f\xe3\ \x65\x1a\x04\x9b\x75\xd0\xff\x7f\xea\x85\x3d\xcf\x27\x88\x02\x94\ \x4c\xc0\xee\xf4\x9d\xfc\xe8\x4d\x3f\x87\x72\x78\xf8\x41\xee\x99\ \xf9\x81\x4d\x16\xbe\x56\x17\xf6\x3c\x9f\x28\x0a\x38\x3c\x7a\x3f\ \xff\xfc\xfa\x27\x78\xe1\xe5\xd3\xbc\xfd\xc0\xfb\x31\x14\xb3\x4f\ \x22\x3d\x55\xae\x27\xff\x4d\x57\x0e\x71\xb9\xf9\x1a\x27\x16\xbe\ \xc9\x43\x33\xef\xa1\x9c\x19\x24\xde\xd4\x76\xb7\x92\x88\xe7\x79\ \xa8\xe8\xd4\xf3\x63\xf8\xb9\x8b\xec\x1f\xb8\x97\x89\xca\x2e\x86\ \x72\x93\xf8\x5b\xfa\xee\x09\xeb\x71\x14\x51\xcb\x0f\x93\xad\x44\ \x7c\xe5\x85\xaf\xf3\x96\x7d\x3f\xc1\x8d\xa3\xf7\x62\x7b\x9d\xfe\ \xc5\x04\xfa\xb5\xc3\x42\x40\x31\xdd\xce\x27\x9e\xff\x6f\xfc\xbf\ \x6d\x9c\x6b\x8c\x5c\x65\x01\x86\x9f\x73\xbe\x73\xce\x5c\x76\xe7\ \xbe\xd3\xdd\x2e\xdd\xb2\xbd\xb0\xad\x6d\xb7\x58\x4b\xa9\x6c\xb1\ \x36\xa4\x0d\x26\x1a\x8c\x25\x26\x18\x2d\x58\x8c\x3f\x08\x5a\x34\ \x81\x5f\x68\x22\x09\xff\x88\x09\x09\x4a\x82\x09\x68\x34\x40\x0c\ \x8a\x60\x0c\x72\x91\x16\x50\xda\x02\x52\x2b\x4b\xaf\x3b\xed\x76\ \x2f\xdd\xeb\xcc\xec\xcc\xec\xcc\xb9\x5f\xfc\x71\x66\x4e\x97\xe2\ \xef\x99\x39\xf9\xe6\x3b\x97\xef\xbc\xdf\xfb\xbc\xef\x57\x6e\xf8\ \x36\x6b\x33\x43\xc4\xe5\x64\x5b\x67\xeb\x11\x4c\x65\x9a\x06\xe2\ \x73\x79\xe1\x5d\xdc\x98\xde\x82\x69\x1b\xd7\x3a\xbc\xda\x8d\x4b\ \x8e\xe3\xb0\x54\xd3\x79\xf8\xe0\x23\xbc\x56\xfa\x0d\x4a\xb5\x59\ \xe1\xa3\xb9\x77\x71\x1d\x17\xcb\x0c\x08\xb8\x96\x8d\xb5\x6d\x0b\ \x15\x70\x7c\x9b\x94\x56\xc0\x50\x54\xce\xcc\xfd\x1b\x9f\xd0\xdb\ \x15\x42\x44\x20\xb8\xe3\x38\x78\xdd\x5e\xc8\x48\x27\x7a\x58\x10\ \x26\x35\xf7\x2a\xb6\xdf\x6e\x81\xb3\x44\x98\x29\x6e\x4f\x60\xf8\ \x50\x0f\xda\x09\x4b\x07\x4f\x36\xa9\x2c\x2f\x32\x5b\x9f\xc4\xb2\ \x63\xf8\x76\x54\xf0\x88\x69\x99\x78\x8a\x87\x24\xc9\x48\xbe\x20\ \x9f\xca\xf3\xf6\xe8\x1b\x94\x63\x2d\x64\x5f\x44\x57\x77\xb8\x99\ \x60\x61\x5b\x16\x42\x56\xf0\x71\xe9\xe9\xea\x65\xb1\x35\x83\xe5\ \xe9\x18\x4e\x0b\xdb\x4e\x46\xab\xb1\xe3\x38\x04\xb6\x07\x71\x48\ \x74\xa9\x04\x6e\x48\xb9\x4a\xc8\x8c\xd7\x3e\x05\x2f\x9c\x07\x1f\ \xaf\x3d\x27\x26\x8e\xec\xa0\x08\xc1\x52\xbd\x81\x2a\x62\xc8\xa7\ \xea\x2f\x93\xee\x4e\x61\xbb\x76\x44\xda\xaf\x34\xa8\x45\xa0\x72\ \x72\xfe\xcf\x6c\x49\x1d\xa0\x6f\x83\xcb\x44\xeb\x54\x38\x98\xff\ \x93\x58\x77\x2c\x17\x23\x3e\xc1\xd2\x92\xc9\xce\xa1\x61\x5e\x39\ \xff\x2b\x26\x97\xcf\xe2\xd8\x4e\x94\xe9\x5d\x49\xe9\xab\x9a\xe0\ \xed\xcb\x2f\x72\xf8\x4b\x8f\xf1\xfb\xd1\xc7\xb8\x6c\x1e\x27\x9d\ \xc8\xa3\x5f\x97\x17\x36\x8d\x70\xd7\x67\x6e\xf9\x0a\xf5\x86\x45\ \xae\x28\x90\xf2\x33\xa8\x52\x02\xdb\xb5\x3e\x33\x6e\xd3\x34\x30\ \x6d\x0b\x09\x41\x5d\xb9\xc8\x70\xff\x97\x99\xf2\x4e\xf0\xd7\x33\ \xcf\xd1\xa5\x75\x87\xe3\xd6\x8d\x08\xb9\x33\x4c\x13\xcf\x87\x8d\ \x1b\xf3\xbc\x7f\xee\x7d\xfa\xb2\xfd\x3c\xfd\xe1\x23\x64\xe2\x85\ \x68\x4e\xae\x91\x09\x61\x8b\x5c\x21\x93\xe1\x89\xa3\x3f\xe5\x81\ \x9d\xbf\x44\x69\x2a\xd3\xcc\x2e\x4d\x33\x5b\xaa\xa0\xd7\x3c\xba\ \xdd\xd0\x17\x2e\x97\xcb\xd4\x1b\xcb\xc4\x9b\x49\x6c\x15\x9e\x3a\ \xf1\x30\xf7\xec\xb9\x8f\xe9\xb9\xd3\x2c\x9d\x81\x6a\xb5\x1e\x69\ \xe1\xce\x15\x48\x52\x42\xa8\x05\xfe\x78\xe6\x09\x7e\xb1\xfe\x19\ \x66\xec\xb3\xcc\x8d\x66\x29\x5f\xad\x61\xd5\xfd\xce\xbb\x5d\x84\ \x56\x74\xdb\x31\xaa\xfe\x25\x5e\x3d\xfb\x0c\x6e\xa2\xce\xe5\x85\ \xb3\x94\x3e\x30\xa8\xce\x1b\x91\x2f\x6c\x18\x06\x8e\xe9\x60\xc9\ \x3e\x86\x1f\xe3\xd8\xe4\x1f\xd8\xbf\xf9\x6e\xc8\x54\x38\x37\x39\ \xcf\xfc\xe5\x3a\x8d\x25\x07\x49\x84\xef\x6c\xe5\x72\x99\x4a\xbd\ \x41\xbf\x9d\x63\xd2\xf8\x98\x77\x27\xff\x44\x90\x68\xf2\xaf\x99\ \x97\x59\x98\x32\x29\xcf\xd7\x50\xe3\x4a\xa4\x85\x97\xab\x0d\x1a\ \x09\x1f\x2f\x48\xf1\xce\xdc\x73\x6c\xf5\xf7\x30\xee\x7c\x40\x63\ \xd1\xe0\xca\xa9\x32\x8e\xee\x13\x4f\x84\x5a\xb8\x5c\x2e\x63\x24\ \x7c\x4c\x5b\x50\xe9\x1e\xe5\xb9\xe3\x4f\xa2\x3c\xff\xc3\xd3\x98\ \x8b\x10\xcb\x48\xa8\xaa\x12\x35\xd6\xca\xb2\x4c\x4c\xd3\x70\x17\ \x02\xe6\xff\xe3\xd1\x98\x9a\xe3\xc7\x4f\x3d\x8a\x3e\xae\x41\x10\ \x10\x4b\x2b\x91\xb1\xd3\x6e\xc0\xc0\xb7\x7c\x96\xce\xb9\xc8\xad\ \x6e\xee\x7b\xe9\xfb\xe8\x25\x0d\xb3\x5e\x26\x91\x15\x88\x70\x75\ \x8f\x8e\x9d\xcf\xe7\xb1\x67\x5b\x4c\xbd\x1d\xf0\xe1\xe8\x9b\x2c\ \x8e\xda\xf8\x96\x84\x92\x04\x2d\xa6\x46\x50\x64\x10\x04\x68\x09\ \x0d\xcf\xb0\x99\x3f\xed\xb2\x3c\x3b\xc3\xb1\x5f\x3f\x8e\x7e\x59\ \xc5\x5c\x72\x89\x67\x15\x14\x45\x44\x81\x48\xa1\x28\xc4\x64\x15\ \x7d\xdc\xa7\x5a\x87\x17\x2f\xbe\xc4\xd2\x79\x9f\xc6\x15\x1f\x2d\ \x29\xa3\x25\xd5\xa8\xd2\x59\x08\x81\x1a\x53\xe9\xd6\x7d\x16\x47\ \x1d\x96\xe7\x17\x39\x7e\xee\x05\x96\xce\x05\xb8\x7a\x40\x3c\x2b\ \x50\x54\x39\x82\x33\x25\x49\x22\x21\x69\xd4\x2e\xb8\x34\x15\x9f\ \xb3\x93\xef\xa0\x6c\xda\xb0\x05\xe9\x26\xd0\xd4\x30\xc1\xe8\xfb\ \x3e\x33\x33\x33\xec\xd9\xb3\x87\x81\x81\x01\x2c\xdd\xe6\xf4\x07\ \x9f\xb0\x2a\x19\x43\x4a\x2c\x52\xdc\xd7\xc3\xfc\xc2\x3c\x8d\x7a\ \x83\x42\xa1\xc0\xd8\xd8\x18\xbd\xbd\xbd\xec\xdb\xb7\x8f\x54\x77\ \x8a\xbf\xff\xed\x0d\x7a\xfb\x7a\x59\xe5\xcc\xd3\xbb\x7b\x15\xf5\ \x46\x8d\x56\x4b\x27\x9d\x4e\x73\xe1\xc2\x05\x0c\xc3\xe0\xfe\xfb\ \xef\x67\xe7\xce\x9d\xbc\xf5\xfa\x3f\xb0\xaa\x36\x92\x32\xc3\xb6\ \x03\x39\x9a\xcd\x26\xb9\x5c\x8e\x5a\xad\xc6\xf4\xf4\x34\xad\x56\ \x8b\xe1\xe1\x61\x46\x46\x46\x88\x69\x31\x3e\x39\xf5\x29\x9e\xd1\ \xe2\x06\xa9\x45\x6c\xab\x46\x26\x97\xe1\x52\xe9\x12\xf1\x78\x3c\ \x4c\x27\xa9\x2a\x23\x23\x23\xdc\x7c\xf3\xcd\x9c\xf8\xe7\x49\x16\ \x2f\x56\x28\x6a\x82\xbe\x41\x19\x77\xad\x43\xb5\x52\xed\x10\xb8\ \x51\x6c\xf6\xd0\xa1\x43\x2c\x55\xaa\x7c\x7c\xec\x34\x99\x54\x8a\ \x78\xcc\x24\x7f\xd3\x32\xb9\x7c\x0e\xcb\xb2\xa8\x54\x2a\xb4\x5a\ \x2d\x74\x5d\xe7\xc8\x43\x47\x68\x35\x9b\x8c\x97\x26\x59\xaa\xd5\ \xc8\x3a\x16\xca\xf0\xf0\x36\xce\x9f\x3f\xcf\xe0\xe0\x20\xa9\x54\ \x2a\x12\xfc\x7b\xf7\xee\xe5\xf6\xdb\x6f\x0f\x21\x1f\x7e\x47\x2e\ \x97\xc3\xb6\xed\x08\xcb\xb5\x4c\x8b\x62\xb1\xc8\xd8\xd8\x18\xf9\ \x7c\x9e\x43\x87\x0e\x91\xcf\xe7\xb9\x3a\x73\x95\xa1\xa1\x21\x26\ \x26\x26\xe8\xd4\x28\x5f\xb9\x72\x85\xad\x5b\xb7\x52\x2a\x95\x30\ \x4d\x93\x3b\xee\xb8\x83\x4d\x9b\x36\x31\x31\x31\x11\x2e\x00\x9e\ \xc1\xf6\xed\xdb\x39\x7d\xfa\x34\xe9\x74\x9a\xfe\xfe\x7e\xe6\xe6\ \xe6\x00\xd8\xb1\x63\x07\x07\x0f\x1e\x64\xfd\xfa\xf5\x3c\xfb\xec\ \xb3\x2c\x2c\x2c\x50\x28\x14\x38\x79\xf2\x24\x7d\xbd\x7d\xed\xc6\ \xca\x90\xd1\x51\x14\x85\x91\x91\x11\xee\xbd\xf7\x5e\x1c\xc7\xa1\ \x54\x2a\x31\x34\x34\xc4\xa5\x4b\x97\xc8\x66\xb3\x1c\x3d\x7a\x94\ \xb5\x6b\xd7\x32\x35\x35\x45\xb9\x5c\x26\x97\xcb\x71\xf8\xf0\x61\ \x46\x47\x47\x29\x57\x2b\x6c\xde\xbc\x19\x5d\xd7\xb9\x70\xe1\x02\ \x99\x4c\x86\x62\xb1\x48\xa9\x54\x8a\x7c\xe1\x23\x47\x8e\x70\xee\ \xdc\x39\xc6\xc7\xc7\x99\x9d\x9d\x0d\x19\xe9\x5d\xbb\x76\x05\x1d\ \x9d\xe8\x38\x0e\xc9\x64\x92\xc9\xc9\xc9\x8b\x6b\xd6\xac\x19\xda\ \xbc\x79\x33\x63\x63\x63\xd1\xce\xf3\xf5\xdd\xcc\xed\xf8\x53\x53\ \xd3\xb4\xd8\xd6\xad\x5b\xd5\x6a\xb5\xca\xf2\xf2\x72\xa4\x55\x3b\ \x5e\x6b\x27\x62\x2f\x49\x52\xd9\x75\xdd\x71\x60\x57\x36\x9b\x8d\ \x68\x82\x95\xbb\x29\x2b\xfd\x67\x55\x55\x1b\xb3\xb3\xb3\xd2\xfe\ \xfd\xfb\x53\x63\x63\x63\x91\x36\xed\x3c\x36\x3a\x15\x2d\xae\xeb\ \x76\x18\xe9\x89\x91\x91\x91\x1b\x6d\xdb\x8e\xbc\xdb\xce\x6e\xf2\ \xca\xa6\x8e\x95\xbe\x70\x87\xed\x5e\xb9\x58\xac\x1c\xbb\xef\xfb\ \x08\x21\xa8\xd7\xeb\xe5\x62\xb1\xd8\x33\x38\x38\xc8\xe4\xe4\x64\ \x74\x4b\x2b\xa9\xee\x74\xa4\x29\xa5\x76\x96\xd6\x75\x5d\xaf\xbd\ \xbf\x46\x32\xd1\x15\x62\xb4\xda\xf5\x5c\x72\x88\xf8\x5a\x96\xe5\ \xa6\x52\x29\x75\x76\x76\x16\x59\x96\xdb\x8c\xf4\xf5\x1c\x73\xd0\ \x99\x44\x79\x66\x66\x46\x5a\xbd\x7a\xb5\x27\x84\x90\x62\x5a\xec\ \xb3\x59\x64\xae\x79\xbd\xed\x1a\xe4\xa0\x58\x2c\x2a\x53\x53\x53\ \x24\x12\x09\x3a\x5a\x58\x6a\x7f\xb7\xab\xab\x3b\xfa\x4d\xfb\x8f\ \x9a\xba\xae\x63\x3b\x36\x71\x2d\x8e\xef\x43\x5c\xfb\xfc\xf1\x85\ \x10\x94\xcb\x65\x84\x10\x52\xbd\x5e\x47\x42\x42\x15\x31\x34\x25\ \xb6\x82\x91\x96\x22\x4d\xdc\x68\x34\xf0\x7d\xbf\x99\x4e\xa7\x7b\ \x16\x16\x16\xe8\x4a\x74\x11\xf8\x61\x7d\x96\x92\x1b\x8c\x47\x5a\ \xb1\x73\x36\x65\x59\x76\xf3\xf9\x3c\x86\x6e\xe0\x74\x99\x24\xfb\ \xed\xb0\x94\xd0\x10\xf8\xba\x1a\xe6\x85\xdb\x98\x6c\xa5\x52\x69\ \x15\x0a\x05\x55\x08\x11\xf3\xf0\xf0\x56\x2d\xd3\x9d\x52\x42\xd6\ \xb8\x93\xe9\x75\xe5\x4e\x0d\x7c\x22\x16\x8b\xe5\x93\xc9\xa4\xa3\ \x28\x8a\x68\xca\x4d\x72\x03\x12\xbe\x29\x11\xb4\x54\x7c\x5d\x21\ \xb0\xe4\xd0\xeb\x0d\xaf\x02\x21\x84\x48\xe6\x72\x39\x5a\xbe\x41\ \x7a\xa3\x05\xae\x4c\xa0\x2b\x04\xa6\xd2\xee\xda\x92\x91\xa4\x10\ \x6b\x53\x14\x65\xb2\xa7\xa7\x67\x93\xa9\x9b\xd4\xe2\x55\xfa\x06\ \x05\x4e\xb3\x9d\x73\xd6\xc3\x9c\x73\x27\xb1\x2e\xcb\x32\x7d\x7d\ \x7d\x6a\xe0\x07\x94\x9d\x3a\x7d\x5b\x20\xb0\x24\x7c\x43\x21\x30\ \x04\x7e\x33\xe4\xaf\x65\x21\x77\x56\xf7\x4b\x99\x4c\x66\xd0\xb2\ \x1d\xfc\x55\x4d\x52\x05\x19\x57\x07\x25\x7b\xa0\x8c\x2c\x04\x4b\ \x6f\x65\x71\xe6\xb5\x4e\x0b\x5b\x5c\x08\x81\xe3\x7b\xf8\xfd\xcb\ \x24\x77\xb7\xe8\x4d\x0c\xd0\x34\xeb\x21\x74\x69\x2b\x54\x5e\x29\ \x46\x77\x9a\xa2\x28\xb2\xe7\x79\xe8\xaa\x41\x6c\x7b\x95\xe2\x9a\ \x1c\x29\x35\xcb\x4c\x75\x8a\x58\x5c\xa5\x7e\x2c\x8f\x3d\x13\xc3\ \xf7\x7d\x59\x51\x94\x64\x2c\x16\xd3\x14\x45\x91\xe7\x56\x4f\xb3\ \xe5\x4e\x8d\x44\x50\x60\xa9\x59\x41\xc8\x02\x77\xaa\x9b\xe5\x8f\ \x52\xf8\x6e\xd8\x20\x62\x59\x16\xb2\x2f\x05\x73\x4a\x45\x1a\xdc\ \x1b\x10\x0f\xb2\x58\x76\x0b\xd7\xb1\x09\x0c\x95\xfa\xf1\x0c\xce\ \xa2\x8a\xa6\x69\x04\x41\x10\x97\x65\x19\xd9\x95\x59\x5e\xb7\xc0\ \xe6\x3d\x69\x12\x41\x9e\xa6\x5e\xc3\xb6\x1d\x68\x24\xa9\xbe\x99\ \x5d\x59\xaf\x27\x39\xb6\xc3\x7c\x72\x91\xe1\xbd\x49\x02\x2b\x8e\ \x2a\x4b\x34\x5a\x15\x54\x45\x63\xf1\x95\x3c\xbe\x11\xed\xe4\xa4\ \x09\xa0\x6a\xe8\xac\xbb\x4d\x47\xc9\x18\x0c\xa4\x86\x90\x0f\xac\ \x7b\x80\x64\x57\xbb\x3b\xcb\xba\x96\x17\x0e\x2b\x92\x2c\x3c\xd9\ \x66\x7d\xec\xab\x7c\x6f\xc7\xa3\x7c\xe7\x0b\x8f\xb3\x2e\xb3\x3b\ \x2a\x31\xec\xd8\x9a\x51\xfe\xd7\x73\x58\xa8\x34\xf8\xd1\xee\x27\ \x19\xce\xde\xc5\x37\xb7\x3f\xc0\xb7\x6e\xfd\x01\xa6\xdb\x5a\x49\ \xa8\x06\x1d\x59\x67\x05\x06\xbb\x7a\xef\x66\x77\xf1\xbb\xdc\xb3\ \xfb\x41\xbe\xb8\xea\x1b\xe8\xa2\x82\x71\xad\x47\xba\x93\x17\x96\ \xbc\xc0\x61\x6d\x6e\x13\x5f\x1f\x7c\x88\x9f\xdf\xf9\x5b\x32\xe6\ \x6d\xac\xea\xed\xc1\xf6\xcc\x28\x45\x19\xf5\x5f\x1b\x26\x8a\x26\ \xb1\x31\xb9\x87\x07\x6f\x79\x9a\xa1\xfc\x5e\x7e\xb2\xf7\x19\x6c\ \x6d\xf9\x33\x34\x6b\xc7\x73\x96\x55\xb8\x32\x51\xe3\xd1\x7d\xcf\ \xb3\x21\xbb\x9b\x9f\xed\x7f\x01\x27\xd9\x88\x3e\xbf\x96\xd6\x6c\ \xe7\x85\x65\x83\x7d\xa9\x76\x5e\x78\x4d\x6a\x13\xeb\x0b\xdb\xb0\ \xed\x50\x79\x74\xb4\x70\x28\xf8\x4d\x5c\xd7\x64\x53\xe1\x16\x8e\ \xcf\xfc\x85\xf7\x4e\x7d\xc4\xce\x35\xfb\xc2\x64\xf9\x0a\x6d\x1b\ \x69\x61\xdb\x22\x2b\x06\x98\xaa\x95\x38\x71\xf9\x75\xbe\x36\x74\ \x08\x81\xc0\x75\xbd\x48\x67\x77\x1a\x83\x0c\xc3\x20\x70\x15\x06\ \x73\x37\x71\xd6\x7c\x95\x1d\xf9\xbb\xd8\x58\xdc\x46\x5f\xd7\x7a\ \xcc\xeb\x7c\x61\xd3\x34\xc2\xbc\xb0\x92\xa4\xea\x4c\xf3\xdf\xd2\ \x28\xb7\xae\xdb\x4b\x3e\xbe\x1a\xd3\x32\xae\x53\x22\xa1\xe7\xac\ \x08\x41\x73\x49\xf0\xda\xd9\xe7\x59\xad\x6d\x63\xfb\xda\xed\x68\ \x52\x22\xd4\xca\xc6\x0a\x4d\x6e\x1a\x04\x81\x47\xd6\xdb\x40\xd5\ \x2b\xd1\x97\xed\xa7\xb7\x7b\x80\xde\xe4\x40\x14\xde\xee\x48\x50\ \xbd\xcd\x48\x37\xda\x79\xe1\x33\x95\xf7\xf8\x1f\xcb\xb6\x8e\xf6\ \x8f\xf1\xef\x16\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x2a\x0f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x2b\xec\xa5\xbb\x6e\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\xed\x9d\x79\x94\x5d\x55\x9d\xef\x3f\xfb\x0c\x77\xae\x39\x35\ \xa5\x06\x2a\x21\x21\x09\x14\x15\x84\x88\xd1\x00\x09\x08\xad\x08\ \x1d\x5b\xec\x36\x60\x0b\x48\xd3\xf0\x1c\x68\xc4\xf5\xda\xd5\x4f\ \x78\x48\x83\xda\x93\xad\x48\xab\x4b\xb4\x15\x51\x40\x9f\xd8\x34\ \xad\x08\xd8\x0e\xc8\x20\x24\x81\x8c\x18\x92\x9a\x92\xaa\x54\xaa\ \xea\xd6\x70\xab\xea\xce\xc3\x99\xf6\xfb\xe3\xd6\x3e\xb9\xc9\x13\ \x03\x61\xce\xcb\x5e\x2b\x8b\x5b\xdc\xe1\x9c\xbb\xbf\xfb\x37\x7d\ \x7f\xc3\x85\xe3\xeb\xf8\x3a\xbe\x8e\xaf\xe3\xeb\xf8\x3a\xbe\x8e\ \xaf\xe3\xeb\xf8\x3a\xe6\x97\x78\x33\xdd\x4c\x75\x75\x75\x57\x26\ \x93\x31\xa5\x94\x5e\x5d\x5d\xdd\xfb\xd6\xac\x59\xf3\x39\xd3\x34\ \x5d\xd7\x75\xe5\xfe\xfd\xfb\x5b\x56\xac\x58\x81\xe7\x79\x24\x93\ \x49\x5a\x5b\x5b\x29\x95\x4a\x68\x9a\xc6\xae\x5d\xbb\xb0\x6d\xbb\ \xfc\x85\x84\x40\xd3\xb4\x83\x5f\x50\x08\x0b\x70\xd5\x63\xc3\x30\ \xfa\x00\x0d\x20\x1e\x8f\x7f\x30\x1e\x8f\x8f\xa8\xd7\xb6\xb6\xb6\ \x12\x8f\xc7\xdf\xd0\x3d\x30\xde\xc8\x8b\xb7\xb5\xb5\x2d\x9d\x9b\ \x9b\x7b\xa7\x94\xd2\x03\x58\xbe\x7c\xf9\xb7\xdb\xdb\xdb\xc3\x52\ \x4a\x86\xf6\x0d\x11\x0c\x06\xa5\xa6\x69\xc2\x95\x2e\x86\x61\xe0\ \x38\x0e\x48\xc9\x44\x3e\x41\x87\xd1\x41\x26\x93\x01\x5d\x90\x76\ \xf2\x9c\xbd\xea\x9d\x00\x4c\x27\xa6\xd1\x84\x86\xae\xeb\x00\xe8\ \xba\x1e\x90\x12\x44\xf9\xe8\x85\x81\x33\xd5\xf5\x1b\x1b\x1b\x77\ \xae\x5c\xb9\xd2\x11\x42\xb0\x67\xcf\x1e\x86\x87\x87\x1b\xdf\xe8\ \x43\xf9\xba\x03\x52\x55\x55\x65\x66\x32\x19\x1d\x60\x76\x76\xf6\ \xba\x8f\x7e\xf4\xa3\xd7\xab\xe7\xfa\xfb\xfb\xcb\x27\x5c\x08\xf2\ \x94\xb0\x4a\x96\x10\x9a\x20\xe7\x14\xf0\x3c\x0f\xcb\xb2\xc0\x83\ \x9c\x5b\xc4\xb2\x2c\x2c\xcb\xc2\xd6\x5d\x1c\xd7\x26\x9d\x4e\x03\ \x70\x60\x7a\x9c\xd3\x4e\xea\xa6\x58\x2a\xa1\xeb\x3a\x3b\x76\x3f\ \x4f\x55\x93\xc0\x9b\x0b\x21\x84\x00\x49\xf9\x9f\x00\x04\xb5\xea\ \xda\xd1\x68\x94\xee\xee\xee\x3e\x40\xb8\xae\x6b\xee\xd9\xb3\x67\ \xd1\xff\x17\x80\xb4\xb5\xb5\x3d\xb8\x78\xf1\xe2\x8b\xa4\x94\xf4\ \xf7\xf7\x33\x33\x33\x53\x3e\xf9\x40\xc9\x2e\x6f\xb2\x00\x8a\x9e\ \x85\xed\xd8\x08\x21\x70\x1c\x07\x29\x25\x96\x65\x21\x3d\x89\x94\ \x1e\xb6\x6d\x63\x59\x16\x8e\x21\x91\xe0\x7f\x86\xf4\x3c\x6c\xdb\ \xc1\xb6\x6d\xa4\xe7\x11\xa9\x8a\xb2\xb8\x61\x31\x62\x81\x20\x91\ \x99\xc3\x3a\x69\x94\x05\x75\x61\x9c\xb1\x28\xf6\x58\x08\xe1\xea\ \x95\x8a\xfb\x24\x29\x25\x52\x4a\x92\xc9\xe4\xba\x0a\xb5\x3e\x1a\ \x8f\xc7\x07\x8e\x19\x40\x1a\x1b\x1b\x3f\x58\x28\x14\x22\x80\x15\ \x0c\x06\x97\xc7\x62\x31\xa4\x94\x98\x01\xd3\xdf\x58\x00\xc7\x73\ \x28\x95\x4a\xfe\xc6\x5a\x96\x55\x06\x42\x5a\x78\x9e\x57\x7e\xce\ \x03\x29\x25\xa5\x52\xa9\x0c\x88\xe7\x95\x01\x2c\x16\x01\x70\x1d\ \xd7\xff\x4c\x57\xd3\x91\xea\x7d\x40\x7f\x6f\x1f\xe7\x37\x9e\x47\ \x6e\x34\x87\x29\xa0\x14\x4d\xb3\xa0\x43\xc3\x89\x87\x90\x39\x13\ \x74\x09\x9a\x44\x68\xc8\xb3\xce\x3a\xeb\xb7\x00\xa6\x69\xf2\xe8\ \xa3\x8f\xde\x09\x7c\xfc\x98\x01\x64\xc1\x82\x05\xf7\xbf\xed\x6d\ \x6f\xd3\x34\x4d\x63\xef\xde\xbd\x94\x4a\xa5\xf2\xa6\xba\x36\xb6\ \x65\x57\x80\x50\xde\x68\x81\x40\x4a\xcf\x07\xca\x96\xb6\x2f\x21\ \x78\x12\xcf\x93\x07\x37\x7d\xfe\x44\xab\xd7\xba\x5e\x59\x7a\x4a\ \xa5\x12\xba\xa6\xfb\xcf\x09\x21\x90\x9e\x87\x87\x87\x2b\x5d\x12\ \xb3\x33\x88\x25\x33\xa4\xa4\x09\x0b\x25\xd2\x16\x38\xc9\x00\x6e\ \xca\xc0\x4b\x1b\xa2\x6c\xd5\xc0\x30\x0c\xea\xea\xea\x4e\x6f\x6b\ \x6b\xbb\x45\x08\xc1\xec\xec\xec\xf3\x63\x63\x63\x0f\xbe\xe5\x00\ \xe9\xe8\xe8\x38\xa3\xa6\xa6\x86\x52\xa9\x84\xe7\x79\x5e\xa1\x50\ \xd0\x74\x5d\xc7\x75\xdd\x83\x00\x48\x0f\xcb\xb6\x7c\x0f\x49\xd9\ \x09\x21\x04\x9e\x47\x59\xed\x48\x89\x8d\x8d\x37\xbf\xd1\xd2\xf5\ \x90\x42\xfa\x9b\xee\x49\x81\x40\x1c\x04\xc4\x3d\x28\x21\xba\xa6\ \xf9\xd2\x24\x84\xf0\xc1\xb1\x6d\x9b\x03\xc3\x23\x9c\xbb\xe8\x5c\ \x64\x52\xe2\x49\x49\x36\x92\xa2\x61\xa9\x8e\x37\x17\x42\xda\x02\ \x69\x69\x48\xab\xec\xad\x75\x76\x76\x9e\x09\x9c\x69\x18\x06\x3b\ \x76\xec\xb8\xa7\x12\x90\x57\xdb\x33\x7b\xad\x00\x09\x34\x37\x37\ \x6f\xe9\xe9\xe9\xc1\x71\x1c\x36\x6f\xde\x8c\x6d\xdb\xb8\xae\x7b\ \x50\xf5\xcc\x03\x60\x5b\x07\x55\x96\xe7\x79\x58\xae\x5b\x36\xbe\ \xa0\xc0\xc4\x16\x0e\x42\x42\x3a\x9d\x2e\x4b\x51\xb0\x44\xb1\x58\ \x24\x9f\xcf\x23\x1d\x81\x44\x56\x7c\xc6\x41\x40\x34\xa1\xe1\x79\ \x15\x12\x32\x0f\x88\xfa\xdc\x54\x2a\x85\xe7\x79\x4c\xa7\x66\xd1\ \x16\x4d\x32\x33\x72\x58\x14\x60\x78\xd8\x89\x00\xd6\x81\x30\x42\ \x2b\xbb\xd4\xb3\xb3\xb3\x2b\x5b\x5b\x5b\x6f\x06\x74\xe0\xe1\x78\ \x3c\xfe\xdc\x9b\x56\x42\xda\xda\xda\x9a\xc7\xc6\xc6\x6a\x80\xa0\ \xfa\xc2\xae\xeb\xfa\x1b\xa1\x69\x1a\xae\xeb\xfa\x9b\x27\x3d\x89\ \xed\x1c\x04\xc4\xc5\x23\x9b\xca\xa0\x09\x0d\xdb\xb3\xc8\xd8\x19\ \x1c\xc7\xc1\xd1\x3d\x62\x66\xc4\x57\x59\x8e\x61\x93\xcd\x66\xc9\ \xe5\x72\x48\x47\xe0\x78\x2e\x73\x73\x73\x00\xe4\xbd\x22\xb6\x6d\ \x51\x28\x14\xd0\x84\x40\x9a\x07\xc1\x92\xe0\x7b\x67\xbe\xd7\x06\ \xe4\xe6\xd2\x2c\x6b\x3c\xcd\xb7\xe1\xe3\xc1\x71\x16\xad\x08\xe2\ \x4c\x86\x71\x73\x41\x64\xa7\x31\x6f\x5b\x24\x8b\x16\x2d\xea\x01\ \x7a\x34\x4d\x63\xfb\xf6\xed\x89\x37\x35\x20\x85\x42\xe1\x9e\x4b\ \x2f\xbd\xf4\x82\x5c\x2e\xc7\xe8\xe8\x28\xb6\x6d\xfb\x1e\x92\x0a\ \xe2\x2a\x37\xc2\x93\x92\x5c\x2e\x47\x2e\x97\x2b\x8b\x55\x38\xe8\ \x9f\x66\x57\x73\x31\x4c\x1d\xcf\xf3\x30\xe4\xc1\x80\xaf\x50\x2a\ \x10\x4c\x6b\x18\x55\xe5\x5b\x17\x36\xe8\x9e\x40\x33\xca\xea\x45\ \x77\x05\x99\x4c\x96\x74\x3a\x8d\x40\x10\xaa\x8f\x50\xb4\x8b\xf3\ \x12\xe2\xf9\xce\x80\xef\xb5\xc9\xb2\xfa\x2b\x96\xca\xaf\xd9\x9f\ \x9d\xa2\xed\xe2\x14\xd4\x07\x30\x3a\x25\x86\x06\x5e\x51\xc3\x4d\ \x1a\x38\x33\x01\x32\xcf\x55\x81\x26\xd1\x34\x8d\x7c\x3e\x1f\x01\ \x6a\xe7\xf7\x31\xf1\xa6\x03\xc4\xf3\x3c\x2d\x18\x0c\x52\x28\x14\ \x7c\xd5\xe4\x38\xce\x61\xb6\xc1\xa3\x50\x28\xcc\x3f\x76\xfd\x13\ \x0b\x10\x8c\x84\xd0\xe6\xf5\x7e\x20\xaf\x21\xea\x34\xce\x3d\xf7\ \x5c\x66\x67\x67\xe9\xeb\xeb\xe3\x82\x0b\x2e\xe0\xf2\xcb\x2f\xe7\ \xce\x3b\xef\x64\x70\x70\x90\xcb\x2f\xbf\x9c\x58\x2c\xc6\x9d\x77\ \xde\x89\xa6\x69\x74\x76\x76\x72\xe0\xc0\x01\x74\x43\xc7\x30\x0c\ \x04\xe0\x14\x6c\x72\xb9\x4c\x59\x3a\x1d\xd7\x57\x91\xea\x9e\x3c\ \xcf\xf3\xed\x13\x80\x91\xb4\xf1\x1e\x5d\x44\x42\x96\x25\xca\xd3\ \x9d\xb2\x2d\xb2\x34\x04\x02\xdd\xf4\x7c\x37\xb9\xa7\xa7\xe7\x9f\ \x4f\x3d\xf5\xd4\x7f\x2e\x95\x4a\xfc\xea\x57\xbf\x12\x6f\x0a\x40\ \x9a\x9b\x9b\x9b\x84\x10\x0f\x01\x05\xcb\xb2\x7a\xd4\x06\x2b\xa9\ \xa8\x54\x59\x2a\xa6\xc8\x66\xb3\x68\x9a\x86\x65\x59\x18\xba\x81\ \x61\x94\x6f\x43\x93\x82\xf7\xbc\xe7\x3d\xdc\x74\xd3\x4d\x5c\x7b\ \xed\xb5\x9c\x7b\xee\xb9\xbc\xfd\xed\x6f\xa7\xbb\xbb\x9b\x75\xeb\ \xd6\x71\xcb\x2d\xb7\xf0\xfc\xf3\xcf\x73\xe5\x95\x57\xf2\x9d\xef\ \x7c\x87\x77\xbc\xe3\x1d\x5c\x70\xc1\x05\xdc\x7f\xff\xfd\xdc\x78\ \xe3\x8d\x74\x76\x76\xf2\xcc\x33\xcf\x70\xcf\x3d\xf7\x50\x53\x53\ \x43\x34\x1a\x65\x7a\x7a\x1a\xd7\x30\xd0\x34\x0d\xcd\x12\x64\xb2\ \x19\xb2\xd9\xac\xaf\x3a\x3d\xcf\xf3\x1f\x3b\x8e\x43\x38\x12\x26\ \x18\x31\xd1\x34\x8d\x67\x8b\x7b\x78\xef\x35\x31\x04\xe5\x80\xd2\ \x4a\x98\x38\x13\x61\xac\x91\x10\xee\x6c\x60\xde\x31\x91\x04\x83\ \xc1\x37\x8f\xca\x9a\x9c\x9c\x5c\xf4\xfe\xf7\xbf\xff\xcc\x58\x2c\ \xc6\xe6\xcd\x9b\x29\x16\x8b\xb2\x54\x2a\x09\x05\x82\xeb\xba\x38\ \x8e\xc3\xdc\xdc\x1c\x42\x08\x74\x7d\xfe\xf4\x0a\x81\xe6\x69\x48\ \x24\x77\xdd\x75\x17\x89\x44\x82\x5b\x6f\xbd\x95\xab\xae\xba\x8a\ \xbe\xbe\x3e\xce\x39\xe7\x1c\x76\xec\xd8\xc1\x65\x97\x5d\x86\xe7\ \x95\x7d\xd0\x6f\x7d\xeb\x5b\xdc\x70\xc3\x0d\x7c\xe1\x0b\x5f\x20\ \x91\x48\xd0\xd3\xd3\x43\xb1\x58\x64\x66\x66\x86\x93\x4f\x3e\x99\ \xde\xde\x5e\x3a\x3b\x3b\x59\xbc\x78\x31\x9f\xfa\xd4\xa7\x58\xb5\ \x6a\x15\x67\x9f\x7d\x36\xae\xeb\xf2\x9e\xf7\xbc\x87\x87\x1e\x7a\ \x88\x52\xa9\x74\xd0\x59\x38\xcc\xd1\x70\xe7\x1d\x0a\xdb\xb6\x49\ \x26\x93\x94\x92\x73\xec\xb8\x37\x87\xe7\x49\x14\xfd\x22\xca\x11\ \x3e\xd6\x8c\x81\x35\x11\xf0\xf9\xb3\xea\xea\xea\xaf\x4b\x29\x09\ \x87\xc3\xcf\x4d\x4d\x4d\x7d\xff\x75\x05\xa4\xb9\xb9\x99\xc9\xc9\ \x49\xf5\x67\xde\xb6\xed\xca\x53\x27\xd4\xc9\x53\x5f\x58\x79\x50\ \x0a\x90\xaa\xaa\x2a\x2e\xbd\xf4\x52\x7e\xfc\xe3\x1f\xf3\xde\xf7\ \xbe\x17\x21\x04\x17\x5d\x74\x11\xdf\xf8\xc6\x37\x78\xf0\xc1\x07\ \xf9\xc8\x47\x3e\xc2\xf6\xed\xdb\xe9\xef\xef\xe7\xea\xab\xaf\xa6\ \x58\x2c\xa2\x69\x1a\x0f\x3e\xf8\x20\x3f\xfc\xe1\x0f\xf1\x3c\x8f\ \x45\x8b\x16\x71\xf1\xc5\x17\x63\x9a\xe5\xd3\x7c\xc5\x15\x57\x70\ \xd9\x65\x97\xf1\xe8\xa3\x8f\xb2\x60\xc1\x02\xaa\xaa\xaa\x08\x85\ \x42\xe4\x72\x39\xee\xbd\xf7\x5e\x22\x91\x08\x23\x23\x23\xec\xdf\ \xbf\xdf\x77\xa7\x93\xc9\x24\x8e\xe3\xf8\xae\xb2\xeb\xba\x68\x9a\ \x46\xa9\x54\xe2\xc0\x81\x03\xac\x3f\xff\xa2\x32\x18\x48\xa6\xf4\ \x04\x9d\x2b\x4c\xbc\x94\x89\x9b\x31\xf1\xaa\x4d\x64\x87\x86\xd0\ \x24\x18\x52\x22\xf9\xa4\x61\x18\x6c\xdd\xba\xf5\x47\xaf\x3b\x20\ \x93\x93\x93\x34\x36\x36\xfe\xd5\x89\x27\x9e\xf8\xdd\x7c\x3e\x8f\ \xeb\xba\x12\x10\x95\x7e\x7e\xa5\x97\x25\x84\x40\x08\x81\xb2\x2f\ \xb7\xdf\x7e\x3b\xd9\x6c\x96\xb5\x6b\xd7\xf2\xf4\xd3\x4f\xb3\x7e\ \xfd\x7a\xf6\xec\xd9\x83\xe3\x38\x3c\xf6\xd8\x63\x3c\xfa\xe8\xa3\ \xe4\xf3\x79\x5a\x5a\x5a\xfc\xd3\x5c\x28\x14\x58\xb0\x60\x01\xa1\ \x50\x88\x42\xa1\x40\x2a\x95\x22\x1a\x8d\xfa\x6a\x23\x10\x08\xf0\ \xc0\x03\x0f\x30\x37\x37\x47\xa9\x54\x92\x37\xdd\x74\x93\x08\x04\ \x02\x65\x6f\x4b\xd3\x48\xa5\x52\xe8\xba\xce\xc2\x85\x0b\xf9\xb7\ \x7f\xfb\x37\x3e\xf3\x99\xcf\x90\x4c\x26\xfd\xf7\x2b\x69\x0e\x04\ \x02\xbe\xb4\xcc\xcc\xce\x20\xa5\x24\xe7\x96\x08\x5f\x18\x47\x76\ \x04\xd1\x84\x86\xa6\x79\x48\xcd\xc3\xc9\xe8\xd8\xe3\x21\x52\xbf\ \xae\x13\xe8\x12\xc3\x30\x90\x52\xda\xaf\x24\x46\x39\x6a\x95\x65\ \x59\x56\x57\x5b\x5b\x1b\x73\x73\x73\xd8\xb6\x2d\x94\xf1\x56\x31\ \x80\x94\xd2\x3f\x7d\xae\xeb\x72\xdd\x75\xd7\x71\xf5\xd5\x57\xb3\ \x61\xc3\x06\x76\xed\xda\xc5\xfa\xf5\xeb\x79\xf2\xc9\x27\x71\x1c\ \x87\xeb\xaf\x2f\xf3\x8b\x13\x13\x13\x48\x29\xfd\x6b\xec\xdb\xb7\ \xef\x90\x6b\x1e\x38\x70\x40\x6d\xa0\xed\x38\xce\x01\x29\x25\xba\ \xae\x5b\xf9\x7c\xfe\xf2\xb1\xb1\xb1\x29\x80\x40\x20\x70\x49\x73\ \x73\xf3\xed\xb9\x5c\x8e\x42\xa1\x40\x2c\x16\xe3\xda\x6b\xaf\xa5\ \xa3\xa3\x83\x6d\xdb\xb6\xf1\xdd\xef\x7e\x97\x91\x91\x11\x9a\x9a\ \x9a\x7c\x42\xd2\x71\x1c\x92\xc9\x24\xae\xeb\xd2\xd0\xd0\x70\x30\ \x20\x9d\x97\xfc\xfd\x07\x46\x30\xa7\x1c\x06\x83\xd0\x12\x5c\x4a\ \x20\x28\x38\x90\x1e\x44\x22\x11\x1e\x94\xe2\x63\x88\x79\xc6\x3f\ \x9f\xcf\xff\x49\x73\x73\xf3\x63\x9a\xa6\x69\xf1\x78\x7c\xdd\xeb\ \x66\x43\xa4\x94\x56\xa9\x54\xc2\xb6\x6d\x3f\xbe\x80\x72\xf0\x96\ \x4e\xa7\x31\x4d\x13\x21\x04\xa5\x52\x89\x70\x38\xcc\xdf\xfe\xed\ \xdf\xf2\xf4\xd3\x4f\xd3\xdc\xdc\xcc\x8f\x7e\xf4\x23\x1e\x7f\xfc\ \x71\x06\x07\x07\x0f\x01\x20\x12\x89\xfc\xe1\xa4\x8d\x10\x58\x96\ \xb5\x4f\xd3\xb4\x21\x40\x3a\x8e\xb3\x2b\x1e\x8f\x7f\xfa\x0f\xbd\ \x36\x12\x89\x7c\x7b\xeb\xd6\xad\xff\x09\x48\xdb\xb6\xb3\x8b\x17\ \x2f\x1e\x6d\x68\x68\x88\x28\x09\xb9\xef\xbe\xfb\xe4\x97\xbe\xf4\ \x25\xf1\xbd\xef\x7d\x8f\x0f\x7c\xe0\x03\x7c\xe8\x43\x1f\xe2\xf3\ \x9f\xff\x3c\xdb\xb7\x6f\xf7\x3d\xae\x4a\xa7\x24\x91\x48\x70\xf6\ \x9a\xb3\x70\x1c\x07\x81\x60\xd4\x1c\xe3\x84\xf3\xa0\x6d\x7a\x39\ \x4e\x22\x84\x1d\x0f\x21\x5b\xe6\xe3\x14\x43\x02\xb4\x18\x86\xd1\ \xb2\x71\xe3\xc6\xa3\x8a\xe0\x5f\x36\x20\x75\x75\x75\xd7\xae\x59\ \xb3\xe6\x1f\x07\x07\x07\x43\x8e\x53\x66\x55\x75\x5d\x3f\x24\xde\ \xb0\x2c\x8b\x40\x20\xc0\x0d\x37\xdc\xc0\x8a\x15\x2b\xb8\xe6\x9a\ \x6b\xb8\xfe\xfa\xeb\xb9\xf0\xc2\x0b\x19\x1e\x1e\x66\x3e\x39\x44\ \x2c\x16\x3b\x12\xe8\x2e\x20\x85\x10\x64\x32\x99\x6f\xc4\xe3\xf1\ \xaf\x1c\xe9\xfe\xd2\xe9\x74\x1e\xf0\x93\x4e\xa3\xa3\xa3\xeb\x47\ \x46\x46\xcc\x79\xe9\xf9\xc7\xf1\xf1\xf1\xd3\x2e\xb8\xe0\x02\x12\ \x89\x04\xb7\xdd\x76\x1b\x13\x13\x13\x2c\x5e\xbc\x98\xe7\x9f\x7f\ \x9e\x7c\x3e\x8f\x6d\xdb\x14\x0a\x05\xd4\x77\x73\x5d\x97\x42\xa1\ \x50\xfe\x4e\xc2\xa0\xd0\x33\x81\xb6\xa0\x16\xad\x36\x47\xf4\x14\ \x0d\xa9\x49\xa4\x0d\x4e\x32\xc0\xec\xcf\xeb\xf1\x8a\x9a\x52\x5d\ \x1c\x8d\xea\x32\x8e\x42\x55\xb5\x2d\x5c\xb8\xb0\x7e\x6c\x6c\xcc\ \xb7\x17\x95\x34\x87\x4a\x0c\x01\xac\x5f\xbf\x9e\xbe\xbe\x3e\x4c\ \xd3\x64\xf3\xe6\xcd\x3c\xf5\xd4\x53\x04\x83\x41\x82\xc1\xa0\x4f\ \x8f\x1c\x8e\x81\xb2\x45\x55\x55\x55\x6c\xd9\xb2\xa5\x3d\x99\x4c\ \x4e\xbc\x12\x9d\x9c\xc9\x64\x7e\xa3\x1e\x87\xc3\xe1\x4b\x0e\x1c\ \x38\x60\x00\x9e\xeb\xba\x27\xde\x70\xc3\x0d\xd1\xaf\x7c\xe5\x2b\ \xf4\xf6\xf6\xd2\xd1\xd1\xc1\x9d\x77\xde\xc9\xfa\xf5\xeb\x29\x14\ \x0a\xbe\x5d\x71\x1c\x07\xc7\x71\x98\x9d\x9d\xc5\x2e\x59\x94\x4a\ \x3a\x2f\xf4\xe7\x79\xfb\xc2\x0b\x89\x85\xa3\x3c\xbe\xef\x3f\x08\ \xe9\xd5\xd8\x64\xc9\x1f\xb0\x91\x0e\x68\x9a\x86\x69\x9a\xf4\xf4\ \xf4\xdc\x9d\x4c\x26\x37\x8d\x8c\x8c\xdc\xf9\x9a\x49\x88\x52\x43\ \x95\xbe\xbb\xd2\xc1\xb6\x6d\xb3\x70\xe1\x42\xee\xb9\xe7\x1e\x3e\ \xfc\xe1\x0f\xf3\xaf\xff\xfa\xaf\xfc\xdd\xdf\xfd\x1d\xc1\x60\xb0\ \xcc\x3b\xcd\x4b\x90\xe7\x79\xa8\xbc\x83\x52\x13\xf3\xf6\x40\xa4\ \x52\xa9\x87\x80\x84\xae\xeb\xe9\x70\x38\x6c\x2b\xc3\xab\xa4\xea\ \x95\xac\x44\x22\x71\x6d\x22\x51\x0e\xa8\xeb\xeb\xeb\x9f\x8c\xc5\ \x62\x67\xdf\x7c\xf3\xcd\x8c\x8f\x8f\x73\xfb\xed\xb7\xb3\x73\xe7\ \x4e\x02\x81\x80\x4f\x5c\x56\x7e\xbf\xe9\xe9\x69\xba\xbb\xbb\xcb\ \x81\xab\x2b\x79\x7c\xfc\x71\xba\xcf\x09\xd2\xae\xb5\xe2\x4e\x84\ \xf0\x52\x0b\xa1\xed\x10\x72\x15\x5d\xd7\xaf\xec\xef\xef\xd7\x5f\ \x2b\x40\x42\xef\x7b\xdf\xfb\xf6\x1e\x38\x70\xa0\x5a\x89\xb2\xa2\ \x46\x94\xeb\x29\xa5\xe4\xd3\x9f\xfe\x34\x4f\x3d\xf5\x14\xf3\x5c\ \x0f\x1f\xfc\xe0\x07\xa9\xa9\xa9\x79\x49\x17\x30\x4d\x93\x2d\x5b\ \xb6\x7c\x3e\x93\xc9\xbc\xaa\xfc\xd0\x8b\x48\xfa\x8d\x03\x03\x03\ \xf5\x9a\xa6\x59\x52\xca\xff\xf5\x4f\xff\xf4\x4f\x6b\x6f\xba\xe9\ \x26\x2c\xcb\x62\xdd\xba\x75\xec\xdb\xb7\x8f\xb1\xb1\x31\x5f\x8d\ \x39\x8e\xe3\xb3\xc6\x39\xaf\x44\xdb\x7b\x4a\x84\xdb\xa1\xd0\x3c\ \x8b\x01\x04\xb5\x08\x6e\x09\x28\x98\x4c\xfd\xa4\x11\x61\x78\x18\ \x86\xe1\xc7\x50\xaf\x05\x20\xf5\xd5\xd5\xd5\x0b\x75\x5d\xf7\x25\ \xa4\x50\x28\x50\x2c\x16\x09\x04\x02\x84\xc3\x61\x34\x4d\xe3\x27\ \x3f\xf9\x09\x57\x5c\x71\x05\xb5\xb5\xb5\x14\x8b\x45\xdf\x5b\x39\ \x5c\x1a\xd4\xdf\xba\xae\x93\x4e\xa7\x77\x1a\x86\xf1\xb8\xeb\xba\ \x4e\x24\x12\x89\x67\x32\x99\xd7\x14\x0c\x4d\xd3\xc8\x66\xb3\xbf\ \xcb\x66\xb3\xea\x34\x5f\x61\x18\x06\xb7\xdc\x72\x0b\x86\x61\xc8\ \xbb\xee\xba\x4b\xac\x5e\xbd\xda\x7f\xbd\x72\xe3\x95\x26\xc8\x14\ \x73\x44\xb6\xe7\x98\xfa\x7d\x9a\xcb\xcf\xf8\x5b\x5c\xbd\xc0\x43\ \xbd\xdf\xa6\x29\xdc\xc5\x44\x66\x88\xb9\xb1\x22\xc2\x28\x5f\x67\ \x66\x66\x66\x51\x34\x1a\xfd\xcb\x5c\x2e\x77\xdf\xab\x02\x48\x85\ \xde\x76\x95\xaf\xae\x44\xd9\xb2\x2c\xf2\xf9\x3c\xed\xed\xed\x3c\ \xf4\xd0\x43\xbc\xff\xfd\xef\x67\xdf\xbe\x7d\x5c\x77\xdd\x75\x04\ \x02\x01\x34\x4d\xfb\x43\x55\x20\x87\x7c\x7e\x38\x1c\x26\x1e\x8f\ \x3f\x35\x33\x33\x73\xc3\xeb\x95\x46\x3e\xfc\xd4\xa6\xd3\xe9\xcd\ \x3b\x76\xec\x08\x7a\x9e\xa7\xb7\xb4\xb4\xbc\xff\xe9\xa7\x9f\x46\ \xd7\x75\x84\x10\x84\xc3\xe1\x43\x54\x97\x69\x9a\x9c\x7d\xda\x1a\ \xa4\x07\xae\x74\xd9\xd6\xbb\x11\xd3\xd0\x59\xea\x9c\x83\x3b\x23\ \x58\x6a\x2f\x86\xd5\xaa\x9e\x47\x02\xac\x29\x14\x0a\x6b\xee\xbe\ \xfb\xee\x57\x07\x90\x78\x3c\x4e\x6b\x6b\xeb\x59\xb6\x6d\x7f\x40\ \xc5\x15\x2a\x12\x37\x8c\x32\x0f\x55\x53\x53\xc3\xe6\xcd\x9b\x31\ \x4d\x93\x9d\x3b\x77\x1e\x02\xc0\x4b\x4a\x9e\x04\x02\x6f\x68\x39\ \x52\x2a\x95\xba\x03\xb8\x03\x08\x2c\x5e\xbc\xb8\xf4\x37\x7f\xf3\ \x37\x4c\x4e\x4e\xb2\x61\xc3\x06\xba\xba\xba\xf8\xee\x77\xbf\x4b\ \xb1\x58\x2c\xb3\xc2\xc5\x22\xf1\x78\x1c\x21\x04\x1b\x53\xbd\xfc\ \xd9\xa7\xab\xf1\x5c\xf0\x7c\xb0\xc1\x1a\x0b\x52\xe8\x8d\x61\x8d\ \x05\x01\xf9\x62\x0e\xcc\xd1\xab\xac\x50\x28\xf4\xd7\x67\x9e\x79\ \xe6\x95\x96\x65\x49\xd7\x75\x85\xba\x39\xcf\xf3\x38\xef\xbc\xf3\ \xd8\xbd\x7b\x37\xdf\xf8\xc6\x37\xe8\xea\xea\xf2\x6d\x8b\x0a\xb8\ \x0c\xc3\xf0\xa3\x60\x29\xcb\xd1\xac\xa2\x42\xb6\x6d\xdb\x16\x01\ \x0a\xbc\x79\x96\x4c\x24\x12\x39\xd3\x34\xa5\x6d\xdb\xe1\x0d\x1b\ \x36\xe8\x3f\xf8\xc1\x0f\x7c\x49\xaf\xe4\xe6\x00\x2c\xcd\x25\x54\ \x25\x88\x26\x4f\xe7\x86\x0b\x3f\xcb\x23\x83\xdf\x61\x60\x6c\x90\ \xd2\xa9\x93\x4c\xe4\x0b\xe4\x86\x34\x10\xf2\x65\x1d\xd0\x97\x04\ \x5d\x57\x57\xd7\x7d\x2b\x56\xac\xf8\xb0\x6d\xdb\xec\xdf\xbf\x9f\ \x68\x34\x4a\x3c\x1e\xe7\x93\x9f\xfc\x24\x1d\x1d\x1d\xfc\xcb\xbf\ \xfc\x0b\xe1\x70\xd8\x57\x49\xca\xc0\x7b\x9e\x57\x66\x59\xe7\xf3\ \x20\x95\x2e\x71\x3e\x9f\x67\xef\xde\xbd\xe1\x7c\x3e\x5f\xe4\x4d\ \xb8\xea\xea\xea\x1e\x3b\xe5\x94\x53\xce\x5d\xbe\x7c\x39\x5b\xb7\ \x6e\x65\x7a\x7a\x9a\xd6\xd6\x56\xa4\x94\x64\x32\x19\x16\x2d\x5a\ \x84\x8e\x86\x53\x82\xa2\x57\xc4\xa5\x84\x69\x47\xd0\x8d\x79\x35\ \x6d\x82\x30\xfc\x78\x4a\x9a\xa6\x29\xb6\x6f\xdf\xbe\x7a\x6c\x6c\ \x6c\xf3\x2b\xb5\x21\x31\xcf\xf3\xaa\xd4\xe9\x70\x5d\xd7\x67\x6b\ \xe3\xf1\x38\xe7\x9c\x73\x0e\x37\xdd\x74\x13\xdb\xb6\x6d\x23\x97\ \xcb\x31\x37\x37\x47\x2a\x95\x22\x10\x08\xd0\xda\xda\xca\xd8\xd8\ \x18\x63\x63\x63\xac\x58\xb1\x82\x6d\xdb\xb6\x51\x2c\x16\x7f\x35\ \x3e\x3e\x7e\x6b\x2c\x16\x4b\xd7\xd7\xd7\x97\xf2\xf9\xfc\x9b\x11\ \x0f\x84\x10\x01\xdb\xb6\x79\xe2\x89\x27\xe8\xee\xee\x96\x97\x5c\ \x72\x89\xb8\xeb\xae\xbb\xa8\xad\xad\xc5\xf3\x3c\x9f\x47\x1b\xd5\ \x67\x68\xff\x8b\x59\x16\x34\x06\x70\xf2\x56\x39\xcb\x38\x15\xc2\ \x9a\x08\x22\x0b\x3a\x5e\x5e\x07\x10\xd1\x68\x14\xc3\x30\x9c\x57\ \xac\xb2\xea\xeb\xeb\x6f\x6f\x6c\x6c\xfc\x53\xe5\xea\x2a\x40\xba\ \xba\xba\x78\xf6\xd9\x67\xd9\xb4\x69\xd3\x8b\xbe\x77\x74\x74\xd4\ \x97\x9a\xde\xde\x5e\x62\xb1\x18\x81\x40\x60\x72\xff\xfe\xfd\x4f\ \xcf\xcd\xcd\xf9\x69\xd7\x37\xe3\x72\x1c\xe7\xf3\x03\x03\x03\xcd\ \xb6\x6d\xaf\x59\xb3\x66\xcd\xb5\x43\x43\x43\x18\x86\x71\x48\x7e\ \x07\x20\x65\xe5\x38\xb3\x39\x4a\x21\x2f\x79\xd7\x09\xef\xa3\xaf\ \x6a\x33\xe9\x8e\x19\x40\x50\x18\x36\x99\xf9\x45\x0d\xe8\x65\xf2\ \xf3\x55\xb1\x21\xae\xeb\x46\x94\xfb\xaa\x0a\x0b\xde\xfd\xee\x77\ \x33\x3a\x3a\xca\x63\x8f\x3d\x46\x38\x1c\xf6\xcb\x3c\x15\xbd\xae\ \x0c\x7e\x85\x6b\x5b\x2e\x09\x75\x5d\xd2\xe9\x74\x94\x37\xf9\xaa\ \xae\xae\x26\x9d\x4e\xff\xf7\x3c\x37\xe6\x0e\x0d\x0d\x5d\x9b\x4c\ \x26\x51\x55\x33\x9e\xe7\xd1\xdf\xdf\x4f\x55\x55\x15\x86\x67\xb3\ \xed\x6b\x36\x94\xa2\xcc\xd5\xed\x44\x0a\x93\x78\xca\x21\x60\xea\ \x14\x0b\x19\x9c\x54\x39\x3d\x3d\x35\x35\x45\x2c\x16\xfb\x61\x53\ \x53\xd3\x0d\x53\x53\x53\x8f\x1e\x35\x20\x52\x4a\x57\x49\x86\xb2\ \x07\x13\x13\x13\xdc\x78\xe3\x8d\x7c\xf5\xab\x5f\xe5\xf6\xdb\x6f\ \x67\x78\x78\x98\x93\x4f\x3e\x99\x99\x99\x19\xe2\xf1\x38\x35\x35\ \x35\x3c\xff\xfc\xf3\x68\x9a\xc6\x49\x27\x9d\xc4\x96\x2d\x5b\xc4\ \xe8\xe8\xe8\x13\xd3\xd3\xd3\xeb\x00\x16\x2e\x5c\xc8\xf8\xf8\xf8\ \x9b\x16\x10\xc5\x02\xcf\x4b\xb7\xa9\xb2\x9c\xab\x56\xad\x92\xa3\ \xa3\xa3\x22\x99\x4c\xd2\xd0\xd0\xc0\xc9\x27\x9f\x5c\x26\x23\x3d\ \x1b\x4e\x9a\xa1\xa6\xae\x80\x97\x0e\x50\x93\x5a\x84\x97\x36\x71\ \x53\x06\xb4\x80\xd0\xa5\x22\x3e\x4f\xba\xf7\xde\x7b\x1b\x8e\x5a\ \x42\x9a\x9a\x9a\x16\xbb\xae\xfb\x6e\xe5\x39\x05\x02\x01\x02\x81\ \x00\x43\x43\x43\x6c\xd8\xb0\xc1\xf7\x9a\x00\x7e\xff\xfb\xdf\xfb\ \x39\xf3\xca\x78\x63\xd3\xa6\x4d\x84\x42\x21\xff\x75\xc0\x9b\x1a\ \x8c\x3f\x10\x44\x3e\xba\x65\xcb\x96\xb5\x81\x40\xe0\xea\xf3\xce\ \x3b\xef\x8a\x1f\xfc\xe0\x07\x7e\x6a\x21\x93\xc9\x20\x3d\x8f\x31\ \x99\xe0\x8c\xb7\x39\xd8\x8e\x4b\x55\xa8\x86\x82\x9b\x41\xe8\xe5\ \x82\xbe\xfc\xae\x18\xe9\x67\x6a\x40\x1c\x74\x72\xfe\xe8\xf5\x8e\ \x40\xcc\xad\x89\x44\x22\x0b\x5d\xd7\x25\x99\x4c\x22\xa5\xe4\xfa\ \xeb\xaf\xa7\x58\x2c\x12\x0e\x87\x89\x44\x22\x3e\x48\xa1\x50\x88\ \x60\x30\x48\x38\x1c\x26\x1c\x0e\x13\x0a\x85\x08\x85\x42\xc4\x62\ \xb1\x43\xbc\xab\xb7\xda\xca\x64\x32\x93\xa5\x52\xe9\x49\x4d\xd3\ \x46\xbe\xf5\xad\x6f\x1d\x22\x3d\x7e\x32\x4e\xba\x80\xc6\x62\x79\ \x11\x9f\x59\x7d\x37\x7f\x7f\xee\x8f\x18\xde\xe3\xd2\x11\x5b\x8e\ \x08\x96\x6b\xcf\x14\x7b\x7c\xa4\x98\xe4\x8f\x3e\x1b\x0e\x87\xaf\ \x5c\xb2\x64\xc9\xdd\x00\xc9\x64\x92\xa6\xa6\x26\x7e\xf2\x93\x9f\ \x30\x3d\x3d\xcd\x43\x0f\x3d\xc4\xfe\xfd\xfb\x59\xb7\x6e\x1d\x8f\ \x3c\xf2\x08\x2b\x57\xae\x24\x91\x48\x30\x38\x38\x48\x4f\x4f\x0f\ \x8d\x8d\x8d\xfc\xf0\x87\x3f\xa4\x58\x2c\xce\xbc\xf0\xc2\x0b\x8d\ \xcd\xcd\xcd\x81\xc9\xc9\xc9\xd2\x5b\x15\x98\x9a\x9a\x9a\x2f\xac\ \x5e\xbd\xfa\xa6\xd1\xd1\x51\x92\xc9\x24\xa1\x50\x88\xd3\x4f\x3f\ \x9d\x40\x20\x80\x04\x02\x86\x86\x74\x02\x38\x5e\x09\xc3\x30\x71\ \xa4\x8d\xa6\x97\x6b\xcf\x64\x05\x31\x30\x3c\x3c\x1c\x7f\xfa\xe9\ \xa7\x17\x1e\x95\xca\xd2\x34\x2d\xac\x54\x90\xae\xeb\x84\x42\x21\ \x3e\xf9\xc9\x4f\xd2\xd9\xd9\xc9\x0b\x2f\xbc\x80\x94\x92\xde\xde\ \x5e\x74\x5d\xf7\xf3\x1c\x00\x8f\x3c\xf2\x08\xae\xeb\xaa\x82\x06\ \x09\xc8\xb7\x32\x18\xf3\x74\xcb\xcf\x9e\x79\xe6\x99\xfd\x0b\x17\ \x2e\xbc\xbd\xbd\xbd\x3d\x3a\x3a\x3a\xea\xf3\x79\x1e\x1e\xdb\xeb\ \xfb\x38\xeb\x2f\x22\x18\x19\x13\x37\x6d\xa0\xa7\x82\xb8\x29\x03\ \x37\x6d\x60\x8d\x85\x10\x02\xc5\x68\x9b\x47\x6d\x43\x42\xa1\xd0\ \xa7\x65\xd9\xaa\x8b\x25\x4b\x96\xe0\x38\x0e\xf9\x7c\x9e\x3d\x7b\ \xf6\xf8\xd1\xab\xe2\x7c\x82\xc1\xa0\x9f\x94\x51\x65\x9b\x80\x4c\ \xa5\x52\x36\xc7\xc0\xca\x64\x32\xcf\x02\xcf\x1a\x86\xf1\x8f\x23\ \x23\x23\x51\x4d\xd3\x0e\x26\xe5\xa4\x43\xfd\x42\x03\xe1\xea\x2c\ \x6a\x3c\x85\x9a\x45\x55\xbc\x30\xb5\x89\x58\xa0\x96\xbc\x3e\xc5\ \xc8\x57\x5b\x11\x5a\x99\x50\x55\x99\xd5\xa3\x02\x44\x4a\x29\xa4\ \x94\xa2\x54\x2a\xf1\x89\x4f\x7c\x02\xc3\x30\xb8\xe8\xa2\x8b\xf8\ \xf2\x97\xbf\x8c\x69\x9a\x18\x86\x41\x2a\x95\x62\x64\x64\x84\xee\ \xee\x6e\x86\x87\x87\x49\xa7\xd3\xf4\xf7\xf7\x93\xcd\x66\xc9\x64\ \x32\x7f\x33\x30\x30\xf0\x0d\x8e\xa1\xa5\x3c\x4d\x28\xe7\xf8\xa5\ \x94\xb8\x48\x3c\xf2\x3c\xbb\xab\xc8\xa2\x77\x76\xf1\xf0\xf3\x4f\ \x10\xab\x8f\x12\x88\x2e\x66\xd7\xcc\x5e\x52\xa3\x36\x9a\x56\x3e\ \xa4\x85\x42\xa1\xee\xa8\x6d\x48\x7d\x7d\x7d\x7f\x53\x53\xd3\x52\ \xd7\x75\xa9\xab\xab\xe3\x8a\x2b\xae\xa0\xb7\xb7\xd7\x2f\x36\xf0\ \xdb\x0a\x4a\x25\x42\xa1\x10\xa5\x52\x89\x6c\x36\x4b\x34\x1a\x25\ \x95\x4a\x91\xcd\x66\xaf\x3b\xd6\x00\x69\x69\x69\xf9\x8c\x10\xe2\ \xb3\x42\x88\xba\x95\x2b\x57\xfa\xb9\x9e\xa2\x67\x11\x3a\x39\x85\ \xe1\x18\x78\xd3\x11\x9c\xc9\x30\x68\x1e\x42\x13\x2a\xd7\x8e\x94\ \x92\xe9\xe9\x69\x1e\x7b\xec\x31\x71\xb4\x71\x88\x50\x74\xb5\xae\ \xeb\xdc\x75\xd7\x5d\x87\x24\xa3\x2a\xdd\x5b\x15\xb9\x9a\xa6\x89\ \x6d\xdb\x32\x16\x8b\x89\x74\x3a\xad\x1f\x4b\x60\x54\x57\x57\x33\ \x31\x31\xf1\xa5\xd6\xd6\xd6\x6b\x81\x3a\xcf\xf3\xca\x44\xa9\xd0\ \x78\xac\xb8\x9d\xbf\x5c\xd5\x84\x23\x6d\x2c\xb7\x44\xcc\x08\xe3\ \x66\x74\xbc\x54\x90\xdc\xce\x18\x56\x3c\xf0\x07\xa9\xff\x97\xe5\ \xf6\x02\xa6\x6d\xdb\x5c\x70\xc1\x05\x34\x36\x36\x72\xf5\xd5\x57\ \xd3\xd4\xd4\x84\x69\x9a\x2c\x5e\xbc\x98\x8e\x8e\x0e\x4c\xd3\xa4\ \xb1\xb1\x91\x64\x32\x49\x2e\x97\x43\xd7\x75\xe2\xf1\xb8\xd8\xbd\ \x7b\xf7\x2f\x32\x99\xcc\x2f\x8f\x25\x40\x94\xcb\x2b\xe6\x4f\xa1\ \x4a\x45\x58\x96\x85\xd0\xca\xe5\xa6\xef\x8c\xfd\x35\x5f\x5c\xf7\ \x30\xcb\x6a\xcf\x64\x79\xc3\xd9\x44\x3b\x25\xc4\x4a\x07\x1b\x8c\ \x5e\x89\x0d\x01\xc4\x7c\x76\x8d\x7b\xef\xbd\x97\xa1\xa1\x21\xf6\ \xec\xd9\x83\x69\x9a\xd4\xd7\xd7\x93\xcd\x66\xd1\x75\x9d\xce\xce\ \x4e\x6a\x6b\x6b\xd9\xbb\x77\x2f\x3d\x3d\x3d\x64\x32\x19\x0a\x85\ \xc2\xe6\x78\x3c\xde\xcb\x31\xb8\x1c\xc7\x91\x7e\x57\x30\xa0\x21\ \xd0\x43\x82\x7d\x7b\x93\xfc\xcb\xff\xb8\x9c\xeb\x1e\x7c\x37\x77\ \x5f\xb6\x99\xc9\xb9\x69\x9e\x4b\xfc\x17\xdf\xfb\xd5\xbd\x58\x96\ \xe6\x07\x94\xaf\x88\xcb\xd2\x34\x8d\x81\x81\x01\x2e\xba\xe8\x22\ \x0a\x85\x82\xaf\x0b\x2b\xcb\x5c\xfa\xfa\xfa\xfc\xc7\x4f\x3f\xfd\ \xf4\x21\x51\xf9\xb1\xb8\x66\x66\x66\xde\xd5\xd2\xd2\x32\xa5\x78\ \x2d\x81\x40\x84\x05\x85\x9c\x47\x38\x74\xd0\xab\x75\x5c\x87\xc7\ \x87\xfe\x03\xcf\x95\xbe\xbd\x7d\xa5\x12\x42\x20\x10\xa0\xbe\xbe\ \x9e\x40\x20\xa0\xaa\x14\x09\x06\x83\x64\x32\x19\x6a\x6a\x6a\xfc\ \xbc\xba\xca\xa9\x67\x32\x19\x2c\xcb\xb2\x81\xb1\x63\x15\x10\xd7\ \x75\xb3\xf3\x92\x52\xa6\x43\x28\xe7\x80\x62\x31\x13\xdb\x02\xd7\ \x9b\xef\x08\xc6\xc5\xf5\x1c\x3c\xd7\xc5\xb2\xbc\x57\x0e\x88\xe7\ \x79\xac\x5b\xb7\x8e\x2b\xaf\xbc\x92\x33\xce\x38\x83\x87\x1f\x7e\ \x98\xdf\xfd\xee\x77\xe4\xf3\x79\x26\x26\x26\x38\xe3\x8c\x33\x98\ \x9c\x9c\xa4\xaf\xaf\x0f\xcf\xf3\x68\x6c\x6c\xe4\x85\x17\x5e\xc0\ \xf3\xbc\x7d\xf1\x78\xfc\xdf\xdf\x0c\x93\x11\x5e\xab\x35\xcf\x64\ \x4b\xcb\xb2\x84\x40\x20\x34\x9d\xa5\xcb\xea\x79\x64\xeb\xcf\xf9\ \xcc\x39\xdf\xe2\xbf\xf6\x7c\x13\x27\x17\xe6\xbc\xc5\x1b\xe8\x75\ \xbe\x43\xa9\xe4\x1c\xa2\x55\x8e\x5a\x42\x36\x6e\xdc\xc8\xf4\xf4\ \x34\x35\x35\x35\x0c\x0c\x0c\xf8\x28\x4b\x29\xf9\xe9\x4f\x7f\xea\ \x57\x92\x78\x9e\xc7\xd4\xd4\x94\x2a\xae\x16\xc0\x31\x0b\x06\x60\ \x15\x0a\x85\xd9\x42\xa1\x50\x9f\x4c\x26\xd1\x84\x46\xbe\xd9\xa3\ \x68\x55\xf1\x1f\x43\x7f\xcf\x27\x63\xdf\xe3\x40\xae\x9f\xe7\x27\ \x7e\x87\x11\xd0\x98\x19\x4b\x31\x37\x57\xae\x43\x50\x99\xd5\xa3\ \x06\xc4\x30\x0c\x46\x47\x47\x19\x1e\x1e\x46\xd7\x75\xdf\xe5\xd5\ \x34\xcd\xff\x5b\x45\xed\x2a\x0f\x32\x39\x39\xd9\xd2\xda\xda\xfa\ \xbe\x78\x3c\xfe\xc8\xb1\xaa\xb5\x84\x10\x96\x4a\x57\xab\x86\x1e\ \x23\x28\xa8\x22\xc2\x1d\x8f\x5d\x4b\xb2\xcf\x63\x66\x6f\x81\x52\ \xd2\x23\x37\xe9\x22\x34\xe1\xef\xd3\x51\x03\x12\x8d\x46\xf9\xc8\ \x47\x3e\x42\x7f\x7f\x3f\x17\x5f\x7c\x31\x4f\x3c\xf1\x04\x43\x43\ \x43\xd4\xd5\xd5\xe1\x38\x8e\xef\x06\x8e\x8c\x8c\x90\x4c\x26\x69\ \x69\x69\x61\x72\x72\x92\x5c\x2e\x57\x4d\xb9\x18\xe6\x98\x03\xa4\ \xa5\xa5\x45\x55\xe9\x4b\x75\x08\x6b\x6b\x6b\x31\x87\x8b\x3c\x71\ \x63\x9a\x42\xc2\x2d\x77\xec\x6a\x20\xf4\xb2\x0f\x66\x98\xf8\x07\ \xf6\x48\xf4\xfb\x1f\x05\x24\x12\x89\x30\x35\x35\xc5\xa7\x3e\xf5\ \x29\xa4\x94\x6c\xdc\xb8\x91\xba\xba\x3a\x6a\x6b\x6b\x71\x5d\x97\ \xd1\xd1\x51\xba\xba\xba\xfc\xc6\x97\xb6\xb6\x36\x72\xb9\x9c\x02\ \xca\x3b\x16\x45\x63\x62\x62\x82\xf6\xf6\xf6\xef\x06\x02\x81\x46\ \xd7\x75\xb9\xe3\x8e\x3b\x58\xb7\x6e\x1d\x5f\xfb\xda\xd7\x38\x70\ \xe0\x00\x9e\xe7\x91\xc9\x64\x30\x0c\x83\xd9\xd9\x59\xaa\xab\xab\ \x09\x85\x42\x0c\x0f\x0f\x53\x28\x14\x38\x52\x0d\xc1\x91\xd8\x5e\ \x7e\xf1\x8b\x5f\xf0\xf3\x9f\xff\xfc\x45\x5f\x53\x69\x27\x76\xed\ \xda\x45\x24\x12\x79\x49\xc6\xeb\xad\xbc\x02\x81\xc0\xda\x55\xab\ \x56\x19\xbf\xff\xfd\xef\x59\xb1\x62\x05\x7d\x7d\x7d\xac\x5d\xbb\ \x96\xef\x7f\xff\xfb\xf4\xf4\xf4\x30\x36\x36\x46\x57\x57\x17\x8f\ \x3c\xf2\x08\xd5\xd5\xd5\xb4\xb7\xb7\x73\xda\x69\xa7\x71\xdf\x7d\ \xf7\x1d\x31\x37\xf4\x47\x15\x5a\x6b\x6b\xeb\x70\x55\x55\xd5\x09\ \x95\x84\x5a\xa9\x54\x22\x12\x89\xf8\x95\x25\x91\x48\x84\x5c\x2e\ \x87\xe7\x79\xd4\xd5\xd5\xf9\xd2\xd2\xde\xde\x6e\xcf\xcd\xcd\xdd\ \xb3\x67\xcf\x9e\xab\x8f\x35\x40\x16\x2d\x5a\x34\x78\xea\xa9\xa7\ \x9e\x38\x31\x31\xc1\x92\x25\x4b\x58\xb3\x66\x0d\xbf\xfc\xe5\x2f\ \x29\x95\x4a\x04\x02\x01\xb2\xd9\x2c\xe1\x70\x98\x74\x3a\xed\xef\ \x9b\xe7\x79\xe4\x72\x39\x5c\xd7\x65\xe7\xce\x9d\x47\xc7\x65\x45\ \xa3\x51\xeb\x9b\xdf\xfc\x26\xa9\x54\x8a\x0f\x7c\xe0\x03\xdc\x7f\ \xff\xfd\xf4\xf6\xf6\xd2\xd0\xd0\x40\x55\x55\x15\xcf\x3d\xf7\x1c\ \x55\x55\x55\xf4\xf5\xf5\x31\x31\x31\x41\x57\x57\x17\x23\x23\x23\ \x0c\x0f\x0f\xe3\x38\x8e\x29\x84\x30\x8f\x41\x30\xfe\x2a\x10\x08\ \xd4\xcd\xcc\xcc\x20\x84\x60\x68\xdf\x10\x03\x03\x83\x18\xc6\xa1\ \x27\xdf\x1f\x86\x33\x1f\x77\x08\x21\x08\x85\x42\xfe\xff\x3f\x2a\ \x40\x74\x5d\xe7\x73\x9f\xfb\x1c\x5f\xfc\xe2\x17\xb9\xf5\xd6\x5b\ \xd9\xb1\x63\x87\x5f\x75\x91\xcf\xe7\xd1\x75\xdd\xaf\x46\x71\x1c\ \x87\xe1\xe1\x61\x3f\x8a\x9f\x77\x8d\xbd\x79\x49\x3b\x66\x5c\xe0\ \xb6\xb6\xb6\x7f\x5c\xba\x74\x69\x3d\xc0\x8e\x5d\xcf\xe3\x35\xa5\ \x89\x04\x4c\x64\x26\x80\xb4\x34\x3c\x4b\x43\xda\x1a\x42\x48\x5f\ \xff\x48\x29\xc9\xe7\xf3\x94\x4a\x25\x7f\x48\xc2\x2b\x8a\xd4\x6f\ \xbe\xf9\xe6\x17\xe3\x74\x7c\x5b\xa3\x7a\xb5\x43\xa1\x90\x7f\x32\ \x34\x4d\xbb\x72\xe9\xd2\xa5\x17\x0d\x0c\x0c\x34\x1e\x2b\x12\x62\ \x59\x96\xae\x5a\xbc\xc7\xab\xf3\xfc\xf9\x27\x1a\x70\x0f\xa3\xa7\ \x3c\x07\xb2\x5b\xaa\xc9\xef\x89\xa2\x6a\x7b\x67\x67\x67\xc9\x66\ \xb3\x94\x4a\xa5\xc4\x51\xb3\xbd\x63\x63\x63\xf7\x37\x35\x35\x71\ \xe9\xa5\x97\x72\xd3\x4d\x37\x71\xd6\x59\x67\xd1\xda\xda\x8a\x2a\ \xd5\x3f\xef\xbc\xf3\x68\x6f\x6f\x07\xca\xad\xd2\x4b\x96\x2c\x61\ \x72\x72\xd2\x77\x8b\xab\xab\xab\xe9\xe8\xe8\x38\x56\x24\x23\x02\ \x2c\xcc\xe7\xf3\x7a\x32\x99\x2c\x37\x28\x15\x2c\x32\x13\x25\xc4\ \xd0\x32\x3e\xdc\xf6\x45\x4e\x64\x0d\xda\x44\x3b\x6e\xca\x24\x53\ \x4a\x91\x9c\x2b\x33\xe0\xaa\xb7\xe4\xa5\xd4\xf8\xfe\x51\x09\xb1\ \x6d\xbb\xdf\xb2\x2c\xd6\xae\x5d\xcb\xb2\x65\xcb\x18\x1f\x1f\xa7\ \x54\x2a\x31\x37\x37\x47\x73\x73\x33\xe9\x74\x9a\xda\xda\x5a\x52\ \xa9\x14\x93\x93\x93\x54\x57\x57\xa3\xeb\x3a\xaa\x87\xc4\xb6\x6d\ \x4c\xd3\x94\x15\x4e\xc2\x5b\x56\x75\xe5\xf3\xf9\x8f\xfd\xe9\x9f\ \xfe\xe9\x97\x4d\xd3\x04\x29\xc9\xd8\x45\xde\xbd\x68\x39\xa9\x9f\ \x19\xcc\x15\x53\xfc\xc3\xc3\x5f\xc6\xd0\x0d\x34\x43\x20\x58\x80\ \xae\xc1\x82\x46\x9d\xa1\xa1\x21\x1a\x1b\x1b\x29\x16\x8b\x04\x83\ \x41\xe9\x79\x5e\xf8\x15\xd1\xef\x63\x63\x63\x6c\xd8\xb0\x01\xc3\ \x30\xfc\xfc\xb9\x5a\x83\x83\x83\xbe\xc1\x02\x78\xee\xb9\xe7\x30\ \x4d\x93\x4a\xe2\xcd\x75\xdd\xaa\x95\x2b\x57\xde\x35\x35\x35\x35\ \x18\x8f\xc7\xff\xe1\xad\x2a\x21\x9e\xe7\xd5\x29\x16\xbb\x20\x6d\ \xec\x35\x23\x2c\xe8\x89\xe1\xe2\x22\x6d\x70\x27\xa2\x58\x93\x01\ \x9c\xc9\x20\x56\xdc\xf0\xab\xde\x55\x43\x6c\x2a\x95\xa2\xb9\xb9\ \x59\x14\x8b\xc5\xab\xda\xda\xda\x18\x1b\x1b\x7b\xf9\x2a\x4b\xd3\ \x34\x4f\xa9\x9e\x48\x24\x42\x30\x18\xf4\xeb\xb0\x54\xd7\xd4\xe1\ \x35\x58\x6a\x7a\x82\x6a\x03\x03\x42\x3d\x3d\x3d\x57\x01\x7f\x72\ \x0c\xd8\x8f\x72\xff\xa1\x65\x51\x57\x13\xa2\x54\x70\x38\x77\xc1\ \x5f\xf3\xde\x25\x57\x10\x68\xb5\xa8\x7f\x9b\x43\xd5\x79\x09\x4a\ \x79\xfb\xe0\x4c\xc8\xf9\x7a\x2c\x55\xa0\x2e\x84\x08\xbe\x18\x18\ \x47\x94\x90\xaa\xaa\xaa\x7b\xc7\xc6\xc6\xd6\x7f\xf6\xb3\x9f\xfd\ \xf3\x9a\x9a\x1a\x2e\xbd\xf4\x52\x6e\xbb\xed\x36\x92\xc9\x24\x2b\ \x57\xae\xc4\xf3\x3c\x7e\xf9\xcb\x5f\xb2\x72\xe5\x4a\x76\xec\xd8\ \x01\x40\x30\x18\xa4\x58\x2c\x92\xcd\x66\xfd\xc1\x01\xf3\xae\x9e\ \xfb\x56\x54\x5d\xa1\x50\xe8\x2f\xd6\xaf\x5f\x7f\xff\x7c\x25\x8d\ \x74\x5d\x29\xc2\x55\x3a\xde\x2f\x1a\xc8\x08\xc9\x03\xda\x6f\x40\ \x80\xa6\x75\xfa\xef\xa9\xae\xd7\xd8\xbc\x79\x33\xcb\x96\x2d\xf3\ \x5b\xe1\x94\x2a\x3f\x52\xd0\xfc\x47\x01\x99\x9a\x9a\x92\x8b\x16\ \x2d\xb2\x1e\x78\xe0\x01\x3e\xfe\xf1\x8f\x73\xf3\xcd\x37\xd3\xd7\ \xd7\x87\xa6\x69\xc4\xe3\x71\x3f\x25\xb9\x65\xcb\x16\x0a\x85\x02\ \xc9\x64\x92\xe6\xe6\x66\x9f\x7c\x54\xee\xaf\x6d\xdb\x84\xc3\xe1\ \x33\x2e\xbc\xf0\xc2\x67\x06\x06\x06\xfe\x7b\x70\x70\xf0\xd6\xb7\ \x90\xaa\x0a\x29\x9b\x68\x08\x5d\x0c\x9d\xb0\x8b\x77\x9c\x5f\x85\ \xeb\xb9\xd8\x29\x0d\xd2\x11\xdc\xb4\x81\x9b\x34\x29\x0e\x86\x91\ \xae\x00\xb7\xac\xde\x2b\xa7\xd7\x05\x02\x01\x12\x89\xc4\xf3\x86\ \x61\xec\x7b\x45\x6e\xaf\x94\x52\x73\x5d\x97\x2f\x7d\xe9\x4b\x7e\ \xbd\x95\xf2\x16\xa4\x3c\xb4\x5d\x4b\xd3\x34\xa6\xa7\xa7\x7d\xf1\ \x54\xdd\x46\xf3\x11\x6c\x4d\x7d\x7d\xfd\x3b\x6b\x6b\x6b\xf7\xbe\ \x45\x48\xc4\xda\xfa\xfa\xfa\x25\x89\x44\x62\xd1\x7c\xd2\x0d\x5d\ \x6a\xe8\x96\x20\x35\x24\xa9\xd3\x4e\xa4\xb5\xae\x9a\x01\x6f\x3b\ \xa2\x4a\x43\x54\x0b\x72\x2f\x54\xe3\x15\x35\x7f\x22\xc5\xc1\xd9\ \x92\x52\xb5\x32\x7c\x73\x6a\x6a\xea\x99\x57\x04\xc8\xec\xec\xec\ \x57\xb3\xd9\x6c\xe7\x35\xd7\x5c\xf3\xae\x42\xa1\xc0\xbb\xde\xf5\ \x2e\x1e\x78\xe0\x01\x3c\xcf\x63\xc1\x82\x05\x8c\x8f\x8f\x13\x0e\ \x87\x89\xc5\x62\x3c\xf3\xcc\x33\xb4\xb7\xb7\xd3\xd2\xd2\x42\xb1\ \x58\xf4\x49\xb6\xca\x51\x15\x2f\xb7\x4d\xf8\x8d\x5a\xc5\x62\xf1\ \xe3\xa7\x9f\x7e\xfa\x3f\x28\x43\x5e\x92\x16\xc1\x06\x87\xa6\xd9\ \xb7\x23\x9e\x13\xe4\x80\x1c\x0e\x01\x4e\xf5\xdf\xd3\xde\x64\xb0\ \x7b\xf7\x6e\xbf\x15\x43\x55\xe2\xa8\x34\x05\xe5\x39\x8d\x47\xaf\ \xb2\x0c\xc3\x20\x9d\x4e\x6f\x5e\xb8\x70\xe1\xd0\xbe\x7d\xfb\xde\ \xf5\xef\xff\xfe\xef\xf4\xf7\xf7\xb3\x74\xe9\x52\x0c\xc3\xf0\xdb\ \xa3\x0d\xc3\x20\x1a\x8d\x72\xca\x29\xa7\x30\x37\x37\x47\x43\x43\ \xc3\x21\x05\x65\xaa\x49\x74\x9e\x07\xfb\xe0\x25\x97\x5c\x72\xfe\ \xcc\xcc\x8c\xd8\xbe\x7d\x7b\x77\x3a\x9d\x4e\xbc\x59\x40\xa8\xb4\ \x6d\x9e\xe7\x99\xf9\x7c\x1e\x21\x04\x79\xb7\x04\xe7\x1e\x60\xf1\ \xb2\x30\xd2\x03\x69\xcf\x47\xe4\x96\x86\x3d\x6d\x92\x7a\xbc\x0e\ \x29\x5c\xbf\xa1\x47\x1d\xc0\x64\x32\x49\x30\x18\x44\xd3\x34\x19\ \x08\x04\x84\x65\x59\xe6\x2b\x02\xa4\x22\x12\x17\x7d\x7d\x7d\xac\ \x5b\xb7\xce\x37\x50\x87\x97\x8d\x2a\xf5\x25\x84\xe0\xd7\xbf\xfe\ \xf5\xc1\x21\x65\x9a\x46\xb1\x58\xf4\x01\x11\x42\x84\x0d\xc3\x08\ \xd7\xd6\xd6\x62\x59\xd6\x9b\x8a\x16\x8e\xc7\xe3\x9c\x72\xca\x29\ \xff\xa7\xb9\xb9\xb9\xb3\x54\x2a\x75\x64\xd2\x69\xf0\x34\x1c\xcf\ \xc3\x78\xb2\x96\xa1\xcd\x82\xf9\x56\xe7\x0a\x5e\xd6\x25\x3b\x33\ \x4d\x75\x4d\x95\xdf\x61\xe6\xcf\x1b\xb6\x6d\x42\xa1\x10\xba\xae\ \x8b\x4d\x9b\x36\x9d\x58\x5f\x5f\x3f\xf1\x8a\x00\x51\xab\x54\x2a\ \x4d\x99\xa6\x39\xaa\xeb\x7a\x7b\x53\x53\x13\x86\x61\xf8\xdc\x8c\ \x9a\x5f\x15\x0a\x85\x7c\x23\xaf\x8a\xe9\xd4\x00\x80\xd9\xd9\x59\ \x7f\xca\x8e\x9a\xdb\xeb\x38\x0e\x5d\x5d\x5d\xd7\x04\x02\x81\xec\ \xc4\xc4\xc4\xf3\x53\x53\x53\x4f\xbe\xd1\x52\x31\xef\x59\x5e\xb0\ \x60\xc1\x82\x7a\x80\x84\x9d\xa6\x7a\xcd\x2c\xf5\xd5\x21\x9c\xc9\ \x30\xce\x64\x08\x59\xd2\xf1\x4a\xe5\xb9\xbe\x78\xe5\xc3\x18\x6d\ \x29\x77\x07\x54\x4e\x5d\x55\xd9\x53\x55\x74\x2e\xa5\xdc\x37\x33\ \x33\x73\xc4\xfb\x79\x49\x95\x85\xf9\x7c\xfe\xbf\xc7\xc7\xc7\x7f\ \xdc\xd4\xd4\xf4\x3f\xef\xbe\xfb\x6e\x56\xad\x5a\xe5\xab\xa3\x0f\ \x7d\xe8\x43\x4c\x4e\x4e\xb2\x7c\xf9\x72\xba\xba\xba\x98\x99\x99\ \x61\xed\xda\xb5\xac\x5e\xbd\xda\x1f\x4a\xa6\x5a\xdb\x22\x91\x88\ \x3f\x24\xcc\xf3\x3c\x5a\x5b\x5b\xcf\xef\xea\xea\x7a\xdf\xee\xdd\ \xbb\xf3\xc5\x62\xf1\x0d\xc9\x2e\x66\xb3\x59\x5a\x5b\x5b\x3b\xab\ \xaa\xaa\xde\x56\x5d\x5d\xdd\x68\x9a\xe6\x47\xa5\x94\xc1\x42\xa1\ \xc0\xae\xe4\x10\x4b\x4f\x35\x28\x16\x2c\x1c\x23\x87\x57\x9b\xc2\ \x6b\x48\x22\x9b\x67\x29\x58\x79\x72\xe3\xf8\x55\xed\x2a\x05\x91\ \x4e\xa7\x7d\xb2\x55\x0d\xda\x89\xc5\x62\x0c\x0f\x0f\xbf\x24\xcf\ \xf2\x65\x15\x50\x85\x42\x21\xae\xbd\xf6\x5a\x6a\x6a\x6a\x18\x1f\ \x1f\x47\x4a\xc9\xee\xdd\xbb\xf1\x3c\x8f\x7d\xfb\xf6\xf9\x0d\x29\ \x3f\xfd\xe9\x4f\x7d\x35\xa6\x69\x9a\x6f\x6f\x94\x28\x2b\x5e\xa7\ \x62\x60\x66\x8d\xa6\x69\x4b\x01\xb1\x70\xe1\xc2\xf8\xe8\xe8\x68\ \xe6\xf5\x04\x25\x14\x0a\xdd\xb2\x6a\xd5\xaa\xbf\x2a\x47\xca\x1a\ \x33\xcc\xb1\xa0\x5d\x67\xdd\x64\x0f\xf6\x6f\xcc\x72\x4b\x9a\x06\ \x68\x07\x35\x6c\x58\xc0\xc4\xec\x10\x4d\x4d\x4d\xfe\x58\xc0\xca\ \x31\xb8\xaa\xa0\x21\x9f\xcf\x3f\x3e\x3d\x3d\x7d\xdb\x4b\xbd\x97\ \x97\x05\x88\xda\xd4\x44\x22\x21\x3d\xcf\x13\xf3\x5c\x15\xba\xae\ \x53\x2c\x16\x0f\xe9\x51\x57\x34\x8b\x4a\x68\x25\x93\x49\x66\x66\ \x66\xa8\xa9\xa9\xc1\xb2\x2c\x4c\xd3\x54\x80\xc8\xce\xce\xce\x8f\ \x2c\x59\xb2\xe4\x23\xba\xae\xf3\xab\x5f\xfd\xea\x2a\xe0\xee\xd7\ \x41\x55\xb5\xa5\xd3\xe9\xf3\x3c\xcf\x2b\xe5\x72\xb9\xe5\xaa\x63\ \x38\x65\xe7\x09\xaf\x4c\xa1\x05\x83\xd0\x25\x91\x96\xc0\x4d\x99\ \x38\x49\x03\x37\x69\x10\xf6\x6a\xa9\xae\xa9\x46\x7a\xd2\xb7\x8b\ \xba\xae\xfb\x83\xdc\x94\x33\x54\x31\x28\xe1\xc0\xe8\xe8\xe8\x6f\ \x5f\x0b\x40\xe2\x5b\xb7\x6e\x0d\x06\x83\xc1\x5b\x3e\xf1\x89\x4f\ \xdc\x78\xf6\xd9\x67\x73\xfe\xf9\xe7\xf3\xed\x6f\x7f\x9b\xed\xbb\ \x25\x5f\xa5\x00\x00\x09\x83\x49\x44\x41\x54\xdb\xb7\xf3\x8e\x77\ \xbc\x83\x74\x3a\xcd\xe0\xe0\x20\x35\x35\x35\x3e\xaf\xb5\x7a\xf5\ \x6a\x9e\x7b\xee\x39\x1f\xac\xc3\x67\xf8\x5a\x96\x25\x94\x73\x30\ \xdf\x22\xd7\xd1\xdd\xdd\x7d\x86\x94\x92\x99\x99\x99\x3d\x13\x13\ \x13\xaf\x49\x23\x7b\xa1\x50\xf8\xcb\xcb\x2e\xbb\xec\x9f\x55\xbb\ \x72\x51\x2b\x12\xad\x13\x60\xe9\x78\x25\x0d\x99\x2e\xdb\x88\xb2\ \x62\x97\xc8\x06\x30\x9a\x0d\xb6\xef\xd8\x46\xc8\x3a\x98\x62\x50\ \x87\x2b\x99\x4c\x22\x84\xf0\x0f\x9c\x65\x59\x04\x83\x41\x6c\xdb\ \x7e\x59\x73\x46\x5e\x0e\x20\x92\xf2\xcf\x4d\x38\xdb\xb7\x6f\x47\ \x4a\xc9\x8f\x7f\xfc\x63\xa6\xa7\xa7\xf1\x3c\x8f\x07\x1e\x78\xc0\ \x4f\x5e\x55\x8e\xca\xdb\xb4\x69\x93\x5f\xfe\xa2\x4e\x4e\xa1\x50\ \x38\xc4\x45\xac\x9c\xd5\x78\xea\xa9\xa7\xde\xd6\xd1\xd1\x71\x5b\ \x24\x12\xe1\xe1\x87\x1f\x5e\x05\x6c\x7d\x15\xa5\xe2\x03\xc0\x69\ \xe5\xbd\x74\xdf\xbd\x73\xe7\xce\xf2\xc8\x0c\xcf\x41\x9c\x90\xa6\ \xa6\x74\xa8\x57\x6a\x27\x75\xec\xf1\x20\x26\x21\x9a\x9b\x9b\x39\ \xfc\xc7\x04\x0e\x3f\x5c\xca\x33\x8d\xc5\x62\x64\xb3\x59\x06\x07\ \x07\xfb\x75\x5d\x1f\x78\xad\x00\xf1\x1d\x81\x50\x28\xc4\xb6\x6d\ \xdb\xfc\x69\xa4\xaa\x5d\x41\x75\x54\x55\x26\xf2\x95\x64\xa8\xea\ \x8b\x5c\x2e\x47\xb1\x58\xf4\xd9\xe3\x4a\xcf\x4b\x4d\x11\x4d\xa7\ \xd3\x78\x9e\x47\x47\x47\xc7\x7f\x9e\x74\xd2\x49\x45\xd7\x75\xf5\ \xde\xde\xde\x3b\xe2\xf1\xf8\xd7\x5e\xce\x8d\x1e\x36\xce\x96\x6c\ \x36\x7b\xcd\x65\x97\x5d\x76\x61\x36\x9b\x45\x08\x41\xa2\x76\x5c\ \x76\x2e\x33\x85\x15\x0f\xe3\xcc\x04\x91\x19\xd3\xf7\x68\xa5\xe7\ \x21\x35\x49\x78\x69\x98\x8d\x9b\x36\x52\x5b\x5b\xeb\x03\x52\x39\ \xe4\x53\x4d\xe9\x56\x71\x57\x30\x78\x70\x5c\xfa\xf4\xf4\xf4\xb2\ \x97\xcb\xdd\xbd\x6c\x40\x74\x5d\xbf\xfb\xc9\x27\x9f\x7c\x4a\xd7\ \xf5\x2b\x2f\xba\xe8\xa2\xcb\xd6\xae\x5d\x4b\x5b\x5b\x1b\x9b\x36\ \x6d\x22\x9d\x4e\x93\x4c\x26\x99\x9b\x9b\x43\xd7\x75\x4e\x38\xe1\ \x04\x86\x87\x87\x99\x98\x98\xe0\xf4\xd3\x4f\xe7\x85\x17\x5e\x38\ \x04\x34\xdb\xb6\xfd\x21\x36\xa5\x52\x89\x60\x30\xe8\x7f\x61\xdb\ \xb6\xa9\xab\xab\xeb\x54\x3f\xfe\xb2\x6b\xd7\xae\x75\xe1\x70\x78\ \x06\xd0\x82\xc1\x60\x21\x99\x4c\x3e\x70\xa4\x7b\x9d\x9c\x9c\xe4\ \xe4\x93\x4f\x7e\x7c\xd1\xa2\x45\x6b\x95\x5d\xdb\x37\xb6\x57\x06\ \x82\x9a\x90\x05\x03\x7d\x26\x22\x0e\xf4\x83\xd0\x6c\x84\x66\xe3\ \x7a\xae\x1f\x3f\x00\xd4\xd4\xd4\xa0\xe9\x07\x8b\x3b\x2a\x01\x51\ \x01\xaf\x2a\x5c\x38\xf1\xc4\x13\x89\xc7\xe3\x94\x4a\x25\xaa\xaa\ \xaa\x0e\x99\x52\xf1\x72\x88\xd4\x97\x0d\xc8\xdc\xdc\xdc\x20\x30\ \x58\x53\x53\x73\xd6\xce\x9d\x3b\x59\xbe\x7c\x39\x03\x03\x03\xfe\ \x54\x4f\x25\xca\xae\xeb\x32\x36\x36\xe6\x73\x5d\x3b\x76\xec\xf0\ \xdb\xe0\x54\x10\x39\x37\x37\xc7\xe1\xe3\x65\x2b\xb8\x2f\x7f\x13\ \x00\xd9\xdd\xdd\x7d\xc9\x8a\x15\x2b\x2e\x01\xd8\xbf\x7f\x7f\x7e\ \x74\x74\xb4\x65\x5e\x45\xe8\x53\x53\x53\x4f\xba\xae\x1b\x9f\xe7\ \x8d\x16\xb5\xb5\xb5\x6d\xac\x2c\xd9\xac\xdc\x10\xe9\x49\xa1\xa4\ \x40\x49\x29\xc0\xf4\xf4\x34\x3d\x3d\x3d\x7e\x2c\x31\x3b\x3b\x5b\ \xe6\xaf\xe6\x27\x53\x54\x8e\x16\x51\x80\x54\xd2\x22\x4b\x96\x2c\ \x61\x7a\x7a\x9a\x52\xa9\x34\x37\x35\x35\x35\x52\x2c\x16\x9d\xa3\ \x51\xab\xaf\xa8\x6f\xa0\xad\xad\x8d\x8d\x1b\x37\x02\xfc\xc1\x59\ \x1e\x55\x55\x55\x87\xe7\x57\x08\x85\x42\xb8\xae\xcb\xd4\xd4\x94\ \x1f\xd9\x2b\x5d\xac\x86\x84\x29\x09\x51\x7f\x03\x22\x97\xcb\x31\ \x31\x31\xa1\xf4\x74\x64\xc5\x8a\x15\x5f\x57\xc4\xdd\xd6\xad\x5b\ \xa9\xae\xae\xf6\x83\xd0\xe9\xe9\xe9\x3f\x58\xb2\xe9\x38\x0e\x17\ \x5e\x78\xa1\xef\x11\x8d\x8f\x8f\xd3\xd8\xd8\xe8\xdf\xbf\x72\x5d\ \x95\x3a\x52\x3f\xb1\xa1\xa6\xe2\x29\x57\x5d\x55\x8e\xa8\x61\x97\ \xba\xae\x33\x32\x32\xa2\x00\x7a\x78\xf7\xee\xdd\x97\x1f\xed\x9e\ \x1e\x35\x20\x9e\xe7\x7d\xed\xd9\x67\x9f\xfd\xb1\x65\x59\x2b\x7b\ \x7a\x7a\xee\xbd\xf5\xd6\x5b\x69\x6b\x6b\xe3\x67\x3f\xfb\x19\x3b\ \x76\xec\x40\x08\x41\x36\x9b\x65\xd9\xb2\x65\xf4\xf6\xf6\xfa\xcd\ \x3d\x8d\x8d\x8d\xec\xdb\xb7\xcf\xd7\xbb\x8a\xda\x3e\x3c\xd2\x55\ \x29\x60\xe5\x4e\xab\x0d\x52\x41\xa6\xda\x14\x29\x25\xad\xad\xad\ \xb4\xb5\xb5\x21\x84\x60\x72\x72\x92\xd6\xd6\x56\x3f\x0e\xd8\xbb\ \x77\xaf\x9f\xd7\xdf\xb5\x6b\x97\xcf\xbf\xa9\x93\x7f\xb8\x81\x56\ \xb4\x90\xf2\x9e\x0e\xf7\x0c\xd5\xf5\x01\x9f\x48\x1d\x1c\x1c\x64\ \x6e\x6e\x8e\xaa\xaa\x2a\x2a\x87\x76\xbe\xae\x80\x64\x32\x99\x29\ \x60\x4a\xd7\xf5\x2a\x4d\xd3\xf8\xdc\xe7\x3e\x47\x43\x43\x03\x89\ \x44\xc2\xff\x52\x52\x4a\x26\x26\x26\x0e\xa1\xeb\x15\x58\xb1\x58\ \x8c\xee\xee\x6e\xe2\xf1\xb8\xaf\x12\x2a\x87\x6b\xaa\x7f\x4a\x8a\ \x94\xe1\xaf\xcc\xb1\x54\x66\xf2\x14\x11\xa8\x0c\xad\x72\x34\x14\ \xeb\xac\xdc\x54\xc5\x38\x2b\xf0\xd5\xe7\xa8\x83\xa0\x3c\xc2\xca\ \xc2\x84\xf9\xa1\x39\xfe\xf7\x50\x0e\xcc\xb2\x65\xcb\xe8\xeb\xeb\ \xc3\x30\x0c\xe2\xf1\xf8\x1d\x42\x08\xaf\x50\x28\x3c\xf3\x86\x00\ \x52\xa1\x86\x9c\x52\xa9\x54\x0c\x87\xc3\xc5\x64\x32\x19\x8d\x46\ \xa3\x66\x30\x18\x44\xd7\x75\x7f\x34\xac\x3a\x65\xca\xb0\xaa\x4d\ \x53\xd5\x8f\x2a\x9a\xd7\x75\xdd\x4f\xff\x56\x66\xd6\x54\x4f\xb8\ \x92\x10\x21\x84\x2f\x21\x95\x3a\x5e\x01\xa7\x1c\x05\xe5\xc1\xa9\ \x4d\x57\xaa\x47\x01\xa2\xc6\xc1\x56\x3e\xa7\x0e\x40\x25\x20\x95\ \x3f\xb7\x51\x55\x55\xe5\x17\x5c\xff\xf6\xb7\xbf\x25\x12\x89\x10\ \x89\x44\xd8\xb7\x6f\x9f\x3f\x33\xb2\xa9\xa9\x89\xa9\xa9\xa9\x37\ \x06\x10\xdb\xb6\x9f\xdb\xbe\x7d\x7b\x18\xa0\xbe\xbe\xfe\x37\xdd\ \xdd\xdd\xe7\x7d\xec\x63\x1f\xe3\xc9\x27\x9f\x64\x60\x60\xc0\x4f\ \x61\x2a\x43\xaf\x36\x44\xd7\x75\xb2\xd9\xac\xcf\xf7\xd4\xd4\xd4\ \xf8\x06\x5f\xc5\x33\x2a\xda\xad\x54\x1b\x2a\xd9\xa3\x00\x3b\x7c\ \xde\x7c\xa5\x24\x05\x02\x01\x7f\x63\xd5\xa6\x2b\xe6\xf9\x70\x8f\ \x49\x5d\x4f\x79\x81\x4a\x22\x54\x1b\x9f\xca\x8b\x74\x76\x76\xb2\ \x7c\xf9\x72\x1e\x7b\xec\x31\x3c\xcf\xa3\xa5\xa5\xe5\xff\xe9\x1b\ \x3c\x5a\x30\x5e\x15\x40\x0e\xcb\x2e\x8a\xba\xba\x3a\xbe\xfe\xf5\ \xaf\x2b\xf1\x9e\xaf\xda\x2f\x9f\x3a\xd3\x34\xfd\xaa\x14\xb5\x02\ \x81\x00\x96\x65\x11\x8d\x46\xfd\xd3\xaf\x3c\x17\x55\x90\x66\xcc\ \xff\x20\x8b\xda\x74\xb5\xb9\xea\xfd\x95\x9b\x5e\x19\x6c\x2a\x37\ \xfa\x70\x3b\xa1\x24\x44\x49\x9d\x7a\x4e\xc5\x27\x6a\xf3\x95\x9d\ \x33\x0c\x83\x70\x38\x8c\xe3\x38\xc4\xe3\x71\x9f\x3c\xcc\x66\xb3\ \x0f\x0d\x0c\x0c\xfc\x4f\xf3\xf0\x2f\xf5\x46\xaa\xac\xc3\xd4\xd7\ \x1d\xbf\xf9\xcd\x6f\x1e\x14\x42\xc8\x40\x20\xf0\xc5\xf6\xf6\xf6\ \xea\x8b\x2f\xbe\x98\x1d\x3b\x76\xf8\x11\xbd\x3a\x89\xea\x34\x3a\ \x8e\x43\x6d\x6d\xad\x5f\xf7\x1a\x0a\x85\x58\xba\x74\x29\xd3\xd3\ \xd3\x87\x8c\x99\x2d\x16\x8b\xbe\xc4\xd4\xd6\xd6\x1e\x12\x78\x56\ \x06\x6b\x95\x12\x52\x59\xf5\xa1\x40\x54\xaf\x53\x00\xab\xc1\x6b\ \xa6\x69\xfa\x41\x9e\x72\xcf\x55\xb0\x17\x0e\x87\x59\xbd\x7a\x35\ \xdb\xb6\x6d\xf3\x55\x5b\x5d\x5d\x1d\x85\x42\x21\x93\xcb\xe5\x5e\ \xd5\x5f\x00\x7d\x55\x01\x99\x99\x99\xf9\x69\x45\x94\xfc\xbf\x63\ \xb1\x58\xf5\x43\x0f\x3d\xe4\x7b\x2b\x95\xbf\xb0\x73\x98\xc7\x46\ \x2a\x95\xa2\xaa\xaa\x8a\x33\xcf\x3c\x93\xfd\xfb\xf7\xfb\x9b\x52\ \x39\xa5\x4e\x01\xe2\xba\x2e\xa9\x54\x0a\x28\xf7\xb0\x28\x6f\x4c\ \x6d\xb4\x02\xa4\x72\x22\xb5\x02\x24\x9b\xcd\x1e\x32\x1d\x55\x1d\ \x8c\xea\xea\xea\x43\xae\x57\x5d\x5d\x4d\x43\x43\x03\x73\x73\x73\ \xa4\xd3\x69\xa2\xd1\x28\xae\xeb\x92\xcb\xe5\x0e\xec\xdd\xbb\xf7\ \x59\x21\x84\x0c\x06\x83\xbf\x79\xb5\x39\xb6\xd7\xac\x7f\xd9\x75\ \xdd\xe1\xfe\xfe\xfe\x1c\xe0\x09\x21\x4e\xd0\x75\xdd\xac\xae\xae\ \xf6\x0d\x7d\xc5\x80\x9a\x43\x0c\x78\x22\x91\xa0\xbe\xbe\x1e\xdb\ \xb6\x89\xc5\x62\x2c\x5d\xba\x94\xdd\xbb\x77\xfb\xaa\x43\xa9\x1b\ \x15\x67\x08\x21\xfc\x71\xe0\x6a\x38\x65\x65\x85\x79\x3e\x9f\xf7\ \xd5\x92\x4a\x03\x54\xb2\xd1\x4a\xdb\x68\x9a\x46\x4d\x4d\x8d\xff\ \x39\xea\xf5\x81\x40\x00\xd7\x75\x79\xea\xa9\xa7\x30\x0c\x83\x50\ \x28\xf4\x44\x2a\x95\xba\xfc\xb5\xda\xb7\xd7\x0c\x90\x44\x22\xe1\ \xcf\xea\xee\xec\xec\x1c\xe8\xec\xec\x5c\xf2\x12\xed\x90\x4f\x3f\ \x78\x9e\xc7\xc2\x85\x0b\x19\x1c\x1c\x24\x12\x89\xf8\x53\xa6\xfd\ \xde\xbe\x0a\x1a\x46\xd9\x1d\x65\xaf\x14\x58\x87\x4f\xd6\x56\x91\ \xb9\xa6\x69\xbe\x87\xa7\x24\xa8\xb3\xb3\x13\xc3\x30\x18\x1c\x1c\ \xf4\x27\x1f\xcd\x57\xce\xa4\x67\x67\x67\x9f\x13\x42\x78\x96\x65\ \x6d\x7e\x2d\xd3\x02\xaf\x4b\x87\x7f\x2e\x97\xfb\xfe\xf8\xf8\xf8\ \x02\xca\x6d\x6e\xef\x0b\x87\xc3\xcb\x8e\xd4\xaf\x3d\x33\x33\x43\ \x20\x10\xe0\x99\x67\x9e\xf1\x37\xf0\xec\xb3\xcf\x66\xe3\xc6\x8d\ \x68\x9a\xe6\xf7\xa8\x24\x12\x09\xbf\x92\x52\xd9\x0a\xd3\x34\x0f\ \x99\xbc\x1d\x0c\x06\x7d\x4f\xaf\xb5\xb5\x95\xd9\xd9\xd9\x72\xea\ \x35\x1a\x65\xe9\xd2\xa5\x0c\x0f\x0f\x93\xcb\xe5\xd0\x34\x4d\xfd\ \x57\x0a\x21\x84\xe3\x38\xaa\x23\x6c\xdf\xd0\xd0\xd0\xf9\x2f\x96\ \xf6\x7d\x4b\x01\x32\x3f\x90\xfe\x0b\x2a\x9f\x7c\xc2\x09\x27\xb4\ \x2e\x58\xb0\x60\x59\x45\xe4\x2b\xc5\x1f\xe0\x39\x2a\xd5\x98\x8a\ \x69\x2a\xf3\xf8\xd1\x68\xd4\x1f\x31\x58\x5f\x5f\xcf\xf2\xe5\xcb\ \xd9\xb3\x67\x0f\x75\x75\x75\xe4\x72\x39\x82\xc1\x20\xb9\x5c\x8e\ \x13\x4f\x3c\x11\x21\x04\xa9\x54\x8a\x44\x22\x41\x47\x47\x07\xef\ \x7c\xe7\x3b\xf9\xf5\xaf\x7f\x4d\xa1\x50\xa0\xa1\xa1\x81\xde\xde\ \x5e\x34\x4d\x63\xff\xfe\xfd\x4a\x8d\x89\xc1\xc1\xc1\x6f\x39\x8e\ \xb3\x0f\x70\x23\x91\xc8\xc0\xe1\xc5\x10\xaf\xd5\x7a\xdd\x67\xae\ \x6b\x9a\xb6\x40\xd3\xb4\xc8\xfc\xe3\x0f\x76\x77\x77\x7f\xe5\x48\ \xf3\x3f\x94\x3e\x57\x76\x27\x10\x08\xf8\x86\xd9\xb2\xca\x3f\xb3\ \x7a\xd5\x55\x57\x71\xdf\x7d\xf7\x11\x0e\x87\xa9\xad\xad\x65\x7a\ \x7a\xda\x9f\x3e\xb1\x61\xc3\x06\x7e\xfe\xf3\x9f\x33\x37\x37\x47\ \x57\x57\x17\xdd\xdd\xdd\x3c\xfe\xf8\xe3\xaa\x3a\xdf\x57\x6d\xea\ \xf7\x15\x5d\xd7\x25\x93\xc9\x9c\x1b\x8f\xc7\x1f\x7f\xbd\xf7\xe7\ \x0d\x1d\x82\x1f\x0e\x87\x4f\x6b\x6c\x6c\xbc\x4c\xd7\x75\x07\x20\ \x1a\x8d\x7e\x2a\x18\x0c\x1e\x71\xae\xaf\x9a\x60\xa7\xd4\xd3\xd8\ \xd8\x18\xd5\xd5\xd5\x38\x8e\xe3\xe7\x24\x14\xf1\x37\x31\x31\x41\ \x5d\x5d\x9d\x3f\x73\x38\x16\x8b\xf9\x81\x61\xa1\x50\xf0\x6d\xca\ \xfc\xe8\xf3\x43\x66\xd1\xbf\x11\xe3\x6c\xdf\xd0\x29\x31\x85\x42\ \x61\xc7\xc8\xc8\xc8\x8e\x0a\xdd\xec\x45\xa3\xd1\x2a\x29\xa5\xb4\ \x6d\xbb\xcb\x30\x8c\x3f\x3b\x52\xa3\xbd\xb2\x05\xca\x63\x2a\x16\ \x8b\x7e\x90\xa9\x62\x09\xf5\x6b\x9c\xd9\x6c\x16\xcf\xf3\x76\x4b\ \x29\x75\xd7\x75\xdd\x64\x32\xf9\xf7\xe3\xe3\xe3\x3f\x79\xb1\xcf\ \x7e\x23\xc6\xd9\xbe\xa1\x12\x72\x24\xed\x06\xf8\x9c\x7e\x2c\x16\ \xbb\x5a\xd3\xb4\xd8\x8b\x81\xa2\x96\x69\x9a\x3e\x95\x21\x84\x28\ \x00\x7b\x8b\xc5\x62\x56\x4a\x29\x63\xb1\x58\x66\x76\x76\x76\xfb\ \x61\x69\xdd\x63\x79\x04\xc8\xf1\x75\x7c\x1d\x5f\xc7\xd7\xf1\x75\ \x7c\x1d\x5f\xc7\xd7\xf1\x05\xc0\xff\x05\xf4\xe6\xb0\x9e\xc6\x6e\ \xd0\xb8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x7c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x0e\xa7\xa1\x6f\x29\x00\x00\x02\xfc\x49\x44\x41\x54\x78\ \xda\xed\xd6\xbf\x6f\x1c\x45\x18\xc6\xf1\xef\xcc\xed\xda\xb1\x0f\ \x9b\x93\x85\x90\x2d\xb0\x38\x12\x09\x77\x6e\xac\x14\x6e\x10\xe0\ \x8b\x90\x4b\x37\x14\xc8\x7f\x03\xfc\x01\x54\x27\x51\x42\x81\x28\ \xdd\xd0\x90\x36\x6d\x30\x8e\x70\x2a\x44\x44\x94\x20\x17\xc8\x0e\ \x06\x64\x90\xec\xe4\x02\xde\xf3\xde\x9e\xf7\xd7\xec\x50\x1c\x39\ \x89\x32\x52\xae\x58\xf1\x7c\xa4\xed\x76\xa4\x9d\x7d\xe7\x79\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\ \x11\x79\x31\x4c\x9d\x3e\x76\x71\x71\xf1\x13\x63\x4c\xf8\x9c\xcb\ \xa6\x80\xcf\x4e\x4f\x4f\xff\x56\x41\x5e\xb0\xf5\xf5\x75\xdf\x6e\ \xb7\xf1\xde\x53\x51\x51\xbe\xf9\x94\x97\xae\x4c\x53\x3e\x99\xc6\ \x9d\xcd\x8c\x5e\xb2\x60\xac\x1f\xef\x2c\x8e\x63\xf6\xf6\xf6\x56\ \xb2\x2c\x3b\xaa\xc3\x1e\x83\xba\x45\x3a\x4d\x53\x0c\x70\x3f\xff\ \x85\xce\xf5\x19\x1a\xe1\x05\x99\xbb\xa4\x19\x5e\x81\x24\xa0\x3c\ \x9f\x22\xfb\x75\x86\xe1\xe1\x2c\x00\x65\x59\x62\x8c\xf1\x75\xd9\ \x9f\xad\x53\x31\xaa\xaa\x22\xcf\x73\xf2\xbc\xc0\x53\x61\x8d\xe1\ \xaa\x79\x9f\xcf\x3b\x77\x78\xe7\xf5\x0f\x98\xe7\x1a\x8b\x57\x5b\ \xd8\x57\x32\x8a\xa2\xa0\x28\x0a\x9c\x73\xb5\x3a\x70\xb5\x4a\x88\ \x73\x8e\x3c\xcf\xc1\x8f\x26\xc3\x60\x90\xf2\xe1\x7b\x1f\xf3\xd1\ \xad\x1b\x7c\xbd\xfd\x90\x77\x5f\x3b\xe3\x24\x7d\xc0\x17\xf7\x3f\ \x25\xcf\x73\xbc\xf7\xcf\x12\xa2\x82\x4c\x82\xf7\x9e\x2c\xcb\x30\ \x18\x98\x82\xe1\xc0\x31\xd7\x6c\x92\x57\x29\x00\x87\x7f\x1e\xf2\ \x63\x72\x0b\xe3\x2d\x59\x96\x8d\x53\xa5\x82\x4c\xb8\x65\x19\x00\ \x0f\x73\xf3\x53\x0c\x86\x43\xa6\x1b\xa3\x79\x51\xe1\x29\x5d\x81\ \xf7\x8c\x92\xf4\xec\xe6\x52\xa3\x82\xd8\x3a\x26\x24\xcb\x72\x2a\ \x3c\x2f\xcf\x37\xb9\xfd\xf3\x4d\xba\x37\x6e\xf2\xe0\xf4\x2e\xf7\ \xfe\xf8\x96\xb7\xdf\xd8\xa2\x28\xf3\x7f\xdf\xcb\xd4\xb2\x26\xa9\ \x28\x0a\xe2\x38\xc6\x1a\x4b\x32\x57\x71\x99\x35\xf9\xc1\x7d\x45\ \x75\x6f\x8e\x57\xaf\x65\x1c\x97\xdf\xf0\xfb\x4f\x7b\x44\x8f\x13\ \xce\xcf\x13\xbc\xf7\xcc\xce\xce\x62\xad\x55\x41\x26\x16\x69\x6b\ \x31\x18\x4c\x05\x8d\x69\x43\xc3\x86\x7c\xf7\xdb\x97\x5c\xdc\x31\ \x3c\x79\x94\x90\xfe\xe5\x48\x1e\x3b\x8c\x31\xb5\x4a\x46\x6d\x0b\ \xe2\x9c\x63\x61\x61\x81\xf0\x6c\xc8\xf7\xdd\x0b\x2e\x9f\x56\x18\ \x03\xc6\x8e\x1e\x6f\x0c\x41\x10\x8c\x67\x4e\x9d\xd2\x51\xcb\x5b\ \x56\xb7\xdb\x65\x63\x63\x83\xfd\xfd\x7d\x0e\x0e\x0e\xe8\xf5\x7a\ \x94\x65\x49\x55\x55\x44\x51\x44\xab\xd5\x22\x49\x12\x7a\xbd\x1e\ \x8d\x46\x83\x7e\xbf\x8f\xf7\xbe\x3e\x1d\xa0\x6e\x33\xa4\xdd\x6e\ \x73\x72\x72\xc2\xe6\xe6\x26\x51\x14\xb1\xb4\xb4\xc4\xda\xda\x1a\ \xdb\xdb\xdb\x78\xef\x69\xb5\x5a\xac\xac\xac\xd0\xe9\x74\x28\xcb\ \x92\x30\x0c\x6b\x95\x90\x5a\x35\xd9\xd5\xd5\x55\xbf\xbc\xbc\xcc\ \xd6\xd6\x16\xbb\xbb\xbb\xa3\x01\x6f\xed\xf8\xc7\x47\x51\x44\x18\ \x86\x78\xef\x49\xd3\x14\xe7\x1c\xce\x39\x8e\x8e\x8e\xde\x1a\x0c\ \x06\x8f\xd4\xb2\x26\xa0\xdf\xef\xb3\xb3\xb3\x33\x9e\x13\xff\x39\ \x5d\xc6\x50\x14\xc5\x68\x63\x41\x40\x10\x04\x14\x45\xa1\x6b\xef\ \xa4\x1c\x1f\x1f\x3f\x04\xca\xe7\x59\x13\x86\xe1\x4c\xb3\xd9\x4c\ \xe3\x38\x46\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\ \x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\ \x44\x44\x44\xfe\x4f\xfe\x01\xd1\xc0\x51\x25\xbd\x25\x7f\x60\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x7e\xd7\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\ \x01\x00\x00\xff\xdb\x00\x43\x00\x04\x02\x03\x03\x03\x02\x04\x03\ \x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ \x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ \x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ \x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00\x43\x01\x04\x04\x04\ \x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ \x10\x54\x69\x6d\x65\x20\x66\x6f\x72\x20\x4c\x75\x6e\x63\x68\xff\ \xc0\x00\x11\x08\x02\x00\x02\x00\x03\x01\x22\x00\x02\x11\x01\x03\ \x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x02\x03\x01\x04\x05\x00\x06\x08\xff\ \xc4\x00\x44\x10\x00\x02\x01\x02\x04\x04\x04\x03\x07\x02\x04\x05\ \x04\x01\x05\x01\x01\x02\x03\x00\x11\x04\x12\x21\x31\x05\x41\x51\ \x61\x13\x22\x32\x71\x42\x81\x91\x14\x23\x52\xa1\xb1\xc1\xd1\x62\ \xe1\x06\x33\x72\xf0\x24\x43\x82\x92\xf1\x15\x53\x73\xa2\x25\x34\ \x35\x54\x63\x93\xa3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\ \xff\xc4\x00\x21\x11\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\ \x01\x00\x00\x00\x00\x00\x01\x11\x02\x21\x31\x41\x12\x51\x22\x32\ \x61\x71\x42\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\ \x00\xfa\x73\xfc\x3c\xe0\xa6\x23\x07\x32\x67\x92\x16\xcc\xb9\xc5\ \xcd\xbf\x5a\xb1\x32\xca\xaa\x5e\x17\xce\xa0\x7a\x1f\x5b\x0e\xd5\ \x9f\x23\xb2\xc9\xf6\x98\x6e\x1c\xa8\x0c\x47\x50\x74\x3f\x3a\xbd\ \x82\xc5\x26\x29\x43\x0b\x09\x47\xa9\x3a\xfb\x57\xca\x97\xe3\xd5\ \x7f\xae\x86\x48\xa6\x8b\x35\x95\x18\x1b\x10\x4f\xe9\x44\x6e\x0d\ \x8d\xfe\xa6\xaa\x4e\xf2\x61\x84\xb0\xe5\xf2\x48\x6e\x1a\x9b\x83\ \x90\xcb\x85\xbb\x6a\x50\xe5\xbf\x5a\x74\x58\x6f\x97\xa0\xa9\x0a\ \x0d\xb5\x00\x93\x61\xae\xe6\x80\x9a\xe6\xf3\x44\xc8\x5b\x2d\xfd\ \x27\xa1\xa8\x0d\x49\xd8\xb1\xa6\x21\x1c\xd4\x30\x3b\x83\xad\xe9\ \x7e\x73\x1a\x99\x4a\x99\x2d\xe6\x20\xef\xd0\xd0\x7d\xe6\x6b\xf4\ \xfa\x54\x8d\xc3\x48\x22\x95\xf0\xb9\xf2\xe5\x6f\x21\xd8\x51\xba\ \x46\xc7\xcf\x18\xbe\xf7\x53\x63\x59\xf8\xec\xdf\x6b\x7c\xdb\x93\ \x7a\xbb\x87\xb8\xc2\x47\x98\xdc\x90\x48\x3d\xa9\x94\x9f\x11\x44\ \x16\x8d\x42\xdf\x73\xcc\xfc\xe8\x89\x04\x52\x41\xa9\x56\x07\x4b\ \xfb\x53\xa0\xdc\xce\x08\x2a\xda\x8a\xcb\xe2\x03\xc3\xc7\x4a\x8a\ \x6c\x03\x6d\xbd\x68\xc6\x0b\x38\x51\xcc\xda\xb2\xb8\x8c\x82\x4c\ \x7c\xae\xb7\xb1\x6e\x74\x72\xf0\xc0\xec\x6f\x7b\x93\xce\x8b\x0d\ \x27\x85\x88\x49\x00\x00\xab\x5e\xf6\xab\x58\x3c\x22\x18\x95\xe6\ \x04\x97\xf4\xa8\x36\xb0\xea\x6a\x31\x78\x03\x94\xbe\x1d\xf3\x00\ \x2e\x55\xb7\x1f\xcd\x67\x29\xd6\x93\x32\xba\x87\x8d\xae\x8d\xa8\ \xa5\x3b\x00\x7a\x9e\x95\x9d\xc3\x71\xde\x00\xf0\xa6\x1f\x76\x5a\ \xc4\x73\x53\xd6\xb4\xbd\x3a\x83\x70\xda\x86\x1c\xeb\x72\xeb\x38\ \x15\xb0\xf4\xef\x52\xa1\x6c\x43\x2a\xb0\x3b\xdc\x57\x7c\xbe\x94\ \x24\xf7\x1f\x5a\x90\xd4\x42\xa3\xcb\x12\x0f\x6b\xff\x00\x35\x24\ \xa9\x50\xa0\x00\x06\xc0\x0d\xa9\x57\x27\x9d\xba\x69\x44\xa4\xfc\ \xc5\x5a\x85\x1a\x90\xf7\x36\xb5\x54\xe3\x99\x1b\x18\x3c\x48\xd1\ \xfe\xed\x75\x61\xda\xae\x29\xaa\x1c\x70\xff\x00\xc6\x8f\xfe\x35\ \xfd\x2a\xe5\xe1\x9e\xab\xc6\x17\x35\x91\x42\x03\xba\x8d\x98\x7e\ \xc6\xb5\x78\xba\x80\xd1\x95\xd8\x2e\x5b\xf5\xaa\xbc\x12\x11\x28\ \x92\x47\x51\xa7\x95\x75\xd2\xe6\xac\xe3\xbe\xf3\x02\x8e\x3e\x12\ \x2e\x2f\xce\xd6\xfd\xa8\x93\xa5\x7d\x54\xb8\x03\x7a\xec\xca\x7e\ \x21\x4b\xf8\x87\x6a\x25\xbd\x0b\x13\xb9\x04\xec\x3b\x6e\x6b\x9a\ \x8a\xd4\x2c\x39\xd4\x80\x47\x31\xbd\x06\x30\xe6\xc0\xca\xed\x9b\ \x3a\x5b\xce\xbb\x81\xad\xff\x00\x6a\x61\xa8\x55\x0c\x59\x1a\xd9\ \x64\x52\xa6\xf5\x12\x7f\xc3\xae\x35\x8d\xe4\x42\xc6\x45\x60\xca\ \x2d\x98\x58\xef\xde\xb4\x25\x5b\x12\x1b\x4d\x6d\x58\x5c\x2d\x12\ \x3e\x26\x60\x9d\x6d\x73\x6c\xc7\x4d\x79\x56\xfc\x8b\x93\x10\x63\ \x72\x58\x91\x74\x66\xdc\xf6\xa3\x87\x70\x5f\x55\x9f\x43\x61\xa9\ \xed\x43\x6b\x6f\xb9\xab\x24\x03\x4b\x75\xa5\x69\x40\x51\x90\x0a\ \x65\x62\x74\x37\x52\x37\x53\xd4\x57\x05\xae\x22\xf5\x2d\x49\xb6\ \xed\x6b\x7e\x35\x1f\xa8\xe5\x43\xe2\xc4\x08\x50\xfe\x23\x1d\x95\ \x2b\x85\xd4\xdc\x13\x7a\x25\x20\x12\x42\x28\x62\x2c\x58\x0d\x6a\ \x43\x65\x2f\x13\xa8\x8a\x40\x59\x2d\xc8\xfe\x95\x9a\x3c\xad\x60\ \xac\xec\x3e\x1c\xa4\x0f\x99\x35\x78\x12\x0d\xc6\xe2\xaa\x71\x04\ \x64\x93\x30\x27\xc3\x7d\x46\xba\x03\x45\x51\xc1\xb7\xbb\x06\x62\ \x2c\x48\x16\x00\x74\x02\xac\xf0\xd9\x15\x49\x85\x8e\x8e\x7c\xbd\ \x8d\x67\x83\x46\xad\x6a\x25\x6a\xc6\xb9\x1a\xd7\x0b\x83\x71\xca\ \xab\xe1\xb1\x4b\x22\x65\x93\xd6\x07\xab\xf1\x7f\x7a\x31\x20\x2c\ \x43\xe9\x6d\x81\xad\xeb\x18\xa1\xc7\x11\x17\x1c\x4c\x7a\x19\x14\ \x35\xba\x13\x56\x38\x2c\xb7\x8d\xb0\xa7\x65\x05\x90\xfe\xb4\x9e\ \x3f\x28\x6c\x4c\x68\x2d\x71\x18\xd7\x99\xbd\x17\x04\x04\x45\x34\ \xa7\x73\x65\x1d\x7a\xd6\x3f\xfa\x6b\xe2\xe3\x9a\x84\x01\x89\x42\ \x4d\x9f\x43\x42\x58\x5e\xd7\xd7\xa5\x09\x6e\x95\xa6\x41\x26\x26\ \x31\x03\x86\x3f\x7c\x01\x51\xa6\xe7\xad\x23\x86\xe1\x8c\x83\xc6\ \x95\x88\x04\xd8\x2d\xae\x5a\x83\x8a\xa9\x13\x78\xc0\x8b\x4a\x6f\ \x6e\x95\x67\x0f\x2f\x8d\x1a\xac\x4a\xd0\xaa\x8b\x33\xff\x00\x15\ \x9f\x6f\x6d\x7c\x5c\x67\x55\xd6\x42\x16\xda\x05\x1a\x9f\xa5\x04\ \x99\xe7\x50\xa6\xf1\x45\xbe\xbb\xb5\x02\x14\x8c\x5a\x21\x6e\xad\ \xf1\x1f\x9d\x71\x90\x03\xa9\x37\xf6\xad\xeb\x23\x48\x9a\x31\xf7\ \x13\x1e\xeb\x20\xd0\xd1\x78\xae\x83\xfe\x22\x2c\xa3\xf1\xa6\xd4\ \xb5\x95\x76\xd4\x7b\x8a\x62\xb8\xea\xba\xf2\x3c\xea\x46\x73\xd0\ \xdc\x1d\x88\xe7\x52\x80\xad\xd0\x00\x5c\x1b\x12\x76\x5f\x7f\xe2\ \x94\x09\x51\x68\xe6\x55\x5e\x4b\x6b\x95\xf6\x34\x48\x6c\x81\x40\ \xb2\x8b\x9b\x53\xa8\xdb\xc9\xcb\x10\x49\xfc\x2c\xa3\x2d\x03\x62\ \x10\x3e\x49\x94\xc4\xdd\xb5\x53\x42\x5a\xba\x40\x25\x89\xa3\x6d\ \xac\x48\x3d\x2d\x56\xa3\x1a\x45\x44\x32\x31\xba\x81\x7d\x39\xd5\ \x19\xe6\x97\x13\x32\x85\x51\xd1\x54\x1d\xaa\xd4\x66\xd8\x78\xd4\ \x8f\xf9\x60\x10\x45\x70\xc8\xa6\xe9\x1a\x21\x3a\x5c\x51\x50\x62\ \xc3\x28\x60\x1d\xf3\xb3\x68\x75\xda\xf5\x54\x48\xfe\x3e\x43\x2b\ \x65\x24\xa9\x3f\x95\x5d\x8c\xfd\xea\xfb\x8a\xcc\x9c\xda\x57\xff\ \x00\x51\xa2\xd3\x1d\xc3\x6d\xf6\x93\x98\x5c\x05\x3a\x75\xa5\x63\ \x70\x46\x3b\xe2\x30\xac\x4a\x83\x7c\xbc\xd6\xbb\x86\xb9\x18\xc5\ \x5f\xc4\x32\x9f\xa5\x5e\x85\xf2\xbd\xef\xd4\x1a\xcc\xee\x35\x55\ \xa1\xe2\x90\xa2\x78\x38\xe9\x14\xc8\x79\xef\xcb\xe2\xa7\x60\xd3\ \x26\x0e\xf9\x95\x83\xbd\xee\xa7\x41\x61\xfd\xeb\x17\xfc\x49\xc3\ \x8c\x0e\x31\x50\xa9\x31\xc9\x7c\xd6\x37\xb1\xae\xe0\xd8\x99\xe1\ \xe1\xb6\x8a\x42\xa1\x24\xb6\x52\x34\x37\xd7\x5a\xcc\xe5\x65\xca\ \xb3\xae\x9b\x6e\xf6\xd1\x6c\x68\x4e\x6b\xf9\xaf\x7a\xa0\x9c\x4b\ \x12\x18\x1f\x0e\x0f\xfb\x05\x13\x71\x4c\x4b\x10\x7c\x38\x7f\xec\ \x15\xaf\xd4\x18\xd3\x43\x70\x0f\x5a\x2b\x58\xd5\x7c\x06\x26\x3c\ \x62\x15\x0b\xe1\xc8\x2e\x72\x03\x70\x45\x34\xe7\xb5\x81\xd2\xb4\ \x30\x73\x42\x93\x15\x2e\x4a\x95\xd2\xe0\x6e\x28\xa2\x8d\xa2\x4c\ \xb1\x48\x1d\x7f\x03\x8b\x7d\x0d\x04\x57\x53\xae\xa0\xfe\x54\x38\ \xfc\x60\xc3\x1f\x0e\x34\x57\x92\xda\x96\xd4\x2f\x6a\x91\xe4\x82\ \xac\x40\x2a\x40\xf3\x29\xdc\x7f\x6a\x35\x46\x71\x70\x85\x87\x61\ \x58\xd2\x71\x0c\x49\x95\x9f\xc4\xc8\xea\x97\x19\x74\x02\xda\xdb\ \xfd\xf5\xa3\xc5\x62\x67\x32\x12\xd3\x39\xb0\x07\xd5\xf3\xab\xf5\ \x17\xe6\xb4\x71\xb8\x85\xc1\xc4\x4b\x79\xe4\x20\x80\xb7\xf4\xf2\ \xd6\xb2\xf8\x72\x3e\x27\x14\x91\x90\x3c\xcd\xa9\xb5\x01\xbb\xef\ \x7d\x79\x5f\x53\x5a\x9c\x1f\x0c\x70\xf0\x99\x9a\xf9\xdc\x59\x54\ \xe9\x61\xd6\x8f\xf6\xa7\xc8\xb6\xe5\x73\x1c\xa2\xc3\x61\xed\x50\ \x09\x0d\x70\x6c\x6a\x06\xdb\x1f\xa5\x4d\xbb\x37\xd2\xb6\xca\x8f\ \x19\xc3\x02\x46\x2a\x35\x16\xd9\xc0\x1e\x93\xd6\x83\x84\xe3\x15\ \x41\x86\x66\x61\x1b\x7a\x58\x8d\x14\xd6\x88\x3b\x82\x0d\x98\x59\ \xae\x39\x56\x46\x3b\x0c\xd8\x69\xb2\xda\xe8\x7d\x27\xa8\xac\xde\ \xae\xc6\xa7\x7d\x35\x9d\x48\xb0\xb8\x20\xf3\x06\xe0\x8a\xeb\x5a\ \xb1\xf0\x38\xa9\xb0\xc0\x04\x71\x6e\x68\xfb\x1a\xbb\x17\x16\xc3\ \xb8\x1e\x2c\x45\x49\x3a\xe5\x3b\x55\x39\x41\x8b\x55\x23\x71\xdb\ \x5f\xf7\xfe\xf9\x50\xc5\x2e\x1e\x60\x0c\x53\x29\xec\x74\x34\x44\ \x32\xee\x08\x27\x5a\xd0\x48\x36\xac\xfe\x38\x6f\x8d\x5f\xfe\x35\ \xfd\x2a\xfa\x02\xcc\x00\xdc\x9a\xcd\xe2\xb2\x2c\xb8\xd3\x93\x50\ \xa0\x28\x3d\x6d\x47\x2f\x0c\xf5\x7f\x84\xa8\x5e\x1c\x08\xbd\xdd\ \xc9\x3f\x2f\xfc\xd3\xb1\x0b\x9e\x1c\x42\x87\xf4\xb6\x6b\x5b\x9f\ \x4a\x5f\x0e\x42\x9c\x3e\x3c\xc4\xf9\xae\xc0\x76\xd3\xf8\xa6\xb2\ \x33\x33\x34\x4c\x15\xdd\x6c\x41\xd8\xd6\xa7\x81\x9a\xa0\x58\x7b\ \x5e\x8d\x45\x71\x8d\x94\x90\x45\x99\x7c\xae\xbc\xd4\xd4\x81\x58\ \x29\x14\x2d\x72\x3c\xba\x5f\x99\xa2\x61\xa8\x53\xcf\x5a\x83\x50\ \x2d\x87\xbf\xd6\x81\xb5\xdf\x5e\xc6\x98\xfb\xd4\x11\x65\x66\xcb\ \x98\xa8\xbe\x51\xce\xa3\x15\x78\xa6\x1c\xe2\x62\x13\x46\x01\x96\ \x31\x66\x00\xea\xc3\x91\xab\x03\x12\x24\x68\x0b\xb1\x19\x72\x80\ \xe0\xe9\xca\xd7\xe9\xd2\x83\x0d\x24\xf2\x44\x25\xcf\x0c\x77\x24\ \x0f\xbb\xd6\xba\x7c\x1e\x21\xf0\x4c\xf0\xe4\x66\x6b\xa9\xfa\xdf\ \x4a\x3f\xec\x2d\x19\x90\xac\x84\x11\x6e\x63\xda\x82\xb3\xb8\x57\ \x11\x95\x30\x82\x2c\x4a\x67\x11\xbe\x43\x7d\xc0\xde\xb4\xe3\xc9\ \x2c\x62\x48\x5b\x3a\x1f\x91\x1e\xf4\xcb\xbe\x0b\x30\x04\x0a\x16\ \x02\xd4\xc6\x68\xc7\xc4\x5b\xba\xad\xc7\xd6\xa0\xa8\xb0\x20\x82\ \x0e\xc7\xad\x40\xa2\x05\x08\xb5\x31\x96\x84\x8b\x54\x90\x68\x5d\ \x16\x58\x8c\x6c\x6d\xcc\x1e\x95\xcd\xa6\xa6\x87\x29\x27\x36\xa0\ \xde\xf5\x15\x29\x50\xc7\x21\x46\xdd\x4d\xa8\x41\xe9\x57\xb1\x11\ \x89\xd4\x5c\x59\xc6\xc7\xaf\x6a\xa2\xc0\xab\x15\x61\x62\x37\xac\ \x59\x8d\x4a\x90\x4d\x3e\x2c\x49\xf4\xcb\xa8\xda\xe3\x71\x55\x6f\ \x5d\x7a\x34\xa7\x8f\xc8\x3e\xd0\xb6\xd4\x78\x6a\x01\x1b\x5e\xd5\ \x73\x87\x00\x38\x54\x40\xf3\x66\xfd\xab\x33\x8a\xbb\xae\x1e\x2c\ \x4a\x00\x42\xf9\x25\x16\xf5\x74\xbd\x68\xf0\xf9\x23\x6e\x15\x1f\ \x86\x49\x0a\xc7\x97\x5a\x65\xff\x00\x2a\x3e\x1a\xd6\xe5\xa1\xa8\ \x0e\x08\x25\xae\x00\xde\x96\xcf\x6e\xbf\x4a\x28\x88\xf2\x86\x1a\ \xb4\x83\xf2\xb9\xfd\x85\x68\x25\xd5\x64\x70\xf3\x29\x27\xe1\x4b\ \xe8\xa3\xa5\x10\x60\x14\x28\x00\x01\xb0\x14\xbb\xeb\x5d\x7a\xba\ \x43\x2c\x6d\xa5\x72\x30\xca\x29\x6c\x6d\xef\xca\xb8\x69\xa5\x5a\ \x8e\x06\x89\x5a\x92\x0d\x12\xb5\x29\x65\x5a\x8c\x30\x35\x5d\x4d\ \x12\x35\x4c\x9f\x5c\x40\x24\xa6\xe0\x7a\xf5\xff\x00\xeb\xfc\xd0\ \x17\x2a\x42\x8b\x67\x6f\x48\x3c\xbb\xd4\x82\x15\x02\x8f\x48\xff\ \x00\x77\xa9\x08\x9b\x9b\xd4\x11\xde\x84\x3d\xf6\xd6\xa0\xbd\xb7\ \x23\xeb\x52\x31\x48\x5b\xb1\x36\x0a\x09\x27\xa5\x63\x3b\x8b\xeb\ \x7b\x9e\xd5\x7f\x1d\x2e\x5c\x26\x50\x48\x69\x3f\x21\x59\x6e\xc1\ \x98\xef\xd0\x56\x79\x56\xb8\xc1\xe0\x64\xf0\xf1\x68\xcc\x35\x0c\ \x34\xeb\x5a\x39\x7c\xe5\x17\x5d\x6d\x59\x4e\x03\x32\xdb\x42\x35\ \xbd\x6a\xc2\x56\x58\xf3\xa9\xf5\x8b\x36\xba\x8e\xbf\x90\xfc\xea\ \xe2\x68\x64\x4f\x1a\x42\xc5\xc0\x86\xd9\x00\x23\xd6\x3a\x8a\xa7\ \x2f\x0c\xf0\x30\xe5\x70\x65\xa5\x42\xd9\x9a\xfe\xa1\xa7\x4a\xba\ \xc7\x31\xe9\xd2\xdc\xaa\x23\x2c\xb2\x7a\x8f\x63\x4d\x92\x86\x3b\ \xa3\xa7\xad\x19\x7d\xc5\xa8\x49\xb0\xbd\x6f\x78\xae\x48\x56\x39\ \xb9\xf9\x85\xff\x00\x5a\x5c\x98\x4c\x14\xda\x98\x8c\x6d\xf8\x90\ \xfe\x76\xac\xfe\x3f\x87\x59\x38\x49\x64\xc3\xe2\x04\xcb\xb8\x37\ \xb5\x6c\x61\xf1\x98\x4c\x42\x66\x0f\xe0\xb7\x30\xfb\x7c\x8d\x52\ \x9f\x86\x4c\x83\x3c\x4c\x26\x5e\x76\xdc\x7c\xaa\xab\x2b\x29\x21\ \x94\xa9\xee\x2d\x54\xde\x2b\x25\x6c\x4b\x8c\x82\x05\xbc\x72\x2c\ \xb2\x7c\x39\x76\x15\x9a\x03\x4b\x29\x21\x49\x66\xd7\x4d\xeb\xb0\ \x78\x69\xb1\x0f\x68\xd0\x91\xcc\xf2\x15\xb1\x82\x85\x30\x89\x64\ \x21\xa4\x3e\xa7\xfe\x29\x9b\xc8\x75\x08\x83\x85\x46\xb1\xb0\x9d\ \xdb\x33\xa9\xba\x0f\xad\x89\xf9\x55\xb6\x83\x0c\x14\x2f\xd9\xe3\ \x6f\x28\xd5\xb5\x3b\x51\x2f\x99\x48\xe6\xde\x50\x7d\xcd\xbf\x9a\ \x97\x20\xb9\x23\x6a\xdc\x92\x33\xb4\x2a\xb0\x2b\x02\x30\xd1\x29\ \x1b\x10\x2f\x4d\xb9\x66\x24\x9b\x93\x4b\x8f\xcc\xc4\x8e\x5b\x53\ \x29\x89\x1a\xe5\xa9\xb1\xae\x16\xe6\x6b\x98\xd9\x49\xed\xa5\x29\ \xd6\xa8\x3a\xae\x56\x50\xc3\x7b\x11\x7a\x9b\x2d\xb6\xbf\x73\x5c\ \xbb\x91\xc8\x54\x83\x68\xb6\xf0\x22\x3f\xf4\xd4\x18\xb0\xcc\x7c\ \xf8\x48\x4f\xfd\x34\xc0\xb6\xa8\x22\xf5\x62\x55\x93\x87\xe1\x1e\ \x5f\xba\xcd\x13\x5b\xad\xc7\xf6\xa0\x64\xe2\x38\x4d\x98\xbc\x63\ \x6f\x89\x4d\x5a\x37\x0d\x99\x45\x3a\x37\x36\x0c\xa4\x8b\xd1\x91\ \x6b\x2a\x4c\x76\x25\x90\xa5\xd5\x2f\xbe\x55\xb1\xaa\xca\x09\x6b\ \x0d\x49\x35\xb9\x2c\x30\x4b\xfe\x64\x22\xfd\x57\x43\x41\x87\xc2\ \x61\xe1\x93\xc4\x5c\xce\xc3\x60\xc0\x58\x51\xf9\xa7\x4e\x2a\x11\ \x55\x00\xb0\x55\x02\xdd\x2b\x80\xa9\x00\x93\x73\xb9\xa3\x51\x6a\ \xd8\x0c\xd8\x78\xe7\x00\xb1\x2b\x22\x8b\x07\x53\x62\x7b\x1a\xa2\ \xd1\x49\x1b\xb2\x4c\xcc\x59\x45\xc3\x6d\x98\x75\xf7\xad\x20\x34\ \xa9\x75\x57\xc8\x19\x43\x00\xd6\xb1\xe8\x7f\xf1\x55\xe3\xa2\x56\ \x4b\x58\x68\x05\xaa\x37\x15\xa3\x26\x16\x17\x37\x19\x93\xdb\x51\ \x48\x93\x04\xc3\xd0\xe8\x7d\xf4\xb5\x66\xf1\xa7\x54\x9c\x54\x29\ \x20\xdc\x55\x87\xc2\xce\x2f\x78\xc9\x03\x98\xda\x97\xe1\x3d\xfd\ \x24\x77\x22\xb3\x94\xe9\x4e\xa1\x73\x46\xa2\xc0\x79\xd7\x4e\x47\ \x7f\xce\xad\xe0\x98\xae\x0d\x2c\x6d\xe6\x6f\xda\xab\x61\xe1\x97\ \x13\x8a\x92\x65\x5b\x46\xab\x91\x6f\xa0\x35\x71\x63\x11\xc2\xb1\ \x83\x7b\x5e\xe7\xbd\x31\x52\x78\x86\x14\x62\x90\x98\xc0\x59\x46\ \xb6\x03\x47\xfe\xf5\x9d\x83\x90\xc3\x8b\x11\x9f\xf2\xd4\x5e\x71\ \xd7\xb5\x6c\x00\xf9\x08\x8d\x82\xbf\x22\x6b\x27\x1b\x1f\x87\x2b\ \x8c\x99\x4b\xbe\x63\xf4\x1f\xbd\xe8\xe5\xfd\x53\xf8\xd7\x39\xd5\ \x82\xa3\x10\xb6\xf2\xdb\x41\x6a\x5a\x15\x71\x29\x4b\x65\x12\x79\ \x6c\x3a\xd2\x70\x38\x94\x7c\x11\x85\x9b\x2c\x80\x64\x43\xd6\xfc\ \xbf\x5a\xbb\xe1\xd9\x02\x46\xb9\x94\x6d\x93\x51\x7a\xd4\xec\x2a\ \xc8\x72\xe9\x6b\x93\xb5\x09\x4e\xac\x6a\xc1\x85\xef\x72\x8d\x7e\ \xca\x68\x1d\x0a\x9b\x10\x47\xb8\xa3\x11\x05\x05\xef\xb9\xee\x76\ \xa8\x2b\x4d\x22\x81\x8e\xb4\x22\x8a\xd2\xe7\x84\x4c\x08\x26\xce\ \x3d\x2d\xd7\xb5\x3c\xda\xd7\xa0\x61\xa5\xf9\xd4\x65\x66\x3a\xb2\ \x39\x56\xb8\x23\x7b\xd0\x93\x57\x38\xa2\x66\x8c\x4c\x37\x1e\x56\ \xfd\xaa\x8b\x1b\x0a\xe7\x7a\x6e\x09\x54\x4b\x14\xb0\x1d\x9d\x0f\ \xc8\x8d\x69\x5f\xe1\x59\xbe\xe9\xa1\x61\xe5\x67\xca\x3b\x5c\x51\ \xc6\xc1\x23\x9a\x46\xf4\xa4\x64\x9e\xf5\x47\x81\xb6\x48\xd5\x94\ \xf9\xbc\x71\x6a\xcf\x96\x26\xe3\x1b\x1a\x82\xcc\x27\xc3\x00\x37\ \x72\x68\xa6\x53\xe3\xb2\x81\xf1\x1a\x01\x63\x2f\x8a\x0f\x96\x21\ \x95\x3b\x9e\x66\xba\x32\x33\xbf\x5a\x82\x75\xb0\xff\x00\xc5\x0d\ \xeb\x97\x46\x6d\x77\xa9\x27\xda\xbb\x9d\x75\x70\xde\xa4\x2a\x90\ \x6a\x39\x54\xd3\x10\xd0\xd3\x03\x64\x42\xf6\xb9\x1a\x28\xea\x4e\ \xd4\x90\x69\x80\xda\x4d\xae\x22\xd0\x77\x63\xfc\x0a\x52\x63\xfb\ \xbb\x82\x09\x63\xbb\x6e\x4d\x48\x24\xea\x7e\x40\xd0\x83\x7a\x9a\ \x90\x89\x07\x71\x52\x2c\x06\x77\xb2\xa8\xde\x84\x15\x55\x2e\xe6\ \xca\x39\xd5\x3c\x5e\x20\xcc\xd6\x02\xc8\x36\x14\x5b\x83\x03\x89\ \x93\xc6\x94\xb9\x03\xa0\x1d\x05\x21\x92\xcd\x75\x36\xa3\x35\x04\ \x8a\xc3\x65\x5f\xcc\xb5\x67\x0d\x2b\xc3\x2c\x65\x6d\xac\x4e\x4d\ \xc6\xf5\x5d\x56\xee\x14\x6a\x49\xb7\xbd\x4c\x72\x07\xc4\x62\x82\ \x6a\x11\x15\x45\xba\x03\x44\xa9\x7e\x3c\x5c\x0f\xeb\x56\x43\xdb\ \x51\x4f\x50\x1c\x5e\x36\x57\x1d\x8d\x64\x0a\x62\x31\x06\xe0\xdb\ \xda\xb5\x39\x0c\x69\x6c\xda\xe9\x71\x61\x44\x06\x97\xa4\x61\xf1\ \x80\x8c\xb3\xeb\xfd\x7c\xfe\x75\x64\xa8\xdc\x5a\xc4\x68\x46\x97\ \xad\xb3\x5c\xb7\x07\x43\x63\x4d\x12\x39\xd4\xe5\x3d\xca\x82\x69\ \x2c\x72\xdb\x98\xa9\x57\x61\xa9\x1e\x53\x50\xc3\x73\xb1\x16\x26\ \xc3\xa0\x16\x15\x22\x81\x5b\x37\xa4\x7c\xcd\x18\xbf\x36\x3f\x41\ \x4a\x74\x8f\x92\x48\x17\xf1\x3d\xea\x09\x62\xd6\x1a\x8e\x75\x2c\ \xa0\xcb\x19\x37\x25\x41\x35\x23\x7a\x90\xb3\x05\xd0\x2d\x16\xb7\ \xd5\x8f\xca\x84\x6d\x5c\x09\x02\xd7\x07\xde\x94\xe2\xa4\x9b\x96\ \xa8\x28\xdb\x02\x2a\x6f\xad\x10\xd4\x8d\x0d\xc9\xe9\x52\x72\xa8\ \x55\xb5\x16\x8a\x73\x3b\x2a\x29\x1b\xb1\xb5\x04\xf8\xa8\x20\x66\ \x4d\x65\x91\x77\x51\xa0\x53\xd0\x9f\xda\xb3\xb1\x12\xc9\x34\x85\ \xdd\xd2\xe7\x90\x52\x40\xf9\xdc\x55\x6e\x26\xce\x42\x40\x2b\x66\ \x07\x62\xa6\xf4\x8c\x77\x88\x90\x06\x8c\xb2\xea\x73\x5a\x83\x84\ \x43\x7c\x33\xb3\xb4\x85\x58\xf9\x47\xa7\xf4\xa7\xcb\x87\x71\x1b\ \x08\xe5\xf2\x91\xaa\xb6\xa4\x53\xec\x4a\x8b\x8e\x21\x72\xcb\x15\ \xcd\xbd\x6b\xa7\xe5\x56\x70\xe7\x34\x21\x85\xf2\x9d\x45\x72\x44\ \x90\xc2\x2d\xe6\x2c\x75\xa6\x40\xb9\x70\xca\xa3\x93\x35\xbd\xaf\ \x54\xd4\xe1\x44\x05\xeb\x82\xd1\x28\x26\xf6\xd0\x6d\x7a\xd2\x48\ \x5b\x0b\xd4\x8e\xc0\x9e\xfb\x57\x05\x51\xc8\x5f\xa9\xd4\xd4\xee\ \x69\x65\xda\xfe\x1f\xfe\xd5\xd7\xfb\xc4\x5d\x8e\x62\x6c\x7b\x0f\ \xef\x47\x6b\x0d\x28\x5e\xe6\x64\x51\xba\xdc\xb5\xb9\x02\x2a\x48\ \xa8\x22\x8f\x27\xf5\x1f\xca\xa0\xa1\xe4\x7e\xa2\xa4\x00\x0d\xe9\ \x38\xec\x49\x45\x31\x2b\x12\xe7\x43\xae\xd5\x65\x6e\x1b\x6d\x7d\ \xeb\x39\x22\x95\x66\x0e\xf0\x3b\x00\x6e\x47\x5a\xcd\xff\x00\x86\ \x1f\x02\xb2\xe1\x54\x35\xee\x4d\xcd\xeb\x88\xa3\x12\xac\xad\x65\ \xb8\x6e\x61\x86\xd5\x05\x3a\xde\xa2\x56\xec\x40\xb0\xb6\xe6\x93\ \x89\xc2\xfd\xa4\x12\x08\xf1\x53\x4d\x46\x8e\x3a\x1a\xb4\x16\xc2\ \xc0\x0a\x12\x32\xb6\x61\x7d\x4e\xb4\x62\x62\x48\x0a\xb5\x8d\xee\ \xa7\x40\x16\xc0\x1b\x5a\xfd\x4d\x44\x5e\x3d\xad\x11\x7d\x39\x29\ \x35\xbe\x58\x93\x72\x17\xe6\xa2\xa4\x3b\x0f\x4d\x97\xb8\x00\x7e\ \x95\x9f\xc1\xd6\x03\x3c\xe0\x0c\xcf\x28\xbf\x22\x48\xa6\x61\xf1\ \xf3\xc5\xe5\x73\xe2\x25\xad\x95\x8d\x6b\xc8\x24\x2d\x7b\x86\x1d\ \x1e\xc6\xdf\x5a\xcc\xe2\xf0\x2a\x05\x96\x34\x20\x31\xb3\x0e\x86\ \xb3\x65\x9d\xc3\x2e\xae\x12\xaf\x1a\xc8\x9e\x97\x17\x1d\xbb\x50\ \x30\xa4\xf0\x96\x27\x0d\x24\x7f\x81\x81\x1e\xd4\xf7\x36\x17\xa7\ \xde\xd9\xa4\xbe\x8e\xbf\x33\x42\xe6\xf4\xc6\x16\xd4\xee\x69\x46\ \xa3\x09\xc7\xe9\x82\x3d\xd8\x56\x73\x5c\xe8\x35\x26\xae\x71\x77\ \xb1\x48\x47\xc2\x2e\xde\xe6\xa9\x62\xa7\x4c\x14\x1e\x2b\x1b\xca\ \xeb\xf7\x4b\x6d\xbb\xd7\x3e\x57\xb6\xa2\xaf\x1d\x9b\xc2\x85\x70\ \x68\xd7\x6b\xde\x50\x0e\xe7\x90\xa3\xc3\x44\x62\x96\x08\x94\x5d\ \xa3\x21\x9d\xbb\x92\x0d\x67\x60\x95\xe7\xc6\x78\xb2\x02\xe1\x4e\ \x76\xef\x5b\x5c\x31\x95\xf1\xf9\xdf\x51\x18\x2d\x6f\xc4\xfc\xcf\ \xcb\x6a\xe7\x3b\xba\x6a\xd3\xc8\x71\x39\xb2\x02\x88\xc6\xee\xe7\ \x7f\x61\x52\xcc\x2c\x15\x45\x94\x0b\x01\xd2\x82\xe5\x9c\xb9\xe7\ \xb5\x41\x35\xd7\x46\x08\xb5\x85\xcd\x70\x3a\x77\x26\x80\xea\x40\ \x3c\xb5\x35\x20\xd5\xab\x0c\x06\xa6\xf4\xbb\xd4\x83\x56\xac\x30\ \x1a\x9b\xd0\x03\x5c\xc7\xc8\x6d\x48\x36\x36\xf3\x02\x3e\xa6\xa3\ \x0e\x4f\x84\x62\x63\x77\x8d\x89\x3a\xef\x7e\x74\x31\x9c\xc4\x5b\ \x9d\x4a\x10\x59\xa6\xe6\xf6\x0b\xfe\x91\xce\xa4\x60\x34\x59\x95\ \x10\xbc\x86\xca\x3f\x3a\x05\xb6\xb7\x36\x00\x5c\x9e\x95\x4b\x19\ \x3f\x8b\x2d\x97\xd0\xbe\x9a\x6d\xc4\x3c\x4e\x21\xa6\x6e\x8a\x36\ \x14\xb0\x69\x63\x7a\x9a\xe7\xad\x0c\xb5\x01\x3a\xd4\x1a\x83\xb6\ \xd5\x27\x2b\x59\xb4\xb8\x3c\xaf\x4c\xb2\x87\x18\x85\x40\xa7\x30\ \x59\x00\xf8\x81\xa1\xf0\xbc\xb6\xbe\xbd\x68\xd5\x5d\xa0\x75\x00\ \x06\xb8\x61\x7e\x76\x35\x62\x73\xa6\x59\x19\x46\xb6\x24\x5e\xba\ \xf6\xda\xb9\x87\x89\x69\xd5\x8f\x9c\x93\xa8\xdb\xb5\x72\x86\xce\ \x41\xb1\xef\x6a\x52\x41\xab\x7c\x3e\x7c\xad\xe1\x39\xf2\x36\xdd\ \x8d\x55\xd3\x99\x14\x2e\x5c\x37\x31\xd2\xad\xc5\x5b\x0e\x32\xdc\ \x30\xfa\xd1\x0b\x5a\xd5\x53\x09\x29\x9a\x1b\x31\xf3\xa0\xb6\xa7\ \x71\x56\x86\x80\x03\x5d\x18\xb0\x43\xb5\x4d\xc2\xa9\x63\xb2\x8b\ \xd4\x0a\x56\x39\x98\x61\xec\xa2\xe1\x8f\x98\xda\xa0\x6c\x0d\x9e\ \x1f\x14\xee\xe4\xdf\xb5\xb6\x14\x42\xa8\xe1\xa7\x96\x2f\x2a\xea\ \xa7\xe1\x3b\x56\x83\x03\x60\x76\xd3\x50\x29\x9d\x9a\xe0\x6a\x75\ \xa0\x37\xb5\xaf\xad\x12\x85\x03\xaf\xb9\xa4\x08\x0b\xd3\x10\x12\ \xac\x01\xb3\x5b\xca\x6f\xce\x81\x4f\x73\x44\x46\x9b\x9f\xad\x31\ \x31\xf1\x0a\xd0\x49\xe1\xce\xad\xab\x12\xb2\x01\xa1\xbe\xb6\x3d\ \x0d\x5d\xc0\x60\x1d\x8a\xc9\x88\x5c\x89\xbd\xb9\xb5\x5c\x8f\xcc\ \xb9\x5c\x93\xd6\xfa\xdb\xda\x8a\x16\x24\x34\x6e\xc1\x9a\x33\x6b\ \xf5\x1c\xa8\x9c\x61\xd1\x46\xd7\x94\x20\x00\x28\x16\x00\x72\xa7\ \x0d\x28\x10\x5b\x5b\x6b\x46\x2b\x71\x9a\x15\x48\xd5\x8b\x91\x60\ \x35\x3d\xab\x91\x6d\x1a\x8b\x58\xda\xf6\xe9\x7d\x69\x8c\xb7\x0a\ \xa7\x62\x75\xee\x00\xbf\xeb\x6a\xe6\x1a\x9d\x75\xa4\x16\xe3\xc8\ \x7a\xda\xa4\x0b\x00\x3a\x57\x38\xf2\xdb\xae\x82\x8c\x81\x7a\x92\ \x02\xde\x88\x0b\x54\xd7\x54\x9c\xc4\x2a\x96\x3b\x28\xb9\xa8\x41\ \x65\xd7\xd4\x75\x63\xd4\xd4\x4d\xfe\x4b\xdc\x5c\x65\x35\x26\xe0\ \xdb\xa6\xf5\x24\xd4\x13\x6a\x16\xbd\xea\x00\x26\xa4\xe3\xbd\x71\ \x2d\xc8\xfe\x75\x39\x4d\x2e\x50\xd2\x44\x52\x3b\x00\x77\x73\xb7\ \xb0\xeb\x52\x55\xe2\x52\xa3\x32\x84\x37\x65\xdd\x87\xe9\x44\x98\ \xd4\xca\x03\xa3\x16\xe7\x6e\x74\xa9\x30\x53\x2f\xa4\x07\x03\xf0\ \xd4\x70\xf4\x07\x17\xe6\xf8\x41\x36\x35\xcf\x6e\x95\xb5\x67\x71\ \x75\x80\x01\xcb\x3b\xd8\x9a\x0c\xe9\x98\xa4\x9f\x76\xdf\x85\xb9\ \xd3\x8e\xa6\xe6\xb9\x80\x6b\x66\x45\x6b\x6d\x71\xb5\x69\x00\x45\ \xa6\x9f\x91\xa9\x29\x6e\x67\xf2\xa9\x78\xe3\x65\x39\xa3\x5d\xb7\ \x02\xc4\x50\xc4\xd9\xe0\x46\xce\x3d\x3e\x6b\x9a\x52\x0a\xeb\xea\ \x34\xb9\x21\x57\x86\x44\x37\x62\xca\x48\xbf\x5a\x6a\xb2\x35\xc2\ \x48\xac\x57\x70\x2a\x50\x0c\xe3\xbe\x94\x16\x3f\x0a\x39\x71\x4c\ \xa6\xde\x64\x23\x5e\xb5\x66\xe0\xc9\xa6\xc2\xa8\xc8\x4c\x38\x9b\ \x8b\x82\x8f\x71\x7a\xbe\xb9\x58\x67\x8c\xdd\x48\xbd\xeb\x9c\x34\ \x12\x52\x98\x84\x46\x91\xfd\x2b\xaf\xbf\x6a\x73\x8b\xd6\x6f\x13\ \x9c\x3b\x78\x69\xe8\x53\xf5\xef\x45\xb9\x14\x21\x4f\x8d\x8c\xcc\ \xfa\xdc\x96\x3e\xc3\x5a\xc1\xe2\x18\x89\x31\x78\xb2\xe7\x5b\x9b\ \x28\xe8\x39\x0a\xdb\xc3\xb0\x13\x1c\xc6\xc0\xa9\x1f\x95\x52\x8b\ \x87\x4d\x83\x66\xc4\x4c\x97\x0a\x6d\x19\xe4\x4f\x5a\xe3\xca\x5b\ \x1b\x82\xc2\xa1\xc3\x44\xaa\x06\xb1\x83\x24\x96\xeb\xc8\x55\xbe\ \x10\xa0\x49\x3e\x97\x29\x18\x5b\xdf\xbe\xbf\x9d\x54\x04\x29\x8a\ \x36\xf5\x4a\x73\xb0\xe7\x94\x6d\xf9\xd5\xae\x18\x24\x2d\x3a\x44\ \xe3\xc4\xca\x0b\xb7\x25\x37\xda\x9e\x3e\xaa\xb2\xc0\x8f\x50\x23\ \xde\x84\xef\x40\x1a\x68\x0d\xb1\x0d\x9e\x36\x3a\x38\xd6\xd4\x63\ \x23\x1f\x2c\xa8\x49\xd8\x66\xad\x00\x8b\x8b\xe9\x7b\x9a\x91\xf4\ \xa2\x64\x65\x17\x2a\x6d\xd6\xa3\x42\x2a\x28\x6b\x01\x52\xa7\xad\ \x44\xa6\x28\x55\x5a\x5c\xde\x6d\x94\x6f\x45\x04\xb1\xcf\x71\x1e\ \x60\x47\x23\xce\xa0\x91\x6e\xf5\xc4\x12\x35\x36\xed\x53\xb5\x48\ \xda\xb4\x10\x54\x88\x88\x5d\x59\xfc\x8b\xee\x69\xae\x6e\xe6\xdb\ \x00\x05\x40\x03\xc6\x4e\xaa\x85\x80\xbf\x3b\xef\x43\x23\xac\x51\ \xf8\x8d\xaf\x41\xd6\xa4\x5f\x10\x97\x22\x78\x2a\x75\x6d\x5b\xf8\ \xaa\x60\x9a\xe7\x66\x77\x2e\xc6\xe4\x9b\x93\x52\x39\x56\x6b\x43\ \x02\xa7\x95\x08\x3a\x51\x0d\xeb\x29\x04\x50\xb0\x60\xd7\xb5\xc0\ \xa6\xd8\x74\xa8\x75\xb8\x22\xfb\xd3\x88\xef\x05\xf9\x21\x3d\xc6\ \xb5\x24\xac\x0c\x1a\x56\xb3\x0f\x4a\x0d\xc9\xac\xd7\x5c\x4c\x1e\ \x4b\x48\x8c\xdb\x00\x77\xab\x98\x18\x4e\x1d\x3c\x59\x35\x95\x87\ \x97\x36\xa5\x7b\xd3\x2a\x31\x87\x84\x8b\x13\x0b\x11\x76\x3e\xe7\ \x95\x72\x6a\x5a\xdf\x2a\xeb\xf5\xe7\xbd\x4d\xea\x4e\x51\x94\x00\ \x45\x8f\x5e\xb5\x22\xba\xbb\x2e\x9b\x9f\xad\x21\x31\xb9\x49\x43\ \x8d\xc7\x3a\xd2\x84\x89\x22\xce\x9a\x8b\xed\xcc\x56\x51\x36\x36\ \x3a\x53\x20\x91\xd1\xcb\x46\xc4\x5a\x99\x55\x8d\x4b\x54\xa1\x00\ \x12\xc7\xcb\x6b\x9b\xf3\x15\x49\x71\x92\x81\x62\x15\xbd\xc5\x41\ \xc4\xcb\x23\x58\x90\x01\xd0\xe5\x00\x56\xb5\x9c\x58\xc2\x61\x85\ \xbc\x56\x0d\x72\x6e\xa8\x3e\x1e\x97\xa7\x15\xb1\x25\x9e\xc7\x9d\ \xda\xb3\x56\x79\x64\x46\x57\x91\x89\x89\xb2\x93\xd7\xa5\x40\xd7\ \x5b\xd1\x2c\x58\xd4\x02\xfa\x06\x53\xff\x00\x50\xae\x60\x41\xda\ \xb3\x05\x36\x09\xe4\x8d\xb4\x37\x1f\x84\xed\x4f\xe9\x62\xfa\xd3\ \x06\xd4\xb8\xd8\x3a\x07\x5d\x9b\xf2\xa6\x2e\xd5\xa0\x20\x01\xde\ \xa0\x69\xc4\xd4\x2e\xc6\x31\x71\xf2\xa2\x5d\xaa\x20\xb1\xe2\x33\ \x5f\x70\x2c\xbe\xd5\xa4\xb1\xa0\x52\x49\xb0\x1b\x93\x47\x1d\x9a\ \xc5\x48\x61\xd4\x1a\x4e\x25\x4b\x61\xca\xdf\x42\xcb\x7f\xad\x48\ \xc3\xc6\x8f\x65\x2c\x17\x9a\xdf\x46\xa5\x91\xe6\x2e\xf7\x43\xa6\ \xc0\xf6\xbe\xff\x00\xef\xb5\x1e\x45\xb6\xda\xf5\xe7\x5d\x1f\xa6\ \xf6\xde\x8a\x94\x05\x8d\x43\x66\xd4\x9e\xf4\x43\x7a\x16\x34\x4a\ \x74\xd6\xa4\x9a\xea\xeb\x8a\x1c\xc2\x94\xe9\x54\xb2\x15\x07\x5e\ \x55\xc0\xb1\x17\x68\xf5\xff\x00\x58\xa1\x2c\x7a\xd4\x66\xd6\x84\ \x98\x9d\x1e\xfb\x02\x0e\xa0\x9d\xa8\xb3\x0b\x79\x6c\xdd\xf6\x1f\ \x5f\xe2\x80\xb2\x8f\x31\x03\xdf\x2d\xeb\xb3\x12\x6e\xdf\x2e\xd5\ \x21\x9b\x11\xad\xdf\xb5\xac\xbf\xef\xde\xf4\x2e\xe6\xfe\x60\x2d\ \xd6\xf5\xd7\xbd\x0b\x79\xc6\x50\x7d\xcf\x4a\x92\x6f\xad\x03\xa8\ \xfb\x44\x72\x58\x5c\xdd\x4f\x7d\x28\xc0\x00\x58\x72\xa8\x27\xfe\ \x2a\x34\xe8\xa4\x9a\xaa\x75\xaa\x40\xa3\xcb\x50\xc2\xc6\xa4\x5c\ \xc8\xcd\x19\x55\x60\xb9\xb4\x24\xf4\xa4\xc7\x87\x85\x37\x5c\xe7\ \xab\x6d\x56\x0d\x09\xd2\x8b\x09\x5e\x16\x49\x43\xc4\xaa\x0d\xac\ \xcb\x7b\x5c\x51\x33\x0c\xc0\x15\x74\x27\x6b\xda\xc7\xe6\x2a\x49\ \xa8\x60\x0a\x95\x61\x70\x68\x2a\x7c\x4f\x04\x66\x63\x34\x63\xcd\ \x6f\x32\xdb\x53\x59\x2a\xf3\xe1\xa5\x25\x4b\x46\xdb\x11\xd2\xb7\ \x46\x60\xc6\x27\x60\x40\x17\x43\x6d\xfb\x52\x78\x94\x69\x36\x19\ \xdd\x96\xef\x18\xba\xd8\x7a\x8f\x4a\xc7\x2e\x3b\xdc\x32\xa8\xcb\ \x8e\x57\x87\xc1\xb8\x49\xd8\x02\x75\xdc\x7f\x35\x9d\x38\x2a\x6c\ \x45\x88\xe5\x59\xf8\xa9\x1d\xe5\x69\x09\xb3\x5f\x97\x2a\xbd\x04\ \x87\x11\x82\x59\x08\xf3\x29\xc8\xdd\xfa\x57\x1f\xd7\xe9\xbc\xc1\ \x61\x20\x32\xbd\xce\x8a\x37\x35\x7c\xb9\x06\xc0\x0c\xbb\x65\x23\ \x4a\xe5\x8c\x43\x08\x8c\x6f\xbb\x77\x34\x27\x7a\xde\x63\x2c\xdf\ \xf1\x07\x0e\xcf\x3a\xe2\xa2\x94\x45\x1e\x50\xa7\xa8\xf6\xa6\x70\ \x22\x82\x39\xa1\x8c\x10\xa1\x6f\x73\xbb\x1b\xef\x57\x27\x8f\xc6\ \xc2\xcb\x0d\xae\x4a\xdd\x7d\xc5\x65\xf0\x79\x44\x38\xd0\x1b\x69\ \x01\x43\xaf\x5a\xc5\x92\x72\xd3\xf1\xa2\x48\xca\x54\x8b\xa9\xd0\ \x8a\x50\x83\x0a\x3f\xe4\x9f\xfb\xcd\x36\x45\x2a\xc5\x48\xb5\x42\ \x0b\xb0\x1d\x6b\x55\x17\x88\xfb\x98\x0c\xb0\xb3\x26\x52\x01\x52\ \xd7\x06\x81\x31\x98\x72\x2e\xca\xea\x7a\x0d\x41\xa1\xc5\xbb\xcf\ \x29\xc3\xc2\x9a\x29\xd7\xa9\x34\x71\x61\x22\x44\xfb\xe0\x5d\x8f\ \x20\x6c\x05\x1d\xef\x49\x59\xd9\xf1\x78\xbf\x28\xb6\x6d\x85\xf6\ \x14\xd9\x60\x6c\x32\x89\x92\x4b\xd8\xd8\xe9\x6a\x60\xc3\x45\x71\ \xe1\x33\xc6\xc0\xe8\x77\xae\xc7\x44\xde\x5f\x1b\x13\x7e\x8b\x60\ \x09\xa3\x3e\xa3\xa1\x94\x4d\x00\x93\x2e\x53\x7b\x1a\x9b\xda\xa8\ \xe0\x38\xa6\x0f\x33\x61\x56\x17\x36\x37\x52\xc6\xc4\x9a\x62\xf1\ \x34\xcc\x73\x61\x11\x11\x7d\x44\xb1\xbd\x33\x94\xfe\xac\x5a\x9a\ \xcb\x87\x33\x92\x57\xc2\x20\x83\xfb\x55\x4c\x64\xad\x24\xd7\x61\ \x6b\x01\xa7\x4a\xa9\x8d\xe3\x4d\x89\x4f\x0f\x09\x04\x6a\x11\xae\ \xaa\xe7\xd5\xdf\x5e\x74\x2f\xc5\x1d\x90\xc9\x16\x1a\x1c\xc3\xd6\ \x18\x6a\xa7\xb8\xac\xde\x70\xc9\x56\x2a\x41\xe5\x49\xc0\x71\x11\ \x89\xc4\x24\x32\xe1\xa3\x05\xcd\x8b\x2e\x96\xf9\x53\xf2\x9f\x10\ \xa2\x82\x4d\xed\xa5\x32\xcb\xe2\x12\xd1\xa8\xa7\xc1\x83\x00\x03\ \x33\x5b\xfa\x56\xad\x45\x1e\x1d\x76\x88\x1f\xf5\x1b\xd3\x38\x8d\ \x51\x14\x68\x8c\xc2\xe0\x6d\xb9\xab\x86\x08\x1e\xf6\x4c\xa6\xc4\ \xe8\x74\xdb\xa5\x67\x62\xa2\xc5\x62\x2f\xe1\x36\x74\x1b\x22\xe9\ \x6f\x95\x36\x62\xd5\xec\x3c\xb1\x4a\xf3\x0c\xa1\x4b\x1b\xc7\xdb\ \xda\xa8\xc6\xcd\x98\xa9\xdc\x1a\xb3\xe2\x69\x1e\x1c\xc5\x95\xa2\ \x6d\x5c\x0e\x55\x5d\x47\x9d\x18\x1b\xe6\x4b\x93\xd6\x8a\xa0\xc5\ \x10\xa8\x5a\x9a\x88\xb4\xb5\xed\x52\x37\xb6\x95\x0a\x68\x59\x19\ \xd8\xb0\xd8\x9d\x29\x64\x65\x14\x9b\x9b\xd7\x01\xc8\x0a\x88\x83\ \xa9\xf3\x03\x6f\xd2\x8c\x6a\x34\x37\xa5\x04\xae\xc3\xa9\xa2\x16\ \x45\xcf\x6d\x07\xa4\x75\x3d\x05\x43\x0b\x2e\x7b\x85\x09\xa9\x27\ \xa5\x70\x60\xe0\x4a\xc4\xa9\x22\xc8\xbf\x84\x75\xf7\x35\x27\x22\ \xf8\x51\xe5\x24\x66\x26\xec\x7b\xd7\x66\x3c\x87\xd6\xac\x43\x84\ \x77\x50\xc6\xc8\xa7\x9b\x6e\x69\xc9\x84\x81\x46\xa5\x98\xfd\x29\ \xca\xb5\x48\x13\xf8\x4f\xca\xb9\x58\xb3\x10\x45\xb4\xab\xb2\x61\ \x52\xc4\xc6\xc4\x11\xc8\xd5\x2d\x4c\x9a\x82\x32\xe8\x6f\x56\x25\ \xae\x1f\x29\x56\x31\x9d\x9b\x6f\x7a\xbd\x01\xba\xeb\x58\xf9\xd8\ \x3f\x90\x6c\x77\xad\xa5\xb1\x01\x80\xd0\x80\x45\xab\x5c\x45\x31\ \x05\xcd\xaa\xb9\x97\x2e\x3d\xa6\xb1\x2b\x9a\xd7\xb7\x2a\xb5\x0f\ \xa8\x77\xa1\x89\x8a\xc0\x97\x50\x57\x28\xfe\xf5\xb0\x31\x22\x3b\ \xaa\x23\x06\xbf\x98\xf6\x03\x5f\xd6\x8c\x6b\xf3\xaa\x39\xbe\xcf\ \x8b\xce\x05\xc1\x1b\x7b\xd5\xd6\x60\xa0\x1e\xa0\x10\x29\x94\x25\ \x5a\xea\x3d\xa8\xae\x6d\xbd\x2d\x76\xb7\x4d\x28\x81\xa4\x26\x88\ \x11\x6a\x1b\xd0\x96\xb5\x48\x4c\x45\x09\x34\x2c\xff\x00\x2a\x0c\ \xe3\x6b\x8f\xad\x1a\x70\xcb\xf7\xae\x2c\x05\x29\x9a\xc3\x5a\x12\ \xe4\xec\x3e\xb4\x69\xc1\xca\xcd\x75\x03\xad\xea\x73\x6b\x4b\x5d\ \xfa\x93\xce\x88\x54\x86\x4f\x97\xb5\xf5\x34\xd4\x17\x00\x2e\xdc\ \xad\x42\x8a\x58\x58\x0b\xde\x80\x2c\xda\xc5\x19\xd7\x62\xdf\x86\ \x90\x99\xa7\x0a\x08\x89\x73\x11\xbb\x72\x14\x58\x24\x60\x8d\x2c\ \x9e\xb9\x3f\x4a\x88\xb0\x8c\x8b\xe6\x90\x38\xbd\xec\x05\x81\xf7\ \xa6\xc6\x7c\xbb\x9b\x8a\x64\xbb\xda\x15\x03\xef\xbe\xd4\x67\x6a\ \x5c\x84\x09\x3c\xc7\x4b\x5c\x55\x40\x49\xb8\xb8\x04\xd0\x33\x5d\ \x8a\xda\xdf\x3a\xe9\x65\xb9\xb2\x7d\x6b\x88\x0a\x2c\x3e\x66\x83\ \x11\x41\x23\x85\x5b\xd4\xbb\x59\x49\xe9\x55\xee\xce\xf7\x35\x9b\ \x49\x81\x6e\xa4\x1d\x58\x8b\xdf\xa1\xaa\x78\xec\x40\x66\x40\x9b\ \x2f\xab\xdf\x9d\x5b\x53\xf7\x83\xde\xb2\xb1\x0d\x7c\x64\xeb\x71\ \x96\xf9\x94\x74\xbe\xf5\x9e\x57\xa3\x18\xdc\x6a\x1f\x07\x18\xf6\ \x5b\x23\x1b\xaf\x71\x45\xfe\x1c\x90\x0e\x21\xe1\xc8\x7e\xed\x81\ \x2c\x3a\x5b\x9d\x5e\xc5\xc2\xb8\xb8\x7c\x22\x40\x75\xf4\x13\xfa\ \x56\x56\x0d\x5a\x0e\x20\x61\x95\x4a\xb3\x02\xba\xf2\xbd\x70\xb3\ \x39\x6b\x7f\x1e\x8a\x60\x44\x87\x36\xf4\xa3\xbd\x55\xc1\xe3\x8a\ \x0f\x03\x11\x72\xb7\xd1\x8e\xeb\x57\x19\x48\x20\x8d\x41\xd8\x8e\ \x75\xd3\x75\x90\x83\x95\x83\x0e\x55\x9d\xc5\xb0\x6c\x92\x36\x22\ \x11\x78\x98\xdf\x4f\x84\xd6\x8b\x29\x1a\x10\x45\x72\x12\xbb\x73\ \xde\xfc\xe8\xb3\x54\xac\xfc\x16\x39\x72\x88\xb1\x37\x2a\x36\x7e\ \x62\xad\x23\xc0\xd6\x29\x89\x8c\xdf\x5d\x4d\x88\xa8\xc4\x61\x30\ \xb3\xfa\x94\xc4\xdd\x50\x68\x7e\x55\x56\x4e\x16\x6f\xf7\x58\x88\ \xdb\xb3\x79\x68\xff\x00\x28\x57\xd7\xcc\x09\x59\xa2\xb7\x36\x0c\ \x29\x12\x62\xb0\x48\x4e\x69\xcb\x11\xc9\x53\x7f\x9d\x51\x7e\x1d\ \x8b\x52\x09\x8b\x32\xdf\x52\xa6\xf5\x57\x1c\x78\x96\x1f\x10\x50\ \x61\x7e\xef\xe1\x1e\x1d\xc5\xa8\xbc\xac\xf8\xa4\x5d\xc4\x71\x57\ \x23\x26\x1a\x31\x10\x23\x56\xdd\xbe\xb5\x51\xdd\x84\xb9\x14\xe7\ \xc4\xb0\xcc\x4b\x1d\x10\x75\x34\x98\xb1\x2c\x49\x69\xf0\x91\x8c\ \xbb\xe5\x26\xff\x00\x41\x54\x31\x3c\x59\xa2\xe2\x06\x58\xf0\xec\ \x88\xde\xa2\x41\x0c\x47\x6e\x95\xca\xf2\xfb\x6b\x58\xb1\x89\xc2\ \xa6\x1d\xd5\xdf\x10\xac\xc4\xde\xda\xaf\xf2\x68\x31\xf8\xb9\x31\ \x01\x54\xbe\x60\xa3\x5b\x0b\x02\x7a\xda\x93\x2a\xf8\x89\xe3\xc4\ \xe6\x44\x6d\xcf\x31\xef\x4a\xbd\x62\xdf\xe1\xc1\x03\x56\xa3\x2e\ \x71\x38\x42\xba\xc9\x21\x2a\x6d\xbb\x27\x7a\xa8\x0d\x6d\xff\x00\ \x87\x11\x15\xd3\x13\x3a\x80\x21\xd1\x6f\xbe\xa6\xf4\xf1\x9b\x55\ \xab\x5c\x23\x87\x36\x1f\x33\x31\xb4\x8c\x37\xe4\x83\xf9\xad\x18\ \x55\x21\x5c\xb1\xdf\xbb\x1d\xcd\x40\x91\x65\x17\x8e\x55\x23\xa5\ \xec\x6a\x76\xd2\xbd\x32\x49\xe3\x14\x60\xd1\x03\x4b\x06\x8d\x01\ \x63\x60\x09\x34\x83\x22\x60\x1a\xe7\x60\x09\x3e\xd5\xd8\x13\x93\ \x04\xad\xac\x62\xec\xcd\xd6\xdc\xa9\x32\x9c\xc5\x70\xe8\x41\x67\ \x20\xc9\x6d\x40\x14\xeb\xac\x85\x93\x65\x71\x94\x76\x1c\xa9\x4a\ \x98\xb9\xd2\x46\x00\x2a\xbe\x5d\xd9\x86\xff\x00\x2a\x59\x66\x73\ \x76\x37\xa5\xa0\x14\xc1\x58\x68\x42\xa4\x50\xd7\x7c\x27\xda\xa4\ \x33\xf8\x79\x9e\x42\x8f\x9d\x00\xd0\xd8\x68\x28\x97\x6a\x60\xa2\ \xe7\x50\x45\xcf\x7a\xea\x95\x3e\x60\x06\xa7\x90\x1b\xd2\x02\xaa\ \xb2\xe2\x0c\x24\xb3\xac\x76\x39\x07\xc4\xd5\xa1\x87\xc3\xa4\x07\ \xc5\x94\x03\x21\xe5\xc9\x6a\xbc\x90\x7d\x90\x7d\xa8\x00\x25\x63\ \x62\x06\xb9\x68\xf0\xb3\x4f\x89\x3e\x75\x40\xa3\x98\x16\xb5\x33\ \xaa\xaa\xcb\x48\xa4\xdc\xb1\xd7\x99\x15\xc4\x81\xb9\x1f\x5a\x51\ \x56\x67\x0a\x4d\xc0\xfc\xaa\x7c\x21\x9a\xf7\xb0\xe9\x4b\x26\xd5\ \x7c\x72\x82\x4c\x80\x00\x6d\xaf\x7a\x70\x04\x68\x18\xfc\xea\x55\ \x41\x3e\x7d\x6f\xa1\x1d\xaa\x4c\xf1\x7a\xd2\xe1\x6d\x9b\x0c\xc2\ \xf7\x28\x74\xf6\xac\xe9\x30\xec\x98\x96\x41\x7c\xbc\xb5\xb5\xe9\ \xd8\x1c\xd0\xe2\x75\x07\x2b\x0b\x1a\xb8\xf5\x5a\xad\x50\xc5\x41\ \x3d\x05\xc5\x14\x63\x2d\xd0\xdb\xf1\x0f\xdc\x7d\x7f\x5a\x50\x0f\ \x7c\xad\x6b\x5f\x53\x45\x24\x81\x02\x3b\x1b\x0c\xc5\x49\xec\x45\ \x74\x64\xae\x27\x1d\xd2\x36\x52\x6f\xaa\xfc\xea\xc3\x00\xa7\x28\ \xdc\x00\x09\xf9\x50\x0c\xb3\x48\x1a\xf7\x8e\x3d\x8f\x26\x34\x4e\ \x75\x26\xa4\x90\x6d\x5c\x1a\x80\x1a\xea\x92\x58\x96\xbd\xc9\x02\ \xfb\x50\xb5\xed\xeb\x6f\xad\x40\x3e\x51\xdc\x57\x1a\x90\x6c\x4f\ \xa8\xde\xd5\x24\x0e\x82\xba\xf5\x0c\x68\x48\x20\x03\xa5\x75\xea\ \x2a\x54\x5c\xda\x84\x25\x37\x15\x18\xcc\x4a\xe1\x80\x45\x01\xe5\ \x22\xf6\x3b\x20\xea\x6b\x95\xd4\x11\x93\xef\x09\x3c\x81\xb0\xf9\ \xd6\x5c\xce\xcf\x33\xb3\x1b\xb3\x31\x2c\x7a\x9a\xad\xc8\xa2\xcb\ \x62\xf1\x32\x8b\x3e\x25\xb2\xfe\x18\xd7\x2d\xe8\xb0\xb8\x89\x62\ \x23\xc3\x62\x00\x37\xb7\x5a\xab\x1d\x59\xc1\x46\x65\x9d\x63\x51\ \xab\x1b\x51\xde\x9a\xdd\x27\xee\xc3\x81\xba\x83\x6a\x15\x4d\x2f\ \x7d\x4e\xa6\x9c\x40\xd8\x6c\x05\x85\x01\x16\x3a\x6d\xd2\xbb\xb0\ \x5b\xf9\x54\x9b\x6c\x2f\x4b\x68\xc1\xf5\x6a\x7a\xd3\x24\x04\xe8\ \x4e\x9d\x05\x41\xd3\x5a\x2a\x21\xa2\x50\x41\x51\xa8\xeb\x40\xf9\ \xb7\x16\x14\xe6\xa5\x3d\x66\x98\x53\x82\x7d\x76\xf6\x14\x04\xd3\ \x1c\xd2\x98\xd6\x69\x46\x62\x1a\xfd\x2b\x37\x8a\x2f\x83\x2f\x8e\ \x6f\xb8\x52\x79\x32\x9a\xd0\xaa\xdc\x4d\x5a\x54\x11\x78\x25\xd2\ \xd7\x24\x75\xac\x5f\x0c\x50\x93\x46\x20\x6d\x43\x3c\x29\x8c\x8c\ \x24\xa1\x83\x29\xf2\xc8\xa3\x51\xef\x44\xe2\x64\x16\x43\x13\x90\ \x2c\x33\x8b\x11\x55\x27\x4e\x22\xe4\xdc\x48\x47\xf4\x9f\xe2\xb9\ \xd6\x88\xc4\x1c\x46\x1d\x8a\xe2\x62\xf1\x50\x68\x24\x1b\xfd\x69\ \xf8\x3e\x27\x04\x70\x18\xb3\xba\x03\xb1\x61\x7c\xbf\x3a\x94\xc1\ \xe2\xda\x2f\xbe\x25\x54\xf2\x60\x49\x34\xb1\xc3\xb0\xef\x7f\x0a\ \x44\x27\x98\x91\x8a\x5b\xf5\xac\xf7\x3c\x3d\x35\xb0\xc6\x29\x30\ \xaa\xd1\xe2\x52\x4b\x5e\xe6\xfa\xd7\x1c\x9c\xe4\x4f\xfb\xab\xcf\ \x62\x70\xf8\x9c\x0c\x99\xd6\xe8\x2f\xa3\x2b\xdc\x1f\xca\x8a\x3e\ \x2d\x36\xd8\x80\xb3\x2f\x32\x56\xcd\xf5\xa7\xf7\x3e\x8c\x6e\xbf\ \x87\x6b\xf8\xd1\xe9\xfd\x54\x99\x24\x85\x75\x69\x47\xfd\x3a\xd5\ \x28\x24\xc3\x62\x85\xb0\xf2\x15\x7b\x5f\xc3\x7d\x3f\x3a\x19\x94\ \xa9\xb3\x0b\x11\x4d\xe5\xd2\xc5\xa6\xc5\xc2\x86\xe8\xae\xc7\xbe\ \x82\x82\x6e\x21\x24\xa9\xe1\x95\xca\x84\x58\x8c\xc4\xfe\xb5\x50\ \xd4\x56\x3f\x54\x86\x4c\x34\xa4\xfd\xd6\x3a\xea\x0e\xce\x4a\xda\ \x97\x34\x18\xd4\x5c\xca\xe9\x32\x0d\xf6\x20\x8e\xf7\xa7\x57\x2b\ \x14\x60\x54\xd8\xd1\x90\xeb\x35\x22\x84\xc8\x64\xc3\x01\x0c\x84\ \x1c\xd1\x1f\x44\x9e\xdd\x0d\x56\xc4\xc7\x97\x12\x63\x41\xec\x08\ \xd6\xb6\x71\x18\x13\x8b\x9d\x1a\x01\x95\x9f\x57\xe8\x2b\x51\x70\ \xf8\x68\xe1\x10\x01\xaa\x8b\x09\x40\xd5\x4d\x13\x86\xad\x79\xdc\ \x26\x0f\xc3\x0b\x2e\x24\x58\x9d\x55\x39\x9f\x7a\xbe\xb3\xc4\x8c\ \xa9\x3b\x64\x59\xd0\x59\xc0\xd8\x82\x77\xfa\xd0\x63\xf0\xd2\xe1\ \xe6\xb4\x87\x30\x6d\x43\xfe\x2a\x56\x2b\x0e\xf8\x98\x62\x58\x99\ \x3c\x80\xdf\x33\x58\xd1\xe7\x8b\xd6\xa6\x0b\x08\xe6\x70\xe5\xbc\ \x8b\x66\x0c\xba\xde\xae\x66\x0f\x3b\x2a\x87\x76\xbf\x9b\x28\x00\ \x2f\xcc\xd6\x3f\x0a\x3c\x4f\x02\xa5\x22\x78\x24\x43\xbc\x65\xef\ \x7f\x6a\xd6\xc0\xbc\x72\x42\x23\xb1\x8a\x76\xf3\x34\x64\xdf\xf3\ \xae\xbc\x2f\x4c\xd3\x4a\x91\x6b\x42\xef\xfe\x97\x1a\x7b\xd4\xa3\ \x5e\xe2\x42\x07\xff\x00\xd6\x87\x4f\x99\xe7\x42\x47\x6a\x95\x51\ \x7b\x90\x0d\x6c\x08\xb1\x0b\x95\x55\x54\x74\x51\x52\x80\x93\x43\ \x94\x11\x6d\x7e\xb4\x8c\x6b\x65\xfb\x95\x63\x7f\x8f\xf8\xab\x71\ \x2b\x83\xde\xd4\xc0\x53\x28\x2d\x2a\x29\x23\x66\x3a\xd2\x63\x8c\ \xbf\x94\x31\xa6\xaa\xa0\x3e\x33\x59\xf4\x01\x01\x1c\x86\x99\xab\ \x11\xa3\x4a\x84\x17\x91\x85\xb9\x65\x20\x93\xec\x2b\xac\x4a\x12\ \x30\xb3\xda\xdb\xdc\x54\x09\x5b\x93\x28\xee\x00\x15\xd7\xb9\xb9\ \x37\xfc\xe9\x06\xd9\xef\xe5\x85\x35\xe4\xf2\x58\xd4\x48\xd9\x06\ \x66\xc3\x4e\x07\x5b\x83\x40\xb7\xb0\x06\xa5\x4b\x03\x71\x71\x4a\ \xc0\x7d\xa8\xb7\x97\x0d\x03\xbb\x75\x61\x7a\xbf\xc3\x9a\x35\x16\ \x95\x44\x53\x30\xbd\x8e\xdf\xf9\xa8\xe1\xea\xce\xc5\xdf\xd2\xbc\ \x86\x97\x35\x66\x78\xa3\x9c\x5a\x54\xb9\xea\x34\x35\xa9\x2f\xa2\ \xd0\xca\xab\x88\x21\x33\x5e\x34\xd5\xcf\xe2\x3d\x05\x1a\xe8\x32\ \x8d\x14\x6c\x06\xc2\xb8\x21\x48\xc2\x20\xb2\x8d\xaf\x5d\x66\x3a\ \x11\x61\xce\x96\x51\x1f\xa3\xe7\x44\x05\x48\x15\xd6\xa9\x38\x54\ \xaa\xdc\xf4\x00\x5c\x9e\x82\x88\x21\x22\xf6\xd3\xa9\xaa\xdc\x47\ \x12\x91\x44\x61\x8d\x83\x3b\x8b\x31\x07\xd2\x29\xea\x7a\x99\x7f\ \xe2\x39\xde\x5c\x44\x6f\x1b\x11\x1b\x0c\xaa\x3a\x5a\x91\xc3\xb1\ \x72\xe1\xa5\xf5\x96\x46\xf5\x03\xaf\x3a\x2c\x59\xcf\x85\x0d\x63\ \xf7\x6c\x0f\xd7\x4a\xaa\xbe\xab\x74\xae\x36\xf7\xad\xe3\xd9\x42\ \xe2\x58\x04\x8b\xb7\xed\xca\xa2\x64\x12\xc2\x63\x26\xda\x82\x0d\ \x66\x7f\x87\xb1\x36\xc2\x80\x7f\xe5\xb1\x56\x17\xe4\x79\xd6\xa9\ \xec\x6e\x0e\xc6\xbd\x12\xec\x61\x2b\x65\x01\x57\x45\x5d\xab\x98\ \xde\xa2\xba\x94\xea\xe1\xb8\xae\xae\xa9\x05\x3d\x03\xda\xa1\x88\ \x02\xa2\x43\x96\xe7\x91\xde\x96\x5c\x6f\x63\x6e\xb4\x6a\x13\x35\ \xea\x2f\x43\x7b\xed\xad\x70\xa1\x08\x7f\x73\x40\x5c\xca\xb9\x22\ \x46\x2a\x4d\x99\xf9\x5a\x8b\x42\xac\xa4\x8f\x30\x22\x81\xa6\x8e\ \x1c\x22\xc8\xdb\x81\x60\xbd\xea\x49\xc7\x62\x57\x0d\x0e\x55\x3e\ \x72\x2c\x8b\xd0\x75\xac\xe4\x6b\xeb\x49\x9e\x57\x9a\x63\x23\x9b\ \x93\x4d\x48\xe4\x45\x0c\xc8\xc0\x75\x22\xb1\xfa\xda\xd6\x61\xa9\ \xbd\x6e\x70\x7c\x3f\x81\x17\x88\xe3\xef\x1f\x6e\xc2\xb0\xe1\xb6\ \x71\x7d\xaf\xad\x7a\x53\xea\x1d\x2c\x2d\xf4\xae\x9c\x27\x6c\xf2\ \x30\x1d\x2a\x0d\x4a\x54\x91\x5d\x59\x29\xc5\x03\xfa\x69\xac\x29\ \x6c\x39\x51\x51\x47\x7a\x5c\x83\xa9\x03\xdc\x8a\x29\xdf\xc2\x89\ \xa4\x3c\xb6\xf7\xac\xa4\xbc\xd8\x91\x9c\x17\xcc\x75\xb5\x63\x95\ \x31\x79\xd7\x4b\xdd\x6d\xfe\xa1\x49\x25\x4e\xc7\x37\xfa\x05\xff\ \x00\x3d\xa8\xca\x46\x86\xe9\x1a\x2d\xb9\xda\x85\x89\x3b\x92\x68\ \x20\x21\xef\xea\x11\x8e\xde\x66\xfe\x28\x48\xb1\x37\x79\x1b\xdc\ \x81\xfb\x51\x31\xa0\x63\x59\xa8\xb3\x06\x1b\x35\xfc\x22\x4f\x3b\ \xb5\x42\xbc\x71\xe9\x1a\xe4\xf6\x1a\xd4\xb1\xa0\x26\x82\x23\x3b\ \x6f\xe2\x3d\xfd\xcd\x04\x92\x17\x5b\x00\xbe\xf9\x05\x4e\x9d\x3f\ \x2a\x06\x00\xf2\xb7\xb5\x45\xca\xea\x17\x21\x8a\x36\x5e\x61\x96\ \xa9\x71\x0c\x0c\x0e\x9e\x26\x1f\x07\x11\xfc\x48\x14\xdc\x77\xab\ \x7a\xdb\xad\x40\x24\x1b\x8b\x82\x3a\x51\x64\xa9\x84\xcb\x00\x24\ \x1c\x32\x0e\xb6\xb8\x22\xb4\x70\x03\x0f\x89\x83\x2b\x02\x64\x5d\ \x02\x97\xd6\xdf\x4a\xb3\x89\x86\x1c\x40\x1e\x34\x76\x61\xf1\x2d\ \x81\xaa\x72\xf0\xdb\x31\x31\x62\x00\x3c\x83\x0b\x7e\x75\xcf\xf3\ \x65\x6b\x61\xcd\x86\xc3\x29\xb3\x40\xe0\x8e\xae\x69\x58\x98\x70\ \x91\x2e\x62\x18\x5f\x61\x7b\xd4\x88\xf8\xbc\x63\x2c\x72\x19\x07\ \xf4\xb0\x6b\x50\xcb\x3e\x35\x7c\x98\x8c\x1e\x7d\x39\x2d\xbf\x4a\ \x7a\xfe\x01\x61\xa3\xc2\x4b\x19\x61\x1b\x12\xbb\xdd\xad\x4e\x8d\ \x63\x12\x00\xb0\xc6\xba\xda\xe0\x6b\x55\x63\xe2\x10\x44\x32\x36\ \x19\x96\xfe\xa0\x0d\xa8\xcf\x11\xc1\x5e\xf9\x27\xfa\x8a\xb6\x21\ \xc4\xa0\x33\xce\x45\x99\xd8\x81\xfd\x20\x69\x52\x8a\xcc\xc0\x0d\ \x49\xa0\x18\xec\x26\x63\xe4\x93\x2b\xea\xb7\x61\x6c\xdd\x3b\x5e\ \xaa\x62\xf8\x94\x85\x5a\x28\xa2\x10\x83\xa1\xeb\x46\xc8\x85\xc6\ \xa6\x8d\x82\x40\x87\x31\x8c\x9c\xcd\xcb\xda\xa9\x28\xa1\x07\x5a\ \x35\x3a\x57\x3d\xde\xda\xc4\x93\x6a\xe4\x62\xae\x19\x4d\x88\xd8\ \xd7\x1a\x8e\x75\x44\xdd\xc3\x4d\xf6\x9c\x1a\x4c\x4f\x9c\x79\x5f\ \xdf\xad\x1a\x9a\xce\xe0\xb8\x85\x8e\x46\x86\x56\xb4\x72\x0d\xfa\ \x1e\x46\xb4\x8a\x95\x6b\x1a\xed\xc6\xec\x66\xa5\x9f\xc3\x85\xe5\ \xe6\xa3\x4f\x7a\xce\x04\x93\x73\xa9\x35\x77\x19\xff\x00\xed\xf2\ \x7f\xa9\x6b\x3f\x52\xb6\x1b\xde\xae\x4a\x2c\x46\xaa\x50\xeb\x9a\ \x31\xff\x00\xfd\x0f\xf1\xfa\xd1\x31\x2c\xd7\x63\x44\xe1\xcb\xf9\ \xc5\x8f\x4b\x5a\xd5\x39\x68\x41\x17\xe5\xa5\x4d\x8f\x3b\x9a\x20\ \xbd\x68\x82\xd3\x8b\x42\xa2\x8a\xd4\x40\x57\x01\x48\x5e\xc1\xae\ \x5c\x2a\xdb\xe2\x24\xd3\x00\x3a\xd8\x6b\x6d\x2f\xd6\x87\x00\x73\ \x61\xb2\xde\xe5\x0e\xdd\xa8\xe5\x0c\x19\x55\x05\xdc\xec\xbf\xb9\ \xad\xb2\xab\x84\x5c\x44\xa5\x9b\xc6\x65\x50\x75\x37\xe7\x56\x82\ \xb8\xf8\x8c\xab\xce\xfa\x30\xfe\x68\xa0\x87\xc2\x84\x25\xee\x49\ \xbb\x7b\xd1\xaa\xda\x99\x10\x14\x06\x17\x53\x7b\x6e\x2d\x62\x3d\ \xe8\x71\x32\xc7\x86\x8c\x33\x82\xcc\xde\x95\x15\x60\xda\xe1\xc8\ \xdb\x46\x3d\x8f\xf0\x6a\x97\x1e\x53\x68\x4d\xb4\x00\x8f\xce\xab\ \xd4\x4a\x38\xbc\x44\xb3\xb9\x2c\x48\x5e\x4a\x36\x15\x56\x6b\x86\ \x03\x91\xa6\xb6\xf4\x32\x8c\xc9\xa6\xe0\xd7\x2b\xdb\x63\x2b\x9a\ \x39\x13\x7c\xc8\x6c\x2b\x32\x31\x6a\xd6\xc3\xa4\x84\x24\x99\x18\ \xaf\x33\x6a\xcd\x99\x32\x4c\xeb\xd1\x88\xac\xf2\x89\x77\x80\x37\ \xdf\xc9\x17\xfe\xe2\x7e\x63\x51\x5b\x38\x2c\x46\x82\x29\x2d\x6f\ \x84\xf4\xaf\x3d\xc3\xa4\xf0\xb1\xd1\x49\x6d\x98\x56\xcc\xca\x15\ \xca\x8e\x46\xba\x70\xbd\x0a\xd2\x20\x8f\xe6\xa2\xb3\xe2\x9a\x58\ \xfd\x0e\x40\xe9\x4e\x18\xd9\x00\xf3\x22\x37\xca\xd5\xd3\xf5\x19\ \xc5\xaa\x83\xb5\x57\x18\xdd\x75\x85\x7e\x44\xd7\x1c\x62\x69\xf7\ \x47\xbf\x9a\xad\x8b\x0c\x7d\xe8\x0d\x29\xf1\x84\xe8\xb0\xaf\xd4\ \x9a\x53\xe3\xa4\x07\x41\x18\xed\x96\x8d\x87\x0f\xc8\x3b\xfd\x6a\ \x42\xad\xf6\xaa\x9f\x6c\x97\xf1\xaf\xd0\x51\x2e\x32\x41\xba\xa3\ \x0f\x6a\x36\x2c\x5b\x05\x63\x46\x91\xb4\x54\x17\xf7\xac\x8c\x4c\ \xad\x2c\xcd\x2d\xaf\x7d\xd0\x73\x1d\xbb\xd6\x9a\x62\x20\x91\x1a\ \x39\x03\x28\x75\xb1\xe9\x59\x93\xc4\x62\x90\xad\xee\xa7\xd2\x7a\ \xd6\x79\x18\xb1\xc2\x70\xcb\x2c\xa6\x56\xf3\x46\x9a\xfb\x9e\x95\ \xab\x9f\x30\x2a\xe0\x32\x9f\x84\xed\x59\x3c\x3b\x10\xd0\xc8\xc0\ \x65\xcb\x26\xe0\xec\x4f\x7a\xd5\x4b\x32\x07\x5f\x49\xfc\x8f\x4a\ \xd7\x0f\x05\x51\xc7\x41\xe0\x4a\x0a\xff\x00\x96\xfa\xaf\x6e\xd5\ \xb1\x80\x98\x4f\x83\x47\xbe\xaa\x32\xb5\x52\xc7\x28\x6c\x03\xdf\ \xe1\x21\x85\x07\xf8\x7e\x52\x27\x78\x4e\xce\xb7\x1e\xe2\xb5\x3a\ \xa2\xf8\xd8\x8d\xb5\xb1\xa6\x83\xa5\x57\x06\xfa\xd3\x11\xb4\xae\ \xac\x8d\xe9\x2f\xbd\x30\x9b\xd0\xb6\xba\x54\x95\xf1\x68\x1e\x02\ \xa4\x68\x59\x7f\x5a\x51\x45\x40\x42\x22\xa8\xec\x2a\xcc\x80\x98\ \xd8\x0d\xed\x71\xdf\x9d\x2d\xc0\x3a\x8d\x8e\xa2\xb1\x61\x55\x90\ \x69\x6a\x5b\x69\x56\x1d\x75\xa4\xc8\xa4\x56\x69\x25\xa8\x1f\x4a\ \x61\x14\xb7\x15\x84\x5b\x9d\x68\x68\xce\xf5\x0c\x2a\x32\x80\xef\ \x43\xa5\xe8\x88\xd2\x84\xd4\x50\x68\x6b\x89\xa8\xbd\x1a\x93\x42\ \xdb\x57\x72\xa8\x6b\x05\x2c\xcc\xaa\xa3\x99\x34\x20\x10\x2f\xb5\ \x48\x69\x14\x59\x64\x70\x3b\x35\x46\x68\x7f\xf7\xd0\x7b\xd1\x32\ \x90\x3b\x75\x07\x4a\x93\xbc\x57\x1b\x90\x7d\xd4\x1f\xda\x93\x24\ \x78\x69\x2e\x24\xc3\x47\xee\x83\x29\xa3\x61\xce\x85\xa8\xa6\x14\ \xd8\x4c\x13\x23\x28\x59\x10\x1d\xfc\xc1\x81\xf9\x50\xae\x0b\x09\ \x75\x52\xf2\xca\x3e\x1c\xda\x11\xfd\x34\xeb\x50\xca\xa4\x02\x14\ \x7d\xe3\x8f\x20\xef\xd6\xb3\x90\x99\x19\x48\x85\xa1\x85\x23\xe5\ \xe9\xb9\xa3\xce\x24\x19\x65\x8e\x37\x1d\x0a\x8f\xda\x97\x23\x03\ \x26\xfa\xf3\xf7\xa9\x43\xad\x86\xf5\xa0\xa7\xc5\x70\x89\x08\x59\ \xa1\x2d\xe1\xb9\x37\x07\xe1\x3d\x2a\x90\xad\x4e\x35\x2a\xc7\x85\ \x18\x60\xc0\xbb\x36\x67\x03\x90\xe5\x59\x43\x38\x37\xbe\x9d\xab\ \x9f\x39\x34\xc3\x2d\xa5\x5a\xc3\x71\x0c\x4c\x4a\x13\x30\x74\x02\ \xc1\x5c\x5c\x0a\xa6\xcc\x2e\x32\xde\xe3\xad\x19\x3a\x5f\x29\x17\ \xa2\x74\xbd\x6b\xc5\x8a\x87\x17\x87\x92\x30\x9e\x1c\x85\x7d\x37\ \xd0\xfb\x55\x58\xe3\x66\x6c\x80\x6b\xfa\x52\x38\x79\x61\x89\x89\ \x81\xd4\xb8\xd6\xb5\xf1\x50\x09\x99\xd6\x18\xec\xaa\x7c\xe8\x3e\ \x3d\x34\x1e\xdd\xab\xa4\xff\x00\x28\x3c\x5e\x6c\xad\xe4\x91\x03\ \x0e\xa7\x7a\x54\xd8\x20\x7c\xd0\xb5\xff\x00\xa4\xef\x56\x05\x88\ \x2d\x96\xc6\xe4\x10\x77\x16\xa9\xb7\x3d\x2f\x5d\x71\x86\x6b\x23\ \x23\x65\x60\x41\x1b\x83\x51\x6a\xd2\x9d\x12\x58\xfc\xe8\x73\x5b\ \x46\xb6\xd5\x9f\x30\x68\xc9\x52\x3c\xc3\x4b\x56\x6c\x6a\x22\xa4\ \x0a\x08\xcb\xde\xe7\x5f\x7a\x60\x64\x04\x29\x0e\xcc\x75\x08\xa3\ \x5a\x91\x98\x67\x68\x98\x32\x9b\x66\x60\xbf\xef\xe5\x5a\x3e\x81\ \x68\xc5\xc1\xd7\x37\x36\xee\x6b\x32\xc7\x38\x67\x00\x65\xf4\x20\ \x37\xd7\xa9\xab\x58\x09\xf4\xf0\xa4\x3a\x7c\x24\xf2\xad\x71\xa2\ \xac\x80\x48\xe9\x5d\x62\x07\x5a\x3b\x5b\x43\x5d\x5b\x08\x16\x23\ \x5d\x54\x8b\x1a\x46\x22\x29\xe6\x84\xc2\x02\xb8\x02\xea\xd7\xb1\ \x27\xa5\x3f\x28\xde\xd5\x0c\x0a\xea\x9a\x1d\xed\x45\x4c\x09\x4b\ \x47\x7f\xf8\x69\x49\x1c\x88\xfe\x2b\x94\x87\x85\x64\x00\x8b\xe8\ \x47\x42\x2b\x5f\x88\x61\x9a\x71\xe2\xc1\xfe\x67\xc4\x2f\xbf\x71\ \x54\x57\x0f\x2b\x4c\x10\xc6\x47\x8b\xdb\x98\xfe\x47\xe9\x5c\xef\ \x1c\xad\x4a\xd2\xc2\x1f\x0f\x86\x21\x51\xb4\x45\x88\xeb\xad\x60\ \x71\xa8\xc0\xc5\x78\xaa\x34\x70\x09\xf7\xb5\x7a\x0c\x53\x2a\xe0\ \xce\x5d\xb2\x84\x51\x59\xfc\x6b\x0c\x17\xc2\x4b\x82\x64\x8c\xe5\ \x27\xad\xf4\xfe\x29\xe7\x36\x08\xc4\xad\xd5\x7f\x17\x0f\x14\xa3\ \xe2\x40\x0f\xb8\xac\x47\x5f\x2e\x70\x08\x04\x90\x41\xf8\x4f\x31\ \x5a\x7c\x20\x93\xc3\x98\x1f\x86\x4d\x3e\x95\x8e\x3e\xe3\x55\x61\ \x45\xc8\x02\xa4\xa9\xcb\x7d\x0d\xba\x1b\xd0\x48\xc5\x30\xee\xe3\ \x70\x2c\x3e\x75\x21\x12\x28\xe3\x91\x17\xd3\x6c\xdf\xd4\x0d\x6c\ \x3a\xb9\xb4\x15\x2c\x32\xb1\x1d\x2a\x18\x12\x45\xad\x61\xca\xf5\ \x00\x15\x36\xd7\x5a\x19\x0a\xc7\x11\x76\x07\x28\x36\xd0\x53\x09\ \x6c\xd9\x42\xeb\xef\x43\x32\x13\x86\x93\x31\xbf\x97\x6b\x54\x41\ \x19\x49\x14\xb4\x6c\x0d\xb7\x16\xd4\x57\x65\xe9\x4a\xc1\xe1\xa4\ \xc8\x25\x49\x42\x13\xe9\x16\xde\xac\x44\xfe\x20\x60\xcb\x96\x44\ \xf5\x2f\xef\x44\xff\x00\xa8\x20\x75\x15\x24\x02\x2c\x45\xc5\x16\ \x95\x1f\x5a\x51\x7f\x67\x66\x04\xa0\xcc\x2d\xa8\x1b\xd1\xe0\xb1\ \x72\xe1\x9f\x2c\x77\x65\xb8\xcf\x13\x7c\x5e\xdd\x0d\x1c\x32\x34\ \x52\x07\x4d\xc5\x5c\x9e\x1c\x3e\x2e\x21\x29\x05\x5b\x9b\x2f\x2f\ \x7a\xa4\xfe\x2d\x51\xe2\x1c\x60\x3e\x58\x63\x8c\x04\x27\xef\x05\ \x8d\xea\xd7\x03\x8f\x36\x29\x67\x43\x78\xd0\x5e\xff\x00\xb5\x4a\ \x70\x9c\x37\xda\x04\xcd\x3b\x16\x03\x5f\x2e\xe7\xad\x5c\x8a\x35\ \x89\x6d\x0e\x97\xd4\x92\x3d\x5e\xe2\xb5\x25\xdd\xa2\xe7\xc5\x85\ \x24\x53\x01\xb8\xa4\x23\x66\x21\x6d\x95\xed\xe9\xeb\xdc\x75\xa3\ \x0d\x63\xa9\xb5\x74\x60\xca\xeb\xd7\x02\x0d\x56\x9b\x14\xd1\x4a\ \xc8\xf1\x03\x6d\x88\x3b\xd5\x6e\x25\x9b\xeb\x42\xe2\xde\x65\x17\ \xe6\x54\x73\xf6\xef\x41\x87\xc4\x47\x30\xb0\xf2\xb7\xe1\x3c\xe8\ \xf3\x6b\x56\xea\x29\x80\x6f\x4d\xc8\x3b\x11\x48\x11\xda\xf9\x97\ \xe7\x56\x25\xba\x13\x2c\x6a\x48\xf8\xd0\x7e\xa2\xa1\xca\x90\x19\ \x48\x65\x3b\x11\xce\x8b\x0c\x54\x91\x2d\xb5\x2d\x94\xf2\xb5\x5a\ \x75\x06\x94\xc9\x58\xb0\xab\x32\x91\xc8\x7c\x8d\x03\xe6\x03\xd2\ \x6a\xc3\x2d\xa8\x6d\x59\x4a\xb9\x81\xed\x42\xe5\x6d\xbd\x14\xb1\ \x95\x6b\x5b\x4a\xe0\x05\xb6\x15\x34\x43\xb0\x1d\x6a\x01\xb8\xb8\ \xd0\x51\xca\x97\x3a\x69\x4b\x54\x65\x3b\xdc\x56\x6a\x49\x02\xdb\ \x5f\xde\x86\x50\x81\xa2\x76\x00\x05\x72\x09\xe9\x71\x44\x76\xae\ \xd0\x82\xad\xaa\xb0\xb1\x15\x20\xc8\x5b\x35\x9c\x66\x1c\xc1\xd6\ \x80\x8f\x08\xf8\x90\x6a\xa7\xd7\x1f\xf1\x44\x97\xcf\xe0\xbe\xac\ \xa2\xea\xdf\x8c\x54\xae\x8c\x0e\x97\x15\x17\x2b\x24\xa9\x9e\x32\ \x48\xe6\x08\xda\x84\xad\x74\x51\x04\xc4\x4d\x97\x45\x75\x0c\xa0\ \x1e\xf5\x24\x74\x63\x42\x27\x15\x2b\x40\xea\x88\x80\x16\xb7\x9d\ \x85\xc5\x31\x62\x60\xe5\x54\x34\x92\x36\xef\xcc\xfb\x76\xa9\x0c\ \x1a\x3c\xb2\x00\x50\xee\x0d\x54\xe3\x12\xcd\x87\x85\x30\xb8\x7c\ \x59\x8d\x59\x73\x12\x45\xcd\x8d\x17\xae\xd2\xd4\x91\x88\x96\xf3\ \xba\xc6\xbd\xcd\xef\x55\x66\xe2\x49\x1d\xd7\x0a\xa4\x9b\x7a\xdf\ \x97\xb5\x50\x88\xb1\xf2\xac\xcc\xe3\xf0\xcc\x74\x6f\x63\xca\xad\ \xe1\x38\x78\x95\x81\x93\x34\x00\x9d\x15\xac\x4b\x7b\x56\x76\xdf\ \x0a\xb2\xe6\x91\xaf\x62\xce\x4e\xbc\xcd\x5e\xc3\x70\xc9\x99\x33\ \x4a\xcb\x08\x23\x4c\xda\x93\xf2\xab\xf8\x68\xe2\xc3\x8c\x98\x68\ \x80\x6e\x6e\xda\xb7\xf6\xae\x79\x61\x56\x39\xe5\x24\x8d\xca\xae\ \x6b\x7c\xe9\x9c\x27\xd1\xaa\x91\xf0\x60\xe4\x01\x8c\x4b\x9d\x00\ \xc8\x75\xaa\x33\x06\x8e\x46\x8d\xac\x72\x92\x2f\xd6\xb7\xf0\xcd\ \x1e\x51\x88\x0d\x78\xd2\xec\x49\x16\xda\xb1\x1c\x78\xd2\xb1\x03\ \xd6\xd7\x03\xde\x9e\x5c\x64\xf1\x4a\x77\x02\x84\xcb\x8d\x0c\x7d\ \x11\xf9\x9e\xb7\x20\x8c\x04\x90\xa9\xd5\xa4\xd7\xb5\xa9\x38\x5c\ \x32\xe1\x30\x8b\x11\xf5\xb6\xb2\x69\xf9\x55\xc4\x06\xf9\x94\x8b\ \x91\x62\x1b\x66\xe9\xec\x6b\x7c\x78\xe4\xc6\x6d\x42\x92\x54\x16\ \x3e\x66\x25\x9b\xb5\xff\x00\xd8\xa9\x06\x93\x01\xcf\x96\x55\x1e\ \x52\xa3\xf4\xb5\x36\xb4\x04\x0d\x74\xa8\x26\x8f\x21\xb6\x61\xe9\ \x6e\x86\x86\xf5\x20\xd2\x99\xec\x0a\xb1\x07\x71\x52\x4f\xfc\x4b\ \x8d\x8f\x82\xb6\xfa\xd5\xae\x20\x83\xc3\x38\x83\xb2\x0f\x38\xeb\ \x58\xf1\x4e\xff\x00\x6b\x38\x86\x42\x55\xae\x0e\x9a\x5a\xb1\x7a\ \x6a\x2e\x8a\x35\xa1\x4c\xae\x99\xa3\x60\xcb\xfa\x51\x8e\x94\xa6\ \x86\x0a\x6f\x16\x3c\xac\x46\x75\x1a\x77\x14\xda\xce\x81\xcc\x72\ \x87\x07\x63\x5a\x4c\x3c\xda\x6c\x75\x15\xb9\x59\xa9\xa8\x22\xa4\ \x6d\x5c\x69\x45\x95\x2a\x6e\xbf\x4f\xe2\xa6\xe5\xd3\x29\x73\x66\ \xd8\xf4\x3d\x68\x88\xa0\x65\x20\xdd\x34\x3d\x3a\xd4\x95\xe3\x49\ \x65\xc4\x2a\x4a\xbe\x55\x62\x49\xb6\xfa\xd4\x7f\x88\xd4\xb6\x06\ \x39\x47\xc2\xf6\x3d\xaa\xcc\x57\x08\x01\xb8\xae\xc6\x28\x7c\x04\ \x88\xcb\x71\xa1\xac\xe7\x49\x82\xf8\x49\x64\x8f\xed\x09\x18\x39\ \xc7\xde\xa0\xdd\xba\x30\xef\x56\xb0\x91\x78\x18\x35\x8c\x9b\xb3\ \x9c\xe7\xf6\xa6\x66\x21\x81\x5d\x2d\xa5\xab\xac\x02\x15\x1b\x29\ \xba\xff\x00\xa4\xff\x00\xb3\x58\x93\x1a\xd7\x05\x0e\x8c\x8c\x6c\ \x18\x5a\xfd\x2a\xa3\x62\x4c\x70\x18\x0a\xdc\xdb\x2a\x91\xef\x56\ \x74\xcc\x09\xda\xd5\x2e\xb0\xbc\xaa\xcd\x18\x62\x39\xd5\x40\x97\ \x3b\x46\xac\xc1\x41\x65\x04\xde\xa0\x82\x39\xaf\xbd\xa8\x9d\xff\ \x00\x2e\x54\x05\xa9\x4e\x1a\x0b\x0b\xf7\x35\x28\x03\x5d\x18\x68\ \xc2\xc6\x82\xfa\xd7\x4a\xe6\x38\x19\xc6\xe3\x41\xda\xf5\x27\x46\ \x2d\x87\x41\xcc\x5c\x7e\x74\x13\xab\xf8\xab\x88\x8c\xdd\x90\x79\ \xd7\xa8\xa6\x40\x19\xf0\xf1\x04\x17\x25\x2d\xa7\x5a\xb5\x86\xc2\ \x28\x23\xc6\x24\x96\xd3\x28\x36\xb5\xea\xcd\x4a\x6e\x41\x01\x94\ \xdd\x58\x5c\x50\xd5\xfc\x3a\xe1\x9e\x20\x82\x38\x83\x47\x71\x66\ \x3c\xaf\x4a\xc4\xc3\x87\x22\xf0\xc8\xa5\xbf\x00\xd6\x9c\x5a\xab\ \x4d\xc3\xca\x62\x7b\xee\xa7\x42\x3a\xd2\xb5\x04\x82\x2c\x6a\x77\ \x34\x16\x9c\x46\xf1\xa9\x06\xe0\xec\x68\xef\x54\xb8\x7b\xb3\x46\ \x50\x1f\x49\x24\x03\xd2\xad\x8a\xdc\xac\x98\x32\xba\xe5\x71\x71\ \xf9\x8e\xe2\x97\x2c\xb2\xc5\x20\x49\xc9\x92\x36\xd5\x5f\x98\xf7\ \xa2\x5a\x62\x3e\x53\x72\x74\x3a\x1a\x50\xa3\x7f\x28\x2b\xe6\x1e\ \xf5\xd8\x88\xd7\x11\x1f\xf5\x0d\x8f\xec\x6a\xbe\x2c\xf8\x0c\xb3\ \xc4\x72\x82\x6c\x40\xf4\x9a\x6e\x16\x5f\x19\x4b\x65\xca\xcb\xbd\ \xb9\x8a\xb7\xe5\x0a\x48\xae\xd2\x05\x4f\x55\xf4\xab\xe2\x56\x5b\ \x2e\x23\xca\xc7\x66\xf8\x5b\xe7\xd6\x95\x2c\x46\x2c\x40\xc4\x47\ \x72\xb7\xf3\x2d\xef\x6a\x6b\x32\x11\x63\x62\x0e\xd7\xe7\x54\x98\ \x85\x72\x06\x61\xb7\x51\x49\x90\xe4\x6c\xcb\xa2\xc8\x6c\x47\x2c\ \xdd\x6a\x56\x24\x56\xcc\x85\x93\xfd\x26\xd4\xbc\x44\x02\x4d\x4c\ \xd2\x5f\x95\xf5\x15\x5d\x43\x06\xf4\x2f\x42\x09\x03\x5f\x50\x16\ \x36\xd9\xbb\xd4\x92\x0a\xdf\xad\x04\x04\xde\x81\x85\x11\xde\x85\ \xa8\x41\x61\xa5\x25\xc6\xb4\xe6\x34\xa6\x35\x94\x4c\x82\x96\x69\ \xce\x39\x52\xd8\x6b\x53\x40\x61\x42\x45\x19\xa1\xac\xa2\xe7\x42\ \xf1\x66\x53\x69\x22\xd5\x4f\xed\x52\xb9\x65\x8d\x65\x5d\x2f\xbd\ \xb9\x1a\x35\xd1\xae\x39\x52\x9e\x19\x52\x63\x26\x1e\x40\x81\x86\ \xa0\x9d\x8d\x45\xd3\x12\x98\xac\x39\x20\x9c\xca\x41\x15\xd7\x63\ \x7b\x0f\x9d\x32\x30\x14\x16\xbe\x79\x1b\xd4\xe7\xf4\x1d\xa8\x58\ \x00\x2e\x36\xe9\x42\x2c\x29\x1b\xd5\x4f\xf1\x08\x6f\x16\x27\x03\ \xca\x63\x02\xfe\xd5\x7c\xed\x4a\xe2\x31\x78\xbc\x3d\xf6\xcd\x17\ \x98\x1e\xdc\xe8\xb3\xa5\xac\xfe\x0b\x1a\xcb\x8e\x51\x20\xb8\x00\ \x9b\x56\xb3\xbf\x8a\x32\xc9\xe9\xf8\x6d\xf0\xfb\x56\x67\x04\x36\ \xc7\x82\x7f\x09\xfd\x2a\xfa\x99\x5d\xc8\x81\x63\xc8\x86\xc5\x9f\ \x99\xa3\x87\x8a\x8d\x56\x76\x19\x67\x99\x5a\x3f\xe9\xf5\x37\x63\ \x4d\x57\xd3\x2e\x55\xc9\xf8\x6d\xa5\x0a\xa9\x63\x94\x80\xaf\xbe\ \x50\x6e\x1b\xb8\x35\xda\x83\x62\x2d\x5b\x05\x71\x29\x46\x1f\x02\ \xd8\x54\x56\x19\x9a\xe0\xf2\x2a\x75\xa5\xff\x00\x87\xe2\x0d\x88\ \x69\x98\x5d\x62\x17\x00\xf3\x3c\xa9\x9c\x63\xcc\x72\x58\xe9\x11\ \x00\xf2\xba\x9f\xe2\x8f\x81\x9f\xff\x00\x1d\x25\xbf\xf7\x47\xe9\ \x47\xff\x00\x47\xe2\xf0\x39\xef\x7e\x74\xd8\x90\x0f\x88\xe9\xa9\ \xa4\x47\x47\x88\x7c\x98\x29\x9b\x63\x96\xc0\xf7\x35\xb6\x04\xa5\ \x40\x01\x54\x01\xca\xc2\x8a\x92\x9a\x0f\x2e\x9d\xb9\x1a\x60\x61\ \x60\x7a\xd4\x85\x7a\x91\x40\x0d\xe8\x85\x49\xd3\x58\xe0\xe6\x56\ \x1a\x3a\x65\xff\x00\x7f\x4a\xa2\x80\xc5\x12\x46\x0e\xca\x2f\xde\ \xae\x62\xce\x5c\x04\xff\x00\x89\x92\xca\x3b\xd5\x18\x24\x12\xc4\ \xac\xcc\xaa\xca\x2c\xe0\x9b\x5a\xab\xe9\x89\xca\xab\x8b\x81\x96\ \xca\x5e\xf9\x80\xd8\xd3\x4e\xf4\x99\xd1\xe6\x64\x31\xb0\x44\x4d\ \x9c\xf3\xee\x05\x1f\x88\x43\x85\x94\x7a\x8d\x84\x8b\xb1\xf7\xa2\ \x13\x2b\x4f\x0c\xd9\xb0\xc8\xda\x6d\x63\x59\x7b\x1b\x1d\xc5\x5f\ \xe1\xcc\x0e\x19\x97\x9a\x9b\xd6\xb8\xfa\x29\xe4\xd7\x03\x51\x5d\ \x5b\x02\xae\x35\xc2\xba\xa4\x1a\x92\x33\x44\xeb\xd5\x48\xa9\x22\ \xba\x2f\x58\x1d\x74\xa9\x32\x69\x8b\xa8\xf7\x4d\xbd\x8f\xf7\xa8\ \x98\x65\x91\x97\xa1\x22\xa0\xb8\x46\x88\x9d\x03\x12\xa7\xe7\x5c\ \xcb\x98\xe9\x60\x37\xae\xf4\x8b\x57\x35\xd5\x85\xc5\xb7\xa1\x26\ \xf5\x24\x31\xae\xd0\x2b\x33\x1b\x2a\x8b\x9a\x93\x50\x50\x3c\x61\ \x0e\xcc\xd7\x3e\xc0\x5f\xf8\xa8\x82\x19\xe1\x95\xb2\xa1\x60\x79\ \x06\xe7\x57\x70\xf8\x4c\xe8\x7c\x6d\x10\xfc\x36\xd4\xd0\x43\x85\ \x18\x84\x0e\x55\x54\x21\xf2\x5b\x4f\x95\x5b\xc3\xc8\xef\x9d\x25\ \x5b\x3c\x7c\xfa\x8a\x64\xfe\x8b\x5d\x0c\x71\x61\x80\x48\x97\x2c\ \x6f\xb1\x26\xe5\x5b\xdf\xbd\x17\xa5\xae\x46\xa0\xd4\x92\x2c\x41\ \x17\x07\x71\xd6\xa2\xc4\x28\x55\x90\x10\x3f\x1a\xdf\x4e\x97\xde\ \xb6\x19\xb8\xf8\x72\x62\x2c\xb7\x21\xc5\xc5\x0e\x59\xb0\xd2\xab\ \xb2\x15\x23\x51\x71\x57\xd2\x39\x3c\x7f\x1a\x56\x4b\x80\x42\x2a\ \xeb\x6a\x31\x7b\x65\x36\x20\xee\x0e\xd5\x9c\x3a\xcb\xc5\xe2\x13\ \xc4\x0e\xf1\x39\x32\x0b\xf9\x0d\xea\x22\x78\xe5\x04\xc6\x4e\x61\ \xba\xb0\xd4\x53\xf8\xb8\x5c\x2c\xb0\xcf\x1a\xdd\x42\x90\xca\x0e\ \xab\x7a\xcd\x77\x93\x11\x8e\x0f\x87\x52\xad\x6e\x7f\xa9\xac\x5b\ \x94\xc5\xfc\x1b\x14\xc4\xa9\x02\xe0\x9b\x69\x57\xa3\xf1\x33\x9b\ \xdc\x0e\xf5\x47\x0e\x59\x5d\x5a\x50\x8d\x62\x09\x68\xf9\x7c\xab\ \x51\xc7\x98\x90\x41\x5b\xe8\x45\x6f\x88\xa1\x19\xba\x8f\xa5\x12\ \xb6\xe0\x8a\x8a\xe5\xf5\x8f\x7a\xd0\x06\x28\x2c\xa5\x70\xcb\xa1\ \xbd\xd8\x81\xb5\x33\x0f\x14\x31\xae\x58\xc3\x2b\x1d\xc9\x35\x53\ \x0d\x37\x87\x8d\x71\x29\x23\x35\xc1\x35\x70\xd8\xe8\x75\xf6\x34\ \x4f\xea\x10\x72\x0d\x8e\xff\x00\xad\x0e\x89\xa0\x07\xc3\xfa\xe4\ \xfe\xd4\x19\x6e\xc7\x33\x1d\x0e\x95\x20\x10\x74\x66\xa5\x08\xf9\ \x40\x20\xdd\x08\xd0\x8d\xa8\x58\xd0\xc8\x59\x15\x98\x05\x2a\x7d\ \x63\xf7\x15\xce\x6c\x05\x8d\xc1\xd8\xf5\xa9\x21\xbd\x54\x27\x7f\ \x7a\xe6\x3a\x7b\xd0\xb1\x36\xd3\x71\x59\x4e\x34\x2d\x44\x35\x17\ \x1b\x50\xbd\x15\x16\xc7\x7a\x07\xda\x88\xef\x40\xf4\x20\x9a\x17\ \xa2\xa1\x6a\x9a\x03\x0a\x13\x47\x42\x45\x15\x06\xd5\xc4\x03\xa5\ \x49\xd0\x57\x0c\xdd\x85\x08\x20\x11\xa0\xd4\x54\x10\x49\xd6\xd6\ \xa9\x62\x46\xeb\xf4\xa3\x58\x99\x97\x35\xac\xb6\xf5\x1d\x05\x48\ \xa5\x60\xd5\x18\x86\x58\xb0\x92\xbb\x91\xe6\x52\xaa\x0f\x33\x4a\ \xc4\x62\x20\xc3\x7c\x42\x57\xe4\x14\xe9\xf5\xaa\x38\xa9\xe7\xc5\ \x38\x0e\x6f\xaf\x95\x40\xd2\xb3\x79\x61\xc1\xf0\x78\xd9\xf1\x7a\ \x72\x46\xb9\xe9\xa5\x68\xc2\x99\x21\x64\xb5\x8a\xc9\xaf\x7b\xed\ \x43\x81\x80\xe1\x70\xc5\x5a\xde\x24\x9e\xa1\xd0\x53\x88\x62\x33\ \xa2\xe6\x60\x2c\xcb\xf8\x87\xf2\x29\xe3\x32\x2b\x43\xe5\x65\xc8\ \xe2\xeb\x7f\x98\xf6\xa9\x80\x3b\x19\x22\x63\x9a\x48\x9a\xda\x6e\ \x45\x28\xca\x89\xe6\x6c\xe0\x77\x4b\x52\x10\xc9\x89\xc7\xb1\x52\ \x63\xce\x6e\x48\x3b\x0a\xb5\x62\xdf\x12\x2a\x20\x45\x76\xca\xea\ \x49\x23\xaa\xda\xc6\xff\x00\x2d\x7e\x55\x5f\x81\x4e\x23\x99\xb0\ \xf2\x1b\x24\x9a\x7b\x1e\x55\x6e\x18\xa0\x89\x83\x14\xce\x79\xb3\ \x9d\x4d\x63\x71\xbc\x46\x27\x09\xc5\xa5\x82\x19\x59\x62\x43\x74\ \x17\xe5\xca\x8e\x5d\x76\xa7\xf1\xbc\x64\xcb\x70\x07\x9a\xfc\xc6\ \xd4\x67\x58\xd5\x5c\x96\x56\x7b\x9b\x74\x03\x5f\xda\xab\xae\x35\ \x25\x8e\x27\x92\x36\x66\x96\x30\xc0\x82\x2f\xd3\x5f\xa5\x58\x52\ \xe0\x16\x75\xc8\x58\x65\x55\xe6\xa3\xbd\x74\x96\x56\x52\xba\x0a\ \xeb\xdb\x6d\xb9\x8a\x59\x6b\x30\x1c\x88\xa9\x27\x43\x52\xc3\x97\ \xda\x8a\xe1\x53\x33\x9b\x2f\x7a\xab\x2c\xa2\x30\x19\xda\xec\x46\ \x8b\xfc\xd5\x77\x9a\x49\x48\x32\x1d\x46\x80\x0d\x80\xa3\x62\xc3\ \xa6\x99\xa5\x92\xe3\x45\x1b\x0e\x94\x24\x86\x3e\x75\x56\x3d\xc5\ \x2c\x1a\x2b\xd1\xa4\x45\xae\x75\xa0\xc6\x10\x30\x4f\x7e\xa2\xde\ \xf4\x57\x19\x80\xe6\x6a\x9f\x13\xc4\x23\x48\xb0\xa9\x39\x57\x9f\ \x22\x6a\xb7\xa5\x17\x60\x72\xf8\x68\xdd\x8d\xc9\x1a\x9a\xbb\xc2\ \x5b\xef\x99\x09\xf5\x2e\xdd\x4d\x64\xf0\xb7\xf2\x3c\x6c\x74\x1a\ \x8b\x9a\xb9\x0c\x85\x5c\x3a\x5e\xe3\x9e\xd5\xae\x35\x56\xbe\xbc\ \xaa\x6c\x29\x65\x54\xd9\x94\xe8\xc2\xe0\xde\x89\x43\x03\x7c\xd5\ \xd1\x91\x8a\x9a\x81\xa8\xb8\xa9\xa9\x22\xbb\xbd\x71\xae\xa9\x28\ \xf1\x24\xcb\x89\x2d\xc9\xf5\x15\x5d\xd1\x64\x88\xc6\xe6\xc0\xea\ \x0f\x43\x5a\x18\xf4\xcf\x86\xcc\x37\x8f\x5f\x95\x67\xd6\x39\x4e\ \xcc\x20\x26\x36\x26\xf2\xdd\xd5\x76\xd6\xe0\xd3\xc3\x23\xb9\x0a\ \x0a\xb8\xdd\x1b\x7a\xe3\xa8\xf9\xd0\x63\x43\x18\x44\xab\xeb\x8d\ \xb7\xea\x2b\x3e\x11\xda\xf4\xd8\x21\x69\x65\x65\x03\x45\xb2\xdf\ \xa7\x33\xfb\x7d\x2a\x93\x62\xe7\xd1\x44\x4a\x19\xb4\x0d\x6a\xd9\ \xe1\xd1\x78\x58\x04\x51\xab\x90\x4b\x9d\xf5\xa7\x8f\x74\x51\x80\ \xaa\xa1\x14\x59\x57\x6a\xed\x06\x20\x72\x2f\x1f\xd6\xc6\xa4\x82\ \x37\x04\x50\x49\xa6\x2b\x0c\x7b\x91\x5d\x00\x8e\xd4\x35\x26\xd6\ \x24\x9b\x00\x2e\x4f\x4a\xa3\x89\xe2\x45\x5e\xd0\x22\x65\x1f\x13\ \x0b\x93\x45\xb2\x25\xda\xe1\xa9\xb5\x56\xe1\xf8\xdf\xb4\x4a\x21\ \x95\x50\x33\x7a\x59\x45\xb5\xe9\x6a\xb2\x18\x28\x2e\x4d\x82\x82\ \x6f\x54\xb2\xa5\x0e\x34\x7c\x44\x9d\x41\x16\x4b\x58\xf5\x02\x93\ \x1c\x6b\x04\x62\x34\xdc\x80\x59\xb9\x9a\x94\x39\x99\xcb\x5a\xc5\ \x49\x6b\xed\x40\xaf\xe2\x43\x1c\x82\xc7\x32\xeb\x6e\xda\x56\x3e\ \xeb\x46\x43\xa4\xab\xee\x2b\x46\x42\xb0\xe2\x80\xd5\x63\x92\xe0\ \xf4\x06\xa8\x60\x54\x3e\x32\x35\x61\x70\x5a\xaf\xe2\x54\xc9\x87\ \x71\xf1\x0f\x30\xd2\xb5\x3c\x14\x6c\x08\x36\x3c\xab\x85\xb5\x63\ \xb2\x8b\x9a\xa7\x1e\x2e\x61\x95\x06\x56\x3b\x00\x56\xe6\x9b\x8a\ \x13\xb4\x2a\xc5\x95\x90\x1b\xba\xa0\xb5\xbd\xe9\xd0\x08\xf0\xc6\ \x60\x66\x95\xca\x97\x24\x81\x6a\xb6\x00\x3e\x5b\x82\xca\x35\xbe\ \xf5\xce\x41\x20\x8f\x49\x1e\x5f\x6a\x16\x8d\x1e\x65\x94\xb3\x06\ \x51\x6f\x2f\x3a\xb1\x05\x1a\xc4\x8b\x12\x29\x9b\xeb\x41\x89\xb7\ \xa8\x69\x73\xad\x44\x4c\x72\xdb\x29\x20\x73\x15\x21\x5e\xc6\x84\ \x00\xb9\xd1\x76\x04\x38\x16\xd8\x1a\x92\x45\xed\x7d\x68\x26\x57\ \x62\xad\x1b\x5a\x44\xd0\x03\xb3\x0e\x95\x54\x82\x68\x49\xa5\x7d\ \xad\x09\x2a\xf0\xb0\x6b\xec\xa6\x8f\xc4\x87\xf1\x38\xee\xc8\x40\ \x15\x9d\x43\x24\x8b\xb5\xc1\x52\x06\x9d\x08\xff\x00\xcd\x09\x52\ \x76\xd6\x85\xf1\x18\x74\xff\x00\x98\x58\x8e\x40\x68\x7e\x75\x4a\ \x58\xf1\x0e\xc6\x61\xa6\x6d\x40\x07\x51\x55\xa7\x16\xa4\xb2\x30\ \x56\x04\xb3\x6c\xa3\x7a\x16\x23\x36\x42\xa5\x09\xf4\xdc\xdc\x37\ \xce\xab\x0c\x54\x58\x58\x8e\x70\x5e\x56\xe5\x7f\xd6\xb9\x38\x84\ \x33\x44\xe9\x24\x45\x34\x26\xe0\xdc\x0a\xce\xac\x3c\x8b\x1b\x1a\ \x83\x41\x0c\xa1\x80\x49\x18\x6b\xe8\x93\x93\x0a\x36\x04\x0b\xee\ \x3b\x6b\x49\x06\x80\x16\x3b\x28\xb9\xaa\xd8\x7c\x53\xc9\x89\xc9\ \x27\xa1\xcd\x80\xfc\x35\x65\xf2\xb4\x4e\xa4\xd8\x32\x91\x7e\x95\ \x99\x2e\x1e\x78\x4e\x7f\x84\x1f\x50\x3a\x56\x79\x69\x8d\x09\x06\ \x51\xdc\x1a\xe1\x72\x2e\x45\xa9\x31\xe3\x22\x68\xc3\x4a\xcd\x9c\ \x0b\x1b\x0d\xe9\xb0\x49\x2c\xaa\x1d\x63\x8e\x38\xfa\xb6\xa5\xa9\ \xd0\x0c\x7c\xc7\x0d\x84\x56\x50\x0b\xbb\x58\x5f\x5b\x0a\xc9\x96\ \x59\x24\xbe\x77\x2d\x7d\xee\x6b\x5b\x89\x2b\xbe\x04\x93\x87\x8d\ \xb2\x38\xb5\xa4\xeb\xde\xb2\x64\x31\x89\x04\x72\x2b\x42\xcd\xe9\ \xb9\xba\x9f\x9d\x73\xe7\xe9\x85\xac\x2d\x2c\x81\x62\x42\x49\xe5\ \x5b\x38\x2c\x32\x61\x63\x1b\x3c\xbc\xd8\x8d\xbd\xa9\x7c\x16\x33\ \x16\x1e\x49\x34\xcc\x5b\x28\xed\x4f\x7b\x8d\x47\x3a\x78\xcc\xed\ \x54\x9d\xf5\x3a\x9a\x9f\x6a\xe5\x51\x6d\x45\xfb\xd7\x59\xbb\x56\ \xc0\x96\x47\x3e\x5d\x5a\xdc\x9b\x51\x55\xe7\x88\x41\x8f\x8d\x97\ \x28\x0f\x6b\xad\xce\x9d\x45\x3e\x30\x55\xee\x0d\xef\xbf\xf3\x54\ \x4a\x48\xb8\xc0\xa4\x33\x30\x6d\xba\xd1\x4c\x5f\x58\x4a\xcd\x96\ \xf7\x0a\x4d\xcf\x40\x2b\x17\x8d\x83\x8f\xe3\xea\xb1\x82\x04\x81\ \x7e\x55\xa3\xc5\x78\xb6\x0e\x0c\xf0\xa5\xe4\x91\xbf\xcc\x03\x61\ \xda\xaa\xe1\x63\x68\x10\xe2\x26\x00\x62\x27\xd4\x0b\xea\x8a\x6b\ \x3c\xb2\xf4\xa2\xfe\x04\xab\x63\xce\x50\x32\xa4\x64\x2e\x9d\x06\ \xf5\x64\x58\xef\x54\x78\x41\xff\x00\x89\x6f\xfe\x36\xfd\x2a\xe0\ \x35\xae\x3e\x0a\x00\x33\x35\xce\xc3\x6e\xf4\x5e\x55\x46\x76\x1e\ \x55\x17\xb7\x53\x45\x90\xa9\x0a\x75\x3f\xad\x56\xe2\x32\x02\xc2\ \x25\x20\x85\xde\xdc\xcd\x37\xa4\x44\xae\xd2\x39\x66\x37\x26\xb8\ \x54\x0a\x90\x2b\x0d\x0d\x4d\xa9\x80\xd2\x41\xb5\x4e\x6a\x74\x60\ \xb1\x12\x98\x85\x94\x5d\xdc\x59\x47\xef\x54\x1b\x09\x89\x92\x75\ \x41\x13\x0d\x37\x23\x41\x57\xdc\xf9\xe6\x6b\xf9\xae\x32\xf5\x0b\ \x6d\x28\x92\x46\x0b\x94\xb1\xef\xad\x16\x6a\xd0\x88\xca\x20\x45\ \x4d\xb7\x6e\xb4\xf0\x75\xa0\x0d\x44\x0d\x6e\x05\xac\x1e\x27\xc3\ \x19\x1c\x5d\x39\x5b\x71\x5a\x09\x62\xb9\x94\xdd\x7a\xd6\x3a\xd3\ \x60\x95\xe2\x37\x46\x23\xb5\x6a\x51\x8d\x45\xd3\xdb\xf4\xa2\x1b\ \x8a\x46\x1f\x15\x1c\x9a\x3f\x91\xbf\x23\x4e\x22\xde\xd5\xb8\x04\ \x45\xe8\x48\xa2\x5d\xaa\x6d\x7a\x40\x2d\x7d\x0e\xaa\x74\x22\xb3\ \x71\x31\x18\xa5\x2b\xcb\x91\xeb\x5a\x85\x74\xa0\x91\x12\x44\xcb\ \x20\xb8\xe5\xd4\x56\x6c\xd3\x2b\x2f\x99\xed\x52\x85\xaf\x65\xd4\ \x9a\xb8\xd8\x38\x80\xb8\x77\xbd\xf4\xd2\x9d\x1c\x51\x45\xe8\x5d\ \x7f\x11\xde\x8f\xcd\x3a\xa7\x88\x85\xd2\x14\x91\xf5\x60\x79\xfc\ \x34\xcc\x2c\x4e\x22\x25\xdd\x95\x5b\x65\x06\xd7\xa7\xcc\x03\x64\ \x8d\xbe\x23\x98\x8e\xc2\x86\x47\x24\xf7\xab\x02\x02\x5b\x44\x96\ \x45\xf9\xde\x97\x1c\x32\x7d\xa5\x64\x92\x5c\xc1\x75\xbf\x3a\x2c\ \xda\x5c\x9a\x25\x34\xa2\xf8\xab\x95\xc0\x1b\x7f\xcc\x6b\x56\x39\ \x17\xda\xb6\xb1\xe9\xe2\xe0\x1d\x46\xe9\xe7\x15\x8c\x6b\x1c\xfd\ \x31\x38\x42\xcb\x8a\x8d\x94\x90\x43\x8d\x6b\x6b\x88\x9c\xb0\xcd\ \x61\xb9\xcb\xf9\xd6\x18\x62\x08\x23\x71\x5b\x78\xe1\x9f\x08\xc4\ \x10\x6e\xaa\xd7\xbe\xfa\x6b\xf9\xd5\xc7\xca\xaf\xac\xb2\x85\xe0\ \x96\x30\x45\xd9\x0d\xbf\x5f\xda\x87\x0e\x99\x70\x71\x03\xcc\x16\ \x16\xe8\x69\xd1\x30\x52\x58\xe8\xa1\x4d\xc9\xe5\xa5\x09\x37\xca\ \xb6\xb1\x08\x05\xbe\x55\x13\x78\x71\xb6\x36\x22\xd6\xdf\x7a\xd2\ \xbe\x53\x73\xcb\x7a\xc9\x43\x96\x45\x27\x91\xb9\xad\x49\x08\x63\ \x9b\x93\x6b\x5a\xe2\x2a\xa3\xdb\x0d\x8f\x59\x00\x39\x0b\x66\x1e\ \xd5\x61\xb1\x10\xa4\x6c\x43\x86\x26\xf6\x51\xce\xf4\x18\xb4\xcd\ \x11\x1b\x91\xaa\xf5\x15\x45\x2d\x9d\x73\x6d\x7e\x74\x78\x9a\x58\ \x5c\xdf\x64\x8f\x36\xfa\xdb\xda\x8a\xe6\xf6\x16\xbf\x7e\x54\x33\ \x92\x24\xb2\xb5\x94\xed\xd8\x57\x0b\x28\xb0\xf9\xd6\x82\x58\x66\ \xf5\x12\x7d\xb4\xa9\x16\x0b\x61\x43\x9a\xa4\x1b\xd4\x9c\xe7\x63\ \xd0\xd0\xb0\x37\xbd\x49\x60\x7c\xa3\x73\xa5\x11\xb0\x1a\x9b\x7b\ \xd4\x80\x59\xaf\x7d\x01\xeb\x6d\x7e\xb5\x05\xd8\x0f\x33\x5c\x73\ \x07\x51\x52\x59\x3a\x8e\xe7\x61\x49\x9f\x11\x85\x45\x39\xde\x4d\ \xb4\xfb\xb2\x2f\xf3\xa1\x2a\x71\x18\xd5\x66\x53\x10\xb8\x93\x60\ \x39\x1a\x64\xb8\x94\x8a\x20\xcb\xe6\x90\x2d\x89\xbf\x95\x2c\x39\ \x9a\xab\x89\xc6\x99\x2f\x1a\xa6\x44\xe5\x66\xd4\xfc\xeb\x37\x1d\ \x02\x2a\xc7\xe1\x33\x2a\xc8\xd6\x2a\x5a\xff\x00\x3a\xe7\x79\x67\ \x8d\x48\x63\xa9\x99\xcb\xa4\x89\x2b\x1d\xf2\x9b\xd0\xba\xb4\x78\ \x69\x8b\xa9\x19\x93\x28\xb8\xb5\xc9\xa3\xc9\x0c\x0f\x91\x20\x43\ \x94\xd8\xb1\xbd\xcd\x41\x2a\xba\xac\x44\x13\xb1\x72\x5b\xe9\x7a\ \xcb\x48\xe1\xe2\x4c\x3c\x19\x27\x70\x50\x9b\x15\xdc\xa5\xf6\x35\ \x77\xc3\xc4\x61\xe3\xf1\x95\xac\x2f\x6b\x75\xaa\x31\x0f\x10\xbc\ \x6d\x7f\x3a\x9b\x9b\xfc\xe9\xff\x00\xe1\xe9\xc6\x30\x0c\x3c\xcd\ \xe6\x88\x5d\x6e\x7d\x42\xa9\xfc\x15\x78\xd9\x91\x58\x8b\x07\x50\ \x48\xe9\x42\x9e\x47\x22\xe3\x5e\xb4\xd9\x83\x03\x66\x16\x3d\x29\ \x6c\x9d\xf5\xae\x81\x5e\x7c\x28\x7c\x75\x94\x05\x52\xa1\x9b\xb5\ \x58\x36\xb0\x55\x16\x55\x16\x15\x28\xa0\x48\x0d\xcd\xda\x36\xbf\ \xc8\x8b\x7e\xf5\xce\xcb\x04\x46\x69\x6c\x00\xf4\x83\xf1\x1a\x27\ \x49\x5b\x8c\xb8\x8f\x06\x20\xbf\x9a\x43\x98\x8e\xd5\x9b\x2c\x26\ \x60\x98\x7b\xfa\x48\x77\x62\x3d\x3d\x05\x14\xaf\x26\x27\x11\x99\ \xdb\xcc\xc6\xde\xd5\xab\x81\x81\x53\x0e\x31\x0e\xbe\x77\x76\x65\ \x53\xf9\x13\xf2\xae\x7f\xed\x4f\x82\x0a\x23\x88\x26\x97\x3e\x66\ \xb5\x75\xaf\x44\x41\x2d\x73\xa9\x34\x4a\x2d\xef\x5d\x70\x01\x12\ \xc6\xf7\xd3\xa5\x11\x14\x56\xae\xa9\x04\x21\x24\x00\x09\x27\xa5\ \x54\xe3\x73\x5b\x0c\xeb\x86\x65\x33\xc6\x9f\x78\xc3\x9a\xf4\x1e\ \xd5\x67\x1f\x2b\x41\x81\x2c\x9a\x34\x8d\x92\xfd\x05\xab\x37\x05\ \x1f\x8d\x21\x42\x33\x07\xd1\x87\x51\xbf\xec\x07\xce\xb3\xca\xfc\ \x30\x8f\xf0\xde\x03\xc5\xc5\x7d\xa7\x14\xb6\x46\x6f\x28\x27\x57\ \x35\xb4\xf1\x45\x33\xf9\xb0\xeb\x72\x7e\x0d\x0d\x09\xc2\xb7\x88\ \xae\x31\x08\x85\x3d\x2a\xaa\x6c\xbd\xab\xa6\x4c\x63\xbe\x51\x2a\ \x88\xce\xec\xa2\xc2\x8e\x33\xf3\x33\x15\xba\xad\x12\x18\xf8\xa0\ \x8e\x27\x06\xcf\x60\x6a\xe3\x6a\xc7\x2e\xd7\xd2\x97\x1e\x12\x34\ \x90\x3c\x53\xb2\xba\x9b\xdd\xd7\x4f\xca\x98\xd2\xb4\x6c\x7c\x40\ \x8e\x83\x76\x45\xca\x57\xe5\x4c\xe8\x16\x71\x1e\x1e\x0d\x2d\x6f\ \x13\x2d\x87\x61\xfc\xd5\x46\x94\xa6\x2e\x38\x40\x41\x9c\x02\xcc\ \xc2\xfb\xd5\x63\xc4\x30\xb8\x62\x13\x19\x88\x46\x3b\xd9\x63\x24\ \x8d\x7a\xd0\xe3\xf1\xb8\x39\x22\x47\x11\x4a\x1d\x96\xe1\xae\x34\ \x1c\x85\x66\xf2\xff\x00\xad\x62\xfc\x8c\x06\x29\x60\x70\x2e\xe2\ \xea\x42\x80\x54\xf7\xa0\xbd\x67\xe0\xb1\xf8\x48\xdb\x34\x89\x2b\ \x39\xd0\x35\xc6\x95\x64\x62\xb8\x7b\x35\x97\x18\xc2\xfb\x66\x8c\ \x80\x3d\xcd\x13\x94\xa8\xeb\xd7\x5e\x83\x36\x1f\xff\x00\xe7\x61\ \xbf\xef\xfe\xd4\x48\x82\x40\x7c\x19\xe2\x97\x5d\x91\xbf\x9a\x50\ \xc3\x31\x65\xcb\x6c\xc0\x11\xae\xcc\x3a\x54\xab\x44\xf6\x2b\x2a\ \xad\xfe\x16\xdc\x52\xb5\x56\x01\xb4\x20\xd3\x16\x57\x1a\x83\xaf\ \x5b\x6b\xf5\xa8\x05\xf1\x29\x19\xb2\xc3\x23\x0e\x6c\x45\x85\x58\ \x56\x0c\xa1\xd0\x92\xad\xb1\xa5\x09\x5f\xf1\x93\xf3\xa9\x8e\xc0\ \xdd\x0e\x42\x4e\xb6\xd5\x4f\xb8\xa6\x2a\x78\x34\x6a\x69\x2a\x7c\ \xd9\x48\xca\xc7\x61\x7b\x86\xf6\x34\x52\xc8\x21\x8f\x3c\x8a\xc7\ \x5b\x58\x69\x5a\xd0\x70\x37\xab\x38\x4c\x51\x8c\x64\x71\x99\x7d\ \xf5\x15\x4e\x09\x23\x99\x43\x44\xc2\xfc\xd5\x8e\xa2\x9b\x91\xaf\ \xcb\x5e\x57\xa6\x54\xd4\x56\x05\x43\xa1\xba\x9a\x35\x70\x45\x67\ \x60\x24\x29\x88\x08\x76\x6d\x08\xab\xbb\x1b\x8a\xdc\xac\xd8\x63\ \x1d\x28\x76\xa8\x56\xbd\x71\x34\xa0\xb9\x6c\xe0\x1f\x4d\xea\x24\ \x9a\x14\x62\xae\xe7\x30\xdc\x01\x45\x7b\x29\xbf\x4a\xce\xc2\xc6\ \x65\x66\x67\xf3\x2a\xeb\x6e\x67\xde\x8b\x52\xea\x31\x75\x32\x95\ \xb1\x7b\x65\xec\x05\x2d\x8d\xc9\x00\xd4\xa1\x24\x90\x4f\xf6\xa0\ \xcc\x10\x1b\xee\x0d\x15\x25\x88\x28\x00\x3b\xd1\x03\xad\x21\x49\ \xce\x0f\x7a\x60\x27\xa5\x11\x2c\x42\xc2\xfa\xec\x74\x3e\xc6\xb1\ \x31\x89\xe1\x62\x5e\x3f\xc2\x48\xad\x68\xc9\x3e\xe4\xda\xb2\xf8\ \xc3\x2b\x71\x19\x8a\x9b\x8c\xd4\x72\xf0\xf1\xf5\x5e\xf5\x73\x07\ \xc4\x0c\x71\x78\x32\xa0\x74\xd8\x1e\x6a\x2a\x8d\xcd\x1e\x1f\x0f\ \x34\xe6\xd1\xa5\xc7\x53\xb0\xac\x4b\x67\x8d\x55\x9c\xd0\xb3\x08\ \xcb\xe4\xcb\x62\xca\xfa\x66\x27\x61\x7e\x95\x0e\xcc\x65\x21\xd4\ \x8b\xeb\x73\xce\x87\x89\x70\xb7\x91\x51\xc4\xd1\x99\x32\x65\x65\ \x23\x47\xb6\xc2\xfc\xa9\x38\x61\xc4\x70\xa9\x67\xc2\x46\xd1\x74\ \x12\xde\xfe\xd7\xa7\x6e\xf6\x16\x01\xab\xfc\x3e\x6c\xf1\xf8\x2d\ \x6b\xaf\xa3\xbf\x6a\xce\x8f\x11\x85\x90\xd9\xcb\xe1\xdf\xa3\xa9\ \xb5\x19\x93\x0c\x84\x13\x8c\x86\xfc\x80\x7b\x7e\xb6\xad\x4a\x9a\ \xc0\xd8\x82\x37\x06\x96\xf8\x6c\x33\x36\x6c\xac\xb7\x37\x21\x4e\ \x87\xf8\xa4\x47\xc4\xb0\xf2\x58\x11\x63\xd4\x87\xf3\x7b\x1b\x5a\ \x8f\xed\x98\x5b\x5e\xed\xed\x63\x7f\xa5\xab\x5b\x19\xca\x73\xaa\ \x93\xd3\x4b\x6f\x51\xcb\xb8\xa5\x2e\x26\x16\xbd\x96\x40\x06\xec\ \x08\x36\xa1\x97\x13\x02\x59\xbc\x4c\xf7\xdc\x2e\xf5\x6c\x47\x0a\ \x25\x22\x90\xb3\xc6\xe2\xe8\x49\x1c\xef\xb8\xa3\x92\x68\x61\x8b\ \xc4\x95\xec\x0e\xca\x06\xa6\xad\x46\xb1\x5f\x9f\x6a\x8b\x80\x6f\ \xcf\xa9\xac\xe9\xb8\xab\xe6\xfb\x98\xa3\x55\xfe\xa1\x72\x6b\x93\ \x8a\x3d\x8f\x89\x04\x6f\xd2\xde\x5f\xd2\x8f\xd4\x39\x57\xa5\x62\ \xaf\x98\x12\x3b\x8a\x57\x15\x7f\x17\x86\xc8\x49\xb9\x0e\xb9\x6f\ \xb8\xaa\xe7\x89\x86\x5b\x7d\x95\x07\xfd\x66\x93\x8a\x9e\x4c\x51\ \x16\x50\xaa\xa3\xd2\x0e\x9e\xf4\x5e\x53\xe2\x92\xaa\x85\x2c\x40\ \x1b\xdc\x55\x9c\x16\x08\xe2\xe4\x13\xb0\x0b\x1c\x77\x11\xe6\x1a\ \x7b\xf7\xa8\xc2\x44\xcf\x32\xf8\x56\x77\xbe\x83\x5b\x03\xdc\xed\ \x5a\xcf\x00\x8e\x34\x89\x1a\xe2\x35\x03\xdc\xf3\x35\x9e\x3c\x74\ \xda\x4a\x43\x87\x87\x58\xe2\x52\xc3\xe3\x71\x72\x6b\x9a\x42\x56\ \xed\x1a\xb2\x5b\x62\xa2\x89\xa3\x76\xdc\xfd\x68\x5a\x0d\x34\x6a\ \xdb\x2c\xfc\x7e\x13\xec\xee\x31\x10\x8c\xd1\x13\xa8\xfc\x3d\xab\ \x23\xec\xf3\x41\xc4\x55\xa1\x52\x54\xb5\xd5\x80\xe5\x5e\x9d\x15\ \xd4\xda\xde\x52\x3c\xc1\xb6\x34\xac\x46\x02\x27\xb9\x86\x66\x86\ \xff\x00\x0e\xb9\x6b\x1c\xb8\x6f\x8d\x4e\x4c\xd6\xc6\xe2\x61\x93\ \x2a\x38\x65\x04\x80\x18\x66\x00\x51\xe2\x78\xba\x43\x87\x0e\xf8\ \x54\x66\x7f\x48\x0c\x45\xfb\xd5\x96\xe1\x98\x60\xb6\x33\x4a\x48\ \xd6\xe1\x45\xa9\x27\x85\xc5\x36\x30\x93\x3a\xe5\x85\x00\x0a\xea\ \x4d\x8f\x5f\xad\x59\xc9\x6c\x26\x2e\x29\x24\x90\x1c\x40\x82\x38\ \xcb\x9c\xaa\x2e\x58\x58\x55\x77\x79\x31\x58\x90\x65\x62\xd9\x88\ \xf9\x55\xfc\x47\x0f\xf0\xd0\x49\xf6\x88\x88\x26\xcd\xf7\x66\xdd\ \xb4\xe4\x7b\xd4\xe0\x61\xc8\x59\xe0\x88\xc8\xdc\x98\x0d\x17\xeb\ \x46\x5f\x29\xd8\x8c\x06\x10\x78\x4c\xf2\xbe\x53\xb0\x55\xf8\x3f\ \xbd\x59\xb0\x0a\x15\x6f\x65\x16\xd6\x8e\x08\x7c\x28\x8a\x12\x0b\ \x33\x5d\x88\xda\x88\xad\x6a\x4c\x66\xd2\x80\xa9\x02\x8e\xd5\xda\ \x52\xb4\x36\xee\x2a\x00\xd6\x8c\x81\x5c\x05\x43\x55\xb8\xc2\x16\ \xe1\xaa\x40\xf4\x49\x73\xf3\x15\x4b\x84\x3a\xc7\x8c\x57\x7f\x40\ \x23\x31\xb6\xdc\xbf\x5b\x56\x9c\xf2\xc5\x10\x31\x3a\x97\x2e\x2c\ \xca\x0e\xd5\x56\x6e\x1b\x30\xb1\x8c\x2b\x20\x20\xf8\x69\xea\x3d\ \x2f\x59\xb3\xbd\x6a\x78\xb5\x20\x21\xf2\x8d\xaf\xa3\x6e\x0f\xb5\ \x09\x17\xde\xe6\xb3\x44\xb8\xcc\x2c\x8c\x4a\xba\xdc\xea\xac\x34\ \x26\xad\xc5\xc4\x70\xf2\x1f\xbd\x8d\xa3\x3d\x57\x51\xf4\xa6\x72\ \x8b\x0e\x39\x86\xda\xfb\xf2\xae\xd3\x0f\x19\x92\x43\x61\x63\xbf\ \xc5\xda\xa7\xc6\xc3\x88\x5a\x54\xc4\x26\xd6\x01\xae\x0d\xea\xa6\ \x27\xec\xeb\x08\x92\x4c\x6a\x34\xcc\x2e\x11\x8f\x3a\xad\x4a\x32\ \xf0\xfc\x1c\xb3\x45\x23\x46\xf2\x85\x16\x32\x33\xd8\xad\xba\x8e\ \x74\xc9\xdb\x0e\xcf\x98\x60\xa0\x37\x3a\x0c\xa6\xf6\xfa\xd0\x1b\ \xf2\xb1\xf9\xd0\xb6\xe7\xb5\x85\x73\x68\x77\xc3\x5b\x5c\x0e\x1c\ \x7f\xd1\xfd\xe9\x72\x61\xb8\x74\xb7\xfb\xb7\x89\x89\xff\x00\x96\ \xd7\xfc\x8d\x75\x45\x81\x7c\xdd\x3f\x3a\x2e\x22\xcf\x0b\x81\x89\ \x30\xe3\x2d\xa6\x8b\x22\x9b\xfd\x76\xaa\x78\xac\x3e\x27\x07\x20\ \x12\x29\x53\xf0\xb0\x3a\x1f\x63\x5a\x20\xda\x98\xcb\xf6\x9c\x1c\ \xb8\x63\xa9\xca\x5a\x3d\x79\x8f\xf7\xf9\x51\x78\x4f\x8b\x41\xc3\ \x71\x5f\x6b\xc3\xb4\x52\xff\x00\x9b\x1a\xdd\x5b\x9b\x0a\x76\x6a\ \xc4\xc1\x4e\x70\xf8\x94\x94\x7c\x27\x5e\xe2\xb7\x4a\xab\xc2\xb3\ \xc5\xac\x6d\xff\x00\xd7\xb1\xab\x8d\xd8\xab\x81\xa3\x53\x4b\x5d\ \xef\x44\x34\xad\xa3\x95\xc6\x5c\xac\x2e\x0e\xe2\x95\x89\x86\x49\ \x2d\xe1\xc8\xce\xa3\xe1\x66\xd4\x7b\x57\x5e\xa4\x1e\x86\xa1\x83\ \xc1\x26\x1e\x4c\x3e\x52\x80\xc8\xbe\xa1\xb3\x54\x4f\x86\x60\x33\ \xc2\xec\xd6\xd4\x83\xb8\xa2\x46\x25\xc3\x05\xbb\x01\x60\x46\xf5\ \x6f\x0b\x0b\xe6\x0f\x25\xd4\x74\xe7\x5a\x93\x55\xe8\x1c\x17\x14\ \xf9\xb3\x4f\xe6\x45\xd0\x13\xb8\xad\x65\x65\x65\xcc\xac\x18\x1e\ \x62\xb3\xe7\x84\x36\x28\x22\x79\x55\x85\xfb\x0a\x38\xe2\x9e\x07\ \xcd\x13\x09\x07\x30\x39\xfc\xab\x7c\x76\x33\x57\x74\xb5\x0b\xca\ \xaa\xf9\x0c\x8b\x7e\xe3\x6a\x1c\xd7\x50\xc0\x11\x7e\x47\x71\x5d\ \x98\x2c\xb7\x36\x02\x40\x06\x63\xc8\x8e\x47\xde\xb5\xa0\xac\x76\ \x20\x78\x5e\x1a\x4a\xad\x9b\x72\xbc\xa9\x1e\x22\xc4\xaa\x60\x91\ \xb3\x11\x67\xb8\xa9\xe2\x51\xa2\x15\x65\x00\x16\xbd\xc7\x2a\x3e\ \x1c\x88\x22\xf1\x48\x05\xb3\x5b\x5e\x55\x9f\xa5\x6a\x26\x49\x23\ \x0f\x1f\x31\xa8\xe9\x49\x9d\x6f\xa8\x1a\x93\x46\xde\x6f\x32\xd9\ \x5c\x6c\x6d\x6f\x91\xed\x49\xc6\x49\x29\x4f\x0d\x21\x65\x6f\x88\ \x8d\x40\x1d\xa9\xa1\x31\x80\x07\x23\x7a\x23\xf9\xf2\xa4\xe1\x6f\ \xe0\xa5\x81\xf2\x5c\x1f\xf7\xf3\xa6\xa1\x0c\xc4\xd1\x10\xd0\x88\ \xa3\x69\x0e\xbe\x1a\x96\xac\x29\x1b\x33\x96\x3b\x93\x7a\xd6\xe2\ \x72\x78\x7c\x39\xb6\xbc\x87\x27\xef\x55\xf8\x54\x28\xb0\xfd\xa1\ \xd4\x16\x63\x65\xbf\x2a\xcf\x2e\xee\x35\x3a\x80\xc1\x60\x4c\x8a\ \x24\x95\xb2\x2d\xf4\x5b\x6a\x6b\x44\x65\x54\x08\x8b\x95\x06\xc2\ \x96\xce\x49\xb9\x35\x19\xe9\x9d\x0b\x74\xc0\xd6\xda\xdf\x31\x43\ \x2a\x89\x2e\xca\xc5\x24\xfc\x43\x9f\xbd\x0e\x6d\x2a\x03\x54\x15\ \xe7\x52\x3c\x93\x46\x3b\x15\x39\x4f\xc8\x8a\x57\x85\x87\xfc\x33\ \x7f\xfe\xe6\xae\xbb\x23\xa6\x57\x19\x87\x6e\x55\x56\x48\x98\x5c\ \xa0\x2c\x3f\x31\x45\x87\x49\x38\x6c\x16\x6c\xc2\x19\x2f\xd7\xc5\ \x34\x66\x34\x90\x91\xe2\xba\x5f\x6b\xd8\x8f\x9d\xa8\x0b\xdb\x90\ \x34\x25\xbb\x0a\x3a\x21\x6f\xb4\x61\x58\x30\x24\x03\xb1\x1b\x1a\ \xbb\x82\xe2\x10\xc8\xbe\x1c\xa1\x22\x70\x3d\x45\x46\x53\x55\xc4\ \xc4\xc7\xe1\xbd\x99\x3a\x1a\x19\x70\x0e\xcb\x9f\x0f\xf7\x8b\xd3\ \x9d\x53\x67\x87\xff\x00\x56\xf1\x73\xc1\x14\x82\x68\xd9\x64\xcc\ \x9a\xaa\x6c\x75\xb5\x67\xcf\x3b\xca\xe5\xdc\xdd\x8d\x48\x56\x55\ \x55\x70\x54\x32\xb2\x6a\x39\xdc\x11\xfb\xd5\x76\x24\x12\x0e\x96\ \xa3\x95\xaa\x41\x86\xa2\x07\xa5\x29\x4e\xb4\x6b\x59\x26\x03\xf9\ \xd5\x84\x8c\xbc\x82\x30\xb9\xb2\x90\x15\x6d\xa3\x36\xe4\x9e\xb6\ \xa4\x44\x06\x60\x5b\xd2\x35\x3e\xd5\xab\xc2\xa3\x29\x84\x18\x89\ \x57\xef\x24\x62\xc9\x71\xa8\x07\x9d\x6f\x8c\xd1\x6a\xd4\x00\xe1\ \xe1\x11\x83\xe6\xb7\x9c\x8e\xbd\x2a\x43\x03\x4b\x1b\xd1\xa0\xd6\ \xba\x30\xe2\x0f\x4a\x13\xa1\xa6\x69\x7d\xea\x1b\x28\xd4\x91\xf2\ \xab\x11\x7a\x54\x15\xa6\x05\x0c\x2e\x2a\x4a\x91\x52\x21\x85\x01\ \x8b\xef\x3c\x48\xd8\x23\x9f\x50\x23\x46\xab\x05\x6f\x49\xc5\x32\ \xc7\x26\x42\xe7\x35\xb5\x55\x17\xb7\xbd\x18\x8a\x92\x39\xe5\x53\ \x13\xa2\xc4\x81\x86\x63\x9a\xf9\xbd\xa9\xb9\x54\x28\x44\x16\x45\ \xd8\x52\x92\x78\x90\xf9\xd2\x40\x4f\x33\x4d\x61\xa5\xc1\xb8\x3b\ \x1e\xb4\x17\x1b\x0a\x12\xdd\xab\xac\xc4\x5e\x84\x9a\x82\x49\xa8\ \x2d\x42\x4d\xe8\x6a\x38\x3c\xc2\x97\x8d\x96\x48\xa0\x46\x89\xca\ \xdd\x88\x36\xe7\x53\x7a\x5e\x30\xd8\x43\x21\x52\xd1\xa1\x39\x87\ \x7a\xaf\x8b\x15\x15\x99\x66\x56\x7b\x8d\x41\xd6\xb4\xa7\xbe\x72\ \x79\x31\xf2\x9e\xb7\xaa\x78\x89\x5b\x1b\x32\xaa\x29\x55\x1f\x11\ \xd6\xde\xf4\x79\x9f\x0a\xaa\x4b\x09\x62\x2d\xb1\x16\x3b\x72\xac\ \xc3\x56\x04\x8f\xcd\xb3\x0e\x8c\x2e\x3f\x3a\x07\xc3\x61\x5d\x73\ \x49\x87\x54\x1b\xdd\x5b\x2d\xff\x00\x9a\x4b\xe3\xa2\x0b\xf7\x71\ \x31\x6f\xeb\x3a\x55\x69\x25\x92\x46\x0e\xe4\x34\x92\x1b\x46\xa7\ \x6f\x7b\x74\xa6\xf2\x8b\x1d\x88\x8b\x0d\xe2\x59\x1e\x45\x54\x37\ \x16\x50\x48\xbe\xd7\xd7\x7a\xab\x26\x0b\x07\x23\x97\x79\xb1\x04\ \x9f\xe9\x5a\x6c\xac\x01\xc8\xa6\xea\x0e\xe7\xe2\x3c\xc9\xa5\xb3\ \xa8\x6c\xa4\xd8\xfe\x95\xce\xb4\xe8\xf0\xef\x31\xb4\x71\x13\xa6\ \xe2\x82\x58\x65\xc3\xf9\x64\x52\xa4\xeb\xad\x6b\xb8\x1a\xa2\x59\ \x63\x4f\xa0\xee\x6b\x3f\x1f\x30\x96\x50\x17\xd0\x82\xcb\x7f\xd6\ \xab\xc7\x04\xaa\xeb\x7d\xcd\x72\xe9\xa7\x4d\xaa\x6b\xbb\xf4\xa0\ \xba\x9d\x82\x36\xc5\xa0\x3b\x31\xca\x7e\x7a\x7e\xf4\xa0\x2f\xd7\ \xe9\x44\xa2\xcd\x71\x7d\x3a\x5b\xf9\xa6\x26\x3e\x21\x04\x78\x99\ \x10\x03\x65\x72\x07\xb5\x3b\x05\x8a\x9f\x0a\xf7\x8a\x4c\xb9\xbe\ \x13\xb1\xad\x2c\x46\x1f\x0b\x8b\x9c\xcd\x2f\x8b\x1b\x9f\x51\x40\ \x0e\x63\xd7\x5a\x98\xb0\xbc\x3e\x16\x0c\xb0\x34\xac\x07\xaa\x56\ \xd3\xe9\x58\x9c\x6c\xa7\x4a\x8b\x8b\x21\xb0\x9b\x08\x84\xfc\x45\ \x09\x1f\x96\xd4\xf4\xc6\xf0\xf7\x5b\xf8\xb2\xc6\x7a\x32\x66\xfd\ \x2a\x5a\x3c\x24\x82\xcf\x83\x8c\x5c\xef\x1d\xd4\xd4\x45\xc1\xe0\ \xc4\x4b\x9b\x0f\x23\x28\x06\xe5\x1f\x6f\x60\x6b\x73\xf4\x0f\x89\ \x23\x98\x06\x86\x65\x65\x3d\x74\x35\x6d\x30\xf8\x44\x8d\x5e\x59\ \x90\xdf\xab\x7f\x15\x9b\x8b\x86\x68\x9f\x2c\x91\x14\x03\x61\x6d\ \x00\xa4\xd3\xb9\xf0\x36\x86\x33\x05\x18\xca\xb3\x10\x07\x25\x8f\ \x7f\x9d\x70\xc7\xe0\xd5\x0c\x85\xa4\xb2\xf3\x22\xb2\xe0\xc3\x4b\ \x2a\x66\x58\xe4\x61\x7b\x79\x56\xac\x37\x09\x92\x58\x8c\x52\xc8\ \x89\x73\x71\xe6\xd4\x7b\x8a\xd6\xf2\xf9\x06\x45\xa8\x31\xf0\x29\ \x2d\x20\x92\xf2\x0b\xdf\xa0\xa7\x47\x8f\xc0\xb7\xfc\xe6\x07\xba\ \x55\x01\xc3\x8c\x91\xae\x7c\x42\x29\x5f\x21\xb0\x3a\xda\xa3\xff\ \x00\x4d\x60\x72\xa6\x22\x33\x61\xbe\xa2\xf5\x4b\xc9\x64\x6c\xa1\ \x59\x17\x34\x52\x2c\x83\xaa\x9b\xd7\x5f\x75\x22\xe0\xee\x0d\x62\ \x9c\x16\x36\x23\x9e\x3f\x31\xe6\x63\x6b\xfd\x69\x90\xf1\x4c\x44\ \x44\x47\x89\x84\x32\xed\x98\x8b\x1f\xad\x3f\xaf\xe8\xc6\x89\x86\ \x03\xae\x43\xa7\xf5\x69\x53\x9e\x35\x5c\xaa\x00\x1d\xa9\x11\x62\ \xb0\xf8\x96\xc8\xb2\x80\xc0\x5e\xcd\xa7\xe7\x4f\x58\xd9\x45\xd5\ \x2e\x3a\x8d\x69\x9f\xf1\x09\x1e\xe3\x45\x35\x21\x9f\x36\x6b\xdb\ \xe7\x4b\xcf\x6a\x8c\xf7\xab\x40\xda\x45\x8a\x47\x32\x12\x16\x42\ \x18\x10\x36\x36\xb5\xa8\x23\x99\x1a\x7b\x05\x74\xcd\xe9\xcd\xb3\ \x51\x26\x76\xf4\x82\x7e\x57\xa5\x62\xe4\x48\x94\xb4\xee\x3b\x28\ \x3a\xdf\x95\x45\x5f\xfc\x44\xf7\x58\xa0\xda\xc3\x31\xf7\x34\xdc\ \x3c\x80\x60\x60\x04\x58\xe4\xe5\xef\x59\x53\x62\xa6\x93\x16\x44\ \x90\xab\x48\x41\x2a\xf9\xb4\xb7\x5a\xd2\x0d\x96\x18\x45\xf3\x11\ \x18\xcd\xde\xb3\x2e\xdb\x4e\x74\x66\x75\xfc\x55\x19\xd6\xfa\x30\ \xa5\xdd\x4d\xed\x6a\x02\x7c\xd6\x14\xea\x58\xcd\x6a\xe7\x63\x94\ \xd8\xda\x96\x49\xa8\x6b\xe5\x34\xa3\x81\xb0\x16\xe9\x50\x5c\x82\ \x08\xde\x96\xad\x71\x53\x98\xdc\x5e\xa4\x99\x60\x8e\x7f\x31\x39\ \x1f\xa8\xd8\xfb\xd5\x3c\x42\x3c\x4d\x66\x5f\xa5\x5d\x06\xa5\xb2\ \xb2\xe5\x71\x99\x7a\x1a\x2c\xd4\xce\x07\x9d\x33\x0f\x88\x78\x5a\ \xe8\x74\xe6\x0e\xd5\x38\xac\x2b\x20\x2f\x11\x2c\xbc\xc7\x31\x55\ \x43\x9b\xd8\xd6\x3c\x6b\xd6\xbc\x58\xb5\x99\x4d\x88\x70\x47\x99\ \x1b\x5f\xa5\xe8\x13\x3d\xf2\xc3\xe1\x15\xfe\xa1\x62\x2b\x2d\x49\ \x49\x33\xa1\xb1\x15\x7b\x01\x8a\x59\x49\x0e\x32\xbf\x23\xc8\xd6\ \xa5\xd6\x71\x63\xec\xf1\x6a\x71\x11\xa3\x06\x3a\xc8\xba\x65\xfe\ \x28\x26\xe1\x8b\x7b\xc3\x25\xbf\xa5\xbf\x9a\xb1\x11\x21\xec\x47\ \xb8\xeb\x54\x9a\x79\x17\x34\x71\xb9\xc8\x09\xb7\xb5\x37\x14\xd0\ \x47\x10\x17\x59\x2c\x56\xfa\x80\x77\xfe\xd5\xae\x1b\x3c\x51\xb5\ \xad\x74\x1a\x74\xac\x85\x37\xad\x4c\x3b\xe7\xc2\xc6\xcb\xf0\x8c\ \xa6\x9e\x22\x9a\xa3\x5a\x25\xb9\x24\x03\x60\x37\x22\x97\x7b\x0a\ \x6c\x43\x2a\x81\x5a\x80\x59\x53\xf0\x0a\x90\x00\xf4\x80\x3d\xab\ \xaa\x6c\x6b\x49\x04\x03\xb8\x07\xdc\x54\x65\x53\xf0\x8f\xa5\x15\ \xab\x97\x46\x07\xa1\xa9\x05\x97\xc3\x06\x46\x19\x02\x8b\xde\xd6\ \xaa\xd8\x51\x6c\x32\xb1\xb8\x67\x62\x49\xe6\x69\x8b\x08\xf1\xe5\ \xf1\x49\x65\x46\xd0\x13\xa5\x11\x60\xcc\x06\x5b\x0e\x5c\xa8\x40\ \x7c\xb2\x0c\xb2\x8c\xc2\xd6\xb9\x1a\x8a\xa4\x9e\x3c\x38\xaf\xb3\ \x29\x04\x16\xb0\xb8\xd3\xde\xae\xb5\x81\xb7\x3e\x82\xab\xe3\xd5\ \xef\x0c\xab\xa1\x0d\x97\xde\xb3\x4c\x1b\x95\x0f\xa6\x5d\x09\x2b\ \x7e\x54\x82\xc4\x9b\x20\xbd\xb7\x35\x62\x45\x01\x99\x40\xd2\xfb\ \x52\x9b\xca\xa4\xa8\x1a\x50\x00\x7a\x8a\x8a\x30\xa0\x0d\x2e\x7b\ \xd0\xb0\x00\x5c\x9d\x2a\x3a\x12\x2b\x90\x90\x74\xf9\xd4\xfb\x6b\ \x50\xdb\x5b\xad\x45\x25\xcb\x02\xa2\xd6\xe7\x61\x6b\xd0\xe2\x23\ \x59\xa1\x11\xb3\xe5\xb3\x5c\x1b\x5e\xa4\xda\xdd\x85\x42\x92\x58\ \x00\x37\xa9\x13\x26\x0b\x0e\xb1\xb4\x9e\x24\x96\x51\xcc\x00\x0d\ \x50\x9c\x5b\x13\xf6\x8f\x13\x33\x0f\x4d\x86\x8b\xf5\xab\x5c\x52\ \x6c\xcf\xe0\xaf\xa5\x37\x23\x99\xaa\x65\xac\x6b\x9d\xcd\xe8\xc0\ \xe7\x62\x7d\x63\xfe\x91\x40\xcc\x11\xb4\xdc\x8d\x6f\x44\xc0\x36\ \xbb\x1e\x44\x0a\xe8\xa1\x69\xb1\x48\xa4\x8b\x31\x02\xb3\x49\xf3\ \x4f\x3c\xa9\x95\xa4\x25\x7f\x08\xa4\x53\x0d\x71\x53\xae\x97\xf9\ \xd3\xa8\xba\x90\x28\x97\x53\x63\xa1\xa2\x0a\x4e\x9c\xea\x40\xb5\ \x10\x5a\x24\x0d\x94\x92\x01\xb1\xd4\x73\xa3\xca\x4a\x82\x96\xf9\ \xd4\x8b\x17\xa9\xa6\x15\xe9\x50\x16\xac\x41\x15\xa9\x87\x4f\x0b\ \x0e\xa9\xf1\x37\x99\xbf\x6a\xa5\x84\x88\x49\x89\x44\xd8\x13\xad\ \x68\xb0\xbb\x93\xca\xf5\xbe\x30\x5a\xe5\x77\xcb\x96\xf7\x1d\x0e\ \xa3\xf3\xa8\x6c\x84\xdd\xa1\x88\x91\xcc\xad\x48\xf6\xae\x22\xf5\ \xa6\x50\x5d\xed\x60\xc4\x0e\x83\x4a\x53\x13\x7a\x32\x2d\x42\xd5\ \x17\x06\x3e\x21\x1f\x0c\x9a\x8e\xcd\xd2\x96\x58\xe7\x35\x33\x06\ \x31\xa2\x25\xb3\x3c\x82\xd7\xed\xad\x74\xa6\xf2\x16\x1d\x68\x42\ \x0c\x46\xa0\xda\x8f\xc5\x63\xeb\xb3\x8f\xea\x17\xa4\x13\x5d\x9a\ \xad\x4e\x97\x0b\x81\x94\xdc\xc1\x90\xf5\x8c\xd8\x0f\x95\x25\x70\ \x53\xc4\x6f\x85\xc7\x01\x6d\x81\x25\x69\xad\x73\xb3\x11\x50\xb9\ \xc1\xd4\x82\x28\xe9\x25\x5f\x8c\xaf\x34\x9b\xd8\x83\x4b\x9b\x1b\ \xc4\xd1\xb2\xb4\x45\x4f\x68\xe9\xd7\xa2\x59\x64\x51\x65\x91\x80\ \xe8\x1a\xac\xff\x00\xa9\x49\xa6\xe2\x73\xe8\x7c\x73\x7d\xbc\xa4\ \x52\x8e\x0f\x1c\xce\x41\x85\xef\xcc\x9a\xd1\x92\x57\x6f\x29\x76\ \x6f\x73\xb5\x43\x3d\x97\x56\x36\x14\x7e\x67\xf4\xea\xb4\x78\x27\ \x45\x47\x9d\xd0\x04\x24\x35\xbc\xc7\x29\xdf\x6d\xaa\xd6\x21\x46\ \x7f\x2e\xd6\xf2\xf7\x1c\xa9\x62\x51\x7d\x14\x91\xb1\xa8\x88\xe4\ \x2f\x16\x62\x46\x50\xe9\x7e\x5d\x45\x33\x27\x81\x39\x0d\xaf\x7b\ \x1a\x94\x52\x0d\xc9\xbd\x0e\x6a\x82\xd7\x39\x41\xf7\xa9\x19\x7a\ \xeb\xd2\x55\x9b\x35\x81\xd0\x75\xa3\x2c\xdf\x87\xe9\x56\xac\x1d\ \xec\x6f\xf5\xae\xbf\x2a\x58\x25\xb4\x0b\xda\x89\x4a\x33\x65\x59\ \x55\x98\x7c\x20\xeb\x56\xa1\x23\xdc\x5e\xf4\x79\xcd\x27\x55\x3b\ \x7b\x8a\x95\x6b\x8a\x75\x1a\x1a\xc6\xe3\x43\x49\xc5\x61\xd2\x62\ \x5d\x3c\xaf\xd3\x91\xa2\x26\xc2\xf5\x19\x88\x3b\x1a\x92\x83\x02\ \xad\x94\x82\x08\xe4\x6b\x81\xf3\x5c\x68\x6a\xf4\xea\xb3\x80\x18\ \x59\x86\xcd\x54\xa5\x56\x8e\x42\xae\xba\x8e\x87\x7a\xc5\x8d\x2e\ \xe0\xb1\x6c\x06\x49\x2e\xc3\x61\xd4\x55\xdc\x19\x5f\xb1\x21\x4c\ \xac\xba\x86\xd3\x9f\x7a\xc5\x8c\xd9\x89\xd7\x5a\xb9\x86\x9d\xe3\ \x7c\xc8\xd6\x63\xa1\xbe\xa1\xbb\x1f\xe6\x99\xc8\x58\xb9\x2e\x16\ \x27\x6c\xc8\xde\x19\x3c\xad\x71\x52\x15\xf0\x6a\x64\x57\x12\x27\ \xc4\xb6\xb5\x0f\xdb\x20\x24\x28\x56\x59\x0f\xfc\xb6\x3f\xa1\xe7\ \x51\x36\x22\x16\x56\x5b\x3d\xd9\x6d\x62\x2b\x5d\x33\xda\xe4\x6c\ \xae\xe0\xc7\x72\xac\x34\xa7\xa5\xf9\x8d\x6a\xa6\x15\x55\xb0\x28\ \x14\x58\xe5\x20\x1e\x60\xd3\xb8\x79\x90\xc0\xa5\xe5\x62\x0e\xc0\ \x80\x6b\x70\x2c\x2d\x10\x17\xa8\x19\xbf\x1c\x7f\xf6\x1f\xe6\x8c\ \x1b\x0f\x30\x00\x7e\x25\x3a\x7c\xfa\x56\x83\x80\xa9\x2b\x70\x45\ \x15\xba\xd4\xd8\xf4\xad\x05\x59\x62\x65\xfb\xc3\x72\xa0\x59\xc0\ \xdc\x8e\xbf\x2b\xd7\x10\xac\xb7\x52\x19\x7a\x8a\xb5\x1f\xac\x03\ \xb5\xf5\xaa\x78\x38\xb2\x89\x7f\xd6\x40\x17\xe5\x7a\xcd\x87\x5c\ \x14\x0d\x86\xf4\xa6\x2a\xd8\xd0\x83\xfe\x52\x93\xf3\xab\x25\x7b\ \x81\xef\xa5\x56\x96\x48\x53\x1b\xe2\x86\x04\x37\x95\xc8\x1a\x5c\ \xf3\xa2\x94\x30\xa0\x2b\x4d\x0f\x13\x1b\x2b\x8b\xf4\x3a\x57\x3a\ \xdb\x71\x59\xc4\x41\x45\x1b\x28\xa0\x74\x0c\x2d\x76\xfd\x69\xe4\ \x50\xb2\xd0\x88\xc8\x14\x69\x70\x6a\x08\xf3\x5c\x9b\xd3\x1a\x81\ \xad\x7a\x8c\x09\x1a\x5a\x82\x67\xf0\x30\xed\x27\xc4\x7c\xab\x4d\ \x51\x73\x6f\xf6\x2a\x87\x11\x97\xc5\x94\x85\xf4\x26\x8b\x47\x2b\ \x90\xab\x7b\xd0\x91\xda\x8a\xa2\xb9\x34\x1b\x0a\xe4\xcc\xac\x18\ \x1b\x11\xb1\xa2\xa9\xb5\x3a\x9c\x6c\x05\xe8\xe3\xb3\x0f\x28\x27\ \xf2\xa2\xcb\xe5\x3a\x5f\x4d\xa9\x9c\x3a\x13\x23\x14\xb5\x94\x6a\ \x5b\xa5\x32\x22\x63\xc2\xcf\x34\xb9\x51\x33\x13\xae\x9c\xaa\xf4\ \x3c\x3f\x28\x02\x59\x46\x9b\xe5\xd6\xaf\x22\x24\x71\x84\x41\x61\ \x6d\x7a\x9a\x12\x40\xd8\x5e\xb7\x38\xc6\x6f\x25\x77\xc0\x46\xc2\ \xf1\xcc\xca\xc3\xf1\x0d\xea\xab\xc0\xd0\x93\x1b\xea\x6f\xca\xb5\ \x14\xad\xaf\x7b\x54\xcb\x08\x9e\x1c\xbf\x16\xe8\x6d\xf9\x55\xf9\ \x83\x59\x16\xed\x5d\x96\xfc\xa9\xe5\x2c\x6c\x46\xb5\x19\x68\xc6\ \xb4\x7c\x2d\x7f\xe2\x4e\x9f\x01\xab\x65\x6d\xca\xf5\x5f\x87\x69\ \x8a\x02\xde\xa0\x54\x55\xb3\xbd\x33\xc6\x69\x2c\x2b\x81\xeb\x4d\ \x65\xa5\x95\xa4\x3a\xc2\xc4\xda\xf9\x45\xec\x39\xd5\x27\xc6\x81\ \x70\x60\x1f\xf7\x1a\xba\x2e\x0d\xc6\xf5\x9d\xc5\x54\x2e\x36\x50\ \x05\x80\x34\x72\xdc\x6a\x1b\x0b\xb6\x21\x84\xec\x02\xa4\x67\xc8\ \xa3\x99\xa9\x3b\xd4\xe1\xd1\x93\x09\x1a\xb0\x00\xea\x48\xf7\xa1\ \x7c\xdc\x80\xab\xe2\x76\xde\xd5\x07\xf2\xa1\x0c\xe4\x1b\x28\xa0\ \x05\x96\xf9\x86\x9d\xb9\x50\x70\xc9\x1e\x28\x80\x32\xbe\x5b\xec\ \x00\xb9\x35\x1e\x2c\x44\x5f\x39\x5e\xee\x84\x0a\x5c\xca\xb3\x2a\ \x82\xc1\x59\x4d\xd5\x88\xa9\x94\xcf\x24\x45\x24\x68\x54\x11\xa9\ \x04\xb7\xe5\x46\xa3\x58\xd8\x03\x7b\x83\xb1\x1b\x1a\x8b\xd2\x60\ \x41\x0a\x14\x59\x1d\xef\xca\xd6\x14\x46\xe0\xea\x08\xab\x56\x25\ \x9b\x29\xb8\x3b\xef\x52\x1e\xe3\x51\x4a\x66\xf3\x0b\xf2\xa6\x01\ \xa6\x62\x42\x8e\xa4\xd8\x55\xa9\x0c\xf4\xac\x54\xe6\x17\x8d\x86\ \xae\x01\x05\x4e\xd9\x7b\xd1\xea\x5f\x42\x51\x7f\x15\xac\xcd\xed\ \xd0\x54\xfd\xd2\x5e\xd1\xae\xbb\xe6\xd4\x9a\x12\x19\xae\x15\x97\ \x40\xe2\xe0\x57\x2f\x99\xb5\xa8\x6d\x40\xb0\xb2\x8d\x00\x14\x4a\ \x54\x0d\xef\x51\x12\xd9\x5b\x53\xbd\x49\x7f\xc3\xad\x05\xb3\x0b\ \x93\xf2\xa8\xd5\x45\xd7\x7e\x94\x83\x12\xeb\x20\x20\xea\x75\xa0\ \x91\x62\x86\xee\xca\x0c\x4e\x75\x36\xb9\x53\x5c\xa4\xde\xe7\x7f\ \xd2\x88\xe5\x74\x68\xdf\xd2\xfb\xf6\xa9\x07\x0d\x3f\x8d\x19\xd4\ \xe7\x8c\x6a\x4f\xc4\x3a\xd1\x0b\xdf\xcb\x54\x07\x8b\x83\xc4\x66\ \x2b\xdb\x5d\x88\xa6\xcf\x8d\x56\x8b\x2c\x28\xca\xcd\x6b\x92\x76\ \xf6\xac\xfe\xbf\xa9\x6a\xe6\xfa\xd1\x66\x14\xac\x3c\xab\x88\x4e\ \x62\x45\x1e\x60\x79\xf7\xa2\xb9\xad\x6a\x15\xea\x64\x55\x95\x32\ \x3f\xc8\xf4\xa0\xa9\x53\x6a\xb5\x62\xa4\x8a\xd1\x49\x95\xfe\x47\ \xad\x10\x6b\x55\xa9\x51\x66\x4c\x87\xd4\x3d\x26\xa8\x6a\xa4\x83\ \xc8\xd8\xd1\x61\x58\xba\xc9\x1e\x47\x06\xdc\x88\xdc\x51\x0f\x17\ \x25\x83\x24\xd6\xda\xfa\x30\xaa\xea\xda\xd3\x15\xaa\xd4\xb1\x0f\ \x15\x38\x7b\xc6\x20\x36\x3b\x86\x3b\x1a\xd2\xe1\xb8\xc8\x64\xc1\ \xc6\x58\x14\xb1\x23\xa8\x15\x98\x72\x3d\xbc\x6f\x0c\xdc\x69\x9b\ \x7f\x95\x16\x09\x44\x73\x4d\x02\x9b\xa6\x50\xc0\x74\x35\xa9\x6e\ \xb3\x63\xd0\xae\xa9\x98\x10\xc0\xf3\x14\x71\x9a\xc7\xc2\xce\xf0\ \xb5\xc3\x58\x74\x3b\x1a\xd3\xc2\xcc\x93\x26\x75\x20\x11\xea\x17\ \xda\xba\xca\xcd\x8b\x08\x0a\xd8\x25\xad\xf8\x4f\x2f\x63\xca\x8d\ \x5d\x49\xb1\xf2\xb0\xf8\x5b\x4a\x5a\x3a\xdf\x9f\xbd\x14\xae\xa6\ \xca\x40\x61\xdf\x5a\xdb\x26\x01\x67\x06\xd6\xd6\x90\xb1\xa1\x8d\ \x6c\x0e\xbd\x34\xbe\xb4\xc3\x1a\x15\x39\x4b\x2d\xc7\x23\xa7\xd2\ \x82\x72\x21\xc3\x31\x5d\x32\x2d\x85\x49\x9d\x8e\x25\xa5\x31\x86\ \xba\x2f\xe6\x6a\x9e\xd2\x18\xed\xe5\x7f\x2d\xaa\xc3\x1b\x9d\x69\ \x2f\xa1\xcd\xcc\x57\x1a\xdc\x00\x6c\xf1\xab\x5f\x5b\x59\xbd\xc6\ \x94\xc8\x71\x0f\x19\xb1\xf3\x2f\x43\x4b\x72\xa1\x09\x1b\x2b\xb5\ \xfe\x7a\x8f\xd6\x95\x09\x25\x0d\xce\xc6\x8d\x2d\x28\xa4\x49\x41\ \xc8\x6c\x7f\x09\xa2\x61\xae\xa2\xb3\x01\x21\xb4\x36\xa7\x47\x8a\ \x99\x16\xd7\x0c\x3f\xa8\x5e\x9d\x18\xb0\xe3\x5a\x0c\xa5\x8e\x9f\ \xf8\xa5\x49\x8e\xd3\xfc\x95\xbf\xb9\xaa\xd3\xe2\x65\x94\x59\x98\ \x01\xd1\x45\x85\x1b\x14\x94\xcc\x74\xea\x23\xf0\xa2\x37\x27\xd4\ \xc3\xf4\xaa\x4f\xb5\x1d\xa8\x5c\x69\x58\xb7\x5b\x2a\xa6\x8b\x2d\ \x48\x5a\xce\x20\x5b\x5a\x9a\x92\x2a\x42\xd3\x89\x66\x38\xc9\x60\ \x06\xf5\xaa\xb0\xac\x71\x08\x80\xbd\xbd\x47\xa9\xa4\xf0\xa8\xaf\ \x39\x73\xff\x00\x2c\x5e\xae\x85\xae\xdc\x63\x16\x91\x94\x07\x00\ \xb5\xc5\xa9\x80\x0e\xab\xf5\x14\x52\x45\x98\xdc\x1b\x1a\x01\x11\ \xce\x14\xd3\x80\x56\x1b\x58\x37\x60\x2a\x51\x32\xa8\x1f\xbd\x31\ \x50\x01\x60\x2a\x72\xd3\x89\x47\x89\xc3\xaf\x8e\xa3\xd5\xea\xec\ \x6a\x99\x15\xb5\x94\x10\x55\x85\xd5\x85\x8d\x66\xe2\xe1\x68\x64\ \xca\x57\x36\x6f\x4d\xb9\x8a\x2c\x31\x5d\x09\x57\x0c\xa7\x50\x6e\ \x2b\x47\x47\x41\x22\xec\xc2\xfe\xd5\x9e\x79\xf9\x0e\x9f\x95\x5a\ \xe1\xf2\x00\x3c\x26\x3e\x56\xd5\x49\x3b\x1a\x22\xa6\x91\x6a\x12\ \x2f\x4e\x28\x79\xd0\x32\xda\xac\x05\x65\x25\xac\x06\xa6\xab\x49\ \x0f\x8b\x8b\x92\x72\x2f\x18\x6b\x8b\xfc\x56\xab\x8c\x0e\x5d\x3d\ \x4f\x75\x5d\x3e\xa7\xe5\x42\xea\x2d\x94\x68\xa0\x58\x0e\xd4\x58\ \x62\xbc\x9a\xb1\x26\x94\xe2\xd4\xf9\x01\x51\xa8\xbd\xb9\x8e\x74\ \xa3\xe6\xd2\xd6\xa8\x93\x6d\x49\xa1\x61\x4d\x22\xd4\x2c\x2b\x28\ \x86\x16\x3d\x8d\x0d\xc5\xed\x4e\x65\x14\x21\x2d\xb5\x18\x74\x9c\ \x54\xb2\x46\xd1\xaa\x3f\x86\x8e\x35\x7b\x52\xb1\x38\x86\x81\xc0\ \x8f\x11\xe3\xa1\x1a\x83\xad\x5a\x9a\x21\x2c\x26\x36\x6c\xba\xdc\ \x35\xb6\xa4\xe0\xe0\xf0\x26\x3e\x2d\xb3\x7c\x04\xec\x68\xba\x81\ \x0c\x92\xcd\xac\x78\x5b\x13\xbb\x35\xec\x29\xc4\xfd\xe7\xa8\xb1\ \x03\x56\xfe\x3a\x53\x24\x67\x6d\x19\x8f\xb7\x2a\x5a\x7a\x6d\x51\ \x71\x37\x37\x22\xf5\xc2\xd6\xb5\x87\xd2\xa6\xd5\xd5\x27\x0e\xd4\ \x5a\xda\x86\xe0\x1d\x6a\x0b\x12\x6c\x34\xa9\x08\xd4\x57\x1a\xea\ \x93\xaa\x49\xbd\x09\x35\x17\xbd\x48\x77\x05\x72\xba\x86\x5e\x86\ \x96\x23\x8e\x07\xfb\x44\x6a\x4a\x8f\x52\x9d\x6c\x3a\x8a\x20\x6a\ \x64\x91\x61\x81\xa4\x61\x7c\xc3\x28\x5e\xb5\x22\x31\xb3\xc4\x65\ \x8a\x48\xdb\x33\x29\xf3\x10\x2d\xa5\x5a\x70\x58\xe7\x40\x4a\xb6\ \xa0\x8a\xcf\xc1\xe1\x9e\x6f\x31\x39\x50\x6e\xc6\x9f\x8a\x85\x70\ \xf0\xe7\x8e\x69\x03\x5f\x40\x4d\xaf\x44\xb7\xd4\xb1\x66\x02\xe5\ \x48\x1d\x6d\x51\x71\x55\x70\x12\x62\x1f\x14\xa3\x3b\x30\x3e\xab\ \x9b\x8b\x55\xa2\x2e\xf6\x51\x7d\x74\xa6\x76\x84\xa7\xa1\xaa\xdc\ \x4b\x49\xd5\xbf\x12\xeb\x56\x42\x30\x17\x20\x7d\x6a\xb7\x12\x20\ \xca\x88\x06\xa8\xba\x9a\xaf\x80\x9a\x34\x3a\x50\x81\x73\x47\x10\ \xf3\x00\x39\x6a\x68\x22\x96\x3f\x16\x48\x16\xf6\x24\x35\x58\xc0\ \x42\x60\x8d\xf3\x90\x5d\x8d\xbe\x54\x97\x76\x8e\x48\x1d\x23\x2e\ \xc0\x36\x80\x55\x9c\x39\x12\x47\x9d\x41\x52\x0d\x99\x4e\xe2\x99\ \xe8\xa6\xaf\xad\x47\x7a\xbb\xc3\x74\xc5\xa8\x03\x46\xd0\xd5\x35\ \xbe\x60\x40\x27\xda\xb4\xb8\x7c\x3e\x18\xf1\x18\xf9\x88\xb2\x8e\ \x95\xd7\x8f\xac\xd5\xc8\xb6\xa3\x74\x04\x5c\x0d\x4d\x25\xa4\xf0\ \xec\xc7\x61\xbd\x14\x18\x98\xa4\x75\x4d\x54\x93\xa5\xf9\xd7\x4d\ \x9e\x32\x72\x5c\x79\x4f\x2a\xaf\xc5\x0d\xa1\x09\xf8\x8d\xea\xd1\ \x03\x37\x7a\xa3\xc5\x9b\xef\x55\x7a\x2d\x5c\xba\x8a\x28\xb5\x2d\ \xbb\xd1\xb9\x16\xde\x96\xfb\x57\x26\xa1\x13\xa3\x11\x9e\x3d\x5c\ \x0d\x54\xec\xc2\xa3\x0f\x66\x80\xb0\x04\x10\xd6\x65\xe8\x68\xce\ \xfa\x53\x06\x1a\x56\x1f\x68\x44\xd6\xde\x60\x74\x12\x0f\xe6\x8c\ \x24\xf3\xa8\x6a\xb0\x70\x93\x11\x99\x56\xe0\xea\x35\xd6\x97\x26\ \x1e\x70\x0f\xdd\x9d\x2a\xca\x95\x9c\xd0\xd3\x1a\x19\x83\x10\x62\ \x6d\x3b\x50\x15\x60\x2e\x54\x81\xd4\x8a\xc3\x48\xae\x22\xbb\xf2\ \xfd\x68\x80\xf7\xff\x00\xb8\xd4\x83\x96\xb8\x8a\x62\x8f\xea\x3f\ \x3d\x6b\xb2\x83\xb9\x3f\x2d\x29\xc1\xa5\x65\xa9\x00\x02\x37\xb9\ \xda\x9b\x91\x4f\x23\xef\x7a\xe8\xe3\xc8\x73\x6e\x3f\x4a\xb1\x6b\ \x63\x86\xa6\x5c\x1e\x6b\x83\x98\xe8\x47\x41\x56\x00\xa4\x70\xf5\ \xb6\x15\x5a\x32\x10\x96\x3e\x5f\x84\xf6\x23\xf7\xa7\x86\x05\x73\ \x00\x45\x8d\x88\x3b\xa9\xe8\x6b\xb4\xf1\x87\x5a\xba\x50\x91\x47\ \xe2\xc8\xe1\x00\xd0\x5f\xe2\xed\x51\x34\xb1\xe1\xe2\xf1\x24\xd4\ \x9f\x4a\xf5\xac\xdc\x64\xef\x89\x6c\xd2\x01\x61\xb2\xf2\x15\x5b\ \x89\x6e\x4e\x25\x1a\xbd\xa2\x83\x30\x1c\xdc\xd0\x2f\x13\x7c\xb6\ \x78\x51\xbb\x8d\x3f\x4a\xa4\xaa\xc4\x90\x01\x6b\x7d\x68\x95\x24\ \xbf\xf9\x6f\x6e\xb9\x4d\xab\x3f\xaa\x72\x34\x62\xc6\xe1\xa4\xd1\ \xb3\x44\x7b\xea\x28\xe4\x48\xf1\x29\x95\x24\x46\xc9\xb1\x53\xad\ \xfa\x56\x77\x81\x27\xfe\xd3\xff\x00\xda\x68\x4c\x52\x03\x70\x8e\ \x08\xe6\x06\xd4\xea\xc3\x9a\x09\x6e\x54\xc6\xe6\xda\x6d\x40\x90\ \xc8\xad\x90\x8c\xa4\x6d\x98\x81\x7f\xad\x54\xc6\x89\xe4\x52\x22\ \x95\xc4\x8a\x2f\xe5\x3e\xa1\xfc\xd6\x6e\x20\x4a\x04\x71\xbb\x33\ \x3c\xc6\xc0\x9b\x9b\x0b\xf2\xae\x77\x96\x7c\x32\x3d\x5c\x0e\x1d\ \x0f\x88\xea\x19\x46\xa7\x91\xae\x70\x48\x3e\x12\x67\x3b\x66\x3a\ \x28\xaf\x3d\x04\x86\x2c\x6c\x62\x2b\x00\xac\x00\x36\xf5\x0b\xd7\ \xa2\xf1\xd6\x59\x99\x0e\x8e\x09\x00\x72\x35\xd3\x8f\x2d\x16\x61\ \x79\x4a\x82\x5d\x83\x3b\x68\x48\xd8\x0e\x82\x81\x85\x39\xc6\x96\ \xa4\xc8\x72\xa7\x7d\x85\x54\x16\xe5\x7a\x8a\x43\xaa\xf8\x83\x21\ \xf7\xa7\x20\x19\x4d\xc8\xd7\xf2\xa1\xb0\x58\xaf\xd7\x7a\xc9\x85\ \x3a\xeb\x4b\x6b\x03\x6e\x74\xf6\x04\x8e\x42\x96\xc8\x09\xd6\xf7\ \xeb\x51\x28\x8a\x82\xb4\xc6\xd3\x7f\xad\x0d\x18\x80\x45\x04\xca\ \x0e\x16\x55\x22\xf6\x52\x47\xbd\x3a\xb9\x00\x2c\x57\xf1\x02\x28\ \xc4\x54\xc3\xcc\x17\x9d\x85\xf5\xed\x50\x16\x89\x98\x30\x43\x6b\ \x12\xa2\xff\x00\x4a\x86\x20\x0b\x93\x41\x09\x1a\xd0\x9b\x57\x3c\ \x82\xfb\x50\x9b\x9d\x49\xb7\x61\x41\x71\x55\xbd\xcd\x4a\x82\x4d\ \x95\x6f\xec\x2a\x15\x03\x30\x5e\xa6\xab\x4f\x88\x91\xa4\xf0\x60\ \x2c\x17\x6d\x0e\xad\x45\xb8\x96\xe4\xc9\x18\xbc\xb2\x2a\x76\xbd\ \xcf\xd2\x85\xed\x94\x32\xe6\x21\x86\x84\xad\xa8\x70\xf0\x24\x3e\ \x67\x01\xe5\x3b\xdf\x50\xb4\x6e\x4b\x35\xc9\xb9\xa5\x16\x73\x54\ \x44\x18\x9b\x93\xa5\x18\x17\xf6\xfd\x68\xd5\x49\x36\x03\xd8\x54\ \x83\x6a\xaf\xc5\x3f\xcd\x45\xbe\xcb\xb7\x4a\xba\x88\xc4\x7d\xd2\ \xab\x9e\x6c\x7d\x2b\xfc\xd4\xa4\x10\xc6\xe5\xdb\xef\x64\x3b\xb3\ \x6d\xf2\x15\x66\x8d\x66\xc3\x2e\x22\x24\xb4\x6c\xca\xb4\xdc\x3e\ \x1e\x4c\x43\x78\xb3\x31\xc9\xd4\x9d\x4f\xb5\x68\x34\x84\xef\x6f\ \x6b\x50\xc8\xdb\x17\xb9\xcd\xa2\xa8\xe7\xfc\x55\xf9\x5a\x04\x50\ \x13\x24\x4a\x11\x79\xff\x00\x73\x48\x9a\x62\x5b\xc1\xc3\x0b\xb1\ \xd0\xb7\xf1\x56\x99\x54\xaf\xde\x6a\xa3\x52\xa3\x44\x1e\xfd\x69\ \x18\x63\x0c\x0c\xee\x54\xdd\xbd\x23\x98\x14\xd4\xe8\x50\x61\x22\ \x2e\xde\x67\x6f\xd7\xa5\x55\xb3\xbc\x85\xc9\xb9\x63\x73\x7a\x6c\ \xce\xf3\x49\x99\xb4\x1c\x80\xe5\x5c\xab\x61\xa5\x66\x90\xaa\x91\ \xfd\xaa\xce\x0f\x0c\xd2\xb5\x94\x58\x0d\xcf\x21\x4c\xc1\x60\xda\ \x4f\x3c\x9e\x54\xeb\xd6\xb4\x11\x00\x50\xaa\x2c\xa3\xf3\xad\x4e\ \x3f\x68\xb5\x38\x60\x21\x5c\xb1\x0b\x77\xb6\xa6\x8c\x24\x47\x16\ \x19\xa3\x5c\xd2\x21\xbf\x42\x46\xd5\x2a\xb6\xda\x83\x17\x13\xb2\ \x2c\x88\x7d\x1c\xbf\x7a\xe8\xc1\xe9\x1a\x81\x65\x40\xbe\xc2\x99\ \x15\x93\x36\x76\xb0\x1a\xde\x86\x09\x63\x68\x95\xd9\xc6\x6b\x6a\ \xa3\x7b\xfb\x54\x82\x64\x90\x31\x1a\x8f\x48\xe4\xbf\xde\xb4\x83\ \x8b\x49\x5c\x09\x32\xd9\x57\x40\xbc\xc7\xbd\x06\x10\x67\xc4\x22\ \xf5\x61\x57\xa3\xf2\x8b\x6f\x4b\x8a\x20\x98\xd2\xc0\x79\x42\xe6\ \x1d\xb9\x55\x78\xf6\x34\xf6\xca\x75\xb7\x3a\xa1\xc5\x54\x78\xe0\ \xda\xfe\x51\xbe\xb5\x74\x1a\xa5\xc5\x35\xc4\xfb\x28\xa7\x97\x8a\ \x2a\xb1\xd2\x90\x49\x00\x8e\x86\xd4\xd9\x0d\x28\x9b\xfc\xcd\xeb\ \x9b\x50\xec\x04\x41\x98\xc8\xc2\xea\xbb\x0e\xa6\x9f\x8a\x62\x30\ \xce\xc4\xea\xde\x51\x53\x87\x19\x30\x88\x3a\xdd\xab\xa4\xb1\x78\ \x94\x81\x60\x0b\xeb\xcc\xed\x5a\xf8\x91\x7c\xa0\x06\x16\xd0\x7e\ \x94\x12\x1e\x94\x52\x90\xd7\xcc\x6f\x7a\x51\x1d\xcd\x14\x27\x33\ \x6c\x09\xd3\xbd\x48\x91\x8e\xfb\x0e\x47\x5a\x0b\x80\x2c\x2b\x94\ \x92\x6c\x01\x26\x84\xe9\x62\x86\x4f\x52\x05\x27\xe2\x5a\xa7\x3c\ \x4d\x0b\xe5\x61\x70\x76\x23\x63\x57\xb4\x0c\x14\xba\x06\x3b\x02\ \xd4\x18\xb0\x87\x0c\x44\x92\x22\x95\xd5\x75\xbf\xe9\x45\x86\x29\ \x0b\x72\xa2\x50\x49\xb0\xd4\xd0\x23\xc1\xcf\x13\x17\xd4\xd0\x89\ \x96\x69\xd3\x0f\x09\x21\x5c\xf9\xda\xda\x9f\xed\x46\x93\x90\xa6\ \x6c\xab\x9a\x46\x1f\x0a\x0b\xfe\x74\xc1\x95\x45\xe4\x8a\x48\x87\ \xe2\x6b\x11\xf9\x54\x02\x02\xe5\x40\x15\x7a\x0a\x34\x62\xbb\x73\ \xe5\x4c\x4b\xdc\x39\xc3\x61\x32\xf3\x46\xbe\xfb\xde\x8f\x15\x30\ \x86\x45\x7b\x5c\xb2\x80\x41\x36\x04\xea\x45\xfe\x42\xa8\x60\x24\ \x11\x62\xb3\x92\x6c\xe3\x2b\x0e\xd4\x7f\xe2\x58\x25\x93\x04\x92\ \x46\x0b\x04\x7f\x35\xba\x01\x5a\xdf\xf1\x1f\x49\x96\x79\xb1\x38\ \x96\x58\xbc\xf2\xf3\x6b\xf9\x53\xda\xb4\x21\xc1\xb4\x08\x1b\x13\ \x31\x9d\x86\xad\x1d\xb6\xf9\xd5\x5f\xf0\x8a\x34\x65\xf3\xad\x89\ \xbb\x2d\xc6\xfa\x6f\x5a\xc4\x02\xc1\xb9\x8e\x74\xf1\x9b\x35\x5b\ \xf0\x11\x95\xb2\xac\x2a\xa8\x1b\x50\x40\xb1\xa6\x80\xe1\x6e\x25\ \x72\x07\x22\x69\x2a\x8f\x1b\x05\x6d\x81\x25\x1f\x71\x6e\x86\x9d\ \x1b\x07\x25\x43\xad\xf9\x81\xbd\x6e\x32\x3f\x12\x66\x5f\x29\x20\ \x1e\xad\x43\x92\x5b\x1b\xc8\x75\xdc\x5e\xf7\xa6\x0a\x25\x50\x6b\ \x58\x08\x58\x54\x91\xe2\x47\x1b\x01\xa8\xf2\xdb\xf4\xac\x2f\xf1\ \x06\x0d\x61\xe2\x8f\x2c\x60\xe5\xf0\x96\xc3\x90\x26\xbd\x13\x34\ \x48\x49\x79\x05\x97\x53\x6d\x4d\xab\x23\x12\xed\x89\x9d\x8b\xaf\ \xf9\xc7\xd3\xd0\x72\x15\xcf\x9c\x99\x8d\x4b\xdb\x1f\x83\x61\xdc\ \xce\x64\x91\x09\x8e\x3d\x4d\xfa\xf2\x15\xa4\xcd\x9c\x97\xd8\xdf\ \x5a\xb4\xf8\x6f\xb1\xc6\xb0\x0b\xdb\x72\x7a\x9a\x44\x82\xcf\xee\ \x2b\x19\x9d\x1d\xd1\xc1\x8a\x01\x42\x4d\xa8\x1b\x30\xde\x9a\xea\ \x08\xb8\xb3\x29\xd8\xf2\xaa\x4e\x35\xae\x8e\x57\x88\xdd\x0f\xb8\ \x3b\x1a\x75\x62\xd3\x28\xbd\xec\x3e\x94\x0f\x72\xc0\x5b\x63\x72\ \x68\xe3\x92\x39\x63\x2c\xba\x11\xea\x1d\x2a\x06\xe4\xf5\xab\x01\ \x4c\x2c\x68\x1c\x53\xa4\xda\x96\xda\x8a\x11\x46\x94\xc2\xcc\x7a\ \x1a\x75\x2e\x41\x53\x41\xa8\xcd\x91\x1d\xf9\xaa\x93\x5d\x6e\xe6\ \xa0\xd8\x5c\x1d\x98\x10\x6b\x28\xb4\x92\x03\x02\x31\x99\x14\x05\ \x02\xd7\xd4\x50\xab\xc3\x2d\xc4\x66\x59\x0f\x50\x9a\x55\x7f\xb1\ \x44\x8f\x98\xb9\x71\xf8\x6d\x6a\x79\x26\xc0\x1d\x00\xd9\x46\xc2\ \xb3\xb7\xe9\x10\x8a\xdf\x04\x97\xf6\x5f\xe6\xa3\x28\xd6\xe0\xff\ \x00\xd4\xc0\x7e\x97\xa1\x35\x16\xbd\x25\x33\x06\x28\x56\x29\x23\ \x42\x45\x8d\x81\xfd\x6a\xae\x12\x29\x60\xc7\x20\x65\x07\x36\xc4\ \x1d\x3d\xea\xd2\xad\xcd\x80\xd4\xd1\xaf\x99\x83\x28\xb8\x00\xaa\ \x77\xea\x68\xcd\xed\x00\xee\x40\xae\xb6\x94\x41\x2c\x2e\xcc\xa0\ \x75\x2c\x29\x89\x16\x72\x08\x05\x97\xae\x81\x4f\xcc\xef\x56\x22\ \xe3\x17\x51\xa5\x31\x14\x0d\x6c\x3e\x62\xa3\x10\x71\x10\xa0\x65\ \x48\x72\xed\xa1\xcd\x4c\xb1\x08\xb9\xc8\x2f\x6f\x35\x86\xd5\xa0\ \xe6\x62\xdb\x9d\xb6\xed\x42\x75\xa2\xae\xb7\x5d\x6a\x01\x02\xf4\ \x6b\x14\x9f\x6b\xf1\x33\x47\x95\x54\xaa\x0d\xcd\xbe\x55\x20\x00\ \xa5\x98\x85\x51\xb9\x35\x5f\x11\x89\xcd\x74\x8b\xca\x9c\xcf\x33\ \x55\xc8\x85\x8a\x91\x41\xca\xa7\x3b\x0e\xde\x51\xfe\xfe\x7e\xf5\ \x57\x29\x26\xe7\x73\x46\x05\xa9\x98\x78\x9e\x56\xb2\x0d\x39\x9e\ \x95\x9f\x5a\xf0\xb4\x42\x4e\x55\x04\x93\x57\xf0\xb8\x05\x5b\x34\ \xda\xb7\xe0\x1f\xbd\x3b\x0f\x1c\x70\x0b\x26\xad\xcd\xbf\x8a\x66\ \x6a\xdc\x98\xcd\xa9\xb5\xed\xca\xdc\x85\x12\x8a\x1b\x82\x2c\x6a\ \x56\xca\xb6\x17\xa5\x91\x8b\x5e\xd7\xa6\xa1\x51\xcc\x77\xaa\xac\ \x75\x00\x6e\x68\xe3\x00\x6e\x6f\x5a\x95\x1b\x68\xd4\xe5\x8d\x40\ \xbe\xe7\xad\x14\x5e\x49\x6d\x7b\xe9\x42\xac\x2d\x63\x4c\x52\x00\ \xd3\x4a\x50\xc3\x50\xcb\x23\x27\xde\x04\xcc\xa1\x6c\xc0\x1d\x46\ \xb5\x05\xa8\x59\xc8\x46\x23\x73\xe5\x1e\xe7\x4a\x75\x1d\x04\xa9\ \x2a\x07\x50\x40\x26\xda\xd6\x7e\x2e\x5f\x12\x77\x6e\xa6\xac\x4a\ \xe2\x0c\x29\x50\x76\x19\x57\xbf\x7a\xce\x26\xe3\x53\xf2\xac\xf2\ \xaa\x44\x3b\x5f\x40\x68\x4b\x54\x33\x5a\x82\x23\x9e\x74\x51\xcd\ \x85\x63\x5a\x6a\x31\xb2\xaa\xdf\x40\xa0\x7e\x54\x8c\x63\x95\x30\ \xba\x9d\x43\xe5\xa2\x99\xc6\x63\x6d\xaf\x49\x91\x81\x40\xcc\x2e\ \x23\x70\xde\xc3\x9d\x36\x88\x37\x6f\x39\xe9\x7a\x16\x7a\x17\xbe\ \x72\x07\xd6\x96\x59\x7f\x18\x62\x3e\x14\x37\x35\x23\x01\x19\x4b\ \x31\xca\xa3\x73\x55\x71\x18\xdb\xdd\x61\x05\x57\xaf\x33\x4d\x6f\ \x31\x0d\x20\x04\x8d\x97\x92\xff\x00\x26\x97\x26\x1e\x29\x1f\x35\ \xca\x75\x00\x69\x59\xbb\xf0\xac\x41\x1c\x22\x04\x26\x35\x72\xeb\ \x98\x96\xde\x8e\x3c\x3e\x1a\xe7\xc8\xc2\xea\x6f\xe6\xed\x42\x18\ \x58\x28\x16\x0a\x2c\x28\xe2\xdc\xff\x00\xa4\xfe\x95\xa4\xcc\x8b\ \x0f\x85\x51\xe8\x67\xff\x00\x51\xb5\xa9\xb0\xc5\x04\x73\x2c\xb1\ \x87\x05\x76\x17\xb8\xa0\x5a\x25\x22\xf5\x89\x84\xe5\x34\x57\xa5\ \xa9\xa2\x06\xb5\x00\x85\x68\x60\x1d\x71\x18\x76\xc3\x48\x75\xb7\ \x94\xed\x59\xe0\x12\x36\x34\x50\xb3\x23\x86\x06\xc4\x1a\xd4\xaa\ \x8e\x09\x64\xc3\x63\x41\x63\x66\x43\x95\x81\x35\xab\x81\x99\xb1\ \x31\x34\x99\x57\x2d\x81\x16\xf8\x4f\x30\x7d\xa9\x18\xec\x32\x63\ \xb0\xeb\x22\x0b\x4b\x6b\x82\x39\xf5\x15\x9d\x85\x69\x30\xf2\x96\ \x89\xca\xb6\xc7\xca\x35\xf7\xeb\x4e\xde\x35\x9f\x5b\xea\x48\xd8\ \x91\xed\x51\x1a\x83\x8b\x92\x4f\xc2\x32\xfb\x9b\x6a\x6a\x84\x3c\ \x4e\x41\x61\x2a\x44\xfa\xea\x40\x20\xd5\xdc\x06\x25\x31\x39\xc0\ \x39\x5f\x31\x60\x87\x72\x39\xfb\xd6\xe5\x94\x61\xf4\x9c\x74\xb2\ \x20\x54\x5f\x2a\xb6\xed\xd7\xb5\x3a\xab\xf1\x17\x55\x54\x56\xb1\ \x0a\x0b\x9d\x7f\x2a\x6f\x82\x3b\x8a\x4c\x90\x61\x7c\x08\xf7\x90\ \x0b\x91\xd2\x93\xc2\x21\xb1\xfb\x4b\xec\xa7\xc8\x2d\xb9\xeb\x54\ \x73\x34\x85\x09\xdd\xc5\xfe\x64\xff\x00\x7a\xda\x08\x22\x81\x63\ \x03\xd1\x61\xf3\xac\xce\xee\x9f\x11\x32\x78\xb1\x95\x36\xd7\x6b\ \xf2\x35\x97\x2a\x14\x25\x4f\xa8\x1d\x6b\x58\x9a\xa3\xc5\x96\xcc\ \xae\x3e\x21\xad\x5c\xe7\xd5\x14\x5f\x6a\x51\xfd\xe9\x8f\x4b\xae\ \x6d\x40\xe1\xdc\xa6\x2d\x6e\x6f\xae\xa3\xad\x5f\x7d\x18\xdb\xad\ \x67\x46\xb9\xa5\x04\xef\x9a\xb4\x64\xd6\x43\xef\x54\xf1\x52\xdf\ \x51\x4b\x90\xe9\x6a\x63\x02\x74\x1a\xd2\x64\x68\xc1\xb7\x88\x3e\ \x40\x90\x3e\x75\x00\xd0\xbe\xd4\x4b\x94\x93\x96\x45\x6b\x6e\x06\ \xe2\x84\x82\xc4\xdb\xff\x00\x15\x34\x59\xde\x85\xaa\x25\x95\x82\ \xe6\x8a\x02\xe8\x37\x73\xcf\xda\xa6\xe1\x91\x5c\x02\x03\x0b\xd8\ \xd6\x51\x4e\x35\xa8\x6a\x63\x2d\xec\x6f\x50\x10\x66\x1c\xfa\xd1\ \x87\x40\x14\x9a\x2c\xb6\xa6\x65\xa9\xcb\x56\x2d\x28\x28\x2a\xca\ \x4b\x2e\x61\x6b\x8d\xc5\x14\x71\xc6\xb1\xf8\x65\xe5\x75\xe8\x4e\ \x5b\x7d\x29\x81\x68\x82\xd3\x80\x0a\xa9\x18\xb4\x51\x2a\x9e\x46\ \xd7\x35\x2c\x5e\xd7\x73\x6e\x57\x34\xc8\x94\x5c\xb1\x04\xf6\x1c\ \xea\x70\xe2\x62\xec\xf3\x46\xca\x76\x4f\x29\x21\x7e\x94\xe2\x05\ \xac\xc1\x9d\x48\xb7\xa1\x5b\xf5\x3f\xc5\x47\x3a\x6b\x5b\x35\x83\ \x02\x77\xb6\xb4\x06\x94\x1d\x7a\x57\x3b\xc7\x12\xe7\x96\xe3\xf0\ \x8e\xb5\x2e\xc9\x14\x5e\x23\xeb\xf8\x47\x53\x54\x26\x91\xe5\x90\ \xbb\x1b\x9f\xd2\xb3\x6e\x24\xe2\x71\x0d\x33\x6f\xec\xa3\x61\x4b\ \x42\xc3\x73\xf2\xa8\xb6\xba\x1a\x76\x16\x23\x2b\x1b\x90\xaa\x37\ \x35\x8e\xeb\x46\xe1\x30\xe6\x5f\x3b\x9c\xa8\x39\xf5\xf6\xab\xc0\ \x85\x5c\x88\x32\xa8\xe5\x4a\x04\x9b\x6b\x60\x05\x80\xa2\x26\xba\ \x48\xc8\xf3\x1a\xec\xc6\x97\x9a\xba\xe6\x95\x86\x86\xa9\xce\x00\ \xb9\x34\x9c\xe3\xdf\xb0\xa8\x05\xcb\x5e\xd6\xa8\x62\xc4\x6d\xb9\ \xe6\x69\x81\xc5\x56\xbd\x10\x6e\xf5\x2c\x59\x06\x8c\x3d\x56\x57\ \xa6\x23\x16\x36\x02\xe6\x9d\x06\xe6\xbd\x0e\x22\x41\x14\x51\xb9\ \x22\xe6\x41\x61\x7d\x4d\x26\x6c\x54\x10\x86\xbb\x66\x2b\xea\xb6\ \xcb\x54\xa7\x9d\xe7\x91\x66\x94\xda\xc2\xf1\xa7\xe1\xee\x7b\xd1\ \x79\x19\x0e\xc5\x4e\xd3\x49\xad\x85\xb4\x03\xa0\xa4\xbb\xd2\xf3\ \x80\x34\x34\xb7\x92\xb3\x79\x35\x83\x76\xbd\x1e\x00\xdf\x12\x0f\ \xe1\x05\xaa\xa3\xc9\xad\x85\xc9\xab\x1c\x3a\xe2\x39\x1e\xfb\xd9\ \x45\x12\xf6\xbe\x2d\x96\xd2\xe7\x41\xd4\xd0\x19\x54\x5e\xec\x08\ \x22\xc6\xd4\xb6\x60\x35\xa0\x2d\x7d\x6b\x5a\x12\x4b\x15\xca\x5d\ \xdd\x47\x27\x3a\x7f\x7a\x92\xee\x45\x89\xb0\xe8\x28\x0b\x50\x93\ \x59\xd3\x86\x73\x05\x4d\xa8\x81\x6b\x5e\xff\x00\x51\x48\xbb\x5c\ \x5b\xe7\x46\x49\x23\x4f\x9d\x5a\xb0\xe5\x62\x45\xf2\xe9\x4f\x84\ \xf9\x88\xec\x7f\x4a\xac\x5c\x11\xe5\x3b\xd3\x62\x62\xa6\xd6\xb9\ \xca\x7f\x4a\xd4\xa1\x48\x1a\x90\x75\xa5\x67\xca\x2e\x41\x3e\xd4\ \x68\xc1\xb5\x17\xac\x34\x7c\x66\x8c\x52\xe3\xa6\x2d\x69\x94\x8b\ \x74\xbf\x7a\x24\x37\x72\x37\xb5\x56\x92\x6b\x68\x01\x04\xef\x7a\ \x98\x4b\x13\xa5\xea\xd3\x8d\x9e\x17\x29\xb1\x88\x9e\xeb\xef\x43\ \xc4\x70\x8c\xef\xe3\xc0\xb7\xbf\xad\x40\xd8\xf5\xaa\x51\x4b\x6b\ \x16\x24\x30\x3d\x2b\x57\x0f\x88\x59\x62\xf1\x43\x00\xc3\xd4\x01\ \xfc\xeb\xa4\xb2\xcc\x65\x93\xa8\x36\x3a\x1a\x38\x5d\xd2\x55\x78\ \xdb\x2b\xae\xa1\xbb\xd6\xb4\xc9\x16\x25\x2d\x2a\xef\xa8\x60\x2c\ \x45\x65\xe3\x30\xef\x87\x97\x2b\x6a\x0e\xaa\xc3\x63\x45\x98\xa5\ \x6c\xc5\x8c\x8a\x58\x83\x94\x71\x26\xcc\x80\x73\xa8\xc4\x44\xad\ \x85\x99\xe6\x5b\xb9\x5c\xc7\x5d\xba\x0a\xcb\xe1\xb8\xaf\xb3\x4c\ \x49\x17\x56\x16\x60\x37\xab\xd8\xbc\x76\x1d\xb0\xae\x91\xbb\x33\ \x38\xb5\x8a\xda\xd5\xb9\xcb\x67\x63\x19\xc8\xe4\x48\xad\xa6\x84\ \x56\xec\xad\xf7\x82\xfc\xc6\x6a\xc0\x17\x2c\x15\x45\xc9\xda\xb7\ \x4a\x02\x40\x3a\x9c\xa2\xe4\xfb\x51\xc1\x72\x43\x30\x2e\x14\x1d\ \x46\xa6\xaa\xf1\x66\x45\x85\x03\xba\xa9\xb9\xde\x89\x8b\x16\x26\ \x2b\xaa\xde\xc2\x43\xcf\xda\xa3\x1e\x8a\x30\xcc\xc8\x35\x0d\xb9\ \xd4\x9b\xf5\xa6\xdd\x81\x9d\x2d\x94\xf9\x9d\x47\x4d\x6e\x4f\xb5\ \x2d\x8a\x9f\x2a\x2c\x8c\xd6\xbf\xa6\xc0\x7c\xcd\x1e\x6c\xb7\x2a\ \x02\xf5\xb0\xb5\x2d\xdd\x8a\x9b\xb1\xd7\xbd\x73\x6c\x58\x50\xfe\ \x38\x26\x38\xd9\x13\x52\x15\xae\x6a\xdb\x32\x9b\x95\x0e\xc7\xba\ \xe5\xfc\xcd\x27\x00\xb6\x89\x9f\xf1\x1b\x0f\x95\x35\xc3\x91\xa2\ \xb1\xaa\x0a\x53\x9b\xe8\xd6\x61\xf8\x7e\x1f\xef\x40\xee\xd6\xd1\ \x88\xf6\xa9\x9d\xa2\x89\x6f\x34\xca\xbd\x86\xa6\x93\x16\x27\x0b\ \x34\xa2\x24\x66\x0c\x76\x2c\x34\x35\x6a\x82\x36\x76\xb9\x16\x61\ \xb3\x8d\xc5\x57\xc4\x3c\xc9\x2a\xa6\x22\x4b\xc4\xc7\x52\x39\x8a\ \xb6\x14\xe6\x20\xe9\x61\xaf\x6a\xad\x28\x49\xe5\x12\xbd\xcc\x6b\ \xa4\x6b\xf8\xbb\xd1\x48\x89\x12\x21\x0b\x70\x84\x58\xb5\xad\xa7\ \x45\x1f\xbd\x73\x9b\x9b\xec\x06\xc3\xa0\xae\x66\xb9\xeb\xd0\x74\ \xae\xb5\xf7\xa9\x04\x02\x7b\x0a\x35\x4b\x6c\x2a\x54\x51\x9d\x2a\ \xc4\x10\x95\xd9\x45\x10\xa9\x03\xa5\x28\x39\x6a\x72\xf7\xa3\x60\ \x91\xae\x69\xa4\x58\xc7\x7d\xea\xac\xfc\x4a\x24\x16\x82\x3c\xc7\ \xf1\x3e\xdf\x4a\x91\xc1\x09\x16\x5b\x9e\x82\xa5\xad\x10\x1e\x34\ \x89\x1f\x42\xc6\xb3\xe5\xe2\x38\xa7\x5b\x66\x54\xff\x00\x42\xda\ \xa8\xcd\x21\x24\xdc\x96\x27\x72\x6b\x17\x9c\x87\x1b\x6f\x8a\xc2\ \xb9\x03\xc6\x67\x2a\xe2\xc7\x2e\xda\xf2\xa2\x4c\x92\xdd\xa2\x91\ \x58\x73\xed\x59\x31\x00\x11\x46\x9f\x11\x07\xbd\x80\x1f\xa9\xaa\ \xd2\xe3\x0e\x1a\x4c\x98\x7f\x33\x83\xe6\x6f\xda\x8f\xde\x7a\xb1\ \xa3\x8f\x90\x4b\x3f\x94\xdd\x54\x58\x55\x72\x47\x33\xf2\x14\x42\ \x48\xf1\x10\x09\xe1\x16\xbe\x8e\xbf\x84\xd0\x5f\xf2\xa3\xd2\xe2\ \xdd\xad\xf3\xad\x28\x50\x47\x02\x27\xc5\x6b\x9a\xcf\xc3\x29\x93\ \x10\x8b\xd5\xab\x49\xc8\x2e\x48\xeb\x5a\xe3\xd0\xa8\x2e\x41\xf4\ \xde\x84\xca\x2f\xb5\xaa\x76\xa5\x4c\x09\x7e\x80\xd3\xa0\xdc\xeb\ \xd6\xa6\xf7\xdf\xe9\x48\x45\xb3\x5c\x9d\xa8\xcb\x81\xdc\xf4\x15\ \x6a\x30\x9e\xa6\xbb\x38\xef\xf4\xa5\xa9\x20\x6b\xa9\xa3\x8c\x33\ \x9b\x28\xf7\xed\x4e\xa1\x06\x1d\x0f\xd2\x89\x6e\x4e\x83\xf3\xa5\ \x3c\xd8\x74\x62\xa2\x68\xe4\x90\x7c\x0a\x6a\x9e\x23\x19\x2b\xdd\ \x41\xc8\xbf\x84\x51\xfa\x4b\xf2\xcc\x90\xfa\x9d\x58\xfe\x10\x75\ \xaa\xf3\xe3\x65\x71\x95\x3e\xed\x7a\x2f\xf3\x54\x73\x1a\x90\xd5\ \x9b\x6d\x38\xb0\x35\x55\x46\x17\x04\x97\x3d\xc0\xe5\xf5\x35\xd9\ \xd9\x98\x93\x49\x6c\x42\xa6\x3c\xc5\x21\xb2\xb2\x00\x1a\xf7\xb5\ \x1b\x5c\x3e\x5d\x49\xed\xce\x8d\x29\x73\x40\x4f\x7a\x62\xe1\xe7\ \x71\x70\x84\x03\xcd\xb4\x14\x47\x0a\x8b\xeb\x72\xe4\xf2\x5d\x05\ \x59\x52\xbc\x28\xd3\x4a\x72\xe8\x0f\x33\xc8\x55\xdb\x85\x40\x89\ \xb2\x8a\x92\x48\x50\xa0\x05\x1d\x05\x2c\x9a\x7c\x0e\x26\xb8\x9a\ \x12\x7b\x9f\x6a\x16\x63\x7d\xf4\xa8\xa5\x9a\xa0\x35\x05\x48\x1a\ \xd1\xa8\xc5\xa6\x21\x03\x52\x69\x4b\xbd\x1a\xd2\x8c\x50\x73\x66\ \x5b\x0e\x97\xa6\x40\xcc\x24\xcc\xc2\x96\xa7\x4a\x34\xad\x46\x55\ \x71\xe8\xd0\xb9\x16\xf2\xb6\xc7\xb5\x0e\x18\x31\xd4\x5b\x5d\x35\ \xad\x06\x41\x34\x46\x33\xbd\xbc\xa6\xa8\x94\x78\xd8\xad\xac\x6f\ \xb1\xe5\x45\x98\x62\x52\x56\x0d\x6b\x0d\xfa\x53\x73\xbd\xaf\x6b\ \x52\x61\x42\xad\x99\x88\xf6\xa3\xbd\xee\x3a\xd1\x0a\x74\x61\x63\ \xa8\xa7\x42\x86\xde\x45\x36\xa5\xa2\xd8\xd8\x00\x5b\x73\x7d\x97\ \xdf\xf8\xa2\x96\x35\x93\x43\x34\x99\xb9\x36\xc0\x7c\xa9\x82\x9a\ \x8a\x19\x8e\x6d\x02\xe9\x4e\x85\xbc\x39\x03\x28\xb6\xba\xf7\xa4\ \xa3\x1b\x28\x60\x3c\x45\x16\x65\xfc\x43\xa8\xa2\x57\xcc\x6c\x10\ \x83\xdf\x95\x6a\x06\xb6\x1d\x95\x96\xe8\x6e\xbb\xdb\x9a\xf6\xa6\ \x90\xb2\x46\x63\x91\x43\x29\xfa\x8f\x6a\xcf\xe1\xb2\x78\x73\x65\ \x63\xe5\x7d\x0d\x68\x01\x63\xde\xba\xca\xcd\x66\x63\x30\x92\x40\ \xd9\x87\x99\x0e\xcc\x29\x1a\x1d\x6f\xad\x6e\x03\xa5\xb7\x07\x71\ \xd6\x90\xd8\x3c\x2b\xbe\x6c\xac\xa4\xf2\x07\x4a\x2f\x1f\xe2\x95\ \x5b\x83\x42\x5a\x63\x3b\xdc\xaa\x0d\x3b\x9a\xd1\x94\x93\x0c\x86\ \xe7\xd2\x4d\x72\x85\x54\x08\x83\x2a\x8d\x85\x73\x6b\x1b\x8e\xaa\ \x7f\x4a\xd4\x99\x06\xf6\x06\x8f\x2b\x80\x1a\xea\xb4\x38\xd7\x8a\ \x3c\x3b\xac\xa7\x56\x5b\x85\x1b\xd3\x66\x91\x62\x8d\xa6\x6d\x94\ \x5c\x77\x35\x8a\x5a\x4c\x46\x2f\x31\xbb\x16\x3a\xfb\x51\xca\xe2\ \x9d\xa9\xcd\xc4\xe3\x5d\x23\xc3\x82\x35\x3e\x76\xaa\xf2\x71\x59\ \xb4\xcb\x14\x40\xff\x00\xa6\xf5\x64\xe0\x30\xe9\x33\x09\x5d\x9c\ \x8b\xf9\x46\x80\x51\xa2\x41\x1b\x7d\xd4\x08\xa7\xa9\x17\x35\xc3\ \x39\x37\xd1\x7f\x6d\xc5\xa4\x68\x04\xa5\x5b\x28\x2d\x6e\xa6\x91\ \x36\x27\x11\x26\x8f\x33\x90\x4d\xce\xb5\xbc\xd6\x51\x91\x51\x00\ \xb0\xd3\x28\xa4\xcb\x0e\x1d\xc1\xcd\x87\x8c\x9e\xa0\x58\xd6\xaf\ \x1b\xfd\x5a\xf3\x6e\xec\x58\xe9\xa9\xe7\x51\x77\x8c\x82\xa7\x5b\ \xd6\xe8\xc3\xe1\x51\x48\x18\x54\xee\x49\xbd\x56\xc5\x70\xe8\xe5\ \xf3\xe1\xce\x56\xff\x00\xdb\x3c\xfd\xab\x17\x85\x3a\x9c\x3e\x39\ \x71\x11\xa4\x78\x80\x10\x1d\x59\xaf\xea\x02\xdb\xfd\x45\x58\x90\ \x66\x5b\xa1\x42\x08\xf2\xd9\x86\xd5\x91\x30\x29\x9e\x33\xff\x00\ \x2d\x55\x2d\xdc\x9b\x9a\x47\x85\x26\x5c\xd9\x18\x0e\xb6\xab\xf5\ \x62\xc6\xc1\x78\x21\x07\xc6\x9d\x10\xf4\x1a\x9a\x4b\xf1\x28\x14\ \xda\x28\x19\xf5\xdd\xcd\xbf\x4a\xcc\xb5\x12\xa8\xe9\x47\xee\xfc\ \x58\xd2\x4e\x27\x11\xd2\x4c\x3e\x5e\x99\x5b\xf9\xa7\xae\x23\x06\ \xc3\x37\xda\x32\xf6\x23\x5a\xce\x87\x05\x3c\xab\x9a\x38\x0b\x03\ \xce\xd4\xd4\xe1\x78\x92\xd6\x78\x84\x63\xab\x5a\xb5\x2f\x25\xd2\ \xeb\x63\x30\x6a\x09\x12\xbb\x9e\x81\x6d\xf9\xd2\xbe\xdd\x88\x98\ \xe4\xc2\x41\x97\x4d\xed\x73\xf5\xae\xc2\xf0\xec\x34\x63\x34\x8e\ \xd2\x37\x41\xa2\x8a\xb6\x32\x85\xca\x8a\x15\x7a\x0a\xd7\x63\xa5\ \x13\x82\x9a\x43\x9f\x11\x38\x56\x3b\x86\xb9\x34\x63\x87\x41\x94\ \x03\x33\x5c\x6e\x72\xe8\x7d\xaa\xdd\x8d\x71\x01\x57\x33\xb0\x51\ \xd4\xd5\x91\x6a\xaf\xfe\x99\x87\x2c\x2d\x3c\x84\x7e\x1c\xbb\xfd\ \x28\xfc\x3e\x1d\x85\xda\x10\xcd\xd0\x9c\xc7\xfb\x52\xf1\x58\x92\ \xde\x58\xae\xab\xd7\x99\xaa\xc0\x58\x97\x63\xa2\xea\x4d\x66\xd9\ \x3c\x38\x6c\xd3\x34\xae\x5b\x2e\x51\x1a\x8b\x5b\x99\x27\xfb\x52\ \x25\xc3\xe1\xf1\x6b\x91\xd3\x24\x9f\x0b\x8d\x01\xf7\x15\xcc\xc5\ \x57\x33\x7a\xa4\x39\x98\x74\x1c\x85\x75\xae\x34\xac\xd2\xcd\xc1\ \xcb\x27\x0f\xc7\x94\x9c\x30\x53\xa3\xaf\x51\x5a\x33\x20\x52\x0a\ \x9c\xca\xc2\xe0\xf5\x15\x5f\x8f\xa6\x7c\x3c\x13\x5b\xcd\xaa\x13\ \x6d\xfa\x55\x8e\x03\x1c\xb3\xe1\x4c\x33\x02\xa1\x35\x46\x6d\xed\ \xcc\x51\x3d\xc5\xff\x00\x4e\xe1\x91\xfd\xe9\x97\x92\x0f\xce\xad\ \x11\x52\x02\xaa\x04\x41\x65\x1f\x9d\x41\xda\xba\x66\x46\x50\x45\ \x0b\x0b\xd4\x9a\x83\x52\x09\x5d\x2c\x49\xb5\x47\x6d\xbe\x54\x44\ \x8a\x8b\x83\x52\x71\xd0\x0d\x0b\x13\xb2\x8e\x75\x57\x17\x8d\x77\ \x06\x3d\x90\x1f\x42\xe8\x3e\x7a\xdc\xd3\xf1\x44\xae\x14\xb8\x36\ \x28\x41\x07\x6f\x7a\xcc\x7b\xe6\x37\xde\xf5\x9e\x57\x0c\x11\x48\ \xe5\xb6\x48\xd2\x39\x14\xdd\x4a\x8b\x03\xd8\xd3\x24\x1e\x21\x32\ \x2a\x90\x6f\xe7\x5e\x6a\x69\x17\x14\x78\x9c\x40\xc3\xe1\x52\x6b\ \xa8\x99\x89\x11\xb1\x1b\x0e\xf5\x82\x91\x7b\x5e\xc6\xdd\x6a\xcc\ \x18\x57\x70\x19\xce\x45\x3c\xce\xe6\xa8\x60\x31\xbc\x52\x66\x76\ \x9b\x13\x85\xc8\x8b\xba\x1e\x7c\xaf\x57\xb0\xdc\x4e\x53\x88\x48\ \x31\x30\xc4\xcb\x26\x89\x2a\x8b\x0b\xf7\xa7\x8d\x95\x76\xb4\x70\ \xf8\x36\xb6\x78\x33\x30\x16\xce\xc6\xe7\xe9\x4c\x8d\xb2\x05\x88\ \x15\x03\x64\x60\xb6\xbf\x63\xde\x80\x99\xd4\x5a\x48\x23\x24\x6e\ \x11\xac\xdf\x4a\x15\x9b\x0f\x22\xb2\x34\x99\x3a\xac\x9a\x11\x5d\ \x3a\x64\xc6\x24\x9d\x77\xef\x40\xc6\xe7\xd8\xeb\x4a\x93\x17\x1a\ \x49\x91\x88\x91\x46\xce\xa7\x5f\x9d\x13\x9d\x99\x4e\x65\x61\x71\ \xde\x8d\x38\x96\x6a\x02\xd5\x04\xdf\x9d\xbb\x50\xb9\xb7\x3b\x50\ \x5c\xcd\x50\x6a\x2e\x2f\xa0\xbf\xb5\x46\x60\x76\xbe\xb4\x24\xeb\ \x7a\x82\x58\x5b\x4b\x51\xc8\x22\x8d\x7e\xf1\x82\x9e\x97\xb9\xa8\ \xc3\x78\x53\x12\x15\xce\x6e\x4a\x74\xbd\x48\x71\x5b\x2e\x9b\xf3\ \xa3\x03\x5a\x0f\x0b\x5d\xed\xef\x46\xa2\xca\x05\xef\x4a\x1a\xd3\ \x12\x82\x31\x4c\x02\xd5\xa8\xc8\xd2\x98\xf1\xac\xcb\x95\xf4\x3c\ \x9b\xa5\x29\x69\xe9\xbd\x69\x33\xe6\x8d\xe2\x72\x8e\x35\x1f\x9d\ \x08\xad\x39\x23\x59\x93\x23\xef\xf0\xb7\x4a\xce\x91\x19\x24\x28\ \xc0\x82\x0d\x62\xcc\x32\xe9\xae\xb9\x4f\x87\xbd\x8e\xa4\x9d\xcf\ \x33\x5c\x05\x1c\xdf\xe7\x37\xb9\xb5\x0d\xe9\x02\x53\x70\x15\xaf\ \x61\xb7\x51\xdc\x53\x16\xec\x72\x9f\x58\x17\xb0\xd9\x87\x51\xfc\ \x52\x81\xa9\x92\xed\x87\x70\x2f\x75\x19\x92\xdb\x83\x4c\x47\x29\ \x37\x16\xde\xb5\x0c\xf1\x05\x52\xee\x01\x20\x68\x35\xaf\x3f\x06\ \x2b\x17\x31\x11\xa1\x05\x8f\xc5\x6d\x7e\xb5\xbd\x87\x89\x61\x85\ \x50\x85\x66\xb0\xcc\x6d\x7a\xd7\x1b\xa2\x9a\x45\x8e\x86\xa4\x5c\ \xd2\xd4\xaa\x7d\xd9\xd1\x6f\xe4\x27\x6f\x6a\x60\x16\xde\xb6\x04\ \x2a\x31\x04\x58\x44\x0d\x8b\xee\x7a\x0a\x0c\x54\xf1\xe1\x94\x67\ \xbb\x3b\x0b\xac\x60\x6a\x47\x5e\xd5\x9d\x36\x26\x69\x59\x89\x01\ \x2e\x2c\x15\x4d\xc9\xf7\xaa\xf2\x90\x48\x77\x10\x99\xb1\x58\x85\ \x82\x1b\x95\x1a\x0e\xe6\x9b\x0c\x71\xe1\x90\xc6\x08\xb9\x1e\x66\ \xeb\x4b\xc1\xc0\x62\x87\x3b\x2b\x09\x1f\x6e\xc2\x98\xca\xbb\x9d\ \x7d\xe8\xff\x00\xa5\x4b\x8a\x80\x31\x02\x40\x2c\x24\x17\xf9\xf3\ \xaa\x97\xd6\xb4\x31\xe9\x9f\x0d\xa0\xd6\x33\x7f\x95\x67\x1d\xeb\ \x1c\xbd\x31\xa6\x5b\x32\x2b\x8f\x89\x45\x2c\x92\xca\x6d\xa5\xff\ \x00\x3a\x5e\x0d\xf3\x41\x97\x9a\x7e\x94\x43\xa0\x36\xa8\x16\x49\ \x36\xb8\xd3\xad\x14\x7a\x4a\xa7\xa1\xa2\x2b\xe4\xca\x35\xcd\xce\ \xb8\x47\x76\x00\x54\x75\x8f\xc4\x6e\xb8\xa6\x70\x80\x17\x21\x9b\ \xb9\x06\xa8\xe2\x23\x9d\x65\xf1\xf0\xec\xc7\x5b\x94\xbd\xed\xf2\ \xad\x4e\x2d\x22\xc9\x8a\x7c\xa3\xc9\x1a\xe4\xbd\xb7\x6e\x75\x44\ \xe6\x04\x10\x6c\x6f\xbd\x72\xe5\x3b\x6e\x22\x71\x63\x72\x02\x92\ \xb7\x20\x72\x34\xce\x16\x10\xe3\x61\x32\x80\xc9\x9b\x51\x4b\x75\ \xcf\xb9\xf9\xd0\x46\x5a\x39\x01\x53\xa8\x34\x79\x53\xd1\x4a\x49\ \x94\x8e\x9a\x1d\x2d\x51\x63\x41\x81\xc4\x2e\x2e\x30\x09\x02\x65\ \x1a\x8b\x7a\xbb\xd3\xc2\x9b\x5f\x61\xde\xbb\x30\x55\xad\xca\x89\ \x41\x27\x4a\x87\x96\x04\xde\x4c\xc7\xa2\x8b\xd5\x79\xb1\x2e\xc3\ \x2c\x63\x20\xeb\xce\x8d\x5d\xac\xcb\x24\x71\x03\x9d\x81\x6f\xc2\ \x37\xaa\x38\xdc\x43\x34\x2d\x29\x4c\xd9\x48\x01\x6f\xa0\x14\x36\ \x24\xde\x89\x55\x4a\x95\x7f\x4b\x0b\x1a\x2d\xb4\xe4\x84\x47\x39\ \x91\x6e\x30\x8f\x6e\x45\x4d\xe9\x18\x99\x64\x98\x18\xa3\x85\x94\ \x73\x16\xb9\xad\x08\xd4\xa4\x69\x11\x36\x2a\x2c\xa4\x1d\x1b\xfb\ \xd4\xb1\x6b\xdc\x92\x1b\x6b\xf3\xac\xe6\xc3\xaa\xb6\x26\x24\x2e\ \x2c\xc5\x7c\xc2\xd5\xd1\xa3\x19\x02\xa0\x27\x31\xb5\xa9\xae\x09\ \x37\x26\x9f\x80\x0a\xaa\x64\xb7\x9a\xf6\x14\xc8\x8a\xe2\x31\x24\ \x18\x35\xcd\xe6\x7f\x13\x4b\x8d\x2f\x6a\xa9\x81\x91\xd7\x88\x46\ \xd9\x89\x25\xad\xa9\xab\xdc\x6e\xc7\x07\x10\x36\xf5\x1a\xad\xc1\ \xe2\x0f\x8a\xf1\x18\x79\x62\x19\xbe\x7c\xa8\xbf\xec\xa7\x8b\xd2\ \x8c\xb2\x30\x1b\x03\x42\x68\x98\xdd\x89\x3c\xe8\x6b\xa0\x41\xa1\ \x22\x8c\xd4\x11\x59\x40\xcb\xda\xba\xdd\xa8\xab\x8e\xd5\x24\x04\ \x8e\x55\xf0\xa4\x24\x03\xcc\x72\xd2\xb3\x71\x11\x15\x95\xa3\x60\ \x04\xa9\xb8\xe4\xc3\xa8\xad\x2a\xab\xc4\xcf\xdf\xea\xc4\x1d\x19\ \x1b\xa7\x6f\x6a\xcf\x29\xd1\x8c\xf2\x29\x7c\x62\x31\x2f\x08\x12\ \x58\xe6\x81\xec\x35\xe4\x6a\xd4\xaa\xa4\x16\x5d\x34\xb9\x43\xb8\ \xfe\x47\x71\x4a\xc5\xdb\xff\x00\x47\xc4\xdc\x1b\x1c\xb6\xb8\xef\ \x5c\xec\xe8\xb3\xb8\x3b\x5e\x39\xe3\xfe\x90\xdf\x4a\xb2\x8c\xa5\ \x32\x48\x09\x5b\xdc\x58\xd8\x83\xd4\x56\x7e\x12\x53\x06\x21\x64\ \x1b\x0d\xfb\x8a\xd0\x9d\x02\xbf\x94\xf9\x48\xba\x9e\xd5\x89\x7a\ \x6a\xb4\xe3\xc7\x4c\x70\xba\xb2\xbb\x47\x6b\x31\x1e\xa5\xeb\xd8\ \xd5\x59\x1c\xc9\x31\x77\xe6\x6e\x6d\x4e\xe0\x20\x3a\x4e\x8e\x33\ \x28\x50\x6d\x56\xc4\x38\x61\xa8\x83\x5e\xec\x48\xae\xb3\x6c\xd6\ \x4a\x9a\x2c\x33\xe1\xcb\x40\x09\x60\x34\x02\xe4\xfc\xc5\x27\x0d\ \x8a\x68\x87\x87\x22\x66\x5e\x9b\x11\x57\x73\x90\x00\x5f\x28\x1b\ \x05\xd0\x0a\x09\x95\x66\x89\xfc\x45\x04\xaa\x92\x18\x0d\x69\xb3\ \xf8\x80\xb8\x8c\x33\x9d\x59\x90\xf5\x23\xf8\xae\x02\x37\x92\xd1\ \xb7\x88\x6d\x7d\x36\x1e\xe4\xd5\x48\xb0\xd3\x49\x1e\x74\x8c\x95\ \xeb\x57\x30\x51\x34\x38\x76\x0e\xb6\x77\x23\x9e\xb6\xa2\x5b\x7d\ \x54\x72\x00\xab\x72\x83\x2f\x36\x46\xbd\xbd\xc5\xab\x92\x10\x40\ \x28\x33\x03\xb1\x06\xf7\xa3\x8c\x95\x37\x06\xb9\xa2\x85\xbe\x12\ \x87\xf1\x21\xb5\x6f\x02\xb6\x32\x0f\x1b\x1a\xa9\x18\xf3\x10\x33\ \xdb\x61\x56\x06\x1a\x0b\x04\x55\x0a\x57\xd3\x27\x3b\xd3\x22\x48\ \xe2\x8f\x24\x40\xd8\xfa\x98\xee\xd4\x56\xaa\x45\xa8\x61\x71\x98\ \x80\x1a\xf9\x5c\x03\xb1\xa5\xa6\x6c\xf6\xb0\xbf\x7a\xb1\xb8\xcc\ \x6e\x54\x8b\x35\xb5\xb5\xb6\x3f\x4b\x83\x5c\x22\xb9\x00\x26\x6b\ \xec\x46\xb7\xfa\x53\x80\x2a\xa7\xf1\x0f\xa5\x15\xb5\xb5\x19\x8e\ \x45\x5b\xb2\xb0\x1f\xd4\xbf\xbd\x42\x03\x7b\x90\x05\xb6\xad\x27\ \x20\xa6\xa0\xa8\x51\x46\x2a\x16\x8d\x57\x4a\x4f\x10\x8e\xea\xb3\ \x00\x09\x0a\x46\xbc\xcf\x2f\xd6\x9e\x9b\x0a\xec\x55\x86\x02\x52\ \x76\x16\xf9\x6b\x50\x8c\xcc\x44\x8d\x98\xe4\x5b\xd8\x74\xd8\x54\ \x07\xba\x86\x1c\xe8\x1c\xb2\x5c\xdb\x51\xb8\x35\x03\x45\x03\xe7\ \x58\xd6\xf0\xd5\x6a\x34\x62\x0d\xc1\xd6\x90\x0d\x1a\xb6\xb5\x6a\ \xc5\xcc\x10\xf1\x27\x55\xb0\x00\x9b\xb5\x85\x69\x06\xb9\xbd\x53\ \xc0\xc7\xe1\x45\x99\xbd\x6e\x3e\x82\xac\x29\xae\x93\xa8\xcd\x3d\ \x4e\x96\x3a\x83\xc8\xd2\xf1\x52\xb6\x16\x0c\xf1\xc8\x00\x26\xca\ \xac\x2f\x63\x52\xa6\xa9\xf1\x32\xd3\x71\x05\x81\x6e\x42\xd9\x40\ \xef\xce\xb5\x6f\x41\xd8\x3c\x3c\x98\x96\x32\x3b\xb6\x52\x7c\xce\ \xdb\xb1\xab\xf0\xc7\x0c\x2b\x68\xd0\x7f\xa8\xee\x6b\x88\x54\x02\ \x34\x16\x55\xd0\x5a\xa2\xe6\xa9\x31\x22\x46\xcb\xa1\xbd\xb9\x1a\ \x02\x74\xa9\x90\xe9\x40\x08\xd8\xde\xfb\x55\x52\x01\xf3\x6a\x2e\ \x0e\xe2\xb3\x71\x91\x18\xa6\x2a\x76\xdc\x1e\xa2\xb4\x89\xd7\x63\ \x49\xc5\xc4\x26\x87\x2f\xc6\xba\xaf\x7e\xd5\x9b\x34\xc6\x7c\x32\ \x98\xa5\x0e\x35\x1b\x11\xd6\xae\xdd\x4a\x86\x53\x75\x3b\x56\x71\ \xd0\xdb\xa5\x1e\x12\x73\x11\xca\xd7\x28\x77\x1d\x2b\x12\x9b\x17\ \xc6\xa2\xa5\xe5\xf0\x20\x79\x88\xcd\x94\x69\xf3\xa1\x5b\x10\x1d\ \x4d\xd4\xd2\xe7\x99\xfc\x76\xc2\xb2\xab\x2b\xec\x6d\xaf\x6a\xd0\ \x8c\xb9\x41\x22\xda\x79\x18\x83\xae\xf7\xd4\x1f\xce\x94\xa3\x3b\ \x65\x22\xc0\x9d\x7b\x55\x8c\x4c\x18\x88\x03\x09\xf5\x77\x6c\xd7\ \x1b\x6d\xa5\x20\xdc\x6a\x2d\x5c\xab\x6d\x75\xe1\xd8\x45\xb4\x6d\ \x03\x35\xc7\xac\x36\xf5\x9d\xc5\xf0\x70\xe0\x98\x66\x72\x43\x6a\ \xa2\xda\xfc\xe8\xb0\xf8\x9c\x42\x59\x44\xec\x14\x6b\x60\x6b\x37\ \x13\x3c\xb3\xc9\x9a\x59\x19\xcd\xf9\xd3\xcb\x94\xcf\x04\x94\xc8\ \x31\xd2\xc2\xe1\xa1\x0a\xb6\xfe\x9b\x9a\xd4\x79\x8e\x22\x24\x9e\ \xe4\x86\x1a\x8b\xec\x79\xd6\x22\x29\x76\x0a\xa2\xe4\xec\x05\x6d\ \x61\x22\x68\x70\x29\x13\xfa\xae\x49\x1d\x2f\xca\x8e\x16\xd3\x62\ \x10\x86\x17\x15\x36\x14\x4a\x8a\xa6\xe0\x57\x11\x5b\x64\x26\xf5\ \xd5\x35\xd6\xa9\x39\x4e\x99\x48\x0c\xa7\x91\x1b\xd1\x7c\x36\xb9\ \x60\x36\x3f\x10\xf7\xeb\xef\x43\x6a\xed\x8d\x48\x2e\xba\x66\x04\ \x10\x76\x20\xdc\x1a\xb1\x82\x17\xc3\x9e\xaa\xd4\xab\x82\x6e\x49\ \x04\xee\x47\x3f\x71\xb1\xa6\xe0\x0d\xa7\x31\xb6\x50\x59\x74\xe8\ \xdd\xc5\x53\xd5\x7c\x27\x8e\x1f\xf8\x58\x56\xda\x96\x26\xbb\x85\ \x47\x93\x04\xd2\x5f\x59\x1a\xdf\x4a\x57\x18\x94\x4d\x89\x58\xa3\ \x20\xaa\x0b\x0f\x7a\xbc\x23\xf0\xa1\x48\x41\x07\x22\xd8\xfb\xd5\ \x3f\xdb\x57\xc2\xce\xf5\x07\x6a\x93\x73\x7d\x28\x4e\xf4\xd4\xeb\ \x9a\xed\xeb\xaa\x39\x50\x9c\x4d\x09\x35\x26\x84\xd4\x90\x5b\xa5\ \x56\xe2\xba\xf8\x6d\xd5\x48\xab\x06\x91\xc5\x01\xf0\x22\x16\x3a\ \xdc\xd6\x6f\x85\x55\x1b\x41\x1b\x6c\x0d\xc1\xe6\x3b\x8a\x2c\x52\ \x99\x70\x18\x88\x55\x7e\xf1\x6d\x70\x36\x24\x6b\xa7\xb8\xa4\xb0\ \x24\xe5\xda\xd4\xd4\x6b\x62\x1a\x3b\xe5\x91\x95\x5d\x0f\xca\xd6\ \xac\x42\xc0\x65\x60\xcd\x71\x6d\x76\x3b\xd6\x86\x05\xbc\x5c\x0d\ \x89\xf3\x42\x6d\xff\x00\x49\xab\xf3\x47\x06\x20\x9f\xb4\xc1\x67\ \xe6\xe9\xa1\xfa\x50\x61\xb8\x77\x85\x24\x86\x09\x44\xa8\xe8\x46\ \x5d\x9a\xfc\xb4\xac\xce\x16\x53\xa7\x70\x01\xac\xe7\x96\x4f\xde\ \xae\x1d\xa9\x5c\x26\x16\x8b\x0b\x23\x3a\x95\x32\x10\xa0\x11\x6d\ \xa9\xc4\x76\xae\xb3\xc0\x00\x09\x36\x02\xf4\x38\xb7\x10\xe1\xdf\ \x31\xb3\xb8\xb0\x1c\xed\x5d\x88\x38\x87\xc5\x88\x22\x93\x22\xb2\ \x06\xf6\x16\xa1\x9f\x06\x83\x0e\xef\x79\x0b\x28\xbe\x76\xd8\xf6\ \xab\xff\x00\x01\x18\x2c\x48\x48\xc4\x72\x29\x28\x35\x04\x6e\x2a\ \xca\xcb\x86\x94\x12\x98\x80\x00\x3f\x10\xb5\xeb\x39\x04\x92\x9f\ \x06\x25\x2c\x58\xed\x6a\xb6\x9c\x39\x96\xe0\xcc\x99\xbf\x09\x16\ \xfc\xeb\x32\xdc\x2b\x48\x84\x0c\xc0\x82\xa7\x40\x41\xbd\xe8\xd4\ \x69\x4b\xc2\x44\xd0\x21\x8d\xca\x92\xc7\x37\x94\xdf\x91\xa6\xd6\ \xe0\xa9\x14\x4c\x52\x38\xcc\xb2\xb6\x54\x1c\xed\x72\x7d\xaa\x10\ \x28\x53\x24\x87\x2a\x2f\xa8\xfe\xd5\x99\x8b\x9e\x4c\x5e\x23\x41\ \xa0\x36\x45\x1c\x85\x56\xe0\x5b\x6e\x26\x43\xe5\xc2\xc0\x2f\xc9\ \x9b\xcc\x4f\xca\x8a\x57\xc7\xaa\x91\x24\xb9\x21\x91\x6f\x90\xb8\ \x56\x53\xda\x9f\x84\xc3\x47\x83\x50\x02\x86\x9b\x76\x72\x3d\x3d\ \x85\x76\x35\x4c\xd8\x62\xbe\xa6\x53\x98\x5c\xdf\xde\x9c\xb9\xda\ \x26\x0c\x37\x14\x8c\xf8\x89\x88\x1a\x8f\x4f\x8b\x76\xb7\xb5\x1a\ \x63\xe6\x89\xc4\x78\xc8\x73\x10\x6c\x58\xe8\xc3\xf9\xa6\xc3\x89\ \x56\x44\x56\x8e\x42\xcb\x60\xc5\x75\xfc\xaa\xc3\x2c\x73\xc6\x52\ \x4b\x4a\x9f\x46\x5a\x64\xfe\x55\xbf\xd4\xc2\x63\x9d\x73\x41\x20\ \x71\xd0\xe8\x47\xca\xa4\x82\xa6\xc4\x5b\xde\xa9\x62\x78\x6c\x89\ \xf7\x98\x66\x2e\xa0\x7b\x30\xae\x83\x88\x4b\x1d\x93\x10\x9e\x22\ \x8e\xba\x30\xf9\xd5\xbf\xd1\x9f\xc5\xe5\x26\x97\xc4\xcf\xfc\x1a\ \xc2\x0f\x9a\x76\x20\xff\x00\xa7\x99\xa6\x46\xd1\xcd\x1e\x78\x5b\ \x30\x03\x51\xcd\x6a\xb7\x13\x90\x7d\xa5\x23\x3b\x04\x28\x18\xf2\ \x6b\xde\xd4\xdf\x14\xf5\x51\x81\x92\x14\x63\x60\x59\x75\xb7\x22\ \x34\xa5\xc4\xc4\xa5\xb2\x93\x97\x4d\x28\xf1\x09\x96\x49\x63\x24\ \x8b\x36\x70\x0e\xe0\x1f\xef\x53\x83\x86\x59\x17\xd2\x04\x77\xf5\ \x1a\xe7\xf5\xa4\x00\x4f\x23\xfa\xd5\xdc\x16\x16\xd6\x92\x51\x71\ \xb8\x5e\xbe\xf4\xdc\x2c\x70\x44\x40\x52\xa2\x53\x7b\x16\x3a\xff\ \x00\x6a\x64\x88\x54\x16\x98\x65\x03\x76\x23\x5a\xdc\xe2\x2d\x33\ \x52\x46\xd7\x3b\x0a\xec\xc0\x10\x0d\x66\xcf\x36\x69\xfc\x41\x7c\ \xab\x6c\xa7\xb7\x7a\xd1\x23\xc4\x54\x90\x69\x9d\x73\x53\x28\xc3\ \x90\xf4\x35\x4e\x56\xf0\xf8\xe1\x3c\x84\xb5\x66\x25\xd4\x29\x27\ \x53\xb5\x66\x62\x8e\x6e\x2e\xcd\x60\x4f\x8a\x36\xe7\xad\x36\xf4\ \xa3\x66\x4d\x24\x60\x39\x1a\x8b\xe9\x43\x35\x8c\xcf\xa0\xdc\xf2\ \xa8\x0c\x47\x7f\x9d\x6b\x42\x0b\x5c\x91\x44\xbc\xe8\x52\xc4\x74\ \x23\xad\x70\x37\xed\x6d\xe8\x48\x7e\x7d\x28\x2f\xa5\xea\x64\x36\ \x5d\x4d\x46\xf4\x54\xa9\xc4\x60\xce\xa6\x64\x1a\x8f\x58\x1f\xad\ \x51\xb0\xad\x70\x1b\x3d\xd4\x12\x7b\x55\x7c\x56\x0f\x31\xbc\x6b\ \x91\xb9\xa9\xe7\xed\x59\xb3\xeb\x52\xaa\x61\xe5\x78\x49\xca\x6e\ \x0e\xe0\xec\x6a\xdc\x13\x47\x26\x24\x16\x21\x18\xc7\xe5\xbe\xdb\ \xf5\xaa\x45\x48\x36\x3b\xd4\xb0\x6f\x23\x80\x4e\x4b\x86\x03\x7b\ \x1a\x25\xa6\xb4\x58\x39\x1e\x19\x4c\xea\x77\x04\x5c\x52\xfe\xc3\ \x85\x63\x7f\xb2\xb0\x3c\xf2\x35\x87\xd2\xa8\xea\x23\x0f\x1c\xbe\ \x5e\xa0\xfe\xa2\xa0\x4f\x23\xe8\x5d\xaf\xef\x57\xea\x7d\x18\x6e\ \x22\x0c\x34\x2e\x55\x73\x3d\xc5\x8f\x9b\x6a\x54\x71\xe1\xd1\xc1\ \x8f\x0a\xa0\xff\x00\x56\xb5\xc0\x51\xa8\xd2\x82\x2c\xc4\x9d\x95\ \x40\xfc\x20\x54\x85\x5b\xfa\x45\x08\xa9\xbd\x20\x56\xf7\xfa\xd4\ \x1f\x7a\x8b\xd7\x6a\x6a\x4e\x3b\xee\x3e\x95\xd6\x3d\x45\x4d\xab\ \xaa\x48\x1b\xdb\x63\x5c\x74\xa9\xde\xba\xc7\xb1\xa9\x20\x94\x48\ \x8c\xb2\xb6\x54\x1c\xfa\xd5\x29\xf8\x89\x91\xbc\x28\x07\x86\x3e\ \x16\x27\x5b\xf7\xae\xe3\xce\xde\x2c\x71\x0d\x15\x50\x1b\x77\x34\ \xee\x19\x86\x8e\x2c\x32\xe2\x24\x50\x59\x86\x60\x4f\xc0\xbd\x7d\ \xeb\x3b\x6d\xc8\x73\xad\x3b\x04\xb0\x9c\x42\xe2\x66\x5f\x0f\x38\ \xcc\xaa\xdb\x5e\xad\xcb\x7c\xc6\xfb\xd2\xf0\x91\xc6\xf0\x09\x64\ \x19\x9f\x31\x39\x49\xd1\x6f\xa8\xa6\x4a\xda\x92\x6b\x70\x7d\x2f\ \xe1\x14\x24\x54\xee\x2f\xb0\xae\x53\x7d\x41\x20\x76\xa5\x04\x8e\ \xd4\x07\xc4\xbe\xc2\xdd\xa8\xc9\x39\xf2\xef\x50\xc6\xc4\x0e\xb4\ \x20\x9a\x13\x46\x68\x1b\x40\x4f\x4a\x10\x4e\xa6\xf5\x53\x8a\x13\ \x26\x24\x22\x7c\x20\x00\x07\x33\x57\xa1\x1e\x23\x6a\x3c\xab\xa9\ \x17\xde\xa8\x46\xc1\xb1\x99\xdb\x7b\x97\xfa\x6b\x59\xe4\xd4\x2a\ \x00\x7c\x67\x48\x99\x57\xc2\xb6\x79\x48\xbe\xbd\x05\x0e\x23\x06\ \x26\x97\xc4\x8f\x16\xc5\xfa\xca\x2c\x4f\xcc\x69\x4f\x2b\xe1\x40\ \xa9\x6b\x34\x87\xc4\x93\xdc\xf2\xa8\x55\xbe\xf5\x9c\xeb\xb4\x98\ \xe3\x9f\xc1\x3f\x68\x42\x19\x3d\x2e\x35\x0c\x2a\xc7\x0b\x4f\xf3\ \x24\x3f\x08\xb0\x3d\xea\xae\xe0\xe5\x1b\x75\x35\xa3\xc3\x93\xfe\ \x04\x58\x80\x59\x89\x60\xcc\x05\xad\xa5\x6a\x0a\x8c\x6e\x21\x20\ \x11\x19\x95\x9f\xc4\x04\xe6\xcd\xa8\xd6\xd4\x50\xaa\x4e\xb9\xb0\ \xce\x24\xed\xb3\x0f\x95\x27\x8b\x64\x64\x80\x85\x0f\x95\x4f\x99\ \x9b\x2a\x03\x7f\xce\xa9\x78\xe1\x08\xfb\xc7\x62\x0e\x9e\x19\xc8\ \xa3\xdb\xad\x57\x96\x5e\xd6\x74\x6f\x13\x90\x8c\x68\x31\xbd\x8a\ \x28\x17\x1d\x45\x36\x18\x04\x98\x70\xf8\x89\x24\xcd\x26\xa3\x5d\ \x87\xb5\x57\x82\x07\xc6\x67\x95\x0a\xa9\x07\xcc\x09\xb7\xce\xb4\ \x25\x3e\x7d\x35\xb0\x00\x77\xa2\x77\xda\x56\xc0\xe1\xcc\x12\x34\ \x99\xd7\x2e\x56\x02\xc7\x52\x4d\x34\x0f\x95\x48\x50\xa2\xc3\xf3\ \xa1\x93\x53\x6e\x94\xe6\x21\x8b\x16\xd3\x97\x3a\x62\x85\x08\x5e\ \x46\xca\x8b\xbb\x54\x44\xaa\x22\xcf\x21\xca\x8a\x35\x35\x43\x15\ \x34\xb8\xe9\x84\x50\xa1\xc8\x0d\x95\x47\xea\x69\xb7\x10\x71\xd8\ \x97\xc5\x4a\x23\x8d\x48\x8c\x1b\x22\x0e\x7d\xeb\x43\x87\xe1\x57\ \x06\xa1\x9e\xc6\x73\xff\x00\xd3\xfb\xd1\x61\x30\xf1\xe0\xd0\x65\ \x0a\xf3\x73\x7f\xc3\xd8\x53\x54\x5c\xdc\xd3\x38\xfd\xa3\x5c\x54\ \xb0\xef\xde\xa7\x0c\x72\xb9\x16\xbe\x61\x6a\x34\x5a\x60\x5c\xdf\ \xcd\x68\x6b\xa2\x51\x1d\xfc\x24\x09\x7d\xed\xbd\x0e\x25\x0a\xa3\ \x4e\xac\x55\x97\x9f\x5e\xd4\xe8\xc1\x2a\x6f\xb8\x36\x35\x18\x98\ \xcc\xb6\x86\xf6\x55\x37\x76\xfd\xaa\xc4\x4e\x0f\x16\x24\x60\xae\ \xb6\x63\xa0\x75\xda\x9b\x8a\x82\x2c\x52\xda\x51\x67\xd6\xce\x34\ \xd7\xbd\x28\x60\xa3\x59\x96\x45\x9a\xca\x1a\xe4\x15\xd4\xd5\x96\ \x39\x98\x9b\x6e\x6f\x54\xdc\xed\x7f\xe3\x28\x24\xfc\x36\x76\x95\ \x80\x20\x21\x3d\x43\x0a\x87\x03\x11\x11\x64\x24\xa4\xea\x4a\xf6\ \x3d\x3d\xeb\x47\x89\x46\xb3\x70\xf3\x03\xb1\x1e\x23\x59\x48\xe5\ \xfd\xab\x0b\x86\xca\xd8\x4c\x63\x61\xa5\xd1\x59\xac\x6f\xf0\x91\ \xb1\xac\x5e\xae\x19\xda\xc7\x09\x55\x9e\x73\x1c\xce\x49\x78\xd4\ \xa9\x36\xb1\xb0\x1e\x5b\xf5\xb8\x3f\xec\x56\x8a\x07\x13\x08\x94\ \x05\x7c\xb7\xb7\xe0\x15\x93\x82\x85\x5e\x18\x62\x11\x96\x77\xb3\ \x02\xbb\x8d\x6b\x68\x44\x90\xca\xcc\xac\x59\x88\xb1\xd0\x00\x4f\ \x33\x4f\x1f\x15\x23\x11\x83\x52\xb7\x80\x5c\x8d\xc1\x1a\x9e\xe2\ \xaa\x9f\x14\xb0\x46\x2e\xdc\xac\x4e\xbf\x4a\xd1\x04\x8a\x89\x50\ \x4c\xca\xf9\x8a\x48\x9b\x35\xaf\x7a\x6c\x12\xa9\x34\x6d\x1d\xbc\ \x45\x2b\x7f\xc5\xa5\x68\x70\xe9\x56\x4c\x3a\x44\x74\x74\x04\x2d\ \xf9\x8a\x5e\x26\x19\xe6\x20\x2f\x85\x65\xd7\x43\x6b\x9e\xba\xd2\ \xf0\x0a\xc9\x8f\x8d\x58\x10\x43\x73\xa6\x75\x53\x46\x1f\xf3\x54\ \x9d\x81\xbf\xd2\xb1\x61\x19\xf1\xe0\xa9\xd1\xa5\xba\xdf\x90\xbd\ \x6c\xc2\x7e\xf5\x7d\xed\x58\xa2\xe9\x8e\x00\x5b\xcb\x26\x97\x36\ \xb6\xb5\x72\xf8\xa3\x66\x7d\x66\x6f\xf5\x1a\x85\x15\x33\x5f\xc5\ \x7d\x47\xa8\xf2\xef\x43\xaf\x61\xf9\xd6\x80\xd4\x29\x2c\x58\x79\ \x46\xa7\xe4\x2b\x29\xb8\x96\x20\x4c\xe2\x30\x42\x83\xa0\xab\x9c\ \x4d\xcc\x7c\x38\xda\xf7\x76\x00\xd6\x41\x3a\xdf\xeb\x58\xe5\x73\ \xc6\xa4\x5f\x87\x88\x2c\x8d\x7c\x4c\x36\xe4\x0a\xff\x00\x15\x2f\ \xc4\xa0\x53\x95\x61\x76\x3f\xd4\x6c\x2b\x38\x11\xf8\x87\xd6\xb8\ \xe6\x3b\x58\x0e\x57\xa3\xf5\x4e\x43\xf1\x38\xcc\x44\xd7\x19\xb2\ \x2f\x45\xd2\x82\x1c\x6e\x2a\x11\x65\x94\x95\xfc\x2d\xa8\xa0\xe5\ \xb8\xbf\xb5\x5f\xc0\xe1\xa2\x38\x41\x23\xc6\x24\x67\x26\xdd\xa8\ \x9b\x6a\xb9\x0b\x18\xcc\x36\x20\x85\x99\x7c\x37\xfc\x43\x6a\x39\ \x30\x6e\x14\x34\x6c\x24\x07\xf0\x9d\x68\xce\x03\x0d\x20\xb9\x56\ \x8c\xff\x00\x4e\xb4\xb5\xc0\xe2\xf0\xe7\x3e\x12\x51\x27\x60\x6c\ \x7e\x9c\xeb\x5d\xfd\x1d\x2b\x4f\x01\x2d\x9d\x33\x2c\xab\xea\x1b\ \x67\x14\xa5\x4c\xc7\x32\x03\x6b\xfd\x3d\xea\xf2\xe3\xca\x9c\x98\ \xbc\x31\xb8\x3b\x81\x63\x53\x2b\x60\xe6\x91\x1e\x19\x32\x3b\x1c\ \xad\x71\x6c\xda\x6d\x46\x45\xb5\x5d\x52\xdc\xc9\xf7\x34\x40\x5a\ \x9c\xf8\x59\x46\xa9\x67\x07\x9a\x9a\x53\xab\x21\xb3\x29\x1e\xf5\ \x62\x45\x75\x45\xeb\xaa\x4e\x22\xe6\xa4\x57\x0a\x9a\x92\x40\xae\ \xae\xae\xa5\x3a\xdd\xab\xad\xad\x4d\x75\xaa\xc4\xa7\xc7\x63\xce\ \xb1\x4e\xa2\xc4\xae\x46\x37\xe6\x36\xd3\xfd\xef\x4d\xc1\xb1\x97\ \x0e\x80\x90\x52\x15\xd1\x6d\xcc\x31\x02\xff\x00\x91\xa7\x49\x1f\ \x8f\x87\x93\x0f\xcd\x85\xd7\xdc\x55\x6e\x1e\xcc\x85\xe0\x73\x6c\ \xe8\x96\x1c\xb3\x6a\x7e\x5a\x00\x2b\x39\xda\xf8\xbd\xc3\xc9\x2b\ \x2a\x12\x2f\xa3\x0b\xf3\xa2\x90\x5c\x58\xfe\x54\x8e\x1c\xc0\x63\ \x2c\x7e\x20\x54\x55\x87\xb1\xad\x4f\x05\xf5\x5d\x94\x96\xcb\x5c\ \x17\x21\x1a\xe8\x69\x84\x73\x1b\xfe\xb5\x04\xa8\x4c\xee\xe1\x54\ \x73\x35\x12\xda\xec\xd7\x5e\x5b\x9a\x9c\xba\xdc\xb5\xcd\x4c\x6f\ \x0c\xa4\x84\x97\x6e\x45\x6d\x45\x94\x13\x65\x74\x24\x6e\x2f\x6f\ \xd6\xa4\x59\x15\xd9\x46\x52\x58\x85\x51\xb9\x3b\x53\x0c\x4d\xb8\ \x1a\x75\xbe\x9f\x5a\x8b\x2b\x1b\xe8\xc2\x2d\x06\xb7\x05\x8d\x58\ \x95\xe4\x56\x4c\x24\x8c\x8c\xb6\x60\x00\x21\xc0\x1a\xf3\xfc\xaa\ \x9c\x30\x9c\x99\x94\x11\x9b\x43\x2b\x68\x00\xe7\x6e\xb5\x7f\x1f\ \xe4\x81\x5d\x15\x43\x33\x58\xf9\x46\xba\x55\x2b\x97\x62\x59\x8b\ \x1e\x75\x8e\x53\xb3\x13\x29\x0f\x29\x61\xb6\xc2\x84\x81\x6d\x6a\ \x76\xae\x35\x92\x18\x90\x34\x81\x54\x1b\x13\xa8\xbe\xf4\xec\x04\ \x0a\xd2\x33\x38\xba\xc5\xa1\x1d\x5b\xff\x00\x34\xdc\x36\x1c\xa6\ \x11\xe7\x26\xcd\x94\x95\x16\xe5\x56\x32\x2c\x68\xb1\xa0\xd2\xc0\ \x93\xd4\x91\x5b\x9c\x46\x93\xc4\xd0\xe2\x38\x79\x03\x78\x9b\x30\ \x00\x72\xac\x60\x3a\x0a\xf4\x11\xb1\x57\xb8\x17\xb6\xe3\xf6\x35\ \x9b\xc5\xb0\x9e\x0c\xbe\x2a\x29\x31\xbe\xa0\x9e\x47\xa5\x1c\xf8\ \xfd\x52\x87\x82\x39\x18\xf5\x8c\x1b\x2c\xbe\x53\xde\xae\x85\x02\ \x52\x3a\x0e\x75\x9b\xc3\xe3\x69\x31\xf1\x22\x9b\x12\xe3\x5a\xd8\ \x97\x2b\x48\xc5\x45\x81\x26\xd5\x70\x9d\x2a\x55\xaa\x5a\x35\xf0\ \xcc\x8d\xe5\x55\xdc\xd1\x48\xd1\x41\x18\x92\x72\x40\x3e\x95\x1b\ \xb5\x51\x69\x26\xe2\x38\x85\x88\x2d\x90\x1d\x15\x74\x0a\x29\xb4\ \x47\x4c\xd3\xf1\x0c\x42\xc3\x12\x15\x8c\x6c\x39\x7b\x9a\xd0\x82\ \x38\xf0\xb0\xf8\x50\x9d\x4f\xad\xc6\xed\xfd\xaa\x62\x54\x81\x0c\ \x30\x8b\x20\xe7\xcd\xbb\x9a\x9b\x53\x26\x76\x82\x06\xb4\xd8\xd7\ \x95\x42\x8b\x53\x10\x56\x85\x12\x8d\x6d\x4c\x41\x50\x83\x4a\x35\ \x14\xc0\x9b\x84\x90\x30\x17\xd2\xe4\x75\xa3\x28\x42\x05\x3a\x93\ \xe6\x63\xd4\x9d\x6b\x94\x03\xa3\x6c\x41\x14\x69\x73\x18\xcf\xeb\ \x5f\x2b\x58\x74\xd8\xfd\x2b\x51\x14\x56\xc0\x9b\x6c\x2a\x02\xe5\ \x50\x29\xd7\x5b\xdb\xf2\xb5\x00\x07\x2e\xa3\x51\x46\x25\x3e\x28\ \x40\x78\xd3\xa2\xdc\xfc\xeb\x23\x8f\xc7\x71\x16\x25\x45\x8b\x79\ \x58\xf7\x15\xaf\xc5\x74\xc4\x8f\xf4\x0f\xd2\xb3\xb8\xbe\x5f\xfd\ \x28\xe6\xdf\xc4\x19\x3d\xf9\xfe\x55\xcf\x9c\xf5\xae\x2d\x3c\x1c\ \x0b\x86\xc3\xa1\x0b\x69\x1d\x05\xcf\xe1\x16\xda\xb8\xdc\x9a\x7e\ \x28\x7d\xe6\x51\xb0\x00\x7d\x00\x14\x83\xa5\x69\x97\x0a\x25\x34\ \x35\x2b\x52\x18\xda\x89\x81\x91\x40\x06\xce\xba\xa3\x5f\x63\x42\ \xb4\x40\xeb\x4c\x43\x0d\x9d\x44\x83\x42\x77\xec\x79\xd6\x6f\x1b\ \x8d\x93\x18\x66\x1b\x4b\xe6\x06\xb4\x09\xca\xcc\xe1\x4b\x2b\x6a\ \xe0\x6e\x0f\x5a\x99\x16\x39\x22\xc9\x20\x12\x46\x76\x20\xed\xed\ \x55\x9b\x0c\xea\xab\x61\xb1\xf0\xc8\x80\x62\x2e\x8e\x05\xb3\x01\ \x7b\xd3\xda\x6c\x28\x5c\xc7\x13\x19\x03\xa6\xff\x00\x4a\xac\xfc\ \x32\x26\x6b\xc7\x88\xca\x3a\x32\x9b\xfe\x54\xa9\xb8\x64\xf1\xdc\ \x96\x8f\x2f\x22\x5a\xd7\xa3\x79\x45\xd0\x78\xa6\x29\x67\xcb\x1c\ \x57\xc8\x97\xd4\xf3\xaa\x95\x63\xec\x73\x88\x4c\x9e\x04\xae\xa3\ \xf0\x2e\x9f\x5a\x42\x14\x75\x25\x43\x02\xbe\xa5\x61\xa8\xac\x5d\ \xfa\xd4\xc7\x0b\xd7\x58\xd4\x8a\x90\x3c\xb7\xa0\x86\xc6\xb5\x78\ \x6d\x9f\x87\x2d\xbe\x06\x20\xfc\xeb\x2f\xe5\x57\xf8\x1c\x83\xc4\ \x78\x0f\xfc\xc0\x32\xfb\xd6\xb8\xfa\x2f\x8b\x56\xae\xb5\x19\x17\ \x14\x24\x6b\x5d\x18\x43\xda\x45\xc9\x2a\x89\x01\xd2\xcc\x2f\x55\ \x8e\x0b\x0e\xf2\xfd\xde\x68\xc2\x12\x49\xbd\xc5\xc8\xb5\xaa\xd1\ \x16\x89\x8e\x6c\xbb\x00\x7d\xcd\xaa\x5d\x42\x9c\x8a\x3c\xab\xa0\ \xa3\x16\xb3\x1f\x0b\x8b\xc1\xfd\xec\x12\xe6\x41\xbd\x8e\xde\xe2\ \xad\x60\x31\x23\x15\xf7\x4e\xa0\x48\x06\x9a\x68\xd5\x65\x09\x56\ \xb8\xff\x00\xcd\x51\xe2\x78\x51\x1f\xfc\x4c\x07\x28\xbf\x99\x7f\ \x09\xa3\x33\xc3\xba\xb0\xf8\x58\xe4\xbe\x51\xe1\xb7\x3e\x9f\xda\ \xa9\xcc\x8b\x13\x65\x92\x44\x53\xca\xe7\x7a\xb5\x83\x91\xf1\x8e\ \xc9\x2c\x8c\x72\x0c\xc5\x41\xb6\x70\x76\x3f\xcf\xb5\x49\xc2\xc6\ \xd8\x93\x11\x04\xc2\x10\x31\x07\x52\x2f\xd2\xac\xdf\x12\x93\x29\ \x53\x63\xf9\x57\x0a\xb1\x8d\x84\xc5\x2f\x55\x61\xe5\xb7\x4a\x4f\ \xb5\x18\x5c\x05\x75\xaa\x46\x82\xa0\x1b\xd2\x93\x50\x6a\x6b\x8e\ \xa2\xa4\x10\x4a\xb0\x61\xb8\x3a\x55\x3e\x34\x1a\x2c\x44\x8e\x9e\ \x51\x94\x49\x19\x07\xa6\x9f\xb8\xab\x6d\x53\x2c\x51\x62\x03\x44\ \xe3\xcc\x51\x42\xb5\xbd\x37\xfe\xe0\x56\x6c\xde\x90\x38\x64\x8b\ \x89\x9a\x29\xd2\xd9\x81\xb4\x8a\x39\x1e\xb5\x64\xd7\x9e\xc1\xb4\ \xf8\x4e\x26\xa2\x13\x66\x12\x65\x3a\xdb\x4a\xf4\x12\x32\xb4\xbe\ \x22\xb7\x92\x41\x99\x7d\xaa\xe1\x76\x1a\x9b\xd2\x38\x92\x5f\x07\ \x98\x35\xad\x25\xed\xd7\x4a\x2b\xf9\xf3\x0d\x40\xa6\xe4\xf1\x3c\ \x10\xc3\xca\x25\x24\xdc\x5e\xfa\x53\xe8\x27\x0c\x7c\x18\x11\x14\ \x10\xc4\x5d\x88\xef\x4c\x2c\x58\x11\x20\x0e\x3f\xa8\x5e\x80\x7f\ \x9b\xf3\xe7\x4c\x37\xbd\x51\x06\xd1\x65\xcb\xe0\x47\x6e\x9a\xff\ \x00\x35\x20\x8b\x05\x00\x28\x1b\x28\xda\xa6\xc6\xa4\x0b\xd2\x89\ \xe2\x5a\x60\xd0\x85\xbd\xa4\x3f\xa5\x66\xc6\x72\xb5\xcf\x3d\xeb\ \x57\x1e\x3f\xe1\x93\xff\x00\x90\xfe\x95\x9c\xa8\x19\xcf\x6a\xc7\ \x2f\x4c\x41\xd7\x50\x34\xef\x45\x86\x88\xcb\x88\x58\xee\x06\x63\ \xc8\x5e\x8a\xd5\x6b\x85\xc6\x73\x3b\x80\x6e\x05\x87\xce\x89\x36\ \x9a\x9e\x20\xfe\x1e\x1f\x22\x9d\x24\xd0\x0b\x6b\x94\x54\x60\x09\ \x93\x0c\x55\x8d\xcc\x67\x4b\xf4\xa8\xe2\x65\x4f\x86\x80\xdd\x94\ \x1b\xd8\xde\xd5\x30\xc5\x2e\x12\xd2\xba\x82\x8e\x2c\x40\x35\xaf\ \xac\xfc\x37\x2d\x2f\x89\x18\xd3\x07\xe0\xc8\xda\xca\xea\x6d\xd0\ \x75\xab\x12\xbc\x50\xe1\x8e\x20\xd9\xd7\xe1\x1d\x4d\x63\x62\xa5\ \x79\xe6\x32\x48\x75\x3f\x95\x36\xa8\x4c\x38\xf9\x30\x9c\x5c\x09\ \x11\x04\x71\xb7\xa4\x0d\xbb\xd6\x8c\xdc\x45\x50\x0c\xb8\x54\x37\ \x17\x0d\x98\x91\xee\x2b\x33\x8a\xa7\x89\x83\x49\x88\xbb\x23\x65\ \x27\xb7\x2a\x77\x0e\xe1\xdc\x56\xc1\x51\x13\xc3\xb5\xfe\xf0\xf9\ \x47\xf7\xae\x72\xf2\x97\x23\x5d\x02\x77\x9b\x15\x88\xcc\xe7\x33\ \xb6\x80\x01\xfa\x56\xbe\x12\x0f\xb2\x61\x7c\x2f\xf9\x8f\xac\x9d\ \xbb\x51\xe0\xe0\x4c\x39\x20\x46\x04\xfb\xdc\xdf\x6f\xe9\xa2\xb5\ \xeb\x7c\x78\xe7\x75\x9b\x41\x6b\x58\xd1\x01\x53\x96\xed\x6f\x99\ \xa3\x55\xad\x0d\x42\xad\x35\x56\xb9\x16\x98\x05\x41\xca\x28\xd4\ \x6b\x50\xbb\xda\x88\x9b\x68\xba\xb7\xb6\xd5\xa4\x24\x5a\x6a\x8f\ \x30\xe8\xfe\x53\xd8\x8d\x8f\xed\x49\x89\xb3\x1f\x31\xdb\x96\xd4\ \xd8\x8f\xde\x2a\x83\xe5\xcc\x48\xee\x40\xdb\xf3\xad\x44\xe3\x7b\ \x6e\x68\x5a\x9a\x46\x9a\xd0\x30\xa9\x33\x78\xb7\xff\x00\xaa\x1f\ \xe8\x5f\xd2\xb2\xb8\xf3\x11\x85\x82\x3b\x68\xc4\xb9\xf7\xda\xb6\ \x78\xba\x7d\xea\x3d\xfd\x4b\xfa\x69\x59\x3c\x69\x03\x3e\x0d\x0e\ \xcd\x70\x7f\xee\xae\x5c\xe7\x55\xae\x2d\xc9\xbc\xc1\x5f\x6c\xea\ \x1b\xda\x90\xc0\xde\x8b\x87\x16\x9f\x85\xc0\x43\x67\x65\x05\x0d\ \xbb\x7f\xe6\x89\x81\x07\x51\xaf\xb5\x6a\xff\x00\x59\x2c\x2f\x5a\ \x21\x5d\x51\x7e\xd4\x21\x0f\x7a\x9a\x10\x6a\x41\x35\x21\x02\x41\ \x04\x6e\x29\x44\x4d\x16\x2b\x2c\x00\x15\x94\x66\x00\x8b\x81\x4c\ \x15\x32\x5c\x46\xd2\xa5\xc3\xc6\xbe\xe0\x8e\x96\xa5\x03\x10\xf8\ \xc8\xe2\x2d\x9a\x35\x00\xea\x63\xb5\x1e\x19\x32\xc2\xae\x7c\xce\ \xe2\xe4\xb6\xb6\xaa\x32\x4b\x88\x9d\x6e\x73\xba\x83\xf0\x8d\x05\ \x5d\x49\x84\xa1\x72\x02\x0a\xd8\x15\x3b\xe9\x54\xa4\xd0\xd2\x66\ \xcd\x98\xdf\xad\xea\xbc\xb0\x26\x23\x89\x4a\x19\x72\xda\xf7\x75\ \x1a\xfc\xea\xc6\x66\x12\x00\xaa\x73\x7c\x2b\xd7\xdf\xb5\x74\x71\ \xac\x20\x85\x39\x8b\x1f\x33\x1e\x67\xb7\x6a\x7d\x0c\x9c\x66\x19\ \xf0\xf2\xe5\x3a\xa9\xd5\x58\x6c\x69\x56\x35\xbb\x3c\x5e\x3e\x19\ \xa2\xe7\xba\x7b\xd6\x31\x5b\x12\x08\x37\x15\x8e\x5c\x71\xa9\x41\ \x6d\x2d\x56\x38\x40\xff\x00\xf2\x50\xff\x00\xaa\x92\x6c\x37\x20\ \x7b\xd5\x8e\x12\x3f\xfc\x8c\x27\xfa\xaa\x9e\xa6\x89\x02\xda\x52\ \xcd\x31\x98\x6c\x01\x27\xda\x81\xae\x01\xd0\x56\xd9\x71\x00\xca\ \xa9\x73\x64\x5f\x10\x81\xcc\xec\x2a\x05\xed\x6d\xed\xce\xa1\x81\ \x2a\xac\x1a\xef\x6b\x65\x3b\x30\xe9\xd8\xd3\x22\x0a\x45\x95\x80\ \x23\x70\xda\x11\x52\x0d\x8d\x12\x73\xd0\x32\x9d\x18\x72\x34\xc5\ \x8c\xf2\x19\xbd\x8d\xe9\x25\x6c\xe5\x46\x52\x06\xec\x4e\x9e\xda\ \x6e\x6a\x4c\xfe\x2a\x92\x60\x18\x62\xa0\x3e\x54\x6b\x2e\xbb\x83\ \xc8\xfc\xe9\xdc\x1b\x1d\x1e\x36\x49\x73\x30\x49\x99\x75\x52\x74\ \x36\x3c\x8d\x59\x9a\x05\xc4\xc2\xd8\x76\x94\x80\xe2\xd6\x0a\x00\ \xbf\x5a\xf3\x85\x25\xc0\x63\xd9\x1d\x7c\xcb\x70\xc3\x91\x15\x8b\ \x6f\x1b\xbf\x0c\xed\xe9\xa7\x89\x9e\x06\x46\x1c\xae\xa6\xb3\x2d\ \x47\x82\xc5\xbc\x79\x64\x8d\xd8\xc4\xc7\x55\x34\xdc\x5a\x05\x9c\ \xd8\x68\xda\x8a\xd6\xea\x22\xc6\xbb\x2d\x34\x2d\x71\x5a\x16\xaa\ \xe3\xe6\x92\x08\xd0\x44\x72\x97\xb9\x27\xb7\x4a\x94\xc5\x61\xde\ \x30\xce\xf9\x5a\xde\x60\x16\xfa\xd3\xa7\x8e\x39\x23\xfb\xc4\x24\ \xa0\xd0\x83\x6a\x4b\xe0\x62\x71\xe4\x63\x1b\x7f\x56\xa2\x8e\xf7\ \xa3\xd3\x96\x48\x24\x6c\xb1\xcb\x73\xfd\x42\xd4\x4a\xd9\xe5\x31\ \x23\x03\x95\x2c\x4f\x72\x74\xb5\x56\x7e\x1f\x38\x04\xfd\xd3\x76\ \x56\xd7\xe9\x4e\xc0\x14\x83\x06\xce\x48\x56\x8e\xec\xc0\xef\xdb\ \x4a\x3b\xde\xd3\x3b\x10\x56\x4f\xf1\x31\xc8\x43\x5e\x4f\xae\x95\ \xb2\x61\x11\xc3\x1c\x6d\xea\x44\x00\xf6\x35\x99\xfe\x1e\x84\xcb\ \xc6\x17\x12\xea\x08\x4d\x4d\xf9\x9a\xd6\x93\x31\xb9\x2a\x6e\x68\ \xe1\xe6\xaa\x51\xb2\xad\x42\xc8\x4a\x94\x07\x29\x24\x10\x7a\x11\ \xb5\x11\x40\x39\x6b\xd6\x81\xd4\x12\x2c\x35\xad\x23\x34\x20\x48\ \xab\x6c\xdb\x8e\x87\x98\xa1\x66\xb1\xb5\xa8\x92\xd7\x24\x79\x49\ \xdf\x4b\x86\xf7\x1f\xb8\xa9\xb5\xcd\xad\x66\x1a\xe5\xbe\xfd\xc7\ \x5a\x52\x28\xd4\x50\xae\xf4\x6b\x50\xa0\xc7\x2e\x6c\x18\x23\xe1\ \x7d\x7e\x75\x9c\x10\x2e\xa0\xed\xbd\x69\xe2\x41\x6c\x1c\x80\x6e\ \x2c\x4f\xb5\x51\x50\x2d\x59\xbe\x99\x42\x12\xe6\xdb\x73\x27\xa5\ \x5c\xc0\x25\xf0\xcc\xc4\xb2\x29\x60\x02\x8d\x0b\x0b\x1d\x4f\x4a\ \x42\x80\x14\x2b\x5a\xce\x72\xfc\x86\xa7\xf2\x1f\x9d\x5c\xc0\xdd\ \xa0\x91\x8e\xe6\x4b\xfe\x55\x48\xa8\xac\xa5\x72\x18\xd3\x2f\xe1\ \xcb\x50\xd8\x44\x98\x04\xf1\x64\x50\x3d\x2a\x75\x02\x99\x61\x4c\ \x87\xd6\x47\x55\x20\x7d\x0d\x69\x96\x0e\x35\xc3\x48\x51\x49\xca\ \xa4\xdb\xa0\x1b\x0f\xd2\xff\x00\x3a\xb1\xc3\xb8\x78\x78\x84\xd8\ \x82\xc1\x0f\xa5\x46\xed\x54\x9c\x10\xc5\x48\xd4\x1b\x1a\xdf\x6d\ \x42\x64\xb6\x4c\x82\xc4\x7b\x56\x38\xf7\x75\xaa\x52\x41\x86\x8d\ \x72\x24\x00\x5c\xdf\x31\x39\x88\x34\xb4\x79\x12\x5f\xb3\xce\xd7\ \x0d\xe8\x6e\x5f\xf8\xa7\xb0\x23\x98\x3f\x95\x2d\xf2\x99\x21\x72\ \x40\xc9\x25\x89\x27\x60\x7f\xbd\x6c\x39\x94\x98\xd8\x0d\x59\x7c\ \xcb\xae\xc4\x57\x40\xc9\x32\xe7\x42\x01\xf8\x94\x9d\xa8\xe2\x17\ \x97\x2f\x33\x70\x79\xf6\xac\xf8\x96\x21\x23\xac\x8c\xde\x51\xe5\ \xcb\x45\xaa\x34\x02\x1b\x92\x74\x27\xb7\x2a\x25\x5b\x54\x61\x03\ \x8c\x22\x67\x37\x27\x51\x7e\x42\x9a\x10\x9f\xee\x6d\x5a\xc0\x85\ \x14\x5c\xab\x88\x23\x71\xa7\x23\xd6\xa4\x52\x9c\xbe\xaa\x38\xf4\ \x5b\x03\xcc\xdf\xeb\x41\x6d\x6b\xae\x43\x79\x4d\x89\x3a\x8a\x90\ \xa6\xb6\x9d\x4d\x1c\x79\x64\x87\x2b\x72\xe6\x39\x1e\xb5\x20\x8e\ \x82\xb8\x1c\xa4\xe5\x1a\x1d\xc5\x69\x25\x24\x61\x27\x85\x3d\xae\ \x7d\x2f\xc9\xa8\xd9\x4d\xed\x6f\x95\x2d\x99\x5d\x32\xb4\x64\xaf\ \x7d\xc5\x04\x73\x98\xdf\xc2\x98\x92\xa7\xd0\xc7\x97\x6a\x90\x78\ \x9a\x5f\x0c\xad\x6f\x4b\x6b\x58\xfc\x60\x5b\x09\x0c\xd9\x6f\xe1\ \x4b\xa9\xe8\x37\xfd\x6b\x73\x1a\xc8\x20\x78\xdd\xd4\x31\x17\x00\ \x9e\x95\x95\x8c\x48\xdf\x01\x34\x66\x45\x37\x00\x8b\x1e\x63\x6f\ \xd6\xb1\xce\x18\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x08\x52\xaa\xc7\ \x00\x66\ \x00\x69\x00\x67\x00\x75\x00\x72\x00\x65\x00\x38\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0b\x53\x47\xc7\ \x00\x72\ \x00\x61\x00\x6e\x00\x64\x00\x6f\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0a\x12\x5e\xc7\ \x00\x6b\ \x00\x69\x00\x6e\x00\x65\x00\x74\x00\x69\x00\x63\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x00\x28\x58\x27\ \x00\x74\ \x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x07\x50\x31\x47\ \x00\x65\ \x00\x6c\x00\x6c\x00\x69\x00\x70\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x8f\xe2\xc7\ \x00\x63\ \x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x00\x22\x00\x47\ \x00\x54\ \x00\x69\x00\x6d\x00\x65\x00\x2d\x00\x46\x00\x6f\x00\x72\x00\x2d\x00\x4c\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x2d\x00\x32\x00\x2e\ \x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\xf9\x47\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xdf\ \x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\xf5\xc7\ \x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\xcb\xb4\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x48\x00\x00\x00\x00\x00\x01\x00\x00\x71\x63\ \x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x36\xe6\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/0000755000076500000240000000000012613140041023133 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/centered.png0000644000076500000240000000157412613140041025441 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ§¡o)üIDATxÚíÖ¿oEÆñïÌíÚ±›“…-°8 wn¬nà‹K7ÈüT'QB(ÝÐ6m0Žp*DD” ÈdìäÞóÞž÷×ìP9‰2R®Xñ|¤ív¤}çyßy1L>vqqñcLøœË¦€ÏNOOÿVA^°õõußn·ñÞSQQ¾ù”—®LS>™ÆÍŒ^²`¬ï,ŽcöööV²,;ªÃƒºE:MS p?ÿ…Îõá™»¤^$ <Ÿ"ûu†áá,eYbŒñuÙŸ­S1ªª"Ïsò¼ÀSaáªyŸÏ;wxçõ˜ç‹W[ØW2Š¢ ( œsµ:pµJˆsŽ<ÏÁ&Ã`òá{óÑ­|½ýw_;ã$}À÷?%Ïs¼÷Ï¢‚L‚÷ž,Ë0˜‚áÀ1×l’W)‡òcr ã-Y–S¥‚L¸esóS †C¦£yQá)]÷Œ’ôìæR£‚Ø:&$Ër* n3¤ÝnsrrÂææ&Q±´´ÄÚÚÛÛÛxïiµZ¬¬¬Ðét(Ë’0 k•Z5ÙÕÕU¿¼¼ÌÖÖ»»»£oíøÇGQD†xïIÓçÎ9ŽŽŽÞ Ô²& ßï³³³3žÿ9]ÆPÅhcA@E¡kï¤?ÊçY†áL³ÙLã8FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDþOþÑÀQ%½%`IEND®B`‚PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/ellipse.png0000644000076500000240000002501712613140041025303 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ+쥻n IDATxÚíy”]Uï?û w®95¥*!! „ˆÑ ­[ì6` HÓðhÄõÚÕOxHƒÚ“­H«K´Q@ŸØ4­ØÈ $Œ’š’ªTªêÖp«êÎÙöûãÖ>¹ÉaÎË^+‹[Ü᜻¿û7}Ã…ãëø:¾Ž¯ãëø:¾Ž¯ãëø:æ—x3ÝLuuuW&“1¥”^]]ÝûÖ¬Yó9Ó4]×uåþýû[V¬Xçy$“IZ[[)•JhšÆ®]»°m»ü…„@Ó´ƒ_P pÕcÃ0ú 0¨×¶¶¶ÇßÐ=0ÞÈ‹·µµ-››{§”ÒX¾|ù·ÛÛÛÃRJ†ö  ¥¦i•.†aà8HÉD>A‡ÑA&“]vòœ½êL'¦Ñ„†®ëèºDùè…3Õõw®\¹ÒB°gφ‡‡ßèCùºRUUef2`vvöº~ô£×«çúûûË'\ò”°J–š çð<˲Àƒœ[IJ,,ËÂÖ]×&Np`zœÓNê¦X*¡ë:;v?OU“À› !„IùŸµêÚÑh”îîî>@¸®kîÙ³gÑÿ€´µµ=¸xñ⋤”ô÷÷333S>ù@É.o²Šž…íØ!p)%–e!=‰”¶mcYŽ!‘à†ôÇŽ@?X("€ —Çb1¤”˜ÓßXÇs(•JþÆZ–UBZxžW~Î)%¥R© ˆç•,p×ÿLWÓ‘ê}@oç7žGn4‡) M³ Cɇ9t šDhȳÎ:ë·¦iòè£Þ |ü˜dÁ‚÷¿ímoÓ4McïÞ½”J¥ò¦º6¶eW€PÞh@JÏÊ–¶/!xÏ“7}þD«×º^YzJ¥º¦ûÏ !ž‡‡‡+]³3ˆ%3¤¤ %Ò8ÉnÊÀK¢lÕÀ0 êêêNokk»EÁìììóccc¾åéèè8£¦¦†R©„çy^¡PÐt]Çu݃H˶|IÙ !žGYíH‰7¿ÑÒõBú›îI@Ä=(!º¦ùÒ$„ðÁ±m›Ã#œ»è\dRâII6’¢a©Ž7BÚiiH«ì­uvvž œi;v츧WÛ3{­ 477oéééÁq6oÞŒmÛ¸®{PõÌ`[U–çyX®[6¾ ÀÄBB:.KQ°D±X$ŸÏ#DV|ÆA@4¡áy2ˆúÜT*…çyL§fÑM23rX`x؉Ö0B+»Ô³³³+[[[otàáx<þÜ›VBÚÚÚšÇÆÆj€ ú®ëú¡i®ëú›'=‰íÄÅ#›Ê  Û³ÈØÇÁÑ=bfÄWYŽa“ÍfÉårHGàx.sssä½"¶mQ(Є@šÁ’à{g¾×äæÒ,k<Í·áãÁq­âL†qsAd§1o[$‹-êz4Mcûöí‰75 …BážK/½ô‚\.Çèè(¶mû’ â*7“’\.G.—+‹U8èŸfWs1LÏó0äÁ€¯P*LkUå[6èž@3ÊêEw™L–t:@ªP´‹óâù΀ïµÉ²ú+–ʯٟ¢íâÔ0:%†^QÃM832ÏU&Ñ4|>jç÷1ñ¦Äó<- R(|Õä8Îa¶Á£P(Ì?vý Œ„Ðæõ~ ¯!ê4Î=÷\fggéëëã‚ .àòË/çÎ;ïdppË/¿œX,ÆwÞ‰¦itvvràÀtCÇ0 àlr¹LY:×W‘êž<Ïó퀑´ñ]DB–%ÊÓ²-²4Ýô|7¹§§çŸO=õÔ.•JüêW¿o @š›››„˲zÔ+©¨TY*¦Èf³hš†eYºa”oC“‚÷¼ç=ÜtÓM\{íµœ{î¹¼ýío§»»›uëÖqË-·ðüóÏså•Wòï|‡w¼ã\pÁÜÿýÜxãtvvòÌ3ÏpÏ=÷PSSC4ezz×0Ð4 Íd²²Ù¬¯:=Ïó;ŽC8&1Ñ4g‹{xï51å€ÒJ˜8a¬‘îl`Þ1‘ƒÁ7Êšœœ\ôþ÷¿ÿÌX,ÆæÍ›)‹²T* ‚ëº8ŽÃÜÜBt}þô æiH$wÝu‰D‚[o½•«®ºŠ¾¾>Î9çvìØÁe—]†ç•}Ðo}ë[Üpà |á _ ‘HÐÓÓC±Xdff†“O>™ÞÞ^:;;Y¼x1ŸúÔ§XµjgŸ}6®ëòž÷¼‡‡zˆR©tÐY8ÌÑpç Û¶I&“”’sì¸7‡çIý"Ê>ÖŒ5ðù³êêê¯K) ‡ÃÏMMM}ÿu¤¹¹™ÉÉIõgÞ¶íÊS'ÔÉS_XyP ªª*.½ôR~üãóÞ÷¾!]tßøÆ7xðÁùÈG>ÂöíÛéïïçꫯ¦X,¢i>ø ?üáñ뺕~~¥—%„@²/·ß~;Ùl–µk×òôÓO³~ýzöìÙƒã8<öØc<úè£äóyZZZüÓ\(X°`¡PˆB¡@*•"új#ðÀ077G©T’7Ýt“eoKÓH¥RèºÎÂ… ù·û7>ó™ÏL&ý÷+i¾´ÌÌÎ ¥$ç–_GvÑ„†¦yHÍÃÉèØã!R¿®èÃ0RÚ¯$F9j•eYVW[[sssض-”ñV1€”Ò?}®ërÝu×qõÕW³aÃvíÚÅúõëyòÉ'q‡ë¯/ó‹H)ýkìÛ·ïk8p@m í8Î)%º®[ù|þò±±±)€@ pIssóí¹\ŽB¡@,ãÚk¯¥££ƒmÛ¶ñÝï~—‘‘ššš|BÒq’É$®ëÒÐÐp0 —üýF0§ƒÐ\J (8D"”âcˆyÆ?ŸÏÿIssócš¦iñx|ÝëfC¤”V©T¶m?¾€rð–N§1M!¥R‰p8ÌßþíßòôÓOÓÜÜÌ~ô#üq ‰üá¤X–µOÓ´!@:޳+ú½6‰|{ëÖ­ÿ HÛ¶³‹/mhhˆ( ¹ï¾ûä—¾ô%ñ½ï}|à|èCâóŸÿ<Û·o÷=®J§$‘Hpöš³p`Ôã„ó mz9N"„![æãC´†Ñ²qãÆ£Šà_6 uuu×®Y³æCŽSfUu]?$Þ°,‹@ À 7ÜÀŠ+¸æšk¸þúë¹ð f>9D,;è. …d2™oÄãñ¯éþÒétð“N£££ëGFFÌyéùÇñññÓ.¸à‰·Ýv,^¼˜çŸž|>mÛ Ôws]—B¡PþN Ð3¶ ­6Gô ©I¤ N2ÀìÏëñŠšR]ê2ŽBUµ-\¸°~llÌ·•4‡J ¬_¿ž¾¾>LÓdóæÍ<õÔSƒA‚Á O޲EUUUlÙ²¥=™LN¼œÉd~£‡ÃáK8`žëº'Þpà ѯ|å+ôööÒÑÑÁwÞÉúõë) ¾]qÇq˜Å.Y”J:/ôçyû ‰…£<¾ï?éÕØdɰ‘hš†išôôôÜL&7ŒŒÜùšIˆRC•¾»ÒÁ¶m³páBî¹ç>üáó¯ÿú¯üÝßýÁ`°Ì;ÍKçy¨¼ƒRóö@¤R©‡€„®ëép8l+ë¤ê•¬D"qm"Q¨ëë럌Åbgß|óÍŒsûí·³sçN€O\V~¿ééiº»»Ë«+y|üqºÏ Ò®µâN„ðR ¡ír]ׯìïï×_+@Bï{ßûö8p Z‰²¢F”ë)¥äÓŸþ4O=õó\üà©©©yI0M“-[¶|>“ɼªüЋHúõš¦YRÊÿõOÿôOkoºé&,ËbݺuìÛ·±±1_9Žã³Æ9¯DÛ{J„Û¡Ð<‹µn (˜Lý¤ax†áÇP¯ õÕÕÕ u]÷%¤P(P, „Ãa4Mã'?ù W\qµµµ‹Eß[9\Ôߺ®“N§w†ñ¸ëºN$‰g2™× MÓÈf³¿Ëf³ê4_a·Ür †aÈ»îºK¬^½Ú½rã•&ÈsD¶ç˜ú}šËÏø[\½ÀC½ß¦)ÜÅDfˆ¹±"Â(_gfffQ4ýË\.wß«H…Þv•¯®DÙ²,òù<ííí<ôÐC¼ÿýïgß¾}\wÝu4MûCU ‡|~8&?533sÃë•F>üÔ¦ÓéÍ;vìzž§·´´¼ÿé§ŸF×u„„ÃáCT—išœ}Ú¤®tÙÖ»ÓÐY꜃;#Xj/†ÕªžG¬) kî¾ûîWxŸgïÞ½á|>_äM¸êêê;å”SÎ]¾|9[·nezzšÖÖV¤”d2-Z„ކS‚¢WÄ¥„iGÐy5m‚0üxJš¦)¶oß¾zllló+µ!1ÏóªÔép]×gkãñ8çœs7ÝtÛ¶m#—Ë177G*•"ÐÚÚÊØØccc¬X±‚mÛ¶Q,5>>~k,K×××—òùü›„Û¶yâ‰'èîî–—\r‰¸ë®»¨­­Åó<ŸGÕghÿ‹Y4pòV9Ë8š" :^^ÑhÃ0œW¬²êëëoollüSåê*@ºººxöÙgÙ´iÓ‹¾wttÔ—šÞÞ^b±@`rÿþýOÏÍÍùi×7ãrçóͶm¯Y³f͵CCC†qH~ eå8³9J!/y× ï£¯j3éŽ@P6™ùE èeòóU±!®ëF”ûª Þýîw3::Êc=F8öË<½® ~…k[. u]Òét”7ùª®®&Nÿ÷<7æ ]›L&QU3žçÑßßOUU†g³ík6”¢ÌÕíD “xÊ!`ê œT9==55E,ûaSSÓ SSS5 RJWI†²Üxã|õ«_åöÛogxx˜“O>™™™âñ8555<ÿüóhšÆI'Ä–-[ÄèèèÓÓÓë.\Èøøø›ÅÏK·©²œ«V­’£££"™LÒÐÐÀÉ'Ÿ\&#=N𡦮€—P“Z„—6qS´€Ð¥">Oº÷Þ{ŽZBššš»®ûnå9CCClذÁ÷š~ÿûßû9óÊxcÓ¦M„B!ÿuÀ›Œ?D>ºeË–µ@àêóÎ;ïŠüà~j!“É =1™àŒ·9ØŽKU¨†‚›Aè傾ü®égj@trþèõŽ@Ì­‰D" ]×%™L"¥äú믧X,‡‰D">H¡Pˆ`0H8& ……BÄb±C¼«·ÚÊd2“¥RéIMÓF¾õ­o"=~2Nº€ÆbyŸY}7îÞãÒ[Ž–kÏ{|¤˜ä>‡¯\²dÉÝÉd’¦¦&~ò“Ÿ0==ÍC=ÄþýûY·n<ò+W®$‘H088HOOüð‡?¤X,μð ÍÍÍÉÉÉÒ[˜ššš/¬^½ú¦ÑÑQ’É$¡PˆÓO?@ €††t8^ Ã0q¤¦—kÏd10<<úé§•ÊÒ4-¬T®ë„B!>ùÉOÒÙÙÉ /¼€”’ÞÞ^t]÷ó<ò®ëª‚ È·2ótËÏžyæ™ý .¼½½½=:::êóyÛëû8ë/"7m §‚¸)7m`…Åh›GmCB¡Ð§eÙª‹%K–à8ù|ž={öøÑ«â|‚Á Ÿ”Qe›€L¥R6ÇÀÊd2Ïφñ###QMÓ&å¤CýBáê,j<…šEU¼0µ‰X –¼>ÅÈW[Z™PU™Õ£DJ)¤”¢T*ñ‰O|Ã0¸è¢‹øò—¿Œiš†A*•bdd„îîn†‡‡I§Óô÷÷“ÍfÉd2300ð Ž¡¥¤…B¡î¨mH}}}SSÓR×u©««ãŠ+® ··×/6ðÛ J%B¡¥R‰l6K4%•J‘Íf¯;ÖiiiùŒâ³Bˆº•+Wú¹ž¢g:9…áxÓœÉ0hB*׎”’ééi{ì1q´qˆPtµ®ëÜu×]‡$£*Ý[¹š¦‰mÛ2‹‰t:­K`TWW311ñ¥ÖÖÖk:ÏóÊD©Ðx¬¸¿\Õ„#m,·DÌãft¼TÜÎV<ð©ÿ—åö¦mÛ\pÁ466rõÕWÓÔÔ„iš,^¼˜ŽŽLÓ¤±±‘d2I.—C×uâñ¸Ø½{÷/2™Ì/%@”Ë+æO¡JEX–…ÐÊå¦ïŒý5_\÷0ËjÏdyÃÙD;%ÄJŒ^‰ Ä|v{ï½—¡¡!öìÙƒišÔ×דÍfÑuÎÎNjkkÙ»w/===d2 …Âæx<ÞË1¸Ç‘~W0 !ÐC‚}{“üËÿ¸œë|7w_¶™É¹ižKüßûÕ½X–支ˆËÒ4.ºè" …‚¯ +Ë\úúúüÇO?ýô!Qù±¸fffÞÕÒÒ2¥x-@„…œG8tЫu\‡Ç‡þÏ•¾½}¥B  ¾¾ž@  ª ƒd2jjjü¼ºÊ©g2,˲±c×u³ó’R¦C(ç€b1Û×›ïÆÅõ<×Ų¼Wˆçy¬[·Ž+¯¼’3Î8ƒ‡~˜ßýîwäóy&&&8ãŒ3˜œœ¤¯¯Ïóhllä…^Àó¼}ñxüßß “^«5ÏdK˲„@ 4¥ËêydëÏùÌ9ßâ¿ö|'æ¼Åèu¾C©ä¢UŽZB6nÜÈôô4555 ø(K)ùéOêW’xžÇÔÔ”*®À1 ` …ÙB¡PŸL&Ñ„F¾Ù£hUñCÏ'cßã@®Ÿç'~‡ИK17W®CP™Õ£Ä0 FGGF×ußåÕ4Íÿ[Eí*299ÙÒÚÚú¾x<þȱªµ„–JW«†#(¨"Â]K²ÏcfoRÒ#7é"4áïÓQFùÈG>B?_|1O<ñCCCÔÕÕá8ŽïŽŒŒL&iiiarr’\.WM¹æ˜¤¥¥EUéKukkk1‡‹õ)¤”lܸ‘ºº:jkkq]—ÑÑQºººüÆ—¶¶6r¹œÊ;Ecbb‚öööïF×u¹ãŽ;X·n_ûÚ×8pàžç‘Éd0 ƒÙÙYª«« …B S(8R Á‘Ø^~ñ‹_ðóŸÿüE_Si'víÚE$yIÆë­¼ÀÚU«V¿ÿýïY±b}}}¬]»–ïÿûôôô066FWW<òÕÕÕ´··sÚi§qß}÷17ôGZkkëpUUÕ •„Z©T"‰ø•%‘H„\.‡çyÔÕÕùÒÒÞÞnÏÍÍݳgÏž«5@-Z4xê©§ž811Á’%KX³f ¿üå/)•J²Ù,áp˜t:íï›çyär9\×eçÎGÇeE£Që›ßü&©TŠ|àÜÿýôööÒÐÐ@UUÏ=÷UUUôõõ111AWW### ã8Ž)„0A0þ*ÔÍÌÌ „`h߃ơ'߆3w!…Bþÿ?*@t]çsŸû_üâ¹õÖ[Ù±c‡_u‘ÏçÑuݯFq‡ááa?ŠŸw½yI;f\à¶¶¶\ºti=ÀŽ]Ïã5¥‰Ld&€´4ÜöENd ÚD;nÊ$SJ‘œ+3ષä¥ÔøþQ ±m»ß²,Ö®]˲e˧T*177Gss3étšÚÚZR©“““TWW£ë:ª‡Ä¶mLÓ”NÂ[VuåóùýéŸþé—MÓ)ÉØEÞ½h9©ŸÌSüÃÃ_ÆÐ 4C X€®Á‚F¡¡!)‹ƒAéy^øÑïccclذÃ0üü¹Zƒƒƒ¾Áxî¹ç0M“JâÍuݪ•+WÞ5555Çÿá­*!žçÕ)» mì5#,è‰áâ"mp'¢X“œÉ VÜð«ÞUCl*•¢¹¹Y‹Å«ÚÚÚ{ù*KÓ4O©žH$B0ôë°T×Ôá5Xjz‚jB===Wr Ørÿ¡eQW¢Tp8wÁ_óÞ%Whµ¨›CÕy JyûàLÈùz,U .„¾G”ªªª{ÇÆÆÖö³Ÿýóšš.½ôRn»í6’É$+W®Äó<~ùË_²råJvìØ@0¤X,’ÍfýÁó®žûVT]¡Pè/Ö¯_ÿ|%t])ÂU:Þ/ÈÉÚo@€¦uúï©®×Ø¼y3Ë–-ó[á”*?RÐüG™šš’‹-²xà>þñsóÍ7Ó×ׇ¦iÄãq?%¹eË …Éd’ææfŸ|Tî¯mÛ„Ãá3.¼ðÂgþ{ppðÖ·ª )›h] °‹wœ_…ë¹Ø) ÒÜ´›4)†‘®·¬Þ+§×‰Äó†aì{En¯”Rs]—/}éK~½•ò¤<´]KÓ4¦§§}ñTÝFólM}}ý;kkk÷¾EHÄÚúúú%‰DbÑ|Ò ]jè– 5$©ÓN¤µ®šo;¢JCT r/Tã5"ÅÁÙ’Rµ2|sjjê™WÈìììW³Ùlç5×\ó®B¡À»Þõ.xà<ÏcÁ‚Œ‡‰Åb<óÌ3´··ÓÒÒB±XôI¶ÊQ/·MøZÅbñã§Ÿ~ú?(C^’Á‡¦Ù·#žä€NõßÓÞd°{÷n¿CUâ¨4å9G¯² à No^¸páо}ûÞõïÿþïô÷÷³téR ÃðÛ£ à rÊ)§077GCCÃ!eªItžûà%—\rþÌ̌ؾ}{w:N¼Y@¨´mžç™ù|!y·ç`ñ²0ÒiÏGä–†=m’z¼)\¿¡GÀd2I0DÓ4„eYæ+¤"}}}¬[·Î7P‡—*õ%„à׿þõÁ!ešF±XôB„ Ã×ÖÖbYÖ›ŠŽÇãœrÊ)ÿ§¹¹¹³T*udÒið4ÏÃx²–¡Í‚ùVç ^Ö%;3MuM•ßaæÏ¶mB¡º®‹M›6X__?ñŠQ«T*M™¦9ªëz{SS†aøÜŒš_ …|#¯ŠéÔ€ÙÙYÊŽšÛë8]]]×ìÄÄÄóSSSO¾ÑR1ïY^°`Á‚z€„¦zÍ,õÕ!œÉ0ÎdYÒñJå¹¾xåÃm)wTN]UÙSUt.¥Ü733sÄûyI•…ù|þ¿ÇÇÇÜÔÔô?ï¾ûnV­Zå«£}èCLNN²|ùrººº˜™™aíÚµ¬^½ÚJ¦ZÛ"‘ˆ?$Ìó==}ÛK½——ˆÚÔD"!=Ïó\º®S,éQW4‹Jh%“Ifff¨©©Á²,LÓT€ÈÎÎÎ,Y²ä#º®ó«_ýê*àî×AUµ¥Óéó<Ï+år¹åªc8eç ¯L¡ƒÐ%‘–ÀM™8I7iöj©®©FzÒ·‹º®ûƒÜ”3T1(áÀèèèo_ @â[·n ƒÁ[>ñ‰OÜxöÙgsþùçóío›í»%_¥ ƒIDATÛ·óŽw¼ƒt:Íàà 555>¯µzõjž{î9¬ÃgøZ–%”s0ß"×ÑÝÝ}†”’™™™=¯I#{¡PøËË.»ìŸU»rQ+­`éx% ™.Ûˆ²b—È0š ¶ïØFÈ:˜bP‡+™L"„ðœeYƒAlÛ~YsF^ ’òÏM8Û·oGJÉüc¦§§ñ<xÀO^UŽÊÛ´i“_þ¢NN¡P8ÄE¬œÕxê©§ÞÖÑÑq[$áá‡^l}¥âÀiå½tß½sçÎòÈ ÏAœ¦¦t¨Wj'uìñ &!š››9üÇ?\Ê3Åbd³Yûu]x­ñP(ĶmÛüi¤ª]AuTU&ò•d¨ê‹\.G±XôÙãJÏKMM§ÓxžGGGÇžtÒIE×uõÞÞÞ;âñø×^Î6Ζl6{Íe—]va6›EA¢v\v.3…ãÌ‘Ó÷h¥ç!5Ixi˜›6R[[ëR9äSMéVqW0xp\úôôô²—Ëݽl@t]¿ûÉ'Ÿ|J×õ+/ºè¢ËÖ®]K[[›6m"N“L&™››C×uN8ᆇ‡™˜˜àôÓOç…^84Û¶ý!6¥R‰`0èaÛ¶©««ëT?þ²k×®uápxЂÁ`!™L>p¤{œœää“O~|Ñ¢Ek•]Û7¶W‚š}&"ôƒÐl„fãz®?ÔÔÔ é‹;*Q¯*\8ñĉÇã”J%ªªª™RñrˆÔ— ÈÜÜÜ 0XSSsÖÎ;Y¾|9þTO%Ê®ë266æs];vìðÛàT977Çáãe+¸/ÙÝÝ}ÉŠ+.Ø¿~tt´e^EèSSSOº®Ÿçµµµm¬,Ù¬ÜéI¡¤@I)Àôô4===~,1;;[æ¯æ'STŽQ€TÒ"K–,azzšR©47555R,£Q«¯¨o ­­7üÁYUUU‡çW…B¸®ËÔÔ”Ù+]¬†„) Q"—Ë111¡ôtdÅŠ_WÄÝÖ­[©®®öƒÐééé?X²é8^x¡ïÓØØèß¿r]•:R?±¡¦â)W]Uލa—º®322¢zx÷îÝ—íž5 žç}íÙgŸý±eY+{zzî½õÖ[ikkãg?û;vì@A6›eÙ²eôööúÍ=ìÛ·Ï×»ŠÚ><ÒU)`åN« RA¦Ú)%­­­´µµ!„`rr’ÖÖV?Ø»w¯Ÿ×ßµk—Ï¿©“¸V´òž÷ ÕõŸHdnnŽªª**‡v¾®€d2™)`J×õ*MÓøÜç>GCC‰DÂÿRRJ&&&¡ëX±XŒîînâñ¸¯*‡kªJŠ”á¯Ì±Tfò¨ ­r4ë¬ÜTÅ8+ðÕ稃 <ÂÊ„ù¡9þ÷P̲eËèëëÃ0 âñøB¯P(<ó†R¡†œR©T ‡ÃÅd2F£f0D×u4¬:eʰªMSÕ*š×uÝOÿVfÖTO¸’!„/!•:^§åÁ©MWªG¢ÆÁV>§@% •?·QUUå\ÿö·¿%‰‰DØ·oŸ?3²©©‰©©©7Û¶ŸÛ¾}{ ¾¾þ7ÝÝÝç}ìcãÉ'Ÿd``ÀOa*C¯6D×u²Ù¬Ï÷ÔÔÔø_Å3*Ú­T*Ù£;|Þ|¥$cÕ¦+æùpI]OyJ"TŸÊ‹tvv²|ùr{ì1<Ï£¥¥åÿéŸ÷Õ’JT²ÑJÛhšFMMÿ9êõ@×uyê©§0 ƒP(ôD*•ºüµÚ·× D"áÏêîììèìì\òíO?xžÇÂ… $‰øS¦ýÞ¾ FÙe¯X‡OÖV‘¹¦i¾‡§$¨³³Ã0ô'ÍWΤgggŸBx–em~-Ó¯K‡.—ûþøøøÊmnï ‡ÃËŽÔ¯=33C à™gžñ7ðì³ÏfãÆhšæ÷¨$ ¿’RÙ Ó4™¼ }O¯µµ•ÙÙÙrê5eéÒ¥ “ËåÐ4MýW !„ã8ª#lßÐÐÐù/–ö}K2?þ *Ÿ| '´.X°`YEä+Åà9*Õ˜Ši*óøÑhÔ1X__ÏòåËÙ³guuuär9‚Á ¹\ŽO<!©TŠD"AGGï|ç;ùõ¯M¡P ¡¡ÞÞ^4McÿþýJ‰ÁÁÁo9޳p#‘ÈÀáůÕzÝg®kš¶@Ó´ÈüãvwwåHó?”>Wv'ø†Ù²Ê?³zÕUWqß}÷‡©­­ezzÚŸ>±aÃ~þóŸ377GWWÝÝÝ<þøãª:ßWmê÷]×%“ɜǽ÷ç ‚‡Okll¼L×u ~* q®¯š`§ÔÓØØÕÕÕ8Žãç$ñ711A]]?s8‹ùa¡PðmÊüèóCfÑ¿ãlßÐ)1…BaÇÈÈÈŽ ÝìE£Ñ*)¥´m»Ë0Œ?;R£½²Êc*‹~©b õkœÙlÏóvK)u×uÝd2ù÷ããã?y±Ï~#ÆÙ¾¡r$íøœ~,»ZÓ´Ø‹¢–iš>•!„({‹ÅbVJ)c±XfvvvûaiÝcyÈñu|_Ç×ñu|_Ç×ñÀÿôæ°žÆnиIEND®B`‚PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/figure8.png0000644000076500000240000003334212613140041025217 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ$|¦ÿ IDATxÚíw˜e÷?÷SNŸ™33™Lf2©¤‘jèHÙ¥ˆÈºë˲®QW_W]]v]EQVPqYu¥YÀ:ˆ” )¤Mê´L¦Ïœ9½=õ~ÿ8ó<™A”4}ß뽸¯+W2ÉÉyÊ÷þµï¯Üðîzw½»Þ]ï®w×»ëÝõîzwý¿Ä±ü纺º« ÃN™2ås+W®;ôè$Ü¢ŠëºH)1 !RJ,ËÂu]a𦏕U.—…Bäóy ÃðoÎqÇño4TÀ‚^{„óbM¸F%KNaçäW‰‰¢è¤_®¢°'Œ”×uÿì D£Ñ³®¹æšu¥R©òB])CõB¸)»Nat—¬Hð[ä´mï.f̘á2^BÊ岿1¥””ËåWUU]WUUõ@ÿ¦?« ±mÃ0|iðnÄq· !PU˲®K}:ÄÁ§N.&W?;1¬0I:) ˜8yÇäì³Ïþ)e ™L†{{{ÿ6›Íæ' Rʰªª‰–’]“wŠó¯¬Ã•6vVCdÃØY '«QÞA:—¦r¹Œ¢TT—ˆ'!ŽãTžWJ¹jÕª«›››yðÁ×@¦M›¶°T*Í·m)%ŽãLPYŽãø*KÓ4ÿ3 fMU‘$Aw7ñ÷ÐÌÑDœH½†¬HCW€à#áp˜Ý»w8&@šššˆ4MÓ41]›Xµ¶ÂòÉ離%ÄK¿bú¼&†Œ.ò*N©€÷œãí†÷gO2ÆÞ‡Èf³D£QE‘6•U[[»fÙ²eóÒé´o/§²³=/+ 2f𠃸®‹eY¾±WQØîàÂÕ@ñ- ]’^WC¹-€eYÇE"hjjš,Ã0NN$d³Yl\ì›Ï¸ò}óyúÕ5Ìk¾‚÷ԯ俶Šl*‡.þ›ëP(p×u)•JžíÀó=MñgDJ© Û¶ÉårضM>Ÿ÷uk©TBQÂá0¶mcÛö¡‡‘ÂñÿÈ»‘ŠKÚídãÖ.’Uëûœ·#×*•J7ŸþùwªªŠ@03L?½w8Œ3Ú‚HþóSUð[xUn& Í'Ÿl'U‘Rz¶Á¤X,úï"›Í‹Å|0ÆIKc,›•Ïç;ÿ€ø/ز,lÛö_ž¦i>ªªúÞK±Xô½'!X’Ñ^ƒ©ï™Ëu?ZÊÏ>²¦“Ò¬íɲ'û*ùœé«> Î»þôéÓ“tÒnD½ StM´sú©Á’ƒHD6†QqR:ù-Õ Hiû¶Â“T*…ªª8ŽãÅ!Ð4 EQÈårƒA"‘¦iÊ“O>ù›ªªÞñÊ+¯Tý9‘ÞNQÛ¶™4i7ÝtßùÎw¨­­eúôétuu‘Íf}cí8–¨Û\Šù©Üô«P8•›Ö݈®©¨vMk$^ãÇ(òÊ+¯Üçýÿõë×Ïö­”x*ÄtMâá…ŒËM'ß«Y³÷^&742œïeôÕ0J@NPÉÞ†TUÕ$‹!„ð7¡¢(þ5–e !áp¸p¸÷¨·¦L™2iÊ”)/¹®;ͳÙl%½êª«hlläW¿úÍÍͬ]»–Ûo¿P(„¦i¾q7 ƒr©„СXÚÚZºÕ!|¼Ì¬i¹u”É×$‰Ÿniƒ  ƒÔ××ã8Î1é0Ã0¼E(œ~?¡j›çßxEÚõ¬>ãnjBõ”Ëåʽ–˘¦I6›õ7V ð¥á²Ë.#‰P__Ïܹs}`4Móµ‡ç}W@’Édí\pn(ŠX–å_¸\.óáÃ0¸ÿþûY¾|¹¯;½_°`·ÝvÛãîÅ-¦aâL4M%›t¸jáǨ›#²8KíÃè R¥1oÈ4Ø@644\FoŠÅb7J)— 188Hbh„7³ôíà¹5kÙñúömÚÃý|—/v‘/d}à<Êó¢Î>ûlª««‘R’H$|£žH$“_ue³Y_]W£îùßÞÅEáüóϧµµ•Çœºº:žzê)žyæB¡W]u§Ÿ~:©TŠû￟¾¾> à ™LúѸiš Aj’rÉá®÷>Å£­ßà¦ù_eíŽPúxÍÞV±#Jegéšó™ÏP]]íç>Æ{"ÞŸ“É$@Àä‡?ü!†aðñÜç»TT–,YRQ‰Ò!9÷sFpr*Öp{(ˆ5DH¡»þ5†††ÛÛ–«:EpÝ‚O³¾÷Iœ‘i\7÷Kœê™Üþèå¾k«ªªylÖ-[*äã˜s2iÒ$¤”!(•JþÆTU•P(D±X$‰ø¡€eYþ÷3 µµµ·,]ºô..9á„H¥RÒé´¯‚¤”(Šâ³ŸÞî£\e,šš6mŽãP(liQ,)—ËôYIZ¦;ÈH‰ÆIÓIMíC Ó5QJa†™\ItEbY¶e!‰¢ ª›9Xú=É$dÝ~êN0#^Ì3Aåx*¶§§‡P(„뺬^½š­[·ÒÙÙé{RªZa€kjjÈf³¨ªJ,óÕž»ŽSòŽ€˜¦9µ©©©¦§§Ó4¹çž{سg7Þx#?øÁH$ÔÖÖ y饗X¸p!»ví¢§§‡¹sç²mÛ6öïßû‚ ¾óì³ÏrÑEQ.—}•%tÅ÷¾\ÇEU¡ì|>qÑh2Êžø>ûF~¶ýn,ˬäRþȃ 0kÖ¬;£ÑèTéÊ)ÉÑÒuA·éü¥Âw_øi÷ F6ˆM‰îut æ0ͰH8fÆŒ bšfªT*õ8޳DQq×]wI×u…·= ø† •J‹ÅüMz¸4Šv8Ý4M …ªªò£ýˆoûÛüô§?eýúõ¨ªŠ®ëhšF*•bïÞ½äóyÊå2‰DÂS_!UUÙ°a¯¿þºï«½4ßß·±qqYÖplû*³´ó¹ö¤Õ´ÔLA TÔœ"ÞɳúûéÓ§× !(8eX8L}<ŒÓÁê “M"ˆª˜eŠC’Fq"f‡Ï8TWWÇI¥R˜¦ùìž={nŠÇã×Z–5˲¬¯]pÁ¬X±‚G}Ô·«^éQJŠ¢0<ÎÇ}6_>çijìy¨5)¾µé«† ¢ÂYy*TÓ4188Ø988¸MáµoÝ «W¯Æ¶mB¡Ð5tðàÁ ?8pÀ·!…Bá>T€(Š2Dz,TU¥T*Q,™;w.o¾ù&K–,axx˜ÚÚZ²Ù,år™H$Â9çœÃ3Ï<óG/®i_úÒ—|CèÅ ¥L©TB¤Bvèûxï5ØÖxÏJâ ™ê0‡€ü°}šEdž€®£)ÈòFÿHWŽ©ÀŠ”744ø6@Q”_g2™ÕoŽy®¼·ë3ííÿ±2½¶¶öFÃ0¤¦iâî»ï¦±±‘½{÷âº.ƒƒƒ†A8¦P( ¥dtt”]»výIî©X,楔޵ƒápXwÝRqÜC*G ,ÇfEôÏ\À–äãä’»Ýçp´– 9Á¦¸®+}Ä'…(e!•šªZL¥ˆÒ@©"‘¾úmnnfhhˆ·+MíóçÏš2e 7Üp=ö˜o{¼€×Û`áëºÏŠ+ !¹\NÔ××3<<ÌàÀ ñr¹ìTÞ6ŽÅb¢T*½mô,„ð+éfΜù ªª¾üòËýì+)I þîæ›¹égKù—³£/0Ólæ'¿yÞ ]tÑE#€ލ³,‰¢À";Âðà ×?t-R qý]ƒe[µÛ[{©ŠÄ}JÝ#?ÿãò"2‹ñâ‹/²qãFZZZغu+áp˜õë×û61‰ÐÒÒ®]»õ“tǬ²¤”èºÎ¾}û®¤f±N$¬’ë·)9H÷mÕœ(—ËŠ¢|ó휄·°ú>ðæÌ™Ã?øAn½õV?Ï TãØ²D¼ªŠæÚ©<¿ã×<Ñw¶Õˆi¹PÙᢦ¦f’@Ð5m§]ƬÔUÙƒœ¬–Ž[RPu MS)åMl#å%Ýd4###„B¡wäøÇá•W^!ãº.ýýý~¢ÊKÈyìo]]h𿑱ãÈìÙ³+@²"šQ)‰ÔË ¥;ž—5¶ãzþëpé¹sçúQí!u'°]Eh€ dÑT Åq\LÓòƒ9˲(8ej§)H[%ZF™baÌOø›`à¡IH[ñ=A[SUUtuu=àí]×ý§î×u]>ùÉOúß3~íÛw(Ößßï{¡ñxÇq¨ªªúr:~á˜Y±b—]vgŸ}6ßûÞ÷hmmåä“Oæõ×_gîܹd2Z[[ ‡ÃÌœ9“7Þxã°)ò@ À /¼ÀÞ½{éííõT!…ÖCF#ÿë¥[Ìê|ê±O`6y'Ž]D"‡¤®¢%Êë“9ø†àÁ~Äþž.~»÷§üíªr÷º[1M iB×uŸJùÈáÞs>Ÿ'‰ÃËtÇî„*PÔ1m0ö‘ÑÑQ_=‹„¸Þ.ˆÇã„ÃaŸt ,]º”îînª««}£¥ëú;^ô-*+ ( ôŠd¹\åb‘i+f’Ëåˆiu¤g iF€ª´Ž“û•ÖpsbìIÂá0éTšõ=ϲéÍ..>ùcÓ(•XǪHÔ¼yóülæá•555#M§œrÊ@*•BHpg –_YC~À¡8l“p(ÙÏ$yïðOÙ¨w$.ضm‰D‚ááaŠÅJéÎîÝ»ýÀÐÍu]^~ùå#J&%“É/ }wÌœ¾`Á‚‡y#• –r¹LÊÍ1u®‰¨²iœÖDÙÍQr( Øy•áŸNö\J‰W²ž)’5EL$“ÉpõÕWóôÓOû1Èá¬L&ƒ®ëRÓ4ššš*6¢€Ž,ÇE(:®«¢@ »~NÄSåLj®ëãeøúúúü¤Ìøßu …½ÀÞ±ç{Œ€¥Py‰¦ab+ªªÐ¢®âïVÞJM ž|ï|n»êV~±þûèsÛ±Y0é4’STrÝÕÓQP0Í2®U‰ƒ2™ O?ý´ï–éR…x€ááa„<þøãÄãq:;;innfË–-Ìš5 ÇqØ·oÍÍÍttt—%¥Tc±{öìAAô|Õ #'Iî5m·Èt˜˜…Cùšššà}G[¦úÓŸþ”B¡Àç?ÿy¿0ÁRM„œ<ål~×þ©Î®Xø·Ì¨Y„íTª`< éîîækÿû»•ÄV)ÅÆŸìâÀ dSy’Š¢¯ŽêvíÛÙU]ž?>]]]ŒŒŒxÏÎÉ'ŸÌæÍ›aÑ¢E¤R)FGGÑ4íØ$Ä‹ª=ïÉÙ©ñfG–|¿ƒU”(žñRUTUú¹‘@ à UÓʼyóhnnftt”æææJ…½eâàM `K Û±HÓ•£ Ý_4MÍ¡¤¦p²ŠÔÉæ²Äô8¹\Š¢ ëº( ;7mÚôOBUQ”#.‘TU•¯|å+ÌŸ?ŸÍ›7£ë:¸®Ë«¯¾Š¦i$“IÚÛÛÇ›¤”5Ç"!H)ùÑ~ĬY³¸÷Þ{+e“sJ~’ªX,"¥dÒ¤Ituu‘Édޏ:dB…y[/½ô---8p€x<^IÃb£k!RÆ Ó§Ì£~Z›zº©L‹º¹Àz\R÷þFž®Ãè­Ð+Žãøå;c¿'‹ÅâóGsc„««ëº²sçÎJ …UUb‘–kU,«Õx-8& ™7o³gÏæ„N`Ù²elݺ•eË–ñä“Orñų{÷n6lØÀ™gžIss3Ï>û쟤ÇßiE"¾õ­o!„`hh¨Rh˜ØªË†ÿd“ùUæ5.Á•.;ú6Ñúh#½†½,MSY÷µaŒÑQœ’dÆŒèºÎѪ¨·ñ ‡vîÜyñ¬Y³^(•J¸*L½!ÊÉËcØŽCSxÃF;ŽárðÕûžÈ£¨§'âùêG Hgg'¿üå/9å”Sxå•WÈårôôô`O>ù¤_™ñ›ßü†@ à§>r }C×ukìÁ?˜J¥fäóy,S2+<ƒ3¦W¤T,»~U‘2 Ã'c qF+i'¡HP$Lƒ\.ÇÈÈÑh”x<Îi§ÆË/¿|\?Í+¡Ôj³cŽ|¯ƒmlÄ.Jìr¥?Qh¾#p¬ÔI4òôÓOóÄãOòF„ÇI)~O‹P*‰¬êêjiÛöÑꬑÞÞÞÿíýP__¿\Q”ª¢€®ã’ÏçÀf«KZ¢¸JŽàÔ"Š,¡j vZ§¼/F~[Ôg¼êÁ|>_Éå‹ãÓ1gY·Ür /®}QVдBº¬–~l”H$+k¨½ƒA¯÷’ù® “æÐu´uæN^HGj(PN9¤»|.lÛîàø,%0}áÂJFÏ£Ö½ˆX¬¬¾…÷~-;†_æ…-/¡5ÓÖ7à…^Âʋ֯_ïñUǼÎ>ûl.¸àæÌ™C¡P ··—‹/¾˜ÇœóÎ;b±È«¯¾Êüùó‰Åb<õÔS~ îQ¢(Ѝ¯¯§/`E$K?RGu†t%ɶ~êöU1¼ÝÀuˆÅ‚¾'144ôæñx`×u¹ýöÛ©®®æŠ+®à¢‹.ªä $‚LºÄeg\Ï-¿<“ŸÿÍ.N-%áìg÷ú;0 ÍZËå2Ñh”`0xX®çá®mÛ¶1uêTPU•ÚÚZvìØ‚ŽŽ¿xçά\¹òØéw{)•KèŽÎ›w§‘XÅC9t¡LÔGB›Î2M“úúz¿âܲ¬J'o Ã% àR©?ë:ÈÆüc(¨’G÷ÔÖÖ6·X,޲¡¡Á86äꫯFÓ´?HVµ··ûÄ¢”’_üâ•÷u¬ôû%—\‡>ô!\×åÉ'Ÿ¤««‹h4ÊÁƒ‰ÅbTUUqàÀr¹ôôô·(„à‡?ü!Ë–-ã?þã?¤ ñxˆd&MM ¾âVJ›€ˆ ]‰eÙ~­˜WÖ©ëzÎuÝ pDüÕ‘^s|¾Ç @u\Åq]&‡gPrÓ¬,BHŒ¬‹[’~öð¨kÀ¤µµ•n¸mÛ¶Q*•¨««cÙ²elܸ‘`0H8&“É÷¶f)¥[UU%wìØQ)YðJP%H!‰EÂ<¾û~¾uåoøÍþ‡x©ãeÎ:ét^s7b¦ÏèzTŒmÛ³êë룣£=Çzo¶m· !*Å‚F–Hþîöf$.Q3BPrp¸€U¼~W éT4Î1¹½B¾ùÍorûí·óÉO~’¶¶6\×Ð_8ÖŸ”’žžžã H*•ºèù矧¥¥¥}Μ9³³Ùl¥nX(j$%3Ê~ùßyVgÕé§Pvð̾] µåH¥*k(¢¥¥…R©Äµ×^ûz[[Û†uëÖ­<‡ïú …ºƒ’}OÚnïÛ8A5©B·ÍŸ± ‰ÇãÜwß}~ÂÈ+4Ð5];ä {å£û÷ïŸq<íˆW-ï½@5\´0ä{áõΟóäO~LyDb•\Êi×…TU%N …9¢^Ã!/¼ðBn¼ñF¾õ­o¡ö©ÌÑ8¿¿\.SUUE*•Âë‹?j@b±˜Ü´iS¥’# Ï¡J©ž _Êï:A ¨Œî3Ø\öNR×õ)Ç×u/i¥ª*‹/¦³½ƒ×þ©\Ù  T(ẄBÒ§*¼c=ǵ‘´X,òéOšT*Å'?ùIzè!N_y:ÝÝÝÌ›7ßþö·¬\¹]×Éf³ìرïš?*@BcOfÛ6²ÚeÆ95h¬²Áë#?CµÃ$Z ’û+ÁϘÛ+†‡‡ÉªÇãñ–¹sçOOQq„M©TâÛßþ6MMM$ ~÷»ßù###L:•d2ÉÈȪª’L& …B”ËeÀq$ ±cÇfÏžÍ /¼à÷ÐŒŽŽú•ƒƒƒÄãq¿xðXŒw´!ž[ƒ wdß2ª¨¢F‚}‚‡˜={6¶m£ •Vu?gÝdý8¾+Eb(I®ßaÃ7“>ËF‡`0Ƚ÷ÞËç>÷9>ö±Ñßß7Û$•JaY¥RÉυȱÈð­ 4G ˆa8(¨ªBo§ÁÝ÷~•o<û/|áü/ÄùŸ­_¤ý79Œůì8á„hlldûöíÔ5UqÂÌF–OZ†êê@0G"óÒÐ?üáÿè:Š{”ãU´á]e{-¾úÝ{Iî³pM‰¢ Mñ5ŽB9&’H$¸ýöÛë&½C!Ä¢¦CžŸöVIDAT¦¦S¶CàU]*¨B–.;…†¶*–¯8)µM¬)©TmŒ ä…¯Óg̘áyˆL:Ý¥ùì4ÒMãÆ@£-B¹3‚ÞMUÕ£v@TUeáÂ…œtÒIlذ5£p&7º~¬æmbo°ÛQ2<<Üåºî\¯€ é¬0‘ˆ‚´uÞwÒ-<³ï‡Ø؆äÀï‹~ µªª*R,ãGòpS¦Ly_±X¼p¥”ñÎÎΊ²a2ÐS⫉o²§m˜;¶ý+±P5Äî‹¢XA¶¶¶úmib3w^ô#6öþ–¼øŸÌœQÇP9Ovw¥¶W×õc¢âƒÁ ßüæ7‰Åb455±cÇÎ=÷\Ö¬YÃÊ•+ikkCÁ¬Y³Èd2¼òÊ+ÇÆöZ–Õ /öòÕÓ/ käúm~3p¶"( 8¤»M]×}7ôIÄ[¯»îºó¥”¸H2U£4Màf¼ú+t"Ç© ç`m’Å$§7]ɳ[Ÿ!t| UéJ¤%¸vù‡øï ÿÊò؇XÙp#+,à;­_™Ðû~´€H)ñåž“ã¹Ù^ÇYww7@€ÚÚZœÓ±‹ @uu5¶m³ãkE¬œDh ªW¡¢i‡"㣫¤'“I\×%c™sE[­¨})ltM…¤‚q Jþ±á0cÞÔø H8L2˜ãÌE8ÿü øÑÎçJ°·'Åší¨Tjl…ztã“O”R®…B\sÍ5Äb1nݺEQسg_ô100à+ œ|òÉ|éK_¶m~øa80aŽG<gppÐF½Á4G›s]˱Q„Bº'Ì#ÿ;ú û¹ã·ÇìÆyt–Û0Ê!ýÐD7ßõôŠö…@@Dz 4%ˆªh´ !­B…¦¢Š£žÇU*•Zš››Ã…Bªª*Ÿ2¿þX± 05 +V¬`÷îÝüõ_ÿ5gœqB"‘J±—-‹ ÓÜÜÌàà o—ôA½¹U°zÕ¿òó=_'y šÚUÜrÆßó™ž÷W\\§¢r‚Á ?ÛÑu] ÓÄ*d×,æ‹¿ú"Ž´ÙËã” ‹ÌËä fÏ– *¹ŠË/¿ü„ßؼysÇÞ½{—®'˜N§+ĸäßPT¨4ן@ê£ûL¼X$Õ^‘પ*òùüýÇþüç?çøwß}7ëׯ÷ýý|>ïÓ%©TjBªTJIccã—E¹¥¯¯ïÀ‘Jˆƒƒ"U¦ÔMaÿ@‘¢Ãûyrï}ض…eUt©išƒAN=õTöîÝK"‘ Ncº&VÙÆ0*S‘v×næœkc8¹ÊE7ÄÉj8 k @ú3ƒG`CÐõJ=˜î* l6);†^HPN¹•º5Møµc6Ë>&âº.<ðÀ¡ñM™tÏ­¢ÂÛxcýæÌ™sQ&“©þ( óæÍ{®ëBQgxx8V.U&{ZŠM¾?À®]»Hä ¤l²‰,£‹ä-LK¢È €†aÐÜÜÌŽ;P”Jë´#M2\‹p-(ŽÆ´úÄgT±spu‘Édå6੼#I/WUU±zõjöìÙÃ}eTÇ!Vïbרþ˜/nó¼¿c‰CþûàÁƒÛ¶=SA1&9õòjô€ 0RÅûϸžgöýMÕÚn0¸µ„P„?íç°á´ÓNÛ¬ªªB ‘P[‚lᨰžØøÔ!Þˆvdô` Gæ°Més¯Ì›ìæš®ßjmIEUèÞoó•[¿ÂÖ~—KZnáŠ%äSÏ_€eZئsD€xiÙoûÛ$ n¾ùfž{î9¿r±½½eË–‡Ù¶mÛ¶mcéÒ¥lذá¿ûO’Ëå¶677†1S¡;´œW’¤; ýíVÑ¢œ’„Â!ßõ}§ö0@/—˶m°5²‹÷ž_‡+]ÃE±ƒHKÁÉ«ä^«Á)ª>±˜L&ýàÑ£G\×¥³³S¾ñÆâÑGeÛ¶mÇC:¨šÂ ÕK8˜ßÍHù ÿëÄÛ j!B¡ –cc™¾zGDjjj>qÞyç}£µµ•Gy„/ùËôõõ±wï^r¹œOÓ¬]»–™3gÒÓÓƒã8ŒŽŽŸÁ• !8餓èîêfãçÊH{Ì!é8„Bºÿr¼üwº¿<I ®ÒÙtÖ¤Ó2¹…§;¾Ç̪SØšú öÆ0¶u¨Šd|D¡P¸cÿþýÿ>iÒ¤‘‘‘ƵkײhÑ"6nÜXéÈR]’¿/Ó;u{6?@2—à ¿ûª¢Ò+H2&Ož|´iÓ^TÇqعsçuÉd²ç-lD­¢(š”’M›6qÑEùäæ[×þýû}‚sëÖ­ÄãñcIJ,n½õVÎ;ï< Ãà±ÇóAzžÖœ9sØ»w¯O x7¹pÚ´iÉÞÞ޷㊯’EÐ½ÏæÛuÿðã+øâÅß'n`t{'ƒÖ†áø€{Äá¸*I©ª*·Þz+Ÿÿüç¹ÿþûý <¶pÑŠ±ª(e, –`dÙVⱓFÂØõAܲŠ4¤©„‘âL/÷ýæ›o†ÞN]O[+ªJ¸J#‡:¦Ø%»¤ø6WQJ¥’ešfâ˜q‡Ù³g“L&9å”S…BœrÊ)D£Q¢Ñ(?ùÉO¨©©áÌ3Ï$N³nÝ:¶móž÷¼çáööö÷ööÞ4F66«ÓuÝêÞÞÞJ2`Z&ùlŒ;ïü=íYz†L!Ã+}oRè Ók=¶”ªª*r¹Ü„ÑBÚÚڸ馛ÈårTUUUf ܱ9íÀ6ÂÂ…lË„¦‰#“²›Ç*…ô #þñÙÐÐ0Ö‚µçY|ZŒ¡íeF÷YŒî6qí·u ÞwL€D"î¼óNÎ<óLî¹çŠÅâ„ì—iš¬]»Û®dô‚Á ÿïÞð.oŒŒ¬ºòÊ+?ïQô³(kg;B&Ã¸ÉØ’=ov2YYÀ¦•éÜÓ´åtº~Ž:‰ ý‘G㨗{†‡‡«„n¹\^.„¸¸\.ã(.¡Px¬âQ€*1M‡̼“îì.Nšµ˜ÿzî>ìºv'‚eZ È·âÀl)e7HaÑ¢Eú^ëeçËI)ub‘¯R½_^aÈ1«,Û¶ƒŠ¢ðÚk¯Uô¡dÂd!À¶„R1æ^.¢P(L,ì=“3nPrva§˜yFË5q%«ÄÞìÜ1÷Ò›,¥ôéþúúz‰CÒŸL&¿æûÉ“'LÓ´‹¥”°]ÿPË4Hì“T5Wóü›?Æ:ð1(gSVðXïOÉ@HoðØ)@ ^UUQ*•v_rÉ%í===X–%kkkÅ?ÿó?³xñbî½÷^öíÛÇâÅ‹yóÍ7iii¡¿¿Ÿt:Í”)SR²}ûvÒéô±ràÀ¿Ëår›Ô1~"r9ÿ–:ÊY»$)¥\Ò]™6î8 &MšäÑ+U±XlF>Ÿ?¸ãwJ8¢a%—Ïü'&×Õòó=ß V×H¢ùÉõ!_÷:ŽC:FJI8Ʋ,¼˜·óTMÓX½z5ù|žÿøÇ~­®\EhëîÚ|ª2‡ßž ¤ëHCeг˜¦½&¹úê«îUެY³fªWlÛ¶7×6ãº.“'Ofúôé”Ëef̘ÁºuëüdÞÎ;—eYÖÖ@ =5vþÀ|Kn]'¤ë Šb5Mò,ÿzÉ’%—½øâ‹_µ,ëä¾¾¾CcÞ( µW³ëÄ6¾±ùfN™‰ŸBÛàNòC®_ðÑ/wtt<4–ñ34M{åír)ï{ßû¨¯¯ç¶ÛnãÑGõSº®t)›µ»!ÝÊ{o O3e 0{˜Ã89ñ³T¼*z/ƹí¶Ûƒ”J%¤”|ÿûߟÐ"¥d÷îÝ´¶¶6‰yXí§®ëòÑ~”sÎ9‡ŽŽvîÜIgg§?ÛÃ4MN?ýtöïßÏž={˜={6~&±\.ëçž{î¿*BaX–ÓO cqS:;6î¥E=gÄ¥wx&m)ë¯û½à^qÀ‘˜O$ý“¥i¼òÊ+¬Y³†‘‘ŠÅ¢?O×+ ( “hm ’Ó¸ý’/ñ‹Öÿd$2‚=7Kb³Eêå*T­Ò²}ÖYg­ó)•J„ÕóNйJ9©P”?^Ö,‘J¥¢Ç)%×\s [¶laÕªU$ -ZÄöíÛihh ³³“šš.\H  ½½Ýé½€þþ~)©¾>/‹c„—fA‘HSÁNk¸YÔóµ8–‹æª.ñ§ÕÕÕM˜5ÿN‘t±XäœsÎñÁôôw]]ÿ½M=*{¿\‡ífø›ÿü@@EQ]"tÕU¼Ñ¸³ ÃÀ¶mª««+É'µK‚èòFÆ0œÈ“ MÓD6›}öí÷@t]çúë¯ç®»îâë_ÿ:ÝÝÝNÒ)‹tuu‘Ëåü)ªª’Íf©­­Åu]ÈÀÀ6o(Þ°IeeaR´Úhii™·÷&ê|ô£åþûï?¬2#Ã0r¶mw{u]Bˆéªª OÚý‰¨šI1,Ëb´lS}鵓tdIà Rì@"êWNzñG(âŸøÉd’íÛ·W•j-düóáýî]”J¥r"‘H@¼¹Š_øÂþègòù¼OÍK);±Ìg‡††*…ړ㨪J[[›?ËwñâÅcÔGÙÏqضí窪ªüù†‡H:~pÓ¦Mz?OŸ>ÝRUU;ñÄéîîöö^˜a${Fh^ÙR‰uëÖ¡iË—/§¡¡6¥} :^x!“'Oæ3Ÿù <ò/¿ü2—]v¿ÿýï™5kÃÃÃlذX,Æ©§žÊsÏ=wؤåa’J¥þ*›Í~£¦¦fQ>Ÿ÷ËûǪ·-¯ÈÎÅËuTUUhjjbæÌ™ L8¿jü1Bã‹“½áhG“ü’R²nÝ:†††X½zµKyRèyJ¶m“N§9묳ˆÅb$“I2™ÌøSØ0M“½{÷rÛm·122ÂŽ;p]—íÛ·ãº.ûöíóŸ½P(088xD,òa’L&]WW÷ÏË—/gõêÕtww³yófººº~â~êÔ©ôõõ‘N§™4i’Ï~ú%=ãb˲Èçó>M>þ@±ñ³sÇ^\j``àá±ÿ7r4eE†aøR›Ífýï?tßSK¦iúÕxÿæý½ã8ŒŒŒ°jÕ*_C¥›Êë1nƒ¾ñÆGÔBw$燈üã ríµ×bÛ6³gϦ¯¯Û¶©««CˆJ2¦½½b±H0ô‡${¶ÀÄ/óa¼$©ªJ  ¥¥Å›;5ÒÙÙù‰ñ1Îø ðpTîÅ_ÌE]Äð𰯲B¡ŸŠöÔ×x`üágÞÜɱ :L_rûv×–RvI)ûŽ7 |úӟ桇âg?û/¾øâ„ó8 à úe÷Þ‘žk쩯ñ§ÕŒ?éÍ{!Åbѯ2œ:u*étú(‡#ÃSYMMMìÞ½ÛW·žZ…÷gOZÇ×T™¦‰®ëÜqÇ\pÁüû¿ÿ»—_÷YkOÚ«ªªüA=RJvíÚ5ë¸Kˆç>~ðƒœÐS8Þvx“=ýYUUåŸÄãíJ#ò¤ÅóF<ŠÄ£«¥”€ËJ§Ó³6oÞŒeYùéÓ§w¬ZµªöSŸú7ß|3ù|Þïµ÷ÜZoßxš?“É0{ölÎ=÷\¢Ñ(çœs6là’K.aÍš5\yå•<ùä“,\¸ÚÚZTUå¹çž›0íúxò‹îîî튢¬~ï{ß‹¢(´··c†?ïÜÓ·5558Žã”BJ¥üõãU–WÑç}n¬Z]:Ž#lÛ¦¦¦†L&£# ~N£X,ºwÝuëׯ§ººš‘‘÷·gÕ2>Ñ–Ë娽{7 xçÿznïÖ­[±m›žž7’éˆìÝá|È;«Ж,Ybmݺ•;wÒÓÓÖ-[X±b?øÁ¸ð éìì$ 2þ|:;;yõÕWÉf³ ‹ÅürSï)¥ßŸFýQårùå1»´gdd䋇uâ‰'&n¼ñÆúK/½”Ï~ö³ P*•ü9í…B)S¦øœyãoUUeæÌ™d2ÿ´‡·sÞšæµm›7ß|SW §Ã˲xøá‡¹ì²ËxôÑGI&“¼ð H)dß¾}•³¥º»'d½Á/étš`0èOŽF£¾Ô†ÁìÙ³Éd2(в+“É\Ãq^º®óä“OòÔSO‘Ï癿9ûÓ B¡P&“!—ËMโÁ ^x!/¿ü2Þ¼u!ííí¯ œy<Á³GþÏsçÎÝ{íµ×λù曹üòËY¶l---<ù䓾jý‡øyä Ãà†n`Ó¦MŒŽŽú®°×“¢ëº G0D×uº»»—ø >ø wß}·ïº{A¯w—¾So¢­­í\ÇqöÔÕÕ%ŽôžŽÊÁ…B±ºººÏ…B!¸*/>½ïMzð¦<{™6ÏßO§ÓkzzzÞÏ_~E/^\ðúEt]géÒ¥ìÛ·ÏwÉÇ}õø±íÛ·Ï- íGs#Ç<8ª¹¹ùçMMM×Î\sή©©¡P([[[£ã¾þþþ¿4 Á–––mñx\äóùHccã RJ …Âa- ˜¦yŸëºV¹\þ¡¡¡Ñÿ+€±ï †B¡¥‡×xQ{8Nd2™]ü?²‚Á`m8þG×u#`d Hž|òÉÿó /HÞ]ï®w×»ëÝõîzw½»Þ]ÿ­ÿ!öp Á—…IEND®B`‚PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/kinetic.png0000644000076500000240000001517012613140041025273 0ustar philstaff00000000000000‰PNG  IHDRdiÌ|†ŠsRGB®ÎébKGDÿÿÿ ½§“ pHYsˆ&ˆ&¬‘tIMEÙ:ÅøIDATxÚí{tTõ½è?¿½gÏd’ yÂ#J(J¢ké õÔ.½Ú.[z´uõ®ïƒööœs[Ðz{¯K¯½´—Õz=*·Ö=çÔZ¡*xJQ¤ ¯È#òš$3™ÌìÇïþ1Ìf{‡ Lpå;k¯döþý~û÷û¾¿ßßc@eeebc0ê ªeYÚ*®ð…¦iªª €”˲Æ03B „@Q”‚”†QæõzÈÏÏgåÊ•c˜!Ø¿?{÷îM!ÈDÃ0*Ó š¦‰®ëcFÉðù|!2TÖø — RJúûûikkÃÜ0A^^S¦LAJ™A€eYô ÃeK„((@ ˆ&1Ë@õ›ñ;1ª¥‚¡H ‘Ÿ8‚¤"™ ^!„æT0]œrA£“ú9º2ÆgnÈgvmIvþ‰lÏ'v·ÕîÇ3'ݱO6A˲Ôd"X–•S @¦aàfB*LžÇŠ¥eäå)˜&H â‚4” (ëGÌ ƒ±‰ìÓ0z5dŸ†ò`…4¬°+¤¢èš-MñK^Ià9 ÂIÜ(x9²"ükRJT©R1ÉË¿TŠ´À0$B]qR `H4Ubo± ïÚ…rÀ@HbœÏÃh÷¡·ùð„ómNW©D &!®”Ë…„ÒdWÿ¡  ðå n»« ie©íçÂñ–üEг@=faöz°z½½*²Ï‹V‘!FHA‰zBÆÃâQ’¨Á$ĵB.¤ä¤~Cš(°X3·EÈ1®Ý†H¤ ¡à)’P½0–þ‰Ò£’6 뜟H›Ow¾­îFJ¢²–dbä‚ íFOŠTNö«]Nÿ%K””xýï Q£S¢HL«ƒX=^b=*ôz1 „5b!Ñjn%É ¿ÃNŒ¤|/,RG= ÀŠK©4@ y… cäMId–e@ןK]y9'HV*+—10ã†úø|£KW¥ËVÂc“ ú@ÑÀrä ’KïŠøxlû ˆk,ŒITBƲ¾Ã—¹’ ɵ¤d¶%‡P÷‚ZñzqÄH[Ý.Æ0ÃJ‹È¼¬'ä‚#„ˆÍTP²ª«¨ÐÕ®sêd5s¸aÆMT–N`zå§Pèìoãdð/´…>æxwŠPÞ•3 æ\B†‡ ·cz)ÉxûOÝô´Ã«?û¿ÌŸ>êqì§) Îôå×{ÿ–󡓨Šs¹DFÀ’V\òYçëä0¨@'<+ÙxWr]Ä,^}± -VÆGÏì`aÍBTEuõ’<ŠÆÔâ9l¸íenýÔ}–îX.Ôk°íOíL¶ê¸¿v-K>õUæŒÿ\Ö ’+œ †—aw{‚ôfkײàõì$à/åý_¾‰ßëÏ*Å’€ûkÿ#ÅyücÃÿÄ«úìçªGÐrd€æÃ=Üÿ÷CÍÄ™´tæðù÷³ ˆ•S­á¤®UY¹óóã®n2§*Š;rÐG¤ßäç>b#¢F„÷ÿ²Mø¹aÖ¼o aV|zM{iîüà"ATÁÉcTV”P3q¦M@)sÚWªjsîöæBå\¶#‡? Q^àßÞv¿c©s¡Sü·«éé ³õåNª'TñÞ/ÞÊôþÍgþ=½³Êþ [ôõ˜Ü¦e ‘twèH$××\çèÒ^ò“#|$.7/Kq2~¹ä‘öqº'(B¡ù`?åE,¹~‰£Q£±½@ZPP¨2sö8Þûp?ï7ÖgÔY³ð§XÄÐT…smaô˜Á¼OÍÉpŸ„\ê“k7+ëÀ0ÙËÝŒ¡È Q:t´ÅÐc°âæ¿r%Þ9ñO¨Â¯¡‰ “}œ<åþ•EsnJG±ø šâ£ÀWHGôcg‚XW IÐcñÁ–;?7\“LšO‰9?/ÎÇ£çÉÇ225tÄèã@Ç›©2â´ gØÕø ^Vn×ee€™F¼cùÞ€«„¸×«îw^‡ìUó.¦ „s÷D6âÑÌö&b‘\¬\ŒãA¤}w ˆ9xô¬›QWÒú| ºa:>ÓTïÅõsí W«–ê͵*d>d¤g C:ßTe)º…i™YaMñ]”„+ÈGåÉûˆg{³QÀŠöLàP¸SBêªÇaâê8>†?RWFB4³Uè†;Ú¶ÀÞzÌBUã;‘ÒiZÆ W -ÈZe¹Íf]I.+ÍŠ:»¯©>ÇzhšÇqºq1‹æJÕQÊöfmC’³µ#%!ˆš|jæ<ˆm \\f¯æqqb¹A ¹DGÖÙÞ\J‡›MrJoûüqus®û¼‹Êò9Öb1IžæuÎÄ‚ÓþÒ Ù—þ G¶wHa9C¨8˜®üEQèê R]>ÕQe é´Iâ©‘|gÓíŽïØ·‰A%‹”žÌñî’‹9Ù9 þü¸»ÚÚÙ6ˆñfm#þŽÂ¼€ A:“âSqEJ+×0j¹¬l p\œ Ç[[\ËTÏâHÇG))øp(VŸâX§-Ô’#ä1º¹,·U—=š4%åHÉþ£\›™Q2Ÿ¦öRTLÈ)_RêXçlß Û8Ž'ËM¥r˜VdmÔs‹Šb_‚ø.ÜôOi¹ŠÂ¡Í®ô¹ªåXÒL©ì4@QX8kã8N›âTÂaµ‹¦æ¡Èäû7i“AmH2Gb¡œ×'˜2ÍÇÁ£Í=ÛœÑa)% «©,œš‚ðó­1,Ë¢®ösn æ|èTÜ­V±hfrBAºE7tNŸî£7蜓–ÌéB¹¬%Ä-¹¢U'ér˜3 X°(€GÕø»ÿó¸+GÝ2õ.LËDQ½Aƒ£Í½,½qµÓk3ê¼Öø<м>…H4Ùªâá?×=ËÔèݬ¹þg¬ÿëgû7«N²¶! $æ&Ûë°:]8Çù…*S§°mß{m=JͤšŒrwÔ¬¤«ÿ,¿Ýù;ßèãËu·óÌø_åNt¢©sŸ½Î·¸ÔCO·AÓé&fM™•2Îi¥³Y÷µÙœêi$ þ”’2˜w•+ ‰E\ÜVàpÙ‹n( ?ûíS®¶äþùÿ‰_{ÃÏídóOóe8 o}!å}Skò@Â?í|mP[)Pû—Xu2âë²FÃåM†òJnÇ+Ûÿ̯þ´)a¾W¯bRIUÆ€‚Wý‚mï¦ÜŸTíãÆÅãxê¥gøõ–çmÔ»-àùÍÆQ̙ۛUú=—ûC†ìš’š¹~Šù/›þ;¾ÿî¶û]ƒºdÄ–Ζæ`ÛñßÅmGʘ$3fû™>ÓÏ–ÁŸ6näóso¤¼¨œ–îÜíkÁ£xð(^gÕ4L3†#‡ˆË°9RÂÜëó™\íãÑç·oü Ï®{Љ¥“\ëío}›×›Ÿål¨%ƒÉí ¦T’“ნ Kñ9÷Ál„5B«N”ló-#¹?$Àâ2ýµ2*®;Ç?ϲuwÓÚuÖ±üï>Á¹ðÉ!ì Öa©íÛ‚Û+Å™[Ä~ÉCÓ4‡þ§¤¿ #e¿½iK¸ç‹djæÈ0¡°fÎ.f÷žxcï6¾yGæ‰wŸ©XÄû§^¿DæIfª’i7#ýúûÜySŠ’½Ê², ]× ‡ÃW,¦QÝ@X©óò2ÜÇ’ñ`ï5ìå›w¬Œ§Þ“âŠO“æŽè‹1¤Ž1È*•ltkú„V´ßÀ0rGÃ0È8µÏQ¾c±±X,g6$ÙíMìëê5±Ê‡×«ðÏÜÖtŽ_0…¿»õ·ü×%¿ãÎO¯Æ°bC{GÆ*}q1S ¯-wÄrbšfN÷‡ä*?yËíÅ´wõñ÷/lpÔù^O%ùúŠs¶YQgE1BfNã·ˆ].cn¯·–%™Tí£ö³%üÍ›xkÿö¬íØ1‚€Ã/ö¢xs‹—Ëò²®&HHÄç—1wA€o<¶š—w½D{ïyB½èf”¨!¢‡éõr¥œ`¦o÷ š#6N{þIä&w“c¶,XxK€y ø}ócüùôFJ%ø}~LË$fFÇzÑï½Gó+œØÕÏ‘ KË ¿®Ah^…o%k#»ÌDà…UIR‚•˜1 #"9¶½Ÿ3;"¨šV‰w:·wx%äjR{ 5n¨ CÒsF§·Å ç´Nÿ½_¢÷[Äú,¤‰MŒáÂCb õ5/!ÙÆfLÚW4dÖé?iÆÃ9›ãEJô¨\eºÀé=C¥àPaÜy.è­0RdÅñBH$½çMB'8Þ$ÖgÙoôK{©•àñ‰äšG\“‹¹[uÝñ³ÜCeÉ{*-#®ß-]¢HzZ8ÇŸÔ ·˜`âªã•k²^(çfp®„(…Ý*ª.hÿKŒp›Iø”I´ÏBIô°…–q[£Ä9^õˆO¢Ë‘¡²²ö²ríêIþÊ¡_‡>±Ÿ Ã>²qˆEŒ{¤®Œ¡æ0ê9·!cpen¯Èr‹€ªªhš†eYöto.7Z^m^P.ë )¹è¦ã,Ëb``€;3;3ñãLjÅbƒAvïÞÍîÝ»Ñ4-Å‹pú›í³¡–Kô3Anå®ô]NSà±XÌ•9Ýî{²Ix%Ãg?ûY~ùË_R–v&I"v¹õÖ[éííåé§ŸæèÑ£O´>[–>ØÁ¾g[n°ÿݾ[–•rˆÛ`ýuë—ÇãÁëõâ÷ûéïï·g`³‘$åRú-q†Á~ô#^zé%›éËEX·n_ÿú×]äççSWWGâ-¯Æ -]3Üzë­Œ?>+5$¥DQ ÈËËs˲—•¨ôýïŸU«VÙ¯¯¯gõêÕlݺÕ.k?ÿùÏY³f àŽ;îàž{îqìŠ+øÎw¾ÃM7Ý4ê„P…iÓ¦ Znîܹlذ‡zhÈöÁçóáóù.Ï˺x´° lΜ9|ï{ßKyѹsçðù|L™2Å®÷ôÓOÓØØÈÚµk™7/~2Ü=÷ÜÃþýûiiiIéäÎ;‰F£;(’~øan¹å,ËÂãñ°gÏ}4uU{,ãÁäÞ{ïµUè²e˨¯¯ç‡?ü¡].‰°qãFjjjˆF£üøÇ?fÿþýïÕuë®»ŽGy„ÚÚZ,ËBUU6lØÀÿøG›XªªÚŽÃeIHBÇ'W”RÒÚÚJuu5;vì`ûöíÜwß},^¼8s{À…z³gÇ7Ätww³jÕ*òóóéììtý½Ýêêj–,YÂòåËyðÁY¾|9gΜᮻîÂãñ¸z-k×®å¶ÛncãÆ|å+_aóæÍÔÕÕ±dIêѳ^¯—M›6±yófÖ­[ÇÒ¥KY·n]†¤=üðÃÔ××S\\ÌÙ³Îk‹gÏžÍóÏ?OQQ+V¬ ¶¶–eË–Ù*.‡K91—ô²&L˜ñ< Ò××ÇÀÀ›7ofÙ²eÜu×]ƒú×%%%6ÒJKKQU•>úȵƒ“&M¢  €õëׇñz½ìÞ½€²²² ‚†Á‚ X¼x1øÃزe >ŸÏV1EEEެ®®àäÉ“ƒª¢©S§bš¦c9)%?øÁlõÜÙÙIaa!]]]œ8q"áŠ2t/+¹à¸qã2ž:t(¾Ñ²®Žh4:è‚ì$t¹išÔÖÆ÷×vttؼîºëèêêÂ4Í Ä&¤¨´ÒÒRÆGCCƒc6!Á gΜa×®]tttÐÐÐ@0ÄãñdCJÉĉñ3‚÷ìÙ“ñ<¹?‹-`÷îÝ1M“3fpâĉKzÉ{/+R¯¯¯Oi(‰‡íÁÜtÓMÞyç ÃpÜ»— bBÿçççÓÚÚꊀùó礨‘É“'Ûl GŽáµ×^ã½÷Þ#;r}ú{öìÙãjË Ã°›¦¦¦ŒrB¢Ñ¨­6]O¾KK͸Ù[åRé÷}ûöqäÈû^ÂÝM6ö«V­" òûßÿÞ±­Ó§OÓÔÔdk7ÉKÀœ9sl‚%Þ›@Ýrþüy[y½^T5~ºPyy9………™‡Ö˜&sçÎMA´Û4/X°€ÖÖVÇÕüªªÚÁí—¾ô%;o¥iªª¦HDâÙ`Fý’3†~¿Ÿï~÷»lݺUU9uê‘H„ŠŠ »ÃµµµLŸ>­[·²dÉ*++StðONŸ>í÷¼ñÆ|ãß`Íš5̘1ƒH$ÂÂ… Y¿~=»ví²Ýt]×m•æF¸AÓ´ê¼¼¼ÚDG§M›ÆÀÀ==ñß± ‡ÃtvvRWWGii)_øÂ˜5k–bX¸p!uuu;o#¥äù矧±±Ñ.WTTD__õõõôööft( ¥¤¾¾>ù¥¥¥tttðî»ïÚ*"S:ľ}û(++#ÐÐÐÀc=F___f¦(466Ò××GUUgÏžeûöí ¤”M¸Ë;vì ¥¥ÅÕùyå•W‡ÃL˜0h4ʯ~õ+öîÝkK‰®ë)Rªi¥¥¥ƒAº»»/¶<è÷û¿P\\¼2Añ/~ñ‹ƒÁŸÛ0 î¾ûnÖ¯_ŸuÒî7¿ù ;vì°;%¥Ä0 LÓLQÉilÓ4mNJ®§ëºy;¥Ç“÷D&rFB›ÛÝÒí±X̶}‰TMrû–e‹ÅRúã–~Åb)ïMØ]×m&9Û]SSÃñãÇSÒ1žlSÒ‡W_}•úúz6nÜÈôéÓ ¡eY´¶¶òä“OÒÙÙ™Q&‘>pݰ¢(x½™•¥#Ö5ÒMªŸÍÉxš¦¥DþN™ŸÏ—Õ®âd—7y¢j('ô iÆPÁÙ³gùò—¿Lmm-µµµLš4‰ŠŠ B¡ííí;vŒcÇŽ9º™ƒÍÔ9ý½Ô £[»C½¹å.5»è4WtÙqk(ÁáÍÍͶç”ó3¶> .…!Máf».kŒWN¸!g{Ç`x¥hÈqÈŒ,QÆ$dLBÆ`LB®!OÌUBÆǬY³Æ07L˜9tTYéS®h r –eF3zKˆ‹ûd Ã`Û¶mc¥XÄè@,]œÆ`”TB ŒyT£RÆw/&jšV!¥ôp-î%¾vÀBÄ€^EQ:TU=§iZPÓ´ˆÇã1ùÿúK ÀO~5IEND®B`‚PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/random.png0000644000076500000240000003517112613140041025130 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙºM IDATxÚí½yœ\U™ÿÿ>w©[ÕÕÝÕÝé-IwÒ! YYˆ@@F\fÁùƒßAç ã8ƒÈWt\Xd@Q‘MÙ! ÙC: MÖN§÷¥ºöí®ç÷ÇíºI5`ÀïÌózÕ«·êS÷žçœgù<Ÿç¹ðÑøh|4>ÆGã£ñÑøhüâòÍtÒI;§L™2QJ‰¤­ % HP$B¼sJ¥RxÉ’%_L§Óÿ5®Yû &­¯¯_”Ïç'ô®Ï󨩩ynpp0q¨®CUÕêB¡Øc2ós*£:NJÃK‡ðrþ÷nJÃM†ð<)¥ö×ÚDÈ×ÕÕÝõÙÏ~v6€'=Ü ‹°¡ ­±—­€Ûc;Ô0 üñcC&)¥´, Œ¸)>©$$«8öˆl]O"“¤®*BnØføwulÿQ±mÛ`g¾Ÿ…Wíí¿P`†(îŒbTUU/¦C6\×Ų, tð„ÃE3¾Ïs=·q뙿çGOþ‰­Kžñß7&Œ¿¦@”h^Ï4MLÓÄv]t]!7PÅ·?þ[Ξq1ŠaÜä B“ó˜% ˲0Mó ¢¥¥åà.Âó¤eYض‡$•19úð#éH¯@ Ÿ8ú“TUÅPBÇq0MÇqþªvO{êèÂcŽ9æ_Çñ$Uª¸¶ôE«H4]u;;;[MÓôw©çb–þíÌ;øéúk8«ùLQâœ4ë(îÞ~«/U …òàHoo/mmm«)l<‰$•NÖM9lÊ EQ@¤+†ËÜür¿„Ó~öq*BÓ9ùŽ“ÑU F(TÃÎ[hmmEJ‰ëºSC¡Ð‚÷².TWW¯éîî–ª@,Ëš{Øa‡—Høª¾¯®‹Ù u¬ÎH‘‹ÐÝ£bÛ¶¿K…‡kKfµÍ@ÙE;K¶˜ã¥Ýày¾Jª Þ#\__¿`Ú´ixžGQšh‡§¨ ‡è\á1®ºË2Ñ„Êöñ[9áìJ\×ÃÑq£XÃP“‡R(J¨ª@Ó4r¹®ëÊ“N:éúÚÚÚëé¢Wyà(`Ù¿ÀöÉ@ÍíÞ½›µk×F€Ò‡nCJ¥¦i’sKDŽ-¢V+Dªs03‡fÄZ'Ðɞ桪*©\EQQÛ3©Ò+ñ$X¦‰ÐÞ°Ž™çy”J%ð$z7 Ö"F<ƒ½Ç²-“›¾Ì7OzˆjP2Kd2†††bSìuäÂ8¦‡išX¦…¢KÇenô\¾vâ‰DBÔ´TR}RÏð7fù>ÿjF½¼ƒ,ËB˜ ÅŠž'ùíòßð¥#¿‰ë:¤ÓiR©ùBdzIÖ.cëîÝôä6Cm??Z{9édŽT:M:&“É „ø³ÇdüøñA¼à Ò!Ñßœs>«ŸAz¾ ´l=¬#¬½Å´÷¯à°úy4Õ4¡ ×uq'Ø‘*ªŠà÷¶m#tA…ÞÀ•Ÿø&?|ö\zì­\³èÚgฎã¿<ÏCQ”ߨ—OˆmÛ8Ø¡Ö#¸ž+]’ÅaE ¼×q‘ЇkIžëº…ÒV—†ߥ1´±ˆÑA‚eÚTF«nž;gîèÃR©Ôë===w—288è{f£.«oÊpþÏc0‘Cš$|Úe­ÚÁå\Ãh6Áåw_Áš7^Ãt‹¾]Ùïdj†ÂöŸ»TÇr`úfB_QÅêW“̽vÕ‘_úÑWq¥‹¡FÐ#BøTUÕCâ.kï÷„X–…-4Ec0¿—3b 艙$ ~ü¡iþÔu•¥×bgdÚ¶Í¢E‹h˜m¢ …Nm/G,Ò±û*ζ"Ètè]A-[¶Ü]VY“'O&‰ „ Ï¡îü!&Ê*œþ ¬Þ Üx侉jªÆ±wï^"TQnÄsq'ðîÔœG}c=ãêÆ¡( ; ýÌü\‘XLÇMǰz#8ƒ5XýaEª »»û¯+R©„­I¤ c×l'1ìpÒÇŽäW›n /ÙÇYgÅ¥—^ÊòåËiooghh×uq]—ÊqJÊ)=9K¨9Š×D;J8%Uh =ÐècOûÝ|ùûrì …-ÖæÕ6S² ÔÌ Q˜Ý H„"½ªšâŽ0!æºWÏ#[Ê`ÙV r*„‚;6§‚¾Ò('7ÖQ,º9ã8¶Ö¬@Îu¨ä6Eɬ©!QÏó>xŒ?žŽ¢8Éd’T*…­y”¬ŽÜõÆ×ùÆ7#Ã&–[àúë¯gÙ²e|þóŸG×u"‘;vì ²²’ööv_ ¶íÚšJjHå>Í`z€û6]ÏâyÃó]÷޹żC eáZ–…"Š¢`Ù6_=ügdDšá‘uX‘ø9I|{ ¥Ä“ÝÛHì´ÉÆK8Õû<¨P5&„%Ó䂿ï1ª·sÍ‚{xeóËd"´³ Û¶H4MömTU}ÏÎÉ{ÈÀÀmmmÿ»ººúh?Œ&Fç«ªŠ¢(èRÁÉHr.vŸàëÿòϤwIJ£‚¯|å+|ûÛßæW¿úÛ·oGJI"‘ ‹ÑÙÙI}}½K^ÌšÁ§ÙÓ5Ê9ãÿ ;–5CϲÓ,½«@Ê'ÄqJ¥ sg–#Ï›Íe¿½œûþvÃu#x#<äüÓûÍcåwS¨º@ Åb‘b±@•ÂuUÿÔ) BHF†JœýéOråÓ7pæÔ‹™Þ0”n°ÁÝŽiú…”þëC1êãÆû´iÓŽp¥Çú=o  •‰'bÛ6ég-RÒCJ”a4@Ó-úúú¸ôÒKßuÎ\.G,ó]gá „B¥Qƒåq=—º†]©­d¬–¥¡hâQ%8%¢¨¸.hªŠþÂ8ŽÃêžßã¹.–å®òœù³éèè ‹ªÀñ”}§NQÀ؇~ EAA¶”eÃÈ’`.ľàð`‘†¿H žç Ó4‘Rò–ÙKí—㚎çœsÎæä“Oæ§?ý)[·neþüù¬\¹’™3g²fÍâñ8áp˜|>윌Rbü…úÄTŠÙœï(Š¢2œëa~t.Âd´ÐÏ„ÈD„X¦…pßyBö45EÈe¤ë«&›°R…ëf0M· ‹€„I“&¡i®ëó*$9'X¾Ê C}}„Í;w -EQHãV}4;ܰ,_e•mLJ")å>ýëù®¤‚šš"‘Hà‡B!Ž:ê(öîÝËÑGͺuë0 ƒššÒé4BR†Ç´OE¯žÆ–Õë|ðQ÷PD˜Ac9õ‹hš?{Öÿç†þ‘ªp-%«å]"„/”J%”1,cÂÄj~òÊ·¸ëÂeÜôÚÅH3BcM3¶ÓE©dùªÅŒ?]bUáfuœ¤¶‚Pý5â$‚âTºTU†¹sÝÿæ§Ÿ[Êm¸†™ZôVl×"Ÿ/€ð¢(ʇvB(ŸOx(B¡½½ÑÑ8ÃÃà :::]êºn°kJ¥†aøI(Ý£Â0Ø4ô:‰DŽb±ˆ’­F4µ¿»˜»¿ò[2Þ uüˆRÊctdÍPÊjÊÛ_ Åb‘T*…@P0%%ˤË{…_/¿‡†Ú ¬‹/ÅKº7&ɧ}÷VàuAýñ½þB†$‰Wc;¢AX,ýù«<,ׂª8_ûíç9rÆ R¹a’ñ8;–$Éçý9…†ñá ½åˆ@êÔG<GQ*++ÿdÙßßO2™DQr¡dW­Ï“VUTUEC‚EPiH.úæ§í°Ií. Q¡ó†qñ„ öô÷÷ß*„@›C FÁEº’d<¼ý†7[˜i1/hšæg=—Ó&ü#b¢CzXðJò6Fl_õ¹®‹¢(hš†¢(DÓ.é^‡þ &‰›x~ïúý\[®ëH)ƒ ðPœõϽ¡¡¡áRUU'º®KVµ˜ÿé(gý”flâ²Ï\‡Ñ¢0þ8A2º‡î5ò…<…B+›ÍZ¶m«Žã)%ňÇìW’íµ)ìшD"B£Ø]/š ¬´ÉtJœ¬¾ªªZNÅ"„`âĉ$‰d8V3™ÌÎX,v|±XTš›› %%{_²ÝìRè\MSǼ%>!š0ÈÝÎÿ:ö{D* »Ù½¹—\Ÿ‡ã8 ÆÏUW]Eºo„äF g(DÈ­ R¡¢¢EQ‡Ã hñxüQUU+ Þ.`¢çyä ‡9§V“t¹îœ;o±1õ çœÊžÄVÖúØ–¢(LŸ2Suøl=‘JˆR©D©T¢Ê2Èt¹ô¯Ë3gÖ[dêâjΞq1ÙBŽç:ï"±Ý R,yùå—‘RrÒÉ'‘/ä™5{UUUÌ›7€sÎ9‡éÓ§s‹E¶mÛ6ç/ÆA‹Žã0::Êèè(éL†¢U¤ÙÅ÷Ÿú.š®Uºyê­»éëH’L&H$¤SÔÓv#>¾)q '°~ýz>vÌÑÄìñThÕL™2…d2Iss3ãǧ¶¶–©S§2}útEaòäÉhšF8¦±±1ØêÌ8BTTTàyÄãq&Mš„ëºL˜0††fΜÀ4uuuœ~úé TE¡R¯ÅvM,ϤÚh¼µ²ÚêêêÂu]†‡‡ñ<ÚÚZòù<š¦‘L&éëëÃqš››)•JÁIþPh@3gÎ\cšæqŠ¢ªtøÔ71 Aj·Ãð“ø[ùa÷lGU5ιâTôy{xñ;{øÉ ?#Nsï½÷RSSCgg'®ërì±Ç’L&éïïœÏóÞñ*»¦••• ezPLƒ3f2<£^ÍÍ͉$o.â”äkD"Ñ0 5¸8ÏóP|æØ¿'Þ´‰WBwòýïŸo~ó›d2"‘¶mSUUE{{»ó=ÊK/½Ô J¶ÌA¹½“'O¦X,2sæLEaÚ´iTVVRUUÅSO=âL&ÃÆ …BºˆPtòìÝ5⻑Ñh€•íƒmÛHÍcâ‘Õ¼5ø*?¸àL%Å<»†Å'ŸMŸÚNïóiÔO¦+Ãå–eG0êZæ×pÆg°Tù!Ç·žÈP¤‹áè^ºª< =LCCÃCt=BÄUcæSxFX*S•Š]…Ä%K/M5Í<¿úUv*ñÆÔÂ÷üªªªÈf³‡”ºôg‰D¸é¦›8÷ÜsùÞ÷¾G©T trY?÷öö`¡°ì­¥Ì=þDÖ¶uã †‰F£¤ÓéÒµ‰DÂÆBË SÑXâ{¸†?óŒJ‡_nüâ&©tEضÄe¾•”àx&¹b+k ªªSj£dnà¶ßA}}=«V­bãÆ„Ãazzzhll¤««‹Ù³gcY6l ¢¢‚¾® TUÇq®t‰èa¤çáØ¦å“ÊÁî‡Nr]W¯¬¬déÒ¥Á”^90öO);¶ÇÚÄ#t÷EH eI§ TUUQWW¤Pyž‡‚D Š —Á[9ëË'‘ëõ°ó+㢅öÅ#åÍP*•žÄq<"Q•kŸý,7žù0¿ØrƒúNô¤„qãÆ‘ÍfimmeݺuÌŸ?Ïó˜={6CCCäóyÚÚÚ˜5k<ðBQp4?úÿÛ£ÿ‰¼ìG¢rÆ”`«s'Ö˜@U†ð={YUUU <Ï«y›gQÛÚÚúP.—CHp§Ž;·šüK~Ø¥0ä©Ò)¥=’»l<é2yòdt]'—ËaÛ6ÃÃÄB!æÍ›G_o–mã™rŒí; ®ë :£Ñ(¥R‰|>ï_¼sšào¾Ñ„ëBKø(Æ7ײz×Käú]º Ñ2±•c=–^x!ˆ¦-ËÂ0|ÛVÎeøü]ð8íÎJòC?ÿüRnZñeºÒo"ñØüÓÉNÔÖÖ²sçÎæd29ô¡ ä݆®ëMóçÏL¥RÔÔÔËfq,?_‚ŠÏ²9Ûjiia``Ïó@¦irß}÷ÑÒÒ‚¢(<ùä“ìÞ½×uol„ tvv’L&Ñ4t:M"‘À4Í@uy‚“ÿ±–ø›T§Íè6 3å¡h‚ÆñõA*ùÏy¯åµÈ¥ õNIR¡Ö¡ªY3IºÇaû9<Ç7ÕÕÕäóù3Ãáðh*•2{zz¶þU¹½B}ôQ¤”¬\¹’Ý»wÓÛÛëgÇ^ªªbD"t]?€¡1}út^ýu>ûÙÏÒÚÚJ$¡¿¿Ÿ3fÐÞÞŽa444ÍfI¥Rèºî£»Š‚a|ñ‹_äå—_¦ç¡±9]—q1·Ò·eû{d±XŒíÛ·ŸR*•ö¼íVŽ>üðßÈår -Z„²¼’Pðl´: -5‘ '¾c^PU•ŽŽŽ===3ÿj'DÓ´¦£>zð–[n¡©© Ã0¸á†hhh@UU,XÀ]wÝEUUMMM„Ãa^xá… Ã×ÐÐÀÞ½{™>}:Gy$ƒƒƒ$“É á4V€®ë‹EÇ!‰dEQxóÍ7Ù¼y36l@Ó4V®\ÉäÉ“Éf³L™2…b±Èúõë‘R244Ä[o½5}tttWù>¯- ÇÔÖÖ^X¾öl6DÞƒÅa*#>¬.í1æ¾#˜4iUÕU>‰[DZ„]cê\Û´iÓ}ñxü;ê Q…G}”ã?žgŸ}–\.¨“ÎÎÎ gÇñV\Óàº.kÖ¬aõêÕïð6ʼ߲jÛ?ÅYUUE©Tâ¿ø÷Þ{/¶mSSSCcc#/¼ð­­­äóy²Ù,žç‘N§Éf³Äb1RÉU•ÕK.»ì2b±˜Oíh!o½õVÞÝÞ7nÜ»²ã‰¶m‹½ö³?i"£ ª¦à¥t¬»/L©Ó?¡Ò…Úyaê”(ºqœœÊðCï¸çT Š¢¬¹ð §½Êd(âÅ_|Â4Í'êëëo½é¦›šÎ:ë,V­Z¨§r£( ½½½àPÑh”úúzÆ5×ü!ª#!^¹m7±X,`ÌØ?•üv:ªmÛXÒFAAÏMäæóîá…Ý¿æùÑÇ™<¿ž¾Ø ÙíZpj?1á\®8õj¾ðÓÓø§ó¯äÑU÷9£¿”èpÐñ<¯ªL±u3L¼ M¤BKÁ³Ü”†5`à ¸!üª¨P(Ô>00ðë1(ÿ?êëëW®\)öct]ÿ“à]>—gC~g̪@Õ-ÞX¦ÐU×–8qƒÔÒÚà^{íµ¯æóùGÞ¶¡Ü¦¦¦üÛç7MÇvðT?™õ™é×ð_«ÿ/ÌúWf-üz´ÄÍ»¯ÞG÷¯t?ˆölŒOÍþ2m±#p\Ç'~ äC9!epϱ²JžÊjA6grÎϨÙÍ›C«©šæQÍ0ôp=B j>‚«‹Çã Û¶§š¦@1å,[RIÑ8QÇMëxYi©d )Œ°Á¸ºq@EÌ3¾ÀâÅgc‘ã{Oý;ógOf«³5˜g,¿]ô^ͱ:G±nh;Ÿ=ùBôÉmФ‘ïõdÃá0®ë¢i'NÄu]ÒNY¹a¡8xy…íw×`ˆ ?Jð •*rþñqÛÚËøüôÿàßß­Ò¾õª`ÁþH­´´´Œ”Užê¢i*ž)RÐ È=7{×£+?õnCAÅ™»›I³šö•¼¡Ðiå°æÃXß»—£‰Ä²ì(´Š@ÊÇÛ aÍ]ÄÊ¡‡éªÀpê±½Háˆåœó©ãǸ§|Áå‹.Óøm×&¤k$]~pÁãtfÖñàÆÿDzÂ'HÀ«$‰F*ð„C¶gÝÎ T´ô£)¡}BïNé4***ˆD"HÏ£G3ÿ"kán4„3¡ÔmNT‘ŠÂ„0ó§ŸÄ&÷ ,kß¾:¥íR&Oðüð*VtÙPæhÝß_rBÚ•  eYx®c¥ÌQ¦’Qrrcï3ƒr…Ã?üÃ0¾Zž#‹q×]w1~üø}u&¶ƒ‚¯ómÖ =ÎÎmf©Ÿ¥Ò¨æAB¬Æ`$5Jµ^ÏøºF\ÏÆvl„TÂÛ£rJ)Çj>lò" )• fÿ/ª›C³ÓŒ;7Nx~"˜Ëq\–t݇c{$“I’É$¥‚É£›î”9B•’ÎâZ†wç‚¿QžœÕ†¸®‹‚‹íàäLJê¼Öõ4G6~—ÅsXVEúèì˜Wæ•wïu×]G<§¥¥…B¡àŸa£H•Ú¦òÚàJF %v u ðZ H*+"<²å‡|yÁwèÌ­æÍüóœ9[îcþ1·³±KWâ…|¤àÆ3æ©­?纅°dãÌê,Yÿ*¦ésŒMÿj‹=#©  Çqm’›,nøú­(Ò ßïaçu&ޝ!Q5…šššÏÏ;÷øý?ppîîîçr9ë ¤P(àØ6fÄÃÃe³õ0‡õM¥®Q¡m–Ê®ºË ‘ËåQtaÊÁ\ÙY¹r%ŸùÌg@Ïó¯LêëèèPé Éçó~N Bb»šªòxçw9¢t –ma¥¶ý>IɶÎö¢<–/_ÎóÏ?Ïàà ---~µ’ê§nï[vÿrÁµ”ÄçOþ<“ ÇIá8“&MÂH$X{c·4Î h„ÂûòùŠ^ˆt%Òó‘éT!ÎìÚS˜2q/®÷8¾ùS¼áþ80àáp˜hE”¦º 4ÖJÞܾ…¶¶¶}ùWÁsB|ï“OòÒ–pª÷’Øa“ý€_gyAëƒ!Ó½'´µµqá…²~ýzzñ¬ nÈAê+b 'ÏóÈårÁÏ€3©œ[†Ub±Ø‹®ë~ÒÏ:z(†¿kÛG~GÇý¯0ØSÀ*Hî¼óN&OžÌðð0K–,Á4M\×¥P(Éd˜0a{öìadd„ææfº»»ÿh*:ŸÏ#]Ëö ß}õb®?õÚt ;´eôwVâØ.¹\¡œf Ç¡ù²Q"ºŽ¼gá4 ¨Š‚"!k±hŒ½t÷^üêOª#×¾…k–©|pùõ¯Í«¯¾Ê-·Ü²eËØ¸q#Bº»»™4i“'OfõêÕtttpì±Ç²qãFŠÅ"ªª.8ñÄe@’ö<4]GH„ß”§ý[P¡Ú¨z-Ž¢ø©S§òÈ#_"(íIDATPWWGss3Üÿý Âá0±X¬\8ŠçymµµµÛ¨v]7°!¶ Ž´Q+m~°ú+´ÕÌ ”¶É'è|-E±è«—H8Œ]mQSÆÎ‡i¬™ˆ=`ãIv¥@é)8ž Ýe÷À.ºÓÛpl°mlˆr¥Õ!ÈO<Ái§Æž={¶}£«i[·nŲ,’Éd@°âòĉ}o£”¢nñ0&†q²ª°û"8a¬¾eºÌÁ*lÉsã7rÆgðúë¯ãy»ví¶mt]g„  t]ÀÃææffΜùà;û“ý¶lÙ‚¦iHE¢ÇaïËEF¶š¤ºFl; #Q¶{ªêu–Š.·œù;þþ©ó(9.Ÿl!<@ ôˆCH5hŒN"YBQðlÇ Ô_™”}HmÈ=÷ÜÃC=D.—{‡~عsgð»5kÖP]]ü½ŒõŒ”R9¥‚bÉföäãØS³ gvÏ“˜{*}1†PeÌŠF£A>_á—ÒÙ6“'Oƶm;Ô=s¡† Òx%'Âê7p† œ±Î7Çs —^z)÷ýê>ä(Huº)^`LÓ$2†£i*¿æ±®ª–‚•Ãqüf9¥R E Bl-Áÿðùå¥OpÓëax1ª#1L³—RÉ ìéÁï\Üeš¦aYVÍ>†â0ÅÛKβÙì¹ ÿ÷ž'9.t9- gLº„_¼þŸÌ˜Ú̪=«°-¡ù5)u1B^¥¯ÓI®eüøñD£Q²ÙlÐm!WY@Ó«‰)“X8÷^Úý0Î81/AüÕ(ù-~±ÍwÜÁŠ+øÁþ€_ýêWÌ‘GÐÝÝͬY³xá…˜4i–e¡i¡PˆT25Vk(ö«Iq°lË/ƒp¡²Âöt:Ì'YÝsUU æw“t‰÷%± ûR¾C9=hŒŒŒœT,rÎ9ç\}Ûm·‘Ífyøá‡ÙµkŠ¢L&‰D"(ŠÂèèhõK¥R”J¥Zp¥G©èqñyÏM+þ­fS«ŽavC++å*LËD¸>0ÙtA–ª‰ìw0gØ ¨H¶mãJßIß<å^~ôò¿òïg<Äêo²Éù5Cv¶í/æÓO?Í‚ hoogçÎÁ% J¥‰D"H; Ê l\i2š¥Ú¨#í$Æ ”¼ 0â‘v¹õÙIìpIu: ýº÷² ¶ ç=©,!„¾páBÖ­[Ç9çœÃá‡N>ŸÇó5÷ˆ†+XÖù×j7ÓPWƒÕoá8.¦éC3wÞy'wÜqǽ¿ÑÑÑ~ŽUå\¢:ÿç÷Ÿ¥64‰íÅ^¢Ñ(†aÐÔÔDjsŠ-›Ý1·ÛïhTó Ö– ˜¹@¤”üö·¿¥œ`êèè ‹²BP(p]7VY?¸aHXçå Ë QMm´žLgUœ­r¦UBñ| ³:},çýE^Z½ŽqÒãôÙ§ð}ëvª±”7Va¨(‚m¦ÀöŠc'É%•Jù週`PJé¯ù|¢°¥`gQ„Škú —N¥pZL§„õØ8´×466r÷Ýwãy«W¯fÕªU´¶¶²fÍŽ<òH6mò7W]]ù|žÞÞÞƒæÿ¾W¬XÕ4gžyF !„"”€=èJŸ¯¤)!??®†p‡ŠŠ ¤”Aé±¥ØhºàÁíÿÎ-g?ÎÚá'5÷Ó“ß‚íYòÝŽ›¾€îÔvÞì_ǧVŒ±²3´øP¤@"¨­‘Îg8÷ˆ Q —+1µö(Ú?àºÒ÷ò\A©&Á´Ø\J¥nŠ_4™V±‹Ïø5j+7=~ Ï^¿_à‘¢ÎÀ&™^‡ÔžºZ]Îí0wî\ªªªÈårttt ë:±X )%ÉdÓ4ikkcÛ¶mŒÊRåÑ7ÞxcÚ¬Y³N+ XÒEŸž§®ª–³ç~Ž’i±tûœ9û–îþ-éõa …Bˆ`‡ä…‡íZ„ª<þí÷±xþÙdó)ÖÇW²óå,Ù‚ìô’iâX*®ã‘+¥ðÍ•xhšæÏ-ý¸áqÍÓçóÃóžâÆ×/$SŠ£éVÉ"—Û—+™F>Ÿ÷S·ØØ¦Ë¬ÆE<Ùþ3S?Á1 ‹yF®¦¾¡žã?ž­[¶ÿƒƒå˜¸™ Ñjd2É×¾ö5Z[[éììÜW.'%;vì?•J,™?éüEÉd2/UUUÜÚÚzZ2™¤ˆEõÉ:Ç4žÉÜcšY·±“ïænŽ›y CÏ,cGO᪤R©À€FJ.Ù!‡Á£Ûö°ú–»ƒ^UM¢™¦¹û>ï÷?cÍZûx € ÇS,Éf³äóy„8¦ð…\mqãkG$\AAÕHvÚt®L!€àǸêqô÷÷ûìyÕ«øòñ2×óH¨ªÆªU«xñÅùÒ—¾Ä²e˨¨¨àþûï§­­®®®À=®©©9¨µ‹Çã HUÕiåöL¶ðo¨RaºEL§ÄP¦—¾l,€ëqöùÞ×^{-K–,¡ç¾®kôJ+(ÝYèçˆÏ8T„5¤©b'tÜ«?Œ—Õš ‚Æl6ëïL×#Ü-Øö»é½N!]8E‰” ¨jP¸g„"lêZEµlö󆇮ìÝÈñGŸÀxíp6í^p½ÚÚÚèîîö?†Ø pà 70::Ê“O>T(çr¹à$”Iåµµµåb¤Ñááá…foo”ò°€¨¸¨Bc´8@St.5i²V] £ `[&Ò8ŽÃ3Ï<Ãèè('Ÿ|2¿ÿýï,jÙ²eÁï-ÅY4~…¬ÇqÓ?ΦÁe83rT©’ìæ 2¯Wû†Xñ‹z/^ÌìÙ³yiÉKx ŒBXš…ˆù ¨ë:™LÇqÐt…d·ƒ^_ô“U8xžÁ@èUÂÅÓÉ×ö°Ûz]5¸è¢‹˜={vÐåÇó<†††˜:u*ßøÆ7B …Þ5S.2Íd2ÔÔÔP(œÑÑÑíQN ˜©~nµP¹¶Êë8bñ \óä´Ml–eâa9o¾ù&d2™rÓd†‡‡ðÀ„”l“ ZneÄÛÀ?/¸›—Ú—Žl¥ÝÞô) äòË/'—ËqÚi§qûí·s‰ èîîæÈ#äÑGeòäÉ~{ÁTŠT*Åàà ••Q2™ ¦iRðü2O•üôâªS¿í”0M×TK___ j5MÃ0 zzzš@Õüf93C¥QíWiEMì0梂D"áç4IÉŠa«påoÏæÑ¯lD‹XÜ·éÛx.ć’APtë­·¾#ß½?݇F`x ÄÙçžÆ•Ï\Ïâ3©v¤‘ÞΠ·H¹Ž¼»»›O<‘ßüæ7µÜL@J´÷ÐuݬÇ>¯l„+Š¥¸GÏ®ñ­ÿðݯûù{FFFp÷ËŤ ‚ø” ÇžYůþv%gÞ9…g®XÁæÎžê½‘­2ºÉ7Þ†a°}ûv?8”XQ4O¢ê×ñ`TrÊ¥‡“ëò°ò3ã¥b±(˵êo®bß2|zÿ¿ÛŽÍ®ìÆ1Ö¼°‘Eá[ßúÑh4 Á•çß¼ys€ìÿ™åúÃ0¸úê«Y¾|9ƒ/âz!Ǧ©Qîkí7¦¦Ê½|ËÁ­"Rjêtâ™®8éFú³»I¤8~âÙ¼aÿœ2…«lSÞ éá} DÁ´iÓH¥R ÜkÒcšEâçmýÀ$¤J¤"ˤi100°lddä”·Ï5gΜ¸išã„`@MM˜=}}xŽ‚¦èdÍ$M‘6vºqLÓºïضM4 Ò¶û{re¸û€“è‚eúÄí«®º !>ø ßþö·éêêbæÌ™ŒŒŒ`Û6MMM¼òÊ+„B!ÆϺuë°mÛÇæ<°,p¥Íµ/žÇÿ=õ)îÝüÏô¤ÞBK¨” &™ŒyÀ&x/lÆ÷cÔ9òÈ#¹ì²Ë8âˆ#¸ùæ›éì줦¦†‘‘tÝo.988ˆ®ëhšÆàà étÚûc‰£R©äïÈ*ɸq•ühÙ¿p×ß-ã—o\Ï›©-1i®7Ƴ!S§N âUUY±bÍÍÍïêë«!ÍMÒ·²H!é°k×.®¼òJöîÝK±X¤±±‘ÊÊJt]gÙ²eÔÕÕÑÚÚJOOOPN],ƒ¸ÇI ’ý~1é¿>y>F˜lÎ%ÝcÒ¹"‹ª¨lš±Í˜4i’ÝÝÝí²r„ÚÚÚ5MMMÇ,§¶<\×¥¿¿ÆÈÈÈÎý?}úôx©T§( Ã\þñ[±,—šÂ±5g KwÿMÓXõƒ©._TVT±è–*†îoD:¾ZX»v-Ñh”p80ïËi]ǵ1¢!Ü’ š ìÏRùSÒæææýªzd³ùc›µ§§‡mÛ¶!„ ²²2(Ž-o¾µk×~)™L>pHOˆa̘1€~3Áä³óDÂÂ4°‡B8ÃaœáYF"î½÷Þô»MY&—…sPÊx m±èØó Ïß¹ÏØy×ôñ¾¼¹Àv¤íëú9sæÐÚÚJ,cÛ¶mŒŽŽÒÔÔÄÐÐýýýx¦¯ºLÓ èG ǔز„BË-¡«HMÕ(•Š !¬,måœËb(Ràš€¥û×6`PÚ]—õ¯­P(P[[TGŒŠ ΊF£Öãz_)ç´£Zœù-a2Ù4íwXL¬™‚ëeŠÀrt] M D‚³Î\†á)xއkš•É¿˜Jd #Ø %ÓôÛ|Û縘¼™ è¡#NšŠP3«°pÊùÔNш•¡öì*O‰ݱË^ÐÈÈápEQ˜3g†a0iÒ$lÛ:Dœx≤Óé1WR9 M¹ëºAËðr³œx<Ô=vttðì³Ï¢ªjТP,b;(6w´_Æp¶‰$?â²þÞ8®·¯ëµ¢(Œ ˜ÄjB(ªKD¯¤¦²†x®/H–•‰]]]~sNUAºÞ4×?ç¿/··¬:~ Uö*öµÿ¶qE|zÒ7ÉÈ]\¿è1]ý Í“tžXq_p“Ñh”+¯¼’É“'Óßßëº,]ºÏóhooÇqœ@•Ëfñ‹kùI P(D]]BjkkßvÁc$E¥ÐžçQQéZR ×íbe=ÖVâÁ³%Š*p w_[Ct]Áã5ƒÿô ¸®‡iúü3×q¨m®'™Š™„*UÒ¶ß7ò`JÞW¤^^xß0ÀñlJ¦‰¦èû ` O Z«gð›=¿ -t"õ‘ %ƒôR*•d(ûGïR!\×EÚ`{Þ˜C¨‚–cc:’Ñ‘rŒe_ÎLæóùuÖ××ÿXÓ4¿|Çá +À®¢2WEuu5—\r Ë—/gxpÅÉá†\<ÍúäQÞxÊXCœ©ÓkØÑµ—Óû;Þ^M2Qdvà ¼åüËò³†…|ù0?yêûüÍ'NågýÄÏ‚ª|0'DJ©J)e©Tç¹TDþùá‹‘žÀ¶}B¶§¹$ªâ³‘Tœ\e nÅo¼ñ•b±øàE£Ñë§M›öÍd2‰£H¦¥’Ö–0vAb=R6™n‡%ÿl^ûس¦D,CÓ´]ù|þΖ––—yXnµ íÔ(ZXòÒú~~öý_±wï^n¿ývn¸át]§¾¾žb±ÈîÝ»Y´hëÖ­cýúõär9ĘG§ë*ßyõ Ü~Á |Í—ÈZ ]Ïšd³>êëX.#r3NÝV–íN!]I±TD(>ò d×®]ŸjiiH§Ó~ýqÓ‰âÕîa´%"k|D ¤„èJw0¿þ4Žž>×w¼Â±£Yê=e9AŽ"‰ØÅb±4ö³‡1 èÿ•C¿’{Z«¾?ÅUd³Ùm»víºA×õ7µLDBâ¹>'Ê5!j„yúé§¹öÚky饗(•JD£Qúûû‰Åb ÓÙÙI8ì'×J¥ŠP°]dz©«7¸þµOûê¯O2´¹ÈžeymŒè)$òC º ö²wmš\®‚Cïe1ïÖ² ˜öyÓÄÊ{¸^Çq(.¶[Á’¡ŸpNã·xxë-ì/’ؾOºd³Ù >y;•¨­­o¼‘‰'òË_þ’®®.Æ϶mÛ¨¯÷»3tuua‘H„®®.„ƒ‰Dâ7å°§\`4aÂÒÃi^¿>çÇ"ŠÊË/¿Ì† ‚åè¾üµœ³(cv®ëRÛ©±æÇ)¬Œ‡S’8y‰ô|·¨Ü‹EQŒÁu_ø!nÁŸ$ îÇu>¤ÐÉþø®ë,^¼˜ukÖ±éf ”nÑÄt 8¶C©RâH CSyvè&N˜rùd‰‘·zÙórbñÝŸŠæº.3fÌ óÉO~’3fJ¥8î¸ãhkk£¿¿ŸP(¤FËMdÞŽ:”i?åôñªU«H¥R¼ú꫆A±X À¿r’i,nP¥ÌH˜þ¹Ï}N9õÔSyøá‡Éf³äÔ\`CË 0]×'Q”‰åÕJNØÁR,"‘…B!èlqH¹½û fÍš5lذO}êSlÞ¼™–.]J>ŸÇu\¢I…¡ …>‡äÎÏu߇¢ mº¦úDvÕªU,X°€Ûn»¥K—"¥ä‘G!ŸÏ‡ƒî¥R‰åË—¿+Õ¿ µK)9ì°ÃX²d º®sâ‰'²páBî½÷^*++©¯¯'ŸÏ³gßqcëÖ­W'‰Çf̘Q¸ä’K"£££\~ùåÜ{|þù´··3gΞ{î9fΜICCÉd’U«VÑÛÛ¸çûØÇX»v-»wïæ°Ãc×®]Œ@Ê^H.—£¡¡!³fÍâÕW_¥±±‘믿ž|ÄŽŠiŽ94ÎöKªËÌñrÓâw«‡ÃÜ|óÍïúÙek¹›6`Eo¿Æ+®¸‚3Ï<“åË—Þa¹á”’ÑÑQöìÙtlž Â¨²²R¼þúëœ{î¹Üpà X–ÅæÍ›éêꢮ®Ž\.ÇÞ½{éììIJ, …RJŽ8â{ì1t]'RQQA"‘8(Ô÷}U'¶µµÉ¦¦&&OžÌÀÀ@à1Åãq|ðAÞxã ¾úÕ¯rûí·388H$¡¾¾ž•+WÒÜÜÌ®]»¥®®ŽvïÞ}Q"‘¸lQfVUUÍB¼—Nmžëº]ƒƒƒo–mÈá‡^hnn> Ëö+wÛ_ oذáËÉdò>€N8¡X(Âe mÒôþ_ßN¥ …BAÌTîïUn:½eË–/%‰¹ÊÊd2tttyë2×÷é§Ÿæê«¯æµ×^cÇŽ](C ¡P(Èâ½ÛC³Ùìöl6»ýý\W}}}™Ýa -îééy¯SØ555›Ë þáááç£Ñ¨Z,Ue<€«BÝá­¤+)Ù%ÂZ Çð»MMMoÿ¶ëBýŸúúúÝ«V­:¬½½£>š'Ÿ|²Œæ9ìp8ü¯âÝvªalÛ¶-8!ÿ/ŽñãÇ? ….ÈUxœñÍF"䇫øúyÿÆí+¯’ÎÀ†"o=–õ°é7F{¨¿¿ÿ‹û©ÁÒ!õ²öóäM7ÝÄ-·ÜÂK/½Doo¯ÿ(‡t]׃'ÍLr?›ÍþÉÖÿ %pómçIJIArGœË¾|™.+ØÛF$äí…(?hãà6ù¾sêííí,^¼8h>,¥¤ººú\Æb1vîÜylÿzþ›ŽSN9…®®.öÜ™Ãs%R©S]ñ xÆlF9<°mû=·¼~_1Móe×u·•½“ƒé”J¥lÏóFÿ; BJi^rÉ%œrÊ)´´´pÇwJ¥hhh ··—ššÚÚÚX±bE¢Ø°a¶m¯ûÀR]]ÍðððeÃÃÃüÿhÈ2û}€Ë}½¦L™ÂæÍ›™0aS§N¥§§‡îîî2¹ÁþÀr(Ûjÿwš¦qÿý÷ó /Ífƒ¸¥xJ)éîî¾÷<ï}7è×øhüÙá8NÈ0 Òéô⟊iÆ‚ç÷ì­ˆ–ûÏH$ÒT*•ªÞ㺺uuuƒ£££…Vð£ñÑøh|4>ÆGã£ñÑ8`ü§ŒKÉÐÃlIEND®B`‚PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/tile.png0000644000076500000240000003772112613140041024610 0ustar philstaff00000000000000‰PNG  IHDRPPŽò­sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ6!©4 IDATxÚœ¼i˜$Wyçû;±æžY™Y[×ÒU]½ªI-µöÖŒm`|l#̰ÏÛc?žåÞg¼Œñx{¼Œ=6Æöc Ø€ZÝH¨[ê}QU×¾äûz̮ÆsŸ›º³ž8qâ'"Îïýÿßïz×»¤ã8Ôj5^ýu|ßgaaÁúèG?Z,—Ë„aÈ‹/¾ˆªª„aH†t:Ö×שÕjœ9sfuhh¨øþ÷¿?[«Õøô§?Íðð0/^dhhˆùùyLÓÄ4MNž<%Iüâ/þbaxx˜gžyÇq¸rå ƒƒƒ4 †‡‡ÙØØ`nnÛ¶;·ß~»xÃÞP¬×ë<óÌ3¬¬¬¦)ŽãP*•¸|ù2Qáº.óóó³ïyÏ{¶?ðÀ|éK_âÊ•+ ‚ Š"fgg©V«4›M.]ºtî®»îÚù³?û³ÊsÏ=ÇK/½Äôô4—/_FÓ4lÛfrr’sçα¸¸¸´²²²üë¿þë7f³YNœ8Áúú:¶m£ ‘ËåB099‰¦i!ÈçóüÈüƒƒƒT«U¦¦¦Ø±cÅb‘R©„®ëŒ†!<ð×_=¦i255Åàà Û·o§^¯cš&û÷ïGïûìß¿¿¿mllŒR©Ä¾}ûÈçó vîÜI¡P@UUVWW¹ýöÛ)•J¤iJ&“¡T*º®#„ ^¯£iRJöîÝË}÷ÝG±Xdppééi˜œœÄ0 †‡‡ÉårhšÆ¾}û0 ƒ\.×ß^(0 ƒ(Š(‹¨ªŠ‚ÁÁAn¾ùfÆÆÆØ»wowÜ>,¤”ý;Ž•Ïç‹™L×uB ¥¤÷‘R"„@A§ÓY,¦išˆ¢¨¿=MÓþ¾RJâ8Ž¢( òù|¡X,bÛö÷ô»õMÓ:ív[”J¥b’$(ŠrÍñ·ö_­Vyíµ×f¯»îºíŽã¦iÿœzmzûèºÎììì¹={öìl·ÛЦi×wëGJ‰¢(KkkkËCCC7š¦‰ïû!º1¦‰lPÏóR˲.g³Yݶm‚4•€@ ›m{‹ãx¥ÓéìÑ4­$›ÝüG›ûl0ôă IÂ0Ä÷}¢$¤±òŽëþ9o†÷ßü›¼çžŸ!n¿}š¦[öytû‡Ù­?ÌÝòKÜ¿ã1DÑ'||ß'Žc¢8Âs]¢$f¼°›££ïä§~ïvî¿á͸Ißó‰¢?ðq]]Ó˜ÒoçñŸà†òÛù¯où²àáû>žë‘¦i7n/  ®ð¡ƒÂv½›ÞþçLLâá{>aöÇ$¤ð¹]{œ['Þ€¢Ä:nà¾çõ{ž×}ý'û‡n㳯ý.óKë¹¥;À¾O’$DQ„çy„AÈ€>Á²5Ë‹³OpÇôCx‘C„ýþ’$éïkªyruž_ún¨¿Zn„’^Çó¯`'x¾OEäôJÆå[ç¾…HUl¿I&x~w`?Àu=4UÅi ¾~þó(qžj¥@’$xž‡çyôîÏsQÁųC*Î2×OÞL53Fv㈢¨{á7¿·:?õÈcüÓùO $2%£”ˆâˆ úØ›% *~âPÏŽ3P¨2·>‹„ïÀ0 ‰“?±,lCYZÞY-GÇ„ax5 À÷}$) ž©êÑrÛ¬Û+„›Û“$!ŽãÍOIdBÌŒî¢ãØ”3C„qÐ C|ßCQòE½C7bùM2J Mݶa÷.‹¢Ï÷‘RP0I)H…†»L§ý”Râù>abèsËËJíXûÓxJßó°ìˆlšAJ‰ã8øqDƒ/¿þG¼÷Яr²ó\rO‹ÇqPUµ?x®ë’0RWøÆ™çøùGÿ~ë›d|tœ4IqœÍµ9 ¤” h‚§.ý?ÿÆßäS¯ý–ïPÊTpÝyâ@bab[¾³d_b‰Eöo¯!/p©Ñ] [–a긎ƒÛqÑR¥è;Ü›}+QqŽ?ýAlÛFÓô«“Äñ‰ò1Û·òÔ©¯2³}†ß{ñq2F†0°íÝÔHÓwsLÊù"¿õÌã|ìÁ?@[\›¥ÑYcùl›ÈM‘¤¤iJ«Õ"H"ŠAW[ä÷¾õ8^ÿÜ]=Æê ’vÛFQÒ4ŶmÚí6R¥ÂóO0>7ÊjgŽÅÕ9Î4ñÚI †!išRHòÌßâÙ…ÏbùMN/¼Âì1Ÿ”J¥.ùD)A&%QJ<³úW´Ó£øžÅKO°rÚÁwb2YèmÙ’ŽX勳¿eY,¯-°òJ@»aadµþ$±mœ¢$‘¾ÕüËþ\n½Œã¸\úf™¦ä’išÒh4éÈ„02q3—ù•¯|1=±S f^#ŒB²Ù,QYiškÕ:r¬CiXgå;ë]LÃD¨ Ý7Y«EEQ²RO)Ý,‰—R^逧!jv×`išFBˆÀ0ŒB¥RAî±(:WŽ[8K š¦*QuA’$ …N³Ù;gv£7Ì¿hc7B4EC’¢gTâ$¦R©0;;ûìÎ;*¨$Cj*X~Õ!%ª¢"4PºkfÂ0¤\.[Qlâsã[ ,wY?ç!CdŠ–íNÃ0èt:Çòùü3[dû#g!aýœvÇÝ·Òl6åÂ… xžÇÊÊ ?öc?ƾ}{™»<ÏË/¿B}»$ì¾<Ï£ÑhP,¹t隦ñÓ?ýÓ Tø«Oþ5•j…òž%jµ †¢(\¸p0 ùÀ>ÀÁƒùäŸþªÔ0F—¼¾ÎÆÆ4›M‚€;3Ç{Œ0 yæÉç½qUSét: p]—$IPU•‡zˆ·¿ýí|ás_ä•'˜¾S#ŸÏ³°°€ã8d³YšÍ&ËËËT«U>òøG¸|ñÏ>õMö dÙ}[ÊúÆ:…B!KKKX–E’$|à`jj;Oí4Óƒ.Úàà Žã`SSSœ;wŽ$I˜™™áèÑ»9U;ÅZc•ÁÁAEá•W^att€ááa.]ºDš¦ÜvÛmd³Y¾ü•/sýõ×sæLÃ0úWûÀ\¼x€Ã‡3>>Î-waee/²Ù±ciš244Ä®]»øÊW¾Ò›%”J%†††xõÕWš$ŸÏsüøqÆÆÆh6›äóyÖÖÖBP*•ؽ{7õ •j‰r¹Œ”’Z­†eY B …7\3Ù³gÙ»w/kkk  P(0::J6›åäÉ“ÜqÇ”J%: Ïó8yò$âÆoì`…Ûí¶U*•ŠAôùóû}E¡Óé¬ ÇÉöì÷‰ã8 Ã0Èçó…ïÇßÍÚŠ¢t:Ž(•JÅÿSûr¹Ì©S§žÝ¹sçQÏóøßÅ"¥DÓ4666´‚ (þKq÷bY[[;644t¤ÇÖ½¶5®MƲ¬ ŸÏgE‘H‰ØÂ´›¤i*â8Ž;= G dSA‘ý¶›ÁHß÷ãL&+Š"…]”Íf[Xز,ß÷ý !D$¢ËÙʵ±H)…çy‘”raccc]JŠ.'§”. oÆ!6ŸÝ ˲¶›¦ i²ÙÙ&7³%– ”$é6PÄ&¿ËÍdÂø®!¤§vÔ–––.íØ±ã€çzi˜sÉï®FÒ6I-uwVUUrxxXd2Ât‹RA%îèÐÎZ2Q@‚çyrqq1 E‘Ìc»5¢¦†l›$Ž IÿêŠv»A0691Yò“uG›¬®“4 KGÝ~LÓäÉ'Ÿ¼pèСºŒ%«¹e¶ÐÚ Û’Ž¾ŠLÁ0 Ž?¾mbbbÞ4L¥Úrà–êÄ ´Óeòn’aYVœ$ÉÄôô4–ï“ÙcQ¨(­þèŠIóÉ.÷†@UÕÓ4sžç£n÷©Üî ‡EÂx %6Fã‹ÝÜæ-®&I‚±¼¾Ãîñý¦Ì­\DUT:ÏÔ uÒ4UTUÍiš–BÀ‹Û5riV{!Âs¬9„hš–zžR²![ì¿ßFK2n=͹ûx™`QGÉ*H)7ºàî]§tÃUuŠuk˲Ñ:UO饯 è語¿˜¬òæ»sDO–{Cäè|£L¸lôr‘L%Vê0z8ÀSÚ¼qç¢<ºûqŠÕ"±ìòì& Kß÷ñ|ŸT„Lr7¼ó¿ò¯¯û ö exÛ`Ÿ&’$‘½LuœF$Í ÷Ž¿“C…·rÏöwó¦[ÞAx- ËÞqâ4áÑíaRy€¼‹£3ïÂ[)GÆqŒçú„IÈHvšG&>ÊÏÝýI¼fÓS„Òíój…=ÏÅ0T¦Õ»xËÔ㪼•_yËß“æìÍU„”’0 ¥ïzD2Âs#>|ý'¸÷»øÐHe4G$ƒ>gK)ñ=8‰hvZüîCO³´¾†2^ØÃÁ‘;7¤ËÂB<ÏÃ|Â8ມ[y~áïyáä nŸzMÑûL™$ AtY8 +îf±s‘ók'¹mú’4!c|¿{’[ÛgÔ<•Ì ¯{/°¿|?;‡PÒëø¾‹çyÄqLÇø~÷{)S!WLxöÄó½ƒÝµ›pç{YØóQU§-xqîŸÉŠ*CC¤IAßï'<ÏCQ.Ÿ³ÉâG.7LÜÂdé:ü°GA=ß' #4™a¸:ÄFzÍ lή¼JÅø^Ú} CwÆø†¸¡Å`iYÈóúú¹þvUUû,Ç1i’Òô×-?Ls=eÅÅT³DQD$}éetuREÁw%FÎgþÒö oö_óêos9xެVÀq]Çé_Ïu ÈeûuÖ[-(´H«³iîÇégXÇÁêX$iÊ|ôm4‘ÁÏ]äw¾ù3¨šŠeYX«?Ø®ãÇ)SS¾üÊç*ð;/þ›®&û8ŽÓÏ"Y®ë‘Ïeùµ§ßÏ/Ýóçh®²ÎÜ…9–嬄„€f³I«Ó!ïæ U•¿»ük¼åð;™»øk/IÚíNØ›…”ÕàxçSÔ×ÚÑ2ó_Ù`þD›ÈN¿/ /øßá¹¥ÿE Ù\zýåv4ôœ‚–í²pǶªªf.—Óc#bìƒ`!a锃s´Œ@ÏŠ> +ЍªZÈår‡"jÅ“§bD"Ðsa€L%…B¡³±±!†††ŠØæÐY;²|ÒÆ_VP 0ò]}¢Z­2;;ûìŽ;ŽŠTN8ä2‹/;xë º©¢ ´îÚ. CJ¥’‡q±cFÜüÖ"«¯ù¬žöðWºíŒB—…MÓÄuÝõ|>_Ï—‹TDtæ#Z—C´;î½Çq¨V«\¹r¥§ óàƒrðàA:-‹cß:ÎØH–ñLƒb©ÀÒâÍf³§ 3==Í#<ÂðÐ0ÿó/?ÅÞÉ J ŒÞ:ÊÊÊ a’Ëå8yò$išòÞ÷¾—ƒò™Oý 7‹š›ç®žÜÔ TUãܹs„aÈáÇyÛÛÞF'œxùU j‹mû}´»iü×_EQp]UUyãßÈۨ˯ž|•ÑT††9wö®ë’ËåhµZ}þÉŸüIV–WxúÉçØ;XeûõÍVƒr¹Œ ËÂF!ÿøÇBðÔמ!-'\ÈœGãÒ¥K‹E¶mÛÆåË—I’„={öðö·¿¹¹9V×W¨T*¸®Ëòò2X–E¥Réë«ïxÇ;P…cÇ1==M¡œG×u²Ù,ËËËìÙ³‡×^{(Џçž{¸é¦›8þ<ÍfËm399ÙÏZoß¾½ÏÍÛ·oï뼮粶¶F¥RáÅ_dhpˆjµÚüjµöàùoŸ§V«!„ Õj‘¦)SSS„aÈÐh)%‹K ˆn¸áÎf³ÌÎΞ›žžÞÝK|ªªú=šm·<ϳ3™Œ©ªª¾µÍ¦|Øo›$ RÊ(Š¢@UÕB>Ÿ'Žã~?½7c( º®w†¨ÕjEß÷Ñu½ßVQâ8FQ’$¡V«qêÔ©g§¦¦Ž¶Ûm²Ùì5̺õ»a¬®®R¯×­0 ‹=Q¾§%÷tä^L›Ì¿^,ëabF_× …b*¶ðj†ŠBÉård2Ä&ÛöôÒMa¶”뺦ij&“Q…nŠðßÅÍ›KŸh}}ݯ×ëy!„ÌšYÒdSÞ½Ïúúz’ÍfõL&“f2™.“³E?ÞÒ~s­FQD¾OEÚãlúK³^,›Yt™$IR,»*ö¿Ð·eY"¯T*ŦiJRIWoÖFv—“ÄÒ î¿Û¶k„QDRôÈĤ¾¾Nꨤ®Ú¿¢¶m¯×ëõšišZ$bĨM.«uµ[× ±UDÒÏóœ Öêõú€ªªi;ÓdhR%vðtWEú*=> Ã(›ÍkµZ⤥]$ ©«vÛÛ*$ 1MS\ºt)>xð i”&ü*Ûvi„6à™¤®BêèÈP`š&ív;Žs™lÒ mYÛ#ÒnßÒÓIm+(ªÀ0 Å÷}gïž½†©¶)ÖO¢•\ÕUU¥ñ…±Õe[!„nÛ6–ï’Œ­‘Ù±-?ÍJëu4©º:/Özo³,IÓTïCGšŒVQ4:Ëè•/Öˆ›I’d……4MU@õw¬S¾%KMg©yE¨x§ د‰®ë9@ ,iël¿Kb¤%dšmÒ@¡ób‰`Þ@Í©$I’ó<ÔMõÕ©9¦0®M³bÍy)q[cãËÂ0B¡«ª“¢òxëÑ<"60D†¶½Ž®™´ž*.½[ºEQ~Õê0ýˆZö˜*íFydçã T†“°¿¢d„AH¬úÜ^{7wo'ÿé Ëtå6ê¥þƒ»Ç”AËÖ¼ëàÏóÐÄãš8ÊÝÆ^{ÙÓ‘Ã0$Œ#Þ<óA†ÒÛyÓ ïâÈèáÒÂߌ£Ç¾Ȉ‰ÝüÈÞÏ¿;úßYž×Ù19C”úþUU®Ëº¡2cåÿ†½…‡øÅ7~’ذûšó¦*'}Ï'%ÆBÞwð¹wç;ùà­@©–#–]»ª&úQH¢zÜ[úYöÞŠ²ä0#•±.x.þ&'öÞˆq°·~„¯\üs._YäжÛPdwÙÐãÕ> ‡!»ª7q~ýŽÍ=ɦÿ5º’! »ö³^ß=ÉéEŠf• γ\W¸ŸÑÊ$<Ïíª|iÚ×nÓ$%£dIôO|ûIÜA-³ ?ðúq÷XØs]4UÅjÂK‹ORT‡©A*ð=ßï ëAày.B\wñãxÚ:Aàãº)™^u&Äe%Ë.ÿ.?}øã<¹øß™ëœÇOì.Ën.!zYC˜ŸÃî$Ùs#sê·¨ ˆ¢× ‰ã¸o‘È O\ø_|äÞÿÂ_œúEâX¢¢áº]YS×õnð‘$M% í ,ŠUJ%mxŽ…¶Nwm™œÙÛõp-Cj\ _bÆ»–ö¿ù ë¶ÓFWõ¾°ºiQ255ÀWO~™ÉQ~ýù'6QẪ®\½+ãˆr¡Ìï|óq>rô×Ñl}™õÅ+¯7‰ƒ”\ÔÕ@›Í&~‘ws„ê:ðírÃÌ´ZW8ÿO­–Û×…Ûí6qCN E•Ï_þo<œùW4Óyé¬Î6‰œîºJÓ´¾ÿ&åXŽ^åïÎþŽlÒöš,]´hnaaÏóHü˜pPàË __øSkGI æ/„,œnáµc4£»2°,«ËÂq@YãEû/HŒ€…Së¼þ´K§é~ wèRbJk~†ùx'Mí2ë—\.|£+0e2’$ac£AG&¡Ž¥¼ÎÇŸþbûÄ´L<ÈTºær9¢(²¤”EÝ00'Šƒ*öRDcÖ#j¨h†‚šé/ç4M0M³ëC‡ âFÂÆY%ñ%fY%M h†1©iæž„rQ§1çaÏ'ø ç½ko+‹–çyÅŒaâ3wæhÏ…4ç]üU•Ø—dJWYxnnîÙ‰‰‰£I”¢Œ…äs*׬…ŠfŠM[žJ”Ëe+ ¢eÄì¿§@s6ÀZ p$ifE!Mºº°çyë†aÔQu&ïÖˆìw-F;rËM4[M …ív› XXXà±Ç#ŸÏ“„)/½ü2ZMÅÍ9(ª‚ã8¬®®R­V9{ö,333Üÿý  óéÿùvMM°à.°íà( lÛ¦R©ðÊ+¯ ¥ä}ï{õz'¾ò5t 2Æ"ã÷Œ±º¶‚ѵ©õýÚwÞy'7>Œ¡é|û[/3\ h·Ñ¦UªÕ*gΜ!“ÉlZ64î»ï>}ó£¼ðy饗˜Ú—¡|{‰ÙÙY,Ë¢\.³¾¾ÎÒÒÕj•w¿ûÝ466xæ©çÙWÀÏz4 †!+++´Ûm<ÏãÃþ0™L†W_9MKiâ—=´©é)ÜS.š¦133Ù3gHÓ”]»vñÈ#ðâ‹/²Þ\£V«!¥äüùóÔëu<Ïc`` o›}ì±Çð}Ÿ'O033C¡”§\.S¬súôinºé&Nœ8AÜÿýLMMÑn·ÙØØÀ öîÛ \×e÷îÝÌÏϰmÛ6ÞùŽwày.^@׫츎oûÛÔj5êõ:º®÷³ã»wïæ¾{ïã䉓Ô«˜¦I¹\¦Õjõ/¤eY”ËeÞö¶·ñ /pþÂöîÝ‹eY\¼x‘J¥¦iòÚk¯!¥äÈ‘#LLLôf$¯½öZ×#Ýc¿(ŠÈf³X–ee2™â¶mÛXZZBÓ´ËöY´·ëºsÙlv`dd¤ØK>ö¶§iÚÿ¾éß³Â0læóùÉññq{ ÷î3t“£{Œ«išåºnqff¦ïpHÓ´ÏÊ=–N’„jµÚgážQ`+ã÷r—½œd£Ñ`hhÈÊårÅ­+„­±÷X^QÚíözµZ­×j5šÍfŸ™µl&ô˜oóù'mÛnÔëu£ÑhÍæ ]ÝÂÁ[ݶm?“ÉHÇqB5s}ßrŸ'¯²°ðÆ]÷›\?ø(£c£}í6ÞtŸA@œD¬¯üèÁŸC¶ù©#¿ÎyAâ_ãPõ<¯ïü|ó̇ء?ÈÝ;7íü ¡fãyWûî‰VQ1œŸâ¡‰ñswýöÒ 7 µ¯Õ…ý×uÑtÁŽÜí|øÈp úF~é¾Ogºm·x¤¥ëz$¤xÏûü÷íøQ~æ–O26¾0½Ö#íù~ —»sãÀð(5sœ¡üXŸg{Î¥þIÆ× á‰KÁ—_xнC7ôlý7_ß#úÔŒIæÛxuån™x?¶ûúëV´çydõ"åL•g>Í‘‘G)dJh©‰çy¸®»ÅÇìGåìJ¡Í_ü;k)hü Àó½«_ß¿ê‘nè|æå?$ŸŽ33> ©Šç_õHwãêz¤/œ¶¨ +¬;‹ìŸ8DN-o²²wÍ…ÂvÛã§ýq¾zé“(acyM¾êvïy‰‘'´.lg¨2DËmõõÕ­¼†!q”¤µÜ}€Žß$o”û ‡ž×›±©L(hižX³ð¼?ò C¿ßw’$¡O§¤R"c±Ú«­5Â4ØäÕ-éMƒ€¢¨d³ãå,¿‰!òH¹éϺI^¦GJ(WLâ@CW  aâGÉ5éºÆÜÒE£Šr¬ùi|ÑÚô9{ßWþÆÊ§ÙnÜÎøN…͉۸n7cÒ»…]×%C µ—_ÿ6?üK|üù÷ñíÅ'I“ôšlL¯oÕHùú…Ïòø½¿ÂçNýg쯡¢âº×În×õˆâˆ%ëíŽMmØ@Ö/²a¯'ÝLO?åû¸Ž‹”Ðà,{†nÀË_äwžùº¦_3»»q;$IÊÔÔOþgÆk“üÆsï‘ôûî]x×ëÞ•|™ßxæƒ|ð¦ßAk'‹´£–Î5ð;)qšGA³Ù¤Ý±(¸9„©òG/?Îöþ«ñyÖ¿Óåß^2Á¶mZ­V7‡/*<»ög¨¯%´ÃeZ—WY8ÓÀo§ßÃÂù(ÇBø2Ÿ?ó‡XA“–žÕy›VÓ!·èÂ1–“ç+¯ÿîÑÞ‡³ó'X9ÛÕ…5C Ýnc7m2Qfò:_¸ô»¸q“‹ÎKl,øl,71ò] Ķm¬F»ØÕ…Ÿ_ûK.Ù{X‹ÏX>çŸ^CÑéëÂÍf“NšDæÀ¿ü¥Ÿ@ìØ¹CƶÄ,h$iB.—c}}ýÜàààn]ÓѶ…äꂳ>v#@z:Ȯ޻™‘^­T*E ‹.É_—-§´–W#ñ@Ï R™ö=Ò¦ir¹ÊŒO^UY9ïu ñèVéÝu]>Ÿ_lµZ¥‘á‘‚ZÌ<˜cù„GkÉE 'ÁÈw9ûô½1…¬ÊÊi›Ð’¤ž‚LAË‚ØLÇU*K¦²ØÁgï½yVNºØ«!©¯:)fI%‰“žéôX>Ÿ?b˜YÆîV°—#Ús!Ú¡‡z†næææHÓ”……~øa8@k£ÍsÏ~ƒÉ]6‹666h4T«UÎ;‡¦i¼ï}ï£/ð™O}–Ú¶*WÒ9††‡XZZÂ4»ú‹/†!?þ8õz/~þ»%WCËŒauu•l.Ûצ=ÏãÖ[oå‘GÁÐ ž}êy  âRDÇ Ö¹p᪪vMBŠÂ½÷ÞËý÷ßÏÓ_†Ó§ÎP›Ô12&ÍFÛµÉf²t:VVV¨Õj¼ïýïc~nžçžzžëFóDƒf“Z­JE,//÷-)úЇ¨×k|ëù—XÕWˆ¶h;vìèƒu¡PàôéÓ$IÂÞ½{¹ûî» ‚€•õeÙØØèߺ–e]ã©~àPU•¯?õun»õ6ô㣣£ý[öæ›oæÒ¥K$I­·ÞJ¡Ð½ËËËø‘Ëî=»13&ŽãpÓM7ñ¹Ï}ß÷Ù±c‡bß¾}´Ú-Ö××)‹<÷ÜsŒÑétÐu+W® ( ÓÓÓ<úè£4›MlÏ¢V«°RÈsîÜ9fff¸pá««« î¸ýNNröüY<Äúú:—.]¢^¯S­V¹xñ"'NœØR·ÜM®¾ôÒKW=Ò=´§ ÏÌÌìÎçó}îÛªÛnõ [–µ:88XÌd2Ù^ŽmkmîÖ¾“$‰Â0 ªÕj¡R©ôá[uá­5¾BˆÅN§SÚµkW¡Õj]ÃË[uç4MàÔ©SÏ8pਢ(ÝgòŸóVŽ×4f³ÉÐЕÉdнª¨­¼ßÓ§{è·¶¶vlddäH¹\îÖÄôjšÓDn(ªBˆ#Ê4M×=Ï+¶ÛíTŠ©¸êÞŸB‘$É|§Ó©Ø¶ïZŒ•n­r 3÷NÄÃÐu]·æ8ŽT…Jšò}ûÞ¬^TE¬¬¬D!·²­²?øªªbÛ¶VÆF’$Á¿Ô÷æRÊq'ïû~¬ d*¯Ö ÷Ú«ª ¢( ã8vÓ4moll$HTMÕ´ñ½ƒµ¤©#ÔnmlwmäÆIœrÛheHÖM’ŽÖ}Ù@I’Ä©ÕjYMÓ21 Ñxƒ\–hÍ Ù0‘‘‚bv]çA¸ÀÚààà€¢(麺Îäu*ɆI¼b’::B“­;cr¹Ü6EQF+• ~’¹®ƒ¡*Ä-ƒ´Ñå[¡KP$ºÖ½GFF"™¤Éš²ÁöëÂUƒhÕDÚ:B‘½ëÒo4¹ÉÉÉ$ÊbÐ`êf $M¤‘!±4TS"A³Ù\Ãpß¶mÛÊŽïcî´ÉUÂhõ·®£¥ÚOU‰Ö4 Ã@×õÁr¹\°=eÅèmx žß"'ʤm“ÖSE¡Ñh¤…B¡ªëz¾m´ÙvŸJ!„zœ'Iœ§Fˆ; ªªV-Ë*‹Å1!Þu«ŒÞ.I]AêÇÈXŸ¯áœÉô<7Q†dt“ Ýbǃ!9YÅ÷=H#¼†Ä©Š¿¤S,BŒT*#Ò•4÷.²íî J…À ÑÛUZß(bš&š¦‘ËåÂÈ »j3~o‘ØW)hæÖ.RR†ØøÇ22P1 CB¤¦aÐL\&ïO_ãÖÑ{QÞ¶ëç›!ÆÇ÷¯õ1{G¤xìÒßÄ/<ð§üƒŸ`bð å ó»=Ò©ïûI@§ñá[ŸÞñ§LŒìæ®[îÁK칤I’\õHqïÈ{y×®_åÖ½÷sdæQwl”ßác„V†¹ádÔ\Ÿ•{2¥¿Y :]¸™SkÏóå“Ã;÷þ{&*{ˆ£¸ÏÂ=]Øówþ·¹¡øƒ<°÷­ f'q½«šsOŽ£„rv‘íðÄKO°³v=£…x·ÕOàû8®‡®)­<Ÿ<öLšGxðº·`ªy\ßÅs·²°Hòáëé*ùÛJ;¨gÇñ}¯o[=ÒD7î>ÄóëŸBs|—¹æ%¢(&ð#$z_z À, qRÐ+èŠÉ‹¿Bœvý[eM€$Ÿ$£Œ*:8,Óp—ñ}—À×®©0U¨^BuPåųǘkœ%ºÖMÓzÏd#F2Q¨—yéòKÄ%‘v‹¿3¹éL¼Ch˜Jfˆåö<1N`ø2•WµoßG ðÒ%}†ó< ëÎQùÑ5rl¬Å¤¤‚c¥(Ç[ŸÅÈH‚ÀÃqþôî•ük"ËW_ÿ3Þsð?sÊýñåžQ¨Ï«½’ÿ$JéhÈÈAî;x/Ÿ?ûGø©M_Mam-¸Z‹sOð3÷þú÷±¸B5;Šç]uÇ÷0Šb–­9œNÂè¶qa–‘âv¼ ;£®&||ÏE"°µË?JG?ÃOþ³ØÍƸ^@º>ï”údÄKç^e¢>Ο¼ü T‹uÜÀÁ¶¾îí8ïS*dù¿ÿñ#üæ£_Dkù‹,.Ͳ|±ßމ“÷où£ý'Î6¾É•Õó¬Î7ð[W=Ò=§A.És²õUx·á&Î.}‰¹Ku¡B¥Réž`iàÉ OÌ}’÷Œ| QjðõW¾HcÞ¡Õ Qõn’¶Ùhb¯ÛèQ‘¥àÇÖþb1ËÎü1Å•&z¦+áZ–E³Ùê–åªyž\þc&CœYù~'aáÕ&zL³« 7›Mü¼$NMÒøÍ¯ýbûØ)¨™®?®W/EQ1›Í‘¿!floŽÕ“W^ê€e¢è šâ]X×õb’Øýöá|Êåãø³]CËôËÈ,EQšRÊÉ|>OþhÊØh†ÙãmÖ¿“†ÕEë.Â+•JØn·\6‡­¸ÜõÁ+'|fµ æu)ZFErU=ê[•7*LNå˜}±ÍÚ‰éuzE5éëµZ-”‰4¢‘ˆé3,wh^ V‘H´¬ MRt]ozž'3™L5W.°í^‰u%fãœväöÃXVyfgg ÃnÙÀ[ÞòvíÚÅÂÜ"§¿y–º")íôQT¥_/\(¸rå Õj•w¼ãhªÆçÿö‹TkLäTÐn· ÃÓ4¹páqóÞ÷¾—;vð÷”ª½ÎÎÛhµ[†A’$,.."¥dß¾}<òè#ø®Ïwžz•œÕf¦ê£jd³YúÔ „àŽ;îàλîä¹§¾Áå¯ÎRׇ™¼!K³ÕìþÐ…ibY+++Œñá˜çž~ŽWOžâúñ2Ö@‡0 Iâ„b±Èüü<Íf€ÿøÿ#/>ÎC=ÄÐÐ/]ìüf2`llŒ¥¥%FFF¸|ù2?ü0{öì¡Óé°¶¶Æ¹s°oß>._¾ŒïûŒ³²²BÇÜ|óÍÜyÇìܹ“¿üË¿d~ažÑ‘Qžxâ êõ:kkkDQ„¦i?P­V‹[ÍÞ[ù¹÷=Žc+ Ãf±Xœ Óé\ë=¹÷·a¡ã8Æðð0¶mwyëïcU*NŸ>ýìîÝ»n±ü^³OïMÓX[[c||<´mÛø—j¢7Ï·iY–,—ËÕïÞ®¥Imõ1;ŽƒeY^µZÍ´ZÝô½LŠå{xUX–•hšÖÍ^#ЄÞÕ…•«5[ü×ÒuÝP×uÇAWõkê…]\Ó§Ó‘Š¢D¾ïk𦠠jE¹¶í&øË$Id𦱂Ò5^#Q”>×ö« â8N,ËJUUøê…Åæz7Êf³qš¦RÈͺe@Û69ÈHÙ,î/¯®®^ª×ë}Ï—¡ÑÕ…qMÒN·FWF B“½<œQ*•ôL&CDD:Þ¦˜5HZ½ºÛ«‡a¸®»Z,gt]-µÅðHm´e"mÓHÞ¿úžë¹²Z­Iˆ²£MN3ˆ[:i[GFj÷ÇÅd2.^¼X|×Û™#*á†AjkÝçD TÐu]†áŒŒ3Sþ?Ô cÛ¶~åÊ•µr¹\ ã8 Ê•ºJÚÑÑF~¤UÐ5æS¢UE!j¥R)ŸJPv9ŒÞ."ÒÐE†4PhþcUUÑu]˜¦©êºŽc¸ ÞåS/j‡„ž º¤ýå!â–Š”Rhš¦†!4MÃë0|¿FQ޲ÚXA“ñB‘Îñ2Ó4Õ> «ö¿)BKT|ÇÁ$Gä‚u¬D°hô~±R.—3A”¹ÅeÛ!«m‘¡@èN™Æ×˘†¦iyÓ4íÿ/õªª¢ªjµÏç–ýo”}"ÏG¹cêˆ<ÄÒÿ.¦ìþª5y€ÿðà§xï‘_¥VÜA}ÛÀ55½}”Kì5wúeÞ¼ãcœ¸‡{nx#^ä\óÛY½ãøIÀ}#?Á°r#Ýñ¸eòíxz£ï"M’DvQ1$L#jæ6û·ü§‡?Íëó£ãÃÄâªYv§,žçcäÛ”Ûù½|šJf†_~Ûãe›uÐÿê…=Ï'ˆ”LÀîôüèM?‡rxøAî™ùM¾Vö<Ÿ( 8/œ¯='&Žì ÁR½*bȧê/“îNa»vDÚ¯4¨E rrþÏlI oƒËDëT8˜ÿ“Xw,#>ÁÒ’ÉΡa^9ÿ+&—ÏâØN”é]I髚àíË/røKñûÑǸl'È£_—6p×gnù õ†E®(ò3¨RÛµ>3nÓ40m A]¹Èpÿ—™òNð×3ÏÑ¥u‡ãÖ¹3Lχó¼î}ú²ý<ýá#dâ…hN®‘ a‹\!“ባ?å¿Di*ÓÌ.M3[ª ×<ºÝÐ.—ËÔËÄ›Ilž:ñ0÷ì¹é¹Ó,jµiáÎHRB¨þxæ ~±þfì³Ìf)_­aÕýλ]„VtÛ1ªþ%^=û n¢Îå…³”>0¨Î‘/lŽé`É>†ãØäØ¿ùnÈT879Ïüå:%I„ïlår™J½A¿cÒø˜w'ÿDhò¯™—Y˜2)Ï×PãJ¤…—«  /HñÎÜslõ÷0î|@cÑàÊ©2ŽîO„Z¸\.c$|L[Péå¹ãO¢<ÿÃÓ˜‹ËH¨ª5ÖʲLLÓpæÿãјšãÇO=Š>®AK+‘±ÓnÀÀ·|–ιȭnî{éûè% ³^&‘ˆpuŽÏç±g[L½ðáè›,ŽÚø–„’-¦FPdh ϰ™?í²<;ñ_?Ž~YÅ\r‰gEDH¡(Äd}ܧZ‡/¾ÄÒyŸÆ-)£%Õ¨ÒYSéÖ}G–ç9~î–θz@<+PT9‚3%I"!iÔ.¸4Ÿ³“ï lÚ°é&ÐÔ0Áèû>333ìÙ³‡,ÝæôŸ°*CJ,RÜ×ÃüÂ9õ)žÑâ©El«F&—áRéñx¿–Ölç…eƒ}©v^xMjë Û°íPyt´p(øM\×dSáŽÏü…÷N}ÄÎ5ûÂdù miaÛ"+˜ª•8qùu¾6tÀu½Hgwƒ à ps7qÖ|•ù»ØXÜF_×zÌë|aÓ4¼°’¤êLóßÒ(·®ÛK>¾Ó2®S"¡ç¬AsIðÚÙçY­mcûÚíhR"ÔÊÆ MnGÖÛ@Õ+Ñ—í§·{€Þä@ÞîHP½ÍH7Úyá3•÷ø˶ŽöñïIEND®B`‚PyQt-gpl-5.5.1/examples/animation/animatedtiles/images/Time-For-Lunch-2.jpg0000644000076500000240000007732712613140041026505 0ustar philstaff00000000000000ÿØÿàJFIFÿÛC    ÿÛC   ÿþTime for LunchÿÀ"ÿÄÿÄD!1AQa"2qB‘#R¡±ÁÑbá3rð$C‚’ñSs¢%45Tc“£ÿÄÿÄ!!1AQ"2aqBÿÚ ?úsü<à¦#2g’̹ÅÍ¿Z±2ʪ^Πz[ÕŸ#²Éö˜n¨ GPt?:½‚Å&)C G©:ûWÊ—ãÕ®†H¦‹5•OéDn þ¦ªNòa„°åòHn›ƒË…»jPå¿ZtXo— © µ“a®æ€šæóDÈ[-ý'¡¨ Iر¦!Ô0;ƒ­é~s™J™-æ ïÐÐ}ækôúTÃH"•ð¹òåo!ØQºFÇϾ÷ScYøìßk|Û“z»‡¸ÂG˜ÜH=©”ŸDBßsÌüè‰RA©VKûS ÜÎ*ÚŠËâÃÇJŠlm½hÆ 8QÌÚ²¸Œ‚L|®·±ntrðÀìo{“΋ '…ˆI«^ö«X<"•æ—ô¨6°êj1x”¾ó.U·Íg)Ö“2º‡®¨¥;zž•ÃqÞð¦vZÄsSÖ´½:ƒpÚ†ërë8°ôïR¡lC*°;ÜW|¾”$÷ZÔB£Ëkÿ5$©P À ©W'ºiD¤üÅZ…÷6µTã™./ÎÖý¨“¥}T¸zìÊ~!Kø‡j%½ ¹ì;nkšŠÔ,9Ô€G1½0æÀÊí›:[λ­ÿja¨U YÙdR¦õî5äBÆE`Ê-˜XïÞ´%[MmX\->&`mslÇMyVü‹“crX‘tfÜö£‡p_UŸCa©íCko¹«$Ku¥i@Q ebt7R7SÔW®"õ-I¶ík~5¨åCâÄPþ#•+…ÔÜz% B(b,X jCe/¨Š@Y-Èþ•š<­`¬ì>¤™5x Æâªqd“0'Ã}FºEQÁ·»b,Ht¬ðÙI…ŽŽ|½gƒF­j%jƹ× ƒqÊ«á±K"e“Ö«ñz1 ,Cém­ë¡ÇLz5ºV8,·°§eþ´ž?(lLh-q×™½E4§sezÖ?úkâãš„‰BMŸCBX^××¥ n•¦A&&1†?|Q¦ç­#†áŒƒÆ•ˆØ-®ZƒŠ©xÀ‹Jon•g/¬JЪ‹3ÿŸom|\gUÖBÚŸ¥™çP¦ñE¾»µŒZ!n­ñq©7ö­ë#Hš1÷ë ÐÑx®ƒþ",£ñ¦Ôµ•vÔ{Šb¸êºò<êFsÐ܈çR€­Ð\v_â” QhæU^Kk•ö4Hl@²‹›S¨ÛÉËIü,£-b>I”ÄݵSBZº@%‰£m¬H=-V£ED21º}9Õæ—2…QÑTªÔfØxÔù`EpȦé!:\QPbÃ(`ó³huÚõTHþ>C+e$©?•]ŒýêûŠÌœÚWÿQ¢ÓÃmö“˜\:u¥cpF;â0¬Jƒ|¼Ö»†¹Å_Ä2Ÿ¥^…ò½ïÔÌî5U¡â¢x8éÈyïËâ§`Ó&ù•ƒ½î§AaýëüIÃŒ1P©1É|Ö7±®àØ™áá¶ŠB¡$¶R47×ZÌåeʳ®›nöÑlhNkù¯z œKûqLK|8ì¯ÔÓCpZ+XÕ|&'‘<Í©µ»ï}y_SZœ pð™šùÜYTéaÖö§È¶ås¢ÃaíP pljÛ¥M»7Ò¶ÊÃF*5ÙÀ“Öƒ„ãA†fazXÖˆ;‚ ˜Y®9VF; Øi²Úè}'¨¬Þ®Æ§}5H°¸ óàŠëZ±ð8©°Àqnhû»ø,EI:å;U9A‹U#qÛ_÷þùPÅ.` S)ìt4D2î'ZÐH6¬þ8o_þ5ý*úÌÜšÍâ²,¸Ó“P (=mG/ õ„¨^½ÝÉ?/üÓ± žB‡ô¶k[ŸJ_Bœ><Äù®ÀvÓø¦²334LÝlAØÖ§š X{^Eq”E™|®¼ÔÔX)-r<º_™¢a¨SÏZƒP-‡¿Öµß^ƘûÔef˘¨¾QΣx¦âbF–1fêÑ«$h ±r€àéÊ×éÒƒ $òD%Ï w$»Öº|!ðLðäfk©úßJ?ì-¬„ncÚ‚³¸W•0‚,Jg¾C}ÀÞ´ãÉ,bH[:‘ô˾ 0 ÔÆhÇÄ[º­ÇÖ ¨° ‚Ç­@¢µ1–„‹Th]XŒlmÌ•ͦ¦‡)'6 Þõ)PÇ!FÝM¨AéW±‰Ô\YÆÇ¯j¢À«ab7¬YJM>,Iô˨ÚãqUo]z4§È>жÔxj^Õs‡8T@ófý«3Š»®,JBù%õt½hðù#n†I Ç—Zeÿ*>Ö塨%®Þ–Ïn¿J(ˆò†´ƒò¹ý…h%Õdpó)'áK裥`(°»ë]zºC,m¥r0Ê)lmïʸi¥ZމZ’ µ)eZŒ05]M5LŸ\@$¦àzõÿëüÐ*B‹goH<»Ô‚Hÿw©››ÔÞ„=öÖ ½·#ëR1H[±6 '¥c;‹ë{žÕ.\&PHi?!YnÁ˜ïÐVyV¸ÁàdðñhÌ5 4ëZ9|å]mYN2ÛB5½jÂVXó©õ‹6ºŽ¿üêâhdOBÅÀ†Ù#Ö:Ч/ ð0åpe¥BÙšþ¡§JºÇ1éÒܪ#,²zcM’†;£§­}ŨI°½ox®HV9¹ù…ÿZ\˜LÚ˜Œmøþv¬þ?‡Y8IdÃâ˸7µlañ˜LBfà·0û|RŸ†Lƒ§þ)›Èuƒ…F±°Û3©º­‰ùU¶ƒ /Ùão(Õµ;Q/™HæÞP}Í¿š— ¹#jÜ’3´*°+0Ñ)/M¹f$›“KÌÄŽ[S)‰婱®æk˜ÙIí¥)Ö¨:®VPÃ{z›-¶¿s\»‘ÈTƒh¶ð"?ôÔ°Ì|øHOý4À¶¨"õbU“‡á_ºÍ[­Çö dâ8M˜¼co‰MZ7 ™E:76 ¤‹Ñ‘k*Lv%¥Õ/¾U±ªÊ k I5¹,0Kþd"ýWCA‡Âaá“Ä\ÎÃ`ÀXQù§N*U°UÝ+€©“s¹£QjØ Øxç±+"‹Sb{¢ÑI²LÌYEÃm˜u÷­ 4©uWÈCÖ±èñUã¢VKXhª7£&7“ÛQH“ÃÐè}ôµfñ§TœT) ÜU‡ÂÎ/xɘڗá=ý$w"³”éN¡sF¢Ày×NGÎ­à˜® ,mæoÚ«aá—Š’e[F«‘o 5qc±ƒ{^ç½1Rx†b˜ÀYF¶GþõƒÃ‹ŸòÔ^q×µlù‚¿"k'‡+Œ™K¾cô½èåýSø×9Õ‚£¶òÛAjZq)Keyl:Òp8”|…›,€dCÖü¿Z»áÙF¹”m“QzÔì*Èrék“µ N¬jÁ…ïr~Êh ›G¸£ï¹îv¨+M"Ž´"ŠÒç„L&Î=-×µ<Ú× a¥ùÔef:²9V¸#{ГW8¢fŒL7Výª‹ çzn TK°Èi_áY¾é¡aågÊ;\QÆÁ#šFô¤džõG¶HÕ”ù¼qjÏ–&ã‚Ì'Ã7rh¦Sã²ñc/Š–!•;žfº23¿Z‚u°ÿÅ ë—Fmw©'Ú»upÞ¤*j9TÓÐÓdBö¹(êNÔi€ÚM®"Ðwcü Rcû»‚ c»nMH$ê~@Ѓzš‰qR,w²¨Þ„U.æÊ9Õ<^ ÌÖÈ6[ƒ‰“Æ”¹ !’Íu6£5ŠÃe_̵g +Ã,em¬NMÆõ]VîjI·½LrÄb‚jEºD©~<\ëVCÛQOP^6Wd b1àÛÚµ9 ilÚéqaD—¤añ€Œ³ëý|þud¨ÜZÄhF—­³\·CcM9Ôå=Ê‚i,rÛ˜©Wa©SPÃs±&à"[7¤|Í¿6?AJt’Hñ=ê bÖŽu, Ë7%A5#z³Ð-·ÕÊ„m\ ×ޔ⤛–¨(Û*o­Ô ÉéRr¨UµŠs;*)±µø¨ fMe‘wQ SПڳ±É4…ÝÒçR@ùÜUn&ÎB@+fb¦ôŒwˆŒ²êsZƒ„C|3³´…XùG§ô§Ë‡qåò‘ª¶¤SìJ‹Ž!rËͽk§åVpç4!…òErDÂ-æ,u¦@¹pÊ£“5½¯TÔáDë‚Ñ(&öÐmzÒH[ ÔŽÀžûWQÈ_©ÔÔîieÚþþÕ×ûÄ]Žbl{ïGk (^ædQºÜµ¹*H¨"'õÊ ¡ä~¢¤ é8ìIE1+çC®Õenm}ë9"•fð;nGZÍÿ†²áT5îMÍ눣¬­e¸na†Õ:Þ¢Vì@°¶æ“‰Âý¤ñSMFŽ:´ÂÀ 2¶a}N´bbH µî§@ÀZýMD^=­}9)5¾X“r梤;M—¸~•ŸÁÖ<à Ï(¿"H¦añóÅåsâ%­•kÈ$-{†ÆßZÌâð*–4 1³†³eÃ.®¯Èž—»P0¤ð–' $Ô÷6§ÞÙ¤¾Ž¿3BæôÆÔîiF£ Çé‚=ØVs\è5&®qw±HGÂ.Þæ©b§L+Êë÷Km»×>W¶¢¯›Â…ph×kÞPç£ÃDb–”]£!»’ g`•çÆx²áNvï[\1•ñùßQ-oÄüÏËjç;ºjÓÈq9²ˆÆîçaRÌ,E” ҂圹çµA5×Fµ…Íp:w&€ê@<µ5 Õ« ¦ô»ÔƒV¬0›Ð\ÇÈmH66ó>¦£O„bcw‰:ï~t1œÄ[JY¦æö þ‘Τ`4Y•¼†Ê?:¶·6\ž•K?‹-—оšmÄ|­á9ò6ÝUÓ™.\71Ò­Å[2Ü0úÑ ZÕS )š1ó ¶§qV†€]°CµM©c²‹Ô V9˜aì¢á˜Ú l žîäßµ¶B¨á§–/*ê§á;Vƒ`vÓP)šàju 7µ¯­…¯¹¤ Ó¬³[ÊoÎOsDF›Ÿ­11ñ ÐIáέ«²¡¾¶= ]À`ŠÉˆ\‰½¹µ\̹\“ÖúÛÚŠ$4nÁš3kõ¨œaÑF×” (r§ ([[kF+qšHÕ‹‘`5=«‘m‹XÚöé}iŒ· §buî¿ëjæu¤ãÈzÚ¤ :W8òÛ®‚Œz’Þˆ T×TœÄ*–;(¹¨Ae×ÔucÔÔMþKÜ\e5&àÛ¦õ$Ôj½ê&¤ã½q-Èþu9M.PÒDR;ws·°ëRUâR£2„7e݇éD˜ÔÊ£çnt©0S/¤ðÔpôæøA65Ïn•µgqu€Ë;Øš 阤Ÿvß…¹ÓŽ¦æ¹€kfEkmqµiE¦Ÿ‘©)ngò©xãe9£]·ÄPÄÙàFÎ=>kšR ëê4¹!W†D7bÊH¿Zj²5ÂH¬Wp*P ã¾”? 9qL¦Þd#^µfàɦ¨ÈL8›‹‚qz¾¹XgŒÝH½ëœ4R˜„F‘ý+¯¿js‹Öoœ;xièSõïE¹!OŒÌúÜ–>ÃZÁâ‰1x²ç[›(è9 ÛðÆÀ©•R‹‡MƒfÄL— mäOZãÊ[‚¡ÃDª±ƒ$–ëÈU¾ I>—)[ß¾¿T)Š6õJs°ç”mùÕ®$-:DãÄÊ ·%7Úž>ª²ÀP#Þ„ï@h ± ž6:8ÖÔc#,¨IØf­‹‹é{š‘ô¢de*mÖ£B*(kR§­D¦(UZ\Þm”oE±Ïq`G#Π‘nõÄ56íSµHÚ´Tˆˆ]Yü‹îi®næÛ@ÆNª…€¿;ïC#¬Qø¯AÖ¤_—"x*um[øª`šçfw.Æä›“R9VkC§•:Q ë)P°`×µÀ¦Øt¨u¸"ûÓˆïù!=Ƶ$¬ V³J ɬ×\LKHŒÛw«˜Nç•rjZß*ëõç½MêNQ”E^µ"º».›Ÿ­!1¹ICÇ:Ò„‰"Κ‹íÌVQ66:S ‘ÑËFÄZ™UKT¡ÇËk›óIq’b½ÅAÄË#XÐåVµœXÂa…¼V rn¨>—§±%žÇÚ³VydFW‘‰‰²“×¥@×[Ñ,XÔúSÿP®`AÚ³6 ä´7„íOébúÓÔ¸Ø:]›ò¦.Õ  Þ iÄÔ.Æ1qò¢]ª ±â3_p,¾Õ¤± RI°“GšÅHaÔN%KaÊßBË­HÃÆe,šßF¥‘æ.÷C¦Àö¾ÿïµE¶Úõç]¦öÞŠ”CfÔžôCz4JtÖ¤šê는éT²^UÀ±hõÿX¡,zÔfÖ„˜û ¨³ ylÝö_′1ß-ë³nß.Õ!›­ßµ¬¿ïÞô.æþ`-Öõ×½ yÆP}ÏJ’o­¨ûDrX\ÝO}(ÀXr¨'þ*4褚ªuª@£ËPÂÆ¤\ÈÍU`¹´$ô¤Ç‡…7\ç«mV Ò‹ ^ICĪ ¬Ë{\Q3 Àt'kÚÇæ*I¨` •aph*|Ofc4cÍo2ÛSY*óá¥%KFÛÒ·F`Æ'`@CmûRx”i6Ý–ïºØzJÇ.;Ü2¨ËŽW‡Á¸IØuÜ58*lEˆåYø©åi ³_—*½‡‚Yó)ÈÝúW×é¼Áa 2½ÎŠ75|¹À »e#JåŒCŒo»w4'zÞc,ßñÏ:⢔EP§¨ö¦p"‚9¡Œ¡os»ïW'ÆÂË ®JÝ}ÅeðyD8ÐiC¯ZÅ’rÓñ¢HÊT‹©ÐŠPƒ ?äŸûÍ6E*ÅHµB °kUˆû˜ °³&RR×1˜r.Êêz A¡Å»Ï)Ú)ש4qa"Dûà] lïIYÙñx¿(¶m…öÙ`l2‰’KØØéj`ÃEqá3ÆÀèw®ÇDÞ_~‹` £>£¡”M“.S{›Ú¨à8¦3aV67RÆÄšbñ4Ìsa}D±½3”þ¬ZšË‡3’W ƒûULd­$×ak§J©ãM‰O j®ªçÕß^t/ÅÉÃÖj§¸¬ÞpÉV*AåIÀq‰Ä$2á£Í‹.–ùSòŸ¢‚Mí¥2ËâѨ§Áƒ3[úV­EvˆõÓ8QhŒÂàm¹«†öL¦ÄètÛ¥gb¢Åb/á6t"éo•6bÕì<±Jó ¡KÇÛÚ¨ÆÍ˜©Ü³âiÅ•¢m\U]GæK“ÖŠ Å¨Zšˆ´µíR7¶• hYذØ)de››×È ˆƒ©óoÒŒj47¥®Ã©¢EÏm¤u=C .{… ©'¥p`àJÄ©"È¿„u÷5'"øQå$f&ì{×f<‡Ö¬C„wPÆÈ§›niÉ„F¥˜ý)ʵHøOʹX³E´«²aRÄÆÄÈÕ-Lš‚2èoV%®)V1›oz½ºëXùØ?lw­¥±€Ð€E«\E1ͪ¹—.=¦±+š×·*µ¨w¡‰ŠÀ—PW(þõ°1";ª#¿˜ö_ÖŒkóª9¾Ï‹ÎÁ{ÕÖ`  )”%Zê=¨®m½-v·M(¤&ˆjЖµHLE 4,ÿ* ãk­pË÷®,)šÃZäì>´iÁÊÍu­êskK]ú“ΈT†O—µõ4Ô.Ü­BŠXX Þ€,ÚÅ×b߆™§ ‰s»rX$`,ž¹?Jˆ°Œ‹æ8½ì÷¦Æ|»›Šd»Úï¾Ôgj\„ <ÇK\U@I¸¸Ð3]ŠÚß:ée¹²}kˆ ,>fƒA#…[Ô»YIéUîÎ÷5›In¤X‹ß¡ªxì@f@›/«ß[S÷ƒÞ²± |dëq–ù”t¾õžW£Üjö[#¯qEþ!áÈ~í,:[^Ÿ¸|"@uôúVV Z a•J³ºò½p³9kŠ`D‡6ô£½UÁãŠr·ÑŽëWH AØŽuÓuƒ•ƒUŰl’6"x˜ßO„Ö‹)Er»sÞüè³T¬ü9rˆ±7*6~b­#ÀÖ)‰Œß]Mˆ¨Äa0³ú”ÄÝPh~UVNo÷XˆÛ³yhÿ(W×Ì Y¢·6 )b°HNiËÉSQ~‹R ‹2ßR¦õWx–Pa~ïáŨ¼¬ø¤]ÄqW#&1#VݾµQÝ„¹çİÌKu4˜±,Ii𑌻å&ÿAT1ÕØ“­¬bìÍÖÜ©2œÅpèAg Ém@묅“eq”v©J˜¹ÒF*¾]Ù†ÿ*Yfsv7¥ ÁXhB¤P×|'Ú¤3øyžBÐØh(—j`¢çPEÏzê•>`§Òª²â $³¬v9ÄÕ¡‡Ã¤Å”!åÉj¼}}¨%cb¹hð³O‰>u@£˜µ3ªªËH¤Ü±×™ĹZQVg MÀüª|!š÷°éK&Õ|r‚L€m¯zphüêUA>}o¡ªLñzÒám› Â÷(tö¬é0옖A|¼µµéØÐâu+ ¸õZ­PÅA=Åc-ÐÛñÜ}ZP|­k_SE$; ÅIìEtd®'Ò6Roªüêç(Ü ùP ³H÷Ž=&4Nu&¤m\€ê’X–½ÉûPµíëo­@>QÜWlO¨ÞÕ$‚ºõ hH ¥uê*T\Ú„%7ÌJá€Eå"ö; êk•Ô“ï <°ùÖ\ÎÏ3³³1,zš­È¢Ëbñ2‹>%²þ×-è°¸‰b#Ãb7·Z«YÁFecQ«QÞšÝ'îúƒjM/}N¦œ@Øl…:mÒ»°[ùT›l/KhÁõjzÓ$èNAÓZ*!¢PAQ¨ë@ù·æ¥=f˜S‚}vöÓÒ˜ÖiFbý+7Š/ƒ/Žo¸Ry2šÐªÜMZTx%Ò×$u¬_ P“F mC<)ŒŒ$¡ƒ)òÈ£QïDâdC,3‹U'N"äÜHGôŸâ¹ÖˆÄFŠâbñPh$ýiø>'p³º±a|¿:”ÁâÚ/¾%Tò`I4±Ã°ï D'˜‘Š[õ¬÷<=5°Æ)0ªÑâRK^æúלäOû«Ïbpøœ ™Öè/£+ÜÊŠ>-6Ø€³/2VÍõ§÷>Œn¿‡køÑéýT™$…uiGý:Õ($Ãb…°ò{_Ã}?:”©³ MåÒŦņè®Ç¾‚‚n!$©á•Ê„XŒÄþµPÔV?T†L4¤ýÖ:êÎJÚ—4Ô\Êé2 ö Ž÷§W+`TØÑë5"„Èdà „ÑDžÝ VÄÇ—cAìÖ¶q‹•ŸWè+Qpøh᪋ @ÕM†­yÜ&à .$XU9Ÿz¾³ÄŒ©;dYÐYÀØ‚wúÐcðÒáæ´‡0mCþ*V+ø˜bX™<€ß3XÑç‹Ö¦ æp弋f ºÞ®f;*‡v¿›(/ÌÖ? 3Yô†™«£J„‘…¹e “ì+¬J0³ÚÛÜT [“(î×¹¹7üéÙïå…5äòXÔHÙfÃN[ƒ@·°¥KqqJÀ}¨·— »uaz¿Ãš5•DS0½Žßù¨áêÎÅßÒ¼†—5fx£œZT¹ê45©/¢ÐÊ«ˆ!3^4ÕÏâ=è2l¸!H ²¯]f:aΖQ£çDHÖ©8TªÜô\ž‚ˆ!"öÓ©ªÜG‘Daƒ;‹1Ò)êz™â9Þ\Do ª:Z‘ñrá¥õ–Fõ¯:,YÏ… c÷l×Jª¾«t®6÷­ãÙBâX‹·íÊ¢dÂc&Ú‚ f‡±6€å±VäyÖ©ìnƽìa+eWE]«˜Þ¢º”êḮ®©=Ú¡ˆ¢C–ç‘Þ–\ocn´j5ê/C{í­p¡s@\ʹ"F*M™ùZ‹B¬¤0"¦Ž"ÈÛ`½êIÇbW U>r,‹Ðu¬äkëIžWšc#›“MHäE ÈÀu"±úÚÖa©½np|?ˆãïn°á¶q}¯­zSê,-ô®œ'lò0* JT‘]Y)Åúi¬)l9QQGz\ƒ©ÜŠ)߉¤<¶÷¬¤¼Ø‘œÌuµc•1y×KÝmþ¡I%NÇ7úÿ=¨ÊF†é-¹Ú…‰;’h !ïêŽÞfþ(H±7yÜûQ1 cY¨³5ü"O;µB¼qéäöÔ± &‚#;oâ=ýÍ’[¾ùN?*ò·µEÊê!Š6^a–©q ž&üHÜw«zÛ­@$‹‚:Qd©„Ë$2¶¸"´p‰ƒ+d]—ÖßJ³‰†@4vañ-ªrðÛ11b<ƒ ~uÏóeka͆Ã)³@àŽ®iX˜p‘.b_a{Ôˆø¼c,rô°kPË>5|˜Œ}9-¿Jzþa£ÂKa»Ý­Nc°ÆºÚàkUcâD26–þ  ¨ÏÁ^ù'úж!Ä 3ÎE™Øý iRŠÌÀ I ì&cä“+ê·alÝ;^ªbø”…Z(¢ƒ¡ëFȅƦ‚@‡1ŒœÍËÚ©(¡Z5:W=ÞÚÄ“jäb®MˆØ×ŽuDÝÃMöœLOœy_ß­šÎฅŽF†V´r úF´Š•kíÆìf¥ŸÃ…忣OzΓs©5wÿíò©k?R¶Þ®J,FªPëš1ÿýñúÑ1,×cDáËùÅKZÕ9hAå¥M;š ½h‚Ó‹B¢ŠÔ@WH^Á®\*Ûâ$Ó:Økm/Ö‡sa²Þåݨå UÜ쿹­²«„\D¥›ÆePu7çV‚¸øŒ«Îú0þh ‡Â„%îI»{ѪڙS{n-b=èq2džŒ3‚ÌÞ•`ÚáÈÛF=ðj—ShM´Î«ÔJ8¼D³¹,H^J6Vk†‘¦¶ô2ŒÉ¦à×+Ûc+š9|Èl+21jÖä„$™¯3jÍ™2Lëш¬ò‰w€7ßÉþâ~cQ[8,F‚)-o„ô¯=äð±ÑIm˜VÌÊÊŽFºp½ Ò æ¢³âšXý@éNÙó"7ÊÕÓõŪƒµWÝu…~D×bi÷G¿š­‹ }è )ñ„è°¯ÔšSã¤Aí–‡È;ýjB­öªŸl—ñ¯ÐQ.2Aº£j6,[cF‘´T÷¬ŒL­,Í-¯}Ðs»Öšb ‘9(u±éY“Äb­î§ÒzÖy±ÂpË,¦VóFšûž•«Ÿ0*à2Ÿ„íY<;ÐÈÀeË&àìOzÕK2_IüJ×QÇAàJ ÿ–ú¯nÕ±€˜OƒG¾ª2µRÇ(lßá!…ø~R'xNηâµ:¢øØµ±¦ƒ¥WúÓ´®¬é/½0›Ð¶ºT•ñh¤hYZQE@B"¨ì*Ì€˜Ø íqß-À:Ž¢±aUij[iVu¤È¤Vi%¨Ja·„[hhÎõ *2€ïC¥èˆÒ„ÔPhk‰¨½“BÛWr¨k,̪£™4 /µHiYdp;5Fh÷Ð{Ñ2;uJ“¼W}ÔÚ“$xi.$ÃGîƒ)£aÎ…¨¦ØL#(YüÁùP® uRòÊ>Úý4ëPʤ}ã ïÖ³™H…¡…#åé¹£Î$eŽ7 Ú—#&úó÷©C­†õ §Åp‰Y¡-á¹7á=*­N5*Ç…`À»6gåYC87¾«Ÿ94Ã-¥ZÃq LJ0tÁ\\ ¦Ì.2Þã­:_)¢t½kÅŠ‡‡’0ž…}7ÐûUXãfl€kúR8ya‰‰Ô¸ÖµñP ™Öìª|è>=4Ý«¤ÿ(<^l­ä‘§zTØ |еÿ¤ïVˆ-–Æäw©·=/]q†k##e`AƒQjÒXüès[F¶ÕŸ0hÉR<ÃKVlj"¤ ËÞç_z`d)Ìu£Z‘˜gh˜2›f`¿ïåZ>hÅÁ×76îk2Ç8geô 7ש«X ôð¤:|$ò­q¢¬€Hé]bZ;[C][#]T‹F")愸ê×±'¥?(ÞÕ êšíEL KGøiIˆþ+”‡…d‹èGB+_ˆašqâÁþgÄ/¿qTW+LÆG‹Û˜þGé\ï­JÒ†!Q´Eˆë­`q¨ÀÅxª4p ÷µz S*àÎ]²„QYük ÂK‚dŒå'­ôþ)ç6Ä­Õ£â@¸¬G_.pAøO1Z| “؆M>•Ž>ãUaEȤ©Ë} ºÐHÅ0îãp,>u!(ã‘ÓlßÔ l:¹´,2±*E­aÊõ6×Z Çv(6ÐS lÙBëïC2†“1¿—kTAI´l ·ÔWeéJÁá¤È%IBéÞ¬Dþ `Ë–Dõ/ïDÿ¨ u$,EÅ•ZQgf Ì-¨Ñà±ráŸ,we¸Ï|^Ý 24RMÅ\ž>.!)[›//z¤þ-Qâ`>XcŒ'ïê×6)gCxÐ^ÿµJpœ7ÚÍ;_.ç­\Š5‰m—Ô’=^âµ%Ý¢çÅ…$S¸¤#f!m•íéëÜu£ c©µt`Êë× V›ÑJÈñmˆ;Õn%›ëBâÞeæTsöïA‡ÄG0°ò·á<èókVê)€oMÈ;HÚù—çV%º,jHøÐ~¢¡ÊHe;΋ T‘-µ-”òµZu”ÉX°«2‘È|æÒjÃ-¨mYJ¹íBåm½±•k[Jà¶4C°j¸¸ÐQÊ—:iKTe;ÜVjIÛ_Þ†P¢vr éqDv®Ð‚­ª°± È[5œfÁÖ€øj§×ñD—Ïྫྷ¢êߌT®Œ—+$©ž2HæÚ„­tQÄM—Eu  õ$tcB'+@ꈀ·…Å1b`åT4’6ïÌûv© <²Pî Tã͇…0¸|YYsEÍ®ÒÔ‘ˆ–óºÆ½ÍïUfâI× ¤›zß—µPˆ±ò¬ÌãðÌtocÊ­á8x•“4¬K{Vvß ²æ‘¯bÎN¼Í^ÃpÉ™3JË#LÚ“ò«øhâÃŒ˜h€nnÚ·ö®yaV9å$Ê®k|éœ'Ѫ‘ð`äŒKÈuª3ŽF¬r’/Ö·ðÍQˆ xÒìIÚ±xÒ±Ö×Þž\dñJw„Ë }ùž· Œ©Õ¤×µ©8\2á0‹õ¶²iùUÄù”‹‘bféìk|xäÆmB’T>f%›µÿØ©“Ï–UR£ôµ6´ t¨&!¶aén††õ Ò™ì ±qROüK‚¶úÕ® ƒÃ8ƒ²8ëXñNÿk8†BU®šZ±zj.Š5¡L®™£`ËúQŽ”¦† o<¬FuwÚÎÌr‡cZL<Úlu¹Y©¨"¤m\iE•*n¿Oâ¦åÓ)sfØô=hˆ e Ý4=:Ô•ãIeÄ*J¾UbI¶úÔˆÔ¶9GÂö=ªÌW¸®Æ(|ˆËq¡¬çI‚øIdí 9Çޠݺ0ïV°‘x5Œ›³œçö¦f!]-¥«¬)ºÿ¤ÿ³X“׌ŒlZý*£bLp ÜÛ*‘ïVtÌ ÚÕ.°¼ªÍb9Õ@—;F¬ÁAeÞ ‚9¯½¨ÿ.T©N ÷5(]hÂÆ‚ú×Jæ8ÆãAÚõ'F-‡AÌ\~t«ø«ˆŒÝyר¦@ðñ%-§Zµ†Â(#Æ$–Ó(6µêÍJnA”ÝX\PÕü:áž ‚8ƒGqf<¯JÄÇ"ðÈ¥¿ÖœZ«MÃÊb{î§B:Òµ‚,jw4œFñ©àìhïT¸{³FPI$Ò­ŠÜ¬˜2ºåqqùŽâ—,²Å IÉ’6Õ_˜÷¢Zb>Srt:P£(+æõ؈×õ ìj¾,ø ³Är‚l@ôšn_KeÊ˽¹Š·å H®ÒOUô«âV[.#ÊÇfø[çÖ•,F,@ÄGr·ó-ïjk2cb×çT˜…ra·QIälË¢ÈlG,ÝjV$VÌ…“ý&Ô¼DMLÒ_•õ]Cô/B _P6Ù»Ô’ ß­Þ…Þ…¨Aa¥%Æ´æ4¦5”L‚–iÎ9RØkS@aBE¡¬¢çBñfSi"ÕOíR¹ee]/½¹5Ñ®9RžRc&@† EÓ˜¬9 œÊA×c{20¾yÔçô¨X.6éB,)ÕOño'ÊcþÕ|íJâ1x¼=ö͘Üè³¥¬þ ËŽQ ¸›V³¿Š2ÉéømðûVg6Ç‚ ý*ú™]ÈcȆş™£‡ŠVvg™Z?éõ7cMWÓ.UÉøm¥ ©c”€¯¾Pn¸5Úƒb-[q)FØTVšàò*u¥ÿ‡â ˆi˜]bó<©œcÌrXéòºŸâŸÿ%¿÷GéGÿGâð9ï~t؈驤GGˆ|˜)›c–À÷5¶¥@TÊŠ’š.¹`a`zÔ…z‘@ è…IÓXàæV:eÿJ¢€ÅFÊ/Þ®bÎ\ÿ‰’Ê;Õ$Ĭ̪Ê,à›Z«é‰Ê«‹–Ê^ù€ØÓNô™Ñæd1°DMœóîˆC…”z„‹±÷¢+O Ù°ÈÚmcY{Å_áÌ—š›Ö¸ú)ä×Q][®5º¤’3DëÕH©"º/Xt©2i‹¨÷M½÷¨˜e‘—¡" ¸Fˆ§ç\˘é`7®ô‹W5Õ…Å·¡&õ$1®Ð+3*‹š“PPÀ_ø¨‚ᕲ¡`yçWpøLè|mü6ÔÐC…„UT!ò[O•[ÃÈï%[<|úŠdþ‹] qa€H—,o±&å[ß½¥®F Ô’,AqÖ¢Ä(U?ßN—Þ¶¸ørb,·!ÅÅY°Ò«²#QqWÒ9<VK€B*ëj1{e6 îÕœ:ËÅâÄñ92 ù ê"xåÆNaº°ÔSø¸\,°ÏÝBÊ«zÍw“އR­n©¬[”ÅüÄ©à›iW£ñ3›ÜõGY]ZPb hù|«QǘA[èEoˆ¡º¥¶àŠŠåõzÐ(,¥pË¡½Øµ31®XÃ+É5S 7‡q)#5Á5pØèuö4Oêr Žÿ­‰ ÃúäþÔnÇ3• tf¥ù@ ÝШXÐÈY˜*}c÷ÎlÁØõ©!½T'zæ:{б6ÓqYN4-D5P½ÇzÚˆï@ô š¢¡jš GBEÕÄ¥IÐW Ý…  ÔTIÖÖ©bFëô£X™—5¬¶õH¥`Õ†X°’»‘æRª3JÄb Ã|BWäéõª8©çÅ8o¯•@Ò³yaÁðxÙñzrF¹é¥h™!dµŠÉ¯{íC€ápÅZÞ$ž¡ÐSˆb3¢æ`,Ëø‡ò)ã2+CåeÈâë˜ö©€;"cšHšÚnE(ʉælàwKRɉDZRcÎnH; µbß* EvÊêI#ªÚÆÿ-~U_N#™°ò$š{Un ‰ƒÎy³Mcq¼F' Å¥‚YbCtåÊŽ]v§ñ¼dËpšüÆÔgXÕ\–V{›t_Ú«®5%Ž'’6f–0À‚/Ó_¥XRàuÈXeU棽t–VRº ëÛm¹ŠYk0ˆ©'CR×ڊáS3›/z«,¢0ÚìF‹üÕwšIH2F€ €£b晥’ãE”$†>uV=Å,+ѤE®u Æ0O~¢ÞôW€æjŸÄ#H°©9WŸ"j·¥`røhÝÉš»Â[ï™ õ.ÝMdð·òÚôØ!ieeE²ß§3û}*“bçÑDJ´ jÙáÑxXQ«Kõ§tQ€ª¡YWjí r/ÖÆ¤‚7PI¦+ {‘]ŽÔ5&Ö$›.OJ£‰âE^Ð"e “E²%Ú᩵Váøß´J!•P3zYEµéj²(.M‚‚oT²¥4|DAKXõ“kb4Ü€Y¹š”9™ËZÅIkí@¯âC‚Ç2ënÚV>ëFC¤«î+FB°â€Õc’àô¨`T>25apZ¯âTɇqñ0Òµ<l6<«…µc²‹š§.a•V;V曊´*Å•º µ½éÐðÆ`f•Ê—$j¶>[‚Ê5¾õÎA I_je”³Qo/:±Ä‹)›ëA‰·¨is­DLrÛ) s!^Æ„¹Ñv8Ø’Eí}h&Wb­ZDг•T‚hI¥}­ *ð°kì¦Ä‡ñ8îÈ@C$‹µÁRÿÍ RvÖ…ñtÿ˜XŽ@h~uJXñÆa¦m@QU§¤²0V³l£z#6B¥ ôÜÜ7Ϋ TXXŽp^VåÖ¹8„3Dé$E4&àÜ Î¬<‹ƒA ¡€Ikè““ 6 î;kI€;(¹ªØ|SɉÉ'¡Í€ü5eò´N¤Ø2‘~•™.xN„P:Vyi QÜár.E©1ã"hÃJÍœ  é°I,ªcŽ8ú¶¥©Ð |Ç „VP »X_[ É–Y$¾w-}îk[‰+¾“‡²8µ¤ëÞ²d1‰r+BÍ鹺Ÿsçé…¬-,bBIå[8,2ac<¼Ø½©|3I4Ì[(íO{G:xÌíTõ:šŸjåQmEû×Y»VÀ–G>]ZÜ›QUçˆA—(k­ÎE>0Uî ï¿óTJH¸À¤30mºÑL_XJÍ–÷ MÏ@+ƒã걂~U£Åx¶ ð¥ä‘¿ÌaÚªáchâ&b'Ô êŠk<²ô¢þ«cÎP2¤d.õdXïTxAÿ‰oþ6ý*à5®> 35ÎÃnô^UFvU·SE© u?­Vâ2Â% …ÞÜÍ7¤D®Ò9f7&¸T + M©€ÒAµNjt`±˜…”]ÜYGïT ‰’uA 7#AWÜùækù®2õ m(’F ”±ï­jÐˆÊ EM·n´ðu  D n¬'Ã]9[qZ b¹”ÝzÖ:Ó`•â7F#µjQEÓÛô¢ŠFš?‘¿#N"ÞÕ¸EèH¢]ªmz@-}ªt"³q1¥+Ë‘ëZ…t ‘DË ¸åÔVlÓ+/™íR…¯eÔš¸Ø8€¸w½ôÒQEè]ÞÍ:§ˆ…Ò‘õ`yü4Ì,N"%Ý•[e×§Ìd¾#˜ŽÂ†G$÷«[D–EùÞ—2}¥d’\Áu¿:,Ú\š%4¢ø«•ÀÌkV9Ú¶±éâàFéçŒký18BËŠ”Ckkˆœ°Ía¹ËùÖb#q[xáŸÄnª×¾úkùÕÇʯ¬²…à–0EÙ ¿_Ú‡™pqÌèiÑ0RXè¡MÉå¥ 7ʶ±¾Uxq¶6"ÖßzÒ¾SsËzÉC–E'‘¹­Ic›“kZâ*£Û Y9 fÕa±¤lC†&öQÎô´Í‘ªõE-sm~txšX\ßd6úÛÚŠæö¿~T3’$²µ”íØW (°ùÖ‚Xfõ}´© aCš¤ÔœçcÐа7½I`|£s¥°›{Ô€Y¯}ëm~µØ3\sQRY:ŽçaIŸ…E9ÞM´û²/ó¡*qÕfS¸“`9d¸”Š Ëæ-‰¿•,9𫉯™/¦DåfÔüë7*Çá3*ÈÖ*Zÿ:çygHc©™Ë¤‰+ò›Ðº´xi‹©“(¸µÉ£É ‘ C”ر½ÍA*º¬D±r[ézËHáâL<'pP›Ü¥ö5wÃÄaãñ•¬/kuª1¼m:››üéÿáéÆ0 <Íæˆ]n}B©üxÙ‘X‹PHéBžG"ã^´Ùƒf=)lõ®^|(|u”R¡›µX6°UU( H ÍÚ6¿È‹~õÎËFilôƒñ'I[Œ¸ ¿šC˜ŽÕ›,&`˜{úHwb==¯&'™ÛÌÆÞÕ«S1¾wveSùò®íO‚ #ˆ&—>fµu¯DA-s©4J-ï]pÆ÷Ó¥V®©!$ '¥Tãs[ ë†e3ÆŸxÚôÕg+A,š4’ý«7!B3чQ¿ìγÊü0ðÞÅÅ}§¶Fo('W5´ñE3ù°ër~ ·ˆ®1…=*ªl½«¦Lc¾Q*ˆÎì¢ÂŽ3ó3º­ø Ž'Ï`jãjÇ.×Ò—4Ʊ1‰áb^?ÂH­hÉ>äÚ²øÃ+qŠ›ŒÔrðñõ^õsÄ qx2 tØj*Í4æÑ¥ÇS°¬KgUœÐ³ËäËbÊúf'a~•Ìe!Ô‹ës·‰p·‘QÄÑ™2ee#G¶Âü©8aÄp©gÂFÑtÞþ×§nö«ü>lñø-k¯£¿jÎ…ÙËáߣ©µ“ „Œ†ü€{~¶­JšÀØ‚7–øl36l¬·7!N‡ø¤GİòXcÔ‡ó{Zí˜[^ííc¥«[Êsª“ÓKoQ˸¥.&½–@ì6¡—Y¼L÷Ü.õlG %"³ÆâèI︣’ha‹Ä•ìʦ­F±_Ÿj‹€oÏ©¬é¸«æû˜£Uþ¡rk“Š=‰oÒÞ_ÒÔ9W¥b¯˜;ŠW†ÈI¹¹o¸ªç‰†[}•ýf“ŠžLQPª£Òžô^Sâ’ª…,@ÜUœâä° wæ{÷¨ÂDÏ2øVw¾ƒ[ÜíZÏŽ4‰â5Üó5ž' )Sð°:cZ Ú˜Ëöœ¸c©ÊZ=y÷ùQxO‹AÃq_kôRÿ›Ý[› vjÄÁNpø””|'^â·J«Â³Å¬mÿ×±«Ø«£SK]ïD4­£•Æ\¬.╉†I-áÈΣáfÔ{W^¤†¡ƒÁ&L>R€È¾¡³TO†`3ÂìÖÔƒ¸¢F%û`Fõo æ%ÔtçZ“Uèù³OæEи­eee̬b³ç„6("yU…û 8âžÍ 09ü«|v3Wtµ ʪù ‹~ãj×PÀ~Gq]˜,·6@cÈŽGÞµ ¬v x^J­›r¼©"Ī`‘³g¸©âQ¢e½Ç*>ˆ"ñH³[^UŸ¥j&I#1¨éIo¨“FÞo2Ù\lmo‘íIÆI)O !eoˆ@©¡1€#z#ùò¤áoà¥ò\÷ó¦¡ ÄÑЈ£i¾–¬)3–;“zÖârx|9¶¼‡'ïUøT(°ý¡Ôce¿*Ï.î5:€Á`LŠ$•²-ô[jkDeT‹•–ÎI¹5é tÀÖÚß1C*‰.ÊÅ$üCŸ½m*TçR<“F;9OÈŠW…‡ü3þæ®»#¦W‡nUVH˜\ ,?1E‡I8llÂ/×Å4f4‘âº_kب Û4%» :!o´aX0$±»‚âȾ¡"p=EFSUÄÄÇá½™:pËŸ÷‹ÓSg‡ÿVñsÁ‚hÙdÌšªluµgÏ;ÊåÜÝHVUUpT2²j9ÜûÕv$–£•ªA†¢¥)N´kY&ùÕ„Œ¼‚0¹²m£6äž¶¤D`[Ò5>ի£)„‰Wï$bÉq¨oŒÑjÔááƒæ·œŽ½*CKÑ Öº0âJ¡¦i}ê(Ô‘ò«zT¦ .*J‘R!…‹ï!x™erµ;ŠŸ ÷ŠL¹¾±­,F ‹œÍ/‹ŸQ@c×Z˜°¼> °4¬ªVÓéXœl§J‹‹!°›„üE –ÔôÆð÷[ø²Æz2fý*Z<$‚σŒ\ïÔÔEÁàÄK›#(åo`ksô‰#˜†ee=t5m0øD^Yß«›‹†hŸ,‘am¤Ó¹ð6†3ʳ%pÇàÕ …¤²ó"²àÃK*fXäa{yV¬7 ’XŒRȉsqæÔ{ŠÖòùE¨1ð)- ’ò ß §GÀ·üæºUÃŒ‘®|B)_!°:Ú£ÿM`r¦"3a¾¢õKÉdl¡Y4R,ƒª›×_u"àî bœ6#ž?1æckýiñLDDG‰„2혋­?¯èƉ†®C§õiSž5\ª©b°ø–Ȳ€À^ͧçOXÙEÕ.:iŸñ ãE5!Ÿ6kÛçKÏjŒ÷«@ÚEŠG2B66µ¨#™{tÍéͳQ&vô‚~W¥bäH”´î;(:ß•E_üD÷X ÚÃ1÷4Ü<€``XäåïYSb¦“D«HA*ù´·ZÒ –EóÍÞ³.ÛNtfuüUÖú0¥ÝMíj|ÖêXÍjçc”ØÚ–I¨kå4£°éP\‚Þ–­qS˜Ü^¤™`Ž19¨ØûÕ‚«ãÕï «¡ —Þ³L•¦] +~T‚Ä› ½·5bE™@ÒûR›Ê¤¨PzŠŠ0  .{а\*:+tùÔûkPÛ[­E%Ë¢ÖçakÐâ#Y¡³å³\^¤ÚÝ…B’X7©& ±´ž$–QÌ Pœ[ö3M†‹õ«\RlÏ௥7#™ªe¬kÍèÀçb}cþ‘@Ì´ÜoDÀ6»D è¡i±H¤‹1³IóO<©•¤%¤S qS®—ùÓ¨º(—Sc¡¢ Nœê@µZ$ ”’±Ôs£ÊJ‚–ùÔ‹©¦éP¬A©‡O ©ñ7™¿j¥„ˆI‰DØ­h°»“Êõ¾0ZåwË–÷£ó¨l„Ý¡ˆ‘Ì­Hö®"õ¦P]í`ăJSz2-BÕ>! šŽÍÒ–Xç531¢%³<‚×í­t¦òhB F ÚÅcë³ê¤]š­N— ”ÜÁõŒØ•%pSÄo…Çm%i­s³P¹ÁÔ‚(é%_Œ¯4›ØƒK›ÄѲ´EOhé×¢YdQe‘€è¬ÿ©I¦âsè|s}¼¤RŽÎA…ï̚ђWo)vosµC=—V6~gôê´x'EGÐ$5¼Ç)ßmªÖ!F.Öò÷©bQ}‘±¨ˆä/bFPé~]E3'9 ¯{”R ɽj‚×9A÷©zëÒU›5Ðu£,߇éV¬ìoõ®¿*X%´ Ú‰J3eYU˜| ëV¡#Ü^ôyÍ'U;{Š•kŠuÆãCIÅaÒb]<¯Ó‘¢&Âõˆ;’ƒ­”‚äkó\hjôê³€Y†ÍT¥VŽB®ºŽ‡zÅ.à±lI.ÃaÔUÜ_±!L¬º†ÓŸzŌى×Z¹†ã|ÈÖc¡¾¡»æ™ÈX¹.'lÈÞ<­qRðjdW'͵Û $(VYü¶?¡çQ6"V[=Ùmb+]3Úäl®àÇr¬4§¥ùj¦U°(Xå `Ó¸yÀ¥åbÀ€kp,-¨¿öæŒ0~%:|úVƒ€©+pEºÔØô­YbeûÃr YÀÜŽ¿+׬·Rz嬵õªx8²‰Ö@åz͇\ †ô¦*ØÐƒþR“ó«%{ï¥V–HSâ†7•È\ó¢”0 +M+‹ô:W:ÛqYÄAE( t -výiäP²ÐˆÈipjó\›Ó­zŒ Z‚gð0í'Ä|«MQsoö*‡—Å”…ô&‹G+«{Бڊ¢¹4 ä̬±¢©µ:œlèã³('ò¢Ëå:_M©œ:#µ”j[¥2"cÂÏ4¹Q3®œªôVÕI;"¦‘j/N(yÐ2Ú¬e%¬¦«I‹‹’r/k‹üV«Œ]=Ou]>§åBê-”h XÔXb¼š±&”âÔùQ¨½¹Žt£æÒÖ¨“mI¡aM"Ô,+(†= ÅíNe!-µtœT²FѪ?†Ž5{R±8†À㡃­Zš!,&6lºÜ5¶¤ààð&>-³|ìhº ’ͬx[»5ì)Äý稱Vþ:S$gm·*ZzmQq77"õÂÖµ‡Ò¦ÕÕ'ÔZÚ†àj l4©ÔWꓪI½ 5½Hwrº†^†–#ŽûDjJRl:Š jd‘a¤a|Ã(^µ"1³ÄeŠHÛ3)ó-¥ZpXç@J¶ ŠÏÁážo19PnÆŸŠ…pðçŽi_@M¯D·Ô±fåHmQqUpb£;0>«›‹U¢.öQ}t¦v„§¡ªÜKIÕ¿ëVB0 }j· ʈ¨ºš¯€š4:PsGó9jh"–?Hö$5XÀB`ó]¾T—vŽH#.À6€Uœ9GAR ™Nâ™è¦¯­Gz»ÃtŨFÐÕ5¾`@'Ú´¸|>ñùˆ²Ž•׬Õȶ£t\ M%¤ðìÇa½˜¤uMT“¥ù×Mž2r\yO*¯Å ¡ øêÑ7z£Å›ïUz-\ºŠ(µ-»Ñ¹Þ–ûW&¡£ž=\ Tì£f€°ÖeèhÎúSVhDÖÞ`tæŒ$ó¨j°p“™Vàê5Ö—&pÝ*Ê•œÐÓƒbm;P`.TÔŠÃH®"»òýh€÷ÿ¸Ôƒ–¸Šbê?=k²ƒ¹?-)Á¥e©7¹Ú›‘O#ïzèãÈsn?J±kc†¦\kƒ˜èGAV¤põ¶Z2–>_„ö#÷§†sEˆ;©èk´ñ‡ZºP‘GâÈáÐ_âíQ4±áâñ$ÔŸJõ¬Üdï‰lÒa²ò[‰nN%½¢ƒ0ÜÐ/|¶xQ»?J¤ªÄk}h•$¿ùon¹M«?ªr4bÆá¤Ñ³D{ê(äHñ)•$FɱS­úVw'þÓÿÚhLRpŽæÔêÚ nTÆæÚm@È­Œ¤m˜­TƉäR"•ÄŠ/å>¡üÖn Jq»3<ÆÀ›› ò®w–|2=\ˆêF§‘®pH>g;f:(¯=†,lb+¬6õ ×¢ñÖY™Ž r5Ó-ayJ‚]ƒ;hHØ‚…9Æ–¤Èr§}…TåzŠCªøƒ!÷§ MÈ×ò¡°X¯×zÉ…:ëKkntöŽB–È Ö÷ëQ(Š‚´ÆÓ­ €EÊU"öRG½:¹,Wñ(ÄTÃÌ…õíP‰˜0Ck¢ÿJ† “A ЛW<‚ûP›I·aAqU½ÍJ‚M•oì*0^¦«Oˆ‘¤ð`,m­E¸–äɼ²*v½ÏÒ…í”2æ!†„­¨pð$>gå;ßP´nK5ɹ¥sTD›“¥öýhÕI6ØTƒj¯Å?ÍE¾Ë·JºˆÄ}Ò«žl}+üÔ¤ÆåÛïd;³mòffÃ."$´lÊ´Ü>LCx³1ÉÔOµh4„ïokPÈ۹͢¨çüUùZP$JyÿsHšb[Áà ±Ð·ñV™T¯Þj£R£Dýic îTݽ#˜ÔèPa".Þgo×¥U³¼…ɹcszlÎóI™´€å\«a¥fª‘ýªÎ Òµ”X Ï!LÁ`ÚO<žTëÖ´Pª,£ó­N?hµ8`!\± w¶¦Œ$G£\Ò!¿BFÕ*¶Úƒ²,ˆ}¿zèÁée@¾Â™“6v°Þ† ch•ÙÆkj£{ûT‚d1Hä¿Þ´ƒ‹I\ 2ÙW@¼Ç½gÄ"õaW£ò‹oKŠ ˜ÒÀyBæ¹Uxö4öÊu·:¡ÅTxàÚþQ¾µt¥Å5Äû(§—Š*±ÒIކÔÙ (›üÍë›PìA˜ÈÂ껦ŸŠb0ÎÄêÞQS‡0ˆ:Ý«¤±x”` ëÌíZø‘| Ð~””R×ÌozQÍ'3l Ó½H‘ŽûGZ €,+”’l&„éb†OR'âZ§”rÀ[crhã’9c,ºê*äõ«L,hS¤Ú–ÚŠF”ÂÌzu.ASA¨Í‘ùª“]næ Ø\˜k(´’1™×ÔP«Ã-ÄfYPšU±D˜¹qømjy&ÀÙF³·éŠß—ö_æ£(ÖàÿÔÀ~—¡5½%3(V)#BEýj®)`Ç e6Ä=êÒ­Í€Ôѯ™ƒ(¸ªwêhÍíî@®¶”A,.Ì u,)‰r—®OÌïV"ãQ¥1 l>b£q eHrí¡ÍL±¹È/o5†Õ æbÛ¶íBu¢®·]jôkŸkñ3G•Tª ;U ¥˜…Q¹5_‰Ít‹ÊœÏ3UÈ…Š‘Aʧ;ÞQþþ~õW)&çsF©˜xžV² 9ž•ŸZð´BNU“Wð¸[4Ú·à½;p &­Í¿ŠfjܘͩµíÊÜ…Š‚,jVʶ¥‘‹^צ¡QÌwª¬unhãnoZ•hÔå@¾ç­^Im{éB¬-cLRÓJPÃPË#'ÞÌ¡lÀFµ¨YÈF#såçJu©*P@&ÚÖ~._wn¦¬Jâ )PvW¿zÎ&ãSò¬òªD;_@hKT3Z‚#žtQÍ…cZj1²ªß@ ~TŒc•0ºC墙Æcm¯I‘@Ì.#pÞÃ6ˆ7o9ézz¾rÖ–Yb>75#K1Ê£sUqÛÝaW¯3Mo1 —’ÿ&—&)5ÊuiY»ð¬A"&5r똖ގ<>çÈÂêoæíBX( ,(âÜÿ¤þ•¤Ì‹…QègÿQµ©°Ås,±‡v¸ Z%"õ‰„å4W¥©¢µ…h`qvÃHu·”íYà64P³#†ÄÔªŽ dÃcAcfC•5«™±14™W-øO0}©ì2c°ë" Kk‚9õ…i0ò–‰Ê¶ÇÊ5÷ëNÞ5Ÿ[êHØ‘íQƒ‹’OÂ2û›jj„!­\çÕ_jQýéK®m@áܦ-no®£­_}Û­gF¹¥ïš´dÖCïTñRßQKéjctÒdhÁ·ˆ>@>uоÔK”“–Eknâ„‚ÄÛÿ4YÞ…ª%•‚æŠè7sÏÚ¦á‘\ ØÖQN5¨jc-ìoPfúч@š,¶¦e©ËV-((*ÊK.akÅqƱøeåuèN[})h‚Ó€ ©´Q*žF×5,^×snW4È”\±öêpâbìóFÊvO)!~”â¬ÁH·¡[õ?ÅG:k[5ƒw¶´”zW;Çç–ãð޵.É^#ëøGST&‘廟ҳn$âq 3oì£aKBÃsò¨¶ºv#+ª75ŽëFá0æ_;œ¨9õö«À…\ˆ2¨åJ›k`€¢&ºHÈóìÆ—šºæ•††©Î¹4œãß°¨Ë^Ö¨bÄm¹æiÅV½nõ,YŒ=VW¦#6ææ½"AQ¹"æAa}M&lT†»f+ê¶ËT§ç‘f”ÚÂñ§áî{ÑyÅNÓI­…´ ¤»Òó€44·’³y5ƒv½ß᪣ɭ…É«:â9ûÙEö¾-–ÒçAÔÐT^ì"ÆÔ¶`5 -}kZKÊ]ÝG':z’îE‰°è( P“YÓ†sM¨k^ÿQH»\[çFI#OZ°åbEòéO„ùˆìJ¬\å;Óbb¦Ö¹ÊJÔ¡Hu¥gÊ.A>ÔhÁµ¬4|fŒRã¦-i”‹t¿z$7r7µV’khïz˜K¥êÓž)±ˆžëïCÄpŒïãÀ·¿­@ØõªQKk$0=+WˆYbñCÃÔü뤲Ìe“¨6:8]ÒUxÛ+®¡»Ö´É%-*ï¨`,Eeã0+jªÃcE˜¥lÅŒŠXƒ”q&Ì€s¨ÄD­…™æ[¹\Ç]º Ëḯ³LIV`7«Ø¼v°®‘»38µŠÚÕ¹ËgcÈäH­¦„Vì­÷‚üÆjÀ,EÉÚ·J@:œ¢äûQÁrC0.F¦ªñfE…º©¹Þ‰‹&+ªÞÂCÏÚ£Š0ÌÈ5 ¹Ô›õ¦Ý-”ùGMnOµ-ŠŸ*,ŒÖ¿¦À|Íl·*õ°µ-ÝŠ›±×½slXPþ8&8ÙR®jÛ2›•ǺåüÍ'¶‰Ÿñ•5Ñ¢±ª S›èÖaø~ï@îÖшö©¢‰o4ʽ†¦“' 4¢$f v,45j‚6v¹a³ÅWÄ<É*¦"KÄÇR9жæ éa¯j­(Iå½Ìk¤kø»ÑH‰! p„Xµ­§E½s››ìà®f¹ëÐt®µ÷©{ 5Kl*TQ*Ä•ÙE©¥(9jr÷£`‘®i¤XÇ}ê¬üJ$‚<Çñ>ßJ‘Á [ž‚¥­4‰BƳåâ8§[fTÿBÚ¨Í!$Ü–'rkœ‡oŠÂ¹Æg*âÇ.Úò¢L’Ý¢‘XsíY1FŸ½€©ªÒãL˜3ƒæoÚÞz±£K?”ÝTXUrG3òBHñ ᾎ¿„Ð_ò£ÒâÝ­ó­(PG'ÅkšÏÃ)“‹Õ«IÈ.HëZãШ.AôÞ„Ê/µªv¥L ~€Ó ÜëÖ¦÷ßéHE³\¨ËÜôj0ž¦»8ïô¥© k©£Œ3›(÷íN¡Ò‰nNƒó¥<Øtb¢hä| jž#+ÝAÈ¿„QúKòÌúXþuªóãeq•>íz/óTsÕ›m8°5UF—=Àåõ5ÙÙ˜“IlB¦<Å!²²÷µ\>]IíÎ)s@Ozbáçqp„Í´G ‹ëräò]YR¼(ÓJrè3ÈUÛ…@‰²Š’HP ,š|&¸š{Ÿjc}ô¨¥š 5HѨŦ!RiK½ÒŒPsf[—¦@Ì$Ì–§J4­FUqèйò¶Çµ1Ô[]5­A4F3½¼¦¨”xØ­¬o±åE˜bRV k úSs½¯kRaB­™ˆö£½î:Ñ tac¨§B†ÞE6¥¢ØØ[s}—ßø¢–5“C4™¹6À|©‚šŠŽméN…¼9(¶º÷¤£(`vªòqY´Ë@ÿ¦õdà0é3 ]œ‹ùF€Q¢A}Ô§©5Ã97ÑmŤh¥[(-n¦‘6'&3Mε¼ÖQ‘Q°Ó(¤ËÁ͇Œž XÖ¯ýZónìXé©çQwŒ‚§[ÖèÃáQHTîI½VÅpèåóáÎVÿÛ<ý«…:œ>9q¤x€Y¯êÛýEXf[¡BòÙ†Õ‘0)ž3ÿ-U-Ü›šG…&\Ù¶«õbÆÁx!ÆôšKñ(Ú(õÝÍ¿J̵¨éGîüXÒN'ÒL>^™[ù§®#Ã7Ú2ö#Z·<«š8 ÎÔÔáx’Öx„c«Zµ/%Òëc0j »žmùҾ݈˜äÂA—Mísõ®Âðì4c4ŽÒ7A¢Š¶2…ÊŠz ×c¥‚šCŸ8V;†¹4c‡A”3\nrè}ªÝqW3°QÔÕ‘j¯þ™‡,-<„~»ý(ü>…ÚÍМÇûRñX’ÞX®«×™ªÀX—c¢êMfÙ<8lÓ4®[.Q‹[™'ûR%Ãáñk‘Ó$Ÿ ÷ÌÅW3z¤9˜t…u®4¬ÒÍÁË'Ç”œ0S£¯QZ3 R œÊÂàõ_¦|<[ͪmúU޳áL3¡5FmíÌQ=ÅÿNá‘ýé—’έRªAeAÚºfFPE ÔšƒR ],IµGm¾TDŠ‹ƒRqÐ ²ŽuWw=Bè>zÜÓñD®¸6(AozÌ{æ7ÞõžW Hå¶HÒ9ÝJ‹ØÓ$!2*oç^jixœ@ÃáRk¨™‰±õ‚‘{^ÆÝjÌWpÎE<Îæ¨`1¼Rfv›…È‹º|¯W°ÜNSˆH10ÄË&‰*‹ ÷§•v´pø6¶x30ÎÆçéL²ˆd`¶¿cÞ€™ÔZH#$n¬ßJ›"²4™:¬š]:dÆ$wï@ÆçØëJ“I‘ˆ‘FΧ_™NeaqÞ8–jÕß»P¹·;P\ÍPj./ ¿µF`v¾´$ëz‚X[KQÈ"~ñ‚ž—¹¨ÃxSÎnJt½Hq[.›ó£Z ]íïF¢ÊïJÓ‚1LÕ¨ÈÒ˜ñ¬Ë•ô<›¥)ié½i3æârŽ5­9#Y“#ïð·JΑ$(À‚ bÌ2鮹O‡½Ž¤Ï3\ßç7¹µ éSp¯a·QÜSìrŸX°Ù‡QüR©’í‡p/u’ÛƒLG)7Þµ ñRî h5¯?+1¡Åm~µ½‡‰a…P…f°Ìmz×¢šEކ¤\ÒÔª}ÙÑoä'oj`Þ¶*1XD ‹îz Tñá”g»; ¬`jG^Õ6&iY‰.,MÉ÷ªòHw™±X…‚•æ› qáÆ¹fëKÁÀb‡;+ n˜ʻ}èÿ¥KŠ€1@,$ùóª—Ö´1éŸ  Ö3•gë½1¦[2+‰E,’Êm¥ÿ:^ óA—š~”C 6¨I6¸Ó­zJ§¡¢+äÊ5ÍθGvTuÄn¸¦p€!›¹¨â#eñðìÇ[”½íò­N-"ÉŠ|£Éä½·nuDælo½rå;n"qcr’· r4Îãa2€É›QKuϹùÐFZ9S¨4ySÑJI”Žš-QcAÄ..0 e‹z»Ó›_aÞ»0U­Ê‰A'J‡–ÞLÇ¢‹Õy±.Ã,c ëÎ]¬Ë$qoÂ7ª8ÜC4-)LÙHo 6$Þ‰UJ•K -´ä„G9‘n0nEMé™d˜£…”s¹­Ô¤i6*,¤ûÔ±kÜ’kó¬æÃª¶&$.,Å|ÂÕÑ£ '1µ©® 7&Ÿ€ ªd·šöÈŠâ1$5ÍæK/j©‘׈FÙ‰%­©«ÜnÇ6õ­ÁâŠñyb¾|¨¿ì§‹ÒŒ²0Bh˜Ý‰<èk A¡"ŒÔY@Ëںݨ«ŽÕ$ŽUð¤$ÌrÒ³q•£`©¸äè­*«ÄÏßêħojÏ)ÑŒò)|b1/Xæì5äjÔª¤]4¹C¸þGqJÅÛÿGÄܶ¸ï\ì賸;^9ãþßJ²Œ¥2H [ÜX؃ÔV~S!d ûŠÐ¿”ùHºžÕ‰zj´ãÇLpº²»Gk1¥ëØÕYÉ1wænmNà :NŽ3(PmVÄ8a¨ƒ^ìH®³lÖJš,3áË@ `4äüÅ' Šh‡‡"f^›Ws_(Ð •f‰üEª’ i³ø€¸Œ3Yõ#ø®7’Ñ·ˆm}6äÕH°ÓItŒ•ëW0Q48v¶w#ž¶¢[}Tr«rƒ/6F½½Å«’@(3±÷£Œ•7¹¢…¾‡ñ!µo¶2©ó3ÛaV U WÓ';Ó"Hâ$@Øú˜îÔVªE¨aq˜€ù\±¥¦lö°¿z±¸ÌnT‹5µµ¶?Kƒ\"¹&kìF·úS€*§ñ¥µµŽE[²°Ô¿½B{¶­' ¦ ¨QF*WJOŽê³ F¼Ï/Öž› ìU†RvùkPŒÌD˜ä[ØtØTº†è²\ÛQ¸5EçXÖðÕj4b ÁÖ ¶µjÅÌñ'U°›µ…i¹½SÀÇáE™½n>‚¬)®“¨Í=N–:ƒÈÒñR¶ ñÈ&ʬ/cR¦©ñ2ÓqnBÙ@ïεoAØ<<˜–2;¶R|ÎÛ±«ðÇ +hШîkˆT4UÐZ¢æ©1"FË¡½¹t©é@ØÞûURój.â³q‘¦*vÜ¢´‰×cIÅÄ&‡/ƺ¯~Õ›4Æ|2˜¥5Ö®ÝJ†Su;VqÐÛ¥sÊ×(w+›Æ¢¥åð yˆÍ”ió¡[MÔÒç™üv²«+ìm¯jÐŒ¹A"Úyƒ®÷ÔΔ£;e"À{UŒLˆ õwl×m¥ Üj-\«muáØE´m5Ǭ6õÅðpà˜frCj¢Úüè°øœBYDìk`k7<³ÉšYÍùÓ˔ϔÈ1ÒÂá¡ ¶þ›šÔyŽ"$žä†‹ìyÖ")v ¢äìma"hp)ú®I/ÊŽÓb†6JЦàW[d&õÕ5Ö©9N™H §‘Ñ|6¹`6?÷ëïCjíH.ºfv ܱ‚ÞªÔ«‚nIîG?q±¦à §1¶PYtèÝÅSÕ|'ŽøXVÚ–&»…G“Ò_YßJW”M‰X£ ª z¼#ð¡HA"ØûÕ?ÛWÂÎõj“s}(NôÔëšíëª9PœM 5&„Ô[¥VâºømÕH«‘Åð":ÜÖo…UAl Áæ;Š,R™pˆU~ñmp6$k§¸¤°$åÚÔÔkb;å‘•]ÊÖ¬BÀe`Íqmv;Ö†¼\ ‰óBmÿI«óG Ÿ´Ágæé¡úPa¸w…$† D¨èF]šü´¬ÎS§p¬ç–OÞ®©\&‹ #:•2 m©Äv®³À 6ô8·áß1³¸°í]ˆ8‡Åˆ"“"²ö¡Ÿƒïy (¾vØö«ÿ,HHÄr)(5n*ʈ”˜€?µë9’Ÿ%,Xíj¶œ9–àÌ™¿ üë2Ü+H„ À‚§@A½èÔiKÂDÐ!Ê’Ç7”ß‘¦Öà©LR8̲¶Tír}ª(S$‡*/¨þÕ™‹žL^#A 6E…Và[n&CåÂÀ/É›ÌOÊŠWǪ‘$¹!‘o¸VSÚŸ„ÃGƒP†›vr==…v5LØb¾¦S˜\ßÞœ¹Ú& 7Œø‰ˆO‹v·µcæ‰ÄxÈslXèÃù¦Ã‰VDVŽBË`ÅuüªÃ,sÆRKJŸFZdþU¿ÔÂcsA qÐèGʤ‚¦Ä[Þ©bxl‰÷˜f. {0®ƒˆK“ž"Žº0ùÕ¿ÑŸÅå&—ÄÏüšv ÿ§™¦FÑÍx[0QÍj·}¥#;(òkÞÔßõQ’c`Yu·"4¥ÄÄ¥²“—M(ñ –Ic$‹6pàïSƒ†YÒwõçõ¤O#úÕÜÖ’Qq¸^¾ôÜ,pD@R¢S{:ÿjdˆT˜ev#ZÜâ-3RF×; ìÀ fÏ6iüA|«l§·zÑ#ÄTisS(Ãô5NVðøá<„µf%Ô)'SµfbŽn.Í`OŠ6ç­6ô£fM$`9‹éC5ŒÏ Üò¨ GkB \‘D¼èRÄt#­p7ímèH~}(/¥êd6]MFôT©Ä`ΦdX­Q°­p=Ô{U|V1¼k‘¹©çíY³ëRªaåxIÊnàìjÜG&$!Çå¾ÛõªEH6;Ô°o#€NK†{%¦´X9Lêw\RþÃ…c²°<ò5‡Ò¨ê#¾^ þ¢ O#è]¯ïWê}n" 4.Us=Å›jTqáÑÁ  ÿVµÀQ¨Ò‚,Ä•@ü T…[úE©½ V÷úÔz‹×jjN;î>•Ö=EM«ªHÛc\t©ÞºÇ±© ”HŒ²¶TúÕ)ø‰‘¼(†>'[÷®ãÎÞ,q Pw4,2â$PY†`OÀ½}ë;mÈs­;°œBâf_8̪Û^­Ë|ÆûÒð‘Æð dŸ19IÑo¨¦JÚ’kp}/á$Tî/°®S}A v¥ŽÔľÂݨÉ9òïPÆÄ´ šFh@OJN¦õSŠ&$"| 3W¡#j<«©Þ¨FÁ±™Û{—úkYäÔ*|gH™W¶yH¾½#&—ÄÅúÊ,OÌiO+á@©k4‡Ä“Üò¨U¾õœë´˜ãŸÁ?hB=.5 *Ç Oó$?°=ê®àåu5£Ã“þX€Y‰`Ì­¥j Œn! •ŸÄæÍ¨ÖÔPªN¹°Î$í³•'‹dd€…•O™›*ΩxáûÇbžÈ£Û­W–^ÖtoŒh1½Š(E6˜pø‰$Í&£]‡µW‚Æg• ©Ì ·Î´%>}5°w¢wÚVÀáÌ4™×.VÇRM4•HP¢Ãó¡“Sn”æ!‹Ó—:b…^FÊ‹»TDª"Ï!ÊŠ55C4¸é„P¡È •Gêi·qØ—ÅJ#HŒ"}ëC‡áW¡žÆsÿÓûÑa0ñàÐe ósÃØST\ÜÓ8ý£\T°ïÞ§ r¹¾aj4Z`\ßÍhk¢Qü$ }í½% £N¬U—Ÿ^ÔèÁ*o¸65˜Ì¶†öU7výªÄN$`®¶c uÚ›Š‚,RÚQgÖÎ4×½(`£Y–EšÊäÔÕ–9˜›noTÜíã($ü6v•€ !=C ‡d$¤êJö==ëG‰F³pó±#YHåý« †ÊØLca¥ÑY¬o𑱬^®ÚÇ UžsÎIxÔ©6±°[õ¸?ìVŠ”|··à“‚…^b–w³»khDÊ̬Yˆ±ÐO3O#ƒR·€\ÁžâªŸ°F.ܬN¿JÑЉPLÊùŠH›5¯zl©4m¼E+Å¥hpéVL:Dtt-ùŠ^&æ /…e×CkžºÒð ÉXCs¦uSFóT¿Ò±añà©Ñ¥ºß½lÂ~õ}íX¢éŽ[Ë&—6¶µrø£f}foõ…3_Å}G¨òïC¯aùÖ€Ô),XyF§ä+)¸– Lâ0Bƒ «œMÌ|8Ú÷vÖA:ßëXåsƤ_‡ˆ,|L6ä ÿ/Ä S•av?Ôl+8ø‡Ö¸æ;XW£õNCñ8ÌDײ/EÒ‚n*e”•ü-¨ å¸¿µ_Àá¢8A#Æ$g&ݨ›j¹ Ì6 …™|7üCj90n4l$ðhÎ ¹VŒÿN´µÀâðç>Q'`l~œë]ý+O-3,«êg¥LÇ2ký=êòãÊœ˜¼1¸;cS+`æ‘2;­qlÚmFEµ]RÜÉ÷4@ZœøYF©gššS«!³)õbEuEëªN"æ¤W š’@®®®¥:Ý«­­MuªÄ§ÇcαN¢Ä®F7æ6ÓýïMÁ±—€RÑmÌ1ÿ‘§I‡“Í…×ÜUnÌ…àslè–³j~Z+9Úø½ÃÉ+*/£ ó¢\XþTŽÀc,~ TU‡±­Oõ]”–Ë\!èi„sþµ¨LîáTs5Úì×^[šœºÜµÍLo ¤„—nEmE”et$n/oÖ¤YÙFRX…Q¹;S M¸u¾ŸZ‹+èÂ-·X•äVL$ŒŒ¶`!Àóüªœ0œ™”›C+hçnµä]C3XùFºU+—bY‹uŽS³))a¶Â„mjv®5’4T¨¾ôì Ò38ºÅ¡[ÿ4Ü6¦ç&Í”•åV2,h± ÒÀ“Ô‘[œF“ÄÐâ8yx›0r¬`: ô±W¸¶ãö5›Å°ž ¾*)1¾ žG¥øýR‡‚9õŒ,¾SÞ®…R:u›Ããi1ñ"›ãZØ—+HÅE&Õp*UªZ5ðÌåUÜÑHÑA’r@>•µQi&â8…ˆ-t )´GLÓñ BÃŒl9{šÐ‚8ð°øPO­ÆíýªbT 0‹ çÍ»š›S&v‚´Ø×•B‹SV…mLAPƒJ5À›„0Òäu£(B:“æcÔk”£lAisÏë_+XtØý+QVÀ›l*åP)×[Ûòµ.£QF%>(@xÓ¢Üüë#Çq%E‹yX÷¯ÅtÄôÒ³¸¾_ý(æßÄ=ùþUÏœõ®-< †Ã¡ iÏáڸܚ~(}æQ°}ƒ¥i— %45+RÚ‰‘@κ£_cB´@ëLC DƒBwìyÖo“fKæ´ ÊÌáK+jànZ™9"É Fv ííU› ê«a±ðÈ€b.޳{ÓÚl(\ǦÿJ¬ü2&kLjÊ:2›þT©¸dñÜ–/"Z×£yEÐx¦)gËWÈ—Ôóª•cìsˆLž®£ð.ŸZBu%C¾¥a¨¬]úÔÇ ×XÔŠ<· †ÆµxmŸ‡-¾ üë/åWøƒÄxüÀ2ûÖ¸ú/‹V®µ$k]CÚEÉ*‰ÒÌ/UŽ òýÞhÂI½ÅȵªÑ‰Žl»}ͪ]BœŠ<« £³ ‹ÁýìæA½ŽÞâ­`1#÷N HšhÕe V¸ÿÍQâxQüL(¿™ £3ú°øXä¾Qá·>ŸÚ©Ì‹e’DSÊçzµƒ‘ñŽÉ,Œr ÅA¶pv?ϵIÂÆØ“Â1R/Ҭߓ)ScùW ±„Å/Uaå·JOµ\uªF‚ Ò“PjkŽ¢¤J°a¸:U>4,DŽžQ”I¦Ÿ¸«mS,QbDãÌQBµ½7þàVlÞ8d‹‰š)ÒÙ´Š9µdמÁ´øN&¢fe:ÛJô2´¾"·’A™}ªáv›Ò8’_˜5­%í×J+ùó @¦äñ<ÃÊ%$Ü^úSè' |Ä]ˆïL,X ?¨^€›óçL7½QÑeËàGnšÿ5 ‹((ڦƤ Ò‰âZ`Ð…½¤?¥fÆrµÏ=ëW?á“ÿþ•œ¨ÏjÇ/LA×P4ïE†ˆËˆXîcÈ^ŠÕk…Æs;€n‡Î‰6šž þ"$Ð k”T` “ UÌgKô¨âeO†€Ý”ØÞÕ0Å.Òº‚Ž,@5¯¬ü7-/‰ÓàÈÚÊêmÐu«¼PᎠÙ×áMcb¥yæ2Hu?•6¨L8ù0œ\ q·¤ »ÖŒÜEP ¸T7 ˜‘î+3Ч‰ƒIˆ»#e'·*wáÜVÁQõþðùG÷®rò—#]w›ˆÌç3¶€úV¾²a|/ù¬»QààL9 FûÜßo颵ë|xçu›AkXÑS–ío™£U­ B­5V¹˜AÊ(ÔkP»Úˆ›hº·¶Õ¤$Zj0èþSØíI‰³1Û–ÔØÞ*ƒåÌHî@Ûó­Dã{nhZšFšÐ0©3x·ÿªè_Ò²¸ó…‚;hĹ÷Ú¶xº}ê=ýKúiY Ípî®\çU®-ɼÁ_lêÚÀÞ‹‡Ÿ…ÀCge »æ‰Q¯µjÿY,/Z!]Q~Ô!zšjA5!An)DM+,”f‹L2\FÒ¥ÃÆ¾àŽ–¥øÈâ-š5êcµ2®|Îâä¶¶ª2Kˆnsºƒð]I„¡r Ø;éT¤ÐÒf߭͘꼰&#‰JrÚ÷uüêÆfªs|+×ßµtq¬ …9‹3g·j} œfðòå:©ÕXliV5»<^>¢çº{Ö1[7Ž\q©Am-V8@ÿòPÿª’l7 {ÕŽ?üŒ'úªž¦‰ÚRÍ1˜l'Ú®ÐVÙqÊ©sd_Ìì*ímíΡ*¬ïke;0éØÓ" E•€#pÚR sÐ2r4ÅŒò½é%låFRìNžÚnjLþ*’`b >Tk.»ƒÈüéÜ6Is0I™uRt6ª'ÛÂ7¼èžÔq¥Eþ³þ›Û·Cð§ÖâvSû.Á°ü13˜!{ÝI˜§ 4é¶æ,Ì+ hÒJ$•†ÜR™M[I«~úTKT;qB»„&ÚA^2Úï5|ý.Ú,cˆá©~,ÀR®TE9ŽKçlŸ!×qæÛ•LÀ‡•è(zY‡šæî·¹@8¦hÜÙR2‰íŸÛ°!‰°V“hk.„Þ¯×ñ–Ò`­\¦B.Oç^"ˆÿb±ËâñÝGôj?. «AàºB  ÒµZJˆîöȈÒbõØQŠšâÔQFäiEAˆ–º¾ƒ°\Qmäh²2BÒû©H@~- ƒB¤Q ð¸PZ6’Ô‘Ú;)µ04鮀¨,JÚ ü{ÝØØêû…Ž1E¦Þ‘9ºa Ä54³…x,] ð"%1!›[Ò DÀËs"Ú–<¯EsN|]ùéÏ_OW=ñO=‚Zùˆ´†RŒ0šk²­}À­ ±ÖMïÝMÕ…yð|Ñ‘ ´¶£±JQ%Tƒ#眳â&éC¿óÛ4uà aNç2Ù0u1‘m‰ ´z±ÄXÙ¤T™  ð§äû J®Kã[6Cy²2Z»€PPnZDØÛÛfè#ùuò8@ ý|„Ãßý.Í~ÿ)2m›+Gm)Í÷WD7ùÕïëÀ4zÏÆSÚY @¢µ¸€[ôý¼N…A±HeÂøÈ:mÒ 2"¹ú ︃&.»Œì‰Éåʼn–ÞéÒ?%n‰±Q}ï,Ñí Ñ9AØ‹&‘u¦¹¿ 7óMà"OÅ3g8p^oר^Œ¶<ŸÀsÜοé&eÑó‘–ÇO·ô”’`oÒ»M»OuHÕ¨\©D÷#"ª$î' (œtÝ9-€J¥JelcíK/!btX•lǰqZxæiJÂ]&ýôóã$røTG=PŸ;CÜR›6“üïç•ö<ÇQÖ`Y\ŒQ hñDziÇÍ7ÓøîÝ”šœ -[¨„ÍÕ¯ºZ @[ã¬Kb³# zg'€?/ˆSaei)¬\W»ÀŠ®0¸e+_æþúQâ¶ëÖ[aN—”òªdNÏÌP[áz"A›gðüØ'~ƒŠÕ*Ó¶¸ ÖÒÕˆ#ÏýÞýÌuôÚ¯^I‡.ÿÑóÏaÅ/>‚aè³s .Ж œJb^l½V#‡FÐd;ќ޻j煉gæhá?~@“W^IñééviPùðašúØÇè’ûï§_ù½kik­D[·o£+î½—~÷ÀkÛ¶M“WÂøèãSá¾M~òå’iÊ%RôæÜ"=ÿå?£ ¼¶€™ÏŒŽ¦ ´µ@g·.DA°¿Â47LOQ û+‘èöQöýæ1õè…ªxAs>LÜöÜv›w$ÙDõÐA²ZçùxäQzþÛÿH¯Üt#¾å ¢«¿ó’ÃÃêÙ‘}ûhÝyçÑÑç~DBÊ6Ÿ¯Zö2y’×°ö ì^«Èe ‚%¡¶Å¨vœOul†ìtºM󂡃—eqÄó¾š;òÞû”{î9š¸â JlÝÖnÎ@ý½÷ˆ[ÖàA`0x*&SôÚ>C³O|â8]Ú|Í5êÙ±Í窥5‚ ¼†è ¯‘ Úß x€S‚¼>Ù01ŽT8Oqø¡ÎýÜËe4´y39ˆúÖùçÓðG6ñ‹”Úº•¸í½ývXA£Í êÍ}Erjª­bt “rO>AhìBjÎ2 @Ó»÷¨^µAv“Ws±0œ ´ÖZË©·ÅssdŽò§.u#`‘#ðÿ1µ‹/¹˜v —²/üÖÛT|õ¿ôRÜ·w¹à©Jäà›SW]Œ¨o…ïÅÙÒ0—ÿÛ¿Q½‡õ¾åfr ´íŸþ4}êÇ/чøsÚõ§B×<û_4™¡÷_~µËp=rçúõ›ÖjðŽ;ά>áZ ÆGä™Aö•v ðÿm[©|èy¾¯I,›µƒÏÏ~óëÄíÃ_½‡\7 OR½“ÙñO~’ª¥2y®KU¤Ýón¹…{˜¾þÆ2™ƒ… ýìêS龯’<~Œ¦öï§-Ó“äßs7½ùµ¯“ošzñmAq]"±o­“Í-qÕâR¦kXT u K*z"h+ÇþªGßWÖ€Ö~&€ö³gDÓHœÊöÝu½ùo„Ky "/ºˆ®|è!Ú{ã”;p€†Qá‰'¿G/>ñ¹v¬­¼=X÷èÈcÓÈ·&[•ãIhÚêŠ zl‡™àŸÙKÝÅj´iΓ矇Z`‰bHOuÄÝ:M^ó[4ÿúëTľa¨¹¡T®¿ð¡¯‘ í–Ÿ}†&“qÊÞtýÏ“OQî¡èÄý!e°uŽeÒä—+ôö™YÊÇÈgò!-•%æp¿“(°âY–Êk¶€¦¸˜ämñ®];iþøIŠƒ ÀÞ€Û ”K`®éÁ Å! ?ø½ü•»I¶“Ãuæo½™ŽÁ5VLð Cõ§ø¾• ÊIÜd"-~‚Ôƒx眅³f m-àV[ja<‚¨<ž]Oôî;až}ûM:õÙëèLß3-ò-‹„o;0ôЉ ÙÑf-·[…$­N”[OKñ-ŸI¿P(ö ‚Q-C‹:p*,χ©ÐðÂʼãÑû 7‹ .KPÑ´[ÿÕFtL¦{)Ûvl¢cŒE3tëjŒî °½(ÒÏFs&Jâ=ku}0²\ 8\ ‹ds}Ωº¶~dõq·;çºÝ ·Öõ|×µs |èáç‹AÓ¨Tka*\·ŽL½·_¡ÉÎëÕ„ÐiâÏ÷pƒh®· °ŒµX€¼¨Ї›ÔuÔún©DoŠ\·›p/­Æ*‚éÖx7ñþƒ""`[ ì!€È Nã`Ä—ÒIis-°ž»¶«ba¡·ö™pÿn{¹AçA\•Ä=ƒàJ»BlA‹:lÚy>UQ¾&²Y4]ŒÖk¢^AoÕà&£ûÑ5£Ç°+(â¼mbbóº‹úˆü\äú*4ŸX¿^ŸùwGëιUH©~5uÆ-ïŠ1€Z,pж÷¯IÚP ,ÁmT ŸBUW™ŸW„h'½qM¸ÔJ}ôÜZ¬çzç7 {A‰ÆÁB—ÕÖs|>L…ØRò¢Öõ¸g6è]Q­w6Ìîi*[œuÜ ‹!§P z¥Â ¿Ô;v5éÞÙ 7ñnaꬅœ‚8¾/È4çø n­§t-Ph­*Uª;yÕª:)˜£^Ú×VÒËz¤A]V+bø]½'„ôÙZ‰ÀH ;•–öðLŽŽÑàä„ÞDS»vÈ¿¸óË×ýÛ»ï¾Ü³Xñ`ÄóæZkåpƒR¡\Zê&݇¸My÷ˆAcˆÇ#‘F&ÃÿxR ŒËÑÉIcdzÚ™·m;f™øŸmÙ‹Åȶ-ôqâëd2ICXçy““ ÎœzÔÝðx£1+ðŽþ#Éäöj JŽ‘€V{ïh-isd c­ ™JI+“1l¤Õl‰3ããæðô”™Éfm2ÔÆÂæåZ–EqE$ãq5Ž'¸‡¤c˜·cüœza¨gÒ©4í?wRé­g)¼Ò®Y C• wìÀ¶ø¸ §‹µZègx6°¬@ÄbB&R H™Î XŽÉĆsÌÔøFcÝä¤=8:fAU&/Î4”C’É‹L›&€&Œ{!iÀbà®êY }ä‡y~Wƒ¤æ&’™n÷Ú¯ž ù$I!2®ãѶ©)ùêñÍÌHû⣛6Ùƒƒ&~ÈÔ d­`¬4€Y²sùøÔ1xÌ‹W൙ü4 è9uøÉ‚7|—c÷ü “ …Øü]4¾ÖÙ,ÜÅÖënÌ”©5œug‚Š¡)§8òŸ)¼‰Ï}ç"#”I§@2Á Q„AE½&˜ŒŽâ£iY¼xŒ-@l¢Çš„z>Z…&¬5ÝšºY0<×ö ¾®‹eË™5l‡£Z@[@¥y.°åäž}Ö¦éiÊŽ’ÝÔ4± “;mªšDD޼Ð0¥:.kW/XC›4£mŽßÑB@k޵@W.óùÛ|¾JÂO³qôk,µó VBC“ÓÒ×ZÔÚ×d;›N›&uÓµöô³:#t¶r>ïξóN=ô¨S:y¯ž™•A¡`Xº= E|ÈŽ¥2©d2–ˆ¿ž[ü×>²@” O9΂’=;ЋnÕ¨‚Ö4Òµh\k´¥¯ÖÆïq+ærÎé#Gê Gޏ…ãÇýòéÓÒYX0übÑ6DÜ÷S¶iÆñ¸ †Q L£ä ` ¢œCÑuèéÓ³O¾ÏëW:4ê¾_ò¤ŒkrÚ„[ÍUC]©fgÈ-;æ,=êWggy—¹L.!DÊ„,Àï5)K|(ƒZ¤XÇÖœÿ cYˆ|›´<sÔuç0_gWeèÌÔ€P çû€ Ôq@zl|qqG°Yƒ¶ÝEä¹C‡êyÃ_ƒ käD©Sš"ÍädÙ†~CÊJ“œ"Vñý|Ä|?‡|;Ñ2ê Çð[´÷z=««ÀXµp€Ò{ÆK›—–ö¾ôàƒ‹‰zÕ<5Ÿ¯á€T‚œm6ÉŠ_þod€:ÿY­.e¡æûKh¬èy ‹8f?‰ÍÕ‚ë–4¡>ˆ1 ÏÜúþ¿ÎB&…æ¸RÚ~óääoL&w§Ò)ÿ¹ÜOª¨J@Äp€š;㺋ݤ€Þ¤¸Œä(w·ÕÈö+-]† ÎF[kÔ}0Ä>xè,&Þ„¡k„_.bý·ÿÇýçÛ#]8IEND®B`‚PyQt-gpl-5.5.1/examples/animation/appchooser/akregator.png0000644000076500000240000001141112613140041023671 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME× I†pA–IDATxÚí[ t\Õyþî{³k´Z²%Ù–dclƒ16¶á°4ÂÚ”†ÒBr ] hKH ‡Ú­sRR$­{ ä°•Í@°V/€±-ÛØ²llÙ²,ÉKiöåm÷ö3ïðô:š&=Éi~O÷½ûî›yßwÿå¾+´?Úÿoc8»uRíô‹]3—\·ï<¡¤<гÃBÍ q5J"ÄSã!‘…„À€áèÔŸCùƒ@üØ•h]v7çXÆÓQ™BpáªÀe?„ì`n‚ \‚Ü×Òº2. mHèjHhJHèÙWÓ$T|HhÙ0…M ™ß;Äž?Çù÷¿ˆæEÌ$®&9C2€Ä€šÌCÏ@hðl‚W’à¦P²\HSNÐÁu-'@× $ A ®‡C 6•3¡ n„„:GòÿN€§.îÄ™·,…°Ès#ǹ(֧硘âdí>Ó„W3¤£BÈ‚snpÖP29 RÏĺ&Ìn€<‰ 'h`N<Äd˜ØÙq)ºÙÅ•à…kSXxm ?óF œb8Æ‹Ü5¢ÈXò@NÜ€ËGðçÍô–Ô§âH4Æc •?Ù Ô׳.…Þ4—œìèC«Á³Ô8®ÈŒˆU¢_c PÒ$”5ˆ‰x¢×E1‘Š|Ö±~¶iZH¿×¾5¨ZºžéË– ξÚó8N>¯BLpÝ"3iyDÙ‡çå½€Pþ³íky¼ ¬½zfRCéa5)˜¡bI%(|8΋Ìl1aŽ‘8/Z“'òé1äì“Õ0^¤šäó·BÀ_ ÉØ„J’q— %^FœBñlòöD1Ý,¯Ö#òÏ-@¡ÛxA±Øu•ÂDYÆÃâƒD>Œã„żr@Íè6ãMˆE®’-pw˜¡C ÒA0Ž=£†Jù$È1)ÆK'¦Lœ· à$[¾Ô•_”ÿ¬B‹õ©Q”4C·‰W8,WžL‘k(¨&ÅE.OÈ/“á eÐA¶E26l¢¹~˜un`÷MšËϼ3 6D%@ÉD5¹°ˆ±c$nÂ>¶¿'jÎüŽÕ×-â*äeVz"ň•Ãês ‡X_ù²f8Ê`%(ÛN!œd =Â&n dXà@œÈgˆ¼Tä}µtp Ò+Á‚8·`“ÿÛ ,bÂáæ6Y‚ã8~ˆÈ²5TXà(gö:Àö‚ ¯=U@ý ù§ÑÓ@& $ZÒ™èìX.ˆ9£S¨xož¼d==³E°ýºt°Ë`åÖ¶þ)ÀÜKá4‘al/ú(ç¾…îOú„Ãåóm⓼MÖÙò̬$Xéu€#»‚-y´_˜ààkÀH§36y³µÉ›3Ôrû2ÀSr M‚°PÎj:€Ónθ¨ž>!Îí|`Ÿ[ä³y ÔZÊ€¡øË¨dÀ$ßPʯ2êçç,:.s„„ “üA"²I•+-‚0ôÊW"j'ªH°în@èùso5l&²'Ó–Ñy}Áv"Nº¨›ì\ š• ‰€b‘“ŽDh·§­ ¸æŒQé2ˆ‰åO²aÂ00ºèyh\Ìþ3 ºk9ðXš ${ì™%’œpv’f œûU±`Κ?Y³¶ºG¶›|²Šº²pØ”ÅÀ’ûtŸI¾xÌÛýǦÙeP©$QX×mò…«>Sˆ5$Ä@jk:8õûdË‚MÿÎ~ö;] Zý@û€»*oHñƒÀx`¨D 6uØJ",y¨™‹Omþߣ‡žP&þQÂõ%GžÈƒëöí¢2ëçÌûê€Ö³`ÛRò+Á¡w€¾Õt±;ZØ~‰ðÏNÎ|y׬ýÅãŸõO'iÉ>ñЇ€í;´_œõS q©óåf|+°þr@‹Ùã= ¤ÝOÊ×|f·6Š„›Ä¡*#€s%XÒ<õÀâû€¶+ò^Ø(G€T°ýV8¬ýZ á´ÏPûK±¢bp Pb@x0² HNò- ˜û] ñL ;h?xÿStÏ;†Qç)÷g",qÌœÄ*—ìú?¾ØpÝ ë©ãJ`ÆÅÎ¥ÙÂáß‘NûAwß\¸Õ×Jal’ýÎØg6 c½€Ï¶'øà}7-ÜòöO¥ÒU€ÀUç’„LØû°ý‡€‘™ðÉnà ¿\.{ãۀщ^ íß,;óNïì3怷7÷®~kþ_¬h(Üós.Æ:o´ú,«ž´]çŒãþ_ÂaÓ¯.AºLÜ£à܃ãÉ㊞íÜ58ÇîÁ%Jo‰;„°wo÷‡Ÿö¬„ÃæÝå$7º0ÒöõÚÅ€jéã$n >ƒ$3CûÎ×ßìºæPÿØCÅß àŒ=Oí 83O>=€œí¥š¯Å'xÁÉ@Í|›” òÑIsÊÙ…¤Q6Þ É3'q!¹åc •É)ÝÈŽE’·<»zë=k_xðžÂ?ñ|æ^r'PoruÔž¾Âv{†üâçÈ«pØÔ‹3Û ‡Õ.:¢eD€úµËwú/–?pëë=üÃïüì'÷N/Z2Š¢'ÒÿöM›^Zºtékϼ¼ù¡ÿ{åÈÙ—üÃ*G¬™ TµÀaîàäïÛ¿o÷n:¾9Á NqºwfVuÂñ‘G‰¾ %pã¦.φ¡ý—7Ô×^>sf‹øêÕWìš6mÚ{UU5ë3Yõƒ{äç£9Mã~qÎÿvgwÿ¹/½±íqÊÃ8ü¤-€–)²ùq –€Ã|Í·V‡à0oKY‚åÉ;cŸƒaj÷­ÚTí&¹Z‡G¢ll<¹¨·oh‘,Ë·©ªÊçÌ™s{N]×Y:› €lÇŽƒ ,ø»5oï|ºeZís'0SrÃÚÁéÒG@3–< ç\†Ã\µÎ5¿‘‚Ãä*—±ÉûF²>¼©ÃÁL-gk0K_¤ëIÄb1(äå„}ĵ•s^oùâ,ó¸Œò@–uww?cÆÓÿùôºÀk‘¹rZxnýãÈõ·åWƒ°,; ì|ÈI°ªÓãpîï{P`öýÇeãY7~µ·׿½ËûÏÅ{±™ØÜ¯àÀÞ.Ô%ºQ§ô?ZSSsáÊ•+gKgÏžÝ#I¬oz˲€ÏÓ”U•FL0à&U5N^þØÚÓ<·\†Ë›úà3_{“}$õ&`î×óö<¨$‚<áá[.ƒÃR½6yFëá0mÇ!‚™àFªðìî©ØžM×CDßÃås ÌYäɳÚà­m¦<}A_û•÷ ?ü0#[,D.k_MxÃuÏß_ƒÇÖîlJ¦ÕË-8L·µµ}%Il]ñËß6É7~—d‡à–ëÛþ/€y,ãÓílƬ‡ßùàÀ£fÉÌ#ü.À'¸¯o¦Z8E˜´oó`«¶5cÓa/¢Ñb‘ñ¥9 ~tž„óΫ›‡=ƒ@dè¢;îÝyðpó|ÅŠËÈ<$Àër¥ÊÕØX#e­ßÐ5 †&h1»¿ÿpô„¦ë‡ŽŒ¬Yñä&–¹újœo¼¬A–ÍJH V¦–YçŒÂ]`‚œ¯œ)]Æ¡±ŽÄ<Šzzõ¿Ó×!ͦ#eÔ$l-ï@ÏÀÔj s›2X6#…)~¦ 'ÜØp°/uMÁǃÂá0"ããø‹¥À7pâ¼/䱈1´‘}1¤‘O7n·5E`---›ù€ìyXæºýÞU^ÿ¨Y“üB!FÈø™ÓG×m<\÷`oß‘û~IBôO¯Â2u5<..Wž¼ËÛPÚ‹Á¸ýQŽ$ƒØ?ìBoHC:“E6›…ªf D>_À(‚òÔ7ð—O¼É°ÿ¤ó5ytKÊ`® ¯ªÆå®ž‚¨„1Žhúè#ÏÀÀÀ©z‹íè„8AµD¨N"ðz¢'5#|Þ¬Èïö5³ÞÞÞ›ÍX"o´f…áœ9®È½_ŸåŸµèBo°u!sû‚H Ä 1‚ªÐa<ÙŸÛ,‘”$=™ ÈB@fËÐ=\ 97Û7ž|ëlPhýB-f4$—ÛàJ+HíZ ‘ÎÐ}fü #•T³'eøyd}ººuzý¿÷ôôÔùLòå6D¸ÿ#E)S;ûÛÖ/Æ[•ïiš6àÛ„6¼n¹wÙ‰5÷¶_ùèu5SZÚT%-¥3 ·¦¦]Jr£ý½™pÿÇn#¾¿Z6â¾€WTy=Âð)àa¹Êâ"¸À àÝ9H$º0³[‚nìymj=.Q'?ïpúÇ=Ɉ¿*óx·ÌßöT*µÐãõ¾ÜqúÕïÏ>åì¯ . CSâ‘p÷ÞwoüÍ“£ªšöAW}† Ý[%¸VE¡dB¯—™Þà–ŒÚjŸA-Ƥ™ó;û¤*UQâ æàƒ#««ðeTá󻸧ûˆ±dÍ;ÏÊ.Öxƒ ÂÇ`¸‡”Hç¸r$*¼šgÚ;æÌ˜ÑÕÕ•…B÷xô³l‰„„% 3Ã0ƶd2™…þ@p×Wn¼wšËí5³íû]»÷¼±£sk”C—Oú2ã\e¤‰Äõ,3Ô´¤+)IW“2eoY£–gSî1-íc ÝÍËÝÙõ:$†;¦b›j¸LéÄ¥Þ>,Ø[O®›uá²YÏ·4øÓã±Ô´Ñhú„pLŸoHþ™ž@]£«ÆŒ†ÃêÎî÷^Öu}9€]íóü¯1f‰UK˜j•Ê$ÕÕ›¨&ßÖÜÜü z‡PÒétâ7ÞØ=É–†€Ó˜œÃàB7èH冚Û¶í¨†·zíÞ½ŸÌëììÜàL‚þÖ-KƒEc{ì,ºóy·ÛÝìõzUj™Ëår“Èñx|¿¢(küZÑ]@¼œ” !(„&ÂUUãæºšÚ¦—ÉÈ+8—SçŸ=cŒA¢xÜðñw7|Ôî÷W=‘ˆÆæmÛ¶mÀ5Öx™ð1d«*ÕäwTp 塳µÖs… û ¦p}ÖbNTfW¸0$’Ö—fiÆ7’J"‘8ãÀ¯Qyät.I’U!räó/ «•H,±nݺ6º~=-O¿sèÐ!ÿ¦M›ÆéÚ_ÈÚ&|§6Á “„Ý„NBб&E/Gºtÿ}2!àñx¾M°œÂ`å©§žºž’£›\“Q‚ääš: ¢rÎ #(_Èããã3ü~ÿ)4æ"j—Q‚b”¡ êÿÀ*ÂQ‹PÂ*ɱQ'AnAàs«Àý&®cŒ=L¤j«ªª†‰XŠÚ self.orig.size().width(): self.p = self.orig.scaled(rect.size().toSize()) else: self.p = QPixmap(self.orig) def createStates(objects, selectedRect, parent): for obj in objects: state = QState(parent) state.assignProperty(obj, 'geometry', selectedRect) parent.addTransition(obj.clicked, state) def createAnimations(objects, machine): for obj in objects: animation = QPropertyAnimation(obj, b'geometry', obj) machine.addDefaultAnimation(animation) if __name__ == '__main__': import sys app = QApplication(sys.argv) p1 = Pixmap(QPixmap(':/digikam.png')) p2 = Pixmap(QPixmap(':/akregator.png')) p3 = Pixmap(QPixmap(':/accessories-dictionary.png')) p4 = Pixmap(QPixmap(':/k3b.png')) p1.setGeometry(QRectF(0.0, 0.0, 64.0, 64.0)) p2.setGeometry(QRectF(236.0, 0.0, 64.0, 64.0)) p3.setGeometry(QRectF(236.0, 236.0, 64.0, 64.0)) p4.setGeometry(QRectF(0.0, 236.0, 64.0, 64.0)) scene = QGraphicsScene(0, 0, 300, 300) scene.setBackgroundBrush(Qt.white) scene.addItem(p1) scene.addItem(p2) scene.addItem(p3) scene.addItem(p4) window = QGraphicsView(scene) window.setFrameStyle(0) window.setAlignment(Qt.AlignLeft | Qt.AlignTop) window.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) window.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) machine = QStateMachine() machine.setGlobalRestorePolicy(QStateMachine.RestoreProperties) group = QState(machine) selectedRect = QRect(86, 86, 128, 128) idleState = QState(group) group.setInitialState(idleState) objects = [p1, p2, p3, p4] createStates(objects, selectedRect, group) createAnimations(objects, machine) machine.setInitialState(group) machine.start() window.resize(300, 300) window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/animation/appchooser/appchooser.qrc0000644000076500000240000000030312613140041024054 0ustar philstaff00000000000000 accessories-dictionary.png akregator.png digikam.png k3b.png PyQt-gpl-5.5.1/examples/animation/appchooser/appchooser_rc.py0000644000076500000240000026262512613140041024424 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 16:14:11 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x13\x09\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x09\x17\x17\x15\x19\x49\x86\x70\x41\x00\x00\x12\x96\x49\x44\ \x41\x54\x78\xda\xed\x5b\x09\x74\x5c\xd5\x79\xfe\xee\x7b\xb3\x6b\ \xb4\x5a\xb2\x25\xd9\x96\x64\x63\x6c\x83\x31\x36\xb6\x81\x00\xe1\ \xb0\x34\x14\xc2\xda\x94\x86\x04\xd2\x90\x42\x72\x20\x5d\x20\x14\ \x68\x08\x4b\x48\x09\x87\xda\xad\x73\x52\x52\x02\x24\xad\x7b\x20\ \xe4\xb0\x95\xcd\x40\xb0\x1b\x56\x2f\x80\xb1\x2d\xdb\xd8\xb2\x6c\ \x6c\xd9\xb2\x2c\xc9\x1a\x4b\x1a\x69\xf6\xe5\x6d\xf7\xf6\x7f\x33\ \xef\xf0\xf4\x3a\x9a\x19\x1b\x26\x3d\xc9\x69\x7e\x9d\x4f\xf7\xbd\ \xfb\xee\x9b\x79\xdf\x77\xff\xe5\xbe\x2b\x1b\x7f\xb4\x3f\xda\xff\ \x6f\x63\x38\x0e\x1b\xbb\x05\x75\x52\xed\xf4\x8b\x5d\x33\x97\x5c\ \x06\xb7\xef\x3c\xa1\xa4\x3c\xd0\xb3\xc3\x42\xcd\x0c\x71\x35\x15\ \x12\x4a\x22\xc4\x53\xe3\x21\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\ \xe8\xd4\x9f\x43\xf9\x83\x16\x40\xfc\xd8\x7f\x95\x68\x5d\x76\x37\ \xe7\x58\xc6\xd3\x51\x99\x08\x42\x70\x01\xe1\x0e\x12\xaa\xc0\x65\ \x3f\x84\xec\x81\x60\x6e\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\ \xd2\x02\xba\x32\x2e\x0c\x6d\x48\xe8\x6a\x48\x68\x4a\x48\xe8\xd9\ \x10\x57\xd3\x24\x54\x7c\x48\x68\xd9\x90\x30\x85\x12\x08\x4d\x7f\ \x0c\x99\xdf\x3b\x01\xc4\x03\x9e\x3f\xc7\xf9\xf7\xbf\x88\xe6\x45\ \xcc\x24\x04\xae\x03\x26\x39\x43\x05\x32\x11\x80\xc4\x80\x9a\xcc\ \x43\xcf\x40\x68\x19\xf0\x6c\x82\x90\x02\x57\x92\xe0\xa6\x50\xb2\ \x0f\x5c\x48\x04\x53\x13\x4e\xd0\xc1\x75\x2d\x27\x14\x40\xd7\x0d\ \x03\x24\x0a\x41\x8d\x0a\xae\x87\x08\x43\xc2\xa0\x36\x07\x95\x04\ \x33\xa1\x0c\x09\x6e\x84\x00\x84\x3a\x1e\x47\xf2\xff\x4e\x80\xa7\ \x2e\xee\xc4\x99\xb7\x2c\x85\xb0\xc8\x73\x23\x07\xc7\xb9\x28\xd6\ \xa7\xe7\xa1\x98\xe2\x64\xed\x3e\xd3\x84\x00\x57\x33\xa4\xa3\x42\ \xc8\x82\x73\x0e\x03\x6e\x70\x12\xd6\x50\x32\x39\x01\x0d\x12\x52\ \xcf\xc4\x01\xba\x26\xcc\x1f\x6e\x80\x3c\x89\xa0\x27\x68\x60\x4e\ \x90\x1c\x04\x0f\x01\x3c\xc4\x64\x98\xd8\xd9\x71\x29\xba\xd9\xc5\ \x10\x95\x11\xe0\x85\x6b\x53\x58\x78\x6d\x20\x3f\xf3\x46\x09\x01\ \x9c\x62\x38\xc6\x8b\xdc\x35\x1b\xa2\xc8\x58\xf2\x1e\x40\x00\x14\ \x4e\x90\xdc\x80\xcb\x47\xf0\xe7\x3c\x46\xd7\x75\x18\x9a\x96\xf3\ \x20\x9d\x33\x12\x27\x09\x3d\x35\x06\x75\xa4\x07\x7a\xa2\x0f\xae\ \x00\x03\xf3\xe4\x6f\x37\x14\xf1\x3a\x35\xdf\xe8\x58\x81\x04\xca\ \x98\x0b\x65\x8d\xb9\x72\x0f\x97\x8b\x69\x82\x63\xc6\xb9\x89\x82\ \x63\xc7\x78\x61\x58\x2d\xb7\xfa\x8b\x8c\x35\x21\xc9\xf9\x3e\xcd\ \xf4\x96\xd4\xa7\xe2\x48\x34\xc6\x63\x0b\x95\x0f\x3f\xd9\x0b\xd4\ \xd7\x00\xb3\x2e\x85\xde\x34\x97\x9c\xec\x03\xe8\x43\xab\xc1\xb3\ \x06\xd4\x38\xae\xc8\x8c\x88\x55\xa2\x1b\x5f\x63\x0b\x50\xd2\x24\ \x94\x35\x0e\x88\x89\x04\x78\x01\x81\xa2\xd7\x45\x31\x91\x8a\x7c\ \xd6\xb1\x7e\xb6\x69\x5a\x1a\x48\x1c\x01\x0e\xbf\x0f\xd7\xbe\x35\ \xa8\x5a\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf3\x38\ \x4e\x00\x3e\xaf\x00\x42\x4c\x70\xdd\x22\x33\x69\x79\x44\xd9\x87\ \xe7\xe5\xbd\x80\x50\xfe\xb3\xed\x6b\x79\x11\x0e\xbc\x09\xac\xbd\ \x13\x7a\x66\x16\x52\x43\x02\xe9\x61\x01\x35\x29\x98\xa1\x62\x49\ \x25\x04\x28\x7c\x38\xce\x8b\xcc\x6c\x31\x61\x8e\x91\x38\x2f\x15\ \x5a\x93\x08\x13\x27\xf2\xe9\x31\xe4\xec\x93\xd5\x30\x12\x5e\xa4\ \x8f\x9a\xe4\xf3\xb7\x42\xc0\x5f\x81\x1c\x20\x0a\xc9\xd8\x84\x4a\ \x92\x71\x1e\x97\x0a\x25\x5e\x46\x9c\x42\xf1\x6c\xf2\xf6\x44\x31\ \xdd\x2c\xaf\xd6\x23\xc3\xb2\xcf\x2d\x40\xa1\xdb\x15\x78\x41\xb1\ \xd8\x75\x1e\x17\x0f\x95\xc2\x44\x59\xc6\xc3\xe2\x83\x44\x3e\x8c\ \x02\xe3\x1a\x84\xc5\xbc\x72\x02\x40\x14\xcd\xe8\x36\x81\xe3\x4d\ \x88\x45\xae\x17\x92\x2d\x1c\x1f\x1b\x70\x90\x77\x98\xa1\x43\xa0\ \xd2\x02\x08\x41\x30\x8e\x3d\xa3\x17\x86\x4a\xf9\x24\xc8\x8f\x31\ \x29\xc6\x4b\x90\x27\x13\xa6\x07\x4c\x9c\xb7\x0a\x09\xe0\x24\x5b\ \xbe\xd4\x95\x5f\x03\x94\xff\xac\x42\x0f\x8b\xf5\x03\xa9\x51\x94\ \x34\x43\xb7\x89\x57\x38\x04\x2c\x18\x05\x0f\x57\x9e\x4c\x91\x6b\ \x28\xa8\x26\xc5\x45\x8d\x1d\x2e\x4f\x1e\xc8\x2f\x93\xe1\x14\xa0\ \x12\x65\xd0\x41\xb6\x10\x45\x32\x36\x6c\xa2\xb9\x7e\x10\x98\x75\ \x0e\x6e\x9d\x13\x60\xf7\x4d\x9a\x10\xcb\xcf\xbc\x33\x09\x02\x36\ \x44\x25\x04\x40\xc9\x44\x35\xb9\x10\xb0\x88\xb1\x63\x24\x6e\xc2\ \x3e\xb6\xbf\x27\x6a\xce\xfc\x08\x8e\xd5\x04\xd7\x2d\xe2\x16\x2a\ \xe4\x01\x65\x56\x7a\x0e\x22\xc5\x88\x95\x12\xc3\xea\x73\x0a\x87\ \x58\x5f\x01\xf9\xb2\x66\x38\xca\x60\x25\x05\x28\x1f\xdb\x4e\x21\ \x9c\x64\x0a\x3d\xc2\x26\x6e\x0b\x64\x58\xe0\x40\x9c\xc8\x67\x88\ \xbc\x54\xe4\x7d\xb5\x74\x15\x70\xa0\xd2\x2b\xc1\x82\x38\xb7\x60\ \x93\x13\xff\xdb\x0b\x2c\x62\xc2\xe1\xe6\x36\x59\x82\xe3\x38\x7e\ \x88\xc8\x0f\x03\xb2\x35\x54\x58\xe0\x28\x67\xf6\x3a\xc0\xf6\x82\ \x0a\xaf\x04\x3d\x55\x40\xfd\x09\xf9\xa7\xd1\xd3\x40\x26\x0c\x24\ \x8f\x02\x5a\xd2\x99\xe8\xec\x58\x2e\x14\x88\x39\x12\xa3\x53\xa8\ \x78\x6f\x9e\xbc\x64\x3d\x3d\xb3\x45\xb0\xfd\xba\x74\x15\xb0\xcb\ \x60\xe5\xd6\x01\xb6\x08\xfe\x29\xc0\xdc\x4b\xe1\x34\x91\x17\x61\ \x6c\x2f\x10\xfa\x28\xe7\xbe\x85\xee\x4f\x10\x13\xfa\x84\xc3\xe5\ \xf3\x6d\xe2\x90\x93\xbc\x4d\xd6\xd9\xf2\x12\xcc\xac\x24\x58\xe9\ \x75\x80\x23\xbb\x17\x1a\x03\x82\x2d\x79\xb4\x5f\x98\x17\xe0\xe0\ \x6b\xc0\x48\xa7\x33\x1c\x18\x01\x36\x79\xb3\xb5\xc9\x9b\x33\x7f\ \xd4\x72\xfb\x32\x02\xc0\x1e\x53\x72\x1d\x20\x08\x15\x4d\x82\xb0\ \x50\xce\x6a\x3a\x80\xd3\x6e\x05\xce\xb8\x17\xa8\x9e\x3e\x21\xce\ \xed\x7c\x60\x9f\x5b\xe4\xb3\x16\x79\x09\xd4\x5a\x90\xca\x80\xa1\ \xf8\xcb\x90\xa8\x64\x15\xc0\x24\x19\xdf\x50\xca\xaf\x32\xea\xe7\ \x01\xe7\x2c\x07\x3a\x2e\x73\x84\x84\x0d\x93\xfc\x41\x22\x1f\xb2\ \x49\x95\x03\x2b\x2d\x82\x30\xf4\xca\x57\x01\x22\x6a\x27\xaa\x48\ \x0f\xb0\xee\x6e\x40\xe8\xf9\x73\x6f\x35\x10\x6c\x26\xb2\x27\x02\ \xd3\x96\xd1\x79\x7d\xc1\x76\x22\x4e\xba\x01\xa8\x9b\x03\xec\x5c\ \x09\x18\x9a\x95\x00\x09\x89\x03\x80\x62\x91\x17\x93\x00\x8e\x44\ \x68\x1b\xb7\xa7\xad\x20\x1c\xb8\xe6\x8c\x16\x51\xe9\x32\x88\x89\ \xe5\x4f\x07\xb2\x61\xc2\x30\x30\xba\x1d\xe8\x79\x16\x68\x5c\x04\ \xcc\xfe\x33\xa0\xba\x1d\x0e\x6b\x39\x17\xf0\x90\x58\x9d\x14\x16\ \x9a\x0a\x24\x7b\xec\x99\x17\x25\x92\x9c\x70\x10\x76\x92\x66\x13\ \x20\x9c\x1e\x90\xfb\x55\xb1\x10\x60\x02\xce\x9a\x3f\x59\x19\xb3\ \xb6\xba\x47\xb6\x00\x9b\x7f\x00\x7c\xb2\x8a\xba\xb2\x70\xd8\x94\ \xc5\xc0\x92\xfb\x81\x74\x9f\x49\xbe\x78\xcc\xdb\xfd\xc7\x17\x1a\ \xa6\xd9\x65\x90\x50\xa9\x24\x08\x51\x58\xd7\x6d\xf2\x85\xab\x3e\ \x53\x88\x81\x35\x24\xc4\x1d\x40\x6a\x10\x0e\x6b\x3a\x13\x38\xf5\ \xfb\x05\x64\xcb\x82\x4d\x1a\xff\xce\x7e\xf6\x3b\x5d\x09\x5a\x04\ \xfd\x8d\x40\xfb\x05\x80\xbb\x2a\x17\x6f\x48\x0f\x01\xf1\x83\xc0\ \x78\x17\x60\xa8\x13\x44\xa0\x36\x75\x18\xd8\x4a\x22\x2c\x79\x10\ \xa8\x99\x8b\x4f\x6d\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01\x50\x26\ \xfe\x51\xc2\xf5\x25\x47\x9e\xc8\x83\xeb\xf6\xed\xa2\x32\xeb\x00\ \xe7\xcc\xfb\xea\x80\xd6\xb3\x60\xdb\x52\x02\xf2\x2b\xc1\xa1\x77\ \x80\xbe\xd5\x74\x1c\xb1\x17\x3b\x5a\x14\xd8\x7e\x17\x89\xf0\xcf\ \x4e\x11\xce\x7c\x04\x18\x79\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5\x4f\ \x27\x69\xc9\x3e\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a\x3b\ \x08\xb4\x5f\x05\x9c\xf5\x53\xa0\x71\xa9\xf3\xe5\x66\x7c\x2b\xb0\ \xfe\x72\x40\x8b\xd9\xe3\x3d\x0d\xa4\xdd\x4f\xca\xd7\x7c\x66\xb7\ \x36\x8a\x84\x06\x9b\xc4\xa1\x2a\x23\x80\x73\x25\x58\xd2\x3c\xf5\ \xc0\xe2\xfb\x80\xb6\x2b\xf2\x5e\x90\xd8\x07\x28\x47\x80\x54\x0f\ \xb0\xfd\x56\x38\xac\xfd\x5a\xa0\xe1\xb4\xcf\x50\xfb\x4b\xc2\xb1\ \x12\x14\xa2\x62\x02\x70\x0b\x02\x50\x62\x40\x78\x17\x30\xb2\x0d\ \x48\x0e\x4e\xf2\x2d\x0c\x98\xfb\x5d\xa0\xf1\x4c\x20\x3b\x68\x3f\ \x78\xff\x53\x74\xcf\x3b\x13\x86\x51\xe7\x29\xf7\x1d\x67\x22\x2c\ \x71\xcc\x9c\xc4\x05\x2a\x97\x03\xec\xfa\x3f\xbe\x17\xd8\x70\x1b\ \x00\xdd\x0a\x09\xeb\x05\xa9\xe3\x4a\x60\xc6\xc5\xce\xa5\xd9\xc2\ \x1f\x11\xe1\xdf\x02\x91\x4e\xfb\x41\x77\xdf\x05\x5c\xb8\xd5\x1e\ \xd7\x4a\x61\x13\x6c\x03\x92\xfd\xce\xd8\x67\x36\x0a\x63\xbd\x04\ \x80\xcf\xb6\x27\xf8\xe0\x7d\x37\x2d\xdc\xf2\xf6\x4f\xa5\xd2\x55\ \x80\xc0\x55\xe7\x92\x18\x84\x4c\x08\xd8\xfb\x18\xb0\xfd\x87\x80\ \x91\x99\xf0\xc9\x6e\xe0\x0b\xbf\x06\x5c\x2e\x7b\x16\xe3\xdb\x80\ \xd1\x89\x5e\x20\x03\xed\xdf\x2c\x3b\xf3\x4e\x14\xef\x17\xec\x33\ \xe6\x80\xb7\x37\xf7\xae\x7e\x6b\xc3\xbe\x5f\x90\x08\xac\x68\x0e\ \x28\xdc\xf3\x73\x2e\x90\xc6\x3a\x81\x0f\x6f\xb4\xfa\x2c\xab\x9e\ \x0f\xb4\x5d\xe7\x8c\xe3\xfe\x5f\xc2\x61\xd3\xaf\x2e\x41\xba\x4c\ \xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc\x35\x38\ \x7f\xc7\xee\xc1\x7f\x25\x11\x4a\x6f\x89\x81\x3b\x84\xb0\x77\x6f\ \xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5\x24\x37\xba\x06\ \x30\xd2\xf6\xf5\xda\xc5\x80\x7f\x6a\x01\xe9\xe3\x24\x6e\x0b\x20\ \x3e\x83\x07\x24\x33\x19\x43\x81\xfb\xce\xd7\xdf\xec\xba\xe6\x50\ \xff\xd8\x43\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17\x3d\x4f\ \xed\x0a\x20\x38\x33\x4f\x3e\x3d\x80\x9c\xed\xa5\x9a\xaf\xc5\x27\ \x78\xc1\xc9\x40\xcd\x7c\x9b\x94\x20\xf2\xd1\x0f\x9d\x49\x73\xca\ \xd9\x85\xa4\x51\x36\xde\x0b\xc9\x33\x27\x71\x21\xb9\xe5\x63\x12\ \x20\x95\xc9\x1a\x29\xdd\xc8\x8e\x45\x92\xb7\x3c\xbb\x7a\xeb\x3d\ \x6b\x5f\x78\xf0\x9e\xc2\x3f\x8d\xf1\x7c\xe6\x5e\x72\x27\x50\x6f\ \x12\x72\x01\x75\xd4\x9e\xbe\xc2\x76\x7b\x86\xfc\xe2\xe7\xc8\xab\ \x70\xd8\xd4\x8b\x9d\x33\x1b\xdb\x0c\x87\xd5\x2e\x3a\x0e\xa2\x65\ \x44\x80\x05\xfa\xb5\xcb\x77\xfa\x2f\x96\x3f\x70\xeb\xeb\x8f\x3d\ \xfc\xc3\xef\xfc\xec\x27\xf7\x4e\x2f\x5a\x05\x32\x8a\xa2\x27\xd2\ \x19\xff\xf6\x4d\x9b\x5e\x5a\xba\x74\xe9\x6b\xcf\xbc\xbc\xf9\xa1\ \x0f\xff\x7b\xe5\xc8\xd9\x97\xfc\xc3\x2a\x47\x12\xac\x99\x0d\x54\ \xb5\xc0\x61\xee\x1a\xe0\xe4\xef\x01\xdb\xbf\x6f\xf7\x8d\x6e\x00\ \x3a\xbe\x39\xc1\x0b\x4e\x71\xba\x77\x66\x1f\x1c\x56\x75\xc2\xf1\ \x91\x47\x89\xbe\x09\x25\x70\xe3\xa6\x2e\xcf\x86\xa1\xfd\x97\x37\ \xd4\xd7\x5e\x3e\x73\x66\x8b\xf8\xea\xd5\x57\xec\x9a\x36\x6d\xda\ \x7b\x55\x55\x35\xeb\x33\x59\xf5\x83\x7f\x7b\xe4\xe7\xa3\x39\x01\ \x14\x4d\xe3\x14\x06\x7e\x90\x71\xce\xff\x76\x67\x77\xff\xb9\x2f\ \xbd\xb1\xed\x71\xca\x07\xc3\x38\xfc\xa4\x2d\x80\x96\x29\xb2\xf9\ \x71\x0a\x1c\x96\x19\x80\xc3\x7c\xcd\xce\x87\x56\x87\xe0\x30\x6f\ \x4b\x59\x82\xe5\xc9\x3b\x63\x9f\x83\x61\x6a\x9d\xf7\xad\xda\x54\ \xed\x02\x26\xb9\x5a\x87\x47\xa2\x6c\x6c\x3c\xb9\xa8\xb7\x6f\x68\ \x91\x2c\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99\x73\x7b\x4e\x00\x5d\xd7\ \x59\x3a\x9b\x0d\x80\x6c\xc7\x8e\x1d\x83\x0b\x16\x2c\xf8\xbb\x35\ \x6f\xef\x7c\xba\x65\x5a\xed\x73\x27\x9d\x30\x53\x0e\x72\xc3\xda\ \xc1\xe9\x07\xd2\x47\x81\x40\x33\x1c\x96\x3c\x0c\xe7\x02\x5c\x86\ \xc3\x5c\xb5\xce\x35\xbf\x91\x82\xc3\xe4\x2a\x1c\x97\xb1\xc9\xfb\ \x46\xb2\x3e\xbc\x1f\xa9\xc3\xc1\x4c\x2d\x0e\x67\x6b\x30\x1e\x4b\ \x5f\xa4\xeb\x49\xc4\x62\x31\x28\xe4\xe5\x84\x7d\xc4\xb5\x95\x73\ \x5e\x6f\xf9\xe2\x2c\xf3\x17\xb8\x10\x8c\xf2\x40\x10\x96\x75\x77\ \x77\x3f\x63\x18\xc6\xd3\xff\xf9\xf4\xba\xc0\x6b\x91\xb9\x72\x5a\ \x78\x00\x6e\xfd\xe3\xc8\xf5\xb7\xe5\x57\x83\xb0\x2c\x3b\x0a\xec\ \x7c\xc8\x49\xb0\xaa\x03\x0e\xd3\xe3\x70\xee\xef\x7b\x50\x60\xf6\ \xfd\xc7\x65\xe3\x59\x37\x7e\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\ \xcf\xc5\x7b\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde\x2e\xd4\x25\xba\x51\ \xa7\xf4\x3f\x5a\x53\x53\x73\xe1\xca\x95\x2b\x67\x90\x00\x4b\x67\ \xcf\x9e\xdd\x23\x49\x12\xac\x6f\x7a\xcb\x05\xb2\x80\xcf\xd3\x94\ \x55\x95\x46\x4c\x30\x12\xe0\x26\x55\x35\x4e\x5e\xfe\xd8\xda\xd3\ \x3c\xb7\x5c\x86\xcb\x9b\xfa\xe0\x33\x5f\x7b\x93\x7d\x24\xf5\x26\ \x60\xee\xd7\xf3\x1a\xf6\x3c\x01\xa8\x24\x82\x3c\xe1\xe1\x5b\x2e\ \x83\xc3\x52\xbd\x36\x79\x46\x90\xeb\xe1\x30\x6d\x1c\x10\xc7\x21\ \x82\x99\xe0\x46\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06\x4d\xd7\x10\ \x8f\x8f\x43\x44\xdf\xc3\xe5\x73\x0d\xcc\x59\xe4\xc3\x89\xb3\xda\ \xe0\xad\x6d\xa6\x3c\x7d\x41\x5f\xfb\x95\xf7\x0c\x03\x10\x0f\x3f\ \xfc\x30\x23\x5b\x2c\x44\x2e\x6b\x5f\x4d\x78\xc3\x75\xcf\xdf\x5f\ \x83\xc7\xd6\xee\x6c\x4a\xa6\xd5\x16\xcb\x2d\x38\x01\x07\x0f\x1e\ \x4c\xb7\xb5\xb5\x7d\x25\x1a\x49\x6c\x5d\xf1\xcb\xdf\x36\xc9\x37\ \x7e\x11\x97\x64\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe\x2f\x80\x79\ \x2c\xe3\xd3\xed\x6c\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3\x66\xc9\ \xcc\x23\xfc\x2e\xc0\x27\xb8\xaf\x6f\x0e\x1c\xa6\x5a\x02\x38\x45\ \x98\xb4\x6f\xf3\x60\x10\xab\xb6\x35\x63\xd3\x61\x2f\xa2\xd1\x08\ \x62\x91\x8f\xf1\xa5\x39\x0a\x7e\x74\x9e\x84\xf3\x17\xce\x04\xab\ \x9b\x87\x3d\x83\x40\x64\xe8\x10\xa2\x07\x3b\x11\xee\xdd\x79\xf0\ \x9d\x70\xf3\x01\x00\x7c\xc5\x8a\x15\xcb\xc8\x1b\x3c\x24\xc0\xeb\ \x00\x72\xa5\xca\xd5\xd8\x58\x23\x65\x15\xad\xdf\xd0\x35\x0e\xa0\ \x86\x90\x26\x68\x04\x31\xbb\xbf\xff\x70\xf4\x84\xa6\xeb\x87\x8e\ \x8c\xac\x59\xf1\xe4\x26\x96\xb9\xfa\x6a\x9c\x6f\xbc\x08\x8f\xac\ \x41\x96\xcd\x4a\x48\xa0\x56\xa6\x96\x59\xe7\x8c\x13\xc2\x5d\x60\ \x11\x82\x9c\xaf\x9c\x29\x5d\xc6\xa1\xb1\x00\x8e\xc4\x3c\x18\x8a\ \x7a\x10\x7a\xf5\xbf\x10\xd3\xd7\x21\xcd\xa6\x23\x65\xd4\x01\x24\ \x6c\x2d\xef\x40\x8d\xcf\xc0\xd4\x6a\x0d\x73\x9b\x32\x58\x36\x23\ \x85\x29\x7e\x1d\xa6\x0d\x27\xdc\xd8\x70\xb0\x1a\x2f\x75\x4d\xc1\ \xc7\x83\x12\xc2\xe1\x30\x22\xe3\xe3\xf8\x8b\xa5\xc0\x03\x37\x07\ \x70\xe2\xbc\x2f\xe4\x12\xb1\x88\x1d\x81\x31\xb4\x1d\x91\x7d\x31\ \xa4\x14\x91\x4f\x37\x6e\xb7\x35\x45\x60\x2d\x2d\x2d\x17\x9b\xf9\ \x80\xec\x79\x58\xe6\xba\xfd\xde\x55\x1c\x5e\xff\x12\xa8\x59\x93\ \xfc\x14\x42\x15\x21\x46\xc8\x10\xf8\x99\xd3\x47\xd7\x6d\x3c\x5c\ \xf7\x60\x6f\xdf\x91\xfb\x1f\x7e\x49\x42\xf4\x4f\xaf\xc2\x32\x75\ \x35\x3c\x2e\x1d\x2e\x57\x9e\xbc\xcb\x12\x81\x13\xdb\x50\xda\x8b\ \xc1\xb8\x17\xfd\x51\x1f\x8e\x24\x83\xd8\x3f\xec\x42\x6f\x48\x43\ \x3a\x93\x45\x36\x9b\x85\xaa\x66\x20\x44\x1a\x3e\x5f\x06\x81\xc0\ \x28\x82\xf2\x18\x3c\x48\x23\x6f\x12\x09\xe4\x42\x46\xf7\xc0\xef\ \xaf\xc7\xec\x66\x2f\x3d\x5a\x35\x14\xe1\x43\x86\xee\x1f\x0a\x8d\ \x20\x3c\x36\x86\xa0\x17\x78\xed\x8e\x7a\x5c\xf2\x27\xe7\x03\xb5\ \x27\x43\x28\x29\x18\x07\xd7\xe6\x04\x10\x06\xc0\x49\x79\xc1\x04\ \x84\xe0\x74\xec\xca\x15\x5f\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\ \xcb\x80\x6e\x77\xbe\x0d\x2a\xf4\xe9\x00\xb7\x50\x47\xf0\x13\xa2\ \x9b\x81\x44\xbb\x0e\x76\x61\x7b\xf4\xb9\xf7\x0e\xd7\xce\x3e\xd4\ \x37\xf0\x97\x4f\xbc\xc9\xb0\xff\xa4\xf3\x35\x79\x74\x4b\xca\x60\ \xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x81\x31\x8e\x68\ \x3c\x8d\x54\x2a\x83\x44\x32\x8d\x80\x34\x88\x93\x5a\x75\x5c\xbb\ \x54\xc2\xbc\x19\x40\x5b\xb3\x84\xf6\xd6\x20\x9a\xbf\xf4\x22\x24\ \x33\x51\xba\x48\xf3\x9d\x37\x83\x99\x9b\x26\xba\x02\x28\x49\x30\ \x35\x85\xa7\xd6\xeb\xb8\xf1\x3f\x52\x18\x19\xe1\x85\xc9\x9e\x01\ \xab\x6f\x0b\xe0\xbc\x2b\xbe\x05\xe1\x69\x82\x48\x0e\x43\xdb\xf7\ \x12\x90\x49\x12\x61\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90\x68\xa6\ \x00\xf6\xca\x2b\xaf\xdc\x10\x08\x04\x66\x47\xa3\xd1\x55\x20\x5e\ \xc5\x0a\x8a\x8b\x10\x24\x34\x10\xbc\x84\x64\x73\x10\x89\xf3\xe7\ \x81\x35\x04\x51\xfb\x9b\xfd\x0d\x77\x29\xdc\xfd\xdd\xd6\xd6\x56\ \xf4\xf7\xf7\xa1\x2a\xe0\x05\x37\x34\x84\x86\x23\x30\x0c\x8e\x69\ \xb5\x14\x87\xf3\x25\x9c\x3b\x8f\xe1\x82\xa5\x4d\x68\x9f\x3d\x8b\ \x2a\x5c\x13\x98\xbf\x01\xcc\x5b\x0b\xe6\x0e\x82\x41\x03\xb8\x92\ \x03\x33\xb2\x10\x6a\x14\x2c\x3d\x08\xa4\x87\x73\xdb\xec\x4c\xcb\ \xe2\xd0\x51\x81\xb3\x97\xd7\x62\x24\x1c\x01\x59\x6e\xc6\x3b\x1a\ \x25\xec\x09\x01\xa7\xb5\x09\x7c\xf0\xb3\x0b\x20\xd1\xeb\x37\x4f\ \x47\xa0\xed\x79\x06\x22\x9b\xb4\x37\xaa\x75\x81\x4d\x07\x38\x14\ \x8d\x83\x09\xae\x27\x1b\x16\x2f\x7c\xba\xa7\x4e\x27\xf2\x5b\x3e\ \xfa\xe8\x23\xcf\xc0\xc0\xc0\xa9\x00\x7a\x8b\xed\x07\xe8\x84\x38\ \x41\xb5\x44\xa8\x1d\x4e\x22\xf0\x7a\x17\xa2\x27\x35\x23\x7c\xde\ \xac\xc8\x9d\xef\xf6\x35\xb3\xde\xde\xde\x9b\xcd\x58\x22\x6f\xb4\ \x66\x85\xe1\x9c\x39\xae\xc8\xbd\x5f\x9f\xe5\x9f\xb5\xe8\x42\x6f\ \xb0\x75\x21\x73\xfb\x82\x48\x0b\x05\xc4\x90\xa0\x10\x31\x82\xaa\ \xd0\x61\x14\x3c\xd9\x9f\xdb\x2c\x91\x94\x10\x24\x3d\x01\x99\x09\ \xc8\x42\x40\x12\x66\xcb\xd0\x3d\x5c\x0d\x0e\x39\x37\xdb\x37\x9e\ \x03\x7c\xeb\x6c\x50\x68\x00\x7f\xfd\x42\x2d\x66\x34\x24\x10\x97\ \xdb\xe0\x4a\x2b\x48\xed\x5a\x0d\x91\xce\xd0\x7d\x66\xfc\x09\x08\ \x9d\x23\x95\x11\x54\x1a\x01\xb3\x27\x65\xf8\x1e\x79\x64\x7d\xba\ \xba\x75\x7a\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1b\x4c\xf2\xe5\x36\ \x44\xb8\x15\xff\x23\x04\x45\x00\x8d\x29\x15\x53\x3b\xfb\x11\xdb\ \xd6\x2f\xc6\x5b\x1b\x95\xef\x69\x9a\x36\x04\xe0\xdb\x84\x36\x02\ \xbc\x6e\xb9\x77\xd9\x89\x35\xf7\xb6\x5f\xf9\xe8\x75\x35\x53\x5a\ \xda\x54\x25\x2d\xa5\x33\x09\xb7\xa6\xa6\x5d\x4a\x72\x14\xa3\xfd\ \xbd\x99\x70\xff\xc7\x6e\x23\xbe\xbf\x5a\x36\xe2\xbe\x80\x57\x54\ \x79\x3d\xc2\x13\xf0\x08\x29\xe0\x61\xb9\xca\xe2\x22\xb8\x19\xc0\ \x0d\xe0\xdd\x81\x39\x48\x24\xba\x30\xb3\x1e\x5b\x82\x6e\xec\x79\ \x6d\x07\x6a\x3d\x2e\x51\x27\x04\x3f\xef\x70\x18\xfa\xc7\x3d\x11\ \xc9\x88\xbf\x2a\xf3\x78\x04\x01\xb7\xcc\x3c\x4c\x80\x71\x01\x45\ \x15\x62\xdf\x30\xd4\xa3\x09\x36\x7a\x28\xea\xde\xf8\xe1\xa0\xdf\ \x35\xeb\xc4\xa6\xd5\x54\xd1\x9a\xf7\xee\xdd\x7b\x37\x80\x5f\x1d\ \xeb\x8e\x90\xb0\xbc\x60\xdc\x6a\x1b\x09\x0d\x02\x08\x1c\x09\x8f\ \x87\x01\xac\x90\x65\xf9\x9f\x7c\x3e\xdf\xf6\x54\x2a\xb5\xd0\xe3\ \xf5\xbe\xdc\x71\xfa\xd5\xef\xcf\x3e\xe5\xec\xaf\x09\x2e\x06\x0c\ \x43\x53\xe2\x91\x70\xf7\xde\x1d\x1b\x77\x6f\xfc\xcd\x93\xa3\xaa\ \x9a\xf6\x41\x57\x7d\x86\x11\x0c\x08\xdd\x5b\x25\xb8\x56\x45\xa1\ \x13\x64\x42\xaf\x97\x99\xde\xe0\x96\x8c\xda\x6a\x9f\x41\x2d\x0f\ \xc6\xa4\x99\xf3\x3b\xfb\xa4\x2a\x55\x51\xe2\x0b\xe6\xe0\x0e\x83\ \x23\xab\xab\xf0\x65\x54\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1\x64\xcd\ \x3b\x9d\xcf\xca\x2e\xd6\x00\x78\x83\x0c\xc2\xc7\x60\xb8\x05\x87\ \x94\x48\xc3\x08\xa7\xb8\x72\x24\x2a\xbc\x9a\x67\xda\x17\x3b\xe6\ \xcc\x98\xd1\xd5\xd5\x95\x08\x85\x42\xf7\x00\x78\xf4\xb3\x6c\x89\ \x19\x84\x84\x25\xc2\x14\x0b\x33\x08\x11\xc3\x30\xc6\x1a\x1a\x1a\ \xb6\x64\x32\x99\x85\xfe\x40\x70\xd7\x57\x6e\xbc\x77\x9a\xcb\xed\ \x35\xb3\xed\xfb\x5d\xbb\xf7\xbc\xb1\xa3\x73\x6b\x94\x43\x97\x1a\ \x4f\xfa\x32\xe3\x5c\x65\xa4\x89\xc4\xf5\x2c\x33\xd4\xb4\xa4\x2b\ \x29\x49\x57\x93\x32\x65\x6f\x59\xa3\x96\x67\x53\xee\x31\x2d\xed\ \x19\x1c\x63\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5\x3a\x24\x86\x07\x3b\ \xa6\x62\x9b\x00\x1d\x6a\x90\xb8\x4c\xe9\xc4\xa5\xde\x3e\x2c\xd8\ \x5b\x4f\xae\x1f\x9b\x75\xe1\xb2\x59\xcf\xb7\x34\xf8\xd3\xe3\xb1\ \xd4\xb4\xd1\x68\xfa\x84\x70\x4c\x9f\x6f\x48\xfe\x99\x9e\x40\x5d\ \xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7\x5e\xd6\x75\x7d\x39\ \x80\x5d\x04\xed\xf3\xfc\xaf\x31\x66\x89\x55\x4b\x98\x6a\x95\xca\ \x24\xd5\xd5\x9b\xa8\x26\xdf\xd6\xdc\xdc\xfc\x0d\x7a\x87\x50\xd2\ \xe9\x74\xe2\x8d\x37\xde\xd8\x3d\xc9\x96\x86\x80\x05\xd3\x98\x10\ \x9c\xc3\xe0\x42\x37\xe8\x48\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\ \xb7\x7a\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0\x4c\x82\xfe\ \x8f\x00\xd6\x2d\x06\x4b\x8d\x83\x45\x63\x90\x7b\x13\xec\x2c\xba\ \xf3\x79\xb7\xdb\xdd\xec\xf5\x7a\x55\x6a\x99\xcb\xe5\x72\x93\x81\ \xc8\x1a\xf1\x78\x7c\xbf\xa2\x28\x6b\x01\xfc\x5a\x08\xd1\x5d\x40\ \xbc\x9c\x07\x94\x08\x09\x8d\x10\x21\x28\x84\x26\xc2\x14\x55\x55\ \xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8\x2b\x38\x00\x97\x53\x00\xe7\ \x9f\x3d\x18\x63\x1c\x8c\x41\xa2\x1f\x78\xdc\x02\xf0\xf1\x77\x37\ \x7c\xd4\xee\xf7\x57\x3d\x91\x88\xc6\xe6\x6d\xdb\xb6\x6d\x14\xc0\ \x35\xd6\x78\x99\x04\x90\xf0\x31\x64\xab\x2a\xd5\xe4\x77\x54\x70\ \x0b\xe5\xa1\xb3\x08\xb5\xd6\x73\x85\x09\xfb\x09\xa6\x70\x7d\xd6\ \x62\x4e\x54\x66\x57\xb8\x30\x24\x92\xd6\x97\x66\x69\xc6\x37\x92\ \x00\x4a\x22\x91\x38\xe3\xc0\x81\x03\xaf\x51\x79\xe4\x74\x2e\x13\ \x49\x13\x92\x55\x21\x72\xe4\xf3\x13\x2f\x0c\xab\x95\x48\x2c\xb1\ \x6e\xdd\xba\x36\xba\x7e\x3d\x2d\x4f\xbf\x73\xe8\xd0\x21\xff\xa6\ \x4d\x9b\xc6\xe9\xda\x5f\x01\xc8\x12\xda\x26\x7c\xa7\x36\xc1\x0b\ \x93\x84\xdd\x84\x4e\x42\x8a\x90\xb1\x26\x45\x2f\x47\xba\x74\x08\ \x1c\xff\x7d\x32\x21\xe0\xf1\x78\xbe\x4d\x1e\xb0\x9c\xc2\x60\xe5\ \xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93\x51\x82\xe4\xe4\x9a\x3a\ \x09\xa2\x72\xce\x0d\x1a\x23\x28\x5f\xc8\xe3\xe3\xe3\x33\xfc\x7e\ \xff\x29\x34\xe6\x22\x6a\x97\x51\x82\x62\x94\xa1\x0d\xea\xff\x10\ \xc0\x2a\xc2\x51\x8b\x50\xc2\x2a\xc9\xb1\x1c\x51\x27\x41\x6e\x41\ \xe0\x73\x1a\xab\xc0\xfd\x26\xae\x63\x8c\x3d\x4c\xa4\x6a\xab\xaa\ \xaa\x86\x89\x58\x8a\xda\x0c\x09\x20\x3c\x79\xf3\xd1\xf5\x06\x42\ \x8d\x39\xfb\xe4\x39\x88\x44\x22\xc6\xd0\xd0\x50\x2f\x79\xc2\x06\ \x6b\x69\x3a\x60\x11\x4d\x12\xd2\x96\x08\x9a\x4d\xf6\x77\x63\x0c\ \x95\xb3\x2a\xc2\x97\x09\xa7\x13\xda\x2c\xc2\x75\x04\x37\xe7\x5c\ \xb2\x5e\x41\x23\x84\x83\x84\x6e\xc2\xfb\x84\x7e\x6b\xa6\x8d\x72\ \x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17\x56\x81\ \xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\x1c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x08\x12\x14\x39\x28\x29\x91\x7c\x0e\x00\x00\x1f\xa9\x49\x44\ \x41\x54\x78\xda\xe5\x9b\x09\xb0\x5c\x57\x99\xdf\xff\xb7\xf7\xbd\ \x5f\xbf\xfd\xe9\xe9\x3d\x49\xd6\x2e\xd9\xda\x2c\x79\xc1\x78\xc0\ \x76\x42\x81\xc1\x03\x64\x0c\x13\x1c\x42\x65\x02\x4e\xb1\x84\x78\ \x5c\xc5\x14\x55\x49\x2a\x54\x48\x05\x2a\x03\xc3\x14\x03\x55\x33\ \x13\x43\x2a\xae\x21\x9e\x01\x26\x05\x43\x80\xd8\xb2\x0d\x78\xc3\ \x96\x25\x6b\xb1\xf5\xb4\x3d\x6b\x7d\xd2\xdb\xb7\xde\xb7\xdb\xb7\ \xf3\x3b\xa7\xbb\x35\x12\x1a\x0a\x18\xb0\x81\x4a\xcb\x9f\xcf\xed\ \xbb\x9c\x77\xbe\xed\xff\x2d\xf7\xb4\xfe\x7f\xff\x38\xaf\xe7\xdf\ \x59\xb3\x66\x8d\xaf\xab\xab\xcb\xd7\xdb\xdb\x6b\x29\x91\x48\x38\ \xd5\x6a\x55\xb9\x5c\xce\x5b\x58\x58\xf0\x96\x97\x97\xbd\x0b\x17\ \x2e\x78\xd9\x6c\xb6\x29\x09\xfa\x2d\x16\x40\x24\x12\xf1\x6d\xdd\ \xba\x35\xb0\x7b\xf7\xee\xf8\xdd\x77\xdf\xbd\xb5\xaf\xaf\x6f\x67\ \x34\x1a\x5d\xcf\xf9\x75\x7e\xbf\xbf\xd7\x71\x9c\x04\x14\x6f\xf2\ \x69\x34\x1a\x05\x43\x08\x63\xa6\x5c\x2e\x9f\x2a\x16\x8b\xe3\xd3\ \xd3\xd3\xfb\xbf\xfd\xed\x6f\x9f\x3c\x70\xe0\x40\x0d\xa1\x34\x8c\ \x40\x7e\x1b\x04\xe0\x6c\xda\xb4\x29\x74\xef\xbd\xf7\xf6\xbe\xf5\ \xad\x6f\xbd\x07\x2d\xbf\x3d\x16\x8b\xdd\x1c\x0e\x87\xfb\x60\x5a\ \xf0\x2a\xd7\x75\x2d\xc1\xb0\x3c\xcf\xb3\x0f\xf9\x7c\x3e\x4b\xc1\ \x60\x50\xdc\x67\xcf\x57\x2a\x15\x15\x0a\x85\x49\xac\xe1\xd9\xa9\ \xa9\xa9\x6f\x3d\xca\xe7\x5b\xdf\xfa\x56\xde\x58\xca\xaf\x52\x18\ \xce\xaf\x4a\xdb\xd7\x5f\x7f\x7d\xf4\x13\x9f\xf8\xc4\xae\x6d\xdb\ \xb6\x7d\x34\x9d\x4e\xdf\x0d\xd3\x29\xc3\x08\x1a\x15\x1a\x55\xa9\ \x54\x52\x15\xa6\x6a\xb5\x9a\xdc\x7a\xbd\x25\x00\x08\xa1\x40\xad\ \x95\xc0\xbc\x15\x42\x38\x1a\x55\x2a\x95\xb2\x14\xe5\xb8\xce\xfd\ \x8b\x8b\x8b\xf3\x33\x33\x33\xff\x7b\x6c\x6c\xec\xcf\x3e\xf7\xb9\ \xcf\x8d\x4f\x4e\x4e\xba\x46\x10\xbf\x6e\x01\x38\x1b\x37\x6e\x8c\ \x7e\xfa\xd3\x9f\xbe\x79\xc7\x8e\x1d\x7f\x94\xc9\x64\xde\xe2\xe7\ \x03\xd3\xc6\xaf\x55\x2c\x14\x54\xe1\xd8\x50\x15\x2a\x23\x04\xc8\ \x0a\xa2\x8e\x20\x1a\x58\x82\xe1\xde\xe7\x38\xf2\x07\x02\x0a\x05\ \x43\x0a\x86\x42\x0a\x84\x43\xf2\x9b\x63\xc6\x68\x3c\xae\x9e\xbe\ \x3e\xf5\x41\x21\xae\x2d\x2d\x2d\xd5\x2f\x5d\xba\xf4\xcd\x23\x47\ \x8e\x7c\x96\xbf\x7b\x22\x9f\xcf\xbb\xbf\x16\x01\xa0\x9d\xe0\x87\ \x3f\xfc\xe1\x91\xf7\xbf\xff\xfd\xff\x7e\x68\x68\xe8\x03\x98\x70\ \x10\x4d\x5b\xc6\x4b\x30\x6e\x28\xbb\xbc\xac\x85\xb9\x79\xcd\xce\ \xcd\x6a\x6e\x76\x56\x4b\x8b\x4b\xca\xe6\xb2\xd6\x1a\x3a\x02\xf0\ \x49\x0a\xfa\xfc\x8a\x84\x82\x4a\x18\xcd\x27\x12\xea\x4a\xa7\xd5\ \x95\xe9\x56\x2a\xd3\xa5\x68\x2a\xad\x50\x22\xae\x70\x2c\xa6\x6e\ \x84\x30\xbc\x72\xa5\x62\x1c\xcf\xce\xce\x96\xcf\x9c\x39\xf3\xc5\ \x6f\x7c\xe3\x1b\x9f\xfb\xfa\xd7\xbf\xbe\x2c\xc9\x7b\xbd\x04\xe0\ \x8c\x8e\x8e\xc6\xbe\xf4\xa5\x2f\xbd\x63\xcf\x9e\x3d\x7f\x8a\x89\ \x0e\x5d\xd6\x78\x3e\xaf\x1c\x4c\x4f\x4f\x4d\xe9\xfc\xb9\xf3\x3a\ \x73\xf6\x8c\x26\x26\x26\x34\x03\xf3\xf8\x72\x87\x71\x6b\xfa\xc2\ \x3d\x1c\xa3\x7d\x49\x01\xc7\xa7\x00\x18\x10\x0a\xf8\x15\x45\xcb\ \x89\x48\x54\x19\xcc\xbf\xaf\xa7\x5b\x83\x83\x83\xea\x5f\xb1\x42\ \xe9\x81\x01\x45\x33\x19\x85\xcd\x79\xce\xad\x5a\xb5\x4a\xc2\x72\ \xce\x9d\x3b\xf7\xea\xc1\x83\x07\xff\xf5\x27\x3f\xf9\xc9\xe7\x5d\ \x3e\xaf\xb5\x00\x7c\xb7\xdc\x72\x4b\xf7\x97\xbf\xfc\xe5\xff\x40\ \x48\xfb\xb7\x66\xed\x98\xa0\x0a\x50\x76\x71\x51\x13\x17\x2e\xe8\ \xc4\xf1\x13\x1a\x3b\x7e\x4c\x68\xc7\x32\x5e\x2e\x96\xd4\xdb\xdb\ \xa3\x95\x2b\x86\xd5\xc7\xd8\xdd\xd5\xa5\x58\x24\xa2\x30\xbe\xde\ \x6c\x78\x06\x0f\xb8\xa7\xa0\x02\x02\x5c\x5a\x58\xd0\xfc\xf4\x0c\ \x34\x8d\x60\x9a\x8a\xe0\x06\x29\x5c\xa0\xbf\xa7\x47\x2b\x56\x0e\ \x6b\xc5\xea\xd5\xca\x8c\x8c\x2a\xda\xdb\xab\x38\xc2\x19\xe5\x7b\ \x5f\x7f\xbf\xc0\x86\x2a\xd8\xf0\x1f\x1f\x7c\xf0\xc1\x2f\xe3\x22\ \x95\xd7\x4a\x00\xfe\xb7\xbf\xfd\xed\x2b\x3e\xff\xf9\xcf\xff\x05\ \x5a\xb9\x1b\x60\xb2\x8c\xe7\xd0\xec\xe4\xc5\x8b\x3a\xfa\xca\x2b\ \x3a\xf0\xd2\x4b\x3a\x7e\xf2\xa4\x66\xa6\xa6\xf1\xd9\x5e\x6d\xdb\ \xba\x55\x9b\x37\x6d\x52\x22\x1c\x91\xaf\xe9\xc9\xef\xb5\xc8\x31\ \x04\xf3\x62\x84\xac\x45\x34\x0c\x71\xec\x72\x5f\xb5\x5a\xb3\x73\ \x9e\x3e\x76\x4c\x0b\x08\xd1\x80\x63\x12\xb3\xef\x87\xf1\x95\x30\ \xbd\x62\xfd\x7a\xa5\x56\x8d\x2a\xc2\xf7\x01\x5c\x62\xf5\x75\xd7\ \x59\xa0\x45\x08\x5f\xf9\xd4\xa7\x3e\xf5\xe0\xc9\x93\x27\x8b\x3f\ \x2f\x40\xfa\x7f\x5e\xe6\x3f\xf0\x81\x0f\xac\xf9\xcc\x67\x3e\xf3\ \x48\x7f\x7f\xff\x9d\x26\x44\xe5\xdb\x1a\x3b\x31\x36\xa6\x1f\xfe\ \xf0\x87\x7a\xe2\x07\x3f\xd0\xcb\x2f\xbf\xac\x01\x16\xf5\xce\x77\ \xdc\xa3\xbb\x6e\xbf\x5d\xd7\xa1\xf5\x0c\xbe\x9d\xc4\x54\xd3\x6a\ \x51\xaa\x43\x9c\x4b\x4a\x4a\x74\x88\x73\x71\xc6\x18\x6e\x11\xe7\ \x5a\x6f\x32\xa5\x75\x1b\xd6\x69\x04\x06\x6b\x08\xb9\xb0\xb0\xa8\ \x12\x02\x2f\xf2\x37\x6b\x4b\x4b\xf2\x55\xaa\x0a\x20\x98\x4a\xdd\ \x55\xae\x84\x95\x81\x0f\x03\x03\x03\xbb\x6e\xb8\xe1\x86\xad\x58\ \xc4\x63\xe7\xcf\x9f\xaf\xfe\xaa\x04\xe0\xbf\xf3\xce\x3b\x57\x7e\ \xf6\xb3\x9f\xfd\x5f\xc4\xf5\x5b\x0d\x8a\x1b\xb3\x9f\xc3\x4c\x5f\ \xda\x7f\x40\x8f\x3d\xbe\x57\xcf\x3e\xfb\xac\x5c\x7c\xfb\xbd\xbf\ \xf7\x7b\xba\xe3\x8d\x6f\xd4\x20\xc0\x95\xc2\xa7\xd3\x4e\x87\xe9\ \x0e\xb3\x0e\x0c\xc2\xa4\xa4\xa8\x31\xf1\x26\x24\x99\x11\xe2\x9c\ \x19\xa1\x98\xbd\xc6\x79\xac\x22\x01\x26\x5c\xb7\x6e\xbd\xba\x01\ \xc4\xfc\xf4\x94\xaa\x68\xba\x9c\xcb\xab\xba\xbc\x24\x87\xb5\x84\ \x88\x1e\x0d\x9f\xa3\x3c\xc7\x19\x5c\x05\x21\x6c\x02\xa3\x36\xee\ \xdb\xb7\xef\xbb\xe0\x52\xfd\x97\x15\x80\x8f\x30\xd7\xff\xd0\x43\ \x0f\x7d\x85\x89\xef\x00\xc4\xac\xd9\x4f\x5d\xba\xa4\xe7\x9f\x7f\ \x5e\xff\xf7\xb1\x47\x75\xe8\xe0\x41\xed\xda\xb1\x43\xff\xfc\xde\ \x7b\xb5\xb2\xa7\x57\xe9\x0e\xe3\x57\x68\x38\x0a\x85\x61\x0c\xaf\ \x57\x00\xc6\x02\x8c\xfe\xa6\x20\x46\xaf\x75\xec\x33\xc7\xf6\xba\ \x21\x29\xc8\x18\x16\xe4\xf1\x9c\x5b\x07\x3b\x12\x1a\xc1\x22\xaa\ \x33\x73\xaa\xb1\x86\x5a\x89\xd0\x4a\x44\xb1\x42\xf0\x33\x23\x96\ \x96\x03\x8c\xbb\x00\x4a\x42\xe6\x26\xb2\xd0\x81\xef\x7f\xff\xfb\ \x8f\xe3\x5a\xee\x3f\x56\x00\x0e\x79\x7b\xea\xe1\x87\x1f\xfe\xcf\ \x6b\xd7\xae\xbd\x8f\x58\x6e\x32\x33\x4d\xc3\xfc\x8f\x9f\x7b\x4e\ \x8f\xed\xdd\xab\xb3\xa7\x4f\xeb\xdd\xef\x7c\xa7\x6e\xdb\xbd\x47\ \x5d\x80\x5a\x86\x85\x74\x18\x8f\x59\xa6\x61\xb6\xcd\xa4\x45\x7c\ \x33\x1a\xbf\x6f\x42\x1c\x37\x6d\x24\x68\x8d\x6a\x9f\x77\xec\xbd\ \x8c\x1d\xe1\x58\x30\x6c\x32\x59\xdd\x5a\xcf\xf0\x9a\x0d\x6a\x10\ \x4e\xdd\x42\x8e\x30\x5a\x53\x3d\x57\x40\x08\x65\x2c\x21\x88\xa4\ \x23\x2a\xd6\x6a\xd6\x1d\x58\xfb\x2e\x92\xb3\x65\x84\xb0\x5f\xcc\ \xfe\x0b\x0b\x80\xb8\x1e\xf9\xc2\x17\xbe\x70\xef\x6d\xb7\xdd\xf6\ \x5f\x00\x3c\x1f\xcc\x5b\xb3\x7f\xe1\xf9\x17\xb4\xf7\xf1\xc7\x75\ \x11\xc4\xbf\xef\xf7\x7f\x5f\x1b\x09\x47\x5d\xf8\x62\x06\xcd\xe3\ \xd7\x76\x91\x21\x18\x68\x69\xb5\xcd\x58\x9b\xa9\xa6\x65\x9a\xb1\ \x7d\xac\xf6\xb1\xda\xc7\xba\xea\xd8\x8e\xac\xc3\x53\x20\x0d\x40\ \x3a\x9e\x42\x45\xc9\x29\xd7\x35\xb4\xf6\x3a\x35\x96\xc1\x02\x37\ \x27\xa7\xee\x22\x84\xa2\xfc\x60\x42\x08\xb0\x6d\x1a\x21\x10\x0d\ \x07\x08\x95\xe4\x0b\xbf\x43\x8e\xf2\x14\x2e\x3a\x21\x66\xfc\x45\ \x04\xe0\xa7\x80\xd9\xf4\x91\x8f\x7c\xe4\xaf\x40\xe0\xa4\xc9\xe8\ \x96\x09\x73\x07\x0f\x1c\x40\xf3\x8f\xeb\x3c\x21\xce\x30\xbf\x66\ \x60\x00\xcd\xfb\xd4\xed\xf7\x29\xe9\x39\xd6\x7f\x03\x2d\x2d\x42\ \xad\x58\xaf\x0e\xa3\x57\x33\x79\x95\x15\xa8\x6d\x05\x96\x38\xee\ \x8c\x1c\x28\x18\xa7\x2e\xe8\x8a\x28\x56\x73\xe5\xe5\x4c\xf4\x80\ \x88\x40\xfd\x6b\x56\x03\x86\x17\xb9\xa7\x2a\xaf\x84\x80\x8a\x65\ \xf9\x39\x1f\x8a\xc7\xd4\x20\xcc\xba\x92\x86\x56\xac\x08\x90\xa7\ \xdc\x76\xe2\xc4\x89\x47\x00\xc6\xf2\xcf\x2d\x00\x24\xd7\xf5\xc5\ \x2f\x7e\xf1\xb3\x84\xbb\x5b\x08\x2f\x36\xc1\x39\x41\x48\x7a\xfc\ \x89\x27\x34\x06\xd2\xbf\xfb\x77\xef\xd1\xda\xa1\x15\xea\x86\xf9\ \x54\x44\xea\x92\x8f\xe4\x25\x2e\x11\xbe\x3a\xcc\x59\x26\x1a\x10\ \x82\x40\xcb\x57\x6a\xfe\xaa\x31\x68\xb4\xe6\xba\xc4\xf7\x11\xad\ \xba\x79\x8f\xfa\xd6\xae\x55\x1f\xbe\xde\x47\xa8\xeb\xdf\xb8\x56\ \xf1\x35\xbd\x0a\xf7\xf4\x6b\xd5\x75\x5b\xd4\xbf\xe1\x06\x0d\x6e\ \xde\xac\x9e\xd1\x51\x2d\x9c\x1a\x57\xdf\x48\x9f\x16\x16\x27\x14\ \xab\x53\x64\x95\x5d\x35\x89\x4e\x01\x39\x0a\xa6\x92\xaa\x01\x9e\ \x41\x04\xd1\xc3\x07\x2b\xf0\xbe\xf7\xbd\xef\x3d\x2d\xa9\x71\x8d\ \xa5\xeb\xda\x4f\xf0\x81\x07\x1e\x78\x13\x7e\xff\x1e\xc2\x9d\xcd\ \xe3\xa7\x88\xc9\xa0\xaa\x8e\x1e\x79\x59\xb7\xec\xd9\xad\x75\xc3\ \xc3\x4a\x4b\x84\x38\xc1\x78\x40\x41\x98\x1b\x20\x16\xa7\x07\xfb\ \x5b\x0c\x37\x5a\xc4\xf1\x15\x82\xb8\x96\x12\x84\xcc\x55\x37\xed\ \x91\x83\xfb\xa8\x69\xdc\xe4\xea\xcc\xc4\xf1\xd7\x55\x27\x19\x8a\ \x45\xc3\xdc\x1f\x30\x67\x3a\xff\xc9\x2b\x57\x14\x4b\x74\x6b\x64\ \xeb\xf5\x44\x08\xbf\xe2\xc2\x32\x4c\x74\xc0\x3a\x6b\x27\x4e\xca\ \x9b\x5f\xd0\x0c\x19\x29\x25\xb7\xe0\xe5\x81\x0f\x7e\xf0\x83\x9b\ \xcd\x04\x3f\x4b\x00\x0e\xda\xcf\x50\xca\xfe\x21\x26\x18\xb0\xf1\ \x9e\xd4\x76\xec\xe8\x98\x8e\x1c\x3a\xa4\x34\xfe\x75\xeb\xce\x5d\ \x4a\x35\x05\xd8\x11\xaf\xc3\x3e\x28\x24\xc7\x6d\x58\x06\x52\x83\ \x43\x56\x83\xfc\x55\xc3\x34\x74\x25\xf3\x8d\xd6\xb1\x71\x11\x09\ \x0d\xaf\xd3\x10\x89\x12\xcc\x9b\x73\x96\x3c\xa8\xf3\x8c\xb8\xbf\ \xd1\x2c\x2b\x90\xea\x95\xcf\x0a\x51\x10\xff\xb3\xd7\x20\xc6\xfa\ \x72\x4e\xab\x6f\xbc\x49\xc9\xe1\x5e\x25\x03\xb8\x20\xcf\x08\x57\ \x75\x4f\x9f\x55\x1d\x41\xd4\xb3\x39\xcd\xce\xcc\xa8\xbb\xbb\x3b\ \x7a\xeb\xad\xb7\xfe\x91\xa4\xf0\xcf\x12\x40\xe0\x43\x1f\xfa\xd0\ \x1b\x30\x99\xdb\x0d\xf3\xb5\x72\x19\xb0\x9b\xd0\x91\xc3\x87\x34\ \x4b\x4e\xff\x4f\xde\x7c\x87\x92\x86\x51\x28\x0e\x85\x78\x9a\xe5\ \x4b\x56\xe3\xae\x65\x32\x92\x4c\x6a\x68\xcb\x66\x05\x11\x56\xc7\ \x0a\x3a\xcc\x73\xc0\xf9\x80\x86\x77\x6e\x53\x7a\x68\xa8\xe3\x16\ \x1d\x21\x5d\x1e\xbd\xf6\x33\x35\xaf\xa6\x68\xba\x5b\xf8\xc8\x35\ \x56\x64\x05\x56\xab\x2a\x46\x6a\xdd\x7b\xfd\x76\xd2\xeb\x16\x77\ \x81\x5a\x5d\x4d\xc0\xba\x81\x00\x3c\xb2\xc8\x02\x0a\x34\x25\xf8\ \xca\x95\x2b\xdf\x73\xdf\x7d\xf7\x6d\x90\xe4\xfc\x54\x01\x50\x8b\ \x27\xdf\xf6\xb6\xb7\xdd\x4f\x1d\xef\x33\x0f\xe5\xc9\xc0\xc6\x4f\ \x9e\xd0\x19\xd2\xdb\x35\xc3\x2b\xb5\xb2\x3b\xa3\x64\x87\x79\x16\ \xe4\x73\x01\xa6\x96\x6a\x34\x73\xfc\x24\x7e\x58\xb1\x4c\x53\xda\ \xe2\xab\xa4\xc0\x7d\xbd\x57\xb9\x43\x72\x20\xad\xe4\x86\x21\x85\ \x13\x21\xfb\xbd\x01\x68\x4d\x1d\x79\x45\x2e\xc2\xbe\xc6\x6d\x9a\ \x8c\x12\xf7\xa6\x25\xe6\x6b\xaa\x7e\xf9\x9a\xd7\x06\x53\x5f\x90\ \x68\x43\xe1\xd4\xbd\x79\xbb\xc2\x71\x8a\x29\x2c\x2f\x64\xc2\x2d\ \xb9\x81\x26\xa7\xe4\x52\x8c\x09\x25\x2e\x92\x3d\xd2\xa3\x08\xdd\ \x7e\xfb\xed\x1f\x35\x6c\xfe\x14\x01\xd8\xa4\x67\xd5\xf0\xf0\xf0\ \x9b\x6d\xd3\x02\x9a\x45\x92\xe3\xc7\x8f\x2b\x37\x33\xab\x3d\xdb\ \xb7\x2b\xe1\xb5\x98\x0f\x7b\x6d\x34\xae\xd4\x44\x1b\x0b\x33\x6e\ \xa8\x92\x5d\xd6\xa5\x23\x47\x54\x5e\x5a\x6a\x23\xbb\xd4\x43\xde\ \xde\x0b\x36\x38\x8e\x0f\xd7\x58\xad\xae\xf5\x83\x72\x9d\x96\x36\ \x2b\xa4\xd2\xe7\x5f\x78\x41\x59\xf2\x8a\x2b\x35\xeb\x59\x17\x60\ \x6c\x0b\xc3\x4f\x7c\x0f\xf6\xad\x92\x17\xc8\x09\x6e\x38\x57\x63\ \xee\x9a\x82\x31\x4f\x91\x95\x09\xa5\x46\x37\x2a\x3e\x30\xc2\xf7\ \xa0\x65\xc6\x2f\x59\xc5\x80\x8e\x6a\x5e\xbc\x64\xb1\xa0\x8a\x40\ \x5c\xce\x01\xea\xef\x06\x13\xd3\x3f\x4d\x00\xa1\xfb\xef\xbf\xff\ \x1e\xc2\x5e\xcc\xdc\x5c\x06\xfd\x2f\x9e\x3b\xa7\x4b\x50\x17\x68\ \xba\xb2\xaf\xcf\x32\x1f\x31\xc9\x89\xf5\x41\x34\x58\xc2\x02\xaa\ \x2c\xca\x6f\x17\x6b\x35\x39\x05\x5e\x2c\x9d\xbf\x60\x90\xdd\x32\ \x11\x27\x3d\x1d\xdd\xbd\x4b\xc9\x15\x5d\x2a\xe3\xef\x31\xc2\xd4\ \xf2\xc4\xa4\x2e\xec\xdb\xaf\x6a\xbe\xd0\x36\xfd\x46\x27\x62\x40\ \xae\x25\xbe\x5b\x6c\xa9\x15\x73\xea\x1e\xdd\x2c\x67\x78\xbd\x6a\ \xf1\xaa\xea\xe1\x05\x79\xf1\xac\xba\x6e\x5a\xa3\xfe\x37\xbf\x13\ \xdc\x59\x05\x58\xc2\x38\x40\xe9\x48\x90\xcd\x2a\xad\xe6\x1d\x98\ \xaf\x9d\x3f\x2f\x1f\xf3\x93\xbe\x1b\x2b\xe8\xff\xd8\xc7\x3e\xf6\ \x96\x2b\xf9\x0e\x74\x0e\x4c\xbc\x5f\xb7\x6e\xdd\x3f\xb5\xfd\x3a\ \xc8\x80\xdf\xc4\xd9\x73\xca\xcf\xcd\x69\x23\x05\x89\x61\x3e\x6a\ \xd2\x52\x99\x2c\xcd\x11\xff\xc1\xb0\xf1\x39\x4f\x35\xbf\x83\x96\ \x1b\x62\xdd\x36\x7e\x2f\xf2\x5c\x79\x69\x59\x7d\xeb\xd6\xca\x47\ \x8d\x2f\x01\x58\x2a\x29\xda\xb7\x5a\x0b\x2f\x3d\xa5\xec\x89\x39\ \xee\xbd\x3a\x3a\x74\xa2\x87\xeb\x95\xe4\x73\x4c\x1e\x11\x56\x80\ \x46\x49\x61\xfa\xac\x62\x3d\x03\xea\xb9\xee\x06\x35\x86\xd7\xa9\ \x5e\x29\xda\x7b\xd3\x3c\xeb\x0f\x84\x54\x2f\xcd\x6b\xf9\xcc\x01\ \xf9\x38\xbe\xaa\xbc\x75\x11\x22\x19\x63\x63\x72\x52\x3e\x5c\xb3\ \x1a\x29\x8b\x2e\xb4\x46\x46\x46\xee\x91\xf4\xb7\x50\xf5\x4a\x01\ \xf8\xe8\xeb\xf5\x51\xec\x6c\x43\x00\xb6\x46\x5f\x9a\x9f\xd7\x0c\ \xc0\xe7\x15\x8a\x1a\x1d\x18\x84\x79\x4f\xe0\x7d\x0b\xf4\xd4\x12\ \x00\xa7\x14\x2a\x4b\x95\x4c\x42\x3d\x23\x61\x92\x91\x90\xb8\x6c\ \x85\x20\xa8\x00\x08\x25\xfa\xfb\x59\x5c\x55\x0d\xe2\x7d\x94\x92\ \x36\x68\xd2\x65\xaa\x44\x0b\x1d\xed\x4c\x11\x8b\x69\x9b\xbd\xcb\ \xbc\xf4\x06\xca\x05\x25\x82\x43\x6a\x54\x29\x74\x66\x2f\xa8\xd0\ \x33\xc8\x3c\x2b\x69\x93\x05\x99\x2b\x6d\x05\x40\x6f\x0d\x21\x56\ \x55\xbc\xf4\x8c\xca\xf3\x17\x98\x2c\x70\x75\xaa\x67\xc0\xb5\x84\ \x30\x97\xb3\xaa\xd3\x91\x0a\x66\xba\x2c\x18\x92\x22\xdf\x2a\x29\ \x7e\x8d\x00\xde\xf7\xbe\xf7\xed\xa4\xe7\x96\x32\x75\x7e\x1d\xbf\ \x5e\x64\xf1\xb9\xf9\x39\x85\x78\xa8\x2f\x95\xb4\xa6\x1f\xb8\x42\ \xfb\x12\xa3\x44\x4e\x8e\x65\xf4\xd3\xcc\x1c\x1a\x54\xaa\xe6\x80\ \xcc\x2d\x21\x48\x56\x10\x2d\xcd\x3a\x15\x85\x32\xd7\x59\xbb\x4b\ \x76\xf7\x90\xae\x26\x61\xfc\xef\x05\xb5\x6c\x05\xd0\x10\x12\xc0\ \xd7\xc1\x1f\xa7\x2e\xa9\xc6\x5c\x01\x42\x20\x45\xce\xd8\x8f\xd1\ \xf4\x0d\x4a\xaf\x24\xc4\xca\x69\x27\x57\x2e\x65\xf2\x69\x15\x27\ \x9e\x43\x18\x01\x6b\x8d\x57\x49\x80\x63\x38\x96\x43\x16\x5b\xa3\ \x3f\x11\xdb\xb8\xd1\xe2\x55\x32\x99\x1c\x7d\xef\x7b\xdf\xbb\x96\ \x56\xda\x92\xb9\xab\xe3\x0b\xc1\xcd\x9b\x37\xef\x68\x58\xe0\xf1\ \x6c\x03\x73\x79\x76\x4e\x55\xe2\x68\x8c\xef\x69\x90\x36\xc8\x1f\ \xf5\x75\x90\xda\x35\xe4\x5a\x72\x2b\x1c\x67\xb3\x30\x38\x48\xd2\ \xe2\x5a\xc1\xe2\xfb\x68\xc7\xf8\xb1\xa1\xba\xdc\x26\x85\x4c\x77\ \x9f\xd5\x78\xc7\xd4\xbd\xcb\x73\xb9\x1d\x74\x87\x60\x3c\x88\x30\ \x09\x7d\xcc\x63\xae\x63\x05\x7e\xf9\xf2\x21\x95\x4f\x1d\xd0\xc2\ \xab\x87\x39\xc7\xf9\xa6\xc1\x9e\x25\x15\xce\x3f\xa6\xc2\x1c\xbd\ \x01\x04\x5f\xcf\x5f\x5b\xf9\xda\x39\xc1\x19\x17\x6b\x0e\x4a\x82\ \x3f\xdb\x7e\xa7\x48\xba\xd1\x28\xfd\x4a\x0b\x08\x63\x1a\xd7\x99\ \xf0\x02\x59\xd4\x2c\x90\x50\x08\x41\x24\xda\xa5\x6c\x80\xf3\x72\ \x98\x54\x90\x73\xd9\xd3\x6c\xde\xdf\x58\x32\xa5\xe9\x9c\xa2\x83\ \x6b\x94\x3d\xf4\x8c\x2a\x97\x6a\x1d\x3c\xb0\xc5\x4c\x78\x75\x4c\ \x99\x70\x54\x24\x16\x5a\x9a\x9c\xe0\xba\x07\xe3\xcd\xcb\xe9\xb0\ \x5b\xad\xd1\xe8\x98\x57\xe0\x62\x45\xd1\xeb\xd7\x60\xe6\x61\x2d\ \x1e\x3b\xa2\xca\x82\x1f\x86\x5b\xf7\xf8\xfc\x35\x85\xce\x9d\x56\ \xa3\x56\x51\xd7\xaa\xf5\x98\xfe\xb3\xaa\xcc\x8f\xa9\xb4\x80\x5b\ \x16\xa5\x7a\xe1\xda\xfe\x07\xcc\xd8\xf4\x98\x57\x4e\x56\x79\x00\ \x9d\x3d\x0d\x18\xae\x6f\x0b\xa0\x61\x05\x40\xba\x18\xe5\xe4\x68\ \x5b\x00\x36\x01\x2a\xe7\x73\xf2\xd7\xea\xb6\x3b\x13\x70\xeb\x98\ \x62\xf8\x1f\x2c\xa8\x3c\xa8\x56\xc0\xdf\x27\x4e\xab\x67\xe3\x0e\ \xe5\x87\x46\xc9\xc2\x9e\x57\x79\xc1\x33\x8b\x87\x19\x68\x68\xc0\ \x40\x33\xa1\x2a\x8e\x35\xc0\x2c\x9d\xe2\x46\xa5\x53\x00\x59\x37\ \xc1\xda\x96\x54\xca\xe4\x94\x19\xb8\x9d\x67\x69\xa2\x5e\xbc\xa0\ \xfc\xc5\xc6\x55\x40\x19\x8c\x73\x5f\xed\xbb\xf2\x6e\xbd\x59\x95\ \xc9\xa7\x54\x5e\xac\xa9\x59\x8c\xaa\x3c\x57\x27\xa7\xa8\xf2\xb7\ \xac\x17\x5d\xbd\x4c\x5c\x5a\x46\x08\xf4\x26\xa9\x8c\xac\x52\x00\ \xc3\x75\x6d\xe5\xd7\x6d\x82\xcd\xc9\x08\xfe\xdf\xdd\xa9\xc4\xea\ \xa0\xa6\xcb\x03\x41\xd3\x91\x09\x88\x73\x39\x72\x11\x34\x68\x7c\ \xfc\x27\xd2\x69\x66\xc4\x4c\x9b\xf4\xec\x12\xe4\xe7\x45\x0d\x6c\ \xd8\xae\xd2\xf8\x51\x98\x58\xb4\x02\x18\xde\xb3\x4b\x4e\xb7\x2b\ \x07\x21\x86\x58\x40\x64\xc5\x88\x4a\xaf\xce\x6a\x74\xcf\x1b\x25\ \xaf\x85\x01\x67\x9e\x79\x56\x7e\xea\xfd\x08\x7d\xbe\xee\x61\x22\ \x45\x31\xcf\xf5\x9b\x55\xdf\x1c\x63\x0e\x33\x7f\x15\x4d\x2f\x68\ \xe1\xf4\xb8\x8a\x67\xa6\x34\xe1\xfe\x9d\x32\x83\x39\x84\x44\xb4\ \x28\x86\x55\x99\xcb\x2b\x10\xa9\xcb\x09\xb3\xf6\x25\x3f\x56\x72\ \x79\x6d\xd6\x0d\x7d\x75\x97\x90\x5d\xc4\x00\xfa\xad\x1b\xc0\x6b\ \x7f\xc7\xfa\x2f\x63\x00\xbe\x11\x45\x00\xd6\x02\xdc\x3a\x92\x05\ \x40\xa8\xeb\x61\xcc\x91\x8b\xf9\x05\x42\x36\x5e\x5f\x4d\xae\x6b\ \x47\xaf\x8e\x58\x08\x87\x15\x6a\xf4\x10\x5a\x0e\x0f\x0e\x81\xd8\ \xd6\xcf\x6d\xb8\x13\x0c\xd4\x8b\x59\xeb\x42\x19\xac\x24\x3c\x14\ \x15\x27\x3b\x58\x80\xe6\x5c\xc5\x46\x42\xea\xd9\x76\x8b\xfc\xa1\ \x20\xf3\x56\xed\x73\x16\x6b\xcc\x75\x4c\x37\xde\xdf\xa7\x91\x9b\ \x6e\x26\x5b\xcd\xc0\x64\x5e\xf9\x19\xae\xe5\xfd\x58\x4e\x90\x28\ \xb0\x48\x32\x86\x9b\x76\xb9\x8a\x64\x58\xcb\x95\x3a\x6a\x97\xe6\ \x5e\x0d\x1e\x02\x81\x4e\xc8\x8f\x9b\xe1\x2a\x01\x70\x32\x72\xb9\ \x16\x77\x5b\x80\x17\x96\x14\x89\xf9\x31\xdd\x28\x8b\xd4\x15\x49\ \xcb\xb5\x82\xf0\x4c\x49\x5a\x5a\xb6\xb1\x21\xdc\x3d\x80\x46\xdb\ \x80\xe7\x1a\xe1\x34\x31\xfb\x49\xc1\x15\x89\xcb\x0a\x65\x76\xdd\ \x22\x5f\x2c\xcb\x12\x4a\x24\x31\x45\x25\x56\x39\xca\xec\xbe\x55\ \x99\xd5\x6b\xdb\x00\x57\x62\xc1\xb8\xa3\x4d\xa6\xda\x64\xc1\xd2\ \x53\xff\xa6\x75\xd6\x2a\x4a\x53\x92\x9b\x8d\x20\xd8\xba\xaa\x26\ \xde\x57\x1d\x18\xa4\x14\xee\x62\xed\xc1\xab\x2c\x14\x62\xe4\x79\ \x9a\xa8\x1d\x01\xc4\x7e\x12\x04\x1d\x4c\xc3\xf1\x0c\x83\xf6\x4a\ \xd3\x5e\x08\x3a\x52\x18\xb2\xe8\x0f\x98\xd9\x30\xe5\x75\x26\xbe\ \x3a\xe6\x34\xeb\x46\xca\x06\xa1\xeb\x36\x7d\xc5\x96\xda\xd6\x01\ \x92\x97\x7d\xf2\xa6\xcf\xab\xb1\x9a\x50\x18\x0a\xab\xff\x86\xdd\ \xca\x12\x59\x34\x77\xc6\x3c\x49\x65\x78\x17\xf8\xb1\x0d\x2d\x8a\ \x79\xd0\x7e\x39\xaf\x06\x02\x38\xfd\xa3\xa7\x2c\xd3\xe1\x78\x5c\ \x83\x37\x5c\x8f\x55\x31\xab\x93\xc5\x22\x82\x6a\xe4\x04\x78\x86\ \x55\x26\x5a\x79\xf8\x39\x38\x06\xcc\x98\x05\x7b\xf8\x7a\x93\xe7\ \x9d\x2b\x85\x60\xad\x08\x2b\xef\x84\xe7\x4e\xd2\xd8\x11\x00\x42\ \xe7\xc3\x85\x76\x3b\xcc\x4f\xa3\x11\x62\x45\x7e\x18\xf0\xe1\x54\ \x75\xb7\x80\xb6\x42\x52\xbd\x3d\xe7\x55\x42\x68\xb6\x42\x98\x5a\ \x3e\xe7\x96\x0b\xb8\x90\x09\x93\x56\x8b\x00\x1e\x52\x07\x89\x0b\ \x53\x17\x94\x1a\x59\x85\x80\x7c\xea\xdd\xb8\x55\x8d\x35\x68\x5c\ \x20\xbc\x31\x7b\xeb\xaf\x35\x35\x8c\xf6\x4b\x05\xc6\x20\xb1\xbf\ \x64\x05\x50\xcb\x17\x48\x84\x7a\x94\x59\x13\xa3\x29\x7b\x09\x2c\ \xc1\xdd\x96\x22\xcc\x5b\x47\x00\xb3\xed\x90\x07\xb9\x0e\x2e\xd4\ \xb4\x02\xa8\xe6\x6c\xc8\xb2\x82\x11\x14\x08\x87\x6d\xe9\xcd\x77\ \x53\x17\x94\x0c\xcf\x57\xba\x80\x0b\xff\x95\x8e\x00\x02\xc1\x80\ \xc2\xc1\x90\x15\x40\xb3\xcc\x12\x17\xa7\xd4\xe0\x38\x94\x34\x3c\ \xa3\xd5\x2b\xfc\x1f\xe2\x24\xa3\x9f\x3e\x7d\x2c\x69\x05\x51\x5b\ \x9c\x36\xa6\xd9\xbe\xee\xb6\xcc\xb9\xe8\xd3\xd2\xf1\x83\x68\xc6\ \x30\x55\x13\x92\xc4\x4d\x70\x2f\x88\x63\x90\xd8\x16\x39\x30\x4b\ \x31\x55\x2a\xa3\xd5\xcb\xee\x86\xe6\xfd\xa4\xc3\x21\x55\xaa\x13\ \xe4\x13\x45\x04\xd0\x24\x22\x04\x40\xff\x29\xee\xab\xb5\x75\xd0\ \xae\x03\x1c\xc1\x2c\x7e\xcf\xd8\xd6\x26\x6b\xf3\x29\x9c\x4c\x5e\ \x16\x00\xd6\x5e\x96\xe4\x5d\x69\x01\x55\x8a\x85\x2c\x17\xe4\xf0\ \x2f\x88\xb4\xa2\xd4\xf3\x05\x53\x86\x56\x1c\x55\x2f\x4d\x2a\x0a\ \x6a\xbb\x4b\x53\x0a\xa7\x43\xaa\x2e\xb9\x1d\xe5\x63\x15\x14\x48\ \x5d\x52\x33\x19\x55\xbc\xb7\x4f\x75\xb4\x5f\x9e\xba\x88\x00\x0c\ \x00\x36\x21\xd7\x2c\x02\x01\x38\x2a\x2d\x9e\x52\x61\xc3\x46\xac\ \x60\xd4\x6a\x85\xa7\xda\xeb\x68\xf9\x37\x44\xec\x9f\x46\x0e\x4d\ \x0b\x82\xa3\xb7\xdc\x6c\x05\x10\x8c\xfa\x15\x88\xcf\xca\xf5\x16\ \x50\x42\x59\x71\x94\x51\x9e\xe1\x38\x32\xaf\x6a\x10\x86\xea\x6a\ \x15\x44\x30\x6e\x4a\x82\x9a\x8d\x6d\x86\xe0\x06\x1e\x3c\x53\x84\ \x51\x94\x75\xde\x99\xa1\xec\x79\x06\xb7\x63\x01\x4d\x88\x28\xb3\ \x30\xe9\xb5\x93\x9d\x40\x84\xbc\x9d\xc2\x21\x84\x69\xca\x63\xc2\ \x19\xfa\x82\x17\x4f\x29\xb3\x69\xbb\xe2\x1b\x57\x28\x71\x5d\x58\ \xb1\x15\x94\xc6\x2b\xa5\xd4\xfa\xa8\xd2\x3b\x37\x72\x6d\x27\x9a\ \x0a\xa8\x34\x37\xad\xda\xec\x02\xe6\xd9\xd2\x1e\x02\x80\x18\xb1\ \x82\xf2\xa5\xa2\x96\x8e\x1e\xe0\xb8\x24\x54\x67\x1b\x9a\x6a\x6b\ \xbe\x69\xc8\xa5\x09\x33\x8f\xb5\x95\x1c\x2e\x5b\xf4\xc7\xa4\x03\ \x54\x7a\xa4\xb3\xd5\x29\x3a\x3f\xe4\x23\x7c\x0f\xc5\x68\x84\xa4\ \x27\x94\x1c\xad\xaa\x6b\x6d\x43\xd1\x6e\x62\xfb\x30\x58\x91\xa0\ \x44\x4e\x19\x16\x3a\xd6\x60\x5c\x22\x24\x7f\x3c\x81\xe2\xd2\xea\ \x58\x38\xca\x3e\xcb\xe0\x5e\x69\x01\x15\x5e\x37\x5f\x68\xa7\x8a\ \x56\x00\x71\x3a\x2d\x61\x80\xca\x71\x72\xaa\x2e\x37\x95\x3b\xfa\ \x8a\x86\x6e\xbc\x59\xdd\xeb\x37\xca\xb9\x7e\x37\xfe\x99\x67\x81\ \xb8\x45\x22\x69\xcd\x2b\xc4\xbd\x1e\x0c\x94\x2e\x9e\xc5\x05\x4c\ \x62\xd2\xb0\x21\xc8\x46\x08\x00\x94\x0f\x7e\x4b\x59\xfa\xea\xb8\ \x4a\x37\x6c\x53\x6a\x68\x58\xb0\x29\x62\x94\x05\x4e\xdb\xe2\x22\ \x6f\xaf\x13\x4a\xdd\x52\xc8\x0a\x8e\x05\x83\x17\x75\xc6\x59\xc5\ \x7a\xa9\x27\xd2\x31\xd6\xd3\x24\xaf\x99\x50\x62\x10\x54\xc7\xdf\ \xb3\xb1\xba\x92\x83\x8e\x55\x54\xac\xdf\xa3\x36\xc1\xcc\xc9\xf0\ \xf9\x87\xc9\x1b\xcb\x89\xcb\x47\x63\xc6\x6f\x92\x20\xe6\xe7\x63\ \x36\x5b\x9c\x66\x68\x5c\x89\x01\xb5\x31\x3e\x6e\xfb\x8f\xfa\x90\ \x5a\x82\xfa\x3f\xc2\xc3\x4c\x62\x4d\xac\x7c\x3e\xaf\xe9\xe7\x7f\ \x04\x43\x25\xf9\x9d\x0a\x85\xc9\x08\x4c\x0c\x21\x71\xee\x71\x6c\ \x1e\x4f\x3c\x9e\x21\xef\x9e\xc5\x8f\x6d\x28\x6d\xbd\xf4\xb4\x16\ \x00\xd5\x4d\xdd\x40\x9a\x3d\x57\x50\x69\xf2\x02\xf7\x57\xed\x33\ \x1e\xd4\x74\x49\x9d\x99\xb7\x78\xe1\x04\xe8\x5e\x36\xf7\xd9\x6e\ \xd1\xf9\x67\x9f\xd3\xf4\xb1\x1f\xab\xb4\x7c\x46\xd1\x01\x3f\x16\ \x66\xc2\xd5\x8c\x22\xe9\xb8\x42\xa9\xa8\x62\x03\x41\xf5\x6d\x75\ \xd4\xb3\xc9\x53\xcf\x96\x06\x02\x90\x4d\xd6\x1c\xd7\x47\x04\xf3\ \xb5\x36\x5c\xa0\x9c\x38\x1d\x67\xe1\x0a\x9d\x4c\xf7\xa5\x97\x5e\ \x3a\x72\x0d\x08\x3e\xf9\xe4\x93\x87\x79\x97\x56\x32\x37\x38\x94\ \x9d\x71\x04\x10\xc5\x0a\x8c\x09\x35\x25\xea\x7b\x29\x77\xf8\xa8\ \xe6\xc7\x0e\x61\xde\x79\x62\xef\x84\x8d\xd9\x96\xbc\x9a\x05\xb7\ \xfc\xe9\x63\xc4\xe6\x26\xd7\x3d\xcb\x7c\xc7\x05\x3a\x84\x50\xb8\ \x86\x20\xb0\x1e\x98\xb7\x66\xcf\x09\xc2\x24\xf5\xc1\xf4\x5e\xcd\ \xef\x7f\xc2\x6a\xd0\xab\x59\x90\x45\x08\x15\x18\x68\xd0\xf1\x09\ \x71\xef\x12\xe7\x2f\xe2\xe7\x30\x97\x48\x51\x7c\xf5\x70\x2d\x4e\ \xe1\x14\xa2\x90\xf1\x81\xfc\xed\x30\x58\x43\xf7\x35\xbf\x22\x4e\ \x00\x1c\x8b\xc9\x0b\x85\x08\xbb\xf4\x12\x4c\x94\x81\x30\xff\x69\ \xb6\x1b\x9d\xfc\x49\x10\xf4\xf8\x5c\x64\x33\xc3\xab\xd4\x04\xdb\ \x48\x15\x49\x66\x32\x4a\x50\xe2\xe6\xe9\xa8\xd8\x5c\xda\xe5\xe1\ \x0b\x35\xcd\x3d\xff\x14\xdd\x9d\x21\xc5\xfa\xfa\x55\x5d\x30\x66\ \x69\xea\xfd\x10\xe0\x35\xa7\x3a\x55\x57\x2d\x17\x31\xcc\xb6\xa3\ \x83\xc9\x0f\x60\x1e\x57\x41\x8a\x9c\x73\xad\xc9\xe3\x9b\x30\x58\ \x80\xa1\x79\x79\x95\x33\xb8\xd8\x51\xac\x62\x99\xe2\x86\x34\x35\ \xe0\xb4\xdc\x47\x02\xe9\x23\x58\x98\x41\xf5\x79\x70\x61\x49\xa1\ \xae\x1e\x1a\x17\x71\x14\x94\xa0\x59\x02\x40\xc3\xa4\x70\x51\xb1\ \x36\x61\x31\x6e\x1d\xed\x57\xc0\x8c\x0a\xd1\x05\x73\xf1\x27\x53\ \xaa\x74\xa5\x71\xdb\xf5\xca\xb6\x37\x66\xcd\xcf\xcf\x1f\x94\x94\ \xfd\xc9\x96\x58\x13\x9a\xc7\x0b\x9e\x05\x21\xad\x99\xf8\x31\x9d\ \xf4\x9a\x35\x0a\xa6\x52\xed\xa6\xa4\xd0\x9c\xa3\xfc\x49\x1a\x25\ \xfb\x9e\x46\x71\x86\x81\x32\x42\xb8\x00\xd3\x33\xaa\x2d\x2f\x81\ \x65\xa1\xab\xc2\x97\x07\xb5\xcd\x1f\x42\xe3\x6a\xa0\x41\x97\x89\ \x2e\xaa\x3a\xbf\x17\xac\xd8\x8b\xc6\x8f\x32\x4f\x56\x45\x84\x0b\ \xd6\xd8\x8c\xce\x41\x60\xe4\x06\x3c\x5f\x67\xfe\xf3\xcc\x3b\x4b\ \x68\x0e\xc2\x78\x44\x0e\xc2\xf6\x05\xad\x10\xf0\xeb\x2e\xe6\x8b\ \xf3\xbd\xdd\xaa\xc9\xe1\xf7\x65\x42\x78\x1d\xed\x93\x70\x05\x33\ \x19\xa5\xae\xdf\x2a\x5f\x3c\x66\x9b\x21\xa6\xd7\xc1\xde\x81\xc7\ \x84\x4a\xff\xa1\x9e\x60\xe9\x3b\xdf\xf9\xce\xf7\x30\x91\xaa\xc1\ \x02\x87\x50\x18\xe7\x0d\x4c\x64\x90\xb4\x36\x16\xb5\x21\x05\xb9\ \x80\xf2\xd2\xf2\xe1\x63\x5a\x3a\x31\x66\x72\x76\xa8\x26\x37\x3f\ \xa7\xe5\xb1\x7d\x2a\x4d\x2f\xb0\xc0\xa0\x01\x1c\x8b\x1d\x3c\x70\ \xd9\xfc\x1b\x90\xcf\xef\xa2\x4d\x63\xf6\x27\x08\xaf\x17\x44\xc5\ \xc5\xb1\xc9\x14\x49\x6d\x67\xc8\xeb\x0b\x71\xc1\x91\x15\x58\x85\ \x0c\xaf\x1b\x8c\x49\xf6\x0d\x12\x96\xbb\x15\x80\xe9\x96\x19\xc9\ \xb6\xcd\x85\xf6\x1d\x5f\x08\x0e\x18\x9b\x30\x8e\xe9\x8b\x42\xc8\ \x57\xc0\xfc\x3d\x08\xe4\x5f\x0e\xfa\xb4\xfa\xce\x3b\x55\x67\x1d\ \xed\x0d\x1d\xcb\xff\xf3\xab\x5f\x7d\x54\x92\x7b\x4d\x4f\x50\x2c\ \x85\xed\x25\x63\x48\xe8\x50\x3c\x1e\xbf\x85\x92\x51\x41\xd0\x33\ \x45\x27\x25\x4b\x77\x55\x24\x27\xcc\x62\x2b\xad\xdc\xb9\x3a\xfe\ \xba\x4f\x09\x5c\x21\x94\x4e\x09\x75\x63\xa2\x05\x15\xcf\x03\x82\ \xe5\x59\xe5\xa7\xd1\x98\x79\x3e\x81\x76\x22\x61\xae\xdb\x82\x04\ \x90\x42\x33\x69\xa8\x2f\x20\xc0\xc5\x76\x8b\xb9\x04\xb3\x2e\x89\ \x48\x85\x50\x9b\x27\xf5\xbe\x84\x15\xd4\x5a\xcf\xf8\x4d\x76\x88\ \x40\x8a\x97\x6b\x14\xdc\xa3\x6c\xdd\x11\x0d\xb5\xdc\xac\x0e\x55\ \xb8\x37\x8f\xd5\x2c\x04\x14\xc8\x13\x26\x11\x8c\x47\xdc\x0f\x6c\ \xda\xa0\x24\x2f\x6f\xe7\x0a\x79\xdb\x0d\x62\xd3\xc4\xe3\xf9\x62\ \x71\xca\x4a\xf2\x5a\x01\xd8\x93\xb3\x7b\xf7\xee\x7d\x84\xf6\xb8\ \xd9\xdc\xe8\x04\x89\x02\x49\x04\x50\xe4\xbd\xa0\x72\x79\x28\x67\ \xb5\x5a\x2b\x38\xca\x9d\x9e\xd7\x12\xe7\xfb\xf7\xec\x84\x11\x59\ \x8d\x37\x1d\x17\x01\xd5\x29\x54\xa6\x68\x5e\x56\x6c\x1c\x0f\x63\ \xce\x84\x22\x50\x1b\xad\x24\x73\x8a\x0f\x61\x5d\x32\x61\xcf\xb1\ \x59\x9c\xc7\xc2\xb2\x2f\x5f\xd2\xfc\xcb\x0d\x30\xc6\xa7\x64\x66\ \xb0\x53\x9e\xd8\x66\x4b\xad\x14\xc6\x5d\x7c\x8a\x90\x03\x78\x80\ \x26\x21\x02\xa1\x76\xf3\xf7\x10\x08\x2e\xa8\xb2\xd1\x08\xb8\x32\ \x8b\xf6\x97\x30\xff\x32\x18\x80\xdb\x9e\x25\xc3\xdc\xf0\xcf\xde\ \xad\xba\xcf\xe9\xec\x55\x74\xbf\xff\xdd\xef\x7e\x05\x26\x4b\xe2\ \x73\x8d\x00\x3a\x49\xd2\xfe\xfd\xfb\x1f\xc7\x0a\x5e\xd9\xbe\x7d\ \xfb\x36\xfa\x67\x0a\x00\x84\x5d\xbb\x76\x69\x79\x0e\xf3\x86\xa9\ \x26\xa4\x86\x30\x59\x72\x83\x53\xa7\xd4\xbd\x69\x2d\x0c\x46\xf0\ \xd7\x12\x3d\xfe\x57\xb4\x34\x0e\x63\x2d\x03\xb3\xa6\x7f\xfe\x99\ \xe7\x8c\x55\xab\x7b\xa3\xc7\xcb\x4d\x97\x4c\x2e\x88\xb5\xa0\x79\ \x00\x8b\x66\x08\x02\x80\xc9\x2c\xe9\x33\x9a\xf3\xc8\x00\x27\x5e\ \xdc\x7f\xe5\x0e\x26\xee\x97\x46\x76\x01\x8e\xfd\x54\x99\x7d\x30\ \x69\xe6\x75\x0a\x08\x1d\xa0\x2d\x92\x3c\x65\x6b\xf2\x2f\x32\xd7\ \x14\x82\xce\x05\x01\xbf\xa8\xf2\x7d\xdd\x8a\xdc\xb2\x5b\x29\xc0\ \x6f\x1e\xed\x9b\x8d\x1d\x67\x4e\x9f\x7e\xe2\x99\xa7\x9e\x3a\x20\ \x56\xff\x53\xdf\x0e\x77\xb2\x42\x5e\x8b\xf9\xb6\x6c\xd9\xf2\x16\ \x3a\xc5\x8e\x49\x8a\x82\x50\x9d\xee\x6a\x93\x56\xb7\x8c\x00\x6c\ \xda\xea\x90\xa2\xd6\xd0\x68\x17\x3e\x38\x21\x77\xf9\x15\xb0\xa0\ \x2c\x8c\x11\x80\x74\xac\x69\x63\xe1\x24\x55\x52\x7a\xb5\xa7\xde\ \x55\xae\x7a\x77\x05\x40\x72\x98\x08\xf9\xb0\x0e\x23\x00\x21\x08\ \xfc\xff\xac\xa7\xec\xb4\x0f\x30\x75\xae\x69\x3a\xe1\x5d\x60\x90\ \xa3\x44\xcc\x53\xa8\xa7\xfd\x72\xd4\xb6\xa1\x58\xc3\x32\xda\x9f\ \x02\x57\x26\xb9\xe7\x22\x20\x59\x00\x24\xfb\x07\x75\xaa\x2f\xa5\ \x1d\x0f\xfe\xa1\x6a\x91\x90\x49\x7a\x44\x92\x57\xfb\xc6\x23\x8f\ \x3c\x38\x7e\xf6\xec\x31\x33\xe5\xcf\x7a\x3d\xee\xb2\x0d\x75\x86\ \x77\x69\xdb\xd9\x6a\xb2\x26\x12\x8d\xb2\x80\x98\xc2\x50\x69\x6e\ \x16\x90\xa1\x2f\x8f\xd9\xa2\x3d\x00\xad\x81\xc4\x27\x15\x0c\x9d\ \xc5\xa5\x2b\x80\x95\x09\x18\xd4\x06\xa4\xa6\x80\x34\xcd\x89\xa6\ \xba\x60\xbe\x67\x65\x83\x66\x87\x0f\x40\x0d\x60\xbe\x41\x9b\x5b\ \xd8\xac\xa6\x2d\x80\xfa\x82\x47\xb2\xe3\x53\x69\xde\x0a\xa5\xa3\ \xfd\x4e\x25\x6b\x29\xc1\x5c\xb1\x3e\xb5\xdc\xad\xc1\x89\x3c\x37\ \xce\x50\xfa\xe2\xd1\xc1\x69\x7c\x3f\x6b\x36\x47\xf4\xea\x04\x09\ \xd2\xba\x7f\xf7\x51\x45\x79\xf9\xba\x48\x64\x9a\x9b\x9b\x63\x2f\ \xd3\xfe\xaf\xfd\xcd\xc3\x0f\x3f\x64\xf2\xb9\x9f\x77\x83\x44\x89\ \x0d\x88\xb3\xec\xb8\x7a\x07\x1b\x0c\xc2\x30\x6f\x22\x01\x42\x88\ \xab\x44\xf9\xe9\x00\x88\x04\x5d\x5b\x76\xc6\xd3\x15\x16\xd6\x80\ \x29\x07\x40\x74\x38\x86\xf1\x98\xc7\xf9\xa6\x52\x7d\x9e\xd2\xc3\ \x4d\xa5\xb7\xf8\x31\x5f\x7c\x33\x12\x82\xa2\x58\x40\xbc\x85\xe0\ \x4d\x59\x60\x13\x0c\xb9\xcb\x9e\x0a\x0b\x3e\xac\x47\xd7\x7e\x9a\ \xcc\xdb\x83\x10\x98\xd3\x66\x83\x26\xdd\x5d\xa0\xc4\x9d\x26\xde\ \xcf\x60\x55\xb9\x30\x80\x99\xd1\x59\xf2\xfd\xf0\xbb\xde\xae\x91\ \xb7\xbd\x55\xd9\x72\xc9\x68\xde\x00\xdf\xe4\x9f\xfd\xf1\x1f\x7f\ \x14\x0c\xb8\xe4\x32\xd3\xcf\x2b\x80\x06\x7e\x33\x07\x72\x3a\xec\ \xc8\xbc\xdd\xb8\x42\x10\x21\x18\x30\x0b\x43\x65\xfa\x73\xbe\x4a\ \x99\xa2\xa4\xa6\x44\x0f\x9d\xa3\x5e\x13\x8d\xa0\xa0\x6c\x46\x16\ \xee\xf6\x51\x2c\xf9\x14\x1d\xf6\xa3\x75\x3f\x11\xc1\x68\x3e\x0c\ \xf3\x09\xf0\x20\x45\x0c\xa7\x34\x05\xc5\x65\x30\xc0\xad\xdb\xf6\ \x99\x93\x6d\x08\x78\xa4\xd1\x69\x31\xe4\xca\x8f\x2d\x61\xa3\xcc\ \x99\x49\xca\xbe\x2d\xf2\x2d\xa2\xf1\x59\xfc\x7d\x0e\xca\x86\xb9\ \x9e\xd6\x85\x44\x46\xb9\x9b\x76\x6b\xcb\x07\xff\x40\x45\x22\xce\ \x2c\x9a\x27\xb3\x73\xbf\xfd\xcd\xbf\x7d\x60\xec\xd0\xa1\xa7\x8b\ \x92\xfb\x8b\x6e\x92\x32\xfb\xf4\xcf\xd0\x2e\x5f\xcb\x0b\xc5\x8d\ \xc6\x15\x82\x26\xb4\x25\x13\xb6\xf8\xa9\xd0\xc5\x4d\xc6\x4b\x8a\ \x67\xaa\x14\x44\x4d\x2b\x00\x27\xe0\x20\x04\x53\x81\xf9\x18\x61\ \x3a\x1c\xe0\xd8\x6a\x1d\x4a\xf2\x3d\x0d\xf3\x90\x2f\x81\x2a\x5a\ \x4d\x10\xe2\x9a\xb5\x82\x00\x56\x13\x2c\x21\x04\x62\x77\x35\x27\ \xce\x31\x9f\x98\xcb\x41\xd3\xe0\x45\x17\x00\x98\x89\xa0\xf1\x3a\ \xf9\xfd\x42\x58\x21\x28\x98\x37\xf9\x46\x5a\xe7\x48\x17\x67\xe8\ \x18\xed\x78\xe0\xe3\xaa\x04\xfc\x2d\xe6\xd9\xd4\xf1\xdc\xd3\xcf\ \xfc\xf9\xb7\xbe\xf6\x57\x7f\xce\x74\xc5\x7f\xcc\x2e\xb1\x26\x54\ \x38\x76\xec\xd8\x89\x15\x2b\x56\xec\x21\x22\x0c\x21\x04\x6b\x05\ \x81\x54\xca\x36\x29\x6b\xe5\x9c\x52\xdd\xe6\x5d\x5e\xcd\x34\x25\ \x21\x41\x7e\xcc\xd1\x6f\xb2\x33\x98\x07\x94\xc2\x31\x4c\x3e\xc1\ \xf7\x14\xe7\x93\x5c\x8f\x73\x53\xa8\x95\x83\xd9\x1e\xa3\x6b\xdd\ \xc9\x71\xc0\x93\x18\x7e\x5e\x47\x10\x29\x1f\x58\x40\x37\x0a\x0a\ \xd3\x0c\x49\x67\x82\x1a\xec\x0e\x28\x19\x20\x45\x07\xe8\x42\xf8\ \x7b\xa0\x4c\xc7\x38\xd8\xa3\x13\xfe\x08\x9a\xbf\x49\x3b\x3e\xfe\ \x31\x55\x10\xfa\x0c\xcc\xa3\x38\xb3\x9f\xe9\xd1\xbf\xfc\x93\x2f\ \x7c\xb2\x5b\x9a\x5b\xfe\x25\xf6\x09\x7a\x68\x69\xe1\xf8\xf1\xe3\ \x63\xbc\x36\xbf\x0d\x3c\xe8\x09\x1b\x50\x8c\xc7\xa1\x24\x05\xd3\ \xb0\xf2\x4b\xa0\x30\xd5\xa1\xdf\xd6\xf6\x08\x41\x62\x0c\x30\xfa\ \xa1\x90\x80\x3e\x04\x84\x20\xcc\xc8\x79\x35\xfc\x26\x77\x87\xcc\ \x66\xa7\x06\x63\x83\xb1\x2e\x51\x00\xc1\x36\xd6\xe4\x28\xe9\x49\ \x5d\x34\x63\xbb\x32\x01\xf5\x76\xc3\x3c\x05\x4f\x97\x2f\xac\x70\ \x93\x88\x54\x04\x43\xdc\x84\xaa\x80\xcd\x8b\x3c\x1f\x7d\xd7\xbb\ \xb4\xf9\x5f\xfd\x4b\x15\xb1\x94\xe9\x99\x19\xcb\xfc\xcb\x87\x0f\ \xbf\xf0\x97\x9f\xff\xc2\xbf\x49\x36\xea\x13\xe7\xe0\xe1\x97\xdd\ \x29\x4a\x16\xeb\xce\x8c\x8f\x8f\x1f\x23\x2a\x98\x04\xa9\x27\x1c\ \x89\xd8\x4c\xaf\x19\x89\x53\xa7\xaf\x22\xcb\x4a\xab\x9c\xaf\x90\ \x81\xd5\x2d\x53\x0c\xb6\x2a\x73\xaa\x50\x05\x43\x2e\x0b\xe0\x84\ \xd9\xa2\x2b\x15\xb0\x96\x62\x95\xe3\x0a\x54\x6b\x51\xc1\x05\xd8\ \x1a\x8c\xb8\x50\x09\xcc\x00\xe9\xa2\x50\x02\x9c\x48\xf9\xe8\x4d\ \x40\xa1\x26\xd6\x57\x8f\x23\xdb\x8c\x26\x7c\x51\x1d\x66\x0d\x9b\ \x1f\x7c\x50\x43\x77\xdd\xa1\x2c\x51\x69\x6a\x7a\xda\x00\x1e\xbb\ \x59\x0e\xbf\xf8\xb5\xbf\xf8\xef\xf7\x47\xf2\xd9\xf1\xb3\xac\xfd\ \x57\xb9\x59\x3a\x82\x05\xdc\xc4\xcf\x61\xfe\x94\x24\x69\x17\xdb\ \x68\x44\xe5\x68\x37\x48\x85\xca\x00\x62\x7e\x5e\xc5\xf1\x17\x15\ \x29\x8f\x29\x1d\x98\x57\xa8\x51\x6d\xed\x0a\x35\x8d\x55\xfe\xf9\ \x9a\x10\xff\x1c\x4b\x9d\xfd\x4e\xed\x37\xc4\xed\x1e\x23\x9e\xd4\ \x29\x67\xa1\x20\xc2\x0c\xa2\x6d\x46\x2f\x2c\x4c\x4e\x34\xc1\x34\ \x56\xa6\x17\x71\xd7\x5d\xda\xf8\x9e\x7b\xd5\xc0\x12\x17\xb3\xcb\ \x76\x57\x3a\x95\xac\x8e\x1c\x3c\xf4\xf8\x5f\x3f\xf4\x95\x8f\x77\ \x57\x4a\xa7\x8f\x4b\xee\x6b\xb1\x5d\x3e\x44\xc7\x68\x2b\x7b\x08\ \x3f\xc5\x6f\x05\x7e\x97\x5c\xc1\x61\x03\x92\x22\x21\x80\x09\x33\ \x8e\x19\x7f\xa6\xa7\x57\x3e\x7d\x08\x3f\x3d\xa5\x1e\x65\x11\x48\ \x49\x81\x6a\xc3\xee\x23\xf0\xd7\x01\x4b\x5b\x11\x43\xcd\x76\xba\ \x6b\x81\xc3\x69\x63\x82\x9f\xf3\x86\x60\xda\xe4\xfa\x68\xde\xa3\ \x08\xba\x58\x71\x75\xae\xe1\xd1\x97\xdc\xa3\x4d\xec\x47\x0e\xb2\ \x1b\x2d\x47\x42\xb6\x40\x92\xc3\xfe\x3f\xa3\xf9\xc6\x81\x7d\xfb\ \xfe\xc7\xf7\xfe\xfa\x6f\xfe\xeb\x48\xd3\xbb\x78\x04\x91\xbe\x96\ \x3f\x98\x08\x40\xc3\x3b\x77\xee\xfc\x83\x37\xbd\xe9\x4d\x0f\x12\ \x26\x53\xec\x20\x17\x20\xa9\xb0\xc9\xfd\x59\x68\xdc\x41\x61\xc5\ \x9c\x0a\xaf\x9e\x94\x26\xc7\x15\x9a\xbf\xa4\x1e\x9a\x1b\x09\xf2\ \xf6\x40\x89\xd4\xb5\x4a\xee\x6e\x84\xc0\x3f\xf1\x8c\x7c\x50\x20\ \x88\x79\x87\x60\x38\xa2\x1a\xe3\x54\xa9\xaa\x59\xee\xa9\x62\x69\ \x03\x6f\x78\x83\x46\xd8\x7d\xee\x74\xa5\xf1\xa0\xaa\x96\xb2\x59\ \x9b\xe1\x4d\x63\xf6\x67\xcf\x9c\x99\x7b\xe6\xc9\x1f\xfc\xa7\xa3\ \xcf\x3d\xff\xcd\x95\xd4\x73\x07\x25\xef\xf5\xf8\xc9\x8c\x03\xa5\ \xf9\xdc\x7a\xc7\x1d\x77\x7c\x82\xd7\xcd\x6f\xc6\x25\x7c\x84\x4b\ \xc5\x63\x31\xbb\x83\x3b\x2c\x29\xee\x0f\x28\xe6\x43\xb3\xe4\xe3\ \x45\x4c\xb4\x3a\x35\xa9\xe6\xec\x8c\x7c\x30\xa0\x82\x79\x77\x50\ \xb7\x55\x5e\xc3\x54\x85\xe1\x88\x5c\x00\xd6\x4b\x53\xe3\x0f\xf4\ \xab\x7f\xcb\x56\xf5\x6e\xdd\x22\x1f\x6e\x46\xd9\xa0\x3c\x6e\x96\ \xe3\x99\x2c\xcf\xd2\xd4\x10\xd9\xaa\xcb\xa6\xcd\xbf\xfb\xc1\xf7\ \x1f\xfd\x6f\xde\xe2\xe2\xd1\xf5\xf2\x2a\x3f\x92\x9a\xaf\xf7\x8f\ \xa6\x82\xd0\x8a\x0d\x1b\x36\xdc\x73\xe3\x8d\x37\xde\xbf\x7e\xfd\ \xfa\x1b\x00\x4a\xb3\xc9\xda\x6e\x47\x09\xe3\x1a\x21\x63\x15\x50\ \x14\x0d\x47\x8c\x60\x10\x4a\xc0\x74\x6b\x3b\x11\x83\x63\x87\xeb\ \xe2\x9a\x82\x41\x46\xbf\x5c\x47\xb6\x86\x2f\x03\x6e\x14\x26\x2a\ \x96\x4a\xc8\xab\xd0\xc9\xeb\xbd\xd3\xe3\xe3\x2f\x1c\xdc\xf7\xe2\ \x97\xce\x1d\x1d\x7b\x22\xd3\x6c\x2c\x8d\x4b\x8d\x5f\xe7\xcf\xe6\ \x1c\x28\x02\x0d\xaf\x5b\xbb\xf6\x2d\x3b\x76\xee\xfc\x17\xb8\xc5\ \x6e\x04\x11\xc2\x42\xac\x20\x00\x4f\x11\x3d\x14\x0c\xc0\x3c\xcc\ \xf2\xfb\x20\x2c\x3f\x00\x01\x78\x68\x9f\xff\xd9\xa4\xa8\xe1\x79\ \x96\xea\x00\x62\x0d\xe6\xcb\x30\x6f\x18\xe7\x17\xa5\x26\xa7\x2f\ \x4f\x9c\x3f\xff\xdc\xe1\xfd\x07\xbe\x7a\xe1\xd4\xf8\xd3\x51\xcf\ \x9d\x0f\x49\xb5\x73\xbf\x41\x3f\x9c\x74\xa0\x30\xec\xf4\x26\x62\ \xb1\x2d\xdb\x77\xee\x7c\xc7\xc8\xe8\xe8\xef\x80\x0f\x1b\x32\xec\ \xd4\x64\x07\xea\xdf\x0b\x02\x4d\x07\x10\x46\xe7\x5d\x9d\xda\xbb\ \x37\x08\xb7\xb6\x75\x45\x35\x6a\x4b\xd8\xa5\xc5\xc5\xc2\xfc\xdc\ \xdc\x31\x36\x6b\x3e\x79\xe4\xc5\x17\xff\x4f\xad\x54\x79\x35\xe8\ \xd5\x97\x03\xa6\x60\x93\x9a\xbf\xa9\x3f\x9d\x75\xd4\x2a\x0d\xa2\ \xb0\xd7\x8d\x81\x0f\xaf\xdd\xb0\xfe\xc6\x15\xc3\xc3\xd7\x03\x94\ \xab\x12\xc9\xd4\xca\x70\x24\x9c\xa6\xf1\x8a\x57\x04\xc3\xdc\x6c\ \x18\xaf\xd0\xb2\x2a\xc1\xfc\x32\x6d\xab\x0b\xec\x4e\x3f\x37\x39\ \x31\x71\xf8\xec\xa9\xf1\x83\x5c\x9f\xa6\xfa\xcb\x8a\x3e\xd1\xb2\ \xe4\xfd\x36\xfe\x78\x9a\xba\x0f\xb7\x97\xc8\xf2\x15\x91\x15\x8c\ \xc3\xe8\x84\x9a\x9c\xc7\xfc\x3d\x47\xb8\x3d\x90\xc8\xf5\x32\x9b\ \x54\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0\x5f\ \xad\x37\xf5\x3a\x7f\xfe\x1f\x5f\xbc\xdd\xe6\x1a\x53\x0c\xc2\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0d\x06\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0c\x83\x49\x44\ \x41\x54\x78\xda\xed\x9b\x5b\x68\x55\xd9\x19\xc7\xd7\x49\x4e\xa2\ \x26\x26\x1a\xe3\x35\x31\x5e\xc6\x54\xad\x97\x4a\x95\x29\x38\x14\ \xc4\x22\xb6\xcc\x73\x9f\x2a\xf4\x61\x5e\x7c\x10\xc4\xc2\x0c\x08\ \x7d\x28\xf8\x54\x4a\x1f\x15\xa4\x4f\xf6\x51\x0a\x52\x90\x4e\x07\ \x41\x94\xfa\xe0\xfd\xd6\xaa\x03\x5e\xc6\xfb\x35\x51\x63\x2e\x46\ \xcd\xc5\x7e\xbf\x0d\xbf\x61\xcf\x31\x92\x8c\x1c\x83\xc1\x2c\x58\ \xec\xbd\xd7\x59\x7b\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\ \xd3\xc7\xdc\x2a\xa2\x8f\x03\x30\x0e\xc0\x38\x00\xe3\x00\x8c\x03\ \x30\x0e\xc0\x47\xda\x8a\x1f\x1a\x41\xc7\x8e\x1d\xdb\x53\x5d\x5d\ \xfd\xb3\x69\xd3\xa6\x7d\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\ \xf3\x57\xaf\x5e\xfd\x8b\x72\xed\xf7\x41\x24\x42\xdb\xb6\x6d\x5b\ \x50\x2c\x16\xff\x10\xb7\x9f\xcd\x9e\x3d\xbb\x65\xf2\xe4\xc9\x93\ \x18\x87\x36\xaf\xb6\x81\x81\x81\xc1\x4b\x97\x2e\xdd\x1a\x1c\x1c\ \xbc\xd4\xd1\xd1\xf1\xb7\xbd\x7b\xf7\x1e\x1a\xd3\x00\x6c\xd9\xb2\ \xe5\xb3\xfa\xfa\xfa\xc3\x21\xf5\xaa\x21\x09\x2c\x14\xd2\xdb\xc6\ \x03\x84\x74\xfd\xfa\xf5\x43\x15\x15\x15\xbf\xd9\xb3\x67\xcf\xab\ \xb1\x64\x02\x32\xff\xcb\x9a\x9a\x9a\x43\x21\x84\xe2\xcb\x97\x2f\ \x87\x63\x78\xc8\xb1\x96\x96\x96\xf5\xd7\xae\x5d\xfb\x26\x1e\x7f\ \x35\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf\x3f\x13\x42\x00\x91\xaa\xaa\ \xaa\x52\x98\x02\x3d\xbb\xb7\x3b\x6e\x9f\x38\x71\x62\xc6\x3c\xa0\ \xd1\x9b\x9a\x9a\xd6\x6f\xd8\xb0\x61\xdd\x98\xd2\x80\xcd\x9b\x37\ \xff\x39\x98\x69\xec\xeb\xeb\x4b\xcf\x9e\x3d\x4b\x0f\x1e\x3c\x40\ \xa5\x47\x0a\x5c\x0a\x27\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\ \x71\xf9\x74\xac\x00\x00\xb3\x5f\x04\xf3\x48\x10\xef\x9e\x16\x2d\ \x5a\x94\xc2\xf9\xa5\xe7\xcf\x9f\x23\x65\xe7\xa4\xce\xce\xce\xd4\ \xd0\xd0\x90\x31\xfc\xf4\xe9\xd3\x34\x69\xd2\xa4\x74\xfa\xf4\xe9\ \xf4\xe4\xc9\x93\x44\x0b\xff\x91\x68\x53\xa6\x4c\xf9\xf9\xc6\x8d\ \x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4\x69\x53\x75\xb4\xe9\ \x71\x0b\xc3\x78\xf6\xb4\x6a\xd5\xaa\x34\x61\xc2\x84\x74\xe3\xc6\ \x8d\x34\x6b\xd6\xac\x74\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\ \x8f\x9d\xc3\x60\xba\x7a\xf5\x6a\x5a\xb8\x70\x61\x3a\x7b\xf6\x6c\ \xf6\x4e\x77\x77\xb7\xe6\x00\x68\x95\x2f\x5e\xbc\xd8\x14\x4b\xfe\ \xfd\x83\x88\x02\xdb\xb7\x6f\x6f\x7c\xf4\xe8\xd1\xba\x20\xbc\x3f\ \x88\x9d\x17\xd2\x5b\x31\x73\xe6\xcc\xdf\xde\xb9\x73\xa7\x2b\x88\ \x9e\x1c\x63\xd3\x83\xe0\x84\x16\x00\x42\xc4\xf7\x77\xd1\xa2\x4c\ \x33\x02\xcc\x0c\x84\x5b\xb7\x6e\xed\x0b\x8d\xd9\x4f\x38\x8d\x7e\ \x34\xd6\xfc\xf7\x89\x13\x27\x1e\xbc\x17\x00\x7e\x1d\x6d\xc5\x8a\ \x15\x95\xc1\x54\x6d\x30\xd3\x7a\xe6\xcc\x99\xdf\xaf\x59\xb3\xa6\ \x39\x18\x7d\x10\xd2\x68\xba\x70\xe1\x42\xed\xb2\x65\xcb\xd2\xdd\ \xbb\x77\xd3\xd4\xa9\x53\x53\x57\x57\x57\x7a\xfc\xf8\x71\x46\x6c\ \x84\xad\xc4\xbe\xd8\x3e\x12\x0c\xa0\x90\xa8\x9e\x7e\xc4\x0d\x4d\ \x61\x1d\x1c\x28\x66\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\ \x0e\xad\xba\x1c\x4e\xf4\x1f\x3d\x3d\x3d\xff\xda\xbf\x7f\xff\x89\ \x98\x33\x38\x62\x00\x76\xec\xd8\xb1\xf4\xe6\xcd\x9b\x5f\xc5\x6d\ \xcb\xe2\xc5\x8b\x6f\xd6\xd6\xd6\xd6\x04\xa1\x8b\x7a\x7b\x7b\x5b\ \xcf\x9f\x3f\xdf\xc8\x26\xa8\x24\x92\x84\x51\x18\xc0\x63\xf3\x8c\ \x6d\xbf\x7a\xf5\xca\xae\x27\x77\x69\xa4\xce\x38\x44\xd2\x99\xcf\ \x18\x4c\x0c\x1b\x0e\x01\x2d\x68\x51\x0b\x78\x3f\x63\xd8\xe7\x90\ \x7a\x8a\xe8\x82\xf9\x00\x3e\x7e\x22\xdb\x3b\xe8\xee\x6c\x6f\x6f\ \xff\x26\xf6\xfd\x32\xe6\xdc\x1e\x12\x80\xdd\xbb\x77\xa3\x8b\xbf\ \x7b\xf8\xf0\xe1\x5f\x8e\x1f\x3f\x3e\x3b\xd4\x88\x97\x0d\x37\x10\ \x08\xe1\x79\x06\x91\x1e\x1b\xdb\xdf\x78\x46\x42\x74\x1b\x6b\xe0\ \xd0\x64\x9e\x3d\x60\x8c\x7b\xae\xf9\x6e\xf3\x3d\xaf\xac\xeb\x95\ \x0e\x00\x79\xe7\x19\x1a\x09\x08\x00\xc5\xfa\x38\x4f\xfc\x48\xe6\ \x67\x42\x1b\xae\x1f\x3d\x7a\xf4\x93\x37\x00\xd8\xb5\x6b\x57\x4d\ \xd8\xd0\xd7\xa1\xaa\xeb\x62\x92\x4c\xb2\x10\x1d\xc6\xd8\x14\xbb\ \x85\x38\x09\x18\x16\x00\x36\x86\x39\x1b\xce\x0b\x2d\x81\x30\xc6\ \xed\x23\x01\x80\x2e\x93\x79\x10\x58\xcb\x88\xe0\xef\x87\x0f\x1f\ \x66\x1f\x98\x56\x08\xdc\xd3\xfb\xc3\x24\xeb\x6f\xdf\xbe\xdd\x5b\ \xf4\x85\x9d\x3b\x77\xb6\x44\x38\xfa\x36\x54\xb9\x96\xd0\x93\x27\ \x02\x64\x91\x18\xe3\x61\xf3\x69\xee\xdc\xb9\x29\x5e\x06\x08\x36\ \x96\x30\x89\xcb\xe6\x00\x60\xe4\xea\x3f\x20\xd6\xe6\xfa\x00\x25\ \x08\x6a\x80\xfb\x39\xce\x9a\x39\x40\x87\xd4\x00\x3b\xcc\xf1\x1e\ \xfe\x06\x8d\x20\x7a\x60\x56\x08\x12\x20\x42\xab\x11\x24\xeb\x17\ \xc3\x17\xfd\x09\x5f\x9d\x01\xb0\x6f\xdf\xbe\xc6\x90\xca\xb5\x28\ \x32\xaa\x64\x3a\xcf\x3c\x49\xca\xca\x95\x2b\x13\xed\xc8\x91\x23\ \x20\x9d\x81\x10\x7e\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\ \x8d\x35\xb2\x4d\x6d\x6a\x14\x8d\xb9\x30\xc7\x1e\xd3\xa7\x4f\xc7\ \x79\xf1\x9b\x1a\x02\xe1\x43\x81\x24\x20\xa5\x20\xc8\x38\xe0\x2b\ \x79\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd\x2a\x9e\xf7\x64\x00\ \xdc\xbb\x77\xef\x3f\x11\x77\xab\x54\x53\x99\xd7\xfe\xc9\xb8\x02\ \x31\x9c\x48\x46\xa4\xf3\x24\x16\xfb\x82\x10\xcd\x23\x22\x00\x8c\ \xf2\x2c\x00\xae\x9b\xad\x41\x13\x00\x12\x20\xd6\x46\xa3\xc8\x01\ \xf2\x4e\x50\xa6\x35\x3d\x9b\x29\x71\xe9\x6f\xac\x8d\x83\xc4\xe1\ \x42\x07\xeb\xd2\xb6\x6e\xdd\x9a\xdd\x9f\x3b\x77\x0e\x67\x4d\xa4\ \x40\x0b\x2b\x02\x88\x4f\x8b\x21\xfd\xda\x50\x8d\x9f\xe6\xbd\xac\ \xc4\xa9\x8a\x84\x29\x50\x43\xa2\x80\x81\x84\x4f\x9e\x3c\xc9\x34\ \xc6\xd9\x54\x00\x40\x18\x86\x95\x8e\x25\xec\x0f\x34\x80\x36\x6f\ \xde\x3c\x9c\x2a\x5a\x04\x31\xec\x07\xb8\x86\x34\x9e\x5d\x03\x1a\ \x74\xb6\xec\x87\x76\x71\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\ \x36\x91\x20\xfb\x7d\xce\x9c\x39\x19\x38\x57\xae\x5c\x31\x5a\x4d\ \x2b\xc6\x4b\xad\x11\x8f\x0b\xbc\xa8\x63\x73\x41\x91\x9e\x31\x63\ \x46\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1b\x6a\xc9\ \x06\xda\xbf\x44\x0a\xc4\xf2\xe5\xcb\x49\x65\x31\x27\x18\x05\x54\ \xcc\x0a\xa2\x19\xd7\x9e\x95\x24\xb4\x20\x41\x34\x0d\x3a\x98\x03\ \xb3\xa8\x3c\x57\x23\x13\x82\x50\x20\x8c\xab\x45\xf8\x37\xae\xbc\ \x57\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d\x7c\x9b\x8d\xf3\x5e\x7f\x48\ \xc6\x68\x10\xc6\x6f\x3c\x03\x00\x0b\x43\x30\x44\xd2\x35\x0d\x43\ \x9f\xef\x31\x8e\x2f\x21\xa5\x25\x09\x82\x69\xf6\x05\x60\xd6\x40\ \xc3\xb8\xc2\xb4\x0e\xcf\x7d\xd5\x4a\xf6\x31\x17\xc0\xff\xb0\x26\ \x6b\x01\x12\x7b\xd2\xa0\x01\x3e\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\ \x65\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02\x61\x1e\xfe\x86\x5d\x6a\ \x7f\x02\xa0\x59\xd8\xc8\xed\x2f\x5e\xbc\x08\x68\x48\x1d\x89\x03\ \x00\x3e\x08\x69\xb2\x2f\x84\xeb\x00\xe9\x32\x8b\xf4\x55\x5b\xe6\ \x40\x07\x6b\xe0\xf0\x58\x83\x88\xc3\x3c\x0b\x26\x53\xeb\x61\x53\ \xec\xa2\x2a\xf4\xae\x4d\x2f\x9d\x6b\x10\x85\xa4\x4a\xd3\x56\x9c\ \x1c\x0c\x10\x26\x91\x0c\x73\xd0\x06\x00\x83\x01\x1c\x14\x6b\xe1\ \xb1\xd1\x1e\xf3\x07\x01\x61\x5d\x68\x45\x73\xb8\x47\x0b\x99\x03\ \xe3\x80\x00\xf3\xbc\x8b\x43\x25\x04\x1a\xc5\xb8\xda\x87\x01\xa0\ \x4c\x0d\xc2\x60\xc0\x06\x51\x48\x18\x55\x85\x50\x7d\x47\x14\x46\ \x5c\x61\x1c\x8d\xc1\x31\xf2\x1e\x0c\xb3\x06\x0c\x41\x1b\x0c\xd2\ \x01\x4d\xed\x83\x31\xd6\xa5\x94\xc6\x79\x5a\x1a\xb3\x47\x36\x7e\ \xff\xfe\x7d\x9c\xec\xb0\xf5\x05\x3e\x20\x95\xbb\x69\x32\x46\x15\ \x98\x8a\x63\x2b\x33\x31\x4d\x0b\x46\xa8\xe0\x32\x82\x97\x2c\x59\ \x42\xb1\xc4\x19\x5f\x69\x46\x88\xb4\x61\x1e\xa6\x59\x03\x86\x01\ \x8e\xe8\x01\xd3\x5c\x71\xd0\xac\xc9\x95\x75\x19\xc3\x54\x4c\xb3\ \x05\xe2\xfd\x6b\x80\x9b\xda\xb0\x47\xc2\x28\x04\x40\xac\x21\x92\ \x2b\xb6\x8f\x39\x00\x00\xe6\x01\xe1\xe6\x0d\xe6\x21\x26\x2f\xfa\ \x03\x7d\x92\x76\x0e\x38\x80\x82\xc6\xa8\x25\x8c\x13\xfa\x58\x1f\ \xad\x1a\xd6\x07\x94\xb3\x11\x26\x21\x02\x50\xb5\x41\xd4\xbf\x94\ \x79\x54\x17\x82\x91\x26\x7e\x40\x4d\xe4\x1d\x23\x8a\x79\x88\xe9\ \x30\x73\x60\xd4\xb9\xcc\x43\x5b\xe4\x81\x39\x00\x05\x20\x79\xc7\ \x6d\x1b\x15\x0d\x30\x03\x63\x63\x25\x44\x83\x59\x01\x80\x09\xa4\ \x4d\xb9\x8a\xad\x32\x66\x4a\x8c\x64\x35\x15\xcf\x0e\x64\xce\x08\ \x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06\x43\x26\x9a\x85\x1f\ \x61\x9d\xd1\xd2\x00\xe3\x36\x1d\x86\x70\x4a\x84\xaf\x7c\xa6\x08\ \xf1\x84\x5d\x3d\x39\x0c\xe8\xd4\xb0\x61\xa3\x00\xa0\x31\x6e\x78\ \x86\x79\xde\xb1\xe0\xa1\x13\x05\x04\x3e\x9f\x00\xc1\xb4\x7b\x51\ \x67\x70\xff\x56\x27\x58\x56\x0d\x90\x51\x9a\xea\x8e\x9a\xe7\x55\ \xd2\x3a\x9d\x28\xc0\xb8\x67\x06\x8c\x31\x17\xa6\xb8\x1a\xfb\xcd\ \xf4\x90\x3c\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2\x69\x35\x60\xd0\x0c\ \x9b\x68\x1c\xfb\x8e\xaa\x06\x68\xab\x4a\xd1\x31\x98\x70\x1e\xfb\ \x43\x38\x04\xeb\xe1\x71\x60\xf3\x66\x2c\x49\x4d\xd3\x3e\x49\x03\ \x13\x42\xdd\xbb\x6f\xa3\x29\x30\x6c\x8d\x60\xde\x6f\xea\xab\x84\ \x87\xca\x1e\xc9\x31\x00\xd5\x7c\xe2\xfd\xfa\x80\x3c\x21\x82\x9b\ \xaf\xda\x54\x55\x88\xb7\xb4\x05\x00\x41\x50\x0b\xe6\xcf\x5c\x9a\ \xfa\x6b\x1f\xa7\xe6\xa6\x96\x54\xdd\x96\x85\x4c\xed\x1d\x46\x74\ \xb6\xac\xc7\x3b\xae\x6f\x04\x92\x27\xfd\x0a\xa6\x88\x29\x00\x40\ \x59\x35\x60\xd8\x23\x2b\x01\xb0\xa9\x01\xee\x2b\xd1\x8c\xe5\x35\ \xa1\x50\xf7\x32\x2d\x58\xb4\x34\x15\xeb\xfa\x52\xb1\xba\x39\x75\ \x90\x2a\xc7\x3b\x66\x99\x9e\x31\xa2\x19\xac\xaf\x29\x5b\xd0\xe5\ \xa3\x10\xe1\xd0\xcc\xb3\xb4\x55\x94\xd3\x07\xc8\xa8\x04\x20\x95\ \x52\x60\xf2\x67\x0e\xf9\x7b\x9f\x3d\x23\x7c\xde\xdf\x1e\xcc\x3e\ \x4a\xb5\x55\xf5\xa9\x3e\xca\xd8\x89\x75\x93\x53\xfd\xec\xc8\x19\ \x1a\xa6\x38\xcf\xf7\x5c\xc3\xee\xfe\x76\x35\x0d\xb0\xde\x04\xa0\ \xdc\x3e\x20\x4f\x40\xbe\xa2\xf3\xde\x4c\xd0\xef\x7f\x30\xeb\x5c\ \xfb\xf7\x31\xbf\xa7\x37\x75\x84\xea\x77\xb5\xb7\xa5\xee\xb6\xf6\ \xd4\x1b\x6a\x3c\x21\xbe\x9c\x0f\xe6\x34\x8c\xf5\x2c\x99\x05\x54\ \xe9\x6b\x86\x66\x93\xac\x5b\xda\x8a\x12\x53\x6e\x00\x8c\xdd\x3a\ \x2d\x9a\xa1\xd1\x33\x02\x55\x9f\x79\x3a\x35\xed\x1b\x6f\x5e\xc5\ \x07\x8f\xfa\xba\xd4\xf7\xbc\x27\x3d\x8d\x32\xb9\xb3\xa7\x3b\xf5\ \x15\x99\xfb\x7d\xc5\x0a\x00\xbc\x83\xa7\x57\xd2\xa5\x25\x38\x7b\ \x50\x83\x70\x1d\x1d\x00\x24\x40\x00\x2c\xb9\x75\x4a\x82\xc2\xbd\ \x85\x92\xcc\x6b\xe3\xcc\xc9\xca\xe3\xca\x42\x7a\x45\x32\x55\x5d\ \x91\xba\xba\x3b\x23\xb7\x4e\xa9\xab\xb3\xcb\x13\x6b\x22\x06\x60\ \x19\xf7\x65\xdc\xc6\x98\xc5\xd2\x90\xad\xa8\x57\x2e\x57\xf3\x24\ \x57\x42\xcc\xe3\x21\x42\x7f\x03\xb1\x66\x7e\x48\x0e\xdb\xa4\x9b\ \xfe\xe6\x6d\x96\x10\x56\x37\xb3\x21\x4d\xa8\x9c\x98\xba\x7a\xbb\ \xd2\xa3\x2b\x0f\x01\x0c\x2d\x61\x4d\xee\xcd\x1a\x3d\x87\x54\xab\ \xbc\x1f\xdd\x54\x18\x06\xf2\x84\xc0\x84\xa0\xd0\x4c\x7a\x90\x9a\ \x80\x51\x10\x91\x12\x23\xfd\x7c\xf1\x83\x60\x3c\x95\xce\x67\x82\ \xda\x33\x8c\x73\x82\xb4\x60\xc1\x02\xcf\x27\x05\xd8\xc4\x89\x44\ \x69\x74\x8b\x21\x9d\x9a\xcd\xb3\x3a\x80\x80\x60\x6d\x14\xd5\x67\ \x0c\x66\x01\x8a\xda\x3d\x3e\x5b\x65\xc0\x18\xeb\xad\x05\xb4\x65\ \x41\xf0\x9c\x32\x3e\xdb\x71\x40\x2b\xd0\xcc\xc9\x3b\x42\xb5\x84\ \x3d\x47\x4f\x03\x4c\x47\x05\x82\x67\x08\xf1\x68\x8b\x31\x99\xf6\ \xd0\xd3\x12\x1a\x10\x50\x79\x6b\x04\xab\x41\xdf\xf1\xec\x12\x9a\ \xa9\x20\x39\x12\xf3\x5c\xd0\x33\x4a\x80\xf5\xd3\x1d\xe6\x05\xf3\ \xa3\x75\x20\x62\xfd\xaf\xf3\xd3\x0c\x60\xca\x6a\x4d\x02\x21\x1a\ \x40\xf2\x1f\x47\x19\x83\x21\x8b\x17\xa4\xed\x3c\xc3\x27\x5f\x77\ \x00\x94\x4a\x12\x06\xd9\x03\xe6\x35\x09\xfd\x0f\x42\xe0\x58\x8c\ \xdf\x46\xd7\x07\x58\xcf\xeb\x84\x54\x77\x2b\x40\x98\x32\x13\xb4\ \x74\x36\x1c\xf2\x9b\x45\x8b\x15\x9d\x1f\x52\x61\x44\x8f\x1e\x5f\ \xaa\xd1\x0e\x4f\x95\x00\x8f\xf7\x33\xa0\x3c\x29\x6a\x6e\x6e\x36\ \xed\x1d\x55\x1f\x20\xc3\x1e\x45\xeb\x18\x01\x85\x7c\xdc\x83\x4e\ \xf3\x7a\x01\x31\xf4\xe1\x20\x61\x54\xd3\x00\x00\xde\xa1\xf6\x67\ \x1d\xd7\xd4\x21\x5a\x4c\xb1\x27\x63\x74\xd6\xc0\xf9\x01\xfa\x88\ \x00\xe0\x0b\x71\xb9\x01\xc0\xa1\x69\xbf\x66\x6c\x48\x0b\xf5\xd5\ \x57\xc0\xb8\xde\xde\x52\xd7\x44\x4a\xa6\x4a\x73\x0b\x55\xde\x22\ \x27\x9f\x0c\x79\x62\x84\xf4\x31\xbb\x11\x29\x6c\x31\x50\xae\x61\ \xd1\x72\x54\x7f\x36\x88\xb3\x04\x2e\x05\x06\x10\x20\x54\xe7\x05\ \x13\xac\x81\xdd\x23\x71\xa5\x6a\x6d\x60\x46\x49\xb7\xb6\x27\xf9\ \xf1\x54\x29\xff\x75\x8a\x77\xf9\xd6\xc0\xbc\xb5\x6b\xd7\x72\xec\ \xa6\x06\xe9\x24\xf9\x2e\x21\xdd\x00\xde\x87\x06\x34\xf0\xf0\x0e\ \xcd\x8c\xee\x6d\x5a\x80\x2d\x2a\x39\xbb\xc7\xde\x10\xe7\x87\x0d\ \x08\xf1\x4b\x8e\xa7\xba\x1e\x8c\x70\xc6\x0f\x53\x00\xc5\xf1\x39\ \x6b\xc8\x98\xef\x20\x6d\x00\x63\x3d\x2b\x4e\x2a\x40\xd6\xf6\x3d\ \x40\xf5\xbc\x01\xba\xa0\x01\x20\x6f\x15\xf9\xdb\x5b\xff\x14\xed\ \xc7\xb6\x7c\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdf\x4a\x9b\x4e\x12\x8f\ \x0e\x51\x48\x15\xa2\xf3\x69\x33\x34\xd1\x79\x9f\x64\xc7\x46\xe6\ \x67\x68\x33\x29\xe2\x7d\x4b\x5d\x01\xf8\xee\xbb\xef\x86\x22\x59\ \x00\xd1\xd0\xb3\x11\x49\xfe\x5b\x8c\x81\x9b\x64\x5a\x6c\xca\x22\ \xf9\xd8\x9b\xaf\xeb\xed\x2c\x6e\x4d\x0f\x61\x7e\xa8\x90\x28\x8f\ \xb8\xec\x6e\xea\xb5\xa4\x79\x86\xef\x91\xd8\x70\x69\xb9\x66\x82\ \xcf\xf0\x0b\xb6\xe7\x83\x23\x31\x57\xfd\xc7\x85\xf8\xfb\x86\x2f\ \x63\xa8\xad\x18\x52\xea\x08\x6f\x79\x28\x08\x5f\xef\x5f\x58\x04\ \x83\x32\xe2\x55\xe2\x65\x12\x2f\x3f\x10\x44\x7c\x1b\x8f\xcf\xf2\ \x69\xae\xcd\xf8\x3e\x82\x26\x38\x95\x01\xe8\xd4\x58\x63\x7a\xd0\ \x50\x13\x9d\xbf\x57\x80\x3e\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\ \x8f\xc3\x41\x3e\x09\xa0\x7e\x6c\x02\x83\xd0\x3a\xc2\x9c\x2e\x45\ \x38\xfe\x3a\xd6\xbb\xc0\x29\x7e\x21\xfe\xf6\x7e\x52\x2c\xbc\x3a\ \x54\xf6\xf3\x40\x77\x59\xfc\xf0\x13\xfe\xcc\x8d\xf9\x79\xc9\x4b\ \x67\x34\xa0\xbe\x1d\xb6\x74\x24\x88\xf8\x5f\xbc\xdb\x99\xde\x4f\ \x73\xc3\x42\xb4\xd7\x65\xc8\x4f\x90\x0e\xb4\x12\x1b\xef\x45\x7f\ \x12\x7f\x71\xfa\x3a\x0b\x81\xf1\xf7\x7d\xd3\x02\xed\x96\x60\x66\ \x6e\x3c\x83\x7e\x7d\x00\x41\xfd\xca\xef\x48\xb2\x10\x9d\x7b\xfa\ \x60\xdc\xb3\x50\x7b\xcc\xb9\x16\xd7\xa7\x69\x6c\x34\x40\xec\x23\ \x68\x04\xe3\x7d\x0e\x9a\x03\x00\x42\x15\x99\x6c\xf4\x9a\xe8\x18\ \xa2\xfa\xeb\xb5\x40\x67\x21\x54\x07\x7f\x44\x07\xc5\x34\x86\xdb\ \xf8\xbf\xce\xa6\x34\xfe\x5f\x63\xe3\x00\x8c\x03\xf0\x11\xb7\xff\ \x03\x7f\x19\x0a\xe4\xd7\x62\x63\xda\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x15\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x14\x91\x49\x44\ \x41\x54\x78\xda\xe5\x5b\x79\x8c\x64\xc5\x7d\xfe\xbd\xa3\x8f\xe9\ \xee\x39\x76\xa6\x97\xdd\xb9\x96\x3d\x66\x61\xef\x05\x61\x6c\xae\ \xa0\x38\xb6\x20\x4e\x2c\x22\x27\x32\x09\x92\x0f\x14\x20\xc6\x81\ \x18\x84\x92\x08\x59\x8a\x30\x7f\x18\x04\x09\xe0\xf8\x08\x47\x24\ \xa2\x24\x76\x14\x9b\x80\xf3\x4f\x0e\x27\x86\x80\xc3\x61\x60\x31\ \xe6\xb0\x21\xbb\xec\xb2\xf7\xce\xf4\x4c\xcf\xf4\xdd\xfd\xae\xaa\ \x7c\xbf\x7a\x5d\xf3\xfa\x98\x49\xef\xb4\x90\x65\x29\x65\x7d\x54\ \xbd\x7a\x47\xd7\xf7\xbb\xab\x66\x6d\x48\x29\xe9\xff\x73\xb3\xe9\ \x97\xb8\xbd\x74\xed\xb5\x03\x9e\xeb\x66\x09\xf0\x84\x18\x23\xe9\ \x67\xa5\x2f\xb3\x42\x88\xac\x14\x18\x63\x4e\x04\x22\x2d\xfd\xe0\ \xdf\x7f\xf3\x95\x57\xfe\x8a\xfa\x68\xbf\x30\x0b\x78\xef\x4b\x5f\ \x4a\x54\x3d\x2f\xeb\x48\x37\x6b\xf8\x41\x96\x04\x88\x04\x04\x02\ \x41\x56\x92\xc8\x52\x20\x43\x52\x52\x8c\xc9\x40\xe0\x9e\x60\x82\ \x29\x89\x87\x70\x4d\x18\x87\x08\x02\x12\xd1\xb8\xd9\x8b\xc6\x46\ \x21\x86\x2e\x3a\x70\xc0\xfb\x85\x58\xc0\xcf\xef\xbe\x3b\x6e\xd5\ \x6a\x59\xd7\xf3\xc6\x4c\xc3\xc8\x0a\x62\x12\x06\x2f\x18\x3d\x8d\ \x19\x22\xc8\x0a\x49\x59\x92\x4c\x42\x86\x7d\x20\xd3\x20\x47\x06\ \x6e\xa0\x03\xd0\xf3\x80\x00\x26\x21\x19\x12\x64\x00\xdc\x23\xd9\ \x84\x7a\xae\x1d\xb4\x0c\xd2\x73\xc9\x63\x52\xee\xbc\x88\xe8\xcd\ \x0f\x44\x00\xef\xdc\x79\xe7\xed\xe5\xb8\xbd\x29\x79\xe2\xe4\x88\ \xb1\x6e\x24\x26\x0d\xca\x1a\x64\x8c\x11\x48\x12\x49\x80\x06\x7d\ \xe2\x26\xa1\x38\xee\x42\x32\x7a\x61\x22\xec\x43\xed\xf0\x98\xfb\ \xe6\x75\x04\xb9\x32\xa4\x86\x88\xde\xd7\x08\xaf\x43\x88\xf6\xdf\ \x34\xa4\x7f\x01\x7d\x10\x02\x78\xec\xc2\x0b\xbf\x72\xc5\x95\x97\ \xdf\xe5\x98\x43\x94\x1a\x18\xa0\x40\x88\x90\xaa\xc1\xff\x55\xff\ \xa1\x50\xf4\x7a\x28\xc3\x61\xa4\x9d\x88\x74\x34\x56\xef\x5a\xa9\ \x34\x05\x8d\x3a\x5c\x99\xcd\xda\x65\x33\x50\x30\x63\x36\xe6\x1b\ \xe1\xb5\xd0\xc4\xf1\x46\x32\x41\xa4\x85\x55\xa9\xb4\x0b\xa3\xc3\ \x2a\x84\x30\x2e\x30\x0c\xe3\xef\x25\x5a\x5f\x02\x30\xd0\xee\x98\ \x9e\x4e\xce\x0c\x0f\xdf\x5e\x2f\x95\xa9\x54\x2c\x53\x76\x7c\x9c\ \xfc\x72\x89\xc8\x34\x69\xb5\x66\x26\x12\x24\xea\xf5\x48\x10\xe1\ \xe2\x99\x8c\xd6\x54\x48\xcc\x60\x01\x0c\xa0\xc7\x3b\x98\x0b\x6a\ \xfc\xb2\xa5\xe6\xfc\x5a\x83\xac\xc1\x21\xf4\x35\xb2\x86\x06\xc9\ \xcd\xcd\x13\xa5\x53\xca\xf7\x85\x03\xc1\x60\x5e\x13\xee\xd6\xbe\ \xb6\x00\xb1\xbf\xa9\xa1\xb5\x0b\x80\xc9\xf3\x72\x3c\xa2\x6d\x41\ \x10\x0c\xd7\xf0\x83\x85\xa5\x22\xc5\x76\xee\xa4\x5a\x6e\x8e\xcc\ \x64\x52\x4b\x49\x6b\x5d\x75\xf1\x6c\x96\xbc\x42\x81\x12\x1b\x36\ \x52\x50\xad\x84\x6b\xf1\x3d\x32\x62\x31\xe2\x4f\x06\x9e\x47\xd6\ \x40\x4a\x09\xa8\x31\x3f\xaf\x34\xeb\xd7\x41\x36\x99\xc4\x3b\x1b\ \xc8\xc9\xe5\x48\xb2\x65\xc0\xd2\xbc\x7a\x95\xc8\x32\xc9\xaf\xd6\ \xc8\x84\x50\x02\xd7\xa3\x00\xe4\xf9\x5d\xe9\xba\x91\xf6\x05\xf7\ \x1d\xae\x80\x1e\x2a\xda\xcb\x2b\xec\xd7\x05\x0c\x20\x31\x57\xaf\ \xaf\x9f\x49\xa5\xa8\x86\x1f\x75\xaa\x55\xb2\x86\x47\x28\x60\xe9\ \xc7\xe2\x78\xa2\xfd\xeb\x12\x30\x2c\x1b\x8b\x74\x48\xb8\x0e\x34\ \x08\xcd\x2d\x2c\x28\x72\x36\xb4\xe9\x2c\x2e\xc2\xb4\xe3\xea\x9e\ \xa4\xd0\xff\xb5\x00\xdd\xa5\x25\x08\x6e\x89\x04\x5c\x21\x58\x2a\ \x34\x4d\xbe\x33\x3e\x04\xaa\x27\xdb\xc2\x37\xbc\xe8\x9e\xd4\x71\ \xa5\x45\x18\x00\xfe\xb3\xfe\x9b\xdb\xb7\x8f\x43\xf0\xa7\xd6\xe2\ \x06\x76\x53\xfb\x16\x90\x2e\x04\xc1\x04\x07\xb0\x06\xfc\x31\x33\ \x98\x21\x7b\xdd\x08\x49\x98\xa7\x1c\x0c\x34\xe9\xb6\xe6\x2c\xcc\ \x2b\xc2\x0d\x68\xd2\x4a\x24\x95\x86\xdc\x52\x99\x4d\x5b\x49\xab\ \x7e\xfa\x54\x4b\x1c\x90\x54\x3b\x71\x42\xbb\x84\x26\xda\x41\x5e\ \x32\xda\xef\x35\x7c\xfd\x8d\x2e\x17\x00\xda\x2c\x63\x90\x88\x03\ \xe1\xa9\x7e\x2c\xc0\x04\x52\xae\x54\x45\x06\x39\x8e\x4b\xe7\x6c\ \x9f\x21\xd7\x07\x71\x19\xe6\xdb\x95\x4c\xc0\x87\x95\xe8\x00\x28\ \x3c\x8f\x47\xa1\x99\x57\xca\xad\x01\x31\x22\x2d\x23\x82\x3a\x4b\ \x44\x02\x88\xae\x89\xc1\xf9\xde\xf7\x29\xf0\xb9\xf7\xd4\xd8\xc7\ \x98\x94\xba\x2c\x32\x01\xb8\x5a\x28\x6c\xdc\x93\x58\x0b\xc8\xec\ \xc3\xdd\x7f\xe9\x57\x00\x31\x43\xca\x14\x2f\xd2\x81\xcf\x4d\xcf\ \x6c\xa3\xea\x7c\x8e\xcc\x78\x3c\x5c\x54\x77\xd3\xe4\xa3\x6c\xa0\ \x53\x22\xe9\x34\x18\x09\x81\x05\x20\x02\xc1\x71\x21\x04\x2f\x1a\ \x40\xaf\x82\xac\x61\x59\x80\x0d\x60\x8c\xdf\x34\x6c\x9b\x6c\xcc\ \xc7\x00\xa4\x60\xf0\xe4\x9e\xf8\x79\x95\x31\x82\x3a\xe0\x38\xe1\ \x98\xdd\x8c\xb3\x89\x94\xfb\x74\x20\xec\x27\x0d\x9a\xf0\xd1\x18\ \x2f\xd6\xf3\x7c\x15\x7c\x2a\xe5\x1a\x0d\x20\x1a\x3b\xda\x02\xba\ \x9a\x04\x09\x90\x0a\x3c\x28\xc1\x67\x2b\x08\xb5\x16\x04\x4c\x46\ \x91\xb0\x00\xee\xc9\x8e\x21\x63\x58\xb8\xb6\xe0\xd6\x36\x00\xc2\ \x26\x60\x19\xca\xc7\x03\xfc\x9e\xd0\x84\x18\xd0\xa8\xaf\x2d\xa4\ \x37\x94\x0b\x58\x3a\x10\xf6\x15\x04\x81\x79\xdf\x2f\xa2\x57\x64\ \x3c\x04\xb1\x52\xb5\x4e\x83\x08\x84\x8d\xc5\x3c\xd5\x0a\x45\x12\ \x2c\xa5\x78\x8c\x4d\x4f\x59\x86\x65\xa1\xcf\xc4\xc8\x42\xb0\x8b\ \xc7\x98\x5c\x1c\x81\x2f\xd4\xa2\x6c\x92\x11\x8a\x90\x43\x3e\x7a\ \x59\x87\x90\x9a\xe6\xee\xb7\xb9\x40\x38\xa6\x68\xdc\x01\xd9\x1b\ \x52\x32\x89\xed\x9f\xdb\xb0\x21\x89\xb0\x56\x93\x68\x6b\x2e\x84\ \xde\xaf\xd7\x17\xf1\x96\xd2\x60\xad\x5c\xa6\x42\x2e\x4f\xe7\x5e\ \x3c\x4d\xf2\xd4\x29\x1a\xdb\xb5\x8b\xcd\x34\x24\xa5\xc9\xb9\x0e\ \x08\x42\x73\x24\x55\x40\xf6\xa8\xc5\x0d\x80\xee\x9e\xc9\x74\x8e\ \x55\xdf\x4d\x3e\x22\x06\x88\xff\x1b\x62\x19\xb1\xcb\xe2\xf1\xdd\ \x7f\x47\xf4\x6a\x3f\x2e\x20\xab\x41\xe0\xba\x42\xa0\x0b\xd2\xb5\ \x5a\x9d\x4a\x88\xee\xf6\xc8\x88\xd2\x62\xf5\xd8\x51\x8a\x9a\xe2\ \xd4\x51\x15\x46\xe4\x69\x45\x41\x88\x96\xba\xbe\x83\xb0\x5c\x51\ \x00\x6d\xe4\x68\x19\xb2\x1b\x32\x42\xd2\x90\xfb\xa9\x0f\x01\x48\ \x40\x00\x7e\x2d\x08\x0a\x83\x42\xa4\x51\x0b\xf0\x02\xb8\x16\x50\ \x5a\x36\x06\x92\xd4\x91\x06\xda\x3b\x29\xb5\x30\x34\xe9\xae\x80\ \xa8\x02\x2c\x4a\xda\x0a\xfc\x7b\xdd\xd8\xd8\xea\xfb\x85\x8e\x31\ \x45\xa6\xde\x91\x39\xba\x61\x0a\xc4\x81\x35\x34\xb3\x85\x8d\x0f\ \x78\x2c\x00\x5d\x0b\xf0\x22\x25\x07\x31\x21\x9b\x5b\xd2\x20\x44\ \xc0\x10\xcb\x73\x22\xda\x96\x02\x3c\x0e\xaf\x45\x73\x4e\x00\x7c\ \x5d\x02\xf9\xe9\xcf\x5f\x4f\x57\x3d\xf1\x4f\x3d\x82\x5a\x07\xf9\ \x88\xb4\x86\x16\x52\x17\x8c\x30\x15\x9a\x6b\xb2\x00\xad\x7d\xc0\ \xad\x0a\xb1\x14\xd6\x02\x1e\x4d\xef\xdd\x4d\xd5\x85\x79\x15\xf0\ \x7c\xd1\x91\x09\xb4\xb6\xa3\xb1\x4a\x51\x25\x54\x83\x23\xe7\x9c\ \xb3\xe2\x26\xe9\x43\xbf\xf3\xdb\x34\x75\xc3\x0d\x61\x4e\xe7\x32\ \xd9\x30\x75\x31\x13\x91\x6d\x89\x0d\xb4\x7a\xb1\xc4\x58\xd9\x02\ \xa4\x54\x99\xa0\x1f\x0b\xf0\x00\xa7\xe4\xfb\x0b\x4a\x00\xae\x4b\ \xe3\x5b\x36\x43\x00\x79\xb2\x32\x19\x12\x5a\xbb\x80\x50\x50\x1a\ \x6e\x5a\x44\xd8\xdb\xdb\x66\xe8\x23\x7f\xf9\x75\xf2\x38\x40\x0a\ \xfd\x7c\x84\xc3\xdf\xfd\x2e\xcd\x7e\xff\x29\x32\x6d\x9b\x2b\x47\ \x6d\x29\xcd\xf7\x57\x44\x37\xf9\xd5\xef\xeb\xc0\x34\x7a\xcf\xc6\ \x8d\x53\x06\xda\x59\x09\x40\xa2\xb5\xb8\x80\x5b\xf4\xfd\xbc\x4e\ \x85\x41\xb1\x48\x65\x04\xc2\xf8\xc8\x3a\x6d\xd2\x0a\x32\x22\x17\ \xb9\x01\xfa\x0b\xef\xb8\x83\x26\x2e\xbb\x8c\xec\x89\xc9\xe5\xc5\ \x89\x96\xde\x01\xe9\xd2\x1b\x3f\x25\x6e\x89\xb1\x51\x7d\xef\x2c\ \xd1\xed\x0a\xd1\x39\x41\xd8\x8b\x26\x91\x75\xa6\xb9\xbf\x1f\x0b\ \x08\x00\x37\x1f\x04\xf3\x4d\x01\xe0\x22\x4f\xc5\x33\x67\x38\x13\ \x70\x5e\x6f\xd7\xa8\x5e\x8c\xb6\x06\x3c\x9f\xc0\x73\xdc\xce\xbf\ \xe9\x26\x65\x05\xd1\xf3\x91\x96\x1b\xc7\x4f\x10\xb7\xf4\x94\x12\ \x92\x16\x60\x6f\xd2\x00\xbb\x4d\x19\xbb\x4f\x07\x75\x48\xd5\x0f\ \xa8\x5c\xa9\x44\xf7\x23\x22\xaa\x24\xee\x27\x0b\x28\x01\x9c\x74\ \xdd\x39\x2d\x80\x4a\xa5\x4a\x65\x6c\x63\xed\x4b\x2f\x21\x62\x01\ \x74\x58\x95\x6c\x19\xc7\xb0\x71\x5a\x78\xe6\x69\x4a\xc2\x5d\x26\ \x7f\xfd\x13\xf4\xf3\x8d\xe3\x24\x72\xf8\x54\x47\x3d\x50\x9f\x3b\ \x43\xdc\x52\x9b\x36\x93\xfc\xef\xe7\x95\xf6\x3c\xc7\x51\xd6\x60\ \x59\x5c\x8c\x1a\x51\x0c\x68\xf1\x7f\xc7\xb2\x69\xc7\xcd\x37\xd3\ \xf8\xee\xdd\x94\x9a\x9c\xa0\x81\x2d\x5b\xa8\x84\xcd\xd5\x0f\xaf\ \xba\x5a\x0b\x40\x5b\x00\x7f\xe3\xac\x4b\x62\xb3\x23\x0d\x7a\x67\ \x1c\x27\x1f\x80\x3f\x2f\x88\x53\x61\x65\x69\x29\xac\x05\x5c\x57\ \xbb\xc0\x8a\xae\x30\xb8\x65\x2b\x15\x5f\x7f\x8d\xe6\xfe\xfa\x51\ \xe2\xb6\xeb\xd6\x5b\x61\x05\x4e\x97\x1b\x94\x17\xf2\xaa\x64\x4e\ \xcf\xcc\x50\x15\x5b\xe1\x7a\x22\x41\x9b\x10\x18\x67\xf0\xfc\xd8\ \x27\x7e\x83\x8a\xd5\x2a\x07\xd3\xb6\xb8\x20\xd6\x8d\xd2\xd5\x88\ \x1f\x23\xcf\xfd\x90\xde\xfd\xcc\x75\xf4\xda\xaf\x5e\x49\x87\x2e\ \xff\x08\xd1\xf3\xcf\x61\xc5\x1e\x2f\x3e\x82\x61\xe8\xb3\x01\x73\ \x0d\x2e\xd0\x96\x09\x9c\x1a\x4a\x62\x5e\x6c\xbd\x56\x23\x1b\x87\ \x15\x46\x12\xd0\x64\x3b\xd1\x9c\x1f\xde\xbb\x8f\x6a\xef\x1d\xa6\ \x93\x67\xe6\x68\xe1\x3f\x7e\x40\x93\x57\x5e\x49\xf1\xe9\xe9\x76\ \x17\x00\x1c\x69\x50\xf9\xf0\x61\x9a\xfa\xd8\xc7\xe8\x92\xfb\xef\ \xa7\x5f\xf9\xbd\x6b\x69\x6b\xad\x44\x5b\xb7\x6f\xa3\x2b\xee\xbd\ \x97\x7e\xf7\xc0\x6b\x14\xdb\xb6\x4d\x93\x57\xc2\xf8\xe8\xe3\x8f\ \x53\xe1\x1f\xbe\x4d\x07\x7e\xf2\x16\xe5\x92\x69\xca\x25\x52\xf4\ \xe6\xdc\x22\x3d\xff\xe5\x3f\xa3\xa0\x9d\xbc\xb6\x80\x99\xcf\x8c\ \x8e\xa6\x0c\xb4\xb5\x08\x40\x67\x02\xb7\x2e\x44\x41\xb0\xbf\xc2\ \x34\x37\x4c\x4f\x51\x0d\xfb\x02\x2b\x91\xe8\xf6\x51\xf6\xfd\xe6\ \x31\xf5\xe8\x85\x17\xaa\x78\x11\x90\x41\x73\x8f\x3e\x4c\xdc\xf6\ \xdc\x76\x1b\x9b\x77\x18\x24\x01\xd9\x44\xf5\xd0\x41\xb2\x90\x5a\ \xe7\x1f\xf9\x16\x1d\x78\xe4\x51\x7a\xfe\xdb\xff\x48\xaf\xdc\x74\ \x23\x9d\xbe\xe5\x0b\x14\x1f\x1a\xa2\xab\xbf\xf3\x1d\x92\xc3\xc3\ \xea\xd9\x91\x7d\xfb\x68\xdd\x79\xe7\xd1\xd1\xe7\x7e\x44\x42\xca\ \x36\x9f\xaf\x5a\xf6\x32\x79\x11\x92\xd7\xb0\xf6\x0d\x0c\xec\x5e\ \xab\x05\xc8\x65\x0b\x08\x82\x25\xa1\xb6\xc5\xa8\x05\x76\x9c\x4f\ \x75\x6c\x86\xec\x74\xba\x4d\xf3\x82\xa1\x83\x97\x65\x71\x90\xc4\ \xf3\xbe\x9a\x3b\xf2\xde\xfb\x94\x7b\xee\x39\x9a\xb8\xe2\x0a\x4a\ \x6c\xdd\xd6\x6e\xce\x40\xfd\xbd\xf7\x88\x5b\x11\xd6\xe0\x41\x60\ \x30\x78\x2a\x26\x53\xf4\xda\x7f\x3e\x43\xb3\x4f\x7c\x8f\xe2\x38\ \x5d\xda\x7c\xcd\x35\xea\xd9\xb1\xcd\xe7\xaa\xa5\x35\x82\xa0\x8d\ \xbc\x86\xe8\x20\xaf\x91\x20\xda\xdf\x8f\x0b\x78\x80\x53\x0e\x82\ \xbc\x3e\x18\xd9\x30\x31\x8e\x54\x38\x4f\x71\xf8\xa1\xce\xfd\xdc\ \xcb\x65\x04\x34\xb4\x79\x33\x39\x88\xfa\xd6\xf9\xe7\xd3\xf0\x47\ \x7f\x8d\x36\x7f\xf1\x8b\x94\xda\xba\x95\xb8\xed\xbd\xfd\x76\x58\ \x41\xa3\xcd\x0d\xea\xcd\x7d\x45\x72\x6a\xaa\xad\x62\x74\x0d\x93\ \x72\x4f\x3e\x41\x68\xec\x42\x6a\xce\x32\x0d\x15\x40\xd3\xbb\xf7\ \xa8\x5e\x10\xb5\x41\x76\x93\x57\x73\xb1\x30\x13\x9c\x9d\x0b\xb4\ \xd6\x02\x5a\x00\xcb\xa9\x90\xb7\xc5\x73\x73\x64\x8f\x8e\xf2\x81\ \xa7\x2e\x75\x23\x60\x91\x23\xf0\xff\x31\x04\xb5\x8b\x2f\xb9\x98\ \x76\x0a\x97\xb2\x2f\x3c\x4b\xf9\x9b\x7f\x9f\x4a\xaf\x1d\xa0\x89\ \xcb\x2f\xa7\xd4\x8e\x9d\xad\x6e\x00\x01\x1c\x0b\x53\x21\x22\x79\ \xe7\x5f\x7e\x4e\x1f\x3c\x48\xaa\x35\x35\x5e\x7b\xe9\x45\x95\x48\ \x66\xbe\xf0\x07\xe4\x0a\xd1\x45\x94\xd7\x68\x66\x32\x5d\x71\x80\ \x4c\x53\x95\xc4\xfd\xb8\x80\xbb\x84\x5a\xa0\x55\x00\x95\x85\x05\ \x95\x09\x60\xe3\x6a\xb1\x11\x42\x52\x59\x14\x3f\x07\xaf\xff\x2c\ \xfd\xf8\xe1\x47\xe8\x85\x1f\x3c\x4d\xaf\xbc\xf5\x0e\xfd\xf4\x64\ \x8e\x4e\xdf\x77\x2f\x71\xdb\x87\x02\x89\x33\x82\x7e\xaf\x78\xf2\ \x64\x28\x80\x6d\x33\x1d\x55\x20\x22\xc8\xba\x31\xe2\xe6\xe7\xe6\ \xd4\xdc\xc9\xa3\x27\xa8\xf8\xc2\xf3\xb4\xfe\x82\x0b\xe8\xa2\xfb\ \xef\x23\xc7\xe0\xc0\xef\xa9\x2d\x7b\x1d\x19\x63\xe6\xfa\xeb\xe9\ \xdc\x5d\x3b\xda\xc8\x03\x4c\x6c\x37\x77\x06\xda\x5a\x04\x10\x00\ \xde\xac\xeb\xe6\x42\x25\x04\x61\x2d\x80\x54\x68\x8d\x0c\xf3\x2f\ \x33\xe1\x08\xbc\x78\x32\x68\x74\xcf\x1e\x3a\x8e\xe8\xef\xe1\x73\ \xa2\xa5\x34\x3e\xfc\xd6\xdb\x54\x7c\xf5\x15\x1a\xbf\xf4\x52\x1a\ \xdc\xb7\x77\xb9\xe0\xa9\x14\x4a\xe4\xe0\x9b\x53\x57\x5d\x15\x1e\ \x8c\xa8\x6f\x85\xef\xc5\xd9\xd2\x30\x97\xff\xdb\xbf\x51\xbd\x87\ \xf5\x1f\xbe\xe5\x66\x72\x20\xb4\xed\x9f\xfe\x34\x7d\xea\xc7\x2f\ \xd1\x87\x1e\xf8\x73\xda\xf5\xa7\x7f\x42\xd7\x3c\xfb\x5f\x34\x99\ \x1d\xa1\xf7\x5f\x7e\xb5\xcb\x15\x70\x3d\x72\xe7\xfa\xf5\x9b\xd6\ \x6a\x01\x02\xf0\x8e\x3b\xce\xac\x3e\x18\xe1\x5a\xa0\xc6\x47\xe4\ \x99\x41\xf6\x95\x76\x0b\x10\xf0\xff\x6d\x5b\xa9\x7c\xe8\x10\x79\ \xbe\xaf\x49\x2c\x9b\xb5\x83\xcf\xcf\x7e\xf3\xeb\xc4\xed\xc3\x5f\ \xbd\x87\x5c\x37\x14\xa0\x4f\x52\xbd\x93\x04\xd9\xf1\x4f\x7e\x92\ \xaa\xa5\x32\x79\xae\x4b\x55\xa4\xdd\xf3\x6e\xb9\x85\x16\x1e\x7b\ \x98\x0e\xbe\xfe\xc6\x32\x99\x83\x85\x0a\xfd\xec\xea\x8f\x53\xe9\ \xbe\xaf\x92\x3c\x7e\x8c\xa6\xf6\xef\xa7\x2d\xd3\x93\xe4\xdf\x73\ \x37\xbd\xf9\xb5\xaf\x93\x6f\x9a\x7a\xf1\x6d\x41\x71\x5d\x22\xb1\ \x6f\xad\x7f\x1a\x93\xcd\x2d\x71\xd5\x05\xe2\x52\xa6\x6b\x58\x54\ \x06\x0b\x75\x0a\x4b\x2a\x15\x7a\x22\x68\x2b\x03\xc7\x90\xfe\xaa\ \x47\xdf\x57\xd6\x80\xd6\x7e\x26\x80\xf6\xb3\x67\x7f\x44\xd3\x48\ \x8f\x9c\xca\xf6\xdd\x75\x17\xbd\xf9\x8d\x6f\x90\x84\x4b\x79\x20\ \x22\x2f\xba\x88\xae\x7c\xe8\x21\xda\x7b\xe3\x8d\x94\x3b\x70\x80\ \x86\x51\xe1\x89\x27\xbf\x47\x2f\x3e\xf1\x14\xb9\x76\xac\xad\xbc\ \x3d\x58\xf7\xe8\xc8\x63\x8f\xd3\xc8\xb7\x1e\x26\x5b\x08\x95\x02\ \x17\xe3\x49\x68\xda\xea\x8a\x0b\x7a\x6c\x87\x99\xe0\x9f\x01\xd9\ \x4b\x00\xdd\xc5\x10\x6a\x81\xb4\x10\x69\xce\x04\x93\xe7\x9f\x87\ \x5a\x60\x89\x62\x48\x4f\x75\xc4\x04\xdd\x1a\x8d\x3a\x4d\x5e\xf3\ \x5b\x34\xff\xfa\xeb\x54\xc4\xbe\x61\xa8\xb9\x17\x90\xa1\x10\x54\ \xae\xbf\xf0\xa1\xaf\x91\x09\xed\x96\x9f\x7d\x86\x26\x93\x71\xca\ \xde\x74\x03\xfd\xcf\x93\x4f\x51\xee\xa1\x07\xe8\xc4\x1f\xfd\x21\ \x65\xb0\x75\x8e\x65\xd2\xe4\x97\x2b\xf4\xf6\x99\x59\xca\xc7\x07\ \xc8\x67\xf2\x11\x21\x2d\x04\x95\x25\xe6\x70\xbf\x93\x28\xb0\xe2\ \x1c\x59\x96\xca\x04\x6b\xb6\x80\xa6\x00\xb8\x16\x98\xe4\x6d\xf1\ \xae\x5d\x3b\x69\xfe\xf8\x49\x8a\x83\xa0\xc0\xde\x80\xdb\x10\x0a\ \x94\x4b\x60\xae\xe9\xc1\x0c\xc5\x21\xa0\x8f\x3f\xf8\x00\xbd\xfc\ \x95\xbb\x49\xb6\x1e\x93\xc3\x75\xe6\x6f\xbd\x99\x8e\xc1\x35\x1a\ \x56\x4c\x11\xf0\x0d\x43\xf5\xa7\xf8\xbe\x95\x20\xca\x17\x49\x02\ \xdc\x64\x22\x15\x2d\x7e\x05\x82\xd4\x83\x78\xe7\x9c\x85\xb3\x81\ \x66\x20\x14\x12\x6d\x2d\x16\xe0\x56\x5b\x6a\x81\x61\x90\x3c\x82\ \xa8\x3c\x9e\x5d\x4f\xf4\xee\x3b\x61\x9e\x7d\xfb\x4d\x3a\xf5\xd9\ \xeb\xe8\x10\x4c\xdf\x33\x2d\xf2\x2d\x8b\x84\x1d\x6f\x3b\x30\xf4\ \xd0\x1f\x89\x0d\x10\xd9\xd1\x66\x08\x2d\x1c\xb7\x12\x5b\x85\x24\ \xad\x4e\x94\x5b\x4f\x4b\x00\xf1\x2d\x9f\x1a\x19\x49\x7f\xbf\x50\ \x28\xf6\x0a\x82\x51\x2d\x10\x15\x43\x8b\x3a\x13\x70\x2a\x2c\xcf\ \x87\xa9\xd0\xf0\xc2\x8d\xca\xbc\xe3\xd1\xfb\x20\x37\x8b\x0a\x2e\ \x1f\x4b\x50\xd1\xb4\x5b\xff\xd5\x46\x74\x4c\xa6\x7b\x29\xdb\x76\ \x6c\xa2\x63\x8c\x45\x33\x74\x00\xeb\x0e\x6a\x8c\xee\x0a\xb0\xbd\ \x28\xd2\xcf\x46\x73\x26\x4a\xe2\x3d\x6b\x75\x01\x7d\x30\xb2\x5c\ \x0b\x38\x5c\x0b\x14\x8b\x64\x73\x7d\xce\xa9\x90\xba\x1b\x18\xb6\ \x7e\x64\xf5\x71\xb7\x06\x3b\xe7\xba\xdd\xa0\xb7\xd6\xf5\x7c\xd7\ \xb5\x1d\x8f\x73\x20\x7c\x11\xe8\xe1\x02\x1d\xe7\x02\x8b\x41\x90\ \xd3\x02\xa8\x54\x6b\x61\x2a\x5c\xb7\x8e\x4c\xbd\xb7\x5f\xa1\xc9\ \xce\xeb\xd5\x84\xd0\x69\xe2\x9d\xcf\xf7\x70\x83\x68\xae\xb7\x1b\ \x20\x0e\xb0\x00\x8c\xb5\x58\x80\x00\xbc\x13\xa8\x05\xd0\x87\x9b\ \x17\xd4\x02\x75\xd4\xfa\x6e\xa9\x44\x16\x6f\x8a\x5c\xb7\x9b\x70\ \x2f\xad\x1b\xc6\x2a\x82\xe9\xd6\x78\x37\xf1\xfe\x83\x22\x22\x60\ \x5b\x20\xec\x21\x80\xc8\x0d\x4e\xe3\x60\xc4\x97\xd2\x8f\x49\x69\ \x73\x2d\xb0\x1e\x1b\x9e\x06\xbb\x01\xb6\xab\x62\x61\xa1\xb7\xf6\ \x99\x70\xff\x6e\x10\x8d\x7b\xb9\x41\x8f\xe7\x41\x5c\x95\xc4\x3d\ \x83\xe0\x4a\xbb\x42\x6c\x41\x8b\x3a\x13\x6c\xda\x79\x3e\x55\x51\ \xbe\x26\xb2\x59\x0e\x34\x5d\x90\x8c\xd6\x6b\xa2\x5e\x41\x6f\xd5\ \xe0\x26\xa3\xfb\xd1\x35\xa3\xc7\x0e\xb0\x2b\x28\xe2\x1a\x02\x18\ \xbc\x6d\x62\x62\xf3\x1a\x04\x10\x05\xc2\xba\x10\x8b\xfa\x88\xfc\ \x5c\xe4\xfa\x2a\x34\x9f\x58\xbf\x5e\x9f\xf9\x77\x47\xeb\xce\xb9\ \x55\x48\xa9\x7e\x35\x01\x75\x13\x8f\xc6\x2d\xef\x8a\x1e\x31\x80\ \x5a\x2c\x70\xd0\xb6\xf7\xaf\x49\x00\xda\x02\x50\x0b\x2c\xc1\x6d\ \x54\x0d\x9f\x42\x55\x57\x99\x9f\x57\x81\x90\x84\x68\x27\xbd\x1a\ \x71\x4d\xb8\x9d\xd4\x4a\x7d\xf4\xdc\x5a\xac\x81\xe7\x7a\x90\xe7\ \x16\x37\x0c\x15\x08\x7b\x06\x41\x89\xc6\xc1\x42\x97\xc3\x95\xd6\ \x73\x81\x7c\x3e\x4c\x85\xd8\x17\x18\x52\xf2\xa2\xd6\x16\x08\xf5\ \xb8\x67\x36\xe8\x5d\x10\x51\x0f\xad\x77\x36\xcc\xee\x69\x2a\x5b\ \x9c\x75\x10\x04\xdc\x12\x04\xa0\x8b\x21\xa7\x50\xa0\x7a\xa5\xc2\ \x16\xa0\xbf\xd4\x3b\x10\x76\x8d\x35\xe9\xde\xd9\xa0\x37\xf1\x6e\ \x61\xea\xac\x85\x8d\x9c\x82\x0f\x38\xbe\x2f\xc8\x34\xe7\xf8\x09\ \x6e\x12\xad\xa7\x00\x74\x2d\x50\x68\xad\x05\x2a\x55\xaa\x3b\x0e\ \x79\xd5\xaa\x3a\x29\x16\x98\xa3\x5e\xda\xd7\x56\xd2\xcb\x12\x7a\ \xa4\x41\x5d\x56\x2b\x62\xf8\x5d\x0f\xbd\x27\x84\xf4\xd9\x5a\x13\ \x89\xc0\x1a\x48\x0a\x3b\x95\x96\xf6\xf0\x90\x4c\x8e\x8e\xd1\xe0\ \xe4\x84\x1c\x9d\xde\x44\x53\xbb\x76\xc8\xbf\xb8\xf3\xcb\xd7\xfd\ \xdb\xbb\xef\xbe\xdc\xb3\x0e\x58\xf1\x60\xc4\xf3\xe6\x5a\x6b\x01\ \xe5\x17\x70\x83\x18\x52\xa1\x5c\x5a\xea\x26\xdd\x87\x1b\xb8\x4d\ \x8d\x79\x00\xf7\x0e\x88\x41\x63\x81\x88\xc7\x03\x23\x91\x10\x46\ \x26\xc3\xff\x78\x52\x9d\x1d\x0c\x8c\x8f\xcb\xd1\xc9\x49\x63\x64\ \x7a\xda\x1e\x99\x18\xb7\x6d\x3b\x66\x99\xf8\x9f\x6d\xd9\x14\x8b\ \xc5\xc8\xb6\x2d\xf4\x71\xe2\xeb\x64\x32\x49\x43\x58\xe7\x79\x93\ \x93\x15\x08\xa0\xce\x9c\x7a\xd4\x01\xdd\x81\xf0\x78\xa3\x31\x2b\ \xf0\x8e\xfe\x23\xc9\xe4\xf6\x19\x6a\xa0\x18\x4a\x8e\x8d\x91\x80\ \x00\x56\x7b\x11\xef\x68\x2d\x69\x73\x64\x0d\x0a\x11\x12\x63\xad\ \x09\x99\x4a\x49\x2b\x93\x31\x6c\xa4\xd5\x01\x6c\x89\x33\xe3\xe3\ \xe6\xf0\xf4\x94\x99\xc9\x66\x6d\x32\xd4\xc6\xc2\xe6\xe5\x5a\x96\ \x45\x71\x45\x0e\x24\xe3\x71\x35\x8e\x27\xb8\x8f\x87\xa4\x63\x98\ \xb7\x63\xfc\x9c\x7a\x06\x02\x61\x01\xa8\x67\xd2\xa9\x34\xed\x3f\ \x77\x52\xe9\xad\x67\x29\xbc\xd2\xae\x10\x59\xa0\x02\x12\x15\x14\ \x43\x19\x95\x0a\x77\xec\xc0\xb6\xf8\xb8\x0a\xa7\x8b\xb5\x5a\xe8\ \x67\x78\x36\xb0\xac\x40\xc4\x62\x42\x26\x12\x52\x0e\x0c\x48\x99\ \xce\x20\x58\x8e\xc9\xc4\x86\x73\xcc\xd4\xf8\x46\x63\xdd\xe4\xa4\ \x3d\x38\x3a\x66\x41\x55\x26\x2f\xce\x34\x94\x43\x92\xc9\x8b\x06\ \x4c\x1e\x9b\x26\x19\x80\x26\x8c\x7b\x21\x69\xc0\x62\xe0\x1e\xae\ \x19\xea\x59\x0d\x7d\xe4\x87\x79\x7e\x57\x83\x05\xa4\xe6\x26\x92\ \x99\x18\x6e\xf7\xda\x0e\xaf\x9e\x0a\xf9\x8f\x24\x49\x21\x32\xae\ \xe3\xd1\xb6\xa9\x29\xf9\xea\xf1\x13\x1e\xcd\xcc\x48\xfb\xe2\x0f\ \x1b\xa3\x9b\x36\xd9\x03\x83\x83\x26\x7e\xc8\xd4\x0b\x64\xad\x60\ \xac\x34\x80\x59\xb2\x15\x19\x73\xf9\xf8\x1b\xd4\x31\x0e\x78\xcc\ \x8b\x57\xe0\xb5\x99\xfc\x0e\x34\x0c\xe8\x39\x75\xf8\xc9\x82\x37\ \x00\x7c\x97\x63\x11\xf7\xfc\x0c\x93\x0c\x85\xd8\xfc\x5d\x34\xbe\ \xd6\xd9\x2c\xdc\xc5\xd6\xeb\x6e\xcc\x94\xa9\x35\x9c\x08\x75\x67\ \x82\x1a\x8a\xa1\x11\x29\xa7\x38\xf2\x9f\x29\x14\xbc\x89\xcf\x7d\ \x1e\xe7\x22\x23\x94\x49\xa7\x40\x32\xc1\x0b\x51\x84\x41\x45\xbd\ \x26\x98\x8c\x8e\xe2\x18\xa3\x0f\x17\x69\x59\xbc\x78\x8c\x2d\x40\ \x11\x6c\x03\x04\xa2\xc7\x9a\x84\x7a\x3e\x11\x5a\x85\x26\xac\x35\ \xdd\x9a\xba\x59\x30\x3c\xd7\xf6\x0d\xbe\xae\x17\x8b\x65\xcb\x13\ \x99\x35\x6c\x87\xa3\x5a\x40\x5b\x40\xa5\x79\x2e\xb0\x1e\x01\xe5\ \xe4\x9e\x7d\xd6\xa6\xe9\x69\xca\x8e\x8d\x92\xdd\xd4\x34\xb1\x16\ \x0c\x93\x3b\x6d\xaa\x9a\x44\x44\x8e\x11\x04\xbc\xd0\x30\xa5\x3a\ \x2e\x6b\x57\x2f\x58\x43\x9b\x34\xa3\x6d\x8e\xdf\xd1\x42\x40\x6b\ \x8e\xb5\x40\x57\x2e\xf3\xf9\xdb\x8d\x7c\xbe\x4a\xc2\x4f\xb3\x71\ \xf4\x6b\x01\x2c\x00\xb5\xf3\x09\x3c\x4f\x66\xa6\xa7\x51\x06\x8c\ \xd0\xf0\xf0\x30\xff\x78\xf3\xbb\xa1\xf6\x74\xbd\x00\x62\x7a\xcc\ \xe0\x7b\x0a\xda\x2c\xd1\xba\xc9\x47\xd0\x1a\xe6\xbe\x6d\x0c\xa2\ \xda\x0a\xf8\xdd\xd0\xc4\x9b\xbb\x52\xad\x71\xfd\x8c\x16\x4a\xe5\ \xf4\xa9\x1a\x1e\x4c\xaf\xc1\x02\xba\x53\x61\xc9\xf7\x95\x00\x6a\ \xae\x1b\x0c\x25\x93\x76\x22\x9e\x20\x5d\x1b\x60\x31\x6d\x64\xb5\ \x00\x22\xd2\x91\x70\xb4\x56\x5b\x7d\x94\x7b\x4d\x46\x2f\x5e\x9b\ \xb4\xe3\x38\xfa\x0f\x20\xda\xf4\xbb\x02\x1d\xe6\x75\x1c\x50\xdf\ \xd1\xef\xeb\x00\xb9\xf8\xea\x2b\x0d\xc3\xf3\xfa\xb6\x00\xd1\xfc\ \x17\x23\x73\xfc\xb6\x67\xdb\x42\xfd\xa8\x69\x68\xcd\x6a\xad\x69\ \x82\xda\x2c\x79\xac\x89\x30\xb4\x50\x34\xda\xde\xd1\x66\xaf\xef\ \xe9\x6b\xf4\xfa\x5b\x3c\xcf\xdf\x60\x8d\xab\xf9\x0c\x6a\x83\x81\ \x81\x01\x95\xeb\x13\xcd\x38\xd4\xd9\x1a\xa5\x62\xc3\x39\x72\x78\ \xc4\xf5\x7c\xd9\x87\x05\x44\xa9\x10\x07\x23\x67\x78\x11\x3e\x56\ \x8d\x42\x43\x93\xd3\xd2\xd7\x5a\xd4\xda\xd7\x64\x3b\x03\x9b\x16\ \x4e\x9b\x26\x75\xd3\x04\xb5\xf6\xf4\xb3\x3a\x23\x74\xb6\x72\x3e\ \xef\xce\xbe\xf3\x4e\x3d\x7f\xf4\xa8\x53\x3a\x79\xc2\xaf\x9e\x99\ \x95\x41\xa1\x60\x58\x8d\xba\x3d\x20\x45\x7c\xc8\x8e\xa5\x32\xa9\ \x64\x32\x96\x88\x0f\xbf\x9e\x5b\xfc\xd7\x3e\xb2\x40\x94\x0a\x4f\ \x39\xce\x82\x90\x92\x3d\x3b\xd0\x8b\x6e\xd5\xa8\x16\x82\xd6\x1a\ \x34\xd2\xb5\x68\x5c\x6b\xb4\xa5\xaf\xd6\xc6\xef\x71\x2b\xe6\x72\ \xce\xe9\x23\x47\xea\x0b\x47\x8e\xb8\x85\xe3\xc7\xfd\xf2\xe9\xd3\ \xd2\x59\x58\x30\xfc\x62\xd1\x36\x1a\x8d\x44\xdc\xf7\x53\xb6\x69\ \xc6\xf1\x8d\xb8\x0a\x90\x86\x51\x0b\x4c\xa3\xe4\x1a\x0a\x05\x60\ \x09\xa2\x9c\x43\xd1\x75\xe8\xe9\xd3\xb3\x4f\xbe\x9d\xcf\x1f\xeb\ \x57\x00\x3a\x13\x34\xea\xbe\x5f\xf2\xa4\x8c\x6b\x72\xda\x84\x5b\ \xcd\x55\x43\x13\x5d\xa9\x15\x66\x67\x9d\x1c\xc8\x2d\x1d\x3b\xe6\ \x2c\x1e\x3d\xea\x57\x67\x67\x79\x97\xb9\x4c\x2e\x21\x44\xca\x84\ \x2c\x08\xc0\xef\x35\x1c\x29\x4b\x7c\x28\x83\x5a\xa4\x58\xc7\xd6\ \x9c\xff\x0d\x63\x59\x88\x7c\x01\x9b\xb4\x3c\x14\x73\xd4\x75\xe7\ \x30\x5f\x67\x57\x65\xe8\xcc\x05\xd4\x80\x02\x50\x0c\xe7\xfb\x17\ \x80\x0b\xd4\x71\x40\x7a\x6c\x7c\x71\x71\x47\x12\x02\xb0\x59\x83\ \xb6\xdd\x45\x12\xe4\x1a\xb9\x43\x87\xea\x79\x90\xc3\x5f\x7f\x83\ \x0a\x6b\x0e\xe4\x44\xa9\x14\x53\x9a\x13\x22\xcd\xe4\x02\x64\xd9\ \x86\x10\x7e\x43\xca\x4a\x93\x9c\x22\x56\xf1\xfd\x7c\x11\xc4\x16\ \x7c\x3f\x87\x12\x7c\x1e\x3b\xd1\x32\x13\xea\x20\xc7\xf0\x5b\x10\ \xb4\xf7\x7a\x1c\x3d\xab\xab\xc0\x1e\x02\x58\xb5\x16\x70\x80\xd2\ \x7b\x8d\xc6\x4b\x9b\x97\x96\xf6\xbe\xf4\xe0\x83\x8b\x89\x7a\xd5\ \x3c\x35\x9f\xaf\xe1\x80\x54\x82\x9c\x6d\x36\x1a\xc9\x18\x8a\x5f\ \xfe\x16\x6f\x64\x80\x3a\xff\x59\xad\x2e\x65\xa1\xe6\xfb\x4b\x15\ \x68\xac\xe8\x79\x0b\x8b\x38\x66\x3f\x89\xcd\xd5\x82\xeb\x96\x34\ \xa1\x3e\x88\x31\x04\x20\xcf\x06\xdc\xfa\xfe\xbf\xce\x42\x00\x26\ \x85\xe6\xb8\x11\x52\xda\x7e\xf3\xe4\xe4\x1f\x6f\x4c\x26\x77\xa7\ \xd2\x29\xff\x8d\xb9\xdc\x4f\xaa\xa8\x0f\x4a\x40\x1e\xc4\x70\x80\ \x9a\x3b\xe3\xba\x8b\xdd\xa4\x80\xde\xa4\xb8\x17\x8c\x1e\xe4\x28\ \x1a\x77\xb7\xd5\xc8\xf6\x2b\x00\x2d\x04\x1b\x5d\x1a\x18\x05\x86\ \x81\x18\x20\xce\x46\x5b\x6b\xd4\x18\x7d\x30\xc4\x3e\x78\x01\x18\ \xe8\x2c\x26\xde\x84\xa1\x6b\x84\x5f\x2e\x62\xfd\xb7\xff\x05\xc7\ \xfd\xe7\xdb\x23\x5d\x13\x38\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x0d\ \x0b\x34\x2d\xe7\ \x00\x61\ \x00\x6b\x00\x72\x00\x65\x00\x67\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0e\x95\x57\x87\ \x00\x6b\ \x00\x33\x00\x62\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x01\xad\xab\x47\ \x00\x64\ \x00\x69\x00\x67\x00\x69\x00\x6b\x00\x61\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1a\ \x08\xdd\xe1\xa7\ \x00\x61\ \x00\x63\x00\x63\x00\x65\x00\x73\x00\x73\x00\x6f\x00\x72\x00\x69\x00\x65\x00\x73\x00\x2d\x00\x64\x00\x69\x00\x63\x00\x74\x00\x69\ \x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ \x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x33\x2d\ \x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x40\x37\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x13\x0d\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/animation/appchooser/digikam.png0000644000076500000240000000640612613140041023327 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î< ƒIDATxÚí›[hUÙÇ×IN¢&&ã51^ÆT­—J•)8Ä"¶ÌsŸ*ôa^|Ä }(øTJ¤OöQ RNA”úàýÖª^Æû5Qc.FÍÅ~¿ ¿aÏ1’ŒƒÁ,Xì½×Y{­ïû÷µ“ÂëׯÓÇÜ*¢0À8ãŒ0ÀGÚŠAÇŽÛS]]ý³iÓ¦}ᘭ­­í•••óW¯^ý‹rí÷A$BÛ¶m[P,ÿ·ŸÍž=»eòäÉ“‡6¯¶ÁK—.ݼÔÑÑñ·½{÷ÓlÙ²å³úúúÃ!õª! ,ÒÛÆ„týúõC¿Ù³gÏ«±d2ÿËšššC!„âË—/‡cxȱ–––õ×®]û&5–œ  ü³¿¿?B‘ªªªR˜=»·;nŸ8qbÆ< Ñ›ššÖoذaݘҀ͛7ÿ9˜iìëëKÏž=K<@¥G \ '™“­®®î¯qùt¬³_óHïž-Z”Âù¥çÏŸ#eç¤ÎÎÎÔÐÐ1üôéÓ4iÒ¤túôéôäÉ“D ÿ‘hS¦LùùÆ‹èÿàØ´iSu´éq Ãxö´jÕª4a„tãÆ4kÖ¬têÔ©ÔÚÚšæÏŸÃ`ºzõjZ¸pa:{ölöNww·æh•/^¼ØKþýƒˆÛ·oo|ôèѺ ¼?ˆÒ[1sæÌßÞ¹s§+ˆžcÓƒà„BÄ÷wÑ¢L3Ì „[·ní ÙO8~4Öü÷‰'¼~mÅŠ•ÁTm0ÓzæÌ™ß¯Y³¦9}ÒhºpáBí²eËÒÝ»wÓÔ©SSWWWzüøqFl„­Ä¾Ø>  ¨ž~Ä Ma(fÃýåË—ñ˜û¼­ºNô===ÿÚ¿ÿ‰˜38bvìØ±ôæÍ›_ÅmËâÅ‹oÖÖÖÖ¡‹z{{[ÏŸ?ßÈ&¨$’„QÀcóŒm¿zõÊ®'wi¤Î8DÒ™ÏL -hQ x?cØçzŠè‚ù>~"Û;èîlooÿ&öý2æÜ€Ý»w£‹¿{øðá_Ž?>;Ôˆ— 7áy‘ÛßxFBtkàÐdž=`Œ{®ùnó=¯¬ë•yç Åú8OüHægB®=zô“7صkWMØÐסªëb’L²ÆØ»…8 6†9Î -0Æí#€.“yXˈàï‡f˜VÜÓûÃ$ëoß¾Ý[ô…;w¶D8ú6T¹–Г'd‘ãaóiîܹ)^6–0‰Ëæ`äê? Öæú%j€û9Κ9@‡Ô;Ìñþ z`V B«$ëÃý _°oß¾ÆÊµ(2ªd:ϼ×Ùó àeˆÐ†é‚aþ†]j YØÈí/^¼hH‰>i²/„ëé2‹ôU[æ@kàðXƒˆÃ< &SëaSì¢*ô®M/k…¤JÓVœ &‘ sЃká±Ñóa]hEs¸G ™ã€ó¼‹C%Ÿڇ L Â`ÀQHU…P}GF\aÁ1ò ³ A ÒMíƒ1Ö¥”ÆyZ³G6~ÿþ}œì°õ> •»i2F˜Šc+31M F¨à2‚—,YB±Ä_iFˆ´a¦Y†ŽèÓ\qЬɕuÃTL³âýk€›Ú°GÂ(@¬!’+¶9æáæ æ!&/ú}’v8€‚ƨ%ŒúX­Ö”³&!PµAÔ¿”yT‚‘&~@Mä#Šyˆé0s`Ô¹ÌC[ä9 yÇm 0cc%DƒY€ ¤M¹Š­2fJŒd5ÏdÎȘ ŽÕˆ÷ÔC&š…aÑÒã6†pJ„¯|¦ñ„]=9 èÔ°a£ 1nx†yÞ±à¡>ŸÁ´{QgpÿV'XV QšêŽšçUÒ:(À¸gŒ1¦¸ûÍô<Ïú‹šÙ¢i5`Ð ›hûŽªh«JÑ1˜pûC8ëáq`óf,IMÓ>IBÝ»o£)0l`Þoê«„‡ÊÉ1Õ|âýú€JµUõ©>ÊØ‰u“SýìȦ8Ï÷\Ãîþv5 °Þ Ü> O@¾¢óÞLÐï0ë\û÷1¿§7u„êwµ·¥î¶öÔj[eÀë­´eAðœ2>Ûq@+ÐÌÉ;Bµ„=GOLG‚gñh‹1™öÐÓPyk«Aßñìš© 9ó\Ð3J€õÓæó£u bý¯óÓ `ÊjM!@òGƒ!‹¤í<Ã'_w”JÙæ5 ýBàXŒßF×XÏë„Tw+@˜2´t6ò›E‹RaD_ªÑO•÷3 <)jnn6íU ÃEë…|܃Nóz1ôá aTÓÞ¡ög×Ô!ZL±'ctÖÀùúˆà q¹À¡i¿flH õÕWÀ¸ÞÞR×DJ¦Js UÞ"'Ÿ yb„ô1»)l1P®aÑrT6ˆ³. Tç¬Ý#q¥jm`FI·¶'ùñT)ÿuŠwùÖÀ¼µk×rì¦é$ù.!ÝÞ‡4ððÍŒîmZ€-*9»ÇÞç‡ ñKާºŒpÆSÅñ9kȘï mc=+N*@Öö=@õ¼º  oùÛ[ÿíǶ|õ¥½êýÙÀßJ›NQH¢ói34ÑyŸdÇFægh3)â}K]øî»ï†"YÑгIþ[Œ›dZlÊ"ùØ›¯ëí,nMa~¨(¸ìn굤y†ï‘Øpi¹f‚Ïð ¶çƒ#1WýÇ…øû†/c¨­Rêoy(_ï_Xƒ2âUâe/?D|Ïòi®Íø>‚&8•èÔXczÐP¿W€>öˆñ¾¸¼ˆ©ÃA>  ~lƒÐ:œ.E8þ:Ö»À)~!þö~R,¼:Töó@wYüðþÌùyÉKg4 ¾¶t$ˆø_¼Û™ÞOsÃB´×eÈO´ïEqú: ñ÷}Óí–`fn<ƒ~}AýÊïH²{ú`ܳP{̹×§il4@ì#hã}šB™lôšè¢úëµ@g!TDÅ4†Ûø¿Î¦4þ_cãŒð·ÿ ä×bcÚIEND®B`‚PyQt-gpl-5.5.1/examples/animation/appchooser/k3b.png0000644000076500000240000002003412613140041022372 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME×9()‘|©IDATxÚå› °\W™ßÿ·÷½_¿ýéé=IÖ.ÙÚ,yÁxÀvBÁd BeN±„x\ÅUI*TH*ÃU3C*®!ž&C€Ø² xÖ%k±õ´=k}ÒÛ·Þ·Û·ó;§»5 °JËŸÏí»œw¾íÿ-÷´þÿ8¯çßY³f¯««Ë×ÛÛk)‘H8ÕjU¹\Î[XXð–——½ .xÙl¶) ú-@$ñmݺ5°{÷îøÝwß½µ¯¯og4]Ïùu~¿¿×qœoòi4Cc¦\.Ÿ*‹ãÓÓÓû¿ýíoŸKÁ`PÜgÏW* …I¬áÙ©©©o=Êç[ßúVÞXʯRίJÛ×_}ôŸøÄ®mÛ¶}4Nß Ó)ÃU©TR¦jµšÜz½%¡@­•À¼B8U*•²å¸Îý‹‹‹ó333ÿ{llìÏ>÷¹ÏONNºF¿n87nŒ~úÓŸ¾yÇŽ”ÉdÞâçÓÆ¯U,TáØP*#È ¢Ž X‚áÞç8ò C †B „Cò›cÆh<®ž¾>õA!®---Õ/]ºôÍ#GŽ|–¿{"ŸÏ»¿ à‡?üá‘÷¿ÿýÿ~hhè˜pM[ÆK0n(»¼¬…¹yÍÎÍjnvVK‹KÊæ²Ö:ðI úüŠ„‚JÍ'êJ§Õ•éV*Ó¥h*­P"®p,¦n„0¼r¥bÏÎΖϜ9óÅo|ãŸûú׿¾,É{½àŒŽŽÆ¾ô¥/½cÏž=Љ]Öx>¯LOOMéü¹ó:söŒ&&&4óør‡qkúÂ=£}Iǧ øEˉHTÌ¿¯§[ƒƒƒê_±BéE3…ÍyέZµJÂrÎ;÷êÁƒÿõ'?ùÉç]>¯µ|·ÜrK÷—¿üåÿ@Hû·f혠 PvqQ.èÄñ;~LhÇ2^.–ÔÛÛ£•+†ÕÇØÝÕ¥X$¢0¾Þlx¸§ \ZXÐüô 4`šŠà)\ ¿§G+VkÅêÕÊŒŒ*ÚÛ«8Âå{_¿À†*Øð|ðÁ/ã"•×Jþ·¿ýí+>ÿùÏÿZ¹`²ŒçÐìäÅ‹:úÊ+:ðÒK:~ò¤f¦¦ñÙ^mÛºU›7mR"‘¯éÉïµÈ1ób„¬E4 qìr_µZ³sž>vL Ñ€c³ï‡ñ•0½býz¥V*Â÷\bõu×Y E_ùÔ§>õàÉ“'‹?/@ú^æ?ð¬ùÌg>óHÿ&DåÛ;16¦þð‡zâ?ÐË/¿¬õÎwÜ£»n¿]סõ ¾ÄTÓjQªCœKJJtˆsqÆnçZo2¥uÖik¹°°¨/ò7kKKòUª ˜JÝU®„•»n¸á†­XÄcçÏŸ¯þªà¿óÎ;W~ö³Ÿý_Äõ[ гŸÃL_Ú@=¾WÏ>û¬\|û½¿÷{ºãoÔ À•§ÓN‡é³ ¤¤¨1ñ&$™âœ¡˜½Æy¬"&\·n½ºÄüô”ªhºœË«º¼$‡µ„ˆ Ÿ£<Ç\!l£6îÛ·ï»àRý—€0×ÿÐC}…‰ïĬÙO]º¤çŸ^ÿ÷±GuèàAíÚ±CÿüÞ{µ²§WéãWh8 …a ¯WÆŒþ¦ F¯uì3Çöº!)Èäñœ[;Á"ª3sª±†Z‰ÐJD±Bð3#––Œ»JBæ&²ÐïÿûãZî?Vy{êá‡þÏk×®½Xn23MÃüŸ{NíÝ«³§OëÝï|§nÛ½G]€Z†…tY¦a¶Í¤E|3¿oB7m$hjŸw콌áX0l2YÝZÏðš jNÝBŽ0ZS=W@e,!ˆ¤#*ÖjÖXû.’³e„°_Ìþ €¸ù¾pïm·Ýö_<Ì[³áù´÷ñÇuÄ¿ï÷_ G]øbÍã×v‘!hiµÍX›©¦eš±}¬ö±ÚÇºêØŽ¬ÃS @:žBEÉ)×5´ö:5–Á7'§î"„¢ü`B°m! •ä ¿CŽò.:!füEà§€Ùô‘|ä¯@à¤Éè– s@óë($ÇmXRƒCVƒüUÃ4t%óÖ±q ¯Ó‰Ì›s–<¨óŒ¸¿Ñ,+ê•Ï Qÿ³× ÆúrN«o¼IÉá^%¸ ÏWuOŸUAÔ³9ÍĮ̂»»;zë­·þ‘¤ðÏ@àCúÐ0™Û óµr°›Ð‘Ç4KNÿOÞ|‡’†Q(…xšåKVã®e2’LjhËfVÇ :ÌsÀù€†wnSzh¨ã!]½ö35¯¦hº[øÈ5VdV«*FjÝ{ývÒëwZ]MÀº<²È 4%øÊ•+ßsß}÷mäüTP‹'ßö¶·ÝOï3åÉÀÆOžÐÒÛ5Ã+µ²;£d‡yäs¦–j4sü$~X±LSÚ⫤À}½W¹Cr ­ä†!…!û½hMyE.¾ÆmšŒ÷¦%ækª~ùš×S_hCáÔ½y»ÂqŠ),/dÂ-¹&§äRŒ %.’=Ò£Ý~ûí5lþؤgÕððð›mÓšE’ãÇ+73«=Û·+ᵘ{m4®ÔD 3n¨’]Ö¥#GT^Zj#»ÔCÞÞ 68Ž×X­®õƒr–6+¤Òç_xAYòŠ+5ëY`l ÃO|ö­’È n8Wcîš‚1O‘• ¥F7*>0Â÷ eÆ/YÅ€Žj^¼d± Š@\ÎêïÓ?M¡ûï¿ÿÂ^ÌÜ\ý/ž;§KPhº²¯Ï21ɉõA4Xª,Êok59^,¿`Ý2'=ݽKÉ]*ãï1ÂÔòĤ.ìÛ¯j¾Ð6ýF'b@®%¾[l©sêÝ,gx½jñªêáyñ¬ºnZ£þ7¿ÜYXÂ8@éHÍ*­æ˜¯?/ó“¾+èÿØÇ>ö–+ùtL¼_·nÝ?µý:È€ßÄÙsÊÏÍi#‰a>jÒR™,ÍÿÁ°ñ9O5¿ƒ–bÝ6~/ò\yiY}ëÖÊG/X*)Ú·Z /=¥ì‰9î½::t¢‡ë•äsLV€FIaú¬b=ê¹î5†×©^)Ú{Ó<ë„T/ÍkùÌù8¾ª¼u"ccrR>\³)‹.´FFFî‘ô·PõJøèëõQìlC¶F_šŸ× À犄yOà} ôÔ§*K•LB=#a’‘¸l… ¨%úûY\U â}”’6hÒeªD íL‹i›½Ë¼ôÊ%‚CjT)tf/¨Ð3È<+i“™+m@o !VU¼ôŒÊó˜,puªgÀµ„0—³ªÓ‘ fº,’"ß*)~Þ÷¾÷í¤ç–2u~¿^dñ¹ù9…x¨/•´¦¸Bû£DNŽeôÓÌTªæ€Ì-!HV-Í:…2×Y»Kv÷®&aüïµlÐÀ×Á§.©Æ\B EÎØÑô J¯$ÄÊi'W.eòi'žCkWI€c8–C[£?Û¸ÑâU2™}ï{ß»–VÚ’¹«ã ÁÍ›7ïhXàñlsyvNUâhŒïi6ÈõuÚ5äZr+g³08HÒâZÁâûhÇø±¡ºÜ&…LwŸÕxÇÔ½Ës¹t‡`<ˆ0 }Ìc®c~ùò!•OЫ‡9Çù¦Áž%Î?¦Â½_Ï_[ùÚ9ÁkJ‚?Û~§HºÑ(ýJ c×™ðYÔ,PA$Ú¥l€ór˜TsÙÓlÞßX2¥éœ¢ƒk”=ôŒ*—j<°ÅLxuL™pT$ZšœàºãÍËé°[­Ñè˜WàbEÑë×`æa-;¢Ê‚†[÷øü5…ÎV£VQתõ˜þ³ªÌ©´€[¥záÚþÌØô˜WNVy= ®o  a@ºåäh[6*çsò×ê¶;pë˜bø,¨<¨VÀß'N«gãå‡FÉžWyÁ3‹‡hhÀ@3¡*Ž5À,âF¥SY7ÁÚ–TÊ䔸gi¢^¼ üÅÆU@Œs_í»òn½Y•ɧT^¬©YŒªç– ¸ “V‹R‰ S”Y…€|êݸU5h\ ¼1{ë¯55ŒöKÆ ±¿dPËH„z”Y£){ ,ÁÝ–"Ì[G³í¹.Ô´¨ælȲ‚‡méÍwS” ÏWº€ ÿ•ŽÁ€ÂÁ@³Ì§Ôà8”4<£Õ+üâ$£Ÿ>},iQ[œ6¦Ù¾î¶Ì¹èÓÒñƒhÆ0U’ÄMp/ˆcØ90K1U*£ÕËî†æý¤Ã!UªäEÐ$"@ÿ)uЮÁ,~ÏØÖ&kó)œL^Ö^–ä]iUŠ…,äð/ˆ´¢ÔóS†VU/M* j»KS §Cª.¹åcH]R3U¼·Ou´_žºˆ 6!×,8*-žRaÃF¬`Ôj…§Úëhù7DìŸFM ‚£·ÜlŒúˆÏÊõPBYq”Qžá82¯j†êjD0nJ‚šm†àËà^i^7_h§ŠVq:-a€Êqrª.7•;úІn¼YÝë7ʹ~7þ™g¸E"iÍ+Ľ ”.žÅLbÒ°!ÈF”~KYúê¸J7lSjhX°)b”NÛâ"o¯JÝRÈ ŽƒuÆYÅz©'Ò1ÖÓ$¯™PbTÇß³±º’ƒŽUT¬ß£6ÁÌÉðù‡ÉˉËGcÆo’ æçc6[œfh\‰µ1>nûúZ‚ú?ÂÃLbM¬|>¯éçC%ù …ÉL !qîqlO<ž!ïžÅm(m½ô´ÕMÝ@š=WPiò÷Wí3ÔtI™·xáè^6÷ÙnÑùgŸÓô±«´|FÑ?fÂÕŒ"é¸B©¨bAõmuÔ³ÉSÏ–MÖ×Góµ6\ œ8gá L÷¥—^:r >ù䓇y—V278”qÅ Œ 5%ê{)wø¨æÇaÞybï„Ù–¼š·üécÄæ&×=Ë|Ç:„P¸† °˜·fÏ Â$õÁô^ÍïÂjЫYEhÐñ qïç/âç0—HQ|õp-Ná¢ñüí0XC÷5¿"N‹É …»ôL”0ÿi¶üIôø\d3ëÔÛHIf2JPâæé¨Ø\Úåá 5Í=ÿÝ!ÅúúU]0fiêýà5§:UW-1̶£ƒÉ`WAŠœs­Éã›0X€¡yy•3¸ØQ¬b™â†45à´ÜGé#X˜AõypaI¡®q” Y@äpQ±6a1níWÀŒ Ñsñ'Sªt¥qÛõʶ7fÍÏÏ””ýÉ–XšÇ ž!­™ø1ôš5 ¦Rí¦¤Ðœ£üI%ûžFq†2B¸Ó3ª-/e¡«Â—µÍBãj A—‰.ª:¿¬Ø‹Æ2OVE„ ÖØŒÎA`ä<_gþóÌ;KhÂxDÂö­ðë.æ‹ó½ÝªÉá÷eBxí“p3¥®ß*_v"a®Û‚B3i¨/ ÀÅv‹¹³.‰H…P›'õ¾„ÔZÏøMvˆ@Š—kÜ£lÝ µÜ¬U¸7Õ,È&ŒGÜlÚ $/oç yÛ bÓÄãùbqÊJòZØ“³{÷î}„ö¸ÙÜè‰IPä½ ry(gµZ+8Êž×çû÷ì„Y7Õ)T¦h^Vlc΄"P­$sŠa]2aϱYœÇ²/_ÒüË 0Ƨdf°SžØfK­Æ]|Šx€&!¡vó÷.¨²Ñ¸2‹ö—0ÿ2€Ûž%ÃÜðÏÞ­ºÏéìUt¿ÿÝï~&Kâs:IÒþýûÇ ^Ù¾}û6úg „]»viyó†©&¤†0YrƒS§Ô½i- Fð×=þW´4c-³¦þ™çŒU«{£ÇËM—L.ˆµ y‹f€É,é3šóÈ'^Üå&î—FvŽýT™}0iæu  -’8!wù° ,Œ€t¬icá$URzµ§ÞU®zw@r˜ù°#!üÿ¬§ì´0u®i:á]`£DÌS¨§ýrÔ¶¡XÃ2ÚŸW&¹ç" Y$ûuª/¥þ¡j‘IzD’WûÆ#<8~öì13åÏz=î² u†wiÛÙj²&²€˜ÂPin¡/Ù¢=­Ä' Å¥+€• Ô¤¦€4͉¦º`¾geƒf‡@ `¾A›[ج¦-€ú‚G²ãSiÞ ¥£ýN%k)Á\±>µÜ­Á‰<7ÎPúâÑÁi|?k6Gôê Òº÷QEyùºHdš››c/Óþ¯ýÍÃ?dò¹ŸwƒD‰ ˆ³ì¸z Â0o"Bˆ«Dùéˆ][vÆÓÖ€)@t8†ñ˜Çù¦R}žÒÃM¥·ø1_|3‚¢X@¼…àMY` ¹Ëž >¬G×~šÌÛƒ˜Ófƒ&Ý] Ä&ÞÏ`U¹0€™ÑYòýð»Þ®‘·½UÙrÉhÞßäŸýñ ¸ä2ÓÏ+€~3r:ìȼݸB!0 Ceús¾J™¢¤¦D£^  lFîöQ,ùö£u?Áh> ó ð E §4Åe0À­Ûö™“mx¤Ñi1äÊ-a£Ì™Iʾ-ò-¢ñYü}ʆ¹žÖ…DF¹›vkËÿ@E"Î,š'³s¿ýÍ¿}`ìС§‹’û‹n’2ûôÏÐ._Ë ÅÆ‚&´%¶ø©ÐÅMÆKŠgªDM+'à Sùa:àØjJò= ó/*ZMâšµ‚V,!bw5'Î1Ÿ˜ËAÓàE˜‰ ñ:ùýBX!(˜7ùFZçHgèíxàãªü-æÙÔñÜÓÏüù·¾öWÎtÅÌ.±&T8vìØ‰+Vì!" !kTÊ6)kåœRÝæ]^Í4%!A~ÌÑo²3˜”Â1L>Á÷ç“\sS¨•ƒÙ£kÝÉqÀ“~^G)X@7 Ó Ig‚ì( EèBø{ LÇ8Ø£þš¿I;>þ1Uú Ì£8³ŸéÑ¿ü“/|²[š[þ%ö zhiáøñãc¼6¿ <è PŒÇ¡$Ó°òK 0Õ¡ßÖöAb 0ú¡€>„ ÌÈy5ü&w‡Ìf§cƒ±.QÁ6Öä(éI]4c»2õvÃ<O—/¬p“ˆTCÜ„ª€Í‹<}×»´ù_ýK±”é™Ëüˇ¿ð—Ÿÿ¿I6êçàá—Ý)JëÎŒ#*˜©'‰ØL¯‰S§¯"ËJ«œ¯Õ-S ¶*sªPC. à„Ù¢+°–b•ã TkQÁØŒ¸P Ìé¢PœHùèM@¡&ÖW#ÛŒ&|Qf ›|PCwÝ¡,QijzÚ»Y¿øµ¿øï÷GòÙñ³¬ýW¹Y:‚ÜÄÏaþ”$iÛhDåh7H…Êb~^Åñ))˜W¨Qmí 5UþùšÿKýNí7Äí#žÔ)g¡  ¢mF/,LN4Á4V¦q×]Úøž{ÕÀ³ËvW:•¬Ž<ôø_?ô•wWJ§Kîk±]>DÇh+{?Åo~—\Áa’"!€ 3ަ§W>}?=¥eHIjÃî#ð×K[CÍvºkÃic‚Ÿó†`ÚäúhÞ£ºXqu®áÑ—Ü£MìG²-GB¶@’Ãþ?£ùÆ}ûþÇ÷þúoþëHÓ»x‘¾–?˜@Ã;wîüƒ7½éM&Sì  ©°ÉýYhÜAaÅœ ¯ž”&Çš¿¤š òö@‰ÔµJîn„À?ñŒ|P ˆy‡`8¢ãT©ªYî©bioxƒFØ}ît¥ñ ª–²Y›áMcögÏœ™{æÉü§£Ï=ÿÍ•Ôs%ïõøÉŒ¥ùÜzÇw|‚×ÍoÆ%|„KÅc1»ƒ;,)î(æC³äãEL´:5©æìŒ|0 ‚ywP·U^ÃT…áˆ\ÖKSãô«ËVõnÝ"nFÙ yäÅÿO­Ty5èÕ—¦`“š¿©?uÔ* ¢°×¯Ý°þÆÃÃ×”«ÉÔÊp$œ¦ñŠWÃÜl¯Ð²*Áü2m« ìN?791qøì©ñƒ\Ÿ¦úËŠ>Ѳäý6þxšº·—Èò‘ŒÃ脚œÇü=G¸=Èõ2›TË €Í ׯõ¨ß°_­7õ:þ_¼ÝæS ÂIEND®B`‚PyQt-gpl-5.5.1/examples/animation/easing/0000755000076500000240000000000012613140041020311 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/easing/easing.py0000755000076500000240000002373012613140041022141 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, QEasingCurve, QObject, QPoint, QPointF, QPropertyAnimation, QRect, QRectF, QSize, Qt) from PyQt5.QtGui import (QBrush, QColor, QIcon, QLinearGradient, QPainter, QPainterPath, QPixmap) from PyQt5.QtWidgets import (QApplication, QGraphicsPixmapItem, QGraphicsScene, QListWidgetItem, QWidget) import easing_rc from ui_form import Ui_Form class Animation(QPropertyAnimation): LinearPath, CirclePath = range(2) def __init__(self, target, prop): super(Animation, self).__init__(target, prop) self.setPathType(Animation.LinearPath) def setPathType(self, pathType): self.m_pathType = pathType self.m_path = QPainterPath() def updateCurrentTime(self, currentTime): if self.m_pathType == Animation.CirclePath: if self.m_path.isEmpty(): end = self.endValue() start = self.startValue() self.m_path.moveTo(start) self.m_path.addEllipse(QRectF(start, end)) dura = self.duration() if dura == 0: progress = 1.0 else: progress = (((currentTime - 1) % dura) + 1) / float(dura) easedProgress = self.easingCurve().valueForProgress(progress) if easedProgress > 1.0: easedProgress -= 1.0 elif easedProgress < 0: easedProgress += 1.0 pt = self.m_path.pointAtPercent(easedProgress) self.updateCurrentValue(pt) self.valueChanged.emit(pt) else: super(Animation, self).updateCurrentTime(currentTime) # PyQt doesn't support deriving from more than one wrapped class so we use # composition and delegate the property. class PixmapItem(QObject): def __init__(self, pix): super(PixmapItem, self).__init__() self.pixmap_item = QGraphicsPixmapItem(pix) def _set_pos(self, pos): self.pixmap_item.setPos(pos) pos = pyqtProperty(QPointF, fset=_set_pos) class Window(QWidget): def __init__(self, parent=None): super(QWidget, self).__init__(parent) self.m_iconSize = QSize(64, 64) self.m_scene = QGraphicsScene() self.m_ui = Ui_Form() self.m_ui.setupUi(self) self.m_ui.easingCurvePicker.setIconSize(self.m_iconSize) self.m_ui.easingCurvePicker.setMinimumHeight(self.m_iconSize.height() + 50) self.m_ui.buttonGroup.setId(self.m_ui.lineRadio, 0) self.m_ui.buttonGroup.setId(self.m_ui.circleRadio, 1) dummy = QEasingCurve() self.m_ui.periodSpinBox.setValue(dummy.period()) self.m_ui.amplitudeSpinBox.setValue(dummy.amplitude()) self.m_ui.overshootSpinBox.setValue(dummy.overshoot()) self.m_ui.easingCurvePicker.currentRowChanged.connect(self.curveChanged) self.m_ui.buttonGroup.buttonClicked[int].connect(self.pathChanged) self.m_ui.periodSpinBox.valueChanged.connect(self.periodChanged) self.m_ui.amplitudeSpinBox.valueChanged.connect(self.amplitudeChanged) self.m_ui.overshootSpinBox.valueChanged.connect(self.overshootChanged) self.createCurveIcons() pix = QPixmap(':/images/qt-logo.png') self.m_item = PixmapItem(pix) self.m_scene.addItem(self.m_item.pixmap_item) self.m_ui.graphicsView.setScene(self.m_scene) self.m_anim = Animation(self.m_item, b'pos') self.m_anim.setEasingCurve(QEasingCurve.OutBounce) self.m_ui.easingCurvePicker.setCurrentRow(int(QEasingCurve.OutBounce)) self.startAnimation() def createCurveIcons(self): pix = QPixmap(self.m_iconSize) painter = QPainter() gradient = QLinearGradient(0, 0, 0, self.m_iconSize.height()) gradient.setColorAt(0.0, QColor(240, 240, 240)) gradient.setColorAt(1.0, QColor(224, 224, 224)) 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] 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.m_iconSize), brush) curve = QEasingCurve(curve_type) if curve_type == QEasingCurve.BezierSpline: curve.addCubicBezierSegment(QPointF(0.4, 0.1), QPointF(0.6, 0.9), QPointF(1.0, 1.0)) elif curve_type == QEasingCurve.TCBSpline: curve.addTCBSegment(QPointF(0.0, 0.0), 0, 0, 0) curve.addTCBSegment(QPointF(0.3, 0.4), 0.2, 1, -0.2) curve.addTCBSegment(QPointF(0.7, 0.6), -0.2, 1, 0.2) curve.addTCBSegment(QPointF(1.0, 1.0), 0, 0, 0) painter.setPen(QColor(0, 0, 255, 64)) xAxis = self.m_iconSize.height() / 1.5 yAxis = self.m_iconSize.width() / 3.0 painter.drawLine(0, xAxis, self.m_iconSize.width(), xAxis) painter.drawLine(yAxis, 0, yAxis, self.m_iconSize.height()) curveScale = self.m_iconSize.height() / 2.0; painter.setPen(Qt.NoPen) # Start point. painter.setBrush(Qt.red) start = QPoint(yAxis, xAxis - curveScale * curve.valueForProgress(0)) painter.drawRect(start.x() - 1, start.y() - 1, 3, 3) # End point. painter.setBrush(Qt.blue) end = QPoint(yAxis + curveScale, xAxis - curveScale * curve.valueForProgress(1)) painter.drawRect(end.x() - 1, end.y() - 1, 3, 3) curvePath = QPainterPath() curvePath.moveTo(QPointF(start)) t = 0.0 while t <= 1.0: to = QPointF(yAxis + curveScale * t, xAxis - curveScale * curve.valueForProgress(t)) curvePath.lineTo(to) t += 1.0 / curveScale painter.setRenderHint(QPainter.Antialiasing, True) painter.strokePath(curvePath, QColor(32, 32, 32)) painter.setRenderHint(QPainter.Antialiasing, False) item = QListWidgetItem() item.setIcon(QIcon(pix)) item.setText(curve_name) self.m_ui.easingCurvePicker.addItem(item) painter.end() def startAnimation(self): self.m_anim.setStartValue(QPointF(0, 0)) self.m_anim.setEndValue(QPointF(100, 100)) self.m_anim.setDuration(2000) self.m_anim.setLoopCount(-1) self.m_anim.start() def curveChanged(self, row): curveType = QEasingCurve.Type(row) self.m_anim.setEasingCurve(curveType) self.m_anim.setCurrentTime(0) isElastic = (curveType >= QEasingCurve.InElastic and curveType <= QEasingCurve.OutInElastic) isBounce = (curveType >= QEasingCurve.InBounce and curveType <= QEasingCurve.OutInBounce) self.m_ui.periodSpinBox.setEnabled(isElastic) self.m_ui.amplitudeSpinBox.setEnabled(isElastic or isBounce) self.m_ui.overshootSpinBox.setEnabled(curveType >= QEasingCurve.InBack and curveType <= QEasingCurve.OutInBack) def pathChanged(self, index): self.m_anim.setPathType(index) def periodChanged(self, value): curve = self.m_anim.easingCurve() curve.setPeriod(value) self.m_anim.setEasingCurve(curve) def amplitudeChanged(self, value): curve = self.m_anim.easingCurve() curve.setAmplitude(value) self.m_anim.setEasingCurve(curve) def overshootChanged(self, value): curve = self.m_anim.easingCurve() curve.setOvershoot(value) self.m_anim.setEasingCurve(curve) if __name__ == '__main__': import sys app = QApplication(sys.argv) w = Window() w.resize(400, 400) w.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/animation/easing/easing.qrc0000644000076500000240000000015112613140041022263 0ustar philstaff00000000000000 images/qt-logo.png PyQt-gpl-5.5.1/examples/animation/easing/easing_rc.py0000644000076500000240000005326312613140041022626 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 16:22:48 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x14\x1d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2e\x00\x00\x00\x37\x08\x06\x00\x00\x00\x73\x60\x78\x64\ \x00\x00\x13\xe4\x49\x44\x41\x54\x78\x9c\x62\xfc\xff\xff\x3f\xc3\ \xdf\x7f\x7f\x99\x99\x99\x98\xff\x3e\x78\xf1\x58\x66\xe9\x9e\x55\ \x09\x87\x2f\x9e\xb6\x79\xf7\xe9\xad\x98\xa4\xf2\x3f\x7e\x51\xb9\ \xbf\xfc\xcc\x1c\x3f\xf8\xfe\xfd\xff\xc7\xca\xc5\xc6\xf7\x46\x9c\ \x5b\xf6\x96\x24\xaf\xd2\x35\x29\x3e\xa5\xcb\xd2\xbc\x4a\xd7\xc4\ \x78\x64\xef\x08\x70\x8a\x3e\x63\x63\x66\xff\xc5\x80\x05\xfc\x67\ \xf8\xcf\xf4\xef\xff\x3f\x26\x06\x86\xff\x0c\x8c\x0c\x8c\xff\x19\ \x19\x18\xff\x33\x30\x42\x69\x0a\x00\x00\x00\x00\xff\xff\x62\xfc\ \xfb\xf7\x2f\x33\x13\x13\xd3\xdf\x59\x9b\x17\xa6\x54\xcf\x6d\xed\ \x7d\xf3\xe6\x0d\x1f\x17\x2f\xdb\x7f\x7b\x2f\x61\x46\x59\x45\x4e\ \x06\x86\x7f\x8c\x0c\x0c\xff\x99\x18\x18\x18\x18\x18\xfe\xfd\xff\ \xc7\xf0\xe7\xdf\x6f\x86\x7f\xff\xff\x30\x30\x30\x30\x32\xb0\x30\ \xb1\x32\x70\xb2\xf0\x7c\xe3\x63\x17\x7a\x26\xcc\x25\x75\x5f\x9c\ \x47\xee\xa6\x04\x8f\xc2\x75\x09\x5e\x85\x9b\xa2\x5c\x52\xf7\x05\ \x38\xc5\x9e\xb1\xb3\x70\xfc\xc0\x6e\xf5\x7f\xc6\x7f\xff\xff\x31\ \xc3\x39\x24\x7a\x08\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\ \xa4\xb5\xb3\x73\xf2\xbb\xf3\x26\x73\xf2\x09\xff\x63\x67\x63\xfb\ \xef\x1e\x2c\xc4\x20\x21\xc3\xc6\xf8\xed\xeb\x3f\x46\x46\x88\x39\ \x8c\x70\x0b\x18\x99\xfe\x33\x32\x30\xfc\x67\x60\x60\x60\xf8\xff\ \xff\x3f\xd3\xbf\xff\x7f\x19\xff\xfc\xff\x03\xf1\xd0\xbf\x3f\x0c\ \xff\x19\xfe\x33\xb0\x30\xb2\x32\xb0\xb3\x70\xff\xe5\x67\x17\x7e\ \x21\xcc\x25\x79\x5f\x8c\x47\xee\xa6\x14\xaf\xe2\x75\x09\x1e\x85\ \xeb\xa2\x3c\x32\x77\x85\x39\x25\x9e\x70\xb0\x72\x7d\xc5\xe7\xa1\ \xff\x70\x4b\x19\xff\x31\x62\xf1\x10\x00\x00\x00\xff\xff\x6c\x92\ \xbd\x0a\xc2\x30\x14\x46\xbf\x2f\x16\x7f\xd2\x06\x21\x83\xc6\x41\ \xc5\x5d\x70\xec\xa8\xbb\xcf\xe2\x6b\xba\x76\x70\x28\xa8\x83\xe0\ \xd6\xb1\x88\x20\x24\xf7\x3a\x88\x5b\x5e\xe0\x1c\x0e\x1c\x36\xb7\ \xcb\x76\x7f\x3a\x9e\x85\xea\xe2\x87\xb2\xab\x4b\x53\x1f\xa6\x78\ \xbf\x04\x66\x90\x03\x67\x4c\xa0\xfe\x0a\xa9\xc4\x7f\x8f\x64\xa2\ \x44\x24\x89\x48\x1a\xa1\x2a\x30\x2c\x30\x2e\xac\xb8\x91\xef\xfc\ \x24\x3c\x66\xe5\xf2\xba\x70\x9b\x36\x54\xeb\x76\x5e\xad\xee\xde\ \x86\xa7\x1d\xba\x9e\x79\x0f\x45\xc5\x28\x94\x04\xf0\x05\x00\x00\ \xff\xff\x62\x99\xbc\x76\x56\xee\xa7\xef\x5f\x79\xf9\xb9\xf9\xfe\ \x32\xb2\xff\x65\x56\xd6\xe4\x62\xf8\xfd\xeb\x3f\x03\x23\x13\x51\ \x8e\x66\x60\x60\x60\x60\xfc\xcf\xf0\x9f\xf1\xff\x7f\xf4\x18\x66\ \xfc\xcf\xca\xc4\xf6\x9f\x8d\x99\x1d\xc9\x43\x0c\x8c\xff\xfe\xff\ \x65\xfe\xf8\xe3\xb5\xc4\xbb\xef\xcf\x24\x6e\xbc\x39\x65\x01\xf1\ \x10\x33\x03\x3b\x33\xe7\x7f\x1e\x36\xc1\xb7\x82\x9c\xe2\x0f\xc5\ \x79\x64\x6f\x8b\xf3\x28\x5c\x97\xe4\x55\xb8\x2e\xce\x23\x77\x5b\ \x98\x4b\xe2\x11\x0f\x9b\xc0\x3b\x26\x46\xa6\xbf\x30\xd3\x01\x00\ \x00\x00\xff\xff\x62\x54\x89\x34\xbe\xfb\xf4\xed\x0b\x25\x86\xff\ \xcc\xff\x85\x44\x58\x18\xbd\xc3\x45\x88\x76\x31\xb9\x00\x9a\x9e\ \xff\x31\xa2\x79\xe8\xef\x7f\x48\x0c\xfd\xf9\xf7\x9b\xe1\xff\xff\ \x7f\x0c\x8c\x8c\xcc\x0c\x6c\xcc\x1c\x0c\x3c\xac\xfc\x1f\x04\x39\ \xc5\x1e\x89\x72\xcb\xde\x91\xe0\x51\xb8\x26\xc9\xab\x70\x03\x00\ \x00\x00\xff\xff\xbc\xd1\xb1\x0d\x80\x30\x10\x03\x40\x3b\x05\x54\ \x54\xb4\x91\x32\x0e\xa2\x65\xff\x45\xc8\xff\xdb\x54\x94\xb4\x8c\ \x70\x3a\x6e\xe7\xb8\x01\x2f\x73\x1a\x7d\xac\x38\xae\x1d\x11\x06\ \x3f\xbe\x7e\x00\x99\xa0\x5e\x90\xad\x56\x4e\x96\x02\xa9\x84\x5c\ \x20\x1b\x1e\x00\x00\x00\xff\xff\xb4\x92\x21\x12\x00\x20\x0c\xc3\ \xda\x5b\x81\xff\x7f\x98\xa0\x26\x70\x18\x2a\x73\x11\x11\x0d\x30\ \xdd\xd6\xfb\x3d\xbe\x0c\x61\x81\x91\xae\x92\x72\xa8\x0c\x96\xbc\ \x9b\x1d\x00\x00\x00\xff\xff\x94\x94\xb1\x0d\x00\x20\x0c\xc3\xdc\ \x96\xff\x4f\x76\x19\xd8\x10\x42\x70\x40\x6c\x79\xc9\xd8\x96\x7f\ \x22\x21\x33\xa8\x2a\x6c\xd1\x05\xc8\x08\xd6\x27\x34\xb6\x57\xc6\ \x93\xe7\x10\x34\x01\x00\x00\xff\xff\x8c\x91\xc1\x0a\x80\x20\x10\ \x05\x67\xdd\x35\xa5\xfe\xff\x3b\x83\x28\x41\xad\xad\x4b\x67\xeb\ \xdd\x67\x18\x78\x36\x02\x46\xc1\x6a\x42\x9e\x8d\xbd\x1c\xac\x5b\ \x21\x6a\x24\x4d\x09\x01\xaa\x37\x4e\xef\x68\x30\xb2\x2d\x04\x51\ \xfc\xbe\x3e\xac\xef\xed\x3f\xf7\x00\x00\x00\xff\xff\x22\xd9\xe1\ \xff\xff\x31\x30\x70\x70\x32\x33\x7c\xfb\xfa\x87\xe1\xf4\xc9\xc7\ \x0c\x52\x5c\xea\x0c\x5e\x26\x3e\x0c\xc6\xaa\x86\x0c\xa2\x02\x22\ \x0c\x8c\x8c\x0c\x0c\x5f\x7e\x7d\x60\x78\xf6\xe9\x1e\xc3\xb5\xd7\ \x27\x19\xae\xbe\x3a\xc1\xf0\xf5\xf7\x27\x06\x6e\x56\x3e\x9c\x8e\ \x67\x64\x64\x60\x80\x95\x4a\x4c\x8c\x4c\x0c\xff\xff\xff\x67\xf8\ \x4f\xc0\x13\x00\x00\x00\x00\xff\xff\x22\xc9\xe1\xff\xff\x43\x1c\ \x7d\xe7\xc6\x17\x86\xa3\xfb\xde\x32\x54\x84\x54\x30\x14\x85\x67\ \x30\xb0\xb3\xb3\x32\xfc\x87\x54\xe9\x70\xb5\x5a\x62\x16\x0c\xae\ \x2a\xd1\x0c\xcf\x3f\x3f\x60\x58\x73\x75\x22\xc3\xe9\x27\x3b\x19\ \xb8\xd8\xf8\x18\x30\x8b\x4d\x06\x86\x5f\x3f\xff\x31\xb0\xb0\xb0\ \x30\x30\x32\xfd\x65\xf8\xf6\xfb\x0b\x03\x0b\x13\x0b\x03\x2b\x13\ \x3b\x5e\xc7\x03\x00\x00\x00\xff\xff\x22\x3a\x3b\xfe\xff\xc7\xc0\ \xc0\xce\xc1\xc4\x70\xe3\xf2\x57\x86\x9d\x6b\x5f\x30\xcc\x2e\x9c\ \xce\x50\x19\x97\xcb\xc0\xc2\xca\xc4\xf0\xf7\xdf\x5f\x86\xff\xff\ \xff\xc1\x2b\x9b\x3f\x7f\x7f\x33\xfc\xfe\x03\x29\xd2\x24\x79\xe5\ \x19\x72\x2d\xfa\x19\x42\x74\xf2\x19\xbe\xfd\xfa\xcc\xc0\x04\x2d\ \x01\xfe\xff\x67\x60\x60\x65\x63\x64\x78\xf5\xec\x0f\xc3\x92\x59\ \x0f\x18\x3c\xc4\x4b\x18\xba\xbc\x36\x32\xd4\xd8\x2f\x66\x30\x94\ \x74\x64\xf8\xf1\xe7\x1b\x5c\x2d\x36\x00\x00\x00\x00\xff\xff\x8c\ \xd4\x21\x0e\xc2\x40\x10\x40\xd1\x3f\x33\xbb\x75\x0d\x06\x01\x0e\ \x53\x82\x44\x35\x58\x24\xa6\x12\x8d\x20\xe1\x04\x78\x6e\xc4\x01\ \xb8\x0c\x69\x10\x08\x0c\x49\x31\x5d\xb6\x83\x42\x92\x70\x82\xff\ \xd4\xff\x0b\xfe\x8d\x3c\xee\x99\xcb\xf9\xca\x69\x7f\x64\xbb\x6e\ \xe8\x53\x42\x45\x31\x35\x44\x14\xd3\x80\x49\x20\x58\xa4\x08\x05\ \x0e\x0c\xee\x64\xcf\x34\x8b\x03\x9b\xf9\x8e\xae\x7f\xa2\x62\xb8\ \x3b\xaa\xc2\xad\x7d\x11\xbd\xa4\xae\x56\x8c\xe2\x94\x6a\xbc\x64\ \x52\xce\x78\x0f\x09\xf8\xfd\xe4\x0f\x00\x00\x00\xff\xff\x22\x3a\ \xc4\x19\x19\x99\x18\x0e\xee\x7e\xce\xa0\xa9\xac\xcb\x50\x16\x95\ \xcb\xc0\xc0\xc0\xc0\xc0\xca\xc2\xc2\xc0\xc8\xc8\xc8\xf0\xff\x3f\ \x24\x99\xdc\x78\x7b\x92\xa1\x66\x43\x3a\x83\x4f\x65\x04\xc3\xda\ \x43\x5b\xa0\x21\xc6\x08\x0f\xb9\x10\xed\x3c\x06\x45\x41\x6d\x86\ \x9f\x7f\xbe\x31\x30\x33\x31\x33\xfc\xff\xc7\xc8\xf0\xf4\xf1\x17\ \x06\x6d\x25\x55\x06\x19\x51\x69\xa8\x63\x19\x18\xfe\x13\x51\x12\ \x01\x00\x00\x00\xff\xff\x84\xd4\x2b\x0e\xc2\x40\x14\x46\xe1\xf3\ \xdf\xa6\x4c\x05\xeb\x40\xa0\x50\x2c\x02\x0d\x49\x75\x05\x0e\xc9\ \x1e\x58\x09\x8a\x2d\x90\x60\x70\x24\x78\x12\x14\x62\x12\x02\x02\ \x0c\x8f\xb6\x77\xb0\x18\xc2\x0e\x8e\xf8\x72\xfe\x86\xa7\x04\x9d\ \x20\xe2\xe9\x4d\x3c\xde\x99\x4d\x2a\x42\x5e\xd0\xb4\x0d\x92\xf0\ \xe4\x48\xe2\x70\xdd\xb3\xd8\x4c\x89\xb6\xe5\xd6\xdd\x31\x9e\x97\ \x2c\xd7\x2b\x4c\xc2\xdd\xf1\xd4\x92\x67\x81\x51\xaf\xa2\xf6\x1a\ \x99\x78\x3d\xc4\xe5\xfc\x64\xd8\x1f\x00\x7c\xed\x34\xc3\x64\x98\ \x0c\xfd\xe0\xf2\x01\x00\x00\xff\xff\x22\x1c\xe2\xff\x21\x65\xf5\ \x8d\x2b\x1f\x19\x04\x84\xc4\x19\xfc\xad\x3d\x19\x18\x18\x18\x18\ \x98\xa1\x2d\x30\x58\x64\x6e\xbe\x31\x8b\xe1\xdf\xff\xbf\x0c\xec\ \x0c\x02\x0c\xa6\xe6\x92\x0c\x72\x9a\x22\x0c\x55\x33\xda\x18\xbe\ \xff\x82\x84\x2e\x23\xb4\x08\x36\x94\x74\x60\x90\xe1\x57\x66\x60\ \x62\xfd\xc5\xf0\xf2\xc5\x67\x86\xdf\x2f\xdf\x33\x58\xe9\x98\x20\ \x2c\x63\x60\x60\xf8\xf5\xf7\x3b\xc3\xd7\xdf\x9f\x18\xbe\xff\xf9\ \xca\xf0\xeb\x2f\xf6\x56\x31\x00\x00\x00\xff\xff\x22\xe8\x70\x26\ \x66\x06\x86\x9f\xdf\x19\x18\xee\xdf\xfb\xc8\x60\xa9\x63\xc4\x20\ \x25\x2c\x09\x0f\xe5\xff\x0c\xff\x19\x18\x19\x99\x18\x3e\xfc\x78\ \xcd\xf0\xe0\xfd\x55\x06\x0e\x16\x2e\x86\x3f\xff\x7e\x33\xfc\xfe\ \xf3\x87\x41\x53\x47\x90\xe1\xe1\xe3\xfb\x0c\x07\x2e\x1c\x85\x84\ \xe6\xff\x7f\x0c\x7f\xff\xfd\x65\x60\x67\xe1\x64\xe0\xfd\x64\xc4\ \xb0\x62\xfe\x43\x86\x64\xd3\x46\x86\xcd\x33\x76\x30\xb8\x98\x38\ \x40\x03\x03\x52\xc8\x29\x08\x6a\x33\x98\xc9\xb8\x33\x68\x88\x98\ \x30\x48\xf2\x28\x60\x75\x17\x00\x00\x00\xff\xff\xc2\x5b\x1c\xfe\ \xff\xcf\xc0\xc0\xc2\xc2\xc8\xf0\xfe\xdd\x5f\x86\xef\xef\x7f\x30\ \x58\xe9\x9a\x42\x1c\xf1\xef\x1f\x03\x13\x33\xa4\xbc\x65\x64\x64\ \x64\x78\xf9\xe5\x21\xc3\x97\x5f\x1f\x19\xd8\x59\xb8\x20\xc9\xe2\ \xef\x7f\x06\x61\x31\x36\x06\x06\xe6\x7f\x0c\xa7\xae\x9d\x63\xf0\ \x34\x73\x85\xe7\x03\x06\x06\x06\x06\x4d\x51\x33\x86\x77\x8f\xfa\ \x19\x54\xc5\xb4\x19\x34\xe5\xd5\x18\xfe\xfe\xfb\x0b\x75\x38\x24\ \x16\x2d\x65\xbd\x19\x2c\x64\x3c\x19\x18\x19\x99\x18\x9e\x7f\xbe\ \xcf\xd0\xb0\x2f\x02\xc3\x6d\x00\x00\x00\x00\xff\xff\xc2\x1f\xe2\ \xff\x19\x18\x98\x98\x19\x19\xde\xbf\xfd\xcd\xc0\xf0\x8f\x99\x41\ \x5f\x45\x8b\x81\x81\x81\x81\x81\x11\xde\x02\x83\x44\xed\x9b\x6f\ \xcf\x19\xfe\xfc\xfb\xcd\xc0\xc8\xc0\xc8\xc0\xc8\x08\x49\xab\x9c\ \xdc\x4c\x0c\xcc\x5c\x2c\x0c\x37\x1f\xdf\x83\xeb\x61\x64\x82\xe8\ \xd3\x53\xd1\x64\xe0\xe2\xe3\x67\xf8\xf3\xf7\x0f\x6e\x8b\x09\x54\ \x40\x00\x00\x00\x00\xff\xff\x22\x98\x54\x18\x19\x19\x18\x3e\xbc\ \xff\xc5\xc0\xc4\xce\xc9\xa0\x20\x21\x07\x11\x83\x86\x1c\xcc\xe8\ \x4f\x3f\xde\x42\x9a\xa1\x50\xfe\xbf\x7f\x0c\x0c\xac\xac\x0c\x0c\ \xdc\xdc\xac\x0c\xcf\xdf\xbc\x84\x58\xc4\xc8\x04\xd7\x27\x25\x2c\ \xc1\xa0\xa9\x26\xc5\x70\xf1\xfe\x25\x86\xa7\xaf\x9f\xc3\x43\x1a\ \x06\xfe\xfc\xfd\xcb\xf0\xfb\xcf\x3f\x14\xbb\xd0\x01\x00\x00\x00\ \xff\xff\x22\x5c\x73\xfe\x67\x60\xf8\xfc\xe9\x37\x03\x2f\x17\x37\ \x83\x28\xbf\x30\xd4\x33\xd0\x4e\x15\x54\xc9\xb7\xdf\x9f\x51\x3c\ \xc2\xc0\x00\xc9\x1b\x1c\x1c\x2c\x0c\xef\x3f\x7f\x82\xeb\xf9\x0f\ \x0d\x49\x4e\x76\x4e\x86\x88\x28\x2d\x86\xd4\xce\x64\x06\x13\x69\ \x17\x86\xc3\x53\x37\x32\xfc\xff\xff\x9f\xe1\x1f\xc3\x3f\x06\x66\ \x46\x66\x86\xed\x37\x17\x32\xec\xba\xbd\x82\x41\x84\x5b\x92\x01\ \xa9\xef\x80\x02\x00\x00\x00\x00\xff\xff\x7c\x95\x4d\x0a\x80\x20\ \x18\x44\x9f\xf9\x43\x88\x50\xf7\xbf\x5b\x27\x88\x36\x2d\x34\x31\ \xfd\x5a\xb8\x11\x8a\xf6\x03\xf3\x86\x19\x98\x7f\x70\xd5\x77\x9e\ \x62\x21\xf8\x85\xe0\xc3\xa7\x2c\xdf\x91\xf1\x2c\x44\x7a\x53\xce\ \x69\xe2\x95\x28\xb5\x60\xb5\x05\x81\x86\x30\x29\x85\xb7\x2b\xd6\ \x18\x8c\x1e\x11\x7a\xf4\xd4\x4e\xf6\xbc\x91\xe4\xa0\xb6\x8a\xd3\ \xf3\xcb\xf3\x01\x00\x00\xff\xff\x84\x97\xc1\x0a\x80\x30\x0c\x43\ \x5f\xb7\xae\x9b\xc5\xff\xff\x57\xad\x16\x0f\x9e\x64\x03\xef\x21\ \x79\x10\x08\xe4\x7f\xc7\x81\x88\x64\xb3\x41\x57\x5b\x6a\x22\x63\ \x3a\x1e\x22\xa0\x5a\x38\xe2\xe4\xba\x63\x82\xf3\xb6\x93\x99\x7c\ \x7b\x7a\x4d\x8a\x54\x9a\x0c\xac\x3a\x5d\x7d\x99\xf9\x00\x00\x00\ \xff\xff\x22\xaa\x1c\xff\xfb\xf7\x3f\x03\x0b\x33\x33\x03\x13\x13\ \x13\xb2\xf9\x70\x00\x69\xf5\xa1\xbb\x1c\x92\xb1\xff\xfe\xfb\x0b\ \x75\x20\x2a\x60\x65\x62\x83\x26\x1d\x6c\x69\x18\xd2\x3a\xfc\xff\ \xff\x1f\xce\x5a\x14\x00\x00\x00\xff\xff\x22\xb2\xad\x02\x29\xf6\ \x18\x71\xf6\xe7\xb0\x97\x00\x8c\x50\x29\x6c\xb2\x4c\x8c\xc4\x0d\ \x21\xe0\x02\x00\x00\x00\x00\xff\xff\x22\xca\xe1\x4c\x4c\x8c\x0c\ \x7f\xff\xfd\x63\xf8\x87\xa5\x49\xca\xc0\xc0\x80\xbd\x5a\x86\x3a\ \x98\x91\x11\x7b\xb9\x40\x69\xcf\x08\x00\x00\x00\xff\xff\x22\xaa\ \x38\x64\x61\x85\xa4\xd5\xdf\x7f\x7e\xc3\x1d\x85\x0c\x58\x18\x59\ \xb1\xb6\x9d\xff\xfd\xfd\xcf\xc0\xcc\xc4\xc4\xc0\x84\x65\x80\xe6\ \xf7\xbf\x9f\xd0\xa2\x8e\xbc\x91\x38\x00\x00\x00\x00\xff\xff\x22\ \x1c\xe2\x8c\x0c\x0c\xec\xec\x2c\x0c\xdf\x7e\x7c\x67\xf8\xf1\x0b\ \x7b\xbb\x81\x95\x99\x1d\xc3\xfe\xff\x0c\x0c\x0c\x7f\xfe\xfe\x63\ \x60\x65\x65\x65\x60\x61\x46\x76\x38\x24\xfc\x7f\xfc\xf9\x06\x2d\ \x22\xc9\x03\x00\x00\x00\x00\xff\xff\x22\x58\x73\x32\x32\x32\x30\ \x70\x73\x43\xfa\x96\x1f\xbf\x7e\x82\x0a\xff\x87\x3b\x8e\x81\x81\ \x81\x81\x93\x95\x9b\x01\x32\xa8\x89\x70\xda\xff\x7f\x0c\x0c\xbf\ \x7f\xfd\x65\xe0\x64\xe7\x80\x14\x85\x50\x09\x58\x3e\xf9\xfa\xeb\ \x23\x24\x89\x91\xe9\x72\x00\x00\x00\x00\xff\xff\x22\x2a\x8d\xf3\ \xf2\xb1\x32\x7c\xff\xf1\x8d\xe1\xe5\xfb\xd7\x10\x07\xff\x47\x38\ \x90\x81\x81\x81\x81\x87\x4d\x80\x81\x81\x01\x29\xf4\x18\x21\x0e\ \xff\xf9\xf3\x2f\x03\x1f\x17\x2f\x44\x0e\xaa\x89\x91\x81\x91\xe1\ \xcf\xbf\xdf\x0c\x9f\x7e\xbe\x63\x60\x66\x64\x21\xd8\xb7\xc4\x05\ \x00\x00\x00\x00\xff\xff\xc2\xef\x70\xa8\x03\xf8\x05\xd9\x18\x18\ \xfe\xfc\x64\xb8\xf7\xec\x21\xd4\xe1\xa8\x96\x09\x70\x88\xa2\x74\ \xb3\x18\x19\x19\x18\xfe\xfc\x81\x54\x5c\x62\x82\x42\x0c\x0c\x0c\ \x90\x9e\x10\xcc\x8d\x9f\x7e\xbe\x83\x38\x9c\x89\x85\x81\xdc\x20\ \x07\x00\x00\x00\xff\xff\x22\x18\xe2\x7f\xff\xfd\x67\xe0\x17\x64\ \x61\x60\x60\x61\x60\xb8\x78\xe7\x2a\x9a\xbf\x20\x61\x2e\xc2\x25\ \xc5\xc0\xc6\xc2\x09\x29\x29\xa0\xed\xf7\x9f\x3f\xfe\x33\xfc\xfc\ \xf6\x87\x41\x5e\x42\x06\xee\x59\x58\xe8\xbe\xfc\xf2\x88\xe1\xeb\ \xaf\x8f\x0c\xcc\x8c\xcc\x64\xa7\x71\x00\x00\x00\x00\xff\xff\xc2\ \xeb\x70\x46\x46\x06\x86\xbf\x7f\xfe\x33\xf0\xf0\x31\x31\xf0\x0a\ \x73\x32\x9c\xbc\x7a\x8e\x81\x81\x81\x81\x81\x19\x5e\x11\x41\x1c\ \x2e\xca\x2d\xc3\x20\xc0\x2e\xc2\xf0\x17\xda\x4f\x64\x62\x66\x60\ \xf8\xfc\xe1\x0f\x03\xc3\xaf\xff\x0c\xba\xca\x9a\x50\xd3\x10\x2d\ \xbe\x7b\xef\x2e\x33\xfc\xfe\xfb\x0b\x9a\xc6\x91\x9d\x8e\x48\x4e\ \x4c\x8c\x4c\x0c\xac\x2c\x2c\x0c\xcc\xcc\xd8\xcb\x7b\x00\x00\x00\ \x00\xff\xff\x22\x5c\xe5\xff\x63\x60\x60\x65\x67\x60\x50\x50\xe2\ \x67\x38\x7b\xe3\x32\xc3\xa3\x57\x8f\xa1\x5d\x36\x48\xfb\xfa\xdf\ \xff\x7f\x0c\x9c\xac\x3c\x0c\x4a\x42\x3a\x0c\xbf\xfe\xfd\x64\x60\ \x64\x60\x62\x60\x62\x62\x64\x78\xfa\xe8\x3b\x03\x2b\x27\x2f\x83\ \x8d\xae\x05\xc4\x22\xa4\x6e\xd8\xb5\x57\x27\x18\x58\xa0\xc9\x04\ \xa5\x3c\x87\xfa\x81\x87\x4d\x90\xe1\xeb\xef\x8f\x0c\x2f\xdf\xbd\ \x61\x78\xf7\xf1\x23\xd6\x16\x22\x00\x00\x00\xff\xff\x22\xaa\x38\ \xfc\xf7\xf7\x3f\x83\x9a\x06\x2f\xc3\xe7\x8f\x6f\x18\x36\x1f\xdb\ \xc9\xc0\xc0\xc0\x80\x51\x8d\xdb\x2b\x86\x30\xfc\xfb\xfb\x97\x81\ \x99\xed\x1f\xc3\xcf\x6f\x4c\x0c\xa7\x8e\x3e\x60\x08\x75\xf2\x66\ \x50\x93\x51\x61\xf8\xf7\xef\x1f\x03\x23\x23\x24\x24\x9f\x7c\xba\ \xc3\x70\xfb\xed\x45\x06\x0e\x56\x2e\x06\x56\x36\x26\x86\xcf\xdf\ \xbe\x30\x30\x30\x40\x6a\x66\x58\x6d\x6a\x25\xef\xc5\x60\x2d\x92\ \xc0\xa0\xfc\x27\x80\x21\x55\x77\x02\x83\x28\x8f\x34\x24\x86\x90\ \x3c\x00\x00\x00\x00\xff\xff\x22\xaa\x02\xfa\xfd\xeb\x3f\x83\x84\ \x0c\x1b\x83\x84\x12\x1f\xc3\xf4\xf5\x8b\x18\x7e\xfd\xf9\xc5\xc0\ \xc2\xcc\xcc\xf0\x9f\xe1\x3f\x7c\xe4\x49\x5b\xcc\x82\x21\x4c\x2f\ \x9f\xe1\xd3\xa7\xef\x0c\x5b\xd6\x3d\x64\xb0\xd5\x73\x61\x98\x98\ \xd7\x0a\x35\x83\x91\xe1\x1f\x03\xc4\xa3\xfb\xef\xad\x62\xf8\xfa\ \xeb\x13\x03\x0b\x0b\x33\x83\x98\x18\x27\xc3\xc3\x17\x4f\x19\x9e\ \xbf\x7b\x01\x0d\x70\x48\x90\xf3\xb2\x09\x33\x14\xb9\xb6\x30\xb4\ \x25\xb4\x31\x38\xe9\x3a\x33\xc0\x87\xe7\x90\x9a\x1c\x00\x00\x00\ \x00\xff\xff\x22\xae\xad\xc2\xc0\xc0\xf0\x9f\xf1\x1f\x83\xad\x93\ \x04\xc3\xd5\x5b\x17\x19\xa6\xac\x9b\xcd\xc0\xc0\xc0\xc0\xf0\xfb\ \xcf\x1f\xb8\xc3\xfe\xff\xff\xcf\xe0\xa7\x91\xc1\x50\x67\xb7\x86\ \x61\x4d\xf9\x46\x86\xbd\x13\xd7\x30\x88\xf0\x8b\x40\xc6\x56\x18\ \xfe\x32\x30\x33\xb2\x30\xdc\x7b\x77\x99\xe1\xd0\x83\xf5\x0c\xdc\ \x6c\x7c\x0c\xbf\x7e\xfd\x66\x50\xd7\xe1\x67\xf8\xf8\xf1\x15\xc3\ \xca\x3d\x9b\x20\xf6\xfc\x83\xe5\x03\xb4\x21\x38\x2c\x39\x18\x00\ \x00\x00\xff\xff\x22\x6a\x08\x8e\x91\x91\x81\xe1\xf7\xcf\xff\x0c\ \x12\x32\x2c\x0c\xd6\xee\x32\x0c\x95\x53\xdb\x18\x4c\x35\x8d\x18\ \x6c\x75\x2d\x19\x7e\xff\xf9\xcd\xc0\xc4\xc4\xc4\xc0\xcc\xc4\xc4\ \xf0\xff\xff\x3f\x06\x55\x29\x55\x06\x55\x29\x48\x29\x02\x49\xbf\ \xff\x19\x98\x19\x59\x18\x3e\xfd\x7c\xc7\x30\xe7\x6c\x2d\xc3\xdf\ \x7f\xbf\x19\xd8\x59\x38\x19\x7e\xff\xfe\xc7\x20\x24\xc6\xcc\xe0\ \x1a\x28\xcb\xd0\xb1\xaa\x9b\x41\x5c\x58\x94\x21\xc4\xde\x9f\x81\ \x99\x81\x91\xe1\xff\xff\x7f\x0c\x9f\x7f\x7d\x60\x78\xf8\xe1\x3a\ \xc3\xa9\x27\x3b\x19\xde\x7c\x7b\xc6\xc0\xca\xcc\x86\xd2\x52\x04\ \x00\x00\x00\xff\xff\x62\xe4\xf1\x90\xfb\xcf\xc8\xc8\xc0\xf0\xeb\ \xe7\x7f\x06\x59\x45\x76\x06\xb7\x40\xdc\x03\xfb\xff\xff\x33\x30\ \x70\x70\x30\x33\x9c\x3a\xf2\x96\xe1\xe6\xf9\xbf\x0c\x4b\x6b\x66\ \x33\x78\x59\x3a\x42\xca\x75\x68\x1a\xfe\xf7\xff\x1f\xc3\xff\xff\ \x90\x92\x07\x36\x9e\xf8\xe4\xe3\x6d\x86\xe9\xa7\xca\x18\x9e\x7e\ \xba\xcb\xc0\xc9\xca\x03\x1f\xfc\xfc\xff\x9f\x81\x81\x9d\x9d\x89\ \xe1\xcb\x97\x5f\x0c\x2f\x5f\x7e\x65\x50\x93\x51\x66\x10\x17\x12\ \x63\xf8\xf1\xe7\x1b\xc3\xfb\xef\x2f\x19\x3e\xfe\x78\x03\xcf\xfc\ \xe8\x19\x14\x00\x00\x00\xff\xff\x22\xc9\xe1\x30\xcb\x38\x39\x59\ \x18\x1e\xde\xff\xcc\x70\xf1\xf4\x47\x06\x6f\xfd\x50\x86\x64\xcf\ \x78\x06\x1d\x25\x4d\x06\x56\x68\x6f\x06\xe6\xe0\x6f\xbf\x3f\x33\ \xac\xbd\x3a\x99\xe1\xf0\x83\x0d\x0c\x7f\xfe\xfd\x82\x8c\x02\xa0\ \x8d\xd8\xc2\x86\xac\x59\x58\x98\x18\x7e\xfc\xfa\xc1\xf0\xfb\xcf\ \x1f\xc8\x8c\x03\x13\x2b\xb4\xe4\x61\xc4\x3a\xca\x0b\x00\x00\x00\ \xff\xff\x22\x79\x0e\x82\x91\x91\x81\xe1\xfb\xb7\x3f\x0c\x32\x72\ \xdc\x0c\x7e\xe1\xd2\x0c\x77\x19\x37\x31\x18\x25\x58\x31\xb4\x2e\ \xee\x63\x60\x60\x60\x60\xf8\xfb\x17\x61\xc9\x9f\x7f\xbf\x18\x0e\ \xde\x5f\xcb\xc0\xc0\xc0\xc0\xc0\xc5\xca\x8b\xd5\x01\x8c\x4c\x90\ \x51\x81\x9f\x3f\xff\x32\x30\x33\xb0\x31\x70\xb0\x72\x33\xb0\xb3\ \x70\x32\x30\x33\x42\x27\x0b\xb0\x0f\x4d\xff\x07\x00\x00\x00\xff\ \xff\x22\x6b\xf2\x84\x91\x89\x81\xe1\xd7\xaf\x7f\x0c\x3f\xbe\xfd\ \x65\x50\x53\x15\x67\x10\x94\xe0\x65\xd8\x7a\x6c\x0f\x03\x03\x03\ \x03\x03\x13\x33\x33\x3c\xc9\xf0\xb1\x0b\x33\xb8\xa9\xc6\x30\x7c\ \xf8\xf1\x8a\xe1\xe3\xcf\xb7\xd0\x34\x8f\x3d\x2a\x19\x19\x19\x50\ \x7a\x3d\x78\xdb\x30\xff\x19\xfe\x00\x00\x00\x00\xff\xff\x22\x6b\ \x46\x02\x6e\xd1\x3f\x06\x86\xff\x8c\x7f\x18\xd4\x35\x04\x19\xce\ \x1c\xbd\xca\x70\xe9\xde\x15\x06\x3d\x25\x1d\xc8\x80\x11\xb4\x76\ \x0d\xd4\xca\x66\x90\xe1\x53\x65\x78\xf1\xe9\x11\xc3\xb1\x27\x9b\ \x19\x3e\xfc\x78\x85\xb3\xfd\x4e\x84\xad\xff\xff\xfd\xff\xc3\xc8\ \xcf\x2e\xfa\x0c\x00\x00\x00\xff\xff\xa2\x6c\xba\x8a\x91\x81\xe1\ \xf7\xef\xff\x0c\xea\xba\xbc\x0c\x7f\xfe\x7f\x63\x98\xb1\x71\x21\ \x03\x03\x03\x03\xc3\x9f\xbf\x7f\xe0\x0d\x31\x16\x46\x56\x06\x2b\ \x39\x1f\x86\x20\x9d\x2c\x06\x5e\x36\x01\x86\xbf\xff\xfe\x30\xe0\ \xcc\x40\x04\x00\x13\x23\xe3\xbf\xdf\x7f\x7f\x32\xa8\x0a\x1b\xed\ \x07\x00\x00\x00\xff\xff\xa2\xc8\xe1\x8c\x8c\x0c\x0c\x7f\x7f\xff\ \x67\xe0\x15\x60\x64\x70\x74\x97\x65\x98\xb9\x76\x31\xc3\xf6\x13\ \x7b\x19\xd8\x58\xd9\xe0\x0e\xff\xcf\xf0\x9f\x88\xf9\x1f\xa2\xc0\ \xff\xff\x0c\xff\x99\x98\x99\xd8\x7e\x3b\x28\x06\xcf\x02\x00\x00\ \x00\xff\xff\xa2\x78\x82\x90\x91\x89\x81\xe1\xe7\x8f\x7f\x0c\xda\ \x86\x3c\x0c\xf6\x3e\xc2\x0c\x69\x93\x32\x19\x66\x6c\x9a\xcf\xf0\ \xe1\xf3\x67\x86\xff\xff\x11\x6d\x94\x6f\xbf\x3f\x33\xfc\xf9\xff\ \x1b\xe7\xc8\x14\x0e\xd3\xff\x33\x32\x32\xfd\x63\x62\x64\xfe\xc3\ \xc2\xc4\xfa\xfb\xfd\xf7\x57\x8c\x0e\x0a\xa1\x53\xd4\x45\x8d\x8e\ \x03\x00\x00\x00\xff\xff\x22\xb9\x38\xc4\x05\x60\x65\xfc\xb7\xef\ \xbf\x19\x9e\x3c\xfd\xc0\x20\x29\x20\xc5\xa0\x28\x29\xc7\xc0\xce\ \xc6\xce\xf0\xfd\xf7\x67\x86\x8f\x3f\xde\x41\x47\xbc\x30\xd3\x36\ \x64\x62\x16\xba\x82\x02\xba\xd8\xe0\x3f\xc3\x3f\xe6\x7f\xff\x20\ \x0b\x1c\xfe\xfe\xfb\xfd\xef\xf7\xdf\x5f\x4c\xb6\xf2\x41\x2b\x52\ \x4d\x5b\x62\x58\x98\x58\xfe\x02\x00\x00\x00\xff\xff\x22\x3b\x73\ \x62\x58\xce\xc8\xc0\xf0\xe3\xfb\x5f\x06\x16\x66\x66\x06\x35\x15\ \x31\x86\x5f\xbf\xbf\x31\xdc\xff\x78\x09\x3e\xb5\x0d\x9d\x66\xf9\ \x0f\x59\x09\xc1\x04\x6f\xe3\xfe\x67\xf8\xc7\xfc\xf7\xdf\x5f\xc6\ \xbf\xff\x7e\x33\xfe\xfd\xf7\x87\xe1\xef\xbf\xbf\x0c\x8c\x0c\x90\ \x7e\x2c\x17\x2b\xdf\x17\x71\x4e\xb1\xc7\xa2\x5c\x32\xb7\xcd\x64\ \xdc\x97\x9a\xcb\x7a\xac\x82\x0c\xb4\xff\x67\x04\x00\x00\x00\xff\ \xff\x62\x81\xac\x7a\xf8\x4f\x95\x09\x70\x48\xf3\xfa\x3f\xc3\xcf\ \x1f\x7f\xfe\x33\x32\xb2\xfc\xe7\x64\x65\x83\x2f\xd7\xf8\xf7\xff\ \x2f\xf3\xdf\x7f\x7f\x18\x7f\xff\xfb\xcd\xf8\xe7\xdf\x1f\x86\x7f\ \xff\x20\x6b\x5e\xd8\x20\x0e\xfc\x2a\xc0\x21\xff\x58\x94\x5b\xe6\ \xb6\x24\xaf\xc2\x75\x49\x5e\xc5\xab\x92\xbc\x0a\x37\x45\xb8\xa4\ \x1e\xf0\x71\x08\xbd\x66\x62\x64\xfe\xc7\xc0\xc0\xc0\xf0\xff\xff\ \x3f\x26\x06\x68\xac\x00\x00\x00\x00\xff\xff\x62\xf9\xf3\xe7\x0f\ \x03\x1b\x1b\xdb\x3f\x06\x86\xdf\x4c\x24\x25\x3f\x88\x53\xff\x33\ \x32\x32\xa0\x85\xe0\x7f\xe6\x7f\xff\xff\x30\xfe\xfe\xfb\x8b\xf1\ \xef\x9f\xdf\xf0\x10\x64\x61\x66\x67\xe0\x66\xe5\xfb\x2a\xc6\x21\ \xff\x58\x94\x5b\xfa\x0e\xc4\x81\x4a\x57\x25\x78\x14\x6e\x8a\x72\ \x4b\xdd\x47\x76\x20\x3a\x80\x2c\xc8\xf9\xcf\xc0\xc4\xc8\x0c\xcf\ \xe5\x00\x00\x00\x00\xff\xff\x62\x11\x13\x10\x7e\xf2\xf4\xed\x73\ \x59\x76\x66\xee\xbf\xff\xff\x33\x30\x63\x77\x3c\xe3\x7f\xa4\xc5\ \x2e\x28\x69\x10\x11\x82\x10\x33\x59\x61\x0e\xe4\x16\x7d\x22\xca\ \x2d\x73\x5b\x82\x57\xe1\xba\x14\xaf\xe2\x35\x09\x1e\x85\x9b\x22\ \xdc\xd2\xf7\xf9\x39\x84\x5e\xe1\x72\xe0\xff\xff\xff\x98\xff\xc3\ \x63\x1f\xba\x18\x81\x91\xf1\x3f\x13\x96\x21\x5b\x00\x00\x00\x00\ \xff\xff\x62\xd9\xd3\xbf\xc1\x2e\xa4\x2e\x6e\xd3\xc5\x2b\x97\x74\ \x59\x98\xa5\xfe\x42\x06\x53\x99\xfe\x33\x31\x22\x56\x01\xfd\xfd\ \xff\x87\xf1\xcf\x5f\xc8\x0a\x86\xbf\xff\xa1\x21\xc8\xc4\xce\xc0\ \xcd\xc6\xf7\x5d\x94\x43\x0e\x12\x82\x3c\x8a\xd7\x24\x79\x15\xaf\ \x49\xf0\xca\xdf\x10\xe5\x96\xb9\xcf\xcf\x2e\xf4\x8a\x89\x09\xb7\ \x03\xff\x41\x17\xcc\x40\x03\x05\xb2\x04\x84\x91\xe9\x2f\xb1\x91\ \x0e\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\xeb\x8f\x6f\x84\ \xbd\x4a\xa2\x37\x3f\xfe\x76\xd9\x32\x38\x46\xee\xdf\xd7\x6f\xdf\ \x99\xfe\x33\x40\x06\x32\x59\x99\xd8\x18\xb8\x58\x79\x3f\x09\x70\ \x88\x3d\x11\xe1\x96\xbe\x23\xc1\xa3\x70\x43\x92\x57\xe1\x9a\x38\ \x8f\xfc\x4d\x51\x6e\xa9\x07\xfc\xec\xc2\x78\x1d\x88\x2d\x04\x89\ \x74\x1b\x5e\x00\x00\x00\x00\xff\xff\x62\xfc\xf3\xf7\x0f\x33\x33\ \x13\xf3\xdf\x57\xef\xde\xf3\x66\xcf\x4e\xde\x2e\xa1\xfd\x56\x4f\ \x96\x4f\xfd\xac\x04\xaf\xc2\x75\x69\x3e\x95\x4b\x52\xbc\x8a\xd7\ \xc4\xb8\x65\xef\x08\x70\x8a\xbe\x64\x66\x62\xc6\xde\xe2\xf9\xff\ \x8f\xf9\x1f\xc3\x3f\x68\xc3\x96\x11\x69\xa9\x13\xd9\x9d\x78\x82\ \x00\x00\x00\x00\xff\xff\x03\x00\x3c\x1e\x17\xa6\x18\xe4\xa8\x9e\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/animation/easing/form.ui0000644000076500000240000001743712613140041021627 0ustar philstaff00000000000000 Form 0 0 545 471 Easing curves 0 0 16777215 120 Qt::ScrollBarAlwaysOff QListView::Static false QListView::IconMode false 16777215 16777215 Path type 16777215 40 Qt::LeftToRight Line true buttonGroup 16777215 40 Circle buttonGroup 0 0 Properties QFormLayout::AllNonFixedFieldsGrow 0 0 0 30 Period false 0 0 0 30 -1.000000000000000 0.100000000000000 -1.000000000000000 false 0 30 -1.000000000000000 0.100000000000000 -1.000000000000000 0 30 Overshoot false 0 30 -1.000000000000000 0.100000000000000 -1.000000000000000 0 30 Amplitude Qt::Vertical 20 40 0 0 PyQt-gpl-5.5.1/examples/animation/easing/images/0000755000076500000240000000000012613140041021556 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/easing/images/qt-logo.png0000644000076500000240000001203512613140041023647 0ustar philstaff00000000000000‰PNG  IHDR.7s`xdäIDATxœbüÿÿ?Ãß™™™˜ÿ>xñXféžU ‡/ž¶y÷é­˜¤ò?~Q¹¿üÌ?øþýÿÇÊÅÆ÷Fœ[ö–$¯Ò5)>¥ËÒ¼J×ÄxdïpŠ>ccfÿÅ€ügøÏôïÿ?&†ÿ Œ Œÿÿ30Bi ÿÿbüû÷/3ÓßY›¦TÏmí}óæ /Û{/aFYEN†Œ ÿ™þýÿÇðçßo†ÿÿ00002°0±2p²ð|ãcz&Ì%u_œGî¦Âu ^…›¢\R÷8Åž±³püÀnõÆÿÿ1Ã9$zÿÿbüÿÿ?äµ³sò»ó&sò ÿcgcûï,Ä !ÃÆøíë?FFˆ9Œp ™þ320üg```øÿÿ?Ó¿ÿÿüÿñп? ÿþ3°0²2°³pÿåg~!Ì%y_ŒGâu …ë¢<2w…9%žp°r}Åç¡ÿpKÿ1bñÿÿl’½ Â0F¿/Ò!ƒÆAÅ]p쨻Ïâkºvp(¨ƒàÖ±ˆ $÷:ˆ[^à6·Ëv:ž…ê⇲«KS¦x¿fgL þ ©Äd¢D$‰H¡*0,0.¬¸‘ïü$¬ïí?÷ÿÿ"Ùáÿÿ10pp23|ûú‡áôÉÇ R\ê ^&> ƪ† ¢" ŒŒ _~}`xöéõ×'®¾:Áðõ÷'nV>œŽgdd`€•JLŒL ÿÿÿgøOÀÿÿ"ÉáÿÿC}çÆ†£ûÞ2T„T0…g0°³³2ü‡TépµZb ®*Ñ Ï??`Xsu"Ãé';¸Øø0‹M†_?ÿ1°°°002ýeøöû   +;^Çÿÿ":;þÿÇÀÀÎÁÄpãòW†k_0Ì.œÎP—ËÀÂÊÄð÷ß_†ÿÿÿÁ+›?3üþ)Ò$yår-úBtò¾ýúÌÀ-þÿg``ecdxõìÃ’Y<ÄKº¼62ÔØ/f0”tdøñç\-6ÿÿŒÔ!Â@@Ñ?3»u S‚D5X$¦ áxnĸ i I1]¶ƒB’p‚ÿÔÿ þ<î™ËùÊid»nèSBE15DÓ€I X¤ îdÏ4‹›ùŽ®¢b¸;ªÂ­}½¤®VŒâ”j¼dRÎx øýäÿÿ":Ä™î~Π©¬ËP•ËÀÀÀÀÀÊÂÂÀÈÈÈðÿ?$™Üx{’¡fC:ƒOeÃÚC[ !ƹí<EAm†Ÿ¾10313üÿÇÈðôñm%UQi¨cþQÿÿ„Ô+Â@FáóߦLë@ P, IuÉX Š-`p$xb ¶w°ÂŽørþ†§ âéM<Þ™M*B^д ’ðäHâpݳØL‰¶åÖÝ1ž—,×+LÂÝñÔ’gQ¯¢ö™x=ÄåüdØ|í4Ãd˜ ýàòÿÿ"âÿ!eõ+„Äü­=˜¡-0Xdn¾1‹áßÿ¿ ì  ¦æ’ rš" U3Ú¾ÿ‚„.#´6”t`áWf`býÅðòÅg†ß/ß3Xé˜ ,c``øõ÷;Ã×ߟ¾ÿùÊðë/öV1ÿÿ"èp&f†ŸßîßûÈ`©cÄ %, åÿ ÿ™>üxÍðàýU.†?ÿ~3üþó‡ASGááãû .…„æÿ ÿýe`gádàýdİbþC†dÓF†Í3v0¸˜8@RÈ)j3˜É¸3hˆ˜0Hò(`uÿÿÂ[þÿÏÀÀÂÂÈðþÝ_†ïï0XéšBñï3¤¼edddxùå!×_ØY¸ Éâïa16æ §®cð4s…çMQ3†wúTÅ´4åÕþþû u8$-e½,d<™ž¾Ïа/ÃmÿÿÂâÿ˜˜Þ¿ýÍÀð™A_E‹ÞƒDí›oÏþüûÍÀÈÀÈÀÈI«œÜL Ì\, 7߃ëad‚èÓSÑdàâãgøó÷n‹ T@ÿÿ"˜T>¼ÿÅÀÄÎÉ  !ƒ†ÌèO?ÞBš¡Pþ¿ ¬¬ Üܬ Ïß¼„XÄÈ×'%,Á ©&Åpñþ%†§¯ŸÃCþüýËðûÏ?»Ðÿÿ"\sþg`øüé7/7ƒ(¿0Ô3ÐNTɷߟQ<ÂÀÉ, ï?‚ëù INvN†ˆ(-†ÔÎdi†ÃS72üÿÿŸáÃ?fFf†í72캽‚A„[’©ï€ÿÿ|•M € DŸùCˆP÷¿['ˆ6-41ýZ¸Šöó†˜pÕwžb!ø…àç,ß‘ñ,DzSÎiâ•(µ`µ†0)…·+ÖŒzôÔNö¼‘ä ¶ŠÓóËóÿÿ„—Á €0 C_·®›ÅÿÿW­ždï!yäLjd³AW[j"c:" Z8âäºc‚ó¶“™|{zMŠTš ¬:]}™ùÿÿ"ªÿû÷? 33²ùpiõ¡»’±ÿþû u *`ebƒ&liÒ:üÿÿÎZÿÿ"²­)öqöç°—ŒP)l²LŒÄ !àÿÿ"ÊáLLŒ ÿýcø‡¥IÊÀÀ€½Z†:˜‘{¹@iÏÿÿ"ª8da…¤Õß~Ã… XY±¶ÿýýÏÀÌÄÄÀ„e€æ÷¿ŸÐ¢Ž¼‘8ÿÿ"⌠ìì, ß~|gøñ {»•™Ãþÿ þþc`eee`aFv8$üüù-"Éÿÿ"Xs2220psCú–¿~‚ ÿ‡;Ž“•›2¨‰pÚÿ ¿ýeàd瀅P X>ùúë#$‰‘érÿÿ"*óò±2|ÿñáåû×ÿG8‡M€)ô!ÿùó//Dª‰‘‘áÏ¿ß Ÿ~¾c`fd!Ø·ÄÿÿÂïp¨øÙþüd¸÷ì!Ôᨖ pˆ¢t³þüT\b‚B žÌŸ~¾ƒ8œ‰…Ü ÿÿ"âÿýgàda``a`¸xç*š¿ a.Â%ÅÀÆÂ )) í÷Ÿ?þ3üüö‡A^BîYXè¾üòˆáë¯ ÌŒÌd§qÿÿÂëpFF†¿þ3ðð11ð s2œ¼zŽ^A.Ê-à À.ÂðÚOdbf`øüáïÿ ºÊšPÓ-¾{ï.3üþû šÆ‘ŽHNLŒL ¬,, ÌÌØË{ÿÿ"\åÿc``eg`PPâg8{ã2ãW¡]6Hûúßÿ œ¬< JB: ¿þýd`d`b`bbdxúè;+'/ƒ®Ä"¤nصW'X É¥<‡ú‡Máëï /ß½ax÷ñ#Ö"ÿÿ"ª8ü÷÷?ƒš/Ãço6ÛÉÀÀÀ€QÛ+†0üûû—™íÃÏoL §Ž>`uòfP“Qaø÷ï##$$Ÿ|ºÃpûíEV.V6&†Ïß¾000@jfXmj%ïÅ`-’À ü'€!Uwƒ(4$†<ÿÿ"ªúýë?ƒ„ ƒ„Ãôõ‹~ýùÅÀÂÌÌðŸá?|äI[Ì‚!L/ŸáÓ§ï [Ö=d°Õsa˜˜× 5ƒ‘áÄ£ûï­bøúë 3ƒ˜'ÃÃOž¿{ pHó² 3¹¶0´%´18é:3À‡çšÿÿ"®­ÂÀÀðŸñƒ­“ÃÕ[¦¬›ÍÀÀÀÀðûϸÃþÿÿÏà§‘ÁPg·†aMùF†½×0ˆð‹@ÆVþ203²0Ü{w™áЃõ Ül| ¿~ýfP×ágøøñÃÊ=› öüƒå´!8,9ÿÿ"jŽ‘‘á÷Ïÿ 2, Öî2 •SÛL5lu-~ÿùÍÀÄÄÄÀÌÄÄðÿÿ?U)UU)H)I¿ÿ˜Y>ý|Ç0çl-Ãß¿ØY8~ÿþÇ $ÆÌà(Ëбª›A\X”!ÄÞŸ™‘áÿÿ Ÿ}`xøá:é';Þ|{ÆÀÊ̆ÒRÿÿbäñûÏÈÈÀðëçYEv·@Üûÿÿ30pp03œ:ò–áæù¿ Kkf3xY:BÊuhþ÷ÿÃÿÿ’6žøäãm†é§Êž~ºËÀÉÊüüÿŸ‰áË—_ /_~eP“QfcøñçÃûï/>þxÏüèÿÿ"Éá0Ë89YÞÿÌpñôGoýP†dÏx%MVhoæào¿?3¬½:™áðƒ þý‚Œ ØÂ†¬YX˜~üúÁðûÏÈŒ+´äaÄ:Ê ÿÿ"y‚‘‘áû·? 2rÜ ~áÒ w71%X1´.îc````øûaÉŸ¿Þ_ËÀÀÀÀÀÅʋՌLQŸ?ÿ203°1p°r3°³p203B' °Mÿÿÿ"kò„‘‰áׯ ?¾ýePSg”àeØzl33<Éð± 3¸©Æ0|øñŠáãÏ·Ð4=*Pz=xÛ0ÿþÿÿ"kFnÑ?†ÿŒÔ5νÊpéÞ=%È€´v ÔÊfáSexñéñ'›>üx…³ýN„­ÿÿýÿÃÈÏ.ú ÿÿ¢lºŠ‘á÷ïÿ 꺼 þc˜±q!ß¿à 1FV+9† ,^6†¿ÿþ0àÌ@#ã¿ß2¨ íÿÿ¢Èጌ ÿgà`dpt—e˜¹v1Ãö{ØXÙàÿÏðŸˆù¢Àÿÿ ÿ™˜™Ø~;(Ïÿÿ¢x‚‘‰áç Ú†< ö> i“2flšÏðáóg†ÿÿm”o¿?3üùÿçÈÓÿ322ýcbdþÃÂÄúûý÷WŒ ¡SÔEŽÿÿ"¹8Ä`eü·ï¿ž<ýÀ ) Å ()ÇÀÎÆÎðý÷g†?ÞAG¼0Ó6dbº‚ºØà?Ã?æÿ þþûýï÷ß_L¶òA+RM[bX˜Xþÿÿ";sbXÎÈÀðãû_ff51†_¿¿1Üÿx >µ fùY ÁoãþgøÇü÷ß_Æ¿ÿ~3þý÷‡áï¿¿ Œ ~,+ßqN±Ç¢\2·ÍdÜ—šËz¬‚ ´ÿgÿÿb¬zøO• pHóú?ÃÏþ32²üçdeƒ/×ø÷ÿ/óßÿûÍøç߆ÿ k^Ø ü*À!ÿX”[æ¶$¯ÂuI^Å«’¼ 7E¸¤ðq½fbdþÇÀÀÀðÿÿ?&h¬ÿÿbùóçÛ?†ßL$%?ˆSÿ322 …àæÿÿ0þþû‹ñïŸßðdafgàfåû*Æ!ÿX”[úÄJW%xnŠrKÝGv :€,ÈùÏÀÄÈ Ïåÿÿb~òôísYvfî¿ÿÿ30cw<ã¤Å.(i‚3Yaä}"Ê-s[‚Wắâ5 …›"ÜÒ÷ù9„^áràÿÿÿ˜ÿÃcº‘ñ?–![ÿÿbÙÓ¿Á.¤.nÓÅ+—tY˜¥þBS™þ31"Výýÿ‡ñÏ_È †¿ÿ¡!ÈÄÎÀÍÆ÷]”C‚<Š×$y¯IðÊßå–¹ÏÏ.ôЉ ·ÿAÌ@²„‘é/±‘ÿÿbüÿÿ?Ãëo„½J¢7?þvÙ28Fîß×oß™þ3@2Y™Ø¸Xy? pˆ=á–¾#Á£pC’Wáš8üMQn©üìÂxˆ-‰t^ÿÿbüó÷33óßWïÞófÏNÞ.¡ýVO–Oý¬¯Âui>•KR¼Š×ĸeïpоdfbÆÞâùÿùÃ?hÖi©Ùx‚ÿÿ<¦䨞IEND®B`‚PyQt-gpl-5.5.1/examples/animation/easing/ui_form.py0000644000076500000240000001702312613140041022326 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'form.ui' # # Created: Thu May 2 16:46:55 2013 # by: PyQt5 UI code generator snapshot-5.0-e46cc7cf20da # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(545, 471) self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setObjectName("gridLayout") self.easingCurvePicker = QtWidgets.QListWidget(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.easingCurvePicker.sizePolicy().hasHeightForWidth()) self.easingCurvePicker.setSizePolicy(sizePolicy) self.easingCurvePicker.setMaximumSize(QtCore.QSize(16777215, 120)) self.easingCurvePicker.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.easingCurvePicker.setMovement(QtWidgets.QListView.Static) self.easingCurvePicker.setProperty("isWrapping", False) self.easingCurvePicker.setViewMode(QtWidgets.QListView.IconMode) self.easingCurvePicker.setSelectionRectVisible(False) self.easingCurvePicker.setObjectName("easingCurvePicker") self.gridLayout.addWidget(self.easingCurvePicker, 0, 0, 1, 2) self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.groupBox_2 = QtWidgets.QGroupBox(Form) self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.lineRadio = QtWidgets.QRadioButton(self.groupBox_2) self.lineRadio.setMaximumSize(QtCore.QSize(16777215, 40)) self.lineRadio.setLayoutDirection(QtCore.Qt.LeftToRight) self.lineRadio.setChecked(True) self.lineRadio.setObjectName("lineRadio") self.buttonGroup = QtWidgets.QButtonGroup(Form) self.buttonGroup.setObjectName("buttonGroup") self.buttonGroup.addButton(self.lineRadio) self.gridLayout_2.addWidget(self.lineRadio, 0, 0, 1, 1) self.circleRadio = QtWidgets.QRadioButton(self.groupBox_2) self.circleRadio.setMaximumSize(QtCore.QSize(16777215, 40)) self.circleRadio.setObjectName("circleRadio") self.buttonGroup.addButton(self.circleRadio) self.gridLayout_2.addWidget(self.circleRadio, 1, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox_2) self.groupBox = QtWidgets.QGroupBox(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) self.groupBox.setSizePolicy(sizePolicy) self.groupBox.setObjectName("groupBox") self.formLayout = QtWidgets.QFormLayout(self.groupBox) self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) self.formLayout.setObjectName("formLayout") self.label = QtWidgets.QLabel(self.groupBox) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setMinimumSize(QtCore.QSize(0, 30)) self.label.setObjectName("label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label) self.periodSpinBox = QtWidgets.QDoubleSpinBox(self.groupBox) self.periodSpinBox.setEnabled(False) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.periodSpinBox.sizePolicy().hasHeightForWidth()) self.periodSpinBox.setSizePolicy(sizePolicy) self.periodSpinBox.setMinimumSize(QtCore.QSize(0, 30)) self.periodSpinBox.setMinimum(-1.0) self.periodSpinBox.setSingleStep(0.1) self.periodSpinBox.setProperty("value", -1.0) self.periodSpinBox.setObjectName("periodSpinBox") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.periodSpinBox) self.amplitudeSpinBox = QtWidgets.QDoubleSpinBox(self.groupBox) self.amplitudeSpinBox.setEnabled(False) self.amplitudeSpinBox.setMinimumSize(QtCore.QSize(0, 30)) self.amplitudeSpinBox.setMinimum(-1.0) self.amplitudeSpinBox.setSingleStep(0.1) self.amplitudeSpinBox.setProperty("value", -1.0) self.amplitudeSpinBox.setObjectName("amplitudeSpinBox") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.amplitudeSpinBox) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setMinimumSize(QtCore.QSize(0, 30)) self.label_3.setObjectName("label_3") self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label_3) self.overshootSpinBox = QtWidgets.QDoubleSpinBox(self.groupBox) self.overshootSpinBox.setEnabled(False) self.overshootSpinBox.setMinimumSize(QtCore.QSize(0, 30)) self.overshootSpinBox.setMinimum(-1.0) self.overshootSpinBox.setSingleStep(0.1) self.overshootSpinBox.setProperty("value", -1.0) self.overshootSpinBox.setObjectName("overshootSpinBox") self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.overshootSpinBox) self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setMinimumSize(QtCore.QSize(0, 30)) self.label_2.setObjectName("label_2") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_2) self.verticalLayout.addWidget(self.groupBox) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.gridLayout.addLayout(self.verticalLayout, 1, 0, 1, 1) self.graphicsView = QtWidgets.QGraphicsView(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.graphicsView.sizePolicy().hasHeightForWidth()) self.graphicsView.setSizePolicy(sizePolicy) self.graphicsView.setObjectName("graphicsView") self.gridLayout.addWidget(self.graphicsView, 1, 1, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Easing curves")) self.groupBox_2.setTitle(_translate("Form", "Path type")) self.lineRadio.setText(_translate("Form", "Line")) self.circleRadio.setText(_translate("Form", "Circle")) self.groupBox.setTitle(_translate("Form", "Properties")) self.label.setText(_translate("Form", "Period")) self.label_3.setText(_translate("Form", "Overshoot")) self.label_2.setText(_translate("Form", "Amplitude")) PyQt-gpl-5.5.1/examples/animation/moveblocks.py0000755000076500000240000001772612613140041021601 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QAbstractTransition, QEasingCurve, QEvent, QParallelAnimationGroup, QPropertyAnimation, qrand, QRect, QSequentialAnimationGroup, qsrand, QState, QStateMachine, Qt, QTime, QTimer) from PyQt5.QtWidgets import (QApplication, QGraphicsScene, QGraphicsView, QGraphicsWidget) class StateSwitchEvent(QEvent): StateSwitchType = QEvent.User + 256 def __init__(self, rand=0): super(StateSwitchEvent, self).__init__(StateSwitchEvent.StateSwitchType) self.m_rand = rand def rand(self): return self.m_rand class QGraphicsRectWidget(QGraphicsWidget): def paint(self, painter, option, widget): painter.fillRect(self.rect(), Qt.blue) class StateSwitchTransition(QAbstractTransition): def __init__(self, rand): super(StateSwitchTransition, self).__init__() self.m_rand = rand def eventTest(self, event): return (event.type() == StateSwitchEvent.StateSwitchType and event.rand() == self.m_rand) def onTransition(self, event): pass class StateSwitcher(QState): def __init__(self, machine): super(StateSwitcher, self).__init__(machine) self.m_stateCount = 0 self.m_lastIndex = 0 def onEntry(self, event): n = qrand() % self.m_stateCount + 1 while n == self.m_lastIndex: n = qrand() % self.m_stateCount + 1 self.m_lastIndex = n self.machine().postEvent(StateSwitchEvent(n)) def onExit(self, event): pass def addState(self, state, animation): self.m_stateCount += 1 trans = StateSwitchTransition(self.m_stateCount) trans.setTargetState(state) self.addTransition(trans) trans.addAnimation(animation) def createGeometryState(w1, rect1, w2, rect2, w3, rect3, w4, rect4, parent): result = QState(parent) result.assignProperty(w1, 'geometry', rect1) result.assignProperty(w1, 'geometry', rect1) result.assignProperty(w2, 'geometry', rect2) result.assignProperty(w3, 'geometry', rect3) result.assignProperty(w4, 'geometry', rect4) return result if __name__ == '__main__': import sys app = QApplication(sys.argv) button1 = QGraphicsRectWidget() button2 = QGraphicsRectWidget() button3 = QGraphicsRectWidget() button4 = 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 = QGraphicsView(scene) window.setFrameStyle(0) window.setAlignment(Qt.AlignLeft | Qt.AlignTop) window.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) window.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) machine = QStateMachine() group = QState() timer = QTimer() timer.setInterval(1250) timer.setSingleShot(True) group.entered.connect(timer.start) 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) animationGroup = QParallelAnimationGroup() anim = QPropertyAnimation(button4, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) animationGroup.addAnimation(anim) subGroup = QSequentialAnimationGroup(animationGroup) subGroup.addPause(100) anim = QPropertyAnimation(button3, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) subGroup.addAnimation(anim) subGroup = QSequentialAnimationGroup(animationGroup) subGroup.addPause(150) anim = QPropertyAnimation(button2, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) subGroup.addAnimation(anim) subGroup = QSequentialAnimationGroup(animationGroup) subGroup.addPause(200) anim = QPropertyAnimation(button1, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) subGroup.addAnimation(anim) stateSwitcher = StateSwitcher(machine) group.addTransition(timer.timeout, stateSwitcher) stateSwitcher.addState(state1, animationGroup) stateSwitcher.addState(state2, animationGroup) stateSwitcher.addState(state3, animationGroup) stateSwitcher.addState(state4, animationGroup) stateSwitcher.addState(state5, animationGroup) stateSwitcher.addState(state6, animationGroup) stateSwitcher.addState(state7, animationGroup) machine.addState(group) machine.setInitialState(group) machine.start() window.resize(300, 300) window.show() qsrand(QTime(0, 0, 0).secsTo(QTime.currentTime())) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/animation/README0000644000076500000240000000153612613140041017730 0ustar philstaff00000000000000The animation framework aims to provide an easy way for creating animated and smooth GUI's. By animating PyQt properties, the framework provides great freedom for animating widgets and other QObjects. The framework can also be used with the Graphics View framework. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/animation/states/0000755000076500000240000000000012613140041020346 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/states/accessories-dictionary.png0000644000076500000240000001242412613140041025525 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î<‘IDATxÚå[yŒdÅ}þ½£éî9v¦—ݹ–=faïal® 8¶ N,"'2 ’ Æ„’YŠ0 àøG$¢$v›€óO'†€Ãa`1æ°!»ì²÷ÎôLÏôÝý®ª|¿z]óú˜Iï´e)e}T½zG×÷»«fmH)éÿs³é—¸½tíµžëf ð„#ég¥/³Bˆ¬cN"-ýàßó•WþŠúh¿0 xïK_JT=/ëH7køA–ˆAV’ÈR CRRŒÉ@àž`‚)‰‡pM‡ѸًÆF!†.:pÀû…XÀÏï¾;nÕjY×óÆLÃÈ b/="È IY’LB†} Ó Gn Ðó€&!dÜ#Ù„z®´ ÒsÉcRèÍDïÜyçí帽)yâ䈱n$& ÊdŒHI€}â&¡8îB2za"ìCíð˜ûæu¹2¤†ˆÞׯCˆöß4¤}xì ¿rÅ•—ßå˜C” @ˆªÁÿUÿ¡Pôz(Ãa¤ˆt4VïZ©4:\™ÍÚe3P0c6æáµÐÄñF2A¤…U©´ £Ã*„0.0 ãï%Z_0ÐNÎ ß^/•©T,Sv|œür‰È4iµf&$êõHá♌ÖTHÌ`  Ç;˜ jü²¥æüZƒ¬Á!ô5²†ÉÍÍ¥SÊ÷…Á`^îÖ¾¶±¿©¡µ €Éór<¢mA ×ðƒ…¥"Åvî¤ZnŽÌdRKIk]uñl–¼B6RP­„kñ=2b1âOžGÖ@J ¨1?¯4ë×A6™Ä;ÈÉåH²eÀÒ¼z•È2ɯÖÈ„P×£äù]麑ö÷®€*ÚË+ì× 1W¯¯ŸI¥¨†uªU²†G(`éÇâx¢ýë0,‹tH¸4Í-,(r6´é,.´ãꞤÐÿµÝ¥%n‰\!X*4M¾3>ª'ÛÂ7¼èžÔq¥Eþ³þ›Û·Cð§ÖâvSû.Á°ü13˜!{ÝI˜§ 4é¶æ,Ì+ hÒJ$•†ÜR™M[I«~úTKT;qB»„&ÚA^2Úï5|ý.Ú,cˆá©~,ÀR®TE9ŽKçlŸ!×qæÛ•LÀ‡•è(zY‡šæî·¹@8¦hÜÙR2‰íŸÛ°!‰°V“hk.„Þ¯×ñ–Ò`­\¦B.Oç^"ˆÿb±ËâñÝGôj?. «AàºB  ÒµZJˆîöȈÒbõØQŠšâÔQFäiEAˆ–º¾ƒ°\Qmäh²2BÒû©H@~- ƒB¤Q ð¸PZ6’Ô‘Ú;)µ04鮀¨,JÚ ü{ÝØØêû…Ž1E¦Þ‘9ºa Ä54³…x,] ð"%1!›[Ò DÀËs"Ú–<¯EsN|]ùéÏ_OW=ñO=‚Zùˆ´†RŒ0šk²­}À­ ±ÖMïÝMÕ…yð|Ñ‘ ´¶£±JQ%Tƒ#眳â&éC¿óÛ4uà aNç2Ù0u1‘m‰ ´z±ÄXÙ¤T™  ð§äû J®Kã[6Cy²2Z»€PPnZDØÛÛfè#ùuò8@ ý|„Ãßý.Í~ÿ)2m›+Gm)Í÷WD7ùÕïëÀ4zÏÆSÚY @¢µ¸€[ôý¼N…A±HeÂøÈ:mÒ 2"¹ú ︃&.»Œì‰Éåʼn–ÞéÒ?%n‰±Q}ï,Ñí Ñ9AØ‹&‘u¦¹¿ 7óMà"OÅ3g8p^oר^Œ¶<ŸÀsÜοé&eÑó‘–ÇO·ô”’`oÒ»M»OuHÕ¨\©D÷#"ª$î' (œtÝ9-€J¥JelcíK/!btX•lǰqZxæiJÂ]&ýôóã$røTG=PŸ;CÜR›6“üïç•ö<ÇQÖ`Y\ŒQ hñDziÇÍ7ÓøîÝ”šœ -[¨„ÍÕ¯ºZ @[ã¬Kb³# zg'€?/ˆSaei)¬\W»ÀŠ®0¸e+_æþúQâ¶ëÖ[aN—”òªdNÏÌP[áz"A›gðüØ'~ƒŠÕ*Ó¶¸ ÖÒÕˆ#ÏýÞýÌuôÚ¯^I‡.ÿÑóÏaÅ/>‚aè³s .Ж œJb^l½V#‡FÐd;ќ޻j煉gæhá?~@“W^IñééviPùðašúØÇè’ûï§_ù½kik­D[·o£+î½—~÷ÀkÛ¶M“WÂøèãSá¾M~òå’iÊ%RôæÜ"=ÿå?£ ¼¶€™ÏŒŽ¦ ´µ@g·.DA°¿Â47LOQ û+‘èöQöýæ1õè…ªxAs>LÜöÜv›w$ÙDõÐA²ZçùxäQzþÛÿH¯Üt#¾å ¢«¿ó’ÃÃêÙ‘}ûhÝyçÑÑç~DBÊ6Ÿ¯Zö2y’×°ö ì^«Èe ‚%¡¶Å¨vœOul†ìtºM󂡃—eqÄó¾š;òÞû”{î9š¸â JlÝÖnÎ@ý½÷ˆ[ÖàA`0x*&SôÚ>C³O|â8]Ú|Í5êÙ±Í窥5‚ ¼†è ¯‘ Úß x€S‚¼>Ù01ŽT8Oqø¡ÎýÜËe4´y39ˆúÖùçÓðG6ñ‹”Úº•¸í½ývXA£Í êÍ}Erjª­bt “rO>AhìBjÎ2 @Ó»÷¨^µAv“Ws±0œ ´ÖZË©·ÅssdŽò§.u#`‘#ðÿ1µ‹/¹˜v —²/üÖÛT|õ¿ôRÜ·w¹à©Jäà›SW]Œ¨o…ïÅÙÒ0—ÿÛ¿Q½‡õ¾åfr ´íŸþ4}êÇ/чøsÚõ§B×<û_4™¡÷_~µËp=rçúõ›ÖjðŽ;ά>áZ ÆGä™Aö•v ðÿm[©|èy¾¯I,›µƒÏÏ~óëÄíÃ_½‡\7 OR½“ÙñO~’ª¥2y®KU¤Ýón¹…{˜¾þÆ2™ƒ… ýìêS龯’<~Œ¦öï§-Ó“äßs7½ùµ¯“ošzñmAq]"±o­“Í-qÕâR¦kXT u K*z"h+ÇþªGßWÖ€Ö~&€ö³gDÓHœÊöÝu½ùo„Ky "/ºˆ®|è!Ú{ã”;p€†Qá‰'¿G/>ñ¹v¬­¼=X÷èÈcÓÈ·&[•ãIhÚêŠ zl‡™àŸÙKÝÅj´iΓ矇Z`‰bHOuÄÝ:M^ó[4ÿúëTľa¨¹¡T®¿ð¡¯‘ í–Ÿ}†&“qÊÞtýÏ“OQî¡èÄý!e°uŽeÒä—+ôö™YÊÇÈgò!-•%æp¿“(°âY–Êk¶€¦¸˜ämñ®];iþøIŠƒ ÀÞ€Û ”K`®éÁ Å! ?ø½ü•»I¶“Ãuæo½™ŽÁ5VLð Cõ§ø¾• ÊIÜd"-~‚Ôƒx眅³f m-àV[ja<‚¨<ž]Oôî;až}ûM:õÙëèLß3-ò-‹„o;0ôЉ ÙÑf-·[…$­N”[OKñ-ŸI¿P(ö ‚Q-C‹:p*,χ©ÐðÂʼãÑû 7‹ .KPÑ´[ÿÕFtL¦{)Ûvl¢cŒE3tëjŒî °½(ÒÏFs&Jâ=ku}0²\ 8\ ‹ds}Ωº¶~dõq·;çºÝ ·Öõ|×µs |èáç‹AÓ¨Tka*\·ŽL½·_¡ÉÎëÕ„ÐiâÏ÷pƒh®· °ŒµX€¼¨Ї›ÔuÔún©DoŠ\·›p/­Æ*‚éÖx7ñþƒ""`[ ì!€È Nã`Ä—ÒIis-°ž»¶«ba¡·ö™pÿn{¹AçA\•Ä=ƒàJ»BlA‹:lÚy>UQ¾&²Y4]ŒÖk¢^AoÕà&£ûÑ5£Ç°+(â¼mbbóº‹úˆü\äú*4ŸX¿^ŸùwGëιUH©~5uÆ-ïŠ1€Z,pж÷¯IÚP ,ÁmT ŸBUW™ŸW„h'½qM¸ÔJ}ôÜZ¬çzç7 {A‰ÆÁB—ÕÖs|>L…ØRò¢Öõ¸g6è]Q­w6Ìîi*[œuÜ ‹!§P z¥Â ¿Ô;v5éÞÙ 7ñnaꬅœ‚8¾/È4çø n­§t-Ph­*Uª;yÕª:)˜£^Ú×VÒËz¤A]V+bø]½'„ôÙZ‰ÀH ;•–öðLŽŽÑàä„ÞDS»vÈ¿¸óË×ýÛ»ï¾Ü³Xñ`ÄóæZkåpƒR¡\Zê&݇¸My÷ˆAcˆÇ#‘F&ÃÿxR ŒËÑÉIcdzÚ™·m;f™øŸmÙ‹Åȶ-ôqâëd2ICXçy““ ÎœzÔÝðx£1+ðŽþ#Éäöj JŽ‘€V{ïh-isd c­ ™JI+“1l¤Õl‰3ããæðô”™Éfm2ÔÆÂæåZ–EqE$ãq5Ž'¸‡¤c˜·cüœza¨gÒ©4í?wRé­g)¼Ò®Y C• wìÀ¶ø¸ §‹µZègx6°¬@ÄbB&R H™Î XŽÉĆsÌÔøFcÝä¤=8:fAU&/Î4”C’É‹L›&€&Œ{!iÀbà®êY }ä‡y~Wƒ¤æ&’™n÷Ú¯ž ù$I!2®ãѶ©)ùêñÍÌHû⣛6Ùƒƒ&~ÈÔ d­`¬4€Y²sùøÔ1xÌ‹W൙ü4 è9uøÉ‚7|—c÷ü “ …Øü]4¾ÖÙ,ÜÅÖënÌ”©5œug‚Š¡)§8òŸ)¼‰Ï}ç"#”I§@2Á Q„AE½&˜ŒŽâ£iY¼xŒ-@l¢Çš„z>Z…&¬5ÝšºY0<×ö ¾®‹eË™5l‡£Z@[@¥y.°åäž}Ö¦éiÊŽ’ÝÔ4± “;mªšDD޼Ð0¥:.kW/XC›4£mŽßÑB@k޵@W.óùÛ|¾JÂO³qôk,µó VBC“ÓÒ×ZÔÚ×d;›N›&uÓµöô³:#t¶r>ïξóN=ô¨S:y¯ž™•A¡`Xº= E|ÈŽ¥2©d2–ˆ¿ž[ü×>²@” O9΂’=;ЋnÕ¨‚Ö4Òµh\k´¥¯ÖÆïq+ærÎé#Gê Gޏ…ãÇýòéÓÒYX0übÑ6DÜ÷S¶iÆñ¸ †Q L£ä ` ¢œCÑuèéÓ³O¾ÏëW:4ê¾_ò¤ŒkrÚ„[ÍUC]©fgÈ-;æ,=êWggy—¹L.!DÊ„,Àï5)K|(ƒZ¤XÇÖœÿ cYˆ|›´<sÔuç0_gWeèÌÔ€P çû€ Ôq@zl|qqG°Yƒ¶ÝEä¹C‡êyÃ_ƒ käD©Sš"ÍädÙ†~CÊJ“œ"Vñý|Ä|?‡|;Ñ2ê Çð[´÷z=««ÀXµp€Ò{ÆK›—–ö¾ôàƒ‹‰zÕ<5Ÿ¯á€T‚œm6ÉŠ_þod€:ÿY­.e¡æûKh¬èy ‹8f?‰ÍÕ‚ë–4¡>ˆ1 ÏÜúþ¿ÎB&…æ¸RÚ~óääoL&w§Ò)ÿ¹ÜOª¨J@Äp€š;㺋ݤ€Þ¤¸Œä(w·ÕÈö+-]† ÎF[kÔ}0Ä>xè,&Þ„¡k„_.bý·ÿÇýçÛ#]8IEND®B`‚PyQt-gpl-5.5.1/examples/animation/states/akregator.png0000644000076500000240000001141112613140041023031 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME× I†pA–IDATxÚí[ t\Õyþî{³k´Z²%Ù–dclƒ16¶á°4ÂÚ”†ÒBr ] hKH ‡Ú­sRR$­{ ä°•Í@°V/€±-ÛØ²llÙ²,ÉKiöåm÷ö3ïðô:š&=Éi~O÷½ûî›yßwÿå¾+´?Úÿoc8»uRíô‹]3—\·ï<¡¤<гÃBÍ q5J"ÄSã!‘…„À€áèÔŸCùƒ@üØ•h]v7çXÆÓQ™BpáªÀe?„ì`n‚ \‚Ü×Òº2. mHèjHhJHèÙWÓ$T|HhÙ0…M ™ß;Äž?Çù÷¿ˆæEÌ$®&9C2€Ä€šÌCÏ@hðl‚W’à¦P²\HSNÐÁu-'@× $ A ®‡C 6•3¡ n„„:GòÿN€§.îÄ™·,…°Ès#ǹ(֧硘âdí>Ó„W3¤£BÈ‚snpÖP29 RÏĺ&Ìn€<‰ 'h`N<Äd˜ØÙq)ºÙÅ•à…kSXxm ?óF œb8Æ‹Ü5¢ÈXò@NÜ€ËGðçÍô–Ô§âH4Æc •?Ù Ô׳.…Þ4—œìèC«Á³Ô8®ÈŒˆU¢_c PÒ$”5ˆ‰x¢×E1‘Š|Ö±~¶iZH¿×¾5¨ZºžéË– ξÚó8N>¯BLpÝ"3iyDÙ‡çå½€Pþ³íky¼ ¬½zfRCéa5)˜¡bI%(|8΋Ìl1aŽ‘8/Z“'òé1äì“Õ0^¤šäó·BÀ_ ÉØ„J’q— %^FœBñlòöD1Ý,¯Ö#òÏ-@¡ÛxA±Øu•ÂDYÆÃâƒD>Œã„żr@Íè6ãMˆE®’-pw˜¡C ÒA0Ž=£†Jù$È1)ÆK'¦Lœ· à$[¾Ô•_”ÿ¬B‹õ©Q”4C·‰W8,WžL‘k(¨&ÅE.OÈ/“á eÐA¶E26l¢¹~˜un`÷MšËϼ3 6D%@ÉD5¹°ˆ±c$nÂ>¶¿'jÎüŽÕ×-â*äeVz"ň•Ãês ‡X_ù²f8Ê`%(ÛN!œd =Â&n dXà@œÈgˆ¼Tä}µtp Ò+Á‚8·`“ÿÛ ,bÂáæ6Y‚ã8~ˆÈ²5TXà(gö:Àö‚ ¯=U@ý ù§ÑÓ@& $ZÒ™èìX.ˆ9£S¨xož¼d==³E°ýºt°Ë`åÖ¶þ)ÀÜKá4‘al/ú(ç¾…îOú„Ãåóm⓼MÖÙò̬$Xéu€#»‚-y´_˜ààkÀH§36y³µÉ›3Ôrû2ÀSr M‚°PÎj:€Ónθ¨ž>!Îí|`Ÿ[ä³y ÔZÊ€¡øË¨dÀ$ßPʯ2êçç,:.s„„ “üA"²I•+-‚0ôÊW"j'ªH°în@èùso5l&²'Ó–Ñy}Áv"Nº¨›ì\ š• ‰€b‘“ŽDh·§­ ¸æŒQé2ˆ‰åO²aÂ00ºèyh\Ìþ3 ºk9ðXš ${ì™%’œpv’f œûU±`Κ?Y³¶ºG¶›|²Šº²pØ”ÅÀ’ûtŸI¾xÌÛýǦÙeP©$QX×mò…«>Sˆ5$Ä@jk:8õûdË‚MÿÎ~ö;] Zý@û€»*oHñƒÀx`¨D 6uØJ",y¨™‹Omþߣ‡žP&þQÂõ%GžÈƒëöí¢2ëçÌûê€Ö³`ÛRò+Á¡w€¾Õt±;ZØ~‰ðÏNÎ|y׬ýÅãŸõO'iÉ>ñЇ€í;´_œõS q©óåf|+°þr@‹Ùã= ¤ÝOÊ×|f·6Š„›Ä¡*#€s%XÒ<õÀâû€¶+ò^Ø(G€T°ýV8¬ýZ á´ÏPûK±¢bp Pb@x0² HNò- ˜û] ñL ;h?xÿStÏ;†Qç)÷g",qÌœÄ*—ìú?¾ØpÝ ë©ãJ`ÆÅÎ¥ÙÂáß‘NûAwß\¸Õ×Jal’ýÎØg6 c½€Ï¶'øà}7-ÜòöO¥ÒU€ÀUç’„LØû°ý‡€‘™ðÉnà ¿\.{ãۀщ^ íß,;óNïì3怷7÷®~kþ_¬h(Üós.Æ:o´ú,«ž´]çŒãþ_ÂaÓ¯.AºLÜ£à܃ãÉ㊞íÜ58ÇîÁ%Jo‰;„°wo÷‡Ÿö¬„ÃæÝå$7º0ÒöõÚÅ€jéã$n >ƒ$3CûÎ×ßìºæPÿØCÅß àŒ=Oí 83O>=€œí¥š¯Å'xÁÉ@Í|›” òÑIsÊÙ…¤Q6Þ É3'q!¹åc •É)ÝÈŽE’·<»zë=k_xðžÂ?ñ|æ^r'PoruÔž¾Âv{†üâçÈ«pØÔ‹3Û ‡Õ.:¢eD€úµËwú/–?pëë=üÃïüì'÷N/Z2Š¢'ÒÿöM›^Zºtékϼ¼ù¡ÿ{åÈÙ—üÃ*G¬™ TµÀaîàäïÛ¿o÷n:¾9Á NqºwfVuÂñ‘G‰¾ %pã¦.φ¡ý—7Ô×^>sf‹øêÕWìš6mÚ{UU5ë3Yõƒ{äç£9Mã~qÎÿvgwÿ¹/½±íqÊÃ8ü¤-€–)²ùq –€Ã|Í·V‡à0oKY‚åÉ;cŸƒaj÷­ÚTí&¹Z‡G¢ll<¹¨·oh‘,Ë·©ªÊçÌ™s{N]×Y:› €lÇŽƒ ,ø»5oï|ºeZís'0SrÃÚÁéÒG@3–< ç\†Ã\µÎ5¿‘‚Ãä*—±ÉûF²>¼©ÃÁL-gk0K_¤ëIÄb1(äå„}ĵ•s^oùâ,ó¸Œò@–uww?cÆÓÿùôºÀk‘¹rZxnýãÈõ·åWƒ°,; ì|ÈI°ªÓãpîï{P`öýÇeãY7~µ·׿½ËûÏÅ{±™ØÜ¯àÀÞ.Ô%ºQ§ô?ZSSsáÊ•+gKgÏžÝ#I¬oz˲€ÏÓ”U•FL0à&U5N^þØÚÓ<·\†Ë›úà3_{“}$õ&`î×óö<¨$‚<áá[.ƒÃR½6yFëá0mÇ!‚™àFªðìî©ØžM×CDßÃås ÌYäɳÚà­m¦<}A_û•÷ ?ü0#[,D.k_MxÃuÏß_ƒÇÖîlJ¦ÕË-8L·µµ}%Il]ñËß6É7~—d‡à–ëÛþ/€y,ãÓílƬ‡ßùàÀ£fÉÌ#ü.À'¸¯o¦Z8E˜´oó`«¶5cÓa/¢Ñb‘ñ¥9 ~tž„óΫ›‡=ƒ@dè¢;îÝyðpó|ÅŠËÈ<$Àër¥ÊÕØX#e­ßÐ5 †&h1»¿ÿpô„¦ë‡ŽŒ¬Yñä&–¹újœo¼¬A–ÍJH V¦–YçŒÂ]`‚œ¯œ)]Æ¡±ŽÄ<Šzzõ¿Ó×!ͦ#eÔ$l-ï@ÏÀÔj s›2X6#…)~¦ 'ÜØp°/uMÁǃÂá0"ããø‹¥À7pâ¼/䱈1´‘}1¤‘O7n·5E`---›ù€ìyXæºýÞU^ÿ¨Y“üB!FÈø™ÓG×m<\÷`oß‘û~IBôO¯Â2u5<..Wž¼ËÛPÚ‹Á¸ýQŽ$ƒØ?ìBoHC:“E6›…ªf D>_À(‚òÔ7ð—O¼É°ÿ¤ó5ytKÊ`® ¯ªÆå®ž‚¨„1Žhúè#ÏÀÀÀ©z‹íè„8AµD¨N"ðz¢'5#|Þ¬Èïö5³ÞÞÞ›ÍX"o´f…áœ9®È½_ŸåŸµèBo°u!sû‚H Ä 1‚ªÐa<ÙŸÛ,‘”$=™ ÈB@fËÐ=\ 97Û7ž|ëlPhýB-f4$—ÛàJ+HíZ ‘ÎÐ}fü #•T³'eøyd}ººuzý¿÷ôôÔùLòå6D¸ÿ#E)S;ûÛÖ/Æ[•ïiš6àÛ„6¼n¹wÙ‰5÷¶_ùèu5SZÚT%-¥3 ·¦¦]Jr£ý½™pÿÇn#¾¿Z6â¾€WTy=Âð)àa¹Êâ"¸À àÝ9H$º0³[‚nìymj=.Q'?ïpúÇ=Ɉ¿*óx·ÌßöT*µÐãõ¾ÜqúÕïÏ>åì¯ . CSâ‘p÷ÞwoüÍ“£ªšöAW}† Ý[%¸VE¡dB¯—™Þà–ŒÚjŸA-Ƥ™ó;û¤*UQâ æàƒ#««ðeTá󻸧ûˆ±dÍ;ÏÊ.Öxƒ ÂÇ`¸‡”Hç¸r$*¼šgÚ;æÌ˜ÑÕÕ•…B÷xô³l‰„„% 3Ã0ƶd2™…þ@p×Wn¼wšËí5³íû]»÷¼±£sk”C—Oú2ã\e¤‰Äõ,3Ô´¤+)IW“2eoY£–gSî1-íc ÝÍËÝÙõ:$†;¦b›j¸LéÄ¥Þ>,Ø[O®›uá²YÏ·4øÓã±Ô´Ñhú„pLŸoHþ™ž@]£«ÆŒ†ÃêÎî÷^Öu}9€]íóü¯1f‰UK˜j•Ê$ÕÕ›¨&ßÖÜÜü z‡PÒétâ7ÞØ=É–†€Ó˜œÃàB7èH冚Û¶í¨†·zíÞ½ŸÌëììÜàL‚þÖ-KƒEc{ì,ºóy·ÛÝìõzUj™Ëår“Èñx|¿¢(küZÑ]@¼œ” !(„&ÂUUãæºšÚ¦—ÉÈ+8—SçŸ=cŒA¢xÜðñw7|Ôî÷W=‘ˆÆæmÛ¶mÀ5Öx™ð1d«*ÕäwTp 塳µÖs… û ¦p}ÖbNTfW¸0$’Ö—fiÆ7’J"‘8ãÀ¯Qyät.I’U!räó/ «•H,±nݺ6º~=-O¿sèÐ!ÿ¦M›ÆéÚ_ÈÚ&|§6Á “„Ý„NBб&E/Gºtÿ}2!àñx¾M°œÂ`å©§žºž’£›\“Q‚ääš: ¢rÎ #(_Èããã3ü~ÿ)4æ"j—Q‚b”¡ êÿÀ*ÂQ‹PÂ*ɱQ'AnAàs«Àý&®cŒ=L¤j«ªª†‰XŠÚ   ¨ž~Ä Ma(fÃýåË—ñ˜û¼­ºNô===ÿÚ¿ÿ‰˜38bvìØ±ôæÍ›_ÅmËâÅ‹oÖÖÖÖ¡‹z{{[ÏŸ?ßÈ&¨$’„QÀcóŒm¿zõÊ®'wi¤Î8DÒ™ÏL -hQ x?cØçzŠè‚ù>~"Û;èîlooÿ&öý2æÜ€Ý»w£‹¿{øðá_Ž?>;Ôˆ— 7áy‘ÛßxFBtkàÐdž=`Œ{®ùnó=¯¬ë•yç Åú8OüHægB®=zô“7صkWMØÐסªëb’L²ÆØ»…8 6†9Î -0Æí#€.“yXˈàï‡f˜VÜÓûÃ$ëoß¾Ý[ô…;w¶D8ú6T¹–Г'd‘ãaóiîܹ)^6–0‰Ëæ`äê? Öæú%j€û9Κ9@‡Ô;Ìñþ z`V B«$ëÃý _°oß¾ÆÊµ(2ªd:ϼ×Ùó àeˆÐ†é‚aþ†]j YØÈí/^¼hH‰>i²/„ëé2‹ôU[æ@kàðXƒˆÃ< &SëaSì¢*ô®M/k…¤JÓVœ &‘ sЃká±Ñóa]hEs¸G ™ã€ó¼‹C%Ÿڇ L Â`ÀQHU…P}GF\aÁ1ò ³ A ÒMíƒ1Ö¥”ÆyZ³G6~ÿþ}œì°õ> •»i2F˜Šc+31M F¨à2‚—,YB±Ä_iFˆ´a¦Y†ŽèÓ\qЬɕuÃTL³âýk€›Ú°GÂ(@¬!’+¶9æáæ æ!&/ú}’v8€‚ƨ%ŒúX­Ö”³&!PµAÔ¿”yT‚‘&~@Mä#Šyˆé0s`Ô¹ÌC[ä9 yÇm 0cc%DƒY€ ¤M¹Š­2fJŒd5ÏdÎȘ ŽÕˆ÷ÔC&š…aÑÒã6†pJ„¯|¦ñ„]=9 èÔ°a£ 1nx†yÞ±à¡>ŸÁ´{QgpÿV'XV QšêŽšçUÒ:(À¸gŒ1¦¸ûÍô<Ïú‹šÙ¢i5`Ð ›hûŽªh«JÑ1˜pûC8ëáq`óf,IMÓ>IBÝ»o£)0l`Þoê«„‡ÊÉ1Õ|âýú€JµUõ©>ÊØ‰u“SýìȦ8Ï÷\Ãîþv5 °Þ Ü> O@¾¢óÞLÐï0ë\û÷1¿§7u„êwµ·¥î¶öÔj[eÀë­´eAðœ2>Ûq@+ÐÌÉ;Bµ„=GOLG‚gñh‹1™öÐÓPyk«Aßñìš© 9ó\Ð3J€õÓæó£u bý¯óÓ `ÊjM!@òGƒ!‹¤í<Ã'_w”JÙæ5 ýBàXŒßF×XÏë„Tw+@˜2´t6ò›E‹RaD_ªÑO•÷3 <)jnn6íU ÃEë…|܃Nóz1ôá aTÓÞ¡ög×Ô!ZL±'ctÖÀùúˆà q¹À¡i¿flH õÕWÀ¸ÞÞR×DJ¦Js UÞ"'Ÿ yb„ô1»)l1P®aÑrT6ˆ³. Tç¬Ý#q¥jm`FI·¶'ùñT)ÿuŠwùÖÀ¼µk×rì¦é$ù.!ÝÞ‡4ððÍŒîmZ€-*9»ÇÞç‡ ñKާºŒpÆSÅñ9kȘï mc=+N*@Öö=@õ¼º  oùÛ[ÿíǶ|õ¥½êýÙÀßJ›NQH¢ói34ÑyŸdÇFægh3)â}K]øî»ï†"YÑгIþ[Œ›dZlÊ"ùØ›¯ëí,nMa~¨(¸ìn굤y†ï‘Øpi¹f‚Ïð ¶çƒ#1WýÇ…øû†/c¨­Rêoy(_ï_Xƒ2âUâe/?D|Ïòi®Íø>‚&8•èÔXczÐP¿W€>öˆñ¾¸¼ˆ©ÃA>  ~lƒÐ:œ.E8þ:Ö»À)~!þö~R,¼:Töó@wYüðþÌùyÉKg4 ¾¶t$ˆø_¼Û™ÞOsÃB´×eÈO´ïEqú: ñ÷}Óí–`fn<ƒ~}AýÊïH²{ú`ܳP{̹×§il4@ì#hã}šB™lôšè¢úëµ@g!TDÅ4†Ûø¿Î¦4þ_cãŒð·ÿ ä×bcÚIEND®B`‚PyQt-gpl-5.5.1/examples/animation/states/help-browser.png0000644000076500000240000001551012613140041023467 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î<ÅIDATxÚÍ{ \Ï÷÷¿ùîÆ0Û×ý2fÆfÃØìŠQQ*B®¹5„¹3†æº”kÉ¥t/©$•Šä¾Ür EIJJ÷˧Ëçù?Ï×GóÝwßÿwû}ÇðxœõÞûó~ó<çu^çõzŸsÞ5üeZ¿~½¾‡‡ÇHwwwË­[·¶_°`AÍÿöü¦M›j¹DÎñ9zÏÊ;&e¢G@øO2vÒÎ;­\\\Æ Mš¼cÇ^puuí-ü›qìÓ¦¿48((¨öîÝ»‡‡‡GGGãèÑ£¿±±±Zù-óÀ9 û÷ïOºòàСC111Ú[ÉwP\V©èÆ­dÈ5öÔ©Sˆˆˆ(8qâÂÂÂɳü[ ¡"á·aÆV/„¼½½`…(+3d-³8ÕÇÇg¿¿à®]»¢EáÛøJXp`Ž·Ý’‡{÷•îÚXæâ¹·lùÖ°ò¹Î§*ço;S¹Ö=®l“gLá6C™ÞWÃg˜¯Úã°l¢ðìçç7UäÌž»öíÛwNŒS)ƪoò\ ³PÿرcZuê?ý~Ò°Q—cn:2P/9f`CíÑÁMq9%WÓ x¯ÉE¸IÒ]' ݸWˆ«w pmXk$˜¼¥ýÅPÿ—óz ãûéu¨æ+K¬cpppŠx]Îs5׬¸l•§§§Uõ½«ýë5Œ7Ò_o wûâ€F¸6¸ nh‰;Vï ÍæCdç—!·Pƒüâr”訰¤‚Õ½Ü" r 4¸?óc¤Ywà8ŽW|Î h|›¼)CŒ§}®—Ü-k¦ÙI‹fµâ ô3Ð/¸lú6nZ¶@Êøv¸?õ}<œÕ9 { oe_TTV¡²J‹*’V ­"^«{üM=“·Ö¹¶_rÇ“ù)¾—Lß.ˆ™cqí`p`ñs5€¯¯ïQYŸÚ ßš(Ê? â·F¶ÂÝIïâÁ÷ çQzEo8 @Ñ–!(q³BYP¢Š„ ËtTPªû[$T,÷KË…|¿C‰ËHŽãxò!?ò%%çüðvÚó '챨ñçb·-›nnurÂ¥83 XÖÌñhÉçÈ·3PàKÝÇBã?A³P¹ @F>p?HW¤»ÎÊ”ûYòLÕѨ ÿã8ž|È|ÉŸr(r¹4®œ7ªßòo5À9ß;¯X¤Ý°~=n[µEæôÎx´øSâÎCQæ3ûg¢*b³ ˆ^íáqû!”Ü|ÜÈŸºwK~K–g´ €È…ÇñäC~äKþ”Cy”«ä'˜5Í%¦¿Å¿êMZJâ5ïñ·Þ_õ>°Õ¨]Ê‘¡í+ªÇŸùÒ'ÕAÞôWÈŸr(ruò/b€¤ˆ8Þ‹æÙÔá6ÀñþN_1û'÷\u)Ü8e~Ö8í·‘¸ê»Øù%`û 4 dÖg¾ŒÔIõptø;ˆÖáCÚ”,ëÓ.¾k×®D¹9¢ì¹þìCÝ¿v]ºtiJâ5oð7>Ãg9fÚWܦ˜¼È3y\}äL}r(ruòƒ'Q‹é ÄGœÄ«pŸÔäôÿd€¸~úÆŒøÉcÚ {ÎGÈ_kˆRÏq( [Œ¨ˆ0„ÊÐîüXVS¹fþ÷¯àú¸8dÑ‘­´s¾iV”X+ §r¢”¾Ð+ä’|†Ïr Ç’‡Í—NF i]EÞ—Gëááä×(r)Ÿ;=1(â$^âVøã ß6þ¿À¶FÍãý§ÊÞª[÷Ë¿‘£éT„ÌFÔ>™ýpœqž ,ýWåÏÖGÈà–Ü\cܳ“·ÌäXQ¤³Ðëÿë)cɃ¼Œ>éìjÞ¢’2ÎŽh„¬ï^¯6‚¯þÀÁi4q/q+üñCZ¦R§?m€˜~§&7æ _Hd›1ƒf ìT‰‹ˆ¶¨\ÝH¹a€¸9®.ö™5ƒçÀf»ué²Ffî+^÷i%-È‹O‚‹)°ömºœ:¤\ó¼Ö׎èõž—«ÎÏRy’¤ÈL<ˆÕ«W{šôèìê1 öܰzÈœô:ñ—‡=ÃÕi±*r±ò‚¼Õ}•>1ã?Ehhhs–{÷îú~ÑôÍxC½JFΨ ! Lø¸#Ñ{6*‚¬¹å¨ƒHÑ엕몋Ž›Ÿå?åÕ{ù3¦š2{Ù’„)–åp{‰ñGŒë!M·ˆ‹øˆSç1âÓÔQ9{~7Üݦ’:ž’”Zéï ðm›KfMd;!:â"öù"Û{´<{ï84§•Õ$m\m¸Ô­ÅÇ )wú;H’®ïK2æºd£5K–,Ñl7h€[–u1¡qq¯:Tœ¯Û–}©ÞƒŒšÙÈ2ØÊ¬³¤Û»ü†yˆIû³¡^Û!ÉNݹù.ø–t‘ÕÛˆkLIJ§¼†“CkáçÞ®uëÖ­-Ç>êÕ«W»Å_¾}ñè 7èÄE|ÄI¼Õ;‚Ê#äÿÜ_½'Dš¶:!ùÌ‘’jÏŒy’áY5­v°çmä¡0œX7yë Q¾GÝØÖ®Œ´ÜvÔšóðZ•QÎVÕ‡›çA”ýY÷Gîü¶¶æÎÈ:ÄE|ÄI¼ÄMü\<ªƒÑ•‘mJÝ]¶~E˜bû+3/W—˜¨Èpĺ¬FÞŽÉ(Þo‹²8g”œqCáa¹ç1éö_áú²¯pföר4 iV÷îÝUây1ØõkžqdroœŸ÷ ’äð“µþxEqÔjhκ¡ü¸3Jƒl‘»} î¬×…SLYt‘zÃzÝ컹ñ€~8†éifh™¤d*fkTÃWÞ×ׄ<ÀÔ·1zÔŒH™:ÏÛÄ0vØÔ+ç[Xp.Góq¥gî×îi€Ü@’Í(ÕT"=§ìXq’x⡘Hv7êàÁЊĔ,•VÐekÓsÄ •²bæ†É õ?~Û-ôd3S„süs%bøÊÄzîðM‰˜ï—†-‡sqàb9N&—Ó” §(¯4UÈÊ+Ã'‡}²ÃŠÞ¾ŠÉáÇ5A{ößË.A‰XIy%´žÎŠgnábÕGò°xw:F;^ÇŸ~Û‰c_"–Á ˜å•Š ‡²™ybú9H&b%Måi„*Uœ‰tu:#uF­`o Ÿ˜;Óò Kµs7†—ÝÏ)E©˜Šî’[ ¤æWÒSb€ÐKåpŽÊÅ‚]icw\#–ûE1±Œ^]5ÝýìCbÏÙRÄÝb‚U—eÎ*Põ]TåÉkï±¼ô¹Øs²†”¨g²B;ctiæ£Rº‰<<*¦û(7Rî"nåùó|ïbIJª÷@oÒBß2·;°;…]§K˜|eZ¥áü‹j௡!üÄøÕ 6FV=1×Ío |A£ 0×ç.F®ˆÈ¡õ^ Ô³ZXÎà̼" ûo(ùW-§|‚Eѵ÷n>¸ÓUûg=ÀÒþ\¥}ã2ÀƒWžÖÒÆ½ݳ%”xxù¬©~Ë rt¨b (ûO1 ùI `¤eÄýl¬}ÛÅ]‡Ù·5±»Œê°ûLÉA®[ð ´}ûöAм\ÜõrXUöï»ÀÝÙ]®Äö˜<,’]`”Ó Nq5Q `iõÓxóuWÝöÅÿ~({² H=ïX^ˆÒ½¼¼jÕ~ž—¥Ì­Ù¼bÙ;ñ§‘—x•÷®¡ð^¦¥!%9W/ßÀÙ¸“ :‚­n‡°Ô>‹&LwyQ ðÃ(kŸ9+öbÝ–PìòFlÔ $œ>¤ÄÈHME~F4™I(M½‚¸°8yò$AþËF‡ÉbªyS¬˜4HØ^¥•‹wX¢2l³+|¿VièÒyº$È=«Ú8fªwýE1@H¿·ÏÞZ¸ˆ8‰—¸‰_éQì2BŽù«~þÞî÷ÅýÕ; _/ƒ¥ÇGknnÞóªU{ »2r~Âü:+²L2²HÉ:KUL<¨WÏ$˺8mÔ ÃóV>¶o£ÖÕ¯L<ÄE|ÄI¼ÄMüÉ»—"l¯"Âb—³F Ô£z<¢äDt_"iãý¦í’ïŒkÇú;‹Ž¬Íóu’Z•d¨”:óoLF¦Ž~§LõÜŸ¯X»ÐJü&ññ§à•·À•ˆ<°ò–‡°Áð_8’)ûêZ=ž;@œ,¹ùšõgï9ß•%À––ž™NbZ‰åiU˜\Q[¹×#›W‘. ‘kCë•Æ7©ýw)+ÿ^’¾Á%xµàÿ_ê¯ÿñe“Ú¤auž›×pmy„¹Ø"`·‚ƒö#xÿ^­›S?FÊäð0ïF]«yòMpx@ÆñãÇ_’ä†á «v©Ú©„"g T늞lùàלÀëב2Jyÿ³V|Ë–-u¤-.JþVØÙÙU:;;cÛ¶m^.Û*üÖ/‡Ÿ“\6ÛÃÁÞ«V­Â6ç-Øå挧ÙHZg‚öFJŸÛ“;Vú¼ëov/Áµ’czèù×<ܬÍýT †lNâ2`©‰Ë@eW|°#¥ë'^<¼..7ý¬”·µµ}U&)cåÊ•U¢ô]1ÄÁìïë²õV€·öx»!(p/wy"T‚Ü)‡!ÈØÔy^£P:—ø©‡ZÖ—Çw(¤Žÿn€þ’#ËgvD\£öô/:xßµ~÷¾{•VÝn:ïI0tê„ )UÎd,x w%3œhQ¯ìªqÃ÷Ÿ…Da·5kÖ`›ü«¾wÁ¨Q— ÆúùI–õ‘6¾ž*¿çÏ©…²E¯@ëØ©:ø7ñS©T¿÷Ac¨ãïê’ÑÈNpïÖ² LŽ iŸ2¡½J!¬Èú»Î "æ²úÂ-†%)F\•†J•¥`^ÿ.{øžûgmÞ¼9‹×¤‹ >¿8°AÑ!õ(·:%N<ÄE|ÄI¼Ä­ð?Ù¿1þÝò]»¢Ž¿3€¤šOH–õ!ƒË|ÐIJgGOž h5åÛ‡³Þ¦ó‚Щܘx¬^ Ü~$ÔÁÕÁoÞ¿b¬×ýi®}ICß!5óŒ. hPFå)r)Ÿ8ˆ‡¸ˆ¯º>Hܹ˾PU⟠Þ§nÿ.£:%Ö›ÍÈ{öì  Ք¬A¨Ië)ã$ÌîÂJ+[Qt=@‡ö[1 ÊvÃ~Ýáèþc#$y³â¢qýéO×zJЫ®ñ•ñ†ú#6¬¨Vžò(—ò‰ƒxˆ‹øˆ“x‰›‘K£Û•P'êöÿ-ÉH ܘ%ïÍù~Ý¿[çõIcÚh¹A 7«éã¥0OwÊÚÔžñ€ 'L¬¥öã[r*KÔ0ð‚AýV±{ÜÆá:i@æ5ÓúZò%Ê¡<Ê¥|â âª.ŒïÃùÝqgÜ;˜Ûç}êô_‹£NNNŸGGG±ùù2׉:¿ØÖ¿mâí±muqù×t)žYqaŽîl°¾Ap&ØÊÂ5©rô·-é õ´—Lê‡_4j0°º<ýg‰.xÁØØõë°cìäG¾äO9”G¹”OÄC\ħpæHÓÔé!Œ¶x'‹ºP§?¬K  Ú_ìáá¾I¼)%¯Y‡Œ[å°T–aÓIUZKvŽFå9@ô#pxúâZÌ—€Ä2ÕýñÊÔ6I·½hªwoœãi“)ž«ßŸs²ÿû³N¾ÓÕ:þ¯yÏx²÷ª1“OÇ›è'ÉŒ#v¶!¤+Þ¿$?ò%Ê¡<Ê­VžxˆKáË[Õ<Ñ^ùNégݻΥ.ªA‚'-ñ€4Y ZY¾²#¼Û³ÛÇk⇴(KÕY³>äºbë*[ÔžT,ç. D,Mñ8ÊYâÑ”ÀÕVyK:;Ì®bÀš|»â"¾ùé¾^vNKâu_¹g¸:ƒÖ^A¢¥>Xè8µ /ÖÚÙ!`ZßêF)ò§Ê£\Ê'â!.Ág€”‰ípcdë*“O»l”r}»ÿS‹Œ¼%Õ–`xÓÓË£ÒÑisù¬Ù³Î›}Óëеa-ªØ¤ü`¦ì(Œ‘öqà| h<àÞ› Jrd~bÎ\úwoâ{ÏLq½ Û’À<þ˜-7u¾©Ríß¹$«¤FÚÄúÊÕ/-ú ?ýôBæIù»&ù’?åPåR>qè”ÿÙ©³nh…é_uÜ/Q¿ÛU¬ÿ[)zº¯¯OæZ{»Ša–C1cÐךëÃZà†4(§s9ذSSÖÜ÷ <,D²"Ë®N65²Ó“½}ÜŸuñav¬ ËV…•å™X*EŒ÷¤“XÐ`½ýƒ*£“ó}]]çɲ.]ËÌP¹¼.ù’?åPåR¾Â‘³¼7’F·|-aÿmû³²îûþ™²ÝŸ9‰½+^±Ëú;ëÜéfßj,Z€ý´tîª>(Þ:Œíiª#ÑÊt K»Ì€=X¯×-k!à—RV—T—èÎØVq¹ÆªnQvªtVéµÕ;ÇýUíáä¸Qk­På3ˆ|ÉŸr(r•ü {âÆðæ¸>¬¹viŸwOŠÛå‰ï©¶Ê Ãúýúõ›>l@ÿk'¥OçºES$j…ìÅŸ©ú{©‡#ð“FinI<”pz jG/æé˜­U}ÁQתyUG‡åš}Ã,¿1™Yµé]5ÛYž# Gœç üÀ÷Õ Ó”£äl0Á]›Î,ì ¬Ý«#Ï1Èõ™t‹³';C¿î]?Ú2 E6?e¹.”2^Î +zW·Ê«7H-½Aˆ*íÁïU’ò|ª®ÔvöÎo©ºcœ™\m°µ2ޣбÛß±nK ‘:?ù’Ñ dÌév±ÃI³Ž?ùЙ؈ñ™¶Ë‹€WÅÅzÙ:|Ýúê%ó¦Ul¦¼*@R­;ÊVÙ_¢Ôk<Ê÷M×¥ÕŽØB{d9’³€[Õß dןPõ7LcË,ÿ¤‚[NÄj~2‡87[î¥øfþð¥‹2¯˜7Ñú¶Ní*Xˆ‰Øþ–&x¤”ûžX|ZÏ®]ܽû·¼wÙôŸÚ˃ÞÂUv[<"sÁ§â¢¦ìÎPÇÒ²}3‘õ¯_‹ä÷É5)¿érøå!óÔi.Ís&"$‰ybã4¤Mÿ@)N—¥C,t`‹ìþŸ|èK ÄBLë'3O‹Äò}ä¼° O÷λC ›e`‚Ic’zKžÓgwC®½±ÊÍiž|+”¯ˆ×ŠTI¾D#׎x°äK_1R¸Eì÷ýe¶u|7-Þóý`ʤlb –çðáäo¼¡©ÌÄ@c;°{§`—¾­ÓN˜¶À%“·øM‘¢óf,Lü拱ê¼&U9Æg9æàæ•`ÓÆY‹–š=†-îü´c8ePeRö_ÅÿT…Z ™ ÀÙÒ¿ã:ÂÂ<Ïqð§ˆ6nYyÞ¬yUNnòŠ/XZ¢'Äïuß”á‚yóªƒÖßj¢¢ÃÓÝ-OfÚ<É›2(ëù~:ûdžЗ™ú@Œ`nmm}nÒ¤IEBUC‡Ím9}ú '/ò|¨ÏºhYS¨©´´•cm_n˜¸ ‹ˆB®x)ñf2‹0]*_…VIš.A Ö‚<ž%Fþço¥åË—ÿSÒ{ö{­Þ±çˆ÷Î}±þ.¾ÁëåÞ,I|Lâ§ò¬Ùý]xþTÇg2 )|åIEND®B`‚PyQt-gpl-5.5.1/examples/animation/states/k3b.png0000644000076500000240000002003412613140041021532 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME×9()‘|©IDATxÚå› °\W™ßÿ·÷½_¿ýéé=IÖ.ÙÚ,yÁxÀvBÁd BeN±„x\ÅUI*TH*ÃU3C*®!ž&C€Ø² xÖ%k±õ´=k}ÒÛ·Þ·Û·ó;§»5 °JËŸÏí»œw¾íÿ-÷´þÿ8¯çßY³f¯««Ë×ÛÛk)‘H8ÕjU¹\Î[XXð–——½ .xÙl¶) ú-@$ñmݺ5°{÷îøÝwß½µ¯¯og4]Ïùu~¿¿×qœoòi4Cc¦\.Ÿ*‹ãÓÓÓû¿ýíoŸKÁ`PÜgÏW* …I¬áÙ©©©o=Êç[ßúVÞXʯRίJÛ×_}ôŸøÄ®mÛ¶}4Nß Ó)ÃU©TR¦jµšÜz½%¡@­•À¼B8U*•²å¸Îý‹‹‹ó333ÿ{llìÏ>÷¹ÏONNºF¿n87nŒ~úÓŸ¾yÇŽ”ÉdÞâçÓÆ¯U,TáØP*#È ¢Ž X‚áÞç8ò C †B „Cò›cÆh<®ž¾>õA!®---Õ/]ºôÍ#GŽ|–¿{"ŸÏ»¿ à‡?üá‘÷¿ÿýÿ~hhè˜pM[ÆK0n(»¼¬…¹yÍÎÍjnvVK‹KÊæ²Ö:ðI úüŠ„‚JÍ'êJ§Õ•éV*Ó¥h*­P"®p,¦n„0¼r¥bÏÎΖϜ9óÅo|ãŸûú׿¾,É{½àŒŽŽÆ¾ô¥/½cÏž=Љ]Öx>¯LOOMéü¹ó:söŒ&&&4óør‡qkúÂ=£}Iǧ øEˉHTÌ¿¯§[ƒƒƒê_±BéE3…ÍyέZµJÂrÎ;÷êÁƒÿõ'?ùÉç]>¯µ|·ÜrK÷—¿üåÿ@Hû·f혠 PvqQ.èÄñ;~LhÇ2^.–ÔÛÛ£•+†ÕÇØÝÕ¥X$¢0¾Þlx¸§ \ZXÐüô 4`šŠà)\ ¿§G+VkÅêÕÊŒŒ*ÚÛ«8Âå{_¿À†*Øð|ðÁ/ã"•×Jþ·¿ýí+>ÿùÏÿZ¹`²ŒçÐìäÅ‹:úÊ+:ðÒK:~ò¤f¦¦ñÙ^mÛºU›7mR"‘¯éÉïµÈ1ób„¬E4 qìr_µZ³sž>vL Ñ€c³ï‡ñ•0½býz¥V*Â÷\bõu×Y E_ùÔ§>õàÉ“'‹?/@ú^æ?ð¬ùÌg>óHÿ&DåÛ;16¦þð‡zâ?ÐË/¿¬õÎwÜ£»n¿]סõ ¾ÄTÓjQªCœKJJtˆsqÆnçZo2¥uÖik¹°°¨/ò7kKKòUª ˜JÝU®„•»n¸á†­XÄcçÏŸ¯þªà¿óÎ;W~ö³Ÿý_Äõ[ гŸÃL_Ú@=¾WÏ>û¬\|û½¿÷{ºãoÔ À•§ÓN‡é³ ¤¤¨1ñ&$™âœ¡˜½Æy¬"&\·n½ºÄüô”ªhºœË«º¼$‡µ„ˆ Ÿ£<Ç\!l£6îÛ·ï»àRý—€0×ÿÐC}…‰ïĬÙO]º¤çŸ^ÿ÷±GuèàAíÚ±CÿüÞ{µ²§WéãWh8 …a ¯WÆŒþ¦ F¯uì3Çöº!)Èäñœ[;Á"ª3sª±†Z‰ÐJD±Bð3#––Œ»JBæ&²ÐïÿûãZî?Vy{êá‡þÏk×®½Xn23MÃüŸ{NíÝ«³§OëÝï|§nÛ½G]€Z†…tY¦a¶Í¤E|3¿oB7m$hjŸw콌áX0l2YÝZÏðš jNÝBŽ0ZS=W@e,!ˆ¤#*ÖjÖXû.’³e„°_Ìþ €¸ù¾pïm·Ýö_<Ì[³áù´÷ñÇuÄ¿ï÷_ G]øbÍã×v‘!hiµÍX›©¦eš±}¬ö±ÚÇºêØŽ¬ÃS @:žBEÉ)×5´ö:5–Á7'§î"„¢ü`B°m! •ä ¿CŽò.:!füEà§€Ùô‘|ä¯@à¤Éè– s@óë($ÇmXRƒCVƒüUÃ4t%óÖ±q ¯Ó‰Ì›s–<¨óŒ¸¿Ñ,+ê•Ï Qÿ³× ÆúrN«o¼IÉá^%¸ ÏWuOŸUAÔ³9ÍĮ̂»»;zë­·þ‘¤ðÏ@àCúÐ0™Û óµr°›Ð‘Ç4KNÿOÞ|‡’†Q(…xšåKVã®e2’LjhËfVÇ :ÌsÀù€†wnSzh¨ã!]½ö35¯¦hº[øÈ5VdV«*FjÝ{ývÒëwZ]MÀº<²È 4%øÊ•+ßsß}÷mäüTP‹'ßö¶·ÝOï3åÉÀÆOžÐÒÛ5Ã+µ²;£d‡yäs¦–j4sü$~X±LSÚ⫤À}½W¹Cr ­ä†!…!û½hMyE.¾ÆmšŒ÷¦%ækª~ùš×S_hCáÔ½y»ÂqŠ),/dÂ-¹&§äRŒ %.’=Ò£Ý~ûí5lþؤgÕððð›mÓšE’ãÇ+73«=Û·+ᵘ{m4®ÔD 3n¨’]Ö¥#GT^Zj#»ÔCÞÞ 68Ž×X­®õƒr–6+¤Òç_xAYòŠ+5ëY`l ÃO|ö­’È n8Wcîš‚1O‘• ¥F7*>0Â÷ eÆ/YÅ€Žj^¼d± Š@\ÎêïÓ?M¡ûï¿ÿÂ^ÌÜ\ý/ž;§KPhº²¯Ï21ɉõA4Xª,Êok59^,¿`Ý2'=ݽKÉ]*ãï1ÂÔòĤ.ìÛ¯j¾Ð6ýF'b@®%¾[l©sêÝ,gx½jñªêáyñ¬ºnZ£þ7¿ÜYXÂ8@éHÍ*­æ˜¯?/ó“¾+èÿØÇ>ö–+ùtL¼_·nÝ?µý:È€ßÄÙsÊÏÍi#‰a>jÒR™,ÍÿÁ°ñ9O5¿ƒ–bÝ6~/ò\yiY}ëÖÊG/X*)Ú·Z /=¥ì‰9î½::t¢‡ë•äsLV€FIaú¬b=ê¹î5†×©^)Ú{Ó<ë„T/ÍkùÌù8¾ª¼u"ccrR>\³)‹.´FFFî‘ô·PõJøèëõQìlC¶F_šŸ× À犄yOà} ôÔ§*K•LB=#a’‘¸l… ¨%úûY\U â}”’6hÒeªD íL‹i›½Ë¼ôÊ%‚CjT)tf/¨Ð3È<+i“™+m@o !VU¼ôŒÊó˜,puªgÀµ„0—³ªÓ‘ fº,’"ß*)~Þ÷¾÷í¤ç–2u~¿^dñ¹ù9…x¨/•´¦¸Bû£DNŽeôÓÌTªæ€Ì-!HV-Í:…2×Y»Kv÷®&aüïµlÐÀ×Á§.©Æ\B EÎØÑô J¯$ÄÊi'W.eòi'žCkWI€c8–C[£?Û¸ÑâU2™}ï{ß»–VÚ’¹«ã ÁÍ›7ïhXàñlsyvNUâhŒïi6ÈõuÚ5äZr+g³08HÒâZÁâûhÇø±¡ºÜ&…LwŸÕxÇÔ½Ës¹t‡`<ˆ0 }Ìc®c~ùò!•OЫ‡9Çù¦Áž%Î?¦Â½_Ï_[ùÚ9ÁkJ‚?Û~§HºÑ(ýJ c×™ðYÔ,PA$Ú¥l€ór˜TsÙÓlÞßX2¥éœ¢ƒk”=ôŒ*—j<°ÅLxuL™pT$ZšœàºãÍËé°[­Ñè˜WàbEÑë×`æa-;¢Ê‚†[÷øü5…ÎV£VQתõ˜þ³ªÌ©´€[¥záÚþÌØô˜WNVy= ®o  a@ºåäh[6*çsò×ê¶;pë˜bø,¨<¨VÀß'N«gãå‡FÉžWyÁ3‹‡hhÀ@3¡*Ž5À,âF¥SY7ÁÚ–TÊ䔸gi¢^¼ üÅÆU@Œs_í»òn½Y•ɧT^¬©YŒªç– ¸ “V‹R‰ S”Y…€|êݸU5h\ ¼1{ë¯55ŒöKÆ ±¿dPËH„z”Y£){ ,ÁÝ–"Ì[G³í¹.Ô´¨ælȲ‚‡méÍwS” ÏWº€ ÿ•ŽÁ€ÂÁ@³Ì§Ôà8”4<£Õ+üâ$£Ÿ>},iQ[œ6¦Ù¾î¶Ì¹èÓÒñƒhÆ0U’ÄMp/ˆcØ90K1U*£ÕËî†æý¤Ã!UªäEÐ$"@ÿ)uЮÁ,~ÏØÖ&kó)œL^Ö^–ä]iUŠ…,äð/ˆ´¢ÔóS†VU/M* j»KS §Cª.¹åcH]R3U¼·Ou´_žºˆ 6!×,8*-žRaÃF¬`Ôj…§Úëhù7DìŸFM ‚£·ÜlŒúˆÏÊõPBYq”Qžá82¯j†êjD0nJ‚šm†àËà^i^7_h§ŠVq:-a€Êqrª.7•;úІn¼YÝë7ʹ~7þ™g¸E"iÍ+Ľ ”.žÅLbÒ°!ÈF”~KYúê¸J7lSjhX°)b”NÛâ"o¯JÝRÈ ŽƒuÆYÅz©'Ò1ÖÓ$¯™PbTÇß³±º’ƒŽUT¬ß£6ÁÌÉðù‡ÉˉËGcÆo’ æçc6[œfh\‰µ1>nûúZ‚ú?ÂÃLbM¬|>¯éçC%ù …ÉL !qîqlO<ž!ïžÅm(m½ô´ÕMÝ@š=WPiò÷Wí3ÔtI™·xáè^6÷ÙnÑùgŸÓô±«´|FÑ?fÂÕŒ"é¸B©¨bAõmuÔ³ÉSÏ–MÖ×Góµ6\ œ8gá L÷¥—^:r >ù䓇y—V278”qÅ Œ 5%ê{)wø¨æÇaÞybï„Ù–¼š·üécÄæ&×=Ë|Ç:„P¸† °˜·fÏ Â$õÁô^ÍïÂjЫYEhÐñ qïç/âç0—HQ|õp-Ná¢ñüí0XC÷5¿"N‹É …»ôL”0ÿi¶üIôø\d3ëÔÛHIf2JPâæé¨Ø\Úåá 5Í=ÿÝ!ÅúúU]0fiêýà5§:UW-1̶£ƒÉ`WAŠœs­Éã›0X€¡yy•3¸ØQ¬b™â†45à´ÜGé#X˜AõypaI¡®q” Y@äpQ±6a1níWÀŒ Ñsñ'Sªt¥qÛõʶ7fÍÏÏ””ýÉ–XšÇ ž!­™ø1ôš5 ¦Rí¦¤Ðœ£üI%ûžFq†2B¸Ó3ª-/e¡«Â—µÍBãj A—‰.ª:¿¬Ø‹Æ2OVE„ ÖØŒÎA`ä<_gþóÌ;KhÂxDÂö­ðë.æ‹ó½ÝªÉá÷eBxí“p3¥®ß*_v"a®Û‚B3i¨/ ÀÅv‹¹³.‰H…P›'õ¾„ÔZÏøMvˆ@Š—kÜ£lÝ µÜ¬U¸7Õ,È&ŒGÜlÚ $/oç yÛ bÓÄãùbqÊJòZØ“³{÷î}„ö¸ÙÜè‰IPä½ ry(gµZ+8Êž×çû÷ì„Y7Õ)T¦h^Vlc΄"P­$sŠa]2aϱYœÇ²/_ÒüË 0Ƨdf°SžØfK­Æ]|Šx€&!¡vó÷.¨²Ñ¸2‹ö—0ÿ2€Ûž%ÃÜðÏÞ­ºÏéìUt¿ÿÝï~&Kâs:IÒþýûÇ ^Ù¾}û6úg „]»viyó†©&¤†0YrƒS§Ô½i- Fð×=þW´4c-³¦þ™çŒU«{£ÇËM—L.ˆµ y‹f€É,é3šóÈ'^Üå&î—FvŽýT™}0iæu  -’8!wù° ,Œ€t¬icá$URzµ§ÞU®zw@r˜ù°#!üÿ¬§ì´0u®i:á]`£DÌS¨§ýrÔ¶¡XÃ2ÚŸW&¹ç" Y$ûuª/¥þ¡j‘IzD’WûÆ#<8~öì13åÏz=î² u†wiÛÙj²&²€˜ÂPin¡/Ù¢=­Ä' Å¥+€• Ô¤¦€4͉¦º`¾geƒf‡@ `¾A›[ج¦-€ú‚G²ãSiÞ ¥£ýN%k)Á\±>µÜ­Á‰<7ÎPúâÑÁi|?k6Gôê Òº÷QEyùºHdš››c/Óþ¯ýÍÃ?dò¹ŸwƒD‰ ˆ³ì¸z Â0o"Bˆ«Dùéˆ][vÆÓÖ€)@t8†ñ˜Çù¦R}žÒÃM¥·ø1_|3‚¢X@¼…àMY` ¹Ëž >¬G×~šÌÛƒ˜Ófƒ&Ý] Ä&ÞÏ`U¹0€™ÑYòýð»Þ®‘·½UÙrÉhÞßäŸýñ ¸ä2ÓÏ+€~3r:ìȼݸB!0 Ceús¾J™¢¤¦D£^  lFîöQ,ùö£u?Áh> ó ð E §4Åe0À­Ûö™“mx¤Ñi1äÊ-a£Ì™Iʾ-ò-¢ñYü}ʆ¹žÖ…DF¹›vkËÿ@E"Î,š'³s¿ýÍ¿}`ìС§‹’û‹n’2ûôÏÐ._Ë ÅÆ‚&´%¶ø©ÐÅMÆKŠgªDM+'à Sùa:àØjJò= ó/*ZMâšµ‚V,!bw5'Î1Ÿ˜ËAÓàE˜‰ ñ:ùýBX!(˜7ùFZçHgèíxàãªü-æÙÔñÜÓÏüù·¾öWÎtÅÌ.±&T8vìØ‰+Vì!" !kTÊ6)kåœRÝæ]^Í4%!A~ÌÑo²3˜”Â1L>Á÷ç“\sS¨•ƒÙ£kÝÉqÀ“~^G)X@7 Ó Ig‚ì( EèBø{ LÇ8Ø£þš¿I;>þ1Uú Ì£8³ŸéÑ¿ü“/|²[š[þ%ö zhiáøñãc¼6¿ <è PŒÇ¡$Ó°òK 0Õ¡ßÖöAb 0ú¡€>„ ÌÈy5ü&w‡Ìf§cƒ±.QÁ6Öä(éI]4c»2õvÃ<O—/¬p“ˆTCÜ„ª€Í‹<}×»´ù_ýK±”é™Ëüˇ¿ð—Ÿÿ¿I6êçàá—Ý)JëÎŒ#*˜©'‰ØL¯‰S§¯"ËJ«œ¯Õ-S ¶*sªPC. à„Ù¢+°–b•ã TkQÁØŒ¸P Ìé¢PœHùèM@¡&ÖW#ÛŒ&|Qf ›|PCwÝ¡,QijzÚ»Y¿øµ¿øï÷GòÙñ³¬ýW¹Y:‚ÜÄÏaþ”$iÛhDåh7H…Êb~^Åñ))˜W¨Qmí 5UþùšÿKýNí7Äí#žÔ)g¡  ¢mF/,LN4Á4V¦q×]Úøž{ÕÀ³ËvW:•¬Ž<ôø_?ô•wWJ§Kîk±]>DÇh+{?Åo~—\Áa’"!€ 3ަ§W>}?=¥eHIjÃî#ð×K[CÍvºkÃic‚Ÿó†`ÚäúhÞ£ºXqu®áÑ—Ü£MìG²-GB¶@’Ãþ?£ùÆ}ûþÇ÷þúoþëHÓ»x‘¾–?˜@Ã;wîüƒ7½éM&Sì  ©°ÉýYhÜAaÅœ ¯ž”&Çš¿¤š òö@‰ÔµJîn„À?ñŒ|P ˆy‡`8¢ãT©ªYî©bioxƒFØ}ît¥ñ ª–²Y›áMcögÏœ™{æÉü§£Ï=ÿÍ•Ôs%ïõøÉŒ¥ùÜzÇw|‚×ÍoÆ%|„KÅc1»ƒ;,)î(æC³äãEL´:5©æìŒ|0 ‚ywP·U^ÃT…áˆ\ÖKSãô«ËVõnÝ"nFÙ yäÅÿO­Ty5èÕ—¦`“š¿©?uÔ* ¢°×¯Ý°þÆÃÃ×”«ÉÔÊp$œ¦ñŠWÃÜl¯Ð²*Áü2m« ìN?791qøì©ñƒ\Ÿ¦úËŠ>Ѳäý6þxšº·—Èò‘ŒÃ脚œÇü=G¸=Èõ2›TË €Í ׯõ¨ß°_­7õ:þ_¼ÝæS ÂIEND®B`‚PyQt-gpl-5.5.1/examples/animation/states/kchart.png0000644000076500000240000001142712613140041022335 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î<”IDATxÚí› \GyÇÿÝïšsgöÒ®V»º½²„ Q² lŽ@œ@H ÊT€p䨊S`Š"EHGEc(S©ØØ±b‚mŽ T0’ É–¬ÓÒ®v%K{h¯™ÝÙyóŽî|¯_Ç3{i%°W¡Oúëë×;õf~ÿïë~o4³LJ‰ßåà¤k\3àš× ¸fÀ5^ú`Qàÿ9®Ê}»îs­FÒy•Dx$ï’yÎÑhšFcÒ6šR 3ÏÏ€I7 Q  ¾/ U_LTªþø¶u©ƒ‡ÿ«{ñ„ùÛ— ¯øÚ-Yë5‰„µ£T¶·,oY™r,¤“&2) Ù´…\ÆBÂ1`[LƒÃˆÄY†1dt ¸^ˆ=‡Æƒ¡¾_Z^Þ°î]ÑÝ•ÿ›íï°ßÝ7ë\×ÕÎÇæ$ ;†¥c=¦ùH¶©Æ–É”Œ¡ª¿ïèZóá‘Þýgr xÙÀ^÷K3¿mÓšÜ]ÉdíM F¡TŪŽ&0‚±m’lÇÐc–Ï™&‡É`ª}$!1íJLVŒÊɽw8ÿ²3ÀÚùÝ×n_›¿/Ÿm_74VA{kãÓŒ@Ü€P04À%,ààI¾`p}Àà‘$±KH %?”8ÚWFÇgJ…›@ñ²1€Ýòè²\"ùÕ6´ÝyqÂÅȤO8g%‚ÁŠÊàK/Œ*Í`ú$ƒÅÐÀçPðSðBJ”]T29õÔOî8ÀøËÃvóÏ·´æѶZÏ úa ƒ$Å  ʾàà>2+xFÀ ””Pwå’‘×ãȉžÓžW½ d.˜(>sóÍ+f†‡ïï?,CœdG¿&eõj@ð»w€'~\ªò¦BY*xS0½{fTQÉ TWV¨@KB,0]ÌØ„ú2ž÷B‰íëì±Ý¿ks žD‘äü³v[ÛÎÖ+vzÓÓpK%¸SSÁGÓéC~¹ü˜ÿW)¿è÷ì÷~Ý fC¶nvVÖpªÂ¼.se€Vü@•âj )Z>’²D÷ Ö侃‡÷~ï&Ï8(?þ-…OÒ9åW­2yôØ0DèyJëbfl ¥ÁÁ(Ÿq§§ÿ À=_’òÜ‹cÀëŽÿ„Ò›fA³z#.1f—ÿsÇbøã|ðá{>ÒNàü8üß¶Ë·m{Sª¥"‚®T@U‡O9 ¬•ÊdÆä¹s[,>Ä„øü§¤<ñ/v[ÿÁHüÕL<ó??ºnv(xpDyg“hÉçr77äóBÀdÑÒ3`X̨HÁÿI8MMhH&M2à=3ƒƒïþ"cØ]wK9qåï ñ§X4Ø‹¦æ,ÇÊæ ÿô³On³fÜRzß:¹¹¡©‰…ðI¢Phýsª¶éº0}ÁÛ¼”HH2†l"ÖåËÙ²öö;“†qô›Œ½áÊ7AÉnØo|_|9aÀk¶Zxò‰Ë º¶öñ†e!ÖX~Π—Ñšª¨NA³ '˜ç)ñj š×ÝÛ¶‘hlìŠÅŸÞÏØ§Þ#å?_¾Œ­üM XœaëZ[V³™‘á¡ÃΞ¸E [Ÿs}½£Xüøz*´©LÆ;(Ó&H'„ïÇF‘&)¤±:ŽcYŒŒù§ï1Vz»”_½<DpÜ~^İMFÐ[×Ó½ýC§|ø™ ]ËÌ<Øìê¿w@Ûø„SS঩:Jr®¯›Jd€ÔB\y•È êƒ–‰ˆ– +àâËO06ôF)w-m@P,Á^¶d{/ŒÀAcË*>Ý{nèôwvÚàÁ+ –À©ª¯áÇ» ì¿Ï¨ “ôm# èÐ]‚¦*+P°¤ÊóH5๙12áÇŒ=öf)«—6 tº-í`W¬“çØ²’O÷ôŸ~à?]‚À9À :„I9’¡ôñ- ‰§~··\É'1è=@‹I©æŒ9[3æ×çŽ ð÷,±ª×ÁݧýÖËf]×·®fØ¼Š—zÎõ<ðȳÜÀ¬ÍBšz®%aà]k%¦=†Pߺ˜!%çÁè¼ðâ¦Ü¹´Ü&ì@ë²àæ¦Å€çƒCŸîê}à‘㸩«©…ÚXÈЉ °ðÅÚ¶­AÃûßÒÃC–Ë/ ‘ªÚ/J´.½ÂÆè/–7¯}ã±ñsó¢à6½nlêDéTß…þ9Õr»ª´ApR@dè¹þÔdý£žoïÓýèZÕ€pR;wbê¾ûPݿΒž'¥IYR†”×b¸²(MKÞ ³Wÿ@"¬Â…inÐxû³étêÕ3n}Åcð+ÂéS½çÏ8|f]JÂD#ͪu›'ÓãX-éiwìâ@"2ëm#¿B‹7ü–pÇ»þ7m^ ï©§ð«o~c…‚=hér¶ ¦âX:öþLÊ—6`çR U•×oèÞ_M¾bÍÅIÞv_Oà'Nö8Ò¿:¬NZ&ãÇJègz\ž;×è½ÂøE;2àÃ?Dzê$B˶nœ|Ó{ßit¬ìÌœþÖ·0ø³Ÿ]r!š¤R'ÉÆâñaàJùúKpË“’ PÁ“\5¶-9ýÖß¿u`¤P¶öèYV§L¥yÕÕš37ߌœ9êOÇ-ÀÄ»ˆvw42€„” eó†à­ï}ëñÜW¾‚Êðð¢F0­6ÒJR³c (¾HöH™XzÔ×\=Pòüjfzø@ç©>™+%ý®-ƒ1²v銃/ ¯ ¼ð4É€I0% €'Ž6¿ý±DÛ–ë÷üí‡ÐÙsŠ>öóŠÅMР(Vë®Ð|ÖÓˆÛ—Þy¢\gცM)m" ˜™9@W8†€€ ˜‘&R\Á‘ÙÚ(Ž>g|çèg±lËÆðÍÿÖò]»Xåùç±X\ M“Ö‘îEb_ìö,¨XºdwSñ†ÆÍ¨.<`)ÀçT–Ïiw>\Fã¬%…#ãg Hj&À¢±¡—ƒT™EYñàÇÿ­[7…øÑa½_5†z“Ï<³à]J%™Äç+b̃}k! 0 IqéË ¤’‚£¹%’Ù,@d€¨«ÌkclvIì9!8`dÕy-Ûã[ðEW2$‡PÈ@¨³¨ËSGN÷è“hݶ)¼ã/>ˆíwgáÄ8m–2 ÁÞìfY¨¶xH|Xcö4€Ì1pû}/P˜Eã4eSIp.•&€œYK¬VyÆ8rYÙ•gùù _ë߆|IV“pœ)Ï…˜0$ÁJB ZeÒ#JÏž4¼ëhÞºQÜq×äwßm ïÚ…'OõT/ë·ZÜ U¡’2à Hç¤î˜5xE‘V@2ˆ—‚)Uë#$‰¨Bž¥ùÙ µ*/TùHêüÈel4®_¿ÕeM$uÂnXf½~Oò»MdÆ]Pñ ”€P&HëcÈY†HRéÈ)þÐ_~ Md„cACqÆiJ%Q¿ÏÇ4$œ¸ ›õ¶?Ë=ΓtÛÛºòZd‚`.Bé\CƒÍU¡RWn!·z|ÝA„ÙTàù° ä¦ßs{ ‰÷%°rw •a ,Õ²ÑcIcY«c0L“™îå<™´·‰T™Q–Alž¾w^Ì€V0V›6te‚Z‚Ù³a£!ǼÊ3hHÛÈ­:¶f_ AUÂ$ p0+Ü”À¡ÛÊ8AFlޗνi¸QGø¬††î ®@Å †$l )ljÁiB«,በ$c¡=ÀŠ;€éÂÆV$<¡Æ~àªãùÿ? ëŠÏMs4t[½AzAø3’2Á‡B $MZP&” +lò;>gÕxú538ö*Ž-O§±foÕB¾ëìê •ÕòPÇŽcCu€6 ^FÙêYù<ô$‘J,l‚/ä4^øLgLdWô]{¤âJ—"h Ä/ Ù^D‘’èaEŒ™.:½ r¡Ï[5î(áè6†­‡3X¿? ¯XU{„êˆ"6A+™ H8`\sH`JˆIT‹]ªCp:št•g™àKKëBgR&2Þ±^b †"hUm BŸ'Œ ÐxÈŸ&$àÆ—ºqTP`.™…ÎJ 9ߪuéÀ¦*ެc¸áx݇“tþ€ "^訬 H9 ¼&© ©zîy%R0Ï=9™3çXÑ9wCÁð8ç <Ýv²À µŠqÕu_Ɔ31tÃs÷?* }S)m„‡‚å£Qèš¶‘ó pÁàØ¿¶ŒÃ]ÛOå°ñd~ð$ôrd€TR€¸õ¡;ad&<`lÁû=9éÇÐüÚíʲY&U_*ðt’\^Ö Ù²®U\èŠK„$@Ákð2AŸ ªWL’\R©a!#Ò9G×$CÞÕŸ=±]38ÜNFôå°¹§¾´É¶AE‰ ô` ~ÈuÏî*^üÅ‹0г÷}ío œöæ¹&ø!`''Ñ|Ý^T“½˜®–QuCš×U–uà\ƒgN×À=Ý€.jêš´ ©z#€qC ò ³ä\ÄKC„Ø·jÏ­¨àÆcÍX5ÙÎ9Ž¥ à’FEÞÃç¿ í.-x+Ls‚16oô8žûä×±õŸ³Ìz¼@ÊÀÂÅñCpŒuȧ²ö¦Ã"füiÂ[=Cà©<ˆûÓ×ïL<,^ìmBr¶Plr «ÄÑdÐáå‘è-â8+aƒÝË0$ç,º(øjz œûò¡ÉÂ/\$ù—z3䑆0òÓŸàü¿¯ÇÊÞ p¦Mˆ74: ½.?…I_"eµ Ñ^‡Õ \¶µ÷J/9ÈG+Àh¹åèƒËÉ2„'°`0,z‰(¬¤…´“Fs²MÉ&‘CÃp¥8Sî»Ðtþâ@S¦ïðÍ<‡*op“qD1c°Ò§Ÿ>ôùŸ;÷Cý±")5@wA @N}úTG¦±þ#æØ`€êûZª)PÆ”ßÇ@¢—%|×Ù×lÌmÄmÍ·¥ÚÓíNsC³Y ªÌ \”½2fª3˜ªN¡ä–0åNQÅ,d,’V);…„•€c:° [Š@„ã¥qo¤2Rî/õ»=zǦÆ:à#Þò@ƒÍÐVbàHp¶a„d‚uøâè‘ؽ÷+†G÷$ÍHŠËûxœ1‹RŽ´­¯#6}îðۚMÈ 2¥²÷VȲ½4Hº¢~µ$'á #Ñ!:NÑh7ÊŒay;/sfŽ5Ø ÂÅJ…JA–ª%Lº“l¨2Ä.”/…r!>_ ×¯{-< yÂzösåÎÎó‘¾þï~ûYõ¿^TÕ¨¸WðEIýÎðHí0²qý§Þ‡¦[w";˜Bûß§îl‡ÐÙªÁêˆÎ$A| è/1§P!k?Ó{Ì£xŸAEÒ¸~ÓHŠ+þŠŒ”2T›"PEX*àøßõ#Ó*¬?ÞU•/€éX('Z|NÖR!µ„ž“:Ï›ÓÇ\KÔ×cq5{ªîU…ªê¿Í—¤ô *d„Gy Ńϣ6„Þ¨x ZKÏ…^Â9ç¸=_Lçú%[CW^Ü/KënÐ'.á$~~| 3œ ºÄñ¢ª7ÏÌ¥Mp1AÍÿ<îf¢¸j_–¦ssý!M;i ¶àvlÂ[Љn$`Ú·ök2ØüÙY—>ö z°Çñ\œÐ—¹"ñøWË€zmDc¼Ib9¶áUX‡Wb6ÐQ;Wl€‰¹"Є܇!ÁiìG}úÆf´v©7¼«fÀ|#LmFRßÑç•)I´ ›ìèIJ¢Íh'5#’°U¯Úø/¨ “ô§@¸$¼sxž`Ç0  U$•õNä‘„é_@¯¹HF!6)Q»©U9Q× †«Ûú‚ZV`•Rç JÒ½±ôÕ7`iCÙÎPËÚ€8D-«¹PC-¹ðËÉ€¥¹ÌP /Q\ûÕYàÚo]3àš¿Ãñ¿Ò®âZïiNIEND®B`‚PyQt-gpl-5.5.1/examples/animation/states/states.py0000755000076500000240000002754112613140041022237 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QPointF, QPropertyAnimation, QRect, QRectF, QSequentialAnimationGroup, QSizeF, QState, QStateMachine, Qt) from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QApplication, QGraphicsLinearLayout, QGraphicsObject, QGraphicsProxyWidget, QGraphicsScene, QGraphicsView, QGraphicsWidget, QGroupBox, QPushButton, QRadioButton, QTextEdit, QVBoxLayout) import states_rc class Pixmap(QGraphicsObject): def __init__(self, pix): super(Pixmap, self).__init__() self.p = QPixmap(pix) def paint(self, painter, option, widget): painter.drawPixmap(QPointF(), self.p) def boundingRect(self): return QRectF(QPointF(0, 0), QSizeF(self.p.size())) if __name__ == '__main__': import sys app = QApplication(sys.argv) # Text edit and button. edit = QTextEdit() edit.setText("asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy!") button = QPushButton() buttonProxy = QGraphicsProxyWidget() buttonProxy.setWidget(button) editProxy = QGraphicsProxyWidget() editProxy.setWidget(edit) box = QGroupBox() box.setFlat(True) box.setTitle("Options") layout2 = QVBoxLayout() box.setLayout(layout2) layout2.addWidget(QRadioButton("Herring")) layout2.addWidget(QRadioButton("Blue Parrot")) layout2.addWidget(QRadioButton("Petunias")) layout2.addStretch() boxProxy = QGraphicsProxyWidget() boxProxy.setWidget(box) # Parent widget. widget = QGraphicsWidget() layout = QGraphicsLinearLayout(Qt.Vertical, widget) layout.addItem(editProxy) layout.addItem(buttonProxy) widget.setLayout(layout) p1 = Pixmap(QPixmap(':/digikam.png')) p2 = Pixmap(QPixmap(':/akregator.png')) p3 = Pixmap(QPixmap(':/accessories-dictionary.png')) p4 = Pixmap(QPixmap(':/k3b.png')) p5 = Pixmap(QPixmap(':/help-browser.png')) p6 = Pixmap(QPixmap(':/kchart.png')) scene = QGraphicsScene(0, 0, 400, 300) scene.setBackgroundBrush(scene.palette().window()) scene.addItem(widget) scene.addItem(boxProxy) scene.addItem(p1) scene.addItem(p2) scene.addItem(p3) scene.addItem(p4) scene.addItem(p5) scene.addItem(p6) machine = QStateMachine() state1 = QState(machine) state2 = QState(machine) state3 = QState(machine) machine.setInitialState(state1) # State 1. state1.assignProperty(button, 'text', "Switch to state 2") state1.assignProperty(widget, 'geometry', QRectF(0, 0, 400, 150)) state1.assignProperty(box, 'geometry', QRect(-200, 150, 200, 150)) state1.assignProperty(p1, 'pos', QPointF(68, 185)) state1.assignProperty(p2, 'pos', QPointF(168, 185)) state1.assignProperty(p3, 'pos', QPointF(268, 185)) state1.assignProperty(p4, 'pos', QPointF(68 - 150, 48 - 150)) state1.assignProperty(p5, 'pos', QPointF(168, 48 - 150)) state1.assignProperty(p6, 'pos', QPointF(268 + 150, 48 - 150)) state1.assignProperty(p1, 'rotation', 0.0) state1.assignProperty(p2, 'rotation', 0.0) state1.assignProperty(p3, 'rotation', 0.0) state1.assignProperty(p4, 'rotation', -270.0) state1.assignProperty(p5, 'rotation', -90.0) state1.assignProperty(p6, 'rotation', 270.0) state1.assignProperty(boxProxy, 'opacity', 0.0) state1.assignProperty(p1, 'opacity', 1.0) state1.assignProperty(p2, 'opacity', 1.0) state1.assignProperty(p3, 'opacity', 1.0) state1.assignProperty(p4, 'opacity', 0.0) state1.assignProperty(p5, 'opacity', 0.0) state1.assignProperty(p6, 'opacity', 0.0) # State 2. state2.assignProperty(button, 'text', "Switch to state 3") state2.assignProperty(widget, 'geometry', QRectF(200, 150, 200, 150)) state2.assignProperty(box, 'geometry', QRect(9, 150, 190, 150)) state2.assignProperty(p1, 'pos', QPointF(68 - 150, 185 + 150)) state2.assignProperty(p2, 'pos', QPointF(168, 185 + 150)) state2.assignProperty(p3, 'pos', QPointF(268 + 150, 185 + 150)) state2.assignProperty(p4, 'pos', QPointF(64, 48)) state2.assignProperty(p5, 'pos', QPointF(168, 48)) state2.assignProperty(p6, 'pos', QPointF(268, 48)) state2.assignProperty(p1, 'rotation', -270.0) state2.assignProperty(p2, 'rotation', 90.0) state2.assignProperty(p3, 'rotation', 270.0) state2.assignProperty(p4, 'rotation', 0.0) state2.assignProperty(p5, 'rotation', 0.0) state2.assignProperty(p6, 'rotation', 0.0) state2.assignProperty(boxProxy, 'opacity', 1.0) state2.assignProperty(p1, 'opacity', 0.0) state2.assignProperty(p2, 'opacity', 0.0) state2.assignProperty(p3, 'opacity', 0.0) state2.assignProperty(p4, 'opacity', 1.0) state2.assignProperty(p5, 'opacity', 1.0) state2.assignProperty(p6, 'opacity', 1.0) # State 3. state3.assignProperty(button, 'text', "Switch to state 1") state3.assignProperty(p1, 'pos', QPointF(0, 5)) state3.assignProperty(p2, 'pos', QPointF(0, 5 + 64 + 5)) state3.assignProperty(p3, 'pos', QPointF(5, 5 + (64 + 5) + 64)) state3.assignProperty(p4, 'pos', QPointF(5 + 64 + 5, 5)) state3.assignProperty(p5, 'pos', QPointF(5 + 64 + 5, 5 + 64 + 5)) state3.assignProperty(p6, 'pos', QPointF(5 + 64 + 5, 5 + (64 + 5) + 64)) state3.assignProperty(widget, 'geometry', QRectF(138, 5, 400 - 138, 200)) state3.assignProperty(box, 'geometry', QRect(5, 205, 400, 90)) state3.assignProperty(p1, 'opacity', 1.0) state3.assignProperty(p2, 'opacity', 1.0) state3.assignProperty(p3, 'opacity', 1.0) state3.assignProperty(p4, 'opacity', 1.0) state3.assignProperty(p5, 'opacity', 1.0) state3.assignProperty(p6, 'opacity', 1.0) t1 = state1.addTransition(button.clicked, state2) animation1SubGroup = QSequentialAnimationGroup() animation1SubGroup.addPause(250) animation1SubGroup.addAnimation(QPropertyAnimation(box, b'geometry', state1)) t1.addAnimation(animation1SubGroup) t1.addAnimation(QPropertyAnimation(widget, b'geometry', state1)) t1.addAnimation(QPropertyAnimation(p1, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p2, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p3, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p4, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p5, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p6, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p1, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p2, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p3, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p4, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p5, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p6, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p1, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p2, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p3, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p4, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p5, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p6, b'opacity', state1)) t2 = state2.addTransition(button.clicked, state3) t2.addAnimation(QPropertyAnimation(box, b'geometry', state2)) t2.addAnimation(QPropertyAnimation(widget, b'geometry', state2)) t2.addAnimation(QPropertyAnimation(p1, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p2, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p3, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p4, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p5, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p6, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p1, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p2, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p3, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p4, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p5, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p6, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p1, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p2, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p3, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p4, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p5, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p6, b'opacity', state2)) t3 = state3.addTransition(button.clicked, state1) t3.addAnimation(QPropertyAnimation(box, b'geometry', state3)) t3.addAnimation(QPropertyAnimation(widget, b'geometry', state3)) t3.addAnimation(QPropertyAnimation(p1, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p2, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p3, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p4, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p5, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p6, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p1, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p2, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p3, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p4, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p5, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p6, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p1, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p2, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p3, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p4, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p5, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p6, b'opacity', state3)) machine.start() view = QGraphicsView(scene) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/animation/states/states.qrc0000644000076500000240000000040112613140041022353 0ustar philstaff00000000000000 accessories-dictionary.png akregator.png digikam.png help-browser.png k3b.png kchart.png PyQt-gpl-5.5.1/examples/animation/states/states_rc.py0000644000076500000240000042321312613140041022714 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 17:13:38 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x15\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x14\x91\x49\x44\ \x41\x54\x78\xda\xe5\x5b\x79\x8c\x64\xc5\x7d\xfe\xbd\xa3\x8f\xe9\ \xee\x39\x76\xa6\x97\xdd\xb9\x96\x3d\x66\x61\xef\x05\x61\x6c\xae\ \xa0\x38\xb6\x20\x4e\x2c\x22\x27\x32\x09\x92\x0f\x14\x20\xc6\x81\ \x18\x84\x92\x08\x59\x8a\x30\x7f\x18\x04\x09\xe0\xf8\x08\x47\x24\ \xa2\x24\x76\x14\x9b\x80\xf3\x4f\x0e\x27\x86\x80\xc3\x61\x60\x31\ \xe6\xb0\x21\xbb\xec\xb2\xf7\xce\xf4\x4c\xcf\xf4\xdd\xfd\xae\xaa\ \x7c\xbf\x7a\x5d\xf3\xfa\x98\x49\xef\xb4\x90\x65\x29\x65\x7d\x54\ \xbd\x7a\x47\xd7\xf7\xbb\xab\x66\x6d\x48\x29\xe9\xff\x73\xb3\xe9\ \x97\xb8\xbd\x74\xed\xb5\x03\x9e\xeb\x66\x09\xf0\x84\x18\x23\xe9\ \x67\xa5\x2f\xb3\x42\x88\xac\x14\x18\x63\x4e\x04\x22\x2d\xfd\xe0\ \xdf\x7f\xf3\x95\x57\xfe\x8a\xfa\x68\xbf\x30\x0b\x78\xef\x4b\x5f\ \x4a\x54\x3d\x2f\xeb\x48\x37\x6b\xf8\x41\x96\x04\x88\x04\x04\x02\ \x41\x56\x92\xc8\x52\x20\x43\x52\x52\x8c\xc9\x40\xe0\x9e\x60\x82\ \x29\x89\x87\x70\x4d\x18\x87\x08\x02\x12\xd1\xb8\xd9\x8b\xc6\x46\ \x21\x86\x2e\x3a\x70\xc0\xfb\x85\x58\xc0\xcf\xef\xbe\x3b\x6e\xd5\ \x6a\x59\xd7\xf3\xc6\x4c\xc3\xc8\x0a\x62\x12\x06\x2f\x18\x3d\x8d\ \x19\x22\xc8\x0a\x49\x59\x92\x4c\x42\x86\x7d\x20\xd3\x20\x47\x06\ \x6e\xa0\x03\xd0\xf3\x80\x00\x26\x21\x19\x12\x64\x00\xdc\x23\xd9\ \x84\x7a\xae\x1d\xb4\x0c\xd2\x73\xc9\x63\x52\xee\xbc\x88\xe8\xcd\ \x0f\x44\x00\xef\xdc\x79\xe7\xed\xe5\xb8\xbd\x29\x79\xe2\xe4\x88\ \xb1\x6e\x24\x26\x0d\xca\x1a\x64\x8c\x11\x48\x12\x49\x80\x06\x7d\ \xe2\x26\xa1\x38\xee\x42\x32\x7a\x61\x22\xec\x43\xed\xf0\x98\xfb\ \xe6\x75\x04\xb9\x32\xa4\x86\x88\xde\xd7\x08\xaf\x43\x88\xf6\xdf\ \x34\xa4\x7f\x01\x7d\x10\x02\x78\xec\xc2\x0b\xbf\x72\xc5\x95\x97\ \xdf\xe5\x98\x43\x94\x1a\x18\xa0\x40\x88\x90\xaa\xc1\xff\x55\xff\ \xa1\x50\xf4\x7a\x28\xc3\x61\xa4\x9d\x88\x74\x34\x56\xef\x5a\xa9\ \x34\x05\x8d\x3a\x5c\x99\xcd\xda\x65\x33\x50\x30\x63\x36\xe6\x1b\ \xe1\xb5\xd0\xc4\xf1\x46\x32\x41\xa4\x85\x55\xa9\xb4\x0b\xa3\xc3\ \x2a\x84\x30\x2e\x30\x0c\xe3\xef\x25\x5a\x5f\x02\x30\xd0\xee\x98\ \x9e\x4e\xce\x0c\x0f\xdf\x5e\x2f\x95\xa9\x54\x2c\x53\x76\x7c\x9c\ \xfc\x72\x89\xc8\x34\x69\xb5\x66\x26\x12\x24\xea\xf5\x48\x10\xe1\ \xe2\x99\x8c\xd6\x54\x48\xcc\x60\x01\x0c\xa0\xc7\x3b\x98\x0b\x6a\ \xfc\xb2\xa5\xe6\xfc\x5a\x83\xac\xc1\x21\xf4\x35\xb2\x86\x06\xc9\ \xcd\xcd\x13\xa5\x53\xca\xf7\x85\x03\xc1\x60\x5e\x13\xee\xd6\xbe\ \xb6\x00\xb1\xbf\xa9\xa1\xb5\x0b\x80\xc9\xf3\x72\x3c\xa2\x6d\x41\ \x10\x0c\xd7\xf0\x83\x85\xa5\x22\xc5\x76\xee\xa4\x5a\x6e\x8e\xcc\ \x64\x52\x4b\x49\x6b\x5d\x75\xf1\x6c\x96\xbc\x42\x81\x12\x1b\x36\ \x52\x50\xad\x84\x6b\xf1\x3d\x32\x62\x31\xe2\x4f\x06\x9e\x47\xd6\ \x40\x4a\x09\xa8\x31\x3f\xaf\x34\xeb\xd7\x41\x36\x99\xc4\x3b\x1b\ \xc8\xc9\xe5\x48\xb2\x65\xc0\xd2\xbc\x7a\x95\xc8\x32\xc9\xaf\xd6\ \xc8\x84\x50\x02\xd7\xa3\x00\xe4\xf9\x5d\xe9\xba\x91\xf6\x05\xf7\ \x1d\xae\x80\x1e\x2a\xda\xcb\x2b\xec\xd7\x05\x0c\x20\x31\x57\xaf\ \xaf\x9f\x49\xa5\xa8\x86\x1f\x75\xaa\x55\xb2\x86\x47\x28\x60\xe9\ \xc7\xe2\x78\xa2\xfd\xeb\x12\x30\x2c\x1b\x8b\x74\x48\xb8\x0e\x34\ \x08\xcd\x2d\x2c\x28\x72\x36\xb4\xe9\x2c\x2e\xc2\xb4\xe3\xea\x9e\ \xa4\xd0\xff\xb5\x00\xdd\xa5\x25\x08\x6e\x89\x04\x5c\x21\x58\x2a\ \x34\x4d\xbe\x33\x3e\x04\xaa\x27\xdb\xc2\x37\xbc\xe8\x9e\xd4\x71\ \xa5\x45\x18\x00\xfe\xb3\xfe\x9b\xdb\xb7\x8f\x43\xf0\xa7\xd6\xe2\ \x06\x76\x53\xfb\x16\x90\x2e\x04\xc1\x04\x07\xb0\x06\xfc\x31\x33\ \x98\x21\x7b\xdd\x08\x49\x98\xa7\x1c\x0c\x34\xe9\xb6\xe6\x2c\xcc\ \x2b\xc2\x0d\x68\xd2\x4a\x24\x95\x86\xdc\x52\x99\x4d\x5b\x49\xab\ \x7e\xfa\x54\x4b\x1c\x90\x54\x3b\x71\x42\xbb\x84\x26\xda\x41\x5e\ \x32\xda\xef\x35\x7c\xfd\x8d\x2e\x17\x00\xda\x2c\x63\x90\x88\x03\ \xe1\xa9\x7e\x2c\xc0\x04\x52\xae\x54\x45\x06\x39\x8e\x4b\xe7\x6c\ \x9f\x21\xd7\x07\x71\x19\xe6\xdb\x95\x4c\xc0\x87\x95\xe8\x00\x28\ \x3c\x8f\x47\xa1\x99\x57\xca\xad\x01\x31\x22\x2d\x23\x82\x3a\x4b\ \x44\x02\x88\xae\x89\xc1\xf9\xde\xf7\x29\xf0\xb9\xf7\xd4\xd8\xc7\ \x98\x94\xba\x2c\x32\x01\xb8\x5a\x28\x6c\xdc\x93\x58\x0b\xc8\xec\ \xc3\xdd\x7f\xe9\x57\x00\x31\x43\xca\x14\x2f\xd2\x81\xcf\x4d\xcf\ \x6c\xa3\xea\x7c\x8e\xcc\x78\x3c\x5c\x54\x77\xd3\xe4\xa3\x6c\xa0\ \x53\x22\xe9\x34\x18\x09\x81\x05\x20\x02\xc1\x71\x21\x04\x2f\x1a\ \x40\xaf\x82\xac\x61\x59\x80\x0d\x60\x8c\xdf\x34\x6c\x9b\x6c\xcc\ \xc7\x00\xa4\x60\xf0\xe4\x9e\xf8\x79\x95\x31\x82\x3a\xe0\x38\xe1\ \x98\xdd\x8c\xb3\x89\x94\xfb\x74\x20\xec\x27\x0d\x9a\xf0\xd1\x18\ \x2f\xd6\xf3\x7c\x15\x7c\x2a\xe5\x1a\x0d\x20\x1a\x3b\xda\x02\xba\ \x9a\x04\x09\x90\x0a\x3c\x28\xc1\x67\x2b\x08\xb5\x16\x04\x4c\x46\ \x91\xb0\x00\xee\xc9\x8e\x21\x63\x58\xb8\xb6\xe0\xd6\x36\x00\xc2\ \x26\x60\x19\xca\xc7\x03\xfc\x9e\xd0\x84\x18\xd0\xa8\xaf\x2d\xa4\ \x37\x94\x0b\x58\x3a\x10\xf6\x15\x04\x81\x79\xdf\x2f\xa2\x57\x64\ \x3c\x04\xb1\x52\xb5\x4e\x83\x08\x84\x8d\xc5\x3c\xd5\x0a\x45\x12\ \x2c\xa5\x78\x8c\x4d\x4f\x59\x86\x65\xa1\xcf\xc4\xc8\x42\xb0\x8b\ \xc7\x98\x5c\x1c\x81\x2f\xd4\xa2\x6c\x92\x11\x8a\x90\x43\x3e\x7a\ \x59\x87\x90\x9a\xe6\xee\xb7\xb9\x40\x38\xa6\x68\xdc\x01\xd9\x1b\ \x52\x32\x89\xed\x9f\xdb\xb0\x21\x89\xb0\x56\x93\x68\x6b\x2e\x84\ \xde\xaf\xd7\x17\xf1\x96\xd2\x60\xad\x5c\xa6\x42\x2e\x4f\xe7\x5e\ \x3c\x4d\xf2\xd4\x29\x1a\xdb\xb5\x8b\xcd\x34\x24\xa5\xc9\xb9\x0e\ \x08\x42\x73\x24\x55\x40\xf6\xa8\xc5\x0d\x80\xee\x9e\xc9\x74\x8e\ \x55\xdf\x4d\x3e\x22\x06\x88\xff\x1b\x62\x19\xb1\xcb\xe2\xf1\xdd\ \x7f\x47\xf4\x6a\x3f\x2e\x20\xab\x41\xe0\xba\x42\xa0\x0b\xd2\xb5\ \x5a\x9d\x4a\x88\xee\xf6\xc8\x88\xd2\x62\xf5\xd8\x51\x8a\x9a\xe2\ \xd4\x51\x15\x46\xe4\x69\x45\x41\x88\x96\xba\xbe\x83\xb0\x5c\x51\ \x00\x6d\xe4\x68\x19\xb2\x1b\x32\x42\xd2\x90\xfb\xa9\x0f\x01\x48\ \x40\x00\x7e\x2d\x08\x0a\x83\x42\xa4\x51\x0b\xf0\x02\xb8\x16\x50\ \x5a\x36\x06\x92\xd4\x91\x06\xda\x3b\x29\xb5\x30\x34\xe9\xae\x80\ \xa8\x02\x2c\x4a\xda\x0a\xfc\x7b\xdd\xd8\xd8\xea\xfb\x85\x8e\x31\ \x45\xa6\xde\x91\x39\xba\x61\x0a\xc4\x81\x35\x34\xb3\x85\x8d\x0f\ \x78\x2c\x00\x5d\x0b\xf0\x22\x25\x07\x31\x21\x9b\x5b\xd2\x20\x44\ \xc0\x10\xcb\x73\x22\xda\x96\x02\x3c\x0e\xaf\x45\x73\x4e\x00\x7c\ \x5d\x02\xf9\xe9\xcf\x5f\x4f\x57\x3d\xf1\x4f\x3d\x82\x5a\x07\xf9\ \x88\xb4\x86\x16\x52\x17\x8c\x30\x15\x9a\x6b\xb2\x00\xad\x7d\xc0\ \xad\x0a\xb1\x14\xd6\x02\x1e\x4d\xef\xdd\x4d\xd5\x85\x79\x15\xf0\ \x7c\xd1\x91\x09\xb4\xb6\xa3\xb1\x4a\x51\x25\x54\x83\x23\xe7\x9c\ \xb3\xe2\x26\xe9\x43\xbf\xf3\xdb\x34\x75\xc3\x0d\x61\x4e\xe7\x32\ \xd9\x30\x75\x31\x13\x91\x6d\x89\x0d\xb4\x7a\xb1\xc4\x58\xd9\x02\ \xa4\x54\x99\xa0\x1f\x0b\xf0\x00\xa7\xe4\xfb\x0b\x4a\x00\xae\x4b\ \xe3\x5b\x36\x43\x00\x79\xb2\x32\x19\x12\x5a\xbb\x80\x50\x50\x1a\ \x6e\x5a\x44\xd8\xdb\xdb\x66\xe8\x23\x7f\xf9\x75\xf2\x38\x40\x0a\ \xfd\x7c\x84\xc3\xdf\xfd\x2e\xcd\x7e\xff\x29\x32\x6d\x9b\x2b\x47\ \x6d\x29\xcd\xf7\x57\x44\x37\xf9\xd5\xef\xeb\xc0\x34\x7a\xcf\xc6\ \x8d\x53\x06\xda\x59\x09\x40\xa2\xb5\xb8\x80\x5b\xf4\xfd\xbc\x4e\ \x85\x41\xb1\x48\x65\x04\xc2\xf8\xc8\x3a\x6d\xd2\x0a\x32\x22\x17\ \xb9\x01\xfa\x0b\xef\xb8\x83\x26\x2e\xbb\x8c\xec\x89\xc9\xe5\xc5\ \x89\x96\xde\x01\xe9\xd2\x1b\x3f\x25\x6e\x89\xb1\x51\x7d\xef\x2c\ \xd1\xed\x0a\xd1\x39\x41\xd8\x8b\x26\x91\x75\xa6\xb9\xbf\x1f\x0b\ \x08\x00\x37\x1f\x04\xf3\x4d\x01\xe0\x22\x4f\xc5\x33\x67\x38\x13\ \x70\x5e\x6f\xd7\xa8\x5e\x8c\xb6\x06\x3c\x9f\xc0\x73\xdc\xce\xbf\ \xe9\x26\x65\x05\xd1\xf3\x91\x96\x1b\xc7\x4f\x10\xb7\xf4\x94\x12\ \x92\x16\x60\x6f\xd2\x00\xbb\x4d\x19\xbb\x4f\x07\x75\x48\xd5\x0f\ \xa8\x5c\xa9\x44\xf7\x23\x22\xaa\x24\xee\x27\x0b\x28\x01\x9c\x74\ \xdd\x39\x2d\x80\x4a\xa5\x4a\x65\x6c\x63\xed\x4b\x2f\x21\x62\x01\ \x74\x58\x95\x6c\x19\xc7\xb0\x71\x5a\x78\xe6\x69\x4a\xc2\x5d\x26\ \x7f\xfd\x13\xf4\xf3\x8d\xe3\x24\x72\xf8\x54\x47\x3d\x50\x9f\x3b\ \x43\xdc\x52\x9b\x36\x93\xfc\xef\xe7\x95\xf6\x3c\xc7\x51\xd6\x60\ \x59\x5c\x8c\x1a\x51\x0c\x68\xf1\x7f\xc7\xb2\x69\xc7\xcd\x37\xd3\ \xf8\xee\xdd\x94\x9a\x9c\xa0\x81\x2d\x5b\xa8\x84\xcd\xd5\x0f\xaf\ \xba\x5a\x0b\x40\x5b\x00\x7f\xe3\xac\x4b\x62\xb3\x23\x0d\x7a\x67\ \x1c\x27\x1f\x80\x3f\x2f\x88\x53\x61\x65\x69\x29\xac\x05\x5c\x57\ \xbb\xc0\x8a\xae\x30\xb8\x65\x2b\x15\x5f\x7f\x8d\xe6\xfe\xfa\x51\ \xe2\xb6\xeb\xd6\x5b\x61\x05\x4e\x97\x1b\x94\x17\xf2\xaa\x64\x4e\ \xcf\xcc\x50\x15\x5b\xe1\x7a\x22\x41\x9b\x10\x18\x67\xf0\xfc\xd8\ \x27\x7e\x83\x8a\xd5\x2a\x07\xd3\xb6\xb8\x20\xd6\x8d\xd2\xd5\x88\ \x1f\x23\xcf\xfd\x90\xde\xfd\xcc\x75\xf4\xda\xaf\x5e\x49\x87\x2e\ \xff\x08\xd1\xf3\xcf\x61\xc5\x1e\x2f\x3e\x82\x61\xe8\xb3\x01\x73\ \x0d\x2e\xd0\x96\x09\x9c\x1a\x4a\x62\x5e\x6c\xbd\x56\x23\x1b\x87\ \x15\x46\x12\xd0\x64\x3b\xd1\x9c\x1f\xde\xbb\x8f\x6a\xef\x1d\xa6\ \x93\x67\xe6\x68\xe1\x3f\x7e\x40\x93\x57\x5e\x49\xf1\xe9\xe9\x76\ \x17\x00\x1c\x69\x50\xf9\xf0\x61\x9a\xfa\xd8\xc7\xe8\x92\xfb\xef\ \xa7\x5f\xf9\xbd\x6b\x69\x6b\xad\x44\x5b\xb7\x6f\xa3\x2b\xee\xbd\ \x97\x7e\xf7\xc0\x6b\x14\xdb\xb6\x4d\x93\x57\xc2\xf8\xe8\xe3\x8f\ \x53\xe1\x1f\xbe\x4d\x07\x7e\xf2\x16\xe5\x92\x69\xca\x25\x52\xf4\ \xe6\xdc\x22\x3d\xff\xe5\x3f\xa3\xa0\x9d\xbc\xb6\x80\x99\xcf\x8c\ \x8e\xa6\x0c\xb4\xb5\x08\x40\x67\x02\xb7\x2e\x44\x41\xb0\xbf\xc2\ \x34\x37\x4c\x4f\x51\x0d\xfb\x02\x2b\x91\xe8\xf6\x51\xf6\xfd\xe6\ \x31\xf5\xe8\x85\x17\xaa\x78\x11\x90\x41\x73\x8f\x3e\x4c\xdc\xf6\ \xdc\x76\x1b\x9b\x77\x18\x24\x01\xd9\x44\xf5\xd0\x41\xb2\x90\x5a\ \xe7\x1f\xf9\x16\x1d\x78\xe4\x51\x7a\xfe\xdb\xff\x48\xaf\xdc\x74\ \x23\x9d\xbe\xe5\x0b\x14\x1f\x1a\xa2\xab\xbf\xf3\x1d\x92\xc3\xc3\ \xea\xd9\x91\x7d\xfb\x68\xdd\x79\xe7\xd1\xd1\xe7\x7e\x44\x42\xca\ \x36\x9f\xaf\x5a\xf6\x32\x79\x11\x92\xd7\xb0\xf6\x0d\x0c\xec\x5e\ \xab\x05\xc8\x65\x0b\x08\x82\x25\xa1\xb6\xc5\xa8\x05\x76\x9c\x4f\ \x75\x6c\x86\xec\x74\xba\x4d\xf3\x82\xa1\x83\x97\x65\x71\x90\xc4\ \xf3\xbe\x9a\x3b\xf2\xde\xfb\x94\x7b\xee\x39\x9a\xb8\xe2\x0a\x4a\ \x6c\xdd\xd6\x6e\xce\x40\xfd\xbd\xf7\x88\x5b\x11\xd6\xe0\x41\x60\ \x30\x78\x2a\x26\x53\xf4\xda\x7f\x3e\x43\xb3\x4f\x7c\x8f\xe2\x38\ \x5d\xda\x7c\xcd\x35\xea\xd9\xb1\xcd\xe7\xaa\xa5\x35\x82\xa0\x8d\ \xbc\x86\xe8\x20\xaf\x91\x20\xda\xdf\x8f\x0b\x78\x80\x53\x0e\x82\ \xbc\x3e\x18\xd9\x30\x31\x8e\x54\x38\x4f\x71\xf8\xa1\xce\xfd\xdc\ \xcb\x65\x04\x34\xb4\x79\x33\x39\x88\xfa\xd6\xf9\xe7\xd3\xf0\x47\ \x7f\x8d\x36\x7f\xf1\x8b\x94\xda\xba\x95\xb8\xed\xbd\xfd\x76\x58\ \x41\xa3\xcd\x0d\xea\xcd\x7d\x45\x72\x6a\xaa\xad\x62\x74\x0d\x93\ \x72\x4f\x3e\x41\x68\xec\x42\x6a\xce\x32\x0d\x15\x40\xd3\xbb\xf7\ \xa8\x5e\x10\xb5\x41\x76\x93\x57\x73\xb1\x30\x13\x9c\x9d\x0b\xb4\ \xd6\x02\x5a\x00\xcb\xa9\x90\xb7\xc5\x73\x73\x64\x8f\x8e\xf2\x81\ \xa7\x2e\x75\x23\x60\x91\x23\xf0\xff\x31\x04\xb5\x8b\x2f\xb9\x98\ \x76\x0a\x97\xb2\x2f\x3c\x4b\xf9\x9b\x7f\x9f\x4a\xaf\x1d\xa0\x89\ \xcb\x2f\xa7\xd4\x8e\x9d\xad\x6e\x00\x01\x1c\x0b\x53\x21\x22\x79\ \xe7\x5f\x7e\x4e\x1f\x3c\x48\xaa\x35\x35\x5e\x7b\xe9\x45\x95\x48\ \x66\xbe\xf0\x07\xe4\x0a\xd1\x45\x94\xd7\x68\x66\x32\x5d\x71\x80\ \x4c\x53\x95\xc4\xfd\xb8\x80\xbb\x84\x5a\xa0\x55\x00\x95\x85\x05\ \x95\x09\x60\xe3\x6a\xb1\x11\x42\x52\x59\x14\x3f\x07\xaf\xff\x2c\ \xfd\xf8\xe1\x47\xe8\x85\x1f\x3c\x4d\xaf\xbc\xf5\x0e\xfd\xf4\x64\ \x8e\x4e\xdf\x77\x2f\x71\xdb\x87\x02\x89\x33\x82\x7e\xaf\x78\xf2\ \x64\x28\x80\x6d\x33\x1d\x55\x20\x22\xc8\xba\x31\xe2\xe6\xe7\xe6\ \xd4\xdc\xc9\xa3\x27\xa8\xf8\xc2\xf3\xb4\xfe\x82\x0b\xe8\xa2\xfb\ \xef\x23\xc7\xe0\xc0\xef\xa9\x2d\x7b\x1d\x19\x63\xe6\xfa\xeb\xe9\ \xdc\x5d\x3b\xda\xc8\x03\x4c\x6c\x37\x77\x06\xda\x5a\x04\x10\x00\ \xde\xac\xeb\xe6\x42\x25\x04\x61\x2d\x80\x54\x68\x8d\x0c\xf3\x2f\ \x33\xe1\x08\xbc\x78\x32\x68\x74\xcf\x1e\x3a\x8e\xe8\xef\xe1\x73\ \xa2\xa5\x34\x3e\xfc\xd6\xdb\x54\x7c\xf5\x15\x1a\xbf\xf4\x52\x1a\ \xdc\xb7\x77\xb9\xe0\xa9\x14\x4a\xe4\xe0\x9b\x53\x57\x5d\x15\x1e\ \x8c\xa8\x6f\x85\xef\xc5\xd9\xd2\x30\x97\xff\xdb\xbf\x51\xbd\x87\ \xf5\x1f\xbe\xe5\x66\x72\x20\xb4\xed\x9f\xfe\x34\x7d\xea\xc7\x2f\ \xd1\x87\x1e\xf8\x73\xda\xf5\xa7\x7f\x42\xd7\x3c\xfb\x5f\x34\x99\ \x1d\xa1\xf7\x5f\x7e\xb5\xcb\x15\x70\x3d\x72\xe7\xfa\xf5\x9b\xd6\ \x6a\x01\x02\xf0\x8e\x3b\xce\xac\x3e\x18\xe1\x5a\xa0\xc6\x47\xe4\ \x99\x41\xf6\x95\x76\x0b\x10\xf0\xff\x6d\x5b\xa9\x7c\xe8\x10\x79\ \xbe\xaf\x49\x2c\x9b\xb5\x83\xcf\xcf\x7e\xf3\xeb\xc4\xed\xc3\x5f\ \xbd\x87\x5c\x37\x14\xa0\x4f\x52\xbd\x93\x04\xd9\xf1\x4f\x7e\x92\ \xaa\xa5\x32\x79\xae\x4b\x55\xa4\xdd\xf3\x6e\xb9\x85\x16\x1e\x7b\ \x98\x0e\xbe\xfe\xc6\x32\x99\x83\x85\x0a\xfd\xec\xea\x8f\x53\xe9\ \xbe\xaf\x92\x3c\x7e\x8c\xa6\xf6\xef\xa7\x2d\xd3\x93\xe4\xdf\x73\ \x37\xbd\xf9\xb5\xaf\x93\x6f\x9a\x7a\xf1\x6d\x41\x71\x5d\x22\xb1\ \x6f\xad\x7f\x1a\x93\xcd\x2d\x71\xd5\x05\xe2\x52\xa6\x6b\x58\x54\ \x06\x0b\x75\x0a\x4b\x2a\x15\x7a\x22\x68\x2b\x03\xc7\x90\xfe\xaa\ \x47\xdf\x57\xd6\x80\xd6\x7e\x26\x80\xf6\xb3\x67\x7f\x44\xd3\x48\ \x8f\x9c\xca\xf6\xdd\x75\x17\xbd\xf9\x8d\x6f\x90\x84\x4b\x79\x20\ \x22\x2f\xba\x88\xae\x7c\xe8\x21\xda\x7b\xe3\x8d\x94\x3b\x70\x80\ \x86\x51\xe1\x89\x27\xbf\x47\x2f\x3e\xf1\x14\xb9\x76\xac\xad\xbc\ \x3d\x58\xf7\xe8\xc8\x63\x8f\xd3\xc8\xb7\x1e\x26\x5b\x08\x95\x02\ \x17\xe3\x49\x68\xda\xea\x8a\x0b\x7a\x6c\x87\x99\xe0\x9f\x01\xd9\ \x4b\x00\xdd\xc5\x10\x6a\x81\xb4\x10\x69\xce\x04\x93\xe7\x9f\x87\ \x5a\x60\x89\x62\x48\x4f\x75\xc4\x04\xdd\x1a\x8d\x3a\x4d\x5e\xf3\ \x5b\x34\xff\xfa\xeb\x54\xc4\xbe\x61\xa8\xb9\x17\x90\xa1\x10\x54\ \xae\xbf\xf0\xa1\xaf\x91\x09\xed\x96\x9f\x7d\x86\x26\x93\x71\xca\ \xde\x74\x03\xfd\xcf\x93\x4f\x51\xee\xa1\x07\xe8\xc4\x1f\xfd\x21\ \x65\xb0\x75\x8e\x65\xd2\xe4\x97\x2b\xf4\xf6\x99\x59\xca\xc7\x07\ \xc8\x67\xf2\x11\x21\x2d\x04\x95\x25\xe6\x70\xbf\x93\x28\xb0\xe2\ \x1c\x59\x96\xca\x04\x6b\xb6\x80\xa6\x00\xb8\x16\x98\xe4\x6d\xf1\ \xae\x5d\x3b\x69\xfe\xf8\x49\x8a\x83\xa0\xc0\xde\x80\xdb\x10\x0a\ \x94\x4b\x60\xae\xe9\xc1\x0c\xc5\x21\xa0\x8f\x3f\xf8\x00\xbd\xfc\ \x95\xbb\x49\xb6\x1e\x93\xc3\x75\xe6\x6f\xbd\x99\x8e\xc1\x35\x1a\ \x56\x4c\x11\xf0\x0d\x43\xf5\xa7\xf8\xbe\x95\x20\xca\x17\x49\x02\ \xdc\x64\x22\x15\x2d\x7e\x05\x82\xd4\x83\x78\xe7\x9c\x85\xb3\x81\ \x66\x20\x14\x12\x6d\x2d\x16\xe0\x56\x5b\x6a\x81\x61\x90\x3c\x82\ \xa8\x3c\x9e\x5d\x4f\xf4\xee\x3b\x61\x9e\x7d\xfb\x4d\x3a\xf5\xd9\ \xeb\xe8\x10\x4c\xdf\x33\x2d\xf2\x2d\x8b\x84\x1d\x6f\x3b\x30\xf4\ \xd0\x1f\x89\x0d\x10\xd9\xd1\x66\x08\x2d\x1c\xb7\x12\x5b\x85\x24\ \xad\x4e\x94\x5b\x4f\x4b\x00\xf1\x2d\x9f\x1a\x19\x49\x7f\xbf\x50\ \x28\xf6\x0a\x82\x51\x2d\x10\x15\x43\x8b\x3a\x13\x70\x2a\x2c\xcf\ \x87\xa9\xd0\xf0\xc2\x8d\xca\xbc\xe3\xd1\xfb\x20\x37\x8b\x0a\x2e\ \x1f\x4b\x50\xd1\xb4\x5b\xff\xd5\x46\x74\x4c\xa6\x7b\x29\xdb\x76\ \x6c\xa2\x63\x8c\x45\x33\x74\x00\xeb\x0e\x6a\x8c\xee\x0a\xb0\xbd\ \x28\xd2\xcf\x46\x73\x26\x4a\xe2\x3d\x6b\x75\x01\x7d\x30\xb2\x5c\ \x0b\x38\x5c\x0b\x14\x8b\x64\x73\x7d\xce\xa9\x90\xba\x1b\x18\xb6\ \x7e\x64\xf5\x71\xb7\x06\x3b\xe7\xba\xdd\xa0\xb7\xd6\xf5\x7c\xd7\ \xb5\x1d\x8f\x73\x20\x7c\x11\xe8\xe1\x02\x1d\xe7\x02\x8b\x41\x90\ \xd3\x02\xa8\x54\x6b\x61\x2a\x5c\xb7\x8e\x4c\xbd\xb7\x5f\xa1\xc9\ \xce\xeb\xd5\x84\xd0\x69\xe2\x9d\xcf\xf7\x70\x83\x68\xae\xb7\x1b\ \x20\x0e\xb0\x00\x8c\xb5\x58\x80\x00\xbc\x13\xa8\x05\xd0\x87\x9b\ \x17\xd4\x02\x75\xd4\xfa\x6e\xa9\x44\x16\x6f\x8a\x5c\xb7\x9b\x70\ \x2f\xad\x1b\xc6\x2a\x82\xe9\xd6\x78\x37\xf1\xfe\x83\x22\x22\x60\ \x5b\x20\xec\x21\x80\xc8\x0d\x4e\xe3\x60\xc4\x97\xd2\x8f\x49\x69\ \x73\x2d\xb0\x1e\x1b\x9e\x06\xbb\x01\xb6\xab\x62\x61\xa1\xb7\xf6\ \x99\x70\xff\x6e\x10\x8d\x7b\xb9\x41\x8f\xe7\x41\x5c\x95\xc4\x3d\ \x83\xe0\x4a\xbb\x42\x6c\x41\x8b\x3a\x13\x6c\xda\x79\x3e\x55\x51\ \xbe\x26\xb2\x59\x0e\x34\x5d\x90\x8c\xd6\x6b\xa2\x5e\x41\x6f\xd5\ \xe0\x26\xa3\xfb\xd1\x35\xa3\xc7\x0e\xb0\x2b\x28\xe2\x1a\x02\x18\ \xbc\x6d\x62\x62\xf3\x1a\x04\x10\x05\xc2\xba\x10\x8b\xfa\x88\xfc\ \x5c\xe4\xfa\x2a\x34\x9f\x58\xbf\x5e\x9f\xf9\x77\x47\xeb\xce\xb9\ \x55\x48\xa9\x7e\x35\x01\x75\x13\x8f\xc6\x2d\xef\x8a\x1e\x31\x80\ \x5a\x2c\x70\xd0\xb6\xf7\xaf\x49\x00\xda\x02\x50\x0b\x2c\xc1\x6d\ \x54\x0d\x9f\x42\x55\x57\x99\x9f\x57\x81\x90\x84\x68\x27\xbd\x1a\ \x71\x4d\xb8\x9d\xd4\x4a\x7d\xf4\xdc\x5a\xac\x81\xe7\x7a\x90\xe7\ \x16\x37\x0c\x15\x08\x7b\x06\x41\x89\xc6\xc1\x42\x97\xc3\x95\xd6\ \x73\x81\x7c\x3e\x4c\x85\xd8\x17\x18\x52\xf2\xa2\xd6\x16\x08\xf5\ \xb8\x67\x36\xe8\x5d\x10\x51\x0f\xad\x77\x36\xcc\xee\x69\x2a\x5b\ \x9c\x75\x10\x04\xdc\x12\x04\xa0\x8b\x21\xa7\x50\xa0\x7a\xa5\xc2\ \x16\xa0\xbf\xd4\x3b\x10\x76\x8d\x35\xe9\xde\xd9\xa0\x37\xf1\x6e\ \x61\xea\xac\x85\x8d\x9c\x82\x0f\x38\xbe\x2f\xc8\x34\xe7\xf8\x09\ \x6e\x12\xad\xa7\x00\x74\x2d\x50\x68\xad\x05\x2a\x55\xaa\x3b\x0e\ \x79\xd5\xaa\x3a\x29\x16\x98\xa3\x5e\xda\xd7\x56\xd2\xcb\x12\x7a\ \xa4\x41\x5d\x56\x2b\x62\xf8\x5d\x0f\xbd\x27\x84\xf4\xd9\x5a\x13\ \x89\xc0\x1a\x48\x0a\x3b\x95\x96\xf6\xf0\x90\x4c\x8e\x8e\xd1\xe0\ \xe4\x84\x1c\x9d\xde\x44\x53\xbb\x76\xc8\xbf\xb8\xf3\xcb\xd7\xfd\ \xdb\xbb\xef\xbe\xdc\xb3\x0e\x58\xf1\x60\xc4\xf3\xe6\x5a\x6b\x01\ \xe5\x17\x70\x83\x18\x52\xa1\x5c\x5a\xea\x26\xdd\x87\x1b\xb8\x4d\ \x8d\x79\x00\xf7\x0e\x88\x41\x63\x81\x88\xc7\x03\x23\x91\x10\x46\ \x26\xc3\xff\x78\x52\x9d\x1d\x0c\x8c\x8f\xcb\xd1\xc9\x49\x63\x64\ \x7a\xda\x1e\x99\x18\xb7\x6d\x3b\x66\x99\xf8\x9f\x6d\xd9\x14\x8b\ \xc5\xc8\xb6\x2d\xf4\x71\xe2\xeb\x64\x32\x49\x43\x58\xe7\x79\x93\ \x93\x15\x08\xa0\xce\x9c\x7a\xd4\x01\xdd\x81\xf0\x78\xa3\x31\x2b\ \xf0\x8e\xfe\x23\xc9\xe4\xf6\x19\x6a\xa0\x18\x4a\x8e\x8d\x91\x80\ \x00\x56\x7b\x11\xef\x68\x2d\x69\x73\x64\x0d\x0a\x11\x12\x63\xad\ \x09\x99\x4a\x49\x2b\x93\x31\x6c\xa4\xd5\x01\x6c\x89\x33\xe3\xe3\ \xe6\xf0\xf4\x94\x99\xc9\x66\x6d\x32\xd4\xc6\xc2\xe6\xe5\x5a\x96\ \x45\x71\x45\x0e\x24\xe3\x71\x35\x8e\x27\xb8\x8f\x87\xa4\x63\x98\ \xb7\x63\xfc\x9c\x7a\x06\x02\x61\x01\xa8\x67\xd2\xa9\x34\xed\x3f\ \x77\x52\xe9\xad\x67\x29\xbc\xd2\xae\x10\x59\xa0\x02\x12\x15\x14\ \x43\x19\x95\x0a\x77\xec\xc0\xb6\xf8\xb8\x0a\xa7\x8b\xb5\x5a\xe8\ \x67\x78\x36\xb0\xac\x40\xc4\x62\x42\x26\x12\x52\x0e\x0c\x48\x99\ \xce\x20\x58\x8e\xc9\xc4\x86\x73\xcc\xd4\xf8\x46\x63\xdd\xe4\xa4\ \x3d\x38\x3a\x66\x41\x55\x26\x2f\xce\x34\x94\x43\x92\xc9\x8b\x06\ \x4c\x1e\x9b\x26\x19\x80\x26\x8c\x7b\x21\x69\xc0\x62\xe0\x1e\xae\ \x19\xea\x59\x0d\x7d\xe4\x87\x79\x7e\x57\x83\x05\xa4\xe6\x26\x92\ \x99\x18\x6e\xf7\xda\x0e\xaf\x9e\x0a\xf9\x8f\x24\x49\x21\x32\xae\ \xe3\xd1\xb6\xa9\x29\xf9\xea\xf1\x13\x1e\xcd\xcc\x48\xfb\xe2\x0f\ \x1b\xa3\x9b\x36\xd9\x03\x83\x83\x26\x7e\xc8\xd4\x0b\x64\xad\x60\ \xac\x34\x80\x59\xb2\x15\x19\x73\xf9\xf8\x1b\xd4\x31\x0e\x78\xcc\ \x8b\x57\xe0\xb5\x99\xfc\x0e\x34\x0c\xe8\x39\x75\xf8\xc9\x82\x37\ \x00\x7c\x97\x63\x11\xf7\xfc\x0c\x93\x0c\x85\xd8\xfc\x5d\x34\xbe\ \xd6\xd9\x2c\xdc\xc5\xd6\xeb\x6e\xcc\x94\xa9\x35\x9c\x08\x75\x67\ \x82\x1a\x8a\xa1\x11\x29\xa7\x38\xf2\x9f\x29\x14\xbc\x89\xcf\x7d\ \x1e\xe7\x22\x23\x94\x49\xa7\x40\x32\xc1\x0b\x51\x84\x41\x45\xbd\ \x26\x98\x8c\x8e\xe2\x18\xa3\x0f\x17\x69\x59\xbc\x78\x8c\x2d\x40\ \x11\x6c\x03\x04\xa2\xc7\x9a\x84\x7a\x3e\x11\x5a\x85\x26\xac\x35\ \xdd\x9a\xba\x59\x30\x3c\xd7\xf6\x0d\xbe\xae\x17\x8b\x65\xcb\x13\ \x99\x35\x6c\x87\xa3\x5a\x40\x5b\x40\xa5\x79\x2e\xb0\x1e\x01\xe5\ \xe4\x9e\x7d\xd6\xa6\xe9\x69\xca\x8e\x8d\x92\xdd\xd4\x34\xb1\x16\ \x0c\x93\x3b\x6d\xaa\x9a\x44\x44\x8e\x11\x04\xbc\xd0\x30\xa5\x3a\ \x2e\x6b\x57\x2f\x58\x43\x9b\x34\xa3\x6d\x8e\xdf\xd1\x42\x40\x6b\ \x8e\xb5\x40\x57\x2e\xf3\xf9\xdb\x8d\x7c\xbe\x4a\xc2\x4f\xb3\x71\ \xf4\x6b\x01\x2c\x00\xb5\xf3\x09\x3c\x4f\x66\xa6\xa7\x51\x06\x8c\ \xd0\xf0\xf0\x30\xff\x78\xf3\xbb\xa1\xf6\x74\xbd\x00\x62\x7a\xcc\ \xe0\x7b\x0a\xda\x2c\xd1\xba\xc9\x47\xd0\x1a\xe6\xbe\x6d\x0c\xa2\ \xda\x0a\xf8\xdd\xd0\xc4\x9b\xbb\x52\xad\x71\xfd\x8c\x16\x4a\xe5\ \xf4\xa9\x1a\x1e\x4c\xaf\xc1\x02\xba\x53\x61\xc9\xf7\x95\x00\x6a\ \xae\x1b\x0c\x25\x93\x76\x22\x9e\x20\x5d\x1b\x60\x31\x6d\x64\xb5\ \x00\x22\xd2\x91\x70\xb4\x56\x5b\x7d\x94\x7b\x4d\x46\x2f\x5e\x9b\ \xb4\xe3\x38\xfa\x0f\x20\xda\xf4\xbb\x02\x1d\xe6\x75\x1c\x50\xdf\ \xd1\xef\xeb\x00\xb9\xf8\xea\x2b\x0d\xc3\xf3\xfa\xb6\x00\xd1\xfc\ \x17\x23\x73\xfc\xb6\x67\xdb\x42\xfd\xa8\x69\x68\xcd\x6a\xad\x69\ \x82\xda\x2c\x79\xac\x89\x30\xb4\x50\x34\xda\xde\xd1\x66\xaf\xef\ \xe9\x6b\xf4\xfa\x5b\x3c\xcf\xdf\x60\x8d\xab\xf9\x0c\x6a\x83\x81\ \x81\x01\x95\xeb\x13\xcd\x38\xd4\xd9\x1a\xa5\x62\xc3\x39\x72\x78\ \xc4\xf5\x7c\xd9\x87\x05\x44\xa9\x10\x07\x23\x67\x78\x11\x3e\x56\ \x8d\x42\x43\x93\xd3\xd2\xd7\x5a\xd4\xda\xd7\x64\x3b\x03\x9b\x16\ \x4e\x9b\x26\x75\xd3\x04\xb5\xf6\xf4\xb3\x3a\x23\x74\xb6\x72\x3e\ \xef\xce\xbe\xf3\x4e\x3d\x7f\xf4\xa8\x53\x3a\x79\xc2\xaf\x9e\x99\ \x95\x41\xa1\x60\x58\x8d\xba\x3d\x20\x45\x7c\xc8\x8e\xa5\x32\xa9\ \x64\x32\x96\x88\x0f\xbf\x9e\x5b\xfc\xd7\x3e\xb2\x40\x94\x0a\x4f\ \x39\xce\x82\x90\x92\x3d\x3b\xd0\x8b\x6e\xd5\xa8\x16\x82\xd6\x1a\ \x34\xd2\xb5\x68\x5c\x6b\xb4\xa5\xaf\xd6\xc6\xef\x71\x2b\xe6\x72\ \xce\xe9\x23\x47\xea\x0b\x47\x8e\xb8\x85\xe3\xc7\xfd\xf2\xe9\xd3\ \xd2\x59\x58\x30\xfc\x62\xd1\x36\x1a\x8d\x44\xdc\xf7\x53\xb6\x69\ \xc6\xf1\x8d\xb8\x0a\x90\x86\x51\x0b\x4c\xa3\xe4\x1a\x0a\x05\x60\ \x09\xa2\x9c\x43\xd1\x75\xe8\xe9\xd3\xb3\x4f\xbe\x9d\xcf\x1f\xeb\ \x57\x00\x3a\x13\x34\xea\xbe\x5f\xf2\xa4\x8c\x6b\x72\xda\x84\x5b\ \xcd\x55\x43\x13\x5d\xa9\x15\x66\x67\x9d\x1c\xc8\x2d\x1d\x3b\xe6\ \x2c\x1e\x3d\xea\x57\x67\x67\x79\x97\xb9\x4c\x2e\x21\x44\xca\x84\ \x2c\x08\xc0\xef\x35\x1c\x29\x4b\x7c\x28\x83\x5a\xa4\x58\xc7\xd6\ \x9c\xff\x0d\x63\x59\x88\x7c\x01\x9b\xb4\x3c\x14\x73\xd4\x75\xe7\ \x30\x5f\x67\x57\x65\xe8\xcc\x05\xd4\x80\x02\x50\x0c\xe7\xfb\x17\ \x80\x0b\xd4\x71\x40\x7a\x6c\x7c\x71\x71\x47\x12\x02\xb0\x59\x83\ \xb6\xdd\x45\x12\xe4\x1a\xb9\x43\x87\xea\x79\x90\xc3\x5f\x7f\x83\ \x0a\x6b\x0e\xe4\x44\xa9\x14\x53\x9a\x13\x22\xcd\xe4\x02\x64\xd9\ \x86\x10\x7e\x43\xca\x4a\x93\x9c\x22\x56\xf1\xfd\x7c\x11\xc4\x16\ \x7c\x3f\x87\x12\x7c\x1e\x3b\xd1\x32\x13\xea\x20\xc7\xf0\x5b\x10\ \xb4\xf7\x7a\x1c\x3d\xab\xab\xc0\x1e\x02\x58\xb5\x16\x70\x80\xd2\ \x7b\x8d\xc6\x4b\x9b\x97\x96\xf6\xbe\xf4\xe0\x83\x8b\x89\x7a\xd5\ \x3c\x35\x9f\xaf\xe1\x80\x54\x82\x9c\x6d\x36\x1a\xc9\x18\x8a\x5f\ \xfe\x16\x6f\x64\x80\x3a\xff\x59\xad\x2e\x65\xa1\xe6\xfb\x4b\x15\ \x68\xac\xe8\x79\x0b\x8b\x38\x66\x3f\x89\xcd\xd5\x82\xeb\x96\x34\ \xa1\x3e\x88\x31\x04\x20\xcf\x06\xdc\xfa\xfe\xbf\xce\x42\x00\x26\ \x85\xe6\xb8\x11\x52\xda\x7e\xf3\xe4\xe4\x1f\x6f\x4c\x26\x77\xa7\ \xd2\x29\xff\x8d\xb9\xdc\x4f\xaa\xa8\x0f\x4a\x40\x1e\xc4\x70\x80\ \x9a\x3b\xe3\xba\x8b\xdd\xa4\x80\xde\xa4\xb8\x17\x8c\x1e\xe4\x28\ \x1a\x77\xb7\xd5\xc8\xf6\x2b\x00\x2d\x04\x1b\x5d\x1a\x18\x05\x86\ \x81\x18\x20\xce\x46\x5b\x6b\xd4\x18\x7d\x30\xc4\x3e\x78\x01\x18\ \xe8\x2c\x26\xde\x84\xa1\x6b\x84\x5f\x2e\x62\xfd\xb7\xff\x05\xc7\ \xfd\xe7\xdb\x23\x5d\x13\x38\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x13\x17\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x12\x94\x49\x44\ \x41\x54\x78\xda\xed\x9b\x09\x90\x5c\x47\x79\xc7\xff\xdd\xef\x9a\ \x73\x67\xf6\xd2\xae\x56\xbb\xba\xbd\xb2\x84\x0e\x0b\x1b\x51\xb2\ \x1d\x0a\x6c\x8e\x40\x9c\x40\x48\x0a\xca\x54\x80\x70\xe4\xa8\x8a\ \x53\x60\x08\x15\x8a\x22\x45\x48\x02\x14\x47\x01\x45\x05\x63\x28\ \x53\xa9\xd8\xd8\xb1\x62\x82\x6d\x8e\x02\x0c\x54\x30\x92\x15\x09\ \xc9\x96\xac\xd3\xd2\xae\x76\x25\x4b\x7b\x68\xaf\x99\xdd\xd9\x9d\ \x79\xf3\x8e\xee\x7c\xaf\x5f\xc7\x33\x7b\x69\x25\xb0\x1c\x57\xa1\ \x4f\xfa\xeb\xeb\xd7\x3b\xf5\x66\x7e\xff\xef\xeb\x7e\x6f\x34\xb3\ \x4c\x4a\x89\xdf\xe5\xe0\xa4\x6b\x06\x5c\x33\xe0\x9a\x01\xd7\x0c\ \xb8\x66\xc0\x35\x03\x5e\xfa\x60\x51\xe0\xff\x39\xae\xca\x7d\x00\ \xbb\xee\x73\xad\x46\xd2\x79\x95\x44\x78\x13\x24\xef\x92\x12\x79\ \xce\xd1\x68\x9a\x46\x63\xd2\x36\x9a\x52\x09\x33\xcf\x18\xcf\x80\ \x49\x37\x0c\x51\x0c\x05\x0a\xbe\x2f\x0a\x55\x5f\x4c\x54\xaa\xfe\ \xf8\xb6\x75\xa9\x83\x87\x1f\xff\xab\x7b\xf1\x12\x84\xf9\xdb\x97\ \x11\x0c\xaf\xf8\xda\x2d\x8d\x59\xeb\x35\x89\x84\xb5\xa3\x54\x0e\ \xb6\xb7\x2c\x6f\x59\x99\x72\x2c\xa4\x93\x26\x32\x29\x0b\xd9\xb4\ \x85\x5c\xc6\x42\xc2\x31\x60\x5b\x06\x4c\x83\xc3\x88\xc4\x59\x86\ \x31\x64\x00\x74\x0a\x01\xb8\x5e\x88\x3d\x87\xc6\x83\xa1\xbe\x5f\ \x5a\x00\x5e\xde\x06\xb0\x1b\xee\x5d\xd1\xdd\x95\xff\x9b\xed\xef\ \xb0\xdf\xdd\x37\x90\xeb\x5c\xd7\xd5\x00\xce\x01\xc7\xe6\x24\x03\ \x09\x3b\x86\xa5\x63\x3d\xa6\xf9\x48\xb6\xa9\xc6\x96\xc9\x94\x11\ \x8c\x01\xa1\x00\xaa\x04\xbf\xef\xe8\x04\x5a\xf3\xe1\x91\xde\xfd\ \x67\x72\xa0\x78\xd9\x19\xc0\x5e\xf7\x4b\x33\x17\x0e\xbf\x6d\xd3\ \x9a\xdc\x5d\xc9\x64\xc3\xad\x4d\x8d\x0d\x46\xa1\x54\xc5\xaa\x8e\ \x26\x30\x82\xb1\x6d\x05\x1c\x03\x92\x6c\xc7\xd0\x63\x03\x96\x1d\ \xcf\x99\x26\x87\x11\xc9\x60\xaa\x7d\x04\x24\x02\x21\x31\xed\x4a\ \x4c\x56\x8c\xca\xc9\xbd\x8f\x77\x02\x38\xff\xb2\x33\xc0\xda\xf9\ \xdd\xd7\x6e\x5f\x9b\xbf\x2f\x9f\x6d\x5f\x37\x34\x56\x41\x7b\x6b\ \x0e\xe3\xd3\x8c\x40\x12\x90\xdc\x80\x50\x30\x1c\x81\x34\xc0\x25\ \x03\x17\x1c\x2c\xe0\x90\xe0\x08\x49\xbe\x60\x70\x7d\xc0\xe0\x91\ \x24\xb1\x4b\x48\x09\x25\x3f\x94\x38\xda\x57\x46\x02\x13\xc7\x67\ \x4a\x85\x9b\x40\xf1\xb2\x31\x80\xdd\xf2\xe8\xb2\x5c\x22\xf9\xd5\ \x1b\x36\xb4\xdd\x79\x71\xc2\xc5\xc8\xa4\x4f\x00\x16\x38\x67\x08\ \x25\x00\x82\x05\xc1\x8a\x00\x04\xca\xe0\x4b\x0e\x2f\x8c\x2a\xcd\ \x60\xfa\x24\x83\xc5\xd0\x06\xc0\x19\x03\xe7\x50\xf0\x00\x53\xf0\ \x42\x4a\x94\x5d\x81\x54\x32\x39\xf5\xd4\x4f\x1f\xee\x06\x38\xc0\ \xf8\xcb\xc3\x00\x76\xf3\xcf\xb7\xb4\xe6\x1a\x7f\xd1\x90\xb6\x5a\ \xcf\x0c\xfa\x04\x61\x13\x0c\x83\x90\x04\x24\x19\x01\xc5\xe3\x80\ \x80\x0d\xca\xbe\xe0\xe0\x3e\x08\x32\x12\x81\x2b\x78\x46\xc0\x0c\ \x94\x94\x50\x77\xe5\x13\x92\x91\x00\xd7\xe3\xc8\x89\x9e\xd3\x9e\ \x57\xbd\x09\x64\x2e\x98\x81\x28\x3e\x73\xf3\xcd\x2b\x66\x86\x87\ \x1f\x19\xef\xef\x3f\x2c\x81\x43\x9c\x64\x03\x47\xbf\x26\x65\xf5\ \x6a\x1b\x40\xf0\xbb\x77\x80\x27\x7e\x5c\xaa\xf2\xa6\x42\x59\x2a\ \x78\x53\x30\xbd\x7b\x03\x66\x54\x51\xc9\x09\x54\x57\x56\x12\xa8\ \x40\x04\x4b\x42\x2c\x30\x5d\xcc\xd8\x84\xfa\x90\x32\x9e\xf7\x42\ \x89\xed\xeb\xec\xb1\x1f\xdd\xbf\x6b\x73\x0d\x9e\x44\x91\xe4\xfc\ \xb3\x76\x5b\xdb\xce\xd6\x15\x2b\x76\x7a\xd3\xd3\x70\x4b\x25\xb8\ \x53\x53\xc1\x47\xd3\xe9\x43\x7e\xb9\xfc\x98\x00\x1e\xff\x57\x29\ \x8f\xbf\xe8\xf7\x01\xec\xf7\x7e\xdd\x0d\x66\x1c\x04\x43\xb6\x6e\ \x76\x56\xd6\x70\xaa\xc2\xbc\x2e\x73\x65\x80\x56\xfc\x40\x95\x05\ \xe2\x6a\x0b\x11\x29\x5a\x3e\x92\xb2\x44\xf7\x0a\x0b\xd6\xe4\xbe\ \x83\x87\xf7\x7e\xef\x26\x05\xcf\x38\x28\x3f\xfe\x8d\x2d\x85\x4f\ \xd2\x39\x0e\xe5\x57\xad\x32\x79\xf4\xd8\x30\x44\xe8\x79\x4a\x81\ \xeb\x62\x66\x6c\x0c\xa5\xc1\xc1\x28\x9f\x71\xa7\xa7\xff\x0b\xc0\ \x3d\x5f\x92\xf2\xdc\x8b\x63\xc0\xeb\x8e\xff\x84\xd2\x9b\x66\x41\ \xb3\x7a\x23\x2e\x31\x66\x97\xff\x73\xc7\x62\xf8\xe3\x9d\x7c\xf0\ \xe1\x7b\x3e\xd2\x4e\xe0\xfc\x05\x03\x38\x7f\xfc\xdf\xb6\x15\x13\ \xcb\xb7\x6d\x7b\x53\xaa\xa5\x05\x22\x82\xae\x54\x40\x55\x87\x4f\ \x39\xa0\xac\x8f\x95\xca\x64\xc6\xe4\xb9\x73\x81\x5b\x2c\x3e\xc4\ \x84\xf8\xfc\xa7\xa4\x3c\xf1\x1b\x2f\x01\x76\x5b\xff\x1f\xc1\x48\ \x12\xfc\xd5\x8f\x1d\x1b\x4c\x3c\xf3\x3f\x3f\xba\x08\x6e\x76\x28\ \x78\x70\x44\x79\x67\x93\x68\xc9\xe7\x72\x37\x37\xe4\xf3\x90\x42\ \xc0\x64\xd1\xd2\x33\x60\x58\x16\xcc\xa8\x13\x48\xc1\xff\x49\x08\ \x38\x4d\x4d\x68\x48\x26\x4d\x32\xe0\x3d\x33\x83\x83\xef\xfe\x22\ \x63\x0f\x13\xd8\x5d\x77\x4b\x39\x71\xe5\xef\x05\x0c\xf1\xa7\x58\ \x34\xd8\x8b\xa6\xe6\x2c\xc7\xca\xe6\xa0\xff\xf4\xb3\x4f\x6e\x07\ \xb3\x00\x66\x02\xdc\x52\x7a\xdf\x3a\xb9\xb9\xa1\xa9\x89\x85\x13\ \x13\xf0\x49\xa2\x50\x00\x68\xfd\x73\xaa\xb6\xe9\xba\x30\x7d\x1f\ \x16\xc1\xdb\x11\xbc\x94\x48\x02\x48\x32\x86\x6c\x22\x81\xd6\xe5\ \xcb\xd9\xb2\xf6\xf6\x3b\x93\x86\x71\xf4\x9b\x8c\xbd\xe1\xca\x37\ \x41\xc9\x6e\x04\xd8\x6f\x7c\x5f\x7c\x39\x61\x19\xc0\x6b\xb6\x5a\ \x78\xf2\x89\x07\xcb\x0a\xba\xb6\xf6\xf1\x86\x65\x21\xd6\x58\x7e\ \xce\xa0\x16\x97\xd1\x9a\x8f\xaa\x0f\xa8\x4e\x00\x41\xb3\x20\x00\ \x27\x03\x98\xe7\x29\xf1\x6a\x15\x06\x1d\x0b\x9a\xd7\xdd\x01\xdb\ \xb6\x91\x68\x6c\xec\x08\x8a\xc5\x9f\xde\xcf\xd8\xa7\xde\x23\xe5\ \x3f\x5f\xbe\x01\x8c\xad\xfc\x4d\x0d\x58\x1a\x9c\x61\xeb\x5a\x13\ \x5b\x56\xb3\x99\x91\xe1\xa1\xc3\x17\xce\x9e\xb8\x45\x19\xa0\x5b\ \x9f\x73\x13\x7f\x7d\xbd\x07\xa3\x58\x06\xfc\xf8\x7a\x2a\xb4\xa9\ \x4c\xc6\x3b\x28\xd3\x26\x48\x12\x27\x03\x84\xef\xc7\x46\x91\x11\ \x26\x29\xa4\xb1\x3a\x8e\x1e\x63\x59\x8c\x8c\xf9\xa7\xef\x31\x56\ \x7a\xbb\x94\x5f\xbd\x3c\x03\x44\x70\x0e\xdc\x7e\x05\x5e\xc4\xb0\ \x4d\x46\xd0\x1c\x5b\xd7\x18\xd3\xbd\xfd\x43\xa7\x1f\x7c\xf8\x99\ \x0d\x5d\xcb\xcc\x3c\xd8\xec\xea\xbf\x77\x8d\x40\xdb\xf8\x05\x84\ \x53\x53\xe0\xa6\xa9\x3a\x4a\x72\x0e\xae\xaf\x9b\x4a\x64\x80\xd4\ \x42\x5c\x79\x95\x8d\xc8\x0c\xea\x1a\x83\x96\x89\x88\x96\x09\x1d\ \x2b\xc3\xa0\xe2\xcb\x4f\x30\x36\xf4\x46\x29\x77\x2d\x6d\x40\x50\ \x2c\xc1\x5e\xb6\x64\x7b\x2f\x1d\x8c\xc0\x11\x41\x63\xcb\x2a\x3e\ \xdd\x7b\x6e\xe8\xf4\x77\x76\x1d\xda\xe0\x07\xc1\x2b\x09\x96\xc0\ \x1c\xa9\xaa\xaf\xe1\x13\x06\xc7\x07\xbb\x09\xec\xbf\xcf\xa8\x0d\ \x8f\x93\xf4\x6d\x23\x0c\xe8\xd0\x5d\x00\x82\xa6\x2a\x2b\x50\x10\ \xb0\xa4\xca\xf3\x48\x35\xe0\xb9\x99\x31\x32\xe1\xc7\x8c\x3d\xf6\ \x66\x29\xab\x97\x36\xa0\x74\xba\x19\x2d\xed\x1e\x00\x1b\x60\x57\ \x04\xac\x93\x06\xe7\xd8\xb2\x92\x4f\xf7\xf4\x0f\x9f\x7e\xe0\x3f\ \x0f\x5d\x1f\x04\x82\xc0\x39\xc0\x13\x0a\x3a\x84\x49\x39\x92\xa1\ \xf4\xf1\x2d\x0c\x89\xa7\x7e\x0e\xb7\xb7\x17\x1a\x5c\xc9\x27\x31\ \xe8\x3d\x40\x8b\x49\xa9\xe6\x8c\x39\x5b\x33\xe6\x1f\xd7\xe7\x8e\ \x0c\xf0\x01\x00\xf7\x2c\xb1\x04\xaa\xd7\xc1\x1b\xdd\x03\xa7\xfd\ \xd6\xcb\x02\x06\x66\x5d\xd7\xb7\xae\x66\xd8\xbc\x8a\x97\x7a\xce\ \x0e\xf5\x3c\xf0\xc8\xb3\x1a\xdc\xc0\xac\xcd\x0e\x1c\x42\x9a\x1c\ \x7a\xae\x25\x61\xe0\x5d\x6b\x25\xa6\x1f\x3d\x86\x14\x50\xdf\xba\ \x98\x21\x25\xe7\xc1\xe8\xbc\x18\xf0\xe2\xa6\xdc\xb9\xb4\x01\xdc\ \x01\x26\x8f\xec\x40\xeb\xb2\x13\xe0\xe6\xa6\xc5\x80\xe7\x83\x43\ \x81\x9f\xee\x1b\xea\x7d\xe0\x91\xe3\x04\x1e\x12\xb8\xa9\xab\xa9\ \x85\xda\x58\xc8\xd0\x89\x0d\xb0\xf0\xc5\x9d\x16\xda\xb6\xad\x41\ \xc3\xfb\xdf\x8f\xd2\xc3\x0f\x43\x96\xcb\x2f\x00\x0c\x91\x12\xaa\ \xda\x2f\x4a\xb4\x2e\xbd\x07\x18\x0e\x10\xc2\xc6\xe8\x2f\x96\x37\ \xaf\x7d\xe3\xb1\xf1\x19\x73\xf3\xa2\xe0\x36\x03\xbd\x6e\x6c\xea\ \x44\xe9\x54\xdf\x85\xfe\x07\x1e\x39\xd5\x1d\x04\x72\xbb\xaa\xb4\ \x41\x70\x52\x90\x02\x40\x90\x64\x08\x1a\xe8\xb9\x10\xfe\xd4\x64\ \x13\xfd\xa3\x9e\x6f\xef\xd3\xfd\xe8\x5a\xd5\x80\x1d\x7f\x70\x07\ \x52\x3b\x77\x62\xea\xbe\xfb\x50\xdd\xbf\x1f\x13\x00\xce\x92\x9e\ \x27\xa5\x49\x59\x52\x86\x94\xd7\x62\xb8\xb2\x28\x02\x4d\x4b\xde\ \x0a\xb3\x57\xff\x40\x22\xac\x02\xc2\x85\x69\x04\x6e\xd0\x78\xfb\ \xb3\xe9\x74\xea\xd5\x33\x6e\x7d\xc5\x63\xf0\x8d\x2b\xc2\xe9\x53\ \xbd\xe7\xcf\x1f\x38\x7c\x66\x5d\x18\x4a\x1b\xc2\x05\x44\x05\x08\ \x23\xcd\x90\xaa\x75\x9b\x27\xd3\xe3\x58\x2d\xe9\x69\x77\xec\xe2\ \x40\x22\x32\xeb\x6d\x23\xbf\x42\x8b\x37\x81\xfc\x96\x1b\x70\xc7\ \xbb\xfe\x04\x37\x6d\x5e\x0b\xef\xa9\xa7\xf0\xab\x6f\x7e\x13\x63\ \x85\xc2\x82\x3d\x68\xe9\x72\xb6\x20\xa6\xe2\x58\x3a\xf6\x00\x07\ \xfe\x4c\xca\x1d\x97\x36\x60\xe7\x13\x52\x1b\xa0\x55\x95\xd7\x6f\ \xe8\xde\x5f\x4d\xbe\x62\xcd\xc5\x49\xde\x76\x03\x81\x5f\x4f\xe0\ \x27\x4e\xf6\x0f\x1d\x38\xd2\xbf\x3a\xac\x4e\x5a\x08\x26\xe3\xc7\ \x4a\xe8\x16\x67\x7a\x5c\x03\x9e\x3b\xd7\xe8\x14\xbd\xc2\xf8\x45\ \x3b\x32\xe0\x9d\xc3\x3f\xc7\xb2\xea\x18\x04\x24\x42\x00\xcb\xb6\ \x6e\x9c\x7c\xd3\x7b\xdf\x69\x74\xac\xec\xcc\x9c\xfe\xd6\xb7\x30\ \xf8\xb3\x9f\x5d\x72\x21\x9a\xa4\x0e\x52\x27\xc9\xc6\xe2\xf1\x61\ \xe0\x17\x8f\x4a\xf9\xfa\x4b\x1b\x70\xcb\x93\x92\xa0\x81\x50\xc1\ \x93\x5c\x35\xb6\x2d\x39\xfd\xd6\xdf\xbf\x75\x60\xa4\x50\xb6\xf6\ \x1c\xe8\x59\x19\x56\xa7\x4c\x04\xa5\x79\xd5\xd5\x9a\x33\x37\xdf\ \x8c\x9c\x39\xea\x4f\x16\xc7\x2d\xc0\xc4\xbb\x07\x7f\x88\x76\x77\ \x34\x32\x80\x04\x84\x94\x07\x10\xa0\x65\xf3\x86\xe0\xad\xef\x7d\ \x17\xeb\x12\x81\xf1\xdc\x57\xbe\x82\xca\xf0\xf0\xa2\x46\x30\xad\ \x36\xd2\x4a\x52\x02\xb3\x63\x0c\x28\xbe\x03\x48\xf6\x48\x99\x58\ \x7a\x13\xd4\xd7\x5c\x3d\x50\xf2\xfc\x6a\x66\x7a\xf8\x40\xe7\xa9\ \x3e\x99\x0e\x2b\x25\xfd\xae\x2d\x15\x83\x31\x00\xb2\x76\xe9\x8a\ \x83\x2f\x0c\xaf\x0d\x90\xbc\x04\xf0\x34\xc9\x80\x03\x13\x49\x30\ \x08\x25\xa0\x80\x10\x06\x8d\x27\x8e\x9d\x36\xbf\xfd\xb1\x7f\x44\ \xdb\x96\xeb\xc3\xb7\xfc\xed\x87\xd0\xd9\x73\x8a\x0f\x3e\xf6\x18\ \xf3\x8a\xc5\x05\x4d\xd0\xa0\x28\x90\x56\xeb\xae\xd0\x11\x7c\x16\ \xd6\xd3\x19\x88\xdb\x97\xde\x04\x79\xa2\x0e\x5c\x67\xe1\x83\xaa\ \x4d\x29\x6d\x05\x22\x0d\x98\x99\x39\x40\x57\x38\x86\x80\x80\x0d\ \x98\x91\x81\x26\x1c\x52\x02\x5c\xc1\x07\x91\xd9\x90\xda\x10\x28\ \x15\x8e\x3e\x67\x7c\xe7\xe8\x67\xb1\x6c\xcb\xc6\xf0\xcd\x1f\xff\ \x04\xd6\x8f\x8f\xf2\x81\x5d\xbb\x58\xe5\xf9\xe7\xb1\x58\x5c\x20\ \x4d\x93\xd6\x91\xee\x45\x62\x5f\x05\xec\xf6\x2c\x02\xa8\x58\xba\ \x03\x64\x9d\x77\x53\xf1\x86\xc6\xcd\xa8\x2e\x3c\x60\x29\xc0\x08\ \xe7\x54\x96\xcf\x69\x77\x3e\x07\x5c\x46\x7f\xe3\xac\x25\x85\x23\ \xe3\x67\x8f\x0d\x48\x6a\x03\x26\x10\xc0\xa2\xb1\xa1\x97\x83\x54\ \x99\x45\x59\x19\xf1\xe0\xc7\xff\x05\xad\x5b\x37\x85\x7f\xf8\xd1\ \x8f\x61\xbd\x5f\x35\x86\x1e\x7a\x08\x93\xcf\x3c\xb3\xe0\x5d\x4a\ \x25\x99\xc4\xe7\x2b\x62\xcc\x83\x7d\x6b\x16\x21\x04\x0c\x30\x0a\ \x49\x71\xe9\xcb\x20\xa4\x92\x82\x07\xa3\xb9\x14\x25\x03\x92\xd9\ \x2c\x40\x64\x80\xa8\x01\xab\xcc\x6b\x63\x15\x6c\x76\x07\x49\x12\ \xc3\xac\x39\x21\x38\x60\x64\xd5\x79\x2d\xdb\x81\xe3\x5b\xf0\x45\ \x08\x57\x32\x24\x04\x87\x50\xc8\x40\xa8\xb3\xa8\xcb\x53\x47\x4e\ \x1a\xf7\x7f\xe8\x93\x68\xdd\xb6\x29\xbc\xe3\x2f\x3e\x88\xed\x77\ \x67\x8d\xe1\x07\x1f\xc4\x38\x6d\x96\x32\x0c\xc1\x1d\x07\xc3\x9e\ \x1f\xec\x66\x59\x0f\xa8\xb6\x78\x90\x48\x13\x7c\x58\x63\xf6\x17\ \x34\x80\xcc\x31\x70\xfb\x19\x7d\x2f\x50\x06\x98\x45\xe3\x34\x65\ \x53\x49\x70\x2e\x95\x01\x26\x16\x00\x17\x80\x9c\x05\x59\x4b\xac\ \x56\x79\xc6\x38\x72\x59\x07\xd9\x95\x67\xf9\xf9\x0d\x5f\x07\xeb\ \xdf\x86\x7c\x49\x56\x93\x70\x9c\x29\xcf\x85\x15\x98\x30\x24\xc1\ \x4a\x42\x15\x0a\x5a\x65\x01\xd2\x1c\x23\x4a\xcf\x9e\x34\x1e\xbc\ \xeb\x13\x68\xde\xba\x51\xdc\x71\xd7\x07\xe4\x8d\x77\xdf\x6d\x0c\ \xef\xda\x85\x27\x4f\xf5\x54\x2f\x1c\xeb\xb7\x5a\xdc\x20\x55\x81\ \xa1\x1e\x1d\x92\x32\xe0\xa0\x48\x13\xe7\xa4\xee\x02\x98\x35\x78\ \x45\x91\x56\x40\x32\x88\x97\x82\x29\x55\xeb\x23\x24\x89\xa8\x03\ \x04\x42\x9e\xa5\xf9\xd9\xa0\xb5\x2a\x2f\x54\xf9\x48\xea\xfc\xc8\ \x65\x6c\x34\xae\x1d\x01\x5f\xbf\x07\xd5\x65\x07\x4d\x24\x0e\x81\ \x75\x1f\xc2\x0f\x6e\x58\x66\xbd\x7e\x4f\x13\xf2\xbb\x4d\x64\xc6\ \x5d\x50\xf1\x20\x94\x01\x80\x50\x26\x48\x1a\xeb\x63\xc8\x59\x86\ \x48\x52\xe9\xc8\x29\xfe\xd0\x5f\x7e\x0c\x4d\x64\x84\x63\x04\x41\ \x43\x71\xc6\x69\x4a\x25\x51\x81\x1b\xbf\x06\xcf\xc7\x34\x24\x9c\ \xb8\x0d\x9b\xf5\x1d\xb6\x3f\xcb\x00\x3d\xce\x93\x74\xdb\xdb\xba\ \xf2\x5a\x64\x82\x60\x2e\x42\xe9\x00\x5c\x43\x83\xcd\x06\x55\xa1\ \x8d\x90\x52\x57\x1c\x04\x6e\x21\xb7\x7a\x08\x7c\xdd\x41\x84\xd9\ \x01\x54\x05\xe0\xf9\x02\xb0\xa0\xe4\xa6\x05\xdf\x73\x7b\x09\x89\ \x9d\x1c\x1b\xf7\x25\xb0\x72\x77\x0a\x95\x02\x19\x11\x90\x11\x61\ \x0c\x2c\xd5\xb2\xd1\x63\x49\x63\x59\x1b\xab\x63\x30\x4c\x93\x11\ \x99\xee\xe5\x3c\x99\xb4\x11\xb7\x89\x54\x99\x51\x96\x41\x6c\x9e\ \xbe\x77\x1a\x5e\xcc\x80\x56\x30\x56\x9b\x36\x74\x07\x08\x65\x82\ \x5a\x8f\x82\xd9\xb3\x61\xa3\x21\xc7\xbc\xca\x33\x03\x68\x48\xdb\ \xc8\xad\x3a\x0f\xb6\x66\x5f\x0c\x1e\x02\x41\x55\xc2\x0f\x24\x08\ \x0d\x70\x30\x2b\xdc\x94\xc0\xa1\xdb\xca\x38\x41\x46\x6c\xde\x97\ \xc4\xaa\xbd\x69\xb8\x13\x51\x47\xf8\x11\xac\x86\x86\xee\x0e\x0d\ \xae\x40\xc5\x0b\x86\x24\x6c\x0b\x29\xc7\x89\xc1\x69\x0e\x42\xab\ \x2c\xe1\x89\x10\x14\x0d\x24\x63\xa1\x3d\xc0\x8a\x3b\x80\xe9\xc2\ \xc6\x15\x56\x24\x3c\xa1\xc6\x7e\xe0\xaa\xe3\xf9\xff\x3f\x20\xeb\ \x8a\xcf\x90\x4d\x73\x34\x74\x9d\x05\x5b\xbd\x17\x41\x7a\x00\x41\ \x08\xf8\x33\x92\x32\xc1\x87\x42\x19\x20\x24\x4d\x5a\x50\x26\x94\ \x11\x20\x2b\x6c\xf2\x3b\x3e\x67\xd5\x16\x78\xfa\x35\x33\x38\xf6\ \x2a\x8e\x2d\x4f\xa7\xb1\x66\x6f\x12\xd5\x42\x15\xbe\x1f\x10\xeb\ \xec\xea\x0b\x95\xd5\xf2\x50\xc7\x8e\x63\x43\x75\x80\x36\xa0\x5e\ \x46\xd9\x13\x90\xea\x59\xf9\x3c\x03\xf4\x24\x91\x4a\x2c\x6c\x82\ \x03\x2f\xe4\x34\x5e\xf8\x1e\x4c\x81\x67\x4c\x64\x57\xf4\x01\x5d\ \x7b\x10\xa4\x06\xe2\x4a\x97\x22\x68\x0d\x1f\xc4\x2f\x16\x20\xd9\ \x5e\x44\x0e\x91\x92\xe8\x61\x45\x8c\x99\x2e\x3a\xbd\x0c\x72\x01\ \x19\xa1\xcf\x5b\x35\x05\x0e\xee\x28\xe1\xe8\x36\x86\xad\x87\x33\ \x58\xbf\x3f\x09\xaf\x58\x55\x7b\x84\xea\x88\x08\x1a\x22\x36\x41\ \x2b\x99\xa0\x0e\x48\x38\x60\x02\x1a\x5c\x73\x48\x60\x4a\x88\x49\ \x54\x10\x00\x10\x8b\x5d\x06\x05\xaa\x43\x13\x70\x3a\x9a\x74\x95\ \x67\x99\xe0\x4b\x4b\x8d\xeb\x42\x81\x67\x52\x26\x32\x1d\x04\xde\ \xb1\x07\x5e\x62\x20\x86\x9d\x22\x68\x55\x6d\x20\x14\x42\x9f\x27\ \x04\x8c\x0a\xd0\x78\x02\xc8\x9f\x04\x26\x24\xe0\xc6\x97\xba\x71\ \x54\x50\x60\x2e\x1a\x99\x85\xce\x4a\x0a\x39\xdf\xaa\x75\x04\xe9\ \xc0\xa6\x2a\x8e\xac\x63\xb8\xe1\x78\x16\xdd\x87\x93\x74\xfe\x80\ \x0a\x22\x5e\xe8\x08\xa8\xac\x0d\x48\x39\x0a\xbc\x26\xa9\x0c\xa9\ \x7a\xee\x79\x00\x25\x52\x30\xcf\x00\x3d\x39\x8d\x99\x33\xe7\x90\ \x58\xd1\x04\x39\x77\x43\x03\xc1\xf0\x1a\x38\xe7\x0a\x3c\xdd\x76\ \x06\xb2\x8d\xc0\x9d\x0b\xb5\x8a\x07\x71\xd5\x75\x5f\xc6\x86\x1b\ \x33\x31\x74\xc3\x73\x00\xf7\x01\x3f\x2a\x09\x00\x7d\x53\x29\x01\ \x6d\x84\x87\x82\xe5\xa3\x51\x18\xe8\x9a\xb6\x91\xf3\x0c\x70\x05\ \xc1\xe0\x01\xd8\xbf\xb6\x8c\xc3\x5d\x1c\xdb\x4f\xe5\xb0\xf1\x64\ \x06\x7e\x19\xf0\x24\xf4\x72\x10\x64\x80\x8d\x54\x52\x1b\x80\xb8\ \xf5\xa1\x3b\x61\x64\x26\x3c\x00\x60\x6c\xc1\xfb\x00\x3d\x39\x81\ \xe9\x13\xc7\xd0\xfc\xda\xed\xca\xb2\x59\x26\x00\x55\x5f\x2a\xf0\ \x74\x92\x5c\x5e\xd6\x0b\xd9\xb2\x1b\xae\x15\x55\x5c\xe8\x8a\x4b\ \x84\x24\x40\xc1\x6b\xf0\x32\x41\x9f\x20\x9d\xaa\x81\x57\x01\x4c\ \x92\x5c\x52\x1f\xa9\x61\x21\x23\x02\x14\xd2\x01\x1a\x39\x47\xd7\ \x24\x43\xde\xd5\x9f\x3d\x02\xb1\x11\x5d\x33\x38\xdc\x4e\x46\xf4\ \xe5\xb0\xb9\xa7\x11\xbe\xb4\xc9\x08\x03\xb6\x41\x45\x89\x0c\x00\ \xf4\x12\x60\x0a\x7e\xc8\x75\xcf\xee\x2a\x5e\xfc\x0f\xc5\x08\x04\ \x8b\x19\x30\x8a\xb3\xf7\x7d\x1f\xed\x6f\x7f\x0b\x9c\xf6\xe6\xb9\ \x26\xf8\x21\x60\x27\x27\xd1\x7c\xdd\x5e\x54\x93\xbd\x98\xae\x96\ \x51\x75\x43\x9a\xd7\x55\x96\x75\xe0\x5c\x83\x67\x4e\xd7\xc0\x3d\ \xdd\x80\x2e\x6a\x11\xea\x9a\x14\xb4\x09\xa9\x7a\x23\x80\x71\x43\ \xa0\x90\x07\xf2\x15\xa0\xb3\x08\xe4\x5c\xc4\x4b\x43\x02\x15\x84\ \xd8\xb7\x6a\x1c\xcf\xad\xa8\xe0\xc6\x63\xcd\x58\x35\xd9\x04\xce\ \x39\x12\x8e\xa5\x0c\xe0\x92\x04\x46\x45\x11\xde\x03\xc3\xe7\xbf\ \xa0\xed\x2e\x2d\x78\x2b\x4c\x73\x82\x31\x36\x05\x6f\xf4\x38\x9e\ \xfb\xe4\xd7\xb1\xf5\x1b\x9f\x00\xb3\xcc\x7a\x13\xbc\x40\xca\xc0\ \x18\xc2\xc5\xf1\x43\x70\x8c\x75\xc8\xa7\xb2\x90\xf6\x08\xa6\xc3\ \x22\x66\xfc\x69\x04\xc2\x8f\x5b\x3d\x43\xe0\xa9\x08\x3c\x88\xfb\ \xd3\xd7\xef\x4c\x3c\x2c\x1e\x81\x5e\xec\x05\x6d\x42\x72\xb6\x11\ \x13\x06\x50\x6c\x02\x72\x15\xa0\xab\xc4\xd1\x11\x64\xd0\xe1\xe5\ \x90\x1c\x91\xe8\x2d\x8d\xe2\x38\x2b\x61\x83\xdd\x06\xcb\x30\x24\ \xe7\x2c\xba\x12\x28\xf8\x6a\x10\x7a\x0f\x0d\x9c\xfb\xf2\xa1\xc9\ \xc2\x2f\x01\x5c\x24\xf9\x97\x7a\x33\xe4\x91\x86\x30\xf2\xd3\x9f\ \xe0\xfc\xbf\xaf\xc7\xca\x0f\xde\x09\x70\xa6\x4d\x88\x37\x34\x3a\ \x0c\xbd\x00\x2e\x3f\x85\x49\x5f\x22\x65\xb5\xa0\xd1\x5e\x87\xd5\ \x0d\x5c\xb6\xb5\xf7\x4a\x2f\x39\xc8\x47\x2b\xc0\x68\xb9\x11\xe5\ \xe8\x83\xcb\xc9\x32\x84\x27\xb0\x60\x30\x2c\x18\x7a\x89\x28\x13\ \xac\xa4\x85\xb4\x93\x46\x73\xb2\x19\x4d\xc9\x26\x91\x43\xc3\x70\ \xa5\x38\x53\x1e\xee\xbb\xd0\x74\xfe\xe2\x40\x53\xa6\x12\xef\xf0\ \xcd\x3c\x03\x87\x2a\x6f\x70\x0e\x93\x71\x44\x31\x63\xb0\xd2\xa7\ \x9f\x3e\xf4\xf9\x1f\x9f\x3b\xf7\x43\xfd\x06\xb1\x22\x29\x16\x35\ \x40\x77\x41\x09\x40\x0f\x4e\x7d\xfa\x1e\x54\x47\xa6\xb1\xfe\x23\ \x7f\x0e\xe6\xd8\x60\x80\x1f\xea\xfb\x5a\x11\xaa\x04\x29\x50\xc6\ \x19\x94\x13\xdf\xc7\x40\xa2\x97\x25\x7c\x03\xd7\xd9\xd7\x8d\x6c\ \xcc\x6d\xc4\x6d\xcd\xb7\xa5\xda\xd3\xed\x4e\x73\x43\xb3\x59\x0d\ \xaa\xcc\x0d\x5c\x94\xbd\x32\x66\xaa\x33\x98\xaa\x4e\xa1\xe4\x96\ \x30\xe5\x4e\x51\xc5\x2c\x64\x9d\x2c\x92\x56\x12\x29\x3b\x85\x84\ \x95\x80\x63\x3a\xb0\x0d\x5b\x8a\x40\x84\xe3\xa5\x71\x6f\xa4\x32\ \x52\xee\x2f\xf5\xbb\x3d\x17\x7a\x1a\xc7\xa6\xc6\x3a\xe0\x23\xde\ \x0f\xf2\x40\x83\xcd\xd0\x56\x62\x90\xe0\x48\x70\x1b\xb6\x61\x84\ \x64\x82\x75\xf8\xe2\xe8\x91\x7f\xd8\xbd\xf7\x2b\x07\x86\x47\xf7\ \x01\x18\x24\xcd\x48\x8a\xcb\xfb\x78\x9c\x31\x8b\x52\x8e\xb4\x16\ \xad\xaf\x7f\x23\x36\x7d\xee\xc3\xb0\xdb\x9a\x4d\x7f\xc8\x0d\x32\ \xa5\x04\xb2\xf7\x03\x56\x19\xc8\x1c\x03\xb2\xbd\x34\x0e\x48\xba\ \xa2\x7e\x9d\xb5\x24\x27\xe1\xa0\x23\xd1\x21\x3a\x8d\x4e\xd1\x68\ \x37\xca\x8c\x9d\x61\x79\x3b\x2f\x73\x66\x8e\x35\xd8\x0d\x08\xc2\ \x00\xc5\x4a\x11\x85\x4a\x41\x96\xaa\x25\x4c\xba\x93\x6c\xa8\x32\ \xc4\x2e\x94\x2f\x18\x85\x72\x21\x3e\x5f\xa0\xd7\x01\xaf\x7b\x0e\ \x2d\x16\x90\x3c\xa0\x79\xc2\x7a\xf6\x73\xe5\x1b\x8d\xce\xce\x16\ \xf3\x91\xbe\xfe\xef\x7e\xfb\x59\xf5\x11\x7f\xbf\x5e\x54\xd5\xa8\ \xb8\x57\xf0\x45\x49\xfd\xce\x90\xf0\x48\xed\x30\xb2\x1b\x71\xfd\ \xa7\xde\x87\xa6\x5b\x77\x22\x3b\x98\x42\xfb\xdf\xa7\x90\xee\x07\ \x6c\x05\x1e\x87\xd0\xd9\xaa\xc1\xc3\xaa\xcb\x86\xce\x24\x15\x41\ \x9d\x7c\x0d\xe8\x2f\x31\xa7\x8d\x50\x21\x6b\x3f\xd3\x7b\xcc\xa3\ \x78\x02\x9f\x41\x1c\x45\xd2\xb8\x7e\xd3\x13\x48\x8a\x2b\xfe\x8a\ \x8c\x94\x32\x54\x9b\x22\x50\x45\x58\x2a\xe0\xf8\xdf\xf5\x23\x7f\ \xd3\x2a\xac\x3f\xde\x8d\x55\x95\x2f\x80\xe9\x17\x13\x90\x58\x1d\ \x28\x27\x19\x5a\x7c\x4e\xd6\x52\x21\xb5\x84\x9e\x93\x3a\xcf\x9b\ \xd3\xc7\x5c\x4b\xd4\x81\xd7\x63\x71\x35\x7b\xaa\xee\x55\x85\xaa\ \xea\xbf\xcd\x97\xa4\xf4\x09\x2a\x64\x84\x47\x79\x0a\xc5\x83\xcf\ \xa3\x01\x36\x84\xde\xa8\x78\x0d\x5a\x4b\x03\xcf\x85\x5e\xc2\x00\ \x39\xe7\xb8\x06\x3d\x5f\x4c\xe7\xfa\x02\x08\x25\x5b\x43\x57\x5e\ \xdc\x2f\x4b\xeb\x6e\xd0\x27\x2e\xe1\x24\x7e\x8d\x7e\x7c\x0d\x33\ \x18\x9c\x0b\xba\xc4\xf1\xa2\xaa\x19\x37\xcf\xcc\xa5\x4d\x90\x70\ \x31\x41\xcd\xff\x3c\xee\x8d\x66\xa2\xb8\x6a\x5f\x96\xa6\x73\x73\ \xfd\x21\x4d\x3b\x69\x0d\xb6\xe0\x76\x6c\xc2\x5b\xd0\x89\x6e\x24\ \x60\xc3\x9a\xb7\xf6\x6b\x32\x17\xd8\x03\xfc\xd9\x59\x8f\x97\x3e\ \xf6\x20\x09\x7a\x04\x17\xb0\x1b\xc7\xf1\x18\x5c\x9c\xd0\x97\xb9\ \x22\xf1\xf8\x57\xcb\x80\x7a\x13\x1c\x6d\x44\x63\xbc\x49\x62\x39\ \xb6\xe1\x55\x58\x87\x57\x62\x05\x36\xd0\x51\x3b\x1c\x18\x57\x6c\ \x80\x7f\x89\xb9\x22\x8a\x84\xdc\x87\x21\x1c\xc1\x69\xec\x47\x01\ \x7d\xfa\xc6\x66\xb4\x76\x7f\xa9\x37\xbc\xab\x66\xc0\x7c\x23\x4c\ \x6d\x46\x52\xdf\xd1\xe7\x95\x29\x49\xb4\xa0\x9b\xec\xe8\xc4\x1a\ \xb2\xa2\x03\xcd\x68\x27\x35\x23\x8d\x04\x92\xb0\x55\xaf\x18\xda\ \x16\x17\x02\x15\xf8\x2f\xa8\x0c\x0f\x93\xf4\xa7\x40\xb8\x13\x18\ \x24\xbc\x73\x78\x9e\x60\xc7\x30\x00\xa0\xa0\x55\x24\x95\xf5\x4e\ \xe4\x91\x84\x06\x7f\xe9\x7f\x5f\x40\xaf\xb9\x48\x46\x9d\x21\x36\ \x29\x51\xbb\xa9\x55\x39\x51\xd7\x0b\x86\x16\xab\xdb\xfa\x82\x5a\ \x56\x60\x95\x08\x52\xe7\x19\x0d\x4a\xd2\xbd\xb1\x14\xf4\xd5\x37\ \x60\x69\x43\x16\xd9\xce\x50\xcb\xda\x80\x38\x44\x2d\xab\xb9\x50\ \x8f\x43\x2d\xb9\x10\xf0\xcb\xc9\x80\xa5\x8d\xb9\xcc\x50\xa0\x2f\ \x51\x5c\xfb\xd5\x59\xe0\xda\x6f\x8d\x5d\x33\xe0\x9a\x01\xbf\xc3\ \xf1\xbf\x9d\xd2\xae\xe2\x5a\xef\x69\x4e\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x1b\x48\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x1a\xc5\x49\x44\ \x41\x54\x78\xda\xcd\x7b\x0b\x5c\xcf\xf7\xf7\xbf\xf9\xee\xc6\x30\ \x14\xdb\xd7\xfd\x32\x66\xc6\x66\xc3\xd8\xec\x8a\x51\x51\x2a\x42\ \xae\xb9\x35\x84\xb9\x33\x86\xe6\xba\x94\x6b\xc9\xa5\x74\x2f\x11\ \xa9\x24\x95\x8a\xe4\xbe\xdc\x72\x0b\x45\x49\x4a\x4a\xf7\xcb\xa7\ \xcb\xe7\xf9\x3f\xcf\xd7\x47\xf3\xdd\x77\xdf\xff\x77\xfb\x7d\xc7\ \xf0\x78\x9c\xf5\xde\xfb\xf3\x7e\x9d\xf3\x3c\xe7\x75\x5e\xe7\xf5\ \x7a\x9f\x73\xde\x35\x00\xfc\x65\x5a\xbf\x7e\xbd\xbe\x87\x87\xc7\ \x48\x77\x77\x77\xcb\xad\x5b\xb7\xb6\x5f\xb0\x60\x41\xcd\xff\xf6\ \xfc\xa6\x4d\x9b\x6a\xb9\x07\x44\xce\xf1\x39\x7a\xcf\xca\x3b\x26\ \x65\xa2\x47\x40\xf8\x4f\x32\x76\xd2\xce\x9d\x3b\xad\x5c\x5c\x5c\ \xc6\x0a\x4d\x12\x9a\xbc\x63\xc7\x0e\x5e\x8f\x70\x75\x75\xed\x2d\ \xfc\x9b\x71\xec\xd3\xa6\xbf\x34\x38\x28\x28\xa8\xf6\xee\xdd\xbb\ \x8f\x87\x87\x87\x17\x47\x47\x47\xe3\xe8\xd1\xa3\x90\xbf\x15\xb1\ \xb1\xb1\x5a\xf9\x2d\xf3\xc0\x81\x03\x39\x01\x01\x01\x09\xfb\xf7\ \xef\x4f\x15\xba\x11\x12\x12\xf2\xe0\xd0\xa1\x43\x05\x31\x31\x31\ \xda\x5b\xc9\x77\x50\x5c\x56\xa9\xe8\xc6\xad\x64\xc8\x18\x35\xf6\ \xd4\xa9\x53\x88\x88\x88\x28\x38\x71\xe2\x04\xc2\xc2\xc2\x1e\xc9\ \xb3\xfc\x5b\x10\x19\x19\x09\xa1\x22\xe1\x1b\xb7\x61\xc3\x86\x56\ \x2f\x84\x01\xbc\xbd\xbd\x03\x05\x60\x85\x28\x19\x2b\x33\x64\x2d\ \xb3\x38\xd5\xc7\xc7\x67\x9d\xbf\xbf\x7f\xe0\xae\x5d\xbb\xa2\x45\ \xe1\xdb\x02\xf8\x4a\x58\x70\x60\x8e\xb7\xdd\x92\x87\x7b\xf7\x05\ \x95\xee\xda\x1d\x58\xe6\xe2\xb9\xb7\x6c\xf9\xd6\xb0\xf2\xb9\xce\ \xa7\x2a\xe7\x6f\x3b\x53\xb9\xd6\x3d\xae\x6c\x93\x67\x4c\xe1\x36\ \x8f\x43\x99\xde\x1e\x81\x57\xc3\x67\x98\xaf\xda\xe3\xb0\x6c\xa2\ \xf0\x1c\xec\xe7\xe7\x37\x55\xe4\xcc\x17\x9e\xbb\xf6\xed\xdb\x77\ \x4e\x8c\x53\x29\xc6\xaa\x14\x6f\x19\xf2\x5c\x0d\x20\xb3\x50\xff\ \xd8\xb1\x63\x5a\x01\x75\xea\x3f\xfd\x7e\xd2\xb0\x51\x97\x63\x03\ \x1a\x6e\x3a\x32\x50\x2f\x39\x66\x60\x43\xed\xd1\xc1\x4d\x71\x39\ \x25\x1f\x57\xd3\x0a\x90\x78\xaf\x08\xc9\x19\x45\xb8\x9d\x49\xd2\ \x5d\x27\x09\xdd\xb8\x57\x88\xab\x77\x0b\x70\x6d\x58\x6b\x24\x98\ \xbc\xa5\xfd\xc5\x50\xff\x97\xf3\x06\x7a\x0b\xe3\xfb\xe9\x75\xa8\ \xe6\x2b\x4b\xac\x63\x70\x70\x70\x8a\x78\x5d\xce\x73\x35\x00\xd7\ \xac\xb8\x6c\x95\xa7\xa7\xa7\x55\xf5\xbd\xab\xfd\xeb\x35\x8c\x37\ \xd2\x5f\x15\x6f\xa0\x77\xfb\xe2\x80\x46\xb8\x36\xb8\x09\x6e\x8d\ \x68\x89\x3b\x56\xef\x20\xcd\xe6\x43\x64\xe7\x97\x21\xb7\x50\x83\ \xfc\xe2\x72\x14\x94\xe8\xa8\xb0\xa4\x82\x7f\xd5\xbd\xdc\x22\x0d\ \x72\x0a\x34\xb8\x3f\xf3\x63\xa4\x59\x77\xe0\x38\x8e\x57\x7c\xce\ \x0d\x68\x7c\x9b\xbc\x29\x43\x8c\x1e\x15\x17\x17\xa7\x7d\xae\x06\ \x10\x97\xdc\x2d\x6b\x1c\x02\xa6\xd9\x49\x8b\x66\xb5\xe2\x0d\xf4\ \x17\x9d\x33\xd0\x2f\xb8\x6c\xfa\x36\x6e\x5a\xb6\x40\xca\xf8\x76\ \xb8\x3f\xf5\x7d\x3c\x9c\xd5\x05\x39\x0b\x7b\x20\x6f\x65\x5f\x54\ \x54\x56\xa1\xb2\x4a\x8b\x2a\x92\x56\x0b\xad\x22\x5e\xab\x7b\xfc\ \x4d\x3d\x93\xb7\xd6\x08\xb9\xb6\x5f\x72\x1c\xc7\x93\x0f\xf9\x29\ \xbe\x97\x4c\xdf\x2e\x88\x99\x63\x71\xed\x60\x70\x60\xf1\x73\x35\ \x80\xaf\xaf\xef\x51\x59\x9f\xda\x0b\x03\xdf\x9a\x28\xca\x3f\xa0\ \xe2\xb7\x46\xb6\xc2\xdd\x49\xef\xe2\xc1\xf7\x1f\x20\xe7\x07\x51\ \x7a\x45\x6f\x14\x38\x0c\x40\xd1\x96\x21\x28\x71\xb3\x42\x59\x05\ \x50\xa2\x01\x8a\x84\x0a\xcb\x74\x54\x50\xaa\xfb\x5b\x24\x54\x2c\ \xf7\x4b\xcb\x85\x7c\xbf\x43\x89\xcb\x48\x8e\xe3\x78\xf2\x21\x3f\ \xf2\x25\x7f\x25\xe7\xfc\xf0\x76\xda\xf3\x06\x0d\x27\xec\xb1\xa8\ \xf1\x8f\xe7\x62\x00\xb7\x2d\x9b\x6e\x6e\x75\x72\xc2\xa5\x81\x8d\ \x38\x33\x0a\x58\xd6\xcc\x0f\xf1\x68\xc9\xe7\xc8\xb7\x33\x50\xe0\ \x4b\xdd\xc7\x42\xe3\x3f\x19\x15\x41\xb3\x50\x19\xb9\x04\x0f\x0b\ \x81\x07\x05\x40\x46\x3e\x70\x3f\x0f\x48\x57\xa4\xbb\xce\x10\xca\ \x94\xfb\x59\xf2\x4c\xd5\xd1\x15\xa8\x0a\xff\x81\xe3\x38\x9e\x7c\ \xc8\x8f\x7c\xc9\x9f\x72\x28\x8f\x72\xb9\x34\xae\x9c\x37\xaa\xdf\ \xf2\x6f\x35\xc0\x39\xc3\x06\x9f\x3b\xaf\x58\xa4\xdd\xb0\x7e\x3d\ \x6e\x5b\xb5\x45\xe6\xf4\xce\x78\xb4\xf8\x53\x9d\xe2\xce\x43\x51\ \xe6\x33\x11\x15\xfb\x67\xa2\x2a\x62\x11\x10\xb3\x0c\x88\x5e\x02\ \xed\xe1\x1f\x71\xfb\x21\x90\x94\x05\xdc\x7c\x00\xdc\xc8\x04\x12\ \x9f\x90\xba\x77\x4b\x7e\x4b\x96\x67\xb4\x11\x0b\x80\xc8\x85\x1c\ \xc7\xf1\xe4\x43\x7e\xe4\x4b\xfe\x94\x43\x79\x94\xab\xe4\x27\x98\ \x35\xcd\x25\xa6\xbf\xc5\x00\xbf\x18\xea\x4d\x3c\x6f\xa8\x5f\xe1\ \xb2\x6a\x11\xdc\x76\x6c\x45\xf6\xdc\x8f\x65\x7d\xf7\x41\x91\xd3\ \x60\x94\x79\x4f\x50\xb3\xa6\x7d\xac\x34\x22\x45\x91\xb0\x19\x40\ \xd0\x04\x68\x03\x46\xe0\xd2\x3d\xe0\xc2\x5d\xe0\x5c\x2a\x10\x9f\ \x02\xfc\xf2\x84\xd4\xbd\xf3\xf2\xdb\xc5\x34\x40\xeb\x63\x02\xec\ \xb6\xe0\x38\x8e\x27\x1f\xf2\x23\x5f\xf2\xa7\x1c\xca\xa3\x5c\xca\ \x57\x01\x33\x71\x58\xf3\x0a\x62\x7b\x66\x06\x90\x47\x5f\x3a\x6b\ \xa0\xb7\xe9\x82\x91\xbe\x8a\xcc\xbe\x9b\xed\x10\x12\x1c\xa4\xd6\ \x68\x89\xeb\x28\x94\xef\x9d\xc6\x59\xd6\x29\x1e\x31\x0f\x08\xf9\ \x4e\xa7\x84\xdb\xd7\xc0\xe6\x0e\xa8\x5a\xd3\x08\xc7\x93\x80\x63\ \x37\x81\xa3\x37\x80\x23\x42\x31\x89\x5a\x44\x5f\xd7\xf2\x5a\x51\ \xac\xfc\x76\xfc\x16\x50\xb1\xec\x75\x60\x65\x5d\x8e\xe3\x78\xf2\ \x21\x3f\xf2\xad\xf6\x26\xca\xa3\x5c\x25\x3f\x67\x51\x4f\xa4\x4f\ \xe9\xa8\x70\x9d\x35\x6c\xb4\x89\x58\x9f\xba\x01\x4e\x19\x34\xb6\ \xbb\x38\x40\x1f\x49\x12\x80\x32\xa6\x75\x82\xff\x16\x3b\xec\xf7\ \xf7\x56\xb3\x51\x19\x3a\x57\xb4\x59\xaa\x73\xdb\x03\x53\x00\xff\ \xc1\xc0\xb6\xee\xc0\x9a\x86\xa8\x5a\x5c\x03\x9a\x85\x35\x51\xb4\ \xe0\x0d\x04\x9e\x2b\x83\xff\x99\x12\x78\x9f\x28\x82\x47\x5c\x21\ \xdc\x8e\x15\x28\x72\x97\x6b\x2f\xb9\xe7\x77\xaa\x18\x7b\xe3\x4b\ \x51\x30\xaf\x0e\x4a\xe6\xfe\x83\xe3\x38\x9e\x7c\xc8\x8f\x7c\xc9\ \x9f\x72\x28\x8f\x72\x95\xfc\xc2\x4d\xa6\x78\xb4\xf4\x0b\xe2\x52\ \xf8\x4e\x19\x35\xb6\x7b\xaa\x06\x38\x6d\xa8\x37\xe2\x82\xa1\x1e\ \x99\x73\xdd\xa9\x2d\x2a\xd8\xcf\x1d\xe1\x07\xf6\x73\x7d\xea\x66\ \x3d\x7c\x36\xb0\x77\x24\xe0\xda\x0b\x58\x5d\x1f\x95\x8b\x5e\x42\ \xe9\xfc\x9a\x28\x9c\xf5\x32\xb2\x6c\xea\xe0\xe6\xc4\x36\xd8\x28\ \x67\x97\xb5\xa1\x59\x58\x15\xf4\x00\x3f\x05\x66\xc0\x76\x5f\x06\ \x96\xed\xbd\xaf\xae\x57\x06\x65\xe2\xe7\x90\x2c\xac\x0f\xcb\x46\ \xe2\x84\x36\xc8\x9c\x5c\x17\x79\x33\x5e\xe1\x78\xf2\x21\x3f\xf2\ \x25\x7f\xca\xa1\x3c\xca\x55\xf2\x35\xbb\xbe\xe3\x92\x20\x2e\xe2\ \x53\x38\x89\xf9\xa9\x18\xe0\xac\x91\x7e\xb7\x73\x06\x7a\xe5\x37\ \x2d\x5b\xd2\xc2\x14\xa2\x22\x72\x58\xa0\x3f\x0e\xf8\xb9\x00\x51\ \xe2\xf6\xa1\x36\x80\x9f\x09\xb0\xa1\x2d\xaa\x7e\xac\x81\xb2\xc7\ \x8a\xdf\x9b\x5c\x1f\x97\xc6\xb6\xc1\xa9\x51\x9d\x71\x7a\x54\x27\ \xcc\xf1\xbe\x8b\x99\x3b\x2e\x6b\xa7\xd9\x47\x95\x58\x2d\xd9\xf5\ \xd0\x74\x86\xd3\x6d\xb3\xe9\x4e\xb7\xc7\x2d\xf1\xcb\xb6\xb1\x8f\ \x2c\x9d\xb1\x2d\x41\x3b\xd3\x33\x85\xcf\xaa\x31\x17\xc7\xb4\x45\ \xea\xc4\x06\xc8\x9d\xf6\x2a\xf9\x91\x2f\xf9\x53\x0e\xe5\x51\xae\ \x92\xaf\x8d\x5a\x02\xcd\xee\x29\xc4\x45\x7c\x0a\xe7\x75\xcb\x96\ \xe5\xc4\xfe\x97\x0c\x10\xdf\x5f\xff\x9f\x67\x0c\xf4\xb3\x13\x87\ \x36\xe3\x1a\x53\x5b\x50\x91\xa3\x39\x72\xbd\xac\x71\x3c\x2e\x0e\ \xe1\x5e\x1b\x80\x10\x6b\xc0\xa3\xaf\x9a\x9d\xf2\x1f\x5e\x42\xf1\ \x9c\x7f\x20\x6b\x6a\x6d\x9c\x1d\xd5\x16\xc7\x2c\x3b\x2a\x8a\x1b\ \xde\xae\xd2\x75\x60\xbb\xb4\x6f\xbe\xec\x73\xe0\xe3\x8f\x3f\x76\ \x16\x5a\x2f\xb4\xea\xa3\x8f\x3e\x5a\x4a\xe2\x35\xef\xf1\xb7\xde\ \x5f\xf5\x3e\xb0\xd5\xa8\x5d\xca\x91\xa1\xed\x2b\xaa\xc7\x9f\x19\ \xf9\x0e\xd2\x27\xd5\x41\xde\xf4\x57\xc8\x9f\x72\x28\x8f\x72\x75\ \xf2\x0f\x2f\x62\x80\xa4\x11\x88\x8f\x38\x15\xde\x04\x8b\xe6\xd9\ \xd4\xe1\x7f\x36\xc0\xf1\xfe\x8d\x4e\x5f\x31\xfb\x27\xf7\x5c\x75\ \x10\x29\xdc\x38\x08\x65\x7e\xd6\x38\xed\xb7\x06\x91\x11\x11\xb8\ \xea\xbb\x10\xd8\xf9\x25\x60\xfb\x0a\x34\x0b\x64\xd6\x67\xbe\x8c\ \xd4\x49\xf5\x70\x74\xf8\x3b\x88\x1e\xd6\x0e\xe1\x43\xda\x94\x2c\ \xeb\xd3\x2e\xbe\x6b\xd7\xae\x1b\x44\xb9\x39\xa2\xec\x10\xb9\xfe\ \xec\x43\xdd\xbf\x76\x5d\xba\x74\x69\x4a\xe2\x35\x6f\xf0\x37\x3e\ \xc3\x67\x39\x66\xda\x57\x1d\x8f\x1f\x1c\xdc\xa6\x98\xbc\xc8\x33\ \x79\x5c\x7d\xe4\x4c\x7d\x8d\x72\x28\x8f\x72\x75\xf2\x83\x27\x01\ \x51\x8b\xe9\x09\xc4\x47\x9c\xc4\xab\x70\x9f\x19\xd4\xe4\xf4\xff\ \x64\x80\xb8\x7e\xfa\xc6\x8c\xf8\xc9\x63\xda\x20\x7b\xce\x47\xc8\ \x5f\x6b\x88\x52\xcf\x71\x28\x0d\x5b\x8c\xa8\x88\x30\x84\xca\x12\ \xd0\xee\xfc\x1a\x58\x56\x53\xb9\x66\xfe\xf7\xaf\xe0\xfa\xb8\x06\ \x38\x64\xd1\x06\x91\x16\xad\xb4\x73\xbe\x69\x7f\x56\x94\x58\x2b\ \x0a\x0e\xa7\x72\xa2\x94\xbe\xd0\x2b\x7f\xe4\x92\x7c\x86\xcf\x72\ \x0c\xc7\x92\x87\xcd\x97\x1d\x4e\x46\x0c\x69\x5d\x45\xde\x97\x47\ \xeb\xe1\xe1\xe4\xd7\x28\x8f\x72\x29\x9f\x3b\x05\x3d\x81\x31\x81\ \x07\x28\xe2\x24\x5e\xe2\x56\xf8\xe3\x0c\xdf\x36\xfe\xbf\x19\xc0\ \xb6\x46\xcd\xe3\xfd\x1b\xa7\xca\xde\xaa\x5b\xf7\xcb\xbf\x91\xa3\ \xe9\x08\x54\x84\xcc\x46\xd4\x3e\x0f\x99\xfd\x70\x9c\x71\x9e\x0c\ \x2c\x7f\xfd\x57\xe5\xcf\x8f\xd6\x47\xc8\xe0\x96\x08\x1d\xdc\x5c\ \x63\xdc\xb3\x93\xb7\xcc\xe4\x58\x51\xa4\xb3\xd0\xeb\xff\xeb\x29\ \x8d\x63\xc9\x83\xbc\x8c\x3e\xe9\xec\x15\x6a\xde\xa2\x92\x32\xce\ \x8e\x68\x84\xac\xef\x5e\xaf\x36\x82\xc2\x01\xaf\xfe\xc0\xc1\x69\ \x34\x02\x71\x12\x2f\x71\x2b\xfc\xf1\x43\x5a\xa6\x52\xa7\x3f\x6d\ \x80\x98\x7e\x8d\xa7\x26\x18\x37\xe6\x0b\x08\x5f\x48\x64\x9b\x31\ \x83\x66\x8f\x0d\x0e\x07\xec\x54\x89\x8b\x88\x1d\xb6\xa8\x5c\xdd\ \x48\xb9\x61\x81\x80\xb8\x39\xae\x2e\xf6\x99\x35\x83\xe7\xc0\x66\ \x0f\xbb\x75\xe9\xb2\x46\x66\xee\x2b\x01\x5e\xf7\x69\x25\x2d\xc8\ \x8b\x3c\x47\x0f\x1b\x7a\x29\xd0\xbc\xb5\x96\xb2\xae\x8e\xac\x47\ \x23\x50\xbe\xc2\x81\x9f\x1b\x01\x7e\xa6\x40\xf8\x1c\x9e\x1e\x89\ \x97\xb8\x89\x5f\xe9\x71\xd4\xe8\xed\xa9\x7f\xca\x00\x47\xbe\x6e\ \xf5\xfa\x29\x83\x46\x8f\x6e\x0c\x6f\x81\xcc\x19\x9d\x91\xbf\xe6\ \x5b\x14\x7a\x4c\x40\xa0\xef\x4e\x04\xf8\xfb\x21\xcc\xdd\x1e\x9a\ \xf5\x1d\x50\x21\x81\x88\x91\x39\x53\x40\xec\x37\x6b\x2c\xca\x37\ \x79\x24\x20\x17\xca\x6c\x75\x11\xc0\x2f\x3f\xed\xd4\x15\x79\x3a\ \x38\x38\xc4\x2e\x5e\xf4\x03\x7c\x07\x34\xc9\x0f\x34\x7d\x0b\xa9\ \x63\x6b\x73\x39\x10\x87\xc2\x03\xc7\x8e\x40\xe0\x18\x06\x45\xd9\ \x1e\x65\x29\x78\x8c\x25\x7e\xa5\xc7\xc5\xa1\xad\x1e\x51\xb7\x3f\ \x34\xc0\xa1\x7e\x8d\xe7\x5d\xaa\x9e\x7d\x9e\xb0\x9c\xc7\x62\xfb\ \xe6\x75\x70\x74\x74\xc4\x41\xd7\x35\x28\x75\xee\x05\xed\x92\x1a\ \x28\x96\x83\x4a\xce\xd4\x57\x11\x65\xd1\x00\xfe\x26\x8d\xca\x7b\ \x7c\xd4\xd9\x56\x40\xbe\x23\xa4\x4e\x61\xcf\x82\x24\xf7\xb0\x55\ \xa8\xf8\xf3\x5e\x9f\xae\xf3\x1c\xf0\x56\x59\x84\x59\x43\xa4\x8f\ \xaf\x45\x1c\xc4\x43\x5c\x8c\x07\x8f\x97\xc2\x52\x94\x07\xce\xe0\ \xf9\x80\x7a\x28\x7d\x82\xe6\x8e\x4a\x92\xd7\xf8\x63\x92\xad\xf2\ \x93\x3c\x66\xad\xff\x68\x80\xf0\x7e\x6f\x5d\xe1\xb6\xc7\xb5\x93\ \xb0\x61\x12\x7c\xbc\xbd\xb0\x6d\xeb\x56\x1c\xdb\x3e\x4f\x82\x8b\ \x29\xb0\xf6\x6d\xba\x9c\x3a\xa4\x5c\x1e\xf3\x06\xbc\x06\xd6\xd7\ \x8e\xe8\xf5\x9e\x97\x04\xab\xce\xcf\x52\x79\x92\xa4\xc8\x4c\x0e\ \x1e\x3c\x88\xd5\xab\x57\x7b\x9a\xf4\xe8\xec\xea\x31\xa0\x81\xf6\ \xdc\xb0\x7a\xc8\x9c\xf4\x3a\xf1\x10\x97\xc2\x87\x3d\xc3\xd5\x69\ \xb1\x2a\x72\xb1\xf2\x82\xbc\xd5\x7d\x95\x3e\x31\xe3\x3f\x45\x68\ \x68\x68\x16\x73\x96\x7b\xf7\xee\x8d\xfa\x9d\x01\x0e\x7e\xd1\xf4\ \xcd\x78\x43\xbd\x4a\x46\xce\xa8\x8d\x0b\x21\x09\x4c\x04\xf8\xb8\ \x23\xd1\x7b\x36\x2a\x82\xac\xb9\xe5\xa8\x83\x48\xd1\xec\x97\x95\ \xeb\x05\x0e\xaa\x8b\xc5\xbd\x9b\x9f\x13\xe5\x3f\x17\xe5\xd5\x7b\ \xf9\x33\xa6\x9a\x32\x7b\xd9\x92\x84\x29\x96\xe5\x70\x7b\x89\xf1\ \x47\x8f\x02\x8c\xeb\x21\x4d\xb7\x14\x88\x8b\xf8\x88\x53\xe7\x05\ \x31\xe2\x05\x01\xd3\xd4\x51\x39\x7b\x7e\x37\xdc\x1c\xdd\xa6\x92\ \x3a\x06\x06\x06\x9e\x92\x94\x5a\xe9\xef\x0c\x10\xf0\x6d\x13\x9b\ \x4b\x66\x4d\x64\x9d\x3b\x21\x3a\xe2\x10\x22\xf6\xf9\x22\xdb\x7b\ \x12\xb4\x3c\x7b\xef\x1b\x05\x38\x34\xa7\x95\xd5\x81\x24\x6d\x5c\ \x6d\xb8\x18\xd4\xad\x10\xc5\xc7\x09\x29\x77\xfa\x3b\x48\x92\xae\ \xef\x4b\x32\xe6\xba\x64\xa3\x35\x4b\x96\x2c\xd1\x6c\x37\x68\x80\ \x5b\x96\x75\x90\x31\xa1\x16\x71\x11\x1f\x71\x12\xaf\x3a\x1b\x54\ \x1e\x9c\xaf\xdb\x11\x96\x7d\xa9\xde\x1a\x83\x8c\x9a\xd9\xc8\x32\ \xd8\xca\xac\xb3\xa4\xdb\xbb\xfc\x86\x79\x88\x49\xfb\xb3\xa1\x5e\ \xdb\x21\xc9\x4e\x1c\xdd\xb9\x1a\xf9\x2e\xc3\xb8\x96\x74\x91\xd5\ \xdb\x88\x6b\x4c\x9d\xc4\xb2\xa7\xbc\x86\x93\x43\x6b\xe1\xe7\xde\ \x8d\xae\x75\xeb\xd6\xad\x2d\xc7\x3e\x0f\xea\xd5\xab\x57\xbb\xc5\ \x5f\xbe\x7d\xf1\xe8\xa0\x37\xe8\x05\xc4\x45\x7c\xc4\x49\xbc\xd5\ \x3b\x82\xca\x23\xe4\xff\xdc\x5f\xbd\x27\x44\x9a\xb6\x3a\x21\xf9\ \xcc\x91\x92\x6a\xcf\x17\x03\x8c\x79\x92\xe1\x59\x35\xad\x76\xb0\ \xe7\x0e\x6d\xe4\xa1\x30\x9c\x58\x37\x1d\x79\xeb\x0c\x51\xbe\x47\ \x05\x13\xdd\x1b\xd8\xd6\xae\x8c\xb4\xdc\x76\xd4\x9a\xf3\x1f\xf0\ \x5a\x95\x51\x8f\xce\x56\xd5\x87\x9b\xe7\x41\x94\xfd\x59\xf7\x0f\ \x47\xee\xfc\xb6\xb6\xe6\xce\xc8\x3a\xc4\x45\x7c\xc4\x49\xbc\xc4\ \x4d\xfc\x5c\x06\x3c\x1d\xaa\x83\xd1\x95\x91\x6d\x4a\xdd\x5d\xb6\ \x7e\x45\x0f\x90\x98\x62\xfb\x2b\x33\x2f\x57\x97\x98\xa8\xc8\x70\ \xc4\xba\xac\x46\xde\x8e\xc9\x28\xde\x6f\x8b\xb2\x38\x67\x94\x9c\ \x71\x43\xe1\x61\xb9\xe7\x31\x14\xe9\xf6\x5f\xe1\xfa\xb2\xaf\x70\ \x66\xf6\xd7\xd8\x34\xa0\x69\x56\xf7\xee\xdd\x55\x81\xe2\x79\x12\ \x31\xd8\xf5\x6b\x9e\x71\x64\x72\x6f\x9c\x9f\xf7\x0d\x92\xe4\xf0\ \x93\xb5\xfe\x1b\x14\x78\x0e\x45\x71\xd4\x6a\x68\xce\xba\xa1\xfc\ \xb8\x33\x4a\x83\x6c\x91\xbb\x7d\x0a\xee\xac\x18\x0e\xd7\x85\x53\ \x4c\x59\x74\x91\x7a\xc3\x7a\xdd\xec\xbb\xb9\x19\xf1\x80\x13\x7e\ \x38\x86\xe9\x69\x66\x68\x99\xa4\x64\xee\x8e\xa9\x2a\x66\x6b\x54\ \x12\xc3\x57\xde\xd7\xd7\x84\x3c\xc0\xd4\x9d\xb7\x31\x7a\xd4\x8c\ \x48\x99\x81\x3a\xcf\xdb\x00\xc4\x30\x76\xd8\xd4\x18\x2b\xe7\x5b\ \x58\x12\x70\x1f\x2e\x47\xf3\x11\x71\xa5\x12\x67\xee\x00\xd7\xee\ \x03\x69\x8f\x80\xdc\x12\x40\x92\xcd\x28\xd5\x54\x22\x3d\xa7\x04\ \x01\x1b\xec\x1c\x58\x71\x92\x78\xe2\xa1\x98\x48\x76\x37\xea\xe0\ \xc1\xd0\x8a\xc4\x94\x2c\x14\x95\x56\x00\xd0\x65\x6b\xd3\x73\x81\ \xc4\x0c\x95\xb2\x62\xe6\x86\xc9\x0b\xf5\x0e\x3f\x7e\xdb\x2d\xf4\ \x1a\x64\x33\x53\x84\x73\xfc\x73\x25\x62\xf8\xca\xc4\x7a\xee\xf0\ \x4d\x89\x98\xef\x97\x86\x2d\x87\x73\x71\xe0\x62\x39\x4e\x26\x03\ \x97\xd3\x81\x94\x1c\x20\xa7\x08\x28\xaf\x04\x34\x15\x55\xc8\xca\ \x2b\xc3\x01\x27\x87\x7d\xb2\xc3\x15\x8a\xde\xbe\x8a\xc9\xe1\xc3\ \x87\x35\x41\x7b\xf6\x14\xdf\xcb\x2e\x41\x89\x58\x49\x1c\x00\x79\ \x25\xb4\x9e\xce\x8a\x67\x6e\x03\xe1\x62\xd5\x1d\x47\xf2\xb0\x78\ \x77\x3a\x46\x3b\x5e\xc7\x07\x9f\x7e\xdb\x89\x63\x5f\x04\x22\x96\ \xc1\x0e\x09\x98\xe5\x95\x8a\x0d\x87\xb2\x99\x79\x62\xfa\x8d\x39\ \x48\x26\x62\x25\x1b\x4d\xe5\x69\x84\x2a\x55\x9c\x89\x74\x75\x3a\ \x23\x75\x46\xad\x18\x60\x6f\x0d\x9f\x98\x3b\xd3\xf2\x0a\x4b\xb5\ \x73\x37\x86\x97\xdd\xcf\x29\x45\xa9\x98\x8a\xee\x92\x5b\x0c\xa4\ \xe6\x00\x57\xd2\x81\x53\x62\x80\xd0\x4b\xe5\x70\x8e\xca\xc5\x82\ \x5d\x69\x18\x63\x77\x5c\x23\x96\x7f\xfb\x45\x31\x00\xb1\x8c\x5e\ \x1e\x5d\x35\xdd\xfd\x0e\xec\x43\x1f\x62\xcf\xd9\x52\xc4\xdd\x62\ \x82\x55\x97\x65\xce\x2a\x50\xf5\x06\x16\x5d\x54\xe5\xc9\x6b\xef\ \xb1\xbc\xf4\x07\xb9\xd8\x15\x1c\x73\xb2\x86\x94\xa8\x67\xb2\x42\ \x3b\x7f\x63\x74\x69\xe6\xa3\x52\xba\x89\x3c\x08\x3c\x2a\xa6\xfb\ \x28\x37\x52\xee\x14\x22\x6e\xe5\x18\xf9\x08\xf3\x7c\xef\x62\xc4\ \xb2\x90\x1c\x11\xaa\xf7\x02\x19\x40\x6f\xd2\x42\xdf\x32\x1b\xb7\ \x3b\xb0\x3b\x90\x85\x5d\xa7\x4b\x98\x7c\x65\x06\x5a\xa5\xe1\x1f\ \xfc\x8b\x01\x1e\x15\x6a\xe0\x19\x1c\xaf\xa1\x21\xfc\x0e\xc4\x9d\ \xf8\xd5\x00\x0b\x36\x46\x56\x3d\x31\x00\xd7\xcd\x6f\x0d\x10\x7c\ \x41\xa3\x0c\x30\xd7\xe7\x2e\x46\xae\x88\xc8\x17\xa1\xf5\x5e\x20\ \x03\xd4\xb3\x5a\x1c\x58\xce\xe0\xcc\xbc\x22\x0d\x10\xfb\x6f\x06\ \x28\xf9\x57\x03\x04\x9d\x2d\xa7\x01\x7c\x82\x8f\x45\xd1\x00\xb5\ \xf7\x05\x06\x6e\x3e\xb8\xd3\x55\xfb\x67\x3d\xc0\xd2\xfe\x5c\xa5\ \x08\x7d\xe3\x05\x32\xc0\x1b\x83\x57\x9e\xd6\xd2\x00\x7f\xc6\x03\ \xc2\xbd\xdd\xb3\x25\x06\x94\x78\x78\xf9\xac\xa9\x7e\xcb\x0a\x0e\ \x72\x74\xa8\x62\x0c\x28\xfb\x4f\x31\x20\xf9\x49\x0c\x60\xa4\x65\ \xc4\xfd\x6c\xac\x7d\xdb\x17\xc5\x00\x5d\x87\xd9\xb7\x35\xb1\xbb\ \x8c\xea\x18\xb0\xfb\x4c\xc9\x7f\x8d\x01\x41\xae\x5b\x1e\xf0\x20\ \xb4\x7d\xfb\xf6\x41\x8a\x81\xbc\x5c\xdc\xf5\x72\x58\x55\xf6\xef\ \xbb\xc0\xdd\x7f\xd9\x05\x0e\x5d\xae\xc4\xf6\x98\x3c\x2c\x92\x5d\ \x60\x94\xd3\x0d\x18\x4e\x71\x35\x7f\x51\x0c\x60\x69\xf5\xd3\x78\ \xf3\x75\x57\x7f\xdd\x05\xf6\xc5\xff\x7e\x17\x28\x7b\xb2\x0b\x48\ \x3d\xc3\xaf\x58\x5e\x88\xd2\xbd\xbc\xbc\x6a\xd5\x90\x7e\x9e\x97\ \xa5\xcc\xad\xd9\xbc\x62\xd9\x9d\x3b\xf1\xa7\x91\x97\x78\x1e\x95\ \xf7\xae\xa1\xf0\x5e\x12\x1e\xa6\xa5\x21\x25\x39\x15\x57\x2f\xdf\ \xc0\xd9\xb8\x93\x08\x0a\x3a\x82\xad\x6e\x87\xb0\xd4\x3e\x10\x8b\ \x26\x4c\x77\x79\x51\x0c\xf0\xc3\x28\x6b\x9f\x39\x2b\xf6\x62\xdd\ \x96\x50\xec\xf2\x8f\x46\x6c\xd4\x09\x24\x9c\x3e\x8d\xa4\xc4\x1b\ \xc8\x48\x4d\x45\x7e\x46\x1a\x34\x99\x49\x28\x4d\xbd\x82\xb8\xb0\ \x03\x38\x79\xf2\x24\x0f\x41\xfe\x1c\xcb\x46\x87\xc9\x62\x8d\xaa\ \x79\x53\xac\x9d\x98\x34\x48\x9d\xd8\x5e\xa5\x95\x8b\x77\x58\xa2\ \x32\x6c\x01\xb3\x2b\x7c\xbf\x56\x69\xe8\xd2\x79\xba\x24\xc8\x3d\ \xab\xda\x38\x66\xaa\x77\xfd\x45\x31\x40\x48\xbf\xb7\xcf\xde\x1c\ \x5a\x8f\xb8\x88\x8f\x38\x89\x97\xb8\x89\x5f\xe9\x51\xec\x32\x42\ \x8e\xf9\xab\x10\x19\x7e\x08\xfe\xde\xee\xf7\xc5\xfd\xd5\x3b\x0c\ \x5f\x2f\x83\xa5\xc7\x47\x6b\x6e\x6e\xde\xf3\xaa\x55\x7b\x0d\xbb\ \x32\x72\x16\x7e\xc2\xfc\x3a\x2b\xb2\x4c\x32\xb2\x48\xc9\x3a\x1d\ \x4b\x55\x4c\x3c\xa8\x57\xcf\x24\xcb\xba\x38\x6d\xd4\xa0\xc3\xf3\ \x56\x3e\xb6\x6f\xa3\xd6\x17\x07\xd5\xaf\x4c\x16\x3c\xc4\x45\x7c\ \xc4\x49\xbc\xc4\x4d\xfc\xc9\xbb\x97\x22\x6c\xaf\x0f\x22\xc2\x0e\ \x62\x97\xb3\x03\x46\x0d\x1e\xd4\xa3\x7a\x3c\x1b\x9d\xa2\xe4\x44\ \x74\x5f\x22\x69\xe3\xfd\xa6\xed\x92\xef\x8c\x6b\xc7\xfa\x3b\x8b\ \x8e\xac\xcd\xf3\x75\x92\x15\x5a\x95\x64\xa8\x94\x3a\x1d\xf3\x6f\ \x4c\x46\xa6\x8e\x7e\x03\xa7\x4c\xf5\xdc\x9f\xaf\x01\x58\xbb\xd0\ \x0f\x4a\x1c\xfc\x26\xf1\x10\x17\xf1\x11\xa7\xe0\x95\x17\xb7\xc0\ \x95\x88\x3c\xb0\x17\xf2\x96\x87\xb0\x03\xc1\xf0\x5f\x38\x92\x29\ \xfb\x02\xea\x5a\x3d\x9e\x3b\x40\x9c\x2c\x81\x12\xb9\xf9\x9a\xf5\ \x67\xef\x39\xdf\x95\x25\xc0\x96\x14\x96\x9e\x99\x4e\x62\x5a\x89\ \xe5\x69\x55\x98\x5c\x51\x5b\xb9\xd7\x23\x9b\x57\x91\x2e\x09\x91\ \x6b\x43\xeb\x95\xc6\x1b\x37\xa9\xfd\x77\x29\x2b\xff\x5e\x92\xbe\ \xc1\x0f\x25\x78\xb5\xe0\xff\x5f\xea\xaf\xff\xf1\x65\x93\x06\xda\ \xa4\x61\x75\x15\x9e\x1c\x9b\xd7\x70\x6d\x79\x0f\x84\xb9\xd8\x22\ \x60\xb7\x1f\x82\x83\xf6\x23\x78\xff\x5e\x04\xad\x9b\x8f\x13\x53\ \x3f\x46\xca\xe4\x0e\xf0\x30\xef\x14\x46\x5d\xab\x79\xf2\x4d\x70\ \x8f\x78\x40\xc6\xf1\xe3\xc7\x5f\x92\xe4\x86\xe1\x0d\xab\x76\x15\ \xa9\x13\xda\xa9\x06\x84\x22\x67\x0b\x54\x04\xeb\x8a\x90\x08\x9e\ \x08\x6c\xf9\xe0\xd7\x9c\xc0\x03\xeb\xd7\x91\x32\x4a\x79\x81\xff\ \xb3\x56\x7c\xcb\x96\x2d\x75\xa4\x2d\x2e\x4a\xfe\x56\xd8\xd9\xd9\ \x55\x3a\x3b\x3b\x63\xdb\xb6\x6d\x05\x5e\x2e\xdb\x2a\xfc\xd6\x2f\ \x87\x9f\x93\x1d\x5c\x36\xdb\xc3\xc1\xde\x1e\xab\x56\xad\xc2\x36\ \xe7\x2d\xd8\xe5\xe6\x8c\x18\xa7\xd9\x48\x5a\x67\x82\x07\xf6\x46\ \x4a\x9f\xdb\x93\x3b\x56\x0e\xfa\xbc\xeb\x6f\x76\x2f\x06\xc1\xb5\ \x92\x1f\x63\x7a\xe8\x13\xf9\xd7\x3c\xdc\xac\xcd\xfd\x54\x09\x86\ \x6c\x4e\xe2\x32\x60\xa9\x89\xcb\x40\x65\x57\x7c\x06\xb0\x12\x23\ \xa5\xeb\x27\x5e\x90\x3c\xbc\x2e\x2e\x19\x37\x18\xfd\xac\x94\xb7\ \xb5\xb5\x7d\x55\x26\x29\x63\xe5\xca\x95\x55\xa2\xf4\x5d\x31\xc4\ \x0e\xc1\xec\xef\xeb\xb2\xf5\x56\x80\xb7\x07\xf6\x78\xbb\x21\x28\ \x70\x2f\x02\x77\x79\x22\x54\x82\xdc\x29\x87\x21\xc8\xd8\xd4\x1b\ \x79\x5e\xa3\x50\x16\x3a\x97\xf8\xa9\x87\x5a\xd6\x97\xc7\x77\x28\ \xa4\x8e\xff\x6e\x80\xfe\x92\x23\xcb\x67\x76\x44\x5c\xa3\xf6\xf4\ \x2f\x3a\x78\xdf\xb5\x7e\x17\xf7\xbe\x7b\x8f\x95\x56\xdd\x6e\x10\ \x3a\xef\x49\x30\x74\xea\x84\x0a\x29\x55\x17\xce\x64\x2c\x78\x0d\ \x77\x25\x33\x9c\x68\x51\xaf\xec\xaa\x71\xc3\xf7\x9f\x85\x01\x44\ \x61\xb7\x35\x6b\xd6\x60\x9b\xfc\xab\xbe\x77\xc1\xa8\x51\x97\x0b\ \xc6\xfa\xf9\x49\x96\xf5\x91\x36\xbe\x9e\x2a\xbf\xe7\xcf\xa9\x85\ \xb2\x45\xaf\x40\xeb\xd8\xa9\x3a\xf8\x11\x37\xf1\x53\x0f\xa9\x54\ \xbf\x07\xf7\x41\x1d\x63\xa8\xe3\xef\xea\x02\x92\x1d\xd1\xc8\x4e\ \x70\x9d\xef\xd6\xb2\x0c\x4c\x8e\x0d\x69\x9d\x9f\x32\xa1\xbd\x4a\ \x21\x15\xac\x1b\xc8\xfa\xbb\xce\x0b\x22\xe6\xb2\xfa\xc2\x2d\x86\ \x25\x29\x46\x5c\x95\x86\x4a\x95\xa5\x90\x60\x5e\xff\x2e\x7b\xf8\ \x9e\x81\xfb\x67\x6d\xde\xbc\x39\x8b\xd7\xa4\x8b\x06\x0d\x3e\xbf\ \x38\xb0\x41\xd1\x8d\x21\xf5\x28\xb7\x3a\x25\x4e\x3c\xc4\x45\x7c\ \xc4\x49\xbc\xc4\xad\xf0\x3f\x90\xd9\xbf\x31\xfe\xdd\xf2\x1e\x5d\ \xbb\x0e\xa2\x8e\xbf\x33\x80\xa4\x9a\x4f\x48\x96\xf5\x21\x83\xcb\ \x07\x1f\x7c\xd0\xc4\xb2\x67\x47\x4f\x9e\x09\x68\x35\xe5\x05\xdb\ \x87\xb3\xde\xa6\xf3\x82\xd0\xa9\xdc\x11\x98\x78\xac\x5e\x0a\xdc\ \x7e\x24\x1e\xd4\xc1\xd5\xc1\x6f\xde\xbf\x62\xac\xd7\xfd\x69\xae\ \x7d\x49\x7f\x43\x02\xdf\x21\x35\xf3\x06\x8d\x8c\x2e\x0d\x68\x50\ \x46\xe5\x29\x8f\x72\x29\x9f\x38\x88\x87\xb8\x88\xaf\xba\x3e\x48\ \xdc\xb9\xcb\xbe\x50\x55\xe2\x9f\x0d\xde\x0f\xa7\x6e\xff\x2e\xa3\ \x3a\x25\xd6\x9b\xcd\xc8\x7b\xf6\xec\x09\x14\x0b\xd5\x94\xc2\xac\ \x41\xa8\x49\xeb\x07\x29\xe3\x24\x16\xcc\xee\xc2\x4a\x2b\x5b\x51\ \x74\x3d\x40\x87\x7f\x00\xf6\x5b\x31\x20\xca\x76\xc3\x7e\x00\xdd\ \xe1\xe8\xfe\x63\x23\x24\x0e\x79\xb3\xe2\xa2\x71\xfd\xe9\x4f\xc3\ \x00\x12\x97\x7a\x4a\xd0\xab\x90\xae\xf1\x95\xf1\x86\xfa\x23\x13\ \x06\x36\xac\xa8\x56\x9e\xf2\x28\x97\xf2\x89\x83\x78\x88\x8b\xf8\ \x88\x93\x78\x89\x9b\x05\x91\x4b\xa3\xdb\x95\x50\x27\xea\xf6\xff\ \x2d\x8d\xc9\x12\x48\x0a\xdc\x1f\x98\x25\xef\x05\xcd\xf9\x7e\xdd\ \xbf\x5b\xe7\xf5\x49\x63\xda\x68\xb9\x14\x18\x41\x0b\x37\xab\x02\ \xe9\xe3\xa5\x30\x4f\x77\xca\xda\xd4\x9e\xf1\x80\x05\x09\x9d\x27\ \x4c\xac\xa5\xf6\xe3\x5b\x72\x2a\x4b\x18\xd4\x30\xf0\x82\x41\xfd\ \x56\x7f\xb1\x19\x7b\xdc\xc6\x8d\x1b\xe1\x3a\x69\x40\xe6\x35\xd3\ \xfa\x5a\xf2\x25\x7f\xca\xa1\x3c\xca\xa5\x7c\xe2\x20\x1e\xe2\xaa\ \x2e\x8c\x12\xef\xc3\xf9\xdd\x71\x67\xdc\x3b\x98\xdb\xe7\x7d\x1f\ \xea\xf4\x5f\x8b\xa3\x4e\x4e\x4e\x9f\x47\x47\x47\xb1\xf9\xf9\x32\ \xd7\x89\x14\x3a\xbf\xd8\xd6\xbf\x6d\xe2\xed\xb1\x6d\x75\x01\x71\ \xf9\xd7\x74\x29\x9e\x0e\x59\x71\x61\x8f\x8e\xee\x6c\xb0\xbe\x15\ \x41\x70\x26\xd8\xca\xc2\x35\xa9\x72\xf4\xb7\x2d\xe9\x0d\xf5\xb4\ \x97\x4c\xea\x87\x5f\x34\x6a\x30\xb0\xba\x3c\xfd\x67\x89\x81\x2e\ \x78\xc1\xd8\xd8\xf5\xeb\x1c\xb0\x63\xec\x17\xe4\x47\xbe\xe4\x4f\ \x39\x94\x47\xb9\x94\x4f\x1c\xc4\x43\x5c\xc4\xa7\x70\xe6\x48\xd3\ \xd4\x1d\xe9\x21\x8c\xb6\x78\x27\x8b\xba\x50\xa7\x3f\xac\x0e\x4b\ \x0c\x08\x0e\x0a\xda\x5f\xec\xe1\xe1\xbe\x49\x06\xbc\x29\x25\xaf\ \x59\x87\x8c\x5b\xe5\xb0\x54\x96\x61\xd3\x49\x55\x5a\x4b\x76\x8e\ \x46\xe5\x81\x39\x40\xf4\x13\x23\x70\x06\x78\xfa\xe2\x5a\xcc\x97\ \x80\xc4\x32\xd5\xfd\xf1\xca\x1b\xd4\x36\x49\xb7\xbd\x68\xaa\x77\ \x6f\x9c\x8d\xe3\x69\x93\x29\x9e\xab\xdf\x9f\x73\xb2\xff\xfb\xb3\ \x4e\xbe\xd3\xd5\x3a\xfe\x15\x12\xaf\x79\xcf\x78\xb2\xf7\xaa\x31\ \x93\x1d\x4f\xc7\x9b\xe8\x27\xc9\x8c\x23\x76\xb6\x21\xa4\x2b\x1d\ \xde\x13\xbf\x24\x3f\xf2\x25\x7f\xca\xa1\x3c\xca\xad\x56\x9e\x78\ \x88\x4b\xe1\xcb\x5b\xd5\x17\x3c\xd1\x5e\x1c\xf9\x4e\xe9\x67\xdd\ \xbb\xce\xa5\x2e\x7f\xaa\x41\x82\x27\x2d\xf1\x80\x34\x59\x0a\x5a\ \x59\x7f\xbe\xb2\x23\xbc\xdb\xb3\xdb\xc7\x6b\xe2\x87\xb4\x28\x4b\ \x1e\xd5\x1a\x59\xb3\x3e\xe4\xba\x62\xeb\x2a\x5b\xd4\x9e\x54\x8d\ \x02\x2c\x01\xe7\x2e\x0c\x44\x2c\x4d\xf1\x38\xca\x59\xe2\xd1\x94\ \xc0\xd5\x56\x79\x4b\x3a\x3b\xcc\x1c\xae\x62\xc0\x9a\x04\x7c\xbb\ \xe2\x22\xbe\xf9\xe9\x02\xbe\x5e\x76\x4e\x4b\xe2\x75\x5f\xb9\x67\ \xb8\x3a\x01\x83\xd6\x5e\x41\xa2\xa5\x3e\x58\xe8\x38\xb5\xa0\x2f\ \xd6\xda\xd9\x21\x60\x5a\xdf\xea\x46\x29\xf2\xa7\x1c\xca\xa3\x5c\ \xca\x27\x0e\xe2\x21\x2e\xc1\x67\x80\x94\x89\xed\x70\x63\x64\xeb\ \x2a\x93\x4f\xbb\x6c\x94\x72\x7d\xbb\xff\x53\x8b\x8c\xbc\x25\xd5\ \x96\x60\x78\xd3\xd3\xcb\xa3\xd2\xd1\x69\x73\xf9\xac\xd9\xb3\xce\ \x9b\x7d\xd3\xeb\xd0\xb5\x61\x2d\xaa\xd8\xa4\xfc\x60\xa6\x1c\x90\ \xec\x8d\x28\x8c\x91\xf6\x71\x7f\xe0\x7c\x20\x68\x3c\xe0\xde\x9b\ \x8d\x0a\x0c\x4a\x72\x64\x7e\x62\x08\xce\x5c\xfa\x77\x6f\xe2\x7b\ \xcf\x14\x4c\x71\xbd\x8d\x09\xdb\x92\xc0\x3c\xfe\x98\x2d\x37\x15\ \x8d\x75\xbe\xa9\x52\xed\xdf\xb9\x24\xab\xa4\x46\xda\xc4\xfa\xca\ \xd5\x2f\x2d\xfa\x0c\x3f\xfd\xf4\x13\x42\xe6\x1b\x49\xf9\xbb\x26\ \xf9\x92\x3f\xe5\x50\x1e\xe5\x52\x3e\x71\xe8\x94\xff\xd9\x00\xa9\ \x12\xb3\x6e\x8d\x68\x85\xe9\x5f\x75\xdc\x2f\x51\xbf\xdb\x1f\x55\ \xac\xff\x5b\x29\x7a\xba\xaf\xaf\x4f\xe6\x5a\x7b\xbb\x8a\x61\x96\ \x43\x31\x63\xd0\xd7\x9a\xeb\xc3\x5a\xe0\x86\x34\x28\xa7\x73\x39\ \xd8\x19\xb0\x53\x53\xd6\xdc\xf7\x0c\x3c\x2c\x44\xb2\x22\xcb\xae\ \x4e\x36\x35\xb2\xd3\x93\xbd\x7d\xdc\x9f\x75\xf1\x61\x76\x1d\xac\ \x0b\xcb\x56\x85\x95\xe5\x81\x99\x58\x2a\x45\x8c\x1f\xf7\xa4\x93\ \x58\xd0\x60\xbd\x81\xfd\x83\x2a\xa3\x93\xf3\x7d\x5d\x5d\xe7\xc9\ \xb2\x2e\x90\x5d\x00\x11\xcb\xcc\x50\xb9\xbc\x2e\xf9\x92\x3f\xe5\ \x50\x1e\xe5\x52\xbe\xc2\x91\xb3\xbc\x37\x92\x46\xb7\x11\x7c\x2d\ \x61\xff\x6d\xfb\xb3\xb2\xee\xfb\xfe\x99\xb2\xdd\x9f\x39\x89\xbd\ \x2b\x5e\xb1\xcb\xfa\x3b\xeb\xdc\xe9\x66\xdf\x6a\x13\x2c\x5a\x80\ \xfd\x03\xb4\x74\xee\xaa\x3e\x28\xde\x3a\x8c\xed\x69\xaa\x23\x03\ \xd1\xca\x1b\x74\x0d\x4b\xbb\xcc\x80\x1d\x3d\x58\xaf\xd7\x2d\x8d\ \x1f\x6b\x21\xe0\x97\x52\x56\x97\x54\x97\xe8\xce\xd8\x02\x56\x71\ \x14\xb9\xc6\xaa\x6e\x51\x76\x90\xaa\x74\x56\xe9\x0f\xb5\xd5\x3b\ \xc7\xfd\x55\xed\xe1\xe4\xb8\x19\x51\x6b\xad\x50\xe5\x33\x88\x7c\ \xc9\x9f\x72\x28\x8f\x72\x95\xfc\x07\x0b\x7b\xe2\xc6\xf0\xe6\xb8\ \x3e\xac\xb9\x76\x69\x9f\x77\x4f\x8a\xdb\x0f\xe5\x89\xef\xa9\xb6\ \xca\x0a\xc3\xfa\xfd\xfa\xf5\x9b\x3e\x6c\x40\xff\x6b\x27\xa5\x4f\ \xe7\xba\x45\x53\x24\x8d\x6a\x85\xec\xc5\x9f\xa9\xfa\x7b\xa9\x87\ \x15\x23\xf0\x93\x46\x69\x6e\x49\x3c\x94\x70\x9d\x7a\x19\xa0\x6a\ \x47\x2f\xe6\xe9\x98\xad\x55\x7d\xc1\x51\xd7\xaa\x10\x79\x55\x47\ \x87\xe5\x9a\x7d\xc3\x2c\xbf\x31\x99\x59\xb5\xe9\x5d\x35\xdb\x59\ \x9e\x23\x20\x81\x19\x47\x9c\xe7\xa0\xfc\xc0\xf7\xd5\x0d\xd3\x94\ \xa3\xe4\x15\x6c\x30\xc1\x5d\x9b\xce\x10\x2c\xec\x09\xac\x18\xdd\ \xab\x23\xcf\x31\xc3\x88\xf5\x99\x74\x8b\xb3\x0e\x27\x3b\x43\xbf\ \xee\x5d\x3f\xda\x14\x32\xa0\x45\x36\x3f\x65\xb9\x2e\x94\x32\x5e\ \xce\x0a\x2b\x7a\x57\xb7\xca\xab\x37\x48\x2d\xbd\x41\x88\x19\x19\ \x06\x2a\xed\xc1\xef\x55\x92\xf2\x7c\xaa\xae\xd4\x76\xf6\xce\x6f\ \xa9\xba\x63\x9c\x99\x5c\x6d\xb0\xb5\x32\xde\xa3\xd0\x1f\xb1\xdb\ \xdf\x0f\xb1\x6e\x4b\xa0\x91\x3a\x3f\xf9\x92\x7f\xd1\x16\x0b\x64\ \xcc\xe9\x0e\x76\xb1\x11\xc3\x49\xb3\x16\xc5\xbd\x3f\xf9\xd0\x99\ \xd8\x88\xf1\x99\xb6\xcb\x8b\x80\x57\xc5\xc5\x7a\x08\xd9\x3a\x7c\ \xdd\xfa\xea\x25\xf3\xa6\x55\x6c\xa6\xbc\x2a\x40\x52\xad\x3b\xca\ \x56\xd9\x5f\x19\xa2\xd4\x6b\x3c\xca\xf7\x4d\xd7\xa5\xd5\x8e\xd8\ \x42\x7b\x64\x39\x92\xb3\x80\x5b\xd5\xdf\x0a\x64\x00\xd7\x9f\x50\ \xf5\x37\x03\x4c\x63\xcb\x2c\xff\xa4\x82\x5b\x4e\xc4\x6a\x7e\x32\ \x87\x38\x37\x5b\x14\xee\x1c\xa5\xf8\x66\xfe\xf0\x19\x12\xa5\x81\ \x8b\x32\xaf\x98\x37\xd1\xfa\x18\xb6\x4e\xed\x2a\x58\x88\x89\xd8\ \xfe\x96\x0f\x26\x78\xa4\x94\x08\xfb\x9e\x58\x7c\x5a\xcf\xae\x5d\ \xdc\xbd\xfb\xb7\xbc\x77\xd9\xf4\x9f\xda\xcb\x83\xde\xc2\x55\x01\ \x76\x5b\x3c\x22\x73\xc1\xa7\xe2\xa2\xa6\xec\xce\x50\xc7\xd2\xb2\ \x7d\x33\x91\xf5\xaf\x5f\x8b\xe4\x02\xf7\x14\xc9\x35\x29\x8f\xbf\ \xe9\x72\xf8\xe5\x21\xf3\xd4\x69\x2e\xcd\x73\x26\x22\x24\x89\x79\ \x62\xe3\x34\xa4\x4d\xff\x40\x29\x4e\x19\x97\xa5\x43\x2c\x74\x60\ \x8b\xec\xfe\x9f\x7c\xe8\x4b\x0c\xc4\x42\x4c\x7f\xeb\x27\x33\x8f\ \x4f\x8b\x8d\xc4\xf2\x7d\xe4\xbc\xb0\xa0\x4f\xf7\xce\xbb\x43\x0c\ \x9b\x65\x13\x60\x82\x49\x63\x92\x02\x7a\x4b\x1a\x9e\xd3\x67\x77\ \x43\xae\xbd\xb1\xca\xcd\x17\x69\x9e\x7c\x2b\x94\xaf\x88\xd7\x8a\ \x54\x49\xbe\x44\x23\xd7\x8e\x16\x78\xb0\xe4\x4b\x1c\x5f\x31\x01\ \x52\xb8\x45\xec\xf7\xfd\x65\xb6\x75\x7c\x8f\x18\x37\x2d\x1c\xde\ \xf3\xfd\x60\xca\xa4\x6c\x62\x20\x96\xe7\xf0\xe1\xe4\x6f\xbc\xa1\ \xa9\xcc\xc4\x40\x01\x63\x3b\xb0\x7b\xa7\x60\x97\xbe\xad\xd3\x4e\ \x98\xb6\xc0\x25\x93\xb7\xf8\x4d\x91\xa2\x04\xf3\x66\x2c\x4c\xfc\ \xe6\x8b\xb1\xea\x7f\xbc\x26\x55\x7f\x39\xc6\x67\x39\xe6\xe0\xe6\ \x95\x60\xd3\xc6\x59\x8b\x96\x9a\x3d\x86\x2d\xee\x8f\xfc\xb4\x63\ \x38\x65\x50\x16\x65\x52\xf6\x5f\xc5\xff\x54\x1b\x19\x85\x5a\x0b\ \x99\x09\xc0\xd9\xd2\xbf\xe3\x3a\xc2\xc2\x3c\xcf\x71\xf0\xa7\x88\ \x36\x6e\x59\x79\xde\xac\x79\x55\x4e\x6e\x11\xf2\x8a\x1e\x7f\x2f\ \x58\x5a\x81\xa2\x27\xc4\xef\x07\x75\xdf\x0e\x16\x94\xe1\x82\x79\ \xf3\xaa\x83\xd6\xdf\x6a\xa2\xa2\x0e\xc3\xd3\xdd\x2d\x4f\x66\xda\ \x81\x3c\xc9\x9b\x32\x28\xeb\xf9\x7e\x3a\xfb\xc7\x86\xd0\x97\x99\ \xfa\x40\x8c\x60\x6e\x6d\x6d\x7d\x6e\xd2\xa4\x49\x45\x42\x55\x43\ \x87\x0e\xcd\x1e\x6d\x39\x3c\x75\xe9\xc4\x11\x29\x9b\x57\xda\xe7\ \x3a\xba\x86\x6a\x1c\xdd\xc2\x35\x5b\xd6\x6f\xcb\xb5\x9b\x63\x73\ \x73\xde\x8c\x69\xf1\xf3\xe6\xcf\x3f\x2f\x87\xb0\x6c\xf9\x3a\xb4\ \x54\x52\x75\x9a\x3e\x7d\xfa\x0c\x27\x2f\xf2\x7c\x16\x1d\xa8\xcf\ \xba\x68\x59\x53\xa8\x81\x8d\x8d\x8d\xa9\xb4\xb4\x1d\x95\x63\x6d\ \x16\x5f\x6e\x98\xb8\x0c\x8b\x88\x42\xae\x78\x03\x29\xf1\x66\x32\ \x1b\x18\x8b\x1f\x7f\x30\x5d\x2a\x5f\x85\x56\x49\x9a\x2e\x41\x0c\ \xd6\x82\x3c\x9e\x25\x46\xfe\xe7\x6f\xa5\xe5\xcb\x97\xff\x53\xd2\ \x7b\xc3\xb6\x7b\x07\xad\xde\xb1\xe7\x88\xf7\xce\x7d\xb1\xfe\x2e\ \xbe\xc1\xeb\xe5\xde\x2c\x49\x7c\x4c\xe2\xa7\xf2\xac\xd9\xfd\x5d\ \x78\xfe\x1f\x54\xc7\x67\x32\x0b\x29\x7c\xe5\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\x1c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x08\x12\x14\x39\x28\x29\x91\x7c\x0e\x00\x00\x1f\xa9\x49\x44\ \x41\x54\x78\xda\xe5\x9b\x09\xb0\x5c\x57\x99\xdf\xff\xb7\xf7\xbd\ \x5f\xbf\xfd\xe9\xe9\x3d\x49\xd6\x2e\xd9\xda\x2c\x79\xc1\x78\xc0\ \x76\x42\x81\xc1\x03\x64\x0c\x13\x1c\x42\x65\x02\x4e\xb1\x84\x78\ \x5c\xc5\x14\x55\x49\x2a\x54\x48\x05\x2a\x03\xc3\x14\x03\x55\x33\ \x13\x43\x2a\xae\x21\x9e\x01\x26\x05\x43\x80\xd8\xb2\x0d\x78\xc3\ \x96\x25\x6b\xb1\xf5\xb4\x3d\x6b\x7d\xd2\xdb\xb7\xde\xb7\xdb\xb7\ \xf3\x3b\xa7\xbb\x35\x12\x1a\x0a\x18\xb0\x81\x4a\xcb\x9f\xcf\xed\ \xbb\x9c\x77\xbe\xed\xff\x2d\xf7\xb4\xfe\x7f\xff\x38\xaf\xe7\xdf\ \x59\xb3\x66\x8d\xaf\xab\xab\xcb\xd7\xdb\xdb\x6b\x29\x91\x48\x38\ \xd5\x6a\x55\xb9\x5c\xce\x5b\x58\x58\xf0\x96\x97\x97\xbd\x0b\x17\ \x2e\x78\xd9\x6c\xb6\x29\x09\xfa\x2d\x16\x40\x24\x12\xf1\x6d\xdd\ \xba\x35\xb0\x7b\xf7\xee\xf8\xdd\x77\xdf\xbd\xb5\xaf\xaf\x6f\x67\ \x34\x1a\x5d\xcf\xf9\x75\x7e\xbf\xbf\xd7\x71\x9c\x04\x14\x6f\xf2\ \x69\x34\x1a\x05\x43\x08\x63\xa6\x5c\x2e\x9f\x2a\x16\x8b\xe3\xd3\ \xd3\xd3\xfb\xbf\xfd\xed\x6f\x9f\x3c\x70\xe0\x40\x0d\xa1\x34\x8c\ \x40\x7e\x1b\x04\xe0\x6c\xda\xb4\x29\x74\xef\xbd\xf7\xf6\xbe\xf5\ \xad\x6f\xbd\x07\x2d\xbf\x3d\x16\x8b\xdd\x1c\x0e\x87\xfb\x60\x5a\ \xf0\x2a\xd7\x75\x2d\xc1\xb0\x3c\xcf\xb3\x0f\xf9\x7c\x3e\x4b\xc1\ \x60\x50\xdc\x67\xcf\x57\x2a\x15\x15\x0a\x85\x49\xac\xe1\xd9\xa9\ \xa9\xa9\x6f\x3d\xca\xe7\x5b\xdf\xfa\x56\xde\x58\xca\xaf\x52\x18\ \xce\xaf\x4a\xdb\xd7\x5f\x7f\x7d\xf4\x13\x9f\xf8\xc4\xae\x6d\xdb\ \xb6\x7d\x34\x9d\x4e\xdf\x0d\xd3\x29\xc3\x08\x1a\x15\x1a\x55\xa9\ \x54\x52\x15\xa6\x6a\xb5\x9a\xdc\x7a\xbd\x25\x00\x08\xa1\x40\xad\ \x95\xc0\xbc\x15\x42\x38\x1a\x55\x2a\x95\xb2\x14\xe5\xb8\xce\xfd\ \x8b\x8b\x8b\xf3\x33\x33\x33\xff\x7b\x6c\x6c\xec\xcf\x3e\xf7\xb9\ \xcf\x8d\x4f\x4e\x4e\xba\x46\x10\xbf\x6e\x01\x38\x1b\x37\x6e\x8c\ \x7e\xfa\xd3\x9f\xbe\x79\xc7\x8e\x1d\x7f\x94\xc9\x64\xde\xe2\xe7\ \x03\xd3\xc6\xaf\x55\x2c\x14\x54\xe1\xd8\x50\x15\x2a\x23\x04\xc8\ \x0a\xa2\x8e\x20\x1a\x58\x82\xe1\xde\xe7\x38\xf2\x07\x02\x0a\x05\ \x43\x0a\x86\x42\x0a\x84\x43\xf2\x9b\x63\xc6\x68\x3c\xae\x9e\xbe\ \x3e\xf5\x41\x21\xae\x2d\x2d\x2d\xd5\x2f\x5d\xba\xf4\xcd\x23\x47\ \x8e\x7c\x96\xbf\x7b\x22\x9f\xcf\xbb\xbf\x16\x01\xa0\x9d\xe0\x87\ \x3f\xfc\xe1\x91\xf7\xbf\xff\xfd\xff\x7e\x68\x68\xe8\x03\x98\x70\ \x10\x4d\x5b\xc6\x4b\x30\x6e\x28\xbb\xbc\xac\x85\xb9\x79\xcd\xce\ \xcd\x6a\x6e\x76\x56\x4b\x8b\x4b\xca\xe6\xb2\xd6\x1a\x3a\x02\xf0\ \x49\x0a\xfa\xfc\x8a\x84\x82\x4a\x18\xcd\x27\x12\xea\x4a\xa7\xd5\ \x95\xe9\x56\x2a\xd3\xa5\x68\x2a\xad\x50\x22\xae\x70\x2c\xa6\x6e\ \x84\x30\xbc\x72\xa5\x62\x1c\xcf\xce\xce\x96\xcf\x9c\x39\xf3\xc5\ \x6f\x7c\xe3\x1b\x9f\xfb\xfa\xd7\xbf\xbe\x2c\xc9\x7b\xbd\x04\xe0\ \x8c\x8e\x8e\xc6\xbe\xf4\xa5\x2f\xbd\x63\xcf\x9e\x3d\x7f\x8a\x89\ \x0e\x5d\xd6\x78\x3e\xaf\x1c\x4c\x4f\x4f\x4d\xe9\xfc\xb9\xf3\x3a\ \x73\xf6\x8c\x26\x26\x26\x34\x03\xf3\xf8\x72\x87\x71\x6b\xfa\xc2\ \x3d\x1c\xa3\x7d\x49\x01\xc7\xa7\x00\x18\x10\x0a\xf8\x15\x45\xcb\ \x89\x48\x54\x19\xcc\xbf\xaf\xa7\x5b\x83\x83\x83\xea\x5f\xb1\x42\ \xe9\x81\x01\x45\x33\x19\x85\xcd\x79\xce\xad\x5a\xb5\x4a\xc2\x72\ \xce\x9d\x3b\xf7\xea\xc1\x83\x07\xff\xf5\x27\x3f\xf9\xc9\xe7\x5d\ \x3e\xaf\xb5\x00\x7c\xb7\xdc\x72\x4b\xf7\x97\xbf\xfc\xe5\xff\x40\ \x48\xfb\xb7\x66\xed\x98\xa0\x0a\x50\x76\x71\x51\x13\x17\x2e\xe8\ \xc4\xf1\x13\x1a\x3b\x7e\x4c\x68\xc7\x32\x5e\x2e\x96\xd4\xdb\xdb\ \xa3\x95\x2b\x86\xd5\xc7\xd8\xdd\xd5\xa5\x58\x24\xa2\x30\xbe\xde\ \x6c\x78\x06\x0f\xb8\xa7\xa0\x02\x02\x5c\x5a\x58\xd0\xfc\xf4\x0c\ \x34\x8d\x60\x9a\x8a\xe0\x06\x29\x5c\xa0\xbf\xa7\x47\x2b\x56\x0e\ \x6b\xc5\xea\xd5\xca\x8c\x8c\x2a\xda\xdb\xab\x38\xc2\x19\xe5\x7b\ \x5f\x7f\xbf\xc0\x86\x2a\xd8\xf0\x1f\x1f\x7c\xf0\xc1\x2f\xe3\x22\ \x95\xd7\x4a\x00\xfe\xb7\xbf\xfd\xed\x2b\x3e\xff\xf9\xcf\xff\x05\ \x5a\xb9\x1b\x60\xb2\x8c\xe7\xd0\xec\xe4\xc5\x8b\x3a\xfa\xca\x2b\ \x3a\xf0\xd2\x4b\x3a\x7e\xf2\xa4\x66\xa6\xa6\xf1\xd9\x5e\x6d\xdb\ \xba\x55\x9b\x37\x6d\x52\x22\x1c\x91\xaf\xe9\xc9\xef\xb5\xc8\x31\ \x04\xf3\x62\x84\xac\x45\x34\x0c\x71\xec\x72\x5f\xb5\x5a\xb3\x73\ \x9e\x3e\x76\x4c\x0b\x08\xd1\x80\x63\x12\xb3\xef\x87\xf1\x95\x30\ \xbd\x62\xfd\x7a\xa5\x56\x8d\x2a\xc2\xf7\x01\x5c\x62\xf5\x75\xd7\ \x59\xa0\x45\x08\x5f\xf9\xd4\xa7\x3e\xf5\xe0\xc9\x93\x27\x8b\x3f\ \x2f\x40\xfa\x7f\x5e\xe6\x3f\xf0\x81\x0f\xac\xf9\xcc\x67\x3e\xf3\ \x48\x7f\x7f\xff\x9d\x26\x44\xe5\xdb\x1a\x3b\x31\x36\xa6\x1f\xfe\ \xf0\x87\x7a\xe2\x07\x3f\xd0\xcb\x2f\xbf\xac\x01\x16\xf5\xce\x77\ \xdc\xa3\xbb\x6e\xbf\x5d\xd7\xa1\xf5\x0c\xbe\x9d\xc4\x54\xd3\x6a\ \x51\xaa\x43\x9c\x4b\x4a\x4a\x74\x88\x73\x71\xc6\x18\x6e\x11\xe7\ \x5a\x6f\x32\xa5\x75\x1b\xd6\x69\x04\x06\x6b\x08\xb9\xb0\xb0\xa8\ \x12\x02\x2f\xf2\x37\x6b\x4b\x4b\xf2\x55\xaa\x0a\x20\x98\x4a\xdd\ \x55\xae\x84\x95\x81\x0f\x03\x03\x03\xbb\x6e\xb8\xe1\x86\xad\x58\ \xc4\x63\xe7\xcf\x9f\xaf\xfe\xaa\x04\xe0\xbf\xf3\xce\x3b\x57\x7e\ \xf6\xb3\x9f\xfd\x5f\xc4\xf5\x5b\x0d\x8a\x1b\xb3\x9f\xc3\x4c\x5f\ \xda\x7f\x40\x8f\x3d\xbe\x57\xcf\x3e\xfb\xac\x5c\x7c\xfb\xbd\xbf\ \xf7\x7b\xba\xe3\x8d\x6f\xd4\x20\xc0\x95\xc2\xa7\xd3\x4e\x87\xe9\ \x0e\xb3\x0e\x0c\xc2\xa4\xa4\xa8\x31\xf1\x26\x24\x99\x11\xe2\x9c\ \x19\xa1\x98\xbd\xc6\x79\xac\x22\x01\x26\x5c\xb7\x6e\xbd\xba\x01\ \xc4\xfc\xf4\x94\xaa\x68\xba\x9c\xcb\xab\xba\xbc\x24\x87\xb5\x84\ \x88\x1e\x0d\x9f\xa3\x3c\xc7\x19\x5c\x05\x21\x6c\x02\xa3\x36\xee\ \xdb\xb7\xef\xbb\xe0\x52\xfd\x97\x15\x80\x8f\x30\xd7\xff\xd0\x43\ \x0f\x7d\x85\x89\xef\x00\xc4\xac\xd9\x4f\x5d\xba\xa4\xe7\x9f\x7f\ \x5e\xff\xf7\xb1\x47\x75\xe8\xe0\x41\xed\xda\xb1\x43\xff\xfc\xde\ \x7b\xb5\xb2\xa7\x57\xe9\x0e\xe3\x57\x68\x38\x0a\x85\x61\x0c\xaf\ \x57\x00\xc6\x02\x8c\xfe\xa6\x20\x46\xaf\x75\xec\x33\xc7\xf6\xba\ \x21\x29\xc8\x18\x16\xe4\xf1\x9c\x5b\x07\x3b\x12\x1a\xc1\x22\xaa\ \x33\x73\xaa\xb1\x86\x5a\x89\xd0\x4a\x44\xb1\x42\xf0\x33\x23\x96\ \x96\x03\x8c\xbb\x00\x4a\x42\xe6\x26\xb2\xd0\x81\xef\x7f\xff\xfb\ \x8f\xe3\x5a\xee\x3f\x56\x00\x0e\x79\x7b\xea\xe1\x87\x1f\xfe\xcf\ \x6b\xd7\xae\xbd\x8f\x58\x6e\x32\x33\x4d\xc3\xfc\x8f\x9f\x7b\x4e\ \x8f\xed\xdd\xab\xb3\xa7\x4f\xeb\xdd\xef\x7c\xa7\x6e\xdb\xbd\x47\ \x5d\x80\x5a\x86\x85\x74\x18\x8f\x59\xa6\x61\xb6\xcd\xa4\x45\x7c\ \x33\x1a\xbf\x6f\x42\x1c\x37\x6d\x24\x68\x8d\x6a\x9f\x77\xec\xbd\ \x8c\x1d\xe1\x58\x30\x6c\x32\x59\xdd\x5a\xcf\xf0\x9a\x0d\x6a\x10\ \x4e\xdd\x42\x8e\x30\x5a\x53\x3d\x57\x40\x08\x65\x2c\x21\x88\xa4\ \x23\x2a\xd6\x6a\xd6\x1d\x58\xfb\x2e\x92\xb3\x65\x84\xb0\x5f\xcc\ \xfe\x0b\x0b\x80\xb8\x1e\xf9\xc2\x17\xbe\x70\xef\x6d\xb7\xdd\xf6\ \x5f\x00\x3c\x1f\xcc\x5b\xb3\x7f\xe1\xf9\x17\xb4\xf7\xf1\xc7\x75\ \x11\xc4\xbf\xef\xf7\x7f\x5f\x1b\x09\x47\x5d\xf8\x62\x06\xcd\xe3\ \xd7\x76\x91\x21\x18\x68\x69\xb5\xcd\x58\x9b\xa9\xa6\x65\x9a\xb1\ \x7d\xac\xf6\xb1\xda\xc7\xba\xea\xd8\x8e\xac\xc3\x53\x20\x0d\x40\ \x3a\x9e\x42\x45\xc9\x29\xd7\x35\xb4\xf6\x3a\x35\x96\xc1\x02\x37\ \x27\xa7\xee\x22\x84\xa2\xfc\x60\x42\x08\xb0\x6d\x1a\x21\x10\x0d\ \x07\x08\x95\xe4\x0b\xbf\x43\x8e\xf2\x14\x2e\x3a\x21\x66\xfc\x45\ \x04\xe0\xa7\x80\xd9\xf4\x91\x8f\x7c\xe4\xaf\x40\xe0\xa4\xc9\xe8\ \x96\x09\x73\x07\x0f\x1c\x40\xf3\x8f\xeb\x3c\x21\xce\x30\xbf\x66\ \x60\x00\xcd\xfb\xd4\xed\xf7\x29\xe9\x39\xd6\x7f\x03\x2d\x2d\x42\ \xad\x58\xaf\x0e\xa3\x57\x33\x79\x95\x15\xa8\x6d\x05\x96\x38\xee\ \x8c\x1c\x28\x18\xa7\x2e\xe8\x8a\x28\x56\x73\xe5\xe5\x4c\xf4\x80\ \x88\x40\xfd\x6b\x56\x03\x86\x17\xb9\xa7\x2a\xaf\x84\x80\x8a\x65\ \xf9\x39\x1f\x8a\xc7\xd4\x20\xcc\xba\x92\x86\x56\xac\x08\x90\xa7\ \xdc\x76\xe2\xc4\x89\x47\x00\xc6\xf2\xcf\x2d\x00\x24\xd7\xf5\xc5\ \x2f\x7e\xf1\xb3\x84\xbb\x5b\x08\x2f\x36\xc1\x39\x41\x48\x7a\xfc\ \x89\x27\x34\x06\xd2\xbf\xfb\x77\xef\xd1\xda\xa1\x15\xea\x86\xf9\ \x54\x44\xea\x92\x8f\xe4\x25\x2e\x11\xbe\x3a\xcc\x59\x26\x1a\x10\ \x82\x40\xcb\x57\x6a\xfe\xaa\x31\x68\xb4\xe6\xba\xc4\xf7\x11\xad\ \xba\x79\x8f\xfa\xd6\xae\x55\x1f\xbe\xde\x47\xa8\xeb\xdf\xb8\x56\ \xf1\x35\xbd\x0a\xf7\xf4\x6b\xd5\x75\x5b\xd4\xbf\xe1\x06\x0d\x6e\ \xde\xac\x9e\xd1\x51\x2d\x9c\x1a\x57\xdf\x48\x9f\x16\x16\x27\x14\ \xab\x53\x64\x95\x5d\x35\x89\x4e\x01\x39\x0a\xa6\x92\xaa\x01\x9e\ \x41\x04\xd1\xc3\x07\x2b\xf0\xbe\xf7\xbd\xef\x3d\x2d\xa9\x71\x8d\ \xa5\xeb\xda\x4f\xf0\x81\x07\x1e\x78\x13\x7e\xff\x1e\xc2\x9d\xcd\ \xe3\xa7\x88\xc9\xa0\xaa\x8e\x1e\x79\x59\xb7\xec\xd9\xad\x75\xc3\ \xc3\x4a\x4b\x84\x38\xc1\x78\x40\x41\x98\x1b\x20\x16\xa7\x07\xfb\ \x5b\x0c\x37\x5a\xc4\xf1\x15\x82\xb8\x96\x12\x84\xcc\x55\x37\xed\ \x91\x83\xfb\xa8\x69\xdc\xe4\xea\xcc\xc4\xf1\xd7\x55\x27\x19\x8a\ \x45\xc3\xdc\x1f\x30\x67\x3a\xff\xc9\x2b\x57\x14\x4b\x74\x6b\x64\ \xeb\xf5\x44\x08\xbf\xe2\xc2\x32\x4c\x74\xc0\x3a\x6b\x27\x4e\xca\ \x9b\x5f\xd0\x0c\x19\x29\x25\xb7\xe0\xe5\x81\x0f\x7e\xf0\x83\x9b\ \xcd\x04\x3f\x4b\x00\x0e\xda\xcf\x50\xca\xfe\x21\x26\x18\xb0\xf1\ \x9e\xd4\x76\xec\xe8\x98\x8e\x1c\x3a\xa4\x34\xfe\x75\xeb\xce\x5d\ \x4a\x35\x05\xd8\x11\xaf\xc3\x3e\x28\x24\xc7\x6d\x58\x06\x52\x83\ \x43\x56\x83\xfc\x55\xc3\x34\x74\x25\xf3\x8d\xd6\xb1\x71\x11\x09\ \x0d\xaf\xd3\x10\x89\x12\xcc\x9b\x73\x96\x3c\xa8\xf3\x8c\xb8\xbf\ \xd1\x2c\x2b\x90\xea\x95\xcf\x0a\x51\x10\xff\xb3\xd7\x20\xc6\xfa\ \x72\x4e\xab\x6f\xbc\x49\xc9\xe1\x5e\x25\x03\xb8\x20\xcf\x08\x57\ \x75\x4f\x9f\x55\x1d\x41\xd4\xb3\x39\xcd\xce\xcc\xa8\xbb\xbb\x3b\ \x7a\xeb\xad\xb7\xfe\x91\xa4\xf0\xcf\x12\x40\xe0\x43\x1f\xfa\xd0\ \x1b\x30\x99\xdb\x0d\xf3\xb5\x72\x19\xb0\x9b\xd0\x91\xc3\x87\x34\ \x4b\x4e\xff\x4f\xde\x7c\x87\x92\x86\x51\x28\x0e\x85\x78\x9a\xe5\ \x4b\x56\xe3\xae\x65\x32\x92\x4c\x6a\x68\xcb\x66\x05\x11\x56\xc7\ \x0a\x3a\xcc\x73\xc0\xf9\x80\x86\x77\x6e\x53\x7a\x68\xa8\xe3\x16\ \x1d\x21\x5d\x1e\xbd\xf6\x33\x35\xaf\xa6\x68\xba\x5b\xf8\xc8\x35\ \x56\x64\x05\x56\xab\x2a\x46\x6a\xdd\x7b\xfd\x76\xd2\xeb\x16\x77\ \x81\x5a\x5d\x4d\xc0\xba\x81\x00\x3c\xb2\xc8\x02\x0a\x34\x25\xf8\ \xca\x95\x2b\xdf\x73\xdf\x7d\xf7\x6d\x90\xe4\xfc\x54\x01\x50\x8b\ \x27\xdf\xf6\xb6\xb7\xdd\x4f\x1d\xef\x33\x0f\xe5\xc9\xc0\xc6\x4f\ \x9e\xd0\x19\xd2\xdb\x35\xc3\x2b\xb5\xb2\x3b\xa3\x64\x87\x79\x16\ \xe4\x73\x01\xa6\x96\x6a\x34\x73\xfc\x24\x7e\x58\xb1\x4c\x53\xda\ \xe2\xab\xa4\xc0\x7d\xbd\x57\xb9\x43\x72\x20\xad\xe4\x86\x21\x85\ \x13\x21\xfb\xbd\x01\x68\x4d\x1d\x79\x45\x2e\xc2\xbe\xc6\x6d\x9a\ \x8c\x12\xf7\xa6\x25\xe6\x6b\xaa\x7e\xf9\x9a\xd7\x06\x53\x5f\x90\ \x68\x43\xe1\xd4\xbd\x79\xbb\xc2\x71\x8a\x29\x2c\x2f\x64\xc2\x2d\ \xb9\x81\x26\xa7\xe4\x52\x8c\x09\x25\x2e\x92\x3d\xd2\xa3\x08\xdd\ \x7e\xfb\xed\x1f\x35\x6c\xfe\x14\x01\xd8\xa4\x67\xd5\xf0\xf0\xf0\ \x9b\x6d\xd3\x02\x9a\x45\x92\xe3\xc7\x8f\x2b\x37\x33\xab\x3d\xdb\ \xb7\x2b\xe1\xb5\x98\x0f\x7b\x6d\x34\xae\xd4\x44\x1b\x0b\x33\x6e\ \xa8\x92\x5d\xd6\xa5\x23\x47\x54\x5e\x5a\x6a\x23\xbb\xd4\x43\xde\ \xde\x0b\x36\x38\x8e\x0f\xd7\x58\xad\xae\xf5\x83\x72\x9d\x96\x36\ \x2b\xa4\xd2\xe7\x5f\x78\x41\x59\xf2\x8a\x2b\x35\xeb\x59\x17\x60\ \x6c\x0b\xc3\x4f\x7c\x0f\xf6\xad\x92\x17\xc8\x09\x6e\x38\x57\x63\ \xee\x9a\x82\x31\x4f\x91\x95\x09\xa5\x46\x37\x2a\x3e\x30\xc2\xf7\ \xa0\x65\xc6\x2f\x59\xc5\x80\x8e\x6a\x5e\xbc\x64\xb1\xa0\x8a\x40\ \x5c\xce\x01\xea\xef\x06\x13\xd3\x3f\x4d\x00\xa1\xfb\xef\xbf\xff\ \x1e\xc2\x5e\xcc\xdc\x5c\x06\xfd\x2f\x9e\x3b\xa7\x4b\x50\x17\x68\ \xba\xb2\xaf\xcf\x32\x1f\x31\xc9\x89\xf5\x41\x34\x58\xc2\x02\xaa\ \x2c\xca\x6f\x17\x6b\x35\x39\x05\x5e\x2c\x9d\xbf\x60\x90\xdd\x32\ \x11\x27\x3d\x1d\xdd\xbd\x4b\xc9\x15\x5d\x2a\xe3\xef\x31\xc2\xd4\ \xf2\xc4\xa4\x2e\xec\xdb\xaf\x6a\xbe\xd0\x36\xfd\x46\x27\x62\x40\ \xae\x25\xbe\x5b\x6c\xa9\x15\x73\xea\x1e\xdd\x2c\x67\x78\xbd\x6a\ \xf1\xaa\xea\xe1\x05\x79\xf1\xac\xba\x6e\x5a\xa3\xfe\x37\xbf\x13\ \xdc\x59\x05\x58\xc2\x38\x40\xe9\x48\x90\xcd\x2a\xad\xe6\x1d\x98\ \xaf\x9d\x3f\x2f\x1f\xf3\x93\xbe\x1b\x2b\xe8\xff\xd8\xc7\x3e\xf6\ \x96\x2b\xf9\x0e\x74\x0e\x4c\xbc\x5f\xb7\x6e\xdd\x3f\xb5\xfd\x3a\ \xc8\x80\xdf\xc4\xd9\x73\xca\xcf\xcd\x69\x23\x05\x89\x61\x3e\x6a\ \xd2\x52\x99\x2c\xcd\x11\xff\xc1\xb0\xf1\x39\x4f\x35\xbf\x83\x96\ \x1b\x62\xdd\x36\x7e\x2f\xf2\x5c\x79\x69\x59\x7d\xeb\xd6\xca\x47\ \x8d\x2f\x01\x58\x2a\x29\xda\xb7\x5a\x0b\x2f\x3d\xa5\xec\x89\x39\ \xee\xbd\x3a\x3a\x74\xa2\x87\xeb\x95\xe4\x73\x4c\x1e\x11\x56\x80\ \x46\x49\x61\xfa\xac\x62\x3d\x03\xea\xb9\xee\x06\x35\x86\xd7\xa9\ \x5e\x29\xda\x7b\xd3\x3c\xeb\x0f\x84\x54\x2f\xcd\x6b\xf9\xcc\x01\ \xf9\x38\xbe\xaa\xbc\x75\x11\x22\x19\x63\x63\x72\x52\x3e\x5c\xb3\ \x1a\x29\x8b\x2e\xb4\x46\x46\x46\xee\x91\xf4\xb7\x50\xf5\x4a\x01\ \xf8\xe8\xeb\xf5\x51\xec\x6c\x43\x00\xb6\x46\x5f\x9a\x9f\xd7\x0c\ \xc0\xe7\x15\x8a\x1a\x1d\x18\x84\x79\x4f\xe0\x7d\x0b\xf4\xd4\x12\ \x00\xa7\x14\x2a\x4b\x95\x4c\x42\x3d\x23\x61\x92\x91\x90\xb8\x6c\ \x85\x20\xa8\x00\x08\x25\xfa\xfb\x59\x5c\x55\x0d\xe2\x7d\x94\x92\ \x36\x68\xd2\x65\xaa\x44\x0b\x1d\xed\x4c\x11\x8b\x69\x9b\xbd\xcb\ \xbc\xf4\x06\xca\x05\x25\x82\x43\x6a\x54\x29\x74\x66\x2f\xa8\xd0\ \x33\xc8\x3c\x2b\x69\x93\x05\x99\x2b\x6d\x05\x40\x6f\x0d\x21\x56\ \x55\xbc\xf4\x8c\xca\xf3\x17\x98\x2c\x70\x75\xaa\x67\xc0\xb5\x84\ \x30\x97\xb3\xaa\xd3\x91\x0a\x66\xba\x2c\x18\x92\x22\xdf\x2a\x29\ \x7e\x8d\x00\xde\xf7\xbe\xf7\xed\xa4\xe7\x96\x32\x75\x7e\x1d\xbf\ \x5e\x64\xf1\xb9\xf9\x39\x85\x78\xa8\x2f\x95\xb4\xa6\x1f\xb8\x42\ \xfb\x12\xa3\x44\x4e\x8e\x65\xf4\xd3\xcc\x1c\x1a\x54\xaa\xe6\x80\ \xcc\x2d\x21\x48\x56\x10\x2d\xcd\x3a\x15\x85\x32\xd7\x59\xbb\x4b\ \x76\xf7\x90\xae\x26\x61\xfc\xef\x05\xb5\x6c\x05\xd0\x10\x12\xc0\ \xd7\xc1\x1f\xa7\x2e\xa9\xc6\x5c\x01\x42\x20\x45\xce\xd8\x8f\xd1\ \xf4\x0d\x4a\xaf\x24\xc4\xca\x69\x27\x57\x2e\x65\xf2\x69\x15\x27\ \x9e\x43\x18\x01\x6b\x8d\x57\x49\x80\x63\x38\x96\x43\x16\x5b\xa3\ \x3f\x11\xdb\xb8\xd1\xe2\x55\x32\x99\x1c\x7d\xef\x7b\xdf\xbb\x96\ \x56\xda\x92\xb9\xab\xe3\x0b\xc1\xcd\x9b\x37\xef\x68\x58\xe0\xf1\ \x6c\x03\x73\x79\x76\x4e\x55\xe2\x68\x8c\xef\x69\x90\x36\xc8\x1f\ \xf5\x75\x90\xda\x35\xe4\x5a\x72\x2b\x1c\x67\xb3\x30\x38\x48\xd2\ \xe2\x5a\xc1\xe2\xfb\x68\xc7\xf8\xb1\xa1\xba\xdc\x26\x85\x4c\x77\ \x9f\xd5\x78\xc7\xd4\xbd\xcb\x73\xb9\x1d\x74\x87\x60\x3c\x88\x30\ \x09\x7d\xcc\x63\xae\x63\x05\x7e\xf9\xf2\x21\x95\x4f\x1d\xd0\xc2\ \xab\x87\x39\xc7\xf9\xa6\xc1\x9e\x25\x15\xce\x3f\xa6\xc2\x1c\xbd\ \x01\x04\x5f\xcf\x5f\x5b\xf9\xda\x39\xc1\x19\x17\x6b\x0e\x4a\x82\ \x3f\xdb\x7e\xa7\x48\xba\xd1\x28\xfd\x4a\x0b\x08\x63\x1a\xd7\x99\ \xf0\x02\x59\xd4\x2c\x90\x50\x08\x41\x24\xda\xa5\x6c\x80\xf3\x72\ \x98\x54\x90\x73\xd9\xd3\x6c\xde\xdf\x58\x32\xa5\xe9\x9c\xa2\x83\ \x6b\x94\x3d\xf4\x8c\x2a\x97\x6a\x1d\x3c\xb0\xc5\x4c\x78\x75\x4c\ \x99\x70\x54\x24\x16\x5a\x9a\x9c\xe0\xba\x07\xe3\xcd\xcb\xe9\xb0\ \x5b\xad\xd1\xe8\x98\x57\xe0\x62\x45\xd1\xeb\xd7\x60\xe6\x61\x2d\ \x1e\x3b\xa2\xca\x82\x1f\x86\x5b\xf7\xf8\xfc\x35\x85\xce\x9d\x56\ \xa3\x56\x51\xd7\xaa\xf5\x98\xfe\xb3\xaa\xcc\x8f\xa9\xb4\x80\x5b\ \x16\xa5\x7a\xe1\xda\xfe\x07\xcc\xd8\xf4\x98\x57\x4e\x56\x79\x00\ \x9d\x3d\x0d\x18\xae\x6f\x0b\xa0\x61\x05\x40\xba\x18\xe5\xe4\x68\ \x5b\x00\x36\x01\x2a\xe7\x73\xf2\xd7\xea\xb6\x3b\x13\x70\xeb\x98\ \x62\xf8\x1f\x2c\xa8\x3c\xa8\x56\xc0\xdf\x27\x4e\xab\x67\xe3\x0e\ \xe5\x87\x46\xc9\xc2\x9e\x57\x79\xc1\x33\x8b\x87\x19\x68\x68\xc0\ \x40\x33\xa1\x2a\x8e\x35\xc0\x2c\x9d\xe2\x46\xa5\x53\x00\x59\x37\ \xc1\xda\x96\x54\xca\xe4\x94\x19\xb8\x9d\x67\x69\xa2\x5e\xbc\xa0\ \xfc\xc5\xc6\x55\x40\x19\x8c\x73\x5f\xed\xbb\xf2\x6e\xbd\x59\x95\ \xc9\xa7\x54\x5e\xac\xa9\x59\x8c\xaa\x3c\x57\x27\xa7\xa8\xf2\xb7\ \xac\x17\x5d\xbd\x4c\x5c\x5a\x46\x08\xf4\x26\xa9\x8c\xac\x52\x00\ \xc3\x75\x6d\xe5\xd7\x6d\x82\xcd\xc9\x08\xfe\xdf\xdd\xa9\xc4\xea\ \xa0\xa6\xcb\x03\x41\xd3\x91\x09\x88\x73\x39\x72\x11\x34\x68\x7c\ \xfc\x27\xd2\x69\x66\xc4\x4c\x9b\xf4\xec\x12\xe4\xe7\x45\x0d\x6c\ \xd8\xae\xd2\xf8\x51\x98\x58\xb4\x02\x18\xde\xb3\x4b\x4e\xb7\x2b\ \x07\x21\x86\x58\x40\x64\xc5\x88\x4a\xaf\xce\x6a\x74\xcf\x1b\x25\ \xaf\x85\x01\x67\x9e\x79\x56\x7e\xea\xfd\x08\x7d\xbe\xee\x61\x22\ \x45\x31\xcf\xf5\x9b\x55\xdf\x1c\x63\x0e\x33\x7f\x15\x4d\x2f\x68\ \xe1\xf4\xb8\x8a\x67\xa6\x34\xe1\xfe\x9d\x32\x83\x39\x84\x44\xb4\ \x28\x86\x55\x99\xcb\x2b\x10\xa9\xcb\x09\xb3\xf6\x25\x3f\x56\x72\ \x79\x6d\xd6\x0d\x7d\x75\x97\x90\x5d\xc4\x00\xfa\xad\x1b\xc0\x6b\ \x7f\xc7\xfa\x2f\x63\x00\xbe\x11\x45\x00\xd6\x02\xdc\x3a\x92\x05\ \x40\xa8\xeb\x61\xcc\x91\x8b\xf9\x05\x42\x36\x5e\x5f\x4d\xae\x6b\ \x47\xaf\x8e\x58\x08\x87\x15\x6a\xf4\x10\x5a\x0e\x0f\x0e\x81\xd8\ \xd6\xcf\x6d\xb8\x13\x0c\xd4\x8b\x59\xeb\x42\x19\xac\x24\x3c\x14\ \x15\x27\x3b\x58\x80\xe6\x5c\xc5\x46\x42\xea\xd9\x76\x8b\xfc\xa1\ \x20\xf3\x56\xed\x73\x16\x6b\xcc\x75\x4c\x37\xde\xdf\xa7\x91\x9b\ \x6e\x26\x5b\xcd\xc0\x64\x5e\xf9\x19\xae\xe5\xfd\x58\x4e\x90\x28\ \xb0\x48\x32\x86\x9b\x76\xb9\x8a\x64\x58\xcb\x95\x3a\x6a\x97\xe6\ \x5e\x0d\x1e\x02\x81\x4e\xc8\x8f\x9b\xe1\x2a\x01\x70\x32\x72\xb9\ \x16\x77\x5b\x80\x17\x96\x14\x89\xf9\x31\xdd\x28\x8b\xd4\x15\x49\ \xcb\xb5\x82\xf0\x4c\x49\x5a\x5a\xb6\xb1\x21\xdc\x3d\x80\x46\xdb\ \x80\xe7\x1a\xe1\x34\x31\xfb\x49\xc1\x15\x89\xcb\x0a\x65\x76\xdd\ \x22\x5f\x2c\xcb\x12\x4a\x24\x31\x45\x25\x56\x39\xca\xec\xbe\x55\ \x99\xd5\x6b\xdb\x00\x57\x62\xc1\xb8\xa3\x4d\xa6\xda\x64\xc1\xd2\ \x53\xff\xa6\x75\xd6\x2a\x4a\x53\x92\x9b\x8d\x20\xd8\xba\xaa\x26\ \xde\x57\x1d\x18\xa4\x14\xee\x62\xed\xc1\xab\x2c\x14\x62\xe4\x79\ \x9a\xa8\x1d\x01\xc4\x7e\x12\x04\x1d\x4c\xc3\xf1\x0c\x83\xf6\x4a\ \xd3\x5e\x08\x3a\x52\x18\xb2\xe8\x0f\x98\xd9\x30\xe5\x75\x26\xbe\ \x3a\xe6\x34\xeb\x46\xca\x06\xa1\xeb\x36\x7d\xc5\x96\xda\xd6\x01\ \x92\x97\x7d\xf2\xa6\xcf\xab\xb1\x9a\x50\x18\x0a\xab\xff\x86\xdd\ \xca\x12\x59\x34\x77\xc6\x3c\x49\x65\x78\x17\xf8\xb1\x0d\x2d\x8a\ \x79\xd0\x7e\x39\xaf\x06\x02\x38\xfd\xa3\xa7\x2c\xd3\xe1\x78\x5c\ \x83\x37\x5c\x8f\x55\x31\xab\x93\xc5\x22\x82\x6a\xe4\x04\x78\x86\ \x55\x26\x5a\x79\xf8\x39\x38\x06\xcc\x98\x05\x7b\xf8\x7a\x93\xe7\ \x9d\x2b\x85\x60\xad\x08\x2b\xef\x84\xe7\x4e\xd2\xd8\x11\x00\x42\ \xe7\xc3\x85\x76\x3b\xcc\x4f\xa3\x11\x62\x45\x7e\x18\xf0\xe1\x54\ \x75\xb7\x80\xb6\x42\x52\xbd\x3d\xe7\x55\x42\x68\xb6\x42\x98\x5a\ \x3e\xe7\x96\x0b\xb8\x90\x09\x93\x56\x8b\x00\x1e\x52\x07\x89\x0b\ \x53\x17\x94\x1a\x59\x85\x80\x7c\xea\xdd\xb8\x55\x8d\x35\x68\x5c\ \x20\xbc\x31\x7b\xeb\xaf\x35\x35\x8c\xf6\x4b\x05\xc6\x20\xb1\xbf\ \x64\x05\x50\xcb\x17\x48\x84\x7a\x94\x59\x13\xa3\x29\x7b\x09\x2c\ \xc1\xdd\x96\x22\xcc\x5b\x47\x00\xb3\xed\x90\x07\xb9\x0e\x2e\xd4\ \xb4\x02\xa8\xe6\x6c\xc8\xb2\x82\x11\x14\x08\x87\x6d\xe9\xcd\x77\ \x53\x17\x94\x0c\xcf\x57\xba\x80\x0b\xff\x95\x8e\x00\x02\xc1\x80\ \xc2\xc1\x90\x15\x40\xb3\xcc\x12\x17\xa7\xd4\xe0\x38\x94\x34\x3c\ \xa3\xd5\x2b\xfc\x1f\xe2\x24\xa3\x9f\x3e\x7d\x2c\x69\x05\x51\x5b\ \x9c\x36\xa6\xd9\xbe\xee\xb6\xcc\xb9\xe8\xd3\xd2\xf1\x83\x68\xc6\ \x30\x55\x13\x92\xc4\x4d\x70\x2f\x88\x63\x90\xd8\x16\x39\x30\x4b\ \x31\x55\x2a\xa3\xd5\xcb\xee\x86\xe6\xfd\xa4\xc3\x21\x55\xaa\x13\ \xe4\x13\x45\x04\xd0\x24\x22\x04\x40\xff\x29\xee\xab\xb5\x75\xd0\ \xae\x03\x1c\xc1\x2c\x7e\xcf\xd8\xd6\x26\x6b\xf3\x29\x9c\x4c\x5e\ \x16\x00\xd6\x5e\x96\xe4\x5d\x69\x01\x55\x8a\x85\x2c\x17\xe4\xf0\ \x2f\x88\xb4\xa2\xd4\xf3\x05\x53\x86\x56\x1c\x55\x2f\x4d\x2a\x0a\ \x6a\xbb\x4b\x53\x0a\xa7\x43\xaa\x2e\xb9\x1d\xe5\x63\x15\x14\x48\ \x5d\x52\x33\x19\x55\xbc\xb7\x4f\x75\xb4\x5f\x9e\xba\x88\x00\x0c\ \x00\x36\x21\xd7\x2c\x02\x01\x38\x2a\x2d\x9e\x52\x61\xc3\x46\xac\ \x60\xd4\x6a\x85\xa7\xda\xeb\x68\xf9\x37\x44\xec\x9f\x46\x0e\x4d\ \x0b\x82\xa3\xb7\xdc\x6c\x05\x10\x8c\xfa\x15\x88\xcf\xca\xf5\x16\ \x50\x42\x59\x71\x94\x51\x9e\xe1\x38\x32\xaf\x6a\x10\x86\xea\x6a\ \x15\x44\x30\x6e\x4a\x82\x9a\x8d\x6d\x86\xe0\x06\x1e\x3c\x53\x84\ \x51\x94\x75\xde\x99\xa1\xec\x79\x06\xb7\x63\x01\x4d\x88\x28\xb3\ \x30\xe9\xb5\x93\x9d\x40\x84\xbc\x9d\xc2\x21\x84\x69\xca\x63\xc2\ \x19\xfa\x82\x17\x4f\x29\xb3\x69\xbb\xe2\x1b\x57\x28\x71\x5d\x58\ \xb1\x15\x94\xc6\x2b\xa5\xd4\xfa\xa8\xd2\x3b\x37\x72\x6d\x27\x9a\ \x0a\xa8\x34\x37\xad\xda\xec\x02\xe6\xd9\xd2\x1e\x02\x80\x18\xb1\ \x82\xf2\xa5\xa2\x96\x8e\x1e\xe0\xb8\x24\x54\x67\x1b\x9a\x6a\x6b\ \xbe\x69\xc8\xa5\x09\x33\x8f\xb5\x95\x1c\x2e\x5b\xf4\xc7\xa4\x03\ \x54\x7a\xa4\xb3\xd5\x29\x3a\x3f\xe4\x23\x7c\x0f\xc5\x68\x84\xa4\ \x27\x94\x1c\xad\xaa\x6b\x6d\x43\xd1\x6e\x62\xfb\x30\x58\x91\xa0\ \x44\x4e\x19\x16\x3a\xd6\x60\x5c\x22\x24\x7f\x3c\x81\xe2\xd2\xea\ \x58\x38\xca\x3e\xcb\xe0\x5e\x69\x01\x15\x5e\x37\x5f\x68\xa7\x8a\ \x56\x00\x71\x3a\x2d\x61\x80\xca\x71\x72\xaa\x2e\x37\x95\x3b\xfa\ \x8a\x86\x6e\xbc\x59\xdd\xeb\x37\xca\xb9\x7e\x37\xfe\x99\x67\x81\ \xb8\x45\x22\x69\xcd\x2b\xc4\xbd\x1e\x0c\x94\x2e\x9e\xc5\x05\x4c\ \x62\xd2\xb0\x21\xc8\x46\x08\x00\x94\x0f\x7e\x4b\x59\xfa\xea\xb8\ \x4a\x37\x6c\x53\x6a\x68\x58\xb0\x29\x62\x94\x05\x4e\xdb\xe2\x22\ \x6f\xaf\x13\x4a\xdd\x52\xc8\x0a\x8e\x05\x83\x17\x75\xc6\x59\xc5\ \x7a\xa9\x27\xd2\x31\xd6\xd3\x24\xaf\x99\x50\x62\x10\x54\xc7\xdf\ \xb3\xb1\xba\x92\x83\x8e\x55\x54\xac\xdf\xa3\x36\xc1\xcc\xc9\xf0\ \xf9\x87\xc9\x1b\xcb\x89\xcb\x47\x63\xc6\x6f\x92\x20\xe6\xe7\x63\ \x36\x5b\x9c\x66\x68\x5c\x89\x01\xb5\x31\x3e\x6e\xfb\x8f\xfa\x90\ \x5a\x82\xfa\x3f\xc2\xc3\x4c\x62\x4d\xac\x7c\x3e\xaf\xe9\xe7\x7f\ \x04\x43\x25\xf9\x9d\x0a\x85\xc9\x08\x4c\x0c\x21\x71\xee\x71\x6c\ \x1e\x4f\x3c\x9e\x21\xef\x9e\xc5\x8f\x6d\x28\x6d\xbd\xf4\xb4\x16\ \x00\xd5\x4d\xdd\x40\x9a\x3d\x57\x50\x69\xf2\x02\xf7\x57\xed\x33\ \x1e\xd4\x74\x49\x9d\x99\xb7\x78\xe1\x04\xe8\x5e\x36\xf7\xd9\x6e\ \xd1\xf9\x67\x9f\xd3\xf4\xb1\x1f\xab\xb4\x7c\x46\xd1\x01\x3f\x16\ \x66\xc2\xd5\x8c\x22\xe9\xb8\x42\xa9\xa8\x62\x03\x41\xf5\x6d\x75\ \xd4\xb3\xc9\x53\xcf\x96\x06\x02\x90\x4d\xd6\x1c\xd7\x47\x04\xf3\ \xb5\x36\x5c\xa0\x9c\x38\x1d\x67\xe1\x0a\x9d\x4c\xf7\xa5\x97\x5e\ \x3a\x72\x0d\x08\x3e\xf9\xe4\x93\x87\x79\x97\x56\x32\x37\x38\x94\ \x9d\x71\x04\x10\xc5\x0a\x8c\x09\x35\x25\xea\x7b\x29\x77\xf8\xa8\ \xe6\xc7\x0e\x61\xde\x79\x62\xef\x84\x8d\xd9\x96\xbc\x9a\x05\xb7\ \xfc\xe9\x63\xc4\xe6\x26\xd7\x3d\xcb\x7c\xc7\x05\x3a\x84\x50\xb8\ \x86\x20\xb0\x1e\x98\xb7\x66\xcf\x09\xc2\x24\xf5\xc1\xf4\x5e\xcd\ \xef\x7f\xc2\x6a\xd0\xab\x59\x90\x45\x08\x15\x18\x68\xd0\xf1\x09\ \x71\xef\x12\xe7\x2f\xe2\xe7\x30\x97\x48\x51\x7c\xf5\x70\x2d\x4e\ \xe1\x14\xa2\x90\xf1\x81\xfc\xed\x30\x58\x43\xf7\x35\xbf\x22\x4e\ \x00\x1c\x8b\xc9\x0b\x85\x08\xbb\xf4\x12\x4c\x94\x81\x30\xff\x69\ \xb6\x1b\x9d\xfc\x49\x10\xf4\xf8\x5c\x64\x33\xc3\xab\xd4\x04\xdb\ \x48\x15\x49\x66\x32\x4a\x50\xe2\xe6\xe9\xa8\xd8\x5c\xda\xe5\xe1\ \x0b\x35\xcd\x3d\xff\x14\xdd\x9d\x21\xc5\xfa\xfa\x55\x5d\x30\x66\ \x69\xea\xfd\x10\xe0\x35\xa7\x3a\x55\x57\x2d\x17\x31\xcc\xb6\xa3\ \x83\xc9\x0f\x60\x1e\x57\x41\x8a\x9c\x73\xad\xc9\xe3\x9b\x30\x58\ \x80\xa1\x79\x79\x95\x33\xb8\xd8\x51\xac\x62\x99\xe2\x86\x34\x35\ \xe0\xb4\xdc\x47\x02\xe9\x23\x58\x98\x41\xf5\x79\x70\x61\x49\xa1\ \xae\x1e\x1a\x17\x71\x14\x94\xa0\x59\x02\x40\xc3\xa4\x70\x51\xb1\ \x36\x61\x31\x6e\x1d\xed\x57\xc0\x8c\x0a\xd1\x05\x73\xf1\x27\x53\ \xaa\x74\xa5\x71\xdb\xf5\xca\xb6\x37\x66\xcd\xcf\xcf\x1f\x94\x94\ \xfd\xc9\x96\x58\x13\x9a\xc7\x0b\x9e\x05\x21\xad\x99\xf8\x31\x9d\ \xf4\x9a\x35\x0a\xa6\x52\xed\xa6\xa4\xd0\x9c\xa3\xfc\x49\x1a\x25\ \xfb\x9e\x46\x71\x86\x81\x32\x42\xb8\x00\xd3\x33\xaa\x2d\x2f\x81\ \x65\xa1\xab\xc2\x97\x07\xb5\xcd\x1f\x42\xe3\x6a\xa0\x41\x97\x89\ \x2e\xaa\x3a\xbf\x17\xac\xd8\x8b\xc6\x8f\x32\x4f\x56\x45\x84\x0b\ \xd6\xd8\x8c\xce\x41\x60\xe4\x06\x3c\x5f\x67\xfe\xf3\xcc\x3b\x4b\ \x68\x0e\xc2\x78\x44\x0e\xc2\xf6\x05\xad\x10\xf0\xeb\x2e\xe6\x8b\ \xf3\xbd\xdd\xaa\xc9\xe1\xf7\x65\x42\x78\x1d\xed\x93\x70\x05\x33\ \x19\xa5\xae\xdf\x2a\x5f\x3c\x66\x9b\x21\xa6\xd7\xc1\xde\x81\xc7\ \x84\x4a\xff\xa1\x9e\x60\xe9\x3b\xdf\xf9\xce\xf7\x30\x91\xaa\xc1\ \x02\x87\x50\x18\xe7\x0d\x4c\x64\x90\xb4\x36\x16\xb5\x21\x05\xb9\ \x80\xf2\xd2\xf2\xe1\x63\x5a\x3a\x31\x66\x72\x76\xa8\x26\x37\x3f\ \xa7\xe5\xb1\x7d\x2a\x4d\x2f\xb0\xc0\xa0\x01\x1c\x8b\x1d\x3c\x70\ \xd9\xfc\x1b\x90\xcf\xef\xa2\x4d\x63\xf6\x27\x08\xaf\x17\x44\xc5\ \xc5\xb1\xc9\x14\x49\x6d\x67\xc8\xeb\x0b\x71\xc1\x91\x15\x58\x85\ \x0c\xaf\x1b\x8c\x49\xf6\x0d\x12\x96\xbb\x15\x80\xe9\x96\x19\xc9\ \xb6\xcd\x85\xf6\x1d\x5f\x08\x0e\x18\x9b\x30\x8e\xe9\x8b\x42\xc8\ \x57\xc0\xfc\x3d\x08\xe4\x5f\x0e\xfa\xb4\xfa\xce\x3b\x55\x67\x1d\ \xed\x0d\x1d\xcb\xff\xf3\xab\x5f\x7d\x54\x92\x7b\x4d\x4f\x50\x2c\ \x85\xed\x25\x63\x48\xe8\x50\x3c\x1e\xbf\x85\x92\x51\x41\xd0\x33\ \x45\x27\x25\x4b\x77\x55\x24\x27\xcc\x62\x2b\xad\xdc\xb9\x3a\xfe\ \xba\x4f\x09\x5c\x21\x94\x4e\x09\x75\x63\xa2\x05\x15\xcf\x03\x82\ \xe5\x59\xe5\xa7\xd1\x98\x79\x3e\x81\x76\x22\x61\xae\xdb\x82\x04\ \x90\x42\x33\x69\xa8\x2f\x20\xc0\xc5\x76\x8b\xb9\x04\xb3\x2e\x89\ \x48\x85\x50\x9b\x27\xf5\xbe\x84\x15\xd4\x5a\xcf\xf8\x4d\x76\x88\ \x40\x8a\x97\x6b\x14\xdc\xa3\x6c\xdd\x11\x0d\xb5\xdc\xac\x0e\x55\ \xb8\x37\x8f\xd5\x2c\x04\x14\xc8\x13\x26\x11\x8c\x47\xdc\x0f\x6c\ \xda\xa0\x24\x2f\x6f\xe7\x0a\x79\xdb\x0d\x62\xd3\xc4\xe3\xf9\x62\ \x71\xca\x4a\xf2\x5a\x01\xd8\x93\xb3\x7b\xf7\xee\x7d\x84\xf6\xb8\ \xd9\xdc\xe8\x04\x89\x02\x49\x04\x50\xe4\xbd\xa0\x72\x79\x28\x67\ \xb5\x5a\x2b\x38\xca\x9d\x9e\xd7\x12\xe7\xfb\xf7\xec\x84\x11\x59\ \x8d\x37\x1d\x17\x01\xd5\x29\x54\xa6\x68\x5e\x56\x6c\x1c\x0f\x63\ \xce\x84\x22\x50\x1b\xad\x24\x73\x8a\x0f\x61\x5d\x32\x61\xcf\xb1\ \x59\x9c\xc7\xc2\xb2\x2f\x5f\xd2\xfc\xcb\x0d\x30\xc6\xa7\x64\x66\ \xb0\x53\x9e\xd8\x66\x4b\xad\x14\xc6\x5d\x7c\x8a\x90\x03\x78\x80\ \x26\x21\x02\xa1\x76\xf3\xf7\x10\x08\x2e\xa8\xb2\xd1\x08\xb8\x32\ \x8b\xf6\x97\x30\xff\x32\x18\x80\xdb\x9e\x25\xc3\xdc\xf0\xcf\xde\ \xad\xba\xcf\xe9\xec\x55\x74\xbf\xff\xdd\xef\x7e\x05\x26\x4b\xe2\ \x73\x8d\x00\x3a\x49\xd2\xfe\xfd\xfb\x1f\xc7\x0a\x5e\xd9\xbe\x7d\ \xfb\x36\xfa\x67\x0a\x00\x84\x5d\xbb\x76\x69\x79\x0e\xf3\x86\xa9\ \x26\xa4\x86\x30\x59\x72\x83\x53\xa7\xd4\xbd\x69\x2d\x0c\x46\xf0\ \xd7\x12\x3d\xfe\x57\xb4\x34\x0e\x63\x2d\x03\xb3\xa6\x7f\xfe\x99\ \xe7\x8c\x55\xab\x7b\xa3\xc7\xcb\x4d\x97\x4c\x2e\x88\xb5\xa0\x79\ \x00\x8b\x66\x08\x02\x80\xc9\x2c\xe9\x33\x9a\xf3\xc8\x00\x27\x5e\ \xdc\x7f\xe5\x0e\x26\xee\x97\x46\x76\x01\x8e\xfd\x54\x99\x7d\x30\ \x69\xe6\x75\x0a\x08\x1d\xa0\x2d\x92\x3c\x65\x6b\xf2\x2f\x32\xd7\ \x14\x82\xce\x05\x01\xbf\xa8\xf2\x7d\xdd\x8a\xdc\xb2\x5b\x29\xc0\ \x6f\x1e\xed\x9b\x8d\x1d\x67\x4e\x9f\x7e\xe2\x99\xa7\x9e\x3a\x20\ \x56\xff\x53\xdf\x0e\x77\xb2\x42\x5e\x8b\xf9\xb6\x6c\xd9\xf2\x16\ \x3a\xc5\x8e\x49\x8a\x82\x50\x9d\xee\x6a\x93\x56\xb7\x8c\x00\x6c\ \xda\xea\x90\xa2\xd6\xd0\x68\x17\x3e\x38\x21\x77\xf9\x15\xb0\xa0\ \x2c\x8c\x11\x80\x74\xac\x69\x63\xe1\x24\x55\x52\x7a\xb5\xa7\xde\ \x55\xae\x7a\x77\x05\x40\x72\x98\x08\xf9\xb0\x0e\x23\x00\x21\x08\ \xfc\xff\xac\xa7\xec\xb4\x0f\x30\x75\xae\x69\x3a\xe1\x5d\x60\x90\ \xa3\x44\xcc\x53\xa8\xa7\xfd\x72\xd4\xb6\xa1\x58\xc3\x32\xda\x9f\ \x02\x57\x26\xb9\xe7\x22\x20\x59\x00\x24\xfb\x07\x75\xaa\x2f\xa5\ \x1d\x0f\xfe\xa1\x6a\x91\x90\x49\x7a\x44\x92\x57\xfb\xc6\x23\x8f\ \x3c\x38\x7e\xf6\xec\x31\x33\xe5\xcf\x7a\x3d\xee\xb2\x0d\x75\x86\ \x77\x69\xdb\xd9\x6a\xb2\x26\x12\x8d\xb2\x80\x98\xc2\x50\x69\x6e\ \x16\x90\xa1\x2f\x8f\xd9\xa2\x3d\x00\xad\x81\xc4\x27\x15\x0c\x9d\ \xc5\xa5\x2b\x80\x95\x09\x18\xd4\x06\xa4\xa6\x80\x34\xcd\x89\xa6\ \xba\x60\xbe\x67\x65\x83\x66\x87\x0f\x40\x0d\x60\xbe\x41\x9b\x5b\ \xd8\xac\xa6\x2d\x80\xfa\x82\x47\xb2\xe3\x53\x69\xde\x0a\xa5\xa3\ \xfd\x4e\x25\x6b\x29\xc1\x5c\xb1\x3e\xb5\xdc\xad\xc1\x89\x3c\x37\ \xce\x50\xfa\xe2\xd1\xc1\x69\x7c\x3f\x6b\x36\x47\xf4\xea\x04\x09\ \xd2\xba\x7f\xf7\x51\x45\x79\xf9\xba\x48\x64\x9a\x9b\x9b\x63\x2f\ \xd3\xfe\xaf\xfd\xcd\xc3\x0f\x3f\x64\xf2\xb9\x9f\x77\x83\x44\x89\ \x0d\x88\xb3\xec\xb8\x7a\x07\x1b\x0c\xc2\x30\x6f\x22\x01\x42\x88\ \xab\x44\xf9\xe9\x00\x88\x04\x5d\x5b\x76\xc6\xd3\x15\x16\xd6\x80\ \x29\x07\x40\x74\x38\x86\xf1\x98\xc7\xf9\xa6\x52\x7d\x9e\xd2\xc3\ \x4d\xa5\xb7\xf8\x31\x5f\x7c\x33\x12\x82\xa2\x58\x40\xbc\x85\xe0\ \x4d\x59\x60\x13\x0c\xb9\xcb\x9e\x0a\x0b\x3e\xac\x47\xd7\x7e\x9a\ \xcc\xdb\x83\x10\x98\xd3\x66\x83\x26\xdd\x5d\xa0\xc4\x9d\x26\xde\ \xcf\x60\x55\xb9\x30\x80\x99\xd1\x59\xf2\xfd\xf0\xbb\xde\xae\x91\ \xb7\xbd\x55\xd9\x72\xc9\x68\xde\x00\xdf\xe4\x9f\xfd\xf1\x1f\x7f\ \x14\x0c\xb8\xe4\x32\xd3\xcf\x2b\x80\x06\x7e\x33\x07\x72\x3a\xec\ \xc8\xbc\xdd\xb8\x42\x10\x21\x18\x30\x0b\x43\x65\xfa\x73\xbe\x4a\ \x99\xa2\xa4\xa6\x44\x0f\x9d\xa3\x5e\x13\x8d\xa0\xa0\x6c\x46\x16\ \xee\xf6\x51\x2c\xf9\x14\x1d\xf6\xa3\x75\x3f\x11\xc1\x68\x3e\x0c\ \xf3\x09\xf0\x20\x45\x0c\xa7\x34\x05\xc5\x65\x30\xc0\xad\xdb\xf6\ \x99\x93\x6d\x08\x78\xa4\xd1\x69\x31\xe4\xca\x8f\x2d\x61\xa3\xcc\ \x99\x49\xca\xbe\x2d\xf2\x2d\xa2\xf1\x59\xfc\x7d\x0e\xca\x86\xb9\ \x9e\xd6\x85\x44\x46\xb9\x9b\x76\x6b\xcb\x07\xff\x40\x45\x22\xce\ \x2c\x9a\x27\xb3\x73\xbf\xfd\xcd\xbf\x7d\x60\xec\xd0\xa1\xa7\x8b\ \x92\xfb\x8b\x6e\x92\x32\xfb\xf4\xcf\xd0\x2e\x5f\xcb\x0b\xc5\x8d\ \xc6\x15\x82\x26\xb4\x25\x13\xb6\xf8\xa9\xd0\xc5\x4d\xc6\x4b\x8a\ \x67\xaa\x14\x44\x4d\x2b\x00\x27\xe0\x20\x04\x53\x81\xf9\x18\x61\ \x3a\x1c\xe0\xd8\x6a\x1d\x4a\xf2\x3d\x0d\xf3\x90\x2f\x81\x2a\x5a\ \x4d\x10\xe2\x9a\xb5\x82\x00\x56\x13\x2c\x21\x04\x62\x77\x35\x27\ \xce\x31\x9f\x98\xcb\x41\xd3\xe0\x45\x17\x00\x98\x89\xa0\xf1\x3a\ \xf9\xfd\x42\x58\x21\x28\x98\x37\xf9\x46\x5a\xe7\x48\x17\x67\xe8\ \x18\xed\x78\xe0\xe3\xaa\x04\xfc\x2d\xe6\xd9\xd4\xf1\xdc\xd3\xcf\ \xfc\xf9\xb7\xbe\xf6\x57\x7f\xce\x74\xc5\x7f\xcc\x2e\xb1\x26\x54\ \x38\x76\xec\xd8\x89\x15\x2b\x56\xec\x21\x22\x0c\x21\x04\x6b\x05\ \x81\x54\xca\x36\x29\x6b\xe5\x9c\x52\xdd\xe6\x5d\x5e\xcd\x34\x25\ \x21\x41\x7e\xcc\xd1\x6f\xb2\x33\x98\x07\x94\xc2\x31\x4c\x3e\xc1\ \xf7\x14\xe7\x93\x5c\x8f\x73\x53\xa8\x95\x83\xd9\x1e\xa3\x6b\xdd\ \xc9\x71\xc0\x93\x18\x7e\x5e\x47\x10\x29\x1f\x58\x40\x37\x0a\x0a\ \xd3\x0c\x49\x67\x82\x1a\xec\x0e\x28\x19\x20\x45\x07\xe8\x42\xf8\ \x7b\xa0\x4c\xc7\x38\xd8\xa3\x13\xfe\x08\x9a\xbf\x49\x3b\x3e\xfe\ \x31\x55\x10\xfa\x0c\xcc\xa3\x38\xb3\x9f\xe9\xd1\xbf\xfc\x93\x2f\ \x7c\xb2\x5b\x9a\x5b\xfe\x25\xf6\x09\x7a\x68\x69\xe1\xf8\xf1\xe3\ \x63\xbc\x36\xbf\x0d\x3c\xe8\x09\x1b\x50\x8c\xc7\xa1\x24\x05\xd3\ \xb0\xf2\x4b\xa0\x30\xd5\xa1\xdf\xd6\xf6\x08\x41\x62\x0c\x30\xfa\ \xa1\x90\x80\x3e\x04\x84\x20\xcc\xc8\x79\x35\xfc\x26\x77\x87\xcc\ \x66\xa7\x06\x63\x83\xb1\x2e\x51\x00\xc1\x36\xd6\xe4\x28\xe9\x49\ \x5d\x34\x63\xbb\x32\x01\xf5\x76\xc3\x3c\x05\x4f\x97\x2f\xac\x70\ \x93\x88\x54\x04\x43\xdc\x84\xaa\x80\xcd\x8b\x3c\x1f\x7d\xd7\xbb\ \xb4\xf9\x5f\xfd\x4b\x15\xb1\x94\xe9\x99\x19\xcb\xfc\xcb\x87\x0f\ \xbf\xf0\x97\x9f\xff\xc2\xbf\x49\x36\xea\x13\xe7\xe0\xe1\x97\xdd\ \x29\x4a\x16\xeb\xce\x8c\x8f\x8f\x1f\x23\x2a\x98\x04\xa9\x27\x1c\ \x89\xd8\x4c\xaf\x19\x89\x53\xa7\xaf\x22\xcb\x4a\xab\x9c\xaf\x90\ \x81\xd5\x2d\x53\x0c\xb6\x2a\x73\xaa\x50\x05\x43\x2e\x0b\xe0\x84\ \xd9\xa2\x2b\x15\xb0\x96\x62\x95\xe3\x0a\x54\x6b\x51\xc1\x05\xd8\ \x1a\x8c\xb8\x50\x09\xcc\x00\xe9\xa2\x50\x02\x9c\x48\xf9\xe8\x4d\ \x40\xa1\x26\xd6\x57\x8f\x23\xdb\x8c\x26\x7c\x51\x1d\x66\x0d\x9b\ \x1f\x7c\x50\x43\x77\xdd\xa1\x2c\x51\x69\x6a\x7a\xda\x00\x1e\xbb\ \x59\x0e\xbf\xf8\xb5\xbf\xf8\xef\xf7\x47\xf2\xd9\xf1\xb3\xac\xfd\ \x57\xb9\x59\x3a\x82\x05\xdc\xc4\xcf\x61\xfe\x94\x24\x69\x17\xdb\ \x68\x44\xe5\x68\x37\x48\x85\xca\x00\x62\x7e\x5e\xc5\xf1\x17\x15\ \x29\x8f\x29\x1d\x98\x57\xa8\x51\x6d\xed\x0a\x35\x8d\x55\xfe\xf9\ \x9a\x10\xff\x1c\x4b\x9d\xfd\x4e\xed\x37\xc4\xed\x1e\x23\x9e\xd4\ \x29\x67\xa1\x20\xc2\x0c\xa2\x6d\x46\x2f\x2c\x4c\x4e\x34\xc1\x34\ \x56\xa6\x17\x71\xd7\x5d\xda\xf8\x9e\x7b\xd5\xc0\x12\x17\xb3\xcb\ \x76\x57\x3a\x95\xac\x8e\x1c\x3c\xf4\xf8\x5f\x3f\xf4\x95\x8f\x77\ \x57\x4a\xa7\x8f\x4b\xee\x6b\xb1\x5d\x3e\x44\xc7\x68\x2b\x7b\x08\ \x3f\xc5\x6f\x05\x7e\x97\x5c\xc1\x61\x03\x92\x22\x21\x80\x09\x33\ \x8e\x19\x7f\xa6\xa7\x57\x3e\x7d\x08\x3f\x3d\xa5\x1e\x65\x11\x48\ \x49\x81\x6a\xc3\xee\x23\xf0\xd7\x01\x4b\x5b\x11\x43\xcd\x76\xba\ \x6b\x81\xc3\x69\x63\x82\x9f\xf3\x86\x60\xda\xe4\xfa\x68\xde\xa3\ \x08\xba\x58\x71\x75\xae\xe1\xd1\x97\xdc\xa3\x4d\xec\x47\x0e\xb2\ \x1b\x2d\x47\x42\xb6\x40\x92\xc3\xfe\x3f\xa3\xf9\xc6\x81\x7d\xfb\ \xfe\xc7\xf7\xfe\xfa\x6f\xfe\xeb\x48\xd3\xbb\x78\x04\x91\xbe\x96\ \x3f\x98\x08\x40\xc3\x3b\x77\xee\xfc\x83\x37\xbd\xe9\x4d\x0f\x12\ \x26\x53\xec\x20\x17\x20\xa9\xb0\xc9\xfd\x59\x68\xdc\x41\x61\xc5\ \x9c\x0a\xaf\x9e\x94\x26\xc7\x15\x9a\xbf\xa4\x1e\x9a\x1b\x09\xf2\ \xf6\x40\x89\xd4\xb5\x4a\xee\x6e\x84\xc0\x3f\xf1\x8c\x7c\x50\x20\ \x88\x79\x87\x60\x38\xa2\x1a\xe3\x54\xa9\xaa\x59\xee\xa9\x62\x69\ \x03\x6f\x78\x83\x46\xd8\x7d\xee\x74\xa5\xf1\xa0\xaa\x96\xb2\x59\ \x9b\xe1\x4d\x63\xf6\x67\xcf\x9c\x99\x7b\xe6\xc9\x1f\xfc\xa7\xa3\ \xcf\x3d\xff\xcd\x95\xd4\x73\x07\x25\xef\xf5\xf8\xc9\x8c\x03\xa5\ \xf9\xdc\x7a\xc7\x1d\x77\x7c\x82\xd7\xcd\x6f\xc6\x25\x7c\x84\x4b\ \xc5\x63\x31\xbb\x83\x3b\x2c\x29\xee\x0f\x28\xe6\x43\xb3\xe4\xe3\ \x45\x4c\xb4\x3a\x35\xa9\xe6\xec\x8c\x7c\x30\xa0\x82\x79\x77\x50\ \xb7\x55\x5e\xc3\x54\x85\xe1\x88\x5c\x00\xd6\x4b\x53\xe3\x0f\xf4\ \xab\x7f\xcb\x56\xf5\x6e\xdd\x22\x1f\x6e\x46\xd9\xa0\x3c\x6e\x96\ \xe3\x99\x2c\xcf\xd2\xd4\x10\xd9\xaa\xcb\xa6\xcd\xbf\xfb\xc1\xf7\ \x1f\xfd\x6f\xde\xe2\xe2\xd1\xf5\xf2\x2a\x3f\x92\x9a\xaf\xf7\x8f\ \xa6\x82\xd0\x8a\x0d\x1b\x36\xdc\x73\xe3\x8d\x37\xde\xbf\x7e\xfd\ \xfa\x1b\x00\x4a\xb3\xc9\xda\x6e\x47\x09\xe3\x1a\x21\x63\x15\x50\ \x14\x0d\x47\x8c\x60\x10\x4a\xc0\x74\x6b\x3b\x11\x83\x63\x87\xeb\ \xe2\x9a\x82\x41\x46\xbf\x5c\x47\xb6\x86\x2f\x03\x6e\x14\x26\x2a\ \x96\x4a\xc8\xab\xd0\xc9\xeb\xbd\xd3\xe3\xe3\x2f\x1c\xdc\xf7\xe2\ \x97\xce\x1d\x1d\x7b\x22\xd3\x6c\x2c\x8d\x4b\x8d\x5f\xe7\xcf\xe6\ \x1c\x28\x02\x0d\xaf\x5b\xbb\xf6\x2d\x3b\x76\xee\xfc\x17\xb8\xc5\ \x6e\x04\x11\xc2\x42\xac\x20\x00\x4f\x11\x3d\x14\x0c\xc0\x3c\xcc\ \xf2\xfb\x20\x2c\x3f\x00\x01\x78\x68\x9f\xff\xd9\xa4\xa8\xe1\x79\ \x96\xea\x00\x62\x0d\xe6\xcb\x30\x6f\x18\xe7\x17\xa5\x26\xa7\x2f\ \x4f\x9c\x3f\xff\xdc\xe1\xfd\x07\xbe\x7a\xe1\xd4\xf8\xd3\x51\xcf\ \x9d\x0f\x49\xb5\x73\xbf\x41\x3f\x9c\x74\xa0\x30\xec\xf4\x26\x62\ \xb1\x2d\xdb\x77\xee\x7c\xc7\xc8\xe8\xe8\xef\x80\x0f\x1b\x32\xec\ \xd4\x64\x07\xea\xdf\x0b\x02\x4d\x07\x10\x46\xe7\x5d\x9d\xda\xbb\ \x37\x08\xb7\xb6\x75\x45\x35\x6a\x4b\xd8\xa5\xc5\xc5\xc2\xfc\xdc\ \xdc\x31\x36\x6b\x3e\x79\xe4\xc5\x17\xff\x4f\xad\x54\x79\x35\xe8\ \xd5\x97\x03\xa6\x60\x93\x9a\xbf\xa9\x3f\x9d\x75\xd4\x2a\x0d\xa2\ \xb0\xd7\x8d\x81\x0f\xaf\xdd\xb0\xfe\xc6\x15\xc3\xc3\xd7\x03\x94\ \xab\x12\xc9\xd4\xca\x70\x24\x9c\xa6\xf1\x8a\x57\x04\xc3\xdc\x6c\ \x18\xaf\xd0\xb2\x2a\xc1\xfc\x32\x6d\xab\x0b\xec\x4e\x3f\x37\x39\ \x31\x71\xf8\xec\xa9\xf1\x83\x5c\x9f\xa6\xfa\xcb\x8a\x3e\xd1\xb2\ \xe4\xfd\x36\xfe\x78\x9a\xba\x0f\xb7\x97\xc8\xf2\x15\x91\x15\x8c\ \xc3\xe8\x84\x9a\x9c\xc7\xfc\x3d\x47\xb8\x3d\x90\xc8\xf5\x32\x9b\ \x54\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0\x5f\ \xad\x37\xf5\x3a\x7f\xfe\x1f\x5f\xbc\xdd\xe6\x1a\x53\x0c\xc2\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x13\x09\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x09\x17\x17\x15\x19\x49\x86\x70\x41\x00\x00\x12\x96\x49\x44\ \x41\x54\x78\xda\xed\x5b\x09\x74\x5c\xd5\x79\xfe\xee\x7b\xb3\x6b\ \xb4\x5a\xb2\x25\xd9\x96\x64\x63\x6c\x83\x31\x36\xb6\x81\x00\xe1\ \xb0\x34\x14\xc2\xda\x94\x86\x04\xd2\x90\x42\x72\x20\x5d\x20\x14\ \x68\x08\x4b\x48\x09\x87\xda\xad\x73\x52\x52\x02\x24\xad\x7b\x20\ \xe4\xb0\x95\xcd\x40\xb0\x1b\x56\x2f\x80\xb1\x2d\xdb\xd8\xb2\x6c\ \x6c\xd9\xb2\x2c\xc9\x1a\x4b\x1a\x69\xf6\xe5\x6d\xf7\xf6\x7f\x33\ \xef\xf0\xf4\x3a\x9a\x19\x1b\x26\x3d\xc9\x69\x7e\x9d\x4f\xf7\xbd\ \xfb\xee\x9b\x79\xdf\x77\xff\xe5\xbe\x2b\x1b\x7f\xb4\x3f\xda\xff\ \x6f\x63\x38\x0e\x1b\xbb\x05\x75\x52\xed\xf4\x8b\x5d\x33\x97\x5c\ \x06\xb7\xef\x3c\xa1\xa4\x3c\xd0\xb3\xc3\x42\xcd\x0c\x71\x35\x15\ \x12\x4a\x22\xc4\x53\xe3\x21\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\ \xe8\xd4\x9f\x43\xf9\x83\x16\x40\xfc\xd8\x7f\x95\x68\x5d\x76\x37\ \xe7\x58\xc6\xd3\x51\x99\x08\x42\x70\x01\xe1\x0e\x12\xaa\xc0\x65\ \x3f\x84\xec\x81\x60\x6e\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\ \xd2\x02\xba\x32\x2e\x0c\x6d\x48\xe8\x6a\x48\x68\x4a\x48\xe8\xd9\ \x10\x57\xd3\x24\x54\x7c\x48\x68\xd9\x90\x30\x85\x12\x08\x4d\x7f\ \x0c\x99\xdf\x3b\x01\xc4\x03\x9e\x3f\xc7\xf9\xf7\xbf\x88\xe6\x45\ \xcc\x24\x04\xae\x03\x26\x39\x43\x05\x32\x11\x80\xc4\x80\x9a\xcc\ \x43\xcf\x40\x68\x19\xf0\x6c\x82\x90\x02\x57\x92\xe0\xa6\x50\xb2\ \x0f\x5c\x48\x04\x53\x13\x4e\xd0\xc1\x75\x2d\x27\x14\x40\xd7\x0d\ \x03\x24\x0a\x41\x8d\x0a\xae\x87\x08\x43\xc2\xa0\x36\x07\x95\x04\ \x33\xa1\x0c\x09\x6e\x84\x00\x84\x3a\x1e\x47\xf2\xff\x4e\x80\xa7\ \x2e\xee\xc4\x99\xb7\x2c\x85\xb0\xc8\x73\x23\x07\xc7\xb9\x28\xd6\ \xa7\xe7\xa1\x98\xe2\x64\xed\x3e\xd3\x84\x00\x57\x33\xa4\xa3\x42\ \xc8\x82\x73\x0e\x03\x6e\x70\x12\xd6\x50\x32\x39\x01\x0d\x12\x52\ \xcf\xc4\x01\xba\x26\xcc\x1f\x6e\x80\x3c\x89\xa0\x27\x68\x60\x4e\ \x90\x1c\x04\x0f\x01\x3c\xc4\x64\x98\xd8\xd9\x71\x29\xba\xd9\xc5\ \x10\x95\x11\xe0\x85\x6b\x53\x58\x78\x6d\x20\x3f\xf3\x46\x09\x01\ \x9c\x62\x38\xc6\x8b\xdc\x35\x1b\xa2\xc8\x58\xf2\x1e\x40\x00\x14\ \x4e\x90\xdc\x80\xcb\x47\xf0\xe7\x3c\x46\xd7\x75\x18\x9a\x96\xf3\ \x20\x9d\x33\x12\x27\x09\x3d\x35\x06\x75\xa4\x07\x7a\xa2\x0f\xae\ \x00\x03\xf3\xe4\x6f\x37\x14\xf1\x3a\x35\xdf\xe8\x58\x81\x04\xca\ \x98\x0b\x65\x8d\xb9\x72\x0f\x97\x8b\x69\x82\x63\xc6\xb9\x89\x82\ \x63\xc7\x78\x61\x58\x2d\xb7\xfa\x8b\x8c\x35\x21\xc9\xf9\x3e\xcd\ \xf4\x96\xd4\xa7\xe2\x48\x34\xc6\x63\x0b\x95\x0f\x3f\xd9\x0b\xd4\ \xd7\x00\xb3\x2e\x85\xde\x34\x97\x9c\xec\x03\xe8\x43\xab\xc1\xb3\ \x06\xd4\x38\xae\xc8\x8c\x88\x55\xa2\x1b\x5f\x63\x0b\x50\xd2\x24\ \x94\x35\x0e\x88\x89\x04\x78\x01\x81\xa2\xd7\x45\x31\x91\x8a\x7c\ \xd6\xb1\x7e\xb6\x69\x5a\x1a\x48\x1c\x01\x0e\xbf\x0f\xd7\xbe\x35\ \xa8\x5a\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf3\x38\ \x4e\x00\x3e\xaf\x00\x42\x4c\x70\xdd\x22\x33\x69\x79\x44\xd9\x87\ \xe7\xe5\xbd\x80\x50\xfe\xb3\xed\x6b\x79\x11\x0e\xbc\x09\xac\xbd\ \x13\x7a\x66\x16\x52\x43\x02\xe9\x61\x01\x35\x29\x98\xa1\x62\x49\ \x25\x04\x28\x7c\x38\xce\x8b\xcc\x6c\x31\x61\x8e\x91\x38\x2f\x15\ \x5a\x93\x08\x13\x27\xf2\xe9\x31\xe4\xec\x93\xd5\x30\x12\x5e\xa4\ \x8f\x9a\xe4\xf3\xb7\x42\xc0\x5f\x81\x1c\x20\x0a\xc9\xd8\x84\x4a\ \x92\x71\x1e\x97\x0a\x25\x5e\x46\x9c\x42\xf1\x6c\xf2\xf6\x44\x31\ \xdd\x2c\xaf\xd6\x23\xc3\xb2\xcf\x2d\x40\xa1\xdb\x15\x78\x41\xb1\ \xd8\x75\x1e\x17\x0f\x95\xc2\x44\x59\xc6\xc3\xe2\x83\x44\x3e\x8c\ \x02\xe3\x1a\x84\xc5\xbc\x72\x02\x40\x14\xcd\xe8\x36\x81\xe3\x4d\ \x88\x45\xae\x17\x92\x2d\x1c\x1f\x1b\x70\x90\x77\x98\xa1\x43\xa0\ \xd2\x02\x08\x41\x30\x8e\x3d\xa3\x17\x86\x4a\xf9\x24\xc8\x8f\x31\ \x29\xc6\x4b\x90\x27\x13\xa6\x07\x4c\x9c\xb7\x0a\x09\xe0\x24\x5b\ \xbe\xd4\x95\x5f\x03\x94\xff\xac\x42\x0f\x8b\xf5\x03\xa9\x51\x94\ \x34\x43\xb7\x89\x57\x38\x04\x2c\x18\x05\x0f\x57\x9e\x4c\x91\x6b\ \x28\xa8\x26\xc5\x45\x8d\x1d\x2e\x4f\x1e\xc8\x2f\x93\xe1\x14\xa0\ \x12\x65\xd0\x41\xb6\x10\x45\x32\x36\x6c\xa2\xb9\x7e\x10\x98\x75\ \x0e\x6e\x9d\x13\x60\xf7\x4d\x9a\x10\xcb\xcf\xbc\x33\x09\x02\x36\ \x44\x25\x04\x40\xc9\x44\x35\xb9\x10\xb0\x88\xb1\x63\x24\x6e\xc2\ \x3e\xb6\xbf\x27\x6a\xce\xfc\x08\x8e\xd5\x04\xd7\x2d\xe2\x16\x2a\ \xe4\x01\x65\x56\x7a\x0e\x22\xc5\x88\x95\x12\xc3\xea\x73\x0a\x87\ \x58\x5f\x01\xf9\xb2\x66\x38\xca\x60\x25\x05\x28\x1f\xdb\x4e\x21\ \x9c\x64\x0a\x3d\xc2\x26\x6e\x0b\x64\x58\xe0\x40\x9c\xc8\x67\x88\ \xbc\x54\xe4\x7d\xb5\x74\x15\x70\xa0\xd2\x2b\xc1\x82\x38\xb7\x60\ \x93\x13\xff\xdb\x0b\x2c\x62\xc2\xe1\xe6\x36\x59\x82\xe3\x38\x7e\ \x88\xc8\x0f\x03\xb2\x35\x54\x58\xe0\x28\x67\xf6\x3a\xc0\xf6\x82\ \x0a\xaf\x04\x3d\x55\x40\xfd\x09\xf9\xa7\xd1\xd3\x40\x26\x0c\x24\ \x8f\x02\x5a\xd2\x99\xe8\xec\x58\x2e\x14\x88\x39\x12\xa3\x53\xa8\ \x78\x6f\x9e\xbc\x64\x3d\x3d\xb3\x45\xb0\xfd\xba\x74\x15\xb0\xcb\ \x60\xe5\xd6\x01\xb6\x08\xfe\x29\xc0\xdc\x4b\xe1\x34\x91\x17\x61\ \x6c\x2f\x10\xfa\x28\xe7\xbe\x85\xee\x4f\x10\x13\xfa\x84\xc3\xe5\ \xf3\x6d\xe2\x90\x93\xbc\x4d\xd6\xd9\xf2\x12\xcc\xac\x24\x58\xe9\ \x75\x80\x23\xbb\x17\x1a\x03\x82\x2d\x79\xb4\x5f\x98\x17\xe0\xe0\ \x6b\xc0\x48\xa7\x33\x1c\x18\x01\x36\x79\xb3\xb5\xc9\x9b\x33\x7f\ \xd4\x72\xfb\x32\x02\xc0\x1e\x53\x72\x1d\x20\x08\x15\x4d\x82\xb0\ \x50\xce\x6a\x3a\x80\xd3\x6e\x05\xce\xb8\x17\xa8\x9e\x3e\x21\xce\ \xed\x7c\x60\x9f\x5b\xe4\xb3\x16\x79\x09\xd4\x5a\x90\xca\x80\xa1\ \xf8\xcb\x90\xa8\x64\x15\xc0\x24\x19\xdf\x50\xca\xaf\x32\xea\xe7\ \x01\xe7\x2c\x07\x3a\x2e\x73\x84\x84\x0d\x93\xfc\x41\x22\x1f\xb2\ \x49\x95\x03\x2b\x2d\x82\x30\xf4\xca\x57\x01\x22\x6a\x27\xaa\x48\ \x0f\xb0\xee\x6e\x40\xe8\xf9\x73\x6f\x35\x10\x6c\x26\xb2\x27\x02\ \xd3\x96\xd1\x79\x7d\xc1\x76\x22\x4e\xba\x01\xa8\x9b\x03\xec\x5c\ \x09\x18\x9a\x95\x00\x09\x89\x03\x80\x62\x91\x17\x93\x00\x8e\x44\ \x68\x1b\xb7\xa7\xad\x20\x1c\xb8\xe6\x8c\x16\x51\xe9\x32\x88\x89\ \xe5\x4f\x07\xb2\x61\xc2\x30\x30\xba\x1d\xe8\x79\x16\x68\x5c\x04\ \xcc\xfe\x33\xa0\xba\x1d\x0e\x6b\x39\x17\xf0\x90\x58\x9d\x14\x16\ \x9a\x0a\x24\x7b\xec\x99\x17\x25\x92\x9c\x70\x10\x76\x92\x66\x13\ \x20\x9c\x1e\x90\xfb\x55\xb1\x10\x60\x02\xce\x9a\x3f\x59\x19\xb3\ \xb6\xba\x47\xb6\x00\x9b\x7f\x00\x7c\xb2\x8a\xba\xb2\x70\xd8\x94\ \xc5\xc0\x92\xfb\x81\x74\x9f\x49\xbe\x78\xcc\xdb\xfd\xc7\x17\x1a\ \xa6\xd9\x65\x90\x50\xa9\x24\x08\x51\x58\xd7\x6d\xf2\x85\xab\x3e\ \x53\x88\x81\x35\x24\xc4\x1d\x40\x6a\x10\x0e\x6b\x3a\x13\x38\xf5\ \xfb\x05\x64\xcb\x82\x4d\x1a\xff\xce\x7e\xf6\x3b\x5d\x09\x5a\x04\ \xfd\x8d\x40\xfb\x05\x80\xbb\x2a\x17\x6f\x48\x0f\x01\xf1\x83\xc0\ \x78\x17\x60\xa8\x13\x44\xa0\x36\x75\x18\xd8\x4a\x22\x2c\x79\x10\ \xa8\x99\x8b\x4f\x6d\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01\x50\x26\ \xfe\x51\xc2\xf5\x25\x47\x9e\xc8\x83\xeb\xf6\xed\xa2\x32\xeb\x00\ \xe7\xcc\xfb\xea\x80\xd6\xb3\x60\xdb\x52\x02\xf2\x2b\xc1\xa1\x77\ \x80\xbe\xd5\x74\x1c\xb1\x17\x3b\x5a\x14\xd8\x7e\x17\x89\xf0\xcf\ \x4e\x11\xce\x7c\x04\x18\x79\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5\x4f\ \x27\x69\xc9\x3e\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a\x3b\ \x08\xb4\x5f\x05\x9c\xf5\x53\xa0\x71\xa9\xf3\xe5\x66\x7c\x2b\xb0\ \xfe\x72\x40\x8b\xd9\xe3\x3d\x0d\xa4\xdd\x4f\xca\xd7\x7c\x66\xb7\ \x36\x8a\x84\x06\x9b\xc4\xa1\x2a\x23\x80\x73\x25\x58\xd2\x3c\xf5\ \xc0\xe2\xfb\x80\xb6\x2b\xf2\x5e\x90\xd8\x07\x28\x47\x80\x54\x0f\ \xb0\xfd\x56\x38\xac\xfd\x5a\xa0\xe1\xb4\xcf\x50\xfb\x4b\xc2\xb1\ \x12\x14\xa2\x62\x02\x70\x0b\x02\x50\x62\x40\x78\x17\x30\xb2\x0d\ \x48\x0e\x4e\xf2\x2d\x0c\x98\xfb\x5d\xa0\xf1\x4c\x20\x3b\x68\x3f\ \x78\xff\x53\x74\xcf\x3b\x13\x86\x51\xe7\x29\xf7\x1d\x67\x22\x2c\ \x71\xcc\x9c\xc4\x05\x2a\x97\x03\xec\xfa\x3f\xbe\x17\xd8\x70\x1b\ \x00\xdd\x0a\x09\xeb\x05\xa9\xe3\x4a\x60\xc6\xc5\xce\xa5\xd9\xc2\ \x1f\x11\xe1\xdf\x02\x91\x4e\xfb\x41\x77\xdf\x05\x5c\xb8\xd5\x1e\ \xd7\x4a\x61\x13\x6c\x03\x92\xfd\xce\xd8\x67\x36\x0a\x63\xbd\x04\ \x80\xcf\xb6\x27\xf8\xe0\x7d\x37\x2d\xdc\xf2\xf6\x4f\xa5\xd2\x55\ \x80\xc0\x55\xe7\x92\x18\x84\x4c\x08\xd8\xfb\x18\xb0\xfd\x87\x80\ \x91\x99\xf0\xc9\x6e\xe0\x0b\xbf\x06\x5c\x2e\x7b\x16\xe3\xdb\x80\ \xd1\x89\x5e\x20\x03\xed\xdf\x2c\x3b\xf3\x4e\x14\xef\x17\xec\x33\ \xe6\x80\xb7\x37\xf7\xae\x7e\x6b\xc3\xbe\x5f\x90\x08\xac\x68\x0e\ \x28\xdc\xf3\x73\x2e\x90\xc6\x3a\x81\x0f\x6f\xb4\xfa\x2c\xab\x9e\ \x0f\xb4\x5d\xe7\x8c\xe3\xfe\x5f\xc2\x61\xd3\xaf\x2e\x41\xba\x4c\ \xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc\x35\x38\ \x7f\xc7\xee\xc1\x7f\x25\x11\x4a\x6f\x89\x81\x3b\x84\xb0\x77\x6f\ \xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5\x24\x37\xba\x06\ \x30\xd2\xf6\xf5\xda\xc5\x80\x7f\x6a\x01\xe9\xe3\x24\x6e\x0b\x20\ \x3e\x83\x07\x24\x33\x19\x43\x81\xfb\xce\xd7\xdf\xec\xba\xe6\x50\ \xff\xd8\x43\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17\x3d\x4f\ \xed\x0a\x20\x38\x33\x4f\x3e\x3d\x80\x9c\xed\xa5\x9a\xaf\xc5\x27\ \x78\xc1\xc9\x40\xcd\x7c\x9b\x94\x20\xf2\xd1\x0f\x9d\x49\x73\xca\ \xd9\x85\xa4\x51\x36\xde\x0b\xc9\x33\x27\x71\x21\xb9\xe5\x63\x12\ \x20\x95\xc9\x1a\x29\xdd\xc8\x8e\x45\x92\xb7\x3c\xbb\x7a\xeb\x3d\ \x6b\x5f\x78\xf0\x9e\xc2\x3f\x8d\xf1\x7c\xe6\x5e\x72\x27\x50\x6f\ \x12\x72\x01\x75\xd4\x9e\xbe\xc2\x76\x7b\x86\xfc\xe2\xe7\xc8\xab\ \x70\xd8\xd4\x8b\x9d\x33\x1b\xdb\x0c\x87\xd5\x2e\x3a\x0e\xa2\x65\ \x44\x80\x05\xfa\xb5\xcb\x77\xfa\x2f\x96\x3f\x70\xeb\xeb\x8f\x3d\ \xfc\xc3\xef\xfc\xec\x27\xf7\x4e\x2f\x5a\x05\x32\x8a\xa2\x27\xd2\ \x19\xff\xf6\x4d\x9b\x5e\x5a\xba\x74\xe9\x6b\xcf\xbc\xbc\xf9\xa1\ \x0f\xff\x7b\xe5\xc8\xd9\x97\xfc\xc3\x2a\x47\x12\xac\x99\x0d\x54\ \xb5\xc0\x61\xee\x1a\xe0\xe4\xef\x01\xdb\xbf\x6f\xf7\x8d\x6e\x00\ \x3a\xbe\x39\xc1\x0b\x4e\x71\xba\x77\x66\x1f\x1c\x56\x75\xc2\xf1\ \x91\x47\x89\xbe\x09\x25\x70\xe3\xa6\x2e\xcf\x86\xa1\xfd\x97\x37\ \xd4\xd7\x5e\x3e\x73\x66\x8b\xf8\xea\xd5\x57\xec\x9a\x36\x6d\xda\ \x7b\x55\x55\x35\xeb\x33\x59\xf5\x83\x7f\x7b\xe4\xe7\xa3\x39\x01\ \x14\x4d\xe3\x14\x06\x7e\x90\x71\xce\xff\x76\x67\x77\xff\xb9\x2f\ \xbd\xb1\xed\x71\xca\x07\xc3\x38\xfc\xa4\x2d\x80\x96\x29\xb2\xf9\ \x71\x0a\x1c\x96\x19\x80\xc3\x7c\xcd\xce\x87\x56\x87\xe0\x30\x6f\ \x4b\x59\x82\xe5\xc9\x3b\x63\x9f\x83\x61\x6a\x9d\xf7\xad\xda\x54\ \xed\x02\x26\xb9\x5a\x87\x47\xa2\x6c\x6c\x3c\xb9\xa8\xb7\x6f\x68\ \x91\x2c\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99\x73\x7b\x4e\x00\x5d\xd7\ \x59\x3a\x9b\x0d\x80\x6c\xc7\x8e\x1d\x83\x0b\x16\x2c\xf8\xbb\x35\ \x6f\xef\x7c\xba\x65\x5a\xed\x73\x27\x9d\x30\x53\x0e\x72\xc3\xda\ \xc1\xe9\x07\xd2\x47\x81\x40\x33\x1c\x96\x3c\x0c\xe7\x02\x5c\x86\ \xc3\x5c\xb5\xce\x35\xbf\x91\x82\xc3\xe4\x2a\x1c\x97\xb1\xc9\xfb\ \x46\xb2\x3e\xbc\x1f\xa9\xc3\xc1\x4c\x2d\x0e\x67\x6b\x30\x1e\x4b\ \x5f\xa4\xeb\x49\xc4\x62\x31\x28\xe4\xe5\x84\x7d\xc4\xb5\x95\x73\ \x5e\x6f\xf9\xe2\x2c\xf3\x17\xb8\x10\x8c\xf2\x40\x10\x96\x75\x77\ \x77\x3f\x63\x18\xc6\xd3\xff\xf9\xf4\xba\xc0\x6b\x91\xb9\x72\x5a\ \x78\x00\x6e\xfd\xe3\xc8\xf5\xb7\xe5\x57\x83\xb0\x2c\x3b\x0a\xec\ \x7c\xc8\x49\xb0\xaa\x03\x0e\xd3\xe3\x70\xee\xef\x7b\x50\x60\xf6\ \xfd\xc7\x65\xe3\x59\x37\x7e\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\ \xcf\xc5\x7b\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde\x2e\xd4\x25\xba\x51\ \xa7\xf4\x3f\x5a\x53\x53\x73\xe1\xca\x95\x2b\x67\x90\x00\x4b\x67\ \xcf\x9e\xdd\x23\x49\x12\xac\x6f\x7a\xcb\x05\xb2\x80\xcf\xd3\x94\ \x55\x95\x46\x4c\x30\x12\xe0\x26\x55\x35\x4e\x5e\xfe\xd8\xda\xd3\ \x3c\xb7\x5c\x86\xcb\x9b\xfa\xe0\x33\x5f\x7b\x93\x7d\x24\xf5\x26\ \x60\xee\xd7\xf3\x1a\xf6\x3c\x01\xa8\x24\x82\x3c\xe1\xe1\x5b\x2e\ \x83\xc3\x52\xbd\x36\x79\x46\x90\xeb\xe1\x30\x6d\x1c\x10\xc7\x21\ \x82\x99\xe0\x46\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06\x4d\xd7\x10\ \x8f\x8f\x43\x44\xdf\xc3\xe5\x73\x0d\xcc\x59\xe4\xc3\x89\xb3\xda\ \xe0\xad\x6d\xa6\x3c\x7d\x41\x5f\xfb\x95\xf7\x0c\x03\x10\x0f\x3f\ \xfc\x30\x23\x5b\x2c\x44\x2e\x6b\x5f\x4d\x78\xc3\x75\xcf\xdf\x5f\ \x83\xc7\xd6\xee\x6c\x4a\xa6\xd5\x16\xcb\x2d\x38\x01\x07\x0f\x1e\ \x4c\xb7\xb5\xb5\x7d\x25\x1a\x49\x6c\x5d\xf1\xcb\xdf\x36\xc9\x37\ \x7e\x11\x97\x64\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe\x2f\x80\x79\ \x2c\xe3\xd3\xed\x6c\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3\x66\xc9\ \xcc\x23\xfc\x2e\xc0\x27\xb8\xaf\x6f\x0e\x1c\xa6\x5a\x02\x38\x45\ \x98\xb4\x6f\xf3\x60\x10\xab\xb6\x35\x63\xd3\x61\x2f\xa2\xd1\x08\ \x62\x91\x8f\xf1\xa5\x39\x0a\x7e\x74\x9e\x84\xf3\x17\xce\x04\xab\ \x9b\x87\x3d\x83\x40\x64\xe8\x10\xa2\x07\x3b\x11\xee\xdd\x79\xf0\ \x9d\x70\xf3\x01\x00\x7c\xc5\x8a\x15\xcb\xc8\x1b\x3c\x24\xc0\xeb\ \x00\x72\xa5\xca\xd5\xd8\x58\x23\x65\x15\xad\xdf\xd0\x35\x0e\xa0\ \x86\x90\x26\x68\x04\x31\xbb\xbf\xff\x70\xf4\x84\xa6\xeb\x87\x8e\ \x8c\xac\x59\xf1\xe4\x26\x96\xb9\xfa\x6a\x9c\x6f\xbc\x08\x8f\xac\ \x41\x96\xcd\x4a\x48\xa0\x56\xa6\x96\x59\xe7\x8c\x13\xc2\x5d\x60\ \x11\x82\x9c\xaf\x9c\x29\x5d\xc6\xa1\xb1\x00\x8e\xc4\x3c\x18\x8a\ \x7a\x10\x7a\xf5\xbf\x10\xd3\xd7\x21\xcd\xa6\x23\x65\xd4\x01\x24\ \x6c\x2d\xef\x40\x8d\xcf\xc0\xd4\x6a\x0d\x73\x9b\x32\x58\x36\x23\ \x85\x29\x7e\x1d\xa6\x0d\x27\xdc\xd8\x70\xb0\x1a\x2f\x75\x4d\xc1\ \xc7\x83\x12\xc2\xe1\x30\x22\xe3\xe3\xf8\x8b\xa5\xc0\x03\x37\x07\ \x70\xe2\xbc\x2f\xe4\x12\xb1\x88\x1d\x81\x31\xb4\x1d\x91\x7d\x31\ \xa4\x14\x91\x4f\x37\x6e\xb7\x35\x45\x60\x2d\x2d\x2d\x17\x9b\xf9\ \x80\xec\x79\x58\xe6\xba\xfd\xde\x55\x1c\x5e\xff\x12\xa8\x59\x93\ \xfc\x14\x42\x15\x21\x46\xc8\x10\xf8\x99\xd3\x47\xd7\x6d\x3c\x5c\ \xf7\x60\x6f\xdf\x91\xfb\x1f\x7e\x49\x42\xf4\x4f\xaf\xc2\x32\x75\ \x35\x3c\x2e\x1d\x2e\x57\x9e\xbc\xcb\x12\x81\x13\xdb\x50\xda\x8b\ \xc1\xb8\x17\xfd\x51\x1f\x8e\x24\x83\xd8\x3f\xec\x42\x6f\x48\x43\ \x3a\x93\x45\x36\x9b\x85\xaa\x66\x20\x44\x1a\x3e\x5f\x06\x81\xc0\ \x28\x82\xf2\x18\x3c\x48\x23\x6f\x12\x09\xe4\x42\x46\xf7\xc0\xef\ \xaf\xc7\xec\x66\x2f\x3d\x5a\x35\x14\xe1\x43\x86\xee\x1f\x0a\x8d\ \x20\x3c\x36\x86\xa0\x17\x78\xed\x8e\x7a\x5c\xf2\x27\xe7\x03\xb5\ \x27\x43\x28\x29\x18\x07\xd7\xe6\x04\x10\x06\xc0\x49\x79\xc1\x04\ \x84\xe0\x74\xec\xca\x15\x5f\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\ \xcb\x80\x6e\x77\xbe\x0d\x2a\xf4\xe9\x00\xb7\x50\x47\xf0\x13\xa2\ \x9b\x81\x44\xbb\x0e\x76\x61\x7b\xf4\xb9\xf7\x0e\xd7\xce\x3e\xd4\ \x37\xf0\x97\x4f\xbc\xc9\xb0\xff\xa4\xf3\x35\x79\x74\x4b\xca\x60\ \xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x81\x31\x8e\x68\ \x3c\x8d\x54\x2a\x83\x44\x32\x8d\x80\x34\x88\x93\x5a\x75\x5c\xbb\ \x54\xc2\xbc\x19\x40\x5b\xb3\x84\xf6\xd6\x20\x9a\xbf\xf4\x22\x24\ \x33\x51\xba\x48\xf3\x9d\x37\x83\x99\x9b\x26\xba\x02\x28\x49\x30\ \x35\x85\xa7\xd6\xeb\xb8\xf1\x3f\x52\x18\x19\xe1\x85\xc9\x9e\x01\ \xab\x6f\x0b\xe0\xbc\x2b\xbe\x05\xe1\x69\x82\x48\x0e\x43\xdb\xf7\ \x12\x90\x49\x12\x61\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90\x68\xa6\ \x00\xf6\xca\x2b\xaf\xdc\x10\x08\x04\x66\x47\xa3\xd1\x55\x20\x5e\ \xc5\x0a\x8a\x8b\x10\x24\x34\x10\xbc\x84\x64\x73\x10\x89\xf3\xe7\ \x81\x35\x04\x51\xfb\x9b\xfd\x0d\x77\x29\xdc\xfd\xdd\xd6\xd6\x56\ \xf4\xf7\xf7\xa1\x2a\xe0\x05\x37\x34\x84\x86\x23\x30\x0c\x8e\x69\ \xb5\x14\x87\xf3\x25\x9c\x3b\x8f\xe1\x82\xa5\x4d\x68\x9f\x3d\x8b\ \x2a\x5c\x13\x98\xbf\x01\xcc\x5b\x0b\xe6\x0e\x82\x41\x03\xb8\x92\ \x03\x33\xb2\x10\x6a\x14\x2c\x3d\x08\xa4\x87\x73\xdb\xec\x4c\xcb\ \xe2\xd0\x51\x81\xb3\x97\xd7\x62\x24\x1c\x01\x59\x6e\xc6\x3b\x1a\ \x25\xec\x09\x01\xa7\xb5\x09\x7c\xf0\xb3\x0b\x20\xd1\xeb\x37\x4f\ \x47\xa0\xed\x79\x06\x22\x9b\xb4\x37\xaa\x75\x81\x4d\x07\x38\x14\ \x8d\x83\x09\xae\x27\x1b\x16\x2f\x7c\xba\xa7\x4e\x27\xf2\x5b\x3e\ \xfa\xe8\x23\xcf\xc0\xc0\xc0\xa9\x00\x7a\x8b\xed\x07\xe8\x84\x38\ \x41\xb5\x44\xa8\x1d\x4e\x22\xf0\x7a\x17\xa2\x27\x35\x23\x7c\xde\ \xac\xc8\x9d\xef\xf6\x35\xb3\xde\xde\xde\x9b\xcd\x58\x22\x6f\xb4\ \x66\x85\xe1\x9c\x39\xae\xc8\xbd\x5f\x9f\xe5\x9f\xb5\xe8\x42\x6f\ \xb0\x75\x21\x73\xfb\x82\x48\x0b\x05\xc4\x90\xa0\x10\x31\x82\xaa\ \xd0\x61\x14\x3c\xd9\x9f\xdb\x2c\x91\x94\x10\x24\x3d\x01\x99\x09\ \xc8\x42\x40\x12\x66\xcb\xd0\x3d\x5c\x0d\x0e\x39\x37\xdb\x37\x9e\ \x03\x7c\xeb\x6c\x50\x68\x00\x7f\xfd\x42\x2d\x66\x34\x24\x10\x97\ \xdb\xe0\x4a\x2b\x48\xed\x5a\x0d\x91\xce\xd0\x7d\x66\xfc\x09\x08\ \x9d\x23\x95\x11\x54\x1a\x01\xb3\x27\x65\xf8\x1e\x79\x64\x7d\xba\ \xba\x75\x7a\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1b\x4c\xf2\xe5\x36\ \x44\xb8\x15\xff\x23\x04\x45\x00\x8d\x29\x15\x53\x3b\xfb\x11\xdb\ \xd6\x2f\xc6\x5b\x1b\x95\xef\x69\x9a\x36\x04\xe0\xdb\x84\x36\x02\ \xbc\x6e\xb9\x77\xd9\x89\x35\xf7\xb6\x5f\xf9\xe8\x75\x35\x53\x5a\ \xda\x54\x25\x2d\xa5\x33\x09\xb7\xa6\xa6\x5d\x4a\x72\x14\xa3\xfd\ \xbd\x99\x70\xff\xc7\x6e\x23\xbe\xbf\x5a\x36\xe2\xbe\x80\x57\x54\ \x79\x3d\xc2\x13\xf0\x08\x29\xe0\x61\xb9\xca\xe2\x22\xb8\x19\xc0\ \x0d\xe0\xdd\x81\x39\x48\x24\xba\x30\xb3\x1e\x5b\x82\x6e\xec\x79\ \x6d\x07\x6a\x3d\x2e\x51\x27\x04\x3f\xef\x70\x18\xfa\xc7\x3d\x11\ \xc9\x88\xbf\x2a\xf3\x78\x04\x01\xb7\xcc\x3c\x4c\x80\x71\x01\x45\ \x15\x62\xdf\x30\xd4\xa3\x09\x36\x7a\x28\xea\xde\xf8\xe1\xa0\xdf\ \x35\xeb\xc4\xa6\xd5\x54\xd1\x9a\xf7\xee\xdd\x7b\x37\x80\x5f\x1d\ \xeb\x8e\x90\xb0\xbc\x60\xdc\x6a\x1b\x09\x0d\x02\x08\x1c\x09\x8f\ \x87\x01\xac\x90\x65\xf9\x9f\x7c\x3e\xdf\xf6\x54\x2a\xb5\xd0\xe3\ \xf5\xbe\xdc\x71\xfa\xd5\xef\xcf\x3e\xe5\xec\xaf\x09\x2e\x06\x0c\ \x43\x53\xe2\x91\x70\xf7\xde\x1d\x1b\x77\x6f\xfc\xcd\x93\xa3\xaa\ \x9a\xf6\x41\x57\x7d\x86\x11\x0c\x08\xdd\x5b\x25\xb8\x56\x45\xa1\ \x13\x64\x42\xaf\x97\x99\xde\xe0\x96\x8c\xda\x6a\x9f\x41\x2d\x0f\ \xc6\xa4\x99\xf3\x3b\xfb\xa4\x2a\x55\x51\xe2\x0b\xe6\xe0\x0e\x83\ \x23\xab\xab\xf0\x65\x54\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1\x64\xcd\ \x3b\x9d\xcf\xca\x2e\xd6\x00\x78\x83\x0c\xc2\xc7\x60\xb8\x05\x87\ \x94\x48\xc3\x08\xa7\xb8\x72\x24\x2a\xbc\x9a\x67\xda\x17\x3b\xe6\ \xcc\x98\xd1\xd5\xd5\x95\x08\x85\x42\xf7\x00\x78\xf4\xb3\x6c\x89\ \x19\x84\x84\x25\xc2\x14\x0b\x33\x08\x11\xc3\x30\xc6\x1a\x1a\x1a\ \xb6\x64\x32\x99\x85\xfe\x40\x70\xd7\x57\x6e\xbc\x77\x9a\xcb\xed\ \x35\xb3\xed\xfb\x5d\xbb\xf7\xbc\xb1\xa3\x73\x6b\x94\x43\x97\x1a\ \x4f\xfa\x32\xe3\x5c\x65\xa4\x89\xc4\xf5\x2c\x33\xd4\xb4\xa4\x2b\ \x29\x49\x57\x93\x32\x65\x6f\x59\xa3\x96\x67\x53\xee\x31\x2d\xed\ \x19\x1c\x63\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5\x3a\x24\x86\x07\x3b\ \xa6\x62\x9b\x00\x1d\x6a\x90\xb8\x4c\xe9\xc4\xa5\xde\x3e\x2c\xd8\ \x5b\x4f\xae\x1f\x9b\x75\xe1\xb2\x59\xcf\xb7\x34\xf8\xd3\xe3\xb1\ \xd4\xb4\xd1\x68\xfa\x84\x70\x4c\x9f\x6f\x48\xfe\x99\x9e\x40\x5d\ \xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7\x5e\xd6\x75\x7d\x39\ \x80\x5d\x04\xed\xf3\xfc\xaf\x31\x66\x89\x55\x4b\x98\x6a\x95\xca\ \x24\xd5\xd5\x9b\xa8\x26\xdf\xd6\xdc\xdc\xfc\x0d\x7a\x87\x50\xd2\ \xe9\x74\xe2\x8d\x37\xde\xd8\x3d\xc9\x96\x86\x80\x05\xd3\x98\x10\ \x9c\xc3\xe0\x42\x37\xe8\x48\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\ \xb7\x7a\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0\x4c\x82\xfe\ \x8f\x00\xd6\x2d\x06\x4b\x8d\x83\x45\x63\x90\x7b\x13\xec\x2c\xba\ \xf3\x79\xb7\xdb\xdd\xec\xf5\x7a\x55\x6a\x99\xcb\xe5\x72\x93\x81\ \xc8\x1a\xf1\x78\x7c\xbf\xa2\x28\x6b\x01\xfc\x5a\x08\xd1\x5d\x40\ \xbc\x9c\x07\x94\x08\x09\x8d\x10\x21\x28\x84\x26\xc2\x14\x55\x55\ \xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8\x2b\x38\x00\x97\x53\x00\xe7\ \x9f\x3d\x18\x63\x1c\x8c\x41\xa2\x1f\x78\xdc\x02\xf0\xf1\x77\x37\ \x7c\xd4\xee\xf7\x57\x3d\x91\x88\xc6\xe6\x6d\xdb\xb6\x6d\x14\xc0\ \x35\xd6\x78\x99\x04\x90\xf0\x31\x64\xab\x2a\xd5\xe4\x77\x54\x70\ \x0b\xe5\xa1\xb3\x08\xb5\xd6\x73\x85\x09\xfb\x09\xa6\x70\x7d\xd6\ \x62\x4e\x54\x66\x57\xb8\x30\x24\x92\xd6\x97\x66\x69\xc6\x37\x92\ \x00\x4a\x22\x91\x38\xe3\xc0\x81\x03\xaf\x51\x79\xe4\x74\x2e\x13\ \x49\x13\x92\x55\x21\x72\xe4\xf3\x13\x2f\x0c\xab\x95\x48\x2c\xb1\ \x6e\xdd\xba\x36\xba\x7e\x3d\x2d\x4f\xbf\x73\xe8\xd0\x21\xff\xa6\ \x4d\x9b\xc6\xe9\xda\x5f\x01\xc8\x12\xda\x26\x7c\xa7\x36\xc1\x0b\ \x93\x84\xdd\x84\x4e\x42\x8a\x90\xb1\x26\x45\x2f\x47\xba\x74\x08\ \x1c\xff\x7d\x32\x21\xe0\xf1\x78\xbe\x4d\x1e\xb0\x9c\xc2\x60\xe5\ \xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93\x51\x82\xe4\xe4\x9a\x3a\ \x09\xa2\x72\xce\x0d\x1a\x23\x28\x5f\xc8\xe3\xe3\xe3\x33\xfc\x7e\ \xff\x29\x34\xe6\x22\x6a\x97\x51\x82\x62\x94\xa1\x0d\xea\xff\x10\ \xc0\x2a\xc2\x51\x8b\x50\xc2\x2a\xc9\xb1\x1c\x51\x27\x41\x6e\x41\ \xe0\x73\x1a\xab\xc0\xfd\x26\xae\x63\x8c\x3d\x4c\xa4\x6a\xab\xaa\ \xaa\x86\x89\x58\x8a\xda\x0c\x09\x20\x3c\x79\xf3\xd1\xf5\x06\x42\ \x8d\x39\xfb\xe4\x39\x88\x44\x22\xc6\xd0\xd0\x50\x2f\x79\xc2\x06\ \x6b\x69\x3a\x60\x11\x4d\x12\xd2\x96\x08\x9a\x4d\xf6\x77\x63\x0c\ \x95\xb3\x2a\xc2\x97\x09\xa7\x13\xda\x2c\xc2\x75\x04\x37\xe7\x5c\ \xb2\x5e\x41\x23\x84\x83\x84\x6e\xc2\xfb\x84\x7e\x6b\xa6\x8d\x72\ \x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17\x56\x81\ \xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0d\x06\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0c\x83\x49\x44\ \x41\x54\x78\xda\xed\x9b\x5b\x68\x55\xd9\x19\xc7\xd7\x49\x4e\xa2\ \x26\x26\x1a\xe3\x35\x31\x5e\xc6\x54\xad\x97\x4a\x95\x29\x38\x14\ \xc4\x22\xb6\xcc\x73\x9f\x2a\xf4\x61\x5e\x7c\x10\xc4\xc2\x0c\x08\ \x7d\x28\xf8\x54\x4a\x1f\x15\xa4\x4f\xf6\x51\x0a\x52\x90\x4e\x07\ \x41\x94\xfa\xe0\xfd\xd6\xaa\x03\x5e\xc6\xfb\x35\x51\x63\x2e\x46\ \xcd\xc5\x7e\xbf\x0d\xbf\x61\xcf\x31\x92\x8c\x1c\x83\xc1\x2c\x58\ \xec\xbd\xd7\x59\x7b\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\ \xd3\xc7\xdc\x2a\xa2\x8f\x03\x30\x0e\xc0\x38\x00\xe3\x00\x8c\x03\ \x30\x0e\xc0\x47\xda\x8a\x1f\x1a\x41\xc7\x8e\x1d\xdb\x53\x5d\x5d\ \xfd\xb3\x69\xd3\xa6\x7d\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\ \xf3\x57\xaf\x5e\xfd\x8b\x72\xed\xf7\x41\x24\x42\xdb\xb6\x6d\x5b\ \x50\x2c\x16\xff\x10\xb7\x9f\xcd\x9e\x3d\xbb\x65\xf2\xe4\xc9\x93\ \x18\x87\x36\xaf\xb6\x81\x81\x81\xc1\x4b\x97\x2e\xdd\x1a\x1c\x1c\ \xbc\xd4\xd1\xd1\xf1\xb7\xbd\x7b\xf7\x1e\x1a\xd3\x00\x6c\xd9\xb2\ \xe5\xb3\xfa\xfa\xfa\xc3\x21\xf5\xaa\x21\x09\x2c\x14\xd2\xdb\xc6\ \x03\x84\x74\xfd\xfa\xf5\x43\x15\x15\x15\xbf\xd9\xb3\x67\xcf\xab\ \xb1\x64\x02\x32\xff\xcb\x9a\x9a\x9a\x43\x21\x84\xe2\xcb\x97\x2f\ \x87\x63\x78\xc8\xb1\x96\x96\x96\xf5\xd7\xae\x5d\xfb\x26\x1e\x7f\ \x35\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf\x3f\x13\x42\x00\x91\xaa\xaa\ \xaa\x52\x98\x02\x3d\xbb\xb7\x3b\x6e\x9f\x38\x71\x62\xc6\x3c\xa0\ \xd1\x9b\x9a\x9a\xd6\x6f\xd8\xb0\x61\xdd\x98\xd2\x80\xcd\x9b\x37\ \xff\x39\x98\x69\xec\xeb\xeb\x4b\xcf\x9e\x3d\x4b\x0f\x1e\x3c\x40\ \xa5\x47\x0a\x5c\x0a\x27\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\ \x71\xf9\x74\xac\x00\x00\xb3\x5f\x04\xf3\x48\x10\xef\x9e\x16\x2d\ \x5a\x94\xc2\xf9\xa5\xe7\xcf\x9f\x23\x65\xe7\xa4\xce\xce\xce\xd4\ \xd0\xd0\x90\x31\xfc\xf4\xe9\xd3\x34\x69\xd2\xa4\x74\xfa\xf4\xe9\ \xf4\xe4\xc9\x93\x44\x0b\xff\x91\x68\x53\xa6\x4c\xf9\xf9\xc6\x8d\ \x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4\x69\x53\x75\xb4\xe9\ \x71\x0b\xc3\x78\xf6\xb4\x6a\xd5\xaa\x34\x61\xc2\x84\x74\xe3\xc6\ \x8d\x34\x6b\xd6\xac\x74\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\ \x8f\x9d\xc3\x60\xba\x7a\xf5\x6a\x5a\xb8\x70\x61\x3a\x7b\xf6\x6c\ \xf6\x4e\x77\x77\xb7\xe6\x00\x68\x95\x2f\x5e\xbc\xd8\x14\x4b\xfe\ \xfd\x83\x88\x02\xdb\xb7\x6f\x6f\x7c\xf4\xe8\xd1\xba\x20\xbc\x3f\ \x88\x9d\x17\xd2\x5b\x31\x73\xe6\xcc\xdf\xde\xb9\x73\xa7\x2b\x88\ \x9e\x1c\x63\xd3\x83\xe0\x84\x16\x00\x42\xc4\xf7\x77\xd1\xa2\x4c\ \x33\x02\xcc\x0c\x84\x5b\xb7\x6e\xed\x0b\x8d\xd9\x4f\x38\x8d\x7e\ \x34\xd6\xfc\xf7\x89\x13\x27\x1e\xbc\x17\x00\x7e\x1d\x6d\xc5\x8a\ \x15\x95\xc1\x54\x6d\x30\xd3\x7a\xe6\xcc\x99\xdf\xaf\x59\xb3\xa6\ \x39\x18\x7d\x10\xd2\x68\xba\x70\xe1\x42\xed\xb2\x65\xcb\xd2\xdd\ \xbb\x77\xd3\xd4\xa9\x53\x53\x57\x57\x57\x7a\xfc\xf8\x71\x46\x6c\ \x84\xad\xc4\xbe\xd8\x3e\x12\x0c\xa0\x90\xa8\x9e\x7e\xc4\x0d\x4d\ \x61\x1d\x1c\x28\x66\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\ \x0e\xad\xba\x1c\x4e\xf4\x1f\x3d\x3d\x3d\xff\xda\xbf\x7f\xff\x89\ \x98\x33\x38\x62\x00\x76\xec\xd8\xb1\xf4\xe6\xcd\x9b\x5f\xc5\x6d\ \xcb\xe2\xc5\x8b\x6f\xd6\xd6\xd6\xd6\x04\xa1\x8b\x7a\x7b\x7b\x5b\ \xcf\x9f\x3f\xdf\xc8\x26\xa8\x24\x92\x84\x51\x18\xc0\x63\xf3\x8c\ \x6d\xbf\x7a\xf5\xca\xae\x27\x77\x69\xa4\xce\x38\x44\xd2\x99\xcf\ \x18\x4c\x0c\x1b\x0e\x01\x2d\x68\x51\x0b\x78\x3f\x63\xd8\xe7\x90\ \x7a\x8a\xe8\x82\xf9\x00\x3e\x7e\x22\xdb\x3b\xe8\xee\x6c\x6f\x6f\ \xff\x26\xf6\xfd\x32\xe6\xdc\x1e\x12\x80\xdd\xbb\x77\xa3\x8b\xbf\ \x7b\xf8\xf0\xe1\x5f\x8e\x1f\x3f\x3e\x3b\xd4\x88\x97\x0d\x37\x10\ \x08\xe1\x79\x06\x91\x1e\x1b\xdb\xdf\x78\x46\x42\x74\x1b\x6b\xe0\ \xd0\x64\x9e\x3d\x60\x8c\x7b\xae\xf9\x6e\xf3\x3d\xaf\xac\xeb\x95\ \x0e\x00\x79\xe7\x19\x1a\x09\x08\x00\xc5\xfa\x38\x4f\xfc\x48\xe6\ \x67\x42\x1b\xae\x1f\x3d\x7a\xf4\x93\x37\x00\xd8\xb5\x6b\x57\x4d\ \xd8\xd0\xd7\xa1\xaa\xeb\x62\x92\x4c\xb2\x10\x1d\xc6\xd8\x14\xbb\ \x85\x38\x09\x18\x16\x00\x36\x86\x39\x1b\xce\x0b\x2d\x81\x30\xc6\ \xed\x23\x01\x80\x2e\x93\x79\x10\x58\xcb\x88\xe0\xef\x87\x0f\x1f\ \x66\x1f\x98\x56\x08\xdc\xd3\xfb\xc3\x24\xeb\x6f\xdf\xbe\xdd\x5b\ \xf4\x85\x9d\x3b\x77\xb6\x44\x38\xfa\x36\x54\xb9\x96\xd0\x93\x27\ \x02\x64\x91\x18\xe3\x61\xf3\x69\xee\xdc\xb9\x29\x5e\x06\x08\x36\ \x96\x30\x89\xcb\xe6\x00\x60\xe4\xea\x3f\x20\xd6\xe6\xfa\x00\x25\ \x08\x6a\x80\xfb\x39\xce\x9a\x39\x40\x87\xd4\x00\x3b\xcc\xf1\x1e\ \xfe\x06\x8d\x20\x7a\x60\x56\x08\x12\x20\x42\xab\x11\x24\xeb\x17\ \xc3\x17\xfd\x09\x5f\x9d\x01\xb0\x6f\xdf\xbe\xc6\x90\xca\xb5\x28\ \x32\xaa\x64\x3a\xcf\x3c\x49\xca\xca\x95\x2b\x13\xed\xc8\x91\x23\ \x20\x9d\x81\x10\x7e\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\ \x8d\x35\xb2\x4d\x6d\x6a\x14\x8d\xb9\x30\xc7\x1e\xd3\xa7\x4f\xc7\ \x79\xf1\x9b\x1a\x02\xe1\x43\x81\x24\x20\xa5\x20\xc8\x38\xe0\x2b\ \x79\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd\x2a\x9e\xf7\x64\x00\ \xdc\xbb\x77\xef\x3f\x11\x77\xab\x54\x53\x99\xd7\xfe\xc9\xb8\x02\ \x31\x9c\x48\x46\xa4\xf3\x24\x16\xfb\x82\x10\xcd\x23\x22\x00\x8c\ \xf2\x2c\x00\xae\x9b\xad\x41\x13\x00\x12\x20\xd6\x46\xa3\xc8\x01\ \xf2\x4e\x50\xa6\x35\x3d\x9b\x29\x71\xe9\x6f\xac\x8d\x83\xc4\xe1\ \x42\x07\xeb\xd2\xb6\x6e\xdd\x9a\xdd\x9f\x3b\x77\x0e\x67\x4d\xa4\ \x40\x0b\x2b\x02\x88\x4f\x8b\x21\xfd\xda\x50\x8d\x9f\xe6\xbd\xac\ \xc4\xa9\x8a\x84\x29\x50\x43\xa2\x80\x81\x84\x4f\x9e\x3c\xc9\x34\ \xc6\xd9\x54\x00\x40\x18\x86\x95\x8e\x25\xec\x0f\x34\x80\x36\x6f\ \xde\x3c\x9c\x2a\x5a\x04\x31\xec\x07\xb8\x86\x34\x9e\x5d\x03\x1a\ \x74\xb6\xec\x87\x76\x71\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\ \x36\x91\x20\xfb\x7d\xce\x9c\x39\x19\x38\x57\xae\x5c\x31\x5a\x4d\ \x2b\xc6\x4b\xad\x11\x8f\x0b\xbc\xa8\x63\x73\x41\x91\x9e\x31\x63\ \x46\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1b\x6a\xc9\ \x06\xda\xbf\x44\x0a\xc4\xf2\xe5\xcb\x49\x65\x31\x27\x18\x05\x54\ \xcc\x0a\xa2\x19\xd7\x9e\x95\x24\xb4\x20\x41\x34\x0d\x3a\x98\x03\ \xb3\xa8\x3c\x57\x23\x13\x82\x50\x20\x8c\xab\x45\xf8\x37\xae\xbc\ \x57\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d\x7c\x9b\x8d\xf3\x5e\x7f\x48\ \xc6\x68\x10\xc6\x6f\x3c\x03\x00\x0b\x43\x30\x44\xd2\x35\x0d\x43\ \x9f\xef\x31\x8e\x2f\x21\xa5\x25\x09\x82\x69\xf6\x05\x60\xd6\x40\ \xc3\xb8\xc2\xb4\x0e\xcf\x7d\xd5\x4a\xf6\x31\x17\xc0\xff\xb0\x26\ \x6b\x01\x12\x7b\xd2\xa0\x01\x3e\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\ \x65\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02\x61\x1e\xfe\x86\x5d\x6a\ \x7f\x02\xa0\x59\xd8\xc8\xed\x2f\x5e\xbc\x08\x68\x48\x1d\x89\x03\ \x00\x3e\x08\x69\xb2\x2f\x84\xeb\x00\xe9\x32\x8b\xf4\x55\x5b\xe6\ \x40\x07\x6b\xe0\xf0\x58\x83\x88\xc3\x3c\x0b\x26\x53\xeb\x61\x53\ \xec\xa2\x2a\xf4\xae\x4d\x2f\x9d\x6b\x10\x85\xa4\x4a\xd3\x56\x9c\ \x1c\x0c\x10\x26\x91\x0c\x73\xd0\x06\x00\x83\x01\x1c\x14\x6b\xe1\ \xb1\xd1\x1e\xf3\x07\x01\x61\x5d\x68\x45\x73\xb8\x47\x0b\x99\x03\ \xe3\x80\x00\xf3\xbc\x8b\x43\x25\x04\x1a\xc5\xb8\xda\x87\x01\xa0\ \x4c\x0d\xc2\x60\xc0\x06\x51\x48\x18\x55\x85\x50\x7d\x47\x14\x46\ \x5c\x61\x1c\x8d\xc1\x31\xf2\x1e\x0c\xb3\x06\x0c\x41\x1b\x0c\xd2\ \x01\x4d\xed\x83\x31\xd6\xa5\x94\xc6\x79\x5a\x1a\xb3\x47\x36\x7e\ \xff\xfe\x7d\x9c\xec\xb0\xf5\x05\x3e\x20\x95\xbb\x69\x32\x46\x15\ \x98\x8a\x63\x2b\x33\x31\x4d\x0b\x46\xa8\xe0\x32\x82\x97\x2c\x59\ \x42\xb1\xc4\x19\x5f\x69\x46\x88\xb4\x61\x1e\xa6\x59\x03\x86\x01\ \x8e\xe8\x01\xd3\x5c\x71\xd0\xac\xc9\x95\x75\x19\xc3\x54\x4c\xb3\ \x05\xe2\xfd\x6b\x80\x9b\xda\xb0\x47\xc2\x28\x04\x40\xac\x21\x92\ \x2b\xb6\x8f\x39\x00\x00\xe6\x01\xe1\xe6\x0d\xe6\x21\x26\x2f\xfa\ \x03\x7d\x92\x76\x0e\x38\x80\x82\xc6\xa8\x25\x8c\x13\xfa\x58\x1f\ \xad\x1a\xd6\x07\x94\xb3\x11\x26\x21\x02\x50\xb5\x41\xd4\xbf\x94\ \x79\x54\x17\x82\x91\x26\x7e\x40\x4d\xe4\x1d\x23\x8a\x79\x88\xe9\ \x30\x73\x60\xd4\xb9\xcc\x43\x5b\xe4\x81\x39\x00\x05\x20\x79\xc7\ \x6d\x1b\x15\x0d\x30\x03\x63\x63\x25\x44\x83\x59\x01\x80\x09\xa4\ \x4d\xb9\x8a\xad\x32\x66\x4a\x8c\x64\x35\x15\xcf\x0e\x64\xce\x08\ \x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06\x43\x26\x9a\x85\x1f\ \x61\x9d\xd1\xd2\x00\xe3\x36\x1d\x86\x70\x4a\x84\xaf\x7c\xa6\x08\ \xf1\x84\x5d\x3d\x39\x0c\xe8\xd4\xb0\x61\xa3\x00\xa0\x31\x6e\x78\ \x86\x79\xde\xb1\xe0\xa1\x13\x05\x04\x3e\x9f\x00\xc1\xb4\x7b\x51\ \x67\x70\xff\x56\x27\x58\x56\x0d\x90\x51\x9a\xea\x8e\x9a\xe7\x55\ \xd2\x3a\x9d\x28\xc0\xb8\x67\x06\x8c\x31\x17\xa6\xb8\x1a\xfb\xcd\ \xf4\x90\x3c\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2\x69\x35\x60\xd0\x0c\ \x9b\x68\x1c\xfb\x8e\xaa\x06\x68\xab\x4a\xd1\x31\x98\x70\x1e\xfb\ \x43\x38\x04\xeb\xe1\x71\x60\xf3\x66\x2c\x49\x4d\xd3\x3e\x49\x03\ \x13\x42\xdd\xbb\x6f\xa3\x29\x30\x6c\x8d\x60\xde\x6f\xea\xab\x84\ \x87\xca\x1e\xc9\x31\x00\xd5\x7c\xe2\xfd\xfa\x80\x3c\x21\x82\x9b\ \xaf\xda\x54\x55\x88\xb7\xb4\x05\x00\x41\x50\x0b\xe6\xcf\x5c\x9a\ \xfa\x6b\x1f\xa7\xe6\xa6\x96\x54\xdd\x96\x85\x4c\xed\x1d\x46\x74\ \xb6\xac\xc7\x3b\xae\x6f\x04\x92\x27\xfd\x0a\xa6\x88\x29\x00\x40\ \x59\x35\x60\xd8\x23\x2b\x01\xb0\xa9\x01\xee\x2b\xd1\x8c\xe5\x35\ \xa1\x50\xf7\x32\x2d\x58\xb4\x34\x15\xeb\xfa\x52\xb1\xba\x39\x75\ \x90\x2a\xc7\x3b\x66\x99\x9e\x31\xa2\x19\xac\xaf\x29\x5b\xd0\xe5\ \xa3\x10\xe1\xd0\xcc\xb3\xb4\x55\x94\xd3\x07\xc8\xa8\x04\x20\x95\ \x52\x60\xf2\x67\x0e\xf9\x7b\x9f\x3d\x23\x7c\xde\xdf\x1e\xcc\x3e\ \x4a\xb5\x55\xf5\xa9\x3e\xca\xd8\x89\x75\x93\x53\xfd\xec\xc8\x19\ \x1a\xa6\x38\xcf\xf7\x5c\xc3\xee\xfe\x76\x35\x0d\xb0\xde\x04\xa0\ \xdc\x3e\x20\x4f\x40\xbe\xa2\xf3\xde\x4c\xd0\xef\x7f\x30\xeb\x5c\ \xfb\xf7\x31\xbf\xa7\x37\x75\x84\xea\x77\xb5\xb7\xa5\xee\xb6\xf6\ \xd4\x1b\x6a\x3c\x21\xbe\x9c\x0f\xe6\x34\x8c\xf5\x2c\x99\x05\x54\ \xe9\x6b\x86\x66\x93\xac\x5b\xda\x8a\x12\x53\x6e\x00\x8c\xdd\x3a\ \x2d\x9a\xa1\xd1\x33\x02\x55\x9f\x79\x3a\x35\xed\x1b\x6f\x5e\xc5\ \x07\x8f\xfa\xba\xd4\xf7\xbc\x27\x3d\x8d\x32\xb9\xb3\xa7\x3b\xf5\ \x15\x99\xfb\x7d\xc5\x0a\x00\xbc\x83\xa7\x57\xd2\xa5\x25\x38\x7b\ \x50\x83\x70\x1d\x1d\x00\x24\x40\x00\x2c\xb9\x75\x4a\x82\xc2\xbd\ \x85\x92\xcc\x6b\xe3\xcc\xc9\xca\xe3\xca\x42\x7a\x45\x32\x55\x5d\ \x91\xba\xba\x3b\x23\xb7\x4e\xa9\xab\xb3\xcb\x13\x6b\x22\x06\x60\ \x19\xf7\x65\xdc\xc6\x98\xc5\xd2\x90\xad\xa8\x57\x2e\x57\xf3\x24\ \x57\x42\xcc\xe3\x21\x42\x7f\x03\xb1\x66\x7e\x48\x0e\xdb\xa4\x9b\ \xfe\xe6\x6d\x96\x10\x56\x37\xb3\x21\x4d\xa8\x9c\x98\xba\x7a\xbb\ \xd2\xa3\x2b\x0f\x01\x0c\x2d\x61\x4d\xee\xcd\x1a\x3d\x87\x54\xab\ \xbc\x1f\xdd\x54\x18\x06\xf2\x84\xc0\x84\xa0\xd0\x4c\x7a\x90\x9a\ \x80\x51\x10\x91\x12\x23\xfd\x7c\xf1\x83\x60\x3c\x95\xce\x67\x82\ \xda\x33\x8c\x73\x82\xb4\x60\xc1\x02\xcf\x27\x05\xd8\xc4\x89\x44\ \x69\x74\x8b\x21\x9d\x9a\xcd\xb3\x3a\x80\x80\x60\x6d\x14\xd5\x67\ \x0c\x66\x01\x8a\xda\x3d\x3e\x5b\x65\xc0\x18\xeb\xad\x05\xb4\x65\ \x41\xf0\x9c\x32\x3e\xdb\x71\x40\x2b\xd0\xcc\xc9\x3b\x42\xb5\x84\ \x3d\x47\x4f\x03\x4c\x47\x05\x82\x67\x08\xf1\x68\x8b\x31\x99\xf6\ \xd0\xd3\x12\x1a\x10\x50\x79\x6b\x04\xab\x41\xdf\xf1\xec\x12\x9a\ \xa9\x20\x39\x12\xf3\x5c\xd0\x33\x4a\x80\xf5\xd3\x1d\xe6\x05\xf3\ \xa3\x75\x20\x62\xfd\xaf\xf3\xd3\x0c\x60\xca\x6a\x4d\x02\x21\x1a\ \x40\xf2\x1f\x47\x19\x83\x21\x8b\x17\xa4\xed\x3c\xc3\x27\x5f\x77\ \x00\x94\x4a\x12\x06\xd9\x03\xe6\x35\x09\xfd\x0f\x42\xe0\x58\x8c\ \xdf\x46\xd7\x07\x58\xcf\xeb\x84\x54\x77\x2b\x40\x98\x32\x13\xb4\ \x74\x36\x1c\xf2\x9b\x45\x8b\x15\x9d\x1f\x52\x61\x44\x8f\x1e\x5f\ \xaa\xd1\x0e\x4f\x95\x00\x8f\xf7\x33\xa0\x3c\x29\x6a\x6e\x6e\x36\ \xed\x1d\x55\x1f\x20\xc3\x1e\x45\xeb\x18\x01\x85\x7c\xdc\x83\x4e\ \xf3\x7a\x01\x31\xf4\xe1\x20\x61\x54\xd3\x00\x00\xde\xa1\xf6\x67\ \x1d\xd7\xd4\x21\x5a\x4c\xb1\x27\x63\x74\xd6\xc0\xf9\x01\xfa\x88\ \x00\xe0\x0b\x71\xb9\x01\xc0\xa1\x69\xbf\x66\x6c\x48\x0b\xf5\xd5\ \x57\xc0\xb8\xde\xde\x52\xd7\x44\x4a\xa6\x4a\x73\x0b\x55\xde\x22\ \x27\x9f\x0c\x79\x62\x84\xf4\x31\xbb\x11\x29\x6c\x31\x50\xae\x61\ \xd1\x72\x54\x7f\x36\x88\xb3\x04\x2e\x05\x06\x10\x20\x54\xe7\x05\ \x13\xac\x81\xdd\x23\x71\xa5\x6a\x6d\x60\x46\x49\xb7\xb6\x27\xf9\ \xf1\x54\x29\xff\x75\x8a\x77\xf9\xd6\xc0\xbc\xb5\x6b\xd7\x72\xec\ \xa6\x06\xe9\x24\xf9\x2e\x21\xdd\x00\xde\x87\x06\x34\xf0\xf0\x0e\ \xcd\x8c\xee\x6d\x5a\x80\x2d\x2a\x39\xbb\xc7\xde\x10\xe7\x87\x0d\ \x08\xf1\x4b\x8e\xa7\xba\x1e\x8c\x70\xc6\x0f\x53\x00\xc5\xf1\x39\ \x6b\xc8\x98\xef\x20\x6d\x00\x63\x3d\x2b\x4e\x2a\x40\xd6\xf6\x3d\ \x40\xf5\xbc\x01\xba\xa0\x01\x20\x6f\x15\xf9\xdb\x5b\xff\x14\xed\ \xc7\xb6\x7c\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdf\x4a\x9b\x4e\x12\x8f\ \x0e\x51\x48\x15\xa2\xf3\x69\x33\x34\xd1\x79\x9f\x64\xc7\x46\xe6\ \x67\x68\x33\x29\xe2\x7d\x4b\x5d\x01\xf8\xee\xbb\xef\x86\x22\x59\ \x00\xd1\xd0\xb3\x11\x49\xfe\x5b\x8c\x81\x9b\x64\x5a\x6c\xca\x22\ \xf9\xd8\x9b\xaf\xeb\xed\x2c\x6e\x4d\x0f\x61\x7e\xa8\x90\x28\x8f\ \xb8\xec\x6e\xea\xb5\xa4\x79\x86\xef\x91\xd8\x70\x69\xb9\x66\x82\ \xcf\xf0\x0b\xb6\xe7\x83\x23\x31\x57\xfd\xc7\x85\xf8\xfb\x86\x2f\ \x63\xa8\xad\x18\x52\xea\x08\x6f\x79\x28\x08\x5f\xef\x5f\x58\x04\ \x83\x32\xe2\x55\xe2\x65\x12\x2f\x3f\x10\x44\x7c\x1b\x8f\xcf\xf2\ \x69\xae\xcd\xf8\x3e\x82\x26\x38\x95\x01\xe8\xd4\x58\x63\x7a\xd0\ \x50\x13\x9d\xbf\x57\x80\x3e\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\ \x8f\xc3\x41\x3e\x09\xa0\x7e\x6c\x02\x83\xd0\x3a\xc2\x9c\x2e\x45\ \x38\xfe\x3a\xd6\xbb\xc0\x29\x7e\x21\xfe\xf6\x7e\x52\x2c\xbc\x3a\ \x54\xf6\xf3\x40\x77\x59\xfc\xf0\x13\xfe\xcc\x8d\xf9\x79\xc9\x4b\ \x67\x34\xa0\xbe\x1d\xb6\x74\x24\x88\xf8\x5f\xbc\xdb\x99\xde\x4f\ \x73\xc3\x42\xb4\xd7\x65\xc8\x4f\x90\x0e\xb4\x12\x1b\xef\x45\x7f\ \x12\x7f\x71\xfa\x3a\x0b\x81\xf1\xf7\x7d\xd3\x02\xed\x96\x60\x66\ \x6e\x3c\x83\x7e\x7d\x00\x41\xfd\xca\xef\x48\xb2\x10\x9d\x7b\xfa\ \x60\xdc\xb3\x50\x7b\xcc\xb9\x16\xd7\xa7\x69\x6c\x34\x40\xec\x23\ \x68\x04\xe3\x7d\x0e\x9a\x03\x00\x42\x15\x99\x6c\xf4\x9a\xe8\x18\ \xa2\xfa\xeb\xb5\x40\x67\x21\x54\x07\x7f\x44\x07\xc5\x34\x86\xdb\ \xf8\xbf\xce\xa6\x34\xfe\x5f\x63\xe3\x00\x8c\x03\xf0\x11\xb7\xff\ \x03\x7f\x19\x0a\xe4\xd7\x62\x63\xda\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x1a\ \x08\xdd\xe1\xa7\ \x00\x61\ \x00\x63\x00\x63\x00\x65\x00\x73\x00\x73\x00\x6f\x00\x72\x00\x69\x00\x65\x00\x73\x00\x2d\x00\x64\x00\x69\x00\x63\x00\x74\x00\x69\ \x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x08\x99\x64\x87\ \x00\x6b\ \x00\x63\x00\x68\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x0f\xad\xca\x47\ \x00\x68\ \x00\x65\x00\x6c\x00\x70\x00\x2d\x00\x62\x00\x72\x00\x6f\x00\x77\x00\x73\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0e\x95\x57\x87\ \x00\x6b\ \x00\x33\x00\x62\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0b\x34\x2d\xe7\ \x00\x61\ \x00\x6b\x00\x72\x00\x65\x00\x67\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x01\xad\xab\x47\ \x00\x64\ \x00\x69\x00\x67\x00\x69\x00\x6b\x00\x61\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ \x00\x00\x00\xae\x00\x00\x00\x00\x00\x01\x00\x00\x76\xac\ \x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x15\x18\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x63\x9f\ \x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x43\x7f\ \x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x28\x33\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/animation/stickman/0000755000076500000240000000000012613140041020654 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/stickman/animations/0000755000076500000240000000000012613140041023016 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/animation/stickman/animations/chilling0000644000076500000240000001455412613140041024543 0ustar philstaff00000000000000ÿÿÿÿ@8LÊ?J$ÞÀb—2]ó@:%ÎEÀX° Ý †TÀ@Ã1Ê-çèÀNNÆ…/bØ@P ²Ä]ÀCšŽÊ>¬/À>ƒj±`;±@E5/n0\@2S™ËÅü@JÇžÓì˜ÀD~}ñ-~À`]Ë·ÖÞÕ@"¢ä7ZÀciáya˜G@Px ZúÄÀ[yn{ºÓw@<ŽU@8LËu|äÀb—ËFž@:ù ¡ÀX°CæÆÀ@Ã7)°­qÀNN )ø¯c@P ÷zuùÀCš£ÇÿŽçÀ>ƒ$Lj1@E5‚B˜#@2S¾5úñ@Jë†~©çÀD~sD±áQÀ`]ÂZUÇc@"¢ËiYPMÀcià¹2Þ@Px¹תÀ[yzf³yk@ƒ$Lj1@E5‚B˜#@2S¾5úñ@Jë†~©çÀD~sD±áQÀ`]ÂZUÇc@"¢ËiYPMÀcià¹2Þ@Px¹תÀ[yzf³yk@ƒ´6N‘@E5Q»@2SsH‚¸³@J¡ÞÌ‘ÀD~ˆÈ™ÌãÀ`]ÕŒâÔÖ@"¢þAs“³ÀciâCDi×@PxÕ°—±À[yb%íB@ƒ¸)h¬@E5Ræˆ @2Sq5V'¾@JŸ×³:dÀD~‰_ûÖ¦À`]ÖöÍ”@"¢ÿ§,§ÀciâṄ@Px˜ ËÀ[ya}¼À3@ƒ»S@E5TAŒô@2So§š^Õ@JžSæ ÀD~‰ÑLIìÀ`]ÖyáA@"£²ðe÷ÀciâV5¾=@PxiñPNÀ[y`ÿìËg@¡R@P 8äŒÀCšuÕæ¡\À>ƒ¾ýl@E5VÖ>¶@2SmžÜ{|@JœVsŽ{ÀD~Še›šÂÀ`]Öýhðj@"£eò€Àciâ`ÒÍ@Px-¢ SÀ[y`[\Ål@ƒÀ:¢›@E5V™nûÒ@2Sl÷óoY@J›³qÙ~ÀD~Š•"ÃÀ`]×'Ðÿ$@"£³jÀciâd9w@PxPñÔÀ[y`&§v+@-ÀX°&¡tåbÀ@Ã*¾HÉÀNNöï÷5Ö@P '!0sÀCšt¤QÑ À>ƒÃ Âô@E5Wå 4_@2Sk{Ç‘a@Jš@7}ÁÀD~‹\qÀ`]׈co@"£qÝÀciâkø.Œ@PxîWè9À[y_®«5"@ƒÃEŸM/@E5Wþ§ž³@2Sk^h/2@Jš#‰Ã"ÀD~‹ ¸^lÀ`]רÈF@"£•2©€Àciâl‘XÃ@Pxêò‰ªÀ[y_¥gà@ƒÃ޾C@E5X /êJ@2Sk7öo@J™þKŸÀD~‹©¿KÀ`]×™œqÀ@"£¯X2ÀciâmYÑ÷@Px怱…À[y_™FE=@Q ÀgŸ%É™Q@ijôt¡ê@aˆ öÑ@^ÜûW>e@`¡âãÎñ„@kê4xΑ,@8LÈÁ2äùÀb— .øÞ@:\fÆê ÀX°&©×2}À@Ã*³ÉßÀNN÷6“–@P $îQeÀCšt~u‘‘À>ƒÃ޾C@E5X /êJ@2Sk7öo@J™þKŸÀD~‹©¿KÀ`]×™œqÀ@"£¯X2ÀciâmYÑ÷@Px怱…À[y_™FE=@Q ÀgŸ%É™Q@ijôt¡ê@aˆ öÑ@^ÜûW>e@`¡âãÎñ„@kê4xΑ,@8LÈ¿Ïü<Àb— ¢7¼@:\›9”zÀX°&¯Lê—À@Ã*¬ô1cÀNN÷dš%@P #ÐÀCšteÍÿÐÀ>ƒÃâ¾%@E5XFµ³…@2Sk Ë ’@J™ÒàíBÀD~‹!;ðöÀ`]פÔ¯@"£ÌÂöÏÀciân@3@PxáežœÀ[y_‹WÀò@ƒÃÄ×Î @E5X8ÿi¦@2SkƒÁÐ@J™â:ZDÀD~‹ÂpôÀ`]× ÕçH@"£Â0#\Àciâmî%«@Pxã6ÛhÀ[y_M6@ƒÃΫÊT@E5X=?&@2SkXÖ,@J™Ý.ÀÀD~‹:÷´À`]×¢%à|@"£ũ߀Àciân Ÿ@PxâîÀ[y_Ž«ïò@ƒÃÛˆê)@E5XCgzG@2Sk•Iµ@J™Ö”2ÀD~‹ 'ËÀ`]ףݠ3@"£Ê6mÛÀciân,\7@PxáÕÅïÀ[y_Œ‰Çn@ïÀd|ð²Rœ$@Z˜< {U­ÀgŸ%ÊKŽ@ij÷#¶ö@aˆ ý@˜^@^ÜûZjPÌ@`¡âã»XÄ@kê4yÞ‘@8LȿݞÀb— ¢Çâ@:\™LYÏÀX°&¯’À@Ã*­4yyÀNN÷bß*¡@P #EïÀCštfµ×éÀ>ƒÃߨ4²@E5XEKoB@2Sk jhä@J™Ôvs6ÀD~‹ ŹEÀ`]פj‹z@"£Ë«tÀciân7©u@Pxá•¡ÛÀ[y_‹ÚÃ*@ƒÃëëXz@E5XJë Þ@2Sk÷áÚ@J™Î*í-ÀD~‹"›{ËÀ`]צ Çl@"£ÐÒ_ÀciânYH®@PxàÖéÆÀ[y_‰Ñý@Ž@*âÕŒTÖ@N\»ï±’fÀC¿û¦™K!À_…Ѝž%@ ãÍ_òhâÀcZŸwâby@`Öã¬Ì_À4¥¥H®Â@dã€k!'–ÀP #©ÃäÀI‰Ë[¾gÓ@Q&ó@Ò Á@0S=ì+Ëã@Uß¶‡ƒrÉÀePzyì@Z³]ýu»Àg¬#…L>Á@i¤PýÁ¾@a,€5@^²Øië™@`¢°r20H@kÛL´r4@9yæØ–u:ÀaÀ‡í@8ìÙÇQ·ÀW¸™› wÀBó‡œ •ÀKÈ/Ëo@N[{_¬À?kIŸï¨ÀAõ¿vÜ@GÁ°3>‡@)5éBào&@MË7m¦Ä½ÀCÂÒ1[ñ®À_‹ùeK³¹@ ò8êaµhÀc[%±)sD@`t°ñ¯‡À<+[ŸÕÌ:@_Ñÿ³´iÀTùŸr3ùÀIÓúW­ò„@QVæ0­6÷@0EzŽ×Uù@UÏÌ*-Àej0X<Ó@Z·>1ûÀ¼Àg­Z.Ì—»@iªÒvÏÆ@a'ý­©@^­ík$¹\@`¢¾šÿ@kÙ[x™™@:ºÜú]À`õÈAôæ@Aú»ôJÀUª&éìLðÀ;!LÆT?\ÀK[P |˜@PùË ®À7“KO;óXÀAAhø T@H ™…,@*do~ªp@OÕ¤&kàaÀCt‹±˜òÀ_äŽ|m@ Bå5º¾LÀcTdè¨^@aSHÄðÀ8‰×çËÄC@evn?¯ "ÀQe§Úª&uÀIæF‚Ð$¹@Q/gÜòõ@-pnáóËú@V¢‘à?Àehrrû%@Z·שÀ&Àg­Iø•"1@iªqíÅ/‰@`ýÖ=@^«†6ëÅ@`¢ÇV5Fé@kØ5OäÄR@:" ÀÈŒhÀazáqWâÐ@7ˆW+´'eÀVz’-$lÀBª/í›!4ÀJô¥…ïû@MÃÆ¬EyÀ= £Á³p¿ÀBýv8@H•SìTæ@$æ¼Lù´÷@NÌOâ€jNÀC{ n} ÀÀ_&›à-p@ W܆àÓìÀcU)G9³@`G nâ{åÀ=Žy³ÅØ@YôÙn£}ÊÀS´®‹¸æ-ÀJð²cs%@Q¹‰®NëÍ@+Ù,©Ð±p@V„çPÀe¾`ܹ‡K@ZÄšž& ²Àg°Óˆ›î @i¿JCQÂ@`Òp)–@Ä@^ž]íœA@`¢ä_¿ïQ@kÒÔõÚ@9“|WÀaí8Hö@9ÎÔ=OáÀWZy€ÑîÀAZ°[Ù„§ÀLkK¦Åg@O1yiÊÄÀ@r؇?JÛÀA03½m@G’ö_‡@,V·’LT@M̆"óbÀCíh†mñ÷À_×!IUO@!xÇÊÝ®3Àc`h7”}@UaFì·¼ÀXíÝŸÝ1ö@M4Õ]ÎsÀb“t‡ŒàÀI cC¾Ä@QˆÁkn@1ä¯dÒ«@U8r€µ¬Àe,RW8Ö@Z­D…1þÕÀgª(߇‘Ð@iš€ MI„@a,J’ d @^º’¸Õ2@`¢ŽyGõð@kÞR{Íÿv@9 ‡˜¸àìÀb.›ô š@8;™!WÀWÞvx uÀAÛÉÎÛLÀLýVkÄ@NÝcgèƒ6ÀAÃV’UoÌÀ@ç~üC‚@FŠWAÖÑ@-ÔbTàY@L'VÂÍ‹ÀBZðMZËæÀ`Ú G‰B1Àb˜[©ˆÃ:ÀH•O9}ð@PÌùßéÖ@3 Ô ^¯Ž@Tº„5AØÀe®mVZ;@Z§}~—Å´Àg§þ£Ú`i@i22à÷C@a;ªx·Á@^ÀGr^#¶@`¢uF„VÃ@kàxÕÌŒPyQt-gpl-5.5.1/examples/animation/stickman/animations/dancing0000644000076500000240000000445412613140041024353 0ustar philstaff00000000000000ÿÿÿÿ À6Á1÷qÍÀbÄ1e–4À"Yu^?ðÀY€šé ÀGRÉ/zÀE)*g1y@Idä6ŒþÀP"qdå?Ë?É~F‚tA@Hâ|g§ò@Hu¸Úlä¬@CCŒ±c—öÀY”2×svó?øÑk,‚%À_‚¿ µ­@Jm‡@U2sª”ìwÀNIhæ•Ó@`åÞbl•À:»_©†~ÀhÊÛÜÝ6@S:tVQ@Pµoa\@NRX Ó mÀ8¾i44 ×@i>ª:NóÀ=ÿ©¥N§@rÀiÌ ²@?¢¯î²z£@f· ‡ö-@=®š@ß_ž£@`eTSÄ8q@@ ³„ŸÒœÀPö,•½Ÿ@O;°Q‘–?õ¶»L‰û§@R@MË@®À>EšvVû¬@fÃKœâË À=sµ;!2¶@q£—¼yß„@<Õø'bd@hkm i~@=µ7v±î@rw¦¦!Î_¿ãTùÑû–Àb9]H@baÀ¤@þ#AfÀWþžzZŒeÀQS‡/˜Ÿ/ÀP±§¿W@8M§9šÀ?•mjröMÀTE‹/WŽ'@AÑS«n÷ÀA$GÅ0›@J ª„ü Àa&Ú®Z¾ ÀG‡­1æVIÀeñ«¢qzÀUïŸ#&¿ý@D¤4I™´@B­Å9üÃÉ@TwcUÝU?Ò;{"jÖÀXÏÁµT@KÂbc«bÀ@ÛúF"‡‰@T dòš€*ÀDë)š/”I@dà65L~J;{™ý@p§Ê ªHÙ@9F¥2Fü@gÔÀl7ª@=“à0Õ æ@r+.Ú‘Ò¿×ç¡—9ÀÀb¼Õ¤8+3À+$¢÷¼:ÀYk9H-ÀPü"]˜ØàÀL;€F¯Ü@@?£á7¼|ÀG§3°Ö8ÀJŸËáH@F³¼ÆÎþÀNÇvÇ@Hýõ3~KÀ`bÐ7Ð>%À8¥úSüz}ÀdRŒŽÞðmÀQµ{ðã…!@RaŽ;ëÑÞ@#TrM~f¶@ZÆ0xe^ÀA„5­È„ÀPá<ïA–@QXA'§"@¤‹¥L@Ròâ¾”À:­ÛöàÍ)@gž¨n¤CÀ=¤ÊKF@r Î Ñ@=í¹{õŠ@hׯ֝1P@=´¦2³r @r­â=èØÀ4÷Jè17Àcç<×RnÀ2‡Î"TÀY•ŠÃɸÀQ5Éܰ߷ÀJSºªYém@?'ã!w¼ÀJG¦<'ÑÀF<('}r{@G¿Ì²›u÷@¾}E!‰@Gé+õi©zÀ^úäRâî=À ŸÃÅ*Àc-gÔhÙÕÀKæ÷ÆÓ²@VšðŠaÀ*ÞÜΙ†Â@]5â ‰ºÀOX•…„ÔÀKQBú+¥ï@R„4­6ß@.ºv¥±¸E@R9Iª0>À7¹o‡ýÐw@h>µ¹èÍŠÀ=ß/@zÈÐ@r^TÐ¥4D@=ýáRŠ@h¯ˆÿØü0@=´–áÉG@r™ÃíÀDŰÿøÀb×ÌÛQ7éÀ8p&?ÝÑÀYÓÊÑmfÀP›_ßT˜‚ÀG58Þ>YÑ@@:KÞ±^ÀN¨ãsÂÀ:ͤ<œ£J@H^éÈAJ@6£g\ßr@D¥Ô0»¾ÀXÈ¡R)¤@0Gáª1d>Àc]²éÌzâ@)é—[pª@XP oïÀ@€õ_U5Q@`ê&ÌÃbÀR|‡”TÍÀ@{™šX}N@R¼ùGtœÓ@B TK㇠@P!GPX%À5Ø EŒÝ@hûtBLPÀ>MŸ ®:Ë@r¹ÿ­’Z@=kø:þ[Ì@g·v ƒ+@=¯.$¥@r¹JƒZ6ÀV!{-'tÀ]÷r—ëÀEjÎKJYÀXk˜ÊÎ[ÀPy!í À>Õò\@ @8Ô,y{·ÀR§Þf°ªB?×µâ{‰¤Ê@Hƒ[3@F©Bp‚òü@::B¹…7)ÀTâÅ'Qj@BÑ{*¡Àa ‹#zÀ@3GšI‚æ@W¬ë›y0úÀSå>@`C«Q¿‡ïÀ]ã\ió-‰@€t`¹ê@R¾t -@PP›â¥ºN@F)’ØëQ²À2g¹_Ë™@hÔÌŸc/!À>ygC[@r¡¯-†è@C8T9‰_ö@dÚRè¾½@>ªeÚ³ÙÏ@pªRô™ÿ PyQt-gpl-5.5.1/examples/animation/stickman/animations/dead0000644000076500000240000000041412613140041023635 0ustar philstaff00000000000000ÿÿÿÿÀruмJ~;@n¨:vÌJOÀnÄÛŠ@m‘•J¯qÀiLþPlwn@rAõ)£DÊÀgÑ»kfôü@h|A«'ðÀY AðÖ)I@qrhx``„ÀWŽK6^‹o@l° ÎÅ"Àpõ˧x•@qDNzP…ŸÀtrfZ®@qñäö~Àd.W[ãol@pS^[jzÀ`-É5&¯Ð@rñ„¶ðØ®ÀS !-d[³@r@ —¿UÀQ ÏH<@kѨ*ßb@Dw{ì@oüeii@a!ò2¡ØÙ@qA%DШ@LˆçN»ë¸@l{ä(z @b‡Œ«µ•ñ@pÔKLƒPyQt-gpl-5.5.1/examples/animation/stickman/animations/jumping0000644000076500000240000000243412613140041024415 0ustar philstaff00000000000000ÿÿÿÿÀbÀÀYÀIÀI@IÀIÀ9@I@9@IÀYÀ_@@I@Y@_@@IÀA€@RÀ@A€@RÀÀ9@iÀ>@rÀ@9@i@>@rÀÀ<‰xïdAùÀfÙèá}À1ã$n5KÀ`¾¨Ë£˜èÀK&œÝ¶ÎÀRUó^šÌ@E\ú›}ÀXcBMȪÀ_Á²Òm@1÷/Ù@l@EVQì®}î@(¾:.j6ÀUŽ?†6DÀ$}âåV]ŽÀ]8å°cV2@B?+±3æ«@G'u²ÿáÀe€iÉEä@F¥‹:l§¨Àl¦sÿ¼À#»µµQ}@F$'Þ7®e@M4Ê €ú@;d½!_€À7éV—Y @e/†´MÀ<µµÅZÕ0@pÍÀ;ïÖ@CÎ834Ý@bìºqb@?^r%@oe:MíÀÙÀ<‰¸§ë©ÀfÚ S1À1áŒðºßuÀ`¾Ñ¦dC‚ÀK&ˆ’Ê¿ÀRV”ª0]r@E]RmWœÙÀXbÌ`tþTÀi¤ _Ï@1 ÐÐbí@ETÃEîÒÌ@#Ó8Öi(ÀUŽqn1À$‚ÛyÃnÀ]8ŠÇÊt@B>P3@G'U²j¥-Àe>¨@F¥ýfg#ÀlΪBFÀ#9Œ•¥@F&àµ4^^@M4­IA^@;_ù(K¦bÀ7êl“ü¦³@eì°{¨üÀ<µþÒ»óK@pÎm7^}@CÎÌG&Â@bës€:‹¯@?^â·®_¶@od‘,&Ê!À80kºÜÀdë¾ô™ò›À£0Û¶À^JŸ€ï¸ÀHöŒ}é½òÀP¨~&[m@HÏzY¡$ÅÀS 5 ´»À/ j5—Ó~@>ˆ {Á´/@A TQ.~@9Éž÷²ØÆÀUþÆ#°O%À`=f’çÀ]ºÎ^*T%@CÄ$Ob@X ÎKÙ"áÀ6íÞ´@,s@ZÑNïÄk@?ܼ¥˜À7ê5¦fÿ@L.-(†@GI£Õâð@HÝoöðhÀ8Á2)dû[@f·êa^±WÀ=ELïoP@qœS€Kd @BŒ˜U6H*@eصyöƒ‰@=¦ÃTI+˜@q)ê~]Ã@1Â`ˆ‹NÀh<ìßÉ\/@ZƒÊÉÅÀb'6´›R`ÀH`£Æt´ÀY9CÒù{K@IU¦;‹±ÉÀVˆ»3ÜkÀAS³œ…ÿ%?óp„íé›@.¾°HRy@_‰Û[EÀÀPÀ΢ÃåDÀe&œ@í ÀT¢rÞ/HÉÀkÝΞV³@UÜ6i´niÀ=½/ðNq×@Z9 à¹!Ç@7^çæFÀG¤t¸¯·î@8þª-—~@6O˜É8}@@C f0RÜÀ?Óðˇ8@b®SÞŒÀ=%„’ÒE@o0¼X¼ß@AD¦À )Ø@cªjz Ù4@>«˜ ÙBW@pæ/ PyQt-gpl-5.5.1/examples/animation/stickman/stickman.py0000755000076500000240000004627612613140041023061 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import (pyqtProperty, pyqtSignal, QDataStream, QDateTime, QEvent, QEventTransition, QFile, QIODevice, QParallelAnimationGroup, QPointF, QPropertyAnimation, qrand, QRectF, QSignalTransition, qsrand, QState, QStateMachine, Qt, QTimer) from PyQt5.QtGui import QColor, QPen, QPainter, QPainterPath, QPixmap from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsObject, QGraphicsScene, QGraphicsTextItem, QGraphicsView) import stickman_rc class Node(QGraphicsObject): positionChanged = pyqtSignal() def __init__(self, pos, parent=None): super(Node, self).__init__(parent) self.m_dragging = False self.setPos(pos) self.setFlag(QGraphicsItem.ItemSendsGeometryChanges) def boundingRect(self): return QRectF(-6.0, -6.0, 12.0, 12.0) def paint(self, painter, option, widget): painter.setPen(Qt.white) painter.drawEllipse(QPointF(0.0, 0.0), 5.0, 5.0) def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionChange: self.positionChanged.emit() return super(Node, self).itemChange(change, value) def mousePressEvent(self, event): self.m_dragging = True def mouseMoveEvent(self, event): if self.m_dragging: self.setPos(self.mapToParent(event.pos())) def mouseReleaseEvent(self, event): self.m_dragging = False Coords = ( # Head: 0 (0.0, -150.0), # Body pentagon, top->bottom, left->right: 1 - 5 (0.0, -100.0), (-50.0, -50.0), (50.0, -50.0), (-25.0, 50.0), (25.0, 50.0), # Right arm: 6 - 7 (-100.0, 0.0), (-125.0, 50.0), # Left arm: 8 - 9 (100.0, 0.0), (125.0, 50.0), # Lower body: 10 - 11 (-35.0, 75.0), (35.0, 75.0), # Right leg: 12 - 13 (-25.0, 200.0), (-30.0, 300.0), # Left leg: 14 - 15 (25.0, 200.0), (30.0, 300.0)) Bones = ( # Neck. (0, 1), # Body. (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5), # Right arm. (2, 6), (6, 7), # Left arm. (3, 8), (8, 9), # Lower body. (4, 10), (4, 11), (5, 10), (5, 11), (10, 11), # Right leg. (10, 12), (12, 13), # Left leg. (11, 14), (14, 15)) class StickMan(QGraphicsObject): def __init__(self): super(StickMan, self).__init__() self.m_sticks = True self.m_isDead = False self.m_pixmap = QPixmap('images/head.png') self.m_penColor = QColor(Qt.white) self.m_fillColor = QColor(Qt.black) # Set up start position of limbs. self.m_nodes = [] for x, y in Coords: node = Node(QPointF(x, y), self) node.positionChanged.connect(self.childPositionChanged) self.m_nodes.append(node) self.m_perfectBoneLengths = [] for n1, n2 in Bones: node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] dist = node1.pos() - node2.pos() self.m_perfectBoneLengths.append(math.hypot(dist.x(), dist.y())) self.startTimer(10) def childPositionChanged(self): self.prepareGeometryChange() def setDrawSticks(self, on): self.m_sticks = on for node in self.m_nodes: node.setVisible(on) def drawSticks(self): return self.m_sticks def boundingRect(self): # Account for head radius of 50.0 plus pen which is 5.0. return self.childrenBoundingRect().adjusted(-55.0, -55.0, 55.0, 55.0) def nodeCount(self): return len(self.m_nodes) def node(self, idx): if idx >= 0 and idx < len(self.m_nodes): return self.m_nodes[idx] return None def timerEvent(self, e): self.update() def stabilize(self): threshold = 0.001 for i, (n1, n2) in enumerate(Bones): node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] pos1 = node1.pos() pos2 = node2.pos() dist = pos1 - pos2 length = math.hypot(dist.x(), dist.y()) diff = (length - self.m_perfectBoneLengths[i]) / length p = dist * (0.5 * diff) if p.x() > threshold and p.y() > threshold: pos1 -= p pos2 += p node1.setPos(pos1) node2.setPos(pos2) def posFor(self, idx): return self.m_nodes[idx].pos() @pyqtProperty(QColor) def penColor(self): return QColor(self.m_penColor) @penColor.setter def penColor(self, color): self.m_penColor = QColor(color) @pyqtProperty(QColor) def fillColor(self): return QColor(self.m_fillColor) @fillColor.setter def fillColor(self, color): self.m_fillColor = QColor(color) @pyqtProperty(bool) def isDead(self): return self.m_isDead @isDead.setter def isDead(self, isDead): self.m_isDead = isDead def paint(self, painter, option, widget): self.stabilize() if self.m_sticks: painter.setPen(Qt.white) for n1, n2 in Bones: node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] painter.drawLine(node1.pos(), node2.pos()) else: # First bone is neck and will be used for head. path = QPainterPath() path.moveTo(self.posFor(0)) path.lineTo(self.posFor(1)) # Right arm. path.lineTo(self.posFor(2)) path.lineTo(self.posFor(6)) path.lineTo(self.posFor(7)) # Left arm. path.moveTo(self.posFor(3)) path.lineTo(self.posFor(8)) path.lineTo(self.posFor(9)) # Body. path.moveTo(self.posFor(2)) path.lineTo(self.posFor(4)) path.lineTo(self.posFor(10)) path.lineTo(self.posFor(11)) path.lineTo(self.posFor(5)) path.lineTo(self.posFor(3)) path.lineTo(self.posFor(1)) # Right leg. path.moveTo(self.posFor(10)) path.lineTo(self.posFor(12)) path.lineTo(self.posFor(13)) # Left leg. path.moveTo(self.posFor(11)) path.lineTo(self.posFor(14)) path.lineTo(self.posFor(15)) painter.setPen(QPen(self.m_penColor, 5.0, Qt.SolidLine, Qt.RoundCap)) painter.drawPath(path) n1, n2 = Bones[0] node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] dist = node2.pos() - node1.pos() sinAngle = dist.x() / math.hypot(dist.x(), dist.y()) angle = math.degrees(math.asin(sinAngle)) headPos = node1.pos() painter.translate(headPos) painter.rotate(-angle) painter.setBrush(self.m_fillColor) painter.drawEllipse(QPointF(0, 0), 50.0, 50.0) painter.setBrush(self.m_penColor) painter.setPen(QPen(self.m_penColor, 2.5, Qt.SolidLine, Qt.RoundCap)) # Eyes. if self.m_isDead: painter.drawLine(-30.0, -30.0, -20.0, -20.0) painter.drawLine(-20.0, -30.0, -30.0, -20.0) painter.drawLine(20.0, -30.0, 30.0, -20.0) painter.drawLine(30.0, -30.0, 20.0, -20.0) else: painter.drawChord(QRectF(-30.0, -30.0, 25.0, 70.0), 30.0 * 16, 120.0 * 16) painter.drawChord(QRectF(5.0, -30.0, 25.0, 70.0), 30.0 * 16, 120.0 * 16) # Mouth. if self.m_isDead: painter.drawLine(-28.0, 2.0, 29.0, 2.0) else: painter.setBrush(QColor(128, 0, 64 )) painter.drawChord(QRectF(-28.0, 2.0 - 55.0 / 2.0, 57.0, 55.0), 0.0, -180.0 * 16) # Pupils. if not self.m_isDead: painter.setPen(QPen(self.m_fillColor, 1.0, Qt.SolidLine, Qt.RoundCap)) painter.setBrush(self.m_fillColor) painter.drawEllipse(QPointF(-12.0, -25.0), 5.0, 5.0) painter.drawEllipse(QPointF(22.0, -25.0), 5.0, 5.0) class GraphicsView(QGraphicsView): keyPressed = pyqtSignal(int) def keyPressEvent(self, e): if e.key() == Qt.Key_Escape: self.close() self.keyPressed.emit(Qt.Key(e.key())) class Frame(object): def __init__(self): self.m_nodePositions = [] def nodeCount(self): return len(self.m_nodePositions) def setNodeCount(self, nodeCount): while nodeCount > len(self.m_nodePositions): self.m_nodePositions.append(QPointF()) while nodeCount < len(self.m_nodePositions): self.m_nodePositions.pop() def nodePos(self, idx): return QPointF(self.m_nodePositions[idx]) def setNodePos(self, idx, pos): self.m_nodePositions[idx] = QPointF(pos) class Animation(object): def __init__(self): self.m_currentFrame = 0 self.m_frames = [Frame()] self.m_name = '' def setTotalFrames(self, totalFrames): while len(self.m_frames) < totalFrames: self.m_frames.append(Frame()) while totalFrames < len(self.m_frames): self.m_frames.pop() def totalFrames(self): return len(self.m_frames) def setCurrentFrame(self, currentFrame): self.m_currentFrame = max(min(currentFrame, self.totalFrames() - 1), 0) def currentFrame(self): return self.m_currentFrame def setNodeCount(self, nodeCount): frame = self.m_frames[self.m_currentFrame] frame.setNodeCount(nodeCount) def nodeCount(self): frame = self.m_frames[self.m_currentFrame] return frame.nodeCount() def setNodePos(self, idx, pos): frame = self.m_frames[self.m_currentFrame] frame.setNodePos(idx, pos) def nodePos(self, idx): frame = self.m_frames[self.m_currentFrame] return frame.nodePos(idx) def name(self): return self.m_name def setName(self, name): self.m_name = name def save(self, device): stream = QDataStream(device) stream.writeQString(self.m_name) stream.writeInt(len(self.m_frames)) for frame in self.m_frames: stream.writeInt(frame.nodeCount()) for i in range(frame.nodeCount()): stream << frame.nodePos(i) def load(self, device): self.m_frames = [] stream = QDataStream(device) self.m_name = stream.readQString() frameCount = stream.readInt() for i in range(frameCount): nodeCount = stream.readInt() frame = Frame() frame.setNodeCount(nodeCount) for j in range(nodeCount): pos = QPointF() stream >> pos frame.setNodePos(j, pos) self.m_frames.append(frame) class KeyPressTransition(QSignalTransition): def __init__(self, receiver, key, target=None): super(KeyPressTransition, self).__init__(receiver.keyPressed) self.m_key = key if target is not None: self.setTargetState(target) def eventTest(self, e): if super(KeyPressTransition, self).eventTest(e): key = e.arguments()[0] return key == self.m_key return False class LightningStrikesTransition(QEventTransition): def __init__(self, target): super(LightningStrikesTransition, self).__init__() self.setEventSource(self) self.setEventType(QEvent.Timer) self.setTargetState(target) qsrand(QDateTime.currentDateTime().toTime_t()) self.startTimer(1000) def eventTest(self, e): return (super(LightningStrikesTransition, self).eventTest(e) and (qrand() % 50) == 0) class LifeCycle(object): def __init__(self, stickMan, keyReceiver): self.m_stickMan = stickMan self.m_keyReceiver = keyReceiver # Create animation group to be used for all transitions. self.m_animationGroup = QParallelAnimationGroup() stickManNodeCount = self.m_stickMan.nodeCount() self._pas = [] for i in range(stickManNodeCount): pa = QPropertyAnimation(self.m_stickMan.node(i), b'pos') self._pas.append(pa) self.m_animationGroup.addAnimation(pa) # Set up intial state graph. self.m_machine = QStateMachine() self.m_machine.addDefaultAnimation(self.m_animationGroup) self.m_alive = QState(self.m_machine) self.m_alive.setObjectName('alive') # Make it blink when lightning strikes before entering dead animation. lightningBlink = QState(self.m_machine) lightningBlink.assignProperty(self.m_stickMan.scene(), 'backgroundBrush', Qt.white) lightningBlink.assignProperty(self.m_stickMan, 'penColor', Qt.black) lightningBlink.assignProperty(self.m_stickMan, 'fillColor', Qt.white) lightningBlink.assignProperty(self.m_stickMan, 'isDead', True) timer = QTimer(lightningBlink) timer.setSingleShot(True) timer.setInterval(100) lightningBlink.entered.connect(timer.start) lightningBlink.exited.connect(timer.stop) self.m_dead = QState(self.m_machine) self.m_dead.assignProperty(self.m_stickMan.scene(), 'backgroundBrush', Qt.black) self.m_dead.assignProperty(self.m_stickMan, 'penColor', Qt.white) self.m_dead.assignProperty(self.m_stickMan, 'fillColor', Qt.black) self.m_dead.setObjectName('dead') # Idle state (sets no properties). self.m_idle = QState(self.m_alive) self.m_idle.setObjectName('idle') self.m_alive.setInitialState(self.m_idle) # Lightning strikes at random. self.m_alive.addTransition(LightningStrikesTransition(lightningBlink)) lightningBlink.addTransition(timer.timeout, self.m_dead) self.m_machine.setInitialState(self.m_alive) def setDeathAnimation(self, fileName): deathAnimation = self.makeState(self.m_dead, fileName) self.m_dead.setInitialState(deathAnimation) def start(self): self.m_machine.start() def addActivity(self, fileName, key): state = self.makeState(self.m_alive, fileName) self.m_alive.addTransition(KeyPressTransition(self.m_keyReceiver, key, state)) def makeState(self, parentState, animationFileName): topLevel = QState(parentState) animation = Animation() file = QFile(animationFileName) if file.open(QIODevice.ReadOnly): animation.load(file) frameCount = animation.totalFrames() previousState = None for i in range(frameCount): animation.setCurrentFrame(i) frameState = QState(topLevel) nodeCount = animation.nodeCount() for j in range(nodeCount): frameState.assignProperty(self.m_stickMan.node(j), 'pos', animation.nodePos(j)) frameState.setObjectName('frame %d' % i) if previousState is None: topLevel.setInitialState(frameState) else: previousState.addTransition(previousState.propertiesAssigned, frameState) previousState = frameState previousState.addTransition(previousState.propertiesAssigned, topLevel.initialState()) return topLevel if __name__ == '__main__': import sys app = QApplication(sys.argv) stickMan = StickMan() stickMan.setDrawSticks(False) textItem = QGraphicsTextItem() textItem.setHtml("Stickman" "

" "Tell the stickman what to do!" "

" "

" "

  • Press J to make the stickman jump.
  • " "
  • Press D to make the stickman dance.
  • " "
  • Press C to make him chill out.
  • " "
  • When you are done, press Escape.
  • " "

    " "

    If he is unlucky, the stickman will get struck by lightning, and never jump, dance or chill out again." "

    ") w = textItem.boundingRect().width() stickManBoundingRect = stickMan.mapToScene(stickMan.boundingRect()).boundingRect() textItem.setPos(-w / 2.0, stickManBoundingRect.bottom() + 25.0) scene = QGraphicsScene() scene.addItem(stickMan) scene.addItem(textItem) scene.setBackgroundBrush(Qt.black) view = GraphicsView() view.setRenderHints(QPainter.Antialiasing) view.setTransformationAnchor(QGraphicsView.NoAnchor) view.setScene(scene) view.show() view.setFocus() # Make enough room in the scene for stickman to jump and die. sceneRect = scene.sceneRect() view.resize(sceneRect.width() + 100, sceneRect.height() + 100) view.setSceneRect(sceneRect) cycle = LifeCycle(stickMan, view) cycle.setDeathAnimation(':/animations/dead') cycle.addActivity(':/animations/jumping', Qt.Key_J) cycle.addActivity(':/animations/dancing', Qt.Key_D) cycle.addActivity(':/animations/chilling', Qt.Key_C) cycle.start() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/animation/stickman/stickman.qrc0000644000076500000240000000031712613140041023175 0ustar philstaff00000000000000 animations/chilling animations/dancing animations/dead animations/jumping PyQt-gpl-5.5.1/examples/animation/stickman/stickman_rc.py0000644000076500000240000012666712613140041023545 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 17:29:21 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x19\x6c\ \xff\ \xff\xff\xff\x00\x00\x00\x19\x00\x00\x00\x10\x40\x38\x4c\xca\x3f\ \x4a\x24\xde\xc0\x62\x97\x1b\x32\x01\x5d\xf3\x40\x3a\x05\x25\x01\ \xce\x14\x45\xc0\x58\xb0\x20\xdd\x20\x86\x54\xc0\x40\xc3\x31\xca\ \x2d\xe7\xe8\xc0\x4e\x4e\xc6\x85\x2f\x62\xd8\x40\x50\x0a\x03\xb2\ \x01\xc4\x5d\xc0\x43\x9a\x8e\xca\x3e\xac\x2f\xc0\x3e\x83\x6a\xb1\ \x60\x3b\xb1\x40\x45\x35\x2f\x6e\x30\x18\x5c\x40\x32\x53\x99\xcb\ \xc5\x8d\xfc\x40\x4a\x8f\xc7\x9e\xd3\xec\x98\xc0\x44\x7e\x7d\xc3\ \xb1\x2d\x7e\xc0\x60\x5d\xcb\xb7\xd6\xde\xd5\x40\x22\xa2\xe4\x37\ \x5a\x12\x12\xc0\x63\x69\xe1\x79\x61\x98\x47\x40\x50\x78\x0c\x5a\ \xfa\x18\xc4\xc0\x5b\x79\x6e\x7b\xba\xd3\x77\x40\x3c\x78\x0c\xfd\ \x1b\x24\x7a\xc0\x62\xee\x0e\xa0\x41\x5e\x50\xc0\x46\xd1\x51\x1c\ \xc7\x57\xf6\x40\x50\x2c\x59\x00\x05\x07\x96\x40\x36\xbd\x5a\xba\ \x55\x33\x3c\x40\x53\xeb\xd5\xdc\x95\x84\x02\xc0\x64\x7c\xe6\xa7\ \x82\xd4\x73\x40\x5a\x98\x3a\x9d\x99\xd2\x25\xc0\x67\x9f\x24\xfc\ \xa8\x8b\x88\x40\x69\x6a\x0c\xdc\x04\x07\xad\x40\x61\x88\x18\xa6\ \x50\x33\xdf\x40\x5e\xdc\xf7\xac\x43\x1d\x93\x40\x60\xa1\xe2\xfa\ \x78\x8e\x27\x40\x6b\xea\x33\x3e\x3c\x8e\x55\x00\x00\x00\x10\x40\ \x38\x4c\xcb\x75\x7c\x04\xe4\xc0\x62\x97\x16\xcb\x46\x05\x9e\x40\ \x3a\x04\xf9\x90\xa0\xa1\x90\xc0\x58\xb0\x1c\x43\xe6\x16\xc6\xc0\ \x40\xc3\x37\x29\xb0\xad\x71\xc0\x4e\x4e\xa0\x29\xf8\xaf\x63\x40\ \x50\x0a\x04\xf7\x7a\x75\xf9\xc0\x43\x9a\xa3\xc7\xff\x8e\xe7\xc0\ \x3e\x83\x24\xc7\x88\x06\x31\x40\x45\x35\x0f\x82\x42\x98\x23\x40\ \x32\x53\xbe\x35\xfa\x10\xf1\x40\x4a\x8f\xeb\x86\x7e\xa9\xe7\xc0\ \x44\x7e\x73\x44\xb1\xe1\x51\xc0\x60\x5d\xc2\x5a\x55\xc7\x63\x40\ \x22\xa2\xcb\x69\x59\x50\x4d\xc0\x63\x69\xe0\xb9\x0f\x32\xde\x40\ \x50\x78\x10\xb9\x1c\xd7\xaa\xc0\x5b\x79\x7a\x66\xb3\x79\x6b\x40\ \x3c\x77\xfd\x1b\x3d\x06\x10\xc0\x62\xee\x10\xd4\xaa\xf0\xf0\xc0\ \x46\xd1\x4e\xde\x36\xe2\x04\x40\x50\x2c\x31\x73\xb4\xd5\x4d\x40\ \x36\xbd\x01\xb5\xb5\x00\xbf\x40\x53\xeb\xec\x32\x09\x0f\xf3\xc0\ \x64\x7c\xde\xd4\xf9\xea\x5a\x40\x5a\x98\x39\x7f\xc7\xf1\x43\xc0\ \x67\x9f\x24\x5c\x76\xd5\xf3\x40\x69\x6a\x0a\x70\x9e\x4e\xa4\x40\ \x61\x88\x12\x1f\x05\xdd\x03\x40\x5e\xdc\xf4\xca\xc1\xac\x79\x40\ \x60\xa1\xe3\x0c\x44\xff\x6e\x40\x6b\xea\x32\x47\x27\x58\xb5\x00\ \x00\x00\x10\x40\x38\x4c\xcb\x75\x7c\x04\xe4\xc0\x62\x97\x16\xcb\ \x46\x05\x9e\x40\x3a\x04\xf9\x90\xa0\xa1\x90\xc0\x58\xb0\x1c\x43\ \xe6\x16\xc6\xc0\x40\xc3\x37\x29\xb0\xad\x71\xc0\x4e\x4e\xa0\x29\ \xf8\xaf\x63\x40\x50\x0a\x04\xf7\x7a\x75\xf9\xc0\x43\x9a\xa3\xc7\ \xff\x8e\xe7\xc0\x3e\x83\x24\xc7\x88\x06\x31\x40\x45\x35\x0f\x82\ \x42\x98\x23\x40\x32\x53\xbe\x35\xfa\x10\xf1\x40\x4a\x8f\xeb\x86\ \x7e\xa9\xe7\xc0\x44\x7e\x73\x44\xb1\xe1\x51\xc0\x60\x5d\xc2\x5a\ \x55\xc7\x63\x40\x22\xa2\xcb\x69\x59\x50\x4d\xc0\x63\x69\xe0\xb9\ \x0f\x32\xde\x40\x50\x78\x10\xb9\x1c\xd7\xaa\xc0\x5b\x79\x7a\x66\ \xb3\x79\x6b\x40\x3c\x77\xfd\x1b\x3d\x06\x10\xc0\x62\xee\x10\xd4\ \xaa\xf0\xf0\xc0\x46\xd1\x4e\xde\x36\xe2\x04\x40\x50\x2c\x31\x73\ \xb4\xd5\x4d\x40\x36\xbd\x01\xb5\xb5\x00\xbf\x40\x53\xeb\xec\x32\ \x09\x0f\xf3\xc0\x64\x7c\xde\xd4\xf9\xea\x5a\x40\x5a\x98\x39\x7f\ \xc7\xf1\x43\xc0\x67\x9f\x24\x5c\x76\xd5\xf3\x40\x69\x6a\x0a\x70\ \x9e\x4e\xa4\x40\x61\x88\x12\x1f\x05\xdd\x03\x40\x5e\xdc\xf4\xca\ \xc1\xac\x79\x40\x60\xa1\xe3\x0c\x44\xff\x6e\x40\x6b\xea\x32\x47\ \x27\x58\xb5\x00\x00\x00\x10\x40\x38\x4c\xc9\x02\x38\xef\xcd\xc0\ \x62\x97\x1f\xb1\x2b\xf9\x2a\x40\x3a\x05\x52\xd2\x95\xd7\xab\xc0\ \x58\xb0\x25\xaa\x53\xdb\xfb\xc0\x40\xc3\x2b\xf2\x52\x75\x9c\xc0\ \x4e\x4e\xee\xcf\x9b\x90\x20\x40\x50\x0a\x02\x68\x2b\x0a\x79\xc0\ \x43\x9a\x79\x01\x1a\xe6\xb9\xc0\x3e\x83\xb4\x36\x4e\x91\x1d\x40\ \x45\x35\x51\x17\x06\xbb\x13\x40\x32\x53\x73\x48\x82\xb8\xb3\x40\ \x4a\x8f\xa1\xde\xcc\x91\x1f\xc0\x44\x7e\x88\xc8\x99\xcc\xe3\xc0\ \x60\x5d\xd5\x8c\xe2\xd4\xd6\x40\x22\xa2\xfe\x41\x73\x93\xb3\xc0\ \x63\x69\xe2\x43\x44\x69\xd7\x40\x50\x78\x07\xd5\xb0\x97\xb1\xc0\ \x5b\x79\x62\x25\xed\x42\x8d\x40\x3c\x78\x1d\x6d\x64\xc2\xa2\xc0\ \x62\xee\x0c\x58\x0f\x63\xac\xc0\x46\xd1\x53\xa5\xee\xcf\x4a\x40\ \x50\x2c\x82\x94\x9a\xd5\x79\x40\x36\xbd\xb8\x76\x84\x73\x91\x40\ \x53\xeb\xbe\x59\x7d\x1d\xee\xc0\x64\x7c\xee\xed\xf6\x5d\x09\x40\ \x5a\x98\x3b\xcb\xed\xe6\x6c\xc0\x67\x9f\x25\xa6\x1c\x6e\xe9\x40\ \x69\x6a\x0f\x6b\x3b\xad\xe5\x40\x61\x88\x1f\x86\x72\xb7\xce\x40\ \x5e\xdc\xfa\xb5\x02\x69\xbf\x40\x60\xa1\xe2\xe7\xb9\x5c\x6a\x40\ \x6b\xea\x34\x42\x75\x16\xa6\x00\x00\x00\x10\x40\x38\x4c\xc8\xf1\ \x73\x46\x04\xc0\x62\x97\x1f\xee\x0c\xf5\x37\x40\x3a\x05\x55\x49\ \x9a\x94\xdf\xc0\x58\xb0\x25\xec\x1f\xd6\x66\xc0\x40\xc3\x2b\xa0\ \x8b\xcc\x68\xc0\x4e\x4e\xf0\xf9\x4c\x7d\xc5\x40\x50\x0a\x02\x56\ \xcf\x1b\x74\xc0\x43\x9a\x77\xd7\x9d\x67\xb9\xc0\x3e\x83\xb8\x29\ \x68\x18\xac\x40\x45\x35\x52\xe6\x88\x0c\x08\x40\x32\x53\x71\x35\ \x56\x27\xbe\x40\x4a\x8f\x9f\xd7\xb3\x3a\x64\xc0\x44\x7e\x89\x5f\ \xfb\xd6\xa6\xc0\x60\x5d\xd6\x13\xf6\xcd\x94\x40\x22\xa2\xff\xa7\ \x2c\xa7\x01\xc0\x63\x69\xe2\x4e\x19\xcc\x87\x40\x50\x78\x07\x98\ \x0d\x09\xcb\xc0\x5b\x79\x61\x7d\xbc\xc0\x33\x40\x3c\x78\x1e\x4d\ \x88\xf4\x35\xc0\x62\xee\x0c\x38\xf1\xc4\xe8\xc0\x46\xd1\x53\xca\ \x0b\x08\xfb\x40\x50\x2c\x84\xd0\x5d\x55\x8c\x40\x36\xbd\xbd\x80\ \x5a\xad\x4a\x40\x53\xeb\xbd\x15\xf5\x07\xab\xc0\x64\x7c\xef\x60\ \x1c\x2f\x98\x40\x5a\x98\x3b\xdc\x37\xef\xe9\xc0\x67\x9f\x25\xaf\ \x3d\xbf\xd4\x40\x69\x6a\x0f\x8e\x89\x77\x9f\x40\x61\x88\x1f\xe5\ \x0f\x7e\xd1\x40\x5e\xdc\xfa\xde\xc3\x4f\x44\x40\x60\xa1\xe2\xe6\ \xb7\x5f\xeb\x40\x6b\xea\x34\x50\x71\xf2\x5e\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xe4\xe9\x4a\xe6\xc0\x62\x97\x20\x1b\x90\x2c\x4f\x40\ \x3a\x05\x57\x22\x0c\x24\x7d\xc0\x58\xb0\x26\x1d\x5d\x86\x5d\xc0\ \x40\xc3\x2b\x63\x3b\xcf\x8c\xc0\x4e\x4e\xf2\x97\xc3\x66\xc7\x40\ \x50\x0a\x02\x49\xd6\x8c\x4d\xc0\x43\x9a\x76\xf9\x0d\x28\xdf\xc0\ \x3e\x83\xbb\x1e\x53\x10\x07\x40\x45\x35\x54\x41\x8c\xf4\x10\x40\ \x32\x53\x6f\xa7\x9a\x5e\xd5\x40\x4a\x8f\x9e\x53\x1a\xe6\x20\xc0\ \x44\x7e\x89\xd1\x4c\x49\xec\xc0\x60\x5d\xd6\x79\x12\xe1\x41\x40\ \x22\xa3\x00\xb2\xf0\x65\xf7\xc0\x63\x69\xe2\x56\x35\xbe\x3d\x40\ \x50\x78\x07\x69\xf1\x50\x4e\xc0\x5b\x79\x60\xff\xec\xcb\x67\x40\ \x3c\x78\x1e\xf5\x33\x9c\xb3\xc0\x62\xee\x0c\x21\xab\x29\xe4\xc0\ \x46\xd1\x53\xe5\x27\x99\x97\x40\x50\x2c\x86\x7c\x61\xad\xa6\x40\ \x36\xbd\xc1\x45\xf8\xa0\x3f\x40\x53\xeb\xbc\x23\xbf\xbf\x32\xc0\ \x64\x7c\xef\xb5\x95\x62\x2d\x40\x5a\x98\x3b\xe8\x6a\x6d\xa5\xc0\ \x67\x9f\x25\xb6\x13\xea\x8f\x40\x69\x6a\x0f\xa8\xf8\xea\x0c\x40\ \x61\x88\x20\x2b\xe3\xfb\xb4\x40\x5e\xdc\xfa\xfe\x05\x65\x16\x40\ \x60\xa1\xe2\xe5\xf6\x3c\x86\x40\x6b\xea\x34\x5a\xea\xb2\xfe\x00\ \x00\x00\x10\x40\x38\x4c\xc8\xd4\x84\xf3\x4d\xc0\x62\x97\x20\x57\ \x0f\x3b\xd7\x40\x3a\x05\x59\x8c\x8a\x5e\xce\xc0\x58\xb0\x26\x5d\ \xcd\x2f\x15\xc0\x40\xc3\x2b\x12\xda\xcc\x87\xc0\x4e\x4e\xf4\xb6\ \x3e\xa1\x52\x40\x50\x0a\x02\x38\xe4\x10\x8c\xc0\x43\x9a\x75\xd5\ \xe6\xa1\x5c\xc0\x3e\x83\xbe\xfd\x1d\x6c\x0f\x40\x45\x35\x56\x07\ \xd6\x3e\xb6\x40\x32\x53\x6d\x9e\xdc\x7b\x7c\x40\x4a\x8f\x9c\x56\ \x73\x8e\x7b\xc0\x44\x7e\x8a\x65\x9b\x9a\xc2\xc0\x60\x5d\xd6\xfd\ \x68\xf0\x6a\x40\x22\xa3\x02\x11\x65\xf2\x80\xc0\x63\x69\xe2\x60\ \xd2\xcd\x1f\x40\x50\x78\x07\x2d\xa2\x09\x53\xc0\x5b\x79\x60\x5b\ \x5c\xc5\x6c\x40\x3c\x78\x1f\xd0\x82\x80\xbc\xc0\x62\xee\x0c\x03\ \x39\x4a\xd4\xc0\x46\xd1\x54\x08\xbe\xbb\x9e\x40\x50\x2c\x88\xac\ \xa3\x4c\x7c\x40\x36\xbd\xc6\x35\xfc\x61\x64\x40\x53\xeb\xba\xe6\ \xb1\x05\x48\xc0\x64\x7c\xf0\x25\x7e\x80\x23\x40\x5a\x98\x3b\xf8\ \x62\xb1\x2e\xc0\x67\x9f\x25\xbf\x07\x67\xde\x40\x69\x6a\x0f\xcb\ \x95\x87\xec\x40\x61\x88\x20\x88\x9b\xc5\x2f\x40\x5e\xdc\xfb\x26\ \xf0\x4e\x91\x40\x60\xa1\xe2\xe4\xf9\x69\xcb\x40\x6b\xea\x34\x68\ \x9f\xdc\x0a\x00\x00\x00\x10\x40\x38\x4c\xc8\xcf\x45\x6d\x70\xc0\ \x62\x97\x20\x6a\x1b\x9c\x23\x40\x3a\x05\x5a\x52\xc4\x7b\x1c\xc0\ \x58\xb0\x26\x72\x72\x66\xea\xc0\x40\xc3\x2a\xf9\x10\xed\xb9\xc0\ \x4e\x4e\xf5\x64\x15\x69\xb0\x40\x50\x0a\x02\x33\x77\xa5\x56\xc0\ \x43\x9a\x75\x78\xa3\x77\x6b\xc0\x3e\x83\xc0\x3a\xa2\x9b\x18\x40\ \x45\x35\x56\x99\x6e\xfb\xd2\x40\x32\x53\x6c\xf7\xf3\x6f\x59\x40\ \x4a\x8f\x9b\xb3\x71\xd9\x7e\xc0\x44\x7e\x8a\x95\x22\x08\xc3\xc0\ \x60\x5d\xd7\x27\xd0\xff\x24\x40\x22\xa3\x02\x81\xb3\x6a\x1c\xc0\ \x63\x69\xe2\x64\x39\x77\x1e\x40\x50\x78\x07\x1a\x50\xf1\xd4\xc0\ \x5b\x79\x60\x26\xa7\x76\x2b\x40\x3c\x78\x20\x16\xc0\xae\xfd\xc0\ \x62\xee\x0b\xf9\x78\xf7\x9a\xc0\x46\xd1\x54\x14\x2c\xd4\x30\x40\ \x50\x2c\x89\x60\x2e\x92\x45\x40\x36\xbd\xc7\xcb\x13\x78\x86\x40\ \x53\xeb\xba\x81\x14\xb0\x4f\xc0\x64\x7c\xf0\x49\x5d\x6b\x81\x40\ \x5a\x98\x3b\xfd\x81\x19\xae\xc0\x67\x9f\x25\xc1\xe5\xe5\x65\x40\ \x69\x6a\x0f\xd6\xad\x9f\xef\x40\x61\x88\x20\xa6\x52\x94\x24\x40\ \x5e\xdc\xfb\x34\x0d\x4b\xd1\x40\x60\xa1\xe2\xe4\xa8\x63\x78\x40\ \x6b\xea\x34\x6d\x04\x78\x67\x00\x00\x00\x10\x40\x38\x4c\xc8\xc3\ \x53\xf0\xd7\xc0\x62\x97\x20\x95\x74\xbf\xc7\x40\x3a\x05\x5c\x16\ \x3e\x0f\x2d\xc0\x58\xb0\x26\xa1\x74\xe5\x62\xc0\x40\xc3\x2a\xbe\ \x48\x1a\xc9\xc0\x4e\x4e\xf6\xef\xf7\x35\xd6\x40\x50\x0a\x02\x27\ \x21\x30\x73\xc0\x43\x9a\x74\xa4\x51\xd1\x0d\xc0\x3e\x83\xc3\x0d\ \xc2\x0e\xf4\x40\x45\x35\x57\xe5\x09\x34\x5f\x40\x32\x53\x6b\x7b\ \xc7\x91\x61\x40\x4a\x8f\x9a\x40\x37\x7d\xc1\xc0\x44\x7e\x8b\x01\ \x5c\x12\x71\xc0\x60\x5d\xd7\x88\x63\x00\x6f\x40\x22\xa3\x03\x81\ \x71\x1e\xdd\xc0\x63\x69\xe2\x6b\xf8\x2e\x8c\x40\x50\x78\x06\xee\ \x57\xe8\x39\xc0\x5b\x79\x5f\xae\xab\x35\x22\x40\x3c\x78\x20\xb6\ \xa7\x72\x0b\xc0\x62\xee\x0b\xe3\x46\x4f\xd6\xc0\x46\xd1\x54\x2e\ \x40\x0a\x1b\x40\x50\x2c\x8a\xf9\x12\xa8\xf6\x40\x36\xbd\xcb\x65\ \xa5\xcc\xd1\x40\x53\xeb\xb9\x99\xaa\xcf\x03\xc0\x64\x7c\xf0\x9b\ \x11\xbc\x05\x40\x5a\x98\x3c\x09\x29\xdc\x73\xc0\x67\x9f\x25\xc8\ \x6e\xde\xfd\x40\x69\x6a\x0f\xef\xf2\x9d\x38\x40\x61\x88\x20\xe9\ \xfe\xa9\x62\x40\x5e\xdc\xfb\x51\xea\xa9\x9f\x40\x60\xa1\xe2\xe3\ \xef\xdb\xd6\x40\x6b\xea\x34\x77\x05\xb5\xb1\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xc2\x67\xdd\x57\xc0\x62\x97\x20\x98\xcd\x94\x1a\x40\ \x3a\x05\x5c\x39\x1f\x5d\xdb\xc0\x58\xb0\x26\xa5\x16\x7d\x84\xc0\ \x40\xc3\x2a\xb9\xbc\xba\x60\xc0\x4e\x4e\xf7\x0e\x8c\x4a\xb1\x40\ \x50\x0a\x02\x26\x2d\x64\x0a\xc0\x43\x9a\x74\x93\xeb\xe8\x2d\xc0\ \x3e\x83\xc3\x45\x9f\x4d\x2f\x40\x45\x35\x57\xfe\xa7\x9e\xb3\x40\ \x32\x53\x6b\x5e\x68\x2f\x32\x40\x4a\x8f\x9a\x23\x89\xc3\x22\xc0\ \x44\x7e\x8b\x09\xb8\x5e\x6c\xc0\x60\x5d\xd7\x8f\xd8\xc8\x46\x40\ \x22\xa3\x03\x95\x32\xa9\x80\xc0\x63\x69\xe2\x6c\x91\x58\xc3\x40\ \x50\x78\x06\xea\xf2\x89\xaa\xc0\x5b\x79\x5f\xa5\x67\x05\xe0\x40\ \x3c\x78\x20\xc3\x00\xcb\xb0\xc0\x62\xee\x0b\xe1\x8f\x72\x2a\xc0\ \x46\xd1\x54\x30\x44\x61\xe5\x40\x50\x2c\x8b\x18\xa9\x44\x23\x40\ \x36\xbd\xcb\xac\xeb\xcc\x19\x40\x53\xeb\xb9\x87\xca\x0f\x26\xc0\ \x64\x7c\xf0\xa1\x61\xc8\xea\x40\x5a\x98\x3c\x0a\x10\x78\x9d\xc0\ \x67\x9f\x25\xc8\xf0\x21\x1c\x40\x69\x6a\x0f\xf1\xe6\x6c\xcd\x40\ \x61\x88\x20\xef\x39\x09\x1b\x40\x5e\xdc\xfb\x54\x39\x4e\x8a\x40\ \x60\xa1\xe2\xe3\xe1\x9a\x53\x40\x6b\xea\x34\x77\xcb\x94\x20\x00\ \x00\x00\x10\x40\x38\x4c\xc8\xc1\x32\xe4\xf9\xc0\x62\x97\x20\x9d\ \x2e\xf8\xde\x40\x3a\x05\x5c\x66\xc6\xea\x0b\xc0\x58\xb0\x26\xa9\ \xd7\x32\x7d\xc0\x40\xc3\x2a\xb3\xc9\xdf\x14\xc0\x4e\x4e\xf7\x36\ \x93\x96\x7f\x40\x50\x0a\x02\x24\xee\x51\x65\xc0\x43\x9a\x74\x7e\ \x75\x91\x91\xc0\x3e\x83\xc3\x8e\xbe\x00\x43\x40\x45\x35\x58\x20\ \x2f\xea\x4a\x40\x32\x53\x6b\x37\xf6\x02\x6f\x40\x4a\x8f\x99\xfe\ \x00\x4b\x9f\xc0\x44\x7e\x8b\x14\xa9\xbf\x4b\xc0\x60\x5d\xd7\x99\ \x9c\x71\xc0\x40\x22\xa3\x03\xaf\x0e\x58\x32\xc0\x63\x69\xe2\x6d\ \x59\xd1\xf7\x40\x50\x78\x06\xe6\x80\xb1\x85\xc0\x5b\x79\x5f\x99\ \x46\x45\x3d\x40\x3c\x78\x20\xd3\x2a\x6b\xb5\xc0\x62\xee\x0b\xdf\ \x51\x0d\x21\xc0\x46\xd1\x54\x32\xe8\x5b\x66\x40\x50\x2c\x8b\x42\ \x01\xb4\x84\x40\x36\xbd\xcc\x0a\x35\xc8\xee\x40\x53\xeb\xb9\x70\ \x63\x9a\x1b\xc0\x64\x7c\xf0\xa9\xa5\x0c\xbe\x40\x5a\x98\x3c\x0b\ \x3e\x51\xa0\xc0\x67\x9f\x25\xc9\x99\x51\x18\x40\x69\x6a\x0f\xf4\ \x74\xa1\xea\x40\x61\x88\x20\xf6\x10\xd1\x9d\x40\x5e\xdc\xfb\x57\ \x3e\x65\x10\x40\x60\xa1\xe2\xe3\xce\xf1\x84\x40\x6b\xea\x34\x78\ \xce\x91\x2c\x00\x00\x00\x10\x40\x38\x4c\xc8\xc1\x32\xe4\xf9\xc0\ \x62\x97\x20\x9d\x2e\xf8\xde\x40\x3a\x05\x5c\x66\xc6\xea\x0b\xc0\ \x58\xb0\x26\xa9\xd7\x32\x7d\xc0\x40\xc3\x2a\xb3\xc9\xdf\x14\xc0\ \x4e\x4e\xf7\x36\x93\x96\x7f\x40\x50\x0a\x02\x24\xee\x51\x65\xc0\ \x43\x9a\x74\x7e\x75\x91\x91\xc0\x3e\x83\xc3\x8e\xbe\x00\x43\x40\ \x45\x35\x58\x20\x2f\xea\x4a\x40\x32\x53\x6b\x37\xf6\x02\x6f\x40\ \x4a\x8f\x99\xfe\x00\x4b\x9f\xc0\x44\x7e\x8b\x14\xa9\xbf\x4b\xc0\ \x60\x5d\xd7\x99\x9c\x71\xc0\x40\x22\xa3\x03\xaf\x0e\x58\x32\xc0\ \x63\x69\xe2\x6d\x59\xd1\xf7\x40\x50\x78\x06\xe6\x80\xb1\x85\xc0\ \x5b\x79\x5f\x99\x46\x45\x3d\x40\x3c\x78\x20\xd3\x2a\x6b\xb5\xc0\ \x62\xee\x0b\xdf\x51\x0d\x21\xc0\x46\xd1\x54\x32\xe8\x5b\x66\x40\ \x50\x2c\x8b\x42\x01\xb4\x84\x40\x36\xbd\xcc\x0a\x35\xc8\xee\x40\ \x53\xeb\xb9\x70\x63\x9a\x1b\xc0\x64\x7c\xf0\xa9\xa5\x0c\xbe\x40\ \x5a\x98\x3c\x0b\x3e\x51\xa0\xc0\x67\x9f\x25\xc9\x99\x51\x18\x40\ \x69\x6a\x0f\xf4\x74\xa1\xea\x40\x61\x88\x20\xf6\x10\xd1\x9d\x40\ \x5e\xdc\xfb\x57\x3e\x65\x10\x40\x60\xa1\xe2\xe3\xce\xf1\x84\x40\ \x6b\xea\x34\x78\xce\x91\x2c\x00\x00\x00\x10\x40\x38\x4c\xc8\xbf\ \xcf\xfc\x3c\xc0\x62\x97\x20\xa2\x37\x18\xbc\x40\x3a\x05\x5c\x9b\ \x39\x94\x7a\xc0\x58\xb0\x26\xaf\x4c\xea\x97\xc0\x40\xc3\x2a\xac\ \xf4\x31\x63\xc0\x4e\x4e\xf7\x64\x8f\x9a\x25\x40\x50\x0a\x02\x23\ \x7f\xd0\x06\xc0\x43\x9a\x74\x65\xcd\xff\xd0\xc0\x3e\x83\xc3\xe2\ \xbe\x25\x12\x40\x45\x35\x58\x46\xb5\xb3\x85\x40\x32\x53\x6b\x0b\ \xcb\x0d\x92\x40\x4a\x8f\x99\xd2\xe0\xed\x42\xc0\x44\x7e\x8b\x21\ \x3b\xf0\xf6\xc0\x60\x5d\xd7\xa4\xd4\x07\xaf\x40\x22\xa3\x03\xcc\ \xc2\xf6\xcf\xc0\x63\x69\xe2\x6e\x40\x1f\x33\x40\x50\x78\x06\xe1\ \x65\x9e\x9c\xc0\x5b\x79\x5f\x8b\x57\xc0\xf2\x40\x3c\x78\x20\xe5\ \xbb\x6d\x77\xc0\x62\xee\x0b\xdc\xbd\x3a\x54\xc0\x46\xd1\x54\x35\ \xf1\x1f\xf9\x40\x50\x2c\x8b\x71\x81\x27\x09\x40\x36\xbd\xcc\x75\ \x61\x96\xaf\x40\x53\xeb\xb9\x55\x81\xb9\x30\xc0\x64\x7c\xf0\xb3\ \x23\x22\x31\x40\x5a\x98\x3c\x0c\x99\x17\x47\xc0\x67\x9f\x25\xca\ \x5b\xaf\x44\x40\x69\x6a\x0f\xf7\x64\x34\xea\x40\x61\x88\x20\xfd\ \xed\x47\xed\x40\x5e\xdc\xfb\x5a\xb6\x86\x41\x40\x60\xa1\xe2\xe3\ \xb9\x81\xe1\x40\x6b\xea\x34\x79\xf8\x18\x55\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xc0\x4e\x4f\x3d\xc0\x62\x97\x20\xa0\x6c\x9c\x10\x40\ \x3a\x05\x5c\x88\x8e\x66\x1c\xc0\x58\xb0\x26\xad\x5b\x68\x24\xc0\ \x40\xc3\x2a\xaf\x63\x02\x46\xc0\x4e\x4e\xf7\x54\x31\x68\xc3\x40\ \x50\x0a\x02\x24\x02\x43\xaf\xc0\x43\x9a\x74\x6e\x94\x89\x25\xc0\ \x3e\x83\xc3\xc4\xd7\xce\x09\x40\x45\x35\x58\x38\xff\x69\xa6\x40\ \x32\x53\x6b\x1b\x83\xc1\xd0\x40\x4a\x8f\x99\xe2\x3a\x5a\x44\xc0\ \x44\x7e\x8b\x1c\xc2\x70\xf4\xc0\x60\x5d\xd7\xa0\xd5\xe7\x48\x40\ \x22\xa3\x03\xc2\x30\x23\x5c\xc0\x63\x69\xe2\x6d\xee\x25\xab\x40\ \x50\x78\x06\xe3\x36\xdb\x68\xc0\x5b\x79\x5f\x90\x4d\x36\x90\x40\ \x3c\x78\x20\xdf\x1f\xa6\xa9\xc0\x62\xee\x0b\xdd\xa8\x15\x8e\xc0\ \x46\xd1\x54\x34\xdc\x9c\x16\x40\x50\x2c\x8b\x60\x99\x08\x6c\x40\ \x36\xbd\xcc\x4f\x3b\xe3\xde\x40\x53\xeb\xb9\x5f\x13\x4e\xf5\xc0\ \x64\x7c\xf0\xaf\xc2\x25\x0e\x40\x5a\x98\x3c\x0c\x1d\xa8\x48\xc0\ \x67\x9f\x25\xca\x16\x7f\xd6\x40\x69\x6a\x0f\xf6\x58\xaf\x08\x40\ \x61\x88\x20\xfb\x20\xf3\x53\x40\x5e\xdc\xfb\x59\x7a\x65\xa7\x40\ \x60\xa1\xe2\xe3\xc1\x23\x31\x40\x6b\xea\x34\x79\x8e\x30\xd7\x00\ \x00\x00\x10\x40\x38\x4c\xc8\xc0\x24\xc9\x42\xc0\x62\x97\x20\xa1\ \x03\x51\x04\x40\x3a\x05\x5c\x8e\xb1\x4a\x18\xc0\x58\xb0\x26\xad\ \xfe\xf0\x2a\xc0\x40\xc3\x2a\xae\x96\x4c\x84\xc0\x4e\x4e\xf7\x59\ \x92\xb9\xe9\x40\x50\x0a\x02\x23\xd7\x61\x93\xc0\x43\x9a\x74\x6b\ \xb2\x17\xa4\xc0\x3e\x83\xc3\xce\xab\xca\x54\x40\x45\x35\x58\x3d\ \x81\x3f\x26\x40\x32\x53\x6b\x16\x58\xd6\x2c\x40\x4a\x8f\x99\xdd\ \x2e\xc0\x07\xc0\x44\x7e\x8b\x1e\x3a\xf7\xb4\xc0\x60\x5d\xd7\xa2\ \x25\xe0\x7c\x40\x22\xa3\x03\xc5\xa9\xdf\x80\xc0\x63\x69\xe2\x6e\ \x09\x17\x9f\x40\x50\x78\x06\xe2\x9d\xee\x8d\xc0\x5b\x79\x5f\x8e\ \xab\xef\xf2\x40\x3c\x78\x20\xe1\x4b\xbe\x79\xc0\x62\xee\x0b\xdd\ \x5a\xe2\xd6\xc0\x46\xd1\x54\x35\x37\x7f\x10\x40\x50\x2c\x8b\x66\ \x27\xb0\x54\x40\x36\xbd\xcc\x5b\xc5\xe0\xc4\x40\x53\xeb\xb9\x5b\ \xee\x21\x36\xc0\x64\x7c\xf0\xb0\xde\x77\x49\x40\x5a\x98\x3c\x0c\ \x46\x3a\xd9\xc0\x67\x9f\x25\xca\x2d\x3d\x92\x40\x69\x6a\x0f\xf6\ \xb0\x9e\x4b\x40\x61\x88\x20\xfc\x0c\x68\x9b\x40\x5e\xdc\xfb\x59\ \xe2\x4e\xeb\x40\x60\xa1\xe2\xe3\xbe\xa1\x23\x40\x6b\xea\x34\x79\ \xb1\x00\x66\x00\x00\x00\x10\x40\x38\x4c\xc8\xbf\xee\x70\x14\xc0\ \x62\x97\x20\xa1\xc8\x92\x26\x40\x3a\x05\x5c\x96\xb9\x6c\xbd\xc0\ \x58\xb0\x26\xae\xd4\xfb\x26\xc0\x40\xc3\x2a\xad\x8a\x57\xfb\xc0\ \x4e\x4e\xf7\x60\x9d\x78\x70\x40\x50\x0a\x02\x23\x9f\x41\xd1\xc0\ \x43\x9a\x74\x67\xeb\x91\x0b\xc0\x3e\x83\xc3\xdb\x88\xea\x29\x40\ \x45\x35\x58\x43\x67\x7a\x47\x40\x32\x53\x6b\x0f\x95\x49\xb5\x40\ \x4a\x8f\x99\xd6\x94\x32\x19\xc0\x44\x7e\x8b\x20\x27\xcb\x9d\xc0\ \x60\x5d\xd7\xa3\xdd\xa0\x33\x40\x22\xa3\x03\xca\x36\x6d\xdb\xc0\ \x63\x69\xe2\x6e\x2c\x5c\x37\x40\x50\x78\x06\xe1\xd5\xc5\xef\xc0\ \x5b\x79\x5f\x8c\x89\xc7\x6e\x40\x3c\x78\x20\xe4\x23\x98\x6b\xc0\ \x62\xee\x0b\xdc\xf5\xd8\x14\xc0\x46\xd1\x54\x35\xae\x76\x39\x40\ \x50\x2c\x8b\x6d\x6d\xc6\x31\x40\x36\xbd\xcc\x6c\x2f\x5e\xd3\x40\ \x53\xeb\xb9\x57\xd0\x3e\xef\xc0\x64\x7c\xf0\xb2\x52\x9c\x24\x40\ \x5a\x98\x3c\x0c\x7b\x55\xad\xc0\x67\x9f\x25\xca\x4b\x01\x8e\x40\ \x69\x6a\x0f\xf7\x23\xb6\xf6\x40\x61\x88\x20\xfd\x40\x98\x5e\x40\ \x5e\xdc\xfb\x5a\x6a\x50\xcc\x40\x60\xa1\xe2\xe3\xbb\x58\xc4\x40\ \x6b\xea\x34\x79\xde\x90\x91\x00\x00\x00\x10\x40\x38\x4c\xc8\xbf\ \xdd\x05\x9e\xc0\x62\x97\x20\xa2\x07\xc7\xe2\x40\x3a\x05\x5c\x99\ \x4c\x59\xcf\xc0\x58\xb0\x26\xaf\x19\x92\x90\xc0\x40\xc3\x2a\xad\ \x34\x79\x79\xc0\x4e\x4e\xf7\x62\xdf\x2a\xa1\x40\x50\x0a\x02\x23\ \x8d\x45\xef\xc0\x43\x9a\x74\x66\xb5\xd7\xe9\xc0\x3e\x83\xc3\xdf\ \xa8\x34\xb2\x40\x45\x35\x58\x45\x4b\x6f\x42\x40\x32\x53\x6b\x0d\ \x6a\x68\xe4\x40\x4a\x8f\x99\xd4\x76\x73\x36\xc0\x44\x7e\x8b\x20\ \xc5\xb9\x45\xc0\x60\x5d\xd7\xa4\x6a\x8b\x7a\x40\x22\xa3\x03\xcb\ \xab\x9d\x74\xc0\x63\x69\xe2\x6e\x37\xa9\x75\x40\x50\x78\x06\xe1\ \x95\xa1\xdb\xc0\x5b\x79\x5f\x8b\xda\xc3\x2a\x40\x3c\x78\x20\xe5\ \x0c\xd5\xed\xc0\x62\xee\x0b\xdc\xd5\x77\x11\xc0\x46\xd1\x54\x35\ \xd4\x96\x1e\x40\x50\x2c\x8b\x6f\xc2\x7c\x13\x40\x36\xbd\xcc\x71\ \x71\xc0\xb2\x40\x53\xeb\xb9\x56\x7e\x86\x5a\xc0\x64\x7c\xf0\xb2\ \xc9\xdd\x72\x40\x5a\x98\x3c\x0c\x8c\x5a\x33\xc0\x67\x9f\x25\xca\ \x54\x8b\x69\x40\x69\x6a\x0f\xf7\x48\x99\x09\x40\x61\x88\x20\xfd\ \xa3\x5a\xc4\x40\x5e\xdc\xfb\x5a\x95\xe6\x4c\x40\x60\xa1\xe2\xe3\ \xba\x4b\x77\x40\x6b\xea\x34\x79\xed\x2a\x63\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xbf\xa9\x3c\xf7\xc0\x62\x97\x20\xa2\xc3\xba\x2f\x40\ \x3a\x05\x5c\xa0\xf4\xb7\xf1\xc0\x58\xb0\x26\xaf\xe5\x96\xe4\xc0\ \x40\xc3\x2a\xac\x34\xe6\xf4\xc0\x4e\x4e\xf7\x69\x95\xca\xcd\x40\ \x50\x0a\x02\x23\x57\xdb\x46\xc0\x43\x9a\x74\x63\x1c\x4c\x49\xc0\ \x3e\x83\xc3\xeb\xeb\x58\x7a\x40\x45\x35\x58\x4a\xeb\x0b\xde\x40\ \x32\x53\x6b\x06\xf7\xe1\xda\x40\x4a\x8f\x99\xce\x2a\xed\x2d\xc0\ \x44\x7e\x8b\x22\x9b\x7b\xcb\xc0\x60\x5d\xd7\xa6\x0d\xc7\x6c\x40\ \x22\xa3\x03\xd0\x01\xd2\x5f\xc0\x63\x69\xe2\x6e\x59\x48\xae\x40\ \x50\x78\x06\xe0\xd6\xe9\xc6\xc0\x5b\x79\x5f\x89\xd1\xfd\x18\x40\ \x3c\x78\x20\xe7\xc2\xd5\xed\xc0\x62\xee\x0b\xdc\x75\x1f\x54\xc0\ \x46\xd1\x54\x36\x45\xdf\xf2\x40\x50\x2c\x8b\x76\xb1\x88\xd7\x40\ \x36\xbd\xcc\x81\x16\xe5\x42\x40\x53\xeb\xb9\x52\x91\xe6\x77\xc0\ \x64\x7c\xf0\xb4\x2c\x9e\xd1\x40\x5a\x98\x3c\x0c\xbe\x99\x62\xc0\ \x67\x9f\x25\xca\x70\xda\x68\x40\x69\x6a\x0f\xf7\xb6\x0f\x69\x40\ \x61\x88\x20\xfe\xc9\x33\xea\x40\x5e\xdc\xfb\x5b\x17\x3b\x26\x40\ \x60\xa1\xe2\xe3\xb7\x2f\x1f\x40\x6b\xea\x34\x7a\x18\x57\x7f\x00\ \x00\x00\x10\x40\x39\x3a\xfb\x80\x37\xf3\x20\xc0\x61\xfc\xcb\xa3\ \xcd\x26\xb3\x40\x36\xe1\xc0\x3b\x54\x6a\xc7\xc0\x57\x7d\x1f\x83\ \x86\xf3\x1c\xc0\x42\x8a\xc6\x53\xae\xe3\x90\xc0\x4c\x3d\xf4\x90\ \xee\x6c\x3f\x40\x4e\x2d\x2a\x66\xb7\xf4\x4a\xc0\x40\xfe\x98\xb5\ \x59\x0c\x29\xc0\x41\x9c\x26\x3c\x27\x7a\x60\x40\x47\x49\xd1\x47\ \xd2\xac\x49\x40\x2a\xff\x46\x2d\x2a\xf5\xdd\x40\x4c\xe9\x81\x90\ \xd0\x9c\x7c\xc0\x43\xec\x12\xf4\xe3\xc3\x79\xc0\x5f\xc9\x03\x0f\ \xff\x7b\x76\x40\x21\x4c\x2e\x53\x8d\xf5\xb6\xc0\x63\x5e\x70\x2e\ \xf1\x12\x4a\x40\x60\x35\xaf\x9d\x23\xb9\xb3\xc0\x47\xf5\xbd\xee\ \x88\x2b\x80\x40\x5f\x27\xde\x05\x0a\xe0\xcd\xc0\x59\xe5\xec\x76\ \x6e\x20\x9e\xc0\x49\x4b\x2f\xeb\x9c\x1a\x49\x40\x51\x2b\xee\x40\ \x71\xae\x98\x40\x31\x9e\x54\x8b\xa5\x0f\x9e\x40\x55\x1b\xb6\xcb\ \xa1\xcb\x36\xc0\x65\x42\x19\x74\x05\x9a\xf9\x40\x5a\xb0\xf1\x49\ \x6b\xdf\x29\xc0\x67\xab\x60\x4e\xa0\x19\x85\x40\x69\xa0\x71\xdc\ \x2e\x28\xe1\x40\x61\x1f\xc5\xf2\x50\xd7\x8a\x40\x5e\xb5\x77\xa5\ \x7e\x2d\xd8\x40\x60\xa2\xa4\x00\xc9\xca\x1b\x40\x6b\xdc\x49\x66\ \x6f\x08\x2d\x00\x00\x00\x10\x40\x39\x6d\xdd\x13\x57\xa1\xd5\xc0\ \x61\x88\xae\xf7\xb1\x07\xb9\x40\x3d\xcf\xf4\x8d\x6a\x17\x82\xc0\ \x56\x9d\xa9\x7a\xdd\x4a\xee\xc0\x3f\xd1\x0f\xe0\xc8\xca\x1b\xc0\ \x4b\xe5\xb8\x99\x8a\x88\x81\x40\x50\x1e\xc0\x45\x2f\x34\x10\xc0\ \x3c\xd5\xaf\x28\x25\x54\xfa\xc0\x41\x59\xfd\x10\xd6\x49\xbe\x40\ \x47\x9e\x2c\x2b\x96\x3e\x8e\x40\x2a\xe2\xd5\x8c\x54\xd6\x15\x40\ \x4e\x5c\xbb\xef\xb1\x92\x66\xc0\x43\xbf\xfb\xa6\x99\x4b\x21\xc0\ \x5f\x85\x8a\xa8\x9e\x7f\x25\x40\x20\xe3\xcd\x5f\xf2\x68\xe2\xc0\ \x63\x5a\x9f\x77\xe2\x62\x79\x40\x60\xd6\xe3\xac\xcc\x5f\x90\xc0\ \x34\xa5\x13\xa5\x48\xae\xc2\x40\x64\xe3\x80\x6b\x21\x27\x96\xc0\ \x50\x8d\x0b\x23\xa9\xc3\xe4\xc0\x49\x89\xcb\x5b\xbe\x67\xd3\x40\ \x51\x26\xf3\x40\xd2\x0d\xc1\x40\x30\x53\x3d\xec\x2b\xcb\xe3\x40\ \x55\xdf\xb6\x87\x83\x72\xc9\xc0\x65\x50\x90\x7a\x79\xec\x90\x40\ \x5a\xb3\x5d\xfd\x75\x1b\xbb\xc0\x67\xac\x23\x85\x4c\x3e\xc1\x40\ \x69\xa4\x50\xfd\xc1\x1a\xbe\x40\x61\x15\x08\x2c\x04\x80\x35\x40\ \x5e\xb2\x16\xd8\x69\xeb\x99\x40\x60\xa2\xb0\x72\x32\x30\x48\x40\ \x6b\xdb\x00\x4c\xb4\x72\x34\x00\x00\x00\x10\x40\x39\x79\xe6\xd8\ \x96\x75\x3a\xc0\x61\xc0\x16\x90\x87\x0e\xed\x40\x38\x8f\xec\xd9\ \xc7\x51\xb7\xc0\x57\x00\xb8\x99\x9b\x0c\x77\xc0\x42\x03\xf3\x87\ \x9c\x0b\x95\xc0\x4b\xc8\x06\x2f\x17\xcb\x6f\x40\x4e\x81\x5b\x7b\ \x07\x5f\xac\xc0\x3f\x6b\x1b\x49\x9f\xef\xa8\xc0\x41\xf5\x1a\xbf\ \x81\x76\xdc\x40\x47\xc1\xb0\x33\x3e\x15\x87\x40\x29\x35\xe9\x42\ \xe0\x6f\x26\x40\x4d\xcb\x37\x6d\xa6\xc4\xbd\xc0\x43\xc2\xd2\x31\ \x5b\xf1\xae\xc0\x5f\x8b\xf9\x65\x4b\xb3\xb9\x40\x20\xf2\x38\xea\ \x61\xb5\x68\xc0\x63\x5b\x25\xb1\x29\x73\x44\x40\x60\x74\xb0\xf1\ \xaf\x14\x87\xc0\x3c\x2b\x5b\x9f\xd5\xcc\x3a\x40\x5f\xd1\xff\x1a\ \xb3\xb4\x69\xc0\x54\xf9\x9f\x72\x33\xf9\x81\xc0\x49\xd3\xfa\x57\ \xad\xf2\x84\x40\x51\x56\xe6\x30\xad\x36\xf7\x40\x30\x45\x7a\x8e\ \xd7\x55\xf9\x40\x55\x90\xcf\xcc\x04\x2a\x2d\xc0\x65\x6a\x17\x30\ \x58\x3c\xd3\x40\x5a\xb7\x3e\x31\xfb\xc0\xbc\xc0\x67\xad\x5a\x2e\ \xcc\x97\xbb\x40\x69\xaa\xd2\x12\x76\xcf\xc6\x40\x61\x08\x27\xfd\ \xad\x8d\xa9\x40\x5e\xad\xed\x6b\x24\xb9\x5c\x40\x60\xa2\xbe\x9a\ \x9d\xff\x01\x40\x6b\xd9\x5b\x1b\x78\x99\x99\x00\x00\x00\x10\x40\ \x3a\x1c\xba\xdc\xfa\x1a\x5d\xc0\x60\xf5\xc8\x41\xf4\x13\xe6\x40\ \x41\xfa\x03\xbb\xf4\x1d\x4a\xc0\x55\xaa\x26\xe9\xec\x4c\xf0\xc0\ \x3b\x21\x4c\xc6\x54\x3f\x5c\xc0\x4b\x5b\x50\x0c\x7c\x8f\x98\x40\ \x50\xf9\x7f\xcb\x19\x0b\xae\xc0\x37\x93\x4b\x4f\x3b\xf3\x58\xc0\ \x41\x41\x68\xf8\x0c\x13\x54\x40\x48\x0c\x99\x85\x2c\x7f\x15\x40\ \x2a\x01\x64\x6f\x7e\xaa\x70\x40\x4f\xd5\xa4\x26\x6b\xe0\x61\xc0\ \x43\x74\x8b\x1b\xb1\x98\xf2\xc0\x5f\x1b\xe4\x8e\x02\x7c\x6d\x40\ \x20\x42\xe5\x35\xba\xbe\x4c\xc0\x63\x54\x64\xe8\xa8\x03\x5e\x40\ \x61\x53\x48\x12\x1c\xc4\xf0\xc0\x38\x89\xd7\xe7\xcb\xc4\x43\x40\ \x65\x76\x6e\x3f\xaf\x20\x22\xc0\x51\x65\xa7\xda\xaa\x26\x75\xc0\ \x49\xe6\x46\x82\xd0\x24\xb9\x40\x51\x2f\x67\xdc\xf2\x10\xf5\x40\ \x2d\x70\x6e\xe1\xf3\xcb\xfa\x40\x56\xa2\x91\x0e\xe0\x3f\x9d\xc0\ \x65\x68\x72\x72\x08\xfb\x25\x40\x5a\xb7\x12\xd7\xa9\xc0\x26\xc0\ \x67\xad\x49\xf8\x95\x22\x31\x40\x69\xaa\x71\xed\xc5\x2f\x89\x40\ \x60\xfd\xd6\x05\x90\x17\x3d\x40\x5e\xab\x02\x86\x36\xeb\xc5\x40\ \x60\xa2\xc7\x56\x35\x46\xe9\x40\x6b\xd8\x35\x4f\xe4\xc4\x52\x00\ \x00\x00\x10\x40\x3a\x22\xa0\xc0\xc8\x8c\x68\xc0\x61\x7a\xe1\x71\ \x57\xe2\xd0\x40\x37\x88\x57\x2b\xb4\x27\x65\xc0\x56\x7a\x19\x92\ \x2d\x24\x6c\xc0\x42\xaa\x2f\xed\x9b\x21\x34\xc0\x4a\xf4\xa5\x85\ \xef\xfb\x8d\x40\x4d\xc3\xc6\xac\x45\x1a\x79\xc0\x3d\x0b\xa3\xc1\ \xb3\x70\xbf\xc0\x42\xfd\x76\x03\x11\x38\x1a\x40\x48\x95\x81\x53\ \xec\x54\xe6\x40\x24\xe6\xbc\x4c\xf9\xb4\xf7\x40\x4e\xcc\x4f\xe2\ \x80\x6a\x4e\xc0\x43\x7b\x0d\x6e\x7d\x0a\xc0\xc0\x5f\x26\x9b\xe0\ \x90\x2d\x70\x40\x20\x57\xdc\x86\xe0\xd3\xec\xc0\x63\x55\x29\x47\ \x39\xb3\x08\x40\x60\x47\xa0\x6e\xe2\x7b\xe5\xc0\x3d\x8e\x03\x79\ \xb3\xc5\xd8\x40\x59\xf4\xd9\x6e\xa3\x7d\xca\xc0\x53\xb4\xae\x8b\ \xb8\xe6\x2d\xc0\x4a\xf0\xb2\x63\x73\x25\x8f\x40\x51\xb9\x89\xae\ \x4e\xeb\xcd\x40\x2b\xd9\x2c\xa9\xd0\xb1\x70\x40\x56\x13\x03\x84\ \xe7\x17\x50\xc0\x65\xbe\x60\xdc\xb9\x87\x4b\x40\x5a\xc4\x9a\x9e\ \x26\x0d\xb2\xc0\x67\xb0\xd3\x88\x9b\xee\x09\x40\x69\xbf\x4a\x43\ \x04\x51\xc2\x40\x60\xd2\x70\x29\x96\x40\xc4\x40\x5e\x9e\x5d\xed\ \x9c\x03\x41\x40\x60\xa2\xe4\x5f\xbf\xef\x51\x40\x6b\xd2\xd4\x01\ \xf5\xda\x8f\x00\x00\x00\x10\x40\x39\x93\x07\x18\x7c\x00\x57\xc0\ \x61\xed\x38\x48\x04\xf6\x05\x40\x39\xce\xd4\x3d\x16\x4f\xe1\xc0\ \x57\x5a\x79\x80\xd1\xee\x90\xc0\x41\x5a\xb0\x5b\xd9\x84\xa7\xc0\ \x4c\x6b\x4b\xa6\xc5\x05\x67\x40\x4f\x31\x11\x79\x69\xca\xc4\xc0\ \x40\x72\xd8\x87\x3f\x4a\xdb\xc0\x41\x30\x33\x06\x0e\xbd\x6d\x40\ \x47\x1e\x92\xf6\x5f\x87\x9d\x40\x2c\x56\xb7\x92\x4c\x0f\x54\x40\ \x4d\x1a\xcc\x86\x22\xf3\x62\xc0\x43\xed\x68\x86\x6d\xf1\xf7\xc0\ \x5f\xd7\x21\x49\x55\x4f\x8d\x40\x21\x78\xc7\xca\xdd\xae\x33\xc0\ \x63\x60\x08\x68\x37\x94\x7d\x40\x55\x61\x16\x46\xec\xb7\xbc\xc0\ \x58\xed\xdd\x9f\xdd\x31\xf6\x40\x4d\x34\xd5\x5d\xce\x73\x18\xc0\ \x62\x93\x74\x7f\x87\x8c\xe0\xc0\x49\x09\x16\x63\x43\xbe\xc4\x40\ \x51\x07\x88\xc1\x11\x6b\x6e\x40\x31\xe4\xaf\x64\x08\xd2\xab\x40\ \x55\x38\x17\x72\x80\xb5\xac\xc0\x65\x2c\x52\x57\x7f\x38\xd6\x40\ \x5a\xad\x44\x85\x31\xfe\xd5\xc0\x67\xaa\x28\xdf\x87\x91\xd0\x40\ \x69\x9a\x80\x20\x4d\x49\x84\x40\x61\x2c\x4a\x92\x0c\x64\x0a\x40\ \x5e\xba\x92\xb8\xd5\x32\x10\x40\x60\xa2\x8e\x79\x47\xf5\xf0\x40\ \x6b\xde\x52\x7b\xcd\xff\x76\x00\x00\x00\x10\x40\x39\xa0\x87\x98\ \xb8\xe0\xec\xc0\x62\x2e\x9b\xf4\x0c\x9a\x1f\x40\x38\x3b\x99\x1e\ \x7f\x21\x57\xc0\x57\xde\x76\x78\x0a\x75\x02\xc0\x41\xdb\xc9\xce\ \x7f\xdb\x4c\xc0\x4c\xfd\x56\x17\x6b\xc4\x02\x40\x4e\xdd\x63\x67\ \xe8\x83\x36\xc0\x41\xc3\x56\x92\x55\x6f\xcc\xc0\x40\xe7\x7e\x05\ \xfc\x43\x82\x40\x46\x8a\x57\x00\x41\xd6\xd1\x40\x2d\xd4\x62\x54\ \xe0\x04\x59\x40\x4c\x27\x56\xc2\xcd\x8b\x08\xc0\x42\x5a\xf0\x4d\ \x5a\xcb\xe6\xc0\x60\x15\xda\x3c\x46\xaf\x80\x40\x2e\xe6\x21\xc4\ \x8c\x1a\x04\xc0\x62\x99\x50\xe9\xf4\x73\xa0\x40\x50\x8a\xee\x4b\ \xfe\x05\x2c\xc0\x5a\x86\x37\xad\x7c\x15\x19\x40\x3e\x0c\x8f\x47\ \x89\x42\x31\xc0\x62\x98\x5b\xa9\x88\xc3\x3a\xc0\x48\x95\x4f\x39\ \x7f\x7d\xf0\x40\x50\xcc\x9d\xf9\xdf\xe9\xd6\x40\x33\x0b\xd4\x0c\ \x5e\xaf\x8e\x40\x54\xba\x84\x35\x41\xd8\x1e\xc0\x65\x06\xae\x6d\ \x56\x5a\x3b\x40\x5a\xa7\x7d\x7e\x97\xc5\xb4\xc0\x67\xa7\xfe\xa3\ \xda\x60\x69\x40\x69\x90\x32\x32\xe0\xf7\x43\x40\x61\x3b\xaa\x06\ \x78\xb7\xc1\x40\x5e\xc0\x47\x72\x5e\x23\xb6\x40\x60\xa2\x75\x46\ \x84\x56\xc3\x40\x6b\xe0\x78\xd5\xcc\x8c\x07\ \x00\x00\x05\x1c\ \xff\ \xff\xff\xff\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x00\x00\ \x00\x00\x00\xc0\x62\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\xc0\x59\x00\x00\x00\x00\x00\x00\xc0\x49\x00\x00\x00\ \x00\x00\x00\xc0\x49\x00\x00\x00\x00\x00\x00\x40\x49\x00\x00\x00\ \x00\x00\x00\xc0\x49\x00\x00\x00\x00\x00\x00\xc0\x39\x00\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\x40\x39\x00\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\xc0\x59\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x5f\x40\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\x40\x59\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x5f\x40\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\xc0\x41\x80\x00\x00\ \x00\x00\x00\x40\x52\xc0\x00\x00\x00\x00\x00\x40\x41\x80\x00\x00\ \x00\x00\x00\x40\x52\xc0\x00\x00\x00\x00\x00\xc0\x39\x00\x00\x00\ \x00\x00\x00\x40\x69\x00\x00\x00\x00\x00\x00\xc0\x3e\x00\x00\x00\ \x00\x00\x00\x40\x72\xc0\x00\x00\x00\x00\x00\x40\x39\x00\x00\x00\ \x00\x00\x00\x40\x69\x00\x00\x00\x00\x00\x00\x40\x3e\x00\x00\x00\ \x00\x00\x00\x40\x72\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x10\xc0\ \x3c\x89\x78\xef\x64\x41\xf9\xc0\x66\xd9\xe8\x90\xe1\x7d\x15\xc0\ \x31\xe3\x24\x6e\x1a\x35\x4b\xc0\x60\xbe\xa8\xcb\xa3\x98\xe8\xc0\ \x4b\x26\x9c\xdd\x08\xb6\xce\xc0\x52\x55\xf3\x5e\x1e\x9a\xcc\x40\ \x45\x5c\xfa\x9b\x0f\x7d\x05\xc0\x58\x63\x42\x06\x4d\xc8\xaa\xc0\ \x17\x5f\xc1\xb2\xd2\x1c\x6d\x40\x31\x9d\xf7\x2f\xd9\x40\x6c\x40\ \x45\x56\x51\xec\xae\x7d\xee\x40\x16\x28\xbe\x3a\x2e\x6a\x36\xc0\ \x55\x8e\x3f\x19\x86\x36\x44\xc0\x24\x7d\xe2\xe5\x56\x5d\x8e\xc0\ \x5d\x38\xe5\xb0\x63\x56\x32\x40\x42\x3f\x2b\xb1\x33\xe6\xab\x40\ \x47\x27\x75\x17\xb2\xff\xe1\xc0\x65\x05\x80\x69\xc9\x45\xe4\x40\ \x46\xa5\x8b\x3a\x6c\xa7\xa8\xc0\x6c\x02\x0f\xa6\x73\xff\xbc\xc0\ \x23\x07\xbb\xb5\xb5\x51\x7d\x40\x46\x24\x27\xde\x37\xae\x65\x40\ \x4d\x34\xca\x20\x80\xfa\x8f\x40\x3b\x64\xbd\x21\x5f\x80\x81\xc0\ \x37\xe9\x56\x97\x59\x09\x15\x40\x65\x1b\x2f\x86\xb4\x04\x4d\xc0\ \x3c\xb5\xb5\xc5\x5a\xd5\x30\x40\x70\xcd\xc0\x3b\x0e\xef\xd6\x40\ \x43\xce\x38\x01\x33\x34\xdd\x40\x62\xec\x1a\xba\x71\x62\x00\x40\ \x3f\x5e\x72\xef\x9e\x8c\x25\x40\x6f\x65\x3a\x4d\xed\xc0\xd9\x00\ \x00\x00\x10\xc0\x3c\x89\xb8\xa7\xeb\xa9\x01\xc0\x66\xda\x0d\x17\ \x53\x31\x17\xc0\x31\xe1\x8c\xf0\xba\xdf\x75\xc0\x60\xbe\xd1\xa6\ \x64\x43\x82\xc0\x4b\x26\x88\x07\x92\xca\xbf\xc0\x52\x56\x94\xaa\ \x30\x5d\x72\x40\x45\x5d\x52\x6d\x57\x9c\xd9\xc0\x58\x62\xcc\x60\ \x74\xfe\x54\xc0\x17\x69\xa4\x0b\x5f\xcf\x0e\x40\x31\xa0\xd0\x0e\ \xd0\x62\xed\x40\x45\x54\xc3\x45\xee\xd2\xcc\x40\x16\x23\xd3\x38\ \xd6\x69\x28\xc0\x55\x8e\x03\x71\x6e\x9d\x31\xc0\x24\x82\xdb\x79\ \xc3\x1b\x6e\xc0\x5d\x38\x8a\xc7\x14\xca\x74\x40\x42\x3e\x16\x8f\ \x10\x50\x33\x40\x47\x27\x55\xb2\x6a\xa5\x2d\xc0\x65\x05\x3e\xa8\ \x00\x01\x15\x40\x46\xa5\x8f\xfd\x66\x67\x23\xc0\x6c\x01\xce\x0e\ \xaa\x42\x46\xc0\x23\x05\x39\x8c\x95\xa5\x0f\x40\x46\x26\xe0\xb5\ \x34\x5e\x5e\x40\x4d\x34\xad\x03\x49\x41\x5e\x40\x3b\x5f\xf9\x28\ \x4b\xa6\x62\xc0\x37\xea\x6c\x93\xfc\xa6\xb3\x40\x65\x1b\xec\xb0\ \x7b\xa8\xfc\xc0\x3c\xb5\xfe\xd2\xbb\xf3\x4b\x40\x70\xce\x1f\x6d\ \x37\x5e\x7d\x40\x43\xce\xcc\x1c\x47\x26\xc2\x40\x62\xeb\x73\x80\ \x3a\x8b\xaf\x40\x3f\x5e\xe2\xb7\xae\x5f\xb6\x40\x6f\x64\x91\x2c\ \x26\xca\x21\x00\x00\x00\x10\xc0\x38\x01\x30\x6b\xba\xdc\x1b\xc0\ \x64\xeb\xbe\xf4\x99\xf2\x9b\xc0\x13\xa3\x04\x1c\x30\xdb\xb6\xc0\ \x5e\x4a\x12\x9f\x80\xef\xb8\xc0\x48\xf6\x8c\x7d\xe9\xbd\xf2\xc0\ \x50\xa8\x10\x7e\x26\x5b\x6d\x40\x48\xcf\x7a\x59\xa1\x24\xc5\xc0\ \x53\x09\x35\x0a\x19\xb4\xbb\xc0\x2f\x0b\x6a\x35\x97\xd3\x7e\x40\ \x3e\x88\x20\x7b\xc1\xb4\x2f\x40\x41\x20\x0b\x54\x51\x2e\x7e\x40\ \x39\xc9\x9e\xf7\xb2\xd8\xc6\xc0\x55\xfe\xc6\x23\xb0\x4f\x25\xc0\ \x1c\x1c\x60\x3d\x66\x92\xe7\xc0\x5d\xba\xce\x5e\x2a\x54\x25\x40\ \x43\xc4\x24\x4f\x00\x90\x62\x40\x58\x0b\xce\x4b\xd9\x22\xe1\xc0\ \x36\xed\xde\xb4\x40\x2c\x73\x40\x5a\xd1\x4e\xef\xc4\x03\x6b\x40\ \x3f\xdc\xbc\xa5\x13\x81\x98\xc0\x37\x1b\xea\x35\xa6\x66\xff\x40\ \x4c\x2e\x2d\x1e\x28\x01\x86\x40\x47\x49\xa3\x1a\xd5\xe2\xf0\x40\ \x48\xdd\x6f\xf6\xf0\x01\x68\xc0\x38\xc1\x32\x29\x64\xfb\x5b\x40\ \x66\xb7\xea\x61\x5e\xb1\x57\xc0\x3d\x45\x4c\x15\xef\x6f\x50\x40\ \x71\x9c\x53\x80\x4b\x64\x0c\x40\x42\x8c\x98\x55\x36\x48\x2a\x40\ \x65\xd8\xb5\x79\xf6\x83\x89\x40\x3d\xa6\xc3\x54\x49\x2b\x98\x40\ \x71\x29\xea\x7e\x10\x5d\xc3\x00\x00\x00\x10\x40\x31\xc2\x13\x60\ \x88\x8b\x4e\xc0\x68\x3c\xec\xdf\xc9\x5c\x2f\x40\x19\x5a\x83\xca\ \x1f\xc9\xc5\xc0\x62\x27\x36\xb4\x9b\x52\x60\xc0\x48\x60\x10\xa3\ \xc6\x74\xb4\xc0\x59\x39\x43\xd2\xf9\x7b\x4b\x40\x49\x55\xa6\x3b\ \x8b\xb1\xc9\xc0\x56\x88\xbb\x33\x01\xdc\x6b\xc0\x41\x53\xb3\x9c\ \x85\xff\x25\x3f\xf3\x70\x84\x8f\xed\xe9\x9b\x40\x2e\x1c\xbe\xb0\ \x48\x52\x79\x40\x1a\x5f\x89\xdb\x5b\x45\xc0\xc0\x50\xc0\xce\xa2\ \xc3\xe5\x44\xc0\x65\x26\x9c\x40\xed\xa0\x1a\xc0\x54\xa2\x72\xde\ \x2f\x48\xc9\xc0\x6b\xdd\x16\xce\x9e\x56\xb3\x40\x55\xdc\x36\x69\ \xb4\x6e\x69\xc0\x3d\xbd\x2f\xf0\x4e\x71\xd7\x40\x5a\x39\x0b\xe0\ \xb9\x21\xc7\x40\x37\x5e\x81\xe7\xe6\x46\x06\xc0\x47\xa4\x74\xb8\ \xaf\xb7\xee\x40\x38\xfe\xaa\x2d\x0e\x97\x7e\x40\x36\x4f\x1c\x98\ \xc9\x38\x7d\x40\x40\x43\x0a\x66\x30\x52\xdc\xc0\x3f\xd3\xf0\xcb\ \x87\x9d\x38\x40\x62\xae\x04\x10\x53\xde\x8c\xc0\x3d\x00\x25\x84\ \x92\xd2\x45\x40\x6f\x30\xbc\x58\x1f\xbc\xdf\x40\x41\x44\xa6\xc0\ \x0b\x29\xd8\x40\x63\xaa\x6a\x7a\x0d\xd9\x34\x40\x3e\xab\x98\x09\ \xd9\x42\x57\x40\x70\x16\x03\x15\xe6\x2f\x0a\ \x00\x00\x09\x2c\ \xff\ \xff\xff\xff\x00\x00\x00\x09\x00\x00\x00\x10\xc0\x36\xc1\x31\xf7\ \x71\x07\xcd\xc0\x62\xc4\x31\x65\x15\x96\x34\xc0\x22\x59\x75\x1b\ \x5e\x3f\xf0\xc0\x59\x80\x9a\x15\x13\xe9\x09\xc0\x47\x52\xc9\x1c\ \x2f\x1a\x7a\xc0\x45\x06\x29\x2a\x67\x31\x79\x40\x49\x64\xe4\x36\ \x8c\xfe\x06\xc0\x50\x22\x71\x64\xe5\x3f\xcb\x3f\xc9\x7e\x46\xc2\ \x82\x74\x41\x40\x48\xe2\x7c\x67\xa7\x02\xf2\x40\x48\x75\xb8\xda\ \x6c\xe4\xac\x40\x43\x43\x8c\xb1\x63\x97\xf6\xc0\x59\x94\x32\xd7\ \x73\x76\xf3\x3f\xf8\xd1\x11\x6b\x2c\x82\x25\xc0\x5f\x82\xbf\x09\ \xb5\x16\xad\x40\x4a\x15\x6d\x1b\x87\x1c\x19\x40\x55\x32\x73\xaa\ \x94\xec\x77\xc0\x04\x4e\x49\x68\xe6\x95\xd3\x40\x60\xe5\xde\x62\ \x15\x6c\x95\xc0\x3a\xbb\x5f\xa9\x86\x06\x7e\xc0\x0f\x68\xca\xdb\ \xdc\xdd\x36\x40\x53\x18\x3a\x74\x13\x56\x51\x40\x50\x12\x0e\xb5\ \x6f\x61\x5c\x40\x4e\x52\x58\x0d\xd3\x0c\x6d\xc0\x38\xbe\x69\x34\ \x34\x0d\xd7\x40\x69\x01\x3e\xaa\x3a\x4e\xf3\xc0\x3d\xff\xa9\xa5\ \x4e\x81\xa7\x40\x72\xc0\x69\xcc\x0a\xb2\x0e\x40\x3f\xa2\xaf\xee\ \xb2\x7a\xa3\x40\x66\xb7\x06\x0c\x87\xf6\x2d\x40\x3d\xae\x9a\x40\ \x3c\x67\x56\x40\x71\x9d\x34\xa4\xbb\x47\x7d\x00\x00\x00\x10\xc0\ \x30\xaf\xc1\x69\x97\x5a\x95\xc0\x63\x49\x63\x4e\x8e\x9f\xdc\xc0\ \x1e\xaf\xb7\x04\x39\xf0\x0c\xc0\x5a\x46\x95\xdc\xfb\x24\x8e\xc0\ \x49\x9c\xd2\x5c\x93\x47\x4c\xc0\x48\xb5\xcf\xe8\x99\x9c\xdd\x40\ \x48\x02\x8f\xa5\xd6\xdc\x31\xc0\x4e\xc7\x1a\x4e\x1b\x4a\x1c\xc0\ \x2c\x94\xbf\x13\x77\x29\x41\x40\x47\x68\xf0\xdd\xb4\xba\x6a\x40\ \x41\xac\x5d\x06\x4f\x13\x18\x40\x44\x62\x29\x5f\x79\x2c\x69\xc0\ \x58\x78\xf9\x10\x42\x39\x8c\x40\x0d\x9e\x34\x27\x91\xbd\x70\xc0\ \x63\x03\xb5\x2e\x0b\xf6\xb5\x40\x31\x49\xc5\x70\x34\x57\xdc\x40\ \x55\x55\x0b\xb2\x96\x65\xb2\xbf\xf7\xd0\xc3\xa3\x37\x60\x82\x40\ \x60\xe6\x74\x90\x7c\xd3\xd5\xc0\x3a\xbd\xb7\xf4\x49\xd6\x6d\xc0\ \x35\x33\x14\x59\x01\x4b\xa9\x40\x52\x36\xaa\xf8\xcd\xd9\x51\x40\ \x48\x24\x95\xbf\x77\x92\xaf\x40\x50\x19\x5d\x72\x39\xa4\xee\xc0\ \x38\x3c\x43\x48\x09\x4c\x70\x40\x68\xc7\x21\x6e\x01\xfb\xd3\xc0\ \x3d\xe6\x09\x44\x84\xd2\x4f\x40\x72\xa2\xff\xdd\x04\x92\x32\x40\ \x3d\x30\xda\x3a\xb4\x2e\xfe\x40\x67\x8a\xdf\x98\x83\xb8\xf6\x40\ \x3d\xa4\x89\x7f\x23\xcd\xd5\x40\x72\x07\x6b\x4d\x22\x90\x7e\x00\ \x00\x00\x10\x3f\xe8\xdc\xd8\x6c\x4e\xe2\x7a\xc0\x63\x6c\xe1\x17\ \xf2\xa0\xbf\xc0\x1c\xa0\x1f\x76\xa3\x67\x0e\xc0\x5a\x82\x4b\xa2\ \xc3\x07\x44\xc0\x4e\x6a\xa4\x92\xae\xdd\x89\xc0\x4e\x00\xb1\x06\ \xb8\xfd\xe4\x40\x43\x6f\xe2\x4f\x4e\xd0\x7e\xc0\x4a\x2d\xf6\xac\ \x0f\xbe\x52\xc0\x45\xc6\xbd\x2e\xcf\xf5\x06\x40\x44\xce\x84\x52\ \x4a\x5a\x37\x40\x19\x34\x31\x96\xfb\x44\x7f\x40\x46\xb7\xe1\xb0\ \xec\xbd\xa9\xc0\x58\xfd\xf7\xfd\x56\xdc\x11\xbf\xf1\xca\x67\x3c\ \x06\x01\x31\xc0\x63\x1e\x02\x33\x3c\x22\x49\xc0\x32\xfa\x9d\x13\ \x66\xaf\x41\x40\x54\x9e\xa9\xbe\x7c\x61\xe3\x40\x0a\x72\xb1\x55\ \x98\x28\x33\x40\x61\x32\xb3\x01\xb0\xbc\x2d\xc0\x18\x63\x1b\xa0\ \x7e\x49\xee\xc0\x4b\xb7\xac\x9e\xf7\xef\xea\x40\x50\x71\xa3\x37\ \xe4\x2e\xa7\x40\x2c\xb8\x60\xb8\xfe\xc6\xc2\x40\x51\xc8\x31\x75\ \xbd\x97\x6c\xc0\x3b\x25\x5d\xe3\x55\xb6\xc3\x40\x67\x7e\x28\x3a\ \x2f\xcf\x04\xc0\x3d\x79\xfb\x74\x2a\xf4\x86\x40\x72\x00\xa4\xae\ \xf2\x81\x95\x40\x3c\xfa\x8b\x66\xc9\x22\x30\x40\x68\x75\x84\x1e\ \x7d\x6d\xd4\x40\x3d\xb5\xf8\x8b\xe7\x75\x6d\x40\x72\x7c\xb6\xc6\ \x9a\xe9\x9a\x00\x00\x00\x10\x3f\xe4\x9d\xa9\x42\x5e\xe7\x43\xc0\ \x63\x56\x3a\x89\xf9\xf5\x03\xc0\x1b\xb9\xb9\x7a\xc0\xda\x37\xc0\ \x5a\x51\x6d\x68\xd6\x38\x91\xc0\x4f\xf0\xb8\xf8\x76\x60\x54\xc0\ \x4f\xad\xc6\x15\x51\x43\xe4\x40\x41\x7d\xdd\x1f\xa6\x7e\x97\xc0\ \x48\x29\x8c\x8c\x88\xc5\xd5\xc0\x4b\x19\x1c\xf8\xef\x04\xe9\x40\ \x43\xa1\x52\x38\x86\xcc\xe1\xc0\x13\x11\x86\xaf\xfa\x18\xd1\x40\ \x47\x64\x45\xcd\x84\x52\xf0\xc0\x5d\x6b\xc7\x4d\xed\xcd\x82\xc0\ \x31\x79\xa5\x95\x16\x3c\x6c\xc0\x64\x78\xba\xa8\x85\x58\x74\xc0\ \x48\x8e\x36\x95\x37\x4b\xa5\x40\x54\xcc\x34\x76\x69\xe8\x4e\x40\ \x0b\x3e\xdf\x5f\x9e\x8d\xa3\x40\x60\x65\x54\x53\xc4\x38\x71\x40\ \x40\x0c\xb3\x84\x9f\xd2\x9c\xc0\x50\xf6\x2c\x1c\x95\xbd\x9f\x40\ \x4f\x3b\xb0\x51\x91\x96\x07\x3f\xf5\xb6\xbb\x4c\x89\xfb\xa7\x40\ \x52\x40\x4d\xcb\x0f\x40\xae\xc0\x3e\x45\x9a\x76\x56\xfb\xac\x40\ \x66\xc3\x4b\x9c\xe2\xcb\x0b\xc0\x3d\x73\xb5\x3b\x21\x32\xb6\x40\ \x71\xa3\x97\xbc\x79\xdf\x84\x40\x3c\xd5\xf8\x27\x62\x64\x9d\x40\ \x68\x6b\x6d\x0c\x69\x1b\x7e\x40\x3d\xb5\x37\x81\x76\xb1\xee\x40\ \x72\x77\xa6\xa6\x21\xce\x5f\x00\x00\x00\x10\xbf\xe3\x54\xf9\xd1\ \xc3\xbb\x96\xc0\x62\x39\x5d\x48\x40\x62\x61\xc0\x13\xa4\x40\xfe\ \x23\x41\x66\xc0\x57\xfe\x9e\x7a\x5a\x8c\x65\xc0\x51\x53\x87\x2f\ \x98\x9f\x2f\xc0\x50\xb1\x13\x00\xa7\xbf\x57\x40\x38\x4d\x1d\xa7\ \x39\x9a\x03\xc0\x3f\x95\x6d\x6a\x72\xf6\x4d\xc0\x54\x45\x8b\x2f\ \x57\x8e\x27\x40\x41\xd1\x53\x04\xab\x6e\xf7\xc0\x41\x24\x47\xc5\ \x1a\x30\x9b\x40\x4a\x9d\x0a\xaa\x84\xfc\x0d\xc0\x61\x26\xda\xae\ \x5a\xbe\x0d\xc0\x47\x87\xad\x31\xe6\x56\x49\xc0\x65\xf1\xab\xa2\ \x9d\x71\x7a\xc0\x55\xef\x9f\x23\x26\xbf\xfd\x40\x44\x02\xa4\x34\ \x49\x99\xb4\x40\x42\xad\xc5\x39\xfc\xc3\xc9\x40\x54\x77\x1a\x63\ \x55\xdd\x55\x3f\xd2\x3b\x7b\x22\x6a\xd6\x1f\xc0\x58\xcf\x8d\xc1\ \xb5\x07\x54\x40\x4b\xc2\x62\x63\xab\x19\x62\xc0\x40\xdb\xfa\x46\ \x22\x87\x89\x40\x54\x09\x64\xf2\x9a\x80\x2a\xc0\x44\xeb\x29\x9a\ \x2f\x94\x49\x40\x64\xe0\x36\x35\x4c\x3c\x43\xc0\x3e\x7e\x4a\x3b\ \x7b\x99\xfd\x40\x70\xa7\xca\x20\xaa\x48\xd9\x40\x39\x90\x46\xa5\ \x32\x46\xfc\x40\x67\xd4\xc0\x6c\x37\x15\xaa\x40\x3d\x93\xe0\x30\ \xd5\xa0\xe6\x40\x72\x2b\x16\x2e\xda\x91\xd2\x00\x00\x00\x10\xbf\ \xd7\x9d\xe7\xa1\x97\x39\xc0\xc0\x62\xbc\xd5\xa4\x38\x2b\x33\xc0\ \x2b\x24\x07\xa2\xf7\xbc\x3a\xc0\x59\x6b\x39\x1d\x48\x8d\x2d\xc0\ \x50\xfc\x22\x5d\x98\xd8\xe0\xc0\x4c\x3b\x80\x46\xaf\xdc\x40\x40\ \x3f\xa3\xe1\x10\x37\xbc\x7c\xc0\x47\xa7\x33\xb0\x1d\xd6\x38\xc0\ \x4a\x1a\x00\x9f\xcb\xe1\x48\x40\x46\xb3\xbc\xc6\xce\x1c\xfe\xc0\ \x03\x4e\xc7\x08\x76\xc7\x1c\x40\x48\xfd\xf5\x33\x7e\x4b\x81\xc0\ \x60\x62\xd0\x37\xd0\x3e\x25\xc0\x38\xa5\xfa\x53\xfc\x7a\x7d\xc0\ \x64\x52\x8c\x8e\xde\xf0\x6d\xc0\x51\xb5\x7b\xf0\xe3\x85\x21\x40\ \x52\x61\x8e\x3b\xeb\xd1\xde\x40\x23\x54\x72\x4d\x7e\x66\xb6\x40\ \x5a\xc6\x30\x18\x78\x65\x5e\xc0\x41\x84\x35\xad\x81\xc8\x84\xc0\ \x50\x1c\xe1\x3c\xef\x41\x96\x40\x51\x58\x7f\x41\x27\xa7\x22\x40\ \x15\x04\xa4\x11\x8b\xa5\x4c\x40\x52\xf2\xe2\x10\x1d\xbe\x94\xc0\ \x3a\xad\xdb\xf6\xe0\xcd\x29\x40\x67\x9e\xa8\x6e\xa4\x7f\x43\xc0\ \x3d\xa4\xca\x4b\x1f\x0f\x46\x40\x72\x10\xa0\x16\xce\x0d\xd1\x40\ \x3d\xed\xb9\x7b\x1d\xf5\x8a\x40\x68\xd7\xc6\xd6\xaf\x31\x50\x40\ \x3d\xb4\xa6\x32\xb3\x72\x09\x40\x72\xad\xe2\x15\x3d\xe8\xd8\x00\ \x00\x00\x10\xc0\x34\xf7\x01\x4a\xe8\x31\x37\xc0\x63\x08\xe7\x3c\ \xd7\x52\x6e\xc0\x32\x87\x01\x16\xce\x22\x54\xc0\x59\x95\x8a\xc3\ \xc9\x1c\xb8\xc0\x51\x35\xc9\xdc\xb0\xdf\xb7\xc0\x4a\x53\xba\xaa\ \x59\xe9\x6d\x40\x3f\x27\xe3\x21\x77\x13\xbc\xc0\x4a\x03\x47\xa6\ \x3c\x27\xd1\xc0\x46\x3c\x28\x27\x7d\x72\x7b\x40\x47\xbf\xcc\xb2\ \x9b\x75\xf7\x40\x16\x1c\xbe\x7d\x45\x21\x89\x40\x47\xe9\x2b\xf5\ \x69\xa9\x7a\xc0\x5e\xfa\xe4\x52\xe2\xee\x3d\xc0\x20\x9f\xc3\x12\ \xc5\x03\x2a\xc0\x63\x2d\x67\xd4\x68\xd9\xd5\xc0\x4b\xe6\x04\xf7\ \xc6\xd3\xb2\x40\x56\x9a\x17\x7f\xf0\x8a\x61\xc0\x2a\xde\xdc\xce\ \x99\x86\xc2\x40\x5d\x35\xe2\x20\x89\xba\x10\xc0\x4f\x58\x95\x85\ \x01\x84\xd4\xc0\x4b\x51\x42\xfa\x2b\xa5\xef\x40\x52\x1b\x84\x34\ \xad\x36\xdf\x40\x2e\xba\x76\xa5\xb1\xb8\x45\x40\x52\x39\x02\x49\ \xaa\x30\x3e\xc0\x37\xb9\x6f\x87\xfd\xd0\x77\x40\x68\x3e\xb5\xb9\ \xe8\xcd\x8a\xc0\x3d\xdf\x2f\x40\x7a\xc8\xd0\x40\x72\x5e\x54\xd0\ \xa5\x34\x44\x40\x3d\x8f\xfd\xe1\x90\x52\x8a\x40\x68\xaf\x88\xff\ \xd8\xfc\x30\x40\x3d\xb4\x96\xe1\xc9\x47\x14\x40\x72\x99\xc3\xc3\ \x16\xad\x07\x00\x00\x00\x10\xc0\x44\x1f\xc5\xb0\x8d\xff\xf8\xc0\ \x62\xd7\xcc\xdb\x51\x37\xe9\xc0\x38\x70\x1f\x26\x3f\xdd\xd1\xc0\ \x59\xd3\xca\x12\xd1\x6d\x66\xc0\x50\x9b\x5f\xdf\x54\x98\x82\xc0\ \x47\x35\x38\xde\x3e\x59\xd1\x40\x40\x3a\x4b\xde\xb1\x11\x5e\xc0\ \x4e\xa8\xe3\x73\xc2\x1e\x04\xc0\x3a\xcd\xa4\x3c\x9c\xa3\x4a\x40\ \x48\x5e\xe9\xc8\x41\x4a\x06\x40\x36\xa3\x67\x5c\xdf\x00\x72\x40\ \x44\xa5\x11\xd4\x30\xbb\xbe\xc0\x58\xc8\x06\xa1\x52\x29\xa4\x40\ \x30\x47\xe1\xaa\x31\x64\x3e\xc0\x63\x5d\xb2\xe9\xcc\x7a\xe2\x40\ \x29\xe9\x00\x97\x5b\x70\xaa\x40\x58\x50\x0c\x6f\xef\x08\x06\xc0\ \x40\x80\xf5\x5f\x55\x35\x51\x40\x60\xea\x26\xcc\x19\xc3\x62\xc0\ \x52\x7c\x87\x94\x54\x11\xcd\xc0\x40\x7b\x99\x9a\x58\x7d\x4e\x40\ \x52\xbc\xf9\x47\x74\x9c\xd3\x40\x42\x20\x54\x4b\xe3\x87\xa0\x40\ \x50\x21\x47\x81\x50\x58\x25\xc0\x35\xd8\x1b\x0b\x45\x8c\xdd\x40\ \x68\xfb\x74\x42\x1b\x4c\x50\xc0\x3e\x4d\x9f\x09\xae\x3a\xcb\x40\ \x72\xb9\xff\x8f\xad\x92\x5a\x40\x3d\x6b\xf8\x3a\xfe\x5b\xcc\x40\ \x67\xb7\x76\x0a\x83\x1d\x2b\x40\x3d\xaf\x2e\x02\x24\x00\xa5\x40\ \x72\x1d\xb9\x4a\x83\x5a\x36\x00\x00\x00\x10\xc0\x56\x21\x7b\x1a\ \x2d\x27\x74\xc0\x5d\x7f\x81\xf7\x72\x97\xeb\xc0\x45\x6a\xce\x4b\ \x4a\x59\x0e\xc0\x58\x6b\x98\xca\x1a\xce\x5b\xc0\x50\x79\x21\x8d\ \x02\xed\x0a\xc0\x3e\xd5\xf2\x5c\x01\x40\xa0\x40\x38\x02\xd4\x2c\ \x79\x7b\xb7\xc0\x52\xa7\xde\x66\xb0\xaa\x42\x3f\xd7\xb5\xe2\x7b\ \x89\xa4\xca\x40\x48\x0f\x83\x05\x1a\x5b\x33\x40\x46\xa9\x42\x70\ \x82\xf2\xfc\x40\x3a\x3a\x42\xb9\x85\x37\x29\xc0\x54\xe2\xc5\x27\ \x1d\x51\x6a\x40\x42\xd1\x7b\x2a\xa1\x08\x15\xc0\x61\x0b\x0a\x8b\ \x23\x7a\xc0\x40\x33\x47\x9a\x49\x82\xe6\x81\x40\x57\xac\xeb\x9b\ \x79\x30\xfa\xc0\x53\x13\x15\xe5\x3e\x1d\x05\x40\x60\x43\xab\x51\ \xbf\x87\xef\xc0\x5d\xe3\x5c\x69\xf3\x2d\x89\x40\x02\x9d\x80\x74\ \x60\xb9\xea\x40\x52\xbe\x74\x1e\x0d\x17\x2d\x40\x50\x50\x9b\xe2\ \xa5\xba\x4e\x40\x46\x29\x92\xd8\xeb\x51\xb2\xc0\x32\x67\x07\xb9\ \x5f\xcb\x99\x40\x68\xd4\xcc\x9f\x63\x2f\x21\xc0\x3e\x08\x79\x67\ \x07\x43\x5b\x40\x72\xa1\x8d\xaf\x2d\x86\xe8\x40\x43\x38\x54\x39\ \x89\x5f\xf6\x40\x64\xda\x52\xe8\xbe\xbd\x10\x40\x3e\xaa\x65\xda\ \xb3\xd9\xcf\x40\x70\xaa\x52\xf4\x99\xff\x0c\ \x00\x00\x01\x0c\ \xff\ \xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x10\xc0\x72\x75\xd0\xbc\ \x4a\x7e\x3b\x40\x6e\xa8\x3a\x76\xcc\x4a\x4f\xc0\x6e\xc4\x15\x8d\ \xdb\x8a\x81\x40\x6d\x91\x95\x4a\xaf\x90\x71\xc0\x69\x4c\xfe\x50\ \x6c\x77\x6e\x40\x72\x41\xf5\x29\xa3\x44\xca\xc0\x67\xd1\xbb\x6b\ \x66\xf4\xfc\x40\x68\x1a\x7c\x41\xab\x27\xf0\xc0\x59\x09\x41\xf0\ \xd6\x29\x49\x40\x71\x72\x68\x78\x60\x60\x84\xc0\x57\x8e\x4b\x36\ \x5e\x8b\x6f\x40\x6c\xb0\x0b\xce\x10\xc5\x22\xc0\x70\xf5\x12\xcb\ \xa7\x78\x95\x40\x71\x44\x4e\x7a\x50\x85\x9f\xc0\x74\x72\x66\x5a\ \x1e\x1b\xae\x40\x71\x17\xf1\xe4\xf6\x7f\x7e\xc0\x64\x2e\x57\x5b\ \xe3\x6f\x6c\x40\x70\x14\x53\x5e\x5b\x6a\x7a\xc0\x60\x2d\xc9\x35\ \x26\xaf\xd0\x40\x72\xf1\x84\xb6\xf0\xd8\xae\xc0\x53\x20\x21\x2d\ \x64\x5b\xb3\x40\x72\x40\xa0\x97\xbf\x55\x8f\xc0\x51\x0d\xcf\x0f\ \x1b\x48\x3c\x40\x6b\xd1\x05\xa8\x2a\xdf\x62\x40\x44\x77\x7b\xec\ \x05\x04\x13\x40\x6f\x01\xfc\x1b\x65\x69\x69\x40\x61\x21\xf2\x32\ \xa1\xd8\xd9\x40\x71\x41\x25\x0f\x44\xd0\xa8\x40\x4c\x88\xe7\x4e\ \xbb\xeb\xb8\x40\x6c\x7b\xe4\x15\x28\x7a\x0a\x40\x62\x87\x8c\xab\ \xb5\x95\xf1\x40\x70\xd4\x4b\x4c\x03\x9d\x83\ " qt_resource_name = b"\ \x00\x0a\ \x03\x88\x10\x53\ \x00\x61\ \x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\ \x00\x08\ \x0f\x03\x25\x67\ \x00\x63\ \x00\x68\x00\x69\x00\x6c\x00\x6c\x00\x69\x00\x6e\x00\x67\ \x00\x07\ \x01\xc4\x70\xa7\ \x00\x6a\ \x00\x75\x00\x6d\x00\x70\x00\x69\x00\x6e\x00\x67\ \x00\x07\ \x0a\x84\xa0\x87\ \x00\x64\ \x00\x61\x00\x6e\x00\x63\x00\x69\x00\x6e\x00\x67\ \x00\x04\ \x00\x06\xab\x74\ \x00\x64\ \x00\x65\x00\x61\x00\x64\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x58\x00\x00\x00\x00\x00\x01\x00\x00\x27\xc0\ \x00\x00\x00\x30\x00\x00\x00\x00\x00\x01\x00\x00\x19\x70\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x90\ \x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/dbus/0000755000076500000240000000000012613140041016021 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dbus/chat/0000755000076500000240000000000012613140041016740 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dbus/chat/chat.py0000755000076500000240000001517512613140041020245 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSignal, pyqtSlot, Q_CLASSINFO from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow, QMessageBox from PyQt5.QtDBus import (QDBusAbstractAdaptor, QDBusAbstractInterface, QDBusConnection, QDBusMessage) from ui_chatmainwindow import Ui_ChatMainWindow from ui_chatsetnickname import Ui_NicknameDialog class ChatAdaptor(QDBusAbstractAdaptor): Q_CLASSINFO("D-Bus Interface", 'org.example.chat') Q_CLASSINFO("D-Bus Introspection", '' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '') action = pyqtSignal(str, str) message = pyqtSignal(str, str) def __init__(self, parent): super(ChatAdaptor, self).__init__(parent) self.setAutoRelaySignals(True) class ChatInterface(QDBusAbstractInterface): action = pyqtSignal(str, str) message = pyqtSignal(str, str) def __init__(self, service, path, connection, parent=None): super(ChatInterface, self).__init__(service, path, 'org.example.chat', connection, parent) class ChatMainWindow(QMainWindow, Ui_ChatMainWindow): action = pyqtSignal(str, str) message = pyqtSignal(str, str) def __init__(self): super(ChatMainWindow, self).__init__() self.m_nickname = "nickname" self.m_messages = [] self.setupUi(self) self.sendButton.setEnabled(False) self.messageLineEdit.textChanged.connect(self.textChangedSlot) self.sendButton.clicked.connect(self.sendClickedSlot) self.actionChangeNickname.triggered.connect(self.changeNickname) self.actionAboutQt.triggered.connect(self.aboutQt) QApplication.instance().lastWindowClosed.connect(self.exiting) # Add our D-Bus interface and connect to D-Bus. ChatAdaptor(self) QDBusConnection.sessionBus().registerObject('/', self) iface = ChatInterface('', '', QDBusConnection.sessionBus(), self) QDBusConnection.sessionBus().connect('', '', 'org.example.chat', 'message', self.messageSlot) iface.action.connect(self.actionSlot) dialog = NicknameDialog() dialog.cancelButton.setVisible(False) dialog.exec_() self.m_nickname = dialog.nickname.text().strip() self.action.emit(self.m_nickname, "joins the chat") def rebuildHistory(self): history = '\n'.join(self.m_messages) self.chatHistory.setPlainText(history) @pyqtSlot(str, str) def messageSlot(self, nickname, text): self.m_messages.append("<%s> %s" % (nickname, text)) if len(self.m_messages) > 100: self.m_messages.pop(0) self.rebuildHistory() @pyqtSlot(str, str) def actionSlot(self, nickname, text): self.m_messages.append("* %s %s" % (nickname, text)) if len(self.m_messages) > 100: self.m_messages.pop(0) self.rebuildHistory() @pyqtSlot(str) def textChangedSlot(self, newText): self.sendButton.setEnabled(newText != '') @pyqtSlot() def sendClickedSlot(self): msg = QDBusMessage.createSignal('/', 'org.example.chat', 'message') msg << self.m_nickname << self.messageLineEdit.text() QDBusConnection.sessionBus().send(msg) self.messageLineEdit.setText('') @pyqtSlot() def changeNickname(self): dialog = NicknameDialog(self) if dialog.exec_() == QDialog.Accepted: old = self.m_nickname self.m_nickname = dialog.nickname.text().strip() self.action.emit(old, "is now known as %s" % self.m_nickname) @pyqtSlot() def aboutQt(self): QMessageBox.aboutQt(self) @pyqtSlot() def exiting(self): self.action.emit(self.m_nickname, "leaves the chat") class NicknameDialog(QDialog, Ui_NicknameDialog): def __init__(self, parent=None): super(NicknameDialog, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': import sys app = QApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("Cannot connect to the D-Bus session bus.\n" "Please check your system settings and try again.\n") sys.exit(1) chat = ChatMainWindow() chat.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dbus/chat/chatmainwindow.ui0000644000076500000240000001114512613140041022315 0ustar philstaff00000000000000 ChatMainWindow 0 0 800 600 Qt D-Bus Chat 9 6 0 6 false Messages sent and received from other users true 0 6 Message: messageLineEdit 1 0 0 0 Sends a message to other people Send 0 0 800 31 Help File Quit Ctrl+Q About Qt... Change nickname... Ctrl+N chatHistory messageLineEdit sendButton messageLineEdit returnPressed() sendButton animateClick() 299 554 744 551 actionQuit triggered(bool) ChatMainWindow close() -1 -1 399 299 PyQt-gpl-5.5.1/examples/dbus/chat/chatsetnickname.ui0000644000076500000240000000646612613140041022454 0ustar philstaff00000000000000 NicknameDialog 0 0 396 105 1 1 0 0 Set nickname 9 6 0 6 1 1 0 0 New nickname: 0 6 Qt::Horizontal 131 31 OK Cancel Qt::Horizontal 40 20 okButton clicked() NicknameDialog accept() 278 253 96 254 cancelButton clicked() NicknameDialog reject() 369 253 179 282 PyQt-gpl-5.5.1/examples/dbus/chat/ui_chatmainwindow.py0000644000076500000240000001231512613140041023025 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'chatmainwindow.ui' # # Created: Fri Jul 26 06:48:06 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_ChatMainWindow(object): def setupUi(self, ChatMainWindow): ChatMainWindow.setObjectName("ChatMainWindow") ChatMainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(ChatMainWindow) self.centralwidget.setObjectName("centralwidget") self.hboxlayout = QtWidgets.QHBoxLayout(self.centralwidget) self.hboxlayout.setContentsMargins(9, 9, 9, 9) self.hboxlayout.setSpacing(6) self.hboxlayout.setObjectName("hboxlayout") self.vboxlayout = QtWidgets.QVBoxLayout() self.vboxlayout.setContentsMargins(0, 0, 0, 0) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.chatHistory = QtWidgets.QTextBrowser(self.centralwidget) self.chatHistory.setAcceptDrops(False) self.chatHistory.setAcceptRichText(True) self.chatHistory.setObjectName("chatHistory") self.vboxlayout.addWidget(self.chatHistory) self.hboxlayout1 = QtWidgets.QHBoxLayout() self.hboxlayout1.setContentsMargins(0, 0, 0, 0) self.hboxlayout1.setSpacing(6) self.hboxlayout1.setObjectName("hboxlayout1") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.hboxlayout1.addWidget(self.label) self.messageLineEdit = QtWidgets.QLineEdit(self.centralwidget) self.messageLineEdit.setObjectName("messageLineEdit") self.hboxlayout1.addWidget(self.messageLineEdit) self.sendButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(1), QtWidgets.QSizePolicy.Policy(0)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sendButton.sizePolicy().hasHeightForWidth()) self.sendButton.setSizePolicy(sizePolicy) self.sendButton.setWhatsThis("") self.sendButton.setObjectName("sendButton") self.hboxlayout1.addWidget(self.sendButton) self.vboxlayout.addLayout(self.hboxlayout1) self.hboxlayout.addLayout(self.vboxlayout) ChatMainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(ChatMainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31)) self.menubar.setObjectName("menubar") self.menuQuit = QtWidgets.QMenu(self.menubar) self.menuQuit.setObjectName("menuQuit") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") ChatMainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(ChatMainWindow) self.statusbar.setObjectName("statusbar") ChatMainWindow.setStatusBar(self.statusbar) self.actionQuit = QtWidgets.QAction(ChatMainWindow) self.actionQuit.setObjectName("actionQuit") self.actionAboutQt = QtWidgets.QAction(ChatMainWindow) self.actionAboutQt.setObjectName("actionAboutQt") self.actionChangeNickname = QtWidgets.QAction(ChatMainWindow) self.actionChangeNickname.setObjectName("actionChangeNickname") self.menuQuit.addAction(self.actionAboutQt) self.menuFile.addAction(self.actionChangeNickname) self.menuFile.addSeparator() self.menuFile.addAction(self.actionQuit) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuQuit.menuAction()) self.label.setBuddy(self.messageLineEdit) self.retranslateUi(ChatMainWindow) self.messageLineEdit.returnPressed.connect(self.sendButton.animateClick) self.actionQuit.triggered['bool'].connect(ChatMainWindow.close) QtCore.QMetaObject.connectSlotsByName(ChatMainWindow) ChatMainWindow.setTabOrder(self.chatHistory, self.messageLineEdit) ChatMainWindow.setTabOrder(self.messageLineEdit, self.sendButton) def retranslateUi(self, ChatMainWindow): _translate = QtCore.QCoreApplication.translate ChatMainWindow.setWindowTitle(_translate("ChatMainWindow", "Qt D-Bus Chat")) self.chatHistory.setToolTip(_translate("ChatMainWindow", "Messages sent and received from other users")) self.label.setText(_translate("ChatMainWindow", "Message:")) self.sendButton.setToolTip(_translate("ChatMainWindow", "Sends a message to other people")) self.sendButton.setText(_translate("ChatMainWindow", "Send")) self.menuQuit.setTitle(_translate("ChatMainWindow", "Help")) self.menuFile.setTitle(_translate("ChatMainWindow", "File")) self.actionQuit.setText(_translate("ChatMainWindow", "Quit")) self.actionQuit.setShortcut(_translate("ChatMainWindow", "Ctrl+Q")) self.actionAboutQt.setText(_translate("ChatMainWindow", "About Qt...")) self.actionChangeNickname.setText(_translate("ChatMainWindow", "Change nickname...")) self.actionChangeNickname.setShortcut(_translate("ChatMainWindow", "Ctrl+N")) PyQt-gpl-5.5.1/examples/dbus/chat/ui_chatsetnickname.py0000644000076500000240000000652412613140041023157 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'chatsetnickname.ui' # # Created: Fri Jul 26 06:48:20 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_NicknameDialog(object): def setupUi(self, NicknameDialog): NicknameDialog.setObjectName("NicknameDialog") NicknameDialog.resize(396, 105) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(1), QtWidgets.QSizePolicy.Policy(1)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(NicknameDialog.sizePolicy().hasHeightForWidth()) NicknameDialog.setSizePolicy(sizePolicy) self.vboxlayout = QtWidgets.QVBoxLayout(NicknameDialog) self.vboxlayout.setContentsMargins(9, 9, 9, 9) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.vboxlayout1 = QtWidgets.QVBoxLayout() self.vboxlayout1.setContentsMargins(0, 0, 0, 0) self.vboxlayout1.setSpacing(6) self.vboxlayout1.setObjectName("vboxlayout1") self.label = QtWidgets.QLabel(NicknameDialog) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(1), QtWidgets.QSizePolicy.Policy(1)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setObjectName("label") self.vboxlayout1.addWidget(self.label) self.nickname = QtWidgets.QLineEdit(NicknameDialog) self.nickname.setObjectName("nickname") self.vboxlayout1.addWidget(self.nickname) self.vboxlayout.addLayout(self.vboxlayout1) self.hboxlayout = QtWidgets.QHBoxLayout() self.hboxlayout.setContentsMargins(0, 0, 0, 0) self.hboxlayout.setSpacing(6) self.hboxlayout.setObjectName("hboxlayout") spacerItem = QtWidgets.QSpacerItem(131, 31, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem) self.okButton = QtWidgets.QPushButton(NicknameDialog) self.okButton.setObjectName("okButton") self.hboxlayout.addWidget(self.okButton) self.cancelButton = QtWidgets.QPushButton(NicknameDialog) self.cancelButton.setObjectName("cancelButton") self.hboxlayout.addWidget(self.cancelButton) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem1) self.vboxlayout.addLayout(self.hboxlayout) self.retranslateUi(NicknameDialog) self.okButton.clicked.connect(NicknameDialog.accept) self.cancelButton.clicked.connect(NicknameDialog.reject) QtCore.QMetaObject.connectSlotsByName(NicknameDialog) def retranslateUi(self, NicknameDialog): _translate = QtCore.QCoreApplication.translate NicknameDialog.setWindowTitle(_translate("NicknameDialog", "Set nickname")) self.label.setText(_translate("NicknameDialog", "New nickname:")) self.okButton.setText(_translate("NicknameDialog", "OK")) self.cancelButton.setText(_translate("NicknameDialog", "Cancel")) PyQt-gpl-5.5.1/examples/dbus/listnames.py0000755000076500000240000000671712613140041020410 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QCoreApplication from PyQt5.QtDBus import QDBusConnection, QDBusInterface def method1(): sys.stdout.write("Method 1:\n") reply = QDBusConnection.sessionBus().interface().registeredServiceNames() if not reply.isValid(): sys.stdout.write("Error: %s\n" % reply.error().message()) sys.exit(1) # Mimic the output from the C++ version. for name in reply.value(): sys.stdout.write('"%s"\n' % name) def method2(): sys.stdout.write("Method 2:\n") bus = QDBusConnection.sessionBus() dbus_iface = QDBusInterface('org.freedesktop.DBus', '/org/freedesktop/DBus', 'org.freedesktop.DBus', bus) names = dbus_iface.call('ListNames').arguments()[0] # Mimic the output from the C++ version. sys.stdout.write('QVariant(QStringList, ("%s") )\n' % '", "'.join(names)) def method3(): sys.stdout.write("Method 3:\n") names = QDBusConnection.sessionBus().interface().registeredServiceNames().value() # Mimic the output from the C++ version. sys.stdout.write('("%s")\n' % '", "'.join(names)) if __name__ == '__main__': app = QCoreApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("Cannot connect to the D-Bus session bus.\n" "To start it, run:\n" "\teval `dbus-launch --auto-syntax`\n"); sys.exit(1) method1() method2() method3() sys.exit() PyQt-gpl-5.5.1/examples/dbus/pingpong/0000755000076500000240000000000012613140041017642 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dbus/pingpong/ping.py0000644000076500000240000000574112613140041021160 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QCoreApplication from PyQt5.QtDBus import QDBusConnection, QDBusInterface, QDBusReply if __name__ == '__main__': app = QCoreApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("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('org.example.QtDBus.PingExample', '/', '', QDBusConnection.sessionBus()) if iface.isValid(): msg = iface.call('ping', sys.argv[1] if len(sys.argv) > 1 else "") reply = QDBusReply(msg) if reply.isValid(): sys.stdout.write("Reply was: %s\n" % reply.value()) sys.exit() sys.stderr.write("Call failed: %s\n" % reply.error().message()) sys.exit(1) sys.stderr.write("%s\n" % QDBusConnection.sessionBus().lastError().message()) sys.exit(1) PyQt-gpl-5.5.1/examples/dbus/pingpong/pong.py0000644000076500000240000000573512613140041021171 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSlot, QCoreApplication, QMetaObject, QObject from PyQt5.QtDBus import QDBusConnection class Pong(QObject): @pyqtSlot(str, result=str) def ping(self, arg): QMetaObject.invokeMethod(QCoreApplication.instance(), 'quit') return "ping(\"%s\") got called" % arg if __name__ == '__main__': app = QCoreApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("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 QDBusConnection.sessionBus().registerService('org.example.QtDBus.PingExample'): sys.stderr.write("%s\n" % QDBusConnection.sessionBus().lastError().message()) sys.exit(1) pong = Pong() QDBusConnection.sessionBus().registerObject('/', pong, QDBusConnection.ExportAllSlots) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/0000755000076500000240000000000012613140041022070 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/car/0000755000076500000240000000000012613140041022635 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/car/car.py0000755000076500000240000001460112613140041023761 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import pyqtSlot, Q_CLASSINFO, QRectF, Qt from PyQt5.QtGui import QBrush, QPainter, QTransform from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsObject, QGraphicsScene, QGraphicsView) from PyQt5.QtDBus import QDBusAbstractAdaptor, QDBusConnection class Car(QGraphicsObject): def __init__(self): super(Car, self).__init__() self.color = QBrush(Qt.green) self.wheelsAngle = 0.0 self.speed = 0.0 self.startTimer(1000 // 33) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setFlag(QGraphicsItem.ItemIsFocusable, True) def accelerate(self): if self.speed < 10: self.speed += 1 def decelerate(self): if self.speed > -10: self.speed -= 1 def turnLeft(self): if self.wheelsAngle > -30: self.wheelsAngle -= 5 def turnRight(self): if self.wheelsAngle < 30: self.wheelsAngle += 5 def boundingRect(self): return QRectF(-35, -81, 70, 115) def timerEvent(self, event): axelDistance = 54.0 wheelsAngleRads = (self.wheelsAngle * math.pi) / 180 turnDistance = math.cos(wheelsAngleRads) * axelDistance * 2 turnRateRads = wheelsAngleRads / turnDistance turnRate = (turnRateRads * 180) / math.pi rotation = self.speed * turnRate self.setTransform(QTransform().rotate(rotation), True) self.setTransform(QTransform.fromTranslate(0, -self.speed), True) self.update() def paint(self, painter, option, widget): painter.setBrush(Qt.gray) painter.drawRect(-20, -58, 40, 2) # Front axel painter.drawRect(-20, 7, 40, 2) # Rear axel painter.setBrush(self.color) painter.drawRect(-25, -79, 50, 10) # Front wing painter.drawEllipse(-25, -48, 50, 20) # Side pods painter.drawRect(-25, -38, 50, 35) # Side pods painter.drawRect(-5, 9, 10, 10) # Back pod painter.drawEllipse(-10, -81, 20, 100) # Main body painter.drawRect(-17, 19, 34, 15) # Rear wing painter.setBrush(Qt.black) painter.drawPie(-5, -51, 10, 15, 0, 180 * 16) painter.drawRect(-5, -44, 10, 10) # Cockpit painter.save() painter.translate(-20, -58) painter.rotate(self.wheelsAngle) painter.drawRect(-10, -7, 10, 15) # Front left painter.restore() painter.save() painter.translate(20, -58) painter.rotate(self.wheelsAngle) painter.drawRect(0, -7, 10, 15) # Front right painter.restore() painter.drawRect(-30, 0, 12, 17) # Rear left painter.drawRect(19, 0, 12, 17) # Rear right class CarInterfaceAdaptor(QDBusAbstractAdaptor): Q_CLASSINFO("D-Bus Interface", 'org.example.Examples.CarInterface') Q_CLASSINFO("D-Bus Introspection", '' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '') def __init__(self, parent): super(CarInterfaceAdaptor, self).__init__(parent) self.setAutoRelaySignals(True) @pyqtSlot() def accelerate(self): self.parent().accelerate() @pyqtSlot() def decelerate(self): self.parent().decelerate() @pyqtSlot() def turnLeft(self): self.parent().turnLeft() @pyqtSlot() def turnRight(self): self.parent().turnRight() if __name__ == '__main__': import sys app = QApplication(sys.argv) scene = QGraphicsScene() scene.setSceneRect(-500, -500, 1000, 1000) scene.setItemIndexMethod(QGraphicsScene.NoIndex) car = Car() scene.addItem(car) view = QGraphicsView(scene) view.setRenderHint(QPainter.Antialiasing) view.setBackgroundBrush(Qt.darkGray) view.setWindowTitle("Qt DBus Controlled Car") view.resize(400, 300) view.show() a = CarInterfaceAdaptor(car) connection = QDBusConnection.sessionBus() connection.registerObject('/Car', car) connection.registerService('org.example.CarExample') rc = app.exec_() # Make sure things get destroyed in the right order. del view sys.exit(rc) PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/controller/0000755000076500000240000000000012613140041024253 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/controller/controller.py0000755000076500000240000000705612613140041027023 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtDBus import QDBusAbstractInterface, QDBusConnection from ui_controller import Ui_Controller class CarInterface(QDBusAbstractInterface): def __init__(self, service, path, connection, parent=None): super(CarInterface, self).__init__(service, path, 'org.example.Examples.CarInterface', connection, parent) def accelerate(self): self.asyncCall('accelerate') def decelerate(self): self.asyncCall('decelerate') def turnLeft(self): self.asyncCall('turnLeft') def turnRight(self): self.asyncCall('turnRight') class Controller(QWidget): def __init__(self, parent=None): super(Controller, self).__init__(parent) self.ui = Ui_Controller() self.ui.setupUi(self) self.car = CarInterface('org.example.CarExample', '/Car', QDBusConnection.sessionBus(), self) self.startTimer(1000) def timerEvent(self, event): if self.car.isValid(): self.ui.label.setText("connected") else: self.ui.label.setText("disconnected") def on_accelerate_clicked(self): self.car.accelerate() def on_decelerate_clicked(self): self.car.decelerate() def on_left_clicked(self): self.car.turnLeft() def on_right_clicked(self): self.car.turnRight() if __name__ == '__main__': import sys app = QApplication(sys.argv) controller = Controller() controller.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/controller/controller.ui0000644000076500000240000000276212613140041027004 0ustar philstaff00000000000000 Controller 0 0 255 111 Controller 9 6 Controller Qt::AlignCenter Decelerate Accelerate Right Left PyQt-gpl-5.5.1/examples/dbus/remotecontrolledcar/controller/ui_controller.py0000644000076500000240000000407712613140041027515 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'controller.ui' # # Created: Fri May 31 18:58:37 2013 # by: PyQt5 UI code generator 5.0-snapshot-dd808c1bcced # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Controller(object): def setupUi(self, Controller): Controller.setObjectName("Controller") Controller.resize(255, 111) self.gridlayout = QtWidgets.QGridLayout(Controller) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") self.label = QtWidgets.QLabel(Controller) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.gridlayout.addWidget(self.label, 1, 1, 1, 1) self.decelerate = QtWidgets.QPushButton(Controller) self.decelerate.setObjectName("decelerate") self.gridlayout.addWidget(self.decelerate, 2, 1, 1, 1) self.accelerate = QtWidgets.QPushButton(Controller) self.accelerate.setObjectName("accelerate") self.gridlayout.addWidget(self.accelerate, 0, 1, 1, 1) self.right = QtWidgets.QPushButton(Controller) self.right.setObjectName("right") self.gridlayout.addWidget(self.right, 1, 2, 1, 1) self.left = QtWidgets.QPushButton(Controller) self.left.setObjectName("left") self.gridlayout.addWidget(self.left, 1, 0, 1, 1) self.retranslateUi(Controller) QtCore.QMetaObject.connectSlotsByName(Controller) def retranslateUi(self, Controller): _translate = QtCore.QCoreApplication.translate Controller.setWindowTitle(_translate("Controller", "Controller")) self.label.setText(_translate("Controller", "Controller")) self.decelerate.setText(_translate("Controller", "Decelerate")) self.accelerate.setText(_translate("Controller", "Accelerate")) self.right.setText(_translate("Controller", "Right")) self.left.setText(_translate("Controller", "Left")) PyQt-gpl-5.5.1/examples/designer/0000755000076500000240000000000012613140041016664 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/designer/calculatorform/0000755000076500000240000000000012613140041021701 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/designer/calculatorform/calculatorform.py0000755000076500000240000000544212613140041025300 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QApplication, QWidget from ui_calculatorform import Ui_CalculatorForm class CalculatorForm(QWidget): def __init__(self, parent=None): super(CalculatorForm, self).__init__(parent) self.ui = Ui_CalculatorForm() self.ui.setupUi(self) @pyqtSlot(int) def on_inputSpinBox1_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox2.value())) @pyqtSlot(int) def on_inputSpinBox2_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox1.value())) if __name__ == '__main__': import sys app = QApplication(sys.argv) calculator = CalculatorForm() calculator.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/calculatorform/calculatorform.ui0000644000076500000240000001575612613140041025273 0ustar philstaff00000000000000 CalculatorForm CalculatorForm 0 0 400 300 5 5 0 0 Calculator Form 9 6 horizontalSpacer 239 9 152 52 Qt::Horizontal 40 20 label_3_2 169 9 20 52 = Qt::AlignCenter 1 6 label_2_2_2 1 1 36 17 Output outputWidget 1 24 36 27 QFrame::Box QFrame::Sunken 0 Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask verticalSpacer 89 67 20 224 Qt::Vertical 20 40 1 6 label_2 1 1 46 19 Input 2 inputSpinBox2 1 26 46 25 label_3 63 9 20 52 + Qt::AlignCenter 1 6 label 1 1 46 19 Input 1 inputSpinBox1 1 26 46 25 PyQt-gpl-5.5.1/examples/designer/calculatorform/ui_calculatorform.py0000644000076500000240000001221312613140041025764 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'calculatorform.ui' # # Created: Fri Jul 26 06:41:48 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): CalculatorForm.setObjectName("CalculatorForm") CalculatorForm.resize(400, 300) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(5), QtWidgets.QSizePolicy.Policy(5)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(CalculatorForm.sizePolicy().hasHeightForWidth()) CalculatorForm.setSizePolicy(sizePolicy) self.gridlayout = QtWidgets.QGridLayout(CalculatorForm) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem, 0, 6, 1, 1) self.label_3_2 = QtWidgets.QLabel(CalculatorForm) self.label_3_2.setGeometry(QtCore.QRect(169, 9, 20, 52)) self.label_3_2.setAlignment(QtCore.Qt.AlignCenter) self.label_3_2.setObjectName("label_3_2") self.gridlayout.addWidget(self.label_3_2, 0, 4, 1, 1) self.vboxlayout = QtWidgets.QVBoxLayout() self.vboxlayout.setContentsMargins(1, 1, 1, 1) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.label_2_2_2 = QtWidgets.QLabel(CalculatorForm) self.label_2_2_2.setGeometry(QtCore.QRect(1, 1, 36, 17)) self.label_2_2_2.setObjectName("label_2_2_2") self.vboxlayout.addWidget(self.label_2_2_2) self.outputWidget = QtWidgets.QLabel(CalculatorForm) self.outputWidget.setGeometry(QtCore.QRect(1, 24, 36, 27)) self.outputWidget.setFrameShape(QtWidgets.QFrame.Box) self.outputWidget.setFrameShadow(QtWidgets.QFrame.Sunken) self.outputWidget.setAlignment(QtCore.Qt.AlignAbsolute|QtCore.Qt.AlignBottom|QtCore.Qt.AlignCenter|QtCore.Qt.AlignHCenter|QtCore.Qt.AlignHorizontal_Mask|QtCore.Qt.AlignJustify|QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignRight|QtCore.Qt.AlignTop|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignVertical_Mask) self.outputWidget.setObjectName("outputWidget") self.vboxlayout.addWidget(self.outputWidget) self.gridlayout.addLayout(self.vboxlayout, 0, 5, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridlayout.addItem(spacerItem1, 1, 2, 1, 1) self.vboxlayout1 = QtWidgets.QVBoxLayout() self.vboxlayout1.setContentsMargins(1, 1, 1, 1) self.vboxlayout1.setSpacing(6) self.vboxlayout1.setObjectName("vboxlayout1") self.label_2 = QtWidgets.QLabel(CalculatorForm) self.label_2.setGeometry(QtCore.QRect(1, 1, 46, 19)) self.label_2.setObjectName("label_2") self.vboxlayout1.addWidget(self.label_2) self.inputSpinBox2 = QtWidgets.QSpinBox(CalculatorForm) self.inputSpinBox2.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox2.setObjectName("inputSpinBox2") self.vboxlayout1.addWidget(self.inputSpinBox2) self.gridlayout.addLayout(self.vboxlayout1, 0, 3, 1, 1) self.label_3 = QtWidgets.QLabel(CalculatorForm) self.label_3.setGeometry(QtCore.QRect(63, 9, 20, 52)) self.label_3.setAlignment(QtCore.Qt.AlignCenter) self.label_3.setObjectName("label_3") self.gridlayout.addWidget(self.label_3, 0, 1, 1, 1) self.vboxlayout2 = QtWidgets.QVBoxLayout() self.vboxlayout2.setContentsMargins(1, 1, 1, 1) self.vboxlayout2.setSpacing(6) self.vboxlayout2.setObjectName("vboxlayout2") self.label = QtWidgets.QLabel(CalculatorForm) self.label.setGeometry(QtCore.QRect(1, 1, 46, 19)) self.label.setObjectName("label") self.vboxlayout2.addWidget(self.label) self.inputSpinBox1 = QtWidgets.QSpinBox(CalculatorForm) self.inputSpinBox1.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox1.setObjectName("inputSpinBox1") self.vboxlayout2.addWidget(self.inputSpinBox1) self.gridlayout.addLayout(self.vboxlayout2, 0, 0, 1, 1) self.retranslateUi(CalculatorForm) QtCore.QMetaObject.connectSlotsByName(CalculatorForm) def retranslateUi(self, CalculatorForm): _translate = QtCore.QCoreApplication.translate CalculatorForm.setWindowTitle(_translate("CalculatorForm", "Calculator Form")) self.label_3_2.setText(_translate("CalculatorForm", "=")) self.label_2_2_2.setText(_translate("CalculatorForm", "Output")) self.outputWidget.setText(_translate("CalculatorForm", "0")) self.label_2.setText(_translate("CalculatorForm", "Input 2")) self.label_3.setText(_translate("CalculatorForm", "+")) self.label.setText(_translate("CalculatorForm", "Input 1")) PyQt-gpl-5.5.1/examples/designer/plugins/0000755000076500000240000000000012613140041020345 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/designer/plugins/plugins.py0000755000076500000240000000701212613140041022403 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## 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 Riverbank Computing Limited 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." ## ############################################################################# import sys import os from PyQt5.QtCore import QLibraryInfo, QProcess, QProcessEnvironment from PyQt5.QtWidgets import QApplication, QMessageBox app = QApplication(sys.argv) QMessageBox.information(None, "PyQt Designer Plugins", "

    This example will start Qt Designer when you click the OK " "button.

    " "

    Before doing so it sets the PYQTDESIGNERPATH environment " "variable to the python directory that is part of this " "example. This directory contains all the example Python plugin " "modules.

    " "

    It also sets the PYTHONPATH environment variable to the " "widgets directory that is also part of this example. This " "directory contains the Python modules that implement the example " "custom widgets.

    " "

    All of the example custom widgets should then appear in " "Designer's widget box in the PyQt Examples group.

    ") # Tell Qt Designer where it can find the directory containing the plugins and # Python where it can find the widgets. base = os.path.dirname(__file__) env = QProcessEnvironment.systemEnvironment() env.insert('PYQTDESIGNERPATH', os.path.join(base, 'python')) env.insert('PYTHONPATH', os.path.join(base, 'widgets')) # Start Designer. designer = QProcess() designer.setProcessEnvironment(env) designer_bin = QLibraryInfo.location(QLibraryInfo.BinariesPath) if sys.platform == 'darwin': designer_bin += '/Designer.app/Contents/MacOS/Designer' else: designer_bin += '/designer' designer.start(designer_bin) designer.waitForFinished(-1) sys.exit(designer.exitCode()) PyQt-gpl-5.5.1/examples/designer/plugins/python/0000755000076500000240000000000012613140041021666 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/designer/plugins/python/analogclockplugin.py0000644000076500000240000001273412613140041025743 0ustar philstaff00000000000000#!/usr/bin/env python """ analogclockplugin.py An analog clock custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from analogclock import PyAnalogClock class PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin): """PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(PyAnalogClockPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PyAnalogClock(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PyAnalogClock" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' The current time\n' \ ' \n' \ ' \n' \ ' The analog clock widget displays the current ' \ 'time.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "analogclock" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 58 1", "L c #2d2d2d", "N c #4f4f4f", "K c #636363", "J c #666666", "I c #696969", "D c #727272", "F c #737373", "O c #757575", "G c #7f7f7f", "o c #878787", "t c #888888", "Y c #898989", "c c #8a8a8a", "d c #8b8b8b", "H c #8d8d8d", "Q c #8f8f8f", "b c #909090", "M c #959595", "g c #979797", "n c #989898", "x c #999999", "0 c #9a9a9a", "X c #9b9b9b", "a c #9d9d9d", "E c #9e9e9e", "1 c #9f9f9f", "T c #a0a0a0", "v c #a1a1a1", "r c #a2a2a2", "B c #a6a6a6", "R c #a7a7a7", "3 c #a8a8a8", "z c #aaaaaa", "A c #ababab", "m c #acacac", "h c #adadad", "u c #b1b1b1", "q c #b2b2b2", "V c #bfbfbf", "W c #c6c6c6", "w c #c7c7c7", "s c #c8c8c8", "p c #c9c9c9", "k c #cdcdcd", "l c #cfcfcf", "2 c #d3d3d3", "S c #d4d4d4", "C c #d5d5d5", "y c #d8d8d8", "# c #d9d9d9", "e c #dadada", "i c #dbdbdb", "P c #dcdcdc", "U c #dfdfdf", "j c #e1e1e1", "f c #fbfbfb", "Z c #fcfcfc", ". c #ffffff", "....#abcdbae....", "..fghijkljimnf..", ".fopjjjqrjjjstf.", ".gsjjjjuvjjjjwx.", "yvjjjjjzbjjjjjAi", "BCjjjjjaDjjjjjiE", "bjjjjjjEFjjjjjjG", "HjjjjjjIJjjjjjjc", "HjjjjjjnKLtjjjjc", "bjjjjjjj#MNOPjjQ", "RSjjjjjjjj#mdPiE", "#TjjjjjjjjjjUjzP", ".nVjjjjjjjjjjWX.", ".fEVjjjjjjjjWYZ.", "..f012jjjj2EXZ..", "....i3QccQ3P...."] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt-gpl-5.5.1/examples/designer/plugins/python/bubbleswidgetplugin.py0000644000076500000240000001203412613140041026301 0ustar philstaff00000000000000#!/usr/bin/env python """ bubbleswidgetplugin.py A bubbles widget custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from bubbleswidget import BubblesWidget class BubblesPlugin(QPyDesignerCustomWidgetPlugin): """BubblesPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(BubblesPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return BubblesWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "BubblesWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' Click and drag here\n' \ ' \n' \ ' \n' \ ' The bubbles widget displays colorful ' \ 'bubbles.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "bubbleswidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 48 1", "O c #d0cfcf", "d c #d0d0d0", "i c #d3d3d2", "q c #d3d3d3", "M c #dad7d7", "g c #dad8d7", "e c #dcd9d9", "f c #e0dcdc", "c c #e0e0e0", "L c #e1dddb", "D c #e1dddc", "E c #e1e0e0", "R c #e1e1e1", "Q c #e2dedc", "p c #e2dedd", "j c #e3dfdf", "b c #e7e7e7", "S c #ebe4e3", "z c #ebe5e3", "r c #ece6e8", "a c #eeeeee", "N c #f6edeb", "I c #f6eeed", "o c #f6eeee", "h c #f7f7f7", "K c #f8efee", "C c #f8efef", "T c #f8f8f8", "y c #f9f1f0", "H c #f9f1f1", "n c #f9f1f2", "m c #f9f1f3", "k c #f9f2f4", "x c #faf3f5", "l c #faf3f6", "w c #faf3f7", "G c #faf3f8", "v c #fbf5fa", "s c #fbf5fb", "u c #fbf5fc", "t c #fbf5fd", "# c #fbfbfb", "J c #fcf6fe", "B c #fcf7fe", "P c #fcfcfc", "F c #fdf8ff", "A c #fefbff", ". c #ffffff", ".....#abba#.....", "...#cdeffgdc#...", "..hijkllmnopqh..", ".#irstuvwxnyzq#.", ".cjs.ABuvwknCDE.", "#dktAAFtsGlmHId#", "aeluBFJusGlmHKga", "bflvutusvGlmHKLb", "bfmwvssvGwxmHKLb", "agnxwGGGwlmnyKMa", "#donklllxmnHCNOP", ".cpynmmmmnHCKQR.", ".#qzCHHHHyCKSqP.", "..hqDIKKKKNQqT..", "...#EdgLLMORP...", ".....#abbaP....."] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt-gpl-5.5.1/examples/designer/plugins/python/counterlabelplugin.py0000644000076500000240000000664612613140041026152 0ustar philstaff00000000000000#!/usr/bin/env python """ counterlabelplugin.py A counter label custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from counterlabel import CounterLabel class CounterLabelPlugin(QPyDesignerCustomWidgetPlugin): """CounterLabelPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(CounterLabelPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): widget = CounterLabel(parent) widget.setValue(1) return widget # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "CounterLabel" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon() # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "counterlabel" PyQt-gpl-5.5.1/examples/designer/plugins/python/datetimeeditplugin.py0000644000076500000240000001054112613140041026122 0ustar philstaff00000000000000#============================================================================# # Designer plugins for PyDateEdit and PyDateTimeEdit # #----------------------------------------------------------------------------# # Copyright (c) 2008 by Denviso GmbH, # # # # All Rights Reserved # # # # Permission to use, copy, modify, and distribute this software and its # # documentation for any purpose and without fee is hereby granted, # # provided that the above copyright notice appear in all copies and that # # both that copyright notice and this permission notice appear in # # supporting documentation. # # # # DENVISO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # # AND FITNESS, IN NO EVENT SHALL DENVISO BE LIABLE FOR ANY # # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE # # OR PERFORMANCE OF THIS SOFTWARE. # #----------------------------------------------------------------------------# from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from datetimeedit import PyDateEdit, PyDateTimeEdit #============================================================================# # The group name in designer widgetbox # #----------------------------------------------------------------------------# DESIGNER_GROUP_NAME = "PyQt Examples" #============================================================================# # Plugin for PyDateEdit # #----------------------------------------------------------------------------# class PyDateEditPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(PyDateEditPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def isContainer(self): return False def icon(self): return QIcon() def domXml(self): return '\n\n' def group(self): return DESIGNER_GROUP_NAME def includeFile(self): return "datetimeedit" def name(self): return "PyDateEdit" def toolTip(self): return "" def whatsThis(self): return "" def createWidget(self, parent): return PyDateEdit(parent) #============================================================================# # Plugin for PyDateTimeEdit # #----------------------------------------------------------------------------# class PyDateTimeEditPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(PyDateTimeEditPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def isContainer(self): return False def icon(self): return QIcon() def domXml(self): return '\n\n' def group(self): return DESIGNER_GROUP_NAME def includeFile(self): return "datetimeedit" def name(self): return "PyDateTimeEdit" def toolTip(self): return "" def whatsThis(self): return "" def createWidget(self, parent): return PyDateTimeEdit(parent) PyQt-gpl-5.5.1/examples/designer/plugins/python/helloglwidgetplugin.py0000644000076500000240000000703612613140041026317 0ustar philstaff00000000000000#!/usr/bin/env python """ helloglwidgetplugin.py A simple OpenGL custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from helloglwidget import HelloGLWidget class HelloGLWidgetPlugin(QPyDesignerCustomWidgetPlugin): """HelloGLWidgetPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(HelloGLWidgetPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return HelloGLWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "HelloGLWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon() # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "helloglwidget" PyQt-gpl-5.5.1/examples/designer/plugins/python/multipagewidgetplugin.py0000644000076500000240000001243412613140041026656 0ustar philstaff00000000000000#============================================================================# # PyQt5 port of the designer/containerextension example from Qt v4.x # #----------------------------------------------------------------------------# import sip from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import (QDesignerFormWindowInterface, QExtensionFactory, QPyDesignerContainerExtension, QPyDesignerCustomWidgetPlugin, QPyDesignerPropertySheetExtension) from multipagewidget import PyMultiPageWidget Q_TYPEID = {'QPyDesignerContainerExtension': 'com.trolltech.Qt.Designer.Container', 'QPyDesignerPropertySheetExtension': 'com.trolltech.Qt.Designer.PropertySheet', 'QPyDesignerTaskMenuExtension': 'com.trolltech.Qt.Designer.TaskMenu', 'QPyDesignerMemberSheetExtension': 'com.trolltech.Qt.Designer.MemberSheet'} #============================================================================# # ContainerExtension # #----------------------------------------------------------------------------# class MultiPageWidgetContainerExtension(QPyDesignerContainerExtension): def __init__(self, widget, parent=None): super(MultiPageWidgetContainerExtension, self).__init__(parent) self._widget = widget def addWidget(self, widget): self._widget.addPage(widget) def count(self): return self._widget.count() def currentIndex(self): return self._widget.getCurrentIndex() def insertWidget(self, index, widget): self._widget.insertPage(index, widget) def remove(self, index): self._widget.removePage(index) def setCurrentIndex(self, index): self._widget.setCurrentIndex(index) def widget(self, index): return self._widget.widget(index) #============================================================================# # ExtensionFactory # #----------------------------------------------------------------------------# class MultiPageWidgetExtensionFactory(QExtensionFactory): def __init__(self, parent=None): super(MultiPageWidgetExtensionFactory, self).__init__(parent) def createExtension(self, obj, iid, parent): if iid != Q_TYPEID['QPyDesignerContainerExtension']: return None if isinstance(obj, PyMultiPageWidget): return MultiPageWidgetContainerExtension(obj, parent) return None #============================================================================# # CustomWidgetPlugin # #----------------------------------------------------------------------------# class MultiPageWidgetPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(MultiPageWidgetPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return manager = formEditor.extensionManager() if manager: self.factory = MultiPageWidgetExtensionFactory(manager) manager.registerExtensions(self.factory, Q_TYPEID['QPyDesignerContainerExtension']) self.initialized = True def isInitialized(self): return self.initialized def createWidget(self, parent): widget = PyMultiPageWidget(parent) widget.currentIndexChanged.connect(self.currentIndexChanged) widget.pageTitleChanged.connect(self.pageTitleChanged) return widget def name(self): return "PyMultiPageWidget" def group(self): return "PyQt Examples" def icon(self): return QIcon() def toolTip(self): return "" def whatsThis(self): return "" def isContainer(self): return True def domXml(self): return ('' ' ' '') def includeFile(self): return "multipagewidget" def currentIndexChanged(self, index): widget = self.sender() if widget and isinstance(widget, PyMultiPageWidget): form = QDesignerFormWindowInterface.findFormWindow(widget) if form: form.emitSelectionChanged() def pageTitleChanged(self, title): widget = self.sender() if widget and isinstance(widget, PyMultiPageWidget): page = widget.widget(widget.getCurrentIndex()) form = QDesignerFormWindowInterface.findFormWindow(widget) if form: editor = form.core() manager = editor.extensionManager() sheet = manager.extension(page, Q_TYPEID['QPyDesignerPropertySheetExtension']) # This explicit cast is necessary here sheet = sip.cast(sheet, QPyDesignerPropertySheetExtension) propertyIndex = sheet.indexOf('windowTitle') sheet.setChanged(propertyIndex, True) #============================================================================# # EOF # #----------------------------------------------------------------------------# PyQt-gpl-5.5.1/examples/designer/plugins/python/polygonwidgetplugin.py0000644000076500000240000001123212613140041026351 0ustar philstaff00000000000000#!/usr/bin/env python """ polygonwidgetplugin.py A polygon widget custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from polygonwidget import PolygonWidget class PolygonWidgetPlugin(QPyDesignerCustomWidgetPlugin): """PolygonWidgetPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(PolygonWidgetPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PolygonWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PolygonWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "polygonwidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 46 1", ". c #a5a5dc", "l c #a69fd6", "k c #a7a5da", "h c #a7a6dc", "a c #a7a7de", "Q c #a8a5da", "s c #a9a7d7", "R c #a9a9e0", "z c #abaad4", "E c #afafda", "M c #afafdb", "K c #b0a8e2", "o c #b1afe4", "p c #b2b2d7", "# c #b2b2ed", "i c #b39eb6", "F c #b3b3e1", "e c #b4b4ef", "t c #b58bab", "d c #b6b6f2", "n c #b798b8", "P c #b798b9", "c c #b8b6f2", "D c #b8b89c", "m c #b9648d", "J c #ba84b0", "A c #bdbdfb", "f c #bfbffe", "g c #c06996", "b c #c0c0ff", "B c #cbb889", "L c #cbb989", "O c #cfcf87", "I c #d09585", "w c #d0cf86", "x c #dede81", "G c #e8e87c", "q c #edde7b", "N c #f1e07b", "v c #f2e07b", "H c #f6e57c", "j c #fb917e", "u c #ffb580", "r c #ffda80", "C c #fffe80", "y c #ffff80", ".##############a", "#bbbbbbbbcdbbbbe", "#bbbbbbbfghbbbbe", "#bbbbbbbijkbbbbe", "#blmnobpqrsbbbbe", "#bbtuvwxyyzbbbbe", "#bbABCyyyyDEfbbe", "#bbbFGyyyyyHIJKe", "#bbbFGyyyyyHIJKe", "#bbALCyyyyDMfbbe", "#bbtuNOxyyzbbbbe", "#blmPobpqrsbbbbe", "#bbbbbbbijQbbbbe", "#bbbbbbbfghbbbbe", "#bbbbbbbbcdbbbbe", "aeeeeeeeeeeeeeeR"] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt-gpl-5.5.1/examples/designer/plugins/python/pydemoplugin.py0000644000076500000240000001015212613140041024753 0ustar philstaff00000000000000# A demonstration custom widget plugin for Qt Designer. # # Copyright (c) 2013 Riverbank Computing Limited from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from pydemo import PyDemo # This class implements the interface expected by Qt Designer to access the # custom widget. See the description of the QDesignerCustomWidgetInterface # class for full details. class PyDemoPlugin(QPyDesignerCustomWidgetPlugin): # Initialise the instance. def __init__(self, parent=None): super(PyDemoPlugin, self).__init__(parent) self._initialized = False # Initialise the custom widget for use with the specified formEditor # interface. def initialize(self, formEditor): if self._initialized: return self._initialized = True # Return True if the custom widget has been intialised. def isInitialized(self): return self._initialized # Return a new instance of the custom widget with the given parent. def createWidget(self, parent): return PyDemo(parent) # Return the name of the class that implements the custom widget. def name(self): return "PyDemo" # Return the name of the group to which the custom widget belongs. A new # group will be created if it doesn't already exist. def group(self): return "PyQt Examples" # Return the icon used to represent the custom widget in Designer's widget # box. def icon(self): return QIcon(_logo_pixmap) # Return a short description of the custom widget used by Designer in a # tool tip. def toolTip(self): return "PyQt demonstration widget" # Return a full description of the custom widget used by Designer in # "What's This?" help for the widget. def whatsThis(self): return "PyDemo is a demonstration custom widget written in Python " \ "using PyQt." # Return True if the custom widget acts as a container for other widgets. def isContainer(self): return False # Return an XML fragment that allows the default values of the custom # widget's properties to be overridden. def domXml(self): return '\n' \ ' \n' \ ' PyQt demonstration widget\n' \ ' \n' \ ' \n' \ ' PyDemo is a demonstration custom widget written ' \ 'in Python using PyQt.\n' \ ' \n' \ '\n' # Return the name of the module containing the class that implements the # custom widget. It may include a module path. def includeFile(self): return "pydemo" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 61 1", "6 c #5bbd7c", "a c #7aaada", "h c #7eaddb", "n c #7faddb", "E c #82afdc", "x c #83b0dd", "C c #84b0dd", "z c #84b1dd", "B c #85b1dd", "u c #87b2de", "U c #9ec1e4", "Z c #9fc1e4", "H c #a1c3e5", "Y c #a5c5e4", "V c #a6c6e4", "P c #afcbe2", "S c #afcbe3", "O c #b1cde9", "T c #b2cee9", "t c #b4cee3", "r c #b5cee3", "q c #c2d8ee", "0 c #c7dbef", "f c #cedddb", "b c #cfdddb", "1 c #d0e1f2", "J c #d8e2d2", "I c #d9e2d2", "# c #dfeaf6", "g c #e3edf7", "K c #ecf2f9", "N c #ecf3f9", "o c #eeecbb", "i c #f2edb2", "l c #f2edb3", "w c #f6eea6", "v c #f7eea6", "W c #fcee8c", "m c #fcfdfe", "L c #fdec73", "k c #fedd00", "e c #fede06", "p c #fede07", "j c #fee013", "X c #fee015", "s c #fee223", "d c #fee32c", "A c #fee749", "Q c #fee850", "R c #fee851", "D c #fee854", "y c #feea65", "M c #feec74", "c c #feed7c", "F c #feee85", "G c #feee86", "5 c #fef095", "4 c #fef195", "3 c #fef6bb", "2 c #fefdf5", ". c #fefefe", "..#abcdeedcfa#..", ".ghijkkkkkkjlhg.", "mnopkkkkkkkkponm", "qrskkkkkkkkkkstq", "uvkkkkkkkkkkkkwu", "xykkkkkkkkkkkkyx", "zAkkkkkkkkkkkkAB", "CDkkkkkkkkkkkkDC", "EFkkkkkkkkkkkkGE", "HIekkkkkkkkkkeJH", "KBLkkkkkkkkkkMBN", ".OPQkkkkkkkkRST.", "..UVWXkkkkXWYZ..", "...0123453210...", "6666666666666666", "BBBBBBBBBBBBBBBB"] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt-gpl-5.5.1/examples/designer/plugins/python/pythonconsoleplugin.py0000644000076500000240000001106412613140041026365 0ustar philstaff00000000000000#!/usr/bin/env python """ pythonconsoleplugin.py A Python console custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from pythonconsolewidget import PythonConsoleWidget class PythonConsolePlugin(QPyDesignerCustomWidgetPlugin): """PythonConsolePlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(PythonConsolePlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PythonConsoleWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PythonConsoleWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' Python console\n' \ ' \n' \ ' \n' \ ' The Python console widget can be used to explore ' \ 'Qt Designer.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "pythonconsolewidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 6 1", " c None", ". c #FFFFFF", "a c #000000", "b c #808080", "c c #C0C0C0", "d c #404040", "................", "................", "................", ".aa..aa..aa.....", "..aa..aa..aa....", "...aa..aa..aa...", "....aa..aa..aa..", ".....aa..aa..aa.", ".....aa..aa..aa.", "....aa..aa..aa..", "...aa..aa..aa...", "..aa..aa..aa....", ".aa..aa..aa.....", "................", "................", "................"] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/0000755000076500000240000000000012613140041022013 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/designer/plugins/widgets/analogclock.py0000755000076500000240000001417412613140041024654 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QPoint, QSize, Qt, QTime, QTimer) from PyQt5.QtGui import QBrush, QColor, QPainter, QPen, QPolygon from PyQt5.QtWidgets import QApplication, QWidget class PyAnalogClock(QWidget): """PyAnalogClock(QWidget) Provides an analog clock custom widget with signals, slots and properties. The implementation is based on the Analog Clock example provided with both Qt and PyQt. """ # Emitted when the clock's time changes. timeChanged = pyqtSignal(QTime) # Emitted when the clock's time zone changes. timeZoneChanged = pyqtSignal(int) def __init__(self, parent=None): super(PyAnalogClock, self).__init__(parent) self.timeZoneOffset = 0 timer = QTimer(self) timer.timeout.connect(self.update) timer.timeout.connect(self.updateTime) timer.start(1000) self.setWindowTitle("Analog Clock") self.resize(200, 200) self.hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) self.minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) self.hourColor = QColor(0, 127, 0) self.minuteColor = QColor(0, 127, 127, 191) def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() time = time.addSecs(self.timeZoneOffset * 3600) painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(QBrush(self.hourColor)) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(self.hourHand) painter.restore() painter.setPen(self.hourColor) for i in range(0, 12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(QBrush(self.minuteColor)) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(self.minuteHand) painter.restore() painter.setPen(QPen(self.minuteColor)) for j in range(0, 60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) painter.end() def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(100, 100) def updateTime(self): self.timeChanged.emit(QTime.currentTime()) # The timeZone property is implemented using the getTimeZone() getter # method, the setTimeZone() setter method, and the resetTimeZone() method. # The getter just returns the internal time zone value. def getTimeZone(self): return self.timeZoneOffset # The setTimeZone() method is also defined to be a slot. The @pyqtSlot # decorator is used to tell PyQt which argument type the method expects, # and is especially useful when you want to define slots with the same # name that accept different argument types. @pyqtSlot(int) def setTimeZone(self, value): self.timeZoneOffset = value self.timeZoneChanged.emit(value) self.update() # Qt's property system supports properties that can be reset to their # original values. This method enables the timeZone property to be reset. def resetTimeZone(self): self.timeZoneOffset = 0 self.timeZoneChanged.emit(0) self.update() # Qt-style properties are defined differently to Python's properties. # To declare a property, we call pyqtProperty() to specify the type and, # in this case, getter, setter and resetter methods. timeZone = pyqtProperty(int, getTimeZone, setTimeZone, resetTimeZone) if __name__ == "__main__": import sys app = QApplication(sys.argv) clock = PyAnalogClock() clock.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/bubbleswidget.py0000755000076500000240000002417412613140041025222 0ustar philstaff00000000000000#!/usr/bin/env python """ bubbleswidget.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import random from PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QPointF, QRectF, QSize, QSizeF, Qt, QTimer) from PyQt5.QtGui import QBrush, QColor, QPainter, QPen, QRadialGradient from PyQt5.QtWidgets import QApplication, QWidget class BaseClass(QWidget): """BaseClass(QWidget) Provides a base custom widget class to show that properties implemented in Python can be inherited and shown as belonging to distinct classes in Qt Designer's Property Editor. """ def __init__(self, parent=None): super(BaseClass, self).__init__(parent) self.resetAuthor() # Define getter, setter and resetter methods for the author property. def getAuthor(self): return self._author def setAuthor(self, name): self._author = name def resetAuthor(self): self._author = "David Boddie" author = pyqtProperty(str, getAuthor, setAuthor, resetAuthor) class Bubble: """Bubble Provides a class to represent individual bubbles in a BubblesWidget. Each Bubble instance can render itself onto a paint device using a QPainter passed to its drawBubble() method. """ def __init__(self, position, radius, speed, innerColor, outerColor): self.position = position self.radius = radius self.speed = speed self.innerColor = innerColor self.outerColor = outerColor self.updateBrush() def updateBrush(self): gradient = QRadialGradient( QPointF(self.radius, self.radius), self.radius, QPointF(self.radius*0.5, self.radius*0.5)) gradient.setColorAt(0, QColor(255, 255, 255, 255)) gradient.setColorAt(0.25, self.innerColor) gradient.setColorAt(1, self.outerColor) self.brush = QBrush(gradient) def drawBubble(self, painter): painter.save() painter.translate(self.position.x() - self.radius, self.position.y() - self.radius) painter.setBrush(self.brush) painter.drawEllipse(0.0, 0.0, 2*self.radius, 2*self.radius) painter.restore() class BubblesWidget(BaseClass): """BubblesWidget(BaseClass) Provides a custom widget that shows a number of rising bubbles. Various properties are defined so that the user can customize the appearance of the widget, and change the number and behaviour of the bubbles shown. """ # We define two signals that are used to indicate changes to the status # of the widget. bubbleLeft = pyqtSignal() bubblesRemaining = pyqtSignal(int) def __init__(self, parent=None): super(BubblesWidget, self).__init__(parent) self.pen = QPen(QColor("#cccccc")) self.bubbles = [] self.backgroundColor1 = self.randomColor() self.backgroundColor2 = self.randomColor().darker(150) self.newBubble = None random.seed() self.animation_timer = QTimer(self) self.animation_timer.setSingleShot(False) self.animation_timer.timeout.connect(self.animate) self.animation_timer.start(25) self.bubbleTimer = QTimer() self.bubbleTimer.setSingleShot(False) self.bubbleTimer.timeout.connect(self.expandBubble) self.setMouseTracking(True) self.setMinimumSize(QSize(200, 200)) self.setWindowTitle("Bubble Maker") def paintEvent(self, event): background = QRadialGradient(QPointF(self.rect().topLeft()), 500, QPointF(self.rect().bottomRight())) background.setColorAt(0, self.backgroundColor1) background.setColorAt(1, self.backgroundColor2) painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), QBrush(background)) painter.setPen(self.pen) for bubble in self.bubbles: if QRectF(bubble.position - QPointF(bubble.radius, bubble.radius), QSizeF(2*bubble.radius, 2*bubble.radius)).intersects(QRectF(event.rect())): bubble.drawBubble(painter) if self.newBubble: self.newBubble.drawBubble(painter) painter.end() def mousePressEvent(self, event): if event.button() == Qt.LeftButton and self.newBubble is None: self.newBubble = Bubble(QPointF(event.pos()), 4.0, 1.0 + random.random() * 7, self.randomColor(), self.randomColor()) self.bubbleTimer.start(50) event.accept() def mouseMoveEvent(self, event): if self.newBubble: self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) self.newBubble.position = QPointF(event.pos()) self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) event.accept() def mouseReleaseEvent(self, event): if self.newBubble: self.bubbles.append(self.newBubble) self.newBubble = None self.bubbleTimer.stop() self.bubblesRemaining.emit(len(self.bubbles)) event.accept() def expandBubble(self): if self.newBubble: self.newBubble.radius = min(self.newBubble.radius + 4.0, self.width()/8.0, self.height()/8.0) self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) self.newBubble.updateBrush() def randomColor(self): red = 205 + random.random() * 50 green = 205 + random.random() * 50 blue = 205 + random.random() * 50 alpha = 91 + random.random() * 100 return QColor(red, green, blue, alpha) def animate(self): bubbles = [] left = False for bubble in self.bubbles: bubble.position = bubble.position + QPointF(0, -bubble.speed) self.update( QRectF(bubble.position - QPointF(bubble.radius + 1, bubble.radius + 1), QSizeF(2*bubble.radius + 2, 2*bubble.radius + 2 + bubble.speed)).toRect()) if bubble.position.y() + bubble.radius > 0: bubbles.append(bubble) else: self.bubbleLeft.emit() left = True if self.newBubble: self.update( QRectF(self.newBubble.position - QPointF( self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect()) self.bubbles = bubbles if left: self.bubblesRemaining.emit(len(self.bubbles)) def sizeHint(self): return QSize(200, 200) # We provide getter and setter methods for the numberOfBubbles property. def getBubbles(self): return len(self.bubbles) # The setBubbles() method can also be used as a slot. @pyqtSlot(int) def setBubbles(self, value): value = max(0, value) while len(self.bubbles) < value: newBubble = Bubble(QPointF(random.random() * self.width(), random.random() * self.height()), 4.0 + random.random() * 20, 1.0 + random.random() * 7, self.randomColor(), self.randomColor()) newBubble.updateBrush() self.bubbles.append(newBubble) self.bubbles = self.bubbles[:value] self.bubblesRemaining.emit(value) self.update() numberOfBubbles = pyqtProperty(int, getBubbles, setBubbles) # We provide getter and setter methods for the color1 and color2 # properties. The red, green and blue components for the QColor # values stored in these properties can be edited individually in # Qt Designer. def getColor1(self): return self.backgroundColor1 def setColor1(self, value): self.backgroundColor1 = QColor(value) self.update() color1 = pyqtProperty(QColor, getColor1, setColor1) def getColor2(self): return self.backgroundColor2 def setColor2(self, value): self.backgroundColor2 = QColor(value) self.update() color2 = pyqtProperty(QColor, getColor2, setColor2) # The stop() and start() slots provide simple control over the animation # of the bubbles in the widget. @pyqtSlot() def stop(self): self.animation_timer.stop() @pyqtSlot() def start(self): self.animation_timer.start(25) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = BubblesWidget() widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/counterlabel.py0000755000076500000240000001207412613140041025053 0ustar philstaff00000000000000#!/usr/bin/env python """ counterlabel.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, QSize, Qt from PyQt5.QtGui import QFont, QFontMetricsF, QPainter from PyQt5.QtWidgets import QApplication, QWidget class CounterLabel(QWidget): """CounterLabel(QWidget) Provides a custom label widget to be used as a counter, with signals similar to those provided by QAbstractSlider subclasses and properties similar to those provided by QLabel. """ # We define two signals that are used to indicate changes to the status # of the widget. valueChanged = pyqtSignal((int, ), (str, )) def __init__(self, parent=None): super(CounterLabel, self).__init__(parent) self.setAutoFillBackground(False) self._font = QFont() self._minimum = 1 self._maximum = 1 self._value = 1 self._offset = 0 self.rescale() self.reposition() def paintEvent(self, event): p = QPainter() p.begin(self) p.setRenderHint(QPainter.Antialiasing) p.setFont(self._font) p.translate(self.width()/2.0, self.height()/2.0) p.scale(self._scale, self._scale) p.drawText(self._xpos, self._ypos, str(self._value)) p.end() def sizeHint(self): return QSize(32, 32) def rescale(self): fm = QFontMetricsF(self._font, self) maxRect = fm.boundingRect(QRectF(self.rect()), Qt.AlignCenter, str(self._maximum)) xscale = float(self.width())/maxRect.width() yscale = float(self.height())/maxRect.height() self._scale = min(xscale, yscale) def reposition(self): fm = QFontMetricsF(self._font, self) rect = fm.boundingRect(QRectF(self.rect()), Qt.AlignCenter, str(self._value)) self._xpos = -rect.width()/2.0 self._ypos = rect.height()/2.0 - fm.descent() self.update() # Provide getter and setter methods for the font property. def getFont(self): return self._font def setFont(self, font): self._font = font self.rescale() self.reposition() font = pyqtProperty(QFont, getFont, setFont) # Provide getter and setter methods for the minimum and maximum properties. def getMinimum(self): return self._minimum def setMinimum(self, value): self._minimum = value if self._minimum > self._maximum: self.setMaximum(self._minimum) if self._minimum > self._value: self.setValue(self._minimum) minimum = pyqtProperty(int, getMinimum, setMinimum) def getMaximum(self): return self._maximum def setMaximum(self, value): self._maximum = value self._minimum = min(self._minimum, self._maximum) if self._maximum < self._value: self.setValue(self._maximum) self.rescale() self.reposition() maximum = pyqtProperty(int, getMaximum, setMaximum) # We provide an offset property to allow the value shown to differ from # the internal value held by the widget. def getOffset(self): return self._offset def setOffset(self, value): self._offset = value offset = pyqtProperty(int, getOffset, setOffset) # The value property is implemented using the getValue() and setValue() # methods. def getValue(self): return self._value # The setter method for the value property can also be used as a slot. @pyqtSlot(int) def setValue(self, value): if not self._minimum <= value <= self._maximum: return self._value = value self.valueChanged[int].emit(value + self._offset) self.valueChanged[str].emit(str(value + self._offset)) self.reposition() value = pyqtProperty(int, getValue, setValue) # Like QAbstractSpinBox, we provide stepUp() and stepDown() slots to # enable the value to be incremented and decremented. @pyqtSlot() def stepUp(self): self.setValue(self._value + 1) @pyqtSlot() def stepDown(self): self.setValue(self._value - 1) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = CounterLabel() widget.setValue(123) widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/datetimeedit.py0000755000076500000240000003671012613140041025041 0ustar philstaff00000000000000#!/usr/bin/env python #============================================================================# # (Re)Implementation of QDateEdit and QDateTimeEdit. These classes force the # # use of the calendar popup. # #----------------------------------------------------------------------------# # Copyright (c) 2008 by Denviso GmbH, # # # # All Rights Reserved # # # # Permission to use, copy, modify, and distribute this software and its # # documentation for any purpose and without fee is hereby granted, # # provided that the above copyright notice appear in all copies and that # # both that copyright notice and this permission notice appear in # # supporting documentation. # # # # DENVISO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # # AND FITNESS, IN NO EVENT SHALL DENVISO BE LIABLE FOR ANY # # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE # # OR PERFORMANCE OF THIS SOFTWARE. # #----------------------------------------------------------------------------# from PyQt5.QtCore import pyqtProperty, Qt from PyQt5.QtWidgets import (QApplication, QCalendarWidget, QDateEdit, QDateTimeEdit, QHBoxLayout, QWidget) #============================================================================# # PyDateEdit # #----------------------------------------------------------------------------# class PyDateEdit(QDateEdit): # # Initialize base class # Force use of the calendar popup # Set default values for calendar properties # def __init__(self, *args): super(PyDateEdit, self).__init__(*args) self.setCalendarPopup(True) self.__cw = None self.__firstDayOfWeek = Qt.Monday self.__gridVisible = False self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers self.__navigationBarVisible = True # # Call event handler of base class # Get the calendar widget, if not already done # Set the calendar properties # def mousePressEvent(self, event): super(PyDateEdit, self).mousePressEvent(event) if not self.__cw: self.__cw = self.findChild(QCalendarWidget) if self.__cw: self.__cw.setFirstDayOfWeek(self.__firstDayOfWeek) self.__cw.setGridVisible(self.__gridVisible) self.__cw.setHorizontalHeaderFormat(self.__horizontalHeaderFormat) self.__cw.setVerticalHeaderFormat(self.__verticalHeaderFormat) self.__cw.setNavigationBarVisible(self.__navigationBarVisible) # # Make sure, the calendarPopup property is invisible in Designer # def getCalendarPopup(self): return True calendarPopup = pyqtProperty(bool, fget=getCalendarPopup) # # Property firstDayOfWeek: Qt::DayOfWeek # Get: getFirstDayOfWeek() # Set: setFirstDayOfWeek() # Reset: resetFirstDayOfWeek() # def getFirstDayOfWeek(self): return self.__firstDayOfWeek def setFirstDayOfWeek(self, dayOfWeek): if dayOfWeek != self.__firstDayOfWeek: self.__firstDayOfWeek = dayOfWeek if self.__cw: self.__cw.setFirstDayOfWeek(dayOfWeek) def resetFirstDayOfWeek(self): if self.__firstDayOfWeek != Qt.Monday: self.__firstDayOfWeek = Qt.Monday if self.__cw: self.__cw.setFirstDayOfWeek(Qt.Monday) firstDayOfWeek = pyqtProperty(Qt.DayOfWeek, fget=getFirstDayOfWeek, fset=setFirstDayOfWeek, freset=resetFirstDayOfWeek) # # Property gridVisible: bool # Get: isGridVisible() # Set: setGridVisible() # Reset: resetGridVisible() # def isGridVisible(self): return self.__gridVisible def setGridVisible(self, show): if show != self.__gridVisible: self.__gridVisible = show if self.__cw: self.__cw.setGridVisible(show) def resetGridVisible(self): if self.__gridVisible != False: self.__gridVisible = False if self.__cw: self.__cw.setGridVisible(False) gridVisible = pyqtProperty(bool, fget=isGridVisible, fset=setGridVisible, freset=resetGridVisible) # # Property horizontalHeaderFormat: QCalendarWidget::HorizontalHeaderFormat # Get: getHorizontalHeaderFormat() # Set: setHorizontalHeaderFormat() # Reset: resetHorizontalHeaderFormat() # def getHorizontalHeaderFormat(self): return self.__horizontalHeaderFormat def setHorizontalHeaderFormat(self, format): if format != self.__horizontalHeaderFormat: self.__horizontalHeaderFormat = format if self.__cw: self.__cw.setHorizontalHeaderFormat(format) def resetHorizontalHeaderFormat(self): if self.__horizontalHeaderFormat != QCalendarWidget.ShortDayNames: self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames if self.__cw: self.__cw.setHorizontalHeaderFormat(QCalendarWidget.ShortDayNames) horizontalHeaderFormat = pyqtProperty(QCalendarWidget.HorizontalHeaderFormat, fget=getHorizontalHeaderFormat, fset=setHorizontalHeaderFormat, freset=resetHorizontalHeaderFormat) # # Property verticalHeaderFormat: QCalendarWidget::VerticalHeaderFormat # Get: getVerticalHeaderFormat() # Set: setVerticalHeaderFormat() # Reset: resetVerticalHeaderFormat() # def getVerticalHeaderFormat(self): return self.__verticalHeaderFormat def setVerticalHeaderFormat(self, format): if format != self.__verticalHeaderFormat: self.__verticalHeaderFormat = format if self.__cw: self.__cw.setVerticalHeaderFormat(format) def resetVerticalHeaderFormat(self): if self.__verticalHeaderFormat != QCalendarWidget.ISOWeekNumbers: self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers if self.__cw: self.__cw.setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers) verticalHeaderFormat = pyqtProperty(QCalendarWidget.VerticalHeaderFormat, fget=getVerticalHeaderFormat, fset=setVerticalHeaderFormat, freset=resetVerticalHeaderFormat) # # Property navigationBarVisible: bool # Get: isNavigationBarVisible() # Set: setNavigationBarVisible() # Reset: resetNavigationBarVisible() # def isNavigationBarVisible(self): return self.__navigationBarVisible def setNavigationBarVisible(self, visible): if visible != self.__navigationBarVisible: self.__navigationBarVisible = visible if self.__cw: self.__cw.setNavigationBarVisible(visible) def resetNavigationBarVisible(self): if self.__navigationBarVisible != True: self.__navigationBarVisible = True if self.__cw: self.__cw.setNavigationBarVisible(True) navigationBarVisible = pyqtProperty(bool, fget=isNavigationBarVisible, fset=setNavigationBarVisible, freset=resetNavigationBarVisible) #============================================================================# # PyDateTimeEdit # #----------------------------------------------------------------------------# class PyDateTimeEdit(QDateTimeEdit): # # Initialize base class # Force use of the calendar popup # Set default values for calendar properties # def __init__(self, *args): super(PyDateTimeEdit, self).__init__(*args) self.setCalendarPopup(True) self.__cw = None self.__firstDayOfWeek = Qt.Monday self.__gridVisible = False self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers self.__navigationBarVisible = True # # Call event handler of base class # Get the calendar widget, if not already done # Set the calendar properties # def mousePressEvent(self, event): super(PyDateTimeEdit, self).mousePressEvent(event) if not self.__cw: self.__cw = self.findChild(QCalendarWidget) if self.__cw: self.__cw.setFirstDayOfWeek(self.__firstDayOfWeek) self.__cw.setGridVisible(self.__gridVisible) self.__cw.setHorizontalHeaderFormat(self.__horizontalHeaderFormat) self.__cw.setVerticalHeaderFormat(self.__verticalHeaderFormat) self.__cw.setNavigationBarVisible(self.__navigationBarVisible) # # Make sure, the calendarPopup property is invisible in Designer # def getCalendarPopup(self): return True calendarPopup = pyqtProperty(bool, fget=getCalendarPopup) # # Property firstDayOfWeek: Qt::DayOfWeek # Get: getFirstDayOfWeek() # Set: setFirstDayOfWeek() # Reset: resetFirstDayOfWeek() # def getFirstDayOfWeek(self): return self.__firstDayOfWeek def setFirstDayOfWeek(self, dayOfWeek): if dayOfWeek != self.__firstDayOfWeek: self.__firstDayOfWeek = dayOfWeek if self.__cw: self.__cw.setFirstDayOfWeek(dayOfWeek) def resetFirstDayOfWeek(self): if self.__firstDayOfWeek != Qt.Monday: self.__firstDayOfWeek = Qt.Monday if self.__cw: self.__cw.setFirstDayOfWeek(Qt.Monday) firstDayOfWeek = pyqtProperty(Qt.DayOfWeek, fget=getFirstDayOfWeek, fset=setFirstDayOfWeek, freset=resetFirstDayOfWeek) # # Property gridVisible: bool # Get: isGridVisible() # Set: setGridVisible() # Reset: resetGridVisible() # def isGridVisible(self): return self.__gridVisible def setGridVisible(self, show): if show != self.__gridVisible: self.__gridVisible = show if self.__cw: self.__cw.setGridVisible(show) def resetGridVisible(self): if self.__gridVisible != False: self.__gridVisible = False if self.__cw: self.__cw.setGridVisible(False) gridVisible = pyqtProperty(bool, fget=isGridVisible, fset=setGridVisible, freset=resetGridVisible) # # Property horizontalHeaderFormat: QCalendarWidget::HorizontalHeaderFormat # Get: getHorizontalHeaderFormat() # Set: setHorizontalHeaderFormat() # Reset: resetHorizontalHeaderFormat() # def getHorizontalHeaderFormat(self): return self.__horizontalHeaderFormat def setHorizontalHeaderFormat(self, format): if format != self.__horizontalHeaderFormat: self.__horizontalHeaderFormat = format if self.__cw: self.__cw.setHorizontalHeaderFormat(format) def resetHorizontalHeaderFormat(self): if self.__horizontalHeaderFormat != QCalendarWidget.ShortDayNames: self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames if self.__cw: self.__cw.setHorizontalHeaderFormat(QCalendarWidget.ShortDayNames) horizontalHeaderFormat = pyqtProperty(QCalendarWidget.HorizontalHeaderFormat, fget=getHorizontalHeaderFormat, fset=setHorizontalHeaderFormat, freset=resetHorizontalHeaderFormat) # # Property verticalHeaderFormat: QCalendarWidget::VerticalHeaderFormat # Get: getVerticalHeaderFormat() # Set: setVerticalHeaderFormat() # Reset: resetVerticalHeaderFormat() # def getVerticalHeaderFormat(self): return self.__verticalHeaderFormat def setVerticalHeaderFormat(self, format): if format != self.__verticalHeaderFormat: self.__verticalHeaderFormat = format if self.__cw: self.__cw.setVerticalHeaderFormat(format) def resetVerticalHeaderFormat(self): if self.__verticalHeaderFormat != QCalendarWidget.ISOWeekNumbers: self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers if self.__cw: self.__cw.setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers) verticalHeaderFormat = pyqtProperty(QCalendarWidget.VerticalHeaderFormat, fget=getVerticalHeaderFormat, fset=setVerticalHeaderFormat, freset=resetVerticalHeaderFormat) # # Property navigationBarVisible: bool # Get: isNavigationBarVisible() # Set: setNavigationBarVisible() # Reset: resetNavigationBarVisible() # def isNavigationBarVisible(self): return self.__navigationBarVisible def setNavigationBarVisible(self, visible): if visible != self.__navigationBarVisible: self.__navigationBarVisible = visible if self.__cw: self.__cw.setNavigationBarVisible(visible) def resetNavigationBarVisible(self): if self.__navigationBarVisible != True: self.__navigationBarVisible = True if self.__cw: self.__cw.setNavigationBarVisible(True) navigationBarVisible = pyqtProperty(bool, fget=isNavigationBarVisible, fset=setNavigationBarVisible, freset=resetNavigationBarVisible) if __name__ == "__main__": import sys app = QApplication(sys.argv) w = QWidget() lay = QHBoxLayout() lay.addWidget(PyDateEdit()) lay.addWidget(PyDateTimeEdit()) w.setLayout(lay) w.show() sys.exit(app.exec_()) #============================================================================# # EOF # #----------------------------------------------------------------------------# PyQt-gpl-5.5.1/examples/designer/plugins/widgets/helloglwidget.py0000755000076500000240000001701712613140041025230 0ustar philstaff00000000000000#!/usr/bin/env python """ helloglwidget.py A simple OpenGL custom widget for Qt Designer. Copyright (C) 2007 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import math from OpenGL import GL from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QPoint, QSize, Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QApplication from PyQt5.QtOpenGL import QGLWidget class HelloGLWidget(QGLWidget): """HelloGLWidget(QGLWidget) Provides a custom widget to display an OpenGL-rendered Qt logo. Various properties and slots are defined so that the user can rotate the logo, and signals are defined to enable other components to react to changes to its orientation. """ # We define three signals that are used to indicate changes to the # rotation of the logo. xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super(HelloGLWidget, self).__init__(parent) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.lastPos = QPoint() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) self.setWindowTitle("Hello GL") # The rotation of the logo about the x-axis can be controlled using the # xRotation property, defined using the following getter and setter # methods. def getXRotation(self): return self.xRot # The setXRotation() setter method is also a slot. @pyqtSlot(int) def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.updateGL() xRotation = pyqtProperty(int, getXRotation, setXRotation) # The rotation of the logo about the y-axis can be controlled using the # yRotation property, defined using the following getter and setter # methods. def getYRotation(self): return self.yRot # The setYRotation() setter method is also a slot. @pyqtSlot(int) def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.updateGL() yRotation = pyqtProperty(int, getYRotation, setYRotation) # The rotation of the logo about the z-axis can be controlled using the # zRotation property, defined using the following getter and setter # methods. def getZRotation(self): return self.zRot # The setZRotation() setter method is also a slot. @pyqtSlot(int) def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.updateGL() zRotation = pyqtProperty(int, getZRotation, setZRotation) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(200, 200) def initializeGL(self): self.qglClearColor(self.trolltechPurple.darker()) self.object = self.makeObject() GL.glShadeModel(GL.GL_SMOOTH) GL.glEnable(GL.GL_DEPTH_TEST) GL.glEnable(GL.GL_CULL_FACE) def paintGL(self): GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) GL.glLoadIdentity() GL.glTranslated(0.0, 0.0, -10.0) GL.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) GL.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) GL.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) GL.glCallList(self.object) def resizeGL(self, width, height): side = min(width, height) GL.glViewport((width - side) / 2, (height - side) / 2, side, side) GL.glMatrixMode(GL.GL_PROJECTION) GL.glLoadIdentity() GL.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) GL.glMatrixMode(GL.GL_MODELVIEW) def mousePressEvent(self, event): self.lastPos = QPoint(event.pos()) def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = QPoint(event.pos()) def makeObject(self): genList = GL.glGenLists(1) GL.glNewList(genList, GL.GL_COMPILE) GL.glBegin(GL.GL_QUADS) 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) Pi = 3.14159265358979323846 NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * Pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * Pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) GL.glEnd() GL.glEndList() return genList def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.qglColor(self.trolltechGreen) GL.glVertex3d(x1, y1, -0.05) GL.glVertex3d(x2, y2, -0.05) GL.glVertex3d(x3, y3, -0.05) GL.glVertex3d(x4, y4, -0.05) GL.glVertex3d(x4, y4, +0.05) GL.glVertex3d(x3, y3, +0.05) GL.glVertex3d(x2, y2, +0.05) GL.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.qglColor(self.trolltechGreen.darker(250 + int(100 * x1))) GL.glVertex3d(x1, y1, +0.05) GL.glVertex3d(x2, y2, +0.05) GL.glVertex3d(x2, y2, -0.05) GL.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = HelloGLWidget() widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/multipagewidget.py0000755000076500000240000000753712613140041025577 0ustar philstaff00000000000000#!/usr/bin/env python #============================================================================# # PyQt5 port of the designer/containerextension example from Qt v5.x # #----------------------------------------------------------------------------# from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QSize from PyQt5.QtWidgets import (QApplication, QComboBox, QLabel, QStackedWidget, QVBoxLayout, QWidget) #============================================================================# # Implementation of a MultiPageWidget using a QComboBox and a QStackedWidget # #----------------------------------------------------------------------------# class PyMultiPageWidget(QWidget): currentIndexChanged = pyqtSignal(int) pageTitleChanged = pyqtSignal(str) def __init__(self, parent=None): super(PyMultiPageWidget, self).__init__(parent) self.comboBox = QComboBox() # MAGIC # It is important that the combo box has an object name beginning # with '__qt__passive_', otherwise, it is inactive in the form editor # of the designer and you can't change the current page via the # combo box. # MAGIC self.comboBox.setObjectName('__qt__passive_comboBox') self.stackWidget = QStackedWidget() self.comboBox.activated.connect(self.setCurrentIndex) self.layout = QVBoxLayout() self.layout.addWidget(self.comboBox) self.layout.addWidget(self.stackWidget) self.setLayout(self.layout) def sizeHint(self): return QSize(200, 150) def count(self): return self.stackWidget.count() def widget(self, index): return self.stackWidget.widget(index) @pyqtSlot(QWidget) def addPage(self, page): self.insertPage(self.count(), page) @pyqtSlot(int, QWidget) def insertPage(self, index, page): page.setParent(self.stackWidget) self.stackWidget.insertWidget(index, page) title = page.windowTitle() if title == "": title = "Page %d" % (self.comboBox.count() + 1) page.setWindowTitle(title) self.comboBox.insertItem(index, title) @pyqtSlot(int) def removePage(self, index): widget = self.stackWidget.widget(index) self.stackWidget.removeWidget(widget) self.comboBox.removeItem(index) def getPageTitle(self): return self.stackWidget.currentWidget().windowTitle() @pyqtSlot(str) def setPageTitle(self, newTitle): self.comboBox.setItemText(self.getCurrentIndex(), newTitle) self.stackWidget.currentWidget().setWindowTitle(newTitle) self.pageTitleChanged.emit(newTitle) def getCurrentIndex(self): return self.stackWidget.currentIndex() @pyqtSlot(int) def setCurrentIndex(self, index): if index != self.getCurrentIndex(): self.stackWidget.setCurrentIndex(index) self.comboBox.setCurrentIndex(index) self.currentIndexChanged.emit(index) pageTitle = pyqtProperty(str, fget=getPageTitle, fset=setPageTitle, stored=False) currentIndex = pyqtProperty(int, fget=getCurrentIndex, fset=setCurrentIndex) #============================================================================# # Main for testing the class # #----------------------------------------------------------------------------# if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = PyMultiPageWidget() widget.addPage(QLabel('This is page #1')) widget.addPage(QLabel('This is page #2')) widget.show() sys.exit(app.exec_()) #============================================================================# # EOF # #----------------------------------------------------------------------------# PyQt-gpl-5.5.1/examples/designer/plugins/widgets/polygonwidget.py0000755000076500000240000001334312613140041025267 0ustar philstaff00000000000000#!/usr/bin/env python """ polygonwidget.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import math from PyQt5.QtCore import pyqtProperty, pyqtSlot, QPointF, QSize from PyQt5.QtGui import QBrush, QColor, QPainter, QPainterPath, QRadialGradient from PyQt5.QtWidgets import QApplication, QWidget class PolygonWidget(QWidget): """PolygonWidget(QWidget) Provides a custom widget to display a polygon with properties and slots that can be used to customize its appearance. """ def __init__(self, parent=None): super(PolygonWidget, self).__init__(parent) self._sides = 5 self._innerRadius = 20 self._outerRadius = 50 self._angle = 0 self.createPath() self._innerColor = QColor(255, 255, 128) self._outerColor = QColor(255, 0, 128) self.createGradient() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.setBrush(QBrush(QColor(192, 192, 255))) painter.drawRect(event.rect()) painter.translate(self.width()/2.0, self.height()/2.0) painter.rotate(self._angle) painter.setBrush(QBrush(self.gradient)) painter.drawPath(self.path) painter.end() def sizeHint(self): return QSize(2*self._outerRadius + 20, 2*self._outerRadius + 20) def createPath(self): self.path = QPainterPath() angle = 2*math.pi/self._sides self.path.moveTo(self._outerRadius, 0) for step in range(1, self._sides + 1): self.path.lineTo( self._innerRadius * math.cos((step - 0.5) * angle), self._innerRadius * math.sin((step - 0.5) * angle) ) self.path.lineTo( self._outerRadius * math.cos(step * angle), self._outerRadius * math.sin(step * angle) ) self.path.closeSubpath() def createGradient(self): center = QPointF(0, 0) self.gradient = QRadialGradient(center, self._outerRadius, center) self.gradient.setColorAt(0.5, QColor(self._innerColor)) self.gradient.setColorAt(1.0, QColor(self._outerColor)) # The angle property is implemented using the getAngle() and setAngle() # methods. def getAngle(self): return self._angle # The setAngle() setter method is also a slot. @pyqtSlot(int) def setAngle(self, angle): self._angle = min(max(0, angle), 360) self.update() angle = pyqtProperty(int, getAngle, setAngle) # The innerRadius property is implemented using the getInnerRadius() and # setInnerRadius() methods. def getInnerRadius(self): return self._innerRadius # The setInnerRadius() setter method is also a slot. @pyqtSlot(int) def setInnerRadius(self, radius): self._innerRadius = radius self.createPath() self.createGradient() self.update() innerRadius = pyqtProperty(int, getInnerRadius, setInnerRadius) # The outerRadius property is implemented using the getOuterRadius() and # setOuterRadius() methods. def getOuterRadius(self): return self._outerRadius # The setOuterRadius() setter method is also a slot. @pyqtSlot(int) def setOuterRadius(self, radius): self._outerRadius = radius self.createPath() self.createGradient() self.update() outerRadius = pyqtProperty(int, getOuterRadius, setOuterRadius) # The numberOfSides property is implemented using the getNumberOfSides() # and setNumberOfSides() methods. def getNumberOfSides(self): return self._sides # The setNumberOfSides() setter method is also a slot. @pyqtSlot(int) def setNumberOfSides(self, sides): self._sides = max(3, sides) self.createPath() self.update() numberOfSides = pyqtProperty(int, getNumberOfSides, setNumberOfSides) # The innerColor property is implemented using the getInnerColor() and # setInnerColor() methods. def getInnerColor(self): return self._innerColor def setInnerColor(self, color): self._innerColor = max(3, color) self.createGradient() self.update() innerColor = pyqtProperty(QColor, getInnerColor, setInnerColor) # The outerColor property is implemented using the getOuterColor() and # setOuterColor() methods. def getOuterColor(self): return self._outerColor def setOuterColor(self, color): self._outerColor = color self.createGradient() self.update() outerColor = pyqtProperty(QColor, getOuterColor, setOuterColor) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = PolygonWidget() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/pydemo.py0000755000076500000240000001305212613140041023666 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## 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 Riverbank Computing Limited 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." ## ############################################################################# from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot from PyQt5.QtWidgets import QApplication, QTextEdit # The purpose of this class is to show that Designer's property editor shows # all Python classes in the hierarchy that define properties. class PyTextViewer(QTextEdit): # Initialise the instance. def __init__(self, parent=None): super(PyTextViewer, self).__init__(parent) self.setReadOnly(True) # Initialise the author property by calling it's reset function. self.resetAuthor() # The getter for the author property. Note that we cannot follow the Qt # naming convention (ie. by using the naming the getter "author") because # it would conflict with the property name. def getAuthor(self): return self._author # The setter for the author property. def setAuthor(self, name): self._author = name # The resetter for the author property. Only Qt Designer uses this. Qt # Designer does not use the deleter function of the property. def resetAuthor(self): self._author = "David Boddie" # Define the author property. This will look like a C++ property to Qt # Designer and a Python property to Python. author = pyqtProperty(str, getAuthor, setAuthor, resetAuthor) # This is the class that implements the custom widget. class PyDemo(PyTextViewer): # Define the Qt signals as a sequence of C++ function signatures excluding # the return type. These may be connected to other signals or slots in Qt # Designer. zoomChanged = pyqtSignal(int) # Initialise the instance. def __init__(self, parent=None): super(PyDemo, self).__init__(parent) self.setWindowTitle("PyQt Demonstration Widget") self.setText(_demo_text) # Initialise the zoom property. We don't just call the resetter # because it assumes that this has already been initialised. self._zoom = 0 # The getter for the zoom property. def getZoom(self): return self._zoom # The setter for the zoom property. We also make define this as a Qt slot # which can be connected to Qt signals in Qt Designer. @pyqtSlot(int) def setZoom(self, zoom): # Don't do anything if nothing has changed. if self._zoom == zoom: return # Zoom in or out according to the relative zoom levels. if self._zoom < zoom: self.zoomIn(zoom - self._zoom) elif self._zoom > zoom: self.zoomOut(self._zoom - zoom) # Remember the new zoom level. self._zoom = zoom # Emit the Qt signal to say that the zoom level has changed. self.zoomChanged.emit(zoom) # The resetter for the zoom property. def resetZoom(self): self.setZoom(0) # Define the zoom property. Changing the value of this in Qt Designer's # property editor causes the zoom level to change dynamically. zoom = pyqtProperty(int, getZoom, setZoom, resetZoom) # The text displayed in the custom widget. _demo_text = """

    PyQt Demonstration Widget

    This simple example demonstrates the following features.

    • The definition of properties that behave as C++ properties to Qt and Python properties to Python.
    • The definition of new Qt signals that can be connected to other signals and Qt slots in Designer.
    • The definition of new Qt slots that can be connected to signals in Designer.
    """ # Display the custom widget if the script is being run directly from the # command line. if __name__ == "__main__": import sys app = QApplication(sys.argv) demo = PyDemo() demo.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/plugins/widgets/pythonconsolewidget.py0000755000076500000240000000575412613140041026513 0ustar philstaff00000000000000#!/usr/bin/env python """ pythonconsolewidget.py A Python console custom widget for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtCore import pyqtSignal, QEvent, Qt from PyQt5.QtWidgets import QApplication, QLineEdit class PythonConsoleWidget(QLineEdit): """PythonConsoleWidget(QLineEdit) Provides a custom widget to accept Python expressions and emit output to other components via a custom signal. """ pythonOutput = pyqtSignal(str) def __init__(self, parent=None): super(PythonConsoleWidget, self).__init__(parent) self.history = [] self.current = -1 self.returnPressed.connect(self.execute) def keyReleaseEvent(self, event): if event.type() == QEvent.KeyRelease: if event.key() == Qt.Key_Up: current = max(0, self.current - 1) if 0 <= current < len(self.history): self.setText(self.history[current]) self.current = current event.accept() elif event.key() == Qt.Key_Down: current = min(len(self.history), self.current + 1) if 0 <= current < len(self.history): self.setText(self.history[current]) else: self.clear() self.current = current event.accept() def execute(self): # Define this here to give users something to look at. qApp = QApplication.instance() self.expression = self.text() try: result = str(eval(str(self.expression))) # Emit the result of the evaluated expression. self.pythonOutput.emit(result) # Clear the line edit, append the successful expression to the # history, and update the current command index. self.clear() self.history.append(self.expression) self.current = len(self.history) except: pass if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = PythonConsoleWidget() widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/designer/README0000644000076500000240000000147512613140041017553 0ustar philstaff00000000000000Qt Designer is a capable graphical user interface designer that lets you create and configure forms without writing code. GUIs created with Qt Designer can be converted to Python code or created at run-time. Some of the examples in this directory can be run from the example launcher; others can only be used from within Qt Designer. Documentation for these examples can be found via the "Tutorial and Examples" link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/desktop/0000755000076500000240000000000012613140041016535 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/desktop/README0000644000076500000240000000161612613140041017421 0ustar philstaff00000000000000PyQt provides features to enable applications to integrate with the user's preferred desktop environment. Features such as system tray icons, access to the desktop widget, and support for desktop services can be used to improve the appearance of applications and take advantage of underlying desktop facilities. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/desktop/screenshot.py0000755000076500000240000001460712613140041021277 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, Qt, QTimer from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QApplication, QCheckBox, QFileDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSpinBox, QVBoxLayout, QWidget) class Screenshot(QWidget): def __init__(self): super(Screenshot, self).__init__() self.screenshotLabel = QLabel() self.screenshotLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.screenshotLabel.setAlignment(Qt.AlignCenter) self.screenshotLabel.setMinimumSize(240, 160) self.createOptionsGroupBox() self.createButtonsLayout() mainLayout = QVBoxLayout() mainLayout.addWidget(self.screenshotLabel) mainLayout.addWidget(self.optionsGroupBox) mainLayout.addLayout(self.buttonsLayout) self.setLayout(mainLayout) self.shootScreen() self.delaySpinBox.setValue(5) self.setWindowTitle("Screenshot") self.resize(300, 200) def resizeEvent(self, event): scaledSize = self.originalPixmap.size() scaledSize.scale(self.screenshotLabel.size(), Qt.KeepAspectRatio) if not self.screenshotLabel.pixmap() or scaledSize != self.screenshotLabel.pixmap().size(): self.updateScreenshotLabel() def newScreenshot(self): if self.hideThisWindowCheckBox.isChecked(): self.hide() self.newScreenshotButton.setDisabled(True) QTimer.singleShot(self.delaySpinBox.value() * 1000, self.shootScreen) def saveScreenshot(self): format = 'png' initialPath = QDir.currentPath() + "/untitled." + format fileName, _ = QFileDialog.getSaveFileName(self, "Save As", initialPath, "%s Files (*.%s);;All Files (*)" % (format.upper(), format)) if fileName: self.originalPixmap.save(fileName, format) def shootScreen(self): if self.delaySpinBox.value() != 0: QApplication.instance().beep() screen = QApplication.primaryScreen() if screen is not None: self.originalPixmap = screen.grabWindow(0) else: self.originalPixmap = QPixmap() self.updateScreenshotLabel() self.newScreenshotButton.setDisabled(False) if self.hideThisWindowCheckBox.isChecked(): self.show() def updateCheckBox(self): if self.delaySpinBox.value() == 0: self.hideThisWindowCheckBox.setDisabled(True) else: self.hideThisWindowCheckBox.setDisabled(False) def createOptionsGroupBox(self): self.optionsGroupBox = QGroupBox("Options") self.delaySpinBox = QSpinBox() self.delaySpinBox.setSuffix(" s") self.delaySpinBox.setMaximum(60) self.delaySpinBox.valueChanged.connect(self.updateCheckBox) self.delaySpinBoxLabel = QLabel("Screenshot Delay:") self.hideThisWindowCheckBox = QCheckBox("Hide This Window") optionsGroupBoxLayout = QGridLayout() optionsGroupBoxLayout.addWidget(self.delaySpinBoxLabel, 0, 0) optionsGroupBoxLayout.addWidget(self.delaySpinBox, 0, 1) optionsGroupBoxLayout.addWidget(self.hideThisWindowCheckBox, 1, 0, 1, 2) self.optionsGroupBox.setLayout(optionsGroupBoxLayout) def createButtonsLayout(self): self.newScreenshotButton = self.createButton("New Screenshot", self.newScreenshot) self.saveScreenshotButton = self.createButton("Save Screenshot", self.saveScreenshot) self.quitScreenshotButton = self.createButton("Quit", self.close) self.buttonsLayout = QHBoxLayout() self.buttonsLayout.addStretch() self.buttonsLayout.addWidget(self.newScreenshotButton) self.buttonsLayout.addWidget(self.saveScreenshotButton) self.buttonsLayout.addWidget(self.quitScreenshotButton) def createButton(self, text, member): button = QPushButton(text) button.clicked.connect(member) return button def updateScreenshotLabel(self): self.screenshotLabel.setPixmap(self.originalPixmap.scaled( self.screenshotLabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) if __name__ == '__main__': import sys app = QApplication(sys.argv) screenshot = Screenshot() screenshot.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/desktop/systray/0000755000076500000240000000000012613140041020253 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/desktop/systray/images/0000755000076500000240000000000012613140041021520 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/desktop/systray/images/bad.png0000644000076500000240000000470012613140041022755 0ustar philstaff00000000000000‰PNG  IHDRœ²€ÀV9sRGB®Îé pHYs × ×B(›xtIMEÜ 0D&N¦ÓPLTE              !"#$%&'()*+,-./012345 6 7!8"9":#;#<$=%>%?&@&A'B(C(D)E)F*G+I,J,K-L.M.N/O/P0Q1R1S2U3W4X5Y5Z6[7\7]8^8_9`:a:c;e=g>h>i?j@k@lAmAnBoCpCqDsEtFuFvGwGyIzI{J|J|K}K~LL€MM‚NƒO„O†P‡QˆRŠS‹SŽUV‘W“X”Y•Y–Z˜[™\œ^^ž_Ÿ_ `¡a¢a£b¤b¥c¦d§dªf¬g­h¯i°j±j²k³k´lµm¶m¸nºp»p¼q½q¾r¿sÀsÁtÂtÃuÅvÇwÈxÉyÊyËzÌzÎ|Ï|Ð}Ñ}Ò~ÓÔՀրר‚قڃۃ܄݅ޅ߆à†á‡âˆãˆä‰å‰æŠç‹è‹éŒêŒëìŽíŽîïðñ‘ò‘ó’ô’õ“ö”÷”ø•ù•ú–û—ü—ý˜þ˜ÿ™ÿÿÿs¶ÇútRNS (=\rîu#ËbKGDð5¸ïTRIDATxÚíœù_”UÆ­¬fmTPÀÄ…EÁ ÉPÑÈ\ZµÅ$Ê4Ë4ËJÍÊÒÔRJÍÊ4²ÍÊL± DS@öMöF™aæ!Ö˜å]îrî0Ÿ¼ÏÏœ÷~™yß÷žóœs§_?...........WÕw»ˆú‹ÀÝ©rÝÅán)¸dcŸª@.ÅÒ§*ãpŽÃÁÁ™]®0äGâ¥uŒáÊBTÚS„lY¾;˜ÂU„¶ÿÍ3Dl†«T›ÂU…un~î¿°¥{w„¾Í ®6¢{kv?‹Í–æÝºI`Wù_âà~“íO¯žÐ—pMÑViÇy,¶T¯ÞЗÌðpÍsm’.ÏT ¶dëи6h¸–»”Ð+ ™íœ‡mè³m°p7qHX½ÒÙÎz؇>c„„k}L$ö¾€ÄvÆÝ1tI+œq¹h²ïÀö«»Xèã7¡àÚž–(E|²ÙN}ô œùyÉBÉ÷¢ÛÉAR¡óš àÌ/Ê”q~9²l'´Ò¡1:z8al‘éwI†-I+UG ÷šB <ò²$Ûq­|èŒZJ¸7 tÿ$Ø~¨YM÷‚}06_”-Q£:©œn'’¹pM„í JhX1Ü.Dë%°Àíˆ-4¸€îcdc(°ÐŽík jhP>Ü~5ºmTdÃvXƒGwƒM¥ µ¾y¾tà õÏÁ†;е@;]9ÑGÞù"ÏÆ„KÔ¨05±¢;ô35n¨ïßxpËðíÒÈ:‚ï´{ŸÅƒ3.Å_"¼²=0AQyÏb ©±ì#`‹ªÇ~Z Kð—™þ.{>³žà=gXìgVÑqc‘Øf7î­ú…ÌÙ¢‰³ýÆlµPäsúùLÙæ·PeÂ-ó²-l¡¬!tÑÌØé©KÃÆYŒØÖÕ3™°‰ù%vDC¶ØV #§á~p¶¥0 ¬f0Ûr yX=”íI¨íz} ÛS ÎfÝd0¶çLàVÕ$ ¶xƒ&Ie8Û &&í¥Ò l«LŒs%ã©ÙV›™µ4‹ÇQ²­6ƒ‹ƒ©Ø^˜¶ÑóÆP°m ä’ÓmTb£ÝÈMÈöº"À\ÉÕQDl[3ôò×=lÛœ3‘Óü É·É)pM1d·Ü›N€kz€ôaÝÎN7—ü5÷!c¸zªZg'S¸:ÊJç#†pµ3h“’]ìÆ…î£Oçö0‚«‰È5Õ LધƒdéêOÀU@Õ7êýàpá*(©Õ‡ÖÔꃠpeAݷÀp¥¡À>ŽÛ0¸Â`´4Gà ‚x‡šD¸kL\WÍ·pùlØÚéŽQÃå0sú&QÂåŽeØ#Ñž ‚»äÏ´»¤=I—3’q_Î~î¢óŽæ Ÿá²Ù³Ù@†ËòÅ_j0þøÍ>*\Çñ\y¦ nXá#Â¥{㳠ϰXöá‡y$cÂ¥°ÝÛ9Ó¼—€î<Ü’ï´+t;~è„6,8ÓjÜFdöüûŸ`‡faÞsÂz¼|2{oë0o‡Lì§U؈³€¿Í´ðû8¡ÃRI^Âï /0ÊnVxzèвí ùÖ}Å>½ØŠü¤þAºñï!e³X¶ n)§ÉS&¤aÜ1WÅÊÍHûþ/4Éæåí(¸P´6 äÂÇéÒôÏ•&0ÇIÈÊ/£ßÓ8_ÈÓ/–4>„uØ•5vixl€ÜÆS,ch ¯È²}QT'}®!¤DÖ¨Öʸ9‡`ìˆSƒ%-U0 Í«$á ŒœŸÅÏGM®Tl,Hž|Ú g%¹þ”*„†‘)^”m¤yøû0‡ëO½ŽtšÏ‡ÑB$´]S<í®? ­n¥ÛhÃ:c„Íõ#ª‘OšVر½oõgúX]ßjd[YÆe¨ãäM’˽ísë‘m¬¬˜´—®ô FÌÆc³9"ofÔ˜+ìȱÙF£ëÂ31kiuŒZÍÑYðÕúD'Û ÃfpI¨ÃÈ6¢:Ä™¶Ñ‹W6ZȤ_ Zl`?WB(Ýúf‹ËÂ9g"‡Ãq8çp»“úT‡dá\Aî–»­¿‹èvþƒ¬\\\\\\\\\\\ÿCý ™¥\~Gq`BIEND®B`‚PyQt-gpl-5.5.1/examples/desktop/systray/images/heart.png0000644000076500000240000006226412613140041023343 0ustar philstaff00000000000000‰PNG  IHDRèè*ZsRGB®Îé pHYs × ×B(›xtIMEÜ 4hfÙ|bKGDÿÿÿ ½§“d4IDATxÚì¸UŹ¿÷içÐËTz•¦ ½‹E@Q¤AADªTéçhÔ«&Æ$¶ÄDM¢&{‰5±wÙk§ÜMŒÆ6÷öJ‚W„µöÙkÖ¬µß÷yÞç¹÷ÿ÷FÏžùæ·gÏ|“H@.Q(Öum"¶;Š=Ä>âqâ(ñx÷¿ÖöuÿçÚ£Üÿzîÿ-€ªRM¬ïÖ–îûÕ›~ûÕ¡Ñâ÷¿îíþÏÛ»ÿ;÷«kùü9ÀjŠÝÄ“Äâ*±Büxø”øŽø¨²ì?Åß‹oŠŠ7‰;Ååâ,qŒ»ÖãcÈ)‰½Ä±âq…[—nßÿ(~@]ú‹[“~#þBü¾[—VŠçºu©“Xƒ ªB³Dz÷h¶¸^¼Ù]|þÀ┊/ˆwŠ»Ä ÄÄæ|¼‘CïT·ljŠWˆ?_?ŠP]J‰»křⱉô/Œû¨žHï8ëEBïø _ʰ”Zâ q±x‹ø.µè+þK|ÞÝL˜&¶eÈD} JŸ}Ü(>š#;PAø¶xµx¦xà  J´H¤ÏˆÏ[ÔÿþÝ­éÝϯ£;賌›Å§ìŽáçⳉôOÐúXLu†ÀA)sC¤¾°©µû’:’u?K¤Ï´ë_þ vá¢Ï/I¤Ï-ÑØŸqw²t`§$°Qž ݹñu¸¹kÂy .ÅAŸ#×­Ä6‰/²Yçq‡8 AdÈ ÝP~U"Ý•Z`_¸_”V‹]ªÙå˜Dúè ¨¢£#VŠCüä ñCï”ëÆ®ÿ—ù_uÃz'†0@fèîôÏÄ\¤ŠGû4ÖõùÐ<†6Dý«Ð°DºõáߘבW÷×)udhœ–‰ôEŸ7YÞ©ïΔ3À$ºè\áîPŒÑ?I¤/þ5dzæ,úKÚõî—6æÚà?ĉtÇ €À¨–H·%ã´ùÒÖj±Œéš3Ôw¿œ}ÂøGKý½8[,`º@¶ŸH÷¦¦ØbÜ+NI¤Ç‚x¢:Gü3ã#âïÄc™º tk²_SX1¢>&Ã4ŽCÅßQõˤm™Æ úœ¹îeNgŒCÇ}™¹1Ó:òè~Ó·1¦1ê;\[¸2¸U±½8@œ Η‰ÛÅkÝšr·ø¨[kV‹žÙ¯nÝ»_=»I¼B\+.ÏOûˆ­Åb> ¯:âD¦8 ©é‰‡(˜_µ‰8Dœ!®pÃò/ÄDÇßï¯Wº_‰‡ñùÈü¼%º‹Ï1nÿk¾ØL:~‹¡ž3ã(1^üsœ~Áëë^p|•ºº¿Ï[į.½ŸH¿¤ ¦šxe\ SC÷<ôƒ,>Öú˜¸(^gC¿+\ÔÊ&¥qªK-Ý3åO3ÿ­õ·_|íx½Ž¼:A;F€H¢ž"»RƒÜÇv³ÐDêl¨¾Èu\|Ú7êÇÊ)+U¦ƒøjÔǃn‡8ÖíãÍ]—h]|×ïAôŠOPÿ™X—²†ˆˆrá)w{?Á¢yõÎâñØUß+ö£¼dŒ>ÒòaÔwË—Ó¦5>è¶Ý­ýºô–Øò`7ú箉ôÏò‘,6Ǹ;¯{£üØFa¡JÕ®­RM›*§m[åt릒ýú)gÄ北vÒ$åLž¬œ)S”3kÖ×LqFú®=é$匩œÁƒ•Ó«—rºvMÿßmÜX9ÅÅ‘ù»ìu?ÛÑ^ ?O¤{óÓ²wôñ «£ú™ç¹>J¨¥»Ý]õˆ_,ÕÙÎ£ÔØIMñÖ¨}Œåæp§¼\9G©œAƒ”3~¼rfÏVÎÒ¥ÊÙ²E9W\aÔäÖ­ÊY¾\9óç+gêT匥œ=”Ó¬™rJJ¬üê°s¼{„)¢cö‡b ÊÎ!Ñ'îŽâg¬±œ,þ’›ê „ëÜM¢õ+é»g` mÄW¢VLt{>ýœó}6î:u”Ó©Ó¾ÝïÔÌ™û‚pª¢Âx¯’7*çüóÓ»öýû+§E •ªVÍŠ¿ïÃnŠè9õg´b<ú¼ù›Qû\«¹¯Vré3wÕ½ÕGE÷½‡ÇÅÆ”€ðѯ‚þ)JDµ­0—•)§sg匣œ ”³ys´‚¸++•³bž÷}Çoôq™¼¼P»¿LŠfOuùÇOô¢ }‘â_£ôY»>xLÿí/ÝãM éï‰)CáqZ"ýòadÎržàö§µ¡ø¦š4Q©URBjjåÊø†q¯ê/$gŸ­œaÔsÄ¡vÝ×þ¤è}ÑsðtÊÑÐga?ÒQ–©âóRüæÃŒXHÿ›8œr`ýyd.ƒêv{÷†]hõ±Ž®]UJ_¼\»–@î%°ë[Ê‘/1NÆF?+}ìiXôú¥_šã5I_œ­ˆÒ†Á8÷×B(zñv±w´êÒ§âlâ€tG„ë£R Žt{‡VT4HïÏŸ¯R;wº«¢¾ˆ:fŒJê˧†v×½Jõ£F9X—ŠÅ›£ò9 àò'VÁë¢÷B©îî–G|Ž:âýQ(úÕÏËÝkB¹Øyì±Ê¹ðBBuP^v™rN9E9-[ÖõC0Ñê£~»X’cué(|6ºùw ˜˜¥öŒ—е¢S—nͱº`Œú‰t×ë; œ#¾nºõ¡¾à©[.\˜¾Iˆ6fjõj匭œFýŒß‰%ÑX M¤[ ÆÝÅæÛ?¢Vñ1à‹â™ÑéD¥ëRmâ@öh"¾hûä->i²8æç§[ Ι£œ]»Ë6„õ /Üwñ6ÈþëOG§³Â+îÜ+íÅ÷mÿÆóò'ð~÷èTêÒ3bb@Õi+î¶ýgã›ì¾¢_è<å•Òý½ ÅvªÏûëWQ»tI‘ `Ü&¶ŠF»³Ö1¬K=Å¿Øü·oÏ럂úµäÆö×¥×Ä#ˆWUÛ¡Úcë$×]Î_3Qøô9çÎUêœs8µ]õK/U©ÁƒÓ]t²<.ÞgÙß–ñ±eŒêÒQâmý{붉ç‰ï1$'޵?¤¿AHÈŒnâlÜ-ÜL#­‡UΚ5„݈›Üº5ýËG½zY'úœæv/†ú‹v;v΃ïEw´ÅïˆåüÂ+úغêÊ³Ü {·5TjäH•Ú°p·õ;UêŒ3T2Ë—JßgØý<·~u4ʯû ?°u×ü.¢…ê_˜Oµ;¤'ÅÄ.€CÓ[üÐÆ‰ÜØDOóš5•3a‚r¶m#ÌÆÝŠ •œ>]9Mšdu ýÈîÝô?‰]"X—‰±kŽ˜™×ˆuì­KïÇì@ ÇZ¬Ü9×Z^ ²€Õ®­ýÂ' å¦ú!)ÝS=KãéM»w­~ŸHß/aÓ Šw`Îf×#ä³b»ïÊN ø:G‹µmÒÖ¯²hév|'ž˜>ŸLPÍm++UJw~iØ0«g@ëÚ¹êû%GFäXË?lü5ïG>Œ úáµÍö¾ç ;Æ5'Žü— û ë'Ö ªP)gäHålÙB0ůª{ÚOš”>î”…±¦{ów·÷‚V3‹ëRg÷HŽU·Áâo zqï[ÛY—ôÃcõ‰e‰DSñ-Û&é·‚úéX·KìÑC9k×DñÐ]_Ž?>ýe. Ïrϰ·±†´J¤/µZuA}±»IÀÃ8¨›-L°³.=àÅQÈqôÂü²M³†xeP©Må,]JøD]_Ö¯WNïÞé/wUƒ;ÅbûÃ߈¥Õ¥†‰tdkþFµÄïè0¦^æv"²¬.=jY]0F‰ø„M²¥û\q@“S§òÀVÍyó²r>ý^ñpûÃ_ˆEÔ¥2ñ)›þ6ÄÇ qsï°³gúbq r‰|ñv›&∠^Õ;žƒ)‡  ˜ÅêÎèÑ*YXX¥±ù’x¬}‹á b^ˆuIA¸Ç¦¿Éx·#sA}·¢}u©’ȹÄv›&àqo¶‹MóæÊY¶ŒP‰Á¸fJvèP¥1ú¾8˾Åpcˆué[þº…âEœ7Çô=ñdûêÒ"bäÚ2éô™·íÙ.0ÅÅéçÜ+*‘¼º-cYY•ÆìvûΞB]ZeË¿Mñû5Ìq׸£-™—_ŠS‰ogƉŸÛ0áÊij\PôC3©K/%4¢Y/»¬Ê»é?KíY ÿ%1X—&ˆ_Øðï^_¼‹p†¸Ï]vmüSìGŒƒ8Ò_ü؆‰v„ø`6 ‰>|Ê)\Åp6-ý N†ãø±©=‹á‰tò ékK]Ò=¡C(CüŠ?ÚS—þ&v!ÎAœÐÏç¦l˜`Äç²Y@5RÎEÑš³éN«Vç'ÜnF–,†¯Šu¬Kú †½6ü»vŸ'Œ!ÐGÄöÔ¥×®KÆ(NXÒNñ˜lwjéÞ]9—_N(ÄÀ^MmØ œåËUráBåÌ™£œ3ÎP©ñã•3nܾn.©#”3|¸r ø¯ªTõêëízyôÞD0mÎt›×gløwìD)Ę©¿À¶³§.Ý•Hw£ˆ4ß¶aBõÏf»2ý²ã”)H¬š[¶ì{¸*5{¶rtè–`íy¤J6jT¥€ ß°«ÝÙúê’[F‰ï¾=·‡ílO]ZA¼ƒ(s¶ é÷©ó¬‰ ”sñÅ„Kô×»\¿ ««6L9íÛW¹óŠ©vg#íY 'e±.oÿөn«K‚¢wߨÓÙådbD™C‰OÞD§dsìÔ‰#-xð0®Ûkê0~ê©ÊéÕK9Mš¨d~~dÃÝî\ ÿ‹²P—‰Ÿ…ýï3ƒçˆû¶8ÄŽºô¡Ø‘¸Q¢¾ø^Ø“G¿Â·'[/‚ŽM—üºú ÛÙg+gäHå´m[¥.*6‡ôãíX _K«P—‰ï‡ýï1%ˆ‡ÑsÌwìy ùy±±¢€¾ÐuoØ“fL¶vÎkÔPμyQL«¿¤éò±c•Óºµr"¼;î7¤²c1üa†uI_èº/ìþ©ìœ#fµ.gG]úÑ¢Àê°'Ëðl9¯_Ÿ‡‡P9Û¶)ç[ßRNß¾*U»vN/†–ìXÍÌ .-ûŸ{;çˆì¤÷·£.Í&þÍô û|ç`÷r[•'~›6ÊÙ¼™pš£&·nM?ü£_èÌ‘]r¯‹¡´þ!¶÷Q—†]—Ær!1ЮSÝí¨Kíˆ`#µÄ·Ãœ }ÜË#Užð={¦;oTsËíÛÓ¡¼K—t+M¾oì¢Ð+üÅð¹Dú/÷aö„ùÏ:"›]¤ñ€¾*~]zZ,"‚m|7̉ÑÃý]å‰>t(—As­óÊŠûÚ&#ÐúЦŰCø‹á¶CÔ¤<ñÎ0ÿ{¹¿:0fƒ÷±uøuiqlâ”0'D[70T¹SË„ Ö\ å;v(çÌ3UJebaËÈçÄÃÂïC<ê uiv˜u©}6ê"úò±<ܺô¹{¬ tZˆ k24I¤Ÿ®j8OvÁ5‚¹¾ô;hrJJX̲àãb£pÃ?Šå¨KmÄÂúçj)¾Èø@ ÅÅZáÖ¥½îñ:€ÐЭËîkTïªêd.(PÎÌ™„×8«š5+Ý‘Å+ëê9XlWëE}´%´–ŠeâýŒ ÄP½A,·.ÝHD„0YÖà—oêêªNb}pî\lœ/}žrŠJ6hÀ‚°WŠyá.†§ìW—æ†õÏ¡Á÷ˆV¸.üóè'! š%ÒÏo‡2ð/©âÄM*笳±q æ'¤œZµX¤ º0Ü…ðObc±e˜ué2Æ¢U~+ܺ¤;HÕ".‚i~Ö Ÿœóùó ²q¼ø9nœrJKY˜BP¿9&ÜÅðñ×aýçÏ` Z§~`x¸ué â"˜äô°{÷ª>D¤Ïœ³s¯`®{Öë`^³& ’uÿgeãä!"Dk}Ml^}ø"AW0„¾™ü‡0z·…R•Z)N™B¨“sæ(§qc!‹|R¬“Cá\·š|‰ÏÑjõÅíáÕ ùލN|„ ùa¼¨ª[t8Ÿ:•@-RÉfÍXx,õ6±0Ây [#ãw½Ì~9ñ‚dxX á¥UœúÁ6úÇY6nTNÿþÊÉÏgÁ±ÜÅ9Ð7ó9#riÔ›ŸŠÝˆ‘ÕÄ×ÃØcÜ hOÊ¡C ·q8g®;³T¯Î"÷ŠCbÎ'ñ#FÎÝbïðêÆ#‰ô; YeQºøfU&d¯^Ê©¬$äF9œŸ{®rê×gq‰ ¿K„þÒh`ué->_ÄHú[±<¼úqq²‰¬±‰¿…qîüÞªLÄv픣w^ ¹Ñ æ›6)§{w”ˆ{K"ý°X\Ây1çÎ#ïÃ;¾[,!VB¶¸>Œ…peU&`y¹r6o&èFQý‹ÇäÉÊ©Qƒ…$&.ŠQ@ßÊç‰ ç†WGÖ+!èK Ÿ›À}Ý3¬M<ýPÍŠÝ(º~½rºveñˆ™{Ä1ç#ø,cã»b‡pjÉGâáÄK¨*˜¼µÄ§3tº»Ç‚Ý(:w®J–•±pÄÔGݶ„Q çõܳ«|–ˆñê^-œšòâ%T…“ÃX¯¬Ê„›8‘ 5·mSNïÞ,9àºô«øücéªpjÊ—b?b&dB‘ø–éA{RU&ZŸ>„ݨ]]¼˜-9¤n—: ‚á|Ÿb¬ëRÿpjËDMÈ„9aü„üb¦“¬I“ôN,¡7:Nš¤œ¢"ˆS_«¡p®Û±½Ìç†k«‡ScÆ7ÁÅâÓuW¦“KŸ[^»–À·lQN—., u‰„×ðy!æ„Ë©1Ï%x¼|0ßô R•‰5g¡7*®\©œ¦MY r\Ý¡©{Âùp>+Äœê6Õ)œZs2±¼ è;&g ñ7™NªÁƒ ½QqæLå³àº'YÎK«ÒM #éÝbùzó¢˜Oü„C±ÈôB¸*Óɤ#Ú¾à…‡‡FRN^ ~Ås,è«ù|sҳ©9“‰Ÿp0ÊÄ?š”GŠïg2‰ŠŠTò’K¿¶»u«r:v¤èã}Glna8ïši]BÄÈû–ØÄ|ÝyM, †Â7±ÔôBø£L'Ñøñ„_Û½ì2Λã!½Þ²pž'ÞÅ炘ÓV†S¦Cá›:·={>:É“jÓF9`›û›¯X¡œ (ôèÉô |ˆôF{„³‹ÎYtø³LDù6 žÌ$œW¯®’´T´Û¹s¹ о|@,´ œë ëÏñy ¢øs1ß|K…ýÑ=8_69çg:i&L Ûì¬Y*YXHqGßΰ  /ás@Äýœd¾=L$…ý9ÑäÔ/ó½‘ÉdiÝ:Ý„ lïË tjÁ Õ¯uÖ 1œëKaïò9 â~>ï¶\5\zKáßJ”ä‰ƒ?^dø×½¿‹µ‰©¹ËZ“߯ͤ­b×®aûœGÑÆÀÜn°.}¿7"ÚùëÞ¹ÄÔܤHL™hGe°K¥Ûõ¥V¯&Û¦nuI±ÆÕ¿´µ4P—ºñ·FDKÝ_ ªæ&F[+^—É„8öX°mž~:ÝZЈ Ô¥«ù;#¢×›ßE?†¸š{Üa²CÂ^¿¡F ålÞL ¶É9sT2?Ÿ"F|ÏíMT]j—I]BÄœö±¾Ù€~5q5·8LüÌÔÛ”ÉD˜8‘@l‘É… Ó½è)ÐhÐˬKWð÷EÄ \d6 (–[s‡U¦W¹»æk4h œ]»ƶ¸l™rªW§0c(»èåÔ¥Vìž#b†¾’0þºèÙÄÖÜ @|ßÔÀº(“ 0e ¡Ø×­S©:u(Êš'x5ír†Ù€þ,Ñ57ajPU_ô;ðËË•SQA0¶ÁmÛ”sÄc }·ª,‹u©‘ø.WD¬‚ŠùfCzgâkü¹ÑÔ€š‘ÉÀŸ6`lCŸsù’”êÔ‰BŒVxNëÒ¥ü=1 žh6 o$¾Æ›bñ¯&SžøˆÏÁžlÔh_0$ [ÐGޤ£5>'e¡.Õ_ãYð'fú›DØxs’©Á4$ƒÁžœ>plI;Ez£mNÍB]:Ÿ¿#"fÑNfCzObl|ù¾©tU&gÏ++ Ça»t)íÑJ©â™Ïbñ·ü1‹®6Ð7cãI©ø‘‰AÔ ‘~×Ï Ová8lõÃPõëStÑZÇš¾ƒˆxõ‘¹s}˜GœM}Ë›ç÷hKY™JíØA@ÓŠ •ìЂ‹V{Ÿ{¿ÅoMÒçןá8Áì.z?âlü¸ÍÔåÐGýp}!‘®ãÆQh1Í .Mäù#³}'q6^”ˆÿ01xzùÜEE*µi9ÌŽ-‹«d~>…#á-lÜÇß 2)6ç˜ dÈñ¦¾Ýmõ;¸ $‡éÖ­ÊiЀ"‹‘²›št,/D Ø Íî¢E¬&MµLz /[FHSý‰âŠózuégü½1`ŸÈð~L†^B¬ï˜4Ãýê–- Èa:s&…#û“r{5©7+D´ð—½*ú±6´6õ³Ë¿zÊBrH&×®UNI E#ë5é;üÑ—˜ 蟊µˆ·Ñg‰S]|ÃÏ`..VI}þ™°Ž]»RP1Òê·?HMêÌß úŒÙc.‰·Ñç&Ëñ>rjà@BrXNŸN1ÅX¸æ 5é þ>ˆhØæúµÄÛhSlª½b¥ß¬Ÿ”',›wãFå”–RH1ê_íê žðÿš1"bU]a. ï&âF›á&Š~¥ïu?ƒ¸iS‚rXöéCÅX¹ð5i-D Á'Ͷ[ìDÌ.L ’~~ñI'”øzÖYPŒ/Š%ûÕ£zâÛü]1$[› èó‰¹Ñå1ƒäR¿çÏW¯&0›vûvåÔ¯OñÄX:g¿z´”¿"†èYæú­ÄÜhR]üÄÄ ùµŸÁÛ¢a9 Gޤpbl}Ö=jWËïq;DÄ,{³¹€ž$êF“¾&HãDúÑσw²i׬QNQ…cíDw犿"†é;‰tëiC!½9q7z,218Nó3póò”³nÙôÙóîÝ)š{pwÒù[ bØk. O&îFÛM Žkü ÚV­̦]¸b‰ˆˆhеæz%q7zü>èQ ¾F÷{­¬T©–-)–ˆˆˆ}Ä\@ž¸-Ú™üÚK.!4›<Ú‹¡ˆˆˆ¡Xn& !Ö!öF‡©&ú4?ƒµ^=B³AS;wª”þ›S${¼¹]ôáÄÞè°ÍÄ ¸ÒÏ`0€àlr÷|Ò$ $""bH®2Ð/"öF‡_™Oû¬sæœ >J”ª]›‰ˆˆ’?7Ðo$örAô?–û¨……*¹u+ÁÙ”ãÇSCtwÂX?t.ŠF„Æ&¾±õ3PÛ¶%4Ü=OÖ¬IqDDD Ù¾fú§b5â¯ýg" ¯ò3HO8àlʱc)Šˆˆˆ8ÏÜ1—NÄ_û1ò‚èm~é‚gC»çNi)Eѯ4ÐO'þÚÏwM †W<Îd~~:8 ƒ÷´Ó(ˆˆˆˆ–ø€¹€¾øk?ÏXuAôˆ#Ά^ u5¢ """ZtQ´ÈL@¿‹øk?z ö3@‡ !<›è{~ÖYCDDDËìh& ¿Eüµ›†&~J™ëgpΜI€6¡î”C!DDD´Ê“Íur) ÛKo½ÂÇÀL®]KxÚ‹/¦"""ZèrsçЛƒíåTƒàW^¦î(B€Þ¾})‚ˆˆˆú}s}1Ø^–=òÄ·½Ìöí ÏA{ùåÊ)*¢"""Zè“æú4b°½\ôhäg`J€úrè¤I@DDDKÝc®“Ë*b°½Üôèág`N™BˆÚã"""Zl33ýb°½¼ô8ÉÇ€L-YB€Ò‹.¢ð!""Zn3ý!b°ä‰=Îõ: óóUjÇBtöïOáCDD´ÜSÍô÷ˆÂvR×Ä%„M^¤~Õ’œÛ·+§¤„‡ˆˆh¹‹ÍôOˆÂvÒÆD@¿Éë€ìÔ‰¤ú(Š""¢õî2×É¥Œ8l}L|ø{=>x0!:H:Š¢‡ˆˆd. · Ûlj&>ü—½Èñã ÑA¹u+½Ï#âæú1Äaû˜ô_ îõºƒ>{6A:(§O§à!""FÄßš è#‰Ãö±(辞Ÿ¹t)A: S]»Rð#âîDú%vý â°}¬úƒoíg@nÞL˜Â-[T²°‚‡ˆˆ!k™ è ˆÃöquÐ|O¯Ç[ªW'Hµ{N÷DDÄÈÙÂL@_M¶Û‚þàGx„Iz gÏž:DDĈy´™€^A¶_ýÁŸêu ¶lIÂÊJ唕Qè#æ03ýzâ°}Üô?Ëë@ìÒ…0„^H‘CDDŒ cÍô‡íãá ?øy^bŸ>„é =š"‡ˆˆA'š è·‡íã7AðçyˆÃ†¦ƒ¸ ªQä#çéfúÄaûx>è~±×8v,:Ûê¶•ùù9DDÄ:ÃL@¿—8l/ýÁ/ó:O?@mçÌ¡À!""FÔ9fúÄaûx+è~•ÇA¸¯W7¡:«&;އˆˆQÏ5Ð'ÛÇž ?øu^¢Þí%Tsþ÷y™€þ qØ>RAð—{ˆs窳éöíÊ)( À!""FÔ%fú Äaûp‚þà7{=â2>¡:›Ç[.¤¸!""FØ Íô߇sðˆËz¯QJ‚uöŽ·ŒGqCDDäˆ G\"È;Aðk½ÄÅ‹ ÖÙ è]»RÜ#ì3ý â°}¼ô¿Òë@\º”`Mkצ¸!""FØyfú#Äaûx%è~¹×¸l¡:›QØ郞 zy1è~);èæ=ï< ""bÄi& ÿ’8lÏýÁ/ö:/ºˆ`-O9…†ˆˆqÏ4ÐA¶§ƒþà/ðÚf‘K¢Ùk±Ø¯… 1âN6Ðï ÛÇãAðs=Â$m³g‹6DDĈ;ÖL@¿8l¿ úƒŸêu ž>Á:VV*§¸˜Â†ˆˆq5Я'ÛÇO‚þà'x=âÂK¢ÙqÝ:Š""b ìi& ï$ÛÇAð#¼ôsÎ!\gà . ¨!""ÆÀŽfúeÄaû¸2è~€×€>{6á:N›FQCDDŒÍÌô%ÄaûØô´×K¢S§®³áèÑ5DDÄXÏL@ŸK¶Aðí¼ÄI“×Ù°o_Š""b ¬f& O%ÛÇAðM½q7Žp Û¶¥¨!""FÜwÌ„sí8â°}Ì úƒ/ñ:G"\gÃúõ)lˆˆˆ÷7æú±Äaû˜dâÃÛË`:”pWD )lˆˆˆ÷çæz7â°} 5ñá?åe0êçé ØUsÛ6Š""b ¼Á\@oL¶.&>ü»½ ÆnÝØUuÍŠ""b Üb&œ!‡í£±‰€þ}/—DÛ´!`WÕ%K(jˆˆˆ1p©™€þG¢°‰_=vyŒååì*š:÷\Š""b ü–™€þQØ^þôXåe0––²«êôé5DDÄ8ÎL@ÿ51Ø^ÞzÌó2óò”SQAÈ®Š§œBQCDDŒ=Íô›‰ÁöòXÐà$ƒ1µi!»*ŽCQCDDŒÍôÄ`{ùiР—×¹|9!»*è“'Sà#êÝæÎŸ¯#öF‡ƒõ¼ÒåË Ü™8k1¢n1ÐÏ$öF‡kL Šç¼ Ò3Û™8>1¢N3Ð&öF‡…&Åtr Î%K(pˆˆˆµ»™pþ \¢Å±&úÅ^iÇŽ„íL\½š‡ˆˆÑ ¢ÕÍôgˆ¼Ñ¢¾‰€>ÖË@­]›°‰[¶Pä#èÏÍo¹†È=ö=0Zy¨© Ü™tr©^B‡ˆˆ1W™ ès‰»Ñã® Fžø²—€~î¹îL,/§Ð!""FÌÑæzoânô¸ÌÄàøž—Áz „íLlßžB‡ˆˆ1™ 矉%ÄÝè1ÑD@?‹¢ÁÙ»7…1B>nn÷ü¢n4ikb€xzQ´¤D9••n¿gÐGޤØ!""FÈæúuDÝh’'þ%èR&¾ïeЮXAèöë¤I;DDÄyš¹€>“¨]î11Hîó2h§L!pûÝA?çŠ""b„<Ì\@oGÌ.«L ’õ^íÀ„n¿®ZE±CDDŒˆ˜ çpOJ@Deb œèeàê–„nVT¨da!E1®3ÐLÄ6uÅ/ƒ(ò¢öz¼ëֺ酎ˆˆKGš èq£ÏË&Ë=^ï´in¿çлv¥è!""Zîn·q†¡€~ ñ6ú\ob°¬ð2€ûö%tûuØ0 ""¢åÞa.œÿC,"ÞFŸ9&Ì0/¸A·_O?‡ˆˆh¹ç™ èwmãÁ‘&L©ûóΡpjõjB·/ºˆÂ‡ˆˆh¹8>ÑmxR&ͽ âÉ“ Ý~ܾ]9yy?DDDK}Ü\8×v&ÚÆ‡˜4ó¼ äÎ ÝtrADDŒ«Ì…ó$ýÏãÅ §—\T”Þ&x{6Ù½;ÑR{™ è×iãEKS?½üÆË`ž7àíDZc)€ˆˆˆú²X`. ŸA¤o›<ë¼ è!CÝ~<ûlŠ ""¢…n7ÎõÓåÄÙøñ?¶´[LÕ«GèöãÆADDD d. ?G”'“M  êâ›^õòåo?Ö¯O!DDD´È߉…æúJ¢l<©'~nbUzØÇOèöaªgOŠ!""¢E®5Û^± Q6¾eÕeÑñã ß^2„¢‰ˆˆhÀafúÍÄSÐl15èN÷2ôÎpe%üPΛGÑDDD ØûͶVÔ'š‚¦«©AWC|ÍË„˜=›~¨v‹;w*§zuŠ'""b€žl6œ¿— ÷9ìÇs¦ßj/¢U+B¸“úVŠ'""b þF,4ÐWIaÎ75øŽ÷x™‹ÂåŒPDDÄ€œi6œÿKlL$…ýi$~fj^奣‹Þ&„Ü-[”SXHEDD̲/Š%fú÷‰£p ~jjv÷29 ”sÙe„ðCséÐBŠˆˆ˜eš çÚ>DQ8£LÄ;¼LÁƒ á‡ròd )""bÕ -j™ çOCá›Ð·†ß25÷0ARÕªñpÑ¡º¹¬_¯œ¼< *""btwϧCá`\dj0ˆy9‹~ÜqñCÙ®1 ¾,Ö4Îÿ Aá`4H¤Ÿ˜52(Oõ2YØE?ô.:Ç\³â|ó»çk‰Ÿà…M Ê"ñI/æøã âSÑ—j)¬ˆˆˆUêÜRj6œëMÑ&DOðB?“ß§z™4¥¥*¹u+Aü`vìHqEDD¬‚sÍïž_Mì?½ßí.g8 ÷ nB&œor Nö2‰ô³ökÖĿɳ΢Ð"""ú´¿ùpþ b&dJmñC“gÑ÷2‘úö%ˆS»ÅŠ •¬Y“b‹ˆˆèÑ[͇síqÄL¨ ;LØ ^&“n'¸bü›<˜‚‹ˆˆèÁ¤ØÕ|8Šx U¥•{ËØÈ ÍwÏjB¥:u"ˆ“_LÑEDDôàá잟@¼„lpƒÉ;Òã¤J{.aü›<ì0 /""âA|Klb>œ?I¬„lÑAüÂä¾ÃËäjÜxß™kù<ùdŠ/""âAñk>š0þ(‘öAâ$d›Ž¦wÑ·{9æR»¶r¶m#”èeÑ£Ž¢#""Àáìž%NBÜar ësao{™hC‡Èä‚aDDD;Ú*>LŒ„ 8JüÒä€>ßËdËÏOw.!”ÕÊJ•lÔˆbŒˆˆ¸ßÅÐÃ͇ó/Ü w›Ô5Äç¼LºV­öR‚ùÿ;‹>~<Ñõ‚pvÏo#>BÐô0½‹>ÉëÄ›:•PþÿÝ´I% )ʈˆ˜ó>,V3Î?ÛÁ7™þöy›—ÉW«–r¶l!”ÿ»w§0#"bN«;Ãug÷|;±LÑÖýFhl€·w{™„ƒÈÿ¿çGqFDÄœvc8áüÏb]b#˜ä;¦úe^&a^žræÏ'”ó²(""â>_ë†ЗÁ4-Ä™èµÄßy™Œ©ÔŽ„òý=ã Š4""æ¤'†Î÷Š¥ÄEƒ]¦ü)^'䈄òý»¹è/,¥¥jDDÌ)¯'œkO'&BX4?0=èoö0!“º7ú’%„óýCºþÒB±FDÄñ%±A8áü1˜a²ØôÀ?L|ÃËälÞ\¥**çÿvõêô}Š6""æ€# 纉ƑÄC›êâ{¦'À\¯tÌ‚ùþ»è]»R´1ö^ÞÑ–+‰†` “MO€Bñ^¯G].ºˆpîš\¸Âˆˆ±öE±Qxmë Áô9«'MO„.â/“µqcåÐÕå¿¶hAGDÄØ:*¼ÝóyDB°þâ—¦'ÃR¯vøp‚ù¿¹ÌœIGDÄXº-¼pþ”X@¹Ùô„(åñ¨Kê èÚ]»”S§…cåbY8áüs±;1l¥\ü«é‰ÑF|ÇËä­[W9›7е&PÌ16·{¾™¶³8ŒÉ1ßë$>úh¹¾,ºu«rJJ(ꈈ //œëCkÿÀvôù«ßšž ùâ=Nâ}g° éÊ:”¢Žˆˆ‘÷.·»[Hýx¢D…¡aL’ÖâÛ^&sq±J­\ÉeÑ ”STDqGDÄȪ.l^8ÿ‘¢ÆØ,g{Ô­Zñʨ>êÒ¯#ëÄðÂùb3âD¦â‡au¹ÍëÄ2„€¾v­r )òˆˆ9w†εgõ ª, cÒ4_ñ:Á§Mã,zß¾zDDŒ”Š¥á…óûéG"I¡øL“g´×I^\¬œåËsû,úêÕûúÄSð1 êûfG†Îÿ.¶$âAÔé ~Æ$Zïu²——+G·Ìå]ôcŽ¡è#"b$îÑ–ÙD;ˆ ë˜D5ć½Nø=r; ë_òò(üˆˆhµ—‡Îó‰uª‹¯…1™:xm½¨4)·Cz·nDD´Ö{Åâp¶´&ÒAÜ(~Ƥ:Õëä/(P΢E¹З.e­ôU±Y¸»ç³ˆrW®kbíôZêÖU©M›r÷Âh§N,ˆˆh•Iqx¸áü§D8ˆ3eâÛaGÐk1hß^9¹úˆÑâÅ,ˆˆh•‹Ã ç¿á î ë¨K{?çÑÇŒÉÝ]ô6mXÑ ¿›H?Bb@?‘è¹Âΰ&Ú¯E!/O%§OÏ;`‹""†îCbÍpÃùÕD6È%jˆo„5áÖx-Õª)çâ‹ss½eKDD Í×ÄÖá†ó·ÄR"äýÃ:êR$þÄk‘¨UK9—]–{!ý‚ X 1÷ŠÇ…Îÿ%ö$ªA®²)¬É×H|Þk±8üpålßNGDDD.7œkÑ —ѯq=Öì$¾ãµ`èG|*+s+¤/[F_tDD4êÆðÃùOÄ<"ä:úU®Úˆ3|ÔÈ‘¹wÔ¥G DD4¢>~Z-Üp.ÿ‰FD3€4g†ùmy‡Ÿ~ƹÐW®L¿°Êˆˆú¸X/Üp®ïÅ #’|•›Âš”úÛúO½VÏ??·Bú€,ˆˆ˜¯„ß±E»ž(ðuêˆï…51ë‹Oz-&¥¥*µzuî\]¿^¥tËIDD̲»Åþá‡ó‡ÄB¢À ~ÖÕ/¾î£³KrëÖÜÙE:”…³î©á‡ó”Ø„pp–‡9Qû¸ßæ=–6m”³cGnôË/WN,&ˆˆ˜5…Îu¿óÞD/€CS þ:Ì ;ËϥѮ]Uª¢"7Bú˜1,(ˆˆ˜¯óÃ軼ÓPÜæ¤]ã§ÐèK”¹зoWÉš5YX±JÞ–H¿êr8¿‘¸àŸãé–G¡L\]8nñSpN8!7Bú)§°¸ "bÆ>•H¿ær8S¬MÔÈŒÕaN`™¹ê?…G‡×¸ô;•Ó ‹ ""úö5±Cøá\?ŽØ‰ˆPµóè÷‡9‘[ºýY½žd~¾ræÎHŸ:•…}ùŽØ;üpþ¥8žxPu$Bì®í'¾ëµ*gþüxôÊJå´jÅ‚ƒˆˆžÜ#?œ+÷—yÈ=ÄÜÔ'ˆï{-FÕ«+çâ‹ãÒ/VN^ ""ü×eq’áü1ŸH]&‡=¹Ov §¢T»¶rÖ¬‰uHOvïÎ⃈ˆušáü±Œ( W…=Éùé‘Þ¤‰JmÚß¾jUúH ""Àåv„ó¿ˆí‰PÁQ(>öd_å§@•—«ÔÆñ é#F°!"â×\cG8×ÇcûŸ‚çpñaNøñ:?…ê°Ã”³ys<¹lݪœZµXŒñ?^/ÚÐg›Ì1DüW˜“¾Xü‰Ÿ‚uÄʹüòxî¢OžÌ‚„ˆˆûü±»FZÎ7—Ì3)‘îgÚä/ïõS¸Z¶Tζmñ èÊiÚ”… 1ǽS,±#œOÌ#*„ú°‹@}ñQ?¬}{•Ú±#~!}Á'DÄö!±®áü×b5"@xè—Fï »´_öSÈ:vT©;ãÒ;wf‘BDÌAŸ›ÙÎß§DüMØE¡«ø†Ÿ‚Ö­›rvíŠU@O­X¡œ‚+DÄR`uíà4vq8.‘~ÎØsa;úh•Òç·ã´‹>x0 "bŽø‚ØÖŽpþ™8Š8`G‹ÿ»HŒòÒS*§²2>]÷|/)aáBDŒ¹Ï‹­ìç´S°œ âaŠÅ÷ýºcŽIwB‰ËQ—ÓNcñBDŒ±/‰í ç´SˆËm(§Š{ý¼=âsÜEÿ"Т‹"b }E<ÒžpþÃí"ž¨·ÚP8æù-|q éK–('/Å 1F¾)ö´'œ?%–{¢Cuñq ÈŸÅ/Ù½{|Bú€,hˆˆ1Qw*ëaO8^¬M܈MÅwm($Ëý£ŽG ÆÍ›U²¬Œ… 1âÊbªÙÎß›s¢K+1eCA¹ÄïNúQGÅ#¤Ÿq‹"b„}GhO8×kzkâ @ôé"þ5좒'®÷[;wŽþ‹£úÂhË–,rˆˆÝ9lO8×kyWb @|8^ü4ìâR ^á·@vꤜ;¢Ò—.UN~>‹"b„ÔozŒµ'œÿKAœˆ§&,葞ŸAHOÅ!¤óÂ("b¤vε'œëWBÇcâËE6›"ñ¿!½k×hwÙ¼Y9\ED´Þ݉ô«Ø {<‡ø6ØPpôq—í~Cz›6ÊÙ²%º!ýÌ3Yü-ïsÞ×®p¾”Ø臌®µ¡ðè‹£üÐ#ŽP©M›¢{a´m[ADDKÃy»Âù" @nQ ÞnKH÷ÝÝ¥qcå¬[;|¹r X -{„¨—]áü:wC rŒšâ36¢ü Ž»8ååÑ éC‡² ""Zâ[b»Âù½b5b @îR_|Å–ôµ~Ϥ׮­’—\¹€žÒi6daDD YYUW»ÂùÏ ç Ñ¯:¶„ôM~ li©r.¼0z»è矯œ¼<HDÄ|]ìiW8L,#–À¿i#&m)RKýÚ’å,Z½ô>}X$Cð%±“]áü!±qþ?G‰‰ìq—jÕ”sî¹Ñë^³&‹%"¢A_»ÙΟëCà›è%~`KH_•IHŸ7/R!=9u* &"¢ÁsËΜ¿(6 ~À¡(~dKñZî·çç+çôÓ£µ“Þ¥ '"bÀ>/¶³+œ¿*–;À+ýÄ¿ÛRÄfˆI?…X_¾=::»èk×*§¸˜1 ³+œ¿$6$n€_Ž?¶¥˜M÷ú-ÊC†¤_ïŒBP?ùdQDÄü•ØÀ®pþ ;çPF‰ŸØRÔNwû-νz)g×.ûºþ"Ѳ%‹)"b½S¬eW8[<œxUe‚ø™-Åm¸ø®ß"ݹ³r¶o·?¤ëG— XT³àMb »Â¹,_‰fÄ ÈsÄ/m)r#Ä÷üë-Òm mé#F°°""Vш%v…ó?ˆ‰mγ¨Ð©â[~‹v“&ÊY·ÎîÇ‹vîTNy9 ,"b†^#ÙÎÿWìNŒ€ ¸Ø¦®Ÿh~ÍgáN6j¤œ5kìÞE×.éN4,´ˆˆ¾Ü.ØÎÿ(v#>@Ð\hSHïâ><áëA£:uTRŸ÷¶¹õb¿~,¶ˆˆ>Ô/PçÙÎ/v&6€)&,:“ÞÎ}€ÂW1/.V©sα7¤oß®’ °è""zðB»‚¹Vþ±8sæ™%~aK1ÔP<æ·¨ªäôéö†ôóÎ㨠"âAÜ#žj_8×­› ,æÙ´“ÞD|Øo×ø¤“ì½4:p ‹0"âÔïbœl_8—ï ‰6Ä›É ‹ú¤ë)~’I±:ÔÎWGuÿvŽº "~Å×Åþö…ó7Å#ˆ` §ÚÒ«‰×fRô{öTŽnsh[H_°€£.ˆˆ®/ŠÝì ç/‹‰`“l éºÍÖÖLŠûöÊÙºÕ¾Þ¿? 3"æ¼O‹mì çò!QN [™(~jKÑÔí¶–g²4mj߃Fò¥!U¯ 4"æ¬÷‹åö…óÄF,ÿ`;'ÛÒµ³ôE~ƒúõ•³bG]-ð.±Ž}áü·bC–}ˆ VI×N÷ú]JK•³h‘]!Œ1ǼÝm`Y8ZlÀrw©¢cݶ\¾‡’’ôε-}óf•ª]›EsÂÄêö…ó‡ÅZ,óUN?±©°ßô»Häç«Ôi§ÙÒçÏç¨ "ÆÞb¡}áü±Ë;Dáâ?l*°G‰/eò Ñ˜1ö„ô^½XÀ1¶®r/ú[Îo‹YÖ .ôÿjS¡mã¶ëò½pè`lC¯tý€QÆ,äˆ+õ…þyösíb!Ë9Ä£Å?ÚTpŠ÷fÚ+}Ë–ðCº¾ÀšŸÏ¢Žˆ±Pßšhg8ÿ¶˜Ï2q¥¥ø–M…·Ä½„ä{1iÒD%×® ?¤ÁÂŽˆ‘÷5±Ÿá| K7äMéW׬)ÀúÕÑM,(ûº©,]n@ßµK9Í›³À#bd}Flo_0ÿR<—%r ýêÚó¶í”œ“ÉâR\¬œyóB é©K/UNQ ="F·ÅÃí ç_ˆsXª ©#>j[H?UÜã÷R“>>yr¸;é'²Ø#b¤ü©XÛ¾p®ßï˜Ì ¹Œî%{¯m!}„øv&mGVNee8]ÿçy$‹>"FÂkÄjö…óÅYšÒ!ýnÛBz÷Ò’ï…§OŸô¹ð0BúºuÊ)-eñGD«Ý%ÙÎ?G³$ü—jâl éÅç3Y€:tPÎÖ­á„ô3ˆh­Ëí|€è/b?–b€‡ô›m éúòÒC™,DM›¦w´ÃéÇC@D«Ü+~ËÎ6Šò–èÌ ðÍè‡ ®°­€×ï̤ c:ÊY¶Ì|@ß²E¥êÕ# ¢¾+ޱ3œ¿&6géðÆJÛ yuñ»™,N%%Ê9ÿ|ó!}Á‚ôÅUÂ"†è«bo;ÃùÓbC–[L?³© ës“‹2Y¤tòÙ³Í÷G<˜€€ˆ¡ù¨ØÜÎpþ³DºAdÀñŸ¶÷YîyÊŒÚ0š è;w*çˆ# ˆhÜ;Ýã†ókÅ–W€ª1Hü›mE~T&½Òµ}ûªTE…ÑWFSÕªј7ˆ5ì ç›Ä<–U€ìÐ)‘¾ioU±ï.¾ÉÖ±£JlØүœÑ€’€U}ÁüKñ<–R€ìÓR|öÞÜ=gé{!kÕJ9›7›{e´S'Â"ê9vîšë»Lg²„G¹øœm €>gyG& ZýúÊY±ÂLH¿ürZ/"b îOµ3œë;LcX:‚§žø„m A™øƒL·ÒRå\p™®Û=æç(1«=ÎO°7œŸÈ’ `ŽÒDºM–U B¡¸5ƒ.YX¨œY³Ì„ôáà ˆ˜_{ÙÎÿ,öc©0n“uµ… ƒZ¨C·ßÅ.?_%'M > ïÚ¥œ-ˆX%ŸÛÚÎw‹Y"ÂźWGµ“Üs™¾¾¡CÓ—:ƒìê²zµJU¯NÈ@ÄŒü•Xng8A<ŒeÀ¦ˆŸÚ¶Xô_Êd<úhåìØìNú”) DŒSó_$ÒÇÀ"†‰ضh´Ïd!lß^9[¶Ò{ô p ¢g7ÚÙãü߯ƒ² ØI—„…5ïÉäòh³f*µqcp}Ó&åÔ®Mð@ă×"{{œkW%xÀzôƒF¯Ù¶ˆÔpö½8ê½lYpçÑ/¼P9„DŒZó/Ä,yÑA÷J̶Eÿ4¼!“E²¤$ÝÃ<¨ô±c "ˆø5ßÙÎ?'°ÔD+{¥kg‰{ý.–……*9}z0]w騑@‚ˆÿñwb7;ÃùßÄ¡,qÑE÷J¿ÆÆ>Æ}Ï×¢™—§œÑ£ƒ éú¬;çÑQ|Dlfg8_ìÌÒ}òÅm6†ôcÅ73Y@‡ ¦Wº>F“ŸO@AÌaioówÄö,iñbQ"}©ÈªE§‹ø|& i·n*D¯ôã'¤ æ¨7‹ev†ógÅÆ,cñd¬ø‘m‹O¹»kåw1Mµl™n•˜íóèº;a‘çvx§Xƒå Þ ÿlÛ"T[¼=“…µaCå¬Z•ݾnrÊÊ-ˆ9âr1ÏÎpþ]±ˆe 7èHŸg´j1ª&^›É[«–r–.ÍnHŸ7/})•ð‚ëˆæÚûѺäºWúö-Jzë’LÛâât¨ÎfH6ŒƒSßGÙÌ?Ïd‰È]ŠÅ›lÜ=ʤWzRw`9ýôìô]»”£Ï¹fcåKb;Ãùâq,M BÝhcH?ÞÝåòÝ+}„ì…ô•+UªzuB bL|Zlgg8ß+veI€ý9/aaF½Ëõb& ñqÇe¯WúÌ™ÄxŸ½=Î_[² À/þÓ¶Å«…øX†½ÒlõJç<:b¤Õ]¢jÙÎI¤ï|#}Ä?Ú¶ˆ5ïÎdanÛV9[¶T9 §**”Óº5A1‚^åv‰²0œßšHß8$­Å×m[Ìjˆ7dò QÓ¦éÞæY螤?:b¤\gïDWˆ,7à‡ú⣶-jz¡ÝÉB]¿¾rV¬¨zH_°@9º[ ÁÑúç³ì æ_&Òw~2¢¦x¯m œî•¾$“E»´T9‹U=¤ŸpÑbßÏ´3œ.žÅÒUE?3}½… š"îñ»xW«Võtw˜Ž Bˆ<@äÇı,)M¬lÃ8@|-“Î8£j—F7mRN:"D‹|Aìfoó.,#'‹Û¶øuŸÉäA£Ñ£«¶“¾x±r Fˆ¨[±6··Çy –’~âŸl[õã#¿Êda5ªjK8B Ù{ÜV¬†szœ€1Žß³m1,˜Éß³§rvíÊü<úQG’Còûn V Ã9=ÎÀ8Ågl[‹ÄŠLú£V©;3 é›7+§^=¢a·Š…v†óÊ=Î $JÅŸÙ¶8ê6Œ‹2yШM›Ì_]¶L¥t‡B¢¹sݲú£/ÒÓãBGï}ÛÂ,59ƒ6ŒúÕÑÔúõ™…ôéÓ Nˆ»Wœiç®ù§âT–°…eÛâªû&_á7,äå)gÂÿuêDÐBÌÀ‹µì çß‹(ïeôKz7Ù¶ÈfÔ+]‡ôñãý]Ý´I9uë¸}øm÷Ñ1 ÃùJ:Ä݆q“…‹­šáöUö †ç#Ä€\içDŸ‰3(åGô {_ØÒÏ WzjàÀô¯!}Ú4Ââ!<ÇÎ]óŠc)ßg&¸ žU‹p?ñ5¿bÐ !½woBâ7¼:ÍÎpþ'±7er¾îÂgÕbÜA|Îo¸èÑC9»vy èòÿ/Õ¦ q?õ¯W£ì ç»ÅŽ”kÈ%Žß³mQ>B|ÔoÈèÜY9;vx»4ºaƒJÕ©C0C_ûÛΟ›P¦ Ñ à³¶-ÎuÅ»ü†v픳m›·ôÅ‹U²°€†9í‹b7;ÃùCbÊ3ä2ú±_ضH×ÈàA£}ÇW¶nõÒ'O&¤aÎú´ØÆÎp~K"Ý çÑ âͶ-ÖÕÄÿñ>š5SÎæÍÞBú€„5Ì9›Ùί )ÇÿE÷J_eÛ¢­û1_â7„4i¢œõë=]u¸4Š9äbmû‚ù—  8(VöJ_(&ý„‘òrå¬[wèK£7*‡K£˜þX¬i_8ÿ\œGÙ84'‹ÛÒ'‰{|†ô”‡ôäÂ…Ê)( ÄalÕ÷9Jì 绵<ÒSü½m!}€ø†ŸpR¯žrV¯>ôq—3Ï$Èa,Ý.ØÎÿèÖðIKñ5ÛBúQâK~º»HHOy éè0V®vïqX6‡ß[S^2§žøˆm!½­ø¬Ÿ°R·®rV­:ô¥Ñ¶m v ϱ³SËsbcÊ*@ÕÑmo±m±?Üï«£ú2è!B:—F1ê&í ç÷&Òï.@–(+m[ôŠ¿ô`jÕRÎòåßI_ºT9EE„=Œœ{Å3í ç7‰Õ(£Á°Ê¶Å¿Žø3?;Œ5k:¤O›FàÃHù¾8ÙÎp~¥ûdªø/›B@©x“Ÿ@#!=yÉ%?î2x0Á#ánq¬á|%åÀ#Ŀۊī|†tç`!K£ß‡ÙÌõcgçP&ÌsŒø›‚î÷¼ÉÏq—²2å,[vðK£º A-ôu±¯}á\ÿº6™òÍÅW- ûºXx:5j¨Ô’%½4šªV@ˆVù¼ØÎ¾pþ8˜²>º¯ñs¶…ô9nË9ÏÇ]vqtòdB!ZÎÛÛÎÿ,ö¥ØC-ñ>ÛBú©nw OÁ§¬ìàG‡ !bè>-¶°/œËwáDgÊ €}èVjÿc[H.¾›…ôTE…rÚµ#$bh>(6²/œÿNlBù°—¼„…½Òû‰oz Bõê)gíÚ_ÏK£Š¿væ²ln=&Ö¥ìDƒù‰t«5kÂD/·ë…§@¤;·¬Ysà®»¾pi z¿ØÀ¾p~·XJ©ˆÄm ]Å—<†¢ÔÁvÒçÌQN^á÷çbmûÂùÍb5J@4šH·^³&\´s»`x H©”>Ör >z4õ.±–}áüÛ‰ô}ˆ0}Ä¿Ø2:ˆ¿õ”ÊËUjƯôÊJåôèAÄ@¼ÛÎóËé{&:Š{l ‡‹{ LM›*góæ¯wvÙ±C9Íš(1«Þ*Ö°+˜)žKˆÍÄ×l éÜîž‚Óá‡0¤ï;§®Û3,1 Þ,–ØÎ?§R¾âKSñ›Bz¹Û_ÚS€jÑB9[·~=¤/Z¤’……LŒÛιçgR¶âO™øK›Bz-÷Bž§ Õª•r¶mûzHŸ:•‰{XdW8ÿ§xå w(dSH×;—·x T;+g×®¯‡ôþý ›èÛÿ±/œëÎKƒ(S¹‡î£|“M!½Ô=fà)Xuë¦R_½4ªÿûöí èÙëí çûSžrݲm³M!]‡¥k½¬¾¾‹®/’6lHøÄCúm±À®p¾7‘î¸X’H·r³"¨èÐt¥× 5jÔ×Û/®X¡œ’B(Fiçü-±¥ögZ"Ý5š~…×À5aÂ×wÒÏ:K9yy„Qüšß±/œëÎJM(Ap N?¶)¤Wz ]:ˆO™òõ>f ¿âwí çOŠõ(=p0†ŠÚÒ+¼„¯ü|åÌžýÕ€^Y©œcŽ!˜â>o°/œ?"֦䀊³%ȹ­ðÂŠŠ”³páWCúŽÊiÞœ€šãþȾBkRjÀº›D2aÑNúN/a¬zuå,]úÕK£ë׫T:ÕõF±š]áüŽDú-ß´÷ØÒwxdɲ2åèN.û‡ôÅ‹U²°Àšcê¾úÕí ç·'ÒodL[q·-§Ðí_}ÈpV·®r.»ì«Ç]Î<“КCÞ)–ÙÎå‰sÈÍÄ7‰ˆµ`lÒ$ýpÑþ!ýØc ¯9à]bM»Âùìœ@–Ñ­à~cKàÉ×{ kíÚ©ÔÎÿ è»víû#Är!Ԡ׋”‚:âc‘ é]º(§¢â¿!ýòËU²Q#Âl ½]¬aW8¯ó($µm éù/Ž:Æ}õ¨‹¾DZRB¨‘÷еí ç׊ù” 0A©xŸM!ÝÓ‹£'~5¤Ÿ{nú#Âmä}@¬kW8¿2ÁÎ9F_x»Í¦¾ëPA./ï믞t7â>(Ö·+œ¯¡<@Xè‹oß±%éî.WzymtÑ¢¯†ô¾} ºõI±±]á| eÂFÿŒ¿Ë¦~Õ¡‚]i©J­\ù߀¾c‡rZ´ ðFÌçÅ„s€¢/Â]aKP*o9TÀkÐ@97þ÷¥Ñ ”S§Á7"¾&v¶+œ¯¦ €mèôu¶&ÝûLJ zÍ›«ÿkïþcí®ë;ŽoÑÖÚŸhK¯¦¸Dª-mˆsͺF”TƦ€£¹Ä”‹ØÉÀ*kµ+íí6Ü2æ¶f,àdÙ–1AÁX!nÈHQA„Þs£›f*´_ßßãN[î½ííýñùœsäõoÓœó=ɳ§ßóùÖöìi~“þþ÷—Ó¦ àÌ÷ÍØ«óŠó>þ@ήÏ%œ¦ÇîééW^)‚3óWùA(Àˆõ­ôMúºuÇÿhtýz1œážŽ½&¯8¿ÕGh%7åRÕÃkîÉéû÷—µóÏÅípìÍyÅyõÃhçœ-gK.A5;vß0Ø_=°èïhFú®]emáBqœIœoÊ+ÎoóÑZÙ{cGs‰ôOžìŒô÷½¯éÛ·—µY³Drâ]Wœÿ±4Ðþ —H_Ðx,üA8gNYÛ±£éï~wýÛu¡œd[ÜÖ0nzr‰ô…±‡‰Âîî²¶wo3Ò7nË vc^qÞ'΀vt].ÁuNìËÃâªUÇŸì²fhžÀíMÊ'Î?VÔÆЖ6ÇŽä^K‹2/½´è·ß^Ö–.ϰ;c“ó‰ó?+|st€kr‰ô±Ç‡ŠÅ®®²¿§§éúPýu=nûçÆ¦2‰ó;Ä9ÐI~?—H_ÙxBå ÷£OŸ^Ö>ðf¤_w]Y›2ELÊÍs[ @Rï,2ùáèëbÏ ”;w6#}Ó&A=Æ{4¶4Ÿ8¿'6ÅÇèTo/2ù&ý‡â ‘Ë—w²KÿÚµÂzŒv¨q«Q&q~wl²%ÐéÞUdòMúUÃÅdu’K#ЪX÷£ÑQïéØÚ|âü¾Ø4G€º÷fieï0AÙ_ÝÞâG£c²ê+~+Ÿ8(6ÓÇàxÙœ“¾m¨@¯ž*úž÷4¿Iïíõ£ÑÓÜ•ùÄùñ9>~ƒÛ™C´UçpÿÕPq9sfY»ùæf¤_~¹àá¶ççߌ½ÔÇ`x;rˆ·©±CEæâÅå@õð¢_ÞîR=yTxŸÒöĺòˆó§b‹}ÜNMߤψýÓP±¹re3Ð÷í+º»øIv ñŸ ÞÛøëË}ÌN]õÇ?Í!ÒgÇ*:/»¬y«Ëm·•sç ñ!ö/ðdðž~?v¾ÀéEú9DúY±/ ž“'—µ-[šß¤÷ö–ý~4ú‚}66?8ÿïØ«}´N_õИ»sˆô—Å,@çÏ/k»v5#½úV]”ÿÿ‹-Ï#ÎûM)€Ñ›»7‡H_ûÖ`!úò——µ¾¾f¤_x¡8o<ˆhUqþ\ì>Jc§ú&ýrˆôõ±g Ò š^ðröÙÿ ¢7äçoò{Ócäé×¥]]emóæf¤Wg¥Ï˜Ñ±~Cq~4v­Àø™QÔËž<þn,L#ȶmkFzOO=Ü;,Î÷åsÖùu>2ã¯z,û#©ãoRì/†xˆQmÏžf¤¯[×Qqþñ|Î:ßí£0qÎŒ=‘:ÏêAF]Ô<}ïÞ²¶dIGÄùÁؼ<âüo‹ú1L s‹ú!“Æà¼Æ9ß/Ö+®h~‹~ë­eíE/jë8?ëÎ#Îï/ê'ÿÀ+b?H…çÄþó„`­X4pà ÍoÒ«¶iœ?{MqþÕØl €´Öõ‡Ð$ÃUƒ‘¾paYûÈGšß¤¯^Ý–¾98?;ÇÇ ¯ý}l¯YSô·½-»@ïÍãG¡ïrÙ´·ÞÔѹ,öø±1|Í5eÿ-·dçb“ÓÇùG]®¡/u¤_{æ—A#}jã!@9ú¦óꔕ.K€Î–üŒô…±‡Çù]c ¾Gb¿ír ’üŒôóbO&Šó¯Ä^’þÛó­.CŽU‘þ\ÊH}S‚8:vãÈÔ–Ä¡ZÞ2ÁÞ“>Î?WÔ° ƒÚ—2X§Ä>>Aq~G¬+mœ+¶Ð%Àp&ÅîMésc_ç8ÿLlfÚ8ÿQl…Ë €S1#ö¥"ñFŸ§8ÿzlyú[6ºÌ‰—õ‡æ$ Ùß§@¿4ý}çÛ\^œŽê¡9?I³»Ç8Îÿ$}œßëripºÞ;š*hψÝ7Fq~ãÏKç_‹ÍrI0ZLµåâØc£Œó'bËÒÆù÷ŠúS[`Ôª“]>‘2Ò×Ç"Ð7¥ÿQè%.#ÆRukÆ£)#½÷4ã¼/ý}ç;\>Œ‡êd—þT¡;)v`„qþ`úóÎÿµ¨ÿŒ‹µ±Ÿ bôÅSŒóêõiãü±¹.ÆÛ• £·|eìÛ§èW§óÇ^áR`¢ô¥Œôž“Äùéï;ÿ—iJìÓ©¸+ö—CÄù—bsÒÆù>—)Ì/ê÷Y' áÙ±ƒ'Äù³±ÕiãüÁØT—©\ûßTA|Á ÷£oMçßí’ µ«Fñÿý´ŠóMI÷÷8»Ø¥@.nOé»bKÒ~{¾Í%@N¦Å>_$üÑhÂ8¨¨ÿh²rVìp‘þˆÃ‰\õdÕ3½õäêÂØÏ:$Οýš·€Ü½³CýFo5­âÎ6óûb“¼Í´ŠY±Cmç߉-òÐjÎý¤Íâ¼:ï|ƒ·€Vµ©Í}‡·€V××&q~°pÞ9m`jìs-ç?Œ-óVÐ.ÎŽ}¯…ý2o!íæu±#-çí­ ]íj±826ÇÛ@»ªîGÿb‹Äùs±UÞ2ÚݹEýG—¹úMÞ*:Eîç£;R€ŽóÑLãüb˽=tš3b_É0Ðßê­ SuÇ~”Qœßå- Ó½%“8ÿvl®·ŠâïÇùÑ¢þ % Ì‹=“0ÐïðÀñ^;’ ÎŸŠ½ØË/´m‚ãüùØ/; ®z8ÐÁ ô]^rÞ¹ÅĽøµ¢~;pWsœÿ<öJ/3œº»Æ1з{y`d^ë‡8¬pk œ–êáAG‹±=µe•—NßÞ1 ô[¼œ0:Õí(ŽAœWÆ4/'Œ^uâÊÏ §¶@6¶Ž"ÐoóòÀØšûLáÔÈÆ²bdO­NmYíe€ñóöú./Œ¿»O!Îÿ«pk Lˆê)£Åð·¶\èe€‰³¡ú)£»½<0ñþ|8ÿzl†—&ÞÌØ¡âø[[ÖxY •EýI¡U ïõr@zŒ}£¨£$6-v—€ò @;„ÇY ÓIEND®B`‚PyQt-gpl-5.5.1/examples/desktop/systray/images/trash.png0000644000076500000240000002754012613140041023357 0ustar philstaff00000000000000‰PNG  IHDR[\fÊUsRGB®Îé pHYs × ×B(›xtIMEÜ %ÍÈÏbKGDÿÿÿ ½§“.àIDATxÚí tU¶þ¯¶CÛ-Ü›bÛ´¢¶ö Ý¶¢>q ª’0*Š ¢ˆŠ8·-ˆ 8a§EQ[['"!u+„H ¦@˜Ç€!̉„©W»‚Hn†›[uëÔù~ÿõ­÷_½^?ªÎ>ç˹§öÙÛá@Y¼2PºÈB_—,u¹ÅQNEüXûŸášâ4¥¸ÜBº¦µ 5Óþÿǵÿ©Ö—þŸ«ýßûé¿£ÿ÷WjÿÙM“ni<ý;ôïÑ¿(‹wÑs v ërq€üwÍàèç¿q*‚Z+6L¿©âìsÍ×ôµK‘^wÉRÿ¹Ûßè=L€ÿQº¥›œ²0PÛ1†jf• )ÏbfÚZåé諒½'½/½7‚0މ½/ ŒºÛéGkæ3WÛæÚÌX›)ý½é¸c‡8b^‚Éðš6Jp;—[z0À-|ªË*ÍdOòi®ë츤й3· ïˆÙhtçJf¡™kØÙS0Sïw¿ô‘î+Í€Ch\1¹àœÀ(±“¶3{V3ˆYg¿èÃ(}o¼Gµ?`3]²4¬ô{Ì:ø9¸±öƒ–þfh¾ù¦Óø·•»Ý€Ù€Ípºƒ®‡ÁZ×x!×a–À(bº^ærKOi‹z©¦Ó06K‹â³8@‡t–Å_cöÀÂ.VC)Ù̪ԥH‘úÇ5€åÎaÛi‹sŒf°;aVö:f ¸" ?ã’ÅΔbä¹nd•hšà º³“ j¯Ç g`D\ít)Þ ‘â½XE²xQí/a LÒ´™æƒ#f௰8ð¡¡ÈÒ`¤mA”¦ýÒDó‹oÐv,N·ô‚¶˜2`(P3j4ìÂN€– :.ÐËb' y§4P €FpEJ‚¶XVÃ0 |L[‰iœu8{Ó &ùZK4Ó½« pÍå÷u¨-i(Và uŠæY›h±=Vàíã×%t3e !³Ë=ºq¥bû¸¥{´‰ŸŠ…ù3G—: c5[Bõ ¨@ :dÕPÁÔ]¶âl©Ã|,pÈ‚ù¹‡ŠøV)`j;s¶Å76ÃúGìãêK«Æ«Ò¢Õy™+Õ-…»Ô½%‡ÔŒÒ­¸%ÖÞ3m{£g³ÂãÚ.„Y±©î ^Q¿ß9[Í9Q zCQe‰ªì¯>¼x´¨°b¼BÓ-=ŠÕ ˜9›Õ&î{"S|vå8}§êKh÷;rÝê‘!lŒ…"ÄÒ<ÆjÖÝÍÊRœÍ²©ž‰ÿò¹ÉžÏ~Ít-}›™³Ü@Yì…U ¬ÅÄÞ—Öñk`\l©ãÔîꤱjöÿÌ‚Î};G÷e#cA›×”ŽEüµ¤Ö&ä{ºqfuCÁÕжÛç ae—»€_q)âÓh¬È¦ºÎ}FÍöòã—¯(®*Uû.Éʘ•éÕÄ0•°.Ÿ­iãbPÝâŸWKªÊT+Pu¦Z°äMv.Bб®û3øíäàŽT¾¦ÅêÑÁÃ^§sEé©rõθ§YÇäË#{\7ÆÏ*Awj-¦Å¦Ú+Áêêümª¡3Ü?LëÃÒxfµ•…;à ÀçP²·6ÁNÀ´ØÕ'Ûܪ•™¶o!kcZæ’¥þpàBC/<›ÖÃbXôå¿òt•¥Í–ÒÏî_8‚½‚6²Š6< UtŠéz*uÙC ²V«,~ìC×{ëHÝÈÇ^A](¿Fžî‹ÎÔK ­eÈò±¬Žõjtƒ-¢ÍéOÚÄÙ£²‡è,”%Öäogy¼÷ÑE¸h—ÒíVº“²‡~Õ[-;UΔÙÒ.ü–Ù³Ü~'7@ þ;ÜxÎ8ˆ BƽD?ÉYä½Mß±>ö%AwÃU@}£•…îÚ_är”½4yW“f»$g½Æÿ„SCà. ÎÑô61*aNö“Ñe‚®Û$Úº’„˺¬0@ÛÑVÁ˜ì'jMS^}ReºZl“êU¸üÀýŽVxFk_ýqF?•eBæ¿l£xhëLû ×ásGK×oOÔì«[c3m¶¿a·˜œF™FÎÐ~^Þ­ýu÷¼aL›-×ÝáRû(¸G²(jA¯€ñÑ‚œeú/mרT¸"%ndçm¤x/òhqf‹3[Kìp£D£}Ïh»P¢5Lˆ¯l„RÆnÕ…þX؈‰5˜œPS¢‚Ü9' ,e´t¥øÎ¸§̨J\Î FÙíZ-(Ç0)¡–Ô¹=\^d £¥ààù/!.«0 2äj¸? ër±ˆÍ˜ŒPKÕuî3j¶Ÿw¸ÅU¥jßE#æ]xXãH/‚éáœbòH¡¿º¡`‡ßÎh)Cqh‰¤÷ázþ0ÚHIÀŨµj§©¡›ÃÔSgªMKïš´3Ví8µÆ¿åªT„®p? ŒêÝVøƒ˜|¯Ô3ñ_†·=ß<[´ômŒwë>˜ õ4kW«H‘˜t¯¨Hê³+ÇùÜt÷i&;rÝê‘!gß'DÀÍ0ZYì‡É­î ^Q¿ß9Ûë41*þ­ì¯>¼x´nâS_¬ú äòÈWh]„É™)jùÒªñê7é1ê²ÜMêÒ5£4ï¥Þª*±ösõÿæ>­·äÁتü¶á=áŠ8>€ õoÙ¤m¤Ô ‚ :ªq*bÜчtˆ/G5/¨µêÝ·IQî-4%ª‘+&¼Ð¨¨y¿¤QMjð²wÕ¡+BÕ“ÉcƵ¯SL×Ëà’>û(&ü“ê\ý%æuÔº ê„´hú*mº*ïIhR3ö'©qÉMŠ:$çmnTkò·ë_ó›}¡?ÿÜó|e•åë·¬šRåéS*ümö Ìý¤ín?†Kú"§VºâòBãoÞÚ𵺾 ©n å|ñc漇Ë(6ÞZTÇN·¸“©y¢ÊQl™lxr>ð…'‹ÕßEõÄ\oø²ÃJfërj‡by§ë¦?¨§+-Ê^«V™tOè–0¿=æÞJƒášÞ_ÉÍÇ$j½®Šê¥>¶ìýl–µ¶Þà\JªÊÔk¢À¼nX9#{üîÙBœ²ð&ïEPÈxéÃØíg)`O¶¹1—=ICáž-1ÚÈn×¢C®9¯z%¾ªW¡Ê+/„‹1uv¸vz_Ìá†Uá º.ÚܳZ·8 “Æ|Ý5w¨¾k¢Z«™ 즂 Óà¢ÍNõB?1+/ÕyEJ™5)¯>©÷SÃ\m¸o™3R¼nÚô®v5&‹õŒ÷íSÔmE{árâë31?=k)Ü´±³ZE Á$±¶®ŸþRÊ,?5¯Ä¼ôø±L„«z¸À  ÐFL¶j н}¤”ù™c.zÖjkÈRLvuåÔžH)ógjjÔnñÏcz®›€ª`õwµÂLû¥”./‚#Ìâìõ˜wžÌÖ-®…ÁÖý(¦HabØ·¯•¬M)Ë‚3ăI#1ß<]ãU„ÞpÙ_2pVËaJð› w¡În›È@ˆ ÂdàSŸýØÏå!éì´Ž!ËQ`¼‘‘÷Ála&ôÇýRÖJ蘦½ŒùÔpØ\¾o‹Eÿ·Å ÆRÊNTWÀE[Àð5ŸayèWÖNÿÌoº—"ý€I5'¥ŒŒ—Ê ‚Æ¡ì÷”™ }Ç¥ÑvÅ+µ¨Ä$€¼I)˯@J™'è$æKƒ5ÊÛD‹íùË@ÅPòEJ5¿@¿P‚ÑÓÙ­0–/§ ër±öây>äëòè¿VË—iÓ1/¤Ñ™µ”ð"â^_ÙŽ˜¿²ñY­ô ‚ìÝ0£_£×Z3ËòÔ¯Ò¦«Ášñ¢@I}õ^8œ›Ýí²ÜMˆ9oÕÀ´œ ûF㶆7{±eŸ(P¿MÑ/àîü/JÊ^ÇáÒļއ²éö¼šâÄ1ßèŠÈ¯oPUלÖBOH‹Vû%Òÿoñ:ŽBÂóܤ†-ÉAñ†n”uˆ/·á1áI×7¶â?>[„…'‹õ³ß77LÔw¾¦õáj,ã3S¸ÙÝöÁî¶Ò‹âcv²dŒzó¬Gõºf\Á½-ö SÇóÞøg¹ÙÝ®ÈÛ‚5T_sle´mÃ{j[ö*¶õ¢ Xþ€>Æ‘ /Ïݤ7u Ýòƒ¾ÃYðOõö9Cšvvuôýúͦ»ç Ó‹]Ýô½±'^ÝP°ãç½f§°-ÈZÍÍîöþ…#°ŽÎ=·=Õ»­ŠÎ E`ퟲDÝŠ«J=ª¹˜}QƒºÓò²»]™·k©ÞºŸ@7è ^ö.†Ð}Á+¦íÒÜÜìn{&þ ëéÜeó…“°»8“ 3¸gÞ0ÓǷܘíªÃ©XSç%Ø"+Áé–E@[¯¶LææÆÓ5Ñøåˆ&ýØn —2O°®lV Ìå–"ÌÖ鱫'OWra{Kùmœ©:n•ñzn+„±í´ªãÔBhýŽkuþ6nL€²ü5Ö"CÔÜò#ÜŒ5uºÀ«S+é]íé±uz‘£ÝÝnûKÌ#Ì\ƒf9ÉXcuó¼ÝÒMì~“Å·DïugÜÓjyõIn¿Z¹P±qêrÀË7êjµö³F±œ_»ôNÔŽz[Ñ^nŒö`i®eZpÏ:°”›qÿa׬·_´„唯jлsZú‰Ç Ô –.XeüXô7c_Q]‰N¼¿äÛV1™Fµ"<ïD¹xŽIz$¾b¹?vt5™ÞÙø-ÖÝO9·ŠÂ^~­,|„àµ\Tw–èËÿÝ~¸À€eõp¨ÖŸ¾»ýÎk98:àiGK;G+7#¤¬ˆÓ5g¸‰ÇÀ¥c°kµ”-§x‰öÐ\óó;§ïOâfaGï_ÄDÝ\žê%ÌË\‰µX«Ždñ"vJ**Aw"hÍ¿ÆKÖAAÅQ½#0+±y!å#nÌ–ÒÝüqMÚšµ¤. ]ÑF"hMëÑ¥oéx€nÁQ[–âCµwkªi7^[û9Ö¥.i8;ÚD”HÎK³AJ-¢EÌj‡ßä¼ÍܘíšüíXŸµuf²d¶9Z÷“è#؉ê .ïž’LKåÏz#J‹â*þ~ƒ6G±V…CLíå‘=®@°Îu ›:¼\½¥2‰“wÅ©WNíÉ|ì(5'¨Ö¬¨¶Q‚Û±P¿6Áú%Ë`SáN®+<•ü¾­RòŠ*K¸‰ßŒýIX»$YñqŒ1Q3C^ l)áEÛŧ†yå…X·ºÙ ¯¢X8c¢6à´Û³;´û»kîP[Æð³í‘\ý:¡, î?’)Ò,|Û “=WÔ®ÛÞ9š§l]ˆú¹”q\™­U¯P›j¶²¸ÞÚN›,^DÍÓ`°çª½¬®ÍßnÛÅ9>5ÂÖñ ™ÿ2WfÛñh¬[ºIz¡e½¶,þAòœö•Y–g»…I5¨ó¯cwGÜS\™­?ZÉ[ó&YÐõV.>ÓAjü2CF©½ ÷íߨ>ntóÍî$9' ÔîÓëAtœÚëU?·°®Ù*ÒëRãúsÌuÓ‘tÛ,Ô[cÛ>f·Å>ÁL<(—;[3Nª·AÆI]'Âvƪ§Êêèõ_ªÃV~ öK¥ç~Ó;äBsymW3Û‰Póòo¿J›Î| ?º Çê5Ü–ˆŠç˜Í©3Õj~E‘šZ´G]”½VϤ™æ'ÛÜê[¾ÖÛ®“iRý‡ib¶_X9!j¾„„çÕU‡S™5[ÚAñ§w[ye÷äéJ=5ýØ=Þñ™)ª²w¾~uûýÍ“ÔW×üW}bù{jŸ…ÃÕ®sŸÑÍÓîçàŒhŽ•Í6 òÎt#÷.PËN•ûÕ•»±ýƒE‹V©Ͷ•Ÿ€Ñ|¿s¶)1O8”ÂÙyxŒµác„*k9mhè…vpªIÊÛÇ«Bµt͈ù¾ãÙ\knùkêq¨Ž ,ãµeñ×vô%9ëát~†ŠÂ˜Ñ.†ê³Þ®¥l?Šºžäˆx‰eÌ60ªw[»øqO©%UepMý:ÅK¨ñ"0êev|÷”dr7ÎÃ×|ce"õËæ—Î×3+Bá‚&A&ÍŒ-e;øª…ce§}K,6¤¬²|¸¡Áì8vÀô¸~œ*s9ÖWGßcmXQ<ÜÏ¢|[`,‹³×›רŒåÜ3Õ †©²U<|%OA 6-ÀX"öě׏ç¼òB˜ªg-·žÙ*B,OA½þK¸¡Á|¸uй7…”`µŠÃL„zꮫH1–3[í¡~à)ý’FÁ æåU›^ÿ‚GèH ÆÚ°œnñ{ f#Hãy ÂM³…̃I#Mé“Éc¹gº cõ¨qV̳ÅÕÏ ·¤ž¨®€#5Ú43¦tlÁ#ߥς©z’,¾f=³•Å¡¼‚j€ã |f3ã9ëÀR.ÇùÔEhÄl…'­wf+ }y DìÁepDƒ8ZyÜôx¦ÝÏåXXû9LÕÓ/XYêc½3Ûˆ Ûx Ä'ÛÜpE›|!o§é}¸xdð²wa¬ž4EºÅrfÛ6¼g oxvå8¸¢A,ÌZcj,é|˜Wz$¢.‚'Qc‡Ñ®„§@ Ïà bÊƒvwø Wá¨Ãª¸qOÁ ŠT5* ÒÙŬéßã•k¢€±6l¶[¬k¶²8—·€P hà{^\5ÞÔ8ÎØŸÄå8Ó9˜ªGͶ²Ù~É[@Väm3À‹^35Ž©E{¸çÃåE0UÏúÜÊfûo ß=Îh·Æ6ï#ˆ"é­Òy„ÒÝ`ªž..‰¯XÙlûñ1&Â} ƒwœÚÝ´þ#öqnÇz9ê"4R„F|À²fÛVîvo°ø ¸£9r²ØÔZú6·cM·æ`¬¯êv¶¬Ùžmi~‚§€ümö ¸£ÙV´×Ôþ{ó$nÇúû³aª g"·\ óŠˆoà*é™ãó>£XµÚÔNÛ·Û±·5ÆÚaÃêh:™·ÀP¯,à;~Ø5ÇÔøm.ÜÅíX¿†ºìÔ±­o¶ÒpÞ—‘ ‡ô!¡›ÃP*Ó$žXþ̵á ÿ´¾ÙÊ¢È[`>Û ‡ô!Ï¥ŒÃ™»IôLü̵Áj_Â}–7[ Ò¼òÒ‡ô^8Ü´Ø=²d ×c};ê"4¤š€°§ƒ´‡Íá)8Aó_‚Cú[f?nZìÞÛô×cÝ9º/̵~&Â!+Èâ ž‚ÓiZ¤ñgjjÔ+"CL‹]äÞÜŽõ©3Õú™5Ìõ¼cŠ0³uÉ«¼(¿¢Né *Žš·Gvp;Ö4ga®Œ~ã¹kêépJ°¥p—©™¥§Ê¹kJY„¹2ÒÁ#1¥=t)OŠØ§ô ‡RL‹Ù_cr=ÖT±æZO%tÖÁÚC/å)HïlüNé&íŒ5-fýæz¬gD]„ú)_â"k¸ÜÂx ÒÀ¥cà”>àýÍ“L‹ÙÛ¿Á6ìù­ËÇ2g¶ŠÐ›§ ñ\¦Ï— [ù·G?…'‹Mý÷>J€¹ÖËDC˜3ÛŽ‘=~«=|%Oixm…íK̼Ѵ®àG˼wåéSê}ñÏémjÌbäÚÿÁ`Ïͯ-ï,‹¿v°ˆöKx ֮⠸e+¹yÖ£¦Å«¸ªÔ2ïý¿£LOE{2y, öÜâ3‰VÑ^`OÁŠÏL[¶‚Ó5gÔöJ°)±úÓÌ–y¹ê•S{êÏ5áÇi¦ý»½_…Éž#i8³füWž‚õ…¶;ÞcfóÁ‡’^·Ì{SV„?>´Þ÷$ ¶ŽÚ(Á7:XÆ¥ˆ™¼ëåUÃ1[Á¦Â¦ÅêM‹ôŽ‹ÍX~ÎsýaZ}‡o×NG]„:Úï`·ÆKÀBæ¿ Çls3W˜«)èŠ\RU¦Þ8³¿_Úª£.Âyçµ²ð-ófëR„‡y Ø5ÑÀ1[Áw鳸º^My¾ =õ3³kP0P¿¶/û;Û°'O)`GLΕ´ïnüÖ´8­<î×w¥¬JlèÙ¨{‚Ѥ£.BÝ,„“bÄËv@{¡8^·6;\ÓK†®5%FœÑÏïYT¹±ç3ºdçʼ­0Ú_4Ëadi0/Sö·kzI÷¯˜£¾‹Fúõ=¿MiòÓ n"{pLö—óÚ¶1[Ú¢k/UÁCàÆnú®é%T…ËŒ^ÿ¥ßÞñPÙaõwQ=›|ÆÉ»â }ÔEøYeW…õýÃN¸!–‡à Zú6\Ó ªkN«í” SbîÇL„æv³}fE¨¡ÏñáÖ)0ÚÚ*_3v鈃x^—9Càœ^s¢À´­Îßæ—w\µºÙÏH)aFòÚÚÏa¶úÇ1i€íÌ–¶êÚ˰{ð躩™ÅDì}7+FE•%¦¿ß‰ê õ¦Ö}Øw<Û°ç²u\ná8³…gš‘•0›‡ î-9÷l!s2’M‰Í ~ÊD .¾-}V÷žÞÇÌêjNùšî°+m#¥ž<‘~.‚–ñõŽ™¦ÄæE¯™þnÛîõªÀÎ )öLtÜŽÙFÙÖl©·ö’vâ—iÓáž-ÄÓm*Ö3šÊ©õW´«£ïçÝl÷9TÇ;Cm'ìÈ­ùîÙBžJ~ß–™Tƒ¡5ÏK©b¾† •sŸ…àÞvØvJÐïµ—=mç@öH|îÙB‚½ÜýY9JFR¯Ö<ïôýI>®Üò#¼›í©²x¥ƒ´—M°s0ý}”Eþóˆ)±1³Ï—/ú©½ºæ¿†œ!sn¶q^p¹¥íP:a *÷ç©( «“²×ùä™o‹}Âç϶4w#çGÒýܘ­#¬ËÅÚKçÙ9  vÀE› KÚ)áäéJõÖØÁ>{n:Žð%3ö'ñl¶9Ždñ"OÈâ[vjÔ¾D¸h3Y“¿Ý”˜ŒZ7Á”÷·5ܧÏMEcXL³³hÑ™7¼áœvo°kPC7‡ÁE›IÌ%¶ÉDØ]œ©^âÓç~ÝÇ$hnrj¶%Q½Û:xD{ù¯íØÁËÞ…‹6ê(k‡î Tƒ¶÷Âá>î»æõésRj"§Ýs¿pðŠ3²ÛµvM»#î)¸h3¡Ÿ÷vÈD £#ƒ>èø´U¦ãÐl«]áA×8xÆ®¥é§$• ÖXüFg"‘Ù­6>3…¹œf”R´AwÛ5Àû ¬Úd'îÖðXÜ¿p„¡ïðÏÕŸúüomøÚgÏzËìÇùû0)ÞîúÙíF;xQöZ8i30rGhF&õó2º-x·øç}ö¼WEõâÍlWÃem^ lâŽpÒ& :¯fĨ63Tgàv*hÑ¥’ª²V?oyõIþÎkA‚Ëž³»VÚ-ÈÃ×|7mªýËr&ÂgÛ#™ú¥dÖ i9ܵþ‡2Én¦4 Ð8Ër7™‹#d"ì-ÉR;NínÚ|zó¤V?óæÂ]\™-}‚»6|v»ÜN¾iš$rïf3^<ÚÔù2ÿåV?3íŽ9*£˜Wå(3¡¸ªŽÚ§ÊLf"Ì>¸Ô/ýíÊN•[2Ø‚ªABS5´¿Fv ú¦ÂpÔFxeµñ·™|}Ý•þ€Þ8óa¿Ì§å¹›ZõìÒ¢y1ÛùpÓ¦v·ŠÐ•þ*Ù%èF¶ý’Fƒ°±>}æ77LôÛ|ŸѪg÷¦ñ$ƒ]sÏ`WÛüÌÅ.ÿ`Ëd8j#Ü÷¤á1H9¼ÕgÏK¥3ͨ½kÔG×WçaWm&¿Ü‘zºÛ!ðO&…£6Âï¢z2“‰@EÎïž7̯ó‰²*OWyý¿aûÊ^—Gö¸.ڲ̄÷ì|_Wl²ÔÍÂèñ¿~úC>{Þ¯Ò¦[bNµ¦šð¼½¯åº¥7áž-¤³,þÚmÏi'Bí¬A}Ìè…ÕÇG¹Î¥y¦ì›£O·)^¿µG·±ÙîuÄ ¼îéNEd‡I@ Ô'1k 3™–¼i™ùD½ÅÌK¦KûÁ5½Eu\àt‹ëXŸKrÖÃY€ê=ö?ìšÓê眗¹ÒRó‰vØUgª[üÇ«NØ9a% ³µy·‘âÍÚ@V±<¾M³6€íYZ›‰@Å_þ4s€åæÔÆ#-o(J%?íyN+žl£ß·ôIÝé–'Ãȵÿƒ³6À³+Ç>öǘͩmLt9Á›´5›îl߃KúЉ½/Õv·é¬N³Zh³F¯ÄW-‰°éHº_sjÓÀ¥cZü>󭲣ѦrךÜð›e²xÝ aqBÐÏPPŸ›g=jÙLjitŸsjÓ¦õiq–‹¼'ÁnF{º­t'Üшì·ø=«£´•DìV±j&Âwé³,?§R‹ö´è̬½kNQpi"\ѨÝmTï¶Ú g³81¶í†ÃÖ!·üˆe3rN¨´£Ý>¼Ž±èù³—:Ø1²ÇoáŠF~,“Å~,NŽ™Ãaë@_Ósê æ O,‰9EÏiµ’æuËú M9N¾cmr|¸u ¶s2’-™‰° k53sŠež©©iö»=”ôº]rj¿‚ š{•7¥ 2tE(¶Ô Ój™Ô|ò&ƒ?ÚùZ;‹6ûýî¶ð¿ívÊN‚ šš{ÛíV–.;Зm`Þù¡7¥ßÝø-sæÓ’®Á7ÎìÏüå…@·tÜÏ?µư2Q®œÚ³E?ùìÎåc½H²î‹=϶¢½j;%ˆ9z¦™¿˜hî±ø~çe¼×󡡺a+“%«,.{1áËtg 44)áE& ˆv«Í¡¨²„õ]m"ÕJéùswÙíZ-ÇX˜0ËZÙ?ÊNPça«d"PŠËF´ïxv“︧$“åw, ˆ ¹ngà ÒRmõI3Éǽ°X…: ¸%ƒ3Ž6ëYòÊ õÛX,›­{OB“ïIÇ}¿SÔu.g­t°7­>qFù¸Ë+«(Í1tœ¯›þ`³Ÿ…²DXÿBO}Åš"΄T;œÓò‚ê¸ À-Ì´òÄ¡Åm§Š„›±q~;Àªå©É!ï¼¶ösCÇxEÞ–Fÿýî3¼â˜ÙzuÍ}ç§“ÿÍÊÑÁ—"=cËp_°âdš}p)÷fûÈ’1~ËD äþàù/Ù®ˆöm±O4:æTÛ—‰|ZE|îÅ .YüÒj“éãT™{³½kîP¿e"D쉷mÓÃÃåEßûθ§Yx‡ÏáZ¬B7ÌÜbœ•&Ô°•po¶FÖŠm,Ìèêèûmk¶±—y|wú#dí/!–Ö+L‹a:Åt½,@×[eRu‹žk£5ºvcÍ5ŸKg[£m¬3µø1úI+¯â®¥u ·²Qb'-¨9V˜XWEõRkT~ ÒPI@ÜÒ[œ½ÞÖFK¢ã™† 3l ?wVû)ݯ‚KÙJ%Ñ›g… F-axÅhÓk(áäéJý’ÝÍ–v¯GN×{ÿÇX5ó ×éºîdC"Å›µ ù{’%çmæÖlþ@•_Qÿ#uɰ»Ñþ¤øÌ”zïOó͂ϚO9ñp%{g(üÃßUÂZRðÙnŒÛnh›˜óÙ]œ©^ÂÙ¾µáëzc@é†ÛÑuM‘nñp†«]µ —ùk²½¹a"·fûÒªñ†k¯ÄWÏù·èl¼7#ù¥F~€ý~çl+=ci ,Þâ§[ ¦6þ˜pýæÖlXôši™S÷&re´¤@ERKªÊLû5ÑÒ¶6TîÃã‘‚"<ì>f›=ˆ[³½5v°)™ô¡ˆŽx3[RRöºsÆ|„Á×£›ytP…k¸¼n¤$˜}¤@»ŠêJ~ÖwœÚݰqM8ôËÇ¡ák>ãÒhITd§.O,ÏïG.wP7¸  ,…{µ¿¼ÇÍœ€iG÷sg¶Ç Ó¾‹FꭇƧFX:‰ßŒRžKs6èírd­ÖÛºûñyJ´XÜ—uÏp»˜™6'#™;³ÝR¸‹[äT…Έ Ûà.ÀSZسªëS‡YžÔeÎ?Ê Œþ+\4òѬۭN·x‹‚¼¿ ÿnš¤ýÔû~§MšÍX4Ôbmì ‹WÂE@³¡þGÚĉÇâ fJç¢oðŽ˜¿r)ÒD,$jÒhC©Ã5L´òW¡M¨ÓXTTOÕNYx.|™ö¨6±N`qAÐÏ*sÉR¸ð9mån7hl‰ih7 ¥CŒx¹6Ñfc±A¼*@‘bhÀ €ñ¨Ž œŠ8ç¸oç³ôý€éÊb/"‡ “.*PÑ&¬zàçs\a#dWQ÷[gDÈuXíÀÿ„†^X›f~m\2¶-Ž €%w¹ÂÚ݃E ±ÿLÜM•ð°ªeéÓõ2Íp¿Â‚…ÞÑ~Eó«0A€[xœêybáB,}£Ë;X½€=à qj¦¦Mä,dÈÂ&{†v³4_±jÛ¦+ ÷Ñ5dÁLƒ]Ô «Øê,7@?ÁEÈ2™²ÚYÕ lz–+Ý£MöT,vÈÚ(‹wa5ûC×}ea K3±ð!• }±w\Ö÷7gk,”Á UJó é\€{Ú)A¿w)R$² _gP6Lû)ݯÂ* TèC[$«aŒv%² hÞG´å0 ¨ÅR„eŠÐ«€àTÄj °“ÀhBC/ ¥ÁÚbJ‡¡@ µ§Ñþ(¢y‚Å€¯Ž´‹¶¸ð!{Qü°“À`Î,ÿÊéOÂx¸RÅ0—,v®-ç(‡ÙZ%š&¸Âƒ®Á¬ÀŸLì}©~#Í-.Áƒ­Ž –P\1/Á$À‚G µo„“Ê¢18*€j;FHOÝíVÃĬÝ"<À-$(âTá€a¨ 9{%øÌÍ:Añ ¸P|0K°m”àvNE|ŽvRØñš®SN·¸Ð%KÃÚ†÷ Äl€££†Ú[jÂW(÷h`'Yü„ÆU·:Έë4ÓQ{Î+TÁ,½R%]8pº¥h<1«M7¸ÜÒƒnáSÍQuit in the " "context menu of the system tray entry.") self.hide() event.ignore() def setIcon(self, index): icon = self.iconComboBox.itemIcon(index) self.trayIcon.setIcon(icon) self.setWindowIcon(icon) self.trayIcon.setToolTip(self.iconComboBox.itemText(index)) def iconActivated(self, reason): if reason in (QSystemTrayIcon.Trigger, QSystemTrayIcon.DoubleClick): self.iconComboBox.setCurrentIndex( (self.iconComboBox.currentIndex() + 1) % self.iconComboBox.count()) elif reason == QSystemTrayIcon.MiddleClick: self.showMessage() def showMessage(self): icon = QSystemTrayIcon.MessageIcon( self.typeComboBox.itemData(self.typeComboBox.currentIndex())) self.trayIcon.showMessage(self.titleEdit.text(), self.bodyEdit.toPlainText(), icon, self.durationSpinBox.value() * 1000) def messageClicked(self): QMessageBox.information(None, "Systray", "Sorry, I already gave what help I could.\nMaybe you should " "try asking a human?") def createIconGroupBox(self): self.iconGroupBox = QGroupBox("Tray Icon") self.iconLabel = QLabel("Icon:") self.iconComboBox = QComboBox() self.iconComboBox.addItem(QIcon(':/images/bad.png'), "Bad") self.iconComboBox.addItem(QIcon(':/images/heart.png'), "Heart") self.iconComboBox.addItem(QIcon(':/images/trash.png'), "Trash") self.showIconCheckBox = QCheckBox("Show icon") self.showIconCheckBox.setChecked(True) iconLayout = QHBoxLayout() iconLayout.addWidget(self.iconLabel) iconLayout.addWidget(self.iconComboBox) iconLayout.addStretch() iconLayout.addWidget(self.showIconCheckBox) self.iconGroupBox.setLayout(iconLayout) def createMessageGroupBox(self): self.messageGroupBox = QGroupBox("Balloon Message") typeLabel = QLabel("Type:") self.typeComboBox = QComboBox() self.typeComboBox.addItem("None", QSystemTrayIcon.NoIcon) self.typeComboBox.addItem(self.style().standardIcon( QStyle.SP_MessageBoxInformation), "Information", QSystemTrayIcon.Information) self.typeComboBox.addItem(self.style().standardIcon( QStyle.SP_MessageBoxWarning), "Warning", QSystemTrayIcon.Warning) self.typeComboBox.addItem(self.style().standardIcon( QStyle.SP_MessageBoxCritical), "Critical", QSystemTrayIcon.Critical) self.typeComboBox.setCurrentIndex(1) self.durationLabel = QLabel("Duration:") self.durationSpinBox = QSpinBox() self.durationSpinBox.setRange(5, 60) self.durationSpinBox.setSuffix(" s") self.durationSpinBox.setValue(15) durationWarningLabel = QLabel("(some systems might ignore this hint)") durationWarningLabel.setIndent(10) titleLabel = QLabel("Title:") self.titleEdit = QLineEdit("Cannot connect to network") bodyLabel = QLabel("Body:") self.bodyEdit = QTextEdit() self.bodyEdit.setPlainText("Don't believe me. Honestly, I don't have " "a clue.\nClick this balloon for details.") self.showMessageButton = QPushButton("Show Message") self.showMessageButton.setDefault(True) messageLayout = QGridLayout() messageLayout.addWidget(typeLabel, 0, 0) messageLayout.addWidget(self.typeComboBox, 0, 1, 1, 2) messageLayout.addWidget(self.durationLabel, 1, 0) messageLayout.addWidget(self.durationSpinBox, 1, 1) messageLayout.addWidget(durationWarningLabel, 1, 2, 1, 3) messageLayout.addWidget(titleLabel, 2, 0) messageLayout.addWidget(self.titleEdit, 2, 1, 1, 4) messageLayout.addWidget(bodyLabel, 3, 0) messageLayout.addWidget(self.bodyEdit, 3, 1, 2, 4) messageLayout.addWidget(self.showMessageButton, 5, 4) messageLayout.setColumnStretch(3, 1) messageLayout.setRowStretch(4, 1) self.messageGroupBox.setLayout(messageLayout) def createActions(self): self.minimizeAction = QAction("Mi&nimize", self, triggered=self.hide) self.maximizeAction = QAction("Ma&ximize", self, triggered=self.showMaximized) self.restoreAction = QAction("&Restore", self, triggered=self.showNormal) self.quitAction = QAction("&Quit", self, triggered=QApplication.instance().quit) def createTrayIcon(self): self.trayIconMenu = QMenu(self) self.trayIconMenu.addAction(self.minimizeAction) self.trayIconMenu.addAction(self.maximizeAction) self.trayIconMenu.addAction(self.restoreAction) self.trayIconMenu.addSeparator() self.trayIconMenu.addAction(self.quitAction) self.trayIcon = QSystemTrayIcon(self) self.trayIcon.setContextMenu(self.trayIconMenu) if __name__ == '__main__': import sys app = QApplication(sys.argv) 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_()) PyQt-gpl-5.5.1/examples/desktop/systray/systray.qrc0000644000076500000240000000025612613140041022503 0ustar philstaff00000000000000 images/bad.png images/heart.png images/trash.png PyQt-gpl-5.5.1/examples/desktop/systray/systray_rc.py0000644000076500000240000051002312613140041023030 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 14:55:18 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x09\xc0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x9c\x00\x00\x00\xb2\x08\x03\x00\x00\x00\x80\xc0\x56\x39\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\x42\x28\ \x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03\x09\x08\x1d\ \x30\x44\x26\x4e\xa6\x00\x00\x02\xd3\x50\x4c\x54\x45\x00\x00\x00\ \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\x20\x13\x00\x21\x14\x00\x22\x14\ \x00\x23\x15\x00\x24\x16\x00\x25\x16\x00\x26\x17\x00\x27\x17\x00\ \x28\x18\x00\x29\x19\x00\x2a\x19\x00\x2b\x1a\x00\x2c\x1a\x00\x2d\ \x1b\x00\x2e\x1c\x00\x2f\x1c\x00\x30\x1d\x00\x31\x1d\x00\x32\x1e\ \x00\x33\x1f\x00\x34\x1f\x00\x35\x20\x00\x36\x20\x00\x37\x21\x00\ \x38\x22\x00\x39\x22\x00\x3a\x23\x00\x3b\x23\x00\x3c\x24\x00\x3d\ \x25\x00\x3e\x25\x00\x3f\x26\x00\x40\x26\x00\x41\x27\x00\x42\x28\ \x00\x43\x28\x00\x44\x29\x00\x45\x29\x00\x46\x2a\x00\x47\x2b\x00\ \x49\x2c\x00\x4a\x2c\x00\x4b\x2d\x00\x4c\x2e\x00\x4d\x2e\x00\x4e\ \x2f\x00\x4f\x2f\x00\x50\x30\x00\x51\x31\x00\x52\x31\x00\x53\x32\ \x00\x55\x33\x00\x57\x34\x00\x58\x35\x00\x59\x35\x00\x5a\x36\x00\ \x5b\x37\x00\x5c\x37\x00\x5d\x38\x00\x5e\x38\x00\x5f\x39\x00\x60\ \x3a\x00\x61\x3a\x00\x63\x3b\x00\x65\x3d\x00\x67\x3e\x00\x68\x3e\ \x00\x69\x3f\x00\x6a\x40\x00\x6b\x40\x00\x6c\x41\x00\x6d\x41\x00\ \x6e\x42\x00\x6f\x43\x00\x70\x43\x00\x71\x44\x00\x73\x45\x00\x74\ \x46\x00\x75\x46\x00\x76\x47\x00\x77\x47\x00\x79\x49\x00\x7a\x49\ \x00\x7b\x4a\x00\x7c\x4a\x00\x7c\x4b\x00\x7d\x4b\x00\x7e\x4c\x00\ \x7f\x4c\x00\x80\x4d\x00\x81\x4d\x00\x82\x4e\x00\x83\x4f\x00\x84\ \x4f\x00\x86\x50\x00\x87\x51\x00\x88\x52\x00\x8a\x53\x00\x8b\x53\ \x00\x8e\x55\x00\x8f\x56\x00\x91\x57\x00\x93\x58\x00\x94\x59\x00\ \x95\x59\x00\x96\x5a\x00\x98\x5b\x00\x99\x5c\x00\x9c\x5e\x00\x9d\ \x5e\x00\x9e\x5f\x00\x9f\x5f\x00\xa0\x60\x00\xa1\x61\x00\xa2\x61\ \x00\xa3\x62\x00\xa4\x62\x00\xa5\x63\x00\xa6\x64\x00\xa7\x64\x00\ \xaa\x66\x00\xac\x67\x00\xad\x68\x00\xaf\x69\x00\xb0\x6a\x00\xb1\ \x6a\x00\xb2\x6b\x00\xb3\x6b\x00\xb4\x6c\x00\xb5\x6d\x00\xb6\x6d\ \x00\xb8\x6e\x00\xba\x70\x00\xbb\x70\x00\xbc\x71\x00\xbd\x71\x00\ \xbe\x72\x00\xbf\x73\x00\xc0\x73\x00\xc1\x74\x00\xc2\x74\x00\xc3\ \x75\x00\xc5\x76\x00\xc7\x77\x00\xc8\x78\x00\xc9\x79\x00\xca\x79\ \x00\xcb\x7a\x00\xcc\x7a\x00\xce\x7c\x00\xcf\x7c\x00\xd0\x7d\x00\ \xd1\x7d\x00\xd2\x7e\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\ \x73\xb6\xc7\xfa\x00\x00\x00\x08\x74\x52\x4e\x53\x00\x09\x0e\x1b\ \x28\x3d\x5c\x72\xee\x75\x23\xcb\x00\x00\x00\x01\x62\x4b\x47\x44\ \xf0\x35\xb8\xef\x54\x00\x00\x06\x52\x49\x44\x41\x54\x78\xda\xed\ \x9c\xf9\x5f\x94\x55\x14\xc6\xad\xac\x66\x18\x6d\x54\x50\xc0\x04\ \xc4\x85\x45\x05\xc1\x0d\xc9\x50\xd1\xc8\x5c\x5a\x15\xb5\xc5\x24\ \xca\x34\xcb\x34\xcb\x4a\xcd\xca\xd2\xd4\x52\x4a\xcd\xca\x34\xb2\ \x12\xcd\xca\x4c\xb1\x20\x90\x08\x44\x53\x40\xf6\x4d\xf6\x01\x46\ \x99\x61\xe6\x9d\x7f\x21\xd6\x98\xe5\x5d\xee\x72\xee\x30\x9f\xbc\ \xcf\xcf\x9c\xf7\x7e\x99\x79\xdf\xf7\x9e\xf3\x9c\x73\xa7\x5f\x3f\ \x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x57\xd5\x1d\x77\xbb\ \x88\xfa\x8b\xc0\xdd\xa9\x72\x11\xdd\xc5\xe1\x6e\x29\xb8\x64\x63\ \x9f\xaa\x40\x16\x2e\xc5\xd2\xa7\x2a\xe3\x70\x1c\x8e\xc3\xc1\xc1\ \x99\x5d\x18\xae\x30\xe4\x47\xe2\xa5\x75\x8c\xe1\xca\x42\x54\xda\ \x53\x84\x6c\x59\xbe\x3b\x98\xc2\x55\x84\xb6\xff\xcd\x90\x33\x44\ \x6c\x17\x86\xab\x54\x9b\x19\xc2\x55\x85\x75\x6e\x7e\xee\xbf\x11\ \xb0\xa5\x7b\x77\x84\xbe\xcd\x0c\xae\x36\xa2\x7b\x6b\x76\x3f\x8b\ \xcd\x96\xe6\xdd\x15\xba\x49\x60\x03\x57\x17\xf9\x5f\xe2\xe0\x7e\ \x0e\x93\xed\x4f\xaf\x9e\xd0\x97\x05\x16\x70\x4d\xd1\x56\x69\x8d\ \xc7\x79\x2c\xb6\x54\xaf\xde\xd0\x97\xcc\xf0\x70\xcd\x73\x6d\x92\ \x2e\xcf\x54\x0c\xb6\x64\x0f\xeb\xd0\xb8\x36\x68\xb8\x96\x18\xbb\ \x94\xd0\x2b\x0d\x99\xed\x9c\x87\x6d\xe8\xb3\x6d\xb0\x70\x37\x1f\ \x71\x48\x58\xbd\xd2\x11\xd9\xce\x7a\xd8\x87\x3e\x63\x84\x84\x6b\ \x7d\x4c\x24\x9d\xf6\xbe\x80\xc4\x76\xc6\xdd\x31\x74\x49\x2b\x1c\ \x9c\x71\xb9\x68\xb2\xef\x9d\x81\xc0\xf6\xab\xbb\x58\xe8\xe3\x37\ \xa1\xe0\xda\x9e\x96\x28\x45\x7c\xb2\x15\xd9\x4e\x0f\x11\x0f\x7d\ \xf4\x06\x0c\x9c\xf9\x79\xc9\x42\xc9\xf7\xa2\x02\xdb\xc9\x41\x52\ \xa1\xf3\x9a\x20\xe0\xcc\x2f\xca\x94\x71\x7e\x39\xb2\x6c\x27\xb4\ \xd2\xa1\x31\x3a\x7a\x38\x61\x8d\x6c\x91\xe9\x77\x49\x86\x2d\x49\ \x2b\x17\x1a\x55\x47\x0d\xf7\x9a\x42\x09\x3c\xf2\xb2\x24\xdb\x71\ \xad\x7c\xe8\x8c\x5a\x4a\xb8\x37\x14\x0b\x74\xff\x7f\x24\xd8\x7e\ \x18\xa8\x14\x1a\x59\x4d\x05\xf7\x1e\x82\x7d\x30\x36\x5f\x94\x2d\ \x51\xa3\x1c\x3a\xa9\x9c\x02\x6e\x27\x92\xb9\x11\x70\x4d\x84\xed\ \x1b\x0d\x4a\x68\x58\x19\x31\xdc\x2e\x44\xeb\x25\xb0\xc0\x81\xed\ \x88\x06\x2d\x34\xb8\x80\x10\xee\x63\x64\x63\x28\xb0\xd0\x8e\xed\ \x6b\x0d\x6a\x68\x50\x3e\x11\xdc\x7e\x35\xba\x6d\x15\x54\x64\xc3\ \x76\x58\x83\x1e\x1a\x90\x47\x00\x77\x10\x83\x4d\xa5\x0a\xb5\xbe\ \x79\xbe\x74\xc3\x09\xf5\xcf\xc1\x86\x3b\x8a\xb5\x40\x3b\x5d\x39\ \xd1\x47\xde\xf9\x22\xcf\xc6\x84\x4b\xd4\xa8\x30\x35\xb1\xa2\x3b\ \xf4\x33\x35\x6e\xa8\xef\xdf\x78\x70\xcb\xf0\xed\xd2\xc8\x3a\x82\ \xef\xb4\x7b\x9f\xc5\x83\x33\x2e\xc5\x5f\x22\xbc\xb2\x3d\x30\x41\ \x8d\x1f\x18\x51\x8d\x79\xcf\x19\x62\x09\x16\xa9\xb1\xec\x23\x60\ \x8b\xaa\xc7\x7e\x5a\x0d\x4b\xf0\x97\x99\xfe\x2e\x81\x7b\x3e\xb3\ \x9e\xe0\x3d\x67\x58\xec\x14\x67\x7f\x56\x03\xd1\x0e\x71\x63\x91\ \x13\xd8\x66\x37\x12\xee\xad\xfa\x85\xcc\xd9\xa2\x1b\x89\xb3\x12\ \xfd\x02\xc6\x6c\x0f\xb5\x50\xe4\x73\xfa\xf9\x4c\xd9\xe6\xb7\x50\ \x65\xc2\x2d\xf3\x18\xb2\x2d\x6c\xa1\xac\x21\x74\xd1\xcc\xd8\x16\ \xe9\xa9\x4b\xc3\xc6\x59\x8c\xd8\x1e\xd6\x03\x14\xd5\x8d\x33\x99\ \xb0\x89\xf9\x25\x04\x76\x44\x43\x14\x03\xb6\xd8\x56\x20\x23\xa7\ \xe1\x7e\x70\xb6\xa5\x06\x30\x0b\xac\x66\x1a\x30\xdb\x72\x03\xa0\ \x79\x58\x3d\x15\x94\xed\x49\x03\xa8\xed\x7a\x7d\x0a\x20\xdb\x53\ \xa0\xce\x66\x07\xdd\x64\x30\xb6\xe7\x4c\xe0\x56\x7f\xd5\x24\x20\ \xb6\x78\x13\x83\x26\x49\x65\x38\x08\xdb\x0b\x26\x26\xed\xa5\xd2\ \x09\x00\x6c\xab\x4c\x8c\x1a\x73\x25\xe3\xa9\xd9\x56\x9b\x99\xb5\ \x34\x8b\xc7\x51\xb2\xad\x13\x18\x36\x83\x8b\x83\xa9\xd8\x5e\x15\ \x98\xb6\xd1\xf3\xc6\x50\xb0\x6d\x10\x18\x0f\x20\xe4\x92\xd3\x6d\ \x54\x62\xa3\x1f\xdd\xc8\x1d\x4d\xc8\xf6\xba\x22\x1b\xc0\x5c\xc9\ \xd5\x51\x44\x6c\x5b\x9d\x33\xf4\xf2\xd7\x3d\x04\x6c\xdb\x9c\x33\ \x91\xd3\xfc\x20\xc9\x07\xb7\xc9\x29\x70\x4d\x31\x64\xb7\xdc\x9b\ \x4e\x80\x6b\x7a\x80\xf4\x61\xdd\xce\x1c\x4e\x37\x97\xfc\x35\xf7\ \x21\x63\xb8\x7a\xaa\x5a\x67\x27\x53\xb8\x3a\xca\x4a\xe7\x23\x86\ \x70\xb5\x33\x68\x93\x92\x5d\xec\xc6\x85\xee\xa3\x4f\xe7\xf6\x30\ \x82\xab\x89\x04\xc8\x35\xd5\x09\x4c\xe0\xaa\xa7\x83\x64\xe9\xea\ \x4f\x19\xc0\x55\x40\xd5\x37\xea\xfd\xe0\x70\x15\xe1\x2a\x28\xa9\ \x0f\x00\xc3\x95\x87\x01\xd6\xd4\xea\x83\xa0\x70\x65\x13\x41\xdd\ \x08\xb7\xc3\x80\x70\xa5\xa1\xc0\x3e\x8e\xdb\x11\x30\xb8\xc2\x60\ \x15\xb4\x34\x47\x81\xe0\x0a\x82\x18\x78\x87\x9a\x44\x10\xb8\x6b\ \x81\x4c\x5c\x57\xcd\xb7\x00\x70\xf9\x6c\xd8\xda\xe9\x8e\x51\xc3\ \xe5\x05\x30\x73\xfa\x07\x26\x51\xc2\xe5\x8e\x65\xd8\x23\xd1\x9e\ \xa0\x82\xbb\xe4\xcf\xb4\xbb\xa4\x3d\x49\x01\x97\x33\x92\x71\x5f\ \xce\x7e\x08\x1f\x03\xee\xa2\x1f\xf3\x8e\xe6\xa0\x9f\x08\xe1\xb2\ \xd9\xb3\xd9\x1f\x11\x40\x86\xcb\xf2\xc5\x5f\x6a\x30\xfe\xf8\x81\ \xcd\x10\x3e\x2a\x5c\xc7\xf1\x05\x5c\x79\xa6\x10\x0c\x6e\x58\x0f\ \xe1\x23\xc2\xa5\x7b\xe3\xb3\x0d\xcf\xb0\x58\xf6\xe1\x87\x79\x24\ \x63\xc2\xa5\x11\xb0\xdd\xdb\x39\xd3\xbc\x97\x80\xee\x3c\x1e\xdc\ \x1a\x92\xef\xb4\x2b\x74\x3b\x7e\xe8\x84\x36\x2c\x38\xd3\x6a\xdc\ \x05\x46\x64\xf6\xfc\xfb\x9f\x60\x87\x66\x61\xde\x73\xc2\x7a\xbc\ \x05\x7c\x32\x7b\x6f\xeb\x0f\x30\x6f\x87\x4c\xec\xa7\x55\xd8\x88\ \xb3\x80\xbf\xcd\xb4\xf0\xfb\x38\xa1\xc3\x52\x49\x5e\xc2\xef\xa0\ \x2f\x30\xca\x6e\x56\x78\x1b\x7a\xe8\xd0\x14\xb2\xed\x0b\xf9\xd6\ \x1e\x7d\xc5\x3e\xbd\xd8\x8a\xfc\xa4\xfe\x41\xba\xf1\xef\x21\x65\ \xb3\x58\xb6\x20\x6e\x29\xa7\xc9\x53\x26\xa4\x61\xdc\x31\x57\xc5\ \xca\x81\xcd\x48\xfb\xfe\x2f\x34\xc9\xe6\x01\xe5\xed\x28\xb8\x50\ \xb4\x90\x12\x36\x20\xe4\xc2\xc7\xe9\xd2\xf4\xcf\x95\x26\x30\xc7\ \x15\x49\x14\xc8\xca\x2f\xa3\x01\xdf\xd3\x16\x38\x5f\xc8\xd3\x8d\ \x2f\x96\x34\x3e\x84\x75\xd8\x95\x35\x76\x69\x78\x6c\x80\xdc\xc6\ \x53\x2c\x63\x68\x09\xaf\xc8\xb2\x7d\x05\x51\x54\x7f\x27\x7d\xae\ \x21\xa4\x44\xd6\xa8\x14\xd6\xca\xb8\x39\x87\x60\xec\x88\x53\x83\ \x25\x16\x08\x2d\x55\x30\xa0\xcd\xab\x24\xe1\x12\xa0\x8c\x9c\x9f\ \xc5\xcf\x47\x4d\xae\x54\x6c\x2c\x48\x9e\x7c\xda\x0b\x67\x81\x25\ \x0f\x15\xb9\xfe\x94\x2a\x84\x86\x91\x29\x5e\x94\x6d\x07\xa4\x79\ \xf8\xfb\x30\x87\xeb\x4f\xbd\x8e\x74\x9a\xcf\x14\x87\xd1\x42\x24\ \xb4\x5d\x53\x3c\xed\xae\x3f\x0d\x8d\xad\x9d\x6e\xa5\x03\xdb\x16\ \x68\xc3\x3a\x63\x84\xcd\xf5\x23\xaa\x91\x4f\x90\x9a\x56\xd8\xb1\ \xbd\x05\x6f\xf5\x67\xfa\x58\x5d\xdf\x6a\x64\x5b\x59\xc6\x65\xa8\ \xe3\x1b\xe4\x4d\x92\xcb\xbd\xed\x73\xeb\x91\x6d\x04\x19\xac\x8f\ \x08\xac\x15\x98\xb4\x97\xae\xf4\x0c\x46\xcc\xc6\x63\xb3\x39\x22\ \x10\x6f\x66\xd4\x98\x2b\xec\x1a\xc8\xb1\x1d\xd9\x46\xa3\xeb\x19\ \xc2\x8f\x33\x31\x6b\x69\x16\x75\x8c\x5a\xcd\xd1\x59\xf0\xd5\xfa\ \x44\x27\xdb\x0a\x13\xc3\x66\x70\x49\xa8\xc3\xc8\x36\xa2\x3a\x8f\ \x08\xc4\x1a\x99\xb6\xd1\x8b\x57\x36\x5a\xc8\xa4\x5f\xa0\x5a\x6c\ \x60\x3f\x57\x42\x28\xdd\xfa\x66\x8b\xcb\xc2\x39\x67\x22\x87\xc3\ \x71\x38\x0e\xe7\x02\x70\xbb\x93\xfa\x54\x87\x64\xe1\x5c\x41\x1c\ \xee\x96\x81\xbb\xad\xbf\x8b\xe8\x76\xfe\x83\xac\x5c\x5c\x5c\x5c\ \x5c\x5c\x5c\x5c\x5c\x5c\x5c\xff\x43\xfd\x0b\x99\xa5\x5c\x7e\x47\ \x71\x60\x42\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x2f\x60\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x01\x5b\x00\x00\x01\x5c\x08\x06\x00\x00\x00\x66\xca\x1d\x55\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\x42\x28\ \x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03\x09\x08\x1f\ \x25\x1b\xcd\xc8\xcf\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\ \xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x2e\xe0\x49\x44\x41\x54\x78\ \xda\xed\x9d\x09\x74\x15\x55\xb6\xfe\xaf\xb6\x43\xdb\x2d\xdc\x9b\ \x00\x62\xdb\xb4\xa2\xb6\xf6\xa0\xdd\xb6\xa2\x3e\x71\xa0\xaa\x92\ \x30\x2a\x8a\x20\xa2\x88\x8a\x38\xb7\x2d\x88\xa0\x38\x61\xa7\x45\ \x51\x5b\x5b\x14\x27\x22\x21\x75\x2b\x84\x00\x81\x10\x48\x20\x10\ \xa6\x40\x98\xc7\x80\x21\xcc\x90\x90\x89\x84\x04\x12\x12\x12\x12\ \x02\xa9\x57\xbb\x82\x1a\x48\x6e\x86\x9b\x5b\x75\xeb\xd4\xf9\x7e\ \xff\xf5\xad\xf7\x5f\xbd\x5e\x3f\xaa\xce\x3e\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\x40\x07\x59\xbc\x32\x50\x11\xba\x06\xc8\x42\x5f\x97\x2c\ \x0e\x75\xb9\xc5\x51\x4e\x45\xfc\x58\xfb\x9f\xe1\x9a\xe2\x34\xa5\ \xb8\xdc\x42\xba\xa6\x03\xb5\x12\x0b\x35\x1d\xd3\xfe\xff\xc7\xb5\ \xff\xa9\xd6\x97\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\xff\xf7\ \x57\x6a\xff\xd9\x1c\x4d\x93\x9d\x6e\x69\x3c\xfd\x3b\xf4\xef\xd1\ \xbf\x1b\x28\x8b\x77\xd1\x73\x20\x1a\x00\x00\x76\x09\xeb\x72\x71\ \x80\x12\xfc\x77\xcd\xe0\x06\xe8\x06\xe7\x16\xbf\x71\x2a\xc2\x82\ \x5a\x03\x14\x2b\x1a\x36\x4c\xbf\xa9\xe2\xec\x73\xcd\xd7\xf4\xb5\ \x4b\x91\x5e\x77\xc9\x52\xff\x00\xb9\xdb\xdf\xe8\x3d\x10\x4c\x00\ \x80\xff\x51\x1d\x17\x04\xba\xa5\x9b\x9c\xb2\x30\x50\xdb\x31\x86\ \x6a\x66\x95\xa0\x29\xcf\x62\x66\xda\x5a\xe5\xe9\xef\xa5\xbd\x1f\ \xbd\x27\xbd\x2f\xbd\x37\x82\x0f\x00\x30\x8e\x89\xbd\x2f\x0d\x8c\ \x08\xba\xdb\xe9\x16\x47\x6b\xe6\x33\x57\xdb\x11\xe6\xda\xcc\x58\ \x9b\x29\xfd\xbd\xe9\xb8\x63\x14\x1d\x87\x38\x62\x06\x5e\x82\xc9\ \x01\x00\xf0\x9a\x36\x4a\x70\x3b\x97\x5b\x7a\x30\xc0\x2d\x7c\xaa\ \x19\xcb\x2a\xcd\x64\x4f\xf2\x69\xae\x8d\xeb\xec\xb8\xa4\xd0\xb9\ \x33\x9d\x07\xb7\x0d\xef\x19\x88\xd9\x03\x00\x68\x74\xe7\x4a\x66\ \xa1\x99\x6b\xd8\xd9\x0f\x53\x30\x53\xef\x77\xbf\xf4\x91\xee\x2b\ \xcd\x80\x43\x68\x5c\x31\xb9\x00\xe0\x9c\xc0\x28\xb1\x93\xb6\x33\ \x7b\x56\x33\x88\x59\x67\xbf\xe8\xc3\x28\x7d\x6f\xbc\x47\xb5\x3f\ \x60\x33\x5d\xb2\x34\xac\x9d\x12\xf4\x7b\xcc\x3a\x00\xf8\x39\x1e\ \xb8\xb1\xf6\x83\x96\xfe\x15\x1e\x66\x68\xbe\xf9\xa6\xd3\xf8\xb7\ \x95\xbb\xdd\x80\xd9\x08\x80\xcd\x70\xba\x83\xae\x87\xc1\x5a\xd7\ \x78\x9d\x11\x21\xd7\x61\x96\x02\xc0\x28\x9d\x62\xba\x5e\xe6\x72\ \x4b\x4f\x69\x8b\x7a\xa9\xa6\xd3\x30\x36\x4b\x8b\xe2\xb3\x38\x40\ \x11\x87\x74\x96\xc5\x5f\x63\xf6\x02\xc0\xc2\x2e\x56\x11\x43\x02\ \x14\x29\x06\xd9\x03\xcc\xaa\xd4\xa5\x48\x91\xfa\xc7\x35\x00\x80\ \xe5\xce\x61\xdb\x69\x8b\x73\x8c\x66\xb0\x3b\x61\x56\xf6\x3a\x66\ \xa0\xb8\x22\x9d\x0c\x00\x3f\xe3\x92\xc5\xce\x94\x62\xe4\xb9\x6e\ \x00\x64\x13\x95\x68\x9a\xe0\x0a\x0f\xba\x06\xb3\x1e\x00\x93\x8f\ \x0a\x6a\xaf\xc7\x0a\x67\x60\x44\x5c\xed\x74\x29\xde\x09\x01\x91\ \xe2\xbd\x58\x05\x00\x18\x45\xb2\x78\x51\xed\x07\x2f\x61\x0b\x4c\ \x07\xd2\xb4\x99\xe6\x83\x23\x66\xe0\xaf\xb0\x38\x00\xf0\x05\xa1\ \xa1\x17\x06\xc8\xd2\x60\xa4\x6d\x41\x1e\x94\xa6\xfd\xd2\x19\x44\ \xf3\x04\x8b\x05\x00\x6f\xd0\x76\x2c\x4e\xb7\xf4\x82\xb6\x98\x32\ \x60\x28\x50\x33\x6a\x34\xec\xc2\x4e\x17\x80\x96\xa0\x3a\x2e\xd0\ \xcb\x16\x62\x27\x0b\x79\xa7\x1d\x34\x7f\x50\x0a\x12\x80\x46\x70\ \x45\x4a\x82\xb6\x58\x56\xc3\x30\x20\x1f\x7c\x4c\x5b\x89\x0f\x69\ \x00\x9c\x07\x75\x06\x38\x7b\xd3\x0b\x26\x01\xf9\x5a\x4b\x34\xd3\ \xbd\x19\xab\x0c\x70\xcd\xe5\x11\xf7\x75\xa8\x2d\x69\x28\x56\xc3\ \x14\x20\x03\x75\x8a\xe6\x59\x9b\x68\xb1\x3d\x56\x1d\xe0\xed\xe3\ \xd7\x25\x74\x33\x08\x65\x0d\x21\xb3\xcb\x3d\xba\x14\x71\x04\xa5\ \x11\x62\x11\x02\xfb\x1f\x19\xb8\xa5\x7b\xb4\x89\x9f\x8a\x85\x0f\ \xf9\x33\x47\x97\x3a\x0c\x63\x35\x02\x5b\x42\xf5\x0b\xa8\x40\x0c\ \x16\x3a\x64\x11\xd5\x50\xc1\x1b\xd4\x5d\x00\xb6\xe2\x6c\xa9\xc3\ \x7c\x2c\x70\xc8\x82\xf9\xb9\x87\x9d\x8a\xf8\x08\x56\x29\x60\x1a\ \x6a\x3b\x73\xb6\xc5\x37\x16\x36\xc3\xfa\x47\xec\xe3\xea\x4b\xab\ \xc6\xab\x13\xd2\xa2\xd5\x79\x99\x2b\xd5\x2d\x85\xbb\xd4\xbd\x25\ \x87\xd4\x8c\xd2\x3c\x75\xdf\xf1\x6c\x35\xb5\x68\x8f\x9a\x98\xb5\ \x46\xfd\x26\x3d\x46\x1d\xb1\xf6\x73\xf5\xff\xe6\x3e\xad\x06\xb8\ \x25\xd6\xde\x33\x01\x6d\x7b\x00\xa3\x67\xb3\xc2\xe3\xda\x04\x2e\ \x84\x59\xb1\xa9\xee\x0b\x5e\x51\xbf\xdf\x39\x5b\xcd\x39\x51\xa0\ \x7a\x43\x51\x65\x89\xaa\xec\x9d\xaf\x3e\xbc\x78\xb4\x1a\xa8\xb0\ \x62\xbc\x42\x81\xd3\x2d\x3d\x8a\xd5\x0b\x98\x39\x9b\xd5\x26\xee\ \x1c\x18\x16\x7b\x22\x53\x7c\x76\xe5\x38\x7d\xa7\xea\x4b\x68\xf7\ \x3b\x72\xdd\x17\xea\x15\x91\x21\x6c\x8c\x85\x22\xc4\xd2\x3c\xc6\ \x6a\x06\xd6\xdd\xcd\xca\x52\x1f\x9c\xcd\xb2\xa9\x9e\x89\xff\xf2\ \xb9\xc9\x9e\xcf\x7e\xcd\x74\x07\x2d\x7d\x9b\x99\xb3\xdc\x40\x59\ \xec\x85\x55\x0d\xac\xc5\xc4\xde\x97\xd6\x16\xf1\x16\x6b\x60\x5c\ \x6c\xa9\xe3\xd4\xee\xea\xa4\x9d\xb1\x6a\x8d\xf6\xff\xcc\x82\xce\ \x7d\x3b\x47\xf7\x65\x23\x63\x41\x9b\xd7\x94\x17\x8e\x45\x0e\xfc\ \x0e\xb5\xa4\xd6\x26\xe4\x06\x18\x17\x7b\xba\x71\x66\x7f\x75\x43\ \xc1\x0e\xd5\x1f\xd0\x07\xb6\xdb\xe7\x0c\x61\x65\x97\xbb\x16\x1d\ \x80\x81\x5f\x71\x29\xe2\xd3\x68\xac\xc8\xa6\xba\xce\x7d\x46\xcd\ \xf6\xf2\xe3\x97\xaf\x28\xae\x2a\x55\xfb\x2e\x1a\xc9\xca\x98\x95\ \xe9\xd5\xc4\x00\x30\x95\xb0\x2e\x17\x9f\xad\x69\x00\xe3\x62\x50\ \xdd\xe2\x9f\x57\x4b\xaa\xca\x54\x2b\x50\x75\xa6\x5a\x1d\xb0\xe4\ \x4d\x76\x2e\x42\xd0\xb1\x02\xae\xfb\x02\x33\xf8\xed\xe4\xe0\x8e\ \x54\xbe\x0e\xa6\xc5\xea\xd1\xc1\xc3\x5e\xa7\x73\x19\x45\xe9\xa9\ \x72\xf5\xce\xb8\xa7\x59\x1a\xc7\xe4\xcb\x23\x7b\x5c\x01\x37\x00\ \xc6\x9d\xcf\x2a\x41\x77\x6a\x13\x2d\x1b\xa6\xc5\xa6\xda\x2b\xc1\ \xea\xea\xfc\x6d\xaa\x15\xa1\x33\xdc\x3f\x4c\xeb\xc3\xd2\x78\x66\ \xb5\x95\x85\x3b\xe0\x0a\xc0\xe7\x50\xb2\xb7\x36\xc1\x4e\xc0\xb4\ \xd8\xd5\x27\xdb\xdc\xaa\x95\x99\xb6\x6f\x21\x6b\x63\x5a\xe6\x92\ \xa5\xfe\x70\x07\xe0\x1b\x42\x43\x2f\x3c\x9b\xd6\x05\xc3\x62\x58\ \xf4\xe5\xbf\xf2\x74\x95\xa5\xcd\x96\xd2\xcf\xee\x5f\x38\x82\xbd\ \x82\x36\xb2\x18\x8a\x36\x3c\xa0\x55\x74\x8a\xe9\x7a\x19\x2a\x75\ \xd9\x43\x0b\xb2\x56\xab\x2c\x90\x7e\xec\x00\x43\xd7\x7b\xeb\x48\ \x16\xdd\xc8\xc7\x05\x5e\x41\x5d\x14\x28\xbf\x10\x46\xc5\xbe\xee\ \x8b\x7f\xce\xd4\x4b\x0b\xad\x65\xc8\xf2\xb1\xac\x8e\xf5\x6a\x74\ \x83\x00\x2d\xa2\xcd\x14\xe9\x4f\xda\xc4\xd9\x0f\xa3\xb2\x87\xe8\ \x2c\x94\x25\xd6\xe4\x6f\x67\x79\xbc\xf7\xd1\x45\x1f\xb8\x08\x68\ \x12\x97\xd2\xed\x56\xba\x17\x0e\x93\xb2\x87\x7e\x1f\xd5\x5b\x2d\ \x3b\x55\xce\x94\xd9\xd2\x2e\xfc\x96\xd9\x8f\xb3\xdc\x7e\x27\x37\ \x40\x09\xfe\x3b\xdc\x04\x78\xce\x38\x88\x08\x0a\x42\xc6\x81\xbd\ \x44\x3f\xc9\x59\xe4\xbd\x4d\xdf\xb1\x3e\xf6\x25\x81\x11\x41\x77\ \xc3\x55\x40\x7d\xa3\x95\x85\xee\xda\x5f\xe4\x72\x18\x94\xbd\x34\ \x79\x57\x1c\x93\x66\xbb\x24\x67\xbd\x1d\xc6\xff\x84\x53\x11\x43\ \xe0\x2e\xa0\xce\xd1\x81\xf4\x90\x36\x31\x2a\x61\x4e\xf6\x93\xd1\ \x65\x13\x8d\x82\xae\x13\xdb\x24\x06\xda\xba\x92\x1e\x84\xcb\x00\ \xba\xac\x30\x40\xdb\xd1\x56\xc1\x98\xec\x27\x6a\x4d\x53\x5e\x7d\ \x52\x65\x15\xba\x5a\x6c\x93\x16\xea\x55\xb8\xfc\xc0\xfd\x8e\x56\ \x78\x18\x46\x6b\x5f\xfd\x71\x46\x3f\x95\x65\x42\xe6\xbf\x6c\xa3\ \x78\x68\xeb\x4c\xfb\x05\x09\xd7\xe1\x73\x47\x4b\xd7\x6f\x4f\xc3\ \x94\xec\xab\x5b\x63\x07\x33\x6d\xb6\x03\x16\xbf\x61\xb7\x98\x9c\ \x46\x99\x46\xce\xd0\x7e\x5e\xde\x8f\x1d\xad\xfd\x75\xf7\xbc\x61\ \x4c\x9b\x2d\xc3\x97\x1b\x1a\xdd\xe1\x52\xfb\x28\xb8\x10\x0f\x47\ \x07\xb2\x28\x6a\x41\xaf\x80\x19\xf1\xd1\x82\x9c\x65\xfa\x2f\x1e\ \x6d\xd7\xd8\x54\xb8\x22\x25\x01\x6e\x64\xe7\x1d\x6d\xa4\x78\x2f\ \xf2\x68\x71\x66\x8b\x33\x5b\x4b\xec\x70\x8f\xa3\x44\xa3\x7d\xcf\ \x68\xbb\x50\xa2\x35\x4c\x88\xaf\x6c\x84\x52\xc6\x6e\x8f\xd5\x85\ \xfe\x58\xd8\x3c\x46\xc5\x74\x63\x13\xee\x64\x23\x02\xa3\xc4\x4e\ \x5a\x60\x73\x60\x40\xfc\x69\x73\xe1\x2e\x26\x8d\xb6\xa8\xb2\x84\ \x97\x18\x65\xb5\x9f\xd2\xfd\x2a\xb8\x94\x1d\x76\xb4\xd3\xee\x0d\ \x70\xba\xc5\x9d\x30\x1e\xdc\x20\xc3\x0d\x32\xcb\x1e\x29\xa4\xbb\ \x64\xd1\x05\xb7\x62\x99\x89\xbd\x2f\xd5\x82\xb8\x02\xa6\xc3\xaf\ \x1e\x5b\xf6\x0e\x93\x66\x3b\x66\xc3\x44\xde\x62\x95\x8c\x7a\xb8\ \x2c\x67\x1e\xb8\x45\x19\x86\x83\xaa\x5f\xa8\xfa\xc5\x88\x14\x61\ \x0a\x5c\x8b\x4d\xa3\x7d\x0f\x66\x03\x91\x22\xf6\xc4\x33\x65\xb6\ \xcb\x73\x37\xf1\xfb\x51\x53\x16\xdf\x82\x7b\xb1\x95\x79\x40\xf5\ \x0e\xce\xc0\x68\x20\x74\x6a\x60\xee\xfc\xf6\x0c\xae\xf5\x32\x94\ \xe2\xe5\x74\x8b\x27\x61\x32\x50\x5d\xc5\x1e\x5c\xc6\x84\xd1\x6e\ \x3c\xb2\x03\xf1\x72\x8b\x15\xce\x88\xa0\xdb\xe0\x66\x16\x86\xfa\ \x1f\xb9\x14\x31\x13\x93\x15\x42\x77\x5d\xe6\x95\xd1\x46\x09\x6e\ \x07\x57\xb3\x22\x31\x03\x7f\xa5\x05\x68\x09\x26\x29\xe4\x49\xef\ \x6f\x9e\x64\x69\xb3\x0d\xdf\x3d\x17\x71\x3a\xe7\x52\x8a\x90\x44\ \xeb\x1a\xe6\x66\xbd\x0f\x62\xe3\x30\x41\xa1\xc6\xd4\x5e\x09\x56\ \x57\xe7\x6f\xb3\xa4\xd1\xee\x2d\x39\xa4\xfe\x61\x5a\x1f\xc4\xa9\ \x5e\x86\x82\xf8\x6f\xb8\x9b\xe5\x3e\x88\x89\x35\x98\x9c\x50\x53\ \xa2\x82\xdc\x39\x27\x0a\x2c\x65\xb4\x74\xa5\xf8\xce\xb8\xa7\x11\ \x1f\x0f\x1f\xcc\xa8\x4a\x1f\x5c\xce\x0a\x46\x1b\xd9\xed\x5a\x2d\ \x28\xc7\x30\x29\xa1\x96\xd4\xb9\x3d\x5c\x5e\x64\x09\xa3\xa5\x1c\ \xe0\xe0\xf9\x2f\x21\x2e\x8d\xab\x30\x20\x32\xe4\x6a\xb8\x9d\x3f\ \x09\xeb\x72\xb1\x16\x88\xcd\x98\x8c\x50\x4b\xd5\x75\xee\x33\x6a\ \xb6\x9f\x77\xb8\xc5\x55\xa5\x6a\xdf\x45\x23\x11\x8f\xe6\x5d\x78\ \x58\xe3\x48\x16\x2f\x82\xe9\xe1\x9c\x16\x62\xf2\x48\xa1\xbf\xba\ \xa1\x60\x87\xdf\xce\x68\x29\x43\x02\x71\x68\x89\xa4\xf7\xe1\x7a\ \xfe\x30\xda\x48\x49\xc0\xc5\x05\xa8\xb5\x6a\xa7\x04\xa9\xa1\x9b\ \xc3\xd4\x53\x67\xaa\x4d\x4b\xef\x9a\xb4\x33\x56\xed\x38\xb5\x07\ \xc6\xbf\xe5\xaa\x0e\x54\x84\xae\x70\x3f\x13\x09\x8c\xea\xdd\x56\ \x1b\xf8\x83\x98\x7c\x90\xaf\xd4\x33\xf1\x5f\x86\xb7\x3d\xdf\x7f\ \x3c\x5b\x1d\xb4\xf4\x6d\x8c\x77\xeb\x3e\x98\x1d\xa0\xf5\x0f\x17\ \x34\x6b\x57\xab\x48\x91\x98\x74\x90\xaf\x15\xa8\x48\xea\xb3\x2b\ \xc7\xf9\xdc\x74\xf7\x69\x26\x3b\x72\xdd\x17\xea\x15\x91\x21\x18\ \x67\xdf\x1c\x27\x44\xc0\x05\xcd\x30\x5a\x59\xec\x87\xc9\x06\x19\ \xad\xee\x0b\x5e\x51\xbf\xdf\x39\xdb\xeb\x34\x31\x2a\xfe\xad\xec\ \x9d\xaf\x3e\xbc\x78\xb4\x6e\xe2\x18\x53\x5f\x17\xac\x11\xfa\xc2\ \x0d\x0d\xe4\xf2\xc8\x1e\x57\x68\x03\x5d\x84\xc9\x06\x99\x29\x6a\ \x1c\xf9\xd2\xaa\xf1\xea\x37\xe9\x31\xea\xb2\xdc\x4d\xea\x81\xd2\ \x1c\x35\xa3\x34\xef\x1c\xa5\x1c\xde\xaa\x17\x2a\x1f\xb1\xf6\x73\ \xf5\xff\xe6\x3e\xad\xb7\xe4\xc1\xd8\x19\xaa\xfc\xb6\xe1\x3d\x03\ \xe1\x8a\x38\x3e\x80\x20\x08\xf5\x6f\xd9\xa4\x6d\xa4\xd4\x13\x13\ \x0c\x82\xa0\x3a\xaa\x71\x2a\x62\x08\xdc\xd1\x87\x74\x88\x11\x2f\ \x47\x35\x2f\xa8\xb5\xea\x1c\xdd\xb7\x49\x51\xee\x2d\x1d\x1b\x34\ \x25\xaa\x91\x2b\x26\xbc\xd0\xa8\xa8\x15\x79\xbf\xa4\x51\x4d\x6a\ \xf0\xb2\x77\xd5\xa1\x2b\x42\x1b\xd5\x93\xc9\x63\x11\xc3\x86\xb5\ \xaf\x53\x4c\xd7\xcb\xe0\x92\x3e\xfb\x28\x26\xfc\x0f\x93\xea\x5c\ \xfd\x25\xe6\x11\x75\xd4\xba\x09\xea\x84\xb4\x68\x8f\xfa\x2a\x6d\ \xba\x2a\xef\x49\x68\x52\x33\xf6\x27\xa9\x71\x19\xc9\x4d\x8a\x3a\ \x08\x24\xe7\x6d\x6e\x54\x6b\xf2\xb7\xeb\x5f\xf3\x9b\x12\x7d\xa1\ \x3f\xff\xdc\xf3\x7c\x65\x95\xe5\xeb\xb7\xac\x9a\x52\xe5\xe9\x53\ \x2a\x0f\xfc\x6d\xf6\x20\xcc\xfd\x06\xa4\xed\x6e\x3f\x86\x4b\xfa\ \x22\xa7\x56\x11\xba\xe2\xf2\x42\xe3\x1f\x6f\xde\xda\xf0\xb5\xba\ \xbe\x20\x8d\xa9\x6e\x04\xa0\xe5\x7c\xf1\x63\x14\xe6\xbc\x87\xcb\ \x0e\x28\x36\xde\x5a\x54\xc7\x05\x4e\xb7\xb8\x0e\x93\xa9\x79\xa2\ \xca\x51\x1f\x6c\x99\x6c\x78\x72\x3e\xf0\x0f\x85\x27\x8b\xd5\xdf\ \x45\xf5\xc4\x5c\x6f\xf8\xb2\xc3\x4a\x18\x66\xeb\x72\x6a\x87\x62\ \x12\x79\xa7\xeb\xa6\x3f\xa8\xa7\x2b\x2d\xca\x5e\xab\x56\x99\x74\ \x15\x15\x18\x4f\xe8\x96\x1f\x30\xbf\x3d\xe6\xde\x4a\x83\xe1\x9a\ \xde\x5f\xc9\xcd\xc7\x24\x6a\xbd\xae\x8a\xea\xa5\x3e\xb6\xec\x1d\ \xfd\x6c\x96\xb5\xb6\xde\xe0\x5c\x4a\xaa\xca\xd4\x6b\xa2\x1f\xc0\ \xbc\x6e\x58\x39\x1d\x23\x7b\xfc\x16\xee\xd9\x42\x9c\xb2\xf0\x11\ \x26\x8f\xef\x45\x05\x50\xc8\x78\xe9\xc3\xd8\x11\xed\x67\x29\x60\ \x8f\x4f\xb6\xb9\x31\x97\x3d\x49\x16\x43\xe1\x9e\x2d\x31\xda\xc8\ \x6e\xd7\xa2\x43\xae\x39\x15\xaf\x7a\x25\xbe\xaa\x57\xa1\xca\x2b\ \x2f\x84\x8b\x31\x02\x75\x76\xb8\x76\x7a\x5f\xcc\xe1\x86\x55\xe1\ \x0a\x0f\xba\x06\x2e\xda\xdc\xb3\x5a\xb7\x38\x0b\x93\xc6\x7c\xdd\ \x35\x77\xa8\xbe\x6b\xa2\x5a\xab\x00\x99\x09\xec\xa6\x82\x09\xd3\ \xe0\xa2\xcd\x4e\xf5\x42\x3f\x31\x2b\x18\x2f\xd5\x79\x45\x4a\x99\ \x35\x29\xaf\x3e\xa9\xf7\x53\xc3\x5c\x6d\xb8\x6f\x99\x33\x52\xbc\ \x1d\x6e\xda\xf4\xae\x76\x35\x26\x8b\xf5\x8c\xf7\xc3\xad\x53\xd4\ \x6d\x45\x7b\xe1\x72\x16\xe2\xeb\x1d\x33\x31\x3f\x3d\x6b\x29\xdc\ \xb4\xb1\xb3\x5a\x45\x0c\xc1\x24\xb1\xb6\xae\x9f\xfe\x10\x52\xca\ \x2c\x02\x8d\x3f\x35\xaf\xc4\xbc\xf4\xf8\xb1\x4c\x84\xab\x7a\xb8\ \xc0\xa0\x0d\xd0\x46\x4c\x12\xb6\x6a\x0d\xd0\xbd\x7d\xa4\x94\xf9\ \x8f\x99\x07\x16\x63\x2e\x7a\xd6\x6a\x18\x6b\x03\x04\xc8\x52\x1f\ \x4c\x0e\x76\x75\xe5\xd4\x9e\x48\x29\xf3\x03\x67\x6a\x6a\xd4\x6e\ \xf1\xcf\x63\x0e\x7a\xae\x9b\x80\xaa\x60\xf5\x77\xb5\xc2\x16\x4c\ \x0e\xfb\xa5\x94\x1d\x2e\x2f\x82\x23\x1a\xcc\xe2\xec\xf5\x98\x77\ \x9e\xcc\xd6\x2d\xae\x85\xc1\xd6\xfd\x28\xa6\x48\x0f\x61\x62\xd8\ \xb7\xaf\x17\x95\x1b\xac\x4d\x29\xcb\x82\x33\x1a\xc4\x83\x49\x23\ \x31\xdf\x3c\x5d\xe3\x55\x84\xde\x70\xd9\x5f\x32\x10\x70\x56\xcb\ \x61\x4a\x19\xf0\x1d\x9b\x0b\x77\xa1\x15\x0f\xce\x6e\x9b\xc8\x40\ \x88\x08\x0a\xc2\x64\xe0\x53\x7f\x9f\xfd\xd8\xcf\xe5\x21\xe9\xec\ \x11\xb4\x8e\x21\xcb\x51\x60\xbc\x91\x06\x91\xf7\xc1\x6c\x15\x61\ \x01\x26\x03\xf4\xc7\x19\xfd\x90\x52\xd6\x4a\xe8\x98\xa6\xbd\x12\ \x8c\xf9\xd4\x70\x1a\xd8\x5c\xbe\x6f\x8b\x45\x04\xff\x15\xb7\xc5\ \xa0\xc6\x52\xca\x4e\x54\x57\xc0\x45\x5b\xc0\xf0\x35\x9f\x61\x0e\ \x79\xe8\x57\xd6\x4e\x16\xff\xcc\x6f\xba\x97\x22\xfd\x80\x49\x00\ \x35\x27\xa5\x8c\x8c\x97\xca\x0b\x82\xc6\xa1\xec\x0f\x14\x18\xf7\ \x94\x99\x20\x7d\xc7\xa5\xd1\x76\x90\xc5\x2b\xb5\x01\xa8\xc4\x24\ \x80\xbc\x49\x29\xcb\xaf\x40\x4a\x99\x27\xe8\x03\x24\xe6\x4b\x83\ \x35\x13\xca\xdb\x44\x8b\xed\xf9\xcb\x40\x90\xc5\x50\x04\x1f\xf2\ \x45\x4a\x19\x35\x8f\x04\xbf\x40\xbf\x00\x50\x82\xd1\xd3\xd9\xad\ \x30\x96\x2f\xa7\x0d\xeb\x72\xb1\xf6\xe2\x79\x08\x3e\xe4\xeb\xf2\ \x90\xe8\xbf\x56\xcb\x97\x69\xd3\x31\x2f\x3c\x74\x73\x70\x24\x8b\ \x17\xf1\x93\x81\x20\x0b\x03\x11\x74\xc8\x28\xdd\x32\x1b\x1d\x87\ \x2b\x4f\x57\xa9\x37\xcd\x7a\x14\xf3\xa1\x21\x29\xc2\xc3\x3c\x5d\ \x62\x58\x8c\xa0\x43\x66\xa7\x94\x9d\xe2\x2c\xa5\x4c\xd9\x3b\x1f\ \x73\xa0\xe1\x2b\xbc\x89\x7c\xec\x6a\xdd\x41\xd7\x23\xdd\xcb\x47\ \x89\xda\x6e\x49\xbd\x2f\xfe\x39\x8c\x45\x33\xf5\xe7\x98\x01\xea\ \xeb\xeb\x26\xa8\x39\x27\x0a\xb8\x30\x5b\xfa\xe3\xd2\x65\xce\x10\ \xc4\xbe\x81\xe2\xe2\x5c\xb4\xce\xd1\xfe\xaa\x7c\x88\x60\xfb\x46\ \x03\x16\xbf\xf1\x73\x32\x3b\x7d\x81\xa6\xf6\xe5\x18\x97\xa6\xf5\ \x54\xf2\xfb\xdc\xec\x6e\x13\x0e\xa5\x20\xe6\x5c\x36\x86\x0c\xeb\ \x72\xb1\x66\xb6\x87\x11\x6c\xdf\x28\x36\x63\xf9\x39\x0b\x8b\x6a\ \xca\x46\xec\x9e\xa7\x06\xcd\x7f\x09\xe3\xd3\xc4\x2f\x02\x5e\x3e\ \xa4\xd1\x99\xb5\x94\xf0\x22\xe2\x5e\x5f\xd9\x8e\x98\x81\xbf\xb2\ \xf1\x59\xad\xf4\x20\x82\xec\x1b\xdd\x30\xa3\x5f\xa3\xd7\x5a\x33\ \xcb\xf2\xd4\xaf\xd2\xa6\xab\xc1\x9a\xf1\xa2\x40\x49\x7d\xf5\x5e\ \x38\x9c\x9b\xdd\xed\xb2\xdc\x4d\x88\x39\x6f\xd5\xc0\xb4\x17\x9c\ \x8d\x20\xfb\x46\xe3\xb6\x86\x37\x7b\xb1\x65\x9f\x28\x50\xbf\x4d\ \x8f\xd1\x2f\x04\xe0\xee\xfc\x2f\x4a\xca\x5e\xc7\x8d\xe1\xd2\x1f\ \x17\xc4\xbc\xde\x87\xb2\xe9\xf6\xbc\x9a\x1b\x16\xe2\xc4\x8d\x31\ \xdf\xe8\x8a\xc8\x10\xaf\x6f\x50\x55\xd7\x9c\xd6\x7f\x42\x4f\x48\ \x8b\x56\xfb\x25\x8d\xd2\xff\x6f\xf1\x3a\x8e\x42\xc2\xf3\xdc\xa4\ \x86\x2d\xc9\x41\x81\xf1\x86\x6e\x94\x75\x88\x11\x2f\xb7\xe1\x8d\ \x31\xe1\x49\x04\xd7\x37\x1a\xb6\xe2\x3f\x3e\x5b\x84\x85\x27\x8b\ \xf5\xb3\xdf\x37\x37\x4c\xd4\x77\xbe\x9d\xa6\xf5\xe1\x6a\x2c\xe3\ \x33\x53\xb8\xd9\xdd\xf6\xc1\xee\xb6\x81\xd2\x8b\xe2\x63\x76\x3c\ \x42\x88\x47\x70\x7d\xf3\x71\x67\x6b\xd1\x6e\x43\x3f\xa8\x1c\x28\ \xcd\x51\xe3\x32\x92\xd5\xff\x6c\x99\xac\x3e\xb2\x64\x8c\x7a\xf3\ \xac\x47\xf5\xba\x04\x66\x5c\xc1\xbd\x2d\xf6\x09\x53\xc7\xf3\xde\ \xf8\x67\xb9\xd9\xdd\xae\xc8\xdb\x82\x35\x54\x5f\x73\x6c\x65\xb4\ \x6d\xc3\x7b\x06\x6a\x5b\xf6\x2a\x04\xb6\xf5\xa2\x0a\x58\xfe\x80\ \x3e\xc6\x91\x09\x2f\xcf\xdd\xa4\x37\x75\x0c\xdd\xf2\x83\xbe\xc3\ \x0e\x59\xf0\x4f\xf5\xf6\x39\x43\x9a\x9d\x76\x76\x75\xf4\xfd\xfa\ \xcd\xa6\xbb\xe7\x0d\xd3\x8b\x5d\x8f\xdd\xf4\xbd\x1a\xb1\x27\x5e\ \xdd\x50\xb0\xe3\xe7\x0e\xbd\x66\xa7\xb0\x2d\xc8\x5a\xcd\xcd\xee\ \xf6\xfe\x85\x23\xb0\x8e\xce\x3d\xb7\x3d\x19\x18\xd5\xbb\xad\x9d\ \x8a\xce\x0c\x45\x60\xed\x9f\xb2\x44\xdd\x16\x8a\xab\x4a\x3d\xaa\ \xb9\x98\x7d\x51\x83\xba\xd3\xf2\xb2\xbb\x5d\x99\xb7\x15\x6b\xa9\ \xde\xba\x12\x9f\x40\x37\x06\xe8\x1c\x0d\x5e\xf6\x2e\x17\x86\xd0\ \x7d\xc1\x2b\xa6\x8f\xed\xd2\xdc\x8d\xdc\xec\x6e\x7b\x26\xfe\x0b\ \xeb\xe9\xdc\x0f\x65\xf3\x90\x85\x00\x9d\x93\x81\xb0\xbb\x38\x93\ \x0b\x33\xb8\x67\xde\x30\xd3\xc7\xb7\xef\xa2\x91\xdc\x98\xed\xaa\ \xc3\xa9\x58\x53\xe7\x1d\x25\xd8\x22\x2b\xc1\xe9\x96\x1e\x45\x40\ \x5b\xaf\x0f\xb6\x4c\xe6\xe6\xc6\xd3\x35\xd1\x0f\xf8\xe5\x88\x26\ \xfd\xd8\x01\x6e\x0c\x97\x32\x4f\xb0\xae\x6c\x56\x09\xcc\xe5\x96\ \x22\x10\xcc\xd6\xe9\x1f\xb1\x8f\xab\x27\x4f\x57\x72\x61\x02\x7b\ \x4b\x0e\xf9\x6d\x9c\xa9\x3a\x18\x6e\x95\xf1\x7a\x6e\x2b\x84\xb1\ \xed\xb4\xaa\xe3\x02\xd4\x42\x68\xfd\x8e\x6b\x75\xfe\x36\x6e\x4c\ \x80\xb2\x1c\xfc\x35\xd6\x1d\x22\x43\xd4\xdc\xf2\x23\xdc\x8c\x35\ \x75\xba\xc0\x1a\xab\x53\x2b\x81\xe9\x5d\xed\x14\xe9\x16\x04\xb1\ \x75\x7a\x91\xa3\xdd\x16\xdd\x6e\xfb\x4b\xcc\x23\xcc\x5c\x83\x66\ \x9d\x39\x19\xc9\x58\x63\x75\xf3\xbc\xdd\xd2\x4d\xec\x7e\x1c\x93\ \xc5\xb7\x10\x44\xef\x75\x67\xdc\xd3\x6a\x79\xf5\x49\x6e\x16\xbf\ \x15\x5a\xb9\x50\xb1\x71\xea\x72\xc0\xcb\x1f\x37\xea\x6a\x81\xb5\ \xf6\xb3\x46\xb1\x9c\x5f\xbb\x02\x01\xf4\x4e\xd4\x8e\x7a\x5b\xd1\ \x5e\x6e\x8c\xf6\x60\x69\xae\x65\x5a\x70\xcf\x3a\xb0\x94\x9b\x71\ \xff\x61\xd7\x1c\xac\xb7\x5f\xb4\x84\xe5\x94\xaf\x6a\x04\xd0\xbb\ \x73\x5a\xfa\x89\xc7\x0b\xd4\x0d\x96\x2e\x16\x58\x65\xfc\x1f\x58\ \xf4\x1a\x37\x63\x5f\x51\x5d\x89\x4e\xbc\xbf\xe4\xdb\x56\x31\x99\ \x02\x46\xb5\x22\x11\x3c\xef\x44\x15\xb9\x78\x81\x8e\x49\x7a\x24\ \xbe\x62\xb9\x3f\x76\x74\x35\x99\x17\xde\xd9\xf8\x2d\xd6\xdd\x4f\ \x39\xb7\x8a\x18\xc2\x5e\x7e\xad\x2c\x7c\x84\xe0\xb5\x5c\x54\x77\ \x96\x17\xe8\xcb\xff\xdd\x7e\xb8\xc0\x80\x0f\x65\xf5\x8f\x70\xa8\ \x08\x10\xd6\x9f\xbe\xbb\xfd\x0f\xce\x6b\x39\x38\x3a\xe0\x69\x47\ \x4b\x3b\x47\x2b\x37\x23\xa4\xac\x88\xd3\x35\x67\xb8\x89\xc7\xc0\ \xa5\x63\xb0\x0e\x6b\xb5\x94\x2d\xa7\x8d\x19\x78\x89\xf6\xd0\x15\ \x08\x5c\xf3\xf3\x3b\xa7\xef\x4f\xe2\x66\x61\x47\xef\x5f\xc4\x44\ \xdd\x5c\x9e\xea\x25\xcc\xcb\x5c\x89\xb5\x58\xab\x13\x8e\x64\xf1\ \x22\x76\x4a\x2a\x2a\x41\x77\x22\x68\xcd\xbf\x1d\xc6\x4b\xd6\x41\ \x41\xc5\x51\xbd\x23\x30\x2b\xb1\x79\x21\xe5\x23\x6e\xcc\x96\xd2\ \xdd\xfc\x71\x4d\xda\x9a\xb5\x12\xa4\x2e\x0c\x5d\xd1\x15\x46\x22\ \x68\x4d\xeb\xd1\xa5\x6f\xe9\x9d\x12\x78\x80\x6e\xc1\x51\x1d\x5b\ \x96\xe2\x43\xb5\x77\x1b\x6b\xaa\x69\x37\x5e\x5b\xfb\x39\xd6\xa5\ \x2e\x69\x38\x1a\x3b\xda\x44\x94\x48\xce\x4b\xb3\x41\x4a\x2d\xa2\ \x45\xcc\x6a\x87\xdf\xe4\xbc\xcd\xdc\x98\xed\x9a\xfc\xed\x58\x9f\ \xb5\x75\x12\x66\xb2\x64\xb6\x39\x08\x5a\xc3\xb7\x93\xe8\x23\xd8\ \x89\xea\x0a\x2e\x16\xef\x9e\x92\x4c\x4b\xe5\xcf\x7a\x23\x4a\x8b\ \xe2\x05\x2a\xfe\x7e\x83\x36\x47\xb1\x56\x85\x43\x4c\x18\xed\xe5\ \x91\x3d\xae\x40\xb0\xce\x15\x75\x1e\xa0\x9b\x3a\xbc\x5c\xbd\xa5\ \x32\x89\x93\x77\xc5\xa9\x57\x4e\xed\xc9\x7c\xec\x28\x35\x8d\x27\ \xa8\x16\x07\xd6\xac\xa8\xb6\x51\x82\xdb\xb1\x50\xbf\x36\x18\xc1\ \xfa\x25\xcb\x60\x53\xe1\x4e\xae\x16\x2b\x1d\x1b\x3c\x95\xfc\xbe\ \xad\x52\xf2\x8a\x2a\x4b\xb8\x89\xdf\x8c\xfd\x49\x58\xbb\x24\x59\ \x14\xf1\x71\x8c\x31\x51\x33\x43\x5e\xa0\x6c\x03\x29\xe1\x45\xdb\ \xc5\x90\xa7\x86\x90\x79\xe5\x85\x58\xb7\xba\xd9\x0a\xaf\xa2\x58\ \x38\x63\xa2\x36\xe0\xb4\xdb\xb3\x3b\xb4\xfb\xbb\x6b\xee\x50\x5b\ \xc6\xf0\xb3\xed\x91\x5c\xfd\x3a\xa1\x2c\x0c\xee\x3f\x92\x29\xd2\ \x0f\x2c\x7c\x1c\xdb\x0c\x93\x3d\x57\xd4\xae\xdb\xde\x39\x9a\xa7\ \x6c\x5d\x88\xfa\xb9\x94\x71\x5c\x99\xad\x55\xaf\x50\x9b\x6a\xb6\ \xb2\xb8\xde\xda\x4e\x9b\x2c\x5e\x44\xcd\xd3\x60\xb0\xe7\xaa\xbd\ \x12\xac\xae\xcd\xdf\x6e\xdb\xc5\x39\x3e\x35\xc2\xd6\xf1\x0b\x99\ \xff\x32\x57\x66\xdb\x7f\xf1\x68\xac\x5b\xba\x49\x16\x1a\x7a\xa1\ \x65\xbd\xb6\x9d\x2c\xfe\x19\x41\xf2\x9c\xf6\x95\x59\x96\x67\xbb\ \x85\x49\x35\x0e\xa8\xf3\xaf\x9d\x63\x77\x47\xdc\x53\x5c\x99\xad\ \x3f\x5a\xc9\x5b\xf3\x26\x59\xd0\xf5\x56\x2e\x3e\xd3\x0f\x41\x6a\ \xfc\x32\x43\x46\xa9\xbd\x0c\xf7\xed\x8d\xdf\xd8\x3e\x6e\x74\xf3\ \xcd\xee\x19\x24\x39\x27\x0a\xd4\x1f\x8f\xee\xd3\xeb\x41\x74\x9c\ \xda\x1d\xeb\x55\x3f\xb7\x15\x1f\xb0\xae\xd9\x2a\xd2\xeb\x08\x52\ \xe3\xfa\x73\xcc\x00\x75\xd3\x91\x74\xdb\x2c\xd4\x5b\x63\x07\xdb\ \x3e\x66\xb7\xc5\x3e\xc1\x4c\x3c\x28\x97\x3b\x5b\x33\x4e\xaa\xb7\ \x41\xc6\x49\x5d\x27\xc2\x76\xc6\xaa\x1f\xa7\xca\xea\xe8\xf5\x5f\ \xaa\xc3\x56\x7e\xa0\xf6\x4b\x1a\xa5\xe7\x7e\xd3\x1f\x11\x3b\xe4\ \x42\x73\x79\x6d\x57\x33\xdb\x89\x08\x50\xf3\xf2\x6f\xbf\x4a\x9b\ \xce\x7c\x09\x3f\xba\x09\xc7\xea\x35\xdc\x96\x88\x8a\xe7\x98\xcd\ \xa9\x33\xd5\x6a\x7e\x45\x91\x9a\x5a\xb4\x47\x5d\x94\xbd\x56\xcf\ \x7f\x9d\xa4\x99\xe6\x27\xdb\xdc\xea\x5b\x1b\xbe\xd6\xdb\xae\x93\ \x69\x52\x06\x08\xfd\x01\x87\x69\x1a\x62\xb6\x5f\x58\x39\x13\x21\ \x1e\x01\x6a\xbe\x84\x84\xe7\xd5\x55\x87\x53\x99\x35\x5b\xda\x41\ \xf1\x10\xa7\x77\x5b\x79\x65\xf7\xe4\xe9\x4a\x3d\x7f\x35\xfd\xd8\ \x01\x3d\xde\xf1\x99\x29\xaa\xb2\x77\xbe\x7e\x75\xfb\xfd\xcd\x93\ \xd4\x57\xd7\xfc\x57\x7d\x62\xf9\x7b\x6a\x9f\x85\xc3\xd5\xae\x73\ \x9f\xd1\xcd\xd3\xee\xe7\xe0\x8c\x68\x8e\x95\xcd\x36\x0d\x01\xf2\ \xce\x74\x23\xf7\x2e\x50\xcb\x4e\x95\xfb\xd5\x3c\x69\xa7\x7d\xb8\ \xbc\x48\xdd\x52\xb8\x4b\x2f\xc0\xf2\x93\x56\xe4\x6d\x51\x77\x68\ \x46\x41\x97\x16\xea\xee\xc6\x8f\x9c\x2c\xe6\xa2\xa8\x7b\xda\xd1\ \xfd\xfa\xfb\x56\x9d\xdd\x6d\xee\x2a\xce\xd0\xb3\x4b\xe6\x1f\x5a\ \xa5\x4e\xdd\x9b\xa8\x4e\xdc\x31\x43\xfd\xcf\x96\xc9\xea\x88\xb5\ \x9f\xeb\xb7\xe7\xa8\x87\xd9\x3d\xf3\x86\xa9\x7f\x8d\x19\x68\x99\ \x26\x96\x90\x57\x4a\xb5\xb2\xd9\x96\x21\x40\xde\xeb\xf7\x51\xbd\ \xd5\x21\xcb\xc7\xaa\xe1\xbb\xe7\xea\x1f\x2b\x4e\xf9\xa8\xbc\x1f\ \xed\xac\xb2\xca\xf2\xd5\x8d\x47\x76\xa8\x89\x59\x6b\x54\x79\x4f\ \x82\xfe\x73\x94\xaa\x71\x3d\xb6\xec\x1d\x3d\x47\xf6\x4f\x33\x07\ \x34\xab\x35\x0a\xd5\x3c\x25\x43\x21\xa3\x21\xe3\xbd\x2a\xaa\x97\ \xad\x63\x42\x85\x74\x68\x47\xba\xbe\x20\x4d\x3f\x03\x8d\xcb\x48\ \x56\xa3\xf6\x25\xea\x31\xa2\x9d\x29\xb5\xcf\xa1\x9d\x2f\x8d\x25\ \x9d\x87\xd2\x0e\x95\x7e\xde\x07\xcf\x7f\x49\xcf\x57\xa5\x7a\xc5\ \xd7\x4d\x7f\x10\xa6\xcb\xa6\x8a\x2d\x69\xb4\x6d\xa2\xc5\xf6\x08\ \x8e\x6f\x45\x5f\x85\xef\x8c\x7b\x5a\x5f\xbc\x2f\xaf\xfa\x58\xfd\ \x28\x35\x42\x5f\xe4\x64\x96\x75\x45\xff\xd9\x17\x3f\x46\xa9\xa1\ \x9b\xc3\xf4\x45\xff\x74\xf2\xbf\xd5\xde\xda\x4f\xd2\x3b\xe2\x9e\ \x34\xb4\x23\x02\xfd\xec\xbd\xc7\xe6\x09\xf0\xaf\xac\xfe\xd4\x80\ \x4b\x20\x55\x6a\x71\x55\xa9\xbe\x4b\xde\x5d\x9c\xa9\x1b\x39\xfd\ \x82\xf8\xe9\x6c\x96\x62\xfa\xd3\xf9\x2c\xc5\xf4\xa7\x33\xda\xa1\ \x2b\x42\xf5\x3f\x8e\xbd\x12\x5f\xd5\xff\x40\xfe\x74\x5e\xdb\x39\ \xba\x2f\x7a\x88\x19\x57\x23\xc1\x65\xbd\x02\x34\x91\xe2\xed\x08\ \x0e\x64\x37\x7d\x99\x36\x9d\x99\x8f\x95\x54\x88\x9e\x52\x0b\xe9\ \xd8\x83\x32\x5e\xc8\xc0\xe9\x7c\x38\xe6\xc0\x12\xdd\xc0\xe9\xb8\ \xe3\xbf\xdb\x14\xdd\xc0\x47\xae\xfb\x42\xff\x03\x4e\x06\xfe\xf0\ \xe2\xd1\x3f\x1b\x38\x0f\x1f\x3c\x5b\x24\xa5\xdb\xad\xd6\x6b\x5d\ \x2e\x0b\x7d\x11\x1c\xc8\x6e\x5a\x9c\xbd\x9e\x9b\xcb\x0c\x74\xdc\ \x84\x98\x9f\x7f\x6d\x57\xea\x63\xc5\x6a\x5f\xcf\x20\x38\x90\xdd\ \x74\xa8\xec\x30\x37\x66\x9b\xc3\x49\x76\x49\x0b\xd3\xbf\x9e\xb2\ \xde\x31\x82\x2c\xbc\x81\xc0\x40\x76\xfb\x60\x49\x85\xd0\x79\x81\ \x2e\x42\x20\xee\xe7\x1f\x23\x48\xaf\x5b\xf0\x18\x41\xfc\x04\xc1\ \x81\xec\x24\xaa\xcd\xcb\x13\x4b\x73\x36\x20\xee\xe7\xd7\x47\x90\ \x85\x8f\xac\x98\xf6\x35\x19\xc1\x81\xec\x24\xca\x00\xe0\x09\x74\ \x69\x68\xb0\xd4\xe2\x24\x2b\x9a\x6d\x1c\x0f\x83\xff\x50\xd2\xeb\ \xfa\x97\xdd\x65\xb9\x9b\xf4\xab\x94\x90\x31\xa2\x76\x42\x0b\xb3\ \xd6\xa8\x13\x7e\x9c\xa6\xdf\xe3\xf7\x47\xac\xe9\xdf\xe6\x89\x6f\ \xd2\x63\x60\xb0\xf5\x35\xdb\x8a\x66\x9b\x62\xe7\x41\xa7\xa4\x74\ \xca\x83\x04\xe6\x43\xe7\xa6\x54\x4c\xa5\x9d\x12\x64\x6a\xcc\xe9\ \x02\x08\x4f\x84\x6e\xf9\x01\xe6\x5a\x5f\xc9\x56\xcc\x46\x48\xb7\ \xf3\xa0\x47\xef\x5f\x04\xd7\xf3\x33\x9f\x6e\x53\x4c\x8d\xf9\xc1\ \xd2\x5c\xae\xc6\x97\x6a\x34\xc0\x5c\xeb\xe9\x47\x2b\x9a\xed\x21\ \xbb\x0e\x78\x97\x39\x43\xb8\xfa\x2a\x6d\x55\xa8\xfd\x0e\xd5\x1b\ \x30\x23\xe6\x54\x45\xeb\x4c\x0d\x5f\x31\xa7\xdb\x69\x30\xd7\x7a\ \xca\xb0\xe2\x31\x42\xbe\x5d\x07\x7c\xcc\x86\x89\x70\x3a\x8b\xf0\ \xce\xc6\x6f\x4d\xab\x89\xc0\x1b\x21\x0b\xfe\x09\x73\xad\x27\x21\ \xd7\x8a\x66\x7b\xcc\xae\x03\x4e\x1f\x0e\x80\x35\xa0\xe3\x1c\x33\ \x62\xfe\x7c\xca\x87\xdc\x8d\x2d\x0f\x85\xe0\xbd\x50\x91\x15\xcd\ \xf6\x84\x5d\x07\x9c\xce\x0a\x81\x35\x98\x93\x91\x6c\x4a\xcc\x3f\ \xdf\x3e\x95\xbb\xb1\xfd\x83\x81\x45\x8b\x18\x56\xa9\x15\xcd\xb6\ \x1a\x95\x9f\x80\xd1\x7c\xbf\x73\xb6\x29\x31\x4f\x38\x94\xc2\xd9\ \x79\x78\x15\x8c\xb5\xe1\x63\x84\x2a\x6b\x39\x6d\x68\xe8\x85\x76\ \x1e\x70\xaa\x49\xca\xdb\xc7\x12\xab\x42\xb5\x74\xcd\x88\xf9\xbe\ \xe3\xd9\x5c\x8d\x6b\x6e\xf9\x11\x18\x6b\xc3\xaa\x71\xa8\x8e\x0b\ \x2c\xe3\xb5\x9d\x65\xf1\xd7\x76\x1f\xf4\x25\x39\xeb\xe1\x74\x7e\ \x86\x8a\xc2\x98\xd1\x2e\x86\xea\x08\xb3\xde\x1f\xae\xa5\x6c\x3f\ \x8a\xba\x08\x9e\xe4\x88\x19\x78\x89\x65\xcc\x36\x30\xaa\x77\x5b\ \xbb\x0f\xf8\x1d\x71\x4f\xa9\x25\x55\x65\x70\x3c\x3f\x41\xed\xb6\ \xa9\x20\xba\x19\xb1\xa6\x82\xe8\xbc\x41\x5d\x28\x60\xac\x0d\xab\ \xfd\x94\x7b\xda\xc0\x6c\x4d\x16\x55\xc6\xa7\x6b\xba\xd5\x35\xa7\ \xe1\x7e\x26\x41\x1d\x0d\xe6\x65\xae\xd4\x1b\x21\x9a\x15\x67\x6a\ \x6f\xc3\x1b\x33\x0f\x2c\x86\xb1\xb2\x60\xb6\x3c\x1c\x23\xd4\xd5\ \xd6\xa2\xdd\x70\x41\x93\x18\x9f\x1a\x81\xec\x13\x13\xf8\x16\x75\ \x11\xd8\x38\x46\xb0\xfb\x07\xb2\xf3\x45\x6d\x46\x80\x39\x50\x26\ \x88\xd9\xf1\x9d\x9b\xb9\x82\xbb\x71\xa6\xee\xc0\x30\x56\x06\x3e\ \x90\x9d\x4d\xfd\x3a\xc5\x4b\x00\xa8\xf1\x22\x30\x07\xea\x8f\x65\ \x76\x7c\xf7\x94\x64\x72\x37\xce\xc3\xd7\x7c\x06\x63\x65\x22\xf5\ \xcb\xe6\x97\x1a\xce\xd7\x33\x2b\x42\xe1\x82\x26\x41\x1f\x26\xcd\ \x8c\x2d\x65\x3b\xf8\xaa\x85\x3c\x4b\x3c\x8e\xba\x08\x4c\x5d\x6a\ \x38\xc6\x4b\x00\xee\x8d\x7f\x16\x2e\x68\x12\x57\x45\xf5\x32\xfd\ \x23\x28\x8f\x74\x5f\xf0\x0a\x8c\xb5\x61\x15\x5a\xaf\x07\x99\x5b\ \x3c\xcc\x4b\x00\x78\xac\x08\xe5\xaf\x4c\x04\xb3\x63\x3b\x94\xd3\ \x5f\x2d\xb7\xc5\x3e\x01\x63\x65\xa7\x10\x8d\x7d\x4b\x2c\x36\xa4\ \xac\xb2\x7c\xb8\xa1\xc1\xec\x38\x76\xc0\xf4\xb8\x7e\x9c\x2a\x73\ \x39\xd6\x57\x47\xdf\x0f\x63\x6d\x58\x07\x51\x3c\xdc\xcf\xa2\x7c\ \x5b\x60\x2c\x8b\xb3\xd7\x9b\x1e\xd7\xd8\x8c\xe5\xdc\x8d\x33\xd5\ \x09\x86\xa9\xb2\x55\x3c\x7c\x25\x4f\x41\xa0\x36\x2d\xc0\x58\x22\ \xf6\xc4\x9b\x1e\xd7\x9d\xc5\x07\xb9\x1b\xe7\xbc\xf2\x42\x98\xaa\ \x67\x2d\xb7\x9e\xd9\x2a\x42\x2c\x4f\x41\x18\xbd\xfe\x4b\xb8\xa1\ \xc1\x7c\xb8\x75\x8a\xb9\x37\x85\x94\x60\xb5\x8a\xc3\x4c\x84\x1f\ \x8f\xee\x83\xa9\x7a\xea\xae\xab\x48\x31\x96\x33\x5b\xed\xa1\x7e\ \xe0\x29\x08\xfd\x92\x46\xc1\x0d\x0d\xe6\xe5\x55\x1f\x9b\x5e\xff\ \x82\x47\xe8\x48\x0c\xc6\xda\xb0\x9c\x6e\xf1\x7b\x0b\x66\x23\x48\ \xe3\x79\x0a\xc2\x4d\xb3\x1e\x85\x1b\x1a\xcc\x83\x49\x23\x4d\x8d\ \xe9\x93\xc9\x63\xb9\x1c\x67\xba\x11\x09\x63\xf5\xa8\x71\x56\xcc\ \xb3\x1d\xc5\xd5\xcf\x0b\xb7\xa4\x9e\xa8\xae\x80\x23\x1a\x08\x35\ \xda\x34\x33\xa6\x74\x6c\xc1\x23\xdf\xa5\xcf\x82\xa9\x7a\x92\x2c\ \xbe\x66\x3d\xb3\x95\xc5\xa1\xbc\x05\x82\x6a\x80\x02\xe3\xa0\x7c\ \x66\x33\xe3\x39\xeb\xc0\x52\x2e\xc7\xf9\x03\xd4\x45\x68\xc4\x6c\ \x85\x27\xad\x77\x66\x2b\x0b\x7d\x79\x0b\x44\xec\xc1\x65\x70\x44\ \x83\x38\x5a\x79\xdc\xf4\x78\xa6\x1d\xdd\xcf\xe5\x58\x8f\x58\xfb\ \x39\x4c\xd5\xd3\x2f\x58\x59\xea\x63\xbd\x33\xdb\x88\xa0\xdb\x78\ \x0b\xc4\x27\xdb\xdc\x70\x45\x9b\x7c\x21\x6f\xa7\x04\xe9\x7d\xb8\ \x78\x64\xf0\xb2\x77\x61\xac\x9e\x34\x45\xba\xc5\x72\x66\xdb\x36\ \xbc\x67\x20\x6f\x81\x78\x76\xe5\x38\xb8\xa2\x41\x2c\xcc\x5a\x63\ \x6a\x2c\xe9\x7c\x98\x57\x7a\x24\xa2\x2e\x82\x27\x51\x63\x04\x87\ \x15\xd1\x1e\xae\x84\xa7\x40\x08\x09\xcf\xc3\x15\x0d\x62\xca\xee\ \xb9\xa6\xc6\x92\x76\x77\xf8\x10\x09\x9d\x57\x17\xe1\xa8\xc3\xaa\ \xb8\x14\x71\x1b\x4f\xc1\xa0\x8a\x54\x35\x2a\x0a\xd2\x18\x81\xd9\ \xc5\xac\xe9\xdf\xe3\x95\x6b\xa2\x1f\x80\xb1\x36\x6c\xb6\x5b\xac\ \x6b\xb6\xb2\x38\x97\xb7\x80\x50\x0b\x68\xe0\x7b\x5e\x5c\x35\xde\ \xd4\x38\xce\xd8\x9f\xc4\xe5\x38\xd3\x8d\x39\x98\xaa\x47\xcd\xb6\ \xb2\xd9\x7e\xc9\x5b\x40\x56\xe4\x6d\x81\x33\x1a\xc0\x03\x8b\x5e\ \x33\x35\x8e\xa9\x45\x7b\xb8\x1c\xe7\xc3\xe5\x45\x30\x55\xcf\xfa\ \xdc\xca\x66\xfb\x1a\x6f\x01\x09\xdf\x3d\x17\xce\x68\x00\xb7\xc6\ \x0e\x36\xef\x23\x88\x22\xe9\xad\xd2\x79\x84\xd2\xdd\x60\xaa\x9e\ \x2e\x2e\x89\xaf\x58\xd9\x6c\xfb\xf1\x16\x90\x31\x1b\x26\xc2\x19\ \x7d\x0c\x9d\x83\x77\x9c\xda\xdd\xb4\x18\xfe\x23\xf6\x71\x6e\xc7\ \x7a\x39\xea\x22\x34\x52\x84\x46\x7c\xc0\xb2\x66\xdb\x56\xee\x76\ \x03\x6f\x01\x19\xb0\xf8\x0d\xb8\xa3\x8f\x39\x72\xb2\xd8\xd4\x18\ \x0e\x5a\xfa\x36\xb7\x63\x4d\xb7\xe6\x60\xac\x1e\xaf\xea\x76\xb6\ \xac\xd9\x9e\x6d\x69\x7e\x82\xa7\x80\xfc\x6d\xf6\x20\xb8\xa3\x8f\ \xd9\x56\xb4\xd7\xd4\x18\xfe\x7b\xf3\x24\x6e\xc7\xfa\xfb\x9d\xb3\ \x61\xaa\x0d\x67\x22\x1c\xb7\x5c\x0b\xf3\x06\x8a\x88\x6f\xe0\x2a\ \xe9\x99\xe3\xf3\x3e\xa3\x58\x90\xb5\xda\xd4\x18\x4e\xdb\xb7\x90\ \xdb\xb1\x1e\xb7\x35\x1c\xc6\xda\x90\x14\x61\x8d\xc3\xea\x68\x0f\ \x3a\x99\xb7\xc0\x50\xaf\x2c\xe0\x3b\x7e\xd8\x35\xc7\xd4\xf8\x6d\ \x2e\xdc\xc5\xed\x58\xbf\x86\xba\x08\xec\xd4\xb1\xad\x6f\xb6\xd2\ \x70\xde\x02\x13\x97\x91\x0c\x87\xf4\x21\xa1\x9b\xc3\x50\x2a\xd3\ \x24\x9e\x58\xfe\x1e\xcc\xb5\xe1\x0e\x0d\xff\xb4\xbe\xd9\xca\xa2\ \xc8\x5b\x60\x3e\xdb\x1e\x09\x87\xf4\x21\xcf\xa5\x8c\xc3\x99\xbb\ \x49\xf4\x4c\xfc\x17\xcc\xb5\xc1\x6a\x5f\xc2\x7d\x96\x37\x5b\x1e\ \x0b\xd2\xbc\x90\xf2\x11\x1c\xd2\x87\xf4\x5e\x38\xdc\xb4\xd8\x3d\ \xb2\x64\x0c\xd7\x63\x7d\x3b\xea\x22\x34\xa4\x9a\x80\xb0\x10\xa7\ \x83\x05\xb4\x87\xcd\xe1\x29\x38\x41\xf3\x5f\x82\x43\xfa\x90\x5b\ \x66\x3f\x6e\x5a\xec\xde\xdb\xf4\x1d\xd7\x63\xdd\x39\xba\x2f\xcc\ \xb5\x7e\x26\xc2\x21\x07\x2b\x04\xc8\xe2\x0c\x9e\x82\xd3\x69\x5a\ \x1f\x14\xa4\xf1\x11\x67\x6a\x6a\xd4\x2b\x22\x43\x4c\x8b\x5d\xe4\ \xde\x05\xdc\x8e\xf5\xa9\x33\xd5\xfa\x99\x35\xcc\xf5\xbc\x8f\x63\ \x8a\x30\x8d\x19\xb3\x75\xc9\xc2\xab\xbc\x05\x28\xbf\xa2\x08\x4e\ \xe9\x03\x0a\x2a\x8e\x9a\x1a\xb7\x8d\x47\x76\x70\x3b\xd6\x34\x67\ \x61\xae\x8c\x7e\x1c\xe3\xb9\x6b\xc3\xaa\xc3\xa9\x70\x4a\x1f\xb0\ \xa5\x70\x97\xa9\x99\x08\xa5\xa7\xca\xb9\x1d\x6b\x4a\x59\x84\xb9\ \x32\xd2\x9d\xc1\x23\x31\x03\x7f\xa5\x3d\x74\x29\x4f\x01\x8a\xd8\ \x13\x0f\xa7\xf4\x01\x09\x87\x52\x4c\x8b\xd9\x5f\x63\x06\x72\x3d\ \xd6\x54\xb1\x0e\xe6\x5a\x4f\x25\x74\x13\xd6\xc1\x12\xda\x43\x2f\ \xe5\x29\x48\xef\x6c\xfc\x16\x4e\xe9\x03\x26\xed\x8c\x35\x2d\x66\ \xfd\x17\x8f\xe6\x7a\xac\x67\x1f\x44\x5d\x84\xfa\x29\x5f\xe2\x22\ \x07\x6b\xb8\xdc\xc2\x7f\x78\x0a\xd2\xc0\xa5\x63\xe0\x94\x3e\xe0\ \xfd\xcd\x93\x4c\x8b\xd9\xdb\x1b\xbf\xc1\x1f\x36\x18\xec\xf9\xad\ \xcb\xc7\x32\x67\xb6\x01\x8a\xd0\x9b\xa7\x20\xf1\x5c\xa6\xcf\x97\ \x0c\x5b\xf9\x01\xb7\x47\x3f\x85\x27\x8b\x4d\xfd\xf7\x3e\x4a\x8d\ \x80\xb9\xd6\xcb\x44\x10\x43\x98\x33\xdb\x8e\x91\x3d\x7e\xab\x3d\ \x7c\x25\x4f\x05\x69\x78\x6d\x85\xed\x4b\xcc\xbc\xd1\xb4\xae\xe0\ \x47\xcb\xbc\x77\xe5\xe9\x53\xea\x7d\xf1\xcf\xe9\x6d\x6a\xcc\x62\ \xe4\xda\xff\xc1\x60\xcf\xcd\xaf\x2d\xef\x2c\x8b\xbf\x76\xb0\x88\ \xf6\x02\x4b\x78\x0a\xd6\xae\xe2\x0c\xb8\x65\x2b\xb9\x79\xd6\xa3\ \xa6\xc5\xab\xb8\xaa\xd4\x32\xef\xfd\xbf\x1f\xa3\x4c\x4f\x45\x7b\ \x32\x79\x2c\x0c\xf6\xdc\xe2\x33\x89\x0e\x56\xd1\x5e\x60\x14\x4f\ \xc1\x8a\xcf\x4c\x81\x5b\xb6\x82\xd3\x35\x67\xd4\xf6\x4a\xb0\x29\ \xb1\xfa\xd3\xcc\x01\x96\x79\xef\x83\xa5\xb9\xea\x95\x53\x7b\xea\ \xcf\x35\xe1\xc7\x69\xa6\xfd\xbb\xbd\x12\x5f\x85\xc9\x9e\x23\x69\ \x38\xb3\x66\x1b\x18\x11\xfc\x57\x9e\x82\xf5\x85\xb6\x3b\x01\xde\ \x63\x66\xf3\xc1\x87\x92\x5e\xb7\xcc\x7b\x53\x56\x84\x3f\x3e\xb4\ \xde\x11\xf7\x24\x0c\xb6\x8e\xda\x28\xc1\x37\x3a\x58\xc6\xa5\x88\ \x99\xbc\x04\xeb\xe5\x55\x1f\xc3\x31\x5b\xc1\xa6\xc2\x9d\xa6\xc5\ \xea\x4d\x8b\xf4\x8e\x8b\xcd\x58\x7e\xce\x73\xfd\x61\x5a\x1f\x7d\ \x87\x6f\x06\xd7\x4e\x47\x5d\x84\x3a\xda\xef\x60\x9d\x00\xb7\x10\ \xc6\x4b\xc0\x42\xe6\xbf\x0c\xc7\x6c\x05\x73\x33\x57\x98\x16\xab\ \x29\x16\xe8\x8a\x5c\x52\x55\xa6\xde\x38\xb3\xbf\x5f\xda\xaa\xa3\ \x2e\xc2\x79\xe7\xb5\xb2\xf0\x2d\xf3\x66\xeb\x52\x84\x87\x79\x09\ \xd8\x35\xd1\x0f\xc0\x31\x5b\xc1\x77\xe9\xb3\xb8\xba\x5e\x4d\x79\ \xbe\x0d\x3d\x1b\xf5\x05\x33\x1a\xb3\x6b\x50\x30\x50\xbf\xb6\x2f\ \xfb\x3b\xdb\xb0\x10\x27\x4f\x29\x60\x47\x4c\xce\x95\xb4\x13\xef\ \x6e\xfc\xd6\xb4\x38\x1d\xad\x3c\xee\xd7\x77\xa5\xac\x03\x4a\x17\ \x6c\xe8\xd9\xa8\x7b\x82\xd1\xa4\xa3\x2e\x42\xdd\x2c\x84\x93\x1d\ \x62\xc4\xcb\x1d\x76\x40\x7b\xa1\x38\x5e\x02\xb7\x36\x7f\x3b\x5c\ \xd3\x4b\x86\xae\x08\x35\x25\x46\x7f\x9c\xd1\xcf\xef\x59\x17\x54\ \x03\xb9\xb1\xe7\x33\xba\x64\xe7\xca\xbc\xad\x30\xda\x5f\x34\xcb\ \x61\x17\x02\x64\x69\x30\x2f\x81\x53\xf6\xce\x87\x6b\x7a\x49\xf7\ \x05\xaf\x98\x12\xa3\xbe\x8b\x46\xfa\xf5\x3d\xbf\x4d\x8f\x69\xf2\ \x19\xd3\x0d\x6e\x22\x1a\x7b\x70\x19\x4c\xf6\x97\xf3\xda\x81\xb6\ \x31\x5b\xda\xa2\x6b\x2f\x55\xc1\x43\xe0\xc6\x6e\xfa\x1e\xae\xe9\ \x25\x54\x85\xcb\x8c\x18\x8d\x5e\xff\xa5\xdf\xde\xf1\x50\xd9\x61\ \xf5\x77\x51\x3d\x9b\x7c\xc6\xc9\xbb\xe2\x0c\x7d\x0e\xd4\x45\xf8\ \x59\x65\x57\x85\xf5\xfd\x8d\xc3\x4e\xb8\x14\x21\x96\x87\xe0\x0d\ \x5a\xfa\x36\x5c\xd3\x0b\xaa\x6b\x4e\xab\xed\x94\x20\x53\x62\x14\ \xee\xc7\x4c\x84\xe6\x76\xb3\x7d\x66\x45\xa8\xa1\xcf\xf1\xe1\xd6\ \x29\x30\xda\xda\x2a\x5f\x33\x1c\x76\xc3\xa9\x88\x83\x78\x08\x5e\ \x97\x39\x43\xe0\x9c\x5e\x90\x73\xa2\xc0\xb4\x18\xad\xce\xdf\xe6\ \x97\x77\x5c\x90\xb5\xba\xd9\xcf\x48\x29\x61\x46\xf2\xda\xda\xcf\ \x61\xb6\xfa\xc7\x31\x69\x80\xed\xcc\x96\xb6\xea\xda\xcb\x9d\xb0\ \x7b\xf0\xe8\xba\xa9\x99\xc5\x44\xec\x02\x7d\x9d\x37\x2b\x46\x45\ \x95\x25\xa6\xbf\xdf\x89\xea\x0a\xf5\xa6\x16\xd6\x7d\xd8\x77\x3c\ \xdb\xb0\xe7\x19\xb2\x1c\x75\x11\x5c\x6e\xe1\x38\xb3\x85\x67\x9a\ \x91\x95\x30\x9b\x87\x20\xee\x2d\x39\x04\xf7\x6c\x21\x73\x32\x92\ \x4d\x89\xcd\x0d\x7e\xca\x44\xa0\x2e\xbe\x2d\x7d\x56\xf7\x9e\x04\ \xc3\x9e\xc7\xcc\xea\x6a\x16\x4e\xf9\x9a\xee\xb0\x2b\x6d\x23\xa5\ \x9e\x3c\x04\x91\x7e\x2e\x82\x96\xf1\xf5\x8e\x99\xa6\xc4\xe6\x81\ \x45\xaf\x99\xfe\x6e\xdb\x8f\xee\xf5\xaa\xc0\xce\x0b\x29\x1f\x19\ \xf6\x4c\x74\xdc\xc5\xbd\xd9\x46\x04\x05\xd9\xd6\x6c\xa9\xb7\x8f\ \xf6\x92\x19\x76\x0f\xe2\x97\x69\xd3\xe1\x9e\x2d\xc4\xd3\x6d\x2a\ \xd6\x33\x11\x9a\xca\xa9\xf5\x57\x8f\xb4\xab\xa3\xef\xe7\xdd\x6c\ \xf7\x39\x54\xc7\x05\x0e\x3b\x43\x6d\x27\xec\x1e\xc8\x7f\xad\xf9\ \x14\xee\xd9\x42\x9e\x4a\x7e\xdf\x96\x99\x08\x54\x83\xa1\x35\xcf\ \x4b\xa9\x62\xbe\x86\x0a\x95\x73\x9f\x85\xe0\x16\xde\x76\xd8\x9d\ \x76\x4a\xd0\xef\xb5\x97\x3d\x6d\xe7\x40\xf6\x48\x7c\x05\xee\xd9\ \x42\x82\xbd\xdc\xfd\x59\x39\x13\x81\x4a\x46\x52\x15\xaf\xd6\x3c\ \xef\xf4\xfd\x49\x3e\x7f\xae\xdc\xf2\x23\xbc\x9b\xed\xa9\x0e\xb2\ \x78\xa5\x83\x07\xb4\x97\x4d\xb0\x73\x30\xfd\x7d\x1d\x94\x45\xfe\ \x12\xf3\x88\x29\xb1\x31\xb3\xcf\x97\x2f\xfa\xa9\xbd\xba\xe6\xbf\ \x86\x9c\x21\x73\x6e\xb6\x71\x0e\x5e\x70\xb9\xa5\x07\xed\x1e\x50\ \x7f\x17\x3a\x61\x09\x2a\xf7\xe7\xa9\x28\x0b\xab\x7f\x04\x93\xb2\ \xd7\xf9\xe4\x99\x6f\x8b\x7d\xc2\xe7\xcf\xb6\x34\x77\x23\xe7\x47\ \x08\xd2\xfd\xdc\x98\xad\x23\xac\xcb\xc5\xda\x4b\xe7\xd9\x39\xa0\ \x1b\x0a\x76\xc0\x45\x9b\x09\x9d\x4b\xda\x29\x13\xe1\xe4\xe9\x4a\ \xf5\xd6\xd8\xc1\x3e\x7b\x6e\x3a\x8e\xf0\x25\x33\xf6\x27\xf1\x6c\ \xb6\x39\x8e\x64\xf1\x22\x07\x4f\x04\xc8\xe2\x5b\x76\x0e\x6a\xd4\ \xbe\x44\xb8\x68\x33\x59\x93\xbf\xdd\x94\x98\x8c\x5a\x37\xc1\x94\ \xf7\x19\xb7\x35\xdc\xa7\xcf\x4d\x45\x63\x58\x4c\xb3\xb3\x68\xd1\ \x99\x37\x1c\xbc\xe1\x9c\x76\x6f\x00\x15\x81\xb0\x6b\x50\x43\x37\ \x87\xc1\x45\x9b\x49\xcc\x81\x25\xb6\xc9\x44\xd8\x5d\x9c\xa9\x5e\ \x11\x19\xe2\xd3\xe7\x7e\xdd\xc7\x7f\x24\x68\x6e\x72\x6a\xb6\x25\ \x81\x51\xbd\xdb\x3a\x78\x44\x7b\xf9\xaf\xed\x1a\xd8\xc1\xcb\xde\ \x85\x8b\x36\x13\xea\x28\x6b\x87\xee\x0c\x54\x83\xb6\xf7\xc2\xe1\ \x3e\x7f\xee\xbb\xe6\x0e\xf5\xe9\x73\x52\x6a\x22\xa7\xdd\x73\xbf\ \x70\xf0\x8a\x33\xb2\xdb\xb5\x76\x4d\x03\xbb\x23\xee\x29\xb8\x68\ \x33\xa1\x9f\xf7\x76\xc8\x44\xa0\xa3\x23\x83\x3e\xe8\xf8\xb4\x03\ \x08\x55\xa6\xe3\xd0\x6c\xab\x5d\xe1\x41\xd7\x38\x78\xc6\xae\xa5\ \x17\xe9\xa7\x24\x95\x0d\x04\xd6\x58\xfc\x46\x67\x22\x90\x91\x1b\ \xd9\xad\x36\x3e\x33\x85\xb9\x9c\x66\x94\x52\xb4\x18\x81\x11\x41\ \x77\xdb\x35\xc0\xfb\x0d\xac\xda\x64\x27\xee\x8d\x7f\xd6\xf0\x58\ \xdc\xbf\x70\x84\xa1\xef\xf0\xcf\xd5\x9f\x18\xfa\xfc\x6f\x6d\xf8\ \xda\x67\xcf\x7a\xcb\xec\xc7\xf9\xfb\x30\x16\x29\xde\xee\x00\xfa\ \xd9\xed\x46\x3b\x06\x78\x51\xf6\x5a\x38\x69\x33\x30\x72\x47\x68\ \x46\x26\x02\xf5\xf3\x32\xba\x2d\x78\xb7\xf8\xe7\x7d\xf6\xbc\x57\ \x45\xf5\xe2\xcd\x6c\x57\xc3\x65\x6d\x5e\x0d\x6c\xe2\x8e\x19\x70\ \xd2\x26\xa0\x3a\xaf\x66\xc4\xc2\xa8\x36\x33\x54\x67\xe0\x76\x13\ \x2a\x68\xd1\xa5\x8f\x92\xaa\xb2\x56\x3f\x6f\x79\xf5\x49\xfe\xce\ \x6b\x15\x41\x82\xcb\x9e\xb3\xbb\x15\x56\xda\x2d\xc8\xc3\xd7\x7c\ \x06\x37\x6d\x02\xaa\xfd\xcb\x72\x26\xc2\x67\xdb\x23\x99\xfa\xa5\ \x64\xd6\x05\x12\x0b\x69\x39\xdc\xb5\xfe\x87\x32\xc9\x6e\x81\xa6\ \x34\x20\xd0\x38\xcb\x72\x37\x99\x12\x8b\x23\x06\x64\x22\xec\x2d\ \xc9\x52\x3b\x4e\xed\x6e\xda\x7c\x7a\x7f\xf3\xa4\x56\x3f\xf3\xe6\ \xc2\x5d\x5c\x99\x2d\x7d\x13\x82\xbb\x36\x7c\x76\xbb\xdc\x4e\x81\ \xbe\x01\x05\x69\x9a\x24\x72\xef\x02\x66\x33\x11\x1e\x5e\x3c\xda\ \xd4\xf9\x14\x32\xff\xe5\x56\x3f\x33\xed\x8e\x39\x2a\xa3\x98\x04\ \x57\xe5\x28\x33\xa1\xb8\xaa\x14\x8e\xda\x08\x1f\xa7\xca\x4c\x66\ \x22\xcc\x3e\xb8\xd4\x2f\xfd\xed\xca\x4e\x95\x5b\x32\x17\xd8\x82\ \xaa\x41\x06\x42\x53\x35\x13\xb4\xbf\x46\x76\x0a\xfa\xa6\xc2\x9d\ \x70\xd4\x46\x78\x65\xb5\xf1\xb7\x99\x7c\x7d\xdd\x95\xfe\x80\xde\ \x38\xf3\x61\xbf\xcc\xa7\xe5\xb9\x9b\x5a\xf5\xec\x13\xd2\xa2\x79\ \x31\xdb\xf9\x70\xd3\xa6\x76\xb7\x8a\xd0\x95\xfe\x2a\xd9\x25\xe8\ \x46\x14\x7f\xb6\x13\xfd\x92\x46\x19\x1e\x83\xb0\x9d\xb1\x3e\x7d\ \xe6\x37\x37\x4c\xf4\xdb\x7c\x1a\x9f\x1a\xd1\xaa\x67\xf7\xa6\xf1\ \x24\x83\x5d\x73\xcf\x60\x57\xdb\xfc\xcc\x04\xc5\x2e\x81\xff\x60\ \xcb\x64\x38\x6a\x23\xdc\x11\xf7\xa4\xe1\x31\x48\x39\xbc\xd5\x67\ \xcf\x4b\xa5\x33\xcd\xa8\xbd\x6b\xd4\x47\xd7\x17\x57\x8d\xe7\x61\ \x57\x1b\x0e\x17\x6d\x26\xbf\x9d\x1c\xdc\x91\x7a\xba\xdb\x21\xf0\ \x4f\x26\x8f\x85\xa3\x36\xc2\xef\xa2\x7a\x32\x93\x89\x40\x45\xce\ \xef\x9e\x37\xcc\xaf\xf3\x89\xb2\x1f\x2a\x4f\x57\x79\xfd\x0e\x03\ \x16\xbf\x61\xfb\xca\x5e\x97\x47\xf6\xb8\x02\x2e\xda\xb2\xcc\x84\ \xf7\xec\x10\x7c\x5f\x57\x6c\xb2\x13\xd4\xcd\xc2\xe8\xf1\xbf\x7e\ \xfa\x43\x3e\x7b\xde\xaf\xd2\xa6\x5b\x62\x4e\xb5\xa6\x8f\x9a\x90\ \xf0\xbc\xbd\xaf\xe5\xba\xa5\x37\xe1\x9e\x2d\xa4\xb3\x2c\xfe\xda\ \x0e\x6d\xcf\x69\x27\x42\xed\xac\x41\x7d\xcc\xe8\x85\xd5\xc7\x47\ \xb9\xce\x19\xa5\x79\xa6\xec\xc2\x9b\xa3\x4f\xb7\x29\x5e\xbf\x07\ \xb5\x47\xb7\xb1\xd9\xee\x75\xc4\x0c\xbc\x04\xee\xe9\x05\x4e\x45\ \x1c\x64\x87\x49\x40\x0b\x15\xd4\x27\x31\x6b\x0d\x33\x99\x08\x03\ \x96\xbc\x69\x99\xf9\x44\x1f\x15\xbd\xc5\xcc\x4b\x18\xa6\x4b\x16\ \xfb\xc1\x35\xbd\x45\x75\x5c\xe0\x74\x8b\xeb\x58\x9f\x04\x4b\x72\ \xd6\xc3\x59\x1b\x80\xea\x15\x18\x3d\xf6\x3f\xec\x9a\xd3\xea\xe7\ \x9c\x97\xb9\xd2\x52\xf3\x89\x76\xd8\x55\x67\xaa\x5b\xfc\x1e\xc7\ \xab\x4e\xd8\x39\x03\x61\x25\x0c\xb3\xb5\x79\xb7\x91\xe2\xcd\xda\ \x40\x56\xb1\x3c\x11\xbe\x4d\x8f\x81\xb3\x36\x80\x19\xed\x59\x5a\ \x9b\x89\x40\xc5\x5f\xfe\x34\x73\x80\xe5\xe6\xd4\xc6\x23\x2d\x6f\ \x28\x4a\x25\x3f\xed\x79\x4e\x2b\x9e\x6c\xa3\x04\xdf\x08\xb7\xf4\ \x49\xdd\x04\xe9\x03\x96\x27\xc3\xc8\xb5\xff\x83\xb3\x36\xc0\xb3\ \x2b\xc7\x19\x3e\xf6\x05\x15\xc7\x98\xcd\xa9\x6d\x4c\x74\x39\xc1\ \x9b\xb4\x35\x9b\xee\x6c\xdf\x83\x4b\xfa\x8a\x89\xbd\x2f\xd5\x76\ \xb7\xe9\xac\x4e\x06\xb3\x5a\x68\xb3\x46\xaf\xc4\x57\x2d\x9d\x89\ \xb0\xe9\x48\xba\x5f\x73\x6a\x1b\xd3\xc0\xa5\x63\x5a\xfc\x3e\xf3\ \x0f\xad\xb2\xa3\xd1\xa6\x72\xd7\x9a\xdc\xf0\x9b\x65\xb2\x78\x17\ \xdd\x0c\x61\x71\x42\xd0\xcf\x50\x50\x9f\x9b\x67\x3d\x6a\xd9\x4c\ \x04\x6a\x69\x74\x8f\x9f\x73\x6a\x1b\xd3\x1f\xa6\xf5\x69\x71\x96\ \x8b\xbc\x27\xc1\x6e\x46\x7b\xba\xad\x12\x74\x27\xdc\xd1\x88\xec\ \x04\xb7\xf8\x3d\xab\x13\xa3\xb4\x95\x05\x44\xec\x06\x19\x05\x15\ \x56\xb1\x6a\x26\xc2\x77\xe9\xb3\x2c\x3f\xa7\x52\x8b\xf6\xb4\xe8\ \x9d\xcc\xac\xbd\x6b\x4e\x51\x70\x69\x22\x5c\xd1\xa8\xdd\x6d\x54\ \xef\xb6\xda\x20\x67\xb3\x38\x31\xb6\x16\xed\x86\xc3\xd6\x21\xb7\ \xfc\x88\x65\x33\x11\x72\x4e\x14\xa8\x9d\xb4\x9d\xa3\xdd\x3e\xbc\ \x8e\xb1\xe8\xf9\xb3\x97\x3a\xd8\x31\xb2\xc7\x6f\xe1\x8a\x46\x7e\ \x2c\x93\xc5\x7e\x2c\x4e\x8e\x99\x07\x16\xc3\x61\xeb\x40\x5f\xd3\ \x8d\x1e\x73\xea\x0d\xe6\x0d\x4f\x2c\x7f\x8f\x89\x39\x45\xcf\x69\ \xb5\x0f\x92\xe6\x75\xcb\x15\xfa\xc2\x0d\x4d\x39\x4e\x90\xbe\x63\ \x6d\x72\x7c\xb8\x75\x0a\x1c\xb6\x0e\x73\x32\x92\x2d\x99\x89\xb0\ \x20\x6b\x35\x33\x73\x8a\x1a\x65\x9e\xa9\xa9\x69\xf6\xbb\x3d\x94\ \xf4\xba\x5d\x72\x6a\xbf\x82\x0b\x9a\x7b\x95\x37\x8d\xa5\x09\x32\ \x74\x45\x28\x1c\xb6\x0e\xd4\x0c\xd3\x6a\x99\x08\xd4\x7c\xf2\x26\ \x83\x3f\xda\xf9\x5a\x3b\x8b\x0f\x36\xfb\xfd\xee\xb6\xf0\x07\xbf\ \x16\x18\xed\x76\xca\x4e\x82\x0b\x9a\x9a\x7b\xdb\xed\x56\x96\x2e\ \x3b\xd0\x97\x6d\x60\xde\xf9\xa1\x37\xa5\x08\xdf\xdd\xf8\x2d\x73\ \xe6\xd3\x92\xae\xc1\x37\xce\xec\xcf\xfc\xe5\x85\x40\xb7\x74\x13\ \xdc\xcf\x3f\xb5\x13\xc6\xb0\x32\x51\xae\x9c\xda\xb3\x45\x3f\xf9\ \xec\xce\x90\xe5\x63\x8d\xbd\x48\xb2\xee\x8b\x16\x3d\xcf\xb6\xa2\ \xbd\x6a\x3b\x25\x88\x39\x03\x7a\xa6\x99\xbf\x98\x68\xee\xb1\xf8\ \x7e\xe7\x65\x1f\xbc\x0e\xd7\xf3\x17\xa1\xa1\x17\xba\x14\x61\x19\ \x2b\x93\x25\xab\x2c\x1f\x2e\x7b\x16\x31\xe1\x05\xcb\x74\x67\xa0\ \x34\x34\x29\xe1\x45\x26\x0d\x88\x76\xab\xcd\xa1\xa8\xb2\x84\xf5\ \x5d\x6d\x22\xd5\x4a\x81\xe9\xf9\x73\x77\x1b\xd9\xed\x5a\x2d\x18\ \xc7\x58\x98\x30\xcb\x5a\xd9\x3f\xca\x4e\x50\xe7\x61\xab\x64\x22\ \x50\x8a\x18\xcb\x46\xb4\xef\x78\x76\x93\xef\xb8\xa7\x24\x93\xe5\ \x77\x2c\x0c\x88\x0c\xb9\x1a\x6e\x67\x05\xc3\x8d\x08\x0a\xd2\x02\ \x52\x6d\xf5\x49\x33\xc9\xc7\xbd\xb0\x58\x85\x3a\x0d\x04\xb8\x25\ \x83\x33\x11\x8e\x36\xeb\x59\xf2\xca\x0b\xf5\xdb\x58\x2c\x9b\xad\ \x7b\x4f\x42\x93\xef\x49\x05\xc7\x19\x7d\xbf\x53\xd4\x75\x1b\x2e\ \x67\xad\x74\xb0\x37\xad\x3e\x71\x46\xf9\xb8\xcb\x2b\xab\x1c\x28\ \xcd\x31\x74\x9c\xaf\x9b\xfe\x60\xb3\x9f\x85\xb2\x44\x58\xff\x42\ \x4f\x7d\xc5\x9a\x22\xce\x84\x54\x3b\x9c\xd3\xf2\x82\xea\xb8\x20\ \xc0\x2d\xcc\xb4\xf2\xc4\xa1\x3c\x47\xa0\xea\x65\x0f\xad\x90\x89\ \xb0\xd0\x84\xe2\xe5\x66\x88\xd2\xd5\x9a\x22\x7c\xf7\x5c\x16\xd3\ \xbc\x14\x18\x9b\x45\xe9\x10\x23\x5e\xae\x05\x69\x87\x55\x27\x0f\ \xb5\x24\x01\xaa\x1a\xbd\x7f\x91\xdf\x33\x11\xca\xab\x4f\x1a\x5e\ \x08\xc7\x4c\x1d\x2a\x3b\xdc\xe8\xfb\x7e\xb2\xcd\xcd\xda\x3b\xa5\ \xe1\x3a\xae\xc5\xa1\x22\xc2\xd4\x61\xd3\x92\x57\x0c\xdd\x92\x9e\ \x38\xcf\x3b\x46\x17\x44\x69\x4e\x26\x82\x19\x85\xcb\xcd\xd4\xf4\ \xfd\x49\x8d\xbe\x2f\x1d\x61\x31\xf4\x3e\xc5\x6d\xa7\x8a\x7f\x84\ \x9b\xb1\x71\x7e\x3b\xc0\xaa\xe5\x18\xa9\xc9\x21\xef\xbc\xb6\xf6\ \x73\x43\xc7\x78\x45\xde\x96\x46\xff\xfd\x1f\x8f\xee\x33\xbc\xe2\ \x98\xd9\x7a\x75\xcd\x7f\x1b\x7d\xe7\xa7\x93\xff\xcd\xca\xd1\xc1\ \x19\x97\x22\x3d\x04\x17\x63\xcb\x70\x5f\xb0\xe2\x64\x9a\x7d\x70\ \x29\xf7\x66\xfb\xc8\x92\x31\x7e\xcb\x44\xa0\xe4\xfe\xe0\xf9\x2f\ \xd9\xae\x88\xf6\x6d\xb1\x4f\x34\x3a\xe6\x54\xdb\x97\x89\x7c\x5a\ \x45\x7c\x0e\xee\xc5\x20\x2e\x59\xfc\xd2\x6a\x93\xe9\xe3\x54\x99\ \x7b\xb3\xbd\x6b\xee\x50\xbf\x65\x22\x44\xec\x89\xb7\x6d\xd3\xc3\ \xc3\xe5\x45\x1e\xdf\xfb\xce\xb8\xa7\x59\x78\x87\xcf\xe1\x5a\xac\ \x42\x37\xcc\xdc\x62\x9c\x95\x26\xd4\xb0\x95\x1f\x70\x6f\xb6\x46\ \xd6\x8a\x6d\x2c\x13\x81\xcc\xe8\xea\xe8\xfb\x6d\x6b\xb6\xb1\x07\ \x97\x79\x7c\x77\xfa\x23\x64\xed\x14\x2f\x21\x96\xd6\x2b\x4c\x8b\ \x61\x3a\xc5\x74\xbd\x2c\x40\x16\xd7\x5b\x65\x52\x75\x8b\x7f\x9e\ \x6b\xa3\x35\xba\x9d\x76\x63\xcd\x35\x9f\x4b\x19\x67\x5b\xa3\x6d\ \xac\x33\x05\xb5\xf8\x31\xfa\x12\x49\x2b\xaf\xe2\xae\xa5\x75\x0a\ \xb7\xb2\x01\x81\x51\x62\x27\x2d\xa8\x39\x56\x98\x58\x57\x45\xf5\ \x52\x6b\x54\x7e\x0b\xd2\x50\x49\x40\x7f\xdc\xd2\x5b\x9c\xbd\xde\ \xd6\x46\x4b\xa2\xe3\x99\x86\xa0\x33\x6c\x0b\x3f\x77\x56\xfb\x29\ \xdd\xaf\x82\x4b\xd9\x08\x4a\x25\xd1\x02\x9b\x67\x85\x09\x46\x2d\ \x61\x78\xc5\x68\xd3\x6b\x28\x13\xe1\xe4\xe9\x4a\xfd\x03\x92\xdd\ \xcd\x96\x76\xaf\x47\x4e\x16\xd7\x7b\xff\x1d\xc7\x0e\x58\x35\xf3\ \x20\xd7\xe9\x0e\xba\x1e\xee\x64\x43\x02\x22\xc5\x9b\xb5\x20\x17\ \xf9\x7b\x92\x25\xe7\x6d\xe6\xd6\x6c\x8d\xfe\x40\x95\x5f\x51\xff\ \x23\x11\x75\xc9\xb0\xbb\xd1\xfe\xa4\xf8\xcc\x94\x7a\xef\x4f\xf3\ \xcd\x82\xcf\x9a\x4f\x39\xf1\x70\x25\x7b\x67\x28\xfc\xc3\xdf\x55\ \xc2\x5a\x52\xf0\xd9\x6e\x8c\xdb\x1a\x6e\x68\x9b\x98\xf3\xd9\x5d\ \x9c\xa9\x5e\x11\x19\xc2\x8d\xd9\xbe\xb5\xe1\xeb\x7a\x63\x40\xe9\ \x86\x16\xdb\xd1\x1e\x75\x4d\x91\x6e\x81\x1b\xf1\x70\x86\xab\x08\ \x5d\xb5\xa0\x97\xf9\x6b\xb2\xbd\xb9\x61\x22\xb7\x66\xfb\xd2\xaa\ \xf1\x86\x8d\x6b\xaf\xc4\x57\xcf\xf9\xb7\xe8\x6c\xbc\x37\x23\xf9\ \xa5\x46\x7e\x80\xfd\x7e\xe7\x6c\x2b\x3d\x63\x69\xa0\x2c\xde\x05\ \x17\xe2\x08\xa7\x5b\x0a\xa6\x36\x1b\xfe\x98\x70\xfd\x17\x8f\xe6\ \xd6\x6c\x1f\x58\xf4\x9a\x69\x99\x08\x53\xf7\x26\x72\x65\xb4\xa4\ \x40\x45\x52\x4b\xaa\xca\x4c\xfb\x35\xd1\xd2\xb6\x36\x54\x0e\x15\ \xee\xc3\xe3\x91\x82\x22\x3c\xec\x8f\x3e\x66\x7f\x9b\x3d\x88\x5b\ \xb3\xbd\x35\x76\xb0\x29\x99\x08\xf4\xa1\x88\x8e\x15\x78\x33\x5b\ \x52\x52\xf6\xba\x73\xc6\x7c\x84\xc1\xd7\xa3\x9b\x79\x74\x50\x85\ \x6b\xb8\xbc\x1b\x6e\xa4\x24\x98\x7d\xa4\x40\xbb\x8f\x8a\xea\x4a\ \xee\x8c\x96\x7e\xd6\x77\x9c\xda\xdd\xb0\x71\x4d\x38\xf4\xcb\xc7\ \xa1\xe1\x6b\x3e\xe3\xd2\x68\x49\x54\x64\xa7\x2e\x4f\x2c\x7f\xcf\ \xef\x47\x07\x2e\x77\x50\x37\xb8\x0d\xa0\x2c\x85\x7b\xb5\xbf\xbc\ \xc7\xcd\x9c\x80\x69\x47\xf7\x73\x67\xb6\x05\x15\xc7\x0c\x1d\xd3\ \xbe\x8b\x46\xea\xad\x87\xc6\xa7\x46\x58\x3a\x89\xdf\x8c\x52\x9e\ \x4b\x73\x36\xe8\xed\x72\x16\x64\xad\xd6\xdb\xba\xfb\xf1\x79\x4a\ \xb4\x58\xdc\x03\x97\x01\x75\xcf\x70\xbb\x98\x99\x16\x36\x27\x23\ \x99\x3b\xb3\xdd\x52\xb8\x8b\x5b\x03\xe4\x54\x85\xce\x88\xa0\xdb\ \xe0\x2e\xc0\x53\x5a\xd8\x11\xb3\xaa\xeb\x53\x87\x59\x9e\xd4\x65\ \xce\x10\x18\x10\x3f\xca\x0b\x8c\x08\xfe\x2b\x5c\x05\x34\xf2\xd1\ \xac\xdb\xad\x4e\xb7\x78\x18\x8b\x05\x82\xbc\xbf\x19\x16\xa0\x04\ \xff\x1d\x6e\x02\x9a\xa4\xfd\xd4\xfb\x7e\xa7\x4d\x9a\xcd\x58\x34\ \x10\xd4\x62\x6d\xec\x20\x8b\x57\xc2\x45\x40\xb3\xa1\xfe\x47\xda\ \xc4\x89\xc7\xe2\x81\xa0\x66\x4a\x16\xe7\xa2\x6f\x18\xf0\x8e\x98\ \x81\xbf\x72\x29\xd2\x44\x2c\x24\x08\x6a\xd2\x68\x43\xa9\xc3\x35\ \x4c\x03\xb4\xf2\x1c\x57\x1c\xa1\x4d\xa8\xd3\x58\x54\x10\x54\x4f\ \xd5\x4e\x59\x78\x1e\x2e\x01\x7c\x99\x1a\xf6\xa8\x36\xb1\x4e\x60\ \x71\x41\xd0\xcf\x2a\x73\xc9\x52\x7f\xb8\x03\xf0\x39\x6d\xe5\x6e\ \x37\x68\x13\x6c\x07\x16\x19\x04\x89\x69\x68\x37\x0e\x0c\xa5\x43\ \x8c\x78\xb9\x36\xd1\x66\x63\xb1\x41\xbc\x2a\x40\x91\x62\x68\x1d\ \xc0\x0d\x80\xf1\xa8\x8e\x0b\x9c\x8a\x38\x06\xe7\xb8\x10\x6f\xe7\ \xb3\xf4\xfd\x02\x1f\xc2\x80\xe9\x04\xca\x62\x2f\x7f\x17\x22\x87\ \x20\x93\x2e\x2a\x14\x50\xd1\x26\xac\x7a\xe0\xe7\x73\x5c\x61\x03\ \x16\x23\x64\x57\x51\xf7\x5b\x67\x44\xc8\x75\x58\xed\xc0\xff\x84\ \x86\x5e\x58\x9b\x1e\x66\x7e\x6d\x5c\x08\x32\xb6\x06\x2d\x8e\x0d\ \x80\x25\x77\xb9\xc2\x1d\xda\x04\xdd\x83\x45\x0a\xb1\xff\x11\x4c\ \xdc\x4d\x95\xf0\xb0\xaa\x81\x65\xe9\x14\xd3\xf5\x32\xcd\x70\xbf\ \xc2\x82\x85\x18\xde\xd1\x7e\x45\xf3\x18\xab\x19\x30\x41\x80\x5b\ \x78\x9c\xea\x79\x62\xe1\x42\x2c\x7d\x04\xa3\xcb\x3b\x58\xbd\x80\ \x3d\xc3\x0d\x0b\x71\x6a\xa6\x1b\xa6\x4d\xe4\x1a\x2c\x64\xc8\xc2\ \x26\x7b\x86\x76\xb3\x34\x5f\xb1\x6a\x01\xdb\xa6\x2b\x0b\xf7\xd1\ \x19\x18\x16\x35\x64\xc1\x4c\x83\x5d\xd4\x16\x0a\xab\x14\xd8\xea\ \x2c\x37\x40\x16\x3f\xc1\x45\x08\xc8\x32\x99\x06\xb2\x18\xda\x59\ \x16\x7f\x8d\xd5\x09\x6c\x7a\x96\x2b\xdd\xa3\x4d\xf6\x54\x2c\x76\ \xc8\x8f\xda\x1c\x28\x8b\x77\x61\x35\x02\xfb\x43\xd7\x7d\x65\x61\ \xa0\x4b\x11\x33\xb1\xf0\x21\x13\x95\x11\x20\x0b\x7d\xb1\x00\x01\ \x77\x5c\x15\xd6\xf7\x37\x67\x6b\x2c\x94\xc1\x08\x20\x03\x55\x4a\ \xf3\x0c\xe9\x5c\x80\x7b\xda\x29\x41\xbf\x77\x29\x52\x24\xb2\x16\ \x20\x5f\x67\x19\x50\x36\x4c\xfb\x29\xdd\xaf\xc2\x2a\x03\xa0\x0e\ \x54\xe8\x43\x5b\x24\xab\x61\x12\x90\x0f\x8c\x76\x25\xb2\x0c\x00\ \x68\xde\x47\xb4\xe5\x30\x0c\xa8\xc5\x52\x84\x65\x81\x8a\xd0\x15\ \xab\x08\x80\x16\xe0\x54\xc4\x10\x6a\x0d\x0d\x13\x81\xb0\x93\x05\ \xc0\x68\x42\x43\x2f\x0c\x90\xa5\xc1\xda\x62\x4a\x87\xa1\x40\x0d\ \xb5\xa7\xd1\xfe\x28\x0f\xa2\x79\x82\xc5\x02\x80\xaf\x8e\x17\xb4\ \x9d\x8b\xb6\xb8\x12\xf0\x21\x8d\x7b\x51\xfc\x13\xb0\x93\x05\xc0\ \x60\xce\x16\x2c\xff\xca\xe9\x16\x4f\xc2\x78\xb8\x52\x05\xc5\x1d\ \x8d\x16\x01\x30\x19\x97\x2c\x76\xae\x2d\xe7\x28\x1c\x87\x11\xd9\ \x5a\x25\x9a\x26\xb8\xc2\x83\xae\xc1\xac\x07\xc0\x9f\x4c\xec\x7d\ \xa9\x7e\x23\xcd\x2d\x2e\xc1\x11\x83\xad\x8e\x0a\x96\x50\x5c\x1d\ \x31\x03\x2f\xc1\x24\x07\xc0\x82\x47\x0c\xb5\x05\x6f\x84\x02\x18\ \x16\x93\xca\xa2\x02\x31\x38\x2a\x00\x80\x11\x6a\x3b\x46\x48\x4f\ \x9d\xdd\xed\x56\xc3\xc4\xac\xdd\x22\x3c\xc0\x2d\x24\x05\x28\xe2\ \x10\x54\xe1\x02\x80\x61\xa8\x06\x03\x15\x20\x39\x7b\x25\xf8\x04\ \xcc\xcd\x12\x3a\x41\xf1\xa0\xb8\x50\x7c\x30\x4b\x01\xb0\x19\x6d\ \x94\xe0\x76\x4e\x45\x7c\x8e\x76\x52\xd8\xf1\x9a\xae\x53\x4e\xb7\ \xb8\xd0\x25\x4b\xc3\xda\x86\xf7\x0c\xc4\x6c\x04\x80\xa3\xa3\x86\ \xda\x5b\x6a\xc2\x57\x28\xf7\x68\x60\x27\x04\x59\xfc\x84\xc6\x19\ \x55\xb7\x00\x00\x3a\xce\x88\x90\xeb\x34\xd3\x1d\x51\x7b\xce\x2b\ \x54\xc1\x2c\xbd\x52\x25\x5d\x38\x70\xba\xa5\x17\x68\x3c\x31\xab\ \x00\x00\x4d\x1e\x37\xb8\xdc\xd2\x83\x01\x6e\xe1\x53\xcd\x3c\x56\ \xe1\x02\x85\xc7\x9d\x2b\x8d\x4b\x8a\xb6\x73\xfd\x98\xce\x5f\x71\ \x3c\x00\x00\x68\x1d\x13\x7b\x5f\x1a\x18\x11\x74\xb7\x66\x2e\xa3\ \x5d\xb2\x38\x57\xdb\xf9\xe6\x72\x5a\xf0\x85\xde\x3b\x4e\xd3\x28\ \xbd\xba\x16\x72\x60\x01\x00\x46\xd3\x7e\xca\x3d\x6d\xb4\x9f\xcb\ \x5d\x6a\x53\xcc\xe8\x26\x9b\x5e\x8b\xd7\x2e\x5d\x27\xca\x6a\xdf\ \x87\xde\x4b\x7a\x8a\xde\x93\xde\x17\x51\x07\x00\x58\x83\xb0\x2e\ \x17\x07\x28\xc1\x7f\xd7\xcc\x69\x00\xed\xfe\x34\x7d\xe3\x54\x84\ \x05\x67\xab\x96\x55\x58\xb0\xd6\x00\x3d\xd7\x7c\x4d\x5f\xbb\x14\ \xe9\x75\x97\x2c\xf5\x0f\x90\xbb\xfd\x8d\xde\x03\xc1\x04\x00\x30\ \x4b\x07\x59\xbc\x92\x7e\x7e\xeb\x79\xbf\xb2\x38\x94\x0c\x99\xce\ \x3b\xb5\xff\x19\x7e\xf6\xe7\x79\x4a\xad\x01\x0a\x07\x6a\x25\x16\ \x6a\x3a\xe6\xb9\xfe\x83\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\ \xff\xf7\x57\x6a\xff\xd9\x1c\x4d\x93\x35\xe3\x1f\xaf\x1b\xbf\xf6\ \xef\xd1\xbf\x4b\x9d\x65\xe9\x39\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\x2f\x9b\xa0\xe9\xec\ \x30\x8e\x92\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x64\xb4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x02\xe8\x00\x00\x02\xe8\x08\x06\x00\x00\x00\x2a\x5a\x00\x90\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\x42\x28\ \x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03\x09\x08\x1e\ \x34\x68\x66\xd9\x7c\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\ \xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x64\x34\x49\x44\x41\x54\x78\ \xda\xec\x9d\x07\xb8\x55\xc5\xb9\xbf\xf7\x69\x1c\x0e\xe7\xd0\xcb\ \x01\x54\x7a\x95\xa6\x20\xbd\x8b\x14\x45\x40\x10\x51\x14\xa4\x05\ \x14\x14\x14\x41\x41\x44\xaa\x54\xe9\xe7\x68\xd4\xab\x26\xc6\x24\ \xb6\xc4\x44\x4d\xa2\x26\x1a\x7b\x89\x35\xb1\x77\x05\xd9\x6b\xa7\ \xdc\x14\x4d\x8c\xc6\x36\xf7\x1b\xf6\x4a\x82\x57\x84\xb5\xf6\xd9\ \x6b\xd6\xac\xb5\xdf\xf7\x79\xde\xe7\xb9\xf7\x7f\xff\xf7\x46\xcf\ \x9e\xf9\xe6\xb7\x67\xcf\x7c\x93\x48\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x40\x2e\x51\x28\xd6\x75\x6d\x22\xb6\x12\x3b\x8a\x3d\xc4\ \x3e\xe2\x71\xe2\x28\xf1\x78\xf7\xbf\xd6\xf6\x75\xff\xe7\xda\xa3\ \xdc\xff\x9d\x7a\xee\xff\x2d\x00\x80\xaa\x52\x4d\xac\xef\xd6\x96\ \xee\xfb\xd5\x9b\x7e\xfb\xd5\xa1\xd1\xe2\x08\xf7\xbf\xee\xed\xfe\ \xcf\xdb\xbb\xff\x3b\x8d\xf7\xab\x6b\xf9\xfc\x39\x01\x00\xc0\x06\ \x6a\x8a\xdd\xc4\x93\xc4\x05\xe2\x2a\xb1\x42\xfc\x81\x78\x8f\xf8\ \x94\xf8\x8e\xf8\x81\xa8\xb2\xec\x3f\xc5\xdf\x8b\x6f\x8a\x0f\x8a\ \x37\x89\x3b\xc5\xe5\xe2\x2c\x71\x8c\xbb\x90\xd6\xe3\x63\x02\xc8\ \x29\x1a\x89\xbd\xc4\xb1\xe2\x1c\x71\x85\x5b\x97\x6e\x13\x1f\x16\ \xdf\x12\xff\x28\x7e\x1c\x40\x5d\xfa\x8b\x5b\x93\x7e\x23\xfe\x42\ \xfc\xbe\x5b\x97\x56\x8a\xe7\xba\x75\xa9\x93\x58\x83\x8f\x09\x00\ \x00\xaa\x42\xb3\x44\x7a\xf7\x68\xb6\xb8\x5e\xbc\xd9\x5d\x7c\xfe\ \x14\xc0\xe2\x16\x94\x1f\x8a\x2f\x88\x77\x8a\xbb\xc4\x0b\xc4\x13\ \xc4\xe6\x7c\xbc\x00\x91\x43\xef\x54\xb7\x16\xc7\x89\x17\x8a\x57\ \x88\x3f\x17\x5f\x16\x3f\x8a\x50\x5d\x4a\x89\x8f\xbb\x1b\x1a\x6b\ \xc5\x99\xe2\xb1\x89\xf4\x2f\x8c\x00\x00\x00\xfb\xa8\x9e\x48\xef\ \x38\xeb\x45\x42\xef\xf8\x3c\x90\x48\xef\x06\xa9\x98\xfb\x81\xbb\ \x48\x5e\x93\x48\xff\x0a\xa0\x7f\xc6\xae\xc3\x70\x00\xb0\x82\x86\ \x89\xf4\xd1\xb7\x45\xe2\xf5\x89\xf4\xaf\x72\xff\xc8\x81\xba\xa4\ \x77\xf8\x7f\x25\x5e\x2e\x4e\x15\xbb\x8a\x45\x0c\x07\x00\x80\x78\ \x93\x97\x48\xff\xcc\xaa\x77\xc5\xbf\x23\xbe\x24\x7e\x96\x03\x8b\ \x9e\x57\xbf\x14\x5f\x17\x6f\x74\x43\xbb\x3e\x0b\x5f\xca\xb0\x01\ \x08\x94\x5a\xe2\x20\x71\xb1\x78\x8b\xf8\x2e\xb5\xe8\x2b\xfe\x4b\ \x7c\xde\xdd\x4c\x98\x26\xb6\x65\xc8\x00\x00\x44\x1b\x7d\x09\x4a\ \x9f\x7d\xdc\x28\x3e\x9a\x23\x3b\x50\x41\xf8\xb6\x78\xb5\x78\xa6\ \x78\x04\xc3\x0a\xa0\x4a\xb4\x48\xa4\xcf\x88\x7f\xcf\x9d\x5b\xd4\ \x18\xff\xfe\xdd\xad\xe9\x1b\xdd\x1a\xcf\xaf\x7f\x00\x00\x16\xa3\ \x3b\x13\xe8\xb3\x8c\x9b\xc5\xa7\x13\xec\x8e\x07\xe1\xe7\xe2\xb3\ \x89\xf4\x4f\xd0\xfa\x58\x4c\x75\x86\x1d\xc0\x41\x29\x73\x43\xa4\ \xbe\xb0\xa9\x7f\xb5\xfb\x92\x3a\x92\x75\x3f\x11\x1f\x4b\xa4\xcf\ \xb4\xeb\x5f\xfe\x0a\x18\x76\x00\x00\xe1\xa2\xcf\x8f\x2f\x49\xa4\ \xcf\x2d\x06\xd1\x9d\x00\x0f\x1d\xd8\x9f\x71\x77\xb2\x74\x60\xa7\ \x15\x24\xb0\x51\x90\x9e\x0b\x1b\xdd\xb9\xf1\x05\x75\xc2\xb8\x1f\ \xb9\x6b\xc2\x79\x09\x2e\xc5\x03\x00\x18\x41\x9f\x23\xd7\xad\xc4\ \x36\x89\x2f\xb2\x10\x59\xe7\x1e\x71\x87\x38\x20\x41\x7f\x64\xc8\ \x1d\x0a\xdd\x50\x7e\x55\x22\xdd\x06\x95\x5a\x60\x8f\x5f\xb8\x5f\ \x94\x56\x8b\x5d\x18\xaa\x00\x00\xd9\xe5\x98\x44\xfa\xe8\x0a\x17\ \xa8\xa2\xa3\x23\x56\x8a\x43\x13\xfc\xe4\x0c\xf1\x43\xef\x94\xeb\ \x07\xc6\xae\x15\xff\x97\xf9\x1e\x19\x5f\x75\xc3\x7a\x27\x86\x30\ \x00\x40\x66\xe8\x17\xee\xf4\xcf\xc4\x5c\xa4\x8a\x47\xfb\x34\x1d\ \xd6\xf5\xf9\xd0\x3c\x86\x36\x44\x14\xfd\xab\xd0\xb0\x44\xba\xf5\ \xe1\xdf\x98\xd7\x91\x57\xf7\x90\xd7\x8f\x29\x75\x64\x68\x03\x00\ \x1c\x9c\x96\x89\xf4\x45\x9f\x37\x59\x3c\x62\xab\x7e\xd1\x70\x4d\ \x22\xfd\x6c\x38\x40\x14\x38\x4a\xdc\x22\xee\x65\xfe\xc6\x56\x7d\ \x64\xf2\xe2\x04\x0f\x26\x01\x00\xfc\x07\xfd\x10\xc5\xc9\xe2\x3d\ \x09\x2e\x54\xe5\x9a\x0f\x89\x93\xc5\x62\xa6\x01\x58\x86\x7e\x03\ \x40\x3f\x60\xf6\x34\xf3\x34\xa7\xd4\xdd\xbf\x6e\x4f\xa4\x8f\x2f\ \x71\x8f\x06\x00\x72\x12\xfd\x6c\xf5\x86\x44\xfa\xe9\x67\x16\x86\ \xdc\xf6\x4f\x89\x74\xeb\xc6\x76\x4c\x0b\x08\x99\x6e\xe2\x15\x09\ \x8e\xb0\x60\x22\xf1\x9e\x78\xa9\x78\x18\xd3\x02\x00\xe2\x8e\x3e\ \x7f\x3c\x52\xfc\x65\x82\xdd\x72\x3c\xf0\x6b\xa6\xf7\x8b\x27\xb2\ \x7b\x05\x06\xd1\x5d\x58\x4e\x13\x9f\x64\x0e\x62\xe2\xc0\xbb\xea\ \x3f\x15\x07\x32\x55\x00\x20\x6e\xe8\x07\x6d\xbe\x95\x48\x3f\xd4\ \x41\xc1\x47\x2f\xea\x7b\x08\x0b\xc4\x9a\x4c\x1f\x08\x88\xda\xe2\ \x62\x71\x37\xf3\x0d\x3d\xaa\x8f\x3c\xe9\x63\x79\x45\x4c\x1f\x00\ \x88\x32\x8d\xc4\x55\xe2\x1f\x28\xec\x98\xa1\x1f\x24\xd2\xbd\xd5\ \x5b\x33\x9d\x20\x4b\xe8\xcb\xe8\xdb\xc5\x0f\x99\x5f\x98\xa1\xfa\ \xcd\x87\x0b\xc5\x3a\x4c\x27\x00\x88\x12\xba\xc7\xec\xff\x24\x78\ \xdd\x13\xb3\xfb\x33\xf3\xf7\x12\x9c\x53\x87\xcc\xd1\xdd\x58\xf4\ \x05\xc0\x2f\x99\x4f\x98\x25\xf5\x97\xbc\x9d\x62\x2b\xa6\x17\x00\ \xd8\x1e\xcc\x6f\x63\x01\xc4\x00\xfd\x5c\xfc\x7e\x82\xde\xc5\xe0\ \x9d\x1e\xe2\x1d\xd4\x25\x0c\x78\x03\x41\xf7\xc7\x6f\xc1\x74\x03\ \x00\x9b\x68\xeb\x86\x26\x2e\x7e\xa2\xc9\x27\xbc\x6f\x22\xa8\xc3\ \x41\xe8\x25\xfe\x8c\xb9\x82\x06\xfd\x97\xf8\x6d\xf1\x70\xa6\x1f\ \x00\x84\x89\xde\x2d\xb8\xce\xdd\x3d\xa0\x38\x63\x58\x3b\xea\xdf\ \x11\x9b\x31\x1d\xc1\x45\x7f\x69\xe3\x28\x0b\x86\xa9\x3e\xde\xa9\ \xef\xce\x94\x33\x1d\x01\xc0\x24\xba\xe8\x5c\xe1\xee\x16\x50\x8c\ \xd1\x06\x3f\x49\xa4\x2f\xfe\x35\x64\x7a\xe6\x2c\xfa\x4b\xda\xf5\ \xee\x97\x36\xe6\x04\xda\xe0\x3f\xc4\x8d\x89\x74\xc7\x20\x00\x80\ \xc0\xa8\x96\x48\xb7\x25\xe3\x11\x0f\xb4\xf9\xd2\xd6\x6a\xb1\x8c\ \xe9\x9a\x33\xd4\x77\xbf\x9c\x7d\xc2\xf8\x47\x4b\xfd\xbd\x38\x5b\ \x2c\x60\xba\x02\x40\xb6\x19\x9f\x48\xf7\xa6\xa6\xd8\x62\x14\xdc\ \x2b\x4e\x49\xa4\x1f\xc7\x82\x78\xa2\x1f\x18\x3a\x47\xfc\x33\xe3\ \x1d\x23\xe2\xef\xc4\x63\x99\xba\x00\x90\x0d\x74\x6b\xb2\x5f\x53\ \x58\x31\xa2\x3e\x26\x1e\xc3\x34\x8e\x1d\x43\xc5\x17\x18\xdf\x18\ \x51\xf5\xcb\xa4\x6d\x99\xc6\x00\x90\x09\xfa\x9c\xb9\xee\x65\x4e\ \x67\x16\x8c\x43\xc7\x17\x7d\x99\xb9\x31\xd3\x3a\xf2\xe8\x7e\xd3\ \xb7\x31\xa6\x31\x06\xea\x3b\x5c\x5b\x13\x3c\x76\x04\x00\x1e\xd1\ \x47\x02\xe6\x88\x7f\xa5\x80\x1e\xda\xea\x62\x3b\xb1\xaf\x38\x46\ \x9c\x2e\x5e\x20\x5e\x26\x5e\x29\xde\x2a\xde\xe3\xfa\x2b\xf1\x09\ \xd7\xe7\xc4\x57\x0f\xe2\xf3\xe2\xc3\xe2\xcf\xc5\x5b\xc4\x6b\xc4\ \x6d\xe2\x12\x71\x96\x38\xce\xfd\xcf\xd4\xff\xd9\xf5\xf8\x1c\xbc\ \xfa\x17\x71\x56\x82\x63\x2f\x51\x44\x1f\x67\xd1\x2f\x37\x7e\xc4\ \x38\x3e\xb8\x32\xb8\x55\x03\xb1\xbd\x38\x40\x9c\x20\xce\x16\x97\ \x89\xdb\xc5\x6b\xdd\x9a\x72\xb7\xf8\xa8\x5b\x6b\x0e\x56\x8b\x9e\ \xd9\xaf\x6e\xdd\xbb\x5f\x3d\xbb\x49\xbc\x42\x5c\x2b\x2e\x14\xcf\ \x14\x4f\x10\xfb\x88\xad\xc5\x62\x3e\x0b\xaf\x3a\xe2\x44\xa6\x38\ \x00\x1c\x0c\xa9\xe9\x89\x87\x28\x98\x5f\xb5\x89\x38\x44\x9c\x21\ \xae\x70\xc3\xf2\x2f\xc4\x17\x44\xc7\x12\xdf\x16\xef\x17\xaf\x17\ \x57\xba\x5f\x14\x06\x89\x87\xf1\xf9\x1d\xc8\x07\x12\xfc\xbc\x1c\ \x25\xba\x8b\xcf\x31\x6e\xff\x6b\xbe\xd8\x4c\x3c\x56\x9c\x29\xae\ \x11\x6f\x10\xa5\x78\xab\x77\x2d\xaa\x4b\x3a\xfc\xdf\x25\x7e\x5b\ \xbc\x44\x9c\x26\x0e\x14\x1b\xf2\x19\x1e\x48\xfd\x98\x16\xfd\xd3\ \x01\xe0\x2b\x14\x89\xcb\x13\xe9\xde\xad\x39\x5b\x20\x6b\x89\x3d\ \xc5\xa9\xe2\x7a\xf1\x76\x77\x07\xc9\x89\xb8\x6f\xb8\x5f\x28\x76\ \x8a\x73\xc5\xfe\xee\xbf\x6b\x8e\x2f\x86\x7a\xac\x2f\x13\x8b\x99\ \xfe\xd6\x52\x2a\x5e\x9e\xc8\xf1\x77\x16\xf4\x2f\x64\x83\xc5\x73\ \xdd\x5f\xe5\x7e\xe9\x7e\x21\x8f\x7a\x5d\x7a\xd1\xfd\x85\x51\x7f\ \xb9\x38\x5d\x3c\x5a\x2c\xa5\x2e\x7d\x90\x48\x5f\x7c\xce\x67\xfa\ \x03\x40\x1f\xf1\xc5\x5c\x2c\x86\xfa\x67\xd8\xc9\xe2\x0e\xf1\xf1\ \x18\x2c\x78\x7e\x4c\xba\xff\xce\x57\x89\x67\x89\xdd\xc4\x82\xdc\ \x5c\x10\x5f\x4e\x70\x89\xd4\x46\x24\x93\x26\xde\xc9\xb5\xf1\x58\ \xe4\x6e\x12\xcc\x17\xaf\x13\x9f\xca\xc1\xba\xa4\x7f\x05\x90\x6f\ \x65\x6a\xa2\x78\x44\x6e\x5f\x6e\xef\x44\x19\x00\xc8\x4d\x4a\xc4\ \x9d\x89\x1c\xb9\x04\xaa\xc3\xe7\x51\xee\x59\xcc\x6b\x2d\x3b\x9e\ \x62\x8b\xaf\x8b\xdf\x13\xe7\x89\xdd\xc5\xc2\xdc\x59\x0c\xf5\x0e\ \xed\x2a\xf7\x97\x24\x08\xbf\x2e\x6d\xcb\x95\xba\x54\x4d\xec\xed\ \x9e\xe1\xbe\x25\x26\x3b\xe3\xd9\xf6\x59\xf7\x97\x83\xe9\x62\x47\ \xf7\x8c\x7d\x8e\xd4\xa5\x7f\x51\x97\x00\x72\x8f\xfe\xe2\xbb\x71\ \x2f\x70\x87\xbb\x17\x2a\x59\xf8\x32\xf3\x1d\xf7\x6f\x77\x8e\xd8\ \x35\x37\x16\xc6\x97\xc4\x1e\x94\x87\xd0\x18\x12\xf7\xba\x94\xef\ \xee\x90\x5f\xe2\x5e\xb4\x7c\x9f\x3a\xe3\xdb\x37\xdd\xf3\xf6\x53\ \xdc\xfb\x41\x89\xdc\xa8\x4b\x5d\x29\x0f\x00\xf1\x46\x9f\x6b\xd3\ \x2f\x81\xc6\xf2\xc5\x3d\xbd\xf8\x1d\xe3\x76\x3a\xb9\xd7\xfd\xb9\ \x94\x05\x2d\x7b\xea\x2e\x0e\x17\xbb\xbf\x44\xc4\x38\xac\xeb\xb3\ \xe9\x92\x9f\x78\xf1\xcf\x20\xfa\x6f\xbd\x32\x11\xd3\xb3\xe6\x05\ \x6e\x67\x93\x95\x6e\xf7\x26\x6a\x49\xf6\xd4\x5f\x70\xee\x14\xcf\ \x17\xbb\xc4\x3b\xa4\xff\x3d\x91\xee\x40\x05\x00\x31\xe4\x30\xf1\ \x57\x71\x2c\x5e\x47\xb9\x8b\xdf\xb3\x2c\x58\x46\x7f\x76\x5e\xe7\ \xb6\x71\x8b\xe9\x51\x98\x07\x13\x74\x54\x30\xc1\x11\xe2\xc3\x71\ \x1b\x3f\xfa\xe8\xca\x70\x71\xab\x7b\x19\x92\x9a\x61\xc6\xc7\xdd\ \x0d\x9a\x0e\xf1\x0d\xea\xfa\x0d\x80\x7a\x94\x0d\x80\xf8\x30\x41\ \xfc\xdf\x38\x15\xaa\x0e\x6e\x21\x7e\x9c\x45\x29\x74\x7f\xe7\xf6\ \x42\x3e\x3a\x7e\x8b\xa1\x9e\x33\xe3\x28\x1f\x81\x31\x5e\xfc\x73\ \x9c\x7e\xc1\xeb\xeb\x5e\x70\x7c\x95\xba\x10\xba\xbf\x16\xcf\x13\ \x5b\xc4\xaf\x2e\xbd\x9f\x48\xbf\xa4\x0b\x00\x11\xa6\x9a\x78\x65\ \x5c\x0a\x53\x43\xf7\x3c\xf4\x83\x2c\x3e\xd6\xfa\x98\xb8\x28\x5e\ \x67\x43\xbf\x14\x2b\x13\x5c\xd4\xca\x26\xa5\x71\xaa\x4b\x2d\xdd\ \x33\xe5\x4f\x33\xff\xad\xf5\x1e\xb7\x5f\x7c\xed\x78\xbd\x8e\xbc\ \x3a\x41\x3b\x46\x80\x48\xa2\x7f\x9e\x7f\x22\x0e\xbb\x52\x83\xdc\ \xc7\x81\x76\xb3\xd0\x44\xea\x6c\xa8\xbe\xc8\x75\x5c\x7c\xda\x37\ \xea\xc7\x8d\xca\x29\x2b\x55\xa6\x83\xf8\x6a\xd4\xc7\x83\x6e\x87\ \x38\xd6\xed\xe3\xcd\x5d\x97\x68\x5d\x7c\xd7\xef\x41\xf4\x8a\x4f\ \x50\xff\x99\x58\x97\xb2\x02\x10\x1d\x86\x88\x7f\x88\x72\xe1\x29\ \x77\x7b\x01\x3f\xc1\xa2\x12\x79\xf5\xce\xe2\x05\xf1\xd8\x55\xdf\ \x2b\xf6\xa3\xbc\x64\x8c\x3e\xd2\xf2\x61\xd4\x77\xcb\x97\xd3\xa6\ \x35\x16\x3e\xe8\xb6\xdd\xad\x1b\xfd\xba\xf4\x96\xd8\x8d\xf2\x02\ \x60\x37\xfa\xe7\xae\x8d\x89\xf4\xcf\xf2\x91\x2c\x36\xc7\xb8\x3b\ \xaf\x7b\xa3\xfc\xd8\x46\x61\xa1\x4a\xd5\xae\xad\x52\x4d\x9b\x2a\ \xa7\x6d\x5b\xe5\x74\xeb\xa6\x92\xfd\xfa\x29\x67\xc4\x08\xe5\x8c\ \x1b\x97\x76\xd2\x24\xe5\x4c\x9e\xac\x9c\x29\x53\x94\x33\x6b\xd6\ \xd7\x4c\x9d\x71\x46\xfa\x7f\xae\x3d\xe9\x24\xe5\x8c\x1c\xa9\x9c\ \xc1\x83\x95\xd3\xab\x97\x72\xba\x76\x4d\xff\xdf\x6d\xdc\x58\x39\ \xc5\xc5\x91\xf9\xbb\xec\x75\x3f\xdb\x81\xd1\x5e\x0c\x3f\x4f\xa4\ \x7b\x13\xf3\xd3\xb2\x77\xf4\xf1\xa0\xab\xa3\xfa\x99\xe7\xb9\x17\ \x3e\x7f\x4a\xa8\x8d\xa5\xbb\xdd\x5d\xf5\x88\x5f\x2c\xd5\x9d\xd9\ \xce\xa3\xd4\x00\xd8\x49\x4d\xf1\xd6\xa8\x16\x18\x7d\x8c\xe5\xe6\ \x08\x05\x70\xa7\xbc\x5c\x39\x47\x1e\xa9\x9c\x41\x83\x94\x33\x7e\ \xbc\x72\x66\xcf\x56\xce\xd2\xa5\xca\xd9\xb2\x45\x39\x57\x5c\x61\ \xd4\xe4\xd6\xad\xca\x59\xbe\x5c\x39\xf3\xe7\x2b\x67\xea\x54\xe5\ \x8c\x1a\xa5\x9c\x1e\x3d\x94\xd3\xac\x99\x72\x4a\x4a\xac\xfc\x1b\ \xea\xb0\x73\xbc\x7b\x84\x29\xa2\x63\xf6\x87\x62\x0d\xca\xce\x21\ \xd1\x1d\x27\xee\x8e\xe2\x67\xac\x8f\xb1\x9c\x2c\xfe\x92\x10\x9b\ \x13\xea\x0d\x84\xeb\xdc\x4d\xa2\x08\x07\xf5\x2b\x12\xe9\xbb\x67\ \x00\x60\x09\x6d\xc4\x57\xa2\x56\x4c\x74\x7b\x3e\xfd\x9c\xf3\x7d\ \x36\x17\xee\x3a\x75\x94\xd3\xa9\xd3\xbe\xdd\xef\xd4\xcc\x99\xfb\ \x82\x70\xaa\xa2\xc2\x78\x08\xaf\x92\x1b\x37\x2a\xe7\xfc\xf3\xd3\ \xbb\xf6\xfd\xfb\x2b\xa7\x45\x0b\x95\xaa\x56\xcd\x8a\xbf\xef\xc3\ \x6e\x08\x8a\xe8\x39\xf5\x67\x13\xb4\x62\x3c\x18\xfa\xbc\xf9\x9b\ \x51\xfb\x5c\xab\xb9\xaf\x56\x72\xe9\x33\x77\xd5\xbd\xd5\x47\x45\ \xf7\xbd\x87\xc7\xc5\xc6\x94\x1f\x80\xf0\xd1\xaf\x82\xfe\x29\x4a\ \x05\x44\xef\x9a\x8e\x17\x1f\xb5\xad\x30\x97\x95\x29\xa7\x73\x67\ \xe5\x8c\x19\xa3\x9c\x05\x0b\x94\xb3\x79\x73\xb4\x82\xb8\x1f\x2b\ \x2b\x95\xb3\x62\xc5\xbe\x1d\xf7\x7d\xc7\x6f\xf4\x71\x99\xbc\xbc\ \x50\xbb\xbf\x4c\x8a\x66\x4f\x75\xf9\xc7\x4f\xf4\xa2\x0c\x7d\x8d\ \x91\xe2\x5f\xa3\xf4\x59\x16\xbb\x9d\x3e\x78\x4c\x08\xff\xed\x2f\ \xdd\xe3\x4d\x11\x0c\xe9\xef\x89\x9d\x29\x43\x00\xe1\x71\x5a\x22\ \xfd\xf2\x61\x64\xce\x72\x9e\xe0\xf6\xa7\xb5\xa1\xf8\xa6\x9a\x34\ \x51\xa9\x81\x03\x55\x52\x42\x6a\x6a\xe5\xca\xf8\x86\x71\xaf\xea\ \x2f\x24\x67\x9f\xad\x9c\x61\xc3\x94\x73\xc4\x11\xa1\x04\x76\xdd\ \xd7\xfe\xa4\xe8\x1d\x7d\xd1\x73\xf0\x74\xca\xd1\x7f\xd0\x67\x61\ \x3f\x8f\xd2\x51\x96\xa9\xe2\xf3\x04\x52\xfc\x06\x7f\xe6\x1e\xc3\ \x8c\x58\x48\xff\x9b\x38\x9c\x72\x04\x60\x1e\xfd\x1c\x79\x64\x2e\ \x83\xea\x76\x7b\xf7\x86\x5d\x68\xf5\xb1\x8e\xae\x5d\x55\x4a\x5f\ \xbc\x5c\xbb\x96\x40\xee\x25\xb0\x7f\xeb\x5b\xca\x91\x2f\x31\x4e\ \xc3\x86\x46\x3f\x2b\x7d\xec\x69\x58\xf4\xfa\xa5\x5f\x9a\xe3\x35\ \x49\x5f\x9c\xad\x88\xd2\x86\xc1\x38\xf7\xd7\x1b\x42\x28\x7a\xf1\ \x76\xb1\x77\xb4\xea\xd2\xa7\xe2\x6c\xe2\x12\x80\x19\x74\x47\x84\ \xeb\xa3\x52\x20\x8e\x74\x7b\x05\x87\x56\x54\x1b\x34\x48\xef\x08\ \xcf\x9f\xaf\x52\x3b\x77\x12\xba\xab\xa2\xbe\x88\x3a\x66\x8c\x4a\ \xea\xcb\xa7\x86\x76\xd7\x7f\x12\xbd\x17\x4a\xf5\xa3\x46\x05\x39\ \x58\x97\x8a\xc5\x9b\xa3\xf2\x39\x0d\xe0\xf2\x27\x56\xc1\xeb\xa2\ \xf7\x42\xa9\xee\xee\x96\x47\x7c\x02\x08\x8e\x3a\xe2\xfd\x51\x28\ \x08\xfa\xd5\xcf\xcb\xdd\x07\x6b\x42\xb9\xd8\x79\xec\xb1\xca\xb9\ \xf0\x42\x42\x75\x50\x5e\x76\x99\x72\x4e\x39\x45\x39\x2d\x5b\x06\ \x1e\xd6\xf5\x43\x30\x15\xd1\xea\xa3\x7e\xbb\x58\x92\x63\x75\xe9\ \x81\x28\x7c\x36\xba\x8f\xf9\x77\x09\x98\x98\xa5\xf6\x8c\x97\x8a\ \xb5\xa2\x53\x97\x6e\xcd\xb1\xba\x04\x60\x8c\xfa\x89\x74\xd7\x08\ \xeb\x3b\x20\x9c\x23\xbe\x6e\xba\xf5\xa1\xbe\xe0\xa9\x5b\x1e\x2e\ \x5c\x98\xbe\x00\x49\x88\x36\x66\x6a\xf5\x6a\xe5\x8c\x1e\xad\x9c\ \x46\x8d\x02\xfd\x8c\xdf\x16\x17\x89\x25\xd1\x58\x0c\x1f\x4d\xa4\ \x5b\x0c\xc6\x1d\xdd\xc5\xe6\x05\xdb\x3f\x0f\x1d\xa2\x56\xf1\x1a\ \x31\x06\xe0\x8b\xe2\x99\xd1\xe9\x44\xa5\xeb\x52\x6d\xe2\x14\x40\ \xf6\x68\x22\xbe\x68\xfb\xe4\x1f\x2d\x3e\x69\xb2\x38\xe6\xe7\xa7\ \x5b\x20\xce\x99\xa3\x9c\x5d\xbb\x08\xcb\x36\x84\xf5\x0b\x2f\xdc\ \x77\xf1\x36\xc8\xfe\xeb\x4f\x47\xa7\xb3\xc2\x2b\xee\xdc\x8d\x2b\ \xed\xc5\xf7\x6d\xff\x1c\xc6\xf3\xf2\x27\x1a\xf0\x7e\xf7\xe8\x54\ \x04\xea\xd2\x33\x62\x03\x62\x15\x40\xd5\x69\x2b\xee\xb6\xfd\x67\ \xe3\x1f\x9b\xec\xbe\xa2\x5f\xe8\x3c\xe5\x14\x95\xd2\xfd\xbd\x09\ \xc5\x76\xaa\xcf\xfb\xeb\x57\x51\xbb\x74\x49\x7f\x91\x0a\x60\x1c\ \xdc\x26\xb6\x8a\x46\xbb\xb3\xd6\x31\xac\x4b\x3d\xc5\xbf\xd8\xfc\ \xb7\x6f\xcf\xeb\x9f\x18\x82\xfa\xb5\xe4\xc6\xf6\xd7\xa5\xd7\xc4\ \x23\x88\x57\x00\x55\xdb\xa1\xda\x63\xeb\x24\xd7\x5d\x10\xce\x10\ \x5f\x33\x51\xf8\xf4\x39\xe7\xce\x9d\x55\xea\x9c\x73\x38\xc2\x12\ \xb5\x5d\xf5\x4b\x2f\x55\xa9\xc1\x83\xd3\x5d\x74\xb2\x3c\x2e\xde\ \x10\x67\xd9\xdf\x96\xf1\x1d\xb1\x65\x8c\xea\xd2\x51\xe2\x1f\x6d\ \xfd\x7b\xeb\xb6\x89\xe7\x89\xef\x10\x16\x31\x24\x7f\x27\x8e\xb5\ \x3f\xa4\xbf\x41\x48\x07\xc8\x8c\x6e\xe2\x1f\x6c\x9d\xdc\x2d\xdc\ \x1d\x4c\x23\xad\x11\x87\x0e\x55\xce\x9a\x35\x84\xdd\x88\x9b\xdc\ \xba\x35\xfd\xcb\x47\xbd\x7a\x59\x1f\x27\xfa\x17\x9c\xe6\x76\x2f\ \x86\xfa\x8b\x76\x3b\x76\xce\x83\xef\x1a\x45\x77\x16\xb4\xc5\xef\ \x88\xe5\xfc\xc2\x07\x10\x2b\xfa\xd8\xba\x08\xea\x9d\xca\xb3\xdc\ \x0b\x7b\x81\x16\xb7\x1a\x35\x54\x6a\xe4\x48\x95\xda\xb0\x81\x70\ \x1b\xb7\x1d\xf5\x9d\x3b\x55\xea\x8c\x33\x54\x32\xcb\x97\x4a\xdf\ \x12\x67\xd8\xfd\x3c\xb7\x7e\x75\x34\xca\xaf\xfb\x0d\x10\x3f\xb0\ \x75\xd7\xfc\x02\x2e\x81\xa2\x85\xea\x5f\x98\x4f\xb5\x3b\xa4\x27\ \xc5\x0e\xc4\x2e\x80\x43\xd3\x5b\xfc\xd0\xc6\x89\xdc\xd8\x44\x4f\ \xf3\x9a\x35\x95\x33\x61\x82\x72\xb6\x6d\x23\xcc\xc6\xdd\x8a\x0a\ \x95\x9c\x3e\x5d\x39\x4d\x9a\x64\x75\x0c\xfd\xc8\xee\xdd\xf4\x3f\ \x89\x5d\x22\x58\x97\x06\x89\x1f\xb1\x6b\x8e\x98\x99\xd7\x88\x75\ \xec\xad\x4b\xef\xc7\xec\x18\x1e\x40\x20\xc7\x5a\xac\xdc\x39\xd7\ \x1d\x5a\x5e\x09\xb2\x80\xd5\xae\xad\x1c\xfd\xc2\x27\x8f\x09\xe5\ \xa6\xfa\x21\x29\xdd\x53\x3d\x4b\xe3\xe9\x4d\xbb\x77\xad\x7e\x9f\ \x48\xdf\x2f\x61\xd3\xa0\x8a\x77\x60\xce\x66\xd7\x1c\x23\xe4\xb3\ \x62\x7f\xbb\xef\xca\x1c\x4e\x0c\x03\xf8\x3a\x47\x8b\x7f\xb5\x6d\ \xd2\xd6\x16\xaf\x0e\xb2\x68\xe9\x76\x7c\x27\x9e\x98\x3e\x9f\x4c\ \x50\xcd\x6d\x2b\x2b\x55\x4a\x77\x7e\x69\xd8\x30\xab\x67\x40\xeb\ \xda\xb9\x18\xea\xfb\x25\x47\x46\xe4\x58\xcb\x3f\x6c\xfc\x35\xef\ \x47\x04\x3e\x8c\xa0\xfa\xe1\xb5\xcd\xf6\xbe\xe7\xa0\x3b\xc6\x35\ \x27\x8e\x01\xfc\x97\x16\x09\x0b\xfb\x09\xeb\x27\xd6\x1f\x0b\xaa\ \x50\x15\x15\x29\x67\xe4\x48\xe5\x6c\xd9\x42\x30\xc5\xaf\xaa\x7b\ \xda\x4f\x9a\x94\x3e\xee\x94\x85\xb1\xa6\x7b\xf3\x77\xb7\xf7\x82\ \x56\x33\x8b\xeb\x52\x67\xf7\x48\x8e\x55\x7f\xb7\xc1\xe2\x6f\x09\ \x7a\x18\x71\xef\x16\x5b\xdb\x59\x97\xf4\xc3\x63\xf5\x89\x65\x00\ \x89\x44\x53\xf1\x2d\xdb\x26\xe9\xb7\x82\xfa\xe9\x58\xb7\x4b\xec\ \xd1\x43\x39\x6b\xd7\x12\x44\xf1\xd0\x5d\x5f\x8e\x3f\x3e\xfd\x65\ \x2e\x0b\xcf\x72\xcf\xb0\xb7\x1f\xb1\x8d\x8f\x86\xb4\x4a\xa4\x2f\ \xb5\x5a\x75\x41\x7d\xb1\xbb\x03\x49\xc0\xc3\x38\xa8\x9b\x2d\x4c\ \xb0\xb3\x2e\x3d\x9d\xe0\xc5\x51\xc8\x71\xf4\xc2\xfc\xb2\x4d\x13\ \xb3\x86\x78\x65\x50\x05\xa9\x4d\x1b\xe5\x2c\x5d\x4a\xf8\x44\x7f\ \x5d\x5f\xd6\xaf\x57\x4e\xef\xde\xe9\x2f\x77\x55\x1c\x83\x3b\xc5\ \x62\xfb\x16\xc3\xdf\x88\xa5\x16\xd5\xa5\x86\x89\x74\x8f\x64\x6b\ \xfe\x46\xb5\xc4\xef\x11\xe8\x30\xa6\x5e\xe6\x76\x22\xb2\xac\x2e\ \x3d\x6a\x59\x5d\x02\x30\x46\x89\xf8\x84\x4d\x13\xb2\xa5\xfb\x5c\ \x71\x10\x17\x40\x93\x53\xa7\xf2\xc0\x10\x56\xcd\x79\xf3\xb2\x72\ \x3e\xfd\x5e\xf1\x70\xfb\x16\xc3\x5f\x88\x45\x16\xd4\xa5\x32\xf1\ \x29\x9b\xfe\x36\x1d\xc4\xc7\x09\x71\x18\x73\xef\xb0\xb3\x67\xfa\ \x9d\x62\x01\x71\x0d\x72\x89\x7c\xf1\x76\x9b\x26\xe2\x88\x20\x5e\ \x04\xd5\x3b\x9e\x83\x06\x29\x87\x0b\xa0\x98\xc5\x1e\xea\xce\xe8\ \xd1\x2a\x59\x58\x58\xa5\xb1\xf9\x92\x78\xac\x7d\x8b\xe1\x0d\x62\ \x5e\x88\x75\x49\x7f\x41\xb8\xc7\xa6\xbf\xc9\x78\xb7\x23\x0f\x01\ \x0e\x73\x41\x7d\xb7\xa2\x8f\x7d\x75\xa9\x92\xc8\x06\xb9\xc4\x76\ \x9b\x26\xe0\x1c\x71\x6f\xb6\x8b\x4d\xf3\xe6\xca\x59\xb6\x8c\x50\ \x89\xc1\xb8\x66\x8d\x4a\x76\xe8\x50\xa5\x31\xfa\xbe\x38\xcb\xbe\ \xc5\x70\x63\x88\x75\xe9\x06\x5b\xfe\x0e\xba\x85\xe2\x45\x9c\x37\ \xc7\x1c\xf4\x3d\xf1\x64\xfb\xea\xd2\x22\x62\x1b\xe4\x02\x17\xda\ \x32\xe9\xf4\x99\xb7\xed\xd9\x2e\x30\xc5\xc5\xe9\xe7\xdc\x2b\x2a\ \x08\x91\x18\xbc\xba\x2d\x63\x59\x59\x95\xc6\xec\x76\xfb\xce\x7f\ \x9e\x13\x42\x5d\x5a\x65\xcb\xbf\x7f\x4d\xf1\xfb\x04\x35\xcc\x71\ \xd7\xb8\x17\xa3\x2d\x99\x97\x5f\x8a\x53\x89\x6f\x10\x67\xc6\x89\ \x9f\xdb\x30\xe1\xca\xc4\x1b\xb3\x5c\x50\xf4\x43\x33\xa9\x4b\x2f\ \x25\x34\xa2\x59\x2f\xbb\xac\xca\xbb\xe9\x3f\x10\x4b\xed\x59\x0c\ \xff\x25\x0e\x31\x58\x97\x26\x88\x5f\xd8\xf0\xef\x5e\x5f\xbc\x8b\ \x70\x86\xb8\xcf\x5d\x76\x6d\x1e\xfc\x53\xec\x47\x8c\x83\x38\xd2\ \x5f\xfc\xd8\x86\x89\x76\x84\xf8\x60\x36\x0b\x89\x3e\x0f\x7c\xca\ \x29\x5c\x02\xc5\x70\x9d\x36\x2d\xfd\x0b\x4e\x86\xe3\xf8\x01\xb1\ \xa9\x3d\x8b\xe1\x07\x89\x74\x1f\xf2\xa0\xe9\x6b\x4b\x5d\xd2\x3d\ \xa1\x7f\x43\x28\x43\xfc\x8a\x3f\x13\x1b\xda\x53\x97\xfe\x26\x76\ \x21\xce\x41\x9c\xd0\xcf\xe7\xa6\x6c\x98\x60\x9d\xc4\xe7\xb2\x59\ \x40\x1a\x35\x52\xce\x45\x17\x11\x0e\xd1\x9a\xb3\xe9\x4e\xab\x56\ \x19\x8f\xe7\x27\xdc\x6e\x46\x96\x2c\x86\xaf\x8a\x75\x02\xac\x4b\ \xfa\x0d\x86\xbd\x36\xfc\xbb\x76\x14\x9f\x27\x8c\x21\x1e\xd0\x47\ \xc4\x16\xf6\xd4\xa5\xd7\x03\xae\x4b\x00\xc6\x28\x4e\x58\xd2\x4e\ \xf1\x98\x6c\x77\x6a\xe9\xde\x5d\x39\x97\x5f\x4e\x28\xc4\xc0\x5e\ \x14\x4d\x6d\xd8\xa0\x9c\xe5\xcb\x55\x72\xe1\x42\xe5\xcc\x99\xa3\ \x9c\x33\xce\x50\xa9\xf1\xe3\x95\x33\x6e\xdc\xbe\x6e\x2e\xa9\x11\ \x23\x94\x33\x7c\xb8\x72\x06\x0c\xf8\xaf\x03\x07\xaa\x54\xf5\xea\ \x19\x8f\xeb\x17\xed\x7a\x79\xf4\xde\x44\x30\x6d\xce\x74\x9b\xd7\ \x67\x6c\xf8\x77\xec\x1b\x44\x07\x29\xc4\x98\xa9\xbf\xc0\xb6\xb3\ \xa7\x2e\xdd\x95\x48\x77\xa3\x03\x88\x34\xdf\xb6\x61\x42\xf5\xcf\ \x66\xbb\x32\xfd\xb2\xe3\x94\x29\x04\x48\xac\x9a\x5b\xb6\xec\x7b\ \xb8\x2a\x35\x7b\xb6\x72\x74\xe8\x96\x60\xed\x1c\x79\xa4\x4a\x36\ \x6a\x54\xa5\x80\x9d\x0d\xdf\xb0\xab\xdd\xd9\xfa\x00\xea\x92\x15\ \x1d\x5b\x46\x89\xef\x12\xbe\x10\x3d\xb7\x87\xed\x6c\x4f\x5d\x5a\ \x41\xbc\x83\x28\x73\xb6\x0d\x13\xe9\x04\xf7\xa9\xf3\xac\x14\x89\ \x06\x0d\x94\x73\xf1\xc5\x84\x4b\xf4\xd7\xbb\x5c\xbf\x20\xab\x1f\ \xab\x1a\x36\x4c\x39\xed\xdb\x57\xb9\xf3\x8a\xa9\x76\x67\x23\xed\ \x59\x0c\x27\x65\xb1\x2e\x9d\x6f\xc3\xbf\xd3\xa9\x6e\xab\x4b\x82\ \x17\xa2\x77\xdf\x12\x07\xd8\xd3\xd9\xe5\x64\x62\x1e\x44\x11\x99\ \x43\x89\x4f\xc3\x9e\x44\xa7\x64\x73\x11\xec\xd4\x89\x23\x2d\x78\ \xf0\x30\xae\xdb\x6b\xea\x30\x7e\xea\xa9\xca\xe9\xd5\x4b\x39\x4d\ \x9a\xa8\x64\x7e\x7e\x64\x17\xc3\xdd\xee\x17\x5c\x0b\x16\xc3\xbf\ \x8b\x9d\xb2\x50\x97\x06\x89\x9f\x85\xfd\xef\x33\x83\x1e\xe7\x88\ \x19\xfb\xb6\x38\xc4\x8e\xba\xf4\xa1\xd8\x91\xb8\x07\x51\xa2\xbe\ \xf8\x5e\xd8\x93\x47\xbf\xc2\xb7\x27\x5b\x2f\x82\x8e\x1e\x4d\x97\ \x16\xfc\xba\xfa\x0b\xdb\xd9\x67\x2b\x67\xe4\x48\xe5\xb4\x6d\x5b\ \xa5\x2e\x2a\x36\x87\xf4\xe3\xed\x58\x0c\x5f\x14\x4b\xab\x50\x97\ \x1a\x89\xef\x87\xfd\xef\x31\x25\x88\x87\xd1\x10\x73\xcc\x77\xec\ \x79\x0d\xf9\x79\xb1\x06\xb1\x0f\xa2\x80\xbe\xd0\x75\x6f\xd8\x93\ \x66\x4c\xb6\x76\xce\x6b\xd4\x50\xce\xbc\x79\x04\x51\x4c\xab\xbf\ \xa4\xe9\x1d\xf2\xb1\x63\x95\xd3\xba\xb5\x72\x22\xbc\x3b\xee\x37\ \xa4\x8f\xb2\x63\x31\xfc\x61\x86\x75\x49\x5f\xe8\xba\x2f\xec\x7f\ \xfe\xa9\xec\x9c\x23\x66\xb5\x2e\x1d\x67\x47\x5d\xfa\x1e\xd1\x0f\ \xa2\xc0\xea\xb0\x27\xcb\xf0\x6c\x9d\x39\xaf\x5f\x9f\x87\x87\x50\ \x39\xdb\xb6\x29\xe7\x5b\xdf\x52\x4e\xdf\xbe\x2a\x55\xbb\x76\x4e\ \x2f\x86\x96\xec\x58\xcd\xcc\xa0\x2e\x2d\x0f\xfb\x9f\x7b\x12\x3b\ \xe7\x88\x81\xec\xa4\xf7\xb7\xa3\x2e\xcd\x26\xfe\x81\xcd\xf4\x0b\ \xfb\x7c\xe7\x60\xf7\x72\x5b\x95\x27\x7e\x9b\x36\xca\xd9\xbc\x99\ \x70\x9a\xa3\x26\xb7\x6e\x4d\x3f\xfc\xa3\x5f\xe8\xcc\x91\x5d\x72\ \xaf\x8b\xa1\x05\x17\xb4\xfe\x21\xb6\xf7\x51\x97\x06\x86\x5d\x97\ \xc6\x72\x21\x14\x31\xd0\xae\x53\xdd\xed\xa8\x4b\xed\x88\x81\x60\ \x23\xb5\xc4\xb7\xc3\x9c\x20\x7d\xdc\xcb\x23\x55\x9e\xf0\x3d\x7b\ \xa6\x3b\x6f\x10\x54\x73\xcb\xed\xdb\xd3\xa1\xbc\x4b\x97\x74\x2b\ \x4d\x16\xbe\x6f\xec\xa2\xd0\x2b\xfc\xc5\xf0\xb9\x44\xfa\x8d\x05\ \x2f\xf7\x61\xf6\x84\xf9\xcf\x3a\x22\x9b\x5d\xa4\x10\xf1\x80\xbe\ \x2a\x1e\x19\x7e\x5d\x7a\x5a\x2c\x22\x0e\x82\x6d\x7c\x37\xcc\x89\ \xd1\xc3\xfd\x16\x5d\xe5\x89\x3e\x74\x28\x97\x41\x73\xad\xf3\xca\ \x8a\x15\xfb\xda\x1f\x26\x23\xd0\xfa\xd0\xa6\xc5\xb0\x43\xf8\x8b\ \xe1\xb6\x43\xd4\xa4\x3c\xf1\xce\x30\xff\x19\x7b\xb9\xbf\x3a\x30\ \x66\x10\x83\xf7\x05\xb1\x75\xf8\x75\x69\x1d\x71\x10\x6c\xe2\x94\ \x30\x27\x44\x5b\x37\x30\x54\xb9\x53\xcb\x84\x09\x04\xd6\x5c\x09\ \xe5\x3b\x76\x28\xe7\xcc\x33\x55\x4a\x1f\x65\x62\x61\xcb\xc8\xe7\ \xc4\xc3\xc2\xef\x43\x3c\xea\x20\x75\x69\x76\x98\x75\xa9\x7d\x36\ \xea\x12\x22\xfa\xf2\x19\xb1\x3c\xdc\xba\xf4\xb9\x7b\xac\x0e\x20\ \x74\x5a\x88\x7f\x0b\x6b\x32\x34\x49\xa4\x9f\x00\xae\x6a\x38\x4f\ \x9d\x76\x1a\xc1\x35\x17\x82\xb9\xbe\xf4\x3b\x68\x90\x72\x4a\x4a\ \x58\xcc\xb2\xe0\xe3\x62\xa3\x70\x17\xc3\x3f\x8a\xe5\x07\xa8\x4b\ \x6d\xc4\x8f\xc2\xfa\xe7\x6a\x29\xbe\xc8\xf8\x40\x0c\xc5\x07\xc5\ \x5a\xe1\xd6\xa5\xbd\xee\xf1\x3a\x80\xd0\xd0\xad\xcb\xee\x0f\x6b\ \x12\x54\x17\xef\xaa\xea\x64\x2e\x28\x50\xce\xcc\x99\x84\xd7\x38\ \xab\x1f\x0f\x9a\x35\x2b\xdd\x16\x91\xc5\x2b\xeb\xea\x39\x58\x6c\ \x57\xeb\x45\x7d\xb4\x25\xb4\x96\x8a\x65\xe2\xfd\x8c\x0b\xc4\x50\ \xbd\x41\x2c\x08\xb7\x2e\xdd\x48\x44\x84\x30\x59\x10\xd6\xe0\x97\ \x6f\x06\xea\xea\xaa\x4e\x62\x7d\x11\x70\xee\x5c\x02\x6c\x9c\x2f\ \x7d\x9e\x72\x8a\x4a\x36\x68\xc0\x82\x15\xb0\x57\x8a\x79\xe1\x2e\ \x86\xa7\xec\x57\x97\xe6\x86\xf5\xcf\xa1\x03\xc1\xf7\x18\x0f\x88\ \x56\xb8\x2e\xfc\xf3\xe8\x27\x12\x13\x21\x0c\x9a\x25\xd2\xcf\x6f\ \x87\x32\xf0\x2f\xa9\xe2\xc4\x4d\x16\x16\x2a\xe7\xac\xb3\x08\xb1\ \x71\x0d\xe6\x27\x9d\xa4\x9c\x5a\xb5\x58\xa4\x0c\xba\x30\xdc\x85\ \xf0\x4f\x62\x63\xb1\x65\x98\x75\xe9\x32\xc6\x01\xa2\x55\x7e\x2b\ \xdc\xba\xa4\x3b\x48\xd5\x22\x2e\x82\x69\x7e\x1e\xd6\xa0\x9f\x9c\ \x8d\x9d\xf3\xf9\xf3\x09\xb2\x71\xbc\xf8\x39\x6e\x9c\x72\x4a\x4b\ \x59\x98\x42\x50\xbf\x90\x39\x26\xdc\xc5\xf0\x16\xf1\xd7\x61\xfd\ \xe7\xcf\x60\x0c\x20\x5a\xa7\x7e\x7f\x60\x78\xb8\x75\xe9\x0a\xe2\ \x22\x98\xe4\xf4\xb0\x06\x7b\xf7\xaa\x3e\x44\xa4\xcf\x9c\xb3\x73\ \x1e\xaf\x60\xae\x7b\xd6\xeb\x60\x5e\xb3\x26\x0b\x92\x05\x0f\x19\ \x75\x0e\xff\x67\x65\xe3\x0e\xe4\x21\x22\x44\x6b\x7d\x4d\x6c\x11\ \x5e\x7d\xf8\x22\x41\x57\x17\x30\x84\xbe\x99\xfc\x87\x30\x06\x7a\ \x03\xb7\x85\x52\x95\x5a\x29\x4e\x99\x42\xa8\x8d\x93\x73\xe6\x28\ \xa7\x71\x63\x16\x21\x8b\x7c\x52\xac\x93\x43\xe1\x5c\xb7\x9a\x7c\ \x89\xcf\x1d\xd1\x6a\xf5\xc5\xed\x1a\xe1\xd5\x09\xf9\x8e\x90\xa8\ \x4e\x7c\x84\xa0\xf9\x61\x18\x03\xbc\xa8\xaa\x1d\x5b\x74\x38\x9f\ \x3a\x95\x40\x1b\x17\x17\x2d\x52\xc9\x66\xcd\x58\x78\x2c\xf5\x36\ \xb1\x30\x07\xc2\x79\x09\x1d\x5b\x10\x23\xe3\x77\xc2\xbd\xcc\x7e\ \x39\xf1\x11\x82\x64\x78\x58\x0b\xe1\xa5\x55\x9d\x9c\xfa\x08\x04\ \xc1\x36\xfa\xc7\x59\x36\x6e\x54\x4e\xff\xfe\xca\xc9\xcf\x67\xc1\ \xb1\xdc\xc5\x39\x10\xd0\x37\xf3\x39\x23\x72\x69\xd4\x9b\x9f\x8a\ \xdd\x88\x91\x10\x04\xd5\xc4\xd7\xc3\x18\xd8\x63\xdc\x0b\x68\x19\ \x4f\xca\xa1\x43\x09\xb7\x71\x38\x67\xae\x3b\xb3\x54\xaf\xce\x22\ \x13\x11\xf7\x8a\x43\x62\x1c\xce\x27\xf1\x19\x23\x46\xce\xdd\x62\ \xef\xf0\xea\xc6\x23\x89\xf4\x3b\x0d\x00\x59\x65\x51\x18\x03\xba\ \x8d\xf8\x66\x55\x26\x64\xaf\x5e\xca\xa9\xac\x24\xe4\x46\x39\x9c\ \x9f\x7b\xae\x72\xea\xd7\x67\x71\x89\xa0\xbf\x4b\x84\xfe\xd2\x68\ \x60\x75\xe9\x2d\x3e\x5f\xc4\x48\xfa\x5b\xb1\x3c\xbc\xfa\x71\x1a\ \x71\x12\xb2\x89\xac\xb1\x89\xbf\x85\x71\xee\xfc\xde\xaa\x4c\xc4\ \x76\xed\x94\xa3\x77\x5e\x09\xb9\xd1\x0c\xe6\x9b\x36\x29\xa7\x7b\ \x77\x16\x94\x88\x7b\x4b\x22\xfd\xb0\x58\x5c\xc2\x79\x31\xe7\xce\ \x11\x23\xef\x0f\xc3\x3b\x8f\xbe\x5b\x2c\x21\x56\x42\xb6\xb8\x3e\ \x8c\x85\x70\x65\x55\x26\x60\x79\xb9\x72\x36\x6f\x26\xe8\x46\x51\ \xfd\x8b\xc7\xe4\xc9\xca\xa9\x51\x83\x85\x24\x26\x2e\x8a\x51\x40\ \xdf\xca\xe7\x89\x18\x0b\xe7\x86\x57\x47\xd6\x12\x2b\x21\x1b\xe8\ \x4b\x0d\x9f\x9b\x1e\xc0\x7d\xdd\x33\xac\x19\x4d\x3c\xfd\x50\xcd\ \x8a\x15\x04\xdd\x28\xba\x7e\xbd\x72\xba\x76\x65\xf1\x88\x99\x7b\ \xc4\x1e\x31\x08\xe7\x23\xf8\x2c\x11\x63\xe3\xbb\x62\x87\x70\x6a\ \xc9\x47\xe2\xe1\xc4\x4b\xa8\x2a\x0f\x98\x1e\xbc\xb5\xc4\xa7\x33\ \x9d\x74\xba\xbb\xc7\x82\x05\x04\xdd\x28\x3a\x77\xae\x4a\x96\x95\ \xb1\x70\xc4\xd4\x47\xdd\xb6\x84\x51\x0d\xe7\xf5\xdc\xb3\xab\x7c\ \x96\x88\xf1\xea\x8f\x5e\x2d\x9c\x9a\xf2\x03\xe2\x25\x54\x85\x93\ \xc3\x58\x08\xaf\xac\xca\x84\x9b\x38\x91\xa0\x1b\x35\xb7\x6d\x53\ \x4e\xef\xde\x2c\x16\x39\xe0\xba\x08\x07\xf4\xab\xf8\xfc\x10\x63\ \xe9\xaa\x70\x6a\xca\x97\x62\x3f\x62\x26\x64\x42\x91\xf8\x96\xe9\ \x41\x7b\x52\x55\x26\x5a\x9f\x3e\x84\xdd\xa8\x5d\x04\x5d\xbc\x98\ \x0e\x2d\x39\xa4\x6e\x97\x3a\x20\x82\xe1\x7c\x1c\x9f\x1d\x62\xac\ \xeb\x52\xff\x70\x6a\xcb\x13\x44\x4d\xc8\x84\x39\x61\xfc\x84\xfc\ \x62\xa6\x93\xac\x49\x93\xf4\x4e\x2c\xa1\x37\x3a\x4e\x9a\xa4\x9c\ \xa2\x22\x16\x88\x1c\x53\x1f\x5f\xab\x19\xa1\x70\xae\xdb\xb1\xbd\ \xcc\xe7\x86\x18\x6b\x1f\x13\xab\x87\x53\x63\xc6\x10\x37\xc1\x0f\ \xc5\xe2\x1e\xd3\x03\x75\x57\xa6\x93\x4b\x9f\x5b\x5e\xbb\x96\xc0\ \x1b\x15\xb7\x6c\x51\x4e\x97\x2e\x2c\x0a\x1c\x75\x89\x84\xd7\xf0\ \x79\x21\xe6\x84\xcb\xc2\xa9\x31\xcf\x25\x78\xbc\x08\x7c\x30\xdf\ \xf4\x20\x1d\x52\x95\x89\x35\x67\x0e\xa1\x37\x2a\xae\x5c\xa9\x9c\ \xa6\x4d\x59\x0c\x72\x5c\xdd\xa1\xa9\x7b\x04\xc2\xf9\x70\x3e\x2b\ \xc4\x9c\xea\x36\xd5\x29\x9c\x5a\x73\x32\xb1\x13\xbc\xa0\x1b\xe8\ \x3b\x26\x07\x67\x0d\xf1\x37\x99\x4e\xaa\xc1\x83\x09\xbd\x51\x71\ \xe6\x4c\xe5\x14\x17\xb3\x10\xe0\x7f\xba\x27\x14\x59\x1c\xce\x4b\ \xab\xd2\x4d\x0a\x11\x23\xe9\xdd\x62\x81\xf9\x7a\xf3\xa2\x98\x4f\ \xfc\x84\x43\xb1\xc8\xf4\x42\xb8\x2a\xd3\xc9\xa4\x1f\x23\xda\xbe\ \x9d\xe0\x1b\x85\x87\x87\x46\x8d\x52\x4e\x5e\x1e\x0b\x00\x7e\xc5\ \x73\x2c\x0e\xe8\xab\xf9\x7c\x10\x73\xd2\xb3\xc2\xa9\x39\x93\x89\ \x9f\x70\x30\xca\xc4\x3f\x9a\x1c\x94\x47\x8a\xef\x67\x32\x89\x8a\ \x8a\x54\xf2\x92\x4b\x08\xbf\xb6\xbb\x75\xab\x72\x3a\x76\xa4\xe8\ \xe3\x01\x7d\x47\x6c\x6e\x61\x38\xef\x9a\x69\x5d\x42\xc4\xc8\xfb\ \x96\xd8\xc4\x7c\xdd\x79\x4d\x2c\x20\x86\xc2\x37\xb1\xd4\xf4\x42\ \xf8\xa3\x4c\x27\xd1\xf8\xf1\x84\x5f\xdb\xbd\xec\x32\xce\x9b\xe3\ \x21\xbd\xde\xb2\x70\x9e\x27\xde\xc5\xe7\x82\x98\xd3\x56\x86\x53\ \x7f\xa6\x11\x43\xe1\x9b\x3a\xb7\x18\x3d\x7b\x3e\x3a\xc3\x89\x93\ \x6a\xd3\x46\x39\x15\x15\x04\x60\x9b\xfb\x9b\xaf\x58\xa1\x9c\x06\ \x0d\x28\xf4\xe8\xc9\x81\x16\x05\xf4\x09\x7c\x1e\x88\xf4\x46\x17\ \x7b\x84\xb3\x8b\xce\x59\x74\xf8\x1a\xb3\x4c\x0e\x44\xf9\x36\xa0\ \x9e\xcc\x24\x9c\x57\xaf\xae\x92\xb4\x54\xb4\xdb\xb9\x73\xb9\x0c\ \x8a\xbe\x7c\x40\x2c\xb4\x20\x9c\xeb\x0b\xeb\xcf\xf1\x79\x20\xa2\ \xf8\x73\x31\xdf\x7c\x1d\x1a\x4b\x1c\x85\xfd\xd1\x3d\x38\x5f\x36\ \x39\x08\xe7\x67\x3a\x69\x26\x4c\x20\x00\xdb\xec\xac\x59\x2a\x59\ \x58\x48\x71\x47\xdf\xce\xb0\x20\xa0\x2f\xe1\x73\x40\xc4\xfd\x9c\ \x64\xbe\x0e\x3d\x4c\x24\x85\xfd\x39\xd1\xe4\x00\xd4\x2f\xf3\xbd\ \x91\xc9\x64\x69\xdd\x3a\xdd\x11\x84\x20\x6c\xef\xcb\xa0\x74\x6a\ \xc1\x0c\xd5\xaf\x75\xd6\x0a\x31\x9c\xeb\x4b\x61\xef\xf2\x39\x20\ \xe2\x7e\x3e\xef\xb6\x5c\x35\x5c\x8f\x7a\x11\x4b\xe1\xdf\x3c\x68\ \x72\xf0\x6d\xc9\xb0\x6b\x8b\xa3\xcf\x35\x13\x84\xed\xf4\xe4\x93\ \x09\xe7\x58\x65\x2f\x0a\x31\xa0\x6f\xe1\xef\x8f\x88\x07\xf0\x42\ \xf3\xf5\xe8\x56\x62\x29\x68\x7a\x9a\x1c\x78\x2d\x12\xe9\xd7\xba\ \x7c\x4f\x92\xd1\xa3\x09\xc1\xb6\xaa\x3f\x1b\x8a\x38\x66\xc1\x37\ \xc5\x86\x21\x84\xf3\xd6\x99\xd6\x25\x44\x8c\xbd\xfa\x17\xff\x7a\ \x66\x6b\xd2\xe7\x62\x4b\xe2\x29\xdc\x6a\x72\x21\xac\xc8\x64\x82\ \x94\x97\xab\xd4\xce\x9d\x04\x61\x1b\x1d\x3b\x96\x02\x8e\x59\x75\ \x5d\x08\x01\xfd\x1a\xfe\xee\x88\x78\x10\x97\x9b\xaf\x4b\x3b\x89\ \xa7\xb9\x4d\x33\xf7\x9b\x9a\x91\x01\xd7\x36\x91\xe1\xe3\x1f\xf3\ \xe6\x11\x84\x09\xe7\x98\x23\xee\x16\x9b\x25\xcc\x3e\x4a\x94\xe4\ \xef\x8e\x88\x89\x83\x3f\x5e\x64\xf8\xd7\xbd\xbf\x8b\xb5\x89\xa9\ \xb9\xcb\x5a\x93\xdf\x08\xaf\xcd\xa4\xad\x62\xd7\xae\x04\x61\x1b\ \xfb\x9c\x8f\x1b\x47\xd1\xc6\xc0\xdc\x6e\xb0\x2e\x7d\x8f\xbf\x37\ \x22\xda\xf9\xeb\xde\xb9\xc4\xd4\xdc\xa4\x48\x4c\x99\x1a\x68\x47\ \x65\xb0\x4b\xa5\xdb\xf5\xa5\x56\xaf\x26\x10\xdb\xa6\x6e\x75\x49\ \xb1\xc6\x00\xd5\xbf\xb4\xb5\x34\x50\x97\xba\xf1\xb7\x46\x44\x4b\ \x7f\xdd\x13\x5f\x20\xaa\xe6\x26\x46\x5b\x2b\x5e\x97\xc9\x84\x38\ \xf6\x58\xc2\xb0\x6d\x9e\x7e\x3a\xdd\x5a\xd0\x88\x1b\x0d\xd4\xa5\ \xab\xf9\x3b\x23\xa2\x0f\xd7\x9b\xdf\x45\x3f\x86\xb8\x9a\x7b\xdc\ \x61\xb2\x43\xc2\x5e\xbf\x13\xa1\x46\x0d\xe5\x6c\xde\x4c\x20\xb6\ \xc9\x39\x73\x54\x32\x3f\x9f\x22\x8d\x46\x7c\xcf\xed\x4d\x1e\x54\ \x5d\x6a\x97\x49\x5d\x42\xc4\x9c\xf6\x1d\xb1\xbe\xd9\x80\x7e\x35\ \x71\x35\xb7\x38\x4c\xfc\xcc\xd4\x00\xdb\x94\xc9\x44\x98\x38\x91\ \x40\x6c\x91\xc9\x85\x0b\xd3\xbd\xe8\x29\xd0\x68\xd0\xcb\x02\xac\ \x4b\x57\xf0\xf7\x45\xc4\x0c\x5c\x64\x36\xa0\x7f\x28\x96\x11\x5b\ \x73\x87\x55\xa6\x06\x57\xb9\xbb\x13\xe6\x6b\x02\x34\x68\xa0\x9c\ \x5d\xbb\x08\xc6\xb6\xb8\x6c\x99\x72\xaa\x57\xa7\x30\x63\x28\xbb\ \xe8\xe5\x01\xd4\xa5\x56\xec\x9e\x23\x62\x86\xbe\x92\x30\xfe\xba\ \xe8\xd9\xc4\xd6\xdc\xa0\x40\x7c\xdf\xd4\xc0\xba\x28\x93\x09\x30\ \x65\x0a\xa1\xd8\x16\xd7\xad\x53\xa9\x3a\x75\x28\xca\x18\x9a\x17\ \x27\x78\x35\x14\x11\xed\x72\x86\xd9\x80\xfe\x2c\xd1\x35\x37\x18\ \x61\x6a\x50\x55\x17\x5f\xf4\x3b\xf0\xcb\xcb\x95\x53\x51\x41\x30\ \xb6\xc1\x6d\xdb\x94\x73\xc4\x11\x14\x63\x0c\x7d\xb7\xaa\x2c\x8b\ \x75\xa9\x91\xf8\x2e\x7f\x57\x44\xac\x82\x8f\x8a\xf9\x66\x43\x7a\ \x67\xe2\x6b\xfc\xb9\xd1\xd4\x80\x9a\x91\xc9\xc0\x9f\x36\x8d\x60\ \x6c\x43\x9f\x73\xf9\x92\x94\xea\xd4\x89\x42\x8c\x56\x78\x4e\x16\ \xeb\xd2\xa5\xfc\x3d\x11\x31\x0b\x9e\x68\x36\xa0\x6f\x24\xbe\xc6\ \x9b\x62\xf1\xaf\x26\x06\x53\x9e\xf8\x88\xcf\xc1\x9e\x6c\xd4\x68\ \x5f\x30\x24\x20\x5b\x10\xd0\x47\x8e\xa4\x00\xa3\x35\x3e\x27\x16\ \x65\xa1\x2e\xd5\x12\x5f\xe3\xef\x89\x88\x59\xf0\x27\x66\x03\xfa\ \x9b\x44\xd8\x78\x73\x92\xa9\xc1\x34\x24\x83\xc1\x9e\x9c\x3e\x9d\ \x70\x6c\x49\x3b\x45\x7a\x9d\xa3\x6d\x4e\xcd\x42\x5d\x3a\x9f\xbf\ \x23\x22\x66\xd1\x4e\x66\x43\x7a\x4f\x62\x6c\x7c\xf9\xbe\xa9\x81\ \x74\x55\x26\x67\xcf\x2b\x2b\x09\xc7\x61\xbb\x74\x29\xed\x14\xd1\ \x4a\x1f\xa9\xe2\x99\xcf\x62\xf1\xb7\xfc\x1d\x11\x31\x8b\xae\x36\ \x1b\xd0\x37\x11\x63\xe3\x49\xa9\xf8\x91\x89\x41\xd4\x20\x91\x7e\ \x12\xd7\xcf\x20\x4f\x9d\x76\x1a\xe1\x38\x6c\xf5\xc3\x50\xf5\xeb\ \x53\x74\xd1\x5a\xc7\x9a\xbe\x13\x83\x88\x78\x10\xf5\x91\xb9\x12\ \x73\x01\x7d\x8f\x98\x47\x9c\x8d\x1f\x13\x4d\x7d\xcb\x9b\xe7\xf7\ \x68\x4b\x59\x99\x4a\xed\xd8\x41\x40\x0e\xd3\x8a\x0a\x95\xec\xd0\ \x81\x82\x8b\x56\x7b\x9f\x7b\xbf\xc5\x6f\x4d\xd2\xe7\xd7\x9f\xe1\ \xef\x87\x88\x01\x38\xc1\xec\x2e\x7a\x3f\xe2\x6c\xfc\xb8\xcd\xd4\ \xe5\xd0\x47\xfd\x0e\x70\x7d\x21\x91\x90\x1c\xae\xe3\xc6\x51\x68\ \x31\x12\x0e\xcd\xa0\x2e\x4d\xe4\xef\x86\x88\x01\xf9\x23\xb3\x01\ \x7d\x27\x71\x36\x5e\x94\x88\xff\x30\x31\x78\x7a\xf9\x1d\xdc\x45\ \x45\x2a\xb5\x69\x13\x01\x39\xcc\x8e\x2d\x8b\x17\xab\x64\x7e\x3e\ \x85\x16\x23\xe1\x2d\x19\x6c\x1a\xdc\xc7\xdf\x0d\x11\x03\x32\x29\ \x36\xe7\x98\x0b\x64\xc8\xf1\xa6\xbe\xdd\x6d\xf5\x3b\xb8\x07\x0c\ \x20\x24\x87\xe9\xd6\xad\xca\x69\xd0\x80\x22\x8b\x91\xb2\x9b\x8f\ \x9a\x74\x2c\x7f\x2f\x44\x0c\xd8\x0b\xcd\xee\xa2\x1f\x45\xac\x8d\ \x0f\x15\x26\x06\x4d\xb5\x4c\x7a\x0c\x2f\x5b\x46\x48\x0e\x53\xfd\ \x05\x89\xe2\x8a\x11\xf3\x7a\x1f\x75\xe9\x67\xfc\xbd\x10\x31\x60\ \x9f\xc8\xf0\x7e\x4c\x86\x5e\x42\xac\x8d\x0f\xef\x98\x18\x34\xc3\ \xfd\x0e\xea\x96\x2d\x09\xc8\x61\x3a\x73\x26\x85\x15\x23\xfb\x93\ \x72\x7b\x0f\x35\xa9\x37\x7f\x2b\x44\xb4\xf0\x97\xbd\x2a\xfa\x08\ \xb1\x36\x1e\xb4\x36\xf5\xb3\xcb\x0e\xbf\x03\x7a\xca\x14\x42\x72\ \x48\x26\xd7\xae\x55\x4e\x49\x09\x45\x15\x23\xeb\x16\x0f\x35\xe9\ \x3b\xfc\x9d\x10\xd1\x90\x97\x98\x0b\xe8\x9f\x8a\xb5\x88\xb7\xd1\ \x67\x81\x89\x01\x53\x5d\x7c\xc3\xcf\x60\x2e\x2e\x56\x49\x7d\xfe\ \x99\xb0\x1c\x8e\x5d\xbb\x52\x50\x31\xd2\xea\xb7\x16\x0e\x3f\x48\ \x4d\xea\xcc\xdf\x08\x11\x0d\xfa\x8c\xd9\x63\x2e\x13\x89\xb7\xd1\ \xe7\x17\x26\x06\xcb\xf1\x3e\x07\x72\x6a\xe0\x40\x42\x72\x58\x4e\ \x9f\x4e\x31\xc5\x58\xb8\xe6\x20\x35\xe9\x0a\xfe\x3e\x88\x68\xd8\ \x1e\xe6\x02\xfa\xb5\xc4\xdb\x68\x53\x6c\xaa\xbd\x62\xa5\xdf\x81\ \xac\x9f\x94\x27\x2c\x9b\x77\xe3\x46\xe5\x94\x96\x52\x48\x31\x16\ \xea\x5f\xed\xea\x1c\xa0\x1e\x1d\x9e\xf0\xff\x9a\x31\x22\x62\x55\ \x5d\x61\x2e\xa0\xef\x26\xe2\x46\x9b\xe1\x26\x06\x8a\x7e\xa5\xef\ \x75\x3f\x83\xb8\x69\x53\x82\x72\x58\xf6\xe9\x43\x11\xc5\x58\xb9\ \xf0\x00\x35\x69\x2d\x7f\x17\x44\x0c\xc1\x27\xcd\xb6\x5b\xec\x44\ \xcc\x8d\x2e\x1b\x4c\x0c\x92\x7e\x7e\x07\xf1\x49\x27\x11\x94\xc3\ \xb8\x18\x7a\xd6\x59\x14\x50\x8c\x9d\x2f\x8a\x25\xfb\xd5\xa3\x7a\ \xe2\xdb\xfc\x5d\x10\x31\x24\x5b\x9b\x0b\xe8\xf3\x89\xb9\xd1\xe5\ \x31\x13\x83\xe4\x52\xbf\xe7\xcf\x57\xaf\x26\x30\x9b\x76\xfb\x76\ \xe5\xd4\xaf\x4f\xf1\xc4\x58\x3a\x67\xbf\x7a\xb4\x94\xbf\x07\x22\ \x86\xe8\x59\xe6\x02\xfa\xad\xc4\xdc\x68\x52\x5d\xfc\xc4\xc4\x20\ \xf9\xb5\x9f\xc1\xdb\xa2\x05\x61\x39\x0c\x47\x8e\xa4\x70\x62\x6c\ \x7d\xd6\x3d\x6a\x57\xcb\xef\x71\x3b\x44\xc4\x2c\x7b\xb3\xb9\x80\ \x9e\x24\xea\x46\x93\xbe\x26\x06\x48\xe3\x44\xfa\xd1\x10\xcf\x83\ \x77\xc2\x04\xc2\xb2\x69\xd7\xac\x51\x4e\x51\x11\x85\x13\x63\xed\ \x44\x77\xe7\x8a\xbf\x05\x22\x86\xe9\x3b\x89\x74\xeb\x69\x43\x21\ \xbd\x39\x71\x37\x7a\x2c\x32\x31\x38\x4e\xf3\x33\x70\xf3\xf2\x94\ \xb3\x6e\x1d\x81\xd9\xf4\xd9\xf3\xee\xdd\x29\x9a\x18\x7b\x1f\x70\ \x77\xd2\xf9\x5b\x20\x62\xd8\x1e\x6b\x2e\xa0\x4f\x26\xee\x46\x8f\ \xdb\x4d\x0c\x8e\x6b\xfc\x0c\xda\x56\xad\x08\xcc\xa6\x5d\xb8\x90\ \x62\x89\x88\x88\x68\xd0\xb5\xe6\x02\x7a\x25\x71\x37\x7a\xfc\x3e\ \xe8\x81\x51\x20\xbe\x46\xf7\x16\x7b\xad\xac\x54\xa9\x96\x2d\x29\ \x96\x88\x88\x88\x06\x7d\xc4\x5c\x40\x7f\x9e\xb8\x1b\x2d\xda\x99\ \x18\x18\x9d\xfc\x0e\xda\x4b\x2e\x21\x34\x9b\x3c\xda\xc2\x8b\xa1\ \x88\x88\x88\xa1\x58\x6e\x26\xa0\x7f\x21\xd6\x21\xf6\x46\x87\xa9\ \x26\x02\xfa\x34\x3f\x83\xb5\x5e\x3d\x42\xb3\x41\x53\x3b\x77\xaa\ \x94\xfe\x9b\x53\x24\x11\x11\x11\x8d\x7b\xbc\xb9\x5d\xf4\xe1\xc4\ \xde\xe8\xb0\xcd\xc4\xa0\xb8\xd2\xcf\x60\x1d\x30\x80\xe0\x6c\x72\ \xf7\x7c\xd2\x24\x0a\x24\x22\x22\x62\x48\xae\x32\x17\xd0\x2f\x22\ \xf6\x46\x87\x5f\x99\x18\x14\x4f\xfb\x19\xac\x73\xe6\x10\x9c\x0d\ \x3e\x4a\x94\xaa\x5d\x9b\x02\x89\x88\x88\x18\x92\x3f\x37\x17\xd0\ \x6f\x24\xf6\x72\x41\xf4\x3f\x96\xfb\x19\xa8\x85\x85\x2a\xb9\x75\ \x2b\xc1\xd9\x94\xe3\xc7\x53\x1c\x11\x11\x11\x43\x74\x77\xc2\x58\ \x3f\x74\x2e\x8a\x46\x84\xc6\x26\xbe\xb1\x8d\xf5\x33\x50\xdb\xb6\ \x25\x34\x1b\xdc\x3d\x4f\xd6\xac\x49\x71\x44\x44\x44\x0c\xd9\xbe\ \x66\x02\xfa\xa7\x62\x35\xe2\xaf\xfd\x1c\x67\x22\xa0\xaf\xf2\x33\ \x48\x4f\x38\x81\xe0\x6c\xca\xb1\x63\x29\x8a\x88\x88\x88\x16\x38\ \xcf\xdc\x31\x97\x4e\xc4\x5f\xfb\x31\xf2\x82\xe8\x6d\x7e\x06\xe9\ \x82\x05\x04\x67\x43\xbb\xe7\x4e\x69\x29\x45\x11\x11\x11\xd1\x02\ \xaf\x34\x17\xd0\x4f\x27\xfe\xda\xcf\x77\x4d\x0c\x86\x57\x3c\x0e\ \xce\x64\x7e\x7e\x3a\x38\x12\xa0\x83\xf7\xb4\xd3\x28\x88\x88\x88\ \x88\x96\xf8\x80\xb9\x80\xbe\x81\xf8\x6b\x3f\xcf\x58\x75\x41\xf4\ \x88\x23\x08\xce\x86\x5e\x0d\x75\x1a\x35\xa2\x20\x22\x22\x22\x5a\ \x74\x51\xb4\xc8\x4c\x40\xbf\x8b\xf8\x6b\x3f\x7f\x0f\x7a\x20\x0c\ \xf6\x33\x40\x87\x0c\x21\x3c\x9b\xe8\x7b\x7e\xd6\x59\x14\x43\x44\ \x44\x44\xcb\xec\x68\x26\xa0\xbf\x45\xfc\xb5\x9b\x86\x26\x7e\x4a\ \x99\xeb\x67\x70\xce\x9c\x49\x80\x36\xa1\xee\x94\x43\x21\x44\x44\ \x44\xb4\xca\x93\xcd\x75\x72\x29\x20\x06\xdb\x4b\x6f\x13\x01\xbd\ \xc2\xc7\xc0\x4c\xae\x5d\x4b\x78\x0e\xda\x8b\x2f\xa6\x08\x22\x22\ \x22\x5a\xe8\x72\x73\xe7\xd0\x9b\x13\x83\xed\xe5\x54\x13\x83\xe0\ \x57\x5e\x07\xa6\xee\x28\x42\x80\x0e\xde\xbe\x7d\x29\x82\x88\x88\ \x88\x16\xfa\x7d\x73\x01\x7d\x10\x31\xd8\x5e\x96\x04\x3d\x00\xf2\ \xc4\xb7\xbd\x0e\xcc\xf6\xed\x09\xcf\x41\x7b\xf9\xe5\xca\x29\x2a\ \xa2\x08\x22\x22\x22\x5a\xe8\x93\xe6\x02\xfa\x34\x62\xb0\xbd\x5c\ \x1d\xf4\x00\x68\xe4\x67\x60\x0e\x1d\x4a\x80\x0e\xfa\x72\xe8\xa4\ \x49\x14\x40\x44\x44\x44\x4b\xdd\x63\xae\x93\xcb\x2a\x62\xb0\xbd\ \xdc\x1b\xf4\x00\xe8\xe1\x67\x60\x4e\x99\x42\x88\x0e\xda\xc3\x0e\ \xa3\x00\x22\x22\x22\x5a\x6c\x33\x33\x01\xfd\x06\x62\xb0\xbd\xbc\ \x11\xf4\x00\x38\xc9\xc7\x80\x4c\x2d\x59\x42\x80\x0e\xd2\x8b\x2e\ \xa2\xf0\x21\x22\x22\x5a\x6e\x7f\x33\x01\xfd\x21\x62\xb0\x9d\xe4\ \x89\x1f\x07\x3d\x00\xce\xf5\x3a\x20\xf3\xf3\x55\x6a\xc7\x0e\x42\ \x74\x90\xf6\xef\x4f\xe1\x43\x44\x44\xb4\xdc\x53\xcd\x04\xf4\xf7\ \x88\xc2\x76\x52\xd7\xc4\x25\x84\x4d\x5e\x07\xa4\x7e\xd5\x92\x10\ \x1d\x9c\xdb\xb7\x2b\xa7\xa4\x84\xc2\x87\x88\x88\x68\xb9\x8b\xcd\ \x04\xf4\x4f\x88\xc2\x76\xd2\xc6\x44\x40\xbf\xc9\xeb\x80\xec\xd4\ \x89\x10\x1d\xa4\xfa\x01\x28\x8a\x1e\x22\x22\xa2\xf5\xee\x32\xd7\ \xc9\xa5\x8c\x38\x6c\x1f\x7d\x4c\x7c\xf8\x0f\x7b\x3d\x7f\x3e\x78\ \x30\x21\x3a\x48\x8f\x3a\x8a\xa2\x87\x88\x88\x18\x01\x7f\x64\x2e\ \xa0\xb7\x20\x0e\xdb\xc7\x89\x26\x3e\xfc\x97\xbd\x0e\xc8\xf1\xe3\ \x09\xd1\x41\xb9\x75\x2b\xbd\xcf\x11\x11\x11\x23\xe2\x03\xe6\x02\ \xfa\x31\xc4\x61\xfb\x98\x16\xf4\x07\x5f\x20\xee\xf5\xba\x83\x3e\ \x7b\x36\x41\x3a\x28\xa7\x4f\xa7\xe0\x21\x22\x22\x46\xc4\xdf\x9a\ \x0b\xe8\x23\x89\xc3\xf6\xb1\x28\xe8\x0f\xbe\x9e\x9f\x01\xb9\x74\ \x29\x41\x3a\x20\x53\x5d\xbb\x52\xf0\x10\x11\x11\x23\xe2\xee\x44\ \xfa\x25\x76\x03\x01\xfd\x0c\xe2\xb0\x7d\xac\x0f\xfa\x83\x6f\xed\ \x67\x40\x6e\xde\x4c\x98\x0e\xc2\x2d\x5b\x54\xb2\xb0\x90\x82\x87\ \x88\x88\x18\x21\x6b\x99\x09\xe8\x0b\x88\xc3\xf6\x71\x75\xd0\x1f\ \x7c\x4f\xaf\xc7\x5b\xaa\x57\x27\x48\x07\xb5\x7b\x4e\xf7\x16\x44\ \x44\xc4\xc8\xd9\xc2\x4c\x40\x5f\x4d\x1c\xb6\x8f\xdb\x82\xfe\xe0\ \x47\x78\x1c\x84\x49\x7a\xa0\x07\x67\xcf\x9e\x14\x3a\x44\x44\xc4\ \x88\x79\xb4\x99\x80\x5e\x41\x1c\xb6\x8f\x5f\x04\xfd\xc1\x9f\xea\ \x75\x20\xb6\x6c\x49\x90\x0e\xc2\xca\x4a\xe5\x94\x95\x51\xe8\x10\ \x11\x11\x23\xe6\x30\x33\x01\xfd\x7a\xe2\xb0\x7d\xdc\x17\xf4\x07\ \x3f\xcb\xeb\x40\xec\xd2\x85\x30\x1d\x84\x17\x5e\x48\x91\x43\x44\ \x44\x8c\xa0\x63\xcd\x04\xf4\x1f\x10\x87\xed\xe3\xe1\xa0\x3f\xf8\ \x79\x5e\x07\x62\x9f\x3e\x84\xe9\x20\x1c\x3d\x9a\x22\x87\x88\x88\ \x18\x41\x27\x9a\x09\xe8\xb7\x11\x87\xed\xe3\x37\x41\x7f\xf0\xe7\ \x79\x1d\x88\xc3\x86\x11\xa6\x83\xb8\x20\xaa\x8f\x0e\x51\xe4\x10\ \x11\x11\x23\xe7\xe9\x66\x02\xfa\x9d\xc4\x61\xfb\x78\x3e\xe8\x0f\ \x7e\xb1\xd7\x81\x38\x76\x2c\x81\x3a\xdb\xea\xb6\x95\xf9\xf9\x14\ \x39\x44\x44\xc4\x08\x3a\xc3\x4c\x40\xbf\x97\x38\x6c\x1f\x2f\x07\ \xfd\xc1\x2f\xf3\x3a\x10\x4f\x3f\x9d\x40\x9d\x6d\xe7\xcc\xa1\xc0\ \x21\x22\x22\x46\xd4\x39\x66\x02\xfa\x03\xc4\x61\xfb\x78\x2b\xe8\ \x0f\x7e\x95\xc7\x41\xb8\xaf\x57\x37\xa1\x3a\xab\x26\x8f\x3b\x8e\ \x02\x87\x88\x88\x18\x51\xcf\x35\x13\xd0\x1f\x27\x0e\xdb\xc7\x9e\ \xa0\x3f\xf8\x75\x5e\x07\xa2\xde\xed\x25\x54\x73\xfe\x1c\x11\x11\ \x11\xf7\x79\x81\x99\x80\xfe\x0c\x71\xd8\x3e\x52\x41\x7f\xf0\x97\ \x7b\x1d\x88\x73\xe7\x12\xaa\xb3\xe9\xf6\xed\xca\x29\x28\xa0\xc0\ \x21\x22\x22\x46\xd4\x25\x66\x02\xfa\x0b\xc4\x61\xfb\x70\x82\xfe\ \xe0\x37\x7b\x3d\xe2\x32\x7f\x3e\xa1\x3a\x9b\xc7\x5b\x16\x2e\xa4\ \xb8\x21\x22\x22\x46\xd8\x0b\xcd\x04\xf4\xdf\x12\x87\x73\xf0\x88\ \xcb\x7a\xaf\x03\x51\x07\x4a\x82\x75\xf6\x8e\xb7\x8c\x1b\x47\x71\ \x43\x44\x44\xe4\x88\x0b\x47\x5c\x22\xc8\x3b\x41\x7f\xf0\x6b\xbd\ \x0e\xc4\xc5\x8b\x09\xd6\xd9\x0c\xe8\x5d\xbb\x52\xdc\x10\x11\x11\ \x23\xec\x02\x33\x01\xfd\x09\xe2\xb0\x7d\xbc\x11\xf4\x07\xbf\xd2\ \xeb\x40\x5c\xba\x94\x60\x9d\x4d\x6b\xd7\xa6\xb8\x21\x22\x22\x46\ \xd8\x79\x66\x02\xfa\x23\xc4\x61\xfb\x78\x25\xe8\x0f\x7e\xb9\xd7\ \x81\xb8\x6c\x19\xa1\x3a\x9b\x0f\x14\x51\xd8\x10\x11\x11\xe9\x83\ \x9e\xa0\x0f\x7a\x14\x79\x31\xe8\x0f\x7e\x29\x3b\xe8\xe6\x3d\xef\ \x3c\x0a\x1b\x22\x22\x62\xc4\x9d\x69\x26\xa0\xff\x92\x38\x6c\x1f\ \xcf\x07\xfd\xc1\x2f\xf6\x3a\x10\x2f\xba\x88\x60\x9d\x2d\x4f\x39\ \x85\xc2\x86\x88\x88\x18\x71\xcf\x34\x13\xd0\x7f\x41\x1c\xb6\x8f\ \xa7\x83\xfe\xe0\x2f\xf0\xda\x66\x91\x4b\xa2\xd9\x6b\xb1\xd8\xaf\ \x1f\x85\x0d\x11\x11\x31\xe2\x4e\x36\x13\xd0\xef\x20\x0e\xdb\xc7\ \xe3\x41\x7f\xf0\x73\x3d\x0e\xc2\x24\x6d\x16\xb3\x67\x8b\x16\x14\ \x36\x44\x44\xc4\x88\x3b\xd6\x4c\x40\xbf\x8d\x38\x6c\x1f\xbf\x0a\ \xfa\x83\x9f\xea\x75\x20\x9e\x7f\x3e\xc1\x3a\x1b\x56\x56\x2a\xa7\ \xb8\x98\xc2\x86\x88\x88\x18\x71\x8f\x35\x13\xd0\xaf\x27\x0e\xdb\ \xc7\x4f\x82\xfe\xe0\x27\x78\x3d\xe2\xc2\x4b\xa2\xd9\x71\xdd\x3a\ \x8a\x1a\x22\x22\x62\x0c\xec\x69\x26\xa0\xef\x24\x0e\xdb\xc7\x8d\ \x41\x7f\xf0\x23\xbc\x06\xf4\x73\xce\x21\x5c\x67\xc3\x0b\x2e\xa0\ \xa8\x21\x22\x22\xc6\xc0\x8e\x66\x02\xfa\x65\xc4\x61\xfb\xb8\x32\ \xe8\x0f\x7e\x80\xd7\x80\x3e\x7b\x36\xe1\x3a\x1b\x4e\x9b\x46\x51\ \x43\x44\x44\x8c\x81\xcd\xcc\x04\xf4\x25\xc4\x61\xfb\xd8\x1c\xf4\ \x07\x7f\xb4\xd7\x4b\xa2\x53\xa7\x12\xae\xb3\xe1\xe8\xd1\x14\x35\ \x44\x44\xc4\x18\x58\xcf\x4c\x40\x9f\x4b\x1c\xb6\x8f\x15\x41\x7f\ \xf0\xed\xbc\x0e\xc4\x49\x93\x08\xd7\xd9\xb0\x6f\x5f\x8a\x1a\x22\ \x22\x62\x0c\xac\x66\x26\xa0\x4f\x25\x0e\xdb\xc7\x05\x41\x7f\xf0\ \x4d\xbd\x1e\x71\x19\x37\x8e\x70\x9d\x0d\xdb\xb6\xa5\xa8\x21\x22\ \x22\x46\xdc\x77\xcc\x84\x73\xed\x38\xe2\xb0\x7d\xcc\x09\xfa\x83\ \x2f\xf1\x3a\x18\x47\x8d\x22\x5c\x67\xc3\xfa\xf5\x29\x6c\x88\x88\ \x88\x11\xf7\x37\xe6\x02\xfa\xb1\xc4\x61\xfb\x98\x64\xe2\xc3\x7f\ \xdb\xcb\x60\x1c\x3a\x94\x70\x9d\x8d\x57\x44\x0b\x0b\x29\x6c\x88\ \x88\x88\x11\xf7\xe7\xe6\x02\x7a\x37\xe2\xb0\x7d\x0c\x35\xf1\xe1\ \x3f\xe5\x65\x30\xea\xe7\xe9\x09\xd8\x55\x73\xdb\x36\x8a\x1a\x22\ \x22\x62\x0c\xbc\xc1\x5c\x40\x6f\x4c\x1c\xb6\x8f\x2e\x26\x3e\xfc\ \xbb\xbd\x0c\xc6\x6e\xdd\x08\xd8\x55\x75\xcd\x1a\x8a\x1a\x22\x22\ \x62\x0c\xdc\x62\x26\x9c\x7f\x21\x16\x10\x87\xed\xa3\xb1\x89\x80\ \xfe\x7d\x2f\x97\x44\xdb\xb4\x21\x60\x57\xd5\x25\x4b\x28\x6a\x88\ \x88\x88\x31\x70\xa9\x99\x80\xfe\x47\xa2\xb0\x9d\x14\x89\x5f\x06\ \x3d\x00\x76\x79\x19\x8c\xe5\xe5\x04\xec\x2a\x9a\x3a\xf7\x5c\x8a\ \x1a\x22\x22\x62\x0c\xfc\x96\x99\x80\xfe\x12\x51\xd8\x5e\xfe\x1a\ \xf4\x00\x58\xe5\x65\x30\x96\x96\x12\xb2\xab\xea\xf4\xe9\x14\x35\ \x44\x44\xc4\x18\x38\xce\x4c\x40\xff\x35\x31\xd8\x5e\xde\x08\x7a\ \x00\xcc\xf3\x32\x18\xf3\xf2\x94\x53\x51\x41\xc8\xae\x8a\xa7\x9c\ \x42\x51\x43\x44\x44\x8c\x81\x3d\xcd\x04\xf4\x9b\x89\xc1\xf6\xf2\ \x58\xd0\x03\xe0\x24\x8f\x83\x31\xb5\x69\x13\x21\xbb\x2a\x8e\x19\ \x43\x51\x43\x44\x44\x8c\x81\x8d\xcd\x04\xf4\x9d\xc4\x60\x7b\xf9\ \x69\xd0\x03\xa0\x97\xd7\x01\xb9\x7c\x39\x21\xbb\x2a\x1e\x7f\x3c\ \x45\x0d\x11\x11\x31\xe2\xee\x16\xf3\xcd\x04\xf4\xa5\xc4\x60\x7b\ \xb9\x22\xe8\x01\xd0\xd4\xeb\xa0\x5c\xb0\x80\x90\x5d\x95\x4b\xa2\ \x23\x46\x50\xd8\x10\x11\x11\x23\xee\xe3\x09\x63\x3d\xd0\x4f\x23\ \x06\xdb\xcb\xd2\xa0\x07\x40\x81\xb8\xc7\xcb\xa0\x9c\x3a\x95\xa0\ \x5d\x15\x8f\x3d\x96\xc2\x86\x88\x88\x18\x71\x6f\x35\x17\xd0\xfb\ \x10\x83\xed\xe5\x74\x13\x83\xe0\x19\x2f\x83\x72\xf4\x68\x42\x76\ \x55\x76\xd0\x07\x0f\xa6\xb0\x21\x22\x22\x46\xdc\x6d\xe6\x02\x7a\ \x13\x62\xb0\xbd\x0c\x32\x31\x08\xee\xf2\x30\x20\x93\xfd\xfa\x11\ \xb4\xab\xe0\xbe\xbf\x1f\x85\x0d\x11\x11\x31\xd2\x5e\x60\x26\x9c\ \x7f\x22\xe6\x13\x83\xed\xa5\x85\x89\x80\x7e\x95\x97\x41\xd9\xb1\ \x23\x41\xbb\x2a\xf6\xee\x4d\x61\x43\x44\x44\x8c\xb8\x63\xcd\x04\ \xf4\x37\x89\xc0\x76\xa3\x5f\x13\xfd\x22\xe8\x81\x70\x91\x97\x41\ \xd9\xa4\x09\x21\xbb\x2a\x47\x5c\x7a\xf6\xa4\xb0\x21\x22\x22\x46\ \xdc\x8e\x66\x02\xfa\x7d\x44\x60\xfb\xd9\x1b\xf4\x40\x98\xe8\x61\ \x40\xa6\xaa\x57\x27\x68\xb3\x83\x8e\x88\x88\x98\xb3\xbe\x2f\x16\ \x9b\x09\xe8\xd7\x11\x7f\xed\xe7\xf1\xa0\x07\x42\x77\xaf\x83\x73\ \xe3\x46\x82\x36\x67\xd0\x11\x11\x11\x69\xb1\x18\xac\x97\x10\x7f\ \xed\xe7\x07\x41\x0f\x84\xda\x5e\x07\xe7\x05\x17\x10\xb6\x33\x75\ \xd0\x20\x8a\x1b\x22\x22\x62\x84\xbd\xc1\x5c\x40\x3f\x99\xf8\x6b\ \x3f\x2b\x4c\x0c\x86\x17\xbc\x0c\xce\x33\xce\x20\x68\x67\xea\xd0\ \xa1\x14\x37\x44\x44\xc4\x08\xbb\xdc\x5c\x40\xef\x48\xfc\xb5\x9f\ \xc9\x26\x06\xc3\x1d\x5e\xce\xa1\xeb\xd7\x30\x09\xdb\x99\x1d\x71\ \x39\xee\x38\x8a\x1b\x22\x22\x62\x84\x3d\xcd\x4c\x38\xff\x4c\xac\ \x46\xfc\xb5\x9f\x1e\x26\x02\xfa\x76\x2f\x83\xb3\x5b\x37\xc2\x76\ \xa6\x8e\x1c\x49\x71\x43\x44\x44\x8c\xb0\x9d\xcd\x04\xf4\xd7\x88\ \xbe\xd1\xa0\xa6\xf8\x65\xd0\x03\xe2\x2c\x2f\x3b\xe8\xb4\x5a\xcc\ \xdc\x71\xe3\x28\x6e\x88\x88\x88\x11\x75\xb7\x58\x64\x26\xa0\xff\ \x84\xe8\x4b\xab\xc5\xff\x38\xc0\xcb\x00\x2d\x2a\x52\x4e\x45\x05\ \x61\x3b\x93\x3e\xe8\x93\x27\x53\xe0\x10\x11\x11\x23\xea\xdd\xe6\ \xce\x9f\xaf\x23\xf6\x46\x87\x07\x83\x1e\x10\xf5\xbc\x0e\xd2\xe5\ \xcb\x09\xdc\x99\x38\x6b\x16\x05\x0e\x11\x11\x31\xa2\x6e\x31\x17\ \xd0\xcf\x24\xf6\x46\x87\x6b\x4c\x0c\x8a\xe7\xbc\x0c\xd2\x19\x33\ \x08\xdb\x99\x38\x7f\x3e\x05\x0e\x11\x11\x31\xa2\x4e\x33\x17\xd0\ \x8f\x26\xf6\x46\x87\x85\x26\x06\xc5\x8d\x74\x72\x09\xce\x25\x4b\ \x28\x70\x88\x88\x88\x11\xb5\xbb\x99\x70\xfe\x09\x1d\x5c\xa2\xc5\ \xb1\x26\x02\xfa\xc5\x5e\x06\x69\xc7\x8e\x84\xed\x4c\x5c\xbd\x9a\ \x02\x87\x88\x88\x18\xd1\x0b\xa2\xd5\xcd\x04\xf4\x67\x88\xbc\xd1\ \xa2\xbe\x89\x80\x3e\xd6\xcb\x40\xad\x5d\x9b\xb0\x9d\x89\x5b\xb6\ \x50\xe4\x10\x11\x11\x23\xe8\xcf\xcd\x1d\x6f\xb9\x86\xc8\x1b\x3d\ \xf6\x04\x3d\x30\x5a\x79\x1c\xa8\xa9\x8d\x1b\x09\xdc\x99\x74\x72\ \xa9\x5e\x9d\x42\x87\x88\x88\x18\x31\x57\x99\x0b\xe8\x73\x89\xbb\ \xd1\xe3\xae\xa0\x07\x46\x9e\xf8\xb2\x97\x80\x7e\xee\xb9\x04\xee\ \x4c\x2c\x2f\xa7\xd0\x21\x22\x22\x46\xcc\xd1\xe6\x02\x7a\x6f\xe2\ \x6e\xf4\xb8\xcc\xc4\xe0\xf8\x9e\x97\xc1\x7a\xc2\x09\x84\xed\x4c\ \x6c\xdf\x9e\x42\x87\x88\x88\x18\x31\x1b\x99\x09\xe7\x9f\x89\x25\ \xc4\xdd\xe8\x31\xd1\x44\x40\x3f\x8f\x8b\xa2\xc1\xd9\xbb\x37\x85\ \x0e\x11\x11\x31\x42\x3e\x6e\x6e\xf7\xfc\x05\xa2\x6e\x34\x69\x6b\ \x62\x80\x78\x7a\x51\xb4\xa4\x44\x39\x95\x95\x04\x6e\xbf\x67\xd0\ \x47\x8e\xa4\xd8\x21\x22\x22\x46\xc8\x1d\xe6\x02\xfa\x75\x44\xdd\ \x68\x92\x27\xfe\x25\xe8\x01\x52\x26\xbe\xef\x65\xd0\xae\x58\x41\ \xe8\xf6\xeb\xa4\x49\x14\x3b\x44\x44\xc4\x08\x79\x9a\xb9\x80\x3e\ \x93\xa8\x1b\x5d\xee\x31\x31\x48\xee\xf3\x32\x68\xa7\x4c\x21\x70\ \xfb\xdd\x41\x3f\xe7\x1c\x8a\x1d\x22\x22\x62\x84\x3c\xcc\x5c\x40\ \x6f\x47\xcc\x8d\x2e\xab\x4c\x0c\x92\xf5\x5e\x06\xed\xc0\x81\x84\ \x6e\xbf\xae\x5a\x45\xb1\x43\x44\x44\x8c\x88\x8f\x98\x0b\xe7\x7f\ \x70\x4f\x4a\x40\x44\x19\x65\x62\xa0\x9c\xe8\x65\xe0\xea\x96\x81\ \x84\x6e\x7f\x56\x54\xa8\x64\x61\x21\x45\x0f\x11\x11\x31\x02\xae\ \x33\x17\xd0\x7f\x4c\xc4\x8d\x36\x75\xc5\x2f\x83\x1e\x28\xf2\x1f\ \xa2\xf6\x7a\x19\xbc\xeb\xd6\x11\xba\xe9\x85\x8e\x88\x88\x18\x4b\ \x47\x9a\x0b\xe8\x17\x10\x71\xa3\xcf\xcb\x26\x06\xcb\x3d\x5e\x06\ \xef\xb4\x69\x04\x6e\xbf\xe7\xd0\xbb\x76\xa5\xe8\x21\x22\x22\x5a\ \xee\x6e\xb7\x71\x86\xa1\x80\x7e\x0c\xf1\x36\xfa\x5c\x6f\x62\xb0\ \xac\xf0\x32\x80\xfb\xf6\x25\x74\xfb\x75\xd8\x30\x0a\x1f\x22\x22\ \xa2\xe5\xde\x61\x2e\x9c\xff\x43\x2c\x22\xde\x46\x9f\x39\x26\x06\ \xcc\x30\x2f\x03\xb8\x41\x03\x02\xb7\x5f\x4f\x3f\x9d\xc2\x87\x88\ \x88\x68\xb9\xe7\x99\x0b\xe8\x77\x13\x6d\xe3\xc1\x91\x26\x06\x4c\ \xa9\xfb\xf3\xce\xa1\x06\x70\x6a\xf5\x6a\x42\xb7\x1f\x2f\xba\x88\ \xc2\x87\x88\x88\x68\xb9\x1d\x38\x7f\x0e\x3e\xd1\x6d\x78\x52\x26\ \x06\xcd\x8f\xbd\x0c\xe2\xc9\x93\x09\xdd\x7e\xdc\xbe\x5d\x39\x79\ \x79\x14\x3f\x44\x44\x44\x4b\x7d\xdc\x5c\x38\xd7\x76\x26\xda\xc6\ \x87\x1f\x98\x18\x34\xf3\xbc\x0c\xe4\xce\x9d\x09\xdd\x74\x72\x41\ \x44\x44\x8c\x8d\xab\xcc\x85\xf3\x24\xfd\xcf\xe3\xc5\x0c\x13\x03\ \xa7\x8d\x97\x81\x5c\x54\x94\xde\x15\x26\x78\x7b\x36\xd9\xbd\x3b\ \x05\x10\x11\x11\xd1\x52\x7b\x99\x0b\xe8\xd7\x13\x69\xe3\x45\x4b\ \x53\x3f\xbd\xfc\xc6\xcb\x60\x9e\x37\x8f\xe0\xed\xc7\xb1\x63\x29\ \x80\x88\x88\x88\x16\xfa\xb2\x58\x60\x2e\xa0\x9f\x41\xa4\x8d\x1f\ \x6f\x9b\x18\x3c\xeb\xbc\x0c\xe8\x21\x43\x08\xdd\x7e\x3c\xfb\x6c\ \x8a\x20\x22\x22\xa2\x85\x6e\x37\x17\xce\xf5\xc3\x93\xe5\xc4\xd9\ \xf8\xf1\x3f\xb6\xb4\x5b\x4c\xd5\xab\x47\xe8\xf6\xe3\xc6\x8d\x14\ \x41\x44\x44\x44\x0b\x1d\x64\x2e\xa0\x3f\x47\x94\x8d\x27\x93\x4d\ \x0c\xa0\xea\xe2\x9b\x5e\x06\xf5\xf2\xe5\x04\x6f\x3f\xd6\xaf\x4f\ \x21\x44\x44\x44\xb4\xc8\xdf\x89\x85\xe6\x02\xfa\x4a\xa2\x6c\x3c\ \xa9\x27\x7e\x6e\x62\x10\x55\x7a\x19\xd8\xc7\x1f\x4f\xe8\xf6\x61\ \xaa\x67\x4f\x8a\x21\x22\x22\xa2\x45\xae\x35\xdb\x5e\xb1\x0b\x51\ \x36\xbe\x3c\x61\x62\x10\x8d\xf6\x30\xa8\x93\x8d\x1a\x11\xbc\xfd\ \x38\x69\x12\xc5\x10\x11\x11\xd1\x22\x7b\x9a\x0b\xe7\xef\x12\x61\ \xe3\xcd\xc5\x26\x06\x52\xb1\xf8\xba\x97\xc1\x7d\xc9\x25\x04\x6f\ \xaf\x3b\xe8\x4b\x96\x50\x0c\x11\x11\x11\x2d\xf1\x49\x31\xcf\x5c\ \x40\xdf\x4a\x84\x8d\x37\x47\x99\xfa\x29\xe6\x6a\x8e\xb9\x64\xd7\ \x5d\xbb\x54\xaa\x5a\x35\x8a\x22\x22\x22\xa2\x05\x2e\x37\x7b\xbc\ \x65\x08\x11\x36\xde\xe8\xd7\xa7\xde\x37\x31\x98\xc6\x7a\x19\xe0\ \x4d\x9a\x10\xbc\xfd\xd8\xba\x35\x45\x11\x11\x11\xd1\x02\x3b\x9a\ \x0b\xe7\xff\x2b\x16\x12\x61\xe3\xcf\xd5\x26\x06\x54\x0d\xf1\x6d\ \x2f\x67\xd1\x39\xe6\xe2\xdd\x51\xa3\x28\x8a\x88\x88\x88\x21\xfb\ \x0b\xb3\xbb\xe7\xdf\x21\xba\xe6\x06\x63\x4d\x0d\xaa\xab\xbc\x0c\ \xf4\x61\xc3\x08\xde\x5e\x5d\xb0\x80\xc2\x88\x88\x88\x18\xb2\x67\ \x9a\x0d\xe8\x23\x89\xae\xb9\x41\x89\xf8\x77\x13\x83\xea\x38\x2f\ \x03\xbd\x66\xcd\x7d\xe7\xab\x09\xe0\x1e\xdc\xb1\x43\x39\x45\x45\ \x14\x47\x44\x44\xc4\x90\xd4\xa7\x03\x6a\x99\x0b\xe7\x7f\xe4\x78\ \x4b\x6e\x71\xb3\x89\x81\xa5\x9b\xf7\xff\xd6\xcb\x80\x9f\x3b\x97\ \xf0\xed\xd5\x36\x6d\x28\x90\x88\x88\x88\x21\xb9\xcb\xec\xee\xf9\ \x15\x44\xd6\xdc\xe2\x24\x53\x83\x6b\xb9\x97\x01\xdf\xbd\x3b\xc1\ \xdb\xab\x27\x9c\x40\x81\x44\x44\x44\x0c\xc9\x5e\x66\x03\x7a\x5f\ \x22\x6b\x6e\x51\x43\xfc\x87\x89\xc1\xd5\xd1\xcb\x80\xd7\xc7\x36\ \x2e\xbf\x9c\xf0\xed\xc5\xf3\xce\xa3\x40\x22\x22\x22\x86\xe0\x23\ \x09\xa3\xbd\xcf\xf7\x88\xf9\x44\xd6\xdc\xe3\x87\xa6\xbe\x01\xde\ \xe3\x65\xe0\x4f\x9e\x4c\xf8\xf6\xf2\x60\x11\xe7\xd0\x11\x11\x11\ \x43\x71\x9a\xd9\xdd\xf3\x8d\x44\xd5\xdc\x64\xa2\xa9\x41\xf6\x2d\ \x2f\x03\xff\xb0\xc3\x08\xe0\x5e\xed\xd4\x89\x42\x89\x88\x88\x68\ \xd0\x37\xc4\x9a\x66\x03\x7a\x77\xa2\x2a\xc7\x5c\x02\xb5\xb6\xf8\ \x8e\x97\x09\xb0\x68\x11\xe1\xdb\x8b\x93\x26\x51\x2c\x11\x11\x11\ \x0d\xba\xce\x6c\x38\xff\x1d\x31\x35\xb7\xb9\xc9\xd4\x60\xdb\xee\ \x65\x02\xf4\xea\x45\xf8\xf6\xe2\x9a\x35\x14\x4b\x44\x44\x44\x43\ \x26\xc5\xd6\x66\x03\xfa\x02\x22\x6a\x6e\x73\x82\xa9\xc1\x76\xb4\ \x97\x09\x50\x58\xa8\x52\x9b\x36\x11\xc0\xbd\xd8\xa8\x11\x45\x13\ \x11\x11\xd1\x80\x3f\x34\x1b\xce\x3f\x11\xeb\x13\x51\x73\x1b\xdd\ \xfc\x3e\x65\xd5\x65\xd1\xf1\xe3\x09\xdf\x5e\x1c\x32\x84\xa2\x89\ \x88\x88\x68\xc0\x61\x66\x03\xfa\xcd\xc4\x53\xd0\x6c\x31\x35\xe8\ \x4e\xf7\x32\x11\xf4\xce\x70\x65\x25\x01\xfc\x50\xce\x9b\x47\xd1\ \x44\x44\x44\x0c\xd8\xfb\xcd\xb6\x56\xd4\x0e\x27\x9a\x82\xa6\xab\ \xa9\x41\x57\x43\x7c\xcd\xcb\x84\x98\x3d\x9b\x00\x7e\xa8\x76\x8b\ \x3b\x77\x2a\xa7\x7a\x75\x8a\x27\x22\x22\x62\x80\x9e\x6c\x36\x9c\ \xbf\x97\xa0\xf7\x39\xec\xc7\x73\xa6\x06\xdf\x6a\x2f\x13\xa2\x55\ \x2b\x42\xb8\x07\x93\xfa\x05\x56\x8a\x27\x22\x22\x62\x20\xfe\x46\ \x2c\x34\x1b\xd0\x57\x12\x49\x61\x7f\xce\x37\x35\xf8\x8e\x10\xf7\ \x78\x99\x18\x8b\x17\x13\xc2\x0f\xe5\x8c\x19\x14\x50\x44\x44\xc4\ \x80\x9c\x69\x36\x9c\xff\x4b\x6c\x4c\x24\x85\xfd\x69\x24\x7e\x66\ \x6a\x10\x5e\xe5\xa5\xa3\x8b\xde\x1d\x26\x84\x1f\xdc\x2d\x5b\x94\ \x53\x58\x48\x11\x45\x44\x44\xcc\xb2\x2f\x8a\x25\x66\x03\xfa\xf7\ \x89\xa3\x70\x20\x7e\x6a\x6a\x10\x76\xf7\x32\x39\x0a\x0a\x94\x73\ \xd9\x65\x84\xf0\x43\x1d\x73\xe9\xd0\x81\x42\x8a\x88\x88\x98\x65\ \x17\x9a\x0d\xe7\xda\x3e\x44\x51\x38\x10\xa3\x4c\x0e\xc4\x3b\xbc\ \x4c\x90\xc1\x83\x09\xe1\x87\x72\xf2\x64\x0a\x29\x22\x22\x62\x16\ \xd5\x0d\x2d\x6a\x99\x0d\xe7\x4f\x11\x43\xe1\x9b\xd0\xb7\x86\xdf\ \x32\x35\x18\x8f\xf7\x30\x41\x52\xd5\xaa\xf1\x70\xd1\xa1\xba\xb9\ \xac\x5f\xaf\x9c\xbc\x3c\x0a\x2a\x22\x22\x62\x74\x77\xcf\xa7\x12\ \x43\xe1\x60\x5c\x64\x6a\x30\x16\x88\x8f\x79\x39\x8b\x7e\xdc\x71\ \x04\xf1\x43\xd9\xae\x1d\x05\x15\x11\x11\x31\x0b\xbe\x2c\xd6\x34\ \x1b\xce\xff\x20\x16\x13\x41\xe1\x60\x34\x48\xa4\x9f\x98\x35\x32\ \x28\x4f\xf5\x32\x59\xd8\x45\x3f\xf4\x2e\x3a\xc7\x5c\x10\x11\x11\ \xb3\xe2\x7c\xf3\xbb\xe7\x6b\x89\x9f\xe0\x85\x1b\x4d\x0d\xca\x22\ \xf1\x49\x2f\x13\xe6\xf8\xe3\x09\xe2\x07\x53\x7f\x81\xd1\x97\x6a\ \x29\xac\x88\x88\x88\x55\xea\xdc\x52\x6a\x36\x9c\xeb\x4d\xd1\x26\ \x44\x4f\xf0\x42\x3f\x93\xdf\x1c\xa7\x7a\x99\x34\xa5\xa5\x2a\xb9\ \x75\x2b\x41\xfc\x60\x76\xec\x48\x71\x45\x44\x44\xac\x82\x73\xcd\ \xef\x9e\x5f\x4d\xec\x04\x3f\x3c\x6a\xdd\x2e\xfa\xa8\x51\x84\xf0\ \x83\xb5\x5b\x9c\x3a\x95\xe2\x8a\x88\x88\x98\xa1\x4f\xb8\x99\xc4\ \x60\x38\xd7\xef\xcf\xb4\x24\x72\x82\x1f\x4e\x35\xf9\x0d\x72\x86\ \xd7\xb3\xe8\x1b\x37\x12\xc6\xbf\x49\xfd\x0b\x43\x51\x11\x45\x16\ \x11\x11\x31\x03\x4f\x35\xbf\x7b\x7e\x2b\x71\x13\xfc\x52\x28\xee\ \x36\x35\x48\x8b\xc5\xe7\xbc\x4c\x20\x3a\xba\x1c\xdc\xae\x5d\x29\ \xb2\x88\x88\x88\x3e\xbd\xdf\xed\x2e\x67\x38\xa0\xf7\x20\x6e\x42\ \x26\x9c\x6f\x72\xa0\x4e\xf6\x32\x89\xf4\xb3\xf6\x6b\xd6\x10\xc4\ \xbf\xc9\xb3\xce\xa2\xd0\x22\x22\x22\xfa\xb4\xbf\xf9\x70\xfe\x0b\ \x62\x26\x64\x4a\x6d\xf1\x43\x93\x67\xd1\x1f\xf7\x32\x91\xfa\xf6\ \x25\x88\x7f\x53\xbb\xc5\x8a\x0a\x95\xac\x59\x93\x62\x8b\x88\x88\ \xe8\xd1\x5b\xcd\x87\x73\xed\x71\xc4\x4c\xa8\x0a\x3b\x4c\x0e\xd8\ \x09\x5e\x26\x93\x6e\x27\xb8\x62\x05\x81\xfc\x9b\x1c\x3c\x98\x82\ \x8b\x88\x88\xe8\xc1\xa4\xd8\xd5\x7c\x38\x7f\x8a\x78\x09\x55\xa5\ \x95\x7b\xcb\xd8\xc8\xa0\xcd\x77\xcf\x81\x1d\x6a\x42\xa5\x3a\x75\ \x22\x88\x7f\x93\x17\x5f\x4c\xd1\x45\x44\x44\xf4\xe0\x15\xe1\xec\ \x9e\x9f\x40\xbc\x84\x6c\x70\x83\xc9\x81\x3b\xd2\xe3\xa4\x4a\x9d\ \x7b\x2e\x61\xfc\x9b\x3c\xec\x30\x0a\x2f\x22\x22\xe2\x41\x7c\x4b\ \x6c\x62\x3e\x9c\x3f\x49\xac\x84\x6c\xd1\x41\xfc\xc2\xe4\x00\xbe\ \xc3\xcb\xe4\x6a\xdc\x78\xdf\x99\x6b\x02\xf9\x01\x3c\xf9\x64\x8a\ \x2f\x22\x22\xe2\x41\x3c\x3f\x9c\xdd\xf3\x51\xc4\x4a\xc8\x26\xdf\ \x37\x39\x80\x3b\x89\x7b\xbd\x4c\xb0\x29\x53\x08\xe3\x07\xba\x2c\ \xba\x61\x43\xfa\xac\x3e\x05\x18\x11\x11\xf1\x6b\x3e\x9a\x30\xfe\ \x28\x91\xf6\x41\xe2\x24\x64\x9b\x8e\xa6\x77\xd1\xb7\x7b\x39\xe6\ \x52\xbb\xb6\x72\xb6\x6d\x23\x94\x1f\xe8\x65\xd1\xa3\x8e\xa2\x08\ \x23\x22\x22\x1e\xc0\x11\xe1\xec\x9e\x0f\x25\x4e\x42\x10\xdc\x61\ \x72\x20\xeb\x73\x61\x6f\x7b\x99\x68\x43\x87\x12\xc8\x0f\xe4\x82\ \x05\x14\x61\x44\x44\x44\x3b\xda\x2a\x3e\x4c\x8c\x84\xa0\x38\x4a\ \xfc\xd2\xe4\x80\x3e\xdf\xcb\x64\xcb\xcf\x4f\x77\x2e\x21\x94\x7f\ \xd5\xca\x4a\x95\x6c\xd4\x88\x62\x8c\x88\x88\xb8\xdf\xc5\xd0\xc3\ \xcd\x87\xf3\x2f\xdc\x0c\x05\x10\x18\x77\x9b\x1c\xd4\x35\xc4\xe7\ \xbc\x4c\xba\x56\xad\xf6\x05\x52\x82\xf9\xff\x3b\x8b\x3e\x7e\x3c\ \x05\x19\x11\x11\xd1\xf5\x82\x70\x76\xcf\x6f\x23\x3e\x42\xd0\xf4\ \x30\xbd\x8b\x3e\xc9\xeb\xc4\x9b\x3a\x95\x50\xfe\xff\xdd\xb4\x49\ \x25\x0b\x0b\x29\xca\x88\x88\x98\xf3\x3e\x2c\x56\x33\x1f\xce\x3f\ \x15\xdb\x12\x1f\xc1\x04\x37\x99\xfe\xf6\x79\x9b\x97\xc9\x57\xab\ \x96\x72\xb6\x6c\x21\x94\xff\x7f\xbb\x77\xa7\x30\x23\x22\x62\x4e\ \xab\x3b\xc3\x75\x0f\x67\xf7\x7c\x3b\xb1\x11\x4c\xd1\xd6\xfd\x46\ \x68\x6c\x80\xb7\x13\x77\x7b\x99\x84\x83\x06\x11\xc8\xff\xbf\xe7\ \x9d\x47\x71\x46\x44\xc4\x9c\x76\x63\x38\xe1\xfc\xcf\x62\x5d\x62\ \x23\x98\xe4\x3b\xa6\x07\xfa\x65\x5e\x26\x61\x5e\x9e\x72\xe6\xcf\ \x27\x94\xf3\xb2\x28\x22\x22\xe2\x3e\x5f\x10\xeb\x86\x13\xd0\x97\ \x13\x17\xc1\x34\x2d\xc4\x7f\x99\x1c\xe8\xb5\xc4\xdf\x79\x99\x8c\ \x8d\x1a\xa9\xd4\x8e\x1d\x84\xf2\xfd\x3d\xe3\x0c\x8a\x34\x22\x22\ \xe6\xa4\x27\x86\x13\xce\xf7\x8a\xa5\xc4\x45\x08\x83\x5d\xa6\x07\ \xfc\x29\x5e\x27\xe4\x88\x11\x84\xf2\xfd\xbb\xb9\xe8\x2f\x2c\xa5\ \xa5\x14\x6a\x44\x44\xcc\x29\xaf\x0e\x27\x9c\x6b\x4f\x27\x26\x42\ \x58\x34\x12\x3f\x30\x3d\xe8\x6f\xf6\x30\x21\x93\xba\x37\xfa\x92\ \x25\x84\xf3\xfd\x43\xba\xfe\xd2\x42\xb1\x46\x44\xc4\x1c\xf1\x25\ \xb1\x41\x38\xe1\xfc\x11\x31\x8f\x98\x08\x61\xb2\xd8\xf4\xc0\x3f\ \x4c\x7c\xc3\xcb\xe4\x6c\xde\x5c\xa5\x2a\x2a\x08\xe7\xff\x76\xf5\ \xea\xf4\x19\x7d\x8a\x36\x22\x22\xe6\x80\x23\xc2\x09\xe7\xba\x89\ \xc6\x91\xc4\x43\x08\x9b\xea\xe2\x7b\xa6\x27\xc0\x5c\xaf\x13\x74\ \xcc\x18\x82\xf9\xfe\xbb\xe8\x5d\xbb\x52\xb4\x11\x11\x31\xf6\x5e\ \x1f\xde\xd1\x96\x2b\x89\x86\x60\x0b\x93\x4d\x4f\x80\x42\xf1\x5e\ \xaf\x47\x5d\x2e\xba\x88\x70\xee\x9a\x5c\xb8\x90\xc2\x8d\x88\x88\ \xb1\xf6\x45\xb1\x51\x78\x6d\x15\xeb\x13\x0b\xc1\x16\xf4\x39\xab\ \x27\x4d\x4f\x84\x2e\xe2\x1e\x2f\x93\xb5\x71\x63\xe5\xd0\xd5\xe5\ \xbf\xb6\x68\x41\x01\x47\x44\xc4\xd8\x3a\x2a\xbc\xdd\xf3\x79\x44\ \x42\xb0\x8d\xfe\xe2\x97\xa6\x27\xc3\x52\xaf\x13\x76\xf8\x70\x82\ \xf9\xbf\x8f\xb9\xcc\x9c\x49\x01\x47\x44\xc4\x58\xba\x2d\xbc\x70\ \xfe\x94\x58\x40\x1c\x04\x1b\xb9\xd9\xf4\x84\x28\x12\x7f\xe5\xf1\ \xa8\x4b\xea\xc2\x0b\x09\xe8\xda\x5d\xbb\x94\x53\xa7\x0e\x85\x1c\ \x11\x11\x63\xe5\x13\x62\x59\x38\xe1\xfc\x73\xb1\x3b\x31\x10\x6c\ \xa5\x5c\xfc\xab\xe9\x89\xd1\x46\x7c\xc7\xcb\xe4\xad\x5b\x57\x39\ \x9b\x37\x13\xd0\xb5\x13\x26\x50\xcc\x11\x11\x31\x36\xee\x16\xbb\ \x86\xb7\x7b\xbe\x99\x08\x08\xb6\xb3\x38\x8c\xc9\x31\xdf\xeb\x24\ \x3e\xfa\x68\xc2\xb9\xbe\x2c\xba\x75\xab\x72\x4a\x4a\x28\xea\x88\ \x88\x18\x0b\x2f\x0e\x2f\x9c\xeb\x17\x43\x6b\x12\xff\xc0\x76\xf4\ \xf9\xab\xdf\x9a\x9e\x20\xf9\xe2\x8f\x3d\x4e\xe2\x7d\x67\xb0\x09\ \xe9\xca\x19\x3a\x94\xa2\x8e\x88\x88\x91\xf7\x2e\xb7\xbb\x5b\x48\ \x01\xfd\x78\xa2\x1f\x44\x85\xa1\x61\x4c\x92\xd6\xe2\xdb\x5e\x26\ \x73\x71\xb1\x4a\xad\x5c\xc9\x65\xd1\x0d\x1b\x94\x53\x54\x44\x71\ \x47\x44\xc4\xc8\xaa\x1f\x2e\x6c\x19\x5e\x38\xff\x19\x91\x0f\xa2\ \xc6\x0f\xc3\x98\x2c\x67\x7b\x9d\xd4\xad\x5a\xf1\xca\xa8\x3e\xea\ \xd2\xaf\x1f\x05\x1e\x11\x11\x23\xeb\xc4\xf0\xc2\xf9\x07\x62\x33\ \xe2\x1e\x44\x8d\xa6\xe2\x87\x61\x1c\x75\xb9\xcd\xeb\xc4\x1e\x32\ \x84\x80\xbe\x76\xad\x72\x0a\x0b\x29\xf2\x88\x88\x18\x39\x77\x86\ \x17\xce\xb5\x67\x11\xf5\x20\xaa\x2c\x0a\x63\xd2\x34\x11\x5f\xf1\ \x3a\xc1\xa7\x4d\xe3\x2c\x7a\xdf\xbe\x14\x7a\x44\x44\x8c\x94\x8f\ \x8a\xa5\xe1\x85\xf3\xfb\x12\xe9\x47\x1a\x01\x22\x49\xa1\xf8\x4c\ \x18\x93\x67\xb4\xd7\x49\x5e\x5c\xac\x9c\xe5\xcb\x73\xfb\x2c\xfa\ \xea\xd5\xfb\xfa\xc4\x53\xf0\x11\x11\x31\x0a\xea\xfb\x66\x47\x86\ \x17\xce\xff\x2e\xb6\x24\xe2\x41\xd4\xe9\x20\x7e\x12\xc6\x24\x5a\ \xef\x75\xb2\x97\x97\x2b\x47\xb7\x1d\xcc\xe5\x5d\xf4\x63\x8e\xa1\ \xe8\x23\x22\x62\x24\x1c\x1b\xee\xd1\x96\xd9\x44\x3b\x88\x0b\xeb\ \xc2\x98\x44\x35\xc4\x87\xbd\x4e\xf8\x1e\x3d\x72\x3b\xa0\xeb\x5f\ \x11\xf2\xf2\x28\xfc\x88\x88\x68\xb5\x97\x87\x1b\xce\x1f\x14\xf3\ \x89\x75\x10\x17\xaa\x8b\xaf\x85\x31\x99\x3a\x78\x6d\xbd\xa8\x9d\ \x34\x29\xb7\x43\x7a\xb7\x6e\x14\x7f\x44\x44\xb4\xd6\x7b\xc5\xe2\ \x70\x8f\xb6\xb4\x26\xd2\x41\xdc\x18\x28\x7e\x11\xc6\xa4\x3a\xd5\ \xeb\xe4\x2f\x28\x50\xce\xa2\x45\xb9\x1b\xd0\x97\x2e\x65\x17\x1d\ \x11\x11\xad\xf4\x55\xb1\x59\xb8\xbb\xe7\xb3\x88\x72\x10\x57\xae\ \x08\x6b\x62\xed\xf4\x5a\x04\xea\xd6\x55\xa9\x4d\x9b\x72\xf7\xc2\ \x68\xa7\x4e\x2c\x04\x88\x88\x68\x95\x49\x71\x78\xb8\xe1\xfc\xa7\ \x44\x38\x88\x33\x65\xe2\xdb\x61\x9d\x47\x7f\xd0\x6b\x31\x68\xdf\ \x5e\x39\xb9\xfa\x88\xd1\xe2\xc5\x2c\x06\x88\x88\x68\x95\x8b\xc3\ \x0d\xe7\xbf\x17\x1b\x12\xe1\x20\xee\x0c\x0e\xeb\xa8\x4b\x7b\x3f\ \xe7\xd1\xc7\x8c\xc9\xdd\x5d\xf4\x36\x6d\x58\x10\x10\x11\xd1\x0a\ \xbf\x9b\x48\x3f\x42\x18\x62\x40\x3f\x91\xe8\x06\xb9\xc2\xce\xb0\ \x26\xda\x04\xaf\x45\x21\x2f\x4f\x25\xa7\x4f\xcf\xcd\x90\xbe\x60\ \x01\x8b\x02\x22\x22\x86\xee\x43\x62\xcd\x70\xc3\xf9\xd5\x44\x36\ \xc8\x25\x6a\x88\x6f\x84\x35\xe1\xd6\x78\x2d\x0e\xd5\xaa\x29\xe7\ \xe2\x8b\x73\x73\x17\xbd\x65\x4b\x16\x07\x44\x44\x0c\xcd\xd7\xc4\ \xd6\xe1\x86\xf3\xb7\xc4\x52\x22\x1b\xe4\x1a\xfd\xc3\x3a\xea\x52\ \x24\xfe\xc4\x6b\x91\xa8\x55\x4b\x39\x97\x5d\x96\x7b\x21\xfd\x82\ \x0b\x58\x20\x10\x11\x31\x14\xf7\x8a\xc7\x85\x1b\xce\xff\x25\xf6\ \x24\xaa\x41\xae\xb2\x29\xac\xc9\xd7\x48\x7c\xde\x6b\xb1\x38\xfc\ \x70\xe5\x6c\xdf\x4e\x47\x17\x44\x44\x44\x03\x2e\x08\x37\x9c\x6b\ \x17\x13\xd1\x20\x97\xd1\xaf\x71\x3d\x10\xd6\x04\xec\x24\xbe\xe3\ \xb5\x60\xe8\x47\x7c\x2a\x2b\x73\x2b\xa4\x2f\x5b\x46\x5f\x74\x44\ \x44\x34\xea\xc6\xf0\xc3\xf9\x4f\xc4\x3c\x22\x1a\xe4\x3a\xfa\x55\ \xae\x0f\xc3\x9a\x88\x33\x7c\x14\x8d\xd4\xc8\x91\xb9\x77\xd4\xa5\ \x47\x0f\x16\x0c\x44\x44\x34\xa2\x3e\x7e\x5a\x2d\xdc\x70\x2e\xff\ \x18\x89\x46\x44\x33\x80\x34\x67\x86\xf9\x6d\x79\x87\x9f\x90\x7e\ \xc6\x19\xb9\x15\xd0\x57\xae\x4c\xbf\xb0\xca\xc2\x81\x88\x88\x01\ \xfa\xb8\x58\x2f\xdc\x70\xae\xef\xc5\x0d\x23\x92\x01\x7c\x95\x9b\ \xc2\x9a\x94\xfa\xdb\xfa\x4f\xbd\x16\x11\x1d\x56\xcf\x3f\x3f\xb7\ \x42\xfa\x80\x01\x2c\x1e\x88\x88\x18\x98\xaf\x84\xdf\xb1\x45\xbb\ \x9e\x28\x06\xf0\x75\xea\x88\xef\x85\x35\x31\xeb\x8b\x4f\x7a\x2d\ \x26\xa5\xa5\x2a\xb5\x7a\x75\xee\x5c\x16\x5d\xbf\x5e\xa5\x74\xcb\ \x49\x16\x11\x44\x44\xcc\xb2\xbb\xc5\xfe\xe1\x87\xf3\x87\xc4\x42\ \xa2\x18\xc0\x81\x19\x20\x7e\x1e\xd6\x04\xd5\x2f\x8d\xbe\xee\xa3\ \xb3\x4b\x72\xeb\xd6\xdc\xd9\x45\x1f\x3a\x94\x85\x04\x11\x11\xb3\ \xee\xa9\xe1\x87\xf3\x94\xd8\x84\x08\x06\x70\x70\x96\x87\x39\x51\ \xfb\xb8\xdf\xe6\x3d\x15\x96\x36\x6d\x94\xb3\x63\x47\x6e\x04\xf4\ \xcb\x2f\x57\x4e\x8d\x1a\x2c\x26\x88\x88\x98\x35\x17\x85\x1f\xce\ \x75\xbf\xf3\xde\x44\x2f\x80\x43\x53\x20\xfe\x3a\xcc\x09\x3b\xcb\ \xcf\xa5\xd1\xae\x5d\x55\xaa\xa2\x22\x37\x42\xfa\x98\x31\x2c\x28\ \x88\x88\x98\x15\xaf\x11\xf3\xc3\x0f\xe8\x17\x11\xbb\x00\xbc\xd3\ \x50\xdc\x1b\xe6\xa4\x5d\xe3\xa7\xd0\xe8\x4b\x94\xb9\x10\xd0\xb7\ \x6f\x57\xc9\x9a\x35\x59\x58\x10\x11\xb1\x4a\xde\x96\x48\xbf\xea\ \x1d\x72\x38\xbf\x91\xb8\x05\xe0\x9f\xe3\x12\xe9\x96\x47\xa1\x4c\ \x5c\x5d\x38\x6e\xf1\x53\x70\x4e\x38\x21\x37\x42\xfa\x29\xa7\xb0\ \xb8\x20\x22\x62\xc6\x3e\x95\x48\xbf\xe6\x1d\x72\x38\x7f\x53\xac\ \x4d\xd4\x02\xc8\x8c\xd5\x61\x4e\x60\x99\xb9\xea\x11\x3f\x85\x47\ \x87\xd7\xb8\x07\xf4\x9d\x3b\x95\xd3\xa0\x01\x8b\x0c\x22\x22\xfa\ \xf6\x35\xb1\x43\xf8\xe1\x5c\x3f\x8e\xd8\x89\x88\x05\x50\xb5\xf3\ \xe8\xf7\x87\x39\x91\x5b\xba\xfd\x59\xbd\x14\x9e\x64\x7e\xbe\x72\ \xe6\xce\x8d\x7f\x48\x9f\x3a\x95\x85\x06\x11\x11\x7d\xf9\x8e\xd8\ \x3b\xfc\x70\xfe\xa5\x38\x9e\x78\x05\x50\x75\x1a\x24\x42\xec\x8f\ \xae\xed\x27\xbe\xeb\xb5\x08\x15\x16\x2a\x67\xfe\xfc\x78\x07\xf4\ \xca\x4a\xe5\xb4\x6a\xc5\x82\x83\x88\x88\x9e\xdc\x23\x0e\x0f\x3f\ \x9c\x2b\xf7\x97\x79\x00\xc8\x12\x3d\xc4\x8f\xc3\x9c\xd4\x27\x88\ \xef\x7b\x2d\x46\xd5\xab\x2b\xe7\xe2\x8b\xe3\x1d\xd2\x17\x2f\x56\ \x4e\x5e\x1e\x0b\x0f\x22\x22\x1e\xfc\xd7\x65\x71\x92\x1d\xe1\xfc\ \x0e\x31\x9f\x48\x05\x90\x5d\x26\x87\x3d\xb9\x4f\x76\x0b\x8d\xa7\ \xa2\x54\xbb\xb6\x72\xd6\xac\x89\x75\x48\x4f\x76\xef\xce\xe2\x83\ \x88\x88\x07\x75\x9a\x1d\xe1\xfc\x05\xb1\x8c\x28\x05\x10\x0c\x57\ \x85\x3d\xc9\x17\xf9\xe9\x91\xde\xa4\x89\x4a\x6d\xda\x14\xdf\x90\ \xbe\x6a\x55\xfa\x48\x0f\x0b\x10\x22\x22\x1e\xc0\xe5\x76\x84\xf3\ \xbf\x88\xed\x89\x50\x00\xc1\x51\x28\x3e\x14\xf6\x64\x5f\xe5\xa7\ \x40\x95\x97\xab\xd4\xc6\x8d\xf1\x0d\xe9\x23\x46\xb0\x08\x21\x22\ \xe2\xd7\x5c\x63\x47\x38\xd7\xc7\x63\xfb\x13\x9f\x00\x82\xe7\x70\ \xf1\x0f\x61\x4e\xf8\x02\xf1\x3a\x3f\x85\xea\xb0\xc3\x94\xb3\x79\ \x73\x3c\x8f\xb9\x6c\xdd\xaa\x9c\x5a\xb5\x58\x8c\x10\x11\xf1\x3f\ \x5e\x2f\x16\xda\x11\xd0\x67\x10\x9b\x00\xcc\x31\x44\xfc\x57\x98\ \x93\xbe\x58\xfc\x89\x9f\x82\x75\xc4\x11\xca\xb9\xfc\xf2\x78\xee\ \xa2\x4f\x9e\xcc\x82\x84\x88\x88\xfb\xfc\xb1\xbb\x46\x5a\x10\xce\ \x37\x10\x97\x00\xcc\x33\x29\x91\xee\x67\x1a\xda\xe4\x2f\x13\xef\ \xf5\x53\xb8\x5a\xb6\x54\xce\xb6\x6d\xf1\x0b\xe8\x15\x15\xca\x69\ \xda\x94\x85\x09\x11\x31\xc7\xbd\x53\x2c\xb1\x23\x9c\x7f\x4f\xcc\ \x23\x2a\x01\x84\xc3\xba\xb0\x8b\x40\x7d\xf1\x51\x3f\x05\xac\x7d\ \x7b\x95\xda\xb1\x23\x7e\x21\x7d\xc1\x02\x16\x27\x44\xc4\x1c\xf6\ \x21\xb1\xae\x1d\xe1\xfc\xd7\x62\x35\x22\x12\x40\x78\xe8\x97\x46\ \xef\x0c\xbb\x18\xb4\x11\x5f\xf6\x53\xc8\x3a\x76\x54\xa9\x9d\x3b\ \xe3\x17\xd2\x3b\x77\x66\x91\x42\x44\xcc\x41\x9f\x15\x9b\xd9\x11\ \xce\xdf\x13\x1b\x13\x8f\x00\xc2\xa7\x44\xfc\x4d\xd8\x45\xa1\xab\ \xf8\x86\x9f\x82\xd6\xad\x9b\x72\x76\xed\x8a\x55\x40\x4f\xad\x58\ \xa1\x9c\x82\x02\x16\x2b\x44\xc4\x1c\x52\x16\x60\x75\x18\xed\x14\ \x01\xe0\x00\x34\x17\x7f\x1f\x76\x71\x38\x2e\x91\x7e\xce\xd8\x73\ \x61\x3b\xfa\x68\x95\xd2\xe7\xb7\xe3\xb4\x8b\x3e\x78\x30\x0b\x16\ \x22\x62\x8e\xf8\x82\xd8\xd6\x8e\x70\xfe\x99\x38\x8a\x38\x04\x60\ \x1f\x47\x8b\xff\x08\xbb\x48\x8c\xf2\x19\xd2\x53\x03\x07\x2a\xa7\ \xb2\x32\x3e\x01\x5d\xf7\x7c\x2f\x29\x61\xe1\x42\x44\x8c\xb9\xcf\ \x8b\xad\xec\x08\xe7\xb4\x53\x04\xb0\x9c\x09\xe2\x17\x61\x17\x8a\ \x13\xc5\xf7\xfd\x14\xba\x63\x8e\x49\x77\x42\x89\xcb\x51\x97\xd3\ \x4e\x63\xf1\x42\x44\x8c\xb1\x2f\x89\x1d\xed\x09\xe7\xb4\x53\x04\ \x88\x00\xcb\x6d\x28\x18\xa7\x8a\x7b\xfd\x14\xbc\x1e\x3d\xe2\x73\ \xdc\x45\xff\x22\xd0\xa2\x05\x8b\x18\x22\x62\x0c\x7d\x45\x3c\xd2\ \x9e\x70\xfe\xc3\x04\xed\x14\x01\x22\x81\x9e\xa8\xb7\xda\x50\x38\ \xe6\xf9\x2d\x7c\x71\x0a\xe9\x4b\x96\x28\x27\x2f\x8f\xc5\x0c\x11\ \x31\x46\xbe\x29\xf6\xb4\x27\x9c\x3f\x25\x96\x11\x7b\x00\xa2\x43\ \x75\xf1\x71\x1b\x0a\xc8\x1c\x9f\xc5\x2f\xd9\xbd\x7b\x7c\x42\xfa\ \x80\x01\x2c\x68\x88\x88\x31\x51\x77\x2a\xeb\x61\x4f\x38\x7f\x5e\ \xac\x4d\xdc\x01\x88\x1e\x4d\xc5\x77\x6d\x28\x24\xcb\xfd\x16\xc2\ \xa3\x8f\x8e\x47\x0b\xc6\xcd\x9b\x55\xb2\xac\x8c\x85\x0d\x11\x31\ \xe2\xca\x62\xaa\x06\xd9\x13\xce\xdf\x17\x9b\x11\x73\x00\xa2\x4b\ \x2b\x31\x65\x43\x41\xb9\xc4\xef\x4e\xfa\x51\x47\xc5\x23\xa4\x9f\ \x71\x06\x8b\x1b\x22\x62\x84\x7d\x47\x1c\x68\x4f\x38\xd7\x6b\x7a\ \x6b\xe2\x0d\x40\xf4\xe9\x22\xfe\x35\xec\xa2\x92\x27\xae\xf7\x5b\ \x18\x3b\x77\x8e\xfe\x8b\xa3\xfa\xc2\x68\xcb\x96\x2c\x72\x88\x88\ \x11\xdd\x39\x1f\x6c\x4f\x38\xd7\x6b\x79\x57\x62\x0d\x40\x7c\x38\ \x5e\xfc\x34\xec\xe2\x52\x20\x5e\xe1\xb7\x40\x76\xea\xa4\x9c\x1d\ \x3b\xa2\x1d\xd2\x97\x2e\x55\x4e\x7e\x3e\x8b\x1d\x22\x62\x84\xd4\ \x6f\x7a\x8c\xb5\x27\x9c\xff\x4b\x1c\x41\x9c\x01\x88\x1f\xa7\x26\ \x2c\xe8\x91\x9e\x9f\x41\x48\x4f\xc5\x21\xa4\xf3\xc2\x28\x22\x62\ \xa4\x76\xce\x8f\xb5\x27\x9c\xeb\x57\x42\xc7\x12\x63\x00\xe2\xcb\ \x45\x36\x14\x9b\x22\xf1\x1a\xbf\x21\xbd\x6b\xd7\x68\x1f\x77\xd9\ \xbc\x59\x39\x5c\x18\x45\x44\xb4\xde\xdd\x89\xf4\xab\xd8\x09\x7b\ \x3c\x87\xf8\x02\x10\x7f\x36\xd8\x50\x70\xf4\x71\x97\xed\x7e\x43\ \x7a\x9b\x36\xca\xd9\xb2\x25\xba\x21\xfd\xcc\x33\x59\xfc\x10\x11\ \x2d\xef\x73\xde\xd7\xae\x70\xbe\x94\xd8\x02\x90\x1b\xe8\x87\x8c\ \xae\xb5\xa1\xf0\xe8\x8b\xa3\x1b\xfc\x16\xd0\x23\x8e\x50\xa9\x4d\ \x9b\xa2\x7b\x61\xb4\x6d\x5b\x16\x41\x44\x44\x4b\xc3\x79\x1f\xbb\ \xc2\xf9\x16\x22\x0b\x40\x6e\x51\x20\xde\x6e\x4b\x48\xf7\xdd\xdd\ \xa5\x71\x63\xe5\xac\x5b\x17\xcd\x90\xbe\x7c\xb9\x72\x0a\x0a\x58\ \x0c\x11\x11\x2d\x7b\x84\xa8\x97\x5d\xe1\xfc\x3a\x77\x43\x0d\x00\ \x72\x8c\x9a\xe2\x33\x36\x14\xa2\xfc\x0c\x8e\xbb\x38\xe5\xe5\xd1\ \x0d\xe9\x43\x87\xb2\x20\x22\x22\x5a\xe2\x5b\x62\x7f\xbb\xc2\xf9\ \xbd\x62\x35\x62\x0a\x40\xee\x52\x5f\x7c\xc5\x96\x9d\xf4\xb5\x7e\ \xcf\xa4\xd7\xae\xad\x92\x97\x5c\x12\xb9\x80\x9e\xd2\x1d\x69\x1a\ \x36\x64\x61\x44\x44\x0c\x59\x59\x00\x55\x57\xbb\xc2\xf9\xcf\x09\ \xe7\x00\xa0\xd1\xaf\x8d\x3a\xb6\x84\xf4\x4d\x7e\x0b\x6c\x69\xa9\ \x72\x2e\xbc\x30\x7a\xbb\xe8\xe7\x9f\xaf\x9c\xbc\x3c\x16\x48\x44\ \xc4\x90\x7c\x5d\xec\x69\x57\x38\x7f\x4c\x2c\x23\x96\x00\xc0\xbf\ \x69\x23\x26\x6d\x29\x52\x4b\xfd\x16\xda\x92\x12\xe5\x2c\x5a\x14\ \xbd\x9d\xf4\x3e\x7d\x58\x24\x11\x11\x43\xf0\x25\xb1\x93\x5d\xe1\ \xfc\x21\xb1\x06\x71\x04\x00\xfe\x3f\x47\x89\x7f\x89\xec\x71\x97\ \x6a\xd5\x94\x73\xee\xb9\xd1\xeb\x8d\x5e\xb3\x26\x8b\x25\x22\xa2\ \x41\x5f\x15\xbb\xd9\x15\xce\x9f\x17\xeb\x12\x43\x00\xe0\x9b\xe8\ \x25\x7e\x60\x4b\x48\x5f\x95\x49\x48\x9f\x37\x2f\x52\x21\x3d\x39\ \x75\x2a\x0b\x26\x22\xa2\xc1\x9d\x73\xcb\xce\x9c\xbf\x28\x36\x20\ \x7e\x00\xc0\xa1\x18\x28\x7e\x64\x4b\xf1\x5a\xee\xb7\x00\xe7\xe7\ \x2b\xe7\xf4\xd3\xa3\xb5\x93\xde\xa5\x0b\x0b\x27\x22\x62\xc0\x3e\ \x2f\xb6\xb3\x2b\x9c\xbf\x2a\x96\x13\x3b\x00\xc0\x2b\xfd\xc4\xbf\ \xdb\x52\xc4\x66\x88\x49\x3f\x85\x58\x5f\xbe\x1c\x3d\x3a\x3a\xbb\ \xe8\x6b\xd7\x2a\xa7\xb8\x98\x05\x14\x11\x31\x20\x1f\x11\x0f\xb3\ \x2b\x9c\xbf\x24\x36\x24\x6e\x00\x80\x5f\x8e\x13\x3f\xb6\xa5\x98\ \x4d\x11\xf7\xfa\x2d\xca\x43\x86\xa4\x5f\xef\x8c\x42\x50\x3f\xf9\ \x64\x16\x51\x44\xc4\x00\xfc\x95\xd8\xc0\xae\x70\xfe\x0a\x3b\xe7\ \x00\x50\x15\x46\x89\x9f\xd8\x52\xd4\x4e\x12\x77\xfb\x2d\xce\xbd\ \x7a\x29\x67\xd7\x2e\xfb\x03\xba\xfe\x22\xd1\xb2\x25\x8b\x29\x22\ \x62\x16\xbd\x53\xac\x65\x57\x38\x7f\x5b\x3c\x9c\x78\x01\x00\x55\ \x65\x82\xf8\x99\x2d\xc5\x6d\xb8\xf8\xae\xdf\x22\xdd\xb9\xb3\x72\ \xb6\x6f\xb7\x3f\xa4\xeb\x47\x97\x0a\x0a\x58\x54\x11\x11\xb3\xe0\ \x4d\x62\x0d\xbb\xc2\xb9\x2c\x5f\x89\x66\xc4\x0a\x00\xc8\x16\x73\ \xc4\x2f\x6d\x29\x72\x23\xc4\xf7\xfc\x16\xeb\x16\x2d\xd2\x6d\x0d\ \x6d\x0f\xe9\x23\x46\xb0\xb0\x22\x22\x56\xd1\x1f\x88\x25\x76\x85\ \xf3\x3f\x88\x1d\x89\x13\x00\x90\x6d\xce\xb3\xa8\xd0\xa9\x81\xe2\ \x5b\x7e\x8b\x76\x93\x26\xca\x59\xb7\xce\xee\xc7\x8b\x76\xee\x54\ \x4e\x79\x39\x0b\x2c\x22\x62\x86\x5e\x23\x16\xd9\x15\xce\xff\x57\ \xec\x4e\x8c\x00\x80\xa0\xb8\xd8\xa6\x90\xae\x9f\x68\x7e\xcd\x67\ \xe1\x4e\x36\x6a\xa4\x9c\x35\x6b\xec\xde\x45\xd7\x0f\x2e\xe9\x4e\ \x34\x2c\xb4\x88\x88\xbe\xdc\x2e\x16\xd8\x15\xce\xff\x28\x76\x23\ \x3e\x00\x40\xd0\x5c\x68\x53\x48\xef\xe2\x3e\x3c\xe1\xeb\x41\xa3\ \x3a\x75\x54\x52\x9f\xf7\xb6\xb9\xf5\x62\xbf\x7e\x2c\xb6\x88\x88\ \x3e\xd4\x2f\x50\xe7\xd9\x15\xce\x7f\x2f\x76\x26\x36\x00\x80\x29\ \x16\x26\x2c\x3a\x93\xde\xce\x7d\x80\xc2\x57\x31\x2f\x2e\x56\xa9\ \x73\xce\xb1\x37\xa4\x6f\xdf\xae\x92\x0d\x1a\xb0\xe8\x22\x22\x7a\ \xf0\x42\xbb\x82\xb9\x56\xfe\xb1\x38\x73\x0e\x00\xe6\x99\x25\x7e\ \x61\x4b\x31\xd4\x0f\x50\x3c\xe6\xb7\xa8\x17\x16\xaa\xe4\xf4\xe9\ \xf6\x86\xf4\xf3\xce\xe3\xa8\x0b\x22\xe2\x41\xdc\x23\x9e\x6a\x5f\ \x38\xd7\xad\x14\x9b\x13\x13\x00\x20\x2c\xe6\xd9\xb4\x93\xde\x44\ \x7c\xd8\x6f\x81\xd7\x01\xf8\xa4\x93\xec\xbd\x34\x3a\x70\x20\x8b\ \x30\x22\xe2\x01\xd4\xef\x62\x9c\x6c\x5f\x38\x97\xef\x0c\x89\x36\ \xc4\x03\x00\x08\x9b\xc9\x09\x8b\xfa\xa4\xeb\x07\x29\x7e\x92\x49\ \xb1\x1f\x3a\xd4\xce\x57\x47\x75\xff\x76\x8e\xba\x20\x22\x7e\xc5\ \xd7\xc5\xfe\xf6\x85\xf3\x37\xc5\x23\x88\x05\x00\x60\x0b\xa7\xda\ \x14\xd2\xab\x89\xd7\x66\x52\xf4\x7b\xf6\x54\x8e\x6e\x73\x68\x5b\ \x48\x5f\xb0\x80\xa3\x2e\x88\x88\xae\x2f\x8a\xdd\xec\x0b\xe7\x2f\ \x8b\x8d\x89\x03\x00\x60\x1b\x93\x6c\x0a\xe9\xba\xcd\xd6\xd6\x4c\ \x8a\x7f\xfb\xf6\xca\xd9\xba\xd5\xbe\x90\xde\xbf\x3f\x0b\x33\x22\ \xe6\xbc\x4f\x8b\x6d\xec\x0b\xe7\xf2\x9d\x21\x51\x4e\x0c\x00\x00\ \x5b\x99\x28\x7e\x6a\x4b\xd1\xd4\xed\xb6\x96\x67\xb2\x08\x34\x6d\ \x6a\xdf\x83\x46\xf2\xa5\x21\x55\xaf\x1e\x0b\x34\x22\xe6\xac\xf7\ \x8b\xe5\xf6\x85\xf3\x17\xc4\x46\x2c\xff\x00\x60\x3b\x27\xdb\x14\ \xd2\xb5\xb3\xf4\x03\x45\x7e\x17\x83\xfa\xf5\x95\xb3\x62\x05\x47\ \x5d\x10\x11\x2d\xf0\x2e\xb1\x8e\x7d\xe1\xfc\xb7\x62\x43\x96\x7d\ \x00\x88\x0a\x56\x9d\x49\xd7\x4e\x17\xf7\xfa\x5d\x14\x4a\x4b\x95\ \xb3\x68\x91\x5d\x21\x9d\x07\x8c\x10\x31\xc7\xbc\xdd\x6d\x00\x60\ \x59\x38\x7f\x5a\x6c\xc0\x72\x0f\x00\x1c\x77\xa9\xa2\x63\xdd\xb6\ \x5c\xbe\x16\x87\x92\x92\xf4\xce\xb5\x2d\x01\x7d\xf3\x66\x95\xaa\ \x5d\x9b\x45\x1b\x11\x73\xc2\x1b\xc4\xea\xf6\x85\xf3\x87\xc5\x5a\ \x2c\xf3\x00\x10\x55\x4e\x12\x3f\xb1\xa9\xb0\x0e\x12\xdf\xf4\xbb\ \x48\xe4\xe7\xab\xd4\x69\xa7\xd9\x13\xd2\xe7\xcf\xe7\xa8\x0b\x22\ \xc6\xde\x1d\x62\xa1\x7d\xe1\xfc\x1e\xb1\x06\xcb\x3b\x00\x44\x9d\ \xe1\xe2\x3f\x6c\x2a\xb0\x47\x89\x2f\x65\xf2\xa0\xd1\x98\x31\xf6\ \x84\xf4\x5e\xbd\x58\xc0\x11\x31\xb6\xae\x72\x2f\xfa\x5b\x16\xce\ \x6f\x17\x8b\x59\xd6\x01\x20\x2e\xf4\x17\xff\x6a\x53\xa1\x6d\xe3\ \xb6\xeb\xf2\xbd\x70\xe8\x60\x6c\x43\xaf\x74\xfd\x80\x51\xc3\x86\ \x2c\xe4\x88\x18\x2b\xf5\x85\xfe\x79\xf6\x05\x73\xed\x8d\x62\x21\ \xcb\x39\x00\xc4\x8d\xa3\xc5\x3f\xda\x54\x70\x1b\x8a\xf7\x66\xda\ \x2b\x7d\xcb\x96\xf0\x43\xba\xbe\xc0\x9a\x9f\xcf\xa2\x8e\x88\xb1\ \x50\xdf\x11\x9a\x68\x67\x38\xff\xb6\x98\xcf\x32\x0e\x00\x71\xa5\ \xa5\xf8\x96\x4d\x85\xb7\xc4\xbd\x84\xe4\x7b\x31\x69\xd2\x44\x25\ \xd7\xae\x0d\x3f\xa4\x8f\x18\xc1\xc2\x8e\x88\x91\xf7\x35\xb1\x9f\ \x9d\xe1\x7c\x09\x4b\x37\x00\xe4\x02\x4d\x12\xe9\x57\xd7\xac\x29\ \xc0\xfa\xd5\xd1\x4d\x19\x2c\x28\xfb\xba\xa9\x2c\x5d\x1a\x6e\x40\ \xdf\xb5\x4b\x39\xcd\x9b\xb3\xc0\x23\x62\x64\x7d\x46\x6c\x6f\x5f\ \x30\xff\x52\x3c\x97\x25\x1b\x00\x72\x09\xfd\xea\xda\xf3\xb6\xed\ \x94\x9c\x93\xc9\xe2\x52\x5c\xac\x9c\x79\xf3\x42\x0d\xe9\xa9\x4b\ \x2f\x55\x4e\x51\x11\x0b\x3d\x22\x46\xce\x87\xc5\xc3\xed\x0b\xe7\ \x5f\x88\x73\x58\xaa\x01\x20\x17\xa9\x23\x3e\x6a\x5b\x48\x3f\x55\ \xdc\xe3\xf7\x52\x93\x3e\x07\x3e\x79\x72\xb8\x3b\xe9\x13\x27\xb2\ \xd8\x23\x62\xa4\xfc\xa9\x58\xdb\xbe\x70\xae\xdf\xef\x98\xcc\x12\ \x0d\x00\xb9\x8c\xee\x25\x7b\xaf\x6d\x21\x7d\x84\xf8\x76\x26\x6d\ \x18\x47\x8f\x56\x4e\x65\x65\x38\x01\x5d\xff\xe7\x1e\x79\x24\x8b\ \x3e\x22\x46\xc2\x6b\xc4\x6a\xf6\x85\xf3\x8f\xc5\x13\x59\x9a\x01\ \x00\xd2\x21\xfd\x6e\xdb\x42\x7a\x7f\xf7\xd2\x92\xef\x85\xa7\x4f\ \x9f\xf4\xb9\xf0\x30\x42\xfa\xba\x75\xca\x29\x2d\x65\xf1\x47\x44\ \xab\xdd\x25\x16\xd9\x17\xce\x3f\x12\x47\xb3\x24\x03\x00\xfc\x97\ \x6a\xe2\x8f\x6c\x0b\xe9\x1d\xc5\xe7\x33\x59\x80\x3a\x74\x50\xce\ \xd6\xad\xe1\x84\xf4\x19\x33\x08\x00\x88\x68\xad\xcb\xed\x7c\x80\ \xe8\x2f\x62\x3f\x96\x62\x00\x80\x03\x87\xf4\x9b\x6d\x0b\xe9\xfa\ \xf2\xd2\x43\x99\x2c\x44\x4d\x9b\xa6\x77\xb4\xc3\x08\xe9\xc7\x1c\ \x43\x10\x40\x44\xab\xdc\x2b\x7e\xcb\xce\x36\x8a\xf2\x8f\x96\xe8\ \xcc\x12\x0c\x00\xf0\xcd\xe8\x87\x20\xae\xb0\xad\x80\xd7\x15\xef\ \xcc\xa4\x0d\x63\x9d\x3a\xca\x59\xb6\xcc\x7c\x40\xdf\xb2\x45\xa5\ \xea\xd5\x23\x14\x20\xa2\x15\xbe\x2b\x8e\xb1\x33\x9c\xbf\x26\x36\ \x67\xe9\x05\x00\xf0\xc6\x4a\xdb\x0a\x79\x75\xf1\xbb\x99\x2c\x4e\ \x25\x25\xca\x39\xff\x7c\xf3\x21\x7d\xc1\x82\xf4\xc5\x55\xc2\x01\ \x22\x86\xe8\xab\x62\x6f\x3b\xc3\xf9\xd3\x62\x43\x96\x5b\x00\x00\ \x7f\x4c\x15\x3f\xb3\xa9\xa0\xeb\x73\x93\x8b\x32\x59\xa4\x74\x8f\ \xf2\xd9\xb3\xcd\xf7\x47\x1f\x3c\x98\x80\x80\x88\xa1\xf9\xa8\xd8\ \xdc\xce\x70\xfe\xb3\x44\xba\x41\x01\x00\x00\x64\xc0\x18\xf1\x9f\ \xb6\x15\xf7\x59\xee\x79\xca\x8c\xda\x30\x9a\x0c\xe8\x3b\x77\x2a\ \xe7\x88\x23\x08\x0a\x88\x68\xdc\x3b\xdd\xe3\x81\x16\x86\xf3\x6b\ \xc5\x02\x96\x57\x00\x80\xaa\x31\x48\xfc\x9b\x6d\x45\x7e\x54\x26\ \xbd\xd2\xb5\x7d\xfb\xaa\x54\x45\x85\xd1\x57\x46\x53\xd5\xaa\x11\ \x18\x10\xd1\x98\x37\x88\x35\xec\x0c\xe7\x9b\xc4\x3c\x96\x55\x00\ \x80\xec\xd0\x29\x91\xbe\x69\x6f\x55\xb1\xef\x2e\xbe\x90\xc9\x02\ \xd6\xb1\xa3\x4a\x1a\x6c\xc3\x98\xd2\xaf\x9c\x12\x1a\x10\xd1\x80\ \x92\x80\x55\x81\x7d\xc1\xfc\x4b\xf1\x3c\x96\x52\x00\x80\xec\xd3\ \x52\x7c\xc3\xb6\x90\xde\xdc\x3d\x67\xe9\x7b\x21\x6b\xd5\x4a\x39\ \x9b\x37\x9b\x7b\x65\xb4\x53\x27\xc2\x03\x22\x06\xea\x39\x76\xee\ \x9a\xeb\xbb\x4c\x67\xb2\x84\x02\x00\x04\x47\xb9\xf8\x9c\x6d\x0b\ \x80\x3e\x67\x79\x47\x26\x0b\x5a\xfd\xfa\xca\x59\xb1\xc2\x4c\x48\ \xbf\xfc\x72\x5a\x2f\x22\x62\x20\xee\x16\x4f\xb5\x33\x9c\xeb\x3b\ \x4c\x63\x58\x3a\x01\x00\x82\xa7\x9e\xf8\x84\x6d\x0b\x41\x99\xf8\ \x83\x4c\x16\xb7\xd2\x52\xe5\x5c\x70\x81\x99\x90\xae\xdb\x3d\xe6\ \xe7\x13\x28\x10\x31\xab\x3d\xce\x4f\xb0\x37\x9c\x9f\xc8\x92\x09\ \x00\x60\x8e\xd2\x44\xba\x4d\x96\x55\x0b\x42\xa1\xb8\x35\x83\x05\ \x2e\x59\x58\xa8\x9c\x59\xb3\xcc\x84\xf4\xe1\xc3\x09\x15\x88\x98\ \x15\x5f\x11\x7b\xd9\x19\xce\xff\x2c\xf6\x63\xa9\x04\x00\x30\x8f\ \x6e\x93\x75\xb5\x85\x0b\x83\x5a\xa8\x43\xb7\xdf\xc5\x2e\x3f\x5f\ \x25\x27\x4d\x0a\x3e\xa0\xef\xda\xa5\x9c\x16\x2d\x08\x17\x88\x58\ \x25\x9f\x12\xdb\xda\x19\xce\x77\x8b\x1d\x59\x22\x01\x00\xc2\xc5\ \xba\x57\x47\xb5\x93\xdc\x73\x99\xbe\x17\xbe\xa1\x43\xd3\x97\x3a\ \x83\xec\xea\xb2\x7a\xb5\x4a\x55\xaf\x4e\xc8\x40\xc4\x8c\xfc\x95\ \x58\x6e\x67\x38\x7f\x41\x3c\x8c\x65\x11\x00\xc0\x0e\xa6\x88\x9f\ \xda\xb6\x58\xf4\x10\x5f\xca\x64\x01\x3c\xfa\x68\xe5\xec\xd8\x11\ \xec\x4e\xfa\x94\x29\x04\x0d\x44\x8c\x53\x8f\xf3\x5f\x24\xd2\xc7\ \x1f\x01\x00\xc0\x22\x86\x89\x1f\xd8\xb6\x68\xb4\x10\x1f\xcf\x64\ \x21\x6c\xdf\x5e\x39\x5b\xb6\x04\x1b\xd2\x7b\xf4\x20\x70\x20\xa2\ \x67\x37\xda\xd9\xe3\xfc\xdf\xaf\x83\x16\xb2\x0c\x02\x00\xd8\x49\ \x97\x84\x85\x0f\x1a\x35\x12\xef\xc9\xe4\xf2\x68\xb3\x66\x2a\xb5\ \x71\x63\x70\x01\x7d\xd3\x26\xe5\xd4\xae\x4d\xf0\x40\xc4\x83\xd7\ \x22\x7b\x7b\x9c\x6b\x57\x25\x78\x1d\x14\x00\xc0\x7a\xf4\x83\x46\ \xaf\xd9\xb6\x88\xd4\x70\x7f\x1a\xf6\xbd\x38\xea\x00\xbd\x6c\x59\ \x70\xe7\xd1\x2f\xbc\x50\x39\x05\x05\x84\x10\x44\x8c\x5a\x8f\xf3\ \x2f\xc4\x05\x2c\x79\x00\x00\xd1\x41\xf7\x4a\x7f\xcc\xb6\x05\x45\ \xff\x34\xbc\x21\x93\x45\xb2\xa4\x24\xdd\xc3\x3c\xa8\x9d\xf4\xb1\ \x63\x09\x22\x88\xf8\x35\xdf\x10\x07\xd9\x19\xce\x3f\x16\x27\xb0\ \xd4\x01\x00\x44\x0f\x2b\x7b\xa5\x6b\x67\x89\x7b\xfd\x2e\x96\x85\ \x85\x2a\x39\x7d\x7a\x30\x01\x5d\x77\x8d\xe9\xd8\x91\x40\x82\x88\ \xff\xf1\x77\x62\x37\x3b\xc3\xf9\xdf\xc4\xa1\x2c\x71\x00\x00\xd1\ \x45\xf7\x4a\xbf\xc6\xc6\x90\x3e\xc6\x7d\x81\xcf\xd7\xa2\x99\x97\ \xa7\x9c\xd1\xa3\x83\x09\xe9\xfa\xac\x3b\xe7\xd1\x11\x51\x7c\x44\ \x6c\x66\x67\x38\x7f\x5f\xec\xcc\xd2\x06\x00\x10\x7d\xf2\xc5\x6d\ \x36\x86\xf4\x63\xc5\x37\x33\x59\x40\x87\x0c\x09\xa6\x57\xba\x3e\ \x46\x93\x9f\x4f\x40\x41\xcc\x61\x7f\x69\x6f\x8f\xf3\x77\xc4\xf6\ \x2c\x69\x00\x00\xf1\x62\x51\x22\x7d\xa9\xc8\xaa\x45\xa7\x8b\xf8\ \x7c\x26\x0b\x69\xb7\x6e\x2a\x15\x44\xaf\xf4\xe3\x8f\x27\xa4\x20\ \xe6\xa8\x37\x8b\x65\x76\x86\xf3\x67\xc5\xc6\x2c\x63\x00\x00\xf1\ \x64\xac\xf8\x91\x6d\x8b\x4f\xb9\xbb\x6b\xe5\x77\x31\x4d\xb5\x6c\ \x99\x6e\x95\x98\xed\xf3\xe8\xba\x07\x3b\x61\x05\x91\x1e\xe7\x76\ \x78\xa7\x58\x83\xe5\x0b\x00\x20\xde\x0c\x14\xff\x6c\xdb\x22\x54\ \x5b\xbc\x3d\x93\x85\xb5\x61\x43\xe5\xac\x5a\x95\xdd\x90\xbe\x6e\ \x9d\x72\xca\xca\x08\x2d\x88\x39\xe2\x72\x31\xcf\xce\x70\xfe\x5d\ \xb1\x88\x65\x0b\x00\x20\x37\xe8\x90\x48\x9f\x67\xb4\x6a\x31\xaa\ \x26\x5e\x9b\xc9\x02\x5b\xab\x96\x72\x96\x2e\xcd\x6e\x48\x9f\x37\ \x2f\x7d\x29\x95\xf0\x82\x18\xeb\x07\x88\xe6\xda\xfb\x00\xd1\xba\ \x04\x0f\x10\x01\x00\xe4\x1c\xba\x57\xfa\xc3\xb6\x2d\x4a\x7a\x17\ \xeb\x92\x4c\x16\xdb\xe2\xe2\x74\xa8\xce\x66\x48\x1f\x36\x8c\x10\ \x83\x18\x53\xdf\x11\x47\xd9\x19\xcc\x3f\x15\xcf\x64\x89\x02\x00\ \xc8\x5d\x8a\xc5\x9b\x6c\xdc\x3d\xca\xa4\x57\x7a\x52\x77\x60\x39\ \xfd\xf4\xec\x05\xf4\x5d\xbb\x94\xa3\xcf\xb9\x13\x66\x10\x63\xe5\ \x4b\x62\x0f\x3b\xc3\xf9\x07\xe2\x71\x2c\x4d\x00\x00\xa0\x7f\x42\ \xdd\x68\x63\x48\x3f\xde\xdd\xe5\xf2\xdd\x2b\x7d\xc2\x84\xec\x85\ \xf4\x95\x2b\x55\xaa\x7a\x75\x42\x0d\x62\x4c\x7c\x5a\x6c\x67\x67\ \x38\xdf\x2b\x76\x65\x49\x02\x00\x80\xfd\x39\x2f\x61\x61\x1b\x46\ \xbd\xcb\xf5\x62\x26\x0b\xf1\x71\xc7\x65\xaf\x57\xfa\xcc\x99\x04\ \x1b\xc4\x18\x78\x9f\xbd\x3d\xce\x5f\x15\x5b\xb2\x0c\x01\x00\xc0\ \x81\x18\x2f\xfe\xd3\xb6\xc5\xab\x85\xf8\x58\x86\xbd\xd2\x9d\x6c\ \xf5\x4a\xe7\x3c\x3a\x62\xa4\xd5\x5d\xa2\x6a\xd9\x19\xce\x1f\x49\ \xa4\xef\x04\x01\x00\x00\x7c\x23\x7d\xc4\x3f\xda\xb6\x88\x35\x14\ \xef\xce\x64\x61\x6e\xdb\x56\x39\x5b\xb6\x54\x39\xa0\xa7\x2a\x2a\ \x94\xd3\xba\x35\x41\x07\x31\x82\x5e\xe5\x76\x89\xb2\x30\x9c\xdf\ \x9a\x48\xdf\x05\x02\x00\x00\x38\x24\xad\xc5\xd7\x6d\x5b\xcc\x6a\ \x88\x37\x64\xf2\xa0\x51\xd3\xa6\xe9\xde\xe6\x59\xe8\x8f\x9e\xa4\ \x3f\x3a\x62\xa4\x5c\x67\xef\x03\x44\x57\x88\x05\x2c\x37\x00\x00\ \xe0\x87\xfa\xe2\xa3\xb6\x2d\x6a\x7a\xa1\xdd\x90\xc9\x42\x5d\xbf\ \xbe\x72\x56\xac\xa8\x7a\x48\x5f\xb0\x40\x39\xba\x5b\x0c\xc1\x07\ \xd1\xfa\x1e\xe7\xb3\xec\x0c\xe6\x5f\x26\xd2\x77\x7e\x00\x00\x00\ \x32\xa2\xa6\x78\xaf\x6d\x0b\x9c\xee\x95\xbe\x24\x93\x45\xbb\xb4\ \x54\x39\x8b\x16\x55\x3d\xa4\x9f\x70\x02\x01\x08\xd1\x62\xdf\x17\ \xcf\xb4\x33\x9c\x7f\x2e\x9e\xc5\xd2\x02\x00\x00\x55\x45\x3f\x33\ \x7d\xbd\x85\x0b\x9d\x9a\x22\xee\xf1\xbb\x78\x57\xab\x56\xf5\x07\ \x8d\x74\x77\x98\x8e\x1d\x09\x42\x88\x3c\x40\xe4\xc7\x8f\xc4\xb1\ \x2c\x29\x00\x00\x90\x4d\xac\x6c\xc3\x38\x40\x7c\x2d\x93\x07\x8d\ \xce\x38\xa3\x6a\x97\x46\x37\x6d\x52\x4e\x9d\x3a\x04\x22\x44\x8b\ \x7c\x41\xec\x66\x6f\x8f\xf3\x2e\x2c\x23\x00\x00\x10\x04\x27\x8b\ \x1f\xdb\xb6\xf8\x75\x10\x9f\xc9\xe4\x41\xa3\xd1\xa3\xab\xb6\x93\ \xbe\x78\xb1\x72\x0a\x0b\x09\x46\x88\x16\xa8\x5b\xb1\x36\xb7\xb7\ \xc7\x79\x0b\x96\x0f\x00\x00\x08\x92\x7e\xe2\x9f\x6c\x5b\x04\xf5\ \xe3\x23\xbf\xca\x64\x61\x1f\x35\xaa\x6a\x0f\x1a\x8d\x1d\x4b\x38\ \x42\x0c\xd9\x7b\xdc\x56\xac\x16\x86\x73\x7a\x9c\x03\x00\x80\x31\ \x8e\x14\xdf\xb3\x6d\x31\x2c\x13\x7f\x98\xc9\x02\xdf\xb3\xa7\x72\ \x76\xed\xca\xfc\x3c\xfa\x51\x47\x11\x92\x10\x43\xf2\xfb\x6e\x0b\ \x56\x0b\xc3\x39\x3d\xce\x01\x00\xc0\x38\x8d\xc5\x67\x6c\x5b\x14\ \x8b\xc4\x8a\x4c\x16\xfa\xa3\x8f\x56\xa9\x9d\x3b\x33\x0b\xe9\x9b\ \x37\x2b\xa7\x5e\x3d\xc2\x12\xa2\x61\xb7\x8a\x85\x76\x86\xf3\xca\ \x04\x3d\xce\x01\x00\x20\x24\x4a\xc5\x9f\xd9\xb6\x38\xea\x36\x8c\ \x8b\x32\x79\xd0\xa8\x4d\x9b\xcc\x5f\x1d\x5d\xb6\x4c\xa5\x74\x87\ \x18\x42\x13\xa2\x11\x17\xb9\x73\xdd\xb2\xfa\xa3\x2f\xd2\xd3\xe3\ \x1c\x00\x00\x42\x47\xef\x12\x7d\xdb\xc2\x1d\x2c\x35\x39\x83\x36\ \x8c\xfa\xd5\xd1\xd4\xfa\xf5\x99\x85\xf4\xe9\xd3\x09\x4e\x88\x01\ \xbb\x57\x9c\x69\xe7\xae\xf9\xa7\xe2\x54\x96\x04\x00\x00\xb0\x85\ \x3c\x71\x9d\x8d\x21\x7d\x8c\xf8\x6e\x26\xaf\x8e\xae\x5a\x95\x59\ \x48\x1f\x30\x80\x10\x85\x18\x90\xbb\xc5\x89\x76\x86\xf3\x0f\xc5\ \x13\x58\x0a\x00\x00\xc0\x46\xce\x4e\xa4\x5f\xca\xb3\x6a\xf1\xec\ \x25\xbe\xe2\x37\x0c\xd4\xaa\xb5\xef\xd8\x8a\xef\xfe\xe8\xfa\x1c\ \x7b\xf3\xe6\x84\x29\xc4\x2c\xfb\xa6\x38\xd8\xce\x70\xfe\x7b\xb1\ \x07\xe5\x1f\x00\x00\x6c\xe6\x38\xf1\x03\xdb\x16\xd1\x66\xe2\x23\ \x7e\x43\x41\x49\x89\x72\x2e\xb8\xc0\x77\x48\x4f\xae\x5d\xab\x9c\ \xb2\x32\x42\x15\x62\x96\xd4\xef\x1c\xb4\xb7\x33\x9c\xff\x4e\x6c\ \x4a\xd9\x07\x00\x80\x28\xa0\x5f\xcc\xdb\x6b\xdb\x62\x5a\x47\xfc\ \xa9\xdf\x33\xe9\xfa\xe2\xe7\xbc\x79\xfe\x8f\xba\x2c\x58\xa0\x1c\ \xfd\x62\x29\xe1\x0a\xb1\x4a\xde\xef\xbe\x73\x60\x61\x38\xd7\x3d\ \xce\xeb\x52\xee\x01\x00\x20\x4a\xb4\x15\xdf\xb2\x6d\x51\x2d\x75\ \xfb\x26\xfb\x09\x08\x49\x1d\xb4\xa7\x4e\xf5\x1f\xd2\xf5\x4b\xa5\ \x04\x2c\xc4\x8c\xbd\x57\x6c\x60\x67\x38\xbf\x47\x2c\xa3\xcc\x03\ \x00\x40\x14\x69\x24\x3e\x65\xdb\xe2\xaa\xfb\x26\x5f\xe1\x37\x2c\ \xe4\xe5\x29\x67\xc2\x04\xff\x8f\x18\x75\xea\x44\xd0\x42\xcc\xc0\ \x1f\x8b\xb5\xec\x0c\xe7\xdf\x13\x8b\x28\xef\x00\x00\x10\x65\xf4\ \x4b\x7a\x37\xd9\xb6\xc8\x66\xd4\x2b\x5d\x87\xf4\xf1\xe3\xfd\x5d\ \x1a\xdd\xb4\x49\x39\x75\xeb\x12\xb8\x10\x7d\xf8\x6d\xf7\xd1\x31\ \x0b\xc3\xf9\x12\x4a\x3a\x00\x00\xc4\x05\xdd\x86\x71\x93\x85\x8b\ \xad\x9a\xe1\xf6\x55\xf6\x15\x20\x86\x0f\xe7\x11\x23\xc4\x80\x5c\ \x69\xe7\x03\x44\x9f\x89\x33\x28\xe5\x00\x00\x10\x47\xf4\x0b\x7b\ \x5f\xd8\x16\xd2\x8f\xcf\xa0\x57\x7a\x6a\xe0\xc0\xf4\x11\x16\xaf\ \x21\x7d\xda\x34\xc2\x17\xe2\x21\x3c\xc7\xce\x5d\xf3\x7f\x8a\x63\ \x29\xdf\x00\x00\x10\x67\x26\xb8\x0b\x9e\x55\x8b\x70\x3f\xf1\x35\ \xbf\x81\x62\xd0\x20\x7f\x21\xbd\x77\x6f\x42\x18\xe2\x37\xbc\x0e\ \x3a\xcd\xce\x70\xfe\x27\xb1\x37\x65\x1b\x00\x00\x72\x81\xbe\xee\ \xc2\x67\xd5\x62\xdc\x41\x7c\xce\x6f\xb8\xe8\xd1\x43\x39\xbb\x76\ \x79\x0b\xe8\xf2\xff\x2f\xd5\xa6\x0d\x81\x0c\x71\x3f\xf5\xaf\x57\ \xa3\xec\x0c\xe7\xbb\xc5\x8e\x94\x6b\x00\x00\xc8\x25\x8e\x14\xdf\ \xb3\x6d\x51\x3e\x42\x7c\xd4\x6f\xc8\xe8\xdc\x59\x39\x3b\x76\x78\ \xbb\x34\xba\x61\x83\x4a\xd5\xa9\x43\x30\x43\x14\x5f\x17\xfb\xdb\ \x19\xce\x9f\x17\x9b\x50\xa6\x01\x00\x20\x17\xd1\x0b\xe0\xb3\xb6\ \x2d\xce\x75\xc5\xbb\xfc\x86\x8d\x76\xed\x94\xb3\x6d\x9b\xb7\x9d\ \xf4\xc5\x8b\x55\xb2\xb0\x90\x80\x86\x39\xed\x8b\x62\x37\x3b\xc3\ \xf9\x43\x62\x1d\xca\x33\x00\x00\xe4\x32\xfa\xb1\x8f\x5f\xd8\xb6\ \x48\xd7\xc8\xe0\x41\xa3\x7d\xc7\x57\xb6\x6e\xf5\x16\xd2\x27\x4f\ \x26\xa4\x61\xce\xfa\xb4\xd8\xc6\xce\x70\x7e\x4b\x22\xdd\x1a\x16\ \x00\x00\x20\xe7\xd1\x0b\xe2\xcd\xb6\x2d\xd6\xd5\xc4\xff\xf1\x1b\ \x3e\x9a\x35\x53\xce\xe6\xcd\xde\x42\xfa\x80\x01\x84\x35\xcc\x39\ \x1f\x13\x9b\xd9\x19\xce\xaf\x13\x0b\x29\xc7\x00\x00\x00\xff\x45\ \xf7\x4a\x5f\x65\xdb\xa2\xad\xfb\x31\x5f\xe2\x37\x84\x34\x69\xa2\ \x9c\xf5\xeb\x3d\x5d\x1a\x75\xb8\x34\x8a\x39\xe4\x1d\x62\x6d\xfb\ \x82\xf9\x97\x09\x1e\x20\x02\x00\x00\x38\x28\x56\xf6\x4a\x5f\x28\ \x26\xfd\x84\x91\xf2\x72\xe5\xac\x5b\x77\xe8\x4b\xa3\x1b\x37\x2a\ \x87\x4b\xa3\x98\x03\xfe\x58\xac\x69\x5f\x38\xff\x5c\x9c\x47\xd9\ \x05\x00\x00\x38\x34\x27\x8b\x1f\xdb\x16\xd2\x27\x89\x7b\x7c\x86\ \xf4\x94\x87\x9d\xf4\xe4\xc2\x85\xca\x29\x28\x20\xc4\x61\x6c\xd5\ \xf7\x39\x4a\xec\x0b\xe7\x1f\xbb\xb5\x06\x00\x00\x00\x3c\xd2\x53\ \xfc\xbd\x6d\x21\x7d\x80\xf8\x86\x9f\x70\x52\xaf\x9e\x72\x56\xaf\ \x3e\xf4\x71\x97\x33\xcf\x24\xc8\x61\x2c\xdd\x2e\x16\xd8\x17\xce\ \xff\xe8\xd6\x18\x00\x00\x00\xf0\x49\x4b\xf1\x35\xdb\x42\xfa\x51\ \xe2\x4b\x7e\xba\xbb\x48\x48\x4f\x79\x09\xe9\x03\x07\x12\xe8\x30\ \x56\xae\x76\xef\x71\x58\x36\x87\xdf\x14\x5b\x53\x5e\x01\x00\x00\ \x32\xa7\x9e\xf8\x88\x6d\x21\xbd\xad\xf8\xac\x9f\xb0\x52\xb7\xae\ \x72\x56\xad\x3a\xf4\xa5\xd1\xb6\x6d\x09\x76\x18\x0b\xcf\xb1\xb3\ \x53\xcb\x73\x62\x63\xca\x2a\x00\x00\x40\xd5\xd1\x6d\x18\x6f\xb1\ \x6d\xb1\x3f\xdc\xef\xab\xa3\xfa\x32\xe8\x21\x42\x3a\x97\x46\x31\ \xea\x26\xed\x0d\xe7\xf7\x26\xd2\xef\x2e\x00\x00\x00\x40\x96\x28\ \x10\x2b\x6d\x5b\xf4\x1b\x8a\xbf\xf4\x13\x60\x6a\xd5\x52\xce\xf2\ \xe5\x07\xdf\x49\x5f\xba\x54\x39\x45\x45\x84\x3d\x8c\x9c\x7b\xc5\ \x33\xed\x0c\xe7\x37\x89\xd5\x28\xa3\x00\x00\x00\xc1\xb0\xca\xb6\ \xc5\xbf\x8e\xf8\x33\x3f\x3b\x8c\x35\x6b\x1e\x3a\xa4\x4f\x9b\x46\ \xe0\xc3\x48\xf9\xbe\x38\xd9\xce\x70\x7e\xa5\xfb\x05\x1f\x00\x00\ \x00\x02\x64\xaa\xf8\x2f\x9b\x42\x40\xa9\x78\x93\x9f\x40\x23\x21\ \x3d\x79\xc9\x25\x07\x3f\xee\x32\x78\x30\xc1\x0f\x23\xe1\x6e\x71\ \xac\x9d\xe1\x7c\x25\xe5\x12\x00\x00\xc0\x1c\x23\xc4\xbf\xdb\x14\ \x06\x8a\xc4\xab\x7c\x86\x74\xe7\x60\x21\x9d\x4b\xa3\x18\x01\xdf\ \x11\x87\xd9\x17\xcc\xf5\x63\x67\xe7\x50\x26\x01\x00\x00\xcc\x73\ \x8c\xf8\x07\x9b\x82\x81\xee\xf7\xbc\xc9\xcf\x71\x97\xb2\x32\xe5\ \x2c\x5b\x76\xf0\x4b\xa3\xba\x03\x0c\x41\x10\x2d\xf4\x75\xb1\xaf\ \x7d\xe1\x5c\xff\xba\x36\x99\xf2\x08\x00\x00\x10\x1e\xcd\xc5\x57\ \x2d\x0b\x08\xfb\xba\x58\x78\x0e\x3a\x35\x6a\xa8\xd4\x92\x25\x07\ \xbd\x34\x9a\xaa\x56\x8d\x40\x88\x56\xf9\xbc\xd8\xce\xbe\x70\xfe\ \x81\x38\x98\xb2\x08\x00\x00\x10\x3e\xba\xaf\xf1\x73\xb6\x85\xf4\ \x39\x6e\xcb\x39\xcf\xc7\x5d\x0e\x76\x71\x74\xf2\x64\x42\x21\x5a\ \x15\xce\xdb\xdb\x17\xce\xff\x2c\xf6\xa5\x1c\x02\x00\x00\xd8\x43\ \x2d\xf1\x3e\xdb\x42\xfa\xa9\x6e\x77\x0b\x4f\xc1\xa7\xac\xec\xe0\ \x17\x47\x87\x0c\x21\x1c\x62\xe8\x3e\x2d\xb6\xb0\x2f\x9c\xcb\x77\ \xe1\x44\x67\xca\x20\x00\x00\x80\x7d\xe8\x56\x6a\xff\x63\x5b\x48\ \x1f\x2e\xbe\x9b\x85\x9d\xf4\x54\x45\x85\x72\xda\xb5\x23\x24\x62\ \x68\x3e\x28\x36\xb2\x2f\x9c\xff\x4e\x6c\x42\xf9\x03\x00\x00\xb0\ \x97\xbc\x84\x85\xbd\xd2\xfb\x89\x6f\x7a\x0d\x42\xf5\xea\x29\x67\ \xed\xda\x03\xef\xa2\xaf\x5f\xcf\x4b\xa3\x18\x8a\xbf\x76\x1f\xe6\ \xb2\x6c\x6e\x3d\x26\xd6\xa5\xec\x01\x00\x00\x44\x83\xf9\x89\x74\ \xab\x35\x6b\xc2\x44\x2f\xb7\xeb\x85\xa7\x40\xa4\x3b\xb7\xac\x59\ \x73\xe0\x90\xae\xbb\xbe\x70\x69\x14\x0d\x7a\xbf\xd8\xc0\xbe\x70\ \x7e\xb7\x58\x4a\xa9\x03\x00\x00\x88\x16\x13\xc4\x8f\x6d\x0a\x15\ \x5d\xc5\x97\x3c\x86\xa2\xd4\xc1\x76\xd2\xe7\xcc\x51\x4e\x5e\x1e\ \xe1\x11\x03\xf7\xe7\x62\x6d\xfb\xc2\xf9\xcd\x62\x35\x4a\x1c\x00\ \x00\x40\x34\x19\x9a\x48\xb7\x5e\xb3\x26\x5c\xb4\x73\xbb\x60\x78\ \x0a\x48\x8d\x1a\xa9\x94\x3e\xd6\x72\xa0\x90\x3e\x7a\x34\x01\x12\ \x03\xf5\x2e\xb1\x96\x7d\xe1\xfc\xdb\x89\xf4\x7d\x13\x00\x00\x00\ \x88\x30\x7d\xc4\xbf\xd8\x14\x32\x3a\x88\xbf\xf5\x1a\x94\xca\xcb\ \x55\x6a\xc3\x86\xaf\x07\xf4\xca\x4a\xe5\xf4\xe8\x41\x90\xc4\x40\ \xbc\xdb\xce\x9d\xf3\xcb\x13\xe9\x7b\x26\x00\x00\x00\x10\x03\x3a\ \x8a\x7b\x6c\x0a\x1b\x87\x8b\x8f\x7b\x0d\x4c\x4d\x9b\x2a\x67\xf3\ \xe6\xaf\x77\x76\xd9\xb1\x43\x39\xcd\x9a\x11\x28\x31\xab\xde\x2a\ \xd6\xb0\x2b\x98\x7f\x29\x9e\x4b\x19\x03\x00\x00\x88\x1f\xcd\xc4\ \xd7\x6c\x0a\xe9\x8d\xdc\xee\x18\x9e\x82\xd3\xe1\x87\x1f\x30\xa4\ \xef\x3b\xa7\xae\xdb\x33\x12\x2c\x31\x0b\xde\x2c\x96\xd8\x15\xce\ \x3f\x13\xa7\x52\xbe\x00\x00\x00\xe2\x4b\x53\xf1\x05\x9b\x42\x7a\ \xb9\xdb\x5f\xda\x53\x80\x6a\xd1\x42\x39\x5b\xb7\x7e\x3d\xa4\x2f\ \x5a\xa4\x92\x85\x85\x04\x4c\x8c\xdb\xce\xb9\x0e\xe7\x67\x52\xb6\ \x00\x00\x00\xe2\x4f\x99\xf8\x4b\x9b\x42\x7a\x2d\xf7\x42\x9e\xa7\ \x20\xd5\xaa\x95\x72\xb6\x6d\xfb\x7a\x48\x9f\x3a\x95\x90\x89\x19\ \x7b\x9d\x58\x64\x57\x38\xff\xa7\x78\x02\xe5\x0a\x00\x00\x20\x77\ \x28\x16\x7f\x64\x53\x48\xd7\x3b\x97\xb7\x78\x0d\x54\x9d\x3b\x2b\ \x67\xd7\xae\xaf\x87\xf4\xfe\xfd\x09\x9b\xe8\xdb\xff\xb1\x2f\x9c\ \xeb\xce\x4b\x83\x28\x53\x00\x00\x00\xb9\x87\xee\xa3\x7c\x93\x4d\ \x21\xbd\xd4\x3d\x66\xe0\x29\x58\x75\xeb\xa6\x52\x15\x15\x5f\xbd\ \x34\xaa\xff\xfb\xf6\xed\x09\x9d\xe8\xd9\xeb\xed\x0b\xe7\x7f\x15\ \xfb\x53\x9e\x00\x00\x00\x72\x17\xdd\xb2\x6d\xb3\x4d\x21\x5d\x87\ \xa5\x6b\xbd\x06\xac\x01\x03\xbe\xbe\x8b\xae\x2f\x92\x36\x6c\x48\ \xf8\xc4\x43\xfa\x6d\xb1\xc0\xae\x70\xbe\x37\x91\xee\xb8\x04\x00\ \x00\x00\x90\x58\x92\x48\xb7\x72\xb3\x22\xa8\xe8\xd0\x74\xa5\xd7\ \xa0\x35\x6a\xd4\xd7\xdb\x2f\xae\x58\xa1\x9c\x92\x12\x42\x28\x46\ \x69\xe7\xfc\x2d\xb1\x05\xa5\x08\x00\x00\x00\xf6\x67\x5a\x22\xdd\ \x35\xc2\x9a\x90\x7e\x85\xd7\xc0\x35\x61\xc2\xd7\x77\xd2\xcf\x3a\ \x4b\x39\x79\x79\x84\x51\xfc\x9a\xdf\xb1\x2f\x9c\xeb\xce\x4a\x4d\ \x28\x41\x00\x00\x00\x70\x20\x4e\x12\x3f\xb6\x29\xa4\x57\x7a\x09\ \x5d\x3a\x88\x4f\x99\xf2\xf5\x90\x3e\x66\x0c\x81\x14\xbf\xe2\x77\ \xed\x0b\xe7\x4f\x8a\xf5\x28\x3d\x00\x00\x00\x70\x30\x86\x8a\x1f\ \xda\x14\xd2\x2b\xbc\x84\xaf\xfc\x7c\xe5\xcc\x9e\xfd\xd5\x80\x5e\ \x59\xa9\x9c\x63\x8e\x21\x98\xe2\x3e\x6f\xb0\x2f\x9c\x3f\x22\xd6\ \xa6\xe4\x00\x00\x00\x80\x17\x06\x8a\x7f\xb3\x25\xc8\x14\xb9\xad\ \xf0\x0e\x19\xc2\x8a\x8a\x94\xb3\x70\xe1\x57\x43\xfa\x8e\x1d\xca\ \x69\xde\x9c\x80\x9a\xe3\xfe\xc8\xbe\x17\x42\x1f\x12\x6b\x52\x6a\ \x00\x00\x00\xc0\x0f\xba\x9b\x44\x32\x61\xd1\x4e\xfa\x4e\x2f\x61\ \xac\x7a\x75\xe5\x2c\x5d\xfa\xd5\x4b\xa3\xeb\xd7\xab\x54\x9d\x3a\ \x04\xd5\x1c\xf5\x46\xb1\x9a\x5d\xe1\xfc\x8e\x44\xfa\x2d\x02\x00\ \x00\x00\x00\xdf\xb4\x13\xf7\xd8\x14\xd2\x77\x78\x08\x64\xc9\xb2\ \x32\xe5\xe8\x4e\x2e\xfb\x87\xf4\xc5\x8b\x55\xb2\xb0\x90\xc0\x9a\ \x63\xea\xbe\xfa\xd5\xed\x0a\xe7\xb7\x27\xd2\x6f\x10\x00\x00\x00\ \x00\x64\x4c\x5b\x71\xb7\x2d\x01\xa7\xd0\xed\x5f\x7d\xc8\x70\x56\ \xb7\xae\x72\x2e\xbb\xec\xab\xc7\x5d\xce\x3c\x93\xd0\x9a\x43\xde\ \x29\x96\xd9\x15\xce\xe5\x1f\x89\x9d\x73\x00\x00\x00\xc8\x0e\xcd\ \xc4\x37\x12\x89\x88\xb5\x60\x6c\xd2\x24\xfd\x70\xd1\xfe\x21\xfd\ \xd8\x63\x09\xaf\x39\xe0\x5d\x62\x4d\xbb\xc2\xf9\x8f\x13\xec\x9c\ \x03\x00\x00\x40\x96\xd1\xad\xe0\x7e\x63\x4b\xe0\xc9\x13\xd7\x7b\ \x09\x6b\xed\xda\xa9\xd4\xce\x9d\xff\x0d\xe8\xbb\x76\xed\xfb\x7f\ \x23\xc4\x72\x21\xd4\xa0\xd7\x8b\x05\x94\x10\x00\x00\x00\x08\x82\ \x3a\xe2\x63\x91\x0b\xe9\x5d\xba\x28\xa7\xa2\xe2\xbf\x21\xfd\xf2\ \xcb\x55\xb2\x51\x23\xc2\x6c\x0c\xbd\x5d\xac\x61\x57\x38\xaf\x14\ \xf3\x28\x1d\x00\x00\x00\x10\x24\xb5\x6d\x0a\xe9\xf9\x1e\x2f\x8e\ \x3a\xc3\x86\x7d\xf5\xa8\x8b\xbe\x44\x5a\x52\x42\xa8\x8d\x91\xf7\ \x8a\xb5\xed\x0a\xe7\xd7\x8a\xf9\x94\x0c\x00\x00\x00\x30\x41\xa9\ \x78\x9f\x4d\x21\xdd\xd3\x8b\xa3\x13\x27\x7e\x35\xa4\x9f\x7b\x6e\ \xfa\x81\x23\xc2\x6d\xe4\x7d\x40\xac\x6b\x57\x38\xbf\x32\xc1\xce\ \x39\x00\x00\x00\x18\x46\x5f\x78\xbb\xcd\xa6\x90\xbe\xeb\x50\x41\ \x2e\x2f\xef\xeb\xaf\x8d\x9e\x74\x12\x01\x37\xe2\x3e\x28\xd6\xb7\ \x2b\x9c\xaf\xa1\x3c\x00\x00\x00\x40\x58\xe8\x8b\x6f\xdf\xb1\x25\ \x18\xe9\xee\x2e\x57\x7a\x79\x6d\x74\xd1\xa2\xaf\x86\xf4\xbe\x7d\ \x09\xba\x11\xf5\x49\xb1\xb1\x5d\xe1\x7c\x09\x65\x01\x00\x00\x00\ \xc2\x46\xff\x8c\xbf\xcb\xa6\x90\x7e\xd5\xa1\x82\x5d\x69\xa9\x4a\ \xad\x5c\xf9\xdf\x80\xbe\x63\x87\x72\x5a\xb4\x20\xf0\x46\xcc\xe7\ \xc5\x16\x84\x73\x00\x00\x00\x80\x03\xa2\x2f\xc2\x5d\x61\x4b\x50\ \x2a\x16\x6f\x39\x54\xc0\x6b\xd0\x40\x39\x1b\x37\xfe\xf7\xa5\xd1\ \x0d\x1b\x94\x53\xa7\x0e\xc1\x37\x22\xbe\x26\x76\xb6\x2b\x9c\xaf\ \xa6\x0c\x00\x00\x00\x80\x6d\xe8\x9d\xf4\x75\xb6\x04\x26\xdd\x07\ \xfb\xc7\x87\x0a\x7a\xcd\x9b\xab\xff\x6b\xef\xfe\x63\xed\xae\xeb\ \x3b\x8e\x7f\x6f\x7f\xd1\xd6\xda\x9f\x16\x1a\x1b\x68\x4b\xaf\xa6\ \x19\xb8\x44\xaa\x2d\x6d\x88\x73\xcd\xba\x46\x94\x15\x9d\x54\xc6\ \xa6\x80\xa3\xb9\x13\x7f\xc4\x94\x8b\xd8\xc9\xc0\x16\x2a\x6b\xb5\ \x2b\xed\xed\x36\xdc\x32\xe6\xb6\x66\x2c\xe0\x64\xd9\x96\x31\x41\ \x13\xc1\x58\x7f\x21\x6e\xc8\x48\x51\x41\x84\xde\x73\x8d\x1a\xa3\ \x9b\x66\x2a\xb4\x5f\xdf\xdf\x9d\xe3\x4e\x5b\xee\xbd\xed\xed\xfd\ \xf1\xf9\x9c\x73\x1e\x8f\xe4\xf5\x6f\xd3\x9c\xf3\x3d\xc9\xb3\xa7\ \xdf\xf3\xf9\xd6\xf6\xec\x69\x7e\x93\xfe\xfe\xf7\x97\x03\xd3\xa6\ \x09\xe0\xcc\xf7\xcd\xd8\xab\xf3\x8a\xf3\x9d\x3e\xfe\x00\x40\xce\ \xae\xcf\x25\x9c\xa6\xc7\xee\x19\xe9\x19\xe9\x57\x5e\x29\x82\x33\ \x8f\xf3\x57\xf9\x41\x28\x00\xc0\x88\xf5\x16\xad\xf4\x4d\xfa\xba\ \x75\xc7\xff\x68\x74\xfd\x7a\x31\x9c\xe1\x9e\x8e\xbd\x26\xaf\x38\ \xbf\xd5\x47\x1d\x00\x68\x25\x37\xe5\x12\x52\xd5\xc3\x6b\xee\x1f\ \xc9\x19\xe9\xfb\xf7\x97\xb5\xf3\xcf\x17\xc5\x19\xed\x70\xec\xcd\ \x79\xc5\x79\xf5\xc3\x68\xe7\x9c\x03\x00\x2d\x67\x4b\x2e\x41\x35\ \x3b\x76\xdf\x30\x01\xd8\x5f\x3d\xb0\xe8\x1d\xef\x68\x46\xfa\xae\ \x5d\x65\x6d\xe1\x42\x71\x9c\x49\x9c\x6f\xca\x2b\xce\x6f\xf3\xd1\ \x06\x00\x5a\xd9\x7b\x63\x47\x73\x89\xf4\x4f\x9e\xec\x8c\xf4\xf7\ \xbd\xaf\x19\xe9\xdb\xb7\x97\xb5\x59\xb3\x44\x72\xe2\x5d\x9d\x57\ \x9c\xff\xb1\x8f\x34\x00\xd0\x0e\xfe\x20\x97\x48\x5f\xd0\x78\x2c\ \xfc\x90\x41\x38\x67\x4e\x59\xdb\xb1\xa3\x19\xe9\xef\x7e\x77\xfd\ \xdb\x75\xa1\x9c\x64\x5b\xdc\xd6\x02\x00\x30\x6e\x7a\x72\x89\xf4\ \x85\xb1\x07\x87\x89\xc2\x81\xee\xee\xb2\xb6\x77\x6f\x33\xd2\x37\ \x6e\x14\xcb\x09\x76\x63\x5e\x71\xde\x27\xce\x01\x80\x76\x74\x5d\ \x2e\xc1\x75\x4e\xec\xcb\xc3\x05\xe2\xaa\x55\xc7\x9f\xec\xb2\x66\ \x8d\x68\x9e\xc0\xed\x8f\x4d\xca\x27\xce\x3f\x56\xd4\x1f\xc6\x05\ \x00\xd0\x96\x36\xc7\x8e\xe4\x10\x5e\x4b\x1a\x8f\x8b\x1f\x32\x14\ \x2f\xbd\xb4\x19\xe8\xb7\xdf\x5e\xd6\x96\x2e\x15\xcf\x13\xb0\x3b\ \x63\x93\xf3\x89\xf3\x3f\x2b\x7c\x73\x0e\x00\x74\x80\x6b\x72\x89\ \xf4\x15\xb1\xc7\x87\x8a\xc5\xae\xae\xb2\xbf\xa7\xa7\x19\xe9\x1f\ \xfa\x50\xfd\x1e\x75\x11\x3d\x6e\xfb\xe7\xc6\x03\xa6\x32\x89\xf3\ \x3b\xc4\x39\x00\xd0\x49\x7e\x3f\x97\x48\x5f\xd9\x78\x42\xe5\xa0\ \xf7\xa3\x4f\x9f\x5e\xd6\x3e\xf0\x81\x66\xa4\x5f\x77\x5d\x59\x9b\ \x32\x45\x4c\x8f\xc3\x1e\x8a\xcd\x73\x5b\x0b\x00\x40\x52\xef\x2c\ \x32\xf9\xe1\xe8\xeb\x62\xcf\x0e\x15\x8f\x0b\x16\x94\x03\x3b\x77\ \x36\x23\x7d\xd3\x26\x41\x3d\xc6\x7b\x34\xb6\x34\x9f\x38\xbf\x27\ \x36\xc5\xc7\x13\x00\xe8\x54\x6f\x2f\x32\xf9\x26\xfd\x8d\x8d\x87\ \xe2\x0c\x1a\x91\xcb\x97\x1f\x77\xb2\x4b\xff\xda\xb5\xc2\x7a\x8c\ \x76\xa8\x71\xab\x51\x26\x71\x7e\x77\x6c\xb2\x8f\x25\x00\xd0\xe9\ \xde\x55\x64\xf2\x4d\xfa\x55\xc3\xc5\x64\x75\x92\x4b\x23\xd0\x07\ \xaa\x58\xf7\xa3\xd1\x51\xef\xe9\xd8\xda\x7c\xe2\xfc\xbe\xd8\x34\ \x1f\x47\x00\x80\xba\xf7\x66\x12\x69\x65\xef\x30\x41\xd9\x5f\xdd\ \xde\xe2\x47\xa3\x63\xb2\xea\x7f\x2b\x7e\x2b\x9f\x38\x7f\x28\x36\ \xd3\xc7\x10\x00\xe0\x78\xd9\x9c\x93\xbe\x6d\xa8\x40\xaf\x9e\x2a\ \xfa\x9e\xf7\x34\xbf\x49\xef\xed\xf5\xa3\xd1\xd3\xdc\x95\xf9\xc4\ \xf9\xc3\xb1\x39\x3e\x7e\x00\x00\x83\xdb\x99\x43\xb4\x55\xe7\x70\ \xff\xd5\x50\x71\x39\x73\x66\x59\xbb\xf9\xe6\x66\xa4\x5f\x7e\xb9\ \xe0\x1e\xe1\xb6\xe7\x13\xe7\xdf\x8c\xbd\xd4\xc7\x0e\x00\x60\x78\ \x3b\x72\x88\xb7\xa9\xb1\x03\x43\x45\xe6\xe2\xc5\xe5\x40\xf5\xf0\ \xa2\x5f\xde\xee\x52\x3d\x79\x54\x78\x9f\xd2\xf6\xc4\xba\xf2\x88\ \xf3\xa7\x62\x8b\x7d\xdc\x00\x00\x4e\x4d\x16\xdf\xa4\xcf\x88\xfd\ \xd3\x50\xb1\xb9\x72\x65\x33\xd0\xf7\xed\x2b\x07\xba\xbb\x05\xf8\ \x49\x76\xa0\xf1\x0f\x9f\x0c\xde\xdb\xf8\xeb\x14\xcb\x7d\xcc\x00\ \x00\x4e\x5d\xf5\x04\xc7\x3f\xcd\x21\xd2\x67\xc7\x1e\x18\x2a\x3a\ \x2f\xbb\xac\x79\xab\xcb\x6d\xb7\x95\x03\x73\xe7\x0a\xf1\x21\xf6\ \x2f\x8d\x7f\xf0\x64\xf0\x9e\x7e\x3f\x76\xbe\x8f\x18\x00\xc0\xe9\ \x45\xfa\x1d\x39\x44\xfa\x59\xb1\x2f\x0c\x16\x9e\x93\x27\x97\xb5\ \x2d\x5b\x9a\xdf\xa4\xf7\xf6\x96\xfd\x7e\x34\xfa\x82\x7d\x36\x36\ \x3f\x8f\x38\xff\xef\xd8\xab\x7d\xb4\x00\x00\x4e\x5f\xf5\xd0\x98\ \xbb\x73\x88\xf4\x97\xc5\x1e\x1f\x2c\x40\xe7\xcf\x2f\x6b\xbb\x76\ \x35\x23\xbd\xfa\x56\x5d\x94\xff\xff\x1e\x8b\x2d\xcf\x23\xce\x7f\ \x1a\xfb\x4d\x1f\x29\x00\x80\xd1\x9b\x1a\xbb\x37\x87\x48\x5f\x1d\ \xfb\xd6\x60\x21\xfa\xf2\x97\x97\xb5\xbe\xbe\x66\xa4\x5f\x78\xa1\ \x38\x6f\x3c\x88\x68\x55\x1e\x71\xfe\x5c\xec\x8d\x3e\x4a\x00\x00\ \x63\xa7\xfa\x26\xfd\x1f\x72\x88\xf4\xf5\xb1\x67\x07\x0b\xd2\x0d\ \x1b\x9a\x81\x5e\x9d\xf0\x72\xf6\xd9\x1d\xff\x20\xa2\x37\xe4\x13\ \xe7\x6f\xf2\x11\x02\x00\x18\x7b\xd3\x63\x0f\xe4\x10\xe9\xd7\x0e\ \x16\xa5\x5d\x5d\x65\x6d\xf3\xe6\x66\xa4\x57\x67\xa5\xcf\x98\xd1\ \xb1\x81\x7e\x43\x1e\x71\x7e\x34\x76\xad\x8f\x0e\x00\xc0\xf8\x99\ \x51\xd4\x1f\xcb\x9e\x3c\xfe\x6e\x1e\x2c\x4c\x23\xc8\x07\xb6\x6d\ \x6b\x46\x7a\x4f\x4f\x3d\xdc\x3b\x2c\xce\xf7\xe5\x73\xd6\xf9\x75\ \x3e\x32\x00\x00\xe3\xaf\x7a\x2c\xfb\x23\xa9\xe3\x6f\x52\xec\x2f\ \x86\x78\x88\x51\x6d\xcf\x9e\x66\xa4\xaf\x5b\xd7\x51\x71\xfe\xf1\ \x7c\xce\x3a\xdf\xed\xa3\x02\x00\x30\x71\xce\x8c\x3d\x91\x3a\x02\ \xcf\x18\xea\x41\x46\x17\x5d\xd4\x3c\x1f\x7d\xef\xde\xb2\xb6\x64\ \x49\x47\xc4\xf9\xc1\xd8\xbc\x3c\xe2\xfc\x6f\x8b\xfa\x31\x9d\x00\ \x00\x4c\xa0\x73\x8b\xfa\x13\x21\x93\xc6\xe0\xbc\xc6\x39\xdf\x2f\ \x08\xd6\x2b\xae\x68\x7e\x8b\x7e\xeb\xad\x65\xed\x45\x2f\x6a\xeb\ \x38\x3f\x14\xeb\xce\x23\xce\xef\x2f\xea\x27\xff\x00\x00\x90\xc0\ \x2b\x62\x3f\x48\x1d\x85\xe7\xc4\xfe\xf3\x84\x60\xad\x1e\x58\x34\ \x70\xc3\x0d\xcd\x6f\xd2\xab\x1f\x90\xb6\x69\x9c\x3f\x13\x7b\x4d\ \x1e\x71\xfe\xd5\xd8\x6c\x1f\x0b\x00\x80\xb4\xd6\x15\xf5\x87\xd0\ \x24\x8d\xc3\x55\x83\x9d\x91\xbe\x70\x61\x59\xfb\xc8\x47\x9a\xdf\ \xa4\xaf\x5e\xdd\x96\x81\xbe\x39\x8f\x38\x3f\x1c\x3b\xc7\xc7\x01\ \x00\x20\x0f\xaf\x8f\xfd\x3c\x75\x24\xfe\x46\xe3\xdb\xe4\xe3\x02\ \xf6\xbc\xf3\xca\xda\xfe\xfd\xf5\x40\xaf\x7e\x3c\xba\x68\x51\x5b\ \xc5\xf9\xf6\x3c\xe2\xfc\xbb\xb1\x6e\x1f\x03\x00\x80\xbc\x5c\x11\ \x3b\x92\x3a\x16\x7f\xef\x64\xf7\xa3\x57\xb7\xbd\x4c\x99\xd2\x16\ \x71\xfe\xb1\xc6\x69\x36\x89\x5f\xf3\x1f\xc7\x56\xb9\xfc\x01\x00\ \xf2\x74\x6d\x91\xc1\x37\xba\x7f\x34\xc8\xfd\xe8\xb5\xad\x5b\x9b\ \x91\xbe\x71\x63\xcb\xc7\xf9\xa7\x62\xb3\xf2\x78\x4a\xe8\x1b\x5c\ \xf6\x00\x00\x79\xdb\x9e\x3a\xd0\xab\x87\xf4\xec\x3f\x31\x6a\xcf\ \x3c\xb3\xec\xdf\xbd\xbb\x1e\xe8\x7d\x7d\x65\x6d\xe9\xd2\x96\x8d\ \xf3\x47\x62\x8b\xf2\xb8\xb5\x65\xb3\xcb\x1d\x00\xa0\x35\xdc\x5e\ \x64\x78\x46\x7a\xff\xda\xb5\xcd\x53\x5d\x6e\xba\xa9\xac\x4d\x9d\ \xda\x72\x71\xfe\x64\xec\x57\xf3\x88\xf3\xed\x2e\x73\x00\x80\xd6\ \x31\x39\xf6\x89\xd4\x11\xb9\x20\xf6\xf9\x13\x23\xfd\xaa\xab\x9a\ \xb7\xba\x5c\x72\x49\xcb\x05\xfa\x5b\xf2\x88\xf3\xbf\x2b\x3c\x88\ \x08\x00\xa0\xe5\x54\x0f\xab\xf9\xb7\xd4\x31\xb9\x24\xf6\xd8\xb1\ \x91\x5b\x3d\xb0\xa8\x7a\x70\x51\x15\xe8\xd5\x53\x46\xcf\x3a\xab\ \x65\xe2\xfc\xe6\x3c\xe2\xfc\xde\xc6\x3f\xc0\x00\x00\x68\x41\xd5\ \x43\x6b\x1e\x4e\x1d\x95\xbf\x1e\x7b\xf6\xd8\xd8\xed\xee\xae\xdf\ \x87\x5e\x45\x7a\x4f\x4f\x4b\xc4\xf9\x3f\xc6\xa6\xa6\x8f\xf3\x47\ \x62\x2f\x76\x59\x03\x00\xb4\xb6\x05\xb1\x43\xa9\x23\xfd\xf2\x13\ \xa3\xf7\xe2\x8b\x9b\xb7\xba\xac\x58\x91\x75\x9c\x1f\x8c\xcd\x49\ \x1f\xe7\x4f\xc7\x16\xb9\x9c\x01\x00\xda\xc3\xb2\xd8\x77\x52\x47\ \xfa\xf6\x63\xc3\x77\xf2\xe4\xb2\x76\xfd\xf5\xf5\x40\xef\xed\x2d\ \x6b\x5d\x5d\x59\xc6\xf9\x13\xb1\x97\xa5\x8f\xf3\x1f\xc6\x7e\xc5\ \x65\x0c\x00\xd0\x5e\x5e\x55\xd4\x1f\x6a\x93\x2c\x34\xab\x87\xfa\ \xfc\xcd\xb1\x01\x3c\x6f\x5e\x59\xfb\xf0\x87\xb3\xfd\x16\xfd\x70\ \x6c\x43\x1e\x67\x9d\x6f\x70\xf9\x02\x00\xb4\xa7\xd7\xc7\x9e\x4f\ \x19\x9c\xd5\xc3\x7d\x3e\x7d\x6c\x08\xaf\x59\x53\x0f\xf4\xb7\xbd\ \x2d\xbb\x40\xef\xcd\xe3\x47\xa1\xef\x72\xd9\x02\x00\xb4\xb7\xde\ \xd4\xd1\xb9\x2c\xf6\xf8\xb1\x31\x7c\xcd\x35\x65\xff\x2d\xb7\x64\ \x15\xe7\x07\x62\x93\xd3\xc7\xf9\x47\x5d\xae\x00\x00\x9d\xa1\x2f\ \x75\xa4\x5f\x14\x7b\xe6\x97\x41\x3c\x73\x66\x59\xbb\xf1\xc6\x6c\ \xe2\xfc\xa1\xd8\xec\xf4\x71\xfe\x40\x51\x3f\x2a\x13\x00\x80\x0e\ \x50\x3d\xe4\xe6\x40\xea\x48\x7f\xeb\xb1\x61\x3c\x67\x4e\x16\x71\ \x7e\x28\xb6\x34\x7d\x9c\xff\x47\xe1\x38\x45\x00\x80\x8e\x33\x3d\ \xf6\xd9\xd4\x91\xbe\x33\xa3\xdb\x5a\xfa\x63\xeb\xd3\xc7\xf9\xe1\ \xd8\x62\x97\x27\x00\x40\x67\x9a\x5f\x24\x3e\x23\x7d\x6a\xe3\x21\ \x40\x39\x04\xfa\x1f\xa6\x8f\xf3\xea\x94\x9d\x95\x2e\x4b\x00\x80\ \xce\x96\xfc\x8c\xf4\x85\xb1\x87\x13\xc7\xf9\x5d\x8d\x63\x20\x13\ \xbe\x0e\x47\x62\xbf\xed\x72\x04\x00\xa0\x92\xfc\x8c\xf4\xf3\x62\ \x4f\x26\x8a\xf3\xaf\xc4\x5e\x92\xfe\xdb\xf3\xad\x2e\x43\x00\x00\ \x8e\x55\x9d\x91\xfe\x5c\xca\x48\x7d\x53\x82\x38\x7f\x3a\x76\x81\ \xe3\x14\x01\x00\xc8\xd4\x96\xc4\xa1\x5a\xde\x32\xc1\x81\xde\x93\ \x3e\xce\x3f\x57\xd4\x7f\xb0\x0b\x00\x00\x83\xda\x97\x32\x58\xa7\ \xc4\x3e\x3e\x41\x71\x7e\x47\xac\x2b\x6d\x9c\x7f\x2b\xb6\xd0\x25\ \x07\x00\xc0\x70\x26\xc5\xee\x4d\x19\xe9\x73\x63\x5f\x18\xe7\x38\ \xff\x4c\x6c\x66\xda\x38\xff\x51\x6c\x85\xcb\x0d\x00\x80\x53\x31\ \x23\xf6\xa5\x22\xf1\x8f\x46\x9f\x1a\xa7\x38\xff\x7a\x6c\x79\xfa\ \x13\x5b\x36\xba\xcc\x00\x00\x18\x89\x97\x16\xf5\x87\xe6\x24\x0b\ \xd9\xdf\x1d\xa7\x40\xbf\x34\xfd\x7d\xe7\xdb\x5c\x5e\x00\x00\x9c\ \x8e\xea\xa1\x39\x3f\x49\x19\xb3\xbb\xc7\x38\xce\xff\x24\x7d\x9c\ \xdf\x13\xeb\x72\x69\x01\x00\x70\xba\xde\x1c\x3b\x9a\x2a\x68\xcf\ \x88\xdd\x37\x46\x71\x7e\x7f\xe3\xcf\x4b\x18\xe7\x5f\x8b\xcd\x72\ \x49\x01\x00\x30\x5a\x1f\x4c\x18\xb5\xe5\xe2\xd8\x63\xa3\x8c\xf3\ \x27\x62\xcb\xd2\xc6\xf9\xf7\x8a\xfa\x53\x5b\x01\x00\x60\xd4\xaa\ \x93\x5d\x3e\x91\x32\xd2\xd7\xc7\x0e\x8f\x22\xd0\x37\xa5\xff\x51\ \xe8\x25\x2e\x23\x00\x00\xc6\x52\x75\x6b\xc6\xa3\x29\x23\xbd\xf7\ \x34\xe3\xbc\x2f\xfd\x7d\xe7\x3b\x5c\x3e\x00\x00\x8c\x87\xea\x64\ \x97\xfe\x54\xa1\x3b\x29\x76\x60\x84\x71\xfe\x60\xfa\xf3\xce\xff\ \xb5\xa8\xff\x0f\x04\x00\x00\x8c\x8b\xb5\xb1\x9f\x16\x09\x1f\x62\ \xf4\xc5\x53\x8c\xf3\xea\x1c\xf5\x15\x69\xe3\xfc\x1b\xb1\xb9\x2e\ \x19\x00\x00\xc6\xdb\x95\x09\xa3\xb7\x7c\x65\xec\xdb\xa7\x10\xe8\ \x57\xa7\x8d\xf3\x1f\xc7\x5e\xe1\x52\x01\x00\x60\xa2\xf4\xa5\x8c\ \xf4\x9e\x93\xc4\xf9\x9d\xe9\xef\x3b\xff\x1d\x97\x08\x00\x00\x13\ \x69\x4a\xec\xd3\xa9\x02\xb8\x2b\xf6\x97\x43\xc4\xf9\x97\x62\x73\ \xd2\xc6\xf9\x3e\x97\x07\x00\x00\x29\xcc\x2f\xea\xf7\x59\x27\x09\ \xe1\xd9\xb1\x83\x27\xc4\xf9\xb3\xb1\xd5\x69\xe3\xfc\xc1\xd8\x54\ \x97\x06\x00\x00\xa9\x5c\x10\xfb\xdf\x54\x41\x7c\xc1\x09\xf7\xa3\ \x6f\x4d\x1b\xe7\xdf\x8f\x9d\xed\x92\x00\x00\x20\xb5\xab\x13\x46\ \xf1\xff\xfd\x18\xb4\x8a\xf3\x7f\x8f\x4d\x49\xf7\xf7\x38\x1a\xbb\ \xd8\xa5\x00\x00\x40\x2e\x6e\x4f\x19\xe9\xbb\x62\x4b\xd2\x7e\x7b\ \xbe\xcd\x25\x00\x00\x40\x4e\xa6\xc5\x3e\x5f\x24\xfc\xd1\x68\xc2\ \x38\x7f\xa8\xa8\xff\x68\x16\x00\x00\xb2\x72\x56\xec\x70\x91\xfe\ \x88\xc3\x89\x5c\xf5\x64\xd5\x33\xbd\xf5\x00\x00\xe4\xea\xc2\xd8\ \xcf\x3a\x24\xce\x9f\x8f\xfd\x9a\xb7\x1c\x00\x80\xdc\xbd\xb3\x43\ \x02\xfd\x46\x6f\x35\x00\x00\xad\xe2\xce\x36\x8f\xf3\xfb\x62\x93\ \xbc\xcd\x00\x00\xb4\x8a\x59\xb1\x43\x6d\x1a\xe7\xdf\x89\x2d\xf2\ \x16\x03\x00\xd0\x6a\xce\x8f\xfd\xa4\xcd\xe2\xbc\x3a\xef\x7c\x83\ \xb7\x16\x00\x80\x56\xb5\xa9\xcd\x02\x7d\x87\xb7\x14\x00\x80\x56\ \xd7\xd7\x26\x71\x7e\xb0\x70\xde\x39\x00\x00\x6d\x60\x6a\xec\x73\ \x2d\x1e\xe7\x3f\x8c\x2d\xf3\x56\x02\x00\xd0\x2e\xce\x8e\x7d\xaf\ \x85\x03\xfd\x32\x6f\x21\x00\x00\xed\xe6\x75\xb1\x23\x2d\x18\xe7\ \x7f\xed\xad\x03\x00\xa0\x5d\xed\x6a\xb1\x38\x7f\x32\x36\xc7\xdb\ \x06\x00\x40\xbb\xaa\xee\x47\xff\x62\x8b\xc4\xf9\x73\xb1\x55\xde\ \x32\x00\x00\xda\xdd\xb9\x45\xfd\x47\x97\xb9\x07\xfa\x4d\xde\x2a\ \x00\x00\x3a\x45\xee\xe7\xa3\x3b\x52\x11\x00\x80\x8e\xf3\xd1\x4c\ \xe3\xfc\x7f\x62\xcb\xbd\x3d\x00\x00\x74\x9a\x33\x62\x5f\xc9\x30\ \xd0\xdf\xea\xad\x01\x00\xa0\x53\x75\xc7\x7e\x94\x51\x9c\xdf\xe5\ \x2d\x01\x00\xa0\xd3\xbd\x25\x93\x38\xff\x76\x6c\xae\xb7\x03\x00\ \x00\x8a\xe2\xef\x13\xc7\xf9\xd1\xa2\xfe\x20\x25\x00\x00\x20\xcc\ \x8b\x3d\x93\x30\xd0\xef\xf0\x16\x00\x00\xc0\xf1\x5e\x1b\x3b\x92\ \x20\xce\x9f\x8a\xbd\xd8\xcb\x0f\x00\x00\x2f\xb4\x6d\x82\xe3\xfc\ \xf9\xd8\x1a\x2f\x3b\x00\x00\x0c\xae\x7a\x38\xd0\xc1\x09\x0c\xf4\ \x5d\x5e\x72\x00\x00\x18\xde\xb9\xc5\xc4\x1c\xbd\xf8\xb5\xa2\x7e\ \x16\x3b\x00\x00\x70\x12\x57\x8d\x73\x9c\xff\x3c\xf6\x4a\x2f\x33\ \x00\x00\x9c\xba\xbb\xc6\x31\xd0\xb7\x7b\x79\x01\x00\x60\x64\x5e\ \x12\xeb\x1f\x87\x38\x7f\xac\x70\x6b\x0b\x00\x00\x9c\x96\xea\xe1\ \x41\x47\x8b\xb1\x3d\xb5\x65\x95\x97\x15\x00\x00\x4e\xdf\xde\x31\ \x0c\xf4\x5b\xbc\x9c\x00\x00\x30\x3a\xd5\xed\x28\x8f\x8e\x41\x9c\ \x57\x7f\xc6\x34\x2f\x27\x00\x00\x8c\x5e\x75\xe2\xca\xcf\x0a\xa7\ \xb6\x00\x00\x40\x36\xb6\x8e\x22\xd0\x6f\xf3\xf2\x01\x00\xc0\xd8\ \x9a\x14\xfb\x4c\xe1\xd4\x16\x00\x00\xc8\xc6\xb2\x62\x64\x4f\x19\ \xad\x4e\x6d\x59\xed\x65\x03\x00\x80\xf1\xf3\xf6\x11\x04\xfa\x2e\ \x2f\x17\x00\x00\x8c\xbf\xbb\x4f\x21\xce\xff\xab\x70\x6b\x0b\x00\ \x00\x4c\x88\xea\x29\xa3\x03\xc5\xf0\xb7\xb6\x5c\xe8\x65\x02\x00\ \x80\x89\xb3\xa1\x18\xfa\x29\xa3\xbb\xbd\x3c\x00\x00\x30\xf1\xfe\ \x7c\x90\x38\xff\x7a\x6c\x86\x97\x06\x00\x00\x26\xde\xcc\xd8\xa1\ \xe2\xf8\x5b\x5b\xd6\x78\x59\x00\x00\x20\x9d\x95\x45\xfd\x49\xa1\ \x55\xa0\xef\xf5\x72\x00\x00\x40\x7a\x1f\x8c\x7d\xa3\xa8\x7f\xa3\ \x0e\x00\x00\x24\x36\x2d\x76\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\x40\ \x3b\x84\xc7\x9d\x59\x0c\xd3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x07\ \x08\x77\x57\x87\ \x00\x62\ \x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x08\x9b\xa0\x47\ \x00\x74\ \x00\x72\x00\x61\x00\x73\x00\x68\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x08\x97\x8a\x27\ \x00\x68\ \x00\x65\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x39\x28\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x09\xc4\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/dialogs/0000755000076500000240000000000012613140041016506 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dialogs/classwizard/0000755000076500000240000000000012613140041021034 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dialogs/classwizard/classwizard.py0000755000076500000240000003575612613140041023757 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, QFile, QRegExp from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QLabel, QLineEdit, QMessageBox, QRadioButton, QVBoxLayout, QWizard, QWizardPage) import classwizard_rc class ClassWizard(QWizard): def __init__(self, parent=None): super(ClassWizard, self).__init__(parent) self.addPage(IntroPage()) self.addPage(ClassInfoPage()) self.addPage(CodeStylePage()) self.addPage(OutputFilesPage()) self.addPage(ConclusionPage()) self.setPixmap(QWizard.BannerPixmap, QPixmap(':/images/banner.png')) self.setPixmap(QWizard.BackgroundPixmap, QPixmap(':/images/background.png')) self.setWindowTitle("Class Wizard") def accept(self): className = self.field('className') baseClass = self.field('baseClass') macroName = self.field('macroName') baseInclude = self.field('baseInclude') outputDir = self.field('outputDir') header = self.field('header') implementation = self.field('implementation') block = '' if self.field('comment'): block += '/*\n' block += ' ' + header + '\n' block += '*/\n' block += '\n' if self.field('protect'): block += '#ifndef ' + macroName + '\n' block += '#define ' + macroName + '\n' block += '\n' if self.field('includeBase'): block += '#include ' + baseInclude + '\n' block += '\n' block += 'class ' + className if baseClass: block += ' : public ' + baseClass block += '\n' block += '{\n' if self.field('qobjectMacro'): block += ' Q_OBJECT\n' block += '\n' block += 'public:\n' if self.field('qobjectCtor'): block += ' ' + className + '(QObject *parent = 0);\n' elif self.field('qwidgetCtor'): block += ' ' + className + '(QWidget *parent = 0);\n' elif self.field('defaultCtor'): block += ' ' + className + '();\n' if self.field('copyCtor'): block += ' ' + className + '(const ' + className + ' &other);\n' block += '\n' block += ' ' + className + ' &operator=' + '(const ' + className + ' &other);\n' block += '};\n' if self.field('protect'): block += '\n' block += '#endif\n' headerFile = QFile(outputDir + '/' + header) if not headerFile.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(None, "Class Wizard", "Cannot write file %s:\n%s" % (headerFile.fileName(), headerFile.errorString())) return headerFile.write(block) block = '' if self.field('comment'): block += '/*\n' block += ' ' + implementation + '\n' block += '*/\n' block += '\n' block += '#include "' + header + '"\n' block += '\n' if self.field('qobjectCtor'): block += className + '::' + className + '(QObject *parent)\n' block += ' : ' + baseClass + '(parent)\n' block += '{\n' block += '}\n' elif self.field('qwidgetCtor'): block += className + '::' + className + '(QWidget *parent)\n' block += ' : ' + baseClass + '(parent)\n' block += '{\n' block += '}\n' elif self.field('defaultCtor'): block += className + '::' + className + '()\n' block += '{\n' block += ' // missing code\n' block += '}\n' if self.field('copyCtor'): block += '\n' block += className + '::' + className + '(const ' + className + ' &other)\n' block += '{\n' block += ' *this = other;\n' block += '}\n' block += '\n' block += className + ' &' + className + '::operator=(const ' + className + ' &other)\n' block += '{\n' if baseClass: block += ' ' + baseClass + '::operator=(other);\n' block += ' // missing code\n' block += ' return *this;\n' block += '}\n' implementationFile = QFile(outputDir + '/' + implementation) if not implementationFile.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(None, "Class Wizard", "Cannot write file %s:\n%s" % (implementationFile.fileName(), implementationFile.errorString())) return implementationFile.write(block) super(ClassWizard, self).accept() class IntroPage(QWizardPage): def __init__(self, parent=None): super(IntroPage, self).__init__(parent) self.setTitle("Introduction") self.setPixmap(QWizard.WatermarkPixmap, QPixmap(':/images/watermark1.png')) label = QLabel("This wizard will generate a skeleton C++ class " "definition, including a few functions. You simply need to " "specify the class name and set a few options to produce a " "header file and an implementation file for your new C++ " "class.") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) self.setLayout(layout) class ClassInfoPage(QWizardPage): def __init__(self, parent=None): super(ClassInfoPage, self).__init__(parent) self.setTitle("Class Information") self.setSubTitle("Specify basic information about the class for " "which you want to generate skeleton source code files.") self.setPixmap(QWizard.LogoPixmap, QPixmap(':/images/logo1.png')) classNameLabel = QLabel("&Class name:") classNameLineEdit = QLineEdit() classNameLabel.setBuddy(classNameLineEdit) baseClassLabel = QLabel("B&ase class:") baseClassLineEdit = QLineEdit() baseClassLabel.setBuddy(baseClassLineEdit) qobjectMacroCheckBox = QCheckBox("Generate Q_OBJECT ¯o") groupBox = QGroupBox("C&onstructor") qobjectCtorRadioButton = QRadioButton("&QObject-style constructor") qwidgetCtorRadioButton = QRadioButton("Q&Widget-style constructor") defaultCtorRadioButton = QRadioButton("&Default constructor") copyCtorCheckBox = QCheckBox("&Generate copy constructor and operator=") defaultCtorRadioButton.setChecked(True) defaultCtorRadioButton.toggled.connect(copyCtorCheckBox.setEnabled) self.registerField('className*', classNameLineEdit) self.registerField('baseClass', baseClassLineEdit) self.registerField('qobjectMacro', qobjectMacroCheckBox) self.registerField('qobjectCtor', qobjectCtorRadioButton) self.registerField('qwidgetCtor', qwidgetCtorRadioButton) self.registerField('defaultCtor', defaultCtorRadioButton) self.registerField('copyCtor', copyCtorCheckBox) groupBoxLayout = QVBoxLayout() groupBoxLayout.addWidget(qobjectCtorRadioButton) groupBoxLayout.addWidget(qwidgetCtorRadioButton) groupBoxLayout.addWidget(defaultCtorRadioButton) groupBoxLayout.addWidget(copyCtorCheckBox) groupBox.setLayout(groupBoxLayout) layout = QGridLayout() layout.addWidget(classNameLabel, 0, 0) layout.addWidget(classNameLineEdit, 0, 1) layout.addWidget(baseClassLabel, 1, 0) layout.addWidget(baseClassLineEdit, 1, 1) layout.addWidget(qobjectMacroCheckBox, 2, 0, 1, 2) layout.addWidget(groupBox, 3, 0, 1, 2) self.setLayout(layout) class CodeStylePage(QWizardPage): def __init__(self, parent=None): super(CodeStylePage, self).__init__(parent) self.setTitle("Code Style Options") self.setSubTitle("Choose the formatting of the generated code.") self.setPixmap(QWizard.LogoPixmap, QPixmap(':/images/logo2.png')) commentCheckBox = QCheckBox("&Start generated files with a comment") commentCheckBox.setChecked(True) protectCheckBox = QCheckBox("&Protect header file against multiple " "inclusions") protectCheckBox.setChecked(True) macroNameLabel = QLabel("&Macro name:") self.macroNameLineEdit = QLineEdit() macroNameLabel.setBuddy(self.macroNameLineEdit) self.includeBaseCheckBox = QCheckBox("&Include base class definition") self.baseIncludeLabel = QLabel("Base class include:") self.baseIncludeLineEdit = QLineEdit() self.baseIncludeLabel.setBuddy(self.baseIncludeLineEdit) protectCheckBox.toggled.connect(macroNameLabel.setEnabled) protectCheckBox.toggled.connect(self.macroNameLineEdit.setEnabled) self.includeBaseCheckBox.toggled.connect(self.baseIncludeLabel.setEnabled) self.includeBaseCheckBox.toggled.connect(self.baseIncludeLineEdit.setEnabled) self.registerField('comment', commentCheckBox) self.registerField('protect', protectCheckBox) self.registerField('macroName', self.macroNameLineEdit) self.registerField('includeBase', self.includeBaseCheckBox) self.registerField('baseInclude', self.baseIncludeLineEdit) layout = QGridLayout() layout.setColumnMinimumWidth(0, 20) layout.addWidget(commentCheckBox, 0, 0, 1, 3) layout.addWidget(protectCheckBox, 1, 0, 1, 3) layout.addWidget(macroNameLabel, 2, 1) layout.addWidget(self.macroNameLineEdit, 2, 2) layout.addWidget(self.includeBaseCheckBox, 3, 0, 1, 3) layout.addWidget(self.baseIncludeLabel, 4, 1) layout.addWidget(self.baseIncludeLineEdit, 4, 2) self.setLayout(layout) def initializePage(self): className = self.field('className') self.macroNameLineEdit.setText(className.upper() + "_H") baseClass = self.field('baseClass') is_baseClass = bool(baseClass) self.includeBaseCheckBox.setChecked(is_baseClass) self.includeBaseCheckBox.setEnabled(is_baseClass) self.baseIncludeLabel.setEnabled(is_baseClass) self.baseIncludeLineEdit.setEnabled(is_baseClass) if not is_baseClass: self.baseIncludeLineEdit.clear() elif QRegExp('Q[A-Z].*').exactMatch(baseClass): self.baseIncludeLineEdit.setText('<' + baseClass + '>') else: self.baseIncludeLineEdit.setText('"' + baseClass.lower() + '.h"') class OutputFilesPage(QWizardPage): def __init__(self, parent=None): super(OutputFilesPage, self).__init__(parent) self.setTitle("Output Files") self.setSubTitle("Specify where you want the wizard to put the " "generated skeleton code.") self.setPixmap(QWizard.LogoPixmap, QPixmap(':/images/logo3.png')) outputDirLabel = QLabel("&Output directory:") self.outputDirLineEdit = QLineEdit() outputDirLabel.setBuddy(self.outputDirLineEdit) headerLabel = QLabel("&Header file name:") self.headerLineEdit = QLineEdit() headerLabel.setBuddy(self.headerLineEdit) implementationLabel = QLabel("&Implementation file name:") self.implementationLineEdit = QLineEdit() implementationLabel.setBuddy(self.implementationLineEdit) self.registerField('outputDir*', self.outputDirLineEdit) self.registerField('header*', self.headerLineEdit) self.registerField('implementation*', self.implementationLineEdit) layout = QGridLayout() layout.addWidget(outputDirLabel, 0, 0) layout.addWidget(self.outputDirLineEdit, 0, 1) layout.addWidget(headerLabel, 1, 0) layout.addWidget(self.headerLineEdit, 1, 1) layout.addWidget(implementationLabel, 2, 0) layout.addWidget(self.implementationLineEdit, 2, 1) self.setLayout(layout) def initializePage(self): className = self.field('className') self.headerLineEdit.setText(className.lower() + '.h') self.implementationLineEdit.setText(className.lower() + '.cpp') self.outputDirLineEdit.setText(QDir.toNativeSeparators(QDir.tempPath())) class ConclusionPage(QWizardPage): def __init__(self, parent=None): super(ConclusionPage, self).__init__(parent) self.setTitle("Conclusion") self.setPixmap(QWizard.WatermarkPixmap, QPixmap(':/images/watermark2.png')) self.label = QLabel() self.label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(self.label) self.setLayout(layout) def initializePage(self): finishText = self.wizard().buttonText(QWizard.FinishButton) finishText.replace('&', '') self.label.setText("Click %s to generate the class skeleton." % finishText) if __name__ == '__main__': import sys app = QApplication(sys.argv) wizard = ClassWizard() wizard.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dialogs/classwizard/classwizard.qrc0000644000076500000240000000050012613140041024064 0ustar philstaff00000000000000 images/background.png images/banner.png images/logo1.png images/logo2.png images/logo3.png images/watermark1.png images/watermark2.png PyQt-gpl-5.5.1/examples/dialogs/classwizard/classwizard_rc.py0000644000076500000240000075612112613140041024434 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 14:59:27 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x58\x32\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xdc\x00\x00\x01\x7c\x08\x06\x00\x00\x00\xa4\x31\xd5\xdb\ \x00\x00\x57\xf9\x49\x44\x41\x54\x78\x5e\xec\xdd\xc1\x4b\x55\x69\ \x18\xc7\xf1\xdf\xb9\xd7\xeb\x95\x0b\x95\x61\x10\x3a\xad\x24\x50\ \x50\x08\x12\x0a\x71\x56\x21\x83\x25\x48\x10\x11\x2d\x6c\x51\x11\ \x42\x81\x04\xdd\x6a\x46\xbc\xaf\x60\x50\xa3\xb6\x28\x89\x20\x72\ \x71\x21\x5c\xb4\x90\xac\x08\x93\x36\xcd\xb4\x72\x06\x23\x62\x86\ \x1a\x37\x52\xdc\xc8\x82\xb1\xc2\x6c\x91\xf2\xf4\x6c\x82\x10\xbc\ \x48\x59\x69\x7e\x3f\xf0\xe5\xf9\x0b\x7e\xbc\x8b\xb3\x38\xfa\x11\ \x00\x00\x00\x00\x00\x00\x00\x00\x82\xf4\x8b\xb7\x43\x79\x00\x31\ \x7d\x11\x9c\x94\xd6\x06\xa9\x5f\xd2\xed\xa8\xa0\xa0\x45\x5f\x0f\ \x18\x1c\xaf\x5a\x52\x7a\x68\xd2\x9e\x9f\xb6\x6e\x1d\x4a\x4f\x4c\ \x3c\x30\xb3\x94\xe6\x01\x14\xe8\x73\x30\xb4\x94\x49\xbf\x4b\x3a\ \x1c\x4f\x24\x26\xea\xbb\xbb\xfb\x6a\x5b\x5b\x9f\x4a\xba\xeb\xbd\ \xd3\xa2\x01\x18\xdb\x16\xef\x91\x67\xbd\x15\x15\x7f\x4c\x8e\x8f\ \x9f\x36\xb3\xc3\x5e\x99\x16\x07\x80\x43\x52\x22\x48\x1d\x19\xe9\ \x7d\x47\x2c\x36\x39\x7c\xfc\x78\xd6\xcc\x82\xb7\xdd\x2b\xf8\x64\ \x90\x45\xde\x21\xaf\x72\xb7\x14\xf7\x3b\xe4\x1d\xd3\xc2\x00\x08\ \x52\xa5\x37\xe2\x59\x4f\x69\xe9\xdf\xb9\xd1\xd1\xb3\x66\x76\xd4\ \x2b\xd7\x1c\xbf\x4a\xeb\x83\x34\x15\xa2\xe8\x49\x46\xea\x0c\x92\ \xf5\xd5\xd5\x75\x69\x41\x00\xc6\x76\xd0\x9b\xf6\x01\x4d\x0f\x34\ \x37\x5f\x9d\x9d\x9d\xed\x30\xb3\x5d\x5e\x91\xe6\x71\xa7\xad\xad\ \xcb\x5f\xc1\x99\x20\x59\x67\x32\xf9\xf6\xbf\x5b\xb7\xba\x42\x08\ \x31\xe5\x07\xc0\x87\x76\xfd\x4c\x49\xc9\xfd\xb1\xe1\xe1\x73\x66\ \x76\xc2\xab\x56\x1e\xed\x52\xcd\xa9\x54\xea\x5e\x90\x6c\x4e\x37\ \x95\x1f\x00\x33\xab\xf1\x82\xd7\xec\xad\x56\x7e\xca\x48\x17\x7d\ \xa4\x53\x17\xaa\xaa\xfe\x0a\x92\x5d\xae\xad\xbd\xdf\xdf\xd4\x74\ \x63\x60\xdf\xbe\x1e\x33\x4b\x28\x2f\xf0\x59\x00\x8f\xbd\x97\x51\ \x14\x3d\xd1\x02\x1c\x18\x19\xe9\x2e\xdb\xb4\xe9\xc5\x9b\x5c\x2e\ \x71\xbe\xbc\xbc\x26\x59\x5c\xfc\x7a\xef\xe0\xe0\xa0\xa4\x42\x6f\ \x95\xf7\xbf\x56\x2c\x44\x5a\x54\x30\xb3\xa4\xa4\x6a\x6f\x2c\x5b\ \x5f\x9f\xdd\xd8\xd0\x90\xfb\x39\x9d\x3e\xa2\xaf\x0e\x60\x7c\xdb\ \xbc\x16\x7d\x13\x00\x83\x8b\xb4\x52\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\xf8\ \x47\x1f\x80\x8c\xd4\x16\xa4\x57\x7e\xc3\xca\x18\x1e\x62\xfa\x6e\ \xb0\x7a\xc3\x86\x7f\x24\xad\x89\x45\x51\x26\x23\xdd\x0b\x52\x8b\ \x96\x13\x30\xb8\x20\x15\xfe\x26\x95\x6a\x19\x98\x7a\xfe\xfc\x48\ \x2c\x1e\x9f\x29\xdd\xbc\xf9\xdf\xd4\xba\x75\x25\x51\x14\xf5\x06\ \x69\x67\xbb\x54\xb7\x5b\x8a\x6b\x29\x02\x32\x52\x3a\x48\x5d\x92\ \x22\xbf\x97\xbc\x67\x5a\xe2\x82\xd4\xe4\xd9\x95\xc6\xc6\x3f\xcd\ \x2c\x5c\xdb\xbf\x7f\x28\x48\xf6\xb1\x8c\x94\xd5\x52\x04\x7c\x68\ \xef\x2a\xa0\xaa\xca\xda\xf6\xbe\xa2\x82\xd9\x1d\x60\x8c\x9d\x63\ \x8d\xdd\xdd\x39\xea\x98\x63\xd7\xd8\x8d\x88\x08\x16\x12\x62\x61\ \xa0\x98\x01\x82\x8d\x05\x82\x01\x8a\x8a\x58\x58\x18\x08\x62\x22\ \x29\x20\xa1\xf2\x3f\xef\x5d\xfb\xac\x75\xbf\xfb\xe3\xcc\xe0\x10\ \xd7\x99\xf7\x59\xeb\x59\x87\xb3\xcf\x61\x3e\xef\xb7\x79\xef\xde\ \xfb\x8d\xe7\x5d\x96\x23\xc7\x7a\xf9\x47\x7a\x08\xd7\xaf\x1b\x6b\ \xd5\xa2\x3f\xe2\xc2\x3a\x6a\x68\x79\xc1\xc9\x60\xa0\x79\xae\x5c\ \x51\xd1\xaf\x5e\x99\x7b\x5b\x5a\x56\x82\x81\x85\xad\x2e\x5a\xf4\ \xbd\xfb\x82\x05\x07\xb6\x36\x6e\xec\x4b\x46\xb7\x2c\x67\xce\xea\ \x42\xd7\xc0\x60\xc4\x85\x85\x35\xb4\x2e\x53\xe6\x95\xb2\x3a\xec\ \xeb\xd1\xc3\x7b\x47\xdb\xb6\xdd\x74\xd4\xe0\x9a\xc0\xb8\xbe\x90\ \x41\xed\xea\xd0\xc1\x17\xab\x5b\x07\xdc\xdb\xd2\xfd\x15\x5b\xdb\ \x3d\xb8\x1f\xb3\xae\x6a\xd5\xeb\xa6\x2a\xd5\xd7\xd7\xfe\xfe\xad\ \x31\x5e\x07\xdc\x6d\x22\x44\x4f\xc1\x60\xe8\xc0\x8a\xf1\x13\x56\ \x87\x5b\xd2\xd8\xb4\xf9\x93\xd0\x41\x5c\xb5\xb5\x5d\x67\x55\xaa\ \xd4\x9b\x35\xa5\x4a\x85\x5a\x97\x2d\x5b\x1b\x06\x95\xb4\xbe\x7a\ \xf5\x07\x30\xb6\x29\x66\xfa\xfa\x6d\xc9\xf8\xb6\xb7\x68\xe1\x8f\ \xfb\xe6\x78\xd6\x50\x63\x9b\x69\x2f\xb2\x12\x0c\x76\x9a\x7c\x11\ \x22\x57\x76\x7d\xfd\x6c\x3f\x75\xe9\xe2\x9a\xa7\x58\xb1\xb0\x7c\ \xa5\x4b\xbf\x1d\xe4\xea\xba\xb9\xd7\xf6\xed\x9b\xe6\x44\x44\xe4\ \x12\x3a\x88\x26\x33\x66\x6c\x9d\xf1\xf2\xa5\xed\x8c\xe7\xcf\x1d\ \x12\xa2\xa3\xcd\x31\x94\x23\x6f\xc9\x92\x71\x31\x61\x61\xee\x5f\ \x13\x13\xad\xb3\xe5\xc8\xf1\xa9\xfb\xa6\x4d\x1e\x18\x7f\x96\xb7\ \x44\x89\x10\x01\xe4\x29\x5e\x3c\xac\xec\x2f\xbf\xe4\x81\x11\xaa\ \xe7\x2c\xcb\x9c\x2a\x0c\x06\x56\x82\xd9\xe0\xc2\x0d\x35\x6a\xf8\ \xaf\xc8\x9f\x3f\x1a\xf7\x5d\xc0\xbe\x60\xa5\xbf\x58\x1d\xab\x61\ \xd5\x70\xc4\xb5\x49\x16\xfc\x9b\x73\x81\xb5\x2e\x59\x59\x55\xd9\ \xd3\xa5\x8b\xb7\xf3\xc0\x81\x47\xb0\x82\x8d\xa3\x95\xcc\x75\xe8\ \x50\x77\x3c\xeb\x25\x57\xf0\xf2\x34\x76\x68\xd0\xa0\xf3\x18\x5b\ \x02\x16\xc1\xbd\x33\x9d\xf9\xc0\x49\x59\x11\xbf\x63\xb0\xc1\x15\ \x02\x73\x7a\x2c\x5c\x38\xe0\xc6\x96\x2d\x8e\xb8\x2f\x2b\xfe\x1c\ \xe4\xcd\x9c\x06\xc6\xe3\xac\x14\xbb\xbd\x79\xf3\x5f\xb3\xf0\xdf\ \x5e\x18\x1c\x06\x1a\xc3\x89\xe2\x44\xc6\x65\x5f\xaf\xde\x5d\xdc\ \xe7\x95\x06\x57\x8b\xc6\x5c\x7e\xfb\xed\x30\xc6\x72\x90\x81\xad\ \x2c\x58\x70\xab\xc6\x36\x73\x8a\xc8\x22\x30\xd8\xf0\xf2\xc9\x3f\ \xde\xc2\x7f\xb2\xaa\x95\xc5\xca\xe0\x8e\x6b\xca\xca\xc2\x85\x03\ \x9e\x5f\xb8\x60\x8b\xf7\x47\xea\xc0\x2a\x9d\x13\xac\xe3\xbf\x7d\ \xfb\xf6\x9b\xdb\xb6\x59\xe2\x3e\xbb\x00\x4c\x84\x68\x4a\x86\x75\ \x74\xec\xd8\x3d\x8b\x85\xa8\x0d\x03\xf3\xa1\x7b\x72\x12\x9d\x9a\ \x31\xe3\xd8\xfd\x23\x47\x86\xcb\xcf\xe3\x02\x56\x14\x3a\x04\x06\ \xc7\xeb\x86\x82\x91\xe4\xa4\xd8\xdf\xb3\xe7\x91\xe4\xc4\x44\x33\ \x18\xdb\x6f\x60\x5e\x1d\x59\xa9\xf5\xc0\xa6\xe0\x10\x30\x87\x34\ \xb8\x8e\x64\x60\x70\xb0\x3c\xc1\x35\x69\xa9\x4a\x15\x77\xb0\x5f\ \x3f\xe7\xe4\x4f\x9f\xe8\xdf\x3e\x09\xec\x62\xae\xaf\xef\x2b\x57\ \xbb\x8f\xb8\x56\x11\x59\x09\x06\x63\x81\x10\x45\x60\x68\xea\xed\ \x9a\x45\xee\xdc\xcf\x03\x9c\x9c\x36\xc2\xc8\x16\x81\x0d\x85\x8e\ \x61\xa1\x10\xc5\xb0\x92\x55\xd7\x58\x91\x27\x2a\xdb\xc7\x35\x25\ \x4b\xde\x7c\xe1\xed\x4d\x2b\xf2\x02\xb0\x11\xa8\x12\x80\xb9\x81\ \xc1\xdb\x55\x85\x0b\x47\x38\x0d\x18\x70\xea\xd1\x99\x33\xd5\x44\ \x16\x82\xc1\x61\x83\x2e\x30\x36\x8a\xd1\x7d\xdd\xf6\xcb\x2f\x67\ \xe2\xc2\xc3\x2d\x28\xd6\xa5\xc3\x81\x71\x17\xf0\x33\xb8\x19\xdc\ \x44\x31\x3b\x9c\xed\x62\xdd\xe7\xcf\x77\xa5\x8c\x14\x70\x10\x98\ \x4f\xe3\xfd\x1a\x60\x0a\x1c\x2f\x57\x2e\x2d\x5f\xbe\x6d\x65\xa1\ \x42\x37\xe4\xd6\xd3\x09\xf4\xa1\x2d\xe9\xb7\x52\xe0\x44\x7a\x81\ \xc1\x98\x0d\x4f\x3a\xfd\xc1\x82\x5f\x91\x89\xf2\xe6\xea\xda\xb5\ \xdb\x60\x64\x26\x60\x2b\x50\x67\xc3\x21\x5e\xa6\xa6\xf5\x90\x29\ \xe3\xaf\xac\x6a\xcb\xf3\xe6\x7d\xf3\xe1\xf1\xe3\xd5\x30\xb2\x59\ \x60\xf5\x54\xb6\xc9\xb3\xe9\xbd\x0d\xd5\xab\x3f\x96\x86\x9a\xb2\ \xb2\x48\x91\x29\xab\x8a\x16\x35\xa1\x71\x32\xd8\xd4\x82\xe6\x78\ \xe6\x09\xee\x98\x2f\x44\x01\xc1\x60\xfc\xd3\x6d\x19\xa5\x4e\x81\ \x29\xc8\xda\xb8\x1c\xf9\xe2\xc5\x4a\x0a\x2a\x83\xa5\x7f\x10\xc7\ \xcf\x78\xf2\xb6\x5a\x95\x2e\xfd\x86\x56\x66\x04\xca\xa7\x61\xcc\ \x40\xa4\x02\x78\x59\x3d\x14\xe3\x34\xcb\x91\x23\x96\xae\xa7\xa7\ \x4f\xdf\x82\xb4\xb0\x17\xb8\x4f\xda\xdd\xa9\xd3\xe5\x8b\x16\x16\ \xbd\x35\xd2\xca\x72\x92\x91\x2d\xd3\xd7\xf7\xc1\xf6\x3a\xc8\x71\ \xe4\x48\x03\xf1\x0f\xc1\xe0\x6d\xa4\xc1\x8a\x02\x05\xce\x21\x4c\ \xb0\x53\x6e\xc3\xba\x82\xd9\x7f\x20\x6f\xab\x0a\xac\x9f\x94\x90\ \x30\xef\x99\xa7\xe7\x3a\x72\xa4\x7c\xeb\x73\xc2\xe0\x12\xd4\xe9\ \x6c\xdd\xbb\x7b\xef\xea\xd4\x49\xed\x3c\xc1\x99\x2e\x0a\xce\x95\ \xc4\x2b\x36\x36\x8e\xf2\xbc\xd7\x5f\xbe\x7f\x17\x2b\x5e\x10\x38\ \x30\x39\x39\xb9\xdf\xdb\x80\x80\x35\xf4\xbf\x23\x18\x8c\x74\x58\ \x29\x86\x83\x33\xc1\x8a\x3f\xf0\x67\x30\x00\x5b\xff\xd9\xca\xec\ \xbe\x70\xe1\xcc\xf3\x26\x26\x87\xf0\xce\x62\x38\x55\xae\x92\xc1\ \x2d\xcd\x96\xed\xf3\xc5\xe5\xcb\x77\x63\x6c\x9a\xe6\x79\xcf\xa1\ \x79\xf3\xd1\x58\xd5\xc2\xe9\x1d\x18\xea\x41\x3c\x6b\x9c\x5e\xdb\ \x6b\x06\x1b\x9c\xfe\x7f\xe4\x73\xd6\x04\x27\x82\x86\x70\xae\xdc\ \x81\xb1\x7d\xf1\x5a\xba\xd4\x09\xf7\x33\xc0\x02\x5a\xef\x56\x76\ \x19\x32\xe4\x2c\x19\x9c\x53\xff\xfe\xb6\x72\x9b\xfa\x3d\x60\x30\ \x18\x2f\x7d\x7d\xdb\xf9\x6d\xdd\xba\x43\x3a\x58\x0a\xa5\xb2\x05\ \x2d\x89\x95\x2d\xc6\xa6\x5c\xb9\xd0\xcf\x49\x49\x73\x28\xd8\x2e\ \xfe\x11\x18\x0c\x4e\x71\xeb\x07\x16\x55\x9c\x47\x32\x0b\x65\x32\ \x98\x1d\x3f\x6f\xc7\xf5\xeb\xad\x9d\x3b\x1d\xf0\x4e\x3d\xf1\x37\ \x20\x43\x0c\xa7\xf1\x7b\x7f\x51\xee\xc4\x60\xb0\xf3\xa8\x20\xb2\ \x50\x02\x64\x78\xe0\x21\xf8\x65\x73\x83\x06\xb7\x60\x6c\xe3\x40\ \x95\xd6\xbb\x55\x64\x22\xf7\x75\x32\x30\x70\xa0\x34\xb8\xea\x66\ \x7a\x7a\xef\xe4\x7f\x63\x9c\xf8\x36\x18\x0c\x46\x62\x6c\xec\xe8\ \xe3\xe3\xc7\xbb\x21\x4c\xf0\x91\x8c\x06\x75\x77\x4f\x8e\x4f\x9e\ \xdc\x42\xbb\x6a\x02\x8c\x90\x31\xcb\x30\x7a\x4f\x72\x86\xa9\x91\ \x91\x01\xb2\x58\x3e\x58\xe4\xc9\x13\xfb\xca\xdf\xbf\xb7\x60\x30\ \x18\x7f\x59\x06\xd4\x2d\xfc\xe9\xd3\x15\xbb\xda\xb7\xbf\x46\x4e\ \x95\x25\xb0\x43\x13\x21\x7a\x6b\x18\xdc\x51\x8c\x27\x5c\x34\x37\ \xdf\x47\x61\x94\x88\x67\xcf\x56\x91\x61\xca\xca\xf4\x93\x60\xca\ \xa9\x69\xd3\x8e\xe1\x59\x27\xf1\xb7\xc0\x60\xb0\xe1\x15\x07\x87\ \x3f\x3e\x71\x62\x23\xca\x7f\x6e\xed\xed\xd9\x73\x94\x90\x40\xcc\ \xee\x93\xad\x91\x51\x88\xf4\x6c\x56\x03\xeb\x86\x3d\x7e\x3c\x1e\ \x21\x04\x75\x20\x7d\x4d\x89\x12\x2f\xe1\x64\x99\x9b\x76\xcf\x2f\ \x83\xc1\x86\x57\x15\xfc\x03\x9c\x24\x24\xb0\xdd\x8c\xa2\xac\x96\ \x57\x01\x01\x86\x1a\xef\x65\xc7\xf9\x2f\x8e\xb6\x99\xe4\xf9\xfc\ \xfe\x00\x39\x83\xc1\x46\x97\x4d\x33\xf3\xc6\xbe\x6e\xdd\x63\xb4\ \x92\xc1\xc0\x76\x2d\x10\xa2\x90\x2c\xd0\x9d\x45\x63\x70\xb2\x04\ \xe0\xdd\x09\xa0\x8a\xb6\xa1\xe4\xf5\x04\xef\xe0\x99\x03\x1c\x2a\ \x55\x45\xda\xc0\x60\x30\x9e\x79\x78\xb4\x44\xce\xe9\x33\x0d\x67\ \xc9\x07\xba\xc2\x3b\x99\x18\x72\xf5\x2a\x05\xc8\x8d\x70\x3f\x55\ \x66\xb1\xc4\x99\x65\xcf\x1e\xa9\xfe\x59\xa5\x7a\x89\x6b\x5a\xf3\ \x53\x19\x0c\x5e\xf1\x12\x3f\x7d\x1a\xeb\x63\x6d\xbd\x77\x4f\xd7\ \xae\xc7\x51\xa1\x40\x86\x94\x02\x7d\xcc\x3b\x78\x36\x80\x92\x9d\ \x71\x9f\x00\x6f\xe5\x0b\xd4\xe3\xad\xc5\x98\xe9\xdd\x7d\xfb\xb6\ \xc2\xf0\x92\x60\x80\x81\xb2\x0a\xbd\xb1\xf8\xdb\x60\x30\xd8\xe8\ \xb2\x83\xed\xc0\xb1\xa8\xab\xdb\x4b\x62\x4c\x6a\x51\xdd\x7a\xf5\ \x5a\x2b\x2a\xd1\xa4\x0e\x2d\xab\xd1\xcb\x83\xf5\xf7\x76\xeb\xe6\ \xa5\xa1\xad\x92\x2c\x6b\xef\xd2\x08\x06\x83\x8d\xaf\xe4\xc7\x77\ \xef\xcc\x7c\xd7\xad\xdb\x99\x98\x98\x58\x1f\x06\xd5\x01\x4c\x39\ \xd0\xa7\xcf\x49\xa1\x01\x24\x4b\xef\x95\x82\xb6\xd7\x8e\x8c\x1a\ \x75\xf2\xd9\x85\x0b\x8d\xc4\x77\x81\xc1\x60\xa3\x2b\x00\xf6\x04\ \x7f\xfa\x43\x08\x7d\xac\x78\x51\x38\xd3\xd1\x2a\xd6\x9f\x72\x32\ \xc1\xc1\x38\xc3\x45\xd3\x78\xec\xfb\xf7\x54\x02\x35\xea\x7d\x60\ \x20\xad\x86\xe3\xb1\xda\x1d\xc1\xf5\x28\xae\x53\x70\xcd\x2f\xd2\ \x06\x06\x83\x81\xf3\xdd\x52\x25\x2e\xa7\x49\x0f\x63\x63\x17\x18\ \x5b\x9b\xf1\x42\xe4\xa0\x94\x30\xe9\x58\x89\x05\xe3\xe5\x3b\x81\ \x7f\xd3\x9b\xc9\xca\xcb\x0c\x06\xad\x6e\xa4\x1c\x56\x6f\xe4\xc8\ \x6d\x93\xee\xdc\xb1\xe9\x64\x65\xb5\xab\x6c\x93\x26\x9e\x02\x28\ \x58\xbe\x7c\x48\x1b\x33\xb3\x2b\x64\x8f\x25\x85\xf8\x4d\x25\x44\ \x17\xbd\x9c\x39\x13\xbb\xad\x5f\xef\x32\x3f\x3c\xdc\xba\xd9\xec\ \xd9\x47\x55\xd9\xb2\x55\xcc\xa1\xa7\x77\x38\x35\xa5\x68\xf2\x70\ \x82\x79\x05\x83\xc1\x50\x8c\x42\x8c\x90\x4e\x91\x9b\xeb\x6b\xd6\ \x1c\x1c\xe0\xec\x3c\xca\xba\x5c\xb9\x07\xd4\x6c\xe4\x9e\xb3\xf3\ \x16\x52\x8f\x96\xef\xed\xc5\x16\xf3\x8b\x65\xc9\x92\xef\xe8\xd9\ \xaa\x22\x45\x0e\x23\xab\x65\xb0\xcb\xd0\xa1\xe7\xe8\xf7\x2d\x8b\ \x15\xeb\x22\x24\x34\x2a\x19\xde\x81\xd6\x72\x88\xc1\x60\xf8\xf9\ \xf9\xe5\x80\xcc\xfa\x61\x24\x35\xc7\x29\xdb\x48\x18\x54\xfc\x99\ \x59\xb3\xa8\xca\x7c\xb4\x90\x80\x5a\xd8\x0e\x7a\x16\xe4\xe5\xb5\ \x16\xc9\xd2\xc7\xf0\x7e\x34\xe9\x64\xae\x2a\x54\xe8\x3c\x8d\xef\ \xef\xd3\x67\xb9\x14\x3d\x1a\x88\x7b\x5f\xf0\x14\x8d\x5f\x58\xb6\ \x0c\x17\x4d\x30\x18\xec\x40\xe9\x0c\xe5\xb0\x55\xc7\xc6\x8c\x39\ \xe9\xd8\xba\xb5\xdb\x03\x57\x57\x8a\xc5\xcd\x01\x4b\x08\x89\xfd\ \x7d\xfb\xf6\xa2\x95\x0d\x4e\x94\x47\x4f\xcf\x9d\x1b\x42\xc9\xd2\ \x3b\x5a\xb5\xba\x80\x31\xb5\x92\x18\x56\xc6\x59\x02\x30\x33\x30\ \x68\xa9\x04\xce\x51\x81\x10\xf3\xe8\xf8\xf1\x25\xe2\xff\x83\xc1\ \xe0\x50\x01\x38\x00\x9c\x0d\x8e\x00\xf3\x69\x3d\xcf\xed\x3a\x6c\ \x98\x1b\x19\x1d\x18\xb1\x3c\x7f\xfe\x9d\x3e\x56\x56\x66\x8f\xdd\ \xdc\x36\x62\x75\xbb\x84\xe7\x7d\xe4\x7b\xf9\xd7\x56\xaa\xf4\x9c\ \x3c\x9e\xa4\xbd\x82\x77\x93\x60\x7c\x56\x73\x85\xc8\x27\xd2\x04\ \x06\x83\x8d\xb2\xd1\x75\x7b\xfb\x9d\xd0\xc8\xbc\x2d\x0d\x29\x05\ \x2b\x9e\xa7\x4c\x96\xfe\x49\x9e\xf5\x06\xd0\x38\xe4\xda\x2f\x04\ \x9e\x39\xb3\x61\x5d\x95\x2a\x8f\xe4\x19\xd1\x5d\xa4\x19\x0c\x06\ \x1b\x5d\x6d\x70\xf6\x87\x27\x4f\x56\xe3\x2c\x77\xf4\xd4\x1f\x7f\ \x2c\xc3\x7d\x2e\x45\xd6\x8f\x64\xfa\x48\x39\x8c\x02\xeb\x18\xff\ \x19\x9c\x0a\x91\xde\xdd\x57\xd7\xad\x5b\xf1\x5f\x28\xff\x51\x89\ \x74\x06\x83\x21\xa5\xf7\x2a\x82\x75\xc0\x62\xe0\x41\x15\x82\xe4\ \x14\x2c\xc7\xfd\x81\xa6\x33\x67\x1e\xeb\x6c\x63\x63\x87\x31\x2f\ \xf9\xee\x2f\xe0\x4f\xa0\x2b\xc6\xe2\xc5\x3f\x07\x83\xc1\x90\x1e\ \xca\x14\xc7\x36\x6d\x2e\x07\x04\x04\x64\xa4\x62\x18\x83\xc1\x08\ \x0c\x0c\xd4\x27\x99\x07\x19\x5e\x78\x01\x03\x5c\x8f\x6b\x8f\xef\ \x6d\x9f\xbc\x58\x88\x9f\xf1\xfb\xfd\xbe\xb1\x53\x63\x30\x18\x90\ \x58\xef\x7a\x62\xf2\xe4\x93\x56\xa5\x4a\xdd\x57\x9a\x8f\x98\x08\ \xd1\xf6\x3b\x83\xf2\xbb\xa5\xf1\x7a\x53\x20\x5d\xa4\x0a\x06\x83\ \xcf\x78\x1d\xc1\x45\xd4\x15\x28\xf8\xca\x15\x2b\xdc\xb7\x11\xdf\ \x81\xb3\xf3\xe7\xb7\xa3\xec\x16\xd4\xe9\x05\x7e\x08\x0c\xfc\x93\ \x24\x69\x06\x83\x8d\x2e\x87\x14\x2c\xea\x00\x96\x15\xdf\x81\xa5\ \x7a\x7a\xfb\xd4\xc2\xb6\xbb\x76\x39\x90\xf0\x91\x48\x3b\x18\x0c\ \x06\x55\x8f\x93\x4a\xb4\xb1\x10\xe5\xfe\xe4\x9d\x26\xe0\xd7\x0d\ \x35\x6a\x3c\x7c\x70\xe4\x88\x89\xf3\xc0\x81\x7a\xe2\xbb\xc0\x60\ \xb0\xc1\xed\x04\x53\xcc\x72\xe6\xdc\x2e\x52\x87\x0a\x06\xa9\x76\ \xbe\x28\xc4\x7d\x30\xae\x15\xb9\x3c\x47\xfd\x7f\x8e\xa0\x6e\x9c\ \xad\xc4\xdf\x00\x83\xd1\xc1\xca\x6a\x7d\xd5\x3e\x7d\x2e\x0f\x3d\ \x75\x2a\xe4\x1b\x06\x39\x5c\x85\x55\xd0\xb0\x55\x2b\xff\xee\x1b\ \x37\x3a\xa0\x74\x68\x97\x5e\x8e\x1c\xc5\x54\x7a\x7a\x67\xfe\xf3\ \x29\x62\xb2\xea\x37\x65\x75\xb1\x62\x4b\x71\xcd\x6f\x2c\x44\x25\ \xc1\x60\xfc\x75\x5f\xbc\x31\xe0\x20\xcd\x71\x2a\x72\x85\xb1\x15\ \xa7\x9e\xed\x10\x3a\xfa\x10\xfb\xe1\x03\x55\x9a\x0f\x04\xfb\x61\ \x4b\xa9\x2e\x03\xb2\x2a\x57\xae\xe3\x7f\x75\x5b\x50\x1f\xac\x02\ \xc6\xa2\x36\x2a\x34\x36\x2c\x6c\x1e\x8c\xcf\x0b\xf7\x97\xc4\xf7\ \x81\xc1\x81\x73\xd2\xcf\x4c\x02\x53\x3c\x97\x2c\x71\xa6\x7e\xed\ \x42\x02\xe9\x62\x97\x28\x21\xfa\xe5\x8d\x1b\x03\xfe\x73\x5b\x4a\ \x18\x15\xb9\x79\x6f\x82\x77\x85\x4a\x65\x80\x65\xdf\x6d\x7f\x8f\ \x1e\xe5\x54\x18\xaf\xde\xb7\x6f\xc4\xf7\xf4\x25\x63\x30\x0c\x9b\ \x35\xdb\xae\x9f\x3f\x7f\x98\x00\x9e\x9e\x39\x63\x84\xcb\x15\x50\ \x98\x08\xd1\x3d\x39\x3e\xbe\x65\xa5\x4e\x9d\xae\x97\x6d\xd8\x30\ \x42\xfc\x17\x61\x5b\xb1\xe2\x75\xe5\x40\x6b\xf7\xd3\x4f\x77\xb0\ \xba\x7d\x42\xb0\xf3\x39\xfa\x56\x1b\xcb\xd2\x8e\xb4\x82\xc1\x5b\ \xcd\xd2\x09\xb1\xb1\x8b\xa8\x1b\xd0\xb9\xb9\x73\xad\x97\xe5\xcb\ \x57\x15\xab\xde\x1a\xf0\x31\xfa\x9a\x47\x47\x86\x84\x58\xe0\x9d\ \xc2\xff\xa5\x6d\x64\x5e\x18\x96\x19\x29\x3b\x21\x46\x92\x00\xbd\ \xfa\xd7\xdb\x5b\xb4\xb8\xa9\x18\xde\x8e\xd6\xad\xfd\x92\x92\x92\ \xfe\x89\x94\x1a\x83\x8d\x2e\x37\xd8\x03\x9c\xba\xb2\x48\x11\x92\ \x5e\x4f\x56\x4b\xb2\xd7\xaf\x7f\x1f\x59\x2c\x9d\xff\x6b\xe7\xb6\ \xf2\xa8\x83\x8a\x52\x0c\xec\xfa\xc6\x8d\x3b\x0f\xf6\xed\x7b\x82\ \xee\x91\x0d\x10\x41\x7b\x6c\xe8\xd7\x57\x10\x40\x2a\xcd\x00\x2f\ \xa6\x55\xbd\x97\xc1\x7d\xdc\xef\xbb\xb8\x6c\xb4\xab\x54\x29\x08\ \x2b\xdc\x27\xc7\x6e\xdd\x4a\x8a\xff\x1a\x76\x77\xea\x74\x52\x31\ \x38\x74\x65\x89\xc3\x35\xc1\xb6\x7c\xf9\x67\x5f\x92\x93\x97\x46\ \x04\x05\xad\xc2\x92\xdf\x44\xbb\x3c\x88\xb4\x0c\x29\x45\x67\x79\ \xbe\x7c\xcb\x44\xda\xc0\x60\xa3\xab\x02\x4e\x8f\x0b\x0b\xb3\xc0\ \xf5\x67\xf1\x5f\x02\xb5\xa7\xc5\x0a\x97\x60\x63\x64\xf4\xf2\xda\ \x86\x0d\xbb\xc8\x88\xd4\x8a\x4d\xc5\x8b\xbf\x7b\x78\xe4\x48\x67\ \x18\x5b\x03\xb0\x80\x3c\xe8\xb6\xc4\xaa\x16\x86\xe7\x4b\xae\x6e\ \xdb\x56\x02\xda\x16\xeb\xe3\xc3\xc3\xe7\xcb\xae\x2e\x69\x05\x83\ \x65\xda\xeb\x81\xb9\xff\x6b\x6e\x5b\x1f\xea\xa4\xf9\xf4\xec\xd9\ \xf5\x10\x9b\xd9\xa7\x6e\x08\xd1\xa4\xc9\x9d\x75\x95\x2b\x07\xee\ \xeb\xd1\xa3\x9a\xb6\x4c\x1a\xb6\x99\xb7\x95\x52\x8d\xc3\xa3\x46\ \x0d\x24\x83\x14\x7f\x0f\x0c\x06\x03\xc1\xc8\x63\xe7\xe6\xcd\x73\ \xf1\xdf\xb1\x63\x11\xb5\xb5\xc5\x56\xf2\xf1\xe7\xcf\x9f\x17\xc1\ \x90\x16\xa7\xd6\xae\x36\x29\x2e\x6e\x0a\x49\x65\x2f\xd3\xd7\x8f\ \xbd\xb0\x6a\x55\x75\x91\x66\x30\x18\x5c\x76\x31\x17\x86\x67\x4b\ \xba\x84\xb2\xb5\x51\x6d\x30\x0f\xa8\x12\x5a\x80\x03\xe5\x0f\x5a\ \xe1\xc8\xcd\x8b\xe7\x5d\xff\x4a\x01\xf8\xff\xab\xf4\x32\x18\xbc\ \x97\xce\xfb\xf0\xe8\xd1\xd2\xef\x1f\x3e\x5c\x8d\xfb\xc1\x5a\xde\ \xc8\x6e\x14\x37\x59\x20\x44\x11\xfc\x5c\x18\xfc\xb0\xba\x48\x91\ \xd7\x49\xf1\xf1\x0b\x14\xa1\x19\xad\xf7\xf3\xcb\x74\x9e\x3a\xb2\ \xeb\x66\x12\x78\x05\x1c\x25\xfe\x07\x0c\x06\x1b\x5e\x4b\x50\x5f\ \xeb\x8c\x37\x57\x66\x76\x87\xe3\x7a\x01\x4c\x81\x5a\xd3\x6e\xbc\ \x97\x5a\x38\x40\x85\xe7\xa1\x14\xd4\xc4\xf5\x2d\xc4\x43\x43\xe0\ \x01\x75\x86\x78\x68\xb0\x3c\xf7\xed\x07\xff\x24\x53\x86\xc1\x60\ \x43\x2c\x4f\xde\x4b\xe8\xcc\xbf\x92\x61\x83\xc4\x8b\x2b\x56\xac\ \xc3\x78\xaa\x86\xb3\xa3\x4d\x9b\xe9\x66\x39\x72\xc4\xd3\xbb\x36\ \xe5\xca\x85\xa2\xee\xc9\x22\x3e\x22\xc2\x74\x67\xbb\x76\xd7\x69\ \xcb\xba\xaa\x54\x29\x43\xf1\xa7\x60\x30\xd8\xe8\x1a\x20\xbd\x6b\ \xc1\x89\x89\x13\x4f\x5a\xe4\xca\x15\xa7\xac\x56\xa9\x09\xc9\x5c\ \x30\x33\xeb\x4a\xc1\x72\x0a\x9a\x23\x73\x85\xf4\x2f\x92\x70\xee\ \xb3\xfa\x9c\x98\x38\x98\xe2\x7a\x30\xd4\xa6\xe2\x2f\xc1\x60\xb0\ \xd1\xe5\x02\xbb\x86\x3f\x7f\xbe\x62\x77\xc7\x8e\x57\xd0\xf0\xe1\ \xbe\x5d\xe3\xc6\xf9\x53\xcd\x0e\x87\x36\x7d\xe0\xa9\x53\x1b\x9e\ \x79\x7a\xae\x83\xa2\xef\x7d\x6c\x2d\xa3\x97\xe7\xc9\x53\x82\x94\ \x7c\xd3\x96\x93\xc9\x60\xb0\xe1\x15\x03\x87\x81\xa6\x60\x03\x19\ \x10\xa7\xfc\xb8\x91\xb8\x76\xa6\xd5\x6f\x67\x87\x0e\x57\xe4\x3b\ \x95\xc0\xc9\xc9\x9f\x3e\x99\x29\x67\x3e\x3c\xef\x03\xfe\x1d\x01\ \x1a\x06\x83\x1b\x32\x42\x65\x37\x0c\xdc\x8b\x9b\xcd\xa0\xbf\xcc\ \xf5\x1a\x05\xee\x04\x4f\xa2\xb9\x5f\x6c\xcf\xad\x5b\x2f\x60\xf8\ \x2c\xde\x7b\x46\xef\x65\x37\x30\x70\xc2\xf5\x1e\x0c\x2d\x27\xae\ \x6b\x41\x4f\xfc\x3c\x55\xde\xa7\x05\x0c\x06\xe3\x43\x50\x50\x93\ \xc3\x23\x46\x9c\x93\xce\x92\xaf\x6b\x2b\x54\xf0\x4a\x4d\x4c\x86\ \x3c\x94\xd8\x8a\x3e\x91\x2d\x6e\x93\x70\xfd\x4c\x5b\xd0\xb4\xc7\ \xea\x18\x0c\x96\x4f\xeb\xf9\x36\x20\xc0\x92\x4a\x7b\xd4\xed\x8f\ \x84\x88\xa1\x3c\x4d\xad\xf3\xdd\x18\x59\x96\x11\xe0\x36\x65\x8a\ \xd3\xc6\xda\xb5\xcf\x90\x81\xc2\xf8\xce\xa7\x3d\x5c\xc0\x60\xb0\ \xe1\x95\x02\x7f\xbf\x7f\xe8\xd0\xe6\x5d\x1d\x3a\x78\xfa\xda\xdb\ \xd7\xd5\x88\xcf\xe5\x07\xdf\xae\x28\x50\x20\xec\x53\x74\x34\x9d\ \xe9\xc6\x83\x13\xa1\x59\x7f\x83\x8c\x10\xc1\xf4\xef\x6c\xe2\xce\ \x60\xb0\xe1\xd5\x02\xa7\x83\xad\xe4\xca\xe6\x46\x01\x71\x30\xe5\ \x82\x85\xc5\x41\x8c\xb7\x10\x12\xd8\x62\x5e\xa7\xd8\xde\x9b\x7b\ \xf7\xda\xfe\x45\xdd\x5e\x3d\xea\x2d\xbd\x48\x88\x32\x42\x57\xc1\ \x60\xc8\x7c\xc6\x1a\x22\x0b\xb1\xa6\x74\xe9\xb9\x54\x4d\x4e\x06\ \x77\x74\xf4\x68\x27\x18\x9c\x9e\x92\x36\x46\x63\x7b\xbb\x76\xf5\ \x21\x23\x94\x63\xa5\x61\x58\xcb\x65\x56\xca\x0a\x6c\x4b\x2b\x2b\ \x5d\x5c\x40\x2a\x1d\x8a\xa5\x32\x21\xa1\x8b\x60\xb0\x97\xb2\xb0\ \x10\x8e\x29\xea\x9c\x46\x91\x65\x75\x47\x73\x5e\xbd\x3a\x33\xc6\ \xc7\x67\xa3\x61\x8b\x16\xfe\x30\xac\xc0\x79\x2a\x55\x6e\xea\xaa\ \x89\x47\x36\xf0\x60\xc6\x74\xdf\xb2\xc5\x0b\x3f\x07\x60\xac\x46\ \x8a\x10\xf7\x55\x42\x2c\xc2\xfd\x10\x70\x21\x3e\x2c\x95\x03\x35\ \x6e\x6b\x6a\x7a\x59\x3f\x6f\xde\x78\xfd\x7c\xf9\x12\xc7\xfb\xfb\ \xc7\x08\x5d\x05\x83\x7b\x7b\x6d\x69\xd0\xe0\x32\xa4\x13\x1a\xe1\ \x67\x5f\xb0\x4a\x16\x6d\x33\x0d\xe5\xb9\x6d\x36\x32\x51\xfa\x2a\ \x15\xe6\x07\xfa\xf6\xbd\x28\xcb\x80\x94\xda\xbc\x78\x94\x0b\x1d\ \xa4\x4a\xf3\x1b\x9b\x37\x3b\xa2\x8a\x21\x0a\x63\x1f\xa4\xb2\xaf\ \x22\xb5\xd6\x5a\xe8\x10\x18\x6c\x68\xd6\x30\xac\x33\xb8\x86\x41\ \xfb\xef\x03\x94\x91\x56\x20\xd3\x83\xee\xbf\xec\xef\xdb\xb7\xbb\ \x0e\x24\x49\xab\xdc\xa6\x4e\x3d\x80\x7f\xd3\x47\xa8\x82\xbd\xc4\ \xbd\xfe\x42\x21\x4a\x90\xc7\x72\x4b\xc3\x86\x77\x65\x13\xf8\x5f\ \xc0\x8e\x77\xf6\xec\xb1\x92\x5e\xcf\x14\x92\x7d\x40\xad\xde\x4c\ \x9d\xaa\x30\x67\x30\xe0\x09\x9c\x43\xee\x76\x30\x05\x8d\x13\x02\ \x77\xb6\x6f\x6f\x4f\x3f\x23\x73\xdf\x9b\x14\x6f\x75\xc4\xb1\xd2\ \x02\x3d\xa3\x97\x45\xbf\x7a\x45\xfd\xa4\xa9\xf4\xa7\x28\x98\xb2\ \xad\x69\xd3\xdb\xb8\x2f\x28\x24\x7c\xd7\xad\xab\x40\xe3\x64\x74\ \x10\x9f\xd9\x8c\x67\x35\x85\x2e\x80\xc1\xa0\x73\x1a\x0e\x3f\xa5\ \x1c\x9a\x37\x27\x83\x4b\x59\x59\xa8\x50\xa4\x86\x38\x50\x2c\xfe\ \xb8\x49\xb4\xa5\xa4\x0e\x79\x33\x0b\x83\x4d\xe4\x8a\xa5\x5a\x53\ \xb2\xe4\x53\xf9\x45\xf1\xab\xc6\x67\x9a\x01\xa6\x6c\x6f\xd5\xea\ \x26\xde\x1b\x25\x75\x58\x6a\x62\xcc\x02\x2b\xb6\x2d\x38\x08\xcf\ \x0d\x44\x16\x80\xc1\x06\xe7\x4c\xe2\xad\xb8\x46\x61\x95\x7b\xf7\ \xf1\xcd\x9b\xe5\x36\x86\x86\xa1\x8a\xd1\xad\xab\x56\xcd\x45\xe8\ \x30\x7c\xac\xac\xa6\xe0\xcc\x16\x43\x46\x07\x43\x7a\x09\xde\x94\ \x5f\x16\xf1\xef\x1f\x3c\xa0\xe2\xd8\x92\x18\x9b\xa0\xac\xde\xca\ \x15\x63\xcf\x32\xdd\x13\xcb\x60\xb8\x8e\x1c\xd9\x84\xfe\x38\xc9\ \xb8\x20\x5f\x17\x63\x57\xa5\xca\x49\xb5\xdb\xbd\x7b\x77\x9f\x33\ \x33\x67\x1e\x45\x5d\xdb\xec\xbf\x30\xd8\x8a\xf3\x85\x28\x90\x85\ \x2b\x5e\xfe\xd7\x37\x6f\x2e\x77\x1d\x36\xec\x2c\x54\xc4\x7c\x10\ \x4a\x20\xe3\x4b\x39\xd8\xbf\xff\x05\xca\x64\x21\x0d\x4d\xf0\x33\ \x6d\x2f\x4f\x4e\x9e\x7c\x0c\x46\x68\x89\xeb\x09\xbc\x97\x04\xc7\ \xca\xbb\x4c\x4d\x11\x63\x30\xb0\x25\x9b\x48\x06\xb6\xa9\x4e\x9d\ \x87\xca\x76\x92\x64\xef\x20\x77\xb7\x01\xab\x43\x6f\x70\x24\xa8\ \x47\xb1\x39\x8a\x65\x81\x6d\x35\xb7\x63\x58\x29\xa2\xc1\x77\xe0\ \xb8\x2c\xde\x66\x0e\x07\x17\x1e\xe8\xd3\xe7\x22\x0c\xe9\x0b\x09\ \x86\xba\x0e\x1d\x5a\x56\x26\x3c\xa7\x90\xb3\x85\x3e\x17\x9c\x28\ \x87\x5f\xf8\xf8\x0c\xf7\x58\xb4\xc8\x49\x76\xfb\x99\xfb\x27\xab\ \x7f\xc1\x74\x4b\x1f\x63\x30\x28\x03\x03\x86\x12\xb9\xb2\x60\xc1\ \xd7\x10\xd8\x5c\xb6\xae\x4a\x95\x40\xfa\x63\xa5\x2c\x0e\xc8\x97\ \x7b\x0b\x09\x18\x59\x7b\x25\xeb\x43\x32\x82\xce\x41\x02\x70\x68\ \xd6\x6c\x25\x8d\x61\x3b\x7a\x5c\x07\xce\x77\x2a\xb0\xe9\xe3\x13\ \x27\x36\xc2\xa3\xe9\x14\xf7\xe1\x43\x19\xd4\xd5\xa9\xbf\x50\x2e\ \x2c\x5b\x76\xf0\xf0\xf0\xe1\x27\x11\x5e\xf8\x48\x9f\xd9\xba\x6c\ \x59\x7b\x1a\xdf\xd2\xa8\xd1\x71\xa1\x01\xd2\x61\xa1\xab\xdc\x86\ \xc6\x4a\x99\x88\xc3\xe9\xb1\xfd\x64\x70\x28\x60\x12\x0c\x2c\xf1\ \xf6\xde\xbd\xdb\x76\xb5\x6f\xbf\x86\x0c\xc7\x69\xe0\x40\x2f\x6a\ \x82\x1e\xfb\xee\xdd\x42\xea\xdf\x85\x31\x43\x90\xe2\x5a\x9f\xa0\ \x39\x79\x6c\x4f\x97\x2e\x9e\x48\xad\x0a\xc5\x6a\x91\x48\x86\x88\ \x6a\x6e\x7f\x64\xfc\x27\x85\x5e\xbb\x66\x83\xf7\x8b\x0a\x1d\x80\ \xec\x29\x3d\x16\xac\xb4\xa9\x61\xc3\xaa\x30\xba\x24\x54\x93\x07\ \x3f\x3e\x7d\x7a\x14\x9d\xeb\xb6\x36\x6e\xec\x4d\xdb\x4c\xa9\x24\ \xe6\xa4\xb1\xa2\xb5\x93\x67\x3c\x7a\x9e\x02\xa3\x3c\x8f\x90\x83\ \x1b\xc5\xf9\xf0\x79\xe3\x30\x36\x58\x7c\x2f\x18\x8c\xdb\xbb\x77\ \xe7\x09\xf6\xf1\xb1\x8c\x78\xf1\x62\x1a\x65\xea\x63\x7b\x15\x82\ \xae\x25\x26\x32\xaf\xb1\x29\x48\x5d\x4d\x17\x92\x21\x5e\xb1\xb5\ \xdd\x83\xfb\xb9\xe0\x64\x64\xf8\xaf\x86\xd1\x45\xe0\x5c\x94\xa4\ \x36\xd2\x01\x03\xbc\x30\xde\x5f\xe8\x28\x60\x54\xce\x6a\x75\x68\ \x95\xea\x3d\x7a\xd8\xad\x0d\x70\x71\x59\xf0\xc0\xd5\xd5\x7e\x43\ \xcd\x9a\x8f\xde\x3d\x78\xb0\x50\xc3\xe0\x72\xa2\xda\xfc\x8c\xb2\ \x92\xe3\xcb\xc5\x3b\xfa\xf5\xeb\x99\x24\x78\x8b\xad\xf7\x6b\xec\ \x04\xce\x08\x06\xe3\x1f\x6e\xc1\x5a\x45\x44\x44\x14\x40\xf0\xd8\ \x3e\xe4\xea\x55\x5b\xad\x9e\x00\x02\x5b\xb0\xcd\x64\x54\x21\x57\ \xae\xcc\x53\xa4\x0e\x70\x35\xd8\xd7\xb3\xe7\x49\x1a\x87\x87\x30\ \x22\xf6\xfd\x7b\x53\x8c\x15\xd0\xe1\xcf\x59\xf3\xea\xda\xb5\xbb\ \xe1\x7d\x55\x87\x10\x88\x70\x10\x5d\x87\x6c\xdf\x2c\x0a\x94\x0b\ \x0d\xec\xea\xd8\x71\x3f\x19\x1b\x04\x90\xde\x4b\xc3\x0b\x45\xf9\ \xd0\xb0\xcf\x49\x49\x33\x65\xc5\x7a\xba\x39\x59\x18\x2c\xee\x3a\ \x50\x5b\xc8\x15\x4e\x86\x25\xd2\xa9\xb2\x5f\x73\x1c\x4e\x88\xa3\ \x34\x7e\xde\xd8\xf8\x10\x7e\xa7\x8d\xd2\xc6\x4a\xc6\xbb\x0c\x75\ \xd1\xe8\xc0\x05\x2f\x2e\x5d\x5a\x0b\xc7\xca\x99\xcd\x3f\xff\x7c\ \x28\x32\x28\xa8\xa0\xa6\xc4\x9f\x4c\x82\xfe\x88\xad\xe4\x8b\x2f\ \x5f\xbe\x2c\xf5\x5a\xba\xd4\x09\x8a\xd1\x61\x30\xce\xa3\x52\x9f\ \xa5\x0a\xa8\x27\x32\x0a\x0c\xc6\xbd\x03\x07\xca\x91\x9a\x96\x8c\ \x73\xed\x01\x49\x45\x79\x37\x98\x82\x66\x8c\xc1\x48\x9b\xa2\x55\ \x82\x44\x5c\xe7\x81\x51\x1a\xb1\x2e\x5f\x13\x21\x1a\xe8\x60\xd1\ \x6b\x6d\xa9\x9d\x62\x0c\x56\x95\x95\x11\x0b\x64\x29\xcf\x2e\xfa\ \x9c\x74\xa6\xc5\xb3\xfa\x60\x4b\xac\x82\xc6\x58\xdd\x4c\x32\x6d\ \x65\x63\x30\x5e\xf9\xf9\x4d\xb7\xaf\x5b\xf7\x01\x9c\x0f\xb1\x64\ \x50\x4a\xda\xd4\x3d\x67\xe7\x2d\x74\xde\xc3\xfd\x68\x1a\x43\x0e\ \xe6\x4b\xac\x1e\x87\xe0\x94\xb8\x88\x77\x3f\xe2\x1d\x8a\xef\xb5\ \xd0\xd1\x15\x3d\x9b\xc6\xaa\x16\x89\xeb\x67\x99\x97\x79\x8b\x1c\ \x2e\x1a\xef\xe5\x03\xab\x89\xcc\x02\x83\x41\xe7\x33\x70\x02\x69\ \x44\x92\x7b\x9d\x8c\x8b\x74\x24\xb1\x9d\xb4\x95\x5b\x31\x7f\x1a\ \x83\x91\x25\xef\xeb\xde\xdd\x1d\x8e\x86\xd9\x10\x73\xb5\x27\x3d\ \x4a\xc4\xc3\xee\x09\x1d\xc7\x93\x73\xe7\x66\xdb\xd7\xab\x77\x97\ \x3e\x03\xc5\xef\xac\xcb\x95\x5b\x4a\xd2\xeb\x22\x0b\xc1\x60\xa3\ \xd3\x03\x0d\xc1\xa6\xd7\x37\x6d\xda\x8c\xb3\x5d\xb0\x43\x8b\x16\ \x2b\x05\x80\xac\x8d\x08\x4a\x07\x43\xd8\xe0\x12\x85\x0b\xc8\xd1\ \x00\x6f\xdf\x34\xc4\xb8\xfc\xc8\x10\x4f\x4e\x9a\x54\xe8\x1b\x61\ \x89\xa1\xa0\x2b\x38\xdd\x58\x88\x0a\x59\xf8\xd9\x4a\x82\x13\x6e\ \x6c\xd9\xe2\x88\x4a\x84\x57\x32\xf5\xcb\xeb\x3b\x53\xe5\x4a\x4b\ \xd9\xf6\xb5\x60\x41\xf1\x4f\xc1\x60\xc8\xf3\xcd\x1c\x70\x81\x00\ \x2c\x4b\x94\xb8\x8d\x56\x54\x09\xf7\x0f\x1f\x9e\x1b\x74\xf1\xa2\ \x1d\x02\xe8\xfe\x72\xdb\x99\x40\x4a\xca\x2f\x7d\x7d\x9b\x68\xf6\ \x1d\x00\xed\xf0\x7c\x83\xcc\x79\x0c\x92\xe7\xc3\x38\x70\x4c\x16\ \x7b\x6c\xeb\x43\x2d\x7a\x1e\xa5\xb4\x1d\xe8\xd7\x6f\x07\xee\xf5\ \xbf\x27\x19\x1c\xab\x7f\xb4\xdc\x7a\xa7\x5f\x1e\x2a\x83\xfb\x2e\ \x2b\xa1\x80\xb3\xf3\xe6\x4d\x40\x70\xf8\x33\xb6\x99\xe1\x28\x5c\ \x9d\x1a\x17\x11\xf1\x07\x4a\x64\x76\x22\x55\xec\xe5\xc6\x5a\xb5\ \x1e\x6b\x86\x1a\xd0\x2b\x40\x1d\x60\x97\xfd\xc0\x43\x48\xf0\x95\ \x32\x43\xd6\x94\x28\xf1\x4a\x8e\xb7\xd2\x81\xcf\xd5\x49\xd6\xd7\ \x95\xf8\x0e\x83\x1b\xa0\x7c\xbe\xad\x8d\x1a\x5d\x26\x47\x8d\x48\ \x67\x30\xd8\xf8\xf2\xa1\x3a\x7c\x1b\x9c\x26\x31\x4a\xea\x17\xb6\ \x9c\x2e\x38\x1b\x59\xbe\xbd\x7b\x77\x0d\x29\x73\x69\xbc\x5b\x4f\ \xb3\x1a\x61\x99\x81\xc1\x53\xa7\xfe\xfd\xc7\xc5\x86\x85\xcd\x25\ \x37\x7c\xd0\x85\x0b\x6d\x7f\xe0\xca\x0b\x03\xac\xd2\x41\x74\xbe\ \x95\x95\xe9\x94\x40\xad\x52\xf2\x32\x97\xe0\x92\x5e\x5b\x67\x06\ \x1b\x5d\xe5\x84\x98\x18\xe3\x0b\xe6\xe6\x07\xd0\x7a\xd8\x8f\xce\ \x72\xc8\xcc\x58\xac\xdd\x88\x43\xca\x96\xa7\xc0\xb9\xe2\x7d\x62\ \xf2\xe4\x93\xd8\x8a\xaa\x4b\x6b\x90\xc9\xd1\x4a\x26\x4b\x37\x14\ \x1a\x30\x11\xa2\x2b\x55\x24\xfc\x20\xa9\x72\xc6\x64\x68\x48\x93\ \xbb\x46\x57\xb4\x57\x3e\x22\x8d\xad\x15\xf8\x42\x9e\x0d\x3f\x81\ \x83\x04\x83\x91\x2e\x59\xfb\x72\x3b\x96\xf8\xf1\xe3\x32\x5c\xa7\ \x08\x80\x3c\x7e\x24\x87\x20\x63\x5e\x4f\xe1\xbd\x8c\x44\x61\xab\ \x39\x9e\xf7\x08\x7f\xfa\x74\xc5\xb9\xf9\xf3\x0f\x45\x05\x07\x37\ \x48\x65\xc5\xc8\x4b\xc9\xc3\x60\x1c\xf5\x0a\xd7\xf5\x44\x70\x19\ \x34\x0f\xf2\x34\x31\xd9\x41\xc6\xe5\xf6\xc7\x1f\x8e\xb8\x5a\x80\ \x9f\x35\xb6\xd1\xef\xb0\xcd\x36\xc7\xfd\x1c\x70\x98\x5a\xf5\x9d\ \xc1\xf8\xa7\x31\x2e\xd9\xf5\xc6\x48\x1a\xce\x66\xf9\xcd\x7e\x9e\ \x56\x80\xb3\x73\xe6\x1c\xc1\xb3\xf6\xf2\xdd\xa2\xe0\xaf\x60\x3d\ \x0d\x43\x1b\x8d\x77\x7f\xc7\x35\x9b\xcb\xb0\x61\x53\x91\xab\x79\ \x8a\x12\x91\x85\x8e\x42\x26\x3d\x1f\x24\xfd\x97\xbb\x07\x0e\x6c\ \x45\x1c\xd2\x54\x86\x18\xa2\xa5\x91\x3d\xc1\xd9\x35\x11\x69\x70\ \x1f\xa3\x43\x43\x57\xc4\x7e\xf8\xb0\x04\x0e\xa5\x00\xb9\xe2\x5d\ \x4c\x57\x75\x34\x06\x63\x7f\xaf\x5e\x3f\xe3\x9b\xff\x81\x52\x6b\ \x77\x7a\xfa\xf4\x03\x81\x81\x81\xdf\xf4\x00\xe2\x9d\xb3\x72\xfb\ \x75\xf3\xe8\xef\xbf\xff\x2e\x93\xa6\x4b\x0a\x1d\x84\xb1\x10\x46\ \x52\xfb\x32\xc5\xb6\x42\x85\xe7\xc8\xbc\x19\x6b\x9a\x2d\xdb\x22\ \x25\x39\x00\x09\xd0\x67\x50\x97\xe7\x4e\xf7\xe4\xfd\xc4\xe7\xe8\ \x0c\xe6\x83\xca\xf4\x5e\x59\x91\xe0\xef\xd8\xad\x9b\xfa\xb3\xc9\ \xde\x79\xff\x1c\x0c\x0e\x9c\xe3\x0f\x71\x9a\x97\x99\x99\x13\x55\ \x19\x48\x63\xba\xaa\x34\xef\xd0\x06\x64\x1e\xda\xec\xee\xdc\xf9\ \x2a\xbd\x87\xd2\x9f\xd3\xba\xae\xb8\x75\x72\xea\xd4\x15\x38\xaf\ \x86\x93\x01\xc1\xdb\x6a\x8d\x1a\xc1\xaa\x0e\x4d\x9b\xde\xba\x6e\ \x6f\xbf\xf3\xed\xbd\x7b\x2b\x11\x1a\x89\xc5\x19\x35\x04\x29\x62\ \x73\x94\x50\x83\x55\x99\x32\xd3\xe9\x7d\x5a\x11\xe9\x9c\x8b\x9f\ \x3b\x81\x51\xe0\x22\xda\x7a\x8b\xf4\x00\x83\xfb\x81\xa3\x95\xb0\ \x89\xcb\x90\x21\x1e\x88\xbf\xc5\xac\x2e\x51\x62\xd0\x37\xde\xcd\ \x69\x5d\xa6\x8c\x1f\xc5\xf0\x9e\xb9\xbb\xdb\xe2\xbe\xa0\x8e\x7f\ \xb6\xba\xf4\xb9\x50\x06\xe4\x86\xaa\x84\xc9\xb8\xcf\x85\x78\xe4\ \x02\xa4\xc4\x2d\x5c\x91\x2f\xdf\x3e\x72\x0a\xf9\x3b\x3a\x6e\xc7\ \xf8\xcf\x42\x02\xdb\xcb\x7e\x64\x70\x90\x7b\x30\xa5\xf3\x2d\x56\ \xc9\x6d\x74\x2f\x57\x76\x57\x91\x5e\x60\x70\x08\x01\xec\x4b\xd9\ \xf8\xb8\x8e\xd4\x38\x07\xd5\x07\x0d\x14\x39\x73\xa5\x1e\x0d\xef\ \x0c\x49\xe5\xcc\x94\x53\x47\x3f\x57\x1f\x70\x84\xfc\x0c\x0f\xc8\ \x89\x02\x7e\x41\x6c\xf2\xb6\x14\xb4\x55\x69\x7c\x86\x66\xea\xf3\ \x5d\xd1\xa2\x8f\x70\x8d\x57\xb6\xa4\x47\xc7\x8e\x3d\x7d\x7a\xe6\ \x4c\x1b\xac\x8a\x4e\x18\x3b\x07\xd6\x11\xe9\x04\x06\x77\xcd\x29\ \x22\xcf\x41\x95\x14\x25\x2d\xa9\xfc\xfc\x88\x1c\x0e\x10\xa3\xb5\ \x50\xde\x51\x40\xed\xac\xe4\x1f\xf2\x65\xbc\xa7\xb3\x49\xc5\x27\ \xa6\x4c\xe9\x8b\x34\xb1\xe7\x64\x48\xc8\xbc\x79\x06\x63\x2b\xa7\ \xe5\x68\x69\x42\xcf\x64\x48\xe4\xaa\xdf\xd6\xad\x9b\x64\xbd\xdd\ \x14\x22\x62\x9a\xe7\xe8\xb9\xec\x87\xb7\x5c\xa4\x27\x18\x0c\xe8\ \x8d\xac\x32\xcf\x95\x2b\x42\xd9\x56\x39\x0f\x1a\xe4\x49\x21\x86\ \xd4\x1a\x34\x22\x76\xf7\x9a\xde\x81\xe7\xef\x24\xae\x5b\xc1\x66\ \x3a\xb8\xe2\x95\xc6\x99\x6d\xb6\xc7\xc2\x85\x2e\xa7\x67\xcc\xd8\ \x47\xdb\x64\x0a\x8f\x28\x31\x45\x18\x11\x49\x37\x24\xdf\xda\xb5\ \xcb\x41\x1a\xda\x68\xb0\xb2\x12\x40\x47\x22\x78\x94\x65\xc9\x92\ \xef\x50\xa5\x71\x0f\xe7\x5e\x3f\x8d\x26\x2b\xe9\x72\x9e\x65\xf0\ \x8a\xd7\x10\xce\x12\xb3\xfd\xbd\x7b\x53\x69\x4f\x32\x79\x33\x61\ \x50\x5b\xb4\x65\xec\x70\x3f\x58\x51\xe1\x5a\x53\xaa\xd4\x13\x2a\ \x01\x92\xba\x9a\xed\x74\xd0\xe8\x72\x82\xed\xc0\x3f\xc0\x22\x24\ \x27\x0f\x26\x83\xc7\xe4\x96\xd9\x47\x6e\x35\x8d\xb4\x3e\xe3\x28\ \x7a\xee\x36\x6d\xda\x71\x38\x9b\x66\xa3\x37\x9e\x39\x85\x59\xf0\ \x7b\xb7\x68\xab\x0a\x76\x11\xe9\x00\x06\x1b\x5d\x41\xf0\xd7\x17\ \xde\xde\x6b\xe9\x9b\x5d\x86\x11\x96\x6b\x26\x06\xc3\xb8\x82\x2d\ \xf2\xe4\x89\x80\xe4\xf9\x72\x5a\x19\x42\xaf\x5f\xb7\x81\x87\x30\ \x12\x46\xfa\x46\xe8\x38\x8e\x8d\x19\xf3\xd3\xfa\x6a\xd5\xfc\x94\ \x55\xdc\xf9\xd7\x5f\x3d\xde\x3c\x7d\x5a\x3c\x95\x8c\x95\x1b\xa4\ \x15\xfa\xe1\xc9\x13\x63\x7c\xfe\x3d\xf8\x6c\x41\x26\x42\xfc\xb2\ \xa9\x6e\xdd\x29\x18\x8f\x91\xdb\xef\x2d\x22\x9d\xc0\x60\xc3\x2b\ \x0f\x4e\x24\xa1\x1f\xe8\xa5\x50\x31\x28\x89\x19\xcd\x07\xf7\x91\ \x11\xba\x2f\x58\xe0\x8a\xe7\xdd\xc1\x22\x60\x05\x78\x34\x5f\x50\ \xed\x5d\x74\x74\x74\x11\x1d\xff\x5c\xb9\xc0\x71\x14\x2e\xc0\xea\ \xfc\x56\x1a\xde\x32\xa1\x01\x32\x2c\x1a\xa7\xb0\x02\x44\x9d\x14\ \xe3\xa4\xea\xfa\x09\xc8\x57\x6d\x4d\x2b\x3b\x09\xf6\x42\xc6\x7d\ \x33\x25\x18\xe0\x59\xe1\xf4\x12\xb3\x65\xb0\xc0\x51\x03\x19\xa3\ \x32\xc0\xd6\xf1\x85\x2c\xe7\x49\x40\x42\xb4\x89\x92\x85\x8f\xb1\ \x36\x34\xbe\xab\x53\x27\x5f\x8c\xd5\xd4\x4c\xb5\x82\x83\xa5\x36\ \x9e\xe5\xd7\xc1\xcf\xd5\x10\x65\x40\xf3\xcf\x9b\x98\x1c\x7a\x74\ \xfc\xf8\x58\xad\xed\xe4\x6e\xe5\x73\x92\x87\x13\x61\x85\x70\xba\ \x0f\x38\x74\xc8\x04\xd7\x4b\x38\xf7\x25\xdd\x3b\x78\x90\x2a\xed\ \x17\x82\x25\x31\x16\xa8\x08\xf1\xa6\x9b\x68\x2d\x83\xf1\xfa\xf6\ \xed\x11\x14\x0c\xa7\x32\xa0\xed\xcd\x9b\x2f\x55\x32\x33\x60\x50\ \xb7\xa9\xe9\x08\xb4\x34\x57\x91\x6b\x7e\x81\x10\x85\xb0\x12\x9e\ \xd0\xe8\x21\x10\x87\xab\x83\xae\xad\x02\xa4\x7c\x26\xb3\x4e\xfa\ \x0a\x09\xca\x17\x85\xd1\x24\x28\x15\xf5\x70\xb8\xec\xb5\xfb\xe9\ \xa7\x67\x54\x85\x6e\x5f\xbf\xbe\x2b\x8d\x1f\x1b\x37\xee\x38\xad\ \x92\x4a\x32\x00\x2a\x2d\x86\xad\x2c\x50\xe0\xb5\x5c\x09\xfd\xd3\ \xb3\xd3\x2b\x83\x65\x1e\x86\x42\xbe\x61\x05\xae\x23\x61\x48\xb3\ \xc1\x68\xd9\x92\xf8\x34\x6d\x31\xe5\xf9\xc7\x8b\xc6\x50\x02\xe4\ \x8b\x1c\x4c\x67\x6c\xc5\xee\xc8\x34\x2b\x7f\x5d\xcf\xe0\x80\xc1\ \x8c\x00\x53\xcc\xf5\xf5\x3f\xd1\xb6\x93\x1c\x26\xa4\x23\x43\x4a\ \xd8\x14\x3e\x40\xd2\x33\x75\x03\x9a\xaf\x99\x08\x40\x5b\xea\x67\ \x9e\x9e\x6b\x94\x7e\x78\x44\xda\x7a\xcf\x16\x22\x8f\x48\x07\x30\ \xd8\xf0\x2a\x81\x46\x96\x65\xca\xd4\x41\xb6\x86\xba\xae\x6e\x77\ \xc7\x8e\x54\xe8\x99\x5b\x4a\xf4\xa5\x10\x21\xf8\x1a\xee\xbe\x70\ \xa1\x3d\xc6\x17\x28\xb9\x8c\x88\x6d\xcd\xd5\xf5\x6c\x9c\x8b\xcb\ \x97\xef\x78\x78\xf4\x28\xc5\xe4\xa6\x20\xdf\xb2\xa1\x62\x44\x28\ \xe6\x7d\x47\x89\xcf\x18\xaf\x2a\xb4\x00\xa3\x3c\x44\x5e\x5d\xd2\ \xde\xdc\xd1\xb2\xe5\x0d\x32\x52\x8b\x02\x05\xea\x89\x74\x04\x83\ \x0d\x2f\x2f\xea\xef\xe6\x9d\x98\x38\xf1\xa4\xaf\x9d\x1d\x95\x02\ \xa9\xc8\x5d\x2e\xdd\xed\x57\xd6\x56\xa8\xf0\x48\x7a\x39\xdd\x2f\ \x5a\x58\x8c\xa2\x2d\x9a\x4d\xf9\xf2\x57\x7e\x00\xdd\x98\xa6\x52\ \xc6\x2f\x17\x0c\xed\x37\x29\xce\x94\x44\xa2\x4c\xa9\xc5\x25\x69\ \x0b\x49\xab\x1f\x19\x9a\xdc\x6a\x8e\x4a\x4e\x4c\x34\xc3\xb5\x8b\ \x4c\x19\x3b\x44\xff\x9d\xf4\x28\x03\x62\xb0\xd1\xe5\x01\x7b\x82\ \x63\xc0\xec\x94\xb9\x4f\xcd\x48\x50\x00\x7b\x3f\xe1\xe3\xc7\x99\ \x30\xb4\xfd\xf0\xea\xbd\xa6\xd8\x17\x9d\xfd\x36\xd7\xaf\x7f\x8f\ \x3c\x7b\x3f\x50\x05\x79\x71\x24\x42\xfb\x9e\x9a\x31\xe3\x98\x0c\ \x8c\x67\xd3\x4e\x02\xa0\x8a\x0a\xc4\x2b\xe3\x94\x5e\x78\x02\x90\ \xa5\x51\xf9\xe8\xf7\xf1\xb9\xdf\xc8\x55\xd2\x1b\x6c\x28\xd2\x13\ \x0c\xc6\x8e\xd6\xad\x3d\x94\x95\xed\xfc\xe2\xc5\xa3\x29\xa9\x18\ \xf1\xae\x53\x08\xa2\x7f\x22\xaf\x20\x6d\x3d\x7f\x30\xa5\xb4\x51\ \xb2\x3c\x29\xbf\x46\x0e\xe6\x00\x5a\xb1\x70\x1d\x0b\xa6\x1c\x19\ \x35\xea\x2c\x7d\xf1\xa4\x62\xb0\xe5\xb1\xb2\x27\xae\x2e\x52\xe4\ \x03\xae\x9f\xc8\xeb\x09\x62\x38\x9d\xc0\x60\x24\xc5\xc5\xfd\xb2\ \xbf\x4f\x1f\x92\xeb\x53\xd7\xa8\x61\x65\xbb\x8f\xb3\x90\x23\x32\ \xf7\xad\x92\x3e\x7d\xfa\x23\x8d\x2b\x4c\x13\x92\xf0\xcb\x6a\x67\ \x0b\xad\x56\x1a\x41\x71\x27\x8d\x15\xeb\x2d\x82\xfe\x6f\x49\xda\ \x82\x56\xfb\x54\x02\xe8\xea\xb3\x1d\x6d\x47\xf1\xf9\xad\x6d\x8d\ \x8c\x14\x99\x87\x99\x22\x1d\xc1\xe0\xf8\x5d\xf7\x37\x77\xee\x58\ \x51\x3f\x38\xfc\x41\x3e\x87\xd1\xc5\x1e\x19\x37\xae\x59\x5a\x15\ \x94\x61\x70\xeb\xa4\xd7\xef\x09\xae\x65\x85\x0e\xe0\x5d\x40\x40\ \x3d\xac\xd8\xe7\x69\xc5\x22\xe3\x59\x5f\xb5\xea\xd3\x07\x87\x0f\ \xf7\x48\xe5\x6c\xd7\x9a\x9e\x3b\xb6\x6e\x7d\x5d\x36\xd5\x2c\x47\ \x0d\x59\x90\xa5\x13\x8b\x5c\xd4\x0f\xe9\x1e\xb3\x63\xb0\xa8\x11\ \x38\x08\x5c\x2c\xf5\x55\xd2\x1c\x9f\x82\xa7\xf3\xa0\xe2\x25\xdc\ \xdf\xbf\x7f\x43\x1d\xca\xcf\xec\x47\x2b\x16\xa4\x1c\xee\x4a\x4d\ \xcf\x68\xe5\x7c\xa6\xc4\x27\x31\x76\x0b\xc5\xbb\xb1\xef\x1f\x3e\ \x5c\xad\xc8\xfd\xe1\xaa\x8f\x33\xe1\x65\x32\xc4\x8b\x56\x56\xe5\ \x04\x83\x91\x41\xe9\x54\x75\xc0\x7c\x22\x0d\x40\x88\xe1\x67\x45\ \x3a\x81\x88\x9e\x78\xbd\x84\x04\x62\x0b\x14\x60\x2f\x92\xc5\x86\ \x57\x0e\x1c\x77\x6b\xe7\x4e\x07\xc8\xb4\xdf\x70\x1e\x38\xb0\x8b\ \x52\x2b\x08\x8e\xd7\x88\x4f\xf6\x10\x1a\xc0\x0a\x77\x9d\x3c\xb6\ \x58\x29\x5b\x68\xac\xe4\x75\xc0\xb1\xd4\xf5\x35\x2b\x56\x72\x06\ \x43\xa5\x4e\xa3\xd2\xd3\x4b\x40\xeb\xe5\x37\xd4\xe1\x95\xdc\xf5\ \x1a\x75\x6c\x4f\x65\x2b\xe2\xb1\x3a\xb0\xe2\xd5\x03\x67\x82\x43\ \x28\xd8\x2d\x6b\x05\x93\xd5\x67\xbb\xd8\xd8\x45\xd2\x49\xa4\x18\ \x56\x49\x6c\xaf\xe3\xa8\x31\x0b\xc6\x1b\x4b\x1d\x4d\x27\x25\x2b\ \x47\xa3\xfe\x6e\x3d\xeb\xab\x30\x32\xd3\x1d\xff\xab\xd2\xd9\xd5\ \xa6\x5c\xb9\x17\xa4\xc3\x12\x1b\x19\x59\x0f\x63\x4b\x28\xc4\xa0\ \xac\x7a\x72\x05\x2c\xad\x0b\xe2\xae\xb2\x6f\x9d\x6a\x7d\x8d\x1a\ \x9b\x28\xdf\x12\xfc\xb2\xb6\x52\x25\x8a\xc1\x15\x97\x45\xbe\x15\ \x60\x48\xf7\x29\x23\xc5\x7f\xfb\xf6\xed\xb1\xb1\xb1\x94\x87\xe9\ \x02\xa6\x20\x91\xfa\x36\x72\x3a\xd7\x93\xbe\x0a\xad\x96\x8a\x4c\ \x3b\x15\x03\x8b\x0c\x06\x83\x8d\x2d\x37\xf8\x02\xf1\xbb\x70\xea\ \xec\x6a\x9e\x3b\x77\x28\xf5\xc7\x43\x96\x8a\x9f\x14\x35\x8a\xa5\ \x2b\x4a\x65\x1e\x52\x73\x47\xbb\x4a\x95\x1c\xa4\x01\x1e\x05\x4b\ \xeb\x80\xe1\xb5\xa2\xfe\x0e\xf4\xef\x93\x86\x93\x40\x82\x4d\x60\ \x38\xdd\xbb\x0e\x1b\x46\x92\x83\x63\x95\x2f\x95\x6d\x4d\x9b\x5e\ \x91\x81\xf2\x81\x60\x5b\x70\x02\x54\xd6\x2e\x2b\x5f\x28\x14\x3c\ \x17\x19\x04\x06\x1b\xdb\x32\xac\x02\x6f\x34\x3b\xbb\x92\xe2\x96\ \xb2\x9a\x41\x51\xf9\x2c\x0c\x4c\x2d\x65\x4e\xc6\x86\xe7\x5d\x1f\ \x9f\x3d\x5b\x8f\x56\x0d\x99\x11\xb2\x55\x47\xce\xad\x15\xc1\x49\ \x74\xbe\x43\xbf\xbb\xab\xe8\xe2\xfa\x00\x32\x0e\x3e\x3e\xd6\xd6\ \x3b\x65\x95\x41\x71\x0a\x2b\xa0\xa4\x29\x3a\x2e\x2c\x8c\x8c\xad\ \x81\xd0\xc0\xd9\xb9\x73\x27\x4b\x63\xa4\xdc\xcd\x46\xf8\x79\x15\ \x8c\x6f\x65\xba\x56\x5e\x30\x18\xab\x8b\x17\xef\x85\x00\xb9\x3a\ \x21\x1a\x5b\x2b\x7f\xe7\xc9\x93\xf3\xae\x2e\x5a\xf4\x1e\x09\xb8\ \x5e\xb5\xb3\xdb\x75\xd1\xdc\x7c\x1f\x3d\x43\x7f\xf3\x4b\xe4\x01\ \x55\xf2\x1f\x91\xcd\x1f\x83\xc2\xd2\xa7\x90\x54\x98\x86\x7b\x15\ \x75\x08\x52\x84\x6c\xb3\x58\x8c\xb7\xa1\xd4\x48\x31\x95\x9c\x04\ \x1a\x51\xe5\x04\xf8\x15\xf1\xc9\x6b\xb8\x6f\x23\xab\x2e\x7a\x51\ \xa5\x85\x52\xb5\x80\x8a\x0c\xef\x88\xe7\xcf\x57\x92\x54\x04\xbe\ \x48\x76\xcb\xd5\xf2\x2d\x38\x3a\x5d\x3e\x17\x83\x41\xee\xf3\xb0\ \xc0\xc0\xe5\x08\x94\xfb\x22\x24\xf0\x1c\xa5\x31\xc5\x92\x93\x93\ \x7b\x51\x85\x42\x5c\x64\xe4\x0c\xac\x6c\x41\x1a\x32\xed\x85\x84\ \x04\x0a\x42\x83\x71\x5e\x7a\x41\x2b\x05\x79\x09\x11\x6c\x56\xb6\ \x73\xbe\x60\x71\x1d\x91\xa0\xcf\xaf\xd1\x58\xc4\x80\x56\x65\xfb\ \x9f\x7f\x0e\x20\x2f\x2e\x25\x7d\xcb\x2c\x94\x30\x3c\x9b\x48\x06\ \x28\xd3\xe5\x3a\xcb\xec\x1d\x2b\x32\x38\xc4\xef\x94\xd5\xfe\x86\ \x89\x10\xcd\x45\x3a\x80\xc1\x46\x57\x0c\x1c\x2e\x57\x84\x26\x58\ \xdd\x5a\xe2\xfc\x16\x08\x27\x84\xab\xb6\x4c\xbb\x02\xa4\x4e\xdd\ \xa6\xea\x04\xd4\xa5\xcd\xc5\x3b\x21\x60\xca\x8a\x02\x05\xa2\xf0\ \xbb\xef\x56\x97\x2c\x49\x92\x7f\x8b\xa5\xe8\xad\xce\x00\x2b\xf2\ \x45\x69\x3c\xa6\x02\x70\x5f\xb4\x68\x35\x79\x36\x15\x83\x52\x56\ \x3b\xba\x92\x21\xe2\x33\xbe\x87\xe6\xcc\xf2\xc3\x23\x46\x9c\xc3\ \x39\x36\x5e\xae\x78\xfb\xd3\xeb\x73\x31\xd8\xf0\x4a\x83\xd9\x48\ \xc2\x0f\xf5\x69\xc1\x64\x44\x38\xcf\x25\xbd\xbc\x7e\x9d\x82\xe8\ \x39\x85\x06\x2c\x8b\x17\x3f\xaf\xd1\x7e\xeb\x39\x2a\x18\xf6\x24\ \xc6\xc5\xd1\x7b\xa6\x10\x02\x32\x53\x0a\x61\x41\x13\x5d\x51\xdd\ \xba\x7b\xf0\x60\x1f\x48\x38\x84\x49\x03\xdb\x75\x70\xc0\x80\x09\ \xa8\xb2\x50\x1b\x21\x2a\x2d\x6e\xec\xed\xd6\x4d\xe9\x0b\xb1\x96\ \xc6\xce\xcc\x9a\x75\x14\xfa\x31\xbd\xae\xae\x5f\x3f\x1d\x15\xf7\ \x96\x78\x27\x88\xc6\x97\x66\xcf\x3e\x5f\x30\x18\xe9\x79\x16\x8a\ \x8f\x8c\x9c\x87\x34\xb1\x73\x70\x3e\x44\x1d\x1e\x39\x72\xa2\x90\ \x50\x56\x00\x6a\xb9\x8c\x7a\xb5\x48\x24\x4b\xef\xa5\x3e\xe8\x32\ \x2e\xd6\x04\x2c\x05\xbd\x95\x81\x64\x70\x08\x38\x2b\xbd\xf3\x26\ \xea\x4a\xed\x5d\xe4\x8b\x17\x73\x51\x41\x11\xa0\x19\x87\x93\x1a\ \x9a\xa6\x60\x2b\xd2\x00\xc5\x58\x92\x74\x08\x25\x52\x58\x01\xbc\ \x15\xe4\xe5\x55\x9e\x1c\x2e\xb4\xaa\x53\xf3\x4d\xbc\xab\x68\xce\ \x0c\x4a\x97\x32\x20\x06\xd7\xde\x81\xbd\xc0\x25\xe0\x10\xd9\x46\ \xeb\xac\x5c\xb1\x36\x83\x29\x54\xfc\x29\xe5\xf0\xea\x83\x7a\x1a\ \x09\xc4\xa7\xc9\xab\x89\xf2\x19\x4b\x92\x3b\x8f\xfb\xf0\x81\x24\ \xce\xab\xd1\xaa\x82\x6b\x7d\x1d\x28\x6f\x1a\xf5\xcc\xc3\x63\x1d\ \x2a\x0e\x4e\x6f\x6f\xd1\xc2\xeb\xb1\x9b\xdb\x46\xa4\xc2\xd5\xa1\ \x95\x98\xfe\xed\x38\x8f\x26\x53\xa3\x4c\x88\xda\xbe\x24\xc3\x83\ \xcc\x85\xc7\x33\x3f\xbf\x02\xb8\x3f\x49\x5e\x50\xfc\x7e\x73\x8c\ \x57\xc1\xbb\x89\xd2\x68\x2f\xa5\xd7\xe7\x62\xb0\xe1\x15\x07\xf3\ \x51\xf5\x00\x9c\x27\x17\x95\x55\x01\xab\x58\x08\xe4\x10\xa6\xa4\ \x52\xaf\x46\x5a\x92\x5f\xb6\x36\x69\x72\x27\xf2\xe5\xcb\xfe\x38\ \x37\x39\xa1\xf1\x07\x69\x4e\x36\x83\x63\x25\x8e\x9e\x49\x21\xdb\ \xdc\x59\xec\xcd\xac\x0d\x8e\x00\x67\x81\xc3\x61\x30\x7b\x49\x98\ \x48\x6d\x60\x9d\x3a\x5d\xc1\xd8\x38\x68\xaa\xdc\xa0\x15\x5e\x3a\ \x8c\x0a\xca\x2f\xa0\x89\x20\x79\x38\x4f\x92\x61\xd2\xbb\x94\x9d\ \x23\xb3\x55\xb6\xa5\x5b\x0c\x8f\xc1\x80\xf7\xb2\x3f\xc5\xea\xa0\ \xaa\x15\x49\x46\x07\x4f\xe5\x65\x52\x56\xd6\x2a\x8f\xb1\xa6\x67\ \x97\x57\xae\xdc\x8f\x70\xc3\x75\xa9\xad\xf2\xc1\xcb\xcb\x2b\x3b\ \xa4\xfe\x9c\xe4\x7d\x92\x59\xce\x9c\x7d\x85\x0e\x01\xd9\x2a\xbd\ \xb0\x65\x54\x9f\xef\xd0\x3a\x3a\xd8\xa1\x55\xab\xb6\x57\xd6\xad\ \x6b\x4c\x1a\xa0\x41\x97\x2f\xf7\x25\xcf\xab\xac\xd5\xcb\x81\x03\ \x5c\x01\x5a\xdd\x70\xe6\xa3\x50\xc9\x6c\xca\xce\xd1\x48\x13\x8b\ \x02\xe7\xa4\x57\x2f\x08\x06\x77\x03\x6a\x43\xd9\x28\x48\x1c\xf6\ \x44\xce\xa5\x1f\xae\x05\x34\x33\x56\xb0\x8a\x45\x22\x46\x17\x8f\ \x95\xe1\x2d\xad\x66\xb2\x9c\x26\xd0\xdb\xd2\xb2\x1e\x56\x82\xb7\ \x64\xac\x48\x8a\x5e\x43\xd9\xff\x26\x42\x34\x92\x0d\x2b\x7b\xe8\ \xc0\x67\x2b\x83\xcf\xb5\x84\x8c\x87\xce\x6e\xb4\x62\xe1\x4b\xc1\ \xf1\xe1\xf1\xe3\xbf\xe1\x33\xdd\xa3\x15\x4d\x68\x00\xa9\x62\xd3\ \x92\xe2\xe3\x4d\x4f\x4e\x9f\x5e\x1d\xde\x5c\xea\x02\xfb\x0a\xbd\ \x12\x76\xc0\x99\xf4\x4a\x1a\xde\x3a\x91\x1e\x60\x30\x64\x7c\x6b\ \x00\x68\xaa\xd9\x9f\x5c\xa9\xc6\x96\x0e\x87\x4f\x54\x9b\x47\xf7\ \x94\x36\x05\xaf\x27\x15\xc8\x26\xcb\x33\xd0\xaf\x60\x71\xd2\xd0\ \xc4\x7b\x8a\xd7\xf0\x2c\xae\x35\x74\x40\x25\xad\x7f\xe8\xb5\x6b\ \x36\x70\xac\xdc\x26\xc7\x8a\x92\x47\xea\x3a\x62\xc4\x4e\x5a\xdd\ \xb4\x4a\xa1\x6a\x49\x39\x42\xa5\x35\x57\x1f\x74\x03\x7a\x4a\x7a\ \x2c\x81\x67\xce\xcc\x90\xe7\xda\xf4\x03\x83\x65\xfc\xb4\xb6\x93\ \xb7\xa4\x77\x32\xf6\xee\xfe\xfd\x5b\xdc\xa6\x4c\xd9\x43\xf7\x48\ \xb1\x7a\x2d\x73\x1a\xdd\xe4\x19\x28\xbb\x92\x7c\x1c\x15\x12\xb2\ \x64\x43\x8d\x1a\x8f\xa5\xa1\x26\xc1\xf0\xec\x68\xcb\x96\xc5\x86\ \x67\x08\x8e\xa7\x84\x67\xcb\x12\x25\x42\xd0\x70\xf2\x25\x44\x6c\ \xe7\x69\x87\x46\xb0\x42\x37\xd0\x68\xcd\x35\x0e\x8e\xa2\xf6\x64\ \x9c\x07\xfb\xf5\xbb\x80\xfb\x0c\x4d\x82\x66\x30\x54\x9b\xea\xd5\ \x5b\x84\xf3\x4f\x08\x5c\xe8\x76\xf4\x07\x8b\xad\xa5\xbd\xb2\xe2\ \xc1\x79\x72\x07\x4e\x96\x85\xda\xad\xb8\x7c\xb7\x6e\x2d\x8b\xb3\ \x53\x38\x55\x27\x6c\xa8\x59\xf3\xbe\x92\x14\xad\x23\x55\xf4\x3f\ \x23\x75\x6d\x2e\x55\xd2\x93\x27\x56\xa3\x9b\x4f\x79\x29\x45\x7f\ \x99\x1c\x26\x74\xce\xa3\x5a\x3d\x8c\xe7\x47\xee\xe9\xb1\xf8\xa8\ \x28\x53\x5a\x2d\xff\x8b\x89\xb9\xad\x44\xa6\x81\x21\xc3\x03\x8b\ \x65\xd6\x4a\x4e\xc5\x69\x42\xc6\x14\x11\x14\xb4\x4a\x91\x65\xd7\ \x5a\x15\xcd\xe9\x1d\x6a\xcd\x8c\xe7\xf3\x6e\x6c\xde\xec\x18\xe0\ \xec\x4c\xa1\x88\x1c\x18\x37\xcc\xea\x74\x2a\xaa\x18\x07\x9b\x69\ \xa4\x88\x6d\x92\x2b\xb1\x1b\x7d\x36\x3a\xcb\xd2\x36\x54\xe3\xfd\ \x51\x60\x13\xf1\x5f\x04\x26\x3c\x48\x5d\x0f\x25\xc4\x2c\x91\x99\ \xe0\x6e\x40\x7a\x52\xae\x41\x1d\x8f\x93\x7d\x01\xba\xa5\xa6\xb0\ \x45\x6d\xb7\x90\xc1\xf1\x04\xcf\xa7\x4b\x29\x85\xc6\xb2\x6c\x86\ \xaa\xb8\x15\xb9\x87\xc3\x60\x45\xa1\x03\x38\xfa\xfb\xef\x35\x90\ \x6f\x7a\x5b\x59\xb9\x91\xf6\xe5\x16\x19\x14\x44\xaa\xd0\x0c\x2a\ \x2d\x41\xae\x9f\x72\x3e\x98\x27\x32\x1b\x6c\x7c\xad\x43\xae\x5e\ \xb5\x95\x62\xad\x7a\xd2\xc8\xf2\xa6\xa6\xb0\x85\xe7\xd5\x85\x16\ \xd6\x55\xab\xb6\x40\xd9\x92\xca\x7e\x78\x4b\xc1\x6c\x3a\x10\x38\ \x9f\x78\xc5\xd6\x76\x0f\x3c\x92\xef\xff\xe9\xdf\x16\xad\xe2\xa4\ \x92\xf6\xaf\xe8\x06\x44\x5b\x14\xc8\xa9\x2d\x41\x90\xf6\x15\xf6\ \xda\xf1\x9c\x82\x93\x25\x01\xe6\xc6\x60\x41\x69\x6c\x0d\x29\x7e\ \x05\xba\x82\x23\xc9\x90\x90\x95\x7f\x4d\xe9\x7b\xae\x40\x31\x4c\ \xc4\xeb\x5e\xa3\x10\x36\x9c\x56\x48\x5a\x05\xa5\xe1\x1d\xd0\x91\ \xcf\xf5\x0b\xc9\x39\x50\x5c\xf2\x99\xbb\xfb\xd0\x7f\x60\x70\x13\ \xa5\xd1\xbe\x06\x7b\x89\x1f\x1d\x81\x81\x81\xfa\xc8\x62\x7f\x09\ \x46\xc5\xc7\xc7\x1b\x8a\x2c\x03\x83\x82\xc1\xeb\xab\x57\x77\x85\ \x21\x7d\x96\xc2\xb5\x5f\x42\x7c\x7c\x6c\xa4\xc2\x96\xf6\xbb\x2b\ \xc0\x14\x28\x49\x1f\xa0\x98\x5d\x42\x74\xf4\x4c\x1b\x23\xa3\x97\ \x34\x66\xa6\xaf\xdf\x56\x47\x56\xf0\xdc\x60\x57\xb0\x9b\xf8\x4e\ \xe0\xef\x72\x86\x6c\xd5\x15\x87\x52\x20\xf2\xf2\x66\x47\xb8\xa4\ \xaa\xf8\x51\x81\xe5\x7a\xb8\x74\x49\xbb\x6b\x1e\xda\xe5\x81\xbc\ \x3d\x29\x55\x89\x4c\x03\x83\x62\x55\x08\x26\x6f\x5a\x5b\xb1\xa2\ \x7a\xc5\x82\x27\x33\x1c\xf3\xd0\x5b\xcb\xd8\x2a\xd2\x16\x12\x95\ \xe6\x81\x78\x7f\x1a\xa8\x47\x84\x33\x65\xb6\xf4\x78\xee\x11\x3a\ \x86\x34\x0b\xe7\x6a\x97\x01\xa1\xbb\xed\xa7\xc8\x48\xb3\x55\x45\ \x8b\x5a\xca\x3a\x3d\x0a\xa9\x94\x14\x3f\x12\x60\x4c\x75\x31\x71\ \xaf\x90\xf5\xf0\x9e\xe4\xbf\xa9\x3f\x99\x54\xa7\x5a\xa7\x04\x34\ \x25\x1f\x64\xaa\xe1\xb1\xd1\x55\x43\x88\x60\xfa\x05\x0b\x8b\x83\ \xa8\x47\x7b\x07\xe7\xd6\x63\x2d\xcf\xa5\x7a\x15\x24\xc3\xd4\x14\ \xb2\x45\xc8\xe1\x17\xf5\x36\xb4\x55\x2b\x2f\xa1\x85\x99\x42\xe4\ \xca\x2a\xd5\x2d\x5a\x95\x40\x6f\x70\x56\x5a\x52\xba\x94\x32\xa0\ \x73\x73\xe7\x1e\xa6\x7a\x43\xf0\xe7\x33\xc6\xc6\xe5\x10\x4e\xf9\ \x28\x53\xe0\xae\xfc\x68\x5b\x98\x14\x8d\x0f\xd4\x42\x4e\xa6\x09\ \x8d\x61\xa2\x9f\x21\x13\xe2\xb0\x43\xf3\xe6\x3e\xd4\x43\x1a\x13\ \x1c\x83\x67\x43\xa8\x3c\x43\xfb\x2c\x41\xab\x24\xf7\x1e\xcb\x90\ \x1e\x02\x2d\x60\x78\x8b\xa0\x31\xb2\x8c\xb6\x95\x58\xe9\x3a\x53\ \x81\x27\x98\xe2\xd8\xb6\xad\x2f\xc6\x46\x08\x40\x3b\x93\xc5\xd3\ \xc4\x64\xb7\xbc\x2f\x0c\x5a\x91\x4c\x9e\x3c\xdf\xbd\x04\xcd\xb3\ \x22\x8f\x31\x3c\x28\xa8\x29\xbc\x97\x54\x25\xee\x87\xcf\xd1\x5d\ \xfc\x05\x94\x32\x20\x29\xd2\x94\x80\x1a\x3b\x63\xdc\x1b\x98\xe7\ \xc9\x33\x84\xc6\xd0\x5e\xf9\x26\x52\xc5\xac\x7e\xa4\xbe\x10\x02\ \xe9\x39\x3e\x54\x56\x0f\x35\x27\x12\x86\xc9\x2e\xcb\x2f\xc2\x20\ \x91\x16\x14\x17\x1e\x6e\x21\xf5\x2e\x66\x51\x79\x06\x2a\x95\x95\ \xda\x2d\x17\xad\x49\xee\xa3\x31\x99\x43\xd9\xf1\x92\xfe\x3d\x04\ \xc0\x06\x60\x0e\x72\xa4\x28\xf9\x97\x48\x0c\xbe\xfc\xe4\xcc\x99\ \x72\x1a\xbb\x95\xaa\x78\x16\x8c\x79\x8a\x46\x3d\xda\x54\x12\xa6\ \xc5\xbd\x5a\xde\x0e\x5b\x32\x7f\xa8\x2b\xbb\xc2\x6b\xf8\x50\xae\ \x0c\x1e\x52\xfc\x47\x95\xc9\xe5\x4c\x7d\x82\x2e\x5d\x9a\x8c\x6a\ \xf9\x03\x32\x4e\x57\xed\x4f\x16\x83\x33\x38\xc3\x52\xc7\x57\x17\ \x38\xf5\x94\xfe\x07\xcf\xc0\x97\xa4\x9e\x86\x2f\x21\xaa\x31\x1c\ \x0c\xe6\xfa\x91\x26\x73\x04\x6d\x4b\xa0\xb8\x3b\x9f\x0c\x8e\x26\ \x49\xc9\xed\x93\xf2\x68\x2a\xf9\x5e\xc9\x2d\x8d\x1a\xf9\xd1\xb3\ \xcb\x96\x96\xf6\x14\x03\xd2\xf4\x48\xa1\xc8\x72\xa7\xa2\x6d\x41\ \xfa\xf5\x22\xc3\xc0\x52\x0f\xa4\x13\x89\x06\x1c\x21\x72\xc5\x0a\ \xc6\x75\x31\xae\x33\xc1\x70\x72\xb2\x5c\xb1\xb1\xd9\x23\x7b\xa0\ \xef\x00\xbf\xee\xeb\xd1\xc3\x53\x4a\xde\xcd\x02\x17\xa1\xda\xfc\ \x38\x6d\x47\x65\xdb\x65\xcb\xac\x48\x82\x06\x47\x5d\x30\x33\x9b\ \x86\xa4\xe6\xcb\x30\x20\x5b\x18\x53\x41\x8d\xed\xf2\x7c\xdc\x87\ \x6a\x94\x01\x8d\xa7\xae\xaf\xe7\xe6\xcd\x3b\xac\xfc\x8d\x91\x11\ \x62\xbc\xcd\x8f\x3a\x89\xb5\xc1\x4e\xb2\x6e\x4b\x85\xf3\xdc\x6b\ \x7c\x03\xc5\x52\x1e\x9c\xd0\x00\x56\xc1\xf9\x94\x29\x4e\xab\x9e\ \xd0\xc2\x55\x5b\xdb\x7e\x08\x2b\x7c\xc6\x61\xfd\x09\x19\xaa\xc8\ \x48\xb0\xd1\xd5\xc4\x36\x73\x16\x4a\x79\x5c\xa1\x1e\xa6\xfe\xe6\ \x97\x5e\xbc\x77\x1e\xc6\xc6\x4e\xe4\x44\xb1\xaa\x50\xa1\x8a\xcc\ \x61\xa4\x9d\x8b\x31\xf8\xb3\xfc\xdd\x1c\x60\x2b\x6c\xed\x9e\xcb\ \x2c\x10\x0b\x5c\x0d\xc0\x1e\x54\x46\x94\xd9\x7f\x77\x30\xa4\x89\ \x3b\xdb\xb7\x5f\x4c\x7d\xc8\xc1\xb1\x52\x9a\xa2\x03\x0c\x4b\x1d\ \xbf\x43\x0e\x69\x60\x4c\x4c\x4c\x31\x0a\xf2\xdf\x77\x71\x19\x84\ \xb3\x6c\x22\xa5\xc6\xd1\xe7\x97\x89\xd2\x3f\x3e\x4e\x4e\x99\xb2\ \x8c\x14\x7a\xe9\xcc\x86\x89\x18\x06\xe6\x54\xfa\x46\x83\x26\x60\ \xf9\x54\x3c\x9d\xc7\x68\xf9\x0f\x3c\x75\x6a\x03\x9e\x57\x11\x19\ \x0a\x86\x34\x9c\xb6\xe0\x22\xca\xcb\x24\x91\x57\xd9\x9c\x64\x36\ \x48\x4d\xf8\xd5\x01\x71\x19\x30\x57\x14\xa0\x55\x42\x02\xca\xd1\ \x9e\xf4\xc7\x0c\xc3\x9d\x61\x9a\x2d\xdb\x60\x69\xb4\x8f\xc0\x6e\ \x59\xf1\x39\xa2\x42\x43\xa7\x38\xb4\x6c\x39\x4a\x59\xc5\x63\xde\ \xbe\x35\x3d\xd8\xbf\xff\x85\x8d\xb5\x6b\xdf\x80\xb7\xd6\x90\x02\ \xe7\xa0\x0b\x1d\x7f\x64\x56\x4e\xed\x7f\xd5\xb6\xe5\xa6\x83\x83\ \x03\x56\xba\x48\x45\x77\x50\xf9\x06\xd2\xce\x06\x27\x28\x2d\x7d\ \x77\x76\xe8\x40\xcb\xff\x30\x91\x99\x60\xc3\x33\x90\x3a\x93\xed\ \xe5\x35\x87\x00\xb0\xdb\x50\x17\xb9\x7e\x78\xfa\xf4\x77\xb9\x4d\ \x5b\x2f\xdb\x6b\xf5\x11\x40\x62\x6c\x6c\x5d\x59\x3a\x54\xd3\xd9\ \xd9\x59\x0f\x19\xff\xea\x2d\x9c\xe4\x29\x3a\x0f\x66\x45\xd9\x0f\ \x98\x5f\x23\xfd\x6d\x20\x68\x0a\x79\xc2\x89\x8a\xbe\x0a\xe2\x8c\ \xc1\x18\x1b\xfd\x6f\x9c\xc8\xaa\x28\xb7\x58\xe8\x63\x65\xb5\x67\ \x43\xf5\xea\x57\xb0\xcc\x5f\x74\x1e\x34\x68\xd4\x37\xdc\xbd\x01\ \xd8\x02\xc4\x84\x3f\x7f\xbe\x82\x8c\x55\x64\x39\x18\x76\x95\x2b\ \x8f\x97\x32\x0f\x27\x70\xcd\x86\x3e\xe6\xbd\x51\x6f\xa7\x7c\x81\ \x7a\xac\xab\x55\xab\x1a\xcd\xb1\x9c\xc3\x0e\x34\xee\xd0\xb4\xe9\ \x2d\x68\x93\x78\x63\x77\x93\x2c\xb5\x48\x6c\xc0\x82\x3a\xa0\x1b\ \xa3\x77\xdd\xde\x7e\x1b\x1c\x79\xea\x12\xa6\x7d\xdd\xbb\x77\xfe\ \xd7\xd6\x72\x81\xed\x64\xd2\xac\x29\x38\x41\xb6\x3d\x9a\xa6\x44\ \xfa\x31\x31\x7f\xd0\x64\x9d\x98\x3c\xf9\x24\x9e\x77\xd1\x32\xc6\ \x2a\xe0\x92\xcc\x6f\xe1\xc4\x88\x8c\x8c\x2c\x48\x32\x08\xd2\xc0\ \x36\x5f\xb6\xb1\xa9\x89\x04\x62\x73\x94\xf9\xc4\xc9\xe2\xd7\x3d\ \x02\x90\x5e\xe9\x7b\x38\xff\xc5\x7e\x78\xfc\x78\x15\x39\xd1\x48\ \x3c\x08\x67\xf1\x07\xca\xee\x86\x6a\xef\x74\xc1\xcf\x80\x32\xa0\ \x79\x4f\xcf\x9e\x5d\x4f\x0e\xa1\xff\x4c\x21\x25\x09\x7c\x52\x4c\ \x47\x29\x84\x04\xc3\x2d\x8b\x15\x7b\x85\xd5\x90\xbc\x9c\x06\x5a\ \x06\x37\x5a\x7a\xd2\xc2\x33\xbf\x84\x84\xf1\xfe\xf1\xe3\x21\x90\ \x66\x7f\x20\xe7\x20\x19\x46\x76\x47\x29\x97\x91\x4e\x07\x32\xb6\ \x29\x32\x9b\x25\x7e\x57\xa7\x4e\x5b\x70\x7f\xcb\x75\xe8\xd0\xbe\ \x57\xac\xad\xd7\xd2\x38\x7a\x10\x90\xb7\xba\xb4\x94\x3d\x6f\xa6\ \x03\x65\x40\xad\xc1\x32\xe2\xbf\x84\x80\x43\x87\xe6\xc3\x1b\xa9\ \x8e\xe7\x10\x31\x51\xbe\x71\x51\x51\x8d\x05\xa0\xa5\x69\x51\x0c\ \xe7\xc0\x68\x78\x3c\xa3\x1e\xba\xb9\xd5\x56\x14\xab\x44\xa6\x81\ \x9b\x4e\xc2\xb0\x46\x52\xb6\x0a\xbc\x92\x01\x58\xc5\xde\xa3\xee\ \x4e\xe9\xfd\x5d\x4f\x06\xc5\x3f\x20\xc1\xe1\x3d\x2a\xce\xdf\x2a\ \xf3\x79\xb0\x6f\xdf\xc1\x70\xa4\x2c\xc1\xbc\x45\x43\xc6\x6f\x35\ \xe9\x68\x6a\x24\x10\x3b\x83\xe5\x45\xa6\x82\x27\xb2\x2c\x38\x05\ \x5d\x57\xf6\x6a\xa8\xf4\xde\xd2\x3e\x68\x63\xcc\x98\x9e\x9d\x9d\ \x3d\x9b\x64\xc0\x3b\xe0\x7e\x88\x9c\xb4\xe3\x78\xb7\xb2\xc8\x2c\ \x70\x35\x42\x2b\x70\x2e\x68\xfa\xe5\xcb\x97\xa5\xd8\x96\x75\xa5\ \x6d\x26\xe6\xe3\x08\xcd\x07\xc5\xed\x5e\x5c\xbc\x68\x2d\x9b\x95\ \x04\x50\x43\x92\xa0\x6b\xd7\x4a\x42\x10\x96\x9a\x76\xf4\x54\xf2\ \x19\x29\x06\x46\x71\x3e\xca\xe1\x04\xcd\x33\x3f\xb3\x88\x27\xb2\ \x09\xbe\x2d\x17\x51\x0b\x5b\xea\x8f\x86\x6f\xca\x45\x42\x82\xb4\ \x07\x69\xeb\x09\xd5\xaa\x60\xec\xbd\xe7\x90\x77\x13\x8d\xdc\x0d\ \x10\xff\xb9\x2e\xcf\x10\x0e\x22\xb3\xc1\x6a\x62\x65\xc0\x1a\x88\ \xdd\x55\x86\xe1\xa8\xbf\x28\x29\xde\xfa\xdc\xd3\x73\xc9\x95\x6d\ \xdb\x0a\xc3\x69\xe2\x25\xd5\xc2\xca\x83\x2a\x59\x36\x94\x43\xa9\ \x38\xa7\xfa\xb6\x87\x47\x8f\x6e\xc2\x4a\x99\x40\xf7\x32\x38\x3d\ \x8c\x33\x8b\x32\xbf\xfc\xa2\x07\x32\x19\x96\xe2\x3a\x4d\xe3\xfc\ \x36\x0d\x4c\xf1\x5e\xb3\x66\x1f\x6d\x5f\xe4\x58\x36\xa4\x18\x3d\ \x83\xb7\xec\xd3\xeb\xdb\xb7\x4d\xc9\x08\xff\xa2\x97\xf6\x90\x8c\ \x29\xa6\x64\xbc\xb9\x7b\x77\xbe\x63\x9b\x36\x37\x68\xc5\x02\xa9\ \x70\x75\x59\x64\x70\xf0\x28\x64\xb1\x8c\xa7\x46\x8d\x9a\x3d\xbd\ \x57\x16\x2d\xda\x0a\x95\x24\x27\x68\x57\xb3\xbb\x63\xc7\x69\x4a\ \xe3\x49\x1c\x17\x94\xdd\xcd\xd5\xac\x11\x77\x65\xf5\xe1\x72\x42\ \x02\x67\x80\x59\x34\x19\x68\x60\xb1\x03\xe3\x2a\x4d\x27\xca\x91\ \x91\x23\xcf\xd2\x56\x45\x29\xbf\xc0\xd8\x54\x70\x19\xd8\x47\xc9\ \x76\xc0\x24\x2a\xe2\x3a\x7e\x19\xd2\x41\x94\xe7\xab\x28\x38\x92\ \x02\xe3\x24\x5b\xa7\x91\x0b\x7b\x93\x44\x68\x0f\xfe\xfa\x6b\x7d\ \x2d\x6f\xf5\xbc\x97\xfe\xfe\x95\xa9\x8f\x39\x56\xc5\x48\x74\xcc\ \x59\x16\xec\xe3\xb3\x9a\x12\x24\x50\x00\xfb\xf4\x43\x60\x60\x56\ \x36\x65\x64\xb8\x9b\x9a\x1a\x62\x3b\xf9\x9a\xb2\x4f\xe8\xcc\x26\ \x35\x37\xa2\xa8\xd4\x44\x1e\xda\xf3\x48\x09\x35\x75\x6c\x48\x21\ \x4d\x38\xe5\x73\x7a\x59\x58\x34\x91\x93\x19\x14\x7c\xf7\x6e\x21\ \x91\x51\x60\xc3\xab\x0e\x4e\xa7\x3e\x01\x50\x89\x0e\x53\x92\xa2\ \xbf\xa1\xaf\xb2\x40\xb3\x35\x17\xce\x74\x3b\x71\xaf\xee\x0d\x2e\ \x53\xc7\x18\x59\x29\xa1\x16\x7a\xe3\xc6\xac\x1d\x2d\x5b\xde\x80\ \xd1\xdc\xa6\x4e\x32\x34\x59\xc8\xf5\x73\x21\x85\x27\xe9\x66\x7e\ \x01\xa3\x8a\x87\x36\xa3\xd3\x8d\x2d\x5b\x1c\x0f\xfd\xf6\x9b\x3b\ \xa5\xee\x60\x8c\xae\xbb\xe9\x7d\x1a\x97\xad\x6f\x33\x16\x7c\xbe\ \x6b\x19\xfb\xe1\xc3\x12\xea\xf3\x16\xfd\xf2\xa5\x39\xee\x0b\x0b\ \x0d\xe0\x70\x4e\x9e\xca\x18\x9c\xc9\x5f\x50\x22\x31\x1d\x07\x70\ \x96\x73\x46\x89\x90\x3a\xb9\x18\xd4\x91\x73\x1c\x9f\xef\xc6\x91\ \x67\x0c\x1d\x58\x6e\xd2\xb7\x21\xca\x81\xae\xcb\x46\x0f\x2d\xc0\ \x14\xa7\x81\x03\xbd\x70\x3f\x07\xec\x0c\x0e\x73\x19\x3a\xf4\x1c\ \x8d\x4b\x8f\xd9\x5d\x0a\xb6\x67\xea\x64\x72\x19\x50\x5f\xb0\x83\ \x5c\xd1\x0a\x82\x1e\xd8\x75\x2c\xc4\x75\x2f\xf8\xf5\xf6\xee\xdd\ \xdb\xf0\xbc\xae\x7c\xbf\x21\xb8\x04\xe4\xe6\x8b\x3a\x98\xb1\xd2\ \x9a\xce\x0b\x61\x0f\x1f\xce\x25\x83\x53\xd2\x89\x8e\x8d\x1b\x47\ \x85\xaf\x79\x85\xc4\x89\x29\x53\x46\x4a\x2f\x66\x12\xb4\x3c\x48\ \xcd\xca\x48\x64\x09\x18\x54\x21\x8e\x80\xf8\x55\x65\xbb\x0f\x39\ \x07\xea\x11\x37\x56\x33\xf1\x58\x87\x8d\x8d\xb7\x98\x60\x5d\xb0\ \x23\xa8\xa2\x06\xed\xd8\x92\x24\x52\x03\x3f\x63\x21\x8c\x34\x62\ \x77\xa6\x34\xb9\x07\xfa\xf6\xbd\x28\xa5\xb0\x95\xec\x96\x31\xe0\ \xb8\xcc\xd5\x5e\x64\x60\xfb\x38\x98\xd4\x00\xa8\xa8\x55\x1d\x46\ \xc8\x9b\xf7\xdc\x3f\xf1\x1c\xd3\xf9\x3c\x8b\xba\xbd\x32\xe0\x6a\ \xde\xaf\x3e\xb3\xa9\x54\xe1\x94\xa1\xae\x28\xf5\xe2\xf0\x1e\x05\ \xc1\x18\x2a\x98\xa4\x2d\xcd\x0c\xa5\xcc\x5e\xf2\xab\x6c\x5a\x68\ \x20\x32\x0b\x5c\x06\xd4\x1e\x5e\x49\xb3\x03\x7d\xfa\x5c\xb4\x2a\ \x5b\xf6\xea\x29\x3b\x3b\x7d\xf1\x1d\x20\x43\x05\xdf\x4b\xe1\xe1\ \x4e\x22\xd3\xc1\x93\x59\x83\xb2\x1c\xec\xeb\xd6\xf5\x43\x6c\xee\ \xa5\x52\x82\xe1\x3e\x7f\xbe\x2b\xd5\x48\x51\xfe\x25\x8d\x91\x5e\ \xa6\xc7\xe2\xc5\xfb\x29\xf0\x8a\x73\xdd\x2d\x29\x1f\xe7\x2a\x32\ \x1b\xac\x16\xfd\x2b\x68\xfa\x4f\x6a\xd1\x10\x52\xb8\xab\x7c\x71\ \x66\x76\xed\x1d\xc0\x90\xdb\xcc\x79\xe4\x58\x51\x34\x15\x91\xe5\ \xfe\x44\xea\xe6\xaf\x93\x06\xf7\x19\x5b\x9a\x08\x97\xdf\x7e\x5b\ \x85\xac\x95\xc9\x70\xc0\xf8\xd3\x7b\xd8\x8e\x36\x14\x99\x0e\x6e\ \xc3\x25\xbe\x13\xca\xb9\x7d\x5b\xd3\xa6\xb7\x4f\x4c\x98\x70\xfc\ \xc1\xb1\x63\x1d\x65\x8b\xe6\x35\x99\x5f\x91\xc0\x13\x59\x04\x15\ \xcb\xc3\xd0\x7a\xf7\x04\x5a\x19\x39\x91\xdb\x19\x07\xf6\xed\x64\ \x70\x7e\x0e\x0e\x3b\xd6\x56\xaa\xa4\x68\xd5\x7b\x6f\x6b\xd6\x4c\ \x1d\x32\x80\x4c\xbb\x89\xc8\x74\x30\x4c\x84\xe8\x89\x79\xf8\x2d\ \x2d\x29\x5d\x4a\xdd\xa4\x46\x19\xd0\xb0\x4f\x1f\x3f\xb6\x35\xcf\ \x95\xeb\x8c\xa2\xaa\x9c\x35\xe2\xae\x5c\xbd\xdc\x05\x9c\x07\x96\ \xda\xda\xa8\xd1\x1f\x32\x8d\xe8\x34\x56\xb6\x29\xd8\x52\xee\x46\ \x3a\x51\x08\x8d\x11\xcf\x9b\x98\x58\x88\x4c\x07\x83\xb2\x83\x90\ \xc0\x40\x3d\xc8\x2f\x50\x87\xd6\xbf\x69\x70\x53\xe5\xae\x24\xee\ \x40\xbf\x7e\xb6\x8a\xe3\x05\x9d\x5f\xcf\xd2\x2e\x06\xbb\x9a\x87\ \x07\x7a\xf7\x6e\x29\xb2\x0e\x8c\xa8\xa8\xa8\x42\x1b\x6b\xd5\x7a\ \xac\xc8\xba\x39\xf5\xef\x3f\x07\x2d\x6f\x17\xa3\x3b\xcb\x71\x2a\ \x27\x81\x4c\xc0\x08\x91\x55\xe0\x2f\xc6\xa1\x7e\xdb\xb7\x4f\x41\ \xf8\x86\xb6\x84\x8e\x14\x18\xff\x13\x63\x2b\x4c\x35\x91\x90\x2c\ \x0f\x43\xb7\xa0\x70\x9a\x4f\x29\xdf\x37\x1e\xd7\x2f\xf8\x62\xbd\ \x2b\xcf\x86\xfd\x44\xd6\x82\x91\x10\x17\xd7\x17\x92\x7d\x97\xa0\ \xd6\x14\x27\x9d\x25\x61\x50\x15\xde\x01\x77\x35\x4d\x50\x23\x91\ \x95\x60\xc3\xab\x02\x8e\x77\x19\x32\x64\x2e\xe6\xe5\x26\xc9\xdb\ \x69\xca\x99\x53\x5e\x2c\xc6\x4c\x35\xcb\x80\x3e\x45\x47\x9b\x41\ \x5c\xf8\x1c\xaa\x4b\xe2\x69\x4c\xa3\x59\xe3\x4f\xa0\x8e\x84\x0b\ \x38\xed\xa8\x0f\x89\xd2\x42\x4d\xd8\x09\x89\xb6\xfe\xd6\x86\x86\ \x3b\x31\x56\x42\x67\x64\xd2\x58\x1d\xba\xe9\xa7\xa8\xa8\xc9\x28\ \x4a\x5e\x4d\xb9\xb0\x8a\x50\x11\xae\x45\xb1\x33\x51\xcb\xdd\x41\ \xb8\xf5\x63\xd8\xe3\xc7\x73\x65\xef\xf3\x5e\x6e\x53\xa7\x1e\xd7\ \x6a\xd6\xa8\x63\xe0\x89\x2d\x0d\x76\x55\x0a\x29\x53\xe9\x26\xc3\ \xc8\xfa\x9e\x70\x3d\xb1\x5a\x4d\xc6\x39\x9b\x9a\x6c\x34\x11\x40\ \x88\xaf\xef\x14\x4a\xeb\xa3\x78\xab\x5d\x95\x2a\x56\x18\xcf\x0f\ \x16\xc6\xca\x16\x4a\xaa\x70\xc8\xdf\x34\x95\x9e\x4f\x5d\x05\x17\ \xbe\xea\xf4\x04\xf1\xfc\x94\x02\x47\x82\xcd\x15\xef\x33\xf8\xfb\ \x2b\x3f\x3f\x6b\x1c\x03\x46\x63\x05\x7c\x08\xaa\x8f\x07\xd4\x37\ \x0e\xcf\xfe\x6d\x2a\xdd\x0c\x92\x02\xa0\x8c\x15\x4c\xf4\xef\xb8\ \xf6\x21\x29\x76\xea\x1a\x84\x31\x43\x4a\x35\xe2\x8a\xe5\x8c\x91\ \xb7\xd3\x4e\x72\x00\x6b\x22\x94\x33\x1a\xdb\x4b\x75\x19\x10\x14\ \x00\x2e\xfd\x4b\xcf\x6d\x0c\xc4\x7f\xb6\xd2\x24\x7f\x83\xb1\x94\ \xaf\x29\x32\x03\x6c\x88\x95\x69\x1b\x49\x8e\x93\xd3\x33\x66\x58\ \xfd\x4b\x2b\x41\x18\xd8\xd2\x74\xa2\x0e\xaf\xd4\x01\x08\x7d\x10\ \xec\xd1\x48\x62\x13\x0e\xee\x5b\x0e\x0d\x1e\xbc\x0d\x9a\x2c\x56\ \x51\xc1\xc1\x15\x05\x20\xeb\xf4\xea\x53\x70\x17\x46\x58\x49\x64\ \x08\x38\x5b\x05\xec\x07\xce\x00\x73\x89\xff\x10\x54\xff\xa5\xb3\ \xdf\x85\xa5\x4b\x6d\x60\x68\xd3\x2b\x74\xe8\xb0\x7f\xa4\xbb\xbb\ \x0b\x86\xf5\xc1\x9c\x60\x76\xd0\x7b\x89\x4a\x55\x06\xd1\x58\x3b\ \xdc\x6b\xe6\x0a\x5e\x04\x07\x98\x09\xf1\x41\xa4\x0d\x0c\x06\xeb\ \xae\x20\x2d\xcc\xdf\x4c\x4f\x2f\x51\x5b\x1f\x13\x2b\x5a\x53\x92\ \x7f\x23\x49\x88\x3d\x5d\xba\xb8\x5c\x5a\xb1\xc2\x01\x9a\xf6\xe7\ \x65\xec\xef\xde\x77\x74\x0e\x65\x30\x18\xc1\x97\x2f\xf7\xa4\x6d\ \x25\xb2\xd6\xbd\x35\x57\x78\x18\xdb\x63\x64\x4d\xc4\x40\xc3\x9e\ \x62\x7c\xf3\x65\x66\xfc\xa8\x6d\x4d\x9a\xa8\x73\x38\x91\x21\xf1\ \x9b\x48\x3b\x18\x0c\x0e\x2b\xa0\xfc\x47\xad\x08\x86\x92\xa0\x2e\ \xb2\xc0\xb5\x92\x54\x18\x3b\x49\x52\x70\x9a\x7a\x1e\xc1\xbe\xbe\ \xbd\x65\x9f\x32\x17\x8d\x96\xbe\x07\xd3\x70\xbe\x63\x30\x38\x88\ \xee\x6d\x65\xb5\xfb\xdd\xc3\x87\x9d\xa5\x11\x8d\x07\x53\x1e\x1c\ \x3e\xbc\x46\xbb\x3f\x02\xda\xf4\xe6\xa3\x67\xdb\x5b\xb6\xf4\x16\ \x00\xb6\x97\x76\x74\x0f\x26\x80\x4b\xff\x5e\xf5\x33\x83\xc1\x46\ \xd7\x04\x6c\x2c\x00\x53\x3d\xbd\x6e\x64\x44\xf0\x5a\x9a\xa4\x92\ \x78\x3b\x40\x4a\xc3\x39\x09\x00\xdb\x51\x1f\xe4\x01\x26\xa1\x1d\ \xd4\x63\x64\x4b\xc4\xa4\xb1\x33\x10\x83\xc1\xf0\xda\xb0\x21\x2f\ \x95\x8d\x58\xe4\xc9\xf3\x8a\x82\xe4\x5a\x05\x93\x11\xa8\xd9\x8a\ \x89\x0c\x09\x99\x8d\xfb\x6a\xe0\x57\x2a\x80\x85\xb1\x2e\x46\x22\ \xae\x39\xae\xa4\xad\x69\x8d\xf1\x2b\x7f\xd1\x5d\x86\xc1\x60\x90\ \xf7\x91\x3c\x94\xd0\xdb\x57\xf7\xbc\x86\x07\xf3\x2a\x0c\x88\x8c\ \x6b\x9d\x6c\xf1\x14\x45\x7a\xfa\xd4\xc0\x9d\xc6\xc0\x94\x7b\x07\ \x0e\x6c\x46\x1b\xdc\x89\x10\xd4\xb9\x67\x63\x68\xd8\x6e\x55\xb1\ \x62\x23\xb1\xda\xc5\x4a\xbd\x95\x6d\xbc\xcd\x64\x30\xbe\x5d\xab\ \xb5\x0a\x4c\x21\x42\x33\xf3\xbe\x75\xd9\xb2\xf7\xd5\xdd\x3f\x55\ \xaa\xd7\x48\xb6\x75\x97\x3d\xb2\xc7\x20\xab\xbd\x30\xc6\x62\xd0\ \x1b\x3b\x74\x4f\xb7\x6e\x07\x15\xfd\x15\x6c\x31\xed\xa2\xde\xbd\ \xab\xb4\xae\x4a\x95\x67\x10\xb0\xfd\x8c\x3a\x3d\x6f\x34\x2c\x49\ \x4d\x64\x87\xc1\x60\x6c\xaa\x5d\xbb\xc1\xa6\x3a\x75\x7c\x50\x6f\ \x47\x46\xf6\x15\x86\xe5\x0e\xc5\xb0\xe5\xa4\xb1\x22\xab\x12\x46\ \x82\xfa\x30\xc2\x49\x52\x51\x2c\x86\xae\x48\x15\xfb\x48\x57\x8f\ \x45\x8b\xf6\xe1\x99\x19\x8d\x1d\x19\x35\xea\xac\xfc\x9d\x3a\x1a\ \x06\xdd\x49\x3a\x57\x72\x0b\x35\x18\x0c\x16\xa9\xfd\x23\x3a\x34\ \x74\xc5\x8e\xd6\xad\xaf\xc8\xda\xad\x9b\x90\xf4\x3e\x74\xc9\xce\ \x4e\xe9\x57\xae\xa2\xb6\xbc\x1a\x8a\xd0\x97\xa9\x09\x25\xdd\x43\ \xea\x6f\x37\x55\x2d\x43\x2a\xe0\x36\xb2\xe1\x17\x6a\x77\xe7\x54\ \x8a\x2f\x4d\x84\xe8\x2b\x14\x30\x18\x82\x0d\xcf\x90\x44\x4f\x49\ \x5b\x1f\x5d\x42\x9f\x41\xc0\xe8\xce\xd6\xc6\x8d\xcb\xca\x55\xaa\ \x89\x62\x6c\xa4\xcd\x48\xd5\xe6\x38\xf3\xdd\xa5\x56\x4f\x58\xe9\ \xa8\xc3\xeb\x5b\xd9\xbc\xb0\xa6\x7c\x7f\x18\x0c\xcd\x1d\x46\xf6\ \x4b\xd8\xa3\x47\xd5\x3c\x16\x2e\x74\x49\x5d\x3e\x80\xc1\x60\xc3\ \x6b\x0f\x9a\x4a\x2a\xb5\x5a\xaa\xe3\x13\x26\x6c\x72\x9b\x36\xed\ \x38\xc6\x8c\xa1\x2e\x56\x13\xe7\xb5\x58\xe9\x64\x49\xbe\x77\xf0\ \xe0\x16\x8c\x77\xd5\xa8\x4c\xe8\x85\xe7\x71\x74\xce\x33\xcb\x99\ \x73\xdf\x9b\x7b\xf7\x06\xe1\x79\x75\x91\x3a\x18\x0c\xae\xe5\x02\ \x0d\xc1\x6c\x1a\x63\x6d\xc0\xd9\xa0\x11\x0c\xa9\x86\xb2\xe2\x1d\ \x9f\x38\xd1\x0d\x63\xe3\x40\x3d\xcd\xde\x6b\x81\x6e\x6e\xeb\xe8\ \x4c\x88\xed\xe9\x73\x2f\x53\xd3\xb4\xaa\x44\x33\x18\x0c\x8d\xc6\ \x92\x45\x71\x66\xbb\xba\xa5\x41\x83\x7b\x32\xef\xb2\xa0\xd0\x02\ \x72\x2f\xb7\x93\x41\x5e\x5d\xbb\x76\x37\x9e\xd7\x17\xff\x08\x0c\ \x06\x1b\xdf\x88\x2f\xc9\xc9\xe4\xc9\xac\x2a\xab\x0d\xfa\x82\x5d\ \x05\x20\x57\xc0\xa4\x0d\x35\x6b\xde\xc7\xf3\xc9\xe0\x5f\xc6\xe5\ \xa4\x63\x86\x3a\x07\xd5\x12\xa9\x82\xc1\xe0\x6e\x40\x86\x1a\xee\ \x7f\x5f\x30\x45\x36\x25\xb9\x88\x33\x5c\xf2\x33\x4f\xcf\x75\x78\ \xa7\x52\x2a\xb1\xbf\xfa\xe0\x62\xbc\x67\xbc\x58\x88\x9a\x8a\x0c\ \x04\xee\xc3\x30\xfe\x19\x5c\x25\xfe\x1c\x0c\x06\x57\x94\x23\x20\ \xee\x4d\x86\x46\x86\x67\x55\xa6\x4c\xe8\xfb\xfb\xf7\x47\x0b\x2d\ \xc0\xa8\x96\x2b\x41\x73\x85\x18\x5b\x28\x80\x9d\xed\xda\xed\xa6\ \x7b\x78\x47\xd7\xfe\xf5\xaa\xc8\x60\xb0\x4c\xdc\x10\x5a\xd5\x14\ \xb5\x68\x18\x5f\x38\xae\x03\xb4\x9b\x59\xa0\x05\xf3\xb3\x5b\x8e\ \x8e\xdb\x2e\xae\x58\x71\x00\x5a\x8e\x0f\x65\x4a\xd8\x74\xbc\x1f\ \x81\x70\x43\x58\x42\x6c\xec\x22\xea\x1e\x2b\xfe\x12\x0c\x06\x1b\ \x5e\x25\x90\xfa\x20\xec\x81\x61\xbd\x46\x42\xf4\x25\x0d\x83\xdb\ \x01\xa6\x84\x5e\xbb\x66\x43\x67\x40\xb0\xd7\xc7\xb7\x6f\x67\x60\ \x35\x7c\x4d\xe3\x44\x9f\x35\x6b\xf6\x62\xbc\x89\x48\x13\x18\x0c\ \xd6\xce\xfc\x05\x0d\x48\x16\x24\x27\x26\x92\x63\xa5\xa8\x00\x10\ \x4c\x3f\x44\xab\x59\x78\x50\xd0\x10\xc5\xe3\x89\xab\xde\x96\x86\ \x0d\x3d\xc9\xd8\xd6\x57\xaf\xfe\x08\xf7\x53\xbf\x6f\x3b\xc9\x60\ \xb0\xe1\xe5\x06\xab\x83\x2a\x99\xb7\xa9\xce\xb9\x5c\x53\xaa\xd4\ \x69\x45\xde\x81\xfa\xa2\x21\x8f\xf3\x3e\x25\x3e\x3f\x75\x77\x5f\ \x4f\x32\x72\xb2\xb5\xd3\x60\x70\x19\x38\x99\xda\x33\x8b\xb4\x81\ \xc1\x60\xbc\xf4\xf5\x2d\x8b\xb6\x4c\xc1\x72\xfb\x18\x80\x73\xdb\ \x3e\xf0\x19\xdd\x43\xb8\xe8\x0a\x8c\xed\x37\x12\xa6\xc5\xd8\x0d\ \x2d\xa7\xca\x3b\x5c\xcb\x8b\xb4\x81\xc1\x60\xc4\x47\x44\x8c\x40\ \xb7\x19\x0f\x24\x47\xdf\xa1\x8a\x71\x32\x28\x14\xb8\xc6\x22\x17\ \x73\x39\xc9\x82\xe3\x7e\x2b\x8d\x6d\xfb\xe5\x97\x0b\x0f\x8f\x1f\ \xdf\x44\x72\xe0\x48\x15\x8b\xc7\xbb\x8f\x30\xbe\xc4\x58\x08\x23\ \xf1\xef\x03\x83\xb6\x35\x22\xa3\xc0\x4d\xea\xfb\x83\x26\xb7\xf7\ \xee\xdd\x06\x63\x52\x97\x05\x1d\xe8\xdb\xd7\x8a\xb6\x92\x48\x88\ \x8e\x46\x4d\x5e\x30\x3d\x07\x7b\x80\x7d\xdc\x17\x2c\xd8\xa7\xb1\ \xe2\xc5\x9b\x08\xf1\x2f\xeb\x36\xc3\xc6\x96\x8d\xb6\x3a\xa0\x17\ \x69\xf0\x8b\x8c\x02\x1b\x9e\xd1\x6b\x7f\xff\x55\xbb\x3b\x77\xbe\ \x7a\x76\xde\xbc\x31\x54\x29\x4e\x15\x08\x1b\xeb\xd4\x21\xe7\x49\ \x35\x21\xb1\xbb\x63\xc7\x81\x64\x6c\xf0\x78\xc6\x22\xa5\xec\x3e\ \xb4\x35\x67\x8a\x7f\x17\x18\xf0\xa8\xf9\x4b\x11\xd4\x67\x22\x23\ \xc1\x86\x57\x06\x1c\x4d\x14\x80\x65\x89\x12\xf7\xc9\xe8\x56\x97\ \x28\xd1\x43\xee\x34\x72\x2a\xe1\x04\xa5\x5a\x01\x9c\x2b\x33\x53\ \x86\x60\x7c\x22\x56\xbc\xe6\x3f\xb6\x8a\x36\xaf\x70\x0d\xa9\xa8\ \x92\x26\x19\x9a\x1d\xc1\xd2\xad\x9d\x09\x60\x78\x2d\x5d\x3a\x09\ \xe1\x83\x78\x18\x1d\x65\xac\x3c\x00\x03\xc1\x14\xab\x52\xa5\x5e\ \x25\x25\x24\xcc\xa3\x00\x3b\x1c\x2f\xad\x30\xf6\x41\xcb\xb1\x72\ \xcb\x58\x88\x0a\x42\xa7\xc1\x48\x2d\xde\xa3\x4a\x11\xc2\x4e\x4f\ \x4f\x2f\x49\x00\x06\x85\x0a\xc5\xd3\x7b\xd2\x10\xf3\x92\x42\x95\ \x4c\xd2\xcd\x00\xf0\xb9\xb9\x8d\xa9\xe9\xde\x41\x47\x8f\xda\x57\ \xe9\xd9\xd3\x3b\x4f\xc9\x92\x31\x2a\x95\xca\x48\x00\x6d\xcc\xcc\ \xce\xe6\xd0\xd7\xf7\x98\xa6\x52\x7d\x8e\x7a\xf1\xc2\x05\x43\x45\ \x2a\x75\xea\xe4\xd1\x77\xef\x5e\x87\xea\xfd\xfa\x9d\xcf\x96\x2d\ \x5b\xed\x1c\x2a\x15\x55\xac\xff\x48\xbd\xf3\xd8\xe0\x30\x61\x43\ \x54\x42\x34\xab\xd4\xa5\x8b\x9f\x00\x72\x15\x2a\x14\x8b\x4b\x1c\ \x8c\xac\x11\xae\xfe\x78\x36\x0b\xbf\x44\x09\xba\x76\x22\x3d\xc1\ \xc6\x46\xbb\x88\xb7\x58\xd9\xf6\x04\xec\xdb\xe7\x32\xe4\xd8\xb1\ \x03\xed\x96\x2d\xbb\x8f\xb1\xec\xa5\x20\x6e\xd4\x60\xdc\xb8\x6b\ \x78\x7e\xab\xb0\x10\xed\x71\x2d\x96\x2d\x7b\xf6\xcf\x41\x9e\x9e\ \xad\x6f\xac\x5f\x9f\xa7\x8b\x9d\x9d\x73\x2b\x63\x63\x57\xac\x7e\ \x25\xf1\x05\x39\x27\x95\xfc\xcd\xb9\x98\xd7\xa3\x42\xb7\xc0\x90\ \xe7\x82\x97\x10\xca\x09\x7b\x74\xec\x98\x5a\x61\x78\x7f\xef\xde\ \x94\xf9\x6e\x4c\xe5\x26\x74\x4f\xb4\x2c\x5e\xfc\xdd\xb6\xa6\x4d\ \x1d\xd2\xb7\xb7\x17\x3b\xaa\xd6\x56\xa8\xe0\x68\x8a\x15\x8c\xe4\ \xf9\x70\x7f\x1b\xd7\xc4\x95\x05\x0a\xbc\x96\x4d\xe7\x8d\xe4\x7b\ \x7d\xc0\x94\xe3\xe3\xc7\xbb\x41\x57\xe5\x3c\x0c\x34\x91\xe6\x0c\ \xd9\x2a\x0b\xe9\xec\x87\xdc\xcc\xcb\x02\xa0\x78\x1e\x85\x11\x4c\ \x84\xe8\x4d\xff\x9d\x35\x25\x4a\x5c\xd1\xa1\xe6\x87\x0c\xda\x26\ \x62\x82\x36\x83\x29\x9e\xa6\xa6\xce\xe7\xe6\xce\x9d\x28\xd5\xa9\ \x12\xe8\xba\xb2\x60\xc1\x27\x2b\xf2\xe5\x8b\x86\x4e\x63\x52\x88\ \x8f\x8f\x2d\x26\x6f\x09\x58\x50\xa4\x27\xd8\x81\xd2\xf1\xb1\x9b\ \xdb\x46\xc4\xe0\xae\x43\x7e\x2f\x18\x72\x7b\x1e\xd1\xaf\x5f\xaf\ \xd0\xd4\x43\x59\x24\x44\x29\x52\x18\xc3\x97\x5e\x10\x2a\x14\xc6\ \x05\x79\x79\xd9\x41\xa2\xef\x16\xcd\x91\x0c\xa0\x7b\x0b\x00\xde\ \xe5\xca\x30\xb4\x8f\xca\xb8\xbf\xa3\xe3\x76\xcc\x57\x59\xa1\x13\ \x60\xa8\x30\x29\x6f\xa5\xeb\x39\x06\xcd\x09\xe7\x43\x89\xb8\xaf\ \x9c\xac\xaf\xdb\x5b\xb5\x3a\x8f\x58\x90\x2b\xdd\x23\x5e\x74\x31\ \x3e\x3c\x7c\x08\x26\x9d\xca\x4c\xa6\xa6\x7b\xbc\x8e\x8d\xae\x0a\ \x38\x05\x34\x95\xec\xa4\x9d\x5b\xe9\xf2\xdb\x6f\xea\x9c\x4c\xac\ \x86\xcf\x37\x54\xaf\xbe\x38\xec\xe1\xc3\xb9\x57\xed\xec\x76\xad\ \x2e\x5e\xfc\xcd\x7d\x17\x97\x8d\x8a\xdc\xc3\xf1\x71\xe3\xf6\xd0\ \x9c\xc9\xc6\x25\x1f\x75\x68\xbe\x18\xd7\xb7\x6c\x19\x8e\xc9\x53\ \x97\x95\x60\x1b\xe3\x8d\xab\x01\x34\x1a\xdd\xbc\xd7\xac\xd9\xf7\ \x29\x32\xd2\x0c\x9e\xb3\xd7\x50\xa7\x8a\x80\x66\xa3\xd9\xd3\xb3\ \x67\x8b\x63\xb2\x43\xa4\x77\xec\x66\x86\x1c\xd4\xd9\xf0\x8a\x81\ \x45\xbe\xf1\xac\x86\xe7\x92\x25\xce\xe8\xe8\x1a\xa6\x34\x16\x81\ \x00\xed\xb9\x98\xb7\x6f\x17\x53\x89\x90\x00\xc6\x0b\x91\x03\xbb\ \x91\x40\xcc\x59\xec\x45\x0b\x8b\x03\x96\xc5\x8a\xbd\x92\xef\xfa\ \x49\x39\xf7\x2c\x06\x4f\x70\x49\x70\xea\xb5\xf5\xeb\x77\xa1\x47\ \x9a\x39\xee\xf5\x1f\x9d\x3c\x39\xc6\x6f\xdb\x36\xeb\x35\xa5\x4b\ \xaf\xa6\xc9\xa2\x55\x0e\xe3\x6d\x05\x00\x37\xf5\xfd\x65\xfa\xfa\ \x09\x08\x1b\xdc\x71\x1d\x3a\xb4\x94\xf8\x06\x32\xac\x91\x21\xcf\ \x57\x03\xc8\xf5\x99\xf8\x6f\xdf\xbe\x7d\x4b\xa3\x46\x97\xa0\xa1\ \xe2\x7b\x76\xf6\xec\x0a\x8a\x91\x52\x7d\x1d\xcd\xd9\xc9\xa9\x53\ \x4f\x60\x6c\x24\x42\x0a\x0b\xa8\x1d\x17\xce\x78\xde\xa7\x16\x2e\ \x2c\xa6\x79\x76\xcc\xda\x86\x24\x5c\x56\xd2\x04\x1c\x0a\xe6\xc6\ \x64\xec\x97\x5b\x92\x24\xd4\x6c\x05\x61\x82\x49\xb5\x2a\x87\x00\ \xb0\xda\x3d\x40\x3e\xe0\x1b\xb9\xed\x69\x29\x83\xb0\x6f\x71\x25\ \xe3\xcc\x2b\x27\xd3\x8a\x0e\xf4\xe0\xd0\x0c\x0b\xcc\x72\xaf\xec\ \x16\xe0\x64\x39\x0f\xcd\x95\xd5\x8d\xe4\x1a\x68\x55\x83\xa1\x91\ \xc8\x91\x01\x98\x0b\xec\x0a\x9a\x80\x0d\x35\x0c\x6e\x34\x18\xa5\ \x03\x39\x9a\x8c\xeb\x0e\x0e\xb5\x1c\x9a\x37\xf7\x25\xef\x17\xa5\ \x15\x85\xdc\xb8\xd1\x58\x48\x20\xe1\x36\x18\x0d\x2d\x5e\xc8\x82\ \x4b\x95\x99\x81\x41\x6b\x0d\xe9\x80\x33\x02\xc0\xef\xac\xa4\x7b\ \x49\xcf\x0c\x95\xfb\x66\xe3\x2b\xa8\xe9\x58\x51\x7a\x25\x24\x25\ \x25\x35\x14\x1a\xd0\xee\x7f\x07\xc7\x4c\x31\x1c\x17\xa2\x70\x66\ \xf7\xd2\x8d\x2f\x45\xae\xe7\x1a\xf9\xc0\xd5\xd5\x1e\x5d\x43\x5d\ \xe9\x5c\xa1\x21\x76\x1a\x06\x55\xaa\xc0\x9b\xfb\xf7\x97\xc6\xe4\ \x5a\x90\xeb\x99\xbc\x67\xe4\x54\xf1\x32\x33\xb3\xc2\xbb\x39\x21\ \x82\x1a\x80\x95\x30\xce\x79\xf0\x60\x0f\x6c\x41\xef\xec\xef\xd9\ \xb3\xc4\x1f\x42\xe8\x67\xf8\x16\x86\xa1\x82\x2e\xca\x39\x32\x3a\ \x9c\xb5\xcf\x90\x1a\xd8\xb7\x6a\xea\x28\xb4\x83\x94\x31\xb5\xa4\ \xdf\xd2\x1c\x39\xc6\x08\x9d\x00\x1b\x5e\x0d\x70\x0c\x68\x24\x24\ \xa0\x38\x1c\x47\xf1\x38\xc4\xe8\x82\x68\xb2\x90\x03\x78\x1d\xe1\ \x02\x6b\xbc\xb3\x80\xde\xb5\x32\x34\x6c\x4f\xe3\xfb\xba\x77\xf7\ \x26\xaf\xdb\x87\x27\x4f\x56\xe3\xda\x14\x63\xce\x60\x0c\xb8\x80\ \x8c\x4f\x64\x08\x18\xc9\xc9\xc9\x6d\xf6\xf7\xea\x75\x09\xde\x64\ \x25\x34\x40\xba\x29\x26\xdf\x98\xdf\xb2\x68\xa9\x1c\x08\x27\x0b\ \xcd\x4b\x69\xa1\x13\xe0\xb0\x41\x0d\x8d\x7d\x7f\x41\x2a\x29\xa1\ \x89\xc4\x24\x45\x9c\x99\x39\x73\xb7\x3c\x43\xfc\x0a\xe6\x93\xef\ \xec\xa7\x77\x9e\x7b\x7a\xda\x60\x35\xdc\x80\x9f\xe3\x61\x9c\xe3\ \x0e\xf4\xee\xdd\x72\x75\x91\x22\x4a\x11\xe6\x5d\x30\xe3\x54\x89\ \x79\x87\xd2\x2d\x31\x2e\x6e\x19\x39\xc2\x0e\xf6\xeb\x77\xf8\xea\ \xba\x75\xc3\x34\xe6\xb0\x22\x58\x0d\x2c\x4b\x55\xe7\x28\x15\x1a\ \x43\x3b\x14\x6c\x2d\x4f\x8b\xac\x05\x43\x3a\x44\x52\x70\x3d\x0d\ \x8e\xc3\xcf\xaf\xc1\xaf\x0e\x4d\x9b\xde\x92\x2b\xd7\x2c\xb0\x9a\ \xc6\x64\x96\xa4\x2d\x26\xce\x07\x41\xb6\x15\x2a\x5c\x55\xce\x71\ \x76\x95\x2a\xd9\xfb\x6c\xd8\x60\x04\x71\x9d\x77\x38\x03\xc6\x63\ \xf5\x3b\xf8\xcc\xcf\xaf\x80\x90\xc8\x98\x33\x04\xf7\x33\x07\xdb\ \x81\x13\xc1\x81\x32\xc9\xa1\x39\xcd\x87\x16\x29\xae\xf7\x55\xaa\ \x8d\x0d\x11\x59\x07\x86\x69\x8d\x1a\x39\x77\xb4\x6c\x79\x42\xd1\ \x5c\x24\x27\xca\x85\x65\xcb\x76\xca\x6c\x93\xee\xa0\xbe\x96\x81\ \x9a\xc8\xd5\x4f\xfd\x3e\xa4\xdf\x42\xe9\x7a\xd1\xdc\x7c\x17\x9e\ \x39\xd1\xe4\x52\x7c\x0f\xbf\x37\x4f\xcb\x50\xc7\x82\x9e\x8b\x85\ \xc8\xe0\xc6\x17\x9c\x46\x06\x89\xbe\x39\x88\xe5\xad\x3f\x39\x69\ \xd2\x96\x83\x03\x06\xec\x74\x6c\xd7\x6e\xbf\x63\x9b\x36\xe7\x90\ \xe4\x70\x13\xce\xb0\x23\x59\x1c\x20\x67\x50\x95\xb2\x5a\x73\xb1\ \x66\xcd\x87\x64\x3c\x10\x3d\x3d\xa5\x28\x0f\x6b\x42\x56\x2d\xbf\ \x52\x0c\xf3\xd8\xd8\xb1\xce\x10\x38\xf5\xa5\x7b\xf4\x5f\x3b\x29\ \xd3\x8f\x3c\xf1\xbb\xd3\x41\x03\xf9\x3b\xca\xd5\x8a\x7e\xc7\xd6\ \xc8\xa8\x8d\xc8\x50\x30\x64\xf8\xa7\x0f\x38\x04\xfc\x1d\x9c\x04\ \xce\x04\x17\x82\xc6\xba\x53\x92\xc5\x9a\x8b\x93\xa9\x3d\x53\xec\ \xfb\xf7\xa3\xbf\xf1\xed\x59\x8f\x12\x6a\x29\xe7\x92\x32\x1c\xa8\ \xd9\x05\xf2\x02\xef\xd2\x76\x85\x56\x48\xeb\x32\x65\x1e\x27\xc5\ \xc7\xd3\xca\x58\x5a\xae\x86\x0b\x29\x0e\x04\xce\x89\x78\xf6\xac\ \xce\x0b\x6f\x6f\x52\x1d\x1e\x26\xb2\x1a\x1c\x8f\xd5\xa1\x15\x8e\ \x27\xa3\x11\xd8\x4c\x7c\x03\x4f\xce\x9c\x31\xbe\xbb\x6f\xdf\x56\ \xfa\xc6\x0c\xbe\x79\xb3\x34\x8c\x2d\x41\x8a\xe5\xc4\xbc\xf2\xf7\ \xb7\xa6\xdf\x17\x12\x6b\xab\x55\xab\x85\x33\xdd\x53\x7a\x0e\x06\ \xde\x39\x78\xb0\x95\x34\xc6\xbf\x09\x06\x83\x8d\xb2\x82\xf4\x58\ \xe6\xc7\x79\xec\x67\x19\x0f\xfa\x0a\x2f\x19\x79\x33\x07\x68\xf7\ \x62\x0b\x3c\x73\x66\x05\x6d\x25\xad\x0d\x0d\x03\xbe\x77\x2b\xc3\ \x60\x30\x64\x2e\xe5\xa1\xc1\x83\x77\x51\x2b\x5f\xa9\x2a\x9c\x53\ \x68\x01\x5b\xcd\xa3\xe0\x97\xc7\x27\x4e\x6c\x94\xed\x9f\xfe\x01\ \x18\x0c\x5e\xf1\x3a\xc8\x80\x78\x09\x79\x6e\x33\xc7\xaa\xb7\x02\ \xcc\x6f\x22\x84\x3a\x40\x4e\x8e\x15\x3c\x1f\xfe\x77\xa5\x08\xc0\ \xcd\xf8\xef\x4c\x4a\x25\x39\x9a\xc1\x60\x68\x86\x0e\xe0\x50\xd9\ \x21\xe3\x7a\x6f\x70\x7d\x8e\xc0\xf8\x47\xc4\xf3\xa8\x29\x7d\x71\ \x2d\xc3\x32\xc0\x3b\x53\xc0\xd3\x44\xdc\x4f\x04\x73\xab\x4b\x4f\ \xf4\xf4\xae\xc9\x73\xdf\x71\xf1\xa7\x60\x30\xd8\xf8\x9a\x5e\x5e\ \xb5\x6a\x3f\xaa\xc8\xdf\xc9\xf6\x4d\x11\xe7\x4d\x4c\xe6\x68\x6f\ \x45\x61\x64\x27\x64\x20\x36\x5e\x43\x9d\xea\x18\x3d\xdb\xda\xa4\ \x89\x2b\xdd\xa3\xe4\xc4\xfa\xaf\x5b\x3b\x31\x18\xdc\x3d\xb4\x69\ \x42\x4c\x8c\xf1\x91\x91\x23\xcf\x52\x5d\x9d\x34\x28\x4b\xed\xec\ \x16\x68\x75\x5c\x8b\x0b\x0b\xb3\xa0\x8c\x16\x14\xc4\x7a\xca\xf8\ \xde\x21\x5c\x13\xd6\x56\xaa\xf4\x9c\xe2\x79\x7f\xdf\x85\xcd\x60\ \x70\x13\xc3\x5e\x6f\x03\x02\x2c\xb7\xb7\x6c\x79\x1d\xc5\x91\x4e\ \x1a\x8d\xeb\x77\x83\x29\xaf\x6e\xde\xb4\x92\xa9\x49\x75\xc1\x9e\ \xf6\xf5\xea\x3d\x50\x82\xea\x0f\x8e\x1c\xb1\xc7\x58\x1a\xb3\x52\ \x18\x0c\x36\xbc\x52\x32\xdb\x61\x89\xe2\x58\x81\x7c\x00\xe9\xe9\ \x7f\xbd\x77\xe0\xc0\x70\xa1\x01\x48\x7d\x9f\x22\x83\x43\x1a\xd2\ \x0d\x2a\x1d\x12\xdf\x0d\x06\x83\x0d\x2f\xaf\x90\x40\x6e\xdf\x28\ \x32\x2c\xd4\xd3\x05\x2a\xb5\x5c\xb8\xaf\x83\x2e\x32\xa1\x28\x98\ \xfc\xf4\xfe\xe1\xc3\xd5\x64\x9c\xc6\x42\x94\xc3\xf8\x3a\xd0\x13\ \xdb\xd0\x03\xb8\xb6\x13\x69\x07\x83\xc1\xf2\x01\x7b\xbb\x75\xbb\ \xac\x64\xb2\x83\x21\x60\x3c\xdd\x1f\x1d\x3d\xfa\x34\x9e\xf7\xc0\ \x7d\x45\xd9\x3b\x2d\x05\x5e\x4b\xa5\xee\x2b\x09\xec\x24\x74\x12\ \x0c\x56\x5e\xd6\x51\x40\xe2\x3b\x66\xa8\x9b\xdb\x92\x9e\x5b\xb7\ \x3a\x56\xe9\xd1\xe3\x54\x9e\x62\xc5\xa2\x30\x9c\x2b\x07\xca\x7a\ \x3a\x58\x5a\xfa\xe0\x67\x4f\xd0\x06\xef\x15\x68\x3a\x6b\x96\xcb\ \x92\xcf\x9f\xad\x26\xde\xba\x65\x9d\xa7\x78\xf1\x28\x55\xb6\x6c\ \x2e\x30\xc4\xb3\xe0\x40\x91\x26\x30\x18\xbc\xd2\x35\x04\xc7\x3c\ \x39\x7b\xd6\x16\x89\xcf\xea\x2a\x04\xb4\xee\x75\x90\xad\x9d\x12\ \x6d\x8c\x8c\x82\xf1\x7c\x8e\x74\xaa\xd4\xf7\xdd\xb0\x61\x95\x56\ \x9d\xd7\x12\x91\x66\x30\x18\x6c\x78\xd9\xd1\xa4\x7e\x3a\x55\x20\ \x04\x5d\xbe\x3c\x5a\x00\x38\xcf\xc5\xa3\x93\x4c\x48\x5c\x5c\x5c\ \x59\x21\x61\x53\xb1\x62\x77\x32\x34\x28\x56\xbd\x77\x19\x3a\xf4\ \x9c\x97\xa9\xe9\x54\xf1\x7d\x60\x30\x38\x5b\x05\x6c\x0f\x76\x15\ \xc0\xba\xaa\x55\x3d\xa4\xaa\xb0\x05\xae\x45\x41\x43\xd0\x9b\xc6\ \xae\xd8\xd8\xec\x91\x55\xce\x24\x1d\xd0\x00\xcb\xdc\x7a\x29\xfb\ \xb7\x00\x4c\xab\xe4\x37\x83\xc1\x78\x78\xe4\x48\x67\x65\x9b\x49\ \x54\x7a\xda\x41\x4d\xec\x91\x94\x0b\xcf\x86\xb1\xe1\x8a\x7c\x1f\ \xe9\xaa\xc8\xf7\x3e\x9a\x08\xd1\x53\x30\x18\xec\x34\xf9\xdb\x32\ \x01\xb5\x2e\x6d\xdc\xe8\x3b\xfe\xe6\x4d\xcb\xce\x36\x36\x7b\x2b\ \x77\xef\xee\xaa\x87\xa2\x57\x95\x9e\xde\x97\xae\x76\x76\xe7\xf0\ \xca\xd9\x05\x2a\x55\x3e\x5c\xb7\x82\xaa\x6a\x90\xef\x5b\x1c\x1f\ \xbf\xa6\xdb\x86\x0d\xbb\xf5\xf3\xe6\xfd\xa2\xa7\x52\x1d\x86\xf1\ \xfd\x24\xb4\x40\x79\x9a\xb2\x75\x14\x83\xc1\x90\xc6\x56\x18\xfc\ \x4c\xaa\xce\x88\xd3\x8d\x7e\x7b\xf7\x6e\x5f\xe7\x5f\x7f\x55\xab\ \x44\xef\xed\xda\xd5\x87\x64\x03\x34\x5b\x3b\x41\x06\x3c\x9c\xae\ \xe8\xfe\x73\x03\x67\xc0\xb1\x0f\x0e\x1f\x5e\x43\xf7\xd0\xe3\x77\ \x4c\xc5\x90\x77\x82\x81\x1a\x43\x0c\x06\xe3\xe8\xef\xbf\x1b\xc3\ \x80\xde\x6b\xc4\xe9\x52\xec\x2a\x57\xbe\x81\x66\x23\xcb\x14\x7d\ \x7d\x13\x21\x3a\x2a\x71\xbb\xcb\x96\x96\x7b\xf1\x7e\x28\x19\xea\ \xf2\x3c\x79\x76\x21\x21\xfa\x33\x52\xc9\xfc\xa5\x91\x95\x06\x3d\ \x40\x4b\x30\x05\xe9\x63\xe7\x29\x0e\x28\x14\x30\x18\x82\x1d\x28\ \xb5\xe2\x23\x22\x4c\x4e\xcf\x9c\x79\x04\x92\xde\x17\x5c\x87\x0d\ \xdb\xf3\xe5\xcb\x97\xa5\x18\x6f\xa1\xb1\x5a\xe5\x46\x45\x42\x24\ \x32\x53\x62\xdc\xa6\x4f\x1f\x97\x10\x1b\xbb\xe8\xf0\xf0\xe1\x27\ \x51\x1e\xa4\x0e\x92\x1f\x1a\x34\x88\x0c\x4b\x8f\x94\xa0\xcd\x72\ \xe4\x78\x40\x63\x44\xa8\x59\x39\x69\x95\x0a\x31\x18\x0c\x12\x9d\ \x05\x7b\x80\xf3\xc1\xb9\x60\x0d\xa1\x05\xc8\xc1\x2d\xa7\x54\x30\ \x29\x6c\xe4\x74\x6a\xda\x34\xd3\x37\x77\xee\xac\x41\x2e\xe6\xf5\ \x60\x6f\xef\x55\x4a\x2f\x35\x84\x10\x76\xc9\x52\xa0\xcf\x52\xa5\ \xf8\x10\xae\xe5\x45\xda\xc0\x60\x70\x1b\xae\xa7\x1e\x1e\xd6\xe8\ \x2a\x7a\x93\xe2\x76\x64\x54\xb8\xbe\x7e\x79\xed\xda\x34\x92\x89\ \x13\x00\x29\x0f\xc3\x83\xf9\x1e\x8a\xd0\xef\x61\x8c\x56\x8e\xad\ \x5b\x5f\xa7\x6a\x04\x18\x5d\x24\xde\xff\x8e\x95\x8e\xc1\xe0\xde\ \x77\x53\x70\xbe\x5b\x8e\x56\xca\x87\x1c\xdb\xb6\x3d\x14\x70\xfc\ \xb8\x21\xc6\x72\x28\x7a\x98\x60\x8a\xcf\x9a\x35\x7b\x31\xd6\x05\ \x1c\x49\xa5\x3f\x38\x27\xba\x84\x87\x86\x96\x13\xdf\x05\x06\x83\ \x0d\xaf\x1c\xd8\x5d\x4a\xb3\xd7\x55\xce\x79\x60\x3c\x64\xd9\x03\ \xa5\xc8\x51\x36\xf9\x6e\x75\x70\x02\x58\x4d\xa4\x0f\x18\x0c\xc6\ \x5c\x21\xf2\x61\x3b\xf9\x19\x9d\x5c\x5f\x3e\x38\x7e\xbc\xbe\xc8\ \x58\x30\x18\x8c\x13\x93\x26\x6d\x20\x99\x3e\x18\x1e\x85\x19\x1c\ \xc0\x3e\x19\xd4\xb7\x9c\xc1\x99\x26\x8c\x1e\x9b\x36\x6d\x6c\xbf\ \x72\xe5\xfe\xc2\x15\x2b\xbe\x43\xb9\x0f\x55\x98\x1f\x01\x57\x88\ \x8c\x03\x83\xc1\x71\x3d\x70\x41\x74\x68\xe8\x8a\x9b\xdb\xb7\x6f\ \x8b\xfd\xf0\x21\xdd\xbb\x81\x32\x18\x2a\x50\x82\x21\x63\x72\xe5\ \xc1\x2a\x60\x14\x56\xbb\xab\xe2\xc7\x00\x83\xc1\x3d\xd8\x32\xe1\ \x0b\x8d\xc1\x60\x50\x20\x1d\x41\xf3\x27\x30\x3a\x3f\x30\x23\x45\ \x6a\x19\x0c\x06\x79\x38\x91\x46\xf6\x1a\xfc\xb4\xad\x49\x93\x9f\ \x44\xc6\x82\xc1\x60\xbc\xbd\x7f\x7f\xe2\x2b\x3f\x3f\x92\x61\x6f\ \x2b\x24\x18\x8c\x0c\x92\x08\x67\x94\xa8\x51\xc3\x19\x97\xfa\xe0\ \x75\x91\xfe\x60\x30\x18\x24\x54\x0b\xda\x64\x42\xc2\x33\x83\x03\ \xdf\x8c\x14\x21\x16\xe2\x32\x53\x2f\x07\x54\x1a\x32\x16\x0c\x06\ \xc3\x7d\xc1\x82\xa6\xa8\x44\xb8\x06\x09\x87\x8c\xd6\xc2\x64\xf0\ \x19\x8e\xd1\x61\xe5\xca\x7b\xb8\xec\x01\xa3\xc5\x0f\x01\x06\x83\ \xcf\x81\x27\xb1\x3c\x5e\xc4\xb5\xa1\xf8\xd7\x81\x41\xba\x8d\x13\ \x48\x1a\x4e\xe8\x04\x18\x79\x4b\x96\xf4\x55\x09\xd1\x4a\xa8\x54\ \x9e\xd4\x09\xc8\x58\x08\x23\xf1\xef\x01\x43\x0a\xa3\x3e\xc4\xb5\ \x8b\xc8\x72\x30\xd0\xff\x6e\x23\xcd\x89\xa6\xb8\x2d\xb8\xef\x5f\ \x92\xb1\xc2\x38\x39\x75\xea\x09\x48\x85\x47\xcb\x09\x3e\xb9\x58\ \x88\xca\x22\x4b\xc0\xa0\x5e\x77\x30\xae\x38\x8b\x5c\xb9\x3e\x9e\ \x9d\x3d\xfb\x08\xfa\x22\x38\x6c\xaa\x53\xe7\xa6\x54\x8d\x3e\x29\ \xfe\x15\xe0\x0c\xf9\x4e\x90\x17\x78\x0e\x61\x9d\xcf\x10\xce\x49\ \xc6\x84\x93\xf1\x15\x9d\x29\x44\x2e\x91\xa9\x60\xc8\xde\x07\x4a\ \xff\xbb\xd9\x60\x8f\xcf\x9f\x3f\x4f\x75\x68\xda\xf4\x16\x8d\x9b\ \xe5\xca\xd5\x48\xfc\xf0\xe0\x49\xee\x07\xa6\xec\xeb\xd1\xc3\xfb\ \xa9\xbb\xfb\xfa\xd3\x33\x66\x1c\x40\xbb\xdf\x3d\xd4\xe8\x10\x1c\ \x37\x50\x08\x3d\x91\xe1\x60\x98\x08\xd1\x5c\x11\xb4\x75\x1e\x38\ \xf0\x38\x35\x2e\x11\x12\x07\xfa\xf5\xb3\xa5\xf1\x3d\x5d\xba\x18\ \xcb\x39\xdb\x8a\xb9\xb1\xc3\xb5\xb0\xf8\xe1\xc0\x06\xf7\xdc\x3c\ \x57\xae\xa8\xe8\x97\x2f\xcd\xa9\xbf\x1a\xf8\xfb\xc9\xc9\x93\x47\ \x91\xce\x87\xdc\x66\xfa\x83\xad\x44\x46\x82\xe7\x80\x9c\x57\x37\ \x20\x46\x1b\xbf\xb1\x56\xad\x47\xe8\xe6\x9a\x8c\xb1\x6e\x78\xa4\ \xc2\xd5\x00\x73\x71\x90\xe6\xe2\xfa\xe6\xcd\x73\x05\xb0\x4c\x5f\ \x7f\xaf\x9c\x9b\x47\x3f\x60\x09\x10\x3b\x4d\xce\xcc\x9a\x75\x14\ \x86\xd6\x41\x48\x58\x95\x2b\x37\x8b\xc6\x37\xd6\xac\xf9\x18\x7f\ \x04\xb1\x52\x18\xd5\x29\x7d\x3d\x66\x0c\xf2\x0e\xc3\xd0\xc6\x80\ \x0b\x69\x1e\x0e\x8f\x18\x71\x2e\xe6\xed\x5b\x63\x9b\x72\xe5\x42\ \xa5\x41\xbd\xc7\xb3\x60\xd9\x11\x88\x54\xc5\xfa\x0b\x00\x5b\xcc\ \x4d\x34\x76\x64\xd4\xa8\xfd\x18\xa3\x36\x5d\x4d\xc0\x36\x42\x03\ \xd2\x58\xe7\x80\x1d\x84\xce\x80\x91\x2d\x5f\xe9\xd2\x21\x1d\x56\ \xad\xf2\xc6\xcd\x65\xa5\x96\x2b\xe6\xe5\xcb\xf9\x06\x05\x0b\x86\ \xfd\xee\xe3\xb3\x7f\xd2\xdd\xbb\x1b\x0d\x5b\xb6\xf4\xcb\xa6\x52\ \x0d\x40\x94\xfc\xe1\x12\x7a\x25\x5d\xc0\x28\x25\x84\x91\x4a\x88\ \x8d\xe0\x0a\xbd\x9c\x39\x13\xda\x9a\x9b\x5f\xc9\x57\xa2\xc4\xfa\ \x81\xce\xce\x96\x95\x3a\x75\xf2\xd1\xcf\x9f\x3f\x29\x67\xee\xdc\ \x02\x3f\x9f\x1f\xe9\xe9\x79\x48\x08\x11\xb0\x50\x88\x12\x21\x57\ \xaf\x0e\x45\xf8\xe0\x4d\xf7\xcd\x9b\xef\x60\x2c\x36\x45\x08\x73\ \x5c\xbd\x60\x5c\x47\xc9\xf1\x22\x57\x4d\x3a\x83\x4f\x03\xdd\x31\ \x67\xdb\x84\x6e\x80\xf1\xcc\xd3\x73\x1d\x56\xb7\x7a\x42\x02\x93\ \x63\x4d\xab\x1b\xf4\xfa\xef\x5f\x5d\xb7\x6e\x10\xd4\x88\xd7\xe3\ \xf9\x28\xe7\x41\x83\x3c\x69\x1c\x0d\x30\xec\x44\xba\x81\xe1\xb7\ \x65\xcb\x12\x5b\x23\xa3\x17\xb4\x62\xc1\x3b\x19\x02\x83\x2a\x86\ \xf9\xc8\x05\xfe\x0e\x9a\x4a\x2e\x06\x5b\x49\x43\x5a\x07\xa6\xdc\ \xd8\xbc\xd9\x11\x63\x0d\x04\xf0\xe8\xf8\xf1\x16\xe8\x22\x14\x47\ \xca\xd2\x1b\xaa\x57\x37\x12\x12\x3b\xdb\xb7\xdf\x2d\x3b\x0a\xd9\ \xe2\xdd\x9c\x42\x27\xc0\x5e\xca\x61\xa0\x4a\x00\x08\x09\x54\x85\ \xc1\x25\x22\x4c\xf0\x49\x23\x06\x94\x88\x43\x7c\x01\xe8\xf3\x07\ \xae\x2a\x5c\x38\x82\x1a\x68\xe0\xfd\x3c\x22\xbd\xc0\x5e\xe2\x4a\ \xf0\x44\xce\xf2\x30\x36\x76\xd9\x58\xbb\xf6\x15\xf7\xf9\xf3\x0d\ \x35\x9e\x15\x96\xe2\xb5\xb9\x85\x04\xce\x73\xaf\xd1\x66\xeb\x35\ \xc6\x26\x2a\xf3\x86\x79\x19\x43\xf3\xe5\x32\x64\x88\x07\xc6\xba\ \x09\x80\x0c\x17\xef\x46\x59\x95\x2e\xfd\x26\x29\x21\x61\x9e\x74\ \xc2\xe8\x02\xb8\x8d\x2f\x75\x8f\xa1\xc0\x37\x78\x92\x9c\x25\x8f\ \xdd\xdc\x36\x3a\x0d\x18\xe0\x45\x93\xb8\xbb\x4b\x97\x4b\xa4\x52\ \xec\x3c\x64\xc8\xef\xcf\x3c\x3c\x68\x35\x6c\x29\xb7\x2c\x9d\x64\ \xc3\x0b\x6f\xd0\x01\x6c\x21\xbe\x17\x3c\x07\x39\xc0\x36\xa0\x31\ \xd8\x4c\xfc\x09\x56\xe4\xcf\xff\x80\x9a\x93\xb8\x0e\x1d\xda\x57\ \xce\x43\x5e\x30\x14\xe3\x61\xf2\xcb\x30\x9f\x1c\xdf\x0c\xa6\xec\ \xea\xd4\xc9\xd7\x75\xc4\x88\x09\x3a\xe4\x6d\x66\xc0\x70\x4c\x94\ \xcc\x86\xad\x8d\x1a\xdd\xc6\xa4\x8d\xd8\xdf\xab\xd7\x62\x7c\x3b\ \xbe\x96\xde\xcb\xc2\x60\x79\x70\x20\xa8\xa7\x6c\x6b\x10\xb7\xfb\ \x88\x6d\x50\x20\x8c\x34\x49\xae\x86\xe3\xc4\x77\x83\xf1\x77\xb6\ \x7d\x37\xec\xed\x47\x58\xe4\xc9\x13\x2b\xe7\xeb\x29\x98\x00\xa6\ \x78\x99\x99\x39\xd1\x97\xa1\xdc\xa9\xd4\xc5\x98\xe2\x65\x56\x18\ \x08\xd6\x11\x59\x0f\xc6\x23\x2f\xaf\xa2\x07\xfb\xf5\x3b\x8b\xe6\ \xf3\x89\xe4\x91\x5c\x9e\x37\xef\xfe\x7d\xdd\xbb\x57\xc4\x04\x2e\ \xf1\xdd\xb0\x61\x34\x0c\xe9\x77\x0d\xaf\xe6\x78\x30\x65\x75\xd1\ \xa2\xcf\x43\xaf\x5f\xb7\xa1\x33\xc6\x87\x27\x4f\x56\xaf\xad\x58\ \x31\x48\x6e\x43\xf7\x60\xc2\x6b\x8a\x8c\x02\x1b\x65\xa1\xe7\x5e\ \x5e\xcb\xb1\x03\x39\x8b\x34\xb0\x53\x34\x17\x38\xbf\xc5\x24\x44\ \x47\x53\xbf\x84\xec\xf2\x1c\xee\x45\xf3\xb8\xab\x43\x07\x5f\x74\ \x7c\xdd\x7f\xa0\x4f\x9f\xf3\x50\x96\x4e\xa6\x2f\x48\x8c\x97\x14\ \x12\x5a\x73\xba\x28\x13\x93\x1d\x58\x8f\x11\xec\x4d\x1a\x1c\xb4\ \xc2\xc9\x30\x40\xb4\xb5\xa1\xe1\x4a\x5c\xef\xd3\xb9\x41\x00\x34\ \x21\x78\x16\x81\x16\xbe\x21\x71\xe1\xe1\x16\xf8\x9d\x41\x60\x19\ \xb0\x72\x54\x68\xe8\x94\x65\x39\x73\x26\xaa\x5b\xfb\x16\x2c\x68\ \x2c\x80\x3f\x84\xc8\x98\x73\x03\xcf\x57\x71\x70\x54\xa8\x9f\x9f\ \xe9\x96\x86\x0d\x6f\x43\xac\x28\xe9\xd8\xf8\xf1\x03\x31\x37\xcd\ \x30\x5f\x43\x69\x0e\xec\xeb\xd6\x7d\x80\x77\x4c\xe4\xae\x64\x1c\ \xfa\xe2\x1d\xa1\x71\xcb\x62\xc5\xd6\x0a\x2d\xc0\x10\xb7\xcb\x55\ \xf0\x05\x7e\x7f\x90\xc8\x34\xf0\x44\x96\x05\xc7\xdd\xda\xb5\xcb\ \x01\xdb\xc9\x60\x65\x3b\x02\xed\xfd\x13\x18\xaf\x88\xfb\x3e\xb2\ \x43\xa8\x33\xc5\xed\xb4\xb7\x43\x58\x19\x3f\x2c\xcf\x97\x2f\x26\ \xfa\xd5\xab\xe9\x78\x2f\xa7\x4c\x8a\xde\x40\x67\x44\x91\x11\xe0\ \xf9\x52\x81\xa3\x3e\x45\x46\x9a\x63\x25\x9b\xaa\xb9\x85\xdc\xdd\ \xb9\xf3\x55\x3c\x33\x12\x12\x8f\x4f\x9e\xfc\x45\xc6\xf3\xae\x0a\ \x2d\x24\x25\x25\x35\x42\x67\xd8\x73\xf4\x1c\x0e\xb3\x0b\x22\xd3\ \xc1\x93\x58\x17\x9e\xb3\x39\x94\x40\x8b\x6d\x4b\x20\xbc\x5c\xf3\ \x31\x66\x80\x09\x99\x01\xa6\x3c\x39\x7b\x76\x29\xbd\x27\xb4\x80\ \x6a\xe7\xb5\x64\xac\x78\xd6\x4e\x06\x5d\x95\x8c\xf7\x70\x5c\xa7\ \x82\x19\x53\xf0\xca\xf3\x55\x03\x2c\x74\x64\xf4\xe8\x0d\xd8\x5e\ \x46\x91\x97\x19\xd9\x43\xf1\xe4\x75\xd6\x48\x1d\xeb\x49\x73\x81\ \xad\xa8\x67\x2a\x73\x9e\x0d\xe7\x75\x6f\x6a\x68\x02\xc3\xdc\x80\ \xfb\x12\x22\xf3\xc1\x07\x78\xb0\xbd\x8c\x01\x35\x14\x00\xb6\x23\ \x03\x69\xd2\xb6\x35\x6b\xb6\xfd\x1b\xbf\xd3\x08\x1c\xbf\xfe\xe7\ \x9f\x4b\xd3\x96\x14\xee\xeb\x90\x6b\xeb\xd7\xef\x82\xdb\xfa\x8d\ \x34\xbe\x00\x6a\x74\x2f\x32\x0a\x3c\x67\x4d\x3f\xbe\x79\xb3\x8c\ \x72\x62\x61\x78\xb1\x30\xa0\x77\x32\x21\x7a\x03\x98\x84\x94\xb0\ \xd8\x60\x1f\x9f\xd5\x64\x60\x42\x03\x34\x27\x6a\x8f\x66\xfb\xf6\ \xb4\x2a\x0e\x17\x59\x0a\x9e\xc4\x82\xca\x6a\xb6\x65\xfc\xf8\x1c\ \x96\x25\x4b\xbe\x93\x49\xb6\x23\xc4\x37\xb0\x48\x88\x32\x70\x5d\ \x87\xde\x73\x76\xde\x92\x9c\x9c\xdc\xcf\xba\x5c\xb9\x60\x72\xc8\ \x60\xc2\x63\xe4\x8a\x77\x0c\xd7\x0c\x12\x48\x65\xa7\x0a\x58\xf7\ \xd6\xce\x9d\x76\xab\x8b\x15\x7b\xad\xec\x32\xb0\xd5\x0f\x92\xbb\ \x8f\x3e\x5a\x0e\x93\xec\x98\x8f\x7b\x58\x15\x3f\x86\x3f\x7d\xba\ \x02\xcf\x8b\xfd\xa9\x7c\x7b\xe6\x82\xe1\xe7\xe0\x30\x77\x65\xc1\ \x82\x91\x14\x06\xc0\x04\x5c\x00\x17\xc8\xec\x14\x03\xad\x89\x9f\ \x00\x8e\xc5\x36\x65\xb8\x12\x94\x8d\x08\x0a\x5a\x45\x8d\x0f\xe9\ \x1e\x71\xa3\xa1\x22\xa3\xc1\x6d\x96\x17\x04\x5d\xbc\x68\xf7\xe2\ \xd2\xa5\xb5\x5f\xbe\x7c\x59\x2a\x83\xe5\x06\x5a\x21\xa1\x29\x34\ \x1f\xc7\x27\x4e\x74\xc3\xb3\xae\xe2\x4f\x20\xe7\xfa\x84\xb1\x10\ \x15\x44\xe6\x81\xdd\xd2\xef\xee\xdd\x5b\xea\xd8\xa6\xcd\x0d\x64\ \xb5\xab\x33\x52\x68\xeb\x82\x42\xc9\x5a\x5a\xef\x15\xc1\x19\xb0\ \xb8\x66\x50\xd6\xd3\xc4\xa4\x39\x3c\x6a\x89\x08\x21\xbc\xc0\x19\ \x31\xe3\x63\x76\x3c\x57\xb9\xc1\xc6\x60\x3b\xb0\x36\x98\x8d\x1c\ \x5f\xb2\x82\xfc\x27\xb0\x30\xf8\x61\x55\xd1\xa2\xaf\x92\xe2\xe3\ \x17\x50\x4a\x99\xd0\x86\xac\x58\x90\xde\x4c\x47\x30\x79\x6d\x85\ \x0a\x99\x1c\xcf\xe3\x89\x2c\x00\x8e\xf9\x14\x1d\x6d\x1e\xe2\xe3\ \x63\x4b\x57\x3a\xef\xa5\xb2\x05\xb1\x00\x53\x2e\x2c\x5b\x76\x90\ \x82\xb2\xb8\x9f\x48\xf1\xa0\x07\xae\xae\xf6\xb8\xcf\x82\x58\x1d\ \x83\x76\x1c\xb2\xf4\x2a\x01\x86\xa7\xae\x26\xa7\x73\x36\x9d\xbf\ \xbf\x91\x14\x61\x2d\xab\x16\x26\xc5\x45\x45\x35\x7a\xe1\xed\xbd\ \x16\xef\xf6\x13\x59\x06\x6e\x52\xdf\x0c\xfc\x05\x34\xd0\x38\x80\ \x0f\x03\x2b\x62\x92\x3e\xe1\xdb\xf0\x09\x9e\x4d\x07\xb3\x43\x32\ \xa0\x20\xbc\x60\x34\x61\xbf\x8b\x2c\x03\x6f\x35\x03\x4f\x9d\xda\ \x60\x57\xb9\xf2\x63\x32\x36\xaa\xbd\x43\x0c\x6f\x37\xe6\x26\x55\ \x0f\x32\xe2\x79\xcd\xb1\x43\x09\x91\x67\xc1\xdb\xaf\x6e\xdf\x6e\ \x41\x25\x41\x42\x67\xc0\x69\x62\x07\xe4\xe4\xc4\x62\xfb\xf1\xe5\ \xe1\xd1\xa3\x9b\x30\x41\xd5\x85\x84\xdc\xde\x14\x14\x59\x09\x36\ \xba\xca\xe0\x1f\x97\x57\xad\xda\x8f\x6a\x90\x0f\xd2\x91\x75\x59\ \x5b\xa8\x48\x49\xa0\x86\x03\x46\x9d\xca\xb7\xae\x4a\x15\x1f\x1d\ \x9b\x3b\x46\x64\x68\x68\x3d\x2a\xa4\xa4\xea\x65\xf2\x66\x52\xa0\ \x75\xae\x10\xf9\x84\x2e\x82\xb3\x8b\x9a\x25\xc4\xc4\x18\x1f\x19\ \x39\xf2\x2c\x4a\x84\x6e\xb8\x0e\x1b\x96\x5a\x4f\x04\x15\xb6\xa1\ \x97\xe9\xec\x1d\x7a\xed\x1a\xa5\xf2\x19\x0a\x9d\x03\x67\xbe\xf7\ \x7c\x7b\xf7\xae\xe5\xf6\x16\x2d\x6e\xd2\x2a\x87\x04\xe7\x81\x42\ \x57\xc1\xf3\x95\x07\xec\x05\x2e\x01\x1b\xcb\x5d\xca\x7a\xd0\x44\ \xa6\xf2\xfd\x2a\x03\xe6\x5e\xb2\xe2\x5c\x47\xc1\x13\x59\x0a\xfc\ \x3d\x32\x24\x64\x25\xae\x3a\x6e\x70\x0c\xa5\xac\x87\x80\xd5\xec\ \x18\x19\x99\x94\x77\x08\x5d\x9e\x27\x4f\x78\xec\xfb\xf7\xa6\xe4\ \x2c\x4b\xc5\x31\x56\x16\xef\xcd\x05\xcd\xa8\x64\x2b\xeb\xcb\x80\ \x78\x22\xab\x83\x65\xc5\x8f\x04\x9e\xb3\xf6\xe7\x8d\x8d\x0f\xa1\ \x0c\x48\x7d\xbe\x43\xc6\xd0\x5b\xaf\xa5\x4b\xc7\xa5\xa2\x34\xd6\ \x9f\x0a\x94\xb5\x84\x6b\x6f\xca\x8a\x84\x34\x80\xc1\xe0\xf3\x5d\ \x6b\x5a\xd5\x9c\x06\x0e\xf4\xc2\x79\x3c\x49\x26\x3a\x2c\xd0\x58\ \xd9\xca\x83\xf1\x78\x16\x85\xc4\xe9\xdd\x14\x5a\x80\x32\xc0\x79\ \x0a\x39\xe0\x18\x11\x84\xf7\x4d\xd3\xde\x27\x8f\xc1\xe0\x78\x6b\ \x7f\x72\x96\x6c\x6d\xdc\xf8\x26\x92\x1b\x36\x0b\x09\x25\x39\x5d\ \xa6\x8b\x4d\x05\xbb\x80\x23\x2e\x98\x99\x1d\xa0\x71\xa2\x4d\xa5\ \x4a\xf5\x45\x9a\xc1\x60\xb0\xe1\x19\x82\xe3\x41\x13\x30\xbf\x00\ \x10\xbf\x5b\x4a\x46\x85\x62\xd8\xb9\x9a\x7a\x29\xde\xd6\xd6\x6d\ \x69\xdc\xbe\x5e\x3d\xaa\xc7\xeb\x2e\xbe\x1b\x0c\x06\x97\x01\xe5\ \x15\x12\x0e\xcd\x9a\x91\x61\x7d\xc5\x39\xef\x89\xe6\x99\x8d\x9c\ \x26\x07\xfb\xf7\xdf\x4d\x2a\x00\x24\xcb\x21\xd2\x07\x0c\x06\x97\ \x6f\x41\x1e\xdf\x4b\x36\x1a\xa1\x4a\x71\x52\x0e\xcb\x3b\x5b\x08\ \x0a\x33\x74\x02\xd3\xb9\x1b\x13\x83\xc1\x46\xd7\xdc\xd3\xd4\xd4\ \x79\x65\xa1\x42\xef\x34\xbc\x94\x89\x24\x56\x2b\x32\x04\x0c\x06\ \x1b\x5d\x23\x54\x7e\x98\xdc\xde\xbb\x77\xdb\xce\x76\xed\x4e\x9c\ \x9a\x3e\x7d\xf5\xa7\xa8\xa8\x8a\xdf\x21\xb9\x9f\x1b\x1c\x0d\x5a\ \xc0\x68\x67\xe3\x5a\x51\xfc\x0b\xa1\x12\xff\x10\x0c\x86\x3c\xdb\ \xd5\x06\xeb\x80\x5f\xc1\xf3\x2a\x95\xea\x79\x1a\x3a\x07\x75\x56\ \x09\xb1\x03\x2c\xad\x31\xfc\x25\x45\x88\x71\xcb\x84\x70\x14\xe9\ \x06\x06\x83\x9b\xc9\xd4\xc3\x8a\xf6\x11\xb1\xbb\xc4\x13\x13\x27\ \x1e\xa4\xcc\x24\x2a\xdf\x42\x91\xf3\x07\xa9\x2c\xd0\x4c\xfc\x6b\ \x90\xc5\x25\xf3\x0c\x06\x56\x31\x13\x3d\x3d\x3d\xd1\x6b\xc7\x8e\ \xbd\x3d\xec\xed\xfd\x0a\x96\x2b\x77\xaa\x7a\xbf\x7e\x7b\xda\x9a\ \x99\xed\x15\x2a\x95\xc8\x5d\xb4\xa8\x89\x90\xf8\x67\x69\x63\x0c\ \x06\xaf\x6e\xd9\x51\x89\x10\x4d\x82\xb5\xd8\x96\x4e\x02\x0b\x6a\ \x2a\x06\xd8\x18\x19\x05\x5b\x96\x28\x11\x8a\x71\x15\xe9\x65\x82\ \x91\xf8\x9d\xc5\xdf\x21\x58\xcb\x60\x30\x16\x0b\xf1\x33\x79\x36\ \xd1\x00\xf4\xb8\x12\xe3\xd3\x04\x74\x4e\x9f\x93\xdc\xbe\xba\x07\ \x9e\x9e\x5e\x37\x7a\x57\xf2\x79\x1a\x45\xa8\x18\x0c\x06\x29\x73\ \x43\xad\x3b\x6e\x63\x9d\x3a\x57\x53\x71\xa4\xa8\x85\x6b\xd1\xe3\ \xe2\x12\x55\x9e\x40\xf5\x6d\x0b\xdd\xbb\xfc\xf6\x9b\x07\x8c\x30\ \xd0\xa1\x65\x4b\x6a\xdf\xa5\x5a\x44\x6d\xf6\xfe\x1e\x18\x0c\x06\ \x8c\xed\x92\x5c\xb5\x7a\x69\x18\x5b\x77\xd2\x35\x25\x59\x45\x28\ \x8e\x59\xed\xee\xdb\xb7\x38\x82\xeb\xb1\xb6\x15\x2a\xbc\xa0\x4a\ \x75\xc8\xf9\x59\xe0\xfa\x2b\xde\x99\x09\x7e\x01\xb7\x50\x7b\x2e\ \x91\x3a\x18\x0c\x06\x29\x81\x81\x63\xa1\x97\x72\x53\x76\x62\x4a\ \xc4\xf5\x0c\x8c\xc7\x1d\xd7\xcf\xa8\xc9\x8b\x86\xb7\x92\xe4\x39\ \xfa\x61\xec\x0f\x7a\x87\x7a\xe8\xd9\xff\xfc\xf3\x3c\x3c\x4f\x40\ \x2e\xe7\xa6\x3d\x9d\x3b\x97\xb2\xab\x54\xc9\x4f\x51\xf7\x96\x4a\ \xd3\x0c\x06\x23\x95\x2d\x63\x6f\xe5\x4c\x66\x5b\xb1\x62\x30\xba\ \x37\x79\xa0\x23\xd3\xb5\xe5\xf9\xf3\x5f\xd9\xdd\xa9\xd3\x4e\xd2\ \xd2\x24\x5d\xd3\xa0\xa0\x20\x03\xea\x51\x01\x25\xe9\x8f\x7b\xba\ \x76\x3d\x43\xa1\x02\xd9\xbd\xc9\xef\xd5\xab\x57\xb9\xd1\x91\xd7\ \x0f\xab\xdf\x57\x04\xdd\x3d\xce\x2f\x5b\x56\x97\x85\x6b\xb5\xc1\ \x60\x48\x17\x3f\x74\x4a\xb7\x6e\xaa\x5b\xf7\x21\x3c\x95\x9f\xb1\ \xd2\xbd\x7d\x72\xfa\xb4\xad\x6c\xb1\x3c\x17\xec\x23\xfb\x59\x74\ \x00\x53\xa8\x43\x10\x5d\x91\x46\xf6\x42\x9e\xed\x2e\xa3\x30\x76\ \xb1\xfa\xe7\x3e\x7d\xbc\x64\x33\xcb\x56\x1a\xc6\x56\x87\x0c\x95\ \x82\xea\xb8\x65\x30\x18\x54\xe4\x0a\xce\x7a\x70\xe4\x88\x3d\x35\ \x21\xa1\xfe\x07\xe8\x53\xfe\x02\xdb\xc5\xf6\x1a\x2a\x70\x47\x94\ \x95\x10\x35\x79\xde\x67\xe7\xcc\x51\xdf\x63\x3b\x79\x99\xde\xb7\ \x29\x57\xee\x21\x9a\xcd\x98\x90\xfc\x9f\xd2\x52\x4d\xfe\xde\x50\ \x18\xf2\x27\xcb\xe2\xc5\x8d\x05\xc0\x60\x30\x64\xe7\x1e\xb0\xda\ \x33\x77\xf7\x55\x68\x02\xea\x61\xf7\xd3\x4f\x67\x4e\xcf\x99\xd3\ \x41\x39\xe7\xc1\x68\xde\x6a\x88\x18\x2d\xc1\xf6\x73\x9f\xd4\xd3\ \xa4\x5e\x15\x11\x10\xab\x5a\x83\xf1\x06\xf2\xfd\x0e\x52\xe0\x76\ \xe3\x91\x09\x13\xca\xbf\xba\x71\x63\x4d\x42\x6c\xec\x7c\xd9\xa8\ \x92\xc1\x60\x68\x06\xba\xc1\x71\xa0\x09\xd8\x5b\x48\xbc\xb9\x7b\ \x77\xa0\x8f\xb5\xf5\x5e\xb9\x65\xac\x0a\x49\x87\xab\xd2\xc9\xf2\ \xe5\xba\xbd\xfd\x4e\x4d\x15\x68\x8c\xe7\x47\x13\x51\xc5\xeb\x19\ \xb1\xb3\x63\xc7\xbe\x7f\xa1\xf0\xcd\x60\xb0\x9e\x4a\x2a\x86\x38\ \x00\x2c\x47\x4e\x10\xac\x78\xf1\x64\x50\x87\x06\x0d\x3a\x8f\xb1\ \x29\xda\x7d\xd1\xd1\x9c\x92\x3c\x9f\x51\xd8\xa2\x46\x3f\x74\x73\ \xab\x2d\xbe\x1f\x0c\x06\xe3\xf8\xf8\xf1\x0b\xd0\xf8\xf3\xc6\xe7\ \xa4\x24\xe3\xd4\x5a\x6b\x99\x66\xcb\x36\x8f\x0c\xf2\xcc\xac\x59\ \x47\x65\x97\x5e\x9d\xc2\x0f\xb5\xb7\x65\x30\x7a\x6e\xd9\xe2\x86\ \x4b\x0a\x78\x06\x25\x40\x61\x94\x63\xa9\x12\xa2\x2b\xee\x97\x26\ \x61\x81\x4b\xf9\xfa\xd5\x38\x1f\x1a\x81\x76\x58\xb5\xca\x1b\x63\ \x97\xfe\x66\x4c\x70\x16\x2e\xc5\xc1\x15\x66\x42\xc4\x68\x3c\x62\ \x30\x18\x9a\xa2\x45\xd8\x62\x8e\xa3\x40\x39\x18\x0f\xe3\xbb\x85\ \xeb\x57\xf4\x42\x20\x25\xb1\x7a\xda\xb5\x9f\x32\xf6\x77\x14\xef\ \x9d\xc7\x75\x89\xa2\xc5\x02\xcf\xe8\x7a\x79\xee\x0b\x01\x0d\xc4\ \x37\xc1\x60\xb0\xf1\x95\xa5\xb0\x02\xd2\xbe\x9e\x92\xd1\x50\xa7\ \xdd\x93\x93\x26\x6d\x37\x35\x35\xcd\xa6\xd5\x64\xc6\x44\x3a\x5b\ \x3e\x49\x8d\xcd\x14\x30\x10\x2c\x8a\x98\xde\x4c\xba\xdf\xd1\xaa\ \x95\xfb\x5f\xf7\x37\x67\x30\xd8\xe8\xaa\x81\xd3\xbd\xcc\xcc\x9c\ \x56\x15\x2a\x14\x41\xc6\x23\x57\xb1\x9c\x02\xa0\x8e\xad\xb4\xf2\ \xa1\xd4\xe7\xc9\x2b\x3f\x3f\xeb\x8f\xef\xde\x2d\xa7\x9e\x85\x14\ \x70\xc7\xea\x76\x1d\xef\x3e\x31\xcf\x95\x2b\x06\xc5\xaf\x16\xe4\ \xa4\x11\x7f\x09\x06\x83\x8d\x2e\x3b\xd8\x92\x3a\xed\x3a\x0f\x1e\ \xec\x81\xd6\xd6\xbe\xe8\x0a\x54\x50\x9e\xd1\x26\x83\x29\x90\x6b\ \x77\xa2\x3e\x17\x60\x0d\xb0\xed\xe1\xe1\xc3\x4f\xd3\x38\xd1\x6d\ \xda\x34\x2a\x11\xea\x24\xd2\x06\x06\x83\x9b\x92\x80\x7d\x41\x53\ \xb0\xbe\x00\xb0\xcd\x1c\x2b\xeb\xee\xb6\x08\x0d\x6c\xfd\xe5\x97\ \xc5\x34\x4e\x35\x77\xc8\x56\x99\x27\xcf\x86\xff\x04\x0c\x06\x77\ \x03\x5a\x5b\xa3\x86\x21\x9d\xed\xc0\x8f\x8b\x85\xa8\x2b\x00\x2a\ \xe7\xc1\x56\xf2\x22\x19\x9c\xdf\xd6\xad\x3b\xc8\x38\xa9\x8f\x21\ \xee\x17\x81\xe7\xf0\xcc\x0d\xd7\x51\x22\xed\x60\x30\x18\x88\xcb\ \xed\x44\x02\x74\xb2\x3c\xdf\x85\x11\xe9\xe7\xcd\xf5\xeb\x07\xc0\ \xd8\x26\xac\x29\x51\x22\x0f\xee\x7d\x69\x0c\x67\xbb\x58\x0d\x9d\ \x4d\x63\x16\x11\x4a\x23\x18\x8c\xce\xd6\xd6\x2b\x87\x9c\x38\x61\ \x5f\x67\xd8\xb0\x93\x45\x2a\x55\x7a\xa4\x12\xa2\x88\x00\x5a\x19\ \x1b\x5f\x26\x7b\x84\x23\x65\x2a\xae\xbf\x54\xea\xd4\xe9\xc2\xc2\ \x8f\x1f\x6d\x66\x85\x86\xae\x2c\xdd\xa0\x41\x00\xde\x33\x87\xe1\ \x79\x52\x0f\x3c\xe9\x84\xf9\x9b\x60\x30\x78\x9b\x59\x01\x1c\x1e\ \x15\x1a\xba\x84\x9a\x8d\xa8\xcf\x6f\x65\xcb\xde\x16\x00\xc2\x05\ \x17\xb1\xb2\x7d\xc1\x59\x8e\x3a\xc1\x36\x03\xeb\x44\x04\x07\x8f\ \xa0\xad\xa8\xc6\x6a\x77\x5a\x7c\x17\x18\x0c\x36\xbe\x01\xfe\xdb\ \xb7\x6f\xbf\x7b\xe0\x80\x39\x39\x4b\x90\x7f\xe9\x8d\xea\x83\x84\ \x97\xbe\xbe\xed\x84\xc4\x86\xd6\xad\xf3\x52\x38\x81\x6a\xf1\x8e\ \x8d\x1d\x7b\xea\xf8\x84\x09\xeb\x28\x77\x93\x53\xbb\xd2\x0e\x06\ \xc3\xf5\xe7\xd1\xa3\x5f\xe0\x5a\x09\x14\xc5\x6a\xd5\xf2\x0a\xbd\ \x72\xa5\xf9\xde\x2e\x5d\x16\x1a\x23\x2e\x07\xc3\x88\x0c\xbb\x78\ \x71\x1d\x1e\xa9\xaa\xf6\xee\x7d\xa5\xd7\xb6\x6d\x6e\x74\x04\x3b\ \xf4\xeb\xaf\x3f\x51\xad\x1d\xc6\x0d\xc1\xb7\x5f\x85\xd8\x6b\x21\ \xc4\x1d\xf1\xf7\xc1\x60\x30\x5e\x05\x04\x18\xa2\xc0\xf5\x8e\x86\ \x14\xdf\x67\xba\x42\xaa\x2f\x22\x2e\x2c\x6c\x29\x35\xa7\x24\x59\ \x3f\x12\x37\x92\x1d\x83\xe2\xe5\x36\xf3\x4b\xda\x1c\x2b\x0c\x06\ \x0b\x1a\x19\x92\xdc\x5e\x72\x72\x72\x3f\x7f\x47\xc7\xed\x90\xe2\ \x73\x5e\x9e\x2f\xdf\x2b\x45\xb8\x08\xc6\xd6\x46\x00\xb2\x7f\x79\ \xca\x86\x1a\x35\x1e\xc5\x85\x87\x5b\x3c\x3c\x7e\x7c\x93\xad\x91\ \xd1\x0b\x69\xa0\x83\xbf\xf1\xdf\x2e\xfd\xbf\x5e\x4a\x06\x83\x71\ \x32\x07\xb6\x91\x16\xfa\xfa\xb5\x72\x15\x2c\x78\xb4\x58\x8d\x1a\ \x4f\xbe\x24\x24\x14\x2d\x58\xbe\x7c\x48\x1b\x33\xb3\x2b\x78\xee\ \x43\x2d\xb8\x54\x42\xd4\x37\x28\x54\x28\xea\xc3\xa3\x47\x95\xad\ \x4b\x97\x1e\x71\x6f\xcf\x9e\xa0\xd1\xde\xde\xb6\x39\xf3\xe6\x8d\ \xd5\xcf\x9f\x7f\x89\xd0\x02\x06\x26\xa4\x08\x11\xa4\x61\x74\x0c\ \x06\xc3\x6d\xfa\xf4\x3e\x56\x65\xca\x3c\xd3\xd8\x4e\x7e\x5d\x91\ \x2f\xdf\x53\xa9\x1c\x56\x4b\x00\xd4\x68\x52\xc6\xed\xee\xd1\xca\ \x66\x5d\xb6\x6c\x80\x8c\xd9\x79\x40\xd8\xe8\x0d\xb6\x9e\x31\x78\ \x97\xf4\x54\x54\x18\x3f\x08\x5a\x91\x34\x3b\x9e\x3d\x8f\x7e\xff\ \xbe\xb2\x00\x00\x06\x83\x41\x02\x44\xe8\x71\x37\xcb\x7b\xcd\x9a\ \x7d\xdb\x9a\x34\xb9\x88\x02\xd7\xc3\xb4\x65\xc4\xf8\x60\xa1\x01\ \xd2\xc0\xa4\xd0\xc1\x96\x06\x0d\xa8\xf8\x75\x1a\x12\xa0\xf7\xa3\ \xe5\xf2\x1b\xb9\xcd\x0c\xc4\x98\x91\x00\xcc\x0d\x0c\x8e\x29\xc6\ \xbb\xb7\x6b\x57\x9f\xc4\xd8\xd8\xfa\xe2\x7f\xc0\x60\xb0\xd1\xe5\ \x90\x2a\x62\x33\xc0\x85\x60\x1b\x50\x25\x34\x70\xd7\xc9\xe9\xd7\ \xd5\xc5\x8a\x85\xd1\x0a\x08\xa7\x89\x07\x8c\xc9\x22\x2c\x30\xd0\ \xdc\x75\xe8\x50\x77\xef\xd5\xab\xf7\x29\xca\x61\x97\x2d\x2d\x27\ \xd0\x3b\xa8\x44\xf8\x2c\x0d\xef\xba\x89\x10\x4d\x45\xda\xc0\x60\ \x70\x5f\xf3\xf0\xe7\xcf\xe7\xef\xed\xde\xdd\xc7\x5c\x5f\x3f\x5c\ \x7a\x2b\x63\xd1\x76\x79\x11\xe9\xab\xc8\xd7\x54\x18\xbb\x40\xb1\ \xbb\xa7\xee\xee\xeb\x51\x91\x70\x0e\xc2\x47\xf1\xb2\x06\xaf\x9d\ \x48\x13\x18\x0c\x36\xba\x3c\xe0\xb0\xe4\x4f\x9f\xcc\xae\xd8\xda\ \xee\x71\x6c\xd3\xc6\xed\xa2\xb9\x79\x2b\x32\x46\xa9\x28\xdd\x9f\ \x0c\xf1\x40\xdf\xbe\x17\x30\x36\x04\xec\x0d\x29\x3f\x4b\xd7\xe1\ \xc3\x4f\x3d\x3e\x71\xa2\xa5\x4a\x7c\x0f\x18\x0c\x36\xbc\xc2\xb8\ \xd4\x05\x6b\x83\x4f\xa0\xaf\x72\x5a\x7a\x26\xaf\xe6\x30\x30\xa8\ \x31\x23\x38\x78\x6d\xde\xe2\xc5\x6d\x31\x1e\x45\xdd\x7f\xf0\xa8\ \x23\x18\x2c\xd2\x0f\x0c\x06\x03\x0e\x93\xfb\xcb\xf3\xe4\xf9\x78\ \x6d\xfd\xfa\x91\x19\x5c\x2d\xc0\x60\x30\xda\x98\x9a\x5a\x93\x9a\ \xf4\xe9\x69\xd3\x36\x99\x0a\x71\x18\x1c\x85\xa0\x7a\x99\x0c\x30\ \x38\x06\x83\xd1\x62\xc1\x82\xe3\x7d\xf7\xec\xd9\x5c\xaa\x7e\xfd\ \x47\x2a\x3d\x3d\xd2\xc5\x74\x44\x50\xfd\x84\xc8\x18\x30\x18\x0c\ \x52\xfe\x02\x67\x24\xc6\xc5\x2d\x23\xc9\xbe\xb0\xc7\x8f\xe7\x2a\ \x15\xe8\x19\xe7\x34\x61\x30\xd8\xf0\x4a\xe3\x52\x4d\xda\x99\x0f\ \x1c\x28\x09\xe2\x5f\x09\x06\x83\xc1\x60\x30\xfe\x0f\x1d\x9b\x1f\ \x99\x66\xa1\x3a\xad\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x38\xb4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xa8\x00\x00\x01\x77\x08\x03\x00\x00\x00\x06\x8a\xf0\xc8\ \x00\x00\x02\xc1\x50\x4c\x54\x45\x7f\x00\x00\xa3\x6d\x93\xa4\x75\ \xa1\xae\x96\xd0\xbb\xb2\xec\xcb\x9d\xa4\xd7\xcd\xed\xbb\xbb\xfe\ \xcb\xcb\xfe\xd0\xce\xfe\xd2\xd2\xff\xc8\xc6\xfe\xc3\xc3\xfe\xdc\ \xdb\xfe\xc0\xbe\xfe\xb8\xb6\xfe\xd8\xd7\xff\xb3\xb3\xfe\xe2\xe2\ \xfe\xeb\xeb\xfe\xf3\xf3\xfe\xfc\xfb\xfe\xb0\xae\xfe\xf0\xef\xfd\ \xad\x80\xa3\xf9\xf7\xfb\xaa\x9b\xe0\xad\xac\xfe\xa4\x62\x7b\xbc\ \x7b\x7b\xbd\xb9\xf5\xbf\x80\x80\x91\x31\x3d\xa7\x50\x50\xa9\x53\ \x53\xca\xc4\xf2\x95\x2c\x2c\x96\x40\x53\xcc\x9b\x9b\xcf\xcb\xf7\ \xae\xa6\xf1\x9c\x53\x6d\xdc\xb9\xb9\xe0\xdf\xff\x9c\x5a\x7b\xb5\ \xb0\xf4\xee\xe0\xe1\xb7\x70\x70\x9e\x41\x42\xf5\xec\xec\xbb\x83\ \x8f\x8f\x20\x21\xbe\xb1\xe4\xd5\xac\xac\xce\xa0\xa1\xbe\xa8\xd3\ \xb2\x6c\x72\xd7\xb0\xb0\xdd\xc2\xc8\xed\xe3\xeb\xa9\x76\x99\x8b\ \x22\x2c\xb6\xa9\xe4\x9d\x6a\x98\x89\x13\x14\xb9\x73\x73\xb9\x76\ \x78\xb9\x9f\xcc\x9f\x68\x90\xa3\x81\xbb\xbc\xa2\xcb\xbc\xaa\xdb\ \x9c\x3a\x3a\xa6\x71\x94\xc1\xbb\xf3\xa6\x88\xc2\xc4\x91\x98\xc5\ \xba\xea\xc6\xba\xe5\xc6\xc0\xf4\x95\x4a\x69\xa8\x85\xb9\x96\x30\ \x31\xcb\xaa\xbd\xb5\x6c\x6c\xaa\x84\xb3\xcd\xa3\xaa\xb5\xa0\xd5\ \x8b\x1a\x1b\xd0\xa2\xa2\xac\x5a\x5b\xd1\xac\xb5\xac\x5e\x62\xac\ \x84\xad\xad\x64\x6d\x97\x56\x7d\x98\x33\x33\xb6\x99\xc4\xdf\xdb\ \xf7\x99\x46\x59\x9a\x3d\x44\xe4\xcd\xd1\xe6\xd0\xd2\xe8\xe6\xfb\ \xea\xd7\xd8\xaf\x60\x60\xec\xda\xdb\xb3\x92\xbb\xaf\x8a\xb5\x9b\ \x4a\x5c\xf1\xe3\xe3\xf3\xed\xf3\xb1\x63\x63\xb1\xa3\xe2\xf7\xf0\ \xf0\xf8\xf3\xf3\x8c\x26\x32\xb3\x89\xab\xba\xaf\xe8\x8d\x2c\x3b\ \xb6\x84\x9a\xac\x8a\xbb\xba\xb4\xf4\x89\x1a\x22\xa1\x50\x5c\xcb\ \xc1\xec\xd9\xb3\xb3\x85\x10\x13\x95\x43\x5c\xc1\x83\x83\xa3\x54\ \x61\xc2\xb4\xe2\xb0\x9e\xdb\x99\x43\x52\xb1\x86\xa9\xc7\xa8\xc0\ \xb1\x8b\xb3\xa3\x87\xc6\xb2\x9c\xd3\xa5\x4c\x4c\xa5\x68\x84\xb4\ \x73\x7c\xb4\xa1\xdb\xb4\xae\xf3\x9a\x4c\x62\x94\x45\x62\xa6\x8e\ \xce\xd5\xb8\xc5\xd6\xc1\xd5\xb6\x78\x83\xa6\x8f\xd1\xd8\xd3\xf5\ \xb6\x90\xb2\x9b\x57\x78\xd9\xc6\xda\xa7\x60\x70\xa7\x90\xd1\x9b\ \x64\x91\xdd\xcf\xe2\x8d\x30\x44\x8e\x38\x52\xe1\xc4\xc4\xb9\x8b\ \xa3\xe4\xcb\xcb\xa9\x8b\xc3\x8b\x27\x39\xe6\xe1\xf4\x9d\x60\x85\ \x90\x2e\x3b\xea\xe4\xf2\xbb\x9a\xbe\x90\x35\x49\x9f\x45\x4d\x96\ \x49\x64\xa1\x44\x44\xad\x90\xc7\xa1\x4d\x56\xae\x72\x86\x92\x34\ \x43\xa3\x6a\x8d\x91\x2c\x34\xc0\x86\x8a\x83\x0a\x0b\x9f\x52\x66\ \xbc\x93\xac\xc4\x8b\x8b\xc3\x9c\xb0\x89\x16\x1a\xcf\xc2\xe5\xe9\ \xd4\xd4\xb1\xa6\xe9\xb5\xab\xeb\xc9\x94\x94\xa1\x6e\x98\xae\x99\ \xd4\x9e\x58\x73\xd5\xbc\xcc\xbf\xa1\xc3\xae\xa9\xf5\x9b\x55\x73\ \xaf\x78\x92\xc1\xab\xd4\xc1\xb7\xec\x87\x19\x23\xb6\x9b\xcb\xa4\ \x72\x9d\xaa\x6c\x83\xb7\x7b\x87\xaa\x72\x8d\xc4\xa9\xc9\x92\x3d\ \x53\xaa\x98\xdc\xb1\x92\xc1\xc7\x91\x92\xa4\x7a\xab\xba\x95\xb5\ \xe8\xda\xe3\xba\x9c\xc3\xca\xb1\xcc\xba\xab\xe2\x94\x3b\x4c\x9a\ \x5c\x82\xae\x95\xcd\x95\x39\x46\xa2\x59\x6d\xcf\xbb\xd7\xb4\x85\ \xa1\x9d\x63\x8c\xbc\xa5\xd1\x99\x4f\x6d\xa6\x78\xa3\x91\x24\x24\ \x9f\x6f\xa1\x86\x14\x1a\x8e\x29\x35\x0d\x87\x2a\x70\x00\x00\x35\ \xae\x49\x44\x41\x54\x78\x5e\x84\x5d\x53\xb7\x2c\xcd\xb2\xed\xb7\ \x72\xb5\x17\xb6\x6d\x1b\x1f\x6d\xdb\xb6\x8d\x63\xdb\xb6\x6d\xeb\ \xda\xb6\x6d\xfd\x8a\x9b\x19\xe8\x59\x51\x51\x3d\x4e\x76\x65\x56\ \xed\x97\x3d\xe6\x08\x67\x44\x64\xae\x5e\x9e\x0f\x72\x8c\x2c\x4f\ \xc3\x1a\x66\x1a\x7f\xfc\xe8\x28\x75\x2d\x69\xca\xab\x2c\x4a\x19\ \x75\x9c\x35\x3d\x65\x12\x9e\x32\xb1\xa3\x1f\x9e\xb8\x0c\x87\xf2\ \xc4\xa5\x1f\x7e\x3a\x56\xc6\x67\x65\x7c\xe2\x57\x5c\x57\xf2\x58\ \x11\x66\x2f\x1f\x0c\xf2\x01\xd0\x66\x39\x43\x15\xb0\xad\x51\xd2\ \x14\xa8\x61\xa5\x59\x16\x0a\x97\x41\xd6\x34\x02\xb2\x32\xfe\x04\ \x70\xcd\x50\xfb\x01\x5d\x12\x27\x23\x0d\x33\xe0\xec\xf7\x81\x34\ \x0c\x8b\x52\xb1\xf6\x22\xc8\x30\x05\x69\x46\x33\x8d\x38\xe9\xc9\ \x2c\x45\x89\x8c\xf4\x13\x7a\x82\xa2\xb5\x3c\x34\x93\x00\x34\xac\ \x34\x4a\x4b\xd6\x00\x92\xa0\x0a\x41\xe9\xb1\x34\x25\xa2\x3a\xac\ \x3d\xa0\x04\x3d\x99\x98\x59\x78\xe2\xa2\x58\x2d\x60\xb0\xde\x30\ \x9f\xa9\x19\x49\x9b\xcc\xa8\x39\xa3\x28\x91\x53\x99\x1e\x66\xe0\ \x3b\x51\xb3\xcf\x28\x01\x95\xb8\x6f\x70\x46\xd6\xc7\x5f\x03\x69\ \x84\x45\x88\x09\x2d\x81\xcd\x0d\x44\x85\x09\x82\x02\x28\x43\x8d\ \x13\x1c\xa7\x85\xc9\x29\xbc\x0f\x0c\x27\xa2\x32\x5a\x82\x89\x21\ \x10\x15\x25\x28\xda\xa5\x4d\x59\x26\x8a\x94\x1b\x42\x42\x99\xf8\ \xc5\x98\x0b\x03\x53\xa5\x94\xe8\x19\x95\x0a\x5c\xe7\x49\x48\x03\ \x38\x61\xbf\xd1\x25\xd6\x23\x20\x35\x14\x8d\x9c\x07\xd4\x8c\x39\ \x4f\x22\xaa\x04\x4d\x31\x3c\x69\x0b\xa1\x6b\x0d\xc5\xa7\x51\x92\ \x74\xd6\x80\x09\x6d\x1a\x8a\x9c\x86\xc1\x7a\xaf\xac\x5f\xa9\x6f\ \x91\x55\xa8\x12\xc9\xa8\xa2\x04\xeb\x55\x4a\x9d\xe6\xab\x61\x4a\ \xe5\x4d\xb3\x28\x9a\xe6\x09\x14\x55\xa4\xa5\xa5\x68\x44\x09\xf3\ \x04\x5d\x02\x58\x50\x73\x08\xa4\xbd\x81\x72\x7e\x00\xd6\x8b\x0d\ \x0d\xdf\x2c\x02\x96\xff\x05\x01\x55\xde\x2b\xd0\x24\x4e\x5a\x09\ \x24\xc1\x34\x4a\xcf\x04\x15\x19\x4d\x48\x8d\xc4\x88\xb6\xb8\xcf\ \x60\xa1\xf6\x50\x26\x36\xa5\xe0\x7c\x2a\x4f\x06\xbe\x03\x27\xa3\ \xb4\x56\x14\x43\x84\x94\x91\xd2\x1b\x28\x85\xa2\x42\xcc\x7e\x18\ \xc0\x6a\xa1\x0e\x41\xce\x79\xca\xd4\x74\x49\xf2\x4a\xed\x00\xdb\ \xf9\xdb\x23\x65\xb5\x67\xe3\x54\x1b\xa2\xf6\x1b\xbc\x6f\xe0\xa4\ \x09\x0b\x4a\x53\xe1\x82\xf5\xa4\x49\x46\x99\x94\xa8\xaa\xf5\x59\ \x1b\x26\xa0\x1a\x82\x12\x32\x75\xa2\x35\x19\xfd\xba\x05\x53\x3c\ \x13\x53\x94\xb0\x0e\x3d\x4d\xa1\xf3\xde\x8e\x02\x66\x26\x1e\x29\ \x63\x55\x92\x91\x33\xd7\xc1\x76\x5e\x5a\x86\x34\x01\x41\xc5\x33\ \xb1\x0c\x60\xb0\x79\x02\x39\x69\xf6\x0d\xd3\xe1\x42\xe9\x31\x2e\ \x54\xb1\x66\xca\xfd\x68\x48\x19\x25\x78\xef\x6d\x13\x7f\x59\xa8\ \x49\xc9\x5a\x6f\xe1\xc1\xdc\xb3\x0b\x25\xa0\x82\xd5\x8e\xee\x98\ \x84\x29\xda\x22\xa9\x38\xfa\x8c\x45\x35\xf3\x40\x4b\xc3\x7a\xb8\ \x50\x98\x7d\x55\x26\xa2\x71\x0b\xab\x78\x51\xa5\x28\x3f\x0d\xae\ \xcb\x2b\x4c\xef\xeb\x19\x69\x98\x50\x7b\xfc\x2c\x44\x88\xa8\x13\ \x52\xe5\xbe\xb8\x4f\x60\x74\xae\x29\xda\x7b\xa6\xe7\xff\xec\x7a\ \x92\x11\x12\x56\x8b\x72\xd8\x2d\xa3\x83\xa6\x94\x66\x71\xcc\xf4\ \x29\x53\x65\x2a\xc2\x13\x66\x6a\xd4\x3d\x2d\x8c\x2a\x89\x01\x85\ \x32\x19\x17\x4a\x3f\x26\xe8\xee\x8f\xff\xda\x93\xe7\xf6\x7a\xdf\ \xce\x2d\xf3\x05\x2a\xd8\x0f\xd6\x2b\xe3\xc1\xfb\x8c\x46\xca\x30\ \xdb\xa3\x80\x6f\x22\xb0\x88\x47\x31\x94\xaa\x50\x7b\x8b\xb5\xbc\ \xf8\xcf\x7a\x3a\xee\x4d\x34\xd4\x53\x8b\x84\xe8\xd9\xc6\xa3\x4c\ \x4d\x80\xcd\x04\x6a\x9e\x6a\x00\x9d\xcd\x40\x16\xec\x95\x6c\x08\ \x65\x21\x26\x09\xcf\x40\x49\x82\x89\xc8\x49\xd6\x61\x79\x7a\xaf\ \x31\xce\xaa\x08\xa6\xa3\x28\x2d\x9e\xf5\xc6\xdd\xf3\x68\x00\x4c\ \xc1\x7b\xb0\x9e\x41\x42\x99\x12\x4c\x62\x3f\x13\xb4\x76\xf4\xfc\ \xa5\x9e\x19\xfb\x26\x00\x8a\x40\x94\x40\x3a\x17\x2a\x24\x85\x88\ \x0a\x5d\x49\x40\xad\xbd\x2f\x14\x29\x82\x92\x96\x2e\xa9\xb0\x12\ \xcb\x09\xa9\x25\xe9\xbb\x7a\x76\x5c\x35\x31\xa4\xd4\x37\x7d\xb6\ \x28\xda\x26\x28\x64\x34\xe2\xcc\x32\x13\x8f\x14\xd8\x2f\x15\x85\ \x0b\x9d\x19\xa4\x2e\x24\xa5\x71\x7d\xfd\x93\xa0\xaa\xe0\xbb\xe5\ \xe6\x1d\xf7\x5d\xf7\x44\xf8\x58\x3f\x85\x0f\x05\x48\xeb\xee\xd5\ \xe0\x0f\x80\x15\x5a\xaf\x76\x14\x34\x05\xeb\xc3\xa0\x57\x41\x70\ \x0d\xd8\x5a\x41\xd2\x9b\xc3\xd2\x2b\x7b\xbd\xbf\x2e\x25\x1e\xbd\ \x95\x60\xae\xdd\x3f\x19\xd4\xc1\xa6\x3e\xbc\xef\xac\xe5\x91\x41\ \x09\x62\x1a\x4f\x0f\xd6\x03\x65\x84\x19\x27\xe1\x44\xdc\x5c\x28\ \x52\x0e\xf4\x09\xab\xc0\x2c\x14\x25\xbb\x25\x25\x69\x52\x9f\x76\ \xce\xab\xbf\xd0\x5b\x47\x0c\x1e\x0b\xf7\x77\x11\xce\x49\x4e\x66\ \x34\xcc\x3c\x1f\x26\x80\x09\xa2\x7a\xcd\x37\x14\x65\xc6\xe7\x02\ \x94\x21\xd2\x9a\x41\x44\x05\xa8\x62\x65\xa0\x30\x4b\x60\xfe\xad\ \xff\xd0\xc3\xf8\x5c\xc9\x40\x6f\x27\x05\x7a\xd3\x95\x4b\x9f\xb8\ \xfd\x8a\xf7\x6c\xde\x7e\xfb\x39\xef\x4a\xa0\x4b\x82\x71\x6e\x50\ \x62\xed\xa8\x1a\xd2\x48\x4d\x11\xd3\xa6\x26\x15\xc2\x7a\x46\xe9\ \xa3\x3c\x41\x5a\xef\x8e\x30\x31\x0e\x8c\x12\x1a\x6a\x9a\x30\xbe\ \xb3\xdb\xda\x26\x15\x00\xa0\x5d\xa1\x14\xb5\x66\x54\x79\x4f\x2e\ \x29\x07\x39\x0b\x36\xa3\x08\xf2\x18\xa7\xb5\xa1\xb2\xd4\xf5\xf5\ \xbf\x6f\xe1\xec\x1d\x4b\x80\xdf\x73\xe3\x82\xd4\x9b\x51\x81\x68\ \xa3\x27\x63\x47\x33\x86\x29\xac\x6f\x3a\xd0\xac\xc8\xd8\x87\x96\ \x4d\x67\x5f\x20\x26\x49\xb0\xd4\xc9\x33\x0c\x62\xd3\x4d\x67\x1d\ \x78\x22\x7e\x5c\xb3\x38\x64\xde\xdf\xea\x91\x5e\x57\x8b\xda\x43\ \xe3\xbb\xf7\xf5\xb4\x17\xb1\x04\x4d\x89\xf5\x6a\xf4\xe3\x72\xfe\ \xd2\xdd\xab\xc2\x1b\x91\xbd\x4d\x40\x14\x8a\x96\x35\xea\x14\x42\ \xb0\x61\xc7\xf2\xa8\xaa\xd2\x57\xdc\xd3\x5b\xff\xd4\x38\x91\xb1\ \xfb\x63\x9b\x18\xdf\xd7\xbf\xb9\x61\x03\x7d\xdc\x30\x36\xd4\xd4\ \xe7\xe7\xed\xeb\xc3\x24\x9a\x6a\xd8\x1c\xbe\x5e\xb7\x74\x37\xdb\ \x66\x44\x51\xd8\x91\x14\x69\x7d\xf6\xad\x17\x7e\xe4\x94\x3b\xd7\ \xd4\x1a\x3a\x27\xf5\x77\x49\xb9\xa7\xa3\xa2\xa4\x2c\xce\xd6\xf1\ \x28\x41\xa6\x24\xad\x3e\xf9\x95\xf1\x78\x3c\x1a\xe5\x83\x94\x90\ \x4e\x4b\xe8\x3c\x76\x4c\x6e\x5f\xaf\x30\xa1\xf7\x6a\x47\x19\xea\ \xd2\xf3\xca\xa3\xc7\x4d\x9a\x4c\x74\xea\xfa\x5f\x57\x16\xbe\x20\ \x24\x0d\x14\x25\x9b\x74\x63\xf5\xd2\x69\x6f\xfd\xd6\x23\x4b\xa7\ \x2f\x5d\x79\x1a\x12\x4e\xc3\xb4\x0e\xb2\xca\x23\xd9\x1d\x71\x9e\ \x41\x40\x87\x76\xdf\xe4\x2c\xa9\x33\x4f\x44\x4f\x44\x4f\xf9\x87\ \x21\x4c\x37\x0f\x40\x4e\x11\xd5\xbf\x68\x0a\xdb\x6b\x67\xfc\xff\ \x54\x5b\x0e\x7f\x14\xa0\xf2\x78\x7d\xef\xd3\x4f\x6a\x7c\x7f\x2e\ \xbb\xfb\x69\xdd\x54\x79\x65\x3c\x4d\xc5\x29\xac\x77\x9e\x49\x47\ \x10\xcf\x03\x00\x72\xe6\x98\x14\xbf\x90\xa1\x30\x31\x76\xa4\xbc\ \xaf\xeb\x52\x99\x1f\xb3\xbb\xff\xe5\xf0\x79\xf0\xc7\xbb\x93\x7a\ \xf7\x8a\x25\x21\xc0\x9e\x45\xb7\xb1\x77\x76\x74\x5b\x60\xbd\x17\ \x51\x1e\x9a\xcd\x23\x08\xc7\xee\x09\xcb\x1d\x13\x42\xa9\x50\xb3\ \x17\x01\xe3\x8c\x33\xc8\xd2\xdc\xaf\x26\xff\x79\x8f\xf4\x8b\xa4\ \xf6\x2b\x9c\xd2\xff\xa5\x72\x7e\x61\xb8\x10\x96\xe6\x86\x19\x03\ \x5b\x11\xe5\xbb\xb8\x51\x80\xcd\x2e\xfa\xe9\x8e\x3d\x93\x31\x11\ \xf6\xa9\x8c\x02\x13\x1d\x82\x60\xd3\x96\xfd\xcb\xe3\xfb\xbf\x1d\ \x3f\x1f\x48\xc5\xe0\x27\x7f\x04\x24\x3f\xfc\x21\xbd\x5e\x93\x26\ \x09\x51\xd4\x8e\xe3\xd3\x1c\x04\x5d\x58\x20\x80\x08\xf3\x9c\xd6\ \x0f\x8c\x6f\x02\xce\x2c\x95\x38\xff\x4e\xfa\x4f\x2b\xa1\x28\xbd\ \xca\x55\x11\xc0\x4d\x27\xa6\xf7\xe7\x45\x50\xaa\x08\x60\x4b\x55\ \x27\xb2\xbf\x2b\xdf\x7f\xdd\x96\xe3\x3b\xee\x7b\xe8\xe4\x64\x72\ \xff\x0b\x1c\x79\xd2\xe6\xce\xc2\x7c\xdb\x63\xcb\x85\x31\xf7\x0b\ \x8c\xb3\x53\xeb\x01\x94\x68\x09\xa0\xc4\x7a\xc6\x99\x6e\x64\x21\ \x0d\x08\x31\xca\xa5\xd7\x1e\xd8\xbf\x1c\xc0\xff\xfd\x23\xdf\xdb\ \xbe\x8e\x50\x8f\x69\xb7\x9c\xd4\x75\x9c\x65\x51\x72\x94\xff\x1c\ \x61\x9a\x92\x6f\xfa\x55\xa0\x3c\xf5\x07\x27\x17\x2b\xda\x88\xd0\ \xf4\x32\x0a\xac\xc6\x85\x7a\x5d\xca\x1a\xa9\xf1\xcd\x64\x49\x49\ \x87\x18\x65\x78\xd2\xbc\xaa\x8a\xf2\x11\xb2\x9a\x6c\xbb\xa7\xb4\ \x07\x09\xcb\x69\xbb\x96\x02\x44\x42\x9c\xbc\xf3\xfb\x11\xd6\x13\ \x93\x80\x93\x2c\xd2\xa6\x03\x07\x5e\x73\xe6\x25\x41\xa0\x46\xa9\ \xc9\x94\x04\xf9\x5c\x30\x7b\x65\x1f\x3d\x59\x75\x02\xca\x38\x65\ \xbc\x9d\x84\x34\x67\x7d\x8f\x93\x23\xe7\x4b\x2f\x7c\x99\xa2\x54\ \x21\xad\xa3\xaf\xff\xdf\x5e\xef\x1d\x97\x53\x78\x7f\xed\xd7\x44\ \xb9\xc7\xa2\xf7\x47\xf7\x4f\xa2\x65\x2b\xc8\xaa\x82\xe7\xf2\x32\ \x32\xea\x5d\x28\xd0\x32\xeb\x81\x95\x06\x84\x14\x14\x25\x5b\x7a\ \xa8\x87\x21\x42\x4a\x16\xea\xbf\x08\xdb\xba\xed\x9b\x9f\x7f\x95\ \x10\xfb\xb3\xd3\x82\x92\x64\x7d\xb5\xfc\x92\xc7\x6f\xa6\xc6\x23\ \x45\x11\x3e\x03\xaf\xa7\x28\x74\x3f\x7b\x78\xf3\xc7\x08\xa9\xb2\ \x7e\xab\x58\x52\x72\xf1\x45\x41\xef\xf2\x39\x8d\x80\x6e\x5a\x7d\ \xe3\x89\x97\x91\x90\xf2\x56\xd9\x19\xd2\x5f\x59\x1e\x04\x94\x0c\ \x95\x3c\x53\xb3\xd4\x34\x33\x4f\xe1\x51\x19\x0d\xb3\x9d\xcd\x73\ \xe5\x86\x8d\xe7\x9d\xf7\xba\x57\xc4\xb0\x26\xe0\x45\xb2\xec\xbb\ \x6c\x49\x69\x6f\xaf\x14\x65\x10\x6b\xf7\x4c\x47\x55\x9e\xde\x4d\ \x42\xca\x99\xfc\xb7\x5a\x98\xff\x7d\xef\x34\xd7\xb4\x23\xe3\xec\ \x2b\x49\x59\x95\x84\xf5\x90\x51\x10\x14\xac\xb7\x35\xa6\x67\x37\ \x63\x87\xb8\x98\x21\xf7\x94\xad\x22\x77\x9f\xb1\xf3\xe4\x5d\x1e\ \xf9\x96\x3b\x1e\x9a\x0e\xca\x30\x2e\xfa\x1a\x51\x6e\xd5\x47\x4e\ \x8b\x44\x6d\x4a\xee\xfa\xe3\xcb\xe3\x72\x96\x72\x8e\xf5\x05\x7a\ \x09\xce\x26\x45\x45\x46\x5d\x8a\x0c\xac\x17\xac\xaf\xf8\x8e\x21\ \xc4\x9e\x1c\x42\x5a\x9c\xc7\x42\xca\x51\x49\xa0\xa8\x10\xf4\x86\ \x93\x8b\xe4\xe2\xcf\x3f\x75\xb6\x03\xfe\x50\x40\xfa\xbd\x68\x90\ \x2e\xd8\xb4\x69\xfd\x59\x47\xf6\x4f\xab\x82\x04\x13\x65\xc6\x21\ \x51\x94\xa0\xda\x4d\xa8\xca\xa8\x53\x7b\xeb\x42\x7f\xb3\x67\xc7\ \x8d\xa3\x14\xe1\x5e\xc9\x91\x3a\xe1\x64\xad\x27\x4d\x5a\x3d\xa5\ \x48\xea\x91\x1e\xc6\x89\x3c\x88\xe9\xd2\xea\x87\xa6\x55\x35\x0a\ \x32\x51\x24\x32\xa0\x45\xfa\x21\x39\x7c\x50\x54\xed\xfd\x42\x7b\ \x27\xba\x4d\x5c\x28\xf1\x5f\x70\x62\x3c\xb8\xd8\xc8\x3d\x64\x9b\ \x23\x9f\xd9\xb2\x84\xa1\xaa\xb4\x61\x5c\x96\x6b\x4e\x79\xa6\x87\ \x71\xc6\xe3\x15\x29\x54\x5a\xa0\x20\x46\x04\xc5\x40\x85\x11\x30\ \x69\x51\x5f\xbf\xd0\x99\x71\x96\x71\x54\xd3\x41\x47\x3e\xf3\x99\ \xeb\xde\x46\x5e\x6f\x39\xcd\x80\x94\x85\x94\x08\x4a\x23\x5d\xc3\ \xae\x7e\x73\x70\x4a\x18\x3f\xdb\xfb\xd0\xb4\xd0\xf2\x8d\x24\xa0\ \x0c\x46\xc9\x3b\x6a\x51\xcc\x72\xde\xc8\xa8\x37\xf8\x71\xe6\xd9\ \x41\x8a\x30\x6e\x9e\x2e\x8e\x06\x79\xba\xf5\xdb\x91\x7e\x53\x78\ \xa6\x22\x3b\x9b\x22\xb9\x8a\x71\x92\x8b\x8a\xd0\x31\x36\x1d\xe9\ \xdd\x74\xc9\x03\xd3\x71\x55\xa2\x20\x46\xe4\xac\x81\x92\x9f\x28\ \xa3\x02\x32\x7c\x01\x26\x3d\x5d\xbb\xa6\x6d\xdb\xb6\x21\x01\xf1\ \x55\x52\xe1\xa7\xa6\x03\xb1\xf5\xc1\xef\x7d\x6e\xda\xd8\xd3\x73\ \xc0\xb7\x3a\x5a\x52\x0d\xf5\x8c\xb9\xdf\xfb\xf4\xb8\x18\x57\x99\ \xd6\x42\xc9\xe1\xd7\x60\x3d\x8a\x0d\xc0\x0b\x7d\xc2\xb0\xe9\x07\ \x0c\xe4\xf0\xef\x26\x3d\x9f\xcc\x7c\xd3\xd6\x8f\x7e\x65\xc2\x45\ \x11\x45\xfa\xcf\x51\x1a\xc6\x61\x9f\xf7\xe8\xa9\xbd\x55\x59\xdc\ \xd4\x1d\x7a\xb9\xc2\x3c\x16\x54\xc7\x54\xee\x08\x64\x0d\xd6\x0b\ \x56\xd5\x76\x7d\x68\xf2\x40\x1c\xca\xd3\x85\x79\x62\x99\x28\x77\ \xb5\x3c\x68\x79\xd0\xb0\x08\x54\xe1\xf4\x6d\x9a\x52\xc8\x29\x30\ \x39\xef\xc0\x86\x6f\xde\xf2\x8e\xe3\x8f\x2f\x0e\x0a\x94\xc1\x6b\ \xa1\xa8\xe2\x04\x49\xd5\x81\x0a\x3a\x55\xa7\xbe\xef\x2b\xb0\x96\ \x14\x75\xa6\x01\xa9\xfc\x2b\x27\xad\x40\x4f\x02\xfd\xad\x11\xe7\ \xf9\xbb\x4c\x06\x76\x12\x60\xd2\x36\xbf\x1a\x55\x83\x54\x6b\xa1\ \xa6\x66\x9f\xc8\xaf\x49\x51\x29\xd9\xa3\xca\x0c\xc6\x23\xa5\x03\ \xb4\x7e\xbb\x4c\x40\xef\x1b\xe5\xb9\x21\x69\xf8\x2c\x22\x41\x0f\ \xf1\x8e\x19\xe3\x86\x07\x26\x05\x67\x1f\x52\x64\x73\xa4\x76\x23\ \x93\xb3\xa3\x80\xc9\x5e\x9e\x50\x8a\x32\xc1\x92\xa2\xd0\xe4\xd8\ \x8e\x4c\x09\x47\xce\x6f\x22\x9d\x1e\x35\x70\xe6\xf9\x65\xdb\x57\ \x5d\x1a\x53\x24\x87\xd8\xad\x62\xdc\x74\xe3\xf2\x24\x2f\x09\xa9\ \x1d\x35\xff\x98\xeb\xed\xec\x38\x94\x29\x60\x66\x4b\x0a\xbd\xb7\ \xbc\xf7\xfa\x34\xcb\xe1\xff\x02\x09\xde\x38\xe2\x53\xf9\xbc\x2c\ \xe6\x33\x76\x86\xcf\xed\x4d\x90\xb7\x6c\x79\x68\x3a\x1e\x65\x9c\ \x22\x61\xa4\x29\x83\x44\xfb\x03\x98\x0f\xc5\x27\x4d\x52\xd6\x53\ \xf4\x34\xa7\x0e\xae\x30\x69\xfa\x12\xe3\x20\x82\x38\xb8\xd8\x60\ \x3c\x1b\x9f\xa7\xf3\x22\xfb\xd1\x8c\x92\x01\xe4\x64\x94\xab\x25\ \x2d\xc9\xe5\x5b\x7a\x32\x41\xc5\xe2\x03\x25\xa9\x11\x94\xa9\xaf\ \xda\x9e\x98\x7a\x58\x78\x80\xd5\x87\x79\x5c\x07\x7f\x81\xd3\x83\ \xba\x19\xf9\x5b\x46\xb7\x69\x9a\xa7\xe9\x65\x31\x16\x3a\x76\xe4\ \x6f\x26\x8b\xa3\x9c\x73\x10\x0a\xd3\xd7\xc0\x13\xc9\x3a\x93\x75\ \x72\xc6\x89\x78\xcf\x5c\x77\xca\x24\x30\xc5\x46\x79\x3b\xaa\xa1\ \xe8\x46\xde\x16\xfe\xdd\xd6\x2c\xbb\xec\xab\x6f\x3f\x28\x5b\xdd\ \x13\xd3\x28\x04\x97\x7e\xf4\xe4\x64\x1c\x41\xc6\x78\x19\x4e\x94\ \xb8\x6f\x68\x8a\x7c\xb3\x58\x28\x57\x66\x12\x3b\xaf\x20\x55\x99\ \x7c\x7e\xb4\xbb\x41\x2b\x8e\x55\xaa\xd0\xcd\xf8\x69\x9a\x77\x55\ \x45\xc0\x7b\xc9\x94\xa2\xc6\x44\x5f\xa4\x48\x4a\xd1\x12\x7e\x09\ \x7e\x34\x82\x12\x21\xb0\xb5\x50\x48\x29\x70\xc2\x33\xd1\xb3\x55\ \xdc\x0c\xc6\xbe\xe0\x6e\x2c\x4a\x49\x8f\x96\x02\x92\x16\x85\xa9\ \x6f\x26\x67\x84\x0c\x9c\x02\x55\xab\xcb\xfa\xb3\xd4\x04\x5c\x6b\ \xf2\x7d\xf9\xe6\x63\x36\x15\x7c\x78\x3a\x96\xbd\xbd\x1d\xa5\x08\ \xa9\xc1\x89\xa2\x98\x56\x97\x5b\xb5\x70\x54\x42\x15\x25\x87\x51\ \xc6\x8c\x1a\x11\x05\x50\x57\x15\xf9\xec\x55\x8a\xf2\x8e\x9f\xec\ \x99\x8e\x07\x06\x64\x64\x32\xd9\x77\x12\x55\x61\xbe\x11\x50\xc6\ \x19\x16\xfd\x91\xe6\x0b\xeb\x51\x06\x67\x9a\xd2\xe2\xcd\x13\x83\ \xec\xd4\x7a\xd3\x57\xf0\x1b\x97\x5c\x73\xcd\xde\x9f\xec\x08\xd9\ \xa4\x4a\x7d\x7d\x06\xa4\xba\x0a\x4a\xb1\xa3\xbe\x6e\xc7\xe0\x4a\ \x9a\x2d\xbd\x47\x13\x21\x33\xde\x34\x11\x82\xac\x1d\x76\x14\xf9\ \x51\x0e\x9c\x06\xd5\xce\xaa\x6a\xc6\x24\x88\xa0\xd0\xeb\x48\x20\ \x1d\x45\x59\x99\x6a\x53\x10\xb7\x6d\x1a\xca\x7a\x6f\x9e\xe0\x98\ \x1c\xdb\x91\x1f\x35\x05\x46\x7a\x78\x47\x6f\x4a\x62\xbe\x89\x2c\ \x4c\x6f\xee\x23\x3d\xc1\x77\x5a\x7c\xdc\xcc\x93\x17\x87\x13\x24\ \x9d\x93\x76\x74\x39\xe7\x0c\x45\x5b\xa8\x91\xab\xd7\x03\xac\x36\ \xe3\x99\x1f\xc0\x02\x2d\x07\x25\x02\xd2\x82\x85\x1d\x85\xf2\xaf\ \xe0\x7a\xbd\x2b\x34\x69\x2a\x8f\xcb\x37\x60\x3c\x06\x68\x4a\xb0\ \x0d\xf3\x99\xf7\xec\x41\xc1\x7a\xd8\x27\x8d\x9e\x34\xd4\x03\x4e\ \xdb\xab\xd1\x59\x15\x19\x18\x9c\x0c\x35\x7c\x13\x46\xcf\xf8\x30\ \xc1\xfb\xc6\xa8\xf5\x45\xe1\xc8\x1c\xd6\xf7\x35\x7a\x02\x40\xe3\ \x40\x81\xd3\x67\x9c\x6d\x0d\x5c\xa1\x6a\x37\xae\xd7\x79\x74\xe5\ \xa6\x62\x49\xd1\xec\xc6\x32\x2a\x54\x05\x41\x4b\xeb\x42\x79\x12\ \x71\x15\x30\x94\xde\xb5\x11\x8a\x32\x71\x44\x02\xb4\xb3\xf2\xa2\ \xd6\xec\xad\x29\xd5\x89\x56\x22\x29\xdc\x83\xaa\xc9\xcc\xd9\x83\ \xa8\x44\xc5\x30\x89\xfd\x8a\x14\x86\xc9\x08\xa9\x4e\x57\x5d\x36\ \x20\x69\x65\xd6\x13\x50\xb5\xa4\xa0\x66\x9c\x8e\xf5\xd0\xfa\xe8\ \xf0\xd1\x44\xe8\x34\x09\xec\xc7\x9e\x29\x31\x30\x31\x7d\x02\xc2\ \xb2\x5f\x0b\x62\xda\xe7\xec\x6d\x13\xd4\xdf\x1b\xa8\x08\x13\x7d\ \x4f\x3c\x1d\xd4\xe1\xec\x65\x38\x6f\x18\xef\xf2\xa3\xcc\x78\xf8\ \xa6\x94\x58\xaf\xed\x59\xb0\x50\xa8\x85\x81\xa2\xbc\x00\x28\xfc\ \x7c\x6d\x8c\x93\xb3\xf8\x0a\x31\xf1\x3a\xef\xeb\xf5\x68\x79\x33\ \xea\xc4\x2f\x6d\xcc\x14\x94\x76\x28\x5c\x87\xb5\xe6\x45\x03\x13\ \x4f\xcd\x3e\xda\x1d\x81\xd2\x6f\x44\xf4\xab\xb3\xd8\xe0\x1b\xde\ \xe2\xc8\x2d\x4e\x70\x5d\x80\x5a\x9c\xe8\x29\x89\x8f\xa5\xe7\xb0\ \x0f\xd6\x4b\x82\x84\x16\x97\x86\x50\x80\x06\x2b\x32\xce\x68\x22\ \x94\x27\x95\xaa\xad\x89\x4a\x4a\x7e\x19\xd6\x17\x66\xbb\x2c\xbd\ \x4f\x08\x49\xbc\x17\xa5\x1f\x7d\x1a\xeb\x84\xbe\x17\xb7\xaf\x67\ \xcf\xe4\xdb\xdb\x09\x67\x06\x19\x05\x2d\xad\xa4\x3a\xbe\x87\x07\ \xca\x94\x04\xe4\x5d\xee\x93\x1f\x24\xc5\x13\x63\xee\x8d\x15\xb5\ \xad\x1a\xae\xdb\x91\xbb\xc5\x33\x18\x7c\xab\xf7\x82\x4f\xdf\xfc\ \x82\xd6\xab\x79\xf2\x32\x0a\xb4\xba\x57\xa6\x6f\x2f\xa8\x70\xf9\ \x36\x1e\xb5\x03\xfd\xcd\x99\x97\x51\x90\x35\x55\x74\xa9\xd1\xa3\ \x1a\xa6\x49\x56\x6b\x99\xb0\x9f\x77\x18\xfd\xbe\xde\xfb\xfa\x2e\ \xb4\x71\x69\xf9\x50\xeb\xe8\x49\x54\x5d\x96\xc4\x91\xd4\xb5\x0e\ \xc3\x86\xd2\x62\x15\xc9\x1f\x6c\x98\xaf\x4c\xaa\xf8\xa0\xa8\x0b\ \x4a\x8a\xb8\xfa\x6e\x4c\x75\xa1\x82\x12\x40\xed\x90\xe8\x09\x35\ \x26\x40\xed\x6e\x78\x5b\xd1\xdd\x3f\x4a\x20\x55\xf3\xa1\xf5\x08\ \x4c\x0a\xae\xde\xd0\xce\xd9\x84\xf8\x89\xb2\x1e\xb3\x9d\x77\x62\ \x96\x73\x61\x84\xd4\x3e\x71\xbe\xc9\x24\x9b\x87\x36\x35\xee\xb8\ \xce\xab\xb7\xf6\x08\x99\x71\x5a\x20\xc5\xae\x5e\x95\x49\xe3\x51\ \xc8\xa9\xed\xc3\xc7\x61\x26\x43\x4d\x79\xe4\xe5\x73\x4f\xf2\x44\ \x68\x99\x60\xcd\x54\xa7\x28\x84\x76\x68\x5b\x6d\xce\x18\x6a\x43\ \x6b\x5a\x15\x6c\x9c\x84\x11\x38\x01\xd6\x0c\xa3\x46\x78\x7b\x8a\ \xa6\xba\x46\xe9\x54\x19\x05\x54\xf6\x45\xea\x3b\xfd\x56\x84\x57\ \x06\x5b\xf3\x0b\xc3\x22\xf5\x81\x33\x76\xa1\xde\xdb\xfb\xde\x3c\ \x36\x4c\xcd\x63\x6c\x99\xe1\x3a\x3e\xbd\xa7\x07\x4a\xa4\x49\x8c\ \x98\x82\x9a\x32\x05\x2d\x6c\x3e\x0c\x3e\x2d\x7e\x5f\xef\x3c\x13\ \xc3\xf5\x5b\x50\x21\xa8\x85\xe9\x73\x3a\x25\xa4\xd3\xf8\x7b\x17\ \xe5\x81\xb0\x4e\xef\xbd\x79\x32\x7d\x4f\x30\xa2\x19\x93\x15\xbc\ \x77\xa7\x9a\x64\x5a\xf9\x04\xf3\x91\xd7\x61\x90\x16\x2e\x60\x26\ \xde\x27\xe9\xea\xca\x37\xc6\x8e\x52\xef\xa0\xc0\xc5\xe0\x04\x59\ \x31\xe3\xba\x4c\x4b\x57\x44\xf7\x6e\x6f\x87\xed\x08\x40\x5a\xdb\ \x04\xc5\x9f\xd7\x01\xe1\x07\xe1\xe4\x98\xc4\xb0\xbf\x40\xa0\xd7\ \x86\x09\xe1\xa4\xc5\x9f\x6d\xe8\xc3\xd3\xeb\x6a\xa0\x76\x07\x25\ \xa0\x68\x65\xa5\x54\x39\x8f\xc0\x99\x61\x02\x69\x89\xc0\xd9\x31\ \x5e\xd9\x5e\x93\x7d\x42\x58\x0a\xa2\xca\xe2\x72\x25\x40\xab\x7c\ \x6f\x6b\x7d\x6b\x08\x4a\x9c\xc0\x70\x91\x93\x22\x2d\x60\x9c\x7c\ \xea\xb1\x4c\x40\x52\x83\x12\x91\x13\x62\xd1\x44\x20\xfa\x5a\x18\ \xa0\xba\xb6\x4c\x06\xca\x10\xad\x6f\x2a\x79\x16\x66\x17\x2a\xae\ \x09\x3e\x54\xa5\x14\xd9\x92\x76\x80\x07\x39\xb5\x81\xb3\x8f\x97\ \x3b\x3d\x13\xcc\x3d\xbf\x52\xdd\x88\xba\x5c\x49\x81\x93\x0d\xc6\ \xd5\x1b\x51\x85\x57\x72\x4a\x4f\xe0\xd0\xa7\xd1\xd2\xa6\xb9\x40\ \x2b\xbb\x5b\x96\xed\x27\x0c\x7e\x6e\xad\x28\x07\x25\x90\x53\xd4\ \x99\x12\x5e\x98\xe3\x3c\xbb\xe3\xe6\x59\xc1\xa1\xa5\xf8\x5e\x34\ \x7d\x7e\x94\x16\x2f\xa7\x80\x69\xad\xe8\xbc\x13\x2d\x00\x8b\x30\ \xaf\x34\xd1\x93\x2a\x13\x60\x7a\x5d\x72\xe2\x49\xb3\x57\x0d\x2c\ \xcc\x54\x81\x32\x3d\x69\x31\x32\x8a\x04\xa9\x1b\x7c\x88\x8d\xb0\ \x39\x9c\xf0\xf3\xb6\x58\xef\x8f\xaf\xce\x73\xa1\x79\x05\x21\x85\ \xb7\x87\xbd\xf7\x81\x33\xa6\x09\x9f\x6a\x9a\x20\xab\x97\x53\x8d\ \xef\xb1\x5b\x02\x5d\x11\xe1\xe1\xa0\xb5\x09\x9c\x09\xa7\x0f\x47\ \x89\x90\x58\xad\x29\xb5\xb9\xd1\xd4\xee\x43\x15\x62\x39\x67\x63\ \x87\xd0\x49\x00\xfb\x5a\x83\x37\x53\x28\xda\x02\xa7\xe1\x7f\x66\ \x37\xa2\x88\x43\xc3\x37\x12\x79\xc0\x89\x5d\xa8\xb8\x7a\x53\x6c\ \xe8\x13\xf3\x01\x18\x3a\x6f\x63\x92\xee\x3e\xfc\xca\xf0\x3d\x15\ \x8c\x10\x53\x9f\x23\x73\x1b\x7b\x79\xd5\xb0\xf8\x9a\xd2\x49\xb0\ \xf6\x85\xf9\xb6\x5e\x6f\x30\x9a\xca\x9d\xa7\xa8\x69\x76\x84\x2a\ \xe9\x23\x0b\x52\xb9\xcd\x9f\x19\x30\xa0\x51\xa9\xcc\xe6\x1e\x15\ \x31\x5f\xaf\x4f\x3a\x14\xaa\x33\xf7\x34\xb0\x28\xf1\x9b\x01\x06\ \x54\xd5\xfc\x19\x4a\x9f\x7e\x12\x5f\xef\x6c\xa8\x60\xb5\xf5\x7a\ \x07\x53\xa0\x82\x9c\xd0\x7a\x2b\xa2\x78\x29\x35\x37\x86\xfa\xf8\ \xaa\x5c\x83\x7b\x73\x30\xd4\x2a\xbd\xf8\x78\xe3\x9c\x4a\x13\x3b\ \x71\xab\x86\xad\xd7\xeb\xb2\xd2\xe2\x0c\x6f\x77\xd2\x16\xa3\x83\ \xf7\xe9\xc6\x2f\xd3\xc1\x13\xb0\x9f\x51\xf2\x2c\xe0\x99\x8c\x88\ \xaa\x69\xd2\xa9\x58\x35\xed\x88\x82\x18\xc2\x67\xa8\x92\x77\xf9\ \x62\x9e\x2a\x30\x1f\x8c\x17\xb4\x5b\x37\x73\x39\x7c\xdc\x14\x52\ \x41\x29\xd3\x46\xa4\xc6\x3d\x41\xe5\xe7\xd5\xeb\xbd\xd6\xbb\x1a\ \x23\x7c\x3d\xf4\x09\x04\x55\xaa\x1e\xe5\x12\xee\x63\xa3\x66\x36\ \x0f\xfe\x93\x26\x06\xec\xa8\x2c\xf4\xc0\xd8\xbb\x7a\xbd\x7e\x43\ \x8f\x90\x18\xf7\xad\xc3\xde\x85\xc2\xd1\xaf\xa2\x8e\xe1\xe5\x09\ \xf6\xa2\x4e\x4a\x4d\x1c\x0a\x3b\x2a\x4f\x93\xf5\x7d\x5f\xaf\xc7\ \x00\x54\xb0\xde\x36\x68\xf9\x34\x09\x9c\x68\x1a\x3b\x4b\xae\x5a\ \x1e\x29\x4c\x94\xeb\x95\xb0\x96\x9a\xb0\xa3\x8a\xd6\x0c\x5f\xaf\ \x87\x4a\x81\xef\xfa\xb6\x5a\x2f\x45\x11\xbb\x15\x81\xce\xc7\x5e\ \x83\x83\x13\x77\x63\x41\x51\xc0\xe2\x5b\xb4\x33\x3b\xaa\x7a\x54\ \xfa\xf3\xf5\x88\x9f\x00\xd2\x15\x1a\x7c\xd1\xd6\x88\xa7\x2e\x02\ \x75\x2b\xf5\xee\x3c\x96\x2b\x44\x28\x94\x4d\x8f\x5a\x01\x80\x6c\ \xaa\x36\x01\x6b\xbb\x5e\xef\x93\x8e\x0c\xd5\xda\x52\x5f\x15\x01\ \xeb\x19\xe9\xef\x92\x71\xaa\x2c\xeb\x51\x5f\x2e\x9c\x8c\xf2\x5b\ \x9f\xba\xfb\x7c\x3d\xcc\x93\x13\x52\xa0\xf5\x9e\xc9\xe0\x6c\x7b\ \x7a\x3a\x3d\x31\x46\xf3\x8b\xb4\x8e\x42\x46\x7d\xcc\xac\x3f\x7d\ \xe9\x30\x81\xb3\xa2\xf5\x5e\x49\x81\x9a\xcc\x38\xf6\x4c\x6d\xa4\ \x02\x35\x7f\x77\x6c\xa3\x9f\x36\x1b\x75\x78\xf8\x44\x1e\x10\x9b\ \x94\x8e\x2b\x36\xb5\xc2\xe6\xc4\xd9\xd0\xee\x4e\x32\x5b\xb2\x85\ \x69\xd2\x68\xf4\x14\x11\x52\x82\x08\x9c\x85\xfa\x28\x0b\x18\xa7\ \xab\xe3\x8b\xbf\x91\x26\xd1\x0f\xd4\xeb\x15\xa7\x05\xeb\xec\xa8\ \xdf\x33\xf9\xf8\xf9\x28\x9f\xf3\x4b\xcd\x29\x56\xdf\x9e\x93\xb2\ \xb3\x47\x4b\x11\x74\xde\xd7\x43\x50\xaf\x57\xbd\x07\xeb\xe7\x1f\ \xb7\xf4\xca\x84\x6b\x3f\xf2\xad\x69\x46\x5d\xad\xe3\x8c\x71\x42\ \x4c\x39\x90\x2a\x3a\x7a\x9e\x12\x6c\x46\x6b\x7f\xf3\x0b\xaa\xe0\ \x1a\x45\x81\x98\x4d\x29\xed\xcc\x38\x2b\xf3\x53\x03\x97\x99\x9f\ \xfd\x5f\x6c\xb6\x9f\x10\xc2\xd4\xb0\x5e\xea\xf5\x5e\x52\xa5\xa3\ \x40\x45\xc0\x2a\xfe\x90\xa6\xb6\x64\x3a\xd6\x03\x9f\x0f\x4a\x8c\ \xb1\x87\x19\x15\xda\xd2\xc9\x8b\x07\xa7\x50\xa5\xd4\x68\xbd\xf3\ \xf5\x4c\x4a\x7e\x9b\xce\x76\xc8\x69\xbf\xa1\xee\x5c\x1d\x01\x4a\ \xb4\x3c\x7a\x3b\xea\x92\xe3\x30\xa3\xf9\xe5\x7c\x26\xf2\xf0\x22\ \x36\x76\x50\xa6\x00\x95\x24\xc0\xb4\x91\x41\x04\x5c\x46\x47\xcd\ \x28\x32\xb9\x3e\x6a\x06\xeb\x8d\x07\xa5\xed\x32\x50\xfa\xfb\x89\ \x8e\xca\x59\x0c\x75\xf6\x50\x78\x28\x7b\x6a\x23\x67\x95\x50\x18\ \x51\xb7\xb7\x77\xbe\xde\x27\x72\x7d\xff\x68\xd5\xd0\xfa\xd4\x15\ \x1c\xbe\xaa\x3d\xe2\x83\x34\x85\xc6\x23\x5f\x42\x20\x4d\xe0\x0c\ \x88\xde\xdd\x0f\x55\x93\x6c\xae\x84\x96\x95\x4e\x4c\xb1\x20\x1e\ \xad\x2c\xeb\x61\x47\x53\x39\xcf\xff\xaa\x09\xb4\xbe\x48\x29\x7a\ \x72\x22\x0a\xad\x47\xd5\x0e\x2e\x14\x04\x35\xe6\xb3\xef\xe2\x7b\ \x20\xf5\xc5\x06\xe7\x42\x53\x28\xd3\x2f\xdc\xbc\x97\x0e\x32\x0d\ \x44\xeb\xc9\x34\xa5\x85\xb4\x91\x5a\xde\x9b\xbd\x28\x40\x22\x24\ \x21\xa4\x90\x50\xef\xeb\x51\x17\x69\x83\x85\x8c\x0e\x5c\x86\x8c\ \x66\x96\x6d\x14\x77\xcf\x8c\xe7\x08\xaf\x19\xe5\xa5\xa6\xb1\x00\ \xed\x83\xbc\xd2\x34\x46\x94\xe5\x13\xf5\x7a\x97\x26\x01\x46\x13\ \x38\x07\xde\xd3\xec\xa8\x2e\x0b\xde\x37\x50\x53\x36\xeb\x92\x20\ \x55\x8d\xc2\x40\xec\x6c\xfc\xbc\xa3\x28\x2a\x4c\x88\xa0\xbd\x42\ \x79\xc5\xef\x59\x80\x88\x98\x91\xc7\xcb\xfe\x84\x8f\xb5\x89\xd6\ \x4b\x69\x59\xf5\x08\x68\x6b\xa3\x51\xdd\xf7\x3d\x59\x5f\x6a\x82\ \x7b\x73\x08\x83\x5e\x6e\x73\xd7\x41\x53\x64\xf3\x32\x71\xf7\x47\ \xaa\x54\x98\xcf\xda\xd4\x11\xdc\xd7\xa8\x81\x32\x4c\x9f\xcb\xe3\ \x60\xc4\x86\x79\xbe\x6c\xdb\x7d\x65\xa2\x2b\x88\x65\xd4\xa7\xa1\ \x89\xfc\x0c\x31\x29\xc1\x94\x5a\x53\xe7\x26\x34\x61\x8a\x92\xeb\ \x94\xc9\x87\x06\x90\x17\x23\xa0\x8a\x54\x13\x26\x18\xf3\x4f\x8b\ \xf4\xda\x7d\x64\xa9\x1c\x0a\xd6\xd6\xac\x38\x1f\x8d\x31\x29\x1b\ \x28\x34\xe7\xf1\xbb\xb0\x4a\xaf\x31\x09\xa7\x74\xf4\xe4\x8d\xbd\ \x4c\x09\x38\x09\xa9\x93\x4e\xab\x4f\xbe\xba\xec\xbb\x4a\x22\x55\ \x09\xea\x29\x10\x52\x51\x77\x5a\x0d\x45\x7d\x17\x21\x2f\x35\x3d\ \x2e\xca\xc7\xdd\x9e\x3f\x37\x1e\x85\x1d\x95\x27\x45\x2d\x14\x11\ \x3e\x01\x25\x21\x5d\xff\xa6\x43\x24\x9e\xa6\x74\x8b\x74\x6e\x22\ \x13\x45\x31\xbf\xc1\x23\x6c\x66\x25\xc6\x03\xa1\x8b\x47\x3d\x45\ \xad\x12\xc1\x96\x32\x52\x3d\x4d\xf9\x21\xa9\xdc\x35\xda\x88\x5c\ \xed\xce\x10\x14\x22\x6a\xb7\x4c\x48\x96\x00\x28\xaf\x2e\x1e\x45\ \x83\x56\x77\x87\x0e\x4f\x69\x7e\x79\xa3\x00\xbd\x6d\x14\x94\xc9\ \xd2\xb3\x9c\x53\xb0\xef\xa2\x28\x94\xca\x44\x24\xa6\x82\x03\x7c\ \x00\x69\x1b\xb4\xa0\xf6\x30\xf6\xaa\x51\x7a\xb0\x72\xf5\x04\xc5\ \x30\x6f\x9e\x92\x04\x38\xf9\xa3\x2d\xa1\x0c\x0a\xde\xc9\x27\xf0\ \x5d\x3c\x3a\xaf\x5e\xcf\x4c\xf7\x1d\x10\xff\x16\xcf\x3c\xec\xdb\ \x33\x2e\xb4\xd8\x10\xde\x04\xd5\x53\x15\x22\x0a\x9d\xf7\xea\xa4\ \x67\xeb\xbd\x71\xf2\xf1\x28\x6e\xd0\xf2\xd9\xbc\xf8\x12\xdd\x17\ \xb0\xff\x7a\xe2\xbe\xc9\x38\x2b\x1a\x09\x7c\xa3\x4c\x2d\x5d\x42\ \xfc\xe4\xa2\x7c\x98\xa7\x2e\xcd\xf7\xf1\x28\x28\xda\x1d\x39\xbb\ \xb6\x27\x71\xf5\xf3\x65\x14\x05\x46\x5d\x69\x76\x75\x11\xce\x2d\ \x88\xcd\x8f\x47\x73\x9b\x24\x4b\x79\xb5\x5a\x8f\x41\x04\x85\x81\ \xf2\xaa\x64\x3c\x3d\x6f\xef\xc0\xfd\x21\xd2\x63\x50\x7b\x9f\x27\ \xf1\xe4\x5c\x21\x11\xbe\xdf\xd0\xe3\x2e\x1d\x53\x06\x67\x8a\xa2\ \x5e\xef\x7b\x89\xd0\x55\x22\x37\x0e\x03\x25\x16\x93\xc9\xe3\xcf\ \x9f\x1f\x8f\x56\xad\xb3\x22\xec\xde\x19\xaf\xf8\xfa\xcc\x92\x14\ \x62\x5a\xd2\x3f\xac\xaf\xa7\xc9\x42\x0a\x82\xf2\x00\xcb\x91\x23\ \xa3\xb0\xcf\x5f\xf7\xe4\xc2\x51\xc9\x94\x54\xd6\x3c\x19\xbe\x9b\ \x7e\x5c\x8a\xf2\x05\xa9\xab\x82\xab\x07\xc5\xa1\x16\x1c\x08\xae\ \x51\xaf\xf7\xbe\xde\xb0\x7f\x7e\x3c\xea\x7b\x4a\xe0\xef\x6d\x0b\ \x21\x6a\xf5\xb6\x5e\x6f\xbb\x20\xa0\x4e\xa5\x3f\x66\xad\x12\x0a\ \xe6\xfb\x02\x23\xae\x4b\xf5\x09\x08\xb7\xfd\x24\xe9\x0c\xd3\x75\ \xe2\xf3\x52\xb8\xbe\x3c\xc8\xa7\x46\x4f\xa2\xf5\xf3\xce\xd7\x1b\ \x5f\xef\xfb\xf0\x01\xd2\x1a\x7c\x0c\xa8\xbc\x70\xbf\x68\x5f\x97\ \x09\x19\xa5\xd5\x94\xc1\x21\x9d\xb8\xdf\xd1\x07\x4e\xfa\x78\xee\ \x83\xf7\x18\xae\xc7\x19\x03\x38\xa1\xf5\x2c\x9f\xa6\x5e\x5f\xf2\ \xe2\x8f\x36\x98\x0c\xa9\x73\xf5\x4a\xd5\x46\x82\x5c\x41\x02\x63\ \x2b\x93\xcb\x05\xb1\xbc\x4d\x50\x6c\xee\xe4\x4a\x9d\x22\x33\xf7\ \x7a\x02\x61\xd1\x2a\xd7\x1b\x6f\xef\x60\x12\xb3\x91\x23\x0d\x08\ \x69\xb1\x66\xc9\xd7\x99\x7c\x75\x19\x9a\xc4\x0b\x43\xe4\x29\x8f\ \xb2\x5e\x2a\x77\xae\x57\xc3\xd5\xeb\x25\xd2\xc3\xd0\x3e\x6c\x36\ \x4e\xf1\xed\x38\xff\xc1\xd3\xaf\xb0\x06\x0a\xf5\x7a\x0c\x25\x24\ \x7d\xc4\x2f\x08\x29\x8b\xa8\xd6\x99\x8c\xd6\xab\x12\xb9\x7a\x7d\ \xc0\x6d\xf8\x8e\x32\xb8\x37\x50\x42\xce\x4f\xd3\x65\x27\x65\xd7\ \x35\xf3\xe1\xb1\x15\xb1\x2c\x6b\xb5\x12\x21\x8d\xab\x75\x26\x5f\ \x0f\xa3\xc5\xd5\xeb\xad\x74\x9a\xd4\x38\x28\xab\xb4\xa4\x37\x5d\ \xb7\xf8\x83\xdc\xd0\xd4\xd6\xeb\x81\x15\xdd\x59\x7a\x9c\xa9\xc8\ \x54\xe9\x71\x62\xc4\xf6\x95\xf0\x9d\x54\x73\xeb\xf5\xc0\x8b\xd4\ \xb8\xc2\xb4\x29\xb2\x2b\x22\xd0\x6f\xde\xa5\xfa\xb4\xc2\x9b\x27\ \x98\x52\x65\x3d\x88\x9a\x05\x94\x71\xe2\x46\xf4\xce\xb6\xcc\xba\ \x95\x22\x87\x84\x22\x26\x51\x8a\x12\x68\x6f\xf0\xf9\x3a\xbd\x0b\ \xc6\x1d\xbe\xde\x3a\x26\x46\x8a\x03\x8c\xe4\xef\x35\x35\xae\x51\ \xb3\xf6\xe1\x03\x66\x82\xb7\xf8\xfb\xda\x79\x26\x01\xaa\x77\xcc\ \xf3\xe3\x62\xbd\x15\xbd\x63\xc7\xf7\x8f\xef\x72\x7d\x4f\x83\xf9\ \xfd\x8e\xb8\x7e\x14\xca\xc4\x24\x45\x1f\xbe\xad\x82\xf2\xca\xb9\ \x71\xa7\xef\xa8\x86\x09\xd2\x8b\x77\x7d\xbe\x79\x2d\xba\xd6\xc1\ \x93\x2a\xed\xab\x31\x85\xd6\x0f\x9a\xea\x94\x32\x31\xf5\x95\xb5\ \xc2\xe6\xd4\xee\x42\x11\x94\x80\x9a\x6a\x4b\x6b\xb9\xac\x02\x37\ \x95\x08\xb3\x59\x3e\x77\x07\x90\xf1\x62\xc5\x63\xa3\xbe\x6f\xc3\ \x1f\x76\x27\x20\xaa\xbc\xeb\x70\x83\xdc\x9a\x07\x92\x82\xa2\x08\ \x9e\x3b\x2b\x22\x04\x51\x6f\xd6\xf0\x09\x88\x7e\x5c\xae\xdd\xac\ \xa7\xce\xc7\x96\xf1\xba\x0d\xb9\xf8\xf6\xe7\xaf\x48\x6c\x4f\x89\ \x17\xd0\x94\x4f\x04\xd3\x84\x3a\xb1\x8c\x0a\xc0\x02\x6a\xef\xa0\ \xea\x20\x88\xae\xbf\x9d\xd8\xdf\xb8\x3c\x6f\xbf\x9e\x1a\x00\x21\ \x2f\x3e\x87\x2f\xb8\x1b\x1b\x17\x8a\x2c\x2e\x86\x22\x05\x48\x90\ \x54\x6e\x56\x80\xde\xe3\xa0\x90\x9e\x69\x00\xd2\x12\xc4\x44\x16\ \x3f\x08\xe5\xab\x01\xf4\x78\xde\xb7\x61\xf3\x3f\xf6\x74\x3c\x96\ \xb4\x33\x25\x95\xcb\x37\x66\x34\x5a\x91\x73\x01\x8a\x3a\x98\x6a\ \xec\x81\x12\xc2\x59\x8b\x95\x47\x7f\xc1\xc5\x04\xe4\x9e\x1e\x09\ \xa9\xb9\x76\x78\xe5\xb9\x20\xf6\x75\xb9\xeb\x1a\x77\x22\xca\x12\ \x8a\xab\xb1\x0b\x5a\x94\xa2\xa6\x0f\xdf\x79\x7b\x60\x25\x6d\x52\ \xa8\xa0\x68\x18\xd7\x7e\xe0\xc0\x8e\xa7\x27\x94\xca\x5e\x34\xac\ \x5f\xb9\x04\xa0\x0f\x8e\xda\x14\x35\x26\x1f\xe7\x99\xb0\x1b\xa1\ \xa0\xb4\x68\xe6\xc6\xad\x80\xa6\xba\xa9\xaf\xe5\xd6\x61\x04\xce\ \xfe\xa2\x92\x3e\x3d\xf1\x26\xc2\x2f\xd1\xed\x86\x14\x97\x20\x70\ \x5e\x17\xad\xfd\xea\x0b\x28\xd3\x89\xeb\x47\xdd\xbe\x1e\x09\x1d\ \xc6\xcc\x8c\x27\xa7\x94\x15\x85\x6d\x1b\x86\x73\xc2\x10\xb8\x12\ \x94\xbc\xf8\x22\x45\x7a\x48\x8e\x0a\x4e\x89\xee\xde\x4b\x42\x9a\ \x5a\x9d\xff\xad\xb3\xef\x7d\x7c\xb1\xba\x90\x85\x74\x61\x06\x15\ \xcd\x2f\x66\xe0\xcc\x65\x26\x38\xc5\x7f\x4a\x49\xa4\x2c\x70\xaa\ \x0d\x5c\x97\x6c\x33\x53\xf4\x9d\xab\x82\x9d\xfc\xfe\xd8\x18\xfd\ \xbe\x50\x54\x0d\x3e\xdd\xbc\x35\x6a\x02\xd5\xe7\xe3\x54\x7d\x4f\ \xe7\xc9\xa8\xed\x7e\xd0\x02\x8e\x70\x3e\x43\xdc\x2c\xb5\x26\x37\ \x12\x5e\x03\xce\xeb\xf5\x02\x60\x44\xf9\x52\x65\x8a\x00\x13\xf1\ \xa0\xeb\x70\xd1\x3c\x33\x1e\xc9\x51\x08\xa9\x95\x51\x8b\x35\x55\ \x17\x0a\x19\x15\xa5\xb7\x94\x94\xd4\x38\x30\xd6\xba\x0d\x79\x54\ \x80\xbe\x2f\x67\x98\x8a\x93\x40\x92\x52\x45\xdf\xf9\xef\x6a\x49\ \xa1\xf9\xfc\x5b\x58\x78\x4f\x00\xfa\xcc\xd4\x50\xd4\x85\xf8\x80\ \x2b\xa9\xf1\x82\x63\x67\x68\x3f\xf6\xf5\xce\xda\xcb\x66\xf9\x1b\ \x02\x74\xf5\x68\x16\x94\xf4\x31\xd5\xdb\x7f\x1c\x42\x6a\xfb\x9b\ \x17\x16\x4e\x87\x25\xc5\x76\x79\x00\x90\xe8\x28\x41\x12\x42\x29\ \x4a\x53\x8c\x13\x81\xe5\x37\x46\x8d\x2a\xe3\x4b\x5f\x96\xeb\x63\ \x26\x33\x65\x7a\x89\xb0\x69\x88\x47\xbc\x37\x42\xaa\x50\x99\xa2\ \x1f\x84\x90\xce\xef\x29\x81\x94\x42\xeb\xd5\x90\xc6\x51\x32\xe0\ \x8e\xa3\x6c\x38\x24\xb2\xa6\x1a\x7f\x80\xac\x4f\x14\xd2\x7f\xfa\ \xc6\x33\x3f\x0b\xdf\x6f\x58\xda\xdd\xd7\xab\x20\x58\x9b\x3e\x45\ \xb7\x1b\x5a\x65\x62\x8a\x92\x90\x3e\x31\x32\x5b\x91\xaa\x6a\xb3\ \xdd\x1c\x6a\xa1\xa7\x60\x88\x92\x79\x40\x25\xd4\xed\x96\x25\x1e\ \x89\x9f\x74\x7d\xf2\x8e\x2c\xf9\xab\xc6\x85\x8a\xbf\xa3\xd1\x28\ \x9f\x0c\xfc\x12\x0b\xa9\x6f\xd6\x58\x58\xf9\x69\xb6\xa4\x6f\xf9\ \x44\x88\x5f\x36\x0f\x29\x70\xf6\xaa\x84\xba\xc8\xcc\x3e\x21\x3d\ \x6a\x4e\x89\xb5\x46\xd3\xd5\x27\x7d\xaa\xf4\xef\xb4\xf7\x15\x1e\ \x13\xef\xc4\x3d\xd9\x6c\x49\x33\x90\x13\x8d\xae\x24\xa4\x5f\x57\ \x51\xaf\x11\xe1\x9b\xae\x71\x34\x37\x67\x7a\xc5\xbc\xf0\x9e\x21\ \x16\x90\x4d\xc0\xd5\xea\x72\xad\x5e\x34\x32\xf6\x82\x63\x3d\x3b\ \x5e\x5e\x0a\x49\xfb\x43\x15\xd2\x9d\x4d\xe9\x8c\x6c\x0f\x60\xdf\ \x12\x76\x4e\x18\xd7\x8c\x7b\xa8\x82\x3b\x6b\x2f\x66\x94\x70\x66\ \xda\xa3\xa3\x77\xe9\xe8\xde\xbe\x9d\xd2\x61\xaf\xc4\x40\x77\x01\ \xde\x86\xb5\x5b\x0e\xdf\x76\x06\x7d\x1e\x29\x84\xf5\x11\xf0\xa7\ \xc8\x92\xc2\xd9\xd3\xa5\xae\x1f\xfc\x52\xeb\xb2\xf2\x53\xf7\x8c\ \x18\xa8\xab\x34\xb5\x94\x09\x96\x09\x59\x3c\x6c\xf2\x8c\xbd\xaf\ \xd3\xf2\xca\x55\xbb\x98\xa4\x9f\x57\x98\xab\x1f\x5b\xae\xb2\x32\ \xe1\xab\xaf\x36\x8d\x59\xfb\x89\xaa\x46\x48\xf9\x3a\xdf\x3f\xff\ \x82\x45\x79\xd5\x35\x57\x4f\x46\xc3\xee\x7a\x3d\xc3\x74\xa9\xf1\ \xc2\x16\x43\x8d\xd6\x27\xfc\xf9\x4e\xbe\x75\x7e\x42\x57\xd1\xad\ \x11\x9c\x47\xa6\x03\xb1\xa4\xef\xa6\xfb\x0e\x23\x49\xc5\x94\xbe\ \x28\x96\x14\xe5\x9b\x68\xea\x01\x72\xef\xcd\xfb\x17\x2b\x57\xaf\ \x77\xd6\xd4\x50\x94\x7d\xbd\x3f\x2d\x80\x91\x28\xb2\xde\xe7\x52\ \x0a\x48\x99\x83\x67\x4e\x73\xf6\xf3\x72\x01\xfe\xbe\x51\x40\x28\ \x82\xba\x40\x0a\xb6\x33\xec\xf3\x6e\xff\xc6\xe6\x73\x57\x46\x8a\ \x5e\x31\x03\x79\x78\xff\x64\x67\x3a\xa4\x5b\x3d\xb5\x5e\x3f\x98\ \xd3\x98\xe9\x8b\x0d\xa0\x66\x13\xf0\x9a\x47\x9e\x8b\xaf\xa5\xc6\ \x5f\xbd\x08\x40\x45\x48\xf7\xdc\x8f\xb0\xe4\x3f\x63\x27\xcd\x34\ \xc1\x1f\xe6\x22\x2b\x74\x40\x64\xf2\xfd\x91\xa2\xdb\x9e\x21\x4a\ \x3e\x35\xe1\xbd\xe8\xfc\xde\xbc\x14\x40\xfd\x5e\x44\x3b\xc9\x70\ \xc1\x5f\x51\x5e\xfb\xdb\xc1\x50\xbe\x90\x07\xa0\x2f\x2a\xd0\xf5\ \x13\xa2\x28\xfd\xfb\x8e\x69\x8a\xd8\xe9\x1c\x8a\x54\x88\xf7\x71\ \x0e\x87\x46\xb9\xb7\xe4\x24\x01\x1b\xc7\xe3\x9d\x01\xa4\xbf\x93\ \x0c\x01\x54\x96\x81\xf9\x0c\xd5\x6e\xec\x0b\x45\x89\x1b\xfe\x96\ \x5e\xc5\xd0\xc6\x01\x68\x11\x0a\xe6\x37\xed\x23\x21\xe5\xdd\x1d\ \x79\xd1\x29\xc2\x3c\xde\xd6\x3d\x95\xf6\x69\xbc\x77\x57\x4b\xbb\ \x4f\x56\x6c\x43\x17\x16\x16\x3a\xb6\xcb\xce\x3a\x29\x35\xe9\x87\ \xe4\x78\x21\x50\x2d\xd2\x8b\xf4\x0a\xdf\x65\x2e\xe0\x8f\x47\x3f\ \xa5\x7b\x37\x33\x4a\x91\xac\xa3\xbe\x99\x1a\xcd\x2f\x44\xc0\x49\ \x04\xfa\x4b\x86\x96\x91\xf2\x6b\x9f\x9e\x24\xac\xf9\x61\xf8\x23\ \xc1\xb8\xa0\x86\x67\x6a\xf4\xa9\xb5\x05\x65\x98\x87\xce\x7b\xf8\ \x8d\x17\xde\x59\x16\xf1\x57\x28\x35\x7e\x31\xe3\x10\x8f\x75\x7d\ \x4b\x55\xce\x84\xf4\x5e\xec\x98\x77\x13\xf1\x97\x4b\x71\xf3\x00\ \x79\xe6\x2b\xa3\x4c\xaa\xd1\x0f\xc3\xa5\xc6\x5d\x1f\xbe\xad\x2e\ \x2b\xef\x81\x76\xeb\x23\xeb\xe4\x7e\xe1\xed\x11\x6b\x7a\x6b\xa0\ \x26\xdd\x7a\xfe\x45\x89\x4a\x6a\x2a\x98\x8f\xeb\x44\x2d\xe9\x86\ \x91\x6e\x98\x78\x9f\x7c\x7c\x1c\x4d\x93\x01\x39\x1e\x15\x62\xf4\ \xc9\x37\x85\xa5\x41\xcd\x6d\xb8\x55\xc3\x67\xf0\x81\x35\xb3\x3a\ \x7f\xb4\x79\x39\xf7\x1f\x93\x00\x7c\x72\x72\x30\xc2\x59\xd4\x90\ \x74\xbb\x58\x52\x15\xd2\xde\xde\x52\x02\x3d\xe6\xf6\xf2\x20\x9a\ \xfb\x25\x92\xdf\xb3\x5e\xf9\xf4\xe2\x28\x4d\x9a\x95\xf0\x05\xa2\ \x28\x80\x76\xfe\xa5\x16\x45\x87\x56\x57\x18\xa8\x43\xcf\x6e\x3f\ \xf5\xe8\xf9\x56\xae\x6e\xe1\x0d\xc9\x76\x12\xd2\x22\x29\xf1\x37\ \x30\xee\x4d\x69\xaf\x2c\x77\x2f\x3e\xbb\x3b\x79\xe9\xf5\xbb\x58\ \xed\x0e\x4c\x6b\x32\xa1\xef\xbd\xee\x7d\x8f\x8f\x03\xc8\x7e\x03\ \x25\xc2\x3c\x73\x3b\x72\xcb\x3c\xf9\xed\x08\x28\x7a\xe9\x39\x07\ \x89\x36\x7a\x43\xa5\xbe\x1f\xcc\x23\xd2\x25\xd6\x1f\xa9\x37\xec\ \x66\x4b\x1a\x63\xbd\xf2\x0f\x7b\xed\xb1\x77\x5a\x69\xd7\x63\x42\ \xfe\xa9\xe3\x7c\x58\x97\xd6\x9b\xba\x9d\x6f\x77\xe3\x94\x5e\xba\ \xf1\xd4\x1e\xc6\xc1\xb5\x0f\x4c\x26\x5f\xbc\x7a\x1f\x01\x78\x20\ \x02\x7d\x8e\xf5\x47\xa3\x92\x18\x7f\xbe\x6d\x91\x0c\xd4\xb5\xee\ \x5a\xf0\xe9\x4e\x89\xf4\x13\x7f\x09\x25\x8e\xb4\xb8\x23\x03\xdd\ \x27\x1b\x04\x24\x3c\xd3\xd1\x1e\xc6\xda\xe9\x62\x45\x96\xff\x3b\ \x14\x84\x57\x51\xf7\x4f\xe5\x4b\xfb\x19\x29\x01\xed\x2d\x07\x98\ \x6f\x45\x92\x49\x18\xb1\x76\x3a\x22\x9c\x0c\x4f\x36\x79\x18\x9d\ \x17\x7d\x6d\x73\x49\x32\x75\xa0\xfa\x03\xd2\xcb\xaf\x82\xf7\x98\ \x56\x85\x8c\xcd\xe4\x20\x23\x49\x29\xd8\x98\xca\x95\x44\xec\x38\ \xd7\x2e\x5d\x5f\x2b\xbe\x7b\x64\x03\x75\xe3\xf2\x38\x27\x98\x26\ \x87\xcf\x13\x52\x1a\x9e\x28\xa2\xc0\x89\x5a\xa8\x27\xaa\xd8\x7b\ \x68\xd2\x6b\xf7\xae\xed\xb1\x9f\xa9\x52\x35\xf7\x67\x53\xff\x73\ \xa5\x42\x7a\x2f\x97\x1c\xbe\x35\x13\x91\xf7\xeb\xd7\xf4\xae\xab\ \x0f\x1c\x3e\xb1\x67\x3a\x2a\x24\x05\x81\x3f\x19\x4b\x20\x5d\xd9\ \x76\x41\x4a\x62\xe6\x08\x46\x3b\xc2\x47\xb1\xde\xdc\x04\x50\x55\ \x2f\xe3\x90\x2d\x55\xaf\x54\x5c\x44\x94\x1b\x15\x22\xa4\x1b\x76\ \x96\x65\x91\x2c\x35\xd2\x71\x8f\x12\x1d\x57\xef\x58\x4e\x93\xb2\ \xa8\x93\xa1\xfa\x27\xa1\x28\x85\x7a\x40\xea\xae\xcb\xc4\x30\x32\ \xea\xcf\xdf\xcc\xcc\xd3\x56\x7a\x13\x7f\x77\x8c\xe0\x41\x4b\x02\ \x1a\xed\x67\x41\xc2\xb8\xfe\xd9\x6b\x4f\xf9\xfd\x1e\xc6\x43\x77\ \x2d\x6d\xd9\xf1\xd4\xe2\x28\xab\x4d\x52\x87\x86\xb4\xe9\xe8\x03\ \x90\xdd\x2d\x5a\xdb\xa8\x55\xa3\xb3\xd4\x94\x3a\x83\xbf\xc4\x40\ \xc9\x8f\x12\x45\xdf\x4c\x7f\xa5\x61\x1c\x85\xf4\x0f\x7a\x4d\xb3\ \xb0\x85\x60\x7f\x66\x39\x5d\x13\x34\xad\x91\xcb\xa3\x85\x07\x71\ \xde\xd7\x96\x2d\x3e\x6b\x47\xfd\x31\x5b\x98\x28\x13\x3e\x1d\x22\ \x2d\x07\x45\x0b\xf2\xa5\x8f\x8d\xc8\xe6\x93\x62\xa9\xdb\x3f\xb9\ \x2e\xb0\x7b\x71\x27\xe7\x1c\xeb\xda\x24\xf3\x84\xaa\x8d\x7b\x7f\ \xfa\x8e\xf3\xb0\x4d\xa0\x68\x17\xe7\x81\xd3\x8c\x92\xd3\x5e\x7a\ \xdf\x74\x4a\x0e\xf1\xe5\x93\xbc\x8c\xe3\xf2\x7f\x11\x94\x74\x8d\ \x7e\x52\xe5\xd2\x9d\x87\xb6\xb7\xa1\xb9\xd1\x95\x81\x26\x5d\x7f\ \x6b\x1d\x34\xf5\xf5\x7a\x4f\x54\xa8\x15\x00\xf3\x7e\xe8\x4f\xf9\ \x4f\x06\xde\xc9\x34\x3c\x31\x2e\x65\x7c\x98\x3c\xc0\x1d\x87\x27\ \x93\x4c\xfe\x2c\xbc\x1f\x80\xe9\xee\x7d\x41\x46\xcf\x1d\x0c\x5d\ \xe1\x32\xce\x2e\x22\xb1\x64\x7d\x56\xac\xe2\xae\xa5\x03\xba\x13\ \x7e\x62\x5c\x61\xcf\x34\xf8\xe8\xc9\xc5\xc9\x28\xd3\xb4\xb8\x69\ \x72\x16\xe6\xa3\x67\x1c\x50\x9d\xc1\x9f\xd3\x91\x5b\xe5\x08\x9e\ \x53\xdb\xad\x61\x39\x4f\x42\x6a\xc7\x6d\x93\x11\xce\xac\x9b\x14\ \xbe\xf0\x5d\xd8\x0e\xa8\xee\x26\xc2\xc4\xdd\xe0\x0d\xdf\xe4\xef\ \xd2\xf1\xe6\x1e\x09\x5d\xa8\x7d\xde\xc6\x79\xcd\x74\x94\xba\x0c\ \x44\x78\x11\x50\x73\xe5\x30\x14\x5f\xcf\x31\xa1\x29\xd7\x88\xa8\ \xa7\x27\xfa\x47\x6d\xbd\x5e\xa7\xd7\xa5\x34\xdf\x6e\xe3\x8b\xfb\ \xa6\x23\x86\x98\xa2\xff\x41\x29\xaa\xcd\x44\xad\x1a\x93\xb0\x1e\ \xa7\x83\x1c\xeb\x65\xb5\x48\xfd\x91\x60\xa7\x44\x26\x72\xe6\x48\ \xf3\xe6\x63\xbd\x7b\xee\xd9\xb0\x76\xff\x72\x55\x94\x85\xbb\xe1\ \x8d\x50\xb2\x8c\x72\xe9\xd6\xda\x51\xd3\x44\x98\x00\xad\x3f\x19\ \x4a\x0b\x4e\x36\x18\x6a\xba\x14\x04\x04\x15\x96\xf4\x92\x51\x3a\ \xa0\x3f\xfc\x47\x76\xdf\xe4\xc8\x78\x36\x65\xb4\xf6\x77\x95\xa0\ \xe3\x4d\x86\x7e\x18\x62\xfa\xb3\x22\xf0\xf4\x96\xf7\xc0\x88\x51\ \x90\x4b\x1f\x93\x15\xc5\x5d\xe3\xb6\xb6\xac\x09\x52\x1c\xb8\x83\ \x6f\xb2\x76\x34\xce\x3e\x50\x6a\xe2\x11\x54\xb5\x8d\xae\x1d\xda\ \x94\x42\x4c\x2d\xda\x22\x5a\xd2\x1b\x26\x05\x0d\x45\x9a\x5a\xa8\ \x8d\x12\x63\x69\x19\x4f\xab\xc2\x44\xe8\x64\xd8\xef\x49\xe9\x6f\ \x22\xb4\xe7\x2c\x9d\x6b\x2a\xe3\xf2\x30\x05\xf5\xb9\xa0\x2c\xdd\ \x1d\xde\x5c\xb8\x53\xb0\xd0\x7a\x7b\x86\x51\x2d\x3d\x90\x7a\x17\ \xea\xa2\x27\xd0\xd3\xc7\x4f\x5e\x48\x7f\x8f\x42\xe7\x91\xa6\x21\ \xd0\x58\x80\xa1\x76\x54\x7e\xfe\xcc\x1d\x9a\x72\xfd\x31\x46\x14\ \x70\xa0\x4f\x5e\xeb\x53\x2c\xc2\x7e\x7f\x41\x0d\x0b\xe9\x9d\xa7\ \xac\x7a\xb3\xb0\x9e\x50\xda\xcb\x89\x94\xf5\x65\xe7\xa1\x16\x6d\ \x7e\xe9\xf2\xf5\xf0\x9d\x9e\xa2\xb6\x71\x58\x57\xa5\xa3\xbc\xd1\ \xab\x83\x24\xf2\xd5\x8c\xd4\x8f\x5a\x86\xf3\xf7\x4d\x3b\xda\x77\ \x67\x6f\x0c\x5e\x50\xd3\xdc\xde\xee\xf2\xcd\xfc\xe9\x39\x8f\xbc\ \x62\xdc\xcb\x05\xa0\x4e\xed\x13\x75\xa2\xa0\x64\xd7\x4d\x84\x08\ \x43\xbd\x25\x75\xd7\xd1\xa1\x23\x97\xa7\x33\xfa\xce\xd9\xaf\x31\ \x29\xc2\x49\x4b\xeb\x13\xd0\x33\xac\xe8\x1d\xef\xf0\xa0\xb2\xb2\ \x75\x82\x2a\xf9\x4b\x5f\x86\xad\x30\xaf\x72\x59\x5c\xd5\x7c\x93\ \x78\x6a\xd0\x73\xdf\xe1\xe5\x9d\x0c\xd4\xf6\xe8\xf8\x6b\x52\x95\ \xfd\x43\x7b\xe4\x92\x1e\x47\x51\x1f\x35\xc3\xd7\x57\x4e\xe5\x9b\ \x09\x08\xf3\xb7\xac\xff\x83\x30\x52\xc2\x28\x44\x73\x5e\x46\x71\ \x54\xdd\x5d\x4a\xe5\x6e\xee\xa7\xe1\x5d\xa8\xe2\xf4\xd7\x7a\xce\ \x2f\x35\xd8\x9b\x67\x29\xd3\xfc\xec\x1b\xd6\x9f\xb5\x63\x79\x3a\ \x1e\xa4\xb3\x44\xee\xff\x37\x76\x36\xad\xb6\x1d\x45\x18\xbe\xd1\ \xab\x6b\x7f\xac\xbd\xd6\x59\xd7\xbb\xb9\xde\x13\x50\x07\x5e\x41\ \x49\x40\x74\x20\x38\x88\xa0\x01\x11\x27\x89\xa0\x44\xf1\x6b\x92\ \x20\x19\x29\x82\x1f\x71\x60\x06\x8e\x1c\x38\xf0\x27\x38\x53\x34\ \x19\x38\x0a\xfe\x80\x8c\xfc\x05\x01\x41\x32\x50\xfc\x15\xe6\x74\ \xd7\x5e\x4f\x57\xbf\x55\x6b\xdf\x3e\x7b\x9f\x73\x86\x45\x77\x57\ \x75\x7d\xbd\x6f\x09\xa4\x6d\x70\x16\xa0\x13\xd4\x31\x16\xe8\x2d\ \x85\x1e\x59\x89\x00\x20\xd0\x42\x9f\x14\xdd\xb0\x4a\xfb\xe0\x41\ \x15\x92\xd9\x12\x09\x59\x85\x4e\x17\x98\x61\x2c\xe0\xf4\xe5\xe4\ \x5b\x1b\xda\x4d\xb2\xa6\xbd\xdd\x67\x73\x6c\x47\x91\x92\x9d\xad\ \x2b\x18\x81\x51\x8f\x5c\xb0\xcb\xa3\x5d\x51\x2b\xd5\x83\x15\xd1\ \x14\x99\x42\xee\x34\x91\xab\x45\x5b\x28\xfe\xa0\xa1\x3b\xb2\x2a\ \x99\x8e\x48\x6b\xa2\x29\xf5\x2c\xc4\x3f\xf6\x90\xf6\x72\x2a\x55\ \x85\xe2\xeb\x63\x92\x1a\x65\xc9\xed\x73\xf8\x5e\xcc\x2a\x9a\x9a\ \xa6\x5e\xe3\x57\x4c\xd3\x2c\x2a\x05\xda\x4e\xba\x1d\xb9\xa3\x44\ \xf5\x48\xca\x00\xb9\x75\xba\x21\x62\x0a\x17\x04\xf6\x89\x7b\xca\ \x66\xfa\x99\x0d\x4c\x42\xe8\xb7\x14\x6e\x0d\x01\xb0\xb2\x9c\xa0\ \xc2\x96\x39\x56\x08\x86\x69\x92\x37\xa3\x0e\x59\x5f\x3e\x8a\x5b\ \x07\xd1\x14\xb2\xfe\x84\x2c\x00\x66\x47\xb1\x4f\xf2\xd6\x77\xef\ \x27\x0d\xe3\x91\x3e\x79\x81\xb9\xa1\x4a\xe6\x4c\x02\x42\x19\x13\ \xf9\x46\xdc\x8e\x8a\x05\x0f\xcd\x13\x72\x72\xf8\xc4\x76\x81\xcd\ \x47\xab\xc8\x3c\x39\xfe\xee\x61\x96\xfc\x83\x28\xbc\x8c\x3d\x92\ \xc2\x88\xea\x13\xd2\x16\x7d\x2f\xa2\x0a\xda\xb2\x01\x09\xc6\x7e\ \x09\x18\x21\x21\x20\x05\xd5\xa0\x3b\x0a\x5b\x41\xaf\x4d\x7d\x8e\ \xcc\xda\x85\xa1\x23\xcb\xfc\x3c\x30\x77\xfc\x76\xfe\x68\xc3\x94\ \x99\xf2\x8f\xaa\xd6\x73\x49\xdd\x35\x45\x5c\xb7\x56\x49\x19\x24\ \xd5\x8e\xe6\x02\xc2\xca\x93\xaf\x0e\x29\x89\x07\xf5\xf3\xb2\x85\ \xa0\x27\x54\x1e\x07\x5f\xa9\x9c\x4d\x99\xd8\xd1\x9e\x97\x8a\xa3\ \x57\x62\x2a\xc0\xe0\x8c\x39\x74\xea\xbe\x49\x94\xaa\x3e\x89\xaf\ \x84\xea\xcc\x86\x0a\x1c\x30\x5d\x2a\x92\x0e\x1e\x67\x8b\x21\x95\ \x67\x29\x99\x81\x91\x6f\xe9\x75\x7c\xfd\x8e\xc9\x0d\x32\x4f\x06\ \xe4\xb2\xea\xfc\x80\xb8\x42\x8c\xcd\x3e\x22\xaa\x52\x92\x09\x3e\ \x2c\xc7\xd7\x17\x61\x2f\x9b\x79\x10\xde\x61\xb0\xa1\x29\xdf\x93\ \xba\xa4\x4b\x8b\x15\x22\x60\x42\x4a\xa1\x44\xbf\x8e\xaf\xb7\xec\ \xbd\x94\x6c\xab\x94\x34\xe4\x06\x31\x13\xa0\xf0\xee\x8a\x22\x2f\ \x96\x34\xe1\x1f\xe5\xae\x2e\x80\xac\x43\x7c\x3d\x68\x4b\xc9\xe9\ \x15\x4d\x32\xc3\x1f\x3c\xf5\xe0\xea\x95\xe8\xcb\x65\x9c\xc5\x3a\ \x21\x2a\x1f\xcc\x53\x8c\xaf\x27\x00\x65\x4b\x57\x64\x35\x58\x11\ \xe9\x1b\x1f\x1a\xc5\x4f\xa3\x91\x35\x5c\xe2\x9b\xf2\x8f\x7a\xc6\ \x02\xc4\x54\x30\x63\x67\x9f\x7a\xac\xc8\x18\xa2\x97\xb1\xa3\x91\ \x2a\xa1\x48\xa2\xf7\x19\xff\x68\x82\xaf\xa7\x81\x30\xec\x80\x30\ \x5d\x32\xc8\xe5\x31\x47\xad\x23\x35\x0b\x6d\xf2\xa0\x70\x30\x22\ \xc2\x3f\xba\x85\xaf\xe7\x97\xb3\xa3\x7e\xbe\x80\xe8\x12\xd8\x45\ \xec\xa8\xc8\x88\x7d\x8a\x9d\x3c\x9f\xd8\xe9\x76\x74\x0b\x5f\x2f\ \x6c\xd3\x15\xc6\xc6\xfd\x54\x6d\x52\x43\xaa\x53\xa4\x70\xf2\x52\ \xfe\x51\xdd\xd1\xd8\x3c\x91\x76\x3a\xe8\x6b\x0f\x7f\xbf\x5a\x27\ \xaf\xee\xd0\xbf\x2c\x28\x3f\x31\xd3\x36\xff\xa8\x32\x68\xdd\x64\ \xf8\x7a\x35\x4d\x3c\x4f\x0e\xd9\xa0\x7b\x89\xa1\x52\xbd\x07\x13\ \x1e\xf3\x8f\x2e\x82\x0b\xbd\x8e\xaf\xc7\x6b\xc6\x79\xe2\x5d\xb2\ \xdf\xba\xb3\x3c\xf6\xa2\xf7\x68\x51\xca\x3f\x9a\x95\x18\x73\x7c\ \x3d\xaf\x13\xac\xc3\x20\xc1\x81\x30\xf6\xd6\x89\x0f\x82\x32\x1a\ \x3a\xcf\x95\x64\xfc\xa3\xd7\xf1\xf5\x09\xdb\xb8\x32\x16\x0c\x6e\ \x47\x11\xd2\xbf\x4d\x20\x6d\x49\x43\x39\x19\x73\xfe\xd1\xd3\x35\ \x7c\x3d\x0b\x0a\xd2\x11\x0f\x4a\xd5\x1d\xa5\x4f\xea\xb6\xc4\xf6\ \x3a\xf4\x48\x11\xcc\x78\xf8\x57\xf0\xf5\xe5\x83\xb0\x63\xcb\x3a\ \xdc\xc9\x29\xa1\x88\xb8\x79\x38\x79\xc2\x46\x17\x33\x3e\x51\x5d\ \x3e\x65\xf8\xfa\xb0\xcf\xf5\x68\xc2\xa2\x4c\x89\x26\x11\xd6\xcb\ \x02\x5f\x1f\xb3\x62\x13\xdb\x6b\xda\x31\xc7\xd7\x6b\x52\x07\x5a\ \x85\xf5\x2b\x03\x8d\x45\xe7\xf5\x61\x6a\xe4\x65\x09\x6d\x3f\x8b\ \x44\x6e\x88\xaf\x07\x6e\x8b\x88\xf6\x3f\x6c\x99\x6e\x61\x41\x75\ \xe4\x15\x0a\xa5\x15\x7b\xf6\x14\x9a\x79\xc9\x3d\x6d\xe1\xeb\x19\ \x84\x50\x17\x47\x0f\x5b\x26\x79\x71\x0d\xf0\x9a\x25\x49\x12\xf4\ \x09\x31\x91\xb6\x1d\xc2\xb9\x8d\xaf\x4f\xde\xfa\x31\x65\x28\xaa\ \x82\x21\x6a\x08\x05\xef\x08\x9f\x9e\x8e\x7f\xf4\xf6\x2a\xbe\x3e\ \x19\x10\x0d\xe7\xb4\x2e\x94\x49\x3d\x7c\x1d\xc1\xfb\x94\xfc\xa3\ \xd7\xf1\xf5\x88\x39\xd6\x0f\x14\xc9\x86\x1b\x91\xe5\x67\x72\x65\ \x44\xbe\x5a\x6f\x50\xfe\x51\x84\x4e\xf1\xf5\x07\x18\xb4\x5c\x80\ \x67\xd2\x9a\x88\xfe\x71\xa2\x1a\xe2\x42\xd1\x60\x63\x79\x9b\xae\ \xf1\x8f\xe6\x50\x36\x2a\xe0\x46\xa8\x81\xa4\xe8\xfe\x51\xe8\x0a\ \xe4\x7d\x92\xf8\x0e\x63\xef\x72\xce\xd7\xf8\x47\x29\x31\x26\xf8\ \x7a\x26\x33\xf9\xa8\xde\xe6\xdc\x31\x4d\x4a\xa7\xd7\x63\xa2\xc2\ \xe5\xa7\xb4\xd8\x7f\x39\xff\x28\xc1\x1d\x06\x9f\x00\x84\x1d\x45\ \xd4\x51\x20\xeb\x5e\x48\xd8\x1c\xc5\x8b\x72\x42\xfa\x51\xd6\x29\ \xff\x68\xee\xe6\xb1\xe0\x24\xdb\xa3\xf5\x58\x53\x62\x26\x2d\x85\ \xea\x70\xcb\x51\xc3\x7a\xe4\xcc\x38\x72\x23\xfe\xd1\x80\x00\xa2\ \xda\x51\xdb\x53\x84\x84\x7b\xd2\xb8\x4a\xdc\x08\x56\x2d\x88\xe6\ \x47\x8f\x42\xd9\x52\xbe\xa7\x04\x82\x71\xea\xb6\x73\xbf\x87\xfb\ \xe3\xd0\xe7\x75\x72\x98\x50\xfd\x10\x86\x28\x53\x89\x67\xcf\x0a\ \x1f\xfb\x96\x48\x69\x03\x5f\x7f\x01\xd8\x83\x13\x41\xcc\xe6\xd8\ \xa3\x34\xd9\x80\xb4\x81\x09\xf5\xe2\xf2\x1b\x09\x95\x7f\x54\xf1\ \xf5\x6a\xf2\xed\xe8\xfb\xb3\xf7\x13\x9a\xb4\x70\x47\x58\x2f\xe6\ \xc9\xf4\x28\xa8\xdf\x0c\x79\x63\x26\x51\xa8\x89\x99\xe2\xeb\xf7\ \xba\x9d\x8c\xba\xd3\x01\xd1\xae\x6c\x0b\xc0\x1a\x74\x3d\xd1\x9d\ \xbb\x00\xd2\x49\x18\xbc\x4c\x37\x31\xbe\x1e\xa7\x44\xf6\x15\x6a\ \x4f\x65\x2b\xc0\x77\xa2\x3d\xcb\x67\x9c\x39\xf8\x84\xe1\x2d\xb9\ \xa3\xf8\x79\x62\xf3\xd9\x52\x3f\x6e\x3b\x87\xaf\x32\x7e\x53\xed\ \xe8\xdc\xcc\x10\xa3\x6b\x3c\x0d\x45\x58\x4f\x8d\xaf\x97\xe7\xc9\ \xc4\xcc\x20\xc1\xe5\xeb\x58\xbe\x26\x47\xde\xbf\xb8\xae\x71\xcd\ \x38\x73\xec\xdb\x06\x1f\x2c\xf8\x7a\xf2\x92\x25\x73\x23\x8d\x8f\ \x9d\xa4\x45\x46\xb6\xd2\x75\xb6\xb7\xf9\xfb\xb9\x4f\x3c\xf1\x41\ \x9f\x32\xa7\x64\xa7\xf8\xfa\x4e\x9b\x50\xa6\xf0\x8a\x32\xb1\x85\ \xc1\x7c\xed\x1d\x75\x53\x06\xe2\x61\x2d\xf6\xc1\xc7\x07\x78\x25\ \x9e\x53\xd4\xf3\xc4\x8e\x3a\xe6\xbc\x60\x98\xb1\x9a\x51\x74\xa9\ \x2e\x2c\x68\xc7\x44\x48\x10\x9a\xb0\xb7\xe7\xf8\x7a\x74\x1e\xfb\ \x24\x05\x1c\xa4\x15\xdf\xc4\x98\x08\x69\x7c\x72\xbc\xd8\x02\x12\ \x42\xca\x65\x91\x28\xf4\x14\x46\x76\x72\xf4\x08\x8b\x98\xa2\xf6\ \xd8\x51\x98\x54\x58\x45\xe3\x7d\x0e\x7f\x50\xea\x51\xfb\x2f\xc3\ \x8a\xb0\xc0\xd7\xfb\x58\x04\xd3\xc4\x0f\x02\x73\xf8\x75\x2b\xe1\ \x79\x34\xbd\x72\x7c\x15\x4e\x46\x79\x45\xa9\x31\x0b\x83\xd6\x4d\ \x8c\xaf\xc7\x3a\x89\xa7\xc7\xd1\x87\x73\xee\xca\x9a\x64\x06\x06\ \x7e\xbe\xcc\xb5\x55\xe0\x55\x0e\xb7\x44\xa3\x28\xd6\xb3\xad\x44\ \x76\xeb\x8f\xef\x19\x77\xf3\x99\xb8\xa0\xee\x09\x75\x1e\xbe\xef\ \x73\x25\x99\x9b\xf3\xe1\x67\xf8\xfa\x68\x2b\x19\x1a\x29\xec\xed\ \x2d\x6f\x9e\xce\x35\x75\x43\x0e\xab\xcc\x01\xf1\x6c\x92\xc3\xdf\ \xc6\xd7\x7b\x07\x1f\x0b\xda\x19\x27\x64\x85\x37\xcf\xcf\x3c\xe3\ \xf0\xcd\x69\xae\x60\x3b\xa5\xc3\xc7\xde\xb3\x36\xf0\xf5\xf6\xe5\ \xec\xdd\x4a\x95\x1e\x65\x12\x97\x64\xb6\xdf\x0b\x3f\xb3\x28\x93\ \x7d\xc8\xe2\x67\x7c\xf8\x8a\xaf\x57\x7f\x74\x64\x5f\x51\xfb\x89\ \x69\xeb\x8d\x5f\xca\x20\x0c\x2e\x29\xf1\xb2\x9a\x27\x0d\x42\xf3\ \xf9\xf5\xdb\xf8\xfa\x91\xbe\xa7\xc2\x8f\xab\xed\xa3\x13\x75\x11\ \xb6\xd5\x5d\x52\x57\xb3\x4b\x4e\x5e\xfa\xc9\x6e\x25\xae\x8f\xf1\ \xf5\xda\xaa\x01\xf1\x6c\x3c\x4d\x4a\x03\x26\x3d\x7a\x64\xf5\xa2\ \x6e\xd7\xeb\x73\x7c\xfd\x6e\x0f\xe7\x2c\xe3\x8c\xd5\xc9\x23\xa5\ \xe3\xcc\x92\x6f\xc8\xf5\x6c\xf8\x45\x9f\xd4\x8a\xea\x24\x46\x9d\ \x5f\xaf\xf8\xfa\xbd\xb8\x7a\x8e\xca\x55\x75\xaa\x6a\x7d\x5f\x11\ \x25\xe9\xe8\x5e\x7b\xc5\x06\x02\x0a\x8e\x76\x34\xc7\xd7\xab\x4b\ \x42\x68\x6f\xdf\xee\x65\xba\x44\x23\x38\xa6\xed\xc2\x1f\x9d\x3b\ \x7f\x34\x8f\xf0\xd4\xc3\x57\x34\x1b\x62\x6e\x9b\x27\xb8\xf3\xcc\ \x86\xc2\xe3\xac\x61\x72\x5c\xbc\x21\x45\x66\x9f\xed\x7a\x7d\xab\ \xf5\x7e\x36\x38\xde\x28\x5e\xbe\x8c\x5d\x9e\x68\xce\xe2\x09\x95\ \x45\x70\xa7\x0b\x9f\x64\xd9\xe4\xc3\x6f\xb5\x5e\x0d\xa9\x7b\xeb\ \x35\xe5\x8c\x87\x3f\xb4\xc9\x52\x15\x90\x70\x19\x4b\x9a\xcc\x6c\ \xb8\xed\xf8\xf0\xc3\x51\x08\xbb\x36\x91\x7b\x84\x7e\x74\x54\xb5\ \x67\x49\x26\x4f\x94\xc9\x61\xee\x74\x54\x8b\x1e\x3c\x5a\x1f\xe3\ \xeb\xe3\x72\x28\x6f\x93\x32\x68\x91\xbc\x67\x2f\x35\x3b\x4e\xbc\ \xa4\x45\x26\x01\x38\x08\x1f\x7e\x8c\xaf\x4f\x1a\x5f\x98\x79\x84\ \xdf\x5c\xfd\xbc\x2a\xe2\xe4\xa0\x96\x62\x48\x17\x18\x0b\x36\x07\ \x1a\x2b\x1f\x7e\x8e\xaf\x97\xc4\x73\x11\x96\x9f\x78\xfe\x49\x55\ \xfc\xde\x3a\xe1\x2d\xd3\xde\x8e\xf2\x83\x6a\xc8\xb5\x9e\xe5\xf1\ \xf5\x28\x13\x05\x3b\x52\x10\xb5\x20\x26\x64\xe3\xf8\xf8\x2e\xad\ \xb7\xac\x6f\x3d\xde\x53\x94\x79\x92\xfd\xbc\xd5\x7a\xbd\xe2\xeb\ \xf5\x8e\xc2\x3a\x1d\x28\xfe\xd4\x06\xcc\x7a\x47\x81\x34\x30\x2a\ \x18\x95\xf7\x61\x68\x7f\xf8\xd4\xeb\x63\x7c\x7d\x18\x2a\x37\xb9\ \xa7\xa3\x97\x72\x98\xf0\x46\xd0\xa6\xa8\xce\x98\x03\x58\xb3\x29\ \xc1\xdb\xf8\x7a\x5b\xea\x3d\x51\x60\x74\xc3\xb9\xa4\x75\x78\x0c\ \xcc\x13\x08\x56\x9f\x7c\x22\x89\x2f\x4a\x2f\xf5\x7a\xe2\xfa\x48\ \xce\xa6\xa5\x24\x9e\x69\x3b\x55\x8d\xaf\x5a\xb4\x62\x43\xe9\x28\ \xd1\x66\xc7\x00\xd3\x12\xbd\xa2\x32\xbf\x5e\xeb\xf5\x87\x5e\x4a\ \xbe\x91\xb0\x36\xf8\xaa\xe2\x81\xa7\xbc\x2d\xd3\xa1\x2e\x63\xd8\ \x7a\x3e\xbf\x9e\xb0\x8e\xc8\x49\x56\x3f\x6c\x9d\x3a\x38\x4f\x28\ \xda\xef\x82\x11\x92\xb8\x33\x9d\x25\x12\x87\x6a\x6d\x39\x9f\x5f\ \xcf\xe9\x87\x99\x32\x24\x0d\x0a\x77\xae\xed\x69\xf2\x31\xe8\x52\ \x23\x27\xd0\xe0\x9a\xd0\x63\x3f\x7d\x5b\x89\xcc\xaf\x37\x01\xa3\ \x1d\x1d\x11\xf0\x78\x64\x47\xb5\x7f\x94\x87\x14\x8b\x8f\xb0\xbe\ \x55\x43\x79\x1d\xa9\x8c\x64\x7c\xf8\xfa\xd8\xdb\x57\x63\xbc\xe3\ \x31\xf6\x48\x10\x51\x03\x3b\x90\x57\x46\xfc\x81\x83\x2f\xea\xf4\ \xb4\xf5\x7a\x8f\x61\xf5\x7b\x6a\xed\x3a\x91\x8c\x48\x6a\x2f\xbe\ \x3f\x7a\x86\xb2\xb1\xa7\xf3\x90\x95\xc1\x89\x9c\xf2\x7a\xbd\x05\ \x77\xa2\xf3\x48\x7b\xf4\xbd\x3a\x5a\x67\xb2\x2b\xca\xd1\x0b\x58\ \x04\x84\xd8\x80\x94\x00\x58\xd1\x27\x66\x83\x07\xd3\x25\x08\x98\ \xa5\x99\xc8\x3e\xcc\xb9\x0b\xdb\xc9\xc6\x15\x66\x2d\x34\xf3\x94\ \xc3\xb2\xc7\xe9\xea\xd1\x6b\x4d\x4c\x22\x50\x7f\x09\xdc\x63\x0f\ \xe6\xc6\x8e\xbd\xc8\xaa\x3b\xca\xe3\x04\x7e\x99\x52\x18\xe9\x87\ \x64\xd8\x19\xf5\x7a\xbc\x3c\x1a\xc7\x15\xdb\x20\x73\xee\x48\x90\ \x18\x24\xbc\x27\xab\x30\xd3\x04\x9d\x4a\x6c\x45\xf1\xa1\x94\xfe\ \x43\xd1\xb6\x80\x58\x3d\x4e\x88\xa4\x53\x3e\x97\xed\x52\x0b\x99\ \x78\x9a\xc0\x58\xf7\x75\x50\x11\x96\x3b\x2a\xe5\x1b\x89\x97\x70\ \x4b\xe4\xec\xed\x57\x6b\x45\x11\xd5\xde\xf9\x89\x70\x69\x05\x85\ \x03\x0e\x64\x8e\xd0\x1c\xbe\xf5\x18\x7c\x85\xad\x37\x7b\x8a\xd2\ \x67\x75\x26\x9d\x1b\xa8\x6f\x3d\xe6\x74\xc2\x3e\x61\x46\xcb\xd7\ \xfc\x66\x9d\x72\xc7\x9e\xea\xfc\x7a\xa4\x24\x58\x0a\x10\x77\xa3\ \x26\x75\x1a\xcc\xdd\xc0\xae\xe2\xe8\x4d\xbd\x94\x33\xe9\x31\x9d\ \x6c\xa9\xe0\x0b\xc1\xd7\xfb\x85\xb9\x2f\x29\x09\xd6\x88\x32\xa5\ \x13\xee\x7c\xbc\x3c\xf1\x42\x31\xdb\x32\xe6\x80\x78\x36\x68\x2a\ \xda\xe2\xc3\x17\x0a\x4a\xcd\xe1\x73\xf4\xbd\x8f\x37\xc1\x3a\x8c\ \xb1\x0f\xa1\x6c\xb6\xb9\x71\x04\xba\x28\xbe\x3e\x8c\xeb\x31\xf7\ \x87\xd0\x71\x8e\xb5\x7e\x6a\xae\xa8\x09\x8a\x3a\xa1\xf5\xeb\x0f\ \x88\x60\xcd\x8d\xcb\x12\x12\x4a\x21\xa7\x41\xf3\x47\x37\x05\x41\ \x94\xde\xc4\x2c\xa2\x32\x5c\xa2\x88\xea\x41\x77\xe4\x47\xa3\x6d\ \x15\x35\xca\xd1\x37\x88\x9b\x5d\x00\x24\xf5\xe5\xfa\xfa\xb1\x93\ \x9f\x2c\x1c\xd1\xa2\xed\x42\xe1\x4e\xd3\xa3\x32\xe0\x32\xe7\xc8\ \x45\xf1\x99\xcb\x26\xba\xe4\x8d\x53\x2b\x2e\xbb\x39\x51\xb0\x35\ \x39\xa9\xd7\x03\xb2\x57\x65\x52\x31\xf1\x9e\xc2\xa2\x18\xcb\x67\ \x1d\xe3\x7a\x3d\x83\x10\x6c\x43\xcd\x71\x9e\x92\x27\x94\x08\x54\ \x23\x26\x56\xc6\x87\x6f\x1f\xea\xa1\x7e\x80\x1c\xb2\x2a\xe1\xb4\ \xb2\xa9\x90\x7c\x42\xe5\xbd\x53\xa2\x4b\x04\x25\x53\xa2\xe6\x89\ \x8a\x6d\x14\x8c\x60\xf1\x11\x16\x40\xc3\x1b\x9f\x7d\xf2\xe4\x1b\ \xf7\xab\x9c\xb0\x68\x45\x3d\x3a\x14\xc5\x00\x5e\xc5\x37\x14\xc0\ \xc0\xa9\x8f\x42\x9c\xa8\x72\xfe\x48\x28\xe3\xce\xee\xdf\x2b\xeb\ \x2f\xc5\x1d\x2d\x1f\x77\xf4\xdf\x7c\xe9\xcd\x97\x8b\x26\xcd\x92\ \x1c\x97\xa8\xbe\xc3\xd7\x4b\x36\x0f\x71\x23\x98\x90\x3f\xf8\xde\ \xd5\x1b\xc6\xdf\xdf\xab\xeb\x23\xa3\x79\x79\x45\x54\x9b\x81\xf1\ \x7c\x61\x04\xfc\x77\xa1\x4d\x4c\x30\xd6\xd8\xd2\x7e\xc5\x7c\xf8\ \x76\xe4\xf6\x4d\xeb\xf5\x9a\xd1\xfb\xc5\x85\xdd\xf1\x51\x51\x25\ \xbf\xa3\xcf\x54\x92\xe1\x93\xd9\x4e\x53\xa8\x6e\x57\xd3\x82\xd8\ \x21\x63\x9c\x0e\x71\x2d\xbe\x5e\xbf\x8a\xca\x25\xfd\xda\xf7\xdf\ \xfa\x74\x1d\xb0\x33\xc8\xcc\xab\x1f\xdd\x33\x66\xf7\x36\x66\x1a\ \xe2\xa2\xed\x76\x92\x4c\x93\x0f\xb6\x0e\x54\xee\xc8\x38\x33\x3c\ \xd0\xf9\xf8\x87\x8f\xc2\xe3\x6c\x9a\x64\x9d\x2f\xff\xaa\xdc\x85\ \x67\xd7\xfb\xa0\x6f\x68\x24\xe8\xf5\xf9\xf5\xfa\xdc\xfb\x1c\x3e\ \x27\x8f\xc1\xff\xdb\x85\x6c\x7c\xe8\x02\xbc\x8f\x17\x52\xa3\x42\ \x3f\x5d\x58\x32\x87\x5e\x46\x9f\x2b\x61\x5d\x9f\x5f\xdf\xc7\xf5\ \x5a\x10\x43\x4c\x6b\x29\x18\x2b\xa7\xeb\xeb\xc7\xa2\x4b\xbe\x57\ \xe3\xfe\x97\xff\xfc\x70\x37\xd3\x03\xa1\xfe\x7d\x9e\x1f\xdd\x9e\ \x5f\xaf\x3a\x2f\xf5\x7a\xdd\x51\x23\x4b\x9e\x6c\x4f\x7b\xa3\x3f\ \xcf\x02\x69\xd1\x0c\xc4\xd6\x5b\x0f\x6c\xfd\xee\xcb\x6c\x4b\x87\ \x67\xb2\x23\x67\x28\xe3\xc8\xc6\xae\xa8\xb0\xdf\x14\x82\xad\x22\ \xa4\xd8\xd2\xc5\x66\x49\x2d\xf6\x9a\x46\x31\x13\x9f\x56\x50\x6a\ \x8c\xfb\xf2\x29\x7f\xee\xe4\xdd\xfb\x3e\x32\xa4\xb5\xe4\xbd\x10\ \xaa\xac\xec\x1f\x77\x97\xf4\x1f\xe7\x6e\x86\x18\x84\x44\x8c\xeb\ \xd0\xb6\x12\xe2\x7a\x96\x8b\x42\x29\x31\xc2\x46\x46\x0d\x5c\x3b\ \x08\x99\x6e\xa9\x47\x3f\x7d\xa8\xb0\xeb\xed\x64\xac\x29\x72\x56\ \x92\x5c\x62\x11\xc5\xdf\x5c\x2d\xda\xf2\x34\x61\xa3\x92\x44\x2e\ \x1b\xcb\x2a\xde\xd3\x7b\x65\x44\xcb\xa9\xa4\xca\xb1\xa4\xf3\xfa\ \xb7\xca\xc9\x0c\xce\x84\xa4\x46\x47\x21\xa8\x61\x0a\xbb\x9e\xf4\ \xfd\x64\x1d\x1b\x96\xb7\x69\xfa\x5f\x99\x62\xf1\xe4\x7d\x0b\x46\ \xea\x5a\x2c\x14\x99\x7e\xf7\xb3\x32\x5c\xc2\xec\x3d\x3b\x4a\xa0\ \x1c\x2b\x13\x5b\xea\x61\x8c\xcc\x42\xd0\xc8\x3e\xec\x72\xc6\xd1\ \x7b\xc6\x5e\xd2\x3f\xed\x70\x9d\xcb\x9a\x3f\xfc\xe2\x07\xd4\xba\ \x5f\xda\x17\x3a\x4a\xf6\xd3\x61\xc3\x42\x60\x0b\x50\xb6\xc8\xe0\ \x87\x78\x26\xd7\x5d\xd2\x63\x58\x87\xea\x36\x7f\xe2\x53\xc6\xa0\ \xfb\xa8\x33\xa4\x7f\xac\xcc\xfd\xfb\x9a\xc5\xcd\xd1\x0d\x51\x89\ \x31\xe9\x71\xb6\xed\x54\x3c\x13\x47\xaf\x1c\x10\x83\x45\x77\xd3\ \x1b\x95\xa3\xff\xbb\x8f\x07\x3f\x16\xbe\xcc\xef\xf8\xeb\x79\xb4\ \x4b\xea\x5d\x12\x0f\x63\xd3\x3b\x1a\x61\xeb\x09\xeb\x38\x7a\x69\ \xd4\x22\x72\x12\x24\xdb\x1f\x0a\xa7\xfc\xe7\xce\x37\x93\x77\xf2\ \x5f\x2e\x9c\xfe\x0f\xe7\xcb\xd2\x70\x24\x62\x2c\x40\xeb\x91\x54\ \x19\x5d\xb3\x0e\x7c\x5c\x3d\xdf\x4e\x50\xc2\xd1\xc2\x51\xfb\xda\ \xc3\x5d\x51\x25\xdc\x92\xca\xe3\xff\xea\x83\x8b\x90\x72\x49\x1b\ \xca\x44\x0d\x45\x58\x32\x9a\x49\x6b\xa1\xf4\xe1\xfb\x6c\x33\xe2\ \x16\x8b\xf4\x76\x11\xf4\xd0\x45\xa1\x73\x75\x03\xce\x87\x99\x2d\ \x1d\xb6\xc8\x5f\x34\xb8\xf3\x3b\x6a\xd4\x2f\x1c\xbd\x80\xaf\x8e\ \x61\x9f\xc6\xb0\xde\xd3\xf7\xea\x73\x6f\x2e\x3e\xeb\xbf\x77\x63\ \x75\xcf\xf6\x34\x95\x2f\x42\x3a\x9c\x48\x8c\xb9\xe3\xe8\xf7\x9e\ \x9d\xe8\x70\x79\x9a\xc8\x8b\x96\xdf\x9a\x71\x46\xd4\x3a\x81\xb1\ \x3e\xf7\xc0\x05\xa6\x9a\xd0\xf9\x4a\x19\xa5\xd0\xdc\xd0\x39\x76\ \x4b\x78\x9b\xf0\x9e\xa2\x54\x89\xdb\x4e\x09\xf0\xa9\xd7\xdb\xff\ \xca\xe8\x3b\xbd\x79\xa7\x4c\x67\xfc\x51\x63\x78\x7b\xf1\x8e\x9d\ \xbc\xb9\xa2\xb3\xc4\x4b\xe8\x7c\x5e\x62\x84\x9e\xc8\x54\x89\x1e\ \x67\x28\x4a\xbc\xc6\x7b\xa7\x84\x01\x72\xd3\x3f\xab\x4f\xda\xb7\ \x3d\xbd\x6f\xf3\x4f\xea\xc1\x9b\xa0\x2c\x5f\x6d\xd0\xe0\x4e\x5a\ \x5f\xaa\xab\x27\x58\x70\x8c\xfe\x51\xf3\xa3\x53\x5b\x69\x9a\xbe\ \x5e\x2f\x69\x75\x9d\x79\xeb\x9f\xfb\x80\x10\xf4\x3c\xb6\x47\xef\ \x02\x3b\xef\xe0\xe7\x5d\x3a\x18\x27\x25\xa6\x52\x4c\x53\x92\xc7\ \xb5\xee\x2c\x0b\x9c\x3a\x3a\xd7\xe7\xb8\xa2\x28\x53\x67\x4a\x13\ \x56\x8d\x38\xe1\x0c\xa8\x6d\x6f\xb2\x82\x07\xf6\x20\xeb\x84\xf0\ \xa9\xf8\xa4\xff\x39\xfb\xdc\x78\x09\x44\x5f\x7b\xb0\x8e\xe1\x64\ \x43\x11\x31\x88\x45\x6e\x5d\x63\x01\x62\x62\x49\xc3\x77\xc9\x1e\ \x23\xcb\xe1\x53\x5f\x1e\xec\xf0\xad\x24\xfa\xf7\x62\x31\x77\x1d\ \x79\xda\xed\x2f\xdf\x39\xef\x6d\x0c\x27\x73\x25\x70\xee\xed\x77\ \xc6\x3f\x9a\x00\xaf\x76\xa0\x6d\x25\xe5\xcc\x7e\x76\x8f\x93\xd9\ \xa7\xe1\xa5\x8b\xa0\x1d\x64\xe0\x74\x53\xe0\x42\xb6\xe2\x17\x94\ \xd3\xef\x94\x09\xf1\x72\x7c\x3d\xe6\x9e\xc9\x81\x81\xcd\xb7\xce\ \xac\x17\x8a\x4f\xf2\xd6\xe3\x63\xc7\xe7\x59\x65\x34\xad\xc7\x3c\ \x21\x63\x18\x2c\xd3\x44\x88\xa8\xbc\x4c\xda\xe3\x3c\x12\xd7\xdb\ \xa0\x7d\xaf\x49\x40\xee\xc6\x7b\xd5\x79\x7a\xe8\x4f\x9e\xd9\xbb\ \x68\x7d\xca\xe6\xab\x5d\xe3\x91\x12\x01\x10\x91\xfb\x59\xe4\xc5\ \xbf\xeb\x14\xca\x10\x0d\x95\xe9\xf9\xf1\x09\x31\xdd\x00\x14\xc6\ \xad\x0b\x9e\x09\xac\x88\x94\x6f\x42\x1c\x23\x95\x5b\xcd\xe4\xea\ \x9c\x3b\x22\x26\xb3\xa6\xef\xde\xc9\xf9\xf3\x8f\xb5\xa0\x01\x3b\ \xfa\x22\xe7\xe2\xcd\x53\xd8\x98\x29\xa3\x10\x0e\x5d\x78\x47\x8f\ \x8e\x43\x83\x8f\x1a\x8b\x50\x11\xdd\xad\x95\x06\xab\x2e\x3f\xff\ \xab\x77\x5e\x7f\x74\x1a\x46\x6f\x9c\x96\x15\x7a\x65\x82\x72\xf2\ \x2e\x54\x0e\xe3\x7a\x38\x28\x95\x08\xc0\x36\xd3\x07\x23\x00\xd9\ \x34\x52\xa6\xdd\x71\xa8\x26\x8b\xe5\xc0\x0d\xee\x8e\xca\x0a\xac\ \x93\xd9\x51\x4c\x29\x09\x7c\x84\xed\x72\xf7\xc0\x59\xec\x8f\x0a\ \x0a\xee\x86\x2d\xf5\x09\x1d\xf6\x94\x30\x54\x77\xd5\x1b\x7c\x1d\ \x17\x4a\x0c\x9a\x06\x22\xf6\xc3\x3b\xca\xd1\x2b\x6e\x7d\x6c\xd1\ \x22\xeb\x2d\x5d\xea\xd9\x3b\xfa\x51\xa9\xd6\x2f\xb1\x79\x02\x76\ \xb7\x07\x0d\x8e\xa4\x0e\xd3\x40\xcb\x9b\x13\x75\x6a\xfa\x74\x82\ \x2b\xca\x80\x1e\x3d\xfa\x67\xb5\x01\x66\x1b\x69\x6b\xf0\x7a\x53\ \x27\x0f\x5f\x1d\x31\x53\x31\x26\x18\xb6\xa7\xa0\x7b\x14\xad\x2f\ \x3b\x5a\xbe\xea\x38\xa3\xf2\x89\x53\xa2\xe9\x92\xbd\x3c\xa1\xf8\ \xf9\x75\x73\xa5\x68\x3b\xd5\x73\xa6\x20\xde\xc2\xae\x30\xf9\xb6\ \xa7\xbc\xf5\xe2\x36\x2b\xab\x06\xe3\x8c\x7d\x58\x6f\x1a\x9f\xb4\ \xbe\xf8\x3d\xa5\x1d\x9b\x36\x2d\xf4\x49\x86\x98\xdb\x9e\xb2\xa5\ \x51\x7e\x54\xe3\xfa\x28\xf5\x44\x35\x4c\xc0\xb6\x88\xaa\x0c\x5a\ \x0e\x22\x16\x15\xeb\xd9\xd0\xbc\x5e\xaf\x95\x70\x85\xad\x63\x48\ \x3d\xf0\xea\xa0\x05\x46\xc5\x5b\x4e\xbc\xa0\x40\x9a\x5a\x7a\xaa\ \x75\x34\xd7\x56\xbd\x9e\x4e\xa2\x25\x05\x0c\x28\x24\x58\x8b\x37\ \x98\x52\x9c\xbc\x76\x01\xbd\x91\x46\x42\xd4\x09\x7c\xbd\x6c\x6b\ \x95\x8f\x0b\xa0\x43\x7a\x34\x4b\xe2\xc9\x15\x50\x78\xb5\x4f\x8d\ \xe5\x74\xdd\x79\x32\x46\x0a\xdf\x69\xc8\xea\xf5\x4b\x52\x0e\xb5\ \xb7\x3e\xc5\xd7\xb3\xa9\x31\xbe\x5e\x82\x26\x85\x8a\xe0\x93\x98\ \xa8\x36\x4d\x26\x64\x55\x91\x2c\x2e\x3b\xaa\x16\x9f\x17\x4a\x63\ \x7a\xad\xd7\xab\xac\xd0\xd5\xe8\x53\x6f\xea\x04\x2e\x54\x18\x4a\ \x36\xfd\xd1\x7c\x7e\xbd\xc2\x57\x3b\x88\x75\x44\xf9\xd3\x1e\xbc\ \x1c\x3e\xa8\x9b\xd9\x89\xa9\x59\x67\xbd\xa3\x58\x28\xc5\xd7\x2b\ \xa3\x4a\x06\xbb\x63\x2b\x51\x25\x7e\xd1\xaa\xe1\xe1\xd5\x82\x67\ \xca\xb0\x22\x87\x78\x11\xd9\x13\x2f\x6b\x2b\xb6\x89\xaa\x2d\xce\ \xd0\x3d\x89\x29\x75\x97\x33\xc6\x33\x51\x63\xee\xb2\x79\x27\x73\ \xa0\x76\xd1\xfc\x7a\xd4\x9e\x0d\x15\x30\xb8\x13\x11\x28\x5b\xf0\ \x32\x0d\x34\x8d\x67\xe6\x9e\xb7\x7e\xdb\x29\x21\x49\x4a\x17\x61\ \x5a\xaf\xf7\x0b\x29\x95\xe7\x4b\x47\xca\x00\x69\xda\x86\x0c\x10\ \x2e\xc7\x53\xd9\x0e\x1a\x86\x6a\xbd\x5e\x7a\xdb\x31\x50\xad\x94\ \xd0\xcc\xb7\xf7\x33\xae\xd7\x9b\x90\x5a\x15\xf1\xf5\x5a\xc1\x33\ \xe9\x56\x86\x50\x5b\xb8\x1f\xc8\x93\xcb\x0d\xcd\x40\x18\xca\xec\ \xa9\x99\x12\x13\xf3\xe6\x3a\xbe\x9e\xce\x66\x14\x5f\x2d\x69\xf6\ \x7e\xfa\x36\x7c\xeb\xc3\x8f\xf0\x4c\xf4\x40\x2c\x92\xcd\x53\xcc\ \x3a\xa0\x16\x89\x42\x15\xcd\xc2\xff\x7a\xf4\x55\x6e\x7c\xbc\x22\ \x9d\xd6\xeb\xf3\xfc\xa8\x92\x50\x9e\xbc\xac\xf6\x89\xbc\x12\x57\ \xaf\xd7\x57\x69\x90\x93\x77\x03\x26\x1c\x07\x61\xf9\x72\xec\x69\ \x10\x2a\x13\xaf\xd0\x22\xf1\x9e\xd0\x26\x93\x50\x8f\x7f\x32\x0f\ \xdf\x3e\xf6\x57\xa7\x9d\x65\xe4\xed\xa8\x52\xde\x9b\x97\x95\x18\ \x0f\x57\xfa\xdd\xd4\x1f\x65\x4f\xd9\x4e\x3f\x52\xc6\xab\x92\xd0\ \x7f\xc4\xad\x64\x6e\xb0\x29\x87\xce\x0c\x94\x80\x24\x17\xcb\xe4\ \xed\x13\xb8\x50\x3b\xf7\xf6\xfc\x17\x99\x71\x88\x1d\x8d\xb8\x15\ \xb2\xc6\x02\xe5\x7f\x00\xc6\xe8\x29\x48\xf1\x9e\x42\x5a\x8d\x96\ \xcf\x95\x3d\x45\x58\x48\xd1\x7b\x3b\x0a\x54\x40\x6f\x28\x64\xbe\ \x1c\xb9\xbc\x4e\x38\x25\xa3\x00\xc4\xec\x2f\x42\x76\xfe\xd3\x06\ \x27\x3a\x24\x94\xc2\x9d\x16\xad\x7e\x9c\x31\x22\xea\xd1\x63\xee\ \x13\xb2\x2f\xc7\x8d\x8c\x4e\xc5\xbc\xe8\xc3\x2c\x08\xb1\xed\x59\ \x8c\x88\xa9\x96\x74\xe7\x61\x42\xa0\x18\xd9\x4a\x99\xc0\xaa\x3c\ \xe3\xa3\x03\x5b\x7a\x9e\x12\x62\x11\xec\x53\x38\xa9\xe5\xff\x47\ \x8a\xa8\x96\xa8\x5a\x04\xd8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x0f\x6b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x01\xf4\x00\x00\x00\x4b\x08\x03\x00\x00\x00\xb1\xe3\x85\xac\ \x00\x00\x00\x42\x50\x4c\x54\x45\xd5\xd5\xff\xf6\xf7\xff\xda\xdb\ \xff\xef\xef\xff\xdf\xe0\xff\xe7\xe7\xff\xea\xea\xff\xea\xeb\xff\ \xeb\xeb\xff\xdf\xdf\xff\xf7\xf7\xff\xfa\xfb\xff\xf3\xf3\xff\xd7\ \xd7\xff\xff\xff\xff\xe6\xe7\xff\xdb\xdb\xff\xe3\xe3\xff\xd5\xd6\ \xff\xf2\xf3\xff\xee\xef\xff\xe5\xe6\xff\x96\xf6\xba\x85\x00\x00\ \x0e\xe4\x49\x44\x41\x54\x78\x5e\xed\x5d\xd9\x92\x24\x37\x08\x1c\ \xa4\x3a\x8f\xbe\x66\x76\xff\xff\x57\x0d\x24\x14\x52\xd7\x4e\xd8\ \x0f\x23\x47\x6c\x84\x52\x05\xd5\xf6\x9b\x9d\x83\x0e\x20\x55\x1f\ \xf7\x1f\x45\xc7\x7e\xdf\x77\x76\xf7\xed\x4e\xf7\x6d\xdf\xb7\x3b\ \x0f\xc1\x2e\x8e\xb6\x63\x3b\x88\x87\x81\x32\x2d\x94\xf9\xf9\xca\ \x05\x96\x3c\x2f\x6a\xcb\x3c\x09\x1e\xd3\x43\x9e\x71\x1c\x1f\x8c\ \xd7\xe3\x35\xb2\x29\x56\x19\x70\xc3\xb0\x0e\x6c\x6b\x5a\x13\x3f\ \xcf\xe7\x73\x65\x4b\x29\x3d\xd3\x2d\xdd\x6e\x1f\xec\x3f\x3e\xf0\ \x30\x7e\x94\x80\x8e\x1d\x9e\x84\xf5\x8d\xf9\xdf\x95\x6d\xf1\x02\ \x12\x53\xde\xc1\xbc\x72\x9e\x29\x33\xc0\xfb\xaf\x99\xc9\x16\xd6\ \xf3\x22\x98\x95\x72\xc6\xfc\x98\x9d\xf4\x51\x59\x07\xed\x41\xbd\ \x93\x9e\xd6\xf5\x29\x8e\xc9\x06\xe9\x37\x19\xcf\xf4\x71\xbb\x81\ \xf0\x06\xa4\xf7\x30\x87\x17\xe3\x58\xdf\xc5\xf1\x6b\x33\x10\xf3\ \x6d\xd1\x2e\xc8\x94\xd9\xd3\x42\xcb\x97\xc5\xfa\xfc\x4b\x1c\xa2\ \xfc\x8f\x91\xfe\x1a\x65\x54\x94\xaf\xaf\xd7\x60\xd1\x9e\x56\x01\ \x07\x79\x5a\x11\xe9\x37\xe6\x3b\xdd\xf0\xdc\x3e\x38\xda\xd9\xb5\ \x21\xbd\xc7\xfa\x2e\x41\x2e\xb1\xce\xcf\xae\xe3\xee\x91\x7e\x90\ \x71\x4e\x94\x65\x1c\x59\xc3\x3d\x30\xcf\x12\xe7\x32\x9c\xf4\x49\ \x49\x9f\x10\xe9\xc6\xbb\xd1\xbe\xca\x33\x30\xe9\x80\x44\x7a\x7a\ \x1a\xe1\x6e\xe9\x79\xbb\xd9\x14\xaf\x9c\x37\x20\xbd\x83\x84\x6d\ \x21\x9f\xd8\x8c\xf3\x3d\xd6\x74\xe7\x1c\x91\x9e\x17\x3a\x98\xf8\ \xaf\xe0\x9c\x1f\xb0\xee\xd3\x3b\xc6\xc8\xcc\x0b\xe9\x55\xa4\xaf\ \x6c\x03\x48\x1f\xd8\x56\x5d\xd3\x95\x78\x7e\x40\xba\x32\xfe\x94\ \x18\x67\x28\xeb\xb7\x9f\x26\xbd\x63\x87\xdb\x09\x3b\x38\x59\xd5\ \x85\x79\x00\x6b\x3a\x06\xf6\x71\x6c\xf9\xf0\x35\x3d\x38\x9f\x75\ \x76\x8f\x48\x9f\x46\x79\xc6\xc7\x0b\xac\x57\x91\xce\x9c\x8b\x07\ \xf1\xe0\x5c\xe7\x77\x4c\xef\x29\xdd\x94\xf7\x60\x9d\x9f\x1f\x26\ \xa0\x53\xbe\xcb\x20\x9d\xde\x39\xde\x69\x33\xec\x14\x6b\x7a\xec\ \xde\x25\xda\x63\x4d\x37\xcc\xc5\xee\x1d\xd0\xa9\x5d\x4d\xf6\x71\ \x3a\x04\x60\xdd\xa6\xf7\x97\xd0\xad\x90\x30\x07\x12\x66\x77\x9b\ \xdf\x99\xef\x26\x6b\x7a\xe7\x1c\x26\x5e\x28\x67\xf3\x75\xdd\xd7\ \x74\x1e\x94\x6d\x8e\x97\x20\xc7\x16\x1e\x98\x84\x70\x7e\x62\xf7\ \xce\x78\xf0\x33\x8a\x8d\x16\xe9\xfc\xc4\xee\x5d\x23\x7d\x78\xad\ \x80\xed\xde\x13\x3b\x90\xce\xb4\x4b\x98\xa7\x9b\x20\xf9\x9a\x3e\ \x01\xf3\xbc\x00\x59\xc7\x9c\x27\xfb\xb5\xe4\x1a\xf8\x67\x6c\x41\ \xf8\xb1\x5d\xe8\xc2\xe3\x50\x6c\x78\x9d\xab\x57\x3e\xb6\x12\x98\ \xf3\xf8\xa1\x8d\xa3\x00\xef\x4d\xd7\x40\x71\x9b\x9c\x71\xe5\x8d\ \xb5\xb1\x0d\x3a\x0a\xd2\x03\x33\x3f\xe0\x5c\x80\x3f\x82\x80\x10\ \x2c\x3e\xfb\x5f\x2a\xce\x1e\x01\x61\x1b\x9e\x0e\xda\xc1\xfe\x76\ \xc1\x5d\x6c\x07\xe5\x4c\x36\x69\x3a\x83\xdf\x08\x16\x62\x93\x7f\ \xe3\x53\x66\x03\x74\xd2\xa7\xe0\x3b\xcb\x5b\xa9\xce\xf3\xac\xaf\ \x12\x87\xbd\x41\xb8\xc4\x37\x58\x3f\x00\xda\xd8\xf0\xd6\x41\x1b\ \x50\x6c\x65\xee\xf8\x67\xb8\xfb\x1d\x26\xf1\x4d\xf8\x4d\x4e\xb9\ \x1f\x79\xf1\x6a\x86\x4e\xfa\x24\x9c\xcf\x59\xdf\xba\xb6\x30\xa6\ \xe0\x5d\x7e\x21\x75\x28\xac\xf3\x0f\x7e\x1f\xfa\xeb\x08\xe4\x63\ \xf3\x41\xf8\x4d\x94\x83\x74\x65\x9b\x30\x9b\x6b\xc4\x13\x29\xf5\ \x32\x24\xb4\xf5\x07\xf1\x60\xd7\x82\xec\x8e\x9f\xdd\xc8\x75\xec\ \x18\xd8\x98\x60\xc7\xe2\x3b\xb9\xcc\xbf\x62\xa7\xa3\x20\x2c\x95\ \xb4\x2c\x6c\x88\x2f\xc6\x82\xcd\xdc\x54\xec\xde\x1f\x23\x36\x72\ \x91\x9b\x79\xd8\xde\x5d\x73\xef\x76\x46\x5f\x93\x3d\x29\x79\xee\ \xfd\xa6\xc7\xb6\x27\xdb\xc7\xf3\x23\x35\x4d\xc3\x76\xea\xc9\x6c\ \x43\x36\x2e\x56\x38\x9c\xd3\xe9\xf0\xdd\x3b\x61\x8f\x54\x16\x5b\ \x2c\x33\x63\xa4\x33\xcf\xec\x41\x7a\x9c\xd3\x1d\xab\xda\xc0\x76\ \xee\xde\x93\xba\x74\xe6\xde\x8d\x79\x1c\xd9\x5a\x64\xe4\x3a\x34\ \x2d\x63\xb9\x77\xec\x4f\xad\xe6\x42\x1b\xc3\xcf\xe9\x9e\x7b\x17\ \x4f\x4c\xbd\x63\x0e\xe2\x05\x73\x04\xfa\x58\xe5\xde\x03\x5e\x65\ \x53\x73\xe2\x53\xe4\xde\xc5\xf0\x30\x9a\xe4\xde\x3b\x88\x0d\xe7\ \x0e\x75\x98\xd9\xeb\x73\x7a\x99\x7b\xb7\xf3\x4f\xce\x14\xbc\x6b\ \x8d\x6d\x2e\x48\x7f\x48\x72\xa6\xce\xbd\x3f\xca\x44\x2c\x58\x2f\ \xcf\xe9\x4c\x38\x22\x5d\x89\xe7\xa3\x3a\xd0\x22\xf7\xde\xb1\xbb\ \x27\xf1\x1b\xdb\xbf\xd4\xd3\x17\x1e\x5f\x19\x83\xf1\xeb\x2d\x0f\ \x3b\xcf\x73\x44\xfa\x03\x69\x58\xb1\xd7\xeb\xf7\x6f\x4b\xcc\xac\ \x2f\xa7\x7c\x18\x12\xc2\xbc\x5a\xd3\x51\x5d\xfd\x3c\x59\x6f\x44\ \x7a\xe7\x5d\x52\x4c\x36\xb3\xff\x5b\x3d\x9d\x07\x18\x07\x9c\x73\ \xcd\x92\xd5\xd3\xfb\x14\x4d\x14\xec\x02\xeb\x8a\x42\x1b\xa3\x5c\ \xd3\xad\xca\xa6\xc9\x38\x75\x40\x9b\x8d\x5c\xcf\xbd\x47\x94\x5b\ \xce\x69\xfb\xae\x9e\x4e\x19\xb9\x77\xe1\xbc\xce\xbd\x83\xf7\xa8\ \xa7\x8f\xbe\x7b\x37\xc6\x7f\x47\xc5\x45\x06\xca\xaa\x8a\x54\xaf\ \xe9\xfc\x28\xe3\x9f\xc5\xfc\xfe\xd9\x8a\xf4\x1e\xea\xc8\xbd\x7f\ \x5f\x4f\x07\xef\xc8\x7a\x44\xac\x4b\x80\x2b\xe3\x58\xd4\x27\xc7\ \xe8\x4d\x14\x0f\xc5\xef\x32\xd4\x6d\x78\x3d\x3d\xbd\xd2\x1a\xeb\ \xb9\x45\xfa\x1a\xab\x7a\x13\xd2\x3b\xe9\xc4\xb6\xe9\x60\xae\x7d\ \x8e\xa7\xa2\x9e\x4e\x45\x0e\xb3\x9e\xdd\x79\x78\x2d\xfd\x0c\xf4\ \xc7\x3c\x71\xa4\xb3\xe9\xb2\xce\x28\xf8\x1e\x94\xef\x24\xbe\xae\ \xa7\x6b\x7b\x1c\xea\xe9\x4a\xbb\xae\xe7\x0d\xce\xe9\x1d\xbb\x97\ \xd9\xb0\x77\xd7\xf4\x32\x69\xfe\x71\x83\xed\x79\x23\xcd\xcd\x90\ \x4c\xed\xb4\xa0\x8f\xc2\x76\x72\x53\x16\x4c\x1a\xe9\xec\x8d\x74\ \x9f\xe0\x1f\x4a\x3a\x12\x33\x30\xc1\x60\x47\x36\x85\xae\xea\x5e\ \x4f\x47\x59\x35\x25\xdf\xc9\xa5\x14\xc9\x99\x09\x98\x97\x05\xa9\ \xd8\x09\x96\xc5\x66\xf5\xfc\x3b\xe7\xd3\xc8\x72\xb2\x07\xbf\x49\ \x72\x49\x3a\x55\xa9\x3f\xc4\x67\x36\xf6\xba\x72\x65\x92\x42\x4b\ \xde\xd9\x9d\x6f\x2a\x4c\xba\xc8\xf8\xd9\x50\x6c\x81\x69\x2d\xda\ \xff\xc7\x01\xf4\x5f\x4b\x2e\x7d\x92\xf9\x6f\x08\xd2\x03\x59\x4d\ \x93\x04\xd1\xb7\x55\x62\xa1\x6c\x75\x60\xab\xb5\xc9\x0b\x20\x31\ \xf5\x36\x93\xc1\xd3\xa5\xbe\xe6\x53\x1f\xce\x34\x9e\xb7\x44\xc7\ \xc9\xc9\x3f\x42\xa7\x31\x7a\xc1\xe5\x5c\x4f\x72\x59\x4f\xbf\x02\ \x89\x05\x78\x79\x88\xad\x00\xc8\xb6\x2a\x9b\xfe\x0c\xc6\x81\xa8\ \xb6\x59\x9b\x01\xc8\x16\x92\xc1\xba\x2d\x90\x0d\x2b\xeb\x9d\x74\ \xd0\x3e\x63\x76\xcf\x66\x5e\x63\x8b\x19\x7e\xc1\xbc\x8e\x5f\xf2\ \xdb\x6a\x6c\x19\xb3\x3c\x3b\xab\xad\x09\xeb\xa8\xb1\xed\x79\xdb\ \x48\x3c\x83\x48\x1c\xaa\x6c\x62\xcc\xb5\xfe\xc2\xec\xce\xcf\x2e\ \x6f\x79\x29\xf9\xf4\x57\x31\xde\xab\x6c\xbd\xfb\x1d\x7f\xcd\xf6\ \x37\xee\xbb\x9a\x83\x34\x12\x32\x91\xac\x89\x1a\x25\xb4\x2c\xe7\ \x3e\x6e\x16\x6f\x3b\x39\x17\x3b\xa8\x63\x58\x72\x46\x53\xb0\xfc\ \x00\xb1\x75\x4f\x2b\x80\x8c\x1c\x12\xb1\xc8\xbd\x27\x6d\x8c\xc4\ \xd6\x1d\xfe\xa7\x09\xe8\xe7\x35\x14\x5d\x4c\xd1\x84\x07\x59\xb9\ \xb2\xe2\xa2\xf8\xbe\xef\x7d\x5e\xea\x1e\x39\x7e\x81\x74\x10\x2e\ \xa3\xca\xbd\xaf\xea\xa2\xd8\xa2\xa7\xf4\x90\x35\x99\xb4\x29\xb5\ \xca\xbd\x77\xf8\x1e\x14\xbb\xd2\x6d\x8f\xce\xc8\xa8\xa7\x1b\xbe\ \xeb\x7b\xaf\xb5\x6c\x28\xaf\x22\xc8\xd5\xd5\x0a\x17\x88\x5b\xd8\ \xa2\x9e\x1e\x5a\x36\x61\x3f\xa1\xbe\x26\x68\x58\x65\xeb\x7d\xef\ \x42\x3c\x1e\x64\xe3\x2e\x7d\xef\x60\xfe\xda\xf7\xbe\xe4\xfc\xa7\ \x6e\xd8\xc7\xe4\x2d\xd0\x4c\xf7\x58\x74\xc3\xae\xa7\x94\x6d\xb8\ \xd4\xd3\x43\xdd\xf2\x2c\xfb\xde\x3f\x7f\x9a\xf4\x9e\x9c\x71\x1d\ \x9b\x98\x32\x4e\x45\x3d\x9d\xa2\x9e\x0e\xfc\xb1\xef\xdd\xa2\xbc\ \x10\x30\x22\x23\xe7\xd9\x19\x70\xee\xb8\x94\xd3\x8b\x1e\xe8\xf4\ \x34\x2d\x5b\xd9\xf7\xde\x86\xf4\x1e\xea\x5a\x65\xd3\x73\xc9\xf7\ \xf5\x74\xf0\x1e\x7d\xef\x45\xe7\xf1\x82\x11\x79\x58\x61\x1c\x91\ \xfe\xe2\x17\x5b\x10\x0e\xc7\xf6\x4d\x3d\xfd\xc6\x3f\xa2\x87\xa2\ \x59\xa4\x77\xd2\x23\xd7\xe4\xeb\xb9\x81\xe8\x40\xfe\xdd\x38\xcf\ \x59\x1d\x31\xc3\x91\x7b\x77\xc1\x43\x31\xbd\x83\x74\x8b\x74\x4d\ \xc5\x7e\xaf\x4f\x4f\xb5\x3e\x1d\xcd\x52\x1f\x09\xe2\xf4\x56\x6b\ \x7a\x5f\xd1\x49\x4d\x13\xcc\xf7\x4d\x5d\x28\x18\x7d\x3d\x07\xe7\ \xe2\xa1\x23\x10\x03\x42\x9d\x5e\xd6\xd3\x99\x79\x44\x7a\x74\xce\ \x5c\xf5\xe9\x6b\x7a\xaf\xa7\x0b\x70\x60\x0b\xce\x9b\x91\xde\xbb\ \x67\x78\xa0\x96\xee\x1d\xfe\x78\xd9\xba\xee\x9b\x77\x21\x9b\x34\ \xb3\xe9\x98\x8b\x1e\xb9\xd9\x54\xab\xde\x23\x87\xc3\xfa\x6b\xbc\ \xe8\xd3\x11\xed\x86\xd7\x59\x4f\xf7\x9e\x48\xb8\x36\xfa\xf4\x0e\ \x57\x66\x10\x8a\x07\xbb\x86\x7a\x71\x4e\xcf\x16\xe5\xfa\xc6\x31\ \x5d\x94\x03\xba\x94\x13\xb4\x6c\xfa\x7b\x42\x39\x7d\x3a\x31\x5a\ \xe3\xcc\xf8\xba\x34\xc3\x96\x7c\x87\x6a\x15\xe2\x45\xc6\x13\xe9\ \x19\x7d\x3c\x37\x53\x15\x5c\x26\xcb\xbd\x87\x96\x6d\xae\x94\x0e\ \x53\xf6\x2e\xbe\x85\x2c\x0b\x4b\x8b\xe9\x1b\xe4\x8d\x5f\x50\x36\ \x65\x36\x7d\x18\x59\x3d\x40\xa1\x70\x21\x8a\x53\xec\xee\x55\x36\ \x79\x21\x4c\x5c\xec\xb0\xc3\xfd\x18\x3a\x2e\xa4\x33\x72\xa1\x65\ \x9b\xc5\x09\xf9\x05\x0e\xa9\xc0\xa1\xd6\x42\x78\x65\xdf\x8c\xea\ \x1b\x75\x35\x2b\xb8\xf0\x6f\x4f\x43\xd6\x40\x51\x8d\x1d\x66\x41\ \x71\x62\xca\x2f\x89\xc3\xef\xff\x05\xbd\xca\x16\x5a\x36\xb6\x77\ \x7c\xd9\xfa\x43\x47\xc6\xc8\x11\xdf\xa8\xa3\x97\x2a\x46\xd4\xd0\ \x0f\x04\x75\x09\x21\xd9\xb5\x6c\xc4\x86\xcb\x59\xc4\xe0\x37\x17\ \x2f\xb6\x97\x36\x75\xd2\x01\x68\xd9\x30\xec\x55\x01\x5a\x36\x0c\ \x53\x2a\x1f\x00\x65\xe5\x9b\x0e\x44\x78\xde\xf3\x81\xdc\xa3\x91\ \x4e\xae\xf3\x61\xb8\x96\x4d\x6c\x27\xaf\xa7\x8b\xe9\x10\x6c\x6c\ \x7f\x89\x6e\xb5\x57\xd9\xfa\xfe\x9d\xde\x7b\xe4\xbc\x6d\x08\x19\ \xb9\x4c\xe7\x39\x3d\x17\x19\xb9\x5f\x93\x9f\xd3\x97\x8b\xc2\xc5\ \x1b\xe4\x90\x7a\x67\xe7\xb0\xbc\x3b\xbf\x79\x58\xdf\xbb\x6f\xe6\ \x90\x8e\x93\xf4\xbb\x0b\x9b\xc4\x5a\x90\xde\x13\x72\xea\xd0\x08\ \x76\x07\xeb\x40\xd9\xf3\x5e\x9f\xd3\x81\x5f\x9e\x7b\xcf\xf5\xe5\ \x81\xd1\xf7\x7e\xd9\xbd\x0f\xc3\x4b\x86\xe6\xe2\xe2\x1e\x39\x88\ \x5b\x40\xba\xeb\x5b\x8c\xf5\x56\xa4\xf7\xbe\x77\xbb\x5d\x6a\xdb\ \x91\x9c\x8b\xdc\xbb\xf1\xfe\x76\x4e\xbf\xf4\xbd\xcf\xcb\x9c\x6b\ \x59\x93\x0b\x18\x85\x77\xa8\x56\x1d\xab\x8f\xb8\x73\x86\xf3\x71\ \x48\xc3\x2a\x6e\xb8\x68\xa8\x75\x95\xad\xe7\xde\x37\x3f\xa7\xa3\ \xfb\xd9\x73\xef\xbe\xc3\x29\xce\xe9\x39\x38\x8f\xbe\x77\xf6\x0a\ \x50\xce\x66\x7d\xef\x3c\xca\xc2\xea\xea\xc9\x77\xc7\x79\x8f\x5c\ \x3a\xef\x9c\xb9\xdd\xd8\xb7\xd3\xb2\x75\xec\x30\x72\x95\x0b\x69\ \x8c\x57\x0a\x97\x4a\xcf\x26\x5b\x62\xfa\x53\xdf\xfb\x8c\x84\x5c\ \x5c\x34\xe4\x55\x36\x49\xc1\x56\xb4\xf3\x03\x7d\x3a\xac\xae\xa7\ \x43\xbc\x28\x9c\xab\x42\x5d\xa2\xbd\xcb\x9a\x9a\xb0\x8e\x7b\x53\ \x38\xca\xd9\x61\x4d\xc7\xa8\x14\x2e\x5e\x56\xfd\x22\xeb\x7a\x0f\ \xe6\x17\x10\xef\xa4\x3f\x66\xb6\xa8\xb2\x5d\x72\xef\x43\xe8\xd3\ \x87\xa1\xca\xbd\x3b\xe9\x89\x4d\xa8\x17\xba\x3f\x1b\x92\xde\xa7\ \x77\x35\xe5\x1a\x3e\x04\x8c\x88\x72\x31\x88\x17\x2b\xc6\xab\xdd\ \xbb\x47\x7a\x90\x2e\x0e\x1b\x39\x36\x60\x88\x82\xfa\x90\xde\xeb\ \xe9\xb0\xe4\x8a\xd5\x67\x2b\x01\x63\xa7\x9c\xe4\xb5\xfb\x9a\x8e\ \x19\x1e\xe6\x33\x3b\x19\xe7\xf4\xc5\x00\xe7\x62\xe0\x3c\xd6\xf4\ \xe9\x84\x57\xd9\x94\x70\x71\x8e\xe1\x1b\x7d\xba\x13\x0e\xf9\x22\ \xc7\xfb\x53\x58\x6f\xd4\x18\xd9\x49\x47\x05\xc1\xef\x7b\x67\xaa\ \xb5\xcd\xfb\x04\xf2\x56\x27\x4c\x41\xe0\x88\xce\x99\x7a\x23\xe7\ \xdd\xb0\xa5\xa4\xc9\xf5\xe9\x75\xeb\x4c\x4a\xa5\x3e\xfd\x5d\xa9\ \xdc\x6a\x23\xd7\xa7\xf6\xb8\xef\x9d\x4c\xcb\xb6\x6d\xea\xf7\x7c\ \x88\xa1\x0f\x9a\xb4\xf9\x99\xc4\x84\x68\x8d\xf4\x49\x09\x57\x35\ \xdb\x3c\x95\xc9\x19\x36\x24\x67\xae\x0a\x75\xe1\x3d\x79\x0f\x74\ \xac\xe9\x02\xbb\x94\x80\x17\x73\xa3\xdd\x0a\xea\x55\x1a\x56\x9c\ \x6b\x1e\x50\xe1\x43\x65\xad\xf4\x4b\x16\x67\x35\x36\xbb\x4b\x8e\ \x32\x65\x54\xd9\x16\x68\xd8\x8e\x83\xd8\x23\xf7\xb4\x6f\x6c\xc8\ \xc2\x8b\xdd\xed\xbf\xff\xd4\xb2\x6d\xa4\xe9\x2b\xcf\xbb\xb3\xdb\ \xed\xb4\xcb\x1e\xef\x86\xe8\xb9\xf7\xa9\xa8\xb9\x54\xb9\xf7\x39\ \x97\x20\x1e\xd9\x55\x4d\xae\xb1\xa6\x23\x40\xa1\x64\xb3\x93\x29\ \xbd\x5f\x22\xe8\x1a\x36\x7e\xe3\x89\x2a\x1b\x3f\x74\x76\xa0\xec\ \x1e\x42\x2d\xd0\x4b\xab\xc0\x1c\x7c\x9b\x3c\x3e\xc3\x3b\x48\x2d\ \xda\xf4\x85\x74\x33\x52\x03\xe2\xc6\x48\x63\x7d\xab\x81\x3c\x15\ \xf8\xd6\x41\xe2\x2c\xd6\xd1\x4b\x4a\xec\x83\xfb\x06\xe8\xa4\x23\ \xd6\x31\xc3\xcf\xa8\xb3\x99\xca\x46\xcd\xfd\x22\xb6\xe0\xd7\x71\ \x2c\xaa\x62\x5b\xec\xc6\x48\xb1\x83\xb2\xdf\x03\x4c\x6a\x1b\xd4\ \x6c\x0a\xbc\xa1\x63\x93\x37\x33\x0e\x2d\x5b\xa8\x95\x77\x36\xd0\ \x2e\xa0\xbf\x81\xed\x5e\x65\xeb\xd8\x31\xb0\x7b\x67\xc3\x2e\x86\ \x47\xde\x37\xca\x3b\x99\x92\x0d\x5a\x36\xb1\x42\xcb\x06\x5b\xf2\ \x6c\x11\x08\x20\x25\xf7\x50\x03\x5e\x27\x92\x9f\xd8\x8a\xdc\x3b\ \x76\xef\xb0\xdb\x99\x7d\x6f\xaa\x70\xe9\xa4\x17\x97\x0d\x6d\xdb\ \x7b\x95\x6d\x0b\xad\x03\xf2\xee\x97\xbe\xf7\x45\x5d\x34\x46\x8a\ \xb1\x03\xe9\x2f\x3c\xd7\x7a\x8b\x21\xc9\x03\x97\xe2\xc8\x26\x8f\ \xa2\xe9\x8d\x91\xbd\xef\x1d\x37\x99\xdb\x5e\xf5\x92\x7b\x37\x44\ \xff\x51\xd5\xf7\x7e\xd5\xb2\x8d\xd6\x19\xf9\x3a\x2f\x0f\x54\x0c\ \xe6\xd0\x04\xeb\x61\x5e\xdd\x2e\x65\xca\x55\xb4\x45\xb6\x8e\xf4\ \xde\xf7\xce\x5c\xbb\x6d\x97\xdc\x3b\xa2\x5d\xb7\x45\xc2\xf9\xa5\ \xef\x3d\xbf\xab\x56\x47\x41\x7c\x96\x8d\x3d\x08\x1f\xca\x48\x8f\ \x7a\x3a\x90\x54\xe2\x82\xc1\x87\xf5\x76\xc9\x99\x9e\x9c\x11\xd0\ \xee\x79\x58\xda\xdf\x72\xef\x31\xbf\x53\x16\xa3\x6a\x7e\x9f\xdf\ \xb5\x6c\xe3\x24\x0e\x78\x08\xe3\x9a\x88\xf5\x50\xff\x8d\x46\x0a\ \xe3\x7d\x88\x7a\x3a\x48\x7f\x5a\xd3\xcc\x67\xfa\x4c\x6d\xd7\xf4\ \xfe\xe5\x1e\xbb\x47\xae\x54\xb7\xa8\x95\x51\x4e\xc6\x37\x46\x5e\ \xa8\xe0\xfc\xa2\x65\x1b\x2d\xd2\x79\x44\xa0\x87\x98\x0d\x64\xa7\ \x61\x88\x7a\xba\x91\x8e\xa2\x2a\x87\xfc\xfa\xe9\x71\xde\x88\xf4\ \xbe\x77\x8f\xc6\xee\xcd\x39\xb7\x48\x0f\xce\x11\xe9\xc6\x79\x66\ \xbb\xce\xef\xbe\xa6\x8f\xe7\x8d\x91\xf2\x44\xa0\x5f\xd4\x0e\xd7\ \x7a\x3a\xae\x92\xfb\xe4\x50\x17\xdf\x3e\xd2\x7b\x79\x15\x92\x65\ \x0c\xdf\xbd\x57\x5a\xb6\x7c\x78\xb4\x57\xf7\xbd\x97\xdf\x65\x63\ \xaa\xc5\xf3\x1b\xbb\xf7\xd0\xa7\x03\xab\x8d\xaa\xca\x66\x4d\x72\ \xc8\xbe\x4b\xa4\x33\xeb\xb7\xf4\xd9\x32\xd2\xfb\x7d\xef\xe8\x93\ \xb3\x1b\xd3\xaa\xdd\x3b\x86\x21\xfb\x70\xcc\xd5\x77\xd9\xae\xf7\ \xbd\xbf\x34\xd2\xe5\x16\xe8\xd7\xb5\x9e\x9e\xd6\xe1\xaa\x4f\xc7\ \x4e\x8e\x29\x57\x7c\xf2\xf8\x79\xd2\xfb\x17\x1d\x00\x66\x1b\xba\ \x0d\x21\x9e\xde\x3b\x62\x61\xc0\xe5\xbe\xf7\xea\x26\x0a\xc1\x58\ \xde\xf7\x3e\x62\xfb\x0e\x0c\x55\x3d\x3d\xbe\xaa\x0c\xc2\x15\xd0\ \xa7\xcb\xec\x0e\xd6\x2f\x5a\xb6\xf2\xbb\x6c\xfa\xf6\x17\x0f\x87\ \x7f\x82\x42\xdf\x4b\x3e\xb5\x6c\x8e\x0d\x2f\xa2\xd0\xb2\x1d\x3c\ \x02\xa5\xce\x01\xfa\x3e\xfc\xf0\x0a\x1b\xf2\xb0\x3c\x14\xbb\x3d\ \xcd\xd0\x0b\x2e\xf5\x77\xd9\xa0\x8e\xbf\x02\xb5\x37\x5c\x14\xe9\ \x5a\xb6\x12\xae\xba\x87\x96\x8d\x30\xaf\x01\xd1\x2f\x86\x14\x65\ \x7c\x97\xed\x4e\x20\x5f\xa3\x03\x34\x6f\xff\x57\xee\xbd\xcb\x9a\ \x2e\x5a\xb6\x77\xde\x43\xcb\x46\xf2\xdb\xdb\xf6\x05\x54\x7d\x97\ \x0d\x5a\xb6\xe3\xd4\xb2\xed\x88\x71\xc0\xd6\xba\x1d\x65\xd5\xb8\ \x31\x92\x47\x68\xd9\x4c\xb9\xda\x94\xf9\x4e\xfa\x5c\x7d\x97\x8d\ \x6d\x62\xe7\xd5\x36\xab\xad\x55\x5a\xb6\xc5\xbf\xba\x69\xdc\xe7\ \xf8\x2e\x1b\xb4\x6c\x5b\x68\xd9\x72\x11\xed\xe4\xbf\xfc\xbb\x6c\ \x88\x70\x92\xf8\x0f\x9a\xb7\xbf\x25\xd2\x7b\x95\xad\x0b\xd9\xd8\ \x61\xde\x52\x49\x5b\x2c\x6f\x94\x91\x7b\x8f\xef\xb2\xe9\x7d\xef\ \x84\x62\x75\x68\xd9\xe2\xbb\x6c\x51\x71\x81\x96\x0d\x1f\x77\xb8\ \x1e\xd9\xce\xf6\x67\x6c\xe4\xd2\x93\x3d\xa4\x0e\xa8\xb4\x7d\x40\ \xdd\xf4\xd1\x44\xd6\xd4\xb1\x63\x47\xaa\xe9\x19\x14\x5c\xc2\x68\ \xb7\x9d\x3b\x1d\xe5\x37\x5c\x16\xca\xec\x4b\x2d\x9b\x7f\x97\x2d\ \xee\x0e\xf4\x4f\x74\x79\xcd\xa5\xbe\x7e\xc4\x53\xb0\xce\x79\x9c\ \xd3\x71\xdd\xfb\x07\x3f\xad\xab\x6c\x9d\x78\xcf\xbd\x13\xfb\x6f\ \x73\xef\x38\x05\xb9\xd2\x41\x49\xff\xd3\x77\xd9\x46\x65\x1d\x55\ \x36\x8b\xf4\xf1\x22\x6b\x7a\xc5\x05\xff\xea\x93\x67\xe4\x20\x58\ \x85\x6b\x15\xe9\x3d\xf5\x1e\x7d\xef\xdb\xbf\xe6\xde\xe3\x6b\x4d\ \x6a\x90\x34\xa9\x03\xe9\xd5\x97\x1d\xe2\x9c\x7e\xf9\x5a\x13\x5b\ \x80\x59\x8f\x2a\x5b\xd9\x03\xfd\xf1\x4c\xcd\x32\x72\x5d\xcb\x26\ \x5e\x0b\x6c\xca\x39\xbe\x24\x1d\xb9\xf7\xc8\xc9\xa1\xb4\x5a\xde\ \x0d\x3b\x63\x78\xeb\xfb\xc9\x39\x3b\xdc\x22\x67\xa3\x84\x7e\xc6\ \xe3\x25\x6e\x4d\x6a\x18\xa8\xac\x6a\xc9\xa5\x90\xa7\x37\x8b\xf4\ \x1e\xed\x68\xf0\xd4\x04\x84\x67\xa2\xea\xdc\xfb\x21\x86\xd4\x3b\ \x3f\x8c\x9a\xf7\xc5\x3f\xd1\x65\x60\xc2\xdd\x5c\xe5\x02\xac\x1e\ \xe9\xf8\x16\x9f\x73\xfe\x4c\xd6\x31\x25\x79\x77\x95\xb7\xa4\x96\ \xaa\xd5\x4e\xb8\x18\x34\x2e\xec\x91\x79\x02\xeb\x00\x73\x4d\xca\ \xb8\x07\xfb\x42\x84\x63\xb1\x60\xae\xd7\xf4\xd0\xb2\xd9\xb7\xd9\ \x4c\xbe\xe8\xac\xaf\x70\x2e\x70\x19\x10\xe9\x4f\x1e\xab\x92\xee\ \x84\xd7\xdd\x52\xff\x00\x0e\x5e\x0c\x4e\xab\x94\x1d\x32\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x53\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ \x00\x00\x02\xeb\x50\x4c\x54\x45\x00\x00\x00\xff\x00\x00\xff\xff\ \xff\xff\xff\xff\xbf\x00\x00\xff\xff\xff\xcc\x00\x00\xff\xff\xff\ \xdf\x00\x00\xe2\x00\x00\xe5\x00\x00\xff\xff\xff\xe7\x00\x00\xff\ \xff\xff\xd4\x00\x00\xff\xff\xff\xd7\x00\x00\xda\x12\x12\xff\xff\ \xff\xdd\x00\x00\xe4\x00\x00\xff\xff\xff\xff\xff\xff\xda\x00\x00\ \xff\xff\xff\xdc\x00\x00\xe2\x00\x00\xff\xff\xff\xda\x00\x00\xff\ \xff\xff\xdb\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xff\xdc\x00\x00\xde\x00\x00\xe4\x47\x47\xff\xff\xff\xff\xff\xff\ \xdc\x00\x00\xdd\x00\x00\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xdd\ \x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\xff\xdd\x00\x00\xfa\xd5\ \xd5\xff\xff\xff\xff\xff\xff\xe4\x38\x38\xdd\x00\x00\xff\xff\xff\ \xff\xff\xff\xff\xff\xff\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xdf\ \x00\x00\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdd\x00\ \x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xde\x00\x00\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xeb\x70\x70\xdd\ \x00\x00\xe0\x02\x02\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\ \xff\xf0\x8c\x8c\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\xff\ \xdf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xde\x00\x00\xff\ \xff\xff\xec\x75\x75\xdf\x00\x00\xe8\x51\x51\xde\x00\x00\xf9\xdc\ \xdc\xff\xff\xff\xde\x00\x00\xdf\x00\x00\xff\xff\xff\xde\x00\x00\ \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\xb2\xb2\xff\ \xff\xff\xdf\x00\x00\xff\xff\xff\xdf\x00\x00\xdf\x00\x00\xde\x00\ \x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\x71\x71\ \xde\x00\x00\xff\xff\xff\xe3\x27\x27\xde\x00\x00\xde\x00\x00\xfd\ \xf4\xf4\xf0\x87\x87\xff\xff\xff\xff\xff\xff\xe3\x24\x24\xff\xff\ \xff\xe3\x1f\x1f\xff\xff\xff\xfa\xd9\xd9\xff\xff\xff\xe2\x1a\x1a\ \xdf\x00\x00\xde\x00\x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xdf\ \x00\x00\xde\x00\x00\xea\x5c\x5c\xff\xff\xff\xe2\x1b\x1b\xe0\x0a\ \x0a\xdf\x03\x03\xde\x00\x00\xff\xff\xff\xff\xff\xff\xde\x02\x02\ \xff\xff\xff\xdf\x02\x02\xff\xff\xff\xff\xff\xff\xeb\x63\x63\xdf\ \x00\x00\xdf\x01\x01\xff\xff\xff\xdf\x00\x00\xe0\x08\x08\xde\x00\ \x00\xff\xff\xff\xec\x6d\x6d\xde\x00\x00\xe1\x10\x10\xf4\xae\xae\ \xdf\x00\x00\xdf\x00\x00\xff\xff\xff\xff\xff\xff\xf6\xbd\xbd\xfd\ \xf4\xf4\xdf\x00\x00\xde\x00\x00\xe3\x22\x22\xf6\xc1\xc1\xff\xff\ \xff\xe9\x5a\x5a\xf0\x8b\x8b\xff\xff\xff\xdf\x00\x00\xff\xff\xff\ \xe3\x22\x22\xdf\x01\x01\xe5\x32\x32\xe8\x48\x48\xf6\xb7\xb7\xfc\ \xea\xea\xfd\xf0\xf0\xfd\xf2\xf2\xff\xfe\xfe\xdf\x02\x02\xe9\x4c\ \x4c\xe2\x1a\x1a\xe0\x04\x04\xe4\x26\x26\xe4\x27\x27\xe0\x05\x05\ \xe5\x33\x33\xe6\x35\x35\xe6\x3b\x3b\xe7\x3e\x3e\xe8\x44\x44\xe0\ \x06\x06\xe2\x19\x19\xe9\x4f\x4f\xe9\x52\x52\xea\x57\x57\xea\x58\ \x58\xea\x59\x59\xeb\x61\x61\xeb\x62\x62\xec\x66\x66\xec\x6a\x6a\ \xee\x74\x74\xee\x75\x75\xee\x7b\x7b\xef\x7e\x7e\xef\x81\x81\xf1\ \x8f\x8f\xf3\x9e\x9e\xf3\x9f\x9f\xf3\xa2\xa2\xf4\xaa\xaa\xf4\xab\ \xab\xf5\xb0\xb0\xf5\xb1\xb1\xf6\xb4\xb4\xe0\x09\x09\xf7\xbe\xbe\ \xf8\xc4\xc4\xf9\xd0\xd0\xfa\xd4\xd4\xfa\xd5\xd5\xfa\xdb\xdb\xfb\ \xde\xde\xfb\xe0\xe0\xfc\xe4\xe4\xe0\x0b\x0b\xfd\xec\xec\xe1\x0e\ \x0e\xe2\x15\x15\xfe\xf7\xf7\xfe\xfb\xfb\xff\xfc\xfc\xe2\x16\x16\ \xe2\x17\x17\x66\xee\x72\x60\x00\x00\x00\xb6\x74\x52\x4e\x53\x00\ \x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ \x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ \x21\x24\x25\x27\x27\x2a\x2b\x2c\x2d\x2e\x2f\x32\x36\x36\x39\x3b\ \x3c\x3d\x40\x41\x44\x45\x48\x4b\x4c\x4d\x4e\x4f\x50\x54\x54\x55\ \x5a\x5c\x5d\x5d\x60\x61\x63\x65\x67\x67\x68\x6b\x6c\x6c\x6d\x70\ \x71\x73\x78\x7c\x7e\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ \x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ \xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ \xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ \xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ \xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ \xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02\x61\x49\x44\x41\ \x54\x78\x5e\xdd\xd7\x55\x70\x13\x51\x14\xc7\xe1\xd3\x52\x28\xda\ \x42\xf1\xe2\x5e\xdc\x5b\x28\x10\xdc\xdd\xdd\xdd\x0a\x45\x8a\xb4\ \xb8\x7b\x70\x29\x5e\x24\x50\xa0\xe8\xd9\xa4\x2a\xb8\xbb\xbb\xbb\ \xeb\x23\x93\x3d\x77\xee\xcb\xe6\x66\x98\x93\x17\xa6\xbf\xd7\xff\ \xe6\x9b\x7d\xc8\x9c\x99\x85\x14\x52\xfa\x52\x39\x5d\xfa\xf9\x80\ \x28\xc4\x95\x41\x26\x36\x30\x10\xa9\x19\xd9\x78\x80\xc7\x4e\x14\ \xed\xaa\xca\x02\x72\xa3\xec\x60\x25\x96\xb0\x1e\x65\x1b\x33\x70\ \x80\xfa\x36\x09\xd8\x46\x00\xa7\x5e\x17\xbe\xa0\xe8\x68\x19\x96\ \x50\x7d\xca\xee\x68\x02\xae\xb6\x03\x5e\x9e\x7d\x08\xb0\x8e\x02\ \x66\x45\x09\x38\x61\xe6\x02\x79\x05\x10\xf9\x3f\x03\x6e\x2e\x01\ \x25\x47\x2f\x39\xb0\x2a\x34\x90\x0d\x34\x8f\xa2\x7d\x32\x13\xf0\ \xb3\xa0\x68\x2a\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80\x75\ \x3c\x0b\xe8\x2d\x81\x73\x66\x16\x60\x92\xc0\xdd\xe9\x0a\xc0\xd7\ \x29\xe0\x36\x0b\x29\x6b\x7c\x37\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ \x2c\xcb\x2e\xda\xe7\x2b\x1f\xcd\x3e\xa0\x68\x33\x09\x87\x14\x37\ \xc9\xbb\xdf\xbe\x47\xb1\x9f\xb4\x71\x85\x40\xd5\x42\x02\x62\x5a\ \xa8\xfe\xb1\x39\x2a\x37\x0a\x28\x08\xea\xc2\x50\xb4\xa2\x95\x17\ \x70\xaa\x85\xb2\x6d\xc5\x58\xc2\x3c\x94\xed\xc8\xc7\x01\xca\xa2\ \x2c\xb9\x27\x07\xe8\x81\xb2\x9b\x21\x0c\xc0\x6f\x8f\x04\x6c\xaf\ \x87\x30\x80\x60\x14\xe1\x9f\x27\xc7\xaa\x30\x80\xf9\x04\x1c\xbf\ \xf7\x2e\x71\x5d\x03\x60\xb4\x89\x80\x17\xab\xbb\x96\x70\x07\x46\ \x59\x91\x8a\xab\xe1\xe2\x55\xd6\x72\x39\x9c\xfd\xbb\x88\x9a\x32\ \x8f\x6a\x28\x8a\x26\x34\x63\x01\x5e\x16\xa4\x4e\xfd\x6c\xcc\x02\ \x02\x51\xf4\x74\x51\x6a\x16\xd0\x17\xa9\xe8\xc4\x3a\xc0\x02\x96\ \x22\x15\x3b\xd7\x9d\x05\x14\x41\xea\xbc\x16\x00\x2c\xa0\x35\x52\ \x6f\xa6\x01\x0f\x98\x48\x63\xb2\x56\x81\x07\xa4\xdd\x4e\x17\xfb\ \x6d\x08\xf0\x00\x7f\xda\xae\x1f\x2e\x0d\xea\xca\x13\xf0\x2a\x52\ \x79\x6a\x4e\x7f\x18\x0e\x4e\xea\x40\xc0\xd9\x08\x30\xb6\x40\x9f\ \x6e\xed\x2d\xac\x04\x7c\xeb\x05\x6f\x25\xe0\xf6\x4c\xe3\x9a\x9f\ \xde\xed\xf3\x20\x50\x94\x39\x08\x65\x8f\xfb\x1b\xf7\x26\xfa\x72\ \x27\x22\x8f\x0a\x18\x8c\xb2\xef\x71\x0d\x8d\xfb\x18\xfb\xf2\xed\ \x6b\x77\x50\x94\xc6\x82\xb2\x67\xe1\xc6\x73\xe0\xa1\xdf\xaa\x07\ \x5b\xb2\xff\xc3\xf7\xc2\x35\xad\xb6\x71\xaf\xa8\xbf\x5a\x42\x47\ \x50\xb6\x16\x45\x37\x12\x46\x82\xb1\xb6\xf6\xe9\x61\xb8\xb7\x1a\ \x30\x25\xe9\xc0\xef\xe7\xda\x50\x47\x4f\xb5\x44\xc4\x93\x3f\xda\ \x80\x93\xda\x1f\x39\x13\x73\xff\x65\xfc\x86\x9a\x0e\xd7\x8c\xcb\ \xf1\xd2\xfb\xc5\x9e\xe0\xac\x72\xc3\x66\x4f\xea\x5c\xcd\x47\xb1\ \x66\x9a\xf3\x6b\x4d\x71\x70\xa9\x02\xa9\x20\x25\xf7\x17\x09\xba\ \x39\x39\xea\xb1\x61\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x06\x53\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ \x00\x00\x02\xeb\x50\x4c\x54\x45\x00\x00\x00\xff\x00\x00\xff\xff\ \xff\xff\xff\xff\xbf\x00\x00\xff\xff\xff\x99\x00\x00\xff\xff\xff\ \x9f\x00\x00\xaa\x00\x00\xb2\x00\x00\xff\xff\xff\xb9\x00\x00\xff\ \xff\xff\xaa\x00\x00\xff\xff\xff\xb0\x00\x00\xb6\x12\x12\xff\xff\ \xff\xaa\x00\x00\xae\x00\x00\xff\xff\xff\xff\xff\xff\xaa\x00\x00\ \xff\xff\xff\xad\x00\x00\xb3\x00\x00\xff\xff\xff\xad\x00\x00\xff\ \xff\xff\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xff\xac\x00\x00\xb0\x00\x00\xc4\x47\x47\xff\xff\xff\xff\xff\xff\ \xad\x00\x00\xaf\x00\x00\xb1\x00\x00\xff\xff\xff\xff\xff\xff\xae\ \x00\x00\xff\xff\xff\xae\x00\x00\xff\xff\xff\xae\x00\x00\xf2\xd5\ \xd5\xff\xff\xff\xff\xff\xff\xbf\x38\x38\xad\x00\x00\xff\xff\xff\ \xff\xff\xff\xff\xff\xff\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xaf\ \x00\x00\xb0\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xae\x00\ \x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xae\x00\x00\xaf\x00\x00\xff\xff\xff\xae\x00\x00\xd1\x70\x70\xae\ \x00\x00\xae\x02\x02\xaf\x00\x00\xff\xff\xff\xb0\x00\x00\xff\xff\ \xff\xda\x8c\x8c\xae\x00\x00\xff\xff\xff\xaf\x00\x00\xff\xff\xff\ \xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xae\x00\x00\xff\ \xff\xff\xd3\x75\x75\xaf\x00\x00\xc9\x51\x51\xae\x00\x00\xf4\xdc\ \xdc\xff\xff\xff\xaf\x00\x00\xae\x00\x00\xff\xff\xff\xae\x00\x00\ \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\xb2\xb2\xff\ \xff\xff\xae\x00\x00\xff\xff\xff\xaf\x00\x00\xaf\x00\x00\xae\x00\ \x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x71\x71\ \xaf\x00\x00\xff\xff\xff\xba\x27\x27\xae\x00\x00\xaf\x00\x00\xfa\ \xf4\xf4\xd9\x87\x87\xff\xff\xff\xff\xff\xff\xba\x24\x24\xff\xff\ \xff\xb8\x1f\x1f\xff\xff\xff\xf3\xd9\xd9\xff\xff\xff\xb7\x1a\x1a\ \xae\x00\x00\xae\x00\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xae\ \x00\x00\xaf\x00\x00\xcc\x5c\x5c\xff\xff\xff\xb7\x1b\x1b\xb2\x0a\ \x0a\xaf\x03\x03\xae\x00\x00\xff\xff\xff\xff\xff\xff\xaf\x02\x02\ \xff\xff\xff\xb0\x02\x02\xff\xff\xff\xff\xff\xff\xcd\x63\x63\xaf\ \x00\x00\xaf\x01\x01\xff\xff\xff\xaf\x00\x00\xb1\x08\x08\xae\x00\ \x00\xff\xff\xff\xd1\x6d\x6d\xaf\x00\x00\xb4\x10\x10\xe6\xae\xae\ \xae\x00\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xea\xbd\xbd\xfb\ \xf4\xf4\xae\x00\x00\xaf\x00\x00\xba\x22\x22\xeb\xc1\xc1\xff\xff\ \xff\xcb\x5a\x5a\xda\x8b\x8b\xff\xff\xff\xaf\x00\x00\xff\xff\xff\ \xba\x22\x22\xaf\x01\x01\xbf\x32\x32\xc6\x48\x48\xe8\xb7\xb7\xf8\ \xea\xea\xfa\xf0\xf0\xfb\xf2\xf2\xff\xfe\xfe\xb0\x02\x02\xc7\x4c\ \x4c\xb7\x1a\x1a\xb0\x04\x04\xbb\x26\x26\xbb\x27\x27\xb1\x05\x05\ \xbf\x33\x33\xc0\x35\x35\xc2\x3b\x3b\xc2\x3e\x3e\xc4\x44\x44\xb1\ \x06\x06\xb7\x19\x19\xc8\x4f\x4f\xc9\x52\x52\xca\x57\x57\xcb\x58\ \x58\xcb\x59\x59\xcd\x61\x61\xce\x62\x62\xcf\x66\x66\xd0\x6a\x6a\ \xd3\x74\x74\xd4\x75\x75\xd6\x7b\x7b\xd7\x7e\x7e\xd7\x81\x81\xdc\ \x8f\x8f\xe1\x9e\x9e\xe1\x9f\x9f\xe2\xa2\xa2\xe4\xaa\xaa\xe5\xab\ \xab\xe6\xb0\xb0\xe7\xb1\xb1\xe7\xb4\xb4\xb2\x09\x09\xeb\xbe\xbe\ \xec\xc4\xc4\xf0\xd0\xd0\xf2\xd4\xd4\xf2\xd5\xd5\xf4\xdb\xdb\xf5\ \xde\xde\xf5\xe0\xe0\xf7\xe4\xe4\xb2\x0b\x0b\xf9\xec\xec\xb3\x0e\ \x0e\xb6\x15\x15\xfc\xf7\xf7\xfe\xfb\xfb\xfe\xfc\xfc\xb6\x16\x16\ \xb6\x17\x17\xdc\x97\x3c\x09\x00\x00\x00\xb6\x74\x52\x4e\x53\x00\ \x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ \x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ \x21\x24\x25\x27\x27\x2a\x2b\x2c\x2d\x2e\x2f\x32\x36\x36\x39\x3b\ \x3c\x3d\x40\x41\x44\x45\x48\x4b\x4c\x4d\x4e\x4f\x50\x54\x54\x55\ \x5a\x5c\x5d\x5d\x60\x61\x63\x65\x67\x67\x68\x6b\x6c\x6c\x6d\x70\ \x71\x73\x78\x7c\x7e\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ \x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ \xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ \xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ \xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ \xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ \xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02\x61\x49\x44\x41\ \x54\x78\x5e\xdd\xd7\x55\x70\x13\x51\x14\xc7\xe1\xd3\x52\x28\xda\ \x42\xf1\xe2\x5e\xdc\x5b\x28\x10\xdc\xdd\xdd\xdd\x0a\x45\x8a\xb4\ \xb8\x7b\x70\x29\x5e\x24\x50\xa0\xe8\xd9\xa4\x2a\xb8\xbb\xbb\xbb\ \xeb\x23\x93\x3d\x77\xee\xcb\xe6\x66\x98\x93\x17\xa6\xbf\xd7\xff\ \xe6\x9b\x7d\xc8\x9c\x99\x85\x14\x52\xfa\x52\x39\x5d\xfa\xf9\x80\ \x28\xc4\x95\x41\x26\x36\x30\x10\xa9\x19\xd9\x78\x80\xc7\x4e\x14\ \xed\xaa\xca\x02\x72\xa3\xec\x60\x25\x96\xb0\x1e\x65\x1b\x33\x70\ \x80\xfa\x36\x09\xd8\x46\x00\xa7\x5e\x17\xbe\xa0\xe8\x68\x19\x96\ \x50\x7d\xca\xee\x68\x02\xae\xb6\x03\x5e\x9e\x7d\x08\xb0\x8e\x02\ \x66\x45\x09\x38\x61\xe6\x02\x79\x05\x10\xf9\x3f\x03\x6e\x2e\x01\ \x25\x47\x2f\x39\xb0\x2a\x34\x90\x0d\x34\x8f\xa2\x7d\x32\x13\xf0\ \xb3\xa0\x68\x2a\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80\x75\ \x3c\x0b\xe8\x2d\x81\x73\x66\x16\x60\x92\xc0\xdd\xe9\x0a\xc0\xd7\ \x29\xe0\x36\x0b\x29\x6b\x7c\x37\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ \x2c\xcb\x2e\xda\xe7\x2b\x1f\xcd\x3e\xa0\x68\x33\x09\x87\x14\x37\ \xc9\xbb\xdf\xbe\x47\xb1\x9f\xb4\x71\x85\x40\xd5\x42\x02\x62\x5a\ \xa8\xfe\xb1\x39\x2a\x37\x0a\x28\x08\xea\xc2\x50\xb4\xa2\x95\x17\ \x70\xaa\x85\xb2\x6d\xc5\x58\xc2\x3c\x94\xed\xc8\xc7\x01\xca\xa2\ \x2c\xb9\x27\x07\xe8\x81\xb2\x9b\x21\x0c\xc0\x6f\x8f\x04\x6c\xaf\ \x87\x30\x80\x60\x14\xe1\x9f\x27\xc7\xaa\x30\x80\xf9\x04\x1c\xbf\ \xf7\x2e\x71\x5d\x03\x60\xb4\x89\x80\x17\xab\xbb\x96\x70\x07\x46\ \x59\x91\x8a\xab\xe1\xe2\x55\xd6\x72\x39\x9c\xfd\xbb\x88\x9a\x32\ \x8f\x6a\x28\x8a\x26\x34\x63\x01\x5e\x16\xa4\x4e\xfd\x6c\xcc\x02\ \x02\x51\xf4\x74\x51\x6a\x16\xd0\x17\xa9\xe8\xc4\x3a\xc0\x02\x96\ \x22\x15\x3b\xd7\x9d\x05\x14\x41\xea\xbc\x16\x00\x2c\xa0\x35\x52\ \x6f\xa6\x01\x0f\x98\x48\x63\xb2\x56\x81\x07\xa4\xdd\x4e\x17\xfb\ \x6d\x08\xf0\x00\x7f\xda\xae\x1f\x2e\x0d\xea\xca\x13\xf0\x2a\x52\ \x79\x6a\x4e\x7f\x18\x0e\x4e\xea\x40\xc0\xd9\x08\x30\xb6\x40\x9f\ \x6e\xed\x2d\xac\x04\x7c\xeb\x05\x6f\x25\xe0\xf6\x4c\xe3\x9a\x9f\ \xde\xed\xf3\x20\x50\x94\x39\x08\x65\x8f\xfb\x1b\xf7\x26\xfa\x72\ \x27\x22\x8f\x0a\x18\x8c\xb2\xef\x71\x0d\x8d\xfb\x18\xfb\xf2\xed\ \x6b\x77\x50\x94\xc6\x82\xb2\x67\xe1\xc6\x73\xe0\xa1\xdf\xaa\x07\ \x5b\xb2\xff\xc3\xf7\xc2\x35\xad\xb6\x71\xaf\xa8\xbf\x5a\x42\x47\ \x50\xb6\x16\x45\x37\x12\x46\x82\xb1\xb6\xf6\xe9\x61\xb8\xb7\x1a\ \x30\x25\xe9\xc0\xef\xe7\xda\x50\x47\x4f\xb5\x44\xc4\x93\x3f\xda\ \x80\x93\xda\x1f\x39\x13\x73\xff\x65\xfc\x86\x9a\x0e\xd7\x8c\xcb\ \xf1\xd2\xfb\xc5\x9e\xe0\xac\x72\xc3\x66\x4f\xea\x5c\xcd\x47\xb1\ \x66\x9a\xf3\x6b\x4d\x71\x70\xa9\x02\xa9\x20\x25\xf7\x17\x09\xba\ \x39\x39\xea\xb1\x61\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x06\x53\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ \x00\x00\x02\xeb\x50\x4c\x54\x45\x00\x00\x00\x00\x00\x00\xff\xff\ \xff\xff\xff\xff\x7f\x00\x00\xff\xff\xff\x66\x00\x00\xff\xff\xff\ \x7f\x00\x00\x71\x00\x00\x7f\x00\x00\xff\xff\xff\x73\x00\x00\xff\ \xff\xff\x7f\x00\x00\xff\xff\xff\x75\x00\x00\x7f\x12\x12\xff\xff\ \xff\x77\x00\x00\x78\x00\x00\xff\xff\xff\xff\xff\xff\x79\x00\x00\ \xff\xff\xff\x7f\x00\x00\x7a\x00\x00\xff\xff\xff\x7f\x00\x00\xff\ \xff\xff\x7b\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xff\x7c\x00\x00\x7c\x00\x00\xa3\x47\x47\xff\xff\xff\xff\xff\xff\ \x7f\x00\x00\x7c\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\x7f\ \x00\x00\xff\xff\xff\x7d\x00\x00\xff\xff\xff\x7f\x00\x00\xea\xd5\ \xd5\xff\xff\xff\xff\xff\xff\x99\x38\x38\x7d\x00\x00\xff\xff\xff\ \xff\xff\xff\xff\xff\xff\x7d\x00\x00\xff\xff\xff\xff\xff\xff\x7f\ \x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\ \x00\x7e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \x7e\x00\x00\x7e\x00\x00\xff\xff\xff\x7f\x00\x00\xb7\x70\x70\x7f\ \x00\x00\x7f\x02\x02\x7e\x00\x00\xff\xff\xff\x7e\x00\x00\xff\xff\ \xff\xc5\x8c\x8c\x7f\x00\x00\xff\xff\xff\x7f\x00\x00\xff\xff\xff\ \x7e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x00\xff\ \xff\xff\xba\x75\x75\x7e\x00\x00\xa8\x51\x51\x7e\x00\x00\xed\xdc\ \xdc\xff\xff\xff\x7f\x00\x00\x7f\x00\x00\xff\xff\xff\x7f\x00\x00\ \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd8\xb2\xb2\xff\ \xff\xff\x7f\x00\x00\xff\xff\xff\x7e\x00\x00\x7f\x00\x00\x7f\x00\ \x00\x7e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb7\x71\x71\ \x7f\x00\x00\xff\xff\xff\x93\x27\x27\x7f\x00\x00\x7e\x00\x00\xf9\ \xf4\xf4\xc3\x87\x87\xff\xff\xff\xff\xff\xff\x91\x24\x24\xff\xff\ \xff\x8f\x1f\x1f\xff\xff\xff\xec\xd9\xd9\xff\xff\xff\x8c\x1a\x1a\ \x7f\x00\x00\x7f\x00\x00\x7e\x00\x00\xff\xff\xff\xff\xff\xff\x7e\ \x00\x00\x7f\x00\x00\xad\x5c\x5c\xff\xff\xff\x8d\x1b\x1b\x84\x0a\ \x0a\x81\x03\x03\x7f\x00\x00\xff\xff\xff\xff\xff\xff\x80\x02\x02\ \xff\xff\xff\x80\x02\x02\xff\xff\xff\xff\xff\xff\xb1\x63\x63\x7f\ \x00\x00\x7f\x01\x01\xff\xff\xff\x7e\x00\x00\x83\x08\x08\x7e\x00\ \x00\xff\xff\xff\xb6\x6d\x6d\x7e\x00\x00\x87\x10\x10\xd6\xae\xae\ \x7f\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\xde\xbd\xbd\xf9\ \xf4\xf4\x7e\x00\x00\x7f\x00\x00\x90\x22\x22\xdf\xc1\xc1\xff\xff\ \xff\xac\x5a\x5a\xc4\x8b\x8b\xff\xff\xff\x7f\x00\x00\xff\xff\xff\ \x90\x22\x22\x80\x01\x01\x98\x32\x32\xa3\x48\x48\xdb\xb7\xb7\xf4\ \xea\xea\xf7\xf0\xf0\xf8\xf2\xf2\xfe\xfe\xfe\x80\x02\x02\xa5\x4c\ \x4c\x8c\x1a\x1a\x81\x04\x04\x92\x26\x26\x93\x27\x27\x82\x05\x05\ \x99\x33\x33\x9a\x35\x35\x9d\x3b\x3b\x9e\x3e\x3e\xa1\x44\x44\x82\ \x06\x06\x8c\x19\x19\xa7\x4f\x4f\xa8\x52\x52\xab\x57\x57\xab\x58\ \x58\xac\x59\x59\xb0\x61\x61\xb0\x62\x62\xb2\x66\x66\xb4\x6a\x6a\ \xb9\x74\x74\xba\x75\x75\xbd\x7b\x7b\xbe\x7e\x7e\xc0\x81\x81\xc7\ \x8f\x8f\xce\x9e\x9e\xcf\x9f\x9f\xd0\xa2\xa2\xd4\xaa\xaa\xd5\xab\ \xab\xd7\xb0\xb0\xd8\xb1\xb1\xd9\xb4\xb4\x84\x09\x09\xde\xbe\xbe\ \xe1\xc4\xc4\xe7\xd0\xd0\xe9\xd4\xd4\xea\xd5\xd5\xed\xdb\xdb\xee\ \xde\xde\xef\xe0\xe0\xf1\xe4\xe4\x85\x0b\x0b\xf5\xec\xec\x86\x0e\ \x0e\x8a\x15\x15\xfb\xf7\xf7\xfd\xfb\xfb\xfd\xfc\xfc\x8a\x16\x16\ \x8b\x17\x17\xd2\x67\xa5\xb8\x00\x00\x00\xb6\x74\x52\x4e\x53\x00\ \x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ \x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ \x21\x24\x25\x27\x27\x2a\x2b\x2c\x2d\x2e\x2f\x32\x36\x36\x39\x3b\ \x3c\x3d\x40\x41\x44\x45\x48\x4b\x4c\x4d\x4e\x4f\x50\x54\x54\x55\ \x5a\x5c\x5d\x5d\x60\x61\x63\x65\x67\x67\x68\x6b\x6c\x6c\x6d\x70\ \x71\x73\x78\x7c\x7e\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ \x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ \xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ \xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ \xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ \xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ \xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02\x61\x49\x44\x41\ \x54\x78\x5e\xdd\xd7\x55\x70\x13\x51\x14\xc7\xe1\xd3\x52\x28\xda\ \x42\xf1\xe2\x5e\xdc\x5b\x28\x10\xdc\xdd\xdd\xdd\x0a\x45\x8a\xb4\ \xb8\x7b\x70\x29\x5e\x24\x50\xa0\xe8\xd9\xa4\x2a\xb8\xbb\xbb\xbb\ \xeb\x23\x93\x3d\x77\xee\xcb\xe6\x66\x98\x93\x17\xa6\xbf\xd7\xff\ \xe6\x9b\x7d\xc8\x9c\x99\x85\x14\x52\xfa\x52\x39\x5d\xfa\xf9\x80\ \x28\xc4\x95\x41\x26\x36\x30\x10\xa9\x19\xd9\x78\x80\xc7\x4e\x14\ \xed\xaa\xca\x02\x72\xa3\xec\x60\x25\x96\xb0\x1e\x65\x1b\x33\x70\ \x80\xfa\x36\x09\xd8\x46\x00\xa7\x5e\x17\xbe\xa0\xe8\x68\x19\x96\ \x50\x7d\xca\xee\x68\x02\xae\xb6\x03\x5e\x9e\x7d\x08\xb0\x8e\x02\ \x66\x45\x09\x38\x61\xe6\x02\x79\x05\x10\xf9\x3f\x03\x6e\x2e\x01\ \x25\x47\x2f\x39\xb0\x2a\x34\x90\x0d\x34\x8f\xa2\x7d\x32\x13\xf0\ \xb3\xa0\x68\x2a\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80\x75\ \x3c\x0b\xe8\x2d\x81\x73\x66\x16\x60\x92\xc0\xdd\xe9\x0a\xc0\xd7\ \x29\xe0\x36\x0b\x29\x6b\x7c\x37\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ \x2c\xcb\x2e\xda\xe7\x2b\x1f\xcd\x3e\xa0\x68\x33\x09\x87\x14\x37\ \xc9\xbb\xdf\xbe\x47\xb1\x9f\xb4\x71\x85\x40\xd5\x42\x02\x62\x5a\ \xa8\xfe\xb1\x39\x2a\x37\x0a\x28\x08\xea\xc2\x50\xb4\xa2\x95\x17\ \x70\xaa\x85\xb2\x6d\xc5\x58\xc2\x3c\x94\xed\xc8\xc7\x01\xca\xa2\ \x2c\xb9\x27\x07\xe8\x81\xb2\x9b\x21\x0c\xc0\x6f\x8f\x04\x6c\xaf\ \x87\x30\x80\x60\x14\xe1\x9f\x27\xc7\xaa\x30\x80\xf9\x04\x1c\xbf\ \xf7\x2e\x71\x5d\x03\x60\xb4\x89\x80\x17\xab\xbb\x96\x70\x07\x46\ \x59\x91\x8a\xab\xe1\xe2\x55\xd6\x72\x39\x9c\xfd\xbb\x88\x9a\x32\ \x8f\x6a\x28\x8a\x26\x34\x63\x01\x5e\x16\xa4\x4e\xfd\x6c\xcc\x02\ \x02\x51\xf4\x74\x51\x6a\x16\xd0\x17\xa9\xe8\xc4\x3a\xc0\x02\x96\ \x22\x15\x3b\xd7\x9d\x05\x14\x41\xea\xbc\x16\x00\x2c\xa0\x35\x52\ \x6f\xa6\x01\x0f\x98\x48\x63\xb2\x56\x81\x07\xa4\xdd\x4e\x17\xfb\ \x6d\x08\xf0\x00\x7f\xda\xae\x1f\x2e\x0d\xea\xca\x13\xf0\x2a\x52\ \x79\x6a\x4e\x7f\x18\x0e\x4e\xea\x40\xc0\xd9\x08\x30\xb6\x40\x9f\ \x6e\xed\x2d\xac\x04\x7c\xeb\x05\x6f\x25\xe0\xf6\x4c\xe3\x9a\x9f\ \xde\xed\xf3\x20\x50\x94\x39\x08\x65\x8f\xfb\x1b\xf7\x26\xfa\x72\ \x27\x22\x8f\x0a\x18\x8c\xb2\xef\x71\x0d\x8d\xfb\x18\xfb\xf2\xed\ \x6b\x77\x50\x94\xc6\x82\xb2\x67\xe1\xc6\x73\xe0\xa1\xdf\xaa\x07\ \x5b\xb2\xff\xc3\xf7\xc2\x35\xad\xb6\x71\xaf\xa8\xbf\x5a\x42\x47\ \x50\xb6\x16\x45\x37\x12\x46\x82\xb1\xb6\xf6\xe9\x61\xb8\xb7\x1a\ \x30\x25\xe9\xc0\xef\xe7\xda\x50\x47\x4f\xb5\x44\xc4\x93\x3f\xda\ \x80\x93\xda\x1f\x39\x13\x73\xff\x65\xfc\x86\x9a\x0e\xd7\x8c\xcb\ \xf1\xd2\xfb\xc5\x9e\xe0\xac\x72\xc3\x66\x4f\xea\x5c\xcd\x47\xb1\ \x66\x9a\xf3\x6b\x4d\x71\x70\xa9\x02\xa9\x20\x25\xf7\x17\x09\xba\ \x39\x39\xea\xb1\x61\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x3a\x40\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xa8\x00\x00\x01\x77\x08\x03\x00\x00\x00\x06\x8a\xf0\xc8\ \x00\x00\x02\xd9\x50\x4c\x54\x45\xad\xac\xff\xc4\x90\xc4\xe2\x5a\ \x63\xe6\xc1\xd5\xe9\x9c\xa7\xb8\xb6\xfe\xc8\xc6\xfe\xcb\xcb\xfe\ \xbb\xbb\xff\xc0\xbe\xfe\xc3\xc3\xfe\xd2\xd2\xff\xd8\xd7\xff\xdc\ \xdb\xfe\xb3\xb3\xfe\xe2\xe2\xfe\xb0\xae\xfe\xd0\xce\xfe\xeb\xeb\ \xfe\xf3\xf3\xfe\xfc\xfb\xfe\xdd\x06\x08\xda\x22\x2c\xdc\x0d\x12\ \xb7\x8f\xd1\xe0\xde\xfe\xea\x5a\x5a\xdd\x09\x0b\xdd\x19\x1e\xfc\ \xec\xec\xde\x00\x00\xf0\xef\xfd\xe1\x13\x13\xbf\xa1\xde\xbb\xb2\ \xf4\xe3\x23\x23\xe5\x32\x32\xe6\x3a\x3a\xe6\x41\x42\xcc\xc3\xf4\ \xe9\x53\x53\xdc\x14\x1a\xbd\x81\xbb\xec\x6c\x6c\xed\x72\x72\xee\ \x7b\x7b\xf2\x9b\x9b\xf2\xa2\xa2\xd2\x81\xa2\xf4\xac\xac\xf6\xb9\ \xb9\xfa\xdb\xdb\xfa\xf5\xfa\xfb\xe2\xe2\xdd\x10\x15\xbd\xab\xeb\ \xfd\xf2\xf3\xe4\x2c\x2c\xeb\x63\x63\xf0\x8b\x8b\xf5\xcd\xd1\xd6\ \x2b\x3c\xd8\x2d\x3b\xd8\x46\x58\xca\x56\x7b\xd9\x25\x31\xd9\x34\ \x43\xd9\x42\x52\xd9\x6d\x83\xda\x1b\x25\xca\x75\x9e\xda\x31\x3d\ \xda\x52\x64\xdb\x1a\x22\xdb\x85\x9d\xb2\xa9\xf5\xdc\xd3\xf5\xcc\ \x69\x8d\xcc\x84\xad\xcc\x8b\xb4\xbb\xa3\xe3\xcd\x4a\x69\xdd\x50\ \x5e\xb7\xb0\xf7\xdf\x30\x37\xcd\x5a\x7b\xcd\xa1\xcd\xe2\x1a\x1a\ \xce\x71\x94\xce\xc0\xef\xe4\xaa\xbd\xcf\x39\x54\xcf\x40\x5b\xcf\ \xba\xe7\xd0\x5f\x7e\xe8\x45\x45\xe8\x4c\x4c\xd0\xad\xd8\xe9\x6f\ \x74\xbe\x8a\xc3\xd1\x56\x71\xea\xe6\xfb\xd2\x7a\x9a\xc4\xab\xe3\ \xd2\x89\xab\xec\x76\x78\xd2\xcb\xf7\xc5\x83\xb4\xee\x8f\x91\xef\ \x81\x81\xf0\x84\x84\xf8\xcb\xcb\xd3\x44\x5c\xf1\x93\x93\xd3\x53\ \x6d\xd4\x35\x49\xd4\x4b\x62\xd4\x69\x84\xf4\xe2\xe9\xf5\xb3\xb3\ \xe0\x0b\x0b\xd4\xc2\xeb\xf6\xd8\xdc\xf7\xc3\xc3\xd5\x62\x7b\xf9\ \xd4\xd4\xc8\xbd\xf3\xd5\xa5\xc8\xd6\x27\x37\xbe\x9a\xd5\xd7\x49\ \x5d\xd4\x5a\x73\xca\x86\xb2\xcb\x74\x9b\xf8\xc5\xc5\xd6\x39\x4c\ \xce\x80\xa6\xcb\x61\x85\xcd\x9a\xc4\xdf\xa8\xc0\xd3\x9a\xbe\xcb\ \x7a\xa2\xe4\x79\x84\xd4\x4e\x67\xd5\x40\x54\xe6\x73\x7c\xc4\xba\ \xf4\xe6\xc6\xda\xe7\x6a\x70\xe7\xb8\xc9\xc5\x66\x92\xe8\x5e\x60\ \xe8\x84\x8c\xc5\x73\xa1\xcd\x92\xbb\xb6\x9b\xe0\xcd\xb0\xde\xeb\ \xad\xb7\xeb\xe2\xf4\xc5\x8a\xbb\xd7\xb5\xd8\xcd\xac\xda\xc5\xa0\ \xd5\xed\xa3\xaa\xcd\xba\xea\xce\x55\x76\xc6\x5c\x86\xc8\x92\xc1\ \xd9\x59\x6d\xf0\xac\xb1\xc8\xb3\xe8\xd9\x87\xa1\xf1\x9e\xa1\xc0\ \xb6\xf4\xb9\x87\xc6\xf2\xbf\xc5\xda\x29\x35\xc2\x9b\xd3\xca\x5c\ \x81\xf4\xe9\xf1\xd0\x6d\x8d\xdb\x4b\x5a\xd0\xa6\xd0\xca\x64\x8c\ \xdc\x3a\x46\xc2\xa2\xda\xde\x98\xaf\xd1\x8d\xb1\xd1\xc5\xf1\xb9\ \xa6\xe9\xd2\xbb\xe5\xd2\x9d\xc2\xcc\xa5\xd2\xde\xb1\xcc\xd3\x74\ \x92\xe1\x3c\x42\xe3\x48\x4e\xcb\x9d\xcb\xe4\x64\x6d\xe2\x4e\x56\ \xc4\x7b\xac\xcb\xb2\xe2\xd4\x31\x44\xbf\x94\xce\xbc\x9c\xdb\xca\ \xa8\xd8\xd5\x93\xb4\xcd\x45\x63\xc5\x6c\x98\xb9\x8e\xce\xd0\x6f\ \x90\xc4\x7f\xb0\xda\x3d\x4c\xb7\xab\xf2\xda\x73\x89\xf4\xc6\xcb\ \xca\x6c\x93\xd8\x78\x92\xd4\x70\x8d\xc3\xb2\xec\xec\x92\x97\xec\ \xd3\xe3\xf6\xde\xe3\xc5\x88\xba\xd1\x86\xa9\xe1\x82\x92\xf8\xd3\ \xd5\xe1\x9b\xaf\xe1\x9c\xb0\xd3\x2e\x42\xd0\xaa\xd3\xdb\x93\xac\ \xdb\xc7\xe9\xe2\xdb\xf7\xc7\x79\xa7\xdb\x61\x74\xe1\xbd\xd5\xd1\ \x46\x61\xe4\x54\x5a\xc9\x7e\xa9\xd2\x3a\x52\xe8\xcf\xe2\xc2\x95\ \xcc\xbd\x3d\xa6\xd0\x00\x00\x37\x22\x49\x44\x41\x54\x78\x5e\x94\ \x5d\xe3\xa3\x6d\xbb\xae\x5f\x5f\x06\xa7\xb5\x8c\x6d\xdb\x38\xb6\ \x6d\xdb\xb6\x8d\x4b\xdb\xb6\x6d\x1b\xcf\xb6\xed\xf7\x17\xbc\x36\ \x0d\x9a\xb6\xf3\xec\xfb\x32\x30\xc7\x39\x9f\x7e\x3b\x6a\x92\xa6\ \x59\x13\x8d\x46\xb3\x21\xd4\x33\x4f\x51\x98\xc7\x5e\xe6\x06\xc2\ \x9f\x1c\x1e\xf3\xae\xeb\xc2\x5c\xf6\xd7\x7e\xd5\x79\x5e\x0b\x55\ \x95\x79\x95\xf6\x2a\xcd\xaf\xa2\xb6\xbd\xe1\x81\xbb\xdd\xc6\x17\ \xd1\x04\xde\xe6\x32\xb7\x7d\x14\x35\x9a\x4d\x0b\xb5\xc9\x48\x0d\ \x4c\xc1\x09\x1f\x44\xb9\x45\x57\xd4\x16\x2a\x80\x74\x6f\x86\x59\ \xd9\x57\x89\x77\x09\x28\xe1\x3b\xa0\xb6\x80\x84\x87\xde\x02\xb6\ \x6b\x91\x9a\x4b\x93\x05\x69\x51\x36\x89\xa3\x8c\x14\xa0\xf6\x0a\ \x26\x00\x68\x2e\x8b\x37\x37\x2f\xe0\x26\x22\x65\xac\x15\x20\x23\ \xa4\xfc\x12\x94\x02\x55\xa1\x14\xa8\x70\x75\x3d\x84\xd3\xee\x87\ \x50\x32\x4e\x07\xd5\x62\xec\x99\x87\x05\x2f\x84\x38\x9d\x0a\xe4\ \x9a\xa1\x55\x55\x02\x5f\xe1\x42\xcc\x4c\x22\x7a\x7a\x29\x98\x5d\ \x80\x08\xfc\xc4\x6f\xf3\xd5\xf5\x44\x6f\x2f\x0f\x29\x0a\xbc\x41\ \x52\xef\x11\x53\x73\x50\x51\x44\x59\xd7\x80\x95\x18\x5a\xe5\x16\ \x68\xe5\xae\x4a\x31\x34\xa2\x76\x3b\x33\x44\xf2\xcf\x80\xab\x88\ \xb4\x0b\x00\x01\x62\x2c\xfa\xd0\x9a\x0a\x78\x03\x4a\x78\x31\x59\ \x84\xcc\x49\x03\xba\xce\x45\x4b\xf3\xaa\x26\x9c\xc0\x55\xd4\x4e\ \xf3\x25\x5c\xcd\x32\x10\x37\x7c\x65\x1e\x3f\xb3\x0c\x65\x0e\x60\ \x01\x24\x50\x37\x30\x26\x43\xc8\x50\x11\x7e\xd1\x13\xa3\x6f\x30\ \x47\xf9\x05\x1c\x35\x6f\xa0\x9c\xde\x15\xca\xbf\x34\x1c\xa5\x4b\ \x11\x8b\x3d\x03\x8c\x09\x1d\xed\x76\x01\x30\x1a\x13\x21\x26\x1d\ \x4d\xb9\x27\x23\x6f\xf8\x70\xc2\x17\x9e\x8a\x73\xaa\xdd\x6f\x0e\ \x97\x11\x3d\x19\x93\x98\x3d\x72\x52\xc3\xcd\x58\x53\xdb\xb1\x92\ \x12\x47\xe1\x01\x07\xd5\x15\x83\x6a\x92\xe4\x9b\xca\x3d\x59\x96\ \xba\x47\x48\xbc\x28\xfe\xb2\xdc\xf3\xdc\x09\x1d\x59\x4a\x30\xe1\ \xb7\xaa\xc4\x90\x18\xa1\xe1\x2a\x50\x3b\xd3\x48\xbb\xe4\x9d\x62\ \x1d\x05\x27\xca\x68\xc5\xe8\x41\x3f\x01\xab\x46\x8a\x9c\x25\xbe\ \x16\x06\x65\x85\x1c\x05\xfd\xb4\xf0\x1c\xd8\x5a\x98\x29\x18\xf9\ \xdb\x82\x6c\xdb\x9b\xd9\xda\x15\xd3\x07\x90\xf4\x9a\x4e\x19\x53\ \x4f\x7c\xbd\x05\x0b\x62\x17\x1d\x65\x63\xd2\xc2\xd7\xeb\x52\x69\ \x11\x03\x4c\xb8\x2b\x73\x31\x3a\x7e\x80\xa3\x68\xfd\x9a\xa5\xa2\ \x9f\x11\x47\x09\x6a\xec\x49\xc1\x90\x64\x01\x45\xf7\xe4\x50\xb2\ \xe8\x11\x68\x2e\xa2\x07\x69\x03\xcc\x94\x8a\xb2\x5b\x02\x9e\x66\ \x4a\x43\xb5\x2d\x85\x40\xc5\xdd\xdb\x0b\x17\xa4\x1e\x72\xd4\x17\ \x7d\x8d\x70\x59\xec\xc0\x50\x54\xd3\xca\x88\x9f\x78\xa9\x04\xcf\ \xfe\x29\x63\x96\x66\x4c\x6d\x65\xf9\x5d\xb8\x49\x41\xbb\x91\x1f\ \x25\xac\x42\x80\x17\x48\x61\xcd\x79\xbd\x17\x99\xc3\x0f\x9a\x53\ \x55\x3b\xab\x27\xb0\xf0\x1d\x53\x1b\x31\x02\x47\x05\x25\x3a\x7c\ \x44\x1a\xc5\x25\xca\x92\x88\xa1\x12\x96\x68\xca\x91\x9f\xf6\x8d\ \xbe\x34\x17\xc1\xa3\xf4\x79\x0d\x0d\x9c\x13\xf9\xd0\x8c\x89\x25\ \x2f\xb6\x84\x3a\xda\x0e\x84\x3f\x8d\xc6\xa4\xa3\x12\x40\x09\x70\ \xc9\xea\x1b\x8e\x9b\x68\xf4\xa2\xa6\x20\x75\x74\xf6\x39\x30\x14\ \xf8\xa9\x38\xaa\xbc\x53\x66\x6e\x7b\x39\xfd\x7c\xfb\x51\x67\x31\ \x47\xc5\x3d\xbd\x94\x31\x01\x89\x9e\x5a\xa2\x30\x4f\xcc\x3e\x87\ \xa7\x66\xd1\x13\x54\xa2\xca\x3e\x3e\x59\x8c\x62\xf2\x80\x90\x19\ \xba\xe2\x97\x4f\x2f\xff\xbd\xc5\xc5\x1f\x35\x30\xdc\x63\x96\x2a\ \x66\xe2\xcf\x34\xeb\xa8\x8a\x9f\x7a\x40\x18\xe6\x11\x4c\xc4\xea\ \x0b\x1f\x03\x67\x85\x15\x97\x7c\x21\x34\x26\xc2\xea\xd8\x79\xeb\ \x65\x7b\x46\x8b\x8e\x0e\x2b\xfd\x10\x0f\x71\xb2\x23\x8d\xe3\x51\ \xa1\x1e\x42\xb5\x30\x5d\xb4\xe7\xa1\xe4\x98\x94\x3c\xbe\xc0\x44\ \xef\x54\x05\x30\x2b\x01\x59\x66\xee\x3e\x7f\xfd\xa2\xd0\xcd\x4d\ \xe0\xa7\x04\x25\x14\xe2\x27\xdc\x53\xe0\xf2\x99\xa3\x8c\x50\xa0\ \xe2\x2d\x4b\x28\xad\xf6\xc4\x50\x67\xfb\x08\x12\xde\x9a\xb2\x72\ \xf9\x53\x8b\x3e\xad\x19\xa8\xa8\x59\x8c\x3e\x62\x29\x58\x12\x43\ \xed\x21\x4f\x0b\x5c\xf3\x7b\x70\x19\xac\x80\x10\x43\xd1\x42\x2c\ \x49\x67\x23\xd6\x97\x32\x47\x61\x51\x52\x3a\x6a\x9f\xa7\xa7\x14\ \xce\xd1\xfe\x61\x2a\xc2\x4f\xaf\xf5\x9a\xa1\x05\xf2\x14\xf5\x13\ \x6d\x89\x29\x47\x5b\xa2\x74\x84\xd9\x59\x29\xc9\x2b\x8e\x3e\x7d\ \x96\x48\xff\x70\x87\x6f\x76\xcb\x8e\xc3\xb6\x1e\x30\x5f\x57\x19\ \xa0\x19\x61\x9c\x50\x09\x1e\x39\x7c\xb4\xa7\x26\xc5\xf7\x82\x15\ \x90\xe2\x12\x8a\x30\x45\x49\xc5\xe6\x49\xf2\xb5\xc7\x4f\x73\xb9\ \x20\x9f\xc3\xa6\xaa\x7c\xfb\xe2\xe8\x1b\x35\x1a\xfd\xcf\x00\xe6\ \xe6\x85\x41\xab\x32\xea\x7a\xe6\x9a\x4d\xc3\x3e\x02\x25\xb0\x88\ \x36\x4e\xef\xd8\xe6\x65\x0d\x35\x18\x1d\x47\x25\x28\x01\x80\x51\ \xb2\x0c\xaf\x5c\x59\x3d\x46\xf8\x10\x3b\xdf\xf8\xa5\xbb\x3e\x37\ \x35\x7f\xf4\xd4\x68\xb4\xaa\x8f\x2c\x3d\xdf\x02\xdd\x3c\x6c\x64\ \x48\x8d\x06\xc1\x9c\xc0\x47\x74\x34\xe0\xaa\x4b\x96\x15\xd4\x1e\ \x7b\xfc\x84\x31\xb9\x24\xc4\x3c\xe8\x9e\x04\xa5\x76\x4c\xe5\x19\ \x2f\x82\x0b\x72\x7e\xe8\x85\xdc\x39\xa7\x0f\x5b\xa0\xab\xff\xee\ \xd6\xe7\xbf\x7a\xd4\xd9\x97\xbd\x78\xef\xd9\x5f\xfd\x76\xdb\x13\ \xbd\xb9\xd3\xf1\x68\xda\xe1\xcb\x32\x8a\x3c\xed\x31\x37\x73\x90\ \xbc\x35\xaa\x1c\xd7\x26\xed\xa0\x6a\x5a\xa0\xaa\x4f\xbf\xa8\x8c\ \xe6\x8e\x19\xc7\xd1\x3f\x5e\x0c\x68\xee\xb8\x73\x55\x56\xdf\xd6\ \xf1\x68\x9b\x34\x94\x96\xd0\xa6\x06\x0a\x2f\x61\xaa\xcf\x51\x5c\ \xe1\x41\x07\x48\x49\x73\xc9\xec\xd0\x9a\x96\x9f\x0c\x30\x98\xa5\ \x9b\xfa\xce\xea\x57\xec\x09\x91\x8e\x56\xe7\xed\x8c\xc5\xae\x63\ \xbc\x50\x47\xa3\x15\x14\x74\x14\x73\x7a\x6d\x4e\x94\xdb\x81\xc3\ \x87\x5b\x17\x4b\x48\xf8\x47\x3b\x89\xaf\x9c\xdd\xbc\xf9\x2a\xeb\ \xdf\x37\xf6\xd1\xea\x6f\x9d\x5b\x0c\x69\x7b\xed\xfb\xa6\xb1\xf1\ \x28\x46\x24\x02\x14\xdd\x53\xc0\xce\xf7\x3f\x7f\xd7\x15\x3d\xa8\ \x92\x60\x18\x9a\xe7\x90\xd9\x6b\xb9\x13\xce\x8b\x00\xe7\xba\x1d\ \xc3\x7e\xb3\x91\x3f\xbc\x7a\xf1\xaa\x7d\x04\xb4\xbc\xf1\xa4\xfd\ \x96\xc7\x7b\x56\xae\x5a\xb3\x6e\x16\x9c\xea\x85\x7d\x01\xda\x65\ \x55\x65\xd2\x05\x08\xe5\x9b\xd8\xea\x71\x05\x7d\xff\xb6\x23\xd7\ \x1b\x0e\xad\x1a\x48\xa5\x04\x90\xe6\x58\xd5\xb9\xe0\xb9\x8b\x9e\ \xbd\xe8\x97\x4f\x38\x8e\xe6\x16\xed\x89\x16\xc0\xed\xc3\x99\x1c\ \xfc\x53\x79\x4b\xbf\xe3\xd6\x79\x78\x17\xa7\xfd\xcf\x17\x07\xfd\ \x4e\x67\xa6\xd9\x7c\x78\xde\x0a\x7f\x58\x8b\x86\x8a\x82\xb6\xbb\ \xda\xa0\x08\x24\xfe\xaa\x95\x09\x60\x6d\x9b\x74\xba\x34\x9a\x5b\ \x28\x0a\xd4\x50\x20\xe7\x98\x7e\x7c\x0f\xaa\xdd\xdc\x29\xe8\x42\ \x0d\x81\x5b\xdf\xda\x5a\x71\xe3\xe7\x3f\x7a\xeb\x09\xa7\x3f\xff\ \xde\xe5\xfe\xe2\xe4\xd1\xb7\x2d\x4b\x97\x01\x50\xb5\x2c\x49\x68\ \x72\x48\xf7\xc4\x1c\xfd\x26\x29\xfd\x68\xf4\xee\x16\x31\x94\xa8\ \x3e\xc3\x5b\xb9\x47\xb3\x05\x09\xff\x5e\x31\xa3\x91\xfd\x19\x9d\ \x73\x23\x85\x79\x4f\x1f\x7e\xcc\x72\x0a\x9b\xff\xf5\x78\xcb\x82\ \x2b\x87\xa5\x30\x94\x0b\x3a\x49\xd1\x7b\x2e\x1f\x82\x7b\x0a\x4a\ \xec\xf3\xa7\x82\x64\x63\x3f\xcf\x61\xbd\x27\x98\xef\x38\x5a\x9b\ \xc5\x8e\x1c\x79\x7a\x46\x64\x31\x73\xff\x04\x1c\x05\x1e\x5e\x78\ \xca\x59\x59\x76\xee\xaf\x8e\x5a\xef\x24\xb1\x73\xe0\x67\x77\x6c\ \x47\x71\x98\x17\x97\x9e\x70\x09\x05\xac\x17\x5b\x30\x93\x6f\xdd\ \xbf\xe8\x94\x54\x60\xe6\xf5\x0d\x23\xc6\xb1\x6c\x19\x78\xf2\x3e\ \xad\xf6\x27\x46\x48\x2f\x7c\x0f\xf0\x74\xb9\xc3\x3d\x3f\xc5\xce\ \xeb\xe0\xb0\x6a\x67\x5e\x72\xa7\xd7\xcf\xb6\x02\xca\x72\x77\x84\ \x25\x1d\x27\xfc\xde\xe5\x7f\xbf\x63\xf7\xb0\xff\x1a\x0b\x64\xa1\ \x47\x09\x09\xa8\xe8\xe1\x0e\xc2\xfe\x3f\x5f\x18\xf4\xaf\xff\xa9\ \xfd\x7c\x3c\xc7\x20\xbf\x3c\x4e\xfe\x11\x0f\x39\x8f\xb4\xb9\x61\ \x65\xff\x07\x81\x17\x9d\xda\x3e\x6c\x20\x4c\x0e\xf0\x83\xca\xb3\ \x88\x1e\xee\x66\xe0\x49\x29\xb9\xeb\x39\x47\xfa\x0a\x8b\xe3\xc1\ \x16\xc0\x24\xba\xc2\x0a\x6e\xf6\x85\x61\xbf\x61\x60\x7f\xc0\x02\ \xd8\xd2\xaa\x2a\x84\x9a\xbf\xf1\x83\x5b\xb6\xef\xb8\xf3\x91\x07\ \x06\xfd\xf7\xfc\x0d\xb0\x7b\x50\x5a\x3a\x59\xe1\xbc\x6a\xf7\x00\ \xfc\x3d\x33\xb4\x8b\x0b\x52\x4c\x41\xfd\xa1\xa0\xb5\xbe\xd0\x25\ \xb2\xb5\x73\xb0\xbe\x00\x37\xc9\xe6\xeb\xc7\x7e\x7a\x70\x61\xd0\ \xc9\xf3\x1b\xcf\x3c\xfd\xb5\x20\xec\xd9\x7e\x55\x8a\xd7\xaf\xf2\ \xda\x65\x4d\x7b\x17\x21\xa0\x83\xea\xc3\xf9\x02\x73\xf2\xb6\x07\ \x06\xad\xb2\x2d\x40\x4d\x0e\xda\x25\x63\x4a\xc5\xa3\x51\x94\x07\ \x69\x88\xc3\xca\x75\xdc\x63\xac\x90\x07\x06\xa5\x8f\xb5\xd1\x32\ \xcc\x3c\xf3\x17\xcc\xa1\xf9\x21\x55\xa0\xce\x3a\xff\xd5\x1c\x91\ \x7e\x1d\x6c\xee\xc0\x10\xbc\xd3\x59\x7b\x16\xe7\x6f\x3b\xb8\x79\ \xd3\x6d\x3b\x76\xef\xea\x14\x92\x31\x8b\x41\x71\xf0\xf4\x92\x0e\ \xbf\xc0\xb5\x1e\x55\x14\xa2\x67\xb8\xef\xb7\x40\xf6\xf5\x1c\x44\ \x11\xff\x13\x5f\x52\xb2\xdc\x59\xd4\x50\x26\xfb\x80\xf1\xe4\xd7\ \x3c\x01\x01\xe9\xad\xc7\x38\xe3\xde\xdd\xcf\xc0\x91\xee\xbd\x64\ \x61\x00\xf1\x17\x96\x71\xb9\x92\xdb\x05\xd9\x8b\x7e\xa6\x45\xaf\ \xa2\x12\x4c\xeb\x54\x75\xf4\xbb\xa8\xa4\xc0\x4f\x96\xfe\xf7\x0c\ \x20\x9f\xee\x6e\xb9\xfa\xe8\x09\xa0\x81\x27\xde\xf3\xba\xa7\x70\ \x39\x18\xdd\x36\xcc\x33\x8b\x14\x88\xb7\x46\xb2\x92\x2d\x5e\x72\ \x3b\x4a\xee\xe2\x4a\x89\x4e\x46\x5c\x1e\xfa\x9b\xbf\xff\xac\x4e\ \xee\x46\xa4\xa4\x9e\x96\x5e\x30\x85\x99\xcf\xec\xe6\xad\x77\x5e\ \x08\x4a\xea\x2a\x7a\x2f\x63\xe8\x8c\xb3\x99\x61\xed\x81\xb1\x96\ \xc8\x51\x4f\x49\x55\xe0\x6c\x50\x2b\xa0\xd1\x96\xd8\xc5\x4f\x5e\ \xf0\xbe\x8b\x0d\xae\xed\x06\x36\xc2\x64\x25\x05\x98\x44\x6b\x27\ \xc1\xfd\x6c\xde\x3d\xec\xb4\x1a\xc5\x5d\xe6\x7b\xfd\xd0\x19\xd2\ \x72\x8d\x73\xe5\x9d\xc3\x1e\xae\x4c\xee\x41\x69\x03\x5f\xe1\x9b\ \xcd\x9e\xd7\x25\xf3\xf9\x52\x79\xfd\x2d\x9f\x3c\xc6\x09\x0b\x60\ \xf5\x84\xa3\xa0\xa4\xa3\x85\xc2\x07\x7a\xba\x05\xb1\xea\x91\x61\ \xc3\xe6\x4a\x4f\x80\x2e\x1e\x7c\xec\xba\xbd\x46\xf6\xd5\xbc\x44\ \xa3\xa3\x75\x0f\xee\xea\xe7\x94\xdd\x59\xc2\xdd\x06\x45\xac\xa5\ \x13\xe4\x48\x85\xb4\xe8\x9b\x86\x97\x0f\x1f\xb7\x5e\x99\x46\x83\ \xac\x5e\x3c\x29\x21\xad\xcd\x6d\x19\x3a\xbf\x7b\x60\xff\xa3\xfa\ \x8d\x49\xc0\x65\xa3\xac\xd3\x0c\x57\x4f\x37\xe6\x73\xd5\xea\xfd\ \xfb\xd7\xdd\xbc\x75\x61\x57\xab\xa6\xea\x13\x70\x95\x44\x0f\x37\ \x9b\x12\xe0\xa4\x5d\x11\x7a\xd2\x79\x7d\xf3\x55\x41\x54\xbb\x75\ \xc6\x4f\x95\xd1\x93\x8a\x7b\xba\xd1\x65\x6a\x36\x7a\xae\xce\x9c\ \x12\x7d\x7c\xb4\x61\x84\x7f\xc3\xcd\x3b\x87\xcd\x56\xa7\xd3\xea\ \xe5\x54\x25\x13\xc1\x13\x47\xc1\x94\x32\xcd\x52\x85\x34\xad\xa3\ \x88\x53\xe8\xc0\x12\x30\x94\x3d\x29\x2c\xf7\x39\xd3\xbb\x20\x3a\ \xbe\xbe\xce\xdf\x70\x03\xb0\x13\x69\xfd\x42\xcb\xba\xcf\xbc\x97\ \x73\x2d\x4f\x28\xcb\xd8\xf0\x41\x3f\xe1\x42\x94\x8c\xd3\x7c\xcb\ \x5a\x1f\xeb\xe8\x93\x0e\xe7\xfc\xcd\x5b\x1f\x7d\x61\xeb\x95\x50\ \x6f\x19\xfa\x1c\x7d\x0c\x94\xb4\x27\x46\xff\x06\xa7\xc9\x5f\x3b\ \x62\xca\x33\xef\xf5\x9b\x76\x0e\x73\x48\x9b\x21\xab\x57\x48\x7d\ \xbb\xa7\x4d\xc6\x4c\x6b\x28\xd7\x47\xa3\xb5\x9e\xdd\x68\x6f\x19\ \x18\xd0\xd6\xe1\xd2\x4c\xd3\xb8\xa8\x2f\x1b\x54\xab\x86\x45\x41\ \xf5\xdc\x1c\x95\xb4\xe9\xb1\xf4\x3e\x6d\xda\x5b\xd6\xaf\xbb\xfb\ \x71\x93\x7d\xd4\x5c\xc6\xab\xec\x55\x97\x42\x82\x54\xf6\x98\x32\ \x65\x4e\x2c\xfa\x90\x38\x65\xfa\x4d\xf0\x23\x0b\x03\xfb\x5d\x18\ \xa4\xe7\x2d\xee\x79\x74\x48\x69\x93\x5e\xee\x89\x7e\xbe\x07\x02\ \x6a\xc7\xca\x8d\xfb\x96\x8a\x7e\xab\xa8\xad\xcd\xfb\x65\x9d\x40\ \xf2\x58\xc6\xe7\xed\x30\xb5\x19\x2a\xdb\x37\xdd\x08\x28\xc7\xf7\ \x47\x1a\x18\x53\x3b\x87\x16\x26\xac\x4e\xb7\xbc\xef\x81\x5d\xba\ \x82\xef\x94\x34\x5f\xfe\xb2\x67\x26\xe7\x4f\x82\xbd\xd0\x4f\xfc\ \x68\xd1\xe1\x5c\xb6\xf1\xb0\x61\xab\x76\x05\x9d\xaa\x74\xaf\x52\ \xa0\x0a\x33\x19\x26\x60\xa3\x5f\x5e\x95\xba\xe8\xf0\xbb\x00\x18\ \x49\xd7\xf0\xbf\x35\x67\x38\x33\x3b\xb4\x3a\x80\x64\x3f\xd4\xde\ \x32\x28\xe9\xec\xbc\x83\x76\x5b\x03\xd6\xa6\x27\xdf\xb6\x6e\xcd\ \x4f\xae\xf9\xf8\xae\xa5\x26\x55\xca\x4a\xfb\x01\x18\xe9\xf2\x4c\ \x8a\xb7\x41\x4b\xf7\xab\xc5\x2e\x85\xbc\x74\x21\x17\x6e\x58\xcb\ \x77\x0c\xdc\xe6\x32\x52\x61\x6f\x66\xe9\xbb\x9e\x65\x75\x04\x1d\ \x40\x67\x5a\xb4\x3a\xcd\x46\x4f\x2a\x7a\x75\x49\xc2\x47\xb6\x2a\ \x8b\xf7\x77\x42\x33\x78\x48\xee\xba\x09\x42\xa0\xea\x42\x2e\xaa\ \xe8\x9d\x1d\x17\x3f\x29\xa4\x00\xf2\x86\x67\xe6\x75\x66\xb1\xb3\ \x9f\xe3\x6e\x98\x6a\xd6\xb0\x46\x54\x0b\x4a\x8d\xb4\x24\xa0\x60\ \xf3\x8c\x30\xf3\xc2\x51\x00\xa9\xb2\xa6\x30\xc2\x7f\x12\x38\xda\ \x81\x22\x3e\xd1\xe5\x27\x3d\xf6\x70\xcf\xc2\xfc\xda\x48\xa1\x9c\ \x9f\xdd\x3a\xec\xf7\x20\xb1\xcf\x0b\x5d\x23\xb3\xbf\x65\x45\x84\ \x20\x2b\x56\x52\x14\xbd\x28\x40\x68\xf4\xdd\x20\x6b\x12\xa3\xa2\ \xc2\xd3\x77\x60\xa5\xee\xcb\xb6\x48\xaf\xb8\xda\x18\xf5\x89\x1d\ \xe3\xf0\xef\x1b\xc9\xc2\x3d\x3f\xbb\x65\xe7\xb0\x3f\xd3\xe0\x30\ \x9f\x8b\x4f\xf6\x26\xa0\x22\x77\x36\x25\x78\x89\x31\xc1\x0d\xec\ \xf4\x63\x12\xe5\x9d\xda\x69\xf7\x64\x45\xbb\x72\x09\x34\xd4\x81\ \xbd\x7a\xbd\xc5\xb6\xaf\x59\x14\xaf\x23\x79\x9f\x83\x20\x11\x25\ \x3c\xb5\x47\x95\x88\xbe\x64\xb0\x0a\x2a\xb9\x27\xe1\xa8\xc7\x54\ \xde\xb9\x83\x8f\x71\x65\xc7\x3f\x84\x32\x4c\x0b\xf9\x59\x7c\xf7\ \xcb\x73\xb0\x00\x0c\x0d\xd0\xcb\x8d\x7e\x1e\xff\xd6\x2d\x3b\x07\ \x4b\x9d\x06\x78\x51\x42\x4a\xdc\x14\xaa\x70\xd7\x8e\xc0\xaa\x45\ \x94\x8c\x09\xe0\x91\xd5\xc7\x1b\xf6\x91\x86\x4e\x73\x84\x0f\xfe\ \xe9\x21\x28\x5b\x7c\xff\x5b\xbd\xc6\x77\x5e\x75\x1c\x26\x18\x0f\ \xbd\x30\xb4\xe6\xf4\xa1\x37\x9a\x64\xb2\xd3\xc0\xfd\x86\x00\xa9\ \x7b\x4a\x2c\xe7\x61\x77\x0e\xa4\x75\xf0\x28\x0d\x45\x33\x02\xb8\ \x98\x85\xa4\x71\xb6\x13\x56\x8f\x57\xe3\x31\x0a\x2a\x24\x36\x19\ \x6d\x1d\x36\xf5\x5e\x83\x20\x05\x53\x8a\x38\x5a\xd6\xdc\xf8\xc0\ \x18\x2b\x96\x3c\x00\x25\xd9\x3b\x8e\x66\x71\x3c\xaa\xeb\x8e\xba\ \xb1\x00\x5e\xe7\x2c\x06\xb4\xe6\xf1\x61\x8b\x20\x4a\xcd\x59\xb1\ \xd4\xdb\x65\xc2\xce\x07\x44\x0b\x38\xb5\xc3\xa7\x95\x49\xb4\xd3\ \x92\x4a\xeb\x39\xc2\x8f\x3b\x75\xfc\x12\xd9\xc7\x14\xcc\xd5\xdb\ \x4d\x69\x41\x73\x53\x65\x4c\x96\x22\x7e\x52\x37\x51\x4d\x1a\x0a\ \x38\xc5\x96\xd0\xdf\x67\xa2\xa6\xf1\x16\x23\x2f\x4e\xe3\x77\xee\ \x3e\xb9\x9f\x50\xae\x3a\x68\xec\xbb\x09\x05\xbd\x90\xa7\x92\xd7\ \xe3\x25\x30\x81\x2a\xe4\x28\x1b\x53\x15\x59\x53\x96\xd1\x2a\x0f\ \xfc\x65\xd1\x23\xdc\xe4\x6e\x83\xce\x41\x9b\x6f\xbe\x7b\xe3\xc6\ \x4d\x07\x77\x98\x6a\x52\x93\x3a\xca\x98\x04\xa4\x92\xbd\x90\x34\ \xbe\x40\xed\x21\x82\x09\x37\xb0\x51\xae\x52\x5b\x93\x94\x74\x92\ \xc6\xa4\xa8\x35\x33\x03\xc8\x99\x9b\x0d\xda\x68\xd2\xb2\x67\x94\ \x9a\x70\xbb\xbe\x2a\x45\x49\x85\x9f\x2c\x7b\xbd\xcc\x97\x58\x78\ \xf2\x9a\x4a\xe2\x1a\x7e\x5c\x29\x91\xa0\x44\xc2\x3c\xa1\x9a\x2f\ \x59\x3d\x0b\xf6\xf7\x68\x4d\xd2\x9d\x17\xb6\x40\xf0\x4b\xc1\x14\ \xa2\x08\x3f\x1d\x8f\x2a\xac\x02\x53\x6f\x84\xe6\x82\x8f\x36\xeb\ \xe1\xd2\xed\x8e\x28\x7a\xba\x3c\xca\xbc\x9e\xa2\x44\xbf\x23\x32\ \x51\xfd\xb4\x3d\xff\x04\x38\x83\x5d\x50\x07\x53\xda\x47\xf5\x36\ \x38\x35\x42\x8c\x93\x7a\x55\xd9\x07\x41\xd6\x9a\xa1\xa0\xa4\x6d\ \xe6\x68\x92\xc4\x87\xc6\x05\x88\x40\x4b\x7b\x08\xb7\x30\x17\x48\ \x5f\x70\x52\xd7\x28\x77\x96\x08\xe2\xaa\x62\xab\xb7\xdf\x2c\x76\ \xc2\x9c\xb1\x7b\x2a\x69\xed\x04\xbc\x21\x53\xc7\xaf\x4c\x7a\x9f\ \x09\x75\x94\xf7\xc2\x74\x3b\x11\xf4\x8f\x32\x3e\xe5\x9e\x2a\xb8\ \x4a\x04\x6a\x11\xea\x4e\xd7\x36\xbe\xb3\x52\xf0\x65\x8a\x93\xa2\ \xa4\x09\x6a\x46\x9b\xa1\xb2\x7b\x47\x85\x47\xd1\x51\x7b\xe7\xac\ \xa9\x45\x91\x0a\x49\x80\x91\xc0\x61\x0f\x25\x1b\x7b\x09\xcc\xa4\ \x4e\x52\x88\x4c\x05\x2a\x5f\xd1\xe6\xcd\x34\xea\xa8\xaa\x3a\x02\ \x35\x02\x25\xad\xf1\x45\x1c\xe5\x1e\xe7\x42\x47\xf8\xd2\x39\x9c\ \x68\xca\x04\x80\xe0\x4e\xa9\x40\x96\xb0\x79\xb5\x2d\x12\x17\x72\ \xd1\x75\xba\x08\x9f\x37\x1b\xe2\x1e\xe7\x3a\xd6\xce\xdc\x13\x3d\ \xf7\x91\x51\x6c\x02\x97\x47\x80\xd2\x01\x0e\x31\xa2\xf0\x59\x49\ \x35\xe9\x8d\x06\x78\x73\xda\xa4\x76\x6c\x69\x1b\x5c\x50\xc2\x43\ \x70\x75\x76\xc7\x62\xaf\x6b\x95\x2f\x65\x28\xf1\x64\xa3\xeb\x04\ \xde\x02\x52\x73\x54\x59\x53\x51\x30\x4f\x0d\x46\xf3\x08\x4b\x45\ \x51\x2d\x4c\x81\xaa\x71\x02\x36\x88\x4c\x04\x64\x9d\x6a\x77\x2c\ \xd3\x2e\x5f\xdc\x28\xfc\x26\x5a\xde\x84\x40\xea\xc8\x4f\x6c\xd4\ \x02\xdd\x74\x0f\x5e\x8e\xab\xa0\xa3\xd1\xb9\x06\x30\xfd\x9a\x20\ \x46\x59\x28\x94\xc4\xa9\x92\x57\x0a\x3b\x25\x9d\x4f\xd5\x75\x02\ \x5b\xe2\xe6\x51\x92\x7d\x44\x0c\xb2\xce\xfd\x0e\x88\x92\x8c\xc9\ \x57\x51\x78\x2b\xb3\x07\x4b\x02\x37\x1a\xf7\x63\x33\x64\x42\x19\ \xaf\xf5\xc0\x55\x61\xa7\x18\xbc\x94\x1f\x74\xf7\xa0\xbc\x74\x34\ \x4a\x1c\xc5\x64\x04\x81\xc6\x8b\xbd\x4a\xef\xe2\x45\x29\xf6\xa4\ \xa1\xe8\x0b\x7c\xa0\x4e\x86\x15\x7c\xc1\x49\xbf\x04\x98\x48\x15\ \x20\xd8\x39\x55\xe2\xee\x85\x50\x37\xd5\xaa\xc4\xd2\x57\xeb\x53\ \x2a\x5d\x16\x12\x93\x4a\x72\xd4\xf7\xa7\xfc\xa1\xa1\x02\x91\x6e\ \xd6\x31\x4a\xf9\x48\x49\x1d\x10\xa6\x33\x7b\xcc\xed\xd8\xdd\x5b\ \x88\xa8\xa5\x88\x56\x88\xd7\x7a\xf7\x26\xb2\xa0\xd1\xe8\x49\xde\ \x74\x0a\x03\x38\x2b\xe8\x32\x4f\xec\xca\x37\x95\x7e\xd7\x53\x8a\ \xa1\xd3\xe1\x7e\x3d\x8b\x1f\x2e\xe0\xac\x8e\x45\xc1\x99\xe2\x8a\ \x24\xf6\xa4\xe2\x12\xdf\x8c\xea\xb4\xe0\xe1\x8a\xce\x08\x09\x50\ \xe4\x67\xc8\x51\x45\xc4\x50\xca\x97\x84\x72\x56\x50\x8a\xf3\xc2\ \xe4\x8e\xac\x5e\xae\x04\x58\xc1\xe9\x70\xeb\xc5\x9e\x1d\xe9\xa1\ \xdb\xdb\x85\x9f\xda\x96\x30\x22\x09\xda\xdb\x45\x07\x38\xb8\xa7\ \x57\x2a\xc2\xcf\xda\x5e\xe8\x9c\x0e\x45\xe9\x15\x10\xad\xf4\x68\ \xea\xa8\x9e\x80\x13\xff\x87\xa1\x86\x1f\x8f\xb2\x97\xd2\xba\x5a\ \xe2\x8b\x78\x89\x77\x50\x1a\x0f\xdc\x53\x49\x76\x1f\x83\x8d\x9a\ \xb1\x05\xa7\xb8\x27\x87\x91\x20\x36\x24\x70\x16\xa4\xc2\xd2\x42\ \xbb\x52\x11\x3d\xac\x4e\xc2\x4c\xbd\x84\xea\xf5\x53\x3c\x7d\xd2\ \x95\x4e\x8b\xe8\x63\x3d\xa5\x48\x4f\xf5\x8e\x4a\x2c\x2a\x50\x35\ \x4e\x0f\x69\x85\xa2\xaf\xb5\x72\xf2\xaf\xc2\x7b\xc8\x46\x9d\xc8\ \x94\x50\xd6\xcc\x51\x9f\x1c\x52\x12\x7b\x1a\x66\x70\x48\xa8\x4a\ \xe4\xa0\x9e\xe0\x43\xb9\x13\x4f\x63\xa8\x0d\xed\x48\x7b\x08\x17\ \xfd\xa8\x40\xad\xa3\x65\x94\x6f\x8d\x95\x71\x92\x13\xad\x62\xaf\ \x9f\x54\x4e\xd5\x8e\x1b\x53\xea\xf8\x45\x41\xbe\x54\x13\xb5\x65\ \x32\x52\xfa\x12\x9c\x64\x4d\x5e\x72\x57\x7b\x6b\x91\x58\x13\xfb\ \xfc\x90\xa5\x11\xa5\x39\xea\x4c\x5e\x4e\x0b\xe1\xe5\x91\xc4\xa3\ \x31\x2f\x45\xf4\x08\x14\x9e\xf8\x80\x98\x68\x67\xe2\x00\xeb\x38\ \x0a\x63\x51\xdf\xe3\x17\x72\xde\x92\x97\x4e\xfc\xc0\x28\x2f\xc2\ \x2b\xa2\x27\xf1\x87\x82\x47\x2f\x9a\xce\xed\xd3\x52\x9f\xe6\x54\ \x44\xa3\x05\x98\x12\x98\x68\xaa\x95\xf0\xe3\x45\x49\x5e\x88\xb6\ \xf2\xc5\xdf\x26\xac\xc4\x4e\x7e\x4f\xa4\x81\x8e\x5f\x99\xe4\xec\ \x4d\x4f\x67\xf5\x12\x34\x49\x5e\x2f\x4b\x68\xec\x45\xeb\x14\x4b\ \xdb\x1c\xe5\x27\xad\xe9\x10\x1c\x85\x5b\x05\x25\xe8\x9f\xe0\x1d\ \x87\xa3\x79\x8d\xa0\x31\x38\xd1\x3a\xca\x58\x2b\x78\x02\x94\x0e\ \x9f\xb2\x7d\x71\xf8\x87\xe4\x68\x4c\x64\x4c\x31\x47\xc9\x90\x88\ \xa7\xf0\x0e\xd9\x2a\xc2\xaf\xf4\x5a\x2f\x2a\x10\x1b\x53\xda\xec\ \xd3\x6b\x3d\xf3\x13\xcc\x1e\xef\x98\x28\xa9\x8b\x32\xd1\xb2\x14\ \xa6\xf2\x86\x7d\x1c\xe6\x89\xe0\x15\xcc\xd8\xe8\xd3\x7e\x54\x83\ \x25\xa4\xee\x75\x8b\x57\xcc\x8b\x30\xea\x42\x49\x29\x77\x2a\x1a\ \x95\xf3\xf5\x78\x4b\xdc\xcc\xfe\x3e\xbd\x17\x1a\x55\x72\xf5\x15\ \x14\xc6\x59\x3f\x51\x0d\x04\xaf\x6c\x83\xfb\x71\x53\x25\x58\x35\ \x57\x05\xa6\x66\xea\xf8\xf3\x4c\xc2\x4e\xc1\x2a\x20\x75\xc6\x9c\ \xf3\x52\x9f\x0a\x4a\x2a\x08\x98\x08\x27\x20\x56\x06\xc5\x62\xd7\ \x09\x09\x92\x62\x29\xfc\x26\x0f\xb5\x08\x44\x85\x14\x50\x22\xd4\ \x5c\x4a\x7a\x3e\xcc\x20\xbb\x2b\xc9\xa2\x38\xb9\xab\x12\xf1\xbd\ \xc0\xa4\x97\xf2\xa5\x63\x8b\x64\x4c\x92\x2b\x93\xcb\x27\xe1\xcb\ \x81\x2b\xf0\x50\xb9\x64\xf6\x01\xd1\x22\x4f\x1f\x1a\x24\x3f\x2a\ \x74\x8e\x65\x1f\xbb\x54\xda\xb8\xd3\x3a\xca\x87\x03\xd1\x90\x98\ \x10\x1f\x97\x1e\x85\xa7\x60\x48\xc2\xd1\x32\x26\x02\xa8\xa3\x91\ \x38\x6a\x86\x57\xca\xea\x79\x09\x2d\x84\xab\x3d\x8c\x48\xb4\x31\ \x49\x2e\x4f\xfe\x29\xd4\x51\x0c\x9f\x88\xa7\xc2\xe0\x76\x60\x4c\ \xa1\x6f\x4a\x6f\x8a\xa4\x83\x12\x01\x8b\x28\x1d\x43\xb7\xcd\x9f\ \x7c\x52\xa3\xc8\xd5\x09\x31\x92\x3a\x7c\x85\x35\xe7\xf4\x29\x5b\ \x11\x39\x6b\xa8\xe4\xcc\x41\x40\x0a\x37\xe7\x23\xd3\x52\x1f\x4d\ \xa4\xcb\x54\x24\x5b\xfb\x39\xbb\xcb\xfc\xc1\x46\x78\xda\xb2\xe0\ \x1d\xf0\x42\x2f\xa1\xbc\xc5\xcc\xbb\xa0\x55\x00\x58\x6c\x3e\xb4\ \x7a\x25\xf9\x76\xcc\xd1\xc8\x9c\x0a\x00\x0a\xce\xe9\x58\xb7\x1d\ \xde\xc7\x42\x2e\x9f\xb9\x23\xb4\xbe\x1b\x2d\xf9\x06\xab\xc7\xae\ \x0d\x0f\x29\xaf\xf3\x82\x36\xb2\xfa\x34\xce\x69\x0e\x4a\x84\x7a\ \x00\x16\x39\xfa\x8f\x8b\x96\xce\xdb\xdd\xc7\x14\x14\x80\xfa\xbb\ \x22\x4c\xc2\x4e\xb1\xf6\x38\x28\x01\xa0\x5e\x8c\x1f\xc5\x79\x41\ \xcf\x78\x3b\x88\xf0\xe3\x68\x14\x9b\x89\xfe\xcd\xf2\x73\xd3\xbe\ \xa5\x1e\xc0\x44\xd1\x73\x6a\x1f\xc3\xac\x18\x2c\xbc\x75\x3b\x11\ \x82\x44\x94\xfc\xa1\x84\x3f\xd6\x3f\x05\x82\xc7\x62\x0e\x6f\x86\ \x9d\x64\xb7\xc4\x77\x75\xa4\x88\x5f\xa3\x49\xd5\x29\x37\x2a\xce\ \x5e\xf8\x2a\x6c\x55\xc6\xa4\xf3\xfa\xd8\x96\x22\x8e\xb6\x7c\x96\ \x16\x08\x56\x36\x6d\x6d\xaf\xc1\xca\x81\x3e\xba\x0c\x9a\x29\x0b\ \x53\xa1\x22\x7c\x78\xe8\x5b\x3a\xf3\x62\xeb\x97\xd0\x24\x61\x4e\ \xf0\x95\xce\xeb\xb5\xe8\x01\x64\xcf\xfa\x26\xab\xa2\xbb\x1b\xfe\ \x12\xea\xa5\x4d\xc0\xda\x20\x17\xf1\xfd\x3d\x4a\x1f\x49\xe2\xa6\ \xf1\x79\x3d\x8b\x5f\x9d\x0c\xe4\x63\x42\x1a\x26\x00\xc5\x54\xe4\ \x6a\x77\x84\x4a\xf6\xeb\x83\xe8\x9e\xa9\x0c\xda\x89\xf0\x57\x82\ \x12\xc1\xaa\x33\x91\xb4\x86\x26\x2a\xce\xad\x56\xe0\x9e\xf4\x78\ \xa2\x29\xdb\x42\xdc\x47\x98\xf0\xca\xe1\x85\x2a\x9a\xee\x29\xa0\ \x10\x5f\x93\xb6\x79\xb8\xd3\x05\x9d\xf4\xbc\xa7\x98\xa4\x36\xda\ \x70\x5d\x64\x2b\x87\x80\x53\xf5\xe8\x58\xae\x26\x49\x71\xb3\x4e\ \x54\xc5\x03\x96\x96\x41\x22\xe2\x7e\xc2\x28\x8f\x3a\x20\xe2\x7c\ \x99\xe0\xfe\x40\x94\x14\x91\x3a\x2a\x38\xcd\x47\xc8\xa5\x2e\x92\ \x0a\x51\x41\x5f\x62\x92\x30\x38\x89\x1d\xbe\x72\xa3\xe9\x02\x44\ \x11\x8c\xd0\x02\x8f\xbf\xb5\xa3\xfa\x9e\xdc\xb9\xab\x74\xe5\x01\ \xb0\x62\x47\xd9\xd8\x15\x1f\x39\xaa\x1c\x14\xd9\x3c\xde\xb1\x1f\ \xb5\x2a\x1a\xa4\x4b\xea\x94\xed\x1e\xe8\x6a\x2d\x42\x96\xd2\x18\ \x00\x41\x5b\xaa\x28\x9f\xca\x0f\xda\x94\x10\xa0\xd8\x51\xa9\x94\ \x54\xb0\xb6\x63\x8e\x2a\xa3\xd7\x11\x3e\x7c\xd8\xa0\x64\xdd\x40\ \xb8\x89\x48\xbd\xa9\x54\x85\x40\xad\xb0\x43\x4b\xf2\x26\x79\xda\ \x71\x8c\x5f\xa6\xa3\x3c\x0d\x76\x5a\x38\x9a\x36\x26\xc7\xd0\x27\ \xad\xd9\xcf\x0e\x91\x9f\x62\x4e\x32\xb5\x40\x2f\xa1\x25\x3c\x20\ \x74\x6e\x70\x1f\x9f\x30\x87\x86\xaf\x58\x1a\x59\x7d\x0b\x1f\x01\ \x2a\x11\xa9\xeb\x2c\xdc\x3e\x28\xc4\x37\x01\xa1\x8e\x86\x8a\x5a\ \x09\x44\x29\x3a\x56\xc9\x6c\xb9\x8c\x4d\x49\xe7\xa1\x01\xd6\xd4\ \xd6\xb2\xa8\xe8\xd3\x23\x00\x3a\x7b\x3d\x00\x65\x6e\xe2\x71\x60\ \xf2\xfa\x9a\xd2\x85\x27\x5f\xee\x29\x98\xb2\xce\x27\x19\x3a\x0d\ \x79\x7d\x94\x87\x16\x04\xf7\x95\x73\x38\xa5\xc3\xf3\x4f\xcc\xd4\ \x90\x9d\x62\xe8\xfc\x23\xad\x3a\xa4\x9b\x48\x64\x46\xd1\x72\xcf\ \x2c\x8d\x37\xc4\x62\x12\xb0\xc5\x7f\x3b\xa0\x53\xfb\xd8\x94\x04\ \x64\x2e\xf3\xd3\xf4\xa6\xad\x18\x7b\xcc\xd4\xb6\x96\x7c\x7a\x70\ \x5e\xbc\x86\x2a\x87\xdf\x2c\x18\xa2\x38\xd2\xf7\x7d\xfc\x00\x9e\ \x11\x21\x6b\x42\xf1\x53\xef\xa8\x22\xe9\xc3\xaf\xb5\x0f\xad\x54\ \xaa\x9c\x2c\x3e\x01\x32\x42\xaa\xc5\xae\xf3\x7a\xfe\x2d\xd4\x5e\ \x68\xef\x5b\x6e\xb9\xa7\x45\x94\xdc\x13\x3c\x2a\x19\xad\xd0\x9a\ \x58\xe2\x22\xf6\xa4\x67\x2a\x23\x77\x8f\x97\xc3\x9b\x6e\x7e\x11\ \x90\x8c\x92\xfb\x74\x8e\xc5\xe5\x3e\xea\x75\x35\x97\xe6\x25\xde\ \xe2\xf1\xe3\x3a\x2e\x82\x64\xc4\x21\xe9\x13\x18\xf1\xf8\x8f\x74\ \x79\xd4\x71\x15\x97\x7b\x03\x30\x6e\xc5\xd6\x06\x25\x39\x88\x54\ \x20\xd3\x2e\x54\xf3\x53\x48\x2d\x4a\x11\x47\x23\x88\x64\x4c\xae\ \xf2\xf4\x15\x77\xac\x8d\x26\xaa\x68\xac\x51\x44\xaa\xf6\xc3\xd2\ \x2d\x5a\x0a\xb3\x80\x65\xa1\x27\x9a\x72\xa7\x13\x7e\xb4\x47\x65\ \x1d\xae\x8f\xed\x41\x25\x05\xe2\x11\x10\x45\xbc\x11\x5e\x55\x15\ \x3e\xd8\x5f\x10\x28\x28\x1f\x18\x80\x83\x57\xf8\x28\x76\xa6\xe3\ \x51\x89\xf0\x9b\xd2\x98\xc9\xfb\x4c\xe6\x17\x93\x51\x50\xd2\x5d\ \x34\x77\xd4\xfe\x00\xce\x31\xed\xed\x95\x01\x08\x0f\xad\xf5\x95\ \x9a\xa0\x25\x7e\x89\xe6\xe6\x69\x76\x2a\x3d\x55\xee\x89\x2d\xde\ \x81\xf4\x5a\x35\x80\x50\x49\x47\x3b\x1b\x7e\x83\x1e\x1b\x3b\x43\ \x2d\xcb\xa8\x15\x1f\xde\x75\xb8\x0f\xae\x7c\x69\x16\x6a\x28\xbd\ \xe2\xf9\xa3\xa1\x31\xe9\xe0\x09\xa4\xff\x3d\x38\xae\xf8\xca\xf7\ \x17\x82\x93\x43\x66\x04\x5b\xe9\x6c\x44\x69\xa9\x6a\x2a\xd1\x79\ \x53\x74\x8e\x55\xc7\xa3\x71\xff\x68\x6a\x9f\xc9\xde\x68\x4e\x38\ \xeb\x61\xcf\x77\x84\x9d\xbc\xd5\x14\xee\x34\x45\xbb\x4c\x71\xda\ \x34\x2e\xca\x53\x21\x1e\x7e\xa4\xfd\x68\x41\x0c\x15\xb8\x60\x4f\ \x37\x2d\xe2\x01\xc0\x0e\x67\x20\xb2\xdb\x90\x27\x12\xbc\xd8\x8f\ \xb2\xa5\x8b\x92\x86\x6b\xfd\x84\x02\x2b\xa4\x37\x1b\xd2\xdb\xf6\ \x54\x1a\x7f\xcc\x01\xbd\x79\x00\xc2\x0f\xba\xf3\x94\x6e\x0a\x5b\ \x4b\xd2\xd4\x80\xb0\x37\x8f\x8e\xb3\xfd\xba\xf1\x68\x33\xa1\xa0\ \xe2\xa2\x78\x36\x11\x9c\x79\x58\xbd\xbb\x0f\x56\x0f\x28\x99\x99\ \x9a\xa5\xf1\x26\xa3\x40\x95\xea\x43\x86\xef\x2c\x53\xec\x1c\x1b\ \x8f\x4e\xf3\x86\x98\xc0\x0c\x92\x3b\x6e\x7b\xfb\xe7\x3f\x3a\x6c\ \xd0\x07\x86\xb2\xf8\x35\x4c\x01\x18\xe6\xca\x71\xa9\x24\xcd\x50\ \xd9\x0f\x39\xd4\x74\x22\x81\x9b\xde\x66\xa2\xf2\x78\x54\x23\x8b\ \xcd\x69\xfc\x1c\x67\xf7\xc2\xf3\xcb\x31\x8d\x8f\x47\xd5\x06\x0e\ \x71\xd2\x37\xfc\x9e\x6e\x7b\xd2\x00\x8b\x78\xdb\x96\x64\xae\x0d\ \x4a\x62\x66\x39\xff\x1f\x99\xbd\xea\x78\x8c\xfb\x47\x63\xe2\x31\ \x4a\x8a\xa7\xb2\x73\x27\x3b\x63\x22\x7e\x4e\xe5\x25\x8e\x4a\xda\ \xbd\x70\x54\x77\x3b\xea\xca\x78\xba\x2d\x53\x8f\x4c\xf4\xb6\x6b\ \xb1\x7d\x98\xa8\x06\x7c\xaa\x0f\x1f\x5f\x7a\xe8\x34\xa2\xc4\x77\ \xe5\xc5\xf6\x19\x3c\x08\x94\x6d\x49\x80\x8e\x8f\x47\xc3\xce\xe1\ \x82\x9b\x72\xa9\x4b\x4b\xb1\x35\x57\xeb\x52\x11\x04\x25\x78\xe4\ \x8a\xa2\xbd\xa8\x40\x8a\x53\x20\xc0\x41\x65\xee\x56\x91\xf3\xf8\ \x99\xe8\x41\xed\xa9\x90\x5e\x22\xb7\xd5\xe4\x71\xb4\x96\xd8\xa9\ \x66\x73\xf2\x4f\x32\x96\x12\x92\xaa\xc1\xe8\x55\x32\x0b\x35\x10\ \x11\xa7\x0f\xd5\x73\x4b\xc4\xd3\xe9\x74\x3c\x5a\xa8\xa1\x3f\x21\ \xd5\x61\x54\x02\x4f\x72\x7a\x7b\xca\x43\xb5\xd9\xe4\x65\xaa\xeb\ \x98\xcc\x3e\xb5\x0d\x8e\x97\x82\x2a\x91\xb3\x3e\xc9\x86\x56\x2f\ \x77\x6a\xf9\x14\xb4\x31\xb5\x79\xe6\x30\xcd\xf2\x55\xe7\xd6\xbb\ \x80\xb2\x0b\x34\xbe\xe5\x2d\x91\xdb\xab\x09\xa4\xb9\xbf\x73\x07\ \x4f\xc8\xd4\x60\x82\xb3\x70\x36\x6c\xd2\xe2\x59\xbe\xf6\x46\x94\ \x48\x30\xa1\xc4\xe0\x0c\xe3\xbc\xa6\xee\xd2\x61\xff\xc9\x20\x1b\ \x7a\x84\x37\x0a\x9f\x26\x64\x27\x59\xea\xa0\x92\x8e\x2a\xc1\x67\ \x3c\x55\x03\x60\x66\xda\x41\x75\xbd\xb1\x2f\xe9\x95\xa9\x99\x5e\ \x9b\x74\x57\x01\x59\xbd\x3f\x70\x5a\x3c\x54\xdc\x49\x88\x20\xa3\ \x71\x15\xe9\x69\xbe\xfe\x18\xe7\xe9\xb7\x5c\x1a\xe5\x23\xa0\x9e\ \xda\xe8\x0b\xde\xaf\x8f\x67\x63\x87\x4b\x68\x28\x77\x40\xc9\x9e\ \xb4\xc6\x4b\x9d\xad\x4f\xe3\xec\x32\xd2\x53\x2f\x9d\x32\x15\xaf\ \xcf\xd6\xe9\x31\x4a\xf1\xca\x14\x2e\x4a\x78\xfb\xfb\xf5\x48\x85\ \x7f\x5e\xa0\x44\x9f\x1f\x13\xc3\x25\x8c\xf0\xf6\x8d\x09\x8f\x04\ \x9f\x3c\x32\x40\xef\x68\x06\x76\x9f\xd8\xb7\xf3\xc7\x7a\x2a\xe1\ \x13\x52\x9c\x91\x8b\xac\x8d\xd2\x7a\xf9\xd2\x31\x09\x8f\xc5\x2e\ \x15\x47\x23\xe1\xff\x16\x9c\xf6\xee\x27\xe2\xd1\x68\xb3\x01\xd7\ \x7a\x8a\x48\x7b\x08\x53\x82\x27\xae\xe4\x45\x2e\x2a\xda\xaf\xaf\ \x3d\x98\x99\xaf\xa5\x6d\xb8\x4a\xb1\x24\x1a\xf9\xb2\xc1\xc6\xe8\ \xe7\x0d\xdb\xc9\x41\x00\x7a\x9c\x2f\x13\x32\x94\x81\xaa\x6d\xf0\ \x9c\x57\x50\xbd\x15\x26\x47\x82\x6b\x3e\x65\xcd\xc1\x93\xa7\x9f\ \x40\xb2\x2e\xd1\x14\xef\xee\x3b\x8f\xde\xb8\x7d\x61\xd0\x31\x9f\ \xf1\x68\x05\x0d\x93\x36\x6d\x81\x95\x7a\x40\x32\x2f\x4c\xbc\x82\ \x0a\x54\x9d\x92\x00\xbe\xb0\x40\xc6\x0e\x0a\xe8\xd4\x6b\x8f\xba\ \x36\x8c\xf2\x00\x6b\x33\xcf\x92\x87\xac\x35\x52\x2a\x3c\xf4\x0a\ \x16\xbb\x6e\x27\x92\x43\x18\xda\x37\x55\x5e\xfe\x41\x0e\x2a\xdc\ \x0c\x65\xa0\xe7\x6e\x38\xff\x1f\x4c\x95\xf8\x27\x33\x08\x52\xd6\ \xa6\x36\x7b\x7b\x5d\x71\xd6\xee\x9e\x66\x3b\xf2\xf4\x0f\xe5\xee\ \xd1\x96\x08\xac\xee\x22\xd3\xbd\x1a\x08\x52\x9f\xbc\x62\xfd\xdc\ \x70\xef\x68\x84\xc3\xaf\x3c\xab\x77\x77\xd7\xca\x7c\xc3\x17\x0e\ \x3f\xbb\x54\xa2\x6f\x69\x63\x2a\x88\xa1\x05\x5e\xc2\xd2\x9c\xa7\ \xf9\xca\x39\x31\x40\x1c\x9e\x67\x2a\x69\xe6\x4f\x5c\x25\x41\xa8\ \xbf\x2d\x33\x11\x16\xca\x8c\x5b\x20\x1c\x37\x4f\xdd\x70\xd4\xe1\ \x23\xa8\x74\x0a\x43\xdf\xc9\x8d\x05\xe1\xf0\x34\x22\x6d\x4a\x20\ \x79\x75\x78\x59\x53\x45\x27\x42\x69\x8a\x7b\x5c\xcb\x03\xab\xbf\ \x6b\x91\xe9\xc1\x86\x96\x7d\xf7\x0b\x3c\xc4\xeb\x2f\xcb\xb8\x23\ \x57\x5b\x93\x93\xbc\xb0\x15\x89\x4c\x09\xde\x14\x94\x84\x58\x01\ \xe8\xb8\x92\x0e\x99\xfd\x5f\xb9\xe9\xb8\x73\xe6\xbd\xb1\xe3\xa3\ \xec\x76\x7f\xe6\x0d\xf0\xea\x75\xe3\xf1\xc8\x2a\x6e\x26\x05\x05\ \xa4\xb1\xe8\x45\xe6\x45\x98\x89\x94\xfa\xc8\x00\x2c\xa5\x02\x52\ \xbc\xe8\xad\xaf\xb9\x7d\xc7\xbe\xc1\xb1\xa0\xa4\x8a\xa3\x13\xa2\ \x15\x8b\x07\x3a\x8c\x72\x7c\x0d\x3f\x15\x96\x00\x50\xbc\xf3\xc4\ \xe1\x30\xe9\x7b\xc3\x29\x25\xf0\x1b\x85\x24\xf0\x54\x45\x9e\x65\ \x5f\x85\x11\x9c\xda\x9a\x4e\xb5\x03\x18\x57\x6f\x5e\x6d\xde\x93\ \xa2\xa4\xf1\x78\xe4\xa2\x60\xa4\x78\x2b\xd1\x4b\x75\xbc\x8e\x04\ \x0f\xf8\xc0\xa2\x90\xca\x4f\x6f\xd8\x80\x7d\x3a\x82\xd3\xde\x14\ \xe6\xfd\x0e\x28\x69\xcf\x83\xd9\x35\x48\x2f\x38\xec\x8b\x4b\xad\ \x8b\xac\x6e\xec\xce\x14\x47\xd3\xe5\xfb\x18\x66\xa1\x36\x9a\xd8\ \x9e\x94\x83\x2a\x2b\xda\xbc\xa9\x36\x5c\x61\x6c\x17\x66\x77\x57\ \x3a\xb5\x93\xa5\xfe\x5c\x54\xd2\x4c\x8d\xff\x98\xb0\xdf\xd3\xa0\ \xa4\x85\xe2\xa8\x30\x34\x4c\x47\x10\x2a\xa3\xcd\x55\x63\x41\x2e\ \x1c\xd5\x33\x92\x2d\x3d\x7d\xb4\x9d\x01\x36\x1a\xed\xab\x83\x61\ \x15\x7e\x40\x92\xdd\x0b\x33\xb9\xa2\xf1\x69\x5d\x43\x53\xa1\x92\ \x6a\x8c\x85\xdc\x32\x85\xb2\xe7\xf3\x53\x80\x06\xc9\x32\x1f\x60\ \x05\xa4\x97\xd1\xd8\xdc\x86\x8f\x13\x63\x27\x46\xfa\x72\xa7\xa4\ \x99\x72\xf8\xf0\x74\x2f\x85\x3e\x26\xd5\x01\x91\x4c\x46\xa8\xee\ \xa8\x55\x14\x58\x2a\x3a\x0a\x48\x99\x9b\x70\x13\x47\xef\xc3\xa9\ \xc3\xaf\xef\x28\x97\x1f\xcc\x47\xbe\x16\xb6\xae\xc9\x93\xca\xe4\ \x17\x03\xf4\x2d\xb0\x67\x94\x29\x8e\xa6\xcb\x64\xc4\x50\xae\x3c\ \x22\x52\xad\xa3\xb9\xea\xc4\x16\x43\x5a\x31\xb9\x38\x37\x85\x03\ \x67\x2b\x07\x72\xc5\x0a\x67\x4c\xa8\xa4\x10\x37\x5b\x25\xbd\x66\ \x46\x80\xf2\x90\x37\x51\x52\xed\xf0\x95\x6a\x8a\xd5\xa7\xdc\x13\ \xf0\x94\x74\x14\xb5\x34\x97\xe3\x96\x78\x55\x2b\x4e\x5b\x7a\x3d\ \xcc\x8b\xca\x0d\xc8\xff\xfd\x8f\xc9\xf5\x46\x63\x8f\x3d\x61\x45\ \x99\x50\xd2\x25\xc8\x44\xbb\x5d\x1e\x50\x04\x61\x49\xa8\xa4\x02\ \x53\x6b\x6a\xaa\x46\xa6\x9a\x1f\x64\x6b\xb9\xd0\xe7\xd6\x79\x44\ \xee\x7b\x47\x4e\x49\xff\x6b\x52\x26\x10\xff\x89\x75\xfd\x02\xf5\ \xe5\x6e\xb9\x67\x86\xe2\x3d\x61\x80\x1a\x25\x1d\x4d\x0e\x26\x3e\ \xf3\x91\x7b\xa7\xe6\x8e\x59\x11\x0e\x4a\x05\x78\x52\x7b\x12\xc1\ \x4b\x4f\x09\x22\xd5\x7d\x3a\xc2\x51\x91\x7e\xbd\x02\x66\xab\x76\ \x2c\x18\xa1\xd7\x03\x50\x42\x7a\xed\xc8\x2a\x69\x4f\x1b\x93\xd1\ \x53\x52\xd2\x2b\xb1\x5f\x60\x73\x09\x1c\xc5\x08\x8a\x48\x4a\x0f\ \x52\xc5\x07\x62\xb8\x1c\x3c\xeb\xe2\x78\xc5\xa3\x3f\x2a\x1e\x39\ \xbe\xfa\x4d\xc1\x6c\xd7\x73\x6a\x51\x51\xe7\x49\x37\x75\xb4\xcb\ \x87\x22\xc9\x67\x20\x73\x92\xa1\xdc\x13\x89\xde\x51\xd6\x51\xc5\ \x52\xd5\x54\x02\x6e\x1e\xf5\x54\xac\x1e\xed\x9e\x07\x7d\xc9\x28\ \xe4\xb9\x75\x77\x6c\xd9\x7a\x60\x19\xb8\x82\x4f\xe5\xa5\xa4\x76\ \xbf\x90\xe5\xbe\x4b\x50\x27\xa6\x3f\x62\x62\x6a\x9f\x56\x3e\x72\ \xbd\xf3\xa3\x71\x43\x11\x7c\x44\x89\x08\x4d\x2a\x81\x07\xf3\x10\ \x86\xfa\x06\x74\xf8\x7b\x9f\xbb\xee\x3a\x54\x52\xc2\x69\x86\xd3\ \xb6\x8a\xba\x5c\x7b\x0e\xc4\xca\x7d\x96\xbc\x53\x52\x59\xee\x41\ \x41\x7f\xf5\x94\x96\xc1\xaa\x8d\x97\x2c\xb5\xda\x10\x38\xc7\x5d\ \x84\xe1\xc0\x69\xed\x9f\xc0\xd7\x03\xd2\xa8\x55\x63\xc3\x87\x8f\ \x36\x4c\x9b\xdb\x55\xc3\x5a\x8f\x63\xec\xb6\x0c\xd1\xed\x67\xf7\ \xc1\xea\x9e\xa3\xe8\x4b\xf2\xa4\x3d\xe4\x27\x5c\x24\x73\xc8\x45\ \x6d\x9a\xd7\xa2\xbe\xa7\xa6\x67\x4f\x85\x84\x4f\xa4\xa3\x31\x4f\ \x81\xab\x2a\xb3\x43\xb8\x9f\x7e\x0a\xa1\xdd\xd9\x03\x96\x1e\x01\ \x38\x37\x01\x4e\x58\x99\xf6\x5a\x91\xae\xe9\x78\x39\x3d\x2e\xf7\ \xdd\x0d\x2f\xbf\xec\xd2\x0d\xb0\x80\x9e\x4d\x9c\xdc\xf4\xa0\x9d\ \xbb\x4d\x8b\xd3\x98\x52\x1e\xfd\xc6\x1c\x35\xa0\x98\xa3\x05\x49\ \xbe\xda\xb0\xd7\x02\x7d\xd9\x08\x81\x1e\x9c\xa9\x4a\x56\xd2\xdd\ \x1d\x09\x9f\xee\xb1\x9d\x34\x43\x1e\x96\xda\xce\xac\x92\x4e\xbe\ \xed\x70\xd0\xc9\xa9\x7f\xb7\x48\x4f\x9d\x34\xea\xb1\xd1\x80\x6c\ \x15\xed\x78\x1b\x3c\x79\x6c\x3d\x5d\x2a\xf1\x7b\xb4\x40\xfa\xcf\ \x5d\x67\x1c\xe5\x29\x4d\x03\xf4\xcc\x45\x04\x7a\x55\x1f\xac\xe9\ \x1d\xc0\x99\x61\x21\x61\xde\xe9\xa0\x93\x35\xb3\xb4\xab\x8c\x7b\ \x4b\xb3\x6b\x91\x5e\xdc\xef\xb7\x7a\x89\xd2\xb8\x40\x8c\x5a\xde\ \x14\x54\x04\xa9\xdb\x35\xaa\x57\x2f\x03\x68\xeb\xfa\xd6\xe4\xef\ \xdf\x73\xe1\x95\xab\xad\x63\x77\x4a\x0a\x9e\x74\xf5\x50\x46\xa7\ \xb9\xb4\x6e\xa1\xe7\x18\x6a\x22\x41\x65\xdd\x73\x0b\x2d\xa9\x97\ \xa4\x67\x8d\xfb\x0e\x5f\xd6\x26\x65\xf5\xb9\x1e\x46\xc7\xc6\x84\ \x3c\x5c\x36\x04\xff\x54\xf4\x3b\xdf\x70\x4a\x0a\xd5\x87\xc3\x61\ \x98\x61\x25\x63\x3d\x2d\x03\x47\xc3\xc2\xc0\x5c\x7e\xf6\xdc\x68\ \xa4\xac\xfb\x8e\x85\x41\x09\x6e\x34\x1e\x57\x91\x5e\x42\x8b\x02\ \x1f\xed\x47\xa5\xed\xe9\xe7\xaf\x38\x73\xdb\x45\xaf\x00\x98\xf9\ \x5a\xe2\xc9\xe3\x05\x3a\xd2\x3f\x1b\x81\x92\x8a\x27\xbd\x33\x2f\ \x89\x56\xcc\xc1\xc0\x79\x23\x7a\xf0\xa0\x40\x68\x38\xfb\x96\x5a\ \x39\xcd\x75\x4d\x8e\xff\x48\xf7\xe3\x8a\xdd\x93\xec\x73\xb4\xf9\ \xb5\xdf\x3c\x06\x87\x7b\x9e\x64\xb0\x1a\x03\x32\xdc\x74\xf3\xd0\ \x6b\x4c\x96\x26\x9d\x92\x96\xe4\x49\xd7\x75\x38\x6c\x86\x3c\xf9\ \xe3\x4b\xb6\x36\xbe\x9e\xfe\xfa\x84\x05\x39\x98\x29\x64\x84\xbb\ \x54\xf0\xd3\xed\x44\x5a\xf4\x28\xf8\x86\x4a\x43\x0d\xc1\x04\x6c\ \xa4\xd1\x6b\xac\xfc\xd7\xfe\xc5\x60\x25\x28\x29\x46\x4f\xb5\xb5\ \xec\xb9\x61\xc5\x4a\xba\xb8\xa9\xc6\x40\xef\xb5\x4e\x49\x1a\xd6\ \x83\xbe\xdd\x26\x00\xe7\x5d\x43\x20\x61\xec\xa8\xe0\xec\xf2\x1f\ \xb7\x4c\x9f\xb9\x13\x1b\x22\x1d\x15\xb9\x7f\xe8\xa6\x7b\x26\xbf\ \x72\xf5\x7a\xc4\x88\x19\xed\xda\x3a\x37\xe0\x5e\x8b\x4a\xea\x22\ \xd2\x33\x58\x49\x61\xb9\x37\xb4\xe6\xaf\xf7\x96\x2b\x3e\x7f\xbe\ \x9b\xf7\x7c\xc7\xd0\x85\x7a\x1b\x3e\xf8\xd9\x7d\xfd\x4e\x51\xea\ \x02\xa9\xcb\x9c\x20\x30\xd5\x50\xc5\x94\xb4\xf8\x03\x1d\xbd\xfc\ \xfe\x49\x8b\x6e\x13\x95\x31\xf6\x20\xd2\xd9\x86\xed\xd6\xd8\x26\ \x4a\x6a\xa0\xee\x05\x25\x6d\x55\x86\x78\xb9\x1f\xb1\x79\x6f\x1c\ \xb6\x32\x47\x86\xc9\xfe\xc0\xcc\x2e\x2a\xa8\xa3\x64\x07\x44\x9c\ \xd4\x73\x44\x8a\xb4\x76\xd2\x0f\x11\x6e\x7f\x7c\xd7\xe0\x3d\x6f\ \xfe\x21\x00\x78\xc4\xfa\xfc\x4f\x24\x95\xd4\x50\xf9\xdc\x62\x40\ \x07\x86\x33\x3c\xbb\x9f\x07\x93\x65\xac\x9e\xbc\x17\x9a\xee\x24\ \x6b\x0a\x4e\x65\xf9\x05\xe9\xe8\x05\x9e\x23\xb9\x7d\xd8\x6f\xe5\ \x96\x8e\x03\xe1\xcf\x58\xa4\xc7\x83\x92\x82\xd9\xe7\x55\x39\x09\ \x9e\xd4\xc0\xfc\xfc\x5d\x23\x0d\x73\xfe\x8e\x61\x87\x0b\xb8\xe1\ \x0c\x6f\x44\x8b\x08\xe3\xde\xbc\x56\x28\x76\xb9\x00\xa8\xbd\xd6\ \x1e\xcd\x38\xef\x1e\xce\xe4\x48\x5f\x83\x2a\x81\x05\x4a\x4a\x5a\ \xd9\xeb\x0a\x60\xf5\xe6\x1b\xbe\x4e\x7f\x8d\xe9\xa1\xd5\x38\x7f\ \xd3\xce\x00\xa6\x94\xa9\x1c\x37\xd6\xd3\x5e\xdd\x78\x78\x7f\x58\ \x19\x2f\xf4\x81\x01\xa2\xcb\xcf\x79\xd3\xed\xae\xa0\x39\xec\xc8\ \x5f\x42\x70\x07\x49\x8c\x96\xbe\xda\x7e\x1d\xd6\x03\x9c\x1f\x25\ \x2e\x5e\xf8\x7d\xd4\xcf\x87\xf6\x9d\xf6\xee\xdb\xb6\x3f\xfa\xc0\ \xb0\x53\x64\x44\x96\x95\xc0\x50\x01\x0a\x0f\x25\x24\xd1\x96\x18\ \x80\x6c\xc5\x7e\x34\xca\x45\x9a\x2d\xd0\xd3\x4f\x0d\x65\x00\xe9\ \x13\xa0\x09\x7d\x52\xd2\x75\x1d\xbb\x6f\x73\xc2\xbc\x94\xe3\xce\ \x81\xa2\xdd\xcd\x3b\x76\x15\x65\x96\xd7\x54\xd0\x29\x4b\xa7\xa3\ \x6a\xfa\x2c\xf1\x14\x29\xde\x06\x4f\x77\x91\xe1\x1c\x15\x9d\x86\ \x3e\x03\x15\x85\x7e\xce\x54\x43\x50\xdc\xb7\xb2\x7f\x1d\x20\xbd\ \xe9\x8c\xfb\x09\x26\x74\xc9\xfd\xcb\x0f\xb6\xec\x30\x2e\xa8\x51\ \xa3\xbf\xf7\x4a\x25\x24\xf5\x0c\x7f\xd9\x93\x22\x4b\x63\x1d\x6d\ \x79\xc9\xb2\xb6\xfc\x30\x28\x39\x05\x80\x76\xa4\x25\xf7\x9b\xa0\ \xb3\x00\xf4\xc7\x2a\x73\xb8\xdb\xc2\xbc\xca\x0c\x7f\xaf\xf2\x3c\ \x18\x94\x4a\x24\x47\x5a\x44\x4d\x27\x88\xa5\x13\x29\xf7\xa4\xfb\ \x89\xc6\xc7\xa3\x66\xaa\x3c\xb8\xc1\x19\x89\x9e\x8e\x00\x63\xea\ \xd4\x96\x5e\x14\x9c\x53\x8f\x3f\x70\xc4\x66\x53\xfe\x9c\xd1\x6d\ \x99\x99\x7f\xc9\x9f\xeb\x10\x1d\x45\xac\x70\x75\x0f\x1d\x94\x14\ \x2a\xb1\x57\x7f\x7c\xd7\x8a\x75\xee\x11\x2e\x3c\x1e\x69\x51\xfd\ \xe7\xae\x9e\x6b\x7d\xf9\x18\xc5\x42\xf3\x3b\x86\x79\xdd\x6c\x24\ \x6b\xe3\xd1\x9f\xb0\x2f\xc7\xcd\x1f\x4d\x6f\xdf\x8c\x3d\xb6\xae\ \x07\xe2\x43\xc6\xb3\xfe\x92\x1c\xe8\x1d\x27\x02\xac\xcf\x0e\x6a\ \xa4\x9b\xd6\x3c\x64\xb2\xa5\x55\x5b\x87\x4b\x05\xef\x87\x6b\xd2\ \xa7\x42\x01\x62\x6a\xfe\x68\xfa\xfc\x4d\x4b\xa7\x76\x02\x50\x7e\ \x18\x28\xfe\xfd\x95\x1f\x3e\xb6\xed\x4b\xcf\xe2\x52\x35\x3b\x68\ \xd5\x4c\xa7\x99\xb9\xd4\x4b\x9d\xc2\x95\xf1\xd3\x27\xac\x43\x46\ \x66\x63\x1b\xb4\xa2\xf6\xf6\x06\x99\x53\x2c\xff\x70\xd2\xd7\xbb\ \x9c\x31\x8f\xfc\x05\xb1\x13\x96\x9c\x2b\xda\x08\xaf\xea\x74\xa3\ \xab\xcf\xd9\x2c\x3a\x6f\xc9\x57\xba\xa7\x24\x92\x7c\xd8\x54\xd2\ \x80\x18\xef\x78\xc4\x27\x01\x46\x27\x2a\x3d\x01\x58\xfa\xab\xe0\ \xf6\x43\x13\xfa\xcf\x2c\x71\xe4\xee\x50\xf3\x47\xc5\x3d\x05\x79\ \x48\xbc\x65\x0f\x4a\x4a\x0c\x1d\xcd\x1e\x66\x56\x29\xcd\x4e\xc0\ \x2a\xfa\x69\x91\x0a\xd4\x4c\xba\xdb\xb3\x8c\x60\xfe\x3f\xe6\x8f\ \xaa\xb2\x93\x7f\xb1\x2f\x65\xa0\xa0\xa4\x77\xbe\x7b\xe3\xca\x95\ \xab\xd7\xdd\xbe\x30\x9c\xe1\x3a\xa9\xae\x39\x3b\x91\xcb\xb0\x71\ \xbd\x85\x63\xc1\xa2\x7b\x4a\xd9\xfc\xb8\x5e\x7c\xa9\x3e\x68\x0d\ \x45\xa4\x7a\x32\x36\x28\xe9\xdd\x9d\xbc\xd1\xe9\x77\x66\x1a\xc1\ \xbc\xe9\x2a\x9a\x3e\x6b\x6f\xe9\x7d\x51\x23\xbc\xc5\xee\x7f\xfd\ \xf9\xa3\x96\x5a\x0a\xa5\x62\xa9\x20\xad\x9d\x27\x9d\xf5\x17\x51\ \x9f\x2a\x2c\xe5\x12\xc9\x66\x7d\xdc\x44\x8a\x5c\xcd\x12\x83\xa9\ \xa4\x2d\x33\x0c\xf3\x30\x72\x4e\xfb\x51\x45\xf5\x33\x26\xd1\xd9\ \x33\x2c\xb8\xfe\x10\x9e\xaf\xaf\x62\xa4\x95\xc6\xa8\x8e\x08\x65\ \x89\x39\x35\xda\xdd\xeb\x29\x6f\xcd\xf4\x36\x53\x02\xe9\x36\x6b\ \x49\x7f\xdb\x90\xbc\x3e\x3c\x80\x81\x30\x65\x76\x7b\xd2\xec\x05\ \x6a\x3c\x22\x55\x4b\x3e\xfe\x2b\x18\x61\xb1\x24\x6d\xfa\xcb\x2d\ \xd0\x2d\x1d\x84\xa9\xaa\xce\xfc\x87\x25\x34\x4b\x45\xf2\xd8\x3a\ \xe8\x9d\x63\x55\xf3\x9e\xb4\xed\x87\xb2\x8f\x39\x4a\xf8\xd8\x8e\ \xf4\xd4\xe1\x79\xc8\x39\x5e\xf5\xbb\x57\xdc\x94\xe7\xaa\x3c\xca\ \xc2\xb7\x54\x0b\x57\xd3\xc7\x57\xe5\xe0\x95\x66\x29\x5f\xe3\xfd\ \x68\x32\x67\x6a\x44\x4a\x6a\x3d\xe9\x9c\xcd\x28\x47\x97\x80\xe4\ \x73\x0f\x24\xf2\x95\x51\x8a\xc7\x97\x4d\x26\xb6\x7a\xff\xef\xdf\ \xc4\xcd\x8e\x81\x3d\xa5\x47\x2b\x44\x03\x7f\x04\xec\x13\xdb\x64\ \x6d\x9a\xed\xa7\x8e\x33\x45\x62\xd7\x27\x9a\x32\xf6\xa5\x6c\x4e\ \x91\xdd\x8f\x9f\xed\xa8\xa2\xd1\xa8\xdd\x51\xb0\xd6\xf5\xd4\x68\ \xe4\x25\x79\xa9\x33\x77\x25\xfe\x45\x21\x0d\x56\x4f\xf3\xf5\x54\ \x34\xd3\xf3\x47\xf5\x21\x0c\x7d\x9e\x29\xb2\x25\xbd\xdd\xa0\x6a\ \x64\xcf\x73\x40\x32\x5a\xb3\x7d\x38\x43\x38\x8b\xc4\x80\xbf\x0a\ \xa7\xb8\x07\x6d\x99\xed\xd0\x47\xbd\xe4\xfc\xd1\x43\x8e\xfa\x4a\ \xeb\x67\x6e\xb2\xfb\xd1\x08\xaa\x5a\x3b\x16\x06\xd7\xf7\xf2\xe8\ \x28\x9b\x34\x3a\xa2\x6e\x02\x47\x43\x12\xa4\x40\xbf\xee\xfc\x51\ \xd8\x64\x8a\xfb\xf0\xc9\x43\x31\x4b\x73\x7b\xdd\x74\xe4\xba\x4d\ \x26\xc7\xe8\xcb\xdf\xe7\xfa\xbf\xca\xce\xdd\x55\xb2\xac\x0a\xe3\ \xbe\xea\x3c\x76\x75\xdd\xe6\xf6\xbd\xed\x5c\x54\x1a\xbb\x07\xc4\ \x99\x40\xc5\x69\x1d\x75\x50\x26\x52\x04\x15\x44\xc4\x89\xd4\x44\ \x06\xf1\x89\x18\x34\x46\x62\x20\x9a\x75\x64\x24\x18\x0a\xc2\x80\ \x99\x68\x26\x9a\x75\xa0\xe1\x04\x82\x30\xa1\x88\x7f\x83\x5d\xfb\ \x7c\xac\xc7\xf9\xed\x25\xed\xa9\x5b\x75\x1a\x3a\x59\xac\xbd\xd7\ \xf3\xf1\xad\x1d\x95\x4d\x2e\xc9\x22\x8b\x4f\x78\x5c\x49\xba\x8f\ \xe1\x14\xd0\x44\xc4\x71\x1e\x3e\x81\x9f\xb9\xbe\x7c\xfb\xf6\x69\ \x8e\x86\x49\x1c\x05\xd4\x57\x6b\x40\xf8\x8b\xb8\x79\xd6\xd7\x5e\ \xe1\x8f\x12\xd7\xf3\xc4\x4e\x57\xf1\x34\x8d\x8a\x5c\x76\x32\xe3\ \xec\x32\x14\xbe\xce\x9d\xc3\xc0\x6b\xda\x73\xa7\x63\x97\x4a\x3d\ \xd4\xf8\xa3\x41\x92\x14\x85\x96\x58\x15\x11\xc8\x79\x12\xa5\xf6\ \xc0\x84\xae\x69\xb0\x65\x3c\x77\x65\xc8\xd8\x52\x4e\x87\x1a\x7f\ \x94\xe1\xb2\x17\xc2\xe7\x84\x38\x3d\xc7\x51\x11\x14\x6e\x6d\x2e\ \x94\xa0\xae\xa2\xd6\x31\x8a\x08\xf3\xa6\x04\x44\xe6\x28\xf1\x47\ \x99\x80\xe0\x70\xbd\xde\xa9\xba\x9c\x79\xca\x93\x77\x28\xaa\xd5\ \x26\x99\x9c\xaf\x87\x10\xdf\x05\xc7\xb9\xc6\x1f\xa5\xc2\x67\xb0\ \x5c\xef\xaf\xcf\x1b\x65\x06\xb3\x96\x11\x15\xbd\x98\x61\xe5\x90\ \x35\x81\x08\x6b\xac\xf1\x5b\xc8\x3e\x68\x4d\x30\x8f\xdd\x4b\x62\ \x9d\xa5\x9c\xb1\x6e\x24\xd7\xa7\x6b\x9d\x58\xce\xd9\x82\xd2\x74\ \xf4\x27\x78\x79\xb5\xd2\x4f\x8b\x4d\xdd\x32\x71\x0e\x43\x7c\x64\ \xb4\x9c\x31\x6a\xe8\x91\xf2\x91\xd4\xe3\xe4\xfb\xc7\x19\x6a\x39\ \x1d\xce\x82\xbb\xad\x17\x75\x59\x45\x61\x38\xf0\xe0\x98\x9e\x8a\ \x98\x0f\x0b\x86\x6f\x6a\x8e\xa2\xbb\x5d\x74\xc6\xfc\xc3\x65\x98\ \x17\x30\x96\x5a\x5b\x09\x9a\x86\x45\xa5\xc8\xb4\x11\x31\x0c\xde\ \x01\x2c\xb5\x26\x54\x1c\xf5\xb3\x9f\x93\xd6\x8f\xdd\xc3\xa2\x71\ \xce\x87\xcf\xc7\x85\x29\xba\x79\xa2\x6e\x87\x88\xff\xff\x40\xcf\ \x92\xa1\xe2\xa4\x84\xdf\x1f\x0d\x87\x61\x2d\x57\xf2\x47\xf2\x1e\ \x04\x22\xba\x66\xf0\xf6\x24\x4d\x84\xa3\xa2\x7a\x82\x0d\x15\x47\ \x01\x43\x39\xe7\xe5\x5c\x40\xff\xc8\x92\x8f\x87\xe0\xed\xba\xa1\ \xcf\x06\x8f\x9c\xb0\x67\x85\x8f\xdb\x7f\x37\x32\x8f\x49\x8f\x8a\ \xd2\x61\xf7\xb0\xa2\x65\xc1\x64\x6e\xdc\xc5\xa0\x25\x70\x9c\x31\ \x72\x37\x1e\x65\x2b\xa6\x18\x6d\x67\x07\xcd\xa7\x1f\xfd\xdc\xa6\ \x1d\x9d\x4d\x74\xae\x46\x22\x60\xde\x00\x00\x11\x79\x9a\xe3\x25\ \xc6\x4c\xbe\xb8\x3e\x36\x3a\x52\x8d\xba\x7e\x1a\xe2\xe6\xad\xd6\ \x4a\x76\x7e\x75\xa9\x82\xa9\x27\x50\xaa\xfe\x65\x14\x8e\x13\x7a\ \x58\x0d\x6e\x01\x93\xc8\x34\xa1\xcf\x4d\x84\x36\xc5\xa8\xe6\x27\ \x39\x50\xfd\xe3\x6e\x73\x95\x7f\xc8\x60\xa9\xcc\x93\x10\x42\x8b\ \xeb\x3a\x66\xbd\x33\xa4\xab\x34\xa8\x9b\xd0\xd6\x49\xdd\xab\x51\ \x3f\xf6\xed\xcf\xfb\xf1\x2f\x28\x4b\x05\x84\x92\x18\x5b\x2d\x36\ \xa5\xcc\xd3\x84\x6a\xe6\xae\xa3\xbe\xcc\xb6\x87\x11\xf9\xbc\x04\ \xa2\x04\x66\x8a\x8f\xf1\x93\x9e\x67\xc3\xcd\xbb\x94\x5d\x2a\x3a\ \x33\x9b\x06\x04\x03\x30\x15\x12\x7a\xf2\x44\x8d\x9b\x75\x26\x9f\ \x20\x4a\x3a\xf6\xf8\x43\xf5\x94\x9e\x64\xe5\x2f\xf3\x26\x84\xd6\ \x8f\x5f\x93\x77\xda\x1c\x19\xb2\xa3\x4d\xa7\xcf\x11\x46\xfd\x45\ \x86\x22\x0a\xd5\x37\x07\x77\x37\xd5\xba\x0e\x89\x7c\x9c\xb9\xd3\ \xa3\x9b\xa9\x37\x2d\x67\x5b\x0c\xe5\x2d\xce\x2f\xc3\xd4\x8b\xbc\ \x3a\x0a\x2d\xb6\x04\xa7\x15\x3d\x9e\x2f\x41\x17\xbe\xff\x13\x5b\ \xf9\x88\x53\x03\x99\xcf\xbe\xa8\x43\x7d\x29\x4f\x92\x57\x49\x21\ \x41\x3a\x2a\xdd\x04\x33\x8f\x4d\x77\x2d\xaf\x91\x9a\x87\x70\x3a\ \x74\x9b\xf5\x74\xd2\xdc\x85\x1e\xca\xd2\x60\xbc\xbe\xc4\xc3\xd7\ \x0c\xa3\x87\xcc\xde\xdf\x1e\x81\xd1\x47\xbc\x74\x81\x0a\x35\x11\ \xf0\xb5\x5e\x7f\x12\x24\xca\x5e\xe5\xf4\x4d\xa8\x35\xc5\x99\x50\ \xfd\xf8\x48\x8b\x1a\xc7\xa7\x9c\x76\xf2\x08\x14\x04\x26\xb6\xba\ \xc5\x87\xb1\x47\x8c\x47\x3c\x7c\xd9\x79\xf3\x9d\x30\x28\x64\x18\ \xde\x6d\xca\x30\x25\x04\x01\x91\x83\xbf\xae\x69\x2c\xd8\xee\x69\ \xa2\x92\x63\xeb\x35\x1e\xfe\x25\x86\xc1\xa5\xa5\xb2\xa1\x6f\x3e\ \x1c\x98\x57\x73\x65\xf4\x7e\x63\xa8\x11\x49\xc7\x99\x00\x10\x22\ \x35\xe9\xd3\x9b\x72\xe3\x95\xd0\x15\x2e\x15\x33\x61\x67\x64\xb3\ \xa5\x67\x50\xf8\x21\x06\xa5\x97\x87\x64\x9e\xf4\x14\x00\x55\xe0\ \x3a\x0d\xf1\xf0\xf3\x9c\x10\xb6\x09\xb5\x16\x6f\x69\x23\xfa\xb0\ \x52\xf8\x1a\xbc\xc2\x93\x72\xf8\x2c\x89\xd9\x35\xa5\x65\x2a\xba\ \x08\xb9\x55\x64\xd2\x37\x0a\x52\xf6\x48\x17\xc7\x7b\x5a\x85\xf7\ \x04\xe3\x74\x91\x6d\x3e\xcf\x7e\x68\x3f\x6f\xd0\x9b\x67\x5a\x14\ \xa5\xbb\x84\xa1\x34\x4d\xb8\xa3\xf9\xf8\x97\x0a\xef\x49\xb2\x24\ \x62\xc7\xb5\xd0\xb1\x1e\x55\x1a\x17\x35\x11\x6f\xd5\x70\x1a\x13\ \xdc\x7c\x9b\xc1\xd1\x12\xef\x49\xc4\x65\x04\x2d\xc2\x94\xf8\x1f\ \x8d\x28\xb3\x8e\x8c\xeb\xb1\x46\xcc\x91\x32\xe7\x12\xda\xd1\x7f\ \x28\xf7\xb1\x7a\xc7\xbc\x38\xd5\x68\x8d\x58\x20\x62\x71\xf0\x36\ \x0c\x2c\xf4\x97\xf0\xb8\xac\x1b\xb5\xdc\x7b\xc3\x12\x23\x61\xfb\ \x81\x3f\x59\xe0\xe1\xcf\x73\x59\xb2\x8d\x14\x37\x61\x2c\x60\x5b\ \xa8\xb3\xb4\xae\x83\xba\x81\x22\x92\x8e\xe7\x9d\x89\x91\x4b\x76\ \xe6\x0b\x90\x59\x6a\x7c\xa5\xef\xec\xed\x0f\x32\xfb\x9c\xaf\xf7\ \x2a\x23\x59\xea\x5a\x34\x52\x59\x03\x53\x01\x26\x37\x90\x9a\xa4\ \x9e\xab\x25\x44\x62\xfc\x5b\x4d\x96\x52\xd3\x93\x47\xcc\x3c\x78\ \x46\x4d\x37\xaa\x2e\xb3\x6a\x0b\xa1\x37\xb1\x57\x5a\xa7\xd1\x36\ \x89\xa3\x7e\xfa\xc0\x20\x4c\x29\x47\x64\x47\x51\x0e\xaf\xd1\x89\ \xdc\x75\x66\x70\x27\x69\x0f\x80\x3f\x9d\xa3\x96\x21\x5d\x7c\x5e\ \x3d\x2e\x3b\x5b\x17\xc0\xcc\x77\x22\x89\x36\x8e\x06\x2d\x10\x5a\ \x44\x23\xde\x5b\xc0\xfd\x4c\x21\x56\x86\xb5\x77\xa1\xe7\xe8\x3a\ \x8a\xb6\x94\x28\x7d\xa8\x9e\x4e\xf5\x72\x89\xac\x9f\xb8\x39\x50\ \x93\x81\x53\x26\x72\x75\x8b\xd4\xe2\x9c\xfd\x21\xa5\x74\x10\x2b\ \x9b\x2c\x11\x28\x15\xdb\x2d\x3d\x58\x22\x7e\x96\xee\x67\xb4\xa2\ \x63\xd8\xbc\x18\x82\x72\x43\xb0\x2b\x7c\xe3\x25\x3d\x52\x7b\x71\ \x7f\x3d\x05\x49\x92\x14\x48\xc5\x5a\x53\x28\x7c\xc4\x4c\x5c\xcf\ \x74\x10\x53\x9d\x54\xaa\x52\x5a\x7b\x9a\x50\xc2\xbc\x65\xae\x36\ \xf7\x9e\x68\xea\x33\x82\x52\x86\xd2\x71\xb4\x4c\x2e\xe4\x83\x83\ \x3f\xdc\x82\x91\xf1\xf0\x75\xea\x65\xf3\x4b\xd3\x07\x4b\x9a\xe8\ \x94\x64\x2b\xba\xa6\xdc\x83\x9b\xf9\x25\xd2\x19\x22\x65\x7a\x7b\ \x63\x6c\xe4\x44\x21\xed\x68\xab\xf1\xf0\x93\xc6\x27\x04\x44\x94\ \x79\x56\xc3\x76\x8d\xae\xc0\xcd\x3b\xf1\xd4\x1d\x22\x37\x05\x76\ \x93\x4e\xde\x62\xa7\xd1\x52\x3e\xa7\xaf\x9b\x2a\x7a\xf7\x7e\xec\ \x20\x57\x7a\xb4\xde\x7d\xc3\xdc\xd3\xd1\xd4\x28\x21\x6a\x6a\x2c\ \x9d\x33\x71\xb1\x72\x4b\xae\x8a\xa1\xd8\x64\xfd\x36\xe7\xa8\x7d\ \x50\xb4\x45\x24\x62\xd2\x0f\x8e\xb6\x04\xef\x98\x1b\x9f\x44\x9f\ \x23\xd2\x29\xf5\xc8\x45\x9c\xe2\x2a\xf3\x8d\x75\x83\x16\x92\xa3\ \x49\xec\x47\xf9\xf1\xe0\x2e\x03\x13\x5d\x12\xbf\xae\x4b\x81\x91\ \xea\xae\x5e\x11\x35\x45\x97\x84\x96\xc9\x1c\xd2\xa8\xe8\xf3\x1d\ \xa5\x8a\x02\x7a\xfb\xe2\xc4\xea\xdb\x92\xad\xbf\xb0\x9a\x48\xb1\ \xd5\x96\x7b\x4d\x89\x87\x4f\xc1\xf7\xdc\x63\x34\xf2\xa2\x52\x31\ \x13\x8f\x5d\x2f\xe6\xf3\x12\xb5\xb1\xe7\x2d\xb5\x3d\x39\x95\xe3\ \x94\x0e\xd4\x68\x60\xed\x11\x71\x3d\xe0\xfd\x26\x64\x20\xf4\xb2\ \x95\x91\x74\x49\xa3\xa5\x5f\x90\xc5\xa7\xe8\x1b\x1e\x3e\xc5\x09\ \xc2\xa4\xaf\x3b\x25\x4a\x91\x45\xa7\xc4\x39\xba\x3a\x86\x33\x61\ \xbc\xb1\xcd\x1a\x71\x3d\xa4\x89\x24\x46\x90\x5c\xa2\xa5\xb6\x94\ \xd2\x11\x91\xd0\xa5\xbe\x71\x9d\x5b\x9a\x9c\xa3\x34\xf3\xbc\x9f\ \x84\x4c\x4c\xdd\xe3\xfa\xc6\x48\x44\x1b\xac\x0d\xdd\x4f\x25\x26\ \x63\xa8\x5b\x4f\x47\xcd\x23\x7c\x7b\x56\x4d\x14\xa8\xa4\x50\xfd\ \x61\x75\x99\x78\xf8\xd5\x96\xe0\xfe\x07\x27\x2f\x06\x77\x63\x2b\ \x9a\x6a\x22\x5c\x69\x6b\xf2\x34\xdc\xb6\x0e\xb7\x84\xce\x3d\x43\ \x12\xd9\xa5\x28\xf7\xdc\x67\xdc\x82\x28\x65\xfd\xc4\xd0\x2e\x6d\ \xb8\xd4\x2f\x12\x10\x84\xc2\x07\xa5\xb2\xed\x0d\xbb\xac\x27\xb2\ \x74\xd1\x6f\x10\x7a\x56\x6d\x4d\xe9\xb3\x7c\x03\x13\x5a\xf9\xa3\ \xfa\x83\x59\x72\x34\xba\x9c\x18\xf7\x44\x6e\x0c\xf1\xea\x26\xc2\ \x48\x2d\xb6\x09\xf5\x2f\x9e\x21\xfa\x68\x59\x5f\x6e\xc1\x32\x59\ \x85\xd1\xde\x2b\x6a\xa1\x0d\x2b\x1b\xcc\x86\x9a\x19\x85\x7a\x02\ \x33\xb9\x8b\x11\x6d\xae\x26\xf5\x99\xad\xcd\x5c\xbe\x69\xce\x9d\ \x0f\xab\x1d\xfc\x28\x35\x0e\xd3\x44\xe3\xa9\x37\xf3\x79\x1c\xbb\ \x4a\x10\xa4\xf4\x9e\x24\x4c\xc6\x49\x6a\x51\xe3\x69\x94\xaa\x8b\ \x24\x52\xce\x55\xda\xa6\x02\xce\xf7\x08\x5c\x4f\x80\xd4\xd0\x1f\ \x4d\xe4\xce\x11\xf6\xa5\x39\x81\x65\xbd\x56\xa2\x24\xc6\xc2\xcb\ \x63\xf6\x49\x7a\x14\x93\xcb\xc1\xc9\x23\x47\x13\x9d\x1e\x2d\x4f\ \x86\xa7\xb2\xae\xa6\xfa\x09\xdd\x0e\x41\x42\x74\x07\x7e\x16\x99\ \x12\x20\x92\x51\x9e\x1c\x1f\x95\x81\xbd\xfa\x5e\x1c\x83\x90\x86\ \xc9\x55\x54\x08\x9a\x19\x37\x81\xd2\x4a\x3d\x1d\x4b\x7f\xd4\x02\ \x66\x38\x4f\xab\xfe\x42\xe7\x4b\x63\xc5\x16\x23\x18\x00\x6f\xf7\ \x10\x94\x47\x7f\x2b\x49\x92\x91\x6a\x32\x6f\x21\x48\xf4\x9e\xf4\ \x71\xc8\x1f\xc7\xf6\x34\xc1\x87\x36\xc5\x8a\x9e\x65\xc8\x4c\xe6\ \x9e\xf2\x25\x35\x32\x4b\x7f\xd4\x93\x0f\x8c\xee\x44\x69\xd8\x61\ \x0e\x43\x8f\xbd\xf0\x7a\x11\x18\x9d\x52\x3f\x3a\xfb\xca\x1f\xd5\ \x91\xfb\x6f\x7a\x24\x48\x1e\x8c\x30\xa6\x4f\xf5\xda\x05\xf9\x66\ \xb0\x12\xe5\x9b\xa1\x22\x75\x60\x15\xab\xdd\xe8\xdf\xc4\xa1\x74\ \x86\x46\xef\x7e\xcd\xc2\x94\xd4\x3d\x15\x3e\xb1\xe6\x2f\x2a\xa7\ \x64\x06\xde\x53\x1a\x66\x9b\xe2\xc2\xc8\xe4\x3b\x2f\x46\xa9\x40\ \x1d\x45\xab\x9f\x3f\x23\xbc\xe0\xe6\x61\xe7\x36\x1e\x6c\x35\xd5\ \x17\xc5\x9b\x48\x2c\xfd\x51\xdf\x6b\xea\x61\x93\xaa\x77\x2b\x89\ \xcc\xb7\x94\x69\x47\x90\x4a\x30\x5f\x17\x27\x16\x6e\x25\xf4\x42\ \x4f\xcb\x3a\x74\xb6\xd5\x5c\xd9\x36\xb5\xe2\x92\xa6\x2c\x3e\x59\ \x5a\xb4\x13\x55\x0b\xf9\x98\xc9\x75\xc9\x97\xec\x4f\x33\x90\xe6\ \xf3\x76\x89\x62\x8a\x11\xd9\xbc\x68\xe9\xf5\x2e\x3d\x7c\x96\x99\ \xce\x5f\x3a\xf7\x41\x98\xd8\xeb\x28\x41\xd2\x0b\x2b\x1b\xf4\x66\ \xad\xc1\x45\x49\xe7\x4e\x0f\xbf\x1a\x63\xac\x23\x11\x3f\xfa\xcd\ \xe7\x33\x5e\xea\x92\x6e\xe5\xfa\x35\x44\xcb\x2c\x85\x22\x2f\x5e\ \x57\x1a\x7c\x6c\x9d\xe5\x50\x3a\x7a\x4e\x9e\xd7\xee\x82\xd0\x7b\ \x76\x4c\xf5\x06\x81\x4d\xaf\x68\x22\x14\x3f\x99\x1c\x4f\xa5\x86\ \xba\x68\x9b\x75\xbd\xe7\xf3\x79\xf4\x22\xb9\x70\x48\x3d\xe1\xbc\ \x9e\xbf\xc5\x66\xae\xc3\x41\x54\x82\xa9\xa5\x30\x9d\xb0\xd3\xd6\ \x19\x0a\x15\x15\xf1\xf0\x27\x75\xea\xa4\x4c\x49\x8e\x41\x1b\x05\ \xa9\x0f\x33\xd9\x34\x38\x69\xd4\x67\x34\x78\x05\xb1\x17\x43\xe3\ \xb1\x1f\xa3\x51\x8a\x51\xe8\x20\x08\x8d\x6d\x2f\x8d\x93\x0d\xa2\ \xf6\x4c\x2c\x2d\xbd\xf2\xf8\x6c\xd0\xaa\x27\x6d\xed\x86\x0e\x02\ \xe6\x14\x87\x92\xcc\x58\xc4\xb1\x1e\x67\x9b\x0c\x73\xd9\xdf\xc6\ \x31\xe0\xdf\xfb\x30\x9b\xd7\xc3\x6e\x1c\x14\x9d\xbe\x68\x65\x9b\ \xb0\x5a\xc0\x49\x15\x71\xbe\x77\x7b\xcd\x2b\x8f\xf2\xf0\x4d\x3f\ \xfd\x83\x28\x65\x0e\xaa\xb0\x4c\xd8\xd5\x21\x99\x02\x3b\xfd\x2d\ \x8b\x0f\x79\xf2\x15\xeb\xab\x46\x2e\xe9\xe3\x4b\x8a\x80\x01\xe1\ \xe3\xab\x85\x9b\x77\x0b\xf5\x7a\x54\xc4\x9c\xd6\xa0\xa4\x72\xfb\ \x70\x6c\x75\xd3\xec\x32\x5c\x3d\xcd\xb1\x99\x65\x2a\x7a\x09\x19\ \x38\x11\x52\x83\x1d\x4f\xd4\xf7\xda\x86\xc0\x1c\xbe\xf5\xe6\x89\ \xab\x1a\x6a\xa1\x40\xe9\xb3\x1b\x07\x4f\x43\xeb\x4c\x8d\x9b\x38\ \x89\x40\xd1\xaa\x1f\xe6\x49\x3c\x18\x41\x12\xd7\x24\x49\x13\xc1\ \x99\x42\xed\xe4\xca\x90\x2a\xf5\xd2\x6d\x36\x63\x9f\xea\x7a\x3d\ \x7b\x5f\x5a\x0c\xed\xf4\xda\x69\x52\x41\x40\xf4\x4f\xc6\x1a\x8f\ \x75\x50\x09\x16\x32\x64\x91\x4e\x17\x7d\xa6\xf2\xf6\xd9\xa7\xf4\ \xf8\xb9\x5b\xd1\x36\x64\xc9\xd4\xee\xa6\x1d\xac\xc2\xc5\xe7\xb9\ \xdb\x86\x43\x56\x6d\x77\x6d\xce\x8c\x42\x8b\xd1\xe5\x0c\xfb\x63\ \x42\x64\xed\x99\xad\x71\x93\x94\xfa\x07\xd3\xd9\xb3\xda\x20\xcd\ \xb4\x8c\x43\xbb\xa2\xdb\xf1\x04\x41\xaa\xc6\x05\x4c\xf6\x7d\x28\ \x10\x60\x00\x5e\x14\x03\x99\xd6\xf9\x10\x91\x2a\xb8\xdf\x70\x98\ \x20\xad\xca\x4c\xac\x89\xb5\x9c\x20\x55\x97\x3b\xd5\x93\xad\xeb\ \x00\x44\x0d\x3c\x67\xf8\x4e\xc1\x84\xb2\x55\xa3\xc6\x4e\x63\x3f\ \x11\xb7\x48\xcd\xbb\x59\xf0\x08\x02\x20\x40\x15\x0c\x07\x1a\x6f\ \x19\x34\xf1\xe1\x28\x1b\xf3\xa3\x76\x4f\xb3\x7a\x82\xd4\xcf\xc9\ \x2a\x25\x52\xa5\x45\x25\x46\xae\xeb\xdd\x92\xee\xc5\x89\x4f\x9d\ \xc3\xc7\x0d\x8d\xa4\xb2\x37\x8f\x26\xb4\x3f\xdb\x2b\xf2\x53\x13\ \xd6\x46\x24\xe0\xfd\x4a\x9e\xf2\xe8\x47\xc0\x89\xb9\x83\x30\xf5\ \x0e\xa7\x47\x11\xa8\xb1\xd4\x00\x6a\x56\x27\xd5\xc0\x69\x96\x0b\ \xec\x0b\x85\x13\x5a\xdb\xfa\x5c\x0a\x8d\xfe\xfd\xd1\xbb\x5c\x27\ \xf3\x47\x0d\xbc\x3f\x77\xbc\xad\xc6\xd3\x65\xd1\xaf\x6f\x42\xe8\ \x72\xa4\x3d\xb1\x0b\x36\x2f\xd7\xc7\x2f\x37\x8f\x0f\xc1\x3f\x7c\ \xf2\xca\x8e\x1e\xae\x93\x64\x5e\xd0\x44\x4e\xa5\x33\xd4\x4c\xa8\ \xbc\xfc\xe4\x93\xa2\x7f\xb4\xb8\xa3\x73\xc2\xf8\x42\x72\xdc\xe6\ \x42\xd3\xa9\xcf\xee\x8b\x3a\xa9\x01\x4c\x67\x7f\x4b\xc3\x28\x23\ \x9e\xaa\x12\x7a\x83\xf2\x0d\xba\x74\x8a\x42\x93\xb2\x8f\xec\xd4\ \xf9\xca\x8f\x1e\x3f\x7e\xed\xe5\xc5\xe4\x9e\xc0\x79\x0a\x96\x0c\ \x2b\x13\xe9\xd1\x82\xa3\xa2\xf1\x64\x14\x02\x45\x89\x88\x3a\xa2\ \x90\x64\xb6\x07\x1d\x48\xf5\xd1\x9f\x24\xf9\x62\xab\x29\xd1\xdf\ \xfc\xed\x87\x2f\xba\x72\x02\x53\x73\xb5\x9e\x43\xd6\x05\x4a\x09\ \x98\x69\xce\xa8\xc5\xf5\x70\xf5\x5e\x14\xe0\xca\xbb\x9a\xa1\xbe\ \xf8\xe1\x3f\xf8\xf1\xd3\xff\x7d\xf4\x6f\x07\xad\x40\xc6\xb9\x9e\ \x5f\x16\xaa\x06\xac\x28\x3c\x27\x27\x36\x2e\x0a\x86\xa1\xff\x9d\ \x10\x47\x9f\xff\x96\xd8\x19\x19\xfa\x5a\xc7\x8c\xf9\xe4\x6d\xf9\ \xf5\x00\x2d\x28\xc6\x05\x6e\x52\xe5\xee\x84\x0e\xfc\xed\x27\x68\ \x52\x21\xb7\xeb\x82\x86\x40\x24\x12\xfb\xdb\x77\xfc\xe5\xf9\x8e\ \xe8\x79\x5c\x44\xa9\xcb\xfd\x57\x3b\xa1\xef\xbf\x5a\xcd\x75\x46\ \x02\xdf\xff\x51\x78\xf8\x3c\x7a\x9c\xbc\x0f\xb3\xa5\xde\x3c\x5f\ \xd7\xd1\xbf\xeb\x74\xfc\xc2\x73\x1d\xbb\x28\xa0\x92\xe9\x79\x72\ \xc6\xb7\x79\x8a\x09\xd8\xb6\x0d\xac\x66\xf1\x79\x49\x41\x27\x51\ \x35\xd8\x89\x8f\xd5\x5c\x76\x49\x5b\x7e\x0c\x90\xec\x8c\x53\xfa\ \xbe\x2b\xc5\x4c\x6b\x90\xa5\x37\xef\xde\x7b\xf4\xdd\x87\xb7\xb5\ \x4b\x8c\x7e\x5e\x8c\x9a\xa0\x9f\xf6\x64\x9a\xa4\x0f\xbc\x92\xb6\ \x6f\xc8\xf5\x70\x39\x56\x70\x3a\xba\xde\x4f\xe6\x81\x0d\x7d\xfd\ \x9d\x1f\xbb\xba\xdc\x36\xb0\xe6\x98\x9e\x25\xc6\x91\x7a\x2a\xba\ \x35\x8c\xe4\xfe\xab\x73\x9f\x82\x9b\x87\xbd\x37\x42\xcf\xba\xdf\ \x11\xe3\x4f\xe2\x68\x76\xf2\x0e\x86\x3d\x5a\x0e\x36\x80\x4e\xe4\ \xf0\x2f\x6d\xa7\xed\xf9\xa5\xb1\xab\xfd\x74\xfd\x3c\xc7\xe9\x1b\ \x75\x13\x19\xa9\x1b\x94\xca\xe7\xcf\xb8\xa4\x77\x88\x9b\x27\x90\ \x54\x3d\x02\x9e\xad\xf3\xa3\x8c\x99\x9c\x58\x11\xa9\x55\x77\x9a\ \x0d\x3c\xb2\x73\x78\x9a\x94\xca\xcb\x11\x93\xf2\xb9\x67\x2c\xf9\ \x17\xae\xbb\xce\xdf\x91\xd9\xa9\x14\xa9\x22\x16\x4c\x35\x05\x55\ \x97\xc1\x6d\x7f\xbd\x45\x4e\xd8\x10\xac\xbf\xa6\x2b\xd0\x59\xeb\ \xc4\xca\x73\xfa\xec\x59\x0d\xbd\x35\xeb\xe0\xa3\xbd\x17\xa9\x4e\ \x27\x2b\xb6\x64\x29\xfd\x51\x51\x3a\x1b\xb1\x45\xb8\xec\xdb\x57\ \x9d\xa3\x71\xc0\xbe\x43\x40\x7e\xfb\x24\x9d\x5f\x70\x54\x6b\x82\ \x29\xf3\xec\xcb\x24\x62\x81\x4f\x36\x14\xb9\x71\xff\xb3\x70\x39\ \x5d\x52\xb9\xcd\xbf\xef\x26\xe8\xf1\x2f\x37\x56\xda\x82\x01\xad\ \x67\x7a\x72\xff\xfc\xda\xc8\x04\x8e\x52\xe9\x3d\x23\x7d\x5f\x86\ \xcb\x2d\x2a\x7b\xe7\xaa\xb3\xd4\xe5\xfe\x4d\x21\xc1\xfd\x63\x52\ \x30\x62\xa4\x3e\xf9\xd5\xe3\xe7\xee\xfd\xf9\xf2\xec\x40\x77\x3a\ \xd9\xe5\x5a\x4e\x36\x88\xa5\xd5\x76\x26\x90\x1a\x15\x29\x82\x26\ \xa9\xfc\x37\x3e\xb7\x39\x27\x9f\xba\xb3\x4b\x92\x3c\xe9\xf0\xc9\ \xd7\x67\x42\x75\xfa\x50\xf9\x7e\xf0\xd9\xe5\xbb\x55\x8e\x30\xa2\ \x5d\x83\x86\x69\x6a\x50\x4e\xdb\x35\x7d\xf0\x68\xc3\xf0\xbe\x8a\ \x8e\xde\xd9\xcf\xeb\xbb\x3c\xae\x57\x41\xcf\x16\xf9\xd1\xa1\x71\ \x62\xc7\x5b\x6e\x2c\x61\x58\x1f\xb2\xb9\x54\x4e\xda\x6d\x78\xff\ \x6c\xd6\x3f\xfe\xd1\xeb\x5b\xb9\x72\xd7\x57\x06\xde\xfd\xfe\x55\ \xc0\xc3\x87\x19\xad\xb2\x4f\xb0\x4a\x44\x6e\xcf\xb4\xb6\xd0\x9f\ \x83\x2b\xaa\xa4\x78\xeb\xdb\x10\xde\xba\x9a\xbb\xca\x0f\xd2\xf4\ \x9d\x8e\x5d\x7b\x5b\x10\xde\x05\x9a\x4a\x91\x1f\x25\x84\x56\x74\ \xf6\x98\xc3\x4d\x3b\xf6\x5d\xea\x57\x31\x75\x3b\xfe\xb7\x77\x42\ \x8f\x4e\xa6\x48\xfd\x57\x87\xf4\x3f\x9e\x69\xce\x33\x62\x7a\xa1\ \x0e\x5a\x83\x50\xce\x9e\x2c\x2b\x0a\x62\x7e\xf4\x91\xa5\x0e\x01\ \x71\xbe\x96\xaf\x6f\xe6\x5e\xc6\xde\x95\xfd\xd9\x14\xfc\xf5\xba\ \x53\x67\xe1\x1d\x2a\x23\xbe\xc6\x1c\x60\x15\xd1\xdc\xcf\x97\x12\ \x25\xe4\x1d\xf3\x2a\x63\x53\xa2\x7e\xf4\x61\x8d\xd4\x06\xa6\x2b\ \xf8\x34\x27\xf5\xef\xe7\x45\xc5\x57\xb6\xbf\xbe\x68\x28\xe1\x15\ \xe5\x1d\xe5\x16\x0c\xc2\xd4\xe4\xfd\xf5\xce\x50\x1d\x7d\x5b\xe5\ \x93\x7e\xed\x5a\x25\x46\x0f\x95\xcf\x8b\xc1\x7e\x7e\x5b\x10\xa4\ \x16\x86\x64\xe7\xbe\x94\xfa\xec\x95\xd8\xfe\x7a\xd1\x28\x6a\xeb\ \xfd\xf5\x59\xdb\x0b\x4f\xa7\x9b\xfb\x7b\x2f\x4d\x39\x41\xda\xf7\ \x59\xde\xbd\x3e\x3a\xa8\x0a\xfd\xe6\x90\x1f\xad\x11\x5d\xad\xb4\ \xb8\xed\xb5\x65\x21\xbc\xa5\x38\x94\xfd\x59\x0e\x3a\xfc\x47\xbf\ \xa4\xcb\xea\x0a\xff\xe9\xde\x89\x0f\x5c\xb7\x8d\xcc\x03\xda\x32\ \x55\xb1\xf7\x4b\x4a\x24\x42\x7f\x72\x60\x8f\x26\x42\xee\xaf\x0f\ \xcd\xd8\x01\xa1\x46\x97\x74\xd9\x59\xd0\x57\xcf\xdb\x3e\xcc\x27\ \x59\x08\xa8\x52\xcf\xdf\x88\x4a\x0c\x0d\x14\x30\x4a\xd8\x5f\x4f\ \xb8\xc4\xad\xd9\xf5\x67\x7d\x33\xe9\xbe\x17\xff\xd5\x4d\x8b\xca\ \x85\xaa\x0a\x38\x2c\x2f\x4b\x98\x88\xf4\x95\xb1\xde\x9c\xa5\xd8\ \x5f\x9f\xf7\x19\x7b\x6b\x73\xfb\x62\xdf\xd4\xb3\xbb\xa4\xcb\xfd\ \x9f\xbe\x72\x3d\x8b\xc8\x43\x17\x7d\xd8\xa4\x7a\xe6\x0e\xf1\x92\ \x1f\x3d\x19\x8a\xfd\xf5\xc0\xa0\x54\x26\xf7\xcb\x7d\x63\xd4\x24\ \x2c\x25\x4f\xe3\x9e\x8e\x9b\x3f\xea\xd0\xd8\x34\xa0\xb5\x7a\xc2\ \x25\x1d\x2e\x62\x8c\x66\x74\x32\xf3\x34\x65\x85\xbf\xa1\x67\xbd\ \xdc\xf7\xb1\x7d\xe3\x13\x93\xc8\x0c\xb3\x96\xf2\x9b\xe5\x90\x70\ \xc2\x1e\x57\xd4\x38\x0a\xa0\x0a\x27\x96\x52\x2f\x65\xaf\x37\xe2\ \x7a\x81\x7d\xb5\x17\xde\xbb\x39\x4f\xec\x26\x32\xf7\x7e\x39\x14\ \x08\x10\xfe\xad\x27\x1b\xc8\x54\x91\xea\xd9\x66\xdb\x5f\xcf\xb8\ \xde\x37\xc5\x3e\xe8\xa0\xbf\x1f\x7c\x78\xb2\x46\x52\x2f\x37\x78\ \x1c\xd2\xcf\x7e\x21\xe0\x74\x51\xaf\xd7\x4a\x99\xb2\x5e\xaf\xdf\ \x96\xf2\xa3\x64\xa8\x88\xdc\x08\x5d\x9e\xee\xdd\xbd\xfb\x9e\x87\ \x77\xf6\x33\x2d\x87\x0b\x0b\x99\x95\x2e\xa1\x83\x57\x21\xa8\xd1\ \xbb\x77\x79\x2a\xbb\xde\x9a\x2d\x8d\xcc\xf4\x1a\xee\xc7\x1b\x1f\ \x79\xe5\xa5\xab\x93\xcd\xb0\xe6\xda\x9d\x09\x13\x8c\x68\xbc\xa8\ \xe0\x28\x53\x25\xe8\x7d\x81\x9f\x97\x5b\xf3\xe6\xec\x3a\x6f\x95\ \xdb\x69\xb6\x3e\x67\x3e\x5a\x7b\x84\xe6\xf6\xac\xed\x19\xd7\x57\ \x68\x4f\xe8\x78\xd3\xd1\x63\x44\x2c\x59\xfb\xb8\xc0\x5a\xe5\x70\ \xcc\x09\x6d\x17\x94\xaa\x09\xa1\x1d\xd4\x13\xbd\xd1\xf3\x0b\xf5\ \xfa\xc9\xea\xf5\xc3\xb8\x49\x97\x74\xe9\x6f\x2b\x80\x4b\x91\xaa\ \x06\x2a\x3b\xdf\xdf\x1e\xdc\xb1\x7f\x94\x8d\xae\x27\x48\x3c\x56\ \xdf\x8c\xb3\xf8\x7a\xed\xa2\x7a\x81\x50\x12\xa4\xc4\x9b\xb1\xad\ \x51\x0b\xde\x3d\xfa\x47\x11\xd7\xbb\x22\xd5\x9b\x30\x10\xaa\xd1\ \xbb\xcc\x03\xaf\x42\xca\x29\xf6\x93\x8d\xc8\x5c\xa4\x97\x3a\x8f\ \x2b\xe4\x61\xde\x51\x1f\x0a\x4d\x34\x8a\xaf\x7c\x9a\xb3\x73\x10\ \xd3\x37\x6c\xd8\xef\xa6\x3f\xe3\x64\x02\x94\x0a\x53\x8c\xbb\x7a\ \xfd\x8d\x7a\xf3\x28\x4e\xf2\x45\x3a\xd1\x28\x34\x58\x06\xdf\xc4\ \x29\x7b\xf8\x19\xef\x29\xc6\x4c\x89\x60\xb4\xe1\x47\xc7\x84\x92\ \xcf\x04\xae\x11\xeb\x1b\x04\x81\x9b\x67\x4e\x49\xd1\x3f\x2a\x86\ \xb6\x90\x20\x65\x87\xd6\x52\xb0\x74\x1c\x86\x9e\x50\xbd\x71\x45\ \x0f\xa7\xc4\x4d\xe9\xe4\x0e\x7e\x1e\x10\xd2\x4b\xd8\xfd\xfd\xe3\ \x34\x9a\x30\xd9\xe1\x8f\xd3\x8e\xa0\x53\x1c\x2d\xea\xf5\x43\xa7\ \x44\x31\x9d\xcf\xd7\x4f\xec\x1f\x8d\xa8\x64\xae\x47\xe3\x40\x4b\ \x48\x8b\x2f\x35\x92\xf3\x2e\x5c\x3e\x0d\xc1\x89\x52\xc0\x4c\x4c\ \x32\xd9\x4e\xf0\xb4\x13\x9a\x67\xc4\x78\xf4\xe5\x8c\x98\x0e\xbe\ \x1c\xc1\x18\x91\x59\x78\xa4\x56\x06\xf7\xfd\xf5\x6c\xcc\x14\xa9\ \x00\x9c\xde\xcd\x88\x1d\x46\xb4\xa6\x81\xa6\x1a\x5a\xc1\x13\x79\ \x9c\x67\x9a\xbc\x56\x1b\x00\xc9\x26\x00\x2b\x44\xa9\x4f\x11\x93\ \x84\x88\x50\xa9\xc4\x72\x05\x3f\xb1\xc4\x3c\xdf\xd4\xc2\x2e\xb9\ \x63\x92\x39\x2a\xe2\xd4\x51\x26\xb6\x8a\xd6\x74\x45\x87\x20\x84\ \x2e\xf8\xcf\x84\xa5\x43\xa4\x27\x24\x20\x4c\x8a\xe6\x56\xf7\x8f\ \xb6\x15\xe3\x02\xd4\xa2\xba\xa8\x98\x62\x24\x4f\x7d\xb1\x29\x45\ \x89\x71\x7d\x8b\x80\x9e\x04\xcd\x0b\xe0\xf2\xba\x02\x9c\x0a\x15\ \x1e\xba\x1c\xe7\x71\x11\x3c\x4e\x5f\x71\x55\x6c\x76\x44\xeb\xdd\ \x22\x2d\xc3\x29\x0d\x31\x33\xc3\xdc\x95\xaa\x77\xf4\x47\x47\x46\ \xd4\xef\x67\x51\xb9\xf3\xb3\xa7\x61\xd2\x27\xb1\xd5\xef\xa8\x53\ \xba\xa4\xaf\x9c\x27\xb1\x14\xfe\x68\x36\x9f\x85\x22\x65\x92\x0c\ \x91\x08\x2c\x53\xc2\xcd\xf3\x3b\x9a\x06\x6d\xd9\x3f\xba\xec\xfb\ \xb1\x13\x0a\xa1\x42\x26\xf8\xa3\xe5\xaa\x58\x1a\x26\x23\x15\xfe\ \x68\x86\x4e\x6b\x2d\x61\x2b\x2c\xa1\x7f\xd4\xf9\xe9\x98\x64\x19\ \xfe\x45\x49\x12\xfa\xa3\x59\x3b\x5d\x40\x3d\x39\xb1\x28\x8b\x50\ \x43\x21\x57\x82\xfe\x51\x71\xd6\xb9\x19\x7d\xbc\x94\x1f\x5d\xea\ \xfe\xd1\x0b\xa8\xa7\x2a\xa8\xd7\xf1\xc7\x00\x14\xf5\x30\x59\xfb\ \x0c\xfe\xe1\xa3\xe0\xfa\xb8\xd8\x67\x8c\x37\x50\xc9\xfc\x28\xd1\ \x32\x59\xc0\x01\x3f\x89\xea\x49\x50\x32\xfd\x09\x3a\x8d\x8f\x1b\ \x27\xce\xdc\xb9\x09\xc5\xe3\xf3\xab\x1c\x06\x67\x18\xea\xb8\x79\ \xfa\x62\x67\xc3\x1a\x9e\x86\x56\xb2\x43\x46\x4a\xa5\x9f\x57\x3f\ \x5e\x6a\xe0\xba\x0e\x76\x67\x05\xdc\x3c\x22\x78\x63\x81\x5c\x08\ \x41\x45\xa5\xda\x34\xf4\x41\xc8\x4c\x05\x5a\x17\x6d\xe9\x98\x88\ \x64\x8e\xb2\xc9\xbf\x07\x47\x8d\x54\x6a\xa7\xc3\x12\xd6\x70\x16\ \x3e\x7e\xf1\x70\xa3\x2d\x87\x03\x79\x47\xcd\x86\x4e\xe1\x9b\x39\ \xba\xed\x0c\x15\x4b\x39\xd6\x50\x68\x7b\xf0\x14\x63\x42\x99\x4e\ \x68\x7c\xb1\x52\x62\xef\x74\x22\x8b\xbb\x8a\x52\x55\x6e\x30\xdd\ \xb0\x1b\x0c\x1d\xfa\xce\xd5\xd1\x0f\x4c\x93\x28\x06\xad\x31\x49\ \x36\x8f\x51\x9c\x5d\x94\x56\xd8\x50\x15\x16\xb1\xa3\xc7\x98\x09\ \x93\xf4\xac\xc0\xfd\x3c\x7d\x29\x51\x8e\x83\x77\x2a\x9d\xa3\xb6\ \xf4\x88\xa0\x1a\xfe\xa1\xbe\x2f\x39\xfa\x5f\xc1\x2a\xd8\xa0\xc5\ \x51\x93\x08\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0e\ \x07\x04\x9f\x87\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x09\xbd\x6f\x27\ \x00\x77\ \x00\x61\x00\x74\x00\x65\x00\x72\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x31\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x04\xc8\x47\xe7\ \x00\x62\ \x00\x61\x00\x6e\x00\x6e\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0e\x26\xb1\xe7\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x33\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0e\x25\xb1\xe7\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0e\x24\xb1\xe7\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x31\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x09\xbc\x6f\x27\ \x00\x77\ \x00\x61\x00\x74\x00\x65\x00\x72\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x90\xee\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x00\xb3\x62\ \x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x58\x36\ \x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xad\x0b\ \x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\xa6\xb4\ \x00\x00\x00\x70\x00\x00\x00\x00\x00\x01\x00\x00\xa0\x5d\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/0000755000076500000240000000000012613140041022301 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/background.png0000644000076500000240000005406212613140041025135 0ustar philstaff00000000000000‰PNG  IHDRÜ|¤1ÕÛWùIDATx^ìÝÁKUiÇñß¹×ë• •a:­$PP qV!ƒ%H-lQBÝjF¼¯`P£¶(‰ rq!\´¬“6Í´r#b†7RÜÈ‚±Âl‘òôl‚¼HYi~?ðåù ~¼‹³8ú‚ô‹·Cy1}œ”Ö©_Òí¨  E_¯ZRzhÒžŸ¶nJOL<0³”æès0´”I¿K:O$&ê»»ûj[[ŸJºë½Ó¢Ûï‘g½LŽŸ6³Ã^™€CR"Hé}G,69|üxÖÌ‚·Ý+ødEÞ!¯r·÷;äÓÂR¥7âYOiéß¹ÑѳfvÔ+׿Jëƒ4¢èIFê ’õÕÕuiAÆvЛöM47_í0³]^‘æq§­­Ë_Á™ Yg2ùö¿[·ºB1åÀ‡výLIÉý±áásfv«VíRÍ©Tê^lN7•3«ñ‚×ì­V~ÊH}¤Sªªþ ’]®­½ßßÔtc`ß¾3K(/ðY½—Q=Ñé.Û´éÅ›\.q¾¼¼&Y\üzïàà ¤Bo•÷¿V,DZT0³¤¤jo,[_ŸÝØÐû9>¢¯`|Û¼}ƒ‹´RøG€ŒÔ¤W~ÃÊbún°zÆ$­‰EQ&#Ý R‹–0¸ þ&•j˜zþüH,Ÿ)ݼùßÔºu%Qõig»T·[Šk)2R:H]’"¿—¼gZâ‚ÔäÙ•ÆÆ?Í,\Û¿(Hö±Œ”ÕR|hï* ªÊÚö¾¢‚Ù`ŒcÝÝ9ê˜cרˆba ˜‚‚ŠŠXXb") ¡ò?ï]û¬u¿ûãÌà×™÷YëY‡³Ïa>ï·yïÞûç]–#ÇzùGzׯkÕ¢?âÂ:jhyÁÉ` y®\Qѯ^™{[ZV‚…­.Zô½û‚¶6nìKF·,gÎêB×À`Ä……5´.S敲:ìëÑÃ{GÛ¶ÝtÔàšÀ¸¾AíêÐÁ«[ÜÛÒý[Û=¸³®jÕë¦*Õ××þþ­1^Üm"DOÁ`èÀŠñV‡[ÒØ´ù“ÐA\µµ]gUªÔ›5¥J…Z—-[•´¾zõ0¶)fúúmÉø¶·háûæxÖPc›i/² vš|"Wv}ýl?uéâš§X±°|¥K¿ä꺹×öí›æDDä:ˆ&3flñò¥íŒçÏ¢£Í1”#oÉ’q1aaî_­³åÈñ©û¦M–·D‰ä)^<¬ì/¿äªç,Ëœ* V‚Ùà 5jø¯ÈŸ?÷]À¾`¥¿X«aÕpĵIü›sµ.YYUÙÓ¥‹·óÀG°‚£•ÌuèPw<ë%Wðò4vhРó[Á½3ùÀIY¿c°Ász,\8àÆ–-ޏ/+þäÍœÆã¬»½yó_³ðß^ÉâDÆe_¯Þ]Üç•W‹Æ\~ûí0Ær­,Xp«Æ6sŠÈ"0ØðòÉ?Þ²ª•ÅÊàŽkÊÊÂ…ž_¸`‹÷GêÀ*¬ã¿}ûö›Û¶Yâ>»L„hJ†utìØ=‹…¨ ó¡{rš1ãØý#G†ËÏãV:Ç놂‘䤨߳ç‘äÄD3Ûo`^Y©õÀ¦à0‡4¸Žd`p°<Á5i©Jw°_?çäOŸèß> ìb®¯ï+W»¸VY cE`hêíšEîÜÏœœ6ÂÈ …Ža¡Ű’U×X‘'*ÛÇ5%KÞ|áíM+ò°¨€¹ÁÛU… G8 pêÑ™3ÕD‚Áaƒ.06ŠÑ}ÝöË/gâÂÃ-(Ö¥Ãqð3¸ÜD1;œíbÝçÏw¥Œp˜Oãý` /W.-_¾me¡B7äÖÓ ô¡-é·RàDzÁ˜ O:ýÁ‚_‘‰òæêÚµÛ`d&`+PgÃ!^¦¦õ)㯬jËóæ}óáñãÕ0²Y`õT¶É³é½ Õ«?–†š²²H‘)«Š5¡q2ØÔ‚æxæ î˜/DÁ`üÓm¥N)ÈÚ¸ùâÅJ *ƒ¥ÇÏxò¶Z•.ý†VfʧaÌ@¤xY=ã4Ë‘#–®§§Oß‚´°¸OÚÝ©Ó勽5ÒÊr’‘-Ó×÷Áö:ÈqäHñÁàm¤ÁŠÎ!L°Snú‚Ù o« ¬Ÿ”0ï™§ç:r¤|ësÂàÔélÝ»{ïêÔIí<Á™. ΕÄ+66Žò¼×_¾+^8099¹ßÛ€€5ô¿#ŒtX)†ƒ3ÁŠ?ðg0[ÿÙÊì¾páÌó&&‡ðÎb8U®’Á-Í–íóÅåËwclšæyÏ¡yóÑXÕÂéêAXäÉûÊß¿·`0YÔ-üéÓ»Ú·¿FN•%°C!zkÜQŒ'\47ßGa”ˆgÏV‘aÊÊô“`Ê©iÓŽáY'ñ·À`°á‡?>qb#ÊnííÙs”@Ìî“­‘QˆôlVë†=~<!u }M‰/ád™›vÏ/ƒÁ†Wüœ$$°ÝŒ¢¬–W†ïeÇù/޶™äùüþ9ƒÁF—M3óƾnÝc´’ÁÀv-¢,ÐEcp²àÝ  Š¶¡äõïà™*UEÚÀ`0žyx´DÎé3 gɺÂ;™rõ*Èp?Uf±Ä™eÏ©þY¥z‰kZóS ^ñ?}ëcm½wO×®ÇQ¡@†”}Ì;x6€’qŸoå Ôã­Å˜éÝ}û¶Âð’`€² ½±øÛ`0Øè²ƒíÀ±¨«ÛKbLjQÝzõZ+*Ѥ-«Ñ˃õ÷vëæ¥¡­’,kïÒƒ¯äÇwïÌ|×­Û™˜˜XÕL9ЧÏI¡$Kï•‚¶×ŽŒuòÙ… ÄwÁ`£+öúC}¬xQ8ÓÑ*ÖŸr2ÁÁ8ÃEÓxìû÷T5ê}` ­†ã±ÚÁõ(®SpÍ/ÒƒóÝR%.§Icc[›ñBä ”0éX‰ãå;Ó›ÉÊË ­n¤VoäÈm“îܱédeµ«l“&ž(X¾|H3³+d%…øM%D½œ9»­_ï2?<ܺÙìÙGUÙ²UÌ¡§w85¥hòp‚yƒÁPŒBŒN‘›ëkÖàì<ʺ\¹Ôläž³óR–ïíÅó‹eÉ’ïèÙª"E#«e°ËСçè÷-‹ë"$4*ÞÖrˆÁ`øùùå€Ìúa$5Ç)ÛHTü™Y³¨Ê|´€ZØzäåµÉÒÇð~4éd®*Tè<ïïÓg¹=ˆ{_ð_X¶ M0ì@é å°UÇÆŒ9éØºµÛWWŠÅÍK‰ý}ûö¢• N”GOÏBÉÒ;Zµº€1µ’VÆY030h©ÎQóèøñ%âÿƒÁàP8œ Žói=Ïí:l˜±<þ>VVfÝÜ6bu»„ç}ä{ù×Vªôœ<ž¤½‚w“`|Vs…È'Òƒ²Ñu{ûÐȼ- )+ž§L–þIžõÐ8äÚ/ž9³a]•*äÑ]¤ ]mpö‡'OVã,wôÔ,Ã}.EÖdúH9Œëÿœ ‘ÞÝW×­[ñ_(ÿQ‰tƒ!¥÷*‚uÀbàA‚ä,Çý¦3gëlcc‡1/ùî/àO +ÆâÅ?ƒÁÊÇ6m.d¤bƒÁ Ô'™^x\kïmŸ¼XˆŸñûý¾±Sc0Xïzbòä“V¥JÝWš˜Ñö;ƒò»¥ñzS ]¤ ƒÏxÁEÔ(øÊ+Ü·ß³óç·£ìÔé~ ü“$iƒ.‡,ê–ߥzzûÔ¶»v9ð‘H; U“J´±åþä&à× 5j<|p䈉óÀzâ»À`°ÁíSÌræÜ.R‡ ©v¾(Ä}0®¹}.=u*ä9\…UаU+ÿî7: th—^ŽÅTzzgþó)b²ê7eu±bKqÍo,D%Á`üu_¼1à Íq*r…±§ží:úûáUšûaK©.²*W®ãu[P¬Æ¢6*46,lŒÏ ÷—Ä÷ÁsÒÏLS<—,q¦~íBéb—(!úåþs[J¹yo‚w…Je€eßmåT¯Þ·oÄ÷ô%c0 ›5Û®Ÿ?˜žž9c„ËP˜Ñ=9>¾e¥N®—mØ0Büa[±âuå@k÷ÓOw°º}B°ó9úVËÒŽ´‚Á[ÍÒ ±±‹¨й¹s­—åËW«Þð1úšGG†„XàÂÿ¥md^–);!F’½ú×Û[´¸©ÞŽÖ­ý’’’þ‰”ƒ.7Øœº²H’^OVK²×¯Y,ÿkç¶ò¨ƒŠR ìúÆ;öí{‚î‘ A{lè×W@*Í/¦U½—Á}Üﻸl´«T)+Ü'ÇnÝJŠÿvwêtR18te‰Ã5Á¶|ùg_’“—F­Â’ßD»<ˆ´ )Egy¾|ËDÚÀ`£«N ³Àõgñ_µ§Å —`cdôòÚ† »ÈˆÔŠMÅ‹¿{xäHg[°€<è¶Äª†çK®nÛVÚëãÃÃçË®.iƒeÚë¹ÿkn[ê¤ùôìÙõ›Ù§nѤÉu•+îëÑ£š¶L¶™·•RãF $ƒ ÁÈcçæÍsñß±cµµÅVòñçÏŸÁ§Ö®6).n Ie/Ó×½°jUu‘f0\v1†gKº„²µQm0¨Z€åZáÈÍ‹ç]ÿJøÿ«ô2¼—ÎûðèÑÒï>\ûÁZÞÈn7Y Dü\ü°ºH‘×Iññ ¡­÷óËtž:²ëfx%þ ^KP_ëŒ7Wfv‡ãzLZÓn¼—Z8@…ç¡ÔÄõ-ÄCCàu†xh°<÷íÿ$S†Á`C,OÞKèÌ¿’aƒÄ‹+V¬Ãxª†³£M›éf9rÄÓ»6åÊ…¢îÉ">"Âtg»v×i˺ªT)Cñ§`0Øè ½kÁ‰‰OZäʧ¬V© É\03ëJÁr š#s…ô/’pî³úœ˜8˜âz0Ô¦â/Á`°Ñ廆?¾bwÇŽWÐðá¾]ãÆùS͇6}à©Sžyz®ƒ¢ï}l-£—çÉS‚”|Ó–“É`°á‡¦`§ü¸‘¸v¦Õog‡Wä;•ÀÉÉŸ>™)g><ïþƒ2Be7 Ü‹›Í ¿ÌõîO¢¹_lÏ­[/`ø,Þ{Fïe70pÂõ -'®kAOü‘-n“pýL[дÇê –Oëù6 À’J{Ô턈¡,•5nkjzY?oÞxý|ùÇûûÇ]ƒ{{miÐà2¤ág_°Jm3 å¹m62Qú*æúö½(Ë€”Ú¼x” ¤Jó›7;¢Š! c¤²¯"µÖZèlhÖ0¬3¸†AûV Óƒî¿ìïÛ·»$I«Ü¦N=€ÓG¨‚½Ä½þB!JÇrKÆweø_ÀŽwöì±’^Ï’}@­ÞLª0g0à œCîv0w¶ooO?#sß›ouıÒ=£—E¿zEý¤©ô§(˜²­iÓÛ¸/($|×­«@ãdtŸÙŒg5….€Á s?¥š7'ƒKYY¨P¤†8P,þ¸I´¥¤y3 ƒM䊥ZS²äSùEñ«Ægš¦loÕê&Þ%uXjbÌ+¶-8Ï D€ÁçLâ­¸Fa•{÷ñÍ›å6††¡ŠÑ­«VÍEè0|¬¬¦àÌCFCz Þ”_ñï< âØ’› ¬ÞÊcÏ2ÝË`¸ŽÙ„þ8ɸ _cW¥ÊIµÛ½{wŸ33gE]Ûì¿0ØŠó…(…+^þ×7o.w6ì,TÄ|J ãK9Ø¿ÿÊd! Mð3m/ONž| Fh‰ë ¼—ÇÊ»LMc0°%›H¶©N‡Êv’dï w·«Cop$¨G±9Šem5·cX)¢Áwà¸,ÞfèÓç" é †ºZV&<§³…>œ(‡_øø ÷X´ÈIvû™û'«ÁtKc0(†¹²`Áר\¶®J•@úc¥,È—{ Y{%ëC2‚ÎAphÖl%a;z\Îw*°éã'6£é÷áCÔÕ©¿P.,[vðððá'^øHŸÙºlY{ßÒ¨Ñq¡Òa¡«Ü†ÆJ™ˆÃé±ýdp(` ,ñöÞ½Ûvµo¿† Çià@/j‚ûîÝBêß…1CâZŸ 9ylO—.žH­ Åj‘H†ˆjndü'…^»fƒ÷‹ €ì)=¬´©aê0º$T“?>}zë¶6nìMÛL©$椱¢µ“gäêU[­ž[°ÍdT!W®ÌS¤p5Ø×³çI‡‡0"öý{SŒÐáÏYóêÚµ»á}U‡ˆp]‡lß, ” ìêØq?ÞKà EùаÏII3eÅzº9Y,î:P[ÈN†%Ò©²_sNˆ£4~ÞØø~§ÒÆJÆ» uÑèÀ/.]Z ÇÊ™Í?ÿ|(2(¨ ¦ÄŸL‚þˆ­ä‹/_¾,õZºÔ ŠÑa0ΣRŸ¥ ¨'2 ƽÊ‘š–ŒsíIEy7˜‚fŒÁH›¢U‚D\çQ±._!è`Ñkm©b V•• d)Ï.úœt¦Å³ú`K¬‚ÆXÝL2mec0^ùùM·¯[÷œ±dPJÚÔ=gç-tÞÃýhCæK¬‡à”¸ˆw?âŠïµÐÑ=›Æª‰ëg™—y‹.ï嫉̃Aç3piD’{Œ‹t$±´•[1ƒ‘%ïëÞÝކÙsµ'=JÄÃî Ç“sçfÛ׫w—>Åï¬Ë•[JÒë" Á`£Ó Á¦×7mÚŒ³]°C‹+€¬JCØà… ÈÑoß4ĸüÈONšTèa‰¡ +8ÝXˆ YøÙJ‚nlÙâˆJ„W2õËë;SåJKÙöµ`AñOÁ`ÈóÍp,K”¸VT ÷žtñ¢èþrÛ™@JÊ/}}›höíð|ƒÌy ’çÃ8pL{lëC-z¥´è×oîõ¿'«´Üz§_*ƒû.+¡€³óæM@pø3¶™á(\ñJdv"UìåÆZµk†Ð+@`—ýÀCHð•2CÖ”(ñJŽ·ÒÏÕIÖוøƒ |¾­]&GHg0Øøò¡:|œ&1Jê¶œ.8Y¾½{w )si¼[O³a™ÁS§þýÇņ…Í%7|Ð… màÊ ¬ÒAt¾••é”@­Rò2—à’^[g]儘ã ææÐzØÎrÈÌX¬ÝˆCÊ–§À¹â}bòä“ØŠªKkÉÑJ&K70¢+U$ü ©rÆdhH“»FW´W>"­øBž ?ƒƒ‘.Yûr;–øñã2\§€<~$‡ c^OὌDa«9ž÷útŹùóE7HeÅÈKÉÃ`õ ×õDp4ò41ÙAÆåöÇޏZ€Ÿ5¶Ñï°Í6Çýp˜ZõÁø§1.ÙõÆHÎfùÍ~žV€³sæÁ³öòÝ¢à¯`= CwÇ5›Ë°aS‘«yŠ‘…ŽB&=$ý—»lEÒT†¢¥‘=ÁÙ5ip£CCWÄ~ø°¥¹â]LWu4c¯^?ã›ÿRkwzúôßôâ³rûuóèï¿ÿ.“¦K „±FRû2ŶB…çȼkš-Û"%9 ÐgP—çN÷äýÄçè æƒÊô^Y‘àïØ­›ú³ÉÞyÿ œãqš—™™UHcºª4ïÐdÚìîÜù*½‡ÒŸÓº®¸urêÔ8¯†“ÁÛjÁªM›Þºno¿óí½{+‰Å5)bs”PƒU™2Óé}Z霋Ÿ;Qà"Úz‹ôƒû£•°‰Ë!ˆ¿Å¬.QbÐ7ÞÍi]¦ŒÅðž¹»Ûâ¾ Ž¶ºô¹P䆪„ɸυxä¤Ä-\‘/ß>r ù;:nÇøÏBÛË~dp{0¥ó-VÉmt/WvW‘^`pìKÙø¸ŽÔ8Õ 9s¥ ï IåÌ”SG?Wp„ü ȉ~Alò¶´Ui|†fêó]Ñ¢pW¶¤GÇŽ=}zæL¬ŠN;ÖéwÍ)"ÏA•%-©üüˆ£µPÞQ@í¬äòe¼§³IÅ'¦Lé‹4±çdHȼyc+§åhiBÏdHäªßÖ­›d½Ý"bšçè¹ì‡·\¤' è¬2Ï•+BÙV9äI!†Ô4"v÷šÞçï$®[Áf:¸â•Æ™m¶ÇÂ….§gÌØGÛd (1EI7$ßÚµËAÚh°²@G"x”eÉ’ïP¥qç^?&+éržeðŠ×γý½{SiO2y3aP[´eìp?XQáZSªÔ*’ºšítÐèr‚íÀ?À"$'&ƒÇä–ÙGn5´>ã(zî6mÚq8›f£7ž9…Yð{·h« vé]Að×ÞÞké›]†–k&ø‚-ò䉀äùrZB¯_·‡0FúFè8ŽóÓújÕü”UÜù×_=Þ<}Z<•Œ•¤úáÉc|þ=ølA&Bü²©nÝ)‘Ûï-"À`Ã+N$¡è¥P1(‰Í÷‘º/XàŠçÝÁ"`x4_Pí]tttÿ\¹Àq.ÀêüVÞ2¡2,§°Dã¤êú ÈWmM+; öBÆ}3%àYáô³e°ÀQ£2ÀÖñ…,çI@B´‰’…±64¾«S'_ŒÕÔLµ‚ƒ¥6žå×ÁÏÕe@óÏ›˜ztüøX­íänås’‡a…pº8tÈ×K8÷%Ý;x*í‚%1¨ñ¦›h-ƒñúöí §2 íÍ›/U23`P·©é´4W‘k~…°žÐè!‡«ƒ®­¤|&³Nú Ê…Ñ$(õp¸ìµûé§gT…n_¿¾+7î8­’J2*-†­,Pàµ\ ýÓ³Ó+ƒe†B¾a®#aH³ÁhÙ’ø4m1åùÇ‹ÆPä‹LglÅîÈ4+]Ïà€ÁŒSÌõõ?Ѷ“&¤#CJØ>@Ò3uš¯™@[êgžžk”~xDÚzÏ"H0Øð*F–eÊÔA¶†º®nwÇŽTè™[Jô¥!øî¾p¡=Æ(¹ŒˆmÍÕõlœ‹Ë—ïxxô(Åä¦ ß²¡bD(æ}G‰Ï¯*´£}ú#+L’ðËjg ­VAq'ë-‚þoIÚ‚VûTèê³mGñù­mŒ™‡™"Áàø]÷7wîXQ?8üA>‡ÑÅ7®YZ”apë¤×ï ®e…à]@@=¬ØçiÅ"ãY_µêÓ‡÷Hålךž;¶n}]6Õ,G Y¥‹\Ôé³c°¨8\,õUÒŸ‚§ó â%Üß¿CÊÏìG+¤îJMÏhå|¦Ä'1v Å»±ï>\­Èýáª3áe2Ä‹VV僑AéTuÀ|" @ˆágE:ˆžx½„b `/’ņWwkçNÈ´ßp8°‹R+Ž×ˆOöÀ w<¶X)[h¬äuÀ±Ôõ5+VrC¥N£ÒÓK@ëå7Ôá•ÜõulOe+â±:°âÕg‚C(Ø-k“Õg»ØØEÒI¤VIl¯ã¨1 ÆKM'%+G£þn=ë«02Óÿ«ÒÙÕ¦\¹¤ÃYcK(Ä ¬zr,­ ⮲oj}›(ßü²¶R%ŠÁ—E¾`H÷)#Åûöí±±±”‡é¦ ‘ú6r:ד¾ ­–ŠL;‹ ƒ-7øñ»pêìjž;w(õÇC–ŠŸ5Š¥+JeRsG»J•¤Kë€áµ¢þô“@‚M`8Ý»F’ƒc•/•mM›^‘ò`[pTÖ.+_(<Û2¬o4;»’â–²šAQù, L-eNƆç]Ÿ=[V ™²UGέÁIt¾C¿»«èâú2>>ÖÖ;e•Aq + ¤):.,ŒŒ­ÐÀÙ¹s'Kc¤ÜÍFøyŒoeºV^0«‹ï…¹:![+çÉ“ó®.Zô ¸^µ³ÛuÑÜ|=CóKäUò‘̓ÂÒ§T˜†{uR„l³XŒ·¡ÔH1•œQåøñÉk¸o#«.zQ¥…Rµ€Š ïˆçÏW’T¾HvËÕò-8:]>ƒAîó°ÀÀå”û"$ð¥1Å’““{Q…B\dä ¬lA2í…„ Bƒq^zA+y lV¶s¾`q‘ Ï¯ÑXÄ€VeûŸ /.%}Ë,”0<›H(Óå:Ëì+28Äï”Õþ†‰ÍE:€ÁFW .W„&XÝZâü'„«¶L»¤NݦêÔ¥ÍÅ;!`ÊŠ¢ð»ïV—,I’‹¥è­Î+òEi<¦p_´h5y6ƒRV;º’!â3¾‡æÌòÃ#FœÃ96^®xûÓës1ØðJƒÙHÂõiÁdD8Ï%½¼~‚è9…,‹?¯Ñ~ë9*ö$ÆÅÑ{¦2S aA]Qݺ{ð`H8„IÛupÀ€ ¨²P!*-nìíÖMé ±–ÆÎÌšuú1½®®_?÷–x'ˆÆ—fÏ>_0éyŠŒœ‡4±sp>D9r¢PVj¹ŒzµH$Kï¥>è2.Ö,½•dp8+½ó&êJí]ä‹sQA ‡“š¦`+ÒÅX’t%RX¼äåUž.´ªSóM¼«hÎ J—2 ×Þ½À%àÙFë¬\±6ƒ)Tü)åðêƒz ħɫ‰òK’;ûð$ΫѪ‚k}(oõÌÃc*NooÑÂë±›ÛF¤ÂÕ¡•˜þí8&S£LˆÚ¾$Ã̅Ç3?¿¸?I^Pü~sŒWÁ»‰Òh/¥×çb°áóQõœ'•U«X䦤R¯FZ’_¶6ir'òåËþ879¡ñiN6ƒc%ŽžI!ÛÜYìͬ ŽgÃa0{I˜Hm`:]ÁØ8hªÜ ^:Œ Ê/ ‰ y8O’aÒ»”#³U¶¥[ Á€÷²?Åê ªIFOåeRVÖ*±¦g—W®ÜpÃu©­òÁËË+;¤þœä}’YΜ}…Ù*½°eTŸïÐ::Ø¡U«¶WÖ­kL A—/÷%Ï«¬ÕË\ZÝpæ£PÉlÊÎÑH‹ç¤W/wjCÙ(HöDÎ¥®43V°ŠE"F•á-­f²œ&ÐÛÒ²V‚·d¬HŠ^CÙÿ&B4’ +{èÀg+ƒÏµ„Œ‡În´báKÁñáñã¿á3Ý£Mh©bÓ’âãMONŸ^Þ\êû ½vÀ™ôJÞ:‘`0d|khªÙŸ\©Æ–‡OT›G÷”6¯'È&Ë3Я`qÒÐÄ{Š×ð,®5t@%­èµk6p¬Ü&ÇŠ’Gê:bÄNZÝ´J¡jI9B¥5WtzJz,gÎÌçÚôƒeü´¶“·¤w2öîþý[ܦLÙC÷H±z-sÝä(»’|²dC¥¡&Áðìh˖ņgާ„gË%BÐpò%Dlçi‡F°B7ÐhÍ5Ž¢ödœûõ»€û M‚f0T›êÕ[„óO\èvô‹­¥½²âÁyrN–…Ú­¸|·n-‹³S8U'l¨Yó¾’­#Uô?#um.UÒ“'V£›Oy)E™&tΣZ=ŒçGîé±ø¨(SZ-ÿ‹‰¹­D¦!ËeÖJNÅiBÆ´J‘e×ZÍéjÍŒçónlÞìàìL¡ˆ7Ìêt*ª›i¤ˆm’+±}6:ËÒ6TãýQ`ñ_&˜'2l|­C®^µ•b­zÒÈò¦¦°…çÕ…ÖU«¶@Ù’Ê~xKÁl:8ŸxÅÖv<’ïÿé߭⤒ö¯èD[È©-AööÚñœ‚“%æÆ`Ail )~º‚#É•Mé{®@1LÄë^£6œVHZ¥áБÏõ É9P\ò™»ûÐ`p¥Ñ¾{‰úÈb FÅÇÇŠ,ƒ‚Áë«Ww…!}–µ_B||l¤Â–ö»+À(I ˜]BtôL#£—4f¦¯ßVGVðÜ`W°›øNàïr†lÕ‡R òòfG¸¤ªøQåz¸tI»kÚå¼=)U‰LƒbU&oZ[±¢zÅ‚'3óÐ[ËØ*Ò•æx¨G„3e¶ôxî:†4 çj—¡»í§ÈH³UE‹ZÊ:= ©”?`Lu1q¯õðžä¿©?™T§Z§4%dªá±ÑUCˆ`ú ‹ƒ¨G{çÖc-Ï¥z$ÃÔ²EÈáõ6´U+/¡…™BäÊ*Õ-Z•@opVZRº”2 ssç¦zCðç3ÆÆåNù(Sà®üh[˜ÔBN¦ a¢Ÿ!â°Cóæ>ÔCƒgC¨TV5'†É.Ë/ ‘n!õ.fQy*••Ú-­Iî£1™CÙñ’þ=À`r¤(ù—H ¾üäÌ™r»•ªxŒyŠF=ÚT¦Å½ZÞ[2¨+»ÂkøP® RüG•ÉåL}‚.]šŒjù2NWíOƒ38ÃRÇW8õ”þÏÀ—¤ž†/!ª1 æú‘&smK ¸;Ÿ Ž&IÉí“òh*ù^É-ùѳ˖–öÒôH¡Èr§¢mAúõ"ÃÀR¤‰!rÅ Æu1®3Ápr²\±±Ù#{ ï¿îëÑÃSJÞÍ¡Úü8mGeÛeˬH‚G]03›†¤æË0 [SAíò|܇j”§®¯çæÍ;¬ü‘b¼Í:‰µÁN²nK…óÜk|ÅRœÐVÁù”)N«žÐÂU[Û~+|Æaý ªÈH°ÑÕÄ6sJy\¡¦þæ—^¼wÆÆNäD±ªP¡ŠÌa¤‹1ø³üÝ`+lížË, \ ÀTF”Ùw0¤‰;Û·_L}ÈÁ±Rš¢ K¿Ci`LLL1 òßwq„³l"¥ÆÑç—‰Ò?>NN™²Œzé̆‰æTúFƒ&`ùT<Çhùæ½Qo§|z¬«U«ͱœÃ4îдé-h“xcw“,µHlÀ‚: £wÝÞ~yê¦}Ý»wþ×ÖrídÒ¬)8A¶=š¦Dú11Ðd˜<ù$žwÑ2Æ*à’ÌoáĈŒŒ,H2ÒÀ6_¶±©‰bs”ùÄÉâ×=^é{8ÿÅ~xüx9ÑH<gñÊî†jïtÁÏ€2 yOÏž]O¡ÿL!% |RLG)„Ã-‹{…Õ¼œZ7ZzÒÂ3¿„„ñþñã!f ç FvG)—‘N2¶)2›%~W§N[pËuèоW¬­×Ò8z·º´”=o¦e@­Á2â¿„€C‡æÃ©Žç1Q¾qQQ ¥iQ çÀhx<£º¹ÕV«D¦›N°FR¶ ¼’XÅÞ£îNéý]OÅ? Áá=*Îß*óy°oßÁp¤,Á¼ECÆo5éhj$;ƒåE¦‚'²,8]Wöj¨ôÞÒ>hc̘ž=›dÀ;à~ˆœ´ãx·²È,p5B+p.húåË—¥Ø–u¥m&æãÍÅí^\¼h-›•PC’ k×JB–švôTò)Fq>ÊáÍ3?³ˆ'² ¾-Q [ê†oÊEB‚´ië Õª`ì½çwÜ ÿ¹.Ï"³ÁjbeÀˆÝU†á¨¿()ÞúÜÓsÉ•mÛ Ãiâ%ÕÂʃ*Y6”C©8§ú¶‡GnÂJ™@÷28=Œ3‹2¿ü¢2–â:Mãü6 Lñ^³fm_äX6¤=ƒ·ìÓëÛ·MÉÿ¢—öŒ)¦d¼¹{w¾c›67hÅ©puYdpð(d±Œ§Fš=½W-Ú •$'hW³»cÇiJãI”ÝÍÕ¬weõárBg€Y4h`±ã*M'Ê‘‘#ÏÒVE)¿ÀØTpØGÉvÀ$*â:~ÒA”ç«(8’ã$[§‘ {“Dhþúk}-oõ¼—þþ•©9VÅHtÌYì㳚$PûôC``V6ed¸›šb;ùš²OèÌ&57¢¨ÔDÚóH 5ulH!M8åszYX4‘“|÷n!‘Q`ëN§>P‰S’¢¿¡¯²@³5Ît;q¯î .SÇY)¡zãÆ¬-[Þ€ÑܦN24YÈõs!…'éf~£Š‡6£Ó-[ýö›;¥î`Œ®»é}—­o3|¾kûáÃêóýò¥9î àpNžÊœÉ_P"1p–sF‰:¹Ô‘sŸïÆ‘g XnÒ·!Ê®ËF-À§½p?ì s:ôKÙ] ¶gêdrP_°ƒ\Ñ ‚Øu,Äu/øõöîÝÛð¼®|¿!¸äæ‹:˜±ÒšÎ aÎ%ƒSÒ‰ŽG…¯y…ĉ)SFJ/f´³©Tᔡ®(õâðÁ*˜¤-Í ¥Ì^ò«lZh 2 \Ô^I³}ú\´*[öê);;}ñ CßKááN"ÓÁ“Yƒ²ìëÖõClî¥R‚á>¾+ÕHQþ%‘^¦ÇâÅû)ðŠsÝ-)ç*2¬ý+húOjÑR¸«|qfvíÀÛÌyäXQ4‘åþDêæ¯“÷[š—ß~[…¬•ÉpÀøÓ{ØŽ6™nÃ%¾ʹ}[Ó¦·OL˜püÁ±ce‹æ5™_‘ÀYËÃÐz÷Z9‘Ûöídp~;ÖVª¤hÕ{okÖL2€L»‰Èt0L„è‰yø--)]JݤFаO?¶5ϕ댢ªœ5â®\½Üœ–ÚÚ¨Ñ2è4V¶)ØRîF:QÏ›˜XˆLƒ²ƒÀ@=È/P‡Ö¿ipSå®$î@¿~¶Šã_ÏÒ.»š‡z÷n)²Œ¨¨¨BkÕz¬Èº9õï?-o£;Ëq*'LÀ‘Uà/Æ¡~Û·OAø†¶„Žÿc+L5‘,C· pšO)ß7×/øb½+φýDÖ‚‘×’}— Ö'%aPÞw5MP#‘•`ëŽw2d.æå&ÉÛiÊ™S^,ÆL5Ë€>EG›A\øªKâiL£YãO Ž„ 8í¨‰ÒBMØ ‰¶þÖ††;1VBgdÒXºé§¨¨É(J^M¹°ŠP®E±3QËÝA¸õcØãÇseïó^nS§×jÖ¨cà‰- vU )Sé&ÃÈúžp=±ZMÆ9›šl4@ˆ¯ïJë£x«]•*VÏÆÊJªpÈß4•žO]¾êôñü”G‚Íï3øû+??kFc|ªÔ7Ïþm*Ý ’ ŒLôï¸ö!)vê„1CJ5âŠåŒ‘·ÓNrk"”3ÛKu.ýKÏm ĶÒ$ƒ±”¯)2lˆ•iIŽ“Ó3fXýK+AØÒt¢¯Ô}ìÑHbî[ ¼ š,VQÁÁ ëôêSpFXId8[ìÎs‰ÿTÿ¥³ß…¥Km`hÓ+tè°¤»» †õÁœ`vÐ{‰JUÑX;Ükæ ^˜ ñA¤ ë® -ÌßLO/Q[+ZS’#Iˆ=]º¸\Z±ÂšöçeìïÞwte0Á—/÷¤m%²Ö½5WxÛcdMÄ@Þb|óefü¨mMš¨s8‘!ñ›H; + üG­†’ .²Àµ’T;IRpšzÁ¾¾½eŸ2–¾Óp¾c08ˆîmeµûÝÇ¥S>¼F»?Úôæ£gÛ[¶ô¶—vt&€Kÿ^õ3ƒÁF×l,S=½ndDðZš¤’x;@JÃ9 ÛQä&¡ÔcdKĤ±3ƒÁðÚ°!/•XäÉóŠ‚äZ“¨ÙЉ ™ûjàW*€…±.F"®9®¤­iñ+Ñ]†Á`÷‘<”ÐÛW÷¼†ó* ˆŒklñEzúÔÀÆÀ”{lF܉Ô¹gchØnU±b#±ÚÅJ½•m¼Íd0¾]«µ L!B3ó¾uÙ²÷ÕÝ?Uª×H¶u—=²Ç «½0ÆbÐ;tO·nýl1í¢Þ½«´®J•g°ýŒ:=o4,IMd‡Á`lª]»Á¦:u|PoGFö†åŰ失"«F‚ú0ÂIRQ,†®HûHWE‹öá™5ê¬ü:ÝI:Wr 5 ©ý#:4tÅŽÖ­¯ÈÚ­›ô>tÉÎNéW®¢¶¼ŠÐ—© %ÝCêo7U-C*à6²ájwçTŠ/M„è+0‚ ÏDOI[]BŸAÀèÎÖÆËÊUª‰bl¤ÍHÕæ8óÝ¥VOXé¨Ãë[Ù¼°¦| ÍFöKØ£GÕ<.tI]>€Á`ÃkšJ*µZªã&lr›6í8ÆŒ¡.VçµXédI¾wðàŒwÕ¨Lè…çqtÎ3Ë™sß›{÷áyu‘: ®å ÁlcmÀÙ  ©†²âŸ8Ñ cã@=ÍÞknnëèLˆíés/SÓ´ªD3 Æ’Eqf»º¥Aƒ{2ï² Ðr/·“A^]»v7ž×ÿ ߈/ÉÉäɬ*« ú‚] WÀ¤ 5kÞÇóÉà_Æå¤c†:Õ©‚Áàn@†î_0E6%¹ˆ3\ò3OÏux§R*±¿úàb¼g¼XˆšŠ îÃ0þ\%þ W”# îM†F†gU¦Lèûû÷G -À¨–+As…[(€íÚí¦{xG×þõªÈ`°LÜZÕµh_8®´›Y ó³[ŽŽÛ.®XqZŽeJØt¼pCXBlì"ê+þ ^%ú ìa½FBô% ƒÛ¦„^»fCg@°×Ç·og`5|MãDŸ5köb¼‰H ÖÎü H$'&’c¥¨L?D«YxPÐÅ㉫ޖ† =ÉØÖW¯þ÷S¿o;É`°á嫃*™·©Î¹\SªÔiEÞú¢!ó>%>?uw_O2r²µÓ`p8™Ú3‹´Á`¼ôõ-‹¶LÁrû€sÛ>ðÝC¸è Œí7¦ÅØ -§Ê;\Ë‹´Á`ÄGDŒ@·$Gß¡Šq2(¸Æ"s9É‚ã~+mûå— ßDràH‹Ç»0¾ÄX#ñ5"£ÀMêûƒ&·÷îÝcR—èÛ׊¶’HˆŽFM^0={€}Ü,ا±âÅ›ñ/ë6ÃÆ–¶: ið‹ŒžÑkÿU»;w¾zvÞ¼1T)NëÔ!çI5!±»cÇdlðxÆ"¥ì>´5gŠð¨ùKÔg"#Á†WM€e‰÷ÉèV—(ÑCî4r*á¥Zœ+3S†`|"V¼æ?¶Š6¯p ©¨’&šÁÒ­ `x-]: áƒxe¬<Á«R¥^%%$Ì£;/­0öA˱rËXˆ B§ÁH-Þ£JÂNOO/I… ÅÓ{Òó’B•LÒÍ𹹩éÞAGÚWéÙÓ;OÉ’1*•ÊHmÌÌÎæÐ×÷˜¦R}ŽzñÂCE*uêäÑwï^‡êýúÏ–-[í*U¬ÿH½óØà0aCTB4«Ô¥‹Ÿr*‹KŒ¬®þx6 ¿D ºv"=ÁÆF»ˆ·XÙöìÛç2䨱í–-»±ì¥ nÔ`ܸkx~«°íq-–-{öÏAžž­o¬_Ÿ§‹s+ccW¬~%ñ9'•ü͹˜×£B·Àç‚—Ê {tì˜ZaxïÞ”ùnLå&tO´,^üݶ¦MÒ··;ªÖV¨àhŠŒäùp×Ä• ¼–Mçä{}À”ããÇ»AWå< 4‘æ Ù* éì‡ÜÌË x…L„èMÿ5%J\Ñ¡æ‡ Ú&b‚6ƒ)ž¦¦ÎçæÎ(Õ©躲`Á'+ò勆NcRˆ-&o XP¤'ØÒñ±›ÛFÄà®C~/r{ѯ_¯ÐÔCY$D)R×^*ÆyyÙA¢ïÍ‘  { ÞåÊ0´Ê¸¿£ãvÌWY¡`¨0)o¥ë9Í çC‰¸¯œ¬¯Û[µ:X+Ý#^t1><|&ÊL¦¦{¼Ž® 84•ì¤[éòÛoêœL¬†Ï7T¯¾8ìáùWíìv­.^üÍ}—ŠÜÃñqãöÐœÉÆ%uh¾×·lŽÉS—•`ã«4ݼ׬Ù÷)2Ò ž³×P§Š€f£ÙÓ³g‹c²C¤wìf†ÔÙðŠE¾ñ¬†ç’%Îèè¦4í¹˜·oS‰Æ ‘»‘@ÌYìE ‹–ÅŠ½’ïúI9÷,OpIpêµõëw¡Gš9îõ<9ÆoÛ6ë5¥K¯¦É¢Uãm7õýeúú Üq:´”ø2¬‘!ÏWÈõ™øoß¾}K£F— ¡â{vöì Š‘R}ÍÙÉ©SO`l$B ¨ÎxÞ§.,¦yvÌÚ†$\VÒ æÆdì—[’$Ôla‚Iµ*‡°Ú=@>à¹íi)ƒ°oq%ãÌ+'ÓŠôàÐ Ìr¯ìàd9Í•ÕähUƒ¡‘È‘˜ ì š€ 5 n4¥9šŒëµš7÷%聾ܸÑXH á6 -^È‚K•™Ak é€3Àﬤ{IÏ •ûfã+¨éXQz%$%%5ÐîÇL1¢pf÷Ò/E®çùÀÕÕ]C]é\¡!vUªÀ›û÷—ÆäZ뙼gäTñ23³Â»9!‚€•0Îyð`lAïìïÙ³ÄBègø†¡‚.Ê92:œµÏØ·jê(´ƒ”1µ¤ßÒ9Æ^ p h$$ 8Gñ8Äè‚h²xák¼³€Þµ24lOãûºw÷&¯Û‡'OVãÚcÎ` ¸€ŒOdÉÉÉmö÷êu Þd%4@º)&ߘ߲h©' ÍKi¡à°A }A*)¡‰Ä$Eœ™9s·¤ßBézÑÜ|ž9ÑäR|¿7OËPÇ‚ž‹…ÈàÆœF‰¾9ˆå­?9iÒ–ƒìtl×n¿c›6çäpΰ#Y gP•²Zs±f͇d<==¥(kBV-¿R 󨨱Î8õ¥{ô_;)Ó<ñ»ÓAù;ÊÕŠ~ÇÖȨÈP0dø§8üœÎ‚ƺS’Åš‹“©=Sìû÷£¿ñíYj)ç’2¨ÙòïÒv…VHë2e'ÅÇÓÊXZ®† )Ήxö¬Î ooR&²Õ¡Ž'£ØL|OΜ1¾»oßVúÆ ¾y³4Œ-AŠåļò÷·¦ßk«U«…3ÝSzÞ9x°•4Æ¿ ƒ²‚ôXæÇyìgú /y3h÷b šÑS0ì4ùÛ2µ.mÜè;þæMËÎ66{+wï¢W•žÞ—®vvçðÊÙ*U>\·‚ªjï[¿¦Û† »õóæý¢§R†ñý$´@yš²uƒÁÆVüLªÎˆÓ~{÷n_ç_U«DïíÚÕ‡d4[;A<œ®èþsgÀ±^C÷ÐãwLÅw‚C ãèï¿ÀÞkÄéRì*W¾f#Ë}}!:*q»Ë––{ñ~(êò8~¼¾ÈX0Œ“&m ™>…À>Ô·œÁ™&Œ›6ml¿råþÂ+¾C¹U˜WˆŒƒÁq=pAth芛۷o‹ýð!Ý»2*P‚!cråÁ*`V»«âǃÁ=Ø2á Á`P Aó'0:?0#Ej y8‘Föü´­I“ŸDÆ‚Á`¼½â+??’ao+$Œ ’g”¨Q×úàu‘þ`0$T ÚdBÂ3ƒߌ!â2S/T2 Ã}Á‚¦¨D¸ ‡ŒÖÂdðŽÑaåÊ{¸ì£ÅƒÏ'±<^ĵ¡ø×AºHNèyK–ôU ÑJ¨TžÔ ÈX#ñïC £>ĵ‹Èr0Ðÿn#͉¦¸-¸ï_’±Â89uê H…GË >¹XˆÊ"KÀ ^w0®8‹\¹>ž=ûú"8lªSç¦T>)þà ùNxaÏÎIÆ„“ñ)D.‘©`ÈÞJÿ»Ù`ÏŸ?OuhÚô›åÊÕHüðàIî¦ìëÑÃû©»ûúÓ3f@»ß=Ôè7P=‘á`˜Ñ\´u8ð85.úõ³¥ñ=]ºË9ÛŠ¹±Ãµ°øáÀ÷ܲC¨3Åí´·CX?,Ï—/&úÕ«éx/§LŠÞ@gD‘àùR£>EFšc%›ª¹…ÜݹóU<3OžüEÆó® -$%%5BgØsô³ "ÓÁ“Xž³9”@‹mK ¼\ó1f€ ™¦<9{v)½'´€jçµd¬xÖN]•Œ÷p\§‚SðÊóU,tdôè Ø^F‘—ÙCñäuÖHëIs­¨g*sž çuojhÃÜ€û"óÁx°½Œ5¶#iÒ¶5k¶ý¿Ó¿þçŸKÓ–îëkë×ï‚Ûú4¾jt/2 Z“ì˜{X?†?}ºÏ‹ý©|{æ‚áçà0weÁ‚‘À\Èì­‰ŸŽÅ6e¸” ZEéq£¡"£Ám–]¼h÷âÒ¥µ_¾|Y*ƒåZ!¡)4Ç'Ntó®âO çú„±DæÝÒïîÝ[êØ¦Í dµ«3Rhë‚BÉZZïÁ°¸fPÖÓĤ9áÛð žM³C2  ¼`4a¿‹,o5OÚ`W¹òc26ª½C o7æ&U2âyͱC ‘gÁÛ¯nßnA%ABgÀibääÄbûñåáÑ£›0AÕ…„ÜÞY 6ºÊà—W­ÚjÒ‘uY[¨HI †FÊ·®J›;Fdhh=*¤¤êeòfR u®ù„.‚³‹š%ÄÄ9ò,J„n¸–ZO¶¡—éìzí¥ò g¾÷|{÷®åö-nÒ*‡çBWÁó•ì.Ë]ÊzÐD¦òý*æ^²â\GÁY ü=2$d%®:np ¥¬‡€Õì™”w]ž'Oxìû÷¦ä,KÅ1VïÍͨd+ëË€x"«ƒeÅž³öç¡ H}¾CÆÐ[¯¥KÇ¥¢4ÖŸ ”µ„koÊŠ„4€Áàó]kZÕœôÂy}õ§¨¨Šß!¹Ÿ ZÀhgãZQü ¡ÿ †<ÛÕë€_Áó*•êy:uV ±,­1ü%EˆqË„p郛ÉÔÊö±»Ä'¤Ì$*ßB‘ó©,ÐLükÅ%ó V1===ÑkÇŽ½=ìíý –+wªz¿~{Úš™í*•È]´¨‰øgic ¯nÙQ‰M‚µØ–N j*Ø[–(Šqée‚‘øÅß!XË`0 ñ3y6Ñô¸ãÓtNŸ“ܾºžž^7zWòyE¨ )sC­;nc:WSq¤¨…kÑãâUž@õm Ý»üö›Œ0СeKjߥZDmöþ Œí’\µzi[wÒ5%YE(ŽYíîÛ·8‚ë±¶*¼ JuÈùYàú+Þ™ ~·P{.‘: )c¡—rSvbJÄõ ŒÇ×Ϩɋ†·’ä9úaìz‡zèÙÿüó<}¼d3ËVÆV‡ •‚ê¸e0Tä Îzpäˆ=5!¡þèSþÛÅö*pG”•5yÞgçÌQßc;y™Þ·)Wî!šÍ˜üŸÒRMþÞPò'ËâÅÀ`0dç°Ú3w÷Uhêa÷ÓOgNÏ™ÓA9çÁhÞjˆ-ÁösŸÔÓ¤^«ZƒñòýRàvã‘ Ê¿ºqcMBlì|Ù¨’Á`hºÁq  Ø[H¼¹{w µõ^¹e¬ I‡«ÒÉò庽ýNMhŒçGQÅë±³cǾ¡ðÍ`°žJ*†8,GN¬xñdP‡ :±)Ú}ÑÑœ’<ŸQØ¢F?ts«-¾ ãøøñ ÐøóÆç¤$ãÔZk™fË6 ò̬YGe—^µ·e0znÙâ†K x%@a”c©¢+î—&aKùúÕ8vXµÊc—þfLp.ÅÁfBÄhIÍ0,Š˜ÞLºßѪ•û_÷7g0ØèªÓ½ÌÌœV*AÆ#W±œ Ž­´ò¡ÔçÉ+??ëïÞ-§ž…pÇêvï>1Ï•+ůä¤ ƒ.;Ø’:í:ìÖÖ¾è TPžÑ&ƒ)kw¢>` °íááÃOÓ8ÑmÚ4*ê$Òƒ›’€}AS°¾°Í+ëî¶ lýå—Å4N5wÈV™'φÿ wZ[£†!íÀ‹…¨+*çÁVò"œßÖ­;È8©!îçðÌ ×Q"í`0ˆËíDt²<ß…éçÍõëÀØ&¬)Q"î}i g»X McJ#ŒÎÖÖ+‡œ8a_gذ“E*Uz¤¢ˆZ_&{„#e*®¿TêÔéÂÂmf…†®,Ý AÞ3‡áyR<é„ù›`0x›Yº„š¨ÏoeËÞ±²}ÁYŽ:Á6ëD ­¨ÆjwZ| 6¾þÛ·o¿{à€99Kéꃄ—¾¾í„Ć֭óR8jñŽ{êø„ ë(w“S»ÒÃõçÑ£_àZ ÅjÕò ½r¥ùÞ.]#.È »xq©ªöî}¥×¶mnt;ôë¯?Q­Æ Á·_…Øk!Äñ÷Á`0^¢ÀõކßgºBª/".,l)5§$Y?7’ƒâå6óKÚ+  ’Ü^rrr?GÇíâs^ž/ß+E¸ÆÖF²yʆ5Å…‡[<<~|“­‘Ñ i ƒ¿ñß.ý¿^Jƒq2¶‘úúµr,x´XO¾$$-X¾|H3³+xîC-¸TBÔ7(T(êãG•­K—qoÏž ÑÞÞ¶9óæÕÏŸ‰Ð&¤¤at Ãmúô>VeÊ<ÓØN~]‘/ßS©VKÔhRÆíîÑÊf]¶l€ŒÙy@Øè ¶ž1x—ôTT?Z‘4;ž=~ÿ¾²ƒADèq7Ë{Íš}Ûš4¹ˆ×ôeÄø`¡ÒÀ¤ÐÁ– ¨øu ÷£åò¹Í Ę‘Ì Ž)Æ»·kWŸÄØØúâÀ`°Ñå*b3À…`P%4p×Éé×ÕÅŠ…Ñ §‰ŒÉ",0ÐÜuèPwïÕ«÷)Êa—--'Ð;¨Dø, ﺉMEÚÀ`p_óðçÏçïíÞÝÇ\_?\z+cÑvyé«È×T»@±»§îîëQ‘pÂGñ²¯H 6º<à°äOŸÌ®ØÚîqlÓÆí¢¹y+2F©(ÝŸ ñ@ß¾06ì )?K×áÃO=>q¢¥J| 6¼Â¸ÔkƒO ¯rZz&¯æ00¨1#8xmÞâÅm1EÝð¨#,Ò “ûËóäùxmýú‘\-À`0Ú˜šZ“šôéiÓ6™ q… z™ 08ƒÑbÁ‚ã}÷ìÙ\ª~ýG*==ÒÅtDPý„È0 Rþg$ÆÅ-#ɾ°Çç*èç4a0ØðJãRMÚ™( â_ ƒÁ`0þ›™f¡:­IEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/banner.png0000644000076500000240000000755312613140041024266 0ustar philstaff00000000000000‰PNG  IHDRôK±ã…¬BPLTEÕÕÿö÷ÿÚÛÿïïÿßàÿççÿêêÿêëÿëëÿßßÿ÷÷ÿúûÿóóÿ××ÿÿÿÿæçÿÛÛÿããÿÕÖÿòóÿîïÿåæÿ–öº…äIDATx^í]Ù’$7¤:¾fvÿÿW $R×NØ#Gl„RÕö›ƒ U÷EÇ~ßwv÷íN÷mß·;Á.޶c;ˆ‡2-”ùùÊ–ð0~”€Žž„õùß•mñSÞÁ¼rž)3Àû¯™ÉÖó"˜•rÆü˜ôQYíA½“žÖõ)ŽÉé7Ïôq»ð¤÷0‡ãXßÅñk3ómÑ.È”ÙÓBË—ÅúüK¢ü‘þeT”¯¯×`ÑžVyZé7æ;ÝðÜ>8ÚÙµ!½Çú.A.±ÎÏ®ãî‘~qN”eYÃ=0Ïç2œôIIŸéƻѾÊ30é€Dzzánéy»Ù¯œ7 ½ƒ„m!ŸØŒó=Öt瑞:˜ø¯àœ°îÓ;ÆÈÌ éU¤¯lHØV]Ó•x~@º2þ”g(ë·Ÿ&½c‡Û ;8YÕ…yk:öqlùð5=8ŸuvHŸFyÆÇ ¬W‘Μ‹ñà\çwLï)Ý”÷`Ÿ& S¾Ë Þ9Þi3ìkzìÞ%ÚcM7ÌÅîЩ]Möq:`ݦ÷—Э0fw›ß™ï&kzç&^(góuÝ×t”mŽ— ǘ„p~b÷Îxð3ŠéüÄî]#}x­€íÞ;δK˜§› ùš>ó¼YÇœ'ûµäøglAø±]èÂãPlx«W>¶˜óø¡£ïM×@q›œqåµ± : Ò3?à\€?‚€,>û_*ÎažÚÁþvÁ]låL6i:ƒßb“ãSftÒ§à;Ë[©Î󬯇½A¸Ä7X?ÚØðÖAPleîøg¸û&ñMøMN¹yñj†Nú$œÏYߺ¶0¦à]~!u(¬ó~úëäcóAøM”ƒte›0›kÄ)õ2$´õñ`ׂ쎟ÝÈuìؘ`Çâ;¹Ì¿b§£ ,•´,lˆ/Æ‚ÍÜTìÞ#6r‘›yØÞ]sïvF_“=)yîý¦Ç¶'ÛÇó#5MÃvêÉlC6.V8œÓéðÝ;aT[,3c¤3ÏìAzœÓ«ÚÀvîÞ“ºtæÞyÙZdä:4-c¹wìO­æBÃÏéž{OL½câsúXåÞ^eSsâSäÞÅð0šäÞ;ˆ çu˜Ùësz™{·óOμkm.HHr¦Î½?ÊD,X/ÏéL8"]‰ç£:Ð"÷Þ±»'ñÛ¿ÔÓ_ƒñë-;ÏsDúiX±×ë÷oK̬/§|¼ZÓQ]ýcvÏf^c‹~Á¼Ž_òÛjl³<;«­ 먱íyÛH<ƒHªlb̵þÂìÎÏ.oy)ùôW1Þ«l½ûÍö7ƒ42‘¬‰%´,ç>no;9;¨cXrFS°ü±uO+€Œ±È½'mŒÄÖþ§ èç5]LÑ„Y¹²â¢ø¾ï}^ê9~t.£Ê½¯ê¢Ø¢§ô5™´)µÊ½wø»ÒmÎȨ§¾ë{¯µl(¯"ÈÕÕ ˆ[Ø¢žZ6a?¡¾&hXeë}ïB<dã.}ï`þÚ÷¾äü§nØÇä-ÐL÷Xtî§”m¸ÔÓCÝò,ûÞ?šôžœq›˜2NE=¢žü±ïÝ¢¼0"#çÙpӋèô4-[Ù÷Þ†ôêZeÓsÉ÷õtð}ïEçñ‚yXa‘þâ[ÇöM=ýÆ?¢‡¢Y¤wÒ#×äë¹è@þÝ8ÏY1Ñ{wÁC1½ƒt‹tMÅ~¯OOµ>ÍR âôVkz_ÑIMÌ÷M](}=çâ¡#B^ÖÓ™yDztÎ\õékz¯§ p` Λ‘Þ»gx –îþxÙºî›w!›4³é˜‹¹ÙT«Þ#‡Ãúk¼èÓí†×YO÷žH¸6úôWfŠ»†zqNÏåúÆ1]”º”´lú{B9}:1ZãÌøº4Ö|‡jâEÆé}<7S\&˽‡–m®”Sö.¾…, K‹éä_P6e6}Y=@¡p!ŠSìîU6y!L\ì°Ãý:.¤3r¡e›Å ù©À¡ÖBxeߌêu5+¸ðoOCÖ@QfAqbÊ/‰Ãïÿ½ÊZ6¶w|ÙúCGÆÈߨ£—*FÔÐu !ÙµlĆËYÄà7/¶—6uÒhÙ0ìUZ6 S*eå›DxÞóÜ£‘N®óa¸–Ml'¯§‹éll‰nµWÙúþÞ{ä¼m¹Lç9=¹_“ŸÓ—‹ÂÅäzgç°¼;¿yXß»o掓ô» ›ÄZÞrêÐvë@Ùó^ŸÓ_ž{ÏõåÑ÷~Ù½ÃK†æââ9ˆ[@ºë[ŒõV¤÷¾w»]jÛ‘œ‹Ü»ñþvN¿ô½ÏËœkY“ …w¨V«¸s†óqHÃ*n¸h¨u•­çÞ7?§£ûÙsï¾Ã)Îé98¾wö PÎf}ï<ÊÂêêÉwÇy\:ïœ¹ÝØ·Ó²uì0r• iŒW —JÏ&[búSßûŒ„\\4äU6IÁV´ó}:¬®§C¼(œ«B]¢½Ëšš°Ž{S8ÊÙaMǨ.^Vý"ëzæï¤?f¶¨²]rïCèÓ‡¡Ê½;é‰M¨º?’Þ§w5å>Œˆr1ˆ+ƫݻGz.96`ˆ‚úÞëé°äŠÕg+c§œäµûšŽæ3;çôÅçbà<Öôé„WÙ”pqŽá}ºù"ÇûSXoÔÙIGÁï{gªµÍûòV'LAàˆÎ™z#çݰ¥¤ÉõéuëLJ¥>ý]©Üj#×§ö¸ïL˶mê÷|ˆ¡š´ù™Ä„hôI W5Û<•É6$g® uá=yt¬é»”€s£Ý êUVœkPáCe­ôKg56»KŽ2eTÙhØŽƒØ#÷´olÈ‹Ýí¿ÿÔ²m¤é+Ï»³Ûí´Ëï†è¹÷©¨¹T¹÷9— ÙUM®±¦#@¡d³“)½_"è6~ã‰*?tv ìB-ÐK«À|›<>Ã;H-Úô…t3RâÆHc}«<øÖAâ,ÖÑKJìƒûè¤#Ö1ÃϨ³™ÊFÍý"¶à×q,ªb[ìÆH±ƒ²ßLjÔl ¼¡c“73-[¨•w6Ð. ¿í^eëØ1°{gÃ.†GÞ7Ê;™’ Z6±BË[òl %÷P^'’ŸØŠÜ;vï°Û™}oªp餗 mÛ{•m ­òî—¾÷E]4Fбé/<×z‹!É—âÈ&¢é‘½ï7™Û^õ’{7DÿQÕ÷~Õ²Öù:/T æÐëa^Ý.eÊU´E¶ŽôÞ÷Î\»m—Ü;¢]·EÂù¥ï=¿«VGA|–=ÊHz:Tâ‚Á‡õvÉ™žœÐîyXÚßrï1¿S£j~Ÿßµlã$x㚈õPÿF ã}ˆz:HZÓÌgúLm×ôþå»G®T·¨•QNÆ7F^¨àü¢e-ÒyD ‡˜ d§aˆzº‘Ž¢*‡üúéqÞˆô¾wÆîÍ9·HÎéÆyf»Îᆭç‘òD _Ô×z:®’ûäPß>Ò{y’e ß½WZ¶|x´W÷½—ßecªÅó»÷Ч«ªÊfMrȾK¤3ë·ôÙ2Òû}ï蓳ÓªÝ;†!ûpÌÕwÙ®÷½¿4Òåè×µžžÖáªOÇNŽ)W|òøyÒûfº !žÞ;baÀå¾÷ê& ÁXÞ÷>bû U==¾ª ÂЧËìÖ/Z¶ò»lúö‡‚BßK>µlŽ /¢Ð²<¥Îú>üð ò°<»=ÍÐ .õwÙ Ž¿µ7\éZ¶®º‡–0¯Ñ/†e|—íN _£4oÿWî½Ëš.Z¶wÞCËFòÛÛöT}— Z¶ãÔ²íˆqÀÖºeÕ¸1’GhÙL¹Ú”ùNú\}—mbçÕ6«­UZ¶Å¿ºiÜçø.´l[hÙríä¿ü»lˆp’øš·¿%Ò{•­ ÙØaÞRI[,o”‘{ï²é}ï„buhÙâ»lQq– w¸ÙÎögläÒ“=¤¨´}@ÝôÑDÖÔ±cGªé\Âh·;å7\ÊìK-›—-îôOtyÍ¥¾~ÄS°ÎyœÓqÝû?­«lxϽûosï8¹ÒAIÿÓwÙFeU6‹ôñ"kzÅÿê“gä X…ké=õ}ïÛ¿æÞãkMj4©éÕ—âœ~ùZ[€Y*[ÙýñLÍ2r]Ë&^ lÊ9¾$¹÷ÈÉ¡´ZÞ ;cxëûÉ9;Ü"g£„~Æã%nMj¨¬jÉ¥§7‹ôíhðÔ„g¢êÜû!†Ô;?Œš÷Å?Ñe`ÂÝ\å¬éøŸsþLÖ1%yw•·¤–ªÕN¸4.ì‘yësMʸûB„c±`®×ôвٷÙL¾è¬¯p.péO«’î„×ÝRÿ^ N«”2IEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/logo1.png0000644000076500000240000000312312613140041024027 0ustar philstaff00000000000000‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿÿÿfÿÿÿqÿÿÿsÿÿÿÿÿÿuÿÿÿwxÿÿÿÿÿÿyÿÿÿzÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿ||£GGÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿ}ÿÿÿêÕÕÿÿÿÿÿÿ™88}ÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿ~~ÿÿÿ·pp~ÿÿÿ~ÿÿÿÅŒŒÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿºuu~¨QQ~íÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿز²ÿÿÿÿÿÿ~~ÿÿÿÿÿÿÿÿÿ·qqÿÿÿ“''~ùôôLJÿÿÿÿÿÿ‘$$ÿÿÿÿÿÿìÙÙÿÿÿŒ~ÿÿÿÿÿÿ~­\\ÿÿÿ„ ÿÿÿÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿ±ccÿÿÿ~ƒ~ÿÿÿ¶mm~‡Ö®®ÿÿÿÿÿÿÞ½½ùôô~""ßÁÁÿÿÿ¬ZZÄ‹‹ÿÿÿÿÿÿ""€˜22£HHÛ··ôêê÷ððøòòþþþ€¥LLŒ’&&“''‚™33š55;;ž>>¡DD‚Œ§OO¨RR«WW«XX¬YY°aa°bb²ff´jj¹ttºuu½{{¾~~ÀÇΞžÏŸŸÐ¢¢ÔªªÕ««×°°Ø±±Ù´´„ Þ¾¾áÄÄçÐÐéÔÔêÕÕíÛÛîÞÞïààñää… õì솊û÷÷ýûûýüüŠ‹Òg¥¸¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/logo2.png0000644000076500000240000000312312613140041024030 0ustar philstaff00000000000000‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿ¿ÿÿÿ™ÿÿÿŸª²ÿÿÿ¹ÿÿÿªÿÿÿ°¶ÿÿÿª®ÿÿÿÿÿÿªÿÿÿ­³ÿÿÿ­ÿÿÿ¯ÿÿÿÿÿÿÿÿÿÿÿÿ¬°ÄGGÿÿÿÿÿÿ­¯±ÿÿÿÿÿÿ®ÿÿÿ®ÿÿÿ®òÕÕÿÿÿÿÿÿ¿88­ÿÿÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿ¯°ÿÿÿÿÿÿÿÿÿ®¯ÿÿÿÿÿÿÿÿÿÿÿÿ®¯ÿÿÿ®Ñpp®®¯ÿÿÿ°ÿÿÿÚŒŒ®ÿÿÿ¯ÿÿÿ¯ÿÿÿÿÿÿÿÿÿ®ÿÿÿÓuu¯ÉQQ®ôÜÜÿÿÿ¯®ÿÿÿ®ÿÿÿÿÿÿÿÿÿÿÿÿæ²²ÿÿÿ®ÿÿÿ¯¯®¯ÿÿÿÿÿÿÿÿÿÒqq¯ÿÿÿº''®¯úôôÙ‡‡ÿÿÿÿÿÿº$$ÿÿÿ¸ÿÿÿóÙÙÿÿÿ·®®¯ÿÿÿÿÿÿ®¯Ì\\ÿÿÿ·² ¯®ÿÿÿÿÿÿ¯ÿÿÿ°ÿÿÿÿÿÿÍcc¯¯ÿÿÿ¯±®ÿÿÿÑmm¯´æ®®®¯ÿÿÿÿÿÿê½½ûôô®¯º""ëÁÁÿÿÿËZZÚ‹‹ÿÿÿ¯ÿÿÿº""¯¿22ÆHHè··øêêúððûòòÿþþ°ÇLL·°»&&»''±¿33À55Â;;Â>>ÄDD±·ÈOOÉRRÊWWËXXËYYÍaaÎbbÏffÐjjÓttÔuuÖ{{×~~×Üឞ៟⢢䪪嫫氰籱紴² ë¾¾ìÄÄðÐÐòÔÔòÕÕôÛÛõÞÞõàà÷ää² ùìì³¶ü÷÷þûûþüü¶¶Ü—< ¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/logo3.png0000644000076500000240000000312312613140041024031 0ustar philstaff00000000000000‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿ¿ÿÿÿÌÿÿÿßâåÿÿÿçÿÿÿÔÿÿÿ×ÚÿÿÿÝäÿÿÿÿÿÿÚÿÿÿÜâÿÿÿÚÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÜÞäGGÿÿÿÿÿÿÜÝÝÿÿÿÿÿÿÝÿÿÿßÿÿÿÝúÕÕÿÿÿÿÿÿä88ÝÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿßÝÿÿÿÿÿÿÿÿÿÝÞÿÿÿÿÿÿÿÿÿÿÿÿÞÞÿÿÿßëppÝàÞÿÿÿßÿÿÿðŒŒÞÿÿÿßÿÿÿßÿÿÿÿÿÿÿÿÿÞÿÿÿìuußèQQÞùÜÜÿÿÿÞßÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿõ²²ÿÿÿßÿÿÿßßÞÞÿÿÿÿÿÿÿÿÿíqqÞÿÿÿã''ÞÞýôôð‡‡ÿÿÿÿÿÿã$$ÿÿÿãÿÿÿúÙÙÿÿÿâßÞÞÿÿÿÿÿÿßÞê\\ÿÿÿâà ßÞÿÿÿÿÿÿÞÿÿÿßÿÿÿÿÿÿëccßßÿÿÿßàÞÿÿÿìmmÞáô®®ßßÿÿÿÿÿÿö½½ýôôßÞã""öÁÁÿÿÿéZZð‹‹ÿÿÿßÿÿÿã""ßå22èHHö··üêêýððýòòÿþþßéLLâàä&&ä''àå33æ55æ;;ç>>èDDàâéOOéRRêWWêXXêYYëaaëbbìffìjjîttîuuî{{ï~~ïñóžžóŸŸó¢¢ôªªô««õ°°õ±±ö´´à ÷¾¾øÄÄùÐÐúÔÔúÕÕúÛÛûÞÞûààüääà ýììáâþ÷÷þûûÿüüââfîr`¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/watermark1.png0000644000076500000240000003426412613140041025076 0ustar philstaff00000000000000‰PNG  IHDR¨wŠðÈÁPLTE£m“¤u¡®–л²ìˤ×Íí»»þËËþÐÎþÒÒÿÈÆþÃÃþÜÛþÀ¾þ¸¶þØ×ÿ³³þââþëëþóóþüûþ°®þðïý­€£ù÷ûª›à­¬þ¤b{¼{{½¹õ¿€€‘1=§PP©SSÊÄò•,,–@SÌ››ÏË÷®¦ñœSmܹ¹àßÿœZ{µ°ôîàá·ppžABõì컃 !¾±äÕ¬¬Î ¡¾¨Ó²lr×°°ÝÂÈíãë©v™‹",¶©äj˜‰¹ss¹vx¹ŸÌŸh£»¼¢Ë¼ªÛœ::¦q”Á»ó¦ˆÂÄ‘˜ÅºêƺåÆÀô•Ji¨…¹–01˪½µllª„³Í£ªµ Õ‹Т¢¬Z[Ѭµ¬^b¬„­­dm—V}˜33¶™ÄßÛ÷™FYš=DäÍÑæÐÒèæûêר¯``ìÚÛ³’»¯Šµ›J\ñããóíó±cc±£â÷ððøóóŒ&2³‰«º¯è,;¶„š¬Š»º´ô‰"¡P\ËÁìÙ³³…•C\Áƒƒ£Ta´ⰞۙCR±†©Ç¨À±‹³£‡Æ²œÓ¥LL¥h„´s|´¡Û´®óšLb”Eb¦ŽÎÕ¸ÅÖÁÕ¶xƒ¦ÑØÓõ¶²›WxÙÆÚ§`p§Ñ›d‘ÝÏâ0DŽ8RáÄĹ‹£äËË©‹Ã‹'9æáô`….;êäò»š¾5IŸEM–Id¡DD­Ç¡MV®r†’4C£j‘,4À†Šƒ ŸRf¼“¬Ä‹‹Ãœ°‰ÏÂåéÔÔ±¦éµ«ëÉ””¡n˜®™ÔžXsռ̿¡Ã®©õ›Us¯x’Á«ÔÁ·ì‡#¶›Ë¤rªlƒ·{‡ªrĩɒ=Sª˜Ü±’ÁÇ‘’¤z«º•µèÚ㺜Ãʱ̺«â”;Lš\‚®•Í•9F¢YmÏ»×´…¡cŒ¼¥Ñ™Om¦x£‘$$Ÿo¡†Ž)5 ‡*p5®IDATx^„]S·,Ͳí·rµ¶mmÛ¶cÛ¶mëÚ¶mýŠ›èYQQ=NveVí—=ægDd®^žrŒ,OÃfüè(u-iÊ«,Juœ5=ež2±£ž¸ ‡òÄ¥~:VÆge|âW\WòXf/ òÐf9C°­QÒ¨a¥Y —AÖ4²2þpÍPû]'# 3àì÷4 ‹R±ö"È0iF38éÉ,E‰Œôz‚¢µ<4“4¬4JKÖ’  Aé±4%¢:¬= =™˜Yxâ¢X-`°Þ0Ÿ©I›Ì¨9£(‘S™fà;Q³Ï(•¸opFÖÇ_i„Eˆ -Í D… ‚(C§…É)¼ '¢2Z‚‰!%(Ú¥MY&Š”BB™øÅ˜ S¥”è• \çIH8a¿Ñ%Ö# 5œÔŒ9O"ªM1¼ï¬å‘A bOÖe„'áDÜ\(Rô «À,%»%%iRŸvΫ¿Ð[G  ÷wÎINf4Ì<&€ ¢zÍ7eÆç”!ÒšAD¨be 0K`þ­ÿÐÃø\É@o'zÓ•KŸ¸ýŠ÷lÞ~û9ïJ K‚qnPbí¨ÒHMÓ¦&ÂzFé£ù•ñx<僔NK诧(t?{xóÇ©²~«XRrñEAïò9€nZ}㉗‘òVÙÒ_Y” •ó™ëÞF^o9Í€”…”J#]î~spJ?ÛûдÐò$  FÉ;jQÌrÞȨ7øqæÙAŠ0nž.ŽyºõÛ‘~Sx¦";›"¹Šq’‹ŠÐ16éÝtÉÓqU¢ F䬒Ÿ(£2|&=]»¦mÛ¶!ñUR᧦±õÁï}nÚØÓsÀ·:ZR õŒ¹ßûô¸W™ÖBÉá×`=Š À }°é äðï&=ŸÌ|ÓÖ~eÂEEúÏQÆaŸ÷詽UYÜÔz¹Â<TÇTîd Ö VÕv}hò@ÊÓ…yb™(wµÚÒoDô«³ØàÞâÈ-Np]€Zœè)‰¥ç°ÖK‚„—†P€+2Îh"”'•ª­‰JJ~Öf»,½OI¼¥}넾·¯gÏäÛÛ g-­¤:¾‡Ê”ä]î“$Åcîµ­®Û‘»Å3|«÷‚Oßü‚Ö«yò2 ´ºW¦o/¨pù6µýÍ™—Q5Ut©Ñ£¦IVk™°Ÿwý¾Þûú.´qiùPëèIT]–đԵÆÒbÉl˜¯Lªø ¨ JЏúnLu¡‚@íè 5&@ínx[ÑÝ?J Uó¡õL ®ÞÐÎÙ„ø‰²³wb–sa„Ô>q¾É$›‡65î¸Î«·ö™qZ Å®^•IãQÈ©íÃÇa&CMyäåsOòDh™`ÍT§(„vh[mÎjCkZlœ„8Ö £Fx{ЦºFéTTöEê;ýV„W[ó Ã"õ3v¡ÞÛûÞ<6LÍcl™á:>½§J¤IŒ˜‚š2-l> >-~_ï<Ãõ[P!¨…és:%¤Óø{å°Nï½y2}O0¢“¼w§šdZùó‘×a.`&Þ'éêÊ7ÆŽRï ÀÅàY1ãºLKWD÷no‡í@ZÛÅŸ×ááä˜Ä°¿@ ×† á¤ÅŸmèÃÓëj v% he¥T9À™ai‰ÀÙ1^Ù^“}BX ¢Êâr%@«|ok}kJœÀp‘“"-`œ|ê±L@Rƒ‘bÑD úZ º¶LÊ­o*yf*® >T¥Ù’v€9µ³—;=Ì=¿R݈º\I“ ÆÕQ…WrJOàЧÑÒ¦¹@+»[–í' ~n­(%SÔ™^˜ã<»ãæYÁ¡¥ø^4}~”/§€i­è¼-‹0¯4Ñ“*`z]râI³W ,ÌT2=i12Š©|ˆ°9œðó¶Xï¯Îs¡y!…·‡½÷3¦ Ÿjš «—Sï±[]áá µ œ §G‰X­)µ¹ÑÔîCb9gc‡ÐIûZƒ7S(Ú§áf7¢ˆCÃ7yÀ‰]¨¸zSlèó:oc’î>üÊð=ŒSŸ#s{yÕ°øšÒI°ö…ù¶^o0šÊ§¨iv„*é# R¹ÍŸ0 Q©Ìæ1_¯O:ª3÷4°(ñ›TÕüJŸ~_ïl¨`µõzS ‚œÐz+¢x)57†úøª\ƒ{s0Ô*½øxãœJ;q«†­×ë²Òâ owÒ£ƒ÷éÆ/ÓÁ°ŸQò,à™ŒˆªiÒ©X5툂Âg¨’wùbž*0Œ´[7s9|ÜRA)ÓF¤Æ=AåçÕë½Ö»#|=ô Uªåîc£f6þ“&ì¨,ôÀØ»z½~C÷­ÃÞ…Âѯ¢Žáå ö¢NJM ;*O“õ}_¯ÇT°Þ6hù4 œh;K®Z)L”ë•°–š°£ŠÖ _¯‡Jïú¶Z/E»ÎÇ^ƒƒwcAQÀâ[´3;ªzTúóõˆŸÒ|ÑÖˆ§.u+õî<–+D(”MZ€lª6k»^ ÕÚR_ëéï’qª,ëQ_.œŒò[Ÿºû|=Ì“R õžÉàl{z:=1Fó‹´ŽBF}̬?}é0³¢õ^IšÌ8öLm¤5wl£Ÿ6uxøD›”Ž+6µÂæÄÙÐîN2[²…iÒhôR‚œ…ú( §«ã‹¿‘&ÑÔë§ëì¨ß3ùøù(ŸóKÍ)Vßž“²³GKtÞ×CP¯W½ëç·ôÊ„k?ò­iF]­ãŒqBL9*:zžlFkó ªàE˜M)íÌ8+óS—™Ÿý_l¶ŸÂÔ°^êõ^R¥£@EÀ*þ¦¶d:ÖŸJŒ±‡ÚÒÉ‹§P¥Ôh½óõLJ~›ÎvÈi¿¡î\J´jë¥í2Púû‰ŽÊY uöPx({j#g•PQ··w¾Þ'r}ÿhÕÐúÔ¾ª=âƒ4…Æ#_B Mà ˆÞÝU“l®„–•NL± ­,ëaGS9Ïÿª ´¾H)zr" ­GÕ.5æ³ïâ{ õÅçBS(Ó/ܼ—2 DëÉ4¥…´‘ZÞ›½(@"$!¤PïëQiƒ…Œ\†Œf–mwÏŒç¯奦±íƒ¼Ò4F”åõz—&F8ÞÓì¨. Þ7PS6ë’ UÂ@ìlü¼£(*Lˆ ½ByÅïY€ˆ˜‘ÇËþ„µ‰ÖKiYõhk£QÝ÷=Y_j‚{sƒ^ns×ASdó2q÷GªT˜ÏÚÔÜר2LŸËã`Ćy¾lÛ}e¢+ˆeÔ§¡‰ü 1)Á”ZSç&4aŠ’ë”ɇ# ŠT&óO‹ôÚ}d© ÖÖ¬81)(4çñ»°J¯1 §tôä½L 8 ©“N«O¾ºì»J"U ê)RQwZ E}!/5=.ÊÇÝž?7…•'E->%!]ÿ¦C$ž¦t‹tn"E1¿Á#lf%Æ¡‹G=E­Á–2R=Mù!©Ü5Úˆ\íÎ"j·LH–(¯.EƒVw‡Oi~y£½m”ÉÒ³œS°ï¢(”ÊD$¦‚|i´ ö0öªQz°rõÅ0ož’8ù£-¡ ÞÉ'ð]<:¯^ÏL÷ÿÏ<ìÛ3.´ØÞÕS" ÷ê¤gë½qòñ(nÐòÙ¼øÝ°ÿzâ¾É8+ |£L-]Büä¢|˜§.Í÷ñ((Ú9»¶'qõóeF]ivuÎ-ˆÍGs›$KyµZA…òªd<=oïÀý!ÒcP{Ÿ'ñä\!¾ßÐã.SgŠ¢^ï{‰ÐU"7%“ÉãÏŸV­³"ìÞ¯øúÌ’bZÒ?¬¯§ÉB ‚òË‘#£°Ï_÷äÂQÉ”TÖ<¾›~\Šò©«‚«Å¡®Q¯÷¾Þ°~<ê{Jàïm !jõ¶^o»  N¥?f­ æû#®Kõ ·ý$é ÓuâóR¸¾<ȧFO¢õóÎ×_ïûðÒ| ¨¼p¿h_— ¥Õ”Á!¸ßÑNúxîƒ÷®Ç8¡õ,Ÿ¦^_òâ6˜ ©sõJÕF‚\Ac+“˱¼MPlîäJ"3÷zaÑ*×oï`³‘# i±fÉ×™|ušÄ Cä)²^*w®WÃÕë%ÒÃÐ>l6Nñí8ÿÁÓ¯° õz %$}Ä/)‹¨Ö™ŒÖ«¹z}ÀmøŽ2¸7PBÎOÓe'e×5óá±±,kµ!«u&_£ÅÕë­tšÔ8(«´¤7]·øƒÜÐÔÖëÝYzœ©ÈTéqbÄö•ðTsëõÀ‹Ô¸Â´)²+"ÐoÞ¥ú´Â›'˜Re=ˆš”qâFôζ̺•"‡„"&QŠhoðù:½ ƾÞ:&FŠŒäï55®Q³öáf‚·øûÚy&ªwÌóãb½½cÇ÷ïr}Oƒùýޏ~ÊÄ$E¾­‚òʹq§ï¨† Ò‹w}¾y-ºÖÁ“*í«1…Öšê”21õ•µÂæÔîB”€šjKk¹¬7•³Y>wñbÅc£¾oÃv' ª¼ëpƒÜš’‚¢ž;+"QoÖð ˆ~\®Ý¬§ÎÇ–ñº ¹øöç¯HlO‰ДOÓ„:±Œ Àjï ê ˆ®¿Øß¸‡/¸Š,.†"HTnV€Þã žiÒÄD?å«ôxÞ·aó?öt<–´3%•Ë7f4Z‘sŠ:˜jìÂY‹•GÁÅäž ©¹vxå¹ öu¹ëw"ÊŠ«± Z”¢¦ßy{`%mR¨ h×~àÀާ'”Ê^4¬_¹ ŽÚ5&ç™°¡ ´hæÆ­€¦º©¯åÖaÎþ¢’>=ñ&Â/Ñ톗 p^­ýê (Ó‰ëGݾ ÆÌŒ'§”…m†s¸”¼ø"EzHŽ N‰îÞKBšZÿ­³ï}|±º…taÍ/fàÌe&8ÅJI¤,pª \—l3Sô«‚üþØý¾PT >ݼ5jÕçãT}Oçɨí~ÐŽp>CÜ,µ&7^Îëõ`DùReŠñ ëpÑ<3ÉQ©•Q‹5U ¥·””Ô80Öº yT€¾/g˜Š“@’REßùïjI¡ùü[XxOúÌÔPÔ…ø€+©ñ‚cgh?öõÎÚËfùtõh”ô1ÕÛBjû›N‡%Åvyè(AB)JSŒå7F*ãK_–ëc&3ez‰°iˆG¼7BªP™¢„Îï)”BëÕÆQ2àŽ£l8$²¦€¬OÒúÆ3? ßoXÚÝ׫ X›>E·ZebŠ’>12[‘ªj³Ýj¡§`ˆ’y@%Ôí–%‰Ÿt}òŽ,ù«Æ…Š¿£Ñ(Ÿ ü ©oÖXXùi¶¤oùDˆ_6)pöª„ºÈÌ>!=jN‰µFÓÕ'}ªôï´÷ïÄ=ÙlI3®$¤_WQ¯á›®q47gzżðž!MÀÕêr­^42ö‚c=;^^ IûCÒMéŒl`ßvN׌{¨‚;k/f”pfÚ££wéèÞ¾Òa¯Ä@wÞ†µ[ßv})„õð§È’ÂÙÓ¥®üRë²òS÷Œ¨«4µ” – Y5á½èüÞ¼@ý^D;ÉpÁ_Q^ûÛÁP¾ /*Ðõ¢(ýûŽiŠØéŠTˆ÷q‡F¹·ä$Ç㤿“ T–ù Õnì E‰þ–^ÅÐÆh æ7í#!åÝyÑ)Â<ÞÖ=•öi¼wWK»OVlC:¶ËÎ:)5é‡äx!P-Ò‹ô ße.àG?¥{73J‘¬£¾™Í/DÀIúK†–‘òkŸž$¬ùaø#Á¸ †gjô©µe˜‡Î{øÞYñW(5~1ãu}KU΄ô^ì˜wñ—Kqóyæ+£LªÑÃ¥Æ]¾­.+ïvë#ëä~áíkzk &ÝzþE‰Jj*˜ëD-醑n˜xŸ||M“9bôÉ7…¥AÍm¸UÃgð5³:´y9÷“|rr0ÂYÔt»XRÒÞÞR=æöò šû%’ß³^ùôâ(Mš•ð¢(€vþ¥E‡VW¨CÏn?õèùV®ná ÉvÒ")ñ70îMi¯,w/>»;yéõ»XíLk2¡ï½î}È~%±g:*$?K ]ÙvAJbæF;ÂG±ÞÜPU/ã-U¯T\D”"¤v–e‘,5ÒqWïXN“²¨“¡ú'¡(…z@ê®ËÄ02êÏßÌÌÓVzwŒàAKígA¸þÙkOùýÆCw-mÙñÔâ(«MR‡†´éèÝ-ZÛ¨U£³Ô”:ƒ¿Ä@ÉEßL¥a…ôzM³°…`f9]4­‘Ë£…qÞ×–->kGý1[˜(>"-E ò¥Èæ“b©Û?¹.°{q'çëÚ$ó„ª{úŽó°M hçÓŒ’Ó^zßtJñ哼Œãò”t~RåÒ‡¶·¡¹Ñ•&]k4õõzOT¨ó~èOùOÞÉ4<1.e|˜<À‡'“Lþ,¼€éî}AFÏ ]á2Î."±d}V¬â®¥º~b\aÏ4øèÉÅÉ(Ó´¸iræ£gPÁŸÓ‘[åžSÛ­a9OBjÇm“ά›¾ð]بî&ÂÄÝà ßäïÒñæ ]¨}ÞÆyÍt”º DxPså0_Ï1¡)׈¨§'úGm½^§×¥4ßnã‹û¦#†˜¢ÿA)ªÍD­“°§ƒëeµHý‘`§D&ræHóæc½{îÙ°vÿrU”…»áP²ŒréÖÚQÓD˜­?J N6jº–ô’Q: ?üGvßäÈx6e´öw• ãM†~bú³"ðô–÷ÀˆQK“Å]ã¶¶¬ R¸ƒo²v4Î>PjâTµ®Ú”BL-Ú"ZÒ& EšZ¨ciO«ÂDèdØïIéo"´ç,k*ãò0õ¹ ,ÝÞ\¸S°Ðz{†Q-=zê¢'ÐÓÇO^HB瑦!ÐX€¡vT~þÌšrý1Fp O^ëS,Â~A 駬z³°žPÚˉ”õeç¡m~éòõ𞢶qXW¥£¼Ñ«ƒ$òÕŒÔZ†ó÷M;Úwgo ^PÓÜÞîòÍüé9¼bÜË Níu¢ d×M„C½%u×Ñ¡#—§3úÎÙ¯1)ÂIKëÐ3¬èïð ²²u‚*ùK_†­0¯rY\Õ|“xjÐsßáå ÔöèøkR•ýC{ä’GQ5Ã×WNå› ó·¬ÿƒ0RÂ(Ds^FqTÝ]Jånî§á]¨âô×zÎ/5Ø›g)ÓüìÖŸµcy:¤³Dîÿ7v6­¶E¾Ñ«k¬½ÖY×»¹ÞP^AI@t 8ˆ '‰ Dñk’ )‚q`Ž8ð'8S48 þ€ŒüA2Püæt×^OW¿Ukß>{Ÿs†EwWu}½o ¤mp Ô1è-…Y‰ ÐBŸݰJûàA’Ù Y…N˜a,àôåä[ÚM²¦½ÝgslG‘’­+Q\°Ë£]Q+ՃљBî4‘«E[(þ ¡;²*™ŽHk¢)õ,Ä?öör*U…âëc’eÉísø^Ì*šš¦^ãWLÓ,*ÚNº¹£DõHʹuº!b ö‰{Êfú™ LBè·n °²œ Â–9V†i’7£Y_>Š[Ѳþ„,fG±OòÖwï' ã‘>y¹¡JæLBùFÜŽŠÍrrøÄvÍG«È<9þîa–üƒ(¼Œ=’ˆêÒ}/¢ Ú² Æ~ !! Õ ; [A¯M}ŽÌÚ…¡#Ëü<0wüvþhÔ™òªÖsIÝ5E\·VI$ÕŽæÂÊ“¯)‰õó²… 'T_©œM™ØÑž—Š£Wb*ÀàŒ9tê¾I”ª>‰¯„ê̆ 0]*’g‹!•g)™‘oéu|ýŽÉ 2Oä²êü€¸BŒÍ>"ªR’ >,Ç×a/›yÞa°¡)ß“º¤K‹"`BJ¡D¿Ž¯·ì½”l«”4ä1 ðîŠ"/–4áå®.€¬C|=hKÉéM2Ã<õàê•èËeœÅ:!*ÌSŒ¯'eKWd5XéÅO£‘5\â›òzÆÄT0cgŸz¬È¢—±£‘*¡H¢÷ÿh‚¯§0ì€0]2Èå1G­#5 mò p0"Â?º…¯ç—³£~¾€èØEì¨Èˆ}Š<ŸØévt _/lÓÆÆýTmRCªS¤pòRþQÝÑØ<‘v:èk¿Z'¯îп,(?1Ó6ÿ¨2hÝdøz5MQ]>eøú°Ïõh¢L‰&ÖË_³bÛkÚ1Ç×kRZ…õ+Eçõajäe m?‹Dnˆ¯n‹ˆö?l™naAuä ¥{öšyÉ=máë„PG[&yq ðš%Iô 1‘¶¹¯OÞú1e(ª‚!jŽôö*¾> ç´.”I=|Áû”ü£×ñõˆ9ÖɆ‘ågreD¾ZoPþQ„Nñõ´\€gÒšˆþq¢âBÑ`cy›®ñæP6*àF¨¤èþQè ä}’øcïrÎ×øG)1&øz&3ù¨ÞæÜ1MJ§×c¢Âå§´Ø9ÿ(ÁŸ„EÔQ ë^HØÅ‹rBúQÖ)ÿhîæ±à$Û£õXSb&-…êpËQÃzäÌ8r#þÑ€¢ÚQÛS„„{Ò¸JÜV-ˆæGBÙR¾§‚qê¶s¿‡ûãÐçur˜Pý†(S‰gÏ û–Hi_؃AÌæØ£4Ù€´ õâò •Tñõjòíèû³÷š´pGX/æÉô(¨ß yc&Q¨‰™âë÷ºŒºÓÑ®l Àt=Ñ»ÒI¼L71¾§DöjOe+Àw¢=Ëgœ9ø„á-¹£øybóÙR?n;‡¯2~SíèÜÌ£k< EXO¯—çÉÄÌ ÁåëX¾&GÞ¿¸®qÍ8sìÛ,øzò’%s#¤EF¶Òu¶·ùû¹O<ñAŸ2§d§øúN›P¦ðŠ2±…Á|íuSâa-öÁÇx%žSÔóÄŽ:æ¼`˜±šQt©.,hÇDHš°·çøztû$¤ßĘi|r¼ØBÊe‘(ôFvrô‹˜¢öØQ˜TXEã}PêQû/ʰÀ×ûXÓÄsøu+áy4½r|NFyE©1 ƒÖMŒ¯Ç:‰§ÇчsîÊšd~¾ÌµUàU·D£(Ö³­Dvëïw󙸠î u¾ïs%™›óágøúh+)ìí-ožÎ5uC«Ìñl’Ã߯×{ Ú'd…7ÏÏ<ãðÍi®`;¥ÃÇÞ³6ðõöåìÝJ•e—d¶ß ?³(“}Èâg|øŠ¯Wtd_Qû‰ië_Ê .)ñ²š' BóùõÛøú‘¾§Â«í£u¶Õ]RW³KN^úÉn%®ñõÚªñl¿ž°ŽÈIV?l:8O(Úï‚’¸3%‡jm9Ÿ_Ï釙2$ w®íiò1èR#'ÐàšÐc?}[‰Ì¯7£ðxdGµ”‡‹°¾UCy©Œd|øúØÛWc¼ã1öHQ;WFüƒ/êô´õzaõ{jí:‘ŒHj/¾?z†²±§ó•Á‰œòz½w¢óH{ô½:Zg²+ÊÑ X„Ø€”XÑ'fƒÓ%˜¥™È>̹ ÛÉÆf-4ó”òÇéêÑkML"P ÜcæÆŽ½Èª;Êã~™Ré‡dØõz¼<ÇÛ sîH$¼'«0ÓJlEñ¡”þCѶ€X=Nˆ¤S>—íR ™xšÀX÷uP–;*剗pKäìíWkEÕÞù‰pi…dŽÐ¾õ|…­7{ŠÒgu&¨o=ætÂ>aFË×üfrÇžêüz¤$X w£&uÌÝÀ®âèM½”3é1l©à Á×û…¹/) Öˆ2¥î|¼<ñB1Û2æ€x6h*Úâà JÍásô½7Á:Œ±¡l¶¹qº(¾>Œë1÷‡Ðq޵~j®¨ Š:¡õëˆ`ÍËJ!§AóG7A”ÞÄ,¢2\¢ˆêAwäG£m5ÊÑ7ˆ›]$õåúú±“Ÿ,Ñ¢íBáNÓ£2à2çÈEñ™Ë&ºäS+.»9Q°59©×²WeR1ñžÂ¢Ëgãz=ƒlCÍqž’'”T#&VƇoê¡~€²*á´²©|Bå½S¢K%S¢æ‰ŠmŒ`ñ@ß}òä÷«œ°hE=:Å^Å7ÀÀ©Bœ¨rþH(ãÎîß+ë/Å-wôß|éÍ—‹&Í’—¨¾Ã×K6q#˜?øÞÕÆßß«ë#£yyET›ñ|aüw¡ML0ÖØÒ~Å|øväöMëõšÑûÅ…ÝñQQ%¿£ÏT’á“ÙNS¨nWÓ‚Ø!cœq-¾^¿ŠÊ%ýÚ÷ßút°3ÈÌ«Ý3f÷6fâ¢ív’L“¶TîÈ83<Ðùø‡Âãlšd/ÿªÜ…g×û oh$èõùõúÜû>'ÁÿÛ…l|è¼R£B?]X2‡^FŸ+a]Ÿ_ßÇõZCLk)+§ëëÇ¢K¾Wãþ—ÿüp7Ó¡þ}žÝž_¯:/õzÝQ#KžlO{£?ÏiÑ ÄÖ[lýîËlK‡g²#g(ãÈÆ®¨°ß‚­"¤ØÒÅfI-öšF1ŸVPjŒûò)îäÝû>2¤µä½ª¬ìw—ôçn†„DŒëжâz–‹B)1ÂFF \;™n©G?}¨°ëíd¬)rV’\bÅß\-Úò4a£’D.Ë*ÞÓ{eDË©¤Ê±¤óú·ÊÉ Î„¤FG!¨a »žôýd–·iú_™bñä} FêZ,™~÷³2\Âì=;J +[êaŒÌBÐÈ>ìrÆÑ{Æ^Ò?ípËš?üâÔº_Ú:JöÓaÃB` P¶Èà‡x&×]ÒcX‡ê6âSÆ û¨3¤¬ÌýûšÅÍÑ Q‰1éq¶íT<G¯ƒEwÓ•£ÿ»?¾Ìïøëy´Kê]cÓ;aë ë8ziÔ"r$Û §üçÎ7“wò_.œþçËÒp$b,@ë‘T]³|\=ßNPÂÑÂQûÚÃ]Q%Ü’ÊãÿꃋrIÊD EX2šIk¡ôáûl3â‹ôvôÐE¡su·™-¶È_4¸ó;jÔ/½€¯ŽaŸÆ°ÞÓ÷êso.>ë¿wcuÏö4•/B:œHŒ¹ãè÷žèpyšÈ‹–ßšqFÔ:±>÷À¦šÐùJ¥ÐÜÐ9vKx›ðž¢T‰ÛN ð©×ÛÿÊè;½y§LgüQcx{ñ޼¹¢³ÄKè|^b„žÈT‰g(J¼Æ{§„rÓ?«OÚ·=½oóOêÁ› ,_mÐàNZ_ª«'XpŒþQó£S[iš¾^/iuyëŸû€ô<¶Gï;ïàç]:'%¦RLS’ǵî, œ::×縢(SgJV8á ¨mo²‚ö ë„ð©ø¤ÿ9ûÜx D_{°ŽádC1ˆEn]cbbIÃwÉ#ËáS_ìð­$ú÷b1wyÚí/ß9ïm 's%pîíwÆ?š¯v m%åÌ~v“٧᥋ dàtSàB¶â”Óï” ñr|=æžÉͷάŠOòÖãcÇçYe4­ÇÅ׳©1¾^‚&…Šà“˜¨6M&dU‘,.;ªŸJcz­×«¬ÐÕèSoê.TJ6ýÑ|~½ÂW;ˆuDùÓ¼>¨›Ù‰©Yg½£X(Å×+£J»c+Q%~ѪááÕ‚gʰ"‡xÙ/k+¶‰ª-ÎÐ=‰)u—3Æ3Qcî²y's vÑüzÔž 0¸([ð2 4gæž·~Û)!IJaZ¯÷ )•çKGÊiÚ† .ÇSÙ†j½^zÛ1P­”ÐÌ·÷3®×›ZñõZÁ3éV†P[¸È“Ë Í@Êì©™óæ:¾žÎf_-iö~ú6|ëÃðLô@,’ÍSÌ: ‰BÍÂÿzôUn|¼"Öëóü¨’Pž¼¬ö‰¼W¯×Wi“w&aùrìi*¯Ð"ñžÐ&“P2ß>öW§eäí¨RÞ›—•WúÝÔeOÙN?RÆ«’ÐÄ­dn°)‡Î ”€$Ëäí¸P;÷öü™qˆ¸²ÆåÆè)HñžBZ–Ï•=EXHÑ{; T@o(d¾¹¼N8%£Äì/BvþÓ':$”­~œ1"êÑcî²/ÇŒNżèÃ,±íYŒˆ©–tçaB ÙJ™Àª<ã£[zžbìS8©åÿGЍ–¨ZØIEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/classwizard/images/watermark2.png0000644000076500000240000003510012613140041025065 0ustar philstaff00000000000000‰PNG  IHDR¨wŠðÈÙPLTE­¬ÿÄÄâZcæÁÕ霧¸¶þÈÆþËËþ»»ÿÀ¾þÃÃþÒÒÿØ×ÿÜÛþ³³þââþ°®þÐÎþëëþóóþüûþÝÚ",Ü ·ÑàÞþêZZÝ ÝüììÞðïýá¿¡Þ»²ôã##å22æ::æABÌÃôéSSܽ»ìllírrî{{ò››ò¢¢Ò¢ô¬¬ö¹¹úÛÛúõúûââݽ«ëýòóä,,ëccð‹‹õÍÑÖ+<Ø-;ØFXÊV{Ù%1Ù4CÙBRÙmƒÚ%ÊužÚ1=ÚRdÛ"Û…²©õÜÓõÌiÌ„­Ì‹´»£ãÍJiÝP^·°÷ß07ÍZ{Í¡ÍâÎq”ÎÀï䪽Ï9TÏ@[ϺçÐ_~èEEèLLЭØéot¾ŠÃÑVqêæûÒzšÄ«ãÒ‰«ìvxÒË÷Ń´î‘ïð„„øËËÓD\ñ““ÓSmÔ5IÔKbÔi„ôâéõ³³à ÔÂëöØÜ÷ÃÃÕb{ùÔÔȽóÕ¥ÈÖ'7¾šÕ×I]ÔZsʆ²Ët›øÅÅÖ9L΀¦Ëa…ÍšÄߨÀÓš¾Ëz¢äy„ÔNgÕ@Tæs|ĺôæÆÚçjpç¸ÉÅf’è^`脌Ås¡Í’»¶›àͰÞë­·ëâôÅŠ»×µØÍ¬ÚÅ Õí£ªÍºêÎUvÆ\†È’ÁÙYmð¬±È³èÙ‡¡ñž¡À¶ô¹‡Æò¿ÅÚ)5›ÓÊ\ôéñÐmÛKZЦÐÊdŒÜ:F¢ÚÞ˜¯Ñ±ÑÅñ¹¦éÒ»åÒÂÌ¥ÒÞ±ÌÓt’ᇧfÑT¢Ê>>YŒbò€ºâ—O/ÿ½ÅÅ50Üc–*fâÏ4먊Ÿz@æLÄê g…—|!4&ÂêØyëe{F‹Ž+ýq²#ãQ¡Bµ0]´ç¡ä˜”<¾ÀDïT0+Yfî>ý¢ÐÍMà§%â'ÜSàò™£ŒP â-K(­öÄPgûÞš²rùS‹>­¨¨YŒ>b)XCí!O \ó{p¬€CÑB,Ig#Ö—2GaQR:jŸ§§ÎÑþa*ÂO¯õš¡òõm‰)G[¢t„ÙY)É+Ž>}–Hÿp‡ovˎö0_W aœP 9|´§&Å÷‚âŠ0EIÅæIòµÇOs¹ ŸÃ¦ª|ûâè5ýÏææ…A«2êzæšMÃ>%°ˆ6NïØæe 5G%(€Q² ¯\Y=Fø;ßø¥»>75ôÔh´ª,=ßÝÃ[¹G³ ÿ^1£‘ýs#…yO~Ìr ›ÿõxË‚+‡¥0” :IÑ{.‚{ Jìó§‚dc?Ïa½'˜ï8Z›ÅŽyzFd1sÿ^xÊYYvZï$±sàgwlGq˜—žp ¬[0“oÝ¿è”T`æõ #Ʊlxò>­ö'FH/|ðt¹Ã=?ÅÎëà°jg^r§×϶Êrw„%'üÞå¿c÷°ÿ d¡G ¨èáÂþ?_ô¯ÿ©ý|<Ç ¿l LðƒÊ³ˆîfàI)¹ë9Gú ‹ãÁÀ$ºÂ nö…a¿a`ÀØÒª*„š¿ñƒ[¶ï¸ó‘ý÷ü °{PZ:Yá¼j÷ü=3´‹ RLAý¡ µ¾Ð%²µs°¾7ÉæëÇ~zpaÐÉóÏ<ýµ ìÙ~UŠ×¯òÚeM{! ƒêÃùsò¶­²-@MÚ%cJÅ£Q”iˆÃÊuÜc¬¥µÑ2Ì<óÌ¡ù!U Î:ÿÕ‘~lîÀ¼ÓY{ço;¸yÓm;vïê’1‹Aqðô’¿ÀµU¢g¸ï·@öõDÿ_R²ÜYÔP&û€ñä×<é­Ç8ãÞÝÏÀ‘î½dañ–q¹’ÛÙ‹~¦E¯¢LëTuô»¨¤ÀO–þ÷ Ÿîn¹úè  'Þóº§p9Ý6Ì3‹ˆ·F²’-^r;JîâJ‰NF\ú›¿ÿ¬NîF¤¤ž–^0…™Ïìæ­w^Jê*z/c茳™aí±–ÈQOIUàlP+ Ñ–ØÅO^𾋠®í6Âd%˜Dk'ÁýlÞ=ì´Å]æ{ýÐÒrsåîLîAi_á›Íž×%óùRyý-Ÿ<Æ `õ„£ ¤£…Âzº±ê‘aÃæJO€.|캽FöÕ¼D££uîêç”ÝYÂÝE¬¥äH…´è›†—·^™Fƒ¬^<)!­Ím:¿{`ÿ£úIÀe£¬Ó WO7æsÕêýû×ݼuaW«¦êp•D7›à¤]zÒy}óUAT»uÆO•Ñ“Š{ºÑej6z®Îœ}|´a„ÃÍ;‡ÍV§ÓêåT%ÁGÁ”2ÍR…4­£ˆSèÀ0”=),÷9Ó» :¾¾Îßp°iýB˺ϼ—s-O(ËØðA?áB”ŒÓ|ËZëè“çüÍ[}aë•Poú} ”´'Fÿ§É_;bÊ3ïõ›vsH›!«WH}»§MÆLk(×G£µžÝhoÐÖáÒLÓ¸¨/T«†EAõÜ•´é±ô>mÚ[Ö¯»ûq“}Ô\Æ«ìU—B‚Tö˜2eN,ú8eúMð# û]¤ç-îytHi“^î‰~¾jÇÊû–Š~«¨­Íûe@òXÆçí0µ*Û7Ý(Ç÷GS;‡&¬N·¼ï]º‚ï”4_þ²g&çO‚½ÐOühÑá\¶ñ°a«vªt¯R  3&`£_^•ºèð»I×ð¿5g83;´:€d?ÔÞ2(é켃v[Ö¦'ß¶nÍO®ùø®¥&UÊJûéòLŠ·AK÷«Å.…¼t!nXËw Üæ2Raof點eu@gZ´:ÍFO*zuIÂG¶*‹÷wB3xHîº B êB.ªè?)¤ò†gæuf±³Ÿãn˜jÖ°FT J´$ `óŒ0óÂQ©²¦0Â8Ú">Ñå'=öpÏÂüÚH¡œŸÝ:ì÷ ±Ï ]#³¿eE„ +VR½(@hôÝ k£¢ÂÓw`¥î˶H¯¸Úõ‰ãðïÉÂ=?»eç°?Óà0Ÿ‹Oö& "w6%x‰1Á ìôcåÚi÷dE»r 4Ô½z½Å¶¯Y¯#yŸƒ %<µG•ˆ¾d° *¹'á¨ÇTÞ¹ƒqeÇ?„2L ùY|÷Ës° ÐË~ÿÖ-;KxQBJܪp׎ÀªE”Œ à‘ÕÇö‘†Ns„þé!([|ÿ[½Æw^u&½0´æô¡7šd²ÓÀý†©{J,çaw¤uð( E3¸˜…¤q¶VWã1 *$6m6õ^ƒ SŠ8ZÖÜøÀ+–<%Ù;Žfq<ªëŽº±^ç,´æña‹ JÍY±ÔÛeÂÎD 8µÃ§•I´Ó’Jë9Â;uüÙÇÌÕÛMiAsSeL–"~R7QM 8Å–Ðßg¢¦ñ#/Nãwî>¹ŸP®:hì» ½§’×ã%0*ä(SYS–Ñ*üeÑ#ÜänƒÎA›o¾{ãÆMw˜jR“:ʘ¤’½4¾@í!‚ 7°Q®R[“”t’Ƥ¨53È™› ÚhÒ²g”šp»¾*EI…Ÿ,{½Ì—XxòšJâ~\)‘ DÂ<¡š/Y= ö÷hMÒ¶@ðKÁ¢?*¬So„æ‚6ëáÒíŽ(zº<ʼž¢D¿#2Qý´=ÿ8ƒ]PSÚGõ685BŒ“zUÙAÖš¡ ¤mæh’ćÆˆ@K{·0H_pR×(w–âªb«·ß,vœ±{*ií¼!SǯLzŸ u”÷Ât;ô2>åž*¸JjêN×6¾³RðeŠ“¢¤ jF›¡²{G…GÑQ{笩E‘ I€‘Àa%{ ̤NRˆL*_ÑæÍ4ꨪ:5%­ñEåçBGøÒ9œhÊ€àN©@–°yµ-rÑuºŸ7âç:ÖÎÜ=÷‘Ql—G€Ò1¢ðYI5éxsÚ¤vli\PÂCpuvÇb¯k•/e(ñd£ëÞRsTYSQ0O FóKEQ-Lªq6ˆLdjw,Ó._Ü(ü&ZÞ„@êÈOlÔÝt^Ž« £Ñ¹0ýš FY(”Ä©’W ;%OÕu[âæQ’}D ²Îýˆ’ŒÉWQx+³K7÷c3dB¯õÀUa§¼”t÷ ¼t4JÅdÆ‹½JïâE)ö¤¡è | N†|ÁI¿˜H Ø9Uâî…P7ÕªÄÒWëS*]“JrÔ÷§ü¡¡‘nÖ1JùHI¦3{ÌíØÝ[ˆ¨¥ˆVˆ×z÷&² ÑèIÞt 8+è2OìÊ7•~×SŠ¡Óá~=‹.଎EÁ™âŠ$ö¤âߌê´àáŠÎ PägÈQEÄPÊ—„rVPŠóÂ䎬^®XÁépëÅžé¡ÛÛ…ŸÚ–0" ÚÛE8¸§W*ÂÏÚ^èœEé­ôhꨞ€ÿ‡¡†²—ÒºZâ‹x‰wPÜSIvƒš±§¸'‡‘ 6$p¤ÂÒB»R=¬NÂL½„êõS<}Ò•N‹èc=¥HOõŽJ,*P5Ni…¢¯µrò¯Â{ÈFÈ”PÖÌQŸR{fpH¨Jä žàC¹Oc¨ íH{ý¨@­£e”o•q’­b¯ŸTNÕŽSêøEA¾Tµe2RúœdM^rW{k‘Xûü¥¥9êL^N áå‘Ä£1/Eôžø€˜hgâë8 cQßãrÞ’—NüÀ(/Â+¢'ñ‡‚G/šÎíÓRŸæTD£˜˜hª•ðãEI^ˆ¶òÅß&¬ÄN~O¤Ž_™äìMOgõ4I^/KhìEëKÛå'­é…[%èŸà‡£y 18Ñ:ÊX+x”Ÿ²}qø‡ähLdL1GɈ§ðÙ*¯ôZ/*SÚìÓk=óÌï˜(©‹2Ѳ¦ò†}æ‰àÌØèÓ~Tƒ%¤îu‹WÌ‹0êBI)w*•óõxKÜÌþ>½UrõÆY?Q ¯lƒûqS%X5W¦fêøóLÂNÁ* uÆœóRŸ J*˜' VÅb× ’b)ü&µD…P"Ô\Jz>Ì »+É¢8¹«ñ½À¤—ò¥c‹dL’+“Ë'áË+ðP¹döÑ"O$?*tŽe»TÚ¸Ó:ʇј—…§`HÂÑ2&¨£‘8j†WÊêy -„«=ŒH´1I.Oþ)ÔQ Ÿˆ§Âàv`L¡oJoФƒ‹(C·ÍŸ|R£ÈÕ 1’:|…5çô)[9k¨äÌA@ 7ç#ÓRM¤ËT$[û9»ËüÁFxÚ²àðB/¡¼ÅÌ» UXl>´z%ùvÌÑÈœ ÎéX·ÞÇB.Ÿ¹#´¾-ù«Ç® )¯ó‚6²ú4ÎiJ„z9ú‹–ÎÛÝÇ€ú»"LÂN±ö8( ^ŒÅyAÏx;ˆðãh›‰þÍòsÓ¾¥ÀDÑsjì,¼u;‚D”ü¡„?Ö?‚Çbo†d·Äwu¤ˆ_£IÕ)7*Î^ø*lUƤóúØ–"޶|–V6mm¯ÁÊ>º š) S¡"|xè[:óbë—Ð$aNð•ÎëµèdÏú&«¢»þê¥MÀÚ ñý=JIâ¦ñy=‹_ äcB&ÅTäjw„Jöëƒèž© Ú‰ðW‚Áª3‘´†&*έVàžôx¢)ÛBÜG˜ðÊá…*šî) _“¶y¸Óô¼§˜¤6Úp]d+‡€SõèX®&Iq³NTÅ––A"â~Â(: â|™àþ@”‘:*8ÍGÈ¥.’ QA_b’08‰¾r£éDŒÐ¿µ£úžÜ¹«tå°bGÙØ9ªÙ<Þ±µ*¤Kê”íèj-B–ÒA[ª(ŸÊÚ” ØQ©”T°¶cŽ*£×>|Ø dÝ@¸‰H½©T…@­°CKò&yÚqŒ_¦£< vZ8š6&ÇÐ'­ÙÏ‘ŸbN2µ@/¡%< tnpŸ0‡†¯XY} *©ë,Ü>(Ä7¡Ž†ŠZ D):VÉl¹ŒMIç¡ÖÔÖ²¨èÓ#:{=enâq`òúšÒ…'_î)˜²Î': y}”‡÷•s8¥ÃóOÌÔbèü#­:¤›HdFÑrÏ,7Äb°Å; SûØ”d.óÓô¦­{ÌÔ¶–|zp^¼†*‡ß,¢8Ò÷}üž!kBñSï¨"éïµ­Tªœ,>2BªÅ®ózþ-Ô^hï[n¹§E”Ü<*­ÐšXâ"ö¤g*#w—Ûn~Œ’ûtŽÅå>êu5—æ%Þâñã:.‚dÄ!éñøtyÔq—{0nÅÖ%9ˆT Ó.TóSH-JG#ˆdL®òôw¬&ªh¬QDªöÃÒ-Z ³€e¡'šr§~´Ge®íA%âE¼^U>Ø_((€ƒWø(v¦ãQ‰ð›Ò˜ÉûLæ“QPÒ]4wÔþÎ1íí•­õ•š %~‰ææiv*=Uî‰-ÞôZ5€PIG;~ƒ;C-˨Þu¸®|ij(½âù£¡1éà ¤ÿ=8®øÊ÷‚“Cf[élDi©j*ÑyStŽUÇ£qÿhjŸÉÞhN8ëaÏw„¼Õî4E»LqÚ4.ÊS!~¤ýhA ¸`O7-âÀg ²Û'¼Ø²¥‹’†ký„+¤7ÒÛöT̽yºó”n [KÒÔ€°7޳ýºñh3¡ â¢x6œyX½»V(™™š¥ñ&£@•êC†ï,SìNó†˜À ’;n{ûç?:lІ²ø5LæÊq©$ÍPÙ9Ôt"›Þf¢òxT#‹Íiüg÷ÂóË1GÕqÒ7üžn{Ò‹xÛ–d® Jbf9ÿ™½êxŒûGcâ1JЧ²s';c"~Nå%ŽJÚ½pTw;êÊxº-SLô¶k±}˜¨|ª_zè4¢ÄwåÅö<”mI€ŽGÃÎá‚›r©KK±5WëR%x䊢½¨@ŠS ÀAeîV‘óø™èAí©^"·Õäq´–Ø©fsòO2–’ªÁèU2 5§ÕsKÄÓétµ Ž—‚*‘³>ɆV/wjù´1µyæ0ÍòUçÖ»€² 4¾å-‘Û« ¤¹¿sOÈÔ`‚³p6lÒâY¾öF”H0¡Äà 㼦îÒaÿÉ z„7 Ÿ&d'Yê ’Ž*ÁgeÍÁ“§Ÿ@².Ñïî;Þ¸}aÐ1Ÿñh “6m•z@2/L¼‚ T’¾°@Æ èÔkº6Œòk3Ï’‡¬5R*<ô »n'’CÚ7U^þA*Ü e çn8ÿL•ø'3RÖ¦6{{]qÖîžf;òôåîÑ–¬î"Ó½RŸ¼býÜpïh„ï<«ww×Ê|Ã?»T¢oic*ˆ¡^ÂÒœ§ùÊ91@žg*iæO\%A¨¿-3ÊŒ[ 7OÝpÔá#¨t CßÉáð4"mJ yuxYSE'BiŠ{\Ë«¿k‘éÁ†–}÷ <Äë/˸#W[““¼°‰L Þ”„X踒™ý_¹é¸sæ½±ã£ìvæ ðêuãñÈ*n&¤±èEæE˜‰”úÈ,¥R¼è­¯¹}ǾÁ± ¤Š£¢‹:Œr| ?–P¼óÄá0é{Ã)%ð…$ðTEže_…œÚšNµWo^mÞ“¢¤ñxä¢`¤x+ÑKu¼ŽøÀ¢ÊOoØ€}:‚ÓÞæý(iσÙ5H/8ì‹K­‹¬nìÎGÓåûf¡6šØž”ƒ*+Ú¼©6\alfwW:µ“¥þ\TÒLÿ˜°ßÓ ¤…â¨04LG*£ÍUcA.Õ3’-=}´6í«ƒa~@’Ý 3¹¢ñi]CS¡’jŒ…Ü2…²çóS€É2`¤—ÑØÜ†c'Fúr§¤™røðt/…>&Õ‘LF¨î¨UX*: H™›pGïéïï(—ÌG¾¶®É“Êäô-°g”)ަËdÄP®<"R­£¹êÄCZ1¹87…g+rÅ gL¨¤7[%½fF€ò7QRíð•jŠÕ§Üð”tµ4—ã–xU+N[z=Ì‹Ê ÈÿýÉõFc=aE™PÒ%ÈD»]PaI¨¤SkjªF¦šdk¹ÐçÖyDî{GNIÿkR&ÿ‰uýõån¹g†â=a€%M&>ó‘{§æŽYJxR{ÁKO "Õ}:ÂQ‘~½f«v,¡×PBzíÈ*iO“ÑSRÒ+±_`s ÅŠHJRÅb¸<ëâxÅ£?*9¾úMÁl×sjQQçI7u´Ë‡"Ég s’¡Ü‰ÞQÖQÅRÕTnõT¬íž}É(ä¹uwlÙz`¸‚O奤v¿å¾KP'¦?bbjŸV>r½ó£qC|D‰M*ó†útø{Ÿ»î:TRÂi†Ó¶Šº\{ÄÊ}–¼SRYîAAõ”–Áª—,µÚ8Ç]„áÀiíŸÀ×Ò¨UcÇ6L›ÛUÃZcì¶ Ñíg÷ÁꞣèKò¤=ä'\$sÈEmš×¢¾§¦gO…„O¤£1O«*³C¸Ÿ~ ¡ÝÙ–87NX™öZ‘®éx9=.÷Ý /¿ìÒ °€žMœÜô »M‹Ó˜RýÆ5 ˜£I¾Ú°×}Ùœ©JVÒÝ Ÿî±4C–Úά’N¾ípÐÉ©·HO4ê±Ñ€líx¾›÷|ÇÐ…z>øÙ}ýNQê©Ëœ 0ÕPÅ”´ø½üþI‹n•1ö ÒÙ†íÖØ&Jj î%mU†x¹±yo¶2G†ÉþÀÌ.*¨£dDœÔsDŠ´vÒn|×à=oþ!xÄúüO$•ÔPùÜb@†3<»Ÿ“e¬ž¼šî$k Neùéèž#¹}Øoå–ŽáÏX¤Çƒ’‚ÙçU9 žÔÀüü]# sþŽa‡ ¸á oD‹ãÞ¼V(v¹¨½ÖÍ8ïÎäH_ƒ*JJZÙë `õæ¾Né¡Õ8ÓΦ”©7ÖÓ^ÝxxX/ô¢ËÏyÓí® 9ìÈ_BpIŒ–¾Ú~Öœ%.^ø}ÔχööîÛ¶?úÀ°SdD–•ÀP %$Ñ–€lÅ~4ÊEš-ÐÓO eé  }RÒu»os¼”ã΢ÝÍ;ve–×TÐ)K§£jú,ñ)ÞOw‘á†>…~ÎTCPÜ·² ½éŒû &tÉý˶ì0.¨Q£¿÷J%$õ Ù“"Kcmyɲ¶ü0(9€v¤%÷› ³ôÇ*s¸ÛÂ¼Ê ¯ò<”J$GZDM'ˆ¥)÷¤û‰ÆÇ£fª<¸Á‰žŽcêÔ–^œS?pÄfSþœÑm™™ÉŸëE¬pu”*±W|׊uî.<iQý箞k}ùÅBó;†yÝl$kãÑŸ°/ÇÍMoߌ=¶®âCƳþ’è'¬Ïj¤›Ö¶íKÏâR5;hÕL§™¹ÔK•ñÓ'¬CFfc´¢öö™S,ÿpÒ×»œ1ü±–œ+Ú¯êt£«ÏÙ,:oÉWº§$’|ØTÒ€ïxÄ'F'*=Xú«àöCúÏ,qäîPóGÅ=yH¼eJJ ÍfV)ÍNÀ*úi‘ ÔLºÛ³Œ`þ?檲“±/e  ¤w¾{ãÊ•«×ݾ0œá:©®9;‘˰q½…cÁ¢{JÙü¸^|©>h E¤z26(éݼÑéwfÁ¼é*š>koé}Q#¼Åîýù£–Z ¥b© ­'õQŸ*,åÉf}ÜDŠ\̓©¤-3 ó0rNûQEõ3&ÑÙ3,¸þž¯¯b¤•ƨŽe‰95ÚÝë)oÍô6Sé6kIÛ¼><€0ev{Òìj<"UK>þ+a±$múË-Ð-„©ªÎü‡%4KEòØ:ècUóž´í‡²9JøØŽôÔáyÈ9^õ»WÜ”çª<Ê·T WÓÇWåà•f)_ãýh2gjDJj=éœÍ(G—€äs$ò•QŠÇ—M&¶zÿïßÄÍŽ=¥G+DìÛdmší§Ž3Eb×'š2ö¥lN‘ÝŸí¨¢Ñ¨ÝQ°ÖõÔhä%y©3w%þE! VOóõT4ÓóGõ! }ž)²%½Ý jdÏs@2Z³}8C8‹Ä€¿ §¸m™íÐG½äüÑCŽúJëgn²ûѪZ;×÷òè(›4:¢nGC¤@¿îüQØdŠûðÉC1Ks{ÝtäºM&ÇèËßçú¿ÊÎÝU²¬ ã¾êŸ¹¾|ûöiކIÔWk@ø‹¸yÖ×^á×óÄNWñ4Š\v2ãì2¾ÎÃÀkÚs§c—J=Ôø£A’…–XÈy¥öÀ„®i°ehM0ÝKb¥œ±n$×§kXÎÙ‚Òtô'xyµÒO‹MÝ2qC|d´œ1jè‘ò‘ÔãäûÇj9΂»­uYEa8ðà˜žŠ˜ †ojŽ¢»]tÆüÃe˜0–Z[ š†E¥È´1 Þ,µ&Tõ³Ÿ“ÖÝâq·ÏÇ…)ºy¢n‡ˆÿÿ@Ï’¡â¤„ß ‡a-WòGò"ºfðö$M„£¢z‚ GC9çå\@ÿÈ’‡àíº¡Ïœ°g…Û72IŠÒa÷°¢eÁdnÜÅ %pœ1r7e+¦mgͧýܦMt®F"`Þyšã%ÆL¾¸>6:Rº~âæ­ÖJv~u©‚©'PªþeŽzX n“È4¡ÏM„6Ũæ'9Pýãns•È`©Ì“B‹ë:f½3¤«4¨›ÐÖIÝ«Q?öíÏûñ/(K„’[-6¥ÌÓ„j殣¾Ì¶‡ù¼¢fŠñ“žgÃÍ»”]*:3›0zòD›u&Ÿ J:öøCõ”ždå/ó&„Ö_“wÚ²£M§ÏFýE†" Õ7w7Õº‰|œ¹Ó£›©7-g[ å-Î/ÃÔ‹¼: -¶§=ž/A¾ÿ[ùˆS™Ï¾¨C})O’WI!A:*Ý3Mw-¯‘š‡p:t›õtÒÜ…ÊÒ`¼¾ÄÃ× £‡ÌÞßÑG¼t 5ðµ^$Ê^åôM¨5Å™PýøH‹ǧœvò&¶ºÅ‡±GŒG<|Ùyó0(dÞmÊ0%‘ƒ¿®i,Øîi¢’cë5þ%†Á¥¥²¡o>˜Wseô~c¨IÇ™"5éÓ›rã•Ð.3agd³¥gPø!¥—‡džôUà: ñðóœ¶ µoi#ú°Rø¼Â“rø,‰Ù5¥e*º¹UdÒ7 RöHÇ{Z…÷ãt‘m>Ï~h?oЛgZ¥»„¡4M¸£ùø— ïI²$bǵбU5oÕpÜ|›ÁÑïIÄe-”ø(³ŽŒë±FÌ‘2çÚÑ(÷±zǼ8ÕhX bqð6 ,ô—𸬵Ü{Ã#aû?YàáÏsY²7a,`[¨³´®ƒº"’Žç‰‘Kvæ Yj|¥ïìí2ûœ¯÷*#YêZ4RYS&7š¤ž«%Dbü[M–Rӓ̝›*z÷~ì Wz´Þ}ÃÜÓÑÔ(!jj,3q±rK®Š¡Ødý6ç¨}P´E$bÒ޶DŸ#Ò)õÈEœâ*óuƒ’£IìGùñà.]¿®K‘ê®^5E—„–ÉÒ¨èó¥ŠzûâÄêÛ’­¿°šH±Õ–{M‰‡OÁ÷Üc4ò¢R1]/æóµ±ç-µ=9•ã”Ôh`íq=àý&d ô²•‘tI£¥_ŧè>Ф¯;%J‘E§Ä9º:†3a¼±Íq=¤‰$F\¢¥¶”Ò‘Ð¥¾q[šœ£4󼟄LLÝãúÆHD¬ ÝO%&c¨[OGÍ#|{VM¨¤Pýau™xøÕ–àþ'/wc+šj"\ikò4ܶ·„Î=CÙ¥(÷ÜgÜ‚(eýÄÐ.m¸Ô/„Â¥²í »¬'²tÑozVmMé³|Zù£úƒYr4ºœ÷Dn ñê&ÂH-¶ õ/ž!úhY_nÁ2Y…ÑÞ+j¡ +̆š…z3¹‹m®&õ™­Í\¾iΫü(5ÓDã©7óy»J¤ôž$LÆIjQãi”ª‹$RÎUÚ¦Î÷\O€ÔÐMäÎö¥9e½V¢$ÆÂËcöIz“ËÁÉ#G-O†§²®¦ú ÝABt~™ ’Qž•½ú^ƒ†ÉUTš7ÒJ=KÔf8O«þBçKcÅ#o÷”G+I’‘j2o!HôžôqÈÇö4Á‡6ÅŠžeÈLæžò%52KÔ“ŒîDiØaC½ðzR?:ûÊÕ‘ûoz$HŒ0¦OõÚùf°囡"u`«ÝèßÄ¡t†Fï~Í”Ô=>±æ/*§dÞSf›âÂÈä;/F©@E«Ÿ?#¼àæaç6l5ÕÅ›H,ýQßkêa“ªw+‰Ì·”iGJ0_'n%ôBOË:t¶Õ\Ù6µâ’¦,>YZ´U ù˜ÉuÉ—ìO3æóv‰bŠÙ¼héõ.=|–™Î_:÷A˜Øë(AÒ +ôf­ÁEIçN¿c¬#?úÍç3^ê’nåú5DË,…"/^W|låP:zNž×î‚Ð{vLõM¯h"?™O¥†ºh›u½çóyô"¹pH=἞¿Åf®ÃAT‚©¥0°ÓÖ ñð'uê¤LIŽA©3Ù48iÔg4x±Cã±£QŠQè m/“ ¢öL,-½òølЪ'mí†æ‡’ÌXıg› sÙ߯1àßû0›×Ãn¾he›°ZÀIq¾w{Í+òðM?ýƒ(eª°LØÕ!™;ý-‹yòë«F.éãKŠ€áã«…›w õzTĜ֠¤rûpluÓì2\=ͱ™e*z 8RƒOÔ÷Ú†À¾õ扫j¡@é³OCëL›8‰@ѪæI<A×$IÁ™BíäÊ*õÒm6cŸêz={_Z íôÚiRA@ôOÆuP 2d‘N}¦òöÙ§ôø¹[Ñ6dÉÔÂÅç¹Û†CVmwmÎŒB‹Ñå ûcBdí™­q“”úÓÙ³Ú Í´ŒC»¢ÛñAªÆLö}(`^™Öù‘*¸ßp˜ ­ÊL¬‰µœ U—;Õ“­ëD ùÕãçîýùòì@w:ÙåZN6ˆ¥Õv&)‚&©ü7>·9'Ÿº³K’<éðÉ×gBuúPù~ðÙå»UŽ0¢]ƒ†ijPNÛ5}ðhÃ𾊎ÞÙÏë»<®WAÏùÑ¡qbÇ[n,aX²¹TNÚmxÿlÖ?þÑë[¹r×WÞýþUÀÇ­²O°JDnÏ´¶ÐŸƒ+ª¤xëÛÞºš»ÊÒôŽ]{[ÞšJ‘%„Vtö˜ÃM;ö]êW1u;þ·wBN¦HýW‡ô?žiÎ3bz¡ZƒPΞ,+ b~ô‘¥q¾–¯oæ^ÆÞ•ýÙüõºSgá*#¾Æ`ÑÜÏ—%äó*cS¢~ôaÔ¦+ø4'õïçEÅW¶¿¾h(áåå ÂÔäýõÎP}[å“~íZ%F•Ï‹Á~~[¤†dç¾”úì•ØþzÑ(jëýõYÛ O§›û{/M9AÚ÷YÞ½>:¨ ýæ­]­´¸íµe!¼¥8”ýY:üG¿¤Ëê ÿéÞ‰\·ÌÚ2U±÷KJ$Br`&Bî¯ÍØ¡F—tÙYÐWÏÛ>Ì'Y¨RÏ߈J 0JØ_O¸Ä­Ùõg}3é¾ÿÕM‹Ê…ª 8,/K˜ˆô•±Þœ¥Ø_Ÿ÷{ksûbßÔ³»¤ËýŸ¾r=‹ÈC}ؤzæñ’=ŠýõÀ T&÷Ë}cÔ$,%O㞎›?êÐØ4 µzÂ%.bŒft2ó4e…¿¡g½Ü÷±}ã“È ³–ò›åpÂWÔ8   '–R/e¯7âz}µÞ»9Oì&2÷~9þ­'ÈT‘êÙfÛ_ϸÞ7Å>è ¿|x²FR/7xÒÏ~!àtQ¯×J™²^¯ß–ò£d¨ˆÜ]žîݽûž‡wö3-‡ ™•.¡ƒW!¨Ñ»wy*»Þš-ÌôîÇy奫“ͰæÚ Œh¼¨à(S%è}Ÿ—[óæì:o•Ûi¶>g>Z{„æö¬í×WhOèxÓÑcD,Yû¸ÀZåpÌ m”ª ¡Ô½Ñó õúÉêõøI—téo+€K‘ª*;ßßܱ”®'H Á‰RÀLL2ÙNð´šgÄxô匘¾Á‘Yx¤V÷ýõlÌ©œÞ͈F´¦¦ZÁyœgš¼VÉ&+D©O“„ˆP©Är?±Ä<ßÔÂ.¹c’9*âÔQ&¶ŠÖtE‡ „.øÏ„¥C¤'$ LŠæV÷¶ãÔ¢º¨˜b$O}±)E‰q}‹€žÍ àòºœ ºçq~ñp£-‡yG͆Ná›9ºí K9ÖPh{ðcB™Nh|±Rbït"‹»ŠRUn0ݰ úÎÕÑL“(­1I6Qœ]”VØP±£Ç˜ “ô¬Àý<})QŽƒw*£¶ôˆ þ¡¾/9ú_Á*Ø ÅQ“IEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/configdialog/0000755000076500000240000000000012613140041021133 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dialogs/configdialog/configdialog.py0000755000076500000240000002115312613140041024137 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDate, QSize, Qt from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QListView, QListWidget, QListWidgetItem, QPushButton, QSpinBox, QStackedWidget, QVBoxLayout, QWidget) import configdialog_rc class ConfigurationPage(QWidget): def __init__(self, parent=None): super(ConfigurationPage, self).__init__(parent) configGroup = QGroupBox("Server configuration") serverLabel = QLabel("Server:") serverCombo = QComboBox() serverCombo.addItem("Trolltech (Australia)") serverCombo.addItem("Trolltech (Germany)") serverCombo.addItem("Trolltech (Norway)") serverCombo.addItem("Trolltech (People's Republic of China)") serverCombo.addItem("Trolltech (USA)") serverLayout = QHBoxLayout() serverLayout.addWidget(serverLabel) serverLayout.addWidget(serverCombo) configLayout = QVBoxLayout() configLayout.addLayout(serverLayout) configGroup.setLayout(configLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(configGroup) mainLayout.addStretch(1) self.setLayout(mainLayout) class UpdatePage(QWidget): def __init__(self, parent=None): super(UpdatePage, self).__init__(parent) updateGroup = QGroupBox("Package selection") systemCheckBox = QCheckBox("Update system") appsCheckBox = QCheckBox("Update applications") docsCheckBox = QCheckBox("Update documentation") packageGroup = QGroupBox("Existing packages") packageList = QListWidget() qtItem = QListWidgetItem(packageList) qtItem.setText("Qt") qsaItem = QListWidgetItem(packageList) qsaItem.setText("QSA") teamBuilderItem = QListWidgetItem(packageList) teamBuilderItem.setText("Teambuilder") startUpdateButton = QPushButton("Start update") updateLayout = QVBoxLayout() updateLayout.addWidget(systemCheckBox) updateLayout.addWidget(appsCheckBox) updateLayout.addWidget(docsCheckBox) updateGroup.setLayout(updateLayout) packageLayout = QVBoxLayout() packageLayout.addWidget(packageList) packageGroup.setLayout(packageLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(updateGroup) mainLayout.addWidget(packageGroup) mainLayout.addSpacing(12) mainLayout.addWidget(startUpdateButton) mainLayout.addStretch(1) self.setLayout(mainLayout) class QueryPage(QWidget): def __init__(self, parent=None): super(QueryPage, self).__init__(parent) packagesGroup = QGroupBox("Look for packages") nameLabel = QLabel("Name:") nameEdit = QLineEdit() dateLabel = QLabel("Released after:") dateEdit = QDateTimeEdit(QDate.currentDate()) releasesCheckBox = QCheckBox("Releases") upgradesCheckBox = QCheckBox("Upgrades") hitsSpinBox = QSpinBox() hitsSpinBox.setPrefix("Return up to ") hitsSpinBox.setSuffix(" results") hitsSpinBox.setSpecialValueText("Return only the first result") hitsSpinBox.setMinimum(1) hitsSpinBox.setMaximum(100) hitsSpinBox.setSingleStep(10) startQueryButton = QPushButton("Start query") packagesLayout = QGridLayout() packagesLayout.addWidget(nameLabel, 0, 0) packagesLayout.addWidget(nameEdit, 0, 1) packagesLayout.addWidget(dateLabel, 1, 0) packagesLayout.addWidget(dateEdit, 1, 1) packagesLayout.addWidget(releasesCheckBox, 2, 0) packagesLayout.addWidget(upgradesCheckBox, 3, 0) packagesLayout.addWidget(hitsSpinBox, 4, 0, 1, 2) packagesGroup.setLayout(packagesLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(packagesGroup) mainLayout.addSpacing(12) mainLayout.addWidget(startQueryButton) mainLayout.addStretch(1) self.setLayout(mainLayout) class ConfigDialog(QDialog): def __init__(self, parent=None): super(ConfigDialog, self).__init__(parent) self.contentsWidget = QListWidget() self.contentsWidget.setViewMode(QListView.IconMode) self.contentsWidget.setIconSize(QSize(96, 84)) self.contentsWidget.setMovement(QListView.Static) self.contentsWidget.setMaximumWidth(128) self.contentsWidget.setSpacing(12) self.pagesWidget = QStackedWidget() self.pagesWidget.addWidget(ConfigurationPage()) self.pagesWidget.addWidget(UpdatePage()) self.pagesWidget.addWidget(QueryPage()) closeButton = QPushButton("Close") self.createIcons() self.contentsWidget.setCurrentRow(0) closeButton.clicked.connect(self.close) horizontalLayout = QHBoxLayout() horizontalLayout.addWidget(self.contentsWidget) horizontalLayout.addWidget(self.pagesWidget, 1) buttonsLayout = QHBoxLayout() buttonsLayout.addStretch(1) buttonsLayout.addWidget(closeButton) mainLayout = QVBoxLayout() mainLayout.addLayout(horizontalLayout) mainLayout.addStretch(1) mainLayout.addSpacing(12) mainLayout.addLayout(buttonsLayout) self.setLayout(mainLayout) self.setWindowTitle("Config Dialog") def changePage(self, current, previous): if not current: current = previous self.pagesWidget.setCurrentIndex(self.contentsWidget.row(current)) def createIcons(self): configButton = QListWidgetItem(self.contentsWidget) configButton.setIcon(QIcon(':/images/config.png')) configButton.setText("Configuration") configButton.setTextAlignment(Qt.AlignHCenter) configButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) updateButton = QListWidgetItem(self.contentsWidget) updateButton.setIcon(QIcon(':/images/update.png')) updateButton.setText("Update") updateButton.setTextAlignment(Qt.AlignHCenter) updateButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) queryButton = QListWidgetItem(self.contentsWidget) queryButton.setIcon(QIcon(':/images/query.png')) queryButton.setText("Query") queryButton.setTextAlignment(Qt.AlignHCenter) queryButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) self.contentsWidget.currentItemChanged.connect(self.changePage) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = ConfigDialog() sys.exit(dialog.exec_()) PyQt-gpl-5.5.1/examples/dialogs/configdialog/configdialog.qrc0000644000076500000240000000024712613140041024272 0ustar philstaff00000000000000 images/config.png images/query.png images/update.png PyQt-gpl-5.5.1/examples/dialogs/configdialog/configdialog_rc.py0000644000076500000240000022044512613140041024625 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 15:15:09 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x1b\x93\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x60\x00\x00\x00\x54\x08\x02\x00\x00\x00\xf2\x11\xa5\xd4\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd5\x03\ \x03\x0f\x27\x36\xc5\x11\x92\xc3\x00\x00\x00\x06\x62\x4b\x47\x44\ \x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x1b\x20\x49\x44\ \x41\x54\x78\xda\xed\x5c\x77\x90\x1d\x45\x7a\xef\x9e\x7d\x9b\x77\ \x25\xad\x24\x24\x84\x84\x04\x16\xc8\x46\x27\x8b\x24\x1d\x20\x71\ \x08\xec\x13\xb1\x10\xa7\x33\x20\xce\x1c\xa6\x08\x55\xa4\x32\x45\ \xce\xc9\x84\x3a\x52\x99\x60\xe0\x70\x51\x47\xb0\xe0\x4c\x2c\x63\ \x62\x95\x39\x71\x87\x41\x75\x60\x81\xc8\x06\xc3\x01\x26\x0a\x09\ \xa5\xd5\xe6\xdd\xf7\xa6\xfd\x9b\xfe\xba\xbf\xfe\xa6\x67\xde\xc2\ \x7f\xe7\xb2\x69\xa8\xa7\x79\xbd\xf3\x66\xba\x7f\xfd\xe5\xef\xeb\ \xd6\x69\x9a\xaa\xef\x5b\xfd\x96\x68\xad\x8d\x31\xf4\x89\x86\x2e\ \xbe\xa0\xc6\x9d\xfc\x59\xaf\x73\x94\xeb\xe2\xd3\x8a\xbf\x2d\x3e\ \x59\x76\x16\xdf\x28\x1f\x55\x6c\xd1\x0f\xa3\x47\x95\x8e\xad\xb4\ \x39\x5c\x18\xa6\xef\x49\x86\x1b\x78\x2b\x49\x92\x0a\x81\x0a\x68\ \x6a\xb5\x5a\x5f\x5f\x5f\xb5\x5a\x23\x6c\x19\x2c\xfb\x57\x7c\x2a\ \xfb\x69\xb4\xd2\xfc\x93\x22\xb2\xf5\xae\xe5\x02\xd2\x4f\xe8\x15\ \xc5\x7b\x4a\x57\x2b\xba\x3f\xfa\x2c\x5f\x79\xad\xe5\x0f\x8b\x74\ \x3d\x0a\x35\x34\x36\x56\x3a\x3a\x3a\xe8\xe1\x15\x26\xb9\x17\x5e\ \x78\xe1\xc4\x13\x8f\x9f\x34\x71\xfc\x48\xb5\xaa\xed\x03\xbe\x3b\ \xd8\xee\x65\xf6\xd5\x0e\xc2\xef\xf4\x33\xfb\x93\x3a\x2f\xd2\xdf\ \xf6\xca\x6c\xd1\x94\x76\x0f\x09\x4f\x8b\x16\x44\x7d\xd7\xd1\x78\ \x9c\x75\xa2\xbf\xf9\x66\xe3\x8a\x15\xcf\x6f\xbf\xfd\xf6\x19\x40\ \x0c\xea\xda\x75\x1b\xe6\xfc\xe9\xb4\xfb\xee\xba\x7a\xdd\x37\x9b\ \x1a\x2a\x15\xed\xa7\x9d\x01\xe9\x31\x70\x40\x64\xa3\xca\x2e\x0d\ \x5d\x65\xd7\xf4\x45\x65\xc4\x26\xfe\xb3\xdd\x61\x39\xed\x7d\xf8\ \x27\x29\x79\xaa\xbd\xd5\xd8\x6b\x42\x98\xee\x55\xf6\x3e\xf7\x0a\ \xd1\x89\x1e\x23\xa8\xc0\x5f\xe0\x15\x89\x98\xae\x76\x0b\x66\x1c\ \x7c\xc6\xa3\xa9\x3d\x72\x91\xb4\x42\x6b\x69\x6b\x3d\xf0\xa0\xe3\ \xba\xbb\x7b\xf0\x4c\x70\x59\x45\xfb\x06\x7e\x6b\x6d\x6d\x1d\x3b\ \xa6\x73\x60\x70\xa4\x52\xa9\x90\x00\xa7\x97\x1b\x71\x2d\x81\x4b\ \x6d\xbf\xfb\xab\x71\x3d\x58\x01\x5c\x27\x09\xe8\x33\xfb\x4c\x0d\ \xf5\x98\x24\x71\xf7\x18\x37\x5f\x4f\x3c\xf6\x83\xee\xf7\x13\x74\ \x30\x19\xed\x26\xa9\xc3\x8d\xfe\x4f\x8c\x71\x09\x4c\xee\x4e\x4f\ \x19\x86\x09\xdc\x78\x5c\x74\x41\xe1\x78\x8c\xd2\xc6\xd6\x36\xe0\ \xe0\xe4\x89\xd6\x95\x48\x2c\x55\xab\x69\xad\x96\x42\x22\x65\x5f\ \xfd\xb8\x8c\xbd\x16\x03\xcd\xf7\x6b\x95\xda\x2f\x86\xba\x53\x6d\ \x1f\x95\x7d\xa9\xa5\x16\xcf\xcc\x90\x30\xd4\x63\xef\x49\x04\xf9\ \xb8\x4f\xfc\xd5\x10\x65\xa4\xbe\xdf\xbf\x22\xbc\x54\x30\x23\x01\ \xad\x75\x10\x4c\x16\x35\x4f\x82\x8c\x8b\x11\xec\x9a\x75\x19\x4f\ \x41\x56\x41\x65\x5d\x39\x0d\x9e\x91\x4c\x5a\xb3\xa6\x8f\x71\x14\ \x24\x20\x34\x62\xfa\x61\xf0\xc6\x91\xbc\xe8\xd2\x9e\xcd\x78\x79\ \x59\xa4\xd2\x90\xc5\xed\xc6\xc1\xe2\xd8\x48\xf4\x28\x9e\xb6\x93\ \x27\x39\x3e\x0a\x64\x90\xeb\xcc\xa3\xeb\xfe\x94\x11\x27\x4d\x3b\ \x61\x2c\x12\xba\x76\x34\xc3\x84\xe3\xc9\x8a\x9e\x61\x69\x59\x79\ \x85\x60\x81\x4e\xf8\x0e\xfa\xb7\x22\xde\x4d\xec\x4d\x58\x1a\x02\ \xb8\x96\xe2\x2a\x55\xee\x67\x26\x40\xe4\xc8\xdb\x09\x15\x5a\x3b\ \x93\x23\x32\xea\x0e\x02\xdc\x0b\x20\xe5\x7e\xe0\xf0\x65\x2a\x20\ \x9b\x23\x2c\x01\xdd\x94\xe8\x88\xd4\x40\xa0\x8e\x2a\x92\x44\x6b\ \xc9\x4b\x9e\x8f\xfc\x12\xfa\x6b\xb7\x7a\xda\xcb\x9e\x94\x96\xd1\ \x51\x86\x13\x7f\xbc\xc2\x29\x2d\x1a\x33\x6f\xd0\x62\x44\x6e\xca\ \xcf\x12\x8c\xd6\xd6\xd6\xd2\xdc\xd4\x94\x34\x24\xb0\x00\xbc\xf0\ \x8c\x28\xcb\x4d\x8f\xbe\x18\x1d\x09\xa9\xc4\x38\xa1\x92\x26\x6e\ \xb6\xda\xbd\x9f\x49\x8e\x3f\x8d\xb8\x96\x9f\x61\xe1\xb5\xe0\x96\ \x46\xb0\x2f\xb8\x76\xb0\xaf\xaf\xa1\xa1\xa1\x44\x9f\x06\x50\x8c\ \xd7\x76\x1e\x22\x52\x06\x7e\x9a\xd9\xc4\x13\x42\x8e\x78\x2a\x23\ \x70\xe2\x28\x62\xac\x20\xa4\xed\x7c\x2d\x1d\x00\x9d\x34\x1d\x37\ \xb6\xf3\x83\x0f\x3f\xfe\xe4\xbf\xbf\x5a\xb3\x6e\x43\x47\x47\xe7\ \xe7\x5f\xac\x1d\xa9\xd6\x82\x02\x96\xba\xd9\x09\x5c\x65\x98\x86\ \xb5\x54\xe2\x42\x99\x93\x98\x16\x6a\x3c\x6f\x12\xc8\x07\x97\x3e\ \x27\xbb\x9e\x39\x73\x7a\x6f\x5f\xdf\xd4\x29\x5b\x4d\x9d\x36\xf9\ \xcf\x77\x99\x3b\xd2\xdf\x47\x7c\x2d\x9e\xc6\xe4\x60\x98\xcc\xe9\ \x4f\xa9\xb5\xe3\x9c\x74\x33\x29\x31\xb5\x14\xd2\x56\x92\x59\xbb\ \xcf\x4b\xb7\x4a\x64\x33\x90\xc5\x38\x71\x5c\xd7\xfd\x0f\x3e\xb9\ \xf2\xd5\x4f\x97\x2d\xfb\xeb\xd9\x53\x3b\xb6\xde\x7a\xeb\x1f\x35\ \x35\xd7\xb3\x4f\x82\x51\x67\x0a\x46\x45\xfe\x07\x34\x02\x1a\xb8\ \xbf\x70\xbc\x5c\x6a\x2e\x3a\xf9\x61\x82\x69\x95\x51\x79\x6a\xbe\ \xfc\xf2\x8b\x6a\x75\xe4\xf6\x7f\x7c\x74\x87\xed\x57\x9e\x73\xce\ \xa9\x43\x83\xbd\x09\x1b\x20\xe2\x51\xcc\x29\x26\x18\x39\x76\x29\ \x9d\xbe\xf4\x1c\xad\xd8\xc0\x28\xa8\x40\x92\x41\x72\x26\x69\x6a\ \x5a\x5b\x5b\xde\xff\xe0\xa3\xdf\xfd\xfe\x0f\xcb\xef\xff\xe7\xc6\ \x4a\xc3\xff\x42\x27\x60\xd6\xac\x99\xf8\x5c\xbc\xf8\xc7\x67\x9c\ \x71\xc6\x6b\xaf\xbe\xb6\xdb\xbc\xdd\x87\x07\xfb\x1a\x92\x84\x65\ \xbf\x09\x64\x9d\xd3\x27\x4c\x52\x16\x74\xe7\x1b\x38\x7d\x16\x16\ \xcc\xc8\x15\xae\x44\xf6\x29\x14\x5b\x5b\x6b\xcb\xef\xff\xe3\xcd\ \xc3\x7e\xf2\x57\x40\x07\xce\x47\x63\x63\x63\xa9\x57\x51\x74\x0b\ \x4a\xff\x3a\x8a\x9f\x51\xcf\x1d\x29\xf5\x2d\x82\xc8\xb0\x0d\x64\ \xde\xdc\xdc\xbc\xf4\xa7\x87\xff\xfb\x8b\xcf\xec\xfe\xc3\xbd\x8c\ \xe9\xb5\xe2\x2e\x9b\x66\x9a\xb7\x8c\x9c\x78\xf5\xac\xc7\xbe\xa7\ \x57\x9c\x10\x65\xd6\x42\x10\x1a\x9c\x64\x77\x00\x88\xd5\x3c\x2b\ \xaf\xa1\xa1\xda\x36\x53\xb6\xc9\x38\xb0\x52\x49\x92\x84\xdf\x94\ \xa6\xe9\x1f\x11\x20\xc8\x63\x0c\xc6\x59\x3d\xb6\x6d\xb3\xcd\x36\ \x2f\xf4\x0e\x1b\x33\x4c\xf6\x83\x12\xd2\x8a\x5f\x91\x49\xf1\x44\ \x13\xaf\x3a\x0e\x4a\x61\xeb\xd5\x58\xba\x39\x40\xb2\xd9\xa7\xc6\ \x3f\x80\x20\xcd\xcb\x20\xcf\xa9\xe8\x5d\xbf\xbe\xbb\xad\xbd\x43\ \x0e\x9d\x56\x0c\xd4\xf4\xc7\x65\xae\xe1\xe1\x61\xc2\xc8\x2d\x6f\ \x63\xa5\xa9\xc9\x79\x45\x04\xb8\x72\xae\x46\x50\xb7\x7d\x43\x43\ \x43\x23\x23\x9a\xbd\x89\x5a\xad\xd2\xd0\xd0\xd1\xde\xee\xe5\x51\ \x6a\x21\xd3\x19\xf3\x38\x4d\x6c\x02\x77\xe2\x15\x21\xaa\xe2\x74\ \x8c\xa9\x55\xab\xad\x6d\x6d\x13\x26\x4c\x30\x4e\xf3\x41\xf6\x1b\ \xa0\xf3\xf1\xc7\x1f\xaf\x58\xb1\xe2\xcb\x2f\xbf\x8c\x1c\xe8\x88\ \x04\x22\x7b\xb7\xae\x67\x5b\xdf\xe3\x8f\x68\xcd\x3a\x22\xc9\x56\ \x5b\x6d\xb5\xe7\x9e\x7b\xee\xbc\xf3\xce\x98\x6f\xf0\x75\x6a\x59\ \x44\xc2\x38\xc6\xb1\x36\xa4\xb3\xf6\xb2\x61\x37\x34\x75\xae\x7c\ \xe9\xa5\x5f\x5e\x7e\xdb\x8c\xad\x27\x8f\xc0\x6c\x6a\x6a\x4c\x1a\ \x1b\x9b\x3b\x3a\xd6\x6e\xda\xbc\x68\xf1\xbc\x65\x3f\x3b\x72\x78\ \x60\x73\xa5\x21\xf1\x53\x27\x15\x90\x91\x93\x15\x44\xce\xb6\xce\ \x6b\x31\xad\x89\x7e\xc1\x4c\x96\x08\x1d\xc7\x82\x70\x5e\x7f\xfd\ \xf5\x63\x8f\x3d\x76\xc6\x8c\x19\x63\xc6\x8c\xc1\x57\xd0\x6d\xc5\ \x36\xba\xc8\xe2\x26\xf6\x9a\xb8\x80\x2e\xa8\x9f\x7b\x12\xdf\xc8\ \xef\x63\xd7\xa1\x18\x8b\xa0\x97\xa6\xf9\xb6\x76\xed\x5a\x88\xe4\ \xf3\xce\x3b\xef\x80\x03\x0e\x00\x46\x44\x47\x78\xea\x17\x5f\xac\ \x51\xa6\x6a\xad\xad\x20\x3a\xbc\xa0\x69\xd8\xb0\xb9\x7b\x61\x5b\ \xd7\x31\x0b\x16\xf5\x34\xb7\xb4\x74\x75\x35\x8c\x1d\x3b\x76\xfa\ \xf4\x17\xdf\x7c\xe7\x9d\xf5\xef\xd2\x4f\x28\x90\xe3\xcc\x22\x8b\ \x8f\x57\x58\x6e\x6c\x15\x41\x8d\x86\x4d\x64\xe3\x98\x9f\x48\xb2\ \xd6\xd2\xd2\xb2\x7c\xf9\xf2\x1d\x76\xd8\x61\xf7\xdd\x77\x07\x91\ \x57\xf2\x8d\xe0\x00\x6a\x0c\x13\x77\xd2\x45\x11\xa6\x52\x8c\x18\ \x1d\xa2\x59\x89\x4e\x15\x44\xdd\xda\x3a\x6d\xda\xb4\x07\x1f\x7c\ \x10\x00\x49\xe7\x7b\xfd\xfa\x4d\xda\xcb\x65\x0c\x38\x35\x89\xf6\ \x7e\x9a\x45\xb0\xc1\x54\x1a\x06\x4d\x3a\x94\xd6\x54\xad\xda\x50\ \x1d\x69\x1b\x1e\xaa\xd6\xaa\x18\x97\x23\x5e\xcf\x9a\x19\xb3\x19\ \x1d\x44\xb5\x5f\xb5\x8a\x90\xb2\x56\x34\xb1\xcd\xef\x47\x80\x99\ \x00\xa3\x75\xeb\xd6\xc1\x1a\xda\xb2\x65\x4b\xf6\x4a\xd1\x30\x74\ \x42\x07\xf7\xe0\x02\x9f\xb8\xe6\xe9\xd1\x05\xfa\xf9\x93\x60\xd2\ \xa2\xe5\xd4\x8d\x98\x39\x1e\x45\x9f\xa9\x95\xa9\x9b\x36\x6d\xc2\ \x00\x70\x8d\x91\x4c\x9c\x38\x11\xeb\x84\xce\x31\x9d\x63\xa6\x4e\ \x9d\x5a\x1b\xa9\x42\x91\xb8\x91\xb3\xae\x76\x71\x3e\xf2\x0f\x54\ \xf8\x5f\x28\x07\xcf\x4c\x4e\x82\x5b\xce\x31\x41\xf7\xb3\xb3\x1a\ \x7c\x31\x0b\xa4\x16\xd6\x9d\x14\x43\x11\xa7\x10\xbd\x74\x76\x76\ \xe2\x82\x98\x8e\x0c\x02\xd0\x7f\x3d\x22\x92\x14\x44\x44\x54\x64\ \x31\x23\x16\x86\x00\x75\x8e\x8e\x52\x4d\x4d\x4d\x6d\x6d\x6d\x03\ \x03\x03\xf4\x15\xfd\xe8\x69\x6f\x6f\xcf\x6e\xd3\x0d\xc1\x1e\xb6\ \x3e\x8d\x0c\x01\xe8\x62\x23\x61\x2c\x8d\x1e\xcd\x9a\x50\xba\x77\ \x3a\xa8\x79\xa3\x0c\x87\x4a\xc8\x7e\x95\xc1\x6d\x9a\x8f\x94\x23\ \x98\x39\xc6\xfa\xe2\x8b\x2f\x76\x75\x75\x0d\x0e\x0e\xe2\x2b\x3a\ \x27\x4d\x9a\xb4\xcf\x3e\xfb\xf4\xf7\xf7\x37\xf8\x26\xa1\xa1\x4f\ \xdc\x46\x44\x44\xd7\x11\x05\x31\xdd\x45\x24\x46\x90\xb9\xd9\x89\ \xe8\x44\xea\xc2\x28\xc6\x4f\x3a\x21\x1b\xc7\xd2\x0d\xf9\x98\x8e\ \x33\xfc\x34\xbd\x31\xe3\xfd\x54\xcb\x99\x19\x19\x38\x93\x91\xac\ \x4d\x56\x94\xc1\x96\x09\x4e\xbe\xe4\xb0\xcc\x14\xda\xbc\x79\xf3\ \xa7\x9f\x7e\x3a\x65\xca\x14\x52\x28\x44\x3b\x18\x19\x44\xde\xd7\ \x5f\x7f\xbd\x7e\xfd\xfa\xa3\x8f\x3e\xba\xbb\xbb\x1b\xd4\xf4\xc4\ \x13\x4f\xf4\xf6\xf6\x1e\x71\xc4\x11\xf8\x5a\xc4\x88\xa0\x91\x48\ \x45\x10\x48\x80\x88\xb3\xc2\x92\x5b\x81\xc2\xe8\xf8\x96\x2a\x0f\ \x8f\x0b\x69\x78\x14\x9c\x03\xee\xfc\xf5\x60\x08\xf8\x88\x82\x9f\ \xa0\x4a\x8c\x61\x53\xc8\x06\xae\x0c\x05\x34\xdc\x82\x89\xb4\x0f\ \x85\x49\x82\x67\x6f\x58\x9b\x00\x0e\x50\x32\xaf\x21\x3e\x47\x46\ \x46\x20\x35\x31\x81\x93\x4e\x3a\x09\x7a\xed\xb3\xcf\x3e\x5b\xb8\ \x70\xe1\xec\xd9\xb3\x2f\xbe\xf8\x62\x58\x03\x4f\x3d\xf5\x14\xb0\ \x23\x34\x25\x67\x45\xba\xaf\xb4\x81\x4f\x99\x3d\x23\x8e\x66\x43\ \x31\x8c\xcd\xfd\xab\x69\xbc\x2c\x83\x48\x5e\x58\xb5\xe3\x04\x8d\ \x5c\x73\x1f\x58\x33\xec\xf9\x53\xb4\x46\xa8\x26\x17\xe5\xcd\xa6\ \x1c\xb4\x18\x45\x2c\xb4\x0f\xce\xf9\x06\x31\x0c\xce\x07\xef\x00\ \x0e\x1a\x1f\xc0\x42\x84\xff\xd9\x67\x9f\x05\x34\x40\xea\x90\x43\ \x0e\x79\xe0\x81\x07\xd6\xac\x59\x83\x6b\xc8\xce\x4b\x2e\xb9\xe4\ \xdd\x77\xdf\xfd\xfc\xf3\xcf\x81\xa0\x9c\x58\x51\x30\x8d\x02\x8d\ \xbc\x81\x51\x26\x0a\x2a\xc6\xf6\xb3\xa9\xfa\xd4\x4b\x10\x44\xec\ \x7c\x19\x1d\x22\x79\x3e\x6e\xe1\x6f\xd0\xc6\x8b\x5d\x6f\x23\xc4\ \xee\x6e\x22\x0c\x45\xe3\xfd\x65\x0a\xfa\x06\x19\x44\xaa\x84\x99\ \x02\xd7\xe3\xc6\x8d\x03\x73\x3d\xff\xfc\xf3\x98\xd5\x3d\xf7\xdc\ \x73\xca\x29\xa7\x40\xc5\xd0\x9f\x90\x30\x99\x3b\x77\x2e\x3b\x71\ \x91\x9a\xaf\x87\x4e\xd1\x74\x28\xa5\x23\xe6\x41\x11\xc6\xb2\x91\ \x54\x1f\x7d\x64\x1b\xd6\x73\x42\x3e\xa0\xe2\x22\x3d\xca\xb9\x68\ \x1e\x47\xcf\x9d\x84\xb2\xf3\xc5\x02\x8b\x71\x00\x53\xb9\x28\x58\ \x79\x96\x92\x55\x0f\x85\x44\x4e\x3f\xfd\x74\xd0\xcb\xd5\x57\x5f\ \xbd\x64\xc9\x92\xfd\xf6\xdb\x8f\xe4\x34\x2d\x38\x88\x4e\x5a\x89\ \xf4\xab\x06\xd1\x46\xc7\x48\xa2\x53\x34\x32\xa3\x0c\xb0\x63\x09\ \xa3\x83\x23\xee\x94\xb4\x71\x26\x5d\x08\x49\x73\x1c\x4e\x09\xc1\ \xcb\x94\xe1\x48\x82\xa2\x7f\xec\xd3\x05\x2d\xc6\x21\x49\x23\xc8\ \x47\x0e\x45\xe6\x3f\xb0\x8c\x60\xa8\xe3\x8f\x3f\x1e\x3a\x6b\x97\ \x5d\x76\x81\x7d\x44\x9a\x3e\x7b\xa2\xf7\x6f\x79\x4a\x72\x86\x0d\ \xf9\x26\x6d\x45\x16\x79\xb4\x00\xf4\x5e\x32\xbb\xa4\x6d\x19\x2d\ \x9e\x76\xb8\x38\x9f\xdd\xbb\xe3\x6e\xf2\x6c\x14\x29\x99\xc3\xf0\ \x4e\xaa\x8b\x2f\xeb\xe0\x03\xa5\xa9\x51\x79\xb3\xa3\x52\xe2\x4c\ \x89\xe1\x32\x40\x51\x52\x81\x97\x7a\xce\x9c\x39\x50\xea\x84\x0e\ \x4f\x06\xe6\x09\x99\x8b\x8c\x69\x3d\x8c\x98\x71\x84\x2f\x59\xe3\ \xaf\xfc\x40\x69\x3d\x15\xd3\xf0\x71\x44\x21\xcb\x2f\x79\x49\x4b\ \xf3\x0d\xa9\x04\xef\xaa\xeb\x20\x4d\x98\xf5\x88\x1c\xd9\xb0\x74\ \x32\x28\xf2\x11\x59\x3c\x8f\xc2\x65\x18\x37\x40\x81\x0c\x82\xb8\ \xc1\x05\x59\x40\x3c\x79\x40\x83\x3f\x41\xd9\x43\xb4\x93\xe4\xe2\ \xf5\x2f\x62\x54\xea\xb5\x44\xca\x4b\x1a\x96\xa6\x0c\x1e\x17\x96\ \x34\x3e\x25\x68\x9c\x9a\xae\x9b\xe7\xd5\x2e\xa8\xc8\xfa\x5e\x07\ \xcb\x40\x0b\xc1\x6e\xfd\xe4\x5c\xb8\xc3\x46\x21\x4d\x14\x32\xcd\ \x7b\xe1\x18\x25\x44\xcf\x82\x05\x0b\x1e\x7e\xf8\x61\x68\xab\xc9\ \x93\x27\x03\x11\x28\x2c\xf8\x6b\xf8\xc4\x35\x2c\xe9\xa5\x4b\x97\ \x3e\xf2\xc8\x23\x50\x64\x50\x73\xd2\xe4\xfb\x56\x8c\x22\xe2\x8a\ \x7e\x58\x1e\x1b\xf0\xdc\xc5\x01\x0d\x1f\xfc\x66\xb9\x22\xa6\xe3\ \x85\x34\xa7\x40\x94\x47\xc7\x27\x36\x28\xbd\xa7\x59\x1f\x26\x26\ \x97\xd6\xd0\xe4\xdf\x1a\x5d\xba\x54\xae\x41\x06\x23\x18\x72\xe4\ \x91\x47\xde\x71\xc7\x1d\xaf\xbc\xf2\x0a\xbc\x24\xe8\x78\x50\x0d\ \x22\x21\xe4\x70\x41\x2a\xc1\xed\xbe\xee\xba\xeb\x36\x6c\xd8\x00\ \xd4\xa4\x11\x2c\x27\xcc\x58\x34\xda\x16\xe1\x12\xfd\x84\xe9\xb7\ \x6c\x60\x21\x3a\xa1\x3d\x45\x68\x6f\x45\x07\xe2\xf0\x3e\x5a\x90\ \xaa\x85\x5a\x1c\xdf\x6b\xd8\x24\xac\xc8\x31\x90\xe4\x27\x57\x25\ \x92\x41\x32\x76\x83\xa1\x83\xb3\x10\xa0\x39\xfc\xf0\xc3\x9f\x7e\ \xfa\x69\x90\x09\x05\xee\x30\x49\x20\x72\xd5\x55\x57\xc1\x05\x99\ \x3f\x7f\xfe\xb9\xe7\x9e\x0b\x1d\x77\xc3\x0d\x37\x20\x96\x04\xd4\ \x48\xeb\x47\x8d\x61\x8a\x84\x5d\x3d\x6f\xb6\x14\x20\xc9\x62\xf9\ \xa2\x0e\xe3\xd3\x03\xb1\x1f\xa6\xbd\xed\x1d\xe5\xe6\x49\x87\x6b\ \x31\x8c\x28\x68\xef\x93\xfb\xc2\x50\x95\xe3\xe6\x21\x62\xb6\x40\ \x01\x18\xc1\xc9\x40\x0f\xd9\x78\x70\x35\x56\xad\x5a\x75\xc5\x15\ \x57\xdc\x7c\xf3\xcd\xd0\x6b\x50\x70\x60\xc6\xeb\xaf\xbf\xfe\x9a\ \x6b\xae\x81\xca\xa3\x52\xb6\x28\x42\xc6\xd4\x54\xf4\xbf\xbe\x33\ \xf9\x94\x42\xe3\x3b\x95\x09\x39\x0a\x9f\xee\xd2\x21\x6f\x6a\xa2\ \x08\x6f\x0a\x6f\xc3\x65\x86\x4c\x2c\x83\x1c\xbf\x92\xfc\x2f\xcb\ \xed\xc8\xd1\x10\xd7\x80\xd7\x20\x8c\x07\x7c\x83\x53\xb6\xd7\x5e\ \x7b\xcd\x9c\x39\xf3\xac\xb3\xce\x82\x07\x0b\xd6\x83\x91\xbd\xc7\ \x1e\x7b\xc0\xff\x00\x76\xa5\x15\x3d\x84\x0b\x19\xa2\x91\x4e\x28\ \xfd\x1a\x8b\x21\xe3\x92\x42\xa6\xbc\xb8\xcd\x33\x0c\x27\x33\x54\ \xc8\xc9\xc7\xf1\x6f\xbe\x9b\x12\x8b\xfe\xef\x41\x06\x59\x9b\x93\ \x49\x53\x95\x16\xb5\x45\x30\x49\x63\x87\x3c\x58\xb0\x18\xf8\x6e\ \xfa\xf4\xe9\x88\xfe\x21\x6a\x83\xaf\x00\x6b\xb7\xdd\x76\xbb\xe8\ \xa2\x8b\x60\x7c\x47\x28\xb0\x47\x8a\x06\xac\x8b\x30\x45\xc5\x74\ \x25\x14\xe4\xd6\xd3\xa5\x4f\xf3\xf7\x2b\xc3\x56\x8e\x0e\xae\x93\ \xb3\x1d\x85\x0c\xd1\x02\x1d\x67\x03\xaa\x30\xc7\xa4\xac\x2c\x8b\ \x7e\xaf\x22\x4a\x8e\x84\x51\xb1\x6a\x91\x2c\x17\xc4\x46\xc1\x77\ \xa0\xa0\x33\xcf\x3c\x13\x3a\x0e\xf1\xad\x0b\x2e\xb8\x60\xd6\xac\ \x59\xa0\xa3\xf1\xe3\xc7\x13\x0a\x4c\x35\x04\x0d\x18\x90\x00\xe2\ \xbf\x72\xbc\xad\x54\x14\xe6\xbc\x55\x1f\xdd\xf0\x5a\x9b\x61\x72\ \x6b\x4d\x20\xb2\xaa\x12\xf9\x09\x27\x9f\x72\x91\x90\x5c\x5a\xc4\ \x32\x4a\x24\x0c\x85\x26\x2b\x5f\xc9\xa8\x0e\xb2\x38\x07\xc2\xe8\ \x84\x13\x4e\x80\x60\x3a\xfb\xec\xb3\x21\xa7\xc0\x7a\x97\x5e\x7a\ \x29\x52\x34\x97\x5f\x7e\x39\x30\x62\x62\x61\xc2\xa9\xfa\x16\x61\ \x14\xd1\x5a\x09\x7d\xb9\x90\xa1\x62\xf3\x99\xd5\xb6\x11\x35\x59\ \xb2\x50\xc4\x57\x1e\xe5\x74\x5f\xae\x34\x8f\x4d\x05\x52\x23\x11\ \x3f\x07\xa8\xeb\xb7\x51\x30\xe2\x60\x20\x08\xe7\xd4\x53\x4f\x85\ \xcb\x0a\x09\x0d\x5e\x43\x78\xe8\xca\x2b\xaf\x84\x61\x09\x99\x8d\ \xc0\x00\x6c\xa5\x9a\x6f\x44\x3e\xa5\x18\xf1\x45\x69\xed\x2a\x2b\ \x65\xe7\xb1\x4a\x99\xe2\x53\x13\x0e\xaa\x9c\xc8\xe1\xbc\x60\xb0\ \x06\x73\x30\xf9\x68\x8f\xa3\xa0\xf0\x67\x56\xf0\x21\x52\x32\x5a\ \x05\xef\xe8\x28\xe2\x49\xc0\x08\x02\xe8\xa3\x8f\x3e\xba\xf7\xde\ \x7b\x11\x1e\x82\x65\x70\xed\xb5\xd7\x42\xaf\xdd\x77\xdf\x7d\xc0\ \x08\xce\x2d\xd3\xce\x88\x6d\x11\x46\x11\xbb\x31\x4c\xb1\x90\x8e\ \x94\x4c\xd0\xc7\x2e\x40\x48\x7a\x5b\x09\x44\xb9\xc4\xa7\xbc\x66\ \x58\x2b\x19\xed\x91\x51\x61\xed\x0c\x4a\x65\xd4\xa8\x65\xc7\x1c\ \xf4\x8b\xee\x29\xae\x36\x84\xf4\x69\xa7\x9d\xf6\xd0\x43\x0f\xc1\ \xb0\x86\xe7\x01\x50\x60\x19\x21\xb9\xf6\xe8\xa3\x8f\x82\xac\xa0\ \xf8\x24\x7f\x31\x3a\x74\xc1\xf2\xbb\x9e\x54\x12\x1c\x65\xa4\x2b\ \x9f\x23\x6e\x57\xff\x20\xe2\xd2\x14\x0b\x0b\x91\xb5\x42\xf1\x34\ \xfb\x2c\x1c\x0f\x62\x43\x5a\x19\xcf\x82\x05\x35\x36\x0a\x5b\x95\ \xea\x26\xea\xa4\xa9\x82\xb9\xee\xba\xeb\xae\x27\x9f\x7c\x12\xee\ \x08\x3a\x11\x3f\x7a\xec\xb1\xc7\x60\x61\x42\x1e\x81\xac\xaa\x85\ \xc6\x7a\x8d\x31\xa2\x0c\x47\xa9\x8e\xd3\x41\xbe\xd6\x29\x3f\xe7\ \x60\x4f\x5e\x74\x49\x22\xca\xd9\x3a\xbe\x74\x36\xae\x0f\x22\xfb\ \xc8\x05\x84\x74\x09\x1c\x3c\x3e\xba\x90\xb1\xab\xb4\x4e\x83\x30\ \x02\xd5\x80\x76\x80\x11\x22\x8d\x10\xdb\x07\x1e\x78\x20\xfa\xef\ \xbe\xfb\xee\x63\x8e\x39\x06\x5f\x17\x2d\x5a\x04\x11\x4e\x19\xed\ \x52\xf5\x2f\x25\x51\x39\x11\xf9\xb5\x8d\xec\x0f\x5f\x6a\xe3\x4a\ \x3e\x8b\xc6\x39\xa7\x77\x62\xfe\x32\xce\x2f\x8b\xeb\x83\xb8\x12\ \xcb\x18\x5f\x89\x57\xd0\xaf\x64\xec\xf2\x1c\x38\x33\x53\x4a\x41\ \x34\x37\x18\x47\x20\x13\x88\x67\x58\xd8\x97\x5d\x76\x19\x81\x82\ \x7e\xd0\xd4\x71\xc7\x1d\x87\xbf\xce\x9b\x37\x0f\x49\x01\x5c\x14\ \x9f\x10\x09\x6c\x0e\x12\xe5\x49\xc8\x95\x1d\xc4\x26\x24\xfb\xa5\ \xaa\xe0\xac\x86\xd0\x7e\x5e\x7f\x39\x6b\x28\x8d\x65\x50\x88\x01\ \xf8\xe0\xa3\x56\xc6\xd4\x11\xc1\x52\x00\x15\x49\x46\xae\x36\x73\ \x07\x1e\x0e\x75\x06\x8f\x0c\x00\x41\xa9\xbd\xf3\xce\x3b\x80\x03\ \x90\xdd\x76\xdb\x6d\xb7\xdc\x72\xcb\x7b\xef\xbd\x07\x87\x16\x84\ \x56\x14\x43\xb5\x42\x2b\xb1\x2d\x4c\x48\x6a\xe4\x7b\xdd\x74\x95\ \x74\x35\x42\xfd\x1a\x33\x65\x2e\xdd\xe8\x73\x5e\xba\x04\x20\xc3\ \x9e\x98\x11\xe2\x2b\xef\x13\x44\xe8\x44\x48\x45\xe8\x44\x2b\x0f\ \xa7\x04\x6e\xed\x39\xe7\x9c\x73\xfe\xf9\xe7\xc3\xfb\xc7\xfc\x21\ \xa7\xa1\xf5\x6f\xbd\xf5\x56\xe2\x32\x5b\x85\x31\x42\x91\x7f\x36\ \x1d\x8b\xa2\x3a\xd2\x62\x9a\x22\x3f\x69\x08\x6c\x84\x30\xaa\x96\ \xda\x3f\x57\x36\xc8\x79\x10\x0e\x92\xf0\xbe\x95\xbc\x51\xa0\x92\ \xa8\x3e\x48\x3b\x4b\x51\xd7\xb3\x7d\x8a\xaa\x37\x92\x14\x52\x76\ \x70\xc3\x6c\xf1\x04\xb0\x12\x92\x6b\x88\x93\x20\x59\xd4\xd3\xd3\ \x03\xaa\xd9\x6e\xbb\xed\x20\x8c\x2e\xbc\xf0\x42\xb0\x21\x44\x15\ \xe5\x36\x10\x90\xa4\x00\x40\x91\x88\x4a\xb4\x18\x19\x3c\xd6\x4f\ \xd2\xdc\xe1\xcd\x19\x76\xbb\xf8\x5e\x4e\x92\x46\xe5\xe4\x4a\x09\ \xe7\x5e\x44\x0d\x65\x7d\x90\xcf\x81\xf8\xa0\x74\x5a\x06\x8d\x94\ \x41\xdc\xc3\x9f\x94\xea\xe3\x64\x71\xbc\xf7\x2a\x49\xa0\xf8\x11\ \x09\x01\xb1\x00\xa3\x3b\xef\xbc\x13\xc4\x02\x91\x04\xd7\x1f\xce\ \x1a\x8c\x6f\x10\x0e\x8f\x18\x4e\x2f\xae\xa9\x87\x20\x26\x91\x57\ \x12\x0d\x12\x51\x30\x2d\xa4\x84\x8f\x3c\x2b\x59\xa0\xc8\xa9\x09\ \xa5\xeb\x6f\xbd\x12\x5f\x2b\xe2\x26\xe3\x64\x8f\x36\xa5\x4e\x50\ \x11\x0e\xd9\xc3\x49\x74\xfe\x2c\x6a\x5c\xf2\x6c\x11\x5a\x43\x40\ \x12\xe4\x03\x53\xfb\xf6\xdb\x6f\x07\x59\xed\xbf\xff\xfe\xe8\x7f\ \xf9\xe5\x97\x41\x41\x04\xc4\xc6\x8d\x1b\x1f\x7f\xfc\x71\xd8\x99\ \x80\x52\xea\xfb\xa2\x0c\xd2\xb2\xfe\xc0\xa8\x7c\x70\x42\x99\xbc\ \x59\xac\x44\x69\x43\xe9\x66\x37\xf9\x93\x62\x7d\x90\xab\x96\x35\ \xba\x64\x07\x8e\x14\xd2\x04\x81\xcc\x0e\x33\xc9\x94\xa2\x13\x01\ \x04\x67\x0d\x32\x68\xdf\x7d\xf7\x05\x46\xc8\x1d\x21\xa2\x06\x38\ \x00\xd9\xde\x7b\xef\x4d\x3c\x05\xaa\x01\x97\x41\xcd\x41\x42\x21\ \x2a\x00\x8c\xd8\x71\x2b\xd9\xfc\xc4\x01\xb3\xfc\xa8\xdd\x8a\x1b\ \xc3\x2a\x3e\xbf\x55\xc0\x48\x5a\x11\x4e\x78\xd8\x1f\x12\x82\xf6\ \x62\xab\x88\x77\xe2\xca\xdc\x88\x74\xd4\xc6\x32\x28\x12\x1c\x45\ \x07\x02\xf3\xc7\x1b\x81\x11\x08\x07\x29\xc6\x9b\x6e\xba\x09\x1a\ \x0d\x74\x04\xee\x43\x08\x09\x60\xe1\xfa\xab\xaf\xbe\x82\x6c\x42\ \x32\x12\x6e\x0a\xe4\x11\x7e\xc2\xa2\xad\xc4\x9b\xd7\x4a\x9a\x7f\ \x52\xa4\xfa\xe0\x57\x08\xf0\x70\xb9\xb6\x8c\x0c\x3a\x2d\xee\x2c\ \x1d\xa3\x85\x43\x9f\xe4\x73\x26\x1c\xbb\x57\x45\xa3\xb9\xe8\x22\ \x45\x3d\x91\xde\x91\xce\x7a\xd1\xa5\xc0\x93\xe1\xac\x21\xa3\x8f\ \x0b\x48\xe8\x28\xad\x84\x06\xd5\x76\xd8\x61\x87\xe1\x4f\x30\x11\ \xf8\xe7\xf5\xac\x44\x97\xef\xd4\xf9\xf0\x9e\xf1\x8a\x9d\x02\xc9\ \x21\x30\xc4\x81\x1f\xbe\xc3\xe9\x2f\xad\x83\x4f\x17\x0c\xc5\x42\ \xd1\xac\xb4\x13\x63\x19\xc4\x17\x5c\x7a\x21\x45\x32\x5f\x73\x78\ \xa8\x34\xbd\x45\xb9\x30\x48\x1c\x88\x67\x96\xee\xbc\x06\x59\x29\ \x72\x5b\x1b\x2e\x20\xad\xc0\x6b\x4c\x7d\x24\xa4\x4b\xbd\x79\xde\ \xee\x14\x2a\x38\x74\x70\xcf\xa5\xa8\x16\x5b\x1f\x72\xfe\x89\x0e\ \x31\x55\x51\x26\x24\xeb\x83\x9c\x59\xe1\x37\x63\xd5\x53\xf0\x04\ \x90\x14\x3d\x2c\x74\x18\x26\xde\x3f\x51\x44\x47\x02\x44\x80\x4a\ \x15\x4e\xf2\x18\xe8\xdc\x78\xe3\x8d\xa8\x87\x3c\xe8\xa0\x83\xa0\ \xe6\x98\x43\xb9\x94\x2b\xcf\x68\x32\x14\x9d\x33\x91\x95\xe3\x2f\ \xad\xf2\x51\x31\x57\x7b\xe0\x92\x14\x85\x7d\xc3\x2e\xa5\xa1\xe2\ \xfa\x20\x1f\xe0\xe5\x00\x66\x2c\x62\xd9\xf0\xd1\x3a\xde\x82\xa3\ \x0a\xdb\x5c\xe5\x3a\x73\xd5\x1e\x57\x40\x30\x40\x98\x39\xbe\x92\ \x59\x48\x37\x40\x1e\x01\x1d\x60\xf4\xc1\x07\x1f\x90\x8f\x02\x8c\ \x88\x7f\xeb\xec\x50\x75\x49\x67\x23\x77\x66\x0a\x3b\x0e\x71\x78\ \xa0\x5e\xb3\xff\xd3\x82\x60\x79\xbd\x9e\x2a\xd1\xf1\x4a\x40\x1a\ \xd5\x28\x12\xdd\x58\x4f\x35\xcf\x62\xac\xa1\x98\xce\x8b\xea\x9c\ \xf2\x65\x04\x07\xbe\x62\xce\x9c\xcf\x91\x14\x14\xa5\x2e\xf0\x13\ \xe2\x32\x92\x4a\x60\x28\x18\xd6\x60\xbd\x65\xcb\x96\x41\xf4\x20\ \x3b\x02\x74\x16\x2f\x5e\x0c\x2b\x9c\x1e\x52\x2e\x83\x72\xa6\xaf\ \x50\xde\xb6\x66\xac\xb3\xb9\x79\x42\x7b\x3b\x8a\x5c\x5b\xc6\x8c\ \x41\x95\x6b\x63\x57\xd7\x38\xe4\xa9\xbe\x89\xed\x1f\x11\xe7\x0f\ \x69\x9f\xb8\x46\xd1\x28\x5f\xfd\x21\x62\xd2\x7e\x27\x62\x95\x25\ \x45\x71\x0b\x64\x29\x67\x49\x16\x93\xb4\x23\x13\x90\x08\xa4\x41\ \xd9\x3f\xf3\xcc\x33\x87\x1e\x7a\x28\xf4\x1a\x3a\x11\xae\x45\x31\ \x34\x3a\x41\x3e\xf0\x66\x57\xaf\x5e\x8d\xb0\x91\x34\xb8\x0a\x32\ \xc8\xe5\x20\x74\x7e\x8f\x33\x8d\x73\x78\x68\xf8\xb9\x0f\x3f\xdc\ \x54\x49\x06\x92\x86\x4a\x5b\x5b\xd2\xd2\xd2\x31\x61\xfc\x1f\xbe\ \x5a\x3b\x7d\xa7\x09\x56\xf9\xa5\xc6\xe8\xd8\x60\xc8\xd7\x28\x26\ \xd2\x50\xd4\x6e\x9f\x47\x88\x9f\xd0\xc4\x10\x30\x45\x1e\x99\x8a\ \x58\xeb\x39\x13\x91\xe6\x8a\x22\xaa\x45\xad\x4f\x0d\x28\xa0\x5e\ \xef\xb9\xe7\x9e\x43\x14\x0d\x71\x7e\xbc\x11\x51\x91\xb7\xde\x7a\ \xeb\x8d\x37\xde\x20\x64\x51\x3c\x4e\x05\xad\x1c\x45\x2b\xb7\xa4\ \x4d\x8e\x04\x54\xe6\xdc\xeb\xc1\x81\xc1\x5d\xe7\xcc\x7a\xbf\xa5\ \x92\x2e\xdc\xbb\x71\xfe\x7c\x3d\x7b\x76\x75\xc6\x8c\xc1\x09\x5b\ \xbd\xf2\xfe\xbb\x7b\xce\x9f\x33\x3c\x30\x24\x76\x12\x6a\x2f\xcb\ \xec\x85\x50\x4d\x15\x59\x1f\xe4\x6c\xab\x3c\x7f\x61\x4c\xf0\xb6\ \x91\x6b\xa6\x0a\xe9\xd1\xab\xe8\xa5\x00\x92\x45\x73\x32\x31\x2f\ \x73\x81\x98\x33\x9c\xaf\xa3\x8e\x3a\x0a\x21\x47\xe0\x82\x57\x80\ \xcb\xd0\x8f\x20\xe4\xc9\x27\x9f\x8c\x52\x36\xa9\xe6\xea\xa5\x55\ \x5d\xf9\x9c\xf6\x01\x7b\x5f\x45\xd6\xdf\x3f\x30\x7b\xe7\x9d\x7e\ \xbc\x70\x6e\xb3\x49\xfe\x72\xff\xc5\xdd\xdd\x5b\x20\xda\xfe\xf3\ \xbd\xff\x5a\xf0\xc3\x9d\xe6\xcf\xdf\x79\xd3\xc6\xee\x24\x5b\x83\ \x90\x23\xb4\x3a\x30\xb5\x9b\x0e\x55\x4e\xcd\xe7\x4d\x74\xc5\xa5\ \xc0\x72\x97\x06\x32\x7f\x94\x1d\xe5\x2c\x6b\x3d\x73\x99\xd5\x56\ \xa4\xbf\x64\x8d\x9a\x6c\xe0\x26\xc8\x07\x64\x8a\x60\x25\xd2\x63\ \xc1\x62\x58\x09\xa2\x3e\x26\x19\x0e\x06\x15\x17\x24\x8b\xe0\xd8\ \x5a\x4c\x4d\x1b\x83\xbd\x2b\x8a\xd7\x0d\xf5\x0e\x2c\x3b\xf2\xc0\ \x2b\x7f\xb1\x7c\x9f\x45\x7b\x83\x92\x51\x29\xf1\x9b\xdf\xfc\xdb\ \xdf\x1c\x85\xeb\x54\x89\x4d\x77\x89\x71\x85\xbd\x76\xeb\x4f\x28\ \xee\x88\xed\x20\xb6\x2c\x64\x56\x8c\x30\xc2\x58\x69\xd0\x45\x8b\ \xae\x28\x77\x8a\xe8\x70\xed\x53\x94\x4a\x96\x5b\x54\x10\x0c\x91\ \x81\x4a\x2a\x15\x65\xa5\x4e\xe2\x0f\x77\xc6\x32\xc8\x55\x8a\xa5\ \xb4\xb0\xe4\xd6\x5b\x01\x9d\x3d\xbf\xaf\xb7\x7f\xd7\xdd\xe6\x4e\ \x9d\xd2\xb1\x6a\xd5\xea\x03\xf6\xff\x8b\xd5\xaf\xbf\xd5\xd2\x34\ \xb4\x60\xc1\x3c\x6c\x8b\x07\x71\xfb\x70\xad\xfb\x87\xca\x5c\x49\ \x02\xe7\xec\x20\xb1\x55\xc3\xc7\x21\xf3\xc4\x0c\xb2\x07\x97\x91\ \xbd\x5b\x1a\xd6\xa3\x42\x7a\x96\x59\x5c\x54\x5f\xba\x3f\xa3\x58\ \x98\xc0\x6b\x50\x52\x6b\xe1\x01\xa2\x12\x75\xb0\x24\x55\x8e\x5a\ \x04\xf5\x96\x9e\x1e\x08\x75\xec\xf9\x19\x1a\xae\x6a\x0e\xfa\x39\ \x13\x28\x25\x8f\x61\x78\x70\xf0\xe7\xcb\x0e\xba\xf9\x97\x4f\x1e\ \x7d\xf4\xcf\x7e\xfb\xdb\x15\x4b\x0e\x5e\xe8\xf6\xe6\x1a\x63\x4c\ \x6e\x53\x28\x3b\xb3\x5a\x95\x45\x14\x4d\xa8\x1c\x51\xc5\xc9\x83\ \xec\x11\x09\xc4\x02\x16\xab\x58\xa2\x52\xf1\x62\x21\xe2\xb7\x16\ \x25\x36\xfa\x26\xcb\x5d\x65\x23\x70\x57\xae\x5c\x89\x18\x08\x52\ \xd8\xec\xb5\xe2\x02\x1c\x1a\x85\xa2\x8d\x0f\x25\x12\x88\xbd\x3d\ \xbd\x7b\xec\xb9\xeb\xa4\x09\x4d\xf7\xdc\xbb\xbc\x31\xe9\xdf\xe7\ \x47\xf3\xb7\x6c\xe9\xc9\x24\xa3\x8a\x67\xea\x7f\xad\xa5\x60\xaa\ \x98\xa8\x74\xc6\x10\x23\x24\xfc\x63\xd2\x62\xd0\x35\x70\x20\xdf\ \x7e\xfb\x6d\x62\x07\x0a\xee\x48\xba\x28\x25\x90\x62\x85\x46\xc4\ \x5c\xa5\xa7\x9f\x14\x33\xda\x74\x1b\x12\xd9\xa8\x8a\x84\x4d\xc4\ \x88\xd4\xaa\xb5\x3f\xd9\x7e\xdb\x4a\x43\x45\xa5\x43\xaa\x41\x07\ \xab\xc8\x09\x6d\x37\x4f\x28\xfb\x63\x7f\xbe\xe4\xe0\x9f\xfc\xed\ \xa3\xbf\xbe\x1e\x9b\x16\xd2\xd4\x88\x64\x7d\xd0\xeb\x21\x55\xa4\ \x83\xeb\x1b\xd7\x07\x79\x62\x1e\x66\x82\xe7\x08\x19\xe2\x7e\x1b\ \x6d\xe3\xd1\x73\xfc\xcc\x9f\x9e\x90\xe6\xb6\x8a\xe4\xed\xcc\xe2\ \x3e\xc2\x52\xa1\x5b\x6f\x27\x22\xe2\xb3\xd0\xa4\xb0\x89\xc8\xa4\ \xe4\x01\xb4\xb4\x34\xdb\xb2\x15\x27\x7e\x78\x0b\xb9\x0f\x13\x19\ \x5b\xcd\x34\xb4\xe3\x0e\x33\xfe\xe1\xef\xcf\xfd\xc1\x0f\x76\xec\ \xeb\x1f\x00\xad\x7b\x44\x52\xc1\x43\xc6\x17\x00\x1b\x2d\xaa\x94\ \x72\x11\x45\xb2\xb6\xb2\x43\x3c\x5a\x2a\x70\xa6\x77\xfa\xb3\x59\ \x52\x4e\x23\x0a\x01\xe2\xdf\x76\xdb\x6d\xa3\x3d\x98\xd1\x6c\x8b\ \xdb\x30\xa3\x32\x4d\x56\xfc\xdf\xba\xa1\x2e\x7f\x66\x46\x15\x84\ \xcc\xc2\xde\xed\xf1\xce\xf6\xd4\xd5\xfc\xb6\x68\x13\x42\xa9\xda\ \x57\x27\x7a\x47\x15\x76\xdb\xd2\x25\x8b\xfb\xfa\xfb\x53\xca\x7f\ \x38\xeb\xc9\x09\x2d\xde\xb3\x9d\x3d\x20\xf5\x85\xb1\xd1\xa6\x5e\ \xa3\x43\xb8\x7a\xec\x98\xf6\xe1\xa1\xa1\x28\xaf\x46\xaa\x1a\x3c\ \xff\xad\x00\x45\x29\xaa\x88\x82\x46\x3f\xdf\xa7\x14\x20\x57\x89\ \xe2\x0b\xc9\x5d\x54\x53\xa9\xee\xee\xcd\x80\x8e\xf4\x03\x17\xcd\ \x5b\x03\x19\x84\xe1\x26\xcb\x16\xce\x96\x9e\xde\x24\xf1\xa7\x2a\ \x50\xd2\x5d\xe5\x23\x91\x5e\xf6\xc8\xc8\x49\x45\x3a\xc5\x78\x24\ \x4a\x68\x87\x6b\x66\xca\xe4\xf1\x2f\xbd\xb6\xfa\xa7\x4b\x0f\xdb\ \xd2\xbd\xc5\xa6\x11\x6c\x46\x4c\xf1\x81\x0d\x8a\x92\x0b\xd6\x58\ \x0f\x47\xf4\x98\x5c\x5e\x45\xf1\xcd\xc6\x67\x22\xd2\xe0\xe8\x66\ \x4f\x08\x47\x6b\x14\x8f\xfd\x71\xbb\xdd\xe4\x14\xe8\x28\x00\x7a\ \x66\xb6\x54\xe3\xbb\xc6\xc3\xa1\xdd\x71\xe6\x34\xa9\x82\x74\x38\ \x01\x87\x4f\x79\x71\xb1\x6a\xda\x37\x1e\x16\x49\xeb\x28\x4c\x1b\ \x2a\x18\xc5\x81\x03\x95\xa2\x08\xe8\xe9\xe9\xdd\xf7\x47\xf3\x1f\ \x7f\xe6\xe6\xbb\x7e\x75\xdf\xc1\x07\x1f\x90\x55\x46\x65\xf5\x87\ \x15\xeb\x97\xa4\x14\x84\xac\x77\xba\x94\xaf\xca\xd1\xa5\xe7\x1d\ \xf9\xc3\x0e\xc8\x2d\x4e\xf9\x81\xfc\x58\x25\x8e\xf5\x91\x50\x3b\ \xbd\x61\x1f\x0e\xd7\x25\x3b\x02\xaa\x96\xfe\xcb\xbf\x3e\xb5\xea\ \x95\xdf\x1d\x7f\xeb\x85\x5b\xb6\xf4\xea\x24\x09\x79\x51\x2d\xd2\ \x15\x5c\x3f\xe4\x4f\x10\x32\x26\xde\xe0\x18\x8d\x9f\xcb\x38\x9d\ \xa1\x18\x6b\x19\xbf\x83\xe1\xef\x2e\x3c\xf1\x57\xff\xf4\xc4\xc3\ \xbf\xfe\xac\xb7\x6f\x18\x35\x3e\xbd\x7d\x83\x23\x4e\x3a\xfa\x62\ \xd9\x42\x9d\x9e\x74\xaa\xb5\xdb\xac\xaf\xa3\x1b\xb8\xdf\x88\x03\ \xa8\x9c\x10\xd1\xf9\x2c\x68\x38\x17\x2c\xec\x63\xc3\xf7\x89\x13\ \xc6\xae\xfd\xfa\xeb\x71\xe3\x3a\x36\x6e\x58\x73\xd5\xa5\x27\x75\ \x76\xb4\x0f\x0c\x0c\x3a\x31\x97\xdd\x9f\xe6\xdc\x0e\x4b\xfd\x1c\ \xe5\x0a\x96\x8e\xdf\x07\x5c\xc8\xc7\xe6\x8f\xc1\x91\x42\x9a\x69\ \x0b\x7c\x0a\x5d\xde\xd9\xd9\x71\xe9\xf9\x27\xc2\x12\xeb\xe9\xe9\ \x03\x3d\x6f\xd8\xd8\x2d\x75\x16\xbd\x21\x3a\xbb\x27\x3a\xf1\x48\ \xe7\xcf\xf7\x50\xf5\x0e\x43\xe2\xa3\x10\x7c\xa5\x93\x32\xf9\x63\ \x80\xfc\x99\x1e\x14\xea\x9b\x38\xb1\xab\xb1\xa9\xb1\xbd\xad\x6d\ \x5c\xd7\xb8\xc1\x81\x21\x38\x5c\x09\x93\x8f\x88\xe5\xa8\x3a\xe5\ \x0c\x85\x32\x58\x1f\x67\x65\x1b\xca\x59\x3a\x62\xdf\x7c\xc8\x2b\ \x86\xd0\x6c\x02\xf7\x79\xfd\xc6\x6e\x30\x17\x22\x12\x78\xe8\xe4\ \xc9\x93\xf8\xf8\x17\xe3\x76\x5b\x05\x1f\x91\x8f\x94\xf1\x7f\x55\ \x7c\xf2\x06\x5f\x28\xd9\x13\x9d\x7c\x26\xa3\xe4\xf9\xfd\x39\xf2\ \x1e\x9a\xd1\x48\xad\x9a\x05\xc1\xb0\x66\x1b\x36\xc3\x5b\x20\x93\ \x2f\xf1\xd9\x54\x3e\x57\xc9\x17\x13\xba\xca\x27\x25\x22\x87\x9a\ \x37\xb6\x98\x20\x9b\x85\xaa\xcf\x95\xd2\x57\xe4\x81\x46\x81\xf0\ \xec\x0d\x95\xcc\x5e\x30\x1c\xf4\xcb\xef\x76\x08\x87\x63\xc8\xe9\ \xe6\xfa\xf3\x40\x14\xcf\x44\x08\x50\x16\xb1\xa8\xb7\x17\xdf\x1d\ \xf8\x65\xbd\xa4\x84\x8e\x50\x32\x3a\x1c\x65\x42\x4a\xcc\xe8\xb0\ \x89\x25\x7f\x64\x47\x20\x4f\xef\x52\x18\xa1\x51\xb8\xb4\x8a\x83\ \xdb\xf2\xfc\x20\xa2\x1f\x87\x91\x2a\x64\xfb\x8b\x47\x74\x89\x23\ \x6b\xc2\x4e\x0e\xfb\xaa\xa4\x8c\xa1\x74\x01\x23\xad\xcb\xce\x22\ \x48\x74\xb1\xa6\x34\x7c\x0d\xdb\x8f\x4d\x70\xb9\xbc\x9f\xa4\x45\ \xdc\xde\x1f\xea\xe2\xe1\xf3\x9e\x01\xef\xa2\xe3\x84\xac\x51\x74\ \x84\x10\x6b\xb8\x50\x50\x94\xab\x0f\xb2\xaa\x37\x1d\xc9\x82\x5b\ \x90\x35\x55\xbf\xdf\xd5\x1b\xa8\x9e\xb3\xe4\x71\x5d\x8a\xfb\x43\ \x2c\xd8\xf3\x5c\xa2\x4d\x38\x03\x2a\x20\xc2\x0f\x31\xa6\x70\x2c\ \x5b\x38\x33\x8f\x8d\xbd\xfc\x5e\x64\x95\x3f\xa0\x88\xce\x8b\x8a\ \xf6\xac\x98\xc0\xcb\x2a\x6c\xcf\x54\x2a\x36\xdc\x59\xc4\xd9\x7b\ \xd3\x60\xc7\x62\x57\xbd\xf2\x25\x69\xd1\xf9\x41\xaa\xa3\xbd\x6d\ \xfc\xe4\x89\xa4\xd7\xb5\x14\x37\x7e\x43\x91\xc4\x28\x09\xa7\x74\ \xb9\xd3\x65\x58\x54\xeb\x70\x24\x90\x16\x87\x66\xf1\xf1\x7e\xc6\ \x1d\x1e\x16\x86\x5a\xe6\x9a\x89\x7e\x93\xff\x1a\x12\x80\xca\xa8\ \x1c\x62\x05\xcd\x67\x4c\x4e\xae\x99\x42\xb1\x47\x48\xfa\x90\x1d\ \x62\x74\x5b\x2b\x55\xc2\x05\x3b\x88\x73\x26\x2f\xbc\xb4\xea\xe2\ \x8b\x6f\x84\xda\x62\xe7\x20\x1c\xd0\x66\x0a\x87\x0f\x71\x86\xc8\ \x27\xdc\x74\xfe\xac\x22\x41\xc7\x12\x02\x3e\xae\x47\x8b\x19\xe9\ \x78\xe2\x65\xe7\x33\x69\x79\x48\x92\x2a\x48\x81\xf8\xfc\xca\xd8\ \x68\x50\x75\x76\x31\x45\x65\x0b\xcd\x4d\x8d\xab\x5e\x7d\x93\x36\ \xfb\xa5\xf6\x70\x3e\x17\xc4\xf9\xe4\x93\x4f\x96\xdf\xff\x40\x7f\ \xff\xa0\x12\x34\x6b\x72\x95\x43\xf2\xb3\xce\x39\x97\xb2\xc7\x94\ \x1e\x57\xc5\x47\x3e\x29\x3e\xab\x30\xd6\xc4\x4c\x80\x26\x67\x61\ \x09\x1b\x2a\xf7\x59\xe7\x20\x4f\x2d\x7f\x58\x34\xd6\xea\x1d\x18\ \x8a\x1b\xc6\x74\x76\x9c\x76\xda\xa9\xb4\x71\x5b\x97\xef\x81\xf8\ \xbe\x95\x1e\x76\xcb\x81\xf1\xc2\x61\xb7\xba\xf4\x2c\xa5\xff\xab\ \x87\xdd\x52\x5a\xdc\xbd\x82\x03\x9a\xf1\x46\xa2\xff\xdf\x00\x85\ \x4d\x60\xdf\x9f\x48\x3e\x7a\x4b\xbe\x87\x60\xf4\xf6\x3f\x17\x5c\ \x8a\xe5\x6a\xba\xb8\x51\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x08\xdd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x60\x00\x00\x00\x55\x08\x00\x00\x00\x00\x93\x44\xbe\xfa\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd5\x03\ \x03\x0f\x28\x2b\x21\x8f\xe2\xd5\x00\x00\x00\x02\x62\x4b\x47\x44\ \x00\xff\x87\x8f\xcc\xbf\x00\x00\x08\x6e\x49\x44\x41\x54\x68\xde\ \xb5\x59\x5b\x88\x24\x57\x19\xfe\xbe\xff\x54\x4f\x4f\xcf\x65\x67\ \x76\x76\xa2\x4b\x82\x6c\x92\x85\x44\x9f\x64\x4d\x34\x3b\xe3\x85\ \x40\x1e\x5c\x21\x0f\x01\x03\x89\x20\x08\x21\x5e\x30\xd3\x1b\xf0\ \xb2\xa2\x71\x46\x10\x82\xf8\x20\x28\x44\x1f\x0c\x98\x18\x42\x0c\ \x2e\xae\x04\x0c\x84\x3c\x24\x2f\x31\x18\x44\xcc\x4c\x54\x96\xc4\ \xfb\x0d\x13\x33\xbb\xd3\x3b\x97\xde\x9e\xae\x3a\x9f\x0f\xa7\xaa\ \xba\xab\xbb\xfa\xb2\x93\xf8\x33\x33\x7d\xea\xfc\xf5\xf5\xd4\xf9\ \xcf\xff\xfd\x97\x53\xa6\x5c\x92\x44\x49\x36\x90\x92\x70\x9d\x24\ \xc9\x5b\xd2\xcb\x20\xc8\x7b\xef\xbd\x97\xbc\xb2\x81\xf7\x0a\xd7\ \x52\xaa\x3d\x90\x1e\x90\x89\xa2\x99\x99\x99\x73\xe6\xb2\x81\x99\ \x0b\xd7\xce\x85\xb9\x83\xe9\x4d\x34\x8a\x3b\xe7\xd7\x37\x36\x36\ \x36\xd6\xd7\x37\xd6\x37\xd2\xc1\xc6\xc6\x7a\xb8\x5e\x5f\x0f\x73\ \x07\xd1\xbf\x7c\x7e\x9b\x32\x24\xf8\xc9\xa9\x2f\xaf\xd4\xeb\xf5\ \xfa\xe9\x7a\xbd\x5e\x5f\x59\xa9\xd7\x4f\xd7\xeb\x2b\xa7\xc3\xcc\ \xe9\xd3\xa7\x57\xea\x2b\x2b\xf5\x83\xe8\xcf\x9c\x7a\x12\x89\x41\ \xd8\xba\xf3\xd9\x73\x4f\xbd\xfd\x72\xee\xd9\x3b\xb7\xc2\x1e\x58\ \xbc\xbf\x37\x9e\x34\x9b\xcd\x66\xb3\x39\xe6\xcd\x7b\xfb\xb1\x89\ \x46\x10\xcc\xf7\x29\xec\x10\xd3\x09\xa6\xbf\xd9\xd6\x51\x89\xf7\ \x5e\x64\xba\xb5\x05\x7d\x19\x1e\x84\x49\x02\x47\x08\x40\xaa\xb5\ \x7b\xa9\xd1\xb8\xd4\x68\x34\x1a\x8d\x4b\xdb\xcd\x98\xe4\x48\x1c\ \x21\x19\x49\x8d\x12\x5a\xbc\xb3\xb5\x7d\x39\xf6\x22\x49\xf9\xb8\ \xb5\x7b\xa9\xd1\xc2\x68\xa0\x48\x03\x80\xe2\xa3\xa0\xf3\x37\x0c\ \x4d\x3b\x8d\xcb\x32\x23\x99\xde\x6c\x86\xf6\x76\x23\x71\xa5\x6b\ \xe8\xe0\x01\xc0\x7a\xbf\xbe\x5b\x2c\xdc\xd9\xdc\xba\x0c\xa3\x84\ \x5c\x24\x99\xc5\x8d\x3d\x03\x2c\xdc\x35\xd0\xb8\x96\xde\x3f\x64\ \x95\xbb\xdb\x22\xa5\xf0\x40\xc8\x56\x2c\x11\x3b\xbb\x84\x86\xa1\ \x01\x18\x84\x61\x9b\x05\x22\xee\xfd\xfa\xf4\x7f\x08\x6e\x77\xcf\ \xa0\xa1\x0b\x90\x09\x12\x01\x08\x00\x18\x3e\x49\x20\x9b\x33\x88\ \x22\x52\x03\xa9\xeb\x81\x29\xd8\xee\xbe\x41\x18\x84\xa7\x04\x23\ \x49\x65\xf6\x16\x33\x8b\x1a\x49\x9a\x91\xf0\x1e\x0c\x98\x00\x25\ \x08\x12\xa4\x28\x62\x17\xe9\xdd\x65\x78\x91\x1c\xcd\x83\xc4\x53\ \xa2\xf2\x30\x0c\x28\x35\x97\x28\xdb\xbf\xec\xde\x22\x0f\x18\x4b\ \xa4\xe7\xe4\xcc\xdc\xfc\xe1\xf9\x99\x09\x8a\xcc\xfd\x89\xe0\x65\ \xc9\x8f\xe4\xc1\xd0\x3d\x6e\x13\x52\x6d\x61\x6e\x66\x72\x62\x62\ \x72\xe6\xf0\x42\xd5\x83\x12\x25\x52\x12\xdb\x89\x0d\xdb\xe4\x94\ \x07\xdd\xdc\x42\x11\xe0\x63\x52\xb5\xf9\x28\xdd\x5c\x54\x0e\xcf\ \x2a\x20\xc2\x83\xf9\x36\x07\xe1\xd1\xe1\xc1\x20\x5f\x86\xd8\x4e\ \x20\x4e\xc9\xa7\x76\xa7\xd7\xcc\x8c\xef\x70\x4e\xf4\x03\xe1\xc8\ \x79\x50\x34\x12\x3a\x51\x4c\xe4\xbe\xa0\x89\x8a\xd2\xc7\x53\x92\ \xc4\xed\x5a\xa4\x9c\xd6\x44\x12\xbc\xa5\x04\x0f\xe4\x3c\x50\xb6\ \x65\x99\x27\x76\x76\xb1\x4d\xa2\xc6\xe0\xa9\x09\x27\x0f\x1d\xb9\ \x6a\x7e\x76\x36\x16\x0b\x74\x65\x29\x5e\x39\x0f\xc0\x01\x2b\x20\ \xdb\x6d\x2a\xaa\x0a\x24\x63\x5b\xac\xfd\xe3\xc5\xc7\x7f\xf4\xd4\ \x2b\x5a\x9c\x4a\xc9\x31\xc0\x31\xba\xc2\x9e\x49\xc3\xa2\x09\x5b\ \x09\xfc\xa4\x13\x21\x2d\xb4\xbe\xf7\xd1\x0f\xdc\x76\xcf\x67\xee\ \x3a\xf9\xa1\x33\x2f\xcf\x77\xd8\x30\x2c\x16\xa5\x3c\xe8\x0d\xb5\ \x61\x60\xa4\xa9\x32\x65\x6e\x4a\x24\x10\x9d\xfb\xc8\x17\x7e\xb9\ \x0b\x73\xa6\xbf\x3d\x71\xe7\xb7\xab\x10\x04\x08\x8e\x34\x94\xe1\ \x53\x66\xa7\xc6\x1b\x20\xaa\x2d\x5c\xb5\x18\x91\xf4\xb5\xd7\xee\ \x7e\x2d\xaa\x44\x0e\x89\x07\x9d\x1e\xfa\xca\x74\x88\xb1\x72\xc3\ \x48\x94\xf2\x60\xb0\x91\xe0\xbd\x45\x92\xa4\xe8\xdf\x8c\xe2\x76\ \x9c\x78\x18\x94\x28\xfa\xd9\xcf\xe7\x12\x11\x62\x65\x88\x81\x32\ \x1e\x0c\x0f\xd8\x22\x49\x54\x5e\x55\x5c\x5d\xfa\xd4\x27\x4f\xd0\ \x13\x40\x82\xef\xef\x3a\x01\xaa\x54\x34\x84\xc7\x59\x3e\xc8\x8d\ \x64\x34\x18\x0d\x85\xa0\x48\x12\xf4\x2f\xe1\xe6\x97\x9f\x7b\xe4\ \xb1\x17\x5e\x7c\x9f\x08\x08\x7f\x3c\x3f\x29\x51\x35\xd7\x6d\xfc\ \x02\x1e\x79\x3e\x18\x43\x2a\x9b\xbf\xc2\x03\xef\x6e\x6c\x6e\xee\ \xdd\xf4\xcc\x8d\x61\xe9\xe7\x27\x44\x5f\x99\xf6\xc3\x73\x9a\x71\ \x2c\xd1\xd4\x6f\xfe\x79\xc3\xad\x17\x2a\x51\xe4\x2e\x1c\xb9\x17\ \x04\x88\x2d\x93\x70\xc8\x69\x38\x32\xe4\x03\xa5\xb6\x40\x2f\x4d\ \x72\x73\x46\x2f\xe1\xde\x79\x6f\x04\xaa\xaf\xdf\x08\x0f\x08\x15\ \xd1\xcf\x4e\xcb\x82\x65\xfa\xf1\x21\x11\x86\x7c\x30\xaa\xc2\x81\ \xbb\xf4\xb9\xe7\xef\xda\x89\x24\xb9\x66\x73\x3f\x04\xc8\x6b\x13\ \x3f\x33\xe7\x87\x60\xa9\x1e\x1e\x80\x25\x8c\xcb\x9e\x66\xfa\x83\ \xf3\x31\x29\x8b\x37\xab\xbf\x85\x01\x98\x7e\xcf\xde\xec\x61\x05\ \x6c\x39\x3e\xe7\x41\x27\xb2\x15\xc7\x9d\x6b\x81\x7e\xc7\x13\x30\ \x5e\xd0\xde\x59\x08\x91\x3e\xfe\xae\x89\xc5\x3c\x55\x97\xe2\x91\ \x15\x5e\xe3\xac\x80\x74\x04\x60\x8d\xed\xc5\x27\x5e\x35\xb9\xf8\ \x58\x3d\x5a\x14\xfa\x8b\xc1\xfe\x15\x68\x18\x93\x7b\xc4\xed\x5d\ \x9c\xfb\xc3\x77\xe8\x5d\x72\xf5\x8f\x8f\x4f\x69\x44\x75\x0a\x31\ \xcf\x07\x19\xab\x42\x8c\x83\x15\xc9\x93\x2f\xa2\xbd\x19\xb5\xef\ \xdf\x86\x4b\x8e\x3f\x7e\x33\xb3\x95\x5b\x57\xa5\x59\xc0\xe7\xf9\ \x60\x74\xfd\x9e\xad\xfb\x42\x3c\xb7\xfa\x7b\xc7\xe4\xe4\xb9\x5b\ \xda\x63\x30\x08\x0a\x3c\xe0\x98\x06\xb2\xc6\xce\xc2\x63\x67\x9d\ \xfc\x1d\x4f\x1e\xdf\xb7\x71\xcc\xca\xc0\x03\x14\x36\x08\xbd\xad\ \x47\x16\x7a\x5d\x6b\x6b\xfa\xaf\x0f\x9a\xfc\xe7\x1f\x3e\x12\x5b\ \x9f\xbe\x0c\x8f\xde\x7c\x60\xec\xa2\x65\x5f\x70\x6f\x24\xb5\xef\ \xee\x9a\xff\xe6\xb7\xaa\xde\x86\xd4\xfb\x39\x3e\xe7\x81\xc6\xf2\ \x22\xdb\xdb\x9d\xfe\xd3\x2f\x18\x9f\xf9\x52\x5a\x73\x8d\x14\x48\ \x69\xc2\xe9\x2b\x5b\xca\x76\x5d\x3b\xbe\xba\xde\xd2\xf2\x57\xdb\ \x23\xda\xb3\x1c\x0f\x30\xf0\x40\xc5\xda\x9f\xe8\x6b\x06\x00\x58\ \xdc\x32\xdb\x02\xeb\xf3\xdd\xc5\x69\x99\x74\xf0\x54\xe0\x01\x8a\ \x4d\xc4\x80\x15\xb4\x12\x26\xef\xc4\xc4\xfb\xdb\xc6\xe1\x11\x3a\ \xc7\x0b\xc8\xfb\x03\xa8\xa7\x7c\x09\x13\x5d\x33\x68\xcb\xf6\x6e\ \x79\x47\xeb\xc5\x8a\x17\x4a\xf4\xfd\x78\xe4\xfd\x41\xe6\xae\xa1\ \x7d\x30\x4b\x29\x49\x2a\xb4\x96\xc1\xe6\x09\xd9\x5e\xfc\xf4\x0d\ \x93\xed\x32\x3d\x4b\xf0\x81\x60\x63\x66\x34\x92\x06\xb9\xad\xcf\ \xbe\x74\x47\xd3\xf1\x4a\x24\xad\xae\xa9\x4e\x64\x05\x40\x18\x40\ \x58\x57\xd0\x65\x24\x02\x47\xe7\x2b\x87\x7c\x70\x8e\x82\x1e\xa5\ \xf8\x6c\x52\x69\x0b\x97\x56\xac\x04\xd3\xa2\x4d\x59\x67\x07\x51\ \x11\xbd\x9b\x78\xf8\x9e\xfb\x9e\x9b\x91\xd0\xab\x47\x29\x1e\x2a\ \x36\x20\xc1\x39\xf2\xe0\xda\x55\xc3\x93\x52\xd5\x11\xf7\xdf\xf7\ \xc8\x0f\x6e\x7b\x68\xc6\x17\x78\xa0\xe2\xa0\x83\x4f\x1b\x90\xd0\ \x27\xe4\x19\x2c\x53\x04\xfe\xe5\x4f\x68\xaa\x56\x67\x7f\xf8\x4c\ \xc5\x45\xac\xff\xba\x26\xf6\xea\x4b\xf0\xa1\xb3\x31\x21\xf5\xa7\ \x3c\x2f\x81\xa5\x67\x17\x3a\x72\xf1\xa7\x6c\x27\xb1\xc3\xc3\xce\ \x97\x26\xbf\x5e\xbc\xd8\xe1\xc1\x18\x91\x37\x99\xe5\x7f\x05\x40\ \xfc\x8b\x6c\xac\xf0\xde\xcd\x83\xee\xb3\x8f\x9e\x46\x22\xab\xcd\ \xac\x75\xc3\x71\x3a\xc0\x74\x13\xd3\x28\x5f\xd0\xf7\xe1\x79\x85\ \x3c\xa0\xaf\x7e\x51\x89\x59\x7b\x61\xa5\xed\xae\x98\x07\xe3\x04\ \x5f\xdb\xbb\xe7\xc1\x59\xef\xdf\xfb\xf4\x35\xed\xf1\x4c\xd4\xe1\ \x41\x5f\xf4\x45\x4f\xf5\x11\x4c\x51\x69\x7d\xed\x77\x4f\x3f\xff\ \xc2\xc9\xa6\xa9\x44\x5f\x76\x26\x55\x9e\x0f\xfa\x12\x54\xf0\x0d\ \xb7\xff\xc6\xbf\xce\xf3\xc3\xb7\x4e\xee\xb9\x42\xbd\x61\xc3\x8e\ \xfa\x52\x1e\x8c\x61\x22\xf0\xcd\xbf\x5f\x6c\xc6\x5b\x7f\x7e\xe5\ \x8d\x08\x63\xd6\x51\x50\x0f\x0f\x38\x70\x29\x04\xff\xf3\x26\x9d\ \x59\x34\xe1\x36\x5f\x1f\x7e\x3c\xd9\xed\x45\xc8\xfb\xe4\xfc\x18\ \xab\xa7\x11\xcf\x48\x1a\x5d\x6c\x44\x14\x20\x21\xda\x6a\xb8\x3e\ \x7d\x29\x3e\xef\x93\x35\x72\x05\xd6\xba\xe0\x20\x42\xa4\x60\x9b\ \x6d\xd3\x78\x2b\xc8\x78\x30\x92\xc9\xdc\x8e\x99\x66\x6e\xca\xe2\ \x5d\x62\x7c\x26\x17\xaa\x6b\x4b\x9f\xc2\xc2\xea\x3a\x4e\x77\x39\ \x14\xc8\x0c\xfe\xd0\x64\x41\xdf\xa9\x83\x8a\xf8\x4e\x5d\x84\x51\ \xc5\xa9\xe2\xfc\xa0\x16\x04\xe3\xf1\x8a\xd9\x4e\x3e\x18\xe5\x76\ \x85\x8d\x14\xc0\x71\xdd\xb4\x53\x17\xa5\x2b\x85\xa5\x47\x8d\x9d\ \xca\x32\x90\x38\x52\xf7\x81\xe9\x04\x8b\xfa\xdc\x52\xbd\xf8\x3e\ \x1e\x0c\x94\xe9\x8e\x1f\x00\x9c\x1d\xcf\x44\x63\xe7\x03\x28\x39\ \x34\xe9\x99\x9d\x08\x24\xd3\x53\x1e\x57\x96\x0f\x3a\xe1\x0e\xa5\ \x5c\x30\xb8\xa3\xf0\x69\x58\x4b\xdc\xd1\x92\x5b\xca\xf0\x42\x5f\ \x3e\xb0\xbe\x51\xfa\xe9\x67\xae\x61\x2c\x00\x3e\x9e\x38\x36\x89\ \x3e\xfd\x40\xfc\xb8\xf9\x80\xc9\xdc\xf5\x0b\xe6\xbd\xaf\x2c\x5e\ \x57\x4b\xc6\x6c\x89\x3a\xc5\x12\x86\x56\xcb\x41\x7c\xf5\xea\xeb\ \x8e\x5d\x7b\xec\xfa\xa3\x96\x8c\x73\x7b\xfe\xad\xe1\x1f\x64\x27\ \x26\x3e\x0d\xdd\x69\x2d\xec\x25\xc9\xfb\x74\xa3\xdb\xd1\x54\x6d\ \x0a\x6d\x0d\xd0\xf7\xe1\xe5\xb3\xf3\x22\x4d\xba\x5a\x14\x45\x95\ \xf4\xa7\x52\x89\x82\x54\x2a\x51\x14\x55\x2a\x61\x3e\x8a\x26\x9c\ \x39\x8b\x26\x06\xea\x7b\xf1\x35\x37\x99\xf2\x60\xf6\xd1\xdb\x4f\ \x7d\xec\xed\x97\x53\xb7\x3f\x3a\x2b\x18\x23\x7e\xe2\xec\xd7\xbf\ \xb1\xb6\xb6\xb6\xba\xba\xb6\xba\xb6\x16\x06\x6b\x6b\xab\xe1\x7a\ \x75\x35\xcc\x1d\x40\xbf\xf6\xc0\xd9\xbb\x19\x99\xa8\xb9\x13\x27\ \x97\x96\x96\x96\x96\x97\x97\x96\x97\xd2\xc1\xd2\xd2\x72\xb8\x5e\ \x5e\x0e\x73\x07\xd1\x2f\x9d\x98\x0f\x6f\x63\x95\x24\x49\x92\x24\ \x71\x9c\xc4\xd9\x20\x49\xe2\x70\x1d\xc7\x61\xee\x60\x7a\x4f\x19\ \x08\x3a\xe7\x9c\x73\xe1\x1d\x70\x18\x84\x77\xc3\xe1\x05\xb1\x73\ \x07\xd6\x03\xb4\x42\x42\xcd\x5f\xd4\xa4\xbd\x62\xfe\xba\xed\xc0\ \xfa\xc2\x81\xd4\xff\x45\xfe\x07\x6b\x56\xad\xc0\xb4\x6e\x5e\x96\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\x68\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x60\x00\x00\x00\x54\x08\x02\x00\x00\x00\xf2\x11\xa5\xd4\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd5\x03\ \x03\x0f\x29\x0a\x74\xfd\xc3\xca\x00\x00\x00\x06\x62\x4b\x47\x44\ \x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x1f\xf5\x49\x44\ \x41\x54\x78\xda\xed\x5c\x09\xb8\x14\xd5\x95\xae\x5b\xbd\xbc\x7e\ \xfb\xc6\x5b\x58\x1e\xbb\x6c\x42\x82\x80\x28\x51\x31\xe2\x46\x40\ \x05\x07\x51\xa2\x66\xe2\x12\x10\x9d\x44\xcc\x0c\x44\x13\x17\x70\ \x41\x8d\x4b\x12\xe7\xcb\xa2\x49\x8c\xc6\x49\x26\x8e\x1a\xa3\x64\ \x12\x26\x01\x13\xe5\x53\x42\x08\x71\x62\x36\x0d\x10\x40\xe1\xf1\ \xf6\xfd\xf5\xeb\xb7\x74\xf7\x9d\xff\xde\x73\xef\xad\x5b\x55\xfd\ \x88\xe6\xd3\x2f\xc9\x37\x96\xd8\xaf\xba\xba\xea\x56\xd5\xa9\xb3\ \xfc\xe7\x3f\xe7\x16\xcb\x66\xb3\x8e\xe3\xa4\xd3\x69\xd7\x75\x39\ \xe7\x58\x67\x8c\x39\x7a\xc1\x16\xfb\xab\xd9\x48\x2b\xe6\x27\xb3\ \x5b\x78\x7f\x7b\xcb\x3f\xd6\xf8\x58\x8f\x44\x22\x2c\x93\xc9\x40\ \x34\xce\xfb\x4b\xae\x45\xc8\x0b\x1a\x34\x34\x34\xb4\x7e\xfd\x86\ \x68\x34\xce\x79\x16\xb2\x65\xf8\xcf\x21\x19\x33\xee\x70\xf9\xd5\ \x7f\x98\xfc\x55\x6e\x65\x66\x8b\xfe\xca\xad\x4f\x79\x0a\x35\xa0\ \xde\xd1\xdb\xed\xef\x76\x7c\x07\x1a\x93\xce\x64\x2a\x2b\xcb\x6f\ \xbd\xe5\x96\x28\x34\xaa\xa7\xa7\xbb\xbb\x27\x75\xed\x75\xd7\xf5\ \xf7\xa7\x84\x82\x31\x07\x82\x12\xc7\x30\x97\xe1\x6f\x4e\x15\x65\ \xde\x09\xb8\xdc\x84\xbd\xf4\xbe\xa4\xa4\xcc\x68\xb3\xf8\xce\xcd\ \xb5\x8b\x9d\xb4\x92\x8b\x0b\xf2\x59\x04\xdd\x93\x93\x6b\x7c\x39\ \x70\x50\x40\xef\xc1\xf8\x38\x34\x12\x71\x93\xc9\xbe\xa7\x9f\x7a\ \x1c\xc7\x46\xc9\xea\x4a\x4b\x4b\xcb\xcb\xcb\xfa\xfb\xf3\xe8\xfe\ \xe2\xb1\x68\x24\x16\xe7\x99\x6c\x26\x93\x66\x96\x01\xc2\x5d\xb9\ \xf2\x04\xfa\xa4\xea\x04\xd0\x43\x1c\x16\x8b\xc7\xd3\x69\xa8\x23\ \xa4\x0f\x8f\x16\xf1\x84\xc9\xcc\x75\xa8\x1b\x90\xba\x8b\x6b\x95\ \xb7\x9a\xeb\x06\x82\xe3\xd3\x0d\xb3\x5c\x1a\xf4\x6e\x8f\x4f\x02\ \x8a\xc7\xf3\x4a\x8a\x8b\xb1\x2d\x4a\xa3\x43\x12\x99\x74\x06\xae\ \x3a\x1a\x89\x42\x22\x47\x8e\xd4\x37\xb7\x34\x15\x17\x95\x14\x14\ \x14\x64\x49\xba\xea\x04\x2c\x74\x02\xa5\xe4\x99\xf4\x50\x5b\x7b\ \x5b\x45\x45\x65\x55\x55\x75\x7e\x41\x7e\x7f\x7f\xbf\xcb\x5c\xf5\ \xb4\xe8\x20\x47\x3e\x4e\xf3\x84\xe5\x0d\xf0\x61\x9e\x70\xe0\x06\ \x86\xd3\xa0\xf7\x62\x7c\x71\x3f\x9c\x43\x1a\x58\x84\x80\x8c\xeb\ \xc6\x80\xb8\x25\x7c\xfd\xe2\x17\xee\x2e\x2b\x2d\x6a\x6b\x6b\x2d\ \x2e\x2e\x2e\x2c\x2c\x82\x93\x0a\x07\x02\x1a\x8d\x73\xf3\xc9\x20\ \xdc\xc6\xc6\x86\xda\xda\x91\x10\xee\xaa\x8f\x5e\x35\x6d\xda\x0c\ \x61\xb0\x42\xfb\xbc\x4b\xd4\x7a\xcd\xf4\x17\x16\x08\x3a\xcc\x1a\ \xdc\x7c\xd3\x6a\x40\xba\xc0\x02\x3b\xbe\x07\xe3\x4b\x69\x30\x35\ \x58\x94\xcc\x95\x4b\xb9\x42\x1c\xbf\xf8\xc5\xcb\xe5\x65\x85\x0f\ \x3c\x70\xff\x5f\xed\xf9\xb7\x6e\xfd\xd1\x4f\xb7\x6d\x9f\x33\x67\ \x5e\x2a\x95\x74\x85\x45\x7a\x97\xae\x1e\x37\x7d\xe7\xc6\x6f\xf8\ \xfd\x9b\x72\x94\xcc\x3c\x72\x63\x3d\xe1\xa7\xe4\x79\xe3\xf7\x60\ \x7c\x31\x02\xe7\x51\x5b\xa4\x08\xfb\x70\xd8\x33\x67\xce\x84\xd6\ \x3c\xf6\xd8\x63\xbb\x77\xef\x86\x5e\xd0\x43\x70\xe5\x22\xff\x32\ \xfd\xa9\x16\x1a\x00\x9b\x8a\x8a\x8a\x36\x6c\xd8\x50\x53\x53\x5b\ \x58\x58\x08\xf7\x65\x7e\x25\x27\xaa\x6e\x48\x1f\x60\x3d\x4c\xe6\ \xf8\x6c\x20\xb0\x31\xd7\x8e\xdc\xb1\x43\xd3\xbb\x3e\x3e\x5d\x39\ \x79\x96\xa8\xde\xc4\x49\xa9\x24\x26\x82\x7c\xb2\x8f\x3f\xfe\xf8\ \x39\xe7\x9c\x53\x52\x52\x92\x48\x24\xf2\xe5\x42\x2b\x79\x79\x79\ \xf4\x89\x25\x1e\x8f\x47\xa3\xc2\x8b\x0d\x0e\x0e\xc2\x1e\x37\x6f\ \xde\xfc\xca\x2b\x3b\xc7\x8c\x19\x25\x61\x67\xc4\x92\x8f\xe7\x35\ \x48\xf1\x85\x77\x70\xe9\xa1\x73\xfb\x57\x13\x91\xac\x8d\xcc\xe8\ \x03\xb3\x7d\x10\xf3\x54\xe0\x6d\x8c\x1f\x10\xe6\x5f\x18\xdf\x7e\ \xf6\x51\xbd\x26\x47\xd5\x36\x0e\xff\x34\x72\xe4\xc8\xaa\xaa\xaa\ \x58\x2c\x96\xaf\x17\x12\x50\xc2\xbf\x18\x01\xc1\x9d\xcf\x9b\x37\ \xaf\xb3\xb3\x63\x6c\xdd\x18\x69\xc6\x5c\x9c\x55\xc6\x15\x11\x5a\ \x18\xb7\x40\xac\x44\x11\x59\x2e\x51\x04\x9e\x93\x2b\x1d\x99\x00\ \xf4\xd8\xee\x2a\xc7\xe1\x2a\xbc\xa2\xfc\x89\x89\x14\xf2\x78\x66\ \xbe\xe5\x18\x9f\xf4\x89\xa9\x98\xcf\x6d\x5d\xd3\xa0\x88\x1b\x8b\ \xcc\x39\xbe\x43\x17\x2f\x85\x2b\x7c\x90\x74\xd2\x9e\xdc\x70\xad\ \x84\x1e\x21\x26\xdc\x3f\xa7\xef\xd9\x2c\xd7\x8b\xb1\x29\x2c\x50\ \x22\x1c\x42\x70\x1c\x87\x40\xa0\xc6\xb8\x7c\x26\x26\xd4\x52\x0c\ \x14\x8d\xc6\xa0\x79\xb1\x58\x1c\x01\x01\x98\x40\x9a\x39\xcf\x66\ \xb2\xb1\x78\x4c\x98\x6e\x24\x02\xe1\x61\x9c\x81\x81\x7e\xa8\x21\ \x2e\xd2\x8d\x32\xcb\x9b\x7a\xd6\x63\xc3\x3f\xbf\x55\x31\xc6\xbc\ \x9d\x82\x26\x16\xd8\xc9\x78\x74\xdf\xf8\x5a\x14\x22\xfa\x73\xd2\ \x20\x85\x1b\x54\xd8\x53\x22\x0b\x5f\x81\x13\xd8\x42\xe3\x90\x43\ \xa2\xaf\x4a\x8c\x5a\x15\xf1\xa3\xb8\xfd\x4c\x06\x3b\xc1\x31\xc5\ \xa3\xb1\x8e\xce\x8e\x83\x07\x0e\x1f\x3a\x74\xa0\xa1\xe1\x68\x47\ \x57\x27\x76\x84\xd2\xa5\xfa\x52\xc0\x07\x03\xfd\x29\x04\xc1\x9a\ \xaa\x9a\xd1\x63\xea\x26\x4e\x9a\x52\x5e\x51\x81\x01\x93\xc9\x5e\ \xc8\x8b\x01\x99\x68\xad\xe0\xf4\xbc\xb5\x50\x08\x2b\x13\xf2\x73\ \xb3\x58\xc9\xe2\xaf\xd0\x45\x28\xa6\xe3\xb8\xb4\x8f\xb6\x48\x5c\ \xa0\xd4\x54\x6c\xc1\x15\x79\x9e\x0b\xda\x6c\xc6\xd4\xd0\x9c\x51\ \x30\x8b\x6a\x3b\x95\xa6\xcb\xd4\x4d\xe2\x96\xb8\x7f\x31\x82\xa3\ \x05\x0a\x25\x90\x53\x3a\x0d\xe3\xa2\x5c\x57\x1f\x22\xc5\xa1\x55\ \x32\x2d\x74\x30\x52\x51\x51\x01\xf4\xf8\xda\x6b\xaf\xbe\xf8\xe2\ \x0b\xcd\x6d\x2d\xed\x1d\x6d\xc5\x65\xe5\x23\xaa\x6b\x26\x4c\x9d\ \x82\x71\xa6\x94\x95\x97\x57\x8e\x80\x42\x75\x77\x75\xb5\x34\x35\ \x1e\x68\x3c\xba\x63\xcf\x2e\x9e\x4e\x8f\xae\x1d\x39\x73\xfa\xcc\ \x13\xe7\x2f\xa8\xae\x1d\x99\xec\xed\x49\xa5\xfa\xa0\x7d\x8e\xca\ \x09\x5c\x65\x2a\x52\x36\x8e\x14\x89\x30\x37\xd7\x51\x32\x11\x66\ \xab\xa0\x22\xb3\xb5\x84\xbb\x24\x04\xf2\x36\x9c\x29\x68\xe5\x7a\ \x6a\xaa\xf5\x53\x23\xa4\xa8\xf2\xd0\x8e\xd6\x2a\x6d\x62\x61\x89\ \x18\x5b\x23\xd1\xe0\xc1\x42\x77\x84\x38\x18\xc3\x3a\x8c\x11\x1b\ \x61\x3b\x84\x9b\x68\x04\x78\xb1\x8e\x8e\xf6\xaf\x7e\xe5\x4b\xcf\ \x3e\xfb\x14\x74\x07\xa2\x58\x74\xe6\xb9\x93\x26\x4c\x82\x58\x71\ \xc3\x47\xde\x78\x03\xb8\xf4\x28\xe7\x2d\x6d\x2d\xa5\x95\x55\x13\ \xa6\x4e\x9d\x3e\x7b\xce\x29\x95\xe7\xf4\x25\x93\xcd\x4d\x8d\xcd\ \x8d\x0d\xaf\xec\xd9\xbd\x65\xeb\x0f\xa7\x4f\x9e\x72\xde\xf9\x17\ \x1e\x37\x65\x5a\x67\x67\x67\x26\x3d\x18\x11\x62\x0a\x45\x31\xeb\ \xe6\x2c\x83\x0c\x1a\x63\xf8\x10\x7f\xcc\x0b\x98\x98\xc6\x41\x5c\ \x7a\x02\x21\x2f\x2e\xdd\x9a\x25\x14\x12\x07\x16\xb3\x62\x44\x23\ \x45\xc9\x69\x05\x5b\x00\x11\x8c\xde\x61\xa5\xb4\xa4\xb4\x3f\xd5\ \x0f\xd1\x7c\xfb\xdb\xdf\x00\x2a\x5d\xb1\x62\xd5\xc2\x85\x67\x8c\ \x1a\x3d\x06\xa6\x94\xc8\x4b\x88\x87\x1d\x75\xe9\x0a\x80\xb9\xeb\ \x8f\x1c\x3e\xf0\xe7\x7d\x87\xde\x3a\xf4\xc8\x0f\x9f\xaf\x1c\x5d\ \x37\x67\xc1\xa9\x93\xa7\x4e\x2b\x28\x2c\x9e\x38\x65\x5a\x57\x67\ \xc7\x6b\x7b\x76\x6f\xda\xbc\x71\xf6\x8c\x99\x9f\x58\x7d\x5d\x79\ \xc5\x88\x8e\xf6\x76\x89\x38\x88\x9c\xb1\xb0\x8e\x46\xd3\xe4\x9c\ \xfd\xd9\xa9\x95\x95\x9a\xec\xd4\x24\x08\xdc\x8f\x83\xb8\xf7\xcf\ \xc6\x41\x64\x5f\x42\xf7\x70\x9b\x59\xbd\x18\xd1\xa4\xf5\x42\xbe\ \x99\xf4\xcb\x50\x25\x52\x77\x62\x10\x13\xf6\x85\x76\x94\x97\x95\ \xbf\xf2\xca\x8e\x1b\x3f\xb3\x0e\xc8\xe8\xf6\xdb\xef\x3d\xe5\xd4\ \xd3\x85\xbc\x06\xfa\x87\x86\x06\xf1\x5f\x5f\x5f\x52\xe7\x05\x52\ \xc4\x91\xc8\xd8\xf1\x13\xa6\x4c\x9d\x06\x87\xd5\xd2\xdc\xb8\x63\ \xc7\xcf\x5e\xdc\xf2\xfd\x97\x12\xf9\x1f\x59\xb1\xaa\xbc\xbc\x02\ \x17\x7f\xca\xa2\xb3\xe7\x7e\xe8\xb4\xed\xff\xfd\xdc\xf5\x37\x5c\ \xbb\xf2\xc2\x95\xe7\x2f\x5b\xd1\xdd\xdd\x8d\x13\x09\x24\x41\x89\ \x8e\x36\x37\xd7\xe4\xf3\xc2\xc2\x28\xdb\x08\x26\xfb\xcc\x00\x67\ \xe5\x54\xb4\xf7\xd5\x08\x52\x8b\xc2\x09\xe0\x20\x66\x45\x31\x65\ \x50\x24\x1d\x23\x1a\xa3\x38\x66\x1f\x68\x0d\x09\x08\x7b\x42\x40\ \xd0\x85\xca\xca\xca\xea\xea\x9a\x27\xfe\xe3\x5b\x55\x5b\x7f\xb8\ \xee\x86\x0d\x4b\x96\x5c\x00\xaf\x98\xec\xed\x6d\x6d\x6d\x41\xe0\ \x76\x29\xf1\x45\xa8\x62\xda\x73\xca\xcf\xa1\x41\x44\xad\x14\xae\ \x2f\xbf\xa0\x60\xc5\xca\x4b\x2f\x58\x76\xd1\xb3\xcf\x7c\xef\xf1\ \x07\xef\x9e\x71\xd2\x29\x67\x2e\x5d\x06\x95\xc1\xe9\x96\x5e\xf4\ \xd1\x96\xc6\x86\xef\x7f\xf7\xf1\x5d\xbf\xdc\x79\xcb\xad\x77\xba\ \x91\xbc\xbe\x64\x2f\xec\xda\x67\x2f\x8e\x6d\x5d\xcc\x78\x66\x27\ \x14\xc6\x4c\xaa\xc1\x1c\xe6\xf8\xfd\x8f\x25\x0d\xc7\xb8\x34\xa5\ \x66\x7a\x55\x05\xf5\xb4\xb5\x0c\xe9\x65\x50\x2f\x03\x72\x81\x50\ \x52\xa9\x14\x3e\x7b\x7b\xc5\xe5\x1e\x3c\x78\xf0\x9a\x6b\xae\x19\ \x3f\x6e\xe2\x7f\x7e\xef\xb9\x25\x4b\xce\x47\x84\xea\xee\xea\x16\ \xcf\x01\xbe\x1a\x11\x1b\x76\x41\x0e\x8f\x00\x8c\xe1\x28\x18\xc2\ \x14\x96\x28\xce\xda\xd9\xde\x9e\xec\x4b\x5e\x7a\xf9\x95\x0f\x7f\ \xf9\x9b\xbc\xbd\xe5\x9b\x5f\xb8\x57\xe8\x58\x2c\x0e\x97\x94\x28\ \x28\x58\xb3\xfe\x73\xac\xa2\x72\xed\xda\x2b\x1b\x8f\xd6\x97\x57\ \x54\x22\x36\x48\xc4\x64\x82\x34\xe3\x0a\xec\xf8\xc6\xb7\xa5\xc3\ \xb8\xe7\x7c\x98\x45\x0c\x71\x29\x02\xce\xfc\x96\x29\x75\x31\xb8\ \x40\x38\x64\x5f\x01\xe9\x18\xa1\x90\x5c\xe8\x93\x56\x20\x23\xdc\ \x5f\x5f\x5f\xdf\x93\x4f\x3e\xb9\x60\xc1\xc9\x67\x9e\x75\x36\xbe\ \xb6\xb5\xb5\x09\xb9\x44\x22\xec\x9d\x2c\x52\x94\x2e\x52\xe5\xc2\ \xa2\xa2\xfb\x1f\xfc\xca\x05\x67\x9c\xf9\xf0\xdd\x1b\x9b\x9b\x9b\ \xf3\x0a\x8a\xc0\xd1\x34\x35\x36\x9e\xbb\x7c\xe5\x89\x8b\xcf\xfb\ \xd4\xa7\xaf\xdb\xf9\xf2\x4b\x95\x23\xaa\x70\x75\xec\xbd\x5c\x74\ \xb2\x1a\x32\x31\xc2\x8a\x3a\x05\x63\x86\xb2\x95\x90\x2f\x4b\x77\ \x6e\x5c\x35\xe0\xe2\x4b\x2f\xbd\xf4\xd0\x43\x0f\x3d\xf0\xc0\x83\ \x33\x67\xce\x78\xea\xe9\x2d\xa4\x35\xf2\x41\x65\xd5\x43\xce\xaa\ \x38\x2b\xbe\x00\xb0\xb8\x12\xaa\x70\x7f\xb6\x9d\x75\xb2\xae\x70\ \x9f\xb1\x58\x14\x67\x69\x6a\x38\x7a\xf9\x15\xab\xc7\x8c\x19\x7b\ \xcf\x17\x3f\x7f\xfe\x95\xd7\x8e\x1c\x3d\xa6\x1f\x01\xae\xb1\x69\ \xda\xac\x13\x46\x8d\x1d\xb7\xf9\x81\xbb\xff\xad\x2f\x75\xee\xd2\ \xf3\x5b\x9a\x9b\x61\xe0\xef\x68\x7c\x01\xf4\x61\x3d\x84\x99\x8c\ \x07\xc7\x85\x66\x19\xfd\x2c\x0f\x75\x14\x50\x14\x7e\x8a\x7b\xbe\ \xdb\x44\xf4\x9c\x02\x12\xc7\xc8\xc5\x38\x20\x32\x46\xe8\xcb\x92\ \x25\x4b\xf0\xad\xa3\xa3\x43\x6a\x0d\x9d\x91\x20\x3c\x3d\x03\x0d\ \x58\xc8\xa1\x1a\x12\xc1\x56\x6a\x91\xfe\x9b\xa0\x02\x31\xc5\x9b\ \x9b\x1a\x4e\x5f\x74\x56\x65\xd5\x88\x75\xeb\xd7\x5d\xb8\x66\x5d\ \xed\xa8\x51\x50\xd7\xce\x8e\x8e\xa2\xa2\xe2\x35\x37\x6d\x7c\xf0\ \xde\x4d\x91\x58\x64\xd1\x59\x8b\xdb\xdb\x5a\x81\x92\xb8\x18\xe0\ \xed\x8e\x2f\xd1\xa2\x2f\x0f\x71\xd5\xff\x5c\xfe\xe5\x12\xcd\x19\ \x03\xce\xa5\x41\x83\xfe\xc5\x18\x17\x2d\x29\xbd\x60\xbd\xab\xab\ \x6b\xc1\x82\x05\x23\x46\x8c\xc0\x0e\x42\xa0\xfe\x01\xff\xea\x05\ \x97\x0f\xdd\x6c\x6d\x69\x9e\x3e\x63\xd6\xfd\x9b\xef\x7b\xf6\xeb\ \x0f\x35\x1e\x3d\x0a\x1c\x04\x22\xab\xa7\xb7\x37\x16\xcb\xfb\xc4\ \x86\xdb\x3e\xff\xa5\x07\xf6\xec\xfe\x05\xe2\x5d\x26\xf3\x2e\xdb\ \x1a\x79\x72\x97\xe4\xcd\x7d\x4e\x9a\x1b\x0d\xb2\x5d\x4f\xc0\x07\ \x05\x96\xd6\xd6\x56\xf8\x69\x48\x46\xa0\x21\x5b\xab\x79\x20\x80\ \x70\x0f\x6d\x84\x10\x9c\xab\xc9\x3e\x6e\xc5\x8d\x78\x5e\xbc\xb3\ \xb3\xfd\x84\x79\x27\xdd\x7b\xfb\xe6\x2d\x8f\x7d\xad\xaf\xbf\x9f\ \xec\x35\x99\x4c\x22\xea\x5d\xf1\xe9\x1b\xef\xb9\xff\xee\x86\xa3\ \x47\xf2\xf3\x0b\xb9\xc0\xa8\xef\x78\x7c\x8b\xea\x77\xec\x8c\x55\ \x01\x06\x91\x39\x51\x8a\xef\xfa\x92\x55\x22\x09\xc3\x1a\x14\x50\ \x22\xb3\x8e\x1d\x08\x19\xc8\x01\xb9\xa7\x03\xe6\x89\xb8\x06\xab\ \xdb\x1b\x7c\x51\x42\x78\x10\xef\x01\xaa\x2f\xb8\xb8\x78\x2c\xde\ \xde\xd6\x72\xca\xc2\x45\x6b\xaf\xb8\xea\xf9\x27\xbe\x11\x4b\x14\ \xe0\xc9\x71\x51\x6e\xe8\xa9\x1c\x51\xbd\x60\xc9\xb2\x4d\x9b\x6e\ \x06\xfd\x42\x3b\xbf\xd3\xf1\xc5\x3e\x8e\xa5\x36\xd6\x35\x0a\x98\ \x26\xff\xd8\x6a\x05\x15\x10\xb2\x83\x46\xc0\x9b\x40\x04\x7d\xa1\ \xc5\x6c\x0c\xfc\x8a\x18\x0f\x3a\x84\x92\x0f\xdf\x09\xb5\xc2\xb2\ \xc0\x85\x0c\xab\xda\xc1\x75\x5c\x0f\xfc\x51\x53\x63\xc3\xc5\xab\ \x3e\x36\x6b\x6c\xdd\x8b\x5b\xb7\x14\x96\x94\x41\xb7\x1d\x37\xd2\ \xde\xde\x3e\xf7\xe4\x53\xe3\x55\x35\xf7\xdd\x7b\x47\x55\x75\xb5\ \x0c\xfc\x8c\x31\xfe\x8e\xc6\xf7\x5f\x9b\x27\x1e\x95\xac\x12\xf5\ \xce\x88\x46\x92\x79\x28\x78\x9f\x65\xcb\x96\xed\xda\xb5\x0b\xf1\ \xd5\x30\x8a\x81\xc4\x3d\x40\x44\xc1\x65\x03\x25\x9e\x70\xc2\x09\ \xfb\xf7\xef\x8b\xc6\xa2\x84\x48\x38\x33\xd8\x9e\x6b\x82\xc6\x67\ \x68\x61\x0a\x15\x67\x57\xd9\x31\xf3\x88\x1d\x4d\xce\x3b\xad\x6d\ \x2d\x37\x7e\xf6\xd6\xcb\x3f\x76\xc9\xbe\x09\x93\xc7\x4f\x9c\x84\ \x18\x1f\x8b\x46\xdb\x5a\x5a\x96\x5f\x76\xc5\x57\xee\xbc\xe5\x47\ \x5b\x9e\x3d\x67\xf1\x79\x00\xa5\x88\x12\x74\x91\xc3\x55\xad\x2c\ \x22\x92\xe9\xba\x98\xb8\x3b\x85\x5d\x1d\xae\x2a\x59\x16\x69\x4f\ \xc3\xf1\x82\xc2\x42\x28\x02\xa2\xe6\xba\x75\xeb\xd6\xae\x5d\x0b\ \xcf\xa3\x80\x3c\xf7\xee\x0a\x51\x2e\xcc\x0f\xe3\x58\xd4\x8e\x70\ \xe0\x9e\x3d\x7b\xa0\x4d\x06\xfe\x84\x92\x49\x3b\x51\xb4\x93\x4b\ \x47\x66\x76\xac\xa4\xb8\x8c\xb9\x11\x65\x2b\x9a\xfe\xd2\xa9\x09\ \x28\xa4\x74\x71\x49\xc1\x83\xf7\x7d\x71\xc3\xc6\x5b\xea\xd6\x5c\ \x4f\x88\x16\x7e\x34\xd5\x97\xbc\xec\xba\x1b\x1e\xf9\xda\x97\xe6\ \x9f\xb4\x60\xd4\xa8\xd1\x82\x4b\x62\x3a\xd3\x08\x61\x3f\x35\x9e\ \x57\x63\x16\xdf\x01\xfe\x06\x07\x06\xfb\x52\x7d\x9e\x0d\xca\x7b\ \x96\x75\x31\x3a\xb9\x1b\x81\xdb\x9b\x37\x6f\xfe\x8f\x7f\xb4\x65\ \xd3\xa6\x4d\x08\x4c\x35\x35\x35\xe5\xe5\xe5\x64\x32\xe1\x92\x86\ \x25\x1a\x87\x48\xc5\x7d\xfb\xf6\x8d\x1a\x35\x6a\xef\xde\x7d\xab\ \xd7\x7c\x12\x8e\x4a\xa5\x94\x1a\x0b\x89\xd8\x29\x98\x50\x6e\xd0\ \xac\x4a\x97\x08\xb8\x64\xb3\x08\x58\x38\x6a\xdb\xf6\x6d\x8d\x0d\ \xf5\x28\x41\x39\x8e\x55\x36\x91\x24\x2a\x05\x65\xdc\x3c\x54\x95\ \x27\x7b\x76\x6e\xff\x9f\x45\x4b\x97\xa7\x7a\xbb\x5d\x71\xe0\x40\ \x65\x55\xf5\xec\xd3\xce\xb8\xf9\x73\x1b\xce\x3e\x77\x49\x7b\x5b\ \x9b\x82\x20\x41\x4e\x5a\x17\x7e\xa4\xf8\x70\xba\xb8\xf0\x5c\x62\ \xbd\xa4\xac\x6c\xea\x94\x69\xd3\xa6\x4d\x47\xa8\x31\x56\xa7\x70\ \x10\x61\x02\x22\x3e\xa1\x02\xb7\xdd\x76\xe7\x5b\x6f\xbd\xd9\xd0\ \x50\x8f\x54\x6c\x98\x82\xb5\x7a\xba\x46\x52\xa4\x5f\x93\x27\x1f\ \x5f\x5d\x5d\xfb\xf1\x8f\x8f\x1a\x31\xa2\x0a\x0e\x1c\x48\x89\x00\ \xbf\xd0\x5e\xad\x0a\x54\x4e\x8c\xa8\x94\xd1\x55\x55\x06\x9c\x37\ \x1a\xed\xed\xed\xb9\xf9\x73\xeb\x17\x2c\x98\x7f\xfc\x8c\xe3\x23\ \xd1\x88\xa9\xc0\x70\x53\x0a\x54\x58\x4c\x48\xf3\xce\xbb\x6e\xbf\ \xe3\x9e\xfb\x60\x4d\x25\x45\x85\x50\x22\x9c\x0b\x39\xca\x69\x67\ \x9d\x7b\xef\xb6\xad\xa7\xf4\xb6\xce\x9b\xf7\x01\x22\x18\x02\x26\ \x66\x05\x6b\x31\x98\x34\x05\x55\x0b\x83\xc3\xfd\xc6\xd7\xff\x7d\ \xe1\xc2\xb3\x57\xac\x58\x09\xdf\xcf\x08\x27\x29\x1f\x64\x71\x83\ \x78\x3e\x91\x68\x14\x55\xad\x59\x1f\xf8\x00\x71\x8e\x8a\x1e\x0e\ \x35\x54\x58\x02\x62\xa6\xad\x82\x80\x81\xcc\x3c\xdc\x10\xfd\x18\ \x2c\x48\x69\xfe\x46\x20\x03\xd0\x20\x4f\x3e\xf9\xdd\xc5\x8b\xcf\ \x5e\xbd\x7a\xcd\xdb\xac\x2f\x21\x3b\xfb\xfa\x33\x3f\x58\x79\xf5\ \xda\x54\x4f\x57\x56\xa2\x7a\x30\xb5\xff\xf4\xcf\x9f\xd8\xfb\xbb\ \x5f\xad\xbb\xe1\x5f\xff\x8a\x82\xd5\xf2\xe5\xcb\xd7\xac\xb9\xf6\ \xac\xb3\xce\x05\xb0\x80\x6f\xa1\x6b\x35\x75\x31\x26\xd3\x48\x26\ \x79\x02\x2e\xc2\x53\x2a\x6b\xcc\x27\x6c\xc3\x54\x67\x33\x2c\x38\ \xb7\xea\x07\xe2\x4a\x65\xbe\x4e\xec\x3a\xd1\x76\xfa\x2b\x93\xd5\ \x6b\x47\x7d\x3a\xca\xc6\x1c\xc9\x3d\x76\x74\xb4\x2d\x5f\x7e\xb9\ \xa1\x0d\x0c\x6a\xd7\xcf\x83\x07\xfa\x5a\x56\x5d\x7a\xe9\x53\xcf\ \x3e\x77\x60\xef\x9f\xc6\x8d\x9f\x80\x4a\x28\x4e\x0a\x7e\x76\xc6\ \x07\x67\xef\xfa\xf9\xf6\xef\x3f\xf3\xf4\x8a\x8b\x56\x2a\xd4\xea\ \x3f\x4a\x3b\x6f\x4e\xac\x1e\x39\x10\x22\xd4\x41\x0a\x4f\x9a\x34\ \xe1\xad\xc3\x6f\x1e\x7f\xfc\xcc\xde\xde\x24\x27\x13\x53\x4f\x98\ \xc9\x28\xe6\xe8\xfe\x9a\x08\x8c\xc2\xd5\x4e\x80\xf9\xe5\x63\x1c\ \x3c\xf3\x51\x51\xde\x6d\x38\x06\xa3\x29\xff\xa1\xb9\x6e\xe9\x87\ \x1c\xf5\xc9\x55\x69\x41\xbb\xe3\x0c\x00\x96\xcc\xe0\x22\x54\xf3\ \x45\xc9\x04\x9f\xf0\xf7\x01\xeb\xa0\x15\x02\x5c\xd7\x5c\x7d\xe5\ \x1d\x0f\x3d\x3c\xf9\x53\x1b\x06\x92\x02\x85\x41\x46\x7d\x3d\x3d\ \x4b\x57\x7e\xf4\x89\xef\x3e\x7a\xd6\xd9\xe7\x0c\xd7\x1c\x44\xec\ \x15\x65\x8b\xa2\x84\x27\x59\x1d\x7a\x24\x00\x53\xd2\xc1\x4b\xa0\ \xc0\xb9\xbf\xf4\x1c\x28\x45\x0c\x53\x15\x08\x71\x9b\x2c\xcc\xe4\ \xfb\x19\x51\x7f\x95\xce\x5f\x9a\xd0\x05\x12\x80\xd2\xcc\xa1\x43\ \x87\xe4\x55\x0a\x8b\x43\x11\xe9\x85\x17\x5e\x78\xe4\x91\x47\x48\ \x83\x94\x62\x5a\x35\x02\x5a\x20\xc4\xde\xe6\xfa\xe6\xc6\xa3\xc2\ \x6d\x4b\x3a\x1e\xb4\xdc\x98\xb1\x63\xf3\x2b\xaa\x2e\xb9\xf8\xe2\ \xd9\x73\xe6\x00\xa7\x85\x95\x88\xaa\x2f\xd8\x0e\x15\x43\x75\xeb\ \xfa\xeb\xaf\xc7\x38\x26\x0f\xa7\xdd\x3d\xca\x55\x03\x02\x1e\x2e\ \xe9\xe6\x2c\xf5\xea\xd0\xe0\xf2\x00\xa6\x61\x9e\x86\x31\xaf\xf9\ \x22\xa0\x7d\x2a\x16\x05\xc6\x97\xa8\x7d\xa8\xae\xae\x0e\x29\x15\ \x5d\x7d\x63\x63\xe3\xad\xb7\xde\x3a\x7f\xfe\x7c\xdc\x80\x20\x8a\ \xd0\xbc\x24\x8b\x94\x58\x62\x7a\xc1\x1d\x0a\x7e\x6e\x44\xe5\xce\ \x6d\x5b\x57\x5e\x75\x4d\x7f\x6f\x97\x70\xff\x6e\xa4\xaf\xb7\xf7\ \x8c\x8f\x9c\xf7\xfc\x63\x0f\xff\xcb\x75\xd7\x11\xf1\x10\x96\x11\ \xd1\x38\x18\xf3\xbe\xfb\xee\x7b\xf4\xd1\x47\x6f\xb8\xe1\x06\x78\ \x95\xa0\xae\x91\xc7\x30\xb5\xec\x61\xd1\x66\x68\x81\x43\xcc\xea\ \x4a\x88\x07\x42\x9d\xdc\xf8\x34\x37\x8c\x0d\xfd\x20\x9e\x55\x4c\ \xdc\x09\xdc\x02\x6e\xfe\xf0\xe1\xc3\xa8\x85\x4c\x9e\x3c\x99\x18\ \x22\x22\x0f\x48\x52\xb4\x82\x3d\xb1\x1b\x0c\xf0\xd4\xd3\x4e\xeb\ \x6b\xad\x6f\x6b\x69\x86\x0c\x85\xb5\x4a\xbd\x18\x37\x61\x62\xf9\ \xc8\xba\x5d\x3b\x77\x96\x96\x95\x11\x71\x6e\x16\xe3\x28\x69\xb9\ \xf8\xe2\x8b\x8f\x1c\x39\x62\xf5\xee\x71\xfb\x9a\x54\x36\xaf\xe2\ \x76\xe0\x46\x5c\x53\xdb\xe2\x36\x6e\xc6\x93\xfb\xf3\xc1\x8e\xb6\ \x36\x14\x61\x5c\x4f\xae\xae\x9d\xf8\x38\x5e\xc2\x23\xaa\xf9\x66\ \x1f\xc1\xb8\xda\xe3\x07\x13\x25\x45\xd4\x09\xdf\xdc\xd4\xd4\x84\ \xfb\x24\x67\x94\xa3\xf8\xe7\x71\x7b\xd9\xb2\x8a\xca\x0f\xcd\x9b\ \xf3\xeb\x97\x5f\x2c\x40\xbc\x47\x0a\x29\x3b\x0c\x06\xfb\xfb\x3f\ \xb4\xe8\xec\x1f\x6c\xd9\xe2\x0a\xf9\xc6\x6c\xbd\xa3\x85\x84\x4e\ \x43\x91\xb3\x33\x4d\x1c\x96\x7c\xb8\x4a\x56\x15\x76\xb2\xfe\x71\ \xe9\xa2\x20\x02\x59\x58\x26\xa4\x20\xb6\x43\x3a\x07\x0f\x76\x36\ \x37\x77\xca\x94\x47\x57\x00\xa4\x83\xe7\x7a\x5d\xd5\x46\x74\x91\ \xc4\x30\x4d\x2a\x08\x30\x6f\x7c\xc7\x09\xfc\x23\x22\x41\xb8\x12\ \x54\x78\x90\xee\xd8\x58\x7c\x38\xfa\x11\x35\xa2\x85\x0b\x17\x36\ \xec\x7f\x1d\xcc\xb7\x81\xef\x40\x61\xd3\xa6\xcf\xe8\xcb\x38\xff\ \xfb\xea\xaf\x4b\xcb\x4a\xa1\x29\x46\x46\xb6\x3e\x92\x26\xda\x55\ \x3f\xc7\x54\x3d\x28\xbd\xa1\x64\x95\xcc\x2d\x70\x6e\x1c\xd9\xd3\ \x33\xd0\xdb\x8b\x42\x85\x23\xf5\xd9\xcd\x8b\x47\x0f\x1c\xec\x44\ \x0e\x5b\x5e\xe6\xa6\xfa\x87\x4c\x80\x7b\xf7\x18\x18\x6e\x8a\xba\ \xb8\x07\xf8\x69\x13\x3d\x02\x8a\x63\xc2\x13\x21\xf8\xb1\x63\xc7\ \x1f\x37\x6e\xcc\x1b\xbf\xfd\x0d\x58\x5a\x95\x36\xc9\x92\xd2\x89\ \xa7\x9e\xfe\x93\x9f\xfe\x14\xdd\x04\x64\x8f\x46\x40\x36\x0b\x48\ \x80\xdb\x8c\xe9\xd3\x20\x29\x13\x8a\x11\x9c\xf9\x54\x4b\xfc\x84\ \xba\x55\x32\x39\x74\xe0\x20\xda\xa8\x62\xe0\xdb\xf3\x0b\xe2\xa8\ \xa4\x23\xff\x28\x29\x76\x07\x87\x78\x7a\x28\xc3\x15\xe1\x2d\x93\ \x07\xd7\xf1\xca\x08\x42\xcd\x85\x50\x55\xde\x26\x8d\x49\x37\xf0\ \x09\xd2\x53\x04\x2d\xf1\x97\xbb\xfe\xea\xb6\xa4\x49\x7c\x25\x39\ \x73\xdd\x4c\xb7\x1d\x06\x44\x46\xde\x04\xb5\xa4\x13\xe7\xce\xd9\ \xfa\xf2\xee\x53\x3e\xbc\x88\x52\x6e\xb8\x6a\x64\x67\x1f\x9c\x33\ \xf7\x5b\x3b\x5e\x68\x6b\x6d\x29\x2a\x2e\x21\xa1\x98\x41\x28\xae\ \x9b\xf6\x5e\xaf\x80\x6c\x05\x74\xa2\xc9\x5c\xbb\x17\xc6\x36\x78\ \x24\xd5\x23\x6b\x8b\x8b\x8b\xf2\x98\x03\x88\x91\xea\xea\xec\x4c\ \xf6\x75\x17\x15\xb9\x99\x2c\xd0\x86\x33\x38\x24\xbc\x43\x3c\x1e\ \x31\x05\x25\x53\x2d\x80\xc0\xb8\xcb\x7c\x91\x40\x91\x9f\xd2\xe0\ \x98\xd5\x5e\xe1\x07\x09\x96\x9e\xfb\x40\x83\x51\x2b\x5b\x52\x36\ \xfa\x87\xab\x9e\x33\x77\xee\x40\x57\x7b\x6b\x73\x13\x7a\x0b\xc9\ \xb7\x65\x44\x9b\xea\x88\xea\x31\xe3\x76\xee\xdc\x89\x68\x45\x4d\ \xcf\x36\x44\xb0\x83\x1a\x79\x3e\x85\x6c\x3d\xaa\x4f\x8e\x1f\x38\ \xbd\xed\xa2\x90\x54\xd7\xd6\x96\xa6\xfa\x85\x63\x4e\x24\x22\xf9\ \x09\xd7\x10\xfc\x3c\x9b\x7e\xfd\xf5\x96\xce\xce\x7e\xc8\x48\xfa\ \xa9\x77\xc1\xd0\xe8\x52\x0d\xe0\x0c\xab\x8c\xb9\x54\x62\xe6\xcc\ \x02\x77\x5e\x50\x58\x34\x61\xec\xe8\xbd\x7f\xf8\x1d\xd8\x08\xf1\ \x1c\x04\x98\x77\xd1\x36\x39\xeb\x84\xb9\xdb\x5f\xf8\x39\x8e\x25\ \xce\x4f\xd0\x6c\xfe\xc5\x33\xec\x90\x89\xd1\x05\xb9\xba\x7f\x4a\ \xb7\xf3\xa8\x7f\x4c\xa2\xd5\x6c\x55\x55\x61\x41\x41\xfe\xe0\x20\ \xf4\x05\xd7\xe4\x10\xa1\x09\xb3\x81\x03\x1d\x1a\xea\x7d\xfd\x8d\ \xa3\xaf\xbf\xd1\xdc\xdb\x3b\x68\xc0\xb2\xb4\x38\xee\x7a\x94\x0a\ \x97\xec\x39\x55\x05\xc4\x0f\x6a\xbb\xc2\x44\xde\x9e\x9a\x46\xf7\ \x5d\xba\xad\x41\x36\x58\x87\x22\x94\x95\x95\xa1\x65\x0b\xfd\x5d\ \x58\x01\x20\xc8\xcf\x2f\x58\x76\xc1\x05\x87\xde\xf8\x83\x23\xdb\ \x8d\x5c\x59\x68\x03\x4a\xfc\xe0\xec\x39\x2d\x1d\x9d\x92\xe4\x2f\ \x82\x1e\x01\x28\x9b\x82\x68\xce\xbe\x0c\x3b\x74\x90\x36\x45\x0d\ \x63\xe1\xfa\x82\xbc\x6a\xad\x8e\xc7\xdd\xca\x8a\xa2\xfa\xfa\x3e\ \x40\x73\xd5\x3c\xaa\x3b\xf6\xf3\xf3\xa3\xf9\xf9\xbc\xab\xb3\xab\ \xb9\x39\x39\xf3\xf8\x9a\xca\xca\x02\x9c\xd7\x58\xab\xd7\x38\xa0\ \x9c\x39\x53\xc1\x52\xb5\xb2\xa9\x35\x63\x6b\xd2\xad\x0e\xdb\x4c\ \x12\xc8\x93\x01\xea\xb6\x6d\xdb\x26\x3c\x0b\x73\x90\xb9\xa1\xfd\ \x58\x58\x0f\x73\xf7\xfd\xfe\x37\xed\xcd\xcd\x95\xe8\x9b\x91\x0e\ \x0e\x3b\xc3\x47\xd4\x4d\x98\x74\xd3\x4d\x37\x9e\x74\xf2\x02\x1c\ \x05\x01\x2d\x5d\xba\x94\xd2\x0b\xe3\xec\x7c\xe7\xb2\x15\x88\x6b\ \xd2\xfe\x18\x6a\x9f\x4e\xf3\xd6\xd6\x24\x9a\xa4\x34\xd1\x4c\x19\ \x95\x90\x43\x2a\x95\xee\xee\xe1\x15\x15\x65\x73\xe7\x8c\xae\x28\ \xcf\xc7\x23\x71\xdd\x77\x29\x8c\x1d\xb3\xf3\x06\xf7\x06\xae\x1e\ \x81\xfc\xb1\x27\xbe\xd3\x8e\xc7\x34\x6e\xda\x40\x61\x65\xba\xa4\ \x26\x53\x5a\x73\xe9\xb5\xeb\xf2\x25\xa8\x11\xd2\x62\x2e\xa0\x77\ \x6f\x4f\xcf\xf9\x17\xae\x98\xbb\xf0\xcc\xa1\x68\x22\x51\x36\xe2\ \xc9\xa7\x9e\x86\xa1\xd9\xe6\x19\x3e\x5d\x10\xbe\x6a\xe2\x82\x33\ \xaf\x63\x4f\x35\xed\xc5\x62\x91\xa6\xa6\x64\x7f\x7f\x5f\x49\x49\ \x04\x82\x86\x6f\x96\x40\x4c\x3c\x78\x54\x16\x12\xf9\xc5\xc7\xd5\ \x95\x95\x95\x26\xd4\x73\x10\x86\x2f\xac\xcf\x0d\x67\xcf\x9e\xc7\ \x36\xf9\x9b\x69\x42\xd5\x78\x8c\xfc\xf8\x30\x5a\x13\x58\xa0\x35\ \x1f\xbf\xe2\x8a\xb9\xf3\xe6\xfe\xd7\xb3\xcf\xd7\x5d\x74\xd9\xc2\ \xe5\x2b\x7a\x3a\x3b\x71\xb5\x02\xe2\x0f\x0d\x0a\x6e\xde\x95\x1a\ \x25\x0b\x50\x79\x89\xc4\xe9\x67\x2c\x2a\x2b\x2d\xfd\xfd\x6f\x5f\ \x3b\x79\xfe\x89\xb5\xb5\xb5\xa0\xdb\x4d\xba\x1b\x90\x91\x2d\x07\ \xba\x60\xd5\x44\x12\xf0\xb2\xf4\x10\x70\xec\x91\xfa\x0e\x3c\x12\ \x74\x6d\xf4\xf7\x67\x52\xa9\x8c\x71\x0a\x40\x5e\xb3\x66\xd4\x94\ \x97\x25\x80\x18\x29\x1e\xdb\x21\x39\x94\x5a\x38\x26\x6e\x1c\xa3\ \x10\x1d\x30\xb1\x9c\x56\x66\x14\x0a\x64\x39\xd8\xbf\x75\xd7\xae\ \x79\xf1\x99\xef\x7c\xfb\xab\x0f\xc5\xe3\xb1\x21\xf4\x3f\x48\x32\ \x30\x22\xc5\x13\xd1\xa9\x05\x76\xef\xe9\xee\x02\x9d\xfa\xe2\xf6\ \x6d\xd3\xa6\x4e\x15\x33\x01\x64\xbb\x17\x7d\xfa\x05\x94\xf5\xe7\ \x14\x26\xcc\x2b\xf2\xcc\x61\x5e\x67\x95\x80\xd1\x47\x1b\xba\x3b\ \xbb\x52\x28\x2c\x33\x37\xbf\x12\x96\x5d\x51\xd1\xdb\x2b\x48\x12\ \x78\x6b\x64\x8e\x10\x32\x4e\x01\x24\x41\xf5\x67\xa6\x8a\x47\xa6\ \x7a\xc1\xcd\x8a\x49\x7e\x11\xef\xda\xda\xb2\x03\x03\x9c\xd8\x71\ \xff\x6e\x8a\x36\xcc\x69\x62\xa6\x1d\xc7\x84\x64\xdc\x3a\x9a\x60\ \x8a\x4b\x4a\x6f\xbf\x7d\x53\x62\xa0\xe7\xa1\xbb\x6e\xc3\x0f\x20\ \x88\xd1\xe1\x16\x91\xc2\x91\x32\x62\xf2\x9f\x8b\xaa\x11\x4c\xb2\ \xfe\xad\x37\x67\xcf\x9e\x0d\x28\x67\x3a\x30\x21\x23\xdb\x07\x65\ \xb3\x46\x57\x54\x5f\x8c\x6e\xe2\x54\xb7\x67\xe3\x20\xa1\x3e\xa5\ \xa5\x89\xf9\xf3\xc6\x25\x12\xc0\x9f\x32\x2e\x44\x19\xc0\xf4\xe1\ \xfa\x96\x44\x1e\x8a\xf1\x80\xa4\xae\xac\x4d\x79\xec\x85\xeb\x3a\ \x26\x5c\xd2\x16\x59\x82\x16\x5f\x70\x19\x90\x4e\x7b\x47\xb6\xa9\ \x25\x33\xb6\xce\x35\xec\xa2\xe9\xeb\x56\xa5\xf3\x2c\x0f\xb4\xb5\ \xd1\x62\xf8\xb3\xac\xb5\x20\x4e\xa1\x1e\x87\x9b\xc4\x34\x9c\x9f\ \xbd\xb0\xfd\x0b\x1b\x6f\xba\xec\x9a\x4f\x9e\x38\xff\x64\x70\xaf\ \x91\x68\xc4\xce\x4e\xe1\x95\xff\xf4\xfa\x1f\x0b\xf3\xf3\xc0\xb2\ \x23\xa6\x51\x12\x47\x23\xe0\xf0\xd0\xe3\xf0\x91\x47\x54\x9b\xcf\ \x91\x5b\xc3\x21\x94\x96\x24\x64\xbb\x2e\x2e\xcb\x41\x53\xd5\x60\ \x9a\x23\x49\x1e\x1c\x4a\x1f\x7a\xb3\xb9\xb2\x32\x66\xaa\x74\x21\ \x26\x5f\xd1\x27\xb8\xb6\xee\x1e\xa1\x2f\x89\x04\x4b\xe4\x31\x50\ \x74\xed\xed\xe9\x92\x22\x8e\x0a\x23\xa1\xeb\x50\x9f\xe8\xb0\x8e\ \xd9\xee\x01\xb4\x5b\xdf\xc8\xae\x91\xd9\x7e\xf8\x8c\x45\x48\xfd\ \xbf\xfc\xd5\xaf\x1d\xda\xb7\xf7\xb2\x2b\xae\x4a\x0a\x52\x99\x47\ \xa4\x1b\xc2\x40\x85\x05\x85\xaf\xee\xd9\x3d\x7d\xfa\xf4\x21\xa9\ \x35\x86\x4b\xcc\xed\x83\xfc\xfe\xc1\x75\x34\xcd\x4f\x94\x2b\xe9\ \x92\x48\x1f\x00\x46\xd1\xcd\x29\xd5\x4e\x80\x0b\xf9\x48\xe0\x8c\ \xa6\x4c\xa9\xaa\xa9\xae\x8c\x89\xca\x17\xcd\x22\xd1\x29\xa9\xec\ \x05\x90\xc7\x8a\x20\x4b\x47\xc1\x6d\xb6\xb6\xa1\xaf\x61\xf0\x48\ \xfd\x50\x6b\x6b\xba\xb8\x48\x76\xb0\x09\x7f\xaf\x40\x17\x19\xb7\ \xfa\xc7\x73\x9b\x58\xf6\x2f\x2d\xb8\x0c\xf8\xdd\xaa\xea\xda\xcd\ \x77\xdd\xd5\xb8\xff\x8f\x77\xdf\xfa\x59\x24\x5c\x08\xf0\xa2\xeb\ \x18\x59\x58\x34\x8a\xfe\x9c\x03\x7b\xf7\xce\x9a\x39\x13\xf9\x00\ \x24\x62\xbb\xa1\xb0\x06\x99\xeb\x31\xd1\xc3\xe1\xaa\x70\xa8\x43\ \x98\x10\x9b\x17\xfe\x5d\xbb\xbc\x25\xa4\xe6\xcc\x9a\x05\x55\x2d\ \xc2\xc8\x8e\xa9\x26\x3b\xae\xb2\x5c\x32\x06\x11\x47\xc0\xec\x38\ \xc5\xc5\x6e\x69\x69\x34\x1e\xe3\xa0\x22\x0a\x0b\xb2\xb2\xbe\xe8\ \xf4\x25\xb3\x5d\x5d\xc2\xc7\x41\x4c\xba\x91\x49\x77\x31\x0d\x23\ \x1a\xd3\x57\x6b\x30\xb4\xdd\x3f\x49\xaa\x04\x42\x1a\x39\xc7\xfa\ \x0d\x9f\x39\x7e\xf2\xf8\xcf\x5e\xbf\xf6\xd0\x81\x03\xb8\x4a\xc8\ \xa0\xa8\xb0\xf0\xcf\xfb\xf6\xa1\x86\x50\x53\x5b\x8b\x1d\xec\x8e\ \x27\x12\x93\x0f\x28\x32\x4f\x0e\x54\xeb\x8c\x6a\xa9\x05\x4d\x2c\ \x40\xa1\xfa\x4b\x27\x5c\x14\x2d\x18\x63\xb9\xa8\x55\xbb\x53\x1b\ \xbb\x96\x97\x47\x1a\x1b\xc0\x36\xa8\x59\x59\x50\xf9\x78\x2c\xd3\ \xd4\x94\xed\xea\x8e\x54\x94\x03\x9c\xb0\x63\x98\x98\x2d\x08\x29\ \xf1\xac\x69\xa1\x35\x05\x6e\x53\xb6\xa3\x36\x5b\x50\x91\xcb\x96\ \x2d\x3f\x6e\xf2\x71\x0f\xde\x79\xdb\x85\xab\x2e\xbb\x64\xd5\xa5\ \xe0\x36\x7e\xb5\x7b\xd7\xe4\x89\x13\xb3\x92\x6c\xb5\xdd\x19\x1d\ \x1e\xd0\xa0\x00\x2e\xd3\x51\xcc\x97\x67\xe4\x24\x6b\x94\x31\xb9\ \x86\x4c\x65\x3a\x51\xf0\x66\x1d\x58\xc4\x10\xa1\x75\xee\xe4\x09\ \x9e\xcf\x95\x73\x3d\x15\x5b\x0b\x50\x5e\x58\xc0\xbb\xbb\xd3\xed\ \x1d\x19\xd7\x8a\x9b\x01\xb7\x63\xbb\x1b\xbb\x9d\xd4\x56\x9c\xf0\ \x82\xbb\x81\x8c\x26\x4c\x9c\x78\xfb\xc6\x8d\x2f\xfd\xe4\xc7\x77\ \xde\x76\x33\xda\xa4\xf6\xff\xe9\x8d\xe9\x33\x66\xf4\x88\xd6\xcf\ \xac\x1d\xe3\x73\x99\x98\x47\x66\x11\xe8\x77\xed\xcc\xd5\xea\x82\ \xb0\x68\x40\x9b\x22\x75\x54\x03\x96\xd8\xce\x75\x7b\x35\x39\x30\ \xb9\x25\xc0\x1c\x46\x23\xc2\x4f\xa3\x9b\x3a\x12\x35\xc1\x8e\xf7\ \x26\x59\xff\x60\x74\xc2\xf8\xc4\xd8\xba\x18\x67\x26\x2f\x77\xc3\ \x26\x66\x34\x28\x20\xa6\x9c\x32\xa2\x7b\x86\x8e\x60\x40\xc4\x72\ \xec\x77\xf3\xcd\x37\x17\xe6\x45\x2f\xf8\xc8\xe2\x81\x54\x1f\x4a\ \xbe\x28\x99\x1a\xfb\x32\x9f\x01\x01\xf9\xf2\x0a\xee\xf5\x49\x1f\ \xd3\xc4\x82\xd3\x86\xfc\xf3\x23\x3c\x6c\xec\x2b\x54\x38\xb2\xd0\ \x0e\x87\xd5\xd9\x99\x8e\x47\x79\xaa\x5f\xcc\x5c\xc9\x8b\x3b\xa8\ \xc7\xc5\xf3\xa2\xe3\xc6\xc6\xa5\x76\x38\xa6\x2a\x19\x36\x31\xdb\ \xb8\x6c\xfb\xd2\x65\x19\x66\xd7\xc4\xcd\x81\x64\x41\x54\xb1\x00\ \x98\xbc\xe4\x92\x55\x23\x6b\x47\x02\x4c\x13\x81\x6b\xdb\xaf\x99\ \x0f\x3f\x6c\xaa\xe1\x58\x7d\xd2\x3c\x47\x55\xc3\x6e\xc7\x60\xde\ \xdc\x1a\x83\x5e\xbc\x0c\xc2\x4c\x98\x91\xda\xc4\x54\x3b\x00\x7c\ \x70\x5b\x5b\x66\x70\x00\xfe\x38\x06\xb6\x24\xd5\x9f\x05\x0f\x89\ \xeb\x17\x0c\x1f\x73\x86\x32\x5a\x28\x3e\xce\x2c\xb7\x93\xf6\xb7\ \xd4\x30\x9a\xc5\x16\x2e\x78\x11\xe9\x63\xb3\xf4\x0d\x0d\x0d\xa0\ \x8a\x30\x02\xaa\xc9\x34\x2f\x20\x2c\x20\x1f\x61\x66\x4f\xd3\x34\ \xdd\x1d\x04\x61\x42\x1a\x14\x6a\x3f\xf6\xcd\x7a\xf4\x26\x36\x2b\ \xd3\xcb\x72\x6b\x9e\x8d\x6c\x58\xc8\x32\x10\x6c\x53\xa6\x24\x20\ \x29\x04\x2f\x84\x8b\x43\x87\x78\x5f\x2a\x5d\x5a\xe6\x72\x5d\x06\ \xf1\xc6\x75\x59\xd8\xfb\xd8\x26\x66\x64\x14\x2e\xb7\xd9\xa2\xb1\ \xa5\x43\x74\x1a\xe8\xed\x9c\xf5\x55\x5b\x83\xfc\x81\xcc\x5c\x9b\ \x37\x57\x83\xbc\x07\x37\xc0\x5f\x4c\x96\x61\x66\x0e\x2d\xf7\x37\ \xaa\x83\x55\xe7\xba\x99\x5d\xd8\x11\x80\x5f\x7a\xc8\x29\x28\x60\ \x59\x3d\xfb\x4b\x36\x8f\x52\xf7\xab\x2a\xe1\xe3\x32\xb0\x67\x5d\ \x5d\x7c\xef\x3e\x28\x94\xec\x68\x30\x50\x83\xd1\x68\x3e\xee\x8a\ \x6e\x80\x9c\x8b\xa1\x01\x8d\x4d\x19\x3d\xa2\xca\x44\xc0\xbe\xac\ \xf9\x91\xcc\xf4\xe1\x06\xca\xbf\xe6\x2c\x7e\x13\xcb\x6a\x61\xc8\ \x1c\x88\xdb\x1a\xc4\xb9\x9d\xcc\x73\x3d\x55\xc8\x3f\x31\x9f\x26\ \xdd\xb1\x88\x4e\x0b\xe4\x05\x39\x6f\xbe\x95\xc5\x04\xea\xa2\x62\ \x37\x9b\x56\x84\x88\x01\x51\x7a\x86\xbd\x6a\x25\xc1\x2c\x31\x28\ \x94\xa4\xac\x99\x13\x98\xd3\x36\x0c\x08\xb2\x05\x14\x7e\xed\x84\ \x29\xde\x1b\x01\x19\xb2\xd9\x08\x28\x8c\x54\xcc\x03\xa0\x0a\xa2\ \x75\x46\xd5\xb9\xa5\xe3\x96\x63\xe8\x8e\xe1\x9c\xb4\x13\x9e\x35\ \x9c\xce\x38\x03\x82\x84\x05\x19\x22\x6e\xbb\xbe\x3e\x93\x9f\x00\ \xa6\xcf\xda\x45\x0e\x5f\x07\x91\x57\x6d\x86\xee\xa1\xdb\x90\x29\ \x2a\x9f\xf9\x1a\x53\x08\x54\x1d\x43\x83\xc2\x4e\xc7\xa8\x8f\x91\ \x51\xa0\x40\x98\xb3\x1f\xce\x5f\xe4\x71\x42\x51\x2c\x98\x6a\x78\ \x8d\xe4\x76\x35\xd8\xa5\xea\x94\x23\x11\xb5\xe6\x60\xc9\xa0\xf0\ \xa7\xfe\x68\x36\x91\x27\x26\x07\x82\xea\x88\x47\xdd\x82\x42\xb7\ \x37\x69\xa6\x8e\x4b\xfd\x31\x9c\x3c\x22\x7e\x96\x93\xb2\x52\xe3\ \x14\x3d\x22\xd7\xb1\xc6\xcf\xf2\x9c\xcc\x8f\x8d\x7a\x7c\x55\x7f\ \x4b\x58\xc6\xef\x50\x91\x2b\xa0\x3e\xe1\x47\x1e\x3e\x4d\x88\xa5\ \xf6\x5a\x73\xe9\x71\x45\x0d\x66\x94\x54\x2e\x35\xc0\xc8\x36\x74\ \xa2\x4b\xb9\x87\x97\x69\xaa\x1f\xa8\xfb\x0a\x41\x2a\xb8\xc8\x3f\ \xd3\x19\x3c\x3d\x61\x9d\x08\x05\xc9\x24\x47\x45\x08\x9e\x58\x4d\ \xe9\x57\x55\x0a\x87\x48\x62\xb5\xca\x34\x2d\x69\x8d\x4f\x83\xbb\ \x8a\x7f\xc9\x06\x04\x64\xfb\xe6\x70\x50\xb7\x7d\x33\x49\xc7\x88\ \x29\x3c\x27\x34\xec\x86\x0c\x6d\x66\x6b\x10\x91\x37\xae\x2e\x28\ \xdb\x38\x88\xfb\x07\xcd\x3d\x1d\x53\x66\x0f\xee\x51\x28\x51\x42\ \x14\x32\x89\x69\x2d\x2c\x8c\x34\x36\x66\x30\xcd\xa9\xa2\x32\x82\ \x8a\x34\x77\x72\x84\x1b\xe6\xef\x0a\x61\xa1\x39\x6c\x76\x5d\xcc\ \x36\xb1\xb0\x81\x04\xfa\xb9\x49\x7d\x8c\xdb\x0a\xcc\x5c\x0f\xbf\ \x06\xc7\x58\x59\x2e\x13\x73\x98\xe6\x37\x64\x42\xa1\x35\x48\x3b\ \x27\x9d\x63\x33\x3e\xcc\xab\x16\x44\xaf\x76\x7e\x42\x4c\x6b\x1a\ \x18\x04\xf0\x73\xe5\xd4\x05\x91\x4f\xe4\x57\xc5\x9a\x5b\xd2\x6d\ \x1d\x43\x53\x26\x83\xfb\x74\x74\xa3\x90\x69\xf9\x50\x84\xbf\x96\ \x0e\x0f\x76\x56\x5a\xa9\x86\x21\xb1\x08\x1c\x0f\x67\x23\x14\xb3\ \x8c\x68\x8c\xfa\x04\xe7\xf5\xbf\x33\x13\xf3\x1c\x0e\x69\x8c\xdd\ \x82\xe7\x84\x86\xf3\xa8\x2f\xab\x92\xc9\xfa\x07\x30\x2e\x12\x74\ \xa6\xb3\x3b\xd4\x11\x79\x32\x89\xa6\x1e\x67\x44\x65\x4c\x1a\x9d\ \xf4\x56\x54\x4e\x52\x05\xd4\xe0\x8b\x58\x2c\x6c\x68\xfc\xa8\xa3\ \xe3\x08\x48\xde\x21\x64\x06\x94\x3a\xd9\x45\xb1\x9c\xc6\x65\xfc\ \x4e\x58\x7d\x72\xe6\xdb\x01\x0d\x0a\x00\x45\xd3\xd7\xc1\xb9\xf5\ \x6a\x8a\x40\x2c\xe3\x3c\x3c\xdd\x5a\xf9\x57\x98\x55\x77\x37\x1a\ \xa9\xc1\x0f\x09\x74\x83\x6c\x0b\x08\xb1\x37\x99\xa9\xae\x72\xcb\ \xcb\x22\xa8\xc7\x66\xb2\x81\x2e\x6a\x66\x63\x51\xaf\x6f\xd5\x09\ \x12\x66\x06\x22\x42\x3a\x98\xf6\x41\x1d\x8f\x86\x15\xcb\x89\x9b\ \x4d\x62\x11\x0e\x5e\x81\x18\x6f\xbf\x60\x2a\x90\xee\x05\x78\x15\ \x4b\x14\x3a\xd5\xb0\x32\x14\xc7\xf7\x5a\x97\x50\x17\x36\xa4\x03\ \xcb\x02\xaf\x8c\x18\x0f\xd1\x43\x40\x08\x67\x48\x1d\x40\x9f\x95\ \x95\x46\x28\x01\x70\x5d\x66\xdd\x8e\xd7\xa9\x6a\x95\xa2\x59\xce\ \xf1\xe5\xcb\x1a\x14\xcb\x81\x8a\x20\x3e\x69\x1e\xac\xe9\x74\x09\ \x1b\x4b\xd8\x64\xec\x27\x1d\x38\xc4\x08\xda\x2b\xe9\x44\xa3\x34\ \x89\xc2\x70\x20\x39\xc0\x44\x00\xf2\x84\x4c\x2c\x94\xa6\x72\x67\ \xd4\x28\x70\x60\x4e\x5e\x9e\x78\x3e\x87\xde\x1c\x4c\x27\xc1\xe1\ \x93\x56\x66\x73\x92\x48\xc1\x29\xc6\xa1\xd7\x65\x10\x21\x85\x89\ \x86\x98\x9d\x87\x17\xac\xa0\xc2\x37\x7e\xfc\x78\xc8\xe8\xd5\x57\ \x5f\x45\x95\x86\xc2\x39\x4a\xa3\x31\x51\xd9\x89\x90\xaf\x31\x2b\ \x6e\x68\x09\x7b\xe8\x80\x93\x46\xe2\x6a\x74\x73\xc7\x8e\x1d\xab\ \x57\xaf\xb6\x69\x33\xeb\x28\xc7\xbc\x9a\xc2\xe1\x5e\xdf\x22\xf7\ \x9a\x59\x91\x2f\x58\x6f\x0f\x62\x02\x0e\x0a\xdd\x29\xcb\x93\xf4\ \x8f\xec\xe0\x18\x3f\x3e\xf6\xc7\xd7\x07\xe3\x79\x28\x25\x70\xd5\ \x56\x6d\x19\x84\x00\x3e\xf4\x12\x21\x57\xbf\x46\xc2\x9e\x9e\x2c\ \xc7\x77\x64\xeb\x14\x74\x13\x49\x13\x68\x8a\xea\xea\x6a\x3c\x52\ \x94\x40\xd1\x1c\xf7\xf4\xd3\x4f\x63\x2a\x06\x25\x19\x2d\x2d\x2d\ \x01\x93\x09\x83\xa3\x30\xd5\x17\xee\xe3\xc4\x57\x94\x43\x20\x6b\ \x74\xfc\x61\xd8\xab\xaf\xbe\x7a\xf1\xe2\xc5\x38\xaf\x17\xfb\x19\ \x35\x8d\x71\xab\xaa\xc1\xd5\x8f\x16\xed\xe3\x78\x78\xc6\xee\x35\ \x71\x94\x68\xd4\x6b\x0c\xb2\x82\x39\x9d\x3c\x29\x2e\x43\x81\x71\ \x6e\x62\x36\x1b\xd3\x2d\xac\xae\x6e\x76\xa7\x17\x1f\x69\x6f\xe4\ \x1b\x9f\xae\x6c\xea\xd4\xa9\x6a\xb2\x90\x7c\xc8\x98\x73\xbf\x7e\ \xfd\x7a\xe3\x83\xc2\xed\xae\xe1\xc8\x1d\x7e\xf9\x5d\xb8\x79\x98\ \x6e\x10\x02\xa2\x97\x6a\x60\x8b\x68\x1b\x97\xf6\xe8\x0d\xa5\xe0\ \x99\x01\x8a\xef\x88\x72\xf5\xbf\xd7\x08\x66\x5e\x50\xe0\x52\x91\ \x5a\x58\xb2\xfd\x0e\x96\x1c\x73\xfd\x43\xd5\x0f\x4b\x17\x24\x1d\ \x91\x26\xdf\x4c\x4d\x2d\x34\x2b\xc0\xf4\x01\x0d\xe7\x80\xc2\x6f\ \xfb\x1b\xee\xad\x81\x76\xa3\x2b\xe6\x5d\xd0\x0e\x06\x28\x60\x1d\ \xd6\x5d\x88\xf0\x1c\x98\xb3\x4a\xea\xc4\xad\x7c\x95\x29\xd3\x0a\ \x90\xce\xf6\x24\x7e\x95\x9b\x08\x97\x2c\xe7\x79\xaa\x79\x86\x34\ \xed\x31\xab\x5b\x44\x65\xd7\x14\xf3\xbd\x62\x85\x94\xc6\x37\x3e\ \x5d\xca\xac\x99\xb3\x9e\x7b\xee\xb9\x39\x73\xe6\xda\xdd\x96\x76\ \x0c\x79\x3b\x02\xf2\xb7\x8b\xf1\xe1\x62\xbc\xdd\xca\x49\x09\x0d\ \x1c\x36\xa6\xe1\x74\xf7\xf4\x8c\x19\x35\x0a\x29\x94\xac\x17\x19\ \xa0\xc8\x99\xe6\x5c\x7d\x2c\x84\x7a\x6b\x8e\x93\x4b\x44\xcc\xea\ \x00\x76\x95\x3a\x1a\x3a\xc8\xf4\x49\x91\x58\xac\xed\xba\x09\xdd\ \x3f\x3e\x9e\x21\xe8\x4f\xf4\x5d\xfc\xf2\x97\xbb\xee\xb8\xe3\x0e\ \x54\x23\xf4\xdb\x20\x1c\x34\xfa\xa2\xa1\x30\x9b\xab\x25\x3c\x20\ \x91\x00\x62\x1e\xce\x07\x99\x5f\x21\x11\x50\x8e\xf0\x3e\x70\xff\ \x54\x41\xdc\xbf\x7f\xff\x8d\x37\xdd\x24\x44\x96\xf5\x38\xe9\xa8\ \x89\xee\x36\x0e\x1a\x3e\x86\xe5\xa6\x5c\x99\x93\x03\xd7\x0c\xf7\ \xf2\x98\xf0\xf8\xea\x05\x03\x2e\xbb\xe7\x9e\x7b\x1a\x9b\x9a\x0e\ \xbf\xf5\x16\x62\x8c\x2b\x7b\x31\x8f\x36\x34\x38\x16\xd2\x0f\xbf\ \x80\x8a\x3b\xf6\x0b\xff\x72\xbc\x7c\x8b\xe5\xb2\x00\x3a\x3b\x7a\ \x8b\x20\x1a\x30\xfc\xb4\x3e\x69\xd2\x24\xc0\x5c\x3c\x2a\xdd\x0c\ \x6a\x80\x22\x23\x7e\x07\xc9\x4f\x56\xbd\x54\xce\xea\x1b\xb6\xdf\ \x50\x64\x66\x8d\xa9\x92\x21\x57\x49\x03\xb7\x5e\xd7\xe7\x0c\xbb\ \x1e\xf4\xa9\x81\xf1\x31\xc8\xd0\x60\xba\xa6\xba\xa6\xb6\xa6\xe6\ \x6f\xf2\xde\x4d\x24\x36\x68\x42\x93\xcd\x94\x62\x5a\x1f\x19\x49\ \x54\xbd\xa9\x45\x33\x06\x7f\xdb\x57\x83\xca\x19\x14\x7f\xb3\x25\ \x2a\xe6\x60\x29\x09\x14\xc9\xae\x6b\xe1\x83\x64\x1b\x56\x31\x66\ \x19\x6e\xdc\xb8\xd1\x9b\x09\xc9\x7d\x2f\x02\x0c\x64\xf3\xe1\xf7\ \x61\x84\xe6\x8e\xe5\x58\xb7\x66\xdf\xfd\xbd\x8f\x0f\xf8\x89\x9a\ \x10\xc2\xa8\x87\xc7\x11\xf3\xe4\xa4\x6e\x5f\x1b\x42\x2e\xe4\xed\ \x84\xe6\x75\x04\xb7\x07\x2e\x7d\xb8\x9d\xff\xbe\xc7\x17\xff\xd3\ \x0b\xee\x58\x4e\x3e\xe1\xfd\xc5\xf7\x36\xe0\x63\x20\xab\xff\xcf\ \xef\x93\x36\xec\x33\x7f\x5f\x53\x8e\xb1\xf8\x34\xe8\xfd\x25\xbc\ \xb8\x61\x96\x37\xa7\x36\xe6\xe4\x5f\xc2\xbb\xe5\x64\xb6\xfe\xa1\ \xc7\xff\x3f\x1e\x9f\x29\xce\x54\xe0\x9c\xcf\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x0c\xf7\x1b\xc7\ \x00\x63\ \x00\x6f\x00\x6e\x00\x66\x00\x69\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0c\x9c\xa6\x27\ \x00\x71\ \x00\x75\x00\x65\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x08\xab\xda\x07\ \x00\x75\ \x00\x70\x00\x64\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x24\x78\ \x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x97\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/dialogs/configdialog/images/0000755000076500000240000000000012613140041022400 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/dialogs/configdialog/images/config.png0000644000076500000240000001562312613140041024362 0ustar philstaff00000000000000‰PNG  IHDR`Tò¥Ô pHYs  ÒÝ~ütIMEÕ'6Å’ÃbKGDÿÿÿ ½§“ IDATxÚí\wEzïž}›w%­$$„„ÈF'‹$ qì±§3 ΦU¤2EÎÉ„:R™`àpQG°àL,cb•9q‡Au`ÈÃ& ¥ÕæÝ÷¦ý›þº¿þ¦gÞÂç²i¨§y½ófºýåïëÖišªï[ý–h­1ô‰†.¾ ÆüY¯s”ëâÓŠ¿->Yvß(UlÑ£G•Ž­´9\¦ïI†x+I’ hjµZ___µZ#l,ûW|*ûi´Òü“"²õ®åÒOèÅ{JW+º?ú,_y­å‹t= 546V:::èá&¹^xáÄŸ4qüHµªí¾;ØîeöÕÂïô3û“:/ÒßöÊlÑ”v O‹D}×Ñxœu¢¿ùfãŠÏo¿ýö@ êÚuæüé´ûîºzÝ7›*í§é1p@d£Ê. ]e×ôEeÄ&þ³Ýa9í}ø')yª½ÕØkB˜îUö>÷ щ#¨À_à‰˜®v f|Æ£©=r‘´Bkik=ð ãº»{ðLpYEû~kmm;¦s`p¤R©§—q-Km¿û«q=X\' è3ûL õ˜$q÷7_O<öƒî÷t0í&©ÃþOŒq LîNO† Üx\tAáxŒÒÆÖ6ààä‰Ö•H,U«i­–B"e_ý¸Œ½Í÷k•Ú/†ºSm•}©¥ÏÌ0ÔcïIù¸OüÕe¤¾ß¿"¼T0#­uL5O‚Œ‹ìšuOAVAe]9 ž‘LZ³¦q$ 4búaðÆ‘¼èÒžÍxyY¤ÒÅíÆÁâØHô(ž¶“'9> dëÌ£ëþ”'M;a,ºv4ÄãÉŠžaiYy…`Nøú·"ÞMìMX¸–â*Uîg&@äÈÛ Z;“#2êÜ å~àðe* ›#,Ý”èˆÔ@ Ž*’DkÉKžüúk·zÚËž”–ÑQ†¼Â)-3oÐbDnÊÏŒÖÖÖÒÜÔ”4$°¼ðŒ(ËM¾ ©Ä8¡’&n¶Ú½ŸIŽ?¸–Ÿaáµà–F°/¸v°¯¯¡¡¡DŸPŒ×v"R~šÙÄBŽx*#pâ(b¬ ¤í|-47¶óƒ?þä¿¿Z³nCGGçç_¬©Ö‚–ºÙ \e˜†µTâB™“˜j'»ž9szo_ßÔ)[M6ùÏw™;ÒßG|-žÆä`˜ÌéO©µãœt3)1µÒV’Y»ÏK·Jd3Å8q\×ý>¹òÕO—-ûëÙS;¶Þzë55׳O‚Qg FEþ4¸¿p¼\j.:ùa‚i•Qyj¾üò‹juäö|t‡íWžsΩCƒ½  âQÌ)&9v)¾ô­ØÀ(¨@’Ar&ijZ[[Þÿà£ßýþËïÿçÆJÃÿB'`Ö¬™ø\¼øÇgœqÆk¯¾¶Û¼Ý‡û’„e¿ dÓ'LRtç8}ÌÈ®Dö)[[kËïÿãÍÃ~òW@ÎGccc©WQt Jÿ:ŠŸQÏ)õ-‚Ȱ dÞÜܼô§‡ÿû‹ÏìþýŒéµâ.›fš·Œœxõ¬Ç¾§WœeÖBœdwˆÕ<+¯¡¡Ú6S¶É8°RI’„ß”¦é Èc ÆY=¶m³Í6/ô3LöƒÒŠ_‘IñD¯:JaëÕXº9@²Ù§Æ?€ ÍË Ï©è]¿¾»­½CV ÔôÇe®ááaÂÈ-oc¥©ÉyE¸r®FP·}CCC##š½‰Z­ÒÐÐÑÞîåQj!Óó8Mlwâ!ªâtŒ©U«­mm&L0NóAö óñǯX±âË/¿Œèˆ"{·®g[ßãhÍ:"ÉV[mµçž{î¼óΘoðujYDÂ8Ʊ6¤³ö²a74u®|é¥_^~ÛŒ­'ÀljjL›;:ÖnÚ¼hñ¼e?;rx`s¥!ñS'‘“DζÎk1­‰~ÁL–Ç‚p^ýõc=vÆŒcÆŒÁWÐmÅ6ºÈâ&öš¸€.¨Ÿ{ßÈïcס‹ —¦ù¶víZˆäóÎ;ï€FDGxê_¬Q¦j­­ :¼ iذ¹{a[×1 õ4·´tu5Œ;vúôß|çõïÒO(ãÌ"‹WXnlA†Md㘟H²ÖÒÒ²|ùòvØa÷Ýw‘Wòàj wÒE¦RŒ¢Y‰NDÝÚ:mÚ´|Iç{ýúMÚËe 85‰ö~šE°ÁTM:”ÖT­ÚPiªÖª—#^Ïš³Dµ_µŠ²V4±ÍïG€™£uëÖÁÚ²eKöJÑ0tB÷àŸ¸æéÑúù“`Ò¢åÔ˜9EŸ©•©›6mÂp‘Lœ8ë„Î1c¦NZ©B‘¸‘³®vq>òTø_(ÏLN‚[Î1A÷³³|1 ¤ÖC§½tvvâ‚˜Ž Ð="’DDTd1#†uŽŽRMMMmmmôýèiooÏnÓ Á¶> èb#a,ÍšPºw:¨y£ ‡JÈ~•Ámš”#˜9Æúâ‹/vuu â+:'Mš´Ï>ûô÷÷7ø&¡¡OÜFDD×1ÝE$F¹Ù‰èDêÂ(ÆO:!ÇÒ ù˜Ž3ü4½1ãýTË™8“‘¬MV”Á– N¾ä°ÌÚ¼yó§Ÿ~:eÊR(D;DÞ×_½~ýú£>º»»ÔôÄOôööqÄøZĈ ‘HEH€ˆ³Â’[Âèø–* ixœîüõ`øˆ‚Ÿ JŒaSÈ® 4Ü‚‰´…I‚goX›P2¯!>GFF 51“N: zí³Ï>[¸páìÙ³/¾øbXO=õ°#4%gEº¯´O™=#ŽfC1ŒÍý«i¼,ƒH^Xµã\sX3ìùS´F¨&åͦ´E,´Îù1 ÎïÀB„ÿÙgŸ4@êCyàÖ¬YƒkÈÎK.¹äÝwßýüóÏ œXQ0¼Q& *Æö³©úÔKDì|"y>náoÐÆ‹]o#Äîn" Eãýe úDª„™×ãÆs=ÿüó˜Õ=÷ÜsÊ)§@ÅП0™;w.;q‘š¯‡NÑt(¥#æAƲ‘T}dÖsB> â"=ʹhGÏ„²óÅ‹qS¹(Xy–’U…DN?ýtÐËÕW_½dÉ’ýöÛä4-8ˆNZ‰ô«ÑFÇH¢S42£ °c £ƒ#î”´q&]IsN ÁË”áH‚¢ìÓ-Æ!I#ÈGEæ?°Œ`¨ã?:k—]v}Dš>{¢÷oyJr† ù&mEy´ô^2»¤m-žv¸8ŸÝ»ãnòl)™ÃðNª‹/ë३Qy³£RâL‰á2@QR—zΜ9Pê„Oæ ™‹Œi=Œ˜q„/Yã¯ü@i=ÓðqD!Ë/yIKó ©ïªë M˜õˆÙ°t2(òY<Âe7@ ‚¸ÁY@%hœš®›çÕ.¨Èú^Ë@ Ánýä\¸ÃF!M2Í{á%DÏ‚ ~øah«É“'(,økøÄ5,é¥K—>òÈ#PdPsÒäûVŒ"âŠ~XðÜÅ üf¹"¦ã…4§@”GÇ'6(½§Y&&—ÖÐäß]ºT®A#rä‘GÞqǯ¼ò ¼$èxP "!äpA*Áí¾îºë6lØÔ¤,'ÌX4Úáý„é·l`!:¡=EhoEâð>Zª…ZßkØ$¬È1ä'W%’A2vƒ¡ƒ³ 9üðß~úi î0I rÕUWÁ™?þ¹çž wà 7 –ÔHëGaŠ„]=o¶ Ébù¢ãÓ±¦½íåæI‡k1Œ(hï“ûÂP•ãæ!b¶@ÁÉ@Ùxp5V­ZuÅWÜ|óÍÐkPp`Æë¯¿þšk®Ê£R¶(BÆÔTô¿¾3ù”Bã;• 9 ŸîÒ!oj¢o oÃe†L,ƒ¿’ü/ËíÈÑ×€× Œ|ƒS¶×^{Íœ9ó¬³Î‚ Öƒ‘½Ç{Àÿv¥=„ ¢‘N(ý‹!ã’B¦¼¸Í3 '3TÈÉÇño¾›‹þïAY›“IS•µE0Ic‡¥ñEií*+eç±J™âSªœÈá¼`°s0ùh£ ðgVð!R2Zïè(âIÀè£>º÷Þ{‚epíµ×B¯Ýwß}ÀÎ-ÓΈmF»1L±Ž”LÐÇ.@Hz[ D¹Ä§¼fX+í‘Qaí JeÔ¨eÇô‹î)®6„ôi§öÐCÁ°†çP`!¹ö裂¬ ø$1:tÁò»žTe¤+Ÿ#nWÿ âÒ ‘µBñ4û,bCZÏ‚56 [•ê&ꤩ‚¹îºë®'Ÿ|î:?zì±Ç`aB¬ª…Æz1¢ G©ŽÓA¾Ö)?ç`O^tI"ÊÙ:¾t6®"ûÈ„t <>º±«´Nƒ0Õ€v€"Ûx úï¾ûîcŽ9_-ZNíRõ/%Q9ùµì_jãJ>‹Æ9§wbþ2Î/‹ëƒ¸Ë_‰WЯdìò83SJA47G ˆgXØ—]v‚~ÐÔqLJ¿Î›7I\Ÿ låIÈ•Ä&$û¥ªà¬†Ð~^9k(ePˆøà£VÆÔÁRIF®6su A©½óÎ;€ÝvÛm·ÜrË{g„VCµB+±-LHjä{Ýt•t5Bý3e.Ýès^º Þ˜â+ïDèDHEèD+§ní9çœsþùçÃûÇü!§¡õo½õVâ2[…1B‘6‹¢:Òbš"?il„0ª–Ú?W6Èy’𾕼Q ’¨>H;KQ׳}Šª7’RvpÃlñ°’kˆ“ YÔÓÓªÙn»í Œ.¼ðB°!Då6¤@‘ˆJ´<ÖOÒÜáÍv»ø^N’FåäJ ç^D e}Ïø tZ”AÜß”êãdq¼÷*I ø ±£;ï¼Ä‘×ÎŒoN/®©‡ &‘W Q0-¤„<+Y È© ¥ëo½_+â&ãd6¥NPÙÃItþ,j\òlZC@äSûöÛoYí¿ÿþèùå—AAÄÆüqØ™€Rêû¢ Ò²þÀ¨|pB™¼Y¬DiCéf7ù“b}«–5ºdŽÒÌ3É”¢g 2hß}÷FÈ!¢8ÙÞ{ïM<ª—AÍAB!*ŒØq+Ùüijü¨ÝŠÃ*>¿UÀHZNxØ‚öb«ˆwâÊ܈tÔÆ2(EóÇ)Æ›nº  tîC `áú«¯¾‚lB2n ä~¢­Ä›×JšR¤úàWðp¹¶Œ :-î,£…CŸäs&»WE£¹è"E=‘Þ‘ÎzÑ¥À“á¬!£ Hè(­„ÕvØa‡áO0øçõ¬D—ïÔùðžñŠÉ!0ľÃé/­ƒO ÅBѬ´cÄ\z!E2_sx¨4½E¹0Hˆg–î¼Y)r[. ­ÀkL}$¤K½yÞî*8tpÏ¥¨[rþ‰1UQ&$냜Yá7cÕSð=,t&Þ?QDGD€JNòèÜx㨇<è ƒ æ˜C¹”+Ïh23‘•ã/­òQ1W{à’…}Ã.¥¡âú àåf,bÙðÑ:Þ‚£ Û\å:sÕW@0@˜9¾’YH7@`ôÁŒˆëìPuIg#wf ;qx ^³ÿÓ‚`y½ž*ÑñJ@Õ(ÝXO5Ïb¬¡˜Î‹êœòe¾bΜϑ¥.ðâ2’J`(Ö`½eË–Aô ;t/^ +œR.ƒr¦¯PÞ¶f¬³¹yB{;Š\[ÆŒA•kcW×8䩾‰íçiŸ¸FÑ(_ý!bÒ~'b•%Eq d)gI“´#¤AÙ?óÌ3‡z(ô:®E14:A>ðfW¯^°‘4¸ 2Èå t~3sxhø¹?ÜTI’†J[[ÒÒÒ1aü¾Z;}§ Vù¥ÆèØ`È×(&ÒPÔnŸGˆŸÐÄ0E™ŠXë9‘æŠ"ªE­O ( ^ï¹çžC q~¼Q‘·Þzë7Þ dQ&$‹àØZLMƒ½+Š× õ,;òÀ+±|ŸE{ƒ’Q)ñ›ßüÛß…ëT‰Mw‰q…½vëO(îˆí ¶,dVŒ0ÂXiÐE‹®(wŠèpíS”J–[T ‘J*e¥NâwÆ2ÈUŠ¥´°äÖ[=¿¯·×ÝæNÒ±jÕêöÿ‹Õ¯¿ÕÒ4´`ÁÂR¡[o'"â³Ð¤°‰È¤ä´´4Û²'~x ¹[Í4´ã3þáïÏýÁvìë­{DRÁCÆ-ª”rE²¶²Cµê•ßë…[¶ôê$ yQ-Ò\?äO2&ÞàŸË8¡k¿ƒáï.<ñWÿôÄÿþ¬·o5>½}ƒ#N:úbÙBžtªµÛ¬¯£¸ßˆ¨œÑù,h8,ìcÃ÷‰Æ®ýúëqã:6nXsÕ¥'uv´ :1—ÝŸæÜKýå –Žß\ÈÇæÁ‘Bši | ]ÞÙÙqéù'Âëéé=oØØ-u½!:»':ñHçÏ÷PõCâ£|¥“2ùc€ü™ê›8±«±©±½­m\׸Á!8\ “ˆå¨:å …2XgeÊY:bß|È+†Ðl÷yýÆn0"xèäÉ“øøãv[‘”ñU|ò_(Ù|&£äùý9òšÑH­šÁ°f6Ã[ “/ñÙT>WɺÊ'%"‡š7¶˜ ›…ªÏ•ÒWäFðì •Ì^0ôËïv‡cÈéæúó@ÏDP±¨·ßøe½¤„ŽP2:eBJÌè°‰%dG OïR¡Q¸´ŠƒÛòü ¢‡‘*dû‹Gt‰#kÂNûª¤Œ¡t#­ËÎ"Ht±¦4| ÛMp¹¼Ÿ¤EÜÞêâáóžï¢ã„¬Qt„k¸PP”«²ª7É‚[5U¿ßÕ¨ž³äq]ŠûC,Øó\¢M8* Â1¦p,[83½ü^d•? ˆÎ‹Šö¬˜ÀË*lÏT*6ÜYÄÙ{Ó`ÇbW½ò%iÑùAª£½mü䉤׵7~C‘Ä( §t¹ÓeXTëp$‡fññ~ƆZ暉~“ÿ€Ê¨bÍgLN®™B±GHúbt[+UÂ;ˆs&/¼´êâ‹o„Úbç Ðf ‡q†È'Ütþ¬"AÇ>®G‹éxâeç3iyH’*HøüÊØhPuv1Ee ÍM«^}“6û¥öp>Äùä“O–ßÿ@ÿ 4kr•Cò³Î9—²Ç”WÅG>)>«0ÖÄL€&ga *÷Yç O-X4ÖêŠÆtvœvÚ©´q[—ïø¾•vËñÂa·ºô,¥ÿ«‡ÝRZܽ‚šñF¢ÿß…M`ߟH>zK¾‡`ôö?\Šåjº¸QIEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/configdialog/images/query.png0000644000076500000240000000433512613140041024260 0ustar philstaff00000000000000‰PNG  IHDR`U“D¾ú pHYs  ÒÝ~ütIMEÕ(+!âÕbKGDÿ‡Ì¿nIDAThÞµY[ˆ$Wþ¾ÿTOOÏegvv¢K‚l’…DŸdM4;ã…@\!‰ !^0Óð²¢qF‚ø (D ˜B .® „<$/1DÌLT–Äû 3»Ó;—Þž®:Ÿ§ªº«»ú²“ø33}êüõõÔùÏÿý—S¦\’DI6’p$É[ÒË È{ï½—¼²÷ ×Rª=‰¢™™™sæ²™ ×Î…¹ƒéM4Š;ç×7666Ö×7Ö7ÒÁÆÆz¸^_sÑ¿|~›2$øÉ©/¯Ôëõúéz½^_Y©×O×ë+§ÃÌéÓ§Wê++õƒèÏœz‰AغóÙsO½ýrîÙ;·ÂX¼¿7ž4›Íf³9æÍ{û±‰FÌ÷)ìÓ ¦¿ÙÖQ‰÷^dºµ}„IG@ªµ{©Ñ¸Ôh4KÛ͘äH!IZ¼³µ}9ö"Iù¸µ{©ÑÂh H€â£ ó7 M;Ë2#™Þl†öv#q¥kèàÀz¿¾[,ÜÙܺ £„\$™Å=,Ü5и–Þ?d•»Û"¥ð@ÈV,;»„†¡„a›"îýúônwÏ ¡ >I ›3ˆ"R©ë)Øî¾A„§#Ieö3‹Iš‘ð ˜%¤(béÝex‘̓ÄS¢ò0 (5—(Û¿ìÞ"K¤çäÌÜüáù™ ŠÌý‰àeÉäÁÐ=nRmanfrbbræðBÕƒ%RÛ‰ Ûä”ÝÜBàcRµù(Ý\TÏ* ƒù6áÑáÁ _†ØN Nɧv§×ÌŒïpNôáÈyP4:QLä¾ ‰ŠÒÇS’ÄíZ¤œÖD¼¥äÈd4 … Hô/áæ—Ÿ{ä±^|ŸC*›¿ÂïnlnîÝôÌaéç'D_™öÃsšq,ÑÔoþyí*Qä.¹ˆ-“pÈi82䥶@/MrsF/áÞyoª¯ßÑÏNË‚eúñ!†|0ªÂ»ô¹çïÚ‰$¹fs?Èk?3ç‡`©€%ŒËžfúƒó1)‹7«¿…˜~ÏÞìal9>çA'²Çk~Ç0^ÐÞY‘>þ®‰Å[Ÿ¾ Þ|`ì¢e_po$µïîšÿæ·ªÞ†Ôû9>çÆò"ÛÛþÓ/ŸùRZsHiÂé+[Êv];¾ºÞÒòWÛ#Ú³0ð@ÅÚŸèkXÜ2ÛëóÝÅi™tðTàŠMÄ€´&ïÄÄûÛÆá:Ç Èû¨§| ]3hËönyGëÅŠJôýxäýA殡}0K)I*´–Áæ Ù^üô “í2=Kð`cf4’¹­Ï¾tGÓñJ$­®©Nd@@XWÐe$Gç+‡|pŽ‚¥ølRi —V¬Ó¢MYgQ½›xøžûž›‘ЫG)*6 Á9òàÚUÓRÕ÷ß÷Èn{hÆx â ƒOÐ'ä,SþåOhªVgøLÅE¬ÿº&öêKð¡³1!õ§})>ï“5rÖºà B¤`›mÓx+Èx0’ÉÜŽ™fnÊâ]b|&ªkKŸÂÂê:Nw9È þÐdAß©ƒŠøN]„QÅ©âü ãñŠÙN>åv…ÀqÝ´S¥+…¥GÊ28R÷é‹úÜR½ø> ”鎜ÏDcç(94é™$ÓSW–:á¥\0¸£ðiXKÜÑ’[ÊðB_>°¾Qúég®a,>ž86‰>ý@ü¸ù€ÉÜõ 潯,^WKÆl‰:ņVËA|õêëŽ]{ìú£–Œs{þ­ád'&> Ýi-ì%Éût£ÛÑTm m Ð÷áå³ó"MºZE•ô§R‰‚T*QU*a>Š&œ9‹&ê{ñ57™ò`öÑÛO}ìí—S·?:+#~âì׿±¶¶¶ºº¶º¶kk«ázu5Ì@¿öÀÙ»™¨¹'—––––——–—ÒÁÒÒr¸^^sÑ/˜oc•$I’$qœÄÙ IâpÇaî`zO:çœsáp„wÃá±sÖ´BBÍ_Ô¤½bþºíÀúÂÔÿEþkV­À´n^–IEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/configdialog/images/update.png0000644000076500000240000002015012613140041024366 0ustar philstaff00000000000000‰PNG  IHDR`Tò¥Ô pHYs  ÒÝ~ütIMEÕ) týÃÊbKGDÿÿÿ ½§“õIDATxÚí\ ¸Õ•®[½¼~ûÆ[X»lB‚€(Q1âF@Q¢fâDÌ DpAKçË¢IŒÆI&Ž£d&åSBqb6 @áñöýõë·t÷ÿÞsï­[UýˆæÓ/É7–دººêVÕ©³üç?çËf³Žã¤Ói×u9çXgŒ9zÁû«ÙH+æ'³[x{Ë?ÖøXD",“É@4ÎûK®EÈ 444´~ý†h4Îy²eøÏ!3îpùÕ˜üUnef‹þÊ­Oy 5 ÞÑÛíïv|“Îd*+Ëo½å–(4ª§§»»'uíu×õ÷§„‚1‚Ç0—áoNeÞ ¸Ü„½ô¾¤¤Ìh³øÎ͵‹´’‹ òYÝ““k|9pP@ïÁø84q“ɾ§ŸzÇFÉêJKKËËËúûóèþâ±h$ç™l&“f–Â]¹òú¤êÐC‹ÇÓi¨#¤ñ„ÉÌu¨º‹k•·šë‚ãÓ ³\ônOŠÇóJŠ‹±-J£C™t®:‰B"GŽÔ7·4•dIºê,t¥ä™ôP[{[EEeUUu~A~¿Ë\õ´è G>Nó„å ðažpà†Ó ÷b|q?œCX„€ŒëÆ€¸%|ýâî.+-jkk-...,,‚“ sóÉ ÜÆÆ†ÚÚ‘îª^5mÚ a°Bû¼KÔzÍô:ÌÜ|Ój@ºÀ;¾ãKi05X”Ì•K¹B¿øÅËåe…>]9y–¨ÞÄI©$&‚|²?þø9çœSRR’H$òåB+yyyô‰%G£Â‹ Â7oÞüÊ+;ÇŒ%agÄ’ç5Hñ…wpé¡sûW‘¬Ìè³}óTàmŒæ_ß~öQ½&GÕ6ÿ4räȪªªX,–¯P¿ÁÏ›7¯³³clÝiÆ\œUÆZ·@¬DY.Qž“+™ôØî*Çá*¼¢ü‰‰òxf¾åŸô‰©˜Ïm]Ó ˆ‹Ì9¾C/…+|tÒžÜp­„!&Ü?§ïÙ,׋±),P"Bp‡@ Æ¸|&&ÔR Æ y±X˜@š9Ïf²±xL˜n$áaœ~¨!.Ò2Ë›zÖcÃ?¿U1Ƽ‚&ØÉxtßøZ"úsÒ …TØS" _ØBãC¢¯JŒZñ£¸ýL;Á1Å£±ŽÎŽƒ:t ¡áhGW'v„Ò¥úRÀý)ÁšªšÑcê&NšR^Q“É^È‹™h­àô¼µP+òs³XÉâ¯ÐE(¦ã¸´¶H\ ÔTlÁyž ÚlÆÔМQ0‹j;•¦ËÔMâ–¸1‚£ %S: ã¢\W"Å¡U2-t0RQQôøÚk¯¾øâ Ím-ímÅeå#ªk&L‚q¦”•—WŽ€Buwuµ45h<ºcÏ.žN®9súÌç/¨®™ìíI¥ú }ŽÊ \e*R6މ07×Q2f« "³µ„»$ò6œ)håzjªõS#¤¨òÐŽÖ*mba‰[#ÑàÁBw„8Ã:Œa;„›hx±ŽŽö¯~åKÏ>ût¢Xt湓&L‚XqÃGÞx¸ô(ç-m-¥•U¦N>{Î)•çô%“ÍMÍ ¯ìÙ½eë§OžrÞù7eZggg&=b E1ëæ,ƒ cøÌ ˜˜ÆA\z!/.Ýš%³bD#EÉi[ŒÞa¥´¤´?ÕÑ|ûÛß*]±bÕÂ…gŒ=¦”ÈKˆ‡ué €¹ë>ðç}‡Þ:ôÈŸ¯]7gÁ©“§N+(,ž8eZWgÇk{voÚ¼qöŒ™ŸX}]yňŽöv‰8ˆœ±°ŽFÓäœýÙ©••šìÔ$܃¸÷ÏÆAd_B÷p›Y½ѤõB¾™ôËP%Rwbö…v”—•¿òÊŽ?³ÈèöÛï=åÔÓ…¼ú‡†ñ___RçRÄ‘ÈØñ¦L‡ÕÒܸcÇÏ^Üòý—ùY±ª¼¼Ê¢³ç~è´íÿýÜõ7\»ò•ç/[ÑÝÝ $A‰Ž67×äóÂÂ(Û&ûÌgåT´÷ÕR‹Â à fE1eP$#£8fh {B@Ð…ÊÊÊêêš'þã[U[¸î† K–\¯˜ìímmmAàv)ñE¨bÚsÊÏ¡AD­®/¿ `ÅÊK/XvѳÏ|ïñïžqÒ)g.]•Áé–^ôіƆï÷ñ]¿ÜyË­wº‘¼¾d/ìÚg/Žm]Ìxf'ÆLªÁæøý% Ǹ4¥fzUõ´µ éeP/rPR©>{{Åå¹`ÁÉgžu6¾¶µµ ¹D"ì,R”.R墢ûüÊgœùðÝ›››ó ŠÀÑ456ž»|剋ÏûÔ§¯ÛùòK•#ªpuì½\t²21Š:c†²•/Kwn\5àâK/½ôÐC=ðÀƒ3gÎxêé-¤5òAeÕCΪ8+¾°¸ªp¶u²®pŸ±Xgij8zù«ÇŒ{Ï?þ•׎=¦®±iÚ¬F·ù»ÿ­/uîÒó[š›aàïh|ôa=„™ŒÇ…fý,uP~Š{¾ÛDôœÇÈÅ8 2FèË’%Kð­££Cj ‘ <= XÈ¡ÁVj‘þ› 1Å››N_tVeÕˆuë×]¸f]í¨QP×ÎŽŽ¢¢â57m|ðÞM‘XdÑY‹ÛÛZ’¸àíŽ/Ñ¢/qÕÿ\þåÍÎ¥AƒþÅ-)½`½««kÁ‚#FŒÀB þÿê—Ýlmiž>cÖý›ï{öë5= "«§·7ËûĆÛ>ÿ¥öìþâ]&ó.Ûyr—äÍ}Nš ²]OÀ–ÖÖVøiHF ![«y €pm„œ«É>nÅx^¼³³ý„y'Ý{ûæ-}­¯¿Ÿì5™L"ê]ñéï¹ÿGòó ¹À¨ïx|‹êwìŒU‘9QŠïú’U" ÃP"³ŽÈ¹§扸«Û|QBxïª/¸¸x,ÞÞÖrÊÂEk¯¸êù'¾KàÉqQnè©Q½`ɲM›nýB;¿ÓñÅ>Ž¥6Ö5 ˜&ÿØj²ƒFÀ›@}¡Ål üŠ:„’ß µÂ²À… «ÚÁu\üQScÃÅ«>6klÝ‹[·–”A·7ÒÞÞ>÷äSãU5÷Ý{GUuµ üŒ1þŽÆ÷_›'•¬õΈF’y(xŸeË–íÚµ ñÕ0ŠÄ=@DÁe%žp û÷ï‹Æ¢„H83Øžk‚Ægha gWÙ1óˆMÎ;­m-7~öÖË?vɾ “ÇOœ„‹FÛZZ–_vÅWî¼åG[ž=gñy¥ˆt‘ÃU­,"’麘¸;…]®*YiOÃñ‚ÂB(¢æºuëÖ®] Ï£€<÷î Q.ÌãXÔŽpàž={ Mþ„’I;Q´“KGfv¬¤¸Œ¹e+šþÒ© (¤tqIÁƒ÷}qÃÆ[êÖ\Oˆ~4Õ—¼ìºùڗ柴`ԨтKb:Óa?5žWcßþûR}ž Ê{–u1:¹Û›7oþ´eÓ¦ML555åååd2á’†%‡HÅ}ûö5jïÞ}«×|ŽJ¥” ‰Ø)˜PnЬJ—¸d³X8jÛöm õ(A9ŽU6‘$*eÜwI{[›‚ ANZ~¤øpº¸ð\b½¤¬lê”iÓ¦MG¨1V§pa">¡·Ývç[o½ÙÐPTl˜‚µzºFR¤_“'_]]ûñ1¢ H‰¿Ð^­ TNŒ¨”ÑUUœ7ííí¹ùsë,˜üŒã#ш©ÀpS TXLHóλn¿ãžû`M%E…P"œ 9Êig{ï¶­§ô¶Î›÷"&fk1˜4U ƒÃýÆ×ÿ}á³W¬X ßÏ')dqƒx>‘hU­YøqŽŠ5TXb¦­‚€Ì<Üý,HiþF Ð O>ùÝÅ‹Ï^½zÍÛ¬/!;ûú3?XyõÚTOWV¢z0µÿôÏŸØû»_­»á_ÿŠ‚ÕòåË׬¹ö¬³Î°€o¡k5u1&ÓH&y.ÂS*kÌ'lÃTg3,8·êâJe¾Nì:Ñvú+“ÕkG}:ÊÆÉ=vt´-_~¹¡ j×σúZV]zéSÏ>w`ïŸÆŸ€J(N ~vÆgïúùöï?óôŠ‹V*Ôê?J;oN¬9"ÔA Oš4á­ÃoüÌÞÞ$'SO˜É(æèþšŒÂÕN€ùåc<óQQÞm8£)ÿ¡¹né‡õÉUiA»ã –Ìà"TóEÉŸð÷ë \×\}å=<ùS’…AF}==KW~ô‰ï>zÖÙç ×Dìe‹¢„'Yz$SÒÁK À¹¿ô(E Sq›,ÌäûQ•Î_šÐ€ÒÌ¡C‡äU ‹Cé…^xä‘GHƒ”bZ5Z ÄÞæúæÆ£ÂmK:´Ü˜±có+ª.¹øâÙsæ§…•ˆª/ØCuëúë¯Ç8&§Ý=ÊU.éæ,õêÐàò¦až†1¯ù" }*Æ—¨}¨®®)]}ccã­·Þ:þ|Ü€ ŠÐ¼$‹”XbzÁ ~nDåÎm[W^uMo—pÿn¤¯·÷Œœ÷ücÿËu×ñ–Ñ8ó¾ûî{ôÑGo¸áx• ®‘Ç0µìaÑfhCÌêJˆBÜø47Œ ý žULÜ Ünþðáè…Lž<™""HR´‚=± ðÔÓNëk­oki† …µJ½7abùȺ];w––•qnã(i¹øâ‹9bõîqûšT6¯âvàF\SÛâ6nÆ“ûóÁ޶6a\O®®ø8^Â#ªùfÁ¸Úã%EÔ ßÜÔÔ„û$g”£øçq{Ù²ŠÊÍ›óë—_,@¼G ); ûû?´èìlÙâ ùÆl½£…„NC‘³3M–|¸JVv²þqé¢ YX&¤ ¶C:v67wÊ”GW¤ƒçz]ÕFt‘Ä0M*0o|Ç ü#"A¸TxîØX|8ú5¢… 6ìÌ·ï@aÓ¦ÏèË8ÿûê¯KËJ¡)FF¶>’&ÚU?ÇT=(½¡d•Ì-pnÙÓ3ÐÛ‹B…#õÙÍ‹GìD[^æ¦ú‡L€{÷nŠº¸øi=ŠcÂ!ø±cÇ7nÌ¿ý XZ•6É’Ò‰§žþ“ŸþÝdF@6 H€ÛŒéÓ )ŠœùTKü„ºU29tà Ú¨bàÛó ⨤#ÿ()v‡xz(Ãá-“×ñÊBÍ…PUÞ&I7ð ÒS-ñ—»þ궤I|%9sÝL·DFÞµ¤çÎÙúòîS>¼ˆRn¸jdgœ3÷[;^hkm)*.!¡˜A(®›ö^¯€lt¢É\»Æ6x$Õ#k‹‹‹ò˜ˆ‘êêìLöu¹™,І38$¼C<1%S-€À¸Ë|‘@‘ŸÒà˜Õ^á –žû@ƒQ+[R6ú‡«ž3wî@W{ksz É·eD›êˆê1ãvî܉hEMÏ6D°ƒy>…l=ªOŽ8½í¢T×Ö–¦ú…cN$"ù ×ü<›~ýõ–ÎÎ~ÈHú©wÁÐèR à «Œ¹TbæÌw^PX4aìè½øØñ˜wÑ69넹Û_ø9Ž%ÎOÐlþÅ3ì‰Ñ¹ºJ·ó¨L¢ÕlUUaAAþà ô×ä¡ ³ê}ý£¯¿ÑÜÛ;hÀ²´8îz” —ì9UÄj»ÂDÞžšF÷]º­A6X‡"”••¡e ý]X ÈÏ/XvÁ‡Þøƒ#Û\YhJüàì9-’ä/‚(›‚hξ ;t6E cáú‚¼j­ŽÇÝÊŠ¢úú>@sÕ<ª;öóó£ùù¼«³«¹99óøšÊÊœ×X«×8 œ9SÁRµ²©5ckÒ­ÛLÈ“ê¶mÛ&< s¹¡ýXXs÷ýþ7íÍ͕蛑;ÃGÔM˜tÓM7žtò-]º”Ò ãì|粈kÒþjŸNóÖÖ$š¤4ÑL•C*•îîáes献(ÏÇ#qÝw)Œ³ó÷®ü±'¾ÓŽÇ4nÚ@aeº¤&SZséµëò%¨Òb. woOÏù®˜»ðÌ¡h"Q6âɧž†¡Ùæ>]¾jâ‚3¯cO5íÅb‘¦¦d_II‚†o–@L¥¥‰ùóÆ%ÀŸ2.DÀôáú–DŠñ€¤®¬Myì…ë:&\ÒY‚_pN{G¶©%3¶Î5ì¢éëV¥ó,´µÑbø³¬µ N¡‡›Ä4œŸ½°ý oºìšOž8ÿdp¯‘hÄÎNá•ÿôú óóÀ²#¦QG#àðÐãð‘GT›Ï‘[Ã!”–$d»..ËASÕ`š#IJz³¹²2fªt!&_Ñ'¸¶î¡/‰Kä1Ptííé’"Ž #¡ëPŸè°ŽÙî´[ßÈ®‘Ù~øŒEHý¿üÕ¯Ú·÷²+®J R™G¤Â@……¯îÙ=}úô!©5†KÌíƒüþÁu4ÍO”+é’HFÑÍ)ÕN€ ùHàŒ¦L©ª©®Œ‰ÊÍ"Ñ)©ìÇŠ KGÁm¶¶¡¯aðHýPkkº¸Hv° ¯@·úÇs›Xö/-¸ øÝªêÚÍwÝÕ¸ÿwßúY$\ð¢ëYX4Šþœ{÷Κ9ù$b»¡°™ë1ÑÃáªp¨C˜›þ]»¼%¤æÌšU-ÂÈŽ©&;®²\2GÀì8ÅÅnii4ã " ²²¾èô%³]]ÂÇALº‘Iw1 #ÓWk0´Ý?IªB9Çú Ÿ9~òøÏ^¿öиJÈ ¨°ðÏûö¡†PS[‹ìŽ'“(2OTëŒj©M,@¡úK'\-c¹¨U»S»–—GÀ6¨YYPùx,ÓÔ”íêŽT”œ°c˜˜-)ñ¬i¡5nS¶£6[P‘Ë–-?nòqÞyÛ…«.»dÕ¥à6~µ{×䉳’lµÝР.ÓQÌ—gä$k”1¹†Le:QðfXÄ¡uîä žÏ•s=[ P^XÀ»»Óí׊›·c»»ÔVœð‚»Œ&LœxûÆ/ýäÇwÞv3Ú¤öÿéé3fôˆÖϬãs™˜GfèwíÌÕê‚°h@›"uT–ØÎu{590¹%ÀF#ÂO£›:5ÁŽ÷&Yÿ`tÂøÄØºg&/wÃ&f4( ¦œ2¢{†Ž`@ÄrìwóÍ7æE/øÈâTJ¾(™û2Ÿùò îõIÓĂӆüó#Î,·“ö·Ô0šÅ.xéc³ô  Š0ªÉ4/ , afOÓ4ÝaBj?öÍzô&6+ÓËrkžlXÈ2lS¦$ )/„‹C‡x_*]Zær]ñÆuYØûØ&fd.·Ù¢±¥CtèíœõU[ƒüÌ\›7Wƒ¼7À_L–af-÷7ªƒU纙]Ø€_zÈ)(`Y=ûK6R÷«*áã2°g]]|ï>(”ìh0PƒÑh>îŠn€œ‹¡M=¢ÊDÀ¾¬ù‘ÌôáÊ¿æ,~ËjaȈÛĹÌs=UÈ?1Ÿ&ݱˆN ä9o¾•Åê¢b7›V„ˆQz†½j%Á,1(”¤¬™˜Ó6 ²~í„)Þ²Ù(ŒTÌ  ¢uFÕ¹¥ã–cèŽáœ´ž5œÎ8‚„"n»¾>“Ÿ¦ÏÚE_‘Wm†î¡Û)*ŸùSTCƒÂNǨ‘Q @˜³Î_äqBQ,˜jxäv5Ø¥ê”#µæ`É ð§þh6‘'&‚êˆGÝ‚B·7i¦ŽKý1œ<"~–“²Rã="×±ÆÏòœÌz|UKXÆïP‘+ >áG>Mˆ¥öZséqE f”T.5ÀÈ6t¢K¹‡—iª¨û A*¸È?Ó<=aÉ$GEžXMéWU ‡HbµÊ4-iOƒ»ŠÉdûæpP·}3ILj)<'4ì† mfk‘7®.(Û8ˆûÍ=SfîQ(QB2‰i-,Œ46f0Í©¢2‚Š4wr„æï a¡9lv]Ì6±°ú¹I}ŒÛ Ì\¿ÇXY.s˜æ7dB¡5H;'c3>Ì«D¯v~BLkðsåÔ‘OäWÅš[ÒmCS&ƒûtt£iùP„¿–vVZ©†!±g#³ŒhŒúçõ¿3óiŒÝ‚焆ó¨/«’Éú0.t¦³;Ôy2‰¦gDeLôVTNRÔà‹X,lhü¨£ãHÞ!d”:ÙE±œÆeüNX}ræÛ EÓ×Á¹õjŠ@,ã<<ÝZùW˜Uw7©Á tƒl ±7™©®rËË"¨Çf².jfcQ¯oÕ f"B:˜öA†ˉ›Mb^o¿`*îxK:Õ°2Ç÷Z—P6¤Ë¯ŒÑC@gH@Ÿ••F(p]fݎשj•¢YÎñåËËŠ >i¬ét KØdì'8ÄÚ+éD£4‰Âp 9ÀDò„L,”¦rgÔ(p`N^žx>‡ÞL'Áá“Vfs’HÁ)Æ¡×e!…‰†˜‡¬ Â7~üxÈèÕW_E•†Â9J£1QÙ‰¯1+nh {耓FâjtsÇŽ«W¯¶i3ë(ǼšÂá^ß"÷šY‘/Xob Ý)Ë“ôìà?>öÇ×ãy(%pÕVm„>ô!W¿Fžž,ÇwdëtIhŠêêj]ʬ™³ž{î¹9sæÚÝ–v y;ò·‹ñáb¼ÝÊI 6¦át÷ôŒ5 )”¬ È™æ\},„zkŽ“KDÌêv•::ÈôI‘X¬íº Ý?>ž!èOô]üò—»î¸ãT#ôÛ 4ú¢¡0›«%< ‘bΙ_!PŽð>pÿTAÜ¿ÿ7Ý$D–õ8騉î6>†å¦\™“× ÷ò˜ðøê.»çž{›š¿õbŒ+{1648Ò¿€Š;ö ÿr¼|‹å²:;z‹ 0ü´>iÒ$À\<*Ý j€"#~ÉOV½TÎê¶ßPdf©’!WI·^×ç »ô©ñ1ÈÐ`º¦º¦¶¦æoòÞM$6hB“Í”bZIT½©E3ÛWƒÊ³%*æ`) É®káƒdV1fnܸћ É}/ dóá÷a„æŽåX·fßý½ø‰š¨‡Çóä¤n_B.äí„æu·.}¸ÿ¾ÇÿÓ îXN>áýÅ÷6àc «ÿÏï“6ì3_Sޱø4èý%¼¸a–7§6æä_»åd¶þ¡Çÿ?Ÿ)ÎTàœÏIEND®B`‚PyQt-gpl-5.5.1/examples/dialogs/extension.py0000755000076500000240000001051212613140041021076 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget) class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) label = QLabel("Find &what:") lineEdit = QLineEdit() label.setBuddy(lineEdit) caseCheckBox = QCheckBox("Match &case") fromStartCheckBox = QCheckBox("Search from &start") fromStartCheckBox.setChecked(True) findButton = QPushButton("&Find") findButton.setDefault(True) moreButton = QPushButton("&More") moreButton.setCheckable(True) moreButton.setAutoDefault(False) extension = QWidget() wholeWordsCheckBox = QCheckBox("&Whole words") backwardCheckBox = QCheckBox("Search &backward") searchSelectionCheckBox = QCheckBox("Search se&lection") buttonBox = QDialogButtonBox(Qt.Vertical) buttonBox.addButton(findButton, QDialogButtonBox.ActionRole) buttonBox.addButton(moreButton, QDialogButtonBox.ActionRole) moreButton.toggled.connect(extension.setVisible) extensionLayout = QVBoxLayout() extensionLayout.setContentsMargins(0, 0, 0, 0) extensionLayout.addWidget(wholeWordsCheckBox) extensionLayout.addWidget(backwardCheckBox) extensionLayout.addWidget(searchSelectionCheckBox) extension.setLayout(extensionLayout) topLeftLayout = QHBoxLayout() topLeftLayout.addWidget(label) topLeftLayout.addWidget(lineEdit) leftLayout = QVBoxLayout() leftLayout.addLayout(topLeftLayout) leftLayout.addWidget(caseCheckBox) leftLayout.addWidget(fromStartCheckBox) mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addLayout(leftLayout, 0, 0) mainLayout.addWidget(buttonBox, 0, 1) mainLayout.addWidget(extension, 1, 0, 1, 2) mainLayout.setRowStretch(2, 1) self.setLayout(mainLayout) self.setWindowTitle("Extension") extension.hide() if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = FindDialog() dialog.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dialogs/findfiles.py0000755000076500000240000001763412613140041021041 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QDir, QIODevice, QFile, QFileInfo, Qt, QTextStream, QUrl) from PyQt5.QtGui import QDesktopServices from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QComboBox, QDialog, QFileDialog, QGridLayout, QHBoxLayout, QHeaderView, QLabel, QProgressDialog, QPushButton, QSizePolicy, QTableWidget, QTableWidgetItem) class Window(QDialog): def __init__(self, parent=None): super(Window, self).__init__(parent) browseButton = self.createButton("&Browse...", self.browse) findButton = self.createButton("&Find", self.find) self.fileComboBox = self.createComboBox("*") self.textComboBox = self.createComboBox() self.directoryComboBox = self.createComboBox(QDir.currentPath()) fileLabel = QLabel("Named:") textLabel = QLabel("Containing text:") directoryLabel = QLabel("In directory:") self.filesFoundLabel = QLabel() self.createFilesTable() buttonsLayout = QHBoxLayout() buttonsLayout.addStretch() buttonsLayout.addWidget(findButton) mainLayout = QGridLayout() mainLayout.addWidget(fileLabel, 0, 0) mainLayout.addWidget(self.fileComboBox, 0, 1, 1, 2) mainLayout.addWidget(textLabel, 1, 0) mainLayout.addWidget(self.textComboBox, 1, 1, 1, 2) mainLayout.addWidget(directoryLabel, 2, 0) mainLayout.addWidget(self.directoryComboBox, 2, 1) mainLayout.addWidget(browseButton, 2, 2) mainLayout.addWidget(self.filesTable, 3, 0, 1, 3) mainLayout.addWidget(self.filesFoundLabel, 4, 0) mainLayout.addLayout(buttonsLayout, 5, 0, 1, 3) self.setLayout(mainLayout) self.setWindowTitle("Find Files") self.resize(700, 300) def browse(self): directory = QFileDialog.getExistingDirectory(self, "Find Files", QDir.currentPath()) if directory: if self.directoryComboBox.findText(directory) == -1: self.directoryComboBox.addItem(directory) self.directoryComboBox.setCurrentIndex(self.directoryComboBox.findText(directory)) @staticmethod def updateComboBox(comboBox): if comboBox.findText(comboBox.currentText()) == -1: comboBox.addItem(comboBox.currentText()) def find(self): self.filesTable.setRowCount(0) fileName = self.fileComboBox.currentText() text = self.textComboBox.currentText() path = self.directoryComboBox.currentText() self.updateComboBox(self.fileComboBox) self.updateComboBox(self.textComboBox) self.updateComboBox(self.directoryComboBox) self.currentDir = QDir(path) if not fileName: fileName = "*" files = self.currentDir.entryList([fileName], QDir.Files | QDir.NoSymLinks) if text: files = self.findFiles(files, text) self.showFiles(files) def findFiles(self, files, text): progressDialog = QProgressDialog(self) progressDialog.setCancelButtonText("&Cancel") progressDialog.setRange(0, files.count()) progressDialog.setWindowTitle("Find Files") foundFiles = [] for i in range(files.count()): progressDialog.setValue(i) progressDialog.setLabelText("Searching file number %d of %d..." % (i, files.count())) QApplication.processEvents() if progressDialog.wasCanceled(): break inFile = QFile(self.currentDir.absoluteFilePath(files[i])) if inFile.open(QIODevice.ReadOnly): stream = QTextStream(inFile) while not stream.atEnd(): if progressDialog.wasCanceled(): break line = stream.readLine() if text in line: foundFiles.append(files[i]) break progressDialog.close() return foundFiles def showFiles(self, files): for fn in files: file = QFile(self.currentDir.absoluteFilePath(fn)) size = QFileInfo(file).size() fileNameItem = QTableWidgetItem(fn) fileNameItem.setFlags(fileNameItem.flags() ^ Qt.ItemIsEditable) sizeItem = QTableWidgetItem("%d KB" % (int((size + 1023) / 1024))) sizeItem.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight) sizeItem.setFlags(sizeItem.flags() ^ Qt.ItemIsEditable) row = self.filesTable.rowCount() self.filesTable.insertRow(row) self.filesTable.setItem(row, 0, fileNameItem) self.filesTable.setItem(row, 1, sizeItem) self.filesFoundLabel.setText("%d file(s) found (Double click on a file to open it)" % len(files)) def createButton(self, text, member): button = QPushButton(text) button.clicked.connect(member) return button def createComboBox(self, text=""): comboBox = QComboBox() comboBox.setEditable(True) comboBox.addItem(text) comboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) return comboBox def createFilesTable(self): self.filesTable = QTableWidget(0, 2) self.filesTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.filesTable.setHorizontalHeaderLabels(("File Name", "Size")) self.filesTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.filesTable.verticalHeader().hide() self.filesTable.setShowGrid(False) self.filesTable.cellActivated.connect(self.openFileOfItem) def openFileOfItem(self, row, column): item = self.filesTable.item(row, 0) QDesktopServices.openUrl(QUrl(self.currentDir.absoluteFilePath(item.text()))) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dialogs/README0000644000076500000240000000144612613140041017373 0ustar philstaff00000000000000PyQt includes standard dialogs for many common operations, such as file selection, printing, and color selection. Custom dialogs can also be created for specialized modal or modeless interactions with users. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/dialogs/standarddialogs.py0000755000076500000240000003273612613140041022241 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2010 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, Qt from PyQt5.QtGui import QFont, QPalette from PyQt5.QtWidgets import (QApplication, QCheckBox, QColorDialog, QDialog, QErrorMessage, QFileDialog, QFontDialog, QFrame, QGridLayout, QInputDialog, QLabel, QLineEdit, QMessageBox, QPushButton) class Dialog(QDialog): MESSAGE = "

    Message boxes have a caption, a text, and up to three " \ "buttons, each with standard or custom texts.

    " \ "

    Click a button to close the message box. Pressing the Esc " \ "button will activate the detected escape button (if any).

    " def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.openFilesPath = '' self.errorMessageDialog = QErrorMessage(self) frameStyle = QFrame.Sunken | QFrame.Panel self.integerLabel = QLabel() self.integerLabel.setFrameStyle(frameStyle) self.integerButton = QPushButton("QInputDialog.get&Int()") self.doubleLabel = QLabel() self.doubleLabel.setFrameStyle(frameStyle) self.doubleButton = QPushButton("QInputDialog.get&Double()") self.itemLabel = QLabel() self.itemLabel.setFrameStyle(frameStyle) self.itemButton = QPushButton("QInputDialog.getIte&m()") self.textLabel = QLabel() self.textLabel.setFrameStyle(frameStyle) self.textButton = QPushButton("QInputDialog.get&Text()") self.colorLabel = QLabel() self.colorLabel.setFrameStyle(frameStyle) self.colorButton = QPushButton("QColorDialog.get&Color()") self.fontLabel = QLabel() self.fontLabel.setFrameStyle(frameStyle) self.fontButton = QPushButton("QFontDialog.get&Font()") self.directoryLabel = QLabel() self.directoryLabel.setFrameStyle(frameStyle) self.directoryButton = QPushButton("QFileDialog.getE&xistingDirectory()") self.openFileNameLabel = QLabel() self.openFileNameLabel.setFrameStyle(frameStyle) self.openFileNameButton = QPushButton("QFileDialog.get&OpenFileName()") self.openFileNamesLabel = QLabel() self.openFileNamesLabel.setFrameStyle(frameStyle) self.openFileNamesButton = QPushButton("QFileDialog.&getOpenFileNames()") self.saveFileNameLabel = QLabel() self.saveFileNameLabel.setFrameStyle(frameStyle) self.saveFileNameButton = QPushButton("QFileDialog.get&SaveFileName()") self.criticalLabel = QLabel() self.criticalLabel.setFrameStyle(frameStyle) self.criticalButton = QPushButton("QMessageBox.critica&l()") self.informationLabel = QLabel() self.informationLabel.setFrameStyle(frameStyle) self.informationButton = QPushButton("QMessageBox.i&nformation()") self.questionLabel = QLabel() self.questionLabel.setFrameStyle(frameStyle) self.questionButton = QPushButton("QMessageBox.&question()") self.warningLabel = QLabel() self.warningLabel.setFrameStyle(frameStyle) self.warningButton = QPushButton("QMessageBox.&warning()") self.errorLabel = QLabel() self.errorLabel.setFrameStyle(frameStyle) self.errorButton = QPushButton("QErrorMessage.show&M&essage()") self.integerButton.clicked.connect(self.setInteger) self.doubleButton.clicked.connect(self.setDouble) self.itemButton.clicked.connect(self.setItem) self.textButton.clicked.connect(self.setText) self.colorButton.clicked.connect(self.setColor) self.fontButton.clicked.connect(self.setFont) self.directoryButton.clicked.connect(self.setExistingDirectory) self.openFileNameButton.clicked.connect(self.setOpenFileName) self.openFileNamesButton.clicked.connect(self.setOpenFileNames) self.saveFileNameButton.clicked.connect(self.setSaveFileName) self.criticalButton.clicked.connect(self.criticalMessage) self.informationButton.clicked.connect(self.informationMessage) self.questionButton.clicked.connect(self.questionMessage) self.warningButton.clicked.connect(self.warningMessage) self.errorButton.clicked.connect(self.errorMessage) self.native = QCheckBox() self.native.setText("Use native file dialog.") self.native.setChecked(True) if sys.platform not in ("win32", "darwin"): self.native.hide() layout = QGridLayout() layout.setColumnStretch(1, 1) layout.setColumnMinimumWidth(1, 250) layout.addWidget(self.integerButton, 0, 0) layout.addWidget(self.integerLabel, 0, 1) layout.addWidget(self.doubleButton, 1, 0) layout.addWidget(self.doubleLabel, 1, 1) layout.addWidget(self.itemButton, 2, 0) layout.addWidget(self.itemLabel, 2, 1) layout.addWidget(self.textButton, 3, 0) layout.addWidget(self.textLabel, 3, 1) layout.addWidget(self.colorButton, 4, 0) layout.addWidget(self.colorLabel, 4, 1) layout.addWidget(self.fontButton, 5, 0) layout.addWidget(self.fontLabel, 5, 1) layout.addWidget(self.directoryButton, 6, 0) layout.addWidget(self.directoryLabel, 6, 1) layout.addWidget(self.openFileNameButton, 7, 0) layout.addWidget(self.openFileNameLabel, 7, 1) layout.addWidget(self.openFileNamesButton, 8, 0) layout.addWidget(self.openFileNamesLabel, 8, 1) layout.addWidget(self.saveFileNameButton, 9, 0) layout.addWidget(self.saveFileNameLabel, 9, 1) layout.addWidget(self.criticalButton, 10, 0) layout.addWidget(self.criticalLabel, 10, 1) layout.addWidget(self.informationButton, 11, 0) layout.addWidget(self.informationLabel, 11, 1) layout.addWidget(self.questionButton, 12, 0) layout.addWidget(self.questionLabel, 12, 1) layout.addWidget(self.warningButton, 13, 0) layout.addWidget(self.warningLabel, 13, 1) layout.addWidget(self.errorButton, 14, 0) layout.addWidget(self.errorLabel, 14, 1) layout.addWidget(self.native, 15, 0) self.setLayout(layout) self.setWindowTitle("Standard Dialogs") def setInteger(self): i, ok = QInputDialog.getInt(self, "QInputDialog.getInt()", "Percentage:", 25, 0, 100, 1) if ok: self.integerLabel.setText("%d%%" % i) def setDouble(self): d, ok = QInputDialog.getDouble(self, "QInputDialog.getDouble()", "Amount:", 37.56, -10000, 10000, 2) if ok: self.doubleLabel.setText("$%g" % d) def setItem(self): items = ("Spring", "Summer", "Fall", "Winter") item, ok = QInputDialog.getItem(self, "QInputDialog.getItem()", "Season:", items, 0, False) if ok and item: self.itemLabel.setText(item) def setText(self): text, ok = QInputDialog.getText(self, "QInputDialog.getText()", "User name:", QLineEdit.Normal, QDir.home().dirName()) if ok and text != '': self.textLabel.setText(text) def setColor(self): color = QColorDialog.getColor(Qt.green, self) if color.isValid(): self.colorLabel.setText(color.name()) self.colorLabel.setPalette(QPalette(color)) self.colorLabel.setAutoFillBackground(True) def setFont(self): font, ok = QFontDialog.getFont(QFont(self.fontLabel.text()), self) if ok: self.fontLabel.setText(font.key()) self.fontLabel.setFont(font) def setExistingDirectory(self): options = QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly directory = QFileDialog.getExistingDirectory(self, "QFileDialog.getExistingDirectory()", self.directoryLabel.text(), options=options) if directory: self.directoryLabel.setText(directory) def setOpenFileName(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", self.openFileNameLabel.text(), "All Files (*);;Text Files (*.txt)", options=options) if fileName: self.openFileNameLabel.setText(fileName) def setOpenFileNames(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog files, _ = QFileDialog.getOpenFileNames(self, "QFileDialog.getOpenFileNames()", self.openFilesPath, "All Files (*);;Text Files (*.txt)", options=options) if files: self.openFilesPath = files[0] self.openFileNamesLabel.setText("[%s]" % ', '.join(files)) def setSaveFileName(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getSaveFileName(self, "QFileDialog.getSaveFileName()", self.saveFileNameLabel.text(), "All Files (*);;Text Files (*.txt)", options=options) if fileName: self.saveFileNameLabel.setText(fileName) def criticalMessage(self): reply = QMessageBox.critical(self, "QMessageBox.critical()", Dialog.MESSAGE, QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore) if reply == QMessageBox.Abort: self.criticalLabel.setText("Abort") elif reply == QMessageBox.Retry: self.criticalLabel.setText("Retry") else: self.criticalLabel.setText("Ignore") def informationMessage(self): reply = QMessageBox.information(self, "QMessageBox.information()", Dialog.MESSAGE) if reply == QMessageBox.Ok: self.informationLabel.setText("OK") else: self.informationLabel.setText("Escape") def questionMessage(self): reply = QMessageBox.question(self, "QMessageBox.question()", Dialog.MESSAGE, QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel) if reply == QMessageBox.Yes: self.questionLabel.setText("Yes") elif reply == QMessageBox.No: self.questionLabel.setText("No") else: self.questionLabel.setText("Cancel") def warningMessage(self): msgBox = QMessageBox(QMessageBox.Warning, "QMessageBox.warning()", Dialog.MESSAGE, QMessageBox.NoButton, self) msgBox.addButton("Save &Again", QMessageBox.AcceptRole) msgBox.addButton("&Continue", QMessageBox.RejectRole) if msgBox.exec_() == QMessageBox.AcceptRole: self.warningLabel.setText("Save Again") else: self.warningLabel.setText("Continue") def errorMessage(self): self.errorMessageDialog.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.errorLabel.setText("If the box is unchecked, the message won't " "appear again.") if __name__ == '__main__': app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dialogs/tabdialog.py0000755000076500000240000001621112613140041021012 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFileInfo from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QFrame, QGroupBox, QLabel, QLineEdit, QListWidget, QTabWidget, QVBoxLayout, QWidget) class TabDialog(QDialog): def __init__(self, fileName, parent=None): super(TabDialog, self).__init__(parent) fileInfo = QFileInfo(fileName) tabWidget = QTabWidget() tabWidget.addTab(GeneralTab(fileInfo), "General") tabWidget.addTab(PermissionsTab(fileInfo), "Permissions") tabWidget.addTab(ApplicationsTab(fileInfo), "Applications") buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QVBoxLayout() mainLayout.addWidget(tabWidget) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Tab Dialog") class GeneralTab(QWidget): def __init__(self, fileInfo, parent=None): super(GeneralTab, self).__init__(parent) fileNameLabel = QLabel("File Name:") fileNameEdit = QLineEdit(fileInfo.fileName()) pathLabel = QLabel("Path:") pathValueLabel = QLabel(fileInfo.absoluteFilePath()) pathValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) sizeLabel = QLabel("Size:") size = fileInfo.size() // 1024 sizeValueLabel = QLabel("%d K" % size) sizeValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) lastReadLabel = QLabel("Last Read:") lastReadValueLabel = QLabel(fileInfo.lastRead().toString()) lastReadValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) lastModLabel = QLabel("Last Modified:") lastModValueLabel = QLabel(fileInfo.lastModified().toString()) lastModValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) mainLayout = QVBoxLayout() mainLayout.addWidget(fileNameLabel) mainLayout.addWidget(fileNameEdit) mainLayout.addWidget(pathLabel) mainLayout.addWidget(pathValueLabel) mainLayout.addWidget(sizeLabel) mainLayout.addWidget(sizeValueLabel) mainLayout.addWidget(lastReadLabel) mainLayout.addWidget(lastReadValueLabel) mainLayout.addWidget(lastModLabel) mainLayout.addWidget(lastModValueLabel) mainLayout.addStretch(1) self.setLayout(mainLayout) class PermissionsTab(QWidget): def __init__(self, fileInfo, parent=None): super(PermissionsTab, self).__init__(parent) permissionsGroup = QGroupBox("Permissions") readable = QCheckBox("Readable") if fileInfo.isReadable(): readable.setChecked(True) writable = QCheckBox("Writable") if fileInfo.isWritable(): writable.setChecked(True) executable = QCheckBox("Executable") if fileInfo.isExecutable(): executable.setChecked(True) ownerGroup = QGroupBox("Ownership") ownerLabel = QLabel("Owner") ownerValueLabel = QLabel(fileInfo.owner()) ownerValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) groupLabel = QLabel("Group") groupValueLabel = QLabel(fileInfo.group()) groupValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) permissionsLayout = QVBoxLayout() permissionsLayout.addWidget(readable) permissionsLayout.addWidget(writable) permissionsLayout.addWidget(executable) permissionsGroup.setLayout(permissionsLayout) ownerLayout = QVBoxLayout() ownerLayout.addWidget(ownerLabel) ownerLayout.addWidget(ownerValueLabel) ownerLayout.addWidget(groupLabel) ownerLayout.addWidget(groupValueLabel) ownerGroup.setLayout(ownerLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(permissionsGroup) mainLayout.addWidget(ownerGroup) mainLayout.addStretch(1) self.setLayout(mainLayout) class ApplicationsTab(QWidget): def __init__(self, fileInfo, parent=None): super(ApplicationsTab, self).__init__(parent) topLabel = QLabel("Open with:") applicationsListBox = QListWidget() applications = [] for i in range(1, 31): applications.append("Application %d" % i) applicationsListBox.insertItems(0, applications) alwaysCheckBox = QCheckBox() if fileInfo.suffix(): alwaysCheckBox = QCheckBox("Always use this application to open " "files with the extension '%s'" % fileInfo.suffix()) else: alwaysCheckBox = QCheckBox("Always use this application to open " "this type of file") layout = QVBoxLayout() layout.addWidget(topLabel) layout.addWidget(applicationsListBox) layout.addWidget(alwaysCheckBox) self.setLayout(layout) if __name__ == '__main__': import sys app = QApplication(sys.argv) if len(sys.argv) >= 2: fileName = sys.argv[1] else: fileName = "." tabdialog = TabDialog(fileName) tabdialog.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/dialogs/trivialwizard.py0000755000076500000240000000705412613140041021764 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QLineEdit, QVBoxLayout, QWizard, QWizardPage) def createIntroPage(): page = QWizardPage() page.setTitle("Introduction") label = QLabel( "This wizard will help you register your copy of Super Product " "Two.") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) page.setLayout(layout) return page def createRegistrationPage(): page = QWizardPage() page.setTitle("Registration") page.setSubTitle("Please fill both fields.") nameLabel = QLabel("Name:") nameLineEdit = QLineEdit() emailLabel = QLabel("Email address:") emailLineEdit = QLineEdit() layout = QGridLayout() layout.addWidget(nameLabel, 0, 0) layout.addWidget(nameLineEdit, 0, 1) layout.addWidget(emailLabel, 1, 0) layout.addWidget(emailLineEdit, 1, 1) page.setLayout(layout) return page def createConclusionPage(): page = QWizardPage() page.setTitle("Conclusion") label = QLabel("You are now successfully registered. Have a nice day!") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) page.setLayout(layout) return page if __name__ == '__main__': import sys app = QApplication(sys.argv) wizard = QWizard() wizard.addPage(createIntroPage()) wizard.addPage(createRegistrationPage()) wizard.addPage(createConclusionPage()) wizard.setWindowTitle("Trivial Wizard") wizard.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/0000755000076500000240000000000012613140041017351 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/0000755000076500000240000000000012613140041022467 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/delayedencoding.py0000755000076500000240000001133512613140041026165 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtSignal, QBuffer, QByteArray, QFile, QIODevice, QMimeData, Qt) from PyQt5.QtGui import QDrag, QIcon, QImage, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QPushButton, QScrollArea, QWidget) from PyQt5.QtSvg import QSvgWidget import delayedencoding_rc class MimeData(QMimeData): dataRequested = pyqtSignal(str) def formats(self): formats = QMimeData.formats(self) formats.append('image/png') return formats def retrieveData(self, mimeType, qvtype): self.dataRequested.emit(mimeType) return QMimeData.retrieveData(self, mimeType, qvtype) class SourceWidget(QWidget): def __init__(self, parent=None): super(SourceWidget, self).__init__(parent) self.mimeData = None imageFile = QFile(':/images/example.svg') imageFile.open(QIODevice.ReadOnly) self.imageData = imageFile.readAll() imageFile.close() imageArea = QScrollArea() self.imageLabel = QSvgWidget() self.imageLabel.renderer().load(self.imageData) imageArea.setWidget(self.imageLabel) instructTopLabel = QLabel("This is an SVG drawing:") instructBottomLabel = QLabel("Drag the icon to copy the drawing as a PNG file:") dragIcon = QPushButton("Export") dragIcon.setIcon(QIcon(':/images/drag.png')) dragIcon.pressed.connect(self.startDrag) layout = QGridLayout() layout.addWidget(instructTopLabel, 0, 0, 1, 2) layout.addWidget(imageArea, 1, 0, 2, 2) layout.addWidget(instructBottomLabel, 3, 0) layout.addWidget(dragIcon, 3, 1) self.setLayout(layout) self.setWindowTitle("Delayed Encoding") def createData(self, mimeType): if mimeType != 'image/png': return image = QImage(self.imageLabel.size(), QImage.Format_RGB32) painter = QPainter() painter.begin(image) self.imageLabel.renderer().render(painter) painter.end() data = QByteArray() buffer = QBuffer(data) buffer.open(QIODevice.WriteOnly) image.save(buffer, 'PNG') buffer.close() self.mimeData.setData('image/png', data) def startDrag(self): self.mimeData = MimeData() self.mimeData.dataRequested.connect(self.createData, Qt.DirectConnection) drag = QDrag(self) drag.setMimeData(self.mimeData) drag.setPixmap(QPixmap(':/images/drag.png')) drag.exec_(Qt.CopyAction) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = SourceWidget() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/delayedencoding.qrc0000644000076500000240000000021712613140041026314 0ustar philstaff00000000000000 images/drag.png images/example.svg PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/delayedencoding_rc.py0000644000076500000240000003757712613140041026666 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 16:44:22 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\xd1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x63\x49\x44\x41\x54\x58\xc3\xc5\ \x97\xcd\x6f\x1b\x55\x14\xc5\x7f\x77\x66\x92\x89\xd3\x7c\xd4\xad\ \x17\x09\x20\xd2\x4d\x55\x51\x10\x08\x51\x84\xca\x0a\x09\xd8\x20\ \xc4\xa2\x52\x17\x2c\x2a\x24\x28\x6b\x36\x2c\x90\xfa\x1f\xc0\x82\ \x0d\xa8\x3b\x04\x2c\xd8\x82\x10\xaa\xda\x45\x05\x64\x07\x08\x04\ \xa1\x34\x40\x85\x11\x6e\x21\xb5\x13\x9c\xe6\xc3\xb5\xd3\x79\xef\ \x5d\x16\xf3\xec\x8c\x9d\xc4\xa6\xf5\x54\x1d\xe9\x4a\x1e\x69\x3c\ \xe7\xdc\x73\xce\xbb\xef\x8d\xa8\x2a\xf7\xf2\x0a\xb8\xc7\x57\xf4\ \x7f\x1e\x7a\xff\x35\x79\xf2\xe6\x16\x91\x55\xa4\x30\xca\x13\xc6\ \x12\xaa\x22\x00\x51\xc0\x4c\x18\x30\xeb\x94\xc0\x3a\x1a\xd5\x35\ \x3e\x7b\xfb\x73\xe6\x81\xa6\xaa\xba\x41\xef\x96\x41\x16\x9c\x7d\ \x5d\xce\x3c\xf8\xc8\x0b\xaf\x3a\xa7\xa1\xaa\x06\x0f\x1c\x7d\x76\ \xdc\x39\x15\x54\x05\x60\xaa\x34\x17\x8d\x17\xef\x1f\x09\xc2\x82\ \x98\xad\x86\x7e\xf1\xde\x89\xea\x77\x8b\xff\xbe\xfb\xe1\x57\x7c\ \x02\xd4\x55\xd5\xf6\x05\x50\xd5\xbe\x75\xf6\x34\x3f\xaa\xaa\xaa\ \x3a\x5f\xb6\xab\x9c\x5a\x6d\xb5\x6e\x6a\xb5\xba\xa4\xc6\x18\xbd\ \xb2\xf0\x75\xf2\xe6\x8b\x7c\xfb\xfc\xa3\xbc\x02\x14\xdb\x4d\xee\ \x55\x03\x33\xe0\x94\x10\x2c\x60\x7c\x39\xd2\xfb\xb4\x04\x8b\x31\ \xb7\x58\x5e\xae\x11\x86\x21\x87\x1e\x7a\x3a\x3a\xf9\xc6\x07\x8f\ \x1d\x9e\xe1\xe5\x97\x8e\xf1\x1c\x30\x21\x22\x72\xc7\x21\x4c\xbd\ \xd6\x2e\xd0\xb4\x1c\xe0\x50\x2c\xaa\x09\xcd\x66\x23\x0d\x55\x14\ \xf1\xf0\xf1\x93\xa3\xa7\xdf\xfa\xf8\x99\xb9\x12\xa7\x80\x43\x40\ \x61\xc8\x55\x90\x02\x81\x45\x31\x9e\x40\x02\x18\xc4\x93\xc9\xe6\ \x6d\xdf\xbe\x09\x8e\x3c\x75\x22\x2e\x4d\x72\x1c\x38\x0a\x4c\x0e\ \xb5\x0a\x14\x87\x60\xd2\xd4\x6e\xe7\x97\x54\x19\x08\x02\xc5\x98\ \x16\x17\x2f\x5e\x60\x6d\x6d\x83\x20\x80\xfd\xfb\x8b\x68\x54\x8c\ \x61\x75\x0e\x98\x00\xaa\x77\xac\x80\x64\x2c\xd0\x4e\x1e\x12\xda\ \xd9\x18\x1d\x15\x66\x66\x0f\xd2\x6c\xd6\xd9\xdc\xac\x61\xcc\x26\ \x85\xc2\x08\xad\xe6\x2a\x5e\xfe\x68\x48\x05\xac\x57\x40\x3b\x7d\ \x4b\x46\x85\x20\x54\xee\x9b\x2d\x31\x35\xf9\x38\xc6\x18\xa2\x28\ \x22\x8e\x0f\x70\x7e\x04\xcd\x65\x10\x09\xce\x77\x4c\xc6\x06\x45\ \x11\x04\x25\x10\x21\x8e\x85\x38\xce\x5a\x3d\x46\x18\x74\xa4\xd3\ \x1c\x32\x90\xf8\xb7\xa4\xa0\xda\x87\x6e\x4a\xce\xe5\x37\x8a\xdb\ \x5e\xb7\x3b\x6f\x83\x48\x4f\x2c\xb7\x1b\x15\xff\x9f\x9c\x08\x08\ \x0e\xcd\x58\xd0\x26\xa1\x3b\xd6\xc3\x36\x1d\xc9\x57\x81\xd4\x82\ \xfe\x24\x7b\xe9\xe5\x48\x40\xfd\xe0\x91\x2e\x03\xba\x41\xe9\x49\ \x9a\xe6\x69\x41\x56\x01\xd9\xa5\x63\x7a\x08\xe5\xae\x40\x9a\x01\ \xd3\xe9\x51\x76\x89\x1c\x3e\x96\xd2\x09\xa7\xcd\xdf\x82\xde\x5e\ \xa5\x13\xc6\x14\x7a\xfb\x79\xbd\x1b\x0a\x24\x3b\xe4\xee\xf6\x5c\ \xbb\x16\x67\xce\x0a\xec\x9c\x84\xba\xeb\x73\xd9\xdd\x43\xf3\x1f\ \x44\x83\x62\xd7\xfd\xfb\x2e\x0c\xa2\xac\xf3\xfd\x94\x68\x0f\xec\ \x5c\x97\x61\xba\x15\x0f\x3a\xe1\xc7\xc0\x38\x50\x64\x6d\x25\x70\ \x1b\x4d\x5a\xb9\x6d\x46\x3b\x2d\x80\xf4\x48\x39\x86\x30\x8d\x52\ \xa4\x56\x59\xb1\x95\xc5\xcb\xf6\xa7\x2f\x3f\x4a\xae\x2c\xfe\xd0\ \xb8\x74\x95\x3f\x80\x55\x60\x6b\x48\x05\xd4\x1f\x40\x15\x25\x04\ \x0a\x08\x53\x28\x07\xa8\x55\x56\xed\xc2\xfc\xb9\xe4\xd7\x6f\x3e\ \x35\xe5\x72\x79\xfd\xef\x3a\xcb\xdf\xff\xc9\x6f\xe5\x2a\x65\xe0\ \x1a\x70\x19\x58\x1f\x32\x03\xa0\x8c\xa1\x4c\x03\x07\x3d\xe8\x85\ \x0e\xe8\x2f\xd7\xa8\x5c\xaa\xf0\xfb\xd2\x0d\xfe\x02\x6a\xc0\x12\ \xf0\x8f\x3f\x86\xd5\x81\xcd\x21\x15\x38\x42\xad\xb2\x6c\x17\xe6\ \xcf\xef\x05\x7a\x1d\xb8\xea\x41\xeb\xc0\x86\x07\xdd\xd2\x01\x5f\ \x3e\x03\x09\xac\x37\x39\xf7\xce\xa9\xc2\xf4\xf5\x1b\xd8\x9f\x2b\ \x2c\xed\x01\xba\xe2\x65\x6e\x00\x89\xde\xc6\x17\xef\xc0\x4f\x33\ \x11\x29\x01\xc7\x80\xc3\xc0\x2d\x0f\x38\x14\xe8\xed\x12\x18\x01\ \xa6\xfd\xd1\xda\x7a\x69\x87\x02\xcd\x5e\xff\x01\xf9\x68\x10\x8e\ \x11\x57\x76\x24\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x0a\x81\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\x6e\ \x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\ \x74\x20\x28\x43\x29\x20\x32\x30\x31\x30\x20\x4e\x6f\x6b\x69\x61\ \x20\x43\x6f\x72\x70\x6f\x72\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\ \x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\x64\x69\x61\ \x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\x41\x6c\x6c\ \x20\x72\x69\x67\x68\x74\x73\x20\x72\x65\x73\x65\x72\x76\x65\x64\ \x2e\x0a\x2a\x2a\x20\x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x4e\x6f\ \x6b\x69\x61\x20\x43\x6f\x72\x70\x6f\x72\x61\x74\x69\x6f\x6e\x20\ \x28\x71\x74\x2d\x69\x6e\x66\x6f\x40\x6e\x6f\x6b\x69\x61\x2e\x63\ \x6f\x6d\x29\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\x68\x69\x73\x20\x66\ \x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\x20\x6f\x66\x20\x74\ \x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\x20\x6f\x66\x20\x74\ \x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\x69\x74\x2e\x0a\x2a\ \x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\x47\x49\x4e\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x3a\x4c\x47\x50\x4c\x24\x0a\x2a\x2a\x20\ \x43\x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x55\x73\x61\x67\x65\ \x0a\x2a\x2a\x20\x4c\x69\x63\x65\x6e\x73\x65\x65\x73\x20\x68\x6f\ \x6c\x64\x69\x6e\x67\x20\x76\x61\x6c\x69\x64\x20\x51\x74\x20\x43\ \x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x6c\x69\x63\x65\x6e\x73\ \x65\x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\ \x66\x69\x6c\x65\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x63\x63\x6f\x72\ \x64\x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x51\ \x74\x20\x43\x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x4c\x69\x63\ \x65\x6e\x73\x65\x20\x41\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x70\ \x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\ \x0a\x2a\x2a\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x20\x6f\x72\x2c\ \x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\ \x69\x6e\x20\x61\x63\x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\ \x74\x68\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x64\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x20\x77\ \x72\x69\x74\x74\x65\x6e\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\ \x20\x62\x65\x74\x77\x65\x65\x6e\x20\x79\x6f\x75\x20\x61\x6e\x64\ \x20\x4e\x6f\x6b\x69\x61\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\ \x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\ \x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\ \x55\x73\x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\ \x74\x69\x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\ \x65\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\ \x64\x65\x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\ \x20\x74\x68\x65\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x0a\ \x2a\x2a\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\ \x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\ \x6e\x20\x32\x2e\x31\x20\x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\ \x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\ \x6f\x66\x74\x77\x61\x72\x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\ \x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\ \x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\ \x4c\x49\x43\x45\x4e\x53\x45\x2e\x4c\x47\x50\x4c\x20\x69\x6e\x63\ \x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\ \x70\x61\x63\x6b\x61\x67\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\ \x73\x20\x66\x69\x6c\x65\x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\ \x72\x65\x76\x69\x65\x77\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\ \x77\x69\x6e\x67\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\ \x20\x74\x6f\x0a\x2a\x2a\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\ \x65\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\ \x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\ \x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\ \x72\x65\x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x0a\x2a\x2a\x20\ \x77\x69\x6c\x6c\x20\x62\x65\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\ \x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\ \x6c\x69\x63\x65\x6e\x73\x65\x73\x2f\x6f\x6c\x64\x2d\x6c\x69\x63\ \x65\x6e\x73\x65\x73\x2f\x6c\x67\x70\x6c\x2d\x32\x2e\x31\x2e\x68\ \x74\x6d\x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x49\x6e\x20\x61\x64\ \x64\x69\x74\x69\x6f\x6e\x2c\x20\x61\x73\x20\x61\x20\x73\x70\x65\ \x63\x69\x61\x6c\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\ \x4e\x6f\x6b\x69\x61\x20\x67\x69\x76\x65\x73\x20\x79\x6f\x75\x20\ \x63\x65\x72\x74\x61\x69\x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\ \x61\x6c\x0a\x2a\x2a\x20\x72\x69\x67\x68\x74\x73\x2e\x20\x20\x54\ \x68\x65\x73\x65\x20\x72\x69\x67\x68\x74\x73\x20\x61\x72\x65\x20\ \x64\x65\x73\x63\x72\x69\x62\x65\x64\x20\x69\x6e\x20\x74\x68\x65\ \x20\x4e\x6f\x6b\x69\x61\x20\x51\x74\x20\x4c\x47\x50\x4c\x20\x45\ \x78\x63\x65\x70\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x76\x65\x72\x73\ \x69\x6f\x6e\x20\x31\x2e\x31\x2c\x20\x69\x6e\x63\x6c\x75\x64\x65\ \x64\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x47\ \x50\x4c\x5f\x45\x58\x43\x45\x50\x54\x49\x4f\x4e\x2e\x74\x78\x74\ \x20\x69\x6e\x20\x74\x68\x69\x73\x20\x70\x61\x63\x6b\x61\x67\x65\ \x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\ \x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\ \x73\x65\x20\x55\x73\x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\ \x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\ \x66\x69\x6c\x65\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\ \x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x47\x4e\x55\x0a\x2a\x2a\x20\x47\ \x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\ \x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\ \x30\x20\x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\ \x79\x20\x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\ \x61\x72\x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\ \x6e\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\ \x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\ \x4e\x53\x45\x2e\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\ \x20\x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\ \x67\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\ \x65\x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\ \x77\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\ \x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\ \x2a\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\ \x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\ \x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\ \x33\x2e\x30\x20\x72\x65\x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\ \x20\x77\x69\x6c\x6c\x20\x62\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\ \x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\ \x6f\x72\x67\x2f\x63\x6f\x70\x79\x6c\x65\x66\x74\x2f\x67\x70\x6c\ \x2e\x68\x74\x6d\x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x49\x66\x20\ \x79\x6f\x75\x20\x68\x61\x76\x65\x20\x71\x75\x65\x73\x74\x69\x6f\ \x6e\x73\x20\x72\x65\x67\x61\x72\x64\x69\x6e\x67\x20\x74\x68\x65\ \x20\x75\x73\x65\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\ \x65\x2c\x20\x70\x6c\x65\x61\x73\x65\x20\x63\x6f\x6e\x74\x61\x63\ \x74\x0a\x2a\x2a\x20\x4e\x6f\x6b\x69\x61\x20\x61\x74\x20\x71\x74\ \x2d\x69\x6e\x66\x6f\x40\x6e\x6f\x6b\x69\x61\x2e\x63\x6f\x6d\x2e\ \x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\x49\x43\x45\ \x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\ \x22\x38\x63\x6d\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x38\x63\ \x6d\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\ \x34\x30\x30\x20\x34\x30\x30\x22\x0a\x20\x20\x20\x20\x20\x78\x6d\ \x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ \x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\ \x20\x62\x61\x73\x65\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x74\x69\ \x6e\x79\x22\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\ \x22\x3e\x0a\x20\x20\x3c\x74\x69\x74\x6c\x65\x3e\x53\x70\x68\x65\ \x72\x65\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x3c\x64\x65\ \x73\x63\x3e\x41\x20\x67\x72\x61\x64\x69\x65\x6e\x74\x20\x66\x69\ \x6c\x6c\x65\x64\x20\x73\x70\x68\x65\x72\x65\x2e\x3c\x2f\x64\x65\ \x73\x63\x3e\x0a\x20\x20\x3c\x67\x3e\x0a\x20\x20\x20\x20\x3c\x64\ \x65\x66\x73\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x72\x61\x64\x69\ \x61\x6c\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x69\x64\x3d\x22\x62\ \x6c\x75\x65\x53\x70\x68\x65\x72\x65\x22\x20\x67\x72\x61\x64\x69\ \x65\x6e\x74\x55\x6e\x69\x74\x73\x3d\x22\x75\x73\x65\x72\x53\x70\ \x61\x63\x65\x4f\x6e\x55\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x78\x3d\x22\x32\x30\x30\x22\x20\x63\x79\x3d\x22\x32\x30\x30\ \x22\x20\x72\x3d\x22\x31\x30\x30\x22\x20\x66\x78\x3d\x22\x31\x35\ \x30\x22\x20\x66\x79\x3d\x22\x31\x35\x30\x22\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x20\x6f\x66\x66\x73\x65\ \x74\x3d\x22\x30\x25\x22\x20\x73\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\ \x72\x3d\x22\x77\x68\x69\x74\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x20\x6f\x66\x66\x73\x65\ \x74\x3d\x22\x37\x35\x25\x22\x20\x73\x74\x6f\x70\x2d\x63\x6f\x6c\ \x6f\x72\x3d\x22\x62\x6c\x75\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x20\x6f\x66\x66\x73\x65\ \x74\x3d\x22\x31\x30\x30\x25\x22\x20\x73\x74\x6f\x70\x2d\x63\x6f\ \x6c\x6f\x72\x3d\x22\x62\x6c\x61\x63\x6b\x22\x20\x2f\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x72\x61\x64\x69\x61\x6c\x47\x72\x61\ \x64\x69\x65\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x64\x65\x66\ \x73\x3e\x0a\x20\x20\x20\x20\x3c\x72\x65\x63\x74\x20\x66\x69\x6c\ \x6c\x3d\x22\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\x22\x20\x78\x3d\ \x22\x30\x22\x20\x79\x3d\x22\x30\x22\x20\x77\x69\x64\x74\x68\x3d\ \x22\x34\x30\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x34\x30\ \x30\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x63\x69\x72\x63\x6c\ \x65\x20\x66\x69\x6c\x6c\x3d\x22\x75\x72\x6c\x28\x23\x62\x6c\x75\ \x65\x53\x70\x68\x65\x72\x65\x29\x22\x20\x73\x74\x72\x6f\x6b\x65\ \x3d\x22\x62\x6c\x61\x63\x6b\x22\x20\x73\x74\x72\x6f\x6b\x65\x2d\ \x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x20\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x78\x3d\x22\x32\x30\x30\x22\x20\x63\ \x79\x3d\x22\x32\x30\x30\x22\x20\x72\x3d\x22\x31\x30\x30\x22\x2f\ \x3e\x0a\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x08\x7a\x5a\x27\ \x00\x64\ \x00\x72\x00\x61\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x08\x01\x8a\x47\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x03\xd5\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/images/0000755000076500000240000000000012613140041023734 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/images/drag.png0000644000076500000240000000172112613140041025360 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<cIDATXÃÅ—ÍoUÅwf’‰Ó|Ô­ ÒMUQQ„Ê Ø Ä¢R,*$(k6,úÀ‚ ¨;,Ø‚ªÚEd¡4@…n!µœæÃµÓyï]óìŒÄ¦õTéJi<çÜsλï¨*÷ò ¸ÇWôzÿ5yòæ‘U¤0ÊÆª"QÀL0ë”À:Õ5>{ûs榪ºAï–Aœ}]Î<øÈ ¯:§¡ª}vÜ9T`ª4ï ‚˜­†~ñÞ‰êw‹ÿ¾ûáW|ÔUÕöPÕ¾uö4?ªªª:_¶«œZmµnjµº¤Æ½²ðuòæ‹|ûü£¼ÛMîU3à”,`|9Òû´‹1·X^®†!‡z::ùÆžáå—Žñ0!"rÇ!L½Ö.дàP,ª Íf# Uñðñ“£§ßúø™¹§€C@aÈUE1ž@ēɿmß¾ Ž–Ò §Íß‚Þ^¥Æzûy½ $;äîö\»gΠ위ºësÙÝCóDƒb×ýû. ¢¬óý”hì\—aº:áÇÀ8Pdm%pMZ¹mF;-€ôH9†0R¤VY±•ÅËö§/?J®,þиt•?€U`kHÔ@% S(¨UVíÂü¹ä×o>5åryýï:ËßÿÉoå*eàpX2 Œ¡L=è…è/ר\ªðûÒ þjÀð?†ÕÍ!8B­²læÏïz¸êAëÀ†ÝÒ_> ¬79÷ΩÂôõØŸ+,íºâen‰ÞÆïÀO3)Ç€ÃÀ-8èí¦ýÑÚzi‡Í^ÿùhŽWv$IEND®B`‚PyQt-gpl-5.5.1/examples/draganddrop/delayedencoding/images/example.svg0000644000076500000240000000520112613140041026106 0ustar philstaff00000000000000 Sphere A gradient filled sphere. PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/0000755000076500000240000000000012613140041022315 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/draggableicons.py0000755000076500000240000001302412613140041025636 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QByteArray, QDataStream, QIODevice, QMimeData, QPoint, Qt) from PyQt5.QtGui import QColor, QDrag, QPainter, QPixmap from PyQt5.QtWidgets import QApplication, QFrame, QHBoxLayout, QLabel, QWidget import draggableicons_rc class DragWidget(QFrame): def __init__(self, parent=None): super(DragWidget, self).__init__(parent) self.setMinimumSize(200, 200) self.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel) self.setAcceptDrops(True) boatIcon = QLabel(self) boatIcon.setPixmap(QPixmap(':/images/boat.png')) boatIcon.move(20, 20) boatIcon.show() boatIcon.setAttribute(Qt.WA_DeleteOnClose) carIcon = QLabel(self) carIcon.setPixmap(QPixmap(':/images/car.png')) carIcon.move(120, 20) carIcon.show() carIcon.setAttribute(Qt.WA_DeleteOnClose) houseIcon = QLabel(self) houseIcon.setPixmap(QPixmap(':/images/house.png')) houseIcon.move(20, 120) houseIcon.show() houseIcon.setAttribute(Qt.WA_DeleteOnClose) def dragEnterEvent(self, event): if event.mimeData().hasFormat('application/x-dnditemdata'): if event.source() == self: event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() dragMoveEvent = dragEnterEvent def dropEvent(self, event): if event.mimeData().hasFormat('application/x-dnditemdata'): itemData = event.mimeData().data('application/x-dnditemdata') dataStream = QDataStream(itemData, QIODevice.ReadOnly) pixmap = QPixmap() offset = QPoint() dataStream >> pixmap >> offset newIcon = QLabel(self) newIcon.setPixmap(pixmap) newIcon.move(event.pos() - offset) newIcon.show() newIcon.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 = self.childAt(event.pos()) if not child: return pixmap = QPixmap(child.pixmap()) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << QPoint(event.pos() - child.pos()) mimeData = QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWidget = QWidget() horizontalLayout = QHBoxLayout() horizontalLayout.addWidget(DragWidget()) horizontalLayout.addWidget(DragWidget()) mainWidget.setLayout(horizontalLayout) mainWidget.setWindowTitle("Draggable Icons") mainWidget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/draggableicons.qrc0000644000076500000240000000025412613140041025771 0ustar philstaff00000000000000 images/boat.png images/car.png images/house.png PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/draggableicons_rc.py0000644000076500000240000011316712613140041026330 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 16:53:19 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0b\x93\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4b\x00\x00\x00\x36\x08\x02\x00\x00\x00\x00\x90\xf3\xa2\ \x00\x00\x0b\x5a\x49\x44\x41\x54\x78\x5e\xdc\x93\x41\x0a\x45\x21\ \x0c\xc4\x5a\x79\xf7\xbf\xb1\xfa\x8b\x42\x36\x01\xff\xbe\x59\x0c\ \x71\x68\xbb\x33\xd6\x61\xef\x5d\x89\x83\x9f\xe4\x15\x27\xf8\xc2\ \x02\x95\x9e\x44\x1e\xbd\x77\x81\xb1\xb1\xbb\x13\xf3\x50\x56\x89\ \x83\x9f\xe4\x15\x27\xf8\xc2\x04\x95\x9e\x44\x1e\xbd\x77\x81\xb1\ \x2f\x33\xe3\x80\x80\xcb\x7a\x92\x88\xd3\x2b\x76\x95\x88\x4b\xf8\ \xdf\xfb\xf8\x88\xee\x8c\xe8\x4e\xff\x7f\x18\xab\x3b\x31\x0f\x65\ \x95\x38\xf8\x49\x5e\x71\x82\x2f\x4c\x50\xe9\x49\xe4\xd1\x7b\x17\ \x18\x1b\xd1\x9d\x2f\x33\x7f\xbc\x97\x4d\x4c\x54\x57\x14\xc7\xcb\ \xbc\xc7\x0c\xcc\x0c\x98\xa0\xc5\x05\x51\xab\x26\x2c\x74\xd1\xc6\ \x9a\x26\x04\x01\x29\x30\x6a\x62\x63\xd2\xc4\xc6\x8f\x85\x8d\x4d\ \x9b\x18\x6b\x93\x6e\xaa\x4d\x64\xc7\x82\xb4\x4d\xa3\xb1\x5d\xb8\ \xb1\x8b\xee\x9c\xc6\xfa\x41\x04\x09\x50\x48\x4d\x20\x68\xc4\x26\ \x8d\x90\xb6\x09\x51\x44\x10\x82\x30\xdf\x9f\x40\x7f\x7d\x27\x9e\ \x79\xcc\x20\x85\xa0\xde\xdc\xbc\x39\xf7\xdc\x73\xef\xf9\x9f\x8f\ \x7b\xee\x9d\xdc\x4a\xbd\xfc\x0b\xc3\xde\xd2\xe9\x34\xa9\x9f\x25\ \x09\x47\x85\x73\x67\x95\xc9\x30\x4b\x32\x3f\x3f\x5f\x25\x97\x80\ \x67\x87\xf4\x4a\x2a\x4d\xe6\xe9\xf4\x0a\x9a\x3d\x33\x5f\xf7\x8d\ \x6f\xf7\x3d\x3a\x0c\xc3\x48\x26\x93\x8d\x8d\x8d\x93\x93\x93\x12\ \x8d\x45\x37\x04\xa8\xd7\xe3\xc9\x73\x3a\x23\xa9\x14\xb3\x2e\xc3\ \xc8\x9f\x9b\x0b\x86\x42\xd0\xf6\x18\x42\xac\x5b\xb7\xae\xa9\xa9\ \x89\x30\x02\xd1\xe1\x70\x68\x2e\xac\xf8\xc6\xa7\xa1\x75\x35\x59\ \xce\x72\x10\x80\xa3\xba\xba\x7a\x62\x62\xe2\xd0\xa1\x43\x91\x48\ \x04\x8e\x18\x29\x5f\x4d\x16\xaf\xd7\xfb\xcb\xb5\x6b\x89\x07\x0f\ \x0e\x6c\xdd\x4a\x5c\xee\x3c\x7e\xfc\x57\x71\xf1\x67\xc7\x8f\xb3\ \x44\x6d\x03\x0f\x62\x7e\xbf\xbf\xac\xac\xac\xbb\xbb\xdb\x34\x4d\ \x38\x78\x90\xa9\xd7\x77\x1f\x6a\xda\x70\xf0\x20\x52\xa9\x54\x45\ \x45\xc5\xf6\xed\xdb\x01\xba\x74\xca\x41\x7c\x79\xf6\xec\xa7\x9b\ \x37\xcf\x9d\x3a\x95\x3c\x79\xf2\xdc\xce\x9d\x7b\x0e\x1c\x80\x99\ \x48\x24\xd8\x84\x2c\x80\x88\xc7\xe3\x6c\x3b\x36\x36\x56\x5e\x5e\ \xce\xb6\xf0\x59\x08\x47\x76\x78\x4d\x59\xaa\xc9\xc9\x57\xa2\x17\ \x0c\x06\xfb\xfa\xfa\xf0\xf4\xb3\x67\xcf\x60\xaa\x02\x11\x16\x1a\ \xac\xa5\xa5\xa5\xa1\x40\x20\x92\x48\x8c\x85\x42\xf8\x66\x26\x1e\ \x8f\xe2\x95\x50\x68\x72\x6a\x8a\xb5\xba\x04\x58\x6e\xb7\xbb\xab\ \xab\xab\xb6\xb6\xb6\xa6\xa6\xa6\xa7\xa7\x47\xd2\x44\x64\x56\x9a\ \xa5\xe6\x4a\x63\x8e\x0e\x35\x0f\x1a\xf3\x02\x81\x40\x7f\x7f\x3f\ \xea\x71\x3f\x27\x47\x81\xea\x57\x89\x7c\xd3\x94\xb3\x64\x5a\x47\ \xcb\xb0\x68\xc3\x34\x0d\xab\xa9\x98\x6c\xe5\x72\xb9\x3a\x3b\x3b\ \xeb\xea\xea\xec\x46\xf2\x15\x00\xaf\xea\x5d\x8a\x7a\x39\xba\x62\ \x5e\x55\x55\x95\x9a\x47\x82\xd9\x7d\x6c\x37\x32\x63\x27\x5d\xc1\ \xc1\xa4\x33\xb4\x49\xaa\x30\x96\x60\x24\xdf\x8e\x8e\x0e\x8e\xf7\ \xee\xdd\xbb\x45\xa9\xaa\x5e\x81\x85\x4b\x1c\x9b\xd9\x9c\x26\xa7\ \x4e\x62\x58\x59\x59\x49\x4e\xf6\xf6\xf6\x32\x8c\xc5\x62\x7c\xe5\ \x58\xaa\x64\xee\x72\x79\x25\x62\xc1\xac\xd5\xc5\x66\x95\xcf\x5a\ \x02\xb8\x68\x34\xca\xb7\xbd\xbd\x9d\x63\x49\xb2\x48\xe2\x00\xe0\ \x45\xd8\x16\x35\x24\xfb\xc6\xd7\x28\xe1\xbf\x17\x16\xa7\x74\x7a\ \xef\x9e\x3d\x88\x0e\x0d\x0d\x31\xa4\x0e\xb8\x0b\x0b\x59\x88\x06\ \x98\x59\x11\x54\x4d\x20\x33\x48\x62\x97\x2b\xdf\xe1\x58\xe3\x74\ \xe2\x0c\xb7\x61\x38\x4d\xd3\x53\x54\x44\xfc\xc9\x55\x64\x54\x1a\ \xfb\x01\x24\xa5\xa2\xc0\xeb\xed\xeb\xed\xf5\xf9\x7c\xfb\xf6\xee\ \xbd\xd5\xd6\xc6\x1e\x4b\x17\xf6\xac\xbb\xca\xcc\x4a\x2a\xbd\xdf\ \xc2\xe1\xf0\x1f\x83\x83\x9a\x37\xac\x90\xc8\x42\x9c\x39\x7d\xba\ \xff\xce\x9d\x96\x96\x96\x9e\xde\xde\x78\x2c\x26\xe0\x68\x2e\x87\ \x23\x61\x39\x33\xab\xd8\xc8\x0f\x7e\x59\x5b\x52\xf2\x68\x64\x84\ \x25\x1d\x23\x23\xd8\xf0\xe7\xcc\xcc\x63\xd3\xec\xe8\xe9\x99\x09\ \x04\x40\xa6\xd2\x7c\x0a\x0c\x83\x92\x8a\xcb\x24\x35\x0a\x0a\x0a\ \xbe\x6a\x6c\x3c\x7a\xf4\x68\xb5\xcf\xd7\xdc\xdc\x8c\xa0\x03\x03\ \xe8\x56\x83\x86\xf3\xf6\xb6\x6d\x5c\x33\x02\xde\x5e\xe7\xf4\x3e\ \xcc\x98\xc7\x15\xf4\xf4\xe9\xd3\xaa\xf7\xdf\x9f\x7b\xf8\x90\x22\ \x00\x62\xfb\xb9\x96\x68\x94\x94\x94\x44\x63\xb1\x74\x2a\xa5\xa1\ \x46\xe6\x9f\x70\x78\xa3\xdb\x5d\xe4\x74\x8a\x91\xd9\x67\xd8\x82\ \xf2\x24\x1a\x05\x59\x19\x50\xb8\xe5\x2c\xb3\x30\x40\xb0\xea\x3e\ \x18\x3f\x14\x0c\xbe\xe5\xf1\x10\x6d\x41\x85\x30\x55\x0a\x3b\xa7\ \xa7\xa7\x89\x21\x1c\xe0\xcb\x1a\x08\xf6\x49\x53\x84\x36\x6d\xfa\ \xbd\xab\x6b\xfd\xfa\xf5\x6c\x88\x09\x6a\xa1\xa9\x08\xd4\xbc\xc9\ \x89\x89\x9d\x55\x55\x0d\xa9\x54\xd3\xc1\x83\xd1\x64\x52\xde\x11\ \x12\x46\x01\x0a\x30\x02\x02\x9b\xa6\x5e\x07\x4d\x7d\x4b\xcb\x4f\ \xb5\xb5\x95\x1b\x36\x70\xaf\x39\x10\xb3\xe4\xe7\x20\x2c\x99\xe4\ \xfc\x3c\xf9\xf6\x79\x7b\x3b\xa3\x1f\x1a\x1a\xe2\x91\x08\x4b\xa0\ \xe5\x2d\xa3\xa5\x86\x32\x3b\x9d\x48\xbc\xeb\xf7\xff\x5c\x5f\xbf\ \xd1\xeb\x4d\x00\x5d\xf4\x5a\x0d\x8f\x13\x58\x81\x01\x57\x13\xc4\ \xed\x74\x9e\xed\xee\x06\xf6\xbd\xdb\xb7\xdf\x2c\x2d\x55\x23\x33\ \xb5\x54\xce\x9e\x98\xb7\x63\xd7\x2e\x5f\x2a\xf5\x6d\x7d\x7d\x20\ \x16\x4b\xcd\xce\x72\xae\x93\xb3\xb3\x49\xeb\x2b\x3d\x9e\x4a\x71\ \x01\x0b\xdf\xde\xd1\x05\x93\xa0\xc8\x30\x41\x5f\x48\x30\x45\x34\ \xe8\xf3\xba\x4a\xa6\x72\x3a\xd0\x52\x0b\x39\xa8\x43\x29\xaa\xed\ \x4c\x01\xc6\x14\x50\x01\x0c\x6c\xc0\x63\x02\x86\x48\x59\xca\xd4\ \x52\xa9\xc2\xa3\xa3\xa3\xef\x55\x57\x13\xbd\x6f\xea\xea\xc6\x83\ \x41\x09\x9a\x16\x8f\xe5\xdc\x25\x22\xb6\xfa\xb6\xfc\xfb\x40\x35\ \x02\x18\xd8\x80\xc7\x04\x0c\x91\x98\x01\xc9\x61\xaf\x42\x9f\x9c\ \x38\xf1\xce\xd4\xd4\xf7\x3e\xdf\x78\x28\x64\x30\xc6\xc2\x97\xdb\ \x74\xc3\xe5\xed\xbc\x7c\xf5\xd8\x03\x5e\x60\x03\x1e\x13\x30\x84\ \xa1\x94\x18\x07\x73\xfa\xb4\x0f\x85\xc3\x0d\x5b\xb6\x70\xf6\x32\ \x7f\xd8\x20\xa4\x29\x91\xdb\x04\x8a\x90\x8b\x4a\xe6\x4c\x89\xfc\ \xd2\x62\x10\x74\x15\x7c\x21\x8c\x85\xff\x2d\x01\x8f\x09\x18\x22\ \x1c\x9a\x69\x7f\x7c\x50\x67\x23\xc9\xa4\xae\x11\xe7\x28\x61\xcf\ \x40\x28\x6d\x9a\xcc\x3a\x25\x5d\x38\x10\xb9\x99\x27\xb3\xca\x50\ \xc9\x0c\xad\x1c\x05\xa0\xba\x54\x91\x8d\xa3\x46\x02\x05\x13\x8c\ \xe2\x62\x2d\x4e\x99\x18\x6a\x09\x56\x17\xdb\x09\xe5\x33\x56\x85\ \x99\xa1\xae\xa2\x8b\xf0\xa2\xbe\xd7\x45\xf6\x59\x5d\xa2\xda\x95\ \xaf\x3b\xdb\xdc\xa4\x30\x68\x4a\xab\x98\xb0\xe6\x6d\xda\x6d\x0f\ \x17\x55\x90\xd3\xec\xfe\xa6\x12\xce\xda\xbc\xc8\xd3\x24\xeb\x85\ \xbd\xfa\x96\xf5\x5e\x47\x85\xee\x8b\x6a\x00\x2c\x55\xd8\xc4\xb6\ \x65\xbd\xbc\x17\x3e\xc1\x58\x25\x3a\xd7\xb8\x5c\xa5\x1e\x4f\x21\ \xcf\x2f\xd3\xf4\x3a\x9d\xd0\xbc\x3f\x00\xa1\x47\xf7\xa5\x98\x27\ \x20\xd9\xb6\xc0\x34\x51\x81\x22\xd4\xa1\x14\x1a\x00\xe8\x90\xe7\ \x8e\x28\x53\x9c\xff\xff\xf2\x66\x3c\xa7\xce\x93\x4e\x93\xc7\x80\ \x95\xd0\x45\x2e\xd7\xad\xe1\xe1\x8f\xaf\x5f\x6f\xf0\xfb\xf7\x5d\ \xbd\xea\xbb\x7c\xf9\xeb\xce\xce\x47\xe1\xf0\x5a\xde\xa5\x22\x2c\ \xab\x56\xd1\x44\xb5\x50\x6c\xfb\x28\x18\x3c\xd3\xd9\x89\x22\xd4\ \xa1\xf4\xd8\x8d\x1b\x6d\xc3\xc3\xc0\x30\x2d\x48\xea\x77\xcd\x1f\ \x79\x1e\x0b\x91\x7d\x0e\xc5\x62\x7c\x26\x49\x60\x3f\x84\xac\xe1\ \xfd\x01\xff\x58\x6b\xeb\x17\xf7\xef\x6f\x38\x72\xa4\xd9\xef\xbf\ \xd8\xde\x7e\xe6\xd2\xa5\xb1\x1d\x3b\xf6\xb7\xb6\x9e\x1f\x18\xf0\ \xba\x5c\xe4\x03\xf1\x94\xab\x55\xd3\x5e\x93\x7f\x91\xe3\xad\x53\ \xb6\xb3\x44\x12\xba\x4d\x93\xbf\x8e\x1e\xa7\xf3\xdc\xbd\x7b\x1f\ \xb4\xb5\xa1\x02\x45\xa8\x43\x29\xaa\x01\x00\x0c\xc0\xe4\x5b\xc0\ \x14\xba\xec\x00\x1f\x13\x20\x54\x57\x26\x86\x0c\x52\xe9\xf4\xd0\ \xd4\x54\xb1\xf5\xb0\x14\x8e\xb8\xc4\x61\x95\xd9\x8f\x5a\x5a\x66\ \xca\xcb\xff\x1e\x1c\xbc\x78\xfe\xfc\x87\xfb\xf7\xd7\x54\x54\x1c\ \x3b\x7c\xf8\xe6\x95\x2b\xbf\xde\xbc\xf9\xe3\xf8\xf8\x77\x77\xef\ \x3a\x0c\x63\x68\x66\xc6\xe0\x7f\x83\x18\x29\xa5\x4b\x33\x4f\x2b\ \x21\x5d\x13\x4c\xa7\x04\x00\x69\x59\x58\xf8\xdb\xe8\x68\x28\x9d\ \xbe\x30\x30\x70\xe1\xc9\x13\x36\x47\x05\x8a\x50\x87\x52\x54\x03\ \x00\x18\x80\x01\x52\x9e\x04\x5c\xbc\x63\x1d\x51\xc0\x63\x02\x86\ \xe8\xeb\xdf\xf1\x6f\xbb\x66\x13\x12\xd7\x15\xc5\xf1\x18\x26\xc9\ \x8c\x89\xbe\x29\x6f\x1e\x31\x91\x38\x05\x29\x82\xbb\x30\xa6\x10\ \x78\x69\xc1\xa4\x1f\x09\x42\x90\xe8\xd4\xac\xaa\xce\x60\x18\x64\ \x32\x01\x75\x93\xac\x8d\x55\x4a\x40\x5c\x64\x13\x82\x18\xad\x2b\ \x37\xda\x45\xc7\x96\xa4\x13\x42\xc4\x44\x4d\xa8\x50\x17\x92\x21\ \x42\x16\x89\x88\x69\x0d\xa9\x49\x27\xed\xf4\xc7\x1c\x72\x73\x79\ \x8f\xea\x50\x5d\x4d\x7a\xb8\x8b\xf3\xee\x3d\xe7\x7f\xfe\xe7\xdd\ \x7b\xdf\x83\x73\x2f\x9a\x08\xef\xbe\xbf\xaf\xef\xc6\xea\xea\xd5\ \xb9\xb9\x83\xa5\xa5\x19\x49\x32\xb7\x6e\x0d\xaf\xf7\x9b\xa9\xa9\ \xb5\x8a\x8a\xbb\x93\x93\x07\xcb\xcb\x29\xa8\x48\x81\x84\xc2\x04\ \x95\x95\xcf\x4e\x9c\x98\x1c\x1f\xef\x5f\x58\xf8\xa8\xa4\xe4\x5c\ \x2a\x35\xf9\xe8\x91\x51\x5c\x8c\xbb\x4c\x8a\xfe\xf3\xa0\xb9\x75\ \xc9\x5c\xd2\x2b\x2d\x2e\xfe\x31\x9d\x3e\x93\x4c\xd6\x04\x02\xdf\ \x3d\x7e\xfc\xc3\xf8\x38\xe0\x84\xa3\x4e\x23\x11\xd1\x21\x00\x0d\ \xc8\xf4\x4e\x4d\x7d\xe0\xf3\x41\x8f\x54\xc4\x1d\xda\x90\x27\x05\ \x12\x91\xa5\x84\xbc\x3b\xe5\x96\x6a\xcf\xfd\xd9\x59\x6f\x49\x49\ \x5f\x4d\xcd\x4a\x24\xf2\x4b\x63\xe3\x7c\x38\xfc\x6b\x53\xd3\xc3\ \x70\x78\xef\xce\x9d\xb7\x52\x29\xa9\x1a\x39\x6a\xec\x54\x1c\xe8\ \xff\x3a\x16\x3b\x69\x9a\x97\x8f\x1e\x85\x70\xb2\xae\x2e\x1b\x8f\ \xff\xd6\xda\xfa\x22\x1a\x5d\x8b\x46\x5f\xd0\x22\x91\xd5\xd6\xd6\ \x4c\x3c\x7e\xae\xba\x9a\x86\xc2\x23\xfd\x32\x84\x82\x31\x2e\x38\ \xe2\x0e\xc8\x29\xd3\x6c\x8e\xc5\x80\x05\x9c\x10\xba\x40\x80\xfe\ \x9f\x53\xa9\x3d\x45\x45\xf7\x1b\x1a\x16\x9a\x9a\x20\x09\x55\x08\ \x43\x1b\xf2\xa4\xa0\xd2\xd1\xce\x2d\x72\xc2\xe4\xd0\x3b\xf3\x36\ \xc9\xb5\xb6\xb6\x27\xcd\xcd\xeb\xb1\xd8\xe0\xb1\x63\xe5\xc1\x20\ \x3e\xee\x33\x09\xc1\x42\x79\x30\x3f\x6f\x7a\xbd\x2f\xdb\xda\xae\ \xd8\x36\x73\x7e\xab\xbe\x3e\xdb\xd1\x91\x4d\x24\xb2\x17\x2e\xd0\ \x50\xb2\xe7\xcf\x67\x2f\x5e\xec\x38\x7c\x98\x86\xc2\xa3\x1a\xa2\ \x61\x8c\x0b\x8e\xb8\x03\x02\x14\x80\xc0\x0a\xb8\xfb\xe4\x83\x81\ \x03\xc1\xe0\x75\xdb\x86\x1e\x24\xa1\x2a\xe9\x41\x1e\x4a\x92\x88\ \xd8\xef\xd0\x9d\x55\x92\xf7\x66\x66\x0c\xc3\xb0\x0d\xe3\x13\xbf\ \xff\x73\xcb\x0a\x7a\x3c\x8d\x67\xcf\x4a\x09\x43\xd9\x3b\x1c\x9f\ \x2d\x2f\x9b\x86\xf1\xf1\xbe\x7d\x75\x96\x25\xfb\xeb\x94\x65\x7d\ \x19\x08\xd0\x4e\xd2\x4c\xf3\x0b\xd3\xac\xdb\xbf\x9f\x31\x1a\x0a\ \x8f\xf4\xd3\xc4\x06\x63\xf1\xc2\x1d\x10\xa0\x00\x74\x9f\xcc\x20\ \x8a\x06\x94\x3e\xf4\x78\xa0\x07\x49\xdb\xef\x87\x30\xb4\xf5\xf4\ \x44\x3c\x7a\x7d\x1a\x9d\x0a\x2c\x73\x72\x24\x14\x9a\x9e\x9e\xfe\ \xe9\xce\x1d\xf9\x55\xdc\xbe\x79\x73\xf5\xe9\x53\xdd\x4c\x57\x54\ \x69\xc3\xe3\xf3\x35\x5e\xba\xb4\xdb\xe7\x6b\xd8\xb5\x8b\xde\xdf\ \x33\x19\xf7\xb9\xc5\xe9\xdc\x87\xee\x0f\xbe\x04\x5a\xa7\xec\xd8\ \xaf\xa8\xd3\xe5\xbc\xfe\x5c\x5f\xff\xb6\xbb\x1b\xc0\x7f\xfb\x55\ \x8a\xef\xf3\xe5\xe5\x23\xe1\xf0\xa7\xc7\x8f\x4b\x0a\xd7\x6c\xbb\ \xaa\xaa\x0a\xf2\x52\xef\x53\xf6\xef\xf6\xa1\x63\xe1\x65\x35\x99\ \x9b\x9d\xb5\x2c\xcb\xb1\x4a\x55\x1d\x96\x89\x65\x88\x7a\x51\xc5\ \xa1\x43\xd9\x6d\x12\xa0\x00\x04\x16\x70\x9d\xa1\x22\xc0\x10\x94\ \x20\xa6\x5c\x14\x6d\x65\xef\xdc\x87\xee\x3d\xa6\xea\xd0\x94\xd2\ \xca\xca\xca\x06\x07\x07\x65\xeb\x4b\x62\xca\x4c\xbe\x34\x14\x36\ \x5b\x5a\x5a\x88\x41\x81\x0c\x2f\x04\x77\x44\x14\xa5\x8b\xb8\x3b\ \x95\x25\xee\x80\x00\x55\x5b\x5b\xbb\x41\x38\xc8\x40\x09\x62\xd0\ \x13\x04\x61\xee\x90\xbc\xce\x80\x89\x0a\xe2\xd0\xd0\x10\x93\xbe\ \xb8\xb8\x88\xae\xd8\x80\x2e\xe1\x47\x46\x46\x18\x4d\xa7\xd3\x52\ \x81\xff\xfb\xbf\x8a\xfa\x6e\x01\xc5\x7e\x19\x1e\x1e\x96\x95\xa2\ \xbf\x2f\x7a\x96\x96\x96\x08\x07\x25\x21\xb3\x31\xe6\x26\x77\xa2\ \x40\x57\x49\x76\x76\x76\x52\x6c\x4f\x26\x93\x8e\x85\xd1\xd3\xd3\ \x43\xbc\xd1\xd1\x51\x79\xdc\xca\x9d\x28\x51\x24\xdc\xd8\xd8\x18\ \xb0\x80\x3b\xb6\x0c\x04\xfc\x7e\x3f\x64\xc4\x72\xd3\x3b\x51\x79\ \x9d\xcc\xa8\x24\x7b\x7b\x7b\x39\xf7\x0a\x85\x42\xed\xed\xed\x5d\ \x5d\x5d\x91\x48\xa4\xb2\xb2\x32\x18\x0c\x72\x48\xa4\xe2\x6d\xf1\ \xa6\x82\x9e\x24\xb0\x80\x13\x82\x40\x84\x23\x28\xa1\x21\x40\xda\ \x62\xa3\xb6\xd5\x06\x27\x33\x9b\xcc\xa1\x3e\x2a\xef\x72\x65\x65\ \x65\x60\x60\x20\x9a\x93\x44\x22\x41\xd5\x54\x15\x7c\x05\x71\x2b\ \x73\xa8\xdb\xa8\xa9\x9b\x98\x98\x20\x90\x44\x24\x34\x04\x24\x9c\ \xca\x6d\xa3\x39\xcc\xff\xa6\x82\x58\xcb\x36\x70\x88\xda\x7b\xdb\ \x7b\x53\x41\xd6\xbc\x9b\xba\x9e\x5e\x3e\x37\x15\xf2\x3d\x3f\xd4\ \xd9\x90\x27\x22\x9f\x59\x48\xe8\x31\xb6\xeb\x3e\x8d\xfb\x93\xae\ \x44\x86\xf2\x3f\x3f\x7c\x0f\x6e\x9b\x14\x15\xb4\xfc\x7f\x73\xaf\ \x20\xa4\xf0\xef\x08\x17\xfe\x3e\x2c\xfc\xdb\x97\xff\x00\xfb\x6b\ \xc0\x37\xb1\x10\x1f\x8c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x0c\xdc\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4b\x00\x00\x00\x36\x08\x02\x00\x00\x00\x00\x90\xf3\xa2\ \x00\x00\x0c\xa3\x49\x44\x41\x54\x78\x5e\xdd\x5a\xdb\x93\x55\xc5\ \xd5\xef\xee\x7d\xce\x99\x1b\x03\xcc\x30\x37\x44\x19\x18\x2e\x2f\ \xc6\x38\x58\xca\xc5\x19\x14\x98\xa4\x2c\x35\x98\x08\x09\x65\xe5\ \x42\xb4\xb4\x0c\x65\x12\x1f\xe2\xc3\xf7\x96\xbf\x20\x79\xc8\x05\ \xa2\x46\x0a\x43\x88\xa6\x4c\x82\x31\x26\xb1\x2c\x22\x20\x8a\x90\ \xd2\x12\x92\x54\xe5\x01\x74\xb8\x49\xf8\x64\xe0\x38\xc3\xdc\x3c\ \x67\xef\xdd\x9d\x75\xd6\x3a\xdd\xab\xf7\xd9\xce\xcc\xa9\xf1\x24\ \x0f\x69\xfa\x6c\x56\xef\xbe\xad\x5f\xaf\x5b\x77\xcf\x16\x31\x26\ \x8d\x89\x08\xa6\xf9\x0d\x17\xb9\xfd\xd4\xef\x99\x4e\xa5\xd8\x4b\ \xe9\xaa\x4f\x6c\x9c\x6a\x93\x26\xb8\x98\x66\x2c\x23\xa5\x14\x42\ \xc0\xd3\x18\x63\x69\x7e\xa6\x8b\xd4\xd2\xaf\x82\x22\xbf\xac\x65\ \xe2\xb9\x98\xc0\x54\xd1\x86\x39\xe4\xc4\xc5\xcc\xa7\x99\x5e\x63\ \x22\xc2\xa1\x85\xc4\xeb\x95\x4a\x8e\x51\xa2\xfd\x66\x8e\xf6\x09\ \x1a\x5c\x61\x9a\xdd\x22\xce\x5e\x4b\xa3\x28\x02\x02\x90\x00\xcd\ \x4f\x2f\x11\x00\x47\xf8\xb5\xe9\x97\xe9\x96\x3e\x01\x13\xc1\x74\ \xb3\xd4\xd2\xd9\x49\xaf\xd4\x33\x93\x39\x77\xee\xec\x43\x8f\xec\ \x18\x1f\x1f\x0f\x82\x00\x85\x23\x05\xca\x40\x18\x09\x4f\x49\x45\ \x7c\x6d\x25\x88\xff\xa8\x9d\xb4\x72\xf3\xab\xa5\x34\xf4\xc0\x11\ \x68\xa2\xa6\xa6\xa6\x3d\xcf\x3c\xd9\xdd\xbd\x04\x40\xe2\x44\x28\ \xe1\xaa\x53\x66\xd6\xf0\xfe\x75\xf1\xe2\xba\xf5\x03\x9f\x69\xbc\ \xfc\xbd\x81\x95\x63\x93\xa1\x94\x64\x2e\x84\x8f\x71\x38\x68\x8c\ \x09\xdb\xd1\x60\x54\xb2\x4d\xd8\x1d\x18\x53\x6e\x3a\xa7\x21\xbb\ \xfb\xb5\x93\x30\xd1\x3b\xc7\x8e\x5c\xb7\x68\x91\x03\x59\x3d\xc2\ \x92\x96\x7f\xa2\xff\x48\xdb\x06\x55\xc1\x1c\x08\xef\x83\x55\x6b\ \xd6\xaf\x6b\x1b\xff\xf5\x13\x9f\x27\x45\xb2\x23\x10\x3a\x96\xa1\ \xc5\x66\x04\x23\x64\xf4\xde\x04\x56\x86\xd0\x1e\x68\xc9\x95\x4a\ \xa9\x07\x7e\x78\xe0\xd8\x95\xa6\x13\x7f\x7d\xe3\xba\x45\xd7\x13\ \x03\x3e\xc8\xe9\xcd\x3e\xd1\x94\x19\x4d\xd0\x5c\x15\x86\x61\x36\ \x9b\xbd\xf8\xc1\x05\x80\xd7\xd7\x3e\xf9\xdc\xe3\x03\xf9\xfc\x78\ \x64\x8c\x72\xda\x45\x60\x48\x8a\x2c\x43\x42\x60\x81\x90\x14\x79\ \x58\xaa\xa4\xd7\xb6\xbb\xe5\x59\x03\x8b\x52\x3e\xff\xf8\xc0\x57\ \x7f\x7c\xb0\x77\x75\x3f\x80\x5c\x74\xfd\x0d\xc0\x06\x82\x64\x0e\ \x19\x45\x0a\xcb\xcc\x32\x44\x82\xa5\xf7\xc1\x85\xf3\xab\xd6\xae\ \x5f\xdf\x5e\xd8\xf7\xed\x4d\x1f\x8d\x4e\x42\xb5\x52\x64\x37\xd2\ \x08\x36\xa1\xe4\x38\x8c\x91\x59\xf1\x6a\x3d\xb4\xd2\xb2\x46\xab\ \x44\xbe\xb4\x44\xb6\x34\x37\x7c\x7d\xe7\xc1\x37\x86\xea\x4e\x1c\ \x7f\xe3\xfa\x1b\x16\xb3\x24\x67\x94\xa1\x98\x39\x31\xbc\x0b\xe7\ \x01\x5e\xff\x9d\xed\xe1\x2f\x77\x0c\xe4\x87\x27\xa0\xa6\x04\x2f\ \x82\xd1\x15\x73\x5b\xc2\xa0\x08\x10\x49\x34\xe5\x6f\x58\xb4\x56\ \xe0\x3c\x13\x09\xd0\x56\x2a\x03\x3f\xa9\x00\x64\x7e\x78\x72\xdf\ \x8e\x81\x6f\xfc\xec\x60\xef\x9a\xfe\x13\xc7\xdf\xbc\x61\x31\x83\ \x9c\xde\x2c\x4b\x6e\xa3\x22\x76\x57\x48\x99\xe0\x81\x72\x5e\x38\ \x77\xae\x77\x6d\xff\xc6\x8e\x68\xef\xa3\x9b\xf2\xa3\x13\x25\x1c\ \xd8\x80\xb4\xd1\xb0\x2d\x91\xa6\x4d\x21\x43\xaa\x22\x30\x0c\x9c\ \x28\xfc\x59\x88\xcc\x07\xc5\x5e\xd4\x8d\xd6\xe6\xc6\xed\x4f\x1f\ \x3c\x74\x39\x73\x12\x40\x76\x77\x3b\x75\x25\x08\x69\x2d\x9d\x41\ \x86\x3e\xbc\xf3\x67\xcf\x02\xbc\x81\x4e\xfd\x8b\x87\x37\x5e\x1d\ \x46\x78\x34\x2b\x30\xed\x77\xa1\x82\xb3\xa6\xf4\x98\xf8\xb3\xae\ \xc4\xf6\x65\x3b\x64\xa1\x1a\x3b\x1a\x59\x23\x81\x84\xa9\xf7\x3e\ \xbc\xf1\x9b\xbb\x0f\xdf\xbc\xa6\x0f\x40\x2e\x5e\xb2\x84\x41\xce\ \x22\x5a\x38\x78\xe7\xce\x9e\x01\xe5\xfc\x5c\x87\xd9\xf3\x20\xc1\ \x93\xaa\x2c\x5e\xc5\x50\xac\xc1\xa2\x18\x94\x15\x66\x4a\x4b\x81\ \x70\xc0\x65\x22\x8e\x10\x6e\x8b\x95\xf5\xd9\x45\x11\x25\x15\x82\ \x9c\x7c\xf6\xc1\x8d\x0f\xed\x39\xd4\xbb\xb6\x0f\xd4\xb5\x7b\xc9\ \x52\xdf\xf1\x54\x8b\xd0\x97\xde\xd9\x33\x00\xaf\xef\xae\x4e\xb9\ \x7b\xfb\x26\x80\x27\x84\x62\x78\x1e\x13\xcc\x34\xfc\x38\xfa\x57\ \x4c\xc9\x2d\xa9\x01\xa3\x67\x84\x64\xc6\xde\x72\x48\x6a\x9d\x00\ \xb9\x67\xfb\xa6\x87\xf7\x1e\xea\x5d\x03\x20\x8f\x2e\x59\x9a\x00\ \x39\x43\x3c\xa4\xe4\x02\xc3\x99\xc1\x41\x80\x77\x77\x67\xf0\xcc\ \xd7\x36\x5c\x19\x43\xd7\xe2\x3b\xae\xa4\xca\xa5\x8c\x87\x62\x3a\ \x11\x54\x4d\x55\x1c\x10\xc9\xd3\x03\xe5\x3c\x27\x05\x13\x6b\xab\ \xd4\x89\x93\xb1\xea\x0a\x64\xdb\x9c\xc6\x47\x7e\x75\xf8\x95\x0f\ \x63\x00\xb9\xb4\xa7\x87\x18\x66\x9b\x9c\x2a\x1e\xfa\xf0\x06\x07\ \xdf\xbf\x65\x6d\xdf\x3d\x1d\x99\xa7\x1f\xd8\x30\x34\x32\x01\x9d\ \x54\x49\x3c\x9a\x16\xd4\x77\x20\x4c\x7a\x50\xa8\x59\x9a\x47\xd6\ \x57\xc9\x26\x48\xb4\xed\xad\xd9\xeb\xd2\x4b\xde\xf7\xc0\x88\x1a\ \x5d\x80\x00\x96\x7e\xfe\xc0\x86\x47\x9f\x3f\xbc\x6a\xed\xed\xef\ \x1e\x3f\xda\xd3\xb3\xcc\x49\x72\xba\x78\xc8\xf0\xde\x7f\x0f\xa4\ \xf7\x85\xce\xdc\x53\xdb\xee\xbc\x32\x3a\x29\xa4\xf5\x9c\x1c\x32\ \x19\x17\x1b\x94\xbf\xf9\x4c\x6b\xa9\x15\x21\xcb\xd0\xe0\xc3\x6d\ \xf7\xa4\x64\xaf\xca\x0a\x92\xd2\x71\x27\x49\x23\xda\x9a\x1b\xbe\ \xf5\xc2\xeb\x7f\xfc\xb0\x78\x02\x40\x2e\x5b\xee\x4b\x92\x7d\x69\ \x5a\x7a\xef\xbf\x77\xfa\x96\x75\x7d\x9b\x3b\xea\x9f\xdc\x7a\xe7\ \xd0\xf0\x04\xbc\x27\x78\x2c\x3b\x86\x58\xc6\x9c\x8c\x6f\xdc\x86\ \x40\x24\xe4\xcc\x12\x16\x95\x56\xc7\xca\x2f\x13\x12\xe6\xf7\x14\ \x9c\x94\xb3\xc9\xa1\xe1\xc9\xa7\xb6\x6e\xd8\xf1\xdb\xd7\x4b\x92\ \x3c\x76\x74\xd9\xf2\x15\x0e\x24\x24\xb6\x43\x1f\xde\xe9\x53\xa7\ \x6e\xb9\xbd\xff\x8b\x1d\xf5\xbb\xee\xbf\x63\x68\x0c\x94\x53\xf2\ \xa6\x81\xe3\x93\x48\x25\xe6\xc4\xdf\x09\x79\xec\x55\x56\xd9\x2e\ \x56\x60\xa9\x83\xe5\xb4\x53\xc0\x83\xda\x03\x69\xda\xe7\x34\x3e\ \xf6\xe2\x91\x97\x2e\x7f\xfc\xee\x5b\x6f\xae\x58\xb9\x92\x80\x30\ \x42\x77\x62\x08\x82\xe0\xbd\xd3\xa7\x6e\xeb\xbb\x63\xdb\xc2\xa6\ \x5d\x5f\xda\x30\x34\x3a\x4e\xd2\xd3\x46\x43\x6b\xa5\x52\x5a\x4a\ \xb2\x48\xc6\x6d\xc1\x18\x04\x57\x32\x42\x16\x22\xe9\x26\x95\x24\ \x6f\x57\x19\x09\xe9\x83\x1d\x41\x56\x2c\x90\xd6\x25\x84\x24\x49\ \x48\xed\xcd\x4d\x8f\xfd\xfe\xf0\x0b\x97\xc6\xdf\x3e\x7a\x64\xf9\ \x8a\x95\x04\xa7\xec\x69\x1c\xbc\xbf\x9f\x3c\xd9\xb7\x71\xa0\x37\ \x17\x6f\xbf\xf1\xa6\x3f\xfd\xed\x94\xb4\xaa\x9c\xcd\x66\x82\x20\ \x57\x28\x6a\x29\xd9\xe2\x18\xa2\xcf\x15\x81\xb0\x41\xcc\xbd\x64\ \x55\xe6\xb3\x03\xf7\xf1\xfd\xa4\xed\x4f\x0e\x96\x7a\x7a\xef\x25\ \x6f\x62\xeb\x72\x2a\x8e\x8b\x61\x18\x59\x49\x8a\xed\x37\xf6\xfc\ \xf3\xff\xdf\x5e\xb5\x7a\xdd\xd1\x43\xaf\x7d\xb6\xb7\x17\x40\x29\ \xa5\x24\x9d\xd3\x01\x5e\x3e\x9f\xdf\xb2\x65\xcb\xe0\xe0\xe0\xc2\ \xb6\x05\x23\x13\x1f\x4b\x69\x2d\x35\x13\x0c\x0d\xe5\x47\x47\x2f\ \x2d\x5e\x54\x1f\xc5\x5a\x54\x1c\xfc\xac\xd1\xb0\xa3\x04\x04\x2e\ \xae\x3b\x2d\xe5\x98\x87\x95\x54\xc7\x76\x6b\x29\xc9\x32\xf7\xc6\ \x13\x32\xa5\xe4\x99\x40\x9d\xbf\xf8\x71\x73\xf3\xc2\xf6\xf6\xd6\ \x28\x8a\x09\x24\x54\xce\x6b\xac\xbf\x74\xe5\x6a\x4f\x4f\xcf\xfe\ \xfd\xfb\x5b\x5b\x5b\x01\x1d\x6b\x69\xa1\x58\x14\xb0\x30\x75\x75\ \xda\x18\x8b\x4e\xd0\x61\xf7\x27\x3f\x7d\xf6\x0f\xbf\x7b\xe8\x95\ \xfd\xab\x3e\xbc\x5c\x08\x82\xca\x6b\x22\xb6\x1c\x2a\x01\x6d\x52\ \x07\x79\x4c\x86\xe0\xb2\xaa\xfb\x12\x25\x68\xac\x03\xac\xc3\x86\ \x91\x13\xc2\x38\x16\x9d\x1d\x75\x77\x6f\x39\x71\xdf\xd6\x3d\xdf\ \xfd\xce\x83\x74\x2c\xc6\x81\x71\x3f\x05\x58\x0a\x05\x40\x50\x97\ \xcb\x25\xf6\xa5\xb9\x6c\x96\x86\x87\x16\x09\x63\x73\x4b\xaf\x65\ \x29\xcb\x72\x95\xd6\xd0\x02\x37\x38\x0a\xd1\x12\x5f\xd4\x27\x75\ \x3c\x05\x45\xd1\x1a\x41\x6a\x04\xe2\xe4\xe7\xed\x5a\x08\xbf\xdd\ \xbd\x2b\xa3\x11\x14\x9e\x36\x8c\x0b\x87\xf4\xd4\x90\x25\x15\x2a\ \xae\xd7\x68\x2c\x90\x93\x7b\x5b\xd5\x09\x98\x9a\x00\x73\xa5\x4c\ \xa6\x66\x6d\x7d\x6c\x34\x06\x25\xa1\xc6\xc8\x01\x4b\x89\x04\x4b\ \x26\xd0\xd0\x10\x64\x32\x42\x6b\xb7\x19\xf0\xdc\xae\xa5\xed\x4c\ \x18\xf2\x01\x01\xb6\x34\x1a\x01\x7a\x9a\x6c\x11\x32\x63\x2e\x30\ \x54\x7f\xb6\x48\x27\xe2\x4a\x42\x76\x01\x0d\xf4\xe2\x6a\x3e\xbe\ \x67\xdb\x60\x14\x37\xe4\x72\x4a\x6b\x52\x4f\x14\x1a\x2f\xb8\xc8\ \x64\xd4\xa5\x4b\xa3\xbb\x7e\xd0\xb5\x65\x73\xcb\xf0\x48\xac\x14\ \x75\x97\x89\x18\x68\x52\x6e\x87\x82\xa4\xe1\xc6\xdc\x9e\x99\xa9\ \x8a\xf1\x69\x6f\x84\x99\x16\xa6\xbc\x72\x65\xaf\x42\x3b\xb7\x62\ \x21\x32\x62\xee\xab\x07\x8e\x81\xb9\xa3\x4f\xb3\x97\x4b\xde\x55\ \x65\x5b\x5b\xeb\x5d\x77\xdd\x3f\x34\xf4\x56\xa0\xda\xb5\x8e\x11\ \x81\x3b\x13\x31\x28\xe7\x74\xac\xa9\x22\x2c\x57\xb4\x3c\x60\x22\ \x4e\xb8\xaf\xc4\xf4\x69\x6f\x84\x25\x3a\x35\xcc\x54\x04\x42\x01\ \x50\xa5\x64\x67\x67\xdb\x82\xd6\xf9\x5a\xeb\xf4\xa5\x2d\x39\xaa\ \x86\x86\x3a\x80\x52\xee\x6e\xad\xd5\x68\x19\x28\x13\x64\x94\xb7\ \xe9\x97\xbc\x7b\x43\xbc\x74\xc6\xd6\x1a\xc6\x31\xd0\x1e\xe3\x31\ \xad\x22\x32\x33\x2d\xc3\xb3\xb1\x43\x5a\x73\x5e\x4f\xcc\xf0\x20\ \x6f\x4c\xcf\x24\x42\x5b\x85\x87\x59\xce\x58\x52\x52\x14\x0a\x66\ \xe4\x5a\x14\xdb\xfb\x72\xc1\x57\xa5\x64\x79\x65\xb4\xb9\xac\x9a\ \x3f\x57\x29\x85\xb6\xe7\x74\xb5\xc6\x76\x08\x88\xd8\x97\x92\xaf\ \x40\xda\x54\xea\x33\x30\xe2\x70\x72\x95\xc0\xbe\x94\xb1\x14\x6b\ \xd1\x32\x2f\xf8\xf3\xcb\x1f\xed\x78\xe2\x42\x77\x57\x7d\x18\xf1\ \x0d\xa3\xa1\x13\x17\xc2\x53\x4a\x16\x43\x6d\x02\x7d\xe0\x37\xcb\ \xdb\x5a\x33\xc5\x58\x48\xd6\x52\x6a\x55\xd3\x1b\x61\xc0\x83\x19\ \xed\xdc\x16\xab\xf6\x53\xd2\x75\x17\xb8\x6f\x0e\x94\x1a\x1e\x8b\ \x6e\xed\x6e\x7f\xf1\xff\xfa\xae\x8e\x16\x54\x59\x8e\xd2\xbf\x73\ \xcc\x66\xd4\x95\x91\xc2\x57\x76\x1e\x29\x46\xd4\x4b\xd3\xea\x42\ \x15\x4f\x5d\x1b\x84\xc4\xa3\xcd\xe4\x69\x88\xae\x32\x71\x5f\x1e\ \x4a\x02\xc3\xd9\x40\x2d\x68\xca\xe9\x18\x00\xb3\x22\xf8\x08\xa3\ \xd0\x28\xbf\xbb\xe1\xd1\x6a\xea\x4b\x05\xab\x3b\xcb\x10\x93\xdf\ \x52\x29\xe5\xbf\x61\x42\x0a\xe3\x92\x86\x2a\x8d\x3a\xaf\x31\xdc\ \x99\x62\x51\x87\x61\xc9\x16\xbd\x7b\x70\x6b\x84\x5a\x44\x21\x5a\ \xb1\x4d\x2c\x43\x9a\x48\x4c\xeb\x4b\xab\xf7\x34\xf4\xd3\xbe\x1d\ \x42\x8e\x25\xb2\x2b\x5c\x7b\x5d\xe2\x93\xdf\x30\x81\x4a\xc5\x5b\ \x22\xa3\x70\xf3\xa0\xca\x66\xac\x31\x97\x48\xfb\x24\xa7\x63\xab\ \x84\x67\xc6\x2e\x6e\x69\x4d\x1b\x8c\x99\x3d\x4d\x75\x32\x44\x4c\ \x0a\x26\x20\x08\xb8\xc2\x12\x8b\xa2\xaa\xc4\xed\xb1\x83\xa5\x8d\ \xe0\xcd\xa0\x85\x88\xac\x29\x94\x60\xb9\x4a\x60\x5f\xca\xc4\x28\ \xc0\x56\x40\xd7\x36\x1e\xfa\x5a\x4a\x6b\x4c\x05\x0e\x09\x36\x1e\ \xb2\xf0\xb1\x8a\xb7\x5a\x86\xf5\xda\xd2\x28\xdb\x18\x33\x72\x04\ \x4f\xea\x8d\xdd\xd0\xdc\x62\xe9\x4d\x8d\x3b\x02\xd6\xd2\x9a\x7a\ \x1a\x83\x5a\x8a\xca\x66\xed\x50\x4b\xa1\xa5\x92\x22\xc0\xe3\x06\ \x3c\xa7\xfa\x33\x6d\xa0\xa0\xa3\xa7\xd5\x4e\xeb\xd0\xc3\x8a\xc8\ \x88\x18\x28\xff\x04\xe9\xfc\x0d\x56\x09\x56\x72\x72\xa6\x96\x99\ \x5a\x47\x7c\xde\x97\x92\xb9\x6b\x40\x95\x1d\x1e\x1e\xbd\x77\xf3\ \x97\x1b\xea\x73\x25\x23\x24\x06\x65\x62\xe7\x56\x57\x97\x3d\x72\ \xe4\xf8\x7d\xb7\x37\xeb\x18\x59\xf7\x37\x96\x84\x24\x96\x90\xd9\ \x10\x11\x03\xef\x48\x35\x3e\x6d\x7b\xac\xa4\x22\xc9\xb6\xa6\x76\ \x58\x5a\x4e\x6d\xdc\xbd\x76\x1c\xea\xe6\xc6\xe0\x47\xdf\x5f\x98\ \xcf\x9f\x84\xde\xc8\x07\xc3\xf7\xcf\x16\x5b\xfb\x1b\x57\xdf\x3c\ \x6f\x6c\x2c\x0c\xd0\x3d\x96\x92\x76\x3b\x24\x24\x74\x52\x86\x04\ \x89\xa2\x0a\x35\xd3\xb6\x19\xe1\xd7\xc8\xcc\x7f\xc0\x0e\xcb\x19\ \x87\x96\xb1\x36\x99\x40\xde\xbb\xa1\x25\x93\x69\xb3\xf7\x16\xc2\ \x1d\x62\xfd\xa9\x8c\x8e\xc7\x27\xa2\x30\x74\x97\xb9\x76\x1c\x22\ \x50\x86\x50\x67\x6f\xb8\x9c\x03\xf7\xed\x90\xbb\xb8\x62\xcd\x23\ \x3e\x64\xe5\xd4\x0c\x20\x91\x43\x18\x19\xc1\x4d\x31\xdf\x79\xb3\ \x7a\x90\xf4\x09\x86\x0a\xa8\xbd\x37\x9a\x26\x9d\x97\x15\xbe\x94\ \x9a\x3b\x3d\x33\x15\x5a\x8a\x8d\x2c\x33\xb5\x45\x48\x26\xa1\x6d\ \x8c\x25\x99\x91\xc2\x2a\x23\x13\xea\xa5\x68\xdf\xcc\xb7\x39\x92\ \x2c\x90\xf0\x3b\x2d\x25\x8e\x53\x9e\x06\xab\x2d\xf7\x58\x05\xb4\ \xe6\xd9\xb9\xbb\xa8\x2a\x56\x29\x63\x13\xc7\xee\xe4\xf7\x1e\x5e\ \xac\xa0\x37\x4c\x10\x8d\xfb\x60\x57\x10\x58\x2b\xa8\xc2\x8d\xcd\ \xfd\x88\xe4\x0a\x61\x62\x9b\x35\x12\x91\x10\x8e\x46\x02\x27\x4f\ \x27\xed\x34\x35\x5d\xe7\xf3\x5f\x9d\x0c\x49\x3c\x5a\x39\x19\xba\ \xe5\xe3\x53\xaa\xb6\xe2\x12\xca\xba\x04\x29\xfc\x4b\x7a\x4a\x3a\ \x29\x43\x63\x85\xe3\x69\xa9\x30\x8a\x8f\xfc\x34\xa3\x49\xcb\x50\ \x91\x4d\xd4\xd2\x0e\x79\x0e\x3a\x75\x73\x85\x72\x31\xc0\xa2\x42\ \x64\xd8\x0c\x11\x26\xff\xfc\xc9\x08\xc9\x45\x63\x66\x2d\x4d\xb2\ \x1d\x13\xa4\x34\xc2\x1a\xde\x62\x60\xc1\x53\x2f\x91\xba\xc6\xd6\ \xde\x75\x20\xdd\xa9\xb9\x4d\x32\x89\x90\x6a\x0c\xef\x6f\x20\xe3\ \x8f\xb9\x97\x1c\xeb\x88\xa0\x79\x11\x09\x9b\x48\xe2\xec\x8d\x6b\ \x57\x9b\x9d\x37\x9e\xc6\x92\xe7\x97\x84\xfe\xd2\x4b\xbe\x42\x32\ \x9a\x45\x22\xd3\xba\x40\x43\x71\xb4\xc0\xec\x3a\xf0\xb5\x29\xed\ \xef\xfd\xc3\x57\xfa\x20\x66\x6a\x76\xc6\xd7\x46\x44\xa1\x8c\x22\ \x69\x94\x95\x2c\x0f\xa4\x3c\xb4\x08\xd6\x5e\xe9\x12\x1e\xbe\xf4\ \xb6\x37\xc0\xb1\x16\x61\x28\xf1\x7c\x60\xe2\x50\xc7\x91\x36\x56\ \x1a\x24\x73\x12\xb9\x32\x02\xaa\x80\x80\x79\x29\xd3\x48\xd0\x1d\ \x98\xd1\x35\x3d\xe3\xcb\xfa\xba\x4c\xcb\xbc\x5c\x18\xe9\x40\x09\ \x66\xc5\x9d\xac\xf8\xa2\x45\xb8\xc3\x1d\xdf\x4a\x24\x97\x56\x20\ \xc2\xd6\x79\xd9\xa6\xc6\x6c\x2e\x23\x5a\x1b\x1a\x63\x5d\x8a\x97\ \x76\xe5\xf8\x72\x3b\x1b\xa8\x30\x52\xd9\x6c\x30\x7f\x6e\x0e\x66\ \x2f\x84\x68\x88\xd8\x1d\x8a\xc0\x12\xb4\xac\x0d\xc2\x4c\x46\x9e\ \x39\x1f\x3e\xf7\xd2\xe0\xf0\x68\x51\x91\x1f\xf5\xa5\xe8\x0a\xce\ \x7b\x3b\x4b\x9a\xe2\xaf\x6b\xda\x88\xb9\x8d\xc1\xdb\x27\x47\x2f\ \x8d\xc8\x7d\xc7\xff\x71\xad\x18\x29\xcf\x76\xdc\xe5\x7f\xa0\xe4\ \xb5\x42\x74\x6d\xbc\xf0\xf2\x5f\x2e\xb4\xcc\x09\x22\xdc\x85\x53\ \xf7\xf9\xcd\x39\x60\x09\x18\x9b\xbd\xa7\xf1\x6f\x96\x56\x2c\x5d\ \xd4\xd4\x75\xdb\xae\x57\xe7\xba\x0b\x35\xd6\x53\xfe\x4a\xcb\x46\ \x6d\xff\x9b\xa8\xd4\xc7\x18\x89\xbf\xce\x06\xb2\xeb\x56\xb1\xb3\ \x10\x5b\x64\x2e\xb0\x98\xf2\x61\x37\x36\x32\x2b\x6f\x5a\xbd\xfe\ \xc5\x77\x8c\xf7\xa9\x54\x99\xb1\xa6\xae\x2e\x60\x8c\xe8\x29\x3c\ \xcd\xcc\xdf\x97\x32\x91\xfe\x10\x94\x88\xff\xc2\xf7\xa5\xa9\xf7\ \x4c\x54\xf3\x7d\x69\x55\xdf\x26\x52\x1f\xff\x86\x82\xe8\x74\x71\ \xc6\x3f\xe5\xa6\xbb\xa7\x68\x26\x2a\xe8\x74\x95\xff\xed\xf0\x54\ \xd3\xfd\xef\x7f\xc9\xfe\x6f\xe7\xf8\x01\xc3\x58\x74\x3a\x3f\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0a\xd4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4b\x00\x00\x00\x36\x08\x02\x00\x00\x00\x00\x90\xf3\xa2\ \x00\x00\x0a\x9b\x49\x44\x41\x54\x68\xde\xdd\x9a\x0b\x50\x54\xd7\ \x19\xc7\x2f\x46\xf0\x81\x28\xf1\xad\xe5\xd1\x56\x66\xd2\xc4\x4e\ \x1b\x33\x11\x47\x10\x15\x48\x10\x34\x3e\x20\x4b\x80\x05\x44\x01\ \x83\x84\x19\x47\x1e\x19\xeb\xb4\x55\x5b\xd1\xb1\x06\xd4\xa9\x11\ \x14\xc4\x68\x66\x92\xce\xf4\x15\x9f\x4d\xad\x02\xc2\xb2\xbc\x41\ \x44\x44\x79\x28\xa2\x8e\xaf\xc6\x94\x71\x04\x15\x48\xed\x6f\xef\ \x89\x77\xb6\x0b\xc2\xee\x72\x61\x92\x7c\xf3\xcd\xce\x77\xce\xf9\ \xce\xf7\xfd\xff\xf7\x9c\x7b\xce\xbd\xe7\xae\xf4\x8d\x2c\xff\xfd\ \xe1\x8a\x34\x34\x69\x9e\x3d\x7b\xc6\xaf\x72\x29\x85\x21\x2a\x7f\ \x38\x0c\x61\xd5\xd5\xd5\xd5\xdd\xdd\xad\xfc\x76\x76\x76\x62\x18\ \x5f\x82\x41\x61\x38\x34\xb3\xf4\x45\x83\x26\x98\x77\xca\x22\xd8\ \xaa\x8e\x67\x28\x18\x82\x1e\x26\x47\x8e\x1c\x7e\x7d\xd6\x1b\xf3\ \xbc\x16\x78\x78\x7a\x79\x7a\xce\x0b\xd6\x6a\x0f\x7e\xf6\x59\x43\ \x73\x33\xa3\x29\x98\x2b\x6c\x19\x5e\x01\x49\x15\x60\x43\xc1\xf0\ \xe9\xd3\xa7\xa0\x4f\xf9\x70\xc3\x9b\x33\x9d\xb3\x76\xc4\x67\xa6\ \xae\xf1\x99\xff\xfa\x24\x49\xfa\x99\x8d\x8d\x83\xad\xed\x4f\x5e\ \x7b\x55\x13\x1d\x9d\xf5\xe9\xa7\xcd\xb0\xed\xee\x56\xc6\x59\x2d\ \x54\x43\x71\x1f\x8a\x31\x5c\xb7\x3e\x79\x65\x90\x57\x5b\xfd\x5f\ \xda\x6a\xff\x14\x1d\xb3\x4c\x23\xd9\xd5\x3b\xbb\x1d\x9d\x30\x7d\ \xcf\xa8\x71\xe1\xd2\x30\x27\x49\x92\x6c\x6c\xa6\x4e\x9d\xba\x7c\ \xf9\xf2\x9c\x9c\x9c\xf6\xf6\x76\xb5\xee\xcc\xc1\x1d\x43\x11\x59\ \x8c\xe1\xfa\xc4\x14\x8d\xff\xec\x6b\xfa\x9c\xe6\x82\x03\xa1\x61\ \x7e\xcb\xa4\x97\xf2\x26\xfe\x68\xe7\x08\x87\x18\x69\x98\xa7\x24\ \x39\x0d\x1f\xee\xe2\xec\xbc\x78\xf1\xe2\x2d\x5b\xb6\xe4\xe6\xe6\ \x3e\x79\xf2\x44\xb5\x59\x3a\x04\x9b\x84\x60\x18\xa4\x09\x09\x7d\ \x67\x6e\x4b\xc9\x27\xcd\xba\xec\xd8\x88\x80\x11\x92\xf4\x8a\xa3\ \xe3\x34\x17\x97\x45\x1a\xcd\xf6\xbd\x7b\x4b\xab\xab\x3b\x1e\x77\ \x0c\xc6\x8a\x2a\x0d\x2a\x3d\xb1\x72\x60\x6c\xda\xf4\x5b\xa6\x61\ \xfc\xca\x25\x4d\xba\xac\x46\x5d\xd6\x07\x51\x4b\x28\x86\x85\x6b\ \x0d\x94\x8c\x96\x59\xe3\x2d\xe4\x3b\x3d\x4b\x95\x95\x50\xd0\x4b\ \x4c\x4c\x9c\x3a\x75\x8a\xb7\xaf\x5f\x64\xe0\xfc\xab\x45\xd9\x68\ \x44\xa0\x97\xaf\xaf\x9f\xab\x8b\x73\x52\x52\x12\x0e\x1d\x1d\x1d\ \xea\xae\x9f\x83\xcb\xd0\x84\x5e\x72\x72\x32\xc3\x75\xa3\xb5\x75\ \xc3\xc6\x5f\x07\xf9\xbd\x79\x4d\x7f\x08\xc5\xa0\x78\xbd\xa5\x85\ \x26\x1c\x70\xc3\xf9\xfb\xc1\xd0\x84\xde\xfa\xf5\xeb\x87\x0f\x1f\ \x5e\x56\x56\x86\x1d\xb3\x26\x2e\x78\xf1\x9c\x66\xfd\x21\x14\x83\ \x22\x95\x34\xe1\x80\xdb\xe0\x91\x54\x93\xa1\x09\xbd\x75\xeb\xd6\ \xd9\xda\xda\x56\x55\x55\x31\x09\xd9\xd6\xe3\xd6\x26\x68\x02\xdc\ \x9b\x8a\x72\x50\x0c\x8a\x54\xd2\x84\x03\x6e\x38\x0f\x12\x49\x69\ \x90\x96\x96\x84\x84\x04\x3b\x3b\x3b\xd0\x3f\x7e\xfc\xb8\xb5\xb5\ \x95\x45\x63\x4d\xdc\x07\x32\xc3\x83\x28\x06\x45\x2a\x69\xc2\x01\ \x37\x9c\xe9\xa2\x90\x54\x71\x51\x55\x67\x0c\x4d\x46\x2f\x3e\x3e\ \x7e\xe4\xc8\x91\xe0\x7e\xf4\xe8\xd1\xcd\x9b\x37\x6f\xdd\xba\xc5\ \x93\x76\xec\xfb\xf1\x9a\x80\x39\x8d\xba\x1c\x14\x83\x22\x95\x34\ \xe1\x80\x1b\xce\x74\xa1\xa3\xea\x23\x29\xa9\x3e\x7a\x71\x71\x71\ \xa3\x46\x8d\x02\xf1\xc3\x87\x0f\xaf\x5f\xbf\x7e\xfb\xf6\xed\x1b\ \x37\x6e\x74\x76\x3e\x8d\x59\xb3\xf6\xdd\x00\xf7\x86\xa2\x83\x28\ \x06\x45\x2a\x69\xc2\x01\x37\x9c\xe9\x42\x47\xba\xab\x3b\x92\x92\ \x5a\xf4\xba\xe4\x07\xe8\xd8\xd8\xd8\xd1\xa3\x47\x83\xb5\xad\xad\ \xad\xa5\xa5\x45\x0c\x11\x04\x9e\x3c\x79\x1c\x13\x1b\x07\xb1\x2b\ \xba\x6c\xd4\xc0\x30\x36\x8e\x4a\x9a\xc4\x20\xe3\x4c\x17\x3a\xd2\ \x9d\x20\x84\x12\xfb\xc7\xc0\x49\x4a\x2a\xd2\x8b\x8e\x8e\xb6\xb7\ \xb7\x07\xe5\x83\x07\x0f\xae\x5e\xbd\xca\xf8\xb4\xca\x72\xed\xda\ \xb5\x8e\xf6\xf6\xe8\x98\xf7\x0d\x0c\x0b\xb3\x51\x0c\x8a\x54\xd2\ \x24\x7c\x70\xa6\x0b\x1d\xe9\x4e\x10\x42\xa9\x45\x52\x52\x8b\x5e\ \x54\x54\xd4\x98\x31\x63\x2a\x2b\x2b\xef\xdf\xbf\xdf\xd4\xd4\xc4\ \x98\x80\xbe\x45\x16\x8a\x4c\xc2\x55\xd1\xb1\x10\xbb\x5c\x98\x85\ \x62\x50\xa4\x52\x78\x2a\xce\x14\xe9\x4e\x10\x42\x11\x50\x15\x92\ \x56\xae\x34\xca\x4a\x20\xe8\x45\x44\x44\x38\x38\x38\x80\xec\xce\ \x9d\x3b\x57\xae\x5c\x61\x34\x9a\x65\xb9\x2a\x4b\x43\x43\x43\x5b\ \xdb\x7f\xa2\x56\xc7\x40\xac\xbe\xf0\x00\x8a\x41\x91\x4a\x9a\x84\ \x8f\xe2\x4f\x77\x82\x10\x8a\x80\x84\x55\x48\x5a\xbd\xf0\x58\xc3\ \xd0\x84\x9e\x56\xab\x1d\x3b\x76\x6c\x45\x45\x05\xb7\x53\x7d\x7d\ \x3d\xe3\xd0\x28\x4b\xd3\x73\xb9\x7c\xf9\xf2\xd7\x5f\x3f\x58\xb9\ \x2a\x3a\x28\x60\xce\xa5\x82\x2c\x14\x83\x22\x95\x34\x29\x6e\x4a\ \x2f\x82\x10\x8a\x80\x84\x25\xf8\x00\x49\x4a\x03\x9c\x9c\x21\x21\ \x21\x8e\x8e\x8e\xa0\xe1\x46\xaa\xab\xab\x63\x4c\xae\xc8\xd2\x60\ \x24\x97\x2e\x5d\xfa\xea\xab\x7f\x47\x46\xad\x0e\xf2\x77\xaf\xcb\ \x3f\x80\x62\x50\xa4\x92\x26\x63\x4f\xa5\x2f\xa1\x08\x48\x58\x82\ \x93\x62\x20\xd3\x55\x1a\x08\xbd\xe0\xe0\x60\x10\x94\x97\x97\x73\ \x0b\xd5\xd6\xd6\x72\xed\x41\x5c\xdf\x43\x68\xba\x77\xf7\x6e\x44\ \xe4\xaa\xa0\x00\xf7\x8b\xf9\xfb\x51\x0c\x8a\x54\x8a\x5e\x26\x22\ \x82\xd0\x44\x58\x82\x93\x82\x44\x56\x93\xb4\x60\x96\x0a\xb7\x6e\ \x59\x0c\xef\x7b\x41\x41\xe3\xc7\x8f\x07\x01\xf7\x4f\x4d\x4d\x0d\ \x57\xfd\xe2\xc5\x8b\x75\xbd\x09\xad\x77\x6e\xdf\x0e\x8f\x88\x62\ \x72\xd6\xe6\x1f\x40\x31\x28\x52\x29\x3a\xf6\x14\x11\x8a\x56\x82\ \x93\x82\x44\xa4\x23\xa9\xc8\x6e\xd1\x74\x35\x97\xa1\x09\x3d\xce\ \x1a\x26\x4c\x98\xc0\x73\x33\x77\x4e\x75\x75\x35\xd7\xfb\x82\x2c\ \xb5\xbd\x09\x0e\xdc\x57\xda\xf0\x95\x81\xfe\xee\x17\xf2\xf6\xa3\ \x18\x14\xa9\x14\x7d\x7b\x8a\x12\x0d\x07\x52\x90\x88\x74\x24\xb5\ \x82\xa4\x64\xfe\xe4\x54\xe8\x2d\x5d\xba\x74\xe2\xc4\x89\xa5\xa5\ \xa5\xac\x13\x2c\x7a\x5c\xe9\xf3\xb2\xd4\xbc\x40\xf0\x61\x6b\x0c\ \xd3\x46\x42\xac\x26\x37\x13\xc5\xa0\x48\xa5\xe8\xde\xab\x28\x31\ \xf1\x21\x11\xe9\x48\x4a\x6a\x63\x24\xaa\x31\x34\x0e\xba\x64\xc9\ \x92\x49\x93\x26\x95\x94\x94\x30\x8b\xb8\xb4\x6c\xd0\x95\xfd\x09\ \x6e\x6c\x78\xa1\x61\x11\xc6\x0c\x29\x52\x49\x53\xbf\xdd\x49\x81\ \x1b\xe9\x48\x4a\x6a\x00\x58\x44\xb2\x9f\x59\xaa\x4c\x4e\x71\x8b\ \xfb\xfb\xfb\x4f\x9e\x3c\xb9\xb8\xb8\x98\xf9\x43\x3e\xd6\x3a\x6e\ \x92\x8a\xfe\x04\x4f\x36\xbc\x90\xd0\x70\x88\x9d\xcf\xcd\x3c\x2f\ \x33\xa4\x48\xa5\x08\xd2\xb7\x88\x14\x78\x92\x94\xd4\x00\x00\x86\ \x58\xf0\xcc\x99\xae\x7d\x31\x34\xa6\x87\xe1\xe7\xe7\x37\x65\xca\ \x14\x72\x30\x79\xf4\x7a\x3d\xd7\x95\x99\x53\x66\x86\xe0\xcc\x66\ \xf7\x5e\x88\x36\x30\xc0\xbd\x3a\x37\x03\xc5\xa0\x48\xa5\x88\xd3\ \xaf\x88\x44\x38\x93\x1a\x00\xc0\x00\x8c\x40\xd8\x2f\xc9\x17\x32\ \x34\xa6\x87\xf8\xfa\xfa\x72\x98\x59\x54\x54\xc4\xb4\xd1\xe9\x74\ \xa4\x21\x5f\xb1\x79\x52\x58\x58\xc8\x8d\xa4\x09\x0e\x5d\xe1\x3f\ \xa7\xea\x6c\x26\x8a\x41\x91\x4a\x9a\xcc\x0c\x22\xd2\x91\x1a\x00\ \xc0\x00\x0c\x90\x04\xb6\xbe\x49\xf6\xce\x50\xa1\x27\x7e\xbd\xbd\ \xbd\xa7\x4f\x9f\x4e\x5c\x66\x0b\x98\x48\x86\xad\x37\x5b\x0a\x0a\ \x0a\xd8\xdf\x64\x86\xee\x95\x67\x32\x50\x0c\x8a\x54\xd2\x64\x7e\ \x1c\x91\x14\x00\xc0\xc0\x06\x12\xc0\x14\x90\x2f\x22\x29\xf5\xbd\ \xc0\xf0\x9e\xc6\xa5\x72\x72\x72\xe2\xe2\x31\x55\xce\x9d\x3b\x87\ \x41\x0e\x9d\x25\x92\x9f\x9f\xcf\x0e\xf7\xae\x26\x44\x66\xb8\x0f\ \xc5\xa0\x48\x25\x4d\x16\x85\x12\xa9\x81\x01\x18\x0c\x80\x01\x4f\ \xbc\x97\x5a\x36\x4b\x95\x31\xe4\x10\x9a\xe3\x30\x57\x57\xd7\x19\ \x33\x66\x10\x0e\xc3\xc5\xc5\xc5\xd5\x42\xa1\x8b\x9b\xdb\x0c\x9b\ \x61\xb6\x11\x1a\xdf\xd2\x2f\xf7\xa2\x18\x14\xa9\xb4\x2e\x1a\xbf\ \x80\x01\x12\x06\xf0\x00\x69\xd6\x18\x1a\x7f\x12\x11\x2b\x27\x1f\ \x0f\xc4\x86\xcb\xa6\x84\x21\xf6\xa8\x1a\xcb\x45\xec\x87\xda\xf0\ \xc8\x65\x8b\x66\x97\xff\x6b\x1f\x8a\x41\xb1\xef\xfd\xb0\x0f\x11\ \x30\x04\x24\xf1\xc8\x21\xbe\x73\x18\x8f\x96\x42\x47\xea\x79\x08\ \x6f\xfc\x1d\x53\x95\xb3\xe7\x6f\xcf\x85\x93\x3e\x0c\xf0\x99\x55\ \xf2\xcf\x8f\x51\x0c\x8a\xe2\x2e\x50\xe5\xc3\x81\xf1\x87\x57\x13\ \xcc\x52\x4f\x57\xd5\x3f\x1e\x28\x0c\x03\x17\xbb\xd7\x17\x1f\x42\ \x31\xd4\x62\xd8\xeb\xc3\xc9\xff\x8d\xe1\x37\xcf\x45\x70\x3b\x7c\ \xf8\xb0\x87\x87\x87\xb7\x8f\x4f\x60\xe0\x0a\xe6\xf7\xbc\xf9\x0b\ \xe7\x2f\xf4\x59\xe8\xed\xbb\x60\xa1\xcf\x02\x6f\x0c\x6b\x74\xfe\ \x02\xef\xb7\xfd\xfc\x9d\x9c\x5d\x5f\x1e\x67\xff\xcb\x9f\xff\x14\ \xc5\xa0\x48\x25\x4d\xd6\xc5\x04\xcc\x02\x19\x18\xf0\x00\x09\x54\ \x00\x03\x1b\xf0\x50\x10\x3c\xc5\x8c\x35\x9d\xa5\x8c\xf2\x91\x23\ \x47\xa6\x4d\x9b\xce\x1d\xcc\xc7\xb0\xfd\xdb\xd7\xee\xd8\x10\xfe\ \xbb\xc4\xf7\x52\x53\x42\xb7\xa5\x84\xa5\x26\x87\xa6\x26\x87\x6d\ \xb3\x54\x53\xc2\xb6\x26\x85\xa4\xff\x66\xf5\xee\xcd\x6b\x76\xfc\ \x2a\x0a\xc5\xa0\x48\x25\x4d\x96\x46\x4b\x35\xa8\x0c\x26\x25\x14\ \x60\xc0\x03\x24\x50\x01\x0c\x6c\xc0\x77\x3d\xff\xa8\xfc\xc2\x95\ \x06\x83\xcf\x77\xa9\xdb\xb6\x39\x8e\x73\x08\x5a\xe4\x7e\xe1\x4c\ \xc6\x83\xba\x3f\x37\xe9\x0e\x36\x14\x66\x37\xeb\x73\x9a\xf4\x86\ \x23\x5d\x0c\xf3\x55\xf8\x37\xea\xb2\x1b\x0b\xb3\x9a\xb1\x8b\x0e\ \x62\x50\x54\x9a\x2c\x0a\x05\x00\x0c\xc0\x00\x09\x60\xc0\x03\x24\ \x50\x01\x0c\x6c\x63\x16\xfd\xac\x34\xd8\x9c\x9a\xf8\xbe\xb5\x68\ \x98\x24\x25\x44\x05\xd4\x9e\xcd\xa8\xcb\xcb\xd4\x1f\x4d\x2b\x39\ \x9e\x5e\x76\x72\x77\xe9\x89\x5d\x68\xd9\x89\xdd\x43\xa6\xdf\x66\ \x3c\xb9\x1b\x00\xc0\x00\x0c\x90\x00\x06\x3c\x40\x02\x55\xcc\xcc\ \xbe\x56\x1a\x85\xa4\x72\xbc\x2b\x8a\xa7\x4e\xfd\xc3\xc9\xe5\xc7\ \x53\x26\x8c\xd9\xbf\x23\xa1\xb9\xf8\xd0\xf9\xd3\x7b\x8b\x8f\xa7\ \x97\x9f\xda\x83\x92\x4f\x18\x83\xad\x4a\x22\x52\x03\x00\x18\x80\ \x01\x12\xc0\x80\x27\xf8\x28\x87\xc8\x26\x2b\x65\x2f\x3b\xbe\x52\ \xc3\x25\x11\xcb\x20\x87\xd3\xbf\xdf\xba\x6d\xd8\x4b\xb6\x73\xdf\ \x70\x3b\xfd\x79\x6a\x63\x51\x4e\xe9\xc9\x5d\xc5\xf2\x60\x96\x0d\ \xf2\x60\xca\xc1\x0d\x43\x47\x3a\x92\x92\x1a\x00\xc0\x00\x0c\x90\ \x00\x26\x16\xe4\x3e\xfe\xa9\xd2\xcf\x93\xb7\x98\xb4\xe2\xde\xe5\ \xfc\x7a\xd9\xf2\x20\x1b\x49\x8a\x0d\x7b\xab\xea\xf4\xc7\x17\xf3\ \x32\x75\x47\xd3\xf4\xc7\xd3\x4b\x4e\x90\x7e\x77\xf1\x89\x5d\x18\ \x2a\x2a\x01\x09\x8b\x41\x0a\x12\x91\x8e\xa4\xa4\x06\x00\x30\x00\ \x23\xd6\x45\x31\x2d\x2d\x7e\xf2\xee\xf5\xe0\x50\xcc\x81\xdc\xdc\ \xbc\x19\x6e\xaf\x8c\x1f\x37\x2a\x7d\x73\x6c\x7d\x61\x76\xc5\x97\ \x7f\x2c\xf8\xe2\x23\x40\x00\x88\x5f\xfd\xf1\x5d\x06\x64\x03\x53\ \x82\x28\x01\x09\x4e\x0a\x12\x91\x8e\xa4\xa4\x06\x80\x72\x1a\x66\ \xce\x11\xa3\x64\xe9\x73\x83\xe1\x86\xee\xea\x4a\x4b\xdf\x65\x37\ \x62\xe4\xac\x99\xae\x47\x3f\xd9\x4c\xfa\xa2\x63\x06\x28\xfc\x16\ \x1d\x4f\xd3\x1d\x4b\xd3\x71\xd5\xad\xd6\x63\x69\x04\x51\x02\x12\ \x9c\x14\x24\x22\x1d\x49\xc5\xdf\x8b\x2c\x7a\xde\xb2\xec\x24\xca\ \x78\xd2\xde\xbb\x77\x97\xf7\x74\x76\x21\xed\x0a\xaf\xe2\x93\x7b\ \xce\x9f\xcd\xc8\xff\xfb\xce\x73\x5f\x7c\xa4\x3b\x96\x5e\x78\x34\ \x0d\xc5\xb0\x48\x95\x5e\x04\x21\x14\x01\x09\x4b\x70\x52\x90\x88\ \x74\x66\x4e\xcb\x01\x9d\x79\x1b\x7f\x27\x14\x93\x96\xf7\xd2\xd7\ \x66\xfe\xc2\xc1\xde\x6e\xeb\x86\x48\x0e\xd1\x4a\x4f\xed\xc9\xfd\ \xeb\x1f\xc0\x87\xe6\xfd\x6d\xa7\x30\xcc\x51\xc5\x99\xee\x04\x21\ \x14\x01\x09\x4b\x70\x52\x28\xcb\xbb\x15\x27\xdf\x16\x9f\xea\xf7\ \x5c\x69\x29\xee\xcb\xc8\x1c\x6d\xef\xf0\xaa\xdb\xb4\xcf\x33\x37\ \x5e\x38\x77\xa0\x42\x7e\x09\xac\x3a\x9b\x51\x69\xb6\x1a\x9c\xcf\ \xec\xa3\x23\xdd\x09\x42\x28\x02\x12\x56\x5c\xc7\x81\xfc\xaf\xcf\ \xfa\x2f\x33\xa2\x97\x32\x69\xf9\x30\xb6\x6a\x75\x0c\x33\x6a\xf9\ \xa2\xd9\xdb\x37\x46\x6e\x4a\x0a\xd9\x9c\x1c\xba\x25\x39\xcc\x4c\ \xc5\x99\x2e\x74\xa4\x3b\x41\x08\x45\x40\xe3\x69\x69\xf5\xb7\x6a\ \x49\x95\x97\x17\xfe\xe8\x23\x1e\x83\x38\x2f\xf2\xf1\x79\x7b\xee\ \x5c\x4f\x4f\x4f\x2f\x0f\x8f\x79\x1e\x1e\x5e\x66\xeb\x3c\xba\xd0\ \x91\xee\xe2\xbf\x1b\xf2\xc2\xd6\x39\xf0\xd7\x37\x15\xbe\xe3\x9b\ \x7c\x8a\x1a\x20\x20\x11\x41\xc5\x3f\x10\x49\x2a\xbe\x98\x99\xbc\ \x89\x76\x5b\x28\xaa\xbf\x79\x0f\xc5\x7f\x13\xbf\x0b\xf2\x3f\x84\ \xe7\xbe\xe1\x71\xc1\x1b\xd4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x07\ \x09\x85\x57\x87\ \x00\x63\ \x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0c\x98\x89\x87\ \x00\x68\ \x00\x6f\x00\x75\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x05\x87\x5a\x67\ \x00\x62\ \x00\x6f\x00\x61\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x18\x77\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/images/0000755000076500000240000000000012613140041023562 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/images/boat.png0000644000076500000240000000532412613140041025221 0ustar philstaff00000000000000‰PNG  IHDRK6ó¢ ›IDAThÞÝš PT×Ç/Fð(ñ­åÑVfÒÄN3GH4> K€Dƒ„Gë´U[ѱÔ©Ähf’ÎôŸM­²¼ADDy(¢Ž¯Æ”qHíoï‰w¶ Âîra’|óÍÎwÎùÎ÷ýÿ÷œ{νç®ô,ÿýáŠ44iž={Ưr)…!*8 aÕÕÕÕÝÝ­üvvvb_‚Aa84³ôEƒ&˜wÊ"تŽg(‚&GŽ~}Öó¼xxzyzÎ Öj~öYCs3£)˜+l^I`CÁðéÓ§ OùpÛ3³vÄg¦®ñ™ÿú$Iú™ƒ­íO^{Uõé§Í°íîVÆY-TCqŠ1\·>yeW[ý_Újÿ³L#ÙÕ;»0}ϨqáÒ0'I’ll¦Nº|ùòœœœöövµîÌÁCYŒáúÄÿìkúœæ‚¡a~ˤ—ò&þhç‡i˜§$9 îâì¼xñâ-[¶äææ>yòDµY:›„`¤ }gnKÉ'ÍºìØˆ€’ôŠ£ã4—EÍö½{K««;w ÆŠ* *=±r`lÚô[¦aüÊ%Mº¬F]ÖQK(†…k ”Œ–Yã-ä;=K••PÐKLLœ:uŠ·¯_dàü«EÙhD —¯¯Ÿ«‹sRRꮟƒËЄ^rr2Ãu£µuÃÆ_ù½yMÅ x½¥…&pÃùûÁЄÞúõë‡^VV†³&.xñœfý!ƒ"•4á€Ûà‘T“¡ ½uëÖÙÚÚVUU1 ÙÖãÖ&hÜ›ŠrP ŠTÒ„n8Ii––„„;;;Ð?~ü¸µµ•EcMÜ2Ã(E*iÂ7œé¢TqQUg MF/>>~äÈ‘à~ôèÑÍ›7oݺœvìûñš€9ºƒ"•4á€Ît¡£ê#)©>zqqq£Fñǯ_¿~ûöí7ntv>Y³öÝ÷†¢ƒ(E*iÂ7œéBGº«;’’ZôºäèØØØÑ£Gƒµ­­­¥¥E žÖ:n’ŠþO6¼ÐpˆÏÍ ð™UòÏQ Šâ.PåÃñ‡WÌROWÕ?( »×B1ÔbØëÃÉÿá7ÏEp;|ø°‡‡‡·O`à æ÷¼ù ç/ôYèí»`¡Ïo ktþï·ýüœ]_gÿËŸÿÅ H%MÖÅÌð TðP<ÅŒ5¥Œò‘#G¦M›ÎÌǰýÛ×îØþ»Ä÷RSB·¥„¥&‡¦&‡m³TS¶&…¤ÿfõîÍkvü* Å H%M–FK5¨ &%`À$P lÀw=ÿ¨ü•ƒÏw©Û¶9ŽsZä~áLƃº?7é6f7ësšô†#] óUø7ê² ³š±‹bPTš,  À `À$P lcý¬4Øœšø¾µh˜$%DԞͨËËÔM+9ž^vrwé‰]hÙ‰ÝC¦ßf<¹À <@UÌ̾V…¤r¼+ЧNýÃÉåÇS&ŒÙ¿#¡¹øÐùÓ{‹§—ŸÚƒ’Oƒ­J"R€À€'ø(‡È&+e/;¾RÃ%Ë ‡Ó¿ßºmØK¶sßp;ýyjcQNéÉ]Åò`– ò`ÊÁ CG:’’À &ä>þ©ÒÏ“·˜´âÞåüzÙò IŠ {«êôÇó2uGÓôÇÓKN~wñ‰]** ‹A ‘ޤ¤0#ÖE1--~òîõàPÌÜܼn¯Œ7*}sl}avÅ—,øâ#@ˆ_ýñ]dS‚( N ‘ޤ¤€rfΣdésƒá†îêJKße7b䬙®G?ÙLú¢c(üOÓKÓqÕ­ÖciQœ$"IÅß‹,zÞ²ì$ÊxÒÞ»w—÷tv!í ¯â“{ΟÍÈÿûÎs_|¤;–^x4 ŰH•^! KpRˆtfNËy'“–÷Ò×fþÂÁÞnë†HÑJOíÉýëÀ‡æým§0ÌQÅ™î! KpR(Ë»'ߟê÷\i)îËÈmïðªÛ´Ï37^8w B~ ¬:›Qi¶œÏì£#Ý B(V\Çü¯Ïú/3¢—2iù0¶ju 3jù¢ÙÛ7FnJ Ùœº%9ÌLÅ™.t¤;AE@ãiiõ·jI•—þè#ƒ8/òñy{î\OOO/y^fë<ºÐ‘îâ¿òÂÖ9ð×7¾ã›|Š AÅ?I*¾˜™¼‰v[(ª¿yÅ¿ ò?„ç¾áqÁÔIEND®B`‚PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/images/car.png0000644000076500000240000000562312613140041025043 0ustar philstaff00000000000000‰PNG  IHDRK6ó¢ ZIDATx^Ü“A E! ÄZy÷¿±ú‹B6ÿ¾Y qh»3Öaï]‰ƒŸä'øÂ•žD½w±±»óPV‰ƒŸä'øÂ•žD½w±/3 Ëz’ˆÓ+v•ˆKøßûøˆîŒèNÿ«;1e•8øI^q‚/LPéIäÑ{Ñ/3¼—MLTWÇË¼Ç Ì ˜ ÅQ«&,tÑÆš&)0jbcÒÄÆ…M›k“nªMdÇ‚´M£±]¸±‹îœÆúA PHM hÄ&¶ QD‚0ߟ@}'žyÌ … Þܼ9÷ÜsïùŸ{îÜJ½ü ÃÞÒé4©Ÿ% G…sg•É0K2??_%—€g‡ôJ*Mæéô š=3_÷o÷=: ÃH&““““E7¨×ãÉs:#©³.ÃÈŸ› †BÐöB¬[·®©©‰0Ñáph.¬øÆ§¡u5YÎr€£ººzbbâСC‘HŽ)_M¯×û˵k‰lÝJ\î<~üWqñgdzDmb~¿¿¬¬¬»»Û4M8x©×wjÚpð R©TEEÅöíÛºtÊA|yöì§›7Ï:•̘ÇôôéÓª÷ߟ{ø"bû¹–h”””Dc±t*¥¡FæŸpx£Û]ätŠ‘ÙgØ‚ò$YP¸å,³0@°ê>? ¾åñmA…0U ;§§§‰!àËöIS„6mú½«kýúõlˆ j¡©Լɉ‰UU ©TÓÁƒÑdRÞF 0›¦^M}KËOµµ•6p¯9³äç ,™äü<ùöy{;£â‘K å-£¥†2;H¼ë÷ÿ\_¿ÑëM]ôZ XWÄítžíîö½Û·ß,-U#3µTΞ˜·c×._*õm}} KÍÎr®“³³Ië+=žJq ßÞÑ“ È0A_H0E4èóºJ¦r:ÐR 9¨C)ªíLÆP lÀc†HYÊÔR©Â£££ïUW½oêêÆƒA šåÜ%"¶ú¶üû@5Ø€Ç ‘˜Éa¯BŸœ8ñÎÔÔ÷>ßx(d0ÆÂ—ÛtÃåí¼|õØ^`0„¡”sú´…à [¶pö2Ø ¤)‘ÛŠ‹JæL‰üÒbt|!Œ…ÿ- "ši|Pg#ɤ®ç(aÏ@(mšÌ:%]8¹™'³ÊPÉ ­ ºT‘£FŒâb-N™j VÛ å3V…™¡®¢‹ð¢¾×EöY]¢Ú•¯;Ûܤ0hJ«˜°æmÚmUÓìþ¦ÎÚ¼ÈÓ$ë…½ú–õ^G…î‹j,UØÄ¶e½¼>ÁX%:׸\¥O!Ï/Óô:м?¡G÷¥˜' Ù¶À4Q"Ô¡èçŽ(Sœÿÿòf<§Î“N“Ç€•ÐE.×­áá¯_oðû÷]½ê»|ùëÎÎGáðZÞ¥",«VÑDµPlû(<ÓÙ‰"Ô¡ôØmÃÃÀ0-HêwÍy ‘}Åb|&I`?„¬áýÿXkë÷ïo8r¤Ùï¿ØÞ~æÒ¥±;ö·¶žðº\äñ”«UÓ^“‘ã­S¶³DºM“¿Ž§óܽ{´µ¡E¨C)ª Àä[Àºì TW&† RéôÐÔT±õ°ޏÄa•ÙZZfÊËÿ¼xþü‡û÷×TT;|øæ•+¿Þ¼ùãøøwwï: chfÆàƒ)¥K3O+!]L§iYXøÛèh(¾00páÉ6GŠP‡RT€Rž\¼cQÀc†èëßño»f×Åñ&ÉŒ‰¾)o1‘8)‚»0¦xiÁ¤ BèÔ¬ªÎ`d2u“¬UJ@\d‚­+7ÚEÇ–¤BÄDM¨P’!B‰ˆi ©I'íôÇrsyêP]Mz¸‹óî=çþçÝ{߃s/š﾿¯ïÆêêÕ¹¹ƒ¥¥I2·n ¯÷›©©µŠŠ»““ËË)¨H„••ÏNœ˜ï_Xø¨¤ä\*5ùè‘Q\Œ»LŠþó ¹uÉ\Ò+-.þ1>“LÖß=~üÃø8à„£N#Ñ! ÈôNM}àóATÄÚ'‘¥„¼;å–jÏýÙYoII_MÍJ$òKcã|8ükSÓÃpxïηR)©9jìTèÿ:;iš—…p²®.ÿÖÚú"]‹F_Ð"‘ÕÖÖL<~®ºš†Â#ý2„‚1.8âÈ)ÓlŽÅ€œº@€þŸS©=EE÷šš UCò¤ ÒÑÎ-rÂäÐ;ó6ɵ¶¶'ÍÍë±Øà±cåÁ >î3 ÁBy0?oz½/ÛÚ®Ø6s~«¾>ÛÑ‘M$².ÐP²çÏg/^ì8|˜†Â£¢aŒ ޏ€À ¸ûäƒÁàuÛ†$¡*éAJ’ˆØïÐU’÷ff ð ã¿ÿsË zôx IÛï‡0´õôD*ïreee`` š“D"AÕT|q+s¨Û¨©›˜˜ D$4$œÊm£9Ìÿ¦‚XË6pˆÚ{Û{SAÖ¼›ºž^>7ò=?ÔÙ'"ŸYHè1¶ë>û“®D†ò??|n›´üs¯ ¤ðïþ>,üÛ—ÿûkÀ7±ŒIEND®B`‚PyQt-gpl-5.5.1/examples/draganddrop/draggableicons/images/house.png0000644000076500000240000000633412613140041025421 0ustar philstaff00000000000000‰PNG  IHDRK6ó¢ £IDATx^ÝZÛ“UÅÕïî}ΙÌ07D./Æ8XÊؤ,5˜ eåB´´ eâÃ÷–¿ yÈ¢F Cˆ¦L‚1&±," ŠÒ’Tåt¸Iødà8ÃÜÁt³ÔÒÙI¯Ô3“9wîìCì‚…#Ê@ OIE|m%ˆÿ¨´ró«¥4ôÀh¢¦¦¦=Ï<Ùݽ@âD(áªSfÖðþuñâºõŸi¼ü½•c“¡”d.„q8hŒ ÛÑ`T²MØSn:§!»ûµ“0Ñ;ÇŽ\·h‘Y=Â’–¢ÿHÛUÁïƒUkÖ¯kÿõŸ'E²#:–¡Åf#dôÞV†ÐhÉ•J©~xàØ•¦}ãºE×>ÈéÍ>Ñ”MÐ\†a6›½øÁ€××>ùÜãùüxdŒrÚE`HŠ,CB`yXª¤×¶»åY‹R>ÿøÀW|°wu?€\tý À‚dE ËÌ2D‚¥÷Á…ó«Ö®_ß^Ø÷íMNBµRd7Ò6¡ä8Œ‘Yñj=´Ò²F«D¾´D¶47|}çÁ7†êNãú³$g”¡˜91¼ ç^ÿíá/w ä‡' ¦/‚Ñs[ I4åoX´Và< ÐV*?©d~xrߎoüì`ïšþÇß¼a1ƒœÞ,Kn£"vWH™àr^8w®wmÿÆŽhò£%Ø€´Ñ°-‘¦M!Cª"0 œ(üYˆÌÅ^ÔÖæÆíO¼ógϼNý‹‡7^Fx4+0íw¡‚³¦ô˜ø³®Äöe;d¡;Y#„©÷>¼ñ›»ß¼¦@.^²„AÎ"Z8xçΞåü\‡Ùó Á“ª,^ÅP¬Á¢”fJKpÀe"Žn‹•õÙE%‚œ|öÁí9Ô»¶Ôµ{ÉRßñT‹Ð—ÞÙ3¯ï®N¹{û&€'„bxÌ4ü8úWLÉ-©£g„dÆÞrHj¹gû¦‡÷ê] .Yš9C<¤äÙÁA€wwgðÌ×6\C×â;®¤Ê¥Œ‡b:TMUÉÓå<'k«Ô‰“±ê dÛœÆG~uø•c¹´§‡f›œ*úðß¿emß=™§Ø042TI<šÔw LzP¨YšGÖWÉ&H´í­ÙëÒKÞ÷Àˆ]€–~þÀ†GŸ?¼jííï?ÚÓ³ÌIrºxÈðÞ¤÷…ÎÜSÛî¼2:)¤õœ2”¿ùLk©!ËÐàÃm÷¤d¯Ê ’Òq'I#Úš¾õÂëü°x@.[îK’}iZzï¿wú–u}›;êŸÜzçÐð¼'x,;†XÆœŒo܆@$äÌ•VÇÊ/æ÷œ”³É¡áɧ¶nØñÛ×K’öâ‘—.üî[o®X¹’€0Bwb‚à½Ó§në»cÛ¦]_Ú04:NÒÓFCk¥RZJ²HÆmÁW2B"é&•$oW éƒAV,Ö%„$IHíÍMýþð —Æß>zdùŠ•§ìi¼¿Ÿ<Ù·q 7o¿ñ¦?ýí”´ªœÍf‚ W(j)Ùâ¢Ï°A̽dUæ³÷ñý¤íO–zzï%obër*Ž‹aYIŠí7öüóÿß^µzÝÑC¯}¶·@)¥$Ó^>Ÿß²eËààà¶#Ki-5 åGG/-^TÅZTü¬Ñ°£.®;-嘇•TÇvk)É2÷Æ2¥ä™@¿øqsóÂööÖ(Š $TÎk¬¿tåjOOÏþýû[[[ki¡X°0uuÚ‹NÐa÷'?}ö¿{è•ý«>¼\‚Êk"¶*mRyL†à²ªû%h¬¬Ã†‘Â8uwo9qßÖ=ßý΃t,Æq?X @P—Ë%ö¥¹l–†‡ csK¯e)Ër•ÖÐ78 Ñ_Ô'u<EÑAjâäçíZ¿Ý½+£ž6Œ ‡ôÔ%*®×h,“{[Õ ˜šs¥L¦fm}l4%¡ÆÈK‰K&ÐÐd2Bk·ðÜ®¥íLò¶4zšl2c.0T¶H'âJBv ôâj>¾gÛ`7ärJkRO/¸ÈdÔ¥K£»~еesËðH¬u—‰hRn‡‚¤áÆÜž™©Šñio„™¦¼re¯B;·b!2bî«޹£O³—KÞUe[[ë]wÝ?4ôV ÚµŽ;1(çt¬©",W´<`"N¸¯Äôio„%:5ÌTBP¥dggÛ‚ÖùZëô¥-9ª††:€Rîn­Õh(d”·é—¼{C¼tÆÖÆ1Ðã1­"23-ó±CZs^OÌð oLÏ$B[…‡YÎXRR fäZÛûrÁW¥dye´¹¬š?W)…¶çtµÆvˆØ—’¯@ÚTê30âpr•À¾”±kÑ2/øóËíxâBwW}ñ £¡ÂSJCm}à7ËÛZ3ÅXHÖRjUÓaÀƒíÜ«öSÒu¸o”‹nínñÿú®ŽTYŽÒ¿sÌfÔ•‘ÂWv)FÔKÓêBO]„Ä£Íäiˆ®2q_JÃÙ@-hÊé³"ø£Ð(¿»áÑjêK«;Ë“ßR)å¿aB ã’†*:¯1Ü™bQ‡aɽ{pk„ZD!Z±M,CšHLëK«÷4ôÓ¾BŽ%²+\{]â“ß0JÅ["£pó Êf¬1—Hû$§c«„gÆ.niMŒ™=Mu2DL & ¸Â‹¢ªÄí±ƒ¥àÍ …ˆ¬)”`¹J`_ÊÄ(ÀV@×6úZJkL 6²ð±Š·Z†õÚÒ(Û3rOêÝÐÜbéM;ÖÒšzƒZŠÊfíPK¡¥’"Àã<§ú3m  £§ÕNëÐÊȈ(ÿéü V Vrr¦–™ZG|Þ—’¹k@•½wó—ês%#$ebçVW—=räø}·7ëY÷7–„$–ÙïH5>m{¬¤"ɶ¦vXZNmܽvêæÆàGß_˜ÏŸ„ÞÈÃ÷Ï[ûWßdåÔ ‘CÁM1ßy³zô † ¨½7š&—¾”š;=3ZŠ,3µEH&¡mŒ%™‘Â*#ê¥hßÌ·9’,ð;-%ŽSž«-÷X´æÙ¹»¨*V)cÇîä÷^¬ 7Lû`WX+¨ÂÍýˆä ab›5‘ŽF'O'í45]çó_ I÷ÒàðhQ‘õ¥è Î{;Kšâ¯kÚˆ¹ÁÛ'G/È}Çÿq­)ÏvÜå äµBtm¼ðò_.´Ì "Ü…S÷ùÍ9` ›½§ño–V,]ÔÔuÛ®Wçº 5ÖSþJËFmÿ›¨Ôlj¿Î²ëV±³[d.°˜òa762+oZ½þÅwŒ÷©T™±¦®.`Œè)<ÍÌß—2‘þ”ˆÿÂ÷¥©÷LTó}iUß&Rÿ†‚ètqÆ?妻§h&*èt•ÿíðTÓýïÉþoçøÃXt:?IEND®B`‚PyQt-gpl-5.5.1/examples/draganddrop/draggabletext/0000755000076500000240000000000012613140041022166 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/draggabletext/draggabletext.py0000755000076500000240000001225612613140041025366 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream from PyQt5.QtGui import QDrag, QPalette, QPixmap from PyQt5.QtWidgets import QApplication, QFrame, QLabel, QWidget import draggabletext_rc class DragLabel(QLabel): def __init__(self, text, parent): super(DragLabel, self).__init__(text, parent) self.setAutoFillBackground(True) self.setFrameShape(QFrame.Panel) self.setFrameShadow(QFrame.Raised) def mousePressEvent(self, event): hotSpot = event.pos() mimeData = QMimeData() mimeData.setText(self.text()) mimeData.setData('application/x-hotspot', '%d %d' % (hotSpot.x(), hotSpot.y())) pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(hotSpot) dropAction = drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) if dropAction == Qt.MoveAction: self.close() self.update() class DragWidget(QWidget): def __init__(self, parent=None): super(DragWidget, self).__init__(parent) dictionaryFile = QFile(':/dictionary/words.txt') dictionaryFile.open(QIODevice.ReadOnly) x = 5 y = 5 for word in QTextStream(dictionaryFile).readAll().split(): wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() x += wordLabel.width() + 2 if x >= 195: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QPalette.Window, Qt.white) self.setPalette(newPalette) self.setAcceptDrops(True) self.setMinimumSize(400, max(200, y)) self.setWindowTitle("Draggable Text") def dragEnterEvent(self, event): if event.mimeData().hasText(): if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasText(): mime = event.mimeData() pieces = mime.text().split() position = event.pos() hotSpot = QPoint() hotSpotPos = mime.data('application/x-hotspot').split(' ') if len(hotSpotPos) == 2: hotSpot.setX(hotSpotPos[0].toInt()[0]) hotSpot.setY(hotSpotPos[1].toInt()[0]) for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position - hotSpot) newLabel.show() position += QPoint(newLabel.width(), 0) if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DragWidget() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/draggabletext/draggabletext.qrc0000644000076500000240000000016112613140041025510 0ustar philstaff00000000000000 words.txt PyQt-gpl-5.5.1/examples/draganddrop/draggabletext/draggabletext_rc.py0000644000076500000240000000370712613140041026050 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 16:59:59 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\xf7\ \x51\ \x74\x0a\x51\x75\x61\x72\x74\x65\x72\x6c\x79\x0a\x69\x73\x0a\x61\ \x0a\x70\x61\x70\x65\x72\x0a\x62\x61\x73\x65\x64\x0a\x6e\x65\x77\ \x73\x6c\x65\x74\x74\x65\x72\x0a\x65\x78\x63\x6c\x75\x73\x69\x76\ \x65\x6c\x79\x0a\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x0a\x74\x6f\ \x0a\x51\x74\x0a\x63\x75\x73\x74\x6f\x6d\x65\x72\x73\x0a\x45\x76\ \x65\x72\x79\x0a\x71\x75\x61\x72\x74\x65\x72\x0a\x77\x65\x0a\x6d\ \x61\x69\x6c\x0a\x6f\x75\x74\x0a\x61\x6e\x0a\x69\x73\x73\x75\x65\ \x0a\x74\x68\x61\x74\x0a\x77\x65\x0a\x68\x6f\x70\x65\x0a\x77\x69\ \x6c\x6c\x0a\x62\x72\x69\x6e\x67\x0a\x61\x64\x64\x65\x64\x0a\x69\ \x6e\x73\x69\x67\x68\x74\x0a\x61\x6e\x64\x0a\x70\x6c\x65\x61\x73\ \x75\x72\x65\x0a\x74\x6f\x0a\x79\x6f\x75\x72\x0a\x51\x74\x0a\x70\ \x72\x6f\x67\x72\x61\x6d\x6d\x69\x6e\x67\x0a\x77\x69\x74\x68\x0a\ \x68\x69\x67\x68\x0a\x71\x75\x61\x6c\x69\x74\x79\x0a\x74\x65\x63\ \x68\x6e\x69\x63\x61\x6c\x0a\x61\x72\x74\x69\x63\x6c\x65\x73\x0a\ \x77\x72\x69\x74\x74\x65\x6e\x0a\x62\x79\x0a\x51\x74\x0a\x65\x78\ \x70\x65\x72\x74\x73\x0a\ " qt_resource_name = b"\ \x00\x0a\ \x0b\x0b\x17\xd9\ \x00\x64\ \x00\x69\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\ \x00\x09\ \x08\xb6\xa7\x34\ \x00\x77\ \x00\x6f\x00\x72\x00\x64\x00\x73\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/draganddrop/draggabletext/words.txt0000644000076500000240000000036712613140041024073 0ustar philstaff00000000000000Qt Quarterly is a paper based newsletter exclusively available to Qt customers Every quarter we mail out an issue that we hope will bring added insight and pleasure to your Qt programming with high quality technical articles written by Qt experts PyQt-gpl-5.5.1/examples/draganddrop/dropsite.py0000755000076500000240000001501212613140041021556 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSignal, QMimeData, Qt from PyQt5.QtGui import QPalette, QPixmap from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QDialogButtonBox, QFrame, QLabel, QPushButton, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget) class DropArea(QLabel): changed = pyqtSignal(QMimeData) def __init__(self, parent = None): super(DropArea, self).__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("") self.setBackgroundRole(QPalette.Highlight) event.acceptProposedAction() self.changed.emit(event.mimeData()) def dragMoveEvent(self, event): event.acceptProposedAction() def dropEvent(self, event): mimeData = event.mimeData() if mimeData.hasImage(): self.setPixmap(QPixmap(mimeData.imageData())) elif mimeData.hasHtml(): self.setText(mimeData.html()) self.setTextFormat(Qt.RichText) elif mimeData.hasText(): self.setText(mimeData.text()) self.setTextFormat(Qt.PlainText) elif mimeData.hasUrls(): self.setText("\n".join([url.path() for url in mimeData.urls()])) else: self.setText("Cannot display data") self.setBackgroundRole(QPalette.Dark) event.acceptProposedAction() def dragLeaveEvent(self, event): self.clear() event.accept() def clear(self): self.setText("") self.setBackgroundRole(QPalette.Dark) self.changed.emit(None) class DropSiteWindow(QWidget): def __init__(self): super(DropSiteWindow, self).__init__() self.abstractLabel = QLabel( "This example accepts drags from other applications and " "displays the MIME types provided by the drag object.") self.abstractLabel.setWordWrap(True) self.abstractLabel.adjustSize() self.dropArea = DropArea() self.dropArea.changed.connect(self.updateFormatsTable) self.formatsTable = QTableWidget() self.formatsTable.setColumnCount(2) self.formatsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.formatsTable.setHorizontalHeaderLabels(["Format", "Content"]) self.formatsTable.horizontalHeader().setStretchLastSection(True) self.clearButton = QPushButton("Clear") self.quitButton = QPushButton("Quit") self.buttonBox = QDialogButtonBox() self.buttonBox.addButton(self.clearButton, QDialogButtonBox.ActionRole) self.buttonBox.addButton(self.quitButton, QDialogButtonBox.RejectRole) self.quitButton.pressed.connect(self.close) self.clearButton.pressed.connect(self.dropArea.clear) mainLayout = QVBoxLayout() mainLayout.addWidget(self.abstractLabel) mainLayout.addWidget(self.dropArea) mainLayout.addWidget(self.formatsTable) mainLayout.addWidget(self.buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Drop Site") self.setMinimumSize(350, 500) def updateFormatsTable(self, mimeData=None): self.formatsTable.setRowCount(0) if mimeData is None: return for format in mimeData.formats(): formatItem = QTableWidgetItem(format) formatItem.setFlags(Qt.ItemIsEnabled) formatItem.setTextAlignment(Qt.AlignTop | Qt.AlignLeft) if format == 'text/plain': text = mimeData.text().strip() elif format == 'text/html': text = mimeData.html().strip() elif format == 'text/uri-list': text = " ".join([url.toString() for url in mimeData.urls()]) else: text = " ".join(["%02X" % ord(datum) for datum in mimeData.data(format)]) row = self.formatsTable.rowCount() self.formatsTable.insertRow(row) self.formatsTable.setItem(row, 0, QTableWidgetItem(format)) self.formatsTable.setItem(row, 1, QTableWidgetItem(text)) self.formatsTable.resizeColumnToContents(0) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DropSiteWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/fridgemagnets/0000755000076500000240000000000012613140041022170 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/fridgemagnets/fridgemagnets.py0000755000076500000240000001515712613140041025375 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QByteArray, QDataStream, QFile, QIODevice, QMimeData, QPoint, QRect, QRectF, Qt, QTextStream) from PyQt5.QtGui import (QDrag, QFont, QFontMetrics, QImage, QPainter, QPalette, QPixmap, qRgba) from PyQt5.QtWidgets import QApplication, QLabel, QWidget import fridgemagnets_rc class DragLabel(QLabel): def __init__(self, text, parent): super(DragLabel, self).__init__(parent) metric = QFontMetrics(self.font()) size = metric.size(Qt.TextSingleLine, text) image = QImage(size.width() + 12, size.height() + 12, QImage.Format_ARGB32_Premultiplied) image.fill(qRgba(0, 0, 0, 0)) font = QFont() font.setStyleStrategy(QFont.ForceOutline) painter = QPainter() painter.begin(image) painter.setRenderHint(QPainter.Antialiasing) painter.setBrush(Qt.white) painter.drawRoundedRect( QRectF(0.5, 0.5, image.width()-1, image.height()-1), 25, 25, Qt.RelativeSize) painter.setFont(font) painter.setBrush(Qt.black) painter.drawText(QRect(QPoint(6, 6), size), Qt.AlignCenter, text) painter.end() self.setPixmap(QPixmap.fromImage(image)) self.labelText = text def mousePressEvent(self, event): itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << QByteArray(self.labelText) << QPoint(event.pos() - self.rect().topLeft()) mimeData = QMimeData() mimeData.setData('application/x-fridgemagnet', itemData) mimeData.setText(self.labelText) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) drag.setPixmap(self.pixmap()) self.hide() if drag.exec_(Qt.MoveAction | Qt.CopyAction, Qt.CopyAction) == Qt.MoveAction: self.close() else: self.show() class DragWidget(QWidget): def __init__(self, parent=None): super(DragWidget, self).__init__(parent) dictionaryFile = QFile(':/dictionary/words.txt') dictionaryFile.open(QFile.ReadOnly) x = 5 y = 5 for word in QTextStream(dictionaryFile).readAll().split(): wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() x += wordLabel.width() + 2 if x >= 245: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QPalette.Window, Qt.white) self.setPalette(newPalette) self.setMinimumSize(400, max(200, y)) self.setWindowTitle("Fridge Magnets") self.setAcceptDrops(True) def dragEnterEvent(self, event): if event.mimeData().hasFormat('application/x-fridgemagnet'): if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() elif event.mimeData().hasText(): event.acceptProposedAction() else: event.ignore() dragMoveEvent = dragEnterEvent def dropEvent(self, event): if event.mimeData().hasFormat('application/x-fridgemagnet'): mime = event.mimeData() itemData = mime.data('application/x-fridgemagnet') dataStream = QDataStream(itemData, QIODevice.ReadOnly) text = QByteArray() offset = QPoint() dataStream >> text >> offset try: # Python v3. text = str(text, encoding='latin1') except TypeError: # Python v2. text = str(text) newLabel = DragLabel(text, self) newLabel.move(event.pos() - offset) newLabel.show() if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() elif event.mimeData().hasText(): pieces = event.mimeData().text().split() position = event.pos() for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position) newLabel.show() position += QPoint(newLabel.width(), 0) event.acceptProposedAction() else: event.ignore() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DragWidget() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/fridgemagnets/fridgemagnets.qrc0000644000076500000240000000016112613140041025514 0ustar philstaff00000000000000 words.txt PyQt-gpl-5.5.1/examples/draganddrop/fridgemagnets/fridgemagnets_rc.py0000644000076500000240000000410712613140041026047 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 17:11:25 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x01\x16\ \x43\ \x6f\x6c\x6f\x72\x6c\x65\x73\x73\x0a\x67\x72\x65\x65\x6e\x0a\x69\ \x64\x65\x61\x73\x0a\x73\x6c\x65\x65\x70\x0a\x66\x75\x72\x69\x6f\ \x75\x73\x6c\x79\x0a\x41\x0a\x63\x6f\x6c\x6f\x72\x6c\x65\x73\x73\ \x0a\x67\x72\x65\x65\x6e\x0a\x69\x64\x65\x61\x0a\x69\x73\x0a\x61\ \x0a\x6e\x65\x77\x0a\x75\x6e\x74\x72\x69\x65\x64\x0a\x69\x64\x65\ \x61\x0a\x74\x68\x61\x74\x0a\x69\x73\x0a\x77\x69\x74\x68\x6f\x75\ \x74\x0a\x76\x69\x76\x69\x64\x6e\x65\x73\x73\x0a\x64\x75\x6c\x6c\ \x0a\x61\x6e\x64\x0a\x75\x6e\x65\x78\x63\x69\x74\x69\x6e\x67\x0a\ \x54\x6f\x0a\x73\x6c\x65\x65\x70\x0a\x66\x75\x72\x69\x6f\x75\x73\ \x6c\x79\x0a\x6d\x61\x79\x0a\x73\x65\x65\x6d\x0a\x61\x0a\x70\x75\ \x7a\x7a\x6c\x69\x6e\x67\x0a\x74\x75\x72\x6e\x0a\x6f\x66\x0a\x70\ \x68\x72\x61\x73\x65\x0a\x62\x75\x74\x0a\x74\x68\x65\x0a\x6d\x69\ \x6e\x64\x0a\x69\x6e\x0a\x73\x6c\x65\x65\x70\x0a\x6f\x66\x74\x65\ \x6e\x0a\x69\x6e\x64\x65\x65\x64\x0a\x6d\x6f\x76\x65\x73\x0a\x66\ \x75\x72\x69\x6f\x75\x73\x6c\x79\x0a\x77\x69\x74\x68\x0a\x69\x64\ \x65\x61\x73\x0a\x61\x6e\x64\x0a\x69\x6d\x61\x67\x65\x73\x0a\x66\ \x6c\x69\x63\x6b\x65\x72\x69\x6e\x67\x0a\x69\x6e\x0a\x61\x6e\x64\ \x0a\x6f\x75\x74\x0a\ " qt_resource_name = b"\ \x00\x0a\ \x0b\x0b\x17\xd9\ \x00\x64\ \x00\x69\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\ \x00\x09\ \x08\xb6\xa7\x34\ \x00\x77\ \x00\x6f\x00\x72\x00\x64\x00\x73\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/draganddrop/fridgemagnets/words.txt0000644000076500000240000000042612613140041024071 0ustar philstaff00000000000000Colorless green ideas sleep furiously A colorless green idea is a new untried idea that is without vividness dull and unexciting To sleep furiously may seem a puzzling turn of phrase but the mind in sleep often indeed moves furiously with ideas and images flickering in and out PyQt-gpl-5.5.1/examples/draganddrop/puzzle/0000755000076500000240000000000012613140041020702 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/draganddrop/puzzle/example.jpg0000644000076500000240000012323612613140041023046 0ustar philstaff00000000000000ÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀ¨¨"ÿÄ ÿÄT !1"AQaq2‘#B¡±3RbÁÑð$47Ccrtu‚’³´áñ6Ss”¢²%“ Dƒ£ÂÒâÿÄÿÄ5!1A"Qaq¡ð2‘ÁÑá#±ñBRbc$ÿÚ ?ìº(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +-)îi3óÙhr±PÚ[€®Šb¨âENçBî¥?2Ëê6ŸýeêÜ“œcí8þ4§ˆ¦¹ö&ôU|z§¥‡}Alþpšß©ZnI jûlR‰ÆÑ%þt{D 'TS4[ìgÒIAÈ?/fk.vX«Æ¤g³"âª+­*ìk*¹!EPEPEPEPEPEPEPEPEs†²ë¨¸õ6ï§4Ķí6»ª!ï½!䨥CÎ Rœ…p3žFÅê~²e{œ¸5 eÈÈÿ´\¼OKáðõ8r½ûŒ2é JMjt%KAëÙûm¢ÿü¥©¿çºŸ õŠÊàe²{þ,¥À?ˆþU4úc?ó·ËÇF\Ë.ЉAê>—€.Á…Ýy¥£øãÆ¥1ÞjDvä0â]eÔ¡i9 IlVêUéU÷$Ÿƒ4F¤'î»›(¢Šip¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢‚@¤²¥!¤’To[‰HäÓeÆï+jRÜJBFI'T¨½J´i˜«T™).ØW?µrþ¼ê†¡ÖKZ#Èû%´(‚½Ûÿ±¬µq +A´¨N«Óbü×ýsÓ:}·R%‰'#Ãa\gþWùW=k?Ò;V]^r=…±£<$î_çÉþUýY NøÓœ/©GqyÂJJ}Ђ¯ÇíÎl}0íøéQHRŠ› Ç >ÞüÖGZúÚþ'B8Grr½uøã’%IœB¹%ÅyúóL2àêIrD…¸9PÝŒU¡s-Ì”á—6DÅ’0–µ”( `¨wüh• µ¡–[`xŽx~2Ò; »¼¹øÂªcŠ×„‹\ýy"¢_Ò²‚·÷à+8­N‹Ë.Kq²9óVË\±Å8Û¥¦ˆ#ík(*ú%8¡÷$ÊHR£Ú›q ÉñkyüIÍi…w>fZ˜eq^˜ê>±ÓR¶ë̦¶ŽR—Ôv5sh_Ò–ëHgQÃD”¯"þ§ÐþUΫD§?uŃè@àüZ<(” ”œ)%8P>Æ™(B{™{¤})êîžÖ‘<[]Å+q#ÏÓµÔ~£äU£æÄ„«òbÓ2éj}3m;ÖÕÈYII5{ô·ô•¾Y\jߪ[Tøã?œ:‘õìΡg†Ú¯2Ž lwúV85•Uý8êuƒVÄCÖ›‹R8Ê›'#êžõbŘ۩(ÓaQOb‚º+ĨÕí\¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ˆ¡¿'Q?é©?ø‡jg¢¬—-e«\°ÚVÔv¡´—®3]AZXJ³± H#rÕ‚FHyíPÈ_ïÉÔ_újOþ!Ú¾¿E8[Q\ÖÛÌ¿>‚²9-´”!#è0¯ÌטŽž‘š¨®—àó˜jJ­l¯mO ô;·w4´=Q'úBÛ%ß â“¸qŸ(H ŒóUÅÎÕ:ݬàiY btË‚!¤ƒ”¤(xŸ) ¨DÉ êþ–» «íj ÒÕŸÜx-+ˆ5n_WÁý"´ø‘lnc÷k[¢3ë_û‰Èá§’T´8H#„Žõ4°Xll#R1Ë­š\Ñ¡S§]]+YÛàTú–ÒíŽù*Ôó¨uqÔV€@9ÿt†ŠÿÜÛ'ýþí5Nõ–ço‘¨%[š³5dw’\š—2§ÆÎÅ8î=Oj¸´WþæÙ?èøÿ÷i«ôM(ÒÅÕ„Òûì? ÓŠ袊ôgP(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+¨$Pµ„ŒÓ ½G·Äu÷ÞKm¶’¥©G zšI]€¢ïuf*[Ž%!#$“€sïXzçÔӬΙ2Ôv%Hä§ùÕgמ¶½z}û=…å&0%%@à¸}ÏÇÇç\ÿ&âì¥øM-KZÁºO'ñô¿JÇRr“±²Ž{Õ>Dšó¨¯Úšö¥¼£1â²PÒ•–Ò=IôÀõ9¥¶¶ÜrK^ÎCjðüWû•ý†›ø|œj+ky ?fŽNÁÊÔ@^=Èùöü9æŸXšµ%!•ã²Hqô€ «MŽÀzŸOUkHë©Õ¤ô´Gù ¶Ã˜‘!r\;œwhò¤u½ôsÚš§ÜÒ…ܿŷ0¬©M¯—ãÈO {1ñOš[§Úã_¥Ûcu óöù -¥Ìq”æW×㌠·´o@t•­œÞEâj€R䤟zêÛ^š¶[ã°b°Ë !-¥9ø$ ^Íž2T” åá?AÚ¬¤ÿÅ[ÌS©ò×Ézøœÿ±ÝJ”‡\˜êÉ^IYDz’sÁÇ¿©Þ–ê£5KÈD„ŒP<0¼z«ääŽ{â»Em.§€"¼\( ªm£žÙ‘¢õ?ØZéüœ‡£wéJSm†üPwí£'‘ßÞ›µL/Ñæ»T4ø!J%\(c?À×e}‘¶PRÞÜ|Ô–e¾ß)Y“6’G|Õ3Ô_äK©NZ8èp”½32$w·6µ-’ŸN2>yíL-Ž$©!¢6ò°psë]ésÑö)¹XކÜÁ󄌂}sQ{×ItýÂ!oà Ÿí6~¿ë½28Ê‘Ý\T°ô'³hã]1}½é©­ÜíSŒëjà¡D]AÑÿÒYÉOǴꆛiÕ”ÊO”(ÿxvü±P Ñ[­—µ„½‚¯ä¯ã8ªfãmµJjS*e{°ž1ÛæµÆ´+­7ó1UÂ8jõ]§Ôý-¨cÜã!hq*Ü20sš’¶­Â¹ôVÖ.K°C‡)õ, @žàv?•umª@u”œç"Ÿ†¨ç¥º0´âÜX¾Š(§€QEQEQEQEQEÄP¿ß“¨¿ôÔŸüCµ}þŠr·éAjý¬MA$í>ˆq(q'ñÜ#T$/÷äê/ý5'ÿíMô£—¡ut›Ûœ›m¸2–îqPŒìu¼àH)$dùæiâ¡C¤§Ù?ÁçpµU*ùžÚ‰Ìw“Õ+9ñ‘©[*O÷[ÞUùb­]fúúLèã›¶Ü®´ßÿóNp¡hy…Ž°Û¡Kœâ¢©ØÞ>]þU¨7À <…Øfªkž¢¸¿ÔØ:å BfAua1œÉB™Z<57žàíÆî3ƒÚŸ”ú60¥Qîïð4醊MÞí?€¿ªÿï…vÿæ'ÿÁ5|è¯ýͲÑñÿîÓTFºÕíJ´ÉcNÆ·ÍZ’¹BÂÜs ÀNí íáÚ¯}ÿ¹¶Oú>?ýÚi}á,]YBWO_›ƒqu¦âî˜ïEW£:EPEPEPEPEPEPX¸ ‘šÈœ Ó]ÞbXiDšC©oq­^“%ô2ÓH*ZÔp­pï_úÕ7S\Ý´ÙÞ[vÖ×´ÿZ}Ï¿øT‹ô»ê{ÏËþ‰Zeˆ9˜¤ÞþÉøÌüW-8á^HY(ïžê?åJmËQ”Ò]f.%Nº´©ÎÿÖc“ô¤eâñØïVq‘ò}¿'*[žDySëJíÑ_˜ûPá²ã®º°”¡ Ü¥«éQ•A]R•YYzî`¸†˜SIqa£€ „ùÝ>€{{]Ñ~ŒIuµµŽ”$%*…hq>T'ºK£øìüM;ô£´Äx·ÝG2ïe!ÆX õÇï/äöô«±[Î嬨ä“ë\ºµTÞ›ˆ^”r­ÿƒØí'i8Ç H`=¥qØ ã—àà Ö)B6opa¿ãKY\‚­ 2ŸãUŠ&*bŠ|éCiþ5ꛂŽàQ­haÇUæZ–G¹í[[€ÉÁûÓ’ìBvݘ BÇ+ðÍju‹zÿáÎñ§ã6Œ'Ç|÷¬„frAŒT¸¶‚ãB™†ÜûóZ]m¢ѺžÜ‹a>QŽ{ÒeGaíRGãK”K) Ëe¬¦ŸB8¤«Ž‚½¬­HW8 âŸÖÃ}‚ÂI瓚E.9Ør yÆ)r€Å!–CD ¶êv¨ŒŽª»«=5µjH¸ÓI‹=) ¥[*Rš² ÛþÊ?¤èuNG;Oª~ !èô›[ÁÑ·¥õ“¶{’Œy(! ©G td‘ø×l苈“£»œs\§×(¹Pw„‰q2IG|Æ}ñÍM¿EΠ¿}´ˆ—'ó:.á=Ö=],5Hï۹ÉÅÓ´³L…e5•"·È´9È¥µÒ3Q@Q@Q@Q@Q@Kµ·Ön¢%Ä)Þd( p_tƒø‚ãR*é{¾ˆÒ·kÚ¯W +\ÚZ[Û”’´§;B€ +îsǺž±AÇØìð#÷’Âw~xÍyÌ_BÔÄW•LÉ&qÿL›“ëhP-¼ê½- vÍ? ë­n­Öâ.2Ü )D•Ôœ’£œŒ“Œf· ¬ïßš«*˜2S‹ñ–ÂJ‰'…ãšè|QZ_Cñ"£Z«’^ îhXâ£96‘JYúAwrCjºÏˆÃIJ¢·1ê@üóWÿ(3džÂ¸côÃÖK™~jÆÂÎØƒ+à­\ÿŠ]W´IŒsJÌ¡¯÷îWß}Õ-n(­å©Y*$çÕˇ¾ÔZÏb¨ûš_h´Mº]"ÛØl‡RR9JTG›C𛍫²îóz­0$Üç5 y甆Ð9Q®»è/L-ÚF wk“-ɾ8Œî#rc;'çæ«~”idÛ.iðÚX%âÊ%HÉÏ÷±É™Åt½)m A (vÓæ¸ø¬C©S"Ù¼=,ßäüé{~oÞ#r³ïJÛÜ£¸Ž}µh'ÝØžõ¥1°R7wìqTH«b–“€ ³øsJÙQ$€3ÜÖ⌓ŒX?qƒÈã©+$g·Ö˜¢)ß°qh©YÅvç·8”ð·0=ÕLɽÆCIwzXJòV¤§wÓ>Ÿ5›wHOc¸GwqÁ(>Ü~•tC„»-G•’k,+’GãZTµµ) )ôù­˜ã¸>ø©Ô‹›J¹Ãæ«ûÇZ4UºwØî3®ƒÍ«-œwç±?LÒe$˜ØÓ”¶DùõåqüŠoy;£ò=é¶&µ²NKe¹ ©.c mÀâN{d§±úÓ©SKHR0¡À¾Ô§il]ÆQÝ wÈ-ÊŠâ@)Zp}ù®lLù=.êK®­ 0^{z¶v)'ŸÇºðRèAû§<Õ×Û+ReÆuMxŠ(sŸ»Ç¯"™N¦Mö* ­âΤÐ7è÷+s2ò\mÄ¡`ð¤‘jrÊ·$W$~‹Z­ßÔâÃ5dI¶¯Áñ½²r“á]Qha$Jìáæå=ѳ‹qc•QN$(¢Š(¢Š(­Rä±3’dº–™lekQà ¬u–»¾9oyë#H¶C"d„n[Ÿ)Ià~9«Ó§*ŽÈUZѤ¯"Ó¢¹×OYv.J›¬/Á° ËRÔÐ? 1M79Ú¡‰kB5V¤ðÒx?¬œÉiö)ö™=½©ÔW4éÙ÷©—†X‘¬5Y*Á?¬\çßؚ֮y*ˆ‡£Ô rLÜÿ….®TÒlu,W´‘)¢ª‹ƒSD÷<-I}Ki8À˜ª~ÒöI’b—äêꂾîfñ3ÃJÌÙXbóË*D技jˆ—Ýöô” wûYÿ*®ž»^þÒBu%äöÕãùÕ¡ƒœ•È–61v±Ð”Ua¥Þ—.3k~÷vR‡ ÿj<þu,›hqP‹¬Þ.Á[r1+ÿ*\ðòƒIó/ Jšm-‰Yæâ‡ Uyº§Ÿö¥v©m¶Ú!‡ÒãœsþÑÿ•M\4©«°¥ŠU’誣SÝ'1pZb].ICg2T?•7E»]^ ®õqGÇÚWÏñ¦,ÚñÑOb被XóäH‹á¦ï<:rú»þt§JÜ›ƒŒÉŸ,´“Á/¨ÿ:‰`åvÉŽ22vH°h¤)…µ$ªd³óâšM8!¨î-¤ÛŬñƒ“²4ÊyUØïEBݹ¼Ã"åÈ#üCM’o·B?dó €K‡üëO±LÍí°ì,zÅÄP+Uús‹ðßyÍÞ‡yÿ:XýåöšYq×1Ž<Æb™+'×’ÔÜE„žOók«×sz××i{÷!IJ» ã?ʺ÷¯šåÛV‘¹KL…%ß ²ÈÜr\_×Ðdþ KÛ½¨€IÈϨ?5Ž­,•lÓB§6ŒR!Å$+aÂ{îja¡®,ZE»™=µ+*K¾­§ƒœð=“óQ4¶Ëî¡ô2”޹‘ÿ:ÉiXm~e„í;‰ôÀÇriSŽecM9ä•΃é¸ÔÛõÂZ!Z­Šn4rò‚@QȼHÎqîjıõ‹¦qb©RõŒd:´lŒò¼¸øOÖ¹ó©Z}ûIíLȈb¾.)S¬÷SAM(¤,ÿhá\zWHi)¦btkNj½(ÑÓß~ÕŽ6Œ\Z°’µsÉäýk›C N½ê§¥ß‘՝Д§eËÌÍ]yé HIÕÎ=E¶Aÿü+yëÿHiE­Xµ«õt€N>¨¥kÓ75F/Úô'MYi •<4ãMGN?ã\àþ†—ÐÚŸS;#h誛ŠR™(‰ajbš*ä„§<ÄÓaJ“÷[~¼ÊSJò²!Óúõ¦îa_e¼FŒŽK-©E vÜHÀÏãPÍMÖìÄj¯ìòd-²âfVRÚ`UÎO®3ùWLµÐ-,üOÿTµi)/žê¦Xa9ú$çøÔ#Xþ½=[n—cÛ­ÎðâaHa¼ü¼¤çð¡a#{ÊþE½¾Ë,-ð¿ÔåèSµêC’%Ýæ¼óÊ *[™ó„þ5%Ò6ºVµéççµ! S®4BÞJxV{ýG ÷6—ú99n|HÒº¹´8Ÿ0L[¸m`ü%ħ?ö«(íõB8]š!ßÛS›Û8%.îÛì’w{’>*³„oÕ’þ tqm%x¶þ’æèû×5ØvÈšô¦Ò”­’øÂÛ¼ =ûv÷Áõ©ô7pò Àùª?Dõ·J91¶ur¿dóÒq"…YP<ŠÏ>dŽÃ5zé²Ì¶6ü£Mˆ´å§âº—Z#áI$¼i¸¤™’µE)9ÛYÎÑȃí^8HŽ¢‘ÂGb)|¸®‚ “Ç$rÀ¦¼¶í0_™s•V¼Ï?-Ô´ÚG®T£UšH\zÅ+ÖH³îW“…¸Ôynb[ÉW™-€0óïõª¦ó¦¢ÛRãQ ‚†ÃiñÈT•û {“Ž1ë“VN²ëf–ýdä ¦®æä®¦[SQs“’ž Üú€ÍVÚšG\uZ˲ ÄÓ±TBD;{hC‰Çlò§çÔ¥'„ã«ixâ"â¢à߯‘MÖ~•»®e†j­«%GìÎ…-—’Hò©8À>¹øâ¬­Öpc¨Ê— Y)!—ß‚½R ûÈùïþ0áÑM[1Ã"å2*QÊ—6~åçä$M×n™Â´ƒöý[§™P$cÁ±Ç±æ¯%†¨¬å¯pˆûLdòÂñìz3«]=Ÿ?«­1_HÆÞ{8ô Ô'ª:ÛDL™Ëv§´ÏWçKnçË‚9lüÕÞšˆæ…Ò³ÊÕµå4¿¦H¥ô[±Tò¢0éNv<ÒÛè¼þ9«ÇNoÞfhœuÑ_Ç™/éî©fÁÔ†rs3ùaçŸ x‘ЗWµ[°‚BB›ˆˆ«ôivg_Ȇ‹¼øÑÕŬ2ú“œãøÖ§ÁçƒÐæâa8§7ÈúNÃis[jœÓ‘åIŒŒê[ø?ùTÚž[ÑÒâµ¢Î9Äß_Ê·Ê‹ŒT»LñëKõçQêeh«\ék´ÛRV•¾¥—¸•£ýåqŽIø® ýôl=-¦î¢<Ç%}½Öœt«Ü”‘ÁDZ=¾j§èƆ\{ÅÒçu(VûƒªiÁ'qäû×FX¥·lmÝŒ¥HY[NÜ`U¨TÕöÆÅeÊ·&! $ Ø a×6¿Öv%Ç%”¥[ʉõì?-µÞí×þÏ!%INT’~ï¿4Ë­õ~›´ZÈŸrˆCŽ”8'8JÙ+8œÈ)FjËR«ºèp°µ&{N 8"£²­÷Û6ôµ9Ô²¡…´èñYXö)­gººïC -©:Š5úîÓNÚ nßhq¶Ûuµ#ÄR*a Ø¢•eHûÀá&õ £ZƒOk½)/J[-WÆÛ¬mB“!¥,nRAoÃÊr=Í;_‘ôÌŒÙJã¼µ3·Èûdù’¡Ø‚2?„̵jKçVѶÝG1¸:n(…×ÝPTDŒ-M‚í ryÚ„ÚŸCÁ¤ãmyS *õÔÔì¬ï~IxkÌ×úXh{ÜX,j™v ˜Cm¥µµl”¤žI $Õ'c–-¡k¾Y¿X!lå¥Kt¸Ú7BðI²A®À™Ó[ÅæÔ"ê¨j‹‹J©•)*hãÜ+9úÔHô¾ÕwÖ—>žÝç•Ö.LÈn0Y¸BBWc8A ØB‡#rÇ àh†*NiIhü þÏS”£Ríodö¾ú’?ÑãGÜ¥ôew™°oûRÞu•8€“!’¬¶¼ (Œda\` sI’û6Ie«ÃôKcjSøÕÒZ© 3¥¥ÅŽ C)i m vT½t²Y£xw;¤XaGþÀÐ$Ÿ®{ÕqXX;_â'©yI+öFúq1ä•É–>˜"‘]:WLU°·ƒƒœîOÿ…J\Ôvi3•Ýw€ó¡9)jX N1Üó[X½.:ƒr-“ŽGùŠçº4àΗµâš½üŽKê—J.:js’#£ívâÜWºnðÔ½7 2^TypR¦èQ$"¾£ ñ]w|íqÝi¶¶”‹$`ãÚ¸³_é§´ÕÎånm.Û|© ';¬ùŠÙN¬§h7àÌU5ª£â¾¦û«ê¿Ù¥ÝC?l„èfaa!(w#‡³Œî3ëJº‰ÓI×Û&;PËJ_¦õ¨mOÔàŸÂ™úz^‹ÓýqtJr˜©ƒ‚´·JqùVFmB8öĺêÜûDŒˆOà8üëªãFœwØàbk~ËO™Ôº%pšN’?!V¬sà°G'ÈWú)e†Ü ´v7æÂ”/õÍuk¬©C°æa£epb#M,¬ žçÞ·n à¨r84!µ“ÊŠSÀ<÷¬CIÿã' }xúVVï»4¥m:àJ¸àzû®h¤ò­Ëí`>dƒœÑM‡Ú±râ_DVý!` ?k‡ Apr¾ª˜»ºjÊÜÉ@å)Ï£];JS¢à``#ý⹩KL¼ò³»Ãl{b¶;%sŸJùTLm¡´ä{VĸÊRµx‰HùôïXº«[>GVsÏ›šÌ.Í' …mÜ1Ÿo¥U¾æ5+sG?ß/ºšå¥î>Ût”åüj9#Hñ ž #2¬ç?տŸí©÷XÖ¹¶çʃzEË”¦„…2yݨ@R’ INÇÈ EI-ý8™iêÜÝgCZ]–XI>"d”!µ8F1ˆÇœ¨ö¤:3G?¤-:±'Å|Ü–ëvíªQðbåÅ6…ä §WÀÎ= ¥Ü•£±›‡8¾·®Á•½i¨ÛGMÛ¶ÿdºZymΘ·Zši89°“à‚9'9a²õ]æ×[Ý„4ηBºøŽ%©+J ”¶¤p9ä§½:?a¿">Šû3–÷ŸÓŠâò‡|FЂR ‚x(Ï#œúV‹†¸½aÖp’ô0íîAr1RÔ”ìJp¿/)=³LŒ$—®ÂÉïëA˨××ì:áz„Au¦’Y*­IJN=pT Dã]5—¹h‰R5ë›:‡k3X” ¤¬#j›ÀpWÃäÔþ~˜F¤ÒRìsÄH`4HÎÅŒ«ÁÔ/NX¯·> Ytö¬ a:E ¸e¨îm¸`$%Ï£nÔdg9ç©|Ȭ¯qOOﺦï¯u+7ñÌ(²’ÉKäý˜„¨´n )É'YŒ‚•¥Ä+j‡b;æ îiÍQ£.šÂÿ Û„Š—5¦€qR|@•ì@@N+Pîíš™ZŒ³nŽg¥‘7ÃOჷÄÇ›o'Œçö«S½¬ËG¼™ØnÈy aå¿BN)ý+VÒÓ©ÞƒÆHÍVøP!Ä(v#Þ¤–;èJC2ð>sU©Nú£M*¶ÑŽ2íêaá2"ü òŠrƒ)ÇÛ±P={ ´<¿´†‡ñ¬ßž„±ÚϹ"³ÊN][]ŒTzײ6‚þ?« c'šõ. ùÒG8äw¤ÉŸ(cŽâ”75 ;@N}©n\†Æq|̾è(îÙÉwˆ¤6´ãÊ®E?©±È9B»Ö—š¶R{zšU2»‘Vžeb`ì8àò+9(zýktèë(ûÍ`ñÂ2?Zè§sšÕ·5 ío?ÔwP$­—\#“À§ñ’`÷õ¦­T͹~åë!+ÈShÜHïáÆ”j …Âý}žl¡+Yj3 4€xHüù¤¬:˜Xy¦Ð¥ç.Fíü¹§½òÕdÈa ->"N'>€÷'Žj*Z7©m‘4œ£E½Ùgh>^n-%éËn"1ÈW*Éø©.žÑ×= ÔËâ*Táƒ)22„VŒáiãÝ$Æ®½2#ÈŽÛñÛ eM „íÇÓ?8ÅH’Ã.) -$¨ú‘Ú¸²sžªZž‡Ú²u2¬¦ùøö뛫·€cËý³*‚• Œ~ÈÖw™F·Ÿ Z‚ ?ÚÇä ­ø_«ÝZC¨ýJýÕ÷°=DZúÖm  àƒ‘ƒZ“Nís9–iÙò+ 'vÕ¦û-WHβÙe•à žT}ÅEçÙõKÛLاìQçL‡ÞˆÜ–ÜmiRSû%ðHÈÀ÷íÍ^‚Î~ûo#̓… Òô°êÛm6Ë©iaÄsÈìi´ªN*Ì+ðª;Ú×*ˆÚVåqUÞ5Íõ¦0ŒòÌr•HX9I-ç òœþ4©V_¸"V“³¿jRä‘!¤ûåHÎÓ“íƒV”ø«zBžRJ”0¬'q8íñI×I¼ÉÇ5YC2´†P®¨¼ÔÖ¯·aìRåÆL)®2üÉJCnèÂôHÏzǰ³_þ¿b|Ik»L”îØêß±ÀIRûgnÀR;–êë‹ÚrÐÒâ%³{¸nidœò<òUì”'$ëPþé¶,‚Rc-N0Û¥ (¯ ‚µèTBsô®~&Τ!ÛúõØoé*SªÝ®š·ooÁ;xÙö‹ )À)ÀÊ»OµDcZÆÔNº¸î."í¼…µ§ü‰YǪ]-þ⤶²<2—'c9¨·T­îIÓ2Xmo%;‡„¢•V2=ð8úSª6¢¤¹jd¤¯<—²z|㲯OË•UöLÈ))ØÛ©ò %Dädr03žõ\õGM?p¼F™¦ô²Ð˜ˆoÃûk!ÖTétø¼•”8£#Œ0– \e VT”Œ’sOzÙëÖ“Õ.9¤-š…zQ!)1'(¾B@ œ¨\ë]-ùkeI“(«¶½9¼ö¤RÐô¤¶ö€rJ]f庇©JÊïãøô íCb‹"Êд ¨¤§n@ªËô€°m׋‚Ú Xeý•Ž>¸5kÛmI²>W„°µï-`{ãÛéM}Fëf— bœCá—¢AÜãðïéYZËgØÃ2ÎòìÎN·([ºBÝä7TÝØ|¤ðS¢ mÇŒúf¬Ž…Æz\¶.©!L¼â÷s€@ÍDºe›|êy·H‘eÿ²ÅJ~ãm¥¾žÝ½Ïç5&Ñ¥)¨`Ú­òZR‡ì^ É óÏbAõü«³CÎ2íÔãc::£ ä¹ ¥ðF;þî=ê\…¡”ÉW§Ç^èiaPPT°\úzÔâ7 -G'¾+¹Uª‹7#‡FZºëÎgz¶€{V)oîQV;úÖÒH9çØW€ùÏ'Ž'æ—{-ZïS¸ë ÞÚŠ‡n{š+5á8!Gð}(¢Éî‰M­™ é°Cz6 ïçb|Lÿ¨ªp›5é‰)mE¶Àãæ£ÚÕÈÒ[ó%¶üL=|E?!)Ç9Éúq[¡dÙÍSê¤:AGq=ùí[Ô„*>}«Ôî#¸­¨RJ{gÔ~=é¥E6yêj@Šó‰(sî'ýw¨†²+MÙIL¦–´¤(b=Á¨÷KãÀw¿].LF‘¨¾ÈiN<€§˜BU†’‚yJ6`Œpr}ê³T1ú+¥.½†ã*+7‰JR·®*dmR»„„§)´³%¸q[ŠLµšm‚ÚI>\zþT'öÁ(B· íQ#Ž V³­1äjmO§lR[µA•gcÆû8 m™JqA>Q€7 qŒƒJ,öWu¦uŽ=¾Çi¼Y®L.C-#0.Ü”/’)9 ¤gÚ¯öÌ]VˆÂ6–ñœ‚îÕ²R›ûS›–Œ•mÆ{Ç×â¢zíxºé»|#eÓöˆá÷šŸཡŵE’Ð P$(äŽI¨>£hz·p¸´ÒäÅXûŽr¦^û:Ke³Ý*+ä`œjŽ'0rÑ4[ ÞãËÕtÒ"¬? RÔîFÕ©I ¾FÓùÒ)ë .Ëyô"3 —UÂ1ß>ݪ oBÉ|ÔWký½SË:6Û"‘ýjŠ–•!YÏ’AÀÍ5ȆÚu>«·ý†É3Ú?íõŒÇ…/bˆÀ`óÆÓPª=ˆÎLnºÆÕÅlºÅÿlGYfM­(+SƒrrTFÐ'=½©þ\”Æ/5öwÝsJXQIõýÅTÓ,ö”h^—Õ°OÚ.6âé  ïß[¸ç%#9ïžÕ®ôÕ½zo_].)i7ØWGQ òpüpŸeKGºAco|š8nFftÓï"4"¥Ô¥D$žyíZØSg JТFxVr3ÏþµXXíì^zÓq•zŒ™`ÚmÒJŽPÌ‚¹a=·yqžàgÍAãYíÒ4>œ¸=*›+\oHçÅTuIqµ3¿¿†PHÛœsۚΥdi•W{ÛÒ:1 BÒÚ’¤žÅ'"¶‚€HíUÇLâ1oê7P­n,òá8ÌfRÓjr*JÊR8<œUŽr>joqÐy‘œwTÉÇtàÒ³ƒ…Œyö¤¡*PÁæ½Ü¦þ÷#ùRä®ÇEÙjh½Ä3â$ŽõÊRGcRæv¼Ê“ƨÅͯ³HRHàžkFâùñ0ÿ%ÌÂÞÉuÃǵEúŠéLgâ§–¦6ÃS§ÛÖ«^¦¼¤°àO±«NWR·"™mûJ«H[™~EÂäûIqmìÜ2Q*&uw¤ÍÝáÅ»$¼Ä ‚¢ãJÞ­¾ÀÿO©©?Mÿoi¼²µÏ³%cà¤í5hÙYUÂÇÅ6 öħ>U'øòXºmÖÍgÈ÷¸J¼<$SÖ<×ÃîpUÇHu¶RÖ–7•ã…òœzc·Ö™,ðd±qiï3a²{0qõí])ÔÛEu!vØ1>ÉÈgs«%ׂ²8ù¿!TôØ­‰ †Äs³Åý©ÚF¸‚Ÿ§±ßº©Êñ–£±x +%Jj×ÖßÁÕÝ/mæô¹ùa^3È óýàŸLý{ÔÒ;™9#¿™-í&-®,tðÛ,6„sÀJRü±N¶ÎR’R@>n{­g‹×A^fÙåÆò©Ì£{‰['þ{V»n¢†ãâ,§DwóýSÇjÓñÏÞòâ ’N{L}h‘j·Íc› ™ œâÅ1A§x²Šp’´×È{¶*3­¥KB’0<ÛrƒÿX>Ch)q“ô"«ætœ,ª#÷kj»ƒàâ~™Å.kFIHÊu–­Ø=>Þñ)­E¼|ÄNµKx¯³dÊLdJ1„òH©íP‹¾«€‰FžŒ5Ý'hj9ÌföŸty@÷A&”=¢ì`x“v½`ýÛ…ÁÇPOÊ þéèÖØ>H±âFi9e°„lQ'7½—›û/2i”5Ö^Kùmùx‘HjJ%J½_e~²¼ÍG‡!ò0†›ÿá4?q?ÄÒo²D¶Ãa 6Ê ÚI9úžI§ió¦\ÞÚÒŠ=Ç•6ðÞV¼¯“’7ê£S«9{ÏáË»åÈÝ-´ù0 9çšWu‚§¢-<ŽÄR«#q֦еs‚®ôór¡hm;©ª’”ng•L²H¦íúrä«õ`fÙvŒâ”ÛÈO•à{¡Áê“òæ¤ð5Cˆ·ß™U¾qmYÎÿ”žÎ‘æ÷O­!¿á@Qo;ræ úT¢Æä;í©pnq™”÷ÐëaI?P}k-4Ó´^¾FªÒRŠuךû®ï•µîb3åcœÒñœíXúƒÚÉ“#y:+TãéHþtºãÓË’¤4äøÍ«€„=¹ úçݧqmà·Lö[Zÿ2š¼•[ë“ûجU{ÿ4þ—\Ô(T‹,go*ΈÊ# ÿyÒ1윚ñ›{¬¸©×I™p)ÂV„á¦u¤úuM=ÎÓÓI vÿ1ƒÚüíIZ‹%Zy.ŒyNÜgéŠÏ%-š%Ê Ýg>k»q={Š[sÀß²[%GÊVÎ=ÉÀòžoZk¶ÇY¿Ûßq¶›ÉSÛÍÃñô§~´º•ožÁÊá»A) G*ùôÁ¦},¿´ÜÕ)J+lË'° w5ziÎP^·7æ.ÄT}–ù¤Ž›é«åÈͬÇlU­@4•,Œc¶j¤é¸Ra´„Ú­›t@[Üá*$ÕíT)E3ço²7xÈÈ9üŠÉ8<ƒ€yàf”Œ­?sà Jücîlá9ä{RT¢Ý‘¥ÆKVf¾Sß}(¤W ƒ1⓸nô”S¡JMX'©Ð*m­#'+ì}7«šy2T¢64Oíšm镽OéHO>¯)ñ8Ïübªh˜ÈO´‚?hâÆ)#-:R”S# ’ ¿Ú$ d`‘ÇúïJRêUÊ3‚08þTó&#4B’®=*)pœ‹;êaÁœŸ/5xMOb'd»}Œ]™»È¶ÀUÁ B%)”SÆ0ŒŽ>j7ujÜL(pb±´–ѦR–‚y$´IãYõ?U_µ•¼Ê¶À-ÚâOj¦ %öˆHN6îòýìòN1RK¶¤›g‘|q–%1aCj¸%†œ;Ó»kIÚw¤…‘Üñ☬ȒZ4µ¤BTuZ "‡râ¦:j?)Æ zz u:kO›b-£OÚ— ܘæ" I8îŒgµ‘¯Ìšr`»;L» ^>Ö—›ËG·^SëÚê¥N€åÓìÖÖnÎÓK¸“3b·);”††Ó»jNNHöïSš!tYöeÆ1#Çi” mBH ØÀü)¦É¡¬Ñµ×Pʉlû„„ÈJߌ….1JRœ!X$´­VnêW,š×Uß$ºó°¢Ú"HJ²wãhì ¸•K"uéoš‹uþÊÌI2`=2jQu*-VÒÉBp FG~j­Å’¤žäØÁ€Ì™»mˆã²ð^uL¤©ÆÆp…2SÉàñÉ­‹%¢*·Z`Cl%Hb:U‚¡ÀàGÅWöž ÝnÏé÷fZ‹þJb-2ŠÜC› €Zv€€8Á?=øF×Qo‰·Cº7§Òä9WCjl ¸pÈܤ¤í)ÆÂ¤ã9ÈÎqÇ3š;‘™#zwO´Ãq˜²[Xi·þÒÒZˆ„„:2€Âù>nüšO6ÇmUʲmpž”Þ<9GJœGÑDdzTeEr$-D›Í± ϲ<Ë*f<è}O–¶©IN2TÈã½.:¾th¡7Kl1:ÃoMÇÃ3Æiö”Œ(¡$RAÈö>´9Án ÄÆÜäd®X‰JPä”¶ã‰Nv‚¬d“€{dÓ¤{5‰Qa»M¸Gf@”ÓB26¶þâ¯# ÜIÜ9ÉÎj¿…t¼9ƒg“i‹Ûµ±Ë…°ý´¸ͧcÞA°ùÒ|»‡qÏrtZû©îÚ Þò#º‰iRÚq¥²ÔìÛ¨J7’~® ÊÐíhVâSŒqJ_|6ÑPâ›"8’’¯Å#½L-„¶ÐÜéá)´þ"ŠÃÍ+K– #$¬öH¬.L-ûkÑããÅ)Êr{šÓ´ÃAyõÈ_*#Óà{R)“вZR”S÷³ÈUÖÕKU—ËQB޵D’’Ü–øqµp }±UoZug]¡ÏBt–šD+R‡ìžDtÈußùDä'鯭–'6‚üD, €’¡• vç¾iΕøÿdÛ,on¥ªRO} צ¯ÕõÝý2¦èŸRµ§ë˜¶^¢ØÓn™4‘ ci؇Ö|5¤¢ÁÏlUÍ«uKNœŸx–ï‡ yâNÔŒ>OaóLºMµ1´ÊŒ†q [x!@ðR}ꪠޮP•c“ CÍÈP.d„ž~8íT©9Âú¨Ñ¯(¸»[{úD§zÖù~•7R\åE…iyÓ–!3~‡yïóî{UÅÓMëtûy.CKþ) 9ÉN{ŠˆA°[¢CLyÖ¦%'bã#ÃìF?:”Øî1#²ÌVØi¡ýZ[B@I#Û¿ò¤R¤ã,Í۸ו‘´#ÙëIJ¡ÊjBO­j•“ʶ}i–Ÿ0R8ãÔSºJ›îI'·µmRº³8N]Ä’›Üœ>†¢w„¡“½CjB‡sSPRЉ<üTGT©(ŒéÂ1&ïcYëi—…ïcúÊÏ룻Äl"x™ + Þ• \ÿèEE-7/^ÚôØð‹lGWŠP€2ò““œœŒñÎjouûï]Èý§ˆD§Cxó•¡ 2;ŒŒßФ-iu4MR›BÓ9YÁãïôªàäßa«¿øø_íôGqt¸§ì“Éã½[°6çTONç¥-`»Èæ¬+f£ðç¶­­«ŽüW²Qu©)efO³ŒgùV2Fæ“ÜÍijc HXp$}k\¹IR|6°ªÊ¡,Ûœã—q‰›X[¥ÉNe!^PsE<¶ÐCxîsEju[{™¥±éó­1¢ ­Â¿´ãñª© CÍ…!GÏ«X“oC[£4¬)[ý{~ÑTã§õ"â6#¾R9 5xѼ.·Ö²{²Óœ­Cµ Xò¯­­ÛyÇÍ.¹gŠ PàÑ¥)eÅâ+¹Å2”uejÍKDU·]©W§/zbØý¡«…ÏõƒN¾V—šË©xµ´$‚7§…nȱ§ù:^l]gx½±dÓW¦nþŽ"êŒ.;ˆFÂR¯ {’@IÛåç<úTÕjm¼…:ÚHà«{ý+Ò¤…¡*R|ü’9Àü*](½Ä%b5­ºr­]¬l׋s°"Ú›e¶n‘Õ¹+u,¹â±°$`áy$qïÚ¡7Í.Ϭ.ó"ÙìWV®µ©7$¶”í%'b÷$€8ãœóVå§PÛ-ú¢-ŠDÔ·.[Ku¦”q” ¤OaÊÓŒ÷ç©F°D4ÌWޤ#)Ê”®1óšLZŽ·8Fpâ-ï©PÜôН/ê”Iv;0ï6¸Ðãøi%l­¢¢S€6‚SÀ>‡µ!»Xo“&·zÔ@Ýn¶Hf3Q¥xŽ8á%#o HÏ~õe&ÚñìËB›<‚ZÅ0C¨ñÖóeÀ^ñŒçÐýkFH™ò•ÇLl·Yv}*îÌX°¬ÌÙeµ­O<ï…±%ÀRŸhRŽÑ»$kÖ4mõ:~ÓkCSµ"nεm-Ôæ—ïa]Ž}jo¬î(ÒºjMæBTøŽZ a gÄu-ϦUü*E 1#n>*V°vðsƒíP¡ElD›éD»ãZÖLÙÙMíÈ/ÛÔ \𜎄ÿZ’ÚTœ ÊIìiÊó¦nW=¨¬ŒØt¥Ž\ø*ŠÓ–â­‹$(áð’Bs´…cžOse0ëfÐKJsƒþD´£ªtl HÌuEfbT´¡ÕS…”àŸÂ±+JM³l©Â Es^¿‘©Jâ5Ž–¼ªDoÓkzéÞ­êZÃ` ¸)òäzqXôÇOÝôމfÃv0]fÚ…$EqkS¨+R‰R Ó‚8Yæ¦é'=©“Bê8Ú¯IÇÔ 0äV^SÉØê)ðÜ[d“ÛA?2öw+Ãûÿ¢¼µé¹ºÆ½Vb}¶÷]¶D¦V†žTt4y’œò3ŠšÛ4æ«kXݵtÁc2§[†Ü$¾êšl¶²Nç `¨¥íàcÖõÚÛ`¶*çq–˜ÑÂØQç*Z‚RõÉPþuµ™¯:“±ä­'!%*È5NwtÉ‹=ÿßÝ•µË§W'tGU¢ÐåþLIíñµÃˆ¶…“»bN\(óØqW¥s]·4»›˜– |Fã¼]m<œ¥%$ñÝÄA''“ëOÖÅ—#\TV¤¡Ñ|3YŸ¯[‰¥$µ!$zö§xç,§Ö‘ÍkÄo=ˆõ¥Q §éI©,ÑFºk,ØÓ©ä¢4R·„Þ«O{†¨%@­°àòø¨(Ýÿkdjx¯¡+ûƒš«º³á®Øê@h¨$í NàHôÅl¥%N•Ù†¾µÍÚ¶ûÝÕËÖB‡Bs‚ÞòA'à“ô®®±Û›Šœ†ãŒ¡Öó-´«Ê²{{+çö¶¹?2ìü+‚Ôp¢ƒê¤ðõ5Ô_¢—X-·È éE1˜·è©KqÔó›DÖÒ6ŒÝ`ÝÏÏ5ç«k<ÜWƒƒ†SO_^¿¢Þë.—{Wh§íL-Jm ¯j•„äOžk’“»sï[ä´K(T„/ÊZR'8çhÉù'Ö»ˆ£Å^âFHÚww®Hë5…zc_ÏC©W…1*SJ$¨9œsϹÜôçâ¹Ø˜8¼Ë™Óèê—ƒ¢ÞÚ¯©$ÐòWö1]Y@üE!Dän'ʯœr@Ç5eéÒ E uÅ£v}‰åU&ˆœ©SÜ^ÆÂnM&B€Våø ;ßûÙâ­›-$-@') dûûÖZk¬„Iã$6…%8ÊŽN9Í(Œ ÛJ‚F;ΑÅä¹XNU»8"œ`’´Ž=ûÖ´`½…«¦³÷3Lìº#•ÍwÏ%ÂCiþÀÇoƒóO²ÑºSÉ PÜ=Å1¾”ø†CÛœ©'ßÐ}9ïS-ïØwB7\~yK‰;Óǹõ“6ô…y€ØWÉ*õ¾¼ÔW]õ3OiGK2d¥RÖ*çúJhÒWM_­®ómP£ªÐ˜­6ò•5¥Bó´¡9Ô:°†²zù(`+:\YuaÚË-† !ÂÑÒUŒ•wÏ4©•ÁS¡–å3Æ{þ5²tÃ\ɺʃZ.*õb áÄŸ^GNiÎÑÒ½Gúîku³‹†ØIŽDT•œç;û8íZ!Y=_¯ˆº”°‘½ë§eØþÄ•¦|UŸ æÖ—3ÆsšEqˆÚT—×!¸¤üéžgLu_ëvX¨`;m«ÅqØÊK‰Ç`6«œÖ© ¿¦L³j´–”²—RZQPIîä‘ßÞ‡4׺þ_’±öDîë/“má”%·›-ž0U¸÷÷ù¦÷íŒxaèê '(÷ÿ<Ódþšëço/Ç©ZT6šÆu”ò²xNÐ;bªˆ}@¼XïŽZ¯©¥¶áH 'jûã‘YåVylÓïGF†8„Þ¢“ìññ±wØåºÛéC™ÀY öíS sž+gýˆî*¤]]î:JQâ-¶=¿–éT8êÉB‰ðÏ#Üÿ ¤Z3—ˆ†Y4÷B©jHVÕpsœ …ê¹ Et« I%GÓ/¼-¤)Ò´à¤wWcš¬z“4CÓZÂVRKdŸUpô<šN"NÖ+E^H«ºlüKýSü5–¢%Û£©9IXÝNxÈü+›-«K—õ¯yý£ŠpÝÎE\«W¶i9ÚwJ/íËŒwÿYºÚ¼6Xd'{»r~ùHÆÑÛÓ’*—io·áÉy•á( PÂ{p?.kn‹P“í'¤+ÅÕ‚ÿ]ΫÑ:£ìö˜/:°%¤íÁûØ‘RÉúµ”N²AedÈ( %=ÃiåK#ÛÒ¹>Í­·[|6ÒeÍj^JPŒð”AœñÇ>õbôžá$ÜWt’—n7Ù>Dr#¶aèŸÆ·UÅU¥EAzübxyTÞ(ëëTå>†ØJÎN3ϦvôšNrN9&ª¾oÔ­Îçoaô«>+©ÆIôù®ì3JŒnréhõI’–Z <š)9GÚœ9¥#‘ïE4ºÃܪ7x•=¡Å9h‚3„ /þâ©D¾c·}OúïItð&ÏøsÓþ1TªPÜ„ŒäŸãZ¡î£ ØiH¡¸ÅÍ™*ïNï¹á4¥œ€;|Ö«3ay)¬$aÉ)c;ž;U‰9ëR=o“£u]Æíà F5„‡GŽ”øèJ[IûÞœÄf¦·ˆöYú‹¨îj”Ç[Ð"4a*GxÑü ¶‰û¤¹’Tžw=Hõ/MÛÔU)ùêy¥<—i1YBÖ ¤¶]ÜP‘ÆsÇz•KÒÑf¸Ô›Ýª §å§Ž•©¿ù$Ž;úV|ºêQR“ÖÅo¡a³sêV†•©aD~cºMNÉT–’T·SáaJÈåc“ñÍHúÏt‡*õf³¹h·ÜŸ¸JR#ý¿geHmJ+<62$žâ¤7´Ú'¡†äZ`Lr2ŠÙrDt8ZQîPTÓò)ûl ¤oé,Öwnðä4—¸v8P#51¤Ôœ†7hdD/¡Ò%3§.ì´ëJù1–Ê‚†Âòß÷9ãàÔfçËŒ+·N¢©Ä=m¸Ï¼2')oÁÇüàsI§ìfÆl¦Íný\’OÙ>Ì$•³y$“ÇrM/4_ºÇË-/¥¿ ©cC:7VÄa˜îØ`눷‚¦ØÊÙñÞxJ”¡ÀÉz¦H(mˆ,1:Je(O<€šÛÑiU˜ÙÕl‚mÅ; BÂ<3œlÆÜgâ²r H™‰+#46¶Ó-„!Ø$p*Ôú³!R²¹ŽÔ‘NVs„(zSzSå§BxUMgÔc¨®ºÊ!-ük|p|çëšM0ùB}Í+J`8â±KÝFØû̈ëF®ÓáZäG‡Îû¨+Ú?º=þµQõ6Ø÷êw#®L©êÚw+! _À `Uíud®1m#äš„jkb†¡³¦™k«•ƒq‘FN鵂ݯSµ:éç^$e´K©sŠtT]ù\ßN4q5#Ç“I|¿+«‡^:Ô»¼ûí“BÚÍŽBRÔ’›[޵Œád ¤’¬ò1Ž;aŒ~’ÝuÒ²§N¿Ù-ó˜PDËrÚn6Üù[ØRH9çqQàsït[l––Òëè*‡ŽC|àxÅ.Ÿf»†Ê'À·Ý[ (‡Ù*B»úÆ1O$µ^¼ÍŒ ¼°Ñø¯ªú”¥GZ.öo1-C3+J¡" ……¥Xó¬ïß‘ŽPžkF½ý!ú¹¯ôÓºa›U¬Éy¥ý¢Ø—Û’……¤!E÷̑È«Ù6{’˜q¨¬Á´C<-¨Q@}Ù¦÷ôÄ%[3âp NO¸ pj\]½}ËQè¼%ºíß¹¯¶Ÿ2´ÑŸ¥ºÓÓƒZÛ_¹Ì[imÕ´Êá@yTxY#öæ¥ÓàZú™z‡vM–|l8•~Ý’ÊÊ„¥^ÅX*øÈ©•Ñ­·r3„Ò•y_qO-?Ù*>aïíSø­¡ %–[(·zŒzÖL°„®¾ëáÙü¸xJ­Ów|šÓçmßËSVœ´¦Ð\C(û6æÃm +w·>õ*³0ÜVÞSyJIÎ~idîqhŽ{j_=Ôµ¡…c'>”·kÜåÖ©)½wdgT>§@., };ðj£ëìÈÈÒïÄS… BTžO ÜOÀÀ?•Ye¥Én( )¶¢”÷É÷‡¥P_¤­×ÂêRùRÔ9߈5†]y¤¹³M•Ýò)=Qµj+»a„É– H@>Bò­¾Ù8ǺjQÞä­4œ‡§çJRáø€¹ FÕú”§žÄðj.ܦä35ô¥h.¹GªÂ=¿•H'ÜwõTd¹iBÛ÷J‚H*PŽ~A®ƒI¤¿ÖÂæéSMÚ÷OîW–ÉBÕ9ø×rd–mD¡Ä(ÝPìAúqV}‡¨qÙe˜Ñn C(@NÇá¥'êÙúâ£×.»ê•$,µ9]ԮΟ“ïóëëZlZæfÎ+ŠØýå#?…mÅÒ§ž[œœ<•xpåkÞ„êM¾j‘&xSh‡øj̳õjË7ÃiR·Àe†’\u~ÞTçhùV*‘ÑÝ?Ór\LkƒÒf6OÜkö@Ÿ’95ÐZNY,PPÍ’Ï UŒ©´ êú¨ò:¬1x§hÓ‹9ªXX6¡&Éö—“*L`ó­–¹ =è§ŽÊùÑ]¼ÎË>âéÁ¨•‘°Õ’„g!Ãÿ÷[¤ î@à€ri|¥ZÛ)Ÿ8ñЦ÷TV”¬€0sÀ­ÔÝàŒ X™ÛIL&É'„ñǪÝ1dzœqÈäW–—íÉ;Ž@äf‹w w>l|Õ€Š3Ô›…²ß¨5Ó•k±]ÿVËX›µå¨¸”4˜Wõ“¹Iî}³OWÞ¢I‚½KmÔv– ?g¶¢äUY}´½ÃnJ……'olƒÅ7½Ó‹Ü®›ë+#r­É•~Ô)ºERœXBÇVÕ¹ Ã*à9÷Â]¡ß¾j-S>d¦[·^lMÛØIu·µ«yIÀÜçœzW6ò•L݆ŸÝ…;v¯¿àZµ5Àß­–›å™¸+»0·¡©™^6 R›s(N´ç# óϦû7Q&IÑÌji6ãÇš¦#ÀlÌäHq{'n€¬ùŽN8ô§–4^¥“³^¯’-‰Mš;ˆ`DRÔ_qÄ‘°mÊ7}ãÍ1@éÅÙ}+´iy.ÁTû[è’ÚÔ’äu­„¨ A ñëëëºò{Ú‘'Òº™wi×k\¸ñã϶8Ú]Ly3N!ÄîBÒ­©<ò0GôÍW=¥îC¹M‚óߪSowÃLÕ- iÍɤ€Ú¶ò@È'×Ö¥Ú'M½Hve–ÉlRÊp‹j·žT|4vÉÇdÔYè Íçú~ˆOÀHÔ1 5ÅZdžXÎòæpxÆ~qT¨ÛŽ…­$“^´b§õEéQ6Çp²C‰pýTnqvLS­”…l(pøi)PQ•º¶’Ú“Šz„ððÊ{S}ÛjBˆ#µh¢²ÊÂ*Jë2(~¬[Ùð\uÍ¡#9ÉÀ#ÔW]íLÅ:‹IJ„,‚;¤ÿÚ»¨í2üWRF1œ×!õM‹{w"Ûj@ÂŽPÊ•'œ(\úRzFêIèÙ®#i[Ë´Á.6Ú³»wf«$ü=©DÂ’¬““ê~}©2sœþ5–;*{Ö,>†^UP.Þ©uôŸjì’Ïæ?>+±ôÜÅJ‰xJ–Ëa‚x*ÆOoõÅpµ×ã]£É†¥%Р¦Ïc»¾+®úg©ÄËL Œd¼ÿŠ Ž‚™iIÏÐžØø®F:žJªkfuðSâPÉÎ%ÍRRPè !Ð Iõîǧ"œ–âPÆæÅ(…y½*1m}d;[+J ǘ÷àqOJy)K™AS‰O ÎHWö¾žÿ¨Ë@šÔuƒ(!ä©K@'¶}…;¯.4WIÁ*ËàÔ.DÂá@7€µ…qßÛçéO‘día»Ÿ¾SÇp;S ò)(µ¨à¤+‘» …$ò3ŽN;f” •%!^SŽÁ@î¬xócõÅ5;0N榜k*RÆÐ‘æÜ=>+ȆÙHRAãžr>Mlu-¥%nÞ˜é¾Ae*ËM•‚œ}ãZ#'ÈºÔØãÑ w¸ÀÎýªÞõŠ&GR@eŸ.NqíîkJvç†Äóº°+G*ØœçƒÀÍD™tfBKêJRÇzõ´¡-Ø“éé^‡Ôp<ÇœúVÄáŸLšÍ23޲ÛiNHãÚ‘j{ˆð‘;”H׿çÞ’»tGˆ —0ÚJGbxäóíQ¸sEÁó&Få6‰ldƒžG"³T©¦TLawwÈÛs’ˆPœ8Øáܵ‚?ô®Eý#îÎMê PPêÌxèRƒ•«$ƒø`þ"º+YêÐb¿&D¥3´\X ŽcñÛS\ct¸®é~™vxï\© pƒÇð?ÇáLÀC=W>Kù#,”ÔyËø&:E˜2­¯Ç}aµ’ŒöW‚}xÏÍ*±¹n‹Sø2c¨–R±É ÛÎ}qƒùša°-Å5M,î[Ÿg)ǺOãŒTïJZ­÷™©DæT•Çå2­«I<Ç|V¨Ú2•ûneÇUjœoîØ°ô–›jdT‚TE?§F¾ÄŒ‚ ƒK´ ³srR0— Pàdw«v%—ípÀYNà;צÃÊ–.š”ã±å%&¥dî@4Æžf+èP@ïÍZp¡%1RR¤0-m´TÙ(v8© ¤¤´¦W÷½kšŒUƒ»³í©NZ8?¢½†vmIýÓÍ̪›‘Ñ¥+"#Óô¢O¢0  °æ}ÿ¬UGäG\i Œ³Œ)çNª.•„èå*ß‘ŸøÅSÆ¡„ÔÈâTp ÁÎ9ù®5—Àåß4æ†Ý6öP¶{)Â)}Ä’xø¨û©§¼@)àŒ÷§¦Þ)$䑃Í4¡6aYµ¤÷òúSUÄä!òšSj} ‚¶óØR9O!‡w¤(ŒƒžAÇð9¬Tâã6n«%(# kB#ìøô¤ñQâ­ ©[sߊÁŇe~Óî'Þ†ä6»€e—§P7)°¡¸$ž=¾kRVFVîÅ4ä2zßÀÃAk*=«%¶´¬,¤ŽExRXã¤9fZŽK+Ð+ Ilgulû2 ¥,î¯Q¸7°GlÖKmi„Ê5Fù K˜‘YàÒ¼¥mŒR(râÉmiaö¤m% -¬(;ŒZQy€B¶úf¦Z¢±£ÁZÙ=CÊ;Ö¨áHÚœzÖ©o…8@?•Fò5¹Z´•+Ò´çrʈ¯^Äãæ·Ä`¬ó÷E?H«³>²vFû{=ÜWá[ÝVåcÐw¯°Äp+ăžæ³»·viJÊÈØ•š*=éO޲µv­³I+ ÅhyA†O"­e~l¬Ý¹!®ñ1»x.)a)¤Õmªº³¦¡´â\¹³â à¶Ùúf›:÷¼x¶Y‡CÇ+‘%Í¡¤ûêO5ÌêÓ/´©’ï¦<Ð|Æ4b¢P< €sXñXþ”VäPÃ*×r•‘3êVpmØÖDKÚx\Á|gŠ¡.ÓŸxå÷Ã;•“€NŽü÷'Þ¬‹œ;+p¶\%"|$º’¢HŸð¼OÓ 3%ØT×Ö[ujRÔžsœœùͳ®óIZ1¡Ad§{½ÙR¶‹«%?ÙÏuíX œ~ím“%Éø‹;q©OaZR¢„(ûŠÒ¯mLóµô°|)L>Gïãñ«¿¦Wg¼¢Î@ð]t?Yò炤ýxÏþ•Vêël+eÅ›ZV ò-ì—T¥d‡Š”žOžÞ˜«Eˆj¸è{UÕµ”;á´Tâ@Ü•§Œãçük™•áÉúGo¢bœ§~®_v{Ë)uå­Ð¶øJAãÞÞÙõ©#RÛVw'j U´ßhÁÜ~=+ž´–£uI\I ð%íx+¶3œƒíM[ºrúĈÏÄZÒâŽINAQH''ñàñ\ØÏ+Ê͵°í+¢b·û9[Û|@7£•ëôãùÖ6’RBYd¬ç'q88>™ô¦¶n-)…H>d «*ããßéñMÎb%â8j>^q{|$¯ +ÆFï| ~ulöi£&KèË6CËKÈpá¦i ¬’ŸSÇÏàÜê!8=ñéõ¨žïâºÒšN[˘åH×ð<ÓÛo#xÈ*y„$àg?>Õ®:êŒí[F,uǤ«+=Åhb0t‚§•ŽHÏ5µ—ѱº´¯jÊJGt‘Ç>õ¾*Úh ¹…gÌ0Gµ>©é¡Šboó¥;гøãùM"*ZR„§¹9'š[ÀB––Ôwɽ'}ckj ”úp{¯ÅYØœÍ1³†Þp$þÍ'p<xÿCæ´È¹%¦}KF[É Qî+uÙôÆaÙ-ÈJä“ßÓÓéQk¼ïm©M-•+—Á§!Cß·ñ¬u^Q«¬7jë«¿©Ô¶Õ—TæÖO‹œÿÏùÖ¶f¥¸>GGŠ”à `déèxÅC/w.7VŽ„©¶Nõ­ûùþŸÆ‘ëL»D3.OSHC ¶9Vâì09>•Ï“nZ#KDŠÓô‹Õqãé¸ÉB\} vVÕy‘…$þ@Õ.ÇÜòžAɬ®ÓäÝ.’.SV~C…kPíŸað+Ô6´FSÛxHÇÿJôXz …%Sƒˆ¯ÇªåÉmà=ÚV¡fy¦É;ÜmH)î¤ò>@?ƧZTEûS(œÿÙ¤?y?¶ >‡[EVØÙo%%Yq?ÙHç#ùVk*¸Ea)p…ë Üžß½íõªºiO0Ê–­G†ýz¹ÛúJìÓq˜t¤- …$ä‘GÖñ\¿±`¶¼™7[-Þ ~«YwàI"¸¿Né­c," ¿¢e•®_L$“ŸŠé®„X,úVØaÛÝ%¾wK˜¯¼ò½ÂGµ=cêM¨Rwð8œÃß;×°¿Zi©QR¶Ô€sžæ’Ÿ‡r RSßæ·ZÂVØR È—¸¤myñÁ®ìe(«HË“2¹©‰ˆQ äñŲÉjm· …dƒØ+5ZÐŒ¬‘ª•Ê7lƒh&öixm9÷ráçÔxЧ’UYFPµhØEîŸ[$#Ì´‡ ×öŠ¥)Väù»ŽüÖÊSS‰†PpHA2yaN0Bƒ”ÓLfç7,DCj;½»T‰L$€´ùqëNš^[…÷FìsV©5¹0„䢊«£v;díWª—r²¿.àÆ¥’#ÜÄj9Cm­ «#VHêõ––ÔWK&‰´µkƒeDˆµ‘eyB:ÒÉÜ^ËÛ7•gzR¢Ü€RÎE­¡ô¿ôezbwÚ¿\^^ºàìð|D¡>s»>÷ÏjŽÆé‡ƒnµÄ7ÌýƒU/Pîû'õ›‹‡ÁûüY÷ùí÷y®Dª9;›#†”"¬µ×ùC×[Ý­,êËTè¶É׋MÊ /4ÊÙeó1(-•§rˆØs…sLæ¼ÑÖˤ.»ê.raÌy6(ªK±ØS)R ®wIZ°s‘÷§Ò¤·¾™1vŸ«e=xu¥ß¤A•M2 ½ J $/% àÁ#æœt¾ŸoÖsõ]Úú‹”é°›†´5ìí!-¨©%#z©ÎIäú(Ud¹“ìòsM®~ZþÝÚõ¨çëùš_N=oˆmЗ!ù¬-зR‚ JÓ„á*É<àZC§µôëÜþŸ)¨ŒGcPǸ™Íœ©M»jp…{oÝèr1RÝO¢æ?©ßÔúzö-W “Pv }§•!a;’C‰ÜprF Ó+8n,-*Õ‚î¨s4Èy =&?Úú_=â$)¨Ù`ûö¦ñ•ÅÊ•Hɯ[¯¥Èn¨Ôú¢ífeQ®L[”ÏPÅ”˜>fQ ÷y†{y‡eŽ*{ÔFîѺE¨Ö‹Š?X1fâå! ”´¢¢”îò’äàyÆ)­}0_êZãê Á¨“¨[–ô@ $…%D)CrJ‚<=2g—ë÷ sÓ²f¶‰{ÐÜ”†0”©ÆÊ ÃeYÀÎvîüj®n+^e©Ñœ¯~³éû—XˆÓz2ÁúŠ$·tãW‰“\·¾¶¶ÒHZw+ îYWaÛ&”·Ô}Ipµé–mpmq¯K¤ËD°øZØeæ7eÄà…)8FàœŒçêOý•U’çd¾ˆW[m6‡zŒÌ–Ò ›Þ’À…q’Eh·ôÎ,¥{»ª6)ò'¾ãÌ….k¯%{É €žVOcÀæ’äÞã#J¤t^¶ü“˜H}0˜DŶ섶òÛFÔ©xó2p Ï5¦t â ›áXïK~†Dfâî’‚’³cGÚIy\JX #hMl”ØKÁ^õà­.yµ3Ft=JvŠÚÈÆV®Õ­ +PÒ•:)™>C¢¹³°· “ÏÔrÝâ¹{NÑîj@¥“Jê%¥SZ2ÉÆÑ2ÔwÕ=µýÏ]ë­a$9\‡‘“öv’ †0@ö<}i².Õ‰l»q¶>ÓAa8ÝÁ'ñ®ë F´â_¼Çm¶d~Ñ@—rG”ŸsTÍòú‹öyøJRd2âV¦Ö¬-$oQô®5IÎíMXèaj·—$tØoÕöin†£·f|Éw!'+Q$wô¨3Újóâa§ÎNÐ<ŸƒW%ÕqË–ìÆZia/6âÝ ÚHÎFO±ªÏPjuí¶%Iݽîã$‘ø­6Œ§šû¯2Ë*ÍEÇb+‚ä¶b¯ SŽ%ÏlœrkÉQœjCŒã[Qú]§/‘ÈR›l—]$œàsÉù8o½6|W$8p\<$zãÖ›Û}Á'ØÑy”åÞîô§7;5×P€Ó e*! qùp=k¡z 3ú|ê[kÅØ¢6w%¼ä?x {W>Û.&Ý5¹m6‘"0C­¨~ê’ ¡üÖºôj’㨻¬µàfŒ@ÆÄ¸7=¾{W?Ö§gÊßc§ÑíÆnHd×ÚjL)Iz:Ñ”(-§32p}é«Oê),ø^VBJiKÚR¬…“ߟÊè­Qd‹&#¥–ßR ”ã `ï§ü@öâ¨mq¢Wh–e°è*O)RFJÒqÀçßø×&*ÝY|A ÜN²ß™7´k•ñ¼D«…yQŒö=óéØ`jMöæä#([{Ùˉڳ• ˆ=óéÏ5EÛ „,¡â*tà ÇáR]™ ø»›dìX+ó,wôÏÍ.I§dÉ–ÕhXÌ]d¸C‹iÉ)R€HÇÉ$‘ùT¦Õ¬ZŒÚyÓÄå§@G§—Ÿ1ÂH8õÍRÓ®JZTc‰ ©h@n:ŽÕgƒ’£û½±ë[g\Q(Åjj2äpTÒ7©`zŒóߟ­Z%3ÂFEÿmÕpÒC‰~¸B–p+zIÀ'Ø÷ç⤺%N6c¾Ó­(¼«žÙ>¼GÅrãÖÈÒÚS±$OKÅd-²6ì à©@3Šw¶Á¾ÓѵÒÊR Œ4U´¥8Nùþtèⲫ12èôõLé(÷XªR’âÐÚJJ‰žÿáZß½AФ“! Q÷Ýc#àòEs«‚øÓ súE!‡VCÍ´ö·8ø&š.—=E!öa¢BŒ åvQÁ!XìqœU–1²Gw–Ö¯Ö±æ¿%¨ÏöV›YÜxÞJ»Ÿs´þu^ê}i.å0Á·(¾–ò£œÉû`T0E»Ë¹¦*¥‰#±’¶Õ“¹GÔŽ2¯Îœ-öw#<©.ÉXe¼’qG'rVGÔÒgUnÙ¦ž.B¸2LVK]7IÇ—•ØsÆ}xâ¼vÖYµÉ»\·'†)IÂAPÆýÐ~¹Ïém¶&B¶2ØnûéVxWsë‚r{|Òý|ÃÍé9ëHQeQ =Ò'…Ô¼’\Íq´YÊW(Â=Ál©%IÝ\ŸåNZ…"8S © )³‘€Ú}~ Wãšu×v—”Ô Ó <¨×ÿÙÖ£’¢È#Ødô¦?ɹ´¥—9û©á?Èõ”ªªR<}Z\:’‡kÓÁž´–ši˜›†÷ˆRÈ?wžãßò§TXä}‘™hCûâàIÁàöø¬dZ$8( ]ý³‹GNp3íÀþUc@·É”ÄYl¾ã;R’;¥D ¯b@=¹¬¸ŒFDœMøL*“j¢Ûb/£Xš™Àþ¯jhPáRÞá÷T9üë¨zRËÏ6•:ÚBÆ20Óâ©X¯:™hLhÊŒ‡奷Ò£ê}+¡:>…8ÛA(ÊOsŠßÑ ‹.&ÇŸé—ûÙ-±kØB¶$g§ƒƒ„Òf ©¤xŒNÕ°;•ŽA®ÔÚ›º9±N ̰–Rµ2 ¦R®ÜQ\·¹Ô[Ž•] ¹¢­Ñ ˜ZC€‚ãN¨;¥öG÷ÅW*·?*ÏoY*B2¼ÿ}Ur¦:LPÒÈVo“Tk™Í¢ž"Ÿ"•nA#?AéRm:öxúâš.ö·#¬ºÈÊ äJQ¦f$f:Ô³À4ÊíT¥x• :¶‘œ­[§Ú³7unë ÈN;à!ä¸6)ÍþÀ}÷¸÷¦‡µ¥³õÂm*½[›¸¨€˜Š’€é'°Ûœä÷ÅTâ+­õýP¡%õÍH6Ž*l) ˜'þ¯Ò™ç'¦×Ý&âHÕò5Ž0Áløîº©IR$$w(ÁÞ8ñJ§Æ7µÅÕÅTm­¬_Õðv⇧ǪÐöÁÇnçŠqéËQÿö³auøì¼[ÐP”ÙZŠ y\cóóQVœe²³-K5+2í‹©4ô»Ã–h—Ël‹‹{‚â·% u%?xƒœQéÆ{ÓBµ5ŽCÓ¿RÞm· RÝf<”8¤c#“œdõwX٤ͷ ®‡Ð—¸Ú’Ïqµ\¤Ã[)û<•¤!Ç‚ÖáÛ» Nøè˜P'ÀӳƬ·¹>Ï`v"­ A He iM¿••…$w''Ö³Sv•‡N¼¤´^¾£Ì.«-vMàf×íª§1)õ%ˆÈJTrp ŽH Hã“VºîQcʃo*; ©Qeüº¤$ìÏ$sôª'§ƒ tü þu=ëÃè²ÚlZÍAA:~îËï©#$Gtú8áU“ÌËP©(Órok ¿ä”HÕº}®R¼CSV·Ôõ‡F#-#Ì•ŸÝ#æ¡òú™m…U\§H„`XVI‹1.ºòö[R8ؽéR@'œUUÛ&Ê×¥ä!AÍvÌ)Ó@I#ÅCë~`ÏËjH$ûS¶³mÉ®,ÇiÇ\TxP„•ˆ‰ôå«AÄÎJûMý‰íÇ©ö¸—í.Ó3àMå¹jzc¯„†TÊ! öÉ+Æ>˜ïVŠío½[Z¸ZæÇ›Ñ”<ÃhWÐŽ*Ÿ›:ÕyêgJæ[åEžÂb\Ê]iai ÙìG¨ÏáOý!¸:Å#ÊÛzºæ”¤vHñØU&®‡P«.&Vî¿—?ªtÓ×±dfÿkr椉”‚èZ~òvç;‡r;NIÉ8š 5V¦ºj‹ÅírØŒô-q£gf)ñb2™>^yy$oÜ9ÂRw€3ÍtS ÇÍʆRŸO°ñ µœdúÒg%-`€1KŽæ‘<ÀVT8ªÁ¦õ4M4´ Éõ¤³cdž)r”ùHí[_@-Sóåbc ”V-¶“l’ýí1¾ÀÚ ž/ýÀŸšâ­SrÓꧦ\q¨*YÜ?³<þîAV ÷®ú꾓‡ª´ì«<òøŒøü%íQÚB‡>Ùª†s¤šbƵ6d-}¼IÄ?NJʼnNsÒ-ßäZ…U‡“•Ît»ZÚ–â·‡ß+8KiA;Õì)¶n’ÔÂ@mëÁ¥g0¤cþ×j¿õEž,{jãËe¶£#*#ilÞIUwÍz¦ž1áÈ]ÝIN"@RUÿXgÍõâ•U)<²6TŬF´â7GµEÓÖÒ—å7ö×› –sÃiÜ0ïÛ'ßôÇrÜéì¾¶œjÚ••¨`­#ïcÜüW¯´åÑçî ‚]yx'h+ç°qð§¤h‰6Ü‹óÿeŒ–Â’ÑXÞ{%^‰'ž=*TÔoõ~´#‡Ã´æDnF•!p¼dÅqÅC¼¨#w©Æ3ó] Ð+ÜIòa;W‹0Ân=Á• ) kʃò }}ÅRšâtY Œ!¶ËHe>im >¿Z›þŠéÕÁ¥”€äÙPìC‰ÇóÇãHÆÓ\,Ï‘«Qº©.g[‚Ò#ƒEkÀQÛžç×S¤¶4‚dÆe ÁOˆ´!° ¼žJIì=À÷ø©!±  ‚IGãZåÆ[Éu´:[_*o' ÉîÁ…r-tuã,¬®e‡qCI}·]p·¹XN2œŸ\vÁ?•{tÐY‚–Ø‘û- 1ÉNG¨ó늚rÖÞöRrò–½ð=RN*GbL/ºÒR¶ðIÏsî>qU…$ôcž*pÕ\í pŒ”Ém¿ „ ‰#ãœùÒ-.CI\¶e>ê”<H¹½y®ž0£È(%-FBGïŸõšÑ?HÙ&Ç[bC$á²@ç¾G¯­ÂKx²Ðé4½ôssÊ’r%ÁµA$î9Èõ9ã=«lIW$ ¨ÛKž8ðÀ_Ž1Î{ŸŒUÙuÑ¶ÇØ\ð°?!ÿ•GgiÅ1½KŽ”…a’O=¾ë4éÔ†èÓ U)­ ÅÈ÷§Zð^ #x+tJF23Æ8ö5‚ôóNÉ̉.º¢µ·«jNqÇ€ò©Ô»jØeiLrúW”¨-8ç$¨û}>)ÑÛSKLr’U€¢=¿ò÷¤9IlhUØŽ8Ëq_û4vZh8Gˆ¦¼¥*Îpµ“ëY±n*|;2;ëÝ’†[@R²?xœñœzÔ‘˜(,xˆÚóå( §Ë‘êOjrµÛ„s”!´ ¯§4½YWQ$7YíªC C­ÿðM}Â}3ê~kÍsk-h‹³Î ”·Î¶ÞÕ4´[_YíåÜ0 ¤ÝNe ÒS¡©)R^eHq%E ¤ðFG#jthÚ9™’Uúé#’t•ýK£fÀEÝÆîćàBu%AäùƒgºTœìGÒ¡ScHƒ|u/´¶žR²æäöÏÞù9©\Ó/Jk;­¾ëqû\¥UŸ2Ò…´ãÝ* ýMIæÛíW«•ÆYwˆï†ãsû2æR õ!'ùW^¥N¥Ò¼eªøØÈèÓ«Û³oÈѤ[l7!m$¡h]JS•Ÿlð F=½ê@ã ~2˜ˆúmïlÃ[ÜØãpÏ÷'ŸOjk[LÚâ–Z2I!+Ït÷£æ±‹v™dU¸çõEE ôq )'Ø‘ØúÒ+FQ†kjÇÓš«ZÐ’²û Q*T-BˆW††éP'$¥+W²UÛ$rc]]Ñu±ö&ÂFÞÝûŠæm@ë–xVä¶\iÀìÉiYó2¯t㑟lWKtͦâ´ÊwCi¼rk³ÑR”ZŒyžS¦$e;Yó.ø+BqXK€‡<í*‘ÛÀ,ƒž;ÓŒ²JÊŽß@k«+Á¶™•55fPqŸØ<œ{)ÁHB™ ÑI”ÔÆÆ*×+Τ3¢íêmwÄÇÿ¸ª–‰ï…~U\è;“ËÒpbEG?´Ê‡=ÜUMà%ƘËË V;WBTÖTäs(ÔvJ#’g)j 8€søÖ©Vd8àÁð–9Àõ¢Œ¥EçV”Çzq.<€|'öÁ¬Òr¦ïkŠEi² «$ ~¡~`’ä›Ì¤Ÿ´Ë.:–R‚’|¨É'éÏjyc¸ FÁêMsþœvõeÔ½[×þ¤v±> Ûï@Üâ]ó ÔU–ѳrJGpGT·Ìbà BWœ‚3“ž ØÌô¨9âÒƒMvùqú„ý)5Ìùô¦=-.áhéúgêIŒLz$EHyØÌ–Ò[JJ€ *<íüš¦lpºÝ¯:iɲ´Úâj Їú²!Y™n%{SŠ*![Ž3åÚ¢:OQÕq„{²öÇ{ñKÄT–†+ŸìÝUÕS4ìkzÙ·§V+U‹†TB*wiVxŽþ©×ª}X½è›¤‰,j#ujY~ÌÃ.M²TySÂè@÷©7¥„ÃMEÉì[é .S‘–Êä4q °V{;JZÔbÚ£ÅPso34ïYzÍ}€2àY">Èu;“¹1›###"¤HêV¢SÝ%ALjÖœ]ËöG‚”4¡áù¼¼¬÷Ï¥-Ô“/ ÔÓwíúظP„¡$$V°TIÕ¬z»zÓ²IÔ:Jûû² É·AaÀüVÔ£…x¾!IX9=‡¦¸SµµËô•ÔVø7ø ·Ô߆‡¢­m†T¤©) X+å~¸ì*{²ÒÅÂöŠÖö/&ßaÔ•4òHQI(P pG úViPÛÁÍsv…ê;Ñßµ[l–†¯7mRå¶3m6´Gñ–—–7éØ(zcRHÕš~N²Ó—¡i“y²ÙMÚ ¸¬­ <Ž mJ8!JƒÈ©JèªÆBɲétä§½dÙ*oo­RV¦k¨ô*îñìêµk&Ý,±·Ñv¥$²¬+;Á#hõ™.Ÿ£±yZ£©Þ:Ü>©IÂw¯gÒ¬ÝCÍ%ÏírǸÅÞ’•õ¾YPZQÙ’{UˆâêO½4Üc$‚)ÔªXmH\âÒYqöle’›RŽTôpWãŸec°Çןj©tÇM55Ô)ùl‹s)íö¤©%AŠú¨,ÉuEA'5 Ÿ¦ «ó$‘óYeGRvÓÄ![‡$r-×Aj´FŒ„HlÈO¾i½2êd˜óX—5Ð2–šQðÐ3ÝK5Ö’´“c>\SLÛ, ‚­£Ôf™S£ê%¹hô„¡ºLåk®»!EapÓžÈBÉÀúâ¤eZg¨qÖ¹Iy2S ÷ ägÐ*Þ¾Û¢!²®0{÷¨¡2G Èì'Ç2w„á[}F*Ez1Tey-‡`ñsž".ÜΡ±:]Œ„¬€´à œä¬Ò×™VóÏìñþ¹¦í€õ±øÃˆ<¯Â¤% -»§€¿Cñ^~1º=¥iCälpùÒ JˆçQßJñˆêŠÆ×KÈY#Z“Ç©‡ùóK~̤¸62¾;})TU­¡æ<‘ŽxÿB¯®¥\´<·Ét+nÉÈó'œü‘ÜSû¶Zòãpǯze’Ìw¦FÿE§Ê¡øŽõ“)+@l­ÕÆJ³Å5JÂ%õÉyJVÔg9É8•èîH> ýäÄ{qJ¡Ba¤ðÒJ}wçäÒðPÚœöÂ{QkîVöØ‹¹§Xqh[¬©d2ê¸ÏÂ}©$­% Å8•!½ªVJRÏÂ¥k <í]²kÀÐ|gߥº0|‡F´ã̉³¥ÛhlB@àû£Ò–F°²ÁÎç"¤)(Ýà+¡dç´ûžOáTT`¹¯7»”È@J‚Tyvæ¢zퟣ$•©Õ$'¾wߦ²¿d…%i?x«¹úÔy؉zJtžÝù¤×ãd2Œ¬ó3ú™¥®ús¨’”Óób\ÞrDi °Ú£Á ìB³ÇcH¤K• oïÄRò"ðv8xò‘ñ€Gå]ss³ÐÞˆHJŠNì}ÇÏz :«£ÛÓ2}¹8Ô{sH%¸í$…I{8Ïñü ? U¹$Ö¶²‰o'WkÝ®ÒÔ7æ²ÀSrRëƒr’ãdcØû{·Øå¡h+ignœJÙ õ ²êçÚ!¦T€ Œ¼àJ}{÷5vé¸öëŒd$ò H þ5èðô(NžI½O1_V5¶ek¥´|tÜÌÀ‡ÒꕹEG…¯ù×Bèh1â0Ùpå@Se²ÈÛo¥°ß‚*gµÅŽÒJÀ'µ¿„§…‹·3%JÕ+Ï4Øûïe*oîŠÅûÑdøm·Û½d܆Úo  \dŸk •4é)·™hZ¥WÕz’Û]Íð6«ØÑQ8¬ 8•mWÖŠ¤ði»Åصi)S„[±jqs–^ßìo»è›–¢Ð—m9®5"o-NB<7c[Ó°Rw¹Y;‚O'cÓ~‹±ê{6¼êÖï1cÁi¿Õ©ayÈ”°³¸€ì3œš°îŽá¨wô¦FV¤#=ë6u[5ׄTÕ·!NÑ7Çd±Ô ÿ…«­±¶„©¹(ò…nãp QÔ€=°Óléd—CßÒò¹ÚæÝÞûtéYA|JÞ *BU´§Ê]Žs’jëhxQÀíLw·IN2rNiTãÄ™5h 7vƽ-k–0l×û›W’ãJeÇQ0•¶S·nУŽ3Î}j1¤z¨tdxÖ»v¶T7å-˜-ˆSÉmJ*ðü}ý²O;síŽÕ1³=–Sîšw}!Æ Dã’c¡Ô‚|ÑR[:OY]ê nêSN8·‘mû?•- Úœß¿’|ÇîúüR·A™c¿Xcë7£Ù®×\ÓÛµ· ÿiÍÙZ”mä{æÖ§ð§HÊÞÐ5UµE)áéJé¯Or¨¸t鹚Ç[]¦Ý[¢pކv©„¥¤·¸/qÜ|¹û£ñ¦»Jî0¦i9^åÀig1oh@KI ”¤,’£„yóÙÛÎjÛº0R¿#Šm)^íÙ8­Œ&®"¥%j½^ÿÉP³ÑE±gfÂ^ñ´Å»&é ƒèPψ½Ùs˹#îãvNpN#h9¬õYíwjÔb™¨ó¡9;â¶‚“„¯pÙ3ƒŽj\ËAyVsŠÝD;´wÍVqV²&E§b¶ƒÑ(MôíÍ)#P<¹(¼*ï àÔP…G{¾B¥ÎyϦ+{$~TmQ2õ©Õr¾ê êõNCMÆg C!gÔ|Ü‘éÍYÅEë-üšF¨Ñìô¶±[EéIôñÓ}ãF¡hÇÙ?Ý›’Ú·û?¹ýîõ)Ñú~ãb›{~v§¸Þ›¸Í2cµ(ùa çöHäñϦÎ_{h5¥O94(·©*àôõ¥…{y­2JV“Ï4éÍ ¬qL×óLöXÏÅ3%µa*É &!¬¼SÉø­ç%5Wõw®ZG-QZ®,gìqÖ?gÿÌ_d}9?Íú³¯zúüêÑo}›Dup>V¬ŸÄb¨ñy}ÔèU­î£¨z¬lšfÜ©wYÌÄAÈ@Yó¬ÿu#“\ÏԸϛp,iv mchzB”¯žÉüsøUYp•>âë“®’äLyÃ÷YR–~¦§½ éâ5¦©¥"Û )~àòÞNp–ôÜxúYkâ¤ÕæÎž¡õ¼Ù–„éî²ê Õ»\e1lÜOÚIS§Ô6ùíõ«_NèxÖ›œT£ÆsÃ9S¸Vµzf®Iìlj ˜qC,¡;m¡ `=G^g2ÛtsÆáî+Ïâq5*;r;(S†±D¶ÈÒQ!# ÀÍ?´P7„­#¸?^ 1Ø <Ÿ2}qÞ¤m¤- åÇÇze=Pº›ˆÌe ’ÈÞŸìw‡¨­­¥¾’9È 8"”œoÌÞìzäÿmaÑÈqþ¦$-ɘ5c$!YÆ8·°ÖP¡’žáJò}x¥m¥²Õ+Üð>”¥ ³êêÿ ¾Qnb&””§O¹Mx®xPÈ>ƒÒœvFï‚çÆkb@I„¥[)Ææšu_q“ê®mp y@ü&—¥Œ«çšÖãXó)X˜¡¢3ÔØÆÔ$$c¶8­ J³¸ÒÇR””üšDòŠ•µ$äþB—&Y&nRü&À'cíóIÎ<¨ ã>çÞ”ÁY ³æ=Éÿ_Ω>±õÆ×¦þŸÑ®G»_)~`!q¡`{8çÀàzçµ-ÁÉšhSY(ÁjIú…®tÆ‚iµ_$©SŸATx, ºî=ý“ý¥qõ®Kê6´ºkÛâ®÷rPÓj)‹ ?ÔÆo=ýãŽêõ?•1j ÅÊç>MÒë%ùÓžXSÒ\;‰??àvÍ1çd¨pBAòóÇåZèaÔ5gQFž´„—â'ÀXR‰ó`üÓÿOµÞ Ð÷¾<5(xÑœ9m_Ocò)•*ã!8<‘þ_5‹å*!)HŒ…VÞVg+†…[¾ÞGcôç¬gR²ÒcMDi؉!A ϲIá‡?mÀÔ ¸‘Ü/Ôâ¾i)‡çˆÒ”ž`RjÆÐ]lÖZcÂb[é»ÛÛÀ ÊÉZG÷V<Ã|ŠÓKRž›£Îâ:.Pwß­Ë.ÇñwÅ!aEçŠsÇš¡tÇ^´µú"ûzí39f_'Ø,qùâ¬[&±Š–’´>Ì‚¡Ì¸—ÿi5¶úOIhÎ]J3ƒë"tàmµ’}¨¦H—Ö&((“Ͷ3Œ•ÓbQÓ[jÑ–µ}ï·§íOOZÚ„ÒÞmðžØ¨§M.2™Òp£”e‡íV —¢…wJ…s¤êS³oC¡AR« ¨®hÊœ·6$*²º$€ÒÆô­÷u„Nq”aÝ“HFÁ Q>§šé­QÏz;šY (?–*}¥žiP‚R0@Á¨>*Ï­K4ÂÞp}î@5Ÿ¯LÑ…•ª ïO<ëËKE×÷”ù@àÒ©IîTqO±P˜±€Ï8¤Týºj+sE?ܨäö2šî´Nj5p•:T®É:R‘“Î)›œvø+HªgXu³HXÛP›¨b—@Èf2¼eŸŒ' ~$U!«IçRÛ°ØÊŽN×f¸Oÿbΰñ£¼UÍQUj{¨ë¹ÚŠ:@XíïQËÆµµ­o!¦Ó÷–âÂR>¤× _ºÓÔK«ŠZo „ڇ܊€Øê9þ5 Ÿt½\Õ¾}ÊTÊʼWйüMQâ*r²Ž«?zG]kž¿é»A[q盓éÿ‚‹Êíž?,Õ®úã«õ1\[kŸª!,PÁ;Ô?¼çËZ7±P*#Ú”6ÛMà¯ÊAÓñ¤ÊNNíÜëaú"œ5—˜¶ûÅÇœñI󣜚V[JÔ$‘‘é[vá­Ê!'Ë„÷¯v„¤“Œ(ãƒÏÓéUnììÓ ¡$&˜µ—X@H)IR°;ñÛ?tèo.*íÚ–Ü ‘8-‰õSXPÆ> þ5ή%&[8l”¬(;ž3þ<ýµ"4¯U­2e:– ÎÌeG%΢~Í*´o“S×ÁÖ÷&²ùó`cà∉q²Þ6îÁ ÷§™l©R6Œ¥[TíŽÆ²b)(ŒÇÉtî̪vB[F[V×R7$í ŽGÏçš’´´¡ $œ߸¦e6!•'pyO=½9¶…)…6(8X ñèGÐÓ ²èRm=EÁͪGˆN6’”ƒžÝø¥¬¥$‚È ÷ǧÒêØ ’ ü” ­I)ãœUïb–R@XÁgÊ?×4¡*B”P àF)39q–¼-…çwï'ëZ|T¼·±”ŒvÎsÍZåw:ÿ‡Ê·;%=Íc ¬ŒœcëÚ°‚±â)*ÁÝÜžß•k¾\-–KjîW»”Kd$ —¥<–Óøg¹úTo¨[[ ÆäòBGjeÕ·û“³.ï¨îlÛ`§;TáË+û- rµ|Æ©~¥~“öˆeËwO-ª»JÚ@¹MAm„t6p¥ãÝX¹«V_õ­»»wÔWI7IÄ`ºòð†ÿº€8HøHÅJ¦ÙÒÃtuJiè¼ýz±eõ›¯·]âØtÊa°¨”¸µ+ý¦XöZ‡ÝIþÊjžq)`¶ÚÜPTP€6Ƶ¼àIHi°p~ñε$)jñ”KŠ=ñßäóZ!¡ÓŽJIÂ+×Ôг)õ™ ÊF0Fx÷5‚Ò·HÀî3ƒÆ})bˆCKÚ ’p'Þ“Èy t@ôOñLB*F)jÝÙ­ ²Ró©NÓ’ /­`擹cJ»þµBS¡;ÒR9pÉHDzf-¤)Õx¤Œî$d~Z›öŠtÜžX+zæ"YQX( P϶1éY9J9p§€N{Rå-¤êä(züR'ä(ò‚Aõ(úÔ¦ÞÂçNMÉÜFìfÂÆÓ’yÖp¤\mï"L)oÅu)RR  P’Œ©*Qì=³š w¤)@àc8< µÌrÃÆE£:ç|µ-¦5$Ape<}¡³±ì{ŸE~?QÎm)ÁÁííEBŠå¡Ê¯‚¥ŸÝõð:ÃMj óv(ÈnõrJAVe¬æ>™©3Z£R5 é ØqÛíŽBtªwZc’x¿ü=x‡'îŠñUëUr¶góÒr+ÑÚ—Ç«oyüÃ4»I3:«RCvùÿlsüè{Sj%ŒÿH.¹ÿž9þuC¥£ŸJ–œ…R³Ö½ÔŸÌº©'¥Ç—5v¤lAvþxçùÓtÍi|e¥-z†ä„•)SVúœÔ?Rê"”G vL׎Øð㤭ç”{¤sɪŸª±z‹Q¿¥Ö ½Ž$‚~Êܘ«eµã¾2å ŒúŒúWO†ÄW×3K¶ìÛ…ÂU®ï{"y«ºß:1SÛÕÊàðãz¥8Ç*ÿ\ÕM©už©Ô®•ÝoS¤#ѵ<­‰ÀgÂ÷äŸZÍ vó¯AG KK·ÚÎþ nc‡|Î/ñ5êAO9Vk#»¥.vÕsfÒÅáû\Æ­²\SLL[ º´ýä¥xÚHõñOm›â0\ì¿Î½BÖõèkÀ2}½«ßLŠ­Ë«ö™ž$nyÃøšÉ/;»—\?õ«ú‘éÆ+$ƒÅ5 ºrí3Sï)D\?Uš«Á×>y5¥Dcô¬À~POMîfãï…‡W”`§Ì‡ñ¯VóޤeÕ”‘ßqæ°só^pÙ ò…sÿ$ÐJœ—2úé§PïËz`ʾÜÎ*V“)yu À óèçS4_/[ÍËvûRÿιÇEXµF ¾´}ºá>çJS¢·@!%X†T‘øŠ´ÞÔ£J¦;GÒ7‹2Þòµ1PÔÚ>¹HõÚ àcpTœéj»;N/ W6jný×&Ò/·½¤›ÝÉ'ßíKíù֨׫»i)zñt$e\J_#ß½F°Òò@ ß"y†k¹¼}r)SW­;".åÞmdC%žø¥µ¡m()¾Ý8൹žßZ¤¤uuM©_c²‡¢y}ÍŸÁ9¦+ŸT5lÝéŠôkrãììÀÊVOåŠ|:7=ôñcc€ÅÉÙéñû#R_oÅ‘¨®l6ÉrzГù«¼õª5¥N¤êë¬ç±áC”âÆåñ®p¸M™qŸL“1dåEç®N¢´ß×ò­ôº&ÚԨ߆†Ú}g×›~íûô…×›²Î¸@A<<ôÇp}vƒø­õ£Ô:šh™¨¯·+¬÷.JÜ)øNOéMeKÇ•8ÕUá9Zãg·á]JT)ÒVŠú*4£GÜ^¼OKÎýÐâÉ퀣ƒõ¬¼i*FÒó¥¸Þqǽ`®Þ€Ð²Ÿ\žôáªRÞæÅK‘»;˜²£Zœèìê‡o1âµùÖ¢ïñY% AûÀŸ‘Sku'-Ù‰%ÕeO81î£Y¤”ÉZÁg5"…¢µTþŸ\uä;Ný9l’"Ì™ö†‡†é-€Ÿ «yåæù #Í߃ˆ©%\äš›1nvÙÜP©oäuÁÏöÍjvKêR²òÉWÍÞµ$äŒcòíAõõ5)X¤ªÊKsÒã«P+qdš7+$îVO®Mx@à•`~uêöç9ûT•»Ý°ñï÷«ÏÃÿáœ×ƒ9Çñ¯B;îV>H©¹VÙ¥õ¨ŽV¢>M›é@+𢬙IE·¹Õºg‹$p8lÿÚ4ê”r£„Óf˜õ3 Wnÿò4¹N2;'ØW‚©w6xvl/2ß NãSn†&õ$6Ù2ëÍ…z¬ ÄdŸÂ <߯–Ùn×â%æÐãh›eM‡P°AJ’  ‚GñŠvÂhÎ[&2…E ‘”¶L{µEwUuF¹Ïšã³îKñ·¼¢”€U”“„á ¤qÀ©t;eŽý¨õ^–gNF·~©aÅÛæ4úÔê”ÑØ¯qÁ $Ÿ^j zÕfuѫųKF°]Ú˜&*[wÈCŽ ’<"”„‚£“Éöõ4ºïÔƒÑ.Ï[ô¼ MÆðÑb}Å–îä+ïøm”€Ù>ù5Ó§: ˉ%+¿«l´í6B¥%|Í=~hv}};£4uÁÍ=ï&ý :û²Z<&B“€ÞÒ0¬)8>àçÓ­E§"_ºÇ¨äÍŽ%µlµ5!1”ï„—œÙäJ•‘„ðrr¿V[µÄˆúZŸ¸ix¦ín—m’˜¶K9Ú∜úe<>iS½H¾/XÉÕª ©Sa&ë{¯µ%°…m$‘‘ÁÆqÍh…l2‚‹µ´ÒÝÜþ##Z†TžÚinîÇ^Úí¨ÒVKÂcZm—§][| É}´ýò…Œ-X(ÏÞò)~•! Ö‹Wa-’6ª%ë,•7ú£F1§¶ä­I¸®RœƒÌ”€Пšx‰©dÀÑ·}&‹Rbìâ\³+agiOû;{îë'”qz%•­;mà„*U\¹Y¯/Y‹Ñö[=êݧOê×­¾$묋’ZÜ“»VܤG›¿1íg¶NÒ·&¬Vû=÷UÄš¤9á!I„œ6”¨dùÎ3‘žF'j¦¯LBF¨ÑëôØQÓ™ÿ¬WJi'Ê€•n9$äÜö­sSDÓS!OgCC™u‚VcÎ7W *Ü9ka VÞã {ÖŽ6ÔVµ¼ùwoóêÐέkzîßæJ4E²ÏMÞ›·Ùmõ›?T\_[imFBN9'¸äúwêî­›§§J†ÜD@¹8ó¡Q°Hˆˆ)Y'Ê3íVŒM×~F¢¸è¨—kú%¹)¹âèät¥Å•ê‚T±ŒŒÎj—Öýdþ‘éÝ_cºi ,»öì&¢ó·ÅJJf€A8Â0ဵä٧СFºŽÚyøš0´)×qîõ©;ýÙEéš“QNeÊßeqØž7œ…©`\ãËôYµýÙWSzëÙ¯dJÔ&"cï71å-%ÂÒ•¼ ààñì*Ѿ¢^ú]­YÔöFØya¥G“òvHeX%ŽAÊRAô pFAšé®±èý-ÔÛn¸ÒÝ)M©èÿi2c&üã‰]AO”©¼4”’H'Û]ukXîd˲'=3Ðz#\õ3SÂcEÆgБ$4ˆŸoPUÖB\R[\‡TFÜøj'$dÖΰôþÆ4¦…Ô–#h‡ªfÜĶ—³ÜĦß%K-íðÜYNä·ÉIãÄ9^è.®ÜôwQ¯úª-¢$È:rqµIp”:ËË+(ÞAÆì{ñÍ{¨ÚVÁ¬l:£@té­;.Õ,ÈX‘yzp’ K~d¤ `ž@'žô]X2ÊåÜçKm—¾’ké:«¦úsFÞôí´Ï€l÷Oôìi×6>€êñØnû‰Ö\ºÛžýúmŒÓèUøºÄfö¸×2 ­a_x©D’¬òjpý! “­ÑféÌk`Ö–Ùî®~¶qçW!Ä)x#8|0‘’¿¼00Ië §Gmû¢›Ÿ*ÆÛ©´Ýº8Á޵µÅ4BÊr €;GênˆË.g@ËèŸO­·éå¦l°ìÂÊÞ©“yB'ço»\mÛÆ9¹‡ ÖX޵é›%êS ȸ¥‰ ,å'œƒƒÈâ¥:ìzc\ˆ÷-uÒÈ—JÔDÅUÎ=å輪[(IÉÉ<…øà*¾éާþ…ëë6«ûÛ²Jd}›Åð¼\åݵXúàÕ[EãYÜê †éUÂóÕ)#§ñÄmЖÄÄNxJ’R•­iZÀI(Ú@ÂO¿5¾ôóI뮓t»VÙôü=-qÔš‰6i@ZË^}ÀZ˜23ßqœ †ÚzômÚ“¨÷¯è wúoL–¿Xãì9JÓœø_´ûùÆÚšë ÑÑ#Óûu¡Peé‹À»Æ» {ŠÜ>´ g—áÎã÷;sÀÚ§¡uÂÐ0Ô½cÔÝ¡£ÛµÛ7Á¾5%ÕLûBRÑ+^UµI˧ŒåíÈÛ´ií¥¿F['Q/Z& úôÍÖM½M¾úÛiÒ§VœÛÊö%²?½ŸAM“?H›ÛUÚt¶×®.ð)wÆî.-;RíÇ#VŒÇîŒçœÂ§uGí·ô£õBaÜ•;õ—Û3¿*pìð¶qýg}Þ¨º ³æ_š/¤ZKO鮟³yÑÖ[ÛŠ!—¨.×Âc9 +m*m, º’Bwà”‚N;ò1ËýK²BÓ}A¿X­ÒÓ2 9Î5ô¬+Äh!ÈàùHíS–º½f¼hK–êOXÕ#O´cZæµur ­3€kÚ•€éÂG®Id·õ Ñ@j½%@ÙÀ¾NûLI‹qN=mlRÊ T°0•æQ;³C³- éêYÿÿ$©=j»Œ‡N>BO§ûLjÙÓ{”ÍQúõ.¥•"kVylÉ€ä· Šed á ™ö}»œi{÷l^qáãýîüR_Õ˜Ó:p¾žè½IéÙ2„¹ÉÌ‘-iÁN('Ê RqÜO=ó è/>ÇC·Ñ] §¯6mÒV7­R¬…뮣—yC3šwá¶] Ø 0‚Ÿ0É8Vk=¤4VýïzÒë¥àj½‡S; ‚óªC2RÛ@9±YRå(y8É#5¼õ‹OjëU¤u¦Qµ-â×0™¹5xzq¤ò⓸䓡É8ÆjiÓ­a ­_¢=âÕ©"[ï/.ÿã :/?d’ê ™Ú¡Œ¹µ8'!<„žjt{ýÅ«,-!¢ôΜý&:oÒ¶´ZajM="jà¡eIeϳ’vçZF;d€IÓ:[MèM{՛曋©®njÙVø庴Çe>9 Z’‚ ‰Ê½}ŒsQHÿ¤%ÌužÓÔZr3‘,ðo·Ù£Ê-6Ë% H!B²|Ù'o8ŒSmƒ¬Éfשôî¥Ñìê /¨.®]UoTõÇv+Ê^ï#éIã„çËÎ=2r]’w.(=<é¬N®tÖê½3:w¨V7ýY!Å8ˆ’¼&žIIÎFw¡g“Øv¯5¶€²hˆjYk[._¦êÇmV·ÜÉ[1XW™iôólRsÞƒ<Þ£_:‘Õ]-2+ÚHFÓ©i6hóg–bEC$,%o,r¥lJsœ$bž¿LN£ÁÖº†Åh³Ïƒ2=ž3·¯tG&¼A{ÂWï¤mWÉù¨v³-Ù’f¿ÑŸ§­K¥õ~°¸Úc_ß±²†íÖÙSxÏHX's«*@ H ਓì*~î‡é­»«=6~Vž°·TFrêÈÄäÊf݉-© JÕ÷– ž8õ&¨Þ’u*N„‹{´K²DÔ:~ýG¹Û$:¦|D§ 8J”3ƒÜàÓ¨õ>7ÛU×Dh㥷:®ŽÌSŽ¥IR R‚ví)ì;ò{T&¬ZpžvËcPôÞˤºw­ÄûT7o3µˆÓú}׉%–’­åÔŒö(QN}hÊè·Oí·ù ã¦l°ìÂÊÞ¨“yB'ço»¸#×vùq’ P_¤'\$õaÛ?Ùôò4ëź÷†ÜϼòöÚ0@@ƒÜó[µX´ÎºD{–»élKƤf"c*çòôFÞ ûª[(IÉÉ<…øà*ÝQmTi2ZåCé?ÑwGõã¢`ß/’g̶,=!HijSò0êÂ~ùB#íHíçÏ8(ƒÒ­¬/ÔV›(–KÄ]¿2ÞCEØí…¨+žÅah㪾õDÝ:§zRlIe6kŠç~²7xÛ•![<-ƒoû£¾ã÷{sų¢ºˆÖý®–;†¦Ó¦Ïˆ´X"Û§}¦tc)'Å Qá…“Ïïnñ‘X‰fZól@æ•Ò=Gè…êñ£´ä}ê±LFV¼ÃðC #<ã vÏìÉ©î·èÞ€»u§?Ñ ,f­½ÍµßZÚê₵%ÎN2twçpíT?èïÖwºI"òU§¨"\ÃQÕ3ÀðÜeJR†¼Ÿ1ô‡®ôÑëgê[V¥²ªçtƒÕ ´,¥²NFâ´¤ãG5IØzžmÔ=(6ð½\Q;õÛ6–vª9Ùál;¿Üý÷½ÛŽd7¯Òðõó@^ì–&m³4txÒ¼tMB›CjÜ„xã=ø©Ìˆp’dϬ=>ÒJ飼-§ô† ±Ý6ÛX·Þ[’¹Ð·¡q!ÕùÀQQÏ›ÉØdÒ®¶è- lÖºc§ºwGC‰?Y¢ ܺ—×›zK¨B¼ó´d!eDäÿ©®£kM ª£Î“hé{v Ôçüw§·{uô%e[—±’„¥!G<@ŽÂœzÁÖ9ÚïXé­Qo³~¡›§£2Ôb%ý£.4áq.}ÄãœqƒÛ½  P•‘{kN’h6¡ë],擱iøÖ{j]Ó÷¯×h\ÙrÖåZ.•y•Æ1ÛÓi´ [½Dꦑ×ky¼ô¢0Õ“bøNÝcÞŸmèob^û8N7'ÊpVAÚ3žs×Zî¥ÐÚWM±£íVw¬,)—n‡íf’Ü®2Fã’¬¨’1œTI®E¡%ª ¹R~æsSX­A\ã?ZØãÓ“AJ½ª·CYå®·;Ä+k@—eHm„9*Z‚Gñ4UõútÚF®êœ}M)ÿEÓ˲8r@²@ãœ9úz)±ØËSGbO§TUfŽ‘Ønÿò4ä; í+‡.ƒ»¾/ÉÃý'þü¿'+šñ'WiQUý ÿO/ɤߗäâÓê=(qs]¥E¡éåùÒïËòpúN5± T­Ç°®Ü¢¯ú/ýù~Côûòüœ\ʶðMmqYPµÙ”U@Ý߉åù'ôŸûòüœdÙÚ³Z&/ƒž1]©E  ¬ïÄòü‡é?÷åù>wk©ßc¶Ê’m³©à:¡•:¥zçÖ¾ÆQ]L.aâÕïs¡„ °ê×¹ñì‚q€sô¯ïÅ}…¢´d7ñµ½gŒc<ó^‚ïæ¯°tQ8ýÇǬq@IÅ}…¢§ q»„dppkÐ }9>•ö ŠŽ<~ããî 8×è'€¯°4QÃ'Ú;$}ÐMy´ûsé_`(¨á÷ƒÄ'Èøÿ´wüëÌmŒsŠûEO¼=£¸øüŒœÁùè•ÂR3_`(£† nGÈ cOö«Â“ÿ+ŽþµõþŠŽy/~GÈ!»Oo|ö£‚ Gð=ëëíp»ÃÚ{$”œûóï^åX ŠúûE>ðöžãä T@áG¿?aJõÇÍhÎrNkì <>ò=£¸ùyñžÆ±R”}AöŠ8`ñä|}ÿªkД“Ÿ~=ëì pûÈöŽãä8àò¬R<¹8Å}¢Ž/Ü|d ŒwÅb§ÂsÇÒ¾ÁQG ‡ˆ}‡È[|•ÍðŲ ¹ÎåLvá'è3WHEÍ{«æ3/SFwKÙ² ×$bK‰ã„5ÜdêÇÐ×К*T+*Í¡‹Aé+ˆÒñ4曂˜vøÃʑʖ£Ýk?¼£êh§Ú*âBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙPyQt-gpl-5.5.1/examples/draganddrop/puzzle/puzzle.py0000755000076500000240000003006112613140041022610 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 random from PyQt5.QtCore import (pyqtSignal, QByteArray, QDataStream, QIODevice, QMimeData, QPoint, QRect, QSize, Qt) from PyQt5.QtGui import QDrag, QColor, QCursor, QIcon, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QFileDialog, QFrame, QHBoxLayout, QListView, QListWidget, QListWidgetItem, QMainWindow, QMessageBox, QSizePolicy, QWidget) import puzzle_rc class PuzzleWidget(QWidget): puzzleCompleted = pyqtSignal() def __init__(self, parent=None): super(PuzzleWidget, self).__init__(parent) self.piecePixmaps = [] self.pieceRects = [] self.pieceLocations = [] self.highlightedRect = QRect() self.inPlace = 0 self.setAcceptDrops(True) self.setMinimumSize(400, 400) self.setMaximumSize(400, 400) def clear(self): self.pieceLocations = [] self.piecePixmaps = [] self.pieceRects = [] self.highlightedRect = QRect() self.inPlace = 0 self.update() def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragLeaveEvent(self, event): updateRect = self.highlightedRect self.highlightedRect = QRect() self.update(updateRect) event.accept() def dragMoveEvent(self, event): updateRect = self.highlightedRect.united(self.targetSquare(event.pos())) if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: self.highlightedRect = self.targetSquare(event.pos()) event.setDropAction(Qt.MoveAction) event.accept() else: self.highlightedRect = QRect() event.ignore() self.update(updateRect) def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: pieceData = event.mimeData().data('image/x-puzzle-piece') dataStream = QDataStream(pieceData, QIODevice.ReadOnly) square = self.targetSquare(event.pos()) pixmap = QPixmap() location = QPoint() dataStream >> pixmap >> location self.pieceLocations.append(location) self.piecePixmaps.append(pixmap) self.pieceRects.append(square) self.hightlightedRect = QRect() self.update(square) event.setDropAction(Qt.MoveAction) event.accept() if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 if self.inPlace == 25: self.puzzleCompleted.emit() else: self.highlightedRect = QRect() event.ignore() def findPiece(self, pieceRect): try: return self.pieceRects.index(pieceRect) except ValueError: return -1 def mousePressEvent(self, event): square = self.targetSquare(event.pos()) found = self.findPiece(square) if found == -1: return location = self.pieceLocations[found] pixmap = self.piecePixmaps[found] del self.pieceLocations[found] del self.piecePixmaps[found] del self.pieceRects[found] if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace -= 1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - square.topLeft()) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) != Qt.MoveAction: self.pieceLocations.insert(found, location) self.piecePixmaps.insert(found, pixmap) self.pieceRects.insert(found, square) self.update(self.targetSquare(event.pos())) if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.fillRect(event.rect(), Qt.white) if self.highlightedRect.isValid(): painter.setBrush(QColor("#ffcccc")) painter.setPen(Qt.NoPen) painter.drawRect(self.highlightedRect.adjusted(0, 0, -1, -1)) for rect, pixmap in zip(self.pieceRects, self.piecePixmaps): painter.drawPixmap(rect, pixmap) painter.end() def targetSquare(self, position): return QRect(position.x() // 80 * 80, position.y() // 80 * 80, 80, 80) class PiecesList(QListWidget): def __init__(self, parent=None): super(PiecesList, self).__init__(parent) self.setDragEnabled(True) self.setViewMode(QListView.IconMode) self.setIconSize(QSize(60, 60)) self.setSpacing(10) self.setAcceptDrops(True) self.setDropIndicatorShown(True) def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragMoveEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.setDropAction(Qt.MoveAction) event.accept() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): pieceData = event.mimeData().data('image/x-puzzle-piece') dataStream = QDataStream(pieceData, QIODevice.ReadOnly) pixmap = QPixmap() location = QPoint() dataStream >> pixmap >> location self.addPiece(pixmap, location) event.setDropAction(Qt.MoveAction) event.accept() else: event.ignore() def addPiece(self, pixmap, location): pieceItem = QListWidgetItem(self) pieceItem.setIcon(QIcon(pixmap)) pieceItem.setData(Qt.UserRole, pixmap) pieceItem.setData(Qt.UserRole+1, location) pieceItem.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled) def startDrag(self, supportedActions): item = self.currentItem() itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) pixmap = QPixmap(item.data(Qt.UserRole)) location = item.data(Qt.UserRole+1) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) == Qt.MoveAction: if self.currentItem() is not None: self.takeItem(self.row(item)) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.puzzleImage = QPixmap() self.setupMenus() self.setupWidgets() self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) self.setWindowTitle("Puzzle") def openImage(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open Image", '', "Image Files (*.png *.jpg *.bmp)") if path: newImage = QPixmap() if not newImage.load(path): QMessageBox.warning(self, "Open Image", "The image file could not be loaded.", QMessageBox.Cancel) return self.puzzleImage = newImage self.setupPuzzle() def setCompleted(self): QMessageBox.information(self, "Puzzle Completed", "Congratulations! You have completed the puzzle!\nClick OK " "to start again.", QMessageBox.Ok) self.setupPuzzle() def setupPuzzle(self): size = min(self.puzzleImage.width(), self.puzzleImage.height()) self.puzzleImage = self.puzzleImage.copy( (self.puzzleImage.width() - size)/2, (self.puzzleImage.height() - size)/2, size, size).scaled(400, 400, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) self.piecesList.clear() for y in range(5): for x in range(5): pieceImage = self.puzzleImage.copy(x*80, y*80, 80, 80) self.piecesList.addPiece(pieceImage, QPoint(x,y)) random.seed(QCursor.pos().x() ^ QCursor.pos().y()) for i in range(self.piecesList.count()): if random.random() < 0.5: item = self.piecesList.takeItem(i) self.piecesList.insertItem(0, item) self.puzzleWidget.clear() def setupMenus(self): fileMenu = self.menuBar().addMenu("&File") openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") exitAction = fileMenu.addAction("E&xit") exitAction.setShortcut("Ctrl+Q") gameMenu = self.menuBar().addMenu("&Game") restartAction = gameMenu.addAction("&Restart") openAction.triggered.connect(self.openImage) exitAction.triggered.connect(QApplication.instance().quit) restartAction.triggered.connect(self.setupPuzzle) def setupWidgets(self): frame = QFrame() frameLayout = QHBoxLayout(frame) self.piecesList = PiecesList() self.puzzleWidget = PuzzleWidget() self.puzzleWidget.puzzleCompleted.connect(self.setCompleted, Qt.QueuedConnection) frameLayout.addWidget(self.piecesList) frameLayout.addWidget(self.puzzleWidget) self.setCentralWidget(frame) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.openImage(':/images/example.jpg') window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/draganddrop/puzzle/puzzle.qrc0000644000076500000240000000015712613140041022745 0ustar philstaff00000000000000 example.jpg PyQt-gpl-5.5.1/examples/draganddrop/puzzle/puzzle_rc.py0000644000076500000240000053140712613140041023303 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 17:21:42 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\xa6\x9e\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xe1\x00\x16\x45\x78\x69\x66\x00\x00\x4d\x4d\x00\ \x2a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x43\x00\ \x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\ \x08\x07\x07\x07\x07\x0f\x0b\x0b\x09\x0c\x11\x0f\x12\x12\x11\x0f\ \x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18\x21\x18\x1a\ \x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\ \xff\xdb\x00\x43\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\ \x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x01\xa8\x01\xa8\x03\x01\ \x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\ \x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\ \x06\x07\x02\x03\x08\x01\x09\xff\xc4\x00\x54\x10\x00\x01\x03\x03\ \x03\x02\x05\x01\x04\x06\x07\x01\x0d\x07\x02\x07\x01\x02\x03\x04\ \x00\x05\x11\x06\x12\x21\x07\x31\x13\x22\x41\x51\x61\x71\x14\x32\ \x81\x91\x08\x15\x23\x42\xa1\xb1\x16\x33\x52\x62\xc1\xd1\xf0\x24\ \x34\x37\x43\x63\x72\x74\x75\x82\x92\xb3\xb4\xe1\xf1\x17\x36\x53\ \x73\x94\xa2\xb2\x25\x93\x09\x44\x83\xa3\xc2\xd2\xe2\xff\xc4\x00\ \x1b\x01\x00\x02\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x03\x01\x02\x04\x05\x06\x07\xff\xc4\x00\x35\x11\x00\ \x02\x01\x02\x04\x02\x07\x07\x04\x03\x01\x01\x00\x00\x00\x00\x00\ \x01\x02\x03\x11\x04\x12\x21\x31\x13\x41\x05\x22\x51\x61\x71\xa1\ \xf0\x14\x32\x81\x91\xc1\xd1\xe1\x15\x23\xb1\xf1\x42\x52\x62\x63\ \x24\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xec\ \xba\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x2b\x15\x2d\ \x29\xee\x69\x33\xf3\xd9\x68\x72\xb1\x50\xda\x5b\x80\xae\x8a\x62\ \x9d\xa8\xe2\x45\x4e\xe7\x1d\x42\x13\xee\xa5\x00\x3f\x8d\x32\xcb\ \xea\x36\x9f\x8f\xfd\x65\xea\xdc\x93\x9c\x63\xed\x08\x38\xfe\x34\ \xa7\x88\xa6\xb9\x90\x9d\xf6\x26\xf4\x55\x7c\x7a\xa7\xa5\x87\x7d\ \x41\x6c\x07\xfe\x70\x9a\xdf\x13\xa9\x5a\x6e\x49\x09\x6a\xfb\x6c\ \x52\x89\xc6\xd1\x25\x19\xfe\x74\x7b\x44\x09\x27\x54\x53\x34\x5b\ \xec\x67\xd2\x14\x1c\x49\x07\x90\x41\xc8\x3f\x8d\x2f\x66\x6b\x2e\ \x76\x58\xab\xc6\xa4\x67\xb3\x22\xe2\xaa\x2b\x14\xad\x2a\xec\x6b\ \x2a\xb9\x21\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x73\x86\xb2\xeb\x1e\xa8\xb8\xf5\x36\xef\xa7\x34\ \xc4\xb6\xed\x36\xbb\x1b\xaa\x8f\x21\xef\x01\x0e\xbd\x21\xe4\xa8\ \xa5\x43\xce\x0a\x52\x9c\x85\x0e\x06\x70\x33\x9e\x46\x15\xc5\xea\ \x7e\xb2\x65\x7b\x9c\xb8\x35\x20\x7f\x65\xc8\xc8\x03\xff\x00\xb4\ \x03\x5c\xbc\x4f\x4b\xe1\xf0\xf5\x38\x72\xbd\xfb\x8c\x32\xe9\x0a\ \x4a\x4d\x6a\x74\x25\x15\x4b\x41\xeb\x1d\xd9\x18\xfb\x6d\xa2\x13\ \xff\x00\xfc\xa5\xa9\xbf\xe7\xba\x9f\xa0\xf5\x8a\xca\xe0\x02\x65\ \xb2\x7b\x07\xfe\x2c\xa5\xc0\x3f\x88\xfe\x55\x34\xfa\x63\x07\x3f\ \xf3\xb7\x8d\xcb\xc7\x1b\x46\x5c\xcb\x2e\x8a\x89\x41\xea\x3e\x8f\ \x97\x80\x2e\xc1\x85\x1f\xdd\x79\xa5\xa3\xf8\xe3\x1f\xc6\xa5\x31\ \xde\x6a\x44\x76\xe4\x30\xe2\x5d\x65\xd4\x05\xa1\x69\x39\x0a\x49\ \x19\x04\x1f\x6c\x56\xea\x55\xe9\x55\xf7\x24\x9f\x83\x34\x46\xa4\ \x27\xee\xbb\x9b\x28\xa2\x8a\x69\x70\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x82\x40\xa4\xb2\xa5\x21\ \xa4\x92\x54\x05\x00\x6f\x5b\x89\x48\xe4\xd3\x65\xc6\xef\x1e\x2b\ \x6a\x52\xdc\x4a\x42\x46\x49\x27\x00\x54\x1b\xa8\xbd\x4a\xb4\x69\ \x98\xab\x54\x99\x29\x2e\x81\x90\xd8\x57\x3f\x8f\xb5\x72\xfe\xbc\ \xea\x86\xa1\xd6\x4b\x5a\x23\xc8\xfb\x25\xb4\x28\x82\xbd\xdb\x1a\ \x1f\xff\x00\xb1\xac\xb5\x71\x0a\x2b\x41\xb4\xa8\x4e\xab\xd3\x62\ \xfc\xd7\xfd\x73\xd3\x3a\x7d\xb7\x52\x25\x89\x8f\x27\x23\xc3\x61\ \x5c\x67\xfe\x57\xf9\x57\x3d\x6b\x3f\xd2\x3b\x56\x5d\x5e\x72\x3d\ \x85\xb1\x11\xa3\x90\x3c\x24\xee\x5f\xe7\xc9\xfe\x55\x08\xfd\x59\ \x09\x4e\xf8\xd3\x9c\x2f\xa9\x47\x71\x79\xc2\x4a\x4a\x7d\xd0\x81\ \x82\xaf\xc7\x02\x9d\xed\xce\x6c\x7d\x30\xed\x16\xf8\xe9\x51\x48\ \x52\x8a\x9b\x09\x18\xc7\x0a\x3e\xde\xfc\xd6\x47\x5a\xfa\xda\xfe\ \x27\x42\x38\x18\x47\x72\x1d\x72\xbd\x75\x02\xf8\xe3\x92\x25\x49\ \x9c\x42\xb9\x25\xc5\x12\x79\xfa\xf3\x4c\x32\xe0\xea\x1f\x15\x49\ \x72\x44\x85\xb8\x39\x50\xdd\x8c\x55\xa1\x73\x2d\xcc\x94\xe1\x97\ \x36\x44\xc5\x92\x30\x96\x13\xb5\x94\x28\x0c\x60\xa8\x77\xfc\x68\ \x95\x0d\x05\xb5\xa1\x96\x5b\x0e\x60\x78\x8e\x78\x7e\x32\xd2\x3b\ \x0d\xbb\xbc\xb9\xf8\xc2\xaa\x63\x8a\x90\xd7\x84\x8b\x5c\xfd\x79\ \x15\x22\xa2\x5f\xd2\xb2\x82\xb7\xf7\x0e\xe0\x2b\x38\xad\x4e\x8b\ \xcb\x07\x2e\x4b\x71\xb2\x39\xf3\x13\x56\x14\xcb\x5c\xb1\x19\xc5\ \x38\xdb\xa5\xa6\x88\x23\xed\x6b\x28\x2a\xfa\x25\x38\x1f\xc2\xa1\ \xf7\x24\xca\x48\x52\xa3\xda\x9b\x71\x09\xc9\xf1\x1a\x6b\x79\xfc\ \x49\xcd\x69\x85\x77\x3e\x66\x5a\x98\x65\x05\x71\x5e\x98\xea\x3e\ \xb1\xd3\x52\x03\xb6\xeb\xcc\xa6\xb6\x8e\x52\x97\x0e\x0f\xd4\x76\ \x35\x73\x68\x5f\xd2\x96\xeb\x15\x48\x67\x51\xc3\x44\x94\x81\x8f\ \x15\xaf\x22\xfe\xa7\xd0\xfe\x55\xce\xab\x44\xa7\x3f\x75\xc5\x83\ \xe8\x40\xe0\xfc\x81\x5a\x3c\x05\x28\x12\x94\x20\x94\x9c\x29\x25\ \x38\x50\x3e\xc6\x99\x28\x42\x7b\x99\x1c\x7b\x8f\xa4\x7d\x29\xea\ \xee\x9e\xd6\x91\x3c\x5b\x5d\xc5\x2b\x71\x23\xcf\x1d\xd3\xb5\xd4\ \x7e\x1e\xa3\xe4\x55\xa3\x06\xe6\xc4\x84\x8d\xab\x15\xf2\x62\xd3\ \x32\xe9\x6a\x7d\x33\x6d\x8f\x3b\x15\xd6\xd5\x9d\xc8\x59\x49\x49\ \x1f\x35\x7b\xf4\xb7\xf4\x95\xbe\x59\x5c\x6a\xdf\xaa\x5b\x54\xf8\ \xe3\x00\x3f\x9c\x3a\x91\xf5\xec\x7f\x1f\xce\xa1\x67\x86\xda\xaf\ \x32\x8e\x0d\x6c\x77\xfa\x56\x14\x38\x35\x95\x55\xfd\x38\xea\x75\ \x83\x56\xc4\x43\xd6\x9b\x8b\x52\x38\xca\x9b\x27\x0e\x23\xea\x9e\ \xf5\x62\xc5\x98\xdb\xa9\x04\x28\x1c\xd3\x61\x51\x4f\x62\x82\xba\ \x2b\xc4\xa8\x1e\xd5\xed\x5c\x90\xa2\x8a\x28\x00\xa2\x8a\x28\x00\ \xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x03\ \x88\xa1\x7f\xbf\x27\x51\x3f\xe9\xa9\x3f\xf8\x87\x6a\x67\xa2\xac\ \x97\x2d\x65\xab\x5c\xb0\xda\x56\xd4\x76\xa1\xb4\x97\xae\x33\x5d\ \x41\x5a\x58\x4a\xb3\xb1\x09\x48\x23\x72\xd5\x82\x46\x48\x00\x02\ \x79\xed\x50\xc8\x5f\xef\xc9\xd4\x5f\xfa\x6a\x4f\xfe\x21\xda\xbe\ \xbf\x45\x38\x81\x1a\x5b\x51\x5c\xd6\x8f\xdb\xcc\xbf\x3e\x82\xb2\ \x39\x2d\xb4\x94\x21\x23\xe8\x30\xaf\xcc\xd7\x98\x8e\x12\x18\x9e\ \x91\x9a\xa8\xae\x97\xe0\xf3\x98\x6a\x4a\xad\x6c\xaf\x6d\x4f\x17\ \xa0\xf4\x3b\xb7\x77\x34\xb4\x3d\x51\x27\xfa\x42\xdb\x25\xdf\x09\ \xe2\x93\xb8\x71\x9f\x28\x48\x07\x1e\xa0\x1c\x8c\xf3\x55\xc5\xce\ \xd5\x3a\xdd\xac\xe0\x69\x59\x0d\x62\x74\xcb\x82\x21\xa4\x83\x94\ \xa4\x28\x15\x78\x9f\x29\x09\x1b\xa8\x44\xc9\x09\xea\xfe\x96\xbb\ \x20\xab\xed\x0e\x6a\x20\xd2\xd5\x9f\xdc\x78\x2d\x2b\x1f\x88\x35\ \x6e\x5f\x7f\x57\xc1\xfd\x22\xb4\xf8\x91\x6c\x6e\x63\xf7\x6b\x5b\ \xa2\x33\xeb\x5f\xfb\x89\xc8\xe1\xc2\xa7\x12\x92\x0e\x54\xb4\x38\ \x10\x48\x23\x84\x8e\xf5\x34\xb0\x58\x6c\x6c\x23\x52\x31\xcb\xad\ \x9a\x5c\xd1\xa1\x53\xa7\x5d\x5d\x2b\x59\xdb\xe0\x54\xfa\x96\xd2\ \xed\x8e\xf9\x2a\xd4\xf3\xa8\x75\x71\xd4\x12\x56\x80\x40\x39\x00\ \xff\x00\x8d\x74\x86\x8a\xff\x00\xdc\xdb\x27\xfd\x1f\x1f\xfe\xed\ \x35\x4e\xf5\x96\xe7\x6f\x91\xa8\x25\x5b\x9a\xb3\x35\x1e\x64\x77\ \x92\x5c\x9a\x97\x32\xa7\xc6\xce\xc5\x38\x18\xee\x3d\x4f\x6a\xb8\ \xb4\x57\xfe\xe6\xd9\x3f\xe8\xf8\xff\x00\xf7\x69\xab\xf4\x4d\x28\ \xd2\xc5\xd5\x84\x1d\xd2\xfb\xec\x3f\x05\x05\x0a\xd3\x8a\x1d\xe8\ \xa2\x8a\xf4\x67\x50\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x2b\x15\xa8\x24\x50\xb5\x84\x8c\xd3\x0e\xa0\xbd\x47\xb7\xc4\ \x75\xf7\xde\x4b\x6d\xb6\x92\xa5\xa9\x47\x01\x20\x7a\x9a\x1b\x49\ \x5d\x80\xa2\xef\x75\x66\x1b\x2a\x5b\x8e\x25\x21\x23\x24\x93\x80\ \x05\x73\xef\x58\x7a\xe7\x06\xd4\xd3\x90\xac\xce\x99\x32\xd4\x76\ \x25\x48\xe4\x0f\xa7\xf9\xd5\x67\xd7\x9e\xb6\xbd\x7a\x7d\xfb\x3d\ \x85\xe5\x26\x30\x25\x25\x40\xe0\xb8\x7d\xcf\xc7\xc7\xe7\x5c\xff\ \x00\x26\xe2\xec\xa5\xf8\x4d\x2d\x4b\x5a\xc1\x0e\xba\x4f\x27\xf1\ \xf4\x1f\x1e\xbf\x4a\xc7\x52\x72\x93\xb1\xb2\x8e\x19\x7b\xd5\x3e\ \x44\x9a\xf3\xa8\xaf\xda\x9a\xf6\xa5\xbc\xa3\x31\xe2\xb2\x50\xd2\ \x95\x96\xd2\x3d\x49\xf4\xc0\xf5\x39\xa5\xb6\xb6\xdc\x72\x4b\x5e\ \x1a\x05\xce\x43\x6a\xf0\xfc\x57\x13\xfb\x16\x95\xfd\x86\x9b\x1c\ \x13\xf8\x7c\x9c\x0e\x6a\x2b\x6b\x79\x0b\x3f\x66\x8e\x4e\xc1\xca\ \xd4\x14\x40\x5e\x3d\xc8\xf9\xf6\xfc\x39\xe6\x9f\x58\x9a\xb5\x25\ \x21\x95\x06\xe3\xb2\x48\x71\xf4\x80\x0a\x8f\xab\x4d\x8e\xc0\x7a\ \x9f\x4f\x55\x12\x6b\x1d\x48\xeb\xa9\xd5\xa4\xf4\xb4\x47\xf9\x0c\ \xb6\xc3\x98\x91\x21\x72\x5c\x3b\x9c\x77\x68\xf2\xa4\x0f\x75\x0f\ \xbd\xf4\x1c\x1f\x73\xda\x9a\xa7\xdc\xd2\x85\x15\xdc\xe6\xc5\xb7\ \x30\xac\xa9\x4d\xaf\x97\x1e\xe3\x8d\xc8\x4f\x20\x7b\x02\x31\xf1\ \x4f\x9a\x5b\xa7\xda\xe3\x5f\xa5\x0f\xdb\x63\x1b\x75\xa0\xf3\xf6\ \xf9\x0b\x2d\xa5\xcc\x71\x94\x03\xe6\x57\xd7\x18\xe3\x8c\x0a\xb7\ \xb4\x6f\x40\x74\x95\xad\x9c\xde\x19\x45\xe2\x6a\x80\x52\xe4\x3c\ \x54\xbe\x7e\x01\x38\x03\xd7\x9a\x5a\x69\x6e\x5e\x7d\x5d\x9f\xaf\ \x5e\x07\x3c\xc6\xd4\x53\x2e\x0e\x2a\x3d\x92\xdb\x74\xbb\xac\x79\ \x50\x0e\xe6\xa3\xa4\x7b\xe1\x18\x51\xfc\x54\x3b\xd4\x92\xdf\xa2\ \xfa\x9f\x7b\x86\xa7\x54\xf7\xea\xa6\x00\x4e\xe6\x63\xfe\xc7\x8e\ \xc3\x71\xee\x4f\x3e\xa4\x9f\x7a\xea\xdb\x5e\x9a\xb6\x5b\xe3\x08\ \xb0\x62\xb0\xcb\x09\x18\x21\x2d\xa5\x39\xf8\x24\x0a\x5e\xcd\x9e\ \x32\x54\x14\x94\x0c\x01\xe5\x18\xe1\x3f\x41\xda\xac\xa4\xff\x00\ \xc5\x5b\xcc\x53\xa9\x0f\xf2\xd7\xc9\x7a\xf8\x9c\x8f\xff\x00\xb1\ \xdd\x4a\x94\x87\x5c\x98\xea\xc9\x5e\x00\x49\x59\xc7\xb2\x92\x73\ \xc1\x1e\xc7\xbf\x15\xa9\xde\x96\xea\xa3\x35\x08\x4b\xc8\x44\x84\ \x8c\x07\x50\x3c\x30\xbc\x7a\xab\xe4\xe4\x8e\x7b\xe2\xbb\x18\x45\ \x6d\x2e\x15\x14\xa7\x80\x07\x22\xbc\x5c\x28\x0e\x0d\xaa\x6d\xa3\ \x9e\xd9\x19\x1f\x91\xa2\xf5\x3f\xd8\x15\x5a\x7f\xe9\xfc\x9c\x87\ \x0f\xa3\x77\xe9\x4a\x53\x6d\x86\xfc\x50\x77\x17\x0e\xed\xa3\x27\ \x03\x91\xdf\xde\x9b\xb5\x1f\x4c\x2f\xd1\xe6\xbb\x1e\x54\x34\xf8\ \x8d\x21\x4a\x0f\x25\x5c\x28\x63\x19\x3f\xc0\xd7\x65\x7d\x91\xb6\ \x50\x52\xde\xdc\x7c\x0e\xd4\x96\x65\xbe\xdf\x29\x59\x93\x1d\x0e\ \x12\x36\x92\x47\x04\x7c\xd5\x33\xd4\x5f\xe4\x4b\xa9\x4e\x5a\x38\ \xe8\x70\x94\xbd\x33\x32\x24\x77\xb7\x36\xb5\x2d\x04\x04\x92\x9f\ \x4e\x32\x3e\x79\xed\x4c\x13\x2d\x8e\x24\xa9\x21\xa2\x36\xf2\xb0\ \x7f\x70\x73\xeb\x5d\xe9\x73\xd1\xf6\x29\xb9\x58\x8e\x86\xdc\xc1\ \xf3\x84\x8c\x82\x7d\x73\x51\x7b\xd7\x49\x74\xfd\xc2\x21\x6f\xc3\ \x0d\x9f\xed\x36\x90\x0e\x7e\xbf\xeb\xbd\x32\x38\xca\x91\xdd\x5c\ \x54\xb0\xf4\x27\xb3\x68\xe3\x5d\x31\x7d\xbd\xe9\xa9\xad\xdc\xed\ \x53\x1f\x8c\xeb\x6a\xe0\xa1\x44\x11\x5d\x41\xd1\xff\x00\xd2\x59\ \xc9\x4f\xc7\xb4\xea\x86\x9b\x69\xd5\x00\x94\xca\x4f\x94\x28\xff\ \x00\x78\x76\xfc\xb1\x50\x0d\x7f\xd1\x5b\x8d\xad\x97\x8d\xb5\x84\ \xbd\x1c\x82\xaf\x10\xe4\xaf\xe3\x38\xaa\x66\xe3\x02\x6d\xb5\x4a\ \x6a\x53\x2a\x65\x7b\xb0\x9e\x31\xdb\xe6\xb5\xc6\xb4\x2b\xad\x37\ \xf3\x31\x55\xc2\x38\x6a\xf5\x5d\xa7\xd4\xfd\x2d\xa8\x63\xdc\xe3\ \x21\x68\x71\x2a\xdc\x32\x30\x73\x9a\x92\xb6\xad\xc2\xb9\x17\xf4\ \x56\xd6\x2e\x4b\xb0\x43\x87\x29\xf5\x19\x2c\x0f\x0d\x40\x9e\xe0\ \x76\x3f\x95\x75\x6d\xaa\x40\x75\x94\x9c\xe7\x22\x9f\x86\xa8\xe7\ \x16\xa5\xba\x30\xb4\xe2\xdc\x58\xbe\x8a\x28\xa7\x80\x51\x45\x14\ \x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\ \x01\xc4\x50\xbf\xdf\x93\xa8\xbf\xf4\xd4\x9f\xfc\x43\xb5\x7d\xfe\ \x8a\x72\xb7\xe9\x1d\x41\x01\x6a\xfd\xac\x4d\x41\x24\xed\x3e\x88\ \x71\x28\x71\x27\xf1\xdc\x7f\x23\x54\x24\x2f\xf7\xe4\xea\x2f\xfd\ \x35\x27\xff\x00\x10\xed\x4d\xf4\x06\xa3\x97\xa1\x75\x74\x9b\xdb\ \x11\x9c\x9b\x6d\xb8\x32\x96\xee\x71\x1b\x50\x0e\x12\x8c\xec\x75\ \xbc\xe0\x15\x00\x48\x29\x24\x64\x1e\xf9\x15\xe6\x69\xe2\xa1\x43\ \xa4\xa7\x9d\xd9\x3f\xc1\xe7\x70\xb5\x55\x2a\xf9\x9e\xda\x89\xcc\ \x77\x93\xd5\x8d\x2b\x01\x39\xf1\x91\xa9\x5b\x2a\x4f\xf7\x5b\xde\ \x55\xf9\x62\xad\x5d\x66\xfa\x15\xfa\x4c\xe8\x18\xe3\x1b\x9b\xb6\ \xdc\x14\xae\x7f\xb4\xdf\xff\x00\xf3\x4e\x70\xa1\x68\x79\x85\x8e\ \xb0\xdb\xa1\x4b\x9c\xe2\xa2\xa9\xd8\xde\x18\x3e\x5d\xfe\x55\xa8\ \x37\xc0\x0b\x3c\x85\x13\xd8\x66\xaa\x6b\x9e\xa2\xb8\xbf\xd4\xd8\ \x3a\xe5\x09\x42\x66\x41\x75\x61\x31\x9c\xc9\x42\x99\x5a\x3c\x35\ \x37\x9e\xe0\xed\xc6\x15\xee\x33\x83\xda\x9f\x1a\x94\xfa\x36\x30\ \xa5\x51\xee\xef\xf0\x34\xe9\x86\x8a\x4d\xde\xed\x3f\x80\xbf\xaa\ \xff\x00\xef\x85\x76\xff\x00\xe6\x27\xff\x00\xc1\x35\x7c\xe8\xaf\ \xfd\xcd\xb2\x7f\xd1\xf1\xff\x00\xee\xd3\x54\x46\xba\xd5\x16\xed\ \x4a\xb4\xc9\x63\x4e\xc6\xb7\xcd\x5a\x92\xb9\x12\x42\xc2\xdc\x73\ \x09\xc0\x4e\xed\xa0\xed\x1f\xe1\xda\xaf\x7d\x15\xff\x00\xb9\xb6\ \x4f\xfa\x3e\x3f\xfd\xda\x69\x7d\x14\xe1\x2c\x5d\x59\x42\x57\x4f\ \x5f\x9b\x1b\x83\x71\x75\xa6\xe2\xee\x98\xef\x45\x14\x57\xa3\x3a\ \x81\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\ \x01\x45\x14\x50\x01\x45\x14\x50\x01\x58\xb8\xa0\x91\x9a\xc8\x9c\ \x0c\xd3\x5d\xde\x62\x58\x69\x44\x9a\x00\x43\xa9\x6f\x71\xad\x90\ \x5e\x93\x25\xf4\x32\xd3\x48\x2a\x5a\xd4\x70\x12\x07\xad\x70\xef\ \x5f\xfa\xd5\x37\x53\x5c\xdd\xb4\xd9\xde\x5b\x76\xd6\xd7\x81\xb4\ \xff\x00\x5a\x7d\xcf\xbf\xf8\x54\x8b\xf4\xbb\xea\x7b\xcf\xcb\xfe\ \x89\x5a\x65\x1d\x88\x39\x98\xa4\x1f\xde\xfe\xc9\xf8\x1f\xcc\xfc\ \x57\x2d\x38\xe1\x5e\x48\x59\x28\x07\xef\x9e\xea\x3f\xe5\x4a\x6d\ \xcb\x51\x94\xd2\x5d\x66\x2e\x9d\x25\x4e\xba\xb4\xa9\xce\xff\x00\ \xd6\x63\x93\xf4\xa4\x65\xe2\xf1\x11\xd8\x18\x1c\xef\x56\x71\x91\ \xf2\x7d\xbf\x9d\x27\x2a\x5b\x9e\x44\x79\x53\xeb\x4a\xed\xd1\x5f\ \x98\xfb\x50\xe1\xb2\xe3\xae\xba\xb0\x94\xa1\x09\xdc\xa5\xab\xe9\ \x51\x95\x41\x5d\x8d\x52\x95\x59\x59\x7a\xee\x1d\x60\xb8\x86\x98\ \x53\x49\x71\x61\xa3\x80\xa0\x84\xf9\xdd\x3e\x80\x7b\x7b\x01\x5d\ \x1d\xd1\x7e\x8c\x49\x75\x11\xb5\x0e\xb5\x8e\x94\x24\x25\x2a\x85\ \x68\x71\x3e\x54\x27\xba\x4b\xa3\xf8\xec\xfc\x4d\x3b\xf4\x1f\xa3\ \x90\xb4\xc4\x78\xb7\xdd\x47\x19\x32\xef\x65\x21\xc6\x18\x58\x05\ \x11\x09\xf5\xc7\xef\x2f\xe4\xf6\xf4\xab\xb1\x5b\xce\xe5\xac\xa8\ \x1c\xe4\x93\xeb\x5c\xba\xb5\x54\xde\x9b\x1d\x88\x5e\x94\x72\xad\ \xff\x00\x83\xd8\xed\x04\x27\x03\x69\x38\xc7\x09\x09\x48\x00\x60\ \x00\x3d\x00\xa5\x71\xd8\x0b\xe3\x97\x08\xe0\xe0\x7f\x0c\xd6\x29\ \x42\x36\x6f\x70\x1c\x1c\x61\x03\xbf\xe3\x4b\x59\x5c\x82\x9d\xad\ \xa0\x32\x9f\xe3\x55\x8a\x11\x26\x2a\x62\x02\x8a\x7c\xe9\x43\x69\ \xfe\x35\xea\x9b\x82\x8e\x14\xe0\x51\xad\x68\x61\xc7\x55\xe6\x5a\ \x96\x47\xb9\xed\x5b\x5b\x80\x08\xc9\xc1\x1d\xfb\xd3\x92\xec\x42\ \x76\xdd\x98\x20\x42\xc7\x2b\x03\xf0\xcd\x6a\x75\x8b\x7a\xff\x00\ \xe1\x07\xce\x07\xf1\xa7\x06\xe3\x36\x8c\x27\x18\xc7\x7c\xf7\xac\ \x84\x66\x72\x41\x03\x8f\x8c\x54\xb8\xb6\x82\xe3\x42\x99\x86\x01\ \x01\xdc\xfb\xf3\x5a\x5d\x6d\xa2\x0e\xd1\xba\x9e\xdc\x8b\x1b\x61\ \x3e\x51\x8e\x7b\xd2\x65\x47\x61\x00\xed\x52\x47\xe3\x4b\x94\x4b\ \x29\x0c\xcb\x65\xac\x02\xa6\x17\x9f\x42\x38\xa4\xab\x8e\x82\xbd\ \xac\xad\x48\x57\x38\x0b\xe2\x9f\xd6\xc3\x7d\x82\xc2\x49\xe7\x93\ \x9a\x45\x2e\x39\xd8\x72\x90\xa0\x79\xc6\x29\x72\x80\xc5\x21\x96\ \x43\x44\x20\xb6\xea\x76\xa8\x8c\x13\x8e\x08\xaa\xbb\xab\x3d\x35\ \xb5\x6a\x48\x0f\xb8\xd3\x49\x8b\x3d\x00\x29\x0a\x1c\x03\x8f\xa5\ \x5b\x2a\x52\x9a\x05\xb2\x0a\xdb\xfe\xca\x8f\x3f\x81\xa4\x17\x08\ \xe8\x75\x1e\x4e\x47\x3b\x4f\xaa\x7e\x0d\x21\xe8\xf4\x1a\x9b\x5b\ \x1c\xc1\xd1\xb7\x17\xa5\xf5\x93\xb6\x7b\x92\x8c\x79\x28\x21\x0d\ \xa9\x47\x09\x74\x64\x91\xf8\xd7\x6c\xe8\x8b\x88\x93\x05\xa3\xbb\ \x9c\x73\x5c\xa7\xd7\x8d\x28\xb9\x50\x13\x77\x84\x16\x89\x71\x32\ \x49\x47\x7c\x03\xc6\x7d\xf1\xcd\x4d\xbf\x45\xce\xa0\xbf\x7d\xb4\ \x88\x97\x27\xf3\x3a\x2e\x10\xe1\x3d\xd6\x3d\x15\x5d\x2c\x35\x48\ \xc3\xaf\xdb\xb9\xc9\xc5\xd3\xb4\xb3\x9d\x4c\x85\x65\x35\x95\x22\ \xb7\xc8\x0e\xb4\x08\x39\xc8\xa5\xb5\xd2\x33\x05\x14\x51\x40\x05\ \x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x1c\ \x4b\x19\xb5\xb7\xd6\x6e\xa2\x25\xc4\x29\x04\xde\x64\x28\x05\x0c\ \x70\x5f\x74\x83\xf8\x82\x0f\xe3\x52\x2a\xe9\x7b\xbe\x88\xd2\xb7\ \x6b\xda\xaf\x57\x0b\x2b\x0f\x5c\x16\xda\x5a\x5b\xdb\x94\x92\xb4\ \xa7\x3b\x42\x80\x20\x2b\x19\xee\x73\xc7\x14\xba\x06\x9e\xb1\x41\ \xc7\xd8\xec\xf0\x19\x23\xf7\x92\xc2\x77\x7e\x78\xcd\x79\xcc\x5f\ \x42\xd4\xc4\x57\x95\x4c\xc9\x26\x71\xff\x00\x4c\x9b\x93\xeb\x68\ \x50\x9d\x2d\xbc\xea\xbd\x2d\x09\x76\xcd\x3f\x09\xeb\x8d\xad\x6e\ \xad\xd6\xe2\x2e\x32\xdc\x0c\x29\x44\x95\x06\xd4\x9c\x10\x92\xa3\ \x9c\x1c\x8c\x93\x8c\x66\xb7\x9d\x0b\xac\xef\x13\xdf\x9a\xab\x2a\ \x98\x32\x1d\x53\x8b\xf1\x16\x96\xc2\x4a\x89\x27\x85\x1c\xe3\x9a\ \xe8\x7c\x51\x5a\x5f\x43\xf1\x22\xa3\x5a\xab\x92\x5e\x0b\xee\x68\ \x58\x04\xe2\xa3\x39\x36\x91\x4a\x59\xfa\x41\x77\x72\x43\x6a\xba\ \xcf\x88\xc3\x19\x05\xc4\xb2\xa2\xb7\x31\xea\x06\x40\x00\xfc\xf3\ \x57\x3c\x56\x1a\x8b\x19\xa8\xcc\x20\x21\xa6\x90\x10\x84\x8f\x44\ \x81\x80\x2b\x65\x15\xbb\x09\x81\xa3\x84\x4f\x86\xb7\x34\xd1\xc3\ \xc2\x8f\xba\x14\x51\x45\x6c\x1e\x14\x51\x45\x00\x14\x51\x45\x00\ \x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x41\xed\ \x40\x1a\x64\xb8\x10\x82\x73\x54\xe7\x5e\xb5\xba\x74\xbe\x91\x9d\ \x3d\x0b\x1f\x68\xdb\xe1\xc7\x4f\xbb\x87\xb7\xe5\xdf\xf0\xab\x3e\ \xff\x00\x28\x33\x1d\x64\x9e\xc2\xb8\x63\xf4\xc3\xd6\x4b\x99\x7e\ \x6a\xc6\xc2\xce\xd8\x83\x2b\x19\xe0\xad\x5c\xff\x00\x01\x8a\x5d\ \x57\xb4\x49\x8c\x73\x4a\xcc\xa1\xaf\xf7\x17\xee\x57\x07\xdf\x7d\ \xd5\x2d\x6e\x28\xad\xe5\xa9\x59\x2a\x24\xe7\x14\xd5\xcb\x87\xbe\ \xd4\x0f\x5a\xcf\x03\x1e\x62\x08\x1c\xa8\xfb\x9a\x5f\x68\xb4\x4d\ \xba\x5d\x22\xdb\xd8\x6c\x87\x1f\x52\x52\x06\x39\x4a\x54\x47\x9b\ \x1f\x43\x9a\x9b\xa8\xab\xb2\xee\xf3\x7a\x1a\xad\x30\x24\xdc\xe7\ \x35\x02\x0b\x0b\x79\xe7\x94\x12\x86\xd0\x39\x51\xae\xbb\xe8\x2f\ \x4c\x2d\xda\x46\x0b\x77\x6b\x93\x2d\xc9\xbe\x38\x8c\xee\x23\x72\ \x63\x02\x3b\x27\xe7\xe6\xab\x7e\x94\x69\x64\xdb\x2e\x69\xf0\xda\ \x58\x25\xe2\xca\x1f\x18\x25\x48\xc9\x19\xcf\xf7\xb1\xc9\x1e\x99\ \xc5\x74\xbd\x81\x29\x6d\x01\xa0\x41\x09\x01\x28\x00\x76\x03\xd3\ \xe6\xb8\xf8\xac\x43\xa9\x53\x22\xd9\x1d\xbc\x3d\x0e\x05\x2c\xdf\ \xe4\xfc\x90\xe9\x17\x7b\x7e\x6f\xde\x23\x72\xb3\xef\x4a\xdb\xdc\ \xa3\xb8\x8e\x7d\x0f\xb5\x68\x27\x19\xdd\xd8\x9e\x00\xf5\xa5\x31\ \xb0\x52\x37\x77\xec\x71\x54\x48\xab\x62\x96\x93\x80\x0a\xb3\xf8\ \x73\x4a\xd9\x51\x24\x81\x80\x33\xdc\xd6\x90\xe2\x11\x8c\x10\x93\ \x8c\x01\x58\x3f\x71\x83\x17\xc8\xe3\xa9\x2b\x03\x24\x67\xb7\xd6\ \x98\xa2\x29\xdf\xb0\x71\x68\xa9\x59\x05\xc5\x76\xe7\x06\xb7\x15\ \x38\x94\xf0\xb7\x30\x3d\xd5\x4c\xc9\xbd\xc6\x43\x49\x77\x7a\x58\ \x4a\xf2\x12\x56\xa4\xa7\x77\xd3\x3e\x9f\x35\x9b\x77\x48\x4f\x63\ \xc2\xb8\x47\x77\x71\xc1\x28\x90\x0f\x3e\xdc\x1e\x7e\x95\x74\x43\ \x84\xbb\x07\x15\x2d\x47\x95\x1c\x8f\x92\x6b\x15\x2c\x2b\x92\x47\ \xe3\x5a\x54\xb5\x1e\x12\xb5\x29\x20\x8f\x29\xf4\xf9\xad\x98\xe3\ \xb8\x3e\xf8\xa9\xd4\x8b\x02\x9b\x4a\xb9\x3c\x67\x8c\x56\xa2\x10\ \x14\x46\x33\x8a\xcc\xa4\x02\x40\x04\x7f\x8d\x01\x04\x05\x64\x10\ \x31\xeb\xcd\x55\xa2\xcb\x43\x4a\x92\x7b\x14\x12\x0f\x6e\x2b\x5b\ \x9e\x22\x06\x52\x4a\x7e\x94\x92\xf7\x72\x8b\x05\x4d\xb2\xe3\xe8\ \xf1\x94\x37\x10\x55\xf7\x52\x06\x49\x3e\xc3\xe6\xab\xfb\xc7\x5a\ \x34\x55\xba\x77\xd8\x8d\xee\x33\xae\x83\x8d\xcd\xab\x2d\x9c\x77\ \xe7\xb1\x3f\x4c\xd2\x65\x24\x98\xd8\xd3\x94\xb6\x44\xf9\xf5\x13\ \xe5\x71\x00\xfc\x8a\x6f\x79\x18\x3b\x90\xa3\xf2\x3d\xe9\xb6\x26\ \xb5\xb2\x4e\x4b\x65\xb9\x0d\xa9\x2e\x63\x0b\x6d\xc0\xe2\x4e\x7b\ \x64\xa7\xb1\xfa\xd3\xa9\x53\x4b\x48\x52\x16\x30\xa1\xc0\x1e\xbe\ \xd4\xa7\x69\x6c\x5d\xc6\x51\xdd\x0c\x77\xc8\x2d\xca\x8a\xe2\x1c\ \x40\x29\x5a\x70\x7d\xf9\xae\x6c\x4c\xf9\x3d\x2e\xea\x4b\xae\xad\ \x0b\x30\x5e\x7b\x7a\xb6\x76\x29\x27\x9f\xc7\x06\xba\x8d\xf0\x52\ \xe8\x41\xfb\xa7\x3c\xd5\x1f\xd7\xdb\x2b\x52\x65\xc6\x75\x4d\x05\ \x78\x8a\x28\x73\x9f\xbb\xc7\x7f\xaf\x22\x99\x4e\xa6\x4d\xf6\x17\ \x2a\x0a\xad\xe2\xce\xa4\xd0\x37\xe8\xf7\x2b\x73\x0f\x32\xf2\x5c\ \x6d\xc4\x05\xa1\x60\xf0\xa4\x91\x90\x6a\x72\xca\xb7\x24\x57\x24\ \x7e\x8b\x5a\xad\xdf\xd4\xe2\xc3\x35\x64\x49\xb6\xaf\xc1\x04\xf1\ \xbd\xb2\x72\x93\x8f\xe1\x5d\x51\x68\x90\x1e\x61\x24\x1f\x4a\xec\ \xe1\xe6\xe5\x1b\x3d\xd1\xc2\xb3\x8b\x71\x63\x95\x14\x51\x4e\x24\ \x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xad\x52\xe4\xb1\x12\x33\x92\ \x64\xba\x96\x99\x6c\x65\x6b\x51\xe0\x0a\xac\x75\x96\xbb\xbe\x39\ \x6f\x79\xeb\x23\x48\xb6\x43\x1c\x22\x64\x84\x6e\x5b\x9f\x29\x49\ \xe0\x7e\x39\xab\xd3\xa7\x2a\x8e\xc8\x55\x5a\xd1\xa4\xaf\x22\xd3\ \xa2\xb9\xd7\x4f\x1d\x59\x76\x2e\x4a\x9b\xac\x2f\xc1\xb0\x09\xcb\ \x52\xd4\xd0\x3f\x20\x0e\x31\x4d\x37\x39\xda\xa1\x89\x6b\x42\x35\ \x56\xa4\xf0\xd2\x78\x3f\xac\x9c\xc9\x1f\x9d\x69\xf6\x29\xf6\x99\ \x3d\xbd\x7f\xa9\xd4\x14\x57\x34\xe9\xd9\xf7\xa9\x97\x86\x58\x91\ \xac\x35\x12\x59\x2a\xc1\x3f\xac\x5c\xe7\xdf\xd6\xae\xd8\x9a\x79\ \x2a\x88\x87\x06\xa3\xd4\x0a\x04\x72\x4c\xdc\xff\x00\x85\x2e\xae\ \x1e\x54\xd2\x6c\x75\x2c\x57\x11\xb4\x91\x29\xa2\xaa\x8b\x83\x53\ \x44\xf7\x3c\x2d\x49\x7d\x4b\x69\x38\xc0\x98\xaa\x7e\xd2\xf6\x49\ \x92\x62\x97\xe4\xea\x1b\xea\x82\xbe\xee\x66\x1f\xf1\x15\x33\xc3\ \x4a\x11\xcc\xd9\x58\x62\xf3\xcb\x2a\x44\xe6\x8a\x80\x6a\x06\x1c\ \x88\x97\x16\xdd\xf6\xf4\x94\xa0\x77\xfb\x59\xff\x00\x2a\xae\x9e\ \xbb\x5e\xfe\xd2\x42\x75\x25\xe4\x05\x13\x8f\xf6\xd5\xe3\xf9\xd5\ \xa1\x83\x9c\x95\xc8\x96\x36\x31\x76\xb1\xd0\x94\x55\x61\xa5\xde\ \x97\x2e\x33\x6b\x7e\xf7\x76\x52\x87\x0a\xff\x00\x6a\x3c\xfe\x75\ \x2c\x9b\x68\x71\x50\x8b\xac\xde\x2e\xc1\x5b\x72\x31\x2b\xff\x00\ \x2a\x5c\xf0\xf2\x83\x49\xf3\x2f\x0c\x4a\x9a\x6d\x2d\x89\x1d\x15\ \x59\xe6\xe2\x87\x0a\x55\x79\xba\x1d\xa7\x9f\xf6\xa5\x76\xa9\x6d\ \xb6\x1f\xda\x21\x87\x8d\xd2\xe3\x9c\x73\xfe\xd1\xff\x00\x95\x4d\ \x5c\x34\xa9\xab\xb0\xa5\x8a\x55\x1d\x92\x1f\xe8\xaa\xa3\x53\xdd\ \x27\x31\x70\x5a\x62\x5d\x2e\x49\x43\x67\x07\x32\x54\x3f\x95\x37\ \x45\xbb\x5d\x5e\x20\xae\xf5\x71\x47\xc7\xda\x57\xcf\xf1\xa6\x2c\ \x14\xda\x16\xf1\xd1\x4f\x62\xe8\xa2\xab\x58\xf3\xe4\x48\x8b\xe1\ \xa6\xef\x3c\x3a\x07\x72\xfa\xbb\xfe\x74\xa7\x4a\x1b\xdc\x9b\x83\ \x8c\xc9\x9f\x2c\xb4\x93\xc1\x2f\xa8\xff\x00\x3a\x89\x60\xe5\x15\ \x76\xc9\x8e\x32\x32\x76\x48\xb0\x68\xa4\x29\x85\xb5\x24\xaa\x64\ \xb3\xf3\xe2\x9a\x4d\x38\x21\xa8\xee\x2d\x13\xa4\x05\x01\xdb\xc5\ \xac\xf1\x83\x93\xb2\x34\xca\x79\x55\xd8\xef\x45\x42\xdd\xb9\xbc\ \xc3\x1e\x22\xe5\xc8\x23\x1f\xfc\x43\x4d\x92\x6f\xb7\x42\x3f\x64\ \xf3\xa0\x13\x80\x4b\x87\xfc\xeb\x4f\xb1\x4c\xcd\xed\xb0\xec\x2c\ \x7a\xc5\xc3\x84\x13\x50\x2b\x55\xfa\x73\x8b\xf0\xdf\x79\xcd\xde\ \x87\x79\xff\x00\x3a\x58\xfd\xe5\xf6\x9a\x59\x71\xd7\x31\x8e\x3c\ \xc6\x8f\x62\x99\x2b\x1b\x06\x27\xd7\x92\xd4\xdc\x45\x84\x9e\x4f\ \x15\xf3\x6b\xab\xd7\x73\x7a\xd7\xd7\x69\x7b\xf7\x03\x21\x49\x4a\ \xbb\x8d\xa0\xe3\x3f\xca\xba\xf7\xaf\x9a\xe5\xdb\x56\x91\xb9\x4b\ \x4c\x85\x25\xdf\x0c\xb2\xc8\xdc\x72\x5c\x5f\x03\xd7\xd0\x64\xfe\ \x15\xc3\xaf\x87\x97\x20\x4b\xdb\xbd\x0f\xa8\x80\x49\xc8\xcf\xa8\ \x3f\x35\x8e\xad\x2c\x95\x1b\x6c\xd3\x42\xa7\x11\x36\x8c\x18\x52\ \x1b\x21\xc5\x24\x2b\x61\xc2\x10\x7b\x13\xee\x6a\x61\xa1\xae\x2c\ \x5a\x1c\x17\x45\xbb\x99\x8f\x3d\xb5\x2b\x03\x2a\x4b\x7f\xbe\xad\ \xa7\x83\x9c\xf0\x3d\x93\xf3\x51\x34\xb6\xcb\xee\x14\xa1\xf4\x32\ \x94\x8e\x03\xb9\x1f\x91\xff\x00\x3a\xc9\x69\x58\x90\x19\x6d\x7e\ \x65\x00\x84\xed\x3b\x89\xf4\xc0\xc7\x72\x69\x53\x8e\x65\x63\x4d\ \x39\xe4\x95\xce\x83\xe9\xee\xa8\xb6\xb8\xd4\xdb\xf5\xc2\x5a\x21\ \x5a\xad\x8a\x6e\x34\x72\xf2\x82\x40\x51\xc8\x03\x8f\xbc\x48\xce\ \x71\xee\x6a\xc4\xb1\xf5\x8b\xa6\x71\x62\xa9\x52\xf5\x8c\x64\x3a\ \x15\xb4\x6c\x8c\xf2\xbc\xb8\xf8\x4f\xd6\xb9\xf3\xa9\x5a\x7d\xfb\ \x1f\x49\xed\x4c\xc8\x88\x62\xbe\x2e\x29\x53\xac\xf7\x53\x41\x4d\ \x28\xa4\x2c\xff\x00\x68\xe1\x5c\x7a\x57\x48\x69\x1d\x29\xa6\x62\ \x74\x6b\x4e\x6a\x18\xbd\x28\xd1\xd3\xdf\x7e\xd5\x1d\xc5\xbd\x36\ \x0f\x8c\x5c\x5a\xb0\x92\xb5\x12\x73\xc9\xe4\xfd\x6b\x9b\x43\x0b\ \x4e\xbd\xea\xa7\xa5\xdf\x91\xd5\xaf\x8a\x94\x1a\xa7\x65\xcb\xcc\ \xcd\x5d\x79\xe9\x0a\x48\x49\xd5\xce\x10\x3d\x45\xb6\x41\xff\x00\ \xfc\x2b\x79\xeb\xff\x00\x48\x1b\x69\x45\xad\x58\xb5\xab\x19\x03\ \xf5\x74\x80\x4e\x3e\xa8\xa5\x6b\xd3\x37\x35\x46\x2f\xda\xf4\x27\ \x4d\x59\x69\x20\x95\x3c\x34\xe3\x4d\x47\x4e\x3f\xe3\x5c\xe0\xfe\ \x15\x86\x97\xd0\xda\x9f\x53\x3b\x23\x68\xe8\xaa\x9b\x8a\x52\x99\ \x28\x89\x61\x6a\x62\x9a\x2a\xe4\x05\x10\x84\xa7\x3c\x1e\xc4\xd3\ \x61\x4a\x93\xf7\x5b\x7e\xbc\x05\xca\x53\x4a\xf2\xb2\x21\xd3\xfa\ \xf5\xa6\xee\x61\x5f\x65\xbc\x46\x8c\x8e\x4b\x2d\xa9\x45\x0a\x20\ \x76\xdc\x48\xc0\xcf\xe3\x50\xcd\x4d\xd6\x18\xec\xc4\x6a\x05\xaf\ \xec\xf2\x64\x2d\xb2\xe2\x9d\x66\x56\x52\xda\x8f\x60\x55\xce\x4f\ \xae\x33\xf9\x57\x4c\xb5\xd0\x2d\x2c\xfc\x4f\xff\x00\x54\xb5\x69\ \x29\x2f\x9e\xea\x8d\xa6\x58\x61\x39\xfa\x24\xe7\xf8\xd4\x23\x58\ \xfe\x8d\xbd\x3d\x5b\x6e\x97\x63\xdb\xad\xce\xf0\x12\xe2\x61\x48\ \x61\xbc\xfc\x14\xbc\xa4\xe7\xf0\xa1\x61\x23\x7b\xca\xfe\x45\xbd\ \xbe\xcb\x2c\x2d\xf0\xbf\xd4\xe5\xe8\x53\xb5\x05\xea\x43\x92\x25\ \xdd\xe6\xbc\xf3\xca\x09\x05\x2a\x5b\x99\x04\xf3\x84\x0e\x00\xfe\ \x35\x25\xd2\x36\x1b\xba\x56\xb5\xe9\xe7\xe7\xb5\x21\x0a\x53\xae\ \x34\x14\x42\xde\x4a\x78\x56\x10\x7b\xfd\x47\x20\xf7\x15\x36\x97\ \xfa\x39\x39\x6e\x7c\x48\xd2\xba\xb9\xb4\x38\x9f\x30\x4c\x5b\xb8\ \x6d\x60\xfc\x25\xc4\xa7\x3f\xf6\xab\x28\xed\xf5\x8f\x42\x38\x5d\ \x9a\x21\xdf\xdb\x53\x9b\xdb\x17\x38\x25\x2e\x03\xee\xdb\xec\x92\ \x77\x1e\x7b\x92\x3e\x2a\xb3\x84\x6f\xd5\x92\xfe\x0d\x74\x71\x6d\ \x25\x78\xb6\xfe\x7f\x92\xe6\xe8\xfb\xd7\x35\xd8\x76\xc8\x9a\xf4\ \xa6\xd2\x94\xad\x92\xf8\xc2\xdb\x1f\xbc\x09\x3d\xfb\x76\xf7\xc1\ \xf5\xa9\xf4\x37\x1a\x70\x16\xf2\x0a\x81\xc0\xf9\xaa\x3f\x44\xf5\ \xb7\x4a\x39\x31\xb6\x75\x3c\x59\xfa\x3e\x72\xbf\x64\xf3\xd2\x71\ \x22\x13\x85\x59\x00\x17\x50\x3c\x8a\xcf\x3e\x64\x8e\xc3\x35\x7a\ \xe9\x8f\xb2\xcc\xb6\x36\xfc\x07\xa3\x4d\x88\xb4\xe5\xa7\xe2\xba\ \x97\x5a\x23\xe1\x49\x24\x1a\xbc\x69\xb8\xa4\x99\x92\xb5\x45\x29\ \x39\x02\xdb\x59\xce\xd1\xc8\x1c\x83\xed\x5e\x38\x48\x8e\xa2\x91\ \xc2\x47\x62\x29\x7c\xb8\xae\x82\x0b\x0d\x93\xc7\x24\x72\x0f\xc0\ \xa6\x1b\xbc\xb6\xed\x30\x5f\x99\x73\x95\x1a\x04\x56\xbc\xcf\x3f\ \x2d\xd4\xb4\xda\x47\xae\x54\xa3\x81\x55\x9a\x48\x5c\x7a\xc5\x2b\ \xd6\x48\xb3\xee\x57\x93\x01\x85\xb8\xd4\x79\x6e\x62\x5b\xc9\x57\ \x99\x2d\x80\x30\x81\xf3\xef\xf5\xaa\xa6\xf3\xa6\xa2\xdb\x52\xe3\ \x51\xa0\x82\x86\xc3\x69\xf1\xc8\x1b\x54\x95\x03\xfb\x20\x7b\x93\ \x8e\x0e\x31\xeb\x93\x56\x4e\xb2\xeb\x66\x96\xfd\x64\xe4\x0d\x11\ \xa6\xae\x1a\xe6\xe4\xae\x10\xa6\x5b\x53\x51\x73\x93\x92\x9e\x0a\ \xdc\xfa\x80\x07\xcd\x56\xda\x9a\x47\x5c\x75\x5a\xcb\xb2\x20\xc4\ \xd3\xb1\x54\x42\x44\x3b\x7b\x68\x43\x89\xc7\x6c\xf2\xa7\x01\xe7\ \xd4\x8f\xa5\x27\x84\xe3\xab\x69\x78\x9d\x18\xe2\x22\xe2\xa2\xe0\ \xdf\xaf\x91\x00\x4d\xd6\x7e\x95\xbb\xae\x65\x86\x6a\xad\xab\x25\ \x47\xec\xce\x85\x2d\x97\x92\x48\xf2\xa9\x38\xc0\x3e\xb9\xf8\xe2\ \xac\xad\x17\xd6\x70\x63\xa8\xca\x97\x1a\x0a\x59\x29\x21\x97\xdf\ \xc2\x82\xbd\x52\x09\xfb\xc8\xf9\xef\xfe\x30\xe1\xd1\x4d\x5b\x31\ \xc3\x22\xe5\x32\x03\x2a\x51\xca\x97\x36\x7e\xe5\xe7\xe4\x24\x13\ \x4d\xd7\x6e\x99\xc2\xb4\x83\xf6\xfd\x5b\xa7\x99\x50\x24\x63\xc1\ \x90\xb1\xc7\xb1\x08\xe6\xaf\x25\x86\xa8\xac\xe5\xaf\x70\x88\xfb\ \x4c\x64\xf2\xc2\xf1\xec\x7a\x9d\x33\x03\xab\x5d\x3d\x9f\x01\x0e\ \x3f\xab\xad\x31\x5f\x48\x01\xc6\xde\x7b\x18\x38\xf4\x20\x1c\xd4\ \x27\xaa\x3a\xdb\x44\x4c\x99\x05\xcb\x76\xa7\xb4\xcf\x57\x8f\xe7\ \x4b\x6e\xe7\xcb\x82\x08\x39\x1d\x8f\x6c\xfc\xd5\x02\xde\x9a\x88\ \xe6\x1b\x85\x7f\xd2\xb3\xca\xd5\x81\xb5\xe5\x34\xbf\xa6\x1c\x48\ \xa5\x12\xf4\x5b\xb1\x54\x10\xf2\xa2\x30\xe9\x4e\x76\x3c\xd2\xdb\ \x03\xe8\xbc\x14\xfe\x39\xab\xc7\x07\x4e\x6f\xde\x66\x7f\x68\x9c\ \x75\xd1\x5f\xc7\x99\x2f\xe9\xee\xa9\x66\xc1\xd4\x86\x1c\x72\x73\ \x02\x33\xf9\x61\xe7\x3c\x51\x82\x41\xf2\xab\xfc\x3f\x1a\xee\x1d\ \x01\xa8\x63\xce\x82\xd2\x9a\x90\xd3\xc9\x20\x79\x9b\x58\x50\xfc\ \xc5\x7c\xd5\x99\x62\x79\xb5\x3e\x9f\x0c\x78\x91\xd0\x97\x57\xb5\ \x5b\xb0\x82\x42\x42\x81\x1e\x9b\x88\x1f\x88\xab\x07\xf4\x69\x9d\ \x76\x67\x5f\xc8\x86\x8b\xbc\xf8\xd1\xd5\x05\xc5\xac\x32\xfa\x93\ \x9c\x14\xe3\xf8\xd6\xa7\x18\xc1\xe7\x83\xd0\xe6\xe2\x61\x38\xa7\ \x37\xc8\xfa\x4e\xc3\x81\x69\x04\x73\x5b\x6a\x9c\xd3\x91\xe5\x49\ \x8c\x8c\xea\x5b\xf8\x3f\x13\x8f\xf9\x54\xda\x0e\x9e\x5b\xd1\xd2\ \xe2\xb5\x0e\xa2\xce\x39\xc4\xdf\x5f\xca\xb7\xca\x8b\x8c\x54\xbb\ \x4c\x14\xf1\x3c\x47\x64\x89\x6d\x15\x54\xdd\xed\x57\x25\x5c\xd6\ \xc4\x2d\x4d\xa9\x0e\x0f\x00\x4f\x56\x0f\xe5\x4a\x22\xe9\x1b\xf3\ \xa8\x0a\x5e\xaa\xd4\x88\x2a\xec\x3f\x58\xab\xfc\xa9\x8f\x0a\xd2\ \xbb\x65\x16\x32\xee\xca\x2d\x96\x75\x15\x59\x4b\xd2\x17\xe6\xdb\ \xcb\x5a\xbb\x51\x9e\x7d\x6e\x0a\xed\x45\x0b\x0a\xde\xd2\x40\xf1\ \x8d\x6f\x06\x38\x5c\xae\x0c\x6a\x6d\x6e\xbb\x0a\x9c\x3f\xab\xed\ \x8a\x49\x90\x9c\xe0\x3c\xf7\x70\x9f\xa0\xff\x00\x3a\x70\xea\x0d\ \xae\x1c\xcb\x0a\xc3\xcd\xa5\x28\x64\x0c\x01\xc6\x38\xff\x00\xca\ \xa0\x7d\x38\x75\x4e\xbb\xfa\xc7\x0a\x2f\x4d\x92\xe3\xab\x23\xb9\ \xca\x8f\xf9\x54\xff\x00\xa8\x72\x54\xce\x9b\x75\x29\x04\xad\xc1\ \x80\x07\xae\x69\xd1\xa5\xc3\x9c\x2d\xcc\x44\x6a\xf1\x69\xcd\xcb\ \xd7\x61\x4d\x4a\xb9\x94\xb1\xf6\x68\x00\x25\xb1\x91\x90\x3b\xff\ \x00\xae\x29\xad\xc4\xb8\xf8\x52\x54\xf2\x89\x58\xed\x9e\xd5\x25\ \xb0\xe8\xc9\xd3\x50\x1d\x92\x4b\x49\x56\x49\x1d\x8d\x49\x5a\xd0\ \x30\x83\x61\x2a\x52\xc3\x87\x80\x73\xeb\xdf\xfc\x6b\x7b\x92\x5b\ \x98\xd4\x5b\xd8\xae\x2d\xd1\x56\xca\xd0\x5a\xc1\x5e\xf1\x91\xeb\ \xf3\x57\x93\x13\x1c\x85\xa5\x5a\x0f\x0f\xda\x94\x0e\xff\x00\xe3\ \x51\x3b\x46\x95\x8b\x6c\xbb\x89\x13\x1c\x2b\x6c\x72\x02\xbb\x8a\ \x76\xba\xca\x55\xc2\x50\x66\x33\x79\x69\x3c\x24\x01\xc7\xa1\xaa\ \x4e\x39\xda\x5c\x8b\xc2\x4e\x09\xbe\x7b\x09\x6d\xb1\x5c\x9d\x39\ \x29\x09\x27\x72\xc1\x51\x1d\xbf\xd7\x61\x53\x67\x9c\x6e\x14\x14\ \x30\xd8\x19\x09\xc7\xe5\xcd\x23\xb3\x47\x6a\xd9\x10\x3a\xf7\x2e\ \xa8\x6e\x38\xa6\xdd\x43\x73\x11\xd9\x5b\xce\x2b\xce\x7e\xe8\x3f\ \xeb\xe9\x48\x95\xea\xce\xdc\x90\xf8\x7e\xcc\x2f\xcd\x91\xcd\x67\ \x3b\x9f\xb3\x36\xac\x2b\x39\x5e\x2a\x22\x8b\x72\x9e\x06\x4e\x00\ \x09\x38\xa5\xcf\xac\xbc\xa5\xbe\xbc\x92\xbe\xc0\x0e\xde\xd4\xe7\ \x69\x0d\xa2\xd8\xa6\xca\x48\x52\xff\x00\xb5\x5a\xd1\x91\xea\x6b\ \xd3\xb3\x4c\x39\x6d\xef\x50\xf0\xd5\x81\x92\x7b\xfc\xd5\x9b\x68\ \x98\x14\x03\x2a\xe5\x04\x00\x2a\xa3\x42\x36\xad\x6d\xf2\x36\x92\ \x47\xc5\x4a\xf4\xa5\xd4\x2b\x11\x9c\xfb\xc3\xee\x92\x3b\x0a\x55\ \x6a\x6a\x71\xb0\xda\x35\x1c\x25\x71\xfb\x51\xdb\x8b\x2f\x2a\x53\ \x5f\x71\x5f\x7b\x15\xb3\x4d\x4c\xd8\x55\x15\x67\x85\x0c\x27\x26\ \x9c\x58\x7d\x32\x1a\x2c\x48\x39\x49\x1c\x1a\x61\xb9\x40\x72\x04\ \x8f\x19\xbc\xa9\xb1\xca\x7e\x94\x98\x3c\xf1\xe1\xcf\x71\xd3\x59\ \x25\xc4\x86\xc4\x7f\x54\x41\x72\x2d\xc1\xd5\x3a\x83\xb1\x67\x8c\ \xfe\x54\xdf\x15\x95\xa8\x61\xb6\x54\x46\x78\xe2\xa6\xaa\x90\xcd\ \xdf\xc3\x62\x42\x02\xd4\x93\xdc\x8a\x76\x8f\x06\x2b\x0d\x84\x86\ \x86\x3b\x76\xa6\xba\xb9\x12\xcc\xb5\x14\xa9\x67\x6d\xc5\xe8\x57\ \x2e\x27\x0a\x2a\xd8\xa6\xd5\xee\x46\x31\x53\x2e\x9d\xba\x56\xcb\ \x9b\xc8\x52\x87\xaf\xad\x3a\x49\xb7\x45\x90\x8c\x29\xa4\x80\x07\ \xa0\xa4\x76\x9b\x69\xb5\x4f\x53\x8c\x92\x50\xaf\x4c\xd2\xea\x55\ \x8d\x48\x35\xcc\x6d\x3a\x52\xa7\x35\x2e\x43\x9d\xfe\x42\xdb\x65\ \x2d\x20\x94\x95\x1f\x6a\x65\x53\x45\x63\x0a\x51\x27\xd4\x9f\x6a\ \x77\xbe\xa3\xc7\x61\x0e\xa3\x38\x4f\x71\x8a\x68\x79\xd0\xd4\x72\ \xe6\x4f\x94\x55\x70\xfa\x41\x58\x9c\x46\xb3\x77\x19\xef\x69\xd8\ \x50\xd0\x18\x4e\x79\xad\x0b\x18\x40\x4f\x6a\xf2\x53\xee\x4a\x90\ \x83\xb3\xcb\xef\x5b\x1e\x42\x8a\x02\xb9\xad\x88\xc6\xcd\x24\x61\ \xf6\xdc\xc1\x27\x38\xa5\x57\xa7\x52\x88\xa4\x9e\x4e\x31\x9a\xd0\ \xa6\x96\xe2\x40\x1c\x1e\x79\xf6\xa6\x9b\xcc\x97\x50\xd3\x8d\xad\ \x5b\x86\x3f\x2a\x3b\xc1\x1c\xc9\xfa\x59\x5c\x40\xb7\xc0\x88\x92\ \x37\x39\x21\xc7\x0f\xd1\x29\x03\xfc\x4d\x73\xf5\xa6\x73\xd6\xc7\ \x94\xbf\x05\xb9\x0c\xba\x8d\xae\x32\xe8\x3b\x56\x3d\xc1\x07\x29\ \x50\xee\x14\x39\x1f\x98\x36\xb7\xe9\x44\xfa\xdf\xd4\x90\x93\xce\ \x13\x18\xe3\x27\x8e\x56\xac\xff\x00\x85\x56\xf6\x6b\x63\x73\x90\ \xe9\x5b\xa1\x88\x8c\x00\x5e\x90\xae\x71\xf0\x91\xea\x49\xc0\x03\ \xdc\xd7\x9f\xad\x34\xdb\x6c\xee\xe0\xe2\xd5\x35\x61\xa9\x48\x53\ \xee\x2d\x6d\x78\xcb\x27\x24\xf8\x87\x25\x23\xdc\xab\xfc\x6b\xa0\ \xbf\x47\x6e\x9b\x08\x52\x60\x5f\xaf\xe9\x30\xe6\x4d\x4f\x8f\x6a\ \x74\x29\x0e\x61\xb0\x33\xb9\x23\x90\x95\xe7\xbe\x79\x03\x18\x1d\ \xea\x98\xb2\xfd\x9e\xe7\xa9\x20\xdb\x62\xb1\xe0\x41\x5c\x96\xfc\ \x64\xf7\x51\x40\x50\xce\x4f\xa9\xc6\x4e\x3d\xea\xea\x8f\xac\xda\ \xd1\x70\x0e\x54\x1e\x66\x14\x99\x0a\xb3\xb6\x71\x95\x87\x37\x24\ \x10\x3b\x8c\xa4\x83\xed\xd8\xf1\x58\x31\x75\x5a\xb4\x17\x33\xa3\ \x87\xa4\x9a\x73\xec\x1b\x3a\xfb\x0d\x85\xd8\xde\x8e\x2e\x6f\xcd\ \xb9\xc8\x9e\x97\x59\x65\xc0\x54\xea\x90\xda\x56\x16\xa3\x8c\x01\ \x9d\xd9\xc6\x2b\xa6\x3a\x57\x32\x72\x3f\x46\x3d\x11\x2e\xdb\x2b\ \x6d\xc9\xf8\x0d\xc2\x88\xe1\x20\x21\x95\x6e\x50\x53\x87\x3c\x1d\ \x88\x42\x95\x8f\x52\x90\x3d\x6b\x8a\x65\x5d\xa6\x4e\xb9\xbb\x73\ \x9c\xf1\x7a\x5b\xe7\xce\xbc\xf0\x91\xe8\x84\x7c\x0f\x7f\x53\xcd\ \x5e\x5f\xa2\x9e\xb9\xd4\x72\xaf\xb6\xde\x96\x48\x98\xda\xac\x66\ \x3d\xc1\xdb\x7b\x65\xa1\xe2\xb6\xe2\x99\x70\x86\xf7\x7a\xa4\x6e\ \x71\x40\x77\xe7\xd8\x0a\xa6\x0d\x3a\x34\xf8\x6f\x7f\xa9\xb3\x15\ \x85\x75\x12\xaa\xbe\x3e\x08\x8d\xeb\x4b\xf5\xe7\x51\xea\x65\x68\ \xab\x5c\xe9\x6b\xb4\xdb\x1d\x52\x56\x95\xbe\xa5\x97\x17\xb8\x95\ \x12\xa3\xfd\xe5\x12\x71\x8e\x49\xf8\xae\xa0\xfd\x16\xf4\x6c\x3d\ \x2d\xa6\xee\xa2\x3c\xc7\x25\x7d\xbd\xd6\x9c\x74\xab\x18\xdc\x94\ \x91\xc1\xc7\xb1\x19\x19\x3d\xbe\x6a\xa7\xe8\xc6\x86\x5c\x7b\xc5\ \xd2\xe7\x75\x28\x56\xfb\x83\xaa\x69\x18\xc1\x27\x71\xe4\xfb\xd7\ \x46\x58\xa5\xb7\x6c\x6d\xdd\x8c\xa5\x48\x59\x05\x5b\x4e\xdc\x60\ \x55\xa8\x54\xd5\xf6\x15\xc6\xc5\x65\xca\xb7\x26\x21\x09\x00\x24\ \x0c\x01\xd8\x0a\x61\xd7\x36\xbf\xd6\x76\x25\xc7\x0f\x25\x94\xa5\ \x5b\xca\x89\xf5\xec\x3f\x9d\x2d\xb5\xde\xed\xd7\x01\xfe\xcf\x21\ \x25\x49\x4e\x54\x92\x7e\xef\xbf\x34\xcb\xad\xf5\x7e\x9b\xb4\x5a\ \xc8\x9f\x72\x88\x43\x8e\x04\x14\x07\x02\x94\x38\x27\x38\x1f\x4a\ \xd9\x2b\x38\x9c\xc8\x29\x46\x6a\xcb\x52\xab\xba\xe8\x70\xb0\xb5\ \x26\x7b\x4e\x10\x09\x03\x38\x22\xa3\xb2\xad\xf7\xdb\x36\xf4\xb5\ \x39\xd4\xb2\xa1\x85\xb4\xe8\xf1\x59\x58\xf6\x29\x3c\x54\x86\x67\ \x51\x34\xa4\x97\x1e\x16\xf9\xc9\x71\x0d\xed\x4a\xd6\xb6\x54\x13\ \xb8\x8e\xd9\xc5\x37\xa2\xe8\xc4\xf5\xb6\x94\x2f\xf6\x4e\x61\x4d\ \xba\x9f\x32\x01\xf6\xcf\x6a\xe0\xe2\x28\xc2\x2f\xaa\xf5\x3d\x3e\ \x1a\xad\x67\x1e\xba\xba\xef\x43\x0c\x0b\x2d\xa9\x3a\x8a\x35\xfa\ \xee\xd3\x4e\xda\x0b\x6e\xc3\x9f\x1f\x68\x71\xb6\xdb\x75\xb5\x23\ \xc4\x52\x8f\x2a\x61\x0a\xd8\xa2\x95\x65\x48\xfb\xc0\xe1\x26\x90\ \xf5\x0b\xa3\x5a\x83\x4f\x6b\xbd\x29\x2f\x4a\x5b\x2d\x57\x18\xc6\ \xdb\x1a\x1b\xac\x6d\x42\x19\x93\x21\xa5\x2c\x6e\x52\x0e\x12\x41\ \x6f\xc3\xca\x8f\x72\x3d\xcd\x3b\x5f\x18\x91\x15\xf4\xcc\x8c\xd9\ \x4a\xe3\xbc\x8f\xb5\x33\xb7\xc8\xfb\x64\xf9\x92\xa1\xd8\x82\x32\ \x3f\x1a\x84\xcc\xb5\x6a\x4b\xe7\x56\x1b\xd1\xb6\xdd\x47\x31\xb8\ \x3a\x6e\x28\x85\x05\xd7\xdd\x50\x54\x44\x8c\x2d\x4d\x82\x0f\xed\ \x0a\x72\x90\x14\x79\xda\x84\x03\xda\x9f\x43\x13\xc1\xa4\xe3\x6d\ \x79\x11\x53\x09\x2a\xf5\xd4\xd4\xec\xac\xef\x7e\x49\x78\x6b\xcc\ \xd7\xfa\x58\x68\x7b\xdc\x58\x2c\x6a\x99\x76\x0b\x0e\x98\x43\x6d\ \xa5\xb5\xb5\x6c\x94\xa4\x07\x15\x9e\x49\x09\x01\x24\xd5\x27\x63\ \x96\x2d\xa1\x6b\xbe\x59\xbf\x58\x21\x6c\xe5\xa5\x4b\x74\xb8\xda\ \x37\x00\x42\xf0\x49\x1d\xb2\x41\xae\xc0\x99\xd3\x5b\xc5\xe6\xd4\ \x22\xea\x0e\xa8\x6a\x8b\x8b\x4a\x00\xa9\x95\x29\x2a\x68\xe3\xdc\ \x2b\x39\xfa\xd4\x1f\x48\xf4\xbe\xd5\x77\xd6\x97\x3e\x9e\xdd\xe7\ \x06\x95\x11\xd6\x2e\x4c\xc8\x6e\x30\x59\xb8\x42\x42\x90\x57\x1d\ \x63\x38\x41\x0a\xd8\x42\x87\x23\x72\xc7\x20\xe0\x68\x86\x2a\x4e\ \x69\x49\x68\xfc\x0c\xfe\xcf\x08\x53\x94\xa3\x52\xed\x6f\x64\xf6\ \xbe\xfa\x92\x3f\xd1\xe3\x47\xdc\xa5\xf4\x65\x77\x99\xb0\x15\x6f\ \xfb\x52\xde\x75\x95\x38\x80\x93\x21\x92\xac\xb6\xbc\x0c\x28\x8c\ \x64\x61\x5c\x60\x0c\x0e\x73\x49\x05\x92\xfb\x36\x49\x65\x0f\xab\ \xc3\xf4\x4b\x63\x6a\x53\xf8\x0e\xd5\xd2\x5a\xa9\x0d\x33\xa5\xa5\ \xc5\x8e\x03\x09\x43\x29\x69\x09\x6d\x20\x04\x0e\x00\x00\x76\x03\ \x15\x54\xbd\x74\xb2\x59\xa3\x78\x77\x3b\xa4\x58\x61\x47\xfe\x19\ \xc0\xd0\x24\x9f\xae\x7b\xd5\x71\x58\x58\x3b\x5f\xe2\x27\x05\x8d\ \xa9\x79\x49\x2b\xf6\x11\x46\xfa\x71\x31\xe4\x95\xc9\x96\x1a\x3e\ \x98\x19\x22\x91\x5d\x3a\x57\x1a\x4c\x55\xb0\xb7\x83\x83\x9c\xee\ \x4f\x04\xff\x00\x85\x4a\x5c\xd4\x76\x69\x33\x95\x12\xdd\x77\x80\ \xf3\xa1\x39\x29\x6a\x58\x0b\x4e\x31\xdc\x13\xf3\x5b\x58\xbd\x2e\ \x3a\x83\x72\x81\x2d\x93\x8f\x10\x8e\x47\xf9\x8a\xe7\xba\x34\xe0\ \xce\x97\xb5\xe2\x9a\xbd\xfc\x8e\x4b\xea\x97\x4a\x2e\x3a\x6a\x73\ \x92\x23\xa3\xed\x76\xe2\x3c\x4c\x8e\x16\x9c\xf7\xc8\x3e\xdc\x57\ \xba\x6e\xf0\xd4\xbd\x37\x0d\x32\x5e\x54\x79\x70\x52\xa6\x16\xe8\ \x51\x04\x24\x0f\x22\xbe\xa3\x20\x11\xf1\x5d\x77\x7c\x81\x0e\xed\ \x05\x71\xdd\x69\x0e\xb6\xb6\x94\x9d\x8b\x19\x05\x24\x60\xe3\xda\ \xb8\xb3\x5f\xe9\xa7\xb4\xd5\xce\xe5\x6e\x6d\x2e\x06\xdb\x7c\xa9\ \x0a\x27\x3b\x90\xac\x81\xf9\x1c\x8a\xd9\x4e\xac\xa7\x68\x37\xe0\ \xcc\x55\x14\x35\xaa\xa3\xe2\xbe\xa6\xfb\xab\xea\xbf\xd9\xa5\xdd\ \x1b\x43\x3f\x6c\x84\xe8\x66\x61\x61\x21\x28\x77\x23\x87\x00\x1d\ \xb3\x8c\x11\xee\x33\xeb\x4a\xba\x04\x89\x1f\xd3\x49\xd7\x16\xdb\ \x26\x3b\x50\xcb\x4a\x5f\xa6\xf5\xa8\x6d\x4f\xd4\xe0\x9f\xc2\x99\ \xfa\x7a\x5e\x8b\xd3\xfd\x71\x74\x4a\x72\x98\xa9\x83\x82\x7f\xb4\ \xb7\x4a\x71\xf9\x13\x56\x1f\x46\x6d\x42\x1c\x38\xf6\xc4\xba\x16\ \xea\xdc\xfb\x44\x8c\x0e\x02\x88\x18\x4f\xe0\x38\xfc\xeb\xaa\xe3\ \x9d\x46\x9c\x77\xd8\xe0\x62\x6b\x7e\xcb\x4f\x99\xd4\xba\x11\x25\ \x70\x9a\x4e\x15\x92\x3f\x21\x56\xac\x73\xe0\xb0\x1a\x47\x27\x18\ \xc8\x1d\x8d\x57\xfa\x0e\x29\x65\x86\xdc\x20\xef\x03\x81\x8a\x9f\ \xb4\x76\x37\xe6\xc2\x94\x7f\x2f\xf5\xcd\x75\x6b\xac\xa9\x43\xb0\ \xe6\x61\xa3\x65\x70\x62\x23\x4d\x2c\xac\x20\x15\x9e\xe7\xde\xb7\ \x6e\x09\xe0\xa8\x8f\x72\x38\x34\x21\xb5\x93\xca\x8a\x53\xc0\x3c\ \xf7\xac\x43\x49\xff\x00\xe3\x27\x20\x7d\x78\xfa\x56\x56\xef\xbb\ \x34\xa5\x6d\x90\x3a\xe0\x4a\x15\xb8\xe0\x7a\xfb\x7f\xae\x68\xa4\ \xf2\xad\xcb\x7f\x1f\xed\x07\x60\x3e\x64\x83\x9c\xd1\x4d\x87\x0e\ \xda\xb1\x72\xe2\x5f\x44\x56\xfd\x21\x60\x0d\x3f\x12\x6b\x87\x09\ \x41\x70\x72\x7f\xbe\xaa\x98\xbb\xba\x6a\xca\xdc\xc9\x40\xe5\x29\ \xcf\x06\xa3\x5d\x3b\x4a\x53\xa2\xe0\x60\x60\x23\x7f\xfd\xe2\xb9\ \xa9\x4b\x4c\xbc\xf2\xb3\xbb\xc3\x6c\x1c\x12\x7b\x62\xb6\x3b\x25\ \x73\x9f\x4a\xf9\x54\x4c\x00\x6d\xa1\xb4\x14\xe4\x7b\x56\xc4\xb8\ \xca\x52\xb5\x78\x89\x48\xf9\xf4\xef\x58\xba\xab\x5b\x3e\x47\x56\ \x16\x73\xcf\x9b\x9a\xcc\x2e\xcd\x27\x0d\x85\x6d\xdc\x31\x9f\x8f\ \x6f\xa5\x55\xbe\xe6\x35\x2b\x73\x47\x3f\xdf\x2f\xba\x9a\xe5\xa5\ \xee\x1a\x3e\xdb\x74\x94\xe5\xfc\x6a\x39\x10\x23\x48\xf1\x0a\x9e\ \x0d\x23\x32\x12\xac\xe7\x3f\xd5\x8d\xbf\xc2\x9f\xed\x17\xa9\xf7\ \x58\xd6\xb9\xb6\xe7\xca\x83\x7a\x45\xcb\x94\xa6\x84\x85\x32\x1d\ \x79\xdd\xa8\x40\x52\x92\x09\x49\x4e\xc7\xc8\x20\x1e\x45\x49\x2d\ \xfd\x38\x99\x69\xea\xdc\xdd\x67\x1a\x43\x0e\x5a\x5d\x8f\x96\x58\ \x49\x3e\x22\x64\x94\x21\xb5\x38\x46\x31\x8d\x88\xc7\x04\x9c\xa8\ \xf6\xa4\x3a\x33\x47\x3f\xa4\x2d\x3a\xb1\x13\x27\xc5\x7c\xdc\x96\ \xeb\x76\xed\xaa\x51\xf0\x62\xe5\xc5\x36\x85\xe4\x0c\x10\xa7\x57\ \xc0\xce\x3d\x0f\xa0\xa5\xdc\x95\xa3\xb1\x9b\x87\x38\xbe\xb7\xae\ \xc1\x95\xbd\x69\xa8\xdb\x47\x4d\xdb\xb6\x18\xff\x00\x64\xba\x5a\ \x9d\x79\x6d\xce\x98\xb7\x1c\x5a\x9a\x69\x38\x0e\x39\xb0\x93\x8d\ \xe0\x82\x39\x27\x39\x00\x0e\x61\xb2\xf5\x5d\xe6\x05\xd7\x5b\xdd\ \x84\x34\xce\xb7\x42\xba\xf8\x8e\x07\x25\xa9\x2b\x4a\x0a\x11\x94\ \xb6\x9d\xa4\x70\x39\xe4\xa7\xbd\x3a\x3f\x61\xbf\x22\x3e\x8a\xfb\ \x33\x96\xf7\x9f\xd3\x90\x9d\x8a\xe2\x16\xf2\x90\x87\x7c\x46\xd0\ \x82\x52\xa0\x82\x78\x28\xcf\x23\x9c\xfa\x56\x8b\x86\x90\xb8\xbd\ \x61\xd6\x70\x92\xf4\x30\xed\xee\x41\x72\x31\x52\xd4\x12\x94\xec\ \x4a\x70\xbf\x2f\x07\x29\x3d\xb3\x4c\x8c\x24\x97\xae\xc2\x8d\xc9\ \xef\xeb\x41\xcb\xa8\xd7\xd7\xec\x3a\x1a\xe1\x7a\x84\x41\x75\xa6\ \x92\x59\x2a\x19\x00\xad\x49\x4a\x4e\x3d\x70\x54\x0d\x44\xe3\x5d\ \x35\x0e\x97\xb9\x68\x89\x52\x35\x04\xeb\x9b\x3a\x87\x6b\x33\x58\ \x94\xa0\xa4\x05\xac\x23\x6a\x9b\xc0\x1b\x70\x57\x8f\xc3\xe4\xd4\ \xfe\x7e\x98\x46\xa4\xd2\x52\xec\x73\x0e\xc4\x48\x60\x34\x1d\x48\ \xce\xc5\x8c\x14\xab\x07\x19\xc1\x00\xd4\x2f\x4e\x58\xaf\xb7\x3e\ \xa0\x59\x74\xf6\xac\x09\x61\x3a\x45\xa0\xb8\x65\xa8\xee\x6d\xb8\ \x60\x24\x25\xcf\x10\x8d\xa3\x6e\xd4\x64\x67\x39\x07\xe7\x17\xa9\ \x7c\xc8\xac\xaf\x71\x4f\x4f\xef\xba\xa6\xef\xaf\x75\x2b\x37\x18\ \xf1\xcc\x28\xb2\x92\xc3\x89\x4b\xe4\xfd\x98\x84\xa8\x00\x81\xb4\ \x6e\x0a\x29\xc9\x27\x1f\x8d\x59\x8c\x82\x95\xa5\xc4\x2b\x6a\x87\ \x62\x3b\xe6\xa0\xee\x69\xcd\x51\xa3\x2e\x9a\xc2\xff\x00\x09\x16\ \xdb\x84\x1b\x8a\x97\x35\xa6\x80\x71\x52\x7c\x40\x95\xec\x40\x40\ \x4e\x08\x2b\x50\x04\xee\xed\x9a\x99\x5a\x8c\xb3\x6e\x8e\x67\xa5\ \x91\x37\xc3\x4f\x8f\xe1\x83\xb7\xc4\xc7\x9b\x6f\x27\x8c\xe7\x1c\ \xf6\xab\x53\xbd\xac\xcb\x47\xbc\x99\xd8\x6e\xc8\x79\x09\x61\xe5\ \x10\xbf\x42\x4e\x29\xfd\x2b\x56\xd2\xd3\xa9\xde\x83\xc6\x48\xcd\ \x56\xf8\x50\x21\xc4\x1c\x28\x76\x23\xde\xa4\x96\x3b\xe8\x4a\x43\ \x32\xf0\x3e\x73\x55\xa9\x4e\xfa\xa3\x4d\x2a\xb6\xd1\x8e\x32\xed\ \xea\x61\xe1\x32\x22\xfc\xa0\xf2\x8a\x72\x83\x29\xc7\xdb\x1f\xb1\ \x50\x3d\x8d\x7b\x09\xb4\x3c\xbf\xb4\x13\x86\x87\xf1\xac\xdf\x9e\ \x84\x1d\xb1\xda\xcf\xb9\x22\xb3\xca\x4e\x5d\x5b\x5d\x8f\x8c\x54\ \x7a\xd7\xb2\x36\x82\xfe\x3f\xab\x20\x63\x27\x9a\xf5\x2e\x0c\xf9\ \xd2\x47\x38\xe4\x77\xa4\xc9\x9f\x28\x63\x81\x8e\xe2\x94\x37\x35\ \x0b\x3b\x1f\x40\x4e\x7d\xa9\x6e\x12\x5c\x86\xc6\x71\x7c\xcc\xbe\ \xe8\x28\xee\xd9\x14\xc9\x77\x88\xa4\x36\xb4\xe3\xca\xae\x45\x3f\ \xa9\xb1\x8d\xc8\x39\x42\xbb\xd6\x97\x9a\x0e\xb6\x52\x7b\x7a\x1a\ \x9a\x55\x32\xbb\x91\x56\x9e\x65\x62\x17\x1c\x60\xec\x38\xe0\xf2\ \x2b\x39\x19\x28\x1c\x1c\x7a\xfd\x6b\x74\xe8\xeb\x8d\x28\xfb\x13\ \xcd\x60\xf1\xc2\x32\x3f\x1f\x5a\xe8\xa7\x73\x9a\xd5\xb7\x35\xa0\ \xed\x6f\x3f\x1c\xd4\x77\x50\x24\xad\x97\x5c\x23\x93\xc0\xa7\xf1\ \x92\x03\x60\xf7\xf5\xa6\xad\x54\x90\xcd\xb9\x7e\xe5\x3c\x50\xf6\ \x64\xa3\x8d\x3f\x49\x30\x1c\xd4\xb0\x18\x42\x16\xe3\x82\x39\xc2\ \x10\x92\x4a\xcf\x88\xac\x0f\xe1\x55\x94\xa7\xd4\xd4\x44\x32\xe2\ \x42\x4a\xb9\x5a\x7b\x04\x01\xd8\x11\xfd\xae\xff\x00\x9d\x74\x2d\ \xfa\xe4\xc4\x3d\x64\xe5\xc5\xc6\xf2\xeb\x08\x2c\x32\x52\x8d\xca\ \x5e\x4e\x54\x33\xe8\x32\xa2\x3f\x0a\xa0\xb5\x5d\xbd\xe6\xb5\x7d\ \xc5\x97\x12\xa4\x07\x5f\x53\xa0\x3c\xad\xa7\x0a\x39\xef\xeb\x5e\ \x62\x75\x22\xeb\x64\x7c\xb5\x3d\x56\x1f\x09\x51\x60\xa3\x59\x2d\ \x1b\xb0\x97\x4b\xcb\x89\x12\xea\x87\xa4\x3e\xeb\x21\x2b\xc8\x53\ \x68\xdc\x48\xef\x8f\xe1\x8f\xc6\x94\x6a\x0b\x85\xc2\xfd\x7d\x12\ \x9e\x6c\xa1\x2b\x59\x6a\x33\x09\x1c\x34\x80\x78\x48\xfc\xf9\xa4\ \xac\x3a\x98\x58\x79\xa6\xd0\xa5\xe7\x8f\x2e\x46\x01\xed\xfc\xb9\ \xa7\xbd\x06\xf2\x1e\xd5\x11\x64\xc8\x61\x0f\x20\x2d\x3e\x22\x4e\ \x01\x27\x3e\x80\xf7\x27\x8e\x6a\x2a\x5a\x37\xa9\x6d\x91\x34\x13\ \x9c\xa3\x45\xbd\xd9\x67\x68\x3e\x90\x5e\x6e\x2d\x25\xe9\xcb\x6e\ \x22\x31\xc8\x57\x2a\xc9\xf8\xa9\x2e\x9e\xd1\xd7\x3d\x0b\xd4\xcb\ \x05\xe2\x2a\x54\xe1\x83\x29\x32\x32\x84\x90\x56\x8c\xe1\x69\xe3\ \xdd\x24\x8f\xc6\xae\xbd\x32\x23\xc8\x8e\xdb\xf1\xdb\x09\x65\x4d\ \x20\x84\xed\xc7\xd3\x3f\x38\xc5\x48\x92\xc3\x2e\x29\x0b\x2d\x24\ \xa8\xfa\x91\xda\xb8\xb2\x73\x9e\xaa\x5a\x9e\x87\xda\xb2\x75\x32\ \xac\xa6\xf9\x16\xf8\xf6\xeb\x9b\xab\xb7\x80\x63\xcb\xfd\xb3\x2a\ \x07\x82\x95\x0c\x8c\x7e\x1f\xc8\xd6\x77\x99\x0e\x46\xb7\x9f\x0d\ \x0a\x5a\x82\x09\x01\x3f\xda\xc7\x15\xe4\x09\xad\xf8\x5f\xab\xdd\ \x5a\x43\x8d\xa8\xfd\x9d\x4a\xfd\xd5\x13\xf7\x0f\xb0\x3d\xc7\xb1\ \xfa\xd6\x6d\x07\x1d\x0b\x0a\x18\x20\xe0\x83\x91\x83\x5a\x93\x4e\ \xed\x73\x39\x96\x69\xd9\xf2\x2b\x0d\x27\x76\xd5\xa6\xfb\x2d\x57\ \x48\xce\x08\x01\xb2\xd9\x65\x95\xe0\x0c\x9e\x54\x7d\xc5\x45\xe7\ \xd9\xf5\x4b\x17\xdb\x4c\xd8\xa7\xec\x51\x04\xe7\x4c\x87\xde\x88\ \xdc\x96\xdc\x6d\x69\x52\x53\xfb\x25\xf0\x48\xc8\xc0\xf7\xed\xcd\ \x5e\x82\xce\x7e\xfb\x6f\x23\xcd\x83\x85\x0c\xd2\xf4\xb0\xea\xdb\ \x6d\x0f\x36\xcb\xa9\x69\x61\xc4\x05\x73\xc8\xec\x69\xb4\xaa\x4e\ \x2a\xcc\x2b\xf0\xaa\x3b\xda\xd7\x2a\x1e\x8d\x88\xda\x56\xe5\x71\ \x55\xde\x35\xcd\xf5\xa6\x30\x8c\xf2\xcc\x72\x95\x48\x58\x39\x49\ \x2d\xe7\x09\xf2\x9c\xfe\x34\xa9\x56\x07\x5f\xb8\x22\x56\x93\xb3\ \xbf\x6a\x52\xe4\x91\x21\x0e\xa4\x04\x16\xfb\xe5\x48\xce\xd3\x93\ \xed\x83\x56\x94\xf8\xab\x7a\x42\x9e\x52\x1a\x4a\x94\x30\xac\x27\ \x71\x38\xed\xf1\x49\xd7\x19\x49\x00\x90\xbc\x11\xc9\xc7\x35\x59\ \x43\x32\xb4\x86\x50\xae\xa8\xbc\xd4\xd6\xaf\xb7\x61\x8f\xec\x52\ \xe5\xc6\x4c\x29\xae\x32\xfc\xc9\x4a\x43\x6e\x18\xe8\xc2\x01\xf4\ \x48\xcf\x7a\x8f\xc7\xb0\xb3\x0f\x5f\xfe\xbf\x62\x7c\x49\x6b\xbb\ \x4c\x94\xee\xd8\xea\xdf\xb1\x08\xc0\x49\x52\xfb\x67\x6e\xc0\x52\ \x3b\x1a\x96\xea\xeb\x8b\xda\x72\xd0\xd2\xe2\x25\xb3\x7b\xb8\x6e\ \x8d\x69\x64\x9c\x16\xf2\x3c\xf2\x55\xec\x94\x27\x24\x13\xeb\x50\ \xfe\x9d\xe9\xb6\x2c\x82\x52\x63\x2d\x4e\x30\xdb\xa5\x0d\x28\xaf\ \x20\x13\x82\xb5\x01\xe8\x54\x42\x73\xf4\xae\x7e\x26\xce\xa4\x21\ \x1e\xdb\xfa\xf5\xd8\x6f\xc3\xa9\x2a\x53\xaa\xdd\xae\x9a\xb7\x6f\ \x6f\xc1\x3b\x78\xd9\xf6\x16\x1b\x1b\x8b\x0b\x29\xc0\x29\xc0\xca\ \xbb\x1a\x8d\x4f\xb5\x44\x63\x5a\xc6\xd4\x4e\xba\xb8\xee\x2e\x22\ \xed\x8f\xbc\x85\x11\xb5\xa7\xfc\x89\x59\xc7\xaa\x5d\x2d\xfe\x07\ \xe2\xa4\xb6\xb2\x3c\x32\x97\x00\x27\x04\x63\x39\xa8\xb7\x54\xad\ \xee\x49\xd3\x32\x58\x6d\x6f\x25\x05\x3b\x87\x84\xa2\x95\x12\x08\ \x56\x32\x3d\xf0\x38\xfa\x53\xaa\x36\xa2\xa4\xb9\x6a\x64\xa4\xaf\ \x3c\x97\xb2\x7a\x7c\x19\xe3\xb2\xaf\x4f\xcb\x95\x06\x55\xf6\x4c\ \xc8\x29\x29\xd8\xdb\x1c\xa9\xf2\x09\x0a\x25\x44\xe4\x64\x72\x30\ \x33\x9e\xf5\x5c\xf5\x47\x4d\x3f\x70\xbc\x46\x99\xa6\xf4\xb2\xd0\ \x98\x88\x6f\xc3\xfb\x6b\x21\xd6\x54\xe9\x74\x15\xf8\xbc\x95\x94\ \x90\x00\x38\x3c\x8f\x6a\x97\x74\xfa\xf1\x17\x50\xdb\x00\x5a\x9a\ \x4d\xc5\x18\x54\xa4\xa4\xf2\xa5\x1c\xe1\x78\xfe\xf6\x09\xfa\x85\ \x0f\x4a\x98\xc7\x6a\x7b\x44\xa5\x25\x4a\x47\x04\x07\x46\x41\x1f\ \xce\xb4\xc2\xb7\x12\x2a\x48\x5d\x4a\x4e\x8c\x9c\x25\xa5\xbe\x1e\ \xbb\x8e\x5c\x56\x88\x72\x3f\x51\xdd\x93\x7d\xb5\x2d\xdb\x7b\xf7\ \x94\x3e\xa3\x0e\x23\x8c\x30\x96\x14\xa0\x5c\x65\x09\x56\x54\x94\ \x8c\x90\x92\x73\x4f\x7a\xd9\xeb\xd6\x93\xd5\x2e\x39\xa4\x2d\x9a\ \x85\x7a\x51\x21\x29\x31\x27\x28\xbe\x42\x40\x19\x20\x9c\xa8\x0f\ \x5c\x13\xeb\x5d\x19\x2d\xf9\x6b\x65\x49\x93\x14\x28\xab\xb6\x17\ \xbd\x39\x1e\xbc\xf6\xa4\x52\xd0\xf4\xa4\x00\xb6\xf6\x11\x80\x72\ \x8f\x4a\x5d\x66\xe5\xba\x1d\x87\xa9\x1a\x4a\xca\xef\xe3\xf8\x18\ \xf4\x0d\xed\x8d\x43\x62\x8b\x22\x12\xca\xd0\xb4\x0c\xa8\xa4\xa7\ \x8f\x6e\x40\xaa\xcb\xf4\x80\xb0\x07\x6d\xd7\x8b\x82\xda\x0b\x58\ \x65\x0e\x05\x01\xfd\x95\x8e\x3e\xb8\x35\x6b\xdb\x6d\x49\xb2\x3e\ \x57\x10\x84\xb0\xb5\xef\x2d\x60\x00\x14\x7b\xe3\xdb\xe9\x4d\x7d\ \x46\x81\x12\xeb\x66\x97\x0a\x62\x9c\x43\x13\x11\xe1\x1f\x0f\x97\ \x14\xa2\x41\x01\x03\xdc\xe3\xf0\xef\xe9\x59\x5a\xcb\x67\xd8\xc3\ \x32\xce\xf2\xec\xce\x4e\xb7\x28\x5b\xba\x42\xdd\x9d\xe4\x11\x37\ \x54\xdd\xd8\x7c\xa4\xf0\x53\x19\xa2\xa0\x15\x8f\x6d\xc7\x8c\xfa\ \x66\xac\x8e\x85\xc6\x7a\x5c\xb6\x2e\xa9\x21\x4c\xbc\xe2\xf7\x10\ \x73\x80\x14\x40\xcd\x44\xba\x8d\x65\x9b\x7c\xea\x79\xb7\x48\x91\ \x1e\x01\x65\xff\x00\xb2\xc5\x4a\x7e\xe3\x6d\xa5\xbe\x10\x9e\xdd\ \xbd\xcf\x04\xe7\x35\x26\xd1\xa5\x8d\x29\xa8\x60\xda\xad\xf2\x5a\ \x52\x87\xec\x5e\x09\xc9\x0e\x0c\xf3\xcf\x62\x41\xf5\xfc\xab\xb3\ \x43\x19\x08\xce\x32\xed\xd4\xe3\x63\x3a\x3a\xa3\xa0\xe4\xb9\x7f\ \x09\x1d\x81\xa5\xf0\x18\x46\x3b\xfe\xee\x3d\xea\x5c\x85\xa1\x94\ \x03\xc9\x57\xa7\xc7\x15\x5e\xe8\x69\x61\x50\x50\x54\xb0\x5c\xfa\ \x7a\xd4\xe2\x37\x20\x2d\x47\x27\xbe\x2b\xb9\x55\xaa\x8b\x37\x23\ \x87\x46\x5a\x19\xba\xeb\xce\x67\x7a\xb6\x80\x7b\x56\x29\x6f\x1c\ \xee\x51\x56\x3b\xfa\xd6\xd2\x48\x39\xe7\xd8\x57\x80\xf9\xcf\x27\ \x8e\x00\x27\xe6\x97\x7b\x2d\x06\x5a\xef\x53\x04\xb8\xeb\x0a\xde\ \xda\x8a\x87\x6e\x7b\x9a\x2b\x35\xe1\x38\x21\x47\xf0\x1c\x7d\x28\ \xa2\xc9\xee\x89\x4d\xad\x99\x0a\xe9\xb0\x43\x7a\x36\x0b\xef\xe7\ \x62\x7c\x4c\x0f\xff\x00\xa8\xaa\x70\x9b\x35\xe9\x89\x29\x6d\x45\ \xb6\xc0\xe3\x07\xe6\xa3\xda\x15\xd5\xc8\xd2\x90\x5b\xf3\x25\xb6\ \xfc\x4c\x10\x3d\x7c\x45\x7f\x9d\x3f\x21\x29\xc7\x39\x18\xc9\xfa\ \x71\x5b\xa1\x15\x64\xd9\xcd\x53\xea\xa4\x8d\x02\x3a\x41\x05\x47\ \x71\x3d\xf9\xed\x5b\xd4\x84\x1f\x2a\x06\x3e\x7d\xab\x15\x00\x0e\ \xd4\xee\x23\xb8\xad\xa8\x52\x4a\x7b\x67\xd4\x0f\x7e\x3d\xe9\xa5\ \x45\x36\x79\xea\x6a\x40\x8a\xf3\x89\x28\x73\xee\x27\xfd\x77\xa8\ \x86\xb2\x2b\x4d\xd9\x49\x4c\x90\xa6\x96\x90\xb4\xa4\x28\x1e\x0f\ \x62\x3d\xc1\xa8\xf7\x4b\xe3\xc0\x9d\x77\xbf\x5d\x2e\x4c\x46\x91\ \xa8\x18\xbe\xc8\x69\x4e\x3c\x80\xa7\x98\x42\x55\x86\x92\x82\x79\ \x4a\x36\x60\x8c\x70\x72\x7d\xea\xb3\x54\x08\x31\xfa\x2b\xa5\x2e\ \x05\xbd\x86\xe3\x2a\x2b\x37\x89\x4a\x52\xb7\xae\x2a\x64\x14\x6d\ \x52\xbb\x84\x04\x84\xa7\x03\x00\x0e\x29\x17\xb4\xb3\x25\xb8\x71\ \x5b\x8a\x4c\xb5\x9a\x01\x6d\x82\xda\x81\x49\x3e\x5c\x7a\xfe\x54\ \x27\xf6\xc1\x28\x42\xb7\x0c\xed\x51\x07\x23\x8e\x0d\x56\xb3\xad\ \x31\xe4\x6a\x6d\x4f\xa7\x6c\x52\x5b\xb5\x41\x95\x67\x63\xc6\xfb\ \x38\x09\x6d\x99\x4a\x71\x41\x3e\x51\x80\x37\x20\x00\x71\x8c\x83\ \x4a\x2c\xf6\x57\x75\x15\xa6\x75\x8e\x3d\xbe\xc7\x69\xbc\x59\xae\ \x4c\x2e\x43\x2d\x23\x30\x2e\x05\x08\xdc\x94\x2f\x00\x12\x92\x0f\ \x29\x39\x20\xa4\x67\xda\xaf\x9d\xf6\x15\xcc\x5d\x56\x08\x88\xc2\ \x36\x14\x96\xf1\x9c\x82\x0e\xee\xd5\xb2\x52\x9b\xfb\x53\x9b\x96\ \x8c\x95\x6d\xc6\x7f\x7b\x19\xc7\xd7\x1c\xe2\xa2\x7a\x06\xed\x78\ \xba\xe9\xbb\x7c\x8d\x23\x65\xd3\xf6\x88\xe1\xf7\x9a\x9f\x19\xe0\ \xbd\xa1\xc4\xb9\xb5\x45\x92\xd0\x09\x50\x24\x28\xe4\x8e\x49\xa8\ \x3e\xa3\x81\x68\x90\x7a\xb7\x70\xb8\xb4\xd2\xe4\xc5\x58\xfb\x13\ \x8e\x72\xa6\x5e\xfb\x3a\x4b\x65\xb3\xdd\x2a\x2b\x08\xe4\x60\x9c\ \x0f\x6a\x8e\x27\x30\x72\xd1\x34\x5b\x0c\xde\xe3\xcb\xd5\x12\x74\ \xd2\x22\xac\x3f\x12\x0b\x52\xd4\xee\x46\xd5\x05\xa9\x49\x09\x03\ \xbe\x46\xd3\xf9\xd2\x29\xeb\x8d\x0d\x2e\xcb\x79\xf4\x22\x33\x20\ \x97\x16\x55\xc2\x31\xdf\x3e\xdd\xaa\x0a\x6f\x42\xc9\x7c\xd4\x57\ \x6b\xfd\xbd\x53\xcb\x3a\x36\x1f\xdb\x22\x91\xfd\x6a\x8a\x96\x95\ \x21\x59\xcf\x04\x92\x0e\x41\xc0\xcd\x35\xc8\x86\xda\x75\x3e\xab\ \xb7\xfd\x86\xc9\x16\x33\xda\x3f\xed\x0e\xc3\xb5\x8c\xc7\x0e\x85\ \x2f\x62\x88\xc0\x05\x60\x14\xf3\x81\xc6\xd3\x50\xaa\x3d\x88\xce\ \x4c\x6e\xba\xc6\xd5\x12\xc5\x6c\xba\xc5\xff\x00\x6c\x17\x47\x59\ \x66\x13\x4d\xad\x28\x2b\x53\x83\x72\x72\x54\x46\xd0\x07\x27\x3d\ \xbd\xa9\xfe\x19\x5c\x94\xc6\x2f\x35\xf6\x77\xdd\x03\x73\x4a\x58\ \x51\x49\xf5\x19\x1c\x1e\xfd\xc5\x54\xd3\x2c\xf6\x94\x68\x5e\x97\ \x1f\xd5\xb0\x4f\xda\x2e\x36\xe2\xe9\x0c\xa0\xef\xdf\x19\x5b\xc2\ \xb8\xe7\x25\x23\x39\xef\x81\x9e\xd5\xae\xf4\xd5\xbd\x7a\x6f\x5f\ \x5d\x2e\x29\x69\x37\xd8\x57\x47\x51\x0d\xf2\x70\xfc\x70\x9d\x9f\ \x65\x4b\x47\xba\x41\x04\x63\x6f\x7c\x9a\x38\x8d\x6e\x46\x66\x74\ \xd3\xef\x22\x34\x06\x22\xa5\xd4\xa5\x44\x24\x11\x9e\x79\xed\x5a\ \xd8\x53\x67\x09\x4a\xd0\xa2\x46\x78\x56\x72\x33\xcf\xfe\xb5\x58\ \x58\xed\xec\x5e\x7a\xd3\x71\x95\x7a\x8c\x99\x12\x60\xda\x6d\xd2\ \x1a\x4a\x8e\x50\xcc\x82\x17\xb9\x61\x3d\xb7\x79\x71\x9e\xe0\x67\ \x1d\xcd\x41\xe3\x59\xed\xd2\x34\x3e\x9c\xb8\x3d\x15\x2a\x9b\x2b\ \x5c\x08\x6f\x48\xe7\xc5\x54\x75\x49\x71\xb5\x33\xbf\xbf\x86\x50\ \x48\xdb\x9c\x73\xdb\x9a\xce\xa5\x64\x69\x95\x57\x7b\xdb\xd2\x3a\ \x31\x0b\x42\xd2\x14\xda\x92\xa4\x9e\xc5\x27\x22\xb6\x14\x82\x80\ \x48\xed\x55\xc7\x4c\xe2\x31\x6f\xea\x37\x50\xad\x10\x19\x6e\x2c\ \x08\xf2\xe1\x38\xcc\x66\x52\x10\xd3\x6a\x72\x2a\x4a\xca\x52\x38\ \x19\x3c\x9c\x55\x8e\x06\x72\x3e\x6a\x6f\x71\xd0\x79\x91\x9c\x77\ \x54\xc9\xc7\x74\x1e\xe0\xd2\xb3\x83\x85\x8c\x10\x79\xf6\xa4\xa1\ \x2a\x50\xc1\xe6\xbd\xdc\xa6\xfe\xf7\x23\xf9\x52\xe4\xae\xc7\x45\ \xd9\x6a\x68\xbd\xc4\x0f\x33\xe2\x24\x1c\x8e\xf5\x1f\x03\xca\x52\ \x47\x63\x52\xe6\x76\xbc\xca\x93\xc6\x08\xa8\xc5\xcd\xaf\xb3\x48\ \x52\x48\xe0\x9e\x6b\x46\x1e\x7f\xe2\xf9\x19\xf1\x30\xff\x00\x25\ \xcc\xc2\xde\xc9\x75\xc3\xc7\x03\xb5\x45\xfa\x8a\xe9\x4c\x67\x10\ \x0e\x00\x18\xe2\xa7\x96\xa6\x36\xc3\x53\xa7\xdb\xd6\xab\x5e\xa6\ \xbc\xa4\xb0\xe0\x4f\xb1\xab\x4e\x57\x52\xb7\x22\x99\x6d\x04\xfb\ \x4a\xab\x48\x5b\x99\x7e\x45\xc2\xe4\xfb\x49\x71\x6d\x04\xec\xdc\ \x32\x01\x51\x2a\x26\x90\x75\x77\xa4\xcd\xdd\xe1\xc5\xbb\x24\xbc\ \xc4\xa0\x82\xa2\xe3\x4a\xde\xad\xbe\xc0\x1e\xff\x00\x4f\xa9\xa9\ \x3f\x4d\xff\x00\x6f\x69\xbc\xb2\x17\xb5\xcf\xb3\x25\x63\x1c\xe0\ \xa4\xed\x35\x68\xd9\x59\x55\xc2\xc7\x15\xc5\x36\x0a\xf6\x8d\xc4\ \xa7\x3e\x55\x27\x07\xf8\x1a\xf2\x58\xba\x6d\xd6\xcd\x17\x67\xc8\ \xf7\xb8\x4a\xbc\x3c\x24\x53\xd6\x3c\xd7\xc3\xee\x70\x55\xc7\x48\ \x16\x1b\x75\xb6\x9d\x52\xd6\x96\x37\x95\xe3\x85\x1c\xf2\x9c\x7a\ \x63\xb7\xd6\x99\x2c\xf0\x64\xb1\x71\x69\xef\x33\x61\xb2\x16\x16\ \x7b\x12\x30\x71\xf5\xed\x5d\x29\xd4\xdb\x45\x90\x75\x21\x76\xd8\ \x31\x3e\xc9\x19\xc8\x67\x73\xab\x04\x25\xd7\x82\xb2\x38\xf9\xc2\ \xbf\x21\x54\xf4\xd8\xad\x89\x0a\x86\xc4\x73\xb3\xc5\xfd\xa9\xda\ \x46\x13\xb8\x82\x9f\xa7\xb1\x1e\xdf\x14\xba\x18\xa9\xca\xf1\x96\ \xa3\xb1\x78\x0a\x2b\x25\x4a\x6a\xd7\xd6\xdf\xc1\xd5\xdd\x2f\x6d\ \xe6\xf4\x15\xb9\xf9\x61\x5e\x33\xc8\x0a\xf3\xfd\xe0\x9f\x4c\xfd\ \x7b\xd4\xd2\x3b\x99\x39\x23\xbf\x02\x99\x2d\xed\x26\x2d\xae\x2c\ \x74\xf0\xdb\x2c\x36\x84\x73\xc0\x4a\x52\x00\xfc\xb1\x4e\xb6\xce\ \x52\x92\x52\x40\x3e\x6e\x7b\x0f\xad\x67\x8b\xd7\x41\x15\x5e\x66\ \xd9\xe5\xc6\x02\xf2\xa9\xcc\xa3\x7b\x89\x18\x5b\x27\xfe\x14\x7b\ \x56\xbb\x6e\xa2\x86\xe3\xe2\x2c\xa7\x44\x77\xf3\xfd\x53\xc7\x6a\ \xd3\xf1\xcf\xde\x14\xf2\x0e\xe2\xa0\x92\x4e\x7b\x1f\x4c\x7d\x68\ \x91\x6a\xb7\xcd\x63\xc2\x9b\x0d\x99\x20\x9c\x00\xe2\x01\xc5\x31\ \x41\xa7\x78\xb2\x8a\x70\x92\xb4\xd7\xc8\x7b\xb6\x2a\x33\xad\xa5\ \x4b\x42\x92\x30\x3c\xdb\x72\x83\xff\x00\x58\x7f\x8d\x3e\x43\x8f\ \x13\x68\x29\x71\x93\xf4\x22\xab\xe6\x74\x15\x9c\x2c\xaa\x23\xf7\ \x6b\x6a\xbb\x83\x0e\xe0\xe2\x06\x7e\x99\xc5\x2e\x6b\x46\x49\x48\ \xca\x75\x96\xad\xd8\x3d\x3e\xde\x0f\xf1\x29\xad\x11\x9d\x45\xbc\ \x7c\xc4\x4e\x8d\x17\xb5\x4b\x78\xaf\xb3\x64\xca\x4c\x64\x10\x4a\ \x31\x84\xf2\x48\x1c\x0f\xa9\xed\x50\x8b\xbe\xab\x80\x89\x46\x06\ \x9e\x8c\x35\x15\xdd\x27\x68\x6a\x39\xcc\x66\x0f\xf6\x9f\x74\x79\ \x40\x07\xf7\x41\x26\x94\x3d\xa2\xec\x60\x03\x78\x93\x76\xbd\x60\ \xfd\xdb\x85\xc1\xc7\x50\x4f\xca\x01\x09\xfe\x14\xe9\x19\xe8\xd6\ \xd8\x3e\x04\x48\xb1\xe2\x46\x69\x39\x08\x65\xb0\x84\x0f\x6c\x01\ \x51\x27\x37\xbd\x97\x9b\xfb\x2f\x32\x69\xc2\x94\x35\xd6\x5e\x4b\ \xf9\x6d\xf9\x78\x91\x48\x1a\x6a\x4a\x25\x4a\xbd\x5f\x65\x7e\xb2\ \xbc\xcd\x47\x87\x21\xf2\x30\x86\x9b\xff\x00\xe1\x34\x3f\x71\x3f\ \xc4\xd2\x6f\xb2\x44\xb6\xc3\x10\x61\xa0\x36\xca\x09\xda\x90\x49\ \x39\xfa\x9e\x49\xa7\x69\xf3\xa6\x5c\xde\xda\xd2\x8a\x00\x3d\xc7\ \x14\x95\x36\xf0\xde\x56\xbc\xaf\x06\x93\x92\x37\xea\xa3\x53\xab\ \x39\x7b\xcf\xe1\xcb\xbb\xe5\xc8\xdd\x08\x2d\x05\xb4\x04\xf9\x30\ \x09\x39\xe7\x9a\x57\x75\x82\xa7\xa2\x2d\x3c\x1c\x8e\xc4\x52\xab\ \x23\x71\xd6\xa6\xd0\xb5\x15\x73\x82\xae\xf4\xf3\x72\x8f\x1c\xa1\ \x68\x6d\x3b\xa9\xaa\x92\x94\x6e\x67\x95\x4c\xb2\x48\xa6\xed\xfa\ \x72\x12\xe4\xab\xf5\x60\x66\xd9\x76\x8c\xe2\x94\xdb\xc8\x4f\x95\ \xe0\x7b\xa1\xc1\xea\x93\x81\xf2\x0e\x08\xe6\xa4\xf0\x35\x01\x43\ \x88\xb7\xdf\x99\x55\xbe\x71\x00\x6d\x59\xce\xff\x00\x94\x9e\xce\ \x0f\x91\xe6\xf7\x4f\xad\x21\xbf\xe1\x9d\x40\x51\x18\x6f\x3b\x72\ \xe6\x0f\x20\xfa\x54\xa2\xc6\xe4\x3b\xed\xa9\x70\x6e\x71\x99\x94\ \x13\xf7\xd0\xeb\x61\x49\x3f\x50\x7d\x6b\x2d\x34\xd3\xb4\x5e\xbe\ \x46\xaa\xd2\x52\x8a\x75\x15\xd7\x9a\xfb\xae\xef\x95\xb5\x1b\xee\ \x62\x33\xe5\x1f\x63\x9c\xd2\xf1\x9c\xed\x58\x18\xfa\x83\xda\x90\ \xc9\x93\x1a\x23\x79\x9d\x3a\x2b\x00\x0e\x54\xe3\xe9\x48\xfe\x74\ \xba\xe3\xd3\xcb\x14\x92\xa4\x34\xe4\xf8\xcd\xab\x80\x84\x3d\xb9\ \x09\xfa\x05\xe7\x14\xdd\x1f\xa7\x71\x6d\xe0\x18\xb7\x4c\x14\xf6\ \x5b\x90\x18\x5a\xff\x00\x32\x9a\xbc\x95\x5b\xeb\x1f\x93\xfb\xd8\ \xac\x55\x1b\x7b\xff\x00\x34\xfe\x97\x19\x5c\xd4\x28\x90\x54\x8b\ \x2c\x67\x6f\x2a\xce\x03\x88\xca\x23\x20\xff\x00\x79\xd2\x31\x81\ \xec\x9c\x9a\xf1\x9b\x7b\xac\xb8\xa9\xd7\x19\x49\x99\x70\x29\xc2\ \x56\x84\xe1\xa6\x12\x7f\x75\xa4\xfa\x0f\x75\x1e\x4d\x3d\xce\xd3\ \xd3\x49\x0b\x76\xff\x00\x31\xc2\x83\x90\x14\xda\x00\xfc\x00\xed\ \x49\x5a\x8b\x25\x08\x5a\x1d\x79\x2e\x8c\x79\x4e\xdc\x67\xe9\x8a\ \xcf\x25\x2d\x9a\x25\xca\x0b\xdd\x67\x3e\x6b\xbb\x71\x3d\x7b\x8a\ \x5b\x73\xc0\xdf\xb2\x5b\x25\x47\xca\x56\x13\xce\x3d\xc9\xc0\xf2\ \x9e\x0f\x6f\x5a\x6b\xb6\xc7\x59\xbf\xdb\xdf\x71\xb6\x9b\xc9\x53\ \xdb\x1b\x18\x03\xcd\x8f\xc3\xf1\xf4\xa7\x7e\xb4\x19\x11\xba\x95\ \x6f\x9e\xc1\xca\xe1\x04\x1d\xbb\x41\x29\x0a\x47\x2a\xf9\x00\x81\ \xf4\xc1\xa6\x7d\x2c\xbf\xb4\xdc\xd5\x29\x4a\x2b\x6c\x10\xcb\x27\ \xb0\x20\x77\x35\x7a\x69\xce\x50\x5e\xb7\x37\xe6\x8d\x2e\x8d\xc4\ \x54\x7d\x96\xf9\xa4\x8e\x9b\xe9\xab\xe5\xc8\xcd\xac\x81\xc7\x6c\ \x55\xad\x15\x40\x34\x95\x2c\x8c\x63\xb6\x6a\xa4\xe9\xb8\x52\x61\ \xb4\x84\x03\xda\xad\x9b\x74\x40\x5b\xdc\xe1\x2a\x24\x1e\xd5\xed\ \x1c\x54\x29\x45\x33\xe7\x14\x6f\xb2\x37\x78\xc8\xc8\x39\x04\xfc\ \x0f\x8a\xc9\x38\x3c\x83\x80\x79\xe0\x66\x94\x08\x8c\xad\x3f\x73\ \xe0\x0a\x4a\xfc\x63\x1c\xee\x6c\xe1\x39\xe4\x7b\x52\x54\xa2\xdd\ \x91\xa5\xc6\x4b\x56\x66\xbe\x53\x81\xdf\x04\x7d\x28\xa4\x57\x0b\ \x83\x31\xe2\x93\xb8\x6e\xf4\x1e\x94\x53\xa1\x4a\x4d\x08\x9d\x58\ \x27\xa9\x05\xd0\x2a\x6d\xad\x1d\x07\x23\x27\x2b\xec\x7d\x37\xab\ \x9a\x79\x32\x54\xa2\x36\x34\x4f\x18\xed\x9a\x6d\xe9\x95\xbd\x4f\ \xe9\x48\x4f\x3e\xaf\x29\xf1\x38\xcf\xfc\x62\xaa\x68\x98\xc8\x4f\ \x01\xb4\x82\x3f\x9d\x68\xe2\xc6\x29\x23\x2d\x3a\x52\x94\x53\x23\ \x09\x92\xa0\xbf\xda\x24\xa0\x64\x60\x91\xc7\xfa\xef\x4a\x52\xea\ \x55\xca\x33\x82\x30\x38\xfe\x54\xf3\x26\x23\x0f\x34\x42\x92\x02\ \x8f\xae\x3d\x2a\x29\x70\x9c\x8b\x3b\xea\x61\xc1\x9c\x9f\x2f\x35\ \x78\x4d\x4f\x62\x27\x07\x03\x64\xbb\x7d\x8c\x5d\x99\xbb\xc8\xb6\ \xc0\x55\xc1\xa0\x42\x25\x29\x94\x17\x53\xc6\x30\x17\x8c\x8e\x3e\ \x6a\x37\x75\x6a\xdc\x1b\x4c\x28\x70\x62\xb1\x01\xb4\x96\xd1\x15\ \xa6\x52\x96\x82\x79\x24\x04\x81\xb4\x02\x49\xe3\x15\x59\xf5\x3f\ \x55\x5f\xb5\x0e\x95\xbc\xca\xb6\xc0\x2d\xda\xe2\x4f\x6a\x1a\xa6\ \x09\x05\x0e\x15\x25\xf6\xc2\x88\x48\x4e\x36\xee\xf2\xfd\xec\xf2\ \x4e\x31\x52\x4b\xb6\xa4\x9b\x67\x91\x7c\x71\x16\x96\x25\x31\x61\ \x43\x6a\xb8\x17\x25\x86\x9c\x3b\xd3\xbb\x6b\x49\xda\x77\x14\xa4\ \x85\x1c\x91\xdc\x01\xf1\x19\xe2\x98\xac\xc8\x92\x5a\x34\xb5\xa4\ \x42\x54\x75\x5a\x20\x22\x1b\x87\x72\xe2\xa6\x3a\x03\x6a\x3f\x29\ \xc6\x0f\x20\x7a\x7a\x0a\x75\x3a\x6b\x4f\x9b\x62\x2d\xa3\x4f\xda\ \x97\x11\x0a\xdc\x98\xe6\x22\x0b\x49\x38\xee\x13\x8c\x67\x1e\xb5\ \x16\x91\xaf\xcc\x08\x9a\x9d\x72\x60\x00\xbb\x3b\x4c\xbb\x15\x09\ \x5e\x3e\xd6\x97\x9b\xcb\x47\xb7\x19\x5e\x53\xeb\xda\x90\xea\x0e\ \xa5\x4e\x80\xe5\xd3\xec\xd6\xd6\x1e\x6e\xce\xd3\x4b\xb8\x93\x33\ \x62\xb7\x29\x3b\x94\x86\x86\xd3\xbb\x6a\x4e\x4e\x48\xf6\xef\x53\ \x9a\x21\x74\x59\xf6\x65\xc6\x81\x01\x31\x23\xc7\x69\x94\x20\x6d\ \x42\x1b\x48\x09\x03\xd8\x01\xc0\xfc\x29\xa6\xc9\xa1\xac\xd1\xb5\ \x15\xd7\x50\xca\x89\x1a\x6c\xfb\x84\x84\xc8\x4a\xdf\x8c\x85\x2e\ \x31\x4a\x52\x9c\x21\x58\x24\x03\xb4\x1f\xad\x56\x6e\xea\x57\x2c\ \x9a\xd7\x55\xdf\x24\xba\xf3\xb0\xa2\xda\x22\x48\x08\x4a\xb2\x0e\ \x77\xe3\x68\xec\x0a\xb8\x1f\x95\x4b\x22\x75\x0e\xe9\x6f\x9a\x8b\ \x75\xfe\xca\xcc\x49\x32\x60\x3d\x32\x19\x6a\x51\x75\x2a\x2d\x00\ \x56\xd2\xc9\x42\x70\xa0\x14\x0e\x46\x47\x7e\x6a\xad\xc5\x92\xa4\ \x9e\xe4\xd8\xc1\x80\xcc\x99\x0f\xbb\x6d\x88\xe3\xb2\x19\xf0\x5e\ \x75\x4c\xa4\xa9\xc6\xc6\x70\x85\x12\x32\x53\xc9\xe0\xf1\xc9\xad\ \x16\x8b\x25\xa2\x08\x2a\xb7\x5a\x60\x43\x6c\x25\x48\x08\x62\x3a\ \x10\x02\x55\x82\xa1\xc0\xe0\x12\x06\x47\xc5\x57\xf6\x9e\xa0\xdd\ \x6e\xcf\xe9\xf7\x66\x5a\x1b\x8b\x02\xfe\x4a\x62\x2d\x32\x8a\xdc\ \x43\x9b\x0a\x80\x5a\x76\x80\x02\x80\x38\xc1\x3f\x3d\xf8\x46\xd7\ \x51\x6f\x89\xb7\x43\xba\x37\xa7\xd2\xe4\x39\x57\x43\x6a\x6c\x09\ \xb8\x70\xc8\xdc\xa4\xa4\xed\x29\xc6\xc2\xa4\xe3\x39\xc8\xce\x71\ \xc7\x33\x9a\x3b\x91\x99\x16\x23\x7a\x77\x4f\xb4\xc3\x71\x98\xb2\ \x5b\x58\x69\xb7\xfe\xd2\xd2\x5a\x88\x84\x84\x3a\x32\x03\x80\x01\ \xc2\xf9\x3e\x6e\xfc\x9a\x4f\x36\xc7\x6d\x55\xc5\xb9\xb2\x6d\x70\ \x9e\x94\xde\x3c\x39\x0e\x47\x4a\x9c\x47\xd1\x44\x64\x7a\x54\x65\ \x1d\x45\x72\x24\x2d\x44\x9b\xcd\xb1\x0d\xcf\xb2\x3c\xcb\x2a\x66\ \x3c\x8d\xe8\x7d\x4f\x04\x96\xb6\xa9\x49\x4e\x32\x54\x01\xc8\xe3\ \xbd\x2e\x3a\xbe\x74\x68\x1a\xa1\x37\x4b\x6c\x31\x3a\xc3\x6f\x4d\ \xc7\xc3\x8f\x33\xc6\x69\xf6\x94\x15\x8c\x28\xa1\x24\x10\x52\x41\ \xc8\xf6\x3e\xb4\x39\xc1\x6e\x0a\xc4\xc6\xdc\xe4\x06\x64\xae\x58\ \x89\x1d\x13\x1e\x4a\x50\xe4\x94\xb6\x90\xe3\x89\x4e\x76\x82\xac\ \x64\x81\x93\x80\x7b\x64\xd3\xa4\x7b\x35\x89\x51\x19\x61\xbb\x4d\ \xb8\x47\x66\x40\x94\xd3\x42\x32\x36\xb6\xfe\xe2\xaf\x11\x23\x18\ \x0b\xdc\x49\xdc\x39\xc9\xce\x6a\xbf\x85\x74\xbc\x39\x7f\x83\x67\ \x93\x69\x8b\x15\xdb\xb5\xb1\xcb\x85\xb0\xfd\xb4\xb8\x06\xcd\xa7\ \x63\xde\x41\xb0\xf9\xd2\x7c\xbb\x87\x71\xcf\x72\x74\x5a\xfb\xa9\ \xee\xda\x1e\x0d\xde\xf2\x23\xba\x89\x69\x52\xda\x71\xa5\x12\xb2\ \x3c\x45\x82\x14\x36\x80\x9c\x60\x01\x82\x73\x4b\x79\x2a\x7b\xa3\ \x61\x53\x2b\xb3\x45\x8d\x1a\xdf\x19\x13\xa4\xca\x89\x0e\x3b\x52\ \x25\x14\x2a\x43\xed\xb4\x94\xad\xe2\x91\xb5\x3b\xd4\x06\x55\x81\ \xc0\xce\x70\x38\xa7\x04\xc2\x51\x39\x2b\x39\xf5\x15\x53\x5a\xf5\ \xac\xbd\x3c\x8d\x63\x39\xfb\x7a\x9f\x93\x1a\xff\x00\x12\x22\x9b\ \x5d\xc1\x6e\xb5\x87\xbc\x34\x85\x20\x29\x23\x60\x09\x50\x25\x20\ \x11\x9c\xf3\x8c\x54\xbb\x51\xf5\x07\xf5\x15\xfb\x51\xc1\x7e\xd8\ \xe4\x86\x2c\x96\x44\x5d\x0a\x99\x5e\x5c\x74\xa9\x4b\x05\x18\xc6\ \x00\x1b\x73\x9c\xfb\xd6\x59\xd5\x69\xd9\x1a\xa9\xca\x9b\x57\x97\ \xad\xfe\xc4\xa5\x71\xdf\x68\x64\x28\xa8\x0e\xfc\x57\xa7\x0e\x23\ \x6a\xb8\x35\x5d\xeb\xdd\x67\xaa\xe3\xf4\x86\x5e\xa9\xb6\xb3\x62\ \x61\x4e\x18\xa6\x3b\xd1\x2e\x2a\x94\x03\x6e\xb8\x94\x12\x09\x69\ \x23\x70\x2a\x48\xf5\x18\x2a\x3c\x10\x01\xb0\x62\xb5\x70\x5c\x06\ \x9e\xb8\xa2\x33\x53\x79\xf1\x53\x15\xc5\x2d\xb1\xc9\xc6\x0a\x92\ \x09\xe3\x19\xe0\x72\x6a\x23\x52\xef\x52\xfa\x37\x68\x9b\x2d\xca\ \x2d\xaf\x61\x3d\x8f\x1f\x15\xaa\xff\x00\x04\x3a\xf2\x54\x79\xcd\ \x64\xca\xb0\xf8\x51\xfa\x1a\x72\x9a\xcf\x8c\xd2\x76\xf7\x06\xac\ \xe7\x92\xa2\x91\x68\xc3\x3d\x37\x11\x0b\x8d\x86\xad\xa1\x3d\x8e\ \x3d\x6a\xad\xea\x04\x70\xb8\xaf\x15\x0e\x4d\x5b\x17\x4c\xa6\x38\ \x18\xc6\x07\x35\x5c\x6b\x36\xc3\x91\x95\x81\xc0\xef\x5a\x30\xdd\ \x64\xef\xcc\x4e\x21\x59\xa4\x51\x3a\x5e\xe6\xfd\x9b\x51\xcb\x8e\ \xd9\xc7\x8a\xd2\xc0\x1e\xe0\x8e\x7f\x8e\x0d\x74\x96\x91\x2c\xb5\ \xa4\x21\x3b\xb4\x1d\xcc\x25\x5f\xc2\xb9\x86\x79\x0a\xea\x84\x28\ \x28\x20\x78\xb1\x1c\x52\x47\xf7\xb7\x63\xf9\x57\x42\x69\xb9\x92\ \x1c\xd2\xf0\xd2\xd3\x4a\x79\x0d\xb2\x1b\x73\xc3\xee\x85\x27\x83\ \x9f\xca\xb8\x18\xac\xaa\xa6\x87\xa4\xc0\x66\x9e\x12\x29\xf6\x90\ \x6e\xa2\xdb\x2d\x31\x51\x3b\x50\xdc\x22\x46\x54\x85\x61\x4c\x25\ \x4a\xe4\xed\xc9\xed\xec\x9c\x02\x4f\xcf\x35\x46\xda\x5b\x6a\xe0\ \xf2\xda\x91\x19\x4c\xb7\x3d\x2a\x5b\x4a\x4a\xf2\x16\xde\xe5\x2b\ \x23\x3d\xc8\xdc\xa1\xcf\x1d\xea\xe0\xfd\x24\xee\xae\x42\xd3\xb6\ \x4b\x78\x8c\x8d\xb3\x56\xf2\x14\xeb\xec\x12\x84\xa3\xca\x92\x9d\ \xde\xe4\x2b\x38\x1c\x9c\x7c\x55\x25\x6d\x75\x2f\xcc\x8d\x0d\xe0\ \xd0\x54\x64\xa5\x2e\xb9\xbf\x07\x6e\xe2\x02\x07\xf6\x46\x55\x8e\ \x7e\x6b\x8b\x51\x24\xda\x3d\x05\x2c\xd2\xa5\x19\xcb\xd7\x23\xa0\ \xf4\xfc\xd7\x5f\xd3\x16\xc7\xdf\x42\x10\x4c\x74\x21\x41\x27\x39\ \x21\x23\xf8\x1c\xd4\xb2\xd0\xbd\x91\xc0\x5a\x81\x07\x8e\xd5\x5d\ \xd8\x5e\x77\xf5\x5c\x78\xc5\xb7\x37\x8e\x77\xa9\x7c\x0f\x4e\xde\ \xfc\x7e\x15\x3d\xb4\x2f\xc4\x84\x56\x94\x85\x0d\xa7\x8f\x5c\x1a\ \xad\x39\x5d\x98\xab\x44\x7e\x88\x77\x1d\xd8\x4e\xe3\xc1\x03\xb6\ \x29\xca\x37\x86\x4e\xdd\xc4\x28\x77\x09\xef\xf9\xd3\x3c\x65\x2d\ \x6c\xa5\x68\x4f\x95\x49\x03\x69\xe0\xfe\x3e\xd4\xec\xdb\xa8\x4a\ \x37\x92\x00\x00\x7e\x15\xae\x0c\xca\xd0\xed\x1b\x68\x56\xe2\x53\ \x8c\x71\x4a\x5f\x7c\x36\xd1\x50\x19\xe2\x9b\x22\x38\x92\x92\x07\ \xaf\xc5\x23\xbd\x4c\x2d\x84\xb6\xd0\xdc\xe9\xe1\x29\x1e\xb4\xfe\ \x22\x8a\x17\xc3\xcd\x2b\x19\x4b\x96\x15\x20\x23\x24\xac\xf6\x48\ \xac\x2e\x4c\x2d\xfb\x6b\xd1\xe3\xe3\xc5\x29\xca\x72\x7b\x9a\xd3\ \x19\xb4\xc3\x41\x79\xf5\x05\xc8\x5f\x2a\x23\xd3\xe0\x7b\x52\x29\ \x93\xd0\xb2\x5a\x52\x94\x90\x53\xf7\xb3\xc8\x1f\x15\x55\xd6\xd5\ \x8f\x4b\x55\x97\x90\xcb\x03\x51\x42\x8e\xb5\x44\x92\x92\xdc\x96\ \xf8\x71\xb5\x70\xa0\x7d\xb1\x55\x6f\x5a\x75\x67\x5d\xa1\xcf\x42\ \x74\x96\x9a\x44\x2b\x52\x87\xec\x9e\x44\x74\xc8\x75\xdf\xf9\x44\ \xe4\x27\xe9\x8f\xc6\xad\x15\x96\x27\x36\x82\xfc\x44\x2c\xa0\x80\ \x92\xa1\x95\x0c\x76\xe7\xbe\x69\xce\x04\x95\xf8\xff\x00\x64\xdb\ \x2c\x6f\x19\x1c\x6e\x18\xa5\xaa\x52\x4f\x7d\x0d\xd7\xa6\xaf\xd5\ \xf5\xdd\xfd\x32\xa6\xe8\x9f\x52\xb5\xa7\xeb\x98\xb6\x5e\xa2\xd8\ \xd3\x6e\x99\x34\x91\x0a\x63\x69\xd8\x87\xd6\x06\x7c\x35\xa4\x12\ \x12\xa2\x01\xc1\x18\xcf\x6c\x55\xcd\xab\x75\x1c\x4b\x4e\x9c\x9f\ \x78\x96\xef\x87\x1a\x1b\x0a\x79\xe2\x0e\x4e\xd4\x8c\x90\x3e\x4f\ \x61\xf3\x4c\xba\x8f\x4d\xb5\x31\xb4\xca\x8c\x86\x1e\x71\x0a\x0b\ \x09\x5b\x78\x21\x40\xf0\x52\x7d\xea\x17\xaa\xa0\xde\xae\x50\x95\ \x63\x93\x0a\x43\xcd\xc8\x50\x2e\x64\x8d\x84\x03\x9e\x7e\x38\xed\ \x54\xa9\x39\xc2\xfa\x12\xa8\xd1\xaf\x28\xb8\xbb\x5b\x7b\xfa\x44\ \x1f\xa7\x7a\xd6\xf9\x7e\x95\x37\x52\x5c\xe5\x45\x85\x69\x79\xd3\ \x96\x1d\x21\x02\x33\x7e\x87\x79\xef\xf3\xee\x7b\x55\xc5\xd3\x1d\ \x4d\x0e\xeb\x16\x74\xfb\x79\x2e\x43\x4b\xfe\x1a\x1d\x29\x20\x39\ \x81\xc9\x4e\x7b\x8a\x88\x41\xb0\x5b\xa2\x43\x4c\x79\x16\xd6\xa6\ \x25\x27\x62\x10\xe3\x23\xc3\x07\x19\xec\x46\x3f\x3a\x94\xd8\xee\ \x31\x23\xb2\xcc\x56\xd8\x69\xa1\xfd\x5a\x5b\x42\x40\x49\x23\xdb\ \x1d\xbf\xf2\xa4\x52\xa4\xe3\x2c\xcd\xdb\xb8\xd7\x8d\x95\x1a\x91\ \xb4\x23\xd9\xeb\xc4\xb2\xa1\xca\x6a\x42\x4f\xad\x6a\x95\x93\xca\ \x12\x0f\xb6\x7d\x69\x96\x14\x9f\x30\x52\x14\x38\x1c\xe3\xd4\x53\ \xba\x1d\x4a\x9b\xee\x49\x27\xb7\xb5\x6d\x52\xba\xb3\x38\x4e\x19\ \x5d\xc4\x92\x9b\xdc\x9c\x90\x01\x3e\x86\xa2\x77\x84\xa1\x93\xbd\ \x43\x6a\x42\x87\x73\x53\x07\x16\x08\x50\x52\x8a\x89\x3c\xfc\x54\ \x47\x54\xa9\x28\x8c\xe9\xc2\x31\x8f\x26\xef\x7f\x63\x59\xeb\x69\ \x1b\x97\x85\xef\x63\x9d\xfa\xca\xcf\xeb\x0e\xa3\xbb\x1b\xc4\x6c\ \x17\x22\x78\x1e\x13\x99\x0a\x2b\x09\xde\x95\x20\x8f\x5c\xff\x00\ \xe8\x45\x45\x2d\x37\x2f\x07\x5e\xda\xf4\xd8\xf0\x8b\x6c\x47\x57\ \x8a\x50\x80\x32\xf2\x93\x93\x9c\x13\x9c\x11\x8c\xf1\xce\x6a\x6f\ \x75\xfb\x15\xef\x5d\xc8\xfd\xa7\x88\x44\xa7\x1b\x43\x78\xf3\x95\ \xa1\x20\x00\x32\x3b\x8c\x8c\x11\xdf\x07\x8a\xa4\x2d\x17\x69\x0e\ \x75\x34\x4d\x52\x9b\x42\xd3\x39\x59\xc1\xe3\xef\x10\x7f\xf4\xaa\ \xe0\x9d\xe4\xdf\x61\xab\x1c\xbf\xf8\xf8\x5f\xed\xf4\x47\x71\x74\ \xb8\xa7\xec\x8d\x93\xc9\xe3\xbd\x5b\xb0\x16\x36\x00\x0f\xe7\x54\ \x4f\x4e\xe7\xa5\x2d\x60\x1f\xbb\xc8\xe6\xac\x2b\x66\xa3\xf0\xe7\ \xb6\x16\xad\xad\xab\x8e\xfc\x57\xb2\x51\x75\xa9\x29\x1e\x0e\x9d\ \x65\x07\x66\x4f\xb3\x8c\x67\xf9\x56\x32\x46\xe6\x17\x93\xdc\x11\ \xcd\x69\x6a\x63\x0b\x48\x58\x70\x24\x7d\x6b\x5c\xb9\x49\x52\x7c\ \x36\xb0\xaa\xca\xa1\x2c\xdb\x1b\x9c\xe3\x97\x71\x89\x9b\x58\x5b\ \xa5\xc9\x4e\x65\x21\x5e\x50\x73\x45\x3c\xb6\xd0\x43\x78\xee\x73\ \x45\x6a\x75\x5b\x7b\x99\x15\x18\xa5\xb1\x18\xe9\xf3\xad\x31\xa2\ \x20\xad\xc2\x9d\xbf\xb4\xe3\x1f\xf1\xaa\xa9\x1b\x0b\x43\xcd\x85\ \x21\x47\x18\xcf\x06\xab\x58\x93\x1c\x6f\x43\x5b\xa3\x34\xac\x29\ \x5b\xfd\x7b\x7e\xd1\x54\xe3\xa7\xf5\x22\xe2\x36\x23\xbe\x14\x52\ \x39\x0a\x35\x78\xd1\xbc\x2e\xb7\x15\x1a\xd6\xb2\x7b\x13\xb2\x0e\ \xd3\x9c\x1f\xad\x43\xb5\x0c\x58\xf2\xaf\x00\xad\xad\xdb\x79\xc7\ \xcd\x2e\x1a\x8d\xb9\x67\xc2\x8a\x09\x50\xe0\xd1\x1d\xa5\x29\x65\ \xc5\x11\xe2\x2b\xb9\xc5\x32\x94\x1c\x75\x65\x6a\xcd\x4b\x44\x55\ \xb7\x5d\x07\xa9\x57\xa7\x2f\x7a\x62\xd8\xfd\xa1\x16\xab\x85\xcf\ \xf5\x83\x4e\xbe\x56\x97\x9a\xcb\xa9\x78\xb5\xb4\x24\x82\x37\xa7\ \x85\x6e\xc8\x07\xb1\xa7\xf9\x3a\x5e\x6c\x5d\x67\x78\xbd\xb1\x64\ \xd3\x57\xa6\x6e\xfe\x13\x8e\x22\xea\x8c\x2e\x3b\x88\x46\xc2\x52\ \xaf\x0d\x7b\x92\x40\x49\xdb\xe5\xe7\x3c\xfa\x54\xd5\x6a\x6d\xbc\ \x85\x3a\xda\x48\x04\xe0\xab\x1c\x7b\xfd\x2b\xd2\xa4\x85\xa1\x2a\ \x52\x7c\xfc\x0f\x92\x39\xc0\xfc\x2a\x5d\x28\xbd\xc4\x25\x62\x35\ \xad\xba\x72\xad\x5d\xac\x6c\xd7\x8b\x73\xb0\x22\xda\x9b\x65\xb6\ \x6e\x91\xd5\xb9\x2b\x75\x2c\xb9\xe2\xb1\xb0\x24\x60\xe1\x79\x07\ \x24\x71\xef\xda\xa1\x37\xcd\x19\x2e\xcf\xac\x2e\xf3\x22\xd9\xec\ \x57\x56\xae\x05\xb5\xa9\x37\x24\x10\xb6\x16\x94\xed\x25\x27\x62\ \xf7\x24\x80\x38\xe3\x9c\xf3\x56\xe5\xa7\x50\xdb\x2d\xfa\xa2\x2d\ \x8a\x44\xd4\xb7\x2e\x5b\x4b\x75\xa6\x94\x71\x94\x20\xa4\x12\x4f\ \x61\xca\xd3\x8c\xf7\xe7\x1d\xa9\x46\xb0\x44\x34\xcc\x57\x8e\xa4\ \x23\x29\xca\x94\xae\x31\xf3\x9a\x4c\x16\x5a\x8e\x1c\xb7\x1f\x38\ \x46\x70\xe2\x2d\xef\xa9\x50\xdc\xf4\x8a\xaf\x2f\xea\x94\x49\x76\ \x3b\x30\xef\x36\xb8\xd0\xe3\xf8\x69\x25\x6c\xad\xa2\xa2\x14\x53\ \x80\x36\x82\x53\xc0\x3e\x87\xb5\x21\xbb\x58\x6f\x93\x26\xb7\x7a\ \xd4\x0e\x40\xdd\x6e\xb6\x48\x66\x33\x51\x14\xa5\x78\x8e\x38\x90\ \x16\xe1\x25\x23\x6f\x09\x18\x48\xcf\x7e\xf5\x65\x26\xda\xf1\x07\ \xec\xcb\x42\x9b\x3c\x82\x0f\x1f\x5a\xc5\x30\x43\xa8\xf1\xd6\xf3\ \x65\x19\xc0\x5e\xf1\x8c\xe7\xd0\xfd\x6b\x46\x48\x99\xf2\x95\xc7\ \x4c\x6c\xb7\x59\x76\x7d\x17\x2a\xee\xcc\x58\xb0\xac\xcc\x07\xd9\ \x65\xb5\xad\x4f\x3c\xef\x85\xb1\x25\xc0\x52\x9f\x0f\x68\x52\x8e\ \xd1\xbb\x24\x0e\x6b\xd6\x34\x6d\xf5\x3a\x7e\xd3\x6b\x0f\x43\x53\ \x90\xb5\x22\x6e\xce\x10\xb5\x6d\x2d\x07\xd4\xe6\x07\x97\xef\x61\ \x5d\x8e\x06\x7d\x6a\x6f\xac\xee\x28\xd2\xba\x6a\x4d\xe6\x42\x54\ \xf8\x8e\x5a\x0a\x61\x0a\x01\x67\xc4\x75\x2d\x03\xcf\xa6\x55\xfc\ \x2a\x45\x0d\x31\x23\x6e\x3e\x2a\x56\xb0\x76\xf0\x73\x83\xed\x50\ \xa1\x1d\x81\x45\x6c\x44\x9b\xe9\x44\xbb\xe3\x5a\xd6\x4c\xd9\x10\ \xd9\x4d\xed\xc8\x2f\xdb\xd4\xa0\x5c\xf0\x9c\x8e\x84\xff\x00\x5a\ \x92\x00\xda\x54\x9c\x10\x09\xca\x49\xec\x69\xca\xf3\xa6\x6e\x57\ \x3d\x1d\xa8\xac\x8c\xd8\x74\xa5\x8e\x5c\xf8\x2a\x8a\xd3\x96\xe2\ \xad\x8b\x24\x28\x12\xe1\xf0\x92\x42\x73\xb4\x81\x85\x63\x9e\x4f\ \x73\x65\x30\xeb\x66\xd0\x4b\x4a\x07\x1c\x1c\x73\x83\xfe\x8d\x44\ \xb4\x1e\xa3\x8d\xaa\x74\x6c\x0d\x48\xcc\x75\x45\x66\x62\x54\xb4\ \xa1\xd5\x02\x53\x85\x94\xe0\x9f\xc2\xb1\x2b\x4a\x4d\xb3\x6c\xa9\ \xc2\x09\x45\x73\x5e\xbf\x91\xa9\x1a\x4a\xe2\x35\x8e\x96\xbc\xaa\ \x44\x6f\x02\xd3\x6b\x7a\x1b\xe9\xde\xad\xea\x5a\xc3\x60\x14\x0d\ \xb8\x29\xf2\x1e\xe4\x7a\x71\x58\xf4\xc7\x4f\xdd\xf4\x8e\x89\x66\ \xc3\x76\x30\x5d\x66\xda\x85\x06\x24\x45\x71\x6b\x53\xa8\x2b\x52\ \x89\x52\x0a\x06\xd3\x82\x38\x05\x59\xe6\xa6\xe9\x04\x27\x3d\xa9\ \x93\x42\xea\x38\xda\xaf\x49\xc7\xd4\x0c\x30\xe4\x56\x5e\x53\xc9\ \xd8\xea\x81\x29\xf0\xdc\x5b\x64\x93\xdb\x19\x41\x3f\x8d\x32\xf6\ \x77\x2b\xc3\x8d\xfb\xff\x00\xa2\xbc\xb5\xe9\xb9\xba\xc6\x1e\xbd\ \x10\x56\x62\x7d\xb6\xf7\x0e\x5d\xb6\x44\xa6\x56\x86\x9e\x54\x74\ \x34\x79\x04\x05\x14\x12\x92\x9c\x81\xf2\x33\x8a\x9a\xdb\x34\xe6\ \xab\x6b\x58\xdd\xb5\x74\xc1\x63\x32\xa7\x5b\x19\x86\xdc\x24\xbe\ \xea\x9a\x6c\xb6\xb2\x4e\xe7\x0b\x60\xa8\x10\xa5\x1c\xed\x18\xe0\ \x63\xd6\x9d\xf5\x1d\xda\xdb\x60\xb6\x2a\xe7\x71\x96\x98\xd1\xc2\ \x90\xd8\x51\xe7\x2a\x5a\x82\x52\x00\xf5\xc9\x50\xfe\x75\xb5\x99\ \xaf\x3a\x93\xb1\xe4\xad\x27\x21\x25\x2a\xc8\x35\x4e\x0e\x77\x74\ \xc9\x8b\x8d\x3d\x1e\xff\x00\xdf\xdd\x95\xb5\xcb\xa7\x57\x27\x74\ \xee\xaf\xb6\x47\x55\xa2\xd0\xe5\xfe\x4c\x49\x11\xed\xf1\x16\xb5\ \xc3\x88\xb6\x16\x85\x93\xbb\x62\x4e\x5c\x28\xf3\x10\x81\xd8\x71\ \x57\x1d\xa5\x73\x5d\xb7\x34\xbb\x9b\x11\x98\x96\xa0\x7c\x46\xe3\ \xbc\x5d\x6d\x3c\x9c\x00\xa5\x25\x24\xf1\x8f\xdd\x14\xc4\x41\x27\ \x27\x93\xeb\x4f\xd6\xc5\x97\x23\x8f\x5c\x54\x56\xa4\xa1\x14\xd1\ \x7c\x33\x59\x9f\xaf\x5b\x89\xa5\x24\xb5\x21\x24\x7a\xf6\xa7\x78\ \xe7\x2c\xa7\xd6\x91\xcd\x6b\xc4\x6f\x3d\x88\xf5\xa5\x51\x01\x0c\ \xa7\xe9\x49\xa9\x2c\xd1\x46\xba\x6b\x2c\xd8\xd3\xa9\xe4\xa2\x34\ \x52\xb7\x15\x84\x81\xde\xab\x1d\x4f\x7b\x86\xa8\x25\x40\xad\xb0\ \xe0\xf2\xf8\xa8\x28\xdd\xff\x00\x6b\x15\x64\x6a\x14\x78\xaf\xa1\ \x2b\xfb\x83\x9a\xab\xba\xb3\xe1\xae\xd8\xea\x40\x68\xa8\x24\xed\ \x0b\x4e\xe0\x48\xf4\xc5\x6c\xa5\x25\x4e\x95\xd9\x86\xbe\xb5\x19\ \xcd\xda\xb6\xfb\x1a\xdd\xd5\xcb\x15\xd6\x42\x81\x87\x1e\x42\x1a\ \x90\x73\x82\xde\xf2\x41\x27\xe0\x12\x93\xf4\xae\xae\xb1\xdb\x90\ \x9b\x8a\x9c\x86\xe3\x8c\xa1\xd6\xf3\x2d\xb4\xab\xca\xb2\x7b\x1c\ \x7b\x90\x2b\xe7\xf6\xb6\xb9\x3f\x32\xec\xfc\x2b\x82\xd4\x70\xa2\ \x83\xea\xa4\x1c\xf0\x01\xf5\x1f\x35\xd4\x5f\xa2\x97\x58\x2d\xb7\ \xc8\x0d\xe9\x1d\x45\x31\x98\xb7\xe8\xa9\x4b\x71\xd4\xf3\x9b\x44\ \xd6\xd2\x36\x8c\x13\xdd\x60\x0e\xdd\xcf\xcf\x35\xe7\xab\x6b\x3c\ \xdc\x8f\x57\x83\x83\x86\x1d\x53\x4f\x5f\x5e\xbf\xa2\xde\xeb\x2e\ \x97\x7b\x57\x68\xa7\xed\x4c\x1c\x2d\x01\x4a\x6d\x0d\xaf\x6a\x95\ \x84\xe4\x00\x4f\x03\x90\x9e\x6b\x92\x93\x19\xbb\x73\xef\x5b\xe4\ \xb4\x4b\x81\x28\x54\x84\x2f\xca\x5a\x52\x07\x27\x38\xe7\x68\xc9\ \xf9\x27\xd6\xbb\x88\xa3\xc5\x5e\xe2\x46\x48\xda\x77\x77\xae\x48\ \xeb\x35\x85\x7a\x63\x5f\xcf\x43\xa9\x57\x85\x31\x2a\x53\x4a\x24\ \xa8\x39\x9c\x73\xcf\xb9\xdc\x08\xf4\xe7\xe2\xb9\xd8\x98\x38\xbc\ \xcb\x99\xd3\xe8\xea\x97\x83\xa2\xde\xda\xaf\xa9\x24\xd0\xf2\x57\ \xf6\x19\x31\x5d\x59\x40\x12\xfc\x45\x21\x44\xe4\x6e\x27\xca\xaf\ \x9c\x72\x40\xc7\x35\x65\xe9\xd2\x0b\x45\x09\x75\xc5\xa3\x76\x7d\ \x89\x1f\xe5\x55\x26\x88\x9c\xa9\x53\xdc\x5e\xc6\xc2\x6e\x4d\x26\ \x42\x80\x56\xe5\xf8\xa0\x04\x3b\xdf\xfb\xd9\xe2\xad\x9b\x11\x2d\ \x24\x2d\x40\x05\x27\x29\x20\x7f\x64\xfb\xfb\xd6\x5a\x6b\xac\x18\ \x84\x49\xe3\x24\x36\x85\x25\x38\xca\x8e\x4e\x07\x39\xcd\x28\x8c\ \x0a\xdb\x4a\x82\x46\x3b\x8f\xce\x91\xc5\xe4\x11\xb9\x58\x4e\x55\ \xbb\x07\x38\x22\x9c\x60\x92\x12\x12\xb4\x8e\x3d\xfb\x1c\xd6\xb4\ \x60\xbd\x85\xab\x05\xa6\x14\xb3\xf7\x12\x33\x4c\xec\xba\x23\x95\ \xcd\x77\xcf\x25\xc2\x43\x69\xfe\xc0\xc7\x6f\x83\xf3\x4f\xb2\xd1\ \xba\x1a\x53\xc9\x0a\x50\xdc\x3d\xc5\x31\xbe\x94\xf8\x86\x43\xdb\ \x90\x9c\x04\xa9\x27\xdf\xd0\x7d\x39\xef\x53\x2d\xef\xd8\x10\x77\ \x42\x37\x5c\x7e\x79\x4b\x89\x3b\x02\xd3\xc7\xb9\x1e\xf5\x93\x36\ \xf4\x85\x79\x80\xd8\x57\xc9\x2a\xf5\x1d\xbe\xbc\xd4\x57\x5d\xf5\ \x33\x4f\x69\x47\x4b\x32\x64\xa5\x52\xd6\x8f\x2a\x00\xe7\x1c\xfa\ \x0f\x4a\x68\xd2\x57\x4d\x5f\xad\xae\xf3\x6d\x50\xa3\xaa\xd0\x98\ \xad\x36\xf2\x95\x35\xa5\x00\x42\xf3\xb4\xa1\x39\x1e\xd4\x3a\xb0\ \x86\xb2\x7a\xf9\x9d\x28\x60\x2b\x3a\x5c\x59\x75\x61\xda\xcb\x2d\ \x86\xa0\x21\xc2\xd1\x90\xd2\x55\x8c\x95\x77\xcf\x34\xa9\x95\xc1\ \x53\xa1\x96\xe5\x0e\x33\xc6\x7b\xfe\x35\x03\xb2\x74\xc3\x5c\xc9\ \xba\xca\x1a\x83\x5a\x2e\x2a\x07\xf5\x62\x13\x0d\xe1\xc4\x9f\x5e\ \x47\x1f\x4e\x69\xce\xd1\xd2\xbd\x47\xfa\xee\x6b\x12\x75\xb3\x8b\ \x86\xd8\x49\x8e\x44\x54\x95\x9c\xe7\x3b\xfb\x0e\x38\xed\x5a\x21\ \x59\x3d\x14\x5f\xaf\x88\xba\x94\xb0\x91\xbd\xeb\xa7\x65\xd8\xfe\ \xc4\x95\xa6\x7c\x55\x9f\x09\xe6\xd6\x1b\x00\x10\x97\x33\xc6\x73\ \x9a\x45\x71\x88\xda\x9d\x54\x97\xd7\x1d\x21\x03\x81\xb8\xa4\x1f\ \xfc\xe9\x9e\x67\x4c\x75\x5f\xeb\x76\x58\x8d\xa8\x60\x3b\x15\x6d\ \xab\xc5\x71\xd8\xca\x4b\x89\xc7\x60\x36\xab\x9c\xd6\xa9\x9d\x20\ \xbf\xa6\x4c\x7f\xb3\x6a\xb4\x96\x94\xb2\x97\x52\x5a\x51\x50\x49\ \x07\xee\xe4\x91\xdf\xde\x87\x34\xd7\xba\xfe\x5f\x92\xb1\xf6\x44\ \xee\xeb\x2f\x93\x17\x07\x6d\xe1\x94\x25\xb7\x9b\x2d\x9e\x30\x55\ \xc2\xb8\xf7\xf7\xf9\xa6\xf7\xed\x8c\x78\x61\xe8\xea\x0a\x03\x27\ \x28\x19\x1c\xf7\xff\x00\x3c\xd3\x64\xfe\x9a\xeb\xe7\x6f\x2f\xc7\ \x81\xa9\x5a\x54\x36\x9a\x07\xc6\x75\x94\xf2\xb2\x78\x4e\xd0\x3b\ \x62\xaa\x88\x7d\x40\xbc\x58\xef\x8e\x5a\xaf\xa9\x11\xa5\xb6\xe1\ \x48\x09\x27\x6a\xfb\xe3\x8f\x91\x59\xe5\x56\x12\x79\x6c\xd3\xef\ \x47\x46\x86\x06\x38\x84\xde\x1e\xa2\x93\xec\xf1\xf1\xb1\x77\xd8\ \xe5\xba\xdb\xe9\x43\x99\xc0\x59\x0a\xf6\xed\x53\x0b\x73\x9e\x2b\ \x67\x1d\xfd\x88\xee\x2a\x07\xa4\x5d\x5d\xee\x3a\x1e\x4a\x02\x14\ \x51\xe2\x2d\x03\xb6\x3d\xbf\x1a\x96\xe9\x54\x38\xea\xc9\x42\x89\ \xf0\xcf\x23\x18\xdc\x08\xff\x00\x0a\xa4\x1b\x5a\x33\x97\x88\x86\ \x59\x34\xf7\x42\xa9\x6a\x48\x56\xd5\x70\x73\x9c\x0a\x85\xea\xb9\ \xa0\x45\x74\xab\x01\x09\x49\x25\x47\xd3\x15\x2f\xbc\x2d\xa4\x29\ \xd2\xb4\xe0\xa4\x77\x57\x63\x9a\xac\x7a\x93\x34\x43\xd3\x13\x9d\ \x5a\xc2\x56\x52\x4b\x64\x9f\x55\x70\x08\xf4\x3c\x9a\x4e\x22\x4e\ \xd6\x2b\x45\x5e\x48\xab\xba\x6c\xfc\x4b\x9d\xfd\x53\xfc\x35\x96\ \xa2\x25\xdb\xa3\x8f\xa9\x39\x49\x58\xdd\x8f\x4e\x78\xc8\xfc\x2b\ \x9b\x2d\xab\x4b\x97\xf5\xaf\x79\xfd\xa3\x8a\x70\x1e\xdd\xce\x45\ \x5c\x1a\xab\x57\xc2\xb6\x69\x39\xda\x77\x4a\x2f\xed\x17\xcb\x8c\ \x77\xff\x00\x59\xba\xda\xbc\x36\x58\x64\x27\x7b\xbb\x72\x7e\xf9\ \x48\xc6\xd1\xdb\xd3\x92\x2a\x97\x69\x6f\xb7\xe1\xc9\x79\x95\xe1\ \x01\x28\x0a\x50\xc2\x7b\x70\x3f\x2e\x6b\x6e\x06\x8b\x50\x93\xed\ \x27\xa4\x2b\xc5\xd5\x82\xff\x00\x5d\xce\xab\xd1\x3a\xa3\xec\xf6\ \x98\x2f\x3a\xb0\x15\x25\xa4\xed\xc1\xfb\xd8\x1c\x91\x52\xc9\xfa\ \xb5\x94\x4e\xb2\x41\x65\x64\xc8\x9d\x28\x20\x25\x3d\xc3\x69\xe5\ \x4b\x23\xdb\xd2\xb9\x3e\xcd\xad\x1e\xb7\x5b\x7c\x36\xd2\x65\xcd\ \x07\x6a\x1c\x5e\x4a\x50\x8c\xf0\x94\x8f\x41\x9c\xf1\xc7\x3e\xf5\ \x62\xf4\x9e\xe1\x24\xdc\x57\x74\x92\x97\x6e\x37\xd9\x3e\x44\x04\ \x72\x23\xb6\x0f\x61\xe8\x9f\xc6\xb7\x55\xc5\x55\xa5\x45\x41\x7a\ \xfc\x1e\x62\x78\x05\x79\x54\xde\x28\xeb\xeb\x54\xe5\x3e\x86\xd8\ \x4a\xce\x4e\x33\xcf\x02\xa6\x76\xf4\x06\x9a\x4e\x72\x4e\x39\x26\ \xaa\xbe\x9d\x6f\x0e\x0f\x1d\xd4\xad\xce\xe7\x6f\x61\xf4\xab\x3e\ \x2b\xa9\xc6\x49\xf4\x1d\xf9\xae\xec\x33\x4a\x8c\x6e\x72\xe9\x68\ \xf5\x16\x49\x92\x96\x5a\x0a\x3c\x9a\x29\x39\x47\xda\x9c\x39\x00\ \xa5\x23\x91\xef\x45\x11\x8d\x34\xba\xc3\xdc\xaa\x37\x78\x95\x3d\ \xa1\xc5\x39\x68\x82\x33\x84\xa0\x2f\x1f\xfe\xe2\xa9\x44\x8d\xbe\ \x63\xb7\x1c\x7d\x4f\xfa\xef\x49\x74\xf0\x26\xcf\x18\x0e\xf8\x73\ \xd3\xfe\x31\x54\xaa\x50\xdc\x84\x8c\xe4\x9f\xe3\x5a\xa1\xee\xa3\ \x0a\xd8\x90\x69\x48\xa1\xb8\xc5\xcd\x99\x2a\xef\x4e\xef\xb9\xe1\ \x34\xa5\x9c\x80\x3b\x7c\xd6\xab\x33\x61\x10\x90\x12\x79\x29\xac\ \x24\x61\xc9\x29\x63\x90\x3b\x9e\x3b\x55\x89\x39\xeb\x52\x3d\x6f\ \x93\xa3\x75\x5d\xc6\xed\xe0\x0d\x46\x35\x1f\x84\x87\x16\x47\x8e\ \x94\xf8\xe8\x4a\x5b\x49\xfb\xde\x1f\x81\x9c\x0e\xc4\x66\xa6\xb7\ \x88\xf6\x59\xfa\x8b\xa8\xee\x6a\x94\xc7\x5b\xd0\x22\x34\x61\x2a\ \x47\x78\xd1\xfc\x00\xa0\xb6\x89\xfb\xa4\xb9\x92\x54\x9e\x77\x00\ \x3d\x05\x48\xf5\x2f\x4d\xdb\xd4\x17\x55\x29\xf9\xea\x79\xa5\x3c\ \x97\x1c\x69\x31\x59\x42\xd6\x10\xa0\xa4\xb6\x5d\x08\xdc\x50\x14\ \x91\xc6\x73\xc7\x7a\x95\x4b\xd2\xd1\x66\xb8\xd4\x9b\xdd\xaa\x0c\ \xa7\x18\xe5\xa7\x1e\x8e\x95\xa9\xbf\xf9\x24\x8e\x3b\xfa\x56\x7c\ \xba\xea\x51\x52\x93\xd6\xc5\x6f\xa1\x61\xb3\x73\xea\x56\x86\x95\ \xa9\x61\x44\x7e\x63\xba\x4d\x4e\xc9\x54\x96\x92\x54\xb7\x53\xe1\ \x61\x4a\xc8\xe5\x63\x93\xf1\xcd\x48\xfa\xcf\x74\x87\x2a\xf5\x66\ \xb3\xb9\x68\xb7\xdc\x9f\xb8\x4a\x52\x23\xfd\xbf\x1f\x67\x65\x48\ \x6d\x4a\x2b\x3c\x1f\x36\x32\x12\x07\x24\x9e\xe2\xa4\x37\xb4\xda\ \x27\xa1\x86\xe4\x5a\x60\x4c\x72\x32\x8a\xd9\x72\x44\x74\x38\x5a\ \x51\xee\x50\x54\x0e\xd3\xf2\x29\x04\xfb\x6c\x0b\xa4\x6f\x06\xe9\ \x06\x2c\xd6\x77\x6e\xf0\xe4\x34\x97\x13\xb8\x76\x38\x50\x23\x35\ \x31\xa4\xd4\x9c\x86\x37\x68\x64\x44\x2f\xa1\xd2\x25\x33\xa7\x2e\ \xec\xb4\xeb\x4a\x8f\x1a\xf9\x31\x96\x10\xca\x8f\x82\x86\xc2\xf2\ \x12\xdf\xf7\x39\xe3\xe0\xd4\x66\xe7\x19\xcb\x8c\x2b\xb7\x4e\xa2\ \xa9\xc4\x3d\x6d\xb8\xcf\xbc\x32\x1b\x27\x29\x6f\xc1\x0e\xc7\xfc\ \x3c\x69\x23\x8f\x5f\x0f\xeb\x57\x0c\x68\x71\x62\x21\x48\x8b\x19\ \x98\xe9\x70\x82\xb4\xb6\xd8\x48\x2a\xc0\x19\x38\xf8\x00\x67\xe0\ \x52\xad\x3b\x6a\xb7\xa6\x74\x8b\x92\x61\xc7\x13\x1d\x40\x6d\xc9\ \x01\xa4\xf8\x8a\x48\xec\x92\xae\xe4\x0f\x6a\xb4\xa9\xf5\x52\x65\ \x14\x2f\x64\x51\xfa\xda\xe4\x8d\x5b\xa0\x75\x76\xae\x6c\xe6\x3c\ \xe3\x6b\x84\xc1\x07\x90\x84\x38\xca\xd6\x07\xb7\xed\x5e\x70\x7d\ \x51\x4b\xb5\x94\x25\x69\xed\x51\xaa\xa2\xe9\x88\xe8\x80\x4e\x8c\ \x12\x7c\x28\xa8\xd8\x0b\x89\x79\x68\xf1\x00\x1f\xbc\x10\x3b\xf7\ \xe2\xad\x56\x74\xed\x8d\x98\x8e\x5a\x51\x68\x80\x9b\x76\xed\xc6\ \x20\x8c\x8f\x07\x21\x41\x40\xec\xc6\xdc\xee\x00\xf6\xef\xcd\x2f\ \x4c\x18\x5f\xac\x0d\xc0\xc4\x8f\xf6\xc2\xc8\x64\xbf\xe1\x8f\x10\ \xb6\x0e\x42\x37\x63\x3b\x72\x49\xc6\x71\x93\x51\xc2\x2a\xe1\x72\ \x17\xa4\x9a\xb2\xc2\xd7\x7a\x05\x8d\x26\x88\xcc\xa6\x6d\xb2\x51\ \xb8\x88\xa7\x1f\x68\x8e\x1a\x4a\x9b\x71\xdc\x7d\xe5\x78\xa4\x61\ \x4a\xe4\x95\x2a\xa1\x1a\x11\xb9\x73\x6c\x9d\x32\xb4\xbb\x0e\xd9\ \x36\x03\xb6\xd9\xeb\x6a\x3d\xcd\x65\x31\xde\x90\x1d\xc7\x20\x25\ \x5b\x96\x94\x12\x52\x08\xf5\x26\xae\xcb\x45\xaa\xd9\x68\x92\xec\ \xab\x55\xb2\x14\x27\x9e\x20\xba\xa8\xec\x25\xb2\xe1\xfe\xf1\x03\ \x9f\xc6\x97\xc7\xb3\x69\xfb\x85\xa9\xbb\x13\xd6\x0b\x59\xb7\xb5\ \xfd\x54\x43\x11\x05\x94\x77\xec\x8c\x6d\x1d\xcf\x61\xea\x69\x33\ \xa2\xe2\xdc\xb9\x0e\x8c\x73\x59\x7a\xe5\xf6\x1b\xfa\x63\x6a\x9d\ \x60\xd0\xf1\x2d\x17\x29\x91\xa5\xb9\x1c\xba\x96\xdc\x8e\xe2\x96\ \x80\xd1\x71\x45\x08\x0a\x57\x27\x68\x21\x3f\xf5\x6a\xa0\xd0\x4d\ \xb5\x22\xc3\xd3\x28\x17\x64\xa1\xdb\x1c\xbb\x8d\xdb\xc7\x65\xee\ \x59\x75\xf4\xba\xe9\x61\x2b\x1d\x8f\x3b\xc8\x07\x82\x40\xae\x88\ \x8b\xa7\xa3\x43\x88\x86\x22\x34\xd4\x76\x1b\xe1\xb6\x9a\x40\x4a\ \x12\x3e\x00\xe0\x73\x49\x17\xa7\xec\x66\xc6\x6c\xa6\xcd\x6e\xfd\ \x5c\x92\x4f\xd9\x3e\xcc\x8f\x07\x24\x95\x13\xb3\x1b\x79\x24\x93\ \xc7\x72\x4d\x2f\x34\x5f\xba\xc7\xcb\x0f\x2d\x2f\xa5\xbf\x05\x0b\ \xa9\x63\x43\x3a\x37\x56\xc4\x61\x98\xee\xd8\x60\xeb\x08\x88\xb7\ \x82\x90\xa6\xd8\xca\xd9\xf1\x90\xde\x78\x4a\x02\x94\xa1\x81\xc0\ \xc9\x15\x7a\xa6\x14\x48\x28\x6d\x88\x2c\x31\x1a\x3a\x01\x4a\x1a\ \x65\x01\x28\x4f\x3c\x80\x07\x03\x9a\xdb\x1e\xd1\x69\x55\x98\xd9\ \xd5\x6c\x82\x6d\xc5\x3b\x0c\x42\xc2\x3c\x12\x33\x9c\x6c\xc6\xdc\ \x67\xe2\xb2\x72\x0c\x48\x10\x99\x89\x06\x2b\x11\x23\x34\x36\xb6\ \xd3\x2d\x84\x21\x03\xd8\x24\x70\x2a\xd4\xfa\xb3\x21\x52\xb2\xb9\ \x8e\xd4\x91\x4e\x56\x73\x84\x28\x7a\x53\x7a\x53\xe5\x19\xa7\x1b\ \x42\x78\x55\x4d\x67\xd4\x63\xa8\xae\xba\x15\xca\x21\x2d\x13\xfc\ \x6b\x7c\x70\x7c\x04\xe7\xeb\x9a\x4d\x30\xf9\x42\x7d\xcd\x2b\x4a\ \x7f\x60\x12\x38\xe2\xb1\x4b\xdd\x46\xd8\xfb\xcc\x88\xeb\x46\xae\ \xd3\x11\xe1\x5a\xe4\x47\x87\xce\x16\xfb\xa8\x2b\xda\x3f\xba\x3d\ \xfe\xb5\x51\xf5\x36\xd8\xf7\xea\x77\x23\xae\x4c\xa9\xea\xda\x77\ \x2b\x21\x0a\x5f\xc0\x20\x60\x55\xed\x75\x64\xae\x31\x6d\x23\x19\ \xe4\x9a\x84\x6a\x6b\x62\x1c\x86\xa1\xb3\x3c\x56\xc8\xae\x25\x2c\ \xa8\xc3\x56\x0f\x3d\xcf\x9f\x7d\x44\xb4\x48\x62\xe0\xf3\xe6\xd9\ \x2e\x3a\x4a\xb1\x87\xdd\x4b\x8a\x19\xf9\x00\x1f\x4a\x85\x38\x95\ \x15\x01\xe7\x42\xc7\x21\x47\x23\x9f\xf5\xeb\x5d\x45\xd6\x2b\x3b\ \xa9\x87\x39\x29\x04\xe5\x95\x29\x3c\x76\x29\x1b\x87\xf2\xae\x5f\ \x59\x90\xb7\x08\x5b\x8b\x21\x4a\xc0\xca\xb8\x15\xcc\x95\x19\x52\ \x76\x91\xd6\xa7\x5d\x56\x85\xd2\xd5\x16\x2e\x87\xeb\xc7\x54\xb4\ \x7a\x5a\x8f\x13\x50\xb9\x70\x88\xd8\xc2\x63\x5c\xd0\x24\x20\x0f\ \x60\xa5\x79\xc0\xf8\x0a\x15\x2d\xbf\x75\xe9\x7d\x44\x81\x1e\xd1\ \xa9\xf4\xfb\x11\x2e\x09\x75\x02\x34\xd8\x6e\xa8\x21\x27\x70\xdd\ \xb9\x0a\xc9\xec\x38\xc1\xaa\x42\x42\x1a\xd8\x95\x36\xa4\x9e\x3b\ \x81\xdc\xe3\xd6\x93\xef\x53\x4b\x0a\x6d\x5e\x1a\xb7\x02\x0f\xaa\ \x48\xe4\x7f\x1a\x44\xf0\xf4\xea\x2d\xac\x69\x86\x2a\xa5\x29\xa7\ \x7b\xfa\xed\x3a\x67\xa6\x45\x2f\x6a\x47\xd8\x43\xe8\x41\x8d\xbc\ \x84\xf0\x0b\x4e\x28\x85\x67\x8e\x30\xa3\x93\xb7\xd3\x15\x7f\x59\ \x10\x50\xd8\x04\x27\x05\x1b\xbb\xf2\xa5\x1a\xe5\x2e\x83\xc8\x4c\ \xfb\xf1\xb8\xc8\x79\x6d\x36\xb4\x12\xf3\x69\xe4\x15\x8e\x0a\x86\ \x7d\x87\x38\xf8\xae\xa5\xd3\x24\x22\x33\x7e\x33\xbb\xbc\x4f\x38\ \xcf\xb6\x3f\xca\xb8\xb2\x86\x4a\xb9\x4e\xd5\x49\xf1\x20\xa4\xb6\ \x25\x50\x0a\xca\x96\x16\x52\xb5\x63\x00\x03\xda\x97\x46\x52\x10\ \xb1\xfb\x5d\xe1\x7c\xe0\xfc\x7b\x53\x5c\x22\xd2\xdd\x29\x28\x29\ \x46\xd0\x06\x13\x80\x41\xe7\x03\xf9\xd2\x97\x4a\x9b\x53\x7e\x1b\ \x5b\x92\xa3\xb4\x2f\x3c\x53\x91\x85\xad\x49\x2b\x23\xc4\x8c\x53\ \xc8\x23\x04\x53\x25\xf9\x97\x14\xd1\x4b\x27\x6a\xd2\xad\xe8\x1e\ \x83\xde\x97\xdb\x24\x00\xda\x71\xb4\x92\x39\xc1\xfb\xd5\xb6\x72\ \x42\xd4\xac\xa7\xb6\x3e\xa6\x99\x6b\xab\x95\x83\x71\x91\x46\x4e\ \xe9\xb5\x82\xdd\xaf\xef\x9a\xbb\x53\xb5\x3a\xe9\x0e\xe7\x19\x5e\ \x24\x65\xb4\x1c\x4b\x3c\x64\x84\x6d\xe5\x3f\x74\x04\xe3\xb6\x69\ \xce\x77\xe9\x2d\xd3\xb8\x71\xac\x1f\xab\x2d\xb7\x6b\x95\xd5\x6c\ \x84\xcd\x86\xcc\x52\x87\xa0\x36\x13\x85\x21\xd2\xb0\x01\x21\x40\ \x70\x32\x3b\x9c\xf2\x33\x69\x49\x6d\x0e\xb4\xa6\xdc\x47\x88\x95\ \x27\x18\x20\x62\xab\xed\x53\xd3\xf6\x1d\x92\x6e\x16\xc0\x84\xaf\ \xb1\x49\x47\x21\x3e\xa9\x04\x73\x8f\x8a\x74\x54\x5d\xf9\x5c\xdf\ \x4e\x34\x71\x35\x23\xc7\x93\x49\x7c\xbf\x17\x2b\xab\x87\x5e\x3a\ \xd4\xbb\xbc\xfb\xed\x93\x42\xda\xcd\x8e\x42\x52\xd4\x18\x92\x9b\ \x5b\x8e\xb5\x8c\xe1\x64\xa0\xa4\x92\xac\xf2\x31\x8e\x06\x3b\x12\ \x61\x8c\x7e\x92\xdd\x75\xd2\xb2\xa7\x4e\xbf\xd9\x2d\xf3\x1a\x98\ \x50\x19\x44\xcb\x72\xda\x6e\x36\xdc\xf9\x5b\xd8\x52\x48\x39\xe7\ \x71\x51\xe0\x73\xef\x74\x5b\x6c\x17\x96\x96\xd2\x90\xeb\xe8\x2a\ \x07\x87\x8e\x43\x7c\xe0\x10\x78\xc5\x2e\x9f\x66\xbb\x86\xca\x27\ \xc0\xb7\xdd\x5b\x20\x28\x87\xd9\x2a\x42\xbb\xfa\x03\xc6\x31\x4f\ \x8d\x24\xb5\x5e\xbc\xcd\x18\x8c\x0e\x0d\xbc\xb0\xd1\xf8\xaf\xaa\ \xfa\x94\x13\x1f\xa5\x47\x5a\x2e\x17\xf6\x6f\x31\x2d\x16\x43\x16\ \x33\x2b\x4a\xa1\x22\x0b\x85\x85\xa5\x58\xf3\xac\xef\xdf\x91\x8e\ \x08\x50\x1c\x9e\x0e\x6b\x46\xbd\xfd\x21\xfa\xb9\xaf\xf4\xd3\xba\ \x61\x16\x9b\x55\xac\xc9\x79\xa5\xfd\xa2\xd8\x97\xdb\x92\x14\x85\ \x85\xa4\x21\x45\xc3\xb7\xcc\x91\xc8\x19\xab\xd9\x36\x7b\x92\x98\ \x71\xa8\xac\xc1\xb4\x43\x3c\x2d\xa8\x51\x40\x04\x1f\x7d\xd9\xa6\ \xf7\xf4\xc4\x25\x02\x5b\x33\x14\xe2\x70\x12\x1b\x09\x4e\x4f\xb8\ \x20\x70\x6a\x5c\x5d\xbd\x7d\xcb\x51\xe8\xbc\x25\xba\xed\xdf\xb9\ \xaf\xb6\x9f\x32\xb4\xd1\x9f\xa5\x06\xba\xd3\xd3\x05\x83\x5a\xdb\ \x5f\xb9\xcc\x5b\x69\x6d\xd5\xb4\xca\x03\xe1\x40\x79\x54\x02\x78\ \x59\x23\x04\xf6\xe6\xa5\xd3\xe0\x5a\xfa\x99\x7a\x87\x76\x4d\x96\ \x7c\x6c\x38\x95\x7e\xdd\x92\xca\xca\x10\x90\x84\xa5\x5e\xc5\x58\ \x2a\xf8\xc8\xa9\x1e\x95\xd1\xad\xb7\x72\x33\x1f\x84\xd2\x16\x95\ \x79\x5f\x71\x01\x4f\x2d\x3f\xd9\x2a\x3e\x61\xef\xed\x53\xf8\xad\ \xa1\x0d\x25\x96\x5b\x28\x1d\xb7\x7a\x8c\x7a\xd6\x4c\xb0\x84\xae\ \xbe\xeb\xe1\xd9\xfc\x04\xb8\x78\x4a\xad\xd3\x77\x7c\x9a\xd3\xe7\ \x6d\xdf\xcb\x53\x56\x9c\xb4\xa6\xd0\x5c\x43\x28\xfb\x36\xe6\xc3\ \x6d\xa0\x2b\x77\x03\xb7\x3e\xf5\x2a\xb3\x30\xdc\x56\xde\x53\x79\ \x4a\x49\xce\x7e\x69\x14\x64\xee\x71\x03\x68\x0e\x01\x8e\x7b\x1f\ \x6a\x5f\x3d\xd4\xb5\x04\x10\xa1\x85\x63\x27\x3e\x94\xb7\x6b\xdc\ \xe5\xd6\xa9\x29\xbd\x77\x64\x67\x54\x3e\xa7\x0e\x12\x40\x2e\x2c\ \x20\x7d\x3b\xf0\x6a\xa3\xeb\xec\xc8\xc8\xd2\xef\xc4\x53\x85\x0d\ \x17\x1a\x42\x54\x9e\x4f\x0a\xdc\x4f\xc0\xc0\x3f\x95\x59\x12\x65\ \xa5\xc9\x6e\x28\x20\x29\xb6\x12\xa2\x94\xf7\xc9\xf7\x1f\x87\xa5\ \x50\x5f\xa4\xad\xd7\xc2\x8d\x11\x90\xea\x52\x14\xf9\x52\xd4\x39\ \x07\x00\x0e\xdf\x88\x35\x86\x5d\x79\xa4\xb9\xb3\x4d\x15\x95\xdd\ \xf2\x29\x3d\x51\x01\xb5\x6a\x2b\xbb\x61\x84\x15\xc9\x96\x0a\x48\ \x40\x3e\x12\x42\xf2\xad\xbe\xd9\x38\xc7\xba\x6a\x51\x1a\xde\xe4\ \xad\x04\x34\x9c\x87\x12\xa7\xe7\x4a\x52\xe1\xf8\x80\x00\xb9\x03\ \x09\x46\xd5\xfa\x03\x94\xa7\x9e\xc4\x1c\xf0\x6a\x2e\xdc\xa6\xe4\ \x33\x35\xf4\xa5\x68\x2e\xb9\x90\x47\x00\x1d\xaa\xc2\x7f\x3d\xbf\ \x95\x48\x27\xdc\x1c\x77\xf5\x54\x64\x04\xb9\x1d\x69\x42\xdb\xf7\ \x4a\x82\x48\x2a\x1f\x50\x8e\x7e\x41\xae\x83\x8d\x49\xa4\xbf\xd6\ \xc2\xe6\xe9\x53\x4d\xda\xf7\x4f\xee\x57\x96\xc9\x42\xd5\x39\xf8\ \xd7\x1b\x72\x64\x01\x96\x9d\x6d\x44\xa1\xc4\x28\x1f\xdd\x50\xec\ \x41\xfa\x8f\x71\x56\x7d\x87\xa8\x71\xd9\x65\x98\xd1\x6e\x0b\x43\ \x28\x40\x4e\xc7\xe1\xa5\x05\x27\xea\xd9\x19\xfa\xe2\xa3\xd7\x1d\ \x2e\xbb\xea\x95\x24\x2c\xb5\x39\x5d\xd4\xae\xce\x9f\x93\xef\xf3\ \xeb\xeb\x5a\x6c\x5a\x1a\xe6\x66\x04\xce\x2b\x8a\xd8\xfd\xe5\x23\ \x3f\x85\x6d\xc5\xd2\xa7\x17\x9e\x5b\x9c\x9c\x3c\x95\x78\x70\xe5\ \x6b\x17\xde\x84\xea\x4d\xbe\x1b\x6a\x91\x26\x78\x53\x68\x1c\x9d\ \x87\xf8\x0e\x6a\xcc\xb3\xf5\x6a\xcb\x37\xc3\x69\x13\x52\xb7\x1c\ \xc0\x65\x86\x92\x5c\x75\x7e\xde\x54\xe7\x68\xf9\x56\x2a\x91\xd1\ \xdd\x3f\xd3\x72\x5c\x4c\x6b\x83\xd2\x66\x36\x4f\xdc\x6b\xf6\x40\ \x9f\x92\x39\x35\xd0\x5a\x1f\x4e\x59\x2c\x50\x50\xcd\x92\xcf\x12\ \x0a\x55\x8c\xa9\xb4\x0d\xea\xfa\xa8\xf2\x7f\x3a\xac\x31\x78\xa7\ \x68\xd3\x8b\x39\x18\xaa\x58\x58\x36\xa1\x26\xc9\xf6\x97\x93\x2a\ \x4c\x60\xf3\xad\x96\xc2\xb9\x09\x3d\xe8\xa7\x1b\x5b\x78\x8e\xca\ \x07\x07\xf9\xd1\x5d\xbc\xce\xcb\x3e\xe2\xe9\xc1\xa8\x95\x8d\x91\ \xb0\xd5\x92\x13\x84\x67\x21\xc3\xff\x00\xf7\x15\x5b\xa4\xa0\xee\ \x40\xe0\x80\x72\x69\x7c\x08\xa5\x5a\x1e\xdb\x29\x00\x12\x9f\x13\ \x38\x1f\xf1\x8a\xa6\xf7\x54\x56\x94\xac\x80\x30\x73\xc0\xad\xd4\ \xdd\xe0\x8c\x0d\x58\x99\xdb\x49\x4c\x26\xc9\x27\x84\xf1\xc7\x15\ \xaa\x18\xdd\x31\xc7\xb3\x9c\x71\xc8\xe4\x57\x96\x97\x02\xed\xc9\ \x3b\x8e\x40\xe4\x66\x8b\x77\x09\x77\x18\x3e\x6c\x7c\xd5\x80\x8a\ \x33\xd4\x9b\x85\xb2\xdf\xa8\x35\x08\xd3\x08\x95\x6b\xb1\x5d\xff\ \x00\x56\xcb\x58\x9b\xb5\xe5\xa8\xb8\x94\x05\x34\x8d\x98\x57\xf5\ \x8d\x93\xb9\x49\xee\x7d\xb3\x4f\x57\xde\xa2\x49\x82\xbd\x4b\x6d\ \xd4\x76\x96\x20\x3f\x67\xb6\xa2\xe4\x55\x12\x59\x7d\x0e\xb4\xbd\ \xc3\x6e\x4a\x11\x85\x85\x27\x6f\x6c\x1c\x83\xc5\x37\xbd\xd3\x8b\ \xdc\xae\x9b\xeb\x2b\x23\x72\xad\xc9\x95\x7e\xd4\x29\xba\x45\x52\ \x9c\x58\x42\x1a\x0e\xc7\x56\xd5\x9d\xb9\x0a\xc3\x2a\xe0\x02\x39\ \x1c\xf7\xc2\x8d\x5d\xa1\xdf\xbe\x6a\x2d\x53\x3e\x64\xa6\x5b\xb7\ \x5e\x6c\x4d\xdb\x1b\xd8\x49\x75\xb7\x12\xb5\xab\x79\x49\x18\xc0\ \xdc\x08\xe7\x9c\x7a\x57\x36\xf2\x95\x4c\xdd\x86\x9f\xdd\x85\x3b\ \x76\xaf\xbf\xe0\x8d\x5a\xb5\x35\xc0\xdf\xad\x96\x9b\xe5\x99\xb8\ \x2b\xbb\x30\xb7\xa1\xa9\x99\x5e\x36\x0a\x00\x52\x9b\x73\x28\x4e\ \x15\xb4\xe7\x23\x20\xf3\xcf\x19\xa6\xfb\x37\x51\x26\x49\xd1\xcc\ \x6a\x69\x36\x16\xe3\xc7\x9a\xa6\x23\xc0\x6c\xcc\x1b\xe4\x48\x71\ \x7b\x08\x27\x6e\x10\x80\xac\xf9\x8e\x4e\x01\x38\xf4\xa7\x96\x34\ \x5e\xa5\x93\x7f\xb3\x5e\xaf\x92\x2d\x89\x4d\x9a\x3b\x88\x60\x44\ \x52\xd4\x5f\x71\xc4\x04\x17\x14\x14\x91\xb0\x6d\x07\xca\x37\x7d\ \xe3\xcd\x31\x40\xe9\xc5\xd9\x7d\x2b\xb4\x69\x79\x2e\xc1\x54\xfb\ \x5b\xe8\x92\xda\xd4\x92\xe4\x75\xad\x0e\x15\x84\xa8\x10\x0a\x90\ \x41\x20\xf1\xeb\xeb\xeb\xba\xf2\x7b\x18\xda\x91\x27\xd2\xba\x99\ \x77\x69\xd7\x6b\x5c\xb8\xf1\xe3\xcf\xb6\x38\xda\x5d\x4c\x79\x1e\ \x33\x4e\x21\xc4\xee\x42\xd2\xad\xa9\x3c\xf2\x30\x47\x04\x1e\xf4\ \xcd\x17\x57\x3d\xa5\xee\x1d\x43\xb9\x4d\x82\xf3\xdf\xaa\x53\x6f\ \x77\xc3\x4c\xd5\x2d\x0b\x69\xcd\xc9\x1b\x10\xa4\x80\xda\xb6\xf2\ \x40\xc8\x27\xd7\xd6\xa5\xda\x27\x4d\xbd\x00\x48\x76\x65\x96\xc9\ \x6c\x52\xca\x70\x8b\x6a\xb7\x05\x81\x9e\x54\x7c\x34\x76\xc9\xc7\ \x1c\x64\xd4\x7f\x59\xe8\x0b\xcd\xe7\xfa\x7e\x88\x4f\xc0\x48\xd4\ \x31\xa0\x35\x13\xc5\x5a\xc7\x86\x58\xce\xf2\xe6\x12\x70\x0e\x78\ \xc6\x7e\x71\x54\xa8\xdb\x8e\x85\xad\x24\x93\x5e\xb4\x62\xa7\xf5\ \x45\xe9\x8d\x51\x36\xc7\x70\xb2\x43\x89\x70\xfd\x54\x6e\x71\x76\ \x4c\x53\xad\x94\x85\x6c\x28\x70\xf8\x69\x29\x50\x51\x1d\x81\x18\ \x3c\x76\xa6\x1d\x25\xad\xef\x4d\xe8\x3d\x39\x36\xee\xcc\x19\x97\ \x1b\xd3\x88\x66\x17\xfb\x41\x6c\x2c\x90\xa5\x2d\x6e\x9d\x98\x42\ \x52\x13\xfb\xa1\x5e\x82\xa7\x57\x0d\x2b\x2e\xe1\xd4\x8f\xe9\x1a\ \xde\x8e\x88\x46\xc0\xe5\xb0\xa3\x71\xf1\x43\xaa\x79\x2b\xdd\x8c\ \x63\x6e\x01\xf5\xce\x7d\x3d\x6a\x14\xd7\x4b\xef\xc9\xd2\x5a\x7e\ \xd5\x2c\xd9\x1f\x93\xa7\xa4\x05\xc6\x0b\x5a\xdd\x62\x5b\x78\x52\ \x54\x97\x12\x50\x36\x12\x95\x0c\x63\x7e\x08\xa8\x53\x90\x4e\x13\ \x4e\xe8\x5b\x23\xa9\x2e\x33\x64\x2f\xfe\xa6\x4b\xd7\x16\xef\x89\ \xb2\xbb\x11\x99\x61\x49\x53\xaa\x4e\x50\xa4\x2c\x81\x94\xa8\x94\ \x72\x40\xc6\x4f\xb5\x38\x7f\x4d\xae\xb0\xae\x2e\xc1\x6a\xcf\x6e\ \x7a\xe9\x02\xd9\xfa\xc6\xe0\xd2\xee\x45\xb6\xd0\x32\xad\xad\x36\ \xaf\x0c\xef\x59\xda\x4f\x21\x23\xdc\xf3\x49\xee\x5a\x1a\xeb\x72\ \x85\x65\x8e\xd5\xba\xc3\x67\x5c\x4b\xec\x5b\x8b\xcd\x44\x52\xbc\ \x35\x36\xd2\xb2\xac\x10\xda\x77\x2f\xd0\x65\x20\x76\xe4\x53\xad\ \xe7\x42\x3a\xde\xb9\x5e\xa5\x85\x6b\xb0\xdd\xd1\x2e\x1a\x22\xc8\ \x89\x76\x04\x04\x29\x0a\x25\x2e\x36\xa0\xda\xfd\x14\x41\x4e\x06\ \x70\x39\x15\x15\x27\x24\xad\x72\xd0\x84\xef\x71\xda\x27\x53\x1c\ \xbc\x5e\xad\x76\x7d\x39\x6e\x80\xeb\xf3\xec\xed\x5d\x9a\x55\xca\ \xe0\x62\xa5\xd4\x38\x78\x69\xbd\xad\xac\xa9\x63\x07\x77\x18\x4f\ \xcd\x37\x45\xbd\xeb\x29\x9d\x53\xd6\x76\x38\xed\xda\xdc\x85\x6d\ \x8d\x10\x47\x6d\xd9\x2b\x6f\x69\x71\xb7\x94\x95\x6e\x4b\x64\xe5\ \x44\x24\x2b\xfb\x21\x3c\x66\xb7\x75\x07\x45\x5d\x75\x55\x89\x8b\ \x03\x16\xad\x37\x09\x94\x36\xd1\x8b\x3d\x2e\xb8\x97\xad\xce\x0d\ \xa5\x4a\x61\x09\x6c\x76\xc7\x1e\x74\x7a\x67\xda\x9d\x23\xe9\x9b\ \xd5\xa7\xa9\xb7\xad\x42\xc3\x90\x65\x5b\x6f\x4c\x44\x43\xc5\xd7\ \x94\x89\x0c\xae\x3a\x16\x9e\x12\x10\x52\xb0\xad\xd9\xfb\xc9\xc7\ \xb1\xac\x11\xd2\x46\xf9\x71\x25\xbf\x27\xf4\x7f\x82\x13\xa0\xf5\ \xcc\xb6\xf4\x9e\x84\x89\x6f\xb4\xbb\x36\x4e\xa1\x6e\x4a\x19\x13\ \x6e\x2a\x51\x6c\xb4\x4a\x89\x71\xd2\x92\x54\x36\x85\x1c\xed\xcf\ \x00\x01\x4e\x8b\xea\x43\xcf\x59\x4a\x5c\xb2\xb6\x2f\x89\xd4\x0a\ \xb0\x08\x68\x94\x4b\x2a\x90\x90\x14\x56\x1c\xd9\x90\xde\xcf\x36\ \x76\x64\x76\xc6\x69\x26\x8a\xe9\xd5\xea\xcc\x9e\x9d\xb7\x2a\x55\ \xb9\x6a\xd3\x3f\x6d\xfb\x6f\x86\xe2\xc8\x73\xc6\x6d\x69\x4f\x87\ \x94\x8c\xe0\xa8\x67\x3b\x7f\x1a\x43\xa8\x74\x7c\xcb\x3c\x69\xf7\ \x59\x17\x08\xac\xcb\xfe\x98\x2e\xfb\x6f\x52\x59\x79\xe6\xca\x16\ \xda\x51\xe1\xbc\x10\x82\x51\x94\x85\xe5\x40\x10\x0e\xde\x69\xea\ \xf7\x46\x5b\xd4\x50\xd7\xd6\x88\x96\x68\xad\x51\x3a\xf5\x7c\xbf\ \xd9\x6e\x36\xb6\xa0\xcb\xb2\x2d\x86\x9e\x2d\xbe\x5d\x43\x85\xc4\ \x15\x85\x24\x94\xa4\xe3\x6e\xd3\xc8\x07\x92\x3d\x39\x9f\xdb\x9b\ \x21\x9d\xde\xf5\x4a\x74\xfa\x36\xb1\x9d\x71\xd7\x77\xeb\x6a\x20\ \x35\x3a\xe9\x2a\x28\xb7\x3f\x32\x3b\xc8\x8a\xe0\x69\xb0\x85\x10\ \x08\x0b\x52\x40\xca\x42\xb0\x37\x11\x9c\x7a\x55\xe2\xdf\xec\xa3\ \x80\xac\x6e\x03\x9c\x0a\xad\x59\x5d\x58\xd3\x84\xbb\xd5\x9a\x5e\ \xf3\xc8\x48\xc7\x00\xd2\xe5\x28\x21\x19\x24\x62\x92\x46\x49\x53\ \xbb\x8d\x63\x73\x77\xcb\xe1\x8e\x29\x4e\x39\xa4\xa2\x6b\x52\xca\ \x9c\x8c\xe5\x79\x9b\xde\x80\x08\x3e\x95\x1c\xba\xb6\x92\xda\x93\ \x8a\x7a\x84\xf0\xf0\xca\x14\x7b\x53\x7d\xdb\x6a\x42\x88\x23\xb5\ \x68\xa2\xb2\xca\xc2\x2a\x4a\xeb\x32\x28\x7e\xac\x5b\xd9\xf0\x5c\ \x75\xcd\xa1\x23\x39\xc9\xc0\x23\xd4\x57\x1e\x5d\xed\x4c\xc5\x9d\ \x3a\x1b\x8b\x49\x4a\x17\x84\x2c\x11\x82\x3b\xa4\xff\x00\x01\xda\ \xbb\x8f\xa8\xed\x32\xfc\x57\x12\x52\x15\x90\x46\x31\x9c\xd7\x21\ \xf5\x4d\x8b\x7b\x77\x22\xdb\x6a\x40\x90\xc2\x8e\x50\xca\x07\x95\ \x27\x9c\x28\x8f\x5c\xfa\x52\x7a\x46\xea\x49\x8d\xe8\xd9\xae\x23\ \x8f\x69\x5b\xcb\x01\xb4\x16\xc1\x2e\x36\xda\xb3\xbb\x1b\x77\x66\ \x90\xab\x24\x03\xfc\x3d\xa9\x44\xc2\x92\xac\x93\x93\xea\x7e\x7d\ \xa9\x32\x73\x9c\xfe\x35\x96\x3b\x1b\x2a\x7b\xd6\x2c\x3e\x86\x5e\ \x55\x07\x50\x2e\xde\x9d\xa9\x75\xf4\x9f\x05\x6a\xec\x92\x01\xcf\ \xe6\x3f\x3e\x2b\xb1\xf4\xdc\xc5\x4a\x89\x1d\x78\x4a\x96\xcb\x61\ \x0e\x82\x78\x2a\xc6\x4f\x6f\xf5\xc5\x70\x15\xb5\xd7\xe3\x5d\xa3\ \xc9\x86\xa5\x25\xd0\xa0\xa6\xcf\x63\xbb\xbe\x2b\xae\xfa\x67\xa9\ \xc4\xcb\x4c\x0b\x8c\x64\xbc\xff\x00\x8a\x0b\x8e\x82\x07\x99\x69\ \x49\xcf\xd0\x9e\xd8\xf8\xae\x46\x3a\x9e\x4a\xaa\x6b\x66\x75\xf0\ \x53\xe2\x50\xc9\xce\x25\xcd\x16\x52\x52\x50\xe8\x20\x21\xd0\x0a\ \x49\xf5\xee\x08\xc7\xa7\x22\x9c\x96\xe2\x50\xc6\x14\xe6\xc5\x28\ \x85\x79\xbd\x0e\x2a\x31\x6d\x7d\x1f\x64\x3b\x5b\x07\x01\x2b\x4a\ \x09\xc7\x98\xf7\x03\xe0\x71\x4f\x4a\x79\x29\x4b\x99\x41\x53\x89\ \x4f\x09\xce\x48\x57\xf6\xbe\x9e\xff\x00\x14\xa8\xcb\x40\x9a\xd4\ \x75\x83\x28\x21\xe4\xa9\x4b\x40\x07\x18\x27\xb6\x7d\x85\x3b\xaf\ \x2e\x34\x57\x90\x49\xc1\x2a\x1f\xcb\xe0\xd4\x2e\x44\xc2\xc3\xa1\ \x01\x40\x37\x80\xb5\x85\x71\xdf\xdb\xe7\xe9\x4f\x91\x64\xed\x61\ \x05\x04\xbb\x9f\xbe\x53\xc7\x70\x3b\x81\x53\x09\xf2\x29\x28\xb5\ \xa8\xe0\xa4\x2b\x07\x91\xbb\x18\x15\xa0\x85\x24\xf2\x33\x8e\x4e\ \x3b\x66\x94\xa0\x95\x25\x21\x5e\x53\x8e\xc1\x40\xee\xac\x78\xf3\ \x63\x18\xf5\xc5\x35\x3b\x30\x4e\xe6\xa6\x9c\x6b\x2a\x52\xc6\xd0\ \x91\xe6\xdc\x3d\x3e\x2b\x15\xc8\x86\xd9\x48\x52\x41\xe3\x00\x9e\ \x72\x3e\x4d\x6c\x75\x2d\xa5\x25\x6e\x1d\xde\x98\x1d\xe9\xbe\x41\ \x65\x2a\xcb\x4d\x95\x82\x9c\x7d\x0f\xe3\x5a\x23\x27\xc8\xba\xd4\ \xd8\xe3\xd1\x0a\x77\xb8\xc0\xce\xfd\xaa\x1e\xde\xf5\x8a\x26\x47\ \x52\x40\x65\x9f\x2e\x4e\x71\xed\xee\x6b\x4a\x76\xe7\x7f\x86\x9d\ \xc4\xf3\xba\xb0\x2b\x47\x2a\xd8\x9c\xe7\x83\xc0\xcd\x44\x99\x74\ \x66\x42\x4b\xea\x4a\x52\x13\xc7\x7a\xf5\xb4\xa1\x2d\x03\xd8\x93\ \xe9\xe9\x5e\x87\x02\xd4\x70\x3c\xc7\x9c\xfa\x56\xc4\xe1\x03\x9f\ \x4c\x9a\xcd\x32\x1b\x33\x8e\xb2\xdb\x81\x69\x4e\x48\x1c\xe3\xda\ \x91\x6a\x7b\x88\xf0\x91\x19\x05\x3b\x94\x00\x48\x07\xd7\xbf\xe7\ \xde\x92\xbb\x74\x47\x88\xa0\x97\x30\xda\x81\x4a\x47\x62\x78\xe4\ \xf3\xed\x51\xb8\x73\x45\xc1\xf3\x26\x46\xe5\x36\xc2\x89\x6c\x64\ \x83\x9e\x47\x22\xb3\x54\xa9\xa6\x54\x4c\x61\x77\x77\xc8\xdb\x73\ \x92\x88\x50\x9c\x38\xd8\xe1\xdc\xb5\x0f\x82\x3f\xf4\xae\x45\xfd\ \x23\xee\xce\x4d\xea\x0b\x50\x50\xea\x14\xcc\x78\xe8\x52\x90\x83\ \x90\x95\xab\x24\x83\xf8\x60\xfe\x22\xba\x2b\x59\xea\x08\xd0\x62\ \xbf\x26\x44\xa5\x33\x19\xb4\x17\x5c\x58\x20\x8e\x07\x63\xf1\xdb\ \x1f\x53\x5c\x63\x74\xb8\xae\xe9\x7e\x99\x76\x78\xef\x5c\xa9\x0b\ \x70\x83\xc7\x04\xf0\x3f\x01\xc7\xe1\x4c\xc0\x43\x3d\x57\x3e\x4b\ \xf9\x23\x15\x2c\x94\xd4\x79\xcb\xf8\x26\x3a\x45\x98\x32\xad\xaf\ \xc7\x7d\x61\xb5\x12\x92\x8c\xf6\x57\x03\x82\x7d\x06\x78\xcf\xcd\ \x2a\xb1\xb9\x19\x6e\x8b\x53\x8d\xf8\x32\x63\xa8\x96\x52\xb1\xc9\ \x0a\xdb\xce\x7d\x71\x83\xf9\x9a\x61\xb0\x2d\xc5\x35\x15\x4d\x2c\ \xee\x5b\x9f\x67\x29\x00\x1d\xc7\xba\x4f\xe3\x8c\x54\xef\x4a\x5a\ \xad\xf7\x99\xa9\x44\xe6\x54\x95\xc7\xe5\x0f\x32\xad\xab\x49\x3c\ \x00\x0f\xc7\x7c\x56\xa8\xda\x32\x95\xfb\x6e\x65\xc7\x55\x6a\x9c\ \x6f\xee\xd8\xb0\xf4\x96\x9b\x6a\x64\x54\x82\x90\x54\x45\x3f\xa7\ \x46\xbe\xc4\x8c\x82\xa0\x83\x4b\xb4\x16\x9d\x9d\x0c\x20\xb3\x73\ \x72\x52\x06\x30\x97\x1b\x09\x50\x19\xe0\x64\x77\xab\x76\x25\x97\ \xed\x70\xc0\x59\x4e\xe0\x3b\xd7\xa6\xc3\xca\x96\x2e\x9a\x94\xe3\ \xb1\xe5\x25\x26\xa5\x64\xee\x40\x34\xc6\x9e\x66\x2b\xe8\x50\x40\ \xef\xcd\x5a\x70\xa1\x25\x31\x52\x52\x00\x18\xa4\x30\x2d\x6d\xb4\ \x54\xd9\x00\x28\x76\x38\xa9\x0d\xa4\xa4\xb4\xa6\x57\xf7\xbd\x05\ \x6b\x9a\x8c\x17\x55\x15\x83\xbb\xb3\x1c\xed\xa9\x4e\x5a\x38\x3f\ \x18\xa2\xbd\x86\x76\x6d\x49\xfd\xd3\xcd\x15\xcc\xaa\x9b\x91\xd1\ \xa5\x2b\x22\x23\xd3\xf4\xa2\x7f\x4f\xa2\x30\xa0\x0a\xb0\xe6\x7d\ \xff\x00\xac\x55\x47\xe4\x47\x5c\x69\x0b\x8c\xb3\x8c\x1e\x29\xc3\ \xa7\x4e\xaa\x2e\x95\x84\xe8\xe5\x2a\xdf\x91\x9f\xf8\xc5\x53\xc6\ \xa1\x84\xd4\xc8\xe2\x54\x70\x0a\xc1\xce\x12\x39\xf9\xae\x8d\x35\ \x97\xc0\xe5\xdf\x34\x13\xe6\x86\xdd\x36\xf6\x50\xb6\x16\x7b\x1e\ \x29\xc2\x18\x29\x7d\xc4\x92\x78\xf8\xa8\xfb\x0e\xa9\xa7\xbc\x40\ \x08\x29\xe0\x8c\xf7\xa7\xa6\xde\x0e\x29\x0f\x24\xe4\x91\x83\xcd\ \x34\xa1\x36\x61\x59\xb5\xa4\xf7\xf2\xfa\x53\x55\xc4\xe4\x21\x19\ \xf2\x9a\x53\x6a\x7d\x0b\x82\xb6\xf3\xd8\x52\x39\x4f\x21\xc2\x87\ \x10\x77\xa4\x28\x8c\x83\x9e\x41\xc7\xf0\x39\xac\x54\xe2\xe3\x36\ \x6e\xab\x25\x28\x23\x09\x6b\x42\x23\xec\xf8\xf4\xa4\xf1\x51\xe2\ \xad\x0d\xa9\x5b\x73\xdf\x8a\xc1\xc5\x87\x65\x7e\xd3\xee\x27\xde\ \x86\xe4\x36\xbb\x80\x65\x97\x10\xa7\x50\x37\x29\xb0\xa1\xb8\x24\ \x9e\x0e\x3d\xbe\x6b\x52\x56\x46\x56\xee\xc5\x8f\x34\xe4\x7f\x32\ \x14\x14\x07\x7a\xdf\x15\xc0\xc3\x41\x6b\x18\x2a\x3d\xab\x25\xb6\ \xb4\xac\x2c\x1c\xa4\x8e\x45\x78\x52\x1d\x58\xe3\x18\xa4\x39\x66\ \x5a\x8e\x4b\x2b\xd0\x1f\x2b\x0b\x49\x6c\x67\x75\x6c\xfb\x32\x0a\ \x14\xa5\x2c\xee\xaf\x51\xb8\x37\xb0\x0e\x47\x6c\xd6\x4b\x6d\x69\ \x8d\x84\x9d\xca\x35\x46\xf9\x0c\x4b\x98\x91\x59\x1b\x14\x01\xe0\ \xd2\xbc\xa5\x6d\x05\x03\x8c\x52\x28\x72\xe2\xc9\x6d\x69\x61\xf6\ \xa4\x6d\x25\x0a\x2d\xac\x28\x02\x3b\x8c\x8f\x5a\x51\x19\x0f\x79\ \x80\x42\xb6\xfa\x66\xa6\x5a\xa2\xb1\x1c\xa3\x9d\xc1\x1f\x5a\xd9\ \x3d\x43\xca\x3b\xd6\xa8\xe1\x48\xda\x14\x9c\x7a\xd6\xa9\x6f\x85\ \x38\x40\x3f\x15\x95\x46\xf2\x35\xb9\x5a\x06\xb4\x11\x95\x2b\xd2\ \xb4\xe7\x72\xca\x88\xaf\x1d\x5e\x06\xc4\xe3\xe6\xb7\xc4\x60\xac\ \xf3\xf7\x45\x3f\x48\xab\xb3\x3e\xb2\x76\x46\xfb\x7b\x3d\xdc\x57\ \xe1\x5b\xdd\x56\xe5\x63\xd0\x77\xaf\x14\xb0\x06\xc4\x70\x2b\xc4\ \x83\x90\x9e\xe6\xb3\xbb\xb7\x76\x69\x4a\xca\xc8\xd8\x95\x06\x9a\ \x2a\x3d\xe9\x08\x4f\x8e\xb2\xb5\x76\xad\xb3\x49\x2b\x0d\x03\xc5\ \x68\x79\x41\x86\x4f\x22\xad\x05\x65\x7e\x6c\xac\x9d\xdd\xb9\x21\ \xae\xf1\x31\xbb\x78\x2e\x29\x61\x29\x1e\xa4\xd5\x6d\xaa\xba\xb3\ \xa6\xa1\xb4\xe2\x5c\xb9\xb3\xe2\x20\xe0\xb6\x16\x9d\xd9\xfa\x66\ \x9b\x3a\xf7\x7f\xbc\x1b\x78\xb6\x59\x1f\x87\x1a\x43\xc7\x2b\x91\ \x25\xcd\xa1\xa4\xfb\x81\xea\x4f\x35\xcc\xea\xd3\x2f\xb4\xa9\x92\ \xef\x1a\xa6\x3c\xd0\x7c\xc6\x34\x62\xa2\x1d\x50\x3c\x0c\x80\x06\ \x73\x58\xf1\x58\xfe\x1c\x94\x56\xe4\x50\xc3\x2a\xd7\x72\x95\x91\ \x33\xea\x8f\x56\x15\x70\x6d\xd8\xd6\x44\x4b\xda\x78\x5c\x8d\xc1\ \x00\x7c\x05\x67\x8a\xa1\x2e\xd3\x9f\x78\xe5\xf7\xc3\x3b\x95\x93\ \x80\x4e\x13\x8e\xfc\xf7\x27\xde\xac\x8b\x9c\x3b\x2b\x70\xb6\x5c\ \x25\x22\x12\x10\x90\x7c\x24\xba\x92\xa2\x48\x04\x1c\x9f\xf0\x15\ \x06\xbc\x4f\xd3\x0c\x33\x25\x11\xd8\x54\xd7\xd6\x02\x5b\x75\x6a\ \x52\xd4\x9e\x73\x9c\x9c\x01\xf9\x1a\xcd\x1a\xb3\xae\xf3\x49\x1d\ \x5a\x31\xa1\x41\x64\xa7\x7b\xbd\xd9\x11\x52\x14\xb6\x8b\xab\x25\ \x3f\xd9\xcf\x75\x13\xed\x58\x0c\x11\x9c\x7e\xed\x6d\x93\x25\xc9\ \x0e\xf8\x8b\x3b\x71\x9d\xa9\x4f\x61\x5a\x52\xa2\x84\x28\xfb\x8a\ \xd2\xaf\x6d\x4c\xf3\xb5\xf4\x14\xb0\x7c\x29\x4c\x3e\x47\xef\x05\ \xe3\xf1\xab\xbf\xa6\x12\x57\x67\xbc\xa2\xce\x40\xf0\x5d\x74\x3f\ \x1d\x59\xf2\xe7\x82\xa4\xfd\x78\xcf\xfe\x95\x56\xea\xeb\x6c\x2b\ \x65\xc5\x9b\x5a\x56\xa0\xf2\x2d\xec\x97\x54\xa5\x64\x87\x8a\x02\ \x94\x9e\x4f\x03\x9e\xde\x98\xab\x45\x88\x6a\xb8\xe8\x7b\x55\xd5\ \xb5\x94\x3b\xe1\xb4\x54\xe2\x40\xdc\x95\xa7\x8c\xe3\xe7\x18\xfc\ \x6b\x99\x8f\x95\xe1\x17\xc9\xfa\x47\x6f\xa2\x62\x9c\xa7\x0e\x7e\ \xae\x5f\x76\x7b\xcb\x29\x75\xe5\xad\xd0\xb6\xf8\x4a\x41\xe3\x9d\ \xde\xde\xd9\xf5\xa9\x23\x52\xdb\x56\x77\x27\x6a\x0a\x55\xb4\x13\ \xdf\x68\xc1\xdc\x7e\x3d\x2b\x9e\xb4\x96\xa3\x75\x49\x5c\x49\x0a\ \xf0\x25\x05\xed\x78\x2b\xb6\x33\x9c\x83\xed\x90\x4d\x5b\xba\x72\ \xfa\xc4\x88\xcf\xc4\x5a\xd2\xe2\x8e\x49\x4e\x41\x51\x48\x27\x27\ \xf1\xe0\xf1\x5c\xd8\xcf\x2b\xca\xcd\xb5\xb0\xed\x2b\xa2\x62\xb7\ \x1a\xfb\x39\x5b\xdb\x7c\x40\x37\x00\xa3\x95\x03\xeb\xf4\xe3\xf9\ \xd6\x36\x1b\x92\x52\x1d\x42\x1d\x59\x64\xac\xe7\x27\x71\x38\x38\ \x18\x3e\x99\xf4\xa6\xb6\x6e\x2d\x29\x85\x48\x3e\x11\x64\xa0\xab\ \x07\x2a\xe3\xe3\xdf\xe9\xf1\x4d\x0f\xce\x62\x25\xe2\x38\x6a\x3e\ \x5e\x71\x7b\x7c\x24\xaf\x0a\x2b\xc6\x46\xef\x7c\x0c\x7e\x75\x6c\ \xf6\x69\xa3\x26\x4b\xe8\xcb\x36\x43\xcb\x4b\xc8\x70\xe1\xa6\x90\ \x00\x69\xa0\xac\x92\x9f\x53\xc7\xcf\x14\xe0\xdc\x9d\xea\x05\x21\ \x38\x3d\xf1\xe9\xf5\xa8\x8d\x9e\xef\xe2\xba\x8d\xd2\x9a\x4e\x5b\ \xcb\x98\xe5\x48\x03\xd7\xf0\x3c\xd3\xdb\x6f\x17\x23\x78\xc8\x2a\ \x79\x0e\x04\x84\x24\x0e\xe0\x1c\x67\x3f\x3e\xd5\xae\x3a\xea\x8c\ \xed\x5b\x46\x2c\x75\xc7\x14\x14\x12\xa4\xab\x1c\x2b\x3d\xc5\x68\ \x62\x30\x74\x82\xa7\x95\x8e\x48\xcf\x35\xb5\x97\xd1\xb1\x0e\xba\ \xb4\xaf\x6a\xca\x4a\x47\x74\x91\xc7\x3e\xf5\xbe\x2a\xda\x01\x68\ \x20\xb9\x85\x67\xcc\x30\x47\xb5\x3e\x04\xa9\xe9\xa1\x8a\x62\x6f\ \xf3\xa5\x3b\x8a\xb3\xf8\xe3\xf9\x1a\x4d\x22\x2a\x9d\x5a\x90\x52\ \x84\xa7\x1b\xb9\x39\x27\x07\x9a\x5b\x1d\xc0\x42\x96\x96\xd4\x0e\ \x77\x04\x13\xc9\x07\xbd\x27\x7d\x63\x6b\x6a\x0a\x04\x94\xfa\x1e\ \x70\x7b\x8f\xaf\xc5\x59\xd8\x9c\xcd\x31\xb3\x86\xde\x70\x24\xfe\ \xcd\x05\x27\x70\x3c\x12\x78\xff\x00\x43\xe6\xb4\xc8\xb9\x25\xa6\ \x1c\x7d\x4b\x46\x5b\xc9\x20\x1f\x51\xee\x2b\x75\xd9\xf4\xc6\x61\ \xd9\x2d\xc8\x4a\x08\xe4\x93\xdf\xd3\xd3\xe9\x51\x6b\xbc\xef\x05\ \x6d\xa9\x4d\x2d\x95\x2b\x97\xc1\x19\x1c\xa7\x21\x43\xdf\xb7\xf1\ \xac\x75\x5e\x51\xab\xac\x37\x6a\xeb\xab\xbf\xa9\xd4\xb6\xd5\x97\ \x54\xe6\xd6\x4f\x8b\x9c\x05\x0e\xff\x00\xcf\xf9\xd6\xb6\x66\xa5\ \xb8\x3e\x47\x47\x8a\x94\x02\xe0\x20\x60\x64\x11\xe9\xe8\x78\xc5\ \x43\x2f\x77\x17\x2e\x37\x56\x19\x8e\x84\xa9\xb6\x4e\xf5\xad\x18\ \xfb\xf9\x00\xfe\x1c\x9f\xc6\x91\xeb\x9d\x4c\xbb\x44\x05\x33\x0f\ \x2e\x4f\x53\x48\x43\x0c\xb6\x39\x56\x0e\xe2\x15\xec\x30\x39\x3e\ \x95\xcf\x93\x6e\x5a\x1b\x23\x4b\x44\x8a\xd3\xf4\x8b\xd5\x81\x71\ \xe3\xe9\xb8\xc9\x42\x5c\x7d\x09\x76\x56\xd5\x79\x91\x85\x1c\x24\ \xfe\x40\xd5\x2e\xc7\xdc\xf2\x9e\x41\xc9\xac\xae\xd3\xe4\xdd\x2e\ \x92\x2e\x53\x56\x1c\x7e\x43\x85\x6b\x50\xed\x9f\x61\xf0\x2b\xd4\ \x36\xb4\x46\x53\xdb\x78\x48\x1f\xc7\xff\x00\x4a\xf4\x58\x7a\x0a\ \x85\x25\x1e\x7f\x53\x83\x88\xaf\xc7\xaa\xe5\xc9\x6d\xe0\x3d\xda\ \x56\xa1\x66\x79\xa6\xc9\x3b\xdc\x6d\x48\x29\xee\x9d\xa4\xf2\x3e\ \x40\x3f\xc6\xa7\x5a\x1f\x54\x45\xfb\x53\x28\x9c\xff\x00\xd9\xa4\ \x17\x3f\x79\x3f\x7f\xb6\x09\x3e\x87\x15\x5b\x45\x56\xd8\xd9\x6f\ \x25\x25\x59\x71\x3f\xd9\x48\xe7\x23\xf9\x56\x6b\x2a\xb8\x45\x61\ \x29\x70\x05\x85\x1f\xeb\x09\xdc\x9e\xdf\xbd\xed\xf5\xaa\xba\x69\ \x4f\x30\xca\x96\xad\x47\x86\xfd\x7a\xb9\xdb\xfa\x4a\xec\xd3\x71\ \x98\x74\x10\xa4\x2d\x20\x85\x24\xe4\x1a\x91\x47\xd6\xf1\x5c\xbf\ \xb1\x60\xb6\xbc\x99\x37\x07\x12\x1c\x5b\x2d\x9d\xde\x0b\x7e\xab\ \x59\x1f\x77\xe0\x1e\x49\x22\xb8\xbf\x4e\xe9\xad\x63\x2c\x22\x09\ \xbf\xa2\x04\x65\x01\x95\xae\x5f\x00\x0f\x4c\x24\x93\x9f\x8a\xe9\ \xae\x84\x58\x2c\xfa\x56\xd8\x61\xdb\xdd\x12\x25\xbe\x77\x4b\x98\ \xaf\xbc\xf2\xbd\x07\xc2\x47\xb5\x3d\x63\xea\x4d\xa8\x52\x77\xf0\ \x38\x18\x9c\x1a\xc3\xdf\x3b\xd7\xb0\xbf\x5a\x69\xa9\x51\x52\xb6\ \xd4\x03\x80\x73\x9e\xe6\x92\x9f\x15\x87\x72\xa0\x52\x53\xdf\xe6\ \xb7\x5a\xc2\x56\xd8\x52\x09\xc8\x02\x97\xb8\x12\xa4\x6d\x79\x00\ \xf1\xc1\xae\xec\x65\x28\xab\x48\xcb\x93\x32\xb9\xa9\x89\x88\x51\ \x05\x20\xe4\xf1\xc5\x14\xb2\xc9\x6a\x6d\xb7\x0c\x85\x64\x83\xd8\ \x1a\x2b\x35\x5a\xd0\x8c\xac\x91\xaa\x95\x19\xca\x37\x6c\x83\x68\ \x26\xf6\x69\x78\x6d\x39\xf7\x72\xe1\xe7\xd4\x78\x8a\xa7\x92\x55\ \x1d\x59\x46\x14\x8f\x50\x07\x06\xb5\x68\xd8\x45\xee\x9f\x5b\x24\ \x23\xcc\xb4\x87\x09\x03\xd7\xf6\x8a\xa5\x29\x56\xe4\xf9\xbb\x8e\ \xfc\xd6\xca\x53\x53\x89\x86\x50\x70\x48\x41\x32\x14\x79\x61\x4e\ \x30\x42\x17\x83\x94\xd3\x4c\x66\xe7\x37\x2c\x44\x43\x6a\x3b\xbd\ \xbb\x54\x89\x4c\x24\x80\xb4\xf9\x71\xeb\x4e\x9a\x5e\x08\x5b\x85\ \xf7\x46\xec\x1c\x73\x56\xa9\x35\x08\xb9\x30\x84\x1c\xe4\xa2\x8a\ \xab\xa3\x76\x3b\x64\xed\x57\xaa\x97\x72\xb2\xbf\x2e\xe0\xc6\xa5\ \x92\x23\xdc\x17\x1f\xc4\x6a\x39\x43\x6d\xad\x20\xab\x23\x18\x56\ \x48\x1e\xea\x1e\xf5\x96\x96\xd4\x57\x4b\x26\x89\xb4\xb5\x6b\x83\ \x65\x44\xcb\x86\xb5\x91\x65\x79\x42\x3a\xd2\xc9\xdc\x5e\xcb\xdb\ \x37\x95\x67\x7a\x52\xa2\x9d\xdc\x80\x52\x08\xce\x45\xad\xa1\xf4\ \xbf\xf4\x65\x7a\x81\x62\x77\xda\xbf\x5c\x5e\x5e\xba\x01\xe0\xec\ \xf0\x7c\x44\xa1\x3e\x1f\x73\xbb\x1b\x3e\xf7\x19\xcf\x6a\x8e\xc6\ \xe9\x87\x83\x6e\xb5\xc4\x37\xcc\xfd\x83\x55\x2f\x50\xee\xfb\x27\ \xf5\x9b\x8b\x87\xc1\xfb\xfc\x7f\x59\xf7\xf9\xed\xf7\x79\xae\x44\ \xaa\x39\x3b\x9b\x23\x86\x94\x22\xac\xb5\xd7\xf9\x43\x05\xd7\x5b\ \xdd\xad\x2c\xea\xcb\x54\xe8\xb6\xc9\xd7\x8b\x4d\xca\x0c\x08\x2f\ \x34\xca\xd9\x65\xf3\x31\x28\x2d\x95\xa7\x72\x88\xd8\x14\x73\x85\ \x73\x8f\x4c\xe6\xbc\xd1\xd6\xcb\xa4\x2e\xbb\xea\x16\x2e\x72\x61\ \xcc\x79\x36\x28\xaa\x4b\xb1\xd8\x53\x29\x52\x0b\xae\x77\x49\x5a\ \xb0\x73\x91\xf7\x8f\xa7\xd2\xa4\xb7\xbe\x99\x31\x76\x9f\xab\x65\ \x3d\x78\x75\xa5\xdf\xa4\x41\x95\x1d\x4d\x32\x02\xa0\xbd\x15\x09\ \x4a\x14\x09\x24\x2f\x25\x20\xe0\x81\xc1\x23\xe6\x9c\x74\xbe\x8f\ \x9f\x6f\xd6\x73\xf5\x5d\xda\xfa\x8b\x94\xe9\xb0\x9b\x86\xb4\x35\ \x0f\xec\xed\x21\x2d\xa8\xa9\x25\x23\x7a\x8f\xa9\xce\x49\xe4\xfa\ \x0e\x28\x55\x64\xb9\x93\xec\xf2\x73\x4d\xae\x7e\x5a\xfe\x08\xdd\ \xda\xf5\xa8\xe7\xeb\xf9\x9a\x5f\x4e\x3d\x6f\x88\x6d\xd0\x1b\x97\ \x21\xf9\xac\x2d\xd0\xb7\x1c\x52\x82\x1b\x09\x4a\xd3\x84\xe1\x19\ \x2a\xc9\x3c\xe0\x0f\x5a\x43\xa7\xb5\xf4\xeb\xdc\xfe\x9f\x29\xa8\ \x8c\x47\x63\x50\xc7\xb8\x99\xcd\x9c\xa9\x4d\xbb\x1b\x6a\x70\x85\ \x7b\x6f\xdd\xe8\x72\x31\x52\xdd\x4f\xa2\xe6\x3f\xa9\xdf\xd4\xfa\ \x7a\xf6\x2d\x57\x09\x10\x93\x0e\x50\x76\x20\x7d\xa7\x10\x95\x15\ \x21\x61\x3b\x92\x43\x89\xdc\x70\x72\x46\x0f\x20\xd3\x2b\x1d\x38\ \x6e\x2c\x2d\x2a\xd5\x82\xee\xa8\x73\x34\xc8\x79\x0c\x3d\x26\x3f\ \xda\x12\xfa\x5f\x00\x3d\xe2\x24\x29\x1c\xa8\x8d\xd9\x04\x60\xfb\ \xf6\xa6\xf1\x1c\x95\xc5\xca\x95\x48\xc9\xaf\x5b\xaf\xa5\xc8\x6e\ \xa8\xd4\xfa\xa2\xed\x66\x65\x51\xae\x4c\x5b\x94\xcf\x50\xc5\x94\ \x16\x98\x3e\x66\x51\x20\x06\xf7\x79\x86\x7b\x79\x87\x65\x03\x8e\ \x2a\x7b\xd4\x46\xee\xd1\xba\x45\xa8\xd6\x8b\x8a\x3f\x58\x31\x66\ \x90\xe2\xe5\x21\x9d\xa0\x94\xb4\xa2\xa2\x94\xee\xf2\x92\x01\x00\ \xe4\xe0\x90\x79\xc6\x29\xad\x7d\x30\x5f\xea\x15\x5a\xe3\xea\x07\ \x0c\xc1\xa8\x93\xa8\x5b\x96\xf4\x40\xa0\x24\x85\x25\x44\x29\x01\ \x43\x72\x4a\x82\x8f\x05\x3c\x10\x3d\x32\x67\x97\xeb\x13\xf7\x9d\ \x0d\x73\xd3\xb2\x66\xb6\x89\x17\x1b\x7b\xd0\xdc\x94\x86\x30\x94\ \xa9\xc6\xca\x0a\xc3\x65\x59\xc0\xce\x76\xee\xfc\x6a\xae\x6e\x2b\ \x5e\x65\xa9\xd1\x9c\xaf\x7e\xc2\xb3\xe9\xfb\x97\x58\x88\xd3\x7a\ \x32\xc1\xfa\x8a\x24\xb7\x74\xe3\x57\x89\x93\x5c\xb7\x1d\xbe\x1a\ \xb6\xb6\xd2\x03\x48\x5a\x77\x2b\x20\xee\x59\x57\x61\xdb\x26\x94\ \xb7\xd4\x7d\x49\x70\xb5\xe9\x96\x6d\x70\x6d\x71\xaf\x17\x4b\xa4\ \xcb\x44\xb0\xf8\x5a\xd8\x65\xe6\x37\x65\xc4\xe0\x85\x29\x38\x46\ \xe0\x9c\x8c\xe7\x19\x1d\xea\x4f\xfd\x03\x95\x0e\x55\x92\xe7\x64\ \xbe\x88\x57\x5b\x6d\x9d\x36\x87\x1e\x7a\x1f\x8c\xcc\x96\x06\xd2\ \x0a\x9b\xde\x92\x14\x14\x9d\xc0\x85\x71\x92\x0e\x45\x68\xb7\xf4\ \xce\x2c\x01\xa5\x04\x7b\xbb\xaa\x36\x29\xf2\x27\xbe\xe3\xcc\x85\ \x2e\x6b\xaf\x25\x7b\xc9\x20\x80\x9e\x56\x4f\x63\xc0\x03\xe6\x92\ \xe4\xde\xe3\x23\x4a\xa4\x74\x5e\xb6\xfc\x93\x98\x48\x7d\x30\x98\ \x44\xc5\xb6\xec\x84\xb6\x90\xf2\xdb\x46\xd4\xa9\x78\xf3\x10\x32\ \x70\x09\xcf\x19\x35\xa6\x74\x20\xe2\x0a\x9b\xe1\x58\xef\x4b\x7e\ \x86\x81\x44\x66\xe2\xee\x8d\x92\x82\x92\xb3\x18\x63\x47\xda\x49\ \x79\x5c\x8f\x4a\x58\x09\x23\x68\x18\x4d\x6c\x94\xd8\x4b\xc1\x5e\ \xf5\xe0\xad\x2e\x79\xb5\x33\x46\x19\x74\x3d\x4a\x76\x8a\xda\xc8\ \xc6\x56\xae\xd5\xad\x09\x2b\x50\x03\xd2\x95\x3a\x90\x19\x29\x14\ \x99\x3e\x43\xa2\xb9\x8d\xb3\xb0\xb7\x0a\x93\xcf\x15\x1c\xd4\x72\ \xdd\x8d\x01\xe2\x81\xb9\x7b\x4e\xd1\xee\x6a\x40\xa5\x14\x93\x8f\ \x4a\x8f\xea\x16\x17\x25\xa5\x0f\x53\x5a\x32\xc9\xc6\xd1\x32\xd4\ \x77\xd5\x1f\x3d\xb5\xfd\xcf\x5d\xeb\xad\x61\x24\x39\x0e\x5c\x87\ \x91\x93\xf6\x76\x92\xa0\x86\x12\x0e\x30\x40\xf6\x3c\x12\x7d\x69\ \xb2\x2e\x9d\xd5\x16\x89\x6c\xbb\x71\xb6\x3e\xd3\x41\x61\x38\xdd\ \xc1\x27\xf1\xae\x90\xeb\x0c\x46\xb4\xe2\x5f\xbc\xc7\x6d\xb6\x64\ \x15\x7e\xd1\x40\x04\x97\x72\x47\x94\x9f\x73\x54\xcd\xf2\xfa\x8b\ \xf6\x9d\x79\xf8\x4a\x52\x64\x32\xe2\x56\xa6\xd6\xac\x2d\x24\x1f\ \x6f\x51\xf4\xae\x35\x49\xce\xed\x4d\x58\xe8\x61\x6a\xb7\x97\x24\ \x74\xd8\x6f\xd5\xf6\x69\x6e\x86\xa3\xb7\x66\x7c\xc9\x77\x21\x00\ \x27\x2b\x51\x03\x24\x77\xf4\x19\xa8\x33\xda\x6a\xf3\xe2\x61\x16\ \xa7\xce\x4e\xd0\x0f\x07\x3c\x9f\x7f\x83\x57\x25\xd5\x71\xcb\x08\ \x96\xec\xc6\x5a\x69\x61\x2f\x36\xe2\xdd\x09\xda\x48\xce\x46\x4f\ \xb1\xaa\xcf\x50\x6a\x75\x15\xed\xb6\x05\x25\x49\xdd\xbd\xee\xe3\ \x24\x11\x91\xf8\x13\x8f\xad\x36\x8c\x1a\xa7\x9a\xfb\xaf\x32\xcb\ \x13\x2a\xcd\x45\xc7\x62\x2b\x1d\x82\xe4\xb6\x62\xaf\x09\x53\x8e\ \x25\x18\xcf\x6c\x9c\x72\x6b\xc9\x51\x9c\x6a\x43\x8c\xe3\x1b\x16\ \x5b\x51\xfa\x1c\x1a\x5d\xa7\x19\x13\x2f\x91\xc3\x88\x52\x9b\x6c\ \x97\x5d\x24\x9c\xe0\x73\xc9\xf9\x38\x1f\x8d\x6f\xbd\x36\x7c\x57\ \x24\x38\x70\x5c\x3c\x24\x7a\xe3\xd6\x9b\x14\xdb\x7d\xc1\x27\x1b\ \xd8\xd1\x79\x94\xe5\xde\xee\xf4\xa7\x37\x3b\x35\xd7\x50\x80\xd3\ \x0d\x65\x2a\x21\x20\x71\xf9\x70\x3d\x6b\xa1\x7a\x0f\x0d\x33\xfa\ \x7c\xea\x5b\x6b\xc5\xd8\xa2\x36\x77\x25\xbc\xe4\x1e\x3f\x78\x12\ \x7f\x0c\x7b\x57\x3e\xdb\x2e\x26\xdd\x35\xb9\x6d\x36\x91\x22\x30\ \x43\xad\xa8\x7e\xea\x92\xa0\xa1\xfc\x06\x0f\xd6\xba\x17\xf4\x6a\ \x92\xe3\xa8\xbb\xac\xb5\xe0\x66\x7f\x8c\x1b\x40\xc6\xc4\xb8\x37\ \x0e\x3d\xbe\x7b\x57\x3f\x1f\xd6\xa7\x67\xca\xdf\x63\xa7\xd1\xed\ \xc6\x6e\x48\x64\xd7\xda\x6a\x4c\x29\x49\x7a\x3a\xd1\x94\x28\x2d\ \xa7\x14\x33\x90\x32\x70\x7d\xe9\xab\x4f\xea\x29\x2c\xf8\x5e\x02\ \x56\x42\x4a\x81\x69\x4b\xda\x52\xac\x85\x10\x93\xdf\x07\x9f\xc3\ \x8a\xe8\xad\x51\x64\x8b\x26\x23\x8f\xa5\x96\xdf\x52\x0a\x94\xe3\ \x09\x1e\x60\x0f\xef\xa7\xfc\x40\xf6\xe2\xa8\x6d\x71\xa2\x57\x68\ \x96\x65\xb0\xe8\x2a\x4f\x29\x52\x46\x4a\xd2\x71\xc0\xe7\xdf\xf8\ \xd7\x26\x2a\xdd\x59\x7c\x0f\x41\x0a\xdc\x4e\xb2\xdf\x99\x37\xb4\ \x6b\x95\x18\xf1\xbc\x44\xab\x85\x79\x51\x8c\xf6\x3d\xf3\xe9\xd8\ \x60\x1e\x6a\x4d\xf6\xe6\xe4\x23\x28\x5b\x7b\xd9\xcb\x89\xda\xb3\ \x95\x1e\x0a\x88\x3d\xf3\xe9\xcf\x07\x35\x45\xdb\x11\x20\x90\x84\ \x2c\xa1\xe2\x00\x2a\x74\x14\xe0\x1e\x09\xc7\xe1\x52\x07\x5d\x99\ \x0d\xf8\xbb\x9b\x12\x1b\x64\xec\x58\x2b\xf3\x2c\x77\xf4\xcf\xcd\ \x2e\x49\xa7\x64\xc9\x96\x1e\x13\xd5\x68\x58\xcc\x5d\x1a\x64\xb8\ \x43\x8b\x69\xc9\x18\x29\x52\x80\x1e\x1a\x14\x48\xc7\xc9\x24\x91\ \xf9\x54\xa6\xd5\xac\x5a\x8c\xda\x1d\x79\xd3\x15\xc4\xe5\x05\xa7\ \x10\x40\x47\xa7\x97\x9f\x31\xc2\x48\x38\xf5\xcd\x52\xd3\xae\x4a\ \x5a\x54\x63\x89\x0c\xa9\x68\x40\x6e\x3a\x8e\xd5\x67\x83\x92\xa3\ \xfb\xbd\xb1\xeb\x5b\x67\x5c\x51\x28\xc5\x6a\x6a\x32\xe4\x70\x54\ \xd2\x37\xa9\x60\x7a\x11\x8c\xf3\xdf\x9f\xad\x5a\x15\x25\x11\x33\ \xc2\x46\x45\xff\x00\x6d\xd5\x70\xd2\x43\x89\x7e\x13\x8d\xb8\x42\ \x96\x19\x70\x2b\x7a\x49\xc0\x27\xd8\xf7\xe7\xe2\xa4\x08\xba\x25\ \x4e\x36\x63\xbe\xd3\xad\x28\x00\xbc\xab\x9e\xd9\x07\x3e\xbc\x1e\ \x47\xc5\x72\xe3\xd6\xc8\xd2\xda\x53\xb1\x24\x4f\x4b\xc5\x64\x2d\ \xb2\x36\xec\x09\xe0\xa9\x40\x1c\x00\x33\x81\x8f\x8a\x77\xb6\xc1\ \xbe\x90\xd3\xd1\xb5\x1c\xd2\xca\x52\xa0\x8c\x34\x55\xb4\xa5\x38\ \x4e\x01\xf9\xfe\x74\xe8\xe2\xb2\xab\x31\x32\xe8\xf4\xf5\x4c\xe9\ \x28\xf7\x58\xaa\x52\x92\x14\xe2\xd0\xda\x4a\x4a\x89\x00\x13\x9e\ \xff\x00\xe1\x5a\xdf\xbd\x41\x8a\xa4\x93\x21\xa0\x51\xf7\xdd\x1c\ \x63\x23\x03\xe0\xf2\x45\x73\xab\x82\xf8\xd3\x0b\x73\xfa\x45\x21\ \x87\x56\x43\xcd\xb4\xf6\x08\x07\xb7\x38\xf8\x26\x9a\x2e\x97\x3d\ \x45\x21\xf6\x61\xa2\x42\x12\x8c\x8f\x0d\xe5\x76\x51\xc1\x21\x58\ \xec\x14\x71\x9c\x55\x96\x31\xb2\x1f\x47\x77\x96\xd6\xaf\xd6\xb1\ \xe6\xbf\x25\xa8\xcf\x0f\xf6\x56\x9b\x59\xdc\x78\xde\x4a\xbb\x9f\ \x73\xb4\xfe\x75\x5e\xea\x7d\x69\x2e\xe5\x30\xc1\xb7\x28\xbe\x96\ \xf2\x90\xa3\x9c\x01\xc9\x00\xfb\x60\x54\x30\x45\xbb\xcb\xb9\xa6\ \x2a\xa5\x89\x13\x23\xb1\x92\xb6\xd5\x93\xb9\x47\xd4\x01\x8e\x32\ \xaf\xce\x9c\x2d\xf6\x77\x23\x3c\xa9\x2e\xc9\x58\x65\xbc\x92\x90\ \x08\x71\x47\x27\x72\x56\x47\xd4\xd2\x67\x55\x6e\xd9\xa6\x9e\x15\ \x2e\x42\xb8\x32\x4c\x56\x1a\x4b\x1b\x5d\x90\x37\x07\x49\x18\xc7\ \x97\x95\x13\xd8\x73\xc6\x7d\x78\xe2\xbc\x76\xd6\x59\xb5\xc9\xbb\ \x5c\x14\xb7\x27\x86\x1c\x0e\x29\x49\xc2\x41\x50\xc6\x11\xfd\xd0\ \x14\x7e\xb9\xcf\x14\xe9\x6d\xb6\x26\x42\xb6\x32\xd8\x6e\x18\xfb\ \xe9\x56\x78\x57\x73\xeb\x82\x72\x7b\x7c\xd2\xfd\x7c\xc3\xcd\xe9\ \x39\xeb\x48\x51\x1f\x65\x51\x09\x3d\xd2\x00\x27\x15\x85\xd4\xbc\ \x92\x5c\xcd\x71\xb4\x59\xca\x57\x28\xc2\x3d\xc1\x6c\xa9\x25\x08\ \x49\xdd\x8f\x5c\x11\x9f\xe5\x4e\x5a\x85\x22\x38\x53\x0d\xa9\x1e\ \x19\x0d\x29\x01\xb3\x91\x80\xda\x7d\x7e\x09\x57\xe3\x9a\x75\xd7\ \x76\x97\x94\xd4\x0b\xd3\x0d\x3c\xa8\xd7\x16\xff\x00\xd9\xd6\xa3\ \x92\xa2\x00\xc8\x23\xd8\x64\x01\xf4\xa6\x3f\x1c\xc9\xb9\xb4\xa5\ \x90\x12\x97\x39\x18\xfb\xa9\xe1\x3f\xc8\x7f\x1a\xf5\x94\xaa\xaa\ \x90\x52\x3c\x7d\x5a\x5c\x3a\x92\x87\x6b\xd3\xc1\x9e\xb4\x96\x9a\ \x69\x98\x9b\x86\xf7\x88\x52\xc8\x3f\x77\x9e\x07\xe3\xdf\xf2\xa7\ \x54\x58\xe4\x7d\x91\x99\x68\x43\xfb\x06\xe2\xe0\x49\x07\x19\xc1\ \x03\xe0\xf6\xf8\xac\x64\x5a\x24\x38\x13\x28\x20\x06\x5d\xfd\xb3\ \x8b\x04\x05\x47\x4e\x70\x33\xed\xc0\xfe\x55\x63\x40\xb7\xc9\x94\ \xc4\x59\x6c\xbe\xe3\x3b\x19\x52\x92\x3b\xa5\x44\x0c\x10\xaf\x62\ \x40\x07\x3d\xb9\xac\xb8\x8c\x46\x44\x9c\x4d\xf8\x4c\x2a\x93\x6a\ \xa2\xdb\x62\x2f\xa3\x58\x9a\x99\xc0\xfe\xaf\x6a\x68\x50\xe1\x52\ \xde\xe1\x1c\xf7\x1b\x54\x39\xfc\xeb\xa8\x7a\x52\xcb\xcf\x36\x95\ \x3a\xda\x42\xc6\x32\x12\x30\x07\xd3\xe2\xa9\x58\xaf\x3a\x99\x68\ \x4c\x68\xca\x8c\x87\x0e\xe5\xa5\xb7\x02\xd2\xa3\xea\x7d\x2b\xa1\ \x3a\x3e\x85\x38\xdb\x41\x28\xca\x4f\x73\x8a\xdf\xd1\x0b\x8b\x2e\ \x26\xc7\x9f\xe9\x97\xfb\xd9\x2d\xb1\x6b\xd8\x42\xb6\x24\x67\x18\ \xa7\x83\x83\x84\xd2\x66\xa0\xa9\xa4\x78\x8c\x8f\x4e\xd5\xb0\x3b\ \x95\x03\x8e\x41\x19\xae\xd4\xda\x9b\xba\x39\xb1\x4e\x0a\xcc\x90\ \xb0\x90\x96\x52\x07\xb5\x14\x32\xa0\xa6\x52\xae\xdc\x51\x5c\xb7\ \xb9\xd4\x5b\x10\x8e\x95\x5d\xa0\xb9\xa2\xad\xd1\x0b\x98\x5a\x43\ \x80\x82\x7f\xe3\x15\x4e\x17\xa8\x06\x3b\xa5\xf6\x47\x90\xf7\xc5\ \x57\x9d\x2a\xb7\x3f\x2a\xcf\x6f\x59\x2a\x42\x32\xbc\x1c\xff\x00\ \x7d\x55\x72\xa6\x3a\x4c\x50\xd2\xc8\x56\x05\x6f\x93\x54\x1a\x6b\ \x99\xcd\xa2\x9e\x22\x9d\x9f\x22\x18\x95\x6e\x41\x23\x3f\x41\xe9\ \x52\x6d\x3a\x13\xf6\x00\x78\xfa\xe2\x9a\x2e\xf6\xb7\x23\xac\xba\ \xc8\xca\x09\xe4\x0f\x4a\x51\xa6\x66\x24\x66\x3a\xd4\x02\xb3\xc0\ \x34\xca\xed\x54\xa5\x78\x95\xa0\x9d\x3a\xb6\x91\x9c\xad\x5b\xa7\ \xda\xb3\x37\x75\x6e\xeb\x0d\xc8\x4e\x3b\xe0\x21\xe4\xb8\x36\x29\ \xcd\xfe\x1e\xc0\x7d\xf7\x8d\xb8\xf7\xa6\x87\xb5\xa5\xb3\xf5\xc2\ \x6d\x2a\xbd\x5b\x9b\xb8\xa8\x80\x98\x8a\x92\x80\xe9\x27\xb0\xdb\ \x9c\xe4\xf7\xc5\x54\xe2\x2b\xad\xf5\x81\xfd\x04\x50\xa1\x06\x25\ \xf5\xcd\x48\x36\x8e\x03\x2a\x6c\x29\x09\x1e\x98\x12\x1c\x27\xfe\ \xaf\xd2\x99\xe7\x04\x27\xa6\xd7\xdd\x26\xe2\x48\xd5\xf2\x35\x03\ \x8e\x30\xc1\x6c\xf8\xee\xba\xa9\x49\x52\x24\x24\x77\x28\x08\xc1\ \xde\x38\x00\x11\xf1\x4a\xa7\x08\xc6\x37\xb5\xc5\xd5\xc5\x54\x6d\ \xad\xac\x5f\x08\xd5\xf0\x18\x76\xe2\x87\xa7\xc7\x1f\xaa\xd0\x17\ \x3c\x6f\x19\x8e\x92\x8d\xe0\xaf\xdb\xcb\xcf\xd2\x9c\x7f\xa6\x1a\ \x65\x28\x63\xc7\xbe\x5b\xd9\x2f\xa5\x85\xb2\x97\x1f\x4a\x4b\x81\ \xe2\x52\xd6\xd0\x4f\x3b\x8a\x55\x8c\x77\xda\x7d\xaa\x89\xd4\xf3\ \x23\xc1\xbe\x75\x6e\xdf\x2d\x65\xa9\x97\x8b\x6b\x22\xda\xc6\xd2\ \x57\x2f\xfd\x88\xb5\xfb\x30\x3e\xf6\x17\xc1\xc7\x6e\xe7\x8a\x71\ \xe9\xcb\x51\xff\x00\xf6\xb3\x61\x75\xf8\xec\xbc\x5b\xd0\x50\x94\ \xd9\x5a\x02\x8a\x09\x79\x5c\x8f\x63\xf3\xf3\x51\x56\x9c\x65\xb2\ \xb3\x2d\x4b\x17\x35\x2b\x32\xed\x8b\xa9\x34\xf4\xbb\xc3\x96\x68\ \x97\xcb\x6c\x8b\x8b\x7b\x82\xe2\xb7\x25\x0a\x75\x25\x3f\x78\x14\ \x83\x9c\x8f\x51\xe9\xc6\x7b\xd3\x42\xb5\x35\x8e\x43\xd3\xbf\x52\ \xde\x6d\xb7\x09\x11\x1b\x52\xdd\x66\x3c\x94\x38\xa4\x63\x23\x90\ \x93\x9c\x64\x11\xf5\x04\x77\x15\x58\xd9\xa4\xcd\xb7\x0b\xae\x87\ \xd0\x97\xb8\xda\x92\xcf\x71\xb5\x5c\xa4\xc3\x5b\x29\x05\xfb\x3c\ \x95\x02\xa4\x21\xc7\x13\xc2\x82\xd6\xe1\xdb\xbb\x0b\x1f\x4e\xf8\ \xe8\x98\x50\x27\xc0\xd3\xb3\xc6\xac\xb7\xb9\x3e\xcf\x60\x76\x22\ \xad\x0c\x41\x0c\x48\x65\x0a\x69\x01\x4d\xbf\x95\x95\x02\x85\x24\ \x77\x03\x27\x27\xd6\xb3\x53\x76\x95\x87\x4e\xbc\xa4\xb4\x5e\xbe\ \xa3\xcc\x2e\xab\x2d\x76\x4d\x18\xe0\x66\xd7\x1e\xed\xaa\x12\xa7\ \x31\x29\xf5\x25\x88\xc8\x4a\x54\x72\x70\x0a\x8e\x48\x09\x48\xe3\ \x93\x56\xba\xee\x51\x63\xca\x83\x6f\x9d\x2a\x3b\x17\x09\xa9\x51\ \x65\x8d\xfc\xba\xa4\x24\x15\xec\xcf\x24\x00\x73\xf4\xaa\x27\xa7\ \x83\x0d\x74\x1f\x1f\xfc\x0b\x8f\xfe\x11\x75\x3d\xeb\xc3\xe8\xb2\ \xda\x6c\x5a\xcd\x41\x41\x3a\x7e\xee\xcb\xef\xa9\x23\x24\x47\x74\ \x16\x1d\x18\xfa\x38\x0f\xe1\x55\x93\xcc\xcb\x50\xa9\x28\xd3\x72\ \x6f\x6b\x7f\x09\xbf\xe4\x94\x48\xd5\xba\x7d\x11\xae\x52\x1b\xbc\ \x43\x53\x56\xb7\x14\xd4\xf5\x87\x46\x23\x2d\x23\xcc\x95\x9f\xdd\ \x23\xe6\xa1\xf2\xfa\x99\x6d\x85\x17\x55\x5c\xa7\x48\x84\x60\x58\ \x56\x1b\x49\x8b\x31\x2e\xba\xf2\xf6\x12\x5b\x52\x38\xd8\xbd\xe9\ \x52\x40\x27\x9c\x55\x55\x1e\xdb\x26\x15\xca\xd7\xa5\xe4\x21\x41\ \xcd\x76\xcc\x29\xd3\x40\x49\x23\xc5\x43\xeb\x7e\x60\xcf\xcb\x6a\ \x48\x24\xfb\x53\xb6\xb3\x6d\xc9\x07\xae\x2c\xc7\x69\xc7\x5c\x54\ \x78\x1b\x50\x84\x95\x13\x88\x89\xf4\x1f\x14\xe5\x1c\xab\x41\x13\ \xc4\xce\x4a\xfb\x7f\x4d\xfd\x89\xed\xc7\xa9\xf6\xb8\x97\xed\x2e\ \xd3\x33\xe0\x1b\x4d\xe5\xb9\x6a\x7a\x63\xaf\x84\x86\x54\xca\x1b\ \x21\x20\xf6\xc9\x2b\xc6\x3e\x98\xef\x56\x1d\x8a\xed\x6f\xbd\x5b\ \x5a\xb8\x5a\xe6\xc7\x9b\x15\xd1\x94\x3c\xc3\x81\x68\x57\xd0\x8e\ \x2a\x9f\x9b\x3a\xd5\x79\xea\x67\x4a\xe6\x5b\xe5\x45\x9e\xc2\x62\ \x5c\xca\x5d\x69\x61\x69\x0a\x11\xd9\xec\x47\xa8\xcf\xe1\x4f\xfd\ \x01\x21\xb8\x3a\xc5\x23\xca\xdb\x7a\xba\xe6\x94\xa4\x76\x48\xf1\ \x07\x03\xd8\x55\x26\xae\x87\x50\xab\x2e\x26\x56\xee\xbf\x08\x97\ \x3f\xaa\x74\xd3\xd7\xb1\x64\x66\xff\x00\x6b\x72\xe6\x14\xa4\x18\ \x89\x94\x82\xe8\x5a\x7e\xf2\x76\xe7\x3b\x87\x72\x3b\x81\x4e\x49\ \xc9\x38\x03\x9a\xa0\x35\x56\xa6\xba\x6a\x8b\xc5\x8f\xed\x72\xd8\ \x8c\xf4\x2d\x71\x15\xa3\x67\x66\x29\xf1\x62\x32\x99\x3e\x1a\x5e\ \x79\x79\x24\x6f\xdc\x39\xc2\x52\x77\x80\x33\xcd\x74\x53\x0d\x06\ \xc7\xcd\x17\xca\x86\x52\x9f\x16\x4f\xb0\xf1\x09\x0c\xb5\x9c\x64\ \xfa\xd2\x67\x25\x2d\x60\x80\x31\x4b\x8e\x08\xe6\x91\x3c\xc0\x56\ \x54\x38\xaa\xc1\xa6\xf5\x34\x4d\x34\xb4\x13\x00\x09\xc9\xf5\xa4\ \xb3\x63\x64\x9e\x29\x72\x12\x94\xf9\x48\xed\x5b\x5f\x40\x2d\x53\ \xf3\xe5\x62\x63\x0b\x94\x8f\x56\x2d\xb6\x93\x6c\x92\xfd\xed\x31\ \xbe\xc0\xda\x0a\x9e\x2f\xfd\xc0\x9f\x9a\xe2\xad\x53\x72\xd3\x8d\ \xea\xa7\x13\xa6\x5c\x71\xa8\x2a\x59\xdc\x1d\x3f\xb3\x3c\xfe\xee\ \x41\x56\x09\xf7\xae\xfa\xea\xbe\x93\x87\xaa\xb4\xec\xab\x3c\xf2\ \xf8\x8c\xf8\x1b\xfc\x25\xed\x51\xda\x42\x87\x3e\xd9\x1d\xaa\x86\ \x73\xa4\x9a\x62\xc6\xb5\x18\x36\x64\x2d\x7d\xbc\x49\x07\xc4\x3f\ \xc7\x8a\xc5\x89\x4e\x73\xd2\x2d\xdf\xe4\x5a\x85\x55\x87\x93\x95\ \xce\x74\xbb\x5a\xda\x96\xe2\x1d\xb7\x87\xdf\x2b\x38\x4b\x69\x41\ \x3b\xd5\xec\x90\x29\xb6\x6e\x92\xd4\xc2\x40\x6d\xeb\x1d\xc1\xa5\ \x67\x01\x0e\x30\xa4\x63\xfe\xd7\x6a\xbf\xf5\x45\x9e\x2c\x7b\x6a\ \xe3\xcb\x65\xb6\xa3\x23\x2a\x05\x23\x69\x6c\x8f\xde\x49\x1d\x8d\ \x55\x77\xcd\x7a\xa6\x9e\x31\xe1\xc8\x5d\xdd\x49\x4e\x13\x22\x40\ \x52\x55\xff\x00\x58\x67\xcd\xf5\xe2\x95\x1a\x55\x29\x3c\xb2\x36\ \x54\xc5\xac\x46\xb4\xe2\x37\x47\xb5\x45\xd3\xd6\xd2\x97\xe5\x37\ \xf6\xd7\x9b\x0b\x96\x73\xc3\x69\xdc\x30\x81\xef\xdb\x27\xdf\x03\ \x1e\xf4\xc7\x72\x90\xdc\xe9\xec\xbe\xb6\x9c\x6a\xda\x95\x12\x95\ \xa8\x60\xad\x23\xef\x63\xdc\xfc\x57\xaf\xb4\xe5\xd1\xe7\xee\x17\ \x0b\x82\x5d\x79\x78\x27\x68\x2b\xe7\xb0\x1c\x71\xf0\x00\xa7\xa4\ \x68\x89\x8d\x36\xdc\x8b\xf3\xff\x00\x65\x8c\x96\xc2\x92\xd1\x58\ \xde\x12\x7b\x25\x5e\x89\x27\x9e\x3d\x2a\x54\xd4\x6f\x14\xf5\x7e\ \xb4\x23\x87\xc3\xb4\xe6\x44\x6e\x46\x19\x95\x21\x70\xbc\x64\xc5\ \x71\xc5\x16\x43\xbc\xa8\x23\x77\x1b\x8f\xa9\xc6\x33\xf3\x5d\x09\ \xd0\x2b\xdc\x49\xf2\x61\x3b\x1e\x57\x8b\x30\xc2\x6e\x3d\xc1\x95\ \x0c\x29\x0a\x6b\xca\x83\xf2\x0a\x7d\x7d\xc5\x52\x9a\xe2\x74\x59\ \x0a\x8c\x21\xb6\xcb\x48\x65\x3e\x1b\x69\x6d\x20\x00\x90\x06\x3e\ \xbf\x5a\x9b\xfe\x8a\x8f\x1f\xe9\xd5\xc1\xa5\x94\x80\xe4\x1d\xd9\ \x50\xec\x43\x89\xc7\xf3\xc7\xe3\x48\xc6\xd3\x5c\x2c\xcf\x91\xab\ \x03\x51\xba\xa9\x2e\x67\x5b\x82\xd2\x23\x07\x83\x45\x6b\xc0\x1e\ \x51\xdb\x9e\xe7\xd7\x1c\x53\x16\xa4\xb6\x34\x82\x64\xc6\x65\xa0\ \xc1\x4f\x88\xb4\x21\xb0\xa0\xbc\x9e\x4a\x49\xec\x3d\xc0\xf7\xf8\ \xa9\x1c\x21\xb1\xa0\xa0\x82\x49\x47\xe3\x5a\xe5\xc6\x5b\xc9\x75\ \xb4\x3a\x5b\x5f\x2a\x6f\x27\x09\xc9\xee\x0f\xc1\x1f\x85\x72\x2d\ \x74\x75\xe3\x2c\xac\xae\x11\x65\x87\x71\x43\x49\x7d\xb7\x5d\x70\ \xb7\xb9\x58\x4e\x32\x9c\x9f\x5c\x76\xc1\x3f\x95\x7b\x74\xd0\x59\ \x82\x96\xd8\x91\xfb\x2d\xa0\x05\x31\xc9\x4e\x47\xa8\x1d\xf3\xeb\ \x8a\x9a\x16\x03\x72\xd6\x10\xde\xf6\x52\x72\xf2\x14\x13\x96\xbd\ \xf0\x3d\x52\x4e\x2a\x47\x62\x4c\x2f\xba\xd2\x52\xb6\xf0\x49\xcf\ \x73\xee\x3e\x71\x55\x85\x24\xf4\x63\x9e\x2a\x70\xd5\x14\x5c\xed\ \x0b\x70\x8c\x94\xc9\x6d\xbf\x15\x0c\x84\xa0\x06\x89\x19\x23\xe3\ \x9c\x11\xf9\xd2\x17\x2d\x2e\x43\x49\x5c\xb6\x65\x3e\xea\x94\x3c\ \x13\x90\x48\x1e\xb9\x1e\x9d\xbd\x79\xae\x9e\x30\xa3\xc8\x28\x25\ \x2d\x00\x46\x42\x47\xef\x1f\x9f\xf5\x9a\xd1\x3f\x48\xd9\x26\xc7\ \x5b\x1f\x62\x43\x24\x1c\xe1\xb2\x40\xe7\xbe\x47\xaf\xad\x12\xc2\ \x4b\x78\xb2\xd0\xe9\x34\xbd\xf4\x73\x73\xca\x92\x72\x11\x18\x04\ \x25\xc1\xb5\x41\x24\xee\x18\x39\xc8\xf5\x39\xe3\x3d\xab\x6c\x49\ \x57\x24\x20\xa8\xdb\x1f\x4b\x9e\x38\xf0\xc0\x5f\x07\x00\x8e\x31\ \xce\x06\x7b\x9f\x8c\x55\xd9\x75\xd1\x01\xb6\xc7\xd8\x5c\xf0\xb0\ \x0e\x06\x3f\x21\xff\x00\x95\x47\x67\x69\xc5\x31\xbd\x4b\x8e\x94\ \x85\x61\x1b\x92\x0e\x4f\x3d\xbe\x9d\xeb\x34\xe9\xd4\x86\xe8\xd3\ \x0c\x55\x29\xad\x0a\xc5\xc8\xf7\xa7\x5a\xf0\x5e\x0c\x23\x78\x2b\ \x74\x00\x4a\x46\x14\x32\x33\xc6\x38\xf6\x35\x82\xf4\xf3\x4e\xc9\ \xcc\x89\x2e\xba\xa2\xb5\x06\xb7\xab\x6a\x06\x4e\x71\xc7\x07\x80\ \x07\xf2\xa9\xd4\xbb\x6a\xd8\x65\x69\x4c\x72\xfa\x57\x94\xa8\x2d\ \x38\x00\xe7\x24\xa8\xfb\x7d\x3e\x29\x13\xd1\xdb\x53\x4b\x4c\x72\ \x92\x55\x80\xa2\x3d\xbf\xf2\xf7\xa4\x39\x49\x6c\x68\x55\x13\xd8\ \x8e\x38\xcb\x71\x5f\xfb\x34\x76\x5a\x68\x38\x47\x88\xa6\xbc\xa5\ \x2a\xce\x70\x7f\xb5\x93\xeb\x59\xb1\x6e\x2a\x7c\x3b\x32\x3b\xeb\ \xdd\x92\x86\x5b\x40\x52\xb2\x3f\x78\x9c\xf1\x9c\x7a\xd4\x91\x98\ \x28\x2c\x78\x88\xda\xf3\xe5\x01\x28\x0d\xa7\xcb\x91\xea\x4f\x6a\ \x72\xb5\xdb\x84\x73\x94\x21\xb4\x12\x09\xc2\x07\xaf\xa7\x34\xbd\ \x59\x57\x51\x24\x37\x59\xed\xaa\x43\x0a\x43\x81\xad\xff\x00\xf0\ \x4d\x04\x7d\xc2\x7d\x33\xea\x7e\x6b\xcd\x73\x6b\x2d\x68\x8b\xb3\ \xce\x20\x94\xb7\x11\xce\x0f\xb6\xde\xd5\x34\xb4\x5b\x5f\x59\x0e\ \xed\x04\x81\xe5\xdc\x30\x09\xa4\xdd\x4e\x65\x0a\xd2\x53\xa1\xa9\ \x29\x52\x5e\x65\x48\x71\x25\x45\x20\xa4\xf0\x46\x47\x23\x8f\x6a\ \x74\x68\xda\x39\x99\x92\x55\xfa\xe9\x23\x92\x74\x8d\x95\xfd\x4b\ \xa3\x66\xc0\x45\xdd\xc6\xee\x16\xc4\x87\xe0\x42\x75\x25\x41\xe4\ \x14\xf9\x83\x67\xba\x54\x9c\x13\xec\x47\xd2\xa1\x53\x63\x48\x83\ \x7c\x75\x2f\xb4\xb6\x9e\x52\xb2\xe6\xe4\xf6\xcf\xde\x18\xf9\x39\ \xa9\x5c\xd3\x2f\x4a\x6b\x3b\xad\xbe\x13\xeb\x71\xfb\x5c\xa5\x16\ \x55\x9f\x32\xd2\x85\x03\xb4\xe3\xdd\x2a\x20\xfd\x4d\x49\xe6\xdb\ \xed\x57\xab\x95\xc6\x59\x77\x88\xef\x86\xe3\x15\x73\xfb\x32\xe6\ \x52\x09\xf5\x21\x27\xf9\x57\x5e\x15\xa5\x4e\xa5\xd2\xbc\x65\xaa\ \xf8\xd8\xc8\xe8\xd3\xab\x04\xdb\xb3\x8f\x6f\xc8\xd1\xa4\x5b\x6c\ \x37\x21\x6d\x24\xa1\x68\x1b\x5d\x4a\x53\x95\x14\x9f\x6c\xf0\xa0\ \x06\x46\x3d\xbd\xea\x40\xe3\x0b\x7e\x32\x98\x88\xfa\x6d\xef\x6c\ \xc3\x5b\x1b\xdc\xd8\xe3\x70\xcf\xf7\x08\x27\x9f\x4f\x6a\x6b\x5b\ \x4c\xda\xe2\x96\x5a\x01\x32\x49\x21\x2b\xcf\x74\xf7\x19\x1e\xa3\ \xe6\xb1\x8b\x76\x99\x16\x64\x55\xb8\xe7\xf5\x45\x45\x0b\xf4\x71\ \x0a\x18\x29\x27\xd8\x91\xd8\xfa\xd2\x2b\x46\x51\x86\x6b\x6a\xc7\ \xd3\x9a\xab\x5a\xd0\x92\xb2\xfb\x09\x51\x2a\x54\x2d\x42\x88\x57\ \x86\x19\x86\xe9\x50\x27\x24\xa5\x2b\x57\xb2\x55\xdb\x24\x72\x0f\ \x63\x5d\x5d\xd1\x75\xb1\xf6\x26\xc2\x46\xde\xdd\xfb\x8a\xe6\x6d\ \x40\xeb\x1a\x96\x04\x78\x56\xe4\xb6\x5c\x69\xc0\xec\x17\x15\xc9\ \x69\x59\xf3\x32\xaf\x74\xe3\x91\x9f\x6c\x57\x4b\x74\xcd\xa6\xe2\ \xb4\xca\x77\x02\x43\x69\x07\x1e\xbc\x72\x6b\xb3\xd1\x52\x94\x5a\ \x8c\x79\x9e\x53\xa6\x24\x9d\x65\x3b\x59\xf3\x2e\xf8\x2b\x42\x90\ \x12\x71\x58\x4b\x80\x87\x3c\xed\x1c\x2a\x91\xdb\xc0\x2c\x83\x9e\ \x3b\xd3\x8c\x10\xb2\x4a\xca\x8e\xdf\x40\x6b\xab\x2b\xc1\xb6\x99\ \x95\x35\x35\x66\x8d\x50\x9d\x71\x9f\xd8\x3c\x9c\x7b\x1a\x29\xc1\ \x48\x42\x8f\x99\x20\xd1\x49\x94\xd4\x9d\xc6\xc6\x0e\x2a\xd7\x2b\ \xce\x9d\xa4\x33\xa2\xed\xea\x6d\x1f\x77\xc4\xc7\xff\x00\xb8\xaa\ \x96\x89\xef\x1e\x12\x85\x7e\x55\x5c\xe8\x3b\x93\xcb\xd2\x70\x62\ \x45\x47\x3f\xb4\xca\x87\x3d\xdc\x55\x4d\xe0\x25\xc6\x98\xcb\xcb\ \x0a\x56\x3b\x57\x42\x54\xd6\x54\xe4\x73\x28\xd4\x76\x4a\x23\x92\ \x67\x29\x6a\x0d\x38\x80\x73\xf8\xd6\xa9\x56\x64\x38\xe0\x90\xc1\ \xf0\x96\x39\xc0\xf5\xa2\x13\x8c\xa5\x45\xe7\x56\x94\x81\xc7\x7a\ \x71\x8f\x2e\x3c\x80\x7c\x27\x01\xf6\xc1\xac\xd2\x72\xa6\xef\x04\ \x6b\x8a\x8d\x45\x69\xb2\x0a\xab\x24\x0b\x7e\xa1\x7e\x60\x92\xe4\ \x9b\xcc\xa4\x04\x9f\xb4\xcb\x2e\x3a\x96\x81\x52\x82\x10\x92\x7c\ \xa8\xc9\x27\x81\xe9\xcf\x6a\x79\x8d\x12\x63\xb8\x0a\x46\xc1\xea\ \x4d\x73\xfe\x9c\x76\xf5\x65\xd4\xbd\x5b\xd7\x0f\xfe\xa4\x9d\x76\ \xb1\x3e\xa0\xdb\xef\x40\xdc\xe2\x5d\xf3\x20\x16\xd4\x55\x96\xd1\ \xb3\x72\x4a\x47\x70\x47\x3c\x54\xf6\xfb\xd5\x1d\x4d\x61\xd0\x16\ \x4d\x43\x74\x6e\xc0\xc4\x8d\x51\x2a\x38\xb5\xa4\xf8\x9e\x04\x08\ \xee\xa0\x2b\xc4\x90\xa2\x41\x59\x4a\x4a\x49\xc6\xd1\xc9\xf6\xa9\ \x58\x96\xa3\x64\x8c\x71\xe1\xbb\xca\x57\x5f\xdd\x8b\x46\x5d\xb8\ \x33\x18\x2d\x3c\xac\x77\x34\x8b\xef\x24\x28\x0a\xaa\xe1\xf5\xc5\ \xd6\x34\x86\xb6\x7e\xe6\xab\x5d\xe6\x5e\x9d\x5b\x29\x8b\x2a\xdb\ \xb9\x11\xe7\xa5\xe3\xb5\x07\x04\xab\x6e\xd3\xf7\xb9\xfa\x76\xad\ \x7d\x32\xea\x5c\xfb\xce\xb8\xfe\x8b\x5c\xa7\xd8\xae\xa2\x45\xb8\ \x4e\x66\x55\xa4\x29\x28\x65\x7b\xb0\xb6\x16\x14\xa5\x64\x81\x93\ \x9c\xfb\x67\xbf\x17\xa3\x55\xc9\x75\xb7\x26\xa5\x5a\x59\x96\x5e\ \x7f\xd1\x7b\x5b\x17\xbe\x2a\x6b\xdb\x8f\x2c\x7b\x73\xde\xa8\xeb\ \xd2\x46\xb2\xfd\x21\x62\xe8\x9b\xd3\xd2\x5c\xb0\x41\xb2\xaa\x61\ \x84\xd4\x85\xb4\x87\xde\x2a\xfb\xcb\x28\x20\x9c\x05\x0c\x73\xc6\ \xdf\x93\x9a\xfa\xe9\xa9\xf5\x54\x7e\x84\xeb\x3b\x53\x37\xb7\x96\ \xdd\x8f\x50\x1b\x7a\x24\x3e\x54\xb7\xcc\x62\xe0\x09\x42\x57\x9c\ \x82\x14\x33\x93\x9e\x09\x1e\xd8\xcc\xf4\xa8\x39\xe2\xd2\x83\x4d\ \x76\xf9\x1d\x71\x1f\xfa\x84\xfd\x29\x35\xcc\xf9\x00\xf4\xa6\x3d\ \x2d\x2e\xe1\x68\xe9\xfa\x67\xea\x49\x8c\x4c\x7a\x24\x45\x48\x79\ \xd8\xcc\x96\xd2\x5b\x4a\x4a\x80\x09\x2a\x3c\xed\x1e\xfc\x9a\xa6\ \x6c\x1d\x70\xba\xdd\xaf\x3a\x69\xc9\xb2\xb4\xda\xe2\x6a\x09\x8a\ \x87\xfa\xb2\x21\x59\x99\x6e\x25\x7b\x1a\x53\x8a\x2a\x21\x5b\x8e\ \x33\xe5\x1c\x11\xda\xa2\x3a\x4f\x51\xd5\x71\x11\x84\x12\x7b\xb2\ \xf6\xc7\x00\x7b\xf1\x4b\xc4\x54\x96\x86\x06\x0e\x2b\x9f\xec\xdd\ \x55\xd5\x53\x34\xec\x6b\x7a\xd9\xb7\xa7\x56\x2b\x55\x8b\x13\x8d\ \x86\x54\x1b\x42\x07\x2a\x77\x69\x56\x78\x00\x8e\xfe\x9d\xa9\xd7\ \xaa\x7d\x58\xbd\xe8\x9b\xa4\x89\x2c\x6a\x1d\x23\x75\x8f\x16\x6a\ \x59\x7e\xcc\xc3\x2e\x19\x4d\xb2\x54\x79\x53\x81\xc2\x90\xe8\x03\ \x90\x40\x1f\x1e\xf7\xa9\x37\xa5\x84\xc3\x11\x4d\x45\xc9\xec\x5b\ \xe9\x0d\x2e\x53\x91\x1a\x96\xca\xe4\x34\x01\x71\xa0\xb0\x56\x90\ \x7b\x12\x3b\x8f\x4a\x5a\xd4\x62\x1b\xda\xa3\xc5\x50\x73\x6f\x33\ \x34\xef\x59\x7a\xcd\x7d\x80\x1a\x32\xe0\x59\x22\x3e\xc8\x75\x3b\ \x93\xb9\x31\x9b\x23\x23\x23\x22\xa4\x48\xea\x56\xa2\x53\xdd\x25\ \x41\x4c\x1c\x6a\xd6\x9c\x5d\xcb\xf6\x47\x82\x94\x34\xa1\xe1\xf9\ \xbc\xbc\xac\xf7\xcf\xa5\x2d\xd4\x93\x2f\x0a\xd4\xd3\x77\xed\xfa\ \xd8\xb8\x50\x84\xa1\x24\x24\x56\xb0\x54\x49\x04\xd5\x1d\xac\x7a\ \xbb\x7a\xd3\x1a\xb2\x13\x49\xd4\x3a\x4a\xfb\x11\xfb\xb2\x20\xc9\ \xb7\x41\x61\xc0\xfc\x56\xd4\xa3\x85\x78\xbe\x21\x49\x58\x03\x04\ \x10\x39\x3d\x87\xa6\xb8\x53\xb5\xb5\xcb\xf4\x95\xd4\x56\xf8\x37\ \xf8\x0c\xb7\x12\xd4\xdf\x86\x87\xa2\xad\x6d\x86\x54\xa4\xa9\x29\ \x09\x0b\x18\x58\x2b\xe5\x7e\xb8\xec\x2a\x12\x7b\xb2\xd2\xc5\xc2\ \xf6\x8a\xd6\xf6\x2f\x26\xdf\x61\xd4\x95\x34\xf2\x1c\x48\x51\x49\ \x28\x50\x20\x10\x70\x47\x1e\xa0\xfa\x56\x69\x50\xdb\xc1\xcd\x73\ \x76\x85\xea\x1c\x8d\x3b\xd1\xdf\xb5\x5b\x6c\x96\x86\xaf\x37\x6d\ \x52\xe5\xb6\x33\x6d\x36\xb4\x47\xf1\x96\x13\x97\x96\x37\x13\xe9\ \xd8\x28\x7a\x63\x81\x52\x19\x9d\x48\xd5\x9a\x7e\x4e\xb2\xd3\x97\ \xa1\x69\x93\x79\xb2\xd9\x4d\xda\x0c\xb8\xac\xad\x0d\x3c\x8e\x01\ \x0b\x6d\x4a\x38\x21\x4a\x03\x83\xc8\xa9\x4a\xe8\xaa\xc6\x42\xc9\ \xb2\xe9\x74\x05\xe4\xa7\xbd\x64\xd9\x2a\x6f\x6f\xad\x52\x56\x0e\ \xa6\x6b\x13\xa8\xf4\x2a\xee\xf1\xec\xea\xb5\x6b\x26\xdd\x2c\xb1\ \x1d\xb7\x03\xd1\x76\xa5\x24\x12\xb2\xac\x2b\x3b\xc1\x23\x68\xf5\ \x1e\x99\x2e\x9f\xa3\xb1\x79\x5a\xa3\xa9\xde\x3a\xdc\x3e\x1e\xa9\ \x90\x12\x16\x49\xc2\x77\xaf\x00\x67\xd2\xac\xdd\x90\x43\x11\x19\ \xcd\x25\xcf\xed\x72\xc7\xb8\xc5\xde\x92\x95\x0e\xf5\x11\xbe\x59\ \x50\x5a\x51\xd9\x92\x7b\x55\x88\xe2\x12\xea\x4f\xbd\x34\xdc\x63\ \x05\x24\x82\x29\xd4\xaa\x58\x6d\x48\x5c\xe2\x0f\xd2\x59\x9d\x71\ \xf6\x81\x6c\x81\x65\x92\x9b\x52\x8e\x54\xf4\x70\x57\xe3\x9f\x65\ \x63\xb0\x1e\xc7\xd7\x9f\x6a\xa9\x74\xc7\x4d\x35\x35\xd4\x29\xf9\ \x6c\x8b\x73\x29\xed\xf6\xa4\xa9\x25\x7f\x41\x8a\xfa\x07\xa8\x2c\ \xc9\x75\x45\x41\x27\x35\x0d\x9f\xa6\x0b\xab\xf3\x24\x91\xf3\x59\ \x65\x47\x11\x52\x76\xd3\xc4\x21\x5b\x87\x1b\x24\x72\x2d\xd7\x41\ \x6a\x02\xb4\x46\x8c\x84\x48\x6c\x01\xc8\x1b\x02\x4f\xbe\x69\xbd\ \x1a\x32\xea\x64\x98\xf3\x58\x97\x35\xd0\x32\x96\x9a\x51\xf0\xd0\ \x33\xdd\x4b\x35\xd6\x92\xb4\x93\x63\x3e\x5c\x53\x4c\xdb\x03\x2c\ \x20\x82\xad\xa3\xd4\x66\x99\x53\xa3\xea\x25\xb9\x68\xf4\x84\xa1\ \xba\x4c\xe5\x6b\xae\x81\xbb\x21\x45\x61\x70\xd3\x9e\xc8\x42\xc9\ \xc0\xfa\xe2\xa4\x1d\x1b\x65\x5a\x67\xa8\x71\xd6\xb9\x49\x79\x32\ \x19\x53\x0b\x00\x14\xf7\x20\xe4\x67\xd0\x10\x2a\xde\xbe\xdb\xa2\ \x21\xb2\xae\x30\x7b\x1c\xf7\xa8\x02\xa1\x32\x9d\x47\x0d\xc8\xec\ \x27\xc7\x32\x02\x77\x84\xe1\x5b\x7d\x46\x7f\x2a\x45\x7a\x31\x54\ \x65\x79\x2d\x87\x60\xf1\x73\x9e\x22\x2e\xdc\xce\xa1\xb1\x3a\x5d\ \x8c\x84\xac\x80\xb4\xe0\x0c\x9c\xe4\x7f\xac\xd2\xd7\x99\x56\xf3\ \xcf\xec\xf1\xfe\xb9\xa6\xed\x1c\x80\xf5\xb1\x90\xf8\xc3\x88\x18\ \x3c\x7f\xaf\xc2\xa4\x25\x05\x0a\x2d\xbb\x8d\xa7\x80\xbf\x43\xf1\ \x5e\x7e\x31\xba\x3d\x14\xa5\x69\x08\x43\x01\xe4\x6c\x70\xf9\xd2\ \x0a\x4a\x88\xe7\x1f\x51\xdf\x8f\x4a\xf1\x88\xea\x8a\xc6\xd7\x4b\ \xc8\x59\x23\x12\x5a\x1b\x93\xc7\xa9\x1e\x87\xf9\xf3\x4b\x7e\xcc\ \xa4\xb8\x36\x1f\x32\xbe\x3b\x7d\x29\x54\x55\xad\xa1\xe6\x3c\x91\ \x8e\x78\xff\x00\x42\xaf\x15\xae\xa5\x5c\xb4\x3c\xb7\xc9\x74\x2b\ \x6e\x03\xc9\xc8\xf3\x27\x9c\xfc\x91\xdc\x53\xfb\x0f\xb6\x5a\xf2\ \xe3\x70\xc7\xaf\x7a\x65\x92\xcc\x77\x16\x14\xa6\x46\xff\x00\x45\ \xa7\xca\xa1\xf8\x8e\xf5\x93\x29\x2b\x40\x6c\xad\xd5\x03\xc6\x4a\ \xb3\xc5\x35\x4a\xc2\x25\x14\xf5\x16\xc9\x79\x4a\x56\xd4\x05\x67\ \x39\xc9\x38\x14\x95\xe8\xee\x48\x3e\x7f\x0d\x1c\xfd\xe4\x8d\xc4\ \x7b\x71\x4a\xa1\x42\x61\xa4\xf0\xd2\x4a\x7d\x77\x1c\xe7\xe4\xd2\ \xf0\x50\x1b\xda\x9c\x04\xf6\xc2\x7b\x51\x6b\xee\x56\xf6\xd8\x8b\ \xb9\xa7\x58\x71\x68\x5b\xac\xa9\x64\x02\x32\xea\xb8\xcf\xc2\x7d\ \xa9\x24\xad\x25\x09\xc5\x38\x95\x21\xbd\xaa\x56\x4a\x52\x00\xcf\ \x1e\xc2\xa5\x6b\x0a\x3c\xed\x01\x5d\xb2\x6b\xc0\xd0\x1f\x7c\x67\ \xdf\x03\x19\xa5\xba\x30\x7c\x87\x46\xb4\xe3\xcc\x89\xb3\xa5\xdb\ \x68\x6c\x42\x01\x40\xe0\x01\xfb\xa3\xd2\x96\x46\xb0\xb2\xc1\xce\ \x01\xe7\x22\xa4\x29\x28\xdd\x8f\xe0\x2b\x05\xa1\x64\xe7\x01\xb4\ \xfb\x9e\x4f\xe1\x54\x54\x60\xb9\x03\xaf\x37\xbb\x1a\x94\xc8\x40\ \x4a\x10\x82\x54\x79\x00\x76\x03\xe6\xa2\x7a\xed\x9f\x16\x1a\xa3\ \x24\x95\xa9\xd5\x24\x15\x27\xbe\x77\x0e\xdf\x02\xa6\xb2\xbf\x64\ \x85\x25\x03\x69\x3f\x78\xab\xb9\xfa\xd4\x79\xd8\x89\x7a\x4a\x9d\ \x74\x12\x12\x9e\xdd\xf9\xa4\xd7\x8d\xe3\x64\x32\x8c\xac\xf3\x33\ \x8f\xfa\x99\xa5\xae\xfa\x73\xa8\x92\x1e\x94\xd3\xf3\x62\x5c\xde\ \x72\x44\x69\x0c\xb0\x7f\xda\x16\xa3\x90\xc1\x09\xec\x42\xb3\xc7\ \x63\x48\xa4\x4b\x95\x09\x6f\xef\x07\xc4\x52\xc3\xb2\x22\xf0\x76\ \x38\x78\xf2\x91\xf1\x80\x47\xe5\x5d\x73\x73\xb3\x19\xd0\xde\x88\ \x48\x4a\x8a\x4e\x17\xec\x7d\xc7\xcf\x7a\xa0\x3a\xab\xa3\xdb\xd3\ \x32\x17\x7d\xb9\x38\xd4\x7b\x73\x48\x25\xb8\xed\x24\x85\x49\x7b\ \x38\x08\xcf\xf1\xfc\x0d\x3f\x0d\x55\xb9\x24\xd6\xb6\xb2\x17\x89\ \x6f\x27\x57\x6b\xdd\xae\xd2\x1e\xd4\x37\xe6\xb2\xc0\x53\x72\x52\ \xeb\x83\x72\x92\xe3\x64\x14\x63\xd8\xfb\x1a\x7b\xb7\xd8\xe5\xa1\ \x68\x2b\x69\x67\x1c\x6e\x03\x9c\x1f\x4a\xd9\xa0\xf5\x0d\xb2\xea\ \xe7\xda\x11\x21\xa6\x54\x80\x0b\x8c\xbc\xe0\x4a\x90\x7d\x7b\xf7\ \x1f\x35\x76\xe9\xb8\xf6\xeb\x8c\x64\x00\x1b\x24\xf2\x0a\x48\x20\ \xfe\x35\xe8\xf0\xf4\x28\x4e\x9e\x49\xbd\x4f\x31\x5f\x13\x56\x35\ \x1c\xb6\x65\x6b\xa5\xb4\x7c\x74\xdc\xcc\xc0\x87\xd2\xea\x95\xb9\ \x45\x47\x85\x1f\x7f\xaf\xf9\xd7\x42\xe8\x68\x31\xe2\x30\xd9\x70\ \xe5\x40\x53\x65\xb2\xc8\xdb\x6f\xa5\xb0\x81\xdf\x82\x2a\x7f\x67\ \xb5\xc5\x8e\xd2\x4a\xc0\x27\x1e\xb5\xbf\x0f\x84\xa7\x85\x8b\xb7\ \x33\x25\x4a\xd5\x2b\xcf\x34\x9d\xd8\xfb\x18\xef\x65\x2a\x6f\xee\ \x8a\xc5\xfb\xd1\x64\xf8\x6d\xb7\xdb\xbd\x64\xdc\x86\xda\x6f\x09\ \x1c\x0a\x8f\x5c\x64\x9f\x19\x6b\x09\x18\x1e\x95\x34\xe9\x29\xb7\ \x99\x68\x5a\xa5\x57\x05\xd5\x7a\x92\xdb\x5d\xcd\x12\xf0\x14\x36\ \xab\xd8\xd1\x51\x38\x8f\xac\x20\x38\x95\x6d\x57\xd6\x8a\xa4\xf0\ \x69\xbb\xc5\xd8\xb5\x3c\x6b\x4a\xd2\x57\x21\x9d\x33\x8b\x39\xcd\ \x3d\x13\xec\xe0\x84\x9d\xfe\x6f\xfa\xea\xab\x16\xd8\xcc\x86\x41\ \x12\x5c\xdc\x7d\x78\xed\x4c\x7d\x33\x4a\x63\xe8\xa8\x29\x40\x4e\ \x47\x88\x09\x3f\xfc\xc5\x53\xcb\xcf\x24\xa8\xec\x39\x34\xf4\xdc\ \x95\x91\x9a\x9a\x51\x8a\x6c\x41\xa8\x4a\x50\xe2\x42\x57\x84\x9f\ \x4c\xd2\x0b\x64\xe5\x46\x92\x97\x1a\x59\x29\x07\xcc\x33\x58\x5d\ \x1d\xf1\x64\x60\x9c\xed\x14\x89\xa6\x5c\x65\x4a\xc0\x38\x3c\xe4\ \xd3\x92\xd2\xcc\x5b\x96\xb7\x43\x03\xfa\x31\x4b\x87\xaf\x22\xb7\ \x79\x38\xd5\xef\x97\x54\xaf\xb2\xff\x00\xb9\x79\x51\xc6\x37\xf9\ \xfe\xf7\x7f\x2d\x39\x5c\x34\x82\x6f\xda\x2f\x4d\x69\x65\xdc\x5f\ \x8b\x3b\x4f\x26\x32\xad\xf7\x36\x1b\x1b\xda\x75\x84\x25\x21\x7b\ \x09\x23\x07\x19\xdb\x9e\xf8\xe7\x8a\x70\x65\xc7\x8b\x9c\x8f\x2d\ \x4a\xb4\x74\x55\x2d\xd5\x48\x5a\x30\x3e\x69\x15\x29\x53\x84\x5b\ \xb1\x6a\x71\x73\x96\x5e\xdf\xec\x6f\xbb\xe8\x9b\x96\xa2\xd0\x97\ \x6d\x39\xae\x35\x22\x6f\x2d\x4e\x42\x3c\x37\x63\x5b\xd3\x10\xb0\ \x52\x77\x05\x01\xb9\x59\x3b\x82\x4f\x27\x1c\x63\x1c\xd3\x7e\x8b\ \xb1\xea\x7b\x36\x1a\xbc\xea\xd6\xef\x31\x1a\x63\xc1\x69\xbf\xd5\ \xa9\x61\x79\xc8\xc2\x94\xb0\xb3\xb8\x80\x08\xec\x33\x9c\x9a\xb0\ \xee\x8e\x06\xe1\xa8\x77\xf4\xa6\x46\x90\x56\xa4\x23\x3d\xeb\x36\ \x1d\x75\x5b\x35\xd7\x84\x54\xd5\xb7\x21\x9d\x4e\xd1\x37\xc7\x64\ \xb1\xd4\x0d\x08\xff\x00\x85\xab\xad\xb1\x15\x1d\xb6\x14\x84\xa9\ \xb9\x8d\x28\xf2\x85\x6e\xe3\x70\x0a\x51\x07\xd4\x80\x3d\xb0\xd3\ \x6c\xe9\x64\x1b\x97\x43\xdf\xd2\xf2\x1e\xb9\xda\xe6\xdd\xde\xfb\ \x74\xe9\x13\x59\x41\x7c\x4a\xde\x09\x2a\x42\x55\xb4\xa7\xca\x00\ \x01\x5d\x8e\x73\x92\x6a\xeb\x68\x78\x51\xc0\xed\x81\x4c\x77\xb7\ \x49\x4e\x32\x72\x4e\x69\x54\xe3\xc4\x99\x35\x68\xc2\x0b\x37\x76\ \xc6\xbd\x2d\x6b\x96\x8d\x30\x6c\xd7\xfb\x9b\x57\x92\xe3\x4a\x65\ \xc7\x51\x18\x30\x95\xb6\x53\xb7\x6e\xd0\xa3\x8e\x33\xce\x7d\x6a\ \x31\xa4\x7a\x7f\xa8\x74\x64\x78\xd6\xbb\x76\xb6\x54\x8d\x37\x11\ \xe5\x2d\x98\x12\x2d\x88\x53\xc9\x6d\x4a\x2a\xf0\xfc\x7d\xfd\xb2\ \x4f\x3b\x73\xed\x8e\xd5\x31\xb3\x3d\x96\x53\xee\x9a\x77\x7d\x21\ \xc6\x0d\x44\xe3\x92\x63\xa1\x08\xd4\x82\x7c\xd1\x52\x5b\x3a\x4f\ \x1a\x1f\x59\x5d\xea\x0a\x6e\xea\x53\x4e\x38\xb7\x91\x6d\xfb\x3f\ \x95\x0f\x2d\xa0\xda\x9c\xdf\xbf\x92\x7c\xc7\xee\xfa\xfc\x52\x1b\ \xb7\x41\x9d\x99\x63\xbf\x58\x63\xeb\x37\xa3\xd9\xae\xd7\x15\x5c\ \xd3\x18\xdb\x90\xb5\xb7\x20\xff\x00\x69\xcd\xd9\x5a\x06\x07\x94\ \x6d\xe4\x0e\x7b\xe6\xd6\x00\xa7\xf0\xa7\x48\xca\xde\xd0\x35\x15\ \x55\xb5\x45\x29\xe1\xe9\x4a\xe9\xaf\x4f\x72\xa8\xb8\x74\xe9\xb9\ \x9a\xc7\x5b\x5d\xa6\xdd\x1c\x5b\x1a\xa2\x03\x70\x9d\x8e\x86\x76\ \xa9\x84\xa5\xa4\xb7\xb8\x2f\x71\xdc\x7c\xb9\xfb\xa3\xf1\xa6\xbb\ \x1f\x4a\xee\x30\xa6\x69\x39\x17\x1d\x5e\xe5\xc0\x69\x67\x31\x6f\ \x68\x40\x4b\x49\x0c\x94\x90\xa4\x1c\x2c\x92\xa3\x84\x79\xf3\xd9\ \x18\xdb\xce\x6a\xdb\xba\x30\x52\xbf\x15\x23\x8a\x6d\x29\x5e\xed\ \xd9\x38\xad\x10\x8c\x26\xae\x22\xa5\x25\x19\x6a\xbd\x5e\xff\x00\ \xc9\x50\xb3\xd1\x45\xb1\x67\x66\xc2\x9d\x5e\xf1\xb4\xc5\xbb\x26\ \xe9\x09\x83\x01\x1b\x90\xe8\x50\xcf\x88\xbd\xd9\x73\xcb\xb9\x23\ \xee\xe3\x76\x4e\x70\x05\x4e\x23\x68\x39\xac\xf5\x59\xed\x77\x6a\ \xd4\x62\x18\x99\x1d\xa8\xf3\xa1\x39\x04\x3b\xe2\xb6\x82\x93\x84\ \xaf\x70\xd9\x90\x90\x33\x83\x8e\x6a\x5c\xcb\x41\x79\x56\x73\x8a\ \xdd\x19\x44\x3b\xb4\x77\xcd\x56\x71\x56\xb2\x26\x9d\x18\x45\xa7\ \x62\xb6\x83\xd1\x28\x4d\xf4\xed\xcd\x29\x23\x50\x3c\xb9\x28\xbc\ \x2a\xef\x0a\xe0\xd4\x50\x85\x47\x7b\x8d\xbe\x42\xa5\x05\x01\xce\ \x79\x19\xcf\xa6\x2b\x7b\x9d\x24\x7e\x54\x6d\x51\x32\xf5\xa9\xd5\ \x72\xbe\xea\x0b\x7f\xea\xf5\x4e\x10\x43\x4d\xc6\x67\x18\x09\x43\ \x21\x67\xd4\x02\x7c\xdc\x91\xe9\xcd\x59\xc5\x45\x1d\xeb\x2d\xfc\ \x0f\x9a\x46\xa8\xd1\xec\xf4\xb6\xb1\x5b\x45\xe9\x49\x0e\xf4\xf1\ \xd3\x7d\xe3\x46\xa1\x68\xc7\xd9\x3f\xdd\x9b\x92\xda\x7f\xb7\xfb\ \x3f\xb9\xfd\xee\xf5\x29\xd1\xfa\x7e\xe3\x62\x9b\x7b\x7e\x76\xa7\ \xb8\xde\x9b\xb8\xcd\x32\x63\xb5\x28\xf9\x61\xa0\xe7\xf6\x48\xe4\ \xf1\xcf\xa6\x07\x03\x81\xce\x5f\x9d\x7b\x03\x68\x35\xa5\x4f\x00\ \x39\x34\x28\xb7\xa9\x2a\x14\xe0\xf4\xf5\xa5\x85\x01\x7b\x79\xad\ \x32\x4a\x56\x93\xcf\x34\x8d\xe9\xcd\xa0\x1c\xac\x71\x4c\xd7\x1b\ \xf3\x4c\xf6\x58\xcf\xc5\x33\x25\xb5\x61\x2a\xc9\x0b\x26\x21\xac\ \x12\xbc\x53\x05\xc9\xf8\xad\xe7\x25\x35\x57\xf5\x77\xae\x5a\x7f\ \x47\x2d\x51\x1c\x5a\xae\x17\x2c\x67\xec\x71\xd6\x3f\x67\xff\x00\ \xcc\x5f\x64\x7d\x39\x3f\x15\xcd\xfa\xb3\xaf\x7a\xfa\xfc\xea\xd1\ \x6f\x7d\x9b\x44\x75\x1e\x13\x11\x1e\x70\x3e\x56\xac\x9f\xc4\x62\ \xa8\xf1\x79\x7d\xd4\x14\xe8\x55\xad\xee\xa3\xa8\x7a\x81\xac\x6c\ \x9a\x66\xdc\xa9\x77\x59\xcc\xc4\x41\xc8\x40\x59\xf3\xac\xff\x00\ \x75\x23\x93\x5c\xcf\xd4\x1e\xb8\xcf\x9b\x70\x2c\x69\x76\x0b\x6d\ \x63\x68\x7a\x42\x02\x94\xaf\x90\x9e\xc9\xfc\x73\xf8\x55\x59\x70\ \x95\x3e\xe2\xeb\x93\xae\x92\xe4\x4c\x79\xc3\xf7\x9d\x59\x52\x96\ \x7e\xa6\xa7\xbd\x0b\xe9\xe2\x35\xa6\xa9\x11\xa5\x05\x22\xdb\x0d\ \x29\x7e\xe0\xf2\x0f\xde\x4e\x70\x96\x81\xf4\xdc\x78\xfa\x03\x59\ \x6b\xe2\xa4\xd5\xe6\xce\x9e\x1b\xa1\xf5\xbc\xd9\x96\x84\xe9\xee\ \xb2\xea\x0a\xd5\x7f\xbb\x5c\x65\x31\x6c\xdc\x4f\xda\x16\x49\x53\ \xa7\xd4\x36\x0f\x18\xf9\xed\xf5\xab\x5f\x4e\xe8\x78\xd6\x9b\x9c\ \x54\xa3\xc6\x73\xc3\x39\x53\x8f\xb8\x56\xb5\x7a\x66\xae\x49\xec\ \xc7\x89\x09\x98\x71\x18\x43\x2c\xa1\x3b\x1b\x6d\x00\x04\xa1\x20\ \x60\x00\x3d\x05\x47\x5e\x67\x32\xdb\x74\x02\x73\xc6\xe1\xee\x2b\ \xcf\xe2\x71\x35\x2a\x3b\x72\x3b\x14\x28\x53\x86\xb1\x44\xb6\xc8\ \xd2\x51\x1d\x21\x23\x09\xc0\xcd\x3f\xb4\x90\x50\x37\x84\xad\x23\ \xb8\x3f\x5e\x0d\x31\xd8\x14\x0b\x3c\x9f\x32\x7d\x71\xde\xa4\x6d\ \xa4\x2d\xa0\x15\xe5\xc7\xc7\x7a\x65\x3d\x50\xba\x9b\x88\xcc\x65\ \xa0\x92\xc8\xde\x9f\xec\x77\x1f\x87\xa8\xad\xad\xa5\xbe\x13\x92\ \x39\xc8\x0a\x38\x22\x94\x16\x9c\x6f\xcc\xde\xec\x7a\xe4\xff\x00\ \x8d\x6d\x61\xd1\xc8\x71\x04\xfe\x19\xa6\x24\x2d\xc9\x98\x35\x15\ \x63\x24\x21\x59\xc6\x38\x02\xb7\xb0\xd6\x50\xa1\x92\x9e\xe1\x4a\ \x00\xf2\x7d\x78\xa5\x6d\xa5\xb2\x06\xd5\x2b\x07\xdc\xf0\x3e\x94\ \xa5\x0c\xb3\xea\xea\xff\x00\x0a\xbe\x51\x6e\x62\x26\x94\x94\xa7\ \x1b\x14\x4f\xb9\x4d\x78\xae\x78\x50\xc8\x3e\x83\xd2\x9c\x76\x46\ \xef\x82\xe7\xc6\x6b\x62\x40\x49\xc2\x10\x84\x0f\xa5\x5b\x29\x19\ \xc6\xe6\x9a\x75\x5f\x71\x93\x81\xea\xae\x05\x6d\x11\x70\x09\x79\ \x40\xfc\x26\x97\x10\xa5\x8c\x14\xab\xe7\x9a\xd6\xe3\x58\xf3\x29\ \x58\x1e\x98\xa1\xa2\x33\x08\xd4\xd8\xc6\xd4\x24\x24\x63\xb6\x38\ \xad\x0b\x4a\xb3\xb8\xd2\xc7\x16\x0e\x52\x94\x94\xfc\x9a\x44\xf2\ \x8a\x95\xb5\x24\xe4\xfe\x42\x97\x26\x59\x08\x26\x6e\x52\xfc\x26\ \xc0\x27\x1e\x63\xed\xf3\x49\x14\xce\x3c\xa8\x19\x09\xe3\x3e\xe7\ \xde\x9d\x94\xc1\x59\x0d\xb3\xe6\x3d\xc9\xff\x00\x5f\xce\xa9\x3e\ \xb1\xf5\xc6\xd7\xa6\x14\xfe\x9f\xd1\xae\x47\xbb\x5f\x00\x29\x7e\ \x60\x21\x71\xa1\x1f\x60\x7b\x38\xe7\xc0\xe0\x7a\xe7\xb5\x2d\xc1\ \xc9\x9a\x68\x53\x9d\x59\x28\xc1\x6a\x49\xfa\x85\xae\x74\xc6\x82\ \x69\xb5\x5f\x24\xa9\x53\x9f\x41\x54\x78\x2c\x0c\xba\xee\x3d\xfd\ \x12\x93\xfd\xa5\x71\xf5\xae\x4b\xea\x36\xb4\xba\x6b\xdb\xe2\xae\ \xf7\x72\x50\xd3\x6a\x29\x8b\x09\x3f\xd4\xc6\x6f\x3d\x81\xfd\xe3\ \x8e\xea\xf5\x3f\x95\x31\x6a\x0b\xc5\xca\xe7\x3e\x4d\xd2\xeb\x25\ \xf9\xd3\x9e\x58\x53\xd2\x5c\x3b\x89\x3f\x3f\x81\xe0\x76\x14\xcd\ \x31\xe7\x64\xa8\x70\x42\x41\xf2\xf3\xc7\xe5\x5a\xe8\x61\xd4\x35\ \x67\x51\x46\x9e\x1d\x7f\xb4\x84\x97\x16\x13\xe2\x27\xc0\x58\x52\ \x89\xf3\x60\xfc\xd3\xff\x00\x4f\xb5\xde\xa0\xd0\xf7\x0f\x1a\x1b\ \xbe\x3c\x35\x28\x78\xd1\x9c\x39\x6d\x5f\x4f\x63\xf2\x29\x95\x2a\ \x08\xe3\x21\x38\x3c\x91\xfe\x5f\x35\x8b\x8d\xe5\x2a\x21\x29\x48\ \x03\x8c\x03\x85\x56\xde\x56\x67\x2b\x11\x86\x85\x5b\xbe\xde\x47\ \x63\xf4\xe7\xac\x1a\x67\x52\xb2\xd2\x63\x4d\x44\x69\xd8\x19\x89\ \x21\x41\x0b\xcf\xb2\x49\xe1\x7f\x87\x3f\x15\x6d\xc0\xd4\x0d\xb8\ \x91\xdc\x2f\xd4\x1e\xe2\xbe\x69\x29\x87\x10\xe7\x88\xd2\x94\x8d\ \x9e\x60\x52\x6a\xc6\xd0\x5d\x6c\xd6\x5a\x63\xc2\x62\x5b\xe9\xbb\ \xdb\xdb\xc0\x0c\xca\xc9\x5a\x47\xf7\x56\x3c\xc3\x8f\x7c\x8f\x8a\ \xd3\x4b\x13\x52\x9e\x9b\xa3\xce\xe2\x3a\x2e\x50\x77\x81\xdf\xad\ \xcb\x2e\xc7\xf1\x77\x01\xc5\x21\x61\x45\xe7\x8a\x73\x9d\xc7\x9a\ \xa1\x74\xc7\x5e\xb4\xb5\xfa\x22\x18\xfb\x7a\xed\x33\x14\x39\x66\ \x5f\x08\x27\xd8\x2c\x71\xf9\xe2\xac\x5b\x26\xb1\x8a\x96\x92\xb4\ \x3e\xcc\x82\xa1\x9d\xcc\xb8\x97\x07\xff\x00\x69\x35\xb6\x18\xfa\ \x4f\x49\x68\xce\x5d\x4a\x33\x83\xeb\x22\x74\xe0\x6d\xb5\x14\x13\ \x92\x7d\xa8\xa6\x48\x97\xd6\x26\x28\x28\x11\x93\xcd\x15\xb6\x33\ \x8c\x95\xd3\x13\x62\x51\xd3\x5b\x6a\x1c\xd1\x90\x96\xb5\x7d\xef\ \x13\xb7\xa7\xed\x15\x4f\x4f\x5a\xda\x84\xd2\xde\x6d\x1b\xf0\x9e\ \xd8\xa8\xa7\x4d\x2e\x32\x99\xd2\x70\x12\xa3\x94\x65\x7f\x87\xed\ \x15\x56\x0a\x16\x97\xa2\x85\x77\x4a\x85\x73\xa4\xea\x53\xb3\x6f\ \x43\xa1\x41\x52\xab\x0d\x16\xa8\xae\x19\x68\xca\x9c\xb7\x14\x36\ \x24\x2a\xb2\xba\x24\x15\x80\xd2\xc6\x00\xf4\xad\xf7\x75\x84\x4e\ \x71\x94\x61\x08\xdd\x93\x48\x46\xc1\x90\x09\x51\x3e\xa7\x9a\xe9\ \xad\x51\xcf\x7a\x3b\x1a\x9a\x59\x0a\x28\x3f\x96\x2a\x7d\xa5\x9e\ \x69\x50\x82\x52\x30\x40\xc1\xa8\x3e\x1b\x2a\xcf\xad\x4b\x34\xc2\ \x17\x1a\x12\xde\x70\x7d\xee\x40\x35\x9f\x12\xaf\x4c\xd1\x85\x95\ \xaa\x0a\xef\x4f\x05\x3c\x1a\x1e\x9d\xeb\xcb\x4b\x45\xd7\xf7\x94\ \xf9\x40\xe0\xd2\x17\x14\xa9\x12\x49\xee\x54\x71\x4f\xb1\x50\x98\ \xb1\x80\xcf\x38\xa4\x54\xfd\xba\x6a\x2b\x73\x45\x3f\xdc\xa8\xe4\ \xf6\x32\x9a\xee\x13\xb4\x1f\x4e\x6a\x35\x70\x90\x95\x3a\x54\xae\ \xc9\x3c\x52\xfb\xa4\x9d\xa8\x23\xf7\x95\x4d\x29\x6f\xc5\x77\x67\ \x24\xd3\x30\xd4\xf2\xab\xb1\x78\x9a\x99\x9d\x90\xb6\xd4\xf0\x4b\ \x83\x04\x61\x55\x23\x8a\xb0\xa4\x6d\x35\x13\x09\xf0\x97\xb7\xb1\ \x1f\x14\xf7\x6f\x91\xbd\xb1\xcf\x98\x55\x31\x34\xef\xaa\x2f\x85\ \xa9\x6e\xab\x37\x4a\x6f\xc3\x70\x9f\x43\x5b\xa0\x2f\x04\xa0\x9f\ \xa5\x6d\x71\x29\x7d\x9e\x3b\xd2\x24\x95\x36\xbe\xf8\x22\xb3\x2e\ \xbc\x6c\xcd\x2f\xa9\x2b\xa1\x45\xd1\xd0\x96\xb6\x7a\x9e\x29\x97\ \x3c\xed\x39\xc7\xc5\x3a\x5c\x47\x8c\xce\xf4\xe3\x8a\x68\x53\x9e\ \xc9\xe6\x9f\x87\x8f\x54\x46\x21\xf5\x85\xac\xb8\xdb\x43\xb7\x06\ \xbc\x5a\xb7\x3a\x14\xda\xbb\xd3\x4c\xb9\xbe\x12\x72\xae\x00\xa6\ \x19\xba\x9e\x3c\x57\x0a\x94\xea\x52\x90\x7c\xca\x52\xb0\x07\xd4\ \x9e\x2a\xd3\xcb\x4d\x66\x93\x13\xc5\xe4\x58\x3e\x3a\x52\x91\x93\ \xce\x29\x1c\x9b\x9c\x76\xf8\x2b\x48\xaa\x67\x58\x75\xb3\x48\x58\ \xdb\x50\x9b\xa8\x62\x97\x40\xc8\x66\x32\xbc\x65\x9f\x8c\x27\x20\ \x7e\x24\x55\x21\xab\x7f\x49\xe7\x1c\x52\xdb\xb0\xd8\xca\x8e\x4e\ \xd7\x66\xb8\x4f\xff\x00\x62\x7f\xce\xb0\xf1\xa3\xbc\x55\xcd\x51\ \x55\x6a\x7b\xa8\xeb\xb9\xda\x8a\x3a\x16\x40\x58\xed\xef\x51\xcb\ \xc6\xb5\x8f\x19\xb5\xad\x6f\x21\xa6\xd3\xf7\x96\xe2\xc2\x52\x3e\ \xa4\xd7\x0c\x5f\xba\xd3\xd4\x4b\xab\x8a\x5a\x6f\x0b\x84\xda\x87\ \xdc\x8a\x80\xd8\x03\xea\x39\xfe\x35\x0d\x9f\x74\xbd\x5c\xd5\xbe\ \x7d\xca\x54\x8d\xca\xca\xbc\x57\x8a\xb9\xfc\x4d\x51\xe2\x2a\x72\ \xb2\x1d\x1e\x8e\xab\x3f\x7a\x47\x5d\x6b\x9e\xbf\xe9\xbb\x41\x5b\ \x71\xe7\x9b\x93\xe9\xff\x00\x82\x8b\xca\x7f\xed\x9e\x3f\x2c\xd5\ \x1b\xae\xfa\xe3\xab\xf5\x31\x5c\x5b\x6b\x9f\xaa\x21\x2c\x10\x50\ \xc1\x3b\xd4\x3f\xbc\xe7\x7f\xcb\x15\x5a\x37\x17\xb1\x50\x2a\x23\ \xda\x94\x36\xdb\x4d\xe0\xaf\x03\xca\x41\x03\xd3\xf1\xa4\xca\x4e\ \x4e\xed\xdc\xeb\x61\xfa\x22\x9c\x35\x97\x98\x9d\xb6\x16\xfb\xc5\ \xc7\x9c\xf1\x49\xf3\x12\xa3\x9c\x9a\x56\x5b\x4a\x06\xd4\x24\x91\ \x91\xe9\x5b\x76\xe1\xad\xca\x04\x21\x27\xcb\x84\xf7\xaf\x76\x84\ \xa4\x93\x8c\x28\xe3\x83\xcf\xd3\xe9\x55\x6e\xec\xec\xd3\xa0\xa1\ \x1b\x24\x26\x98\xb5\x97\x58\x40\x48\x29\x49\x52\xb0\x3b\xf1\xdb\ \x3f\x9d\x74\x7f\xe8\x6f\x2e\x2a\xed\xda\x96\xdc\xa0\x91\x38\x2d\ \x89\x19\xf5\x53\x58\x50\xc6\x3e\x09\xfe\x35\xce\xae\x25\x26\x5b\ \x38\x6c\x94\xac\x28\x10\x3b\x9e\x33\xfe\x15\x3c\xfd\x1f\xb5\x22\ \x34\xaf\x55\xad\x32\x65\x3a\x96\xa0\xce\xcc\x19\x65\x47\x00\x25\ \xce\x12\xa2\x7e\x14\x13\xcd\x2a\xb4\x6f\x02\x1a\x93\x53\xd7\x7f\ \xc1\xd6\xf7\x26\xb2\xf9\xf3\x60\x63\x03\xe0\xe2\x90\x88\x89\x71\ \xb2\xde\x36\xee\xc1\x1f\x0a\xf7\xa7\x99\x6c\xa9\x52\x14\x36\x8c\ \xa5\x5b\x54\x01\xed\x8e\xc6\xb2\x62\x29\x28\x03\x8c\x0e\xc7\x15\ \xc9\x74\xee\xcc\xaa\x76\x42\x5b\x46\x5b\x56\xd7\x52\x37\x24\xed\ \x20\x8e\x47\xcf\xe7\x9a\x92\xb4\xb4\xa1\x09\x24\x9c\x11\xdf\xb8\ \xa6\x65\x36\x1b\x21\xc2\x95\x15\x27\x1e\x70\x79\x4f\x3d\x8f\xbd\ \x39\xb6\x85\x29\x85\x05\x36\x01\x28\x38\x58\x20\xf1\xe8\x47\xd0\ \xd3\x20\xb2\xe8\x52\x6d\x3d\x45\xc1\xcd\xaa\x47\x88\x4e\x36\x92\ \x94\x83\x9e\xdd\xf8\xa5\xac\xa5\x24\x02\x10\x82\x15\xc8\x20\xf7\ \x14\xc7\xa7\xd2\xea\xd8\x0b\x92\xa0\xfc\x94\x1f\x0c\xad\x49\x29\ \xe3\x3c\x63\xda\x9e\xe3\x29\x28\x07\x6a\xb2\xd9\x3c\xa7\xfb\x3f\ \x4a\x6c\x1d\xd5\xc4\xd4\x56\x76\x37\x00\xd2\x55\x84\x95\x6d\x23\ \xf7\x78\xe4\x7d\x7e\xb4\xa1\x94\xb6\x13\x93\x95\x28\x93\xca\x8e\ \x3f\x2f\x8a\x43\x25\x5b\x43\x6b\x24\x25\x5d\x81\x48\xc8\xcf\xcf\ \xe1\x43\x6a\x71\x45\x59\x75\xb2\xa5\xe4\x20\x81\x85\x24\x0f\x5c\ \x76\x3e\x9c\x55\xef\x62\x96\x1c\x52\x40\x58\xc1\x1c\x67\xca\x3f\ \xd7\x34\xa1\x2a\x42\x94\x50\x09\xe0\x02\x46\x29\x33\x39\x71\x96\ \xbc\x2d\x85\x04\xe7\x77\xef\x27\x1d\xeb\x5a\x7c\x54\xbc\xb7\x12\ \xb1\x94\x8c\x76\xce\x73\xcd\x5a\xe5\x77\x15\x3a\xff\x00\x87\xca\ \x10\xb7\x14\x3b\x25\x3d\xcd\x63\x20\xac\x8c\x9c\x63\xeb\xda\xb0\ \x82\x14\xb1\xe2\x29\x2a\x1d\xc1\xdd\xdc\x9e\xdf\x95\x6b\xbe\x5c\ \x2d\x96\x4b\x6a\xee\x57\xbb\x94\x4b\x64\x24\x0c\x97\xa5\x3c\x96\ \xd3\xf8\x67\xb9\xfa\x54\x6f\xa8\x5b\x5b\x20\xc6\xe4\xf2\x42\x47\ \x6a\x65\xd5\xb7\xfb\x16\x93\xb3\x2e\xef\xa8\xee\x6c\xdb\x60\xa7\ \x3b\x54\xe1\xcb\x8f\x2b\xfb\x2d\xa0\x72\xb5\x7c\x0f\xc6\xa9\x7e\ \xa5\x7e\x93\xf6\x88\x65\xcb\x77\x4f\x2d\xaa\xbb\x4a\xda\x40\xb9\ \x4d\x41\x6d\x84\x1f\x74\x36\x70\xa5\xe3\xdd\x58\x1f\x06\xb9\xab\ \x56\x5f\xf5\x16\xad\xbb\xbb\x77\xd4\x57\x49\x37\x49\xc4\x60\xba\ \xf2\xf0\x86\xff\x00\xba\x80\x38\x48\xf8\x48\xc5\x4a\xa6\xd9\xd2\ \xc3\x74\x75\x4a\x9d\x69\xe8\xbc\xfd\x7a\xb1\x65\xf5\x9b\xaf\xb7\ \x8d\x5d\xe2\xd8\x74\xca\x17\x61\xb0\xa8\x94\xb8\xb5\x2b\xfd\xa6\ \x58\xf6\x5a\x87\xdd\x49\xfe\xca\x7f\x12\x6a\x9e\x71\x29\x60\xb6\ \xda\xdc\x50\x1b\x54\x50\x80\x36\x9d\xc6\xb5\xbc\xe0\x49\x48\x69\ \xb0\x70\x7e\xf1\x1f\xce\xb5\x24\x29\x6a\xf1\x94\x4b\x8a\x3d\xf1\ \xdf\xe4\xf3\x5a\x21\x05\x15\xa1\xd3\x8e\x4a\x49\xc2\x2b\xd7\xd4\ \xd0\xb3\x29\xf5\x99\x0a\xca\x46\x30\x02\x46\x78\xf7\x35\x82\xd2\ \xb7\x1b\x48\xc0\xee\x33\x83\xc6\x7d\x29\x62\x88\x43\x4b\xda\xa0\ \x92\x0e\x70\x0f\x27\xde\x93\xc8\x79\x0a\x74\x00\x14\x40\xf4\x4f\ \x00\xf1\x4c\x42\x2a\x46\x29\x6a\xdd\xd9\xad\x0c\xb2\x12\x52\xf3\ \xa9\x4e\xd3\x92\x0a\x7f\x2f\xad\x60\xe6\x12\x93\xb9\x63\x1d\x81\ \x4a\xbb\xfe\x15\xb5\x42\x53\xa1\x3b\xd2\x52\x39\x03\x70\xc9\x48\ \xc7\x02\xb2\x66\x13\x2d\xa4\x29\xd5\x78\xa4\x8c\xee\x24\x64\x7e\ \x1f\x5a\x9b\xf6\x8a\x74\xdc\x9e\x58\x2b\x7a\xe6\x22\x59\x51\x58\ \x28\x0b\x50\xcf\xb6\x31\xe9\x59\x39\x15\x4a\x39\x70\xa7\x80\x4e\ \x7b\x52\xe5\x2d\xa4\x12\x10\xea\x90\x01\xe4\x28\x7a\xfc\x52\x27\ \xe4\x28\xf2\x82\x41\xf5\x28\x18\xfa\xd4\xa6\xde\xc2\xe7\x4e\x10\ \x4d\xc9\xdc\x46\xec\x66\xc2\xc6\xd3\x92\x79\x1c\xd6\x70\xa4\x5c\ \x6d\xef\x22\x4c\x29\x6f\xc5\x75\x07\x29\x52\x16\x52\xa0\x7f\x0a\ \x50\x92\x8c\xa9\x2a\x51\xec\x3d\xb3\x9a\x0a\x77\xa4\x29\x40\xe0\ \x63\x38\x3c\x0a\xb5\xcc\x72\xc3\xc6\x45\x9d\xa3\x3a\xe7\x7c\xb5\ \x2d\xa6\x35\x24\x41\x70\x65\x3c\x7d\xa1\xb3\xb1\xec\x7b\x9f\x45\ \x7e\x3f\x9d\x15\x51\xce\x6d\x29\x19\xc1\xc1\xed\xed\x45\x42\x8a\ \xe5\xa1\xca\xaf\x82\xa5\x9f\xdd\xf5\xf0\x3a\xc3\x4d\x6a\x0b\xf3\ \x76\x28\xc8\x6e\xf5\x72\x4a\x41\x56\x02\x65\xac\x01\xe6\x3e\x99\ \xa9\x33\x5a\xa3\x52\x35\x0c\x0f\xe9\x0d\xd8\x71\xdb\xed\x8e\x7f\ \x9d\x42\x74\xaa\x77\x5a\x63\x92\x78\x1b\xbf\xfc\x8d\x3d\x15\x78\ \x87\x27\xee\x8a\xf1\x55\xeb\x55\x72\xb6\x67\xf3\x3c\x6a\x9c\x93\ \x76\x66\x62\xeb\xa8\x5f\x90\xa7\x5d\xbe\x5c\xce\x4f\x73\x29\x7f\ \xe7\x4a\xdb\xba\xde\x12\x9c\x7e\xb9\xb9\x7f\xf5\x4b\xff\x00\x3a\ \x40\x54\x01\xe2\xbd\x6d\x4a\x52\x82\x52\x82\x49\x3c\x01\xeb\x55\ \x78\xaa\xef\x69\x3f\x9b\x21\x36\x2c\x76\xe9\x78\x24\x2c\x5e\x6e\ \x5c\x73\xfe\xea\x5f\xf9\xd6\x6b\xd5\x7a\x89\x6d\x86\x91\x7e\xba\ \xed\x1e\x9f\x6c\x73\xfc\xeb\x0b\xd5\x9a\xfb\x6d\x88\xdb\xf3\xec\ \xf3\xa2\x30\xf2\xb6\x21\xc7\xd8\x52\x12\x49\x19\x03\x24\x77\xc0\ \x27\x1f\x06\x90\x47\x65\x2c\xa7\x72\xf9\x51\xab\x4a\xb5\x78\xfb\ \xf2\x77\xf1\x64\xbc\xd1\x76\xd8\x7a\x89\x7f\xd4\x2d\x8f\x11\x57\ \xeb\xa8\x57\xfc\xf1\xcf\xf3\xac\x9f\xd5\x7a\x90\x82\xa5\x6a\x1b\ \xb6\x3f\xe7\x8e\x7f\x9d\x35\x0d\xce\x38\x84\x24\x65\x4b\x50\x4a\ \x52\x4e\x32\x49\xc0\xaf\x35\x3d\xaa\xe7\x64\xba\xae\xd9\x76\x8c\ \x23\x49\x42\x52\xa5\x37\xe2\x25\x78\x04\x64\x1c\xa4\x91\x54\x8c\ \xeb\xcf\xac\xe4\xed\xf1\x2d\x9a\x6a\x37\x57\xb1\xb5\x7a\x97\x50\ \xba\xb2\xa5\xdf\xae\x87\xeb\x2d\xcf\xf3\xaf\x58\xd4\x9a\x85\x2b\ \xdc\x2f\xb7\x4f\xfe\xad\xcf\xf3\xa6\x62\x78\xed\x4e\xd0\x6c\x17\ \x69\x76\x19\x77\xc8\xf1\x82\xed\xf0\xd4\x11\x21\xef\x15\x03\x62\ \x8e\x30\x36\x93\x93\xf7\x87\x61\xeb\x4f\x55\x6b\x4b\x48\xc9\xfc\ \xd8\xb8\xe7\x93\xd0\xda\xe6\xa4\xd4\x3b\xf7\x7e\xbe\xba\x7f\xf5\ \x8e\x7f\x9d\x66\xd6\xa7\xd4\x6d\xab\x72\x6f\xf7\x51\xf4\x98\xe7\ \xf9\xd3\x3e\xd2\x72\x2b\xd1\xda\x97\xc7\xab\x6f\x79\xfc\xc3\x34\ \xbb\x49\x33\x3a\xab\x52\x10\x14\x9d\x43\x76\xf9\xff\x00\x6c\x73\ \xfc\xe8\x7b\x53\x6a\x25\x8c\xff\x00\x48\x2e\xb9\xff\x00\x9e\x39\ \xfe\x75\x1b\x43\xa5\xa3\x9f\x4a\x1e\x96\x90\x9c\x85\x52\xb3\xd6\ \xbd\xd4\x9f\xcc\xba\xa9\x27\xa5\xc7\x97\x35\x76\xa4\x6c\x14\x9d\ \x41\x76\x03\xfe\x78\xe7\xf9\xd3\x74\xcd\x69\x7c\x65\xa5\x2d\x7a\ \x86\xe4\x84\x81\x95\x29\x53\x56\x00\xfa\x9c\xd4\x3f\x52\xea\x16\ \x22\x94\x47\x09\x76\x4c\xd7\x8e\xd8\xf0\xe3\xa4\xad\xe7\x94\x7b\ \x04\xa4\x73\xc9\xaa\x9f\xaa\xb1\x7a\x8b\x05\x51\xbf\xa5\xd6\x0b\ \xbd\x8e\x24\x82\x7e\xca\xdc\x98\xab\x65\xb5\xe3\xbe\x32\x06\xe5\ \x0c\x8c\xfa\x8c\xfa\x57\x4f\x07\x86\xc4\x57\xd7\x33\x4b\xb6\xec\ \xdb\x85\xc2\x55\xae\xef\x7b\x22\x79\xab\xba\xdf\x3a\x31\x53\x16\ \xdb\xd5\xca\xe0\xf0\xe3\x7a\xa5\x38\x1a\x1f\xc7\x2a\xff\x00\x5c\ \xd5\x4d\xa9\x75\x9e\xa9\xd4\xae\x95\xdd\x6f\x53\xa4\x23\xd1\xb5\ \x3c\xad\x89\x1e\xc0\x67\x14\xc2\x1b\xf7\xe4\x9f\x5a\xcd\x20\x76\ \x07\xf3\xaf\x41\x47\x0f\x0a\x4b\x4b\xb7\xda\xce\xfe\x1f\x07\x0a\ \x1b\x6e\x63\x87\x14\x7c\xce\x2f\xf1\x35\xea\x41\x4f\x39\x56\x6b\ \x23\xbb\x8f\xa5\x2e\x76\xd5\x73\x66\xd2\xc5\xe1\xfb\x5c\xc6\xad\ \xb2\x5c\x53\x4c\x4c\x5b\x0a\x0c\xba\xb4\xfd\xe4\xa5\x78\xda\x48\ \xf5\x00\xf1\x4f\x6d\x9b\x16\xe2\x30\x5c\xec\x16\xbf\xce\xbd\x42\ \xd6\x14\x0e\xf5\x03\xe8\x6b\xc0\x32\x7d\xbd\xab\xdf\x4c\x11\x8a\ \xad\xcb\xab\xf6\x99\x17\x9e\x24\x6e\x79\xc3\xf8\x9a\xc9\x2f\x3b\ \xbb\x97\x5c\x3f\xf5\xab\x04\xfa\x91\xe9\xc6\x2b\x24\x83\x9d\xc5\ \x35\x0c\xba\x72\xed\x33\x53\xef\x29\x44\x17\x5c\x3f\x55\x9a\x03\ \xab\xc1\x05\xd7\x3e\x79\x35\xa5\x44\x15\x63\x18\xf4\xac\x81\xc0\ \x04\x7e\x00\x50\x4f\x12\x4d\xee\x66\xe3\xef\x04\x85\x87\x57\x94\ \x60\xa7\xcc\x7f\x87\xf1\xaf\x56\xf3\x8e\xa4\x65\xd5\x94\x91\xdf\ \x71\xe6\xb0\x1c\x73\xf3\x5e\x70\xd9\x20\xf2\x85\x73\xff\x00\x24\ \xd0\x4a\x9c\x97\x32\xfa\xe9\xa7\x50\xef\x17\xcb\x7a\x60\xca\xbe\ \xdc\x05\xce\x2a\x02\x56\x93\x29\x79\x75\x09\xc0\x0b\x1c\xf3\xe8\ \x0f\xe7\x53\x34\x5f\x2f\x81\x1e\x5b\xcd\xcb\x00\x76\xfb\x52\xff\ \x00\xce\xb9\xc7\x45\x58\xb5\x46\xa0\xbe\x06\xb4\x7d\xba\xe1\x3e\ \xe7\x19\x06\x4a\x53\x05\xa2\xb7\x1b\x40\x21\x25\x58\x1d\x86\x54\ \x91\xf8\x8a\xb4\xde\xd4\x1a\xa3\x4a\xa6\x3b\x1d\x47\xd2\x37\x8b\ \x32\xde\xf2\xb5\x31\x50\xd4\xda\x1d\x3e\xb9\x04\x00\x48\xf5\xda\ \x7f\x0a\xe0\x63\x70\x15\x54\x9c\xe9\x6a\xbb\x3b\x0e\x4e\x2f\x0d\ \x57\x36\x6a\x6e\xfd\xd7\x26\xd2\x2f\xb7\xbd\xa4\x9b\xdd\xc9\x27\ \xdf\xed\x4b\xed\xf9\xd6\xa8\xd7\xab\xbb\x69\x29\x7a\xf1\x74\x24\ \x65\x5c\x4a\x5f\x23\xdf\xbd\x46\x06\xb0\xd2\xf2\x40\x0c\xdf\x22\ \x79\x86\x7f\x6b\xb9\xbc\x7d\x72\x29\x53\x57\xad\x3b\x22\x2e\xe5\ \xde\x6d\x64\x0f\x43\x25\x03\x18\x3c\x7a\xd7\x2d\xc6\xb2\x5a\xa7\ \xe6\x62\xfd\xf8\xab\x3b\xf9\x92\x78\xda\x8a\xfc\xeb\xcb\x75\x9d\ \x47\x74\x2d\x29\x20\x28\x7d\xa9\xc1\x83\xf9\xf7\xf4\xa5\x82\xfd\ \x7e\x40\x0d\x1b\xcd\xd1\x1e\x5e\xe9\x94\xb1\x81\xe9\xeb\xfc\x2a\ \x39\xa4\x52\xce\xad\xd4\x0c\x58\xb4\xfd\xca\x1c\xeb\xab\xe1\x61\ \x31\xd9\x90\x90\x56\x94\x24\xa8\x9e\x48\x48\xc6\x0f\xad\x31\x5e\ \xba\x83\x67\xb1\x5e\x65\x5b\xa5\x17\xdc\x9b\x11\xc5\xc6\x90\xdb\ \x2d\x6e\xc2\xd0\xa2\x15\xc9\x38\x3c\xe4\x67\x9e\xd5\x2a\x86\x26\ \x7e\xea\x7e\x64\x70\xf1\x13\x7d\x54\xfc\xcb\x11\x5a\x87\x51\x16\ \x83\xa2\xf7\x73\x78\x00\x7f\xfe\x6d\x79\x3e\x9e\xf8\xa5\x11\xb5\ \x16\xa1\x6d\x28\x29\xbe\xdd\x38\xe0\x1f\xb5\xb9\x9e\xdf\x5a\xa4\ \xa4\x75\x75\x4d\xa9\x5f\x63\xb2\x87\x90\xa2\x79\x7d\xcd\x9f\xc1\ \x39\xa6\x2b\x9f\x54\x35\x6c\xdd\xe9\x8a\xf4\x6b\x72\x08\xe3\xec\ \xec\x8d\xc0\x7f\xca\x56\x4f\xe5\x8a\x7c\x3a\x37\x19\x3d\xf4\xf1\ \x63\x63\x80\xc5\xc9\xd9\xe9\xf1\xfb\x1d\x19\x23\x52\x5f\x1b\x6f\ \xc5\x91\xa8\xae\x6c\x36\x15\xc9\x72\x7a\xd0\x93\xf9\xab\x15\x15\ \xbc\xf5\xaa\x35\xa5\x4e\xa4\xea\xeb\xac\xe7\xc2\xb1\xe1\x43\x94\ \xe2\xc6\x7f\xe5\x12\x07\xf1\xae\x70\xb8\x4d\x99\x71\x7f\xc5\xb8\ \x4c\x93\x31\x64\xe5\x45\xe7\x14\xae\x7f\x1a\x4e\x02\x12\xa2\x13\ \xb4\x01\xdf\xd7\xf2\xad\xf4\xba\x26\xda\xd4\xa8\xdf\x86\x86\xda\ \x7d\x17\x67\xd7\x9b\x7e\x1a\x16\xed\xfb\xf4\x85\xd7\x12\x02\x9b\ \xb2\xce\xb8\x40\x41\x3c\x3c\xf4\xc7\x1d\x70\x7d\x06\x76\x83\xf8\ \x1a\xad\xf5\x0e\xa3\xd4\x3a\x9a\x68\x99\xa8\xaf\xb7\x2b\xac\x81\ \xf7\x17\x2e\x4a\xdc\x29\xf8\x4e\x4f\x03\xe9\x4d\x65\x4b\xc7\x95\ \x38\x03\xd5\x55\xe1\x19\x39\x5a\x81\xe3\x00\x67\xb7\xe1\x5d\x4a\ \x54\x29\xd2\x56\x8a\xfa\x9d\x2a\x34\xa3\x47\xdc\x5e\xbc\x4f\x4b\ \xce\xfd\xd0\xe2\xc9\xed\x80\xa3\x83\xf5\xac\xbc\x69\x2a\x46\xd2\ \xf3\xa5\x07\xb8\xde\x71\xc7\xbd\x60\x08\x00\x00\xae\xde\x80\xd0\ \xb2\x10\x08\x1c\x9f\x5c\x9e\xf4\xe1\xaa\x52\xde\xe6\xc5\x4b\x91\ \xbb\x1e\x3b\x98\x1d\xb2\xa3\x5a\x9c\x90\xe8\xec\xea\xc2\x87\x6f\ \x31\xe2\xb5\xf9\xd6\xa2\x12\x14\x00\xef\xf1\x59\x25\x09\x41\xfb\ \xc0\x9f\x91\x53\x6b\x15\x75\x27\x2d\xd9\x8f\x89\x25\xd5\x65\x4f\ \x38\x31\xee\xa3\x59\xa4\x94\x1d\xc9\x5a\xc1\x1c\x67\x35\x22\x85\ \xa2\xb5\x54\xfe\x9f\x5c\x75\xe4\x3b\x4e\xfd\x39\x6c\x92\x22\xcc\ \x99\xf6\x86\x87\x86\xe9\x2d\x80\x9f\x0c\xab\x79\xe5\xe6\xf9\x09\ \x23\xcd\xdf\x83\x88\xa9\x25\x5c\xe4\x9a\x9b\x31\x6e\x76\xd9\xdc\ \x50\xa9\x6f\x81\xe4\x75\xc1\xcf\xf6\xcd\x6a\x76\x4b\xea\x52\xb2\ \xf2\xc9\x57\x07\xcd\xde\xb5\x24\xe4\x8c\x63\xf2\xed\x41\xf5\xf5\ \x35\x29\x58\xa4\xaa\xca\x4b\x73\xd2\xe3\xab\x50\x2b\x71\x64\x8f\ \x9a\x37\x2b\x24\xee\x56\x4f\xae\x4d\x78\x40\xe0\x95\x60\x7e\x75\ \xea\xf6\xe7\x39\x1c\xfb\x54\x95\xbb\xdd\xb0\xf1\x1c\x1c\x07\x17\ \xef\xf7\xab\xcf\x11\xc3\xff\x00\x08\xe1\x1e\x9c\xd7\x83\x39\xc7\ \xf1\xaf\x42\x3b\xee\x56\x3e\x48\xa9\xb9\x56\xd9\xa5\xf5\xa8\x8e\ \x56\xa2\x3e\x4d\x15\x9b\xe9\x40\x1c\x2b\xf0\xa2\xac\x99\x49\x45\ \xb7\xb9\xd5\xba\x67\x8b\x24\x70\x38\x1e\x6c\xff\x00\xda\x34\xea\ \x94\x15\x72\xa3\x84\xd3\x66\x98\x03\xf5\x33\x0a\x57\x00\x6e\xff\ \x00\xf2\x34\xb9\x4e\x17\x32\x3b\x27\xd8\x57\x82\xa9\x77\x36\x78\ \x76\x6c\x2f\x32\xdf\x09\x4e\xe3\x53\x6e\x86\x06\x26\xf5\x1e\x12\ \x24\x36\x8f\xd9\x32\xeb\xcd\x85\x7a\xac\x0c\x0f\xc4\x64\x9f\xc2\ \xa0\x3c\x0e\xdf\xc6\x96\xd9\x6e\xd7\x1b\x15\xe2\x25\xe6\xd0\xe3\ \x68\x9b\x11\x65\x4d\x87\x06\x50\xb0\x41\x4a\x92\xa0\x0f\x20\x82\ \x47\xf1\x1c\x8a\x76\x15\xc2\x9d\x68\xce\x5b\x26\x32\x85\x45\x0a\ \x91\x94\xb6\x4c\x7b\xb5\x45\x77\x55\x75\x10\x46\xb9\xcf\x9a\xe3\ \xb3\xee\x4b\xf1\xb7\xbc\xa2\x94\x80\x55\x90\x94\x93\x84\xe1\x20\ \xa4\x71\xc0\xa9\x74\x3b\x65\x8e\xfd\xa8\xf5\x5e\x96\x67\x4e\x46\ \xb7\x7e\xa9\x61\xc5\xdb\xe6\x34\xfa\xd4\xea\x94\xd1\xd8\xaf\x13\ \x71\xc1\x0a\x24\x1f\x81\x9f\x5e\x6a\x0b\x7a\xd5\x66\x75\xd1\xab\ \xc5\xb3\x4b\x46\xb0\x5d\xda\x98\x26\x2a\x5b\x77\x05\xc8\x43\x8e\ \x0c\x92\x3c\x22\x94\x84\x82\xa3\x93\xc9\xf6\xf5\x34\xba\xef\xd4\ \x1b\x83\xd1\x2e\xcf\x5b\xf4\xbc\x0b\x4d\xc6\xf0\xd1\x62\x7d\xc5\ \x13\x96\xee\xe4\x2b\xef\xf8\x6d\x94\x80\xd9\x3e\xf9\x35\xd3\xa7\ \x3a\x09\xcb\x89\x25\x2b\xbf\x1b\xab\x6c\xb4\xed\x36\x42\xa5\x25\ \x7c\xcd\x3d\x7e\x68\x76\x7d\x16\x7d\x3b\xa3\x34\x75\xc1\xcd\x3d\ \x16\xef\x26\xfd\x20\x3a\xfb\xb2\x1e\x5a\x3c\x26\x42\x93\x80\xde\ \xd2\x30\xac\x29\x38\x3e\xe0\xe7\xd3\x12\xad\x45\xa7\x22\x5f\xba\ \xc7\xa8\xe4\xcd\x8e\x25\xb5\x6c\xb5\x35\x21\x31\x94\xef\x84\x97\ \x9c\xd9\xe4\x4a\x95\x91\x84\xf0\x72\x72\x07\xbf\x15\x56\x5b\xb5\ \xc4\x88\xfa\x5a\x06\x9f\xb8\x69\x78\x17\xa6\xed\x6e\x97\x6d\x92\ \x1d\x98\xb6\x4b\x07\x39\xda\xe2\x12\x0f\x88\x9c\xfa\x65\x3c\x00\ \x3e\x69\x53\xbd\x48\xbe\x2f\x58\xc9\xd5\x1f\xaa\x20\xa9\x53\x61\ \x26\x14\xeb\x7b\xaf\x15\xb5\x25\xb0\x90\x15\x85\x6d\x05\x24\x91\ \x91\xc1\xc6\x71\xcd\x68\x85\x6c\x32\x82\x8b\xb5\xb4\xd2\xdd\xdc\ \xfe\x23\x23\x5a\x86\x54\x9e\xda\x69\x6e\xee\x7f\x11\xc7\x5e\xda\ \xed\xa8\xd2\x56\x4b\xc2\x63\x5a\x6d\x97\xa7\x5d\x5b\x17\x1b\x7c\ \x09\xc9\x7d\xb4\xfd\xf2\x85\x8c\x2d\x58\x05\x28\xcf\x7f\xde\x00\ \xf2\x29\x7e\x95\x21\x1d\x0a\xd6\x8b\x57\x61\x2d\x92\x7f\x36\xaa\ \x07\x25\xeb\x2c\x95\x37\xfa\xa3\x46\x31\xa7\xb6\xe4\xad\x49\xb8\ \xae\x52\x9c\x1e\x83\xcc\x94\x80\x07\xd0\x9f\x9a\x78\x89\xa9\x64\ \xc0\xd1\xb7\x7d\x26\x8b\x52\x1f\x62\xec\xe2\x1c\x5c\xb3\x2b\x61\ \x67\x69\x4f\x1e\x1e\xc3\xbb\x3b\x7b\xee\x1d\xeb\x27\x1e\x94\x71\ \x12\x7a\x25\x95\xad\x3b\x6d\xe0\x84\x2a\x90\x55\x5c\xb9\x59\xaf\ \x2f\x04\x59\x8b\xd1\xf6\x5b\x3d\xea\xdd\xa7\xee\x96\x9b\x4f\xea\ \xd7\xad\xbe\x24\xeb\xac\x8b\x92\x5a\x90\xdc\x93\xbb\x1b\x10\x56\ \x0e\xdc\xa4\x0e\x12\x47\x9b\xbf\x07\x31\xed\x19\x67\xb6\x4e\xd2\ \xb7\x26\xac\x56\xfb\x3d\xf7\x55\xc4\x9a\xa4\x39\x12\xe1\x21\x49\ \x05\x84\x9c\x05\x36\x94\xa8\x64\x1e\xf9\xce\x33\x91\x9e\x05\x46\ \x27\x6a\xa6\xaf\x4c\x42\x46\xa8\xd1\x16\xeb\xf4\xd8\x51\xd3\x19\ \x99\xff\x00\xac\x57\x1d\x4a\x69\x27\xca\x16\x80\x95\x6e\x39\x24\ \xe4\x11\xdc\xf6\xad\x1a\x73\x53\x44\xd3\x53\x21\x4f\x67\x43\x43\ \x99\x75\x82\x56\x63\xce\x37\x57\x1a\x09\x2a\xdc\x39\x6b\x61\x07\ \x09\x56\xde\xe3\x20\x7b\xd6\x8e\x36\x15\xd4\x56\xb5\xbc\xf9\x77\ \x6f\xf3\x1c\xea\xd0\xce\xad\x6b\x7a\xee\xdf\xe6\x4a\x34\x45\xb2\ \x05\xcf\x4d\xde\x9b\xb7\xd9\x6d\x13\xf5\x9b\x13\x14\x3f\x54\x5c\ \x5f\x5b\x69\x6d\x90\x46\x42\x13\x90\x4e\x39\x19\x27\xb8\xe4\xfa\ \x1e\x77\xea\xee\xad\x9b\xa7\xa7\x4a\x86\xdc\x44\x40\xb9\x38\xf3\ \xa1\x51\xb0\x48\x88\x02\x88\x29\x01\x59\x27\x07\xca\x33\xed\x56\ \x8c\x4d\x7f\x1e\xd7\x7e\x46\xa2\xb8\xe8\xa8\x97\x6b\xfa\x25\xb9\ \x29\xb9\xe2\xe8\xe4\x74\xa5\xc5\x95\x1f\xea\x82\x54\x08\x1b\xb1\ \x8c\x8c\x81\xce\x6a\x97\xd6\xfd\x64\xfe\x91\xe9\xdd\x5f\x63\xba\ \x69\x0b\x2c\xbb\x8d\xf6\xec\x26\xa2\xf3\xb7\x0e\xc5\x4a\x4a\x7f\ \x66\x80\x41\x38\xc2\x30\x0e\xe1\x80\xb5\xe4\x1d\xd9\xa7\xd0\xa1\ \x46\xba\x8e\xda\x79\xf8\x9a\x30\xb4\x29\xd7\x71\xee\xf5\xa9\x3b\ \xfd\x02\xd9\x45\xc3\xa9\x9a\x93\x51\x4e\x02\x65\xca\xdf\x65\x71\ \xd8\x9e\x37\x9c\x85\xa9\x60\x15\x8f\x5c\xe3\xcb\xf4\x59\x1e\xb5\ \x15\xfd\x1a\xd9\x57\x53\x7a\xeb\x02\xd9\xaf\x64\x4a\xd4\x11\x26\ \x22\x63\xef\x37\x31\xe5\x2d\x25\xc2\xd2\x95\xbc\x0c\xe0\x1c\xe0\ \xf1\xec\x2a\x15\xd1\xbe\xa2\x5e\xfa\x5d\xad\x59\xd4\xf6\x46\xd8\ \x79\x61\xa5\x47\x93\x19\xf2\x76\x48\x65\x58\x25\x04\x8e\x41\xca\ \x52\x41\xf4\x20\x70\x46\x41\x9a\xe9\xae\xb1\xe8\xfd\x2d\xd4\xdb\ \x6e\xb8\xd2\xdd\x29\x4d\xa9\xe8\xff\x00\x69\x32\x63\x26\xfc\xe3\ \x89\x90\x5d\x41\x4f\x94\xa9\xbc\x34\x94\x92\x48\x01\x27\xdb\x81\ \x5d\x75\x6b\x58\xee\x64\xcb\xb2\x27\x3d\x33\xd0\x7a\x23\x5c\xf5\ \x33\x53\xc2\x63\x45\xc6\x8d\x67\xd0\x91\x24\x34\x88\x9f\x6f\x50\ \x55\xd6\x42\x5c\x52\x5b\x5c\x87\x54\x46\xdc\xf8\x6a\x27\x04\x24\ \x64\x0e\xc3\x96\xce\xb0\xf4\xfe\xc6\x34\xa6\x85\xd4\x96\x9d\x23\ \x68\x87\xaa\x66\xdc\xc4\x1b\xb6\x97\xb3\xdc\xc4\xa6\xdf\x25\x4b\ \x2d\xed\xf0\xdc\x59\x4e\xe4\xb7\xc9\x49\xe3\xc4\x19\x39\x15\x5e\ \xe8\x2e\xae\xdc\xf4\x77\x51\xaf\xfa\xaa\x2d\xa2\x24\xc8\x3a\x81\ \x72\x13\x71\xb5\x49\x70\x94\x3a\xcb\xcb\x2b\x28\xde\x06\x41\x19\ \xc6\xec\x7b\xf1\xcd\x7b\x1b\xa8\xda\x56\xc1\xac\x6c\x3a\xa3\x40\ \x74\xe9\xad\x3b\x2e\xd5\x2c\xc8\x58\x91\x79\x7a\x70\x90\x92\x0a\ \x4b\x7e\x64\xa4\x20\x60\x9e\x40\x27\x9e\xf4\x5d\x58\x32\xca\xe5\ \xdc\xe7\x4b\x6d\x97\xbe\x92\x6b\xe9\x3a\xab\xa6\xfa\x73\x46\xde\ \xf4\xed\xb4\xcf\x80\x6c\xf7\x4f\x1d\xf4\xec\x69\xd7\x36\x3e\x80\ \xea\xf1\x90\xd8\x1e\x6e\xfb\x89\x00\x14\xd6\x1d\x5c\xba\xdb\x9e\ \xfd\x18\xfa\x6d\x0e\x1e\x8c\xd3\xe8\x55\xf8\xba\xc4\x66\xf6\xb8\ \x11\x01\xd7\x32\x0b\xad\x61\x5f\x78\xa9\x44\x92\xac\xf2\x6a\x03\ \x70\xfd\x21\xa0\x93\xad\xd1\x66\xe9\xcc\x6b\x60\xd6\x96\xd9\x11\ \xee\xae\x7e\xb6\x71\xe7\x57\x21\xc4\x29\x08\x78\x15\x23\x01\x08\ \x0e\x38\x7c\x30\x91\x92\xbf\xbc\x30\x05\x30\x49\xeb\x04\x0b\xa7\ \x47\x6d\x1a\x06\xfb\xa2\x9b\x9f\x2a\xc6\xdb\xa9\xb4\xdd\x1a\xba\ \x38\xc1\x8e\xb5\x03\xb5\xc5\x34\x12\x42\xca\x72\x0e\x0a\x80\x3b\ \x47\x1d\xea\x6e\x88\xcb\x2e\x67\x40\xcb\xe8\x9f\x4f\xad\xb7\xe9\ \x1a\x02\xe5\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa9\x93\x79\x42\x27\ \x19\xe7\x1e\x6f\x04\xbb\x90\x8f\x5c\x6d\xdb\xc6\x39\x06\xb9\x87\ \xa0\xd6\x58\x17\x8e\xb5\xe9\x9b\x25\xea\x1b\x53\x20\xc8\xb8\xa5\ \x89\x0c\x2c\xe5\x0e\x27\x9c\x83\x83\xc8\xe2\xa5\x3a\xc3\xac\x7a\ \x63\x5c\x88\xf7\x2d\x75\xd2\xc8\x97\x8d\x4a\xd4\x44\xc5\x55\xce\ \x3d\xe5\xe8\x8d\xbc\x13\x9d\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\ \xf8\xe0\x00\x2a\xbe\xe9\x8e\xa7\xfe\x85\xeb\xeb\x36\xab\xfb\x07\ \xdb\x8d\xb2\x4a\x64\x7d\x9b\xc5\xf0\xbc\x5c\x03\xe5\xdd\xb5\x58\ \xfa\xe0\xd5\x5b\x45\xe3\x19\x59\xdc\xea\x0b\x16\x86\xe9\x55\xc2\ \xf3\xd5\x1d\x29\x23\xa7\xf1\xc4\x6d\x18\xd0\x96\xc4\xc4\x4e\x78\ \x4a\x92\x52\x95\xad\x69\x5a\x81\xc0\x49\x28\xda\x02\x40\xc2\x4f\ \xbf\x35\x19\xbe\xf4\xf3\x49\xeb\xae\x93\x74\xbb\x56\xd9\xf4\xfc\ \x3d\x2d\x71\xd4\x9a\x89\x36\x69\x8d\x40\x5a\xcb\x5e\x1a\x9d\x7d\ \x1b\xc0\x5a\x8f\x98\x06\x32\x33\xdf\x71\x04\x9c\x0a\x86\xda\x7a\ \xf4\x6d\xda\x93\xa8\xf7\xaf\xe8\xa0\x77\xfa\x6f\x1d\x4c\x96\xbf\ \x58\xe3\xec\x39\x4a\xd3\x9c\xf8\x5f\xb4\xfb\xf9\xc6\x13\xda\x9a\ \x1f\xeb\x0c\xd1\xd1\x9d\x23\xd3\xfb\x75\xa1\x50\x65\xe9\x8b\xc0\ \xbb\xc6\xbb\x09\x7b\x8a\xdc\x0e\x3e\xb4\x8f\x0b\x67\x97\x05\xe1\ \xce\xe3\xf7\x3b\x73\xc0\xda\x05\x19\xa7\xa1\x75\xc2\xd0\x9d\x30\ \xd4\xbd\x63\xd4\xdd\x10\x8f\xa1\xa3\xdb\x1b\xb5\xdb\x37\xc1\xbe\ \x35\x25\xd5\x4c\xfb\x42\x52\xd1\x2b\x5e\x55\xb5\x49\xcb\xa7\x8c\ \x11\xe5\xed\xc8\xdb\x10\xb4\x69\xed\x0f\xa5\xbf\x46\x5b\x27\x51\ \x2f\x5a\x26\x0d\xfa\xf4\xcd\xd6\x4d\xbd\x4d\xbe\xfa\xdb\x69\xd2\ \xa7\x56\x02\x9c\xdb\xca\xf6\x25\xb2\x12\x3f\xbd\x9f\x41\x4d\x93\ \x3f\x48\xc2\x9b\x8d\xdb\x55\xda\x74\x05\xb6\xd7\xae\x2e\xf0\x04\ \x29\x77\xc6\xee\x2e\x2d\x01\x3b\x52\x9d\xed\xc7\x23\x08\x56\x10\ \x8c\x1d\xc7\xee\x8c\xe7\x9c\xc2\xa7\x75\x47\xed\x1d\x01\xb7\xf4\ \xa3\xf5\x10\x42\x61\xdc\x95\x3b\xf5\x97\xdb\x33\xbf\x2a\x70\xec\ \xf0\xb6\x71\xfd\x67\x7d\xde\x9d\xa8\xba\x0c\xb3\xe6\x5f\x9a\x2f\ \xa4\x5a\x4b\x4f\xe9\xae\x9f\xb3\x79\xd1\xd6\x5b\xdb\x1a\x8a\x21\ \x97\xa8\x2e\xd7\x1b\xc2\x63\x39\x09\x2b\x6d\x2a\x6d\x2c\x20\xba\ \x92\x42\x77\xe0\x94\x82\x4e\x3b\xf2\x31\xcb\xfd\x4b\xb2\x42\xd3\ \x7d\x41\xbf\x58\xad\xd2\xd3\x32\x0c\x39\xce\x35\x19\xf4\xac\x2b\ \xc4\x68\x1f\x21\xc8\xe0\xf9\x48\xed\x53\x96\xba\xbd\x66\xbc\x68\ \x4b\x16\x96\xea\x1f\x4f\x58\xd5\x23\x4f\xb4\x63\x5a\xe6\xb5\x75\ \x72\x0b\xad\x33\x80\x03\x6b\xda\x95\x05\x80\x12\x81\xe9\xc2\x47\ \xae\x49\x64\xb7\xf5\x0a\xd1\x07\x40\x6a\xbd\x25\x1b\x40\xd9\xc0\ \xbe\x4e\xfb\x4c\x49\x8b\x71\x4e\x3d\x6d\x6c\x10\x52\xca\x14\xa0\ \x54\xb0\x90\x30\x95\x15\x03\xe6\x51\x3b\xb3\x43\xb3\x2d\x0c\xe9\ \xea\x59\xff\x00\xff\x00\x0f\x24\xa9\x3d\x6a\xbb\x8c\x9d\x87\x4e\ \x3e\x42\x4f\xa7\xfb\x4c\x6a\xd9\xd3\x7b\x94\xcd\x51\xfa\x1d\xf5\ \x16\x2e\xa5\x95\x22\x6b\x56\x79\x6c\xc9\x80\xe4\xb7\x0b\x8a\x65\ \x64\xa0\xe1\x0a\x3c\x81\x90\x78\x1f\xdb\x57\xbd\x56\x9f\xa3\xe7\ \x54\x4f\x48\xf5\xa4\xad\x48\x9b\x18\xbe\x7d\xaa\xdc\xb8\x3e\x01\ \x99\xf6\x7d\xbb\x9c\x69\x7b\xf7\x6c\x5e\x71\xe1\xe3\x18\xfd\xee\ \xfc\x52\x9d\x5f\xd5\x98\xd3\x3a\x70\xbe\x9e\xe8\xbd\x1f\x1f\x49\ \xe9\xd9\x32\x84\xb9\xc9\x17\x05\xcc\x91\x2d\x69\xc1\x01\x4e\x28\ \x27\xca\x0a\x52\x71\x8f\xdc\x4f\x3d\xf3\x09\xe8\x0e\x2f\x3e\x9d\ \xc7\x43\xb7\xd1\x5d\x0b\xa7\xaf\x36\x6d\x13\x7f\xd2\x56\x37\xad\ \x52\xac\x85\xeb\xae\xa3\x97\x79\x43\x33\x1a\x9a\x77\x01\xe1\xb6\ \x5d\x0a\xd8\x0a\x06\x30\x82\x9f\x30\xc9\x38\x56\x6b\x8d\x3d\xa4\ \x34\x56\x9d\xfd\x1c\xef\x7a\xd2\xeb\xa5\xe0\x6a\x1b\xbd\x87\x53\ \x3b\x09\x82\xf3\xaa\x43\x32\x52\x16\xdb\x40\x39\xb1\x59\x52\x06\ \xe5\x28\x00\x79\x38\xc9\x23\x35\x11\xbc\xf5\x8b\x4f\x6a\xeb\x55\ \xa4\x75\x13\xa6\x51\xb5\x2d\xe2\xd7\x11\x30\x99\xb9\x35\x78\x7a\ \x11\x71\xa4\xf2\x90\xe2\x10\x93\xb8\xe4\x93\x90\xa1\xc9\x38\xc6\ \x6a\x69\xd3\xad\x61\xa0\xad\x5f\xa2\x3d\xe2\xd5\xa9\x22\x5b\xef\ \x2f\x2e\xff\x00\xe3\x0d\x3a\x2f\x3f\x64\x92\xea\x0a\x99\xda\xa1\ \x8c\xb9\xb5\x38\x27\x21\x3c\x84\x9e\x6a\x74\x7b\x15\xfd\xc5\xab\ \x2c\x2d\x21\xa2\xf4\xce\x9c\xfd\x26\x3a\x6f\x7f\xd2\xb6\xb4\x5a\ \x61\x6a\x4d\x3d\x22\x6a\xe0\xa1\x65\x49\x65\xcf\xb3\x92\x76\xe7\ \x90\x08\x5a\x46\x3b\x64\x1a\x80\x49\xd3\x3a\x5b\x4d\xe8\x4d\x7b\ \xd5\x9b\xe6\x9b\x8b\xa9\xae\x6e\x6a\xd9\x56\xf8\x10\xe5\xba\xb4\ \xc7\x65\x3e\x39\x0a\x5a\x92\x82\x0a\x89\xca\xbd\x7d\x13\x8c\x73\ \x51\x48\xff\x00\xa4\x25\xcc\x75\x9e\xd3\xd4\x19\x5a\x72\x33\x91\ \x2c\xf0\x17\x6f\xb7\xd9\xa3\xca\x2d\x36\xcb\x25\x0a\x48\x1e\x21\ \x42\xb2\x7c\xd9\x27\x6f\x38\x03\x8c\x53\x6d\x83\xac\xc9\x66\xd7\ \xa9\xf4\xee\xa5\xd1\xec\xea\x0d\x2f\xa8\x2e\xae\x5d\x55\x6f\x54\ \xf5\xc7\x76\x2b\xca\x5e\xef\x23\xe9\x49\xe3\x84\xe7\xcb\xce\x3d\ \x32\x72\x5d\x13\x92\x77\x2e\x28\x3d\x3c\xe9\xac\x4e\xae\x74\xd6\ \xea\xbd\x33\x1d\x3a\x77\xa8\x56\x37\x1d\xfd\x59\x21\xc5\x38\x88\ \x92\xbc\x26\x9e\x49\x49\xce\x46\x77\xa1\x00\x67\x00\x93\xd8\x76\ \xaf\x35\xb6\x80\xb2\x68\x1e\x88\x6a\x59\x17\x6b\x5b\x2e\x5f\xa6\ \xea\xc7\x6d\x56\xb7\xdc\xc9\x5b\x31\x58\x57\x99\x69\xf4\xf3\x6c\ \x52\x73\x8f\xde\x1f\x83\x3c\xde\xa3\x5f\x3a\x91\xd5\x5d\x2d\x32\ \x2b\xda\x7f\x48\x46\xd3\xa9\x69\x36\x68\xf3\x67\x96\x62\x45\x43\ \x24\x2c\x25\x6f\x2c\x72\xa5\x6c\x4a\x73\x81\x9c\x24\x62\x9e\xbf\ \x4c\x4e\xa3\xc1\xd6\xba\x86\xc5\x68\xb3\xcf\x83\x32\x3d\x9e\x19\ \x33\x1e\xb7\xaf\x74\x47\x26\xbc\x41\x7b\xc2\x57\xef\xa4\x6d\x18\ \x57\xc9\xf9\xa8\x76\xb3\x2d\x1c\xd9\x92\x66\xbf\xd1\x9f\xa7\x16\ \xad\x4b\xa5\xf5\x7e\xb0\xb8\xda\x63\x5f\xdf\xb1\xb2\x86\xed\xd6\ \xd9\x53\x04\x78\xcf\x48\x58\x27\x73\xab\x2a\x40\x09\x48\x09\xe0\ \xa8\x03\x93\xec\x2a\x7e\xee\x87\xe9\xad\xbb\xab\x3d\x36\x7e\x56\ \x9e\xb0\xb7\x1b\x54\x46\x72\x15\xea\xc8\xc4\xe4\xca\x66\x14\xdd\ \x89\x2d\xa9\x0a\x4a\xd5\xf7\x96\xa0\x9e\x0e\x38\xf5\x26\xa8\xde\ \x92\x75\x2a\x4e\x84\x8b\x7b\xb4\x4b\xb2\x44\xd4\x3a\x7e\xfd\x1c\ \x47\xb9\xdb\x24\x3a\xa6\x7c\x44\xa7\x20\x14\x38\x90\x4a\x14\x02\ \x94\x33\x83\xdc\x1e\xe0\x10\xd3\xa8\xf5\x3e\x9d\x37\xdb\x55\xd7\ \x44\x68\xe3\xa5\x1c\xb7\x3a\x1f\x1b\xae\x8e\xcc\x53\x8e\xa5\x49\ \x52\x09\x52\x82\x76\xed\x29\xec\x90\x3b\xf2\x7b\x54\x26\xac\x5a\ \x70\x9e\x76\xcb\x63\x50\xf4\xde\xcb\xa4\xba\x77\xad\xc4\xfb\x54\ \x37\x6f\x33\xb5\x88\xd3\xfa\x7d\xd7\x89\x25\x96\x92\xad\xe5\xd4\ \x8c\xf6\x28\x51\x4e\x7d\x08\x1f\x15\x68\xca\xe8\xb7\x4f\xed\xb7\ \xf9\x1a\x0a\xe3\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa8\x93\x79\x42\ \x27\x19\xe7\x1e\x6f\x04\xbb\xb8\x23\xd7\x1b\x76\xf9\x71\x92\x0d\ \x50\x5f\xa4\x27\x5c\x24\xf5\x61\xdb\x3f\xd9\xf4\xf2\x34\xeb\x16\ \xc5\xba\xf7\x86\xdc\xcf\x1c\xbc\xf2\xf6\x8f\x10\x90\xda\x30\x40\ \x40\x03\x83\xdc\xf3\x5b\xb5\x7f\x58\xb4\xce\xba\x44\x7b\x96\xbb\ \xe9\x6c\x4b\xc6\xa4\x66\x22\x63\x2a\xe7\x1e\xf2\xf4\x46\xde\x09\ \xfb\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\xf8\xe0\x00\x2a\xdd\x51\ \x6d\x54\x69\x32\x5a\xe5\x8f\x43\xe9\x3f\xd1\x77\x47\xf5\x12\xe3\ \xa2\x60\xdf\x2f\x92\x67\xcc\xb6\x2c\x3d\x21\x48\x69\x6a\x53\xf2\ \x30\xea\xc2\x7e\xf9\x42\x23\xed\x48\xed\xe7\xcf\x38\x15\x28\x83\ \xd2\xad\x1f\xac\x2f\x9d\x19\xd4\x56\x9b\x04\x28\x96\x4b\xc4\x17\ \x5d\xbf\x32\xde\x43\x45\xd8\xed\x85\xa8\x2b\x9e\xc5\x61\x68\xe3\ \x1d\xaa\x8f\xbe\xf5\x44\xdd\x3a\x03\xa7\x7a\x52\x6c\x49\x65\x36\ \x6b\x8a\xe7\x7e\xb2\x13\x37\x78\xdb\x95\x21\x5b\x3c\x2d\x83\x6f\ \xfb\xa3\xbe\xe3\xf7\x7b\x73\xc5\xb3\xa2\xba\x88\xd6\x81\xfd\x16\ \xae\x96\x3b\x86\xa6\xd3\x13\xa6\xcf\x88\xb4\x58\x22\xdb\xa7\x7d\ \xa6\x74\x63\x29\x27\xc5\x0f\x20\x7f\x51\xe1\x85\x93\xcf\xef\x6e\ \x1c\xf1\x91\x58\x89\x66\x5a\xf3\x6c\x40\xe6\x95\xd2\x3d\x47\xe8\ \x85\xea\xf1\xa3\xb4\xe4\x1b\x7d\xea\x06\xb1\x4c\x46\x56\xc2\x15\ \xbc\xc3\x90\xf0\x43\x09\x23\x3c\x81\xe3\xa0\x76\xcf\xec\xc9\xa9\ \xee\xb7\xe8\xde\x80\xbb\x75\x0f\xa7\x3f\xd1\x0b\x2c\x66\xad\x08\ \xbd\xcd\xb5\xdf\x5a\x19\xda\xea\xe2\x82\xb5\x25\xce\x4e\x32\x18\ \x74\x77\xe7\x70\xed\x54\x3f\xe8\xef\xd6\x77\xba\x49\x22\xf2\x55\ \xa7\x13\xa8\x22\x5c\xc3\x05\x51\xd5\x33\xc0\xf0\xdc\x65\x4a\x52\ \x16\x0f\x86\xbc\x9f\x31\xf4\x1e\x87\x3c\x53\x9f\x4f\x7f\x48\x3b\ \xce\x93\xd0\x9a\x9f\x4e\xbf\x63\x45\xc6\x6d\xea\x54\xa9\xac\x5c\ \x15\x2c\xb6\x60\xbf\x21\xa2\x85\xad\x28\x28\x56\xee\x49\x56\x37\ \x0e\xe7\xde\x84\xe3\xcc\x24\xa7\xc8\xb4\xf4\x9d\xef\x4d\x46\xfd\ \x15\xba\xad\x7b\x89\xa6\x60\xce\xd3\xe8\xd6\x2a\x54\x2b\x5a\x9c\ \x5a\x18\x53\x5e\x24\x14\xb0\x14\x50\x42\xb0\x3c\x8a\x20\x1e\x70\ \x47\xad\x25\xbf\xf4\x43\x44\xea\x3e\xae\xf4\xd1\x16\xeb\x67\xea\ \x5b\x56\xa5\xb2\xaa\xe7\x74\x83\x19\xd5\x14\x0f\x0d\xb4\x2c\xa5\ \xb2\x4e\x46\xe2\xb4\xa4\xe3\x1c\x02\x47\x35\x49\xd8\x7a\x9e\x6d\ \x1d\x01\xd4\x3d\x28\x36\x10\xf0\xbd\x5c\x51\x3b\xf5\x8f\xdb\x36\ \x96\x76\xaa\x39\xd9\xe1\x6c\x3b\xbf\xdc\xfd\xf7\x0f\xbd\xdb\x8e\ \x64\x37\xaf\xd2\x12\xf0\xf5\xf3\x40\x5e\xec\x96\x26\x6d\xb3\x34\ \x74\x03\x08\x78\xd2\xbc\x74\x4d\x42\x9b\x43\x6a\xdc\x90\x84\x14\ \x02\x12\x78\x04\xe3\x3d\xf8\xa9\xcc\x88\x70\x92\x64\xcf\xac\x3d\ \x3e\xd2\x4a\xe9\x0e\xa3\xbc\x8d\x2d\xa7\xf4\x86\xa0\xb1\xdd\x36\ \xdb\x58\xb7\xde\x5b\x92\xb9\xd0\xb7\xa1\x19\x71\x21\xd5\xf9\xc0\ \x51\x51\xcf\x9b\xc9\xd8\x64\xd2\xae\xb6\xe8\x2d\x0d\x6c\xd6\xba\ \x63\xa7\xba\x77\x47\x43\x89\x3f\x59\xa2\x0a\xdc\xba\x97\xd7\x9b\ \x7a\x4b\xa8\x42\xbc\x16\xf3\xb4\x64\x21\x65\x44\xe4\x9d\xff\x00\ \x02\xa9\xae\xa3\x6b\x4d\x0b\xaa\xa3\xce\x93\x68\xe9\x7b\x76\x0b\ \xd4\xe7\xfc\x77\xa7\xb7\x7b\x75\xf4\x25\x65\x5b\x97\xb1\x92\x84\ \xa5\x21\x47\x3c\x12\x40\x07\x8e\xc2\x9c\x7a\xc1\xd6\x39\xda\xef\ \x58\xe9\xad\x51\x6f\xb3\x7e\xa1\x9b\xa7\xa3\x32\xd4\x62\x25\xfd\ \xa3\x2e\x34\xe1\x71\x2e\x7d\xc4\xe3\x9c\x71\x83\xdb\xbd\x0d\xa0\ \x50\x95\x91\x7b\x6b\x4e\x92\x68\x36\xa1\xeb\x5d\x2c\xe6\x93\xb1\ \x69\xf8\xd6\x7b\x6a\x5d\xd3\xf7\xaf\xd7\x68\x5c\xd9\x72\x12\xd6\ \xe5\x07\x5a\x2e\x95\x79\x95\xc6\x14\x90\x31\xdb\xd3\x1c\x69\xb4\ \x0c\x1c\x0e\x7f\x8d\x5b\xbd\x44\xea\xa6\x91\xd7\x6b\x9d\x79\xbc\ \xf4\xa2\x30\xd5\x93\x62\xf8\x4e\xdd\x63\xde\x9f\x6d\x90\xe8\x6f\ \x62\x5e\xfb\x38\x4e\x37\x27\xca\x70\x56\x41\xda\x33\x9e\x73\x1c\ \xd7\x5a\xee\x0e\xa5\xd0\xda\x57\x4d\xb1\xa3\xed\x56\x77\xac\x2c\ \x29\x97\x6e\x11\x87\xed\x66\x92\x00\xdc\xae\x06\x32\x46\xe3\x92\ \xac\xa8\x92\x31\x9c\x54\x49\xae\x45\xa1\x19\x25\xaa\x20\xb9\x52\ \x7e\xe6\x73\x8f\x53\x58\xad\x41\x5c\xe3\x3f\x5a\xd8\x1b\xe3\xd3\ \x93\x41\x4a\x02\xbd\xaa\xb7\x43\x1c\x59\xe5\xae\x03\xb7\x3b\xc4\ \x2b\x6b\x40\x97\x65\x48\x6d\x84\x00\x39\x2a\x5a\x82\x47\xf1\x34\ \x55\xf5\xfa\x14\x74\xda\x46\xae\xea\x9c\x7d\x4d\x29\x8f\xff\x00\ \x45\xd3\xcb\x12\x16\xb2\x38\x72\x40\x1f\xb2\x40\xe3\x9c\x1f\x39\ \xfa\x0f\x7a\x29\xb1\xd8\xcb\x53\x47\x62\x4f\xa7\x54\x55\x66\x8e\ \x91\xd8\x6e\xff\x00\xf2\x34\xe4\x3b\x0a\xed\x1a\x2b\x87\x2e\x83\ \xbb\xbe\x7f\x2f\xc9\xc3\xfd\x27\xfe\xfc\xbf\x27\x17\x2b\x9a\xf1\ \x27\x1c\x57\x69\x51\x55\xfd\x0b\xff\x00\x4f\x2f\xc9\x1f\xa4\x7f\ \xdf\x97\xe4\xe2\xd3\xea\x3d\x28\x90\x71\x08\x8f\x73\x5d\xa5\x45\ \x1f\xa1\x7f\xe9\xe5\xf9\x0f\xd2\x7f\xef\xcb\xf2\x70\xfa\x4e\x07\ \x35\xb1\xa0\x54\xad\xc7\xb0\xae\xdc\xa2\xaf\xfa\x2f\xfd\xf9\x7e\ \x43\xf4\x8f\xfb\xf2\xfc\x9c\x5c\xca\xb6\xf0\x06\x4d\x6d\x71\x59\ \x50\x1e\xb5\xd9\x94\x55\x1f\x40\xdd\xdf\x89\xe5\xf9\x27\xf4\x9f\ \xfb\xf2\xfc\x9c\x64\xd9\xda\xb3\x5a\x26\x2f\x83\x9e\x31\x5d\xa9\ \x45\x0b\xa0\xac\xef\xc4\xf2\xfc\x87\xe9\x3f\xf7\xe5\xf9\x3e\x77\ \x6b\xa9\xdf\x63\xb6\xca\x92\x14\x01\x6d\xb3\x8f\xa9\xe0\x7f\x3a\ \xa1\x11\x95\x3a\xa5\x7a\xe7\xd6\xbe\xc6\x51\x5d\x4c\x2e\x11\x61\ \xe2\xd5\xef\x73\xa1\x84\xa0\xb0\xea\xd7\xb9\xf1\xec\x82\x71\x80\ \x73\xf4\xaf\x12\x15\xef\xc5\x7d\x85\xa2\xb4\x64\x37\xf1\xb5\xbd\ \x8f\x8f\x67\x8c\x1c\x63\x3c\xf3\x5e\x82\x08\xef\xe6\xaf\xb0\x74\ \x51\x90\x38\xfd\xc7\xc7\xac\x71\x40\x49\xc5\x7d\x85\xa2\xa7\x20\ \x71\xbb\x8f\x8f\x84\x64\x70\x70\x6b\xd0\x09\x1c\x02\x7d\x39\x3e\ \x95\xf6\x0a\x8a\x8e\x19\x3c\x7e\xe3\xe3\xee\x14\x08\x0a\x38\x03\ \xd7\x15\xe8\x27\x80\x08\xaf\xb0\x34\x51\xc3\x27\xda\x3b\x8f\x90\ \x18\x24\x7d\xd0\x4d\x79\xb4\xfb\x1f\x73\xe9\x5f\x60\x28\xa8\xe1\ \xf7\x83\xc4\x27\xc8\xf8\xff\x00\xb4\x15\x77\xfc\xeb\xcc\x6d\x00\ \x03\x8c\x73\x8a\xfb\x03\x45\x4f\x0f\xbc\x3d\xa3\xb8\xf8\xfc\x8c\ \x9c\x11\xc1\xf9\x15\xe8\xc2\x95\xc2\x52\x33\x5f\x60\x28\xa3\x86\ \x0b\x11\x6e\x47\xc8\x15\x0c\x63\x90\x4f\xf6\xab\xc2\x93\xff\x00\ \x2b\x8e\xfe\xb5\xf5\xfe\x8a\x8e\x1f\x79\x2f\x13\x7e\x47\xc8\x21\ \xbb\x1b\x4f\x6f\x7c\xf6\xa3\x82\x0a\x47\xf0\x3d\xeb\xeb\xed\x14\ \x70\xbb\xc3\xda\x7b\x8f\x90\x24\x01\x94\x9c\xfb\xf3\xef\x5e\xe5\ \x58\x20\x13\x8a\xfa\xfb\x45\x1c\x3e\xf0\xf6\x9e\xe3\xe4\x0a\x54\ \x40\xe1\x47\xbf\x3c\x56\x1b\x95\x93\xc7\x7f\x5e\x6b\xec\x0d\x14\ \x70\xc3\xda\x7b\x8f\x8f\xe0\x10\xac\xf6\x3d\xfb\x77\xaf\x54\xae\ \x30\x09\xcf\xc8\xaf\xaf\xf4\x51\xc3\xef\x0f\x69\xee\x3e\x3f\x61\ \x4a\xf5\xc7\xcd\x03\x68\xce\x72\x4e\x6b\xec\x0d\x15\x3c\x3e\xf2\ \x3d\xa3\xb8\xf9\x00\x79\x1d\xf1\x9e\xc6\xb1\x52\x94\x7d\x41\x15\ \xf6\x06\x8a\x38\x60\xf1\x17\xe4\x7c\x7d\xff\x00\xaa\x6b\xd0\x94\ \x93\x9f\x7e\x3d\xeb\xec\x0d\x14\x70\xfb\xc8\xf6\x8e\xe3\xe4\x07\ \x38\xe0\x8f\xf2\xac\x52\x3c\xb9\x38\xc5\x7d\x81\xa2\x8e\x19\x2f\ \x11\xdc\x7c\x7f\x1c\x64\x0c\x8c\x77\x19\xc5\x62\xa7\x01\xc2\x73\ \xc7\xd2\xbe\xc1\x51\x47\x0c\x87\x88\x7d\x87\xc8\x5b\x7c\x1b\x95\ \xcd\xf0\xc5\xb2\x0c\xb9\xce\x13\xe5\x4c\x76\x14\xe1\x27\xe8\x33\ \x57\x8f\x48\x7f\x45\xcd\x7b\xab\xe6\x33\x2f\x53\x46\x77\x4b\xd9\ \xb2\x0a\xd7\x24\x62\x4b\x89\xe3\x84\x35\xdc\x64\x1e\xea\xc7\xd0\ \xd7\xd0\x9a\x2a\x54\x12\x2b\x2a\xcd\xa1\x8b\x41\xe9\x2b\x0e\x88\ \xd2\xf1\x34\xe6\x9b\x82\x98\x76\xf8\xc3\xca\x91\xca\x96\xa3\xdd\ \x6b\x3f\xbc\xa3\xea\x68\xa7\xda\x2a\xe2\x42\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x0f\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x08\x01\x81\xe7\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/draganddrop/README0000644000076500000240000000151412613140041020232 0ustar philstaff00000000000000PyQt supports native drag and drop on all platforms via an extensible MIME-based system that enables applications to send data to each other in the most appropriate formats. Drag and drop can also be implemented for internal use by applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/effects/0000755000076500000240000000000012613140041016503 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/effects/lighting.py0000644000076500000240000001220512613140041020662 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import QPointF, Qt, QTimer from PyQt5.QtGui import (QBrush, QColor, QLinearGradient, QPen, QPainter, QPixmap, QRadialGradient) from PyQt5.QtWidgets import (QApplication, QFrame, QGraphicsDropShadowEffect, QGraphicsEllipseItem, QGraphicsRectItem, QGraphicsScene, QGraphicsView) class Lighting(QGraphicsView): def __init__(self, parent=None): super(Lighting, self).__init__(parent) self.angle = 0.0 self.m_scene = QGraphicsScene() self.m_lightSource = None self.m_items = [] self.setScene(self.m_scene) self.setupScene() timer = QTimer(self) timer.timeout.connect(self.animate) timer.setInterval(30) timer.start() self.setRenderHint(QPainter.Antialiasing) self.setFrameStyle(QFrame.NoFrame) def setupScene(self): self.m_scene.setSceneRect(-300, -200, 600, 460) linearGrad = QLinearGradient(QPointF(-100, -100), QPointF(100, 100)) linearGrad.setColorAt(0, QColor(255, 255, 255)) linearGrad.setColorAt(1, QColor(192, 192, 255)) self.setBackgroundBrush(linearGrad) radialGrad = QRadialGradient(30, 30, 30) radialGrad.setColorAt(0, Qt.yellow) radialGrad.setColorAt(0.2, Qt.yellow) radialGrad.setColorAt(1, Qt.transparent) pixmap = QPixmap(60, 60) pixmap.fill(Qt.transparent) painter = QPainter(pixmap) painter.setPen(Qt.NoPen) painter.setBrush(radialGrad) 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__': import sys app = QApplication(sys.argv) lighting = Lighting() lighting.setWindowTitle("Lighting and Shadows") lighting.resize(640, 480) lighting.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/effects/README0000644000076500000240000000135712613140041017371 0ustar philstaff00000000000000PyQt supports a number of graphics effects including blurring, drop shadows, opacity and colorizing. These examples demonstrate these different effects. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/graphicsview/0000755000076500000240000000000012613140041017557 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/anchorlayout.py0000755000076500000240000001121412613140041022643 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QSizeF, Qt from PyQt5.QtWidgets import (QApplication, QGraphicsAnchorLayout, QGraphicsProxyWidget, QGraphicsScene, QGraphicsView, QGraphicsWidget, QPushButton, QSizePolicy) def createItem(minimum, preferred, maximum, name): w = QGraphicsProxyWidget() w.setWidget(QPushButton(name)) w.setMinimumSize(minimum) w.setPreferredSize(preferred) w.setMaximumSize(maximum) w.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) return w if __name__ == '__main__': import sys app = QApplication(sys.argv) scene = QGraphicsScene() scene.setSceneRect(0, 0, 800, 480) minSize = QSizeF(30, 100) prefSize = QSizeF(210, 100) maxSize = QSizeF(300, 100) a = createItem(minSize, prefSize, maxSize, "A") b = createItem(minSize, prefSize, maxSize, "B") c = createItem(minSize, prefSize, maxSize, "C") d = createItem(minSize, prefSize, maxSize, "D") e = createItem(minSize, prefSize, maxSize, "E") f = createItem(QSizeF(30, 50), QSizeF(150, 50), maxSize, "F") g = createItem(QSizeF(30, 50), QSizeF(30, 100), maxSize, "G") l = QGraphicsAnchorLayout() l.setSpacing(0) w = QGraphicsWidget(None, Qt.Window) w.setPos(20, 20) w.setLayout(l) # Vertical. l.addAnchor(a, Qt.AnchorTop, l, Qt.AnchorTop) l.addAnchor(b, Qt.AnchorTop, l, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorTop, a, Qt.AnchorBottom) l.addAnchor(c, Qt.AnchorTop, b, Qt.AnchorBottom) l.addAnchor(c, Qt.AnchorBottom, d, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorBottom, e, Qt.AnchorTop) l.addAnchor(d, Qt.AnchorBottom, l, Qt.AnchorBottom) l.addAnchor(e, Qt.AnchorBottom, l, Qt.AnchorBottom) l.addAnchor(c, Qt.AnchorTop, f, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorVerticalCenter, f, Qt.AnchorBottom) l.addAnchor(f, Qt.AnchorBottom, g, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorBottom, g, Qt.AnchorBottom) # Horizontal. l.addAnchor(l, Qt.AnchorLeft, a, Qt.AnchorLeft) l.addAnchor(l, Qt.AnchorLeft, d, Qt.AnchorLeft) l.addAnchor(a, Qt.AnchorRight, b, Qt.AnchorLeft) l.addAnchor(a, Qt.AnchorRight, c, Qt.AnchorLeft) l.addAnchor(c, Qt.AnchorRight, e, Qt.AnchorLeft) l.addAnchor(b, Qt.AnchorRight, l, Qt.AnchorRight) l.addAnchor(e, Qt.AnchorRight, l, Qt.AnchorRight) l.addAnchor(d, Qt.AnchorRight, e, Qt.AnchorLeft) l.addAnchor(l, Qt.AnchorLeft, f, Qt.AnchorLeft) l.addAnchor(l, Qt.AnchorLeft, g, Qt.AnchorLeft) l.addAnchor(f, Qt.AnchorRight, g, Qt.AnchorRight) scene.addItem(w) scene.setBackgroundBrush(Qt.darkGreen) view = QGraphicsView(scene) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/graphicsview/collidingmice/0000755000076500000240000000000012613140041022361 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/collidingmice/collidingmice.py0000755000076500000240000001771412613140041025552 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import (qAbs, QLineF, QPointF, QRectF, qrand, qsrand, Qt, QTime, QTimer) from PyQt5.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap, QPolygonF) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene, QGraphicsView, QGraphicsWidget) import mice_rc class Mouse(QGraphicsItem): Pi = math.pi TwoPi = 2.0 * Pi # Create the bounding rectangle once. adjust = 0.5 BoundingRect = QRectF(-20 - adjust, -22 - adjust, 40 + adjust, 83 + adjust) def __init__(self): super(Mouse, self).__init__() self.angle = 0.0 self.speed = 0.0 self.mouseEyeDirection = 0.0 self.color = QColor(qrand() % 256, qrand() % 256, qrand() % 256) self.setRotation(qrand() % (360 * 16)) # In the C++ version of this example, this class is also derived from # QObject in order to receive timer events. PyQt does not support # deriving from more than one wrapped class so we just create an # explicit timer instead. self.timer = QTimer() self.timer.timeout.connect(self.timerEvent) self.timer.start(1000 / 33) @staticmethod def normalizeAngle(angle): while angle < 0: angle += Mouse.TwoPi while angle > Mouse.TwoPi: angle -= Mouse.TwoPi return angle def boundingRect(self): return Mouse.BoundingRect def shape(self): path = QPainterPath() path.addRect(-10, -20, 20, 40) return path; def paint(self, painter, option, widget): # Body. painter.setBrush(self.color) painter.drawEllipse(-10, -20, 20, 40) # Eyes. painter.setBrush(Qt.white) painter.drawEllipse(-10, -17, 8, 8) painter.drawEllipse(2, -17, 8, 8) # Nose. painter.setBrush(Qt.black) painter.drawEllipse(QRectF(-2, -22, 4, 4)) # Pupils. painter.drawEllipse(QRectF(-8.0 + self.mouseEyeDirection, -17, 4, 4)) painter.drawEllipse(QRectF(4.0 + self.mouseEyeDirection, -17, 4, 4)) # Ears. if self.scene().collidingItems(self): painter.setBrush(Qt.red) else: painter.setBrush(Qt.darkYellow) painter.drawEllipse(-17, -12, 16, 16) painter.drawEllipse(1, -12, 16, 16) # Tail. path = QPainterPath(QPointF(0, 20)) path.cubicTo(-5, 22, -5, 22, 0, 25) path.cubicTo(5, 27, 5, 32, 0, 30) path.cubicTo(-5, 32, -5, 42, 0, 35) painter.setBrush(Qt.NoBrush) painter.drawPath(path) def timerEvent(self): # Don't move too far away. lineToCenter = QLineF(QPointF(0, 0), self.mapFromScene(0, 0)) if lineToCenter.length() > 150: angleToCenter = math.acos(lineToCenter.dx() / lineToCenter.length()) if lineToCenter.dy() < 0: angleToCenter = Mouse.TwoPi - angleToCenter; angleToCenter = Mouse.normalizeAngle((Mouse.Pi - angleToCenter) + Mouse.Pi / 2) if angleToCenter < Mouse.Pi and angleToCenter > Mouse.Pi / 4: # Rotate left. self.angle += [-0.25, 0.25][self.angle < -Mouse.Pi / 2] elif angleToCenter >= Mouse.Pi and angleToCenter < (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: self.angle += 0.25 elif math.sin(self.angle) > 0: self.angle -= 0.25 # Try not to crash with any other mice. dangerMice = self.scene().items(QPolygonF([self.mapToScene(0, 0), self.mapToScene(-30, -50), self.mapToScene(30, -50)])) for item in dangerMice: if item is self: continue lineToMouse = QLineF(QPointF(0, 0), self.mapFromItem(item, 0, 0)) angleToMouse = math.acos(lineToMouse.dx() / lineToMouse.length()) if lineToMouse.dy() < 0: angleToMouse = Mouse.TwoPi - angleToMouse angleToMouse = Mouse.normalizeAngle((Mouse.Pi - angleToMouse) + Mouse.Pi / 2) if angleToMouse >= 0 and angleToMouse < Mouse.Pi / 2: # Rotate right. self.angle += 0.5 elif angleToMouse <= Mouse.TwoPi and angleToMouse > (Mouse.TwoPi - Mouse.Pi / 2): # Rotate left. self.angle -= 0.5 # Add some random movement. if len(dangerMice) > 1 and (qrand() % 10) == 0: if qrand() % 1: self.angle += (qrand() % 100) / 500.0 else: self.angle -= (qrand() % 100) / 500.0 self.speed += (-50 + qrand() % 100) / 100.0 dx = math.sin(self.angle) * 10 self.mouseEyeDirection = 0.0 if qAbs(dx / 5) < 1 else dx / 5 self.setRotation(self.rotation() + dx) self.setPos(self.mapToParent(0, -(3 + math.sin(self.speed) * 3))) if __name__ == '__main__': import sys MouseCount = 7 app = QApplication(sys.argv) qsrand(QTime(0,0,0).secsTo(QTime.currentTime())) scene = QGraphicsScene() scene.setSceneRect(-300, -300, 600, 600) scene.setItemIndexMethod(QGraphicsScene.NoIndex) for i in range(MouseCount): mouse = Mouse() mouse.setPos(math.sin((i * 6.28) / MouseCount) * 200, math.cos((i * 6.28) / MouseCount) * 200) scene.addItem(mouse) view = QGraphicsView(scene) view.setRenderHint(QPainter.Antialiasing) view.setBackgroundBrush(QBrush(QPixmap(':/images/cheese.jpg'))) view.setCacheMode(QGraphicsView.CacheBackground) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.setDragMode(QGraphicsView.ScrollHandDrag) view.setWindowTitle("Colliding Mice") view.resize(400, 300) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/graphicsview/collidingmice/images/0000755000076500000240000000000012613140041023626 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/collidingmice/images/cheese.jpg0000644000076500000240000000572512613140041025575 0ustar philstaff00000000000000ÿØÿàJFIFHHÿîAdobed@ÿÛ„      ÿÀ^^ÿÝ ÿÄ¢  s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúm!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“ &6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ ?ûAÓo¢‡Ç<7‰éÔéâk)n£rM ðÈ‚¥²AZ†úFù"7P¦cåâvù`ä•ÁHØt=F V¤š1`¤ìkã’ ¬I’Q­È‘·ê„4¯ÅŽûwÉlIb:¯ž<¿£Ìmîï+84ha£þU6~§§ïNŸ~eøžž/'‡zÿÑû?JíÔöÏ §¨Qy?Ö=°ˆq-Òš„j{d¼&aÆpJ‘Jt"˜øtŽ0UÔ‡nÛŒ ;@ÞÚ ˆšbJƒÄѨ|ù +|µ=ໞYâäÈbBÿ!%OßÇ,ˆÅÖý̼IŽTôk+[-:Ö+ e¶´€)þQ«îNç!–|g•À§šÝNÊ=NÂæÍ¶€PžÌ7ÊÄD½'«!#a…i¾\’ݽ;‹vJÕÆÿÛ˜Ù#,G„¹-€©Ï ·¨J/çŽÚ9îfqP!yôEI9|HËY²h>Ró'æšõKébÐIÓlQˆÒž«Ýœƒ×Àe>)ŸZr#†1çºqå_>y¢Öîõ‹‡¾µ”"L`R¬v÷ȆíÄ%ÈSé›I–EŠhÛœR…daЩfA ‹ØZ¨=5µ„ 1€{|ˆ34›jzïNMïí<™†¸5 ‘ZW·Ë5µŒ¬ k-©­ð9$.ãN„ø}H%A]ÈÔøø×#JÿÿÔûCÉ)Øðzz…zt ôÉÄð›Ô‹K­´}Ní ¿U”±fŽZ”ÿ`À~'›<ûÆ\'¸Ý|ý+Ò†ÄZ'è«`¾¤«xÊ(!ŒÛ“56ÄiñBbRÉ]"þò@jñrO¯4*³Ü¹øª±<@Ø|€ðrä–Be.e”ˆ ª@?>”Ê:3s1 Ü.ʵýXlõE!Üo°&§¬ z×åŠUÐöë¡} 4ðÚ¸ÄyªrRO]öOL<;Õ£‰ÿÕû8ÀÖ£®x]½B“G^„×¹Ä*€·]Ù¶5ÛÄâ(VH _‰ºøòDŒx‚6ªc¢€6##Í’Ÿ¨T|@úâ`–ê\ñ=ÎB’ºª*¤×ß TJT{cJ»wQ·l•*àkþKxd$ÛÔoô`WÿÖû=Q×–xSÔ/$q$liÓÙRnK‹}Q»³¡º†mÁb4ö­r2‘$&1âºf‡æhîª5;É®9 $2HÅ¢„Ҟ؀@«t¢9=âÔ¹†'‘x4ˆ®ÉàXTŒÈɵ*Ƈ®ô4Êì³RcÇzn{âÔL½‡\°´&жþq¯õ–”¯Ñ€Á"j«)$PŽ»ä¦V¦%#š’y)‘¥ÿ×û;ÐPÇ<*Þ¡PPûõÄ«¤U(A^JÀ†SЂ(AƃanöÑGéÃaF¯Ùgäƒè¥Oß™~.!¿þý¿$LõTS#3™$¶ÔÙ‹“'¾¬€¦…jFÕ4`½ÇÏä”5Á"ƒ¹é’Ç»0/8ùÂÇÊvB{ Ó\KQmj†!jeEz岘€óc—Ïòþsù¦æê–‘Ckk_†10»1©ÊŒæz·Œ1Ròoæ<úÄñXêð¤rÌBÅs*9”“JøŒÌA©5Ï«dа'¥wtã³Tdô–µíN™ŽÜÿÿÐû4ÊÛýÆxCÔ¶ŒAZ‘Ö§$‚¨O&@¯°Û¯øTo@r*´ÍU AÔø{âW§A×®ˆC¼m+- Fãl³c7Ë¿™¶7:šeˆ‚ÖÖ¡bDë@?‰9‹’w77 ÆK,ŠF›uðË,Ä0 [!‡Ë2YÜE…Ò}[.Òi½1!ñ#¾lqJñ‚]|ÅJ“~'Óú2¾­ÿÑû9-üNxCÔ0/2k^e°Ôôû- F‹QŠxÚ{¹¦vP[øþÖÕ©öÆy죌˫?µvx‘ =t=A"´>ã$Fì¹A¹p¶ pU vß׆Q€ì—râ4à ‡™yÃËku¨&«lÞµåw*àSìrYôüQãÇËöì«ÒQZF†„§«â‚”¨Úž,Àã2<7»q¡»'m®\E|˜ìÔO†CI£žLüÞÏö°É©ˆ”ÏÒŠâ´‚ºˆÃÿ7ÄŸ¦™¸ÍÁÃCo–ßo7w=U9ÓM©˜öÝOÿÒûy“§9/Ññîøôa>Ý^ÚêÜeÓL+È$ÔB|wäGß•œÚ~+ž;;ÝHú~‰G-}[{•'ŸP–)¾©d–Öá}麻ñïSÊ´ñ É㙜%áDF5½o*ëw¿¾€ b ÄI>idâÅá”§!ðÔeiÿÙPyQt-gpl-5.5.1/examples/graphicsview/collidingmice/mice.qrc0000644000076500000240000000014112613140041024001 0ustar philstaff00000000000000 images/cheese.jpg PyQt-gpl-5.5.1/examples/graphicsview/collidingmice/mice_rc.py0000644000076500000240000003220312613140041024334 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 5 04:43:58 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0b\xd5\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x00\x48\x00\ \x48\x00\x00\xff\xee\x00\x0e\x41\x64\x6f\x62\x65\x00\x64\x40\x00\ \x00\x00\x01\xff\xdb\x00\x84\x00\x02\x02\x02\x02\x02\x02\x02\x02\ \x02\x02\x03\x02\x02\x02\x03\x04\x03\x02\x02\x03\x04\x05\x04\x04\ \x04\x04\x04\x05\x06\x05\x05\x05\x05\x05\x05\x06\x06\x07\x07\x08\ \x07\x07\x06\x09\x09\x0a\x0a\x09\x09\x0c\x0c\x0c\x0c\x0c\x0c\x0c\ \x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x01\x03\x03\x03\x05\x04\x05\x09\ \x06\x06\x09\x0d\x0a\x09\x0a\x0d\x0f\x0e\x0e\x0e\x0e\x0f\x0f\x0c\ \x0c\x0c\x0c\x0c\x0f\x0f\x0c\x0c\x0c\x0c\x0c\x0c\x0f\x0c\x0c\x0c\ \x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\ \x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\xff\xc0\x00\x11\x08\x00\x5e\ \x00\x5e\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xdd\x00\x04\ \x00\x0c\xff\xc4\x01\xa2\x00\x00\x00\x07\x01\x01\x01\x01\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x04\x05\x03\x02\x06\x01\x00\x07\x08\ \x09\x0a\x0b\x01\x00\x02\x02\x03\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\x02\x01\x03\x03\x02\x04\x02\x06\x07\x03\x04\x02\x06\x02\ \x73\x01\x02\x03\x11\x04\x00\x05\x21\x12\x31\x41\x51\x06\x13\x61\ \x22\x71\x81\x14\x32\x91\xa1\x07\x15\xb1\x42\x23\xc1\x52\xd1\xe1\ \x33\x16\x62\xf0\x24\x72\x82\xf1\x25\x43\x34\x53\x92\xa2\xb2\x63\ \x73\xc2\x35\x44\x27\x93\xa3\xb3\x36\x17\x54\x64\x74\xc3\xd2\xe2\ \x08\x26\x83\x09\x0a\x18\x19\x84\x94\x45\x46\xa4\xb4\x56\xd3\x55\ \x28\x1a\xf2\xe3\xf3\xc4\xd4\xe4\xf4\x65\x75\x85\x95\xa5\xb5\xc5\ \xd5\xe5\xf5\x66\x76\x86\x96\xa6\xb6\xc6\xd6\xe6\xf6\x37\x47\x57\ \x67\x77\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x38\x48\x58\x68\x78\x88\ \x98\xa8\xb8\xc8\xd8\xe8\xf8\x29\x39\x49\x59\x69\x79\x89\x99\xa9\ \xb9\xc9\xd9\xe9\xf9\x2a\x3a\x4a\x5a\x6a\x7a\x8a\x9a\xaa\xba\xca\ \xda\xea\xfa\x11\x00\x02\x02\x01\x02\x03\x05\x05\x04\x05\x06\x04\ \x08\x03\x03\x6d\x01\x00\x02\x11\x03\x04\x21\x12\x31\x41\x05\x51\ \x13\x61\x22\x06\x71\x81\x91\x32\xa1\xb1\xf0\x14\xc1\xd1\xe1\x23\ \x42\x15\x52\x62\x72\xf1\x33\x24\x34\x43\x82\x16\x92\x53\x25\xa2\ \x63\xb2\xc2\x07\x73\xd2\x35\xe2\x44\x83\x17\x54\x93\x08\x09\x0a\ \x18\x19\x26\x36\x45\x1a\x27\x64\x74\x55\x37\xf2\xa3\xb3\xc3\x28\ \x29\xd3\xe3\xf3\x84\x94\xa4\xb4\xc4\xd4\xe4\xf4\x65\x75\x85\x95\ \xa5\xb5\xc5\xd5\xe5\xf5\x46\x56\x66\x76\x86\x96\xa6\xb6\xc6\xd6\ \xe6\xf6\x47\x57\x67\x77\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x38\x48\ \x58\x68\x78\x88\x98\xa8\xb8\xc8\xd8\xe8\xf8\x39\x49\x59\x69\x79\ \x89\x99\xa9\xb9\xc9\xd9\xe9\xf9\x2a\x3a\x4a\x5a\x6a\x7a\x8a\x9a\ \xaa\xba\xca\xda\xea\xfa\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\ \x11\x00\x3f\x00\xfb\x41\xd3\x6f\xa2\x87\xc7\x3c\x37\x89\xe9\xd4\ \xe9\xe2\x6b\x90\x29\x6e\xa3\x72\x4d\x0d\x0f\x8f\xf0\xc8\x82\xa5\ \xb2\x41\x5a\x86\xfa\x46\xf9\x22\x37\x50\xa6\x63\xe5\xe2\x76\xf9\ \x60\xe4\x95\xc1\x48\xd8\x74\x3d\x46\x0b\x56\xa4\x9a\x18\x14\x31\ \x60\xa4\xec\x6b\xe3\x92\x1b\xa0\xac\x49\x92\x51\x1b\x02\xad\xc8\ \x91\xb7\xea\xc2\x84\x34\xaf\xc5\x8e\xfb\x77\xc9\x81\x6c\x49\x62\ \x3a\xaf\x9e\x3c\xbf\xa3\xcc\x6d\xee\xef\x2b\x38\x34\x68\x61\x1e\ \xa3\x03\xfe\x55\x36\x1f\x7e\x3c\x51\x09\x11\x94\x91\xfa\x47\x9a\ \xb4\x9d\x6e\xa9\x61\x75\xce\x50\x2a\x60\x70\x51\xe9\xec\x0f\x5f\ \xa3\x11\x38\xc8\xd2\x0c\x65\x16\x48\x25\x3c\x5b\x7f\x0c\x4c\x37\ \x5e\x2d\x9f\xff\xd0\xfb\x3a\xfb\x0a\xee\x4d\x6b\x4c\xf0\xb0\x1e\ \xa1\x6f\x2d\xfa\x6e\x71\x21\x34\xb8\x11\x5e\x9b\xe4\x50\xd3\x53\ \xa7\x8e\xe7\x25\x6a\xda\xd0\xee\x48\x03\xc7\x04\x95\x4e\x59\x12\ \x15\x2e\xce\x02\x81\x52\x7e\x59\x00\x2d\x2f\x9c\xbf\x36\xbc\xc7\ \xa8\x98\xa5\x5d\x1f\xce\x9a\x7e\x8f\x67\x14\x6c\xb7\x36\xf1\xd5\ \xef\x5d\xc8\x20\x08\xe8\x0f\x1a\xd7\xae\xc4\x65\xb8\xf2\x00\x6a\ \x89\xfb\x99\xc6\x16\x37\x67\x9f\x93\xcf\xa8\xdc\xf9\x2a\xda\xe2\ \xfe\x49\xa6\x9d\xee\x65\x58\xee\x2e\x09\x77\x68\xd4\x2d\x0d\x4e\ \xf5\xa9\x3d\x72\x73\x02\xb8\xbb\xda\xe5\xb4\xa9\x96\xf9\xa2\x6b\ \x8b\x2d\x12\xfa\xea\xdc\x11\x3d\x38\x44\x47\x50\x5b\x6a\xfd\x19\ \x5c\xe5\x51\xd9\x61\x1e\x29\x51\x7c\xdf\x17\x97\xda\xf2\x43\x35\ \xc2\x16\x66\x35\x24\xd4\xd0\x93\x95\x44\x97\x22\x42\x99\x5e\x9b\ \xa3\x5c\xe9\x77\x56\xd7\x56\xfc\x97\x83\x06\x53\x4e\x84\x65\x73\ \xca\x8e\x0b\x7b\xbf\xac\x46\x9e\x2f\x3d\x3d\xcc\x3e\xa7\xa7\xef\ \x4e\x9f\x7e\x65\xf8\x9e\x9e\x2f\x27\x13\x87\x7a\x7f\xff\xd1\xfb\ \x3f\x4a\xed\xd4\xf6\xcf\x0b\xa7\xa8\x51\x79\x15\x3f\xd6\x3d\xb0\ \x88\x71\x2d\xd2\x81\x9a\x84\x16\x6a\x7b\x64\xbc\x26\x06\x61\xc6\ \x70\x4a\x91\x4a\x74\x22\x98\xf8\x74\x8e\x30\x55\xd4\x87\x07\x6e\ \xdb\x8c\x8f\x0b\x3b\x40\xde\xda\x0b\x88\x9a\x16\x62\x12\x4a\x83\ \xc4\xd1\xa8\x7c\x0e\xf9\x20\x05\xee\xac\x15\xbf\x2b\x7c\xb5\x3d\ \xe0\xbb\x9e\x59\x1b\xe2\xe4\xc8\x62\x42\xff\x00\x21\x25\x4f\xdf\ \xc7\x2c\x88\xc5\xd6\xfd\xcc\xbc\x49\x8e\x54\xf4\x6b\x2b\x5b\x2d\ \x3a\xd6\x1b\x2b\x0b\x65\xb6\xb4\x80\x11\x1c\x29\xfe\x51\xab\x13\ \xee\x4e\xe7\x21\x96\x7c\x67\x95\x00\xc0\x0e\xa7\x9a\xdd\x4e\xca\ \x3d\x4e\xc2\xe6\xcd\xb6\x12\x80\x50\x9e\xcc\x37\x15\xca\xc4\x44\ \xbd\x27\xab\x21\x23\x13\x61\x85\x69\xbe\x5c\x92\xdd\xbd\x3b\x8b\ \x76\x4a\x1d\xd5\xc6\xff\x00\xdb\x98\xd9\x23\x2c\x47\x84\xb9\x3c\ \x42\x7b\xb2\xdf\xd0\x29\x38\x58\x91\x15\x55\x57\x76\x3f\x65\x47\ \x72\x4f\xb6\x47\x06\x9a\x59\x32\xd0\x3b\x75\x3d\xc1\xae\x79\xc4\ \x42\x61\xe9\xdb\x95\x16\xf4\xff\x00\x47\x54\xf4\xf9\x53\xf6\x69\ \xc7\x95\x3f\x1c\xd8\xdc\x38\xab\xf8\x7f\x43\x8b\x52\xab\xea\xff\ \x00\xff\xd2\xfb\x3e\x0f\x2d\x80\xa9\xcf\x0a\xb7\xa8\x4a\x2f\xe7\ \x8e\xda\x39\xee\x66\x71\x1c\x50\x21\x79\x1c\xf4\x01\x45\x49\x39\ \x7c\x48\x02\xcb\x59\xb2\x68\x3e\x52\xf3\x27\xe6\x7f\x9a\xf5\x4b\ \xe9\x62\xd0\x49\xd3\x6c\x51\x88\x8d\xd2\x9e\xab\x81\xdd\x9c\x83\ \xd7\xc0\x65\x3e\x29\x9f\x5a\x72\x23\x86\x31\xe7\xba\x71\xe5\x5f\ \x3e\x79\xa2\xd6\xee\x08\xf5\x8b\x87\xbe\xb5\x94\x81\x22\x4c\x01\ \x60\x0f\x52\xac\x05\x76\xf7\xc8\x1c\x86\x06\xed\x12\xc4\x25\xc8\ \x53\xe9\x9b\x49\x96\x45\x8a\x68\xdb\x9c\x52\x85\x64\x61\xd0\xa9\ \x1b\x66\x41\x20\x8b\x0e\x3c\x6c\x1a\x4c\x4d\x08\x3b\x74\x39\x53\ \x6a\xd0\xb4\xad\x0d\x3d\xb0\x5a\xb7\xb8\x20\x56\x83\x1b\x55\xe2\ \x4e\x3d\x45\x6a\x30\x91\x6a\xa1\x15\xed\xd4\x44\x8a\x2c\xb1\x8f\ \xb0\x8e\xa1\xa9\xf2\xae\xf9\x31\x9a\x63\x6d\x8f\xbc\x02\xd6\x60\ \x3d\xcb\xa4\xbc\xbc\xb9\xf8\x5d\xb8\x45\xfc\x8a\x02\x83\xf3\x00\ \x63\x3c\xb2\x90\xa3\xb0\xee\x00\x01\xf6\x2c\x71\x81\xc9\xc6\x36\ \xe2\x14\x1d\x89\xf8\xbe\xef\xeb\x95\x58\x6c\xa7\xff\xd3\xfb\x3c\ \xa4\x0e\x9b\x30\xf0\xcf\x07\xb7\xa9\x48\xfc\xc9\x66\xf7\xbe\x5f\ \xd6\xe0\x88\x16\x96\x58\x1b\x8a\x8e\xa4\x0a\x13\xf8\x64\xc8\x33\ \x89\x01\x61\xb4\xc1\x2f\x9e\x34\x6f\x29\x2b\x86\x01\x0a\x90\x76\ \x04\x6f\x53\x98\xd0\x90\xe4\x79\xb9\x99\x3c\x99\xef\xf8\x20\x08\ \x22\x67\x00\x48\xa7\x96\xc3\x31\x67\x9a\xe7\xc3\xd1\x63\x10\x05\ \xbd\x3f\x46\xb2\x7b\x4d\x26\xc6\x19\x3e\xd8\x5a\xa8\x3d\x81\x35\ \x19\xb5\x84\x0c\x31\x80\x7b\x9d\x7c\x88\x33\x34\x9b\x00\x6a\x7a\ \xef\x4e\x4d\xef\xed\x90\x3c\x99\x86\xb8\x35\x09\x00\x91\x5a\x57\ \xb7\xcb\x10\x0f\x35\xb5\x8c\xac\x0d\x6b\x81\x2d\xa9\xad\x01\xf0\ \x39\x24\x2e\xe3\x4e\x84\x0f\x0e\xf8\x15\x7d\x48\x1e\x07\x25\x41\ \x5d\xc8\xd4\xf8\xf8\xd7\x23\x4a\xff\x00\xff\xd4\xfb\x43\xc9\x29\ \xd8\x1c\xf0\x7a\x7a\x85\x1e\x7f\x1f\x7a\x74\x20\xf4\xc9\xc4\xf0\ \x9b\x1c\xd4\x8b\x4b\xad\xb4\x7d\x14\x4e\xed\x0c\xbf\x55\x94\xb1\ \x66\x8e\x5a\x94\xff\x00\x60\xc0\x7e\x07\x27\x9b\x06\x3c\xfb\xc6\ \x5c\x27\xb8\xdd\x7c\x08\xfd\x2b\x1c\xd2\x86\xc4\x5a\x7f\x27\xe8\ \xab\x60\xbe\xa4\xab\x78\xca\x28\x21\x8c\x1a\x13\xdb\x93\x35\x36\ \xc4\x69\xf1\x42\x62\x52\x90\xc9\x5d\x22\x0e\xfe\xf2\x40\x6a\xf1\ \x72\x4f\x90\xaf\x34\x2a\xb3\xdc\xb9\x9d\xf8\xaa\xb1\x3c\x40\xd8\ \x7c\x80\xf0\x18\x72\xe4\x96\x42\x65\x2e\x65\x94\x00\x88\xa0\xaa\ \x40\x3f\x3e\x94\xca\x3a\x33\x73\x31\x20\x06\xdc\x2e\xca\xb5\xfd\ \x58\x6c\xf5\x45\x21\xdc\x6f\xb0\x26\xa7\x14\xac\x0a\x7a\xd7\xe5\ \x8a\x55\x14\x13\xd0\xf6\xeb\x8d\xa1\x7d\x09\x34\x1d\xf0\xda\xb8\ \xc4\x79\xaa\x72\x52\x4f\x5d\xf6\x1f\x4f\x4c\x3c\x3b\xd5\xa3\x89\ \xff\xd5\xfb\x38\xc0\xd6\xa3\xae\x78\x5d\xbd\x42\x93\x47\x5e\x84\ \xd7\xb9\xc4\x2a\x80\xb7\x5d\xd9\xb6\x35\xdb\xc4\xe2\x00\x28\x56\ \x48\xa0\x5f\x89\xba\xf8\x9d\xf2\x44\x1e\x8c\x78\x82\x36\xaa\x63\ \xa2\x80\x05\x36\x23\x23\xcd\x92\x9f\xa8\x54\x7c\x40\x9d\xfa\xe2\ \x60\x96\xea\x5c\xf1\x14\x1f\x3d\xce\x42\x92\xba\xaa\x2a\xa4\xd7\ \xdf\x0f\x0a\x16\x54\x03\x4a\x54\x7b\x63\x4a\xbb\x9d\x77\x51\xb7\ \x6c\x95\x2a\xe0\x6b\xfe\x4b\x78\x64\x24\x15\xdb\xd4\x6f\xf4\x60\ \x57\xff\xd6\xfb\x3d\x51\xd7\x7f\x96\x78\x53\xd4\x2f\x24\x71\x24\ \x6c\x69\xd3\x01\xd9\x52\x8d\x6e\x4b\x8b\x7d\x1b\x51\xbb\xb3\xa1\ \xba\x86\x12\x6d\xc1\x1b\x06\x62\x00\x34\xf6\xad\x72\x32\x91\x11\ \x24\x26\x31\x12\x90\x05\xe2\xba\x66\x87\xe6\x68\xee\x06\xaa\x35\ \x3b\xc9\xae\x39\x09\x24\x32\x48\xc5\x18\x1e\xa2\x84\xd2\x9e\xd8\ \x80\x40\x07\xab\x74\xa2\x39\x3d\xe2\xd4\xb9\x86\x27\x91\x78\x34\ \x88\xae\xc9\xe0\x58\x54\x8c\xc8\xc9\xb5\x17\x16\x2a\xc6\x87\xae\ \xf4\x34\xca\xec\xb3\x52\x63\xc7\x7a\x6e\x7b\xe2\x16\xd4\x4c\xbd\ \x87\x5c\xb0\x06\x04\xb4\x26\x00\xd0\xb6\xfe\x03\x1e\x04\x71\xaf\ \xf5\x96\x94\xaf\xd1\x80\xc1\x22\x6a\xab\x29\x24\x50\x8e\xbb\xe4\ \x08\xa6\x56\xa6\x25\x23\x9a\x92\x79\x12\x29\x91\xa5\x7f\xff\xd7\ \xfb\x3b\xd0\x50\x1a\x0f\xc7\x3c\x2a\xde\xa1\x50\x50\xfb\xf5\xc4\ \xab\xa4\x55\x28\x41\x5e\x4a\xc0\x86\x53\xd0\x82\x28\x41\xc6\x04\ \x83\x61\x05\x0f\x6e\xf6\xd1\x47\xe9\xc3\x61\x46\xaf\xd9\x67\xe4\ \x83\xe8\xa5\x4f\xdf\x99\x7e\x2e\x21\xbf\x0e\xfe\xfd\xbf\x1f\x16\ \x24\x4c\xf5\x54\x53\x23\x33\x99\x00\x24\xb6\xd4\x1e\xd9\x8b\x93\ \x27\x19\xbe\xac\x80\xa6\x85\x6a\x46\xd5\x34\x60\xbd\xc7\xcf\x01\ \xe4\x94\x35\xc1\x22\x83\xb9\xe9\x92\xc7\xbb\x19\x30\x2f\x38\xf9\ \xc2\xc7\xca\x76\x42\x7b\xa0\xd3\x5c\x4b\x51\x6d\x6a\x86\x8d\x21\ \x1d\x6a\x7f\x65\x45\x7a\xe5\xb2\x98\x80\xf3\x63\x08\x19\x97\xcf\ \xf2\xfe\x73\xf9\xa6\xe6\xea\x96\x91\x43\x6b\x6b\x5f\x86\x31\x0f\ \x30\x07\xbb\x31\xa9\xca\x8c\xe6\x7a\xb7\x8c\x31\x0f\x52\xf2\x6f\ \xe6\x3c\xfa\xc4\xf1\x58\xea\xf0\xa4\x72\xcc\x42\xc5\x73\x10\x2a\ \x39\x1e\x81\x94\x93\x4a\xf8\x8c\x11\xcc\x41\xa9\x35\xcf\x10\xab\ \x0f\x64\x8d\x8a\xb0\x27\xa5\x77\x19\x74\xe3\xb3\x54\x64\x8d\xf4\ \x96\xb5\xed\x4e\x99\x8e\xdc\xff\x00\xff\xd0\xfb\x34\xca\xdb\x1e\ \xfd\xc6\x78\x43\xd4\xb6\x8c\x41\x5a\x91\xd6\xa7\x24\x82\xa8\x4f\ \x26\x00\x12\x40\xaf\xb0\xdb\x02\xaf\xf8\x54\x6f\x40\x72\x2a\xb4\ \x02\xcd\x55\x0d\x41\xd4\xf8\x7b\xe2\x02\x57\x15\xa7\x41\xd7\xae\ \x1e\x88\x43\xbc\x6d\x2b\x2d\x0d\x46\xe3\x6c\xb3\x19\x63\x37\xcb\ \xbf\x99\xb6\x37\x3a\x8f\x9a\x65\x88\x82\xd6\xd6\xa1\x62\x44\xeb\ \x40\x00\x3f\x89\x39\x8b\x92\x77\x37\x37\x0c\x00\xc6\x12\x4b\x1f\ \x2c\x8a\x46\x1a\x1d\x9b\x75\xf0\xcb\x2c\xc4\x30\x20\x5b\x21\x87\ \xcb\x32\x59\xdc\x45\x3c\x51\xb2\x0d\x89\xa7\x6a\x66\x2c\xf3\x71\ \x36\x08\x3e\x85\xd2\x7d\x5b\x8d\x2e\xd2\x69\x7f\xbd\x31\x81\x21\ \xf1\x23\xbe\x6c\x71\x4a\xf1\x82\x5d\x7c\xc5\x4a\x93\x7e\x27\xd3\ \xfa\x32\xbe\xad\x8f\xff\xd1\xfb\x39\x2d\x06\xfc\x4e\x78\x43\xd4\ \x30\x2f\x32\x6b\x5e\x65\xb0\xd4\xf4\xfb\x2d\x0b\x46\x8b\x51\x8a\ \x78\xda\x7b\xb9\xa6\x76\x50\x15\x5b\x8f\x08\xf8\xfe\xd6\xd5\xa9\ \xf6\xc6\x79\x04\x06\xec\xa3\x8c\xcb\xab\x3f\xb5\x76\x78\x91\x9d\ \x0a\x3d\x01\x74\x3d\x41\x22\xb4\x3e\xe3\x24\x46\xec\x02\xb9\x41\ \xb9\x1d\x70\x14\xb6\xa0\x70\x55\x0c\x76\xdf\x7f\xd7\x86\x90\xef\ \x87\xa7\x8f\x51\x80\xec\x97\x72\xe2\x00\x34\xc3\x19\x20\x87\x99\ \x79\xc3\xcb\x6b\x75\xa8\x26\xab\x14\x6c\xde\xb5\x04\xe5\x77\x2a\ \xe0\x01\x53\xec\x72\x59\xf4\xfc\x51\xe3\x8f\xc7\xcb\xf6\x16\xec\ \x19\xab\xd2\x51\x5a\x46\x86\x84\xa7\xab\x0e\xe2\x82\x94\xa8\xda\ \x9e\x1f\x2c\xc0\xe3\x32\x3c\x37\xbb\x71\xa1\xbb\x27\x6d\x01\xae\ \x5c\x45\x14\x7c\x98\xec\x06\xd4\x1f\x4f\x86\x43\x49\xa3\x9e\x4c\ \xfc\x11\xde\xcf\xf6\xb0\xc9\xa9\x88\x8d\x94\xcf\xd2\x8a\x08\xe2\ \xb4\x82\x8f\x1d\xba\x88\xc3\xff\x00\x37\x11\xc4\x9f\xa6\x99\xb8\ \xcd\xc1\x13\xc3\x0e\x43\x6f\x96\xdf\x6f\x37\x06\x16\x77\x3d\x55\ \x39\x1a\xd3\x8f\x4d\xa9\x98\xf6\xdd\x4f\xff\xd2\xfb\x3c\x69\xc8\ \xf5\x23\xbe\x78\x4e\xcf\x50\xd0\xe4\x5c\x7a\x5e\xa2\xb5\x0e\xc9\ \xe1\xf4\x54\xe4\xa3\x7d\x11\x2a\xea\xbd\x00\xe3\x50\x41\xf6\xc8\ \xa5\x78\xe7\xe1\x51\xf4\x62\x50\xb8\xd6\x83\xae\x05\x51\x25\xb9\ \x8a\x83\xf3\xed\x85\x2b\x8f\x2a\x0c\x21\x0e\x53\x74\x18\x9b\x55\ \xe4\xc3\xed\x03\x4e\x05\x7b\xf2\xe5\xb5\x3e\x79\x93\xa7\x39\x2f\ \xd1\xf1\xee\xf8\xf4\x61\x3e\x1a\xdd\x5e\xda\xea\xdc\x90\x65\xd3\ \x14\x4c\x2b\xc8\x24\xd4\x42\x7c\x77\xe4\x47\xdf\x95\x9c\xda\x7e\ \x2b\x9e\x3b\x3b\xdd\x48\x81\xfa\x7e\xc2\x89\x47\x2d\x7d\x5b\x7b\ \x95\x27\x9f\x50\x96\x29\xbe\xa9\x64\x96\xd6\xe1\x7f\x7d\xe9\xba\ \xbb\xf1\xef\x53\xca\xb4\xf1\xa0\xc9\xe3\x99\x9c\x25\xe1\x44\x46\ \x35\xbd\x6f\x2a\xeb\x77\xbf\xbe\x80\x0d\x62\x20\x11\xc4\x49\x3e\ \x69\x64\x03\xe2\x1c\x8f\xc5\xe1\x94\x1a\xa7\x21\x19\xf0\xd4\x65\ \x69\x7f\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x0c\x9d\x6c\x07\ \x00\x63\ \x00\x68\x00\x65\x00\x65\x00\x73\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/0000755000076500000240000000000012613140041022201 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/diagramscene.py0000755000076500000240000007472012613140041025212 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import (pyqtSignal, QLineF, QPointF, QRect, QRectF, QSize, QSizeF, Qt) from PyQt5.QtGui import (QBrush, QColor, QFont, QIcon, QIntValidator, QPainter, QPainterPath, QPen, QPixmap, QPolygonF) from PyQt5.QtWidgets import (QAction, QApplication, QButtonGroup, QComboBox, QFontComboBox, QGraphicsItem, QGraphicsLineItem, QGraphicsPolygonItem, QGraphicsScene, QGraphicsTextItem, QGraphicsView, QGridLayout, QHBoxLayout, QLabel, QMainWindow, QMenu, QMessageBox, QSizePolicy, QToolBox, QToolButton, QWidget) import diagramscene_rc class Arrow(QGraphicsLineItem): def __init__(self, startItem, endItem, parent=None, scene=None): super(Arrow, self).__init__(parent, scene) self.arrowHead = QPolygonF() self.myStartItem = startItem self.myEndItem = endItem self.setFlag(QGraphicsItem.ItemIsSelectable, True) self.myColor = Qt.black self.setPen(QPen(self.myColor, 2, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) def setColor(self, color): self.myColor = color def startItem(self): return self.myStartItem def endItem(self): return self.myEndItem def boundingRect(self): extra = (self.pen().width() + 20) / 2.0 p1 = self.line().p1() p2 = self.line().p2() return QRectF(p1, QSizeF(p2.x() - p1.x(), p2.y() - p1.y())).normalized().adjusted(-extra, -extra, extra, extra) def shape(self): path = super(Arrow, self).shape() path.addPolygon(self.arrowHead) return path def updatePosition(self): line = QLineF(self.mapFromItem(self.myStartItem, 0, 0), self.mapFromItem(self.myEndItem, 0, 0)) self.setLine(line) def paint(self, painter, option, widget=None): if (self.myStartItem.collidesWithItem(self.myEndItem)): return myStartItem = self.myStartItem myEndItem = self.myEndItem myColor = self.myColor myPen = self.pen() myPen.setColor(self.myColor) arrowSize = 20.0 painter.setPen(myPen) painter.setBrush(self.myColor) centerLine = QLineF(myStartItem.pos(), myEndItem.pos()) endPolygon = myEndItem.polygon() p1 = endPolygon.first() + myEndItem.pos() intersectPoint = QPointF() for i in endPolygon: p2 = i + myEndItem.pos() polyLine = QLineF(p1, p2) intersectType = polyLine.intersect(centerLine, intersectPoint) if intersectType == QLineF.BoundedIntersection: break p1 = p2 self.setLine(QLineF(intersectPoint, myStartItem.pos())) line = self.line() angle = math.acos(line.dx() / line.length()) if line.dy() >= 0: angle = (math.pi * 2.0) - angle arrowP1 = line.p1() + QPointF(math.sin(angle + math.pi / 3.0) * arrowSize, math.cos(angle + math.pi / 3) * arrowSize) arrowP2 = line.p1() + QPointF(math.sin(angle + math.pi - math.pi / 3.0) * arrowSize, math.cos(angle + math.pi - math.pi / 3.0) * arrowSize) self.arrowHead.clear() for point in [line.p1(), arrowP1, arrowP2]: self.arrowHead.append(point) painter.drawLine(line) painter.drawPolygon(self.arrowHead) if self.isSelected(): painter.setPen(QPen(myColor, 1, Qt.DashLine)) myLine = QLineF(line) myLine.translate(0, 4.0) painter.drawLine(myLine) myLine.translate(0,-8.0) painter.drawLine(myLine) class DiagramTextItem(QGraphicsTextItem): lostFocus = pyqtSignal(QGraphicsTextItem) selectedChange = pyqtSignal(QGraphicsItem) def __init__(self, parent=None, scene=None): super(DiagramTextItem, self).__init__(parent, scene) self.setFlag(QGraphicsItem.ItemIsMovable) self.setFlag(QGraphicsItem.ItemIsSelectable) def itemChange(self, change, value): if change == QGraphicsItem.ItemSelectedChange: self.selectedChange.emit(self) return value def focusOutEvent(self, event): self.setTextInteractionFlags(Qt.NoTextInteraction) self.lostFocus.emit(self) super(DiagramTextItem, self).focusOutEvent(event) def mouseDoubleClickEvent(self, event): if self.textInteractionFlags() == Qt.NoTextInteraction: self.setTextInteractionFlags(Qt.TextEditorInteraction) super(DiagramTextItem, self).mouseDoubleClickEvent(event) class DiagramItem(QGraphicsPolygonItem): Step, Conditional, StartEnd, Io = range(4) def __init__(self, diagramType, contextMenu, parent=None): super(DiagramItem, self).__init__(parent) self.arrows = [] self.diagramType = diagramType self.contextMenu = contextMenu path = QPainterPath() if self.diagramType == self.StartEnd: path.moveTo(200, 50) path.arcTo(150, 0, 50, 50, 0, 90) path.arcTo(50, 0, 50, 50, 90, 90) path.arcTo(50, 50, 50, 50, 180, 90) path.arcTo(150, 50, 50, 50, 270, 90) path.lineTo(200, 25) self.myPolygon = path.toFillPolygon() elif self.diagramType == self.Conditional: self.myPolygon = QPolygonF([ QPointF(-100, 0), QPointF(0, 100), QPointF(100, 0), QPointF(0, -100), QPointF(-100, 0)]) elif self.diagramType == self.Step: self.myPolygon = QPolygonF([ QPointF(-100, -100), QPointF(100, -100), QPointF(100, 100), QPointF(-100, 100), QPointF(-100, -100)]) else: self.myPolygon = QPolygonF([ QPointF(-120, -80), QPointF(-70, 80), QPointF(120, 80), QPointF(70, -80), QPointF(-120, -80)]) self.setPolygon(self.myPolygon) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setFlag(QGraphicsItem.ItemIsSelectable, True) def removeArrow(self, arrow): try: self.arrows.remove(arrow) except ValueError: pass def removeArrows(self): for arrow in self.arrows[:]: arrow.startItem().removeArrow(arrow) arrow.endItem().removeArrow(arrow) self.scene().removeItem(arrow) def addArrow(self, arrow): self.arrows.append(arrow) 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.myPolygon) return pixmap def contextMenuEvent(self, event): self.scene().clearSelection() self.setSelected(True) self.myContextMenu.exec_(event.screenPos()) def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionChange: for arrow in self.arrows: arrow.updatePosition() return value class DiagramScene(QGraphicsScene): InsertItem, InsertLine, InsertText, MoveItem = range(4) itemInserted = pyqtSignal(DiagramItem) textInserted = pyqtSignal(QGraphicsTextItem) itemSelected = pyqtSignal(QGraphicsItem) def __init__(self, itemMenu, parent=None): super(DiagramScene, self).__init__(parent) self.myItemMenu = itemMenu self.myMode = self.MoveItem self.myItemType = DiagramItem.Step self.line = None self.textItem = None self.myItemColor = Qt.white self.myTextColor = Qt.black self.myLineColor = Qt.black self.myFont = QFont() def setLineColor(self, color): self.myLineColor = color if self.isItemChange(Arrow): item = self.selectedItems()[0] item.setColor(self.myLineColor) self.update() def setTextColor(self, color): self.myTextColor = color if self.isItemChange(DiagramTextItem): item = self.selectedItems()[0] item.setDefaultTextColor(self.myTextColor) def setItemColor(self, color): self.myItemColor = color if self.isItemChange(DiagramItem): item = self.selectedItems()[0] item.setBrush(self.myItemColor) def setFont(self, font): self.myFont = font if self.isItemChange(DiagramTextItem): item = self.selectedItems()[0] item.setFont(self.myFont) def setMode(self, mode): self.myMode = mode def setItemType(self, type): self.myItemType = type def editorLostFocus(self, item): cursor = item.textCursor() cursor.clearSelection() item.setTextCursor(cursor) if item.toPlainText(): self.removeItem(item) item.deleteLater() def mousePressEvent(self, mouseEvent): if (mouseEvent.button() != Qt.LeftButton): return if self.myMode == self.InsertItem: item = DiagramItem(self.myItemType, self.myItemMenu) item.setBrush(self.myItemColor) self.addItem(item) item.setPos(mouseEvent.scenePos()) self.itemInserted.emit(item) elif self.myMode == self.InsertLine: self.line = QGraphicsLineItem(QLineF(mouseEvent.scenePos(), mouseEvent.scenePos())) self.line.setPen(QPen(self.myLineColor, 2)) self.addItem(self.line) elif self.myMode == self.InsertText: textItem = DiagramTextItem() textItem.setFont(self.myFont) textItem.setTextInteractionFlags(Qt.TextEditorInteraction) textItem.setZValue(1000.0) textItem.lostFocus.connect(self.editorLostFocus) textItem.selectedChange.connect(self.itemSelected) self.addItem(textItem) textItem.setDefaultTextColor(self.myTextColor) textItem.setPos(mouseEvent.scenePos()) self.textInserted.emit(textItem) super(DiagramScene, self).mousePressEvent(mouseEvent) def mouseMoveEvent(self, mouseEvent): if self.myMode == self.InsertLine and self.line: newLine = QLineF(self.line.line().p1(), mouseEvent.scenePos()) self.line.setLine(newLine) elif self.myMode == self.MoveItem: super(DiagramScene, self).mouseMoveEvent(mouseEvent) def mouseReleaseEvent(self, mouseEvent): if self.line and self.myMode == self.InsertLine: startItems = self.items(self.line.line().p1()) if len(startItems) and startItems[0] == self.line: startItems.pop(0) endItems = self.items(self.line.line().p2()) if len(endItems) and endItems[0] == self.line: endItems.pop(0) self.removeItem(self.line) self.line = None if len(startItems) and len(endItems) and \ isinstance(startItems[0], DiagramItem) and \ isinstance(endItems[0], DiagramItem) and \ startItems[0] != endItems[0]: startItem = startItems[0] endItem = endItems[0] arrow = Arrow(startItem, endItem) arrow.setColor(self.myLineColor) startItem.addArrow(arrow) endItem.addArrow(arrow) arrow.setZValue(-1000.0) self.addItem(arrow) arrow.updatePosition() self.line = None super(DiagramScene, self).mouseReleaseEvent(mouseEvent) def isItemChange(self, type): for item in self.selectedItems(): if isinstance(item, type): return True return False class MainWindow(QMainWindow): InsertTextButton = 10 def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.createToolBox() self.scene = DiagramScene(self.itemMenu) self.scene.setSceneRect(QRectF(0, 0, 5000, 5000)) self.scene.itemInserted.connect(self.itemInserted) self.scene.textInserted.connect(self.textInserted) self.scene.itemSelected.connect(self.itemSelected) self.createToolbars() layout = QHBoxLayout() layout.addWidget(self.toolBox) self.view = QGraphicsView(self.scene) layout.addWidget(self.view) self.widget = QWidget() self.widget.setLayout(layout) self.setCentralWidget(self.widget) self.setWindowTitle("Diagramscene") def backgroundButtonGroupClicked(self, button): buttons = self.backgroundButtonGroup.buttons() for myButton in buttons: if myButton != button: button.setChecked(False) text = button.text() if text == "Blue Grid": self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background1.png'))) elif text == "White Grid": self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background2.png'))) elif text == "Gray Grid": self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background3.png'))) else: self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background4.png'))) self.scene.update() self.view.update() def buttonGroupClicked(self, id): buttons = self.buttonGroup.buttons() for button in buttons: if self.buttonGroup.button(id) != button: button.setChecked(False) if id == self.InsertTextButton: self.scene.setMode(DiagramScene.InsertText) else: self.scene.setItemType(id) self.scene.setMode(DiagramScene.InsertItem) def deleteItem(self): for item in self.scene.selectedItems(): if isinstance(item, DiagramItem): item.removeArrows() self.scene.removeItem(item) def pointerGroupClicked(self, i): self.scene.setMode(self.pointerTypeGroup.checkedId()) def bringToFront(self): if not self.scene.selectedItems(): return selectedItem = self.scene.selectedItems()[0] overlapItems = selectedItem.collidingItems() zValue = 0 for item in overlapItems: if (item.zValue() >= zValue and isinstance(item, DiagramItem)): zValue = item.zValue() + 0.1 selectedItem.setZValue(zValue) def sendToBack(self): if not self.scene.selectedItems(): return selectedItem = self.scene.selectedItems()[0] overlapItems = selectedItem.collidingItems() zValue = 0 for item in overlapItems: if (item.zValue() <= zValue and isinstance(item, DiagramItem)): zValue = item.zValue() - 0.1 selectedItem.setZValue(zValue) def itemInserted(self, item): self.pointerTypeGroup.button(DiagramScene.MoveItem).setChecked(True) self.scene.setMode(self.pointerTypeGroup.checkedId()) self.buttonGroup.button(item.diagramType).setChecked(False) def textInserted(self, item): self.buttonGroup.button(self.InsertTextButton).setChecked(False) self.scene.setMode(self.pointerTypeGroup.checkedId()) def currentFontChanged(self, font): self.handleFontChange() def fontSizeChanged(self, font): self.handleFontChange() def sceneScaleChanged(self, scale): newScale = scale.left(scale.indexOf("%")).toDouble()[0] / 100.0 oldMatrix = self.view.matrix() self.view.resetMatrix() self.view.translate(oldMatrix.dx(), oldMatrix.dy()) self.view.scale(newScale, newScale) def textColorChanged(self): self.textAction = self.sender() self.fontColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/textpointer.png', QColor(self.textAction.data()))) self.textButtonTriggered() def itemColorChanged(self): self.fillAction = self.sender() self.fillColorToolButton.setIcon( self.createColorToolButtonIcon( ':/images/floodfill.png', QColor(self.fillAction.data()))) self.fillButtonTriggered() def lineColorChanged(self): self.lineAction = self.sender() self.lineColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/linecolor.png', QColor(self.lineAction.data()))) self.lineButtonTriggered() def textButtonTriggered(self): self.scene.setTextColor(QColor(self.textAction.data())) def fillButtonTriggered(self): self.scene.setItemColor(QColor(self.fillAction.data())) def lineButtonTriggered(self): self.scene.setLineColor(QColor(self.lineAction.data())) def handleFontChange(self): font = self.fontCombo.currentFont() font.setPointSize(self.fontSizeCombo.currentText().toInt()[0]) if self.boldAction.isChecked(): font.setWeight(QFont.Bold) else: font.setWeight(QFont.Normal) font.setItalic(self.italicAction.isChecked()) font.setUnderline(self.underlineAction.isChecked()) self.scene.setFont(font) def itemSelected(self, item): font = item.font() color = item.defaultTextColor() self.fontCombo.setCurrentFont(font) self.fontSizeCombo.setEditText(str(font.pointSize())) self.boldAction.setChecked(font.weight() == QFont.Bold) self.italicAction.setChecked(font.italic()) self.underlineAction.setChecked(font.underline()) def about(self): QMessageBox.about(self, "About Diagram Scene", "The Diagram Scene example shows use of the graphics framework.") def createToolBox(self): self.buttonGroup = QButtonGroup() self.buttonGroup.setExclusive(False) self.buttonGroup.buttonClicked[int].connect(self.buttonGroupClicked) layout = QGridLayout() layout.addWidget(self.createCellWidget("Conditional", DiagramItem.Conditional), 0, 0) layout.addWidget(self.createCellWidget("Process", DiagramItem.Step), 0, 1) layout.addWidget(self.createCellWidget("Input/Output", DiagramItem.Io), 1, 0) textButton = QToolButton() textButton.setCheckable(True) self.buttonGroup.addButton(textButton, self.InsertTextButton) textButton.setIcon(QIcon(QPixmap(':/images/textpointer.png').scaled(30, 30))) textButton.setIconSize(QSize(50, 50)) textLayout = QGridLayout() textLayout.addWidget(textButton, 0, 0, Qt.AlignHCenter) textLayout.addWidget(QLabel("Text"), 1, 0, Qt.AlignCenter) textWidget = QWidget() textWidget.setLayout(textLayout) layout.addWidget(textWidget, 1, 1) layout.setRowStretch(3, 10) layout.setColumnStretch(2, 10) itemWidget = QWidget() itemWidget.setLayout(layout) self.backgroundButtonGroup = QButtonGroup() self.backgroundButtonGroup.buttonClicked.connect(self.backgroundButtonGroupClicked) backgroundLayout = QGridLayout() backgroundLayout.addWidget(self.createBackgroundCellWidget("Blue Grid", ':/images/background1.png'), 0, 0) backgroundLayout.addWidget(self.createBackgroundCellWidget("White Grid", ':/images/background2.png'), 0, 1) backgroundLayout.addWidget(self.createBackgroundCellWidget("Gray Grid", ':/images/background3.png'), 1, 0) backgroundLayout.addWidget(self.createBackgroundCellWidget("No Grid", ':/images/background4.png'), 1, 1) backgroundLayout.setRowStretch(2, 10) backgroundLayout.setColumnStretch(2, 10) backgroundWidget = QWidget() backgroundWidget.setLayout(backgroundLayout) self.toolBox = QToolBox() self.toolBox.setSizePolicy(QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Ignored)) self.toolBox.setMinimumWidth(itemWidget.sizeHint().width()) self.toolBox.addItem(itemWidget, "Basic Flowchart Shapes") self.toolBox.addItem(backgroundWidget, "Backgrounds") def createActions(self): self.toFrontAction = QAction( QIcon(':/images/bringtofront.png'), "Bring to &Front", self, shortcut="Ctrl+F", statusTip="Bring item to front", triggered=self.bringToFront) self.sendBackAction = QAction( QIcon(':/images/sendtoback.png'), "Send to &Back", self, shortcut="Ctrl+B", statusTip="Send item to back", triggered=self.sendToBack) self.deleteAction = QAction(QIcon(':/images/delete.png'), "&Delete", self, shortcut="Delete", statusTip="Delete item from diagram", triggered=self.deleteItem) self.exitAction = QAction("E&xit", self, shortcut="Ctrl+X", statusTip="Quit Scenediagram example", triggered=self.close) self.boldAction = QAction(QIcon(':/images/bold.png'), "Bold", self, checkable=True, shortcut="Ctrl+B", triggered=self.handleFontChange) self.italicAction = QAction(QIcon(':/images/italic.png'), "Italic", self, checkable=True, shortcut="Ctrl+I", triggered=self.handleFontChange) self.underlineAction = QAction( QIcon(':/images/underline.png'), "Underline", self, checkable=True, shortcut="Ctrl+U", triggered=self.handleFontChange) self.aboutAction = QAction("A&bout", self, shortcut="Ctrl+B", triggered=self.about) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.exitAction) self.itemMenu = self.menuBar().addMenu("&Item") self.itemMenu.addAction(self.deleteAction) self.itemMenu.addSeparator() self.itemMenu.addAction(self.toFrontAction) self.itemMenu.addAction(self.sendBackAction) self.aboutMenu = self.menuBar().addMenu("&Help") self.aboutMenu.addAction(self.aboutAction) def createToolbars(self): self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.deleteAction) self.editToolBar.addAction(self.toFrontAction) self.editToolBar.addAction(self.sendBackAction) self.fontCombo = QFontComboBox() self.fontCombo.currentFontChanged.connect(self.currentFontChanged) self.fontSizeCombo = QComboBox() self.fontSizeCombo.setEditable(True) for i in range(8, 30, 2): self.fontSizeCombo.addItem(str(i)) validator = QIntValidator(2, 64, self) self.fontSizeCombo.setValidator(validator) self.fontSizeCombo.currentIndexChanged.connect(self.fontSizeChanged) self.fontColorToolButton = QToolButton() self.fontColorToolButton.setPopupMode(QToolButton.MenuButtonPopup) self.fontColorToolButton.setMenu( self.createColorMenu(self.textColorChanged, Qt.black)) self.textAction = self.fontColorToolButton.menu().defaultAction() self.fontColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/textpointer.png', Qt.black)) self.fontColorToolButton.setAutoFillBackground(True) self.fontColorToolButton.clicked.connect(self.textButtonTriggered) self.fillColorToolButton = QToolButton() self.fillColorToolButton.setPopupMode(QToolButton.MenuButtonPopup) self.fillColorToolButton.setMenu( self.createColorMenu(self.itemColorChanged, Qt.white)) self.fillAction = self.fillColorToolButton.menu().defaultAction() self.fillColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/floodfill.png', Qt.white)) self.fillColorToolButton.clicked.connect(self.fillButtonTriggered) self.lineColorToolButton = QToolButton() self.lineColorToolButton.setPopupMode(QToolButton.MenuButtonPopup) self.lineColorToolButton.setMenu( self.createColorMenu(self.lineColorChanged, Qt.black)) self.lineAction = self.lineColorToolButton.menu().defaultAction() self.lineColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/linecolor.png', Qt.black)) self.lineColorToolButton.clicked.connect(self.lineButtonTriggered) self.textToolBar = self.addToolBar("Font") self.textToolBar.addWidget(self.fontCombo) self.textToolBar.addWidget(self.fontSizeCombo) self.textToolBar.addAction(self.boldAction) self.textToolBar.addAction(self.italicAction) self.textToolBar.addAction(self.underlineAction) self.colorToolBar = self.addToolBar("Color") self.colorToolBar.addWidget(self.fontColorToolButton) self.colorToolBar.addWidget(self.fillColorToolButton) self.colorToolBar.addWidget(self.lineColorToolButton) pointerButton = QToolButton() pointerButton.setCheckable(True) pointerButton.setChecked(True) pointerButton.setIcon(QIcon(':/images/pointer.png')) linePointerButton = QToolButton() linePointerButton.setCheckable(True) linePointerButton.setIcon(QIcon(':/images/linepointer.png')) self.pointerTypeGroup = QButtonGroup() self.pointerTypeGroup.addButton(pointerButton, DiagramScene.MoveItem) self.pointerTypeGroup.addButton(linePointerButton, DiagramScene.InsertLine) self.pointerTypeGroup.buttonClicked[int].connect(self.pointerGroupClicked) self.sceneScaleCombo = QComboBox() self.sceneScaleCombo.addItems(["50%", "75%", "100%", "125%", "150%"]) self.sceneScaleCombo.setCurrentIndex(2) self.sceneScaleCombo.currentIndexChanged[str].connect(self.sceneScaleChanged) self.pointerToolbar = self.addToolBar("Pointer type") self.pointerToolbar.addWidget(pointerButton) self.pointerToolbar.addWidget(linePointerButton) self.pointerToolbar.addWidget(self.sceneScaleCombo) def createBackgroundCellWidget(self, text, image): button = QToolButton() button.setText(text) button.setIcon(QIcon(image)) button.setIconSize(QSize(50, 50)) button.setCheckable(True) self.backgroundButtonGroup.addButton(button) layout = QGridLayout() layout.addWidget(button, 0, 0, Qt.AlignHCenter) layout.addWidget(QLabel(text), 1, 0, Qt.AlignCenter) widget = QWidget() widget.setLayout(layout) return widget def createCellWidget(self, text, diagramType): item = DiagramItem(diagramType, self.itemMenu) icon = QIcon(item.image()) button = QToolButton() button.setIcon(icon) button.setIconSize(QSize(50, 50)) button.setCheckable(True) self.buttonGroup.addButton(button, diagramType) layout = QGridLayout() layout.addWidget(button, 0, 0, Qt.AlignHCenter) layout.addWidget(QLabel(text), 1, 0, Qt.AlignCenter) widget = QWidget() widget.setLayout(layout) return widget def createColorMenu(self, slot, defaultColor): colors = [Qt.black, Qt.white, Qt.red, Qt.blue, Qt.yellow] names = ["black", "white", "red", "blue", "yellow"] colorMenu = QMenu(self) for color, name in zip(colors, names): action = QAction(self.createColorIcon(color), name, self, triggered=slot) action.setData(QColor(color)) colorMenu.addAction(action) if color == defaultColor: colorMenu.setDefaultAction(action) return colorMenu def createColorToolButtonIcon(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() return QIcon(pixmap) def createColorIcon(self, color): pixmap = QPixmap(20, 20) painter = QPainter(pixmap) painter.setPen(Qt.NoPen) painter.fillRect(QRect(0, 0, 20, 20), color) painter.end() return QIcon(pixmap) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.setGeometry(100, 100, 800, 500) mainWindow.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/diagramscene.qrc0000644000076500000240000000120012613140041025323 0ustar philstaff00000000000000 images/pointer.png images/linepointer.png images/textpointer.png images/bold.png images/italic.png images/underline.png images/floodfill.png images/bringtofront.png images/delete.png images/sendtoback.png images/linecolor.png images/background1.png images/background2.png images/background3.png images/background4.png PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/diagramscene_rc.py0000644000076500000240000005115712613140041025672 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 5 04:57:31 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x01\x12\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0b\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x7f\xf5\x94\x3b\ \x00\x00\x00\xd9\x49\x44\x41\x54\x28\x53\x7d\x90\x31\x0e\x45\x40\ \x10\x86\x47\x24\x24\x1a\x0d\x0d\xd1\x22\x51\x70\x80\x6d\x5c\x40\ \xe7\x3c\x0e\x21\x0a\x47\x71\x19\xb5\x4e\xa9\xc1\x78\x33\xb2\x8b\ \xf7\xec\xdb\xe4\xcb\x66\x76\xfe\xf9\x67\x76\xc0\x30\x0c\x04\x80\ \x07\xf4\x66\x59\x16\x26\x49\x82\x9f\x03\xc4\xbe\xef\x94\x3b\x05\ \x69\x9a\x32\x24\x08\xc3\xf0\x51\x58\xd7\x35\x17\x01\x05\x04\x55\ \xde\x5d\xe8\x76\x1c\x87\x73\xb6\x6d\xe3\xc3\x59\x0a\xef\x44\x51\ \xc4\xe2\x20\x08\xf4\xce\xeb\xba\x62\xdb\xb6\x6a\x94\xbe\xef\x4f\ \xb1\x7c\x28\x8a\x82\xc9\xf3\x1c\x7d\xdf\x67\x03\x21\x04\x0e\xc3\ \xa0\x4c\x40\xb7\x0d\xd3\x34\x59\xdc\x75\xdd\x25\xfe\x9e\x79\xdb\ \x36\x9c\xa6\x89\x63\xd9\x21\x8e\x63\x1c\xc7\x11\xd5\xcc\x6f\x1f\ \x24\x64\xbe\xaa\xaa\xff\xdb\x58\x96\x45\x8d\x46\x5d\x5e\xb7\x41\ \xcc\xf3\x8c\x4d\xd3\xa0\xcc\x67\x59\x76\x39\x7b\x9e\xa7\x70\x5d\ \xf7\xe7\xd3\xda\x6d\x48\xa8\xa8\x2c\x4b\xd5\xf1\x00\xd0\xc0\x13\ \xc8\x06\xaf\x16\x28\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x00\xf7\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9\x47\x9e\ \x00\x00\x00\xbe\x49\x44\x41\x54\x28\x53\x85\x91\x31\x0e\x40\x40\ \x10\x45\x57\x4d\x24\x4a\x37\xa1\xa4\x91\x38\x85\x5e\x74\xaa\x3d\ \x8a\x4e\x54\x7b\x80\xad\x75\x6e\xa0\xd1\x6c\xe7\x12\xc4\x97\x19\ \xb1\x21\x59\x51\xfc\x62\xfe\xbc\xfc\x99\xcc\x08\x00\x82\x74\x1c\ \x07\xa6\x69\x82\x10\xc2\x29\xcf\xf3\x2e\xf0\xd6\x38\x8e\xa8\xaa\ \x8a\x55\x14\x05\x03\x49\x92\x58\xef\x05\x3f\xd5\x75\x1d\xc3\x5a\ \x6b\xd0\x54\xf2\x9c\x20\x35\xeb\xba\x66\x78\x5d\x57\xdc\xfe\x67\ \x72\x9a\xa6\x88\xe3\x18\x4f\xcf\x09\x6e\xdb\x06\xdf\xf7\x51\x96\ \xa5\x5d\xc1\x09\x53\x73\x9e\x67\x5e\x41\x4a\xf9\x9f\x3c\x0c\x03\ \xc3\x4a\xa9\xff\xe4\xb6\x6d\x19\x5e\x96\xe5\x3f\x39\xcf\x73\x84\ \x61\x88\x7d\xdf\xdf\xc9\x54\x18\x63\xec\xe1\x49\x41\x10\x20\x8a\ \x22\x5b\x37\x4d\x03\x9b\xdc\xf7\xfd\xf5\xce\x8f\x57\x67\x59\xc6\ \x13\x4e\xfa\x57\x56\x58\xe8\x40\xda\xc6\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x3e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\xf3\x49\x44\x41\x54\x38\xcb\xed\x94\x41\x6e\ \x83\x30\x10\x45\x9f\x25\xe0\x0c\xbd\x43\x2f\xd0\x13\xe5\xfa\x55\ \x62\x9b\xd8\x33\x01\x77\x81\x0d\x24\x85\xaa\x31\xca\xaa\x1d\x89\ \x8d\x0d\x4f\xef\x7b\x06\x37\x6d\xdb\x26\x0e\x94\xaa\x9a\xad\xf5\ \x06\x40\x44\xaa\xa0\x5d\xd7\xed\xee\x35\xbc\xa8\xfe\xc1\x7f\x01\ \x6c\x8c\xd9\xdb\x4a\x87\x8d\x53\xda\x60\x8c\x03\x0c\x01\xf4\x0a\ \xd2\x43\x74\x98\xb7\xf7\x83\x47\x31\x2a\x68\x81\x7a\x10\x07\xd1\ \x1d\x3c\xe3\x41\x26\xa0\xf6\x0b\x34\x38\x88\x97\x4a\x70\x1a\x61\ \x88\x4b\x74\xf5\x93\x65\xb4\xd3\x23\x35\xc6\x69\x80\x5b\x00\x29\ \xd1\x3d\xa8\x83\x60\x57\x60\x5f\x01\x96\x1c\x7d\xb6\x7c\x30\x95\ \x6a\x70\xfe\x70\x06\xba\x15\xd4\xe5\x14\x76\x01\xff\x74\xfd\xdd\ \x55\xb8\xe4\xce\xdb\x05\x5c\x26\x41\xfd\xb2\x06\x34\x7b\x17\xf5\ \xe6\x8f\x10\xce\xdf\xa1\xc5\x34\xe6\x89\xa8\x6a\x5e\xf8\x9c\x46\ \x6a\xb6\x74\x10\xb3\xa9\xac\x1a\xf8\x34\xf8\x7a\xce\xa6\x16\x62\ \x0f\x6a\xef\x1b\x58\x52\x54\x81\xa5\x98\x6e\x4c\x45\xf4\x70\xeb\ \x9f\x07\x9b\x8f\xd3\xaf\xdf\xfd\x02\xd6\xbd\xde\xdf\x70\xdb\x04\ \x83\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x72\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x06\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x55\xc2\ \xd3\x7e\x00\x00\x00\x27\x49\x44\x41\x54\x48\xc7\x63\x60\x80\x82\ \x06\x06\x34\x30\x2a\x30\x2a\x30\x2a\x30\x2a\x80\x2a\xf0\x1f\x15\ \xfc\x1b\x0d\xa0\x51\x81\x51\x81\x51\x01\x22\x05\x00\xd5\x3b\x4e\ \xf0\x73\xe3\x6f\xe9\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x02\xf1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2c\x08\x03\x00\x00\x00\x24\x44\xda\x74\ \x00\x00\x01\x32\x50\x4c\x54\x45\xff\xff\xff\xfe\xfe\xfe\x01\x01\ \x01\xbe\xbe\xbe\xfd\xfd\xfd\x00\x00\x00\x64\x64\x64\xd2\xd2\xd2\ \x7c\x7c\x7c\xfb\xfb\xfb\xe7\xe7\xe7\x84\x84\x84\xd7\xd7\xd7\xe0\ \xe0\xe0\xe1\xe1\xe1\x0c\x0c\x0c\x28\x28\x28\xf5\xf5\xf5\xb3\xb3\ \xb3\x02\x02\x02\x95\x95\x95\x2e\x2e\x2e\x11\x11\x11\x6b\x6b\x6b\ \x03\x03\x03\x72\x72\x72\x49\x49\x49\xfc\xfc\xfc\x13\x13\x13\x04\ \x04\x04\x9f\x9f\x9f\xc4\xc4\xc4\xa9\xa9\xa9\x05\x05\x05\x57\x57\ \x57\x17\x17\x17\xf6\xf6\xf6\x16\x16\x16\xa6\xa6\xa6\xa0\xa0\xa0\ \x60\x60\x60\x24\x24\x24\x3e\x3e\x3e\x23\x23\x23\xb7\xb7\xb7\x4d\ \x4d\x4d\xf8\xf8\xf8\xc0\xc0\xc0\x30\x30\x30\x09\x09\x09\xec\xec\ \xec\x20\x20\x20\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\xf4\x39\ \x39\x39\x2d\x2d\x2d\x3b\x3b\x3b\x12\x12\x12\x43\x43\x43\xc2\xc2\ \xc2\xa4\xa4\xa4\xdc\xdc\xdc\x55\x55\x55\x68\x68\x68\x5a\x5a\x5a\ \x50\x50\x50\xf0\xf0\xf0\x06\x06\x06\x1f\x1f\x1f\x74\x74\x74\xb1\ \xb1\xb1\x5d\x5d\x5d\x21\x21\x21\x36\x36\x36\x08\x08\x08\xea\xea\ \xea\xdb\xdb\xdb\x81\x81\x81\x9c\x9c\x9c\x8b\x8b\x8b\x75\x75\x75\ \xf2\xf2\xf2\x25\x25\x25\xce\xce\xce\x48\x48\x48\x63\x63\x63\xba\ \xba\xba\x53\x53\x53\x38\x38\x38\xf7\xf7\xf7\xe4\xe4\xe4\xa2\xa2\ \xa2\x4a\x4a\x4a\xf3\xf3\xf3\x5f\x5f\x5f\xf1\x69\x00\xec\x00\x00\ \x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\x00\x01\x6d\x49\ \x44\x41\x54\x78\x5e\xd5\x92\xc5\x76\xc3\x30\x10\x45\x3d\x92\x1d\ \x66\xe6\x94\x99\x99\x99\x99\x99\xe1\xff\x7f\xa1\x9e\x89\x93\x53\ \xa9\xb2\x4e\x76\x6d\xdf\xf2\xea\xfa\xbd\x59\xd8\xf8\x2b\xf1\x30\ \xeb\x5b\x58\xcc\x04\x37\x13\x3c\x96\x10\xc6\xb5\xad\x42\xda\x9a\ \x6f\x6d\x0d\x40\xb3\xad\x2c\xe8\xda\x1a\xe2\xb5\xf4\xd4\xdd\x71\ \xbf\xa1\x0d\x14\x7b\x1b\xed\x09\xd0\xbb\x03\x0d\x93\x0d\xea\x4d\ \xd8\x41\x2b\x33\x82\x6e\x2e\xac\x35\xc3\x39\xbb\x95\xe5\xbb\xa9\ \xdb\xa7\xbd\xc0\x47\xce\x64\x47\x27\x7e\x31\x3b\xa7\x71\x87\xda\ \xd1\x2c\x00\xf8\xe8\xda\x16\xcd\x7e\x17\x19\x09\xc3\x88\x94\xd1\ \x5d\xd5\xb4\xf6\xe1\x6e\xbf\xdf\x36\x36\xe9\x92\x90\xab\xeb\xa5\ \xf7\x09\xdb\x84\x61\xea\xcf\xbb\xee\x67\xd1\x1c\x1d\x43\x60\xa6\ \xd1\x5d\x89\xbb\x98\x53\xd3\xb8\xef\xa9\x81\x19\x5a\xa8\x80\xda\ \x4d\xd1\xeb\x3c\xbd\xc2\x42\x06\xbf\x5b\x54\x9b\xe6\x12\x9a\xcb\ \x4e\x0f\x1c\xd0\xb5\x77\xca\xfd\x35\x7a\x5b\xaf\x83\x8d\x24\xba\ \x5b\xca\x0b\xb6\x71\x5f\x0a\x8b\xee\x2a\xdc\xc0\x9e\xa5\x08\x4b\ \x29\xf6\x83\x96\x32\x69\xf3\x87\xe9\xdf\x67\x6a\xb7\x0a\xb2\x7b\ \xe8\x62\xb2\x23\xd9\x84\x02\xf2\x63\x2e\xe4\x04\xd9\xe9\x99\x64\ \x9e\x53\xc3\x85\x48\x2f\x69\xe9\x0a\x44\x7a\x6d\x53\x96\x8c\x08\ \x14\x6e\xa2\x48\x6f\x8b\x02\x8d\x97\xb0\xf5\x1e\xa4\xad\x07\xda\ \x7a\x14\x58\x45\xfd\xd7\x57\xe9\x82\x27\xa1\xe1\x19\x97\x4a\x2f\ \x72\xab\x19\x43\x5e\x7e\xad\x73\xce\xf9\x1b\x7d\xfd\xce\x31\x1f\ \xe0\x60\xcc\x27\xad\x65\x6d\x4c\xcc\x12\xc2\xbc\x4e\x23\x13\x39\ \x41\x89\x79\xc1\x50\x35\xfc\x7e\xeb\xff\xca\x17\x55\x71\x20\xbb\ \xd7\xbb\x2e\xca\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x01\x25\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\xda\x49\x44\x41\x54\x48\xc7\xed\x94\x41\x0e\ \x82\x30\x10\x45\x1f\x46\x38\x83\x77\xf0\xfe\x87\xf0\x1a\x5e\x40\ \xb1\xa5\x74\xa6\x1a\x5c\xb4\x04\x8c\xa2\x11\xca\xc2\xc4\x49\xd8\ \xd0\xe4\xe5\xf5\xf7\x67\x8a\xb2\x2c\x3b\x16\x4c\x08\xa1\x78\xf5\ \x7f\x0b\xa0\xaa\xb3\xa0\x55\x55\x4d\x9e\x6d\x58\x69\xfe\xe0\x1f\ \x06\x6f\x33\x30\xba\x55\xc0\xdd\xed\x0a\x37\x0f\xa1\x05\x75\x20\ \x96\x62\xb7\xcf\x60\x1c\x5c\x82\x36\xa0\x16\xc4\x66\x8a\x42\xed\ \x00\xf5\x16\xe4\x92\x09\x2c\x97\x68\x29\x26\x7e\x9a\xcb\xd8\xd7\ \xe0\xcd\x08\xdc\x64\x02\xbb\xf3\x60\xaa\x39\xc1\xed\x39\x41\xfb\ \xac\xcd\x00\x7e\xb7\xfe\x3e\x67\x5c\xc7\x8c\x43\x93\xe2\x48\x19\ \x4f\x2d\xea\x57\x95\xed\x8e\x87\x21\x4b\x49\x96\xbe\x8e\xa6\x92\ \x1a\x31\xeb\xf1\xfc\x29\x56\xaa\xef\x6b\xb0\x20\xc9\x54\x47\x0f\ \xf8\x35\xb8\x4d\xd7\x56\x03\xe2\x20\x98\xc7\xaa\xf5\xb7\x98\x05\ \xd6\xde\xd4\x3e\xf7\x57\x1a\xb8\x3a\x00\x8a\xa5\xcb\x66\x6a\xee\ \x91\x61\xa9\x66\xc0\x0f\xb5\x5d\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x00\x91\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2b\x01\x03\x00\x00\x00\x34\x51\x88\xbd\ \x00\x00\x00\x06\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x55\xc2\ \xd3\x7e\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\ \x00\x00\x39\x49\x44\x41\x54\x18\x57\x63\x60\xc0\x05\x14\x20\x54\ \x01\x84\xfa\x01\x26\x19\xff\x80\x29\x66\x08\x8f\xfd\x03\x98\xe2\ \x7f\x00\xa6\xe4\x0f\x80\x29\xfb\x06\x30\x55\x0f\xd1\xf6\x6f\x50\ \x6b\xe3\x87\x68\x63\x83\x50\x2c\x0c\x84\x00\x00\x91\xca\x1c\x09\ \xf6\x23\x2a\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x00\xad\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x18\x02\x03\x00\x00\x00\x58\x6b\x4f\xfa\ \x00\x00\x00\x09\x50\x4c\x54\x45\xff\xff\xff\xff\xff\xff\x00\x00\ \x00\x8e\xf4\xc3\xec\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\ \xd8\x66\x00\x00\x00\x52\x49\x44\x41\x54\x08\x1d\x05\xc1\xb1\x0d\ \xc2\x30\x14\x05\xc0\x8b\x04\x1b\xd0\x3c\x4f\xe3\x8a\x9a\xe6\x47\ \x72\x1f\x17\x61\x1a\x57\x9e\x80\x41\xb9\xf3\x82\x40\xeb\xc8\x42\ \x2e\x64\x20\x67\x27\xb5\x48\x5d\xa4\x06\xa9\xb3\x4b\xd5\x92\xfa\ \xfe\x64\xcc\x8f\xdc\x17\xd9\x83\xf6\x1e\xe4\xd8\xdd\xe3\xd8\x1d\ \x73\x61\x2e\xb4\x8e\x27\xf0\x07\xd5\x18\x11\x1b\xed\x4d\x23\xf4\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x70\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x06\x50\x4c\x54\x45\x00\xff\xff\xff\xff\xff\xb1\xb8\ \x5e\xa0\x00\x00\x00\x25\x49\x44\x41\x54\x78\x5e\xed\xcc\x21\x12\ \x00\x00\x04\x00\x41\xff\x7f\x34\x82\x11\x64\x75\x2f\x6e\xb8\xd8\ \x6a\xca\x0b\x00\x00\xf0\x9d\x01\x00\x40\x03\x94\x98\xeb\xc0\x19\ \x38\xa1\x84\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x60\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x03\x50\x4c\x54\x45\xff\xff\xff\xa7\xc4\x1b\xc8\x00\ \x00\x00\x18\x49\x44\x41\x54\x78\x5e\xed\xc0\x31\x01\x00\x00\x00\ \xc2\x20\xfb\xa7\x36\xc5\x3e\x58\x0b\x00\xe0\x08\x6f\x00\x01\x01\ \x3e\xc3\x31\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x1a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2b\x02\x03\x00\x00\x00\x73\xf1\xf2\x6d\ \x00\x00\x00\x0c\x50\x4c\x54\x45\xff\xff\xff\x80\x80\x80\x00\x00\ \x00\xff\xff\xff\x45\x4a\x4b\x38\x00\x00\x00\x01\x74\x52\x4e\x53\ \x00\x40\xe6\xd8\x66\x00\x00\x00\xbc\x49\x44\x41\x54\x78\x5e\x4d\ \xcb\xbd\x89\x04\x31\x0c\x86\x61\xa1\xd0\x55\x38\x1c\xdc\x8f\x26\ \xd8\x12\xa6\x0a\xb3\xe1\xe6\x4e\x2e\x32\x07\x02\xdb\x07\x5b\xc0\ \x96\xb4\x55\x9c\x47\x3f\x33\x56\xf4\x21\xde\x07\x42\xcd\xe0\x17\ \x46\xbd\xf6\xb6\xec\x1a\xef\xa6\x41\x02\x34\xb2\x41\x80\x60\x24\ \xcf\x9d\x9a\xee\x38\x8b\x7e\x78\x83\x4f\x7e\x64\xb3\x30\x68\x57\ \x10\x32\x74\x22\x05\x98\x91\x89\x0c\xe4\x50\x88\x0c\xd4\x44\xe4\ \x20\xce\xdc\xc1\x98\x89\x83\x33\x71\x20\x89\x02\xe4\x9d\x1d\x60\ \xa1\x2e\x40\xff\xe9\x02\xfd\xf1\x2a\x0e\xd2\xfe\x7b\x81\x50\xda\ \x02\x8e\xef\x02\x3e\x0b\x78\xb3\x6c\x01\x7f\x5d\x1a\x03\x66\x1d\ \x34\x00\x03\x42\x15\xb0\xe4\x0a\x24\x37\x50\x24\x57\xc0\x92\x2b\ \xe8\x92\x1b\x90\xdc\x80\xe4\x0a\x24\x37\xf0\x73\x6f\x1c\x70\x5f\ \x5b\x76\x3c\xc7\x3f\xd6\x51\x68\x20\x52\x85\xdb\x5f\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x8d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x1b\x00\x00\x00\x1b\x01\x03\x00\x00\x00\xb7\x1a\x66\x16\ \x00\x00\x00\x06\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x55\xc2\ \xd3\x7e\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\ \x00\x00\x35\x49\x44\x41\x54\x08\x99\x63\x60\xc0\x02\xd8\x1b\x80\ \x04\xff\x01\x4c\x82\xfd\x01\x48\xba\x00\x44\x58\x80\x08\x19\x10\ \xc1\x07\xd6\x02\x22\x98\x41\xfa\x18\x41\x0a\x19\xc0\x0a\xeb\x40\ \x84\x3d\x16\x42\x0e\xdd\x46\x00\xb5\x00\x09\x40\xa3\x31\xbf\x5e\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x3f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xd1\x49\x44\x41\x54\x38\xcb\x7d\ \x95\x4b\x68\x53\x41\x14\x86\x93\xe6\xd1\x08\x49\x28\x04\x5b\x17\ \x05\x35\xee\x5a\xbb\x50\xb2\xb1\xda\x85\x8f\x5d\xb5\xbe\x16\x76\ \x29\x2d\x42\x49\x57\xed\xce\x8d\x0a\xa2\xe0\xba\xab\x14\x84\x8a\ \x2b\x51\x44\x45\x17\x0a\x8a\x55\xf1\x01\x1a\xb0\x56\x23\xad\xa2\ \xc5\xb6\x92\x6a\x95\xbe\x34\xcd\xc3\xe3\x7f\x6e\xce\x64\xe6\x4e\ \xd2\x16\x3e\xe6\xde\xce\x3f\x7f\x66\xce\x63\xae\x87\x88\x3c\x26\ \xf8\xf3\x01\x7e\xa8\x07\x01\x50\x67\x6b\x0c\x6d\x9d\xa1\x0d\xf2\ \xda\xca\x9c\x21\xf2\x8a\x11\x51\x7f\x7f\x5e\x16\x6c\x04\x61\xe0\ \xaf\x61\xea\x77\xb4\x03\x03\x4a\xdb\x08\x22\xe2\xe1\x35\x85\x8e\ \xe9\xbf\xa1\x21\x2a\x75\x77\x53\xa1\x2c\x66\x36\x83\x28\xcf\x57\ \x69\x53\x29\x2a\xf5\xf4\x50\x29\x18\x54\xda\x38\x68\x70\xe6\xcd\ \xe3\x97\x60\x5a\xec\xed\xa5\x42\x4b\x0b\xe5\xf0\xfe\x5d\x9b\x6f\ \x55\xe6\xca\xb4\x34\x3c\x4c\xc5\x64\x92\x0a\x6d\x6d\xb4\x8c\xf7\ \x71\xad\x8d\x3b\x5a\x31\xa6\xd5\x64\x32\xbf\x8a\x9d\xe6\x5a\x5b\ \xe9\x2f\xde\xff\x80\x05\x30\xed\x5e\x10\xe3\xe7\x02\x4c\xa1\xaf\ \x68\x27\xc1\x65\x70\xd6\xe3\x29\x8a\xb6\x49\x19\x87\xf8\x1f\x4b\ \x60\x51\x46\xc5\x2f\xb7\x39\xe5\x61\x9a\x83\xe9\x0a\x4c\x97\xc4\ \x74\x04\x1c\xd7\x9a\x76\xd0\xac\x8c\x83\x12\x7c\xfa\x0c\xe6\xc4\ \xf0\xb7\x8c\xcc\x62\x22\x41\x2b\x83\x83\xb4\xdc\xd7\x47\x0b\x30\ \xe5\xb9\x8c\xec\xf4\x98\x36\xed\x02\x3b\x1c\x2f\x23\xc6\x61\x49\ \x14\x7d\x04\x33\x20\x2b\x3f\xc2\xfc\x88\xc5\x68\x1e\xf1\xfc\x19\ \x8f\x3b\xef\xef\x40\x0a\x1c\xd1\xa6\xd8\xb4\x67\x97\x78\x84\xed\ \xf2\x89\x4a\xa2\x1c\x73\x0e\xc1\x6c\x0d\xde\x8b\xe9\x61\xb7\x69\ \xbb\x91\x64\xbf\x5d\x9b\x01\x99\xe0\x44\xd1\x0c\x8e\xff\x0d\x3b\ \x9d\xc2\xb3\xc9\x4b\x70\x41\x9b\x9e\x00\x1d\x95\x6a\x90\xb2\xac\ \xd5\x4d\x01\x95\xfd\x2c\x62\xfa\x15\xc7\xff\x84\x67\x13\x0e\xc3\ \x4d\x6d\xdc\x09\xb6\xcb\x9a\x40\x55\xe7\xd9\xc5\x3f\x8f\xec\x4f\ \x23\x51\x13\x88\x69\x46\x12\xa5\xf8\x00\xd2\xe0\x89\x36\x5f\xdf\ \x58\x99\xce\xc1\x74\x0a\x25\x95\x41\xf6\xc7\xc4\xe0\x01\x78\x05\ \xde\x82\x31\x19\xdf\x80\x51\xbb\x31\xec\x50\xa8\xde\xcf\xc2\xf4\ \x0b\x4c\xc7\x61\xca\xbb\xba\x0f\x2e\x81\xd3\xe0\x2a\x78\x2e\x86\ \x69\x19\xf9\xc7\x1e\x55\x77\xa8\xdf\xd5\xd2\xb3\xe8\xfd\x49\x98\ \xa6\x61\xca\x09\xba\x0b\xce\x83\x03\x46\x83\xdc\x03\xcf\xc0\x0b\ \x49\x22\x8f\x8f\xc1\x35\xf7\xdd\x12\xae\xb4\xf4\x04\x6e\xa9\x0c\ \x2e\x94\xd7\x48\x16\x2f\xbc\x0d\xce\x81\xfd\xee\xec\x77\x2a\x73\ \x36\x7b\x2a\x3f\x72\x4b\x36\x90\xd4\x2d\xdd\xe8\x6a\xe9\xd1\x50\ \x88\x1e\x62\xbc\x0e\xce\x80\x7d\xee\x3a\xed\x90\x24\x31\x74\x47\ \xc2\x74\x03\x5c\x04\x87\xb4\x76\xb7\xdd\xd2\x4d\x3c\x71\x45\xe2\ \xb9\xb7\xba\xf8\xd5\x25\x14\x53\x75\x3e\x52\xbe\x78\xe8\xa0\xd6\ \x1e\x05\x09\xf3\x12\xf2\x49\xd0\xb7\xb1\xe0\xa4\x3e\x52\x97\xb4\ \xa9\x7d\x6d\x56\x3a\xf4\x94\xd6\xb2\xe9\x1e\xf1\x88\xda\xa5\xd6\ \xa0\xcc\xe5\x48\x3b\xc1\x96\x35\x2e\xfa\xa8\xcc\x29\x6d\x42\xd6\ \xea\x8b\xde\xfa\x34\xf1\x82\x4d\x4e\x9c\xca\xe1\x89\xac\xf3\x69\ \x8a\x88\xa6\x59\xd6\xa8\x53\x79\x6b\x75\x9e\x4f\x3e\x8e\x1b\xec\ \x0f\xe4\x1a\xda\xa0\x68\xeb\x4d\xed\x7f\x3d\xa9\x97\x96\x02\xf1\ \x2b\x1c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xfa\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9\x47\x9e\ \x00\x00\x00\xc1\x49\x44\x41\x54\x28\x53\xcd\x90\x31\x0a\x84\x30\ \x10\x45\xc7\xce\x56\xb0\xd3\x46\x10\x6f\x60\xe5\x01\xbc\x42\x40\ \x0b\x9b\x74\x22\x11\xbc\x94\x9d\x27\xd2\x03\x78\x03\x03\x19\xf7\ \x0f\xb8\xd9\x2c\x6c\xbf\x81\x4f\x66\xde\xfc\x7c\xc8\x50\x1c\xc7\ \x4c\x44\xa2\x28\x8a\x38\xcf\x73\x7e\x1d\xc2\xfd\xc9\xd3\x34\x65\ \xd2\x5a\x73\x51\x14\x02\x86\x61\xe0\x79\x9e\xc5\x8c\x1b\x3d\x38\ \xe6\xe3\x38\x32\x61\xa0\x94\x12\x88\xfa\x5b\xe0\x98\x3b\xe7\x42\ \x33\xc0\x2f\x33\xea\x7f\x4a\xee\xba\x4e\xcc\xd7\x75\x05\x0f\xd0\ \x83\xf7\x7d\xef\x93\xb1\x26\xc0\x7d\xdf\x03\xf3\x71\x1c\xc2\x97\ \x65\xf1\xc9\xeb\xba\x0a\x9c\xa6\x29\x30\x3f\x21\xdb\xb6\xf9\x64\ \xa8\xae\x6b\x19\x94\x65\xc9\x6d\xdb\x72\x55\x55\xd2\x37\x4d\xc3\ \xd6\x5a\x9f\xfc\xc8\x18\xc3\x59\x96\x89\x29\x49\x12\xc6\x5f\xce\ \xf3\x7c\x6f\xe9\x06\x33\x20\x38\xcd\x08\x1e\x78\x76\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x74\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x06\x50\x4c\x54\x45\xc0\xc0\xc0\xff\xff\xff\x2b\x69\ \x87\xb4\x00\x00\x00\x29\x49\x44\x41\x54\x48\x4b\x63\xf8\x0f\x05\ \x0d\x0c\x50\x30\x2a\x30\x2a\x30\x2a\x30\x2a\x40\xa4\x00\x0c\xd8\ \x43\xc4\xff\x8d\x0a\x8c\x0a\x8c\x0a\x8c\x0a\x60\x17\x00\x00\x3f\ \x78\xe4\xb7\xe3\x90\x30\x5f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x06\x27\x5a\x67\ \x00\x62\ \x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x02\xfc\x42\x47\ \x00\x69\ \x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x0f\x0d\x22\x27\ \x00\x73\ \x00\x65\x00\x6e\x00\x64\x00\x74\x00\x6f\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x49\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x05\xaa\x0c\xc7\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x70\x00\x6f\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x0f\x9b\x88\x67\ \x00\x62\ \x00\x72\x00\x69\x00\x6e\x00\x67\x00\x74\x00\x6f\x00\x66\x00\x72\x00\x6f\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x05\x6c\x22\xc7\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x63\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0a\x2b\x97\xe7\ \x00\x70\ \x00\x6f\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x50\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x31\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x4b\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x34\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x06\x43\xe3\x67\ \x00\x66\ \x00\x6c\x00\x6f\x00\x6f\x00\x64\x00\x66\x00\x69\x00\x6c\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x03\x4a\x23\xe7\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x70\x00\x6f\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0c\xad\x0f\x07\ \x00\x64\ \x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x08\xd5\xc4\xe7\ \x00\x75\ \x00\x6e\x00\x64\x00\x65\x00\x72\x00\x6c\x00\x69\x00\x6e\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x4a\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x33\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x02\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x03\x53\ \x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xf5\ \x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x09\xa1\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x09\x2d\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x01\x16\ \x00\x00\x01\x76\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x23\ \x00\x00\x00\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xe7\ \x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\x03\xc9\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x05\ \x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xf7\ \x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x08\x7c\ \x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xb4\ \x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x02\x11\ \x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x00\x06\xbe\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/0000755000076500000240000000000012613140041023446 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/background1.png0000644000076500000240000000016012613140041026351 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÿÿÿÿÿ±¸^ %IDATx^íÌ!Aÿ4‚du/n¸ØjÊ ð@”˜ëÀ8¡„IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/background2.png0000644000076500000240000000016212613140041026354 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÿÿÿUÂÓ~'IDATHÇc`€‚40*0*0*0*€*ðü  QQQ"Õ;NðsãoéIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/background3.png0000644000076500000240000000016412613140041026357 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÀÀÀÿÿÿ+i‡´)IDATHKcø P0*0*0*0*@¤ ØCÄÿ Œ Œ Œ `?xä·ã0_IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/background4.png0000644000076500000240000000014012613140041026352 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÿÿÿ§ÄÈIDATx^íÀ1 û§6Å>X ào>Ã1IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/bold.png0000644000076500000240000000042212613140041025072 0ustar philstaff00000000000000‰PNG  IHDR õ”;ÙIDAT(S}1E@†G$$ Ñ"Qp€m\@ç<! GqµN©Áx3²‹÷ìÛäËfvþùgvÀ0 €ôfY&I‚Ÿľï”;iš2$ÃðQX×5UÞ]èv‡s¶mãÃY ïDQÄâ ôÎëºbÛ¶j”¾ïO±|(Š‚Éó}ßg!àL@· Ó4YÜuÝ%þžyÛ6œ¦‰cÙ!ŽcÇÕÌo$d¾ªªÿÛX–EF]^·AÌóŒMÓ ÌgYv9{ž§p]÷çÓÚmH¨¨,KÕñÐÀȯ(IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/bringtofront.png0000644000076500000240000000044512613140041026674 0ustar philstaff00000000000000‰PNG  IHDRÄ´l;bKGDÿÿÿ ½§“ÚIDATHÇí”A‚0EF8ƒwðþ‡ð^@±¥t¦\´Œ¢ÊÂÄIØÐäåõ÷gв,;L¡xõ  ª³ UUMžmXiþào30ºUÀÝí 7¡u –b·Ï`\‚6 ÄfŠBíõä’ ,—h)&~šËØ×àÍÜd»ó`ª9Áí9Aû¬Í~·þ>g\ÇŒC“âHO-êW•펇!KI–¾Ž¦’1ëñü)Vªïk° ÉTGø5¸M×V⠘Ǫõ·˜ÖÞÔ>÷W¸:Š¥Ëfjî‘a©fÀµ]IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/delete.png0000644000076500000240000000147712613140041025427 0ustar philstaff00000000000000‰PNG  IHDRÄ´l;gAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÑIDAT8Ë}•KhSA†“æÑI([5îZ»P²±Ú…]µ¾v)-BIWíÎ ¢àº«„Š+QDE ŠUñ°V#­¢Å¶’j•¾4ÍÃãnÎdæNÒ>æÞÎ?fÎc®‡ˆ<&øó~¨Pgk m¡ òÚÊœ!òŠQ^laà¯aêw´JÛ"âá5…Žé¿¡!*uwS¡,f6ƒ(ÏWiS)*õôP)TÚ8hpæÍã—`Zìí¥BK åðþ]›oUæÊ´4R¾xè Ö óòIз±à¤>R—´©}mV:ô”Ö²éñˆÚ¥Ö ÌåH;Á–5.ú¨Ì)mBÖê‹Þú4ñ‚MNœÊቬóiŠˆ¦YÖ¨SykužO>ŽìäÚ hëMí=©—–ñ+IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/floodfill.png0000644000076500000240000000043212613140041026125 0ustar philstaff00000000000000‰PNG  IHDR*+sñòm PLTEÿÿÿ€€€ÿÿÿEJK8tRNS@æØf¼IDATx^M˽‰1 †a¡ÐU8Ü&ئ ³áæN.2Û[À–´UœG?3Vô!ÞBÍàF½ö¶ìï¦A4²A€`$Ïšî8‹~xƒO~d³0hW2t"˜‘‰ äPˆ ÔDä ÎÜÁ˜‰ƒ3q ‰ä`¡.@ÿéýñ*Òþ{PÚŽï> x³l]f4B°ä $7P$WÀ’+è’Ü€ä $7ðsop_[v<Ç?ÖQh R…Û_IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/italic.png0000644000076500000240000000036712613140041025427 0ustar philstaff00000000000000‰PNG  IHDR ´©Gž¾IDAT(S…‘1@@EWM$J7¡¤‘8…^tª=ŠNT{€­un ÑlçÄ—±!YQübþ¼ü™Ì‚t¦i‚Â)Ïó.ðÖ8ލªŠUI’Xï?ÕuÃZkÐTòœ 5ëºfx]WÜþgrš¦ˆãOÏ nÛß÷Q–¥]Á Ssžg^AJùŸ< ÃJ©ÿä¶m^–å?9Ïs„aˆ}ßßÉTcìáIA Š"[7M›Ü÷ýõÎWgYÆNúWVXè@ÚÆIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/linecolor.png0000644000076500000240000000022112613140041026135 0ustar philstaff00000000000000‰PNG  IHDR*+4Qˆ½PLTEÿÿÿUÂÓ~tRNS@æØf9IDATWc`À T„ú&ÿ€)fý˜â¦ä€)û0UÑöoPkã‡hcƒP, „‘Ê ö#*þIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/linepointer.png0000644000076500000240000000021512613140041026502 0ustar philstaff00000000000000‰PNG  IHDR·fPLTEÿÿÿUÂÓ~tRNS@æØf5IDAT™c`ÀØ€ÿL‚ýHºDX€ÁÖ"˜AúA À ë@„=BÝFµ @£1¿^IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/pointer.png0000644000076500000240000000025512613140041025636 0ustar philstaff00000000000000‰PNG  IHDRXkOú PLTEÿÿÿÿÿÿŽôÃìtRNS@æØfRIDATÁ± Â0À‹Ð>>###···MMMøøøÀÀÀ000 ììì ŠŠŠÚÚÚñññ ™™™ùùùÍÍÍôôô999---;;;CCC¤¤¤ÜÜÜUUUhhhZZZPPPðððttt±±±]]]!!!666êêêÛÛÛœœœ‹‹‹uuuòòò%%%ÎÎÎHHHcccºººSSS888÷÷÷ää䢢¢JJJóóó___ñiìtRNS@æØfmIDATx^Õ’ÅvÃ0E=’fæ”™™™™™áÿ¡ž‰“S©²Nvmßòêú½YØø+ñ0ë[XÌ7<–Ƶ­BÚšom @³­,èÚâµôÔÝq¿¡ {í л “ êMØA+3‚n.¬5Ã9»•廩ۧ½ÀGÎdG'~1;§q‡ÚÑ,øèÚÍ~ È”Ñ]Õ´öán¿ß66é’«ë¥÷ Û„aêÏ»îgÑC`¦Ñ]‰»˜SÓ¸ï©Z¨€ÚMÑë<½ÂB¿[T›æšËNеwÊý5z[¯ƒ$º[Ê ¶q_ ‹î*ÜÀž¥K)öƒ–2ió‡éßgj· ²{èb²#Ù„òc.äÙé™džSÃ…H/ié DzmS–Œn¢Ho‹—°õ¤­ÚzXEý×Wé‚'¡á—J/r«C^~­sÎù}ýÎ1à`Ì'­emL̼N#9A‰yÁP5ü~ëÿÊUq »×».ÊIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/diagramscene/images/underline.png0000644000076500000240000000037212613140041026143 0ustar philstaff00000000000000‰PNG  IHDR ´©GžÁIDAT(SÍ1 „0EÇÎV°ÓFo`å¼B@ ›t"¼”'Òx÷¸Ù,l¿OfÞü|ÈPÇLD¢(Š8Ïs~ÂýÉÓ4eÒZsQ†aàyžÅŒ=8æã82a ”ˆú[à˜;çB3À/3êJîºNÌ×uЃ÷}&À}ßóq—eñÉëº œ¦)0?!Û¶ùd¨®k”eÉmÛrUUÒ7MÃÖZŸüÈÃY–‰)IÆ_Îó|oé3 8ÍxvIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/dragdroprobot/0000755000076500000240000000000012613140041022427 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/dragdroprobot/dragdroprobot.py0000755000076500000240000002610712613140041025662 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QEasingCurve, QFileInfo, QLineF, QMimeData, QParallelAnimationGroup, QPoint, QPointF, QPropertyAnimation, qrand, QRectF, qsrand, Qt, QTime) from PyQt5.QtGui import (QBrush, QColor, QDrag, QImage, QPainter, QPen, QPixmap, QTransform) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsObject, QGraphicsScene, QGraphicsView) class ColorItem(QGraphicsItem): n = 0 def __init__(self): super(ColorItem, self).__init__() self.color = QColor(qrand() % 256, qrand() % 256, qrand() % 256) self.setToolTip( "QColor(%d, %d, %d)\nClick and drag this color onto the robot!" % (self.color.red(), self.color.green(), self.color.blue()) ) self.setCursor(Qt.OpenHandCursor) self.setAcceptedMouseButtons(Qt.LeftButton) def boundingRect(self): return QRectF(-15.5, -15.5, 34, 34) def paint(self, painter, option, widget): painter.setPen(Qt.NoPen) painter.setBrush(Qt.darkGray) painter.drawEllipse(-12, -12, 30, 30) painter.setPen(QPen(Qt.black, 1)) painter.setBrush(QBrush(self.color)) painter.drawEllipse(-15, -15, 30, 30) def mousePressEvent(self, event): self.setCursor(Qt.ClosedHandCursor) def mouseMoveEvent(self, event): if QLineF(QPointF(event.screenPos()), QPointF(event.buttonDownScreenPos(Qt.LeftButton))).length() < QApplication.startDragDistance(): return drag = QDrag(event.widget()) mime = QMimeData() drag.setMimeData(mime) ColorItem.n += 1 if ColorItem.n > 2 and qrand() % 3 == 0: root = QFileInfo(__file__).absolutePath() image = QImage(root + '/images/head.png') mime.setImageData(image) drag.setPixmap(QPixmap.fromImage(image).scaled(30,40)) drag.setHotSpot(QPoint(15, 30)) else: mime.setColorData(self.color) mime.setText("#%02x%02x%02x" % (self.color.red(), self.color.green(), self.color.blue())) 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() pixmap.setMask(pixmap.createHeuristicMask()) drag.setPixmap(pixmap) drag.setHotSpot(QPoint(15, 20)) drag.exec_() self.setCursor(Qt.OpenHandCursor) def mouseReleaseEvent(self, event): self.setCursor(Qt.OpenHandCursor) class RobotPart(QGraphicsObject): def __init__(self, parent=None): super(RobotPart, self).__init__(parent) self.color = QColor(Qt.lightGray) self.dragOver = False self.setAcceptDrops(True) def dragEnterEvent(self, event): if event.mimeData().hasColor(): event.setAccepted(True) self.dragOver = True self.update() else: event.setAccepted(False) def dragLeaveEvent(self, event): self.dragOver = False self.update() def dropEvent(self, event): self.dragOver = False if event.mimeData().hasColor(): self.color = QColor(event.mimeData().colorData()) self.update() class RobotHead(RobotPart): def __init__(self, parent=None): super(RobotHead, self).__init__(parent) self.pixmap = QPixmap() def boundingRect(self): return QRectF(-15, -50, 30, 50) def paint(self, painter, option, widget=None): if self.pixmap.isNull(): painter.setBrush(self.color.lighter(130) if self.dragOver else self.color) painter.drawRoundedRect(-10, -30, 20, 30, 25, 25, Qt.RelativeSize) painter.setBrush(Qt.white) painter.drawEllipse(-7, -3 - 20, 7, 7) painter.drawEllipse(0, -3 - 20, 7, 7) painter.setBrush(Qt.black) painter.drawEllipse(-5, -1 - 20, 2, 2) painter.drawEllipse(2, -1 - 20, 2, 2) painter.setPen(QPen(Qt.black, 2)) painter.setBrush(Qt.NoBrush) painter.drawArc(-6, -2 - 20, 12, 15, 190 * 16, 160 * 16) else: painter.scale(.2272, .2824) painter.drawPixmap(QPointF(-15*4.4, -50*3.54), self.pixmap) def dragEnterEvent(self, event): if event.mimeData().hasImage(): event.setAccepted(True) self.dragOver = True self.update() else: super(RobotHead, self).dragEnterEvent(event) def dropEvent(self, event): if event.mimeData().hasImage(): self.dragOver = False self.pixmap = QPixmap(event.mimeData().imageData()) self.update() else: super(RobotHead, self).dropEvent(event) class RobotTorso(RobotPart): def boundingRect(self): return QRectF(-30, -20, 60, 60) def paint(self, painter, option, widget=None): painter.setBrush(self.color.lighter(130) if self.dragOver else self.color) painter.drawRoundedRect(-20, -20, 40, 60, 25, 25, Qt.RelativeSize) painter.drawEllipse(-25, -20, 20, 20) painter.drawEllipse(5, -20, 20, 20) painter.drawEllipse(-20, 22, 20, 20) painter.drawEllipse(0, 22, 20, 20) class RobotLimb(RobotPart): def boundingRect(self): return QRectF(-5, -5, 40, 10) def paint(self, painter, option, widget=None): painter.setBrush(self.color.lighter(130) if self.dragOver else self.color) painter.drawRoundedRect(self.boundingRect(), 50, 50, Qt.RelativeSize) painter.drawEllipse(-5, -5, 10, 10) class Robot(RobotPart): def __init__(self): super(Robot, self).__init__() self.setFlag(self.ItemHasNoContents) self.torsoItem = RobotTorso(self) self.headItem = RobotHead(self.torsoItem) self.upperLeftArmItem = RobotLimb(self.torsoItem) self.lowerLeftArmItem = RobotLimb(self.upperLeftArmItem) self.upperRightArmItem = RobotLimb(self.torsoItem) self.lowerRightArmItem = RobotLimb(self.upperRightArmItem) self.upperRightLegItem = RobotLimb(self.torsoItem) self.lowerRightLegItem = RobotLimb(self.upperRightLegItem) self.upperLeftLegItem = RobotLimb(self.torsoItem) self.lowerLeftLegItem = RobotLimb(self.upperLeftLegItem) settings = ( # Item Position Rotation Scale # x y start end (self.headItem, 0, -18, 20, -20, 1.1), (self.upperLeftArmItem, -15, -10, 190, 180, 0), (self.lowerLeftArmItem, 30, 0, 50, 10, 0), (self.upperRightArmItem, 15, -10, 300, 310, 0), (self.lowerRightArmItem, 30, 0, 0, -70, 0), (self.upperRightLegItem, 10, 32, 40, 120, 0), (self.lowerRightLegItem, 30, 0, 10, 50, 0), (self.upperLeftLegItem, -10, 32, 150, 80, 0), (self.lowerLeftLegItem, 30, 0, 70, 10, 0), (self.torsoItem, 0, 0, 5, -20, 0), ) animation = QParallelAnimationGroup(self) for item, pos_x, pos_y, start_rot, end_rot, scale in settings: item.setPos(pos_x, pos_y) rot_animation = QPropertyAnimation(item, b'rotation') rot_animation.setStartValue(start_rot) rot_animation.setEndValue(end_rot) rot_animation.setEasingCurve(QEasingCurve.SineCurve) rot_animation.setDuration(2000) animation.addAnimation(rot_animation) if scale > 0: scale_animation = QPropertyAnimation(item, b'scale') scale_animation.setEndValue(scale) scale_animation.setEasingCurve(QEasingCurve.SineCurve) scale_animation.setDuration(2000) animation.addAnimation(scale_animation) animation.setLoopCount(-1) animation.start() def boundingRect(self): return QRectF() def paint(self, painter, option, widget=None): pass class GraphicsView(QGraphicsView): def resizeEvent(self, e): pass if __name__== '__main__': import sys import math app = QApplication(sys.argv) qsrand(QTime(0, 0, 0).secsTo(QTime.currentTime())) scene = QGraphicsScene(-200, -200, 400, 400) for i in range(10): item = ColorItem() angle = i*6.28 / 10.0 item.setPos(math.sin(angle)*150, math.cos(angle)*150) scene.addItem(item) robot = Robot() robot.setTransform(QTransform.fromScale(1.2, 1.2), True) robot.setPos(0, -20) scene.addItem(robot) view = GraphicsView(scene) view.setRenderHint(QPainter.Antialiasing) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.setBackgroundBrush(QColor(230, 200, 167)) view.setWindowTitle("Drag and Drop Robot") view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/graphicsview/dragdroprobot/images/0000755000076500000240000000000012613140041023674 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/dragdroprobot/images/head.png0000644000076500000240000003517412613140041025315 0ustar philstaff00000000000000‰PNG  IHDR„±¯úÝ2 pHYs  šœtIMEÖ 1ǬbïtEXtCommentCreated with The GIMPïd%nbKGDÿ‡Ì¿9äIDATxÚÕ½Ù²]ǵžùeælW»÷6ö$¨ÆuŽaYòEÕE]TÑዺ&zêÈGAz1ê®®|ŽãÔ)GXMQ‰nw«}¦/rÌ\s-l I… ’v·Ö˜™£ùÇ?þ¡Vü¸¿Üà÷*ü,J~?üSKÄ*ÚÛßrý&þ›ü¦¡ÃÞîÅhÀá¾›Ú3ùÿÔ†ð/ÛÉ[wh–NŒÒ|zñIAMʘˆ’5[  KBNR&ä*ó)ù êà'½¼!"þf¿ú °h:Ê·¿­±T”lQ¤(6\²$&§âŠ ´hbræ»9¹Êä­*9ßï×ßÐjp„- ÕÝò«K.¨èhØrÌ1s ÎØbÑ”Â{…š(ÝŠûl8£`Â)34[V¬(©)i8cƒá˜1-– ‡j)w˜sÊ ã÷Ó{æ{;ËèÕßœzêö·¿CÉSâÀU¶4¿Ý²¡ä>–c4†+6\±fË–%%WL™Óð˜MLÓÇ"fL€kÖÌ¿š1W™D!ÿ Å8ÓáD¸gXÜI6àõAN NDÍ…[RrÎC.°Œ¸ÁGƒC³á‚J¶T(b4-çĤ¤ÄnbÑDdœð&·xSŘðÊÜÞ[ý>bß$>j µ³èËô¤÷í Gõé9ç”<àK"rÆ(Ö,hHI¹â!”4X,s::¬¸£¦E¡cÙ²’kæœñ¸ã_ëφµ÷P†g÷zc|Ï1¼—í .”w·_­QÄŒ/''ŽCÉc÷5Ùð˜‡$Üæ„–K&Ìø†%¬°D$Ĥ(Œ˜ ¢¢!fLLKÍ‚ˆ„H¹ÍÞá„rr•`°rU†y†į%j¨p,MzO« kwÁùñÈ3U1›ýákι✠@±à15Ç8žðßh±@BŒO©3r ¢Aai©Ù°Áˆò—§¥æœ†)-ÇŽnχ¹ç†Øè‡ˆJn¯¥¸»øªÆ h¹ñYÅš %…ËxÌ=îÓ²á –9Ž+¶l™qÎ_)1$h% Z&Œ¨±l(GMEA‡&#FÑáHq@‰áK&œò:c J.Õ¾³þQœ¥“<±/†b*ÎÝ7¬pT,¹CÁŠHH1¬y EÁ59QpÉ’––Š’šËƒ¦¥¤)–އ&Âà€„Œ”ˆŒœ-G¼ÅÿÂO9QÑÀG¸§jõCžŸÚ¶t·ŸÚcÇDUÿà]ÇßrÁ–+j11ÐQa©ØpŒâ„#žðgjŽhزdCCLΈ†ŠŽ‹•$Ìh4TòÒc:-% äœÇÜ ý‡Ñ¯ŒD,÷}󈧔'_àÐ@MqÑ·””t”nÉ#qƆ Ë)–’’j7˜2¡eÉ–ˆ ÿšœÿ!bBÉ_h¨QdŒ¤æ¬hhHȰTtäD8"2 d‰Ââè˜0"aLDFÄ’ÇŒ~ÝÍï©g„Jõª>B…ÌÀíýM{ws\R³aAÁ’K³¢ÿü˜–‚5š1cFh6¬YÑ1"å”oYr¦fIAÃa)é¨IØbéÐq“q@,*ŽòÑ CK‡"''!ñÎôž¼aõ}N„º¦zTÁ·Tw/¿zÌšŠ+ÎXà¸bAKŒ¢¤ ÀÒÐ)3f,éÄ$¤ä8þÊcŠkÉ –š––” |&¡@)Ðbé°’¾¥€ÆÒ±e*¯;%¥qwTDô¹eô2.R…ÿÖ¬ÝC.9gKÁ%glQÊ]®Y±!E3"!&B±a%?ÐGÿŽoYÒá(YâÈ«ð~@9 ˆÈ‘’°ÀS±¡ÅRÓ¡p$Ä@KÍEÁW\rƒ­›2#W&¤ÝßÛîàOK÷¯ØRR³æ’ jÉ §(bFÄ”\°"Æï]Ó°%f̆FpEC…!&Æ Y‰Ù·ŒˆéèØÒÑRáäÍ»AM3%’ïÜÐpÉ‚7xÓßå™k¬—4„ü×ÊŽµ{È}.äG®YQ`¹ ‘€8bDÊ-*ñð%„—­1lËÈP8R ÃËŠPr™ZÉ|D‰€Œ)[y(-Vª’þX6´Œi1ÄE¨ƒ*è á¦Ð’9l.ñ tl(Ù°¡ ¥ÄaqÌœC"a²¤¦%¡#&#`¦À‘`€ŽN®Ï"4·H+Z4Іš‚˜…¦¦¡“¼Â1&a+>%ÃQ²å&íÀ¯}ïðé¿Jþ_ŸqA…¥àR`ÿì #nq›œ’ -%k"RcNH¨YSÒbh€ŒšŘ’˜D 70lIŽ…¡Æ`ˆ‰è¨X3¡¡¢eCGMJ‚Xu4T|IÄ)S§Õî´¼rÔØAåþÐmï^~õ„‚Hꊊ…Ô€- ·x“c4KÎXp‹†’È™0fƈ1°AÓ±49àˆP"©^[[JZ** Ý·ØàÈX±%eƒ–Sqņ9šD¢†"BsÁ=2"7Wì]ë`„èÅ¢…7HÃú«sžpÉš†BRá‡!ç·¸…b-)ŽÏcbÆœpÄ) K´œ T8IÕTcA¡q(24-s" 11ÐaéhÑ‚Pt8j‰8±À½K.9,ü{E 5¸–êÓ5+–\±¦¡£¹J ¦ò,½c­%Î'Üà5Ž™QKG£"•:££¥“Ô»£\££ eʘ”D¦Œ„Ž‘œO%‘C‘2f…¥¥ÀÒ’I sÆœÔE*ù¾QC ðß~‰€’’ˆšHÉȉI©©ä+6\‘cHI˜r“a0S £aCJLAECM‡‘SÖÒa±hZ©B34 Ž‚XªÕ’N꓆Zj–ƒã‚‡ŒHˆÜL™W/ºÜA‡ª¡¤ ]„†‚ 3%Â16T”l¨ÉI˜sÄ'3¦"%§¦ã1crÁ(5%møþŠ1ŠG… ~C†TJ9ðW´”ŒpẴ6T(rRbR¢ßM?zÅZÃíýÞÑ|¼æœK–´h)¥R&LqÒ~qlyLMÊfÜá”SF$T ­<ñ’ –¬©(qt@ :#%––ˆ 1Ž’C"×(ãBî0h飵l¸`Ä ³'ß™hGÏóH)dYüöŒ3–lØÒQc3fΘËC`Ë%GL8创ù£‰& Øv,}GKÁŠ%k¾¥¥¡¦¦  ¢BI8ômËŠ͆˜) -[R ¾语ÁJDósË% N¿³ì›iÞy]rÉ+ß¾"%!fÊ„ü™ k4§¼ÁËëb¤HzܹTJ’p&L˜ çkË‚+.ÙÒ 1tX F\ÐÑ¡©p8[j:À ±h)¿¬¸P_šÕ.X¿¨á° WîXÖ<✠…bÆ1)pΚK á˜ÛÜæ˜„#f̈h±DÄãû€ìߢÂK•SQÐ`©)(¹’伓@ñ:5%š’Kr1CB„a-NC#ÅyBGMNÉ}r^ws¥öJÇ— ŸGÅØÒP²æœ+"fܦä[*J*J nr›SŽHÉHBÓWK^à²pšj*ZJÁ¬J JZ: [¶$" &ˆÖ‘b¤[ÞInêAÄÿ~BÊ;p1;QÝ–0„•cܲvOø6@d5–œ›d¬¹`%WH‘3å6oò7˜šà?¢1!7Ýý«¥Rh,ED"e]CÖš-[Ö¨c ":©d1ŠXŠûÞ›µt´lqtŒqÁÍãé3 òçæ–úã­`Ç [ZfLɹ`‹f$!­%ç&os‡cÆä$´by-vgLœ¸Þ`Þç÷mEŽ£cÌ–”5UÀ ±t@T%¾û nÝRÑÒRH×]3æ„Ûœ2þ̼ŠÐòÊß–À„5W,háÐ,y‚"`ˆx››¼Î1©'~К˜H^¨ ÿô&Þ±]ô ¨sRv94ZÌS±¤‘ª$“ ©‰ÌÝ™ÏIõÑçŠ5 'üŒ7?›þ†ÐöyigÙ}\RH‚âñ€ V‚0T”hf̸ˌ99 GM#/Ic¤€×<¢ËÃîSÿFú|  žEÓµ¡•ÌvA$§¡OÍ;íqò-<MFò^¢kMñ|`ænÃ’sœã1ÂRR°j*J,ǼÉÛ¼IB†‘æßšÞ3Z‡;‚¡“ Ô]ñ€¤¥«1bI#xƒÞ¥•³ÓI u,ŽŠå[<à=w¤Ì n½dÔP÷Z|FyΔ99+6¬©I¨©hȹÅOyL²„þÆ«p{­üîP¶Ÿòº€-y²ýßúÅHú]V€|O5ò=¼á|FÑ_N±s¿#ÿxüù³àÜïètùO®¹ïþ‰/)xÄ Ç8Îx–ŽRå×ù7¼ÏŒ4øèãó1¸J|‚ºo߀8è¾ðêBBg¥ä/ØJųÄ»¡¤¦•“ðÛ~õËë´t¼ËäßsªÌó%3Ë!`«hXÓ²¥Ea˜`ˆów˜’ rOØÐró¸ÉÞ CÃ!l˜_ôWÌÊS·Xi ûû^ $¬©qò}-âH)9§$¦å ÷ø7Ÿ ï¿@_£Ê1[Z)q=éo<ˆQx;zðvw}rs`>pÚp†v‰Ž o]…3ä³&(¿£!@·æR~r„!ŽXq%ÈGÅWœñ6ñ«`–}Á“H ݠΊ #N8" ´Œ)ôÕÕžØ yVnõþg7}b悉}O4¢•ر‘Ø¡‰„V`˜0ÁbÉÑÒÒ=ó GÏoéa,ô¬'õùÊâˆ1i舟鮠(†‡”‚>uƒ|CK·µ¯xlÈ<41V¨þÄY —®JoªœŽ·9cÁŒ›“…ËótÜx„JË—v"±¿ÿAS¦¤ Œ·ÝÛúnf´˜ùYmZÿü‡ l-ÜŸ²ûš¶¿bÓPÒ¿4§dNJÉ–9o Aññ'G-fðÙ`ˆÈ˜0"–é_ª“ìahŽ¡ƒÔ<&5h.«=j '²"–³ÑÉu%<º:\̈ˆ9šOè$+F¯—ŽÞ •ø 'CL΄ )N:Wý[è©=z`-OOíqYôàY_GåØw­Žˆ.T}UÛŸ”JÀ˜þð7(FäÜâŒ-çÁ°¯ä#4 99T š„˜œ7¸Á’¢©Ió³S!Tê½`ÇkÚý3ô&þ«ZÉ#Ù†–ïêá¹þmEßDtzæ°‚l¾†âQ”´¤_t¡\{ɾ†¥)f„¢Å Ð…²È=†fá©¢ëºKàö:l‡ƒ nïÏ&P Øûsï34-c2,Š˜–öN½¢³tXjjJ"ÆäÒ‚ˆ‘t­Õ îï?u`˜}3좋º¦=t±ê õêƒ(!칺]0eM+LïJÌ 6D8õr> @n1dL°”òã#qŽ–v/â«€Lîg’Og»æòðI£Ê®íø4³Ó`1‚Y{ª¡#ž–¦#’Ü¢‰‰I%½2?¢GŽ8fFËFò·hq«ìÃtúéôùºÂK…¹œÞ™vᚨkÒp' ­¡E…A˜6`Ù=.ÉéíÓ>ýò†ðkGN‚¡¢–ª.’&ìÛ<¬úhÁAöºhîH‡y†d¯‡YŽ­d˜ .—ÒJ̈š†ú™ÔÓ2DÌC0K'ª ÔsüªÝ‘ºJ7ø¨;àF»§8›»³¡öЭ]rÕ Laˆ$®ôñÀ<99%Ö4¤×šB¿ˆ!"r²¥=Ò°ÍÉ‹P{oú°¾Øµ“Ý5ÃGnø^„Ú¦œ¨”{üÅÒѾ½fCó/‹PYùfc&l‰…”aÈÉÉHBƧ­¾ñÃÌ€[FÉíwRNij1–œßuCúö•œ¡¥•×5$°;i4;Ƀ#bæ8ÖT˜¨W¢z2NBA#˜–¾¶”H½ð¬Œ;ð.Rîš«rø§¬w!Çð½ý‹ÝÕÚeV+®³ àKB_fÇ Jœ¤B± Éí;®K‡oi??^·gžCC8q–6T†ŽŽZZÑZ º×prêZª`ŠV˜W×=:ýÝOÐÑG‰Üµ–F .5x6ûß R×™Áí™À;+ã¤Ù7• à‚ˆ:ZZÁ&\8+*´4–[¹LÝ3ɧ/ÀÐ_h,H¬Þ¥9`Xê©¥ž‚gÍâ€ýáïÕ3ÚB:ºlBÏBÀÌ;´ôHœ4¡ô^×í§–†’HêÿXR)½—3î§­êfØŸ­êa:upØ«6†•Ë®ã$›Ì¥ß‰ õàêõµ³‘·¯¿ƒ—ýBàm'ØO €žBžž¡R×üYí¥Ö}l²RJ»A¡öú`žÿ |gåmûŽg‰¥D°]3ÀЉzD½'%½¢!z'Մ牅õSžà颊§N‰Ûˆ9Û#¨ìm6T¨}³ï|j,í–Uç·ÃP#9öe3K’KÃHjÎX|q,cG]È7ü‹êheÖŠ/Q2ßíùV.– i¨©Bþ!NZz—JîG# “öð@BK#Ž<i#|=#Œþ)-k!¨¼4œïèîúJ'-]=€Ü‡5j†š¸‘‚W‡ÊÐìÁvþ,µ¡åÛ3j†Í.gÐòÿH`9#(Y)ƒ¶¾¬Šƒct#ß­gb›€¿ª—Í#–öw•´á=!£ d—RûãÖÊ3‰è„à5C,/Çü‡ Ç7’Ö Ÿ_‡ø¡¤s¦nÖ›< g-o½Äü‰ü:zõ2Üá~éogJL$½ìà›:,kßÑHsX‡RYcHPÒêñ„Þ#4’XwƒH¯B¾¸ÿ{'Ì(- ô:$ZJp'§µ#(1BC>˜þ{‰«ácÂX€ŠV¦ûMøJà„-”A?Ô¬…—‘P‘0b,ˆiÖt”·ƒèa©´²€‘³†ÐÔ}Ç+Mg¤'îs>”Û>¸—G¨vŸ”ÉEðàWJN&6pâ3áÁžñ+Á±z·—’òsfD’¦Ïˆ™2'ªYŸÛ‹û%{+—®“9ÐF”¡ ¯·£‘ìbçª}øM¾B…ô5[q] S¦Œ0ì#.q£ä‚oyB%-|?èi^kÆŒ…Õ’s‡œÛÜÄP¡Étç!¶¹d”p}š­ ËøA?õÓÈ¿3‡ ×ij&"a|^—©>ÇYYoæŒ1¹¸.ú—Š{\ð€sj‘ÅðÜ™­0¬3a69Æ(Fâê®è˜0“.k* °ä•;n)ý•%x€Â²e Œq„!˜Õ ‡ðEZbÞwF {‘:ÉÙ{¾A$“8S2  -9šš˜–?sŸ .¨ˆ9æ„ °¥¡á±ÐJR eJÁšˆ‘PÚ­(DLyDÆœáÊ85)F˜–%šYc8ãhe„¥"aÊœˆ)·8 ŠÌ+¦Ô$Ìí3 ¡Ú}Z2±†:8($Rž#áà’K 3N¸É””Šš- oð3ò„+,ŠŒ )–%¯±âB2¾šsŒt¯­¤ðó¹âŒo¹@¡YqŽŸ*®¨(ذbIĘ%RrÆô72ÆÀÁ•xÁ«ád0¡gO …p™é€ŒôÏù’ "nrƒ[̉èQS¡yÄ=¾âœs–Üà˜ˆ–5%1%% k2‰#;jˆ Ý®–W<áEÄ– -uh6UTlˆ³%#c”c" ¬ÈôÈI¿ÔÏ3„=ø°ÅãXó-PL%©?•ÌßD¬yŒsœ) --93é,ÜbÄ1ùš+ fDÇ¥8φKLJNŽÁIÁÜç%†Ž‚ ®(è0ÂtØÒâH˜0bCÉE€òK V´&Dt2ó#Èê½WàYj›¾ä?³!åï$v‘<±BQ·Œñ.SÆ’<ùc½•´gKË”·¹Ã»<¡ &Ç))–ÈaiBêm•t´lyÀ%GÅŠµ8ÃX” -9)…$ä§u鈅»=‰žÍ`ðµDù‡̘…2¦Ç* 9š†”œ-OXó:ÏûL¨)iI1ÌI¨èPÔt””òªV¬ù —¬d"P“p,•‹gêgR^•¬Y°½ÃüŒ·¹ÍœË{üDæý¾óD(Õ‡—¬™“H#bJCÁ– ‡ HvÎæ’œ»ÌXpNKΖšŠ% R YyŠ”lrÛ¢9"¦âOly›9Ð1•!Ç­¨ ,)YÓW,ØPP†¦pËŠ-¡$1Á0çW<”Á\ŸÙZ""âPÊ?Åö·~Ë[’à"&X#2䌈%eýg¾æ”טsŸ¢¦!œš#‘{Ê„ˆˆË%[Z¶LxœK³Åò9ÐJ’¦E„«•r¾eÃ9 9ô.ƒZ 䆖PÖ§Ü`Æ„c J&”씾HÑå¤në$ÛkÄ!A‚¡eEÎ1·9’*ô&Ä´¬xÈ×¶Ä!ë᎔1*r2ObR2Fl©i¸CÆŠˆ ÇäÔ\pÆš%7¸b˘wØpŸ gL8唜ˆ–)–5—TœóWØðsþ…{<‘ψ®%ŒIPtÔÔ¤DäLÈPTÔB]i¤K ð;"—ª¹Dý^‰T—}vBåpØ_v¢û“ÉœˆˆNž‡ÏÏ )r4|N¹É”‰¤;5Sn°"gƘ%%w¨äÇ—hRZZ"n“°aÃ},Š–ŠÈÖ¬XpÅVrÙX·îëdÂ7%¢Æ•Œî[2ÆL¤óÑ¡‰>zgÙÉ)P¨h©e²¯sDŠaÄ[jNÓ1gEÄY˜ÝTäÌIO-b„bËl°2y:•WQ³ ¢¡ YåZ<¼W²æ¿sI÷©ƒ åÕ§ÇÛÀ·NȤäí0dŒd¶Òªqÿß­ŒËû¸¦"eÄœ9ï±4[Žxœ Å)ð:W4ÌY x ÃM^“âÈŠ ë‰ˆ¼e¤”ÔdsÌ9G̹¤D+!¦£ #M!çáŠsR, «O.>ÙrÄ —°èLi$àxà}+>ºcÊ(fê@óñ 9?Â>F“ÊA+¸"áï±fE)™Ý’%#Ž)%Éih8&gÂÏy4PÕbfÜ&§¦%bJÍš–ü=oðG.iX±Å‘’a˜sƒ5OØ3%Žš%†ŠŠ).yÄžð6©;QîÙáSÿ*v6¤Ñ¾Õ‡”-™ˆ'2P´UªÉY —Ñá‘ Âå¹»¨:$RS®˜±`ÌO(ù ~ÊûL„é•(F¼Ë< "%$Ä 0œð6_²fœãȸIJ%‘ÉI;Ð3;°%¦âEÁŠ• p>³ìY(^ƒpMÅË-å® ƒCB°•Îã)Ž%#Ò `;"ǰ¦&eBMA„|k à˜9gt¼Ï’Ÿ30‘pŽfÆ[ü‡¢‘ë¤øš†#~AÎ}¹´Ž)'ÄŒ¸EJø”)rjFÄlø&ôFÝw#T>ÍöÝD¤LD« ôž¾©/×ð þÌš–© Ý ŽœDxÓÖ´Xä–$LPTŽ8áˆH\qMIMLIÈÛh ©JVÜà”ŒŒkd¼Í8Û%WbN͈cb&ܿŖ%5³½ùákª.p'U g)™êSɆ¤jŸZúSV,iÃã š–Ž”ˆŠ%Ž”Q8¸ßò‰t(7äÚùâkÆcSsb–<¡@‘JaYÑ0ã_“qG”ð 9%ŠD†/-Š„9oó61_rÌ™_3â¶gˆž][Ë·„–„E-"…âÐŽ²Ó÷—¼KŸ¸Ï»œÒ°$’ù»--ǘLZ:[^GS’1cÌHŒ§û!‘VŽbB"Õ¦£eMBFL½GÅ#".¤ìÕnÀ1!'#§â 'äÄÜb‹aÆäýöÀ{>¢Ͻ?hÈ8"á”rK{]?¹Æ1ã]ÎxÄ‚3Á iÊ{Êê” ÂL#F¢-`öÀ€¾û‹Z‰!cƒ–tÞ­$!ç„‚–šõ€žK~35å˜cÁ±¼õ=óÝ>¢ûx7¨Ô úÒÒ° 3vêíÁ„š 3æÜc‰ã˜Š†BæÅk -9GsÄL„7Fdr¦¢9ÔÉ0݈11†T„? ½ dÊ„’­ä¸­Ì%fŒ0h"ÆŒ—Ï“]Ó8H¨¸§‘ŒIË脘ã½¢§ùÔ 5–Œ[´<¦ã[ê0Èð®~F̸ÅLD[{Ñ>'^†OIÍ3q˜‰€Ulˆ%Ól¥û’2b-õï Ær1õ€¿ïU2'd×P £ý¹ óEŒ–fBŽôs¾îÚ†™láf¢BÙIþÐ3§|ù1aÆt˜óë‚FY¯áà˜à¸ÅZN…W¤ò=•&D»JF_SrR"6"ØÕ3{üäWÊŒäyM`‡"ºL޵¨Î&‚){îÔnÀL=5îê»Ï9°¥$âˆ[""!&ö}h¤"µ‘L‰nå'쥌9’~EB"mÀš ±4l`aÝÌ:,9cQÊ´òó-Ž’ÿÀw冚î®þ"ýp$».Œ† ŠaÃY»ÃÑXäò´ÌV¥rßwôàX =Ï-:gÙ]‰>sõÅÞ K–"ë’Ѳe‹#—%ƒb"=ùJHꎖ[L…êÔIaŽ`-É5MžƒOó^t»‘y(‚—(£É׃Iж×44ÒGðÕl+ET$é:a°ÚI/ņ±„¡¬‚#fÌŒ CbÌ\bXÍ¥ ì§L˜ Ù¡TIÝ9e"‰´W2ˆPϼæóå'– :q,z³E" ,}&ljŒ Ä}NCHÓäâbY¡¤ÍÛ‰o°Âª&øž‘Ÿ0ç˜+ÑÇžqKÉ#ó•lÛ8fÄ9 '¼ÉÌY³ †”ç\lQŒß7×0]úsý‰• O¸Õˈ g,ù·]ã,Mð3½f( ê»%ÀH+”N¾JXÿJ7~žtÌŒcÑË6TÄd̸Á†%+*k6äŒÈ™qÄņ D’§WØí“ê»®†ÂÜ‹dX)¡×g„-wƈ©¼ÜNƇTcFšL‘vá°› Õ³!ZZù ’úfo¾#"aÌ” ÖT(2rf̃ˆWcÖäÌ™“cYS¢¨äõgÒ²n|Âx—{Ï¥D¤¿çCCô™þ|ö•' *¹ç é]I }&çJ¥—Ýü„ZI+ÕŠÜ#Œ7÷]+$4+Ôá†DDÊ["Æ’4y1á#ZinåÐ;M/:ï  ªbQ¨{×ÍFûÜkCú¿swÕ=}oúë)£ß®$ñÏ^RÕ‹›°—l»@ÏѹSñ,‰: hŒEjîgÆbÙÕU€oÙŸ¨Z4•½f’ʳ«gA´ÒPfº´(mjô=ž?¯¡ˆ°µŸÚ@}ßãð’®:0]€s‡SßÃI`B[ʼnFòÉ-‘¬„°PÚщz‰SCSFÁ•,1$$$´2ù«ñ£VžâÇ–|©ˆÄ¾- YH`žï#ÂDæ]ûý€ãî÷í‡þ &Ô‰ÆR FƒEtj‰¿?ÇÝÏâ9€éõÇBôè¿Î‹ø¸0çÝ6æk‹˘Š5çÀ$Aê0ªðh0¯á…@[ Ý–4ñ<¢H˜¢ºëŽ¡Á~ØJÙ3£”žçˆLx²nðf‡k:p┘¡’ÃnåØ&Ä’n©3–@"¬YäÈ[*¶,¸’U4K¶¤4ƒŒÔŠöØF|‘¿FHI‰ŒŸ7eÕŸCHÿWÍ?Ø_î«9oPIɬhEzG 8üJn³8ÄJk­UÊÞ9öúu •èžöDC!ªÙ~í€HXò ÷9§%~æŠ3&(4¹Ìÿ¨0ÆàI¨­@<#`Cåó0Þ¯¾ÛGø«á~ÙJ>€Hx¶ldlÅ ²3y´aÈD…<ÔIºÜïáhšŠ W”(Q¯„ž¦e˜ñ ßò€+ö³È% ž0–‚®CGA§Û £Ç»å”GAG<ÄsÂç!ó¶§œR&ÿx8ÛMPˆÚ]/[Á±{δçDæD¢¡ÞQpÆŸøŠ+:ÆÜáç¼ËHs¹æ‚û|ÍŽZÖ @ÍŠ NÉ(„k€)•DZ”f<ùÍ÷ï7(Ž9!ùµ¾vh7ºNeÈÜ3¿wvaŽÖÿm²Gøæ©‰½Ã¡ÕÝ<§zM*P®ÆpÁ†G|Éå>%†œ…<ó„Bôð®8ãœÇTh •hé÷‹ªRrù vzµ²Xb7¥žÈþÐîp“äsõ">¢—àRE”ÎOàÙ Ú±#Øe–ý„”Læ¸`,MÍV+~ÏŠïŸ&²'£dÜ`Î)·iPœÑ’c©xš ñ ç4¼ª””²÷±×hÙôùE%r kœÿc4õÏ!œ*ñ¼õž>N3¿;Qƒî€Óß “¡  zYˆ1ÇT䌸ɈŸð7YsÅ–Šs.XRrÁç\°ÅI…c¥ƒµ+í;ÉD}pîB²o(ãŒXq…Â0%ÿ•z¾#~̧чNžf!#æûÏ}˜WîD×¢­îˆ…a»Cª;Qš¼Á]n‘p›)cF”<æ ÷9£c!SýÕó8 ¿HÂ%âŽÛ°Ù¡oáh2 ç,¸I„Û^hxÆîûh7O{îôÀc¨§t@ô@’QÞ„Wíqê^»ºìë§‚UĔӗ,ÙPsEAKh Ø=µÙÖI«Æ„¸ä'Åkðz•Ë-…Ì1÷£W/0åw¨$gB‘ †\ÀvšvO¨ÀßaOFÍHüVŸox†…O •(¦:7xÃg\± z©L‰øƒ)sNÉ…šÖù×¾Ò°â3îp GÂ1±h©¿ô¸ãÓŸÚ÷¾Ü0 =È,û£Ù ŒIÓh(íè¦Ç=½ê™³Žwy‡<áL–ZRiøeŒHzÑßÝñ௑Nl|À'ýÛ£ÏÌ'&LYíœå®Ø ”ÚJ=‘ž²D Æg¸¾NhZ*: ‹cr WBõ@‘x›‰pgú®l'†pƒ¡çRä`Úб¿^ïè…5f‚!~…€¡ô;€Ø&Œ§–Œ”>õ”<‚ED¢gÔÈ5Ô"8>cÎ 79å&ÆädL˜3š’ Å]' –Œ'‘“h‡§î^U6¡ÿT=PnrwᇹÜY3¦S! CÔûJ—f/k©cÀ1æˆHZŽÈ8c$0¾ÞÓ¢è¤ôªCdÓäB<ÜÐ0bÄ ÒW[+qÝ Ë~¦Ð_’Êm$‚±ìä$ÌwG!`»§ýÑ¿ #ú@~9ˆ¦cÄEFMM#¬Y'ˆ…otšàD¸ M)¹ ™0aÎMrõ´°è+bç ÷ÇÝ»)‹]-Å÷„ æó—I_ê—\ wM¶n“£QØ×ëOJÊœ˜“ /è¯X³¡’EÊ•Àp½>m>ù #sà‰´ô¬Ô/‘4•{ÃL8aŽù|¨¸ü_gCB¡ó>%I_P²oÏk̉±”²5gÅÎYJS÷±0a*i ÷Ô£–š Ë€Oø9¯B²MˆÈ…Jv>Ö+b_oP¿¯¿Rá¨ÆØ |±f²‚*õ»:Ù„Ð…\´¢"eÌ”5[@s*Ë/KX–œ³’EìT’+(&h–‘Ë8SÇZò ï€sŽ8Qj ¥õE.dÜkذÜr#'¦¾^*Sf^ ÌW(GÅ–-…Ð 'Üæ“_ëH«_Ù Ð_è‡m_p ³=n(uƒÉRæ~¦4¢IPáhX±bI- ¼ZÒm+J21#uŽ$ª óªC#À0æ˜9éçjH|k¿z)XÆR±rW,D¹# Dœ~!•d*8WøûU¸l}îdò·¤¤eÍŠs¢ZìDæ¹ïÇû¹±©È&a½‰r)iH‰8â_ñ Þ}tïE£Å+F pw{çØJq¥­ xz™¡&îOqTr®"iÿ´4Œ¤‡êË)B‡ÓÉ(¦Ÿ2¬éhÈ$/Eº/A‘sÌŒäÞË]‹W2Į֬e=‘Ézý {º††ðY#ætü3‘SÖ ¸,.H¡´Ò‰„³6DBä7”ÿ:~…÷óʆ LØÅ«iLѲg¨ƒ¼¯ÚàëÅ~YT+yE$šÆ™ÐŠz0Ïg ºó „\\ÉЂ&¼Æ-òÏyæÎ„Ðêž c‘v€Qöû\€Òö+TµWj`6hÉ´tÄŒ…ÞjdgC¿—/aD+ãk;1Ø*„Èžñƒ7™¦ŸAˆýA£ƒ‰p_!ôé²Gšû³a{šû‹Ê\(ÙÕŽÛIGêRŸ8õÌË:@2=‰¸'&9Ùéç«Ûœ;Ü"ý»FÚ÷?*Ø?–¡ÿÄ¢A¦aÙWBnãsƒ1ËPøK óºþm,†hÂùJCûƉCíâQDdœH"EØ2úã^ blÄY52^œ êáÚJ½§»ãàEìÖ¡)Ùl``÷*ÉÝÙɉ²bŽZ–¦Ì™‘¨—lè¾j­±“èIÈD)bJN!ù^?<Ý+Ÿú^D$)Ø®‹Ñ'eVÀ|'äG%Øc¯tìùÔ Ø¸Wf·#ᔟòš M.°P?^Ôèg2bÒ@/­E—¸íK„ÕßKñšp6\Эf°CA²êLbeÝM3si‚x[?ô8bœì33ØÜã~ìðÙØ11™4ÞJ*)…ý¿¹d…;>n´·šFLÑ_©6 ­tâ+©7i·ò#TùˆˆGœpLú›gA~PC¸=´¸Ou;JyymÐÔ7éñI¡Ví+a44rãt*kÙ“P¥°ò=¬W `çEGø¢§‰òî`ï`ˆ¡{Ü)›úC\¢eiº•²§¦FË v#Š·H©eT5x5!a¾ÖʉhÑ‚HyÞäKj™üí³XŸ•ôÛsQÌ͸-C”Jh¦î‡†êTÀyô`%%Ž­!õ(j‘.PGT˜êóI}ƒ¶;°’„iYkm%Dv¢kë…ž :é†Ù0.á/R'.;æûýŠžçŸ>!„½k=<•&w­ˆ&ú™,GUatÀaD¿Î’ jD‘œ&¤Í×pÉŠ•ÌsUXªé½wðÉóqÓÿð£âŒ,œ¨O{œ@ï}žù•¾*0R#tAr~+%’çMŒ8 û½! ¤aÅ+jaÝÖ’R9iûQ+¥WR{Š/~4CìßÒF߹赒Ì1‘PØOsi1ÂŽQé'4:¶l‰)ˆEjÓW%3Z¶,¹dÁF¶ÎV’¥Ø 3a„Kg¤mh„M¡ù‘ Á`–=¾ºìÙ)±ô4ûoJ«ƒ€–6~+ÊÖJš¾±xÇ”Š%KVlÄ]6arÑ>Ò•&”vÙk·G³Ôd_@÷I#GÔ t~›¢~Jp¥aË™ÖêX‹˜x"e*{µ°_<!”õìJΙïøz'‚Ó}‚âk¾ÕÜgæ7=S…к[EÙÉt®?­œ#ˆU_¾W(©*YŽW VÚ½D»,ö°³æ°^nôG3„“Ø ©ù‹ûš-ÿî“c©ùZÙºª„Aç$zk*¶(QƒK$Z:â  ËFV¿ÂÊIè…v†«¶uÀÃ4=O»ÒD'¯ª¨ŸŠkßÍöxΘ‚{j™mÍ¥û3â[~JEõ‰ ž‚§C6iDð¦4Ý€ÙObyDa&â½ÈuX&Á€N`t¯v%{&„³^ÜuX¶½Â‰Ø;Αòp .øgþ Å»üœã¼FÈäz³ô±!Ø-’@ÉŠíí ¸6³r¹.]Øåêh¦ ©½Þ;B'ˆHÉÆ¨á“þ™å.?ï(>¨þpÉù’3þÌ%¿àå]R¶”2‚ Xli_§Ê' ô܈€OÕa„y]Ë¢€¾þpbØáâÄC,G%še‰º¸|ó泌CGÅ¥{È9_òW¾æœ˜Ÿó¿ñ& - Yæ ƒ~„ «²uÈ4zŠz"™BDÄVŠê*Èÿõˆ´§yXé|1pÁÃ…szït š§ŠŠRè¦ú€ÀòÊ'BcÙ~°þÃßð¸¤â’K~ÂÿÉ¿%f2—£e4ié2è}ºÀ‘1RvʼniÂZ<Wñš¨*L«Áâkµ:wÿ¤Òôkö¶R?‹)þ†¨Y¸oø 8㜠5OØð&ÿ;?“ˈ̊÷ÖñÁŒ÷ÜÙî)jùhGA*“ú4ýë€^ìÈ$ö)²Úî< w‘—r6[<¤p7ßOîŃÇúÊÕc÷ ÿÌESsÁ—Œø?ø¿H¸<°’/1Ò‰:üV6`;I +Ò7©™0fÌ9‰,Ñ¢8Õ„°i¯ÙØÖ·÷OÄVFçÖÜãø_M˜ªh¯z Cø6ks×~üÿðGþ,ÔàFÚïoó¯p¬ƒ°§ïSDhj±án?g;˜Á脉¹; #f³äˆ[³däÅÕÞNzµ§M D!d_F2¦¦`NÆ‚ÿÊ7¬ù7ü»¡zåU-*¹*ÐÒw[g¯É#*VÎkÝ?fAI$˜s*ê>&ˆ£ ÙÂ~W Iˆm  WÒú),4ðüÀZ΂•ˆg”ÁYÚð=vmÂaf©B®Y 몥á‚ÇüßœcyßÍ©Ýð3Ò^ìˆ@º¾ö?áÞ&²IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/elasticnodes.py0000755000076500000240000003476512613140041022630 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import (qAbs, QLineF, QPointF, qrand, QRectF, QSizeF, qsrand, Qt, QTime) from PyQt5.QtGui import (QBrush, QColor, QLinearGradient, QPainter, QPainterPath, QPen, QPolygonF, QRadialGradient) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene, QGraphicsView, QStyle) class Edge(QGraphicsItem): Pi = math.pi TwoPi = 2.0 * Pi Type = QGraphicsItem.UserType + 2 def __init__(self, sourceNode, destNode): super(Edge, self).__init__() self.arrowSize = 10.0 self.sourcePoint = QPointF() self.destPoint = QPointF() self.setAcceptedMouseButtons(Qt.NoButton) self.source = sourceNode self.dest = destNode self.source.addEdge(self) self.dest.addEdge(self) self.adjust() def type(self): return Edge.Type def sourceNode(self): return self.source def setSourceNode(self, node): self.source = node self.adjust() def destNode(self): return self.dest def setDestNode(self, node): self.dest = node self.adjust() def adjust(self): if not self.source or not self.dest: return line = QLineF(self.mapFromItem(self.source, 0, 0), self.mapFromItem(self.dest, 0, 0)) length = line.length() self.prepareGeometryChange() if length > 20.0: edgeOffset = QPointF((line.dx() * 10) / length, (line.dy() * 10) / length) self.sourcePoint = line.p1() + edgeOffset self.destPoint = line.p2() - edgeOffset else: self.sourcePoint = line.p1() self.destPoint = line.p1() def boundingRect(self): if not self.source or not self.dest: return QRectF() penWidth = 1.0 extra = (penWidth + self.arrowSize) / 2.0 return QRectF(self.sourcePoint, QSizeF(self.destPoint.x() - self.sourcePoint.x(), self.destPoint.y() - self.sourcePoint.y())).normalized().adjusted(-extra, -extra, extra, extra) def paint(self, painter, option, widget): if not self.source or not self.dest: return # Draw the line itself. line = QLineF(self.sourcePoint, self.destPoint) if line.length() == 0.0: return painter.setPen(QPen(Qt.black, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(line) # Draw the arrows if there's enough room. angle = math.acos(line.dx() / line.length()) if line.dy() >= 0: angle = Edge.TwoPi - angle sourceArrowP1 = self.sourcePoint + QPointF(math.sin(angle + Edge.Pi / 3) * self.arrowSize, math.cos(angle + Edge.Pi / 3) * self.arrowSize) sourceArrowP2 = self.sourcePoint + QPointF(math.sin(angle + Edge.Pi - Edge.Pi / 3) * self.arrowSize, math.cos(angle + Edge.Pi - Edge.Pi / 3) * self.arrowSize); destArrowP1 = self.destPoint + QPointF(math.sin(angle - Edge.Pi / 3) * self.arrowSize, math.cos(angle - Edge.Pi / 3) * self.arrowSize) destArrowP2 = self.destPoint + QPointF(math.sin(angle - Edge.Pi + Edge.Pi / 3) * self.arrowSize, math.cos(angle - Edge.Pi + Edge.Pi / 3) * self.arrowSize) painter.setBrush(Qt.black) painter.drawPolygon(QPolygonF([line.p1(), sourceArrowP1, sourceArrowP2])) painter.drawPolygon(QPolygonF([line.p2(), destArrowP1, destArrowP2])) class Node(QGraphicsItem): Type = QGraphicsItem.UserType + 1 def __init__(self, graphWidget): super(Node, self).__init__() self.graph = graphWidget self.edgeList = [] self.newPos = QPointF() self.setFlag(QGraphicsItem.ItemIsMovable) self.setFlag(QGraphicsItem.ItemSendsGeometryChanges) self.setCacheMode(QGraphicsItem.DeviceCoordinateCache) self.setZValue(1) def type(self): return Node.Type def addEdge(self, edge): self.edgeList.append(edge) edge.adjust() def edges(self): return self.edgeList def calculateForces(self): if not self.scene() or self.scene().mouseGrabberItem() is self: self.newPos = self.pos() return # Sum up all forces pushing this item away. xvel = 0.0 yvel = 0.0 for item in self.scene().items(): if not isinstance(item, Node): continue line = QLineF(self.mapFromItem(item, 0, 0), QPointF(0, 0)) dx = line.dx() dy = line.dy() l = 2.0 * (dx * dx + dy * dy) if l > 0: xvel += (dx * 150.0) / l yvel += (dy * 150.0) / l # Now subtract all forces pulling items together. weight = (len(self.edgeList) + 1) * 10.0 for edge in self.edgeList: if edge.sourceNode() is self: pos = self.mapFromItem(edge.destNode(), 0, 0) else: pos = self.mapFromItem(edge.sourceNode(), 0, 0) xvel += pos.x() / weight yvel += pos.y() / weight if qAbs(xvel) < 0.1 and qAbs(yvel) < 0.1: xvel = yvel = 0.0 sceneRect = self.scene().sceneRect() self.newPos = self.pos() + QPointF(xvel, yvel) self.newPos.setX(min(max(self.newPos.x(), sceneRect.left() + 10), sceneRect.right() - 10)) self.newPos.setY(min(max(self.newPos.y(), sceneRect.top() + 10), sceneRect.bottom() - 10)) def advance(self): if self.newPos == self.pos(): return False self.setPos(self.newPos) return True def boundingRect(self): adjust = 2.0 return QRectF(-10 - adjust, -10 - adjust, 23 + adjust, 23 + adjust) def shape(self): path = QPainterPath() path.addEllipse(-10, -10, 20, 20) return path def paint(self, painter, option, widget): painter.setPen(Qt.NoPen) painter.setBrush(Qt.darkGray) painter.drawEllipse(-7, -7, 20, 20) gradient = QRadialGradient(-3, -3, 10) if option.state & QStyle.State_Sunken: gradient.setCenter(3, 3) gradient.setFocalPoint(3, 3) gradient.setColorAt(1, QColor(Qt.yellow).lighter(120)) gradient.setColorAt(0, QColor(Qt.darkYellow).lighter(120)) else: gradient.setColorAt(0, Qt.yellow) gradient.setColorAt(1, Qt.darkYellow) painter.setBrush(QBrush(gradient)) painter.setPen(QPen(Qt.black, 0)) painter.drawEllipse(-10, -10, 20, 20) def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionHasChanged: for edge in self.edgeList: edge.adjust() self.graph.itemMoved() return super(Node, self).itemChange(change, value) def mousePressEvent(self, event): self.update() super(Node, self).mousePressEvent(event) def mouseReleaseEvent(self, event): self.update() super(Node, self).mouseReleaseEvent(event) class GraphWidget(QGraphicsView): def __init__(self): super(GraphWidget, self).__init__() self.timerId = 0 scene = QGraphicsScene(self) scene.setItemIndexMethod(QGraphicsScene.NoIndex) scene.setSceneRect(-200, -200, 400, 400) self.setScene(scene) self.setCacheMode(QGraphicsView.CacheBackground) self.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) self.setRenderHint(QPainter.Antialiasing) self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.setResizeAnchor(QGraphicsView.AnchorViewCenter) node1 = Node(self) node2 = Node(self) node3 = Node(self) node4 = Node(self) self.centerNode = Node(self) node6 = Node(self) node7 = Node(self) node8 = Node(self) node9 = Node(self) scene.addItem(node1) scene.addItem(node2) scene.addItem(node3) scene.addItem(node4) scene.addItem(self.centerNode) scene.addItem(node6) scene.addItem(node7) scene.addItem(node8) scene.addItem(node9) scene.addItem(Edge(node1, node2)) scene.addItem(Edge(node2, node3)) scene.addItem(Edge(node2, self.centerNode)) scene.addItem(Edge(node3, node6)) scene.addItem(Edge(node4, node1)) scene.addItem(Edge(node4, self.centerNode)) scene.addItem(Edge(self.centerNode, node6)) scene.addItem(Edge(self.centerNode, node8)) scene.addItem(Edge(node6, node9)) scene.addItem(Edge(node7, node4)) scene.addItem(Edge(node8, node7)) scene.addItem(Edge(node9, node8)) node1.setPos(-50, -50) node2.setPos(0, -50) node3.setPos(50, -50) node4.setPos(-50, 0) self.centerNode.setPos(0, 0) node6.setPos(50, 0) node7.setPos(-50, 50) node8.setPos(0, 50) node9.setPos(50, 50) self.scale(0.8, 0.8) self.setMinimumSize(400, 400) self.setWindowTitle("Elastic Nodes") def itemMoved(self): if not self.timerId: self.timerId = self.startTimer(1000 / 25) def keyPressEvent(self, event): key = event.key() if key == Qt.Key_Up: self.centerNode.moveBy(0, -20) elif key == Qt.Key_Down: self.centerNode.moveBy(0, 20) elif key == Qt.Key_Left: self.centerNode.moveBy(-20, 0) elif key == Qt.Key_Right: self.centerNode.moveBy(20, 0) elif key == Qt.Key_Plus: self.scaleView(1.2) elif key == Qt.Key_Minus: self.scaleView(1 / 1.2) elif key == Qt.Key_Space or key == Qt.Key_Enter: for item in self.scene().items(): if isinstance(item, Node): item.setPos(-150 + qrand() % 300, -150 + qrand() % 300) else: super(GraphWidget, self).keyPressEvent(event) def timerEvent(self, event): nodes = [item for item in self.scene().items() if isinstance(item, Node)] for node in nodes: node.calculateForces() itemsMoved = False for node in nodes: if node.advance(): itemsMoved = True if not itemsMoved: self.killTimer(self.timerId) self.timerId = 0 def wheelEvent(self, event): self.scaleView(math.pow(2.0, -event.angleDelta().y() / 240.0)) def drawBackground(self, painter, rect): # Shadow. sceneRect = self.sceneRect() rightShadow = QRectF(sceneRect.right(), sceneRect.top() + 5, 5, sceneRect.height()) bottomShadow = QRectF(sceneRect.left() + 5, sceneRect.bottom(), sceneRect.width(), 5) if rightShadow.intersects(rect) or rightShadow.contains(rect): painter.fillRect(rightShadow, Qt.darkGray) if bottomShadow.intersects(rect) or bottomShadow.contains(rect): painter.fillRect(bottomShadow, Qt.darkGray) # Fill. gradient = QLinearGradient(sceneRect.topLeft(), sceneRect.bottomRight()) gradient.setColorAt(0, Qt.white) gradient.setColorAt(1, Qt.lightGray) painter.fillRect(rect.intersected(sceneRect), QBrush(gradient)) painter.setBrush(Qt.NoBrush) painter.drawRect(sceneRect) # Text. textRect = QRectF(sceneRect.left() + 4, sceneRect.top() + 4, sceneRect.width() - 4, sceneRect.height() - 4) message = "Click and drag the nodes around, and zoom with the " \ "mouse wheel or the '+' and '-' keys" font = painter.font() font.setBold(True) font.setPointSize(14) painter.setFont(font) painter.setPen(Qt.lightGray) painter.drawText(textRect.translated(2, 2), message) painter.setPen(Qt.black) painter.drawText(textRect, message) def scaleView(self, scaleFactor): factor = self.transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width() if factor < 0.07 or factor > 100: return self.scale(scaleFactor, scaleFactor) if __name__ == '__main__': import sys app = QApplication(sys.argv) qsrand(QTime(0,0,0).secsTo(QTime.currentTime())) widget = GraphWidget() widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/0000755000076500000240000000000012613140041022653 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/embeddeddialog.py0000644000076500000240000000622612613140041026144 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'embeddeddialog.ui' # # Created: Wed May 15 16:13:29 2013 # by: PyQt5 UI code generator 5.0-snapshot-8d430da208a7 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_embeddedDialog(object): def setupUi(self, embeddedDialog): embeddedDialog.setObjectName("embeddedDialog") embeddedDialog.resize(407, 134) self.formLayout = QtWidgets.QFormLayout(embeddedDialog) self.formLayout.setObjectName("formLayout") self.label = QtWidgets.QLabel(embeddedDialog) self.label.setObjectName("label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label) self.layoutDirection = QtWidgets.QComboBox(embeddedDialog) self.layoutDirection.setObjectName("layoutDirection") self.layoutDirection.addItem("") self.layoutDirection.addItem("") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.layoutDirection) self.label_2 = QtWidgets.QLabel(embeddedDialog) self.label_2.setObjectName("label_2") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2) self.fontComboBox = QtWidgets.QFontComboBox(embeddedDialog) self.fontComboBox.setObjectName("fontComboBox") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.fontComboBox) self.label_3 = QtWidgets.QLabel(embeddedDialog) self.label_3.setObjectName("label_3") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3) self.style = QtWidgets.QComboBox(embeddedDialog) self.style.setObjectName("style") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.style) self.label_4 = QtWidgets.QLabel(embeddedDialog) self.label_4.setObjectName("label_4") self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_4) self.spacing = QtWidgets.QSlider(embeddedDialog) self.spacing.setOrientation(QtCore.Qt.Horizontal) self.spacing.setObjectName("spacing") self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.spacing) self.label.setBuddy(self.layoutDirection) self.label_2.setBuddy(self.fontComboBox) self.label_3.setBuddy(self.style) self.label_4.setBuddy(self.spacing) self.retranslateUi(embeddedDialog) QtCore.QMetaObject.connectSlotsByName(embeddedDialog) def retranslateUi(self, embeddedDialog): _translate = QtCore.QCoreApplication.translate embeddedDialog.setWindowTitle(_translate("embeddedDialog", "Embedded Dialog")) self.label.setText(_translate("embeddedDialog", "Layout Direction:")) self.layoutDirection.setItemText(0, _translate("embeddedDialog", "Left to Right")) self.layoutDirection.setItemText(1, _translate("embeddedDialog", "Right to Left")) self.label_2.setText(_translate("embeddedDialog", "Select Font:")) self.label_3.setText(_translate("embeddedDialog", "Style:")) self.label_4.setText(_translate("embeddedDialog", "Layout spacing:")) PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/embeddeddialog.ui0000644000076500000240000000421612613140041026126 0ustar philstaff00000000000000 embeddedDialog 0 0 407 134 Embedded Dialog Layout Direction: layoutDirection Left to Right Right to Left Select Font: fontComboBox Style: style Layout spacing: spacing Qt::Horizontal PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/embeddeddialogs.py0000644000076500000240000002176612613140041026335 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QEvent, QRectF, Qt, QTimeLine from PyQt5.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap, QTransform) from PyQt5.QtWidgets import (QApplication, QDialog, QGraphicsItem, QGraphicsProxyWidget, QGraphicsScene, QGraphicsView, QStyleFactory, QWidget) import embeddeddialogs_rc from embeddeddialog import Ui_embeddedDialog class CustomProxy(QGraphicsProxyWidget): def __init__(self, parent=None, wFlags=0): super(CustomProxy, self).__init__(parent, wFlags) self.popupShown = False self.currentPopup = None self.timeLine = QTimeLine(250, self) self.timeLine.valueChanged.connect(self.updateStep) self.timeLine.stateChanged.connect(self.stateChanged) def boundingRect(self): return QGraphicsProxyWidget.boundingRect(self).adjusted(0, 0, 10, 10) def paintWindowFrame(self, painter, option, widget): color = QColor(0, 0, 0, 64) r = self.windowFrameRect() right = QRectF(r.right(), r.top()+10, 10, r.height()-10) bottom = QRectF(r.left()+10, r.bottom(), r.width(), 10) intersectsRight = right.intersects(option.exposedRect) intersectsBottom = bottom.intersects(option.exposedRect) if intersectsRight and intersectsBottom: path = QPainterPath() path.addRect(right) path.addRect(bottom) painter.setPen(Qt.NoPen) painter.setBrush(color) painter.drawPath(path) elif intersectsBottom: painter.fillRect(bottom, color) elif intersectsRight: painter.fillRect(right, color) super(CustomProxy, self).paintWindowFrame(painter, option, widget) def hoverEnterEvent(self, event): super(CustomProxy, self).hoverEnterEvent(event) self.scene().setActiveWindow(self) if self.timeLine.currentValue != 1: self.zoomIn() def hoverLeaveEvent(self, event): super(CustomProxy, self).hoverLeaveEvent(event) if not self.popupShown and (self.timeLine.direction() != QTimeLine.Backward or self.timeLine.currentValue() != 0): self.zoomOut() def sceneEventFilter(self, watched, event): if watched.isWindow() and (event.type() == QEvent.UngrabMouse or event.type() == QEvent.GrabMouse): self.popupShown = watched.isVisible() if not self.popupShown and not self.isUnderMouse(): self.zoomOut() return super(CustomProxy, self).sceneEventFilter(watched, event) def itemChange(self, change, value): if change == self.ItemChildAddedChange or change == self.ItemChildRemovedChange : if change == self.ItemChildAddedChange: self.currentPopup = value self.currentPopup.setCacheMode(self.ItemCoordinateCache) if self.scene() is not None: self.currentPopup.installSceneEventFilter(self) elif self.scene() is not None: self.currentPopup.removeSceneEventFilter(self) self.currentPopup = None elif self.currentPopup is not None and change == self.ItemSceneHasChanged: self.currentPopup.installSceneEventFilter(self) return super(CustomProxy, self).itemChange(change, value) def updateStep(self, step): r = self.boundingRect() self.setTransform(QTransform() \ .translate(r.width() / 2, r.height() / 2)\ .rotate(step * 30, Qt.XAxis)\ .rotate(step * 10, Qt.YAxis)\ .rotate(step * 5, Qt.ZAxis)\ .scale(1 + 1.5 * step, 1 + 1.5 * step)\ .translate(-r.width() / 2, -r.height() / 2)) def stateChanged(self, state): if state == QTimeLine.Running: if self.timeLine.direction() == QTimeLine.Forward: self.setCacheMode(self.NoCache) elif state == QTimeLine.NotRunning: if self.timeLine.direction() == QTimeLine.Backward: self.setCacheMode(self.DeviceCoordinateCache) def zoomIn(self): if self.timeLine.direction() != QTimeLine.Forward: self.timeLine.setDirection(QTimeLine.Forward) if self.timeLine.state() == QTimeLine.NotRunning: self.timeLine.start() def zoomOut(self): if self.timeLine.direction() != QTimeLine.Backward: self.timeLine.setDirection(QTimeLine.Backward) if self.timeLine.state() == QTimeLine.NotRunning: self.timeLine.start() class EmbeddedDialog(QDialog): def __init__(self, parent=None): super(EmbeddedDialog, self).__init__(parent) self.ui = Ui_embeddedDialog() self.ui.setupUi(self) self.ui.layoutDirection.setCurrentIndex(self.layoutDirection() != Qt.LeftToRight) for styleName in QStyleFactory.keys(): self.ui.style.addItem(styleName) if self.style().objectName().lower() == styleName.lower(): self.ui.style.setCurrentIndex(self.ui.style.count() -1) self.ui.layoutDirection.activated.connect(self.layoutDirectionChanged) self.ui.spacing.valueChanged.connect(self.spacingChanged) self.ui.fontComboBox.currentFontChanged.connect(self.fontChanged) self.ui.style.activated[str].connect(self.styleChanged) def layoutDirectionChanged(self, index): if index == 0: self.setLayoutDirection(Qt.LeftToRight) else: self.setLayoutDirection(Qt.RightToLeft) def spacingChanged(self, spacing): self.layout().setSpacing(spacing) self.adjustSize() def fontChanged(self, font): self.setFont(font) def setStyleHelper(self, widget, style): widget.setStyle(style) widget.setPalette(style.standardPalette()) for child in widget.children(): if isinstance(child, QWidget): self.setStyleHelper(child, style) def styleChanged(self, styleName): style = QStyleFactory.create(styleName) if style: self.setStyleHelper(self, style) # Keep a reference to the style. self._style = style if __name__ == '__main__': import sys app = QApplication(sys.argv) scene = QGraphicsScene() scene.setStickyFocus(True) for y in range(10): for x in range(10): proxy = CustomProxy(None, Qt.Window) proxy.setWidget(EmbeddedDialog()) rect = proxy.boundingRect() proxy.setPos( x * rect.width()*1.05, y*rect.height()*1.05 ) proxy.setCacheMode(QGraphicsItem.DeviceCoordinateCache) scene.addItem(proxy) scene.setSceneRect(scene.itemsBoundingRect()) view = QGraphicsView(scene) view.scale(0.5, 0.5) view.setRenderHints(view.renderHints() | QPainter.Antialiasing | QPainter.SmoothPixmapTransform) view.setBackgroundBrush(QBrush(QPixmap(':/No-Ones-Laughing-3.jpg'))) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.show() view.setWindowTitle("Embedded Dialogs Demo") sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/embeddeddialogs.qrc0000644000076500000240000000013212613140041026452 0ustar philstaff00000000000000 No-Ones-Laughing-3.jpg PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/embeddeddialogs_rc.py0000644000076500000240000037126612613140041027024 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 16:12:39 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x78\x0a\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\ \x01\x00\x00\xff\xdb\x00\x43\x00\x05\x03\x04\x04\x04\x03\x05\x04\ \x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\ \x09\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\ \x1a\x15\x11\x11\x18\x21\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17\x22\ \x24\x22\x1e\x24\x1c\x1e\x1f\x1e\xff\xdb\x00\x43\x01\x05\x05\x05\ \x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xfe\x00\ \x13\x4e\x6f\x20\x4f\x6e\x65\x27\x73\x20\x4c\x61\x75\x67\x68\x69\ \x6e\x67\xff\xc0\x00\x11\x08\x02\x00\x02\x00\x03\x01\x22\x00\x02\ \x11\x01\x03\x11\x01\xff\xc4\x00\x1a\x00\x00\x03\x01\x01\x01\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03\x04\x01\x05\x00\ \x06\xff\xc4\x00\x3e\x10\x00\x02\x01\x03\x03\x02\x04\x03\x07\x02\ \x05\x04\x03\x00\x03\x01\x01\x02\x00\x03\x11\x21\x04\x12\x31\x41\ \x51\x13\x22\x61\x71\x05\x32\x81\x14\x23\x42\x52\x91\xa1\xb1\xc1\ \xd1\x06\x24\x33\x62\xf0\x15\x43\x72\xe1\x25\x82\xf1\x34\x53\x63\ \x92\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x05\x06\xff\xc4\x00\x20\ \x11\x01\x01\x01\x00\x03\x01\x01\x01\x01\x00\x03\x00\x00\x00\x00\ \x00\x00\x01\x11\x02\x21\x31\x41\x12\x51\x61\x13\x32\x42\xff\xda\ \x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xb0\x55\x5d\xa2\ \xbd\x7a\x8c\xf7\xf9\x43\x1c\xb7\xfe\xa0\x3e\xb3\x51\xb8\x9a\x75\ \xdd\x7d\x15\xac\x27\x3b\x53\x55\xab\x55\x2d\xc0\x18\x50\x0e\x00\ \x80\x2a\xe6\xdc\xcf\xa4\xfc\xbc\x7d\x75\x06\xbb\x52\x00\x1f\x68\ \xab\x8e\x2e\xc6\x2c\xeb\xb5\x04\xff\x00\xfc\x87\xbf\x5b\x99\x1a\ \xd4\xb8\xc1\xb5\xbb\xcc\x35\x0f\x18\x96\x45\xae\x82\x6b\x75\x24\ \xe5\xc3\x5b\xba\x83\x3d\x57\x58\xc0\x10\x52\x91\xf7\x41\x20\xb9\ \xd9\x8f\xd0\x4c\x2d\x71\xce\x65\x91\x6a\xaf\xb4\xa1\x37\x6d\x35\ \x3b\xf5\xb1\x22\xf3\xa1\xf0\x7d\x55\x0a\x75\xc0\x08\xe9\x7f\xf7\ \x5c\x4e\x0d\xcd\xfb\xc6\xd2\xaa\x55\x83\x29\x00\xca\xf1\xd8\xa5\ \x75\x7e\x23\x41\x69\xea\x59\x4b\x85\x24\xdf\x22\xd2\x66\xa3\x51\ \x46\xe2\x2e\x3b\xae\x65\x9a\xa6\x1a\xdf\x87\x25\x71\xfe\xad\x2c\ \x3f\xb4\xe7\x0a\xcc\xb6\x28\xc4\x11\xce\x61\xc7\x70\xd7\xa2\xd9\ \xf6\x37\x38\x38\x30\xcd\x64\x6f\x9b\xca\x4f\x51\x27\xae\x08\xc9\ \xc8\x3d\x44\xd3\x2c\x5a\x86\x9d\x43\x6c\x83\xfb\x88\x65\x55\xbe\ \xf2\x9f\x1d\x47\x69\x38\x3b\x96\xdd\x47\x10\xe8\x54\x2a\x6e\x0f\ \x31\x4a\x2b\xe4\xa8\xfc\xaa\x3a\xc2\x57\xc8\xb0\xb1\xe6\xd3\x35\ \x2b\x77\x0e\x9d\x40\xb8\xed\x06\x91\xcd\xb8\x82\x5f\xa9\x01\xe8\ \x6e\x27\x80\x64\x74\xcb\x5b\x9b\x5e\x55\x4f\x3a\x6a\x88\x79\x59\ \x2a\x60\xc2\x15\x14\x89\x22\xe7\x31\xc9\x6b\x5c\x88\x14\x96\xcb\ \x68\xdb\x7e\x93\x34\xc6\xd9\x67\x98\x29\x1c\x40\xbd\x8c\xdd\xc2\ \xd7\x81\x22\xa1\x0a\xc0\x82\x62\x2a\x6d\x2c\x19\x70\x7a\x88\x75\ \x9b\x24\xde\xf2\x75\x27\x75\xf8\x1d\x66\xe3\x2e\xca\xb0\x1f\xe1\ \x6a\xb7\x3c\xd4\x13\x82\x48\xb9\xf5\x9d\x6d\x43\xff\x00\xf0\x01\ \x6d\x60\xd5\x70\x3d\x27\x11\xb9\xdc\x3b\xcb\x8c\xf5\x72\x1f\x0a\ \x2d\xde\x30\x5c\xd2\x6b\xf7\x8a\xcc\x65\xfe\xec\xdb\xbc\xd3\x21\ \xb6\x26\x15\x33\xd0\x94\xf4\x92\x60\xbc\x60\x24\x75\x9e\x84\x82\ \x09\xa1\xd8\x0b\x03\x09\x4a\xb1\xb3\x2e\x7b\x83\x30\x00\x27\xb6\ \x5c\xc8\x9b\x4d\x14\xe3\x71\x1e\xe2\x3d\x29\x2d\xef\xe2\x0b\x4c\ \xd3\xd0\x7d\xa7\x95\xbf\x53\x88\xf5\x45\x16\xdc\xfb\xbd\x04\xcd\ \xad\x48\xf5\x35\xa7\xbb\x24\x9f\xda\x74\x6b\xdc\xba\xd8\x58\x05\ \x03\x8f\x49\x25\x30\xb7\xc0\xfd\x65\xe0\x78\xb4\xd4\xf2\xc0\x5a\ \xd3\x9d\x6a\x14\x94\xcb\x35\xee\x4f\x6b\xce\xa6\x9a\x92\xe9\xa9\ \x0a\xd5\x16\xee\x7e\x45\xfe\xa6\x2b\x49\x48\x51\x5f\x1e\xaf\x17\ \xf2\xaf\x78\x75\x6a\x35\x66\x2c\x79\xeb\x31\x6e\xb5\x3a\x26\xb6\ \xfa\x8e\x5d\xdb\x26\x79\x54\xe2\xec\x2d\x35\xb2\x05\xe1\x26\x40\ \x02\x48\x0c\xb7\x3c\x88\x02\x8d\x42\x40\x51\x72\x78\xb4\xa8\x53\ \xbb\x5c\xe7\xd2\x31\x17\x6b\x82\x71\x6c\xd8\x4b\x56\x25\x34\x08\ \x5b\x31\x04\xfa\x18\xdd\x3e\xa0\xa9\x14\x8d\x22\x47\x17\xea\x22\ \x4a\x8f\x99\x14\x93\x7e\x4c\x65\x7a\xc3\x4f\x48\xd4\xa8\x6e\xe3\ \x85\x92\x67\xc5\xd6\xa3\x52\xf0\x29\x10\x0d\xfc\xcd\x7b\x5c\x4e\ \x30\xd1\xb2\xdc\x3d\x4a\x40\x11\xf9\xa6\xd7\xaa\xf5\x77\xb3\x31\ \xbb\x5f\xaf\x79\x25\x67\x0a\xa8\x73\x7b\x4e\x9c\x65\xf1\x9b\x75\ \x76\x87\x4b\x4e\x85\x52\xff\x00\x6c\x40\xa4\x00\x76\xe7\xae\x27\ \x67\x4a\x74\xa0\x55\xaf\xa7\x0a\xd5\x4e\x49\x61\x80\xd6\xe7\xf5\ \x9f\x28\xb5\x0d\x36\x65\xb6\x09\xc4\xae\xbd\x71\x42\x92\x57\xbd\ \xae\x6e\x00\x3d\x47\x3f\x49\x72\xe3\x6a\x97\x09\xd7\x5e\xaa\x3b\ \xb1\xbb\x30\x0f\xf5\xeb\x12\x08\x2b\x44\x8f\xc4\x85\x7d\xc8\x38\ \xfe\x6d\x1f\x57\x69\xfb\xc5\xf9\x41\xb7\xba\xb7\x07\xfe\x77\x91\ \x3d\xc5\x0a\x89\xc3\x52\x7d\xe3\xdb\x83\xfd\x26\xe3\x35\x8c\xde\ \x0d\x71\xb3\x28\x7c\xc0\x5f\x99\x7f\xc6\x9c\xfd\xb8\xb8\xe1\xe9\ \xa9\xb7\xd3\xb4\xe6\xd7\x7f\x2f\x88\x54\x1a\x6c\x72\x2f\xf2\xb7\ \x5b\x7b\xcb\x3e\x25\x53\xc6\xf8\x7e\x8f\x58\xab\x85\x5f\x09\xbd\ \x08\xe2\x5f\x60\x9e\x25\x14\x52\xa9\x3e\x1b\x6d\x6e\xc6\x26\xa6\ \x89\xd5\x88\x74\x36\xee\x05\xe5\x6c\x12\xaa\xd3\xaa\xa3\xcc\x70\ \x56\xf6\xfd\x26\x2d\x57\x56\x22\x9d\x52\x2d\xc8\x6e\x91\xda\x92\ \xe9\x74\xcd\x53\x55\x49\x14\xdf\x73\x01\xce\x67\x53\xfc\x4c\xf5\ \x3f\xea\x95\x9d\x37\x2e\xc7\x0a\x2d\xe8\x00\x89\xd3\xea\xda\x86\ \xa6\x9d\x4a\xa9\x4d\xac\xc0\xdc\xa8\x3c\x1e\xf3\xb5\xf1\x47\xa6\ \x3e\x21\x51\x2c\x08\xa8\x9e\x20\x3c\x83\x33\x6d\xd3\x27\x4f\x98\ \xaf\x59\x6b\x5b\xed\x1a\x60\xd8\xbe\xe4\xc1\x8a\xa5\x4a\x82\xd4\ \x0f\x47\x50\x52\xc7\x8a\x8a\x47\xf1\x3b\xaa\xda\x7a\x94\x95\xdb\ \x45\x48\x82\x6d\x63\x71\x7f\xd0\xc9\x3f\xc4\x54\x74\x54\x3c\x25\ \xd3\xa7\x87\x58\x8b\xd4\x40\xc4\x85\xed\xf5\x8c\xbd\xe0\xb3\xe9\ \x02\x8e\xb8\x1d\xb4\x6b\x25\x45\x3f\x2d\xaa\x8c\xfe\xa6\x0a\x8d\ \x42\x56\xa9\xa6\xd4\xab\x23\x6d\xbe\xd3\x16\x8d\xe1\x20\x0f\x66\ \xab\x6b\xa0\x39\x0b\x27\x4a\xae\xda\x9f\x12\xa3\x12\xdd\x49\x9a\ \xc0\xac\x1a\x29\x54\x35\x70\xc6\xca\x2d\x6e\xb2\xca\x5a\xe4\x5a\ \x61\x69\x22\xd3\x37\xbe\xe0\x2e\xdf\xa9\x91\x6a\xd1\x7c\x95\x71\ \x91\x6f\xd2\x6e\x8e\x9a\xbd\x4f\x31\x01\x00\xdc\xc7\xd2\x16\x1d\ \x46\x49\x51\x83\x06\xf7\xf3\x1c\x43\x24\x00\x73\x33\x01\x07\xaf\ \x33\x4c\xbc\x1a\xdc\xf1\x35\x58\x1e\xb1\x64\x83\x32\xf9\xe2\x49\ \x4a\xb0\xb6\x0c\xf0\x60\x4f\x17\x89\x56\xe9\xfa\x4f\x33\x10\x71\ \x24\x61\x60\x0e\x26\xa3\x67\x20\x44\x96\xbf\x59\xb4\xce\x09\xbf\ \xa0\x92\x75\xfe\x0b\xaa\x4a\x7a\x91\x4a\xa1\xfb\xaa\x9e\x56\xcc\ \x57\xc4\x68\x36\x97\x56\xf4\x4f\x03\x2b\xea\x24\x09\x70\xdd\xbd\ \x67\x66\xa1\x3a\xff\x00\x85\x0a\xbc\xd7\xd3\x61\xbb\x95\x99\xb3\ \x2e\xb5\xec\x72\x5c\xe3\xbc\x15\xa8\x54\x77\x07\xa1\x9a\x6f\x6c\ \xfd\x22\xdb\xe5\xf6\x9a\x64\x45\x41\x37\x4e\x7b\x4c\xfc\x5b\x80\ \xf7\x8b\x18\xcf\x58\xd4\x60\x5a\xcd\x83\x24\xab\x7d\x8a\xbf\x75\ \xcd\xe7\x98\x00\x55\x94\x8d\xa7\xf6\x82\xcb\xfe\x5c\x13\xf8\x5b\ \x3e\xc6\x2e\x91\xf3\x77\x53\xcc\x0a\xed\x3b\x79\x85\xff\x00\x10\ \xb4\x48\xb8\x36\x3d\xe1\xa8\x28\xca\x2e\x2c\x00\x20\xcf\x56\xf2\ \xd6\x71\xeb\x02\xa6\x8b\x8d\xa2\xf1\x9b\x87\x79\x0a\xbe\xde\xb0\ \xd6\xaf\x78\x61\xd5\x24\xde\x2e\xab\x81\x71\xd6\x07\x89\xe9\x14\ \x49\x66\xc7\x26\x52\x0d\x7b\x6e\xf6\xcf\x03\x26\x4f\x59\xae\xd6\ \x5c\x28\xe2\x51\x58\x10\x3c\x31\xf5\x3d\xe4\xae\xa4\x1e\x26\xa0\ \xae\x8e\xac\xff\x00\xf0\xda\x65\x07\xf1\x1f\xe4\xce\x49\xb9\xb8\ \x9d\x3a\xa8\x5f\xe1\x54\x6e\x78\x6f\xef\x21\x2a\x00\x25\x4d\xc4\ \xb8\xaa\x11\x90\x00\x8d\x44\x25\x2d\x15\x4c\x82\xd6\x94\x21\x00\ \x5b\x16\x8d\x40\xf0\x49\x3c\x8f\xd6\x18\xd3\x38\x22\xe4\x47\x0b\ \x0f\x36\xd0\x7d\xf8\x8e\xa5\x52\xa5\x43\xb3\x70\x0b\xd8\x0c\x42\ \xd3\x89\xd7\x4e\xe7\x93\x6f\x78\xfa\x3a\x36\xa8\x76\xab\x0b\xc7\ \x84\xa6\x2f\xb4\x5b\xd4\xc2\x5a\xce\x84\xec\x3b\x07\x70\x26\x34\ \xe1\xc7\xe1\x06\x95\x2f\x12\xab\x80\x3b\x0e\x64\xf6\x54\xc5\x30\ \xaa\x3b\xf2\x65\x14\x9a\xb5\x70\x40\x27\x6f\x73\xc4\x55\x52\xaa\ \xc4\x2d\x98\x8e\xa7\xfb\x43\x6f\xd2\x04\x52\x4d\xd9\xaf\x1a\xb4\ \xcd\xf8\x82\x8e\xc7\xbf\xe9\x1b\x4d\x98\xb5\xb2\x64\x8c\xa7\x4c\ \x92\x2c\x27\x4b\x47\x40\x8f\x3b\x82\x15\x7f\x79\xed\x0e\x99\xaa\ \x58\x8c\x7a\x4b\xaa\x02\xb6\x43\xc0\xe9\x39\xde\x5f\x1b\x91\x33\ \xb7\x8a\x7c\xc2\xc0\x70\x27\x96\x8b\x03\x71\x28\x08\xc7\x37\xb0\ \xef\x0c\x10\xa3\x17\xf7\x99\xd3\x89\x8d\x22\x79\x84\x86\x8a\x1c\ \x00\xc7\xde\x6b\x30\x6f\x29\xe0\xc0\xf0\xc0\x37\x19\x92\x3b\xc4\ \x24\xe1\x40\xf6\x98\xe0\x6d\x26\xf6\xe9\x02\xcd\xde\xd0\x1d\xf6\ \xf3\x99\x22\xcd\x42\xa6\xca\x2c\x7a\x4e\x6e\xb8\x9a\xb5\x0d\xdb\ \x8e\x65\xac\xe4\xab\x37\x6e\x27\x37\x50\xce\x01\x05\x7d\xe6\xf8\ \xb3\x53\xb1\xb5\x85\xfd\x24\xf5\xbc\xd4\xc7\xa1\x36\xfa\xc6\x39\ \x2c\x6c\x17\x37\xc4\x6b\x68\xeb\x14\xc0\x00\x9e\x93\xa4\xe9\x84\ \x56\xfb\xb5\x39\xc7\x58\x55\xaa\x0a\x84\x53\x7c\x28\xe3\x1f\xbc\ \x16\xa6\xd4\xcd\xaa\x2d\xbd\x26\x3b\x52\x57\x20\xdc\xb7\x49\xa0\ \xbb\x47\x4c\xd4\xa0\x29\x8f\x30\x2a\x50\x9f\x4e\x87\xe9\x21\x23\ \xef\x83\x31\xe7\xca\xff\x00\xc1\x8e\xd2\x6a\x9b\x4f\x55\x5a\x9a\ \x80\x3b\x77\x89\xd5\x37\xde\x39\x55\xb0\x63\x71\xe9\x09\x3b\x4c\ \x54\xa3\x49\x5a\x8d\x47\x39\xf2\xb8\xb5\xef\xd8\x89\x57\xc3\xe9\ \xa7\x85\x5b\xe1\xcd\x77\x0e\x37\xd2\x27\x82\x47\x69\x15\x45\x35\ \xa9\x06\x19\x75\xc1\xb7\x5e\xc6\x16\x92\xbf\xd9\xea\x27\x88\x72\ \x8d\x75\xb7\x20\xc6\xc5\x08\x63\x52\xa3\x6d\x38\x0b\x8e\xc1\x61\ \xb0\xb8\xda\x8c\x19\x80\xb5\xfb\xca\xfe\x35\x42\xf5\x16\xbd\x2b\ \x78\x35\xfc\xe2\xdd\xfa\xc8\x86\xda\x62\xc3\x2f\xd2\xd1\x97\x45\ \xe9\xe0\xb6\xa6\x03\x5c\x00\x6f\xee\x67\x5f\xe2\x6f\xbf\x49\xa0\ \xd4\x5e\xf7\x4d\xac\x3d\xa7\x1a\xa3\x6e\x21\x98\xdc\x9c\xda\x75\ \xf4\x8e\x95\x7f\xc3\xb5\x1a\xa0\x2f\xe0\x54\x0e\x2f\xd6\xf8\xb7\ \xb4\xcf\x2f\x94\xc2\x35\x1a\xa3\xa7\x0b\x5c\x0f\xbc\x71\xe4\x1f\ \x97\xd6\x73\xaf\x62\xd5\xea\xf9\xbf\x2d\xfa\x98\xa7\xac\xd5\x9d\ \xbc\x43\x76\x63\x7b\x9e\xf0\xd8\x82\x05\x2e\x0a\x8f\xde\x6a\x4c\ \x1a\x43\x12\xcc\x58\x93\xba\xf7\xbc\x36\x1e\x22\xef\x1f\x30\xf9\ \x84\xc0\x2c\x70\x23\x13\xc8\x77\x08\x85\x79\xad\xa0\x04\x5f\xca\ \x6f\xfc\x40\x27\x66\x88\x81\x86\xa8\x6d\x8e\xc2\x3f\x47\xb0\x6e\ \x51\x73\x4e\xa8\xb0\xb7\xe1\x6e\xc6\x23\x5f\xf7\x6b\x46\x9d\x8d\ \xd5\x2f\xfa\x98\x7f\x8d\x25\xa8\x00\x18\x31\x6f\x84\x07\xd6\x16\ \xa6\xea\x08\xe4\xc4\x8b\x9a\x66\xdd\x3d\x62\xc8\x49\xce\x21\x83\ \x71\x6e\xb1\x4b\xba\xf0\xd4\x8b\x08\x44\x31\xc4\xf5\xee\x3d\x60\ \xf3\x88\x40\x11\xd3\x11\x4d\x50\x4f\x31\xeb\x4d\x40\x17\x88\xf1\ \x2c\x71\x8f\x58\x75\x49\xdc\x2e\x7a\x49\x1e\x19\x2d\x8e\x44\xbb\ \xe1\x5a\xe4\xd3\x6a\x43\x3a\xdd\x0f\x95\xc7\xa1\x9c\x94\x2b\x7c\ \xb1\x87\xb9\x09\xc1\x30\xb3\x4c\xb8\xbf\xe2\x94\xa9\x69\xf5\x6c\ \x8a\x3c\x87\x2a\x47\x50\x64\x8e\x88\x5b\x07\x06\x57\x75\xd5\xfc\ \x33\x39\x7d\x3f\xee\xa6\x44\xa0\x60\x06\x94\x55\x8d\x48\x83\x83\ \x71\xd2\x0e\xc3\xbb\xd2\x69\x7d\xac\x6c\x6f\x09\x6b\x92\xb6\x20\ \x5a\x20\xda\x2e\x18\x35\x12\x70\xf8\x1e\xfd\x20\xad\x36\x0f\x66\ \x04\x01\x30\x14\x60\x6f\x82\x0c\x73\xef\x74\x1f\x78\x59\x60\x46\ \x95\x37\xdd\x4f\xff\x00\x59\xed\x41\xb9\x46\xee\xbf\xfa\x93\xb0\ \x64\x20\x11\x68\xf7\x3b\xe8\x2b\x7e\x56\x20\xc9\x04\x03\x6e\xc2\ \x12\x91\x07\x24\x5a\x78\x5e\xf2\x46\x5f\xac\xca\x75\x00\xa8\x09\ \x03\x99\x80\x6e\x10\x48\xb6\x4f\x32\x26\x6a\xc1\xf1\x48\x8b\x03\ \x78\xb7\x5e\x91\xda\xa0\x59\x52\xaf\x71\x12\xac\x05\xbb\x88\x40\ \xa1\xc9\xff\x00\xa4\x81\xd9\xed\x20\x43\xb5\x89\x3c\x75\x13\xa9\ \x8a\xbf\x0c\xa9\xd0\xab\x5c\xff\x00\x79\xcb\x36\xb9\x8c\x54\x25\ \x7c\x3a\xb7\xb5\xc7\x78\xc4\x62\x48\xe9\x08\x59\xe8\x9b\x8f\x32\ \xf1\x16\x14\xdc\x45\x28\x04\x95\x00\x9f\x49\x7e\x91\x07\x85\xcf\ \x3c\xce\x6d\x2b\xf0\x71\x3a\x3a\x57\x1e\x5e\xd6\xcc\xcf\x23\x07\ \x54\xa9\x63\xd1\x47\x03\xd6\x65\x20\x19\xf6\x1f\x94\x65\xa7\x89\ \xbd\x43\xe9\x98\x0e\xdb\x34\xe2\xe6\xcd\x50\xdc\xfb\x4c\x95\x9a\ \x5a\xa6\xa3\xbf\x86\x46\xd5\x43\xb4\x76\x93\x2e\xe2\x73\xfc\x45\ \x69\x2a\x78\x75\x81\x5b\x8e\xf9\x96\x55\x1e\x27\x00\x21\xf4\xeb\ \x0b\x32\x90\x0b\xf6\x95\x69\xc7\x0c\x4d\xa2\x69\x96\x07\x6b\x08\ \xec\x91\xc8\xb0\xe9\x05\x1d\x2d\x36\xa4\x0c\x2d\xc0\xe2\x5a\xac\ \x0a\xee\x6b\xda\x72\xb4\xe2\xc4\x16\xe4\xf4\x95\x2d\x70\x5a\xd7\ \xf2\xce\x76\x37\x2a\xc2\xe0\xf1\xc7\x68\xb6\x6b\xc4\x35\x4d\xa6\ \xc3\x33\xc1\xcd\xa1\x87\x44\xc0\xdc\x66\x36\xe1\x46\x06\x7b\xc5\ \x03\x9b\xf5\x99\xbb\xc8\x49\x92\x30\xb8\xeb\xcf\x79\x3d\x7b\x35\ \xb3\xe9\x13\x52\xa3\x13\x32\x8b\x10\xe0\x93\x8b\xe6\xf1\xc1\xa0\ \xd5\xd5\xd8\x82\x9d\x3c\x66\xe7\xd6\x73\x35\x0e\x58\xdc\x93\x79\ \x6e\xb1\xd5\x99\x95\x70\x41\xb7\xbc\xe7\xd4\x06\xe7\xa4\xe9\xc5\ \x8a\xdd\x13\x05\x77\xaa\x72\x29\xa1\x61\xef\xd2\x25\x2b\x3b\x12\ \xcc\xcd\x7e\xf1\xd4\x17\x6d\x3a\xe4\x70\x53\xfa\x89\x15\x5a\x97\ \x20\x70\x07\x00\x4d\xc0\x65\x6a\xcf\x55\x7c\xcd\xb8\xae\x01\x32\ \x46\x3b\x8e\xee\xbd\x63\x1c\x92\xe1\xfe\x86\x61\xb2\x9f\x59\xa1\ \x4e\x74\x52\xab\xe1\xdf\x76\xd0\x48\xef\xed\x05\x54\x35\xd1\xcd\ \xd8\x9c\x4c\x2c\xc6\x88\x61\xf8\x4d\x8f\xb7\x48\x92\x08\x20\xde\ \xc6\x08\xda\x6c\xd4\xea\x10\x17\xc8\x45\x98\x09\x95\xb4\xf6\x6c\ \xb0\x27\xa1\x1d\x60\x1a\xad\xb8\x93\xd7\x98\xda\x6f\xe2\x8f\x0b\ \x1b\xc7\xca\x7f\xa4\x42\xbf\x87\xd4\x6a\xd4\x5b\x41\x59\x30\xdf\ \xe9\x13\xf9\xbf\xf7\x22\xab\x41\xa9\xb1\xec\x0f\xcb\xd4\x18\x5e\ \x21\x5b\x03\x80\xbf\xb4\xab\x59\xfe\x62\x88\xd5\x53\x37\x6c\x0a\ \x83\xd7\xbc\x3c\xa5\xc7\xa8\x19\xaa\x05\x1c\x93\x69\xdb\xf8\x75\ \x41\xe3\x9f\x85\x9f\x92\xa5\x16\x42\x4f\x56\xe6\xf3\x9f\x45\x00\ \x7f\x11\x96\xc5\x05\xf8\xeb\x05\x0d\x5a\x5a\x9a\x75\xc6\x4a\x9d\ \xc0\xfd\x65\x7b\x13\xa4\x9b\x36\xd6\x28\xe0\x82\x0e\x7e\x90\xef\ \xbf\xef\x3f\x10\xf9\xbf\xbc\xe9\x7c\x6f\x4c\xab\xad\x3a\x8a\x6b\ \xe4\xac\xbe\x20\xfa\xf3\x39\x8a\x76\x36\x17\x3f\xcc\xd4\xbb\x15\ \x98\x32\xa1\x97\x70\xe7\xac\xf2\xf1\x62\x38\x8c\x5b\x0b\x1b\xf9\ \x4f\x1e\x90\x99\x70\x4a\x0c\x75\xf4\x86\xa3\x3e\x1d\x50\xd3\xae\ \x05\x83\x23\x7c\xca\x66\xfc\x58\xd3\xaf\x59\x2b\x53\x04\x53\x2b\ \x61\xdc\x5a\x05\x3f\xb9\xa2\xd5\x1b\xe7\x61\x65\x1f\xd6\x6e\x9f\ \x6d\x5a\x6c\x97\x00\xf2\x3d\xe1\xf7\x57\xf8\x46\xa2\x91\x77\x2c\ \x49\x3e\xc2\x4e\x69\x94\x3f\x23\x89\x66\x9a\x95\x1f\x05\xcd\x4f\ \x35\xec\x01\xbd\x8a\xcc\xa9\x4e\xe0\xd3\x73\x67\xb7\x91\xba\x34\ \x75\x22\x6b\x7f\xfd\x5f\x58\x00\x8d\xd6\xd9\x6f\xa4\xda\x8c\xe8\ \xdb\x4f\x4e\x62\xcb\x9b\xfc\xc4\x44\x1b\x71\xf9\xbf\x68\xb6\x3b\ \xbf\x14\xf3\x54\x21\x41\x9a\x2b\x5c\x65\x10\xfd\x20\x40\xbc\xf4\ \x8d\xaa\x18\xb9\x1e\x93\x29\x9a\x6e\x72\x96\xf6\x31\xb5\x7c\x3f\ \x16\xca\xc4\x7b\x89\x22\x91\x48\x39\x8c\x5b\x9c\xda\x68\x05\x6e\ \x46\x47\xa4\x30\x40\xe5\x79\x88\x37\x41\xa8\xf0\x6b\x86\x20\x15\ \xe1\x87\x70\x66\x6a\xd3\xec\xda\x82\x9d\x2f\x70\x7d\x3a\x44\x82\ \xa4\xe2\x53\xa8\xb5\x5d\x0d\x2a\x9d\x51\x8a\x1f\xe4\x48\xa3\xa8\ \x0e\xec\x5e\x78\x13\xc5\xa1\x58\x15\xe7\x89\xa8\x80\xf0\x64\x1a\ \x2c\x54\x9e\x0d\xa3\x28\x39\x02\xc4\xc5\x22\x9b\x8f\x78\xe5\xa2\ \xd9\xf7\x91\x3a\x93\x0a\xb6\x57\xfa\x4b\x68\x69\xd5\xb4\xec\x3f\ \xdc\x2f\x20\x08\x6f\x71\xd6\x74\x34\xdb\x97\x4d\x91\xc9\xe6\x66\ \x98\x4b\xe9\xdd\x4e\x44\x4b\xa9\x18\x9d\x21\x53\x72\x2b\x1f\x63\ \x31\x92\x9b\xf4\x10\xfd\x1c\x40\x38\x99\x69\x4b\xe9\xae\x70\x62\ \xde\x99\x51\x91\xfa\x47\x40\xe9\xa8\xab\xa7\x65\xea\x38\x12\x2a\ \x8a\x41\xed\x2b\xd3\x36\xda\x96\xe8\x60\xeb\x69\xda\xa1\x23\x83\ \x2f\xaa\xb7\x46\xdf\x71\x50\x7a\x62\x43\x54\x67\x7a\xfc\xa7\x91\ \xda\x5b\xa4\x5f\x23\x8f\x49\x35\xba\xda\xe3\x83\x28\x03\x4f\x91\ \x68\xd3\x4e\xd5\x08\xe4\x74\x8b\x6a\x79\x0c\xbc\x4a\x12\xcd\x4c\ \x13\xc8\xc5\xe2\x8b\x34\xc8\x96\x68\xac\x45\x35\x6e\xb8\xbc\x9c\ \x83\x6b\xf6\x11\xf4\x73\x44\x1f\xca\xd6\x85\x30\x75\xee\x86\xa8\ \x1c\x8b\x0c\x44\xeb\xae\x1d\x50\x7e\x05\x02\x50\x53\x73\xd8\x93\ \x96\x58\x9d\x48\xdd\x54\x93\xd4\xc2\x12\x29\x83\x7e\xbf\x49\x6d\ \x27\x2e\x6c\x44\x4d\x15\x40\x3e\x61\x73\x28\xa6\x96\xc8\x06\x55\ \x45\x14\xc9\xc2\x91\xbb\xfa\x46\x12\x14\xe3\x2d\xdf\xa0\x8a\x5d\ \xd6\xb0\x16\x1d\xe3\xa9\x8a\x40\x8d\xcf\x71\xd4\x4c\x34\xa2\xfb\ \x06\xd3\x86\x22\x2b\xc5\x20\xd8\x0b\x46\xd6\xa9\x40\xa0\x74\xbb\ \x5b\x99\x3f\xda\x54\x9b\x2a\x00\x7b\x99\x98\x94\x25\x46\x6e\xb1\ \xe9\x50\x28\xc8\xcf\x41\x21\xa5\xbd\x89\x62\x0e\x3b\x75\x8f\x00\ \x91\xb9\xda\xc7\xb4\xac\x27\x9a\x97\x37\x27\xe9\x03\x79\xbe\x0d\ \xaf\x17\xbb\x04\x05\xfa\x93\x16\xc4\x83\xd2\xd0\xc5\xad\x7a\xaa\ \x1a\xd6\xfa\xc4\xb5\x40\x4f\xcd\x02\xbf\xcc\x6c\xc2\x24\x15\xb6\ \x5a\xf3\x72\x0d\x16\xa0\xee\x3b\xc0\xe7\xb4\x4b\x39\xe1\xf8\xe9\ \x18\x1d\x32\x09\xc1\x8b\x62\x41\xb3\x73\xed\x18\x05\xa6\x50\x5e\ \xdc\x86\x05\x7f\x69\xcf\xad\x4f\x69\xdc\xc6\xc2\x58\xf5\x05\x32\ \x19\x79\xe6\x06\xb7\x63\x3d\x98\x58\x37\x99\x48\xcc\xd4\x15\x2a\ \xd4\x46\x52\x9c\x1e\xf1\x77\x61\xe4\x03\x3d\xfb\x46\xad\x1d\xae\ \x1b\x8f\x59\x9a\x8d\xa4\x02\xa4\x81\xd7\x13\x4c\x82\x8d\x45\xa6\ \x4a\xb6\x55\x85\x8c\x1a\x98\x25\x48\xc8\x38\xb4\x1b\x28\x17\x27\ \x3d\xa1\x2d\xde\xc2\xe0\xb0\xfd\xc4\x91\x64\xb1\x3c\xc3\x4e\x45\ \x8d\x8c\x5d\x45\xda\xe7\xcc\x09\x13\x51\xbc\xd7\xbc\x52\x8a\xb6\ \xa9\x76\x1f\xea\x0f\x98\x7e\x69\x9a\x3d\x46\xc6\x20\x8c\x30\xb3\ \x03\xd6\x28\x36\x6e\x18\x02\x38\x37\x9a\xd4\xfc\x51\xbd\x6c\x08\ \xe4\x5e\x18\x97\xd4\x5d\xa8\x56\xc1\x95\x8d\xc1\x3c\x5a\x4d\xab\ \xd9\xbd\x3c\x20\xc5\x6d\x6b\xfa\xc7\xa5\x8e\x92\x9d\x1a\x9f\x88\ \x9b\x1b\xf0\x62\x4d\x26\x50\xca\x41\x57\x53\x62\x0c\x21\x74\x11\ \x57\x53\xf0\x80\x0b\x5d\xe8\x1c\x9f\x43\x39\x4d\x44\x13\xf3\x28\ \x3e\xb2\xff\x00\x83\xb8\x4d\x57\x83\x50\x59\x2a\x8d\xad\xdb\x30\ \x75\x3a\x72\x8e\xf4\x9f\x95\x36\x10\x9d\x5c\x57\xb8\x92\x95\x36\ \x0d\xb4\xb2\x15\x38\x22\xf2\xa3\xa6\xf0\x18\x5c\xab\x93\x81\x7c\ \x08\x84\x52\x8a\xe4\x8f\x30\x16\x17\x9b\x41\xd9\x41\x56\x63\xb4\ \xfa\xf1\x1a\x85\x5b\x4f\xbc\xee\xf1\x01\xef\x9e\x22\x45\x11\x4d\ \xc3\x2d\x65\xba\x9b\xe0\x47\x33\x14\x22\xe1\x58\x1e\x08\x1c\xc4\ \xd7\xa7\x4c\xa9\x65\xdd\xea\x39\xb4\xa2\x1d\x6a\x43\xc3\x08\x82\ \xcc\x4d\xd8\x46\xea\xf4\x9e\x05\x2f\x2d\x5f\x15\x40\x1b\xc5\xac\ \x50\xfa\x41\xa2\x84\xea\x55\x97\x76\xd2\xd7\xbd\xff\x00\x98\xe6\ \xac\x8e\xe5\x94\x80\x59\xb3\x71\xd2\x5d\xa7\x22\xba\x87\xb0\xa8\ \x45\xff\x00\x0b\xf7\xf7\x91\xd5\x4d\xa4\x83\x70\x47\x79\xd4\xd6\ \x52\xd8\xc5\x91\x43\x52\x6e\x45\xe4\xcc\x88\xc9\xb6\xa0\x6d\xb6\ \xf2\xbf\x63\xd8\xc4\x22\xb1\xb4\xcc\xc6\x55\xa2\xc8\xfb\x4f\x31\ \x7b\x5a\xfc\x1f\xa4\x90\x93\x19\x1d\xe5\x15\x40\x2c\x0f\x5b\x45\ \x52\xc1\xbd\xaf\x29\x7d\x8c\x88\xd6\xda\x78\x8a\x29\x4d\x80\x3c\ \x46\x87\x0c\x2c\xd8\x3d\xe0\x32\x5d\x01\x53\x00\x92\x05\x88\x90\ \x1b\x0b\x19\x46\x9d\xb7\xe9\x6b\xa1\xe8\x03\x0f\xa1\x92\xee\x24\ \x58\x9f\x68\xef\x87\xb5\xf5\x1e\x19\x36\xde\x0a\x9f\xa8\x95\x20\ \x00\x5b\x06\x66\x46\x44\xcc\xab\x11\xd6\x12\xbd\xb9\x12\x0d\x42\ \x71\x2a\x0c\x40\xdc\x3f\x48\x84\xd8\x7f\x37\xb4\x72\x9b\x93\x7e\ \x25\x4a\xad\x3b\x53\x71\x67\x6d\xb6\x37\xe2\x5a\x1d\x41\x54\x5c\ \x80\x3f\x79\xcc\xa4\x0a\x38\x63\xc0\x95\xd0\xf3\x54\xbd\xfc\xdc\ \x91\x31\x61\x8a\xa9\x94\x6b\x8b\x0c\xcf\x59\x6d\xda\x46\x1c\x06\ \x39\x20\x83\x1a\xee\x6c\x1c\x64\x1e\xd0\xc3\xaa\x00\x07\x83\x31\ \xe9\xf1\x71\x26\x5a\xc2\xfd\xa3\xa9\xd7\xfa\xc3\x2a\x05\x4a\x16\ \xc8\x16\x33\x6a\x53\x35\x28\x90\x79\x1c\x19\x7d\x11\x4d\xd6\xdf\ \xb1\x87\xf6\x70\x0d\xd7\x20\xf4\x87\xe8\xe3\x8b\xa3\x25\x58\x83\ \xf5\x89\x75\x04\x92\xbd\x0c\xe9\xea\x34\xfe\x1d\x52\xc3\xe5\x6e\ \x27\x32\xa5\xc3\xb1\x1d\xe6\xe5\xd6\x6b\xc8\x76\x13\x7c\xa9\xe4\ \x46\x22\xed\x38\xca\x30\xb5\xe2\xd1\x95\xc5\x8e\x0c\x2a\x4c\xd4\ \xdc\xab\x0b\xaf\x51\x14\xd3\x75\x6c\x12\x08\x9d\x0f\x86\xf8\x75\ \x29\x9a\x26\x9f\xde\x38\xbd\xfa\x62\x49\xab\x40\x05\x3a\x94\xc8\ \x75\x6f\xf9\x63\x02\x86\xa7\xc0\x56\xaa\xa2\xcf\xc2\x7a\x42\xf7\ \x0f\x8b\xf5\x35\x68\xe9\x19\xd0\xbe\xfa\xbc\x01\x6e\x27\x29\xaa\ \x33\x64\x92\x60\x82\xce\x4b\x35\xcb\x1e\x49\x99\x7b\x46\x4c\x16\ \xaa\xd3\x6d\x06\xec\x6c\x25\xc6\xa0\x0a\x36\x81\x60\x27\x29\x1a\ \x56\xd5\x00\x06\xf0\xb0\xca\x67\x88\xcc\x72\x61\xa3\x91\xcf\x12\ \x6a\x6f\x73\x19\xbb\x37\x10\xb1\x28\x05\xae\x19\x4e\xd3\xde\x1f\ \x88\x47\x9a\xc1\x98\x77\x12\x65\x2c\x48\x37\x8d\xbe\xe3\xcc\xc9\ \x52\x9a\xe7\x64\xd8\xd8\xff\x00\xc4\x5a\x68\xa8\xbc\x80\x49\xf5\ \x32\x42\x2f\x91\x82\x3f\x79\xaa\xfb\x85\xba\xcb\x16\xa8\xab\x55\ \xc1\xf2\x9b\x03\xd2\x29\x9f\x77\x26\xc6\x79\x4d\xfc\xad\x31\x87\ \x6e\x7b\x49\x32\xb1\xb0\x0c\x7a\x89\x36\xe2\x7a\xc6\x55\xb8\x5b\ \xb1\xe3\xa4\x58\x75\xe8\x36\x99\xa8\x1a\x2c\xa6\xed\xfa\x46\x16\ \xf1\x16\xcb\x86\x1f\xb8\x93\x30\x3b\xaf\xfc\xc3\xa6\xdd\x78\x22\ \x38\x98\x40\x36\xb8\xe2\x15\x50\x1f\x4e\x2c\x3c\xd4\xff\x00\x83\ \x0d\xbc\xe3\x72\xe3\xb8\x98\x83\x6d\x8d\xaf\xdf\xda\x1a\x93\x23\ \xba\x23\x92\x6e\x31\x83\x36\x99\xa7\x53\x27\xca\x09\xe3\xa4\xf6\ \xa1\x3c\x26\x20\x65\x0f\x1e\xa2\x28\x94\x08\x76\xe3\x13\x40\x1a\ \xaa\x25\x58\x91\x02\x8b\x0a\x37\x72\x01\x20\x43\x46\x64\xc0\x26\ \xc7\xa1\x99\x53\x6b\x72\xbf\x51\x10\x92\xad\xef\xb8\x09\xe5\x7b\ \x60\x75\x8d\x54\x1b\xee\xaf\xf4\x33\x2a\x50\x7b\xee\x0b\xb8\x7a\ \x45\x12\x49\xbe\x6e\x23\x29\xb9\x07\x9c\xf4\x33\x2a\x2d\x85\xc8\ \x20\xcf\x28\xf4\x90\x5f\xbc\x35\x1a\x65\x87\x17\xbd\xa5\x14\x3f\ \xcc\xd1\x65\xbf\xde\x28\xf2\xfa\x89\x0a\xb1\xf0\x85\xf1\x9e\x63\ \x74\xaf\xe7\x5d\xb8\x37\x99\xb1\xad\x36\x9d\x5a\x89\x50\x0c\xdc\ \x1e\xb3\xa7\xf1\x10\xb5\x52\x96\xa8\x2d\xb7\x8b\x31\x1f\x98\x49\ \x18\x0a\xa0\xb8\x1e\x61\xf3\xaf\xf5\x96\xe8\x08\xaf\xa7\xab\xa6\ \x3d\x46\xe5\xf7\x1f\xfa\x99\xbf\xd6\xa7\xf1\x0a\x27\x88\x4a\x82\ \x2f\x6c\x5e\x4e\x69\x9e\x0a\x5f\xd5\x65\x9b\x0a\x03\xb7\x93\x88\ \x15\x29\xdf\x80\x55\xbf\x63\x29\x46\x27\x5d\xaa\x36\xb0\x3b\x5b\ \x90\x47\x10\x1e\x9b\x21\x0c\xa7\x72\x1e\x0c\x70\xf1\x03\x6d\x37\ \x37\xfa\xcf\x17\x34\x81\xde\xaa\xd7\x3c\x4d\x05\x6d\xf1\x1f\x03\ \x4e\x1b\xec\x7a\x65\x66\xe0\x04\xe9\xeb\x26\xad\xf1\x2a\xb7\x0d\ \x4a\x96\x9f\x69\x3f\xff\x00\x50\xc4\x9b\x54\x8e\xd5\x09\x72\x6f\ \x27\x25\x92\xad\x87\x03\x90\x61\x38\xc5\x6d\x57\xff\x00\x56\xd4\ \x36\xe5\x22\x88\xbf\x6a\x62\x4b\x57\xe2\x7a\xda\x4f\x9f\x0c\x8e\ \xc2\x98\x1f\xd2\x29\x91\x73\x51\x70\x0e\x3d\xa1\x32\x2d\x4a\x7b\ \x4f\xcc\x38\x33\x59\x06\xd5\x34\xfe\x31\x49\xcd\x35\xad\xa5\x4d\ \xbf\x9b\xb7\xed\x3d\x5f\x5d\xa7\xa7\x57\x65\x4d\x1a\x8e\xbc\x03\ \x79\xc9\x65\x28\xd6\x23\x1d\x44\xae\x8a\xf8\xf4\x3c\x06\xcb\xa8\ \xdd\x49\xbb\xf7\x58\x61\xd5\x94\xf5\x1f\x0d\xaa\x2c\xd4\x02\xfb\ \x62\x39\x34\x5a\x0d\x42\x94\xa7\x59\xa9\xb7\x23\x77\x13\x80\xc0\ \x83\x6c\x83\x19\x46\xb5\x4a\x6c\x08\x63\x89\x60\xd5\xd5\xfe\x1d\ \x5e\x90\x25\x6c\xe3\xba\xc8\x89\xb8\xda\xdc\xf7\x97\x26\xa6\xa2\ \x9f\x12\x9b\x10\x18\xf1\xd2\x7a\xbd\x3a\x5a\xc0\x5a\x9d\x92\xb0\ \xc9\x1d\xe3\xdf\xd4\xe7\x30\x22\x33\x46\xf6\xd4\x52\x63\xc8\x61\ \x01\xf1\xe4\x6b\x82\x20\xad\xd5\xc1\xec\x64\x0f\xac\x2d\x59\x87\ \x66\x22\x09\x19\xf5\x87\xab\x16\xd5\x54\x3e\xb3\x00\xc0\x3d\xe2\ \x86\xa3\x68\xbf\x58\xea\x22\xe2\xe7\x03\xbc\x48\x0c\x3f\xbc\xa8\ \x28\x52\xa0\x74\x12\xa4\xca\xb6\x70\x36\xe2\xdc\x0e\xf3\xd4\x5c\ \xa9\xbf\xd2\x01\x22\xf9\x39\x86\x2d\xc8\xe0\xf1\x02\x61\x7d\xcc\ \x77\x5a\xf7\xc1\x9a\x97\x17\x5c\x83\xcc\x49\xe4\xc3\xa6\xe3\x70\ \x0d\x91\xde\x08\x45\x77\x64\x09\x80\x95\x61\x70\x44\x6b\x2e\xdc\ \xde\xea\x78\x98\xb7\xef\x71\xd8\xcb\x51\xf4\x2a\x90\x01\xe4\x4e\ \x8e\x9f\x50\x08\x07\x91\xd6\x72\x17\x68\xc8\x36\x87\x4a\xb1\x4a\ \x99\xc5\xff\x00\x79\x9b\xc7\x4c\xaf\xa2\x4a\x14\xf5\x94\xb6\x02\ \x03\x11\xe5\x3e\xb3\xe5\xb5\xd4\x5e\x8e\xa5\xd1\x81\x0c\x0e\x67\ \x67\xe1\x9a\xbd\xb5\xc6\xd3\x9e\xd2\x8f\x8d\x69\xa9\xea\xa9\xf8\ \xca\x33\xdf\xb1\x98\xe3\x7f\x35\xab\x36\x3e\x4d\xb9\xdc\x31\x68\ \xea\x6e\xae\x00\x6b\xdc\x75\xed\x02\xb5\x36\xa5\x50\xa3\x8b\x11\ \x05\x30\x44\xec\xe6\x6d\x7d\xca\x36\x72\x1b\x8b\x75\x8a\x6b\xee\ \xb1\xbd\x87\x4f\x58\xf4\x2c\xaa\x5a\xc1\x80\xc8\x07\xac\x96\xa5\ \x42\xf5\x59\xc8\x00\x93\xc4\xa2\xa6\x6e\xc5\x80\xb7\xb4\xc3\x63\ \xd7\xf5\x99\xc8\xb8\xe9\x16\x49\x38\xbe\x24\x8d\x04\x0e\xb1\xce\ \xd8\xe4\xf3\x23\x0f\x90\x2d\xf5\x8f\xaa\xd8\xe6\x49\xbb\x8d\xf0\ \x63\x91\x89\xeb\x25\xf5\x94\x69\xc7\x9a\xc4\xe6\x49\x65\x0e\x2e\ \x7a\x4d\xb9\xe9\x88\x74\xc7\xdd\xf1\x30\x8b\x4e\x6d\x08\x10\xc3\ \x9c\xcc\x3c\xdc\x7c\xd3\x0e\x33\xfb\x42\x5c\x8b\xda\x44\x4a\x47\ \x2d\x93\xda\x7a\xa1\x2d\xe6\xb5\xba\x62\x78\x29\x6c\xf5\x84\xad\ \x7b\xa3\x75\x82\x29\xbf\xd3\x23\x99\x1d\x5b\x6e\xc7\x32\xdd\xbe\ \x56\x1d\x64\x95\x52\xe6\xf3\x5c\x45\x2f\x79\x03\x98\x74\x8d\xc7\ \xd7\x88\xa6\x04\x1b\x46\x23\x0b\x64\x4d\x03\xa9\x92\x0d\xe1\xb0\ \xba\x96\x5e\x0f\x22\x00\x61\xb7\xbc\xcb\x9b\x82\xa6\xe4\x0e\x26\ \x4b\x0f\xde\x27\x84\x70\x47\xc9\xfd\xa4\xa5\x48\x72\x08\xe3\x99\ \x48\x1b\xae\x46\x08\x8b\xac\xde\x21\xdc\xbf\x32\xf2\x3b\xfa\xcd\ \x40\x9f\x27\x26\x09\x61\xf2\xf0\x04\xf5\x4a\x8c\x79\x1e\xd6\x81\ \x4f\xcc\xd9\xb5\xa2\x0c\x5a\x6a\x16\xe4\x66\x26\xec\xa7\x92\x23\ \x77\x5c\xfa\x4d\x21\x4e\x1b\xe8\x64\x80\xd5\x2a\x1a\x78\x6d\xde\ \xf9\x80\x2a\xe3\xcd\x4d\x4f\xd2\x35\x52\xc7\x10\x4d\x3b\xb7\x63\ \x14\x65\x17\xa6\xd4\xc8\x2b\xc7\x40\x63\xf4\xe3\x4a\xc4\x7f\xa8\ \xad\xf4\x32\x7a\x09\x67\x2a\x7a\x88\x68\x36\xb9\x04\x42\xa7\x5d\ \x56\x89\x60\xe9\x55\xae\x46\x7c\xb2\x8a\x1e\x05\x27\x15\x96\xa3\ \x2d\x9a\xf6\xdb\xc4\xe3\xa8\x65\x53\xb4\x9c\x1b\x83\xe9\x28\xd3\ \xd7\x6b\x80\xf9\x07\xbc\xe7\x78\xb5\x2b\xaf\x5a\x86\x95\x6a\x6e\ \x2e\xfb\x5c\x6e\x16\x1d\x0c\x9a\xa3\x68\x94\xd8\x53\xac\xe4\x73\ \xe6\xb4\xb3\x62\xd5\xd0\xab\x15\x27\xc3\xc5\xc1\xe9\x39\x8e\x29\ \x6e\x3f\x78\xcb\xee\x26\x63\x54\xd1\xa9\xd2\xd8\xff\x00\x95\x1f\ \x57\x31\x5a\x8d\x55\x1a\x62\xe3\x43\x40\x8f\xf7\x5c\xc0\x34\x99\ \x9a\xca\xe8\x6f\xd2\xf6\x8c\xad\x48\xd8\x17\x41\x70\x00\x00\x0f\ \xe6\x6b\xa8\x12\x36\xae\xb5\xb6\xd4\x0a\xe0\x74\x75\xbd\xa7\x85\ \x4d\x1d\x61\xb6\xbd\x02\x9d\x9e\x99\xfe\x86\x21\xeb\x31\xf9\x80\ \x75\x03\x83\x00\x6c\x60\x40\x3b\x7d\x0c\xde\x33\xa6\xb6\x82\x8e\ \xdd\xda\x7d\x52\x30\x63\xc5\x41\xb4\xfb\x44\x6a\x68\x55\xa2\x4a\ \xbd\x2f\x27\xe1\x71\x0c\xab\x23\x05\x2b\x75\x38\x23\xa1\x84\x8f\ \xa8\xa1\x59\x82\x31\x6a\x6d\x7b\x29\xcd\x8f\x69\x76\x90\xd7\xa7\ \xb9\x43\x5b\x31\x54\xee\x0d\xd4\x90\x41\xb8\xf7\x9d\x74\x1a\x7d\ \x55\x32\x36\x8a\x35\x48\xff\x00\xea\x4f\xf4\x9c\xed\x5d\x27\xd3\ \xd6\xf3\x29\x06\x32\x8c\x06\xb4\x6f\x22\xb8\x16\x0f\xc8\xec\xdd\ \x64\xa4\x09\x5a\x95\x6a\x55\x29\xff\x00\xf6\x5f\xeb\x25\x38\x3c\ \xc9\x1b\x45\xf6\xae\xc6\x38\x27\xf4\x84\x4b\x23\xab\x0c\x30\xeb\ \x27\xe2\xd9\x94\x82\xae\x81\x2f\x90\x30\x4c\x41\xd5\x55\x75\x94\ \x8d\x45\x00\x56\x5f\x98\x77\x12\x35\xb1\x3b\x5b\x91\x28\xa4\x5d\ \x18\x3a\xfc\xc3\xf7\xf4\x8d\xd5\x50\x15\xd7\xed\x34\x41\xff\x00\ \x78\xec\x61\xe1\x06\xb0\x01\x58\xe3\x95\x07\xf6\x82\x9b\x76\x80\ \x41\x8d\xd4\xd3\x25\xa9\x87\x16\xf2\x2c\x51\x42\x1a\xe4\x45\x0e\ \x9e\xd3\x58\x0b\x5d\x41\xcc\x7d\x72\x8d\x66\x5b\x8b\xf4\x89\xf0\ \xf6\xb6\x0d\xe6\xd8\xf5\xfd\xe0\x98\x49\xe8\x23\x74\xec\x49\xb1\ \xe2\xf0\x00\xef\x68\xda\x29\x9b\xfe\xb2\x50\x55\x17\xcc\x6d\xc4\ \xc4\x07\xac\xa8\x2f\x94\x62\xf7\x98\x50\x76\xb4\x34\xb6\x9b\x5e\ \x9d\x8e\x47\x04\x4d\x65\x01\x6e\xa7\x10\x54\x00\x6d\x79\xa4\xec\ \x39\x82\x27\x75\x9a\xf3\xdb\xed\xc0\xb8\xed\x3d\x55\x41\xbb\x2d\ \xfd\x47\x68\xa5\x22\xe4\x1b\xc5\x28\xa0\xd7\x60\xf4\xc9\xba\x9c\ \x89\xd6\xd3\xea\xcd\x54\x64\xdd\xb5\x8e\x6c\x78\x6b\x4e\x0d\x02\ \x52\xb5\xd6\xf2\xda\x4c\x0d\x42\x2e\x37\x0c\xfb\xcc\xf2\x86\x55\ \x1a\xea\x0b\xa9\x42\x57\x0e\x38\xbf\xf0\x67\x1d\x91\x81\xb1\x04\ \x10\x67\x55\xea\xb2\x5a\xa8\xc8\x5c\x30\xee\x26\x7c\x42\x82\xd4\ \xa3\xf6\x8a\x36\x38\xcf\xb4\xa5\xc5\x66\xb9\x88\xd7\x7d\xac\x40\ \xec\x6f\x00\xd3\xdd\x72\x2d\x79\xe6\x5e\x6f\x3c\x0e\xdc\x8e\x66\ \xd9\x08\x52\x3f\xb4\xf3\x27\xd6\x13\x0c\x6f\x51\x83\xd3\xb1\x9a\ \x0d\xc5\x8f\x22\x48\x86\x43\xcd\x8f\x31\x95\x01\xf0\xd4\xc2\x00\ \x93\xc4\x7b\xa8\x34\x97\x89\x24\xb4\xc9\xbd\xa5\x74\x30\x41\x8b\ \x5a\x37\x37\x06\x53\x46\x91\xbd\xce\x25\x6a\x91\x5a\xff\x00\xa6\ \x27\x87\xa4\x62\x29\x20\x01\xcd\xa1\x9a\x61\x46\x39\x9c\x9b\x25\ \x80\x51\x73\xcc\x05\xbd\xee\x4c\x27\xe6\x01\x3d\xa2\x94\x29\x04\ \x5c\x4f\x38\x07\x23\x06\x22\x9b\x35\xe3\x41\xbc\x10\x99\x7c\xa5\ \xfa\x11\x27\x74\xea\x25\xea\xb7\xa1\x63\x6b\x9c\xc9\x9d\x48\x38\ \xcc\xa5\x48\x2a\xa1\x63\xc4\xc3\x49\x80\xc6\x65\xa6\x98\x61\x91\ \x63\x31\x69\x84\xcb\x5c\xf6\x9a\xfd\x0c\x48\xc0\xab\x5a\xf6\x8a\ \xb3\x83\xbb\x23\xd6\x52\xee\xaa\x49\x16\xb9\x93\xd5\x76\x7b\x5c\ \xe3\xb4\xd4\x0f\x1a\xac\xca\x01\x63\xcc\x1d\xe0\xb0\xb1\xb3\x77\ \x81\x6f\x38\x8b\xdd\xe6\xb4\x40\xaa\x80\xcd\xb9\x47\xb8\x80\xa0\ \x28\xb4\x6a\xb9\x07\x73\x00\xc0\x41\xa8\xa1\xc6\xea\x63\xd4\x8e\ \xd2\x40\x51\x78\x77\xef\xc4\x04\x06\xf7\x38\x86\x2d\x7b\x48\x3c\ \x01\x06\xe2\x53\x4d\x09\x17\xda\x18\x45\xd3\x5b\x64\x4a\x28\x60\ \xe3\x83\xc8\x85\x6a\x05\x55\x4b\x02\x30\x6f\xd6\x65\x6a\x4c\x2a\ \x5c\x0e\x63\xde\x98\x24\x5c\x63\xd2\x1b\x21\x34\xc1\x10\xd3\x89\ \xa9\xab\x6e\xda\x41\x00\x8f\xd2\x1d\x35\x65\xc1\xb9\xf7\x9e\xf3\ \x8a\x83\x69\xf7\x8f\x46\x26\xe0\x8b\x5f\x83\x2b\x53\xa9\xf0\x66\ \xdc\x4d\x16\xe2\xa2\x10\x7d\x08\x91\xd6\xa7\xb4\xb0\x7b\x0b\x18\ \xcd\x2b\xd4\xa2\x45\x40\x7e\x52\x0c\x1d\x6e\x6b\xba\xe2\xfc\x8f\ \x59\xcf\xeb\x5f\x08\x6a\x94\xc6\x15\x73\xf9\xa4\xec\xb5\x41\x2d\ \x4e\xa1\x27\x9b\x03\x63\x0a\xa2\xe0\x1e\x22\x4b\x35\xb0\x31\xde\ \x6e\x46\x49\x76\x5d\xdf\x28\x06\x79\x45\x36\xba\x70\x70\x71\xc1\ \x8d\x14\x0d\x4c\xab\x02\x4f\x43\x89\x82\x81\x01\xc9\x16\x23\x81\ \x69\xad\x05\x06\x60\xe7\xb1\xfc\x27\x89\x8a\xcc\xa4\xb2\x12\x47\ \x51\xda\x59\xa4\xf0\xaa\x50\x74\x6a\x57\x7b\xdd\x4d\xf3\x23\xac\ \xa6\x9b\x92\x87\xcc\x38\x3d\xe4\x9e\x15\x88\x62\xc2\xd9\x3d\xa3\ \x13\x56\x8e\x86\x8e\xa2\x98\xa8\x9f\xb8\xf6\x88\xb0\xad\x48\xed\ \x16\xa8\x39\x12\x67\x36\x7e\x6d\xd6\x38\x14\x54\x44\xa3\x56\x9b\ \x6c\x0d\x4d\x8d\x83\x03\xc8\x91\xd6\x14\x83\x95\xda\xc2\xd2\x9d\ \x3d\x45\xf3\x50\xaa\x6e\x8d\xc7\xa1\xef\x27\xd6\x53\x64\xd5\x32\ \x9b\x1e\xb2\x41\x0b\x46\xd7\x25\x87\xbc\xf0\x5a\x7c\xf8\xb9\xbf\ \x51\x04\xbd\x94\x0b\x64\x40\x2d\x7e\x91\x0b\xa9\xaa\xba\xe6\xaa\ \xdc\x62\xf2\x9d\x2d\x36\xa3\x53\x7a\x82\xc8\xd8\x61\x79\xcb\xa6\ \xf9\xb5\x85\x8c\xb7\x49\x55\x5a\xa0\x57\xc5\xb8\x3d\xe1\x4c\x5d\ \xf1\x2d\x30\x4f\x0c\xab\x38\x1b\x6c\x09\x18\x92\xa3\xb6\xdd\x8e\ \x78\xe0\x91\x2a\x4d\x49\xa7\xb6\x85\x56\x6d\xa4\x75\xe8\x6f\x06\ \xad\x40\xb6\xa7\x59\x03\x8e\x8d\x68\x4d\x34\x01\x59\x48\x7f\x0d\ \x5c\x75\x22\x61\xd9\xd8\x80\x7d\x63\xa8\x8a\x37\xea\x01\xec\x6e\ \x23\x7e\xca\x7f\xed\xb0\x75\x3d\x25\xab\x11\x95\xa6\x4f\x24\x7d\ \x23\xe8\xd1\x3c\xab\x83\x06\xa5\x27\xa6\xd6\x28\x40\x8d\xa4\x01\ \x1c\xca\xa3\x91\x5c\x0c\xac\xd6\x50\x46\x46\x66\xae\xe5\x59\xa5\ \xd8\xf0\x73\xd8\xcc\x34\x99\xf9\x8b\xa8\xc4\xae\xef\xd6\x54\xd9\ \x1e\x74\x10\x48\xa2\x54\xa9\xb8\xbc\x65\x08\x89\x23\xe5\x98\x50\ \x7c\xd7\xfa\x4a\x1e\x92\x1f\xfb\x96\x1e\xd3\x69\x69\x85\xfc\xb5\ \x50\x83\xcc\xd6\x8c\x4c\x0f\xd2\x37\x76\xda\x88\xdf\x49\x57\xd8\ \x10\x30\x6f\x1d\x6d\xed\x1e\xda\x5d\x22\xa0\x35\x2b\xdf\xad\x84\ \x3f\x50\xe1\x2a\xe0\x9c\xe6\xf8\x3e\xb0\xfe\x1e\xfe\x15\x66\xd2\ \xbe\x51\xb2\xb7\x86\x6a\xe8\x51\x46\xda\x6c\xd6\xfc\x44\xc6\xd7\ \xd5\x69\xbc\x24\xad\x4e\x82\xf1\xd7\xa1\x99\x2e\x47\xc4\xb4\xad\ \x42\xb9\x03\xe5\x39\x07\xd2\x48\xea\xc0\x8e\x67\xd3\x9a\xc2\xaf\ \xc3\xfe\xd3\x45\x90\xb8\x19\x04\x7e\xb3\x92\xdf\x12\xd4\x03\x7f\ \x0e\x91\xee\x02\xf3\x35\xc6\xda\x2c\x88\x69\xe4\xed\xb9\xb1\x84\ \x89\xc8\x38\x3c\x4b\xa9\xfc\x62\xa0\x20\x3e\x9e\x8b\x0e\xc5\x65\ \x94\xfe\x27\xa4\x70\xa6\xae\x8a\x99\xbf\x69\x5b\x7f\x82\x48\xe2\ \x84\x65\x6c\x66\xd2\x92\x80\x69\xc3\x05\xeb\x91\x3a\xe9\x4f\xe0\ \xda\xa1\x60\x5a\x83\xc3\xa9\xf0\x8a\x9e\x17\xf9\x7a\xab\x59\x79\ \x99\xbc\xe3\x5f\x97\x0e\x98\x05\xac\x44\xb2\x98\xe0\x1c\xc3\xa9\ \xa5\x7a\x2d\x6a\x94\xd9\x2d\xdc\x4d\xa4\x96\x3d\xe5\x6e\x8c\x38\ \xa9\x5c\x0e\x7a\xcd\x10\x69\xb1\xdc\x4c\x72\x59\xef\x71\x98\x34\ \x96\xb0\xb9\xe2\x2b\x69\x12\xe3\x4a\xed\x7c\x4c\x6d\x39\x61\x81\ \x89\x68\xc4\x04\x1b\xe2\x15\x30\x77\x0c\xca\x5a\x95\x34\xbd\x89\ \x63\x12\xc1\x47\x04\xc7\x51\xe2\xa2\x86\x05\x4d\xed\xd2\x6d\x41\ \x63\x8e\x24\xa2\xea\x6e\x0c\xa3\x7d\xe9\x83\xd4\x60\xc0\x82\xdb\ \x8d\xb8\x89\xac\xc4\x5e\xfd\x63\x2a\x9d\xa0\x58\x5c\x99\x25\x46\ \x3c\x9c\xc6\x46\x69\x75\x47\x51\x27\x62\xd2\xac\x11\xda\x26\xaa\ \x8b\x9c\x83\x37\x01\x57\xf3\x1f\x68\x25\x40\x37\x31\xaa\x86\xc4\ \xdb\x88\x23\x1c\x8b\x98\x86\x05\xc5\xc8\xc4\x15\x05\x5b\x72\x18\ \xc1\x73\xeb\x0d\x13\x3f\xd2\x4b\x00\xca\xac\x37\x2d\x87\xa0\xe9\ \x04\x21\xea\x23\x80\xda\x77\x01\x60\x79\x13\x76\xd8\x6e\x5c\xac\ \x8e\x31\x56\xe0\x47\xd3\xa6\x47\x06\x0a\x10\x70\x2e\x3d\x23\x81\ \xb0\xc8\x99\xb4\xc3\x54\x87\x4d\xbd\x44\xc4\xbd\x88\x31\x6b\x50\ \x5f\xb4\x72\x90\xf7\x33\x24\x97\x41\xbb\x70\xe9\x0d\x00\x28\x08\ \x1c\x4f\x30\x21\x8d\xf8\x8c\xa4\x2f\x70\x64\x8d\x46\x5f\x08\xa9\ \x36\x36\xb4\xdd\x55\xbc\x44\x63\xc9\x51\x98\xaa\x96\x0c\xa9\x19\ \xab\xf3\x54\x55\xec\xa0\x41\x27\xae\xa4\xae\xf5\x02\xc7\xd2\x21\ \x89\x23\x6e\x31\xc8\xb4\xaf\xf0\x94\x5f\xa1\xf5\x93\xb8\x0a\x85\ \x9c\x5d\xaf\xe5\xb4\x60\xa5\x32\xd8\xee\x06\xc4\xe0\x4d\xa9\x5e\ \xaa\xd3\x0b\xbb\x24\x66\xf1\x95\x54\x30\xf1\x12\xc4\x70\x04\x95\ \x77\x12\x5e\xd8\x1f\xcc\xd4\xed\x3c\x03\x97\xdb\x4e\xe4\xda\xe2\ \xdd\x0c\xbc\x69\x68\xbe\x98\x6a\xab\x33\x0b\xe0\xaa\x8e\xb2\x13\ \x55\xe9\x9e\x99\xc4\xb2\xaf\x9b\x44\x85\x5a\xc6\x93\x5d\x81\xe2\ \xc7\xfe\x09\x55\x1c\xcd\x55\x33\xa6\xd5\x59\x4e\x39\x56\xee\x24\ \xfa\x94\xde\x7c\x45\x1c\xf2\x3d\x67\x4a\xbd\x23\x5a\x88\xb1\x05\ \xa9\xe4\x0b\xf4\x91\x30\x6a\x76\x2c\xa6\xdc\x1c\x4d\x4a\xcd\x46\ \xd7\xb8\x3d\x6d\x69\x4d\x6b\x57\xd2\x2b\xff\x00\xdc\xa6\x33\xea\ \x22\x6a\x26\x4e\x49\x1c\x89\xb4\x2a\x78\x76\x27\x20\x1b\x11\xe9\ \x14\x9d\xc6\x38\x8b\xe8\x6d\x2a\xaf\x4f\xc3\xaa\x45\xee\xa7\x2a\ \x7b\x88\x97\x50\x01\x90\x62\x9c\x43\xa6\x79\xcd\x8d\xa2\x01\xce\ \x73\x1d\x48\x16\x61\x6c\xdc\xf1\x08\x9d\x66\x54\xac\x94\xd2\xa3\ \x80\xdb\x05\x8d\xbf\x68\xf4\xa3\xbe\x90\xa4\xee\xa5\xc7\x07\xac\ \xe7\xd6\xba\xd6\x01\xae\x2c\xa2\x57\x4a\xa1\x6b\x6e\xcf\x66\x85\ \x8d\x40\xb5\x3a\x94\x5b\x65\x44\x36\xef\x1d\x49\x99\x16\xfb\x8f\ \xa4\xa0\x13\x51\x2d\x7b\x30\xe2\x24\xdb\x76\xd7\x4b\x1e\xb6\x86\ \xe9\x36\x86\xb0\x37\x92\xaa\xee\x1d\x8c\xa0\x52\xa6\xfe\x6a\x43\ \x1e\xf2\x41\x40\x36\x69\xb0\x62\x3f\x0f\x58\xca\x0c\xf4\xde\xf9\ \x52\x3a\x18\x5f\xf1\x2a\xa6\xb4\x80\xb3\x16\x07\xb1\x13\x7c\x3a\ \x27\x87\xb1\x86\x8f\x4e\xb2\x58\x8b\x37\x79\x35\x54\x64\x36\x3c\ \x74\x33\x24\x4d\x4d\x46\x2e\x59\x62\x2a\xf8\x34\xde\xd9\x33\x1d\ \x8d\xae\x0c\x45\x56\xbf\xcc\x2f\xeb\xd6\x6a\x41\x47\x52\xad\x3e\ \x56\x98\xcc\x57\x8e\xe0\x1b\x59\x7d\x84\xc0\xa5\xb0\x0e\x20\xb5\ \xb2\x09\x9a\xc0\xf2\xd7\x76\x24\x16\x36\xf7\x8c\x37\xf0\x8d\xcd\ \xcc\x98\x9b\x1c\x0c\x4a\x37\x1f\x00\x1e\xa0\xe6\x49\x94\x05\xe9\ \xba\x93\xed\x19\xa6\x60\xda\x66\x4b\xf5\x93\xa1\x3e\x21\x17\x85\ \xa4\xb8\x77\x5e\x31\x2a\x96\x7c\x08\x96\x5d\x46\x98\x9c\x7f\xc1\ \x39\x6e\x36\xb9\x17\xb1\x06\xd3\xa7\xf0\x70\x57\xe2\xce\xa3\xf1\ \xa9\xfe\xf2\x3f\x88\x21\x5d\x75\x65\xb5\xbc\xc6\x13\xd5\x7c\x4e\ \x72\x01\x3c\xc7\x51\x1f\x70\xc4\x5e\xea\xdf\xcc\x50\x16\x00\xda\ \x51\xa6\x5c\x54\x5c\xe5\x6f\x11\x1b\x7b\x05\xf5\xea\x25\xfa\x2d\ \x45\x5a\x54\xd4\xa5\x46\x06\xfd\xe4\x58\x08\x84\xdb\xd6\x39\x40\ \xf0\xd6\xc7\x36\x87\x2e\xda\x8e\xdd\x1f\x89\x78\x80\x26\xa6\x9a\ \x54\x5f\x6c\xc6\x7d\x8b\x4f\x5c\x97\xd2\xb8\xbf\xe5\x33\x8f\x4f\ \x71\xb5\xc8\xbc\xb2\x8d\x41\x49\x77\xa9\xcd\xfb\xce\x56\x7f\x1a\ \x97\xfa\x61\xd3\x3d\x3a\x85\x5d\x0d\xf8\xbc\x34\xa2\x05\xfc\xc3\ \xda\x55\xa7\xf8\x82\x55\xb5\x3a\xea\x08\xef\x0a\xae\x90\x3d\xde\ \x8b\x82\xbd\x8c\x36\xfd\x6b\x08\x4f\x0d\x45\xf6\x92\x7d\x62\x35\ \x15\x49\x16\x5e\x23\x1e\x9d\x54\xf9\x95\x80\x88\xa8\x09\xe0\x8b\ \x46\x02\x00\x62\x73\xc0\x8b\x71\x73\x7e\x23\x18\xb0\x16\xe0\x99\ \x81\x71\x73\x34\x13\xbd\xc6\x21\x51\xc8\x6f\x6b\xc3\x5a\x26\xa3\ \xd8\x5c\x08\xc7\xa2\x88\x40\x0f\x7b\x7c\xde\xf2\x18\x99\xaa\xf7\ \xcc\x5b\xa8\x22\xe3\x37\x9b\x59\x02\x92\x2f\x31\x03\x0e\x38\x9a\ \x05\x5e\xd8\xb4\x5b\xe7\x9c\x19\x66\xc5\x6c\x8c\x19\x3d\x4a\x47\ \xa5\xe3\x28\xc2\x43\x95\x04\x4f\x00\xb6\xbf\x78\x2c\x0e\xe2\x38\ \xb4\xd5\xb9\x04\xf1\x69\xa4\xd0\x07\x48\x6a\x97\x16\x26\xd3\x13\ \x04\x82\x6d\x18\x8a\x06\x79\x82\x09\x56\xb1\xbd\x8f\xac\x2a\x20\ \x01\x9b\x90\x79\x9a\xd6\x3c\xcc\x00\x80\x6d\x99\x26\xba\x59\xb1\ \x8e\xd6\x84\x1b\xf0\x9e\xd0\x51\xb7\x8d\xad\xcf\x49\xaa\xb6\x1f\ \x30\x3f\xcc\x0b\xd1\xda\x53\xe6\x2b\xde\x2d\x6d\x90\x61\x52\xb2\ \xbe\x0f\x48\x55\x14\x31\x16\xf3\x7d\x0f\x68\xdd\x3a\x1d\xe0\xf4\ \xef\x27\xa9\x72\x80\x93\x89\x46\x9a\xaf\x86\x2e\x4f\x22\xc0\x19\ \x92\x02\xa6\xa5\x7b\xe3\x06\xd0\xb5\x8d\x7a\xec\xab\xc0\xc4\x2d\ \x31\x56\xd5\x03\xc6\xdc\xdb\xa4\x4d\x40\x7c\x42\xcd\x70\x09\xbc\ \x93\x50\x8e\xb0\x35\x34\xbc\xfb\x87\xca\x73\x79\xa3\x20\x8b\xc3\ \x27\xee\x41\x6c\x28\x92\x73\x77\x13\x54\x22\xe1\x57\xfe\x5e\x54\ \x02\x1d\x03\xb7\x02\xa3\x05\x1f\x4e\xb0\xaa\xea\x74\x57\x25\xb4\ \x59\x23\x3b\x5e\xc2\x4d\xa9\xd4\x9a\xcc\x3c\xab\x4d\x14\x59\x51\ \x78\x13\x7d\xd0\x48\x42\x5c\x52\x61\x92\x79\x33\x74\xd5\x88\xd6\ \x38\x70\x4d\x37\xf2\x91\xd8\x1e\x26\x0f\x11\x95\x82\xdc\x93\xe5\ \x51\xfc\xca\x74\x74\x95\x36\xbd\xc1\x28\xb7\x21\xb8\x27\xa4\x68\ \x2b\x5b\xa7\xab\xa7\xa8\x8d\xb8\x30\x61\x63\x69\x3d\x76\x75\x56\ \x04\x9b\x5e\xf2\x8d\x75\x64\xae\x81\xd6\xf6\x56\xdb\xff\x00\xb8\ \x87\xa8\x2a\xa8\x2c\x45\xc0\xb3\x5f\xac\xa2\xa9\xfc\x42\xcb\x6d\ \xaa\xc5\x7b\x8e\x91\x0e\xd4\xee\xc0\xa5\xae\x31\x63\x09\xd3\x6b\ \x06\x17\xb1\xe2\x26\xa8\x37\x04\x8b\xcd\x32\x7a\xf8\x75\xb4\xd6\ \x0e\x43\xd3\xe2\xe3\x91\x10\xc8\xc5\x71\x9f\x6c\xc0\xa4\xc6\x9d\ \x40\x7b\x18\x55\x86\xca\x9e\x4e\x0e\x44\x10\x36\xf3\x19\x44\x94\ \x21\x86\x60\x78\x84\xfc\xe0\x34\xa3\x4e\x8a\x48\xda\x79\xe8\x64\ \x95\xb3\x0a\xbb\x56\xa7\x25\x45\x9b\xb4\x62\xab\xd3\x21\x4d\xad\ \xfb\x18\xad\x86\xc8\x6d\x6b\x60\x8e\xd2\xf4\x0a\x50\x06\xf9\x6d\ \x71\xe9\x0b\xd3\x51\xea\x35\x03\x1b\x5e\xcd\xd2\x52\xd4\xc3\xa5\ \xd4\x5d\xba\xc9\xd6\x8f\x86\x77\xf4\x3c\x18\xf5\xa8\x6d\xfc\xcc\ \x5f\xf0\xc2\x1a\xcb\xde\xe2\x36\x95\x70\x46\xda\x83\x78\xf5\x19\ \x9b\x56\x9e\xf1\xbc\x0c\xc9\x76\xd9\xf3\x1f\x52\xf5\x5a\x6d\x73\ \xa7\x27\x77\x63\xcc\xc5\xa9\xb9\x4d\x3a\x83\xeb\x26\x56\xb6\x6f\ \x62\x3b\x46\xf8\xa9\x57\x15\x70\xdd\x1c\x43\x0e\x95\xa8\x46\x42\ \x41\xfa\x49\x77\x7e\x16\xbc\xe9\x30\x62\x9b\x1f\x24\x65\x4f\x79\ \x16\xa1\x81\x7d\xae\x3d\x8f\x69\xa9\x45\x26\xe5\x4f\x69\x95\x1c\ \x13\x76\xe4\xf5\x10\x2a\xde\xf8\xfd\x22\xc9\x6e\xb3\x4c\xe8\xcd\ \xd4\xdc\xe4\x7a\x46\x51\x7b\x82\x3a\x34\x9f\x71\x5c\x03\xef\x19\ \x41\x81\x18\x36\x37\xe2\x4a\x3c\x0f\xde\xc7\xd0\x1f\x7c\xc7\x9c\ \x73\x10\xe8\x56\xb5\xb3\x83\x2a\xa6\x36\xb1\xf5\x02\x14\xc3\xfe\ \x13\xe5\xf8\xbd\x12\x4d\xae\xa4\x67\xd8\xc5\xfc\x61\x7f\xf9\x1a\ \xc4\x62\xc6\x1f\xc3\x3c\xdf\x13\xd3\x77\xcf\xf5\x83\xf1\x73\x7f\ \x88\x56\xcf\x58\x7f\xe8\xfc\x46\x82\xc6\xd1\xfa\x4f\x35\x50\x3b\ \x82\x3f\x69\x39\x61\x8b\x73\x19\xa2\x6f\xf3\x48\x2f\xcb\x46\x81\ \x54\x07\x62\xfa\x08\x5b\xf6\xa2\x01\xf9\x60\xd5\x36\x19\xee\x66\ \x54\x60\x18\x03\xd0\x5a\x49\x4d\x37\x2a\x73\x29\x0d\xe5\x5b\x48\ \x68\xb0\x6b\x2f\x53\x29\x0f\x76\x6b\x1c\x74\x99\xb0\xc5\x08\xff\ \x00\x48\xf4\xd4\x54\xa6\xc0\xab\x11\xf5\x91\x03\x63\x37\x71\xb4\ \xc9\xd7\x5d\x3e\x23\x8b\x3a\x83\x3d\xe3\xe9\xaa\x1b\x35\x30\x3d\ \x44\xe4\x0a\x96\x1c\xe6\x6a\xb9\xb1\x20\xc3\xf2\x7f\x4e\xa3\xae\ \x91\x8f\x94\x9f\x4c\xc0\x03\x4e\x9c\x82\x7d\xe7\x34\x55\x37\xb0\ \x30\x8b\xdb\xcc\x72\x7a\x09\x62\xd5\x7a\x8a\xe8\x8b\x65\xc1\x3d\ \xa4\x2d\x56\xe6\xc3\x00\x98\x35\x09\xe7\x33\x29\x0b\xb6\x4c\xd4\ \x83\x47\x54\x13\x54\xf6\x83\x9b\xe2\x51\x58\x02\xe3\xd8\x41\x14\ \xee\x2f\x0d\x45\xa8\xb6\x67\x98\x10\x6e\xb9\x11\x81\x00\x19\x82\ \x4e\xd0\x6d\x24\x89\x95\x4b\xb5\xcd\x8c\x02\xac\x8d\x71\xc4\x7e\ \xa1\x30\x59\x6d\x6f\x48\x84\x72\x39\xc8\x9d\x23\x2d\x23\xcf\x8c\ \xa9\x9a\x5c\x0c\x42\x01\x5d\x6c\xa6\xd1\x4e\x8c\xa7\x32\x43\xde\ \x0f\x04\xfe\x93\xc7\x70\x1f\x34\x41\xc1\x86\x1b\x77\x26\x48\x7e\ \x6e\x41\x1f\xac\x68\xf3\x2d\xef\x9e\xb6\x89\x06\xc7\x10\xf7\x11\ \xf4\xe6\x55\x3c\x6a\x6d\x1c\xde\x36\x85\x4b\xb0\x36\xe6\x4a\xe2\ \xc6\xe3\x88\xea\x2c\x2c\x0d\xb8\x85\x89\x7e\xd3\xb2\xc3\xbc\x5d\ \x76\xb3\x2a\xa9\xf7\x94\xe9\xc0\x34\xf7\x74\x61\x10\x02\xee\x24\ \xe5\x9b\x3e\xd3\x0d\x0f\x4e\x2d\xa7\xa9\x50\xf2\x70\x26\x52\xac\ \xc3\xca\xc3\x7a\xf6\x31\x8c\x00\xa6\x88\x7a\x8b\x98\xad\x9c\xda\ \x48\xdd\x94\xaa\xb5\xe9\xb1\xa6\xe7\xa3\x71\xfa\xc5\xea\x28\xd4\ \x45\x65\x70\x7d\xcf\x11\x6d\xe4\x52\x3a\xc6\x69\xeb\xd5\xa2\x0a\ \x92\x1c\x11\xf2\xb6\x44\x92\x0a\xa9\xe7\x6b\xda\x03\x50\x6a\x96\ \x41\x8b\x9e\x4f\x49\x75\x6f\x05\x49\xf2\x96\x24\xe2\xf1\x6c\x5a\ \xc4\x0b\x64\x5a\x6a\x51\x82\x51\x4d\x34\x55\x16\x98\xb3\x26\x0b\ \x75\x69\x2e\xa5\x82\xe8\x55\x49\xf3\x3b\xff\x00\x10\xf4\xe5\x9d\ \xea\xad\xbe\x65\xbf\xed\x11\xf1\x03\x6a\x34\x03\x8b\xfc\xdc\x7b\ \xc6\x4e\xd5\x03\x32\x53\x45\x42\x30\xd9\x36\x9e\xd8\x00\xb9\x52\ \x6f\xd4\x75\x8a\xd4\x79\x19\x73\xca\xfe\x92\x9d\x35\x4d\xc9\xe1\ \xa9\x04\xa8\xb8\xf5\x13\x4c\xb9\xf5\xae\x8e\x54\xa9\xda\x7f\x68\ \x04\xdd\x76\x93\xc7\x13\xa7\xa9\x44\xaa\xa0\x81\x9b\x66\x73\xc8\ \x09\x50\xee\x20\xdb\xd2\x32\xaa\x9c\x95\x38\x30\xd0\xab\xd3\xda\ \x45\xca\xe4\x7b\x42\xa8\x29\x1c\x81\x83\x3d\x45\xa9\xab\x82\x14\ \xf3\xde\x40\xb6\x50\x6c\x56\x3a\x92\x92\x06\x2d\x68\xd7\x44\x22\ \xea\xa7\x69\xe2\x32\x82\x8d\xbc\x1e\x64\x4e\xa0\xdb\xa9\x95\x6f\ \x35\xbf\x51\x3a\x5a\x6d\x39\x6a\x1b\x87\x98\x0c\x4e\x7d\x02\x05\ \x5b\x70\x27\x5b\xe1\xce\xa9\x50\xa8\x38\x22\x73\xe4\xd4\x26\xe5\ \x0e\xc2\x2e\x07\x20\xcf\x05\x57\x25\xa9\x90\x0f\x55\x26\x3f\x5d\ \x4d\x0d\x42\xe8\x7c\xa7\xf9\x91\xd8\xee\xe0\x4c\xc2\x6b\x3b\xd3\ \xb1\x37\xf6\x30\x2b\x20\xa8\xbb\xd0\xd9\xba\x89\x4d\x16\x43\x65\ \xaa\x37\x21\xfd\x44\x5d\x6a\x1e\x1b\x17\xa5\xe6\x4f\x5e\x44\xa5\ \x48\x19\x58\x9b\x93\x63\xd8\xcf\x17\x20\x0e\xfd\x44\x66\xa2\xc4\ \x64\x0f\x43\xda\x4e\x41\x18\x63\xec\x44\xe9\x3b\x65\x76\x86\xa8\ \x36\xa5\x57\x2a\x4f\x94\xf6\x88\xf8\xa5\x26\xa3\x57\x63\x7e\xb1\ \x34\xdb\x61\x9d\x0d\x70\x3a\x8f\x86\xd3\xad\xf8\xd3\xe6\xf6\x99\ \xf2\x9f\x63\x8e\xd9\x5b\xf5\x13\x47\x38\xe4\xcf\x6e\x1b\xb0\x2e\ \x4e\x26\x02\x17\x9c\x99\xb6\x4b\x65\xb9\xcf\xed\x09\x05\x86\x26\ \xef\x01\xee\x56\xfe\x91\x88\xa0\xdb\xa4\x90\xda\xce\x48\x27\x22\ \xd6\x31\xac\x0a\x05\xbf\x27\x10\x2b\x53\x51\x50\xec\xa8\x0f\xa4\ \x76\xa0\x1b\x53\x06\xd7\x51\x7f\x78\x13\xfe\x0a\x9b\xbe\x25\x44\ \x9e\x56\x9b\x37\xfc\xfd\x64\x7f\x11\xab\xe2\x6b\x2b\x30\xfc\xe6\ \xd3\xa5\xf0\x40\x29\xf8\xf5\xd8\x8f\xbb\xa4\x17\x3d\x0f\x33\x87\ \x55\xc9\xa8\x4f\x7c\xc2\x77\x4d\xf1\xe6\x6b\x7a\x74\x9b\xa5\x3f\ \xe6\xa9\xff\x00\xe4\x22\x58\xdc\xf3\x1b\xa2\x3f\xe6\x94\x9e\x86\ \xf3\x4c\x8f\x50\xcc\x5f\xeb\x88\x35\x0d\xdc\xdf\x1d\x27\x94\xde\ \xaa\x83\xee\x60\x3b\x1d\xe4\xde\x48\xfa\x06\xd5\x37\x76\x17\x8f\ \xa5\x52\xc4\x5e\xd9\xe6\x44\xaf\xb5\x01\xbf\xcc\x63\xe9\x1b\xda\ \xfd\x25\x8a\x2d\xa4\xdd\x0c\x36\x26\x4a\x58\x8c\xaf\x10\xe9\xd4\ \xb8\xb1\x98\xc6\xb4\x57\x37\x84\x5f\x6a\x00\x20\x37\xfb\x72\x66\ \x54\xb8\xf9\x72\x65\x88\x45\x82\xf9\xba\xcf\x6f\x36\xf5\x83\x4d\ \x0d\xbc\xc6\x10\x51\x7f\x41\x2e\x93\x09\x36\x19\x8c\xa5\x72\xc2\ \xc3\x98\xa2\x73\xc4\x6e\x9c\x93\x50\x2f\x4b\xca\xa8\xad\x88\xdf\ \xec\x21\x1e\x2d\x11\x7b\xd4\x27\xa1\x31\xbb\xac\xb9\x19\x99\x69\ \x8e\x39\x88\x7f\x58\xf2\xd8\x8a\x71\x71\x70\x38\xe6\x41\x33\x9d\ \xa0\xa9\xc8\x26\x4f\x51\x76\x9c\x64\x19\x46\xab\xe5\x07\x19\x93\ \xd3\x7c\xed\x61\xe5\x9b\x8c\xb1\x49\x07\xb4\x67\x88\x0a\xed\x6e\ \x3b\xcc\x74\x00\x5c\x18\xbe\x9d\xe2\x9b\x56\x99\xb5\xc1\xb8\xef\ \x12\x2e\x0c\xa6\x9b\x6d\x1c\x62\x6b\xd3\x52\x37\xa7\x12\x58\x4a\ \x5f\x93\x0d\x49\xef\x68\x04\xc2\x19\xfa\xc5\x0d\x2d\x7c\x9f\x2f\ \x58\x7b\x43\x10\x17\x83\x16\xc0\x91\xb5\x38\xea\x65\x1a\x04\xfb\ \xe1\x9b\xe7\xe9\x0a\x97\xd5\x3e\x16\x85\x14\x7c\xc7\x31\x34\x54\ \x3b\x80\x6e\x49\xc9\x3e\x90\xeb\x95\xa9\x5f\xcb\x90\x05\xa3\x34\ \xd4\xc2\xd3\xa8\xc4\x67\x81\x39\xb4\x07\x6d\xcf\x93\x6c\xc6\x30\ \x01\x01\x19\xef\x15\xb4\xef\xb9\x8d\x4c\xa9\x0d\xc7\x32\x24\x38\ \xce\xee\xbd\x20\xa1\x1e\x28\x1d\x4c\x3a\x9d\xcc\x50\x5b\xb8\x20\ \xfd\x64\x1e\x71\x7a\x6a\xcd\xd0\x49\x5b\x50\xf4\xee\x53\x6f\x97\ \xb8\x8f\x15\x11\xa8\xb2\xb1\x21\xc9\xc4\xe7\xd4\x2a\x29\x9d\xd7\ \x02\xf6\x9b\x90\x53\x13\x54\x4e\xa4\xd5\x73\x6d\xc6\xc4\xaf\x63\ \x1d\xf1\x1a\x25\xce\x9c\x2b\x06\x52\x0d\xfb\x8c\xc8\x54\x0b\x9d\ \xa4\x30\x33\xa6\xcd\x7f\x86\xad\x75\x61\xbe\x9a\xec\xfd\x65\x7a\ \x11\xc6\xad\xbd\x86\xf3\xf9\xac\x4c\xa3\xe1\xc9\xe6\x0d\x7b\x74\ \x26\x53\x4c\x52\x7a\x55\x12\xb1\xda\xd7\x04\x10\x31\x3d\xa7\xa0\ \xb4\xaa\x60\xb3\x23\xe2\xe3\x88\xea\xc1\xb2\x23\x29\xb9\xb7\x4b\ \xc9\xab\x69\xb7\x53\xb9\xb1\xec\x65\x45\xe8\x86\x24\xa3\x15\x3f\ \x30\x26\x08\x75\x46\x3b\x10\x11\xd4\x5f\xf7\x84\x4e\x69\xa5\xb6\ \xf8\xdc\x3a\xcc\x34\xed\x66\x5e\x27\x63\x6d\x3a\x99\x34\x02\xfa\ \x82\x67\x97\x4e\x9c\xb5\x25\x1e\xa1\xb1\x1f\xd2\xc7\x32\x8f\xe5\ \x63\x8e\xfd\xa5\xba\x7a\x40\x6e\x0c\x7d\x63\xce\x9f\x4e\x3f\x0b\ \x0f\x63\x19\xa6\xa5\xa6\xde\x14\xd6\x65\x1d\x09\x58\x5e\x4a\x44\ \xbe\x1e\xdb\xda\xfc\xdb\x12\x8d\x09\x61\xa8\x50\x4e\x65\x1a\x9d\ \x18\x5b\x6c\xaa\x8c\x0f\x68\xaa\x68\xd4\xab\x23\x3e\xe1\x63\xcd\ \xa1\xbb\x0e\x1e\xca\x03\x6d\x04\x90\x7a\x49\x6a\x07\xa7\x50\xa9\ \xbf\xa5\xe5\xfb\x55\xdc\xa7\x52\x70\x60\xd6\x45\x2a\x15\x80\x2c\ \x26\x75\xac\x46\x1c\x85\xb1\x8f\x15\x08\x01\x87\x07\x98\xad\xac\ \x0e\x14\x11\x09\xce\xd4\x18\xbd\xc5\xa4\x1e\xae\x8b\x51\x70\x3c\ \xdf\xcc\xe7\x80\x03\x14\x75\xb0\x3c\x13\xd2\x51\x4e\xb9\x00\xdc\ \x58\x21\xcf\xb4\x0a\xca\x2b\x2e\xe0\x45\xf9\x13\x53\xa1\x53\xb2\ \xd9\xb6\xb7\x22\x74\x34\x6f\xba\x89\xa6\xdc\x38\x22\x42\x06\xfa\ \x44\x1c\x3d\x3f\xdc\x4a\x74\x27\xef\x69\x0c\x08\xdf\x14\x73\x2c\ \x77\x32\x9e\x86\x15\x41\x66\xf7\x8c\xaa\xa3\xed\x55\x40\xfc\xc6\ \x2a\xaf\x97\x6e\x41\x24\x4d\x32\x00\x7c\xdd\xfb\xc6\xa9\xb5\x4b\ \x2e\x73\x05\x53\x6a\xf9\x86\x4c\xd0\xde\x18\x62\xbf\x37\x17\xed\ \x24\x7a\x94\x0a\xd5\x5c\x6e\x37\xb0\x1d\x2f\x1c\xf5\x99\xc8\x05\ \x17\x8b\x48\xa8\xb5\xd2\xc4\x71\x91\x28\xa2\x8c\xd4\x83\x1c\x67\ \x1f\xf3\xde\x16\x17\x52\xcb\x4f\xe0\x95\x9c\x59\x4d\x67\xb0\x3d\ \xfa\x7f\x43\x38\x15\x01\x46\xb1\x13\xb3\xf1\xb6\x14\x34\xba\x6d\ \x2b\x65\x91\x43\x30\xff\x00\x9f\x59\xca\x4a\xc0\x9d\x98\x00\xf0\ \x61\xc7\xcd\x5c\x88\xd8\xe1\x6e\x54\x80\x78\x27\xac\x3d\x28\xb3\ \xbb\x16\x02\xc8\x7f\x7c\x41\xac\xae\x18\x96\x72\x7b\x4c\xa1\xe5\ \xd3\xd5\x6b\xf3\x65\xfe\xbf\xd2\x6c\x09\x1c\x0d\xc6\xf7\xb0\x82\ \x1c\x33\x6d\xb6\x62\xd3\x09\xd8\x93\x30\x5c\x02\xd8\xed\x20\x7b\ \x35\xdf\x00\x58\x60\x46\xd1\x63\x7b\x5a\xd2\x64\x1c\x9e\xb2\x8a\ \x42\xe4\x9e\xd0\xa5\x4e\xfb\x01\x62\x26\x5c\xdf\x24\x01\x04\xb0\ \xb5\xb8\x33\xd9\x27\xb9\xeb\x22\x6a\xd4\x24\xd8\x03\x68\x43\x3e\ \xb1\x74\xb0\xf0\x95\xc0\x3b\x6d\x04\x75\x3f\x6e\x21\xe0\xac\x1a\ \x79\x1e\x90\x99\x71\xc4\xc5\x20\x70\x2f\x88\x74\x30\xcc\xfd\x00\ \x98\x45\xf0\x63\x2a\x2e\xca\x2a\x9d\x4f\x98\xff\x00\x49\x16\x29\ \xeb\x0c\xde\xf6\xbc\x4a\xde\xd9\x86\xae\x2d\x7e\xd2\x43\xff\x00\ \x68\xe4\xcc\x73\xb4\xda\xf3\xc0\xe0\xb1\xe7\xa4\x4b\x9b\x98\x20\ \xea\x19\x40\xe0\x1b\x48\xc9\xbf\x06\x3a\xb6\xe6\x04\x60\x09\x33\ \x6d\x07\x07\x89\xd2\x33\x4c\x47\xb5\x95\xb8\x9a\xcb\x61\x70\x6e\ \x22\x77\x8b\xf2\x4f\xd2\x36\x8b\x0b\x90\x6e\x41\x19\x8a\x79\x4f\ \xb4\x6d\x36\xda\xd6\xe4\x18\x25\x69\xa8\xb8\x24\x8e\xc2\x1d\x37\ \x53\x85\x5b\x18\x27\xaa\x50\x60\x6e\x05\x81\x9e\x0a\x94\xc5\x89\ \x2c\xc7\xa7\x69\x45\x36\x01\x4a\x9b\x1b\xf5\xed\x12\xf4\xce\xfe\ \x4d\xe1\x29\x2d\x83\xbb\x75\x03\xd6\x59\xa4\x5f\x0d\x41\xea\x60\ \xe9\xa9\x06\x6b\x76\x8f\x23\xcc\xc4\x70\xa2\xd0\xb5\x48\x55\x37\ \x21\x99\x87\x53\x3a\x2a\x3e\xe5\x08\xeb\x92\x27\x34\xfc\xe1\x40\ \xc5\xe5\xe1\xf6\xb6\xdf\xa0\x99\xa6\x34\x26\xdb\xdb\x9e\xfe\x91\ \x65\xc0\x60\x7a\x74\x94\x90\x1d\x42\x9c\x11\xfb\xc9\x2b\x53\x6a\ \x66\xed\xc4\x21\x65\x51\x92\x22\x4f\x94\x11\xd4\xca\x74\xca\x2b\ \x82\x49\xb2\xd3\x17\x63\xe9\x23\xa9\x53\x6b\xee\xb6\x4f\x17\x8c\ \x15\x15\x73\x60\x08\xe6\xf1\x3a\xa0\xdb\x43\x0e\xf9\x12\xbd\x4a\ \xa6\xfc\xb0\x2a\x3b\x41\x44\x2c\x06\xdb\xb2\x8f\x98\x5b\x89\xd2\ \x56\x51\xd3\x5f\xcd\x89\xd7\xa2\xad\x4b\x4c\x34\xf6\x0d\xb9\x77\ \x1b\xf7\xe9\xfb\x41\xa3\xa0\x43\x6d\x43\x2b\x0a\x4a\x2e\x7a\xdf\ \xd2\x20\x35\x43\x5c\xd6\x46\xda\xc0\xe0\x18\x5b\xaa\x4c\x39\x68\ \x53\x73\x75\xba\xb1\x5b\x15\xe6\x2e\x99\x6a\x07\x28\x59\x09\xc8\ \x27\x17\x95\x6a\x16\xa0\xad\x4e\xa2\x20\x00\xa8\x37\x1d\x0f\x69\ \x42\x53\x35\x46\xeb\x85\x2d\xf3\x2d\xb0\x66\x75\xac\x24\x2a\x54\ \x5d\xd4\xa9\xaf\x9b\x90\x44\x59\xa1\x5b\x05\x49\xa6\xcb\xd0\x8e\ \x44\xb4\x50\x4a\x0c\x37\xdd\x01\xcd\xc6\x63\x98\x21\xb3\x00\xa4\ \x75\x37\x86\x9c\x41\x4a\x8d\x52\x33\x7b\x7b\xc3\x1a\x7d\xb9\x2e\ \x57\xbe\x65\x22\x91\x61\x74\x2f\xed\xd3\xde\xf0\x7c\x31\x4c\xdd\ \xb6\xfb\x93\x7f\xe2\x1a\xb0\xb4\x55\x19\x15\x01\xf4\x3d\x63\x17\ \x4a\xb5\x32\xa0\x03\xd8\x89\x85\x69\x33\x0b\xd6\x0b\x6e\x02\xad\ \xa5\x00\xd2\xb6\xd6\x35\x18\x74\x22\xc2\x5a\x85\xf6\x40\xfa\x72\ \xaf\x4e\xc4\x75\xf5\x90\x78\x55\x28\x12\x54\x3a\x8f\x5c\x89\xd7\ \xd3\xfd\xda\x91\x4f\x7d\x65\xb5\xfe\x6c\xfe\x90\x1a\xba\x35\xc8\ \xb2\xb7\x66\x13\x32\xd3\x89\xa8\xd9\xb6\xbb\x2e\x79\xb8\x3d\xb9\ \x8d\x7a\x54\xea\xa9\x64\x62\x4f\x63\x3c\x7c\xe8\x5b\xc3\x50\x57\ \x37\x43\xfd\x26\x53\x02\xf7\x00\x91\xce\x39\x92\x41\xaa\x46\x42\ \x1a\xfd\x6c\x60\xd6\x0b\xe0\x52\x36\xb1\x37\xb9\x9d\x1d\x5a\x0a\ \xaa\xd4\xc8\xf3\x72\xa4\x75\x9c\xcd\x52\x95\x4a\x54\xd8\x81\xcc\ \xd4\xba\x2a\x7b\x7d\xeb\xad\xee\x19\x4c\x52\xb2\xa9\xd9\x6c\x9e\ \xb1\x94\x94\x8d\x52\x1f\xf7\x5a\x22\xa5\xd5\xc9\x71\x70\x0d\xa7\ \x48\xc8\xec\x4d\x50\xea\x7c\xc3\x0c\x3b\x88\xf4\xa3\xb3\xe2\x14\ \xd4\x0b\xad\xc1\x11\x28\x8a\xd5\x3c\x45\x6b\xed\xc9\x12\xdd\x10\ \x35\x2a\xa3\x7e\x56\xbf\xd2\x16\xa8\xe5\x6a\x2c\x35\x75\x3b\x6e\ \x31\x2e\x55\x6a\x79\xb8\x1d\xa1\xd7\xa8\x4d\x67\x23\xab\x1b\x44\ \xef\x6b\x4d\xc6\x4d\xad\x54\x3d\xca\xd3\xda\x7b\x93\x16\x36\x85\ \xb3\x1b\x93\x9c\x41\x50\x5b\x04\xe4\xcd\x16\x2c\x6d\xc4\x90\xcb\ \x6d\x50\x15\x6d\x79\xd9\xf8\x2d\x0d\xe5\x0b\x8c\x27\x9c\x93\xff\ \x00\x3d\xbf\x49\xc3\xa7\x7a\x95\x54\x0e\xa6\x7d\x21\xff\x00\x2b\ \xf0\x3a\xd5\x2f\xb1\xab\x59\x54\xf6\x1f\xf2\xf3\x1c\xff\x00\x8d\ \x71\x70\xbe\x29\xaa\xfb\x4e\xbe\xad\x4e\x84\xd9\x7d\x84\x87\x75\ \x8c\x67\x86\x77\x5c\x10\x73\xcc\x4b\x02\x1c\x83\x8c\xce\x93\xa6\ \x54\x8f\xbc\xa6\x47\x24\x40\xaa\x36\x69\x50\x5b\xe6\x62\xdf\x4e\ \x3f\xbc\x5a\x3b\x2b\x0d\x87\x27\x12\x8d\x5d\xbe\xd0\x29\xde\xfe\ \x18\x00\xdb\xd3\x99\x24\xaf\x86\x0b\xd8\x4f\x54\x20\x59\x07\x4c\ \x9f\x78\x60\x86\x6d\xc7\x27\xbc\x5b\x03\x92\x41\x90\x30\x11\x61\ \x1a\xac\x64\xe4\xd8\x88\xea\x44\x11\x91\xcc\x91\xe9\x72\x45\xf8\ \x9a\x1e\xc4\x88\x3b\xae\x2d\x60\x23\x02\x12\x2f\x61\x02\x2a\x27\ \xcd\x1c\xa9\x72\x18\x7e\xd3\x28\x2d\x8e\x6d\x1d\x40\xe4\x8f\xd0\ \xcc\xda\x47\x4e\xe0\x0c\x46\xba\x8b\x5e\x24\xb0\x07\x98\x74\x37\ \x3b\x63\x8e\xa4\xcc\xd6\x8e\xa1\x4d\x6f\xbc\xfc\xab\x93\x15\x55\ \xb7\x54\x2c\x7a\xc6\xd5\xa8\x19\x42\x53\x1e\x41\xfb\xc4\xec\xb9\ \xc9\x1f\xac\x10\x18\x80\x6d\x35\x32\x71\xc4\xc7\x52\xa2\xdc\x98\ \x35\x5b\x62\x58\x9c\x98\x83\x19\x85\xf1\x90\x22\x5e\xa6\xd1\x73\ \x00\xb1\x02\xf9\x20\xc5\x56\x6d\xd6\xb0\x9a\x91\x68\x2a\xb8\x20\ \xf7\x93\x66\xe2\xf7\x87\xe6\x20\x9b\x71\x16\xd7\xb5\xa6\xa3\x22\ \x0c\x06\x2f\x0d\x58\x58\xd8\xe6\x4f\x62\x0c\x65\x21\x7f\x31\xb8\ \x11\x06\x52\x2d\xbb\xd3\xac\xa9\x0a\xb0\xfb\xb3\x6b\x73\xde\x4b\ \xb8\x9f\x28\x18\x8d\xa6\x6d\x60\x2e\x3d\x60\x62\x92\xc4\x30\x16\ \xe9\x1e\x14\x54\x5b\xdf\xcc\x20\x00\x2a\x05\xe8\xd6\x8c\xa6\xa5\ \x58\x1e\xa2\x62\xd6\x8e\xd2\x80\x88\xcc\x79\xe9\x36\xa7\x96\x88\ \xb7\xe2\x39\x87\xaa\x40\x94\x95\x97\x86\xe9\x03\x50\xc9\xe4\x52\ \xc7\x8b\xda\x64\x87\x4d\x4d\x4d\x60\x4f\x9a\xd9\x9a\xed\x66\xee\ \x49\xcf\xa4\x2a\x0e\xaa\xaf\x61\x63\x6e\x62\xaa\x1c\xf1\xc4\x92\ \xa4\xab\x74\xb5\xec\xc2\x13\xb8\xa9\x4e\xed\xf5\x9c\xdf\x18\x29\ \xbd\xe5\x34\x6a\x07\x61\xb4\x5e\xf8\xb4\xb1\x6a\xaa\x4b\xe0\x68\ \x5d\xb9\xf1\x18\x0f\xa4\xe7\x6a\x52\xef\x83\xed\x3a\x3a\xea\x82\ \x96\xd5\x02\xe8\x8b\x63\xef\xd6\x46\x5b\x4b\x56\x9e\x2a\x04\x6e\ \xc6\x53\xfa\xab\x88\xd5\x2c\x00\x37\xcf\x51\x28\xd3\x6a\x5e\x89\ \x25\x08\x31\x55\x74\x8e\x41\xa9\x47\xcc\xa3\xa0\x39\x12\x7f\x32\ \x1b\xd8\xce\xbd\x56\x1d\x5f\xb4\xbe\xa0\x5f\x7e\x46\x40\xbc\x7d\ \x05\x56\x60\x2a\x22\x93\xdc\xe2\x71\xe8\xb6\x77\x0c\x58\xcb\xd7\ \x59\x54\xa5\xb0\xc3\xa8\x99\xb3\xf8\x65\x74\xbc\x7a\x26\xa1\x1e\ \x15\x46\x42\x73\x63\xc4\x60\xac\x94\xee\x78\x52\x3d\xc9\x9c\x90\ \xf4\xd8\x82\x55\x90\xf7\x8f\xa5\x5a\xba\x8f\x22\xf8\x8a\x7b\xe7\ \xf6\x99\xfc\xb5\xae\x82\x6a\xd1\x41\x08\x3c\x44\xec\xfc\xcd\xdf\ \x4d\xf2\x87\x63\x76\x53\x23\xa5\x5d\xc1\x0c\x11\x14\xf6\x38\x8e\ \x4d\x69\xbe\xd2\x89\xff\x00\xfc\xe2\x67\x0e\x8d\x51\xc3\x5c\x54\ \x27\xde\xf1\xc1\xec\x3c\xce\x97\xbf\x68\x03\x56\x84\x64\x20\x27\ \xa0\x9e\x0d\x4c\xfe\x1b\xfb\x2d\xe4\x82\xd5\x28\xee\x24\xd3\xcf\ \x75\xc4\x16\xac\x08\xf2\x38\x1e\x96\xcc\x7d\x3a\x0b\x53\x3e\x1d\ \x40\x3d\xa7\x9b\xe1\xe8\xc7\x15\xd1\x4d\xb8\x7e\x65\xb1\x65\x4d\ \xe2\x55\x0d\xb9\x5d\x87\x62\x23\x3e\xd0\xee\x6d\x58\xef\xbf\xe2\ \xe0\xfe\xb0\x46\x92\xb0\x62\x10\x5e\xdd\x8c\x5d\x4d\xc8\xdb\x6a\ \x21\x06\xd7\xb5\xac\x65\xd2\x53\x4b\x50\xb4\xaa\xad\x9d\x88\x3d\ \x0c\x6f\x8c\xea\xc5\x6c\x01\x52\x41\x90\xb8\x42\x40\xdd\x9b\x75\ \x95\x54\xff\x00\x52\x9b\x5f\x15\x17\x6d\xfd\x44\xac\x46\x78\x9e\ \x2d\x20\xe7\xeb\x26\xd6\xd2\x25\x52\xe2\xe5\x7a\xf7\x8f\xf8\x79\ \x1b\xab\xd1\xa8\x40\xb8\xeb\xd0\xc5\xea\x59\x86\xd5\x38\x84\xf5\ \x20\x50\xcb\x5d\x0e\x2d\xb8\x5e\x2e\xba\x5e\xa3\x82\x06\x09\x8e\ \x6f\x2e\xa5\x58\x7c\xa5\x86\x3b\x44\x6a\xdc\xd3\xd5\xd4\x16\xfc\ \x47\xf9\x9d\x23\x20\x16\xa7\x4c\x03\xc9\xc1\x9d\x1f\x83\x0f\x0e\ \xa3\x17\xca\x2a\x13\x39\x4d\xe6\x18\xbd\xef\x3a\x9a\x5f\x27\xc3\ \x75\x0e\x0e\x42\x84\x17\xf5\x97\x2f\x14\x73\xbe\x29\x41\x68\xea\ \x88\x03\xc8\xc3\x72\x91\xd4\x48\x0a\x5f\xe5\x6f\xd6\x76\x95\x46\ \xb3\x42\x69\x37\xfa\xd4\xb2\xb6\xea\x3b\x4e\x4f\x86\xc4\x95\x18\ \xb7\x79\xae\x34\x58\x59\x53\x4e\x9d\xdb\x93\xc4\x10\x40\x4b\x11\ \x93\x18\x77\x6e\x1d\x84\x16\xda\xcd\x6e\x0c\xd0\x55\xf0\x7a\x5e\ \x2e\xa4\x63\xa8\x00\x8e\xe6\x74\x3e\x3d\x58\x16\x5d\x35\x3f\x92\ \x90\xb1\xf7\x31\xbf\x06\xd3\xfd\x8f\x42\xfa\xd7\x17\x0a\xa5\x97\ \xdc\xff\x00\xeb\xf9\x9c\x77\xac\xd5\x05\x4a\x87\x24\xb5\xcc\xe7\ \xef\x2d\x6b\xc8\x8d\x89\x0f\x6b\xe0\x4c\x77\xf3\x90\xc2\xf3\xd5\ \x0f\x58\x15\xbe\x7f\x79\xd1\x83\x74\x8a\x06\xa0\x55\x1c\x53\xf3\ \x5b\xf8\xfd\xe2\x89\x62\x19\xcf\x2c\x61\x61\x68\xfa\xb1\x85\x6b\ \x7c\xc2\xe1\x45\xcf\xbc\x88\x0e\x2c\xa3\xdc\xcd\xdd\x61\xb4\xe4\ \x40\x0a\x77\xdc\x1e\xb9\xef\x08\xa7\xd2\xd2\x0d\xd8\x08\xb8\x87\ \x4d\x18\x37\x04\x08\x29\xfc\x4a\xa8\x01\x9b\xe3\xb4\xa9\x7a\x90\ \xbb\x4a\x69\x8f\x29\x98\xaa\x81\x80\x22\xc7\xd2\x50\xb4\xba\x8c\ \xcc\xda\x64\x62\xae\x31\x83\x07\x20\xc7\x81\x91\x79\xe1\x46\xc3\ \xc4\xac\x4a\xa1\xe0\x75\x6f\x69\x9d\x38\x52\xa3\x3d\xc8\x20\x28\ \xf9\x98\xf0\x21\x0a\xb7\x1e\x15\x2c\x27\x7e\xa4\xcc\xa9\x53\x78\ \xda\x00\x54\x1c\x28\x8a\x40\x01\x20\x03\x8e\xb2\x4a\x69\xb0\x5c\ \x1e\x7d\x21\x92\x8a\x2e\x79\x93\xf8\x8b\xd3\x9e\xf3\x55\x81\x05\ \x9b\xe4\x1c\x98\x62\x1a\xb5\x8f\x88\x57\x00\xe2\xf2\x6a\x95\x17\ \x79\xdc\x09\xcf\x79\x95\xb5\x05\xbd\x07\x12\x7a\xad\xe5\xbd\xe6\ \xa4\x16\x9f\xe2\x2e\x76\x8e\x3b\xc4\xbd\x4d\xc2\xe2\xd1\x6b\xd7\ \xda\x60\x05\x81\x0a\x09\x9a\x1a\xc2\xc5\x6f\xeb\x12\xdb\x8d\xad\ \x7b\xc6\xed\x03\x2c\x6e\x7b\x08\x24\xee\x04\x2e\x3f\xac\x50\x48\ \xda\x3c\xc7\x3d\x84\xf0\x72\x46\x7a\x71\x0d\x10\x11\x9c\x4d\x14\ \xe4\x18\x85\x86\x6f\x1b\x4c\x92\x79\x98\x94\x58\x8d\xd6\xc4\x75\ \x2b\x53\xe9\x73\x0a\x4f\xa0\x1a\xd7\x26\xc2\x58\xb5\x05\x80\x22\ \xfe\xbd\x64\x1b\x89\x60\x4c\x72\x30\x23\x06\x66\xc6\xa3\xa2\x54\ \x96\xa7\xf8\xd1\xbf\x68\x9f\x88\xd2\xdb\xa8\x6b\x65\x7a\x11\x2a\ \xd1\x23\x3e\xd7\x53\x95\x93\xb5\x50\xd5\x1b\xc4\x5c\x13\x31\x3d\ \x68\x14\x7f\xd2\x3d\xe2\xaa\x3d\x81\x94\x14\x29\x4c\x95\xc8\x27\ \x91\x24\xaa\xa7\x71\xb8\xc4\x60\xa9\x98\x96\x37\x96\xfc\x33\x75\ \x30\xd5\x88\xc2\xe1\x7d\x4c\x5e\x97\x49\x56\xb1\x00\x79\x54\x72\ \x4f\x48\xcd\x76\xa2\x95\x35\x1a\x7d\x3e\x55\x7f\x17\x73\xde\x6a\ \xdd\xea\x09\xfd\x1d\x6a\xb6\xb8\x63\xb9\x4f\x33\x9f\xac\x05\x08\ \x29\x6d\xa7\x82\x3a\xcc\x4a\xac\x1b\xcd\x90\x79\x86\x72\xb7\x56\ \x0d\x4c\xf2\xa4\x4a\x4c\x54\x81\x54\xe1\xa9\x9d\x8d\xe9\x35\xea\ \xb5\x45\x17\x55\x2d\xd7\x1c\xc8\xce\xe0\xd1\xa1\xee\xd7\x18\x61\ \x35\x8c\xeb\x49\x4b\xd8\xa9\x43\xea\x2f\x09\x37\x5e\xea\x15\xbd\ \x8c\x6a\x56\x5a\x96\x15\xe9\x82\x47\xe2\x10\x8a\xa0\x37\x5a\x65\ \x87\x42\x0c\xb5\x3c\xae\xc1\x7e\x42\xbf\xf9\x42\x5a\xb7\x3e\x5b\ \x93\xd3\x66\x20\x8a\xef\x7b\x0a\x63\xff\x00\xb6\x61\x7d\xa1\xed\ \x6d\xa0\x7f\xe1\x88\x15\x14\xd7\x51\x53\xfd\x4a\x42\xdd\xd8\xda\ \x37\xc0\xa4\x16\xcd\xa8\x07\xb8\x02\xf2\x55\xb1\x01\x9a\xa3\x2b\ \x1f\xcd\x99\x84\x9d\x9e\x56\x53\xea\x4d\xa6\x70\xaa\x46\xd2\xd2\ \xfc\x0c\x7f\xf2\x38\x8d\xfb\x66\xd2\x05\x1d\x8a\x3f\xda\xb3\x9f\ \x71\xcb\x92\xd8\xe9\xc4\xd5\x37\x3e\x45\x22\xc3\xb4\xbf\x2b\x56\ \xd4\xd5\x6a\x1b\x9a\xcc\x07\x5b\xb5\xa1\x51\xa8\xb5\x1c\x0b\xb3\ \x37\xa0\x83\xa2\xf8\x7d\x5a\xc0\xd7\xae\x4d\x3a\x3d\x5a\xd9\x3e\ \xd1\x8f\x5d\xa9\x93\x4f\x49\x41\xa9\xa5\xb2\xe6\xfb\x8c\x2e\x7c\ \x2b\x53\x6d\x1f\x35\x67\x00\x76\xbf\x9b\xf4\x10\xb5\x1a\xbd\x3d\ \x65\x0b\xe1\xef\x03\x8d\xd3\x8e\x43\x8b\x96\x46\x76\x84\xa6\xab\ \x53\xb1\x16\xe4\x7b\x4c\xfe\x4e\xba\x95\x16\x88\x5d\xcb\xa7\xa6\ \x40\x19\x04\xe6\x68\x34\x75\x5a\x77\xa7\x4c\x1a\x4f\x4c\xee\x17\ \x33\x93\x77\x24\x29\x04\xf7\x9d\x9d\x0e\x96\x9d\x26\x55\xa8\xec\ \x6a\xba\x65\x40\xc0\x06\x16\x62\x9d\xa4\xa8\xe6\x9d\x40\x5d\x6c\ \xc4\x5b\xeb\xda\x1e\xac\x1a\x88\xac\x45\x8a\x83\xfc\x4a\x3e\x3b\ \x4a\xf4\xa9\x37\x2e\xbd\x3b\xf1\x14\xed\xe2\xfc\x27\x72\x9b\x54\ \xa4\xc0\x93\xd7\x22\x52\xfd\x2e\x7a\x59\xdc\x23\x77\x11\x1a\x95\ \xdf\x5e\xaa\x1f\x99\x5d\xad\xea\x2f\x1c\x87\x73\xa5\x65\xb0\xc8\ \xdc\x3b\x5e\x16\xac\x03\xa8\xa8\xe3\x0e\xac\x47\xef\x37\x3a\xac\ \xa1\x29\xd5\x4c\xe9\x12\x29\x7c\x25\x49\xe2\xa5\x5f\xd8\x09\xce\ \x41\x9b\xa1\xc9\x37\xb1\x97\xfc\x51\xd5\x34\x7a\x4a\x64\x64\xa9\ \x63\x6f\x53\x1b\xdd\x82\x25\x42\xd4\x35\x17\x42\x78\xba\x91\x29\ \xd5\x69\x69\xea\x68\x1d\x46\x96\xdb\xff\x00\xee\x27\x51\x25\xd3\ \xd4\x0e\xbe\x11\xf2\x91\xc3\x7f\x48\xaa\x3a\x8a\xba\x3d\x4e\xe5\ \xb8\x20\xda\xc7\xac\xb2\xa4\xcd\x74\x27\x71\xcf\x68\x5a\x4d\x39\ \xd4\x6a\x29\xd1\x51\x96\x39\xf6\x9d\x4d\x55\x0a\x5f\x12\xa2\x75\ \x3a\x4b\x0a\xc3\xe7\xa6\x39\xf7\x8c\xff\x00\x0a\xe9\xed\x5e\xae\ \xaa\xa0\xb7\x87\xe5\x17\xef\x2b\xcb\xa5\x9d\x9d\xf1\xfa\xdf\x64\ \xd1\x26\x89\x05\xb1\x76\x02\x7c\xfd\x83\x50\x26\xdd\x65\xbf\x16\ \xd4\x8d\x46\xa1\xea\x13\x82\x4d\xbd\xba\x48\xc9\x02\x81\x17\x37\ \x26\x3c\x66\x45\xca\xed\x48\xc2\xf7\x16\x99\x51\x49\x7e\x3a\x46\ \x1c\xc7\x84\xbb\xa3\x74\xb5\xcf\xd2\x6d\x94\xac\xa3\xc5\x5a\x63\ \xa6\x0c\xda\xc2\xed\xb6\xfc\x1b\x9f\x78\xdd\x2d\x3d\xfa\x8d\xc7\ \xdc\xc0\x2a\xcc\xf6\xb1\x26\xfc\x49\x12\xaa\x2e\x33\x98\x48\x77\ \x1e\x23\x42\x2a\xb5\xaa\x13\xea\x04\xcb\x81\xe5\x45\xb0\xef\x20\ \x25\xa7\xf9\x88\x00\x7e\xb1\xa9\x82\x02\xad\x87\x73\x14\x39\xb6\ \x48\x8e\x54\x2c\x6c\x0f\xb0\x81\x36\x90\x3b\xb0\x6f\x2f\xd3\x25\ \x4a\x8c\x15\x14\x98\xba\x1a\x5a\x74\xc0\x3a\x82\x41\xe7\x60\xf9\ \xbf\xf5\x28\xf1\x8b\x0d\x8a\x02\x20\xfc\x2b\xfd\x7b\xcc\x5a\xd4\ \x38\x0a\x34\x2e\x6e\x2a\xd4\xe9\xf9\x47\xf7\x92\xd7\x66\xa8\x4b\ \xb1\xbb\x77\x30\xb2\xc4\x28\x5c\x99\xbe\x15\x40\x2f\xb0\xfb\x9c\ \x09\x92\x99\x94\x05\xbb\x60\x7e\xe6\x21\xdb\x7f\x95\x54\xda\x51\ \x50\x28\x6b\xd5\xaa\xb7\xec\xb9\x89\x2f\x4d\x72\x94\xaf\xff\x00\ \x91\xfe\x82\x6e\x02\x59\x80\x16\x5b\xde\x54\xb4\xcd\x7d\x3a\x2d\ \x21\xe6\x5e\x41\x89\x7a\xb5\x00\xdc\x81\x55\x7d\x14\x45\x33\xbb\ \x1f\x33\x13\xee\x63\xe8\x35\xa8\x54\x1f\x3a\xaa\xdb\xa9\x31\x2d\ \x4a\x91\x27\x75\x6f\xa0\x52\x60\xad\x42\xbf\x2b\x1b\xcd\x1a\x9a\ \xa3\xf1\x5f\xdc\x4b\xb4\x35\x5a\x42\xe4\x0b\x80\x3f\x14\x10\xa5\ \x89\xbb\x00\x2d\xc0\x9e\x5a\xee\x41\x27\x69\xff\x00\xeb\x09\x2a\ \xb5\xc5\x95\x7f\x49\x20\x9a\x20\x8c\x11\x7b\x4f\x53\xd2\x35\xb2\ \x40\xf7\x9e\x7a\x8f\x9c\xfe\x91\x7b\x98\xf2\xc7\xf5\x88\x53\xf6\ \x74\x18\x7a\xaa\x4f\x4b\x41\xa8\x15\x0d\x82\x12\x7b\x98\x80\x18\ \xf5\x85\xb8\xde\xc4\xc0\xb1\x99\xcf\x37\xb4\x3a\x67\x37\x81\x76\ \x53\x63\x98\xda\x6e\x30\x0a\x83\xf4\x88\x12\xf9\x88\x18\x10\xd0\ \x30\x36\xe8\x63\x29\x53\x46\x00\x85\x6b\xc7\x2d\x13\x83\xb5\x87\ \x6b\x89\x9b\x5a\xc7\x43\xe0\xcc\x5b\xc5\x07\xa2\x99\xcc\xa8\xd9\ \x6b\xf7\x9d\x4f\x85\x52\x74\x4a\xef\x6f\xc1\x61\x39\xba\x8d\x3d\ \x6d\xe6\xcb\xd6\x62\x7a\xd5\xf1\xea\x35\x5e\x9a\x9d\xac\x67\x9f\ \x58\xc1\x2e\x51\x6f\xde\xd2\x77\x15\x51\x72\xa7\x98\x8a\xb5\x2e\ \xa2\xf3\x78\xce\x9b\x57\x5d\x54\xdd\x2f\x65\xf4\x93\x3d\x53\xe8\ \x60\x54\x6c\xde\x2f\x71\x26\x6a\x46\x74\xd0\xec\xdc\x09\xe5\xac\ \xca\x79\x87\x44\x2f\x86\xc1\x8d\x98\xf1\x13\x50\x10\xd6\x92\x7a\ \x9d\x46\xe0\x90\x7d\xe3\x91\x50\xfc\xd4\xca\x9e\xe2\x0d\x3a\x24\ \xad\xe5\x14\x9f\xc2\xc0\x20\x8f\x59\x55\x04\xb4\xe8\xb7\x0f\xe6\ \xfd\x0c\x2f\x0a\xa2\x35\xd0\x5e\xdd\x44\x2a\x75\x34\x8c\x3e\xf2\ \x91\x07\xfd\xa6\x55\x4e\xa7\xc3\xd1\x6f\x7a\xd7\xf4\x02\x66\xdb\ \x1a\x48\x37\xb1\x00\xd8\xde\x7a\x8d\x12\xd5\x2c\x15\xac\x0f\xeb\ \x2f\xff\x00\xaa\x68\xa9\xdc\x26\x8c\xd5\xed\xe2\x1b\x7f\x13\xda\ \x9f\x8b\x56\xa7\x4d\x3c\x0a\x74\xe8\x96\x17\xf2\xac\x36\xff\x00\ \x16\x42\x29\xfc\x2f\x5b\x5c\x97\xf0\xc8\x04\xda\xe7\x11\x9f\xf4\ \xca\x14\x81\xfb\x66\xb6\x8a\x11\xd0\x35\xcf\xed\x24\xab\x5f\x57\ \x5e\xe6\xa5\x6a\x87\xaf\x99\xb1\x27\x34\xd4\xb5\x8b\x16\x27\xb4\ \x72\xff\x00\x57\x4e\xa8\x6f\x83\x51\xda\x01\xa9\x54\xf5\x21\x6d\ \x2d\x3a\x8d\x26\x97\x4e\x2b\xb6\x97\x61\x23\xee\xe9\xb1\xb9\x3e\ \xb6\x9c\xda\x5a\x6a\x7a\x0a\x43\x53\xa8\x4d\xf5\x88\xbd\x2a\x47\ \xa7\xa9\x90\xd7\xad\x5a\xbb\xb5\x4a\xcf\x73\x7e\xf3\x3f\x9d\x3b\ \x8e\xe8\xf8\xf3\x94\xb1\xd3\xd2\x1d\x01\x6e\x82\x32\x97\xc5\x2a\ \xd4\xbf\x86\x34\xc6\xc2\xe6\xe2\x7c\xb9\xbe\xe0\x37\x2d\xa3\x03\ \x3a\x9f\x29\xfa\x89\x7f\xc7\x17\xea\xbe\xb2\x9e\xaa\xab\x26\xf7\ \xd3\x52\x70\x78\x21\xad\xfd\x26\x0d\x4e\x98\x3e\xda\xba\x54\x5e\ \xbe\x56\x92\x7c\x3f\x59\x46\xb6\x89\x52\xa8\xd9\x54\x62\xfc\x03\ \xeb\x0a\xb5\x1a\xea\xd7\xa4\xeb\x50\x0c\xdb\xad\xa7\x3c\xed\xad\ \x58\x4e\x88\x91\xfe\x58\x37\x62\x07\x1e\xf0\x75\x3f\x12\xda\xcf\ \x4e\x8d\x0d\xae\x2f\xe6\x23\xb4\x9e\x93\x32\xa7\x88\xab\x62\x30\ \x7a\x5a\x43\xf1\x5d\x6f\x88\x01\xa1\xe5\x16\xb3\xfa\xc6\x71\xda\ \xad\xc5\x95\xf5\x25\xc5\x3a\xee\x77\xad\x41\xb1\xbf\xda\xc3\x98\ \xcd\x00\x35\xde\xb5\x16\x5b\x78\xb4\x88\x1e\xe0\xe2\x73\xfe\x10\ \x4e\xa7\x4d\xa8\xd2\x90\x06\x43\x21\xff\x00\x74\xaf\xe1\x95\xd9\ \x6a\x52\xa9\xb4\x87\xa6\xe1\x58\x77\xbf\xff\x00\x91\xb3\x3a\x12\ \xb9\x65\x8d\x36\x5b\x1c\xf5\x1d\xf3\x28\xd7\x2e\xcd\x5b\xb8\x20\ \x82\x6f\x03\xe3\xc8\x28\xeb\x6b\x6d\x18\x5a\xac\x00\xfa\xc3\xd5\ \x55\x0e\x56\xa8\xcd\xd5\x6e\x3d\xc7\xff\x00\xb3\x5f\xe8\x4c\xf4\ \x80\x75\xa8\x96\xd8\x7f\x69\xbf\xe2\x12\x57\x57\x4e\x9d\xed\xb2\ \x92\x8f\xda\x33\x4e\x40\x71\x6b\x32\x1e\x91\x9f\xe2\x2a\x05\xb5\ \x8e\xe0\x8b\x58\x0f\xda\x52\xf6\xbe\x38\xf4\xea\x5b\x70\x3c\xda\ \x31\x6a\x25\x61\xb6\xb9\xb3\x7e\x16\x89\x28\xcb\xba\xe2\x2a\xa7\ \x94\x0f\xeb\x3a\x63\x07\xa5\x4d\x46\x87\x50\x1d\x58\xab\x0e\x08\ \xe0\x89\xf5\xbe\x77\xf8\x46\xe4\x5a\x74\xeb\x56\x4b\x91\xc0\xdc\ \xc0\x7e\xf6\x9f\x21\xa5\xae\xbb\x92\x85\x61\xbd\x09\x1c\xf4\x9f\ \x43\xfe\x23\x6a\x87\x4f\xa5\x14\x01\xb2\x8d\xe4\x2f\x2b\x7e\x05\ \xbd\xad\x39\xf3\x9d\xc6\xb8\xdc\x8e\x16\xb6\x9b\x52\xa9\xb1\xd4\ \xab\x0c\x10\x60\x85\x1f\x66\x6b\xe7\x22\x5b\x5f\xe2\x2b\x55\x85\ \x3d\x6d\x10\xe0\x63\x70\xc3\x09\x9f\x65\xa3\x55\x09\xd3\x56\x0c\ \x18\x7c\xad\x83\x37\xbf\xd1\x9f\xc7\x32\xd7\xe3\xe9\x2b\xa6\x2d\ \xa7\x2d\xfe\xdb\x1f\xd6\x31\x7e\x1b\xab\xb9\x1e\x1f\xb1\xbc\x23\ \xa7\xab\x4b\x4b\x55\x6a\x27\x04\x70\x65\xaa\x44\xa4\x1a\x74\x55\ \x94\xd8\xb3\x5e\xfe\x82\x0b\x56\xaa\xc3\x6e\xec\x1e\x6d\x8b\xc6\ \x56\x04\x78\x63\xfd\xa3\x06\x31\x28\xd8\x5d\x46\x7d\x7a\x48\x25\ \x5a\x63\x77\x9a\x0d\x52\x00\x5b\x09\x6f\xd9\x6a\xd4\x1e\x4a\x64\ \x0f\xcc\xf8\x1f\xbc\xe9\x51\xf8\x32\xe9\xb4\xeb\xaa\xd5\xde\xb1\ \x71\x75\x14\xd4\x95\x1e\xe6\x57\x94\x87\x2b\x95\xa3\xd2\xb5\x54\ \xf1\x5c\x8a\x74\xff\x00\x3b\x75\xf6\xef\x2f\xa5\x4d\x95\x7f\xca\ \xd2\x65\x5e\xb5\x5f\x04\xfb\x76\x8c\x3a\x95\x4a\x85\x97\x46\x5c\ \x81\x61\xbe\xe2\xdf\xa7\x1f\x48\x93\xa9\xd4\xb3\x5c\x01\x4e\xff\ \x00\x97\xfb\x99\x9e\xe9\xea\x28\xa1\xa4\x46\x24\xbd\x66\xb7\x5d\ \x88\x4f\xee\x6c\x25\x28\x9a\x6a\x43\xe4\x07\xd5\xea\x0f\xe0\x4e\ \x76\xfa\xd5\x33\x55\x99\xcf\xab\x5e\x35\x0e\x00\xb5\xa6\x6c\x31\ \x6f\xda\x68\x2d\xf6\xb1\x18\xe1\x12\xdf\xda\x0d\x13\x46\xb5\x4f\ \x2d\x03\xea\x4b\x19\x23\x2f\x9b\xd6\x75\x7e\x09\x4d\x48\x62\x72\ \x57\x30\xbd\x43\x3b\x73\xb5\xaf\x4e\x86\xa0\xd3\xfb\x35\x30\x47\ \x52\xc4\x9f\xe6\x23\xed\x34\x8e\x02\xec\xf6\x02\xd0\xbe\x20\xcd\ \x53\x52\xec\xc2\xd9\xb4\x85\x97\x69\xb8\x17\x9b\x93\x59\xb5\x56\ \xe2\xc4\x8a\x75\x03\x7a\x5e\xd2\x5a\xb5\xab\xa1\x20\xbb\xaf\xa1\ \x82\x2f\x7c\x73\x1a\x6a\x06\xa5\xb6\xa0\xdc\xa3\x1e\xa2\x39\x89\ \x3b\x57\xa8\xc6\xd7\x46\xf7\x51\x37\x78\xb8\x2d\x4a\x9f\xe9\x69\ \xea\xb4\x36\xae\xe4\x3b\x90\xf5\x10\x6c\x7b\xe2\x21\x42\xb6\x90\ \x53\x26\xa6\x9d\x8d\xcf\x2b\x52\xdf\xc8\x8d\x46\xf8\x71\xb7\xdc\ \xea\x41\xe9\xe7\x1f\xda\x4b\x53\xfd\x3a\x61\x86\x0e\x63\x68\x85\ \x15\x17\x3c\x19\x62\x15\x4f\xb0\x80\x71\x5f\xea\xc3\xfb\x45\x28\ \xd0\x13\x7f\xbf\xfa\x01\x37\xe2\x08\x16\xab\xed\x18\x26\xe2\x21\ \x14\x81\x91\x28\x96\x21\xf8\x70\xfc\x1a\x8f\xd4\x4d\x73\xf0\xee\ \x94\xeb\x1f\xa8\x92\x10\x07\x1c\xcc\xfa\x4b\x16\xa9\x35\x34\x83\ \x2b\x41\xcf\xfe\x4d\x09\x75\x2a\xb9\xa7\xa7\xa6\x07\x7b\x5e\x4b\ \x68\x4b\x71\x83\xc4\xb1\x6a\xfa\x7a\xca\xa4\x00\x08\x5f\x61\x3c\ \x6b\xd5\x26\xc5\xda\xd7\xef\x24\x5b\x10\x19\x2f\x8e\x93\x69\xb8\ \x2e\x2e\x7e\x90\xfc\xc3\xae\xdf\xc3\xcb\x7f\xd3\x75\x35\x2f\xc5\ \xa7\x33\x56\xc7\x7e\x18\xe4\x4e\x96\x9a\xcb\xf0\x2d\x4b\xde\xc3\ \x70\x9c\x8a\xcd\xbc\xd8\x1e\x00\x98\xe3\xe9\xbe\x16\xd5\xaa\x04\ \xc3\x9f\xd6\x26\xa5\x5a\x8c\xa3\x86\x37\xed\x18\xc1\x48\x00\x70\ \x73\x0e\x8d\x55\xa1\x40\x8f\x0b\xf1\x58\x90\x73\x3a\x32\x99\xc1\ \x03\xce\xab\x7e\xd6\x99\xb0\x58\x12\x96\xfa\xc7\x1d\x45\x12\x4e\ \xf4\x60\x3a\x5b\x33\x05\x5a\x06\xe4\x60\xfa\x89\x02\x8e\xdf\xca\ \x62\x6a\x5a\xf8\x32\x8f\x2b\x0b\x5c\x40\xa9\x44\xd8\x91\x9b\x45\ \x1e\xac\x54\x58\x19\xa3\x63\x72\xb9\xee\x0c\x16\xc1\x83\x92\x64\ \x4d\x4a\x6a\xc7\x0c\x47\xb8\x85\xe1\xa5\xff\x00\xd4\x59\xb4\xa9\ \x54\xf0\xcf\xe1\x07\xa9\xc4\xf1\xd8\x08\xdd\x53\x75\xba\x08\x22\ \xfc\x3a\x5b\xf2\x4b\x7e\xd2\xbd\x53\x5d\xd4\x00\x00\x0a\x07\x1e\ \x92\x62\xe9\x7c\x0f\xd7\x31\xce\xde\x35\x30\xc0\xdd\x94\x5a\xc6\ \x15\x15\xe1\x96\x24\xdc\x9e\xd3\xa1\xa7\xa6\x9a\x1d\x3f\xda\x6b\ \x28\x6a\xa7\x34\xe9\xff\x00\x53\x17\xa3\x41\x41\x3e\xd5\xa8\xc8\ \x07\xc8\x9f\x98\xc5\xea\xab\x3e\xa5\xda\xa3\x9c\x9f\xda\x17\xbe\ \x8f\x88\xf5\x55\x2a\x57\xac\xd5\x6a\xbd\xd8\x9c\x98\x86\xb7\x56\ \x16\x85\x58\xde\xc0\xf1\x12\xd9\xc4\xdc\x8c\xd6\xda\xe7\x0c\x23\ \xb4\xd4\xea\xbb\xaa\xd3\x17\x24\xe2\x2e\x9d\x32\x5b\x22\xfe\x82\ \x74\x74\x48\x52\xb2\xb9\x21\x76\x82\x6c\x3d\xa1\x6a\x90\xdf\x01\ \x95\x76\xd4\x2a\x48\xfc\xa6\x5b\xa0\xd5\x94\xb5\x13\x44\x95\xe2\ \xe3\x91\xeb\x39\xca\xa0\x9d\xc8\xa4\x9b\xf2\x67\x43\xc5\xfb\x35\ \x1f\x16\xab\x03\x51\x6d\xb5\x07\x33\x9d\x6e\x1f\xf1\x5f\x14\xd3\ \x1a\x6a\x24\x03\x7f\x3b\x13\x6b\x89\xce\x4d\x13\x28\xb3\xd4\xa4\ \x14\x8e\x0b\x44\xb3\xbd\x5d\xec\xcc\x6e\xd7\xcd\xfb\xc1\x24\x05\ \xa7\x7b\xde\xdc\xfb\x46\x4c\x98\xad\x74\x34\x3a\x5a\x74\x2a\x17\ \xfb\x5a\x05\x20\x03\xb7\x3d\x71\x3b\x7a\x43\xa5\x02\xad\x7d\x38\ \x0d\x54\xe4\x92\x30\x0d\xb9\xfd\x67\xcc\x53\xba\x12\xa0\x60\x9c\ \x4b\x2b\x55\x14\x69\xa5\x6b\xd8\x93\x70\x2f\xd4\x73\xf4\x99\xe5\ \x34\xcb\x89\xb5\xf7\xaa\x8e\xec\x6e\xcc\x03\xfd\x7a\xc5\xa9\x05\ \x68\x11\xf8\x94\xaf\xd4\x1c\x7f\x36\x94\xd5\x55\xbe\xf5\xf9\x41\ \xb7\xff\x00\x56\xe2\x47\x51\x48\xd3\xd4\x41\x86\xa4\xfb\x87\xb7\ \x07\xfa\x4d\x40\xf5\x37\xf0\xb5\x00\x26\x51\xbc\xc0\x77\xf6\x9d\ \x7f\x89\x9f\xf3\x65\xc7\x0e\x8a\x7f\x6e\xd3\x87\x52\xa6\xd0\x2a\ \x15\x06\x9b\x1c\x8b\xfc\xad\xd6\xd3\xa7\xae\xd4\x78\x9a\x0d\x2e\ \xad\x46\x02\xf8\x6d\x63\xc5\xb8\x95\x9d\xa9\x49\x6a\x14\xea\x12\ \x11\xb6\x9b\x70\x67\x3b\x53\xa2\x75\x72\x1d\x0d\xbb\x81\x79\xd3\ \x73\x4e\xaa\x25\x45\x19\x38\x22\xf6\xfd\x24\xef\x55\xc3\x91\x4e\ \xa9\x16\xc9\x53\x19\x68\xb1\xce\xd3\xe9\x9a\xa6\xaa\x92\x29\xbe\ \xe6\x02\x75\xbf\xc4\x4d\x53\xfe\xa7\x55\xd3\x72\xec\x70\xa2\xdd\ \xac\x04\x4d\x1d\x53\xd0\xd4\xd3\xa9\x51\x29\xb5\x98\x1b\x95\xbf\ \x1e\xb3\xb9\xf1\x23\x4c\x6b\xaa\x25\x81\x0e\xbe\x20\x36\xb8\x3f\ \xf2\xd0\xe5\x7b\x32\x74\xf9\xd6\xaa\x95\xad\xf6\x8d\x30\x6b\x8b\ \xee\x4c\x19\xb4\x68\xd0\x15\x03\xd1\xd4\x94\xb1\xe2\xa2\x91\xfc\ \x4e\xba\x36\x9e\xa5\x35\x76\xd1\xd3\x20\x9b\x5b\x22\xf1\x1f\x1d\ \xa5\xa3\xa0\x29\x0a\x29\xe1\xd6\xb5\xdd\x03\x5c\x2f\x68\xce\x5d\ \xe0\xcf\xa5\x8a\x1a\xe5\xc5\x1a\xa9\x51\x4f\xca\x05\x41\xfd\x4c\ \x05\x5d\x42\xd6\xa9\xa7\xd4\xa9\x42\x56\xfb\x67\x91\xfc\x34\xb3\ \xed\x35\x6d\x74\x07\x20\x7b\xc9\x92\xab\xb6\xa7\xc4\xa8\xe4\xb7\ \x52\x65\xda\x38\xa5\x14\xac\x1e\xb8\x38\x51\x60\x23\x8e\xae\x9a\ \xd3\xdb\x49\x52\x99\xbd\xf7\x01\x76\xfd\xe2\xb5\xc8\xa7\x65\x5b\ \x8c\x8b\x7e\x91\x5a\x6a\x41\xea\x79\xc8\x14\xc0\xdc\x4f\xa4\xb2\ \x62\x31\xc2\x90\x35\x15\xea\x3b\xdf\xe5\x0c\x72\xdf\xfa\x93\x9d\ \x46\xa0\xbb\x1a\x75\xdd\x7d\x15\xac\x2d\x17\xab\xa8\x6b\x55\x27\ \x80\x30\xa0\x70\x04\x5a\x9b\x63\x9f\xac\xd4\x83\x55\xd3\xd5\x6a\ \x85\x97\xed\x35\x71\xc5\xd8\xc6\x2e\xa7\x52\x72\x35\x0e\x4f\x63\ \x25\xa4\xc6\xe2\xc4\x0b\x77\x95\x53\xce\x08\x10\xb2\x15\x34\x75\ \x3a\x93\xcb\x06\xb6\x32\x01\x8f\x15\x9e\xd6\x64\xa6\x7d\xd0\x49\ \xd1\x06\xdc\x7e\x92\x84\x51\xb6\xf7\x17\x98\xa6\x34\xd4\x53\x96\ \xd3\xa1\xef\x6b\x89\x57\xc2\xeb\x51\x4a\xa0\x04\x65\xbf\xfb\xae\ \x24\x7b\x7e\xb3\x57\xca\x43\x2d\xaf\x0b\x34\x8b\xe2\x5a\x75\x4a\ \xec\x37\x81\x73\x7c\x89\x0b\xd1\x75\x05\xad\x71\xdc\x66\x76\x35\ \xaa\x35\x5a\x25\xac\x07\xde\x53\xc3\x5b\xb4\xe4\x97\x65\x37\x42\ \x41\xeb\x1e\x35\x54\x8c\x97\x38\xc4\x1b\x6d\x6f\xf6\x9c\x19\x43\ \x3a\xb1\xf3\x0d\xa7\xb8\x8a\xac\x85\x73\xc8\x3d\x44\xdc\xac\x05\ \x77\x52\x7c\x64\x1f\xdc\x4f\x3d\x35\x23\xc4\xa6\x3c\xbd\x47\x69\ \xaa\x37\xa5\xba\x8e\x20\xd3\x72\x86\xe3\xac\x53\xda\x85\x1b\x94\ \x7e\x55\x1d\x66\x97\xc8\xb0\xb1\xe6\xd1\x9a\x94\xbb\x07\x51\x82\ \x05\xc7\x68\xa5\xdc\x09\xcd\xba\x4a\x23\xb5\x20\x54\xa5\xb8\x9e\ \x01\x91\xa5\xed\x6b\x99\x52\xe7\x4f\x51\x7f\x12\xc9\x10\x62\x51\ \x18\xac\x7a\xe6\x35\x54\x15\xb9\x58\xa5\x19\xcc\xa1\x6d\x6f\x49\ \x54\x1f\x0d\x2f\x05\xb6\x64\x01\x98\x4e\xc0\x45\x6e\x17\x26\x49\ \x82\xca\xc0\xa9\x30\xf0\x4e\xf4\xc6\x72\x22\xef\xeb\x78\x54\x81\ \xb8\x63\x85\xeb\x24\xed\x23\x01\xfe\x1a\xab\x73\xcd\x41\xfd\x27\ \x19\x98\x5c\xfa\xf4\x9d\x1a\xe7\xff\x00\x82\x00\x0b\x06\xab\x70\ \x3d\x27\x26\xc4\x9d\xd6\x99\xe3\x3d\x34\x42\xe1\x07\xbc\x63\x25\ \xe8\x31\x3d\x48\x30\x0f\x20\x46\x33\x0f\x08\x8b\x75\x9a\x09\x8a\ \x40\xb7\xa4\x6f\x59\xa5\x62\x30\xa0\x2e\x63\x40\x36\x9e\x0b\x98\ \xf5\x41\xb7\x3c\xc8\xba\x55\x7e\x15\xe1\x53\xf1\x2a\xb8\x03\xb0\ \xe6\x44\xdb\x17\xfd\x3d\xaa\x3b\xf2\x63\xc5\x4a\xd5\xc1\x17\x3b\ \x78\xdc\x78\x92\x57\x75\x46\x2a\xa0\x39\x1d\x4f\xf6\x98\x9b\xf4\ \xd6\x6e\x3b\xae\xcf\xba\x2d\x91\xaf\x70\x2e\x3d\x26\x78\xce\x70\ \x6e\x3d\x85\xa6\x87\x7b\xe2\xe6\x68\x16\xc0\x92\x31\x2d\xd1\x52\ \x37\xf1\x2a\x02\x11\x79\xf5\x85\xa5\xd2\xbd\x66\x04\x10\xa7\xb4\ \x7e\xa7\x72\x11\x4c\x92\x40\xe9\x33\x6f\xc3\x22\x7a\xd5\x8e\xa1\ \xfc\xeb\xb4\x0f\x94\x76\x98\xb4\x6a\x03\x70\x09\x11\xa0\x39\x37\ \xb8\x55\xee\x61\x8a\x81\x07\x94\x93\xea\x65\xab\x11\xbe\x98\xb3\ \x92\x70\x3a\xfa\x41\xb6\x9a\x91\xf2\xa8\xa8\xdd\x49\xe2\x50\xf5\ \x55\xfc\x8f\x80\x64\xe6\x88\x53\x75\xf3\x00\x63\x3f\xd0\x3a\x75\ \x18\x9b\x04\x50\x3b\x2c\xa1\x15\x42\x33\x13\xb7\xa4\x9f\x6b\x5c\ \x58\xed\xf4\x86\x9e\x53\x66\xb9\xb7\xef\x0a\x4e\xa4\xc5\x48\xda\ \x36\x91\xc4\x46\xa4\x35\x5a\x9e\x66\xc0\xe6\x55\x46\xfb\x19\xc8\ \xf6\x88\xa8\x1c\x0b\x6d\xf7\xf5\x84\xf5\x02\x90\x02\xc2\xfe\x90\ \xd9\x41\x41\xe8\x4d\xa0\x2d\xc9\xb6\xdc\xdf\x12\xdf\xb2\x55\x28\ \x2c\x00\x24\x71\x1b\x54\x4e\x83\xee\xc7\x5b\x75\x8d\xac\xc2\xa5\ \x91\xb0\x07\x18\x8a\x0a\xc8\x76\xba\xd8\x8e\x90\x99\xe9\x2b\x10\ \x72\xdd\x20\x55\x69\x69\x33\xd1\x08\x3c\xc3\x69\x42\x7d\x3a\x1f\ \xa4\x88\xdb\xc4\x05\xc8\xcf\x95\xff\x00\x83\x1d\xa7\xd5\x35\x0a\ \xaa\xd4\xc0\x00\xf4\xef\x27\xd5\x3d\xdd\xf6\xad\x83\x1b\x89\x4f\ \x55\x2f\x65\x0a\x3b\xa8\xd4\x7e\x7c\xae\x2d\x7b\xf6\x22\x57\xf0\ \xf5\xa7\xe1\x56\xf8\x79\xf3\xef\x1b\xe9\x93\xc1\x23\xb4\xe7\x57\ \x53\x5a\x96\xe1\x97\x53\x63\x6e\xbd\x8c\xf6\x8b\x51\xf6\x7a\x89\ \xe2\x1c\xa3\x5d\x6d\xc8\x9a\xb3\xa1\xbd\xb7\xc4\xa9\x51\xb6\xde\ \xc1\x71\xd8\x2c\x36\xf3\x0d\xa8\xc1\xd8\x2d\xaf\xde\x37\xe3\x54\ \x7e\xf1\x6b\x52\x3f\x73\x5f\xce\x2d\xc5\xfa\xc8\xd5\xd6\x90\xf2\ \xe5\xe5\x3b\x83\xc3\x45\x3f\xbb\x1b\xae\x02\x9b\xe7\xa9\x9d\x9d\ \x7b\x87\xd2\x68\xab\xde\xf7\x4d\xac\x3d\xa7\x09\xaa\xee\xb3\x31\ \xb9\xe6\xd3\xb3\xa2\x74\xab\xf0\x0a\x8d\x50\x16\xf0\x6a\x6f\x17\ \xeb\x7e\x9e\xd0\xe5\xf2\x98\x1a\xfa\x93\xa7\x0b\x58\x0f\xbc\x71\ \xe4\x1f\x97\xd6\x41\x72\x0b\x6a\x2a\xf9\xbf\x2d\xfa\x98\x02\xa3\ \xd7\x66\x15\x0d\xd9\xcd\xc1\x3d\x0c\x73\x80\x54\x52\xe0\xa8\xc7\ \xbc\xa4\xc4\x92\xe5\xdf\x79\x27\x75\xf9\x8d\x71\xe2\xa7\x88\xb8\ \x61\xf3\x01\xfc\xcc\xda\x43\x01\xde\x36\x98\xd8\x77\x0f\xd3\xfa\ \x4d\x50\xa7\x35\x74\x23\x9f\x2e\x62\x2a\x59\x34\x66\xd6\xdd\x50\ \xdb\xe8\x25\x7a\x6d\x83\x72\x8b\x94\xa8\x2c\x2d\xf8\x4c\x97\x5e\ \x36\x8a\x54\xec\x6e\x16\xff\x00\xbc\xcc\xf7\x0b\x9c\x41\x53\x83\ \x36\xd7\x1b\xad\x6b\x47\x81\x65\x69\xbb\x76\xd3\x18\xb5\xf9\x9b\ \x18\x4d\x30\x6f\x9e\x25\xb4\x14\x6d\xe6\x22\x90\x52\x7a\xdc\x4a\ \x11\x80\xe9\x33\x54\x53\x4e\xdd\x31\x1c\x8c\x0e\x36\xde\xdd\x64\ \xc9\x53\xa7\xe9\x08\x54\xb1\x98\x68\xe2\x73\x8c\x4f\x02\x49\xce\ \x62\xf7\xdf\xa9\xbc\xf2\xb8\xda\x4d\xfd\x24\x75\x67\xc3\xeb\xaa\ \x57\xf0\xdc\xfd\xdb\xe0\xde\x47\xf1\x0a\x27\x4d\xa8\x7a\x47\x20\ \x64\x7a\x88\xa7\x39\xc4\xae\xb9\xfb\x67\xc3\x45\x4e\x6a\xd0\xe7\ \xd4\x43\x32\xea\xf5\xca\xac\x46\xde\xf1\x4b\x55\x97\xd4\x1e\x41\ \xeb\x0c\x82\x41\x07\x9e\x91\x6c\x3c\xbe\xa2\x75\x60\xe4\x0a\x4d\ \xd0\x9b\xf6\x9e\x64\x05\x83\x01\xef\x13\x4c\xdb\x23\x99\x52\x30\ \x66\xb3\x73\xd6\x17\xa4\x33\xe5\x60\xd6\xc1\x5c\xc0\xac\x80\x58\ \xad\xb6\x9e\xf1\xf5\x05\xa8\x02\x7f\x09\xfd\xa4\x81\xac\xd9\xca\ \xb7\x30\x86\x8a\x98\x01\x81\x27\xe6\x16\x92\xf0\x48\x94\xd4\xf2\ \xb2\x8b\x8b\x0b\x10\x62\x2b\x62\xb3\x8f\x59\xa8\x1e\x5e\x91\x81\ \xed\x88\x08\x31\x08\xa9\xc9\xb4\x93\x1c\x96\xe9\x68\x07\xa8\x84\ \x39\x9a\xaa\x59\xad\xd4\xe2\x29\x94\xa9\x97\x6c\xe0\x0e\x61\x39\ \x0c\xc1\x54\x59\x47\x02\x1d\x45\xda\x05\x35\xfa\x9e\xe6\x0a\x21\ \xdd\x91\x04\xe8\xea\x80\xff\x00\xa4\x69\xd4\x77\xfe\xa6\x72\x88\ \x39\x02\x76\x2a\x53\xdf\xf0\xca\x37\x36\x00\xff\x00\x79\x1b\x53\ \x00\x12\xa6\xe2\x67\x8d\xc3\x62\x36\xb9\x00\x01\x35\x50\x94\xb7\ \xac\x68\x50\x5a\xd0\xac\x14\x58\x5a\xd3\x5a\x08\x14\x89\x36\xb8\ \xbf\xbc\x67\x80\xfd\xc4\x6e\x01\xb8\x17\x8c\xa7\x51\xea\x79\x43\ \x59\x7b\x0e\x21\x6d\x24\x26\x9d\x89\x17\x36\x95\x52\xd2\xb5\x43\ \xb5\x58\x5f\xda\x12\x84\xfc\x22\xde\xa6\x17\x8e\xe9\x7d\x87\x60\ \xee\x04\xcd\xb4\x95\x42\xa1\xa8\xf5\x3c\x32\x02\xaa\x1d\xa2\x40\ \x43\x96\xc8\xcc\xdd\x3d\x4f\x0a\xb0\x22\xe3\xbc\xa6\xb8\xf1\x06\ \x00\x43\xe9\xd6\x6b\xca\x11\xe4\x1e\x04\x75\x2d\xa0\x5c\xe0\x7b\ \xc5\x3b\x3a\x9b\x11\x73\xea\x20\x96\x63\x92\x78\xe9\x68\x85\xcb\ \xaa\xdb\xfe\x9d\xc0\xeb\x18\xae\x18\x07\x7b\xed\xfe\x64\x74\xd6\ \xd6\x2c\x05\xcf\x4e\xc3\xb9\x9e\x7a\xf7\xab\xb7\xf0\x4c\xe1\xd5\ \x6f\x50\x3f\x00\x01\xda\x2a\xa3\x13\x27\x7a\xbb\x7c\xa3\x27\xbc\ \xc5\xaa\xd7\xe7\xe9\x19\x16\x8a\xa2\x9b\x8b\x98\x6f\x50\x25\x82\ \x8b\x93\xc9\xea\x27\xbc\xb9\x37\xf3\x73\x13\x7b\xab\x13\x9e\xb7\ \x88\x3b\xc4\x07\x2f\xf3\x77\x9e\x5c\xb8\x04\x9e\x6c\x3d\x64\xd7\ \x27\xa4\x66\x90\x95\xac\xa6\xf8\xbe\x6f\x2c\x4b\xaa\x56\xd8\x82\ \x9d\x30\x40\xbd\xcf\xac\x45\x57\xdd\x92\x4f\xeb\x32\xab\xab\x33\ \x2a\x9b\x10\x6d\xef\x10\x77\x0e\x6e\x3d\xe1\x21\x57\xf0\xf7\x08\ \xef\x55\xb3\xe1\xa1\x61\xef\xd2\x7a\x9d\x77\x7b\xb3\x16\xb9\xea\ \x4c\x4e\x98\xed\xa7\x5c\x8e\xa9\xc7\xb1\x12\x77\xae\x58\x80\x4e\ \x3b\x09\x60\xd5\xb5\x2b\xbd\x45\xb3\x35\xca\x8b\x66\x25\xaa\x6e\ \xf3\x03\x73\xd6\x25\x9c\x97\x0f\xf4\x22\x10\x6d\xb9\x8e\x25\x6e\ \xaa\x55\x7c\x3b\xee\xda\x0d\xbb\xcc\x55\x0c\x36\xb9\xb9\x27\x11\ \x0d\x51\x8d\x15\x65\xe1\x7c\xa7\xdb\xa4\x05\x26\xe0\xee\xb1\x86\ \x2d\x34\x87\x47\x20\x27\x90\x8b\x30\x12\x7a\xda\x72\x1c\x5d\x85\ \xfa\x11\xd6\x3d\xea\x92\x4f\xaf\x30\x43\x78\xa3\xc2\xc6\xf1\xf2\ \x98\xa5\x3a\x0a\xad\x56\x8b\x68\x2b\x2e\x0f\xfa\x44\xfe\x69\x05\ \x4a\x2d\x4d\x89\xce\x0d\x8a\xf5\xbc\x63\xb9\x50\x01\xc0\x5f\xd4\ \x18\xfd\x60\xfb\x45\x11\xaa\xa6\x6e\xdc\x54\x1e\xbd\xe5\xe5\x4e\ \x62\xef\x7a\x81\x47\x24\xda\x7d\x17\xc3\x6a\xa8\xad\xff\x00\x4b\ \x36\xda\xf4\x4a\xdc\xf5\x6e\xf3\x95\xa4\xa5\x67\xde\xcb\x62\x82\ \xfc\x46\x53\x15\x68\xea\x29\x57\xe4\xa9\x0d\x71\xef\x0e\x5d\xa9\ \xd3\x28\xa0\x5a\xbb\x5c\x10\x54\xe7\xe9\x1a\x58\x54\x06\xa0\x17\ \x61\xcd\xa5\x5f\x16\xa2\xa9\xac\x35\xd0\x79\x2a\xae\xf1\x6f\x59\ \x15\x26\x14\xce\x14\xdf\xf9\x96\xef\x66\xf4\x37\x50\xc3\x70\xbd\ \xfa\xcc\x42\x40\xb1\x1c\x42\xbd\x8d\xc1\xf2\x9e\x3d\x27\xb6\x9e\ \x57\x83\xcf\xa4\x91\xff\x00\x0f\xaa\x52\xb8\x04\x02\xad\xf3\x2c\ \x2f\x89\x04\xad\x59\x2b\x20\x21\x0a\xd8\x77\x16\x83\x40\x78\x34\ \x9a\xa3\x7c\xec\x2c\xa3\xfa\xc6\xe9\xc2\xd4\x46\x4c\x03\xc8\xf7\ \x99\xbe\xe9\xf8\x91\x90\x05\xb8\x31\x55\x45\x90\x1f\x58\xda\xd7\ \x50\x47\x26\x24\x5c\xd1\x62\x3a\x7a\xcd\x40\x58\xc1\xb8\xfd\xa3\ \xd0\xdc\x5b\x82\x3b\xc9\xee\x6f\xd6\x36\x8b\x02\x00\x8d\x06\xd8\ \xda\x1a\x1b\x8c\xf3\x3c\x06\xe1\x09\x54\x8e\x98\x98\x22\x17\xb5\ \xa6\x90\xa2\xd7\x98\xcf\x6e\xc3\xd6\x2f\x53\x7d\xc0\xdc\x0c\x4a\ \x42\x63\xba\x6d\xc6\x6d\x19\xf0\xfd\x6a\x69\xf5\x00\xb0\xba\x1c\ \x30\xf4\x91\xae\xd3\x62\x49\x3f\x48\x15\x0d\x3b\xda\xed\x88\xfe\ \x46\xab\xf8\x85\x3a\x74\x35\x05\x00\xf2\x9c\xa9\xee\x24\x95\x16\ \x9b\x36\x0d\xaf\x29\x2c\xba\x9f\x86\x90\x48\x2f\xa7\xfd\x4a\x99\ \xcf\x50\x2e\x00\x78\xc5\x4e\x14\xc8\x36\x0d\x71\xd2\x30\x21\x27\ \x83\x26\x4a\xbb\x58\xd8\xde\x55\x4f\x55\x75\xb3\x01\x2b\xa0\xc4\ \x6d\xc1\xa8\xb1\xc3\xe0\x7b\xc9\x19\x18\x55\xda\xc0\x80\x25\x0e\ \xc8\xc8\x7a\x58\xc0\xac\x1e\xa0\x1e\x7b\xac\x21\x25\xaa\x6f\x62\ \xbf\xa4\x0a\xe7\xcc\x8d\xdd\x7f\xf5\x32\xa2\x3a\x11\x71\x68\x75\ \xfc\xfa\x75\x7f\xca\xc4\x19\xa0\x2a\x37\xb5\xfa\x75\x8e\x04\x5a\ \x46\xaf\xd2\x39\x1f\xa1\x32\xb1\x1b\x81\x99\xb4\xc8\x15\x06\x22\ \x09\xb9\xbd\xed\x1a\x97\x16\xdd\xcc\x2a\x33\x53\x4c\xef\x36\xf7\ \xe2\x65\x31\x70\x01\xe6\x55\x59\x77\x22\x54\xee\x22\x45\xaf\xea\ \x21\xa5\x50\x27\xfe\x98\x01\xe8\xf1\x09\x60\x4d\xf8\xea\x25\x08\ \x37\xfc\x3e\xa5\xb0\x55\xaf\x69\x20\x36\x27\x33\x30\xb2\xaa\x78\ \x75\x6f\x6b\x88\xa6\xb9\xe3\x12\xa2\x43\xd2\x3f\x99\x78\x93\x95\ \x3d\x66\xa5\x14\x19\x2a\x01\xed\x2b\xd3\x22\xec\xfe\x64\xaa\x3a\ \x71\x2b\xd3\x9b\x15\xed\xd6\x55\x46\xd5\x0b\xb8\xdb\x0a\x38\x11\ \x42\xc5\xf6\x37\xc8\x32\xd1\xc5\x81\x73\x7e\x82\xf1\x1a\x8b\x26\ \x98\x5c\xd9\x9c\xe7\xda\x10\xb9\xe5\x7c\xd7\x8c\xde\xcf\x83\xfc\ \x73\x18\x11\x40\xc9\x04\x99\xa2\x9d\x81\x20\x19\xbd\x64\x92\xed\ \x7d\x8c\x37\x5b\xf6\x82\x6c\xa7\x19\x63\xd7\xa0\x8c\x74\x6b\x10\ \x05\x80\xeb\x3c\x82\x8a\x9f\x3d\x4c\x75\x02\x48\x6f\xe5\x05\x0e\ \x1c\x80\x3d\xe4\x75\x18\x82\x40\xc4\xb7\x51\x57\x4c\x54\x3a\x5d\ \x88\x16\x6f\x49\x13\xea\x94\xe1\x10\x03\xeb\x28\xa8\x4b\x31\xeb\ \x09\x5f\x60\xb9\xe7\xa0\x8b\x50\xef\x76\x20\xd8\x76\xeb\x0f\x66\ \xe5\xdc\xee\x03\x75\x1d\x62\x06\x6a\x96\x39\x98\x84\xee\xc1\xb5\ \xe2\xc8\x23\x0a\xb6\xf5\x33\xc0\x30\x39\x92\x30\x55\x50\x6d\x6f\ \xac\xf6\xe0\x5a\xf7\x8a\x70\x37\x11\xb8\x4f\x12\x8a\x2e\x5a\xf2\ \x47\xd6\x37\x22\xa0\xb6\x7b\x77\x9e\xf1\x89\x16\x7e\x3a\x45\xd2\ \xa8\x86\xea\x4e\x0f\xed\x3c\xce\x41\xb1\x37\x3e\xd2\x4a\x34\x96\ \x35\x36\xde\xe1\x94\xaf\xed\x23\x75\x20\xee\x63\x61\x18\x2a\x0a\ \x65\x59\x72\x46\x63\x35\x66\x99\x7c\x8b\x06\x1b\x94\xc9\x02\x9d\ \x65\x65\x29\xd6\x12\x31\xb6\xc0\x33\xd4\xc4\x25\x3d\xae\x1b\x22\ \x31\xd8\x11\x75\x36\x1d\x64\x86\x95\x16\x99\x2a\xd9\x0c\x2c\x6d\ \x05\xc9\x07\x69\xb5\xc1\xc5\xa2\xce\xdb\x5c\x9b\x1e\xd3\x54\x17\ \xb0\x04\x16\x1f\xc4\x90\x8b\xb3\x75\x9e\x56\xc8\xb3\x58\xf2\x20\ \x32\x15\x26\xec\x09\x1c\xe6\x62\x13\xba\xf7\x92\x53\x54\xf8\x97\ \x7f\xfb\x83\xe6\x1f\x9a\x7b\x45\x5f\x63\x91\x6c\x36\x18\x1e\xb1\ \x54\xf2\x70\xc0\x11\xc1\xbc\x71\xa5\xe2\x8d\xc9\x60\xc3\x91\x78\ \x27\x40\x2e\xd4\x23\x0c\xac\x70\x4f\x16\x83\xab\xd9\xb9\x3c\x35\ \x62\x08\xb5\xfb\x41\xa7\xff\x00\xf1\x69\xd1\xa9\xf8\x89\xb1\xbf\ \x06\x12\xab\x05\x2a\x41\x56\x06\xd6\x33\x2d\x2e\x54\x5a\xff\x00\ \x0a\x19\xbb\xd1\x36\x27\xd0\xce\x79\xa4\x2f\xf3\x28\x32\xff\x00\ \x85\xb0\x5a\xfe\x1b\x8b\x25\x41\xb5\xbb\x45\x6a\x28\x14\xa8\xf4\ \x9f\x95\x36\x13\x32\xe5\xc3\x53\x22\x30\x7d\xa5\x90\xa9\xe4\x5e\ \x52\x28\x78\x0c\x09\x2a\xd7\xe2\xfc\x45\xd3\xa7\xb5\x18\x9e\x40\ \xc4\x1a\x75\x0a\x5d\x58\x9d\xa7\xf6\x8a\x87\xbd\x2d\xcd\xbb\xc4\ \x53\xf5\xe2\x62\xd2\x08\xc1\x96\xa8\xba\x9b\xe2\x2c\x3e\xc7\x17\ \x01\x81\xe0\xf7\x99\x59\x69\xec\x2c\xb7\xf5\xb7\x49\x26\xd6\xa5\ \xbd\x8b\x12\x4f\xb4\x9c\xd3\x2a\x7f\xd3\x71\x1b\xa4\x5a\x42\x8b\ \x97\xf3\x5c\x80\xa6\xf6\x2b\x18\xcb\x75\x34\xdb\x0f\x6f\x2b\x5f\ \x0d\x1d\xc0\x86\xa9\x17\x3f\x73\xf5\x85\x41\x86\xeb\x6c\xb0\xf6\ \x81\x51\x9d\x6a\x6d\x6e\x9c\xcd\x5a\x96\xb7\x98\x83\xfa\xcd\x7c\ \x0a\xd5\x87\xe6\xfd\xa0\x33\x16\x3f\x34\x16\xaa\x42\x86\xef\x31\ \x6b\x86\xf9\x91\x09\xf6\x99\x90\xbd\x9e\xe2\x6d\x60\xc5\xc8\xf4\ \x86\x86\x9b\x5a\xe9\x63\xe8\x67\xb5\x06\x98\xa9\x65\x62\x3d\xc4\ \x91\x2a\xa0\x72\x32\x22\xdb\xcd\x90\x38\x8d\xb9\x5b\x9b\xdc\x74\ \xb4\xc2\xe0\x7c\xcb\xcf\x68\x80\xe8\xeb\xf8\x35\xc3\x10\x0a\x9c\ \x30\xee\x20\x6b\x69\x7d\x9f\x52\x57\xf0\xde\xe0\x8e\xdd\x26\x39\ \x42\x7c\xb1\xba\xa2\x2a\xe8\x29\x3f\x54\x25\x0f\xf2\x23\xf5\x21\ \x75\x21\xb0\x4c\x20\xec\x00\x99\x60\x57\x9e\x21\x2a\x02\x30\x62\ \x0d\x0e\x19\x4f\x43\x69\xea\x15\x08\x16\x24\xc5\x52\x43\xb8\x7b\ \xc6\x35\x17\x17\xb7\x78\x13\xe9\xd4\x15\x00\x5a\x99\xec\x63\x85\ \x14\x6d\x3b\x80\x7f\x10\xbc\x85\x81\xbd\xf3\x1d\x4d\x9c\x69\xc8\ \x20\xe4\xf3\xed\x0b\x09\x2f\x45\x91\xac\x67\xb6\x98\xf5\xaa\x4a\ \xab\x9f\x63\x28\x55\x46\xe9\x2d\xc1\x88\xb6\x91\x1d\x4c\x11\xc9\ \xbc\x79\xd3\x83\x37\xc2\xb7\x22\x5f\xa3\x8a\x68\x5a\xa6\x9c\xaf\ \x51\x90\x24\xed\x8f\x48\xed\x27\x95\xc0\xe9\x33\x5a\x9b\x6a\x1b\ \x0c\x19\x8f\xa4\x5a\x67\xfb\xa7\x1e\x98\x92\x54\xfc\xeb\xf2\xff\ \x00\x11\xfa\x75\x3b\x18\x7a\x49\xd4\xd8\xf7\x1c\x18\xc4\x6d\x26\ \x18\x23\xf4\x84\xeb\x67\x23\xa4\xcf\x0f\x17\x5e\x21\x5b\x75\x3b\ \x9e\x46\x2f\x04\x9d\xd6\xc7\x12\x8d\x2d\x8f\x86\xa7\x17\xc5\xe2\ \x58\x31\x3e\xd1\xd4\xd6\xf4\xaf\xf9\x4c\x68\x65\x7b\xa3\x54\x03\ \x91\x61\x13\xae\xbe\xe0\x83\xf0\xa8\x12\x93\x4f\x73\x58\xdf\x2c\ \x3a\x49\xb5\x5e\x6a\xcc\x7b\x9b\xde\x31\x56\x25\x20\x32\xdc\x47\ \x54\x60\xaa\x02\x81\x60\x26\x30\xb8\x81\x5d\xb6\x83\x78\x7a\x91\ \xd5\x66\x63\x93\x26\x62\x54\xfa\x4a\x5b\x24\xc9\xb5\x16\xe5\x67\ \x48\xcd\x2d\x98\xdc\x32\x9d\xa7\xbc\x16\xac\xc3\x20\x06\x61\xdc\ \x44\x3b\x36\xe1\x99\xb7\xdc\x79\xc8\x88\x52\x35\xf5\x1e\x9f\x86\ \xc6\xc2\xff\x00\x84\x5a\x08\xaa\xb7\xb8\x04\x9f\x53\x25\x6c\x9c\ \x60\x8f\xde\x6a\x3e\xe1\x6e\xb2\x2a\x5e\xab\x83\xe5\x36\x10\x77\ \xee\xe4\xd8\xc5\xa3\x1f\x94\xcd\xb7\x6e\x7b\x48\x19\x50\xd8\x06\ \x3d\x44\x5e\xf2\x67\x9c\x90\xa0\x93\xc7\x49\x82\xc4\x60\x6d\x32\ \x42\x52\x14\xdc\xfe\x91\xdb\x8d\x45\xf2\xe1\x87\xee\x24\xd6\x21\ \xa3\x50\xdb\x3c\x11\xd6\x48\x48\x70\x01\xbe\x23\xd8\x87\xd3\x00\ \x2c\x5a\x9f\xf0\x7f\xe7\xef\x11\x50\xee\x1b\x97\x1d\xc4\xf5\x16\ \x2b\x63\xcf\x7f\x69\x11\xd3\xaa\xe8\xaf\x9b\x8e\xc6\x32\x8b\x23\ \xf3\xe5\x1d\xa4\xd5\x7e\xed\xc8\x06\xe8\x78\x3d\xc4\x30\xca\x13\ \x18\xc4\x93\x75\x34\xd9\x5a\xe2\x7b\x4e\xde\x15\xd8\x80\x4c\x04\ \x76\x5c\x02\x6c\x7a\x18\x61\x95\x8f\x99\x7e\xa2\x49\x84\xdb\xcc\ \x07\xfe\xa6\x83\x9b\x08\x74\xd5\x77\x5d\x5c\x63\xbc\x27\xd3\xbf\ \xcc\x17\x70\xf4\xcc\xb5\x11\x72\x0e\x6e\x23\x69\x39\x0d\xce\x7a\ \x19\x8e\xb6\x1e\x60\x41\x9e\x40\x0e\x00\xfa\x48\x2f\x67\x0d\x45\ \x19\x86\x7a\xda\x57\xa5\xff\x00\x31\x48\x8b\xf9\xc0\xf2\xfa\x89\ \x00\xbf\x80\xa0\x8b\x67\x99\x46\x91\x8d\xd4\x8c\x10\x66\x2c\xe9\ \xb8\xa2\x95\x57\x46\x03\xa8\x3d\x44\xe9\x6b\x82\x55\x4a\x7a\x90\ \xa4\x6e\x16\x62\x3b\x89\x26\xd1\x50\x17\x03\xcc\x3e\x65\xfe\xb2\ \xfd\x0d\xab\x69\xea\x50\x38\xb8\xba\xfb\x89\xce\xff\x00\x5a\x89\ \x29\xa8\xa9\x75\x04\x5e\xdd\x64\x8f\x48\xde\xc5\x7e\xa2\x5d\xe1\ \x94\x56\xdb\x92\x71\x13\x59\x6f\x7c\x15\x6f\xd8\xc5\x54\xaa\x15\ \x45\x8d\xf6\x9e\x41\xe9\x31\x91\x94\xdd\x4d\xd7\xa1\x9e\x67\x75\ \x6d\xbc\xde\x6a\x55\x34\xc1\xde\x15\xaf\xd2\x21\x95\x29\xf9\x02\ \xa0\x17\x26\xe4\x4a\x35\x3a\x63\x42\x97\x96\xa9\xa8\x00\x1b\x85\ \xac\x54\xc5\xe9\xd6\xfa\x85\x65\xdd\xb4\x9e\x6f\xfc\xca\x4d\x45\ \x76\x2c\xb6\xbb\x1c\xdc\x74\x85\xa9\xcb\xa9\x66\xb2\xd5\xb5\xff\ \x00\x0b\xf4\x3e\xf1\x0e\xa1\x09\x06\xe0\x8e\x86\x5d\xab\xa1\xb5\ \xcb\x22\x86\xa4\xdc\x8b\xc4\x78\x68\xc9\xb6\xa0\x6d\xb6\xf2\x3f\ \x6f\x43\x37\x28\xa4\x29\xc0\xe9\xeb\x34\x6e\xbd\xff\x00\x71\x3d\ \x52\x8b\xd2\x70\xbd\x7a\x40\xf3\x29\xe0\x8f\x69\xa0\x70\x36\xbb\ \x02\x0e\x63\x35\x25\x58\xdf\xa9\x17\x93\x2d\x52\xad\x7b\x5f\xe9\ \x1d\x51\x91\xd1\x1b\xe5\xe9\x04\x58\x62\x00\x22\xe2\x6e\xf0\xc2\ \xcc\x2c\x7b\xc2\x74\xdf\x4c\x14\x20\xc9\xda\xf6\x20\xde\xf2\x4d\ \x71\x63\x6e\xb1\x94\x5b\x76\x96\xba\x1e\x80\x30\xfa\x18\x8b\x92\ \x2c\x4f\xb1\x8d\xd0\xe7\x51\xe1\x9c\x6f\x05\x4f\xd4\x4a\x84\xe0\ \x0e\x86\x12\x92\x01\xb4\x5b\x02\x8c\x57\xac\x34\x7b\x5a\xe0\x18\ \xa3\x10\x98\xe7\xa8\xc3\xcc\x2f\x6e\xd1\x68\x29\x9b\x7c\xd7\xed\ \x0d\xbc\xcc\x6f\xc5\xe4\x47\x4e\xa5\x3a\x8a\x43\xb6\xdb\x1b\xf1\ \x1c\x19\x43\x2a\x2e\x55\x47\x3e\xa6\x44\x8a\xcb\x53\x71\xe0\x4a\ \x28\x8d\xd5\x6f\xc3\x64\x98\x58\xa1\xd4\xb6\x3d\xc0\x03\x3c\xfb\ \xc6\x53\x51\xed\x22\x46\xb3\xde\xf6\x22\x5c\xb7\xb0\x61\xc1\x99\ \xbd\x18\xa6\x92\x03\x80\x63\x85\x21\xd7\x32\x5a\x6e\x01\xed\x29\ \xa5\x5a\xdc\xd8\xcc\x56\xa3\xc6\x88\x19\xb1\xbf\x49\xea\xc9\xe2\ \x51\x3d\x48\xe2\x56\xad\x4d\x96\xdf\xb1\x85\xe1\x0e\x57\x20\xf4\ \x86\x9c\x72\x74\xd7\x17\x04\x62\x21\xa9\xf9\x89\x1d\x0c\xe9\xd4\ \xa1\xb6\xa6\xee\x55\xb8\x90\x54\x04\x3b\x5b\xbc\xd4\xac\xd8\x2a\ \x4d\xb6\xf7\xe0\xf2\x23\x15\x00\x3d\xd1\x85\xaf\x14\x96\x61\x6e\ \x0c\x65\x32\xc8\xdb\x58\x5d\x7a\x89\x22\xd9\x4a\xb5\xc6\x0c\xbf\ \x40\xb4\xdd\x0d\x22\x9e\x77\x17\xbf\xb4\x46\xa2\x98\x1b\x2a\x53\ \x21\x94\xff\x00\xcc\xcc\xa3\xa8\x14\x54\xd4\x03\xcd\xc2\xc2\xf6\ \x67\x47\x6a\x9a\x8e\x98\xba\xee\xdd\x54\xe0\x0b\x71\x39\x0e\xac\ \xc6\xe4\x98\xf2\x4b\x92\xcd\x72\x4f\x24\xcc\x16\x1d\xa6\xa7\x42\ \xf6\x1b\xe6\xd7\x81\xaa\xe0\xcd\x2d\x6e\x83\xd0\xc5\xea\x9b\x1c\ \xc6\x7a\x12\xd5\xee\x0c\x9e\xa6\x41\x8f\xab\x91\x24\xa8\x48\xb8\ \xbe\x66\xe3\x35\x39\xb6\xe2\x7b\x40\x04\xf4\x8c\x6c\xa9\x8b\x22\ \x54\x0a\xe1\xba\xd8\xcf\x5a\xe6\xe3\x0d\xda\x2c\xe3\x31\x8a\xd7\ \x17\x22\x44\x6b\x61\x62\xdc\xf4\x9a\xec\x4f\x9a\xd6\xe9\x88\x07\ \xcd\x9e\xb0\x95\xc1\x1b\x1a\xd7\x31\x0f\x5f\xcb\xcd\xe7\xb1\x00\ \x60\x30\x3c\xc1\x04\xcb\x51\xc3\x10\x81\xb8\xc4\x5a\x99\xa1\x81\ \xe9\x24\x30\x4a\xb5\xe1\x58\x6d\x2c\xb8\x07\x91\x30\x58\xae\x73\ \x3d\xb4\xdc\x15\x39\xed\x24\xf2\x93\x51\x45\x33\xc8\x3e\x5f\xed\ \x3c\x39\x20\xf4\x9e\x54\x24\x92\x30\x46\x61\x35\xdd\xae\x3e\x61\ \xc8\xef\xeb\x24\x01\x73\x93\x0a\x99\x04\xed\x82\x58\x9e\x7e\x82\ \x33\x4e\x2e\x7a\x5a\x48\xfa\x74\xc0\x5c\x8c\xcc\xbb\xa1\xc1\x22\ \x68\x6b\xb6\x78\x8d\x20\x1c\x37\xd0\xc0\xbd\xbe\xa3\x52\xb8\x6d\ \xde\xe2\xf0\x15\xfa\xb5\x35\x3f\x48\xda\x48\x41\xf2\xff\x00\x33\ \xc6\x91\x2d\xd8\xc8\x9b\x46\xa5\x36\xa6\x41\x4c\x76\xbc\xa6\x81\ \xd3\x30\x04\x78\x8a\x7b\x58\x48\xa8\x28\x5a\x8c\xa7\xa8\x8f\xa5\ \xe5\x36\x60\x3b\x4c\xd8\x63\xad\x4c\x51\x2e\x2a\x25\x56\xb9\x19\ \xf2\xca\xf4\xfe\x0a\x30\xaa\xae\xcb\x63\x7b\x6d\xe2\x71\x90\x95\ \x1e\x5e\x99\x12\x9a\x1a\xa2\xa6\xcf\x90\x67\x3b\x1a\x95\xd7\xad\ \x4b\x4e\xaf\x72\xed\x66\x17\x16\x12\x1d\x43\xe8\xc1\xb6\xca\xae\ \x47\xfb\xad\x2c\x3b\x6a\x68\x95\xc8\x24\x53\xc5\xc1\xe9\x39\x15\ \x4d\x2d\xe7\xef\x19\x7d\xc4\xcf\x13\x44\xda\x9d\x2e\x7f\xca\x0f\ \x72\xe6\x0b\x6a\xa9\x20\xf2\xe8\xa8\xfd\x6e\x62\x4d\x32\xcf\x65\ \x74\x37\xe9\x7b\x5e\x54\x68\xe0\x17\x4c\x80\x00\x00\x7f\x33\x7d\ \x33\xdb\x46\xbf\xc1\xa2\x09\xd2\xe9\xd5\x9b\x80\x17\xa7\xac\x36\ \xd6\xd4\x21\x4d\x3a\x74\x76\x9f\xff\x00\xcc\x62\x73\xeb\x53\x67\ \xab\x76\x63\xba\xf0\x83\x9a\x75\x42\xf4\x1c\x89\x64\x3a\xac\x6b\ \xab\xb0\x60\x7c\x3c\xf6\x41\x22\xaf\xf1\x1d\x65\x1a\x99\x14\xc8\ \xff\x00\xc0\x08\x6c\x14\x03\x51\x70\x0e\x3d\xa2\xeb\xa0\xab\x4f\ \x69\xf9\x87\x06\x52\x41\x6d\x51\x4b\xe3\x14\x98\xa0\xab\xa7\x50\ \xa7\xf1\x76\x3e\xd0\x75\x5f\x12\xd3\xd2\xa9\xb2\xae\x94\x0e\xbc\ \x03\x79\xc7\xa8\xad\x4c\x90\xc3\xde\x39\x14\xea\x28\x78\x04\xdd\ \xd4\x5e\x91\xee\x3f\x2c\xd7\xe6\x0f\xd5\x58\x35\x5f\x0e\xad\x86\ \xa2\x07\xb4\x72\x69\x34\x5a\x84\x29\x4e\xab\x21\xe4\x5e\x7c\xe9\ \x04\x1b\x64\x11\x1f\xa6\xaf\x52\x9b\x02\x18\xe2\x37\x8f\xf0\x7e\ \xbf\xae\xa3\xe8\x2b\x52\x53\xb4\x87\x1d\xc4\x90\xf9\x94\xab\xe1\ \xbb\xca\xe9\xea\x1c\x5a\xa5\x36\x36\x6e\x90\xeb\x53\xa7\xac\x52\ \x52\xc9\x58\x0b\x91\xde\x12\xdf\xa5\xc9\x74\x65\x39\x87\xa5\x6d\ \xba\x8a\x4c\x79\x0c\x3f\x48\xc6\x52\x3c\x8f\x70\x47\x78\x96\x5d\ \x95\x14\xf6\x33\x6c\x87\x54\x08\xae\xc0\x74\x63\x05\x54\x92\x3b\ \x88\xfd\x70\xb6\xa9\xcf\xac\xca\x78\x01\xba\xc9\x35\x57\x68\x17\ \xe6\x35\x00\x2b\x9c\x0e\xa6\x25\xb7\x0c\x8f\xd6\x52\x17\x0a\x3b\ \x08\x10\xea\x2c\xc0\x11\x8b\x70\x3b\xc0\xa6\xc5\x0e\xeb\xe7\x88\ \x4e\x06\xe3\xb9\xb3\xd2\x0b\xdb\xa0\xc1\xe2\x49\xbb\xf7\x1f\x35\ \xaf\x79\x5e\x9d\xac\xbb\x72\x0f\x32\x03\xf3\x47\xd0\x7b\x10\x0f\ \x1d\xe5\x62\x59\xc9\xc4\xdd\xcc\x3d\x22\xac\x54\xde\xf7\x07\x88\ \xc5\x7c\x5a\xf8\xec\x67\x36\x8c\xa7\x59\x94\xf7\x12\xfd\x36\xa4\ \x11\xdc\x75\x13\x90\xc4\x03\x70\x6d\x36\x95\x66\x4a\x97\x95\xe3\ \xab\x5f\x53\x42\x9d\x3d\x55\x2d\x97\xb1\x23\xca\x67\x0b\x57\x49\ \xa9\x57\x65\x61\x62\x0c\xb7\xe1\x3a\xbb\x54\x00\x1c\xf6\x97\x7c\ \x4b\x4e\x9a\x84\x15\x40\xcf\x7e\xc6\x73\x97\xf3\x5b\xbd\xc7\xce\ \x11\x63\x71\xd2\x3d\x19\x5c\x59\xba\x45\xd7\xa6\xd4\xdc\xab\x0b\ \x11\x05\x0e\x47\x79\xd1\x83\x2b\x6e\x51\xb2\xc4\x86\xe2\xd2\x7a\ \x86\xc6\xc7\x89\x52\x6e\x00\x9c\x30\x19\xb1\xeb\x23\xae\xc5\xaa\ \x33\x90\x01\x27\x89\x45\x58\x5c\xf1\x6b\x4d\x19\x17\xbc\x58\x17\ \xcd\xf2\x21\xaf\x16\xbe\x26\x80\x08\x3d\x44\x0d\x57\xc8\xa6\x35\ \x89\x81\xa8\xcd\x25\x8a\x42\xe4\x89\x25\x53\x99\x4d\x51\x7b\xd8\ \xc9\x6a\x0f\x35\xe6\xe3\x21\x71\xe4\x11\x67\x8b\x08\xe7\x06\xc0\ \x0e\x6d\x04\xa8\x1e\xf2\x05\x6d\x00\x5c\xfe\x91\x57\x3b\xaf\x1a\ \x62\x9c\x67\x10\x30\xc0\xf8\xc4\xc6\xce\x7a\xc0\x4b\xde\xf1\x81\ \x6e\x31\x24\xd3\x91\xbb\xa1\x13\xd4\xd6\xf1\xc9\x4e\xf4\x88\x3c\ \xf3\x31\x10\x83\x8c\xc4\x32\xdd\x21\x78\x66\x51\x4a\x9d\xc6\x45\ \x8c\x6a\x52\x09\x96\x04\xf6\x96\x94\xdb\x08\x36\xe2\x79\x69\xb0\ \x3b\x8d\xc7\xac\xa2\xe0\x12\x47\x24\xc1\x72\x5b\x93\x81\xd2\x5a\ \x80\x49\x65\xb1\x3d\x66\x00\x0b\x0b\x1b\x1e\xf3\x4a\xf9\xbb\x62\ \x0a\x7c\xd2\x0d\x7a\x77\xf3\x28\xf7\x13\x69\xa8\x45\xb4\x7d\x36\ \x20\xee\x60\x08\x1d\xa7\xaa\x20\x70\x5a\x9f\xb9\x1d\xa0\x43\x49\ \x6f\x1d\x8b\x64\x5c\x44\xd3\x06\xe0\xca\x14\x82\x6c\x64\xa0\xe9\ \x02\x0d\xc7\x12\x9d\xbb\x85\xed\x7c\x44\x53\x50\x0e\x0c\xaa\x8e\ \x06\x38\xeb\x31\x5a\x84\x78\x6a\x58\x1e\x0c\xd7\x46\x0d\x8e\xb1\ \xb5\x94\x1e\x9f\x51\x04\x83\xb0\x10\x65\xa8\x28\x18\x1b\x1b\xd8\ \xfe\xd0\x43\xb2\xb6\xd3\x73\xef\x08\xb3\x86\x1b\x4d\xfb\xcf\x06\ \x24\xd9\xb1\x7e\x24\x9d\x9f\x84\x55\xde\x4d\x06\xe2\xa2\x11\xec\ \x7a\x4e\x75\x75\xb3\x30\x72\x05\x8f\x26\x1e\x96\xad\x4a\x44\x54\ \x07\xe5\x20\xfe\x91\x5a\xfc\xd7\x75\xc5\xf9\x1e\xb3\x32\x76\x6f\ \x80\x35\xa9\x8b\x04\x19\xfc\xd3\x29\x9a\xa0\x92\x95\x09\xeb\x83\ \x99\x33\xa1\xc1\x18\xb4\x3a\x4c\x4f\xb7\x79\xbc\x1a\xe8\x53\xd5\ \x55\xb5\xaa\x59\xc0\xe8\xe2\xf6\x8d\x5a\x9a\x5a\xbe\x5a\xd4\x4a\ \x76\x74\x32\x54\xab\x71\x90\x1d\x7d\x66\xd9\x18\x1b\x1d\xbe\x86\ \x63\x0a\x9f\xb1\xd3\xd9\xba\x86\xa1\x58\x13\xc3\xe0\xc9\xf5\x74\ \xaa\x52\x62\xad\x4e\xc9\x6f\x2b\x08\x4b\xb9\x48\x52\x2e\xbc\x11\ \xd0\xcc\x67\xaf\x42\xb3\x05\x62\xc8\xd7\xc1\xcd\x8c\xa2\x41\xac\ \x40\xd4\xf7\x5b\x32\x45\x24\x1b\xa9\xb1\x06\xe3\xb8\x33\xae\x4d\ \x0d\x4d\x32\x2c\x29\x54\x23\xb6\x09\xfe\x93\x97\xaa\xa6\xf4\x2b\ \x79\xd7\x69\xfd\xa6\xf8\xd6\x68\x75\xa3\x79\x1a\x85\x16\x0f\xc8\ \xec\x7a\xc9\x81\xcd\xa5\x88\x55\xe8\xd4\xa5\xe9\xb9\x7f\xac\x90\ \x0b\x37\x33\x50\x2c\xd2\x38\x51\xb1\x8f\x94\x9f\xd0\xca\x09\x64\ \x65\x23\x0c\x3a\xc8\x13\x1b\x73\xd6\x5d\xe5\x7a\x61\x37\x79\x80\ \xf2\x9b\xc2\x98\x7d\x60\xba\xca\x25\xd4\x05\xac\xbc\x8e\xf3\x9e\ \xcc\x0f\x91\xb9\x11\xa2\xa3\xd3\x70\xeb\xf3\x2f\x23\xbf\xa4\x2d\ \x5d\x21\x5d\x7e\xd1\x44\x73\xf3\x0e\xd0\x9d\x20\x6b\xc0\xf1\x89\ \x3f\x88\x03\xfb\x40\xa6\x53\x60\x04\x1b\xf5\xcc\x76\xa9\x09\x34\ \xc3\xdc\x79\x06\x64\xe5\x19\x5a\xe4\x18\xcf\x11\x89\xb0\xd7\x02\ \xd7\x5b\xe6\x51\xa8\x64\xb0\x2b\x71\x79\x3f\x87\xb1\xb0\x6e\x66\ \x92\x6d\x66\x19\xf5\x92\x2c\x93\x7c\x09\xb4\xee\x58\x03\xde\x61\ \xb5\xf3\x68\x68\xb9\xbf\x48\xa0\xd4\x16\x6c\x71\x0e\x97\x33\x6a\ \x0b\x0e\x2f\x79\x94\xc8\xe0\x88\x25\x54\xde\xf4\xfb\x89\x8e\x42\ \x8b\x83\x89\x94\xc0\xe2\x63\x8d\xa6\x67\xe9\x27\xc4\x3b\x89\xb0\ \x84\x1c\xdc\x10\x30\x7a\x4f\x54\x41\xf3\x28\x3e\xd3\xd4\x40\xb9\ \x0d\xc4\xd0\x5f\xa0\x37\xb3\xa1\x37\x53\x91\xd6\x77\x34\xfa\x8f\ \x11\x0a\xee\xb3\x1c\xdb\xa1\x9f\x3d\xa5\xbd\x37\xba\xde\x74\x74\ \xf5\x47\x89\x6b\x8d\xc3\x36\xef\x39\x72\x8d\xf1\xaa\xb5\x94\x06\ \xa1\x09\x18\x71\xc7\xf6\x9c\xa2\x85\x4d\x88\x20\x83\x99\xd5\x35\ \x0a\x81\x53\x9d\xb8\x23\xd2\x2f\x5d\x44\x3a\x78\xf4\xec\x71\x9f\ \x58\x4a\x6c\x40\x86\xed\x66\x3e\xc6\x26\xa2\x6e\x26\xd6\xbc\x33\ \xd6\xf0\x78\xc8\x9a\x64\x9f\x0c\x83\x79\x85\x0e\x6c\x6f\x19\x57\ \x0b\xb8\x0c\x1f\xda\x0a\x3d\xc5\x8f\x22\x21\x29\x67\x43\x82\x31\ \xeb\x0a\xb3\x0f\xb3\x6e\x03\xae\x44\xea\xb2\xfc\x17\x54\x2c\x19\ \xa8\x39\x8b\xd4\x7c\x1e\xaf\x80\x7e\xcd\x55\x2b\x2f\x36\x8f\xea\ \x7d\x58\xf9\xda\xac\x2f\x13\x7b\x9b\x13\x79\x46\xbb\x4f\x56\x8d\ \x4d\xb5\x69\x3d\x32\x3b\x8b\x44\x22\xe7\xbc\xe9\x18\x15\x51\x6e\ \x39\xeb\x13\x78\xc5\x6b\xb1\xcc\xf6\x1a\xf8\xcc\x91\x0d\xed\x30\ \x21\xe6\x3c\xa1\xbd\xed\x0a\x9d\x07\x71\x85\xc4\x92\x65\x52\x7a\ \x46\xd3\x5f\x30\x12\x95\xa3\x4d\x30\x2e\x4c\xf1\xa6\xa1\x6e\x2f\ \x79\x20\xe3\x78\x2b\x9b\x62\xd1\xde\x19\x43\x8c\x0e\x62\xe9\x25\ \x8d\xc4\xb4\x28\x6a\x4a\xc3\xe6\x18\x30\xa6\x13\x49\x37\x1b\x5e\ \xdd\xef\x09\xee\x30\x47\x30\xdd\x76\x5a\xc0\x92\x60\xfb\xc8\x96\ \x54\x01\x88\x36\x8e\x36\xf6\x82\x45\xfa\xc8\x61\x6c\xbe\x63\x8e\ \x90\x76\x6d\x39\x95\x52\xa6\x58\x13\x6e\x20\x94\xb1\x37\x17\x32\ \x58\x52\x8b\x8b\x91\x88\x48\x19\x5b\x72\xe2\x18\x56\x3c\x8b\xc6\ \xd1\xa7\x6c\xdb\xe9\x25\x8d\x54\x56\x5d\xc3\x07\xd2\x67\x84\x7b\ \x46\xaa\xec\x37\x02\xc0\xf4\x30\xc0\xb0\xdc\x32\x3b\x4c\xeb\x45\ \xaa\x1e\xf1\xca\x08\x1c\xcf\x29\xbe\x01\x23\xd2\x1e\x7a\x89\x9b\ \x53\x77\x07\x4d\xbd\x44\x0a\x60\xd8\x83\x04\xb0\x0d\x1d\x4e\xce\ \x09\x3c\xc8\x92\xea\x2f\xb8\x74\x98\x08\x64\x04\x0e\x0c\xda\xb7\ \x0c\x7b\x40\xa7\x92\x41\xeb\xc4\x42\x84\x65\x34\x8a\x92\x41\xb5\ \xa7\xb5\x76\xf1\x11\x8f\x3b\x46\x62\x2a\xb0\x57\x54\xfa\xc7\x6a\ \xce\xf7\x55\xec\xa0\x7b\x40\x91\x5c\x12\xbb\xd0\x0b\x1f\x48\x28\ \xc5\x86\xdc\x02\x39\x10\xee\x02\xb5\x34\xfa\x1f\x58\x28\x55\x10\ \xbd\x41\x76\xbf\x96\xdc\xcd\x03\x11\xc7\x16\x00\xc7\x21\xa6\x7c\ \x87\x9c\x44\x52\x43\x53\x2a\xc0\x9e\xc7\x11\x8b\x4d\xac\xc4\x8b\ \x11\xd2\xd3\x34\x89\x5c\x87\x3f\xc4\x5b\x3b\x03\xb9\x49\x23\xa8\ \xea\x23\xf4\xcd\x4d\xe8\x32\xb5\x3b\xb5\xee\xa6\xf9\x90\xd7\xba\ \x31\x28\x4e\xe1\xc7\xac\xa0\x13\x56\xb1\xdc\x2d\x98\x49\xab\x47\ \x43\x46\xbd\x35\x74\xcd\xbb\x8f\x68\x85\x02\xbd\x22\x40\xb5\x41\ \xc8\xef\x11\x50\x6d\x7e\x6d\xd6\x6b\x20\xd3\xde\x9a\x51\xab\x49\ \xb6\x06\xa6\x4d\x83\x03\xc8\x31\x0e\xb4\x83\x15\xda\xc2\xc6\xd1\ \xba\x5a\x8b\x76\xa1\x54\xdd\x1b\x8f\x43\xde\x06\xad\x19\x35\x4c\ \x30\x7a\xfb\xc5\x35\x13\x4f\x6d\xc5\x98\x7b\x88\x5b\x69\x73\xe3\ \x66\xfd\x44\x41\xab\x64\x0b\x6c\x83\x00\xd5\x24\x47\x16\xad\xd8\ \x8e\x33\x55\x49\x18\xbc\x76\x9a\x93\x51\xa9\xbd\x41\x64\x6c\x11\ \x79\xce\x57\xcd\x88\x16\x32\xdd\x1d\x40\xf5\x36\xbe\x0a\xf1\x9e\ \x66\x6a\x8a\xbe\x23\xa6\xdb\xb0\xab\x38\x16\xb0\x36\xc4\x91\x5d\ \xb6\xec\x73\x6b\x70\x48\x9d\x04\xad\xb2\xd4\x6a\x96\x00\x8c\x5f\ \xbc\x4e\xa0\x85\x01\x2b\x20\x61\xd1\xad\x33\x2b\x55\x38\x66\x5b\ \x36\xc5\x7e\xe4\x41\x66\x4e\x40\x36\x27\x88\xd5\x4a\x40\xf5\x00\ \xf4\x07\x13\xc7\x4a\xdf\xf6\xd8\x3a\x9e\x86\x6b\x60\x4a\xcb\x4c\ \xb6\x09\x5f\xa4\x72\x50\x36\xf2\xb8\x27\xf4\x9e\xf0\x9d\x1b\xcd\ \x4e\xc3\xbc\x62\x2a\x91\xcc\xad\x41\x28\xfd\x56\x1a\x53\x07\xa1\ \x06\x11\xba\x88\xc4\x67\x23\x06\xc7\xb1\x99\xd4\x0b\x64\x5a\x05\ \x41\x71\x79\x4d\xee\x3c\xe8\x2f\xfa\x4c\xfb\x93\x75\x3b\x85\xe5\ \xa5\x1b\x06\xfc\x33\xca\xaa\x3c\xdd\xf9\x12\x96\xa6\x87\x87\xfd\ \xa7\xa9\xe9\x86\xef\x2d\x54\xcf\x31\xd1\x81\x47\xb8\xc6\x23\x03\ \x6d\xaa\x8f\x1c\xba\x05\x04\x37\x8c\xb6\xf6\x94\x7d\x9b\x4a\xaa\ \x0d\x4a\xc4\xf5\xb4\xce\xc3\x82\xa7\x58\x35\xaf\xec\x7d\x63\x34\ \x55\x3c\x3a\xad\xa7\x7c\xab\x65\x62\x7c\x6d\x15\x3b\x6d\x42\xd6\ \xfc\x44\xca\x2a\x6a\x74\xfe\x12\x56\xa7\x49\x78\xfd\x26\x5a\x43\ \xae\xd3\xb5\x2a\xc7\x6f\xca\x72\x0c\x9a\xa2\xb0\x23\x9c\x4e\xf2\ \xd6\x15\x34\x7e\x3d\x22\xa5\x80\xe0\x89\x0b\xeb\xeb\x0c\xec\xa6\ \x7d\x00\xe6\x52\xd5\x64\x73\x1a\xf9\x5c\xe6\x4e\x03\x64\x13\x63\ \xc4\xea\xb7\xc5\x5c\x61\xa8\x52\x6f\x42\x26\x0f\x89\x69\x5e\xc6\ \xae\x8e\x9b\x5f\xa8\x13\x72\xdf\xe3\x39\x1c\x2a\xb7\xb0\xbf\x5e\ \xb1\xb4\x35\x55\x68\x52\x1e\x1d\x46\x53\x7e\x86\x2e\xa5\xb6\x29\ \x36\xf5\x8a\xaa\x01\xa4\xb6\x39\x9d\x19\x74\x0f\xc6\x05\x40\x29\ \xeb\x68\x53\xac\x83\xa9\x19\x8b\x3f\x0f\xd2\xea\x89\xa9\xf0\xfa\ \xc2\xf9\x26\x9b\xf4\x9c\xb6\x46\x3c\x91\x78\x74\x9f\xc1\x3b\xd1\ \x88\x6b\xf7\x87\xe7\x3c\x5b\xfd\x7a\xa6\x92\xb5\x2a\xc5\x2a\x53\ \x60\x46\x26\xae\x9c\x0b\xf9\xad\xe9\x3a\xfa\x5f\x8a\xa5\x75\x14\ \x75\xb4\xd5\xc1\xe1\xbb\x4d\xad\xf0\xc1\x54\x1a\xba\x5a\x81\x93\ \xf2\x93\x99\x7e\xb3\xd5\x9f\xc7\x3a\x98\xa6\x83\x2a\x49\xea\x4c\ \x5d\x4a\x97\xc2\xf1\x1d\x53\x4f\x5e\x99\x21\xe9\xba\x88\xbd\x84\ \x9c\x5a\xd1\x01\xa6\x8c\xcd\x7e\x44\x22\x37\x1b\xf1\x1a\xaa\x42\ \x5b\x82\xdd\x7d\x21\x0a\x5c\x93\xc4\x96\x10\xaa\x44\xa3\x4e\x2e\ \xae\x2d\xc0\xbc\x3a\x1a\x56\xa8\xe0\x66\xde\x92\xa7\xd2\xa5\x32\ \x02\xb9\x3b\x47\x9b\xde\x66\xd8\x64\x44\x2a\x1e\x5b\x33\x1d\x7c\ \xb7\x5c\xc2\xab\x4c\x29\x22\xf9\xed\x3d\x48\x32\x9c\x1c\x70\x62\ \x93\x5c\x93\x68\x40\x77\x95\x9a\x48\xf9\x5c\x18\xa6\xa0\x47\x73\ \x2d\x58\x2a\x0d\x65\x37\xe2\x30\xaa\x11\x7c\x1b\xc5\x28\x20\x95\ \xe2\xc2\x32\x98\x62\x38\xb5\xa1\x53\x02\x80\x6c\xb7\x8d\x4a\x78\ \xcc\x24\x5b\x1c\xc6\x20\xfa\xcc\xda\x70\xbd\xa6\x6d\x35\xb7\x39\ \xbf\x31\xc5\x6f\xd2\x60\x4e\x6d\x0d\x25\xb2\x6d\x6e\xc2\x10\x6b\ \x8b\x18\xd4\x5d\xc3\x69\xfa\x41\x34\xec\x30\x47\xf5\x92\x4f\x50\ \x67\x88\x5a\x72\x43\x15\xef\x18\x13\xbc\xc5\x5d\xaf\x83\x1d\x40\ \xaa\x45\x88\x7e\xbc\x19\xea\x14\xce\xfb\xdb\x1d\xe1\x55\x42\x54\ \x12\x63\xa8\x1f\x09\x77\x1c\x5c\x58\x02\x25\xf1\x24\x28\x6a\x6a\ \x01\xc6\x0d\xa7\xbe\x20\xe7\xc6\x64\x41\x60\x05\xaf\x1f\xa6\x01\ \xb5\x60\x91\x6d\xa6\xe4\x1e\x24\xf5\xd7\xef\x0b\x35\xc0\x26\xf7\ \x8c\xf4\x12\x87\xcc\x0b\x62\x15\x64\x3e\x20\x60\x49\x53\x05\x94\ \x10\x40\x3c\x0e\x23\x68\xdf\xc2\x05\xfc\xaa\x39\xbc\x68\x7a\x97\ \x01\x81\xb1\x3c\x4a\x1e\xbd\x45\xa6\x00\x6e\x45\x8d\xe0\x04\x0c\ \xbe\x22\x5a\xdd\x04\xc5\x56\xcb\xf4\x13\x24\x24\x39\x36\xa7\x7b\ \xda\xe0\x8e\xf2\xc1\xa6\xa2\xfa\x61\xa9\xac\xcc\x2e\x6c\x42\x8e\ \xb2\x52\xee\x9f\x59\x55\x4c\xe8\xd6\xc6\xc6\x93\x5d\x87\xa1\xff\ \x00\x82\x54\xb9\xd5\xa9\x7d\x9f\x57\xe5\x38\xe4\x1e\xe2\x2f\x57\ \x4f\xc4\xb3\xa8\x19\xe4\x4b\x9e\x99\xab\x4b\x16\xdd\x4f\x23\x3d\ \x24\xed\xba\x9d\x99\x94\xdb\x83\x89\xa9\x46\x21\x2a\x41\x0d\xe9\ \x69\x5d\x6b\x57\xd1\xad\x4f\xfb\x88\x33\xea\x22\x9d\x45\xc8\xb9\ \x23\x91\x37\x4f\x50\x53\xb1\xe8\x0d\x8f\xb1\x8d\x09\x2a\x5b\x18\ \x98\xa0\x11\x8c\xc7\x6a\x69\x78\x75\x88\xe5\x4e\x57\xda\x62\xa0\ \x02\x3a\x03\x63\x6b\xc6\xd0\x04\x5c\xf5\xb4\xd0\xb7\xf5\xcc\x6d\ \x2a\x64\xb0\xdb\x9b\x98\x1c\x74\x59\x52\xad\x34\x57\x60\x1b\x68\ \xb1\xb4\x31\x47\xc4\xa4\x29\xbb\x29\x61\xc1\xeb\x26\xae\x0a\xd5\ \x01\xae\x2c\x04\x62\x54\x26\xc1\xb3\xd8\xce\x6d\x27\xaf\x45\xe9\ \x36\xc7\x42\x07\x79\x89\xb9\x45\xc1\x27\xb6\x65\xee\xde\x22\x58\ \x9b\x38\x92\xf9\x77\x6d\x74\xb1\xf4\x8e\xac\x32\x86\xab\x70\xdb\ \x55\x77\x2f\x63\x18\xd4\x69\xbf\x9a\x9a\xdc\x7b\xc0\x5a\x2a\xc3\ \xee\xd8\x37\xfb\x78\x30\x7c\xe8\xf8\x25\x48\xe9\x04\x30\xb4\x86\ \x0b\x30\x3d\x88\x8d\xa6\x94\x48\xf9\xf3\x31\x4a\x56\x4b\x11\x62\ \x3a\xc4\xbd\x36\x43\x9e\x3a\x19\x25\x26\x9a\xdb\x92\xcb\xe9\x25\ \xad\xe1\x53\xa8\x79\x36\x86\x97\x23\x98\x15\x85\xf9\x1f\x59\x44\ \x16\xac\x9c\xad\x30\x26\x78\xce\x06\x2c\xbf\x48\xa3\x4c\xf4\x83\ \xb8\x64\x13\xc4\xd6\x0d\x3d\x2b\xb1\x3b\x4b\x1f\xd6\x1b\x5f\xc3\ \xc9\x91\xb3\x5b\x20\x62\x52\xb5\x2f\x44\x1e\xa2\x56\x26\x51\x52\ \xc8\xc0\x99\x56\x88\x86\xa0\xd4\xc9\xeb\x26\xa4\xc3\xc4\x22\xf1\ \x9a\x5b\xad\x47\x1c\x62\x14\xc7\x47\xe0\xf9\x4a\xd4\x09\xc0\xff\ \x00\xf2\x73\xab\x1d\xa4\x8b\xd8\x83\x2d\xf8\x61\x23\xe2\x2c\x07\ \xe3\x53\xfd\xe4\x5f\x11\xf2\xea\xaa\xaf\x19\x33\x33\xd3\x7c\x49\ \x55\xef\x6b\x8e\x62\xc8\x06\x83\x10\x4f\x95\xa6\x38\xc0\x6b\x75\ \x9b\x48\xe2\xa2\x5f\xf0\xde\x75\x60\x8a\xa4\xf8\x6a\x3b\x08\xaa\ \x98\x44\xb7\xe5\x87\x52\xe3\x9e\xe6\x05\x67\x00\x80\x7a\x0b\x44\ \x10\xe4\xa9\xb1\x98\x46\x16\xd3\x4f\x98\x81\xde\x63\x35\xd9\xad\ \xc7\x48\x81\xa1\xc4\xa6\x86\xa6\xad\x16\x1b\x18\x8f\xac\x9e\x98\ \x8d\x45\xc4\x29\x75\x29\xfc\x4d\xb6\xed\xaa\x8a\xd1\x8b\x53\x49\ \x54\x8d\xf4\x54\x13\xd4\x62\x73\x55\x45\xbd\x63\x29\xa9\x00\x9f\ \xd2\x67\xf3\x1a\xd7\x4b\x6e\x89\xbe\x5d\xde\x99\x84\x94\xf4\xca\ \x46\x09\xf7\x9c\xca\x65\x83\x00\x25\x4a\x48\xb3\x1b\x93\xd0\x4c\ \xd9\x87\x56\xd4\xa8\x94\xd2\xc9\x60\x4f\x6e\x64\xa5\xae\x6d\x6b\ \x09\xe1\xcd\xcc\x24\x5c\xc1\x15\x5d\x3e\xf8\xf6\x8b\x75\x24\x8b\ \x0c\x4a\xf5\x20\x1a\x9f\x41\x14\x56\xe2\x32\xa2\xa9\xad\xb3\x1a\ \x01\xbd\xc6\x67\x90\x0e\xb1\xa9\x81\x89\x5a\x93\x0a\x60\xbb\x1e\ \x09\x8c\x44\x2a\x6e\x04\x71\xa3\x82\xc2\xc4\x43\xa4\xa7\x1d\x61\ \xab\x0a\xdb\xe7\x20\x64\x46\x2a\x81\xd2\x57\x4e\x80\x75\xc0\x13\ \xcd\x40\x8e\x44\x34\xe2\x62\x16\xd8\x3f\xb4\xc0\xa4\x62\xf1\xde\ \x1d\x8c\xdd\x97\x32\xd4\x4e\xd6\xbe\x08\xfd\x63\x0d\x2d\xea\x5b\ \xaf\x58\xd4\xa7\x9b\x81\x0f\xe5\x86\x94\x4d\xe5\x16\xbd\xe0\x06\ \x1b\xc6\x39\x8f\xae\x9f\x88\x71\x12\x40\xc3\x5b\x89\xa0\x6b\x53\ \x25\x2c\x39\xbf\x31\x35\xed\x75\x50\x7d\xe5\xda\x70\x0d\x30\x4f\ \x04\x49\x6a\x04\x04\x9f\xc4\xd9\xf6\x84\xaa\x94\x8a\x17\x4f\x51\ \xfa\x9c\x09\x2d\x3a\xce\x0e\xd6\x1b\xd2\xfc\x1e\x92\xaa\xe2\xd4\ \xd5\x3b\xe4\xc8\xf6\xe4\x80\x26\xa3\x34\xc3\x4e\x95\x67\xbd\x37\ \xf0\xdf\x8b\x37\x1f\xac\x23\xa6\xa8\x8a\xca\xe0\xff\x00\xe4\x78\ \x8a\x08\x15\x6d\xd6\x59\xa4\xad\x56\x8a\x94\x24\x38\x23\xe5\x6c\ \x89\x53\x13\xd3\xbe\xf0\x83\x0a\x25\xa1\x54\xe8\x5d\xba\x3b\x00\ \x3d\x6d\x01\xf5\x3a\x4c\xee\xd2\x1b\x9e\x76\xb9\x02\x05\x5d\x4f\ \x8a\x40\xb2\xa2\x01\xe5\x51\xc0\x87\xa8\x8d\x87\x70\xa4\x46\x7b\ \x98\x34\x2a\x1f\xb6\x3a\xb0\x26\x9b\xf9\x48\xec\x0c\x68\x57\x70\ \x76\xdd\x89\xf2\x81\x2a\xd2\x50\x55\xda\xf8\x25\x56\xe7\x77\x53\ \xd2\x3a\xb1\x2e\xa3\x4d\x56\x85\x54\x6b\x82\x08\xb1\x83\x54\xb2\ \xab\x73\x6b\xdf\xda\x55\xa9\x74\xac\xbb\xd6\xf6\x56\xdb\xff\x00\ \xb8\xb6\xfb\xd1\x76\xb7\x16\x3e\xb0\xd5\x88\x55\xcb\x8b\x6d\x57\ \x2b\xdc\x74\x8b\x61\x48\x97\x56\xa7\x62\x47\x43\x28\x6a\x1b\x5c\ \x38\xbd\xbf\xa4\x0a\xb4\xc8\x20\x91\x71\x37\xa0\x22\x9d\x3a\xfa\ \x7b\x2b\x90\xf4\xf8\xdc\x39\x10\x3c\x07\xdb\x8b\x37\xb6\x61\xd2\ \x5f\x0a\xa8\x37\x3e\xd1\xb5\x29\xec\x7f\x2f\x07\x22\x5b\x80\xaa\ \x48\x6c\x63\xa9\x7d\xd9\x04\x76\x9e\x0c\x7f\x18\x0d\x0d\x50\x5c\ \x6d\x3c\xf4\x30\xb4\x8e\xbd\x41\x50\xaa\xbf\x55\x16\x3d\xa2\x76\ \xbd\x36\x00\xda\xd3\xd5\xd5\xc6\xd6\xb1\xc7\x48\xd5\x60\x52\xcd\ \xf2\xdb\x1e\x90\x4d\x4a\x81\x8d\xaf\x66\xe9\x18\xc8\x19\x6e\xa2\ \xec\x39\x88\x09\xb7\xcd\xd3\xa1\x8c\x15\x0f\x3f\xac\x08\x30\xa6\ \xf9\xbc\x6a\x57\x0c\x36\xd5\x1b\xc7\xaf\x22\x0d\x45\xde\x37\x01\ \x99\x23\xb5\x8e\x71\x19\x35\x78\xbf\x65\x36\xce\x9d\x8e\xef\xca\ \x79\x85\x41\xf7\x83\x4a\xa8\xcf\x79\x1d\x17\xe0\xde\xc7\xbc\xa8\ \x55\x4a\x98\xa9\x86\xe8\xe2\x16\x26\xd4\xa6\x69\xb5\x8f\xd2\x2c\ \x8b\xe0\xca\xac\xe5\x36\xb6\x48\xca\x9e\xf1\x55\x2a\x02\xdb\x58\ \x7b\x19\x2c\x4b\x50\x15\x89\xa9\x63\x93\x8f\x59\x46\xa1\x6f\xc4\ \x99\xc1\xb7\x13\x50\x52\x88\xdb\xcf\x98\x77\x11\x9a\x62\x48\x23\ \xa1\x80\x97\x56\xdb\x7c\x4a\x29\x2a\xf4\xc1\xbf\x11\xa2\x05\x2e\ \x2b\x03\x28\xa2\x0f\x8a\x4f\xa4\x53\x21\x5a\x9d\x70\x65\x09\xe5\ \x63\xeb\x33\x5a\x87\x7c\x35\xad\xf1\x2a\x57\x3c\xa9\x1f\xb1\x89\ \xf8\xb5\x8e\xba\xaf\x4b\x18\xcd\x08\xbf\xc4\x34\xe6\xfd\xff\x00\ \xac\x9f\xe2\xee\x06\xba\xae\x7a\xc2\x7f\xd9\x7c\x42\xf8\xf2\xcc\ \xd3\x79\xaa\xdb\xb8\x23\xf6\x9e\x66\x04\x83\xf5\x99\xa7\xc6\xa1\ \x07\xfb\xa7\x4f\x8c\x91\xa9\x37\x7c\x77\x93\xea\x0f\xde\x1e\x9d\ \x23\xb2\xd5\x14\x1f\x79\x35\x5b\x9a\x84\xde\x6a\x07\x94\x80\xd7\ \xed\x99\x88\x73\x9f\xac\xf5\xac\xa2\xe7\xe6\x33\x40\xe3\x1c\x48\ \x1d\x44\xd8\xe6\x53\x4c\x5c\xfa\x49\x14\xdb\x89\x45\x16\xb4\x29\ \x8a\x54\x0e\x82\xe6\x39\x69\x91\x4c\x0f\xac\x4d\x23\x91\x6c\x93\ \x2c\xbd\x86\x32\x66\x6d\x6a\x16\x10\x27\x98\x8c\xcd\x59\xa0\x77\ \x9a\x9f\x35\x8f\x02\x65\x0c\x0b\x01\x98\x62\xf7\x00\x0e\x66\x2d\ \x8d\xf1\x18\x8b\x77\x03\xd6\x05\xb5\x6c\x1f\x3d\x05\xa0\x1c\x8b\ \x5b\x13\x5f\x35\x18\xf7\x33\x6d\xe5\xe3\x32\x25\x05\xef\x1d\x49\ \x05\xc5\xc4\xc5\x1e\x91\xf4\x56\xe0\xd8\x71\xcc\x96\x36\x9a\x59\ \x4a\x9c\x82\x63\x52\x8d\x88\x00\x62\x10\x51\x61\xc6\x63\xe8\xf6\ \x23\x13\x16\x9c\x7a\x9a\x01\x1b\xb6\xe2\xc7\x89\xb6\xb0\x9a\x38\ \x99\x69\x3b\xd0\xea\x38\x82\xb4\xec\x73\x6b\x4a\xef\x61\xe9\x17\ \x52\xd6\xb8\x88\x24\x80\xa3\x11\x0f\x72\x63\x2a\x3d\xb9\x8b\x73\ \x78\xc0\x59\x03\xaf\x1d\x62\xd9\x43\x10\x17\x83\x0e\xa5\xca\xd9\ \x78\xea\x66\x69\x47\xdf\x0e\xbf\xc4\xd0\x3f\x50\x45\x2d\x1a\xaa\ \xfc\xc7\x32\x15\x1b\xdc\x0e\x49\xc9\x3e\x92\xad\x5b\x2b\xd7\xb2\ \xe4\x5a\xc6\x22\x90\xdb\x4e\xa3\x11\x9e\x04\xa2\xa9\x75\x55\x37\ \x39\xb9\xb0\x82\x78\x04\x64\xf5\x99\x50\x7d\xe1\x26\x62\x9f\x29\ \x06\x68\x34\x73\xbb\xf4\x10\xe9\x30\x15\x40\xea\x62\xbd\x4f\x3c\ \x42\x44\xbb\x82\x0f\xac\x90\x5f\xe6\x37\xb4\x34\xa2\xd5\x08\x41\ \x8b\x9e\x4f\x48\xd6\x14\x41\x6f\x29\x66\x27\x17\x8e\xa6\x1a\xc4\ \x00\x32\x2d\x89\x6a\xc5\x34\x91\x17\x46\xe1\x01\x0c\x9c\xb7\x78\ \x9d\x45\x86\x8c\x29\x39\x67\xfe\x23\x34\xc4\x96\x75\xb7\xcc\xb7\ \x81\xab\xb0\xa5\x44\x30\xbf\x3c\x7b\xcc\x10\x20\x54\x55\x43\x90\ \xd9\x36\x8d\x5a\x20\x0e\x2f\x7e\xb1\x55\x86\xc7\x5c\xf2\xb2\xbd\ \x3b\x86\x5d\x80\x82\x40\xb8\xf6\x8d\x51\x05\x6a\x65\x18\xae\xdf\ \x29\x89\x23\x1b\x4f\x4e\x27\x66\xb2\x2d\x45\x06\xdd\x33\x21\x65\ \x55\xa8\x77\x10\x6d\xd2\xd2\x95\x58\x80\x95\x26\xc4\x47\x53\xda\ \xf4\xb6\x91\x72\xb9\x1e\xd0\xaa\xa5\x2d\xd7\x03\x06\x7a\x89\xa6\ \xac\x08\x53\x7f\x78\xe8\x01\x40\xc4\x6d\x10\xfc\x12\x56\xf6\xe2\ \x3d\xe9\xa9\x17\x55\x36\x39\x10\xa9\xff\x00\xa7\x6b\x1e\x6d\x2d\ \x38\x9d\xcd\xe9\x15\x61\x7f\x78\x29\x4a\xf4\xb7\x0c\xd8\xda\x32\ \xab\x2e\xf2\x00\xc4\xdd\x21\x09\x58\xa8\x38\x22\x41\x29\xa8\xc8\ \x76\x5a\xe0\x72\x0c\xf0\x2b\x50\xee\xa6\x40\x3d\x54\x98\xcd\x6d\ \x34\x35\x4b\xa1\xf2\x9f\xd8\xc8\x88\x21\xf0\xa2\x6a\x76\x2a\x97\ \xa8\xf4\xec\x73\x6e\xc6\x05\x65\x5a\xab\xbd\x0d\x9b\xb4\x6d\x17\ \x46\x01\x2a\x8d\xc8\x71\xea\x22\xea\x51\xf0\xaa\x6f\xa5\xe6\x43\ \xdf\x91\x08\x89\x45\x37\xb9\x36\x3d\xa3\x43\x11\x99\x8e\x01\x03\ \x03\xd0\xf6\x98\x6e\x05\x9b\xe8\x44\x7d\x4e\x86\x82\xb2\xdc\x52\ \xaa\x7c\xa7\x83\xda\x7b\x5c\x9e\x15\x5d\x87\xe8\x67\x3d\x2a\x6d\ \x39\xfa\x4e\x9e\xa1\x8e\xa3\x41\x4e\xaf\xe2\x4c\x1f\x69\x9b\x32\ \x9d\xd8\x91\xbc\xc9\x7e\xa2\x01\x00\x1e\x32\x61\x2d\x50\x78\xcd\ \xf1\x78\x37\x0b\x93\xcc\x51\x46\x9e\x73\x34\x82\xab\x88\x7b\xc0\ \x6f\x96\xfe\x90\x82\x86\xe7\x12\xd0\xf1\x6d\xf7\x07\x91\x6b\x18\ \x6c\x08\x22\xfd\x66\x56\xa4\xa1\xce\xd7\x06\x36\xa8\x36\xa6\x0d\ \xae\xa2\xfe\xf0\x26\xfc\x2d\x77\x6b\xa9\x9e\x36\xa3\x37\xbf\xfc\ \xbc\xe5\xfc\x4d\xfc\x4d\x6d\x66\x1f\x98\xda\x77\x3e\x14\xa1\x3c\ \x6a\xa4\x8f\xbb\xa6\x17\x3d\x3a\xcf\x9f\xd4\x5d\xaa\xde\x3c\x7d\ \x57\xc2\x1d\xad\x8c\xdc\x4f\x69\x89\x3a\x9a\x79\xfc\x42\x63\x8b\ \xe6\xfd\x66\xe9\xb1\xa9\x5b\xf4\x37\x9d\x18\x0a\x90\x37\x9e\x6c\ \x24\xe4\x02\xf6\x0b\x2a\xf0\xc0\x4c\x75\x30\x3c\x32\x03\x36\x31\ \x89\x24\xcd\xfe\xa6\x00\xb0\xc4\xf0\x37\x36\xb5\xa1\x14\xc9\x3d\ \x66\x2a\x92\x4f\x61\x10\xf0\x36\x8e\xa6\x48\x39\xc0\x8a\x20\x0e\ \x05\x8c\x35\xb9\xb7\xef\x24\xaa\x95\x43\x71\x6e\x2f\x28\x4a\x97\ \xeb\x99\x2d\x02\x03\x0b\xc2\xa6\x40\x60\x2d\x33\x63\x4b\x43\x5f\ \x30\x86\x56\xf0\x53\x2b\x34\xe0\x58\x4c\x13\x54\x8e\x23\xe8\x9c\ \xb3\xdf\x0a\x24\x61\x8d\xed\x28\x7b\xad\x15\x4e\xa7\xcc\x60\x5e\ \x02\xe6\xf1\xaa\xb7\x36\x27\xd6\x29\x32\xb9\x8e\xa4\x56\xdb\xbb\ \x19\x13\x42\x00\x36\x8e\x4c\xf0\xb2\xb6\xdb\xc2\x07\xca\x4f\x5e\ \x91\x5b\x6e\xd7\x22\x65\x29\x56\x51\xdb\x11\xf4\xcf\x97\x9b\xc8\ \x46\xec\xca\x68\x30\xbe\x4c\x2c\x2a\xd3\xd7\x89\xa6\xc2\x0a\xb0\ \xe2\xf0\x96\xd7\x3d\xa6\x5a\x65\xc5\xba\x40\xb8\x06\x6d\x42\xaa\ \x31\x98\x91\x58\x74\x12\x01\xd4\x53\xb6\x46\x04\x49\xda\x83\x9b\ \xb1\xfd\xa3\x5e\xa8\xc8\x36\x37\xef\x24\xab\x7d\xdc\xe6\x6a\x0a\ \xc7\x2c\xcd\xe9\x19\x49\x76\x2d\xfa\x99\x9a\x74\x0e\x7d\xa1\xb8\ \x24\xb1\x1f\x84\x58\x4d\x54\x8c\xd4\x21\x99\x87\x04\xc7\xd4\x1f\ \x70\x85\x47\x39\x22\x4b\x54\x5e\xa0\x51\xc5\xe3\xdd\xf6\xb5\xbe\ \x82\x41\x2d\x54\x22\xf6\xfd\x7d\x24\xfb\xf6\xb8\xed\xd0\x4e\x93\ \x85\xa8\xbb\x4e\x18\x7e\xf2\x2d\x46\x9f\x63\xee\x69\xa9\x45\x8c\ \xb5\xcd\x8d\xed\x1c\x8b\xb5\x48\xeb\x69\xba\x0a\x62\xbd\xc9\x36\ \x5a\x62\xec\x7d\x21\x6e\xd8\x77\x5b\x27\x8b\xc2\xa6\x85\xf2\x2b\ \x37\x41\x0e\x8d\x66\xa7\x95\xb6\x3d\x20\xa3\x23\x52\x65\x62\x43\ \x13\x81\xd2\x02\x15\x14\xce\xeb\xf3\x69\x15\x09\x5c\x9a\xfe\x23\ \x63\x71\xb1\x23\xb4\x76\xae\x89\x66\xa2\x14\xee\x5b\x1b\xfe\xb2\ \x64\xdb\x73\xb7\x6b\x02\x2f\x2d\x2f\x7d\x10\xaa\xa4\x6f\x41\xb6\ \x66\x98\xe7\xd5\xdc\xc3\x79\xe2\xf6\xbc\xa3\x42\x05\xc1\xbd\xba\ \x13\x0e\x9b\x52\x75\x74\xaa\x40\x37\x06\xe0\x4c\xa7\x4d\x69\x3e\ \x0b\x14\x6c\x5c\x71\x1d\x0a\x43\x21\x52\x09\xb7\x4b\xc4\xd6\xa4\ \x19\x33\x9e\xc6\x61\xa9\x4d\x5b\x76\xc2\x41\xf9\xae\x61\x23\x80\ \xde\x54\xb8\xea\x2f\x32\x52\xf8\x24\x5f\x1b\x84\xc3\x4a\xc4\x15\ \xe2\x74\x94\x23\xe4\xd1\xb7\xad\xe1\x78\x49\x7b\x9a\x63\xdc\x18\ \xfe\x96\x21\xa5\xe5\x5d\xad\xc7\xf1\x0c\x2d\xaf\x73\xeb\x28\xa9\ \x4e\x88\x1c\x11\xed\x06\x9a\x50\x2c\x01\xa8\x57\xd4\x88\x6a\xc7\ \x3a\xaa\x1c\xf3\xcd\xa6\x69\x14\xfd\xa0\x03\x3a\x3a\x9d\x20\x03\ \xcb\x55\x4c\x90\x52\x6a\x55\xd5\x9b\x76\x0f\x36\x9a\x97\x46\x02\ \xb5\x15\x0c\x40\x27\x3d\x27\x3b\x50\x1e\x95\x42\xa6\xfe\x97\x13\ \xb6\xf4\xc3\xb6\xce\x09\xe2\x4f\xa9\xa2\x19\x76\xba\x82\xc2\x3c\ \x6a\xb1\xc9\x0e\xd6\x17\x1c\xe7\x12\xa4\x62\x2c\xdd\x0f\x22\x67\ \x82\x43\x61\x41\x11\xbb\x36\xa0\xb8\xe4\x76\x8d\xac\xc3\x1a\x90\ \x7a\x78\x1e\x6b\x5f\xde\x46\xa0\x5c\xab\x8b\x03\xc1\xed\x28\xa7\ \x54\xa2\xe4\x58\x29\xfd\xa2\xab\x8f\x19\x77\x29\xcf\x22\x50\xd4\ \xf5\x6c\xad\xb5\xad\xb8\x71\x2e\xd0\x31\x6a\x5e\x1b\x7e\x30\x44\ \x89\x57\xc4\xa6\x77\x5c\x3d\x3f\xe2\x57\xa2\x3f\x79\x48\x62\x3c\ \xbc\x13\xd4\x68\xc7\x73\x29\xe8\x63\x2a\xb5\x8d\xbb\xc5\x31\x03\ \x57\x50\x0f\xcc\x67\x9c\x8b\x2d\xcd\xc9\x18\xb4\x50\xd1\xb3\xdf\ \xbc\x68\xf9\xf1\x9c\xc4\x28\xd8\xa3\x70\xb1\x30\xc5\x4f\x0d\x09\ \x1f\x35\xbf\x48\x54\xa0\x05\x0a\x6a\x30\xbe\x6c\x07\x4b\xc7\xf8\ \x85\xc8\xf2\x2f\x16\xe2\x45\xa7\x7d\xd4\xec\x47\x19\x12\xba\x08\ \xc6\x90\x63\xde\x66\x98\xe8\x15\x55\xf8\x55\x56\x16\x06\xab\x58\ \x5f\xf4\xfe\xf3\x85\x5a\x99\x46\x20\x89\xdc\xf8\x99\x14\xa8\x50\ \xd3\x9c\x95\x50\x48\xff\x00\x9f\x59\x00\x60\x7c\xb8\x03\xa1\x87\ \x1a\x6b\x98\xd4\x1c\x2d\xca\x10\x3a\x13\xd6\x2e\x8d\x32\x2a\x3b\ \x12\x06\xd4\x32\xdd\x4a\x30\x24\xb3\x7b\x66\x4f\x45\x2d\xa7\xaa\ \xe7\xad\x97\xfa\xff\x00\x49\xd3\x58\xc7\xab\x28\x0e\xa9\x6c\x01\ \x68\x35\xd5\x45\x90\x74\xc9\xf7\x95\xb2\x87\x6d\xd6\xb9\x1d\x62\ \x58\x77\x07\x37\x37\x94\xa5\x1b\xd3\x00\x5e\xdc\xc0\x64\xed\x89\ \x55\x54\x02\xd8\xc7\x78\x01\x05\xb2\x39\x3c\x4d\x0c\x4f\xe1\xde\ \xdd\xa0\x65\x49\x95\xb5\x88\xb5\x80\x8b\x65\xbf\x00\x48\x61\x74\ \x49\xdd\xd6\x3d\x01\xb8\x69\xea\x48\x37\x74\x85\x4a\xf7\xb7\xe8\ \x64\x56\x53\x3e\x51\x88\xc6\x50\x73\x25\x57\xe9\x7c\xc7\x50\x0c\ \xc7\x1c\x0e\x4f\x49\x8b\x09\xd4\x55\x77\x6f\x3f\x2a\xe4\xcc\x66\ \x2e\xe5\x8f\x53\x31\xdc\x30\x08\x83\xc8\x3f\x73\x0a\x9a\xdc\xe4\ \x8f\xd6\x64\xb5\x49\xbd\xa5\x14\x06\x7d\x04\x56\xdd\xbd\x89\x8d\ \x63\xb1\x6d\x7c\x99\x13\x71\x71\xd4\x09\xe2\xc1\x41\x26\x29\x0b\ \x0c\xf2\x0c\x26\xcd\x85\xbe\xb0\x4d\x0c\x08\x36\x19\xed\x19\x4f\ \x76\x39\x81\x45\x0e\x4d\xa3\x40\x3b\x6d\x0a\x61\xb4\xde\xc6\xd2\ \x80\xd8\xc1\x90\x8f\x2b\x47\x23\x5c\x5f\x2a\x04\xcd\x85\xad\x7d\ \xc6\xdf\x58\x97\x20\xfc\x98\xb7\x30\xea\x54\x26\xea\x06\x22\x2a\ \x60\x58\x5c\x7b\x46\x02\xab\xbd\x98\x08\x58\xa8\xb7\x07\xcc\x20\ \xd6\x5d\xf6\x37\xb3\x5a\x0d\x22\x43\x8e\xe0\xcd\x05\x5a\x62\x12\ \x99\x27\x98\x35\x8e\xda\x03\xb9\x30\xb5\x3b\x52\x92\xb2\xf0\x7a\ \x49\xf5\xd5\x10\x05\x5d\xc4\x62\xf6\x84\xec\x82\x90\x53\x5e\xf7\ \xdc\x62\xea\xb7\x9a\xfc\x92\x7f\x48\x34\xeb\x28\x0f\x61\x6f\x58\ \x96\xa9\x99\xac\x65\x47\x89\x75\xc1\xf3\x09\xea\x8f\xe2\x27\x9b\ \xeb\x21\x15\xc2\xb5\xc5\xe3\xe8\xb8\x76\x05\x45\xef\x8b\x47\x16\ \xae\xd2\xaf\x81\xa0\x76\xe7\xc4\x60\x3e\x91\x15\x07\x98\xe6\xe3\ \xa4\xa3\x55\x55\x69\x6d\x41\x94\x45\xb1\xf7\xeb\x14\x1f\x4b\x56\ \x9e\x2a\x05\x61\xd0\xcc\x94\xce\xd6\xb5\xb9\xbc\x63\xfc\xa0\xfa\ \xe6\x0d\x65\x5d\xff\x00\x30\x2b\xe9\x1b\xa7\x56\x61\x8b\xb2\x8e\ \x45\xb8\x88\x0a\x9e\xf8\x32\xfa\x7b\xa9\xd0\x14\x70\xc4\xae\xe3\ \x7e\xfd\x20\x53\xd1\xa1\xfb\xf6\x0c\x29\xa8\xbf\xbf\xa4\x9c\xbb\ \xf8\xc6\xaa\xb1\x56\xbe\x31\x0f\x4f\x87\xd3\x54\x76\xba\x92\xac\ \x56\xdb\x4e\x66\xa3\xb5\x1e\x50\xb2\x13\x90\x78\x99\xa8\x15\x05\ \x64\xa8\x88\x2c\x40\x37\x1d\x0f\x69\x55\x25\x6a\x83\x75\xec\x4f\ \xcc\xb6\xc1\x81\x12\x84\x75\xbd\x34\x43\x7e\x41\x13\x45\x2a\x96\ \x05\x4e\xc6\x1d\x08\xe6\x15\x3a\x4b\x45\xbc\xd7\x5b\xf5\xe6\x53\ \x75\xe4\x58\x89\x9d\x24\xd3\xa7\x52\xd9\xbd\xbd\xe6\x9a\x60\x1b\ \x96\x23\xeb\x1a\x45\xc7\x97\x77\xf4\x8b\x20\x29\xbb\x6d\xb7\xa9\ \x81\x60\x03\x90\xe0\xfa\x77\x9a\x28\xab\xe4\x28\xbf\x62\x26\xaf\ \x86\xdc\xd4\xb7\xa2\x88\x64\xd3\xe0\xef\x23\xbc\x93\xcf\xa7\x0d\ \x44\x86\x4e\x27\x39\xe9\xbd\x26\xba\xef\x51\xd8\xf1\x3a\xd4\x8e\ \xc5\x21\x03\xd4\x5f\xfc\xb3\xfa\x44\xbd\x64\x6b\x91\x65\x6e\xc4\ \x71\x29\x6a\xb1\x3d\x20\x1b\x6b\x32\xe7\x9b\x88\x55\x28\x53\xaa\ \xbb\x90\x92\x61\x91\xbd\x0b\x6c\x17\x5c\xdd\x4c\xf2\xdb\x91\x90\ \x73\x24\xe4\xea\x69\x32\x30\x6b\x9e\x6d\x78\x55\x55\x7e\xcf\x49\ \xad\x62\x6f\x73\x3a\x1a\xb4\x15\x54\xa1\xf9\xb9\x53\x39\xf5\xc5\ \x92\x92\x31\xb7\x3c\xcd\xcb\xac\xd8\x90\xa7\xde\xba\xde\xe0\x83\ \x68\xa4\x2a\x0e\xcb\x67\xbc\x7a\x63\x52\x86\xff\x00\x8a\xd2\x6a\ \xa7\x6b\x92\xc3\x83\x37\x19\x32\xde\x70\xea\x72\x30\x47\x78\x62\ \x9e\xcd\x75\x35\x19\x5b\x8b\x45\x80\x19\xb7\xa9\xbe\xde\x44\x7e\ \x8e\xf5\x6a\xa1\xfc\xad\x7f\xa4\x14\x72\xb5\x04\x7d\xb2\xa7\x6d\ \xe7\xf9\x9e\x04\x25\x4f\x35\xc8\x1d\xa7\xaa\x12\xd5\x9c\x8e\x4b\ \x18\x3e\x23\xed\x20\x73\xed\x3a\x32\x6d\x7d\x46\xfb\x95\xa7\xb7\ \xb1\x26\x62\x32\x04\x0a\xc4\xb1\x39\x32\x6c\xb3\x58\x9c\x9e\xf1\ \xa8\x03\x31\x20\xe3\xfa\x4b\x16\xa8\xdf\xb0\x28\x50\x01\x27\xb4\ \xee\x7c\x1e\x89\x70\xac\xc3\x0b\xe7\x37\xff\x00\x9e\xd3\xe7\xe8\ \x5e\xa5\x65\x1c\xdc\xcf\xa8\x5b\x69\xfe\x0f\x51\xef\xb4\xd5\xf2\ \xa9\xf4\xff\x00\x97\x9c\xf9\xf4\xd7\x17\x2b\x5b\xa8\xf1\xf5\xb5\ \x1a\xf8\x38\x1e\xd1\x25\x8d\xa0\xaa\x90\xe0\x82\x1b\x33\xc6\xf7\ \x20\xe2\x58\x87\x6f\x11\x08\xe4\x88\xba\xb4\xc2\x69\x55\x40\xf9\ \x98\xb7\xf4\xfe\xf0\x91\x88\x71\xb3\x93\x89\x46\xa5\x01\xaf\xb3\ \xf2\x00\x0f\xd3\x98\xea\x4f\x54\x5a\xc0\x7b\x98\x92\x6c\x6c\x72\ \x23\x0d\xcb\x12\x0e\x6f\x9e\xf0\x19\x6e\xdd\xad\x18\x18\xc8\x19\ \x6f\x14\x52\xcf\x62\x2c\x3a\x5c\xc6\x93\xdb\xa4\xf2\xf0\x7f\x68\ \xea\x25\x85\xf8\x16\x8a\x23\xb4\xac\x85\x07\x8b\x7b\x45\x9a\x40\ \x92\x41\xbc\x65\x00\xa5\x6e\x3a\xcd\x01\xb7\x63\xa4\x6a\x2d\x88\ \x8d\xa5\xa7\x00\x0a\xb5\xc9\x54\x3c\x0e\xad\xed\x0d\x25\xd3\xa0\ \x5c\x12\x08\x55\x1f\x31\x3c\x08\xcd\xe0\xaf\x83\x4f\x09\xfb\x93\ \x3d\x52\xa6\xf5\xd8\xaa\x15\x07\x0a\x22\xe9\x8c\xf7\xf5\x82\x1a\ \xd9\x30\x79\x8e\x52\xa8\x2f\xd6\x24\xb2\xdf\x1c\xf7\x8c\x41\xb9\ \x4b\x1f\x94\x75\x81\x3a\x83\x59\xbc\x42\x30\x38\xbc\xd0\xca\x5a\ \xec\x3a\xf7\x92\x55\xd4\x1e\x38\x1c\x09\xa1\xfc\xb7\xbc\xb1\x6b\ \xa0\x8e\x99\xb0\xb0\x13\xcd\x52\xff\x00\x2c\x92\x9b\x60\xfb\x42\ \x46\x2c\x0a\xa8\x30\xc3\xaa\xe9\x39\x00\xc2\x04\x9b\x01\x13\x48\ \xaa\x8f\x33\x7d\x04\x33\x53\x70\xb2\x63\xfa\xc1\x0d\x88\x42\x77\ \x1c\xf6\x98\xd5\x6e\x39\xbd\xb8\x89\x2c\x0d\x81\x9e\x51\x71\x7b\ \x89\x62\x35\x59\x8e\x60\x54\x6e\x93\x69\xa9\xf9\x8c\xf3\x90\x99\ \xe4\xc9\x13\x53\x75\xb2\x6c\x22\xce\xa4\x2e\x08\xbf\xaf\x59\xea\ \xed\x7c\x99\x0d\x46\x06\xe4\x1c\x89\xa9\x34\x5a\xe9\xf8\x8c\xcf\ \x4f\x3b\x91\xb0\x6d\xd2\x4d\xf1\x4f\x2e\xa5\xb3\x75\xb6\x08\x87\ \xa2\xdc\xcc\xac\xbc\xac\x96\xad\x70\xd5\x1f\xc4\x5c\x13\xf4\x94\ \x9d\xaa\xf2\x3d\xe9\x1e\xf2\x57\xa9\x93\x98\xf6\x52\xb4\x89\x5f\ \x32\x93\x83\xda\x4a\xea\x77\x1b\xde\x6e\x33\x40\x58\x99\xd0\xf8\ \x53\x14\x0d\x54\x8c\x2e\x14\x77\x32\x5d\x36\x92\xad\x62\x00\xf2\ \xaf\x56\x3d\x23\xb5\x7a\x8a\x48\xa3\x4f\xa6\x17\x55\xfc\x5d\xcf\ \x79\x5e\xfa\x53\xfa\xa9\xaa\x58\x90\xc7\x72\x9e\x62\x35\x14\xd9\ \x18\x14\x03\x69\xe0\x89\x35\x0a\xac\xa7\x39\x07\x99\x6a\x30\x2b\ \xe5\x20\xa1\xe5\x48\x87\x87\xd2\xd1\x80\x00\x1b\xfb\x89\x76\x96\ \xb3\x51\x24\xa1\x06\x4a\x74\xac\x7e\xf2\x8f\x99\x47\x40\x72\x26\ \x0d\xe8\x6f\x63\x0b\x95\x3a\x0f\x5d\xeb\x67\x7e\x47\x48\x48\x03\ \xb0\xf1\x10\x7a\x93\x89\x02\x30\x3e\x6e\xc6\x52\xda\x9a\x85\x2d\ \xc8\x99\xc6\xb5\x6a\xd6\xa4\x6a\x11\xe1\xbb\x29\x39\xb7\x48\xf5\ \xaa\x89\x73\xc2\x91\xee\x67\x25\x59\x1a\xc4\xab\x21\xee\x25\x34\ \x6a\x56\x51\xe4\x1b\xd4\xf2\x39\x99\xb0\xca\xbd\x75\x0a\xbf\x28\ \xde\xbf\xee\xe6\x10\xa8\x8d\x72\xa7\x69\xf4\x91\xa6\xa1\xc1\xb8\ \x44\x53\xd8\xe2\x36\x96\xb0\x93\x62\x8a\x3e\x98\x86\x1d\x13\x6f\ \x0d\x8a\x84\xfb\xc3\x15\x48\x16\x67\x5b\xcc\x6d\x42\x5b\x21\x01\ \x3d\xa0\x87\xa6\x7f\x0d\xef\xd9\x6f\x04\x35\xad\x4f\x71\xba\x67\ \xb8\x9e\x7a\xd7\xf9\x18\x0f\xa4\x2a\x74\x95\xf2\x11\xc7\xd2\x17\ \xd8\x95\x8e\x2a\xaa\xfa\x34\xba\x5d\x93\xba\xa0\x20\xab\x91\xd8\ \x81\x31\xab\x33\x1b\x55\xf3\xdf\xf1\x70\x61\x7d\x9e\xaa\x92\x13\ \xf6\x31\x55\x43\x2b\x59\xd6\xdd\x7b\x45\x1b\x4a\xb0\xa4\xe2\xcc\ \xc4\x1e\xf3\x5a\xb3\x07\x22\xd6\x2a\x48\x32\x4a\xac\x97\x00\xb6\ \x6d\xd6\x1d\x56\xfb\xca\x6d\x7c\x54\x5b\x5f\xd4\x4b\x16\x9d\xbf\ \xc5\xa5\xb8\xf0\x39\xf7\x93\xea\xe9\xf9\x56\xf9\x2b\xd7\xbc\x66\ \x80\x8b\xd6\xa4\xe4\x0b\x8e\xbd\x0c\x0d\x43\xb0\x2a\xa7\x1e\xf2\ \x9e\x84\x06\xeb\x59\x0e\x0f\x9a\x22\xb0\x26\xa3\x82\x06\x09\x94\ \x3d\x97\x50\xa4\x7c\xa5\x86\x3b\x48\xf5\xc5\xa9\xea\xea\x0b\x5f\ \xcc\x7f\x99\xd2\x33\x5a\x18\x25\x30\x09\xc9\xc1\x97\xfc\x1c\x6c\ \xaa\x4b\x7c\x8a\x84\xce\x2b\x31\x37\xe7\x99\xd7\xd1\x1d\xbf\x0e\ \xd4\x3d\xf2\x14\x28\xfa\xcb\x94\xe9\x44\xba\xed\x3a\xd2\xd4\x91\ \x6f\x23\x0d\xca\xc3\xa8\x92\x35\x3b\x8b\xa3\x63\xd7\x13\xa8\x96\ \xd5\x68\x8d\x32\x7e\xf6\x95\xca\xdb\xa8\xed\x39\x60\x33\x12\x2f\ \xc7\x37\x9a\xe3\x45\x2d\x90\xd3\x4b\xb7\xcc\x4e\x27\x94\x85\x4b\ \x75\x33\xcc\xec\x5c\x76\x13\x0b\x2b\x3f\x63\x34\x1d\x0f\x83\x51\ \xf1\x2b\x83\x63\xc8\x00\x8e\xe6\x74\xfe\x33\x58\x16\x5d\x3a\x7c\ \x94\xc5\x8f\xbc\xdf\x82\xd1\x1a\x5d\x03\x6a\x9f\x2a\xab\x71\xee\ \x7f\xf5\xfc\xce\x63\x56\xf1\x3c\x4a\x84\xf2\x67\x2f\x6b\x5e\x44\ \xfb\xc8\xa9\xce\x04\xa4\x54\xf3\x10\xc2\xf2\x2a\x8e\x08\xbe\x3d\ \x63\x0b\xfd\xe5\xbb\xda\x6e\xc6\x57\xe8\x95\x7e\xd0\x2a\x0e\x29\ \x8d\xd6\x9e\x62\x76\xb3\x9e\x58\xda\x26\x9b\x05\xa5\x8b\xdd\x8e\ \x23\xc7\x17\x6c\x85\x17\x3e\xf3\x0d\x25\xc5\xf9\xcc\x05\x62\x4e\ \x2f\x78\xf5\x55\x07\xef\x0e\x7a\x81\x06\xe3\x84\x5b\x09\xa0\x02\ \x87\x96\x36\x1f\xbc\x2f\x40\x00\x1d\xcc\xf1\xc9\xb7\x22\x78\x82\ \xc6\xd7\xf6\x16\x92\x0d\xb3\x70\x6f\x36\x85\x2a\x95\x1f\x6a\x29\ \x31\xcb\xa7\x44\xcd\x76\x2a\x79\xd8\x39\x3f\xda\x61\xac\xcc\x36\ \x28\x08\x9f\x95\x7f\xaf\x78\x6a\x35\x05\x1d\x39\x26\xe2\xb5\x4e\ \x07\xe5\x1f\xde\x2e\xa6\xea\xb7\x76\x37\x6e\xe6\x02\x79\x9c\x28\ \x19\x32\xa4\xa2\xe1\x6e\x14\xfb\x9c\x40\xa4\x34\xf6\x8b\xb6\x07\ \xf3\x16\xf7\x61\x60\x2c\x04\xa9\xd5\x6f\x7a\x95\x05\xfb\x28\xbc\ \x06\x6a\x6b\x94\xa5\xbb\xff\x00\x23\xfd\xa3\x2a\x46\xcd\xd1\x6f\ \x79\x7d\x35\xf1\xb4\xea\xb4\xfe\x65\xe4\x19\x2d\x5a\x95\x00\xba\ \x00\xaa\x7b\x28\xc4\x43\x55\x72\x4e\xe6\x27\x1d\x4c\xd6\x68\xf1\ \x53\xd1\x71\xf3\x2a\x8b\x75\x26\x08\x14\xc7\x35\x8f\xb0\x52\x64\ \xab\x54\xa9\xc3\x18\x6b\xa9\xab\xf9\xaf\xf4\x96\x54\xb1\x1a\x98\ \xe3\x36\xfc\xd0\xd4\x96\x26\xec\x00\xb7\x02\x42\x9a\x87\x37\x27\ \x6f\xe9\x1b\x4b\x50\xc5\x80\xb0\xfd\x21\xf9\x5a\xb8\x28\xdb\x86\ \x17\xb4\x24\xa4\xd6\xc9\xb4\x90\xd7\x62\x08\x0d\xfa\x45\x1a\x8c\ \x79\x63\xfa\xc3\x0e\xba\x4d\x4d\x45\xb7\x55\x5b\x8e\xd0\x5a\xa2\ \xa1\xb0\x52\x4f\x73\x21\x42\xc7\xac\x30\xc6\xf6\x26\x18\xb5\x47\ \x8c\xcc\x73\x7f\x69\xa5\xc4\x95\x9d\x94\xcd\x15\xfa\x30\x8e\x2d\ \x6d\x46\xbf\x69\x0d\x43\xe6\x39\xc1\x95\xb6\xd7\xe1\x5a\xf1\x15\ \x29\x1e\x42\xb0\xed\x71\x1e\x22\xad\xf8\x21\x2c\xd5\xc1\x3c\x21\ \x33\x91\x55\xf2\xd7\xee\x67\x5b\xe0\xd4\xdd\x17\x52\xe4\x5b\xc8\ \x40\xfd\xe7\x2a\xbe\x9e\xb7\x88\x6c\xb8\xbc\x67\xb5\x5f\x1b\xa6\ \xab\x52\x9a\x9d\xac\x6c\x4c\x67\xda\xdf\x6d\xca\x2d\xfb\xda\x4f\ \xb2\xa2\x26\x54\x8c\xc1\x67\xf2\x88\xe3\x3a\x2a\xfa\xca\xcc\x0a\ \x13\x65\xec\x22\x03\x91\xd2\x6d\x41\x73\x78\x2a\x0d\xed\x35\x22\ \x35\x19\x8f\x02\x3a\x95\x57\x43\x78\x5a\x6a\x6a\x50\x86\x36\x63\ \xc4\xd7\x42\xa6\xd0\x4a\xe8\x55\x2c\x03\x53\x3b\x18\x76\x94\xf8\ \xa6\xa2\x8b\x85\xdd\xfc\xce\x62\x2b\xa9\xb8\x06\x54\x95\x6e\xd8\ \xc3\x09\x8b\x1a\x94\xd6\x28\x4d\x88\x2a\x7d\x44\xc0\xad\xc8\x0a\ \xde\xc6\x3e\x9d\x51\x52\xc2\xb2\x0b\x8e\xa2\x6b\x04\x19\x54\x2c\ \x3b\x83\x33\xa4\xb4\x2c\x17\xe5\x23\xde\x12\xd6\xcf\x96\xe4\xf4\ \xdb\x89\x9e\x3b\xf0\x10\x7f\xf6\xcc\xd1\x59\xcf\x40\x3f\xf1\xc4\ \x91\xe8\x95\xea\x7f\xa9\x48\x5b\xbb\x1b\x18\xf5\xa3\x48\x0d\xad\ \x5c\x1f\x41\x99\x3a\xa8\x2a\x19\x9c\x86\x3d\xe6\x58\xdb\xca\xc0\ \xfa\x93\x68\x15\x37\xd2\xd3\xfc\x0c\x7f\xf2\x38\x8b\x7d\x5e\xd2\ \x05\x1d\x8a\x3d\x16\x28\xf1\xe6\xbb\x7b\x41\x29\x7c\xa2\x91\x89\ \x62\x3c\x6a\x6b\xb1\xcd\x52\x07\x5c\xda\x53\x46\xa2\xb9\x02\xec\ \xcd\xe8\x24\xfa\x3f\x87\x55\xaa\x0d\x5a\xc5\xa9\xd2\x1c\x92\x32\ \x7d\xa5\x3e\x2b\x53\xfb\xbd\x35\x16\x45\xb6\x58\x83\xb8\xc2\xe7\ \xc3\x15\x29\x5a\x59\xaa\xe0\x0e\xd7\xcf\xe9\x3d\xa9\xd5\xd1\xa8\ \xa0\x6c\xdc\x07\x1b\xa7\x2a\xae\xf5\xb9\x28\xce\xd0\x55\xaa\xbd\ \x3b\x10\x41\xc8\xf6\xed\x0f\xca\xd5\xb5\xd6\x96\xdd\xc2\x82\x30\ \x02\xe4\x13\x98\x03\xc1\xd5\x50\x7a\x68\x0d\x27\xa6\x77\x0b\x99\ \x1f\x9d\xac\x08\x27\xa4\xe9\x69\x74\x94\xe9\x3a\xab\xbb\x1a\x8e\ \xb9\x50\x3a\x19\x5e\x97\xa9\x99\xcd\x37\x06\xa2\xed\x62\x2d\x7f\ \x5e\xd0\xb5\x83\xc4\x40\xd6\xb1\x00\xff\x00\x10\xfe\x3a\x87\xc2\ \xa4\x79\x75\xe9\xdf\x88\xa7\xa9\xe2\xfc\x23\x72\x9b\x54\xa4\xc0\ \x93\xd7\x22\x53\xfa\x9c\xff\x00\x9e\xa0\x56\xbf\x22\x23\x52\xbb\ \xeb\x55\x46\xf9\x95\xcd\xbd\xaf\x1a\x1b\x75\x44\xac\xb6\x19\x1b\ \x87\x6b\xc2\xd5\x59\xab\xd4\x70\x6c\xea\xc4\x7e\xf3\xa4\xe9\x97\ \x36\xa2\x58\x86\x53\x3a\x65\xc5\x2f\x84\xa9\x6e\x2a\x56\xfd\x40\ \x13\x9e\xa3\x3b\x90\xe4\x9b\xdb\xbc\xaf\xe3\x15\x15\x34\x7a\x4a\ \x56\xce\xd2\xc6\xde\xa6\x37\xbc\x82\x15\x4d\x9e\x85\x7b\xab\x1e\ \x2e\xa4\x4a\x75\x94\x13\x55\x40\xea\x34\xb6\xdf\xff\x00\x75\x3a\ \x89\x16\x96\xb0\x74\xf0\x5b\xca\x47\x0d\xfd\x22\xe9\x6a\x2a\xe8\ \xf5\x3b\xd6\xe0\x83\x6c\xf5\x96\x2d\x4f\xb8\xa1\x21\xa3\x74\x74\ \x1b\x51\xa8\xa7\x45\x2f\x76\x39\xf4\x13\xa1\xaa\xd3\xd1\xf8\x95\ \x1f\xb4\xe9\x00\x15\x97\xfd\x4a\x60\xfe\xf1\xbf\xe1\x4d\x39\x5a\ \xd5\x75\x55\x05\x85\x3f\x28\xbf\x78\xde\x5d\x68\x93\xb5\x7f\x1d\ \xd4\x7d\x8f\x46\x9a\x34\xc1\xb5\xd8\x4e\x10\xaa\x1a\x83\x11\x83\ \x78\x5f\x19\xd6\x0d\x4e\xa6\xa5\x42\x79\x26\xde\xdd\x27\x3c\x54\ \x02\x91\x17\x39\x32\xe3\xc7\x22\xb7\xb3\x4b\xdf\x04\x73\x19\xb8\ \x9a\x9f\x41\x23\x0e\x4d\xaf\x2c\xa6\x6f\x51\x1b\xa5\xae\x7e\x93\ \x41\x72\x11\xe2\x2d\x30\x7e\x5c\x18\xfa\xcd\x73\xb6\xfc\x64\xc8\ \x74\x17\x7a\xfb\x89\x3d\xcf\xac\x70\x25\x9e\xd9\x26\xfc\x4c\x58\ \xd0\xa9\x00\x4e\x6d\x09\xc8\x01\x61\x52\xa1\x55\xc7\x95\x08\x1f\ \x99\xb0\x3f\x79\xd5\xa3\xf0\xc5\xd3\xd0\x5d\x4e\xa6\xf5\x8b\x0b\ \xa8\xa6\xa4\xa8\xf7\x99\xb6\x43\x23\x9f\xa6\xd3\x9a\x8b\xe2\x31\ \x09\x4f\xf3\xb7\xf4\xef\x1e\x11\x95\x7f\xcb\x53\x2a\x3a\xd5\x7c\ \x13\xed\xda\x36\xa6\xad\x51\xcb\x2e\x94\xb9\x02\xc3\x79\x22\xdf\ \xa7\x12\x2a\xba\xdd\x43\x35\xc5\x93\xdb\xfb\x98\x77\x4f\x50\xd5\ \xd2\xa3\x12\xd5\x2b\x35\xba\xec\x42\x7f\x7c\x09\xe2\xba\x6a\x43\ \xe4\x07\xd5\xea\x0c\xfd\x04\x8d\xeb\x55\xa9\x7f\x15\xd9\xcf\xab\ \x45\xb3\xf0\xa0\x5a\xf3\x59\x46\xaf\x1a\xba\x0a\x7c\xae\x46\x38\ \x44\xb7\xef\x71\x0f\x4b\x52\x8d\x77\x1b\x68\x1f\x52\x58\xce\x36\ \x4d\x4b\xdc\x03\x3b\x9f\xe1\xf5\x53\xba\xf7\x25\x73\x2e\x53\x22\ \x97\x68\x75\x55\xa9\x50\xae\x69\x9d\x32\x5c\x77\x63\xfd\xe2\x8e\ \xaa\x91\xe1\x76\x9f\x40\x2d\x24\xd6\xd6\x6a\x9a\x97\x66\xc6\x6d\ \x26\x2d\x66\xc5\xcf\xbc\xa7\x15\x6a\xd6\x72\xcc\x45\x3a\xa1\xbd\ \x2f\x63\x22\xab\x5e\xba\x12\x0b\xba\xfb\xc0\x24\xde\xf1\x86\xb0\ \x6a\x5b\x6a\x0b\xa8\xfd\x44\xd6\x60\xd2\x8e\xa5\xce\x2e\x8d\xee\ \xa2\x18\xaa\x30\x5a\x92\x5f\xd3\x12\x6a\xb4\xb6\x8d\xc8\x77\x27\ \x71\xd3\xde\x78\x31\x16\xce\x26\xb1\x9d\x5a\xaf\xa5\x14\xc9\xa9\ \x41\xcd\xcf\x2a\xf6\xfe\x44\x75\x27\xf8\x73\x11\x6a\x5a\x90\x7a\ \x79\xc7\xf6\x91\x54\x61\xe1\x53\x0d\xd7\x31\x9a\x62\xa2\xaa\xe7\ \x83\x33\x87\x55\xb9\xd1\x00\x71\x5f\xd6\xec\x20\xa3\x68\x2f\x73\ \xe3\x8f\xa0\x8b\xd7\x28\x0e\xf6\xe2\xf7\x12\x75\x04\x0e\x3e\xb2\ \x90\xba\x74\xdf\xe1\xf7\xc2\xd7\x3e\xb8\x86\x5b\x41\xd1\x2b\x1f\ \x72\x27\x3d\x2c\x05\x81\xcc\x3f\xa4\x2c\x5a\xac\xd5\xd2\x81\x8a\ \x2c\x47\xfb\x9a\x63\x6a\x15\x45\xd2\x85\x30\x3b\xda\xf2\x75\x5b\ \xf2\x61\x5f\x6e\x2f\x88\x61\x1b\x6b\x2a\x91\x60\x42\xfb\x09\x15\ \x7d\x45\x52\x6c\x6a\x35\x89\xe8\x63\x2a\x2d\xc6\xe4\xc5\xba\x49\ \x18\xdd\xc7\xf1\x35\x24\x67\x5d\x4f\x87\x16\xff\x00\xa5\x6a\xea\ \xdf\x22\xd3\x93\xa9\x2d\xe2\x61\x8e\x47\x79\xd9\xd2\x8d\x9f\xe1\ \xdd\x5b\x9c\x02\xcb\x38\x95\x0e\xe3\x60\x78\xb4\xb8\xfb\x55\xf1\ \xa9\x56\xa2\xd3\xb0\x73\xfa\xcd\xf1\x6a\x32\x8b\x00\x4d\xfb\x45\ \xe3\x81\xc1\x94\x69\x6b\xad\x1a\x04\x1a\x5d\x72\x41\xcc\xd0\x8c\ \x60\x42\xf9\x94\x5f\xb4\xcd\xab\xc9\x4b\x46\x0d\x55\x16\x27\x7a\ \x30\x1d\x2d\x98\x26\xb5\x0c\xdb\x07\xa5\xc4\x88\xd4\xa6\x3c\xa6\ \x69\xda\xd9\x07\x3d\xa2\x91\x94\x8f\x98\x42\x60\x6c\x4f\x36\x92\ \x53\x4a\xa9\x02\xcc\x41\xb7\x78\xc5\x29\x7b\xb2\x15\xf5\x12\x25\ \xb9\x5b\xde\x3a\x9d\x7f\x0c\x58\x10\xdf\xc4\xcd\x85\xd0\x53\x49\ \x80\x0a\xf9\xfd\xe6\x6d\x74\x6b\xa8\xbd\xba\x88\x9a\x5a\x8d\x2b\ \x8f\xbc\xa4\x41\xf4\x32\xaa\x35\xb4\x0a\x2f\x7a\xc4\xfa\x01\x31\ \x48\x54\xbb\xb0\x18\x37\x8e\xa1\x40\xb5\x4f\x94\xd8\x1f\xd6\x50\ \x9f\x11\xd1\xd3\x1e\x5d\x29\xa9\xdb\x79\xb4\x65\x6f\x89\xd4\xa6\ \x89\xe0\xd3\x4a\x45\x85\xfc\xab\x33\xb4\xf4\x14\xf8\x7e\xaa\xad\ \xdb\x65\x81\x38\x26\x17\xfd\x3a\x95\x3b\xfd\xa7\x57\x4d\x48\xe9\ \xba\xf1\x26\xbe\xa6\xb0\x3e\x25\x57\xfa\x98\xb6\xa4\x0b\x65\x8b\ \x13\xda\x5d\x9e\x97\x53\x1f\x0c\xa6\x54\x29\x7a\x87\xa9\x02\xd3\ \xa0\x1a\x85\x1a\x22\xa1\xd3\x85\x27\xe5\x42\x6e\x64\x3a\x6d\x32\ \x69\x69\x8a\xf5\x57\x75\x43\xf2\x21\xe9\xea\x67\xb7\x3d\x56\x2f\ \x51\xae\x7d\xe6\x2f\x6d\x78\xa5\xbe\x22\xf6\xb1\xa3\x4c\x0e\x33\ \xd2\x78\x6b\x2a\x35\xfc\x31\x40\x90\x2f\x91\x23\xaa\x97\x22\xc4\ \x5a\x4d\x54\x3a\xfc\xbf\xa8\x8c\xe3\x06\xd7\x57\xc7\xaa\xc3\x73\ \xd0\xa6\xe3\xa1\xbd\xa2\xbe\xd1\x41\x5f\x6d\x5d\x32\xaf\x5b\x86\ \x99\xa4\xd4\x53\xad\xa5\x09\x50\x6d\xa8\x0d\xaf\xde\x0e\xa6\x85\ \x65\x37\xa6\xc1\xc0\xe8\x44\x33\xe1\x38\xb6\x93\x07\xec\xe1\x87\ \x70\x3f\x98\x9d\x5f\xc4\xf6\xb3\xa5\x1a\x1b\x5c\x03\xe6\x23\xb4\ \x5d\xd9\x53\xc4\x55\xb1\x18\x3d\x27\x2f\xe2\xda\xe3\x56\xc6\x8f\ \x94\x5a\xcf\xeb\x35\xc7\x8e\xd1\x6e\x28\xd5\x6a\x4b\x04\xd4\x31\ \xde\xb5\x06\xc6\xff\x00\x6b\x0e\x61\x7c\x34\x9a\xf5\x2b\x50\x65\ \xb7\x8b\x48\x80\x07\x71\xc4\x87\xe1\x60\xea\xb4\xda\x8d\x29\xb0\ \xc8\x64\x3f\xee\xe9\x1b\xf0\xca\xec\xb5\x69\x54\xda\x43\xd3\xa8\ \x15\x87\x7b\xff\x00\xf9\x35\x66\x33\xa8\x1e\xa1\xa6\xca\x43\x64\ \x72\x3b\xe6\x51\xae\xf2\x6b\x1d\xc1\x04\x13\x73\x11\xf1\xe4\xf0\ \xb5\xf5\xc2\x8c\x2d\x67\x03\xf5\x85\xaa\xac\x1d\x96\xaa\xe6\xea\ \xbb\x87\xb8\xff\x00\xf6\x6d\x92\xdd\x00\x75\xa8\x87\xc8\x7b\x74\ \x83\xfe\x24\x62\x35\x94\xd2\xf6\xd9\x45\x57\xf6\x9e\xa2\xfb\x5c\ \x5a\xcd\x4d\xba\x5e\x1f\xf8\x9a\x91\x3a\xe7\x70\x40\x00\x28\xfd\ \x84\x67\xab\xe3\x97\x4a\xa1\x05\xaf\xcc\x72\xd6\x4a\xc3\x6d\x63\ \x66\xfc\x2d\xfd\xe4\x82\xeb\xba\x03\x9b\x01\xeb\xde\x6f\x19\x54\ \x95\x75\x3a\x2d\x48\xa8\x8c\x55\x87\x04\x70\x44\xfa\xe6\x2e\xff\ \x00\x06\x2c\x8b\x4e\x9d\x7a\xc9\x91\xc0\x2c\xc0\x5f\xeb\x69\xf2\ \x1a\x4a\xc0\x94\xa3\x58\x6f\xa6\x48\xe7\xa4\xfa\x0f\xf1\x43\x54\ \x3a\x7d\x28\xa2\x08\x0a\xbe\x21\x0b\xca\xdf\x8c\x7b\x5a\x73\xe7\ \x36\xc8\xd7\x1f\x2b\xe7\x3e\x20\xad\x49\xcd\x3a\x8a\x55\x86\x2c\ \x62\x54\xfd\xc3\x5f\x39\xbc\xbb\x57\xf1\x11\x58\x8a\x7a\xda\x42\ \xa0\x18\x0c\x30\xc2\x2c\x69\x69\x54\x53\xf6\x5a\xe1\x83\x0f\x95\ \xb0\x66\xf7\xfa\xca\x44\x24\xcb\xe8\x1d\xb4\x4b\x74\xdb\x63\x17\ \x4f\xe1\xfa\xbc\x8f\x0b\xeb\x78\xd1\x4a\xad\x2d\x35\x55\xa8\xb9\ \x04\x70\x65\xa8\xc4\x63\x4a\x8a\x95\x36\x2c\xd7\xbf\xa0\x8c\x1a\ \x9a\xae\x36\xee\xc1\xe6\xd8\xbc\x92\xa3\x10\x29\x8f\xf6\xca\x74\ \xaa\x3a\x0c\xff\x00\x10\x31\xff\xd9\ " qt_resource_name = b"\ \x00\x16\ \x02\x65\x98\x67\ \x00\x4e\ \x00\x6f\x00\x2d\x00\x4f\x00\x6e\x00\x65\x00\x73\x00\x2d\x00\x4c\x00\x61\x00\x75\x00\x67\x00\x68\x00\x69\x00\x6e\x00\x67\x00\x2d\ \x00\x33\x00\x2e\x00\x6a\x00\x70\x00\x67\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/graphicsview/embeddeddialogs/No-Ones-Laughing-3.jpg0000644000076500000240000007401212613140041026533 0ustar philstaff00000000000000ÿØÿàJFIFÿÛC  !"$"$ÿÛCÿþNo One's LaughingÿÀ"ÿÄÿÄ>!1AQ"aq2#BR‘¡±ÁÑ$3bðCrá%‚ñ4Sc’ÿÄÿÄ !1AQa2BÿÚ ?°U]¢½zŒ÷ùC·þ >³Q¸šuÝ}¬';SU«U-ÀP€*æÜϤü¼}u»Rh«Ž.Æ,ëµÿü‡¿[™Ô¸Áµ»Ì5–E®‚ku$åÃ[ºƒ=WXÀR‘÷A ¹ÙÐL-qÎe‘j¯´¡7m5;õ±"ó¡ð}U uÀé÷\N ÍûÆÒªUƒ)ÊñØ¥u~#AiêYK…$ß"Òf£QFâ.;®eš¦߇%qþ­,?´ç ̶(ÄÎaÇp×¢Ùö7880Ído›ÊOQ'®ÉÈ=DÓ,Z†ClƒûˆeU¾òŸGi8;–ÝGèT*n1J+ä¨üª:ÂWȰ±æÓ5+w@¸í‘͸‚_©èn'€dtË[›^UO:jˆyY*`‰"ç1Ék\ˆ–ËhÛ~“4ÆÙg˜)@½ŒÝÂ×"¡ À‚b*m,pzˆu›$Þòu'uøfã.ʰáj·<Ô‚H¹õmCÿðm`Õp='¹Ü;ËŒõr -Þ0\Òk÷ŠÌeþìÛ¼Ó!¶&3Дô’`¼`$už„‚ ¡Ø  J±³.{ƒ0'¶\È›Mãqâ=)-ïâ LÓÐ}§•¿SˆõEÜû½Í­Hõ5§»$ŸÚtkܺØXI%0·Àýeàx´ÔòÀZÓj”Ë5îOkΦš’é© Õî~Eþ¦+IHQ_¯ò¯xuj5f,yë1nµ:&¶úŽ]Û&yTâì-5²á&@H ·<ˆB@Qrx´¨S»\çÒ1k‚qlØKV%4[1úÝ> ©"Gê"J™“~LezÃOHÔ¨nã…’gÅÖ£Rð) üÍ{\N0ѲÜ=J@ù¦×ªõw³1»_¯y%g ¨s{Nœeñ›uv‡KN…Rÿl@¤vç®'gJt U¯§ ÕNIa€ÖçõŸ(µ 6e¶ Ä®½qB’W½®n=G?Irãj— ×^ª;±»0õë+DÄ…}È8þmWiûÅùA·º·þw‘=Å ‰ÃR}ãÛƒý&ã5ŒÞ q³(|À_™Æœý¸¸áé©·Ó´æ×/ˆTlr/ò·[{Ë>%SÆø~X«…_ ½â_`ž%R©>mnÆ&¦‰Õˆt6îålªÓª£ÌpVöý&-WV"R-Èn‘Ú’étÍSUIßsÎgSüLõ?ê•7.Ç -è‰ÓêÚ†¦J©M¬Àܨ<óµñG¦>!Q,¨ž <ƒ3mÓ'O˜¯Yk[í`ؾäÁŠ¥J‚ÔGPRÇŠŠGñ;ªÚz”•ÛEH‚mcqÐÉ?ÄTtT<%Ó§‡X‹Ô@Ä…íõŒ½à³éޏ´k%E?-ªŒþ¦ BV©¦Ô«#m¾Óá f«k 9 'J®ÚŸ£ÝIšÀ¬)T5pÆÊ-n²ÊZäZai"Ó7¾à.ß©‘jÑ|•q‘oÒnŽš½O1ÜÇÒFIQƒ÷óC$s3¯3L¼Üñ5X±dƒ2ùâIJ°¶ ð`O‰VéúO3q$a`&£g D–¿Y´Î ¿ ’uþ ªJz‘J¡ûªžVÌWÄh6—VôO+ê$ pݽgf¡:ÿ… ¼×Óa»•™³.µìr\㼨Tw¡šolý"ÛåöšdEA7N{Lü[€÷‹ÏXÔ`Z̓$«}Š¿uÍç˜U”§ö‚Ëþ\ø[>Æ.‘ówSÌ í;y…ÿ´H¸6=á¨(Ê., ÏVòÖq릋¢ñ›‡y ¾Þ°Ö¯xaÕ$Þ.«qÖ‰éIfÇ&R {nöÏ&OY®Ö\(âQX<1õ=䮤& ®Ž¬ÿðÚeñäÎI¹¸:¨_áTnxoï!*%MĸªD%-L‚Ö”![@ðI<ÖÓ8"äG 6Ð}øŽ¥R¥C³p Ø BÓ‰×Nç“oxú:6¨v« Ç„¦/´[ÔÂZ΄ì;p&4áÇá•/«€;döTÅ0ª;òešµp@'osÄURªÄ-˜Ž§ûCoÒRMÙ¯´Íø‚ŽÇ¿éM˜µ²dŒ§L’,'KG@;‚y홪XŒzKª¶CÀé9Þ_‘3·Š|ÂÀp'–‹q(Ç7°ï £÷™Ó‰"y„†ŠÇÞk0o)àÀðÀ7’;Ä$á@ö˜àm&öéÍÞÐöó™"ÍB¦Ê,zNn¸šµ ÛŽe¬ä«7n'7PÎ}æø³S±µ…ý$õ¼ÔÇ¡6úÆ9,l7ÄkhëÀž“¤é„Vûµ9ÇXUª „S|(㼦Ôͪ-½&;RW Ü·I »GLÔ )0*PŸN‡é!#ïƒ1çÊÿÁŽÒj›OUZš€;w‰Õ7Þ9U°cqé ;LT£IZG9ò¸µï؉WÃé§…[áÍw7Ò'‚GiE5©uÁ·^Æ’¿Ùê'ˆru· ÆÅcR£m8 ŽÁa°¸ÚŒ€µûÊþ5Bõ½+x5üâÝúȆÚbÃ/ÒÑ—Eéඦ\oîg_âo¿I Ô^÷M¬=§£n!˜ÜœÚuôŽ•õ /àT/Öø·´Ï/”Â5£§ \¼qä—Ös¯bÕêù¿-ú˜§¬Õ¼Cvc{žðØ‚. ÞjLCÌX“º÷¼6"ï0ù„À,p#Èw…y­ _Êoü@'fˆ†¨mŽÂ?G°nQsN¨°·ánÆ#_÷kFÕ/ú˜%¨1o„Ö¦êäÄ‹šfÝ=bÈIÎ!ƒqn±KºðÔ‹D1Äõî=`óˆ@ÓMPO1ëM@ˆñ,qXuIÜ.zI-ŽD»áZäÓjC:ݕǡœ”+|±‡¹ Á0³L¸¿â”©iõlŠ<‡*GPdŽˆ[WuÕü39}?î¦D `”UHƒƒqÒûÒi}¬lo k’¶ Z Ú.5pøý ­6f0`o‚ sïtxY`F•7ÝOÿYíA¹Fî¿ú“°d h÷;è+~V Én‘$Zx^òF_¬Êu¨ ™€nH¶O2&jÁñH‹x·^‘Ú YR¯q¬»ˆ@¡Éÿ¤Ùí Cµ‰PÓ®ƒ#|ÊfüXÓ¯Y+SS+aÜZ?¹¢ÕçaeÖnŸmZl—ò=á÷WøF¢‘w,I>ÂNi”?#‰fš•ÍO5콊̩NàÓsg·‘º4u"ký_XÖÙo¤ÚŒèÛONbË›üÄDqù¿h¶;¿óT!Aš+\eý @¼ôª¹“)šnr–ö1µ|?ÊÄ{‰"‘H9Œ[œÚhnFG¤0@åyˆ7A¨ðk† á‡pfjÓìÚ‚/p}:D‚¤âS¨µ] *QŠäH£¨ì^xÅ¡X牨€ðd,Tž £(9ÄÅ"›xå¢Ù÷‘:“ ¶WúKhiÕ´ì?Ü/ oqÖt4Û—M‘Éæf˜KéÝNDK©!Sr+c1’›ôý@8™iKé®pbÞ™Q‘úG@騫§eê8*ŠAí+Ó6Ú–è`ëiÚ¡#ƒ/ª·FßqPzbCTgzü§‘Ú[¤_#I5ºÚãƒ(O‘hÓNÕät‹jy ¼JÍLÈÅâ‹4È–h¬E5n¸¼œƒköôsDÊÖ…0u‹ Dë®P~PSsØ“–XHÝT“ÔÂ)ƒ~¿Im'.lDM@>as(¦–ÈUEÉ‘»úFã-ß Š]Ö°㩊@ÏqÔL4¢ûÓ†"+Å Ø FÖ©@ t»[™?ÚT›*{™˜”%Fn±éP(ÈÏA!¥½‰b;u‘¹ÚÇ´¬'š—7'éy¾ ¯»ú“ăÒÐÅ­zªÖúĵ@OÍ¿ÌlÂ$¶Zór  î;Àç´K9áøé2 Á‹bA³sí¦P^܆iÏ­OiÜÆÂXõ2yæ·c=˜X7™HÌÔ*ÔFRœñwaä=ûF­®Yš¤¤×L‚E¦J¶U…Œ˜%HÈ8´('=¡-ÞÂà°ýÄ‘d±<ÃNEŒ]EÚçÌ Q¼×¼Rж©vê˜~iš=FÆ Œ0³Ö(6n87šÔüQ½lä^—Ô]¨VÁ•Á²ÿƒ¸MWƒPY*­Û0u:rŽôŸ•6\W¸’•6 ´²8"ò£¦ð\«“|„RŠä0›AÙAVc´úñ…[O¼îñïž"EMÃ-eº›àG3"áXÄ×§L©eÝê9´¢jCÂÌMØFêôž/-_@ŬPúA¢„êU—vÒ×½ÿ˜æ¬Žå”€Y³qÒ]§"º‡°¨Eÿ ÷÷‘ÕM¤ƒpGyÔÖRØÅ‘CRnEä̈ɶ m¶ò¿cØÄ"±´ÌÆU¢ÈûO1{Zü¤“å@,[ERÁ½¯)}ŒˆÖÚxŠ)M€³À=↣h¿Xê"âç¼H ?¼¨(R t¤Ê¶p6âÜóÔ\©¿Ò"ù9†-Èàña}ÌwZ÷Áš—\ƒÌIäæãp ‘ÞEwd €•apDk.ÜÞêx˜·ïqØËQô*äNŽŸP‘ÖrhÈ6‡J±J™Åÿy›ÇL¯¢Jõ”¶å>³åµÔ^Ž¥Ñ ggáš½µÆÓžÒi©ê©øÊ3ß±˜ã5«6>M¹Ü1hên®kÜuíµ6¥P£‹0Dìæm}Ê6r‹uŠkî±½‡OXô,ªZÁ€È¬–¥BõYȓ̦nÅ€·´Ãc×õ™È¸éI8¾$±ÎØäó#-õªØæI»ðc‘‰ë%õ”iÇšÄæIe.zM¹éˆtÇÝñ0‹NmÜÌ<Ü|Ó3ûB\‹ÚDJG-“Úz¡-浺bx)lõ„­{£u‚)¿Ó#™[nÇ2ݾVd•Ræó\E/y˜tÇ׈¦F# dM©’ á°º–^"a·¼Ë›‚¦ä&KÞ'„pGÉý¤¥Hrã™H®F‹¬Þ!Ü¿2ò;úÍ@Ÿ'& aòðõJŒyÖOÌÙµ¢ Zjäf&ì§’#w\úM!Nèd€Õ*xmÞù€*ãÍMOÒ5RÇM;·ce¦ÔÈ+Ç@côãJĨ­ô2z g*zˆh6¹B§]V‰`éU®F|²Š'–£-šöÛÄã¨eS´œƒé(Ó×k€ù¼çxµ+¯Z†•jn.û\n š£h”ØS¬äsæ´³bÕЫ'ÃÅÁé9Ž)n?xËî&cTÑ©ÒØÿ•W1ZUbãC@÷\À4™šÊèoÒöŒ­HØApæk¨6®µ¶Ô àtu½§…Ma¶½ž™þ†!ë1ù€uƒl`@;} Þ3¦¶‚ŽÝÚ}R0cÅA´ûDjhU¢J½/'áq «#+u8#¡„¨¡Y‚1jm{)Íiv×§¹C[1Tî ÔA¸÷t}U26Š5HÿêOôœí]'ÓÖó)2Œ´o"¸ÈìÝd¤ Z•jU)ÿö_ë%8<ÉEö®Æ8'ô„K#« 0ë'âÙ”‚®/0LAÕUu”EV_˜w5±;[‘(¤]:üÃ÷ôÕP×í4Aÿxìaá°Xã•ö‚›v€AÔÓ%©‡ò,QBäEžÓX ]AÌ}rf[‹ô‰ðö¶ æØõýà˜Iè#tìI±âðïhÚ)›þ²PUÌmÄĬ¨/”b÷˜Pv´4¶›^ŽGMen§Tmy¤ì9‚'ušóÛíÀ¸í=UA»-ýGh¥"äÅ( ×`ôɺœ‰ÖÓêÍTdݵŽlxkN RµÖòÚL B.7 ûÌò†Uê ©BW8¿ðg‘±gUê²Z¨È\0î&|B‚Ô£öŠ68Ï´¥Åf¹ˆ×}¬@ìoÓÝr-yæ^o<ÜŽfÙR?´ó'Ö oQƒÓ±š Å"H†CÍ1•ðÔ“Ä{¨4—‰$´É½¥t0A‹Z77SF‘½Î%j‘Zÿ¦'‡¤b) Í¡šaF9œ›%€Qs̽îL'æ=¢”)\O8#"›5ãA¼™|¥ú'tê%ê·¡ckœÉH8Ì¥H*¡cÄÃI€Æe¦˜a‘c1i„Ë\öšý HÀ«Zöгƒ»#ÖRîªI¹“Õv{\ã´Ô¬ÊcÌà°±³wo8‹Ýæ´@ª€Í¹G¸€ (´j¹sÀA¨¡ÆêcÔŽÒ@QxwïÄ÷8†-{H<âSM ÚEÓ[dJ(`ãƒÈ…jUK0oÖejL*\cÞ˜$\cÒ!4ÁÓ‰©«nÚAÒ5eÁ¹÷žóŠƒi÷F&à‹_ƒ+S©ðfÜMâ¢}‘Ö§´°{ Í+Ô¢E@~R nkºâüYÏë_j”Æsù¤ìµA-N¡'›c ¢à"K5°1ÞnFIv]ß(yE6ºppqÁ L«OC‰‚É#i­`ç±ü'‰ŠÌ¤²GQÚY¤ðªPtjW{ÝMó#¬¦›’‡Ì8=䞈bÂÙ=£Vކޢ˜¨Ÿ¸öˆ°­Hí¨9g6~mÖ8TD£V›l MƒÈ‘Öƒ•ÚÂÒ=EóPªnÇ¡ï'ÖSdÕ2›²A F×%‡¼ðZ|ø¹¿Q½” d@-~‘ ©ªºæªÜbò-6£Sz‚ÈØay˦ùµ…Œ·IUZ WŸ=áL]ñ-0O «8l ’£¶ÝŽxà‘*MI§¶…Vm¤uèo­@¶§YŽhM4YH \u"aÙØ€}c¨Š7êìn#~Êí°u=%«•¦O$}#èÑ<«ƒ¥'¦Ö(@¤Ê£‘\ ¬ÖPFFf®åY¥ØðsØÌ4™ù‹¨Ä®ïÖTÙtH¢T©¸¼e‰#å˜P|×úJ’û–Óii…üµPƒÌÖŒLÒ7vÚˆßIWØ0omíÚ]" 5+ß­„?Pá*àœæø>°þþfÒ¾Q²·†jèQFÚlÖüDÆ×Õi¼$­N‚ñס™.GÄ´­B¹å9ÒHêÀŽgӚ¯ÃþÓE¸~³’ßÔ‘îó5ÆÚ,ˆiäí¹±„‰È8ž‹Åe”þ'¤p¦®Š™¿i[‚Hâ„elfÒ’€iÃë‘:éOàÚ¡`ZƒÃ©ðŠžùz«Yy™¼ã_—˜¬D²˜àé¥z-j”Ù-ÜM¤–=ånŒ8©\zÍi±ÜLrYïq˜4–°¹â+iãJí|Lm9a‰hÄâ0w ÊZ•4½‰cÁGÇQ⢆MíÒmAcŽ$¢ên £}éƒÔ`À‚Û¸‰¬Ä^ýc* X\™%F<œÆFiuGQ'bÒ¬Ú&ª‹œƒ7Wóh%@71ª†ÄÛˆ#‹˜†ÅÈÄ[rÁsë ?ÒKʬ7-‡ é!ê#€Úw`yvØn\¬Ž1VàGÓ¦G p.=#°È™´ÃT‡M½DĽˆ1kP_´r÷3$—A»pé (O0!øŒ¤/pdF_©66´ÝU¼DcÉQ˜ª– ©«óTUì A'®¤®õÇÒ!‰#n1È´¯ð”_¡õ“¸ …œ]¯å´`¥2ØîÄàM©^ªÓ »$fñ•T0ñÄp•w^ØÌÔí<—ÛNäÚâÝ ¼ih¾˜j«3 ઎²U鞙IJ¯›D…ZÆ“]âÇþ UÍU3¦ÕYN9Vî$ú”Þ|Eò=gJ½#Zˆ±©ä ô‘0jv,¦ÜMJÍF׸=miMkWÒ+ÿܦ3ê"j&NI‰´*xv' éÆ8‹èm*¯OêEî§*{ˆ—PbœC¦yÍ¢ÎsHalÜñfT¬”Ò£€Û¿hô£¾¤î¥Ç¬çÖºÖ®,¢WJ¡knÏf…@µ:”[eD6ïI™û¤ Q-{0â$Ûv×K¶†é6†°7’ªîŒ R¦þjCòA@6i°b?XÊ ôÞùR:_ñ*¦´€³±|:'‡±†N²X‹7y5Td6V˜ÌWŽàY}„À¥° µ² šÀò×v$6÷Œ7ðÍ̘› J7 æI”麓í¦`ÚfKõ“¡>!…¤¸w^1*–|–]F˜œÁ9n6¹±Ó§ðpWâΣñ©þò?ˆ!]ueµ¼ÆÕ|Nr<ÇQpÄ^êßÌPÚQ¦\T\åo{õê%ú-EZTÔ¥FýäX„ÛÖ9@ðÖÇ6‡.ڎ݉x€&¦šT_lÆ}‹O\—Ò¸¿å3OqµÈ¼²AIw©ÍûÎV—úaÓ=:…] ø¼4¢üÃÚU§ø‚Uµ:êï ®=Þ‹‚½Œ6ýkO Eö’}b5I^#Tù•€ˆ¨ à‹FbsÀ‹qs~#°à™qs4½Æ!QÈokÃZ&£Ø\Ç¢ˆ@{|Þò™ª÷Ì[¨"ã7›Y’/18š^Ø´[çœfÅlŒ=JG¥ã(ÂC•O¶¿x,â8´Õ¹ñi¤ÐHj—&Ó‚mŠy‚ V±½¬* ›yšÖ<Ì€m™&ºY±ŽÖ„ðžÐQ·­ÏIª¶0?Ì ÑÚSæ+Þ-maR²¾HU1ó}hÝ:àôï'©r€“‰Fš¯†.O"À’¦¥{ãеzì«ÀÄ-1VÕÆÜÛ¤M@|BÍp ¼“Pް54¼û‡Êsy£ ‹Ã'îAl(’swT"áWþ^T·£N°ªêtW%´Y#;^ÂM©ÔšÌ<«MYQx}ÐHB\Ra’y3tÕˆÖ8pM7ò‘Ø&•‚Ü“åQüÊtt•6½Á(·!¸'¤h+[§«§¨¸0aci=vuV›^òud®ÖöVÛÿ¸‡¨*¨,EÀ³_¬¢©üBËmªÅ{Ž‘ÔîÀ¥®1c Ók±â&¨7‹Í2zøu´ÖCÓâã‘ÈÅqŸlÀ¤Æ@{U†ÊžND6óD”!†`x„üà4£NŠHÚyèd•³ »V§%E›´b«Ó!M­û­†Èmk`ŽÒô Pùmqé ÓQê5^ÍÒRÔÃ¥Ô]ºÉÖ†wô<õ¨müÌ_ðÂËÞâ6•pFÚƒxõ›Vžñ¼ ÉvÙóRõZms§'wcÌÅ©¹M:ƒë&V¶ob;Fø©WpÝC•¨FBAúIw~¼é0b›$eOy¡}®=i©E&åOi•väõ*Þøý"Én³LèÍÔÜäzFQ{‚:4Ÿq\ïA67âJ<ÞÇÐ|ÇœsèVµ³ƒ*¦6±õÃþåø½M®¤gØÅüaùÄbÆÃ<ßÓwÏõƒñsˆVÏXèüF‚ÆÑúO5P;‚?i9a‹s¢oóH/ËFTbú[ö¢ù`Õ6îfT`ÐZIM7*s) å[Hh°k/S)vkt™°ÅÿHôÔT¦À«õ‘c7q´É×]>#‹:ƒ=ãéª50=Dä –æj¹± ÃòN£®‘”ŸLÀNœ‚}ç4U7°0‹ÛÌrz bÕzŠè‹eÁ=¤-VæÃ˜5 ç3) ¶LÔƒGTTöƒ›âQXãØAî/ E¨¶g˜n¹‚NÐm$‰•KµÍŒ¬qÄ~¡0YmoH„r9È#-#ÏŒ©š\ B]l¦ÑNŒ§2CÞþ“Çp4AÁ†w&H~nA¬hó-ïž¶‰Ç÷ôæUÓ N-§©Pòp&R¬ÃÊÃzö1Œ¦ˆz‹˜­œÚHÝ”ªµé±¦ç£qúÅê(ÔEep}ÏmäR:ÆiëÕ¢ ’ò¶D’ ©çkÚPj–A‹žOIuoIò–$âñlZÄ dZjQ‚QM4U˜³& ui.¥‚èUIó;ÿôåê­¾e¿íñj4‹üÜ{ÆNÕ2SEB0Ù6žØ¹RoÔuŠÔysÊþ’5MÉᩨ¸õL¹õ®ŽT©ÚhÝv“ǧ©Dª ›fsÈ Pî ÛÒ2ªœ•80ЫÓÚEÊä{B¨)ƒ=E©«‚óÞ@¶PlV:’’-h×D"ê§iâ2‚¼dN Û©•o5¿Q:Zm9j‡˜ N}[p'[áΩP¨8"säÔ&åÂ. ÏW%©U&?]M Bè|§ù‘ØîàLÂk;Ó±7ö0+ ¨»ÐÙº‰MCeª7!ýD]j¥æO^D¥HX›“cØÏ ýDf¢ÄdCÚNAcìDé;ev†¨6¥W*O”öˆø¥&£Wc~±4Ûa p:†Ó­øÓæö™òŸcŽÙ[õG8äÏn°.N&œ™¶Ke¹Ïí †&ïîVþ‘ˆ Û¤ÚÎH'"Ö1¬ ¿'+SQP쨤v S×Qxþ ›¾%DžV›7üýd«âk+0üæÓ¥ð@)øõØ»¤=3‡UɨO|ÂwMñækzt›¥?æ©ÿä"XÜó¢?攞†óLPÌ_ëˆ5 Üß'”Þªƒî`;äÞHúÕ7v¥RÄ^ÙæD¯µ¿ÌcéÚý%Š-¤Ý 6&JXŒ¯éÔ¸±˜Æ´W7„_j 7ûrfT¸ùreˆE‚ùºÏo6õƒM ¼ÆQA.“ 6Œ¥rÂØ¢sÄnœ“P/Kʨ­ˆßì!-{Ô'¡1»¬¹™iŽ9ˆXòØŠqqp8æA3 ©È&OQvœdF«å“Ó|ía囌±I´gˆ ín;Ìt\¾â›V™µÁ¸ï. ¦›mbkÓR7§XJ_“ IïhÂúÅ -|Ÿ/X{CƒÀ‘µ8êeûá›çé —Õ>…|Ç14T;€nIÉ>ë•©_Ë£4ÔÂÓ¨Äg9´mÏ“lÆ0ï´ï¹L© Ç2$8Îî½ ¡(L:ÌP[¸ ýdqzjÍÐI[PôîSo—¸¨²±!ÉÄçÔ*)×ö›STN¤ÕsmÆÄ¯cñ%Μ+R ûŒÈT ¤03¦Í†­ua¾šìýezÆ­½†óù¬L£áÉæ {t&SLRzU±Ú×1=§ ´ª`³#âãˆêÁ²#)¹·KÉ«i·S¹±ìeEè†$£?0&uF;Ô_÷„Ni¥¶øÜ:Ì4íf^'cm:™4ú‚g—Nœµ%¡±ÒÇ2åcŽý¥ºz@n }cΟN? c¦¥¦ÞÖe X^JD¾ÛÚüÛ a¨PNe[lªŒhªhÔ«#>ácÍ¡»ÊmzIj§P©¿¥åûUܧRp`ÖE*€,&u¬F…±‡˜­¬ ÎԽŤ®‹Qp<ßÌç€u°<ÒQN¹ÜX!Ï´ Ê+.àEùS¡S²Ù¶·"t4oº‰¦Ü8"BúD=?ÜJt'ïi ßs,w2ž†Af÷Œª£íU@üÆ*¯—nA$M2|ÝûÆ©µK.sSjù†LÐÞb¿7í$z” Õ\n7°/õ™È‹H¨µÒÄq‘(¢ŒÔƒgóÞRËOà•œYMg°=úC8F±³ñ¶4ºm+e‘C0ÿŸYÊJÀ˜ðaÇÍ\ˆØánT€x'¬=(³»È|A¬®–r{L¡åÓÕkóeþ¿Òl  Æ÷°‚3m¶bÓ Ø“0\Øí {5ßX`FÑc{ZÒdž²ŠBäžÐ¥Nûb&\ß$°µ¸3Ù'¹ë"jÔ$ØhC>±t°ð•À;mu?n!à¬y™qÄÅ p/ˆt0Ìý˜Eðc*.Ê*O˜ÿI)ë Þö¼JÞÙ†®-~ÒCÿhäÌs´ÚóÀà±ç¤K›˜ ê@àHÉ¿:¶æ` 3m‰Ò3LGµ•¸šËapn"w‹òOÒ6‹ nAŠyO´m6ÚÖä%i¨¸$ŽÂ7S…['ªP`nž ”ʼn,ǧiE6J›õíôÎþMá)-ƒ»uÖY¤_ Aê`é©kv#ÌÄp¢ÐµHU7!™‡S:*>åë’'4üá@Ååáö¶ß ™¦4&ÛÛžþ‘eÀ`zt”BœûÉ+SjfíÄ!eQ’"O”ÔÊtÊ+‚I²Ócé#©Skî¶OŒs`æñ: ÛCù½J¦ü°*;AD,Û²˜[‰ÒVQÓ_͉ע­KL4ö ¹w÷éûA£ CmC+ J.zßÒ 5C\ÖFÚÀà[ªL9hSsuº±[æ.™j(Y È'•j ­N¢ ¨7iBS5Fë…-ó-°fu¬$*T]Ô©¯›DY¡[I¦ËÐŽD´PJ 7ÝÍÆc˜!³¤u7†œAJR3{{Ã}¹.W¾e"‘at/íÓÞð|1Lݶû“â°´Uô=cJµ2 ؉…i3 Ö n­¥Ò¶Ö5t"ÂZ…ö@úr¯NÄuõxU(T:\‰×ÓýÚ‘O}eµþlþº5Ȳ·f2Ó‰¨Ù¶».y¸=¹zTê©dbOc<|è[ÃPW7Cý&S÷‘Î9’AªFBýl`Ö àR6±7¹Z ªÔÈór¤uœÍR•JTØÌÔº*{}ë­îLR²©Ùlž±””R÷Z"¥ÕÉqp §HÈìMPê|à ;ˆô£³âÔ ­Á(ŠÕ@=§›áèÇÑM¸~e±eMâU ¹]‡b#>ÐîmXï¿âàþ°F’°b^ÝŒ]MÈÛj!×µ¬eÒSKP´ª­ˆ= oŒêÅlRA¸B@Ý›u•TÿR›_mýD¬Fxž- çë&ÖÒ%Râåz÷øy«Ñ¨@¸ëÐÅêY†Õ8„õ PË]-¸^.º^£‚ Žo.¥X|¥†;DjÜÓÕÔüGù# §LÉÁƒ£Ê*9Mæ½ï:š_'ÃuB„õ—/s¾)AhêˆÈÃr‘ÔH _åoÖv•F³Bi7úÔ²¶ê;NO†Ä•·y®4XYSNÛ“Ä@K“wn„ÚÍn ÐUðz^.¤c¨Žæt>=X]5?’±÷1¿ÓýBú× ¥—Üÿëùœw¬ÕJ‡$µÌçï-kȉkàLwóÂóÕX¾yуtŠ USó[øýâ‰bÏ,aahú±…k|ÂáEϼˆ,£ÜÍÝa´ä@ wܹï§ÒÒ Ø¸‡M7)üJ¨›ã´©z»Ji)˜ª€"ÇÒP´ºŒÌÚdb®1ƒ Ç‘yáFÃĬJ¡àuoi8R£=È (ù˜ð! ·,'~¤Ì©SxÚT(Š@ ޲Ji°\}!’Š.y“ø‹ÓžóU›ä˜bµˆWâòj•yÜ Ïy•µ½z­å½æ¤Ÿâ.vŽ;ĽMÂâÑk×Ú` šÂÅoëÛ­{Æí,n{$î.?¬PHÚ<Ç=„ðrFzq œMä…†oL’y˜”XÖÄu+Sés O ×&ÂXµ€"þ½d‰`Lr0#fÆ£¢T–§øÑ¿hŸˆÒÛ¨kez*Ñ#>×S•“µPÕÄ\1=hÒ=âª=”)L•È'‘$ª§q¸Ä`©˜–7–ü3u0ÕˆÂá}L^—IV±yTrOHÍv¢•5}>UsÞjÝê ýj¶¸c¹O3Ÿ¬)m§‚:ÌJ¬Íy†r·V Lò¤JLTTá©é5êµEU-×ÈÎàÑ¡î×a5ŒëIKØ©Cê/ 7^꽌jVZ–é‚G⊠7Ze‡B µ<®Á~B¿ùBZ·>[“Óf Šï{ cÿ¶a}¡ím áˆ×QSýJBÝØÚ7À¤ͨ¸òU±š£+Í™„žVSêM¦pªFÒÒü ò8ûfÒŠ?Ú³ŸqË’ØéÄÕ7>E"ô¿+VÔÕjšÌ[µ¡Q¨µ ³7 ƒ¢ø}ZÀ×®M:=ZÙ>Ñ]©“OIA©¥²æûŒ.|+Sm5gv¿›ôµ½=e áïÓŽC‹–Fv„¦«S±ä{LþNº•ˆ]˧¦@æh4uZw§LOLî3“w$)÷–&U¨ìjºe@Àb¤¨æ@]lÄ[ëÚ¬ˆ¬EŠƒüJ>;Jô©7.½;ñíâü'r›T¤À“×"Rý.zYÜ#w•ß^ª™]­ê/‡s¥e°ÈÜ;^¬¨¨ã¬Gï7:¬¡)ÕLé)|%Iâ¥_Ø ÎA›¡É7±—üQÕ4zJdd©coSÝ‚%BÔ5Bxº‘)ÕiiêhF–Ûÿî'Q%ÓÔ¾ò‘ÃHª:Šº=Nå¸ ÚǬ²¤Ít'qÏhZM9Ôj)ÑQ–9öMU _¢u:K Ãç¦9÷Œÿ éí^®ª ·‡åï+Ë¥ñúßdÑ&‰±v|ýƒP&Ýe¿ÔF¡ê‚M½ºHÉ7&ò‘ý¦UN§ÃÑoz×ôfÛH7±ØÞzÕ,¬ë/ÿªh©Ü&ŒÕíâÚŸ‹V§M< tè–ò¬6ÿB)ü/[\—ðÈÚçŸôÊûf¶ŠÐ5Ïí$«_W^æ¥j‡¯™±'4Ôµ‹'´rÿWN¨oƒQÚ©Tõ!m-:&—N+¶—a#îé±¹>¶œÚZjz CS¨Mõˆ½*G§©×­Z»µJÏs~ó?;Žèøó”±ÓÒn‚2—Å*Ô¿†4ÆÂæâ|¹¾à7-£:Ÿ)ú‰Çê¾²žª«&÷ÓRpx!­ý& N˜>ÚºT^¾V’|?YF¶‰R¨ÙTbüë µêפëP Û­§<í­XNˆ‘þX7bðu?ÚÏN ®/æ#´ž“2§ˆ«b0zZCñ]oˆ¡å³úÆqÚ­Å•õ%Å:îw­A±¿ÚØÍ5Þµ[x´ˆàâsþN§M¨ÒC!ÿt¯á•ÙjR©´‡¦áXw¿ÿ‘³:¹e6[õó(×.Í[¸ ‚oãÈ(ëkmZ¬úÃÕUV¨ÍÕn=Çÿ³_èLô€u¨–Øi¿âWWNí²’Ú3N@qk2‘Ÿâ*µŽà‹XÚRö¾8ôê[p<Ú1j%a¶¹³~‰(˺â*§”ë:c¥MF‡PX«à‰õ¾wøFäZtëVK‘ÀÜÀ~öŸ!¥®»’…a½ ôŸCþ#j‡O¥²ä/+~½­9óƸ܎¶›R©±Ô« `…fkç"[_â+U…=màcpà Ÿe£U ÓV |­ƒ7¿ÑŸÇ2×ãé+¦-§-þÛÖ1~«¹±¼#§«KKUj'peªD¤tU”س^þ‚ VªÃnìm‹ÆVxcý£1(Ø]F}zH%Zcwš R[ oÙjÔJdÌø¼éQø2é´ëªÕÞ±quÔ•æW”‡+•£ÒµTñ\Štÿ;uöï/¥M•ÊÒe^µ_ûvŒ:•J…—F\a¾âß§H“©Ô³\Nÿ—û™žéê(¡¤F$½f·]ˆOîl%(šjCäÕêàNvúÕ3U™Ï«^5µ¦l1oÚh-ö±áßÚ FµO-êK#/›Öu~ MHbrW0½C;sµ¯N† Óû50GRÄŸæ#í4Žìöо ÍSRìÂÙ´…—i¸›“YµVâÄŠuz^ÒZµ«¡ »¯¡‚/|sj¥¶ Ü£¢9‰;W¨Æ×F÷Q7x¸-JŸéiê´6®ä;õl{â!B¶S&¦Ï+RßÈFøq·ÜêAéçÚKSý:a†ch…<bO°€q_êÃûE(пú7â«í&â!‘(–!øpüÔMsðî”먒ÌúK©54ƒ+AÏþM u*¹§§¦{^KhKqƒÄ±júzʤ_aÕ¨ÈÈŸ˜Åê«>¥Ú£œŸÚ¾ˆõU*W¬Õj½Øœ˜†·V…XÞÀñÙÄÜŒÖÚç #´Ô껪Ó$â.2["þ‚ttHR²¹!v‚l=¡jß•vÔ*Hü¦[ Õ”µD•âã‘ë9ʠȤ›ògCÅû5«Qmµ3nñ_Ój$;k‰ÎM(³Ô¤Ž D³½]ìÌn×ÍûÁ$§{ÞÜûFL˜­t4:Zt*ûZ ·=q;zC¥­}8 Tä’0 ¹ýgÌSº `œK+Ui¥kØ“p/Ôsô™å4ˉµ÷ªŽìnÌýzÅ©hø”¯Ô6”ÕU¾õùA·ÿVâGQHÓÔA†¤û‡·úM@õ7ðµ&Q¼Àwö‰ŸóeÇŠnÓ‡R¦Ð*›‹ü­ÖÓ§®Ôxš .­FømcŸ•©Ijê¶›pg;S¢ur »yÓsNª%E8"öý$ïUÑN©ÉSh±ÎÓ隦ª’)¾æu¿ÄMSþ§UÓrìp¢Ý¬MSÐÔÓ©Q)µ˜•¿³¹ñ#Lkª%¾ 6¸?òÐå{2tùÖª•­ö0k‹îL´hÐÑÔ”±â¢‘üNº6ž¥5vÑÓ ›["ñ¥£ ) )áÖµÝ\/hÎ]àÏ¥ŠåÅ©QOÊAýL]BÖ©§Ô©BVûg‘ü4³í5mt {É’«¶§Ä¨ä·ReÚ8¥¬¸8Q`#Ž®šÓÛIR™½÷výâµÈ§e[Œ‹~‘ZjAêyÈÀÜO¤²b1Â5ê;ßå rßú“F »uÝ}¬-«¨kU'€0 pZ›cŸ¬ÔƒUÓÕj…—í5qÅØÆ.§Rr5Oc%¤ÆâÄ w•Sβ4u:“˶2žÖd¦}ÐIÑÜ~’„Q¶÷˜¦4ÔS–Ó¡ïk‰WÂëQJ e¿û®${~³WÊC-¯ 4‹âZuJì7s|‰ Ñu­qÜfv5ª5Z%¬ÞSÃ[´ä—e7BAë5TŒ—8ÄmoöœC:±ó §¸Š¬…sÈ=DܬwR|dÜO=5#Ħ<½Giª7¥ºŽ Ór†ã¬SÚ…”~Uf—Ȱ±æÑš”»Q‚Çh¥Ü ͺJ#µ T¥¸ž‘¥ík™RçOQÉbQ¬zæ5T¹X¥Ì¡moIT /¶d˜NÀEn&I‚ÊÀ©0ðNôÆr"ïëxT¸c…ë$í#þ«sÍAý'˜\úôçÿ‚ «p='&ÄÖ™ã=4Bá¼c%è1=H0 F3‹uš Š@·¤oY¥b0 .c@6ž ˜õA·<ȺU~áSñ*¸°æDÛý=ª;òcÅJÕÁ;xÜx’WuF* 9Oö˜›ôÖn;®Ïº-‘¯p.=&xÎpn=…¦‡{âæhÀ’1-ÑR7ñ*yõ…¥Ò½f§´~§rL’@é3oÃ"zÕŽ¡üë´”v˜´jp  97¸UîaŠ”“êe«¾˜³’p:úA¶š‘ò¨¨ÝIâPõUü€dæˆSuóc?Ð:u›P;,¡B3·¤Ÿk\Xíô†žSf¹·ï N¤ÅHÚ6‘ÄF¤5ZžfÀæUFûÈöˆ¨ m÷õ„õÂþÙAAèM -ɶÜßß²U(,$qTNƒîÇ[u¬Â¥‘°Š ÈvºØŽ™é+rÝ Uii3Ñ<ÃiB}:¤ˆÛÄÈÏ•ÿƒ§Õ5 ªÔÀôï'Õ=Ýö­ƒ‰OU/e ;¨Ô~|®-{ö"Wðõ§áVøyóïé“Á#´çWSZ–á—Scn½Œö‹Qöz‰â£]mÈš³¡½·Ä©Q¶ÞÁqØ,6ó ¨ÁØ-¯Þ7ãT~ñkR?s_Î-ÅúÈÕÖòåå;ƒÃE?»®›ç©{‡Òh«Þ÷M¬=§ ªî³1¹æÓ³¢t«ð Pðjoë~žÐåò˜ú“§ X¼qä—ÖAr j*ù¿-ú˜£×f ÙÍÁ= s€TRà¨Ç¼¤Ä’åßy'uùq⧈¸aóüÌÚCÞ6˜ØwÓúMP§5t#Ÿ.b*Y4fÖÝPÛè%zmƒr‹”¨,-øL—^6ŠTìnÿ¼Ì÷ œASƒ6×­kGei»vÓµù›M0ož%´mæ"RzÜJ€é3TSNÝ1Œ6ÞÝdÉS§éT±˜hâsŒOIÎb÷ß©¼ò¸ÚMý$ugÃëªWðÜýÛàÞGñ 'M¨zG dzˆ§9Ä®¹ûgÃENjÐçÔC2êõʬFÞñKU—ÔAë ‚Až‘l<¾¢u`ä MЛöždƒïLÛ#™R0f³sÖ¤3å`ÖÁ\À¬€X­¶žñõ¨ ý¤¬ÙÊ·0†Š˜'æ’ðH”Ôò²‹‹ b+b³Y¨^‘íˆ1©É´“–éh¨„9šªY­Ôâ)”©—làa9 ÁTYGEÚ5úžæ !Ý‘èê€ÿ¤iÔwþ¦rˆ9v*SßðÊ76ÿyS¦âgÃb6¹5P”·¬hPZЬXZÓZ‰6¸¿¼g€ýÄn¸Œ§QêyCY{!m$&‰6•RÒµCµX_Ú„ü"Þ¦Žé}‡`îÍ´•B¡¨õ<2ª¢@C–ÈÌÝ=O °"㼦¸ñCéÖkÊäu- \à{Å;:›sê –c’xéh…˪ÛþÀë®{íþdtÖÖ,ÏNùžz÷«·ðLáÕoP?Ú*£'z»|£'¼Åª×ç銢›‹˜oP%‚‹“Éê'¼¹7ós{«ž·ˆ;Ä/ówž\¸žl=d×'¤f•¬¦ø¾o,KªVØ‚0@½Ï¬EWÝ’Oë2««3*›mïwn=á!Wð÷ïU³á¡aïÒzw{³¹êLN˜í§\Ž©Ç±w®X€N; `Õµ+½E³5Ê‹f%ªnósÖ%œ—ô"m¹Ž%nªU|;îÚ »ÌU 6¹¹' Qeá|§Û¤&à-4‡G '‹0zÚr]…úÖ=ê’O¯0Cx£ÂÆñò˜¥: ­V‹h+.úDþiJ-M‰Î Šõ¼c¹PÀ_Ôý`ûEª¦nÜT½ååNbïzG$Ú}Ãj¨­ÿK6ÚôJÜõn󕤥gÞËb‚üFShê)Wä© qï]©Ó( Z»\TçéXT aÍ¥_¢©¬5Ðy*®ñoY&Îßù–ïfô7PÃp½úÌB@±B½Áòž='¶žWƒÏ¤‘ÿªR¸­ó,/‰­Y+ ! Øwƒ@x4š£|ì,£úÆéÂÔFLÈ÷™¾éø‘¸1UEXÚ×PG&$\Ñb:zÍ@XÁ¸ý£ÐÜ[‚;ÉîoÖ6‹ØÚŒó<á TŽ˜˜"µ¦¢×˜ÏnÃÖ/S}ÀÜ JBcºmÆmðýjiõ°º0ô‘®ÓbI?H ;ÚíˆþF«ø…:t5òœ©î$•›6 ¯),ºŸ†H/§ýJ™ÏP.xÅNÈ6 qÒ0!'ƒ&J»XØÞUOUu³+ ÄmÁ¨±Ãà{ÉUÚÀ€%ÈÈzXÀ¬ {¬!%ªob¿¤ çÌÝõ2¢:qhuüúuÊÄ *7µúuŽZF¯Ò9¡2±™´È" ¹½í—ÝÌ*3SLï6÷âe1pæUYw"Tî"E¯ê!¥P'þ˜èñ `Møê%7ü>¥°U¯i 6'30²ªxuokˆ¦¹ã¢CÒ?™x“•=f¥*í+Ó"ìþdª:q+Ó›íÖUFÕ ¸Û 8BÅö7È2ÑÅs~‚ñ‹&˜\ÙœçÚ¹å|׌Þσüs@É™¢ ½d’í}Œ7[ö‚l§c× Œtk€ë<‚ŠŸ=LuHoå€=äu‚@Ä·QWLT:]ˆoIê”áë(¨K1ë _`¹ç ‹Pïv ØvëfåÜîubj–9˜„îÁµâÈ# ¶õ3À09’0UPmo¬öàZ÷Šp7¸OŠ.ZòGÖ7" ¶{wžñ‰~:EÒ¨†êNí<ÎA±7>ÒJ4–56Þᔯí#u îca* eYrFc5f™|‹”Éee)Ö1¶À3ÔÄ%=®"1Øu6d†•™*Ù ,mÉiµÁÅ¢ÎÛ\›ÓT°Ä‹³užVȳXò 2&ì æbº÷’STø—ûƒæš{E_c‘l6±TòpÀÁ¼q¥âÉ`Ñx'@.Ô# ¬pOƒ«Ù¹<5bµûA§ÿñiÑ©ø‰±¿«*AVÖ3-.TZÿ »Ñ6'ÐÎy¤/ó(2ÿ…°Zþ‹%Aµ»Ej(¨ôŸ•62åÃS"0}¥©ä^R(x *×âüEÓ§µž@Äu ]X§öЇ½-Í»ÄSõâbÒÁ–¨º›â,>Çà÷™Yiì,·õ·I&Ö¥½‹O´œÓ*Óq¤ZB‹—ó\€¦ö+Ëu4Ûo+_ À†©?sõ…A†ël°öQjmnœÍZ–·˜ƒúÍ| Õ‡æý 3?4ªB†ï1k†ù‘ ö™½žâm`ÅÈô††›Zécègµ˜©eb=Ä‘* r2"ÛÍ8¹[›Üt´Âà|ËÏh€èëø5à œ0î ki}ŸRWðÞàŽÝ&9B|±º¢*è)?T%ò#õ!u!°L ì™`Wž!*0b OCiê$ÅRC¸{Æ5·xéÔZ™ìc…m;€¼…½óMœiÈ äóí /E‘¬g¶˜õªJ«Ÿc(UFé-Áˆ¶‘LɼyÓƒ7·"_£ŠhZ¦œ¯Q$íHí'•Àé3Z›j ¤Zgû§˜’Tüëòÿúu;zIÔØ÷Äm&#ô„ëg#¤Ï^![u;žF/ÖÇ-†§ÅâX1>ÑÔÖô¯ùLhe{£T‘a®¾àƒð¨“OsXß,:Iµ^jÌ{›Þ1V% 2ÜGT`ª`&0¸]¶ƒxz‘Õfc“&bTúJ[$ɵågHÍ-˜Ü2§¼¬Ã aÜD;6á™·ÜyȈR5õŸ†ÆÂÿ„Zª·¸ŸS%lœ`Þj>án²*^«ƒå6wîäØÅ£”Í·n{HPØ=D^ògœ “ÇI‚Ä`m2BRÜþ‘ÛEòá‡î$Ö!£PÛ<ÖHHp¾#؇Ó,ZŸðçïPî—Äõ+cÏiÓªè¯›ŽÆ2‹#óå¤Õ~íÈèx=Ä0ÊÄ“u4ÙZâ{NÞØ€Lv\lza•™~¢I„ÛÌþ¦ƒ›tÕw]\c¼'Ó¿Ìpô̵rn#i9 Îz޶`Až@úH/g E†zÚW¥ÿ1H‹ùÀòú‰¿€ ‹g™F‘ÔŒf,鸢•WF¨=Dék‚UJz¤nb;‰&ÑPÌ>eþ²ý «iêP8¸ºû‰ÎÿZ‰)¨©u^ÝdHÞÅ~¢]á”VÛ’qYo|oØÅTªEöžAé1‘”ÝMסžgum¼ÞjU4ÁÞ¯Ò!•)ù &äJ5:cB—–©¨…¬TÅéÖú…eÝ´žoüÊMEv,¶»Üt…©Ë©f²Õµÿ ô>ñ¡ àŽ†]«¡µË"†¤Ü‹Äxhɶ m¶ò?oC7(¤)Àéë4n½ÿq=R‹Òp½z@ó)ài p6»c5%Xß©“-R­{_éQ‘ÑåéXb"ânðÂÌ,{ÂtßL ÉÚö ÞòMqcn±”[v–º€0ú‹’,O±ÐçQáœoOÔJ„à†’´[ŒW¬4{Zࣘç¨ÃÌ/nÑh)›|×í ¼ÌoÅäGN¥:ŠC¶ÛñC*.UG>¦DŠËSqàJ(ÕoÃd˜X¡Ô¶=À<ûÆSQí"F³Þö"\·°aÁ™½¦’€c…!×2Zní)¥ZÜØÌV£Æˆ±¿IêÉâQ=HâV­M–ß±…áW ô†œrt×b!©ù‰ éÔ¡¶¦îU¸T;[¼Ô¬Ø*M¶÷àò#=Ñ…¯–an e2ÈÛX]z‰"ÙJµÆ ¿@´Ý "žw¿´F¢˜*S!”ÿÌÌ£¨TÔÍÂÂögGjšŽ˜ºîÝTà q9¬Æä˜òK’ÍrO$̦§Böæ×ªàÍ-nƒÐÅê›ÆzÕî ž¦A«‘$¨H¸¾fã59¶â{@ôŒl©‹"T áºØÏZæã Ú,ã1Š×"DkabÜôšìOšÖéˆÍž°•Á×1_ËÍç±`0<ÁËQøÄZ™¡é$0JµáXm,¸‘0X®s=´Ü9í$ò“QE3È>_í<9 ôžT$’0Fa5Ý®>aÈïë$s“ ™í‚Xž~‚3N.zZHútÀ\ŒÌ»¡Á"hk¶x 7ÐÀ½¾£R¸mÞâðúµ5?HÚHAòÿ3Æ‘-ØÈ›F¥6¦ALv¼¦Ó0xŠ{XH¨(ZŒ§¨¥å6`;LØc­LQ.*%V¹òÊôþ 0ª®Ëc{mâq•^™š¢¦Ïg;•×­KN¯rífCèÁ¶Ê®Gû­,;jh•È$SÅÁé9M-çï}ÄÏDÚ.Êræ j© òè¨ýnbM2Ïet7é{^ThàL€3}3ÛF¿Á¢ ÒéÕ›€§¬6ÖÔ!M:tvŸÿÌbsëSg«vcºðƒšuBô‰d:¬k«°`|<öA"¯ñe™ÈÿÀlQp=¢ë «Oiù‡RAmQK㘠«§P§ñv>Ðu_ÓÒ©²®”¼yǨ­LÃÞ9ê(xÝÔ^‘î?,׿ÕX5_­†¢´ri4Z„)N«!ä^|éd¦¯R›â7ð~¿®£è+RS´‡Äù”«á»ÊéêZ¥66nëS§¬RRÉX ‘ÞߥÉte9‡¥mºŠLy ?HÆR `IS”@<#hßÂüª9¼hz—±øö‹u$‹ Jõ ŸAVâ2¢©­³½Æg±©‰Z“ `» ŒD*nq£‚ÂÄC¤§a« Ûç dF*ÒWN€uÀÍ@ŽD4âbØ?´À¤bñތݗ2ÔNÖ¾ýc -ê[¯XÔ§›冔Må½àÆ9®Ÿˆq@Ã[‰ kS%,9¿15íuP}åÚp 0OIjŸÄÙö„ª”ŠOQúœ -:ÎÖÒü’ªâÔÕ;äÈöä€&£4ÃN•g½7ðß‹7¬#¦¨ŠÊàÿäxŠmÖY¤­VŠ”$8#ål‰SÓ¾ðƒ %¡Tè]º;=mõ:LîÒžv¹]OŠ@²¢åQÀ‡¨‡p¤F{˜4*¶:°&›ùHì hWpv݉ò*ÒPUÚø%VçwSÒ:±.£MV…Tk‚±ƒT²«skßÚU©t¬»ÖöVÛÿ¸¶ûÑv·>°ÕˆUË‹mW+Üt‹aH—V§bGC(j\8½¿¤ ´È ‘q7 ":ú{+ôøÜ9<Û‹7¶aÒ_ ¨7>ѵ)ì/"[€ªHlc©}Ùvž  P\m<ô0´Ž½APª¿U=¢v½6ÚÓÕÕÆÖ±ÇHÕ`RÍòÛMJ¯féÈn¢ì9ˆ ·ÍÓ¡Œ?¬0¦ù¼jW 6Õǯ" EÞ7™#µŽq5x¿e6ÎŽïÊy…A÷ƒJ¨ÏyàÞǼ¨UJ˜©†èâ&Ô¦iµÒ,‹àʬå6¶HÊžñU*ÛX{,KP‰©c“YF¡oÄ™Á·PRˆÛϘwšbH#¡€—VÛ|J)*ôÁ¿¢.+(¢ŠO¤S!Zpe åcë3Z‡|5­ñ*W<©±‰øµŽº¯KÍ¿Ä4æýÿ¬ŸâzÂÙ|BøòÌÓyªÛ¸#öžfƒõ™§Æ¡û§OŒ‘©7|w“êÞ#²Õy5[š„Þj”€×홈sŸ¬õ¬¢çæ3@ãHDØæSL\úIÛ‰E´)ŠT‚æ9i‘L¬M#‘l“,½†2fmj'˜ŒÍY wšŸ5e ˜b÷f-ñ‹wÖµl= ‹[_5÷3måã2%ïIÅÄÅ‘ôVàØqÌ–6šYJœ‚cRˆbQaÆcèö#œzš¶âlj¶°š8™i;Ðê8‚´ìskJïaéRÖ¸ˆ$€£rc*=¹‹sxÀY¯bÙCƒ¥ÊÙxêfiGß¿ÄÐ?PE-ªüÇ2ÜIÉ>’­[+ײäZÆ"ÛN£ž¢©uU79¹°‚xdõ™P}á&bŸ)h4s»ôé0@êb½O l\q C!R ·KÄÖ¤3žÆa©M[vÂAù®a#€ÞT¸ê/2Rø$_„ÃJÄât”#äÑ·­áxI{šcÜþ–!¥å]­Çñ -¯së(©NˆíšP,¨WÔˆjÇ:ªóͦiý :: ËULRjUÕ›v6š—Fµ @'=';P•B¦þ—¶ôöΠâO©¢vº‚ÂQˆÆPs%Wé|ÇP ÇOI‹ ÔUwo?*äÌf.åS1Ü0ƒÈ?s šÜäÖdµI½¥}Vݽ‰c±m|™qqÔ âÁA&) ò &Í…¾°M 6íOv9EM£@;m a´ÞÆÒ€ØÁ+G#\_*Í…­}ÆßX— ü˜·0êT&ê"*`X\{F«½˜X¨·Ì Ö]ö7³Z "CŽàÍZb™'˜5ŽÚ¹0µ;R’²ðzIõÕ]Äbö„ì‚S^÷Übê·šü’H4ë(aoX–©™¬eG‰uÁó êâ'›ë!µÅãè¸vEï‹G®Ò¯ vçÄ`>‘˜æã¤£UUimA”E±÷ëKVž*aÐÌ”ÎÖµ¹¼cü úæ e]ÿ0+é§Va‹²ŽE¸ˆ žø2ú{©ÐpÄ®ã~ý SÑ¡ûö )¨¿¿¤œ»øÆª±V¾1O‡ÓTvº’¬VÛNf£µP²x™¨d¨ˆ,@7iU%jƒuìO̶Á„u½4C~AE*–NÆæ:KE¼×[õæSuäX‰$Ó§RÙ½½æš`–#ëEÇ—wô‹ )»m·©`àúwš(«ä(¿b&¯†ÜÔ·¢ˆdÓàï#¼“ϧ D†N'9é½&ºïQØñ:ÔŽÅ!Ô_ü³úD½dk‘enÄq)j±= k2盈U(Sª»’a‘½ l\ÝLòÛ‘s$äêi20kžmxUU~ÏI­bos:´T¡ù¹S9õÅ’’1·<Íˬا޺Þàƒh¤*Ëg¼zcR†ÿŠÒj§k’Ã72Þpêr0GxbžÍu5[‹E€·©¾ÞD~Žõj¡ü­¤rµ}²§mçùž%O5ȧªÕœŽK>#í sí:2m}Fû•§·±&b2 ı92l³Xœžñ¨1 ãúK¨ß°(P'´î|‰p¬Ã ç7ÿžÓçè^¥eÜϨ[iþQï´Õò©ôÿ—œùô×+[¨ñõµø8Ñ% ªà‚3Æ÷ âX‡o䈺´ÂiU@ù˜·ôþð‘ˆq³“‰F¥¯³òÓ˜êOTZÀ{˜’llr# ËožðnÝ­ÈoRÏb,:\Ɠۤòðhê%…øŠ#´¬…‹{Eš@’A¼e¥n:Í·c¤j-ˆ¥§ µÉT<­í %Ó \U1<Í௃O û“=R¦õت "éŒ÷õ‚Ù0yŽR¨/Ö$²ß÷ŒA¹K”u:ƒY¼B08¼ÐÊZì:÷’UÔ8 ¡ü·¼±k Ž™°°ÍRÿ,’›`ûBF, ¨0êé9›Hª3}3Sp²cúÁ ˆBwö˜Õn9½¸‰, žQq{‰b5YŽ`Tn“i©ùŒó™äÉSu²l"Τ.¿¯Yêí|™ F䉩4ZéøŒÏO;‘°mÒMñO.¥³u¶‡¢Ü̬¼¬–­pÕÄ\ô”ªò=éòW©“˜öR´‰_2“ƒÚJêwÞn3@X™ÐøS TŒ.w2]6’­bò¯V=#µzŠH£O¦Uü]Ïy^úSú©ªXÇržb5Ùià‰5 ¬§9™j0+å ¡åH‡‡ÒÑ€û‰v–³Q$¡Jt¬~ò™G@r& èoc •:]ëg~GHH°ñz“‰0>nÆRÚš…-șƵjÖ¤já»)9·Hõª‰s‘îg%YÄ«!î%4jVQäÔò9™°Ê½u ¿(Þ¿îæ¨r§iô‘¦¡Á¸DSØâ6–°“bŠ>˜†o Š„ûÃHg[ÌmB[!= ‡¦ ïÙo5­Oqºg¸žz×ù¤*t•òÇÒØ•Ž*ªú4º]“º  «‘Ø1«3Uóßñpa}žª’ö1UC+YÖÝ{EJ°¤âÌÄóZ³"Ö*H2J¬—¶mÖVûÊm|T[_ÔK¿Å¥¸ð9÷“êéùVù+×¼f€‹Ö¤ä ޽ C°*§òž„ëYš"°&£‚ ”=—P¤|¥†;HõÅ©êê _Ì™Ò3Z%0 ÉÁ—ülªK|Š„Î+17ç™×Ñ¿Ô=ò(úË”éDºí:ÒÔ‘o# Êè’5;‹£cר–Õh2~ö•ÊÛ¨í9`3/Ç7šãE-ÓK·ÌN'”…Ku3Ìì\v +?c4ƒQñ+ƒcÈŽætþ3X]:|”ż߂Ñ]jŸ*«qîõüÎcVñó %ÅùÌbN/xõUïzã„[  ‡–6¼/@ÌñÉ·"x‚Æ×ö’ ³po6…*•j)1˧DÍv*yØ9?Úa¬Ì6(Ÿ•¯xj59&âµNåÞ.¦ê·v7næyœ(2¤¢ánûœ@¤4ö‹¶ó÷a`,©Õoz•û(¼jk”¥»ÿ#ý£*FÍÑoy}5ñ´ê´þeä-Z•ºª{(ÄCUrNæ'LÖhñSÑqó*‹u&Ç5°Rd«T©Ãk©«ù¯ô–T±˜ã6üÐÔ–&ì·Bš‡7'oéKPÅ€°ý!ùZ¸(Û†´$¤ÖÉ´×b úEŒycúúMME·U[ŽÐZ¢¡°ROs!BǬ0Æö&µGŒÌsi¥Ä•”Íú0Ž-mF¿i Cæ9Á•¶×áZñ)B°íq"­ø!,ÕÁQR² Ž¢kT,;ƒ3¤´,å#ÞÖÏ–äôÛ‰ž;ðöÌÑYÏ@?ñÄ‘è•ê©H[»õ£H ­\A™:¨*œ†=æXÛÊÀú“h7ÒÓü ò8‹}^ÒŠ=(ñæ»{A)|¢‘‰b+Sû½5E¶Xƒ¸ÂçÃ)ZYªà×Ïé=©ÕѨ lܧ*®õ¹(ÎÐUª½;AÈöíÊÕµÖ–Ý‚0ä˜ÁÕPzh '¦w ™¬'¤éit”é:«»޹P:^—©™Í7¢íb-^еƒÄ@Ö±ÿþ:‡Â¤yué߈§©âü#r›T¤À“×"Súœÿž V¿"#R»ëUFù•ͽ¯uD¬¶‡kÂÕY«ÔplêÄ~ó¤é—6¢X†S:eÅ/„©n*Vý@ž£;ä›Û¼¯ã4zJVÎÒÆÞ¦7¼‚Mž…{«.¤Ju”U@ê4¶ßÿu:‰–°tð[ÊG ý"éj*èõ;Öàƒlõ–-O¸¡!£ttQ¨§E/v9ô¡ªÓÑø•´é—ýJ`þñ¿áM9ZÕuU…?(¿xÞ]h“µÔ}Fš4ÁµØNªƒƒx_Ö N¦¥By&ÞÝ'²ºtßá÷Â×>¸†[AÑ+r'=,Ì?¤,Z¬ÕÒŠ,GûšcjEÒ…0;Úòu[òa_n/ˆak*‘`Bû }ERlj5‰èc*-ÆäźIÝÇñ5$g]O‡ÿ¥jêß"Ó“©-âaŽGyÙÒŸáÝ[œË8•ã`x´¸ûUñ©V¢Ó°súÍñj2‹MûEãÁ”ik­]rAÌÐŒ`Bù”_´Í«ÉKF U'z0-˜&µ ۥĈԦ<¦iÚÙ=¢‘”˜B`lO6’SJ©ÌA·xÅ){²õ%¹[Þ: XßÄÍ…ÐSI€ ùýæmtk¨½ºˆšZ+¼¤Aô2ª5´ /zÄú1HT»°7Ž¡@µO”ØÖPŸÑÓ])©Ûy´eo‰Ô¦‰àÓJE…ü«3´ôø~ª­Ûe8&ý:•;ý§WMHéºñ&¾¦°>%Wú˜¶¤ e‹Ú]ž—S ¦T)z‡©Ó …"¡Ó…'åBnd:m2iiŠõWuCò!éêg·=V/Q®}æ/mx¥¾"ö±£L3Òxk*5ü1@/‘#ª—"ÄZMT:ü¿¨Œã×WǪÃsЦ㡽¢¾ÑA_m]2¯[†™¤ÔS­¥ Pm¨ ¯Þ¦…e7¦ÁÀèD3á8¶“ìá‡p?˜_Äö³¥\æ#´]ÙSÄU±='/âÚãVÆ”ZÏë5ÇŽÑn(ÕjKÔ1ÞµÆÿka|4šõ+Pe·‹H€qćá`ê´Ú)°Èd?îéðÊìµiTÚCÓ¨‡{ÿù5f3¨¡¦ÊCdr;æQ®òkÁsñäðµõÂŒ-gõ…ª¬–ªæê»‡¸ÿöm’Ýu¨‡È{tƒþ$b5”ÒöÙEWöž¢û\ZÍMº^øš‘:çp@(ý„g«ã—J¡¯ÌrÖJÃmcfü-ýä‚뺛ëÞoT•u:-H¨ŒU‡pDúæ.ÿ,‹NzÉ‘À,À_ëiòJÀ”£Xo¦Hç¤úñCT:}(¢ ¾! Êߌ{Zsç6È×+ç> ­IÍ:ŠU†,bTýÃ_9¼»WñXŠzÚB  0Â,iiTSöZვ°f÷úÊD$Ëè´KtÛcOáú¼ ëxÑJ­-5U¨¹pe¨ÄcJŠ•6,׿ Œš®6îÁæØ¼’£)öÊtª: ÿ1ÿÙPyQt-gpl-5.5.1/examples/graphicsview/padnavigator/0000755000076500000240000000000012613140041022236 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/form.ui0000644000076500000240000001241012613140041023536 0ustar philstaff00000000000000 Form 0 0 378 385 BackSide Settings true true Title: Pad Navigator Example Modified: Extent 42 Qt::Horizontal 42 Other input true true Widgets On Graphics View QGraphicsProxyWidget QGraphicsWidget QObject QGraphicsItem QGraphicsLayoutItem QGraphicsGridLayout QGraphicsLayout QGraphicsLayoutItem QGraphicsLinearLayout QGraphicsLayout QGraphicsLayoutItem groupBox hostName dateTimeEdit horizontalSlider spinBox groupBox_2 treeWidget horizontalSlider valueChanged(int) spinBox setValue(int) 184 125 275 127 spinBox valueChanged(int) horizontalSlider setValue(int) 272 114 190 126 PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/0000755000076500000240000000000012613140041023503 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/artsfftscope.png0000644000076500000240000000241612613140041026717 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡ÕIDAThí˜OL\UÆ?ÅD“fl”V)5- c,i)CEÞС °È J[°åO4-ÍÀLgø+(Å&mDhiSÀ>éÄ…I7m ”¨iÜÝ$¦ºpÓ\ÏmÒÂ{öž«qè ù%„ïã¼wr¾{ï›Ä>«à“dÔs À¬Šlà4§KÜÀ¨ÎchêTó9À)Îóð5ÝvÜݶF/ ú<@„Ó%{Sç)¦8=H“œÇÜŒ5°ªxâA8÷80Á‘î@Xç)Ü€žêLp¸Öóuòˆ¤¯Cˆóë¡Û¾oi=ˆ^ÏVD8]4`Šnï6Lq5MÀ‰IÎÓìº=b ¬pKk Þm/§btFTl'8]Rõ4º¢Uá0’âjxSpng":8O¡çé¶ï¿Û@B<²jK0W_ŠYYOa˜Ó%uÅ»z ³yáj|×w¥ð×z>³Ömô1ŠP§^g;EˆÑ%Áƒ¡+ïnŠS#PMÚEb<Íåö5°æØwçaˆ.Ù§K¨ÿø‚£Ü)®†?D¡ ÓœçÕ2Û"ÎÌDr?LŽ’tæçÃ䨬D®Ža ÄÕðx0SSƒN®†ßÓregøu‹F,ÔÔ×S„zi„ Á Eˆ©!ñz)BL@bh“\…[„b ¬tr ˜&ÎÎÌà̽¸t £ååh¯ªÂŽC‡RÕ¸e¼ƒ«QQó­­8.¯©ªqò$ÎY2MàÚÄߨi Àüò[ˆ;ÜËîÃG\ IA1fZ TÔ4@´‡åjŒ›øÝ² É~¥Ýjèæ"œ.|¦ÎSJ öQÜ RŠWãÚ‚m]£ ,[ÏÀýÝ7~RãâN—t¿…èéw†¢R\l9¡BÆ(L{ý_ê/«½Œß, $mãþ÷qAEÉ9]Ry:ÏŽ\ž-ÃYňìkB€«Ñð&,‹8•"ôEèŠPSKâtI+EHçqS„¨–Pq€"ôEˆ«1fP¬•i`irÒAvb‘0CY3‚œ.yñºtžô\„r+Q‘S†ér͵|ï`Ò²¶ÐÚ†èøEÍî0¦8]’?ˆ¨ÎSð&.rúëßCì€Éyz{г4ÐKêj<!N—ì¥éP„b ¬hpásÌá*½õUáÃ{¬.ñã¬ÖÓ†aVÿ×qTs­QÛÛiä ¾†´7×ÓZO͉Ó/c]Ͼ²dk4Bqk½U¼ˆé ûg dbÐÈRR­§ûþu4㳞vòX²5üùÕ˜¦THˆ(2.–§@ÕYP2à B>v<ÕêÊFÒAî»æšÎTPn#ßXqSlÙ]>8§°Ê9 (ѰuÁ¥ûjUˆ94 ´n 2òú‘jCÇ4“Îõ1¾–Ô§OÇš¡È. 7÷¦oB]BÿqyÇšÏ$7¹vò(–óÏ‘RÍó¤°¹v([üh”$¿$pjÌúÜÖoJ`n}TÈ0þŠ~Í7ùEp³U£V„è,ÝéyËKq…£ÎØQóP B»nçö¬J%U \ŸsžÔ6,ç,jç,rMîåb^w­H q*B¹cY·&FËÚ«4òM6•Øð¢¦T†Í=kÆ ÿ–1]1ÇICTfŒÉ+zQç“ö¥YÞí½q¢ú›ÏÉ®ç«\Í¢äöQ¦!q÷Æì|×Y5h¼J«¢1ü±ÜòÔs€+€`TYÂ/&º[1‚ð=Á;ý)÷4¥‡þ ·LuwXÑ-—ˆÆÿ$óûPì‹v~5"¸Î·F‚9ŽKw'èÅúVýÜBH¯ç/ ôåE0¸p<íŠÞ±¹=]O"¸Ö—èwK¦ÊçÝ › ö¬/㾆m¤7ŒÆÛäv§§t’MfV·J¹Žþͺ}à€À'½c)p¾PíòéçÁk+£Ðû©äV·ñwF“§^‘cn¦°Ùs÷¯F6e6Ë`ŰêVõÏæO½&êðÉÿûeu%¼”ïÜy­{u‚ö,¦ÍÝ?â¯B½:÷KibtžÆ–êús—MÑ÷×v²@Ûçƒâº9õ'¥.ê{ø©';ŠV¡”0Á¢O¼ƒÁªVû@Jš$M‘ƒÍYÆ¡Š ­ŠÏ@ô4NcÅ&Èß‘Q8öƒÜ«BÑÆÅZ­y_Qmm¤ž].qËv7 WZ°ÚZE#ë=ÈàPú¥­›Ù¼Ð6=ö5Ÿ.Fz±Œ¾ìc½.75¥ÓâÆ$ažÊ<Ö÷©±¡d†+u„{nkRÂ}]é{=!ê>îßµi$.ìåÊî´¶tûŽ3óÚ•ší&³zTõœ¤w4¼ 4¯éÂ¥Ü÷ñ[ÇÊm¥qz±§¸îx²Cs|ÚÈôã³mŸµ1oÓá¶OÄ_H€Î“À¬î³Ö\ÇoíN6ï[Ænð yiÓ¢1Z€Òp^‘²´¸êR›‹—+9foö¢t®”e_Æ^À<šbòïÖ"WD+ÂŽõ¾'¢Ó4l¢ÞÙtB¿ÿ_&®ƒ©n¾ÂHÞ™´Mr€x¬5&ÀÙJã;fÑÔ5ÉsŒ.ùhv³úç\`,À{“³Š¥ôbxCÄdúGqñ\õê¨÷Sç"·”.§.ãë+†yW_"¶Ò& jÙÂ5®„=s¥5¼˜(öçÍ|ÿ©ÚImtñ:Êq^µ$xäDpÑUþ&µ‹©ôñ{Y?Äýkž?K¯KÛÄ‘“àŠ-¼ëŒà¯"¦æ2¶1¾ÿ…“ÈÙ…wG¡é×°^Åé\ãQÍ©t·„ܵ ú‘ìG"·:GUÊúSn¼ö¬Yg1YŠåF‡_µRTǹNTþÕ·Ôl"™=XO#;v¬‰c’ߨՙJqPÊUäPàãb{Rì%Œó‘[DUªä‡ˆ‚wÅA‘X{5A¹Ò§$óŽÕ…­¼÷0O“ØV†ÚÃÄv»Q¢MtthDkák>êuyß°¬óE/g#ØœŸÚ„‡E³&Ä`Oéÿz¢åÛSraW e“ 6~•­YE­µz—k  $ö(=È*‰dén³Õb³Œ¢RžW,²òºŠk¨^Ái y| ó]C¨O}&+A“×¼˜ÍpNýŠˆ‰Æõ¬0µXÔ(Ú¶lgK.‘ë®K75”ÚHØ`ŽÔy˜ÉÑ4Ý£l‘ñVÍ¡Kûû›Ù±¹Ï +G¡ôu?}í ¸SÚ©ü-èÃi5ÌŠ CµW¨_ÏtpÍ¥;(ⵕ¿ëЉ՝Ëúh4ŸHóKÚ¨-“½‹jH“½5¨(ÀsFµcwæ‡þAÆäÕ¡`#ÒÙ=ÅIÎ"ó£;zˆw^ÔVWõ!Û:{ûS {ƒPè¯îÆ‘Ieš¢MÌcMÊ€ÇmcŸ×Í#Óž/|d2☑?ùT‘ýKþõ0É$¯º3±ûTñ¸ô2Qž7¬ i[\‰ýøÄ {ÀüÃÏÜSZZ^ǩғÁàVmÕÕœŠ¶ÈqÅ]̸»ˆGx¥~— ŠõÈ  ïµyùÿ›mšpCƒÖ½ްÛ.£ªw•™t¶¥ã½V) 2kMÕ¶eóK~,‰Ït&™\2ìrsÃI=rÁA7ŒÆßP¬)â)!Øù¯^à¨*FTò+ªÙ{HQôîµ1ºâ« g:Óf½‘êGí#ê(dr9(H>¬xÔ9k]#O¦uˆýÔ÷­]÷±æ-!(x5ç0³!’-˜}IãíD´ºxÜdGzÆXï¥ÙË»G:FôŸö4›¡S†¶í¯ã™w*þª¼¶ªñæYúXRegÓδ(Néš•Œ(Ù@­v†8{UÏýGþjÑ 5Ú)?;ÿ­kËôŒëË žÕÜÒcS6¦ÜžF4îrXÑçm¾Â´, ŸbîO&¶º?O ¢YF D±}i†ßz§Xê…É·µ`lÏ\ò·+ãnµÕÄGðöžçà‘À¬„L1’fÖç’j‹¥>Éåväù­ãŒÆ ­"Ÿµtw[>˜¡„cSéšÐ`´2n‡Kx5Ñ;E aúŽÄRÅv©Iv;¥ ZÊ–ÓºãùÐj’!G(܃URŽ„ÔìGqP^Pu``08?­ šê©sŸ¤/Üæªòö]óãj é,ˆvr(©Ô%]µ©ûÐ-,®n›Ø¤4ñé0B™¸˜¬[ŠºÞùY€uÐOæ~¢µº\Ñ3zR(:¸>kmíÙuBâHõi$ 4x‚q>Ò5!ñäRêÁ­um£-éÜÔ›FAÕǺù­KY=Xû‘½êØ7º1ƒÜy©ŽvqM36ùoã8þÕu’î †RW¾¡jÒÆ­ÃÍB,ñœG.ßzÞ±¨èO"–AJC9ÀÁÿµ[ªÞ~&\&BšâwÈÙµ/‚Mo dävh¶Ó´gÛÅ !ÅTìk[ØÓGY;¤±‡\Ò’ŠFC±¦¡œ0Á®yaî‡Ö­=}EÓÍgî¬Qæ½]ô 4,§|«Í]Db˜¡©9€~àDМ0æŒ.м`,£êO?"€2ŒX~¢¬Êu  8a¾Õž•h¥xÎ7#¸ñZ·^ÐQÈûRñz]A=¸ŽärÿzY•’B¤qÍ^ѲnƳTgù¬èî™vŠé®˜ ÞšM¨ãÊ+K£YzëK².û÷¡t»6¹“Ô}£Z'V¿~ØáĊͶÝEOYê¡ü5±ÒƒfaÞ³”`` ä^‰•ÁcZ’c =¨©*’ò*â¸%à  Uâ±b2Õ.JËÚ5g>xFšaÄH?½0b ²ð* Š›ØBâêâ5Õé©â¯ewÚîºïµxÃ)g5” ôî .¨‰÷)ªW‰Ñ¶ªYø$Ö­´1\@²ÆuDã+äQ¿ðÔ,bEO9ítÅHÞC€9­n™ÒI¶í½¬6é©€Ú”êL)Àë7+—úúH½80« {‰ï'¹%ŽóA–GšL œ…otNž-Õ”+ÿQZÔÆ¦ÞÑmmb¶¼Ž ~•^¦¾“FAúSv-ë]ƒÀöÇò;šW®6[ËŠ˜öV¯@`ICÀjÖžÞ2ØVÒÞ ct‹–æÿ^”Ç&TïYÊo +ÛMMÆ—ý!,miaƒMÚõ²Ìº¼î¶ÊfL {sWe)3ôcͦôbsUfU]MÀý뤨¡B>Ô×Õe¼Æ >õE_‡·€ÉÅHÊŸ‘U}a—Ü7½è3o(okVw_€Ï‘EI>ÓÅW¨»In{+:—˜1ˆ8ßê]Dmé6GÒßµa¥Õÿ+þ @W±¬qDÎ…Hž#‚7Ú™¾ÍeorÀl©>qI–"ÐŒÎ1v4¬6ãò&OÜÖb‚êYÇÚ¸á*ÌÀ ¢îu7¶§v?ÂZì£f#½%fªJ Ë’G8_h©ŽpUˆæHâ‰ö¨úc]D÷¬â¸š£Yúê°öŽ*å„“uZp{ÓV0){É€>šw£_N!‹ ú5”ÌÌÄ“–<ŸÁEš]´!ÿ©©7› ±b<ÔÜ>–œw5Öñ™F¿­uÇMÔ^9ÃlMRú,yíÑIôØ’<Õ#îNúC_Âs˜ËYÈv;¥oÉ0†ǵy?tS¬‰±Sk}¦3ÔS¾7 sÊr°¯Rê ëŒàx¬¹¤~ÿº|™H'5µÐúhŠ1up2Oе¾1ˆ·DéâÝDó®d;ªžÔÝô…Ïáûßw?Ò*×Sz0™[w; £t u\O¿æb{Ÿ‹}ÕZÄ*ŒM‡ŠÈêÉwžKg÷­~£'´ùŽkYõ IÙv­aù+k¢:¬ä÷Í7ü@¤•n­Þ±ãy#miÇÅ;Sbžœñ_š–s¸Ww.rNàbŒÚçÿNÆ7þ†àýƒ#`AƒRqJ‡eEÔÜ Ïšvº“ H@qÿÕOWœí Ï4•ÄÞ’zQóÜ×D0óÅÒ‹«T3[¿øˆPž gäæˆ’cÚþå4Ð}C®ñ¾µñWŽebAö‘ØÒ*^|LJxñLE,w ío5­Ø-xþ,\Ž~k­®TÒÛ7qRâ:dƒJÞ Ä‘Ÿª¬ý ß Tuðr)iÛl÷¢Ý9|g¹ ¿ºLvš‚`MRGá}íö«M/©+ÊvÔvÈtÛ–á¦?Ùh_Qø©sdð)« W¹m„ê–Víq(U(äÓ½Bå-áÖüþcS+zŒÆ€†þcdÔì£S)f!cñR;e'Ò?­vò˜ö""%˜ ß}ñ["híá ñôŠB-1±(Qáæ¥bg}ÿ°®år«#´òj$ø¡]HziÉæxÂÝt)Ïoé¤Ï´w&˜c²  l7&žDÖøÿÜ~~*:dTÜËÀúsU‘ýIKS,¼® 6Þƒq¡7e®bÁ¢S©t±ÁS=*äÛÌcsˆßcñC¸‹W¹y çcȦ¶êúWY‚ršôvr¤±DãèôÆ><×ý{IϽ´žãÅ=ü;q„019S•ûw©yŠÐ°ˆõ§êo¡[<5è/a´X£jÉþ+—NN@ò lHæÒø"¹åÚ°¯‰iˆà …e½›³“¨W¦º·‚5×pè VUïW³„µ„HÃó7Ó}% ¶W${\þ™¡ÏÔQj´—·÷\HQ>=¢¬©pÐâYˆOêm‡ïÍk®Àmn$IAÖpMj]Ü >£ÊŒšÉ+|%Êíœàþ¸¡ÞÜJÏ¡†œr)dµ,Ù™¦<€¥Àia’k‘K¶3úÓÖk æ´üøÈ#Š û½§ê½m Ö³úœdõT`78ìjÙ ¼R>GqRå5jL©¡31#Ú ÿZ¼pÍ!ö®‘äÔÖƒ–Ó‰§ Íèâ=?æ ÛkŽð#óD½a«cÆM'/!÷oØUa]nüÛ±ð*‚ØòrjíìˆÍ&çàv(‰›\›l£e^ÚšA½RÙÜ*Œ“Z.Éao¥w•¿j–èMÔÉeáá#Ô#Ü|Vil±É'ûÔ;œës–5T [Ôm°r+X`Šƒj¸EÎûýè+ps‚ 1W]B¹Ù¥Þ#éPûTÞÝCm˜ !æÆíÙjóIèt©%AîÇ5“n F,w'Í1ÇÊ‹ãrÌrÇ’h¶Vææò¯5H‘¦”FœšÕ@–¶ºW°Üù­|™jjêr„AíŠR2XéK© ³<ÓÖ o‚íÀ¬N ´Œ°E–Ý’wgmDë¥v–BïßNt›¹” ¥nMMÔ)¬¿"¯"¬‹­Nâ½ç@¶ôÀ¡ñÞ±ú‡Kº³:ÔkOê]ñRe*肱 ‘³ «z匑®ØRÛ½DâæÞÛdÄÒÿQÑö—{w,òûœ»øì(29v+ûµX(ˆaF\Õ“C•}À–äüS·14— €{´ çíC°„4ÁXíõ9ø§l«w,ǰ¦ô6ÓÆ+­Ù–`>w­+É8Îi $2J_[ïϲ¹·Ô Ú¦­æ ,Q¯ é\ïC¡ûW:3ÆýAÛúE/pùc⯬èyO2Ú—9cZ‚Ñ MÀÜÿ°©÷<™ÆIyK9w9$Õ®%y¥Î 3l£z1ÚGê\ÓúiŒ×7µ8ôÿ6^{)ª;zé¯'“V)$ļ‡HñD‹Òr§q[¹k¤ íÁ¢ÛJc|7šéãRгžj XôÍjðäq±¬¸ƒ!h_fCƒF²œÃ }‡ŸŠ¿YŒe/#߳㸬N*‹Ò(}†¡QÔîOÑæi"¤Á³íaƒBê9C<*Yö= $ ê8ËþQB•ÞFõ¿«ÖÅÛ|SP4Ò#ÛØy­É'5éö¯<Ê1œ…{“i©‘€Èýè?Ãý5cŒHã ŒŸQÖ¯2ÞŒ{\²·;¨¥:ÃOpNvÑ%Ìk”9{Ðm×TÀ|ÖÆwⵕÔÑýFÆ+Œ‚ |¥¿â±®#x¤)(ÃÞ½¤G,df³zOš]uÁŠ˜ç:4ó5©ÒîËÆ#cüÄΜþa⓾µ{wþ¥ìÔ%X08 äÒ6X42‰#;gPø=Å!ÖP¬ŽÉÃŒƒMØ\¬é¡þ¾ÿóSs xL}Æéÿß*É…Õ-õ¿XJz®r[zM,ñöäSv„9„s½i fù$Üý» =³-7Ô´’{ËnÎycTË>ÀmàU‘TýÇãµkH«31Üæ»Ccé4PøØjºHxlöªŽßÚ¦HÃ.¤£õ…Å°× n1Ú”ŽBWcÜVe—¡SphÖ³…œ›¡Û~Õ EÊìÔ"85{$F Œdåt57Ù–Ë_皺°–Eù(|’¬ÁÆÇÚâ” ÕµDÕé„¡Iˆ.3¤ W—@aºh¹qö¯]ü$Ÿ…é­w!çek9߯ Vémmý$>â7Å`;bÄäš%ÜÍ<ÆF<Щ†>1 YFÔÇjegGàqYÔkE%²xÊ{XnI`¹l ˜î¢q‚àüƒY—ó dÒ¿Jþô¬¹Œe™WîqXðÙ¶µìÉÔ£¿c÷¬£bð1e§úSv·Î˜Ã‡^ã9GŠá?—Œžc'ý)7‰ÛÎ#20e8"µl®DãI8a¿ëBê68&HAÛêR7„lѸe8"·ÜC=^؆õn9 FÁÀÛó/ßÅiÛL—VåN5cVUÌoo0ÇÊÒ_AèÎ.œf‰hº¦‘˜dꥠ}Q‚¼®ãýÅ3é›#‰ZÔ …Y‚ì§õ¡ÜLs§ö¤ÒàÿjM/;ïK’Ì|æ¤)fßzÓéöb5õ¦ ™e ^ÖÔ$fi†02'xÀ³²ðÛÓ}VèË!DúE$A+ÆELeîªöVú†¹?Ã]ÏÍZæ_Yñ1¯PµËéò Ž*„QþÔñ»A|'§Bÿ­N\Õ$•#\ñþ´¿âL‡ÚŽ@좵1Ðh9c¥·À¢Åk3œ¾TxÒ¨ýCN"hàê?Þ¸[\;‰òvpC`n)ª4âéK2NrvjZ{{›VÄÑ?Ô8¨Iz”di&;²áê+BÏ­Dê ½‰—VÙaµcï­üö_ËÓêAý<‘E¾¶Žé?bAþ¤ŠPâ¢2ñKêÀúcúVîî"ˆÄ6ChŽƒÁ£¼^&.SÑœpëÃR®)t9Áè*AcV•µDvqŸ"¢Sœy ûç™a‡vcŠ ýÍïúˆè]‹é.æVE‚!¦(ÆóóKX–VBÞ?¨æ7ŸŠº+3 “Y×±pM9mfåuýèÖ–éz’îÞ*·lNªX¹ÛÄ]ºÓ›Nj’±)é&@îhò$³9%FÃvì++¬õHmPÃjâIÕ á~Õ{šÔ®a²NCLFÈ;|šÈ %Ó™§bK‹hšVõ¥$äç~ZŸ†<Œ€­É¤)øR‡TeùHîn! ºêÿ2œ½äá?Øy ´—€àù4–·±Î¦÷pþhwö¢Oz¯ñÃ}«7([ ´OL[Þ<^Ù°ËäVuøFxdÈÈaÍ%.á@ø§l[ñ[¶å=ËJ[ °w©²áôŽÔ óêc°­!SÛæ•ºœ`‘Þ·ŽAwýè‘#½ °Õ*JoÈ5 Í¼‚2I5LFÀ¥ÚBxÚ¨w©ãî‰bIÉ©‰ ¶T œ ~Ú/N tîy¦WBÌžŒ–ý©gG¹Îòás¹¼ NGg9cXÆ_bµ @ROj“KÜ>[H;kb¬ÙbíNt‹C3‰æ_`úAïBéÖ­s(gzØšH­ ÔÄ^bÐRU³ª9&²ºSy³ ¦U8/ÜÒ½Bíî[ÞJÆ>”êÅ<«í] äóMlB¬qîÌ3䚺I&¥`@¢'Oc–ù¨ÿÂÖI2O}5x3km©vøàSÖ‚I$šA1‚dÔ¢_š ìY‚/z€7r„¦>pƒÉªô”1Û½ãîòåc?êik×7k[„:Wä÷5«"*ͺý.õ(‚ª°Žy?z£§é‹‹¶‘þ‘NÉ™JÖõÀÍŠíÂé“Ü¿¸ûSky@ò{ÀÂÌJ#ä€)›~dXvÈÛûšÍ¸…šH¥Û*~Æ”¸‰ã÷!8­y:DAN·…ÀmÿaKOaqåH£¶sY™cê®™çÿiaà –ËîNÌ)éáR}ÃAùàÒά£K®Tö=ëz@~ƒƒ†VýêboL„'*~“\ÊP{w^ê{U6#àÔZÊ`¸YÇÅ_¨Æ#ŸZ}îSJBäû‘ÇÍ9õìŒGë‹uûSÞÁ§”ÉIžFÿz]fÆÍSjuÀñwåÿz V±ŒoðhD°ÜWc5Úµj] ×T•aÈ5v,„É¢Is#.œà|Pp|TRˆ®®<×PâL jz}«\K¾tOšëg¹›'éîkFêâ+(t ±°¬Z q46p2µEdK,×sñ¨ö–­S^M­‰Á<ÿÅmØtèàˆ<©Ù|ýë;“±Óºk1ÖØcÝ›Z1ÛÛ ÷–sñ°£¾X ûPp%}r#SgÜyø«½ƒÍ%”{ˆñ–4¬÷ Ѿ@Å+îêbqäÕÔö¨À«1[$žç½5 a'šëxp2{U˜ƒ–?JÒÐ9ŽÉÜÒÒ¿£g-Áä+÷«Ü1ÓòÛš]þ_M†/ê94¢¿Âð—ê:ˆш¹ɧ­ÿĸ'œ_øUÕz³ÄÇ´eWäÑä;™Çùj{ô㦒6gb(± /±ñC¶_NÖ5=—?©§ú|F1®EΑê0?]M‘c,v€j ¬HÔTø¼Ò³_ÊìIÏwbí@ê¬ÿŒ1 ÷18Í.z‹ª9c“ìkÝSŠ›#ÿˆ«­ÌùÔJ1û ÎoR3ï ¿=ªVV9íZñˆÒkˆ¥\Eœ÷Æz^nž’)kyÐÆ€³ç’A¨7 dä|ŠLléJ\ÛÉ …]ø¥¥Z Žâ¶’îãôç‡Ï"—»³¾¥»kN㸫¿U±©‹iJ°uäsU¸‡H×ã¸ñAVÒuÔUù¿•p³Gô¶ãþ+®•uëLiq‘ñT·q$~“wSàÔ! Ûôø5gc“š‘¿ÅEA$Öô.7ذzâ>¥þõEÖÛ­G&?-,`¾sU$bºeeäç>*”׫Äâ<…×7ÚCéD2øÅ-onò¿«pIÎú|ÔÚÅîõ¥Ýö¦¡ $@ä×=‡ºdh:Fßµ5;ël“í4U†-?ÜÒw×xö©ßNJηUÝBïBsþ”€R}ÍÿÝX)úŸ“Ú‹Lí½nM"±¡sŽâœ¶ƒ|½L’ÁTnh÷…mã'Ö~£â¥Ë@ ˆ,"'ɪ]) ]ðwù¦z\%µM m÷¥T†½Î7äÓ|è)!Ëjíª½¶¶ê陂²ŒPd¶š':ã8òW ÐÄhNþšþ¤U¼‹YØGet—SÝô·U^I¢B¦{†frÃÀì*ˆ)ËJ¿þ“ýÍ;RŠ# Å@Ý”aßÕ“W€x¦ä”Ej’ž%—PùUÿ¾iH[»”¶€$…ÛýiâÍ1N-ãú ˆ"×,®ìŠÄºŽK»{—-dyÞ²!‘â|©#èz<‚+ì0ʰ*Gš[ø—¤´ë ·¿).¨­øu 6|â-ªºë·oÓµaÄå㸧ìnž"W¸«fº“*Å]t°óÞ£QÜr<Ôƒð×ñ`çŠZû§MÊ‚GƒIœêš ë×ÿª½¼ÒDu#dEP’§ ‘æ§“w®ö†Å?¾0^êxjϼ·*Å©|Q›c‘±¢¬¢A¦S‚8qþõ‹Žºо–çjiŽ´õÔ>¯šì[R€>Ü­´š[qH §"¡üÔ‘¥¾ͺÖå·8S毨Ð"8Š5[جç+A4Ij^yŒh)q Î5[XZyBŽ;š¬hÒɤnkBB–VÚF5µbÑE%š´ì#X£ÖÃsJXCœÈÜÞ‹<ÄûWsY¢oîNt®äö¥Tl·¹ÏíVE÷a=Îy=…5ml4ëo§»yûUâA 1Öß®i¨c,B Þ¥»„EÛ°­kdµ@ò`¹¬gž»P–´µ.ÃÜEcÎÌÒ–c’MzGAr7áFkÏÜÄK±½OŠîî•¥Ñb/k"&5ÀÍdÞÂÈä!—b)ŽŸxöÒ…m}ù­[‹xºŒ>¤EDÀûV¹Æìyø.gŒûe`>õ·Ó}˜?˜ŠÍŽH¬{ËgØ*G Ñ:5Ø·¸´Ö²››€}b?NP€ì)›`\¨‘LuÛaq¯¸súÒSN %Þ(öÃÖ j†r1…Øžõç?‰$ s;ç©iÖ¥žßÑp£mÍ`õ— #ç&¸|xåçËW 3¦lƒÎâ·z|ñ\Úú(ûý&°ºaÊìi®—0˜œá\sà×LñÜHOø“¤Ig9e\©ñÅeDæ6Ï#¸¯wjRí§ÝãXúוþ#érY\·´ã50Ïþr, Z){˜Š6GÅiu~›-›Ä‘öqþþ)#t¤þÕß‹7RÔº=ªê{ Èb“mÇb*èÚ—#õ«˜`Ñ£9\ÐyhNk}Ü>œ“JNûnM5ÔG·5Ý-Tk•†Ê*Ph•,íõ¶5Z0×™¤ãµDŒ×Sää £p06²šP¨vQB‰KŒ±Ò½üš8Ü`Ó¸vPxŠ@ͼ)§Q]1þíDlÈB¨À(íVE/‚OÆ)ëD†Õ}i†ãéZźþÔn›j¶ñz²qàR×RK5òÆ™9à Ýô³>¡íQÀ­?áSþ'…¤ƒ¥s\ò–MѯÒz×àÄÃønô.¡ÑCüÛSããS÷÷RëR) À¢×®8öÈû× ~NÚáãz¿JšÙ±"jCô¸ïI[ÜÍg Ë>ké~—PŒªéRÃu<ó½øVEÔöË!ïö5ßž^2fÆTRƒ!‚ÌÇÍc^Ú¼2Wv¢K Å•Á0+Êø§¡»·¼„Es…`6oÚogHW£ÞúMèͼm¶õZÓÐ\B5!ç[« U³Öu5hÞý"Ѳ¨?›xÞà\]°@ryÌ®rû|f™ŽIžp>Ñ­l¥‘C¤4dN3ÜVêÏÔ:¡ulŽ+æöwENûÖ­¥Ë) „àן?Š^š”ïñF7-?æCÁ¯1u|\wSùk׋Ⱥ„^…Ð !Ø?c÷¯5Öìå³¹9gcæ·ñ]qJÎÙ—CqÛâ‚3˜#j;á†Gê*’.µùWkH#v©àäP¢b“D«(›¥õ!Èí@·r-eQ±æ˜ŒìTðihÆ™¤CÝM[Ð%·ø#h#2>;hÇùB±Äc8ɬúÿÙPyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/kontact_contacts.png0000644000076500000240000001043612613140041027556 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡åIDATx^íšipå™ÇowÏŒFÒè°dɲ$[6’lƒ±±1cÀæÇ®B œ@²IȆì’d©MØd7›„£È&pe³†%Âá§mœØ_Û²äK#æèë=VšnvVåR6{Tªö©úÕóö[ª®çÿ\Ó$Œ1ü9›ÅŸ¹9BÆÔ&_¿ _;#HcJSë{Þ…qaªºæøD*Õ¬•ö}·´[†áÓ–m?p× ‡^Þ7è‘r,|©ùŸ4c GY$èoϪ£b ½â{Ó™úOÍ]¶|Þ1Ç/¢yR©¤ ‹ä³'öíÚ¾xÇ«?ºâHaíÚ-Á\³å­ :iñþ%Í´Ô„ä5£SÚÏÿà¸eg^¾ìÝ×ÓØ5Œ‚ áÊ¥¹³iÇËÉgœRsꆗ.]ôÐÚUÿôäîë7”w3Ö¨±`47ÇWWî6•`« {(š?a’ŽàúS'pÖT©c+tº|͵—Ÿû™Ûiìš ¡¡eƒ±@¡7@XÇœ´˜+®¿:sÓE3ï:¾Å¾†Ø:€Ÿ4À¦xpÜÜ?oè†;`¢ç¿*`Íü¶Û |@€_¸yÑêK/8qÍu  HN Ø)°ÀaVäµ×#3±…³¯\Ã'ÎnÿÖÄj–\ ,OÂÔ ŽÆ¦:Ð(`º€äÛÐQo³ª'–ÊŸÑÑÝ}ã‰ü¨Œ€V`4`Æ›ô}jšZXñ®•Ukæ%ÿHj d §E4˜ÈÛ@•x›VÍH0¡Jã @JžwÆE)+†Ðª"K ó J }Ð!h FE 0Fc€Ð÷˜Ð3›ó–uÖVÍ; €ˆ3ÐfŠœ¢ œ?Â9¦Ä‰BQŸ8ogˆÓ XÜBTY`”N667­ž4s¸9)@DA ŒŽ*¡üÈGBÊ£Ëh­Àrè™Óñ“·¯Ô;y‚#\zÄçêÔÄéKR3{êí¦&L"ûú¶nëè?ò«Ùš;¶Áo”xÚ3‚ŽŒÂ`Y dØÑ4yr—S†°–Ž‚·‚¸h:Øå•}D Ð#SnG«µ‰óêYÙ OV]tñŠÚk>@õ ó±35­A†¯DØß79ùì³WÜqç½Wüdãæ»¾føT ²”€„e¨²$©x• ©¶.“Ä °˜0\˜X@!£ÓZÅD­äjŸÞu{YoßñÀ7I_|ø%L`dü~’˜8†Ë.¢áìwò‰;û{?œÿÁBxá ìù#~‰Á¦ìEôl*Ì€‘Qö…]`•*ø ”Di‰6mÞ|n ï¥ëΟ’X¶B/z‡e#F0# ¬¢=·|ŸüÄǸ¨¥iApÛ7~ö¾Ã¥3% ýÞ!.É4„‚Q, Ù¡nÂB„Œ¨œKh u¼R ÐôõÂyd=ÝŸý<‰e'cJ9ø G©Ð…fÍ¥¬yÿ{]SŸ¸ùn¡¾aè/¶@ʦ/wxÿN7?eTºYŠy.ßK ËÙÑJ¢µ¤–xúU¦ÍYBrõjÌÐh JôAIŒÖ•Ul*€mОq _:ïÚ Çþ^‚u{Àv iÀ5<”{èÈîÍ!2Œ•>‚è^…(9‚’å³ J8p€š½Yλ¤FAËúe¢;Ï ÆP©DHØØÄŒ³WÔ¬j®¾ä~ =¾Þ5 ~ÖêpÙ€ÄÖ|ÿ—Ÿ¸¡é˜¹BX*e7˜xe´Q() ü";Lvï~ºZÓ¦c¼b<;€V Då¬d½õÔ>´ÛÔ¸öçàvßá© ¯·øô°¯«wßÇv®û—{ºO»ÀÑ2Û«& •" =¯ˆïðü<Þ‘2m³ ™‚0ˆúÞèhGó–€x+‰Q‘Gëø½q‚Âj3ôtµvòÂîz ;®lxjn ´âpRpãt‹¶’ª¾´w½ºêií´/|BØq©AkUî{ú„¾K0ŠWÀ Šø¹,©)µqk°4Âhˆ+ D‚´®¯¢6Š*A‚Ѥ35Õ@züªpq¨hP2…Ñß[²øò÷å¨bÝÖÌ{úš§Î fB ÚÔ[½‘ˆÀÃ/äêßÃÁR ©R2Œ3oct¼.T÷?Ï€AGD"”‚Àƒrr‚Œ/àC)H8@ùe)[$îÿÆÊ¯Ÿ\Ë,þþ©¯ÒsÙ—¨îåµ_ÞNzç&2 ˆú ( ³WÀ=p’cðOšN¾§ƒ¡G²Ô¸%L2‰Ðª²:ãøãm3&ëÚÄ^+ðÝH@!ÇöÙ½ÀÐø¬*2z õw¾µúÎÿÈ äkÏÞÊÇN¹ba€–+è›V˃÷ÿ”ã…¹»^Fw&° šÒ!ÍãçžCÕ…-œ4¯ƒR¶Ÿm¹^Ú÷¡§LGÈa c8pF0´Öà{à•0{yr×Áçp|E ª×½ò=']yõG^Ëc;fQçIœ6mú7²oà ¼P²ìäKI·FÏY7й͇X{Æ,¾êz•^ã ¿™¶ÂªOXˆÜô|$@ëÊDfˆPñZFÁ»EŒW"åæÙÿÛÍÃk÷fùýkTÚ4µÔOûÊ_-ÿ0oä·°?¿‡wÏ¿_—XÐv<»³oR <4MÅï:‰·Òqëí¬k¤æ+ñ-ÓØ3l1t¤‰­¬Ò¾ýF&m¯g>"ðFg?òQ 02ߥ¼ÎÎM|ùÉ—î õƶEס¥âàÆïŒ³…<}Í»O?¿µ¥¡ž'_ÿsÚæàª" £¯C,·HzÛ«lhãÑ•÷N™Ý™ÿBmc×gTqÀS~RuíøÃ½¸ú”YÓ¦Íjn¨aç¡­4e&P”y,lÆÇÑ l‘! ÞEæhZ:#%CÁñâ8>þò½r Wž3‘µOH~µð3¬ÉþgÛ#$fv64£„ƒÑ ¤,·KÒÆîïÅߘǜÁ-…3XÒlW-¾¸ëú»ÍÎ •¹DXNÀrjHf&Wà[+{&µYE•# 0©®|˜Å)VG$°G±lFXF(ÇÃ8Š!™ YûÔa{~·_7™-[SO–ù= ÎúÄ}¿œÉ×®›B°c×7}¤› ;4ùA‹þî¥<»l) ‰ÃlØô:I¯€Á"Ÿ©göâÙPSOëD}šåÇ&¨š3çÖõòáËá“—4.ÿË[žü6p5Øô½üMà}Äœ¶dÒõá8ÕäP9ã ,mÔBÎ(QðX1‘ Kç¸ûÎÇ fO…ýüg¼³újÁ♂­{¡«æÛTWOdB×D~½ËCêéiµÂ›‡àw4K; ¦AÒ©¦¯?Ã3¹pY#Ï]ø®«îؼúÑ ÿÑJ‡6U>§‘¶ãJ—¢F‹‚ÌQ’Ãåç¢%GLY\aôù2Y~½n%g³ê´/ns±S Ú;ªòÀIÀœ.›iÍ‚™m0¥Î=®\PÅ{¤9¯:êaþ¸hœ<Û…N û‘w%x²r7äBÖ…¼e¿B¶míµ (Âüy;Ïz *0ö£;¶ß;¼²@ÊVØ:U@Œ £ú?ÞB aI¶¾VÅ„ÆVRصӧµ¹šœŽ€„ÇÇŠžm+ª€Ä˜Ï ÐÔ(¤© Ô`„ ]›â¾–I Z;;ñÐÆº.`w$Àr~‘}SÿnýóƒóŸâ¹ ˆˆ1*+°,,]¢ww-†½(k‰t¢|NÚ°À‰±­Š‹Ê—5Tè·Ä„:U[WEß@À”Î&¶4ˆTǼŠC ìO>÷ûxºN‹™'$ð‚BFÛDZ,¢1QžŒxK Â"¹$=Ó+™ÀSŒ¢+@”‰*  R€£(S*0ޝE¹ÕÒµi,§iúØo!!žEqÕ¿Ý!¿Ý¿’šy§Jêš<Œe#µÅØXú­öXXȰ€WiC®¡*á0ìÇíc`ÇÁ' ÆÐŒpTŒí0èFkãÔU8„€%îÑozuãÓ·¼öTÝ9sÎäŠ mŠšzH¥ÁIl[ FØ u )]Š%II ì„ àÇ™·!¡Æ °Ä˜8Z€ŽDÈJ+Æ^Û69J£$•-Ô—«¼Í÷7±{÷þºm‹wݳçsÏÝzxíÏ?—ýþÏzÙûþ:ôî»94÷}!ä¾/Üÿ倿*Ù¿{ì‘"¡€’„BQ  0>äßÂ|ÁïÇù[_GÉÉöƒ.U*°±NÍ€•¬ ¼er@‰Õ,…Ý"ƒeW#Dc@hßÉ Þ»­ÿÆÙᕬÇý=NÆÎ@\…˜¸…P•  dìÚ+ìÝ>vžß z*Æ’ÇèÝ(ÆXuíÙ¯ôm~ãCûwάkëiÀ8zûµBÇ î_Y§iØùb¹Þõ¯uxS¥…¤‚õÛÀõyû&‚¼û/ßûCy+¢’ÇŒm—£Z(>Û>Q;ú ØóÚ0›Þ€,þëÝ`úÇV N¹oß –Å—û_}sÑ3·=¾ráûO¥¡³–P‚`·Ï8C·O¼J+('òû_<È+ß|ï=÷k¹ù.bsøSMd@8®°.è{içmÙýœvúñvç’éÔu4¬ØX•Ö‰CÅ  c127’Ý5À›Oïdßó¯¸Ò{äNÌ3_²ÿ}Œ‡‘@  d'ízCÅ;·Ü÷Ý«·>ÔyV¦­«+ÓÞf×¶6PÕXC²&…²±N¥T"}‰Ÿ÷p ä ïÝíz6=/ÿ†F< à¿O!…Ÿ&=á[Će[ëüÍzî«ÉíÍ›ÛÛ4š¦Cz2d¡ª,ì*h ¥s0|wÃáíÝ dûÿÿVù¿¶=;Ìñ£²¶GIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/kontact_journal.png0000644000076500000240000000627512613140041027420 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡ „IDATx^í™kŒ\åyÇÏ{.3;3{³×^¼¶×Á.—„º`L A­CD@T–Jiª^H?Ð6Hýâ¨J+Ô¤_šVi¥‚TU©Ä¥Ú(!&&0Wc vl¼»àËz½7ïuîçœ÷} G‡ØÁ¨TEò_zu4Íó›ÿÿyçÑŒ¨*¿Ì2üRëÀ€ >™fff˜››PEiIPPG*ñA½œ‡ñ}@P‹mXœÍŠõ‹!¹5ýê…Ý€€j¢êêDËU±ÍºØF$jˆàTP0"B&T•R©Ä¦M›‘À}÷ÝÇý÷ßOoW¡¿+†JAÐ㉊E$2…°¬1µâæ|°fëpaÍ–ÍÅîþ‹ºzÖõ]Ý@šZuqöÌÙ¥S¯îš{c.Ùô¹-·á†á-¥m½~o!'žïA»¤Úˆ«Ë‹µå………ÙùÙ‰³ïÕMDóãå\eB.6't]¡iò!ùŲ³#åçO/-=ïT In¾ùfzè!‚ hÔ«Uo|eǺÜ×.êw{ùãÁMÈÆÏHïæK̺ehÃoÓ@W0Øg¤¯¥ø†T‘…Ùʵ¼yòV­ÏŸÕáá rõÖ¼ !çƒgX‘UHl/Í*ÑNªÊÔ’åñƒNžx—’y¿üä~ʳËÜÿïµ±wÆË·ÎÕk#dZ\\$ãA20îýæ·>;ñß{Ÿøò­¥ÁÁÿ9±‹Æå»ùãÖ°¶]xB&¥“T…éù:}Ý!ù@°NQM™i;£ó‘YxàGÇø‡á¿aK8Å{'ã=ÏÌ}it~î 2ÝrË-ìÛ·0 [\T*]׳M®Ù¾ž·6ñzןòõO¯aK¿âœÃY%r®½™V.Wñ<$±Ôë ÔԹθ´òmŒÁ—€õ%0ÌQ<$'tçÕÏyÞÀy‡Ø÷X“ T©ÇB>Ò'mÆZ»Òh'9MkÁ:‡µÍ.…óJ#Šð‚J ]9•œgúÏ  šÚsÔâUÐÖt¥¦U Š"8À:hZ%çÀ) íN€€(d&à !F9¥+/¬ üK¶ô¯ýüðö+‡ÇFß~SDÞ´ h8«Xg1XGâ =¶AëÙ¤‘AIœB ‘u-ðVlh‡ŒÖz@e)Q/áJÃÞ48øG}á–Bí¾rúÍ·þ‰ªþ´œSM3kHR¦…Øi ÑîÀj.€°)¸£`ÉET@ÚA2Œ´àr¡Ïr’'IK“–Û}WÉ›_à§ÿøwÈ_ÜrÙgvÞ."ˆ Ö:<,ι q§c¤è „Q°NSð̲$+bDÒbbAàSµy޼6GÑmg°»—WŸzšËŠÆ~ôsRŸàÏ¿F;£ŠªÃh‚[q" ðQ‚fTH¢$ έríº•Æ[Y„" ~ÎçèHÂ'&{ÙqÉåúÁ÷ñ‚Óh0Òlh–—÷ªj;@âœM¬’: Iê@#D!vÙª¬d½Ò>¢ÙÇŽ¸Ó ´¹  ‚@S¡Ø˜"::ÎU×]ÏèsÏÑX^¦ÔÕÅ©©“OÁ_\ §Ú*QÔ´–´qQ—:¹,BVQÕ¶F[´â“¤5Q¬$NpNAYU"íO£P­ÔèùÙ¿ð¥+×0{ì3##ô®]Ë/ÆÇËûá¯'áÅ+W½FQuêpÙãj1ÄYŒT D+Zb‹¬D¨Ý.d/|§Ìî{˜kêgÉ©åØ è`brÒ=ií}ÇàÑŽÛ(*MkŽ'ÃX° ‘ÐÌ:]¥-ªÔµ8P@ÐÖ0“I[ Æ3Œ=ó†?ÏÖµzì1 }},ÍÏóVÔFDöÛz=é N•Dê Y„íüéC L,Bœ8¬kÍJ[‘´;!Æpîí£,íû>7¼‘£?Žˆ4šL*¬ß6äw­©×é ÄÖ©³™êÜ @âÚrÞ®Õâ!i„° è*Ò¬ˆ¡~îg÷þ+7lÞÀø /P}ïu®ÔÍñÊ×üþcxG³u¢s„ˆÕl•ˆ,ˆ´ç¶ó4*­¦È¡ ]‚‹"N>ò]vjccL9Bq`€‘É ¶}yK¶w3>³ìå|Ó÷Ñ‚SUµÖq¨jê€S0J›: ¤ö[‡Sm±ºŠ§÷­óôz†ÃÏ>›6zz–—ßÈg?½„0O>TJa°æ|4K‡cŒ‹h&€FEa•ͲµÆµšržà¬CUIkа ã1õÊÏ)zžK‡9²w/aO‹óó¼ñ©]¼ýEÅ~Ð 0rÒØ“¨MW‰lÑÒ•e Yí>ÔV„|Ö)¤¥­Ùî¿|rŒÆþǸñ›ywß>œµXçøŸ¾!–¿ú÷Øé^ª±(¹ÀÑ“Ë÷ ‚¢«T⨙¸TµøDi„ðLÖŸtŠ‘¶ï7FpP—1BêHsi‘éG¿Ë®ÍƒÌ¼ôå3gðûú©VYÿosbë$3ÓT“UG.„Àh?àvUëÔ%Ù71©–8bOÈbðÑù²8éYmÆÚ„ñï=ÀUyS§™>xüºuŸš¦w÷=¬¿ù7ya ¬R‰ó¨*¯”BÓçÄή$ªØ u ¦‘d”f•›D@Úq ZA5Ý«Úé'gÓôI»ò{úiòŒOO“üÖïrÙFÅ@ìÀš€²íJsíJ! Ç3&;Ûè`Uq©õjMh®D(m¨Õ'íBµC²¡w€Ë†vúõW^y–_Ý<ÄèÃã Ì/.2»ýjv쾇 Ð…Ÿ(V!1>å¤ U‡ïCÎ×n#’–:ý2gg³yÄDA¤=3m/õÃÊ.«<ÏP™8ÍÒ¾G¸îâaÎüøÇĵ ç8ÙÓÏå÷ü-Ý6"ÎÅ¥[L#íyУ÷ý"@'€X!I#ä,Fêå£%ºÚ¢–xÆTËL<úo\»a•W_eùwînFku6ã[\´c'¢M–SÅx÷]Qây®QÁ9›9[XíòQ€Ž`­ïŽ8¶à,§¾¿—Ë%!?yެ[ÇèÔ$ýwïæÒÛn\+~ˆÅPqE¬SÄ(ÅPs¥0왫W;Ī’X« “­‰<0€Áisˆd0‚¶ ßß b˜8ô2=ïc¸·‡±ýûñ×®åôô £»~‡«îø:gl‰À)¡@Î(~=hXX¶Ý$V|àB#ô~ä6 ¨ª#Û‡h:hªÁz†r KMa®çÞ?uXh@9‚ZLúFF¡``mf& ,Çlš;ÎîÛnc|Ͻˆï³P)óLq?¹l7ý°‰I–4!GDAbŠ1]‰è¯Y Þtê@P —«û@ç5“$nÄšX§¨:Ä6)OGìy*!Žª ÕfLÅ8§3K( 9šähÓ5Wa©ywî$j• Woeq㥜úí;~ø§Ž¾Èµ_½žë~å yy‘œIMD Äé ß?Féòcúò¿G47G?—(4:DÖ.Uf66ùazüZá ÂÊ·)6ØRS,Yò¾%çÅøa’&4«$µ qµN³R§^iºÊr³yvÖž™ÏoìÚ²áúMãã3œòrܼh+=tù™— <ãùžç§Ç÷üÀ÷‚ 0 Ä3b¬Uµq¬ S“ÉK§ÌÏçjµ×;Ô“xal¦¹ÿè‰ÞaOÎìx›î(q¤Ôë–ê¼£Z¶Z©8{¶ìË-/Wuq±¦³•SKu{v¹é&ÊM{¶Å“Mdö¦/^ñÏÝÝ›~+~ùåçþëC/}§º8wŠã„ù÷{õ¼% }†Å CÏ„@° Ír”,Î7ê‡+Q4ÛÀ¡œ˜þ§øI­n;ÞX¥Ç9µH«å†›]ªÛ‰Zä&ÊQr¶ÅSõÄžk$ñbä\Ù¡MÀÒCC[>ÿÉOm¿æµ×^>óÄ?øÎèè‘¢¨¹D¦åˆ«öŸ×÷ìÙÃ>ˆïûÆÏyFB@jœ8YUEÛWgD>,Ueýú¡+¶o¿æî‘‘#{Ïœ9q>®¬µìÚµ‹{ï½·ýŽ»îº‹;3LM…&ï-!bîvΪˆð)ß÷ÓpáŸúÿ_]¸pàn©“zõ9þIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/kontact_mail.png0000644000076500000240000000620212613140041026656 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡ IIDATx^íš l\×yFÏ}o6W Iq§HŠ¢¨Ú)S’Û2’ÈRk;N`;ñ»qÓ$mªÖ‰ã´®a#µ“6¨¸iÓÖmí¢ Òik©›ZK—زMY\ÄM¤¸."‡gÈYßr«Á{Æ3¦ðŒÒàÃÿîpfîwþåæBJÉÏóCùø×J€3gÎpòäÉ Üw„džfh{³¦ùÓxþùç¹ùæ›ÿw€H$Bggç‡ØUǾ EµÏ¶4Ô†¼Ž¼|Š'zÇZsÇÛÚµ[EÜ{#ßi½ë÷Ñ/½£ÜóÅ?þäK_+í|ò~ž--É)dë}²ùî‡Y¿{ Â%þÏÍÀ±Ý<¼÷Ðñ¶šw ¨njö|žýŸðß~߯?Ñøéçfò™?ùäÃ_ÿóc'_î-äì¼rËwÈŽ/ü•GŽâ¯XÊÏ`}Å'ø~wÿ'^@'¹?UøÂ[ò;<àû壕ܴ£œ'ïÛÎkOüðÅŽ=ÿÍ'¾ñÐãøFËgÿnÚ{ëKØñ•?¢êc÷“¿iŠG½nwâ™ý·=VVPÚ€)%ßú×)ž}m’ïq ›ÖÑ;§¬ÄOÊTˆj.ܹy´l«âá;·óÒ×ûNÿÙ½»þú»¿ñ+_}ú÷ÿêÖÏ}¯?pôO'ØúÛÿB^Ó YŸBÙhgû>r ásÛ~ ¤d!®óÈ+Ãl)÷ñWÍg c05Ÿ¦¡.·R‚$¦„˜¦"…JEM9UµeÜñ1©øTYqæÇC¿ø›_î\dùR'XsUA|æˆxaÿßv«nRê|óõ)vÖäð‘-‚1…P"1<¿ ¡`›ÿIQ2iS2!öæO¥Ç÷ðàî¶c‡j¶G)À¤{:Îs'j¾’âBÏ"‰´‰ÛãÂ#$n—¤eV8†YÄ«J.\ ,_RkPZ@àö6ßs­w=ÔHiK ……>6çúij,B×%±X!.!-“8P>aÐÑÝ7›ZóÀ=‡xz÷Ç¿RžWX†Ô“H™É~’í•9èR Ú½®ºž"¯mLØÆ­µX{-™ F O÷ ókв=GZÝvÓ—1ÓQf€s£ öÔ”"ÀÊöûÆllgm¤Òy¾gx#Õ—w/$ÜMÝcÚÌšx](w/¶~âÛň#$¼;¥ñÔ.¿Ó*`HV¶H!°l@\Š$o¡ŸOï –Dªò^þê+áÀÜš|tì?|ÛÁªM7b$‚ MÀÌDfâ.Jò\$ é 'Ø}¾"ã¶mV©R^tš‡òß t¤†×OMÕ–©m3‹Æ«Y¬>¸'Z½Ï¶Þù{ñ+HSi™JjV…cZ²Šqa9vª$ìµ-EIû_ 6¹( âv»ÕÍUîCW^Ò×` î3ûŽ=V‘ãób&ç‘Ò[ç&UÔú€*VN§ÇqÚÅÎ:ö¼˜’â·^ÁW† ÷¢ÄNQ8ÏÖêøþÿèIæ¡kع=7î¯tÛ‘Ïc,XƒË¦ryð°U‘ Wi@:@ÎÚ‚²*wþuò×õCÕMPÐ ë¦(/)¤±<´]UXo˜×àV÷æÅ«­ã&1e}iIꀩ‘^ wþ¶®÷`JiçÊ·;¦í*)!ÙßC•~Qßå·&”6QQT@¡_-)/rµL-è}×ðñ]<´÷бƒ• {ÐBÑb£¤;-EzXÒTróΡ* Ì•ÆW?‰¤°ÌG§æÙ0óO(;Ê ö MP 0·¿o@l©öº ðÏ@*+€üríáuõ5„Ï~‰xü-¤¶ •~m»k@¸´« µ]¥ð|ŠŠž¿ÅÓ€’;@ñ€ÔKJ`eÅçÙ\±¼ÿ®X0—@u1ÕS9T–SäûËIFö²"QÅ…¸ªŽÅVfXˆ¿‘o_V~ ™ KŠÞûy‹!°ÜëÃ’Ô-6PY¾>3ÛÁzSf 0>Ϙ¢Ž¤äº‚Í-äln#'2Ž>>Mlá2q_˜.m¿VésVÂ6. cw÷YŠ[P\îZ«mÐAj¶ÒPZIEy>÷¥ü ¥žÖ‘`º –$9åÍðòÜñ©@`3”ìÄU»H¡¤`<ÄÉ”FÞ•A¨ß¼J„]c>b’¤±8ŽØ°Ô"§mdFi[)ÈõPPÒH^~Må‘¶«ßâY qÏ8§oˆŽ—Š¡-‚§Ø’· ±ŽnQ 1ÌÎ'³i/¸½¬öELÂÓ‹lо‡òÑ uœ¶Ñ°ÍÛJ"ü…TÖ5ÒT1»ïߺ– ®à”©‡H&ÉѼàÊ$@xA(ˆâbÔÒjÐ\(ƒíÈ´†YÓ Åå€`!"™ÓÙ0ø¾Û?¤mã¶y>˜ý$˜ 0ãàêºMÔÚ›¼.Q“ÒåLV¿‰ß¢ !ç–AÓAƬ–%@&-™K .!¶6£ìnCMDP;ΠŒtŽLÏC ëU·ÞªneØ´2íÎĸ­ÈeÈ7©.«ÆãRýµ%ÞV@d È‹£œ‰†zÁPÁXs̘­¸­„dDÁ˜AT v·¢”VR8ü&¥Omk3æ‚qÀeG1KærFÖ^¿G%°¾B4•ûnr³èâT4Ô‡I.ha0£¶–A.Û[ VLXѯ ü¼»›©þÔˆú¦ÌsPœ×f´Â´™QŒ8ˆ5·°±4g/P”5@ûgR‰°L,‡ÀÖ&FÄÞdÉÙÔ2agÑVæÚ˜mÒ—VToÙµ¢“#zô4èÈ(5[©(ò6ø=J]ÖÝ#\ŽÄ‰Ìwƒ™g}°·!m÷«b9u QìkœuÔ~ÿ¢­%ÐSŽùŒr%•ëJðx<Þº_ d é˜‡9»8Û b ¥í,-Ù‡¦8[fdÅ߬÷YŠ‚žÍ6ï:>WšÒªºLò²þ=ðN¿<ݶ£ëaS  ¤uPL0UPU(iPTïË(+ò"Ó9:¥aÉ4Áü`ÔÁ0ÀÐ-™:"¤vs úö@hÍêÖb×°üO=×—Ãã ýN–´4Îu ´$hqЖ@·úÙ–µÖ3ÏǬlë)pÞ¿Êgj`ØUP"lhÞIižwCžWÝÀÐ4ó.-\y\ë3Æq”r¢Õ¿Î:íÍÖÊ×;kHs¤r6BÅ!ò倢äû\€+«Ò è’§ê›Ú·Öm=ÑPT[ ʼnBX"±"$vü L0M;€<•à­Bz+ ‡ãŒ÷w3Úû*#=Ý£©ñàRzÙØ§‘yæ–Ù‹¿ª«\†#½ €p„ÀpÌ*x*À[ ¾jb ˜èï`¬ï߯ªƒÅù ñ¤±t9˜èšMttM.ýÈ0e e ð΀<«§Fd~H-v•@rrµì;œ*HìeÆpøj‘¾RzÓ—»™ìÿ/ÆûÏ3?5"i›K^šIt^žM¶O„SÝR2„ìáMd 0’áP” ¡‰·÷7íƒø˜ŽéU* ¨à-ƒœ:ðד¦ˆàÄSío39ð=æ'I$ÒÉñymäÒLªk`:Ù>Jw¥u9ÌÑ5½½þV¯qªvã¹}rïgs§qn/@F€¯ ò6A^#¦¯šùéË\é<ÇÔÀß»H:‘0'CúhßdúâÀtªýr0ÝO™ã@Ð6wj¶Æ÷F»FÌSÇf{×\Åx˜¸‹ ?c¸ Ó_O$<ÇìÐseð;Ì ½M23‚‹ÆLߤv±w2ý^ÿdúÝ¥¤9fŽËY¾v€žQómCOǦ:rËëAzJXŽÅ˜~“Ù7ÿ’àð9â‘  E͹¾ ½ïâ„v¡R;Œ—lÃaÛ°±ÒÀuFdôò´y:ç§aºrs#o[˜d)nF{ÆŒÞî1­³{TwfÑ0L®Ø†—V;5®3€£oýCò—îšîùƒüœ¾ÆÞq£ÿâ˜þîÐÃ>)XøI'Åuhnnæ©§žZµÀý@IK3´À2¸>6o+?÷ÿnó?kv[b]îIEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/kontact_notes.png0000644000076500000240000000746512613140041027100 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡üIDATx^í˜ypUešÆ眻$7¹Ù7’“–HØ "‹Ó€Š,:í‚ÚÓj«Ó3êôÐ]mOOOÙ]mwW—MMkOÙ£££Ð,DEC!ìKÈž{s÷ýÜs¾¹MN PLµPSvÕ³‹â!åÔ¿òRÆ ªÑï$UMl4üù–’€ùl2=9Ý"“gv‘wg)æT-ŸmäÂÜùCÃlk^òØs‘vÇ;Èæ\ÀòU5h‹»È¬J'TTÊÑúqbÚÓd§X(ΰ2i™gçU“?bÜdÓ 9v@þƵس?5—‡>Ư†¿Î{ÒLöl\ùkYó_+iø¼™š •Ÿ=:޼’ ß—Sn+¬ß €q”‡½0óŸGÿŽÇzŸgEÛ |öÓƒ,¾ÿ~æÕMãܱ½D»°dN‹ê§ ‘sî~ H”[ «ÉX“¦]jŽã;|‰ü ò‹èèt“SÀ³û4‡á‹=<ÿè$† Ÿð˜){âhÀvËdI¨r$ÒÏ… p±•ô‹|-HGWý.} >+Kž\Bóáf"þó¼ü9iI9ž²ó-Ð>§JQ×;’%Be^””>Å­œ~PÜWÿ[±`áÃâÍ7?Ÿ|Ò$j@XüYûš‰ÿø§¢å¼‹Ÿ|W´|ñ’Þï áyXˆÞéB´Â1[ˆK›ÄonÏÜ Ü$}m§Q1¹¯‚Œ_…W4ë¾s± E…Séè€ÖÖøÝn£•<躠fT5VkŽ®#<ø`=o­kCøÀµ|ÝŽC+d·3¯~vÍD™E+ ßWÎ(w95ÿã jzË)7Ò‘¸J¦¿P¬5¢RˆB…–’Q©d ªR—ŒÏ)Îör…=¹À5ÿàý 32(*žÏá#Ë))BJJ Ng2ii)deÙ7n»voæÙïý€Õë³uw³¦{ hdðo¡lZmòê“;^+|¨&.é:H„tˆÉšÇÑ=Oìt¼²ÆÏi pÍ;±6Z²é’²˜ÁÕÓ¥’A•¢‚ÁREšiPlë%°œzˆ…‚Ìþ!úÛê9¤„Ó-ïR2¸ŸY³¢¨¨ââ\**Šèï÷ðë_ÿšW_ý ;›"¬Xþþý[IM–AU@H ò tÿë2L?ä§€ t t’óát1ÿ4÷Í•¯÷j/N!„*s•ÎÆmo˜¹ì?ÌÞù¸iY°JZÚh ¶«üœÛðù[ð9tâž“Ÿ>³g쇋ÊÊœ8éæðá/C‰Â}8^òò²ÈÎÎ¥µõuÓ3ȼ› ÁªÒ@,9¤ÕÜïÃV„Ï.÷€Ýž„½à섬$̥Ȭ×íÍTƈJHzD#š:ŒH ŽˆoáÐdÂáZ|ÉôöϦ«ã>Jò+¨©¾ÈÙîЬԌúÛwìãìÙãD£Úå -äqþ|3<±xg¦âîV@ dÀ ®ýئՠ¶ö M ”+Æq¸†ØÓu¿kõ­då6àiÐíèÚ@1$)†œp\OIå ðÔ·Y·1õžgyô™71ö^<~ð‡!“³g Æ”1‡½m`ÑŠTU°ž$½¼ïn—ÑFÒUý+8 _®Ü¾g çóÀ\B¿ªp ®€ Ž*ÔMRqûY.õôòGð{Bø\A¢A¿7F‚ë²=ÐäåÀ‚‡êùãædXÀsœô…3‰²âwÐh!¾ ˆ/ïŠ,×·îÂ$W"„ÒÕ \eD×%lI‚E³úp‡/àö UB¾(~o˜ /B0¬ŒB ¡„% &޵“}ÛÖïȳLp ”k¤¥ŽÁsÐf„lÄ ˆý:ÛŽ½÷n»äÙBèækû®k¥HT¡¦2Ê”qmt:z. D %®Ao„€7ð' `’`BÍÖ7Àã0 è2x÷qßLBû"èštÓ„¡msë§4vcIñ£ÐV#Æ+i\ è2󦺉Ë-8\^Bþh$F¢ø„Ap¼ÁÖm.~ñÆI–5\äTOñ(€40ÌÎS¤L+EŠVàj‚l 1Òúòï8VnˆÈj9É–5X”6„0'¬`èºÁVã…9“GµÓÙßN Ä.·RÈCMÜwµúøhõiÖín!µXgt]Je-Ѱt¥$5œ"­|Î]Ϋ†™àlØ´i‡s“ÓH57`·6!K*ºnýº_$BfÞÙY§èêsL@D‚*"åèþó,ßz’nÌžWÎ’¹•üÃìtF͸‡Õ'j@RA)89yêÞ8!ŸÒ±!Ô•®è±í—À2‰6ËarR6“j½ˆ@B×- +qe¨µ¸„Ý&¨¿³w `0†Si§±n€SдvËæÏ9j‡äRÚµ§D$Ð$!Qš‰áÅmXMq„.£ª è2£‡…¸»bÑ‹G¹â—\Apž($)°`zͱi¨Þ$Û s˜m˜RSqtÅ .鿀ØîàûÁ•ŸCÒDêµçÝX2ºšLvš—±åmŒ,ë"35BTU63q¸ƒüا„:{ð{Á4 BàŽ€L({ÉÎGfáïCçÖLÎü¢‰c›ß%F±q˜7 ö榷¶á©“ „ýÚ’"“d‰‘Ÿée\E'C‹ÈD±ØêÆœ@éÛM 7†Ë?àL¸? ç: Ÿãtó!6ü~á lG©:ÍÈgSQ™š¸î0gâÇ[[ß¿{ŸòyæèklÆöF[é ›RÎÀœ‘˰¬ òÒÒiúÂG.!†ø×qôL¶¼ZúíàÀ¦­œÜÞ@Arˆ9c˹"†Þ€˜4b:¨:$+ÈÆˆß ®³®ýƒ†¥¥õw[Pv€&ÙÖ íM‡X6DÒˆô&qÚ‰¸4ÝD{N/\h…éLÁò#:ÏUb2eÒº}zË&¾óHKžZÈ—N“Ò¹ÌI /ýé™pÒƒ'¦Åq³tñ•kÖmYºjÒê~Ñ08­x›ûðœè§»­Oï=@;BŽÇ1§˜±¦Ù°ç¦‘”“š¸O£ü%R/nbù —|àÐyRöi{j“&OàhãAÊv·ÅõTB€@B µªïm=ÙºVÕ?"€vS€öÓXìïv>úÊÙñU#§úb1ùDgGÏ…¯«á_‡ˆ4º ¸ö*'|Áéä삱 †Õ‰i’ €íMÍÝþiïïQ¤$ª=@7à¢×ý/$I_!3 äiF=*1®q@7 I’“‹Šj§ääÔŽ?fTQQAöûï¯h8wnûz rEˆ` &ºY#5,†%@Ã(ܰ0|£Ÿ•diƽÆ“s­ÄÕH‰›WÜpˆÿ»âF+ø‹‘0@ÔHUç+d$ð׫ÿPYÎÅ:­IEND®B`‚PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/images/kopeteavailable.png0000644000076500000240000000451412613140041027345 0ustar philstaff00000000000000‰PNG  IHDR0/¥‚IÉ IDATx^Õš[l冟fgÏÞL6^'>€ó„,  ªJd«ªR *¸BBªz“Zbn®z™F*ô¦R¹k% DêU(¡*U‘*PKOlHÝ’Äàĉc;Nöd¯wggþ¯#ïJÓÕâ ðAâ“^}³²Vú¿ßìþ¯f•ˆðU®·)¥_¤Þ}ŠA-ô d5 €†aFÎ~ûÆù%"Ÿ°\ýã)rÇ­d4—Ú”"žNH'•Ÿ*æÊUf.ßâ͹gN|çβ¼Z>À{G°NY‰h®gÿd¶u!é=臘fÜ"ve J“ì)ï`òâLîâð•ÜŸ¬>/pâá)°ŒR"ò¥Vèý#dÎtïë·{î݉ô>Ý£B€Û\©I  ¯ÃÄ[¸“aFÿù cSÃßüÞm Ddå>8€øíŽûwØîÞ{~‚ŠÞ¸ˆ\òõ1È(È5”L‚\GÉ4¨}À7 ø6\p˜¸pƒ‘w/,B<âC|ƒ/W§ú¾¶ÕNßµµïYTt"£xú5´þ+øHd®á€Tô[àü "s°y”ž­ëéßÙx™¥keF†øiªÇÎÚ[Ò¨»~!ÑF¼×P2æë*ÈÈM Œ¢ ¡5hîG`Ö1ú>eW¶—”<}˜ÁUøp8šÙÛƒ±õ.Tlè·ïUX|b±+™ô5³2P1ÚQ¨°ƒZ‹û{~¹ŸBƒ‰Mvh‡Ùó0ÈuÄ{@0@<  ̃”Q”@æA x&è&DSæº9ìt†hÜ8u¸žýþK ¯&Àx&Ñix¯ d! X€Ñ€ƒb¨€øÒ<#¤±ºïHñÉÇ7au²V2„ißRï  ˆÂQ€q§Ñ5ÍÁÍÀ…²\Ö¥#XÕR5ã¾ô,¸¾ UQ% ˆžm8\7í­Í7±ö\Ä«C} Ü( Pˆj¨9 /‚¡Û¥LÐÚ]#í‚€ç@ÝÆW€ÐÄX"p·¢Ñká€ÀÙÚ­j®^˜ÃJ‡›HS%í.4{+@Ì­Ö©;@aµvæœ\múñ,xQÀiw€¦Z´Ð~ÍB¡F1_CÁÛ« ðzuÆ9V™¾Eªx3ÔÞePE¦éD Í QÔæêÔ«ùÙ:ÀéU¸ûWœÒãNÑÈŸÎì^p¯µÞÀ´¹Ð !*è@áJ‘Ùé:NUNú_bã«í‡æ¯ÔϘ‰Iæ&Ö‘ìêwжEp/´¿R R¬quÜ8±&&ë»ðÁ997î}vï&¹!RH› @P”¦Ê”®—˜ø´Ë3ƒ/1¾f‰ìž_sèÜÉVh`VFqz3ؽ Ó (B[iO3;v“ùé 7fB”òîY? <¿6Çé ÐdÍph ÿžýdv=ÈÜy®ž›¤0Q™¯ƒ´ïTn]Î3ñÞ5æ&*Ø¡¶mÙŽeÿ$Ù5ËÄÃCØ"œÙþ­ýÄúº‘}Ï}`üߎ“ÿðò— ˜ƒpÌ6$7An¡$¢Ršq20Íd†°@W•­›X!ãø«‡±WÚcöæM˜1 ÷1"èwPúO€„4à‚ÔƒD&곎Ðí ›4Ö¸âÎÎ(—¦* +ptÃÎ^°ÃÚÁýPjš,Jtp nÇ CAFØ^Œrqªr4Xæ >ÍÁT_§m%¢Ðwtêo´í‚8 i Á{6ZôÌV—íÀŸf0ÖecZ!Höƒ7õ÷Ákýï·žBUk˜ î…%R™jU&Œ…&3øÝz8½Ä}Buˆ¦ëS¿Ñ`‰,¼„ Á:µÄLˆ@& Ó X.@6Þµ"_^œ)ðÚ×§"iY¡`ðÖ¿ A%CtE€ì²VHAnÑ+ Þíä)Ú¦M­´6S[©U«6ÝÖ­aM»•%`.;mR'6qÁv‚s3Ìgïü*}uΉ{ƒ>Ò£×ï“ã“ÿÿ¹½kÜii{éÀ t`•PFÏ>ù>wH´;x-°Oª½Ì]šQƒè Ñ¡kH¡{^¡‰/€¾ 8 ì+_íaS›òJkê½ CÕ2p.]§tÆGcýƒ„‚’S   èD†î|p8¼i«öÝÍlßࢡ Ö,ƒueä”Ó’ˆ? çF`$4Fß¾–@’8zw¨üîªöU´îÝßÎîM.öA™b3põ¦Tt2§Ôõ+€ñiøhŽ À•‹aNëCDÄDÎß9 |ïÖûÝ>ñöo„ÌÜ‚†áLTÐçëHEŽÈ9i]FJáÁzXYÓ)xõ"ü#˜âäßûøìâ`Ø—O±kªÿ«Ols?ü`?hg|2¯]‘$tpE"›*2-^x|‹$"RŠçÏÀÇ8ÕÓ’Ä[w‚À{Í÷ù:lçP«,ξQx=hH•ƒ´š§ÕükàëM0œ€_~§‰Ó=}  #W:-ɧÛ;‹Ž|ç‡ñdË*Jàì¼Ñš&¡™a~DýÍ,Z¯õ߀àuØU÷VA(]N<6åˆ]‹ocõ#¯}cî" ¾Üµ}ÏæºýUl_Ñ$¼xYÔLàQ6‹*A=kêPŸŒÁîuPë†aÍËÕÁhåÌÔ¬Cx·0*÷;Ÿ8´‹§š—dRçõ~˜˜SžWžVÀÁŒ^[L&ç`0l†9} “Ž•Ï}öß(ô CùPÞ?ÐØR½wïÑ)8¶z3 -›÷ó#1>%ÇG·À¹q'Ó·@¬u‚À1ÉRrKGÝz/õ+ 4 6}¼l—hÒ¶ Ø€´"¡l’,èF'ü9í5ðýûàj¬‰Ë:R¢Í­ÕFni]]ãÁ)iRYŠô®M޶ŒÊ¹ÍjÇf“ªiÊ®F³Z£ø—4­‚õ^;µjšB÷¶û¨¯r1ûo¨,‘¢SÖ(µÅÓF'‡è0L¸Ø¼"%æÙI`²…'J‰€òþ ¢û´Þ/Ø4p–ØQ—ÏE2^¿yKu ©ff¯ÊE";¶™d–&`µE&)s–bÿ]‘:žúñNJJí;n¢z­4XSë™'„®Ö¬ÍGÚ5õ, ëd:šmz ÍávµÈwMn1)“ذ‚ï:ô“=”•»@y’u½lmñ²£ÖÎÏ"Åkö¤œ[[ªfµY£ (¡×J@í{ºžüÑ.ªjÊ ;Ê '<îƒv/|ž„+“9ÒÀ¼½ÀHÂ]¬ìð96úÑ¡±œØW¿¡_£×ð7{`¿N]ƒc#pó¶©ódjÞã€P4™ßáDƒé[òš»àÏF 4+žD`»öÖÀŸ†áêtöTl$¬n¯‚ÐH½Ä•mµ6ÚȤfSÄÆâ9ˆ£[4÷¿ýêæe•SŽ‘)<ñ–( •%’À+=Ö®ót,ì¿0(Á‹«—\m´ãÃãAâãItà°ì ËQ÷;JA_üÁÍph <½ ž¹GzÿÄH{"äNàÒé@gî.$oÈpÈ6Éœß; Ë€…ε‰jŒMÃ[gb™»n9øƒ1žùÕEÛ|&äêû ÙŽQæºEೞÌç_ÑF3+æ<ˆK1h+7S½ß@D‚0ýíãiÏþ"ÀÌtŠb‡–½[±Û‰ßH²Üí2‚Å*Áó\:Lr€Ž¶í>B€pìÌ¥¥IT#Y"Rì´³íÁ&¹´CŸŽÑ|ŸKÆüyyâ>Ì]¹j ûÄñ`â_=tTÊ|:kJ‘ Ò¦Q©ªrΟÀ©¼oøÎ¼íºÿVW¢uPwC‹G÷ÊR÷ÆÖjCN'aG¥$¢™òUݾYUWóÙéÇÞìãéŸîã¶.ÓÓ3×£1º_àgx•÷y¨ù»Ìe)ªÙÛ2üºf°ç$)"¢xñ·=¸Ü.Šö "SæfR¼ù||—Ÿ?ÞÑH<4މs@™gbNÂÌAȦüoz»§ã±mÛm À¥7þðøï‘Ur·ÑP||*@庌@Z·¨ªƒtvð a~}¤;¾í¡f6ÜÛ@Z3·U¤8õÞQ¸q¿áð^`Ü¢sPÆ;ФiŸcéDÖÅîsÑizß¾ÀÐg×ðÖUðÀ·ÛY^æÊ·Œ‚E:LÄ“œ:~q¾ãLü?¢ÐTºhŒ¦©T1еPçÃ|ô^€¡O¯QßâcÏÓ-¬®÷b³‹;­««ÿ‰@—µ]N ëo¯÷uˆ(P¿Þk¹°2Ö°úÄðŸà#,u•Rßì£í›»ïÁ¦¡R%¶ …Ë€n -Ë‘ò[@犲Ò:AÑZ©ceµ sFNĦO¨,³(•®ôP³ÅÇš 5Ø%hl급¦æJÕEÏþìe€ºB'ÓòøU¦hUjOuë·5³ªÖ‹©-ÐJÈD湟¿Œ¯Q ,%—È|ˆBEE¦sØD7­ Jõ,v´WÖ©[·»K@IçøçÄQ//€éEìk7Öør¨têGƬ 5MÕ2âväîPâ¿9žX žWJÝ.Ê*=û¾L‰Ûs©<ÒGÏ+ ^Yw¯ Y¥w40HrG|]âe8ÀËW¹cÜ èñ8€Ë×b5ÊØŒgéãô±¨Ë5hF2®âýÎ1èlsárâ÷1­ÄGq%óP÷¡¾ÀUhWÝqÓíøOìByüïˆ_¾M­‡OÏt ãB ~\aò÷ÁD$hÃjZÿøP‹…WÏ2MãBÀ°;â®ÿìÀ@aLjPæ‹‹Å>þúÃnBÙ$ëħ-𞊜‹UM–êø¸ª²ÄlEô£‚3Öâ›hG€ <΂5FKÓÍo±,Þ`Hm’hJGýGF+6«^ïÊk [ï}1FàŸÂ×u¹Q݈Ôlu”0€*c©«¨a ¦£„k¿È¤UÄyhEPE°QØ÷%éßý‹X ô·“$Ô#i F’,™„ ä2Ôë”Ùkš›Öù˜¾¢bŠ€éÁ™“É·3m>‹1Šˆcfã.´9<ý„‡q!² @ñ^²yÞ~™-ÿ«64`àg{%ú·+df6‘{ÁÇxåÏÃï,Xd«!â’v梊:ò€Íx‡ñ<òx #(a'ÚqxR a&Z1sÅBœ€Dp:ªèVýÖ¶ÿ˜ÎŸÃ-OôX-c„Üu©3V~Òë†4ÅÙøÔ.å%’F½x{Q=T\9WÛã˽cH§Vâ—_Ã…Ä ²Ç°ðø›ÂÓ<Õ!{–÷¨PÎëóß¾0Z׃nìA„à ÄïxYÅ"ÃÄ{îÃíÔZhI¤˜¥§Y˜°·ÇÖŠZZØYõêyë}%tcâ‘÷ÂW¿m½vç…Ûn¿{Éc”sÄИã’Dö4SÎ m‘=ût/ÑÞÆ®ª7ÆŠF7ú~ëEþÆ¢×o¶òœ)î 7­o=‘3 Ô££&A%þr„v¬ÛaÓ=L›ÊC{Üÿ•7­Á º1àŽx„ ûKVÌê´Ê.âõ˜W ‰G+Pg{M„Ö„Ÿî·å>¦wòÐ{¸m£b¶cø¨¯§~Ï·ž»ÚæKN³&°|ò‡žxðbçÝ8ÛÿÔ#³$R‰ŽŠ¹2¡É›«é˜Ê¯¸ù…^›°k,%h˜|~Ÿß8ÌÉ(G*ŽŽ€´F5Õ1‹I)/ôzý؆.¿©ËnœŒ’£€ ú«Z§qp+×L7çÑÝžB ÇD@Ѳt”Ì ~€÷òq”‰§Ð÷Ÿšâ£¿xŽ@ô‡jè@ µÃ_CŠfÔßG¢Ž:©rRÞlCõؼ‘¥–¤tb£c)£Š"¶`+¶¡„eŒ&T*LmršÆÒøÄUØ©³0XDYôcrh"ô£';¢€ †éšAဠS²¦îOí‡Æw`Мr™8EŒ¢ŒÞÅDBJØÀΧØö$~LØ„"jƺ²¢k:ýeþlšßCöØËê)¡ÔQÅf r„=ì_Çà&·ÓÕAÏn¶­!üaç!Wÿ ™6Fª\ÐîBä4^ jI½†VT0Œ7Q% RÞ@ÿ&¦LdkÑK-k]:éIÝ]óbW ï¾Jß³„Ÿú¢Š€6ªU¦åœr¨[’m&°oj„·é‹LJHôžó×-|Þx/eÓü|ús¿´¨×—–yë%Š?"¼EèG9&ä91ëtcƒÜÐ|ñ«B}¹oëw‹ñ1.‡>+––ŠåeâªyîÁE8'£™ë¯öLì>_Üx®—Šñn1þ­¸ó"±{¾¸¸ÕeholF\4’¢BØÇÈ. ­Àú>ÏMú7ŸùÚ¯<Ýx;P@ £×¾æ»S^Ôº7µ¦¥™×¶°ñ ô0£“5>Þn²]dÁgC´Lñ ízè^òŒ»5 CØ‹þ#,¡o°ìŠ)î¹ó?hÉ:mÃO™ÜN-²p¢%ø>2¨5æÝjKñ:1Þ(V¯Sú‹ÙVâ",ÄIhöÛ“ ÿS]»ù\•_™+þbŽœŠ ›b¼E\w±àcø}œ†6Œ& images/blue_angle_swirl.jpg images/artsfftscope.png images/kontact_contacts.png images/kontact_journal.png images/kontact_mail.png images/kontact_notes.png images/kopeteavailable.png images/metacontact_online.png images/minitools.png images/blue_angle_swirl.jpg PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/padnavigator_rc.py0000644000076500000240000057626512613140041026000 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 5 07:34:29 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x09\xf1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x09\xb8\x49\x44\x41\x54\x78\x5e\xbd\x99\x6b\x6c\x53\xe7\ \x19\xc7\x7f\xc7\x10\xc7\x4e\x0c\xd8\x21\xc4\x21\x24\x21\x71\x80\ \x84\x4b\xd2\x34\xac\x12\x81\x16\xd2\x82\x2a\xb4\x2b\xeb\x85\xee\ \x43\xdb\xb1\x09\xb6\x6a\xfb\xc2\x97\x49\xd3\xf6\x05\x3e\xed\xc3\ \xa4\x29\xda\xa6\x4d\xad\xb4\x36\x53\x5b\xa9\x55\xab\x36\xdd\xd6\ \xad\x1d\x61\x4d\xbb\x95\x02\x25\x60\x2e\x05\x3b\x6d\x52\x27\x36\ \x71\x02\xc1\x76\x82\x73\x33\xcc\x67\xef\xfc\x2a\x7d\x75\xce\x89\ \x1d\x7b\x83\x3e\xd2\xa3\xd7\xef\x93\xe3\x93\xff\xff\xb9\xbd\x17\ \x6b\xdc\x69\x69\x7b\xe9\x1e\xc0\x0d\x74\x60\x95\x50\x46\xcf\x3e\ \xf9\x3e\x77\x48\xb4\x3b\x00\x78\x2d\xb0\x4f\xaa\x04\xbd\xcc\x5d\ \x9a\x51\x83\xe8\xa0\x03\xd1\xa1\x6b\x48\xa1\x7b\x5e\x05\xa1\x89\ \x2f\x8f\x80\x02\xbe\x0b\x38\x0c\xec\x2b\x5f\xed\x61\x53\x9b\x8f\ \xf2\x4a\x0f\x6b\xea\xbd\xa0\x43\xd5\x32\x70\x2e\x05\x5d\x81\xa7\ \x7f\x1c\x74\x1d\xc6\x47\x63\x04\xfd\x83\x84\x82\x11\x92\x13\x53\ \x09\xa0\x0b\xe8\x14\x44\x86\xee\x1e\x01\x05\x7c\x05\x70\x04\x38\ \xbc\x69\xab\x8f\xf6\xdd\xcd\x6c\xdf\xe0\xa2\xa1\x0c\xd6\x2c\x83\ \x75\x65\xe4\x94\x1b\xd3\x92\x88\x3f\x0a\xe7\x46\x60\x24\x34\x46\ \xdf\x07\x17\x18\x1d\xbe\x96\x40\x92\x38\x7a\x77\x08\xa8\xfc\xee\ \xaa\xf6\x55\xb4\xee\xdd\xdf\xce\xee\x4d\x2e\x1e\xf6\x41\x99\x13\ \x00\x62\x33\x70\xf5\xa6\x54\x74\x00\x15\x81\x32\xa7\xd4\xf5\x2b\ \x15\x80\xf1\x69\xf8\x68\x08\x8e\x0d\xc0\x95\x8b\x61\x4e\x1e\xeb\ \x43\x44\xc4\x0f\x1c\x10\x44\xce\xdf\x39\x02\x0a\x7c\xef\xd6\xfb\ \x1b\xdd\x8f\x3e\xf1\x15\xf6\x6f\x84\x06\x0f\xcc\xdc\x82\x7f\x86\ \xe1\x4c\x54\x12\xd0\xe7\x81\xeb\x48\x45\x8e\xc8\x39\x69\x5d\x46\ \x4a\x10\xe1\xc1\x7a\x58\x59\x02\xd3\x29\x78\xf5\x22\xfc\x23\x98\ \xe2\xe4\xdf\xfb\xf8\xec\xe2\x60\x02\xd8\x97\x4f\xb1\x6b\x05\x14\ \xaa\xff\xab\x4f\x6c\x73\x3f\xfc\x60\x03\x3f\x68\x05\x67\x11\x7c\ \x32\x0e\xaf\x5d\x91\x24\x74\x14\x70\x45\x22\x9b\x2a\x32\x2d\x5e\ \x78\x7c\x8b\x24\x22\x52\x8a\xe7\xcf\xc0\xc7\x1f\x06\x38\xd5\xd3\ \x07\x92\xc4\x5b\x77\x82\xc0\x7b\xcd\xf7\xf9\x3a\x0e\x1e\x6c\xe7\ \x50\xab\x2c\xce\xbe\x51\x78\x3d\x68\x48\x95\x05\x81\x83\x05\xb4\ \x9a\xa7\xd5\xfc\x6b\x1b\xe0\xeb\x4d\x30\x9c\x80\x5f\x7e\x00\xa7\ \x05\x89\xd3\x3d\x7d\x09\xa0\x23\x57\x3a\x2d\xc9\xa7\xdb\x14\x3b\ \x8b\x8e\x7c\xe7\x87\x0f\xf1\x64\xcb\x12\x2a\x4a\xe0\xec\x18\xbc\ \xd1\x0f\x9a\x26\x15\xa1\x99\x61\x7e\x44\xfd\xcd\x2c\x5a\x16\xaf\ \xf5\xdf\x80\xe0\x75\xd8\x55\x0f\xf7\x56\x41\x28\x5d\x4e\x3c\x36\ \xe5\x88\x5d\x8b\x6f\x63\xf5\x23\xaf\x10\x7d\x63\xee\x7f\x22\x20\ \xbe\xdc\xb5\x7d\xcf\xe6\xba\xfd\x1d\x55\x6c\x5f\x03\xd1\x24\xbc\ \x78\x59\x01\xd4\x4c\xe0\x51\x36\x8b\x2a\x41\x3d\x6b\xea\x50\x9f\ \x8c\xc1\xee\x75\x50\xeb\x86\x61\xcd\xcb\xd5\xc1\x68\xe5\xcc\xd4\ \xac\x43\x10\x78\xb7\x30\x02\x2a\xf7\x3b\x9f\x38\xb4\x8b\xa7\x9a\ \x97\x64\x52\xe7\xf5\x7e\x98\x98\x53\x9e\x57\x9e\x56\xc0\xc1\x8c\ \x5e\x11\x5b\x4c\x26\xe7\x60\x30\x06\x8f\x6c\x86\x39\x7d\x09\x93\ \x8e\x95\x04\xcf\x7d\xf6\xdf\x28\xf4\x0a\x12\x43\xf9\x11\x50\xde\ \x3f\xd0\xd8\x52\xbd\x77\xef\xee\x06\x1e\xa8\x86\xd1\x29\x38\x1e\ \xb6\x7a\x1f\x33\x09\x2d\x9b\xf7\xf3\x23\x31\x3e\x25\xc7\x47\xb7\ \xc0\xb9\x71\x27\xd3\xb7\x40\xac\x13\x75\x82\xc0\x1f\x31\xc9\x52\ \x72\x4b\x47\xdd\x7a\x2f\xf5\x2b\x00\x20\x34\x09\x36\x05\x00\x7d\ \x1e\xbc\x6c\x97\x68\xd2\xb6\xa0\xd8\x80\xb4\x22\xa1\x6c\x92\x2c\ \xe8\x46\x27\xfc\x39\x00\xed\x35\xf0\xfd\xfb\xe0\x6a\xac\x89\xcb\ \x1f\x07\x3a\x52\xa2\x1e\xcd\xad\xd5\x46\x6e\x69\x5d\x5d\xe3\xc1\ \x29\x69\x52\x59\x8a\xf4\xae\x4d\x8e\xb6\x8c\xca\xb9\xcd\x6a\xc7\ \x66\x93\xaa\x69\xca\xae\x46\xb3\x5a\xa3\xf8\x97\x00\x34\xad\x82\ \xf5\x5e\x3b\xb5\x1b\x6a\x00\x0e\x17\x9a\x42\x9d\xf7\xb6\xfb\xa8\ \xaf\x72\x31\xfb\x6f\xa8\x2c\x91\x00\xa2\x53\xd6\xee\x83\xb9\x28\ \xb5\xc5\xd3\x46\x27\x87\xe8\x30\x3c\x21\xa3\x50\xb4\x04\x82\x09\ \x3b\x62\x81\x6b\x12\x69\x74\xb4\x90\x08\xf8\x35\x0d\x2e\xde\x80\ \xb7\x43\xf0\xfc\x65\x49\xa2\xd1\xa3\x3c\x29\x3d\x2c\xc7\x6c\x9e\ \x7d\xa8\x16\x0e\xb6\xc0\x63\x8d\x50\xe6\xc8\xd1\xbd\xb0\x36\x84\ \xe3\x03\xb2\xad\xae\x5e\xeb\x55\x9b\xc8\x02\x08\xb8\x05\x28\xe6\ \x66\x53\xbc\xf4\xfb\xf7\x39\x77\x36\xcc\x5f\x87\xc1\xed\x50\xe9\ \xb4\x58\x4a\xb4\x97\xa7\x78\xf7\xdd\x00\x47\x9f\xbb\x40\xff\xa5\ \xb0\x5c\x08\x8b\xb2\x3d\x6f\x25\xe1\x8f\x42\x79\x29\x94\x14\x41\ \x65\x6d\x05\x40\xeb\x22\x04\x54\x0b\x75\x38\x8b\xea\xaa\x6a\x3c\ \x9c\xfb\x68\x90\x2b\xfe\x08\x2f\xfd\xee\x03\xce\x9e\x18\xa0\xef\ \x3a\xb8\x8b\x25\x09\x95\xfb\x56\x20\x9e\x62\x08\xc4\xc1\xb1\xb9\ \x89\xda\x1d\x2d\xf4\xe9\x5e\x02\xe1\x24\x3b\xaa\x17\xf6\x36\x56\ \x12\xdc\x98\x91\x5d\xa9\xd6\x0d\xae\x15\x2e\x00\x77\xbe\x11\xe8\ \xde\xb1\xa7\x09\x67\xa9\x9d\xd9\x99\x14\xf3\xf2\xda\x0b\x27\x19\ \x8d\xc4\x18\x98\x84\x54\x5a\x82\xc8\xa6\x13\x29\x98\xd4\xed\x20\ \xe7\x38\x9c\x76\x3e\x4c\xb8\xd8\xbc\x22\x25\xe6\xd9\x49\x60\xb2\ \x85\x27\x00\x10\x04\x4a\x17\x89\x80\xf2\xfe\x0b\xa2\xfb\xb4\xde\ \x2f\x08\xd8\x34\x70\x96\xd8\x51\x02\x97\xcf\x45\x32\x5e\xbf\x79\ \x4b\x75\x20\xa9\x66\x12\x66\xaf\xca\x45\x90\x22\x3b\xb6\x99\x64\ \x96\x26\x60\xb5\x45\x26\x15\x29\x73\x04\x96\x62\x05\xff\x5d\x91\ \x3a\x07\x9e\xfa\xf1\x4e\x4a\x4a\xed\x19\x10\x3b\x1f\x6e\xa2\x7a\ \xad\x07\x34\x58\x53\xeb\x99\x27\x84\xae\xd6\x00\xac\xcd\x47\xda\ \x35\x1d\xf5\x2c\xa0\xeb\x64\x3a\x9a\x6d\x7a\x0a\xcd\xe1\x12\x76\ \xb5\x06\xc8\x77\x19\x17\x14\x4d\x6e\x31\x14\x29\x93\xd8\xb0\x82\ \xef\x3a\xf4\x93\x3d\x94\x95\xbb\x40\x79\x92\x75\x1b\xbd\x6c\x6d\ \xf1\xb2\xa3\xd6\xce\x16\xcf\x22\xc5\x6b\xf6\xa4\x9c\x5b\x5b\xaa\ \x66\xb5\x59\xa3\x20\x09\x28\xa1\xd7\x4a\x40\xed\x7b\xba\x9e\xfc\ \xd1\x2e\xaa\x6a\xca\x0c\x3b\xca\x0a\x27\x3c\xee\x83\x76\x2f\x7c\ \x9e\x84\x2b\x93\x39\xd2\x05\xc0\xbc\xbd\xc0\x48\xc2\x5d\xac\xec\ \x16\xf0\x39\x36\xfa\xd1\xa1\xb1\x9c\x11\xd8\x57\xbf\xa1\x02\x5f\ \xa3\xd7\xf0\x0f\x37\x7b\x60\xbf\x0f\x4e\x5d\x83\x63\x23\x70\xf3\ \xb6\xa9\xf3\x64\x01\x6a\x15\x05\xde\xe3\x80\x50\x34\x99\xdf\xe1\ \x44\x83\xe9\x5b\xf2\x1c\x9d\x9a\xbb\x05\xe0\xcf\x46\x20\x34\x2b\ \x9e\x44\x81\x60\xbb\x17\xf6\xd6\xc0\x9f\x86\xe1\xea\x74\xf6\x54\ \x81\x6c\x24\xac\x1e\x6e\xaf\x82\xd0\x48\x12\xbd\xc4\x95\x6d\xb5\ \x36\xda\x81\xc8\x04\xa4\x66\x53\xc4\xc6\xe2\x39\x08\x88\xa3\x5b\ \x34\x12\xf7\xbf\xfd\xea\x19\xe6\x65\x95\x53\x8e\x91\x29\x03\x06\ \x05\x3c\x0f\xf1\x96\x28\x20\x95\x25\x92\xc0\x2b\x3d\x11\xd6\xae\ \xf3\x16\x74\x2c\xec\xbf\x30\x28\xc1\x8b\xab\x97\x5c\x6d\xb4\xe3\ \xc3\xe3\x41\xe2\xe3\x49\x74\xe0\x9d\xb0\xec\x18\x0d\xcb\x51\xf7\ \x3b\x4a\x41\x5f\x1c\xfc\xc1\xcd\x70\x68\x0b\x3c\xbd\x09\x9e\xb9\ \x47\x7a\xff\xc4\x48\x01\x7b\x22\xe4\x4e\xe0\xd2\xe9\x00\x40\x67\ \xee\x2e\x24\x6f\xc8\x70\xc8\x36\xc9\x9c\x00\xdf\x3b\x02\x0d\xcb\ \x80\x85\xce\xb5\x18\x89\x01\x6a\x0e\x8c\x4d\xc3\x5b\x67\x62\x99\ \x15\xbb\x6e\x39\xf8\x83\x31\x9e\xf9\xd5\x45\x1a\xdb\x7c\x26\xe4\ \xea\xfb\x0b\xd9\xc5\xbd\x51\xe6\xba\x45\xe0\xb3\x9e\x07\xcc\xe7\ \x5f\xd1\x46\x33\x2b\xe6\x3c\x88\x4b\x31\x68\x2b\x37\x02\x53\xbd\ \xdf\x40\x44\x82\x30\xfd\xed\xe3\x69\x17\xcf\xfe\x22\xc0\xcc\x74\ \x8a\x62\x87\x9d\x96\xbd\x5b\xb1\x17\xdb\x89\xdf\x48\xb2\xdc\xed\ \x32\x82\xc5\x2a\xc1\xf3\x03\x5c\x3a\x15\x4c\x00\x07\x00\x72\x13\ \x80\x8e\xb6\xed\x3e\x05\x42\x03\x80\x70\x12\xec\x1a\xcc\xa5\xa5\ \x49\x01\x54\x23\x59\x22\x52\xec\xb4\xb3\xed\xc1\x26\x15\xb9\xb4\ \x1c\x43\x9f\x8e\xd1\x7c\x9f\x4b\x81\xc6\xfc\x0e\x79\x05\x79\xe2\ \x9d\x3e\xcc\x17\x5d\xb9\x6a\xa0\xfb\xc4\xf1\x60\xe2\x5f\x3d\x01\ \x74\x54\xca\x7c\x3a\x01\x6b\x4a\x91\x20\xd2\xa6\x51\xa9\xaa\x0f\ \x72\x10\x03\xce\x9f\x1e\xc0\xa9\xbc\x6f\xf8\xce\xbc\xed\xba\x00\ \xff\x56\x57\x0f\xa2\x75\x1e\x50\x77\x43\x8b\x47\x00\xf7\xca\x52\ \xf7\xc6\xd6\x6a\x43\x4e\x0e\x27\x61\x47\xa5\x24\xa2\x99\xf2\x55\ \xdd\xbe\x59\x55\x01\x57\xf3\xd9\xe9\x14\xc7\xde\xec\xe3\xe9\x9f\ \xee\xe3\xb6\x2e\xd3\x11\xd3\x33\xd7\xa3\x31\xba\x5f\x10\xe0\x67\ \x05\x78\x95\xf7\x79\x11\xa8\x13\xf9\x8f\xbb\xcc\x65\x29\xaa\xd9\ \xdb\x32\xfc\xba\x66\xb0\xe7\x24\x81\x29\x22\xa2\x0e\x78\xf1\xb7\ \x3d\xb8\xdc\x2e\x8a\x1c\xf6\x0c\x81\x22\x53\x04\xe6\x66\x52\xbc\ \xf9\x7c\x06\x7c\x97\x02\x9f\x3f\x81\xde\xd1\x48\x3c\x34\x12\x8e\ \x89\x73\x40\x99\x01\x67\x62\x4e\x81\xc2\xcc\x41\x11\xc8\xa6\x12\ \xfc\x6f\x7a\x18\xbb\x1a\xa7\xe3\xb1\x6d\x19\xdb\x6d\x09\xc0\x10\ \xa5\x37\xfe\xf0\x05\xf8\xef\x91\x55\x72\xb7\xd1\x50\x7c\x7c\x2a\ \x03\x40\xe5\xba\x8c\x40\x5a\xb7\xa8\xaa\x83\x74\x76\xf0\x81\x0b\ \x61\x7e\x7d\xa4\x3b\x03\xbe\xed\xa1\x66\x36\xdc\xdb\x40\x5a\x16\ \x33\xb7\x55\xa4\x38\xf5\xde\x05\x51\xb8\x71\xbf\xe1\xf0\x5e\x60\ \x04\x00\xdc\xa2\x73\x08\x50\xc6\x3b\x9d\xd0\xa4\x69\x9f\x63\xe9\ \x44\xd6\xc5\xee\x73\xd1\x69\x7a\xdf\xbe\xc0\xd0\x67\xd7\xf0\xd6\ \x55\xf0\xc0\xb7\xdb\x59\x5e\xe6\xca\x00\xb7\x81\x8c\x82\x06\x45\ \x3a\x4c\xc4\x93\x9c\x3a\x7e\x71\xbe\xe3\x4c\xfc\x3f\x04\x12\xa2\ \xd0\x54\xba\x68\x12\x8c\xa6\xa9\x54\x31\x8a\xb5\x50\x03\xe7\xc3\ \x7c\xf4\x5e\x80\xa1\x4f\xaf\x51\xdf\xe2\x63\xcf\xd3\x2d\xac\xae\ \xf7\x62\xb3\x19\x8b\x3b\xad\xab\xab\x11\xff\x89\x00\x40\x97\xb5\ \x5d\x16\x4e\xa0\xeb\x6f\xaf\xf7\x75\x88\x28\x50\xbf\xde\x6b\xb9\ \xb0\x32\xd6\xb0\xfa\x10\x8d\xc4\xf0\x9f\x1c\x14\xe0\x23\x2c\x75\ \x95\x52\xdf\xec\xa3\xed\x9b\xbb\x10\xef\xc1\xa6\xa1\x52\x12\x25\ \xb6\x0c\x19\x19\x85\x81\xcb\x11\x80\x6e\x0a\x14\x2d\xcb\x91\xf2\ \x5b\x40\xe7\x8a\xb2\xd2\x3a\x41\x02\xd1\x5a\xa9\x13\x63\x65\xb5\ \x07\x20\x73\x46\x4e\xc4\xa6\x10\x05\x4f\xa8\x7f\x2c\xb3\x28\x95\ \xae\xf4\x50\xb3\xc5\xc7\x9a\x0d\x35\xd8\x25\x68\x6c\xea\xb8\x89\ \xa6\xe6\x4a\xd5\x45\x18\xcf\xfe\xec\x65\x80\xba\x42\x7f\x27\xd3\ \xf2\xf8\x55\xa6\x03\x68\x55\x6a\x14\x4f\x75\x05\xeb\xb7\x35\xb3\ \xaa\xd6\x8b\x04\xa9\x2d\x04\xd0\x4a\xc8\x44\xe6\xb9\x9f\xbf\x8c\ \x00\xaf\x51\xa0\x2c\x25\x97\xc8\x7c\x3c\x6f\xfa\x81\xef\x30\x70\ \x04\x60\x95\xaf\x9a\xd6\x6f\xec\xcc\x00\x50\x85\xa9\xa3\xa3\x91\ \x06\x90\x36\x4b\xce\x03\xd8\xd2\xa0\xdb\x90\x76\xd4\xfb\x65\x01\ \x17\x42\xa0\x10\x91\x2f\x3f\x2a\x88\x74\x03\xbd\x35\xf7\x34\xba\ \x0d\x45\xa9\x2a\x1a\x1b\x1a\xba\xae\xec\x2a\xe7\x91\x2a\x49\x9b\ \x7b\x79\x2b\xf0\x3e\x05\x88\x8d\x42\x45\x45\xa6\x73\xd8\x1f\x44\ \x37\xad\x09\x4a\xf5\x2c\x76\x16\xb4\x57\xd6\xa9\x5b\xb7\xbb\x4b\ \x40\x49\xe7\xf8\xe7\x11\xc4\x51\x2f\x2f\x80\xe9\x45\xec\x6b\x37\ \xd6\x00\x1c\xf8\x72\x08\xa8\x74\xea\x8d\x47\xc6\xac\x00\x0b\x8f\ \x02\x35\x4d\xd5\x32\x02\xe2\x76\xe4\xee\x13\x50\xe2\xbf\x39\x9e\ \x58\x04\xa0\x9e\x57\x14\x4a\xdd\x2e\xca\x2a\x3d\x00\xfb\xbe\x4c\ \x02\x89\xdb\x73\xa9\x3c\xd2\x47\xcf\x2b\x0a\x5e\x59\x07\x1d\x77\ \xaf\x0b\x59\xa5\x77\x34\x30\x48\x72\x3c\x6e\xb9\x4e\xb1\x5e\xad\ \x64\x99\xab\xcf\x88\x73\x2f\x40\x82\x02\xe4\x3f\x98\x19\x4d\xb7\ \xfe\x5c\xef\x7b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x08\x27\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x07\xee\x49\x44\x41\x54\x78\x5e\xd5\xda\x7b\x8c\x5c\xe5\ \x79\xc7\xf1\xcf\x7b\x66\x66\x67\xd6\xeb\xdd\xf5\xe2\xf5\xc6\x36\ \xc6\x60\xca\xd5\x26\x8e\x6d\xea\x62\xdc\xba\x10\xa2\x04\xd2\x8a\ \x04\xc2\x25\xae\x4b\xc3\x2d\x38\x29\x21\x94\x92\x56\xa4\x4e\x1c\ \x51\x88\x93\xa8\x88\x36\x95\x48\x43\x0b\x58\xa0\x12\x89\x06\x63\ \x6e\x49\x90\x0b\xb4\x29\x55\x84\x1b\x27\x34\x5c\x0c\xb6\x31\x6b\ \x7c\xc1\x97\xf5\xde\xed\xd9\xd9\x99\x39\x33\x6f\x23\x65\xff\xa8\ \x2c\x0b\x2b\x66\x2c\xad\xbf\xd2\x4f\xe7\xdf\xe7\xab\xe7\x7d\xf4\ \xbc\x47\xe7\x84\x18\xa3\xe3\x99\xc4\xf1\xcd\xf1\x2f\x20\xc6\xe8\ \x58\x1d\xa3\xb8\x42\x8c\x77\x88\xc7\x65\x07\xe2\x23\xce\xd2\x82\ \x0e\xd6\x5e\xe5\x4f\x51\x38\xae\x04\xf4\x7a\x26\x8e\x62\x98\xcb\ \xcf\xf6\x8f\x68\x46\x72\x5c\x08\xc4\x07\x30\xec\x74\x27\x12\x67\ \x22\x63\xf2\x95\x67\xfa\x08\x9a\x8e\x0b\x01\x07\x3c\x19\x87\x70\ \xf5\xf5\xbf\x49\x2f\xff\xfa\x47\xfe\x1e\xf9\x71\x2f\x10\x1f\xc6\ \xb0\xcb\xd4\xd1\xb1\x9a\x8e\x87\xa8\x51\x68\x36\x7f\x56\xbb\x19\ \x68\x1a\xd7\x02\x86\xac\x8a\x07\x71\xed\x2c\x6c\xc3\xb0\xf8\xb9\ \x93\x19\xe6\xa5\x2b\xdc\x8d\xfc\xf8\x16\xa8\x5a\x61\x00\x0b\x36\ \xe0\x5e\x3c\xc0\x79\x3f\x67\x3f\x33\x26\xbb\x1c\x05\xe4\xc6\xa5\ \x40\x5c\x6d\xa9\x1e\xfc\x31\x4c\x26\x3e\x47\x7c\x16\x5d\xe2\x65\ \x38\xc0\xcb\x57\xb9\x63\xdc\x0a\xe8\xf1\x8d\x38\x80\xcb\xd7\x62\ \x35\xca\xd8\x8c\x7f\x67\xe9\xe3\xf4\xb1\xa8\xcb\x35\x68\x46\x32\ \xae\x04\xe2\xfd\xce\x31\xe8\x6c\x73\xe1\x72\xe2\xf7\x31\x11\xad\ \xc4\x47\x71\x25\xf3\x50\xf7\xa1\x7f\xbe\xc0\x55\x68\x1a\x57\x02\ \x06\xdd\x19\x07\x71\xd3\xed\xf8\x4f\xec\x42\x0e\x79\xfc\x04\xef\ \x88\x5f\xbe\x4d\xad\x87\x4f\xcf\x74\x03\x0a\x08\xe3\x42\x20\x7e\ \x0f\x07\x5c\x61\x12\xf2\xf7\x12\x1f\xc1\x44\x04\x24\x68\xc3\x6a\ \x5a\xff\x81\x13\xf8\x50\x8b\x85\x57\xcf\x32\x0f\x4d\xe3\x42\xc0\ \xb0\x3b\xe2\x10\xae\xff\x03\xec\xc0\x8f\x90\x07\x40\x61\x4c\x6a\ \x50\xe6\x8b\x8b\xc5\x3e\xfe\xfa\xc3\x6e\x42\xd9\x07\x24\xeb\x08\ \xc4\xa7\x2d\xf0\x9e\x8a\x9c\x8b\x55\x4d\x96\xea\x90\xf8\xb8\xaa\ \xb2\xc4\x6c\x45\xf4\xa3\x82\x33\xd6\xe2\x9b\x68\x47\x02\x80\x0c\ \x12\x3c\xce\x82\x35\x46\x4b\xd3\xcd\x6f\xb1\x2c\xde\x60\x19\x48\ \x6d\x92\x68\x4a\x47\xfd\x47\x08\x06\x46\x2b\x36\x16\xab\x5e\xef\ \xca\x6b\x0a\x8f\x5b\xef\x7d\x08\x31\x46\xe0\x9f\xc2\xd7\x75\xb9\ \x51\xdd\x88\xd4\x6c\x75\x94\x30\x80\x12\x2a\x63\xa9\x13\xab\xa8\ \x61\x0a\xa6\xa3\x84\x6b\xbf\xc8\xa4\x55\xc4\x79\x68\x45\x06\x00\ \x50\x45\x9d\xb0\x51\xd8\xf7\x25\xe9\xdf\xfd\x8b\x58\xa0\xf4\x0e\ \x07\xb7\x93\x24\xd4\x23\x69\x20\x46\x92\x2c\x99\x84\x13\x0a\xe4\ \x32\xd4\xeb\x94\xd9\x1c\x6b\x9a\x9b\x12\x8f\x16\xd6\xf9\x1a\xc2\ \x98\x00\xbe\x1d\xa2\x0e\x62\x8a\x80\xe9\x18\xc1\x99\x93\xc9\xb7\ \x33\x6d\x3e\x9d\x8b\x31\x8a\x15\x88\x08\x00\x63\x66\x0f\xe3\x2e\ \xb4\x39\x3c\xfd\x84\x87\x71\x21\xb2\x20\x00\x40\xf1\x5e\xb2\x79\ \xde\x7e\x99\x2d\xff\xab\x36\x34\x60\xe0\x67\x7b\x25\x19\xfa\xb7\ \x12\x2b\x64\x12\x66\x36\x91\x7b\xc1\x14\x14\xc7\x04\x78\xe5\xcf\ \xc3\xef\x2c\x58\x64\xab\x21\xe2\x92\x76\xe6\x0f\xa2\x8a\x3a\xf2\ \x80\xcd\x78\x87\x18\xf1\x3c\xf2\x78\x0d\x23\x28\x61\x27\xda\x90\ \x71\x78\x52\x0c\x61\x26\x5a\x10\x31\x01\x73\x81\x90\xc5\x42\x9c\ \x80\x44\x70\x3a\xaa\xe8\x56\xfd\xd6\x05\xb6\xff\x98\xce\x02\x9f\ \x7f\xc3\x2d\x4f\xf4\x58\x8f\x2d\x63\x02\x84\x10\xdc\x75\xa9\x33\ \x56\x7e\xd2\xeb\x86\x34\xc5\xd9\xf8\xd4\x2e\x3c\x4c\xfc\x3a\x0a\ \xc8\x22\x83\x04\xd9\x43\x9e\x09\x32\x08\xde\x9f\x88\x1a\xea\x88\ \x88\x48\x11\x11\x51\x43\x8d\x10\xa9\x65\x85\x72\xdd\xc0\xcd\x83\ \x7a\x5f\x25\xdf\xa6\x74\xc9\x2f\xdd\xfc\x56\xd1\x76\xbc\x8b\x5d\ \xff\x5f\x00\x7c\xe2\x4c\x93\xd6\xdd\xaa\xc7\xb0\x5c\x9c\x88\x5b\ \x76\xe3\x13\xc4\xbd\x28\x38\xe6\x84\x88\x2c\x7d\x79\xa1\x50\xb5\ \xfb\x33\xdb\x54\x07\xc8\x4e\x50\x3e\xe5\x25\x7f\x92\x46\xbd\x78\ \x17\x7b\x51\x3d\x54\x00\x5c\x39\x57\xdb\xe3\xcb\xbd\x63\x48\xa7\ \x56\xe2\x97\x5f\xc3\x85\xc4\x0c\xb2\xc7\xb0\xf0\xf8\x9b\xc2\xd3\ \x3c\xd5\x21\x7b\x96\xf7\xa8\x0f\x50\xce\xeb\x9d\xf3\xdf\xbe\x30\ \x5a\xd7\x83\x6e\xec\x41\x84\xc3\x0a\x00\xc4\xef\x78\x59\xc5\x22\ \xc3\xc4\x7b\xee\xc3\xed\xd4\x5a\x90\x68\x18\x01\x49\xa4\x98\xa5\ \xa7\x59\x98\x90\xb0\xb7\xc7\xd6\x1b\x8a\x5a\x5a\xd8\x59\xf5\xea\ \x79\xeb\x7d\x05\x25\x74\x63\x1f\xe2\x91\xf7\x00\xc2\x57\x9d\x1f\ \xbf\x6d\xbd\x76\xe7\x85\xdb\x6e\x11\xbf\x7b\x03\xc9\x63\x94\x73\ \xc4\xd0\x98\xe3\x92\x44\xf6\x34\x53\xce\x0a\x6d\x91\x3d\xfb\x74\ \x2f\x1f\xd1\xde\xc6\xae\xaa\x37\xc6\x8a\x1f\x46\x37\xfa\x7e\xeb\ \x45\x16\xfe\xc6\xa2\xd7\x6f\xb6\xf2\x9c\x29\xee\x0a\x37\xad\x16\ \x6f\x3d\x91\x33\x06\x18\x0d\xd4\xa3\xa3\x26\x41\x25\xc3\xbe\x16\ \x72\x84\x76\xac\xdb\x61\xd3\x3d\x4c\x9b\xca\x43\x7b\xdc\xff\x95\ \x37\xad\xc1\x20\xba\x31\xe0\x10\x8e\x78\x84\x00\xa0\xfb\x4b\x56\ \xcc\xea\xb4\xca\x2e\xe2\xf5\x98\x57\xa0\x18\x89\x47\x2b\x50\x67\ \x7b\x1b\x4d\x84\xd6\x84\x9f\xee\xb7\xe5\x3e\xa6\x77\xf2\xd0\x7b\ \x1e\xb8\x6d\xa3\x1f\x62\x1f\xb6\x63\xf8\xa8\xaf\x12\x00\xa7\x7e\ \xcf\xb7\x9e\xbb\xda\xe6\x4b\x4e\xb3\x26\x3c\x48\xbc\x74\x94\x25\ \x09\x65\x47\x47\x26\xa2\x24\xc8\xb0\xf6\x80\xee\xc7\x98\xda\xc9\ \x5f\x6e\xb2\xf2\xc1\x1d\xd6\xe3\x3d\xec\x40\x11\x3e\xb0\x00\x7c\ \xf2\x87\x9e\x78\xf0\x62\xe7\xdd\x38\xdb\xff\xd4\x1e\x23\xb3\x24\ \x52\x89\x8e\x8a\x04\xb9\x32\xa1\xc9\x9b\xab\xe9\x98\xca\x15\xaf\ \xb8\xf9\x85\x5e\x9b\xb0\x6b\x2c\x25\x68\x98\x00\x7c\x7e\x9d\x9f\ \xdf\x38\x8f\xcc\xc9\x28\x47\x2a\x8e\x8e\x80\xb4\x46\x35\xd5\x31\ \x8b\x49\x29\x2f\xf4\x7a\x05\xfd\xd8\x86\x14\x1a\x2e\x10\xbf\xa9\ \xcb\x6e\x9c\x8c\x92\xa3\x17\x80\x0c\xfa\xab\x5a\xa7\x71\x70\x2b\ \xd7\x4c\x37\xe7\xd1\xdd\x9e\x42\x0a\xc7\x44\x40\xd1\xb2\x74\x94\ \xcc\x0c\x14\x1d\x7e\x06\x02\x80\xf7\x1f\xf2\x1c\x71\x94\x89\xa7\ \xd0\xf7\x06\x9f\x9a\xe2\xa3\xbf\x16\x78\x16\x8e\x9d\x40\xf4\x87\ \x6a\xe8\x40\x09\xb5\xc3\x14\x5f\x43\x8a\x66\xd4\xdf\x47\xa2\x8e\ \x1a\x3a\x19\xa9\x72\x52\xde\x6c\x14\x90\x43\xf5\xd8\xbc\x91\xa5\ \x96\xa4\x15\x74\x62\x04\xa3\x63\x29\xa3\x8a\x22\xb6\x60\x2b\xb6\ \xa1\x84\x14\x65\x8c\x1e\x26\x11\x9d\x54\x2a\x4c\x6d\x72\x16\x9a\ \xc6\xd2\xf8\x0e\xc4\x55\xd8\xa9\xb3\x30\x9d\x58\x44\x05\x00\x59\ \xf4\x63\x1f\x72\x68\x22\xf4\xa3\x17\x27\x12\x3b\x90\xa2\x0e\x80\ \x14\x09\x86\xe9\x9a\x41\xe1\x80\x09\x53\xb2\xa6\xee\x4f\xed\x87\ \xc6\x77\x60\xd0\x9c\x72\x99\x38\x15\x45\x8c\xa2\x8c\x1a\xde\xc5\ \x0e\x44\x42\x4a\xd8\xc0\xce\xa7\xd8\xf6\x24\x7e\x4c\xd8\x84\x22\ \x6a\xc6\xba\x81\x12\xb2\x18\xa2\x6b\x3a\xfd\x65\xfe\x6c\x9a\xdf\ \x43\xf6\xd8\x08\x04\xcb\xea\x29\xa1\x05\x15\xd4\x51\xc5\x66\x0c\ \x12\x72\x84\x3d\xec\x5f\xc7\xe0\x1e\x26\xb7\xd3\xd5\x41\xcf\x6e\ \xb6\xad\x21\xfc\x17\x61\xe7\x21\x57\xff\x0a\x11\x99\x36\x46\xaa\ \x5c\xd0\xee\x42\xe4\x90\x34\x5e\xa0\x6a\x49\xbd\x86\x56\x54\x30\ \x8c\x37\x51\x25\x0c\x52\xde\x40\xff\x26\xa6\x4c\x64\x6b\xd1\x4b\ \x2d\x6b\x5d\x3a\xe9\x49\x1f\xdd\x5d\xf3\x62\x57\x0b\xef\xbe\x4a\ \xdf\xb3\x84\x9f\x11\xfa\x90\xa2\x8a\x80\x36\xaa\x55\xa6\xe5\x9c\ \x8d\x02\x72\x8d\x17\xa8\x5b\x92\x6d\x26\x16\xb0\x17\x6f\x13\x6a\ \x84\xb7\xe9\x7f\x8b\x4c\x4a\x48\xf4\x9e\xf3\x13\xd7\x2d\x7c\xde\ \x9d\x78\x2f\x65\xd3\xfc\x17\x7c\xfa\x73\xbf\xb4\xa8\x90\xd7\x97\ \x96\x79\xeb\x25\x8a\x3f\x22\xbc\x45\xe8\x47\x16\x39\x26\xe4\x39\ \x31\xeb\x74\x63\x83\xdc\xd0\x8f\x7c\xf1\xab\x42\x7d\xb9\x18\x6f\ \x15\xeb\x77\x8b\xf1\x0e\x31\x2e\x17\x87\x3e\x2b\x96\x96\x8a\xe5\ \x65\xe2\xaa\x79\xee\xc1\x45\x38\x1f\x27\xa3\x19\x00\x19\x14\x1e\ \x99\xeb\xaf\xf6\x7f\x4c\xec\x3e\x5f\xdc\x78\xae\x18\x97\x8a\xf1\ \x6e\x31\xfe\xad\xb8\xf3\x22\xb1\x7b\xbe\xb8\xb8\xd5\x65\x68\x6f\ \x6c\x07\x46\x5c\x34\x92\xa2\x42\xd8\xc7\xc8\x2e\x0e\x1e\xa0\xad\ \xc0\xfa\x3e\xcf\x4d\xfa\x37\x9f\xf9\xda\xaf\x3c\x8d\xdd\x78\x13\ \x3b\x50\x02\x40\x0d\xa3\xd7\xbe\xe6\xbb\x53\x5e\xd4\xba\x37\xb5\ \xa6\xa5\x99\xd7\xb6\xb0\xf1\x09\xf4\x30\xa3\x93\x03\x35\x3e\xde\ \x6e\x01\xb2\x8d\x5d\x64\xc1\x67\x43\x8d\xb4\x4c\xf1\x20\xed\x05\ \x7a\x0e\xe8\x5e\xf2\x8c\xbb\x7f\x35\xa0\x1b\x43\xd8\x8b\xfe\x23\ \x2c\xa1\x14\x07\x17\x6f\xb0\xec\x8a\x29\xee\xb9\xf3\x14\x3f\x68\ \xc9\x3a\x6d\xc3\x4f\x99\xdc\x4e\x2d\xb2\x70\xa2\x25\xf8\x3e\x32\ \xa8\x35\xe6\x08\xdd\x6a\x4b\xf1\x3a\x31\xde\x28\x56\xaf\x53\xfa\ \x8b\xd9\x56\xe2\x22\x2c\xc4\x49\x68\xf6\xdb\x93\x20\xff\x9d\x53\ \x5d\xbb\xf9\x5c\x95\x8d\x1f\x11\x5f\x99\x2b\xfe\x62\x8e\x1e\x9c\ \x8a\x09\x8d\x9b\x81\x15\x62\xbc\x45\x5c\x77\xb1\x1f\xe0\x63\xf8\ \x7d\x9c\x86\x36\x04\x1f\x8c\x1c\x26\x3c\x73\xa6\xfb\xf7\xcc\x17\ \x8b\xbf\x0e\x16\xa0\xbd\x61\x02\x80\x93\xb0\x18\x1f\x46\x27\x32\ \x1a\x4b\x1e\xd3\xf0\xbb\x38\x17\x6d\x8d\x9b\x01\x12\x0c\x63\x13\ \x8a\x28\x6b\x3c\x65\xf4\xa3\x8c\x1a\x0e\x3a\x02\xc7\xfd\xef\x36\ \xff\x07\xe2\x88\x5c\xa0\xce\x9a\xc4\x5c\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x2e\x32\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xdb\x00\x43\x00\x04\x02\x03\x03\x03\x02\x04\x03\ \x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ \x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ \x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ \x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00\x43\x01\x04\x04\x04\ \x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ \x12\x42\x6c\x75\x65\x20\x41\x6e\x67\x6c\x65\x20\x53\x77\x69\x72\ \x6c\xff\xc0\x00\x11\x08\x01\x20\x01\x20\x03\x01\x22\x00\x02\x11\ \x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\x01\x02\x05\x00\x06\ \x07\xff\xc4\x00\x3d\x10\x00\x02\x01\x03\x03\x03\x03\x02\x04\x04\ \x05\x02\x06\x03\x01\x00\x01\x02\x03\x00\x04\x11\x12\x21\x31\x05\ \x41\x51\x13\x22\x61\x32\x71\x14\x42\x81\xa1\x06\x23\x52\x91\x33\ \x62\xb1\xc1\xd1\x72\xe1\x15\x24\x34\x43\x53\xf1\x82\x92\xa2\xf0\ \xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x06\xff\xc4\x00\x24\x11\ \x01\x01\x00\x02\x02\x02\x02\x02\x02\x03\x00\x00\x00\x00\x00\x00\ \x00\x01\x02\x11\x21\x31\x12\x41\x03\x22\x51\x61\x04\x71\x13\x32\ \x42\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xf6\ \x3a\x14\xae\xdf\xa5\x74\x5a\x84\x80\x67\xf5\xa2\x45\x83\x10\x14\ \x39\x50\x83\xa8\x57\xde\x6f\x7c\x3c\xad\x7b\x16\x08\xe1\x98\xe4\ \x0d\xea\xd7\x0f\x7b\x79\x27\xb1\x4e\x91\xc1\x63\x81\x4a\x58\xcb\ \xae\x2e\x46\x46\xd4\xcb\x4a\x74\x80\x18\x81\x8e\xd5\xce\xce\x44\ \xc3\x33\xdb\x5c\x8b\x6b\xd8\x90\x29\xdb\x56\x38\xad\x8f\xe1\xeb\ \x48\xa4\x96\xe0\xb3\x65\xed\x70\xf1\x6f\xe7\xbd\x65\xcb\xa2\xfa\ \xdc\x43\x31\xc4\x80\x7b\x1c\xf7\xf8\xaa\x74\x2e\xa1\x2d\x87\x59\ \x81\x67\x38\x5c\xfa\x52\x13\xe0\xd6\x72\x96\xce\x15\xba\x49\x62\ \x4e\x73\x9a\x82\x1b\x1b\x0c\xd7\x5d\x0f\x4a\xe5\xd4\x70\x1b\x6a\ \xbc\x32\x03\x5c\x94\x5b\x1b\xd7\xb7\x71\x9c\x80\x3c\x56\xf5\xbc\ \xd6\x9d\x4a\xdc\xc7\x21\x5d\x64\x63\x71\xcd\x60\xe1\x49\xc1\x00\ \xd0\x3d\x66\xb7\xba\x0d\x1b\x15\xc5\x63\x2c\x3c\xba\x5d\x8b\xd7\ \x7f\x86\xe6\x79\x49\x86\x5c\xaf\xf4\xb1\x27\xfb\x57\x9c\xbf\xe8\ \x1d\x46\x26\xff\x00\xd2\x93\xbf\x2a\x32\x0d\x7b\x15\xeb\x8c\xb1\ \x61\x86\xb3\xe2\x83\x71\xd5\x2f\x25\x1b\x15\xb7\x4f\x20\x02\x6b\ \x78\x7c\x9f\x24\xed\x35\x1e\x41\x3a\x3f\x5a\xcf\xb2\xde\x6c\x0a\ \x66\x2e\x83\x71\xf5\x5e\x5e\x2a\x79\x54\x3a\x9b\xfe\xd5\xb5\x2d\ \xd1\x6c\xeb\x9a\x79\x49\xe7\x2e\x40\x3f\xa0\xa5\x2e\xe6\xd3\x11\ \x27\x00\x78\x1b\x0a\xe9\xfe\x4c\xaa\x68\xb4\x36\xd6\x56\x79\x68\ \x53\x53\x0f\xfd\xc9\xb0\x48\xfb\x0e\x28\x37\x37\x99\x24\x47\xb9\ \x3f\x98\xd2\xd7\x13\x3c\x8d\x96\x3b\x0e\x07\x6a\x0e\xa2\xc4\x84\ \xed\xcb\x1e\x05\x6a\x63\xbe\xcd\xa6\x57\x24\xff\x00\x53\x1a\x5d\ \x08\xfc\x48\x55\xdc\x28\x20\x91\xc6\x6b\x9a\x53\x21\x30\xdb\x9f\ \xfa\xe4\x3f\xed\x47\xb3\x80\x2a\x0f\x03\xf7\xae\xd8\xe2\x8b\x5e\ \x82\xcb\xa8\x72\x30\xc2\xb4\x7a\x04\xe0\xb9\x8c\xf1\x32\xed\xf7\ \xa4\x9b\x06\x45\x5d\xb7\x04\x1a\x1f\x4c\x90\xc6\xec\x3b\xa1\x0c\ \x3f\xde\xb1\xf2\x62\xb0\xff\x00\x4f\x96\x5b\x6b\xd6\x64\x24\x34\ \x6d\xb8\xad\x5e\xbb\x61\x0f\x57\xe9\xdf\x8b\x81\x46\xac\x7b\xc0\ \xec\x7c\xd2\x11\x28\xff\x00\xc7\xb3\x8f\x6c\x8a\x18\x56\x9d\xa4\ \xad\xd3\xaf\xb3\x8c\xc1\x26\xcc\x0f\x02\xb8\x67\x3d\xce\xd6\x3c\ \x05\xf5\xb3\xdb\xce\x54\x82\x08\x3c\xd5\xed\xa7\x0d\xec\x93\x9e\ \xc6\xbd\x97\xf1\x8f\x45\x49\xa1\xfc\x65\xa8\xd4\x8c\x33\xb7\x6a\ \xf0\xf7\x11\x34\x72\x10\x46\x08\xae\x98\x67\x32\x89\x61\xc3\x1b\ \x21\xd4\x99\xda\x8d\x6d\x78\xea\x70\x4d\x29\x65\x75\x8c\x47\x21\ \x38\x1c\x1e\xe2\x98\x96\x2d\x5e\xe0\x46\x4f\x04\x70\xd5\xaf\xed\ \x1a\x50\x5c\xa3\xe3\x7c\x1a\xd0\x70\x9d\x42\xcf\xd1\x94\x81\x22\ \x8f\x6b\x1e\xf5\xe6\x15\x9a\x37\xc3\x0a\xd1\xe9\xf7\x63\x20\x33\ \x7d\x8d\x63\x2c\x3d\xac\x21\x7d\x6f\x25\xad\xc3\x47\x22\x91\x40\ \x35\xb9\xd5\xa0\xf5\xe1\x32\xa9\x2f\x8e\x57\x39\x23\xe4\x56\x23\ \x0c\x1f\x22\xba\xe3\x97\x94\xfd\xa0\x53\x2e\xda\x87\xeb\x53\x0b\ \x67\x63\x57\x3e\x28\x32\x2e\x96\xa7\x40\xd5\x59\x50\x32\x13\xc3\ \x0e\x0d\x42\x3e\x76\x3c\xd5\xea\xca\x15\x46\xd2\x41\xee\x0f\xbb\ \xe6\x9a\xce\x54\x50\x6e\x23\xdf\x58\x1f\x71\x53\x6c\xd9\x5d\x3e\ \x38\xa7\xb0\xca\x39\x0a\x28\xd1\xb0\x75\xc1\xa5\x90\xfb\x6a\x55\ \x88\x39\x15\x34\x0b\x1b\xb4\x12\x1c\x6e\x0d\x32\xf2\xfa\x91\x6a\ \x43\xc7\x34\x90\x93\xce\xf5\x31\xbe\x96\xd4\xa7\x4f\xc7\x9a\xa1\ \xc8\x2e\x08\x20\x37\xf7\xa6\x6f\x42\x5d\x42\x1f\xff\x00\x71\x79\ \xc7\x7f\x9a\xcf\x24\x37\xb9\x76\xf2\x28\x96\xf3\x18\xcf\x91\x52\ \xcd\xf3\x07\xa4\xb0\xb9\x17\x76\x28\x5b\xfc\x68\x94\x24\xbf\x24\ \x70\x6a\xcc\xfa\x06\xdc\xd6\x6f\x4a\x60\x6e\x7d\x54\xc8\x05\x30\ \xfe\x0f\x8a\x7e\x1c\xcd\x37\xf9\x45\x70\xb3\x55\xa3\x56\x84\xe8\ \x2c\xdd\xe9\x79\xcb\x4b\x71\x85\xa3\xce\xd8\x51\x1a\xf3\x50\xa0\ \x42\xbb\x6e\xe7\xf6\xac\x4a\x25\x55\x20\x5c\x9f\x73\x9e\xd4\x36\ \x2c\xe7\x2c\x6a\x0e\xe7\x2c\x72\x4d\x02\xee\xe5\x62\x5e\x77\xad\ \x48\x09\x71\x2a\x42\xb9\x63\x59\x17\xb7\x26\x46\xcb\x1c\x01\xda\ \xab\x34\xf2\x4d\x36\x95\x05\xd8\xf0\xa2\xa6\x54\x86\xcd\x3d\x6b\ \xc6\x0c\xff\x00\x96\x31\x5d\x31\xc7\x49\x43\x54\x66\x8c\xc9\x2b\ \x7a\x51\x0e\xe7\x93\xf6\xa5\x59\xde\xed\xbd\x1b\x71\xa2\x15\xfa\ \x9b\xcf\xc9\xae\x06\xe7\xab\x5c\x12\xcd\xa2\x14\xe4\xf6\x02\x9d\ \x51\x1f\xa6\x21\x81\x71\x12\xf7\xc6\xec\x7c\xd7\x59\x35\x7f\x68\ \x1d\xbc\x4a\xab\xa2\x31\xfc\xb1\xdc\xf2\xd4\x73\x80\x2b\x80\x00\ \x60\x54\x10\x59\xc2\x2f\x26\xba\x5b\x31\x82\xf0\x8d\x11\x3d\xc1\ \x3b\xfd\x29\xf7\x34\xa5\x87\xfe\xa0\xb7\x81\x4c\x75\x77\x58\xd1\ \x2d\x97\x88\xc6\xff\x00\x24\xf3\xfb\x50\xec\x10\x8b\x76\x7e\x35\ \x9d\x22\xb8\xce\xb7\x46\x82\x39\x8e\x4b\x77\x27\xe8\x90\xc5\xfa\ \x56\xfd\xdc\x42\x48\x06\xaf\x15\xe7\x2f\x09\xf4\xe5\x45\x18\x30\ \xb8\x70\x3c\xed\x8a\xde\xb1\xb9\x17\x1d\x3d\x5d\x4f\x22\xb8\xd6\ \x97\xe8\x77\x4b\x04\xa6\xca\xe7\xdd\x0c\x9b\x0c\xf6\xac\x2f\xe3\ \xbe\x86\x6d\xa4\x37\x10\x8c\xc6\xdb\xe4\x76\xa7\xa7\x74\x92\x4d\ \x07\x66\x1c\x56\xb7\x4a\xb9\x8e\xfe\xcd\xba\x7d\xe0\x05\x80\xc0\ \x27\xbd\x63\x29\x70\xbe\x50\xed\xf2\xe9\x10\xe7\xc1\x14\x6b\x2b\ \xa3\x19\xd0\xfb\xa9\xe4\x56\xb7\xf1\x77\x46\x93\xa7\x5e\x91\x8f\ \x63\x6e\xa6\xb0\xd9\x73\xf7\xaf\x46\x36\x65\x36\xcb\x60\xc5\x1c\ \xb0\xea\x56\xf5\x13\xcf\xe6\x4f\xbd\x26\xea\xf0\xc9\xff\x00\xfb\ \x06\x81\x65\x75\x25\xbc\x81\x94\xef\xdc\x79\xad\x7b\x75\x82\xf6\ \x2c\xa6\xcd\xdd\x3f\xe2\xaf\x42\xbd\x3a\xf7\x4b\x69\x62\x74\x9e\ \xc6\x96\xea\x90\xfa\x73\x97\x4d\xd1\xf7\x15\xd7\x76\xb2\x40\xdb\ \xe7\x03\x83\xe2\xba\x39\xf5\x27\xa5\x2e\xea\x7b\xf8\xa9\x27\x3b\ \x8a\x56\xa1\x94\x30\xc1\xa2\x4f\x19\x8d\xbc\x83\xc1\xaa\x56\xfb\ \x40\x1d\x4a\x9a\x24\x4d\x91\x83\xcd\x59\xc6\xa1\x8a\x0b\x02\xad\ \x8a\xcf\x40\xf4\x00\x34\x4e\x07\x63\xc5\x12\x26\xc8\xdf\x91\x51\ \x38\xf6\x83\xdc\x1d\xab\x42\xd1\x1c\xc6\x0f\xc5\x5a\xad\x14\x79\ \x5f\x00\x51\x6d\x6d\xa4\x9e\x5d\x11\x2e\x71\xcb\x76\x15\x37\xa0\ \x1c\x57\x11\x5a\xb0\xda\x5a\x45\x81\x23\xeb\x3d\xc8\xe0\x50\xfa\ \xa5\xad\x9b\xd9\xbc\xd0\x36\x1e\x3d\xf6\x35\x9f\x2e\x46\x7a\xb1\ \x06\x8c\xbe\xec\x63\xbd\x2e\x37\x35\xa5\xd3\xe2\xc6\x24\x61\x9e\ \xca\x3c\xd6\xf7\xa9\xb1\xa1\x64\x86\x2b\x75\x84\x0f\x7b\x6e\x6b\ \x52\x15\x10\xc2\x14\x7d\x5d\xe9\x7b\x08\x3d\x21\xea\x3e\xee\xdf\ \xb5\x1a\x69\x12\x24\x2e\xec\x00\x15\xe5\xca\xee\xb4\xb6\x74\xfb\ \x8e\x33\xf3\xda\x95\x9a\xed\x03\x15\x07\x26\xb3\x7a\x8f\x54\xf5\ \x9c\xa4\x1c\x77\x34\xbc\x0d\x34\xaf\xe9\xc2\xa5\xdc\xf7\xf1\x5b\ \xc7\x0f\xca\x6d\xa5\x71\x7a\xb1\xa7\xb8\xee\x78\x14\xb2\x43\x73\ \x7c\xda\xc8\xf4\xe3\x1c\xb3\x6d\x9f\xb5\x31\x6f\xd3\xe1\xb6\x4f\ \xc4\x5f\x48\x19\x80\xce\x93\xc0\xac\xee\xb3\xd6\x1a\x5c\xc7\x6f\ \xed\x4e\x36\xef\x5b\xc6\x6e\xf0\x0d\x79\x7f\x69\xd3\xa2\x31\x5a\ \x80\xd2\x70\x5e\x91\xb2\xb4\xb8\xea\x52\x9b\x8b\x97\x2b\x10\x39\ \x66\x6f\xf6\xa2\x74\xae\x94\x65\x5f\xc6\x5e\x9d\x10\x8d\xc0\x3c\ \x9a\x62\xf2\xef\xd6\x22\x18\x57\x44\x2b\xc2\x8e\xf5\xbe\x27\x18\ \xa2\xd3\x34\x6c\xa2\xde\xd9\x74\x42\xbf\xff\x00\x5f\x26\xae\x83\ \x02\xa9\x6e\xbe\xc2\x48\xde\x99\xb4\x4d\x72\x80\x78\x15\xac\x35\ \x26\xc0\xd9\x4a\xe3\x3b\x66\x8d\xd1\xd4\x35\xc9\x73\x8c\x2e\xf9\ \x3c\x55\x6f\x94\x89\x08\x1b\xed\xb0\xab\x74\xdf\x74\x72\xc4\x83\ \x2e\xea\x42\xfc\xd6\x7e\x4b\xb8\xb1\x99\x7a\xfa\xe6\x24\xf2\x77\ \x3f\xae\xf4\xef\x4f\x02\x6b\x06\x88\x11\xad\x0e\xa0\x3b\x91\x49\ \xde\xc4\xc9\x21\x6c\x1c\x1f\xda\xa9\x04\xcf\x14\x81\x91\x88\x23\ \xb8\xa5\x9b\x9c\x23\x5d\xd9\x65\x55\x98\xf3\xa4\xa4\xa3\xc7\x83\ \x51\xd1\x6f\x0d\xab\x35\x9c\xa7\x83\x95\x3e\x68\x76\xb3\xfa\xe7\ \x5c\x60\x2c\xc0\x7b\x93\xb3\x8a\xa5\xf4\x62\x78\x43\xc4\x08\x64\ \xfa\x47\x71\xf1\x5c\xf5\xea\xa8\xf7\x53\x7f\xe7\x0e\x0e\x0f\x22\ \x9d\xb7\x94\x9d\x2e\xa7\x12\x2e\xe3\x1d\xeb\x06\x2b\x86\x79\x57\ \x5f\x22\xb6\xd2\x26\x0a\x1d\x6a\xd9\xc2\x35\xae\x84\x3d\x73\xa5\ \x35\xbc\x98\x13\x28\xf6\xe7\xcd\x7c\xff\x00\xa9\xda\x49\x6d\x74\ \xf1\x3a\x90\xca\x71\x5e\xb5\x24\x78\xe4\x13\x44\x70\xc3\x91\x55\ \xfe\x26\xb5\x8b\xa9\xf4\xf1\x7b\x12\x8f\x59\x3f\xc4\x03\xfd\x6b\ \x9e\x3f\x4b\xaf\x4b\xdb\xc4\x91\x93\xe0\x8a\x2d\xbc\x8f\x1b\xeb\ \x8c\xe0\xaf\x22\xa6\xe6\x32\x18\xb6\x31\xbe\xff\x00\x06\x85\x93\ \xc8\xd9\x85\x77\x47\xa1\xe9\xd7\xb0\x5e\xc5\xe9\x5c\xe3\x51\x18\ \xcd\x07\xa9\x74\xb7\x84\x17\x8f\xdc\xb5\x8f\x0b\x1c\xfa\x91\xec\ \x47\x22\xb7\x3a\x47\x55\xca\xfa\x53\x6e\xbc\x1c\xf6\xac\x59\x67\ \x31\x59\x8a\xe5\x46\x87\x19\x5f\x07\xb5\x52\x54\xc7\xb9\x4e\x54\ \xfe\xd5\xb7\xd4\x6c\x22\x99\x3d\x58\x4f\x23\x3b\x76\xac\x89\x63\ \x92\x16\xdf\x8f\xd8\xd5\x99\x4a\x00\x71\x50\xca\x18\x55\xe4\x50\ \xe0\xe3\x62\x7b\x52\xec\x25\x8c\xf3\x91\x5b\x44\x10\x55\xaa\xe4\ \x87\x88\x82\x77\xc5\x41\x91\x58\x7b\x81\x1f\x35\x41\xb9\xd2\xa7\ \x24\xf3\x8e\xd5\x06\x85\xad\xbc\xf7\x0e\x12\x30\x4f\x93\xd8\x56\ \x86\x16\xda\x1f\xc3\xc4\x76\x1b\xbb\x7f\x51\xa2\x4d\x74\x74\x68\ \x8d\x44\x6b\xe1\x6b\x3e\xea\x75\x8d\x79\xdf\xb0\xac\xf3\x45\x2f\ \x67\x23\xd8\x9c\x9f\xda\x84\x87\x45\xb3\x26\x7f\xc4\x60\x4f\xe9\ \xff\x00\x7a\xa2\xe5\xdb\x53\x72\x7f\x61\x57\x0a\x65\x93\x0a\x36\ \x1b\x7e\x95\xad\x02\x59\x45\xad\xb5\x1e\x05\x7a\x0e\x97\x6b\xa0\ \x09\x24\x1b\xf6\x1e\x28\x3d\x16\xc8\x2a\x89\x64\x18\x03\xe9\x15\ \x6e\xb3\xd5\x62\xb3\x8c\xa2\x1d\x52\x9e\x14\x57\x2c\xb2\xf2\xba\ \x8a\x6b\xa8\x5e\xc1\x69\x09\x79\x1c\x7c\x0a\xf3\x5d\x43\xa8\x4f\ \x7d\x26\x01\x2b\x1f\x81\x41\x93\xd7\xbc\x98\xcd\x70\x4e\xfd\x8f\ \x02\x8a\x88\x89\xc6\xf5\xac\x30\x90\xb5\x58\xd4\x28\xda\xb6\x6c\ \x67\x4b\x2e\x91\xeb\xae\x4b\x37\x35\x94\xda\x48\xd8\x60\x8e\xd4\ \x79\x98\xc9\xd1\x1a\x34\xdd\xa3\x6c\x91\xf1\x56\xcd\xa1\x4b\xfb\ \xfb\x9b\xd9\xb1\xb9\xcf\x0a\x2b\x47\xa1\xf4\x75\x8d\x3f\x17\x7d\ \xed\x0b\xb8\x53\xda\xa9\xfc\x2d\xe8\xc3\x69\x35\xcc\x8a\x09\x43\ \xb5\x57\xa8\x5f\xcf\x74\x70\xcd\xa5\x3b\x28\xe2\xb5\x95\xbf\xeb\ \x8a\x89\xd5\xaf\x8d\xcb\xfa\x68\x34\xc2\x9f\x48\xf3\x4b\xda\xa8\ \x2d\x93\xbd\x06\x8b\x6a\x48\x93\x03\xbd\x35\xa8\x8d\x28\xc0\x10\ \x1c\x73\x46\xb5\x1a\x63\x04\x77\xe6\x87\x18\xfe\x41\xc6\xe4\xd5\ \xa1\x60\x23\xd2\xd9\x07\x3d\xc5\x49\xce\x22\xf3\xa3\x3b\x7a\x88\ \x77\x5e\xd4\x04\x56\x57\xf5\x21\xdb\x07\x3a\x7b\x8f\xfb\x53\x0a\ \x7b\x83\x50\xe8\xaf\xee\xc6\x0f\x91\x49\x65\x9a\xa2\x4d\xcc\x17\ \x63\x4d\xca\x80\xc7\x6d\x63\x9f\xd7\xcd\x23\x7f\xd3\x9e\x2f\x7c\ \x64\x32\x1e\x08\xe2\x98\x91\x3f\xf9\x54\x91\xfd\x4b\xfe\xf5\x30\ \xc9\x24\x1b\xaf\xba\x33\xb1\x07\x8f\xfb\x54\xf1\xb8\xf4\x32\x51\ \x9e\x37\x04\x12\xac\x0d\x69\x5b\x5c\x89\xfd\xf8\xc4\xa0\x7b\xc0\ \xfc\xc3\xcf\xdc\x53\x12\x5a\x5a\x5e\xc7\xa9\x1b\xd2\x93\xc1\xe0\ \x56\x6d\xd5\x9d\xd5\x9c\x81\x8a\xb6\x01\xc8\x71\xc5\x5d\xcc\xb8\ \x14\xbb\x88\x47\x78\xa5\x7e\x97\x20\x8a\xf5\x16\xc8\x7f\x0a\xa0\ \xef\xb5\x79\xf9\xff\x00\x9b\x6d\x1c\x9a\x70\x43\x83\x8f\xd6\xbd\ \x1c\x8e\xb0\xdb\x2e\xa3\x8d\xaa\x77\xc2\x95\x99\x74\xb6\xa5\xe3\ \xbd\x56\x29\x0c\x32\x6b\x4d\xd5\xb6\x65\xf3\x4b\x7e\x2c\x89\xcf\ \x74\x26\x99\x5c\x32\xec\x72\x0f\x15\x73\xc3\x49\x19\x3d\x72\xc1\ \x41\x37\x10\x8c\xc6\xdf\x50\xac\x29\xe2\x29\x21\x1f\xd8\xf9\xaf\ \x5e\xe0\xa8\x2a\x46\x54\xf2\x2b\x17\xaa\xd9\x7b\x48\x51\xf4\xee\ \xb5\x31\xba\xe2\xab\x20\x67\x3a\xd3\x66\x1f\xbd\x11\x18\x91\xea\ \x47\xed\x23\xea\x1e\x28\x64\x10\x72\x39\x15\x28\x48\x3e\xac\x78\ \xd4\x39\x1e\x6b\x5d\x23\x4f\xa6\x75\x16\x88\x81\xfd\xd4\xf7\xad\ \x5d\x16\xf7\xb1\xe6\x2d\x21\x8f\x28\x78\x35\xe7\x30\xb3\x21\x92\ \x2d\x98\x7d\x49\xe3\xed\x44\xb4\xba\x78\xdc\x64\x90\x47\x7a\xc6\ \x58\xef\xa5\xd9\xcb\xbb\x07\x47\x3a\x46\x0f\xf4\x9f\xf6\x34\x9b\ \xa1\x53\x86\x04\x1f\x06\xb6\xed\xaf\xe3\x99\x04\x77\x2a\x08\xfe\ \xaa\xbc\xb6\xaa\xf1\xe6\x16\x59\x13\xfa\x58\x03\x52\x65\x67\x14\ \xd3\xce\xb4\x28\x4e\xe9\x9a\x95\x8c\x28\xd9\x40\xad\x76\x86\x04\ \x38\x7b\x55\xcf\xfd\x47\xfe\x6a\xd1\x0b\x35\x1b\xda\x29\x3f\x3b\ \xff\x00\xad\x6b\xcb\xf4\x8c\xeb\xcb\xa0\x9e\xd5\xdc\xd2\x63\x53\ \x36\xa6\xdc\x9e\x05\x46\x34\xee\x72\x58\xd1\x10\x15\x1f\xe7\x6d\ \xbe\xc2\xb4\x2c\xa0\x9f\x62\xee\x4f\x26\xb6\xba\x3f\x4f\x0a\xa2\ \x59\x46\x07\x20\x1a\x17\x44\xb1\x1a\x7d\x69\x86\x00\xdf\x7a\xa7\ \x58\xea\x85\xc9\xb7\xb5\x60\x14\x6c\xcf\x5c\xf2\xb7\x2b\xe3\x14\ \x6e\xb5\xd5\xc4\x47\xf0\xf6\x9e\xe7\xe0\x91\xc0\xac\x84\x4c\x31\ \x92\x66\xd6\xe7\x92\x6a\x8b\xa5\x3e\x9d\xc9\xe5\x8d\x76\xe4\xf9\ \xad\xe3\x8c\xc6\x20\xad\x22\x8f\x9f\xb5\x74\x77\x01\x5b\x3e\x98\ \xa1\x84\x63\x53\xe9\x9a\xd0\x60\xb4\x32\x6e\x87\x4b\x78\x35\xd1\ \x3b\x45\x20\x61\xfa\x8e\xc4\x52\xc5\x18\x76\xa9\x49\x19\x76\x3b\ \x8f\x06\xa5\x0d\x5a\xca\x96\xd3\xba\xe3\xf9\x17\x1b\x7f\xd0\x6a\ \x92\x21\x47\x28\xdc\x83\x55\x52\x8e\x84\x1d\xd4\xec\x47\x71\x50\ \x5e\x50\x00\x75\x12\x60\x60\x30\x38\x3f\xad\x20\x9a\xea\xa9\x73\ \x9f\xa4\x2f\xdc\xe6\xaa\xf2\xf6\x5d\xf3\xe3\x6a\xa0\xe9\x2c\x88\ \x76\x72\x28\xa9\xd4\x25\x5d\xb5\xa9\xfb\xd0\x2d\x2c\xae\x6e\x9b\ \xd8\xa4\x0f\x34\xf1\xe9\x30\x42\x99\xb8\x98\x06\xac\x5b\x8a\xba\ \xde\xf9\x59\x80\x75\xd0\x4f\xe6\x1c\x7e\xa2\xb5\xba\x5c\xd1\x33\ \x7a\x52\x28\x3a\xb8\x3e\x6b\x15\x6d\xed\xd9\x75\x42\xe2\x48\xf5\ \x69\x24\x0c\x15\x34\x78\x01\x82\x71\x10\x3e\xd2\x35\x21\xf1\xe4\ \x52\xea\xc1\xad\x75\x6d\xa3\x2d\x1e\xe9\xdc\x1e\xd4\x9b\x46\x41\ \xd5\x16\xc7\xba\xf9\xad\x4b\x59\x3d\x58\x15\xfb\x91\xbd\x0e\xea\ \xd8\x37\xba\x31\x83\xdc\x79\xa9\x8e\x76\x71\x4d\x33\x15\x03\x36\ \x13\xf9\x6f\xe3\x38\xfe\xd5\x75\x92\xee\x0c\x86\x52\x57\xbe\xa1\ \x90\x6a\xd2\xc6\xad\x90\xc3\x07\xcd\x42\x2c\xf1\x9c\x47\x2e\xdf\ \x7a\xde\xb1\xa8\xe8\x90\x4f\x22\x96\x41\x1c\x4a\x43\x39\x19\xc0\ \xc1\xff\x00\xb5\x5b\xaa\xde\x7e\x26\x5c\x26\x42\x0e\x07\x9a\x1c\ \xe2\x77\x04\xc8\xd9\x03\xb5\x2f\x82\x4d\x6f\x0c\x64\xe4\x76\x68\ \xb6\xd3\xb4\x67\x19\xdb\xc5\x0c\x21\xc5\x54\xec\x6b\x5b\xd8\xd3\ \x47\x59\x13\x3b\x1a\xa4\xb1\x87\x5c\x1f\xd2\x92\x8a\x46\x43\xb1\ \xa6\xa1\x9c\x30\xc1\xae\x79\x61\xee\x11\x87\xd6\xad\x3d\x19\x7d\ \x45\x1e\xd3\xcd\x67\xee\xac\x19\x7f\x51\xe6\xbd\x5d\xf4\x0b\x34\ \x2c\xa7\x7c\x8d\xab\xcd\x5d\x44\x62\x98\xa1\x18\x19\xa9\x39\x80\ \x7e\xe0\x44\xd0\x9c\x30\xe6\x8c\x81\x2e\xd0\xbc\x60\x2c\xa3\xea\ \x4f\x3f\x22\x80\x32\x8c\x58\x7e\xa2\xac\xca\x75\x09\xa0\x38\x61\ \xbe\xd5\x9e\x95\x68\xa5\x78\xce\x37\x23\xb8\xf1\x5a\x16\xb7\x5e\ \xd0\x51\xc8\xfb\x52\xf1\x7a\x5d\x41\x3d\xb8\x8e\xe4\x72\x0f\x0f\ \xff\x00\x7a\x59\x95\x92\x42\xa4\x14\x71\xcd\x5e\xd1\xb2\x6e\x19\ \xc6\x19\xb3\x54\x67\xf9\xac\xe8\xee\x99\x76\x90\x03\x8a\xe9\xae\ \x98\x8d\x09\xde\x9a\x02\x4d\x8f\xa8\xe3\x7f\xca\x2b\x4b\xa3\x59\ \x7a\x8d\xeb\x4b\xb2\x2e\xfb\xf7\xa1\x74\xbb\x36\xb9\x93\xd4\x7d\ \xa3\x5a\x27\x56\xbf\x04\x7e\x16\xd8\xe1\x06\xc4\x8a\xcd\xb6\xdd\ \x45\x4f\x59\xea\x1e\xa1\xfc\x35\xb1\xd2\x83\x66\x61\xde\xb3\x94\ \x60\x60\x0a\xe4\x5e\xc2\x89\x1e\x95\x18\xc1\x63\x5a\x92\x63\x11\ \x09\x19\x3d\xa8\xa9\x1a\x2a\x92\xf2\x2a\xe2\xb8\x25\xc3\x0c\x05\ \x20\x1f\x1b\x55\xe2\xb1\x62\x32\xd5\x2e\x4a\x13\xcb\x18\xda\x35\ \x67\x3e\x78\x15\x46\x9a\x61\xc4\x48\x3f\xbd\x30\x62\x0b\xb2\xf0\ \x2a\x0a\x8a\x9b\xd8\x42\xe2\xea\xe2\x35\xd5\xe9\xa9\x03\xe2\xaf\ \x65\x77\x1d\xda\xee\xba\x1b\xef\xb5\x1a\x78\xc3\x29\x04\x67\x35\ \x94\x0b\xf4\xee\xa0\x1c\x2e\xa8\x89\xf7\x29\xaa\x8d\x57\x89\xd1\ \xb6\x06\xaa\x59\xf8\x24\xd6\xad\xb4\x31\x5c\x40\xb2\xc6\x75\x44\ \xe3\x2b\xe4\x51\xbf\xf0\xd4\x2c\x08\x62\x45\x4f\x39\xed\x74\xc5\ \x48\xde\x43\x80\x39\xad\x6e\x99\xd2\x81\x02\x49\xb6\x14\xed\xbd\ \xac\x36\xe9\xa9\x80\xda\x94\xea\x9d\x4c\x05\x29\x19\xc0\x1d\xeb\ \x37\x2b\x97\x10\x1e\xfa\xfa\x1b\x48\xbd\x38\x30\x08\x1d\xab\x0a\ \x7b\x89\xef\x27\x08\xb9\x25\x8e\x00\xf3\x41\x96\x47\x9a\x4c\x0c\ \x9c\x9d\x85\x6f\x74\x4e\x9e\x2d\x13\xd5\x94\x03\x2b\x0f\xff\x00\ \x51\x5a\xd4\xc6\x1d\xa6\xde\xd1\x6d\x6d\x62\xb6\x1b\xbc\x8e\x0b\ \x7e\x95\x5e\xa6\xbe\x93\x46\x41\xfa\x1c\x53\x76\x2d\xeb\x5d\x1b\ \x83\xc0\xf6\xc7\xf2\x3b\x9a\x57\xae\x36\x5b\x1d\xcb\x8a\x98\xf6\ \x56\xaf\x40\x60\x49\x43\xc0\x6a\xd6\x9e\xde\x32\xd8\x56\xd2\xde\ \x0d\x63\x74\x13\x8b\x96\x1f\xe6\x14\xff\x00\x5e\x94\xc7\x26\x54\ \xef\x59\xca\x6f\x20\x2b\xdb\x4d\x4d\xc6\x97\xfd\x8d\x21\x2c\x6d\ \x1b\x69\x61\x83\x4d\xda\xf5\x13\xb2\xcc\xba\xbc\x1a\xee\xb6\xca\ \x66\x4c\x0c\x7b\x73\x57\x1b\x65\x29\x33\xf4\x63\xcd\x04\xa6\xf4\ \x62\x73\x55\x66\x55\x5d\x4d\xc0\xfd\xeb\xa4\xa8\xa1\x42\x3e\xd4\ \x19\xd7\x1b\xd5\x65\xbc\x19\xc6\xa0\x3e\x06\xf5\x45\x9d\x5f\x87\ \x06\xb7\x05\x80\xc9\xc5\x48\xca\x9f\x91\x55\x15\x7d\x61\x97\xdc\ \x37\x15\xbd\xe8\x33\x6f\x28\x6f\x6b\x56\x77\x5f\x80\x16\xcf\x91\ \x45\x49\x01\x3e\xd3\xc5\x57\xa8\xbb\x49\x6e\x7b\x90\x2b\x3a\x97\ \x98\x31\x88\x38\xdf\xea\x5d\x8d\x44\x6d\xe9\x36\x47\xd2\xdf\xb5\ \x16\x61\xa5\xd5\xff\x00\x2b\x8d\xfe\x0d\x0a\x40\x06\x57\xb1\xac\ \x71\x44\xce\x85\x48\x9e\x23\x82\x37\xda\x99\xbe\x90\xcd\x65\x6f\ \x72\xc0\x07\x6c\xa9\x3e\x71\x49\x96\x22\xd0\x8c\x9d\xce\x05\x31\ \x76\x34\xac\x36\xe3\xf2\x26\x4f\xdc\xd6\x62\x82\xea\x59\xc7\xda\ \xb8\xe1\x06\x2a\xcc\xc0\x0a\xa2\xee\x75\x37\x02\xb6\x8d\x1e\xa7\ \x76\x12\x3f\xc2\x5a\xec\xa3\x66\x23\xbd\x25\x1a\x66\xaa\x4a\xa0\ \xcb\x1a\x19\x92\x47\x38\x5f\x68\xa9\x8e\x1c\x70\x1c\x55\x88\x0f\ \xe6\x48\x17\xe2\x89\x14\xf6\xa8\xfa\x63\x5d\x44\xf7\xac\xe2\xb8\ \x1b\x9a\x7f\xa3\x59\xfa\x8f\xea\xb0\xf6\x8e\x2a\xe5\x84\x93\x75\ \x5a\x70\x7b\xd3\x56\x30\x29\x7b\xc9\x80\x3e\x9a\x77\xa3\x5f\x4e\ \x21\x8b\x0b\xfa\x0f\x35\x94\xcc\xcc\xc4\x93\x96\x3c\x9f\x15\xc1\ \x45\x9a\x5d\xb4\x21\xff\x00\xa9\xa9\x37\x9b\x0d\xb1\x62\x3c\xd4\ \xdc\x3e\x7f\x96\x9c\x77\x35\xd6\xf1\x99\x1c\x46\xbf\xad\x75\xc7\ \x1d\x4d\xd4\x5e\x39\xc3\x6c\x4d\x52\xfa\x11\x2c\x7f\x15\x79\xed\ \xd1\x49\xf4\xd8\x92\x3c\xd5\x23\x90\xee\x8f\x4e\xfa\x43\x5f\xc2\ \x73\x98\xcb\x59\xc8\x76\x3b\xa5\x6f\xc9\x30\x86\x02\xc7\xb5\x79\ \x3f\x74\x53\xac\x89\xb1\x53\x90\x6b\x7d\xa6\x17\x9d\x33\xd4\x53\ \xbe\x37\x1e\x0d\x73\xca\x72\xb0\xaf\x52\xea\x0c\xeb\x8c\xe0\x78\ \xac\xb9\x1d\xa4\x7e\xff\x00\x02\xba\x7c\x99\x48\x27\x35\xb5\xd0\ \xfa\x68\x8a\x31\x75\x70\x32\x4f\xd0\xb5\xbe\x31\x88\xb7\x44\xe9\ \xe2\xdd\x44\xf3\xae\x64\x3b\xaa\x9e\xd4\xdd\xf4\x85\xcf\xe1\x90\ \xfb\xdf\x77\x3f\xd2\x2a\xd7\x53\x7a\x30\x99\x5b\x77\x3b\x20\xa3\ \x74\x0b\x12\x75\x5c\x4f\xbf\xe6\x62\x7b\x9f\x15\x8b\x7d\xd5\x5a\ \x08\xc4\x2a\x18\x8c\x05\x4d\x87\x8a\xc8\xea\x04\xc9\x77\x12\x9e\ \x4b\x67\xf7\xad\x7e\xa3\x27\xb4\x81\xf9\x8e\x6b\x12\x59\x14\xf5\ \x20\x49\xd9\x76\xad\x61\xf9\x2b\x6b\xa2\x3a\xac\xe4\x9d\xf7\xcd\ \x37\xfc\x40\xa4\x95\x90\x6e\xad\xde\xb1\xe3\x79\x23\x6d\x69\xc7\ \xc5\x3b\x1f\x53\x62\x9e\x9c\xf1\x07\x5f\x9a\x96\x73\xb8\x01\x57\ \x77\x2e\x72\x4e\xe0\x62\x8c\x12\xda\xe7\xff\x00\x4e\xc6\x37\xfe\ \x86\xe0\xfd\x8d\x01\x83\x23\x15\x60\x41\x1c\x83\x52\x71\x4a\x87\ \x65\x45\xd4\xdc\x0a\xcf\x9a\x76\xba\x93\x0a\x48\x40\x71\xff\x00\ \xd5\x4f\x57\x9c\xed\x0a\x1d\xcf\x34\x95\xc4\xde\x92\x7a\x51\xf3\ \xdc\xd7\x44\x30\xf3\xc5\x11\xd2\x8b\xab\x1c\x81\x54\x33\x5b\xbf\ \xf8\x88\x50\x9e\x0d\x67\xe4\xe6\x88\x92\x63\xda\xfe\xe5\x34\xd0\ \x7d\x43\xae\xf1\xbe\xb5\xf1\x57\x8e\x65\x62\x41\xf6\x91\xd8\xd2\ \x2a\x5e\x1f\x7c\x4c\x4a\x78\xf1\x4c\x45\x2c\x77\x03\x0d\xed\x6f\ \x35\xad\xd8\x2d\x78\x8d\xfe\x2c\x5c\x8e\x7e\x6b\xad\xae\x16\x54\ \xd2\xdb\x37\x71\x52\x1d\xe2\x3a\x64\x19\x07\x83\x4a\xde\xa0\x8d\ \xc4\x91\x9f\xaa\xac\xfd\x0a\xdf\xa0\x54\x75\xf0\x72\x29\x69\xdb\ \x6c\xf7\xa2\xdd\x39\x7c\x67\xb9\x19\xa0\xbf\xba\x4c\x76\x1b\x9a\ \x82\x60\x4d\x52\x47\x19\xe1\x7d\xed\xf6\xab\x4d\x2f\xa9\x2b\xca\ \x76\xd4\x76\x15\xc8\x74\xdb\x96\xe1\xa6\x3f\xd9\x68\x5f\x51\xf8\ \xa9\x04\x8f\x73\x64\xf0\x29\xab\x0b\x57\xb9\x90\x6d\x84\x1d\xea\ \x96\x56\xed\x71\x28\x55\x04\x28\xe4\xd3\xbd\x42\xe5\x2d\xe1\x16\ \xd6\xfc\xfe\x63\x53\x2b\x7a\x9d\x8c\xc6\x80\x86\xfe\x63\x64\xd4\ \xec\xa3\x15\x53\x29\x66\x21\x01\x63\xf1\x52\x90\x3b\x90\x65\x27\ \x1f\xd2\x0f\x3f\xad\x76\xf2\x98\xf6\x22\x22\x25\x98\x20\xdf\x7d\ \xf1\x5b\x22\x68\xed\xe1\x09\x8d\xf1\xf4\x8a\x42\x2d\x31\x02\xb1\ \x28\x51\xe1\x7f\xe6\xa5\x62\x67\x7d\xff\x00\xb0\xae\x19\xe5\x72\ \xab\x13\x23\xb4\xf2\x6a\x24\xf8\xa1\x5d\x48\x10\x7a\x69\xc9\xe6\ \x8d\x78\xc2\xdd\x74\x29\x05\xcf\x6f\xe9\xa4\xcf\xb4\x12\x77\x26\ \x98\x63\xb2\xa0\x0c\x6c\x37\x26\x9e\x44\x16\xd6\xf8\xff\x00\xdc\ \x7e\x7e\x2a\x3a\x64\x01\x54\xdc\xcb\xc0\xfa\x73\x55\x91\xfd\x49\ \x4b\x53\x2c\xbc\xae\xa0\x90\x36\xde\x83\x71\x16\xa1\x90\x37\x14\ \x65\xae\x62\x01\xc1\xa2\x14\x53\xa9\x74\xb1\xc1\x1c\x53\x3d\x2a\ \xe4\xdb\xcc\x63\x73\x88\xdf\x63\xf1\x43\xb8\x8b\x57\xb9\x79\x14\ \x0c\xe7\x63\xc8\xa6\xb6\x18\xea\x11\xfa\x57\x59\x1b\x82\x72\x0f\ \x9a\xf4\x76\x72\xa4\xb1\x44\xe3\xe8\xf4\xc6\x3e\x3c\xd7\x9d\x8d\ \xfd\x7b\x7f\x49\xcf\xbd\x07\xb4\x9e\xe3\xc5\x3d\xfc\x3b\x71\x84\ \x30\x31\x39\x53\x95\xfb\x77\xa9\x79\x8a\xd0\xb0\x88\xf5\x0e\xa7\ \xea\x6f\xa1\x5b\x08\x3c\x0f\x35\xe8\x2f\x15\x61\xb4\x58\xa3\x18\ \x07\x6a\xc9\xfe\x17\x2b\x14\x97\x08\x4e\x19\x4e\x40\xf2\x0d\x6c\ \x48\x16\xe6\x15\xd2\xf8\x22\xb9\xe5\xda\xb0\xaf\x89\x69\x88\xe0\ \x0d\x85\x65\xbd\x9b\xb3\x93\xa8\x57\xa6\xba\xb7\x82\x35\xd7\x70\ \xe8\xa0\x56\x55\xef\x57\xb3\x84\x14\xb5\x84\x48\xc3\xf3\x37\x15\ \xd3\x1b\x7d\x25\x20\xb6\x57\x24\x7b\x5c\xfe\x99\xa1\xcf\x15\xd4\ \x1f\x51\x6a\xb4\x97\xb7\xf7\x5c\x48\x51\x3e\x3d\xa2\xac\xa9\x70\ \xd0\xe2\x59\x88\x4f\xea\x6d\x87\xef\xcd\x6b\xae\xc0\x6d\x6e\x24\ \x49\x41\xd6\x70\x4d\x6a\x5d\xdc\x0d\x3e\xa3\x9d\xca\x8c\x9a\xc9\ \x2b\x00\x7c\x25\xca\x16\xed\x9c\xe0\xfe\xb8\xa1\xde\xdc\x4a\xcf\ \xa1\x86\x9c\x72\x29\x64\xb5\x13\x2c\xd9\x99\xa6\x3c\x9d\x80\xa5\ \xc0\x69\x1f\x61\x92\x6b\x91\x4b\xb6\x33\xfa\xd3\xd6\x6b\x1a\x0c\ \x0c\x13\xe6\xb4\x16\xfc\x14\xf8\xc8\x23\x8a\x0a\xfb\xbd\xa7\xea\ \x1f\xbd\x6d\x0d\xd6\xb3\xfa\x9c\x1a\x64\xf5\x54\x60\x37\x38\xec\ \x6a\xd9\xa0\xbc\x52\x14\x3e\x47\x71\x52\xe5\x35\x6a\x4c\xa9\xa1\ \x33\x31\x23\xda\x09\xff\x00\x5a\xbc\x70\xcd\x21\xf6\xae\x91\xe4\ \xd4\xd6\x83\x96\xd3\x89\x07\xa7\x20\xcd\x06\xe8\xe2\x3d\x3f\xe6\ \xa0\xdb\x6b\x8e\xf0\x23\xf3\x44\xbd\x61\xab\x63\xc6\x4d\x27\x14\ \x2f\x21\xf7\x6f\xd8\x55\x61\x5d\x6e\x01\xfc\xdb\xb1\xf0\x2a\x1c\ \x82\xd8\xf2\x72\x6a\xed\xec\x88\x8f\xcd\x26\xe7\xe0\x76\x15\x28\ \x89\x9b\x5c\x9b\x6c\xa3\x65\x1e\x05\x5e\xda\x17\x9a\x41\x1a\x0f\ \xbd\x52\x18\xd9\xdc\x2a\x8c\x93\x5a\x2e\xc9\x61\x6f\xa5\x77\x95\ \xbf\x6a\x96\xe8\x4d\xd4\xc9\x65\x07\xe1\xe1\x23\xd4\x23\xdc\x7c\ \x56\x69\x6c\x1c\xb1\xc9\x27\xfb\xd4\x3b\x9c\xeb\x73\x96\x35\x54\ \x0c\x5b\xd4\x6d\xb0\x72\x2b\x58\x60\x1b\x8a\x10\x83\x03\x6a\xb8\ \x45\xce\xfb\xfd\xe8\x2b\x70\x73\x82\x06\x0d\x31\x19\x57\x5d\x42\ \xb9\xd9\xa5\x12\xde\x03\x23\xe9\x50\x07\xfb\x54\xde\xdd\x43\x6d\ \x98\x20\x21\xe6\xc6\xed\xd9\x6a\xf3\x49\xe8\x74\xa9\x25\x41\xee\ \xc7\x35\x93\x6e\xa0\x46\x0f\x2c\x77\x27\xcd\x31\xc7\xca\x8b\xe3\ \x72\xcc\x72\xc7\x92\x68\xb6\x56\xe6\xe6\x7f\xf2\xaf\x35\x48\x91\ \xa6\x94\x46\x9c\x9a\xd5\x40\x96\xb6\xba\x57\xb0\xdc\xf9\xad\x7c\ \x99\x6a\x6a\x12\x16\xea\x72\x84\x41\x12\xed\x8a\x52\x32\x58\xe9\ \x15\x4b\xa9\x0c\xb3\x12\x3c\xd3\x08\x12\xd6\x0d\x6f\x82\xed\xc0\ \xac\x4e\x20\xb4\x8c\xb0\x45\x96\xdd\x8f\x02\x92\x77\x67\x6d\x44\ \x9d\xeb\xa5\x76\x96\x42\xef\xdf\x81\x4e\x74\x9b\x07\xb9\x94\x0c\ \x1c\x7f\xa5\x6e\x4d\x4d\xd4\x29\x1c\xac\xbf\x22\xaf\x22\xac\x8b\ \xad\x4e\xe2\xbd\x15\xe7\x40\xb6\xf4\xc0\x0f\xa1\xf1\xde\xb1\xfa\ \x87\x4b\xba\xb3\x3a\xd4\x6b\x4f\xea\x5d\xf1\x52\x65\x2a\xe8\x82\ \xb1\x0d\x91\xb3\x0a\x3c\x73\x14\x99\x6e\x13\xea\x07\xdc\x3c\xd0\ \x8e\x97\x19\xe1\xaa\xa0\x90\x6a\xa3\xd3\x59\xce\x89\x71\x15\xd2\ \x9f\x63\xae\x97\x3f\x07\x8a\x8e\xa1\x7d\x3d\xaa\x95\x46\x20\xe7\ \x15\x8f\xd2\xae\x82\x66\x09\x0f\xf2\xdf\x8f\x8a\xd0\xbd\x43\x35\ \xb1\x07\x77\x41\xcf\xf5\x0f\x35\x27\x7c\xa9\x66\xfc\x6d\xd8\xd6\ \xe5\xb4\x77\x63\xb0\xa2\xda\xda\x2b\x1f\xe5\xae\xb2\x39\x76\xd9\ \x45\x75\x90\xf5\xbf\x0f\x1b\x13\xa7\x24\x11\x9f\x14\x3e\xab\x7a\ \xe5\x8c\x11\x00\x91\xae\xd8\x1b\x52\xdb\xbd\x44\x16\xe2\xe6\xde\ \xdb\x64\xc4\xd2\xff\x00\x51\x1e\xd1\xf6\x15\x97\x7b\x77\x2c\xf2\ \xfb\x9c\xbb\xf8\xec\x28\x32\x39\x76\x2b\x19\xfb\xb5\x58\x28\x88\ \x61\x46\x5c\xd5\x93\x43\x95\x7d\xc0\x13\x96\xe4\xfc\x53\xb7\x31\ \x34\x97\x0a\x80\x7b\xb4\x0c\xe7\xed\x43\xb0\x84\x34\xc1\x58\xed\ \xf5\x39\xf8\xa7\x6c\x07\xab\x77\x2c\xc7\x81\xb0\xa6\xf4\x12\x36\ \xd3\x01\xc6\x2b\xad\xd9\x96\x60\x3e\x77\xad\x2b\xc9\x16\x38\xce\ \x69\x0b\x24\x32\x4a\x5f\x1b\x03\x5b\xef\x1d\x8d\x18\xcf\xb2\xb9\ \xb7\x1b\xd4\x20\xda\xa6\xad\xe6\x0a\x2c\x51\xaf\x0a\x07\xe9\x5c\ \xc3\x02\xaf\x43\x9d\xc2\xa1\xfb\x57\x3a\x33\xc6\xfd\x41\xdb\xfa\ \x45\x2f\x70\xf9\x63\xe2\xaf\xac\xe8\x79\x4f\x32\x1f\xda\x97\x39\ \x63\x5a\x82\xd1\x0c\x9d\x4d\xc0\xdc\xff\x00\xb0\xa9\xf7\x3c\x99\ \xc6\x49\x3c\x57\x1e\x02\x0f\xd7\xef\x4f\xda\xc4\x96\xd0\xfe\x22\ \x5e\x71\xed\x15\x9b\x74\x2d\x10\x8e\xc6\x0d\x6f\xbc\xac\x36\x1e\ \x2b\x3e\x79\x4b\x39\x77\x39\x24\xd5\xae\x25\x79\xa5\xce\x0b\x33\ \x6c\x00\xa3\x7a\x31\xda\x47\xea\x5c\x10\xd3\x1e\x13\xfa\x69\x8c\ \xd7\x37\xb5\x02\x38\xf4\xff\x00\x36\x5e\x7b\x29\xaa\x3b\x7a\x8d\ \xe9\xaf\x27\x93\x56\x29\x24\xc4\xbc\x87\x48\xf1\x44\x8b\xd2\x8d\ \x72\xa7\x71\x5b\xb9\x6b\xa4\x04\x0c\xed\xc1\xa2\xdb\x4a\x63\x7c\ \x37\x07\x9a\xe9\xe3\x1f\x52\xd0\xb3\x9e\x6a\x0d\x58\xf4\xcd\x6a\ \xf0\xe4\x15\x71\xb1\xac\xb8\x83\x21\x68\x5f\x66\x43\x83\x46\xb2\ \x9c\xc3\x20\x0c\x7d\x87\x9f\x8a\xbf\x59\x8c\x65\x2f\x23\xdf\xb3\ \xe3\xb8\xac\x4e\x2a\x8b\xd2\x18\x28\x7d\x86\xa1\x51\xd4\xee\x4f\ \xd1\xe6\x81\x69\x22\xa4\xc1\xb3\xed\x61\x83\x42\xea\x39\x17\x43\ \x3c\x1e\x2a\x59\xf6\x3d\x09\x0b\x24\x09\xea\x38\xcb\xfe\x51\x42\ \x95\xde\x46\xf5\x1f\xbf\x02\xab\x18\xd6\xc5\xdb\x7c\x53\x16\x50\ \x34\xd2\x06\x23\xdb\xd8\x79\xad\xc9\x27\x35\x16\xe9\xf6\xaf\x3c\ \xca\x31\x9c\x9d\x85\x7b\x1e\x93\x69\x1d\x9d\xa9\x91\x80\xc8\xfd\ \xe8\x3f\xc3\xfd\x35\x63\x8c\x48\xe3\x0d\x8c\x9f\x81\x51\xd6\xaf\ \x32\xde\x8c\x7b\x01\x5c\xb2\xb7\x3b\xa8\xa5\x3a\x8d\xc3\x4f\x70\ \x4e\x76\x15\xd1\x25\xcc\x6b\x94\x39\x07\x90\x7b\xd0\x6d\xd7\x54\ \xc0\x7c\xd6\x90\xc6\x77\xe2\xb5\x95\xd4\xd1\x18\xfd\x46\xc6\x2b\ \x8c\x90\x82\x09\x7c\x8f\xa5\xbf\xe2\xb1\xae\x23\x78\xa4\x29\x28\ \xc3\x0f\xde\xbd\xa4\x90\x47\x2c\x64\x66\xb3\x7a\x8f\x4f\x0e\x9a\ \x5d\x75\x01\xc1\x1c\x8a\x98\xe7\x3a\x34\xf3\x35\xa9\xd2\xee\xcb\ \xc6\x23\x63\xfc\xc4\xce\x9c\xfe\x61\xe2\x93\xbe\xb5\x7b\x77\xfe\ \xa5\xec\xd4\x05\x25\x58\x30\x38\x20\xe4\x1a\xd2\x36\x58\x34\x32\ \x89\x23\x3b\x67\x50\xf8\x3d\xc5\x21\xd6\x50\xac\x8e\xc9\xc3\x8c\ \x83\x4d\xd8\x5c\xac\xe9\xa1\xfe\xbe\xff\x00\xf3\x53\x73\x09\x78\ \x4c\x7d\xc6\xe9\xff\x00\x14\xdf\x2a\xc9\x85\xd5\x2d\xf5\x01\xbf\ \x14\x58\x13\x4a\x7a\xae\x72\x5b\x7a\x01\x4d\x2c\xf1\xf6\xe4\x53\ \x76\x84\x39\x84\x73\xbd\x69\x0c\x7f\x81\x66\x7f\xf9\x24\xdc\xfd\ \xbb\x0a\x3d\xb3\x08\x2d\x37\x3c\x72\x7e\x69\x77\x26\x5b\xa2\x49\ \xce\x9d\xfe\xf5\x17\xcc\x70\xb0\xae\xe4\x6e\x69\x20\xa4\xf2\xb5\ \xc4\x81\x57\x38\xa7\xad\xa3\x11\xc6\x16\x85\x65\x6f\xa0\x6a\x3c\ \xd3\x20\x56\xad\x13\x5d\xda\xa2\x56\x08\x3d\xc7\x7f\x14\x9d\xcd\ \xc1\xf3\x8f\x8a\xce\xed\x06\x9e\xe5\x23\x07\x1b\x9a\x46\x59\x9d\ \xd1\xf3\xcb\x6c\x28\x6c\xc5\x8d\x70\xd8\x67\xfa\x77\xa6\x80\xee\ \x9b\xdf\xa5\x78\x1b\x0a\xa2\x8d\x2b\xf2\x6a\x57\x76\x2c\x69\xbb\ \x28\x06\x9f\x5e\x73\x85\x1b\x80\x7b\xd2\xdd\x09\xb2\x81\x63\x8f\ \xd7\x9b\x60\x38\x06\x85\x3c\xb2\xdd\x4e\x15\x14\xb1\xe1\x54\x51\ \x24\x69\x2f\x26\xd2\x83\x08\xbf\xd8\x0f\x26\xba\x59\x23\xb7\x43\ \x14\x07\x73\xf5\x3f\x73\xf6\xf8\xac\xce\xf7\x7b\x55\xa2\xf4\xed\ \x01\xd3\x87\xb8\xee\xdf\x95\x3e\xd4\xb4\x92\x7b\xcb\x6e\xce\x79\ \x63\x54\xcb\x3e\xc0\x6d\xe0\x55\x91\x54\x1d\xfd\xc7\xe3\xb5\x6b\ \x48\xab\x33\x31\xdc\xe6\xbb\x43\x63\xe9\x34\x50\xf8\xd8\x05\x1f\ \x6a\xba\x48\x78\x6c\x11\xf6\xaa\x07\x1b\x8e\xdf\xda\xa6\x48\xc3\ \x2e\xa4\xa3\xf5\x1b\x07\x85\x8d\xc5\xb0\xd7\x0b\x6e\x31\xda\x94\ \x8e\x42\x0e\x57\x63\xdc\x56\x65\x97\xa1\x53\x90\x70\x68\xd6\xb3\ \x85\x1e\x9c\x9b\xa1\xdb\x7e\xd5\x0c\x16\x45\xca\xec\xd4\x22\x08\ \x38\x35\x7b\x13\x24\x46\x09\x8c\x64\xe5\x1b\x74\x35\x37\xd9\x96\ \xcb\x5f\xe7\x8f\x9a\xba\xb0\x96\x1f\x45\xf9\x07\x28\x7c\x1a\x1a\ \x92\xac\xc1\xc6\xc7\xda\xe2\x94\x0a\xd5\xb5\x44\xd5\xe9\x7f\x84\ \xa1\x49\x88\x2e\x33\xa4\x0c\x57\x97\x40\x61\xba\x68\xb9\x07\x71\ \xf6\xaf\x5d\xfc\x24\x9f\x85\xe9\xad\x77\x21\xe7\x65\x1e\x6b\x39\ \xdf\xaf\x0b\x1b\x1d\x56\xe9\x6d\x6d\xfd\x24\x3e\xe2\x37\xc5\x60\ \x3b\x16\x62\xc4\xe4\x9a\x25\xdc\xcd\x3c\xc6\x46\x3c\xd0\xa9\x86\ \x3e\x31\x0c\x59\x15\x46\xd4\xc7\x6a\x65\x67\x47\xe0\x71\x59\xd4\ \x6b\x45\x25\xb2\x78\x14\xca\x7b\x58\x6e\x49\x04\x60\xb9\x6c\x0a\ \x98\xee\xa2\x71\x82\xe0\xfc\x83\x59\x97\xf3\x09\x64\xd2\xbf\x4a\ \xfe\xf4\xac\xb9\x8c\x65\x99\x57\xee\x71\x58\xf0\xd9\xb6\xb5\xec\ \x11\xc9\x19\xd4\xa3\x07\xbf\x63\xf7\xac\x0e\xa3\x62\xf0\x31\x65\ \x04\xa7\xfa\x53\x76\xb7\xce\x98\xc3\x87\x5e\xe3\x39\x06\x9d\x47\ \x8a\xe1\x3f\x97\x8c\x9e\x63\x27\xfd\x29\x37\x89\xdb\xce\x23\x32\ \x30\x65\x38\x22\xb5\x6c\xae\x44\xe3\x49\x38\x61\xbf\xeb\x42\xea\ \x36\x38\x26\x48\x41\xdb\xea\x52\x37\x14\x84\x6c\xd1\xb8\x65\x38\ \x22\xb7\xdc\x43\x3d\x5e\xd8\x86\xf5\x90\x6e\x39\x14\x0b\x46\xc1\ \xc0\xdb\xf3\x2f\xdf\xc5\x69\xdb\x4c\x97\x56\xe5\x4e\x35\x63\x04\ \x56\x55\xcc\x6f\x6f\x30\xc7\x19\xca\xd2\x5f\x41\xe8\xce\x2e\x01\ \x1f\x9c\x66\x89\x68\xba\xa6\x91\x98\x64\xea\xa5\xa0\x7d\x51\x82\ \xbc\xae\xe3\xfd\xc5\x33\x03\xe9\x9b\x23\x89\x06\x7f\x5a\xd4\x0d\ \x8d\x85\x0e\x59\x82\xec\xa7\xf5\xa1\xdc\x4c\x73\xa7\xf6\x14\xa4\ \xd2\x1c\xe0\xff\x00\x6a\x02\x4d\x2f\x3b\xef\x4b\x92\xcc\x7c\xe6\ \xa4\x29\x66\xdf\x7a\xd3\xe9\xf6\x62\x35\xf5\xa6\x1f\x20\x1a\x99\ \x65\x20\x5e\xd6\xd4\x24\x66\x69\x86\x30\x32\x05\x27\x78\xc0\xb3\ \xb2\xf0\xdb\xd3\x7d\x56\xe8\xcb\x21\x44\xfa\x45\x24\x41\x2b\xc6\ \x45\x4c\x65\xee\xaa\xf6\x56\xfa\x86\xb9\x3f\xc3\x5d\xcf\xcd\x5a\ \xe6\x5f\x59\xf1\x9d\x31\xaf\x00\x50\xb5\xcb\xe9\x08\xf2\x0a\x8e\ \x2a\x84\x7f\x51\xfe\xd4\xf1\xbb\x41\x1e\x7c\x27\xa7\x16\x42\xff\ \x00\xad\x0f\x4e\x0e\x5c\xd5\x24\x95\x23\x5c\xf1\xfe\xb4\xbf\xe2\ \x4c\x87\xda\x8e\x40\xec\xa2\xb5\x31\xd0\x68\x39\x63\xa5\x14\xb7\ \xc0\xa2\xc5\x6b\x33\x9c\xbe\x54\x78\x1c\xd2\xa8\xfd\x43\x4e\x22\ \x68\xe0\x1e\x02\xea\x3f\xde\xb8\x5b\x5c\x3b\x89\x1e\xf2\x76\x90\ \x70\x43\x60\x7f\x6e\x29\xaa\x34\xe2\xe9\x4b\x32\x1f\x4e\x72\x1c\ \x76\x6a\x5a\x7b\x7b\x9b\x56\xc4\xd1\x9d\x3f\xd4\x38\xa8\x49\x7a\ \x94\x64\x1d\x69\x26\x3b\xb2\xe1\x8f\xea\x2b\x42\xcf\xad\x44\xea\ \x20\xbd\x89\x97\x56\xd9\x61\xb5\x63\xef\x14\xad\x8d\xfc\xf6\x5f\ \xcb\xd3\xea\x41\xfd\x3c\x91\x45\xbe\xb6\x8e\xe9\x3f\x15\x62\x41\ \xfe\xa4\x1c\x8a\x50\xe2\xa2\x32\xf1\x4b\xea\xc0\xfa\x1c\x7f\x63\ \xfa\x56\xee\x1c\xee\x22\x88\xc4\x36\x0e\x43\x0e\x68\x8e\x04\x83\ \xc1\xa3\xbc\x90\x5e\x26\x2e\x53\xd1\x9c\x70\xeb\xc3\x52\xae\x1a\ \x29\x74\x39\x07\xc1\x1d\xe8\x2a\x41\x07\x07\x63\x56\x95\xb5\x44\ \x18\x8f\x76\x71\x9f\x22\xa2\x53\x9c\x79\xa0\xfb\xe7\x99\x61\x87\ \x76\x63\x8a\xa0\xfd\x1a\xcd\xef\xfa\x88\x03\xe8\x5d\x8b\x1e\x00\ \x15\xe9\x2e\xe6\x56\x45\x82\x21\xa6\x28\xc6\x00\xf3\xf3\x4b\x58\ \xc2\x96\x56\x42\xde\x3f\xa8\x8f\xe6\x37\x9f\x8a\xba\x2b\x33\x00\ \xa0\x93\x59\xd7\xb1\x00\x12\x70\x06\x4d\x39\x6d\x66\xe5\x75\x11\ \xfd\xe8\xd6\x96\xe9\x02\x7a\x92\xee\xde\x2a\xb7\x17\x6c\x4e\x10\ \xaa\x81\x58\xb9\xdb\xc4\x5d\x14\xba\x8f\xd3\x9b\x4e\x6a\x92\xb1\ \x29\xe9\x26\x40\xee\x68\xf2\x24\xb3\x39\x25\x46\xc3\x76\xec\x2b\ \x2b\xac\xf5\x48\x6d\x50\xc3\x6a\xe2\x49\x8f\xd5\x20\xe1\x7e\xd5\ \x7b\x9a\x13\xd4\xae\x61\xb2\x8f\x4e\x43\x4c\x46\xc8\x3b\x7c\x9a\ \xc8\x09\x25\xd3\x99\xa7\x62\x4b\x1a\x8b\x68\x9a\x56\xf5\xa5\x24\ \xe4\xe7\x7e\x5a\x9f\x86\x3c\x8c\x9d\x80\xad\xc9\xa4\x29\xf8\x52\ \x87\x54\x65\x90\xf9\x14\x48\xee\x6e\x21\x20\xba\xea\xff\x00\x32\ \x9c\x1a\xbd\xe4\xe1\x13\x3f\xd8\x79\xa0\xb4\x97\x18\x19\x80\xe0\ \xf9\x34\x1a\x96\xb7\xb1\xce\x06\xa6\xf7\x70\x1b\xfe\x68\x77\xf6\ \xa2\x4f\x7a\x00\xaf\xf1\xc3\x7d\xab\x37\x28\x5b\x20\xb4\x4f\x4c\ \x5b\xde\x3c\x5e\xd9\xb0\xcb\xe4\x56\x75\xf8\x02\x46\x78\x64\xc8\ \xc8\x61\xcd\x3c\x4c\x77\xb6\xc4\x70\xe2\xa2\x78\x92\xe6\x3d\x68\ \xc0\x9f\x23\x9f\xd6\x92\x05\xe1\x97\x6d\x98\x53\xb1\xd0\x3b\x43\ \x31\x46\xe7\x34\xe4\x47\xdb\xa0\x7d\xd4\xd0\xae\x51\x6e\xe1\xf5\ \x13\x69\x17\x91\xe6\x87\x6b\x21\x65\xd3\x9c\x32\x9d\xaa\xc0\x66\ \x90\x97\x62\x76\x20\x55\x23\x1a\x8f\xcf\xee\x68\xd2\x28\x65\xf5\ \x17\xb8\xc3\x0a\xa5\x89\x1f\x89\x4c\xf1\xa8\x66\xb4\x35\x3a\x65\ \x90\x8d\x04\xf3\x8f\xfa\x54\xd0\xba\xc5\xe6\x47\xa6\xa6\x99\xeb\ \x17\x26\x35\x2a\x2b\x09\xd8\xb3\x12\x7b\xd7\x2c\x66\xfe\xd5\x5c\ \x37\x34\x54\x5c\x2e\x0d\x44\x4b\xdc\xd4\xc8\x74\xae\x6b\xb4\x88\ \x0c\x8b\xb9\x00\xe2\xba\x34\x57\x3a\x58\xe1\xbb\x67\xbd\x4b\x12\ \x4e\x4d\x4c\x41\x58\xe1\x94\x1a\xd5\x82\x45\x8b\x31\xe1\x4f\xdc\ \xd1\x97\xa7\xc8\x17\xf2\x8f\xd4\x54\xc3\x10\x27\x09\x23\x29\xf0\ \x77\xa3\x24\x13\x9e\x4e\xc3\xbd\x62\xec\x0d\x6d\x11\x37\x92\x40\ \x7e\x05\x4b\x98\xd1\x72\xab\xa4\x79\xef\x5d\x70\x56\x2f\xa9\xb5\ \x1f\x8a\x52\x47\x67\x39\x35\x66\x3f\x91\x69\x25\x66\x3b\x6c\x2a\ \x8c\x75\x2e\x96\x01\x87\x83\x57\xb6\x89\xa5\x7c\x0e\x3b\x9a\xb5\ \xcb\xa8\x6d\x11\x81\x85\xf8\xe6\xad\xb3\xa1\x47\x65\x27\x65\x15\ \x42\x01\xf8\xae\xae\xa0\xa4\x84\xae\xd9\xd8\xd5\x5d\xb5\x15\x07\ \xb5\x75\xc3\x70\x3b\xd5\x19\x82\x82\x7b\xd4\xa2\x27\x62\x4e\x95\ \x19\x2c\x70\x00\xef\x5b\x1d\x22\xcc\x5a\xc5\xad\xc0\x32\xb7\x27\ \xc7\xc5\x03\xa2\xd9\x85\x02\xe6\x61\xef\x3f\x40\x3f\x96\xb5\x11\ \x0b\x1f\x8e\xe6\xb3\x47\x46\x85\xdb\x03\xfb\xd3\x70\x98\xe0\x5c\ \x82\xab\xe5\xdc\xe0\x56\x67\x52\xea\x90\x59\xa9\x8e\x3c\x49\x20\ \xfc\xa0\xff\x00\xa9\xac\x5b\xbb\x9b\xcb\xd7\xd5\x34\x87\x1d\x87\ \x61\x59\xd5\xc9\x5e\x9e\x4e\xab\xd3\x52\x5c\x48\xe6\x66\x1d\xfb\ \x0a\x15\xe7\xf1\x0d\x8c\x03\xf9\x10\x29\x3c\xf1\x5e\x55\xe1\x90\ \x6e\x0e\xf5\x06\x30\x83\x54\xad\x92\x78\x1e\x6a\x78\x43\x67\xfa\ \xaf\x5b\xbe\xbf\x52\x9a\xbd\x38\x87\x61\xb5\x2b\x67\x6d\xac\x7a\ \x92\x6c\x9d\x87\x76\xa2\xda\xdb\xe5\x44\x93\x8c\x2f\xe5\x4f\x3f\ \x7a\x6e\x24\x2c\x78\xda\xb7\x24\x9d\x22\x21\x8f\x51\xce\x36\x15\ \x6b\x87\x00\x15\x1b\x79\x34\x49\x59\x63\x4c\x01\xbd\x67\xdd\x33\ \xcb\x2f\xe1\xa3\xdd\xdf\x9f\x8a\x09\xb5\x1e\xbc\xcd\x3b\x0f\xe5\ \xc7\xb2\x8f\x26\x9c\xd0\xa0\x8d\x7e\xe7\x6e\x73\xda\xa2\x14\x48\ \xd4\x22\x8f\xe5\xc5\xff\x00\xf4\x6a\xb9\x26\x4c\x9e\x49\xab\x20\ \x39\xb4\x47\x18\xc7\x3d\xa8\x17\x1d\x36\x45\x24\xc4\x4f\xfd\x27\ \x8a\xdb\xe9\x89\x11\xb8\x60\xec\x03\x01\xed\x07\x6c\xed\x5d\x73\ \xac\x48\xc0\x8c\x6f\xc5\x67\x7c\x8f\x36\xa6\x7b\x57\xc8\x0d\x1f\ \xc7\x63\x4d\x2c\x90\xdd\xa6\x92\x34\xc8\x29\xfb\xa1\x1b\xae\x99\ \x50\x10\x7e\x2b\x3a\xe2\xc1\x87\xf3\x2d\xdf\x20\x6f\x8c\xee\x2a\ \x76\x02\x0c\x96\xf3\x7c\x8f\xde\xa6\xe5\x41\x1f\x89\x8b\x91\xf5\ \x28\xae\x49\x84\xa3\xd3\x9b\xda\xe3\x60\x4d\x40\xd7\x0c\x9b\xf0\ \x7f\xb1\x14\x07\xb5\x94\x11\xa8\x6e\xad\xb1\x15\x07\xd9\x36\xde\ \x76\xa5\xc9\x11\x49\xa9\x77\x8d\xb9\xf8\xa3\x1f\x72\xe7\x92\x3f\ \x7a\xd4\x1a\x3d\x64\xeb\xb6\x8a\x50\x7e\xa0\x2b\x3e\x25\x2e\xe1\ \x40\xf8\xa7\x6c\x5b\xf1\x16\x12\x5b\xb6\xe5\x3d\xcb\x4a\x5b\x9d\ \x17\x0b\x9d\xb0\x77\xa9\x8f\x1c\x02\xb2\xe1\xf4\x8e\xd4\x09\xf3\ \xea\x63\xb0\xad\x19\x21\x02\x53\xdb\xe6\x95\xba\x8f\x9c\x60\x91\ \xde\xb7\x8e\x41\x77\x18\x18\xfd\xe8\x91\x00\x13\x23\xbd\x0c\x1d\ \xb0\xd5\x2a\x4a\x6f\xc8\x35\xa0\xcd\xbc\x82\x32\x49\x07\x35\x17\ \x17\x4c\x46\x01\xc0\xa5\xda\x42\x78\xda\xa8\x77\xa9\xe3\xee\x89\ \x62\x49\xc9\xa9\x89\x0b\xb6\x05\x54\x0c\x9c\x0a\x7e\xda\x2f\x4e\ \x20\x74\xee\x79\xa6\x57\x42\xcc\x9e\x8c\x1a\x17\x96\x1b\xfd\xa9\ \x67\x8d\x47\xb9\xce\x05\x1a\xf2\xe1\x73\xb9\x05\xbc\x0a\x4e\x47\ \x67\x39\x63\x58\xc6\x5f\x62\xb5\x0c\x40\x52\x4f\x6a\x93\x4b\xdc\ \x3e\x5b\x48\x3b\x0e\x6b\x62\xac\xd9\x62\xed\x4e\x74\x8b\x43\x33\ \x89\xe6\x5f\x60\xfa\x41\xef\x42\xe9\xd6\xad\x73\x28\x67\x18\x8d\ \x7f\x7a\xd8\x9a\x48\xad\xa0\xd4\xc4\x05\x5e\x05\x62\xd0\x52\x55\ \x14\xb3\x90\xaa\x39\x26\xb2\xba\x8f\x53\x79\xb3\x0d\xa6\x55\x38\ \x2f\xdc\xd2\xbd\x42\xed\xee\x5b\xde\x4a\xc6\x3e\x94\x1d\xea\x90\ \xc5\x3c\xab\xed\x5d\x0b\xe4\xf3\x4d\x6c\x42\xac\x71\xee\xcc\x33\ \xe4\x9a\xba\x49\x1b\x26\xa5\x60\x40\xa2\x27\x4f\x8f\x19\x63\x96\ \xf9\x19\xa8\xff\x00\xc2\xd6\x49\x32\x06\x4f\x7d\x35\x78\x00\x33\ \x6b\x6d\x10\xa9\x76\xf8\xe0\x53\x16\xd6\x82\x3c\x4d\x39\xd5\x21\ \xdc\x2f\x8a\x69\x23\x86\xd1\x02\x46\xa0\xbe\x3c\x6c\x2a\x8a\x0b\ \x3e\x49\x24\x9a\x41\x31\x82\xef\x93\xbd\x1f\x64\x04\xd4\xa2\x04\ \x5f\x9a\x0c\xec\x59\x82\x2f\x7a\x80\x37\x72\x84\x8d\xa6\x3e\x70\ \x83\xc9\xaa\xf4\x94\x31\xdb\xbd\xe3\xee\xf2\xe5\x63\x3f\xea\x69\ \x6b\xd7\x37\x17\x6b\x04\x5b\x84\x3a\x57\xe4\xf7\x35\xab\x22\x2a\ \xcd\x1d\xba\xfd\x10\x2e\xf5\x28\x1b\x82\xaa\xb0\x8e\x79\x3f\x7a\ \xa3\x02\xa7\x06\x9d\xe9\x90\x8b\x8b\xb6\x91\xfe\x91\x4e\xc9\x05\ \x99\x04\x12\x7f\x4a\xd6\xf5\xc0\xcd\x8a\xed\xc2\xe9\x93\xdc\xbf\ \xb8\xfb\x53\x6b\x79\x11\x40\x19\xf2\x7b\x1a\x8f\xc0\xc2\xcc\x4a\ \x07\x23\xe4\x80\x29\x9b\x7e\x90\x64\x19\x58\x76\x1d\xc8\xdb\xfb\ \x9a\xcd\xb8\x85\x9a\x48\xa5\xdb\x2a\x7e\xc6\x94\xb8\x89\xe3\xf7\ \x21\x38\xad\x79\x3a\x44\x41\x4e\xb7\x85\x1b\xc0\x6d\xff\x00\x61\ \x4b\x4f\x61\x71\x1a\xe5\x1c\x48\xa3\xb6\x73\x59\x99\x63\xea\xae\ \x99\x13\x08\xe7\xff\x00\x10\x69\x61\xc3\x0a\x0b\x96\x8f\x11\xcb\ \xee\x4e\xcc\x29\xe9\xe1\x52\x7d\xc3\x41\xf9\xe0\xd2\xce\xac\xa3\ \x4b\xae\x54\xf6\x3d\xeb\x7a\x40\x7e\x83\x83\x86\x56\xfd\xea\x62\ \x6f\x4c\x84\x27\x2a\x7e\x93\x5c\xca\x50\x7b\x77\x5e\xea\x7b\x55\ \x36\x23\xe0\xd4\x0e\x5a\xca\x60\xb8\x59\x07\x1d\xc7\xc5\x5f\xa8\ \xc6\x23\x9f\x5a\x7d\x0f\xee\x53\x4a\x42\xe4\xfb\x1b\x91\xc7\xcd\ \x39\x19\xf5\xec\x8c\x47\xeb\x8b\x75\xfb\x53\xde\xc1\xa7\x94\xc9\ \x02\x49\x9e\x46\xff\x00\x7a\x5d\x66\xc6\xcd\x53\x6a\x75\xc0\xf1\ \x77\x1e\xe5\xff\x00\x7a\x0b\x56\xb1\x90\x11\x8c\x6f\xf0\x68\x44\ \x11\xb0\xdc\x57\x63\x35\xda\x1b\xb5\x6a\x5d\x0a\xd7\x54\x95\x61\ \xc8\x35\x15\x76\x2c\x84\x06\xc9\xa2\x49\x73\x23\x2e\x9c\xe0\x7c\ \x50\x70\x7c\x54\x81\x52\x88\xae\xae\x3c\xd7\x50\x06\xe2\x4c\x0c\ \x0e\x6a\x7a\x7d\xab\x5c\x4b\xbe\x74\x0e\x4f\x9a\xeb\x1b\x67\xb9\ \x9b\x27\xe9\xee\x6b\x46\xea\xe2\x2b\x28\x74\x20\x05\xb1\xb0\xac\ \x5a\x09\x71\x34\x36\x70\x0e\x32\x07\xb5\x45\x64\x4b\x2c\xd7\x73\ \xf1\xa8\xf6\x1d\x96\xad\x14\x53\x5e\x4d\xad\x89\xc1\x3c\xff\x00\ \xc5\x6d\xd8\x74\xe8\xe0\x88\x3c\xa9\x81\xd9\x7c\xfd\xeb\x3b\x93\ \xb1\x9d\xd3\xba\x6b\x31\xd6\xd8\x63\xdd\x9b\x81\x5a\x31\xdb\xdb\ \xa0\xf7\x96\x73\xf1\xb0\xa3\xbe\x58\x0c\xfb\x50\x70\x05\x25\x7d\ \x72\x23\x53\x1c\x67\xdc\x79\xf8\xab\xbd\x83\xcd\x25\x94\x7b\x88\ \x00\xf1\x96\x34\xac\xf7\x8f\x20\xd1\x10\x08\xbe\x40\xc5\x2b\xee\ \x90\xea\x62\x71\xe4\xd5\xd4\x16\xf6\xa8\xc0\xab\x31\x10\x06\x5b\ \x03\x24\x9e\xe7\xbd\x35\x0c\x61\x13\x27\x9a\xeb\x78\x70\x32\x7b\ \x55\x98\x83\x96\x3f\x4a\xd2\xd0\x39\x8e\x07\xc9\xdc\xd2\xd2\xbf\ \xa3\x67\x2d\xc1\xe4\x8d\x2b\xf7\xab\xdc\x31\xd3\xf2\xdb\x9a\x0f\ \x5d\xfe\x5f\x4d\x86\x2f\xea\x39\x34\xa2\xbf\xc2\xf0\x97\xea\x3a\ \x88\x07\xd1\x88\xb9\x07\xc9\xa7\xad\xff\x00\xc4\xb8\x27\x9c\x1a\ \x5f\xf8\x55\xd5\x7a\xb3\xc4\xc7\x1e\xb4\x65\x57\xe4\xd1\xe4\x06\ \x3b\x99\xc7\xf9\x6a\x7b\x0e\xf4\xc3\xa3\xa6\x92\x36\x67\x62\x28\ \xb1\xa0\x2f\x8f\x1b\xb1\xf1\x43\xb6\x5f\x4e\xd6\x35\x3d\x97\x3f\ \xa9\xa7\xfa\x7c\x46\x31\xae\x45\xce\x91\xea\x30\x3f\x1c\x0f\xef\ \x8a\x99\x5d\x4d\x91\x63\x2c\x76\x80\x6a\x0b\xac\x0e\x48\xd4\x54\ \xf8\x03\x8d\xbc\xd2\xb3\x5f\xca\xec\x49\x19\xcf\x77\x62\x7f\xed\ \x40\xea\xac\xff\x00\x8c\x31\x17\x00\xa0\xf7\x31\x38\x03\xcd\x2e\ \x90\x7a\x8b\xaa\x39\x63\x93\xec\x6b\x13\x19\xdd\x53\x7f\x8a\x9b\ \x23\x05\x07\xff\x00\x88\xab\xad\xcc\xf9\xd4\x4a\x31\xfb\x0a\xce\ \x6f\x52\x33\xef\x0c\xbf\x3d\xaa\x56\x56\x18\x39\x07\xed\x5a\xf1\ \x88\xd2\x6b\x88\xa5\x04\x5c\x45\x9c\xf7\xc6\x7f\x7a\x5e\x6e\x9e\ \x92\x29\x6b\x79\x01\x1f\xd0\xc6\x80\xb3\xe7\x92\x41\xa8\x37\x0d\ \x13\x64\xe4\x7c\x8a\x4c\x6c\xe9\x4a\x5c\xdb\xc9\x0c\x85\x5d\x08\ \xf8\xa5\xa5\x8f\x03\x5a\x0c\x8e\xe2\xb6\x92\xee\x19\xe3\xf4\xe7\ \x01\x87\xcf\x22\x97\xbb\xb3\x08\xbe\xa5\xbb\x6b\x4e\xe3\xb8\xab\ \xbf\x55\x19\x07\xb1\x1d\xa9\x8b\x69\x4a\xb0\x75\xe4\x73\x55\xb8\ \x87\x48\xd7\x1e\xe3\xb8\xf1\x41\x56\xd2\x75\x0f\xd4\x55\x81\xf9\ \xbf\x95\x70\xb3\x47\xf4\xb6\xe3\xfe\x2b\xae\x95\x75\xeb\x4c\x69\ \x71\x91\xf1\x54\xb7\x71\x24\x7e\x93\x1e\x77\x53\xe0\xd4\x21\x20\ \x18\xdb\xf4\xf8\x35\x67\x63\x93\x9a\x91\xbf\xc5\x45\x41\x24\x1c\ \xd6\xf4\x2e\x37\xd8\xb0\x1f\x7a\xe2\x0e\x3e\xa5\xfe\xf5\x45\xd6\ \xdb\xad\x10\x47\x26\x3f\x2d\x2c\x15\x60\xbe\x73\x55\x24\x62\xba\ \x65\x65\xe4\xe7\x3e\x2a\x94\xd7\x03\xab\x8f\x15\xc4\xe2\x81\x3c\ \x9d\x85\x03\xd7\x37\x11\xda\x43\xe9\x44\x32\xf8\xc5\x2d\x6f\x6e\ \xf2\xbf\xab\x70\x49\xce\xfa\x7c\xd4\xda\xc5\xee\xf5\xa5\xdd\x8f\ \x00\xf6\xa6\xa1\x0d\x24\x81\x40\xe4\xd7\x3d\x87\xba\x64\x68\x08\ \x3a\x46\xdf\xb5\x35\x3b\xeb\x6c\x93\xed\x14\x34\x55\x86\x2d\x3f\ \xdc\xd2\x77\xd7\x78\xf6\xa9\xdf\xc7\x8a\xce\xb7\x55\xdd\x42\xef\ \x03\x42\x73\xfe\x94\x80\x52\x7d\xcd\xff\x00\xdd\x58\x29\xfa\x9f\ \x93\xda\x8b\x14\x4c\xed\xbd\x6e\x4d\x22\xb1\xa1\x73\x8e\x00\xe2\ \x9c\xb6\x83\x7c\x01\xbd\x4c\x10\x92\xc1\x54\x6e\x68\xf7\x85\x6d\ \xe3\x11\x27\xd6\x7e\xa3\xe2\xa5\xcb\x9d\x40\x09\x88\x2c\x22\x8f\ \x7f\x27\xc9\xaa\x5d\x29\x0e\x20\x5d\xf0\x77\xf9\xa6\x7a\x5c\x25\ \xb5\x4d\x8f\xa0\x6d\xf7\xa5\x54\x86\xbd\x1a\xce\x37\xe4\xd3\x7c\ \xe8\x29\x21\xcb\x6a\xed\xaa\x9d\xbd\xb6\xb6\xea\x16\xe9\x99\x82\ \xb2\x8c\x50\x64\xb6\x9a\x27\x3a\xe3\x38\xf2\x57\x20\xd0\xc4\x68\ \x4e\xfe\x9a\xfe\xa4\x55\xbc\x8b\x59\xd8\x47\x65\x74\x97\x53\xdd\ \x07\xf4\xb7\x55\x5e\x49\xa2\x42\xa6\x7b\x86\x66\x18\x0e\x72\xc3\ \xc0\xec\x2a\x88\x90\x29\xcb\x4a\xbf\xfe\x00\x93\xfd\xcd\x3b\x00\ \x52\x8a\x23\x18\x0d\xc5\x40\xdd\x94\x61\xdf\xd5\x93\x1a\x57\x80\ \x78\xa6\xe4\x94\x45\x6a\x92\x9e\x25\x97\x50\xf9\x55\xff\x00\xbe\ \x69\x48\x12\x5b\xbb\x94\xb6\x80\x1d\x24\x85\xdb\xfd\x69\x8f\xe2\ \xcd\x31\x4e\x2d\xe3\xfa\x20\x88\x22\xd7\x2c\xae\xec\x8a\xc4\xba\ \x8e\x4b\xbb\x7b\x97\x19\x2d\x8d\x64\x79\xde\xb2\x21\x91\xe2\x7c\ \xa9\x23\x15\xe8\x7a\x3c\x82\x2b\xec\x30\xca\xb0\x2a\x47\x9a\x5b\ \xf8\x97\xa4\xb4\x0f\xeb\xc2\x09\x8d\xb7\x15\xbf\x29\x2e\xa8\xad\ \x9d\xf8\x75\x0b\x36\x19\x7c\xe2\x8d\x2d\xaa\xba\xeb\xb7\x6f\xd3\ \xb5\x61\xc4\xe5\x1b\xe3\xb8\xa7\xec\x6e\x9e\x22\x19\x0e\x57\xb8\ \xab\x66\xba\x04\x93\x2a\xc5\x5d\x74\xb0\xf3\xde\xa3\x51\xdc\x72\ \x3c\x1a\xd4\x83\xf0\xd7\xf1\x60\x90\x1b\xe7\x8a\x5a\xfb\xa7\x4d\ \x01\xca\x82\x47\x83\x49\x9c\xea\x9a\x20\xeb\x8d\xd7\xff\x00\xaa\ \xbd\xbc\xd2\x44\x75\x23\x64\x0e\x45\x50\x92\xa7\x0c\x0a\x91\xe6\ \xa7\x93\x90\x77\xae\x9d\xf6\x86\x18\xc5\x3f\xbe\x30\x12\x5e\xea\ \x78\x6a\xcf\xbc\xb7\x2a\xc5\x90\x11\x8f\xa9\x7c\x51\x9b\x63\x91\ \xb1\xa2\xac\xa2\x41\xa6\x53\x82\x38\x71\xfe\xf5\x8b\x8e\xba\x19\ \xd0\xbe\x96\xe7\x6a\x69\x8e\xb4\xf5\x07\xd4\x3e\xaf\x9a\x15\xec\ \x05\x5b\x52\x80\x3e\xdc\x1a\xad\xb4\x9a\x5b\x07\x71\x48\x0c\xa7\ \x22\xa1\xfc\xd4\x91\xa5\xbe\x0f\x15\xcd\xba\xd6\xe5\x17\xb7\x38\ \x53\xe6\xaf\xa8\xd0\x22\x38\x7f\x8a\x35\x5b\xd8\xac\xe7\x2b\x41\ \x34\x49\x8f\x6a\x5e\x79\x02\x8c\x0e\x68\x29\x71\x20\xce\x07\x35\ \x5b\x58\x5a\x79\x42\x8e\x3b\x9a\xac\x68\xd2\xc9\xa4\x6e\x6b\x42\ \x42\x96\x56\xda\x46\x35\xb5\x62\xd1\x45\x25\x9a\xb4\xec\x23\x58\ \xa3\xd6\xc3\x73\x4a\x58\x43\x9c\xc8\xdc\x0f\xde\x8b\x3c\xc4\xfb\ \x57\x73\x59\xa2\x6f\xee\x4e\x74\xae\xe4\xf6\xa5\x54\x15\x6c\xb7\ \xb9\xcf\xed\x56\x45\xf7\x61\x3d\xce\x79\x3d\x85\x35\x6d\x6c\x34\ \xeb\x6f\xa7\xbb\x79\xfb\x55\xe2\x01\x41\x0b\x31\xd6\xdf\xae\x69\ \xa8\x63\x2c\x42\x20\xde\xa5\x14\xbb\x84\x45\xdb\xb0\xad\x6b\x1b\ \x64\xb5\x40\xf2\x60\xb9\xac\x67\x9e\xbb\x50\x96\x05\xb4\xb5\x2e\ \xc3\xdc\x45\x63\xce\xcc\xd2\x96\x63\x92\x4d\x7a\x47\x41\x72\x37\ \xe1\x46\x6b\xcf\xdc\xc4\x4b\x1d\xb1\xbd\x4f\x8a\xee\xee\x95\xa5\ \xd1\x62\x2f\x6b\x22\x26\x35\x15\xc0\xcd\x64\xde\xc2\xc8\xe4\x15\ \x21\x97\x62\x29\x8e\x9f\x78\xf6\xd2\x85\x6d\x8f\x7d\xf9\xad\x5b\ \x8b\x78\xba\x8c\x3e\xa4\x45\x44\xc0\x7f\xfb\x56\xb9\xc6\xec\x79\ \xf8\x2e\x67\x8c\xfb\x65\x60\x3e\xf5\xb7\xd3\x7d\x1b\x98\x3f\x98\ \x8a\xcd\x8e\x48\xac\x7b\xcb\x67\x8d\xd8\x15\x2a\x47\x20\xd1\x3a\ \x35\xd8\xb7\xb8\x1a\x8f\xb4\xd6\xb2\x9b\x9b\x80\x7d\x62\x3f\x4e\ \x50\x02\x80\x01\xec\x29\x9b\x60\x5c\xa8\x1c\x91\x81\x4c\x75\xdb\ \x61\x71\x17\xaf\x0f\xb8\x73\xfa\xd2\x16\x53\x10\x06\x4e\x1d\x0d\ \x25\xde\x28\xf6\x7f\xc3\xd6\x0b\x6a\x86\x72\x31\x85\xd8\x9e\xf5\ \xe7\x3f\x89\x24\x0d\x73\x3b\x1e\xe7\x15\xa9\x69\xd6\xa5\x9e\xdf\ \xd1\x70\xa3\x6d\xcd\x60\xf5\x97\x0d\x23\x1c\xe7\x26\xb8\x7c\x78\ \xe5\xe7\xcb\x57\xa0\x33\xa6\x6c\x83\xce\xe2\xb7\x7a\x7c\xf1\x5c\ \xda\xfa\x17\x18\x28\xfb\x03\xfd\x26\xb0\x07\xba\x05\x61\xca\xec\ \x69\xae\x97\x30\x12\x98\x9c\xe1\x5c\x73\xe0\xd7\x4c\xf1\xdc\x48\ \x4f\xf8\x93\xa4\x49\x67\x39\x65\x5c\xa9\xf1\xc5\x65\x44\xe6\x36\ \xcf\x23\xb8\xaf\x77\x6a\x52\xed\x1b\xa7\xdd\xe3\x58\xfa\x18\xd7\ \x95\xfe\x23\xe9\x72\x59\x5c\xb7\xb4\xe3\x35\x30\xcf\xfe\x72\x2c\ \x0e\x09\x5a\x3c\x49\x11\xd8\xf2\x2b\x7b\xa3\xf5\x34\x96\x3f\x4a\ \x71\xa9\x7b\x83\xb9\x15\xe5\xad\xa5\x31\xb6\x0f\x06\x9b\x46\x68\ \xdc\x49\x19\xad\xe5\x8e\xcd\xbd\x5d\xc7\x45\x8a\xe9\x3d\x48\x0a\ \xb2\x9e\x01\xff\x00\x9a\xc9\xbd\xe9\x12\x40\xf8\xd0\xc9\xf7\xe0\ \xd1\x3a\x2f\x58\x78\x58\x61\xb0\x7b\xa9\xe0\xd7\xac\xe9\xb7\x96\ \xb7\xf1\x60\xe9\x0d\xc1\x56\xae\x37\x2c\xf0\x5e\xde\x16\x6e\x9f\ \x36\x9d\x4a\xa5\xbe\xd4\x9b\xab\x2b\x61\x81\x07\xe4\x57\xd2\xa5\ \xe9\x90\xf2\xa8\x07\xc8\xa4\x3a\xb7\x47\xb6\x9e\xdf\x12\x47\x83\ \xd9\xd4\x6e\x29\x8f\xf2\x3f\x27\x8b\xc2\xa4\x83\x4f\xa7\x20\xca\ \xf6\x3e\x29\x7b\x98\x8a\x36\x47\x07\xc5\x69\x75\x7e\x9b\x2d\x9b\ \x1d\xc4\x91\xf6\x71\xfe\xfe\x29\x15\x23\x74\x7f\xa4\xfe\xd5\xdf\ \x8b\x37\x19\x52\x17\xd4\xba\x0f\x3d\xaa\xea\x7b\x1a\x0c\xc8\x62\ \x93\x6d\xc7\x62\x2a\xe8\xda\x97\x23\xf5\xab\x05\x98\x60\xd1\xa3\ \x39\x5c\xd0\x79\x15\x68\x4e\x1b\x1e\x6b\x7d\x81\xdc\x3e\x9c\x93\ \x4a\x1d\x4e\xfb\x6e\x4d\x35\xd4\x47\xb7\x35\xdd\x2d\x54\x6b\x95\ \x86\xca\x2a\x50\x68\x95\x2c\xed\xf5\xb6\x35\x1a\x5a\x30\xd7\x12\ \x99\xa4\xe3\xb5\x44\x8c\xd7\x53\xe4\xe4\x20\xa3\x70\x30\x36\x02\ \xb2\x1f\x9a\x50\xa8\x11\x76\x51\x42\x89\x4b\x8c\xb1\xd2\xbd\xfc\ \x9a\x11\x90\x38\xdc\x60\xd3\x16\xb8\x76\x50\x78\x03\x8a\x9d\x40\ \xcd\xbc\x29\xa7\x51\x5d\x31\xfe\xed\x44\x6c\xc8\x42\xa8\xc0\x1c\ \x28\xed\x56\x45\x2f\x82\x4f\xc6\x29\xeb\x44\x86\xd5\x7d\x69\x86\ \xe3\xe9\x5a\xc5\xba\xfe\xd4\x6e\x9b\x6a\xb6\xf1\x7a\xb2\x8f\x71\ \xe0\x52\xd7\x52\x4b\x35\xf2\xc6\x99\x39\xe0\x0a\x1d\xdd\xf4\xb3\ \x3e\xa1\xed\x51\xc0\xad\x3f\xe1\x53\x11\xfe\x27\x85\xa4\x00\x83\ \x0e\xa5\x04\x73\x5c\xf2\x96\x4d\xd1\xaf\xd2\x7a\x15\xd7\xe0\xc4\ \xc3\x00\xf8\x6e\xf4\x2e\xa1\xd1\x12\x43\xfc\xdb\x53\x03\xe3\x1a\ \xe3\x19\x53\xf7\x14\xf7\x52\xeb\x52\x17\x29\x19\x0a\x01\xc0\x02\ \xa2\xd7\xae\x38\xf6\xc8\x01\xfb\xd7\x09\x7e\x4e\xda\xe1\xe3\x7a\ \xbf\x4a\x9a\xd9\xb1\x22\x6a\x43\xf4\xb8\xef\x49\x5b\xdc\xcd\x67\ \x20\xcb\x1d\x3e\x6b\xe9\x7e\x9d\x97\x50\x8c\xaa\xe9\x52\xc3\x75\ \x3c\x1a\xf3\xbd\x7f\xf8\x56\x45\xd4\xf6\xcb\x90\x7f\x21\xef\xf6\ \x35\xdf\x0f\x9e\x5e\x32\x66\xc6\x54\x8d\x07\x52\x83\x21\x82\xcc\ \x06\xc7\xcd\x63\x5e\xda\xbc\x32\x10\x57\x04\x76\xa2\x4b\x0d\xc5\ \x95\xc1\x00\x30\x2b\xca\xf8\xa7\xa1\xbb\xb7\xbc\x84\x45\x73\x85\ \x60\x36\x6f\x15\xda\x6f\x1e\x67\x48\x57\xa3\xde\xfa\x4d\xe8\xcd\ \xbc\x6d\xb6\xf5\x1d\x5a\xd3\xd0\x90\x5c\x42\x35\x21\xe7\x15\x5b\ \xab\x09\x55\xb3\x18\xd6\x0f\x75\x35\x68\xde\xfd\x22\xd1\xb2\xa8\ \x3f\x9b\x15\x78\xde\xe0\x5c\x5d\xb0\x18\x40\x72\x79\x14\x19\xcc\ \xae\x72\xfb\x7c\x66\x99\x9d\x8e\x49\x9e\x70\x3e\x13\x1b\xd1\xad\ \x6c\xa5\x91\x43\xa4\x02\x34\x3c\x49\x29\xe7\xec\x3b\xd6\xb7\x20\ \xa4\x09\xff\x00\x92\x73\xfe\x60\x3f\x6a\x5d\x1f\x43\xe7\xb0\x35\ \xa1\x78\x12\x18\x16\x04\x3c\x6e\x4f\x72\x7c\xd2\x16\xe0\x3b\xba\ \x76\x35\x9c\x79\x1a\xf2\x3b\x49\x6f\x15\xd2\x1f\x7c\x67\x4b\x62\ \xb4\x66\x48\xba\xc7\x4d\x2a\xd8\xf5\xd0\x71\xe6\xbc\xff\x00\x4f\ \x9d\xe1\x9b\x41\x39\xd3\xbf\xdc\x56\x8d\xf3\x35\xbc\xd1\xdd\x5b\ \xb1\x50\xe3\x3b\x57\x1c\xb1\x57\x97\xea\x96\x6f\x69\x70\xc8\xca\ \x40\xce\xd5\x16\x73\x01\xec\x73\xb1\xe0\xd7\xb3\x96\xca\xd7\xad\ \xd8\xb1\xc6\x9b\x85\x19\xdb\xbd\x78\xde\xa7\x63\x2d\x9c\xe5\x1c\ \x1c\x03\xcd\x6f\x0c\xe6\x5c\x5e\xcb\x05\x61\xa4\xea\x4a\x7f\xa7\ \xde\xb2\x91\xb9\x04\x70\x73\xb8\xac\xab\x59\xb3\xec\x63\xbf\x62\ \x68\xac\x0a\xb6\x45\x6e\xcd\xf1\x51\xed\x3a\x3f\x5f\x92\x35\x09\ \x3e\x64\x4e\x33\xdc\x56\xea\xcf\x05\xd4\x3a\xa1\x75\x6c\x8e\x2b\ \xe6\xf6\x77\x45\x4e\x1b\xfb\xd6\xad\xa5\xcb\x29\x0f\x0c\x84\x11\ \xe0\xd7\x9f\x3f\x8a\x5e\x9a\x94\xef\xf1\x1c\x46\x37\x2d\x18\x3f\ \xe6\x43\xc1\xaf\x31\x75\x1a\x1f\x7c\x5c\x77\x53\xf9\x6b\xd7\x8b\ \xc8\xba\x84\x5e\x85\xd0\x09\x21\xd8\x3f\x63\xf7\xaf\x35\xd6\xec\ \xe5\xb3\xb9\x39\x1b\x67\x63\xe6\xb7\xf1\x5d\x71\x4a\xce\xd9\x97\ \x43\x71\xdb\xe2\x82\x33\x14\x98\x23\x6a\x3b\xe1\x86\x47\xea\x2a\ \x92\x2e\xb5\xf9\x1c\x57\x6b\x19\x48\x23\x90\x76\xa9\xe0\xe4\x50\ \xa2\x62\x0e\x93\x44\xab\x28\x9b\xa5\xf5\x21\xc8\xed\x40\xb7\x72\ \x2d\x65\x51\xb1\xe6\x98\x8c\xec\x54\xf0\x69\x68\xc6\x99\xa4\x43\ \xdd\x4d\x5b\xd0\x25\xb7\xf8\x23\x14\x68\x23\x32\x3e\x3b\x0e\x68\ \x16\xc7\xf9\x42\x9d\x0e\xb1\xc4\x14\x63\x38\xc9\xac\xfa\x1f\xff\ \xd9\ \x00\x00\x2e\x32\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xdb\x00\x43\x00\x04\x02\x03\x03\x03\x02\x04\x03\ \x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ \x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ \x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ \x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00\x43\x01\x04\x04\x04\ \x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ \x12\x42\x6c\x75\x65\x20\x41\x6e\x67\x6c\x65\x20\x53\x77\x69\x72\ \x6c\xff\xc0\x00\x11\x08\x01\x20\x01\x20\x03\x01\x22\x00\x02\x11\ \x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\x01\x02\x05\x00\x06\ \x07\xff\xc4\x00\x3d\x10\x00\x02\x01\x03\x03\x03\x03\x02\x04\x04\ \x05\x02\x06\x03\x01\x00\x01\x02\x03\x00\x04\x11\x12\x21\x31\x05\ \x41\x51\x13\x22\x61\x32\x71\x14\x42\x81\xa1\x06\x23\x52\x91\x33\ \x62\xb1\xc1\xd1\x72\xe1\x15\x24\x34\x43\x53\xf1\x82\x92\xa2\xf0\ \xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x06\xff\xc4\x00\x24\x11\ \x01\x01\x00\x02\x02\x02\x02\x02\x02\x03\x00\x00\x00\x00\x00\x00\ \x00\x01\x02\x11\x21\x31\x12\x41\x03\x22\x51\x61\x04\x71\x13\x32\ \x42\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xf6\ \x3a\x14\xae\xdf\xa5\x74\x5a\x84\x80\x67\xf5\xa2\x45\x83\x10\x14\ \x39\x50\x83\xa8\x57\xde\x6f\x7c\x3c\xad\x7b\x16\x08\xe1\x98\xe4\ \x0d\xea\xd7\x0f\x7b\x79\x27\xb1\x4e\x91\xc1\x63\x81\x4a\x58\xcb\ \xae\x2e\x46\x46\xd4\xcb\x4a\x74\x80\x18\x81\x8e\xd5\xce\xce\x44\ \xc3\x33\xdb\x5c\x8b\x6b\xd8\x90\x29\xdb\x56\x38\xad\x8f\xe1\xeb\ \x48\xa4\x96\xe0\xb3\x65\xed\x70\xf1\x6f\xe7\xbd\x65\xcb\xa2\xfa\ \xdc\x43\x31\xc4\x80\x7b\x1c\xf7\xf8\xaa\x74\x2e\xa1\x2d\x87\x59\ \x81\x67\x38\x5c\xfa\x52\x13\xe0\xd6\x72\x96\xce\x15\xba\x49\x62\ \x4e\x73\x9a\x82\x1b\x1b\x0c\xd7\x5d\x0f\x4a\xe5\xd4\x70\x1b\x6a\ \xbc\x32\x03\x5c\x94\x5b\x1b\xd7\xb7\x71\x9c\x80\x3c\x56\xf5\xbc\ \xd6\x9d\x4a\xdc\xc7\x21\x5d\x64\x63\x71\xcd\x60\xe1\x49\xc1\x00\ \xd0\x3d\x66\xb7\xba\x0d\x1b\x15\xc5\x63\x2c\x3c\xba\x5d\x8b\xd7\ \x7f\x86\xe6\x79\x49\x86\x5c\xaf\xf4\xb1\x27\xfb\x57\x9c\xbf\xe8\ \x1d\x46\x26\xff\x00\xd2\x93\xbf\x2a\x32\x0d\x7b\x15\xeb\x8c\xb1\ \x61\x86\xb3\xe2\x83\x71\xd5\x2f\x25\x1b\x15\xb7\x4f\x20\x02\x6b\ \x78\x7c\x9f\x24\xed\x35\x1e\x41\x3a\x3f\x5a\xcf\xb2\xde\x6c\x0a\ \x66\x2e\x83\x71\xf5\x5e\x5e\x2a\x79\x54\x3a\x9b\xfe\xd5\xb5\x2d\ \xd1\x6c\xeb\x9a\x79\x49\xe7\x2e\x40\x3f\xa0\xa5\x2e\xe6\xd3\x11\ \x27\x00\x78\x1b\x0a\xe9\xfe\x4c\xaa\x68\xb4\x36\xd6\x56\x79\x68\ \x53\x53\x0f\xfd\xc9\xb0\x48\xfb\x0e\x28\x37\x37\x99\x24\x47\xb9\ \x3f\x98\xd2\xd7\x13\x3c\x8d\x96\x3b\x0e\x07\x6a\x0e\xa2\xc4\x84\ \xed\xcb\x1e\x05\x6a\x63\xbe\xcd\xa6\x57\x24\xff\x00\x53\x1a\x5d\ \x08\xfc\x48\x55\xdc\x28\x20\x91\xc6\x6b\x9a\x53\x21\x30\xdb\x9f\ \xfa\xe4\x3f\xed\x47\xb3\x80\x2a\x0f\x03\xf7\xae\xd8\xe2\x8b\x5e\ \x82\xcb\xa8\x72\x30\xc2\xb4\x7a\x04\xe0\xb9\x8c\xf1\x32\xed\xf7\ \xa4\x9b\x06\x45\x5d\xb7\x04\x1a\x1f\x4c\x90\xc6\xec\x3b\xa1\x0c\ \x3f\xde\xb1\xf2\x62\xb0\xff\x00\x4f\x96\x5b\x6b\xd6\x64\x24\x34\ \x6d\xb8\xad\x5e\xbb\x61\x0f\x57\xe9\xdf\x8b\x81\x46\xac\x7b\xc0\ \xec\x7c\xd2\x11\x28\xff\x00\xc7\xb3\x8f\x6c\x8a\x18\x56\x9d\xa4\ \xad\xd3\xaf\xb3\x8c\xc1\x26\xcc\x0f\x02\xb8\x67\x3d\xce\xd6\x3c\ \x05\xf5\xb3\xdb\xce\x54\x82\x08\x3c\xd5\xed\xa7\x0d\xec\x93\x9e\ \xc6\xbd\x97\xf1\x8f\x45\x49\xa1\xfc\x65\xa8\xd4\x8c\x33\xb7\x6a\ \xf0\xf7\x11\x34\x72\x10\x46\x08\xae\x98\x67\x32\x89\x61\xc3\x1b\ \x21\xd4\x99\xda\x8d\x6d\x78\xea\x70\x4d\x29\x65\x75\x8c\x47\x21\ \x38\x1c\x1e\xe2\x98\x96\x2d\x5e\xe0\x46\x4f\x04\x70\xd5\xaf\xed\ \x1a\x50\x5c\xa3\xe3\x7c\x1a\xd0\x70\x9d\x42\xcf\xd1\x94\x81\x22\ \x8f\x6b\x1e\xf5\xe6\x15\x9a\x37\xc3\x0a\xd1\xe9\xf7\x63\x20\x33\ \x7d\x8d\x63\x2c\x3d\xac\x21\x7d\x6f\x25\xad\xc3\x47\x22\x91\x40\ \x35\xb9\xd5\xa0\xf5\xe1\x32\xa9\x2f\x8e\x57\x39\x23\xe4\x56\x23\ \x0c\x1f\x22\xba\xe3\x97\x94\xfd\xa0\x53\x2e\xda\x87\xeb\x53\x0b\ \x67\x63\x57\x3e\x28\x32\x2e\x96\xa7\x40\xd5\x59\x50\x32\x13\xc3\ \x0e\x0d\x42\x3e\x76\x3c\xd5\xea\xca\x15\x46\xd2\x41\xee\x0f\xbb\ \xe6\x9a\xce\x54\x50\x6e\x23\xdf\x58\x1f\x71\x53\x6c\xd9\x5d\x3e\ \x38\xa7\xb0\xca\x39\x0a\x28\xd1\xb0\x75\xc1\xa5\x90\xfb\x6a\x55\ \x88\x39\x15\x34\x0b\x1b\xb4\x12\x1c\x6e\x0d\x32\xf2\xfa\x91\x6a\ \x43\xc7\x34\x90\x93\xce\xf5\x31\xbe\x96\xd4\xa7\x4f\xc7\x9a\xa1\ \xc8\x2e\x08\x20\x37\xf7\xa6\x6f\x42\x5d\x42\x1f\xff\x00\x71\x79\ \xc7\x7f\x9a\xcf\x24\x37\xb9\x76\xf2\x28\x96\xf3\x18\xcf\x91\x52\ \xcd\xf3\x07\xa4\xb0\xb9\x17\x76\x28\x5b\xfc\x68\x94\x24\xbf\x24\ \x70\x6a\xcc\xfa\x06\xdc\xd6\x6f\x4a\x60\x6e\x7d\x54\xc8\x05\x30\ \xfe\x0f\x8a\x7e\x1c\xcd\x37\xf9\x45\x70\xb3\x55\xa3\x56\x84\xe8\ \x2c\xdd\xe9\x79\xcb\x4b\x71\x85\xa3\xce\xd8\x51\x1a\xf3\x50\xa0\ \x42\xbb\x6e\xe7\xf6\xac\x4a\x25\x55\x20\x5c\x9f\x73\x9e\xd4\x36\ \x2c\xe7\x2c\x6a\x0e\xe7\x2c\x72\x4d\x02\xee\xe5\x62\x5e\x77\xad\ \x48\x09\x71\x2a\x42\xb9\x63\x59\x17\xb7\x26\x46\xcb\x1c\x01\xda\ \xab\x34\xf2\x4d\x36\x95\x05\xd8\xf0\xa2\xa6\x54\x86\xcd\x3d\x6b\ \xc6\x0c\xff\x00\x96\x31\x5d\x31\xc7\x49\x43\x54\x66\x8c\xc9\x2b\ \x7a\x51\x0e\xe7\x93\xf6\xa5\x59\xde\xed\xbd\x1b\x71\xa2\x15\xfa\ \x9b\xcf\xc9\xae\x06\xe7\xab\x5c\x12\xcd\xa2\x14\xe4\xf6\x02\x9d\ \x51\x1f\xa6\x21\x81\x71\x12\xf7\xc6\xec\x7c\xd7\x59\x35\x7f\x68\ \x1d\xbc\x4a\xab\xa2\x31\xfc\xb1\xdc\xf2\xd4\x73\x80\x2b\x80\x00\ \x60\x54\x10\x59\xc2\x2f\x26\xba\x5b\x31\x82\xf0\x8d\x11\x3d\xc1\ \x3b\xfd\x29\xf7\x34\xa5\x87\xfe\xa0\xb7\x81\x4c\x75\x77\x58\xd1\ \x2d\x97\x88\xc6\xff\x00\x24\xf3\xfb\x50\xec\x10\x8b\x76\x7e\x35\ \x9d\x22\xb8\xce\xb7\x46\x82\x39\x8e\x4b\x77\x27\xe8\x90\xc5\xfa\ \x56\xfd\xdc\x42\x48\x06\xaf\x15\xe7\x2f\x09\xf4\xe5\x45\x18\x30\ \xb8\x70\x3c\xed\x8a\xde\xb1\xb9\x17\x1d\x3d\x5d\x4f\x22\xb8\xd6\ \x97\xe8\x77\x4b\x04\xa6\xca\xe7\xdd\x0c\x9b\x0c\xf6\xac\x2f\xe3\ \xbe\x86\x6d\xa4\x37\x10\x8c\xc6\xdb\xe4\x76\xa7\xa7\x74\x92\x4d\ \x07\x66\x1c\x56\xb7\x4a\xb9\x8e\xfe\xcd\xba\x7d\xe0\x05\x80\xc0\ \x27\xbd\x63\x29\x70\xbe\x50\xed\xf2\xe9\x10\xe7\xc1\x14\x6b\x2b\ \xa3\x19\xd0\xfb\xa9\xe4\x56\xb7\xf1\x77\x46\x93\xa7\x5e\x91\x8f\ \x63\x6e\xa6\xb0\xd9\x73\xf7\xaf\x46\x36\x65\x36\xcb\x60\xc5\x1c\ \xb0\xea\x56\xf5\x13\xcf\xe6\x4f\xbd\x26\xea\xf0\xc9\xff\x00\xfb\ \x06\x81\x65\x75\x25\xbc\x81\x94\xef\xdc\x79\xad\x7b\x75\x82\xf6\ \x2c\xa6\xcd\xdd\x3f\xe2\xaf\x42\xbd\x3a\xf7\x4b\x69\x62\x74\x9e\ \xc6\x96\xea\x90\xfa\x73\x97\x4d\xd1\xf7\x15\xd7\x76\xb2\x40\xdb\ \xe7\x03\x83\xe2\xba\x39\xf5\x27\xa5\x2e\xea\x7b\xf8\xa9\x27\x3b\ \x8a\x56\xa1\x94\x30\xc1\xa2\x4f\x19\x8d\xbc\x83\xc1\xaa\x56\xfb\ \x40\x1d\x4a\x9a\x24\x4d\x91\x83\xcd\x59\xc6\xa1\x8a\x0b\x02\xad\ \x8a\xcf\x40\xf4\x00\x34\x4e\x07\x63\xc5\x12\x26\xc8\xdf\x91\x51\ \x38\xf6\x83\xdc\x1d\xab\x42\xd1\x1c\xc6\x0f\xc5\x5a\xad\x14\x79\ \x5f\x00\x51\x6d\x6d\xa4\x9e\x5d\x11\x2e\x71\xcb\x76\x15\x37\xa0\ \x1c\x57\x11\x5a\xb0\xda\x5a\x45\x81\x23\xeb\x3d\xc8\xe0\x50\xfa\ \xa5\xad\x9b\xd9\xbc\xd0\x36\x1e\x3d\xf6\x35\x9f\x2e\x46\x7a\xb1\ \x06\x8c\xbe\xec\x63\xbd\x2e\x37\x35\xa5\xd3\xe2\xc6\x24\x61\x9e\ \xca\x3c\xd6\xf7\xa9\xb1\xa1\x64\x86\x2b\x75\x84\x0f\x7b\x6e\x6b\ \x52\x15\x10\xc2\x14\x7d\x5d\xe9\x7b\x08\x3d\x21\xea\x3e\xee\xdf\ \xb5\x1a\x69\x12\x24\x2e\xec\x00\x15\xe5\xca\xee\xb4\xb6\x74\xfb\ \x8e\x33\xf3\xda\x95\x9a\xed\x03\x15\x07\x26\xb3\x7a\x8f\x54\xf5\ \x9c\xa4\x1c\x77\x34\xbc\x0d\x34\xaf\xe9\xc2\xa5\xdc\xf7\xf1\x5b\ \xc7\x0f\xca\x6d\xa5\x71\x7a\xb1\xa7\xb8\xee\x78\x14\xb2\x43\x73\ \x7c\xda\xc8\xf4\xe3\x1c\xb3\x6d\x9f\xb5\x31\x6f\xd3\xe1\xb6\x4f\ \xc4\x5f\x48\x19\x80\xce\x93\xc0\xac\xee\xb3\xd6\x1a\x5c\xc7\x6f\ \xed\x4e\x36\xef\x5b\xc6\x6e\xf0\x0d\x79\x7f\x69\xd3\xa2\x31\x5a\ \x80\xd2\x70\x5e\x91\xb2\xb4\xb8\xea\x52\x9b\x8b\x97\x2b\x10\x39\ \x66\x6f\xf6\xa2\x74\xae\x94\x65\x5f\xc6\x5e\x9d\x10\x8d\xc0\x3c\ \x9a\x62\xf2\xef\xd6\x22\x18\x57\x44\x2b\xc2\x8e\xf5\xbe\x27\x18\ \xa2\xd3\x34\x6c\xa2\xde\xd9\x74\x42\xbf\xff\x00\x5f\x26\xae\x83\ \x02\xa9\x6e\xbe\xc2\x48\xde\x99\xb4\x4d\x72\x80\x78\x15\xac\x35\ \x26\xc0\xd9\x4a\xe3\x3b\x66\x8d\xd1\xd4\x35\xc9\x73\x8c\x2e\xf9\ \x3c\x55\x6f\x94\x89\x08\x1b\xed\xb0\xab\x74\xdf\x74\x72\xc4\x83\ \x2e\xea\x42\xfc\xd6\x7e\x4b\xb8\xb1\x99\x7a\xfa\xe6\x24\xf2\x77\ \x3f\xae\xf4\xef\x4f\x02\x6b\x06\x88\x11\xad\x0e\xa0\x3b\x91\x49\ \xde\xc4\xc9\x21\x6c\x1c\x1f\xda\xa9\x04\xcf\x14\x81\x91\x88\x23\ \xb8\xa5\x9b\x9c\x23\x5d\xd9\x65\x55\x98\xf3\xa4\xa4\xa3\xc7\x83\ \x51\xd1\x6f\x0d\xab\x35\x9c\xa7\x83\x95\x3e\x68\x76\xb3\xfa\xe7\ \x5c\x60\x2c\xc0\x7b\x93\xb3\x8a\xa5\xf4\x62\x78\x43\xc4\x08\x64\ \xfa\x47\x71\xf1\x5c\xf5\xea\xa8\xf7\x53\x7f\xe7\x0e\x0e\x0f\x22\ \x9d\xb7\x94\x9d\x2e\xa7\x12\x2e\xe3\x1d\xeb\x06\x2b\x86\x79\x57\ \x5f\x22\xb6\xd2\x26\x0a\x1d\x6a\xd9\xc2\x35\xae\x84\x3d\x73\xa5\ \x35\xbc\x98\x13\x28\xf6\xe7\xcd\x7c\xff\x00\xa9\xda\x49\x6d\x74\ \xf1\x3a\x90\xca\x71\x5e\xb5\x24\x78\xe4\x13\x44\x70\xc3\x91\x55\ \xfe\x26\xb5\x8b\xa9\xf4\xf1\x7b\x12\x8f\x59\x3f\xc4\x03\xfd\x6b\ \x9e\x3f\x4b\xaf\x4b\xdb\xc4\x91\x93\xe0\x8a\x2d\xbc\x8f\x1b\xeb\ \x8c\xe0\xaf\x22\xa6\xe6\x32\x18\xb6\x31\xbe\xff\x00\x06\x85\x93\ \xc8\xd9\x85\x77\x47\xa1\xe9\xd7\xb0\x5e\xc5\xe9\x5c\xe3\x51\x18\ \xcd\x07\xa9\x74\xb7\x84\x17\x8f\xdc\xb5\x8f\x0b\x1c\xfa\x91\xec\ \x47\x22\xb7\x3a\x47\x55\xca\xfa\x53\x6e\xbc\x1c\xf6\xac\x59\x67\ \x31\x59\x8a\xe5\x46\x87\x19\x5f\x07\xb5\x52\x54\xc7\xb9\x4e\x54\ \xfe\xd5\xb7\xd4\x6c\x22\x99\x3d\x58\x4f\x23\x3b\x76\xac\x89\x63\ \x92\x16\xdf\x8f\xd8\xd5\x99\x4a\x00\x71\x50\xca\x18\x55\xe4\x50\ \xe0\xe3\x62\x7b\x52\xec\x25\x8c\xf3\x91\x5b\x44\x10\x55\xaa\xe4\ \x87\x88\x82\x77\xc5\x41\x91\x58\x7b\x81\x1f\x35\x41\xb9\xd2\xa7\ \x24\xf3\x8e\xd5\x06\x85\xad\xbc\xf7\x0e\x12\x30\x4f\x93\xd8\x56\ \x86\x16\xda\x1f\xc3\xc4\x76\x1b\xbb\x7f\x51\xa2\x4d\x74\x74\x68\ \x8d\x44\x6b\xe1\x6b\x3e\xea\x75\x8d\x79\xdf\xb0\xac\xf3\x45\x2f\ \x67\x23\xd8\x9c\x9f\xda\x84\x87\x45\xb3\x26\x7f\xc4\x60\x4f\xe9\ \xff\x00\x7a\xa2\xe5\xdb\x53\x72\x7f\x61\x57\x0a\x65\x93\x0a\x36\ \x1b\x7e\x95\xad\x02\x59\x45\xad\xb5\x1e\x05\x7a\x0e\x97\x6b\xa0\ \x09\x24\x1b\xf6\x1e\x28\x3d\x16\xc8\x2a\x89\x64\x18\x03\xe9\x15\ \x6e\xb3\xd5\x62\xb3\x8c\xa2\x1d\x52\x9e\x14\x57\x2c\xb2\xf2\xba\ \x8a\x6b\xa8\x5e\xc1\x69\x09\x79\x1c\x7c\x0a\xf3\x5d\x43\xa8\x4f\ \x7d\x26\x01\x2b\x1f\x81\x41\x93\xd7\xbc\x98\xcd\x70\x4e\xfd\x8f\ \x02\x8a\x88\x89\xc6\xf5\xac\x30\x90\xb5\x58\xd4\x28\xda\xb6\x6c\ \x67\x4b\x2e\x91\xeb\xae\x4b\x37\x35\x94\xda\x48\xd8\x60\x8e\xd4\ \x79\x98\xc9\xd1\x1a\x34\xdd\xa3\x6c\x91\xf1\x56\xcd\xa1\x4b\xfb\ \xfb\x9b\xd9\xb1\xb9\xcf\x0a\x2b\x47\xa1\xf4\x75\x8d\x3f\x17\x7d\ \xed\x0b\xb8\x53\xda\xa9\xfc\x2d\xe8\xc3\x69\x35\xcc\x8a\x09\x43\ \xb5\x57\xa8\x5f\xcf\x74\x70\xcd\xa5\x3b\x28\xe2\xb5\x95\xbf\xeb\ \x8a\x89\xd5\xaf\x8d\xcb\xfa\x68\x34\xc2\x9f\x48\xf3\x4b\xda\xa8\ \x2d\x93\xbd\x06\x8b\x6a\x48\x93\x03\xbd\x35\xa8\x8d\x28\xc0\x10\ \x1c\x73\x46\xb5\x1a\x63\x04\x77\xe6\x87\x18\xfe\x41\xc6\xe4\xd5\ \xa1\x60\x23\xd2\xd9\x07\x3d\xc5\x49\xce\x22\xf3\xa3\x3b\x7a\x88\ \x77\x5e\xd4\x04\x56\x57\xf5\x21\xdb\x07\x3a\x7b\x8f\xfb\x53\x0a\ \x7b\x83\x50\xe8\xaf\xee\xc6\x0f\x91\x49\x65\x9a\xa2\x4d\xcc\x17\ \x63\x4d\xca\x80\xc7\x6d\x63\x9f\xd7\xcd\x23\x7f\xd3\x9e\x2f\x7c\ \x64\x32\x1e\x08\xe2\x98\x91\x3f\xf9\x54\x91\xfd\x4b\xfe\xf5\x30\ \xc9\x24\x1b\xaf\xba\x33\xb1\x07\x8f\xfb\x54\xf1\xb8\xf4\x32\x51\ \x9e\x37\x04\x12\xac\x0d\x69\x5b\x5c\x89\xfd\xf8\xc4\xa0\x7b\xc0\ \xfc\xc3\xcf\xdc\x53\x12\x5a\x5a\x5e\xc7\xa9\x1b\xd2\x93\xc1\xe0\ \x56\x6d\xd5\x9d\xd5\x9c\x81\x8a\xb6\x01\xc8\x71\xc5\x5d\xcc\xb8\ \x14\xbb\x88\x47\x78\xa5\x7e\x97\x20\x8a\xf5\x16\xc8\x7f\x0a\xa0\ \xef\xb5\x79\xf9\xff\x00\x9b\x6d\x1c\x9a\x70\x43\x83\x8f\xd6\xbd\ \x1c\x8e\xb0\xdb\x2e\xa3\x8d\xaa\x77\xc2\x95\x99\x74\xb6\xa5\xe3\ \xbd\x56\x29\x0c\x32\x6b\x4d\xd5\xb6\x65\xf3\x4b\x7e\x2c\x89\xcf\ \x74\x26\x99\x5c\x32\xec\x72\x0f\x15\x73\xc3\x49\x19\x3d\x72\xc1\ \x41\x37\x10\x8c\xc6\xdf\x50\xac\x29\xe2\x29\x21\x1f\xd8\xf9\xaf\ \x5e\xe0\xa8\x2a\x46\x54\xf2\x2b\x17\xaa\xd9\x7b\x48\x51\xf4\xee\ \xb5\x31\xba\xe2\xab\x20\x67\x3a\xd3\x66\x1f\xbd\x11\x18\x91\xea\ \x47\xed\x23\xea\x1e\x28\x64\x10\x72\x39\x15\x28\x48\x3e\xac\x78\ \xd4\x39\x1e\x6b\x5d\x23\x4f\xa6\x75\x16\x88\x81\xfd\xd4\xf7\xad\ \x5d\x16\xf7\xb1\xe6\x2d\x21\x8f\x28\x78\x35\xe7\x30\xb3\x21\x92\ \x2d\x98\x7d\x49\xe3\xed\x44\xb4\xba\x78\xdc\x64\x90\x47\x7a\xc6\ \x58\xef\xa5\xd9\xcb\xbb\x07\x47\x3a\x46\x0f\xf4\x9f\xf6\x34\x9b\ \xa1\x53\x86\x04\x1f\x06\xb6\xed\xaf\xe3\x99\x04\x77\x2a\x08\xfe\ \xaa\xbc\xb6\xaa\xf1\xe6\x16\x59\x13\xfa\x58\x03\x52\x65\x67\x14\ \xd3\xce\xb4\x28\x4e\xe9\x9a\x95\x8c\x28\xd9\x40\xad\x76\x86\x04\ \x38\x7b\x55\xcf\xfd\x47\xfe\x6a\xd1\x0b\x35\x1b\xda\x29\x3f\x3b\ \xff\x00\xad\x6b\xcb\xf4\x8c\xeb\xcb\xa0\x9e\xd5\xdc\xd2\x63\x53\ \x36\xa6\xdc\x9e\x05\x46\x34\xee\x72\x58\xd1\x10\x15\x1f\xe7\x6d\ \xbe\xc2\xb4\x2c\xa0\x9f\x62\xee\x4f\x26\xb6\xba\x3f\x4f\x0a\xa2\ \x59\x46\x07\x20\x1a\x17\x44\xb1\x1a\x7d\x69\x86\x00\xdf\x7a\xa7\ \x58\xea\x85\xc9\xb7\xb5\x60\x14\x6c\xcf\x5c\xf2\xb7\x2b\xe3\x14\ \x6e\xb5\xd5\xc4\x47\xf0\xf6\x9e\xe7\xe0\x91\xc0\xac\x84\x4c\x31\ \x92\x66\xd6\xe7\x92\x6a\x8b\xa5\x3e\x9d\xc9\xe5\x8d\x76\xe4\xf9\ \xad\xe3\x8c\xc6\x20\xad\x22\x8f\x9f\xb5\x74\x77\x01\x5b\x3e\x98\ \xa1\x84\x63\x53\xe9\x9a\xd0\x60\xb4\x32\x6e\x87\x4b\x78\x35\xd1\ \x3b\x45\x20\x61\xfa\x8e\xc4\x52\xc5\x18\x76\xa9\x49\x19\x76\x3b\ \x8f\x06\xa5\x0d\x5a\xca\x96\xd3\xba\xe3\xf9\x17\x1b\x7f\xd0\x6a\ \x92\x21\x47\x28\xdc\x83\x55\x52\x8e\x84\x1d\xd4\xec\x47\x71\x50\ \x5e\x50\x00\x75\x12\x60\x60\x30\x38\x3f\xad\x20\x9a\xea\xa9\x73\ \x9f\xa4\x2f\xdc\xe6\xaa\xf2\xf6\x5d\xf3\xe3\x6a\xa0\xe9\x2c\x88\ \x76\x72\x28\xa9\xd4\x25\x5d\xb5\xa9\xfb\xd0\x2d\x2c\xae\x6e\x9b\ \xd8\xa4\x0f\x34\xf1\xe9\x30\x42\x99\xb8\x98\x06\xac\x5b\x8a\xba\ \xde\xf9\x59\x80\x75\xd0\x4f\xe6\x1c\x7e\xa2\xb5\xba\x5c\xd1\x33\ \x7a\x52\x28\x3a\xb8\x3e\x6b\x15\x6d\xed\xd9\x75\x42\xe2\x48\xf5\ \x69\x24\x0c\x15\x34\x78\x01\x82\x71\x10\x3e\xd2\x35\x21\xf1\xe4\ \x52\xea\xc1\xad\x75\x6d\xa3\x2d\x1e\xe9\xdc\x1e\xd4\x9b\x46\x41\ \xd5\x16\xc7\xba\xf9\xad\x4b\x59\x3d\x58\x15\xfb\x91\xbd\x0e\xea\ \xd8\x37\xba\x31\x83\xdc\x79\xa9\x8e\x76\x71\x4d\x33\x15\x03\x36\ \x13\xf9\x6f\xe3\x38\xfe\xd5\x75\x92\xee\x0c\x86\x52\x57\xbe\xa1\ \x90\x6a\xd2\xc6\xad\x90\xc3\x07\xcd\x42\x2c\xf1\x9c\x47\x2e\xdf\ \x7a\xde\xb1\xa8\xe8\x90\x4f\x22\x96\x41\x1c\x4a\x43\x39\x19\xc0\ \xc1\xff\x00\xb5\x5b\xaa\xde\x7e\x26\x5c\x26\x42\x0e\x07\x9a\x1c\ \xe2\x77\x04\xc8\xd9\x03\xb5\x2f\x82\x4d\x6f\x0c\x64\xe4\x76\x68\ \xb6\xd3\xb4\x67\x19\xdb\xc5\x0c\x21\xc5\x54\xec\x6b\x5b\xd8\xd3\ \x47\x59\x13\x3b\x1a\xa4\xb1\x87\x5c\x1f\xd2\x92\x8a\x46\x43\xb1\ \xa6\xa1\x9c\x30\xc1\xae\x79\x61\xee\x11\x87\xd6\xad\x3d\x19\x7d\ \x45\x1e\xd3\xcd\x67\xee\xac\x19\x7f\x51\xe6\xbd\x5d\xf4\x0b\x34\ \x2c\xa7\x7c\x8d\xab\xcd\x5d\x44\x62\x98\xa1\x18\x19\xa9\x39\x80\ \x7e\xe0\x44\xd0\x9c\x30\xe6\x8c\x81\x2e\xd0\xbc\x60\x2c\xa3\xea\ \x4f\x3f\x22\x80\x32\x8c\x58\x7e\xa2\xac\xca\x75\x09\xa0\x38\x61\ \xbe\xd5\x9e\x95\x68\xa5\x78\xce\x37\x23\xb8\xf1\x5a\x16\xb7\x5e\ \xd0\x51\xc8\xfb\x52\xf1\x7a\x5d\x41\x3d\xb8\x8e\xe4\x72\x0f\x0f\ \xff\x00\x7a\x59\x95\x92\x42\xa4\x14\x71\xcd\x5e\xd1\xb2\x6e\x19\ \xc6\x19\xb3\x54\x67\xf9\xac\xe8\xee\x99\x76\x90\x03\x8a\xe9\xae\ \x98\x8d\x09\xde\x9a\x02\x4d\x8f\xa8\xe3\x7f\xca\x2b\x4b\xa3\x59\ \x7a\x8d\xeb\x4b\xb2\x2e\xfb\xf7\xa1\x74\xbb\x36\xb9\x93\xd4\x7d\ \xa3\x5a\x27\x56\xbf\x04\x7e\x16\xd8\xe1\x06\xc4\x8a\xcd\xb6\xdd\ \x45\x4f\x59\xea\x1e\xa1\xfc\x35\xb1\xd2\x83\x66\x61\xde\xb3\x94\ \x60\x60\x0a\xe4\x5e\xc2\x89\x1e\x95\x18\xc1\x63\x5a\x92\x63\x11\ \x09\x19\x3d\xa8\xa9\x1a\x2a\x92\xf2\x2a\xe2\xb8\x25\xc3\x0c\x05\ \x20\x1f\x1b\x55\xe2\xb1\x62\x32\xd5\x2e\x4a\x13\xcb\x18\xda\x35\ \x67\x3e\x78\x15\x46\x9a\x61\xc4\x48\x3f\xbd\x30\x62\x0b\xb2\xf0\ \x2a\x0a\x8a\x9b\xd8\x42\xe2\xea\xe2\x35\xd5\xe9\xa9\x03\xe2\xaf\ \x65\x77\x1d\xda\xee\xba\x1b\xef\xb5\x1a\x78\xc3\x29\x04\x67\x35\ \x94\x0b\xf4\xee\xa0\x1c\x2e\xa8\x89\xf7\x29\xaa\x8d\x57\x89\xd1\ \xb6\x06\xaa\x59\xf8\x24\xd6\xad\xb4\x31\x5c\x40\xb2\xc6\x75\x44\ \xe3\x2b\xe4\x51\xbf\xf0\xd4\x2c\x08\x62\x45\x4f\x39\xed\x74\xc5\ \x48\xde\x43\x80\x39\xad\x6e\x99\xd2\x81\x02\x49\xb6\x14\xed\xbd\ \xac\x36\xe9\xa9\x80\xda\x94\xea\x9d\x4c\x05\x29\x19\xc0\x1d\xeb\ \x37\x2b\x97\x10\x1e\xfa\xfa\x1b\x48\xbd\x38\x30\x08\x1d\xab\x0a\ \x7b\x89\xef\x27\x08\xb9\x25\x8e\x00\xf3\x41\x96\x47\x9a\x4c\x0c\ \x9c\x9d\x85\x6f\x74\x4e\x9e\x2d\x13\xd5\x94\x03\x2b\x0f\xff\x00\ \x51\x5a\xd4\xc6\x1d\xa6\xde\xd1\x6d\x6d\x62\xb6\x1b\xbc\x8e\x0b\ \x7e\x95\x5e\xa6\xbe\x93\x46\x41\xfa\x1c\x53\x76\x2d\xeb\x5d\x1b\ \x83\xc0\xf6\xc7\xf2\x3b\x9a\x57\xae\x36\x5b\x1d\xcb\x8a\x98\xf6\ \x56\xaf\x40\x60\x49\x43\xc0\x6a\xd6\x9e\xde\x32\xd8\x56\xd2\xde\ \x0d\x63\x74\x13\x8b\x96\x1f\xe6\x14\xff\x00\x5e\x94\xc7\x26\x54\ \xef\x59\xca\x6f\x20\x2b\xdb\x4d\x4d\xc6\x97\xfd\x8d\x21\x2c\x6d\ \x1b\x69\x61\x83\x4d\xda\xf5\x13\xb2\xcc\xba\xbc\x1a\xee\xb6\xca\ \x66\x4c\x0c\x7b\x73\x57\x1b\x65\x29\x33\xf4\x63\xcd\x04\xa6\xf4\ \x62\x73\x55\x66\x55\x5d\x4d\xc0\xfd\xeb\xa4\xa8\xa1\x42\x3e\xd4\ \x19\xd7\x1b\xd5\x65\xbc\x19\xc6\xa0\x3e\x06\xf5\x45\x9d\x5f\x87\ \x06\xb7\x05\x80\xc9\xc5\x48\xca\x9f\x91\x55\x15\x7d\x61\x97\xdc\ \x37\x15\xbd\xe8\x33\x6f\x28\x6f\x6b\x56\x77\x5f\x80\x16\xcf\x91\ \x45\x49\x01\x3e\xd3\xc5\x57\xa8\xbb\x49\x6e\x7b\x90\x2b\x3a\x97\ \x98\x31\x88\x38\xdf\xea\x5d\x8d\x44\x6d\xe9\x36\x47\xd2\xdf\xb5\ \x16\x61\xa5\xd5\xff\x00\x2b\x8d\xfe\x0d\x0a\x40\x06\x57\xb1\xac\ \x71\x44\xce\x85\x48\x9e\x23\x82\x37\xda\x99\xbe\x90\xcd\x65\x6f\ \x72\xc0\x07\x6c\xa9\x3e\x71\x49\x96\x22\xd0\x8c\x9d\xce\x05\x31\ \x76\x34\xac\x36\xe3\xf2\x26\x4f\xdc\xd6\x62\x82\xea\x59\xc7\xda\ \xb8\xe1\x06\x2a\xcc\xc0\x0a\xa2\xee\x75\x37\x02\xb6\x8d\x1e\xa7\ \x76\x12\x3f\xc2\x5a\xec\xa3\x66\x23\xbd\x25\x1a\x66\xaa\x4a\xa0\ \xcb\x1a\x19\x92\x47\x38\x5f\x68\xa9\x8e\x1c\x70\x1c\x55\x88\x0f\ \xe6\x48\x17\xe2\x89\x14\xf6\xa8\xfa\x63\x5d\x44\xf7\xac\xe2\xb8\ \x1b\x9a\x7f\xa3\x59\xfa\x8f\xea\xb0\xf6\x8e\x2a\xe5\x84\x93\x75\ \x5a\x70\x7b\xd3\x56\x30\x29\x7b\xc9\x80\x3e\x9a\x77\xa3\x5f\x4e\ \x21\x8b\x0b\xfa\x0f\x35\x94\xcc\xcc\xc4\x93\x96\x3c\x9f\x15\xc1\ \x45\x9a\x5d\xb4\x21\xff\x00\xa9\xa9\x37\x9b\x0d\xb1\x62\x3c\xd4\ \xdc\x3e\x7f\x96\x9c\x77\x35\xd6\xf1\x99\x1c\x46\xbf\xad\x75\xc7\ \x1d\x4d\xd4\x5e\x39\xc3\x6c\x4d\x52\xfa\x11\x2c\x7f\x15\x79\xed\ \xd1\x49\xf4\xd8\x92\x3c\xd5\x23\x90\xee\x8f\x4e\xfa\x43\x5f\xc2\ \x73\x98\xcb\x59\xc8\x76\x3b\xa5\x6f\xc9\x30\x86\x02\xc7\xb5\x79\ \x3f\x74\x53\xac\x89\xb1\x53\x90\x6b\x7d\xa6\x17\x9d\x33\xd4\x53\ \xbe\x37\x1e\x0d\x73\xca\x72\xb0\xaf\x52\xea\x0c\xeb\x8c\xe0\x78\ \xac\xb9\x1d\xa4\x7e\xff\x00\x02\xba\x7c\x99\x48\x27\x35\xb5\xd0\ \xfa\x68\x8a\x31\x75\x70\x32\x4f\xd0\xb5\xbe\x31\x88\xb7\x44\xe9\ \xe2\xdd\x44\xf3\xae\x64\x3b\xaa\x9e\xd4\xdd\xf4\x85\xcf\xe1\x90\ \xfb\xdf\x77\x3f\xd2\x2a\xd7\x53\x7a\x30\x99\x5b\x77\x3b\x20\xa3\ \x74\x0b\x12\x75\x5c\x4f\xbf\xe6\x62\x7b\x9f\x15\x8b\x7d\xd5\x5a\ \x08\xc4\x2a\x18\x8c\x05\x4d\x87\x8a\xc8\xea\x04\xc9\x77\x12\x9e\ \x4b\x67\xf7\xad\x7e\xa3\x27\xb4\x81\xf9\x8e\x6b\x12\x59\x14\xf5\ \x20\x49\xd9\x76\xad\x61\xf9\x2b\x6b\xa2\x3a\xac\xe4\x9d\xf7\xcd\ \x37\xfc\x40\xa4\x95\x90\x6e\xad\xde\xb1\xe3\x79\x23\x6d\x69\xc7\ \xc5\x3b\x1f\x53\x62\x9e\x9c\xf1\x07\x5f\x9a\x96\x73\xb8\x01\x57\ \x77\x2e\x72\x4e\xe0\x62\x8c\x12\xda\xe7\xff\x00\x4e\xc6\x37\xfe\ \x86\xe0\xfd\x8d\x01\x83\x23\x15\x60\x41\x1c\x83\x52\x71\x4a\x87\ \x65\x45\xd4\xdc\x0a\xcf\x9a\x76\xba\x93\x0a\x48\x40\x71\xff\x00\ \xd5\x4f\x57\x9c\xed\x0a\x1d\xcf\x34\x95\xc4\xde\x92\x7a\x51\xf3\ \xdc\xd7\x44\x30\xf3\xc5\x11\xd2\x8b\xab\x1c\x81\x54\x33\x5b\xbf\ \xf8\x88\x50\x9e\x0d\x67\xe4\xe6\x88\x92\x63\xda\xfe\xe5\x34\xd0\ \x7d\x43\xae\xf1\xbe\xb5\xf1\x57\x8e\x65\x62\x41\xf6\x91\xd8\xd2\ \x2a\x5e\x1f\x7c\x4c\x4a\x78\xf1\x4c\x45\x2c\x77\x03\x0d\xed\x6f\ \x35\xad\xd8\x2d\x78\x8d\xfe\x2c\x5c\x8e\x7e\x6b\xad\xae\x16\x54\ \xd2\xdb\x37\x71\x52\x1d\xe2\x3a\x64\x19\x07\x83\x4a\xde\xa0\x8d\ \xc4\x91\x9f\xaa\xac\xfd\x0a\xdf\xa0\x54\x75\xf0\x72\x29\x69\xdb\ \x6c\xf7\xa2\xdd\x39\x7c\x67\xb9\x19\xa0\xbf\xba\x4c\x76\x1b\x9a\ \x82\x60\x4d\x52\x47\x19\xe1\x7d\xed\xf6\xab\x4d\x2f\xa9\x2b\xca\ \x76\xd4\x76\x15\xc8\x74\xdb\x96\xe1\xa6\x3f\xd9\x68\x5f\x51\xf8\ \xa9\x04\x8f\x73\x64\xf0\x29\xab\x0b\x57\xb9\x90\x6d\x84\x1d\xea\ \x96\x56\xed\x71\x28\x55\x04\x28\xe4\xd3\xbd\x42\xe5\x2d\xe1\x16\ \xd6\xfc\xfe\x63\x53\x2b\x7a\x9d\x8c\xc6\x80\x86\xfe\x63\x64\xd4\ \xec\xa3\x15\x53\x29\x66\x21\x01\x63\xf1\x52\x90\x3b\x90\x65\x27\ \x1f\xd2\x0f\x3f\xad\x76\xf2\x98\xf6\x22\x22\x25\x98\x20\xdf\x7d\ \xf1\x5b\x22\x68\xed\xe1\x09\x8d\xf1\xf4\x8a\x42\x2d\x31\x02\xb1\ \x28\x51\xe1\x7f\xe6\xa5\x62\x67\x7d\xff\x00\xb0\xae\x19\xe5\x72\ \xab\x13\x23\xb4\xf2\x6a\x24\xf8\xa1\x5d\x48\x10\x7a\x69\xc9\xe6\ \x8d\x78\xc2\xdd\x74\x29\x05\xcf\x6f\xe9\xa4\xcf\xb4\x12\x77\x26\ \x98\x63\xb2\xa0\x0c\x6c\x37\x26\x9e\x44\x16\xd6\xf8\xff\x00\xdc\ \x7e\x7e\x2a\x3a\x64\x01\x54\xdc\xcb\xc0\xfa\x73\x55\x91\xfd\x49\ \x4b\x53\x2c\xbc\xae\xa0\x90\x36\xde\x83\x71\x16\xa1\x90\x37\x14\ \x65\xae\x62\x01\xc1\xa2\x14\x53\xa9\x74\xb1\xc1\x1c\x53\x3d\x2a\ \xe4\xdb\xcc\x63\x73\x88\xdf\x63\xf1\x43\xb8\x8b\x57\xb9\x79\x14\ \x0c\xe7\x63\xc8\xa6\xb6\x18\xea\x11\xfa\x57\x59\x1b\x82\x72\x0f\ \x9a\xf4\x76\x72\xa4\xb1\x44\xe3\xe8\xf4\xc6\x3e\x3c\xd7\x9d\x8d\ \xfd\x7b\x7f\x49\xcf\xbd\x07\xb4\x9e\xe3\xc5\x3d\xfc\x3b\x71\x84\ \x30\x31\x39\x53\x95\xfb\x77\xa9\x79\x8a\xd0\xb0\x88\xf5\x0e\xa7\ \xea\x6f\xa1\x5b\x08\x3c\x0f\x35\xe8\x2f\x15\x61\xb4\x58\xa3\x18\ \x07\x6a\xc9\xfe\x17\x2b\x14\x97\x08\x4e\x19\x4e\x40\xf2\x0d\x6c\ \x48\x16\xe6\x15\xd2\xf8\x22\xb9\xe5\xda\xb0\xaf\x89\x69\x88\xe0\ \x0d\x85\x65\xbd\x9b\xb3\x93\xa8\x57\xa6\xba\xb7\x82\x35\xd7\x70\ \xe8\xa0\x56\x55\xef\x57\xb3\x84\x14\xb5\x84\x48\xc3\xf3\x37\x15\ \xd3\x1b\x7d\x25\x20\xb6\x57\x24\x7b\x5c\xfe\x99\xa1\xcf\x15\xd4\ \x1f\x51\x6a\xb4\x97\xb7\xf7\x5c\x48\x51\x3e\x3d\xa2\xac\xa9\x70\ \xd0\xe2\x59\x88\x4f\xea\x6d\x87\xef\xcd\x6b\xae\xc0\x6d\x6e\x24\ \x49\x41\xd6\x70\x4d\x6a\x5d\xdc\x0d\x3e\xa3\x9d\xca\x8c\x9a\xc9\ \x2b\x00\x7c\x25\xca\x16\xed\x9c\xe0\xfe\xb8\xa1\xde\xdc\x4a\xcf\ \xa1\x86\x9c\x72\x29\x64\xb5\x13\x2c\xd9\x99\xa6\x3c\x9d\x80\xa5\ \xc0\x69\x1f\x61\x92\x6b\x91\x4b\xb6\x33\xfa\xd3\xd6\x6b\x1a\x0c\ \x0c\x13\xe6\xb4\x16\xfc\x14\xf8\xc8\x23\x8a\x0a\xfb\xbd\xa7\xea\ \x1f\xbd\x6d\x0d\xd6\xb3\xfa\x9c\x1a\x64\xf5\x54\x60\x37\x38\xec\ \x6a\xd9\xa0\xbc\x52\x14\x3e\x47\x71\x52\xe5\x35\x6a\x4c\xa9\xa1\ \x33\x31\x23\xda\x09\xff\x00\x5a\xbc\x70\xcd\x21\xf6\xae\x91\xe4\ \xd4\xd6\x83\x96\xd3\x89\x07\xa7\x20\xcd\x06\xe8\xe2\x3d\x3f\xe6\ \xa0\xdb\x6b\x8e\xf0\x23\xf3\x44\xbd\x61\xab\x63\xc6\x4d\x27\x14\ \x2f\x21\xf7\x6f\xd8\x55\x61\x5d\x6e\x01\xfc\xdb\xb1\xf0\x2a\x1c\ \x82\xd8\xf2\x72\x6a\xed\xec\x88\x8f\xcd\x26\xe7\xe0\x76\x15\x28\ \x89\x9b\x5c\x9b\x6c\xa3\x65\x1e\x05\x5e\xda\x17\x9a\x41\x1a\x0f\ \xbd\x52\x18\xd9\xdc\x2a\x8c\x93\x5a\x2e\xc9\x61\x6f\xa5\x77\x95\ \xbf\x6a\x96\xe8\x4d\xd4\xc9\x65\x07\xe1\xe1\x23\xd4\x23\xdc\x7c\ \x56\x69\x6c\x1c\xb1\xc9\x27\xfb\xd4\x3b\x9c\xeb\x73\x96\x35\x54\ \x0c\x5b\xd4\x6d\xb0\x72\x2b\x58\x60\x1b\x8a\x10\x83\x03\x6a\xb8\ \x45\xce\xfb\xfd\xe8\x2b\x70\x73\x82\x06\x0d\x31\x19\x57\x5d\x42\ \xb9\xd9\xa5\x12\xde\x03\x23\xe9\x50\x07\xfb\x54\xde\xdd\x43\x6d\ \x98\x20\x21\xe6\xc6\xed\xd9\x6a\xf3\x49\xe8\x74\xa9\x25\x41\xee\ \xc7\x35\x93\x6e\xa0\x46\x0f\x2c\x77\x27\xcd\x31\xc7\xca\x8b\xe3\ \x72\xcc\x72\xc7\x92\x68\xb6\x56\xe6\xe6\x7f\xf2\xaf\x35\x48\x91\ \xa6\x94\x46\x9c\x9a\xd5\x40\x96\xb6\xba\x57\xb0\xdc\xf9\xad\x7c\ \x99\x6a\x6a\x12\x16\xea\x72\x84\x41\x12\xed\x8a\x52\x32\x58\xe9\ \x15\x4b\xa9\x0c\xb3\x12\x3c\xd3\x08\x12\xd6\x0d\x6f\x82\xed\xc0\ \xac\x4e\x20\xb4\x8c\xb0\x45\x96\xdd\x8f\x02\x92\x77\x67\x6d\x44\ \x9d\xeb\xa5\x76\x96\x42\xef\xdf\x81\x4e\x74\x9b\x07\xb9\x94\x0c\ \x1c\x7f\xa5\x6e\x4d\x4d\xd4\x29\x1c\xac\xbf\x22\xaf\x22\xac\x8b\ \xad\x4e\xe2\xbd\x15\xe7\x40\xb6\xf4\xc0\x0f\xa1\xf1\xde\xb1\xfa\ \x87\x4b\xba\xb3\x3a\xd4\x6b\x4f\xea\x5d\xf1\x52\x65\x2a\xe8\x82\ \xb1\x0d\x91\xb3\x0a\x3c\x73\x14\x99\x6e\x13\xea\x07\xdc\x3c\xd0\ \x8e\x97\x19\xe1\xaa\xa0\x90\x6a\xa3\xd3\x59\xce\x89\x71\x15\xd2\ \x9f\x63\xae\x97\x3f\x07\x8a\x8e\xa1\x7d\x3d\xaa\x95\x46\x20\xe7\ \x15\x8f\xd2\xae\x82\x66\x09\x0f\xf2\xdf\x8f\x8a\xd0\xbd\x43\x35\ \xb1\x07\x77\x41\xcf\xf5\x0f\x35\x27\x7c\xa9\x66\xfc\x6d\xd8\xd6\ \xe5\xb4\x77\x63\xb0\xa2\xda\xda\x2b\x1f\xe5\xae\xb2\x39\x76\xd9\ \x45\x75\x90\xf5\xbf\x0f\x1b\x13\xa7\x24\x11\x9f\x14\x3e\xab\x7a\ \xe5\x8c\x11\x00\x91\xae\xd8\x1b\x52\xdb\xbd\x44\x16\xe2\xe6\xde\ \xdb\x64\xc4\xd2\xff\x00\x51\x1e\xd1\xf6\x15\x97\x7b\x77\x2c\xf2\ \xfb\x9c\xbb\xf8\xec\x28\x32\x39\x76\x2b\x19\xfb\xb5\x58\x28\x88\ \x61\x46\x5c\xd5\x93\x43\x95\x7d\xc0\x13\x96\xe4\xfc\x53\xb7\x31\ \x34\x97\x0a\x80\x7b\xb4\x0c\xe7\xed\x43\xb0\x84\x34\xc1\x58\xed\ \xf5\x39\xf8\xa7\x6c\x07\xab\x77\x2c\xc7\x81\xb0\xa6\xf4\x12\x36\ \xd3\x01\xc6\x2b\xad\xd9\x96\x60\x3e\x77\xad\x2b\xc9\x16\x38\xce\ \x69\x0b\x24\x32\x4a\x5f\x1b\x03\x5b\xef\x1d\x8d\x18\xcf\xb2\xb9\ \xb7\x1b\xd4\x20\xda\xa6\xad\xe6\x0a\x2c\x51\xaf\x0a\x07\xe9\x5c\ \xc3\x02\xaf\x43\x9d\xc2\xa1\xfb\x57\x3a\x33\xc6\xfd\x41\xdb\xfa\ \x45\x2f\x70\xf9\x63\xe2\xaf\xac\xe8\x79\x4f\x32\x1f\xda\x97\x39\ \x63\x5a\x82\xd1\x0c\x9d\x4d\xc0\xdc\xff\x00\xb0\xa9\xf7\x3c\x99\ \xc6\x49\x3c\x57\x1e\x02\x0f\xd7\xef\x4f\xda\xc4\x96\xd0\xfe\x22\ \x5e\x71\xed\x15\x9b\x74\x2d\x10\x8e\xc6\x0d\x6f\xbc\xac\x36\x1e\ \x2b\x3e\x79\x4b\x39\x77\x39\x24\xd5\xae\x25\x79\xa5\xce\x0b\x33\ \x6c\x00\xa3\x7a\x31\xda\x47\xea\x5c\x10\xd3\x1e\x13\xfa\x69\x8c\ \xd7\x37\xb5\x02\x38\xf4\xff\x00\x36\x5e\x7b\x29\xaa\x3b\x7a\x8d\ \xe9\xaf\x27\x93\x56\x29\x24\xc4\xbc\x87\x48\xf1\x44\x8b\xd2\x8d\ \x72\xa7\x71\x5b\xb9\x6b\xa4\x04\x0c\xed\xc1\xa2\xdb\x4a\x63\x7c\ \x37\x07\x9a\xe9\xe3\x1f\x52\xd0\xb3\x9e\x6a\x0d\x58\xf4\xcd\x6a\ \xf0\xe4\x15\x71\xb1\xac\xb8\x83\x21\x68\x5f\x66\x43\x83\x46\xb2\ \x9c\xc3\x20\x0c\x7d\x87\x9f\x8a\xbf\x59\x8c\x65\x2f\x23\xdf\xb3\ \xe3\xb8\xac\x4e\x2a\x8b\xd2\x18\x28\x7d\x86\xa1\x51\xd4\xee\x4f\ \xd1\xe6\x81\x69\x22\xa4\xc1\xb3\xed\x61\x83\x42\xea\x39\x17\x43\ \x3c\x1e\x2a\x59\xf6\x3d\x09\x0b\x24\x09\xea\x38\xcb\xfe\x51\x42\ \x95\xde\x46\xf5\x1f\xbf\x02\xab\x18\xd6\xc5\xdb\x7c\x53\x16\x50\ \x34\xd2\x06\x23\xdb\xd8\x79\xad\xc9\x27\x35\x16\xe9\xf6\xaf\x3c\ \xca\x31\x9c\x9d\x85\x7b\x1e\x93\x69\x1d\x9d\xa9\x91\x80\xc8\xfd\ \xe8\x3f\xc3\xfd\x35\x63\x8c\x48\xe3\x0d\x8c\x9f\x81\x51\xd6\xaf\ \x32\xde\x8c\x7b\x01\x5c\xb2\xb7\x3b\xa8\xa5\x3a\x8d\xc3\x4f\x70\ \x4e\x76\x15\xd1\x25\xcc\x6b\x94\x39\x07\x90\x7b\xd0\x6d\xd7\x54\ \xc0\x7c\xd6\x90\xc6\x77\xe2\xb5\x95\xd4\xd1\x18\xfd\x46\xc6\x2b\ \x8c\x90\x82\x09\x7c\x8f\xa5\xbf\xe2\xb1\xae\x23\x78\xa4\x29\x28\ \xc3\x0f\xde\xbd\xa4\x90\x47\x2c\x64\x66\xb3\x7a\x8f\x4f\x0e\x9a\ \x5d\x75\x01\xc1\x1c\x8a\x98\xe7\x3a\x34\xf3\x35\xa9\xd2\xee\xcb\ \xc6\x23\x63\xfc\xc4\xce\x9c\xfe\x61\xe2\x93\xbe\xb5\x7b\x77\xfe\ \xa5\xec\xd4\x05\x25\x58\x30\x38\x20\xe4\x1a\xd2\x36\x58\x34\x32\ \x89\x23\x3b\x67\x50\xf8\x3d\xc5\x21\xd6\x50\xac\x8e\xc9\xc3\x8c\ \x83\x4d\xd8\x5c\xac\xe9\xa1\xfe\xbe\xff\x00\xf3\x53\x73\x09\x78\ \x4c\x7d\xc6\xe9\xff\x00\x14\xdf\x2a\xc9\x85\xd5\x2d\xf5\x01\xbf\ \x14\x58\x13\x4a\x7a\xae\x72\x5b\x7a\x01\x4d\x2c\xf1\xf6\xe4\x53\ \x76\x84\x39\x84\x73\xbd\x69\x0c\x7f\x81\x66\x7f\xf9\x24\xdc\xfd\ \xbb\x0a\x3d\xb3\x08\x2d\x37\x3c\x72\x7e\x69\x77\x26\x5b\xa2\x49\ \xce\x9d\xfe\xf5\x17\xcc\x70\xb0\xae\xe4\x6e\x69\x20\xa4\xf2\xb5\ \xc4\x81\x57\x38\xa7\xad\xa3\x11\xc6\x16\x85\x65\x6f\xa0\x6a\x3c\ \xd3\x20\x56\xad\x13\x5d\xda\xa2\x56\x08\x3d\xc7\x7f\x14\x9d\xcd\ \xc1\xf3\x8f\x8a\xce\xed\x06\x9e\xe5\x23\x07\x1b\x9a\x46\x59\x9d\ \xd1\xf3\xcb\x6c\x28\x6c\xc5\x8d\x70\xd8\x67\xfa\x77\xa6\x80\xee\ \x9b\xdf\xa5\x78\x1b\x0a\xa2\x8d\x2b\xf2\x6a\x57\x76\x2c\x69\xbb\ \x28\x06\x9f\x5e\x73\x85\x1b\x80\x7b\xd2\xdd\x09\xb2\x81\x63\x8f\ \xd7\x9b\x60\x38\x06\x85\x3c\xb2\xdd\x4e\x15\x14\xb1\xe1\x54\x51\ \x24\x69\x2f\x26\xd2\x83\x08\xbf\xd8\x0f\x26\xba\x59\x23\xb7\x43\ \x14\x07\x73\xf5\x3f\x73\xf6\xf8\xac\xce\xf7\x7b\x55\xa2\xf4\xed\ \x01\xd3\x87\xb8\xee\xdf\x95\x3e\xd4\xb4\x92\x7b\xcb\x6e\xce\x79\ \x63\x54\xcb\x3e\xc0\x6d\xe0\x55\x91\x54\x1d\xfd\xc7\xe3\xb5\x6b\ \x48\xab\x33\x31\xdc\xe6\xbb\x43\x63\xe9\x34\x50\xf8\xd8\x05\x1f\ \x6a\xba\x48\x78\x6c\x11\xf6\xaa\x07\x1b\x8e\xdf\xda\xa6\x48\xc3\ \x2e\xa4\xa3\xf5\x1b\x07\x85\x8d\xc5\xb0\xd7\x0b\x6e\x31\xda\x94\ \x8e\x42\x0e\x57\x63\xdc\x56\x65\x97\xa1\x53\x90\x70\x68\xd6\xb3\ \x85\x1e\x9c\x9b\xa1\xdb\x7e\xd5\x0c\x16\x45\xca\xec\xd4\x22\x08\ \x38\x35\x7b\x13\x24\x46\x09\x8c\x64\xe5\x1b\x74\x35\x37\xd9\x96\ \xcb\x5f\xe7\x8f\x9a\xba\xb0\x96\x1f\x45\xf9\x07\x28\x7c\x1a\x1a\ \x92\xac\xc1\xc6\xc7\xda\xe2\x94\x0a\xd5\xb5\x44\xd5\xe9\x7f\x84\ \xa1\x49\x88\x2e\x33\xa4\x0c\x57\x97\x40\x61\xba\x68\xb9\x07\x71\ \xf6\xaf\x5d\xfc\x24\x9f\x85\xe9\xad\x77\x21\xe7\x65\x1e\x6b\x39\ \xdf\xaf\x0b\x1b\x1d\x56\xe9\x6d\x6d\xfd\x24\x3e\xe2\x37\xc5\x60\ \x3b\x16\x62\xc4\xe4\x9a\x25\xdc\xcd\x3c\xc6\x46\x3c\xd0\xa9\x86\ \x3e\x31\x0c\x59\x15\x46\xd4\xc7\x6a\x65\x67\x47\xe0\x71\x59\xd4\ \x6b\x45\x25\xb2\x78\x14\xca\x7b\x58\x6e\x49\x04\x60\xb9\x6c\x0a\ \x98\xee\xa2\x71\x82\xe0\xfc\x83\x59\x97\xf3\x09\x64\xd2\xbf\x4a\ \xfe\xf4\xac\xb9\x8c\x65\x99\x57\xee\x71\x58\xf0\xd9\xb6\xb5\xec\ \x11\xc9\x19\xd4\xa3\x07\xbf\x63\xf7\xac\x0e\xa3\x62\xf0\x31\x65\ \x04\xa7\xfa\x53\x76\xb7\xce\x98\xc3\x87\x5e\xe3\x39\x06\x9d\x47\ \x8a\xe1\x3f\x97\x8c\x9e\x63\x27\xfd\x29\x37\x89\xdb\xce\x23\x32\ \x30\x65\x38\x22\xb5\x6c\xae\x44\xe3\x49\x38\x61\xbf\xeb\x42\xea\ \x36\x38\x26\x48\x41\xdb\xea\x52\x37\x14\x84\x6c\xd1\xb8\x65\x38\ \x22\xb7\xdc\x43\x3d\x5e\xd8\x86\xf5\x90\x6e\x39\x14\x0b\x46\xc1\ \xc0\xdb\xf3\x2f\xdf\xc5\x69\xdb\x4c\x97\x56\xe5\x4e\x35\x63\x04\ \x56\x55\xcc\x6f\x6f\x30\xc7\x19\xca\xd2\x5f\x41\xe8\xce\x2e\x01\ \x1f\x9c\x66\x89\x68\xba\xa6\x91\x98\x64\xea\xa5\xa0\x7d\x51\x82\ \xbc\xae\xe3\xfd\xc5\x33\x03\xe9\x9b\x23\x89\x06\x7f\x5a\xd4\x0d\ \x8d\x85\x0e\x59\x82\xec\xa7\xf5\xa1\xdc\x4c\x73\xa7\xf6\x14\xa4\ \xd2\x1c\xe0\xff\x00\x6a\x02\x4d\x2f\x3b\xef\x4b\x92\xcc\x7c\xe6\ \xa4\x29\x66\xdf\x7a\xd3\xe9\xf6\x62\x35\xf5\xa6\x1f\x20\x1a\x99\ \x65\x20\x5e\xd6\xd4\x24\x66\x69\x86\x30\x32\x05\x27\x78\xc0\xb3\ \xb2\xf0\xdb\xd3\x7d\x56\xe8\xcb\x21\x44\xfa\x45\x24\x41\x2b\xc6\ \x45\x4c\x65\xee\xaa\xf6\x56\xfa\x86\xb9\x3f\xc3\x5d\xcf\xcd\x5a\ \xe6\x5f\x59\xf1\x9d\x31\xaf\x00\x50\xb5\xcb\xe9\x08\xf2\x0a\x8e\ \x2a\x84\x7f\x51\xfe\xd4\xf1\xbb\x41\x1e\x7c\x27\xa7\x16\x42\xff\ \x00\xad\x0f\x4e\x0e\x5c\xd5\x24\x95\x23\x5c\xf1\xfe\xb4\xbf\xe2\ \x4c\x87\xda\x8e\x40\xec\xa2\xb5\x31\xd0\x68\x39\x63\xa5\x14\xb7\ \xc0\xa2\xc5\x6b\x33\x9c\xbe\x54\x78\x1c\xd2\xa8\xfd\x43\x4e\x22\ \x68\xe0\x1e\x02\xea\x3f\xde\xb8\x5b\x5c\x3b\x89\x1e\xf2\x76\x90\ \x70\x43\x60\x7f\x6e\x29\xaa\x34\xe2\xe9\x4b\x32\x1f\x4e\x72\x1c\ \x76\x6a\x5a\x7b\x7b\x9b\x56\xc4\xd1\x9d\x3f\xd4\x38\xa8\x49\x7a\ \x94\x64\x1d\x69\x26\x3b\xb2\xe1\x8f\xea\x2b\x42\xcf\xad\x44\xea\ \x20\xbd\x89\x97\x56\xd9\x61\xb5\x63\xef\x14\xad\x8d\xfc\xf6\x5f\ \xcb\xd3\xea\x41\xfd\x3c\x91\x45\xbe\xb6\x8e\xe9\x3f\x15\x62\x41\ \xfe\xa4\x1c\x8a\x50\xe2\xa2\x32\xf1\x4b\xea\xc0\xfa\x1c\x7f\x63\ \xfa\x56\xee\x1c\xee\x22\x88\xc4\x36\x0e\x43\x0e\x68\x8e\x04\x83\ \xc1\xa3\xbc\x90\x5e\x26\x2e\x53\xd1\x9c\x70\xeb\xc3\x52\xae\x1a\ \x29\x74\x39\x07\xc1\x1d\xe8\x2a\x41\x07\x07\x63\x56\x95\xb5\x44\ \x18\x8f\x76\x71\x9f\x22\xa2\x53\x9c\x79\xa0\xfb\xe7\x99\x61\x87\ \x76\x63\x8a\xa0\xfd\x1a\xcd\xef\xfa\x88\x03\xe8\x5d\x8b\x1e\x00\ \x15\xe9\x2e\xe6\x56\x45\x82\x21\xa6\x28\xc6\x00\xf3\xf3\x4b\x58\ \xc2\x96\x56\x42\xde\x3f\xa8\x8f\xe6\x37\x9f\x8a\xba\x2b\x33\x00\ \xa0\x93\x59\xd7\xb1\x00\x12\x70\x06\x4d\x39\x6d\x66\xe5\x75\x11\ \xfd\xe8\xd6\x96\xe9\x02\x7a\x92\xee\xde\x2a\xb7\x17\x6c\x4e\x10\ \xaa\x81\x58\xb9\xdb\xc4\x5d\x14\xba\x8f\xd3\x9b\x4e\x6a\x92\xb1\ \x29\xe9\x26\x40\xee\x68\xf2\x24\xb3\x39\x25\x46\xc3\x76\xec\x2b\ \x2b\xac\xf5\x48\x6d\x50\xc3\x6a\xe2\x49\x8f\xd5\x20\xe1\x7e\xd5\ \x7b\x9a\x13\xd4\xae\x61\xb2\x8f\x4e\x43\x4c\x46\xc8\x3b\x7c\x9a\ \xc8\x09\x25\xd3\x99\xa7\x62\x4b\x1a\x8b\x68\x9a\x56\xf5\xa5\x24\ \xe4\xe7\x7e\x5a\x9f\x86\x3c\x8c\x9d\x80\xad\xc9\xa4\x29\xf8\x52\ \x87\x54\x65\x90\xf9\x14\x48\xee\x6e\x21\x20\xba\xea\xff\x00\x32\ \x9c\x1a\xbd\xe4\xe1\x13\x3f\xd8\x79\xa0\xb4\x97\x18\x19\x80\xe0\ \xf9\x34\x1a\x96\xb7\xb1\xce\x06\xa6\xf7\x70\x1b\xfe\x68\x77\xf6\ \xa2\x4f\x7a\x00\xaf\xf1\xc3\x7d\xab\x37\x28\x5b\x20\xb4\x4f\x4c\ \x5b\xde\x3c\x5e\xd9\xb0\xcb\xe4\x56\x75\xf8\x02\x46\x78\x64\xc8\ \xc8\x61\xcd\x3c\x4c\x77\xb6\xc4\x70\xe2\xa2\x78\x92\xe6\x3d\x68\ \xc0\x9f\x23\x9f\xd6\x92\x05\xe1\x97\x6d\x98\x53\xb1\xd0\x3b\x43\ \x31\x46\xe7\x34\xe4\x47\xdb\xa0\x7d\xd4\xd0\xae\x51\x6e\xe1\xf5\ \x13\x69\x17\x91\xe6\x87\x6b\x21\x65\xd3\x9c\x32\x9d\xaa\xc0\x66\ \x90\x97\x62\x76\x20\x55\x23\x1a\x8f\xcf\xee\x68\xd2\x28\x65\xf5\ \x17\xb8\xc3\x0a\xa5\x89\x1f\x89\x4c\xf1\xa8\x66\xb4\x35\x3a\x65\ \x90\x8d\x04\xf3\x8f\xfa\x54\xd0\xba\xc5\xe6\x47\xa6\xa6\x99\xeb\ \x17\x26\x35\x2a\x2b\x09\xd8\xb3\x12\x7b\xd7\x2c\x66\xfe\xd5\x5c\ \x37\x34\x54\x5c\x2e\x0d\x44\x4b\xdc\xd4\xc8\x74\xae\x6b\xb4\x88\ \x0c\x8b\xb9\x00\xe2\xba\x34\x57\x3a\x58\xe1\xbb\x67\xbd\x4b\x12\ \x4e\x4d\x4c\x41\x58\xe1\x94\x1a\xd5\x82\x45\x8b\x31\xe1\x4f\xdc\ \xd1\x97\xa7\xc8\x17\xf2\x8f\xd4\x54\xc3\x10\x27\x09\x23\x29\xf0\ \x77\xa3\x24\x13\x9e\x4e\xc3\xbd\x62\xec\x0d\x6d\x11\x37\x92\x40\ \x7e\x05\x4b\x98\xd1\x72\xab\xa4\x79\xef\x5d\x70\x56\x2f\xa9\xb5\ \x1f\x8a\x52\x47\x67\x39\x35\x66\x3f\x91\x69\x25\x66\x3b\x6c\x2a\ \x8c\x75\x2e\x96\x01\x87\x83\x57\xb6\x89\xa5\x7c\x0e\x3b\x9a\xb5\ \xcb\xa8\x6d\x11\x81\x85\xf8\xe6\xad\xb3\xa1\x47\x65\x27\x65\x15\ \x42\x01\xf8\xae\xae\xa0\xa4\x84\xae\xd9\xd8\xd5\x5d\xb5\x15\x07\ \xb5\x75\xc3\x70\x3b\xd5\x19\x82\x82\x7b\xd4\xa2\x27\x62\x4e\x95\ \x19\x2c\x70\x00\xef\x5b\x1d\x22\xcc\x5a\xc5\xad\xc0\x32\xb7\x27\ \xc7\xc5\x03\xa2\xd9\x85\x02\xe6\x61\xef\x3f\x40\x3f\x96\xb5\x11\ \x0b\x1f\x8e\xe6\xb3\x47\x46\x85\xdb\x03\xfb\xd3\x70\x98\xe0\x5c\ \x82\xab\xe5\xdc\xe0\x56\x67\x52\xea\x90\x59\xa9\x8e\x3c\x49\x20\ \xfc\xa0\xff\x00\xa9\xac\x5b\xbb\x9b\xcb\xd7\xd5\x34\x87\x1d\x87\ \x61\x59\xd5\xc9\x5e\x9e\x4e\xab\xd3\x52\x5c\x48\xe6\x66\x1d\xfb\ \x0a\x15\xe7\xf1\x0d\x8c\x03\xf9\x10\x29\x3c\xf1\x5e\x55\xe1\x90\ \x6e\x0e\xf5\x06\x30\x83\x54\xad\x92\x78\x1e\x6a\x78\x43\x67\xfa\ \xaf\x5b\xbe\xbf\x52\x9a\xbd\x38\x87\x61\xb5\x2b\x67\x6d\xac\x7a\ \x92\x6c\x9d\x87\x76\xa2\xda\xdb\xe5\x44\x93\x8c\x2f\xe5\x4f\x3f\ \x7a\x6e\x24\x2c\x78\xda\xb7\x24\x9d\x22\x21\x8f\x51\xce\x36\x15\ \x6b\x87\x00\x15\x1b\x79\x34\x49\x59\x63\x4c\x01\xbd\x67\xdd\x33\ \xcb\x2f\xe1\xa3\xdd\xdf\x9f\x8a\x09\xb5\x1e\xbc\xcd\x3b\x0f\xe5\ \xc7\xb2\x8f\x26\x9c\xd0\xa0\x8d\x7e\xe7\x6e\x73\xda\xa2\x14\x48\ \xd4\x22\x8f\xe5\xc5\xff\x00\xf4\x6a\xb9\x26\x4c\x9e\x49\xab\x20\ \x39\xb4\x47\x18\xc7\x3d\xa8\x17\x1d\x36\x45\x24\xc4\x4f\xfd\x27\ \x8a\xdb\xe9\x89\x11\xb8\x60\xec\x03\x01\xed\x07\x6c\xed\x5d\x73\ \xac\x48\xc0\x8c\x6f\xc5\x67\x7c\x8f\x36\xa6\x7b\x57\xc8\x0d\x1f\ \xc7\x63\x4d\x2c\x90\xdd\xa6\x92\x34\xc8\x29\xfb\xa1\x1b\xae\x99\ \x50\x10\x7e\x2b\x3a\xe2\xc1\x87\xf3\x2d\xdf\x20\x6f\x8c\xee\x2a\ \x76\x02\x0c\x96\xf3\x7c\x8f\xde\xa6\xe5\x41\x1f\x89\x8b\x91\xf5\ \x28\xae\x49\x84\xa3\xd3\x9b\xda\xe3\x60\x4d\x40\xd7\x0c\x9b\xf0\ \x7f\xb1\x14\x07\xb5\x94\x11\xa8\x6e\xad\xb1\x15\x07\xd9\x36\xde\ \x76\xa5\xc9\x11\x49\xa9\x77\x8d\xb9\xf8\xa3\x1f\x72\xe7\x92\x3f\ \x7a\xd4\x1a\x3d\x64\xeb\xb6\x8a\x50\x7e\xa0\x2b\x3e\x25\x2e\xe1\ \x40\xf8\xa7\x6c\x5b\xf1\x16\x12\x5b\xb6\xe5\x3d\xcb\x4a\x5b\x9d\ \x17\x0b\x9d\xb0\x77\xa9\x8f\x1c\x02\xb2\xe1\xf4\x8e\xd4\x09\xf3\ \xea\x63\xb0\xad\x19\x21\x02\x53\xdb\xe6\x95\xba\x8f\x9c\x60\x91\ \xde\xb7\x8e\x41\x77\x18\x18\xfd\xe8\x91\x00\x13\x23\xbd\x0c\x1d\ \xb0\xd5\x2a\x4a\x6f\xc8\x35\xa0\xcd\xbc\x82\x32\x49\x07\x35\x17\ \x17\x4c\x46\x01\xc0\xa5\xda\x42\x78\xda\xa8\x77\xa9\xe3\xee\x89\ \x62\x49\xc9\xa9\x89\x0b\xb6\x05\x54\x0c\x9c\x0a\x7e\xda\x2f\x4e\ \x20\x74\xee\x79\xa6\x57\x42\xcc\x9e\x8c\x1a\x17\x96\x1b\xfd\xa9\ \x67\x8d\x47\xb9\xce\x05\x1a\xf2\xe1\x73\xb9\x05\xbc\x0a\x4e\x47\ \x67\x39\x63\x58\xc6\x5f\x62\xb5\x0c\x40\x52\x4f\x6a\x93\x4b\xdc\ \x3e\x5b\x48\x3b\x0e\x6b\x62\xac\xd9\x62\xed\x4e\x74\x8b\x43\x33\ \x89\xe6\x5f\x60\xfa\x41\xef\x42\xe9\xd6\xad\x73\x28\x67\x18\x8d\ \x7f\x7a\xd8\x9a\x48\xad\xa0\xd4\xc4\x05\x5e\x05\x62\xd0\x52\x55\ \x14\xb3\x90\xaa\x39\x26\xb2\xba\x8f\x53\x79\xb3\x0d\xa6\x55\x38\ \x2f\xdc\xd2\xbd\x42\xed\xee\x5b\xde\x4a\xc6\x3e\x94\x1d\xea\x90\ \xc5\x3c\xab\xed\x5d\x0b\xe4\xf3\x4d\x6c\x42\xac\x71\xee\xcc\x33\ \xe4\x9a\xba\x49\x1b\x26\xa5\x60\x40\xa2\x27\x4f\x8f\x19\x63\x96\ \xf9\x19\xa8\xff\x00\xc2\xd6\x49\x32\x06\x4f\x7d\x35\x78\x00\x33\ \x6b\x6d\x10\xa9\x76\xf8\xe0\x53\x16\xd6\x82\x3c\x4d\x39\xd5\x21\ \xdc\x2f\x8a\x69\x23\x86\xd1\x02\x46\xa0\xbe\x3c\x6c\x2a\x8a\x0b\ \x3e\x49\x24\x9a\x41\x31\x82\xef\x93\xbd\x1f\x64\x04\xd4\xa2\x04\ \x5f\x9a\x0c\xec\x59\x82\x2f\x7a\x80\x37\x72\x84\x8d\xa6\x3e\x70\ \x83\xc9\xaa\xf4\x94\x31\xdb\xbd\xe3\xee\xf2\xe5\x63\x3f\xea\x69\ \x6b\xd7\x37\x17\x6b\x04\x5b\x84\x3a\x57\xe4\xf7\x35\xab\x22\x2a\ \xcd\x1d\xba\xfd\x10\x2e\xf5\x28\x1b\x82\xaa\xb0\x8e\x79\x3f\x7a\ \xa3\x02\xa7\x06\x9d\xe9\x90\x8b\x8b\xb6\x91\xfe\x91\x4e\xc9\x05\ \x99\x04\x12\x7f\x4a\xd6\xf5\xc0\xcd\x8a\xed\xc2\xe9\x93\xdc\xbf\ \xb8\xfb\x53\x6b\x79\x11\x40\x19\xf2\x7b\x1a\x8f\xc0\xc2\xcc\x4a\ \x07\x23\xe4\x80\x29\x9b\x7e\x90\x64\x19\x58\x76\x1d\xc8\xdb\xfb\ \x9a\xcd\xb8\x85\x9a\x48\xa5\xdb\x2a\x7e\xc6\x94\xb8\x89\xe3\xf7\ \x21\x38\xad\x79\x3a\x44\x41\x4e\xb7\x85\x1b\xc0\x6d\xff\x00\x61\ \x4b\x4f\x61\x71\x1a\xe5\x1c\x48\xa3\xb6\x73\x59\x99\x63\xea\xae\ \x99\x13\x08\xe7\xff\x00\x10\x69\x61\xc3\x0a\x0b\x96\x8f\x11\xcb\ \xee\x4e\xcc\x29\xe9\xe1\x52\x7d\xc3\x41\xf9\xe0\xd2\xce\xac\xa3\ \x4b\xae\x54\xf6\x3d\xeb\x7a\x40\x7e\x83\x83\x86\x56\xfd\xea\x62\ \x6f\x4c\x84\x27\x2a\x7e\x93\x5c\xca\x50\x7b\x77\x5e\xea\x7b\x55\ \x36\x23\xe0\xd4\x0e\x5a\xca\x60\xb8\x59\x07\x1d\xc7\xc5\x5f\xa8\ \xc6\x23\x9f\x5a\x7d\x0f\xee\x53\x4a\x42\xe4\xfb\x1b\x91\xc7\xcd\ \x39\x19\xf5\xec\x8c\x47\xeb\x8b\x75\xfb\x53\xde\xc1\xa7\x94\xc9\ \x02\x49\x9e\x46\xff\x00\x7a\x5d\x66\xc6\xcd\x53\x6a\x75\xc0\xf1\ \x77\x1e\xe5\xff\x00\x7a\x0b\x56\xb1\x90\x11\x8c\x6f\xf0\x68\x44\ \x11\xb0\xdc\x57\x63\x35\xda\x1b\xb5\x6a\x5d\x0a\xd7\x54\x95\x61\ \xc8\x35\x15\x76\x2c\x84\x06\xc9\xa2\x49\x73\x23\x2e\x9c\xe0\x7c\ \x50\x70\x7c\x54\x81\x52\x88\xae\xae\x3c\xd7\x50\x06\xe2\x4c\x0c\ \x0e\x6a\x7a\x7d\xab\x5c\x4b\xbe\x74\x0e\x4f\x9a\xeb\x1b\x67\xb9\ \x9b\x27\xe9\xee\x6b\x46\xea\xe2\x2b\x28\x74\x20\x05\xb1\xb0\xac\ \x5a\x09\x71\x34\x36\x70\x0e\x32\x07\xb5\x45\x64\x4b\x2c\xd7\x73\ \xf1\xa8\xf6\x1d\x96\xad\x14\x53\x5e\x4d\xad\x89\xc1\x3c\xff\x00\ \xc5\x6d\xd8\x74\xe8\xe0\x88\x3c\xa9\x81\xd9\x7c\xfd\xeb\x3b\x93\ \xb1\x9d\xd3\xba\x6b\x31\xd6\xd8\x63\xdd\x9b\x81\x5a\x31\xdb\xdb\ \xa0\xf7\x96\x73\xf1\xb0\xa3\xbe\x58\x0c\xfb\x50\x70\x05\x25\x7d\ \x72\x23\x53\x1c\x67\xdc\x79\xf8\xab\xbd\x83\xcd\x25\x94\x7b\x88\ \x00\xf1\x96\x34\xac\xf7\x8f\x20\xd1\x10\x08\xbe\x40\xc5\x2b\xee\ \x90\xea\x62\x71\xe4\xd5\xd4\x16\xf6\xa8\xc0\xab\x31\x10\x06\x5b\ \x03\x24\x9e\xe7\xbd\x35\x0c\x61\x13\x27\x9a\xeb\x78\x70\x32\x7b\ \x55\x98\x83\x96\x3f\x4a\xd2\xd0\x39\x8e\x07\xc9\xdc\xd2\xd2\xbf\ \xa3\x67\x2d\xc1\xe4\x8d\x2b\xf7\xab\xdc\x31\xd3\xf2\xdb\x9a\x0f\ \x5d\xfe\x5f\x4d\x86\x2f\xea\x39\x34\xa2\xbf\xc2\xf0\x97\xea\x3a\ \x88\x07\xd1\x88\xb9\x07\xc9\xa7\xad\xff\x00\xc4\xb8\x27\x9c\x1a\ \x5f\xf8\x55\xd5\x7a\xb3\xc4\xc7\x1e\xb4\x65\x57\xe4\xd1\xe4\x06\ \x3b\x99\xc7\xf9\x6a\x7b\x0e\xf4\xc3\xa3\xa6\x92\x36\x67\x62\x28\ \xb1\xa0\x2f\x8f\x1b\xb1\xf1\x43\xb6\x5f\x4e\xd6\x35\x3d\x97\x3f\ \xa9\xa7\xfa\x7c\x46\x31\xae\x45\xce\x91\xea\x30\x3f\x1c\x0f\xef\ \x8a\x99\x5d\x4d\x91\x63\x2c\x76\x80\x6a\x0b\xac\x0e\x48\xd4\x54\ \xf8\x03\x8d\xbc\xd2\xb3\x5f\xca\xec\x49\x19\xcf\x77\x62\x7f\xed\ \x40\xea\xac\xff\x00\x8c\x31\x17\x00\xa0\xf7\x31\x38\x03\xcd\x2e\ \x90\x7a\x8b\xaa\x39\x63\x93\xec\x6b\x13\x19\xdd\x53\x7f\x8a\x9b\ \x23\x05\x07\xff\x00\x88\xab\xad\xcc\xf9\xd4\x4a\x31\xfb\x0a\xce\ \x6f\x52\x33\xef\x0c\xbf\x3d\xaa\x56\x56\x18\x39\x07\xed\x5a\xf1\ \x88\xd2\x6b\x88\xa5\x04\x5c\x45\x9c\xf7\xc6\x7f\x7a\x5e\x6e\x9e\ \x92\x29\x6b\x79\x01\x1f\xd0\xc6\x80\xb3\xe7\x92\x41\xa8\x37\x0d\ \x13\x64\xe4\x7c\x8a\x4c\x6c\xe9\x4a\x5c\xdb\xc9\x0c\x85\x5d\x08\ \xf8\xa5\xa5\x8f\x03\x5a\x0c\x8e\xe2\xb6\x92\xee\x19\xe3\xf4\xe7\ \x01\x87\xcf\x22\x97\xbb\xb3\x08\xbe\xa5\xbb\x6b\x4e\xe3\xb8\xab\ \xbf\x55\x19\x07\xb1\x1d\xa9\x8b\x69\x4a\xb0\x75\xe4\x73\x55\xb8\ \x87\x48\xd7\x1e\xe3\xb8\xf1\x41\x56\xd2\x75\x0f\xd4\x55\x81\xf9\ \xbf\x95\x70\xb3\x47\xf4\xb6\xe3\xfe\x2b\xae\x95\x75\xeb\x4c\x69\ \x71\x91\xf1\x54\xb7\x71\x24\x7e\x93\x1e\x77\x53\xe0\xd4\x21\x20\ \x18\xdb\xf4\xf8\x35\x67\x63\x93\x9a\x91\xbf\xc5\x45\x41\x24\x1c\ \xd6\xf4\x2e\x37\xd8\xb0\x1f\x7a\xe2\x0e\x3e\xa5\xfe\xf5\x45\xd6\ \xdb\xad\x10\x47\x26\x3f\x2d\x2c\x15\x60\xbe\x73\x55\x24\x62\xba\ \x65\x65\xe4\xe7\x3e\x2a\x94\xd7\x03\xab\x8f\x15\xc4\xe2\x81\x3c\ \x9d\x85\x03\xd7\x37\x11\xda\x43\xe9\x44\x32\xf8\xc5\x2d\x6f\x6e\ \xf2\xbf\xab\x70\x49\xce\xfa\x7c\xd4\xda\xc5\xee\xf5\xa5\xdd\x8f\ \x00\xf6\xa6\xa1\x0d\x24\x81\x40\xe4\xd7\x3d\x87\xba\x64\x68\x08\ \x3a\x46\xdf\xb5\x35\x3b\xeb\x6c\x93\xed\x14\x34\x55\x86\x2d\x3f\ \xdc\xd2\x77\xd7\x78\xf6\xa9\xdf\xc7\x8a\xce\xb7\x55\xdd\x42\xef\ \x03\x42\x73\xfe\x94\x80\x52\x7d\xcd\xff\x00\xdd\x58\x29\xfa\x9f\ \x93\xda\x8b\x14\x4c\xed\xbd\x6e\x4d\x22\xb1\xa1\x73\x8e\x00\xe2\ \x9c\xb6\x83\x7c\x01\xbd\x4c\x10\x92\xc1\x54\x6e\x68\xf7\x85\x6d\ \xe3\x11\x27\xd6\x7e\xa3\xe2\xa5\xcb\x9d\x40\x09\x88\x2c\x22\x8f\ \x7f\x27\xc9\xaa\x5d\x29\x0e\x20\x5d\xf0\x77\xf9\xa6\x7a\x5c\x25\ \xb5\x4d\x8f\xa0\x6d\xf7\xa5\x54\x86\xbd\x1a\xce\x37\xe4\xd3\x7c\ \xe8\x29\x21\xcb\x6a\xed\xaa\x9d\xbd\xb6\xb6\xea\x16\xe9\x99\x82\ \xb2\x8c\x50\x64\xb6\x9a\x27\x3a\xe3\x38\xf2\x57\x20\xd0\xc4\x68\ \x4e\xfe\x9a\xfe\xa4\x55\xbc\x8b\x59\xd8\x47\x65\x74\x97\x53\xdd\ \x07\xf4\xb7\x55\x5e\x49\xa2\x42\xa6\x7b\x86\x66\x18\x0e\x72\xc3\ \xc0\xec\x2a\x88\x90\x29\xcb\x4a\xbf\xfe\x00\x93\xfd\xcd\x3b\x00\ \x52\x8a\x23\x18\x0d\xc5\x40\xdd\x94\x61\xdf\xd5\x93\x1a\x57\x80\ \x78\xa6\xe4\x94\x45\x6a\x92\x9e\x25\x97\x50\xf9\x55\xff\x00\xbe\ \x69\x48\x12\x5b\xbb\x94\xb6\x80\x1d\x24\x85\xdb\xfd\x69\x8f\xe2\ \xcd\x31\x4e\x2d\xe3\xfa\x20\x88\x22\xd7\x2c\xae\xec\x8a\xc4\xba\ \x8e\x4b\xbb\x7b\x97\x19\x2d\x8d\x64\x79\xde\xb2\x21\x91\xe2\x7c\ \xa9\x23\x15\xe8\x7a\x3c\x82\x2b\xec\x30\xca\xb0\x2a\x47\x9a\x5b\ \xf8\x97\xa4\xb4\x0f\xeb\xc2\x09\x8d\xb7\x15\xbf\x29\x2e\xa8\xad\ \x9d\xf8\x75\x0b\x36\x19\x7c\xe2\x8d\x2d\xaa\xba\xeb\xb7\x6f\xd3\ \xb5\x61\xc4\xe5\x1b\xe3\xb8\xa7\xec\x6e\x9e\x22\x19\x0e\x57\xb8\ \xab\x66\xba\x04\x93\x2a\xc5\x5d\x74\xb0\xf3\xde\xa3\x51\xdc\x72\ \x3c\x1a\xd4\x83\xf0\xd7\xf1\x60\x90\x1b\xe7\x8a\x5a\xfb\xa7\x4d\ \x01\xca\x82\x47\x83\x49\x9c\xea\x9a\x20\xeb\x8d\xd7\xff\x00\xaa\ \xbd\xbc\xd2\x44\x75\x23\x64\x0e\x45\x50\x92\xa7\x0c\x0a\x91\xe6\ \xa7\x93\x90\x77\xae\x9d\xf6\x86\x18\xc5\x3f\xbe\x30\x12\x5e\xea\ \x78\x6a\xcf\xbc\xb7\x2a\xc5\x90\x11\x8f\xa9\x7c\x51\x9b\x63\x91\ \xb1\xa2\xac\xa2\x41\xa6\x53\x82\x38\x71\xfe\xf5\x8b\x8e\xba\x19\ \xd0\xbe\x96\xe7\x6a\x69\x8e\xb4\xf5\x07\xd4\x3e\xaf\x9a\x15\xec\ \x05\x5b\x52\x80\x3e\xdc\x1a\xad\xb4\x9a\x5b\x07\x71\x48\x0c\xa7\ \x22\xa1\xfc\xd4\x91\xa5\xbe\x0f\x15\xcd\xba\xd6\xe5\x17\xb7\x38\ \x53\xe6\xaf\xa8\xd0\x22\x38\x7f\x8a\x35\x5b\xd8\xac\xe7\x2b\x41\ \x34\x49\x8f\x6a\x5e\x79\x02\x8c\x0e\x68\x29\x71\x20\xce\x07\x35\ \x5b\x58\x5a\x79\x42\x8e\x3b\x9a\xac\x68\xd2\xc9\xa4\x6e\x6b\x42\ \x42\x96\x56\xda\x46\x35\xb5\x62\xd1\x45\x25\x9a\xb4\xec\x23\x58\ \xa3\xd6\xc3\x73\x4a\x58\x43\x9c\xc8\xdc\x0f\xde\x8b\x3c\xc4\xfb\ \x57\x73\x59\xa2\x6f\xee\x4e\x74\xae\xe4\xf6\xa5\x54\x15\x6c\xb7\ \xb9\xcf\xed\x56\x45\xf7\x61\x3d\xce\x79\x3d\x85\x35\x6d\x6c\x34\ \xeb\x6f\xa7\xbb\x79\xfb\x55\xe2\x01\x41\x0b\x31\xd6\xdf\xae\x69\ \xa8\x63\x2c\x42\x20\xde\xa5\x14\xbb\x84\x45\xdb\xb0\xad\x6b\x1b\ \x64\xb5\x40\xf2\x60\xb9\xac\x67\x9e\xbb\x50\x96\x05\xb4\xb5\x2e\ \xc3\xdc\x45\x63\xce\xcc\xd2\x96\x63\x92\x4d\x7a\x47\x41\x72\x37\ \xe1\x46\x6b\xcf\xdc\xc4\x4b\x1d\xb1\xbd\x4f\x8a\xee\xee\x95\xa5\ \xd1\x62\x2f\x6b\x22\x26\x35\x15\xc0\xcd\x64\xde\xc2\xc8\xe4\x15\ \x21\x97\x62\x29\x8e\x9f\x78\xf6\xd2\x85\x6d\x8f\x7d\xf9\xad\x5b\ \x8b\x78\xba\x8c\x3e\xa4\x45\x44\xc0\x7f\xfb\x56\xb9\xc6\xec\x79\ \xf8\x2e\x67\x8c\xfb\x65\x60\x3e\xf5\xb7\xd3\x7d\x1b\x98\x3f\x98\ \x8a\xcd\x8e\x48\xac\x7b\xcb\x67\x8d\xd8\x15\x2a\x47\x20\xd1\x3a\ \x35\xd8\xb7\xb8\x1a\x8f\xb4\xd6\xb2\x9b\x9b\x80\x7d\x62\x3f\x4e\ \x50\x02\x80\x01\xec\x29\x9b\x60\x5c\xa8\x1c\x91\x81\x4c\x75\xdb\ \x61\x71\x17\xaf\x0f\xb8\x73\xfa\xd2\x16\x53\x10\x06\x4e\x1d\x0d\ \x25\xde\x28\xf6\x7f\xc3\xd6\x0b\x6a\x86\x72\x31\x85\xd8\x9e\xf5\ \xe7\x3f\x89\x24\x0d\x73\x3b\x1e\xe7\x15\xa9\x69\xd6\xa5\x9e\xdf\ \xd1\x70\xa3\x6d\xcd\x60\xf5\x97\x0d\x23\x1c\xe7\x26\xb8\x7c\x78\ \xe5\xe7\xcb\x57\xa0\x33\xa6\x6c\x83\xce\xe2\xb7\x7a\x7c\xf1\x5c\ \xda\xfa\x17\x18\x28\xfb\x03\xfd\x26\xb0\x07\xba\x05\x61\xca\xec\ \x69\xae\x97\x30\x12\x98\x9c\xe1\x5c\x73\xe0\xd7\x4c\xf1\xdc\x48\ \x4f\xf8\x93\xa4\x49\x67\x39\x65\x5c\xa9\xf1\xc5\x65\x44\xe6\x36\ \xcf\x23\xb8\xaf\x77\x6a\x52\xed\x1b\xa7\xdd\xe3\x58\xfa\x18\xd7\ \x95\xfe\x23\xe9\x72\x59\x5c\xb7\xb4\xe3\x35\x30\xcf\xfe\x72\x2c\ \x0e\x09\x5a\x3c\x49\x11\xd8\xf2\x2b\x7b\xa3\xf5\x34\x96\x3f\x4a\ \x71\xa9\x7b\x83\xb9\x15\xe5\xad\xa5\x31\xb6\x0f\x06\x9b\x46\x68\ \xdc\x49\x19\xad\xe5\x8e\xcd\xbd\x5d\xc7\x45\x8a\xe9\x3d\x48\x0a\ \xb2\x9e\x01\xff\x00\x9a\xc9\xbd\xe9\x12\x40\xf8\xd0\xc9\xf7\xe0\ \xd1\x3a\x2f\x58\x78\x58\x61\xb0\x7b\xa9\xe0\xd7\xac\xe9\xb7\x96\ \xb7\xf1\x60\xe9\x0d\xc1\x56\xae\x37\x2c\xf0\x5e\xde\x16\x6e\x9f\ \x36\x9d\x4a\xa5\xbe\xd4\x9b\xab\x2b\x61\x81\x07\xe4\x57\xd2\xa5\ \xe9\x90\xf2\xa8\x07\xc8\xa4\x3a\xb7\x47\xb6\x9e\xdf\x12\x47\x83\ \xd9\xd4\x6e\x29\x8f\xf2\x3f\x27\x8b\xc2\xa4\x83\x4f\xa7\x20\xca\ \xf6\x3e\x29\x7b\x98\x8a\x36\x47\x07\xc5\x69\x75\x7e\x9b\x2d\x9b\ \x1d\xc4\x91\xf6\x71\xfe\xfe\x29\x15\x23\x74\x7f\xa4\xfe\xd5\xdf\ \x8b\x37\x19\x52\x17\xd4\xba\x0f\x3d\xaa\xea\x7b\x1a\x0c\xc8\x62\ \x93\x6d\xc7\x62\x2a\xe8\xda\x97\x23\xf5\xab\x05\x98\x60\xd1\xa3\ \x39\x5c\xd0\x79\x15\x68\x4e\x1b\x1e\x6b\x7d\x81\xdc\x3e\x9c\x93\ \x4a\x1d\x4e\xfb\x6e\x4d\x35\xd4\x47\xb7\x35\xdd\x2d\x54\x6b\x95\ \x86\xca\x2a\x50\x68\x95\x2c\xed\xf5\xb6\x35\x1a\x5a\x30\xd7\x12\ \x99\xa4\xe3\xb5\x44\x8c\xd7\x53\xe4\xe4\x20\xa3\x70\x30\x36\x02\ \xb2\x1f\x9a\x50\xa8\x11\x76\x51\x42\x89\x4b\x8c\xb1\xd2\xbd\xfc\ \x9a\x11\x90\x38\xdc\x60\xd3\x16\xb8\x76\x50\x78\x03\x8a\x9d\x40\ \xcd\xbc\x29\xa7\x51\x5d\x31\xfe\xed\x44\x6c\xc8\x42\xa8\xc0\x1c\ \x28\xed\x56\x45\x2f\x82\x4f\xc6\x29\xeb\x44\x86\xd5\x7d\x69\x86\ \xe3\xe9\x5a\xc5\xba\xfe\xd4\x6e\x9b\x6a\xb6\xf1\x7a\xb2\x8f\x71\ \xe0\x52\xd7\x52\x4b\x35\xf2\xc6\x99\x39\xe0\x0a\x1d\xdd\xf4\xb3\ \x3e\xa1\xed\x51\xc0\xad\x3f\xe1\x53\x11\xfe\x27\x85\xa4\x00\x83\ \x0e\xa5\x04\x73\x5c\xf2\x96\x4d\xd1\xaf\xd2\x7a\x15\xd7\xe0\xc4\ \xc3\x00\xf8\x6e\xf4\x2e\xa1\xd1\x12\x43\xfc\xdb\x53\x03\xe3\x1a\ \xe3\x19\x53\xf7\x14\xf7\x52\xeb\x52\x17\x29\x19\x0a\x01\xc0\x02\ \xa2\xd7\xae\x38\xf6\xc8\x01\xfb\xd7\x09\x7e\x4e\xda\xe1\xe3\x7a\ \xbf\x4a\x9a\xd9\xb1\x22\x6a\x43\xf4\xb8\xef\x49\x5b\xdc\xcd\x67\ \x20\xcb\x1d\x3e\x6b\xe9\x7e\x9d\x97\x50\x8c\xaa\xe9\x52\xc3\x75\ \x3c\x1a\xf3\xbd\x7f\xf8\x56\x45\xd4\xf6\xcb\x90\x7f\x21\xef\xf6\ \x35\xdf\x0f\x9e\x5e\x32\x66\xc6\x54\x8d\x07\x52\x83\x21\x82\xcc\ \x06\xc7\xcd\x63\x5e\xda\xbc\x32\x10\x57\x04\x76\xa2\x4b\x0d\xc5\ \x95\xc1\x00\x30\x2b\xca\xf8\xa7\xa1\xbb\xb7\xbc\x84\x45\x73\x85\ \x60\x36\x6f\x15\xda\x6f\x1e\x67\x48\x57\xa3\xde\xfa\x4d\xe8\xcd\ \xbc\x6d\xb6\xf5\x1d\x5a\xd3\xd0\x90\x5c\x42\x35\x21\xe7\x15\x5b\ \xab\x09\x55\xb3\x18\xd6\x0f\x75\x35\x68\xde\xfd\x22\xd1\xb2\xa8\ \x3f\x9b\x15\x78\xde\xe0\x5c\x5d\xb0\x18\x40\x72\x79\x14\x19\xcc\ \xae\x72\xfb\x7c\x66\x99\x9d\x8e\x49\x9e\x70\x3e\x13\x1b\xd1\xad\ \x6c\xa5\x91\x43\xa4\x02\x34\x3c\x49\x29\xe7\xec\x3b\xd6\xb7\x20\ \xa4\x09\xff\x00\x92\x73\xfe\x60\x3f\x6a\x5d\x1f\x43\xe7\xb0\x35\ \xa1\x78\x12\x18\x16\x04\x3c\x6e\x4f\x72\x7c\xd2\x16\xe0\x3b\xba\ \x76\x35\x9c\x79\x1a\xf2\x3b\x49\x6f\x15\xd2\x1f\x7c\x67\x4b\x62\ \xb4\x66\x48\xba\xc7\x4d\x2a\xd8\xf5\xd0\x71\xe6\xbc\xff\x00\x4f\ \x9d\xe1\x9b\x41\x39\xd3\xbf\xdc\x56\x8d\xf3\x35\xbc\xd1\xdd\x5b\ \xb1\x50\xe3\x3b\x57\x1c\xb1\x57\x97\xea\x96\x6f\x69\x70\xc8\xca\ \x40\xce\xd5\x16\x73\x01\xec\x73\xb1\xe0\xd7\xb3\x96\xca\xd7\xad\ \xd8\xb1\xc6\x9b\x85\x19\xdb\xbd\x78\xde\xa7\x63\x2d\x9c\xe5\x1c\ \x1c\x03\xcd\x6f\x0c\xe6\x5c\x5e\xcb\x05\x61\xa4\xea\x4a\x7f\xa7\ \xde\xb2\x91\xb9\x04\x70\x73\xb8\xac\xab\x59\xb3\xec\x63\xbf\x62\ \x68\xac\x0a\xb6\x45\x6e\xcd\xf1\x51\xed\x3a\x3f\x5f\x92\x35\x09\ \x3e\x64\x4e\x33\xdc\x56\xea\xcf\x05\xd4\x3a\xa1\x75\x6c\x8e\x2b\ \xe6\xf6\x77\x45\x4e\x1b\xfb\xd6\xad\xa5\xcb\x29\x0f\x0c\x84\x11\ \xe0\xd7\x9f\x3f\x8a\x5e\x9a\x94\xef\xf1\x1c\x46\x37\x2d\x18\x3f\ \xe6\x43\xc1\xaf\x31\x75\x1a\x1f\x7c\x5c\x77\x53\xf9\x6b\xd7\x8b\ \xc8\xba\x84\x5e\x85\xd0\x09\x21\xd8\x3f\x63\xf7\xaf\x35\xd6\xec\ \xe5\xb3\xb9\x39\x1b\x67\x63\xe6\xb7\xf1\x5d\x71\x4a\xce\xd9\x97\ \x43\x71\xdb\xe2\x82\x33\x14\x98\x23\x6a\x3b\xe1\x86\x47\xea\x2a\ \x92\x2e\xb5\xf9\x1c\x57\x6b\x19\x48\x23\x90\x76\xa9\xe0\xe4\x50\ \xa2\x62\x0e\x93\x44\xab\x28\x9b\xa5\xf5\x21\xc8\xed\x40\xb7\x72\ \x2d\x65\x51\xb1\xe6\x98\x8c\xec\x54\xf0\x69\x68\xc6\x99\xa4\x43\ \xdd\x4d\x5b\xd0\x25\xb7\xf8\x23\x14\x68\x23\x32\x3e\x3b\x0e\x68\ \x16\xc7\xf9\x42\x9d\x0e\xb1\xc4\x14\x63\x38\xc9\xac\xfa\x1f\xff\ \xd9\ \x00\x00\x09\x4c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x2f\x08\x06\x00\x00\x00\xa5\x82\x49\xc9\ \x00\x00\x09\x13\x49\x44\x41\x54\x78\x5e\xd5\x9a\x5b\x6c\x1c\xe5\ \x19\x86\x9f\x7f\x66\x67\xcf\xde\x4c\x36\x5e\x27\x3e\x80\x9d\xf3\ \x81\x84\x2c\xa0\x0a\xaa\x4a\x64\xab\xaa\x52\x0b\x2a\xb8\x42\x42\ \xaa\x7a\x93\x10\x5a\x62\x6e\x12\xae\x7a\x99\x46\x2a\xf4\xa6\x52\ \xb9\x6b\x25\xa0\x44\xea\x55\x11\x28\xa1\x2a\x55\x91\x2a\x12\x50\ \x4b\x4f\x10\x6c\x48\xdd\x92\xc4\xe0\xc4\x89\x63\x3b\x4e\xf6\x64\ \xaf\x77\x67\x67\xfe\xaf\x23\xef\x4a\xd3\xd5\xe2\x20\xf0\x41\xe2\ \x93\x5e\x7d\xb3\xb2\x56\xfa\x1e\xbf\xdf\xec\xfe\xaf\x66\x95\x88\ \xf0\x55\xae\x10\xb7\x29\xa5\x14\x5f\xa4\xde\x7d\x8a\x01\x81\x41\ \x2d\xf4\x0b\x64\x35\x20\x80\x86\x61\x11\x46\x04\xce\x7e\xfb\x05\ \xc6\xf9\x02\x25\x22\x9f\x0f\xb0\x5c\xfd\xe3\x29\x72\x02\xc7\xad\ \x64\x34\x97\xda\x94\x22\x9e\x4e\x90\x48\x27\x11\x1a\x95\x9f\x2a\ \xe6\x16\xca\x55\x66\x2e\xdf\xe2\xcd\x1f\xb9\x67\x05\x4e\x7c\xe7\ \x05\xce\xb2\xbc\x5a\x3e\xc0\x7b\x47\xb0\x05\x4e\x59\x89\x68\xae\ \x67\xff\x9d\x64\xb6\x75\x21\xe9\x3d\x90\xe8\x87\x98\x05\x66\x05\ \xdc\x22\x76\x65\x0c\x4a\x93\xec\x29\xef\x60\xf2\xe2\x4c\xee\xe2\ \xf0\x95\xdc\x1f\x9f\xac\x3e\x2f\x70\xe2\xe1\x17\x29\xb0\x8c\x52\ \x22\xf2\xa5\x56\xe8\xfd\x23\x64\x05\xce\x74\xef\xeb\xb7\x7b\xee\ \xdd\x89\xf4\x3e\x04\xdd\x8f\xa3\x42\x9d\x80\xdb\x90\x5c\x04\xa9\ \x00\x49\xa0\x02\x0b\xaf\xc3\xc4\x5b\xb8\x93\x61\x46\xff\xf9\x09\ \x13\x63\x53\xc3\x02\xdf\xfc\xde\x6d\x20\x44\x64\xe5\x01\x3e\x38\ \xc2\x80\xf8\xed\x8e\xfb\x77\xd8\x1b\xee\xde\x01\x7b\x7e\x82\x8a\ \xde\x07\xb8\x88\x5c\xf2\xf5\x31\xc8\x28\xc8\x35\x94\x4c\x82\x5c\ \x47\xc9\x34\xa8\x7d\xc0\x37\xa0\xf8\x36\x5c\x70\x98\xb8\x70\x83\ \x91\x77\x2f\x2c\x42\x3c\xe2\x43\x7c\x19\x00\x83\x2f\x57\xa7\xfa\ \xbe\xb6\xd5\x4e\xdf\xb5\x15\xb5\xef\x59\x54\x74\x0f\x22\xa3\x78\ \xfa\x35\xb4\xfe\x2b\xf8\x10\x48\x01\x64\xae\xe1\x80\x54\x01\x07\ \xf4\x5b\xe0\xfc\x0c\x22\x73\xb0\x79\x94\x9e\xad\xeb\xe9\xdf\xd9\ \x9d\x15\x78\x99\xa5\x6b\x65\x01\x46\x86\xf8\x69\xaa\xc7\xce\xda\ \x5b\xd2\xa8\xbb\x7e\x08\x21\x1b\xd1\x7f\x46\xbc\xd7\x50\x32\xe6\ \xeb\x2a\xc8\x14\xc8\x4d\x14\x05\xa0\x8c\xa2\x09\xa1\x35\x68\x05\ \xee\x47\x60\xd6\x31\xfa\x3e\x65\x57\xb6\x97\x94\x1d\x1b\x3c\x7d\ \x98\xc1\x55\x07\xf8\x70\x08\x1b\x38\x9a\xd9\xdb\x83\xb1\xf5\x2e\ \x54\x6c\x1f\xe8\xb7\x10\xef\x55\x58\x1c\x7c\x62\xb1\x2b\x99\xf4\ \x35\xb3\x08\x81\x14\x81\x32\x50\x03\x31\x1a\x00\xda\x00\x51\xa8\ \xb0\x83\x5a\x7f\x8b\x1d\xfb\x7b\x01\x7e\xb9\x16\x9f\x42\x83\x89\ \x4d\x1d\x76\x68\x9d\x87\xd9\xf3\x30\xc8\x75\xc4\x7b\x11\x05\x40\ \x18\x30\x40\x3c\xa0\x0a\xcc\x83\x94\x51\x94\x40\xe6\x41\x0b\x78\ \x26\xe8\x26\x44\x53\xe6\xba\x39\xec\x74\x86\x68\xdc\x1a\x38\x75\ \xb8\x9e\xfd\xfe\x4b\x0c\xaf\x26\xc0\x81\x78\x26\x81\xd1\x69\x03\ \x16\x78\xaf\xa0\x64\x1c\x21\x0a\x58\x80\x02\xd1\x80\x83\x62\x01\ \xa8\x80\xf8\xd2\x1a\x3c\x23\x90\x0e\xa4\x14\x18\xb1\x05\xba\xef\ \x48\xf1\xc9\xc7\x37\x07\x61\x75\x01\xb2\x56\x32\x84\x69\xdf\x01\ \x52\x06\xef\x0d\xa0\x88\xc2\x02\x15\x02\x51\x80\x06\x71\x01\xa7\ \xd1\x35\xcd\xc1\xcd\xc0\x81\x16\x08\x85\xb2\x5c\xd6\xa5\x23\x08\ \x1c\x58\xd5\x15\x52\x90\x35\xe3\x06\x18\xbe\xf4\x2c\xb8\xbe\x0c\ \x01\x55\x03\x51\x04\x25\xa0\x15\x88\x01\x9e\x02\x6d\x12\x38\x10\ \x5c\x37\xef\x07\x94\xa9\x11\xed\xad\xcd\x37\xb1\xf6\x5c\xc4\xab\ \x43\x7d\x0c\xdc\x10\x28\x0d\x0a\x50\x12\x00\x88\x6a\xa8\x39\xa0\ \x2f\x82\xa1\xdb\xa5\x4c\xd0\xda\x5d\x23\x00\xed\x82\x0f\x80\xe7\ \x40\xdd\x04\xc3\x08\x86\x57\x80\xd0\x04\x00\xc4\x58\x1a\x22\x70\ \x01\xb7\xa2\xd1\x6b\xe1\x80\xc0\xd9\xda\xad\x6a\xae\x5e\x98\xc3\ \x4a\x87\x9b\x0e\x48\x53\x04\x25\xed\x2e\x34\x7b\x2b\x40\x13\xcc\ \xad\xd6\xa9\x3b\x1e\x40\x61\xb5\x1d\x18\x76\xe6\x9c\x5c\x6d\xfa\ \x12\xf1\x81\x2c\x78\x51\xc0\x69\x77\x80\xa6\x03\x5a\x81\xb4\x02\ \xd0\x7e\xcd\x42\xa1\x46\x31\x5f\x43\xc1\xdb\xab\x0d\xf0\x7a\x75\ \xc6\x39\x56\x99\xbe\x45\xaa\x78\x05\x33\xd4\x07\xde\x65\x50\x04\ \x45\x00\x81\xa6\xe9\x44\x03\xa0\xcd\x0d\x51\xd4\xe6\xea\xd4\xab\ \x0e\xf9\xd9\x3a\xc0\xe9\x55\x05\xb8\xfb\x57\x9c\x1d\x19\xd2\xe3\ \x4e\xd1\x1d\xc8\x9f\x7f\x8f\xce\xec\x5e\x70\xaf\xb5\xde\xc0\xb4\ \xb9\xd0\x0a\x21\x2a\xe8\x40\xe1\x4a\x91\xd9\xe9\x3a\x4e\x55\x4e\ \xfa\x5f\x62\xe3\xab\xed\x00\x02\x87\xe6\xaf\xd4\xcf\x98\x89\x49\ \xe6\x26\xd6\x91\xec\xea\x01\x77\x8a\xb6\x12\x45\x70\x2f\xb4\x0f\ \x0e\x90\xbf\x52\xa0\x52\xac\x71\x75\xdc\x05\x38\xb1\x26\x81\x26\ \xeb\xbb\xf0\xc1\x11\x39\x39\x37\xee\x1d\x14\x7d\x1e\x76\xef\x26\ \xb9\x21\x0e\x52\x03\x05\x48\x9b\x0b\x01\x40\x50\x94\xa6\xca\x94\ \xae\x97\x98\xf8\x04\xb4\xcb\x33\x83\x2f\x31\xbe\x66\x89\xec\x9e\ \x5f\x73\xe8\xdc\x11\xc9\x19\x56\x68\x60\x56\x46\x71\x7a\x33\xd8\ \xbd\x11\x0c\xd3\x20\x28\x05\x42\x5b\x69\x4f\x33\x3b\x76\x93\xf9\ \xe9\x0a\x37\x66\x42\x94\xf2\xee\x59\x3f\x0b\x3c\xbf\x36\xc7\xe9\ \x20\xd0\x64\xcd\x70\x68\xa0\xff\x9e\xfd\x64\x76\x3d\xc8\xdc\x8d\ \x79\xae\x9e\x9b\xa4\x30\x51\xc2\x99\xaf\x83\xb4\x0f\xef\x54\x1c\ \x6e\x5d\xce\x33\xf1\xde\x35\xe6\x26\x2a\xd8\xa1\x1e\xb6\x6d\xd9\ \x8e\x15\x0e\x65\x7f\xff\x24\xd9\x35\xcb\xc4\xc3\x43\xd8\x22\x9c\ \xd9\xfe\xad\xfd\xc4\xfa\xba\x91\x7d\xcf\x11\x7d\x60\x81\xfc\xdf\ \x8e\x93\xff\xf0\x1d\xf2\x97\x0b\x98\x11\x83\x70\x3c\x4c\xb3\xa8\ \x96\xaa\x88\x0b\x86\x01\xf1\xb4\x22\xb1\xcb\x44\xb9\x37\x61\x3c\ \xce\x3d\x7e\x24\xfd\xfb\xfb\x63\x67\xfc\x3c\xb0\xd9\x5f\xa3\xc2\ \xaa\x3b\xa0\xe0\x54\xef\x7d\x5b\xed\x58\x26\x85\x6c\x3f\x84\xb2\ \x76\x63\x46\xee\xa6\x33\xf7\x12\x3d\x8f\x1c\x24\xd5\x73\x3f\xd1\ \xd4\x36\xd0\xeb\x41\x92\x40\x84\x44\x26\x49\xe7\xee\x28\x5d\xf7\ \x1a\x24\x07\xc0\x08\x2b\x54\x4c\x50\x03\x33\xd8\x49\x8b\xbd\x7b\ \x7b\x6d\xe0\xd4\xea\x39\x10\x04\x9a\x63\x89\x2e\x3b\x97\xd9\xd9\ \x07\x9b\x1f\x44\x75\x7c\x17\x58\x00\x99\x41\x7b\xbf\xc5\xea\xab\ \x61\x77\xf6\x53\x9f\x08\xe3\x95\x22\x28\xb5\x00\x46\x05\xc3\x98\ \x07\xe5\x80\x12\x14\xcd\x13\xa8\xa9\x08\x6d\xf4\x30\x32\x25\xb6\ \x5c\x4a\x33\x79\x2d\x9f\x3b\x75\xb8\x72\xcc\xcf\x03\xcf\xaf\x0a\ \xc0\x47\x43\xd8\x02\xc7\xfb\x1e\xd8\x09\xe9\x18\x6c\xfc\x31\xc8\ \x3c\x30\x8d\xb8\x3f\x6f\x9e\xff\x5d\x54\xa4\x4a\x64\x2b\x88\x63\ \xa2\x2b\x1e\xd4\x1c\xc4\x71\x40\xd5\x17\x87\x56\x86\xc2\x08\x1b\ \x7e\x6f\x9e\x4a\x23\xf3\x90\x8a\x70\xef\x9e\x8d\xbc\xf9\x97\x4f\ \x8f\xbf\x76\x98\x93\x8f\xf9\xab\xb4\xe2\x00\x0a\x8e\x77\xed\x1b\ \xb0\xc3\xa9\x30\x6c\xfe\x01\xa0\x9b\xc3\x3f\xdb\x88\x93\x00\x34\ \x73\x00\x55\x94\x55\x21\xb4\xee\xff\x03\xbd\x6a\x3f\x4e\x37\xcf\ \x4a\xf4\xcd\x11\x9f\xed\x60\x77\xbf\x6d\x8f\x5e\x2e\x1c\x03\x7e\ \xba\xa2\x99\xf8\xdf\x43\xd8\x66\x38\x74\x6c\xc3\x8e\x5e\xe8\xb6\ \x21\xf6\x75\xa0\x84\xb8\xcf\x81\x3e\x07\xcc\x36\x24\x37\x41\x6e\ \xa1\x24\x8f\xa2\x08\x52\x06\x16\x9a\x71\x32\x08\x30\xcd\x1e\x64\ \x86\xb0\x40\x57\x95\xad\x9b\x12\x58\x21\xe3\xf8\xab\x87\xb1\x57\ \xda\x81\x63\xf6\xe6\x4d\x98\x31\xa0\xf7\x31\x90\x22\xe8\x77\x50\ \xfa\x4f\x80\x19\x84\x19\x34\xe0\x82\xd4\x83\x44\x26\xea\xb3\x8e\ \xd0\xed\x20\x9b\x34\xd6\xb8\xe2\xce\xce\x28\x97\xa6\x2a\x81\x0b\ \x2b\x04\x70\x74\xc3\xce\x5e\xb0\xc3\x10\xda\x06\x14\xc1\xfd\x05\ \x50\x6a\x9a\x18\x00\x2c\x4a\x74\x70\x0a\x0d\x00\x02\x05\x6e\x04\ \xc7\x0b\x43\x41\x46\xd8\x5e\x8c\x72\x71\xaa\x72\x34\x00\x58\xe6\ \x0a\x8d\x3e\xcd\xc1\x54\x5f\xa7\x6d\x25\xa2\xd0\x77\x00\x74\x19\ \xea\x7f\x00\x6f\x06\xb4\x06\xed\x82\x38\x0d\x69\x0f\x3c\x69\x8d\ \x8f\xae\xd9\xe8\x4b\x25\x32\x31\x02\xd0\x6e\x83\xb8\x29\xf4\xa4\ \x2c\xfb\x95\x27\x38\xb8\x22\x0e\x28\x78\xb4\xa3\x6f\x03\x44\x2b\ \x10\xd9\x05\x7a\x0e\x6a\x6f\x80\x98\x41\x90\x41\x5a\x0f\x70\xa8\ \xb6\x2c\xd0\xda\x83\x55\x6a\x51\xc4\x80\x18\xf4\x26\x4d\xae\x15\ \xeb\x8f\x02\x27\x57\x62\x85\x06\x93\x7d\x9d\x90\xee\x06\x11\xf0\ \xae\x80\x73\x15\x94\xd1\x9e\x85\x59\xe2\x04\xaa\x83\x4c\xd0\xb2\ \x3e\x81\x0b\xc1\x7b\x36\x5a\xf4\xcc\x56\x01\x06\x97\xed\xc0\x7f\ \x9f\x66\x30\xd6\x65\x63\x5a\x21\x48\xf6\x83\x37\x07\xf5\xf7\xc1\ \x6b\xfd\xef\xb7\x9e\x42\x55\x6b\x98\x09\xee\x85\x25\x52\x99\x6a\ \x55\x26\x8c\x85\x26\x13\x33\xf8\xdd\x13\x7a\x10\x38\xbd\x1c\x07\ \x0e\xc4\x7d\x00\x42\x75\x88\xa6\x1b\xeb\x53\xbf\xd1\x00\x60\x89\ \x2c\xbc\x84\x0b\xc1\x3a\xb5\x01\x05\x0e\x01\xc4\x4c\x88\x40\x26\ \x0a\xd3\x0b\x1c\x58\x2e\x40\x36\xde\xb5\x0e\x22\x11\x10\x5f\x5e\ \x05\x9c\x29\xf0\xda\xd7\xa7\x1d\x22\x00\x69\x59\xa1\x60\xf0\xd6\ \xbf\x09\x41\x25\x43\x74\x45\x1c\x80\xec\xb2\x56\x48\x41\x6e\xd1\ \x01\x2b\x0c\xde\x3c\x48\x15\x3c\x09\x56\x08\x5a\x6f\x62\x54\xcb\ \x2a\xb5\x48\xb7\xf7\x60\xf7\x69\xad\x94\x85\x1d\x12\x80\xdc\xca\ \x04\x1a\xf1\xc0\x9d\x07\x6a\xe0\x85\x02\x07\x68\x5b\xa1\x16\x90\ \x76\x88\xf6\xeb\xa5\xca\x32\x56\x32\x0f\x54\x4a\xe0\x4c\x82\x11\ \x05\x49\xb6\x38\x10\xb8\xb0\x74\x9c\x6c\x17\xb7\x1d\x9e\xd9\xea\ \xca\x04\x1a\x81\xd3\xf9\x0b\x57\x07\xd7\xef\xe8\x83\x6b\xe7\x21\ \xdd\x01\x66\xb8\xe9\x80\x00\x7c\x8e\x03\x00\x5f\x60\xf0\xba\x86\ \x8f\xf2\x8b\x00\x17\xca\x00\x9c\x5e\xae\x03\xcf\x4c\x9f\x1b\xcb\ \x89\x27\x76\x7a\xcb\x46\x98\xaf\x40\xac\x0c\x49\x13\x0c\xb9\xfd\ \x4d\x0c\x2d\x03\x7f\xee\xe0\x63\x65\x5f\xa5\xc5\xeb\x8b\x65\x18\ \xc9\x53\x50\xf0\xcc\xb2\x9f\x52\xfe\xe7\x69\x06\xb4\xf0\x72\xbc\ \xb3\x23\x97\x1e\xe8\x22\xd5\x99\x04\xcf\x83\x88\x03\x51\x17\x62\ \x9e\x2f\x01\x73\x09\x17\x96\x1a\xb8\x58\x87\xd9\x6a\x20\xfc\x56\ \x83\xd1\x22\xcc\xd4\x18\x16\xe1\xd0\xe3\xbf\x61\x78\xc5\x9e\x52\ \x9e\x1f\xe2\xa0\x86\xa3\x56\x2c\x9c\xed\xf0\x21\x92\xa9\x18\xc9\ \x8e\x30\xa6\xa2\x01\xe4\x8b\x84\x80\xd6\xb4\x4b\x1a\x5d\x04\x66\ \x9b\xc7\x6b\x69\xe8\x66\x0d\xae\x2f\xc0\xa4\xaf\x79\x97\x71\x81\ \x13\x7e\xa0\x39\xb9\x6a\x8f\x59\x47\x86\xc8\x8a\x30\xa8\xe1\x80\ \x40\x2e\x9a\x08\x63\x18\x8a\x64\x32\x0c\x5a\x13\xb6\x0c\x22\x26\ \xa0\x35\xe2\x0b\x69\x40\xd5\x5d\x4d\xb9\xa6\x11\x11\x6e\x56\x05\ \xc7\x6b\x98\x20\x70\x56\xc3\xdb\x22\x9c\x1e\x0c\x1e\x2f\xb1\x4a\ \x00\xed\xfa\xd7\x11\xb2\x5a\x18\x08\x7e\x1b\xc1\x7e\x01\x5b\x0b\ \x34\x5e\x37\xbb\x50\xd0\x30\x12\xfc\x76\x82\xf1\x87\x5e\x6c\x1f\ \x78\x19\x00\x5f\xcd\xfa\x1f\x35\x30\x04\x37\x1b\x34\xa6\xbe\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0f\x35\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x0e\xfc\x49\x44\x41\x54\x78\x5e\xed\x98\x79\x70\x55\x65\ \x9a\xc6\x7f\xe7\x9c\xbb\x24\x37\xb9\xd9\x37\x92\x90\x18\x93\x10\ \x96\x48\xd8\x09\x22\x8b\x08\x11\xd3\x80\x8a\x2c\x3a\xed\x82\xda\ \xd3\x6a\xab\xd3\x33\xea\xf4\xd0\x5d\x6d\x4f\x4f\x4f\xd9\x5d\x6d\ \x77\x57\x97\x4d\x4d\x6b\x4f\xd9\xa3\xa3\x08\xa3\xd0\x2c\x12\x44\ \x90\x45\x16\x43\x00\x21\xec\x4b\x02\x04\xc8\x9e\x7b\x73\xf7\xfd\ \xdc\x73\xbe\xb9\x4d\x4e\x0d\x50\x4c\xb5\x50\x53\x16\x76\xd5\x3c\ \x55\x4f\x9d\xf3\xd7\xbd\xef\xef\x3c\xef\x7b\xdf\xef\x5c\x49\x08\ \xc1\x5f\xb3\x64\x6e\xad\xfe\x1f\x00\x21\x04\x86\xb9\x11\xfd\x0d\ \x54\x3f\xae\x28\xbf\x79\x31\x2b\xbb\xf9\xbb\x66\xf3\x67\xf3\xe1\ \x1e\xc0\x0a\x48\xb7\xa0\xf6\x9b\x4b\xe0\xdb\xf0\x5c\x69\x61\xd1\ \x9e\xc5\x23\x47\xbe\xf4\xb3\xa5\x4b\x47\xbd\xba\x71\xe3\xcc\x91\ \xd9\x19\xab\x07\xdb\x27\x3c\x42\xd5\x3f\xd6\x00\x26\x40\xfa\x46\ \xb6\xd0\x63\x92\x54\x37\xaa\x72\xc8\xef\x9f\x28\x2b\x49\x1f\x23\ \xfa\x49\x3e\xb3\x8b\xe2\x21\xe5\xd4\xbf\xf2\x52\xc6\xa0\xaa\xd1\ \xef\x24\x55\x4d\x6c\x34\x8d\xfc\xf9\x07\x96\x92\x05\x15\x80\xf9\ \x1b\x07\x90\x6c\x32\x3d\x39\xdd\x22\x93\x67\x76\x91\x77\x67\x29\ \xe6\x54\x0f\x2d\x9f\x6d\xe4\xc2\xdc\x17\xf9\x43\xc3\x1b\x6c\x7f\ \x6b\x5e\xf2\xd8\x05\x73\x16\x91\x76\xc7\x3b\xc8\xe6\x5c\xc0\xf2\ \x8d\x02\x90\x55\x35\x68\x8b\xbb\xc8\xac\x4a\x27\x54\x54\xca\xd1\ \xfa\x1f\x71\x62\xda\xd3\x64\xa7\x58\x28\xce\xb0\x32\x69\x90\x99\ \x67\xe7\x55\x93\x3f\x62\xdc\x64\xd3\xa0\x39\x0f\x00\x76\x40\xfe\ \xc6\x00\x1c\xb5\x8f\xd8\xb3\x3f\x35\x97\x8f\x87\x3e\xc6\xaf\x86\ \xbf\xce\x7b\xd2\x4c\xf6\x6c\x5c\xc3\xb9\x9d\x6b\x59\xf3\x5f\x2b\ \x69\xf8\xbc\x99\x9a\x0c\x95\x9f\x3d\x3a\x8e\xbc\x92\x09\xdf\x97\ \x53\x6e\x2b\x05\xac\xdf\x0c\x80\x71\x7f\x94\x1a\x87\xbd\x30\xf3\ \x9f\x47\xff\x8e\xc7\x7a\x9f\x67\x45\xdb\x20\x0e\x7c\xf6\x19\xc3\ \x93\x83\x2c\xbe\xff\x7e\xe6\xd5\x4d\xe3\xdc\xb1\xbd\x44\xbb\x0e\ \xb0\x64\x4e\x1e\x8b\xea\xa7\x0d\x91\x73\xee\x7e\x0a\x48\x07\x94\ \x5b\x0f\xa0\xab\xc9\x58\x93\xa6\x5d\x6a\x8e\xe3\x3b\x7c\x89\x1e\ \x17\x04\xfc\x1e\x0a\xf2\x8b\xe8\xe8\x74\x93\x9d\x53\xc0\xb3\x7f\ \xfb\x34\x87\x0e\x1d\xe1\x8b\x3d\x8d\x3c\xff\xe8\x24\x86\x0d\x9f\ \xf0\x98\x29\x7b\xe2\x68\xc0\x76\xcb\x01\x64\x49\xa8\x72\x24\xd2\ \xcf\x85\x0b\x70\xb1\x95\xf4\x90\x8b\x7c\x2d\x48\x47\x57\x0f\xfd\ \x2e\x1f\x9d\x9d\x7d\x09\x3e\x2b\x4b\x9e\x5c\x42\xf3\xe1\x66\x22\ \xfe\xf3\xbc\xfc\x9d\x39\x69\x49\x39\x13\x9e\x03\xb2\x00\xf3\x2d\ \x05\xd0\x0f\x3e\xa7\x4a\x51\xd7\x3b\x92\x25\x42\x65\x5e\x94\x07\ \x94\x3e\x06\xc5\xad\x9c\x3c\x73\x86\x68\x34\x8a\xd3\xe9\xc3\xe3\ \x09\x60\xb3\xd9\x98\x3b\x67\x2e\x1b\x36\xac\xe2\xae\xd1\x39\xcc\ \x98\x3a\x6d\x96\x39\x77\xda\x9d\x40\x0a\x20\xdd\xd2\x21\x16\x7d\ \x3b\x97\x9b\x0a\xf4\x96\xe2\x64\x8d\xb8\x2b\x80\x39\xa9\x94\xf6\ \x0e\x27\xbd\xbd\x9d\x78\xbd\x41\xfa\xfa\xbc\xc4\xe3\x1a\xa5\xb7\ \x95\x30\x7c\x44\x35\x3b\xb6\xae\x62\xc9\x43\x93\x93\x32\x06\xd5\ \xbe\x2c\x49\xa6\x5c\xc0\x72\x4b\x01\xf4\x9e\x2d\x1e\x3d\xd2\xf3\ \xda\x59\x4f\xaf\xe8\x77\xfb\x49\x32\xe7\xa1\xc6\x0b\xb9\x74\xe9\ \x2c\x1e\x8f\x0f\x97\xeb\xcf\xf6\x03\x70\xef\xbd\xb3\xe8\x73\x74\ \x61\x57\x7a\x78\xe4\xc1\xfa\xb1\xd6\xe2\xf9\x8f\x03\x69\x80\x7c\ \xcb\x00\x00\x4d\x3b\xf5\xcb\x55\x7d\x21\xc7\xb6\x76\xaf\x93\x70\ \x20\x4c\x8a\x6d\x04\xe7\xce\x9d\xc5\xeb\x75\x25\x1c\xc4\xe1\xf0\ \x12\x89\xc4\x48\x4a\xb2\x24\x20\x66\x73\xe4\xc8\x1e\x1e\x9e\x33\ \x86\x82\xb2\x71\x4f\xa5\xd9\xf2\xcb\x80\x24\xbd\x12\x93\x5a\x4e\ \xa6\x77\x28\x63\xbc\xa3\x52\x1f\x70\x54\x5b\xe6\xee\x2e\xa1\x08\ \x50\xbe\x6e\x00\x80\x68\xd4\x7f\x76\xe9\x05\x5f\x9f\xc7\xd9\xdf\ \x4f\xaa\xad\x82\x96\xd6\xfe\x44\x0a\x2d\x78\x3c\x6e\xdc\xee\xc0\ \x65\x08\x21\x60\xf4\xe8\x91\x98\xcd\x32\x5e\xe7\x31\x9e\x7d\xf2\ \xa1\xc2\xfa\xc1\x35\x6f\xb9\x66\x94\xae\x88\xcd\xbc\x6f\x1f\xdf\ \x7f\xa9\x35\xe5\xe7\xaf\x35\xd9\x97\xbd\xb4\x36\xfb\x0f\xbf\xfa\ \x78\xc2\xec\xba\xfd\x33\x2c\xcc\x07\x6c\x80\xfc\xb5\x9e\x46\x01\ \x0b\x23\xfe\xe5\xb7\x23\xa6\xac\x10\x4f\x3e\x7e\x50\xdc\x57\xff\ \x5b\xb1\x60\xe1\xc3\xe2\xcd\x37\x3f\x14\x9f\x7c\xd2\x24\x0e\x1d\ \x6a\x15\x81\x40\x58\xfc\x59\xfb\x9a\x0e\x89\x1f\xff\xf8\xa7\xa2\ \xe5\xbc\x10\x8b\x9f\x7c\x57\xb4\x7c\xf1\x92\x10\xde\xef\x0a\xe1\ \x79\x58\x88\xde\xe9\x42\xb4\x8f\x14\xc2\x31\x5b\x88\x4b\x9b\xc4\ \x6f\x6e\xcf\xdc\x0b\xdc\x0e\x24\x7d\x6d\xa7\x51\x31\x1c\xb9\xaf\ \x82\x8c\x5f\x85\x57\x34\xeb\xbe\x73\xb1\x0b\x0e\x07\x45\x85\x53\ \xe9\xe8\x80\xd6\xd6\xc3\xb8\xdd\x6e\xa3\x95\x3c\xe8\xba\xa0\x66\ \x54\x35\x56\x6b\x12\x8e\xae\x23\x3c\xf8\x60\x3d\x6f\xad\x6b\x43\ \xf8\x1a\xc0\xb5\x0f\x7c\xdd\x10\x8e\x43\x7f\x2b\x64\xb7\x33\xaf\ \x7e\x76\xcd\x44\x99\x45\x2b\x0b\x18\xdf\x57\xce\x28\x77\x39\x35\ \xff\xe3\x0a\x6a\x7a\xcb\x29\x37\xd2\x91\xb8\x4a\xa6\xbf\x50\xac\ \x35\xa2\x52\x88\x42\x85\x96\x92\x51\xa9\x64\x0d\xaa\x52\x07\x97\ \x8c\xcf\x29\xce\x1c\xf6\x72\x85\x3d\xb9\xc0\x1d\x35\xff\xe0\xfd\ \x0e\x0a\x33\x32\x28\x2a\x9e\xcf\xe1\x23\xcb\x29\x29\x19\x42\x4a\ \x4a\x0a\x4e\x67\x32\x69\x69\x29\x64\x65\xd9\x19\x37\x6e\x1c\xbb\ \x76\x6f\xe6\xd9\xef\xfd\x80\xd5\xeb\x17\xb3\x75\x77\x07\xb3\xa6\ \x7b\x20\x68\x02\x64\x10\x16\xf0\x6f\xa1\x6c\x5a\x6d\xf2\xea\x93\ \x3b\x5e\x2b\x7c\xa8\x26\x2e\xe9\x3a\x48\x02\x84\x00\x74\x00\x88\ \xc9\x9a\x7f\xc7\xd1\x3d\x4f\xec\x74\xbc\xb2\xc6\xcf\x69\x20\x06\ \x70\xcd\x3b\xb1\x36\x5a\xb2\xe9\x92\xb2\x98\xc1\xd5\xd3\xa5\x92\ \x41\x13\x95\xa2\x82\xc1\x52\x45\x9a\x8d\x11\x69\x50\x6c\x01\xeb\ \x25\xb0\x9c\x02\x7a\x88\x85\x82\xcc\x7f\xfe\x21\xfa\xdb\xea\x19\ \x39\xa4\x84\xd3\x2d\xef\x52\x32\xb8\x9f\x59\xb3\x1e\xa2\xa8\xa8\ \x90\xe2\xe2\x5c\x2a\x2a\x8a\xe8\xef\xf7\xf0\xeb\x5f\xff\x9a\x57\ \x5f\xfd\x09\x3b\x9b\x22\xac\x58\xfe\x13\xfe\xfd\x07\x5b\x49\x4d\ \x96\x41\x55\x40\x48\x20\x03\xf2\x0b\x74\xff\xeb\x32\x4c\x3f\x14\ \xe4\x16\xa7\x80\x0a\x08\x19\x74\x09\x74\x1d\x92\xf3\xe1\x74\x31\ \xff\x34\xf7\xcd\x95\xaf\xf7\x6a\x2f\x03\x4e\x21\x84\x2a\x73\x95\ \xce\xc6\x6d\x6f\x98\x7f\xb9\xec\x3f\xcc\x1f\xde\xf9\xb8\x69\x59\ \xb0\x4a\x5a\xda\x68\x13\x0b\xb6\x11\xab\xfc\x9c\x10\xdb\xf0\xf9\ \x5b\xf0\x39\x74\xe2\x9e\x10\x16\x93\x8f\x9f\x3e\xb3\x1d\x67\xec\ \x1c\x0e\x87\x8b\xca\xca\x05\x9c\x38\xe9\xe6\xf0\xe1\x2f\x08\x06\ \x43\x89\xc2\x7d\x38\x9d\x5e\xf2\xf2\xb2\xc8\xce\xce\xa5\xb5\xf5\ \x04\x75\xd3\x33\xc8\x1d\xbc\x90\x15\x9b\x0a\xc1\xaa\x03\xd2\x00\ \x40\x2c\x06\x39\x1d\xa4\xd5\xdc\x8f\xef\xc3\x56\x84\xcf\x05\x2e\ \xf7\x80\xdd\x9e\x84\xbd\xe0\xec\x84\xac\x24\xcc\x16\xa5\x08\xc8\ \x03\xac\xd7\xed\x81\x1e\xcd\x54\xc6\x88\x4a\x48\x7a\x17\x44\x23\ \x9a\x3a\x8c\x48\xa0\x8e\x88\x6f\x1a\xe1\xd0\x64\xc2\xe1\x5a\x7c\ \x81\xc9\xf4\xf6\xcf\xa6\xab\xe3\x3e\x4a\xf2\x2b\xa8\xa9\xbe\xc8\ \xd9\xee\x1e\xd0\xac\xd4\x8c\xfa\x1e\xdb\x77\xec\xe3\xec\xd9\xe3\ \x44\xa3\xda\xe5\x0d\x2d\x04\x14\x14\xe4\x71\xfe\x7c\x1b\x16\x33\ \x3c\xb1\x78\x12\x8d\x67\xa6\xe2\xee\x56\x40\x11\x20\x64\xc0\x0a\ \xae\xfd\xd8\xa6\xd5\xa0\x1c\xb6\x11\xf6\x09\x90\x4d\x20\x94\x2b\ \xc6\x04\x71\x9d\xb8\x86\x04\xd8\x00\xd3\x75\x00\xbf\x6b\xf5\xad\ \x64\xe5\x36\xe0\x69\xd0\xed\xe8\xda\x1d\x40\x1a\x12\x1a\x12\x31\ \x24\x29\x86\x9c\x70\x5c\x4f\x49\x00\xe5\x13\x0c\x15\xf0\xd4\x3c\ \x2f\x9a\xb5\x8d\x8e\x9e\x5e\x52\x6d\xc5\x8c\x1c\xf5\x22\xab\x56\ \xaf\x67\xff\xbe\x44\x6a\x21\x95\x48\x04\x34\x2d\x4e\x44\x95\x00\ \xa8\xae\x32\x31\xb4\x7a\x1e\xcb\x56\x95\x81\xa2\x5f\x19\x45\x7f\ \x27\x52\x69\x1f\xa9\x65\x75\x78\x8f\x78\x41\x91\x07\xe0\x84\x64\ \x5c\x65\xb8\x32\x11\x12\xc0\x75\x00\x5b\xe2\x34\xb4\x7c\xbc\xb6\ \x8b\xe0\x4c\x90\x47\x00\x80\xd0\x00\x8c\xb8\x07\x2c\x21\x90\x64\ \x0d\x55\x15\x0c\xbf\x2d\xc6\xb7\xa6\x77\x70\xd1\xd9\x83\xab\xdf\ \x4d\x6e\x4e\x35\xd5\xa3\x5f\xe0\xa3\x35\x9f\xf2\xf6\xdb\xbf\xe3\ \x0f\x6f\xfd\x1b\x3b\x77\x35\x52\x55\x3d\x89\xb8\x0e\x16\x0b\x2c\ \x7a\xa0\x86\xe3\x5d\x75\x89\xc1\x4f\x01\x8b\x91\x82\x50\x20\x7c\ \x00\xfb\xcc\xfb\xf0\xed\x8d\xa3\x6a\xc6\xf7\xe9\x97\x6d\x40\x30\ \x60\x10\xff\x2b\x40\x00\x9c\x6f\x1f\x3a\xb3\x92\xcd\xe7\x41\xaa\ \x37\xf8\xc4\xf5\xe7\x30\x01\x88\xcb\x18\x44\x63\x32\x0b\x67\x78\ \xc9\xcd\xbf\x40\xb7\xc3\x8b\xc7\xe5\x49\x40\x0c\xa3\xfe\xc1\xd7\ \xe9\x0f\xe6\xd1\xb0\xf5\x00\x77\xdc\x39\x9f\xf4\x9c\x42\xbc\x01\ \x00\x28\x29\x96\xf8\xd6\x9c\xfb\x79\x73\x7d\x25\x42\x05\x24\x40\ \xb2\x80\xfb\x14\xd6\x61\x32\x96\x4b\x85\x78\x2f\x86\x41\xb9\xaa\ \x85\xf4\x01\x20\x21\xfe\xf2\x26\xd6\xd6\x06\xf8\x53\x70\xfd\x27\ \x2a\xfa\x50\x90\x54\xc0\x20\x37\x9e\xfe\xb5\x69\x40\x3c\x2e\x91\ \x69\x17\xdc\x7b\x57\x37\xed\xee\x76\xfc\xfe\x30\x3e\xb7\x1f\x59\ \xb7\x31\xf5\x9e\x67\x79\xf4\x99\x37\x18\x31\xf6\x5e\x3c\x7e\xf0\ \x87\x21\x1c\x03\x93\x02\xb3\x67\x0c\xc6\x94\x31\x87\xbd\x07\x6d\ \x60\xd1\x07\x8a\x54\x55\xb0\x9e\x24\xbd\xbc\x16\xef\x6e\x97\xd1\ \x46\xd2\x55\x06\xfd\x2b\x00\x38\x0b\x5f\xae\xdc\xbe\x67\x0b\xe7\ \xf3\xc0\x5c\x00\x42\xbf\xaa\x70\x0c\x10\xae\x80\x20\x11\x8e\x2a\ \xd4\x4d\x08\x52\x71\xfb\x59\x2e\xf5\xf4\x12\xf2\x47\xf0\x7b\x42\ \xf8\x5c\x41\xa2\x41\x1d\xbf\x37\x46\x82\xeb\xb2\x3d\x01\xd0\x04\ \xe4\xe5\xc0\x82\x87\xea\xf9\xe3\xe6\x1a\x02\x1e\x19\x64\x01\x58\ \xc0\x73\x9c\xf4\x85\x33\x89\x1d\xb2\xe2\x77\x19\x0f\xd0\x68\x21\ \x00\xbe\x0a\x00\x88\x2f\xef\x8a\x2c\xd7\xb7\xee\xc2\x24\x57\x22\ \x84\x0e\xd2\xd5\x09\x5c\x65\x03\x44\xd7\x25\x6c\x49\x82\x45\xb3\ \xfa\x70\x87\x2f\xe0\xf6\x04\x09\x07\x55\x42\xbe\x28\x7e\x6f\x98\ \xa0\x2f\x42\x30\xac\x13\x8c\x42\x20\x02\xa1\x84\x25\x09\x26\x8e\ \xb5\x93\x7d\xdb\x1c\xd6\xef\xc8\x00\xb3\x00\x4c\x10\x70\xa0\x94\ \x6b\xa4\xa5\x8e\xc1\x73\xd0\x05\x66\x05\x84\x6c\x18\xc4\x0d\x00\ \x88\xfd\x3a\xdb\x8e\xbd\xf7\x6e\xbb\xe4\x06\xd9\x14\x42\xe8\xe6\ \x6b\xfb\x1f\xae\x6b\xa5\x48\x54\xa1\xa6\x32\xca\x94\x71\x6d\x74\ \x3a\x7a\x2e\x17\x1d\x0a\x44\x09\x25\xae\x41\x6f\x84\x80\x37\x01\ \x13\x1e\x00\xf0\x27\x0c\x60\x92\x60\x42\xcd\x18\xd6\x37\x8d\xc0\ \xe3\x30\x81\x0c\xe8\x32\x78\xf7\x90\x71\xdf\x4c\x42\xfb\x22\xe8\ \x9a\x74\xd3\x00\x84\xa1\x7f\x6d\x73\xeb\xa7\x34\x76\x63\x49\xf1\ \xa3\xd0\x81\x10\x56\x23\xc6\x2b\x69\x5c\x0b\x02\xe8\x32\xf3\xa6\ \xba\x89\xcb\x2d\x38\x5c\x5e\x42\xfe\x68\x02\x24\x46\xa2\xf8\x84\ \x13\x10\x41\x8d\x70\x1c\xbc\x1e\xc1\xd6\x6d\x2e\x7e\xf1\xc6\x49\ \x96\x35\x5c\xe4\x54\x4f\x06\xf1\x28\x80\x34\x30\xcc\xce\x53\xa4\ \x4c\x2b\x45\x8a\x56\xe0\x6a\x0f\x82\x6c\x0c\x31\xd2\x8d\x01\x00\ \xfa\xf2\x08\xef\x38\x56\x6e\x88\xc8\x6a\x39\xc9\x96\x35\x58\x94\ \x36\x84\x30\x27\xac\x60\xe8\xba\xc1\x56\xe3\x12\x85\x39\x1a\x93\ \x47\xb5\xd3\xd9\xdf\x4e\x20\x01\x10\x0e\xc4\x2e\xb7\x52\xc8\x1f\ \x43\x4d\xdc\x77\xb5\xfa\xf8\x68\xf5\x69\xd6\xed\x6e\x21\xb5\x58\ \x67\x74\x5d\x15\x4a\x65\x2d\xd1\xb0\x74\xa5\x24\x35\x0e\x9c\x22\ \xad\x7c\x02\xce\x5d\xce\xab\x86\x99\x1b\x06\xe0\x1c\x1c\x6c\xd8\ \xb4\x69\x0f\x87\x73\x90\x93\xd3\x48\x35\x37\x60\xb7\x36\x21\x4b\ \x2a\xba\x6e\x06\xfd\xba\x5f\x24\x03\x42\x66\xde\x14\x1f\xd9\x59\ \xa7\xe8\xea\x73\x10\x4c\x40\x44\x82\x2a\x22\x18\xe5\xe8\xfe\xf3\ \x2c\xdf\x7a\x92\x6e\x1b\xcc\x9e\x57\xce\x92\xb9\x95\xfc\xc3\xec\ \x74\x46\xcd\xb8\x87\xd5\x27\x6a\x40\x52\x41\x18\x29\x38\x0e\x90\ \x39\x79\x08\xea\xde\x38\x21\x9f\x06\xd2\x8d\x0f\xb1\x21\xd4\x95\ \xae\xe8\x07\xb1\xed\x97\xc0\x32\x0f\x89\x08\x36\xcb\x61\x72\x52\ \x36\x93\x6a\xbd\x88\x40\x42\xd7\x2d\x09\x2b\x08\x71\x65\xa8\xb5\ \xb8\x84\xdd\x26\xa8\xbf\xb3\x07\x77\xa0\x8d\x60\x30\x86\x1e\x53\ \x69\x3c\x76\x89\x0d\xed\x21\xcc\x95\x25\x0c\xb9\xe3\x36\x32\x73\ \xb3\xb1\x24\x59\x29\xcd\x82\x05\xb5\x0a\x7b\x7d\xf7\x10\xee\x17\ \x20\x63\x6c\x66\x37\xd6\xe1\x66\x6c\x79\x63\xe9\x69\x76\x82\xa2\ \xdc\x5c\x02\x80\xd8\x0e\x6b\xf7\xac\xdb\xd8\x42\x60\x3a\xc8\x29\ \xa0\x9b\x31\x2b\x6e\x72\x52\x1b\x29\xcc\xd8\x43\xb6\xbd\x95\x14\ \xab\x1b\xb3\xa2\xa2\xeb\x32\x30\x00\x12\x55\x65\xc6\x0f\x0f\x33\ \xb4\xac\x95\xf6\xee\x4b\x34\x1d\x3f\xce\x41\x0f\xa4\x96\x54\x91\ \x9a\x99\x4b\x94\x24\x9c\x11\x99\xbe\x10\xe8\x02\xa6\x94\x41\x56\ \xe5\x34\xfe\xb3\xb1\x1c\x94\xb8\xb1\x81\x65\x88\xb4\x92\x33\x67\ \x36\xfe\x2d\xfd\x68\x9a\x31\x03\x88\x1b\x06\x40\x03\xff\xba\x83\ \x87\x37\xb2\xc5\x01\xa9\xb5\x20\xd4\xcb\x10\x08\x85\x64\x8b\x83\ \xbc\xb4\xe3\x94\xe5\x7d\x49\x55\xd1\x7e\x72\xec\x7d\x68\x9a\xe9\ \x72\x1a\x42\x97\x90\x25\x99\xb9\x53\xfa\x48\x49\xda\x41\x4f\xf7\ \x51\xec\xb2\x8c\xac\xd9\xf0\x85\xcd\xb8\x82\x12\x7d\x7e\xe8\x09\ \x80\x2f\x06\xe9\x56\x58\x34\x23\x93\x4d\xbe\x85\xb8\x7b\x74\x90\ \x8d\xcd\xdc\x7d\x0a\xfb\x84\x5c\x4c\xbe\x02\x7c\xed\x01\x50\x64\ \x74\x9d\x1b\x07\x00\xf4\xad\x2a\xeb\x1d\x1f\x6d\xd1\x91\x1e\x00\ \xc4\x55\x5b\xd9\x04\xba\x09\x49\x80\x49\x56\xb9\x2d\xbf\x95\xa2\ \xac\x2e\x40\xba\x9c\x46\x4c\x95\xc9\xcf\x8a\xf3\xf7\xdf\xee\xe2\ \xe9\xfb\xce\x20\x3b\x0e\x13\x71\xfa\xf0\x79\xc1\x1d\x80\xfe\x20\ \xf4\x25\xec\x0c\x83\xaa\x43\xed\x60\x28\xbf\x63\x0a\x1f\x34\x66\ \x83\xa2\x0d\xa4\x10\x0d\x21\x9b\xdb\xc8\x9e\x3d\x17\xc7\x3e\xa7\ \xb1\x8f\x6e\x0e\x80\x53\xd0\xb4\x76\xcb\xe6\xcf\x39\x6a\x87\xe4\ \x52\x10\xda\xb5\xa7\x44\x24\xd0\x15\x24\x21\x51\x9a\x7f\x89\xe1\ \xc5\x6d\x58\x4d\x71\x84\x2e\xa3\xaa\x0a\xe8\x32\xa3\x87\x85\xb8\ \xbb\x62\x17\xd1\x8b\x47\x08\xb9\xe2\x97\x01\x5c\x41\x70\x18\x10\ \x9e\x28\x24\x29\xb0\x60\x7a\x16\xcd\xb1\x69\xa8\xde\x08\x24\xdb\ \x20\x73\x10\x98\x6d\x98\x52\x53\x71\x74\xc5\x20\x2e\x00\xe9\xe6\ \x00\x80\xd8\x07\xee\xe0\xfb\xc1\x95\x9f\x43\xd2\x44\x10\xea\xb5\ \xe7\x13\xdd\x58\x32\xba\x02\x9a\x4c\x76\x9a\x97\xb1\xe5\x6d\x8c\ \x2c\xeb\x22\x33\x35\x42\x54\x55\x12\x36\x33\x71\xb8\x83\xfc\xd8\ \xa7\x84\x3a\x7b\xf0\x7b\xc1\x13\x34\x20\x42\xe0\x8e\x80\x06\x4c\ \x28\x01\x7b\xc9\x04\xce\x47\x66\xe1\xef\x1e\x43\xe7\xd6\x4c\xce\ \xfc\xa2\x89\x63\x9b\xdf\x25\x7f\x46\xb1\x71\x98\x13\x37\x0d\x20\ \xf6\xc3\xa6\xa6\x8f\xb7\xb6\xe1\xa9\x05\x93\x0d\x84\x00\xfd\xda\ \x1d\x00\x92\x01\x22\x93\x64\x89\x91\x9f\xe9\x65\x5c\x45\x27\x43\ \x8b\x9d\xc8\x44\xb1\xd8\x14\xea\xc6\x9c\x40\xe9\xdb\x4d\xa0\x37\ \x86\xcb\x3f\x00\xe0\x4c\xb8\x3f\x0a\xe7\x9d\x3a\x0d\x9f\x1d\xe3\ \x74\xf3\x21\x36\xfc\x7e\x03\x9d\x8d\x1f\xe1\x09\x6c\x47\xa9\x3a\ \xcd\xc8\x67\x06\x53\x51\x99\x05\x9a\xb8\xee\x30\x67\xe2\x06\x14\ \x01\xc7\x1f\x5b\x5b\xdf\xbf\x7b\x9f\xf2\x13\x79\xe6\x04\xe8\x6b\ \x04\x6c\xc6\xf6\x15\x46\x5b\xe9\x20\x19\x11\x9b\x52\x13\xce\xc0\ \x9c\x91\xcb\xb0\xac\x0c\xf2\xd2\xd2\x69\xfa\xc2\x47\x2e\x21\x86\ \xf8\xd7\x71\xf4\x4c\x19\xb6\xbc\x5a\xfa\xed\xe0\x08\xc0\xa6\x9d\ \xad\x9c\xdc\xde\x40\x41\x72\x88\x39\x63\xcb\xb9\x9d\x22\x86\xde\ \x15\x80\x98\x15\x34\x19\x62\x3a\xa8\x3a\x24\x2b\xc8\xc6\x88\xdf\ \x14\x00\xa0\x7f\xae\xb3\xae\xfd\x83\x86\xa5\xa5\xf5\x77\x5b\x50\ \x76\x80\x26\x81\xd9\x0e\xd6\x0c\x90\xed\x10\x4d\x87\x58\x36\x44\ \xd2\x88\xf4\x26\x13\x71\xda\x89\xb8\x34\x02\xdd\x1d\x44\x7b\x4e\ \x90\x2f\x5c\x68\x85\xe9\x4c\x9d\x1e\xc1\x7f\xf2\x23\x3a\xcf\x55\ \x62\x32\x65\xd2\xba\x7d\x1d\x7a\xcb\x26\xbe\xf3\x48\x1d\x4b\x9e\ \x5a\xc8\x97\x07\x4e\x93\xd2\xb9\x01\xcc\x49\x20\x19\x2f\xfd\x16\ \x01\xe9\x99\x70\xd2\x83\x27\xa6\xc5\x00\x71\xb3\x00\x74\xc3\xb1\ \x95\x6b\xd6\x6d\x59\xba\x6a\xd2\x1c\xea\x7e\x08\xd1\x30\x38\xad\ \x78\x9b\xfb\xf0\x9c\xe8\xa7\xbb\xad\x4f\xef\x3d\x7f\x40\x04\x3b\ \x1c\x42\x8e\xc7\x31\xa7\x98\xb1\xa6\xd9\xb0\xe7\xa6\x91\x94\x93\ \x9a\xb8\x4f\xa3\xfc\x02\x14\x07\x25\x52\x2f\x6e\x62\xf9\x09\x97\ \x7c\xe0\xd0\x10\x79\x52\xf6\x69\x1e\x7b\x6a\x01\x93\x26\x4f\x02\ \xe0\x68\xe3\x41\xca\x76\xb7\xc5\xf5\x54\x13\x42\x12\x80\x40\x42\ \x10\x0c\xb5\xaa\xef\x6d\x3d\xd9\xba\x56\xd5\x3f\x05\x22\x80\x76\ \x53\x00\x80\xf6\xd3\x58\xec\xef\x76\x3e\xfa\xca\xd9\xf1\x55\x23\ \xa7\xfa\x62\x31\xf9\x44\x67\x47\xcf\x85\x90\xaf\xab\x17\xe1\x08\ \x81\x5f\x87\x88\x34\x10\xba\x90\x9d\x00\x20\xb8\xf6\x2a\x19\x27\ \x7c\xc1\xe9\xe4\xec\x82\xb1\x0b\x0b\x86\xd5\x8f\x89\x69\x92\x0c\ \x02\x80\xed\x4d\xcd\xdd\x1f\xfe\x69\xef\xef\x81\x90\x51\xa4\x00\ \x24\x01\xaa\x06\x3d\x40\x37\xe0\x00\xa2\xd7\xfd\x2f\x24\x49\x12\ \x5f\x21\x33\x90\x09\xe4\x01\x69\x46\x3d\x2a\x10\x31\xae\x71\x40\ \x07\x04\x37\x20\x49\x92\x93\x8b\x8a\x6a\xa7\xe4\xe4\x14\xd4\x8e\ \x1f\x3f\x66\x54\x51\x51\x41\xf6\xfb\xef\xaf\x68\x38\x77\x6e\xfb\ \x7a\xa0\x13\x08\x72\x45\x02\x88\x1b\x60\x01\x20\x26\x12\xba\x59\ \x00\x23\x35\x2c\x86\x25\x40\xc3\x28\xdc\xb0\x30\x7c\xa3\x9f\x95\ \x02\x64\x00\x69\xc6\xbd\x00\x1c\xc6\x93\x0e\x73\xad\xc4\xd5\x0f\ \x48\x08\x81\x89\x9b\x57\xdc\x70\x88\xff\xbb\xe2\x46\x2b\xf8\x01\ \x8b\x91\x30\x40\xd4\x48\x55\xe7\x2b\x64\x24\xf0\xd7\xab\xff\x06\ \x50\x1c\x59\xce\xc5\x04\x3a\xad\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x0c\x82\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x0c\x49\x49\x44\x41\x54\x78\x5e\xed\x9a\x09\x6c\x5c\xd7\ \x79\x46\xcf\x7d\x6f\x36\x0e\x57\x0d\x49\x71\xa7\x48\x8a\xa2\xa8\ \x8d\xda\x29\x53\x92\x15\xdb\x32\x92\xc8\x52\x6b\x3b\x4e\x60\x3b\ \xf1\x16\xbb\x71\xd3\x24\x6d\xaa\xd6\x89\xe3\xb4\xae\x61\x23\xb5\ \x93\x36\xa8\x8d\xb8\x69\xd3\xd6\x6d\xed\xa2\x0b\xd2\x16\x69\x6b\ \x18\xa9\x9b\x5a\x4b\x97\xd8\xb2\x4d\x59\x5c\xc4\x4d\xa4\xb8\x2e\ \x22\x87\x1c\x0e\x67\xc8\x59\xdf\x72\xab\xc1\x7b\xc6\x33\x08\xa6\ \xf0\x08\x8c\xd2\x00\x1d\xe0\xc3\xff\xee\x70\x66\xee\x77\xfe\xe5\ \x0e\xe6\x81\x42\x4a\xc9\xcf\xf3\x43\xf9\x19\x1b\xf8\x7f\x00\xd7\ \x4a\x80\x33\x67\xce\x70\xf2\xe4\xc9\x0f\x05\x20\x04\xdc\x77\x84\ \xc7\x86\x66\x68\x7f\x7b\x90\xb3\xa6\xf9\xd3\x05\x78\xfe\xf9\xe7\ \xb9\xf9\xe6\x9b\xff\x77\x80\x48\x24\x42\x67\x67\xe7\x87\x02\xd8\ \x55\xc7\xbe\x0d\x45\xb5\xcf\xb6\x34\x04\xd4\x86\xbc\x8e\x1f\xbc\ \x7c\x8a\x27\x7a\xc7\x18\x5a\x73\x00\xc7\xdb\xda\xb5\x90\x5b\x45\ \xdc\x7b\x23\xdf\x69\xbd\xeb\x05\xf7\xd1\x2f\xbd\xa3\xdc\xf3\xc5\ \x3f\xfe\xe4\x4b\x5f\x2b\xed\x7c\xf2\x7e\x9e\x2d\x2d\xc9\x29\x64\ \xeb\x7d\x8f\xb2\xf9\xee\x87\x59\xbf\x7b\x0b\xc2\x25\xfe\xcf\xcd\ \xc0\xb1\xdd\x3c\xbc\xf7\xd0\xf1\xb6\x9a\x1d\x77\xa0\xa8\x6e\x6a\ \xf6\x7c\x9e\xfd\x9f\x1d\xf0\xdf\x7e\xdf\xaf\x3f\xd1\xf8\xe9\xe7\ \x66\x1e\x7f\xf2\x99\x3f\xf9\xe4\xc3\x5f\xff\xf3\x63\x27\x5f\xee\ \x2d\x7f\xe4\xec\xbc\x72\xcb\x77\x7f\xc8\x8e\x2f\xfc\x16\x95\x47\ \x8e\xe2\xaf\x58\x07\xca\xcf\x0e\x60\x7d\x01\xc5\x27\x0e\xf8\x7e\ \x77\xff\x27\x5e\x40\x08\x27\xb9\x3f\x1e\x55\xf8\xc2\x5b\x0f\xf2\ \x3b\x8f\x3c\xe0\xfb\xe5\xa3\x95\xdc\xb4\xa3\x9c\x27\xef\xdb\xce\ \x6b\x4f\x1f\x08\xfc\xf0\xc5\x07\x8e\x3d\xff\xcd\x27\xbe\xf1\xd0\ \xe3\x7f\xf8\x46\xcb\x67\xff\x6e\xda\x7b\xeb\x4b\x17\xd8\xf1\x95\ \x3f\xa2\xea\x63\xf7\x93\xbf\x69\x13\x8a\x47\xbd\x6e\x00\x77\x1f\ \xe2\x99\xfd\xb7\x3d\x56\x56\x50\xda\x08\x80\x29\x25\xdf\xfa\xd7\ \x29\x9e\x7d\x6d\x92\xef\x7f\x71\x0b\x07\x9b\xd6\xd1\x3b\x11\xa7\ \xac\xc4\x4f\xca\x54\x88\x6a\x2e\xdc\xb9\x79\xb4\x6c\xab\xe2\xe1\ \x3b\xb7\xf3\xd2\xd7\x0f\xfb\x4e\xff\xd9\xbd\xbb\xfe\xfa\xbb\xbf\ \xf1\x2b\x5f\x7d\xfa\xf7\xff\xea\xd6\xcf\x7d\xaf\x3f\x70\xf4\x4f\ \x27\xd8\xfa\xdb\xff\x42\x5e\xd3\x0d\x59\x9f\x42\xd9\x68\x67\x1d\ \xfb\x3e\x72\xa0\xe1\x73\xdb\x8f\x7e\x0d\xa4\x64\x21\xae\xf3\xc8\ \x2b\xc3\x6c\x29\xf7\xf1\x8f\x57\xcd\x67\x0c\x07\x63\x30\x35\x9f\ \xa6\xa1\x2e\x17\xb7\x02\x52\x82\x24\x13\x05\xa6\x84\x98\xa6\x22\ \x85\x4a\x45\x4d\x39\x55\xb5\x65\xdc\xf1\x31\xa9\xf8\x54\x59\x71\ \xe6\xc7\x43\xbf\xf8\x9b\x5f\xee\x5c\x64\xf9\x52\x27\x90\x58\x73\ \x00\x55\x41\x7c\xe6\x88\x78\x61\xff\x9d\xdf\x76\xab\x6e\x1f\x52\ \xea\x7c\xf3\xf5\x29\x76\xd6\xe4\xf0\x91\x2d\x01\x82\x31\x13\x13\ \x85\x50\x02\x22\x31\x9d\x3c\xbf\x0b\xa1\x60\x9b\xff\x49\x51\x90\ \x32\x05\x69\x53\x32\x9d\x21\x8f\x8d\xf6\x01\xe6\x4f\xa5\x02\xc7\ \xf7\xf0\xe0\xee\xb6\x63\x87\x6a\xb6\x1d\x47\x1a\x29\xc0\xa4\x7b\ \x3a\xce\x73\x27\x6a\x18\xbe\x92\xe2\x42\xcf\x22\x89\xb4\x89\xdb\ \xe3\xc2\x23\x24\x6e\x97\x00\xa4\x65\x56\x38\x86\x59\x05\xc4\xab\ \x4a\x2e\x5c\x0a\x19\x2c\x0f\x5f\x00\x52\x6b\x0e\x50\x5a\x40\xe0\ \xf6\x36\xdf\x73\xad\x77\x3d\x8f\xd4\x13\x48\x69\x10\x4b\x19\x20\ \x04\x85\x85\x3e\x36\xe7\xfa\x69\x6a\x2c\x42\xd7\x25\xb1\x58\x1a\ \x21\x04\x2e\x21\x2d\x93\x16\x07\x12\x81\x14\x0e\x10\x38\x50\x3e\ \x61\xd0\xd1\xdd\x37\x81\x11\x9b\x5a\xf3\x19\x10\xc0\x3d\x87\x78\ \x7a\xf7\xc7\xbf\x52\x9e\x57\x58\x86\xd4\x93\x48\x99\xc9\x7e\x92\ \xed\x95\x39\xe8\x52\xa0\xda\xbd\xae\xba\x05\x9e\x22\xaf\x6d\x4c\ \x02\xd8\xc6\xad\xb5\x04\x10\x58\x10\x08\x7b\x2d\x99\x09\x46\x09\ \x4f\xf7\x0d\x02\xf3\x6b\x0e\xd0\xb2\x81\x3d\x47\x5a\x1b\x1e\xdd\ \x76\xd3\x97\x31\xd3\x51\x90\x66\x06\x80\x73\xa3\x09\xf6\xd4\x94\ \x22\xc0\xca\xf6\xfb\xc6\x6c\x6c\x67\x6d\x1b\x07\xa4\x03\x04\xd2\ \x79\xbe\x67\x78\x81\x23\xd5\x97\x77\x2f\x24\xdc\x4d\xdd\x63\xda\ \xcc\x9a\x01\x78\x5d\x28\x77\x1f\x16\x2f\xb6\x7e\xe2\xdb\x1e\xc5\ \x88\x23\x8d\x24\x90\x01\x90\xbc\x3b\xa5\xf1\xd4\x2e\xbf\xd3\x2a\ \x60\x1b\x13\x48\x56\xb6\x0f\x48\x21\x90\x12\xb0\x81\x6c\x40\x5c\ \x8a\x24\x6f\xa1\x9f\x4f\xef\x0c\x96\x44\xaa\xf2\x5e\xfe\xea\x2b\ \xe1\x03\xc0\xdc\x9a\x00\x7c\x74\x17\x0f\xec\x3f\x7c\xdb\xc1\xaa\ \x4d\x37\x62\x24\x82\x20\x4d\xc0\xcc\x44\x66\xe2\x2e\x4a\xf2\x5c\ \x24\x0d\xe9\x0c\x27\xd8\x7d\xbe\x22\xe3\xb6\x6d\x56\xa9\x52\x5e\ \x74\x9a\x87\xf2\xdf\x20\x74\xa4\x86\xd7\x4f\x4d\xd5\x96\x17\xa9\ \x6d\x33\x8b\xc6\xab\x59\x02\xac\x3e\xb8\x27\x5a\xbd\xcf\xb6\xde\ \xf9\x7b\x18\xf1\x2b\x48\x53\x03\x69\x99\x1f\x8f\x4a\x6a\x02\x05\ \x56\x06\x85\x63\x5a\xb2\x8a\x71\x61\x39\x76\xaa\x24\xec\xb5\x04\ \x2d\x45\x49\xfb\x5f\xa0\x36\xb9\x28\x09\x16\xe2\x76\xbb\xd5\xcd\ \x55\xee\x43\x57\x01\x5e\x07\xd2\xd7\x0e\x60\x0d\xee\x33\xfb\x8e\ \x3d\x56\x91\xe3\xf3\x62\x26\xe7\x91\xd2\x04\x5b\xe7\x26\x55\x0e\ \xd4\xfa\x11\x80\x2a\x56\x19\x4e\xa7\xc7\x71\xda\xc5\xce\x3a\xf6\ \xbc\x98\x92\xe2\xb7\x5e\xc1\x57\x17\x86\x0d\xf7\xa2\xc4\x4e\x51\ \x16\x38\xcf\xd6\xea\xf8\xfe\xff\xe8\x49\xe6\x03\xa1\x6b\x06\xd8\ \xb9\x81\x3d\x37\xee\xaf\x7f\x74\xdb\x91\xcf\x63\x2c\x8f\x58\x83\ \xcb\x07\x00\xa6\x72\x79\xf0\xb0\x1f\x55\x91\x20\x57\x69\x15\x40\ \x3a\x40\xce\xda\x82\xb2\x2a\x77\xfe\x75\xf2\xd7\xf5\x43\xd5\x4d\ \x50\xd0\x0c\xeb\xa6\x28\x2f\x29\xa4\xb1\x3c\xb4\x5d\x55\x58\x6f\ \x98\xd7\x08\xe0\x56\x11\xf7\x1c\xe6\xc5\xab\xad\xe3\x26\x31\x65\ \x7d\x69\x49\xc3\xaa\x80\xa9\x91\x5e\x1a\xa0\x77\xfe\x06\xb6\xae\ \xf7\x60\x4a\x69\x0f\xe7\xca\x1e\xb7\x8d\x3b\xa6\xed\x2a\x81\x29\ \x21\xd9\xdf\x43\x95\x7e\x16\x51\xdf\x08\xe5\xb7\x00\x26\x94\x36\ \x51\x51\x54\x40\xa1\x5f\x2d\x29\x2f\x72\xb5\x4c\x2d\xe8\x7d\xd7\ \x04\xf0\xf1\x5d\x3c\xb4\xf7\xd0\xb1\x83\x95\x0d\x7b\xd0\x42\x17\ \xd1\x62\xa3\xa4\x17\x3b\x2d\x45\x7a\x58\xd2\x54\x72\xf3\xce\xa1\ \x2a\x20\xcc\x95\xc6\x57\x3f\x89\xa4\x04\xb0\xcc\x47\xa7\xe6\xd9\ \x30\xf3\x4f\x28\x3b\xca\xa0\xf6\x1e\x0b\x4d\x1a\x50\x14\xa0\x30\ \xb7\x12\xbf\x6f\x40\x6c\xa9\xf6\x1e\xba\x0a\xf0\xcf\x40\x2a\x2b\ \x80\xfc\x1c\x72\x8f\xed\xe1\x1b\x75\xf5\x35\x84\xcf\x7e\x89\x78\ \xfc\x2d\xa4\xb6\x08\x08\x10\x0a\x08\x95\x7e\x6d\x0f\xbb\x6b\x03\ \x08\x40\x11\x0e\xb8\xb4\x05\xab\x0c\xb5\x5d\xa5\xf0\x7c\x8a\x8a\ \x9e\xbf\xc5\xd3\x16\x80\x92\x3b\x40\xf1\x80\xd4\x01\x4b\x4a\x60\ \x13\x65\xc5\xe7\xd9\x5c\xb1\xbc\xff\x8d\xae\x58\x01\x30\x97\x15\ \x40\x75\x31\xd5\x53\x39\x54\x96\x19\x53\xe4\xfb\xcb\x49\x46\xf6\ \xb2\x14\x1f\x22\x51\x10\x01\xc5\x85\xb8\xaa\x8e\xc5\x56\x0e\x66\ \x06\x58\x88\x15\xbf\x91\x9d\x6f\x5f\x56\x7e\x07\x20\x99\x0b\x4b\ \x8a\xde\xfb\x01\x79\x07\x8b\x21\xb0\x1f\xdc\xeb\x00\xc3\x92\xd4\ \x2d\x15\x36\x50\x59\xbe\x3e\x33\x07\xdb\x14\xc1\x7a\x53\x66\x09\ \x30\x3e\xcf\x98\xa2\x12\x8e\xa4\xe4\xba\x82\xcd\x2d\xe4\x6c\x6e\ \x23\x27\x32\x8e\x3e\x3e\x4d\x6c\xe1\x32\x71\x5f\x98\x2e\x6d\x17\ \xbf\x56\xe9\x73\x00\x56\x17\xc2\x36\x2e\x20\x63\x1e\x77\xf7\x59\ \x8a\x5b\x02\x50\x5c\x0f\xee\x5a\xab\x6d\xd0\x41\x6a\xb6\xd2\x50\ \x5a\x49\x45\x79\x03\x3e\xf7\xa5\xfc\x0d\xa5\x9e\xd6\x91\x60\xba\ \x17\x90\x1f\x1a\x20\x96\x24\x39\x1b\xe5\xcd\xf0\xf2\xdc\xf1\x1a\ \xa9\x40\x60\x33\x94\xec\xc4\x55\xbb\x48\xa1\x1e\xa4\x60\x3c\xc4\ \xc9\x94\x46\xde\x95\x41\xa8\xdf\xbc\x4a\x15\x84\x5d\x05\x07\x63\ \x3e\x62\x92\x1c\x1e\xa4\xb1\x38\x8e\xd8\xb0\x07\xd4\x22\xa7\x6d\ \x64\x46\x69\x5b\x29\xc8\xf5\x50\x50\xd2\x48\x5e\x7e\x11\x4d\xe5\ \x91\xb6\xab\x00\xdf\x07\xe2\x59\x0d\x71\xcf\x38\xa7\x6f\x88\x8e\ \x1c\x97\x8a\x1f\xa1\x2d\x82\xa7\xd8\x92\xb7\x0a\xb1\x05\x8e\x6e\ \x51\x90\x0b\x31\xcc\xce\x1f\x81\x27\x1f\xb3\x69\x2f\xb8\xbd\xac\ \xf6\x08\x45\x4c\xc2\xd3\x8b\x6c\x8a\xbe\x87\xf2\xd1\x13\x00\x20\ \x75\x9c\xb6\xd1\xb0\xcd\xdb\x4a\x22\xfc\x85\x54\xd6\x35\xd2\x54\ \x31\xbb\xef\xdf\xba\x96\x0a\xae\x05\xe0\x94\xa9\x87\x48\x26\x16\ \xc9\xd1\xbc\xe0\xca\x01\x24\x08\x40\x78\x41\x28\x88\xe2\x62\xd4\ \xd2\x6a\xd0\x5c\x28\x83\xed\xc8\xb4\x86\x59\xd3\x0c\xc5\xe5\x80\ \x00\x60\x21\x22\x99\x9d\xd3\xd9\x30\xf8\x1a\xbe\xdb\x3f\x05\xa4\ \x6d\xe3\xb6\x79\x3e\x98\xfd\x24\x98\x09\x30\xe3\xe0\x81\xea\xba\ \x4d\xd4\x04\xda\x9b\xbc\x2e\x51\x93\xd2\xe5\x4c\x56\xbf\x89\xdf\ \x1b\xa2\x0b\x21\xe7\x96\x17\x07\x41\xd3\x41\xc6\xac\x0f\x96\x19\ \x25\x40\x26\x2d\x99\x4b\xa0\x2e\x21\xb6\x36\xa3\xec\x6e\x43\x4d\ \x44\x50\x3b\xce\xa0\x8c\x74\x13\x8e\x18\x4c\xcf\x43\xa0\xeb\x55\ \x02\xb7\xde\x06\xaa\x6e\x65\xd8\xb4\x32\xed\x18\xce\xc4\xb8\xad\ \x18\xc8\x65\xc8\x37\xa9\x2e\xab\xc6\xe3\x52\xfd\xb5\x25\xde\x56\ \x40\x64\x05\xa0\x1b\xc8\x8b\xa3\x9c\x89\x86\x7a\xc1\x50\xc1\x58\ \x02\x73\x19\xcc\x98\xad\xb8\xad\x84\x05\x64\x44\xc1\x98\x41\x54\ \x15\x20\x76\xb7\xa2\x94\x56\x52\x38\xfc\x26\xa5\x1d\x7f\x4f\x6d\ \x6b\x33\x14\xe6\x82\x19\x71\xc0\x65\x02\x47\x31\x4b\xe6\x72\x46\ \xd6\x5e\x1e\x1d\xbf\x47\x25\xb0\xbe\x42\x34\x95\xfb\x6e\x00\x72\ \xb3\x02\x00\xe8\x18\xe2\x54\x34\xd4\x87\x49\x2e\x68\x61\x30\xa3\ \xb6\x96\x41\x2e\xdb\x1b\x5b\x20\x56\x4c\x58\x15\xd1\xaf\x20\xfc\ \x11\xbc\xbb\x9b\xa9\xfe\xd4\x9d\x88\xfa\xa6\xcc\x73\x19\x50\x9c\ \xd7\x66\xb4\xc2\xb4\x99\x51\x04\x8c\x38\x18\x1a\x88\x04\x35\x1b\ \xb7\xb0\xb1\x34\x67\x2f\x50\x94\x35\x40\xfb\x00\x67\x52\x89\xb0\ \x4c\x2c\x87\xc0\x10\xd6\x26\x46\xc4\xde\x64\xc9\xd9\xd4\x32\x61\ \x67\xd1\x56\xe6\xda\x98\x01\x6d\x00\xd2\x97\x56\x54\x6f\xd9\x02\ \xb5\xa2\x93\x18\x23\x02\x7a\x12\xf4\x34\xe8\x1a\xc8\x28\x35\x8d\ \x5b\xa9\x28\xf2\x36\xf8\x3d\x4a\x5d\xd6\x00\xdd\x23\x5c\x8e\xc4\ \x18\x89\xcc\x77\x83\x99\x67\x7d\xb0\x11\xb7\x21\x16\x6d\x90\xf7\ \xab\x62\x03\x39\x19\x75\x0c\x1a\x51\xec\x6b\x9c\x75\xd4\x7e\xff\ \xa2\xad\x25\xd0\x53\x8e\xf9\x8c\x72\x25\x95\xeb\x4a\xf0\x78\x3c\ \xde\xba\x12\x5f\x1b\xa0\x64\x05\xa0\xe9\x98\x17\x87\x39\xbb\x38\ \xdb\x09\x62\x9d\x05\xa0\xa5\xed\x2c\x2d\xd9\x1b\x87\x1d\x13\xa6\ \x15\x1d\x38\x5b\x66\x64\xc5\xdf\xac\xf7\x59\x8a\x82\x9e\x00\xcd\ \x36\xef\x00\x00\x3a\x3e\x57\x9a\xd2\xaa\xba\x4c\x1b\x1d\x00\xf2\ \xb2\xfe\x3d\xf0\x4e\xbf\x3c\xdd\xb6\xa3\xeb\x61\x53\x0d\xa0\xa4\ \x75\x50\x4c\x30\x55\x50\x55\x10\x06\x28\x69\x50\x54\x10\xef\xcb\ \x05\x28\x2b\xf2\x22\x01\xd3\x39\x3a\xa5\x61\xc9\x34\xc1\xfc\x60\ \xd4\xc1\x30\xc0\xd0\x2d\x99\x3a\x22\x15\xa4\x76\x73\x0b\x0d\x17\ \xfa\xf6\x40\x68\x1d\x10\xcd\xea\xd6\x62\xd7\xb0\xfc\x4f\x3d\x1d\ \xd7\x97\xc3\xe3\x20\xfd\x4e\x96\xb4\x34\xce\x75\x0a\xb4\x24\x68\ \x71\xd0\x96\x40\xb7\xfa\xd9\x96\xb5\xd6\x33\xcf\xc7\xac\x6c\xeb\ \x29\x70\xde\xbf\xca\x67\x6a\x60\xd8\x55\x50\x22\x6c\x68\xde\x49\ \x69\x9e\x77\x43\x9e\x57\xdd\x08\x90\x15\xc0\xd0\x34\x13\xf3\x11\ \x2e\x2d\x5c\x79\x0f\x5c\xeb\x33\xc6\x71\x94\x72\xa2\xd5\xbf\xce\ \x3a\xed\x08\xcd\xd6\xca\xd7\x3b\x6b\x1b\x48\x73\x00\xa4\x17\x72\ \x36\x42\xc5\x21\xf2\x03\xe5\x80\xa2\xe4\xfb\x5c\x8d\x80\x2b\xab\ \x16\xd2\x0d\xe8\x18\x92\xa7\xea\x9b\xda\xb7\xd6\x6d\x3d\x01\xd1\ \x0e\x50\x54\x5b\x0a\x08\xc5\x89\x42\x58\x22\x13\xb1\x22\x12\x24\ \x76\xfc\xa0\x4c\x30\x4d\x3b\x1a\x80\x17\x3c\x95\xe0\xad\x42\x7a\ \x2b\x09\x87\xe3\x8c\xf7\x77\x33\xda\xfb\x2a\x23\x3d\xdd\x04\xa3\ \xa9\xf1\xe0\x52\x7a\x14\x10\xd9\x00\xd8\xa7\x91\x79\xe6\x96\xd9\ \x8b\xbf\xaa\xab\x01\x5c\x86\x04\x23\xbd\x0a\x80\x70\x84\x1d\x01\ \xc0\x81\x70\xcc\x03\x2a\x78\x2a\xc0\x5b\x0d\xbe\x6a\x62\x09\x98\ \xe8\xef\x60\xac\xef\xdf\xaf\xaa\x83\xc5\xf9\x20\xf1\xa4\xb1\x74\ \x39\x98\xe8\x1d\x9a\x4d\x74\x74\x4d\x2e\xfd\xc8\x30\x65\x1f\xa0\ \x65\x0d\xf0\xce\x80\x3c\xab\xa7\x13\x46\x64\x7e\x48\x2d\x76\x95\ \x40\x72\x72\xb5\xec\x3b\x11\x9c\x2a\x48\xec\x65\xc6\x70\x19\xf8\ \x6a\x91\xbe\x1a\x52\x7a\x0e\xd3\x97\xbb\x99\xec\xff\x2f\xc6\xfb\ \xcf\x33\x3f\x35\x22\x13\x69\x19\x1f\x9b\x4b\x0f\x5e\x9a\x49\x74\ \x5e\x9e\x4d\xb6\x4f\x84\x53\xdd\x52\x32\x03\x84\xec\xe1\x4d\x03\ \x64\x0d\x30\x1d\x92\xe1\x50\x94\x0b\xa1\x89\xb7\xf7\x15\x37\xed\ \x83\xf8\x18\x98\x06\x8e\xe9\x55\x2a\xa0\xa8\xe0\x2d\x83\x9c\x3a\ \xf0\xd7\x93\xa6\x88\xe0\xc4\x00\x53\xed\x6f\x33\x39\xf0\x3d\xe6\ \x27\x06\x49\x24\xd2\xc9\xf1\x79\x6d\xe4\xd2\x4c\xaa\x6b\x60\x3a\ \xd9\x3e\x1e\x4a\x77\xa5\x75\x39\x05\xcc\x03\xd1\x35\xbd\xbd\xfe\ \x56\xaf\x71\xaa\x76\xe3\xb9\x7d\x72\xef\x67\x10\x73\xa7\x71\x6e\ \x2f\x1b\x40\x46\x80\xaf\x0c\xf2\x36\x41\x5e\x23\xa6\xaf\x9a\xf9\ \xe9\xcb\x5c\xe9\x3c\xc7\xd4\xc0\xdf\x10\x1c\xbb\x48\x3a\x91\x30\ \x27\x43\xfa\x68\xdf\x64\xfa\xe2\xc0\x74\xaa\xfd\x72\x30\xdd\x11\ \x4f\x99\xe3\x40\xd0\x36\x1c\x77\x6a\xb6\xc6\xf7\x46\xbb\x46\xcc\ \x53\xc7\x66\x7b\x1e\xd7\x5c\xc5\x78\x14\x0f\x98\x1a\xb8\x8b\x20\ \x3f\x63\xb8\x09\xd3\x5f\x4f\x24\x3c\xc7\xec\xd0\x7f\x73\x65\xf0\ \x3b\xcc\x0c\xbd\x4d\x32\x1e\x33\x82\x8b\xc6\x4c\xdf\xa4\x76\xb1\ \x77\x32\xfd\x5e\xff\x64\xfa\xdd\xa5\xa4\x39\x66\x1b\x8e\x00\xcb\ \x59\x1a\xbe\x76\x80\x9e\x51\xf3\x6d\x43\x4f\xc7\x16\xa6\x3a\x72\ \xcb\xeb\x1f\x41\x7a\x4a\x58\x8e\xc5\x98\x1b\x7e\x93\xd9\x37\xff\ \x92\xe0\xf0\x39\xe2\x91\xa0\x0c\x45\xcd\xb9\xbe\x09\xbd\xef\xe2\ \x84\x76\xa1\x7f\x52\x3b\x1f\x8c\x18\x97\x6c\xc3\x61\xdb\xb0\xb1\ \xd2\xc0\x75\x01\x08\x46\x64\xf4\xf2\xb4\x79\x3a\xe7\x8d\xa7\x7f\ \x61\xba\x72\x1f\x73\x23\x6f\x12\x5b\x98\x64\x29\x6e\x46\x7b\xc6\ \x8c\xde\xee\x31\xad\xb3\x7b\x54\x7f\x77\x66\xd1\x18\x30\x4c\xae\ \xd8\x86\x97\x56\x3b\x35\xae\x33\x80\xa3\x6f\xfd\x43\xf2\x97\xee\ \x9a\xee\xf9\x83\xfc\x9c\xbe\xc6\xde\x71\xa3\xff\xe2\x98\xfe\xee\ \xd0\x15\xc3\x3e\x29\x58\xf8\x49\x27\xc5\x75\x07\x68\x6e\x6e\xe6\ \xa9\xa7\x9e\x5a\xb5\x10\xc0\xfd\x40\x49\x4b\x33\xb4\xc0\x32\x90\ \xb8\x3e\x36\x1d\x6f\x2b\x1f\x3f\xf7\xff\x6e\xf3\x3f\x6b\x76\x5b\ \x62\x8d\x5d\xc3\xae\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x11\x1e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x10\xe5\x49\x44\x41\x54\x78\x5e\xed\x9a\x69\x70\x1c\xe5\ \x99\xc7\x7f\x6f\x77\xcf\x8c\x46\xd2\xe8\xb0\x64\xc9\xb2\x24\x5b\ \x36\x92\x0f\x6c\x83\x8d\xb1\xb1\x31\x10\x07\x63\xc0\xe6\x08\xc7\ \x02\xae\x04\x42\x20\x81\x9c\x40\xb2\x49\xc8\x86\xec\x92\x90\x64\ \xa9\x4d\xd8\x1c\x64\x37\x07\x9b\x84\xa3\xc8\x26\x81\x70\x65\xb3\ \x86\x25\x10\xc2\xe1\x14\xa7\x6d\x9c\xd8\x18\x5f\x18\xdb\xb2\xe4\ \x4b\x23\x8d\xe6\xe8\xeb\x3d\x56\x9a\x6e\x76\x56\xe5\x52\x12\x36\ \x7b\x54\xaa\xf6\xa9\xfa\xd5\xf3\xf6\x5b\xaa\xae\xe7\xff\x5c\xd3\ \x1f\x24\x8c\x31\xfc\x39\x9b\xc5\x9f\xb9\x39\x00\x42\x08\xc6\x1a\ \xd4\x26\x05\x5f\xbf\xa0\x15\x5f\x3b\x04\x23\x48\x63\x11\x4a\x53\ \xeb\x7b\xde\x85\x08\x71\x61\xaa\xba\xe6\xf8\x44\x2a\xd5\xac\x95\ \xf6\x7d\xb7\xb4\x5b\x86\xe1\xd3\x96\x6d\x3f\x70\xd7\x0b\x87\x5e\ \xde\x37\xe8\x91\x72\x2c\x7c\xa9\xf9\x9f\x34\x63\x0c\x0e\x47\x59\ \x24\xe8\x6f\xcf\xaa\xa3\x62\x20\xbd\xe2\x7b\xd3\x99\xfa\x4f\xcd\ \x5d\xb6\x7c\xde\x31\xc7\x2f\xa2\x79\x52\x1b\xa9\xa4\x8d\x0a\x8b\ \xe4\xb3\x07\x27\xf6\xed\xda\xbe\x78\xc7\xab\x1b\x3f\xba\xe2\x48\ \x61\xed\xda\x2d\xc1\x17\x07\x5c\xb3\xe5\x7f\xad\x02\x15\xa0\x3a\ \x69\xf1\xfe\x25\xcd\xb4\xd4\x84\xe4\x35\x18\xa3\x53\xda\xcf\xff\ \xe0\xb8\x65\x67\x5e\xbe\xec\xdd\xd7\xd3\xd8\x35\x13\x8c\x82\xa0\ \x08\xe1\x08\xca\xa5\xb9\xb3\x9d\x69\xc7\x1d\xcb\xc9\x67\x9c\x52\ \x73\xea\x86\x97\x2e\x5d\xf4\xd0\xda\x55\xff\xf4\xe4\xee\xeb\x37\ \x1d\x94\x77\x33\xd6\xa8\xb1\x60\x34\x37\xc7\x57\x57\xee\x36\x95\ \x60\xab\x0b\x7b\x03\x28\x9a\x3f\x61\x06\x92\x8e\xe0\xfa\x53\x27\ \x70\xd6\x54\x17\xa9\x01\x63\x1c\x2b\x74\x7f\xba\x7c\xcd\xb5\x97\ \x9f\xfb\x99\xdb\x69\xec\x9a\x0b\xa1\x05\xa1\x00\x65\x83\xb1\x40\ \x01\xa1\x06\x37\x40\x58\x0e\xc7\x9c\xb4\x98\x2b\xae\xbf\x3a\x73\ \xd3\x45\x33\xef\x3a\xbe\xc5\xbe\x86\xd8\x3a\x80\x9f\x34\xc0\xa6\ \x0e\x78\x70\x06\xdc\xdc\x11\x13\x3f\x6f\xe8\x86\x17\x3b\x60\xa2\ \x00\xe7\xbf\x2a\x60\xcd\xfc\x1a\x16\xb6\xdb\xa0\x7c\x40\x80\x5f\ \xb8\x79\xd1\xea\x4b\x2f\x38\x71\xcd\x75\xa0\x0c\x48\x03\x4e\x0d\ \xd8\x29\xb0\x1c\xc0\x06\x61\x01\x56\xe4\xb5\x01\xd7\x23\x33\xb1\ \x85\xb3\xaf\x5c\xc3\x27\xce\x6e\xff\xd6\xc4\x6a\x96\x02\x5c\x0d\ \x2c\x4f\xc2\xd4\x04\xa0\x8e\xc6\x06\xa6\x3a\xd0\x28\x60\xba\x80\ \xe4\xdb\x15\xd0\x51\x6f\xb3\xaa\x27\x81\x96\x01\x06\x01\xca\x9f\ \xd1\xd1\xdd\x7d\xe3\x89\x17\x7f\x00\xfc\x12\xa8\x10\x8c\x02\x1d\ \x80\x56\x60\x34\x60\xc6\x12\x9b\xf4\x7d\x6a\x9a\x5a\x58\xf1\xae\ \x95\x55\x6b\xe6\x25\xff\x0e\x48\x6a\xa0\x64\x20\x18\xa7\x45\x34\ \x10\x98\xc8\xdb\x40\x95\x78\x9b\x02\x56\xcd\x48\x30\xa1\x4a\xe3\ \x08\x09\x40\x4a\x04\x1f\x9e\x77\xc6\x45\x29\x2b\x9d\x86\xd0\x8d\ \xaa\x22\x4b\x20\xf3\xa0\x4a\xa0\x7d\xd0\x21\x68\x09\x46\x45\xa0\ \x30\x46\x63\x80\xd0\xf7\x98\xd0\x33\x9b\xf3\x96\x75\x9d\xd6\x56\ \xcd\x3b\x0c\x80\x88\x33\x16\xd0\x66\x8a\x9c\xa2\x0b\x9c\x3f\xc2\ \x39\xa6\xc4\x89\x42\x51\x8f\x00\x9f\x38\x1d\x6f\x67\x88\xd3\x09\ \x58\xdc\x0e\x42\x07\x54\x59\x60\x94\x4e\x36\x36\x37\xad\x9e\x34\ \x73\x1e\xb8\x39\x10\x29\x40\x44\x41\x0a\x0b\x8c\x8e\x2a\xa1\xfc\ \xc8\x47\x42\xca\x18\xa3\xcb\x68\xad\xc0\x72\xe8\x99\xd3\xc3\xb1\ \x93\xb7\xaf\xd4\x3b\x79\x82\x23\x5c\x7a\xc4\xe7\xea\xd4\xc4\xe9\ \x4b\x52\x33\x7b\xea\xed\xa6\x26\x4c\x18\x22\xfb\xfa\x08\xb6\x6e\ \xeb\x1b\xe8\x3f\xf2\xab\xd9\x9a\x3b\xb6\xc1\x6f\x94\x78\x1b\x02\ \xda\x33\x82\x8e\x8c\xc2\x11\x60\x59\xa0\x64\xd8\xd1\x34\x79\x72\ \x97\x53\x9d\x86\xb0\x04\x96\x8e\x82\xb7\x82\xb8\x68\x3a\x0e\xd8\ \x07\xe5\x95\x7d\x44\x18\x09\xd0\x23\x18\x53\x6e\x47\xab\xb5\x89\ \xf3\xea\x59\xd9\x0d\x4f\x56\x5d\x74\xf1\x8a\xda\x6b\x3e\x40\xf5\ \x09\xf3\xb1\x33\x35\x08\xad\x41\x86\x18\xaf\x44\xd8\xdf\x37\x39\ \xf9\xec\xb3\x57\xdc\x71\xe7\xbd\x57\xfc\x64\xe3\xe6\xbb\xbe\x66\ \xf8\x54\x09\xb2\x7f\x94\x80\x84\x65\xa8\xb2\x24\xa9\x78\x0e\x95\ \xa0\xa9\xb6\x2e\x93\xc4\x04\x20\x03\xb0\x15\x98\x30\x1e\x5c\x01\ \x98\x58\x40\x10\x21\xa3\x16\xd3\x5a\xc5\x44\xad\xe4\x6a\x9f\xde\ \x75\x7b\x59\x9d\x6f\x9d\xdf\xf1\xc0\x37\x49\x5f\x7c\x19\x00\xf8\ \x25\x4c\x18\x60\x64\xfc\x7e\x15\x92\x98\x38\x81\x86\xcb\x2e\xa2\ \xe1\xec\x77\xf2\x89\x3b\xee\xbc\xaa\xfb\x7b\x3f\x9c\xff\xc1\x42\ \x78\xe1\x20\xec\xf9\x23\x7e\x89\xc1\x12\xa6\xec\x45\xf4\x6c\x04\ \x2a\x0e\xcc\x80\x91\x51\xf6\x85\x5d\x11\x60\x14\x95\x2a\xf8\x18\ \x15\xa0\x94\x44\x69\x89\x36\x1a\x6d\x19\xde\x7c\x6e\x0b\x0d\x8f\ \xef\xa5\xeb\xce\x9f\x92\x58\xb6\x1c\x42\x2f\x7a\x87\x65\x23\x46\ \x30\x23\x20\xac\x08\x19\xa2\x3d\xb7\x7c\x9f\xfc\xc4\xc7\xb8\xa8\ \xa5\x69\x41\x70\xdb\x37\x7e\xf6\xbe\xc3\xa5\x33\x25\x0c\xfd\xde\ \x21\x2e\xc9\x11\x34\x84\x02\x82\x51\x2c\x0e\x16\x0b\xd9\x12\xa1\ \x1b\x0f\x6e\x11\xc2\x42\x84\x8c\xa8\x9c\x4b\x68\x15\x20\x75\x14\ \xbc\x52\x0a\xd0\xf4\xf5\x1f\xc2\x79\x64\x3d\xdd\x9f\xfd\x3c\x89\ \x65\x27\x63\x4a\x39\x00\xf8\x8f\xa0\x05\x47\x1b\x18\xa9\xd0\x85\ \x02\x66\xcd\xa5\xac\x79\xff\x7b\x16\x5d\x53\x9f\xb8\xf9\x0f\x6e\ \xa1\xbe\x61\xe8\x2f\x81\xb6\x40\x02\xca\xa6\x2f\x77\x78\xff\x4e\ \x37\x3f\x18\x65\x54\xba\x18\x59\x8a\x03\x8f\x18\x79\x2e\xdf\x4b\ \x19\x20\xcb\xd9\x0f\xd1\x4a\xa2\xb5\xa4\x14\x96\x18\x78\xfa\x55\ \xa6\xcd\x59\x42\x72\xf5\x6a\xcc\xd0\x10\x68\x0d\x4a\x81\xf4\x41\ \x49\x8c\xd6\x95\x55\x6c\x2a\x80\x01\x6d\xd0\x9e\x0f\x7f\x71\x09\ \x1f\x5f\x3a\xef\xda\x09\x16\xc7\xfe\x5e\x01\x81\x82\x75\x7b\xc0\ \x76\x20\x69\xc0\x02\x35\x3c\x94\x7b\xe8\xc8\xee\xcd\x18\x21\x90\ \x32\x8c\x02\x95\x3e\x15\x82\xe8\x5e\x85\x28\x39\x82\x92\xe5\xb3\ \x0c\x4a\x1c\x38\x70\x80\x9a\xbd\x59\x1a\xce\xbb\x00\xa4\x02\x15\ \x46\x41\xcb\x00\x13\xfa\x65\xa2\x3b\x15\x11\xcf\x0c\xc6\x50\xa9\ \x44\x48\xd8\xd8\xc4\x8c\xb3\x57\xd4\xac\x6a\xae\xbe\xe4\x0f\x7e\ \x0b\x3d\xbe\x1d\xde\x35\x0b\x7e\xd6\xea\x70\xd9\x80\xc4\xd6\x7c\ \xff\x8d\x97\x9f\xb8\xa1\xe9\x98\xb9\x8d\x42\x58\x00\x08\x2a\x65\ \x37\x98\x78\x65\x1a\xb4\x51\x28\x29\x09\xfc\x22\x81\x3b\x4c\x76\ \xef\x7e\xba\x1b\x5a\x10\xd3\xa6\x63\xbc\x62\x3c\x3b\x80\x56\x20\ \x44\xe5\xac\x64\x3c\x47\x2a\xc2\xa8\xf2\xfb\x0c\x26\x2a\x4c\x18\ \xc2\x8c\x59\x9c\x3e\xbd\xf5\xd4\x7f\x3e\xb4\xdb\x06\xd4\xb8\x02\ \xf6\xe7\xe0\x76\xdf\xe1\xa9\x09\x09\x1e\xaf\xb7\xf8\xf4\x81\xb0\ \xaf\xab\x77\xdf\xc7\x76\xae\xfb\x97\x7b\xba\x4f\xbb\xc0\xd1\x32\ \x1c\xdb\xab\x26\x12\xa0\x95\x22\x0c\x3d\x02\xaf\x88\xef\x16\xf0\ \xfc\x3c\xde\x91\x01\x32\x6d\xb3\x20\x99\x82\x30\x88\xfa\xde\xe8\ \x68\x47\xf3\x96\x80\x78\x15\x2b\x89\x51\x91\x47\xeb\xf8\xbd\x71\ \x82\xc2\x00\x6a\x33\xf4\x74\xb5\x76\xf2\xc2\xee\x7a\x20\x3b\xae\ \x00\x6c\x78\x6a\x6e\x0a\xb4\xe2\x70\x52\x70\xe3\x74\x8b\xb6\x92\ \xaa\xbe\xb4\x77\xbd\xba\xea\x69\xed\xb4\x2f\x7c\x07\x42\xd8\x71\ \xa9\x41\x6b\x55\xee\x7b\x19\xfa\x84\xbe\x4b\x30\x8a\x57\xc0\x0b\ \x8a\xf8\xb9\x2c\xa9\x29\xb5\x71\x6b\x18\xb0\x34\xc2\x68\x88\x2b\ \x09\x44\x82\xb4\xae\x04\xaf\xa2\x36\x8a\x2a\x1b\x41\x18\x82\xd1\ \xa4\x33\x35\xd5\x40\x7a\xfc\x16\xaa\x13\x70\x71\x15\xa8\x68\x00\ \x50\x32\x85\xd1\xdf\x5b\xb2\xf8\xf2\xf7\xe5\xa8\x62\xdd\xd6\x1d\ \xcc\x7b\xfa\x11\x9a\xa7\xce\xa0\x66\x42\x0b\xda\x18\xd4\x5b\xbd\ \x1f\x06\x91\x88\xc0\xc3\x2f\xe4\x18\xea\xdf\xc3\xc1\x52\x09\xa9\ \x03\x52\x32\x8c\x33\x6f\x63\x74\xbc\x2e\x11\x54\x06\xf7\x3f\xcf\ \x80\x41\x47\x44\x22\x94\x82\xc0\x83\x72\x72\x82\x12\x10\x8c\x2f\ \xe0\x43\x29\x48\x38\x40\xf9\x65\x29\x5b\x24\xee\xff\xc6\xca\xaf\ \x9f\x7f\x5c\xcb\x2c\xfe\xfe\xa9\xaf\xd2\x73\xd9\x97\xa8\x1f\xee\ \xe5\xb5\x5f\xde\x4e\x7a\xe7\x26\x32\x0d\x8d\x88\xfa\x0c\x28\x13\ \x0d\xb3\x57\xc0\x3d\x70\x90\x92\x63\xf0\x4f\x9a\x4e\xbe\xa7\x83\ \xa1\x47\xb2\xd4\xb8\x25\x4c\x32\x89\xd0\xaa\xb2\x3a\xe3\xf8\xe3\ \x6d\x33\x26\xeb\xda\xc4\x5e\x2b\xf0\xdd\x48\x40\x21\xc7\xf6\x03\ \xd9\xbd\xc0\xd0\xf8\x02\xac\x2a\x90\x32\x7a\x0a\xf5\x77\xbe\xb5\ \xfa\x1f\xce\xff\xc8\x09\x1f\xe4\x6b\xcf\xde\xca\xc7\x4e\xb9\x81\ \x62\x61\x80\x96\x19\x2b\xe8\x9b\x56\xcb\x83\xf7\xff\x94\xe3\x1e\ \x7f\x85\xb9\xbb\x5e\x46\x77\x26\xb0\x0a\x9a\xd2\x21\xcd\xe3\xe7\ \x9e\x43\xd5\x85\x2d\x9c\x34\xaf\x83\x52\xb6\x9f\x6d\xb9\x5e\xda\ \x0f\xf7\xa1\xa7\x4c\x47\xc8\x10\x61\x0c\x63\x8d\x38\x70\x46\x30\ \x11\x18\xb4\xd6\xe0\x7b\xe0\x95\x30\x81\x07\x07\x7b\x79\x72\xd7\ \xc1\xe7\x81\x70\x7c\x01\x45\x0b\xaa\x01\xd7\xbd\xf2\x3d\x27\x5d\ \x79\xf5\x47\x16\x5e\xcb\x63\x3b\x1e\x66\x51\xe7\x49\x9c\x36\x6d\ \x05\x1b\xfa\x37\xb2\x6f\xe0\x0d\xbc\x50\xb2\xec\xe4\x4b\x49\xb7\ \x9d\x46\xcf\x59\x37\xd0\xb9\xcd\x87\x01\x58\x7b\xc6\x19\x2c\xbe\ \xea\x7a\x0e\x95\x5e\xe3\xa0\xbf\x99\xb6\xc2\x02\xaa\x4f\x58\x88\ \xdc\xf4\x7c\x24\x40\xeb\xca\x0e\x13\x44\x66\x88\x05\x50\xf1\x5a\ \x46\xc1\xbb\x45\x8c\x57\x22\xe5\xe6\xd9\xff\xdb\xcd\xc3\x6b\xf7\ \x66\x1f\xf9\xfd\x6b\x54\x00\xda\x34\xb5\xd4\x4f\xfb\xca\x5f\x2d\ \xff\x30\x6f\xe4\xb7\xb0\x3f\xbf\x87\x77\xcf\xbf\x1a\x5f\x97\x58\ \xd0\x76\x3c\xbb\xb3\x6f\x52\x0a\x3c\x16\x34\x4d\xc5\xef\x3a\x89\ \x81\x1b\xb7\xd2\x71\xeb\xed\x1c\xac\x6b\xa4\xe6\x2b\x7f\xc3\xb1\ \x2d\xd3\xd8\x33\x6c\x31\x74\xa4\x89\x15\xad\x17\x12\xac\xd2\x1c\ \xbe\xfd\x46\x26\x6d\x7f\x15\xaf\x67\x3e\x22\xf0\x00\x10\x46\x10\ \x67\x3f\xf2\x51\x09\x30\x32\x04\xdf\x1d\xa5\x1c\xbc\x90\x01\xce\ \xce\x4d\x7c\xf9\xc9\x97\xee\x1a\x0a\xf5\xc6\xb6\x45\xd7\xa1\xa5\ \xe2\xe0\xc6\xef\x8c\xb3\x85\x3c\x7d\xcd\xbb\x4f\x3f\xbf\xb5\xa5\ \xa1\x9e\x27\x5f\xff\x15\x73\xda\xe6\xe0\xaa\x3c\x68\x41\xc2\x4e\ \xd1\xde\x30\x89\xf6\xfa\x49\x38\x56\x12\x84\x4d\xe9\xb3\x5f\xe4\ \xb5\x7b\x1f\x46\x5f\x71\x2d\x4b\x4e\x38\x0d\xc7\x84\x74\x36\xb5\ \x22\x8c\x8d\xb2\x02\xd2\x29\x58\xbf\xfc\x02\x82\x07\x7e\x4c\x67\ \xa6\x0e\xaf\xb9\x13\x64\x80\x40\xc4\x23\x60\xe2\x5f\x67\x59\xbe\ \x27\xf0\x21\xf0\x30\xbe\x07\x2a\xa4\x7a\xdf\xeb\x3c\xf4\xec\xde\ \xed\x3f\xd8\x67\x6e\x99\xfa\xce\x5b\xcc\xe4\x25\x37\x11\x7a\xc1\ \x88\x80\xef\x02\x66\xac\x00\x8c\x49\xd7\xa4\x9b\xae\x58\x31\x7b\ \x21\x6f\x0c\xee\xc2\xd5\x05\x26\xd6\x35\x31\xe4\x1f\x21\x61\xa5\ \x48\x98\x24\x9e\x70\x49\x08\x07\x4b\x3b\xd8\xc2\x26\x59\x9b\xc6\ \xb9\xef\x47\xd4\x76\x8d\xb6\x48\x01\x4f\x4b\xb4\x51\x68\xa1\x71\ \x84\xcb\xba\x0d\x47\xb8\x73\xfd\x09\x2c\xec\xe9\xe2\xca\x87\x6f\ \xa3\x69\xd9\x71\x84\xd3\x66\x63\x54\x1c\xb4\x31\xa3\x3e\x22\x0c\ \xa3\x9d\xaf\x43\x2c\xb7\x48\x7a\xdb\xab\x6c\x1c\x68\xe3\xd1\x95\ \xf7\x4e\x99\xdd\x99\xff\x42\x6d\x63\xd7\x67\x54\x71\xc0\x53\x7e\ \x00\x08\x52\x75\xed\xf8\xc3\xbd\x15\x01\xb8\xfa\x94\x59\xd3\xa6\ \xcd\x6a\x6e\xa8\x61\xe7\xa1\xad\x34\x65\x26\x50\x94\x79\x2c\x6c\ \x12\xc6\xc7\xd1\x09\x6c\x91\x1c\x21\x0a\xde\x1a\x45\xe6\x68\x5a\ \x3a\x03\x23\x25\x43\xc1\x00\xf1\x08\xe2\x38\x3e\x0f\xfe\xf2\x08\ \x8f\xbd\x72\x0c\x57\x9e\x33\x91\xb5\x4f\x48\x7e\xb5\xf0\x33\xac\ \xc9\xfe\x18\x67\xdb\x23\x24\x66\x76\x13\x36\x34\xa3\x84\x83\xd1\ \x0a\xa4\x2c\xb7\x4b\xd2\x1d\xc6\xee\xef\xc5\xdf\x7f\x98\x8d\xc7\ \x9c\xc1\x2d\x85\x33\x58\xd2\x6c\x57\x2d\xbe\xb8\xeb\xfa\xbb\x1e\ \xcd\xce\x0d\x95\xb9\x44\x58\x4e\x16\xc0\x72\x6a\x48\x66\x26\x57\ \x04\xe0\x5b\x2b\x7b\x26\xb5\x59\x45\x95\x23\x17\x0c\x30\xa9\xae\ \x8d\x7c\x98\xc5\x11\x29\x12\x56\x12\x47\x24\xb0\x47\xb1\x1c\x6c\ \x46\x05\x58\x08\x46\x28\x0e\xc7\xc3\x38\x8a\x21\x99\x0c\x59\xfb\ \xd4\x61\x1e\x7b\x7e\x0e\xb7\x5f\x37\x99\x2d\x5b\x0e\x53\x4f\x81\ \x96\xf9\x3d\x0c\xce\xfa\x3c\x43\xeb\x9e\x27\xfb\x8b\x27\x69\x56\ \xaf\x33\xb1\xce\x50\x95\x72\x40\x2b\x8a\xc5\x80\x1d\x83\x09\x0a\ \x9d\xc7\x71\xf0\xec\x1b\xd8\xd3\x38\x8d\xa5\x2d\x21\x7d\xbf\xdd\ \xc6\xb9\x27\xa5\xe9\xbe\xbc\xf6\xf4\x9b\xee\x1c\x7a\x70\x78\x68\ \xef\x6a\x30\xae\x9b\xdd\x46\xf7\x39\x77\x55\x04\xa0\x13\xc7\x37\ \xd5\x57\x73\xd8\xed\xc7\xb2\x21\x34\x1e\x52\x86\xe5\xe0\x13\x3a\ \x85\x63\x25\x70\xe2\xf6\xb1\x88\x2b\x20\x44\x65\xa5\x18\x83\x93\ \x84\xdf\x6d\x3e\xc4\x7d\xbf\x9c\xc9\xd7\xae\x9b\x42\x8d\x13\xb0\ \x63\xd7\x10\x37\x7d\xa4\x9b\x0d\x3b\x34\xf9\x41\x8b\xfe\xee\xa5\ \x3c\xbb\x6c\x29\x0d\x89\xc3\x6c\xd8\xf4\x3a\x49\xaf\x80\xc1\x22\ \x9f\xa9\x67\xf6\xe2\xd9\x50\x53\x4f\xeb\x44\x90\x7d\x9a\xe5\xc7\ \x26\xa8\x9a\x33\x9d\xe7\xd6\xf5\xf2\xe1\xcb\x8f\xe1\x93\x97\x34\ \x2e\xff\xcb\x5b\x9e\xfc\x36\x70\x35\xd8\xf4\xbd\xfc\x4d\xe0\x7d\ \xc4\x02\x9c\xb6\x64\xd2\x90\xf5\x0e\xe1\x38\xd5\x14\xe4\x50\x39\ \xe3\x09\x9d\x2c\x0f\x6d\xd4\x42\xce\x28\x51\xf0\x58\x08\x31\x02\ \x91\x09\x4b\x10\x0e\xe7\xb8\xfb\x81\x06\xce\x7f\xc7\x0c\x66\x4f\ \x85\x1f\xfd\xfc\x10\x67\xbc\xb3\x9d\xfa\x6a\xc1\xe2\x99\x82\xad\ \x7b\x15\xa1\x0f\xab\xe6\xdb\x54\x57\x4f\x64\x42\xd7\x44\x7e\xbd\ \xcb\x43\x1b\xc3\xaa\xe9\x69\x16\xb5\xc2\x9b\x87\xe0\x77\x07\x34\ \x4b\x3b\x0c\x0b\xa6\x41\xd2\xa9\xa6\xaf\x3f\xc3\x33\x1b\x06\xb9\ \x70\x59\x23\xcf\x5d\xf8\xae\xab\xee\xd8\xbc\xfa\xd1\xa0\xff\xd1\ \x07\x4a\x87\x36\x55\x3e\xa7\x91\xb6\xe3\x4a\x97\xa2\x1a\x46\x8b\ \x90\x82\xcc\x51\x92\xc3\xe5\xe7\xa2\x1c\x25\x47\x4c\x59\x5c\x61\ \xf4\x1c\xf9\x32\x1e\x59\x7e\xbd\x6e\x08\x25\x67\xb3\xea\xb4\x14\ \x2f\x6e\x73\xb1\x53\x09\xda\x3b\xaa\x19\xf2\xc0\x49\xc0\x9c\x2e\ \x9b\x69\xcd\x82\x99\x6d\x30\xa5\x01\xce\x3d\x06\xae\x5c\x50\xc5\ \x7b\x17\xa4\x39\xaf\x1b\x3a\xea\x61\xfe\x14\xb8\x68\x0e\x9c\x3c\ \xdb\x06\x01\x85\x00\x4e\x3c\x61\x22\xdb\xf6\xba\x1c\x18\x36\x5c\ \x7a\x66\x0d\xdd\x4b\x3f\x7e\x2b\x56\x55\xcd\xd8\x2d\xe4\x59\x85\ \x23\xb9\x41\xa6\x08\x07\x4f\x17\x51\x26\x8c\x33\x1f\xf5\xbf\x53\ \xee\x7d\x07\x4b\x8c\x62\x11\x57\x00\x00\xcb\xb2\x08\x73\xc3\x3c\ \xfb\x5c\x17\x67\xbe\x63\x32\xca\x82\xcd\xbb\x8a\x2c\x9c\xd3\xc4\ \x60\x09\x6c\x20\x50\x90\xb4\x61\x52\x8b\x85\x30\x60\x09\x48\x3a\ \xb0\xb0\x0d\x0c\x90\xb4\x40\x19\x68\x4c\x40\x43\x8d\xc5\xb0\x0f\ \xa1\x8a\xb0\x1c\x41\x7b\x47\x86\x97\xb6\x16\x98\x3f\x37\xc3\xa9\ \xa7\x2d\xea\xd9\xb1\x6e\xf9\x25\xe1\xa1\xc7\xee\xae\x54\x20\xb0\ \xb7\xee\xeb\x1d\x42\x0a\x97\x4a\xe6\x73\x11\x2a\xca\x72\x41\x8d\ \x9e\x87\xa2\x2a\x94\xef\xa2\xb3\x6b\x06\xd9\xbe\x63\x88\x42\x6e\ \x2a\xb3\x66\x55\xb1\xab\x57\x96\xb3\x9f\xae\x71\x18\x76\xa1\x10\ \x44\xe4\x7d\xca\x82\x72\x3e\x0c\xfb\x91\x77\x25\x78\xb2\x72\x37\ \xe4\x42\xd6\x85\xbc\x1f\x65\xbf\x18\x42\xb6\x08\x6d\xed\xb5\x1c\ \x18\x0c\x19\x28\xc2\xfc\x79\x19\x1a\x3b\xcf\x7a\x0f\x20\x2a\x15\ \x30\xf6\xa3\x3b\xb6\x14\xdf\x3b\xbc\xb2\x40\xca\x56\xd8\x3a\x11\ \x55\x40\x8c\xa0\x9d\xa3\xfa\x3f\xde\x42\x20\x20\x61\x49\xb6\xbe\ \x56\xc5\x84\xc6\x56\x52\x19\xd8\xb5\xd3\xa7\xb5\xb9\x9a\x9c\x07\ \x8e\x80\x84\x02\xc7\x06\xc7\x8a\x9e\x6d\x2b\xaa\x80\x00\xc4\x98\ \xcf\x0a\xd0\x06\xd4\x28\x1a\xa4\x01\xa9\x20\xd4\x60\x84\x20\x5d\ \x9b\xe2\x8d\xbe\x90\x96\x49\x09\x5a\x3b\x8f\x3b\xf1\xd0\xc6\xba\ \x2e\x60\x77\x24\xc0\x72\x7e\x91\x7d\x53\xff\x6e\xfd\xf3\x83\xf3\ \x16\x9f\x1e\xe2\xb9\x09\x1c\x9d\x88\x04\x88\x31\x02\x2a\x2b\x14\ \x81\xb0\x2c\x2c\x5d\xa2\x77\x77\x0f\x1d\x2d\x19\x86\xbd\x28\x6b\ \x89\x74\xa2\x7c\x4e\xda\x90\xb0\xc0\x89\xb1\xad\x8a\x00\x8b\xca\ \x97\x35\x54\x04\xe8\xb7\x04\xc4\x84\x3a\x12\x55\x5b\x57\x45\xdf\ \x40\xc0\x94\xce\x04\x13\x26\xb6\x34\x88\x54\xc7\xbc\x8a\x00\x43\ \x09\xec\x4f\x3e\xf7\x90\xfb\x78\xba\x4e\x8b\x99\x27\x24\xf0\x82\ \x04\x42\x46\xdb\xc7\xb1\x1c\x2c\xa2\x1f\x31\x51\x9e\x01\x01\x8c\ \x78\x4b\xa0\xc2\x22\xb9\x81\x24\x3d\xd3\x13\x1c\x1e\x06\x2b\x99\ \xc0\x53\x10\x8c\xa2\x19\x2b\x40\x94\x89\x2a\x20\xa0\x52\x80\xa3\ \x05\x28\x53\x11\x10\x2a\x30\x8e\x8d\xaf\x45\xb9\xd5\xd2\xb5\x69\ \x2c\xa7\x69\xfa\xd8\x6f\x21\x21\x9e\x90\x45\x71\xd5\xbf\xdd\x21\ \xbf\xdd\xbf\x92\x9a\x79\xa7\x4a\xea\x9a\x3c\x8c\x65\x23\xb5\x8d\ \x18\xc5\xd8\x58\xfa\xad\xf6\x11\x58\x58\xc8\xb0\x80\x57\x02\x69\ \x04\x43\xae\xa1\x2a\xe1\x30\xec\xc7\xed\x63\x8d\x60\xc7\xc1\x8f\ \x27\x20\xc6\x18\xd0\x8c\x11\x70\x54\x15\x8c\xed\x30\xe8\x46\x6b\ \x1b\xe3\xd4\x55\x04\x38\x16\x84\x80\x25\xee\xd1\x6f\x1c\x7a\x75\ \xe3\x0f\xd3\xb7\xbc\xf6\x54\xdd\x39\x1d\x73\x13\xce\xe4\x19\x8a\ \x09\x6d\x8a\x9a\x7a\x48\xa5\xc1\x49\x08\x6c\x5b\x20\x46\x05\xd8\ \x20\x75\x09\x29\x5d\x8a\x25\x49\x49\x0a\xec\x84\xa0\xe0\xc7\x99\ \xb7\x21\xa1\xc6\x0a\xb0\xc4\x98\x19\x38\x5a\x80\x8e\x44\xc8\x4a\ \x2b\x11\xc6\x5e\xdb\x36\x39\x17\x4a\x05\x1f\xa3\x24\x95\x2d\xd4\ \x97\xab\xbc\xcd\xf7\x37\xb1\x7b\xf7\x05\xfe\xba\x6d\x8b\x77\xdd\ \xb3\xe7\x73\xcf\xdd\x7a\x78\xed\xcf\x3f\x97\x7f\xfd\xfe\xcf\x7a\ \xd9\xfb\xfe\x3a\xf4\xee\xbb\x39\x34\xf7\x7d\x21\xe4\xbe\x2f\x05\ \xdc\xff\xe5\x80\x07\xbf\x2a\xd9\xbf\x7b\x90\xec\x91\x22\xa1\x80\ \x92\x84\x42\x18\x51\x0c\xa0\x30\x3e\xe4\xdf\xc2\x8f\x7c\xc1\x8f\ \xef\xc7\xf9\x5b\x5f\x47\xc9\xc9\xf6\x0f\x83\x2e\x0e\x55\x2a\xb0\ \xb1\x17\x4e\xcd\x80\x95\xac\x08\x09\xbc\x8d\x65\x72\x40\x1f\x19\ \x89\xd5\x2c\x85\xdd\x08\x22\x83\x65\x57\x23\x44\x02\x63\x40\x68\ \xdf\xc9\x0c\x9d\xde\xbb\xad\xff\xc6\xd9\xe1\x14\x14\x95\xac\xc7\ \xfd\x8f\x3d\x4e\x05\xc6\xce\x40\x5c\x85\x98\xb8\x85\x50\x95\x0a\ \xa0\x04\x64\x07\x02\x0e\xec\xda\x2b\x8d\xec\xdd\x3e\x76\x06\x9e\ \xdf\x0e\x0b\x7a\x2a\x02\xc6\x92\x07\x9d\xc7\xe8\xdd\x00\x28\xc6\ \x58\x75\xed\xd9\xaf\xf4\x6d\x7e\xe3\x43\xfb\x77\xce\xac\x6b\xeb\ \x69\xc0\x0f\x38\x7a\xfb\x1c\xb5\x42\xc7\x0a\x20\xee\x7f\x13\x05\ \x5f\x59\xa7\x15\x10\x69\xd8\xf9\x62\x1f\xb9\xde\xf5\xaf\x1b\x75\ \x78\x53\xa5\x85\x00\xa4\x82\xf5\xdb\xc0\xf5\x79\xfb\x26\x06\x82\ \xbc\xfb\x8f\x2f\xdf\xfb\x02\x43\x79\x8d\x2b\xa2\x92\xc7\x8c\x6d\ \x97\xa3\x5a\x28\x3e\x8f\xdb\x3e\x51\x3b\xfa\x09\xd8\xf3\xda\x30\ \x9b\x1e\xde\x80\x2c\xfe\xeb\xdd\x60\xfa\xc7\x56\x20\x4e\x01\xb9\ \x02\x6f\xdf\x0c\x96\xc5\x97\xfb\x5f\x7d\x73\xd1\x33\xb7\x3d\xbe\ \x72\xe1\xfb\x4f\xa5\xa1\xb3\x96\x50\x82\x90\x60\x13\xb7\xcf\x38\ \x43\x1c\xb7\x4f\xbc\x4a\x2b\x28\x00\x27\xf2\xfb\x5f\x3c\xc8\x2b\ \xdf\x7f\x81\x7c\xef\x3d\xf7\x6b\xb9\xf9\x2e\x62\x73\xf8\x53\x4d\ \x64\x40\x38\x00\xae\x9d\xb0\x2e\xe8\x7b\x69\xe7\x6d\xd9\x1d\xfd\ \x1f\x9c\x76\xfa\xf1\x76\xe7\x92\xe9\xd4\x75\x34\x90\xac\x16\xd8\ \x0e\x58\x95\xd6\x89\x01\x43\xc5\x0c\xa0\x63\x31\x32\x04\x37\x17\ \x92\xdd\x35\xc0\x9b\x4f\xef\x64\xdf\xf3\xaf\xb8\xd2\x7b\xe4\x4e\ \xcc\x33\x5f\x02\xb2\xff\x7d\x02\x8c\x87\x91\x03\x40\x0a\xa0\x64\ \x27\xed\x8f\x7a\x43\xc5\x3b\xb7\xdc\xf7\xdd\xab\xb7\x3e\xd4\x79\ \x56\xa6\xad\xab\x2b\xd3\xde\x66\xd7\xb6\x36\x50\xd5\x58\x43\xb2\ \x26\x85\x9d\xb2\xb1\x13\x4e\xa5\x02\x1a\x54\x10\x22\x7d\x89\x9f\ \xf7\x70\x07\x0a\xe4\x0f\x0c\x90\xef\xdd\x1f\x16\x0f\xed\x7a\x13\ \x36\x3d\x03\x2f\xff\x04\x86\x46\x3c\x0a\xe0\xbf\x4f\x00\x21\x85\ \x03\x9f\x26\x3d\xe1\x5b\xc4\x86\x65\x5b\xeb\x8d\xfc\xcd\x7a\x1d\ \xee\xab\xc9\xed\xcd\x1c\x9b\xdb\xdb\x34\x17\x9a\xa6\x43\x7a\x32\ \x64\x1a\xa1\xaa\x1a\x2c\x07\xec\x2a\x00\x90\x1e\x68\x09\xa5\x12\ \x14\x73\x30\x7c\x00\x06\x77\xc3\xe1\xed\x90\xdd\x0a\x1c\x64\x1c\ \xfb\xff\xff\x56\xf9\xbf\xb6\x7f\x07\x3d\x3b\xcc\xf1\xa3\xb2\xb6\ \x47\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x0e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x04\xd5\x49\x44\x41\x54\x68\x81\xed\x98\x4f\x4c\x5c\x55\ \x14\xc6\x3f\xc5\x44\x93\x66\x6c\x94\x56\x29\x35\x2d\x09\x63\x2c\ \x01\x69\x29\x43\x45\xde\xd0\xa1\x20\x14\xb0\xc8\x20\x4a\x5b\xb0\ \xe5\x4f\x05\x06\x34\x2d\xcd\xc0\x4c\x67\xf8\x2b\x28\x1b\xc5\x26\ \x6d\x44\x68\x69\x53\x18\xc0\x3e\xe9\xc4\x85\x49\x37\x1a\x6d\x17\ \x8d\x7f\x20\x94\xa8\x69\xdc\x19\xdd\x18\x17\x24\xa6\xba\x70\xd3\ \x5c\xcf\x6d\xd2\xc2\x7b\xf6\x9e\xab\x71\x01\xe8\x0c\xf9\x25\x84\ \xef\xe3\xbc\x77\x72\xbe\x7b\xef\x9b\x07\xc4\x3e\xab\xe0\x93\x08\ \x64\xd4\x01\x73\x0d\xc0\xac\x8a\x6c\xe0\x34\xa7\x4b\xdc\xc0\xa8\ \xce\x63\x68\xea\x54\x03\xf3\x39\xc0\x29\xce\xf3\x02\xf0\x35\xdd\ \x76\xdc\xdd\x06\xb6\x00\x46\x2f\x20\xfa\x18\x3c\x40\x84\xd3\x25\ \x7b\x01\x53\xe7\x29\x02\xa6\x38\x3d\x48\x14\x03\x93\x9c\xc7\x07\ \xdc\x8c\x35\xb0\xaa\x1a\x78\xe2\x41\x38\xf7\x38\x30\xc1\x91\xee\ \x40\x58\xe7\x29\xdc\x80\x9e\xea\x04\x4c\x70\xb8\xd6\xf3\x75\xf2\ \x1c\x88\xa4\xaf\x43\x88\xf3\x18\xeb\x10\xa1\xdb\xbe\x6f\x69\x02\ \x0e\x18\x3d\x1e\x88\x5e\x06\xcf\x56\x44\x38\x5d\x12\x34\x60\x8a\ \x6e\x08\x0e\xef\x36\x4c\x71\x35\x02\x06\x4d\xc0\x89\x49\xce\xd3\ \xec\xba\x3d\x81\x07\x62\x0d\xac\x70\x03\x4b\x6b\x20\xde\x81\x6d\ \x2f\xa7\x62\x74\x7f\x1a\x46\x54\x6c\x7f\x1c\x27\x38\x5d\x52\xf5\ \x34\xba\xa2\x55\x18\xe1\x30\x92\x10\xe2\x6a\x78\x53\x70\x6e\x67\ \x22\x3a\x38\x4f\xa1\x13\xe7\xe9\xb6\xef\xbf\xdb\x40\x42\x3c\xb2\ \x6a\x4b\x30\x57\x5f\x8a\x59\x15\x59\x4f\x61\x98\xd3\x25\x75\xc5\ \x18\xbb\x7a\x0a\xb3\x1c\x79\x19\x18\xe1\x6a\x1c\x7c\x0e\xd7\x77\ \xa5\xf0\xd7\x7a\x3e\x07\xb3\xd6\x6d\xf4\x31\x8a\x50\x1d\x8d\xa7\ \x5e\x8d\x67\x3b\x45\x88\xd1\x25\xc1\x83\x14\xa1\x2b\x14\x15\x06\ \xef\x6e\x8a\x10\x53\x23\x50\x4d\x11\xda\x45\x11\x62\x3c\xcd\xe5\ \xf6\x35\xb0\xe6\x1b\xd8\x08\x77\xe7\x61\x88\x2e\x06\xd9\x00\xa7\ \x4b\xa8\x81\x0f\xff\xf8\x04\x82\xa3\xdc\x8d\x29\xae\x86\x7f\x3f\ \x44\xa1\x0b\xd3\x9c\xe7\xd5\x32\xdb\x22\xce\xcc\x44\x72\x7f\x3f\ \x4c\x8e\x92\x12\x74\xe6\xe7\xc3\xe4\xa8\xac\x44\x8f\xae\x8e\x61\ \x20\xc4\xd5\xf0\x78\x30\x53\x53\x83\x4e\xae\x86\xdf\x0f\xd3\x72\ \x90\x65\x67\xc3\xb8\x75\x8b\x46\x2c\xd4\xd4\xd7\x53\x84\x7a\x69\ \x84\x0c\xc1\x20\x45\x88\xa9\x21\xf1\x7a\x29\x42\x4c\x8d\x40\x00\ \x62\x68\x08\x93\x5c\x8d\x85\x05\x5b\x84\x62\x0d\xac\x74\x03\x72\ \x0d\x98\x26\xce\xce\xcc\xe0\xcc\xbd\xb8\x74\x09\xa3\xe5\xe5\x68\ \xaf\xaa\xc2\x19\x8e\x43\x87\x10\x52\xd5\xb8\x03\x65\xbc\x83\xab\ \x51\x51\x81\xf3\xad\xad\x38\x2e\xaf\xa9\xaa\x71\xf2\x24\xce\x59\ \x0e\x32\x17\x4d\xe0\xda\x02\xc4\x17\xdf\xa8\x69\x0b\xc0\xfc\xf2\ \x5b\x88\x3b\xdc\xcb\x13\xee\xc3\x47\x5c\x0d\x49\x41\x31\x66\x1a\ \x5a\x20\x54\xd4\x34\x40\xb4\x87\x11\xe5\x6a\x8c\x9b\xf8\xdd\xb2\ \x0b\xc9\x06\x7e\xa5\x08\xdd\x14\x6a\xe8\xe6\x22\x9c\x2e\x19\x7c\ \x17\xa6\xce\x53\x4a\x11\x0a\xf6\x51\xdc\x14\x1c\x0b\x52\x1d\x8a\ \x10\x57\xe3\xda\x82\x6d\x1b\x5d\xa3\x0d\x2c\x5b\x03\xcf\xc0\xfd\ \xdd\x0f\x10\x37\x7e\x52\xe3\x0f\xe2\x03\x4e\x97\x74\xbf\x85\xe8\ \x8d\x1f\xe9\x77\x86\xa2\x52\x5c\x6c\x39\x0e\xa1\x42\xc6\x28\x4c\ \x7b\xfd\x5f\xea\x2f\xab\x11\xbd\x8c\xdf\x2c\x0d\x24\xef\x84\xb3\ \x6d\x18\xe3\xfe\xf7\x71\x41\x45\xc9\x11\x04\x39\x5d\x52\x79\x14\ \x9d\x3a\xcf\x8e\x5c\x04\x9e\x2d\xc3\x05\x15\x59\xc5\x88\xec\x6b\ \x42\x80\xab\xd1\xf0\x06\x26\x2c\x8b\x38\x95\x22\xf4\x19\x45\xe8\ \x8a\x50\x53\x4b\x11\xe2\x74\x49\x2b\x45\x48\xe7\x71\x53\x84\xa8\ \x96\x50\x71\x80\x22\xf4\x1a\x45\x88\xab\x31\x66\x8f\x50\xac\x81\ \x95\x69\x60\x69\x17\x72\xd2\x41\x76\x62\x1c\x91\x30\x43\x59\x33\ \x82\x9c\x2e\x79\xf1\x18\xba\x74\x9e\xf4\x5c\x84\x72\x2b\x10\x51\ \x91\x53\x86\xe9\x72\xcd\xb5\x7c\xef\x60\xd2\xb2\x06\xb6\xd0\x04\ \xda\x7f\x86\xe8\xf8\x45\xcd\xee\x30\xa6\x38\x5d\x92\x3f\x88\xa8\ \xce\x53\xf0\x26\x2e\x72\xfa\xeb\xdf\x43\xec\x19\x80\xc9\x79\x0e\ \x7f\x7a\x7b\x17\x8a\xb3\x34\xd0\x4b\x11\xea\x13\x6a\x3c\x14\x21\ \x4e\x97\xec\xa5\x08\xe9\x3c\x45\x6f\xd3\x8b\x2d\x46\x0f\x2e\x52\ \x1d\x8d\xc7\x67\x8f\xd0\x7f\xa2\x81\xa6\x39\xfa\xaa\x36\xaf\xc6\ \xa0\x67\x21\x4e\x97\xe4\xd1\xb3\x90\xce\xe3\xe9\xc6\x0c\xa7\xd7\ \xd1\xd7\x4e\x77\x08\x51\xce\xf3\xd2\xb4\xed\x59\xe8\xe1\x1d\x78\ \x32\x95\x9e\xfe\xd2\xa2\x18\x51\x91\xd0\x88\x76\x4e\x97\x6c\x6e\ \x43\x48\xe7\x49\x68\x41\x07\xa7\xa7\x4c\x60\x6c\xb3\x0f\x7e\xce\ \xe3\xb4\x3f\x8d\x3a\x68\x02\x1e\x8a\x90\x47\xa8\xd9\x4a\x11\xe2\ \x74\x49\x32\x45\x48\xe7\x71\x52\x3c\x38\xdd\x58\xd4\x7b\x5c\xf6\ \x73\x60\xd5\x35\x40\xe7\xc0\xff\xab\x81\x87\x92\x90\xb4\xe9\x08\ \x06\x36\x35\xaa\x59\xef\x46\x13\xa7\x4b\xe2\x0b\xd0\x9a\xd8\x84\ \x7e\x8e\x47\x72\xe1\xb3\xff\xcd\x52\xa7\x16\x83\x8f\x7a\xd0\xa8\ \xfa\x7f\xe9\xd9\x78\x00\x83\x58\xfe\x56\x02\xf4\x38\x0d\x9a\x00\ \xfb\x43\x13\xd0\x38\x04\x68\x02\x5a\x0f\x4d\x80\xd5\x17\xff\x86\ \xc7\x3e\x01\x50\x84\x62\x0d\xac\x68\x03\x19\x70\xe1\x73\xcc\xe1\ \x2a\xbd\xf5\x55\xe1\xc3\x7b\xac\x2e\xf1\xe3\xac\xd6\xd3\x86\x61\ \x56\xff\x18\xd7\x71\x54\x73\xad\x51\xdb\xdb\x69\xe4\x20\x8d\x04\ \xbe\x81\x00\x86\xb4\x37\xd7\x8f\xd3\x5a\x4f\x0f\xcd\x89\xd3\x2f\ \x63\x1e\x5d\x1a\xcf\x04\xbe\xb2\x1c\x64\x6b\x34\x42\x71\x6b\xbd\ \x81\x55\xbc\x88\xe9\x20\xfb\x67\x0d\x64\x62\x03\x06\xd0\xc8\x52\ \x8d\x52\xad\xa7\x11\xfb\xfe\x75\x9d\x1e\x34\xe3\x15\x14\xb3\x9e\ \x76\xf2\x58\x0e\xb2\x35\xfc\xf9\x13\xd5\x98\xa6\x54\x48\x88\x3c\ \x6f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0c\xbd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x0c\x84\x49\x44\x41\x54\x78\x5e\xed\x99\x6b\x8c\x5c\xe5\ \x79\xc7\x7f\xcf\x7b\x2e\x33\x3b\x33\x7b\xb3\xd7\x5e\xbc\xb6\xd7\ \xc1\x2e\x97\x84\xba\x60\x4c\x20\x41\xad\x43\x44\x40\x54\x90\x96\ \x4a\x69\xaa\x5e\x48\x3f\xd0\x36\x11\x48\xfd\xe2\xa8\x4a\x2b\xd4\ \xa4\x5f\x9a\x56\x8d\x69\xa5\x82\x54\x55\xa9\xc4\xa5\x06\xda\x28\ \x21\x26\x16\x81\x26\x01\x1a\x30\x57\x63\x0a\x76\x6c\xbc\xbb\xe0\ \xcb\x7a\xbd\x37\xef\x75\xee\xe7\x9c\xf7\x7d\x0a\x47\x87\x1d\x8d\ \xd8\xc1\x1f\xa8\x54\x45\xf2\x5f\x7a\x75\x34\x1f\x1e\xcd\xf3\x9b\ \xff\xff\x79\xe7\xd1\x8c\xa8\x2a\xbf\xcc\x32\xfc\x52\xeb\x02\xc0\ \x05\x80\x0b\x00\x3e\x99\x66\x66\x66\x98\x9b\x9b\x03\x11\x50\x45\ \x69\x49\x00\x50\x50\x47\x2a\xf1\x00\x41\xbd\x9c\x87\xf1\x7d\x40\ \x50\x1b\x8b\x6d\x58\x9c\xcd\x8a\x04\xf5\x8b\x21\xb9\x35\xfd\xea\ \x85\xdd\x80\x07\x80\x6a\xa2\xea\xea\x44\xcb\x55\xb1\xcd\xba\xd8\ \x46\x24\x6a\x11\x1c\x88\xe0\x54\x50\x04\x14\x10\x30\x02\x22\x42\ \x26\x54\x95\x52\xa9\xc4\xa6\x4d\x9b\x10\x91\x16\xc0\x7d\xf7\xdd\ \xc7\xfd\xf7\xdf\x4f\x6f\x57\xa1\xbf\x2b\x08\x86\x4a\x41\xd0\xe3\ \x89\x8a\x45\x24\x32\x85\xb0\x1e\xac\x31\xb5\xe2\xe6\x7c\xb0\x66\ \xeb\x70\x61\xcd\x96\xcd\xc5\xee\xfe\x8b\xba\x7a\xd6\xf5\x05\x5d\ \xdd\x05\x40\x9a\x8d\x5a\x75\x71\xf6\xcc\xd9\xa5\x53\xaf\x1d\xee\ \x9a\x7b\x63\x2e\xd9\xf4\xb9\x2d\x1b\xb7\x7f\xe1\x86\xe1\x2d\xa5\ \x6d\x03\xbd\x7e\x6f\x21\x27\x9e\xef\x41\x14\xbb\xa4\xda\x88\xab\ \xcb\x8b\xb5\xe5\x85\x85\x85\xd9\xf9\xd9\x89\xb3\xef\xd5\x4d\x44\ \xf3\xe3\xe5\x5c\x65\x42\x2e\x36\x27\x74\x5d\xa1\x69\xf2\x21\xf9\ \xc5\xb2\xb3\x23\x13\xe5\xe7\x4f\x2f\x2d\x3d\xef\x54\x15\x20\x49\ \x12\x6e\xbe\xf9\x66\x1e\x7a\xe8\x21\x82\x20\x68\x01\xd4\xab\x55\ \x6f\x03\x7c\x65\xc7\xba\xdc\xd7\x2e\xea\x77\x17\x7b\x01\xf9\xe3\ \xc1\x4d\xc8\xc6\xcf\x48\xef\xe6\x4b\xcc\xba\x8d\x1b\x65\x68\xc3\ \x1a\x6f\xd3\x40\x57\x30\xd8\x67\xa4\xaf\x00\xa5\x1c\xf8\x86\x54\ \x91\x85\xd9\xca\xb5\xbc\x79\xf2\x56\xad\xcf\x9f\xd5\xe1\xe1\x0d\ \x72\xf5\xd6\xbc\x0c\x14\x21\xe7\x83\x67\x58\x91\x55\x48\x6c\x2f\ \xcd\x04\x2a\xd1\x4e\x16\xaa\xca\xd4\x92\xe5\xf1\x83\x15\x4e\x9e\ \x78\x97\x92\x79\x9d\xbf\xfc\xe4\x7e\xca\xb3\xcb\xdc\xff\xef\xb5\ \xb1\x77\xc6\xcb\xb7\xce\xd5\x6b\x23\x64\x5a\x5c\x5c\x24\xe3\x41\ \x32\x30\xee\xfd\xe6\xb7\x3e\x3b\xf1\xdf\x7b\x9f\xf8\xf2\xad\xa5\ \x81\xc1\xc1\x12\xff\x39\xb1\x8b\xc6\xe5\xbb\xf9\xe3\x1b\xd6\xb0\ \xb6\x08\x5d\x01\x78\x42\x26\xa5\x93\x54\x85\xe9\xf9\x3a\x7d\xdd\ \x21\xf9\x40\xb0\x4e\x51\x4d\x0f\x99\x10\x01\x11\x69\x3b\x00\xa3\ \xf3\xc2\x91\x59\x78\xe0\x47\xc7\xf8\x87\xe1\xbf\x61\x4b\x38\xc5\ \x03\x7b\x27\xe3\x3d\xcf\xcc\x7d\x69\x74\x7e\xee\x09\x32\xdd\x72\ \xcb\x2d\xec\xdb\xb7\x8f\x30\x0c\x5b\x0e\x5c\x54\x2a\x5d\xd7\xb3\ \x4d\x07\xae\xd9\xbe\x9e\xb7\x16\x36\xf1\x7a\xd7\x9f\xf2\xf5\x4f\ \xaf\x61\x4b\xbf\xe2\x9c\xc3\x59\x25\x72\xae\xbd\x99\x56\x2e\x57\ \x1a\xf1\x3c\x8f\x24\xb1\xd4\xeb\x0d\xd4\x1a\xd4\xb9\xce\xb8\xb4\ \xf2\x6d\x8c\xc1\x97\x80\xf5\x25\x8f\x30\xcc\x51\x8d\x3c\x24\x27\ \x74\xe7\xd5\xcf\x79\xde\xc0\x79\x87\xd8\xf7\x58\x93\x0b\x15\x54\ \xa9\xc7\x42\x3e\x17\xd2\x9d\x27\x6d\xc6\x5a\xbb\xd2\x68\x27\x39\ \x4d\x6b\x01\xc1\x3a\x87\xb5\x06\x00\xcd\x2e\x85\xf3\x4a\x15\x23\ \x8a\x11\xf0\x82\x90\x4a\x1c\x20\x02\x5d\x39\x95\x9c\x67\xfa\xcf\ \x0b\xa0\x9a\xda\x8d\x73\x0e\x8f\x04\xd4\xe2\x00\x55\xd0\xd6\x13\ \x14\x74\xa5\xa6\x55\x0b\x8a\x22\x38\xc0\x3a\x68\x5a\x25\xe7\xc0\ \x29\xa0\xed\x4e\x01\x08\x80\x80\x28\x64\x26\xe0\x09\x18\x21\x8d\ \x46\x39\x0e\x00\xa5\x2b\x2f\xac\x0d\xfc\x4b\xb6\xf4\xaf\xfd\xfc\ \xf0\xf6\x2b\x87\xc7\x46\xdf\x7e\x53\x44\xde\x04\xb4\x0d\x00\x68\ \x38\xab\x58\x67\x31\x58\x04\x47\xe2\x20\x3d\xb6\x05\x41\xeb\xd9\ \x06\xa4\x19\x91\x41\x49\x9c\x42\x0c\x91\x03\x75\x2d\xf0\x56\x6c\ \x68\x87\x00\x8c\x90\xd6\x7a\x19\x40\x65\x29\x04\x51\x02\x2f\xe1\ \x4a\xc3\x1f\xde\x34\x38\xf8\x47\x17\x7d\xe1\x96\x42\xed\x0f\xbe\ \x72\xfa\xcd\xb7\x0e\xfe\x89\xaa\xfe\xb4\x1d\x00\x9c\x53\x4d\x33\ \x6b\x48\x52\x90\xa6\x85\xd8\x69\x0a\xd1\xee\xc0\x6a\x2e\x80\x02\ \x06\xb0\x29\xb8\xa3\x60\xc9\x1c\x10\x14\x45\x54\x40\xda\x41\x32\ \x08\x8c\xb4\xe0\x72\xa1\xcf\x72\x92\x27\x49\x1c\x4b\x93\x96\xdb\ \x7f\x7d\x57\xc9\x9b\x5f\xe0\xa7\xff\xf8\x77\xc8\x8d\x5f\xdc\x72\ \xd9\x67\x76\xde\x2e\x22\x1f\x02\x88\x12\x0b\xd6\x3a\x3c\x2c\xce\ \xb9\x14\x20\x71\x10\xa7\x00\x9d\x63\xa4\xe8\x0a\x84\x51\xb0\x4e\ \x53\xf0\xcc\x01\xb2\x12\x24\x2b\x62\x15\x07\x44\xd2\x62\x62\x07\ \x41\xe0\x53\xb5\x79\x8e\xbc\x36\x47\xd1\x6d\x67\xb0\xbb\x97\x57\ \x9f\x7a\x9a\xcb\x8a\x05\xc6\x7e\xf4\x18\x73\x52\x9f\xe0\xcf\xbf\ \x46\x3b\x00\x12\xa3\x8a\xaa\xc3\x68\x82\x5b\x71\x00\x22\x0b\xf0\ \x51\x00\x82\x66\x54\x06\x48\x14\xa2\x24\x8d\x20\xce\xad\x72\xed\ \xba\x95\xc6\x5b\x10\x59\x84\x22\x0b\x7e\xce\xe7\xe8\x48\xc2\x27\ \x26\x7b\xd9\x71\xc9\xe5\x1c\xfa\xc1\xf7\xf1\x82\x00\xd3\x68\x30\ \xd2\x6c\x1e\x68\x96\x97\xf7\xaa\x6a\x3b\x40\xe2\x9c\x4d\xac\x92\ \x3a\x20\x49\xea\x40\x23\x81\x44\x21\x76\xd9\x90\xaa\xac\x64\xbd\ \x05\xd2\x3e\x1f\xa2\xd9\x10\xc7\x8e\xb8\xd3\x0c\xb4\xb9\xa0\x20\ \x82\x00\x81\x40\x53\xa1\xd8\x98\x22\x3a\x3a\xce\x55\xd7\x5d\xcf\ \xe8\x73\xcf\xd1\x58\x5e\xa6\xd4\xd5\xc5\x81\xa9\xa9\x93\x4f\xc1\ \x5f\x5c\x09\xa7\x05\xda\x01\x2a\x51\xd4\xb4\x96\xb4\x71\x51\x97\ \x3a\x10\xb9\x2c\x42\x56\x51\xd5\xb6\x46\x5b\x0e\xb4\xe2\x93\x11\ \xa4\x35\x51\xac\x24\x4e\x70\x4e\x41\x59\x55\x22\xed\x4f\xa3\x50\ \xad\xd4\xe8\xf9\xd9\xbf\xf0\xa5\x2b\xd7\x30\x7b\xec\x18\x33\x23\ \x23\xf4\xae\x5d\xcb\x2f\xc6\xc7\xcb\xfb\xe1\xaf\x27\xe1\xc5\x2b\ \x57\xbd\x46\x51\x75\xea\x70\xd9\x10\xe3\x12\x6a\x31\xc4\x59\x8c\ \x54\x05\xa0\x03\x44\x2b\x5a\x62\x04\x8b\xac\x44\xa8\xdd\x81\x0e\ \x2e\x64\x2f\x7c\xa7\xcc\xee\x7b\x98\x6b\xea\x67\xc9\xa9\xe5\xd8\ \x0b\x07\xe8\x1d\x18\x60\x62\x72\xd2\x3d\x69\xed\x7d\xc7\xe0\xd1\ \x8e\xdb\x28\x2a\x4d\x6b\xc5\xbd\x27\xc3\x07\x0e\x58\xb0\x0a\x91\ \x13\xd0\xcc\x05\x3a\x5d\xa5\x2d\xaa\xd4\xb5\x38\x03\x50\x40\x05\ \xd0\xd6\x30\x93\x49\x5b\x20\xc6\x33\x8c\x3d\xf3\x13\x86\x0e\x3f\ \xcf\xd6\x81\xb5\x1c\x7a\xec\x31\x0a\x7d\x7d\x2c\xcd\xcf\xf3\x56\ \x18\xd4\x46\x44\xf6\xdb\x7a\x3d\xe9\x0c\x00\x4e\x95\x15\x07\x44\ \x13\xea\x09\x59\x84\x00\xed\xfc\xe9\x43\x0b\x4c\x04\x2c\x42\x9c\ \x38\xac\x6b\xcd\x4a\x5b\x91\xb4\x3b\x21\xc6\x70\xee\xed\xa3\x2c\ \xed\xfb\x0f\x3e\x37\xbc\x91\xa3\x8f\x3f\x8e\x88\x90\x34\x9a\x4c\ \x15\x2a\xac\xdf\x36\xe4\x77\x1d\xad\x16\xa9\xd7\xe9\x0c\x20\xc4\ \xd6\xa9\xb3\x99\x03\xea\xdc\x0a\x40\xe2\xda\x72\xde\xae\xd5\xe2\ \x21\x69\x84\xb0\x0a\xe8\x2a\x11\xd2\x16\xac\x88\xa1\x7e\xee\x1c\ \x67\xf7\xfe\x2b\x37\x6c\xde\xc0\xf8\x0b\x2f\x50\x7d\xef\x75\xae\ \xd4\xcd\xf1\xca\x14\xd7\xfc\xfe\x10\x63\x13\x12\x78\x47\xb3\x75\ \xa2\x73\x84\x88\x9d\x13\xd5\x6c\x95\x10\x8d\x88\x2c\x88\xb4\xe7\ \xb6\xf3\x34\x2a\xad\xa6\xc8\x1c\x00\xa1\x1d\xa0\x5d\x82\x8b\x22\ \x4e\x3e\xf2\x5d\x76\x16\x03\x6a\x63\x63\x4c\x1f\x39\x42\x71\x60\ \x80\x91\xc9\x09\xb6\x7d\x79\x90\x4b\xb6\x77\x33\x3e\xb3\xec\xe5\ \x7c\xd3\xf7\xd1\x00\x82\x53\x55\xb5\xd6\x81\x71\xa8\x6a\xea\x80\ \x53\x30\x02\x4a\x9b\x3a\x03\x09\xa4\xf6\x5b\x87\x53\x6d\xb1\x01\ \xba\x8a\x03\xa7\xf7\x7f\x8f\xad\xf3\x13\xf4\x7a\x86\xc3\xcf\x3e\ \x9b\x36\x7f\x7a\x7a\x96\x03\x97\xdf\xc8\x67\x3f\xbd\x84\x30\x4f\ \x3e\x54\x4a\x61\xb0\xe6\x7c\x0e\x34\x9d\x4b\x87\x18\x63\x12\x8c\ \x8b\x68\x26\x80\x08\x46\x04\x45\x61\x95\xcd\xb2\xb5\xc6\xb5\x9a\ \x72\x9e\xe0\xac\x43\x55\x49\x6b\x05\xd0\x16\xb0\x0a\x18\xe3\x31\ \xf5\xca\xcf\x29\x1d\x7a\x9e\x4b\x87\x06\x39\xb2\x77\x2f\x61\x4f\ \x0f\x8b\xf3\xf3\xbc\xf1\xa9\x5d\xbc\xfd\x1b\x7f\x45\xc5\x7e\x13\ \xd0\x14\x20\x30\x72\x1e\x00\xd2\xd8\x93\x02\xa8\x03\x4d\x57\x89\ \x6c\xd1\xd2\x95\x65\x0d\x01\x59\xed\x3e\xd4\x56\x84\x7c\x03\xd6\ \x29\xa4\x00\x06\xa5\x05\xad\xd9\xee\xbf\x7c\x72\x8c\xc6\xfe\xc7\ \xb8\xf1\x13\x9b\x79\x77\xdf\x3e\x9c\xb5\x58\xe7\xf8\x9f\xbe\x21\ \x96\xbf\xfa\xf7\xd8\xe9\x5e\xaa\xb1\x0f\x28\xb9\xc0\xd1\x93\xcb\ \xf7\x0b\x82\xa2\xab\x03\x54\xe2\xa8\x99\xb8\x54\x18\xb5\xf8\x44\ \x69\x84\x14\xf0\x4c\xd6\x9f\x74\x8a\x91\xb6\xef\x37\x46\x70\x1f\ \x00\x18\x50\x97\x31\x42\xea\x48\x73\x69\x91\xe9\x47\xbf\xcb\xae\ \xcd\x83\xcc\xbc\xf4\x12\xe5\x33\x67\xf0\xfb\xfa\x18\xa9\x56\x59\ \xff\x8d\x6f\x73\x62\xeb\x15\x24\x33\xd3\x54\x93\x10\x55\x47\x2e\ \x84\xc0\x68\x3f\xe0\x01\x76\x55\x00\xeb\xd4\x25\xd9\x37\x31\xa9\ \x03\x96\x38\x1b\x62\x4f\xc8\x62\xf0\xd1\xf9\x17\x01\xb2\x38\xe9\ \x07\x00\x59\x6d\xc6\x8f\xda\x84\xf1\xef\x3d\xc0\x55\x79\x81\x53\ \xa7\x99\x3e\x78\x90\xfc\xba\x75\x1c\x9f\x9a\xa6\x77\xf7\x3d\xac\ \xbf\xf9\x37\x79\x61\x0c\xac\x17\x52\x89\xf3\xa8\x2a\x81\xaf\x94\ \x42\xd3\xe7\x1b\x13\xc4\xce\xae\x0e\x00\x24\xaa\xd8\x14\x20\x75\ \x20\xa6\x91\x64\x94\x66\x95\x9b\x44\x40\xda\x71\x20\x1b\x5a\x15\ \x41\x35\xdd\xab\xda\x00\x10\xc3\xa9\x27\x1f\x67\xd3\xf4\x49\x06\ \xbb\xf2\x1c\x7b\xfa\x69\xf2\x03\x03\x8c\x4f\x4f\x93\xfc\xd6\xef\ \x72\xd9\x1d\x7f\x46\xc5\x40\xec\xc0\x9a\x80\xb2\xed\x4a\x73\xed\ \x07\x4a\x21\xa0\xc7\x33\x26\x17\x3b\xdb\xe8\x04\x60\x55\x71\xa9\ \xf5\x6a\x11\x4d\x68\xae\x44\x28\x6d\xa8\xd5\x27\xed\x42\xb5\x8d\ \x43\xb2\xa1\x77\x19\x80\xcb\x86\x76\xfa\xf5\x57\x08\x5e\x79\x96\ \x5f\xdd\x3c\xc4\xe8\xc3\x0f\xe3\x17\x0a\xcc\x2f\x2e\x32\xbb\xfd\ \x6a\x76\xec\xbe\x87\xa0\xd0\x85\x9f\x28\x56\x21\x31\x3e\xe5\xa4\ \x0b\x55\x87\xef\x43\xce\xd7\x6e\x23\x92\x07\x96\x3a\xfd\x32\x67\ \x9d\x13\x67\xb3\x08\x79\xc4\x44\x16\x14\x41\xa4\x3d\x33\x6d\x2f\ \xf5\xc3\x81\xca\x2e\xab\x15\x07\x3c\xcf\x50\x99\x38\xcd\xd2\xbe\ \x47\xb8\xee\xe2\x61\xce\xfc\xf8\xc7\xc4\xb5\x1a\x0d\xe7\x38\xd9\ \xd3\xcf\xe5\xf7\xfc\x2d\xdd\x1b\x36\x22\xce\x11\x18\xc5\xa5\x00\ \x1e\x15\x5b\x4c\x23\xed\x79\xd0\x9d\xa3\x90\xf7\xfd\x22\x40\x27\ \x80\x58\x21\x49\x23\xe4\x2c\x46\x13\xea\x16\x12\xe5\xa3\x25\x00\ \xba\xda\xa2\x96\x02\x78\xc6\x90\x54\xcb\x4c\x3c\xfa\x6f\x5c\xbb\ \x61\x1d\x95\x57\x5f\x65\xf9\x9d\x77\x90\xee\x6e\x46\x6b\x75\x36\ \x7f\xe3\x5b\x5c\xb4\x63\x27\xa2\x16\x11\x08\x04\x10\x4d\x01\x96\ \x53\x00\xc5\x78\x90\xf7\x5d\x51\x90\xe2\x79\xae\x51\xc1\x39\x9b\ \x39\x90\x10\x5b\x58\xed\xf2\x51\x80\x8e\x60\xad\xef\x8e\x38\xb6\ \xe0\x2c\xa7\xbe\xbf\x97\xcb\x25\x21\x3f\x79\x8e\x13\x07\x0e\x10\ \xac\x5b\xc7\xe8\xd4\x24\xfd\x77\xef\xe6\xd2\xdb\x6e\x07\x5c\x2b\ \x7e\x06\x04\x88\xc5\x50\x71\x45\xac\x53\xc4\x28\xc5\x50\x73\xa5\ \x30\xec\x99\xab\x57\x3b\x02\xc4\xaa\x92\x58\xab\xa0\x16\x93\xad\ \x12\x89\x03\x3c\x30\x80\x18\xc1\x08\x69\x73\x88\x64\x30\x82\xb6\ \xa0\x10\x14\xdf\x13\x02\xdf\xa0\x62\x98\x38\xf4\x32\x3d\xef\x1e\ \x63\xb8\xb7\x87\xb1\xfd\xfb\xf1\xd7\xae\xe5\xf4\xf4\x0c\xa3\xbb\ \x7e\x87\xab\xee\xf8\x3a\x67\x6c\x89\xc0\x29\xa1\x40\xce\x28\x7e\ \x1a\x3d\x68\x58\x58\xb6\xdd\x24\x56\x11\x81\x7c\xe0\x42\x23\xf4\ \x7e\xe4\x36\x0a\xa8\xaa\x23\xdb\x87\x68\x3a\x68\xaa\xc1\x7a\x86\ \x72\x0c\x4b\x4d\x61\xae\x01\xe7\xde\x3f\x75\x58\x68\x40\x39\x82\ \x5a\x4c\xfa\x46\x46\xa1\x60\x60\x6d\x0e\x66\x26\x0b\x2c\x8d\xc7\ \x6c\x9a\x3b\xce\xee\xdb\x6e\x63\x7c\xcf\xbd\x88\xef\xb3\x50\x29\ \xf3\x4c\x71\x1b\x3f\xb9\x6c\x37\x0f\xfd\xb0\x89\x49\x96\x08\x34\ \x21\x47\x44\x41\x62\x8a\x12\x31\x5d\x89\xe8\xaf\x59\x0a\xde\x74\ \xea\x40\x50\x1c\x20\x97\xab\xfb\x40\xe7\x08\x35\x93\x24\x6e\xc4\ \x9a\x58\xa7\xa8\x3a\xc4\x36\x29\x4f\x47\xec\x79\x2a\x21\x8e\x13\ \x16\xaa\x09\xd5\x66\x4c\x14\xc5\x38\x1b\xa7\x33\x12\x18\x4b\x28\ \x09\x39\x9a\xe4\x68\x90\xd3\x1a\x35\x57\x61\xa9\x79\x0e\x77\xee\ \x24\x8d\x6a\x95\x0d\x57\x6f\x65\x71\xe3\xa5\x9c\xfa\xed\x3b\x08\ \x7e\xf8\x08\xa7\x8e\xbe\xc8\xb5\x5f\xbd\x9e\xeb\x7e\xe5\x20\x79\ \x79\x91\x9c\x49\x08\x4d\x44\x20\x09\x81\xc4\xe9\x09\xdf\x3f\x46\ \xe9\xf2\x63\xfa\xf2\xbf\x47\x34\x37\x47\x1c\x3f\x97\x28\x34\x3a\ \x02\x44\xd6\x2e\x55\x1b\x66\x36\x36\xf9\x61\x13\x7a\xfc\x5a\xe1\ \x0d\xc2\xca\xb7\x29\x36\x1a\x14\xc3\x98\x52\x18\x53\x2c\x59\xf2\ \xbe\x25\xe7\xc5\xf8\x1a\x61\x92\x26\x34\xab\x24\xb5\x0a\x71\xb5\ \x4e\xb3\x52\xa7\x5e\x69\xba\xca\x72\xb3\x79\x76\xd6\x9e\x99\xcf\ \x6f\xec\xda\xb2\xe1\xfa\x4d\xe3\xe3\x33\x9c\xf2\x72\x1c\x1f\xdc\ \xbc\x68\x16\x07\x2b\x1b\x0f\x3d\x1d\x74\x1d\xf9\x99\x97\x0b\x3c\ \xe3\xf9\x9e\xe7\xa7\xc7\xf7\xfc\xc0\xf7\x82\x20\x90\x30\x0c\xc4\ \x33\x62\xac\x55\xb5\x71\xac\x0b\x53\x93\xc9\x4b\xa7\xcc\xcf\xe7\ \x6a\xb5\xd7\x3b\x02\xd4\x93\x78\x61\x6c\xa6\xb9\xff\xe8\x89\xde\ \x1d\x61\x4f\xce\xec\x1c\x78\x9b\x1d\xee\x28\x71\xa4\xd4\xeb\x96\ \xea\xbc\xa3\x5a\xb6\x5a\xa9\x38\x7b\xb6\xec\x1a\xcb\x15\x2d\x2f\ \x57\x75\x71\xb1\xa6\xb3\x95\x06\x53\x4b\x75\x7b\x76\xb9\xe9\x26\ \xca\x4d\x7b\xb6\x12\xc5\x93\x4d\x64\xf6\xa6\x2f\x5e\xf1\xcf\xdd\ \xdd\x03\x9b\x0e\x1f\x7e\x2b\x7e\xf9\xe5\xe7\xfe\xeb\x8d\x43\x2f\ \x7d\xa7\xba\x38\x77\x8a\xe3\x84\xf9\xf7\x7b\xf5\xbc\x00\x25\x04\ \x0d\x20\x7d\x86\xc5\x20\x08\x43\xcf\x84\x40\x1e\xb0\x0a\xcd\x72\ \x94\x2c\xce\x37\xea\x87\x2b\x51\x34\xdb\x11\xc0\xa1\x1c\x9c\x98\ \xfe\xa7\xf8\x49\xad\x6e\x3b\x18\xde\x58\x08\xa5\xc7\x39\xb5\x8d\ \x48\xab\xe5\x86\x9b\x5d\xaa\xdb\x89\x5a\xe4\x26\xca\x51\x72\xb6\ \x1a\xc5\x53\xf5\xc4\x9e\x6b\x24\xf1\x62\xe4\x5c\xd9\xa1\x4d\xc0\ \xd2\x12\x43\x43\x5b\x3e\xff\xc9\x4f\x6d\xbf\xe6\xb5\xd7\x5e\x3e\ \xf3\xc4\x13\x3f\xf8\xce\xe8\xe8\x91\x07\xa2\xa8\xb9\x44\xa6\xe5\ \x88\x8f\xab\xf6\x9f\xd7\xf7\xec\xd9\xc3\x83\x0f\x3e\x88\xef\xfb\ \x04\xc6\xcf\x79\x46\x42\x40\x9d\x6a\x9c\x38\x1b\x59\x55\x45\xdb\ \x57\x67\x44\x10\x3e\x2c\x55\x65\xfd\xfa\xa1\x2b\xb6\x6f\xbf\xe6\ \xee\x91\x91\x23\x7b\xcf\x9c\x39\x71\x00\x14\x10\x3e\xae\xac\xb5\ \xec\xda\xb5\x8b\x7b\xef\xbd\xb7\xfd\x0f\x8e\xbb\xee\xba\x8b\x3b\ \xef\xbc\x93\x4c\x4d\x85\x26\x1f\xef\x2d\x7f\x21\x62\xee\x76\xce\ \xaa\x88\xf0\x7f\x29\xdf\xf7\xd3\x03\x70\xe1\x9f\xfa\xff\x5f\x5d\ \x00\xb8\x00\x70\x01\xe0\x7f\x01\x6e\xa9\x93\x7a\xf5\x39\xfe\x18\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x16\ \x07\xbc\x11\xc7\ \x00\x6d\ \x00\x65\x00\x74\x00\x61\x00\x63\x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6f\x00\x6e\x00\x6c\x00\x69\x00\x6e\ \x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0e\x40\x40\xc7\ \x00\x6d\ \x00\x69\x00\x6e\x00\x69\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x0a\x34\xf1\x07\ \x00\x62\ \x00\x6c\x00\x75\x00\x65\x00\x5f\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x5f\x00\x73\x00\x77\x00\x69\x00\x72\x00\x6c\x00\x2e\ \x00\x6a\x00\x70\x00\x67\ \x00\x13\ \x01\x35\x7a\xc7\ \x00\x6b\ \x00\x6f\x00\x70\x00\x65\x00\x74\x00\x65\x00\x61\x00\x76\x00\x61\x00\x69\x00\x6c\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x2e\x00\x70\ \x00\x6e\x00\x67\ \x00\x11\ \x04\x5b\x0b\x07\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6e\x00\x6f\x00\x74\x00\x65\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \ \x00\x10\ \x03\x16\x82\x47\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6d\x00\x61\x00\x69\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x08\x13\x30\x07\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x63\x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x73\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x05\xe9\x01\x67\ \x00\x61\ \x00\x72\x00\x74\x00\x73\x00\x66\x00\x66\x00\x74\x00\x73\x00\x63\x00\x6f\x00\x70\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x13\ \x09\x2b\x13\x47\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6a\x00\x6f\x00\x75\x00\x72\x00\x6e\x00\x61\x00\x6c\x00\x2e\x00\x70\ \x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x02\ \x00\x00\x00\x92\x00\x00\x00\x00\x00\x01\x00\x00\x6e\x8c\ \x00\x00\x00\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x87\x15\ \x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x77\xdc\ \x00\x00\x01\x3a\x00\x00\x00\x00\x00\x01\x00\x00\xa4\xbd\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x93\x9b\ \x00\x00\x01\x60\x00\x00\x00\x00\x00\x01\x00\x00\xa9\xcf\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x40\x56\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x12\x20\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x09\xf5\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/graphicsview/padnavigator/ui_form.py0000644000076500000240000001371412613140041024256 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'form.ui' # # Created: Sun May 5 07:55:08 2013 # by: PyQt5 UI code generator 5.0-snapshot-74eb89bd4fb2 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(378, 385) self.verticalLayout_2 = QtWidgets.QVBoxLayout(Form) self.verticalLayout_2.setObjectName("verticalLayout_2") self.groupBox = QtWidgets.QGroupBox(Form) self.groupBox.setFlat(True) self.groupBox.setCheckable(True) self.groupBox.setObjectName("groupBox") self.gridLayout = QtWidgets.QGridLayout(self.groupBox) self.gridLayout.setObjectName("gridLayout") self.label = QtWidgets.QLabel(self.groupBox) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.hostName = QtWidgets.QLineEdit(self.groupBox) self.hostName.setObjectName("hostName") self.gridLayout.addWidget(self.hostName, 0, 1, 1, 1) self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.horizontalSlider = QtWidgets.QSlider(self.groupBox) self.horizontalSlider.setProperty("value", 42) self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.horizontalSlider.setObjectName("horizontalSlider") self.horizontalLayout.addWidget(self.horizontalSlider) self.spinBox = QtWidgets.QSpinBox(self.groupBox) self.spinBox.setProperty("value", 42) self.spinBox.setObjectName("spinBox") self.horizontalLayout.addWidget(self.spinBox) self.gridLayout.addLayout(self.horizontalLayout, 2, 1, 1, 1) self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.groupBox) self.dateTimeEdit.setObjectName("dateTimeEdit") self.gridLayout.addWidget(self.dateTimeEdit, 1, 1, 1, 1) self.verticalLayout_2.addWidget(self.groupBox) self.groupBox_2 = QtWidgets.QGroupBox(Form) self.groupBox_2.setFlat(True) self.groupBox_2.setCheckable(True) self.groupBox_2.setObjectName("groupBox_2") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.treeWidget = QtWidgets.QTreeWidget(self.groupBox_2) self.treeWidget.setObjectName("treeWidget") item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) item_1 = QtWidgets.QTreeWidgetItem(item_0) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) item_1 = QtWidgets.QTreeWidgetItem(item_0) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) item_1 = QtWidgets.QTreeWidgetItem(item_0) item_2 = QtWidgets.QTreeWidgetItem(item_1) self.horizontalLayout_2.addWidget(self.treeWidget) self.verticalLayout_2.addWidget(self.groupBox_2) self.retranslateUi(Form) self.horizontalSlider.valueChanged['int'].connect(self.spinBox.setValue) self.spinBox.valueChanged['int'].connect(self.horizontalSlider.setValue) QtCore.QMetaObject.connectSlotsByName(Form) Form.setTabOrder(self.groupBox, self.hostName) Form.setTabOrder(self.hostName, self.dateTimeEdit) Form.setTabOrder(self.dateTimeEdit, self.horizontalSlider) Form.setTabOrder(self.horizontalSlider, self.spinBox) Form.setTabOrder(self.spinBox, self.groupBox_2) Form.setTabOrder(self.groupBox_2, self.treeWidget) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "BackSide")) self.groupBox.setTitle(_translate("Form", "Settings")) self.label.setText(_translate("Form", "Title:")) self.hostName.setText(_translate("Form", "Pad Navigator Example")) self.label_2.setText(_translate("Form", "Modified:")) self.label_3.setText(_translate("Form", "Extent")) self.groupBox_2.setTitle(_translate("Form", "Other input")) self.treeWidget.headerItem().setText(0, _translate("Form", "Widgets On Graphics View")) __sortingEnabled = self.treeWidget.isSortingEnabled() self.treeWidget.setSortingEnabled(False) self.treeWidget.topLevelItem(0).setText(0, _translate("Form", "QGraphicsProxyWidget")) self.treeWidget.topLevelItem(0).child(0).setText(0, _translate("Form", "QGraphicsWidget")) self.treeWidget.topLevelItem(0).child(0).child(0).setText(0, _translate("Form", "QObject")) self.treeWidget.topLevelItem(0).child(0).child(1).setText(0, _translate("Form", "QGraphicsItem")) self.treeWidget.topLevelItem(0).child(0).child(2).setText(0, _translate("Form", "QGraphicsLayoutItem")) self.treeWidget.topLevelItem(1).setText(0, _translate("Form", "QGraphicsGridLayout")) self.treeWidget.topLevelItem(1).child(0).setText(0, _translate("Form", "QGraphicsLayout")) self.treeWidget.topLevelItem(1).child(0).child(0).setText(0, _translate("Form", "QGraphicsLayoutItem")) self.treeWidget.topLevelItem(2).setText(0, _translate("Form", "QGraphicsLinearLayout")) self.treeWidget.topLevelItem(2).child(0).setText(0, _translate("Form", "QGraphicsLayout")) self.treeWidget.topLevelItem(2).child(0).child(0).setText(0, _translate("Form", "QGraphicsLayoutItem")) self.treeWidget.setSortingEnabled(__sortingEnabled) PyQt-gpl-5.5.1/examples/graphicsview/README0000644000076500000240000000137112613140041020441 0ustar philstaff00000000000000PyQt is provided with a comprehensive canvas through the GraphicsView classes. These examples demonstrate the fundamental aspects of canvas programming with PyQt. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/ipc/0000755000076500000240000000000012613140041015637 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/ipc/localfortuneclient.py0000755000076500000240000001301412613140041022107 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDataStream, QTimer from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton) from PyQt5.QtNetwork import QLocalSocket class Client(QDialog): def __init__(self, parent=None): super(Client, self).__init__(parent) self.blockSize = 0 self.currentFortune = None hostLabel = QLabel("&Server name:") self.hostLineEdit = QLineEdit("fortune") hostLabel.setBuddy(self.hostLineEdit) self.statusLabel = QLabel( "This examples requires that you run the Fortune Server " "example as well.") self.statusLabel.setWordWrap(True) self.getFortuneButton = QPushButton("Get Fortune") self.getFortuneButton.setDefault(True) quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.socket = QLocalSocket() self.hostLineEdit.textChanged.connect(self.enableGetFortuneButton) self.getFortuneButton.clicked.connect(self.requestNewFortune) quitButton.clicked.connect(self.close) self.socket.readyRead.connect(self.readFortune) self.socket.error.connect(self.displayError) mainLayout = QGridLayout() mainLayout.addWidget(hostLabel, 0, 0) mainLayout.addWidget(self.hostLineEdit, 0, 1) mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Fortune Client") self.hostLineEdit.setFocus() def requestNewFortune(self): self.getFortuneButton.setEnabled(False) self.blockSize = 0 self.socket.abort() self.socket.connectToServer(self.hostLineEdit.text()) def readFortune(self): ins = QDataStream(self.socket) ins.setVersion(QDataStream.Qt_4_0) if self.blockSize == 0: if self.socket.bytesAvailable() < 2: return self.blockSize = ins.readUInt16() if ins.atEnd(): return nextFortune = ins.readQString() if nextFortune == self.currentFortune: QTimer.singleShot(0, self.requestNewFortune) return self.currentFortune = nextFortune self.statusLabel.setText(self.currentFortune) self.getFortuneButton.setEnabled(True) def displayError(self, socketError): errors = { QLocalSocket.ServerNotFoundError: "The host was not found. Please check the host name and port " "settings.", QLocalSocket.ConnectionRefusedError: "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.", QLocalSocket.PeerClosedError: None, } msg = errors.get(socketError, "The following error occurred: %s." % self.socket.errorString()) if msg is not None: QMessageBox.information(self, "Fortune Client", msg) self.getFortuneButton.setEnabled(True) def enableGetFortuneButton(self): self.getFortuneButton.setEnabled(self.hostLineEdit.text() != "") if __name__ == '__main__': import sys app = QApplication(sys.argv) client = Client() client.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/ipc/localfortuneserver.py0000755000076500000240000001062712613140041022146 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import QByteArray, QDataStream, QIODevice from PyQt5.QtWidgets import (QApplication, QDialog, QLabel, QHBoxLayout, QMessageBox, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QLocalServer class Server(QDialog): def __init__(self, parent=None): super(Server, self).__init__(parent) statusLabel = QLabel() statusLabel.setWordWrap(True) quitButton = QPushButton("Quit") quitButton.setAutoDefault(False) 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.", ) self.server = QLocalServer() if not self.server.listen('fortune'): QMessageBox.critical(self, "Fortune Server", "Unable to start the server: %s." % self.server.errorString()) self.close() return statusLabel.setText("The server is running.\nRun the Fortune Client " "example now.") quitButton.clicked.connect(self.close) self.server.newConnection.connect(self.sendFortune) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Fortune Server") def sendFortune(self): block = QByteArray() out = QDataStream(block, QIODevice.WriteOnly) out.setVersion(QDataStream.Qt_4_0) out.writeUInt16(0) out.writeQString(random.choice(self.fortunes)) out.device().seek(0) out.writeUInt16(block.size() - 2) clientConnection = self.server.nextPendingConnection() clientConnection.disconnected.connect(clientConnection.deleteLater) clientConnection.write(block) clientConnection.flush() clientConnection.disconnectFromServer() if __name__ == '__main__': import sys app = QApplication(sys.argv) server = Server() server.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/ipc/README0000644000076500000240000000120412613140041016514 0ustar philstaff00000000000000These examples demonstrate IPC support in PyQt. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/ipc/sharedmemory/0000755000076500000240000000000012613140041020336 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/ipc/sharedmemory/dialog.py0000644000076500000240000000353012613140041022150 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'dialog.ui' # # Created: Sun May 12 11:56:49 2013 # by: PyQt5 UI code generator 5.0-snapshot-b0831183bf83 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(451, 322) self.gridlayout = QtWidgets.QGridLayout(Dialog) self.gridlayout.setObjectName("gridlayout") self.loadFromFileButton = QtWidgets.QPushButton(Dialog) self.loadFromFileButton.setObjectName("loadFromFileButton") self.gridlayout.addWidget(self.loadFromFileButton, 0, 0, 1, 1) self.label = QtWidgets.QLabel(Dialog) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setWordWrap(True) self.label.setObjectName("label") self.gridlayout.addWidget(self.label, 1, 0, 1, 1) self.loadFromSharedMemoryButton = QtWidgets.QPushButton(Dialog) self.loadFromSharedMemoryButton.setObjectName("loadFromSharedMemoryButton") self.gridlayout.addWidget(self.loadFromSharedMemoryButton, 2, 0, 1, 1) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.loadFromFileButton.setText(_translate("Dialog", "Load Image From File...")) self.label.setText(_translate("Dialog", "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.")) self.loadFromSharedMemoryButton.setText(_translate("Dialog", "Display Image From Shared Memory")) PyQt-gpl-5.5.1/examples/ipc/sharedmemory/dialog.ui0000644000076500000240000000246212613140041022140 0ustar philstaff00000000000000 Dialog 0 0 451 322 Dialog Load Image From File... 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. Qt::AlignCenter true Display Image From Shared Memory PyQt-gpl-5.5.1/examples/ipc/sharedmemory/image.png0000644000076500000240000002372712613140041022141 0ustar philstaff00000000000000‰PNG  IHDR–ljÜÊsRGB®Îé pHYs  šœtIMEØ  ) ï,ip IDATxÚí]{|TŽÿÍÌÙÝìf „„‡<•½D0Iˆ"•ŠXªÐÚ¢r½µ-hµ­ÕöÚñU[‹Šµ€”«(/Ab I ”Ò"¢á¥"äA’M6Ù=gæwÿ˜sfgw“°D^‡ý„ÝsæÌ9g¾ó{ÿæwç!€ˆò‹ú®ö¨Ÿòh|3}¿ü©Úè›jß@¿ºÞXßs?ñ÷Ó)¥pNo†|r}ô¿ÍþŒLßy 7Õ­þ%*µ'~?œ›q2ã+„BÈ/ ΖÈ"ž°TãÖ)LA)¥”~³ä\€PžbhKýTpÎ !†aè˜ÅóÉâ©D§³–àBpÎuõ1=7+.Pa,ýqÎ Ã8p`ÿ~tgCCc @@€DþD5†²qZ?LÊ?²B8çÉÉÉ ÿö\Ïž½,Ë’:˜dBp´UQø}ùÅW ËþOßÑÛs.«o4 ‘¤ä¨e£ê€&ÛùKÁ«Q³ÝÔïu½XôÉ®`Æ?¶lèÚ­›B1^Ÿ·ê B4«¤4˯!–e†ñåŸ_1dİô†×gç !4.ªèΦB<‡íË8ðF.àP! A JéÔ'ÞÛR™¼£lc×nɈáÉ­ˆÞsždÛF…–e¹\®/>?tÅY—üḏ@£…H”hI:Ô¨PA(©KMD$¾În º}ehÒ!Åû½?o®ðî(ÛØí¢î¦iÆËà–¨PW¹[™£Çå=_Ÿ°7Òâ»jmŽ— ÕN9ý??tðŠ¡#Ft ½ò_cŽ€R)»$ñØb¬µÞÆ Õ}EnQ¿{{¨ä4º €)Þïÿµxc…gG鯋º÷Ði±õ'Œ1KÎ=’ ¿C2<;=üÊ9Õ5È EŠAA8À)p‰ú+p§ À pÀ"öÇÞCý )rR]ÓøÊ9ÙéáC†:xÐ0 ˲⟶•Gˆ1%uƒ2æg¼¹Ù’éÓCüÑxó:æ¬øÆÍvsŸQía¤’:p`àÐá£3¬—fŽ©€ÊYI@’ ’gJ7i† å!‡ #ê*‚$c›Fö#J‘¤¥øn[PüþQãÃÒMÝ{öTµ%_ÏùÀH[£B¿ƒû÷’5&ƒ¿tû誚 à@‚ä€$é ´ì=‚Û_ìˆ|=d  °ìÞƒ°@pÂB"ˆàPU|éöÑc2ø€!Y÷ïw¹\ŠÏÛ—º\®û÷ š•›!Í]%ù§pø''`9lÓ’Lì=œÄ²Sî´áÔÙ+?‚‚%¹(ØŒ×"DP´€ ŠœTÕ4.š1:7C šu`ÿ>…ây뻡ǥ¿ýûö ’56Þ6¦ª¦9ÅOhEÄ!‰`À£ARðpr}TPf» \G‘VÕ4.¼mÌØ 8$kÿ¾ã ¨4t¶–Üîñ¾ýgL'1môkÅ\E¿øëÆ7n¶«–&hó©üiš¦ËåÚW^~ÅЬq™ìoÓFUÖáËŽqLïÛHä^«@j³Žþ)mG^Fùv"þ6DL÷û~ôêúµGøŽÒÍ÷î-o8^´œwÞ–—6hhÖuÆ‚[FUÖ‰Ò_b…‰h&Ži@b@°Ñq´pLyŠmÛK+Ò9¢™‘Òñ& Ýï›ùÚú5G­í¥›{÷îÓ¬½ØR€åœµ ý•öéC³&dºŸŸ2²2ÐDá«ý)£•‹Ô¶ !š„¢ M08† ØTJ#ÕH\]KöbÓ"BzŠ÷Žÿ-Y}$¼£tsï>—ÄÐâù`ÚÆðÏÏ>Ý;hXÖõIÏ}wdE HˆÃ?AÔºÓÝÛŠˆ´ÛÒ¨N±Ø÷›b±„yÇó­Ó°rÞDDì”â»óÍ’UG›¶oÙÜç’KuãCm…PßÉ9?…º\.uú©Pá·÷“O]3ü†Œ¤ùßÉ®¨ qOÕ¼¯†:š}E“Ql¸ˆ"¹ÂCÚ%@rTDDÀN~߬·7¬8Ú´ýƒM—^v™Ž¢üK)UOª;¾e02æ§Ú©â _S YŸ"²ýÒS»¥˜Ma¤œsÆØ§{?œ•=¥KòüI£* ’þ D”Ž´˜ÇÁhÑ0Òh…Äž’òDÉ>m¢Ô]§6TŽˆEÇú  !”P‡“g-_ÿ¿‡¶mÞpÉ¥—ÉÇ9Y(™0¥Tv‡|ðÁŠŠ ]èĨ?9™¸Ý ¦Iñ0æ¢.édžžþÈ#¸\.§¶6P¡ŒÜ !c;?ü0ktÎ@7Ÿ›3¸*ØDœ“].ƒ1w(ì„æA òéjh$¾Žwoã Õ#¥ì(FŠN¸ÑaÜÚ~q¨zÜ”ó°iZ-BG_ÒýEÛ> ³Íï}{à@}tNx“ÓŸsž}ôèÑ©S§644¨à³>Мs¿ßÿ抡ÿû†>}¸Û>ÿü“ÔÔ™?üaCCƒFá÷ûßxãnݺ­_¿Þ0 9ø'¬<ÉßcÕÕÕ7Þxcyyy—ô޵Á&Blü ƒUTT‡{tK²¸€Ø@ £I*¹¨d!@D©X ¢*¢"‰*¦H¢©ÖîOßa?§ÁèÁ/šRRºtê”fYÜ!hçK:\YÕ»wï·Þz+--MNÐ`¤’nä$øÕÕÕmݺÕçóµîÌúùƒÖ¿úêó&XBÌ/+[ۭۻ˗‡Ãa‰ºÜ 訨9rdÇŽ7lØÀS(ªgâŒÔP\8Ùï_·nÇãˆ| £»yfÑÊe?XûV¿#GCŒÅ*wÀ¸Ð¼ÃIÀ9*ùPTt´H>`„ÍbZyEÎ!3Ã3îÆ'ÿá¿ïž!ãÀ„"A@JH(¹Ö¢ZJšR™% ¿ÒÒR9Ñ1ÃMÓÌÈÈÔÖ6„B‡Kˆš¦¦`CCC PQU¥’ôêóùŠ‹‹G=räÈ’’Å®›åö­HbBHä Ý.—ÛíFDªyÌ£2&q> N %Ô`Ì`ŒQj0Ê Cþ4cŒ2j$‚@ŠPDŠHP䵻倂AP ENPºudÙÕ=Ø~˜Ç¤„€Çãñ¸Ý'¬b(ü1;;»¶¶¶¬¬Ì0Œ¦¦&—ËÅcŒΦÿt6I””2B!Ìi#›1ÆÜnwSS¥´¨¨H’£¤{uÑSŸþ$› @”ñp¢ëܲ¸ê³#Áóz™a€*¬¯+¯D‹BÆúQ$³€B»±8·Ù §?)ýEž;bĈÚÚÚ­[·2ÆB¡äx-¹â1Æ‘Š'ÅŒ3¥´©©ÉívæääŒ5jýúõ’a¶U.&œþ„H‰#æ1RUͯ›Rnq¯ÛM…°ïÖIŒ‘ ƒ>˜ÿxç¯ïPSË)•§ëÚ±i)êù©Ã™I´F«ßL÷fÝ¡1Yr§dhœó#FÔÔÔlݺ•ÒØØÈ³,+Þ骾pÎ9ç  rDî€jïoÎó =OAAAnnnvvvII cÌ4͘ŒK•?ñ8©ÀÎ_@{îÛª‹ @Â! !uÝ{[:uJ3MËqŠF)iééiùùß©¨ø€ÑNBp¹-1³‡œò8Ö…&CÁ¹çÜ–"®ÍþÔsS[B[Öµùù€øñÇ€°,Ÿ×‹ˆBÒY4 *HLÓd.—ËãqQÚÎí¶„ð1æ6Œä””P(Äd\ÓiÌ¥ÀGäœ'ùý¥[¶Œ;vܵ׮{÷]iò·¢ǘ4‰R! HÚ$F€¤ €R’™™Þ1­½Þ»¡a^¯Ó‰Í]a™AI”ßÎq´ÙTL A!€sDAì‚@°m–¶.$Õ××´{·î2@D¹ÿ¿ØºmÛêÕ«K¶lijl”£ˆJCœs!b4ù·¬Žiijjl,­¯ïáó¥¸Ý\óÚè<žòe0„üº¬Œ Á(M ~:qbL¢Gü¸®®Wr²‹Rû®„pÆ€öí¿øàƒæäÉ[@F©Å9íÙscqqfffLŸ‘ ¢ÒHí”B[?Œa¹òc4cš6 ¹€íØšUÇîœ}¨gç$ÓŠ$&¢ PA@JIØÈÄ{o\’žf„¹óTBªµñ^ô„2˜+޽jĈ<Ó|䦛‚á0Ñ|}6”r˲ !g¦¸(Í]½záèÑYÝ»‡C! ¶ö+¤ÜF #&ùýwÀ3yyM .)ùÑ6´ä ” …®|ã—ss{øý!Ω¶<Á`L ê.9=}n÷¯×¯¿jĈí›6uÊÈÐQ4Ú‹"‘tˆÎÏ„•!¢N ˆÈ(­©·®êÙéí_dUBޤ&zª¢Ë •µ¡›þº!lɳ„ãˆø¥ãñ4|øXÓœ—›{4B)è¬8'Ê«¾H'ZV˜sªTnÇõg"z,‹KnÄyXùÄñîð2 sŽ&çaÎÄr³L3&«HžUÛØøXnî}……ƒ†—(*ŽÚ”¨TgHª¯~®ÓA.F;&»GFõ±„–‰T?#½µI#•üê‹/¾ž““gšórr¾ª«£<} ÛÕ)Š!·Álpn쫺ºy99XTtuvö¦¢¢.]ºH9E[Ê¿“*,Ñ‚~J€‹hÍX¥»k£´D¢)Óì„@ Ó¦úá0C(¿[¦Ðµ>„èKÇ]Nmúý+]îö»îXUõ䨱_ŒRzʃªÃÄz&má"”Ò¯'ÇŽXUuû]w)—abê ˆ(YÈ Š¨ š¾D-j®!D¼*) DAmQ*€eØ& y4QªÌ!ˆcy&¤ÎÈïúú‰½{Ãáˆ×$Í®½†€é8vWoœ®·«I¯Û9:¢ê\G猠GnC „R†Ãy½{¿Z_¯Ü–‰Ú…€@!#Bi#•§ËŸò;BÄo§0DDB¥{T9ÒìöÂöÝTîOÀ.ÔÝ(Œ±†p˜è±'íK¬DŒ¡-5/ODXÆ1G%<õI€úwµ'Æ£¦Ýj{@ !f©© ¨Mì[ÞP-b98v¡N¾¶¥!ÿiüOc‹DúBíx!òla'Îä$Ê“âÈ£Äe‰.P'”˜˜»cÒ¨Eê|X#$C…ÎøêäEߺ–î#q±L@$Ò¼Ö–Ä£ˆÚÄ5—©Âö2;ÓP„`ŒÉ ÞÒB\F ¢ÆxcD ˆ`!ptžF?!·Ãòá$Á iT´UTµœp °äB €á¨…\†sªÔÅäº"y[‘AµÀk³“’œ˜›;â#•š½Æ\55ñ××›äB؉r²y<® J'^“"8F›Êã NiD:žéÄýËöÄñŽ*wû »¹µ‰ $€vÛ0MS ”z £¾©)hYc§*áXÝ•%D’a¤zÃ`„$»ÝÚ¾ý©ý+{„ûoº©W¯^UUUëÞ{ï' ݳç¯99.B,}-!€(’ C7ÞÚl¢ŠÊgGµµQèÙܦîAF?Qh½ É–I¬F ˆv¤ ‘HñI¢¯ý“ž€ioZÖÇUU©nwuCƒ4…@c“W¬p °÷õ×»vë&Ï9lØô[ny¯°ðÆiÓÌüƒ2öqMͰ=¬pØMi”âãØÈʉ‘OrÈL!R““×}òIÀ²þ²cǪ@àí5kòrsUÛ'Lxè¾û®Ÿ:uÊêÕËo¸[–ê– ZB¤ºÝWU™~$A« ª€PJ€  J)PBœ0Beôœ*w2 ª½Ö ±Ku&òà,Ù#ñŽÿ$f+6+„xzÞ¼—««ŸÝ¾½kjª)×—ÄvIIs·l©ëÑヂ‚®Ýº…Ãaä3M3 å忬\ùôîÝ—¦¤ÜQRRðÙgí|>S:ÇmËo‰ÿ®êå˜B¤ú|ï•—O^·îªôô%û÷¿»re^nn8¶,K^1wíÖ탂‚º=ݲ¥ƒ×+¤g’Sˆ®©©ÏnßþruõÓóæ©¿öÂö¢Ñ–æ–Ñý3BÆÐà„ÕPDšA伨¨'Æ­^³ô•l"6Rª»yâ㨑ÃÑ÷/݉W\\\üО=ÿ裮))&çR< .Ù·oÑüù¯7»\.YéF&I„B¡aC†|æLÞÐðÛ!CòW¯.Ø·/Õç Y‚;^;Ìk« Q;¹!ÎS}¾‚}ûÆ®^ý?C‡’`ð¶™3‡ …d2‡¼¢Ëå ‡Ã¯wñüù‹ËËŒK“ó®))ÿ裇öì)..¾zð`™‘¸›È¥¼g´Å ÄÖSPGïPu´˜BD±©MR#¤sJ^Q5SêH¢D½‘”RÓ4¯4hÓúõÃG€; ª ‡;z½Kwíjß½ûˆ¬,!„Z•¡ˆXæ þt֬܅ ß¼üò$Ʀ.7nTïÞ`YÃü~¿ÇFJJB€Òˆf`ëË˧>9|øýû?±cGá¬Yñ—“ùmBˆYYi=züó«¯n¹üòªÆÆT·û¹íÛ³gϦõë¯4Hå:·ÍÍD¢'= ˜ @Tf¯ÝLÅU)„„rÆpÐ4Òh\dÆ‚ˆ‡0ÑÄ‹˜Ñ1MóÊAƒ6¼ÿ~^NÎʽ{)!I.מcÇ®¹é&•FŸƒKéš™ Ïè%K2¼ÞÚ¦¦Ño¿}]§NB¹j€Ë0ÊŽ€=_~iZUš%dMEïÙóú‡‚ÇÓ533Þà±mSÎcï¹æwo¼ñúž=M¦)þ‰¸áý÷uüì–ˆQ!ÓA#76A[hñtbÚ*ÏÉŽÿ9N&å^‘ÓSQ¡²ùìI6b„‹G›Õ¸Œ eáÈEúƒ¯¼²¬¬¬pÓ&©o(.®þê«x—Nܲ ¯÷¦_ýÊíõ~×å"µ¦¿¦âÀ ¶öXiv7»\PkšáÆÆÇÿ{nY-™ŒòÜcGž2edNŽ|„¿ Þ·o_¹èL÷B'VÀKz˜ôpO4‹Õ£N@ÆõâR—"¦úA% Õ ‘tRéLŠUÅÅ­0q7·N‹œó¾}ûöíÛWî¼fàÀük¯jöE“ LhÛµk—Çåšs÷ݧÄ;ó—yóvíÚ•‘‘¡DZÌÈ !>Ú¹sÝ»ï^1hPL"Ë åΖI,‹ Yׄ‘dTt”i'—W­ƒ‚ˆÑO€ 0M"Dn n TÌÀ^V ˆ@¸%Á²ˆüÈž¸Ë$"±¨}|›Ì“5%üýú÷gŒ½òÊ+Ó§O—ú…ÂO–óx<>úhNn®T Ã8á•M¦iºÝîœÜܹsçæåå…B¡˜"¦iz<žÅ‹3Æúõï‡eW1.L…w‚²$yŒíܦ%…ÈXƒ^åÔjApò°£jWhæÒÚ¹’}.·i^”E¢7‘´m£¦E].Ö>ÕÝ¡;dÚ èÐÎä1Á°¥¥I„9ý9çn·{Þ¼y·Ýv[VVÖ%—\"U|‰ŸagÉ’%EEEååå”R·Û}ÂK5ÏðÁ/»ì²W_}uÚ´iBÓ4Õ„ðx<œ1cÆK/½”””$sÕ[é0! ƒì;h.YQ^S¢-ˆˆ pE¢)Ž4kaqš@Hõ±m×’WJÿY¶¨6ÈÊ7Ï(© Yu ¡U…‡:ø™Åí „ö)î}Mà ‰]³¹î2õÖ²¬[o½uçÎ xûí·ÇŽ«ó®¹sç>ðÀ¯½öÚÅ_³©­T(Ù¦eY_|ñÒ¥K'Ož|èС{ï½WO<,((¸ùæ›çÌ™së­·:k N¢ú“T ß{ïüÊëKUijQé³Ê³MoxTõ'½0[ÔóŒ4Y<*ÜcÓ`¤T’ÁšB¨…²ó¬ƒuþñ÷¹yyrX[¯þÔú²™ÏiƼyó{챞={:ÔçóUWW¯_¿Þ²¬Å‹9R/â§úÑSRcÖ²è;ÕÒUŠÂ0Œ’’’éÓ§†1jÔ¨´´´`0XZZzàÀÙ³gßÿý–eÉNZ©(„8Né ØE-qkà¾ÁuÌj^Ÿd 6uTRdUUÕk¯½öÑG@rrr^^Þøñã@zü¢Ñ¶> j#/«W¯.,,lhh€ÜrË-;v”ø)ðNª›^ý·Ù1mö”Dª·>iâÄÒ“¬Á&H•=¾Ej§pŽJ3´Yþ¡ãÇ["šQ¡²‰šÕÑ[ªÖ}JÊ«Çô£Ã¬¯¥nŨh]Æ»\ø¢/¢¨Y:8IyÅ,á—k tKé8²ð4WfQDçèÖìKàë¬xaœæ'<=àéb2^œŸžl©ša³CÑÒ÷–βÎajP<ÖŽ :²âª]Õ›ñ𙯛%x1õŸÁy1ƒuÇU….@ømR«|é¥ÅOýéÏ~Š‚víÙ#üøC†ôéÙSº‰œñÊÚ)‘…­xø Õ…«­ïÿæeái#ôîÚm„+n?„[ÖÛÖ/YòÏ×^û™a¤_zÉ•C‡5jÌ5×ôêÕK¯0tJhñÜ—…§eÉK„M«ß^S&ŽËÚ¶ïHÚ†ÿƒû÷}¹íß‹~÷÷¿Ï$¤sfæ!C&Nœ8uêTŸÏwª Ïqôk•=º-H ›ªÕ Ë ›ÂÀ¿jlü¤>°'Ô°F.]þóò˯¸âŠ^½z);ìäo,Þ ¦ö臚ݙÈþøÎÏ)*Ôc1r¡(õ3ö6ð=VC]f‡o_?~äÈ1YYßî÷-o’·WÃuNÿäê‰Ûí~è¡ß¼õæÒ»noY&¸  Ý’W^•«é•;MYg¯™qº_†sjW&èÌYâçr¹~þóŸ/X°`tÎØú@€Â©««ËÉûÁƳgÏ&”655Ið¤++ÞùyÂÓ='T±P—Ë5gΜ§žzjkÙÖ«¯ÜÐ$„‚ W]=¸¤dÓO>9gί×{.|6Î%ü~ö³Ÿ=óÌ3eeeÝ{ô¨¬¬d“á;f°ÊÊÊž½z•••eeeqΟzê)Ó4[¦^€ðtãwÏ=÷<ûì³eeeýúõã–e0COq6˜Á-ëòË//++:t¨âé§Ÿ>7P<‹5R—øÝ}÷Ý/¼ðBiiiÿþý=Ú£{w‘ÜVˆŒ±Š/¿ìß¿iié°aÃ8çÏ<óŒDñ¬~EéYiêî1—Ë5kÖ¬… nÙ²¥oß¾•••Œ1.dN•U!ˆÈgŒUVVöíÛwË–-YYYBˆùó盦ٺù|ÂSO…:ýÝyç/½ôÒæÍ›/½ôÒÊÊJ·ÛmY–]( ”‚“K,„ÌH«¬¬¼ôÒK7oÞ<|øp!ÄsÏ=wVÓâÙ' U"ˆËåúñ¼dÉ’M›6õéÓ§ªªJ–º–GcKH:Ê4§ªªª>}úlÚ´iĈœó^xAV9<Q4ÎRü øýöÛ—.]ºqãF¹¸Râ' DÁ…ª—¢x¯à‘ ™æÔ«W¯7fgg !^|ñųEã,Åoƌ˖-+))éÞ½{uuµþ:CιŹ@§Ø†­Î¹‚OO½©®®îÞ½{IIɨQ£8ç‹-:Q<;Ô=‘Î0Œ[o½uÅŠëׯïÖ­[uuµ¢?õªa«3Q‡Çj/¯¨®®–•êGÍ9ùå—%Šg‘vsxg”ý'ñ›6mÚÊ•+‹‹‹;wî|ìØ1YÁWê/BÛd…»vø£R.2ÆŽ;Ö¹sçâââ•+WN›6M&‹Æ§Å^€0 Û:µ%[“øM:uÍš5EEE™™™555-á'÷ØÕ!„½”-¾B±¦¦&33³¨¨hÍš5S§NU(ž/T?ÓoQçŸS¦LY·n]AAAzzzMM ¥TÚ‰¨Íâ(ä;ôdùv@ÜŠm%Ï•y·555éééëÖ­›2eŠDQ4W:ö|‡•]IDAT0ñH…z¥ƒ\8yò䢢¢‚‚‚´´´ÚÚZ™ O[QTYˆHZo)³ªkkkÓÒÒ ŠŠŠ&Ož,³§¤”=“9êJ…J‘À¤I“JJJÖ®]Û¾}ûºº:‰ŸhyãBÄPhí!$ŠuuuíÛ·_»vmIIɤI“䚇–Æ/ÈÂãû_$~'Nܼyó;3ššªã× aE4RÍÓ­4Òf QG155õwÞÙ¼yóĉŠg¬\<oK®–øM˜0¡´´tÕªU~¿¿®®N.ë²å] ›<ŸÄ—ÈYÒ¸¬««óûý«V­*--0a‚ZIzfÊÅ3K*ù'—àŽ7nÛ¶m+V¬HNNJþµ¾i²P«µ¦¯Ìne“´’““W¬X±mÛ¶qãÆÉ˜Ô™)Ï *TòO2Ûüüü;v,_¾Üëõêø‰D6é`Ó5RÇÁvÜMGÑëõ._¾|ÇŽùùùª„Ô™&éˆäååíܹsÙ²en·»¾¾^òÏfŒ‡6Ë–ª,?BX<ÑMZ„úúz·Û½lÙ²;wæåå)#çŒB‘žQøI+>77w÷îÝo¾ù¦Çã ƒJµÁ¶lÛF­ÐrN—÷#_«ôæ›oîÞ½;77WUË8sP<#4R=°,+??ïÞ½K—.5 C¾|³ ü3N#ÕJܵ¦‘¶ÂQ ! †a,]ºtïÞ½ùùùªÅ¢ÝœnnU¡gÒ¤IEEE={öœ1c†|ÙÜ øšÑív}V~pÚÙ–%ÀïOyõ­·>úðá°ybvYz†1VTT4iÒ¤•+W¶²þýtSÅiæñ+§UÐ  îÙ³Çï÷ƒA½8D[/aYVFF§ûøu}åÇ¿ž=yb‘?ý[sÿøÈÑ£†aœ Ÿ÷ù|õõõ}ûöõù|úŠåVÞÑ|®Qa³ñ©­x<žž¼Œ‘‹Ó23;;¼‹ Ó´23;wïÞ£sç.'a Ï—÷,õµÿ”‹ß„zü¨Ù…w'¿%%¹Ú¥úä—SËEôêAªjÅ7…â7S.œb‹/^°`')©}»ÔP(\W”ë¤UGNðèñxvïÞÝPWÙ£{&]*>'J;‹e¡œÂ–e-Y²äþû8|øËï^;87ûÊšÚ@(l2Fw%´}H!|>eF(Ç-¸%íÀ¶ƒç¼Þ›sáq»Ú·K)Üðo¾»­K—®sçþñ{ßûžÎHÎ#uù …â‰ÇçÍ3´ßCsf\Ô%½úX@dŒ:oxnÛ+•í(‡þŽøjÇÿn  œ JHZ‡ÔÏWþöñEÅ¥»çÜwÿœÙ³=OLi¢óŽ •íÅ+//ŸyǬ÷ ×Ý5}Ü·^O)©­k ”DŠÀéõª i"¶KMŸyÕ³‹×ŽÎÍ_ðüüÞ½{Kƒ5F9¿ -aI¦wBÖ¬Y{Ç]³Ì†ÊßÞ;=7ûÊ@ ¡16ƒS·>A:‹s¯Ç’’\¸áÿzl±+9ýùgç_wÝ8¹6±Ù…mç>„ñÕŸÿQ ¾¦žûèã?üð=ž3ãâ]ªkj…@F©ýrž¯Ñ©ÁÉ… ”¤µo·ïàá‡_Töч~øþ_Ìq¹Üò¥å-<9!Œ™ø2 cÆ_|>ë¿îYµâ­ÛoɽkÆ$·‹ÕH¾J¨Ì©8µ@Úoò& PíS“Ã&vÑò_+¼þ†çÿõénÝ.’ù‰¬U–pþBoïË™^\üþÌ;î:VqðW?6.gHCCc°)d0e‡‚“>"{é6¾$Or²wmQÙïÿôj‡N=<ÿì˜1£%‡H¤<Íy' [·úíRè–õ§?ÿå—¿üå\’ùМ—õ¹¨úX|åø Ûú É'ÊÓ:¤~òÙç¿}|Ñ¿>=ò‡?üá§?ùoæä‰'h¿ŸïTØ _=zôÈOôõW¿7iÄÝ?šìMr×ÔÕB؉áRgÉ\©ö©þƦð3[¶dùÆ›§NûóÓOddd&Â9/@˜U&ìRJ?ø`ËgÞyhÿÇ÷Ý}óÄü¬ÆÆ¦†FÛá’À±£˜§l,&{=^oÒÊu›ç=³´{¯o½°à¹k®¦²„Ûš™ÂiEé«Bˆçž_pï½÷õìâpöŒÿè×+lZÄ)ÚŸ°Ç~ƒ Ûeük÷þÿybÑÃõ=6ïÎ;fÊ÷p‘½ é9|µººzöœû-|ñ†üÁC}«)–ï»N\ÿDÄ$»lûÇ+Öm›ñƒÛŸx|^ZZšâœ'ìj¹ Î$¤épnBc[·n}à_76ŠI|øl'œ×ëûã¹úê«9爂1ã$c¨° RªNrZØ^­œùIbp ÛFŽú*²˨OaÀïžõÛé´ÿCO;…{1”VIEND®B`‚PyQt-gpl-5.5.1/examples/ipc/sharedmemory/qt.png0000644000076500000240000000451712613140041021477 0ustar philstaff00000000000000‰PNG  IHDRÝóÐ3PLTE+)!¦Î9dv,# …¢2CJ&T`)tŒ/34#•¸5KU'Ã7\k*­4;?$l.}—1鈹˜×IDATx^ìØ¹UCAÑé·Ìúå-à1’°°8T…p½î¢Ÿ¢_Ø`ƒ aƒ 6Ø`ƒ 6Ø`ƒ ­‡™ol¨¿²{Žgj>‡¤èåÜm(ÜÂÌîµ®k·¡™²nµL…?6ò&K©vé:6òuK?¤š¯6Ø¥Jšs³¡~ÈRÍC*¶ÙÐQ–¥”}Ý>6Zåz4é´æ‡v:K¿‡¢zÕ³ êŸõ¦w61þâç£Àl°Á†°Ál°‰oaóÕf™Ý_ºrÚãÚ|°w/Û‘«0@% Øþÿ¯½“»:£^Ø>B”«sæY•lÌ«Pp Nv?L”#üS6%Éîodogý'lΖýƒì-|·MM›’TmmLaàÈù…6]È«„Zÿ*›š²WLL_cSyå«ß`SÄÏI±²±—Á3]‡ÖÉà‘úV›Úü쫯´9È$§÷Ù„Ý%öwÙÔæ ãê‹lNò¦Éá-6uóæiï° Ù/ÈÞ_`ãü¢ŸnS£_–­~´M'¿0{ÿ`›ä׆ε¿<ÎÊjì#ŸhSwÿÙëÇÙôìý·áÁeSŒlpûP7°hÞC4oÅ! ûP±³Áiìg«õ65{ÿ¥8´~ÉÅ¥þ´s áp[„qâr›ˆ±¸³ð_RΆÉbú J¦qŽ¥6é1ÌQøbúsžs¡MZBSlŠw¨/³©ô¨/% ‚Çt²"ãq8~˜3ã±µ{$$<ÐIKlÂýÞLÊ–›2[ÓÁ qt·AØ´E§G%š}½N6=ŠÎu•ÝØ¦fà¡1~tvc›¶ö¨Ú™ô*š¿ ÎÕ˜«æÚìàÚOÙïtiC›„­Lí+ ‚™M%¬ Êþø=›Ù8tÉn“Œl LcCÕÆFp{gbSŒiÒ^p¨Z؈í0œ¼WÁq6ÅvòN£%Rœ÷àЬ.¾kÑüà`dnºM½H“«ÍxæL€îÚ¦kÑŒqN`jPµ!Ãwº¸-k“Ç4e'µiÒŒqö9»*š±§ªI3Æ)4e椙§.Íçð—RgÚ4 G4cœˆŽ‚¸ =  ãtp4ÆmN u š1NÃV¸ÑŒq*éoñH}MfÐŒqýv#í.çÐŒq²z§"í.æÐŒq’z§"åY*΢ãdí3NR>8ÍœÇ?Z@`šÌ8ÍsR^`î^*Á4ŽS^³“ê N¥ApŠò7\¤:ƒ Jƒálº³8©7¤qN݇4+f3Hã0à 6èÊ §ÿ™¢Ú~¤¹ºé¦4ÔuªªosMbEìº:%Å¡¸-§áMó ‡âs9 šƒ1)n4ërîš»aÒ[ï–4@ªÛ`¸1¤áMq+Nz›ìh óú mã€Õ! Å6$½)üh¸(Nâ¤6…ïV4èÖ¦ÙÛD#»_”Ô–7nÍz ëÒà“Ænolhp¿Æf= Ÿæ6°1¥á oƒb5 y«Í·Úà4ßlƒÓ|¿Mò’^mÒà8ï·IþaÒ‹m @ଷ)c›Ð(â„ìçøD› p^±×t"N³ÿþ&m@£ˆ l€hpœým2@àßð|  ÑÃéŸipçT,÷ ½*ѧÁqІk§Áq¢b) é•BfœÇÓ«Ûä1NAipœ0¶‰KjÚJƒã8Í2!R¼ˆBPg×,L'Å£ipœº¦†¶ûqNŒÇI~Ö·azÒ©Ä›âlcš}Ñÿz¯Å©ºvê­@çZœã§¾Mðãl¼g÷ã”6ì/¤@8DNP¾Y€t_ÇàÀ¡Þ!†Ðæx|š\¤aFp pmjÓŸ/åå" „〫“PÎÏû³\¢p*p%nÓ€ ²\ ÁpponÓ‘+fdHƒáÔK¤e– g¤id@â4è’SܦAW‘É€fˆƒç˜gÓ±{‹e@3§Ì³áŒÝ†&šÙ8O´9À«‹e@3'Í´)è5Ê2 ™ŠC<Ó†7ôöbÐÌÄismüÐLÄ)sm8ÃÉË€fNäÉ6 öd@3 '̶a‹ìe@3'ót§ð>Óèã¤ù6•ÞÉ%#}œÌómØiŒ}2 ÑÇI6•4ÞzÒ:³%Nf vJïs3ÅI665¿ggNþu8ÁʆwìjK{œÈf6ÁßÀ)€SìlxCn°ÇqlhSo5ã±'WK>€×@›ã6µáx¯åÂBœmÊÍVluUÀèUÀ£c†s²¹ G3[Y‚“ØÔÛH®2”"ÀVÊÒ†OïMuª#`ŸikÃÍê!`nnûé|;aóH’½M}Ø”{ª|#åÈL2·áîŸfKõ*Ìî_ðÝ–òU» —z6Æ!Æâ<”ØÒ_€Â!ˆ‹ýÌœ’üŹ3üŸäÜ *L l8ú·$™ÛÔý[qˆqîÛüâÿâÜ·ùÅ!þÅ™lÃuû>b­È{pÌmؽŦÙÛp¢WÐ/°ážßBcoÃ5¾€°Áâ^CcoÃ^@ؼp¥C `ó‚ùŠÎN¡ —hK#•¹@chÃ|𬠡@ciõÉ»XH Ø(§›t¬­\¬²lôsæÙ21\-AÆlô“¦êäór}Ž0`ó>œ®/ 6¯Ó‰éFe—0`37gÔ–‘p§ìM°™žÒH&»r«&P°1IÚtd¶ófÁ¤ðR³Jš˜êÝjRaÈÆ’'z´œéŽ0bcœzJ¾ï²·óQ²0fcŸ’îÔcÅvÖ‡EÚ˜ͪ„Ôb-¹Ô vaÐfmz8œÄýO(ÆØÜúíÚ± 0ÁHÀJ÷_73;¹áêŸîýS›­u›¯Ø°aÆ 6l؈ 6lذaÆ ±aÆ 6lذa#6lذaÆ 6z%D•ÃúÛäIEND®B`‚PyQt-gpl-5.5.1/examples/ipc/sharedmemory/sharedmemory.py0000755000076500000240000001660712613140041023424 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QBuffer, QDataStream, QSharedMemory from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog from dialog import Ui_Dialog class Dialog(QDialog): """ This class is a simple example of how to use QSharedMemory. It is a simple dialog that presents a few buttons. Run the executable twice to create two processes running the dialog. In one of the processes, press the button to load an image into a shared memory segment, and then select an image file to load. Once the first process has loaded and displayed the image, in the second process, press the button to read the same image from shared memory. The second process displays the same image loaded from its new location in shared memory. The class contains a data member sharedMemory, which is initialized with the key "QSharedMemoryExample" to force all instances of Dialog to access the same shared memory segment. The constructor also connects the clicked() signal from each of the three dialog buttons to the slot function appropriate for handling each button. """ def __init__(self, parent = None): super(Dialog, self).__init__(parent) self.sharedMemory = QSharedMemory('QSharedMemoryExample') self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.loadFromFileButton.clicked.connect(self.loadFromFile) self.ui.loadFromSharedMemoryButton.clicked.connect(self.loadFromMemory) self.setWindowTitle("SharedMemory Example") def loadFromFile(self): """ This slot function is called when the "Load Image From File..." button is pressed on the firs Dialog process. First, it tests whether the process is already connected to a shared memory segment and, if so, detaches from that segment. This ensures that we always start the example from the beginning if we run it multiple times with the same two Dialog processes. After detaching from an existing shared memory segment, the user is prompted to select an image file. The selected file is loaded into a QImage. The QImage is displayed in the Dialog and streamed into a QBuffer with a QDataStream. Next, it gets a new shared memory segment from the system big enough to hold the image data in the QBuffer, and it locks the segment to prevent the second Dialog process from accessing it. Then it copies the image from the QBuffer into the shared memory segment. Finally, it unlocks the shared memory segment so the second Dialog process can access it. After self function runs, the user is expected to press the "Load Image from Shared Memory" button on the second Dialog process. """ if self.sharedMemory.isAttached(): self.detach() self.ui.label.setText("Select an image file") fileName, _ = QFileDialog.getOpenFileName(self, None, None, "Images (*.png *.xpm *.jpg)") 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. buf = QBuffer() buf.open(QBuffer.ReadWrite) out = QDataStream(buf) out << image size = buf.size() if not self.sharedMemory.create(size): self.ui.label.setText("Unable to create shared memory segment.") return size = min(self.sharedMemory.size(), size) self.sharedMemory.lock() # Copy image data from buf into shared memory area. self.sharedMemory.data()[:] = buf.data().data() self.sharedMemory.unlock() def loadFromMemory(self): """ This slot function is called in the second Dialog process, when the user presses the "Load Image from Shared Memory" button. First, it attaches the process to the shared memory segment created by the first Dialog process. Then it locks the segment for exclusive access, copies the image data from the segment into a QBuffer, and streams the QBuffer into a QImage. Then it unlocks the shared memory segment, detaches from it, and finally displays the QImage in the Dialog. """ if not self.sharedMemory.attach(): self.ui.label.setText( "Unable to attach to shared memory segment.\nLoad an " "image first.") return buf = QBuffer() ins = QDataStream(buf) image = QImage() self.sharedMemory.lock() buf.setData(self.sharedMemory.constData()) buf.open(QBuffer.ReadOnly) ins >> image self.sharedMemory.unlock() self.sharedMemory.detach() self.ui.label.setPixmap(QPixmap.fromImage(image)) def detach(self): """ This private function is called by the destructor to detach the process from its shared memory segment. When the last process detaches from a shared memory segment, the system releases the shared memory. """ if not self.sharedMemory.detach(): self.ui.label.setText("Unable to detach from shared memory.") if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/0000755000076500000240000000000012613140041017100 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/basicsortfiltermodel.py0000755000076500000240000002276212613140041023706 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QDate, QDateTime, QRegExp, QSortFilterProxyModel, Qt, QTime) from PyQt5.QtGui import QStandardItemModel from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QTreeView, QVBoxLayout, QWidget) SUBJECT, SENDER, DATE = range(3) # Work around the fact that QSortFilterProxyModel always filters datetime # values in QtCore.Qt.ISODate format, but the tree views display using # QtCore.Qt.DefaultLocaleShortDate format. class SortFilterProxyModel(QSortFilterProxyModel): def filterAcceptsRow(self, sourceRow, sourceParent): # Do we filter for the date column? if self.filterKeyColumn() == DATE: # Fetch datetime value. index = self.sourceModel().index(sourceRow, DATE, sourceParent) data = self.sourceModel().data(index) # Return, if regExp match in displayed format. return (self.filterRegExp().indexIn(data.toString(Qt.DefaultLocaleShortDate)) >= 0) # Not our business. return super(SortFilterProxyModel, self).filterAcceptsRow(sourceRow, sourceParent) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.proxyModel = SortFilterProxyModel() self.proxyModel.setDynamicSortFilter(True) self.sourceGroupBox = QGroupBox("Original Model") self.proxyGroupBox = QGroupBox("Sorted/Filtered Model") self.sourceView = QTreeView() self.sourceView.setRootIsDecorated(False) self.sourceView.setAlternatingRowColors(True) self.proxyView = QTreeView() self.proxyView.setRootIsDecorated(False) self.proxyView.setAlternatingRowColors(True) self.proxyView.setModel(self.proxyModel) self.proxyView.setSortingEnabled(True) self.sortCaseSensitivityCheckBox = QCheckBox("Case sensitive sorting") self.filterCaseSensitivityCheckBox = QCheckBox("Case sensitive filter") self.filterPatternLineEdit = QLineEdit() self.filterPatternLabel = QLabel("&Filter pattern:") self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) self.filterSyntaxComboBox = QComboBox() self.filterSyntaxComboBox.addItem("Regular expression", QRegExp.RegExp) self.filterSyntaxComboBox.addItem("Wildcard", QRegExp.Wildcard) self.filterSyntaxComboBox.addItem("Fixed string", QRegExp.FixedString) self.filterSyntaxLabel = QLabel("Filter &syntax:") self.filterSyntaxLabel.setBuddy(self.filterSyntaxComboBox) self.filterColumnComboBox = QComboBox() self.filterColumnComboBox.addItem("Subject") self.filterColumnComboBox.addItem("Sender") self.filterColumnComboBox.addItem("Date") self.filterColumnLabel = QLabel("Filter &column:") self.filterColumnLabel.setBuddy(self.filterColumnComboBox) self.filterPatternLineEdit.textChanged.connect(self.filterRegExpChanged) self.filterSyntaxComboBox.currentIndexChanged.connect(self.filterRegExpChanged) self.filterColumnComboBox.currentIndexChanged.connect(self.filterColumnChanged) self.filterCaseSensitivityCheckBox.toggled.connect(self.filterRegExpChanged) self.sortCaseSensitivityCheckBox.toggled.connect(self.sortChanged) sourceLayout = QHBoxLayout() sourceLayout.addWidget(self.sourceView) self.sourceGroupBox.setLayout(sourceLayout) proxyLayout = QGridLayout() proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3) proxyLayout.addWidget(self.filterPatternLabel, 1, 0) proxyLayout.addWidget(self.filterPatternLineEdit, 1, 1, 1, 2) proxyLayout.addWidget(self.filterSyntaxLabel, 2, 0) proxyLayout.addWidget(self.filterSyntaxComboBox, 2, 1, 1, 2) proxyLayout.addWidget(self.filterColumnLabel, 3, 0) proxyLayout.addWidget(self.filterColumnComboBox, 3, 1, 1, 2) proxyLayout.addWidget(self.filterCaseSensitivityCheckBox, 4, 0, 1, 2) proxyLayout.addWidget(self.sortCaseSensitivityCheckBox, 4, 2) self.proxyGroupBox.setLayout(proxyLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(self.sourceGroupBox) mainLayout.addWidget(self.proxyGroupBox) self.setLayout(mainLayout) self.setWindowTitle("Basic Sort/Filter Model") self.resize(500, 450) self.proxyView.sortByColumn(SENDER, Qt.AscendingOrder) self.filterColumnComboBox.setCurrentIndex(SENDER) self.filterPatternLineEdit.setText("Andy|Grace") self.filterCaseSensitivityCheckBox.setChecked(True) self.sortCaseSensitivityCheckBox.setChecked(True) def setSourceModel(self, model): self.proxyModel.setSourceModel(model) self.sourceView.setModel(model) def filterRegExpChanged(self): syntax_nr = self.filterSyntaxComboBox.itemData(self.filterSyntaxComboBox.currentIndex()) syntax = QRegExp.PatternSyntax(syntax_nr) if self.filterCaseSensitivityCheckBox.isChecked(): caseSensitivity = Qt.CaseSensitive else: caseSensitivity = Qt.CaseInsensitive regExp = QRegExp(self.filterPatternLineEdit.text(), caseSensitivity, syntax) self.proxyModel.setFilterRegExp(regExp) def filterColumnChanged(self): self.proxyModel.setFilterKeyColumn(self.filterColumnComboBox.currentIndex()) def sortChanged(self): if self.sortCaseSensitivityCheckBox.isChecked(): caseSensitivity = Qt.CaseSensitive else: caseSensitivity = Qt.CaseInsensitive self.proxyModel.setSortCaseSensitivity(caseSensitivity) def addMail(model, subject, sender, date): model.insertRow(0) model.setData(model.index(0, SUBJECT), subject) model.setData(model.index(0, SENDER), sender) model.setData(model.index(0, DATE), date) def createMailModel(parent): model = QStandardItemModel(0, 3, parent) model.setHeaderData(SUBJECT, Qt.Horizontal, "Subject") model.setHeaderData(SENDER, Qt.Horizontal, "Sender") model.setHeaderData(DATE, Qt.Horizontal, "Date") addMail(model, "Happy New Year!", "Grace K. ", QDateTime(QDate(2006, 12, 31), QTime(17, 3))) addMail(model, "Radically new concept", "Grace K. ", QDateTime(QDate(2006, 12, 22), QTime(9, 44))) addMail(model, "Accounts", "pascale@nospam.com", QDateTime(QDate(2006, 12, 31), QTime(12, 50))) addMail(model, "Expenses", "Joe Bloggs ", QDateTime(QDate(2006, 12, 25), QTime(11, 39))) addMail(model, "Re: Expenses", "Andy ", QDateTime(QDate(2007, 1, 2), QTime(16, 5))) addMail(model, "Re: Accounts", "Joe Bloggs ", QDateTime(QDate(2007, 1, 3), QTime(14, 18))) addMail(model, "Re: Accounts", "Andy ", QDateTime(QDate(2007, 1, 3), QTime(14, 26))) addMail(model, "Sports", "Linda Smith ", QDateTime(QDate(2007, 1, 5), QTime(11, 33))) addMail(model, "AW: Sports", "Rolf Newschweinstein ", QDateTime(QDate(2007, 1, 5), QTime(12, 0))) addMail(model, "RE: Sports", "Petra Schmidt ", QDateTime(QDate(2007, 1, 5), QTime(12, 1))) return model if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.setSourceModel(createMailModel(window)) window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/chart/0000755000076500000240000000000012613140041020201 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/chart/chart.py0000755000076500000240000005145412613140041021670 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import (QByteArray, QFile, QItemSelection, QItemSelectionModel, QModelIndex, QPoint, QRect, QSize, Qt, QTextStream) from PyQt5.QtGui import (QBrush, QColor, QFontMetrics, QPainter, QPainterPath, QPalette, QPen, QRegion, QStandardItemModel) from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QFileDialog, QMainWindow, QMenu, QRubberBand, QSplitter, QStyle, QTableView) import chart_rc class PieView(QAbstractItemView): def __init__(self, parent=None): super(PieView, self).__init__(parent) self.horizontalScrollBar().setRange(0, 0) self.verticalScrollBar().setRange(0, 0) self.margin = 8 self.totalSize = 300 self.pieSize = self.totalSize - 2*self.margin self.validItems = 0 self.totalValue = 0.0 self.origin = QPoint() self.rubberBand = None def dataChanged(self, topLeft, bottomRight, roles): super(PieView, self).dataChanged(topLeft, bottomRight, roles) self.validItems = 0 self.totalValue = 0.0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value is not None and value > 0.0: self.totalValue += value self.validItems += 1 self.viewport().update() def edit(self, index, trigger, event): if index.column() == 0: return super(PieView, self).edit(index, trigger, event) else: return False def indexAt(self, point): if self.validItems == 0: return QModelIndex() # Transform the view coordinates into contents widget coordinates. wx = point.x() + self.horizontalScrollBar().value() wy = point.y() + self.verticalScrollBar().value() if wx < self.totalSize: cx = wx - self.totalSize/2 cy = self.totalSize/2 - wy; # positive cy for items above the center # Determine the distance from the center point of the pie chart. d = (cx**2 + cy**2)**0.5 if d == 0 or d > self.pieSize/2: return QModelIndex() # Determine the angle of the point. angle = (180 / math.pi) * math.acos(cx/d) if cy < 0: angle = 360 - angle # Find the relevant slice of the pie. startAngle = 0.0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value > 0.0: sliceAngle = 360*value/self.totalValue if angle >= startAngle and angle < (startAngle + sliceAngle): return self.model().index(row, 1, self.rootIndex()) startAngle += sliceAngle else: itemHeight = QFontMetrics(self.viewOptions().font).height() listItem = int((wy - self.margin) / itemHeight) validRow = 0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) if self.model().data(index) > 0.0: if listItem == validRow: return self.model().index(row, 0, self.rootIndex()) # Update the list index that corresponds to the next valid # row. validRow += 1 return QModelIndex() def isIndexHidden(self, index): return False def itemRect(self, index): if not index.isValid(): return QRect() # Check whether the index's row is in the list of rows represented # by slices. if index.column() != 1: valueIndex = self.model().index(index.row(), 1, self.rootIndex()) else: valueIndex = index if self.model().data(valueIndex) > 0.0: listItem = 0 for row in range(index.row()-1, -1, -1): if self.model().data(self.model().index(row, 1, self.rootIndex())) > 0.0: listItem += 1 if index.column() == 0: itemHeight = QFontMetrics(self.viewOptions().font).height() return QRect(self.totalSize, int(self.margin + listItem*itemHeight), self.totalSize - self.margin, int(itemHeight)) elif index.column() == 1: return self.viewport().rect() return QRect() def itemRegion(self, index): if not index.isValid(): return QRegion() if index.column() != 1: return QRegion(self.itemRect(index)) if self.model().data(index) <= 0.0: return QRegion() startAngle = 0.0 for row in range(self.model().rowCount(self.rootIndex())): sliceIndex = self.model().index(row, 1, self.rootIndex()) value = self.model().data(sliceIndex) if value > 0.0: angle = 360*value/self.totalValue if sliceIndex == index: slicePath = QPainterPath() slicePath.moveTo(self.totalSize/2, self.totalSize/2) slicePath.arcTo(self.margin, self.margin, self.margin+self.pieSize, self.margin+self.pieSize, startAngle, angle) slicePath.closeSubpath() return QRegion(slicePath.toFillPolygon().toPolygon()) startAngle += angle return QRegion() def horizontalOffset(self): return self.horizontalScrollBar().value() def mousePressEvent(self, event): super(PieView, self).mousePressEvent(event) self.origin = event.pos() if not self.rubberBand: self.rubberBand = QRubberBand(QRubberBand.Rectangle, self) self.rubberBand.setGeometry(QRect(self.origin, QSize())) self.rubberBand.show() def mouseMoveEvent(self, event): if self.rubberBand: self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized()) super(PieView, self).mouseMoveEvent(event) def mouseReleaseEvent(self, event): super(PieView, self).mouseReleaseEvent(event) if self.rubberBand: self.rubberBand.hide() self.viewport().update() def moveCursor(self, cursorAction, modifiers): current = self.currentIndex() if cursorAction in (QAbstractItemView.MoveLeft, QAbstractItemView.MoveUp): if current.row() > 0: current = self.model().index(current.row() - 1, current.column(), self.rootIndex()) else: current = self.model().index(0, current.column(), self.rootIndex()) elif cursorAction in (QAbstractItemView.MoveRight, QAbstractItemView.MoveDown): if current.row() < self.rows(current) - 1: current = self.model().index(current.row() + 1, current.column(), self.rootIndex()) else: current = self.model().index(self.rows(current) - 1, current.column(), self.rootIndex()) self.viewport().update() return current def paintEvent(self, event): selections = self.selectionModel() option = self.viewOptions() state = option.state background = option.palette.base() foreground = QPen(option.palette.color(QPalette.WindowText)) textPen = QPen(option.palette.color(QPalette.Text)) highlightedPen = QPen(option.palette.color(QPalette.HighlightedText)) painter = QPainter(self.viewport()) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), background) painter.setPen(foreground) # Viewport rectangles pieRect = QRect(self.margin, self.margin, self.pieSize, self.pieSize) keyPoint = QPoint(self.totalSize - self.horizontalScrollBar().value(), self.margin - self.verticalScrollBar().value()) if self.validItems > 0: painter.save() painter.translate(pieRect.x() - self.horizontalScrollBar().value(), pieRect.y() - self.verticalScrollBar().value()) painter.drawEllipse(0, 0, self.pieSize, self.pieSize) startAngle = 0.0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value > 0.0: angle = 360*value/self.totalValue colorIndex = self.model().index(row, 0, self.rootIndex()) color = self.model().data(colorIndex, Qt.DecorationRole) if self.currentIndex() == index: painter.setBrush(QBrush(color, Qt.Dense4Pattern)) elif selections.isSelected(index): painter.setBrush(QBrush(color, Qt.Dense3Pattern)) else: painter.setBrush(QBrush(color)) painter.drawPie(0, 0, self.pieSize, self.pieSize, int(startAngle*16), int(angle*16)) startAngle += angle painter.restore() keyNumber = 0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value > 0.0: labelIndex = self.model().index(row, 0, self.rootIndex()) option = self.viewOptions() option.rect = self.visualRect(labelIndex) if selections.isSelected(labelIndex): option.state |= QStyle.State_Selected if self.currentIndex() == labelIndex: option.state |= QStyle.State_HasFocus self.itemDelegate().paint(painter, option, labelIndex) keyNumber += 1 def resizeEvent(self, event): self.updateGeometries() def rows(self, index): return self.model().rowCount(self.model().parent(index)) def rowsInserted(self, parent, start, end): for row in range(start, end + 1): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value is not None and value > 0.0: self.totalValue += value self.validItems += 1 super(PieView, self).rowsInserted(parent, start, end) def rowsAboutToBeRemoved(self, parent, start, end): for row in range(start, end + 1): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value is not None and value > 0.0: self.totalValue -= value self.validItems -= 1 super(PieView, self).rowsAboutToBeRemoved(parent, start, end) def scrollContentsBy(self, dx, dy): self.viewport().scroll(dx, dy) def scrollTo(self, index, ScrollHint): area = self.viewport().rect() rect = self.visualRect(index) if rect.left() < area.left(): self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() + rect.left() - area.left()) elif rect.right() > area.right(): self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() + min( rect.right() - area.right(), rect.left() - area.left())) if rect.top() < area.top(): self.verticalScrollBar().setValue( self.verticalScrollBar().value() + rect.top() - area.top()) elif rect.bottom() > area.bottom(): self.verticalScrollBar().setValue( self.verticalScrollBar().value() + min( rect.bottom() - area.bottom(), rect.top() - area.top())) def setSelection(self, rect, command): # Use content widget coordinates because we will use the itemRegion() # function to check for intersections. contentsRect = rect.translated(self.horizontalScrollBar().value(), self.verticalScrollBar().value()).normalized() rows = self.model().rowCount(self.rootIndex()) columns = self.model().columnCount(self.rootIndex()) indexes = [] for row in range(rows): for column in range(columns): index = self.model().index(row, column, self.rootIndex()) region = self.itemRegion(index) if not region.intersect(QRegion(contentsRect)).isEmpty(): indexes.append(index) if len(indexes) > 0: firstRow = indexes[0].row() lastRow = indexes[0].row() firstColumn = indexes[0].column() lastColumn = indexes[0].column() for i in range(1, len(indexes)): firstRow = min(firstRow, indexes[i].row()) lastRow = max(lastRow, indexes[i].row()) firstColumn = min(firstColumn, indexes[i].column()) lastColumn = max(lastColumn, indexes[i].column()) selection = QItemSelection( self.model().index(firstRow, firstColumn, self.rootIndex()), self.model().index(lastRow, lastColumn, self.rootIndex())) self.selectionModel().select(selection, command) else: noIndex = QModelIndex() selection = QItemSelection(noIndex, noIndex) self.selectionModel().select(selection, command) self.update() def updateGeometries(self): self.horizontalScrollBar().setPageStep(self.viewport().width()) self.horizontalScrollBar().setRange(0, max(0, 2*self.totalSize - self.viewport().width())) self.verticalScrollBar().setPageStep(self.viewport().height()) self.verticalScrollBar().setRange(0, max(0, self.totalSize - self.viewport().height())) def verticalOffset(self): return self.verticalScrollBar().value() def visualRect(self, index): rect = self.itemRect(index) if rect.isValid(): return QRect(rect.left() - self.horizontalScrollBar().value(), rect.top() - self.verticalScrollBar().value(), rect.width(), rect.height()) else: return rect def visualRegionForSelection(self, selection): region = QRegion() for span in selection: for row in range(span.top(), span.bottom() + 1): for col in range(span.left(), span.right() + 1): index = self.model().index(row, col, self.rootIndex()) region += self.visualRect(index) return region class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") saveAction = fileMenu.addAction("&Save As...") saveAction.setShortcut("Ctrl+S") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") self.setupModel() self.setupViews() openAction.triggered.connect(self.openFile) saveAction.triggered.connect(self.saveFile) quitAction.triggered.connect(QApplication.instance().quit) self.menuBar().addMenu(fileMenu) self.statusBar() self.openFile(':/Charts/qtdata.cht') self.setWindowTitle("Chart") self.resize(870, 550) def setupModel(self): self.model = QStandardItemModel(8, 2, self) self.model.setHeaderData(0, Qt.Horizontal, "Label") self.model.setHeaderData(1, Qt.Horizontal, "Quantity") def setupViews(self): splitter = QSplitter() table = QTableView() self.pieChart = PieView() splitter.addWidget(table) splitter.addWidget(self.pieChart) splitter.setStretchFactor(0, 0) splitter.setStretchFactor(1, 1) table.setModel(self.model) self.pieChart.setModel(self.model) self.selectionModel = QItemSelectionModel(self.model) table.setSelectionModel(self.selectionModel) self.pieChart.setSelectionModel(self.selectionModel) table.horizontalHeader().setStretchLastSection(True) self.setCentralWidget(splitter) def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Choose a data file", '', '*.cht') if path: f = QFile(path) if f.open(QFile.ReadOnly | QFile.Text): stream = QTextStream(f) self.model.removeRows(0, self.model.rowCount(QModelIndex()), QModelIndex()) row = 0 line = stream.readLine() while line: self.model.insertRows(row, 1, QModelIndex()) pieces = line.split(',') self.model.setData(self.model.index(row, 0, QModelIndex()), pieces[0]) self.model.setData(self.model.index(row, 1, QModelIndex()), float(pieces[1])) self.model.setData(self.model.index(row, 0, QModelIndex()), QColor(pieces[2]), Qt.DecorationRole) row += 1 line = stream.readLine() f.close() self.statusBar().showMessage("Loaded %s" % path, 2000) def saveFile(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save file as", '', '*.cht') if fileName: f = QFile(fileName) if f.open(QFile.WriteOnly | QFile.Text): for row in range(self.model.rowCount(QModelIndex())): pieces = [] pieces.append(self.model.data(self.model.index(row, 0, QModelIndex()), Qt.DisplayRole)) pieces.append(str(self.model.data(self.model.index(row, 1, QModelIndex()), Qt.DisplayRole))) pieces.append(self.model.data(self.model.index(row, 0, QModelIndex()), Qt.DecorationRole).name()) f.write(QByteArray(','.join(pieces))) f.write('\n') f.close() self.statusBar().showMessage("Saved %s" % fileName, 2000) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/chart/chart.qrc0000644000076500000240000000015712613140041022014 0ustar philstaff00000000000000 qtdata.cht PyQt-gpl-5.5.1/examples/itemviews/chart/chart_rc.py0000644000076500000240000000504612613140041022345 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 12:14:11 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x01\x90\ \x53\ \x63\x69\x65\x6e\x74\x69\x66\x69\x63\x20\x52\x65\x73\x65\x61\x72\ \x63\x68\x2c\x32\x31\x2c\x23\x39\x39\x65\x36\x30\x30\x0a\x45\x6e\ \x67\x69\x6e\x65\x65\x72\x69\x6e\x67\x20\x26\x20\x44\x65\x73\x69\ \x67\x6e\x2c\x31\x38\x2c\x23\x39\x39\x63\x63\x30\x30\x0a\x41\x75\ \x74\x6f\x6d\x6f\x74\x69\x76\x65\x2c\x31\x34\x2c\x23\x39\x39\x62\ \x33\x30\x30\x0a\x41\x65\x72\x6f\x73\x70\x61\x63\x65\x2c\x31\x33\ \x2c\x23\x39\x66\x39\x39\x31\x61\x0a\x41\x75\x74\x6f\x6d\x61\x74\ \x69\x6f\x6e\x20\x26\x20\x4d\x61\x63\x68\x69\x6e\x65\x20\x54\x6f\ \x6f\x6c\x73\x2c\x31\x33\x2c\x23\x61\x34\x38\x30\x33\x33\x0a\x4d\ \x65\x64\x69\x63\x61\x6c\x20\x26\x20\x42\x69\x6f\x69\x6e\x66\x6f\ \x72\x6d\x61\x74\x69\x63\x73\x2c\x31\x33\x2c\x23\x61\x39\x36\x36\ \x34\x64\x0a\x49\x6d\x61\x67\x69\x6e\x67\x20\x26\x20\x53\x70\x65\ \x63\x69\x61\x6c\x20\x45\x66\x66\x65\x63\x74\x73\x2c\x31\x32\x2c\ \x23\x61\x65\x34\x64\x36\x36\x0a\x44\x65\x66\x65\x6e\x73\x65\x2c\ \x31\x31\x2c\x23\x62\x33\x33\x33\x38\x30\x0a\x54\x65\x73\x74\x20\ \x26\x20\x4d\x65\x61\x73\x75\x72\x65\x6d\x65\x6e\x74\x20\x53\x79\ \x73\x74\x65\x6d\x73\x2c\x39\x2c\x23\x61\x36\x34\x30\x38\x36\x0a\ \x4f\x69\x6c\x20\x26\x20\x47\x61\x73\x2c\x39\x2c\x23\x39\x39\x34\ \x64\x38\x64\x0a\x45\x6e\x74\x65\x72\x74\x61\x69\x6e\x6d\x65\x6e\ \x74\x20\x26\x20\x42\x72\x6f\x61\x64\x63\x61\x73\x74\x69\x6e\x67\ \x2c\x37\x2c\x23\x38\x64\x35\x61\x39\x33\x0a\x46\x69\x6e\x61\x6e\ \x63\x69\x61\x6c\x2c\x36\x2c\x23\x38\x30\x36\x36\x39\x39\x0a\x43\ \x6f\x6e\x73\x75\x6d\x65\x72\x20\x45\x6c\x65\x63\x74\x72\x6f\x6e\ \x69\x63\x73\x2c\x34\x2c\x23\x38\x30\x37\x33\x61\x36\x0a\x4f\x74\ \x68\x65\x72\x2c\x33\x38\x2c\x23\x38\x30\x38\x30\x62\x33\x0a\ " qt_resource_name = b"\ \x00\x06\ \x04\x9e\x89\xb3\ \x00\x43\ \x00\x68\x00\x61\x00\x72\x00\x74\x00\x73\ \x00\x0a\ \x08\xaf\x5c\xb4\ \x00\x71\ \x00\x74\x00\x64\x00\x61\x00\x74\x00\x61\x00\x2e\x00\x63\x00\x68\x00\x74\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/itemviews/chart/mydata.cht0000644000076500000240000000020112613140041022151 0ustar philstaff00000000000000London,4,red Stockholm,5,pink Paris,2,lightgreen Rome,11,green Lisbon,9,blue Madrid,8,lightblue Berlin,6,magenta Vienna,7,purple PyQt-gpl-5.5.1/examples/itemviews/chart/qtdata.cht0000644000076500000240000000062012613140041022155 0ustar philstaff00000000000000Scientific Research,21,#99e600 Engineering & Design,18,#99cc00 Automotive,14,#99b300 Aerospace,13,#9f991a Automation & Machine Tools,13,#a48033 Medical & Bioinformatics,13,#a9664d Imaging & Special Effects,12,#ae4d66 Defense,11,#b33380 Test & Measurement Systems,9,#a64086 Oil & Gas,9,#994d8d Entertainment & Broadcasting,7,#8d5a93 Financial,6,#806699 Consumer Electronics,4,#8073a6 Other,38,#8080b3 PyQt-gpl-5.5.1/examples/itemviews/coloreditorfactory.py0000755000076500000240000001066312613140041023400 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, Qt, QVariant from PyQt5.QtGui import QColor from PyQt5.QtWidgets import (QApplication, QComboBox, QGridLayout, QItemEditorCreatorBase, QItemEditorFactory, QTableWidget, QTableWidgetItem, QWidget) class ColorListEditor(QComboBox): def __init__(self, widget=None): super(ColorListEditor, self).__init__(widget) self.populateList() def getColor(self): color = self.itemData(self.currentIndex(), Qt.DecorationRole) return color def setColor(self, color): self.setCurrentIndex(self.findData(color, Qt.DecorationRole)) color = pyqtProperty(QColor, getColor, setColor, user=True) def populateList(self): for i, colorName in enumerate(QColor.colorNames()): color = QColor(colorName) self.insertItem(i, colorName) self.setItemData(i, color, Qt.DecorationRole) class ColorListItemEditorCreator(QItemEditorCreatorBase): def createWidget(self, parent): return ColorListEditor(parent) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) factory = QItemEditorFactory() factory.registerEditor(QVariant.Color, ColorListItemEditorCreator()) QItemEditorFactory.setDefaultFactory(factory) self.createGUI() def createGUI(self): tableData = [ ("Alice", QColor('aliceblue')), ("Neptun", QColor('aquamarine')), ("Ferdinand", QColor('springgreen')) ] table = QTableWidget(3, 2) table.setHorizontalHeaderLabels(["Name", "Hair Color"]) table.verticalHeader().setVisible(False) table.resize(150, 50) for i, (name, color) in enumerate(tableData): nameItem = QTableWidgetItem(name) colorItem = QTableWidgetItem() colorItem.setData(Qt.DisplayRole, color) table.setItem(i, 0, nameItem) table.setItem(i, 1, colorItem) table.resizeColumnToContents(0) table.horizontalHeader().setStretchLastSection(True) layout = QGridLayout() layout.addWidget(table, 0, 0) self.setLayout(layout) self.setWindowTitle("Color Editor Factory") if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/combowidgetmapper.py0000755000076500000240000001241712613140041023172 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QStringListModel from PyQt5.QtGui import QStandardItem, QStandardItemModel from PyQt5.QtWidgets import (QApplication, QComboBox, QDataWidgetMapper, QGridLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QWidget) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) # Set up the model. self.setupModel() # Set up the widgets. nameLabel = QLabel("Na&me:") nameEdit = QLineEdit() addressLabel = QLabel("&Address:") addressEdit = QTextEdit() typeLabel = QLabel("&Type:") typeComboBox = QComboBox() self.nextButton = QPushButton("&Next") self.previousButton = QPushButton("&Previous") nameLabel.setBuddy(nameEdit) addressLabel.setBuddy(addressEdit) typeLabel.setBuddy(typeComboBox) typeComboBox.setModel(self.typeModel) # Set up the mapper. self.mapper = QDataWidgetMapper(self) self.mapper.setModel(self.model) self.mapper.addMapping(nameEdit, 0) self.mapper.addMapping(addressEdit, 1) self.mapper.addMapping(typeComboBox, 2, 'currentIndex') # Set up connections and layouts. self.previousButton.clicked.connect(self.mapper.toPrevious) self.nextButton.clicked.connect(self.mapper.toNext) self.mapper.currentIndexChanged.connect(self.updateButtons) layout = QGridLayout() layout.addWidget(nameLabel, 0, 0, 1, 1) layout.addWidget(nameEdit, 0, 1, 1, 1) layout.addWidget(self.previousButton, 0, 2, 1, 1) layout.addWidget(addressLabel, 1, 0, 1, 1) layout.addWidget(addressEdit, 1, 1, 2, 1) layout.addWidget(self.nextButton, 1, 2, 1, 1) layout.addWidget(typeLabel, 3, 0, 1, 1) layout.addWidget(typeComboBox, 3, 1, 1, 1) self.setLayout(layout) self.setWindowTitle("Delegate Widget Mapper") self.mapper.toFirst() def setupModel(self): items = ("Home", "Work", "Other") self.typeModel = QStringListModel(items, self) self.model = QStandardItemModel(5, 3, self) names = ("Alice", "Bob", "Carol", "Donald", "Emma") addresses = ("123 Main Street
    Market Town
    ", "PO Box 32
    Mail Handling Service" "
    Service City
    ", "The Lighthouse
    Remote Island
    ", "47338 Park Avenue
    Big City
    ", "Research Station
    Base Camp
    Big Mountain
    ") types = ("0", "1", "2", "0", "2") for row, name in enumerate(names): item = QStandardItem(name) self.model.setItem(row, 0, item) item = QStandardItem(addresses[row]) self.model.setItem(row, 1, item) item = QStandardItem(types[row]) self.model.setItem(row, 2, item) def updateButtons(self, row): self.previousButton.setEnabled(row > 0) self.nextButton.setEnabled(row < self.model.rowCount() - 1) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/customsortfiltermodel.py0000755000076500000240000002374212613140041024136 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QDate, QDateTime, QRegExp, QSortFilterProxyModel, Qt, QTime) from PyQt5.QtGui import QStandardItemModel from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateEdit, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QTreeView, QVBoxLayout, QWidget) class MySortFilterProxyModel(QSortFilterProxyModel): def __init__(self, parent=None): super(MySortFilterProxyModel, self).__init__(parent) self.minDate = QDate() self.maxDate = QDate() def setFilterMinimumDate(self, date): self.minDate = date self.invalidateFilter() def filterMinimumDate(self): return self.minDate def setFilterMaximumDate(self, date): self.maxDate = date self.invalidateFilter() def filterMaximumDate(self): return self.maxDate def filterAcceptsRow(self, sourceRow, sourceParent): index0 = self.sourceModel().index(sourceRow, 0, sourceParent) index1 = self.sourceModel().index(sourceRow, 1, sourceParent) index2 = self.sourceModel().index(sourceRow, 2, sourceParent) return ( (self.filterRegExp().indexIn(self.sourceModel().data(index0)) >= 0 or self.filterRegExp().indexIn(self.sourceModel().data(index1)) >= 0) and self.dateInRange(self.sourceModel().data(index2))) def lessThan(self, left, right): leftData = self.sourceModel().data(left) rightData = self.sourceModel().data(right) if not isinstance(leftData, QDate): emailPattern = QRegExp("([\\w\\.]*@[\\w\\.]*)") if left.column() == 1 and emailPattern.indexIn(leftData) != -1: leftData = emailPattern.cap(1) if right.column() == 1 and emailPattern.indexIn(rightData) != -1: rightData = emailPattern.cap(1) return leftData < rightData def dateInRange(self, date): if isinstance(date, QDateTime): date = date.date() return ( (not self.minDate.isValid() or date >= self.minDate) and (not self.maxDate.isValid() or date <= self.maxDate)) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.proxyModel = MySortFilterProxyModel(self) self.proxyModel.setDynamicSortFilter(True) self.sourceView = QTreeView() self.sourceView.setRootIsDecorated(False) self.sourceView.setAlternatingRowColors(True) sourceLayout = QHBoxLayout() sourceLayout.addWidget(self.sourceView) sourceGroupBox = QGroupBox("Original Model") sourceGroupBox.setLayout(sourceLayout) self.filterCaseSensitivityCheckBox = QCheckBox("Case sensitive filter") self.filterCaseSensitivityCheckBox.setChecked(True) self.filterPatternLineEdit = QLineEdit() self.filterPatternLineEdit.setText("Grace|Sports") filterPatternLabel = QLabel("&Filter pattern:") filterPatternLabel.setBuddy(self.filterPatternLineEdit) self.filterSyntaxComboBox = QComboBox() self.filterSyntaxComboBox.addItem("Regular expression", QRegExp.RegExp) self.filterSyntaxComboBox.addItem("Wildcard", QRegExp.Wildcard) self.filterSyntaxComboBox.addItem("Fixed string", QRegExp.FixedString) self.fromDateEdit = QDateEdit() self.fromDateEdit.setDate(QDate(2006, 12, 22)) self.fromDateEdit.setCalendarPopup(True) fromLabel = QLabel("F&rom:") fromLabel.setBuddy(self.fromDateEdit) self.toDateEdit = QDateEdit() self.toDateEdit.setDate(QDate(2007, 1, 5)) self.toDateEdit.setCalendarPopup(True) toLabel = QLabel("&To:") toLabel.setBuddy(self.toDateEdit) self.filterPatternLineEdit.textChanged.connect(self.textFilterChanged) self.filterSyntaxComboBox.currentIndexChanged.connect(self.textFilterChanged) self.filterCaseSensitivityCheckBox.toggled.connect(self.textFilterChanged) self.fromDateEdit.dateChanged.connect(self.dateFilterChanged) self.toDateEdit.dateChanged.connect(self.dateFilterChanged) self.proxyView = QTreeView() self.proxyView.setRootIsDecorated(False) self.proxyView.setAlternatingRowColors(True) self.proxyView.setModel(self.proxyModel) self.proxyView.setSortingEnabled(True) self.proxyView.sortByColumn(1, Qt.AscendingOrder) self.textFilterChanged() self.dateFilterChanged() proxyLayout = QGridLayout() proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3) proxyLayout.addWidget(filterPatternLabel, 1, 0) proxyLayout.addWidget(self.filterPatternLineEdit, 1, 1) proxyLayout.addWidget(self.filterSyntaxComboBox, 1, 2) proxyLayout.addWidget(self.filterCaseSensitivityCheckBox, 2, 0, 1, 3) proxyLayout.addWidget(fromLabel, 3, 0) proxyLayout.addWidget(self.fromDateEdit, 3, 1, 1, 2) proxyLayout.addWidget(toLabel, 4, 0) proxyLayout.addWidget(self.toDateEdit, 4, 1, 1, 2) proxyGroupBox = QGroupBox("Sorted/Filtered Model") proxyGroupBox.setLayout(proxyLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(sourceGroupBox) mainLayout.addWidget(proxyGroupBox) self.setLayout(mainLayout) self.setWindowTitle("Custom Sort/Filter Model") self.resize(500, 450) def setSourceModel(self, model): self.proxyModel.setSourceModel(model) self.sourceView.setModel(model) def textFilterChanged(self): syntax = QRegExp.PatternSyntax( self.filterSyntaxComboBox.itemData( self.filterSyntaxComboBox.currentIndex())) caseSensitivity = ( self.filterCaseSensitivityCheckBox.isChecked() and Qt.CaseSensitive or Qt.CaseInsensitive) regExp = QRegExp(self.filterPatternLineEdit.text(), caseSensitivity, syntax) self.proxyModel.setFilterRegExp(regExp) def dateFilterChanged(self): self.proxyModel.setFilterMinimumDate(self.fromDateEdit.date()) self.proxyModel.setFilterMaximumDate(self.toDateEdit.date()) def addMail(model, subject, sender, date): model.insertRow(0) model.setData(model.index(0, 0), subject) model.setData(model.index(0, 1), sender) model.setData(model.index(0, 2), date) def createMailModel(parent): model = QStandardItemModel(0, 3, parent) model.setHeaderData(0, Qt.Horizontal, "Subject") model.setHeaderData(1, Qt.Horizontal, "Sender") model.setHeaderData(2, Qt.Horizontal, "Date") addMail(model, "Happy New Year!", "Grace K. ", QDateTime(QDate(2006, 12, 31), QTime(17, 3))) addMail(model, "Radically new concept", "Grace K. ", QDateTime(QDate(2006, 12, 22), QTime(9, 44))) addMail(model, "Accounts", "pascale@nospam.com", QDateTime(QDate(2006, 12, 31), QTime(12, 50))) addMail(model, "Expenses", "Joe Bloggs ", QDateTime(QDate(2006, 12, 25), QTime(11, 39))) addMail(model, "Re: Expenses", "Andy ", QDateTime(QDate(2007, 1, 2), QTime(16, 5))) addMail(model, "Re: Accounts", "Joe Bloggs ", QDateTime(QDate(2007, 1, 3), QTime(14, 18))) addMail(model, "Re: Accounts", "Andy ", QDateTime(QDate(2007, 1, 3), QTime(14, 26))) addMail(model, "Sports", "Linda Smith ", QDateTime(QDate(2007, 1, 5), QTime(11, 33))) addMail(model, "AW: Sports", "Rolf Newschweinstein ", QDateTime(QDate(2007, 1, 5), QTime(12, 0))) addMail(model, "RE: Sports", "Petra Schmidt ", QDateTime(QDate(2007, 1, 5), QTime(12, 1))) return model if __name__ == "__main__": import sys app = QApplication(sys.argv) window = Window() window.setSourceModel(createMailModel(window)) window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/dirview.py0000755000076500000240000000457512613140041021141 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import QApplication, QFileSystemModel, QTreeView app = QApplication(sys.argv) model = QFileSystemModel() model.setRootPath('') tree = QTreeView() tree.setModel(model) tree.setAnimated(False) tree.setIndentation(20) tree.setSortingEnabled(True) tree.setWindowTitle("Dir View") tree.resize(640, 480) tree.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/0000755000076500000240000000000012613140041022552 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/default.txt0000644000076500000240000000367112613140041024746 0ustar philstaff00000000000000Getting 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 PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/editabletreemodel.py0000755000076500000240000003312312613140041026603 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QAbstractItemModel, QFile, QIODevice, QItemSelectionModel, QModelIndex, Qt) from PyQt5.QtWidgets import QApplication, QMainWindow import editabletreemodel_rc from ui_mainwindow import Ui_MainWindow class TreeItem(object): def __init__(self, data, parent=None): self.parentItem = parent self.itemData = data self.childItems = [] def child(self, row): return self.childItems[row] def childCount(self): return len(self.childItems) def childNumber(self): if self.parentItem != None: return self.parentItem.childItems.index(self) return 0 def columnCount(self): return len(self.itemData) def data(self, column): return self.itemData[column] def insertChildren(self, position, count, columns): if position < 0 or position > len(self.childItems): return False for row in range(count): data = [None for v in range(columns)] item = TreeItem(data, self) self.childItems.insert(position, item) return True def insertColumns(self, position, columns): if position < 0 or position > len(self.itemData): return False for column in range(columns): self.itemData.insert(position, None) for child in self.childItems: child.insertColumns(position, columns) return True def parent(self): return self.parentItem def removeChildren(self, position, count): if position < 0 or position + count > len(self.childItems): return False for row in range(count): self.childItems.pop(position) return True def removeColumns(self, position, columns): if position < 0 or position + columns > len(self.itemData): return False for column in range(columns): self.itemData.pop(position) for child in self.childItems: child.removeColumns(position, columns) return True def setData(self, column, value): if column < 0 or column >= len(self.itemData): return False self.itemData[column] = value return True class TreeModel(QAbstractItemModel): def __init__(self, headers, data, parent=None): super(TreeModel, self).__init__(parent) rootData = [header for header in headers] self.rootItem = TreeItem(rootData) self.setupModelData(data.split("\n"), self.rootItem) def columnCount(self, parent=QModelIndex()): return self.rootItem.columnCount() def data(self, index, role): if not index.isValid(): return None if role != Qt.DisplayRole and role != Qt.EditRole: return None item = self.getItem(index) return item.data(index.column()) def flags(self, index): if not index.isValid(): return 0 return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable def getItem(self, index): if index.isValid(): item = index.internalPointer() if item: return item return self.rootItem def headerData(self, section, orientation, role=Qt.DisplayRole): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.rootItem.data(section) return None def index(self, row, column, parent=QModelIndex()): if parent.isValid() and parent.column() != 0: return QModelIndex() parentItem = self.getItem(parent) childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QModelIndex() def insertColumns(self, position, columns, parent=QModelIndex()): self.beginInsertColumns(parent, position, position + columns - 1) success = self.rootItem.insertColumns(position, columns) self.endInsertColumns() return success def insertRows(self, position, rows, parent=QModelIndex()): parentItem = self.getItem(parent) self.beginInsertRows(parent, position, position + rows - 1) success = parentItem.insertChildren(position, rows, self.rootItem.columnCount()) self.endInsertRows() return success def parent(self, index): if not index.isValid(): return QModelIndex() childItem = self.getItem(index) parentItem = childItem.parent() if parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.childNumber(), 0, parentItem) def removeColumns(self, position, columns, parent=QModelIndex()): self.beginRemoveColumns(parent, position, position + columns - 1) success = self.rootItem.removeColumns(position, columns) self.endRemoveColumns() if self.rootItem.columnCount() == 0: self.removeRows(0, self.rowCount()) return success def removeRows(self, position, rows, parent=QModelIndex()): parentItem = self.getItem(parent) self.beginRemoveRows(parent, position, position + rows - 1) success = parentItem.removeChildren(position, rows) self.endRemoveRows() return success def rowCount(self, parent=QModelIndex()): parentItem = self.getItem(parent) return parentItem.childCount() def setData(self, index, value, role=Qt.EditRole): if role != Qt.EditRole: return False item = self.getItem(index) result = item.setData(index.column(), value) if result: self.dataChanged.emit(index, index) return result def setHeaderData(self, section, orientation, value, role=Qt.EditRole): if role != Qt.EditRole or orientation != Qt.Horizontal: return False result = self.rootItem.setData(section, value) if result: self.headerDataChanged.emit(orientation, section, section) return result def setupModelData(self, lines, parent): parents = [parent] indentations = [0] number = 0 while number < len(lines): position = 0 while position < len(lines[number]): if lines[number][position] != " ": break position += 1 lineData = lines[number][position:].trimmed() if lineData: # Read the column data from the rest of the line. columnData = [s for s in lineData.split('\t') if s] if position > indentations[-1]: # The last child of the current parent is now the new # parent unless the current parent has no children. if parents[-1].childCount() > 0: parents.append(parents[-1].child(parents[-1].childCount() - 1)) indentations.append(position) else: while position < indentations[-1] and len(parents) > 0: parents.pop() indentations.pop() # Append a new item to the current parent's list of children. parent = parents[-1] parent.insertChildren(parent.childCount(), 1, self.rootItem.columnCount()) for column in range(len(columnData)): parent.child(parent.childCount() -1).setData(column, columnData[column]) number += 1 class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) headers = ("Title", "Description") file = QFile(':/default.txt') file.open(QIODevice.ReadOnly) model = TreeModel(headers, file.readAll()) file.close() self.view.setModel(model) for column in range(model.columnCount()): self.view.resizeColumnToContents(column) self.exitAction.triggered.connect(QApplication.instance().quit) self.view.selectionModel().selectionChanged.connect(self.updateActions) self.actionsMenu.aboutToShow.connect(self.updateActions) self.insertRowAction.triggered.connect(self.insertRow) self.insertColumnAction.triggered.connect(self.insertColumn) self.removeRowAction.triggered.connect(self.removeRow) self.removeColumnAction.triggered.connect(self.removeColumn) self.insertChildAction.triggered.connect(self.insertChild) self.updateActions() def insertChild(self): index = self.view.selectionModel().currentIndex() model = 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 = model.index(0, column, index) model.setData(child, "[No data]", Qt.EditRole) if model.headerData(column, Qt.Horizontal) is None: model.setHeaderData(column, Qt.Horizontal, "[No header]", Qt.EditRole) self.view.selectionModel().setCurrentIndex(model.index(0, 0, index), QItemSelectionModel.ClearAndSelect) self.updateActions() def insertColumn(self): model = self.view.model() column = self.view.selectionModel().currentIndex().column() changed = model.insertColumn(column + 1) if changed: model.setHeaderData(column + 1, Qt.Horizontal, "[No header]", Qt.EditRole) self.updateActions() return changed def insertRow(self): index = self.view.selectionModel().currentIndex() model = self.view.model() if not model.insertRow(index.row()+1, index.parent()): return self.updateActions() for column in range(model.columnCount(index.parent())): child = model.index(index.row()+1, column, index.parent()) model.setData(child, "[No data]", Qt.EditRole) def removeColumn(self): model = self.view.model() column = self.view.selectionModel().currentIndex().column() changed = model.removeColumn(column) if changed: self.updateActions() return changed def removeRow(self): index = self.view.selectionModel().currentIndex() model = self.view.model() if (model.removeRow(index.row(), index.parent())): self.updateActions() def updateActions(self): hasSelection = not self.view.selectionModel().selection().isEmpty() self.removeRowAction.setEnabled(hasSelection) self.removeColumnAction.setEnabled(hasSelection) hasCurrent = self.view.selectionModel().currentIndex().isValid() self.insertRowAction.setEnabled(hasCurrent) self.insertColumnAction.setEnabled(hasCurrent) if hasCurrent: self.view.closePersistentEditor(self.view.selectionModel().currentIndex()) row = self.view.selectionModel().currentIndex().row() column = self.view.selectionModel().currentIndex().column() if self.view.selectionModel().currentIndex().parent().isValid(): self.statusBar().showMessage("Position: (%d,%d)" % (row, column)) else: self.statusBar().showMessage("Position: (%d,%d) in top level" % (row, column)) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/editabletreemodel.qrc0000644000076500000240000000013312613140041026730 0ustar philstaff00000000000000 default.txt PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/editabletreemodel_rc.py0000644000076500000240000002141612613140041027266 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 13:00:44 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x07\xb9\ \x47\ \x65\x74\x74\x69\x6e\x67\x20\x53\x74\x61\x72\x74\x65\x64\x09\x09\ \x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x66\x61\x6d\x69\x6c\x69\x61\ \x72\x69\x7a\x65\x20\x79\x6f\x75\x72\x73\x65\x6c\x66\x20\x77\x69\ \x74\x68\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\ \x20\x20\x20\x4c\x61\x75\x6e\x63\x68\x69\x6e\x67\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x09\x09\x09\x52\x75\x6e\x6e\x69\x6e\x67\x20\ \x74\x68\x65\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x20\ \x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\ \x54\x68\x65\x20\x55\x73\x65\x72\x20\x49\x6e\x74\x65\x72\x66\x61\ \x63\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x69\x6e\x74\x65\ \x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x51\x74\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x0a\x0a\x44\x65\x73\x69\x67\x6e\x69\x6e\x67\ \x20\x61\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x09\x09\x09\x43\ \x72\x65\x61\x74\x69\x6e\x67\x20\x61\x20\x47\x55\x49\x20\x66\x6f\ \x72\x20\x79\x6f\x75\x72\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\ \x6f\x6e\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\x20\ \x61\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x09\x48\x6f\x77\x20\x74\ \x6f\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x64\x69\x61\x6c\x6f\ \x67\x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x73\x69\x6e\x67\x20\ \x74\x68\x65\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x50\x75\x74\x74\ \x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\x74\x6f\ \x20\x74\x68\x65\x20\x64\x69\x61\x6c\x6f\x67\x20\x65\x78\x61\x6d\ \x70\x6c\x65\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\ \x20\x61\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\ \x20\x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x53\x69\x67\x6e\ \x61\x6c\x20\x61\x6e\x64\x20\x53\x6c\x6f\x74\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x4d\x61\x6b\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x20\x63\x6f\x6d\x6d\x75\x6e\x69\x63\x61\ \x74\x65\x20\x77\x69\x74\x68\x20\x65\x61\x63\x68\x20\x6f\x74\x68\ \x65\x72\x0a\x0a\x55\x73\x69\x6e\x67\x20\x61\x20\x43\x6f\x6d\x70\ \x6f\x6e\x65\x6e\x74\x20\x69\x6e\x20\x59\x6f\x75\x72\x20\x41\x70\ \x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x09\x47\x65\x6e\x65\x72\x61\ \x74\x69\x6e\x67\x20\x63\x6f\x64\x65\x20\x66\x72\x6f\x6d\x20\x66\ \x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x44\x69\x72\ \x65\x63\x74\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x09\x09\x55\ \x73\x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x20\x77\x69\x74\x68\ \x6f\x75\x74\x20\x61\x6e\x79\x20\x61\x64\x6a\x75\x73\x74\x6d\x65\ \x6e\x74\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x53\x69\x6e\x67\ \x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\x61\x6e\x63\x65\x20\x41\ \x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\x62\x63\x6c\x61\x73\x73\ \x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x27\x73\x20\x62\x61\x73\ \x65\x20\x63\x6c\x61\x73\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\ \x4d\x75\x6c\x74\x69\x70\x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\ \x61\x6e\x63\x65\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\ \x62\x63\x6c\x61\x73\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x66\x6f\ \x72\x6d\x20\x69\x74\x73\x65\x6c\x66\x0a\x20\x20\x20\x20\x41\x75\ \x74\x6f\x6d\x61\x74\x69\x63\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x73\x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x73\x20\x75\x73\x69\x6e\x67\x20\x61\x20\ \x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\x6c\x6f\x67\x20\x57\ \x69\x74\x68\x6f\x75\x74\x20\x41\x75\x74\x6f\x2d\x43\x6f\x6e\x6e\ \x65\x63\x74\x09\x48\x6f\x77\x20\x74\x6f\x20\x63\x6f\x6e\x6e\x65\ \x63\x74\x20\x77\x69\x64\x67\x65\x74\x73\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x61\x20\x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\ \x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\ \x6c\x6f\x67\x20\x57\x69\x74\x68\x20\x41\x75\x74\x6f\x2d\x43\x6f\ \x6e\x6e\x65\x63\x74\x09\x55\x73\x69\x6e\x67\x20\x61\x75\x74\x6f\ \x6d\x61\x74\x69\x63\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\ \x73\x0a\x0a\x46\x6f\x72\x6d\x20\x45\x64\x69\x74\x69\x6e\x67\x20\ \x4d\x6f\x64\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x65\x64\ \x69\x74\x20\x61\x20\x66\x6f\x72\x6d\x20\x69\x6e\x20\x51\x74\x20\ \x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\x20\x20\x20\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\x09\x4c\x6f\ \x61\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x73\x61\x76\x69\x6e\x67\ \x20\x66\x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x45\x64\x69\x74\x69\ \x6e\x67\x20\x61\x20\x46\x6f\x72\x6d\x09\x09\x09\x42\x61\x73\x69\ \x63\x20\x65\x64\x69\x74\x69\x6e\x67\x20\x74\x65\x63\x68\x6e\x69\ \x71\x75\x65\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x50\x72\x6f\ \x70\x65\x72\x74\x79\x20\x45\x64\x69\x74\x6f\x72\x09\x09\x09\x43\ \x68\x61\x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x20\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x0a\x20\x20\x20\x20\x54\x68\ \x65\x20\x4f\x62\x6a\x65\x63\x74\x20\x49\x6e\x73\x70\x65\x63\x74\ \x6f\x72\x09\x09\x45\x78\x61\x6d\x69\x6e\x69\x6e\x67\x20\x74\x68\ \x65\x20\x68\x69\x65\x72\x61\x72\x63\x68\x79\x20\x6f\x66\x20\x6f\ \x62\x6a\x65\x63\x74\x73\x20\x6f\x6e\x20\x61\x20\x66\x6f\x72\x6d\ \x0a\x20\x20\x20\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x09\x09\x09\ \x4f\x62\x6a\x65\x63\x74\x73\x20\x74\x68\x61\x74\x20\x61\x72\x72\ \x61\x6e\x67\x65\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\x20\ \x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\ \x70\x70\x6c\x79\x69\x6e\x67\x20\x61\x6e\x64\x20\x42\x72\x65\x61\ \x6b\x69\x6e\x67\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x6c\x61\x79\x6f\x75\x74\x73\x20\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x48\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x20\x61\x6e\x64\ \x20\x56\x65\x72\x74\x69\x63\x61\x6c\x20\x4c\x61\x79\x6f\x75\x74\ \x73\x09\x53\x74\x61\x6e\x64\x61\x72\x64\x20\x72\x6f\x77\x20\x61\ \x6e\x64\x20\x63\x6f\x6c\x75\x6d\x6e\x20\x6c\x61\x79\x6f\x75\x74\ \x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x47\x72\ \x69\x64\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x61\x20\x6d\x61\x74\x72\x69\x78\x0a\x20\x20\x20\x20\x50\x72\ \x65\x76\x69\x65\x77\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\ \x09\x43\x68\x65\x63\x6b\x69\x6e\x67\x20\x74\x68\x61\x74\x20\x74\ \x68\x65\x20\x64\x65\x73\x69\x67\x6e\x20\x77\x6f\x72\x6b\x73\x0a\ \x0a\x55\x73\x69\x6e\x67\x20\x43\x6f\x6e\x74\x61\x69\x6e\x65\x72\ \x73\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x67\x72\x6f\x75\x70\ \x20\x77\x69\x64\x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\ \x72\x0a\x20\x20\x20\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x46\x65\ \x61\x74\x75\x72\x65\x73\x09\x09\x09\x43\x6f\x6d\x6d\x6f\x6e\x20\ \x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x20\x66\x65\x61\x74\x75\x72\ \x65\x73\x0a\x20\x20\x20\x20\x46\x72\x61\x6d\x65\x73\x09\x09\x09\ \x09\x51\x46\x72\x61\x6d\x65\x0a\x20\x20\x20\x20\x47\x72\x6f\x75\ \x70\x20\x42\x6f\x78\x65\x73\x09\x09\x09\x09\x51\x47\x72\x6f\x75\ \x70\x42\x6f\x78\x0a\x20\x20\x20\x20\x53\x74\x61\x63\x6b\x65\x64\ \x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x53\x74\x61\x63\ \x6b\x65\x64\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x61\ \x62\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x09\x51\x54\x61\ \x62\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x6f\x6f\x6c\ \x62\x6f\x78\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x54\ \x6f\x6f\x6c\x42\x6f\x78\x0a\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x4d\x6f\x64\x65\x09\ \x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\x77\x69\x64\ \x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\x72\x20\x77\x69\ \x74\x68\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x61\x6e\x64\x20\x73\ \x6c\x6f\x74\x73\x0a\x20\x20\x20\x20\x43\x6f\x6e\x6e\x65\x63\x74\ \x69\x6e\x67\x20\x4f\x62\x6a\x65\x63\x74\x73\x09\x09\x09\x4d\x61\ \x6b\x69\x6e\x67\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\ \x20\x69\x6e\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\ \x20\x20\x20\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x09\x43\x68\x61\x6e\x67\x69\ \x6e\x67\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x63\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x0a\ " qt_resource_name = b"\ \x00\x0b\ \x0c\xe2\x22\xf4\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x74\x00\x78\x00\x74\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/mainwindow.ui0000644000076500000240000000631212613140041025267 0ustar philstaff00000000000000 MainWindow 0 0 573 468 Editable Tree Model 0 0 true QAbstractItemView::SelectItems QAbstractItemView::ScrollPerPixel false true 0 0 573 31 &File &Actions E&xit Ctrl+Q Insert Row Ctrl+I, R Remove Row Ctrl+R, R Insert Column Ctrl+I, C Remove Column Ctrl+R, C Insert Child Ctrl+N PyQt-gpl-5.5.1/examples/itemviews/editabletreemodel/ui_mainwindow.py0000644000076500000240000001062412613140041026000 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created: Fri Jul 26 06:51:23 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(573, 468) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.vboxlayout = QtWidgets.QVBoxLayout(self.centralwidget) self.vboxlayout.setContentsMargins(0, 0, 0, 0) self.vboxlayout.setSpacing(0) self.vboxlayout.setObjectName("vboxlayout") self.view = QtWidgets.QTreeView(self.centralwidget) self.view.setAlternatingRowColors(True) self.view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems) self.view.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.view.setAnimated(False) self.view.setAllColumnsShowFocus(True) self.view.setObjectName("view") self.vboxlayout.addWidget(self.view) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 573, 31)) self.menubar.setObjectName("menubar") self.fileMenu = QtWidgets.QMenu(self.menubar) self.fileMenu.setObjectName("fileMenu") self.actionsMenu = QtWidgets.QMenu(self.menubar) self.actionsMenu.setObjectName("actionsMenu") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.exitAction = QtWidgets.QAction(MainWindow) self.exitAction.setObjectName("exitAction") self.insertRowAction = QtWidgets.QAction(MainWindow) self.insertRowAction.setObjectName("insertRowAction") self.removeRowAction = QtWidgets.QAction(MainWindow) self.removeRowAction.setObjectName("removeRowAction") self.insertColumnAction = QtWidgets.QAction(MainWindow) self.insertColumnAction.setObjectName("insertColumnAction") self.removeColumnAction = QtWidgets.QAction(MainWindow) self.removeColumnAction.setObjectName("removeColumnAction") self.insertChildAction = QtWidgets.QAction(MainWindow) self.insertChildAction.setObjectName("insertChildAction") self.fileMenu.addAction(self.exitAction) self.actionsMenu.addAction(self.insertRowAction) self.actionsMenu.addAction(self.insertColumnAction) self.actionsMenu.addSeparator() self.actionsMenu.addAction(self.removeRowAction) self.actionsMenu.addAction(self.removeColumnAction) self.actionsMenu.addSeparator() self.actionsMenu.addAction(self.insertChildAction) self.menubar.addAction(self.fileMenu.menuAction()) self.menubar.addAction(self.actionsMenu.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Editable Tree Model")) self.fileMenu.setTitle(_translate("MainWindow", "&File")) self.actionsMenu.setTitle(_translate("MainWindow", "&Actions")) self.exitAction.setText(_translate("MainWindow", "E&xit")) self.exitAction.setShortcut(_translate("MainWindow", "Ctrl+Q")) self.insertRowAction.setText(_translate("MainWindow", "Insert Row")) self.insertRowAction.setShortcut(_translate("MainWindow", "Ctrl+I, R")) self.removeRowAction.setText(_translate("MainWindow", "Remove Row")) self.removeRowAction.setShortcut(_translate("MainWindow", "Ctrl+R, R")) self.insertColumnAction.setText(_translate("MainWindow", "Insert Column")) self.insertColumnAction.setShortcut(_translate("MainWindow", "Ctrl+I, C")) self.removeColumnAction.setText(_translate("MainWindow", "Remove Column")) self.removeColumnAction.setShortcut(_translate("MainWindow", "Ctrl+R, C")) self.insertChildAction.setText(_translate("MainWindow", "Insert Child")) self.insertChildAction.setShortcut(_translate("MainWindow", "Ctrl+N")) PyQt-gpl-5.5.1/examples/itemviews/fetchmore.py0000755000076500000240000001163212613140041021434 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Darryl Wallace . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtSignal, QAbstractListModel, QDir, QLibraryInfo, QModelIndex, Qt) from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QLineEdit, QListView, QSizePolicy, QTextBrowser, QWidget) class FileListModel(QAbstractListModel): numberPopulated = pyqtSignal(int) def __init__(self, parent=None): super(FileListModel, self).__init__(parent) self.fileCount = 0 self.fileList = [] def rowCount(self, parent=QModelIndex()): return self.fileCount def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return None if index.row() >= len(self.fileList) or index.row() < 0: return None if role == Qt.DisplayRole: return self.fileList[index.row()] if role == Qt.BackgroundRole: batch = (index.row() // 100) % 2 if batch == 0: return QApplication.palette().base() return QApplication.palette().alternateBase() return None def canFetchMore(self, index): return self.fileCount < len(self.fileList) def fetchMore(self, index): remainder = len(self.fileList) - self.fileCount itemsToFetch = min(100, remainder) self.beginInsertRows(QModelIndex(), self.fileCount, self.fileCount + itemsToFetch) self.fileCount += itemsToFetch self.endInsertRows() self.numberPopulated.emit(itemsToFetch) def setDirPath(self, path): dir = QDir(path) self.beginResetModel() self.fileList = dir.entryList() self.fileCount = 0 self.endResetModel() class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) model = FileListModel(self) model.setDirPath(QLibraryInfo.location(QLibraryInfo.PrefixPath)) label = QLabel("Directory") lineEdit = QLineEdit() label.setBuddy(lineEdit) view = QListView() view.setModel(model) self.logViewer = QTextBrowser() self.logViewer.setSizePolicy(QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)) lineEdit.textChanged.connect(model.setDirPath) lineEdit.textChanged.connect(self.logViewer.clear) model.numberPopulated.connect(self.updateLog) layout = QGridLayout() layout.addWidget(label, 0, 0) layout.addWidget(lineEdit, 0, 1) layout.addWidget(view, 1, 0, 1, 2) layout.addWidget(self.logViewer, 2, 0, 1, 2) self.setLayout(layout) self.setWindowTitle("Fetch More Example") def updateLog(self, number): self.logViewer.append("%d items added." % number) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/pixelator/0000755000076500000240000000000012613140041021107 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/pixelator/images/0000755000076500000240000000000012613140041022354 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/pixelator/images/qt.png0000644000076500000240000000122012613140041023501 0ustar philstaff00000000000000‰PNG  IHDR&&V¶r pHYs  ÒÝ~ütIMEÔ 8¸¯ÓRbKGDÿ‡Ì¿!IDAT8Ëcøp–ðáì"ÀYTeŸ×8«JJj¸—mý†SÙùXN8àϼ…UÙó(FÀ’ýSÙ w ]Ùdf,€}ª²Ép6-{5y-²²­P³˜C·}øiÔ¡œgÊ^@Ýeqá¹#Z1•¯peÑ‘ŒßÈaõ%"Z Sv‘ ¢ ¡äm>Ðîß¾kŸA•ÅClü…PeÄàT÷Q,QQö™ ìúKȪÀ궃•Éþ+[棪‚¨3³Î‚•ƒÙ[ÐT10Lþÿ˜1¬ÌÄdýŠ®*ãßÿÿ·Á¬d°2MS›ªÿÿÀÎv+“1mÐT¥ýóå@ls°2iÓ Uƒûw°€ˆm V¦b*£ª‚ªûÍbzƒ•yƒƒíª*ˆºK`VXY˜½üÿÿ|ÔÄT×fÌ+Û f;ÿÿÿÍ ÌJ÷ƒ©û¬¦o€•ýsöCÕeüû S§&µ QŸ æ©}«…\ô@•Ýcs½ÉíÛdpx!«úK–÷ðèGR×O½Ÿ!" ÿÁÔ}S‡ªâûŒÈ2§`ÙÝ`Òõ¿ÀP½Ð¢†~° ¸Ž.Ì!-ÁŠ~ð켋'ˆ@*ΫcÊCTè,rQó­Í@¡ ßü ªP ®õòEÚ½ÁáR…^ þ;71ÅÃÂÆ;kÖMhøÅŸÅRZâ.T‰+¢hmè© .ÊÃIEND®B`‚PyQt-gpl-5.5.1/examples/itemviews/pixelator/pixelator.py0000755000076500000240000002406112613140041023476 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QAbstractTableModel, QDir, QModelIndex, QRect, QRectF, QSize, Qt) from PyQt5.QtGui import QBrush, qGray, QImage, QPainter from PyQt5.QtPrintSupport import QPrinter from PyQt5.QtWidgets import (QAbstractItemDelegate, QApplication, QDialog, QFileDialog, QHBoxLayout, QLabel, QMainWindow, QMessageBox, QMenu, QProgressDialog, QSpinBox, QStyle, QStyleOptionViewItem, QTableView, QVBoxLayout, QWidget) import pixelator_rc ItemSize = 256 class PixelDelegate(QAbstractItemDelegate): def __init__(self, parent=None): super(PixelDelegate, self).__init__(parent) self.pixelSize = 12 def paint(self, painter, option, index): if option.state & QStyle.State_Selected: painter.fillRect(option.rect, option.palette.highlight()) size = min(option.rect.width(), option.rect.height()) brightness = index.model().data(index, Qt.DisplayRole) radius = (size/2.0) - (brightness/255.0 * size/2.0) if radius == 0.0: return painter.save() painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.NoPen) if option.state & QStyle.State_Selected: painter.setBrush(option.palette.highlightedText()) else: painter.setBrush(QBrush(Qt.black)) painter.drawEllipse(QRectF( option.rect.x() + option.rect.width()/2 - radius, option.rect.y() + option.rect.height()/2 - radius, 2*radius, 2*radius)) painter.restore() def sizeHint(self, option, index): return QSize(self.pixelSize, self.pixelSize) def setPixelSize(self, size): self.pixelSize = size class ImageModel(QAbstractTableModel): def __init__(self, parent=None): super(ImageModel, self).__init__(parent) self.modelImage = QImage() def setImage(self, image): self.beginResetModel() self.modelImage = QImage(image) self.endResetModel() def rowCount(self, parent): return self.modelImage.height() def columnCount(self, parent): return self.modelImage.width() def data(self, index, role): if not index.isValid() or role != Qt.DisplayRole: return None return qGray(self.modelImage.pixel(index.column(), index.row())) def headerData(self, section, orientation, role): if role == Qt.SizeHintRole: return QSize(1, 1) return None class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.currentPath = QDir.homePath() self.model = ImageModel(self) centralWidget = QWidget() self.view = QTableView() self.view.setShowGrid(False) self.view.horizontalHeader().hide() self.view.verticalHeader().hide() self.view.horizontalHeader().setMinimumSectionSize(1) self.view.verticalHeader().setMinimumSectionSize(1) self.view.setModel(self.model) delegate = PixelDelegate(self) self.view.setItemDelegate(delegate) pixelSizeLabel = QLabel("Pixel size:") pixelSizeSpinBox = QSpinBox() pixelSizeSpinBox.setMinimum(4) pixelSizeSpinBox.setMaximum(32) pixelSizeSpinBox.setValue(12) fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") self.printAction = fileMenu.addAction("&Print...") self.printAction.setEnabled(False) self.printAction.setShortcut("Ctrl+P") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") helpMenu = QMenu("&Help", self) aboutAction = helpMenu.addAction("&About") self.menuBar().addMenu(fileMenu) self.menuBar().addSeparator() self.menuBar().addMenu(helpMenu) openAction.triggered.connect(self.chooseImage) self.printAction.triggered.connect(self.printImage) quitAction.triggered.connect(QApplication.instance().quit) aboutAction.triggered.connect(self.showAboutBox) pixelSizeSpinBox.valueChanged.connect(delegate.setPixelSize) pixelSizeSpinBox.valueChanged.connect(self.updateView) controlsLayout = QHBoxLayout() controlsLayout.addWidget(pixelSizeLabel) controlsLayout.addWidget(pixelSizeSpinBox) controlsLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.view) mainLayout.addLayout(controlsLayout) centralWidget.setLayout(mainLayout) self.setCentralWidget(centralWidget) self.setWindowTitle("Pixelator") self.resize(640, 480) def chooseImage(self): fileName, _ = QFileDialog.getOpenFileName(self, "Choose an Image", self.currentPath, '*') if fileName: self.openImage(fileName) def openImage(self, fileName): image = QImage() if image.load(fileName): self.model.setImage(image) if not fileName.startswith(':/'): self.currentPath = fileName self.setWindowTitle("%s - Pixelator" % self.currentPath) self.printAction.setEnabled(True) self.updateView() def printImage(self): if self.model.rowCount(QModelIndex()) * self.model.columnCount(QModelIndex()) > 90000: answer = QMessageBox.question(self, "Large Image Size", "The printed image may be very large. Are you sure that " "you want to print it?", QMessageBox.Yes | QMessageBox.No) if answer == QMessageBox.No: return printer = QPrinter(QPrinter.HighResolution) dlg = QPrintDialog(printer, self) dlg.setWindowTitle("Print Image") if dlg.exec_() != QDialog.Accepted: return painter = QPainter() painter.begin(printer) rows = self.model.rowCount(QModelIndex()) columns = self.model.columnCount(QModelIndex()) sourceWidth = (columns+1) * ItemSize sourceHeight = (rows+1) * ItemSize painter.save() xscale = printer.pageRect().width() / float(sourceWidth) yscale = printer.pageRect().height() / float(sourceHeight) scale = min(xscale, yscale) painter.translate(printer.pageRect().x()+printer.pageRect().width()/2, printer.pageRect().y()+printer.pageRect().height()/2) painter.scale(scale, scale) painter.translate(-sourceWidth/2, -sourceHeight/2) option = QStyleOptionViewItem() parent = QModelIndex() progress = QProgressDialog("Printing...", "Cancel", 0, rows, self) y = ItemSize / 2.0 for row in range(rows): progress.setValue(row) QApplication.processEvents() if progress.wasCanceled(): break x = ItemSize / 2.0 for column in range(columns): option.rect = QRect(x, y, ItemSize, ItemSize) self.view.itemDelegate.paint(painter, option, self.model.index(row, column, parent)) x = x + ItemSize y = y + ItemSize progress.setValue(rows) painter.restore() painter.end() if progress.wasCanceled(): QMessageBox.information(self, "Printing canceled", "The printing process was canceled.", QMessageBox.Cancel) def showAboutBox(self): QMessageBox.about(self, "About the Pixelator example", "This example demonstrates how a standard view and a custom\n" "delegate can be used to produce a specialized " "representation\nof data in a simple custom model.") def updateView(self): self.view.resizeColumnsToContents() self.view.resizeRowsToContents() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() window.openImage(':/images/qt.png') sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/pixelator/pixelator.qrc0000644000076500000240000000014012613140041023620 0ustar philstaff00000000000000 images/qt.png PyQt-gpl-5.5.1/examples/itemviews/pixelator/pixelator_rc.py0000644000076500000240000000704612613140041024163 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 15:31:20 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x02\x90\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x26\x00\x00\x00\x26\x08\x00\x00\x00\x00\x8d\x56\xb6\x72\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd4\x08\ \x06\x0a\x1f\x38\xb8\xaf\xd3\x52\x00\x00\x00\x02\x62\x4b\x47\x44\ \x00\xff\x87\x8f\xcc\xbf\x00\x00\x02\x21\x49\x44\x41\x54\x38\xcb\ \x63\xf8\x70\x96\x08\xf0\x81\xe1\xec\x7f\x22\xc0\x59\x54\x65\x9f\ \xd7\x16\x38\xab\x4a\x4a\x6a\xb8\x97\x6d\xfd\x86\x53\xd9\xf9\x58\ \x4e\x06\x38\xe0\xcf\xbc\x85\x55\xd9\xf3\x28\x46\x06\x14\xc0\x92\ \xfd\x01\x53\xd9\x16\x11\x06\x0c\x20\x77\x0c\x5d\xd9\x64\x66\x06\ \x2c\x80\x7d\x15\xaa\xb2\xc9\x70\x19\x36\x2d\x07\x7b\x35\x16\x18\ \x8f\x79\x2d\xb2\xb2\xad\x50\xb3\x98\x43\xb7\x81\x7d\xf8\x69\x8d\ \x07\xd4\xa1\x9c\x67\x10\xca\x5e\x40\xdd\x65\x71\x19\xe1\xb9\x23\ \x5a\x10\x31\x95\xaf\x70\x65\xd1\x10\x91\x8c\xdf\xc8\x61\xf5\x25\ \x00\x22\x5a\x09\x53\x76\x91\x09\xa2\x0a\xa1\xe4\x6d\x3e\xd0\xee\ \xdf\xbe\x10\x6b\x9f\x41\x95\xc5\x43\x6c\xfc\x85\x50\x65\xc4\xe0\ \x06\x54\xf7\x51\x19\x2c\x51\x03\x51\xf6\x99\x0b\xec\xfa\x4b\xc8\ \xaa\x18\xc0\xea\xb6\x83\x95\xc9\xfe\x03\x2b\x5b\x0f\xe6\x04\xa3\ \xaa\x82\xa8\x33\x05\xb3\xce\x82\x95\x15\x83\xd9\x5b\xd0\x54\x31\ \x30\x4c\xfe\xff\x7f\x1a\x98\x31\x01\xac\xcc\x15\xc4\x64\xfd\x8a\ \xae\x2a\xe3\xdf\xff\xff\xb7\xc1\xac\x64\xb0\x32\x4d\x10\x53\x1d\ \x9b\xaa\xff\xff\xc0\xce\x76\x07\x2b\x93\x04\x31\x6d\xd0\x54\xa5\ \xfd\x03\xf3\xe5\x40\x6c\x73\xb0\x32\x69\x10\xd3\x0a\x55\x15\x83\ \xfb\x77\xb0\x80\x14\x88\x6d\x0d\x56\xa6\x03\x62\x2a\xa3\xaa\x82\ \xaa\xfb\xcd\x0e\x62\x7a\x83\x95\x79\x83\x83\xed\x1d\xaa\x2a\x88\ \xba\x4b\x60\x56\x16\x58\x59\x15\x98\xbd\xfc\xff\xff\x7c\xd4\xc4\ \x06\x54\xd7\x0e\x66\xcc\x00\x2b\xdb\x09\x66\x3b\xff\xff\xff\xcd\ \x0d\xcc\x4a\xf7\x83\xa9\xfb\xac\x06\xa6\x6f\x80\x95\xfd\x14\x04\ \x73\xf6\x43\xd5\x65\xfc\xfb\x09\x53\xa7\x02\x26\xb5\xa0\x51\x9f\ \x0b\xe6\xa9\x7d\x02\xab\x03\x85\x17\x5c\x1d\x18\xf4\x40\x95\xdd\ \x63\x05\x73\xbd\x81\xc9\xed\xdb\x64\x70\x78\x21\xab\x13\xfa\x00\ \x4b\x96\x05\x10\x01\x8f\xf7\xf0\xe8\x47\x52\xd7\x07\x4f\xbd\x9f\ \x14\x21\x22\x0a\x1b\xff\xc1\xd4\x7d\x53\x87\xaa\xe2\xfb\x8c\xc8\ \x32\xa7\x60\xd9\xdd\x60\xd2\xf5\xbf\xc0\x50\xbd\xd0\xa2\x86\x12\ \x7e\xb0\x0c\xb8\x8e\x15\x2e\xcc\x21\x2d\xc1\x8a\x1e\x7e\xf0\xec\ \xbc\x81\x8b\x01\x27\x88\x40\x2a\x1c\xce\xab\x63\xca\x43\x02\x54\ \xe8\x2c\x72\x51\xf3\xad\x06\xcd\x40\xa1\x09\xdf\xfc\x20\xaa\x50\ \x0b\xae\x17\xf5\xf2\x08\x45\xda\xbd\x1f\xc1\xe1\x02\x52\x85\x5e\ \x0c\xfe\x3b\x37\x31\xc5\xc3\xc2\xc6\x3b\x6b\xd6\x4d\x68\xf8\xc5\ \x9f\xc5\x52\x5a\xe2\x2e\x54\x89\x2b\xa2\x01\x68\x6d\xe8\xa9\x09\ \x2e\xca\xc3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x06\ \x07\x87\x57\x47\ \x00\x71\ \x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/itemviews/puzzle/0000755000076500000240000000000012613140041020431 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/puzzle/example.jpg0000644000076500000240000012323612613140041022575 0ustar philstaff00000000000000ÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀ¨¨"ÿÄ ÿÄT !1"AQaq2‘#B¡±3RbÁÑð$47Ccrtu‚’³´áñ6Ss”¢²%“ Dƒ£ÂÒâÿÄÿÄ5!1A"Qaq¡ð2‘ÁÑá#±ñBRbc$ÿÚ ?ìº(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +-)îi3óÙhr±PÚ[€®Šb¨âENçBî¥?2Ëê6ŸýeêÜ“œcí8þ4§ˆ¦¹ö&ôU|z§¥‡}Alþpšß©ZnI jûlR‰ÆÑ%þt{D 'TS4[ìgÒIAÈ?/fk.vX«Æ¤g³"âª+­*ìk*¹!EPEPEPEPEPEPEPEPEs†²ë¨¸õ6ï§4Ķí6»ª!ï½!䨥CÎ Rœ…p3žFÅê~²e{œ¸5 eÈÈÿ´\¼OKáðõ8r½ûŒ2é JMjt%KAëÙûm¢ÿü¥©¿çºŸ õŠÊàe²{þ,¥À?ˆþU4úc?ó·ËÇF\Ë.ЉAê>—€.Á…Ýy¥£øãÆ¥1ÞjDvä0â]eÔ¡i9 IlVêUéU÷$Ÿƒ4F¤'î»›(¢Šip¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢‚@¤²¥!¤’To[‰HäÓeÆï+jRÜJBFI'T¨½J´i˜«T™).ØW?µrþ¼ê†¡ÖKZ#Èû%´(‚½Ûÿ±¬µq +A´¨N«Óbü×ýsÓ:}·R%‰'#Ãa\gþWùW=k?Ò;V]^r=…±£<$î_çÉþUýY NøÓœ/©GqyÂJJ}Ђ¯ÇíÎl}0íøéQHRŠ› Ç >ÞüÖGZúÚþ'B8Grr½uøã’%IœB¹%ÅyúóL2àêIrD…¸9PÝŒU¡s-Ì”á—6DÅ’0–µ”( `¨wüh• µ¡–[`xŽx~2Ò; »¼¹øÂªcŠ×„‹\ýy"¢_Ò²‚·÷à+8­N‹Ë.Kq²9óVË\±Å8Û¥¦ˆ#ík(*ú%8¡÷$ÊHR£Ú›q ÉñkyüIÍi…w>fZ˜eq^˜ê>±ÓR¶ë̦¶ŽR—Ôv5sh_Ò–ëHgQÃD”¯"þ§ÐþUΫD§?uŃè@àüZ<(” ”œ)%8P>Æ™(B{™{¤})êîžÖ‘<[]Å+q#ÏÓµÔ~£äU£æÄ„«òbÓ2éj}3m;ÖÕÈYII5{ô·ô•¾Y\jߪ[Tøã?œ:‘õìΡg†Ú¯2Ž lwúV85•Uý8êuƒVÄCÖ›‹R8Ê›'#êžõbŘ۩(ÓaQOb‚º+ĨÕí\¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ˆ¡¿'Q?é©?ø‡jg¢¬—-e«\°ÚVÔv¡´—®3]AZXJ³± H#rÕ‚FHyíPÈ_ïÉÔ_újOþ!Ú¾¿E8[Q\ÖÛÌ¿>‚²9-´”!#è0¯ÌטŽž‘š¨®—àó˜jJ­l¯mO ô;·w4´=Q'úBÛ%ß â“¸qŸ(H ŒóUÅÎÕ:ݬàiY btË‚!¤ƒ”¤(xŸ) ¨DÉ êþ–» «íj ÒÕŸÜx-+ˆ5n_WÁý"´ø‘lnc÷k[¢3ë_û‰Èá§’T´8H#„Žõ4°Xll#R1Ë­š\Ñ¡S§]]+YÛàTú–ÒíŽù*Ôó¨uqÔV€@9ÿt†ŠÿÜÛ'ýþí5Nõ–ço‘¨%[š³5dw’\š—2§ÆÎÅ8î=Oj¸´WþæÙ?èøÿ÷i«ôM(ÒÅÕ„Òûì? ÓŠ袊ôgP(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+¨$Pµ„ŒÓ ½G·Äu÷ÞKm¶’¥©G zšI]€¢ïuf*[Ž%!#$“€sïXzçÔӬΙ2Ôv%Hä§ùÕgמ¶½z}û=…å&0%%@à¸}ÏÇÇç\ÿ&âì¥øM-KZÁºO'ñô¿JÇRr“±²Ž{Õ>Dšó¨¯Úšö¥¼£1â²PÒ•–Ò=IôÀõ9¥¶¶ÜrK^ÎCjðüWû•ý†›ø|œj+ky ?fŽNÁÊÔ@^=Èùöü9æŸXšµ%!•ã²Hqô€ «MŽÀzŸOUkHë©Õ¤ô´Gù ¶Ã˜‘!r\;œwhò¤u½ôsÚš§ÜÒ…ܿŷ0¬©M¯—ãÈO {1ñOš[§Úã_¥Ûcu óöù -¥Ìq”æW×㌠·´o@t•­œÞEâj€R䤟zêÛ^š¶[ã°b°Ë !-¥9ø$ ^Íž2T” åá?AÚ¬¤ÿÅ[ÌS©ò×Ézøœÿ±ÝJ”‡\˜êÉ^IYDz’sÁÇ¿©Þ–ê£5KÈD„ŒP<0¼z«ääŽ{â»Em.§€"¼\( ªm£žÙ‘¢õ?ØZéüœ‡£wéJSm†üPwí£'‘ßÞ›µL/Ñæ»T4ø!J%\(c?À×e}‘¶PRÞÜ|Ô–e¾ß)Y“6’G|Õ3Ô_äK©NZ8èp”½32$w·6µ-’ŸN2>yíL-Ž$©!¢6ò°psë]ésÑö)¹XކÜÁ󄌂}sQ{×ItýÂ!oà Ÿí6~¿ë½28Ê‘Ý\T°ô'³hã]1}½é©­ÜíSŒëjà¡D]AÑÿÒYÉOǴꆛiÕ”ÊO”(ÿxvü±P Ñ[­—µ„½‚¯ä¯ã8ªfãmµJjS*e{°ž1ÛæµÆ´+­7ó1UÂ8jõ]§Ôý-¨cÜã!hq*Ü20sš’¶­Â¹ôVÖ.K°C‡)õ, @žàv?•umª@u”œç"Ÿ†¨ç¥º0´âÜX¾Š(§€QEQEQEQEQEÄP¿ß“¨¿ôÔŸüCµ}þŠr·éAjý¬MA$í>ˆq(q'ñÜ#T$/÷äê/ý5'ÿíMô£—¡ut›Ûœ›m¸2–îqPŒìu¼àH)$dùæiâ¡C¤§Ù?ÁçpµU*ùžÚ‰Ìw“Õ+9ñ‘©[*O÷[ÞUùb­]fúúLèã›¶Ü®´ßÿóNp¡hy…Ž°Û¡Kœâ¢©ØÞ>]þU¨7À <…Øfªkž¢¸¿ÔØ:å BfAua1œÉB™Z<57žàíÆî3ƒÚŸ”ú60¥Qîïð4醊MÞí?€¿ªÿï…vÿæ'ÿÁ5|è¯ýͲÑñÿîÓTFºÕíJ´ÉcNÆ·ÍZ’¹BÂÜs ÀNí íáÚ¯}ÿ¹¶Oú>?ýÚi}á,]YBWO_›ƒqu¦âî˜ïEW£:EPEPEPEPEPEPX¸ ‘šÈœ Ó]ÞbXiDšC©oq­^“%ô2ÓH*ZÔp­pï_úÕ7S\Ý´ÙÞ[vÖ×´ÿZ}Ï¿øT‹ô»ê{ÏËþ‰Zeˆ9˜¤ÞþÉøÌüW-8á^HY(ïžê?åJmËQ”Ò]f.%Nº´©ÎÿÖc“ô¤eâñØïVq‘ò}¿'*[žDySëJíÑ_˜ûPá²ã®º°”¡ Ü¥«éQ•A]R•YYzî`¸†˜SIqa£€ „ùÝ>€{{]Ñ~ŒIuµµŽ”$%*…hq>T'ºK£øìüM;ô£´Äx·ÝG2ïe!ÆX õÇï/äöô«±[Î嬨ä“ë\ºµTÞ›ˆ^”r­ÿƒØí'i8Ç H`=¥qØ ã—àà Ö)B6opa¿ãKY\‚­ 2ŸãUŠ&*bŠ|éCiþ5ꛂŽàQ­haÇUæZ–G¹í[[€ÉÁûÓ’ìBvݘ BÇ+ðÍju‹zÿáÎñ§ã6Œ'Ç|÷¬„frAŒT¸¶‚ãB™†ÜûóZ]m¢ѺžÜ‹a>QŽ{ÒeGaíRGãK”K) Ëe¬¦ŸB8¤«Ž‚½¬­HW8 âŸÖÃ}‚ÂI瓚E.9Ør yÆ)r€Å!–CD ¶êv¨ŒŽª»«=5µjH¸ÓI‹=) ¥[*Rš² ÛþÊ?¤èuNG;Oª~ !èô›[ÁÑ·¥õ“¶{’Œy(! ©G td‘ø×l苈“£»œs\§×(¹Pw„‰q2IG|Æ}ñÍM¿EΠ¿}´ˆ—'ó:.á=Ö=],5Hï۹ÉÅÓ´³L…e5•"·È´9È¥µÒ3Q@Q@Q@Q@Q@Kµ·Ön¢%Ä)Þd( p_tƒø‚ãR*é{¾ˆÒ·kÚ¯W +\ÚZ[Û”’´§;B€ +îsǺž±AÇØìð#÷’Âw~xÍyÌ_BÔÄW•LÉ&qÿL›“ëhP-¼ê½- vÍ? ë­n­Öâ.2Ü )D•Ôœ’£œŒ“Œf· ¬ïßš«*˜2S‹ñ–ÂJ‰'…ãšè|QZ_Cñ"£Z«’^ îhXâ£96‘JYúAwrCjºÏˆÃIJ¢·1ê@üóWÿ(3džÂ¸côÃÖK™~jÆÂÎØƒ+à­\ÿŠ]W´IŒsJÌ¡¯÷îWß}Õ-n(­å©Y*$çÕˇ¾ÔZÏb¨ûš_h´Mº]"ÛØl‡RR9JTG›C𛍫²îóz­0$Üç5 y甆Ð9Q®»è/L-ÚF wk“-ɾ8Œî#rc;'çæ«~”idÛ.iðÚX%âÊ%HÉÏ÷±É™Åt½)m A (vÓæ¸ø¬C©S"Ù¼=,ßäüé{~oÞ#r³ïJÛÜ£¸Ž}µh'ÝØžõ¥1°R7wìqTH«b–“€ ³øsJÙQ$€3ÜÖ⌓ŒX?qƒÈã©+$g·Ö˜¢)ß°qh©YÅvç·8”ð·0=ÕLɽÆCIwzXJòV¤§wÓ>Ÿ5›wHOc¸GwqÁ(>Ü~•tC„»-G•’k,+’GãZTµµ) )ôù­˜ã¸>ø©Ô‹›J¹Ãæ«ûÇZ4UºwØî3®ƒÍ«-œwç±?LÒe$˜ØÓ”¶DùõåqüŠoy;£ò=é¶&µ²NKe¹ ©.c mÀâN{d§±úÓ©SKHR0¡À¾Ô§il]ÆQÝ wÈ-ÊŠâ@)Zp}ù®lLù=.êK®­ 0^{z¶v)'ŸÇºðRèAû§<Õ×Û+ReÆuMxŠ(sŸ»Ç¯"™N¦Mö* ­âΤÐ7è÷+s2ò\mÄ¡`ð¤‘jrÊ·$W$~‹Z­ßÔâÃ5dI¶¯Áñ½²r“á]Qha$Jìáæå=ѳ‹qc•QN$(¢Š(¢Š(­Rä±3’dº–™lekQà ¬u–»¾9oyë#H¶C"d„n[Ÿ)Ià~9«Ó§*ŽÈUZѤ¯"Ó¢¹×OYv.J›¬/Á° ËRÔÐ? 1M79Ú¡‰kB5V¤ðÒx?¬œÉiö)ö™=½©ÔW4éÙ÷©—†X‘¬5Y*Á?¬\çßؚ֮y*ˆ‡£Ô rLÜÿ….®TÒlu,W´‘)¢ª‹ƒSD÷<-I}Ki8À˜ª~ÒöI’b—äêꂾîfñ3ÃJÌÙXbóË*D技jˆ—Ýöô” wûYÿ*®ž»^þÒBu%äöÕãùÕ¡ƒœ•È–61v±Ð”Ua¥Þ—.3k~÷vR‡ ÿj<þu,›hqP‹¬Þ.Á[r1+ÿ*\ðòƒIó/ Jšm-‰Yæâ‡ Uyº§Ÿö¥v©m¶Ú!‡ÒãœsþÑÿ•M\4©«°¥ŠU’誣SÝ'1pZb].ICg2T?•7E»]^ ®õqGÇÚWÏñ¦,ÚñÑOb被XóäH‹á¦ï<:rú»þt§JÜ›ƒŒÉŸ,´“Á/¨ÿ:‰`åvÉŽ22vH°h¤)…µ$ªd³óâšM8!¨î-¤ÛŬñƒ“²4ÊyUØïEBݹ¼Ã"åÈ#üCM’o·B?dó €K‡üëO±LÍí°ì,zÅÄP+Uús‹ðßyÍÞ‡yÿ:XýåöšYq×1Ž<Æb™+'×’ÔÜE„žOók«×sz××i{÷!IJ» ã?ʺ÷¯šåÛV‘¹KL…%ß ²ÈÜr\_×Ðdþ KÛ½¨€IÈϨ?5Ž­,•lÓB§6ŒR!Å$+aÂ{îja¡®,ZE»™=µ+*K¾­§ƒœð=“óQ4¶Ëî¡ô2”޹‘ÿ:ÉiXm~e„í;‰ôÀÇriSŽecM9ä•΃é¸ÔÛõÂZ!Z­Šn4rò‚@QȼHÎqîjıõ‹¦qb©RõŒd:´lŒò¼¸øOÖ¹ó©Z}ûIíLȈb¾.)S¬÷SAM(¤,ÿhá\zWHi)¦btkNj½(ÑÓß~ÕŽ6Œ\Z°’µsÉäýk›C N½ê§¥ß‘՝Д§eËÌÍ]yé HIÕÎ=E¶Aÿü+yëÿHiE­Xµ«õt€N>¨¥kÓ75F/Úô'MYi •<4ãMGN?ã\àþ†—ÐÚŸS;#h誛ŠR™(‰ajbš*ä„§<ÄÓaJ“÷[~¼ÊSJò²!Óúõ¦îa_e¼FŒŽK-©E vÜHÀÏãPÍMÖìÄj¯ìòd-²âfVRÚ`UÎO®3ùWLµÐ-,üOÿTµi)/žê¦Xa9ú$çøÔ#Xþ½=[n—cÛ­ÎðâaHa¼ü¼¤çð¡a#{ÊþE½¾Ë,-ð¿ÔåèSµêC’%Ýæ¼óÊ *[™ó„þ5%Ò6ºVµéççµ! S®4BÞJxV{ýG ÷6—ú99n|HÒº¹´8Ÿ0L[¸m`ü%ħ?ö«(íõB8]š!ßÛS›Û8%.îÛì’w{’>*³„oÕ’þ tqm%x¶þ’æèû×5ØvÈšô¦Ò”­’øÂÛ¼ =ûv÷Áõ©ô7pò Àùª?Dõ·J91¶ur¿dóÒq"…YP<ŠÏ>dŽÃ5zé²Ì¶6ü£Mˆ´å§âº—Z#áI$¼i¸¤™’µE)9ÛYÎÑȃí^8HŽ¢‘ÂGb)|¸®‚ “Ç$rÀ¦¼¶í0_™s•V¼Ï?-Ô´ÚG®T£UšH\zÅ+ÖH³îW“…¸Ôynb[ÉW™-€0óïõª¦ó¦¢ÛRãQ ‚†ÃiñÈT•û {“Ž1ë“VN²ëf–ýdä ¦®æä®¦[SQs“’ž Üú€ÍVÚšG\uZ˲ ÄÓ±TBD;{hC‰Çlò§çÔ¥'„ã«ixâ"â¢à߯‘MÖ~•»®e†j­«%GìÎ…-—’Hò©8À>¹øâ¬­Öpc¨Ê— Y)!—ß‚½R ûÈùïþ0áÑM[1Ã"å2*QÊ—6~åçä$M×n™Â´ƒöý[§™P$cÁ±Ç±æ¯%†¨¬å¯pˆûLdòÂñìz3«]=Ÿ?«­1_HÆÞ{8ô Ô'ª:ÛDL™Ëv§´ÏWçKnçË‚9lüÕÞšˆæ…Ò³ÊÕµå4¿¦H¥ô[±Tò¢0éNv<ÒÛè¼þ9«ÇNoÞfhœuÑ_Ç™/éî©fÁÔ†rs3ùaçŸ x‘ЗWµ[°‚BB›ˆˆ«ôivg_Ȇ‹¼øÑÕŬ2ú“œãøÖ§ÁçƒÐæâa8§7ÈúNÃis[jœÓ‘åIŒŒê[ø?ùTÚž[ÑÒâµ¢Î9Äß_Ê·Ê‹ŒT»LñëKõçQêeh«\ék´ÛRV•¾¥—¸•£ýåqŽIø® ýôl=-¦î¢<Ç%}½Öœt«Ü”‘ÁDZ=¾j§èƆ\{ÅÒçu(VûƒªiÁ'qäû×FX¥·lmÝŒ¥HY[NÜ`U¨TÕöÆÅeÊ·&! $ Ø a×6¿Öv%Ç%”¥[ʉõì?-µÞí×þÏ!%INT’~ï¿4Ë­õ~›´ZÈŸrˆCŽ”8'8JÙ+8œÈ)FjËR«ºèp°µ&{N 8"£²­÷Û6ôµ9Ô²¡…´èñYXö)­gººïC -©:Š5úîÓNÚ nßhq¶Ûuµ#ÄR*a Ø¢•eHûÀá&õ £ZƒOk½)/J[-WÆÛ¬mB“!¥,nRAoÃÊr=Í;_‘ôÌŒÙJã¼µ3·Èûdù’¡Ø‚2?„̵jKçVѶÝG1¸:n(…×ÝPTDŒ-M‚í ryÚ„ÚŸCÁ¤ãmyS *õÔÔì¬ï~IxkÌ×úXh{ÜX,j™v ˜Cm¥µµl”¤žI $Õ'c–-¡k¾Y¿X!lå¥Kt¸Ú7BðI²A®À™Ó[ÅæÔ"ê¨j‹‹J©•)*hãÜ+9úÔHô¾ÕwÖ—>žÝç•Ö.LÈn0Y¸BBWc8A ØB‡#rÇ àh†*NiIhü þÏS”£Ríodö¾ú’?ÑãGÜ¥ôew™°oûRÞu•8€“!’¬¶¼ (Œda\` sI’û6Ie«ÃôKcjSøÕÒZ© 3¥¥ÅŽ C)i m vT½t²Y£xw;¤XaGþÀÐ$Ÿ®{ÕqXX;_â'©yI+öFúq1ä•É–>˜"‘]:WLU°·ƒƒœîOÿ…J\Ôvi3•Ýw€ó¡9)jX N1Üó[X½.:ƒr-“ŽGùŠçº4àΗµâš½üŽKê—J.:js’#£ívâÜWºnðÔ½7 2^TypR¦èQ$"¾£ ñ]w|íqÝi¶¶”‹$`ãÚ¸³_é§´ÕÎånm.Û|© ';¬ùŠÙN¬§h7àÌU5ª£â¾¦û«ê¿Ù¥ÝC?l„èfaa!(w#‡³Œî3ëJº‰ÓI×Û&;PËJ_¦õ¨mOÔàŸÂ™úz^‹ÓýqtJr˜©ƒ‚´·JqùVFmB8öĺêÜûDŒˆOà8üëªãFœwØàbk~ËO™Ôº%pšN’?!V¬sà°G'ÈWú)e†Ü ´v7æÂ”/õÍuk¬©C°æa£epb#M,¬ žçÞ·n à¨r84!µ“ÊŠSÀ<÷¬CIÿã' }xúVVï»4¥m:àJ¸àzû®h¤ò­Ëí`>dƒœÑM‡Ú±râ_DVý!` ?k‡ Apr¾ª˜»ºjÊÜÉ@å)Ï£];JS¢à``#ý⹩KL¼ò³»Ãl{b¶;%sŸJùTLm¡´ä{VĸÊRµx‰HùôïXº«[>GVsÏ›šÌ.Í' …mÜ1Ÿo¥U¾æ5+sG?ß/ºšå¥î>Ût”åüj9#Hñ ž #2¬ç?տŸí©÷XÖ¹¶çʃzEË”¦„…2yݨ@R’ INÇÈ EI-ý8™iêÜÝgCZ]–XI>"d”!µ8F1ˆÇœ¨ö¤:3G?¤-:±'Å|Ü–ëvíªQðbåÅ6…ä §WÀÎ= ¥Ü•£±›‡8¾·®Á•½i¨ÛGMÛ¶ÿdºZymΘ·Zši89°“à‚9'9a²õ]æ×[Ý„4ηBºøŽ%©+J ”¶¤p9ä§½:?a¿">Šû3–÷ŸÓŠâò‡|FЂR ‚x(Ï#œúV‹†¸½aÖp’ô0íîAr1RÔ”ìJp¿/)=³LŒ$—®ÂÉïëA˨××ì:áz„Au¦’Y*­IJN=pT Dã]5—¹h‰R5ë›:‡k3X” ¤¬#j›ÀpWÃäÔþ~˜F¤ÒRìsÄH`4HÎÅŒ«ÁÔ/NX¯·> Ytö¬ a:E ¸e¨îm¸`$%Ï£nÔdg9ç©|Ȭ¯qOOﺦï¯u+7ñÌ(²’ÉKäý˜„¨´n )É'YŒ‚•¥Ä+j‡b;æ îiÍQ£.šÂÿ Û„Š—5¦€qR|@•ì@@N+Pîíš™ZŒ³nŽg¥‘7ÃOჷÄÇ›o'Œçö«S½¬ËG¼™ØnÈy aå¿BN)ý+VÒÓ©ÞƒÆHÍVøP!Ä(v#Þ¤–;èJC2ð>sU©Nú£M*¶ÑŽ2íêaá2"ü òŠrƒ)ÇÛ±P={ ´<¿´†‡ñ¬ßž„±ÚϹ"³ÊN][]ŒTzײ6‚þ?« c'šõ. ùÒG8äw¤ÉŸ(cŽâ”75 ;@N}©n\†Æq|̾è(îÙÉwˆ¤6´ãÊ®E?©±È9B»Ö—š¶R{zšU2»‘Vžeb`ì8àò+9(zýktèë(ûÍ`ñÂ2?Zè§sšÕ·5 ío?ÔwP$­—\#“À§ñ’`÷õ¦­T͹~åë!+ÈShÜHïáÆ”j …Âý}žl¡+Yj3 4€xHüù¤¬:˜Xy¦Ð¥ç.Fíü¹§½òÕdÈa ->"N'>€÷'Žj*Z7©m‘4œ£E½Ùgh>^n-%éËn"1ÈW*Éø©.žÑ×= ÔËâ*Táƒ)22„VŒáiãÝ$Æ®½2#ÈŽÛñÛ eM „íÇÓ?8ÅH’Ã.) -$¨ú‘Ú¸²sžªZž‡Ú²u2¬¦ùøö뛫·€cËý³*‚• Œ~ÈÖw™F·Ÿ Z‚ ?ÚÇä ­ø_«ÝZC¨ýJýÕ÷°=DZúÖm  àƒ‘ƒZ“Nís9–iÙò+ 'vÕ¦û-WHβÙe•à žT}ÅEçÙõKÛLاìQçL‡ÞˆÜ–ÜmiRSû%ðHÈÀ÷íÍ^‚Î~ûo#̓… Òô°êÛm6Ë©iaÄsÈìi´ªN*Ì+ðª;Ú×*ˆÚVåqUÞ5Íõ¦0ŒòÌr•HX9I-ç òœþ4©V_¸"V“³¿jRä‘!¤ûåHÎÓ“íƒV”ø«zBžRJ”0¬'q8íñI×I¼ÉÇ5YC2´†P®¨¼ÔÖ¯·aìRåÆL)®2üÉJCnèÂôHÏzǰ³_þ¿b|Ik»L”îØêß±ÀIRûgnÀR;–êë‹ÚrÐÒâ%³{¸nidœò<òUì”'$ëPþé¶,‚Rc-N0Û¥ (¯ ‚µèTBsô®~&Τ!ÛúõØoé*SªÝ®š·ooÁ;xÙö‹ )À)ÀÊ»OµDcZÆÔNº¸î."í¼…µ§ü‰YǪ]-þ⤶²<2—'c9¨·T­îIÓ2Xmo%;‡„¢•V2=ð8úSª6¢¤¹jd¤¯<—²z|㲯OË•UöLÈ))ØÛ©ò %Dädr03žõ\õGM?p¼F™¦ô²Ð˜ˆoÃûk!ÖTétø¼•”8£#Œ0– \e VT”Œ’sOzÙëÖ“Õ.9¤-š…zQ!)1'(¾B@ œ¨\ë]-ùkeI“(«¶½9¼ö¤RÐô¤¶ö€rJ]f庇©JÊïãøô íCb‹"Êд ¨¤§n@ªËô€°m׋‚Ú Xeý•Ž>¸5kÛmI²>W„°µï-`{ãÛéM}Fëf— bœCá—¢AÜãðïéYZËgØÃ2ÎòìÎN·([ºBÝä7TÝØ|¤ðS¢ mÇŒúf¬Ž…Æz\¶.©!L¼â÷s€@ÍDºe›|êy·H‘eÿ²ÅJ~ãm¥¾žÝ½Ïç5&Ñ¥)¨`Ú­òZR‡ì^ É óÏbAõü«³CÎ2íÔãc::£ ä¹ ¥ðF;þî=ê\…¡”ÉW§Ç^èiaPPT°\úzÔâ7 -G'¾+¹Uª‹7#‡FZºëÎgz¶€{V)oîQV;úÖÒH9çØW€ùÏ'Ž'æ—{-ZïS¸ë ÞÚŠ‡n{š+5á8!Gð}(¢Éî‰M­™ é°Cz6 ïçb|Lÿ¨ªp›5é‰)mE¶Àãæ£ÚÕÈÒ[ó%¶üL=|E?!)Ç9Éúq[¡dÙÍSê¤:AGq=ùí[Ô„*>}«Ôî#¸­¨RJ{gÔ~=é¥E6yêj@Šó‰(sî'ýw¨†²+MÙIL¦–´¤(b=Á¨÷KãÀw¿].LF‘¨¾ÈiN<€§˜BU†’‚yJ6`Œpr}ê³T1ú+¥.½†ã*+7‰JR·®*dmR»„„§)´³%¸q[ŠLµšm‚ÚI>\zþT'öÁ(B· íQ#Ž V³­1äjmO§lR[µA•gcÆû8 m™JqA>Q€7 qŒƒJ,öWu¦uŽ=¾Çi¼Y®L.C-#0.Ü”/’)9 ¤gÚ¯öÌ]VˆÂ6–ñœ‚îÕ²R›ûS›–Œ•mÆ{Ç×â¢zíxºé»|#eÓöˆá÷šŸཡŵE’Ð P$(äŽI¨>£hz·p¸´ÒäÅXûŽr¦^û:Ke³Ý*+ä`œjŽ'0rÑ4[ ÞãËÕtÒ"¬? RÔîFÕ©I ¾FÓùÒ)ë .Ëyô"3 —UÂ1ß>ݪ oBÉ|ÔWký½SË:6Û"‘ýjŠ–•!YÏ’AÀÍ5ȆÚu>«·ý†É3Ú?íõŒÇ…/bˆÀ`óÆÓPª=ˆÎLnºÆÕÅlºÅÿlGYfM­(+SƒrrTFÐ'=½©þ\”Æ/5öwÝsJXQIõýÅTÓ,ö”h^—Õ°OÚ.6âé  ïß[¸ç%#9ïžÕ®ôÕ½zo_].)i7ØWGQ òpüpŸeKGºAco|š8nFftÓï"4"¥Ô¥D$žyíZØSg JТFxVr3ÏþµXXíì^zÓq•zŒ™`ÚmÒJŽPÌ‚¹a=·yqžàgÍAãYíÒ4>œ¸=*›+\oHçÅTuIqµ3¿¿†PHÛœsۚΥdi•W{ÛÒ:1 BÒÚ’¤žÅ'"¶‚€HíUÇLâ1oê7P­n,òá8ÌfRÓjr*JÊR8<œUŽr>joqÐy‘œwTÉÇtàÒ³ƒ…Œyö¤¡*PÁæ½Ü¦þ÷#ùRä®ÇEÙjh½Ä3â$ŽõÊRGcRæv¼Ê“ƨÅͯ³HRHàžkFâùñ0ÿ%ÌÂÞÉuÃǵEúŠéLgâ§–¦6ÃS§ÛÖ«^¦¼¤°àO±«NWR·"™mûJ«H[™~EÂäûIqmìÜ2Q*&uw¤ÍÝáÅ»$¼Ä ‚¢ãJÞ­¾ÀÿO©©?Mÿoi¼²µÏ³%cà¤í5hÙYUÂÇÅ6 öħ>U'øòXºmÖÍgÈ÷¸J¼<$SÖ<×ÃîpUÇHu¶RÖ–7•ã…òœzc·Ö™,ðd±qiï3a²{0qõí])ÔÛEu!vØ1>ÉÈgs«%ׂ²8ù¿!TôØ­‰ †Äs³Åý©ÚF¸‚Ÿ§±ßº©Êñ–£±x +%Jj×ÖßÁÕÝ/mæô¹ùa^3È óýàŸLý{ÔÒ;™9#¿™-í&-®,tðÛ,6„sÀJRü±N¶ÎR’R@>n{­g‹×A^fÙåÆò©Ì£{‰['þ{V»n¢†ãâ,§DwóýSÇjÓñÏÞòâ ’N{L}h‘j·Íc› ™ œâÅ1A§x²Šp’´×È{¶*3­¥KB’0<ÛrƒÿX>Ch)q“ô"«ætœ,ª#÷kj»ƒàâ~™Å.kFIHÊu–­Ø=>Þñ)­E¼|ÄNµKx¯³dÊLdJ1„òH©íP‹¾«€‰FžŒ5Ý'hj9ÌföŸty@÷A&”=¢ì`x“v½`ýÛ…ÁÇPOÊ þéèÖØ>H±âFi9e°„lQ'7½—›û/2i”5Ö^Kùmùx‘HjJ%J½_e~²¼ÍG‡!ò0†›ÿá4?q?ÄÒo²D¶Ãa 6Ê ÚI9úžI§ió¦\ÞÚÒŠ=Ç•6ðÞV¼¯“’7ê£S«9{ÏáË»åÈÝ-´ù0 9çšWu‚§¢-<ŽÄR«#q֦еs‚®ôór¡hm;©ª’”ng•L²H¦íúrä«õ`fÙvŒâ”ÛÈO•à{¡Áê“òæ¤ð5Cˆ·ß™U¾qmYÎÿ”žÎ‘æ÷O­!¿á@Qo;ræ úT¢Æä;í©pnq™”÷ÐëaI?P}k-4Ó´^¾FªÒRŠuךû®ï•µîb3åcœÒñœíXúƒÚÉ“#y:+TãéHþtºãÓË’¤4äøÍ«€„=¹ úçݧqmà·Lö[Zÿ2š¼•[ë“ûجU{ÿ4þ—\Ô(T‹,go*ΈÊ# ÿyÒ1윚ñ›{¬¸©×I™p)ÂV„á¦u¤úuM=ÎÓÓI vÿ1ƒÚüíIZ‹%Zy.ŒyNÜgéŠÏ%-š%Ê Ýg>k»q={Š[sÀß²[%GÊVÎ=ÉÀòžoZk¶ÇY¿Ûßq¶›ÉSÛÍÃñô§~´º•ožÁÊá»A) G*ùôÁ¦},¿´ÜÕ)J+lË'° w5ziÎP^·7æ.ÄT}–ù¤Ž›é«åÈͬÇlU­@4•,Œc¶j¤é¸Ra´„Ú­›t@[Üá*$ÕíT)E3ço²7xÈÈ9üŠÉ8<ƒ€yàf”Œ­?sà Jücîlá9ä{RT¢Ý‘¥ÆKVf¾Sß}(¤W ƒ1⓸nô”S¡JMX'©Ð*m­#'+ì}7«šy2T¢64Oíšm镽OéHO>¯)ñ8Ïübªh˜ÈO´‚?hâÆ)#-:R”S# ’ ¿Ú$ d`‘ÇúïJRêUÊ3‚08þTó&#4B’®=*)pœ‹;êaÁœŸ/5xMOb'd»}Œ]™»È¶ÀUÁ B%)”SÆ0ŒŽ>j7ujÜL(pb±´–ѦR–‚y$´IãYõ?U_µ•¼Ê¶À-ÚâOj¦ %öˆHN6îòýìòN1RK¶¤›g‘|q–%1aCj¸%†œ;Ó»kIÚw¤…‘Üñ☬ȒZ4µ¤BTuZ "‡râ¦:j?)Æ zz u:kO›b-£OÚ— ܘæ" I8îŒgµ‘¯Ìšr`»;L» ^>Ö—›ËG·^SëÚê¥N€åÓìÖÖnÎÓK¸“3b·);”††Ó»jNNHöïSš!tYöeÆ1#Çi” mBH ØÀü)¦É¡¬Ñµ×Pʉlû„„ÈJߌ….1JRœ!X$´­VnêW,š×Uß$ºó°¢Ú"HJ²wãhì ¸•K"uéoš‹uþÊÌI2`=2jQu*-VÒÉBp FG~j­Å’¤žäØÁ€Ì™»mˆã²ð^uL¤©ÆÆp…2SÉàñÉ­‹%¢*·Z`Cl%Hb:U‚¡ÀàGÅWöž ÝnÏé÷fZ‹þJb-2ŠÜC› €Zv€€8Á?=øF×Qo‰·Cº7§Òä9WCjl ¸pÈܤ¤í)ÆÂ¤ã9ÈÎqÇ3š;‘™#zwO´Ãq˜²[Xi·þÒÒZˆ„„:2€Âù>nüšO6ÇmUʲmpž”Þ<9GJœGÑDdzTeEr$-D›Í± ϲ<Ë*f<è}O–¶©IN2TÈã½.:¾th¡7Kl1:ÃoMÇÃ3Æiö”Œ(¡$RAÈö>´9Án ÄÆÜäd®X‰JPä”¶ã‰Nv‚¬d“€{dÓ¤{5‰Qa»M¸Gf@”ÓB26¶þâ¯# ÜIÜ9ÉÎj¿…t¼9ƒg“i‹Ûµ±Ë…°ý´¸ͧcÞA°ùÒ|»‡qÏrtZû©îÚ Þò#º‰iRÚq¥²ÔìÛ¨J7’~® ÊÐíhVâSŒqJ_|6ÑPâ›"8’’¯Å#½L-„¶ÐÜéá)´þ"ŠÃÍ+K– #$¬öH¬.L-ûkÑããÅ)Êr{šÓ´ÃAyõÈ_*#Óà{R)“вZR”S÷³ÈUÖÕKU—ËQB޵D’’Ü–øqµp }±UoZug]¡ÏBt–šD+R‡ìžDtÈußùDä'鯭–'6‚üD, €’¡• vç¾iΕøÿdÛ,on¥ªRO} צ¯ÕõÝý2¦èŸRµ§ë˜¶^¢ØÓn™4‘ ci؇Ö|5¤¢ÁÏlUÍ«uKNœŸx–ï‡ yâNÔŒ>OaóLºMµ1´ÊŒ†q [x!@ðR}ꪠޮP•c“ CÍÈP.d„ž~8íT©9Âú¨Ñ¯(¸»[{úD§zÖù~•7R\åE…iyÓ–!3~‡yïóî{UÅÓMëtûy.CKþ) 9ÉN{ŠˆA°[¢CLyÖ¦%'bã#ÃìF?:”Øî1#²ÌVØi¡ýZ[B@I#Û¿ò¤R¤ã,Í۸ו‘´#ÙëIJ¡ÊjBO­j•“ʶ}i–Ÿ0R8ãÔSºJ›îI'·µmRº³8N]Ä’›Üœ>†¢w„¡“½CjB‡sSPRЉ<üTGT©(ŒéÂ1&ïcYëi—…ïcúÊÏ룻Äl"x™ + Þ• \ÿèEE-7/^ÚôØð‹lGWŠP€2ò““œœŒñÎjouûï]Èý§ˆD§Cxó•¡ 2;ŒŒßФ-iu4MR›BÓ9YÁãïôªàäßa«¿øø_íôGqt¸§ì“Éã½[°6çTONç¥-`»Èæ¬+f£ðç¶­­«ŽüW²Qu©)efO³ŒgùV2Fæ“ÜÍijc HXp$}k\¹IR|6°ªÊ¡,Ûœã—q‰›X[¥ÉNe!^PsE<¶ÐCxîsEju[{™¥±éó­1¢ ­Â¿´ãñª© CÍ…!GÏ«X“oC[£4¬)[ý{~ÑTã§õ"â6#¾R9 5xѼ.·Ö²{²Óœ­Cµ Xò¯­­ÛyÇÍ.¹gŠ PàÑ¥)eÅâ+¹Å2”uejÍKDU·]©W§/zbØý¡«…ÏõƒN¾V—šË©xµ´$‚7§…nȱ§ù:^l]gx½±dÓW¦nþŽ"êŒ.;ˆFÂR¯ {’@IÛåç<úTÕjm¼…:ÚHà«{ý+Ò¤…¡*R|ü’9Àü*](½Ä%b5­ºr­]¬l׋s°"Ú›e¶n‘Õ¹+u,¹â±°$`áy$qïÚ¡7Í.Ϭ.ó"ÙìWV®µ©7$¶”í%'b÷$€8ãœóVå§PÛ-ú¢-ŠDÔ·.[Ku¦”q” ¤OaÊÓŒ÷ç©F°D4ÌWޤ#)Ê”®1óšLZŽ·8Fpâ-ï©PÜôН/ê”Iv;0ï6¸Ðãøi%l­¢¢S€6‚SÀ>‡µ!»Xo“&·zÔ@Ýn¶Hf3Q¥xŽ8á%#o HÏ~õe&ÚñìËB›<‚ZÅ0C¨ñÖóeÀ^ñŒçÐýkFH™ò•ÇLl·Yv}*îÌX°¬ÌÙeµ­O<ï…±%ÀRŸhRŽÑ»$kÖ4mõ:~ÓkCSµ"nεm-Ôæ—ïa]Ž}jo¬î(ÒºjMæBTøŽZ a gÄu-ϦUü*E 1#n>*V°vðsƒíP¡ElD›éD»ãZÖLÙÙMíÈ/ÛÔ \𜎄ÿZ’ÚTœ ÊIìiÊó¦nW=¨¬ŒØt¥Ž\ø*ŠÓ–â­‹$(áð’Bs´…cžOse0ëfÐKJsƒþD´£ªtl HÌuEfbT´¡ÕS…”àŸÂ±+JM³l©Â Es^¿‘©Jâ5Ž–¼ªDoÓkzéÞ­êZÃ` ¸)òäzqXôÇOÝôމfÃv0]fÚ…$EqkS¨+R‰R Ó‚8Yæ¦é'=©“Bê8Ú¯IÇÔ 0äV^SÉØê)ðÜ[d“ÛA?2öw+Ãûÿ¢¼µé¹ºÆ½Vb}¶÷]¶D¦V†žTt4y’œò3ŠšÛ4æ«kXݵtÁc2§[†Ü$¾êšl¶²Nç `¨¥íàcÖõÚÛ`¶*çq–˜ÑÂØQç*Z‚RõÉPþuµ™¯:“±ä­'!%*È5NwtÉ‹=ÿßÝ•µË§W'tGU¢ÐåþLIíñµÃˆ¶…“»bN\(óØqW¥s]·4»›˜– |Fã¼]m<œ¥%$ñÝÄA''“ëOÖÅ—#\TV¤¡Ñ|3YŸ¯[‰¥$µ!$zö§xç,§Ö‘ÍkÄo=ˆõ¥Q §éI©,ÑFºk,ØÓ©ä¢4R·„Þ«O{†¨%@­°àòø¨(Ýÿkdjx¯¡+ûƒš«º³á®Øê@h¨$í NàHôÅl¥%N•Ù†¾µÍÚ¶ûÝÕËÖB‡Bs‚ÞòA'à“ô®®±Û›Šœ†ãŒ¡Öó-´«Ê²{{+çö¶¹?2ìü+‚Ôp¢ƒê¤ðõ5Ô_¢—X-·È éE1˜·è©KqÔó›DÖÒ6ŒÝ`ÝÏÏ5ç«k<ÜWƒƒ†SO_^¿¢Þë.—{Wh§íL-Jm ¯j•„äOžk’“»sï[ä´K(T„/ÊZR'8çhÉù'Ö»ˆ£Å^âFHÚww®Hë5…zc_ÏC©W…1*SJ$¨9œsϹÜôçâ¹Ø˜8¼Ë™Óèê—ƒ¢ÞÚ¯©$ÐòWö1]Y@üE!Dän'ʯœr@Ç5eéÒ E uÅ£v}‰åU&ˆœ©SÜ^ÆÂnM&B€Våø ;ßûÙâ­›-$-@') dûûÖZk¬„Iã$6…%8ÊŽN9Í(Œ ÛJ‚F;ΑÅä¹XNU»8"œ`’´Ž=ûÖ´`½…«¦³÷3Lìº#•ÍwÏ%ÂCiþÀÇoƒóO²ÑºSÉ PÜ=Å1¾”ø†CÛœ©'ßÐ}9ïS-ïØwB7\~yK‰;Óǹõ“6ô…y€ØWÉ*õ¾¼ÔW]õ3OiGK2d¥RÖ*çúJhÒWM_­®ómP£ªÐ˜­6ò•5¥Bó´¡9Ô:°†²zù(`+:\YuaÚË-† !ÂÑÒUŒ•wÏ4©•ÁS¡–å3Æ{þ5²tÃ\ɺʃZ.*õb áÄŸ^GNiÎÑÒ½Gúîku³‹†ØIŽDT•œç;û8íZ!Y=_¯ˆº”°‘½ë§eØþÄ•¦|UŸ æÖ—3ÆsšEqˆÚT—×!¸¤üéžgLu_ëvX¨`;m«ÅqØÊK‰Ç`6«œÖ© ¿¦L³j´–”²—RZQPIîä‘ßÞ‡4׺þ_’±öDîë/“má”%·›-ž0U¸÷÷ù¦÷íŒxaèê '(÷ÿ<Ódþšëço/Ç©ZT6šÆu”ò²xNÐ;bªˆ}@¼XïŽZ¯©¥¶áH 'jûã‘YåVylÓïGF†8„Þ¢“ìññ±wØåºÛéC™ÀY öíS sž+gýˆî*¤]]î:JQâ-¶=¿–éT8êÉB‰ðÏ#Üÿ ¤Z3—ˆ†Y4÷B©jHVÕpsœ …ê¹ Et« I%GÓ/¼-¤)Ò´à¤wWcš¬z“4CÓZÂVRKdŸUpô<šN"NÖ+E^H«ºlüKýSü5–¢%Û£©9IXÝNxÈü+›-«K—õ¯yý£ŠpÝÎE\«W¶i9ÚwJ/íËŒwÿYºÚ¼6Xd'{»r~ùHÆÑÛÓ’*—io·áÉy•á( PÂ{p?.kn‹P“í'¤+ÅÕ‚ÿ]ΫÑ:£ìö˜/:°%¤íÁûØ‘RÉúµ”N²AedÈ( %=ÃiåK#ÛÒ¹>Í­·[|6ÒeÍj^JPŒð”AœñÇ>õbôžá$ÜWt’—n7Ù>Dr#¶aèŸÆ·UÅU¥EAzübxyTÞ(ëëTå>†ØJÎN3ϦvôšNrN9&ª¾oÔ­Îçoaô«>+©ÆIôù®ì3JŒnréhõI’–Z <š)9GÚœ9¥#‘ïE4ºÃܪ7x•=¡Å9h‚3„ /þâ©D¾c·}OúïItð&ÏøsÓþ1TªPÜ„ŒäŸãZ¡î£ ØiH¡¸ÅÍ™*ïNï¹á4¥œ€;|Ö«3ay)¬$aÉ)c;ž;U‰9ëR=o“£u]Æíà F5„‡GŽ”øèJ[IûÞœÄf¦·ˆöYú‹¨îj”Ç[Ð"4a*GxÑü ¶‰û¤¹’Tžw=Hõ/MÛÔU)ùêy¥<—i1YBÖ ¤¶]ÜP‘ÆsÇz•KÒÑf¸Ô›Ýª §å§Ž•©¿ù$Ž;úV|ºêQR“ÖÅo¡a³sêV†•©aD~cºMNÉT–’T·SáaJÈåc“ñÍHúÏt‡*õf³¹h·ÜŸ¸JR#ý¿geHmJ+<62$žâ¤7´Ú'¡†äZ`Lr2ŠÙrDt8ZQîPTÓò)ûl ¤oé,Öwnðä4—¸v8P#51¤Ôœ†7hdD/¡Ò%3§.ì´ëJù1–Ê‚†Âòß÷9ãàÔfçËŒ+·N¢©Ä=m¸Ï¼2')oÁÇüàsI§ìfÆl¦Íný\’OÙ>Ì$•³y$“ÇrM/4_ºÇË-/¥¿ ©cC:7VÄa˜îØ`눷‚¦ØÊÙñÞxJ”¡ÀÉz¦H(mˆ,1:Je(O<€šÛÑiU˜ÙÕl‚mÅ; BÂ<3œlÆÜgâ²r H™‰+#46¶Ó-„!Ø$p*Ôú³!R²¹ŽÔ‘NVs„(zSzSå§BxUMgÔc¨®ºÊ!-ük|p|çëšM0ùB}Í+J`8â±KÝFØû̈ëF®ÓáZäG‡Îû¨+Ú?º=þµQõ6Ø÷êw#®L©êÚw+! _À `Uíud®1m#äš„jkb†¡³¦™k«•ƒq‘FN鵂ݯSµ:éç^$e´K©sŠtT]ù\ßN4q5#Ç“I|¿+«‡^:Ô»¼ûí“BÚÍŽBRÔ’›[޵Œád ¤’¬ò1Ž;aŒ~’ÝuÒ²§N¿Ù-ó˜PDËrÚn6Üù[ØRH9çqQàsït[l––Òëè*‡ŽC|àxÅ.Ÿf»†Ê'À·Ý[ (‡Ù*B»úÆ1O$µ^¼ÍŒ ¼°Ñø¯ªú”¥GZ.öo1-C3+J¡" ……¥Xó¬ïß‘ŽPžkF½ý!ú¹¯ôÓºa›U¬Éy¥ý¢Ø—Û’……¤!E÷̑È«Ù6{’˜q¨¬Á´C<-¨Q@}Ù¦÷ôÄ%[3âp NO¸ pj\]½}ËQè¼%ºíß¹¯¶Ÿ2´ÑŸ¥ºÓÓƒZÛ_¹Ì[imÕ´Êá@yTxY#öæ¥ÓàZú™z‡vM–|l8•~Ý’ÊÊ„¥^ÅX*øÈ©•Ñ­·r3„Ò•y_qO-?Ù*>aïíSø­¡ %–[(·zŒzÖL°„®¾ëáÙü¸xJ­Ów|šÓçmßËSVœ´¦Ð\C(û6æÃm +w·>õ*³0ÜVÞSyJIÎ~idîqhŽ{j_=Ôµ¡…c'>”·kÜåÖ©)½wdgT>§@., };ðj£ëìÈÈÒïÄS… BTžO ÜOÀÀ?•Ye¥Én( )¶¢”÷É÷‡¥P_¤­×ÂêRùRÔ9߈5†]y¤¹³M•Ýò)=Qµj+»a„É– H@>Bò­¾Ù8ǺjQÞä­4œ‡§çJRáø€¹ FÕú”§žÄðj.ܦä35ô¥h.¹GªÂ=¿•H'ÜwõTd¹iBÛ÷J‚H*PŽ~A®ƒI¤¿ÖÂæéSMÚ÷OîW–ÉBÕ9ø×rd–mD¡Ä(ÝPìAúqV}‡¨qÙe˜Ñn C(@NÇá¥'êÙúâ£×.»ê•$,µ9]ԮΟ“ïóëëZlZæfÎ+ŠØýå#?…mÅÒ§ž[œœ<•xpåkÞ„êM¾j‘&xSh‡øj̳õjË7ÃiR·Àe†’\u~ÞTçhùV*‘ÑÝ?Ór\LkƒÒf6OÜkö@Ÿ’95ÐZNY,PPÍ’Ï UŒ©´ êú¨ò:¬1x§hÓ‹9ªXX6¡&Éö—“*L`ó­–¹ =è§ŽÊùÑ]¼ÎË>âéÁ¨•‘°Õ’„g!Ãÿ÷[¤ î@à€ri|¥ZÛ)Ÿ8ñЦ÷TV”¬€0sÀ­ÔÝàŒ X™ÛIL&É'„ñǪÝ1dzœqÈäW–—íÉ;Ž@äf‹w w>l|Õ€Š3Ô›…²ß¨5Ó•k±]ÿVËX›µå¨¸”4˜Wõ“¹Iî}³OWÞ¢I‚½KmÔv– ?g¶¢äUY}´½ÃnJ……'olƒÅ7½Ó‹Ü®›ë+#r­É•~Ô)ºERœXBÇVÕ¹ Ã*à9÷Â]¡ß¾j-S>d¦[·^lMÛØIu·µ«yIÀÜçœzW6ò•L݆ŸÝ…;v¯¿àZµ5Àß­–›å™¸+»0·¡©™^6 R›s(N´ç# óϦû7Q&IÑÌji6ãÇš¦#ÀlÌäHq{'n€¬ùŽN8ô§–4^¥“³^¯’-‰Mš;ˆ`DRÔ_qÄ‘°mÊ7}ãÍ1@éÅÙ}+´iy.ÁTû[è’ÚÔ’äu­„¨ A ñëëëºò{Ú‘'Òº™wi×k\¸ñã϶8Ú]Ly3N!ÄîBÒ­©<ò0GôÍW=¥îC¹M‚óߪSowÃLÕ- iÍɤ€Ú¶ò@È'×Ö¥Ú'M½Hve–ÉlRÊp‹j·žT|4vÉÇdÔYè Íçú~ˆOÀHÔ1 5ÅZdžXÎòæpxÆ~qT¨ÛŽ…­$“^´b§õEéQ6Çp²C‰pýTnqvLS­”…l(pøi)PQ•º¶’Ú“Šz„ððÊ{S}ÛjBˆ#µh¢²ÊÂ*Jë2(~¬[Ùð\uÍ¡#9ÉÀ#ÔW]íLÅ:‹IJ„,‚;¤ÿÚ»¨í2üWRF1œ×!õM‹{w"Ûj@ÂŽPÊ•'œ(\úRzFêIèÙ®#i[Ë´Á.6Ú³»wf«$ü=©DÂ’¬““ê~}©2sœþ5–;*{Ö,>†^UP.Þ©uôŸjì’Ïæ?>+±ôÜÅJ‰xJ–Ëa‚x*ÆOoõÅpµ×ã]£É†¥%Р¦Ïc»¾+®úg©ÄËL Œd¼ÿŠ Ž‚™iIÏÐžØø®F:žJªkfuðSâPÉÎ%ÍRRPè !Ð Iõîǧ"œ–âPÆæÅ(…y½*1m}d;[+J ǘ÷àqOJy)K™AS‰O ÎHWö¾žÿ¨Ë@šÔuƒ(!ä©K@'¶}…;¯.4WIÁ*ËàÔ.DÂá@7€µ…qßÛçéO‘día»Ÿ¾SÇp;S ò)(µ¨à¤+‘» …$ò3ŽN;f” •%!^SŽÁ@î¬xócõÅ5;0N榜k*RÆÐ‘æÜ=>+ȆÙHRAãžr>Mlu-¥%nÞ˜é¾Ae*ËM•‚œ}ãZ#'ÈºÔØãÑ w¸ÀÎýªÞõŠ&GR@eŸ.NqíîkJvç†Äóº°+G*ØœçƒÀÍD™tfBKêJRÇzõ´¡-Ø“éé^‡Ôp<ÇœúVÄáŸLšÍ23޲ÛiNHãÚ‘j{ˆð‘;”H׿çÞ’»tGˆ —0ÚJGbxäóíQ¸sEÁó&Få6‰ldƒžG"³T©¦TLawwÈÛs’ˆPœ8Øáܵ‚?ô®Eý#îÎMê PPêÌxèRƒ•«$ƒø`þ"º+YêÐb¿&D¥3´\X ŽcñÛS\ct¸®é~™vxï\© pƒÇð?ÇáLÀC=W>Kù#,”ÔyËø&:E˜2­¯Ç}aµ’ŒöW‚}xÏÍ*±¹n‹Sø2c¨–R±É ÛÎ}qƒùša°-Å5M,î[Ÿg)ǺOãŒTïJZ­÷™©DæT•Çå2­«I<Ç|V¨Ú2•ûneÇUjœoîØ°ô–›jdT‚TE?§F¾ÄŒ‚ ƒK´ ³srR0— Pàdw«v%—ípÀYNà;צÃÊ–.š”ã±å%&¥dî@4Æžf+èP@ïÍZp¡%1RR¤0-m´TÙ(v8© ¤¤´¦W÷½kšŒUƒ»³í©NZ8?¢½†vmIýÓÍ̪›‘Ñ¥+"#Óô¢O¢0  °æ}ÿ¬UGäG\i Œ³Œ)çNª.•„èå*ß‘ŸøÅSÆ¡„ÔÈâTp ÁÎ9ù®5—Àåß4æ†Ý6öP¶{)Â)}Ä’xø¨û©§¼@)àŒ÷§¦Þ)$䑃Í4¡6aYµ¤÷òúSUÄä!òšSj} ‚¶óØR9O!‡w¤(ŒƒžAÇð9¬Tâã6n«%(# kB#ìøô¤ñQâ­ ©[sߊÁŇe~Óî'Þ†ä6»€e—§P7)°¡¸$ž=¾kRVFVîÅ4ä2zßÀÃAk*=«%¶´¬,¤ŽExRXã¤9fZŽK+Ð+ Ilgulû2 ¥,î¯Q¸7°GlÖKmi„Ê5Fù K˜‘YàÒ¼¥mŒR(râÉmiaö¤m% -¬(;ŒZQy€B¶úf¦Z¢±£ÁZÙ=CÊ;Ö¨áHÚœzÖ©o…8@?•Fò5¹Z´•+Ò´çrʈ¯^Äãæ·Ä`¬ó÷E?H«³>²vFû{=ÜWá[ÝVåcÐw¯°Äp+ăžæ³»·viJÊÈØ•š*=éO޲µv­³I+ ÅhyA†O"­e~l¬Ý¹!®ñ1»x.)a)¤Õmªº³¦¡´â\¹³â à¶Ùúf›:÷¼x¶Y‡CÇ+‘%Í¡¤ûêO5ÌêÓ/´©’ï¦<Ð|Æ4b¢P< €sXñXþ”VäPÃ*×r•‘3êVpmØÖDKÚx\Á|gŠ¡.ÓŸxå÷Ã;•“€NŽü÷'Þ¬‹œ;+p¶\%"|$º’¢HŸð¼OÓ 3%ØT×Ö[ujRÔžsœœùͳ®óIZ1¡Ad§{½ÙR¶‹«%?ÙÏuíX œ~ím“%Éø‹;q©OaZR¢„(ûŠÒ¯mLóµô°|)L>Gïãñ«¿¦Wg¼¢Î@ð]t?Yò炤ýxÏþ•Vêël+eÅ›ZV ò-ì—T¥d‡Š”žOžÞ˜«Eˆj¸è{UÕµ”;á´Tâ@Ü•§Œãçük™•áÉúGo¢bœ§~®_v{Ë)uå­Ð¶øJAãÞÞÙõ©#RÛVw'j U´ßhÁÜ~=+ž´–£uI\I ð%íx+¶3œƒíM[ºrúĈÏÄZÒâŽINAQH''ñàñ\ØÏ+Ê͵°í+¢b·û9[Û|@7£•ëôãùÖ6’RBYd¬ç'q88>™ô¦¶n-)…H>d «*ããßéñMÎb%â8j>^q{|$¯ +ÆFï| ~ulöi£&KèË6CËKÈpá¦i ¬’ŸSÇÏàÜê!8=ñéõ¨žïâºÒšN[˘åH×ð<ÓÛo#xÈ*y„$àg?>Õ®:êŒí[F,uǤ«+=Åhb0t‚§•ŽHÏ5µ—ѱº´¯jÊJGt‘Ç>õ¾*Úh ¹…gÌ0Gµ>©é¡Šboó¥;гøãùM"*ZR„§¹9'š[ÀB––Ôwɽ'}ckj ”úp{¯ÅYØœÍ1³†Þp$þÍ'p<xÿCæ´È¹%¦}KF[É Qî+uÙôÆaÙ-ÈJä“ßÓÓéQk¼ïm©M-•+—Á§!Cß·ñ¬u^Q«¬7jë«¿©Ô¶Õ—TæÖO‹œÿÏùÖ¶f¥¸>GGŠ”à `déèxÅC/w.7VŽ„©¶Nõ­ûùþŸÆ‘ëL»D3.OSHC ¶9Vâì09>•Ï“nZ#KDŠÓô‹Õqãé¸ÉB\} vVÕy‘…$þ@Õ.ÇÜòžAɬ®ÓäÝ.’.SV~C…kPíŸað+Ô6´FSÛxHÇÿJôXz …%Sƒˆ¯ÇªåÉmà=ÚV¡fy¦É;ÜmH)î¤ò>@?ƧZTEûS(œÿÙ¤?y?¶ >‡[EVØÙo%%Yq?ÙHç#ùVk*¸Ea)p…ë Üžß½íõªºiO0Ê–­G†ýz¹ÛúJìÓq˜t¤- …$ä‘GÖñ\¿±`¶¼™7[-Þ ~«YwàI"¸¿Né­c," ¿¢e•®_L$“ŸŠé®„X,úVØaÛÝ%¾wK˜¯¼ò½ÂGµ=cêM¨Rwð8œÃß;×°¿Zi©QR¶Ô€sžæ’Ÿ‡r RSßæ·ZÂVØR È—¸¤myñÁ®ìe(«HË“2¹©‰ˆQ äñŲÉjm· …dƒØ+5ZÐŒ¬‘ª•Ê7lƒh&öixm9÷ráçÔxЧ’UYFPµhØEîŸ[$#Ì´‡ ×öŠ¥)Väù»ŽüÖÊSS‰†PpHA2yaN0Bƒ”ÓLfç7,DCj;½»T‰L$€´ùqëNš^[…÷FìsV©5¹0„䢊«£v;díWª—r²¿.àÆ¥’#ÜÄj9Cm­ «#VHêõ––ÔWK&‰´µkƒeDˆµ‘eyB:ÒÉÜ^ËÛ7•gzR¢Ü€RÎE­¡ô¿ôezbwÚ¿\^^ºàìð|D¡>s»>÷ÏjŽÆé‡ƒnµÄ7ÌýƒU/Pîû'õ›‹‡ÁûüY÷ùí÷y®Dª9;›#†”"¬µ×ùC×[Ý­,êËTè¶É׋MÊ /4ÊÙeó1(-•§rˆØs…sLæ¼ÑÖˤ.»ê.raÌy6(ªK±ØS)R ®wIZ°s‘÷§Ò¤·¾™1vŸ«e=xu¥ß¤A•M2 ½ J $/% àÁ#æœt¾ŸoÖsõ]Úú‹”é°›†´5ìí!-¨©%#z©ÎIäú(Ud¹“ìòsM®~ZþÝÚõ¨çëùš_N=oˆmЗ!ù¬-зR‚ JÓ„á*É<àZC§µôëÜþŸ)¨ŒGcPǸ™Íœ©M»jp…{oÝèr1RÝO¢æ?©ßÔúzö-W “Pv }§•!a;’C‰ÜprF Ó+8n,-*Õ‚î¨s4Èy =&?Úú_=â$)¨Ù`ûö¦ñ•ÅÊ•Hɯ[¯¥Èn¨Ôú¢ífeQ®L[”ÏPÅ”˜>fQ ÷y†{y‡eŽ*{ÔFîѺE¨Ö‹Š?X1fâå! ”´¢¢”îò’äàyÆ)­}0_êZãê Á¨“¨[–ô@ $…%D)CrJ‚<=2g—ë÷ sÓ²f¶‰{ÐÜ”†0”©ÆÊ ÃeYÀÎvîüj®n+^e©Ñœ¯~³éû—XˆÓz2ÁúŠ$·tãW‰“\·¾¶¶ÒHZw+ îYWaÛ&”·Ô}Ipµé–mpmq¯K¤ËD°øZØeæ7eÄà…)8FàœŒçêOý•U’çd¾ˆW[m6‡zŒÌ–Ò ›Þ’À…q’Eh·ôÎ,¥{»ª6)ò'¾ãÌ….k¯%{É €žVOcÀæ’äÞã#J¤t^¶ü“˜H}0˜DŶ섶òÛFÔ©xó2p Ï5¦t â ›áXïK~†Dfâî’‚’³cGÚIy\JX #hMl”ØKÁ^õà­.yµ3Ft=JvŠÚÈÆV®Õ­ +PÒ•:)™>C¢¹³°· “ÏÔrÝâ¹{NÑîj@¥“Jê%¥SZ2ÉÆÑ2ÔwÕ=µýÏ]ë­a$9\‡‘“öv’ †0@ö<}i².Õ‰l»q¶>ÓAa8ÝÁ'ñ®ë F´â_¼Çm¶d~Ñ@—rG”ŸsTÍòú‹öyøJRd2âV¦Ö¬-$oQô®5IÎíMXèaj·—$tØoÕöin†£·f|Éw!'+Q$wô¨3Újóâa§ÎNÐ<ŸƒW%ÕqË–ìÆZia/6âÝ ÚHÎFO±ªÏPjuí¶%Iݽîã$‘ø­6Œ§šû¯2Ë*ÍEÇb+‚ä¶b¯ SŽ%ÏlœrkÉQœjCŒã[Qú]§/‘ÈR›l—]$œàsÉù8o½6|W$8p\<$zãÖ›Û}Á'ØÑy”åÞîô§7;5×P€Ó e*! qùp=k¡z 3ú|ê[kÅØ¢6w%¼ä?x {W>Û.&Ý5¹m6‘"0C­¨~ê’ ¡üÖºôj’㨻¬µàfŒ@ÆÄ¸7=¾{W?Ö§gÊßc§ÑíÆnHd×ÚjL)Iz:Ñ”(-§32p}é«Oê),ø^VBJiKÚR¬…“ߟÊè­Qd‹&#¥–ßR ”ã `ï§ü@öâ¨mq¢Wh–e°è*O)RFJÒqÀçßø×&*ÝY|A ÜN²ß™7´k•ñ¼D«…yQŒö=óéØ`jMöæä#([{Ùˉڳ• ˆ=óéÏ5EÛ „,¡â*tà ÇáR]™ ø»›dìX+ó,wôÏÍ.I§dÉ–ÕhXÌ]d¸C‹iÉ)R€HÇÉ$‘ùT¦Õ¬ZŒÚyÓÄå§@G§—Ÿ1ÂH8õÍRÓ®JZTc‰ ©h@n:ŽÕgƒ’£û½±ë[g\Q(Åjj2äpTÒ7©`zŒóߟ­Z%3ÂFEÿmÕpÒC‰~¸B–p+zIÀ'Ø÷ç⤺%N6c¾Ó­(¼«žÙ>¼GÅrãÖÈÒÚS±$OKÅd-²6ì à©@3Šw¶Á¾ÓѵÒÊR Œ4U´¥8Nùþtèⲫ12èôõLé(÷XªR’âÐÚJJ‰žÿáZß½AФ“! Q÷Ýc#àòEs«‚øÓ súE!‡VCÍ´ö·8ø&š.—=E!öa¢BŒ åvQÁ!XìqœU–1²Gw–Ö¯Ö±æ¿%¨ÏöV›YÜxÞJ»Ÿs´þu^ê}i.å0Á·(¾–ò£œÉû`T0E»Ë¹¦*¥‰#±’¶Õ“¹GÔŽ2¯Îœ-öw#<©.ÉXe¼’qG'rVGÔÒgUnÙ¦ž.B¸2LVK]7IÇ—•ØsÆ}xâ¼vÖYµÉ»\·'†)IÂAPÆýÐ~¹Ïém¶&B¶2ØnûéVxWsë‚r{|Òý|ÃÍé9ëHQeQ =Ò'…Ô¼’\Íq´YÊW(Â=Ál©%IÝ\ŸåNZ…"8S © )³‘€Ú}~ Wãšu×v—”Ô Ó <¨×ÿÙÖ£’¢È#Ødô¦?ɹ´¥—9û©á?Èõ”ªªR<}Z\:’‡kÓÁž´–ši˜›†÷ˆRÈ?wžãßò§TXä}‘™hCûâàIÁàöø¬dZ$8( ]ý³‹GNp3íÀþUc@·É”ÄYl¾ã;R’;¥D ¯b@=¹¬¸ŒFDœMøL*“j¢Ûb/£Xš™Àþ¯jhPáRÞá÷T9üë¨zRËÏ6•:ÚBÆ20Óâ©X¯:™hLhÊŒ‡奷Ò£ê}+¡:>…8ÛA(ÊOsŠßÑ ‹.&ÇŸé—ûÙ-±kØB¶$g§ƒƒ„Òf ©¤xŒNÕ°;•ŽA®ÔÚ›º9±N ̰–Rµ2 ¦R®ÜQ\·¹Ô[Ž•] ¹¢­Ñ ˜ZC€‚ãN¨;¥öG÷ÅW*·?*ÏoY*B2¼ÿ}Ur¦:LPÒÈVo“Tk™Í¢ž"Ÿ"•nA#?AéRm:öxúâš.ö·#¬ºÈÊ äJQ¦f$f:Ô³À4ÊíT¥x• :¶‘œ­[§Ú³7unë ÈN;à!ä¸6)ÍþÀ}÷¸÷¦‡µ¥³õÂm*½[›¸¨€˜Š’€é'°Ûœä÷ÅTâ+­õýP¡%õÍH6Ž*l) ˜'þ¯Ò™ç'¦×Ý&âHÕò5Ž0Áløîº©IR$$w(ÁÞ8ñJ§Æ7µÅÕÅTm­¬_Õðv⇧ǪÐöÁÇnçŠqéËQÿö³auøì¼[ÐP”ÙZŠ y\cóóQVœe²³-K5+2í‹©4ô»Ã–h—Ël‹‹{‚â·% u%?xƒœQéÆ{ÓBµ5ŽCÓ¿RÞm· RÝf<”8¤c#“œdõwX٤ͷ ®‡Ð—¸Ú’Ïqµ\¤Ã[)û<•¤!Ç‚ÖáÛ» Nøè˜P'ÀӳƬ·¹>Ï`v"­ A He iM¿••…$w''Ö³Sv•‡N¼¤´^¾£Ì.«-vMàf×íª§1)õ%ˆÈJTrp ŽH Hã“VºîQcʃo*; ©Qeüº¤$ìÏ$sôª'§ƒ tü þu=ëÃè²ÚlZÍAA:~îËï©#$Gtú8áU“ÌËP©(Órok ¿ä”HÕº}®R¼CSV·Ôõ‡F#-#Ì•ŸÝ#æ¡òú™m…U\§H„`XVI‹1.ºòö[R8ؽéR@'œUUÛ&Ê×¥ä!AÍvÌ)Ó@I#ÅCë~`ÏËjH$ûS¶³mÉ®,ÇiÇ\TxP„•ˆ‰ôå«AÄÎJûMý‰íÇ©ö¸—í.Ó3àMå¹jzc¯„†TÊ! öÉ+Æ>˜ïVŠío½[Z¸ZæÇ›Ñ”<ÃhWÐŽ*Ÿ›:ÕyêgJæ[åEžÂb\Ê]iai ÙìG¨ÏáOý!¸:Å#ÊÛzºæ”¤vHñØU&®‡P«.&Vî¿—?ªtÓ×±dfÿkr椉”‚èZ~òvç;‡r;NIÉ8š 5V¦ºj‹ÅírØŒô-q£gf)ñb2™>^yy$oÜ9ÂRw€3ÍtS ÇÍʆRŸO°ñ µœdúÒg%-`€1KŽæ‘<ÀVT8ªÁ¦õ4M4´ Éõ¤³cdž)r”ùHí[_@-Sóåbc ”V-¶“l’ýí1¾ÀÚ ž/ýÀŸšâ­SrÓꧦ\q¨*YÜ?³<þîAV ÷®ú꾓‡ª´ì«<òøŒøü%íQÚB‡>Ùª†s¤šbƵ6d-}¼IÄ?NJʼnNsÒ-ßäZ…U‡“•Ît»ZÚ–â·‡ß+8KiA;Õì)¶n’ÔÂ@mëÁ¥g0¤cþ×j¿õEž,{jãËe¶£#*#ilÞIUwÍz¦ž1áÈ]ÝIN"@RUÿXgÍõâ•U)<²6TŬF´â7GµEÓÖÒ—å7ö×› –sÃiÜ0ïÛ'ßôÇrÜéì¾¶œjÚ••¨`­#ïcÜüW¯´åÑçî ‚]yx'h+ç°qð§¤h‰6Ü‹óÿeŒ–Â’ÑXÞ{%^‰'ž=*TÔoõ~´#‡Ã´æDnF•!p¼dÅqÅC¼¨#w©Æ3ó] Ð+ÜIòa;W‹0Ân=Á• ) kʃò }}ÅRšâtY Œ!¶ËHe>im >¿Z›þŠéÕÁ¥”€äÙPìC‰ÇóÇãHÆÓ\,Ï‘«Qº©.g[‚Ò#ƒEkÀQÛžç×S¤¶4‚dÆe ÁOˆ´!° ¼žJIì=À÷ø©!±  ‚IGãZåÆ[Éu´:[_*o' ÉîÁ…r-tuã,¬®e‡qCI}·]p·¹XN2œŸ\vÁ?•{tÐY‚–Ø‘û- 1ÉNG¨ó늚rÖÞöRrò–½ð=RN*GbL/ºÒR¶ðIÏsî>qU…$ôcž*pÕ\í pŒ”Ém¿ „ ‰#ãœùÒ-.CI\¶e>ê”<H¹½y®ž0£È(%-FBGïŸõšÑ?HÙ&Ç[bC$á²@ç¾G¯­ÂKx²Ðé4½ôssÊ’r%ÁµA$î9Èõ9ã=«lIW$ ¨ÛKž8ðÀ_Ž1Î{ŸŒUÙuÑ¶ÇØ\ð°?!ÿ•GgiÅ1½KŽ”…a’O=¾ë4éÔ†èÓ U)­ ÅÈ÷§Zð^ #x+tJF23Æ8ö5‚ôóNÉ̉.º¢µ·«jNqÇ€ò©Ô»jØeiLrúW”¨-8ç$¨û}>)ÑÛSKLr’U€¢=¿ò÷¤9IlhUØŽ8Ëq_û4vZh8Gˆ¦¼¥*Îpµ“ëY±n*|;2;ëÝ’†[@R²?xœñœzÔ‘˜(,xˆÚóå( §Ë‘êOjrµÛ„s”!´ ¯§4½YWQ$7YíªC C­ÿðM}Â}3ê~kÍsk-h‹³Î ”·Î¶ÞÕ4´[_YíåÜ0 ¤ÝNe ÒS¡©)R^eHq%E ¤ðFG#jthÚ9™’Uúé#’t•ýK£fÀEÝÆîćàBu%AäùƒgºTœìGÒ¡ScHƒ|u/´¶žR²æäöÏÞù9©\Ó/Jk;­¾ëqû\¥UŸ2Ò…´ãÝ* ýMIæÛíW«•ÆYwˆï†ãsû2æR õ!'ùW^¥N¥Ò¼eªøØÈèÓ«Û³oÈѤ[l7!m$¡h]JS•Ÿlð F=½ê@ã ~2˜ˆúmïlÃ[ÜØãpÏ÷'ŸOjk[LÚâ–Z2I!+Ït÷£æ±‹v™dU¸çõEE ôq )'Ø‘ØúÒ+FQ†kjÇÓš«ZÐ’²û Q*T-BˆW††éP'$¥+W²UÛ$rc]]Ñu±ö&ÂFÞÝûŠæm@ë–xVä¶\iÀìÉiYó2¯t㑟lWKtͦâ´ÊwCi¼rk³ÑR”ZŒyžS¦$e;Yó.ø+BqXK€‡<í*‘ÛÀ,ƒž;ÓŒ²JÊŽß@k«+Á¶™•55fPqŸØ<œ{)ÁHB™ ÑI”ÔÆÆ*×+Τ3¢íêmwÄÇÿ¸ª–‰ï…~U\è;“ËÒpbEG?´Ê‡=ÜUMà%ƘËË V;WBTÖTäs(ÔvJ#’g)j 8€søÖ©Vd8àÁð–9Àõ¢Œ¥EçV”Çzq.<€|'öÁ¬Òr¦ïkŠEi² «$ ~¡~`’ä›Ì¤Ÿ´Ë.:–R‚’|¨É'éÏjyc¸ FÁêMsþœvõeÔ½[×þ¤v±> Ûï@Üâ]ó ÔU–ѳrJGpGT·Ìbà BWœ‚3“ž ØÌô¨9âÒƒMvùqú„ý)5Ìùô¦=-.áhéúgêIŒLz$EHyØÌ–Ò[JJ€ *<íüš¦lpºÝ¯:iɲ´Úâj Їú²!Y™n%{SŠ*![Ž3åÚ¢:OQÕq„{²öÇ{ñKÄT–†+ŸìÝUÕS4ìkzÙ·§V+U‹†TB*wiVxŽþ©×ª}X½è›¤‰,j#ujY~ÌÃ.M²TySÂè@÷©7¥„ÃMEÉì[é .S‘–Êä4q °V{;JZÔbÚ£ÅPso34ïYzÍ}€2àY">Èu;“¹1›###"¤HêV¢SÝ%ALjÖœ]ËöG‚”4¡áù¼¼¬÷Ï¥-Ô“/ ÔÓwíúظP„¡$$V°TIÕ¬z»zÓ²IÔ:Jûû² É·AaÀüVÔ£…x¾!IX9=‡¦¸SµµËô•ÔVø7ø ·Ô߆‡¢­m†T¤©) X+å~¸ì*{²ÒÅÂöŠÖö/&ßaÔ•4òHQI(P pG úViPÛÁÍsv…ê;Ñßµ[l–†¯7mRå¶3m6´Gñ–—–7éØ(zcRHÕš~N²Ó—¡i“y²ÙMÚ ¸¬­ <Ž mJ8!JƒÈ©JèªÆBɲétä§½dÙ*oo­RV¦k¨ô*îñìêµk&Ý,±·Ñv¥$²¬+;Á#hõ™.Ÿ£±yZ£©Þ:Ü>©IÂw¯gÒ¬ÝCÍ%ÏírǸÅÞ’•õ¾YPZQÙ’{UˆâêO½4Üc$‚)ÔªXmH\âÒYqöle’›RŽTôpWãŸec°Çןj©tÇM55Ô)ùl‹s)íö¤©%AŠú¨,ÉuEA'5 Ÿ¦ «ó$‘óYeGRvÓÄ![‡$r-×Aj´FŒ„HlÈO¾i½2êd˜óX—5Ð2–šQðÐ3ÝK5Ö’´“c>\SLÛ, ‚­£Ôf™S£ê%¹hô„¡ºLåk®»!EapÓžÈBÉÀúâ¤eZg¨qÖ¹Iy2S ÷ ägÐ*Þ¾Û¢!²®0{÷¨¡2G Èì'Ç2w„á[}F*Ez1Tey-‡`ñsž".ÜΡ±:]Œ„¬€´à œä¬Ò×™VóÏìñþ¹¦í€õ±øÃˆ<¯Â¤% -»§€¿Cñ^~1º=¥iCälpùÒ JˆçQßJñˆêŠÆ×KÈY#Z“Ç©‡ùóK~̤¸62¾;})TU­¡æ<‘ŽxÿB¯®¥\´<·Ét+nÉÈó'œü‘ÜSû¶Zòãpǯze’Ìw¦FÿE§Ê¡øŽõ“)+@l­ÕÆJ³Å5JÂ%õÉyJVÔg9É8•èîH> ýäÄ{qJ¡Ba¤ðÒJ}wçäÒðPÚœöÂ{QkîVöØ‹¹§Xqh[¬©d2ê¸ÏÂ}©$­% Å8•!½ªVJRÏÂ¥k <í]²kÀÐ|gߥº0|‡F´ã̉³¥ÛhlB@àû£Ò–F°²ÁÎç"¤)(Ýà+¡dç´ûžOáTT`¹¯7»”È@J‚Tyvæ¢zퟣ$•©Õ$'¾wߦ²¿d…%i?x«¹úÔy؉zJtžÝù¤×ãd2Œ¬ó3ú™¥®ús¨’”Óób\ÞrDi °Ú£Á ìB³ÇcH¤K• oïÄRò"ðv8xò‘ñ€Gå]ss³ÐÞˆHJŠNì}ÇÏz :«£ÛÓ2}¹8Ô{sH%¸í$…I{8Ïñü ? U¹$Ö¶²‰o'WkÝ®ÒÔ7æ²ÀSrRëƒr’ãdcØû{·Øå¡h+ignœJÙ õ ²êçÚ!¦T€ Œ¼àJ}{÷5vé¸öëŒd$ò H þ5èðô(NžI½O1_V5¶ek¥´|tÜÌÀ‡ÒꕹEG…¯ù×Bèh1â0Ùpå@Se²ÈÛo¥°ß‚*gµÅŽÒJÀ'µ¿„§…‹·3%JÕ+Ï4Øûïe*oîŠÅûÑdøm·Û½d܆Úo  \dŸk •4é)·™hZ¥WÕz’Û]Íð6«ØÑQ8¬ 8•mWÖŠ¤ði»Åصi)S„[±jqs–^ßìo»è›–¢Ð—m9®5"o-NB<7c[Ó°Rw¹Y;‚O'cÓ~‹±ê{6¼êÖï1cÁi¿Õ©ayÈ”°³¸€ì3œš°îŽá¨wô¦FV¤#=ë6u[5ׄTÕ·!NÑ7Çd±Ô ÿ…«­±¶„©¹(ò…nãp QÔ€=°Óléd—CßÒò¹ÚæÝÞûtéYA|JÞ *BU´§Ê]Žs’jëhxQÀíLw·IN2rNiTãÄ™5h 7vƽ-k–0l×û›W’ãJeÇQ0•¶S·nУŽ3Î}j1¤z¨tdxÖ»v¶T7å-˜-ˆSÉmJ*ðü}ý²O;síŽÕ1³=–Sîšw}!Æ Dã’c¡Ô‚|ÑR[:OY]ê nêSN8·‘mû?•- Úœß¿’|ÇîúüR·A™c¿Xcë7£Ù®×\ÓÛµ· ÿiÍÙZ”mä{æÖ§ð§HÊÞÐ5UµE)áéJé¯Or¨¸t鹚Ç[]¦Ý[¢pކv©„¥¤·¸/qÜ|¹û£ñ¦»Jî0¦i9^åÀig1oh@KI ”¤,’£„yóÙÛÎjÛº0R¿#Šm)^íÙ8­Œ&®"¥%j½^ÿÉP³ÑE±gfÂ^ñ´Å»&é ƒèPψ½Ùs˹#îãvNpN#h9¬õYíwjÔb™¨ó¡9;â¶‚“„¯pÙ3ƒŽj\ËAyVsŠÝD;´wÍVqV²&E§b¶ƒÑ(MôíÍ)#P<¹(¼*ï àÔP…G{¾B¥ÎyϦ+{$~TmQ2õ©Õr¾ê êõNCMÆg C!gÔ|Ü‘éÍYÅEë-üšF¨Ñìô¶±[EéIôñÓ}ãF¡hÇÙ?Ý›’Ú·û?¹ýîõ)Ñú~ãb›{~v§¸Þ›¸Í2cµ(ùa çöHäñϦÎ_{h5¥O94(·©*àôõ¥…{y­2JV“Ï4éÍ ¬qL×óLöXÏÅ3%µa*É &!¬¼SÉø­ç%5Wõw®ZG-QZ®,gìqÖ?gÿÌ_d}9?Íú³¯zúüêÑo}›Dup>V¬ŸÄb¨ñy}ÔèU­î£¨z¬lšfÜ©wYÌÄAÈ@Yó¬ÿu#“\ÏԸϛp,iv mchzB”¯žÉüsøUYp•>âë“®’äLyÃ÷YR–~¦§½ éâ5¦©¥"Û )~àòÞNp–ôÜxúYkâ¤ÕæÎž¡õ¼Ù–„éî²ê Õ»\e1lÜOÚIS§Ô6ùíõ«_NèxÖ›œT£ÆsÃ9S¸Vµzf®Iìlj ˜qC,¡;m¡ `=G^g2ÛtsÆáî+Ïâq5*;r;(S†±D¶ÈÒQ!# ÀÍ?´P7„­#¸?^ 1Ø <Ÿ2}qÞ¤m¤- åÇÇze=Pº›ˆÌe ’ÈÞŸìw‡¨­­¥¾’9È 8"”œoÌÞìzäÿmaÑÈqþ¦$-ɘ5c$!YÆ8·°ÖP¡’žáJò}x¥m¥²Õ+Üð>”¥ ³êêÿ ¾Qnb&””§O¹Mx®xPÈ>ƒÒœvFï‚çÆkb@I„¥[)Ææšu_q“ê®mp y@ü&—¥Œ«çšÖãXó)X˜¡¢3ÔØÆÔ$$c¶8­ J³¸ÒÇR””üšDòŠ•µ$äþB—&Y&nRü&À'cíóIÎ<¨ ã>çÞ”ÁY ³æ=Éÿ_Ω>±õÆ×¦þŸÑ®G»_)~`!q¡`{8çÀàzçµ-ÁÉšhSY(ÁjIú…®tÆ‚iµ_$©SŸATx, ºî=ý“ý¥qõ®Kê6´ºkÛâ®÷rPÓj)‹ ?ÔÆo=ýãŽêõ?•1j ÅÊç>MÒë%ùÓžXSÒ\;‰??àvÍ1çd¨pBAòóÇåZèaÔ5gQFž´„—â'ÀXR‰ó`üÓÿOµÞ Ð÷¾<5(xÑœ9m_Ocò)•*ã!8<‘þ_5‹å*!)HŒ…VÞVg+†…[¾ÞGcôç¬gR²ÒcMDi؉!A ϲIá‡?mÀÔ ¸‘Ü/Ôâ¾i)‡çˆÒ”ž`RjÆÐ]lÖZcÂb[é»ÛÛÀ ÊÉZG÷V<Ã|ŠÓKRž›£Îâ:.Pwß­Ë.ÇñwÅ!aEçŠsÇš¡tÇ^´µú"ûzí39f_'Ø,qùâ¬[&±Š–’´>Ì‚¡Ì¸—ÿi5¶úOIhÎ]J3ƒë"tàmµ’}¨¦H—Ö&((“Ͷ3Œ•ÓbQÓ[jÑ–µ}ï·§íOOZÚ„ÒÞmðžØ¨§M.2™Òp£”e‡íV —¢…wJ…s¤êS³oC¡AR« ¨®hÊœ·6$*²º$€ÒÆô­÷u„Nq”aÝ“HFÁ Q>§šé­QÏz;šY (?–*}¥žiP‚R0@Á¨>*Ï­K4ÂÞp}î@5Ÿ¯LÑ…•ª ïO<ëËKE×÷”ù@àÒ©IîTqO±P˜±€Ï8¤Týºj+sE?ܨäö2šî´Nj5p•:T®É:R‘“Î)›œvø+HªgXu³HXÛP›¨b—@Èf2¼eŸŒ' ~$U!«IçRÛ°ØÊŽN×f¸Oÿbΰñ£¼UÍQUj{¨ë¹ÚŠ:@XíïQËÆµµ­o!¦Ó÷–âÂR>¤× _ºÓÔK«ŠZo „ڇ܊€Øê9þ5 Ÿt½\Õ¾}ÊTÊʼWйüMQâ*r²Ž«?zG]kž¿é»A[q盓éÿ‚‹Êíž?,Õ®úã«õ1\[kŸª!,PÁ;Ô?¼çËZ7±P*#Ú”6ÛMà¯ÊAÓñ¤ÊNNíÜëaú"œ5—˜¶ûÅÇœñI󣜚V[JÔ$‘‘é[vá­Ê!'Ë„÷¯v„¤“Œ(ãƒÏÓéUnììÓ ¡$&˜µ—X@H)IR°;ñÛ?tèo.*íÚ–Ü ‘8-‰õSXPÆ> þ5ή%&[8l”¬(;ž3þ<ýµ"4¯U­2e:– ÎÌeG%΢~Í*´o“S×ÁÖ÷&²ùó`cà∉q²Þ6îÁ ÷§™l©R6Œ¥[TíŽÆ²b)(ŒÇÉtî̪vB[F[V×R7$í ŽGÏçš’´´¡ $œ߸¦e6!•'pyO=½9¶…)…6(8X ñèGÐÓ ²èRm=EÁͪGˆN6’”ƒžÝø¥¬¥$‚È ÷ǧÒêØ ’ ü” ­I)ãœUïb–R@XÁgÊ?×4¡*B”P àF)39q–¼-…çwï'ëZ|T¼·±”ŒvÎsÍZåw:ÿ‡Ê·;%=Íc ¬ŒœcëÚ°‚±â)*ÁÝÜžß•k¾\-–KjîW»”Kd$ —¥<–Óøg¹úTo¨[[ ÆäòBGjeÕ·û“³.ï¨îlÛ`§;TáË+û- rµ|Æ©~¥~“öˆeËwO-ª»JÚ@¹MAm„t6p¥ãÝX¹«V_õ­»»wÔWI7IÄ`ºòð†ÿº€8HøHÅJ¦ÙÒÃtuJiè¼ýz±eõ›¯·]âØtÊa°¨”¸µ+ý¦XöZ‡ÝIþÊjžq)`¶ÚÜPTP€6Ƶ¼àIHi°p~ñε$)jñ”KŠ=ñßäóZ!¡ÓŽJIÂ+×Ôг)õ™ ÊF0Fx÷5‚Ò·HÀî3ƒÆ})bˆCKÚ ’p'Þ“Èy t@ôOñLB*F)jÝÙ­ ²Ró©NÓ’ /­`擹cJ»þµBS¡;ÒR9pÉHDzf-¤)Õx¤Œî$d~Z›öŠtÜžX+zæ"YQX( P϶1éY9J9p§€N{Rå-¤êä(züR'ä(ò‚Aõ(úÔ¦ÞÂçNMÉÜFìfÂÆÓ’yÖp¤\mï"L)oÅu)RR  P’Œ©*Qì=³š w¤)@àc8< µÌrÃÆE£:ç|µ-¦5$Ape<}¡³±ì{ŸE~?QÎm)ÁÁííEBŠå¡Ê¯‚¥ŸÝõð:ÃMj óv(ÈnõrJAVe¬æ>™©3Z£R5 é ØqÛíŽBtªwZc’x¿ü=x‡'îŠñUëUr¶góÒr+ÑÚ—Ç«oyüÃ4»I3:«RCvùÿlsüè{Sj%ŒÿH.¹ÿž9þuC¥£ŸJ–œ…R³Ö½ÔŸÌº©'¥Ç—5v¤lAvþxçùÓtÍi|e¥-z†ä„•)SVúœÔ?Rê"”G vL׎Øð㤭ç”{¤sɪŸª±z‹Q¿¥Ö ½Ž$‚~Êܘ«eµã¾2å ŒúŒúWO†ÄW×3K¶ìÛ…ÂU®ï{"y«ºß:1SÛÕÊàðãz¥8Ç*ÿ\ÕM©už©Ô®•ÝoS¤#ѵ<­‰ÀgÂ÷äŸZÍ vó¯AG KK·ÚÎþ nc‡|Î/ñ5êAO9Vk#»¥.vÕsfÒÅáû\Æ­²\SLL[ º´ýä¥xÚHõñOm›â0\ì¿Î½BÖõèkÀ2}½«ßLŠ­Ë«ö™ž$nyÃøšÉ/;»—\?õ«ú‘éÆ+$ƒÅ5 ºrí3Sï)D\?Uš«Á×>y5¥Dcô¬À~POMîfãï…‡W”`§Ì‡ñ¯VóޤeÕ”‘ßqæ°só^pÙ ò…sÿ$ÐJœ—2úé§PïËz`ʾÜÎ*V“)yu À óèçS4_/[ÍËvûRÿιÇEXµF ¾´}ºá>çJS¢·@!%X†T‘øŠ´ÞÔ£J¦;GÒ7‹2Þòµ1PÔÚ>¹HõÚ àcpTœéj»;N/ W6jný×&Ò/·½¤›ÝÉ'ßíKíù֨׫»i)zñt$e\J_#ß½F°Òò@ ß"y†k¹¼}r)SW­;".åÞmdC%žø¥µ¡m()¾Ý8൹žßZ¤¤uuM©_c²‡¢y}ÍŸÁ9¦+ŸT5lÝéŠôkrãììÀÊVOåŠ|:7=ôñcc€ÅÉÙéñû#R_oÅ‘¨®l6ÉrzГù«¼õª5¥N¤êë¬ç±áC”âÆåñ®p¸M™qŸL“1dåEç®N¢´ß×ò­ôº&ÚԨ߆†Ú}g×›~íûô…×›²Î¸@A<<ôÇp}vƒø­õ£Ô:šh™¨¯·+¬÷.JÜ)øNOéMeKÇ•8ÕUá9Zãg·á]JT)ÒVŠú*4£GÜ^¼OKÎýÐâÉ퀣ƒõ¬¼i*FÒó¥¸Þqǽ`®Þ€Ð²Ÿ\žôáªRÞæÅK‘»;˜²£Zœèìê‡o1âµùÖ¢ïñY% AûÀŸ‘Sku'-Ù‰%ÕeO81î£Y¤”ÉZÁg5"…¢µTþŸ\uä;Ný9l’"Ì™ö†‡†é-€Ÿ «yåæù #Í߃ˆ©%\äš›1nvÙÜP©oäuÁÏöÍjvKêR²òÉWÍÞµ$äŒcòíAõõ5)X¤ªÊKsÒã«P+qdš7+$îVO®Mx@à•`~uêöç9ûT•»Ý°ñï÷«ÏÃÿáœ×ƒ9Çñ¯B;îV>H©¹VÙ¥õ¨ŽV¢>M›é@+𢬙IE·¹Õºg‹$p8lÿÚ4ê”r£„Óf˜õ3 Wnÿò4¹N2;'ØW‚©w6xvl/2ß NãSn†&õ$6Ù2ëÍ…z¬ ÄdŸÂ <߯–Ùn×â%æÐãh›eM‡P°AJ’  ‚GñŠvÂhÎ[&2…E ‘”¶L{µEwUuF¹Ïšã³îKñ·¼¢”€U”“„á ¤qÀ©t;eŽý¨õ^–gNF·~©aÅÛæ4úÔê”ÑØ¯qÁ $Ÿ^j zÕfuѫųKF°]Ú˜&*[wÈCŽ ’<"”„‚£“Éöõ4ºïÔƒÑ.Ï[ô¼ MÆðÑb}Å–îä+ïøm”€Ù>ù5Ó§: ˉ%+¿«l´í6B¥%|Í=~hv}};£4uÁÍ=ï&ý :û²Z<&B“€ÞÒ0¬)8>àçÓ­E§"_ºÇ¨äÍŽ%µlµ5!1”ï„—œÙäJ•‘„ðrr¿V[µÄˆúZŸ¸ix¦ín—m’˜¶K9Ú∜úe<>iS½H¾/XÉÕª ©Sa&ë{¯µ%°…m$‘‘ÁÆqÍh…l2‚‹µ´ÒÝÜþ##Z†TžÚinîÇ^Úí¨ÒVKÂcZm—§][| É}´ýò…Œ-X(ÏÞò)~•! Ö‹Wa-’6ª%ë,•7ú£F1§¶ä­I¸®RœƒÌ”€Пšx‰©dÀÑ·}&‹Rbìâ\³+agiOû;{îë'”qz%•­;mà„*U\¹Y¯/Y‹Ñö[=êݧOê×­¾$묋’ZÜ“»VܤG›¿1íg¶NÒ·&¬Vû=÷UÄš¤9á!I„œ6”¨dùÎ3‘žF'j¦¯LBF¨ÑëôØQÓ™ÿ¬WJi'Ê€•n9$äÜö­sSDÓS!OgCC™u‚VcÎ7W *Ü9ka VÞã {ÖŽ6ÔVµ¼ùwoóêÐέkzîßæJ4E²ÏMÞ›·Ùmõ›?T\_[imFBN9'¸äúwêî­›§§J†ÜD@¹8ó¡Q°Hˆˆ)Y'Ê3íVŒM×~F¢¸è¨—kú%¹)¹âèät¥Å•ê‚T±ŒŒÎj—Öýdþ‘éÝ_cºi ,»öì&¢ó·ÅJJf€A8Â0ဵä٧СFºŽÚyøš0´)×qîõ©;ýÙEéš“QNeÊßeqØž7œ…©`\ãËôYµýÙWSzëÙ¯dJÔ&"cï71å-%ÂÒ•¼ ààñì*Ѿ¢^ú]­YÔöFØya¥G“òvHeX%ŽAÊRAô pFAšé®±èý-ÔÛn¸ÒÝ)M©èÿi2c&üã‰]AO”©¼4”’H'Û]ukXîd˲'=3Ðz#\õ3SÂcEÆgБ$4ˆŸoPUÖB\R[\‡TFÜøj'$dÖΰôþÆ4¦…Ô–#h‡ªfÜĶ—³ÜĦß%K-íðÜYNä·ÉIãÄ9^è.®ÜôwQ¯úª-¢$È:rqµIp”:ËË+(ÞAÆì{ñÍ{¨ÚVÁ¬l:£@té­;.Õ,ÈX‘yzp’ K~d¤ `ž@'žô]X2ÊåÜçKm—¾’ké:«¦úsFÞôí´Ï€l÷Oôìi×6>€êñØnû‰Ö\ºÛžýúmŒÓèUøºÄfö¸×2 ­a_x©D’¬òjpý! “­ÑféÌk`Ö–Ùî®~¶qçW!Ä)x#8|0‘’¿¼00Ië §Gmû¢›Ÿ*ÆÛ©´Ýº8Á޵µÅ4BÊr €;GênˆË.g@ËèŸO­·éå¦l°ìÂÊÞ©“yB'ço»\mÛÆ9¹‡ ÖX޵é›%êS ȸ¥‰ ,å'œƒƒÈâ¥:ìzc\ˆ÷-uÒÈ—JÔDÅUÎ=å輪[(IÉÉ<…øà*¾éާþ…ëë6«ûÛ²Jd}›Åð¼\åݵXúàÕ[EãYÜê †éUÂóÕ)#§ñÄmЖÄÄNxJ’R•­iZÀI(Ú@ÂO¿5¾ôóI뮓t»VÙôü=-qÔš‰6i@ZË^}ÀZ˜23ßqœ †ÚzômÚ“¨÷¯è wúoL–¿Xãì9JÓœø_´ûùÆÚšë ÑÑ#Óûu¡Peé‹À»Æ» {ŠÜ>´ g—áÎã÷;sÀÚ§¡uÂÐ0Ô½cÔÝ¡£ÛµÛ7Á¾5%ÕLûBRÑ+^UµI˧ŒåíÈÛ´ií¥¿F['Q/Z& úôÍÖM½M¾úÛiÒ§VœÛÊö%²?½ŸAM“?H›ÛUÚt¶×®.ð)wÆî.-;RíÇ#VŒÇîŒçœÂ§uGí·ô£õBaÜ•;õ—Û3¿*pìð¶qýg}Þ¨º ³æ_š/¤ZKO鮟³yÑÖ[ÛŠ!—¨.×Âc9 +m*m, º’Bwà”‚N;ò1ËýK²BÓ}A¿X­ÒÓ2 9Î5ô¬+Äh!ÈàùHíS–º½f¼hK–êOXÕ#O´cZæµur ­3€kÚ•€éÂG®Id·õ Ñ@j½%@ÙÀ¾NûLI‹qN=mlRÊ T°0•æQ;³C³- éêYÿÿ$©=j»Œ‡N>BO§ûLjÙÓ{”ÍQúõ.¥•"kVylÉ€ä· Šed á ™ö}»œi{÷l^qáãýîüR_Õ˜Ó:p¾žè½IéÙ2„¹ÉÌ‘-iÁN('Ê RqÜO=ó è/>ÇC·Ñ] §¯6mÒV7­R¬…뮣—yC3šwá¶] Ø 0‚Ÿ0É8Vk=¤4VýïzÒë¥àj½‡S; ‚óªC2RÛ@9±YRå(y8É#5¼õ‹OjëU¤u¦Qµ-â×0™¹5xzq¤ò⓸䓡É8ÆjiÓ­a ­_¢=âÕ©"[ï/.ÿã :/?d’ê ™Ú¡Œ¹µ8'!<„žjt{ýÅ«,-!¢ôΜý&:oÒ¶´ZajM="jà¡eIeϳ’vçZF;d€IÓ:[MèM{՛曋©®njÙVø庴Çe>9 Z’‚ ‰Ê½}ŒsQHÿ¤%ÌužÓÔZr3‘,ðo·Ù£Ê-6Ë% H!B²|Ù'o8ŒSmƒ¬Éfשôî¥Ñìê /¨.®]UoTõÇv+Ê^ï#éIã„çËÎ=2r]’w.(=<é¬N®tÖê½3:w¨V7ýY!Å8ˆ’¼&žIIÎFw¡g“Øv¯5¶€²hˆjYk[._¦êÇmV·ÜÉ[1XW™iôólRsÞƒ<Þ£_:‘Õ]-2+ÚHFÓ©i6hóg–bEC$,%o,r¥lJsœ$bž¿LN£ÁÖº†Åh³Ïƒ2=ž3·¯tG&¼A{ÂWï¤mWÉù¨v³-Ù’f¿ÑŸ§­K¥õ~°¸Úc_ß±²†íÖÙSxÏHX's«*@ H ਓì*~î‡é­»«=6~Vž°·TFrêÈÄäÊf݉-© JÕ÷– ž8õ&¨Þ’u*N„‹{´K²DÔ:~ýG¹Û$:¦|D§ 8J”3ƒÜàÓ¨õ>7ÛU×Dh㥷:®ŽÌSŽ¥IR R‚ví)ì;ò{T&¬ZpžvËcPôÞˤºw­ÄûT7o3µˆÓú}׉%–’­åÔŒö(QN}hÊè·Oí·ù ã¦l°ìÂÊÞ¨“yB'ço»¸#×vùq’ P_¤'\$õaÛ?Ùôò4ëź÷†ÜϼòöÚ0@@ƒÜó[µX´ÎºD{–»élKƤf"c*çòôFÞ ûª[(IÉÉ<…øà*ÝQmTi2ZåCé?ÑwGõã¢`ß/’g̶,=!HijSò0êÂ~ùB#íHíçÏ8(ƒÒ­¬/ÔV›(–KÄ]¿2ÞCEØí…¨+žÅah㪾õDÝ:§zRlIe6kŠç~²7xÛ•![<-ƒoû£¾ã÷{sų¢ºˆÖý®–;†¦Ó¦Ïˆ´X"Û§}¦tc)'Å Qá…“Ïïnñ‘X‰fZól@æ•Ò=Gè…êñ£´ä}ê±LFV¼ÃðC #<ã vÏìÉ©î·èÞ€»u§?Ñ ,f­½ÍµßZÚê₵%ÎN2twçpíT?èïÖwºI"òU§¨"\ÃQÕ3ÀðÜeJR†¼Ÿ1ô‡®ôÑëgê[V¥²ªçtƒÕ ´,¥²NFâ´¤ãG5IØzžmÔ=(6ð½\Q;õÛ6–vª9Ùál;¿Üý÷½ÛŽd7¯Òðõó@^ì–&m³4txÒ¼tMB›CjÜ„xã=ø©Ìˆp’dϬ=>ÒJ飼-§ô† ±Ý6ÛX·Þ[’¹Ð·¡q!ÕùÀQQÏ›ÉØdÒ®¶è- lÖºc§ºwGC‰?Y¢ ܺ—×›zK¨B¼ó´d!eDäÿ©®£kM ª£Î“hé{v Ôçüw§·{uô%e[—±’„¥!G<@ŽÂœzÁÖ9ÚïXé­Qo³~¡›§£2Ôb%ý£.4áq.}ÄãœqƒÛ½  P•‘{kN’h6¡ë],擱iøÖ{j]Ó÷¯×h\ÙrÖåZ.•y•Æ1ÛÓi´ [½Dꦑ×ky¼ô¢0Õ“bøNÝcÞŸmèob^û8N7'ÊpVAÚ3žs×Zî¥ÐÚWM±£íVw¬,)—n‡íf’Ü®2Fã’¬¨’1œTI®E¡%ª ¹R~æsSX­A\ã?ZØãÓ“AJ½ª·CYå®·;Ä+k@—eHm„9*Z‚Gñ4UõútÚF®êœ}M)ÿEÓ˲8r@²@ãœ9úz)±ØËSGbO§TUfŽ‘Ønÿò4ä; í+‡.ƒ»¾/ÉÃý'þü¿'+šñ'WiQUý ÿO/ɤߗäâÓê=(qs]¥E¡éåùÒïËòpúN5± T­Ç°®Ü¢¯ú/ýù~Côûòüœ\ʶðMmqYPµÙ”U@Ý߉åù'ôŸûòüœdÙÚ³Z&/ƒž1]©E  ¬ïÄòü‡é?÷åù>wk©ßc¶Ê’m³©à:¡•:¥zçÖ¾ÆQ]L.aâÕïs¡„ °ê×¹ñì‚q€sô¯ïÅ}…¢´d7ñµ½gŒc<ó^‚ïæ¯°tQ8ýÇǬq@IÅ}…¢§ q»„dppkÐ }9>•ö ŠŽ<~ããî 8×è'€¯°4QÃ'Ú;$}ÐMy´ûsé_`(¨á÷ƒÄ'Èøÿ´wüëÌmŒsŠûEO¼=£¸øüŒœÁùè•ÂR3_`(£† nGÈ cOö«Â“ÿ+ŽþµõþŠŽy/~GÈ!»Oo|ö£‚ Gð=ëëíp»ÃÚ{$”œûóï^åX ŠúûE>ðöžãä T@áG¿?aJõÇÍhÎrNkì <>ò=£¸ùyñžÆ±R”}AöŠ8`ñä|}ÿªkД“Ÿ~=ëì pûÈöŽãä8àò¬R<¹8Å}¢Ž/Ü|d ŒwÅb§ÂsÇÒ¾ÁQG ‡ˆ}‡È[|•ÍðŲ ¹ÎåLvá'è3WHEÍ{«æ3/SFwKÙ² ×$bK‰ã„5ÜdêÇÐ×К*T+*Í¡‹Aé+ˆÒñ4曂˜vøÃʑʖ£Ýk?¼£êh§Ú*âBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙPyQt-gpl-5.5.1/examples/itemviews/puzzle/puzzle.py0000755000076500000240000003311612613140041022343 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 random from PyQt5.QtCore import (pyqtSignal, QAbstractListModel, QByteArray, QDataStream, QIODevice, QMimeData, QModelIndex, QPoint, QRect, QSize, Qt) from PyQt5.QtGui import QColor, QCursor, QDrag, QIcon, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QFileDialog, QFrame, QHBoxLayout, QListView, QMainWindow, QMessageBox, QSizePolicy, QWidget) import puzzle_rc class PuzzleWidget(QWidget): puzzleCompleted = pyqtSignal() def __init__(self, parent=None): super(PuzzleWidget, self).__init__(parent) self.piecePixmaps = [] self.pieceRects = [] self.pieceLocations = [] self.highlightedRect = QRect() self.inPlace = 0 self.setAcceptDrops(True) self.setMinimumSize(400, 400) self.setMaximumSize(400, 400) def clear(self): self.pieceLocations = [] self.piecePixmaps = [] self.pieceRects = [] self.highlightedRect = QRect() self.inPlace = 0 self.update() def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragLeaveEvent(self, event): updateRect = self.highlightedRect self.highlightedRect = QRect() self.update(updateRect) event.accept() def dragMoveEvent(self, event): updateRect = self.highlightedRect.united(self.targetSquare(event.pos())) if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: self.highlightedRect = self.targetSquare(event.pos()) event.setDropAction(Qt.MoveAction) event.accept() else: self.highlightedRect = QRect() event.ignore() self.update(updateRect) def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: pieceData = event.mimeData().data('image/x-puzzle-piece') stream = QDataStream(pieceData, QIODevice.ReadOnly) square = self.targetSquare(event.pos()) pixmap = QPixmap() location = QPoint() stream >> pixmap >> location self.pieceLocations.append(location) self.piecePixmaps.append(pixmap) self.pieceRects.append(square) self.hightlightedRect = QRect() self.update(square) event.setDropAction(Qt.MoveAction) event.accept() if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 if self.inPlace == 25: self.puzzleCompleted.emit() else: self.highlightedRect = QRect() event.ignore() def findPiece(self, pieceRect): try: return self.pieceRects.index(pieceRect) except ValueError: return -1 def mousePressEvent(self, event): square = self.targetSquare(event.pos()) found = self.findPiece(square) if found == -1: return location = self.pieceLocations[found] pixmap = self.piecePixmaps[found] del self.pieceLocations[found] del self.piecePixmaps[found] del self.pieceRects[found] if location == QPoint(square.x() + 80, square.y() + 80): self.inPlace -= 1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - square.topLeft()) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) != Qt.MoveAction: self.pieceLocations.insert(found, location) self.piecePixmaps.insert(found, pixmap) self.pieceRects.insert(found, square) self.update(self.targetSquare(event.pos())) if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.fillRect(event.rect(), Qt.white) if self.highlightedRect.isValid(): painter.setBrush(QColor("#ffcccc")) painter.setPen(Qt.NoPen) painter.drawRect(self.highlightedRect.adjusted(0, 0, -1, -1)) for rect, pixmap in zip(self.pieceRects, self.piecePixmaps): painter.drawPixmap(rect, pixmap) painter.end() def targetSquare(self, position): return QRect(position.x() // 80 * 80, position.y() // 80 * 80, 80, 80) class PiecesModel(QAbstractListModel): def __init__(self, parent=None): super(PiecesModel, self).__init__(parent) self.locations = [] self.pixmaps = [] def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return None if role == Qt.DecorationRole: return QIcon(self.pixmaps[index.row()].scaled( 60, 60, Qt.KeepAspectRatio, Qt.SmoothTransformation)) if role == Qt.UserRole: return self.pixmaps[index.row()] if role == Qt.UserRole + 1: return self.locations[index.row()] return None def addPiece(self, pixmap, location): if random.random() < 0.5: row = 0 else: row = len(self.pixmaps) self.beginInsertRows(QModelIndex(), row, row) self.pixmaps.insert(row, pixmap) self.locations.insert(row, location) self.endInsertRows() def flags(self,index): if index.isValid(): return (Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled) return Qt.ItemIsDropEnabled def removeRows(self,row, count, parent): if parent.isValid(): return False if row >= len(self.pixmaps) or row + count <= 0: return False beginRow = max(0, row) endRow = min(row + count - 1, len(self.pixmaps) - 1) self.beginRemoveRows(parent, beginRow, endRow) del self.pixmaps[beginRow:endRow + 1] del self.locations[beginRow:endRow + 1] self.endRemoveRows() return True def mimeTypes(self): return ['image/x-puzzle-piece'] def mimeData(self, indexes): mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) for index in indexes: if index.isValid(): pixmap = QPixmap(self.data(index, Qt.UserRole)) location = self.data(index, Qt.UserRole + 1) stream << pixmap << location mimeData.setData('image/x-puzzle-piece', encodedData) return mimeData def dropMimeData(self, data, action, row, column, parent): if not data.hasFormat('image/x-puzzle-piece'): return False if action == Qt.IgnoreAction: return True if column > 0: return False if not parent.isValid(): if row < 0: endRow = len(self.pixmaps) else: endRow = min(row, len(self.pixmaps)) else: endRow = parent.row() encodedData = data.data('image/x-puzzle-piece') stream = QDataStream(encodedData, QIODevice.ReadOnly) while not stream.atEnd(): pixmap = QPixmap() location = QPoint() stream >> pixmap >> location self.beginInsertRows(QModelIndex(), endRow, endRow) self.pixmaps.insert(endRow, pixmap) self.locations.insert(endRow, location) self.endInsertRows() endRow += 1 return True def rowCount(self, parent): if parent.isValid(): return 0 else: return len(self.pixmaps) def supportedDropActions(self): return Qt.CopyAction | Qt.MoveAction def addPieces(self, pixmap): self.beginRemoveRows(QModelIndex(), 0, 24) self.pixmaps = [] self.locations = [] self.endRemoveRows() for y in range(5): for x in range(5): pieceImage = pixmap.copy(x*80, y*80, 80, 80) self.addPiece(pieceImage, QPoint(x, y)) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.puzzleImage = QPixmap() self.setupMenus() self.setupWidgets() self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) self.setWindowTitle("Puzzle") def openImage(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open Image", '', "Image Files (*.png *.jpg *.bmp)") if path: newImage = QPixmap() if not newImage.load(path): QMessageBox.warning(self, "Open Image", "The image file could not be loaded.", QMessageBox.Cancel) return self.puzzleImage = newImage self.setupPuzzle() def setCompleted(self): QMessageBox.information(self, "Puzzle Completed", "Congratulations! You have completed the puzzle!\nClick OK " "to start again.", QMessageBox.Ok) self.setupPuzzle() def setupPuzzle(self): size = min(self.puzzleImage.width(), self.puzzleImage.height()) self.puzzleImage = self.puzzleImage.copy((self.puzzleImage.width()-size)/2, (self.puzzleImage.height() - size)/2, size, size).scaled(400, 400, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) random.seed(QCursor.pos().x() ^ QCursor.pos().y()) self.model.addPieces(self.puzzleImage) self.puzzleWidget.clear() def setupMenus(self): fileMenu = self.menuBar().addMenu("&File") openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") exitAction = fileMenu.addAction("E&xit") exitAction.setShortcut("Ctrl+Q") gameMenu = self.menuBar().addMenu("&Game") restartAction = gameMenu.addAction("&Restart") openAction.triggered.connect(self.openImage) exitAction.triggered.connect(QApplication.instance().quit) restartAction.triggered.connect(self.setupPuzzle) def setupWidgets(self): frame = QFrame() frameLayout = QHBoxLayout(frame) self.piecesList = QListView() self.piecesList.setDragEnabled(True) self.piecesList.setViewMode(QListView.IconMode) self.piecesList.setIconSize(QSize(60,60)) self.piecesList.setGridSize(QSize(80,80)) self.piecesList.setSpacing(10) self.piecesList.setMovement(QListView.Snap) self.piecesList.setAcceptDrops(True) self.piecesList.setDropIndicatorShown(True) self.model = PiecesModel(self) self.piecesList.setModel(self.model) self.puzzleWidget = PuzzleWidget() self.puzzleWidget.puzzleCompleted.connect(self.setCompleted, Qt.QueuedConnection) frameLayout.addWidget(self.piecesList) frameLayout.addWidget(self.puzzleWidget) self.setCentralWidget(frame) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.openImage(':/images/example.jpg') window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/puzzle/puzzle.qrc0000644000076500000240000000015712613140041022474 0ustar philstaff00000000000000 example.jpg PyQt-gpl-5.5.1/examples/itemviews/puzzle/puzzle_rc.py0000644000076500000240000053141012613140041023024 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 15:49:57 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\xa6\x9e\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xe1\x00\x16\x45\x78\x69\x66\x00\x00\x4d\x4d\x00\ \x2a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x43\x00\ \x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\ \x08\x07\x07\x07\x07\x0f\x0b\x0b\x09\x0c\x11\x0f\x12\x12\x11\x0f\ \x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18\x21\x18\x1a\ \x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\ \xff\xdb\x00\x43\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\ \x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x01\xa8\x01\xa8\x03\x01\ \x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\ \x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\ \x06\x07\x02\x03\x08\x01\x09\xff\xc4\x00\x54\x10\x00\x01\x03\x03\ \x03\x02\x05\x01\x04\x06\x07\x01\x0d\x07\x02\x07\x01\x02\x03\x04\ \x00\x05\x11\x06\x12\x21\x07\x31\x13\x22\x41\x51\x61\x71\x14\x32\ \x81\x91\x08\x15\x23\x42\xa1\xb1\x16\x33\x52\x62\xc1\xd1\xf0\x24\ \x34\x37\x43\x63\x72\x74\x75\x82\x92\xb3\xb4\xe1\xf1\x17\x36\x53\ \x73\x94\xa2\xb2\x25\x93\x09\x44\x83\xa3\xc2\xd2\xe2\xff\xc4\x00\ \x1b\x01\x00\x02\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x03\x01\x02\x04\x05\x06\x07\xff\xc4\x00\x35\x11\x00\ \x02\x01\x02\x04\x02\x07\x07\x04\x03\x01\x01\x00\x00\x00\x00\x00\ \x01\x02\x03\x11\x04\x12\x21\x31\x13\x41\x05\x22\x51\x61\x71\xa1\ \xf0\x14\x32\x81\x91\xc1\xd1\xe1\x15\x23\xb1\xf1\x42\x52\x62\x63\ \x24\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xec\ \xba\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x2b\x15\x2d\ \x29\xee\x69\x33\xf3\xd9\x68\x72\xb1\x50\xda\x5b\x80\xae\x8a\x62\ \x9d\xa8\xe2\x45\x4e\xe7\x1d\x42\x13\xee\xa5\x00\x3f\x8d\x32\xcb\ \xea\x36\x9f\x8f\xfd\x65\xea\xdc\x93\x9c\x63\xed\x08\x38\xfe\x34\ \xa7\x88\xa6\xb9\x90\x9d\xf6\x26\xf4\x55\x7c\x7a\xa7\xa5\x87\x7d\ \x41\x6c\x07\xfe\x70\x9a\xdf\x13\xa9\x5a\x6e\x49\x09\x6a\xfb\x6c\ \x52\x89\xc6\xd1\x25\x19\xfe\x74\x7b\x44\x09\x27\x54\x53\x34\x5b\ \xec\x67\xd2\x14\x1c\x49\x07\x90\x41\xc8\x3f\x8d\x2f\x66\x6b\x2e\ \x76\x58\xab\xc6\xa4\x67\xb3\x22\xe2\xaa\x2b\x14\xad\x2a\xec\x6b\ \x2a\xb9\x21\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x73\x86\xb2\xeb\x1e\xa8\xb8\xf5\x36\xef\xa7\x34\ \xc4\xb6\xed\x36\xbb\x1b\xaa\x8f\x21\xef\x01\x0e\xbd\x21\xe4\xa8\ \xa5\x43\xce\x0a\x52\x9c\x85\x0e\x06\x70\x33\x9e\x46\x15\xc5\xea\ \x7e\xb2\x65\x7b\x9c\xb8\x35\x20\x7f\x65\xc8\xc8\x03\xff\x00\xb4\ \x03\x5c\xbc\x4f\x4b\xe1\xf0\xf5\x38\x72\xbd\xfb\x8c\x32\xe9\x0a\ \x4a\x4d\x6a\x74\x25\x15\x4b\x41\xeb\x1d\xd9\x18\xfb\x6d\xa2\x13\ \xff\x00\xfc\xa5\xa9\xbf\xe7\xba\x9f\xa0\xf5\x8a\xca\xe0\x02\x65\ \xb2\x7b\x07\xfe\x2c\xa5\xc0\x3f\x88\xfe\x55\x34\xfa\x63\x07\x3f\ \xf3\xb7\x8d\xcb\xc7\x1b\x46\x5c\xcb\x2e\x8a\x89\x41\xea\x3e\x8f\ \x97\x80\x2e\xc1\x85\x1f\xdd\x79\xa5\xa3\xf8\xe3\x1f\xc6\xa5\x31\ \xde\x6a\x44\x76\xe4\x30\xe2\x5d\x65\xd4\x05\xa1\x69\x39\x0a\x49\ \x19\x04\x1f\x6c\x56\xea\x55\xe9\x55\xf7\x24\x9f\x83\x34\x46\xa4\ \x27\xee\xbb\x9b\x28\xa2\x8a\x69\x70\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x82\x40\xa4\xb2\xa5\x21\ \xa4\x92\x54\x05\x00\x6f\x5b\x89\x48\xe4\xd3\x65\xc6\xef\x1e\x2b\ \x6a\x52\xdc\x4a\x42\x46\x49\x27\x00\x54\x1b\xa8\xbd\x4a\xb4\x69\ \x98\xab\x54\x99\x29\x2e\x81\x90\xd8\x57\x3f\x8f\xb5\x72\xfe\xbc\ \xea\x86\xa1\xd6\x4b\x5a\x23\xc8\xfb\x25\xb4\x28\x82\xbd\xdb\x1a\ \x1f\xff\x00\xb1\xac\xb5\x71\x0a\x2b\x41\xb4\xa8\x4e\xab\xd3\x62\ \xfc\xd7\xfd\x73\xd3\x3a\x7d\xb7\x52\x25\x89\x8f\x27\x23\xc3\x61\ \x5c\x67\xfe\x57\xf9\x57\x3d\x6b\x3f\xd2\x3b\x56\x5d\x5e\x72\x3d\ \x85\xb1\x11\xa3\x90\x3c\x24\xee\x5f\xe7\xc9\xfe\x55\x08\xfd\x59\ \x09\x4e\xf8\xd3\x9c\x2f\xa9\x47\x71\x79\xc2\x4a\x4a\x7d\xd0\x81\ \x82\xaf\xc7\x02\x9d\xed\xce\x6c\x7d\x30\xed\x16\xf8\xe9\x51\x48\ \x52\x8a\x9b\x09\x18\xc7\x0a\x3e\xde\xfc\xd6\x47\x5a\xfa\xda\xfe\ \x27\x42\x38\x18\x47\x72\x1d\x72\xbd\x75\x02\xf8\xe3\x92\x25\x49\ \x9c\x42\xb9\x25\xc5\x12\x79\xfa\xf3\x4c\x32\xe0\xea\x1f\x15\x49\ \x72\x44\x85\xb8\x39\x50\xdd\x8c\x55\xa1\x73\x2d\xcc\x94\xe1\x97\ \x36\x44\xc5\x92\x30\x96\x13\xb5\x94\x28\x0c\x60\xa8\x77\xfc\x68\ \x95\x0d\x05\xb5\xa1\x96\x5b\x0e\x60\x78\x8e\x78\x7e\x32\xd2\x3b\ \x0d\xbb\xbc\xb9\xf8\xc2\xaa\x63\x8a\x90\xd7\x84\x8b\x5c\xfd\x79\ \x15\x22\xa2\x5f\xd2\xb2\x82\xb7\xf7\x0e\xe0\x2b\x38\xad\x4e\x8b\ \xcb\x07\x2e\x4b\x71\xb2\x39\xf3\x13\x56\x14\xcb\x5c\xb1\x19\xc5\ \x38\xdb\xa5\xa6\x88\x23\xed\x6b\x28\x2a\xfa\x25\x38\x1f\xc2\xa1\ \xf7\x24\xca\x48\x52\xa3\xda\x9b\x71\x09\xc9\xf1\x1a\x6b\x79\xfc\ \x49\xcd\x69\x85\x77\x3e\x66\x5a\x98\x65\x05\x71\x5e\x98\xea\x3e\ \xb1\xd3\x52\x03\xb6\xeb\xcc\xa6\xb6\x8e\x52\x97\x0e\x0f\xd4\x76\ \x35\x73\x68\x5f\xd2\x96\xeb\x15\x48\x67\x51\xc3\x44\x94\x81\x8f\ \x15\xaf\x22\xfe\xa7\xd0\xfe\x55\xce\xab\x44\xa7\x3f\x75\xc5\x83\ \xe8\x40\xe0\xfc\x81\x5a\x3c\x05\x28\x12\x94\x20\x94\x9c\x29\x25\ \x38\x50\x3e\xc6\x99\x28\x42\x7b\x99\x1c\x7b\x8f\xa4\x7d\x29\xea\ \xee\x9e\xd6\x91\x3c\x5b\x5d\xc5\x2b\x71\x23\xcf\x1d\xd3\xb5\xd4\ \x7e\x1e\xa3\xe4\x55\xa3\x06\xe6\xc4\x84\x8d\xab\x15\xf2\x62\xd3\ \x32\xe9\x6a\x7d\x33\x6d\x8f\x3b\x15\xd6\xd5\x9d\xc8\x59\x49\x49\ \x1f\x35\x7b\xf4\xb7\xf4\x95\xbe\x59\x5c\x6a\xdf\xaa\x5b\x54\xf8\ \xe3\x00\x3f\x9c\x3a\x91\xf5\xec\x7f\x1f\xce\xa1\x67\x86\xda\xaf\ \x32\x8e\x0d\x6c\x77\xfa\x56\x14\x38\x35\x95\x55\xfd\x38\xea\x75\ \x83\x56\xc4\x43\xd6\x9b\x8b\x52\x38\xca\x9b\x27\x0e\x23\xea\x9e\ \xf5\x62\xc5\x98\xdb\xa9\x04\x28\x1c\xd3\x61\x51\x4f\x62\x82\xba\ \x2b\xc4\xa8\x1e\xd5\xed\x5c\x90\xa2\x8a\x28\x00\xa2\x8a\x28\x00\ \xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x03\ \x88\xa1\x7f\xbf\x27\x51\x3f\xe9\xa9\x3f\xf8\x87\x6a\x67\xa2\xac\ \x97\x2d\x65\xab\x5c\xb0\xda\x56\xd4\x76\xa1\xb4\x97\xae\x33\x5d\ \x41\x5a\x58\x4a\xb3\xb1\x09\x48\x23\x72\xd5\x82\x46\x48\x00\x02\ \x79\xed\x50\xc8\x5f\xef\xc9\xd4\x5f\xfa\x6a\x4f\xfe\x21\xda\xbe\ \xbf\x45\x38\x81\x1a\x5b\x51\x5c\xd6\x8f\xdb\xcc\xbf\x3e\x82\xb2\ \x39\x2d\xb4\x94\x21\x23\xe8\x30\xaf\xcc\xd7\x98\x8e\x12\x18\x9e\ \x91\x9a\xa8\xae\x97\xe0\xf3\x98\x6a\x4a\xad\x6c\xaf\x6d\x4f\x17\ \xa0\xf4\x3b\xb7\x77\x34\xb4\x3d\x51\x27\xfa\x42\xdb\x25\xdf\x09\ \xe2\x93\xb8\x71\x9f\x28\x48\x07\x1e\xa0\x1c\x8c\xf3\x55\xc5\xce\ \xd5\x3a\xdd\xac\xe0\x69\x59\x0d\x62\x74\xcb\x82\x21\xa4\x83\x94\ \xa4\x28\x15\x78\x9f\x29\x09\x1b\xa8\x44\xc9\x09\xea\xfe\x96\xbb\ \x20\xab\xed\x0e\x6a\x20\xd2\xd5\x9f\xdc\x78\x2d\x2b\x1f\x88\x35\ \x6e\x5f\x7f\x57\xc1\xfd\x22\xb4\xf8\x91\x6c\x6e\x63\xf7\x6b\x5b\ \xa2\x33\xeb\x5f\xfb\x89\xc8\xe1\xc2\xa7\x12\x92\x0e\x54\xb4\x38\ \x10\x48\x23\x84\x8e\xf5\x34\xb0\x58\x6c\x6c\x23\x52\x31\xcb\xad\ \x9a\x5c\xd1\xa1\x53\xa7\x5d\x5d\x2b\x59\xdb\xe0\x54\xfa\x96\xd2\ \xed\x8e\xf9\x2a\xd4\xf3\xa8\x75\x71\xd4\x12\x56\x80\x40\x39\x00\ \xff\x00\x8d\x74\x86\x8a\xff\x00\xdc\xdb\x27\xfd\x1f\x1f\xfe\xed\ \x35\x4e\xf5\x96\xe7\x6f\x91\xa8\x25\x5b\x9a\xb3\x35\x1e\x64\x77\ \x92\x5c\x9a\x97\x32\xa7\xc6\xce\xc5\x38\x18\xee\x3d\x4f\x6a\xb8\ \xb4\x57\xfe\xe6\xd9\x3f\xe8\xf8\xff\x00\xf7\x69\xab\xf4\x4d\x28\ \xd2\xc5\xd5\x84\x1d\xd2\xfb\xec\x3f\x05\x05\x0a\xd3\x8a\x1d\xe8\ \xa2\x8a\xf4\x67\x50\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x2b\x15\xa8\x24\x50\xb5\x84\x8c\xd3\x0e\xa0\xbd\x47\xb7\xc4\ \x75\xf7\xde\x4b\x6d\xb6\x92\xa5\xa9\x47\x01\x20\x7a\x9a\x1b\x49\ \x5d\x80\xa2\xef\x75\x66\x1b\x2a\x5b\x8e\x25\x21\x23\x24\x93\x80\ \x05\x73\xef\x58\x7a\xe7\x06\xd4\xd3\x90\xac\xce\x99\x32\xd4\x76\ \x25\x48\xe4\x0f\xa7\xf9\xd5\x67\xd7\x9e\xb6\xbd\x7a\x7d\xfb\x3d\ \x85\xe5\x26\x30\x25\x25\x40\xe0\xb8\x7d\xcf\xc7\xc7\xe7\x5c\xff\ \x00\x26\xe2\xec\xa5\xf8\x4d\x2d\x4b\x5a\xc1\x0e\xba\x4f\x27\xf1\ \xf4\x1f\x1e\xbf\x4a\xc7\x52\x72\x93\xb1\xb2\x8e\x19\x7b\xd5\x3e\ \x44\x9a\xf3\xa8\xaf\xda\x9a\xf6\xa5\xbc\xa3\x31\xe2\xb2\x50\xd2\ \x95\x96\xd2\x3d\x49\xf4\xc0\xf5\x39\xa5\xb6\xb6\xdc\x72\x4b\x5e\ \x1a\x05\xce\x43\x6a\xf0\xfc\x57\x13\xfb\x16\x95\xfd\x86\x9b\x1c\ \x13\xf8\x7c\x9c\x0e\x6a\x2b\x6b\x79\x0b\x3f\x66\x8e\x4e\xc1\xca\ \xd4\x14\x40\x5e\x3d\xc8\xf9\xf6\xfc\x39\xe6\x9f\x58\x9a\xb5\x25\ \x21\x95\x06\xe3\xb2\x48\x71\xf4\x80\x0a\x8f\xab\x4d\x8e\xc0\x7a\ \x9f\x4f\x55\x12\x6b\x1d\x48\xeb\xa9\xd5\xa4\xf4\xb4\x47\xf9\x0c\ \xb6\xc3\x98\x91\x21\x72\x5c\x3b\x9c\x77\x68\xf2\xa4\x0f\x75\x0f\ \xbd\xf4\x1c\x1f\x73\xda\x9a\xa7\xdc\xd2\x85\x15\xdc\xe6\xc5\xb7\ \x30\xac\xa9\x4d\xaf\x97\x1e\xe3\x8d\xc8\x4f\x20\x7b\x02\x31\xf1\ \x4f\x9a\x5b\xa7\xda\xe3\x5f\xa5\x0f\xdb\x63\x1b\x75\xa0\xf3\xf6\ \xf9\x0b\x2d\xa5\xcc\x71\x94\x03\xe6\x57\xd7\x18\xe3\x8c\x0a\xb7\ \xb4\x6f\x40\x74\x95\xad\x9c\xde\x19\x45\xe2\x6a\x80\x52\xe4\x3c\ \x54\xbe\x7e\x01\x38\x03\xd7\x9a\x5a\x69\x6e\x5e\x7d\x5d\x9f\xaf\ \x5e\x07\x3c\xc6\xd4\x53\x2e\x0e\x2a\x3d\x92\xdb\x74\xbb\xac\x79\ \x50\x0e\xe6\xa3\xa4\x7b\xe1\x18\x51\xfc\x54\x3b\xd4\x92\xdf\xa2\ \xfa\x9f\x7b\x86\xa7\x54\xf7\xea\xa6\x00\x4e\xe6\x63\xfe\xc7\x8e\ \xc3\x71\xee\x4f\x3e\xa4\x9f\x7a\xea\xdb\x5e\x9a\xb6\x5b\xe3\x08\ \xb0\x62\xb0\xcb\x09\x18\x21\x2d\xa5\x39\xf8\x24\x0a\x5e\xcd\x9e\ \x32\x54\x14\x94\x0c\x01\xe5\x18\xe1\x3f\x41\xda\xac\xa4\xff\x00\ \xc5\x5b\xcc\x53\xa9\x0f\xf2\xd7\xc9\x7a\xf8\x9c\x8f\xff\x00\xb1\ \xdd\x4a\x94\x87\x5c\x98\xea\xc9\x5e\x00\x49\x59\xc7\xb2\x92\x73\ \xc1\x1e\xc7\xbf\x15\xa9\xde\x96\xea\xa3\x35\x08\x4b\xc8\x44\x84\ \x8c\x07\x50\x3c\x30\xbc\x7a\xab\xe4\xe4\x8e\x7b\xe2\xbb\x18\x45\ \x6d\x2e\x15\x14\xa7\x80\x07\x22\xbc\x5c\x28\x0e\x0d\xaa\x6d\xa3\ \x9e\xd9\x19\x1f\x91\xa2\xf5\x3f\xd8\x15\x5a\x7f\xe9\xfc\x9c\x87\ \x0f\xa3\x77\xe9\x4a\x53\x6d\x86\xfc\x50\x77\x17\x0e\xed\xa3\x27\ \x03\x91\xdf\xde\x9b\xb5\x1f\x4c\x2f\xd1\xe6\xbb\x1e\x54\x34\xf8\ \x8d\x21\x4a\x0f\x25\x5c\x28\x63\x19\x3f\xc0\xd7\x65\x7d\x91\xb6\ \x50\x52\xde\xdc\x7c\x0e\xd4\x96\x65\xbe\xdf\x29\x59\x93\x1d\x0e\ \x12\x36\x92\x47\x04\x7c\xd5\x33\xd4\x5f\xe4\x4b\xa9\x4e\x5a\x38\ \xe8\x70\x94\xbd\x33\x32\x24\x77\xb7\x36\xb5\x2d\x04\x04\x92\x9f\ \x4e\x32\x3e\x79\xed\x4c\x13\x2d\x8e\x24\xa9\x21\xa2\x36\xf2\xb0\ \x7f\x70\x73\xeb\x5d\xe9\x73\xd1\xf6\x29\xb9\x58\x8e\x86\xdc\xc1\ \xf3\x84\x8c\x82\x7d\x73\x51\x7b\xd7\x49\x74\xfd\xc2\x21\x6f\xc3\ \x0d\x9f\xed\x36\x90\x0e\x7e\xbf\xeb\xbd\x32\x38\xca\x91\xdd\x5c\ \x54\xb0\xf4\x27\xb3\x68\xe3\x5d\x31\x7d\xbd\xe9\xa9\xad\xdc\xed\ \x53\x1f\x8c\xeb\x6a\xe0\xa1\x44\x11\x5d\x41\xd1\xff\x00\xd2\x59\ \xc9\x4f\xc7\xb4\xea\x86\x9b\x69\xd5\x00\x94\xca\x4f\x94\x28\xff\ \x00\x78\x76\xfc\xb1\x50\x0d\x7f\xd1\x5b\x8d\xad\x97\x8d\xb5\x84\ \xbd\x1c\x82\xaf\x10\xe4\xaf\xe3\x38\xaa\x66\xe3\x02\x6d\xb5\x4a\ \x6a\x53\x2a\x65\x7b\xb0\x9e\x31\xdb\xe6\xb5\xc6\xb4\x2b\xad\x37\ \xf3\x31\x55\xc2\x38\x6a\xf5\x5d\xa7\xd4\xfd\x2d\xa8\x63\xdc\xe3\ \x21\x68\x71\x2a\xdc\x32\x30\x73\x9a\x92\xb6\xad\xc2\xb9\x17\xf4\ \x56\xd6\x2e\x4b\xb0\x43\x87\x29\xf5\x19\x2c\x0f\x0d\x40\x9e\xe0\ \x76\x3f\x95\x75\x6d\xaa\x40\x75\x94\x9c\xe7\x22\x9f\x86\xa8\xe7\ \x16\xa5\xba\x30\xb4\xe2\xdc\x58\xbe\x8a\x28\xa7\x80\x51\x45\x14\ \x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\ \x01\xc4\x50\xbf\xdf\x93\xa8\xbf\xf4\xd4\x9f\xfc\x43\xb5\x7d\xfe\ \x8a\x72\xb7\xe9\x1d\x41\x01\x6a\xfd\xac\x4d\x41\x24\xed\x3e\x88\ \x71\x28\x71\x27\xf1\xdc\x7f\x23\x54\x24\x2f\xf7\xe4\xea\x2f\xfd\ \x35\x27\xff\x00\x10\xed\x4d\xf4\x06\xa3\x97\xa1\x75\x74\x9b\xdb\ \x11\x9c\x9b\x6d\xb8\x32\x96\xee\x71\x1b\x50\x0e\x12\x8c\xec\x75\ \xbc\xe0\x15\x00\x48\x29\x24\x64\x1e\xf9\x15\xe6\x69\xe2\xa1\x43\ \xa4\xa7\x9d\xd9\x3f\xc1\xe7\x70\xb5\x55\x2a\xf9\x9e\xda\x89\xcc\ \x77\x93\xd5\x8d\x2b\x01\x39\xf1\x91\xa9\x5b\x2a\x4f\xf7\x5b\xde\ \x55\xf9\x62\xad\x5d\x66\xfa\x15\xfa\x4c\xe8\x18\xe3\x1b\x9b\xb6\ \xdc\x14\xae\x7f\xb4\xdf\xff\x00\xf3\x4e\x70\xa1\x68\x79\x85\x8e\ \xb0\xdb\xa1\x4b\x9c\xe2\xa2\xa9\xd8\xde\x18\x3e\x5d\xfe\x55\xa8\ \x37\xc0\x0b\x3c\x85\x13\xd8\x66\xaa\x6b\x9e\xa2\xb8\xbf\xd4\xd8\ \x3a\xe5\x09\x42\x66\x41\x75\x61\x31\x9c\xc9\x42\x99\x5a\x3c\x35\ \x37\x9e\xe0\xed\xc6\x15\xee\x33\x83\xda\x9f\x1a\x94\xfa\x36\x30\ \xa5\x51\xee\xef\xf0\x34\xe9\x86\x8a\x4d\xde\xed\x3f\x80\xbf\xaa\ \xff\x00\xef\x85\x76\xff\x00\xe6\x27\xff\x00\xc1\x35\x7c\xe8\xaf\ \xfd\xcd\xb2\x7f\xd1\xf1\xff\x00\xee\xd3\x54\x46\xba\xd5\x16\xed\ \x4a\xb4\xc9\x63\x4e\xc6\xb7\xcd\x5a\x92\xb9\x12\x42\xc2\xdc\x73\ \x09\xc0\x4e\xed\xa0\xed\x1f\xe1\xda\xaf\x7d\x15\xff\x00\xb9\xb6\ \x4f\xfa\x3e\x3f\xfd\xda\x69\x7d\x14\xe1\x2c\x5d\x59\x42\x57\x4f\ \x5f\x9b\x1b\x83\x71\x75\xa6\xe2\xee\x98\xef\x45\x14\x57\xa3\x3a\ \x81\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\ \x01\x45\x14\x50\x01\x45\x14\x50\x01\x58\xb8\xa0\x91\x9a\xc8\x9c\ \x0c\xd3\x5d\xde\x62\x58\x69\x44\x9a\x00\x43\xa9\x6f\x71\xad\x90\ \x5e\x93\x25\xf4\x32\xd3\x48\x2a\x5a\xd4\x70\x12\x07\xad\x70\xef\ \x5f\xfa\xd5\x37\x53\x5c\xdd\xb4\xd9\xde\x5b\x76\xd6\xd7\x81\xb4\ \xff\x00\x5a\x7d\xcf\xbf\xf8\x54\x8b\xf4\xbb\xea\x7b\xcf\xcb\xfe\ \x89\x5a\x65\x1d\x88\x39\x98\xa4\x1f\xde\xfe\xc9\xf8\x1f\xcc\xfc\ \x57\x2d\x38\xe1\x5e\x48\x59\x28\x07\xef\x9e\xea\x3f\xe5\x4a\x6d\ \xcb\x51\x94\xd2\x5d\x66\x2e\x9d\x25\x4e\xba\xb4\xa9\xce\xff\x00\ \xd6\x63\x93\xf4\xa4\x65\xe2\xf1\x11\xd8\x18\x1c\xef\x56\x71\x91\ \xf2\x7d\xbf\x9d\x27\x2a\x5b\x9e\x44\x79\x53\xeb\x4a\xed\xd1\x5f\ \x98\xfb\x50\xe1\xb2\xe3\xae\xba\xb0\x94\xa1\x09\xdc\xa5\xab\xe9\ \x51\x95\x41\x5d\x8d\x52\x95\x59\x59\x7a\xee\x1d\x60\xb8\x86\x98\ \x53\x49\x71\x61\xa3\x80\xa0\x84\xf9\xdd\x3e\x80\x7b\x7b\x01\x5d\ \x1d\xd1\x7e\x8c\x49\x75\x11\xb5\x0e\xb5\x8e\x94\x24\x25\x2a\x85\ \x68\x71\x3e\x54\x27\xba\x4b\xa3\xf8\xec\xfc\x4d\x3b\xf4\x1f\xa3\ \x90\xb4\xc4\x78\xb7\xdd\x47\x19\x32\xef\x65\x21\xc6\x18\x58\x05\ \x11\x09\xf5\xc7\xef\x2f\xe4\xf6\xf4\xab\xb1\x5b\xce\xe5\xac\xa8\ \x1c\xe4\x93\xeb\x5c\xba\xb5\x54\xde\x9b\x1d\x88\x5e\x94\x72\xad\ \xff\x00\x83\xd8\xed\x04\x27\x03\x69\x38\xc7\x09\x09\x48\x00\x60\ \x00\x3d\x00\xa5\x71\xd8\x0b\xe3\x97\x08\xe0\xe0\x7f\x0c\xd6\x29\ \x42\x36\x6f\x70\x1c\x1c\x61\x03\xbf\xe3\x4b\x59\x5c\x82\x9d\xad\ \xa0\x32\x9f\xe3\x55\x8a\x11\x26\x2a\x62\x02\x8a\x7c\xe9\x43\x69\ \xfe\x35\xea\x9b\x82\x8e\x14\xe0\x51\xad\x68\x61\xc7\x55\xe6\x5a\ \x96\x47\xb9\xed\x5b\x5b\x80\x08\xc9\xc1\x1d\xfb\xd3\x92\xec\x42\ \x76\xdd\x98\x20\x42\xc7\x2b\x03\xf0\xcd\x6a\x75\x8b\x7a\xff\x00\ \xe1\x07\xce\x07\xf1\xa7\x06\xe3\x36\x8c\x27\x18\xc7\x7c\xf7\xac\ \x84\x66\x72\x41\x03\x8f\x8c\x54\xb8\xb6\x82\xe3\x42\x99\x86\x01\ \x01\xdc\xfb\xf3\x5a\x5d\x6d\xa2\x0e\xd1\xba\x9e\xdc\x8b\x1b\x61\ \x3e\x51\x8e\x7b\xd2\x65\x47\x61\x00\xed\x52\x47\xe3\x4b\x94\x4b\ \x29\x0c\xcb\x65\xac\x02\xa6\x17\x9f\x42\x38\xa4\xab\x8e\x82\xbd\ \xac\xad\x48\x57\x38\x0b\xe2\x9f\xd6\xc3\x7d\x82\xc2\x49\xe7\x93\ \x9a\x45\x2e\x39\xd8\x72\x90\xa0\x79\xc6\x29\x72\x80\xc5\x21\x96\ \x43\x44\x20\xb6\xea\x76\xa8\x8c\x13\x8e\x08\xaa\xbb\xab\x3d\x35\ \xb5\x6a\x48\x0f\xb8\xd3\x49\x8b\x3d\x00\x29\x0a\x1c\x03\x8f\xa5\ \x5b\x2a\x52\x9a\x05\xb2\x0a\xdb\xfe\xca\x8f\x3f\x81\xa4\x17\x08\ \xe8\x75\x1e\x4e\x47\x3b\x4f\xaa\x7e\x0d\x21\xe8\xf4\x1a\x9b\x5b\ \x1c\xc1\xd1\xb7\x17\xa5\xf5\x93\xb6\x7b\x92\x8c\x79\x28\x21\x0d\ \xa9\x47\x09\x74\x64\x91\xf8\xd7\x6c\xe8\x8b\x88\x93\x05\xa3\xbb\ \x9c\x73\x5c\xa7\xd7\x8d\x28\xb9\x50\x13\x77\x84\x16\x89\x71\x32\ \x49\x47\x7c\x03\xc6\x7d\xf1\xcd\x4d\xbf\x45\xce\xa0\xbf\x7d\xb4\ \x88\x97\x27\xf3\x3a\x2e\x10\xe1\x3d\xd6\x3d\x15\x5d\x2c\x35\x48\ \xc3\xaf\xdb\xb9\xc9\xc5\xd3\xb4\xb3\x9d\x4c\x85\x65\x35\x95\x22\ \xb7\xc8\x0e\xb4\x08\x39\xc8\xa5\xb5\xd2\x33\x05\x14\x51\x40\x05\ \x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x1c\ \x4b\x19\xb5\xb7\xd6\x6e\xa2\x25\xc4\x29\x04\xde\x64\x28\x05\x0c\ \x70\x5f\x74\x83\xf8\x82\x0f\xe3\x52\x2a\xe9\x7b\xbe\x88\xd2\xb7\ \x6b\xda\xaf\x57\x0b\x2b\x0f\x5c\x16\xda\x5a\x5b\xdb\x94\x92\xb4\ \xa7\x3b\x42\x80\x20\x2b\x19\xee\x73\xc7\x14\xba\x06\x9e\xb1\x41\ \xc7\xd8\xec\xf0\x19\x23\xf7\x92\xc2\x77\x7e\x78\xcd\x79\xcc\x5f\ \x42\xd4\xc4\x57\x95\x4c\xc9\x26\x71\xff\x00\x4c\x9b\x93\xeb\x68\ \x50\x9d\x2d\xbc\xea\xbd\x2d\x09\x76\xcd\x3f\x09\xeb\x8d\xad\x6e\ \xad\xd6\xe2\x2e\x32\xdc\x0c\x29\x44\x95\x06\xd4\x9c\x10\x92\xa3\ \x9c\x1c\x8c\x93\x8c\x66\xb7\x9d\x0b\xac\xef\x13\xdf\x9a\xab\x2a\ \x98\x32\x1d\x53\x8b\xf1\x16\x96\xc2\x4a\x89\x27\x85\x1c\xe3\x9a\ \xe8\x7c\x51\x5a\x5f\x43\xf1\x22\xa3\x5a\xab\x92\x5e\x0b\xee\x68\ \x58\x04\xe2\xa3\x39\x36\x91\x4a\x59\xfa\x41\x77\x72\x43\x6a\xba\ \xcf\x88\xc3\x19\x05\xc4\xb2\xa2\xb7\x31\xea\x06\x40\x00\xfc\xf3\ \x57\x3c\x56\x1a\x8b\x19\xa8\xcc\x20\x21\xa6\x90\x10\x84\x8f\x44\ \x81\x80\x2b\x65\x15\xbb\x09\x81\xa3\x84\x4f\x86\xb7\x34\xd1\xc3\ \xc2\x8f\xba\x14\x51\x45\x6c\x1e\x14\x51\x45\x00\x14\x51\x45\x00\ \x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x41\xed\ \x40\x1a\x64\xb8\x10\x82\x73\x54\xe7\x5e\xb5\xba\x74\xbe\x91\x9d\ \x3d\x0b\x1f\x68\xdb\xe1\xc7\x4f\xbb\x87\xb7\xe5\xdf\xf0\xab\x3e\ \xff\x00\x28\x33\x1d\x64\x9e\xc2\xb8\x63\xf4\xc3\xd6\x4b\x99\x7e\ \x6a\xc6\xc2\xce\xd8\x83\x2b\x19\xe0\xad\x5c\xff\x00\x01\x8a\x5d\ \x57\xb4\x49\x8c\x73\x4a\xcc\xa1\xaf\xf7\x17\xee\x57\x07\xdf\x7d\ \xd5\x2d\x6e\x28\xad\xe5\xa9\x59\x2a\x24\xe7\x14\xd5\xcb\x87\xbe\ \xd4\x0f\x5a\xcf\x03\x1e\x62\x08\x1c\xa8\xfb\x9a\x5f\x68\xb4\x4d\ \xba\x5d\x22\xdb\xd8\x6c\x87\x1f\x52\x52\x06\x39\x4a\x54\x47\x9b\ \x1f\x43\x9a\x9b\xa8\xab\xb2\xee\xf3\x7a\x1a\xad\x30\x24\xdc\xe7\ \x35\x02\x0b\x0b\x79\xe7\x94\x12\x86\xd0\x39\x51\xae\xbb\xe8\x2f\ \x4c\x2d\xda\x46\x0b\x77\x6b\x93\x2d\xc9\xbe\x38\x8c\xee\x23\x72\ \x63\x02\x3b\x27\xe7\xe6\xab\x7e\x94\x69\x64\xdb\x2e\x69\xf0\xda\ \x58\x25\xe2\xca\x1f\x18\x25\x48\xc9\x19\xcf\xf7\xb1\xc9\x1e\x99\ \xc5\x74\xbd\x81\x29\x6d\x01\xa0\x41\x09\x01\x28\x00\x76\x03\xd3\ \xe6\xb8\xf8\xac\x43\xa9\x53\x22\xd9\x1d\xbc\x3d\x0e\x05\x2c\xdf\ \xe4\xfc\x90\xe9\x17\x7b\x7e\x6f\xde\x23\x72\xb3\xef\x4a\xdb\xdc\ \xa3\xb8\x8e\x7d\x0f\xb5\x68\x27\x19\xdd\xd8\x9e\x00\xf5\xa5\x31\ \xb0\x52\x37\x77\xec\x71\x54\x48\xab\x62\x96\x93\x80\x0a\xb3\xf8\ \x73\x4a\xd9\x51\x24\x81\x80\x33\xdc\xd6\x90\xe2\x11\x8c\x10\x93\ \x8c\x01\x58\x3f\x71\x83\x17\xc8\xe3\xa9\x2b\x03\x24\x67\xb7\xd6\ \x98\xa2\x29\xdf\xb0\x71\x68\xa9\x59\x05\xc5\x76\xe7\x06\xb7\x15\ \x38\x94\xf0\xb7\x30\x3d\xd5\x4c\xc9\xbd\xc6\x43\x49\x77\x7a\x58\ \x4a\xf2\x12\x56\xa4\xa7\x77\xd3\x3e\x9f\x35\x9b\x77\x48\x4f\x63\ \xc2\xb8\x47\x77\x71\xc1\x28\x90\x0f\x3e\xdc\x1e\x7e\x95\x74\x43\ \x84\xbb\x07\x15\x2d\x47\x95\x1c\x8f\x92\x6b\x15\x2c\x2b\x92\x47\ \xe3\x5a\x54\xb5\x1e\x12\xb5\x29\x20\x8f\x29\xf4\xf9\xad\x98\xe3\ \xb8\x3e\xf8\xa9\xd4\x8b\x02\x9b\x4a\xb9\x3c\x67\x8c\x56\xa2\x10\ \x14\x46\x33\x8a\xcc\xa4\x02\x40\x04\x7f\x8d\x01\x04\x05\x64\x10\ \x31\xeb\xcd\x55\xa2\xcb\x43\x4a\x92\x7b\x14\x12\x0f\x6e\x2b\x5b\ \x9e\x22\x06\x52\x4a\x7e\x94\x92\xf7\x72\x8b\x05\x4d\xb2\xe3\xe8\ \xf1\x94\x37\x10\x55\xf7\x52\x06\x49\x3e\xc3\xe6\xab\xfb\xc7\x5a\ \x34\x55\xba\x77\xd8\x8d\xee\x33\xae\x83\x8d\xcd\xab\x2d\x9c\x77\ \xe7\xb1\x3f\x4c\xd2\x65\x24\x98\xd8\xd3\x94\xb6\x44\xf9\xf5\x13\ \xe5\x71\x00\xfc\x8a\x6f\x79\x18\x3b\x90\xa3\xf2\x3d\xe9\xb6\x26\ \xb5\xb2\x4e\x4b\x65\xb9\x0d\xa9\x2e\x63\x0b\x6d\xc0\xe2\x4e\x7b\ \x64\xa7\xb1\xfa\xd3\xa9\x53\x4b\x48\x52\x16\x30\xa1\xc0\x1e\xbe\ \xd4\xa7\x69\x6c\x5d\xc6\x51\xdd\x0c\x77\xc8\x2d\xca\x8a\xe2\x1c\ \x40\x29\x5a\x70\x7d\xf9\xae\x6c\x4c\xf9\x3d\x2e\xea\x4b\xae\xad\ \x0b\x30\x5e\x7b\x7a\xb6\x76\x29\x27\x9f\xc7\x06\xba\x8d\xf0\x52\ \xe8\x41\xfb\xa7\x3c\xd5\x1f\xd7\xdb\x2b\x52\x65\xc6\x75\x4d\x05\ \x78\x8a\x28\x73\x9f\xbb\xc7\x7f\xaf\x22\x99\x4e\xa6\x4d\xf6\x17\ \x2a\x0a\xad\xe2\xce\xa4\xd0\x37\xe8\xf7\x2b\x73\x0f\x32\xf2\x5c\ \x6d\xc4\x05\xa1\x60\xf0\xa4\x91\x90\x6a\x72\xca\xb7\x24\x57\x24\ \x7e\x8b\x5a\xad\xdf\xd4\xe2\xc3\x35\x64\x49\xb6\xaf\xc1\x04\xf1\ \xbd\xb2\x72\x93\x8f\xe1\x5d\x51\x68\x90\x1e\x61\x24\x1f\x4a\xec\ \xe1\xe6\xe5\x1b\x3d\xd1\xc2\xb3\x8b\x71\x63\x95\x14\x51\x4e\x24\ \x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xad\x52\xe4\xb1\x12\x33\x92\ \x64\xba\x96\x99\x6c\x65\x6b\x51\xe0\x0a\xac\x75\x96\xbb\xbe\x39\ \x6f\x79\xeb\x23\x48\xb6\x43\x1c\x22\x64\x84\x6e\x5b\x9f\x29\x49\ \xe0\x7e\x39\xab\xd3\xa7\x2a\x8e\xc8\x55\x5a\xd1\xa4\xaf\x22\xd3\ \xa2\xb9\xd7\x4f\x1d\x59\x76\x2e\x4a\x9b\xac\x2f\xc1\xb0\x09\xcb\ \x52\xd4\xd0\x3f\x20\x0e\x31\x4d\x37\x39\xda\xa1\x89\x6b\x42\x35\ \x56\xa4\xf0\xd2\x78\x3f\xac\x9c\xc9\x1f\x9d\x69\xf6\x29\xf6\x99\ \x3d\xbd\x7f\xa9\xd4\x14\x57\x34\xe9\xd9\xf7\xa9\x97\x86\x58\x91\ \xac\x35\x12\x59\x2a\xc1\x3f\xac\x5c\xe7\xdf\xd6\xae\xd8\x9a\x79\ \x2a\x88\x87\x06\xa3\xd4\x0a\x04\x72\x4c\xdc\xff\x00\x85\x2e\xae\ \x1e\x54\xd2\x6c\x75\x2c\x57\x11\xb4\x91\x29\xa2\xaa\x8b\x83\x53\ \x44\xf7\x3c\x2d\x49\x7d\x4b\x69\x38\xc0\x98\xaa\x7e\xd2\xf6\x49\ \x92\x62\x97\xe4\xea\x1b\xea\x82\xbe\xee\x66\x1f\xf1\x15\x33\xc3\ \x4a\x11\xcc\xd9\x58\x62\xf3\xcb\x2a\x44\xe6\x8a\x80\x6a\x06\x1c\ \x88\x97\x16\xdd\xf6\xf4\x94\xa0\x77\xfb\x59\xff\x00\x2a\xae\x9e\ \xbb\x5e\xfe\xd2\x42\x75\x25\xe4\x05\x13\x8f\xf6\xd5\xe3\xf9\xd5\ \xa1\x83\x9c\x95\xc8\x96\x36\x31\x76\xb1\xd0\x94\x55\x61\xa5\xde\ \x97\x2e\x33\x6b\x7e\xf7\x76\x52\x87\x0a\xff\x00\x6a\x3c\xfe\x75\ \x2c\x9b\x68\x71\x50\x8b\xac\xde\x2e\xc1\x5b\x72\x31\x2b\xff\x00\ \x2a\x5c\xf0\xf2\x83\x49\xf3\x2f\x0c\x4a\x9a\x6d\x2d\x89\x1d\x15\ \x59\xe6\xe2\x87\x0a\x55\x79\xba\x1d\xa7\x9f\xf6\xa5\x76\xa9\x6d\ \xb6\x1f\xda\x21\x87\x8d\xd2\xe3\x9c\x73\xfe\xd1\xff\x00\x95\x4d\ \x5c\x34\xa9\xab\xb0\xa5\x8a\x55\x1d\x92\x1f\xe8\xaa\xa3\x53\xdd\ \x27\x31\x70\x5a\x62\x5d\x2e\x49\x43\x67\x07\x32\x54\x3f\x95\x37\ \x45\xbb\x5d\x5e\x20\xae\xf5\x71\x47\xc7\xda\x57\xcf\xf1\xa6\x2c\ \x14\xda\x16\xf1\xd1\x4f\x62\xe8\xa2\xab\x58\xf3\xe4\x48\x8b\xe1\ \xa6\xef\x3c\x3a\x07\x72\xfa\xbb\xfe\x74\xa7\x4a\x1b\xdc\x9b\x83\ \x8c\xc9\x9f\x2c\xb4\x93\xc1\x2f\xa8\xff\x00\x3a\x89\x60\xe5\x15\ \x76\xc9\x8e\x32\x32\x76\x48\xb0\x68\xa4\x29\x85\xb5\x24\xaa\x64\ \xb3\xf3\xe2\x9a\x4d\x38\x21\xa8\xee\x2d\x13\xa4\x05\x01\xdb\xc5\ \xac\xf1\x83\x93\xb2\x34\xca\x79\x55\xd8\xef\x45\x42\xdd\xb9\xbc\ \xc3\x1e\x22\xe5\xc8\x23\x1f\xfc\x43\x4d\x92\x6f\xb7\x42\x3f\x64\ \xf3\xa0\x13\x80\x4b\x87\xfc\xeb\x4f\xb1\x4c\xcd\xed\xb0\xec\x2c\ \x7a\xc5\xc3\x84\x13\x50\x2b\x55\xfa\x73\x8b\xf0\xdf\x79\xcd\xde\ \x87\x79\xff\x00\x3a\x58\xfd\xe5\xf6\x9a\x59\x71\xd7\x31\x8e\x3c\ \xc6\x8f\x62\x99\x2b\x1b\x06\x27\xd7\x92\xd4\xdc\x45\x84\x9e\x4f\ \x15\xf3\x6b\xab\xd7\x73\x7a\xd7\xd7\x69\x7b\xf7\x03\x21\x49\x4a\ \xbb\x8d\xa0\xe3\x3f\xca\xba\xf7\xaf\x9a\xe5\xdb\x56\x91\xb9\x4b\ \x4c\x85\x25\xdf\x0c\xb2\xc8\xdc\x72\x5c\x5f\x03\xd7\xd0\x64\xfe\ \x15\xc3\xaf\x87\x97\x20\x4b\xdb\xbd\x0f\xa8\x80\x49\xc8\xcf\xa8\ \x3f\x35\x8e\xad\x2c\x95\x1b\x6c\xd3\x42\xa7\x11\x36\x8c\x18\x52\ \x1b\x21\xc5\x24\x2b\x61\xc2\x10\x7b\x13\xee\x6a\x61\xa1\xae\x2c\ \x5a\x1c\x17\x45\xbb\x99\x8f\x3d\xb5\x2b\x03\x2a\x4b\x7f\xbe\xad\ \xa7\x83\x9c\xf0\x3d\x93\xf3\x51\x34\xb6\xcb\xee\x14\xa1\xf4\x32\ \x94\x8e\x03\xb9\x1f\x91\xff\x00\x3a\xc9\x69\x58\x90\x19\x6d\x7e\ \x65\x00\x84\xed\x3b\x89\xf4\xc0\xc7\x72\x69\x53\x8e\x65\x63\x4d\ \x39\xe4\x95\xce\x83\xe9\xee\xa8\xb6\xb8\xd4\xdb\xf5\xc2\x5a\x21\ \x5a\xad\x8a\x6e\x34\x72\xf2\x82\x40\x51\xc8\x03\x8f\xbc\x48\xce\ \x71\xee\x6a\xc4\xb1\xf5\x8b\xa6\x71\x62\xa9\x52\xf5\x8c\x64\x3a\ \x15\xb4\x6c\x8c\xf2\xbc\xb8\xf8\x4f\xd6\xb9\xf3\xa9\x5a\x7d\xfb\ \x1f\x49\xed\x4c\xc8\x88\x62\xbe\x2e\x29\x53\xac\xf7\x53\x41\x4d\ \x28\xa4\x2c\xff\x00\x68\xe1\x5c\x7a\x57\x48\x69\x1d\x29\xa6\x62\ \x74\x6b\x4e\x6a\x18\xbd\x28\xd1\xd3\xdf\x7e\xd5\x1d\xc5\xbd\x36\ \x0f\x8c\x5c\x5a\xb0\x92\xb5\x12\x73\xc9\xe4\xfd\x6b\x9b\x43\x0b\ \x4e\xbd\xea\xa7\xa5\xdf\x91\xd5\xaf\x8a\x94\x1a\xa7\x65\xcb\xcc\ \xcd\x5d\x79\xe9\x0a\x48\x49\xd5\xce\x10\x3d\x45\xb6\x41\xff\x00\ \xfc\x2b\x79\xeb\xff\x00\x48\x1b\x69\x45\xad\x58\xb5\xab\x19\x03\ \xf5\x74\x80\x4e\x3e\xa8\xa5\x6b\xd3\x37\x35\x46\x2f\xda\xf4\x27\ \x4d\x59\x69\x20\x95\x3c\x34\xe3\x4d\x47\x4e\x3f\xe3\x5c\xe0\xfe\ \x15\x86\x97\xd0\xda\x9f\x53\x3b\x23\x68\xe8\xaa\x9b\x8a\x52\x99\ \x28\x89\x61\x6a\x62\x9a\x2a\xe4\x05\x10\x84\xa7\x3c\x1e\xc4\xd3\ \x61\x4a\x93\xf7\x5b\x7e\xbc\x05\xca\x53\x4a\xf2\xb2\x21\xd3\xfa\ \xf5\xa6\xee\x61\x5f\x65\xbc\x46\x8c\x8e\x4b\x2d\xa9\x45\x0a\x20\ \x76\xdc\x48\xc0\xcf\xe3\x50\xcd\x4d\xd6\x18\xec\xc4\x6a\x05\xaf\ \xec\xf2\x64\x2d\xb2\xe2\x9d\x66\x56\x52\xda\x8f\x60\x55\xce\x4f\ \xae\x33\xf9\x57\x4c\xb5\xd0\x2d\x2c\xfc\x4f\xff\x00\x54\xb5\x69\ \x29\x2f\x9e\xea\x8d\xa6\x58\x61\x39\xfa\x24\xe7\xf8\xd4\x23\x58\ \xfe\x8d\xbd\x3d\x5b\x6e\x97\x63\xdb\xad\xce\xf0\x12\xe2\x61\x48\ \x61\xbc\xfc\x14\xbc\xa4\xe7\xf0\xa1\x61\x23\x7b\xca\xfe\x45\xbd\ \xbe\xcb\x2c\x2d\xf0\xbf\xd4\xe5\xe8\x53\xb5\x05\xea\x43\x92\x25\ \xdd\xe6\xbc\xf3\xca\x09\x05\x2a\x5b\x99\x04\xf3\x84\x0e\x00\xfe\ \x35\x25\xd2\x36\x1b\xba\x56\xb5\xe9\xe7\xe7\xb5\x21\x0a\x53\xae\ \x34\x14\x42\xde\x4a\x78\x56\x10\x7b\xfd\x47\x20\xf7\x15\x36\x97\ \xfa\x39\x39\x6e\x7c\x48\xd2\xba\xb9\xb4\x38\x9f\x30\x4c\x5b\xb8\ \x6d\x60\xfc\x25\xc4\xa7\x3f\xf6\xab\x28\xed\xf5\x8f\x42\x38\x5d\ \x9a\x21\xdf\xdb\x53\x9b\xdb\x17\x38\x25\x2e\x03\xee\xdb\xec\x92\ \x77\x1e\x7b\x92\x3e\x2a\xb3\x84\x6f\xd5\x92\xfe\x0d\x74\x71\x6d\ \x25\x78\xb6\xfe\x7f\x92\xe6\xe8\xfb\xd7\x35\xd8\x76\xc8\x9a\xf4\ \xa6\xd2\x94\xad\x92\xf8\xc2\xdb\x1f\xbc\x09\x3d\xfb\x76\xf7\xc1\ \xf5\xa9\xf4\x37\x1a\x70\x16\xf2\x0a\x81\xc0\xf9\xaa\x3f\x44\xf5\ \xb7\x4a\x39\x31\xb6\x75\x3c\x59\xfa\x3e\x72\xbf\x64\xf3\xd2\x71\ \x22\x13\x85\x59\x00\x17\x50\x3c\x8a\xcf\x3e\x64\x8e\xc3\x35\x7a\ \xe9\x8f\xb2\xcc\xb6\x36\xfc\x07\xa3\x4d\x88\xb4\xe5\xa7\xe2\xba\ \x97\x5a\x23\xe1\x49\x24\x1a\xbc\x69\xb8\xa4\x99\x92\xb5\x45\x29\ \x39\x02\xdb\x59\xce\xd1\xc8\x1c\x83\xed\x5e\x38\x48\x8e\xa2\x91\ \xc2\x47\x62\x29\x7c\xb8\xae\x82\x0b\x0d\x93\xc7\x24\x72\x0f\xc0\ \xa6\x1b\xbc\xb6\xed\x30\x5f\x99\x73\x95\x1a\x04\x56\xbc\xcf\x3f\ \x2d\xd4\xb4\xda\x47\xae\x54\xa3\x81\x55\x9a\x48\x5c\x7a\xc5\x2b\ \xd6\x48\xb3\xee\x57\x93\x01\x85\xb8\xd4\x79\x6e\x62\x5b\xc9\x57\ \x99\x2d\x80\x30\x81\xf3\xef\xf5\xaa\xa6\xf3\xa6\xa2\xdb\x52\xe3\ \x51\xa0\x82\x86\xc3\x69\xf1\xc8\x1b\x54\x95\x03\xfb\x20\x7b\x93\ \x8e\x0e\x31\xeb\x93\x56\x4e\xb2\xeb\x66\x96\xfd\x64\xe4\x0d\x11\ \xa6\xae\x1a\xe6\xe4\xae\x10\xa6\x5b\x53\x51\x73\x93\x92\x9e\x0a\ \xdc\xfa\x80\x07\xcd\x56\xda\x9a\x47\x5c\x75\x5a\xcb\xb2\x20\xc4\ \xd3\xb1\x54\x42\x44\x3b\x7b\x68\x43\x89\xc7\x6c\xf2\xa7\x01\xe7\ \xd4\x8f\xa5\x27\x84\xe3\xab\x69\x78\x9d\x18\xe2\x22\xe2\xa2\xe0\ \xdf\xaf\x91\x00\x4d\xd6\x7e\x95\xbb\xae\x65\x86\x6a\xad\xab\x25\ \x47\xec\xce\x85\x2d\x97\x92\x48\xf2\xa9\x38\xc0\x3e\xb9\xf8\xe2\ \xac\xad\x17\xd6\x70\x63\xa8\xca\x97\x1a\x0a\x59\x29\x21\x97\xdf\ \xc2\x82\xbd\x52\x09\xfb\xc8\xf9\xef\xfe\x30\xe1\xd1\x4d\x5b\x31\ \xc3\x22\xe5\x32\x03\x2a\x51\xca\x97\x36\x7e\xe5\xe7\xe4\x24\x13\ \x4d\xd7\x6e\x99\xc2\xb4\x83\xf6\xfd\x5b\xa7\x99\x50\x24\x63\xc1\ \x90\xb1\xc7\xb1\x08\xe6\xaf\x25\x86\xa8\xac\xe5\xaf\x70\x88\xfb\ \x4c\x64\xf2\xc2\xf1\xec\x7a\x9d\x33\x03\xab\x5d\x3d\x9f\x01\x0e\ \x3f\xab\xad\x31\x5f\x48\x01\xc6\xde\x7b\x18\x38\xf4\x20\x1c\xd4\ \x27\xaa\x3a\xdb\x44\x4c\x99\x05\xcb\x76\xa7\xb4\xcf\x57\x8f\xe7\ \x4b\x6e\xe7\xcb\x82\x08\x39\x1d\x8f\x6c\xfc\xd5\x02\xde\x9a\x88\ \xe6\x1b\x85\x7f\xd2\xb3\xca\xd5\x81\xb5\xe5\x34\xbf\xa6\x1c\x48\ \xa5\x12\xf4\x5b\xb1\x54\x10\xf2\xa2\x30\xe9\x4e\x76\x3c\xd2\xdb\ \x03\xe8\xbc\x14\xfe\x39\xab\xc7\x07\x4e\x6f\xde\x66\x7f\x68\x9c\ \x75\xd1\x5f\xc7\x99\x2f\xe9\xee\xa9\x66\xc1\xd4\x86\x1c\x72\x73\ \x02\x33\xf9\x61\xe7\x3c\x51\x82\x41\xf2\xab\xfc\x3f\x1a\xee\x1d\ \x01\xa8\x63\xce\x82\xd2\x9a\x90\xd3\xc9\x20\x79\x9b\x58\x50\xfc\ \xc5\x7c\xd5\x99\x62\x79\xb5\x3e\x9f\x0c\x78\x91\xd0\x97\x57\xb5\ \x5b\xb0\x82\x42\x42\x81\x1e\x9b\x88\x1f\x88\xab\x07\xf4\x69\x9d\ \x76\x67\x5f\xc8\x86\x8b\xbc\xf8\xd1\xd5\x05\xc5\xac\x32\xfa\x93\ \x9c\x14\xe3\xf8\xd6\xa7\x18\xc1\xe7\x83\xd0\xe6\xe2\x61\x38\xa7\ \x37\xc8\xfa\x4e\xc3\x81\x69\x04\x73\x5b\x6a\x9c\xd3\x91\xe5\x49\ \x8c\x8c\xea\x5b\xf8\x3f\x13\x8f\xf9\x54\xda\x0e\x9e\x5b\xd1\xd2\ \xe2\xb5\x0e\xa2\xce\x39\xc4\xdf\x5f\xca\xb7\xca\x8b\x8c\x54\xbb\ \x4c\x14\xf1\x3c\x47\x64\x89\x6d\x15\x54\xdd\xed\x57\x25\x5c\xd6\ \xc4\x2d\x4d\xa9\x0e\x0f\x00\x4f\x56\x0f\xe5\x4a\x22\xe9\x1b\xf3\ \xa8\x0a\x5e\xaa\xd4\x88\x2a\xec\x3f\x58\xab\xfc\xa9\x8f\x0a\xd2\ \xbb\x65\x16\x32\xee\xca\x2d\x96\x75\x15\x59\x4b\xd2\x17\xe6\xdb\ \xcb\x5a\xbb\x51\x9e\x7d\x6e\x0a\xed\x45\x0b\x0a\xde\xd2\x40\xf1\ \x8d\x6f\x06\x38\x5c\xae\x0c\x6a\x6d\x6e\xbb\x0a\x9c\x3f\xab\xed\ \x8a\x49\x90\x9c\xe0\x3c\xf7\x70\x9f\xa0\xff\x00\x3a\x70\xea\x0d\ \xae\x1c\xcb\x0a\xc3\xcd\xa5\x28\x64\x0c\x01\xc6\x38\xff\x00\xca\ \xa0\x7d\x38\x75\x4e\xbb\xfa\xc7\x0a\x2f\x4d\x92\xe3\xab\x23\xb9\ \xca\x8f\xf9\x54\xff\x00\xa8\x72\x54\xce\x9b\x75\x29\x04\xad\xc1\ \x80\x07\xae\x69\xd1\xa5\xc3\x9c\x2d\xcc\x44\x6a\xf1\x69\xcd\xcb\ \xd7\x61\x4d\x4a\xb9\x94\xb1\xf6\x68\x00\x25\xb1\x91\x90\x3b\xff\ \x00\xae\x29\xad\xc4\xb8\xf8\x52\x54\xf2\x89\x58\xed\x9e\xd5\x25\ \xb0\xe8\xc9\xd3\x50\x1d\x92\x4b\x49\x56\x49\x1d\x8d\x49\x5a\xd0\ \x30\x83\x61\x2a\x52\xc3\x87\x80\x73\xeb\xdf\xfc\x6b\x7b\x92\x5b\ \x98\xd4\x5b\xd8\xae\x2d\xd1\x56\xca\xd0\x5a\xc1\x5e\xf1\x91\xeb\ \xf3\x57\x93\x13\x1c\x85\xa5\x5a\x0f\x0f\xda\x94\x0e\xff\x00\xe3\ \x51\x3b\x46\x95\x8b\x6c\xbb\x89\x13\x1c\x2b\x6c\x72\x02\xbb\x8a\ \x76\xba\xca\x55\xc2\x50\x66\x33\x79\x69\x3c\x24\x01\xc7\xa1\xaa\ \x4e\x39\xda\x5c\x8b\xc2\x4e\x09\xbe\x7b\x09\x6d\xb1\x5c\x9d\x39\ \x29\x09\x27\x72\xc1\x51\x1d\xbf\xd7\x61\x53\x67\x9c\x6e\x14\x14\ \x30\xd8\x19\x09\xc7\xe5\xcd\x23\xb3\x47\x6a\xd9\x10\x3a\xf7\x2e\ \xa8\x6e\x38\xa6\xdd\x43\x73\x11\xd9\x5b\xce\x2b\xce\x7e\xe8\x3f\ \xeb\xe9\x48\x95\xea\xce\xdc\x90\xf8\x7e\xcc\x2f\xcd\x91\xcd\x67\ \x3b\x9f\xb3\x36\xac\x2b\x39\x5e\x2a\x22\x8b\x72\x9e\x06\x4e\x00\ \x09\x38\xa5\xcf\xac\xbc\xa5\xbe\xbc\x92\xbe\xc0\x0e\xde\xd4\xe7\ \x69\x0d\xa2\xd8\xa6\xca\x48\x52\xff\x00\xb5\x5a\xd1\x91\xea\x6b\ \xd3\xb3\x4c\x39\x6d\xef\x50\xf0\xd5\x81\x92\x7b\xfc\xd5\x9b\x68\ \x98\x14\x03\x2a\xe5\x04\x00\x2a\xa3\x42\x36\xad\x6d\xf2\x36\x92\ \x47\xc5\x4a\xf4\xa5\xd4\x2b\x11\x9c\xfb\xc3\xee\x92\x3b\x0a\x55\ \x6a\x6a\x71\xb0\xda\x35\x1c\x25\x71\xfb\x51\xdb\x8b\x2f\x2a\x53\ \x5f\x71\x5f\x7b\x15\xb3\x4d\x4c\xd8\x55\x15\x67\x85\x0c\x27\x26\ \x9c\x58\x7d\x32\x1a\x2c\x48\x39\x49\x1c\x1a\x61\xb9\x40\x72\x04\ \x8f\x19\xbc\xa9\xb1\xca\x7e\x94\x98\x3c\xf1\xe1\xcf\x71\xd3\x59\ \x25\xc4\x86\xc4\x7f\x54\x41\x72\x2d\xc1\xd5\x3a\x83\xb1\x67\x8c\ \xfe\x54\xdf\x15\x95\xa8\x61\xb6\x54\x46\x78\xe2\xa6\xaa\x90\xcd\ \xdf\xc3\x62\x42\x02\xd4\x93\xdc\x8a\x76\x8f\x06\x2b\x0d\x84\x86\ \x86\x3b\x76\xa6\xba\xb9\x12\xcc\xb5\x14\xa9\x67\x6d\xc5\xe8\x57\ \x2e\x27\x0a\x2a\xd8\xa6\xd5\xee\x46\x31\x53\x2e\x9d\xba\x56\xcb\ \x9b\xc8\x52\x87\xaf\xad\x3a\x49\xb7\x45\x90\x8c\x29\xa4\x80\x07\ \xa0\xa4\x76\x9b\x69\xb5\x4f\x53\x8c\x92\x50\xaf\x4c\xd2\xea\x55\ \x8d\x48\x35\xcc\x6d\x3a\x52\xa7\x35\x2e\x43\x9d\xfe\x42\xdb\x65\ \x2d\x20\x94\x95\x1f\x6a\x65\x53\x45\x63\x0a\x51\x27\xd4\x9f\x6a\ \x77\xbe\xa3\xc7\x61\x0e\xa3\x38\x4f\x71\x8a\x68\x79\xd0\xd4\x72\ \xe6\x4f\x94\x55\x70\xfa\x41\x58\x9c\x46\xb3\x77\x19\xef\x69\xd8\ \x50\xd0\x18\x4e\x79\xad\x0b\x18\x40\x4f\x6a\xf2\x53\xee\x4a\x90\ \x83\xb3\xcb\xef\x5b\x1e\x42\x8a\x02\xb9\xad\x88\xc6\xcd\x24\x61\ \xf6\xdc\xc1\x27\x38\xa5\x57\xa7\x52\x88\xa4\x9e\x4e\x31\x9a\xd0\ \xa6\x96\xe2\x40\x1c\x1e\x79\xf6\xa6\x9b\xcc\x97\x50\xd3\x8d\xad\ \x5b\x86\x3f\x2a\x3b\xc1\x1c\xc9\xfa\x59\x5c\x40\xb7\xc0\x88\x92\ \x37\x39\x21\xc7\x0f\xd1\x29\x03\xfc\x4d\x73\xf5\xa6\x73\xd6\xc7\ \x94\xbf\x05\xb9\x0c\xba\x8d\xae\x32\xe8\x3b\x56\x3d\xc1\x07\x29\ \x50\xee\x14\x39\x1f\x98\x36\xb7\xe9\x44\xfa\xdf\xd4\x90\x93\xce\ \x13\x18\xe3\x27\x8e\x56\xac\xff\x00\x85\x56\xf6\x6b\x63\x73\x90\ \xe9\x5b\xa1\x88\x8c\x00\x5e\x90\xae\x71\xf0\x91\xea\x49\xc0\x03\ \xdc\xd7\x9f\xad\x34\xdb\x6c\xee\xe0\xe2\xd5\x35\x61\xa9\x48\x53\ \xee\x2d\x6d\x78\xcb\x27\x24\xf8\x87\x25\x23\xdc\xab\xfc\x6b\xa0\ \xbf\x47\x6e\x9b\x08\x52\x60\x5f\xaf\xe9\x30\xe6\x4d\x4f\x8f\x6a\ \x74\x29\x0e\x61\xb0\x33\xb9\x23\x90\x95\xe7\xbe\x79\x03\x18\x1d\ \xea\x98\xb2\xfd\x9e\xe7\xa9\x20\xdb\x62\xb1\xe0\x41\x5c\x96\xfc\ \x64\xf7\x51\x40\x50\xce\x4f\xa9\xc6\x4e\x3d\xea\xea\x8f\xac\xda\ \xd1\x70\x0e\x54\x1e\x66\x14\x99\x0a\xb3\xb6\x71\x95\x87\x37\x24\ \x10\x3b\x8c\xa4\x83\xed\xd8\xf1\x58\x31\x75\x5a\xb4\x17\x33\xa3\ \x87\xa4\x9a\x73\xec\x1b\x3a\xfb\x0d\x85\xd8\xde\x8e\x2e\x6f\xcd\ \xb9\xc8\x9e\x97\x59\x65\xc0\x54\xea\x90\xda\x56\x16\xa3\x8c\x01\ \x9d\xd9\xc6\x2b\xa6\x3a\x57\x32\x72\x3f\x46\x3d\x11\x2e\xdb\x2b\ \x6d\xc9\xf8\x0d\xc2\x88\xe1\x20\x21\x95\x6e\x50\x53\x87\x3c\x1d\ \x88\x42\x95\x8f\x52\x90\x3d\x6b\x8a\x65\x5d\xa6\x4e\xb9\xbb\x73\ \x9c\xf1\x7a\x5b\xe7\xce\xbc\xf0\x91\xe8\x84\x7c\x0f\x7f\x53\xcd\ \x5e\x5f\xa2\x9e\xb9\xd4\x72\xaf\xb6\xde\x96\x48\x98\xda\xac\x66\ \x3d\xc1\xdb\x7b\x65\xa1\xe2\xb6\xe2\x99\x70\x86\xf7\x7a\xa4\x6e\ \x71\x40\x77\xe7\xd8\x0a\xa6\x0d\x3a\x34\xf8\x6f\x7f\xa9\xb3\x15\ \x85\x75\x12\xaa\xbe\x3e\x08\x8d\xeb\x4b\xf5\xe7\x51\xea\x65\x68\ \xab\x5c\xe9\x6b\xb4\xdb\x1d\x52\x56\x95\xbe\xa5\x97\x17\xb8\x95\ \x12\xa3\xfd\xe5\x12\x71\x8e\x49\xf8\xae\xa0\xfd\x16\xf4\x6c\x3d\ \x2d\xa6\xee\xa2\x3c\xc7\x25\x7d\xbd\xd6\x9c\x74\xab\x18\xdc\x94\ \x91\xc1\xc7\xb1\x19\x19\x3d\xbe\x6a\xa7\xe8\xc6\x86\x5c\x7b\xc5\ \xd2\xe7\x75\x28\x56\xfb\x83\xaa\x69\x18\xc1\x27\x71\xe4\xfb\xd7\ \x46\x58\xa5\xb7\x6c\x6d\xdd\x8c\xa5\x48\x59\x05\x5b\x4e\xdc\x60\ \x55\xa8\x54\xd5\xf6\x15\xc6\xc5\x65\xca\xb7\x26\x21\x09\x00\x24\ \x0c\x01\xd8\x0a\x61\xd7\x36\xbf\xd6\x76\x25\xc7\x0f\x25\x94\xa5\ \x5b\xca\x89\xf5\xec\x3f\x9d\x2d\xb5\xde\xed\xd7\x01\xfe\xcf\x21\ \x25\x49\x4e\x54\x92\x7e\xef\xbf\x34\xcb\xad\xf5\x7e\x9b\xb4\x5a\ \xc8\x9f\x72\x88\x43\x8e\x04\x14\x07\x02\x94\x38\x27\x38\x1f\x4a\ \xd9\x2b\x38\x9c\xc8\x29\x46\x6a\xcb\x52\xab\xba\xe8\x70\xb0\xb5\ \x26\x7b\x4e\x10\x09\x03\x38\x22\xa3\xb2\xad\xf7\xdb\x36\xf4\xb5\ \x39\xd4\xb2\xa1\x85\xb4\xe8\xf1\x59\x58\xf6\x29\x3c\x54\x86\x67\ \x51\x34\xa4\x97\x1e\x16\xf9\xc9\x71\x0d\xed\x4a\xd6\xb6\x54\x13\ \xb8\x8e\xd9\xc5\x37\xa2\xe8\xc4\xf5\xb6\x94\x2f\xf6\x4e\x61\x4d\ \xba\x9f\x32\x01\xf6\xcf\x6a\xe0\xe2\x28\xc2\x2f\xaa\xf5\x3d\x3e\ \x1a\xad\x67\x1e\xba\xba\xef\x43\x0c\x0b\x2d\xa9\x3a\x8a\x35\xfa\ \xee\xd3\x4e\xda\x0b\x6e\xc3\x9f\x1f\x68\x71\xb6\xdb\x75\xb5\x23\ \xc4\x52\x8f\x2a\x61\x0a\xd8\xa2\x95\x65\x48\xfb\xc0\xe1\x26\x90\ \xf5\x0b\xa3\x5a\x83\x4f\x6b\xbd\x29\x2f\x4a\x5b\x2d\x57\x18\xc6\ \xdb\x1a\x1b\xac\x6d\x42\x19\x93\x21\xa5\x2c\x6e\x52\x0e\x12\x41\ \x6f\xc3\xca\x8f\x72\x3d\xcd\x3b\x5f\x18\x91\x15\xf4\xcc\x8c\xd9\ \x4a\xe3\xbc\x8f\xb5\x33\xb7\xc8\xfb\x64\xf9\x92\xa1\xd8\x82\x32\ \x3f\x1a\x84\xcc\xb5\x6a\x4b\xe7\x56\x1b\xd1\xb6\xdd\x47\x31\xb8\ \x3a\x6e\x28\x85\x05\xd7\xdd\x50\x54\x44\x8c\x2d\x4d\x82\x0f\xed\ \x0a\x72\x90\x14\x79\xda\x84\x03\xda\x9f\x43\x13\xc1\xa4\xe3\x6d\ \x79\x11\x53\x09\x2a\xf5\xd4\xd4\xec\xac\xef\x7e\x49\x78\x6b\xcc\ \xd7\xfa\x58\x68\x7b\xdc\x58\x2c\x6a\x99\x76\x0b\x0e\x98\x43\x6d\ \xa5\xb5\xb5\x6c\x94\xa4\x07\x15\x9e\x49\x09\x01\x24\xd5\x27\x63\ \x96\x2d\xa1\x6b\xbe\x59\xbf\x58\x21\x6c\xe5\xa5\x4b\x74\xb8\xda\ \x37\x00\x42\xf0\x49\x1d\xb2\x41\xae\xc0\x99\xd3\x5b\xc5\xe6\xd4\ \x22\xea\x0e\xa8\x6a\x8b\x8b\x4a\x00\xa9\x95\x29\x2a\x68\xe3\xdc\ \x2b\x39\xfa\xd4\x1f\x48\xf4\xbe\xd5\x77\xd6\x97\x3e\x9e\xdd\xe7\ \x06\x95\x11\xd6\x2e\x4c\xc8\x6e\x30\x59\xb8\x42\x42\x90\x57\x1d\ \x63\x38\x41\x0a\xd8\x42\x87\x23\x72\xc7\x20\xe0\x68\x86\x2a\x4e\ \x69\x49\x68\xfc\x0c\xfe\xcf\x08\x53\x94\xa3\x52\xed\x6f\x64\xf6\ \xbe\xfa\x92\x3f\xd1\xe3\x47\xdc\xa5\xf4\x65\x77\x99\xb0\x15\x6f\ \xfb\x52\xde\x75\x95\x38\x80\x93\x21\x92\xac\xb6\xbc\x0c\x28\x8c\ \x64\x61\x5c\x60\x0c\x0e\x73\x49\x05\x92\xfb\x36\x49\x65\x0f\xab\ \xc3\xf4\x4b\x63\x6a\x53\xf8\x0e\xd5\xd2\x5a\xa9\x0d\x33\xa5\xa5\ \xc5\x8e\x03\x09\x43\x29\x69\x09\x6d\x20\x04\x0e\x00\x00\x76\x03\ \x15\x54\xbd\x74\xb2\x59\xa3\x78\x77\x3b\xa4\x58\x61\x47\xfe\x19\ \xc0\xd0\x24\x9f\xae\x7b\xd5\x71\x58\x58\x3b\x5f\xe2\x27\x05\x8d\ \xa9\x79\x49\x2b\xf6\x11\x46\xfa\x71\x31\xe4\x95\xc9\x96\x1a\x3e\ \x98\x19\x22\x91\x5d\x3a\x57\x1a\x4c\x55\xb0\xb7\x83\x83\x9c\xee\ \x4f\x04\xff\x00\x85\x4a\x5c\xd4\x76\x69\x33\x95\x12\xdd\x77\x80\ \xf3\xa1\x39\x29\x6a\x58\x0b\x4e\x31\xdc\x13\xf3\x5b\x58\xbd\x2e\ \x3a\x83\x72\x81\x2d\x93\x8f\x10\x8e\x47\xf9\x8a\xe7\xba\x34\xe0\ \xce\x97\xb5\xe2\x9a\xbd\xfc\x8e\x4b\xea\x97\x4a\x2e\x3a\x6a\x73\ \x92\x23\xa3\xed\x76\xe2\x3c\x4c\x8e\x16\x9c\xf7\xc8\x3e\xdc\x57\ \xba\x6e\xf0\xd4\xbd\x37\x0d\x32\x5e\x54\x79\x70\x52\xa6\x16\xe8\ \x51\x04\x24\x0f\x22\xbe\xa3\x20\x11\xf1\x5d\x77\x7c\x81\x0e\xed\ \x05\x71\xdd\x69\x0e\xb6\xb6\x94\x9d\x8b\x19\x05\x24\x60\xe3\xda\ \xb8\xb3\x5f\xe9\xa7\xb4\xd5\xce\xe5\x6e\x6d\x2e\x06\xdb\x7c\xa9\ \x0a\x27\x3b\x90\xac\x81\xf9\x1c\x8a\xd9\x4e\xac\xa7\x68\x37\xe0\ \xcc\x55\x14\x35\xaa\xa3\xe2\xbe\xa6\xfb\xab\xea\xbf\xd9\xa5\xdd\ \x1b\x43\x3f\x6c\x84\xe8\x66\x61\x61\x21\x28\x77\x23\x87\x00\x1d\ \xb3\x8c\x11\xee\x33\xeb\x4a\xba\x04\x89\x1f\xd3\x49\xd7\x16\xdb\ \x26\x3b\x50\xcb\x4a\x5f\xa6\xf5\xa8\x6d\x4f\xd4\xe0\x9f\xc2\x99\ \xfa\x7a\x5e\x8b\xd3\xfd\x71\x74\x4a\x72\x98\xa9\x83\x82\x7f\xb4\ \xb7\x4a\x71\xf9\x13\x56\x1f\x46\x6d\x42\x1c\x38\xf6\xc4\xba\x16\ \xea\xdc\xfb\x44\x8c\x0e\x02\x88\x18\x4f\xe0\x38\xfc\xeb\xaa\xe3\ \x9d\x46\x9c\x77\xd8\xe0\x62\x6b\x7e\xcb\x4f\x99\xd4\xba\x11\x25\ \x70\x9a\x4e\x15\x92\x3f\x21\x56\xac\x73\xe0\xb0\x1a\x47\x27\x18\ \xc8\x1d\x8d\x57\xfa\x0e\x29\x65\x86\xdc\x20\xef\x03\x81\x8a\x9f\ \xb4\x76\x37\xe6\xc2\x94\x7f\x2f\xf5\xcd\x75\x6b\xac\xa9\x43\xb0\ \xe6\x61\xa3\x65\x70\x62\x23\x4d\x2c\xac\x20\x15\x9e\xe7\xde\xb7\ \x6e\x09\xe0\xa8\x8f\x72\x38\x34\x21\xb5\x93\xca\x8a\x53\xc0\x3c\ \xf7\xac\x43\x49\xff\x00\xe3\x27\x20\x7d\x78\xfa\x56\x56\xef\xbb\ \x34\xa5\x6d\x90\x3a\xe0\x4a\x15\xb8\xe0\x7a\xfb\x7f\xae\x68\xa4\ \xf2\xad\xcb\x7f\x1f\xed\x07\x60\x3e\x64\x83\x9c\xd1\x4d\x87\x0e\ \xda\xb1\x72\xe2\x5f\x44\x56\xfd\x21\x60\x0d\x3f\x12\x6b\x87\x09\ \x41\x70\x72\x7f\xbe\xaa\x98\xbb\xba\x6a\xca\xdc\xc9\x40\xe5\x29\ \xcf\x06\xa3\x5d\x3b\x4a\x53\xa2\xe0\x60\x60\x23\x7f\xfd\xe2\xb9\ \xa9\x4b\x4c\xbc\xf2\xb3\xbb\xc3\x6c\x1c\x12\x7b\x62\xb6\x3b\x25\ \x73\x9f\x4a\xf9\x54\x4c\x00\x6d\xa1\xb4\x14\xe4\x7b\x56\xc4\xb8\ \xca\x52\xb5\x78\x89\x48\xf9\xf4\xef\x58\xba\xab\x5b\x3e\x47\x56\ \x16\x73\xcf\x9b\x9a\xcc\x2e\xcd\x27\x0d\x85\x6d\xdc\x31\x9f\x8f\ \x6f\xa5\x55\xbe\xe6\x35\x2b\x73\x47\x3f\xdf\x2f\xba\x9a\xe5\xa5\ \xee\x1a\x3e\xdb\x74\x94\xe5\xfc\x6a\x39\x10\x23\x48\xf1\x0a\x9e\ \x0d\x23\x32\x12\xac\xe7\x3f\xd5\x8d\xbf\xc2\x9f\xed\x17\xa9\xf7\ \x58\xd6\xb9\xb6\xe7\xca\x83\x7a\x45\xcb\x94\xa6\x84\x85\x32\x1d\ \x79\xdd\xa8\x40\x52\x92\x09\x49\x4e\xc7\xc8\x20\x1e\x45\x49\x2d\ \xfd\x38\x99\x69\xea\xdc\xdd\x67\x1a\x43\x0e\x5a\x5d\x8f\x96\x58\ \x49\x3e\x22\x64\x94\x21\xb5\x38\x46\x31\x8d\x88\xc7\x04\x9c\xa8\ \xf6\xa4\x3a\x33\x47\x3f\xa4\x2d\x3a\xb1\x13\x27\xc5\x7c\xdc\x96\ \xeb\x76\xed\xaa\x51\xf0\x62\xe5\xc5\x36\x85\xe4\x0c\x10\xa7\x57\ \xc0\xce\x3d\x0f\xa0\xa5\xdc\x95\xa3\xb1\x9b\x87\x38\xbe\xb7\xae\ \xc1\x95\xbd\x69\xa8\xdb\x47\x4d\xdb\xb6\x18\xff\x00\x64\xba\x5a\ \x9d\x79\x6d\xce\x98\xb7\x1c\x5a\x9a\x69\x38\x0e\x39\xb0\x93\x8d\ \xe0\x82\x39\x27\x39\x00\x0e\x61\xb2\xf5\x5d\xe6\x05\xd7\x5b\xdd\ \x84\x34\xce\xb7\x42\xba\xf8\x8e\x07\x25\xa9\x2b\x4a\x0a\x11\x94\ \xb6\x9d\xa4\x70\x39\xe4\xa7\xbd\x3a\x3f\x61\xbf\x22\x3e\x8a\xfb\ \x33\x96\xf7\x9f\xd3\x90\x9d\x8a\xe2\x16\xf2\x90\x87\x7c\x46\xd0\ \x82\x52\xa0\x82\x78\x28\xcf\x23\x9c\xfa\x56\x8b\x86\x90\xb8\xbd\ \x61\xd6\x70\x92\xf4\x30\xed\xee\x41\x72\x31\x52\xd4\x12\x94\xec\ \x4a\x70\xbf\x2f\x07\x29\x3d\xb3\x4c\x8c\x24\x97\xae\xc2\x8d\xc9\ \xef\xeb\x41\xcb\xa8\xd7\xd7\xec\x3a\x1a\xe1\x7a\x84\x41\x75\xa6\ \x92\x59\x2a\x19\x00\xad\x49\x4a\x4e\x3d\x70\x54\x0d\x44\xe3\x5d\ \x35\x0e\x97\xb9\x68\x89\x52\x35\x04\xeb\x9b\x3a\x87\x6b\x33\x58\ \x94\xa0\xa4\x05\xac\x23\x6a\x9b\xc0\x1b\x70\x57\x8f\xc3\xe4\xd4\ \xfe\x7e\x98\x46\xa4\xd2\x52\xec\x73\x0e\xc4\x48\x60\x34\x1d\x48\ \xce\xc5\x8c\x14\xab\x07\x19\xc1\x00\xd4\x2f\x4e\x58\xaf\xb7\x3e\ \xa0\x59\x74\xf6\xac\x09\x61\x3a\x45\xa0\xb8\x65\xa8\xee\x6d\xb8\ \x60\x24\x25\xcf\x10\x8d\xa3\x6e\xd4\x64\x67\x39\x07\xe7\x17\xa9\ \x7c\xc8\xac\xaf\x71\x4f\x4f\xef\xba\xa6\xef\xaf\x75\x2b\x37\x18\ \xf1\xcc\x28\xb2\x92\xc3\x89\x4b\xe4\xfd\x98\x84\xa8\x00\x81\xb4\ \x6e\x0a\x29\xc9\x27\x1f\x8d\x59\x8c\x82\x95\xa5\xc4\x2b\x6a\x87\ \x62\x3b\xe6\xa0\xee\x69\xcd\x51\xa3\x2e\x9a\xc2\xff\x00\x09\x16\ \xdb\x84\x1b\x8a\x97\x35\xa6\x80\x71\x52\x7c\x40\x95\xec\x40\x40\ \x4e\x08\x2b\x50\x04\xee\xed\x9a\x99\x5a\x8c\xb3\x6e\x8e\x67\xa5\ \x91\x37\xc3\x4f\x8f\xe1\x83\xb7\xc4\xc7\x9b\x6f\x27\x8c\xe7\x1c\ \xf6\xab\x53\xbd\xac\xcb\x47\xbc\x99\xd8\x6e\xc8\x79\x09\x61\xe5\ \x10\xbf\x42\x4e\x29\xfd\x2b\x56\xd2\xd3\xa9\xde\x83\xc6\x48\xcd\ \x56\xf8\x50\x21\xc4\x1c\x28\x76\x23\xde\xa4\x96\x3b\xe8\x4a\x43\ \x32\xf0\x3e\x73\x55\xa9\x4e\xfa\xa3\x4d\x2a\xb6\xd1\x8e\x32\xed\ \xea\x61\xe1\x32\x22\xfc\xa0\xf2\x8a\x72\x83\x29\xc7\xdb\x1f\xb1\ \x50\x3d\x8d\x7b\x09\xb4\x3c\xbf\xb4\x13\x86\x87\xf1\xac\xdf\x9e\ \x84\x1d\xb1\xda\xcf\xb9\x22\xb3\xca\x4e\x5d\x5b\x5d\x8f\x8c\x54\ \x7a\xd7\xb2\x36\x82\xfe\x3f\xab\x20\x63\x27\x9a\xf5\x2e\x0c\xf9\ \xd2\x47\x38\xe4\x77\xa4\xc9\x9f\x28\x63\x81\x8e\xe2\x94\x37\x35\ \x0b\x3b\x1f\x40\x4e\x7d\xa9\x6e\x12\x5c\x86\xc6\x71\x7c\xcc\xbe\ \xe8\x28\xee\xd9\x14\xc9\x77\x88\xa4\x36\xb4\xe3\xca\xae\x45\x3f\ \xa9\xb1\x8d\xc8\x39\x42\xbb\xd6\x97\x9a\x0e\xb6\x52\x7b\x7a\x1a\ \x9a\x55\x32\xbb\x91\x56\x9e\x65\x62\x17\x1c\x60\xec\x38\xe0\xf2\ \x2b\x39\x19\x28\x1c\x1c\x7a\xfd\x6b\x74\xe8\xeb\x8d\x28\xfb\x13\ \xcd\x60\xf1\xc2\x32\x3f\x1f\x5a\xe8\xa7\x73\x9a\xd5\xb7\x35\xa0\ \xed\x6f\x3f\x1c\xd4\x77\x50\x24\xad\x97\x5c\x23\x93\xc0\xa7\xf1\ \x92\x03\x60\xf7\xf5\xa6\xad\x54\x90\xcd\xb9\x7e\xe5\x3c\x50\xf6\ \x64\xa3\x8d\x3f\x49\x30\x1c\xd4\xb0\x18\x42\x16\xe3\x82\x39\xc2\ \x10\x92\x4a\xcf\x88\xac\x0f\xe1\x55\x94\xa7\xd4\xd4\x44\x32\xe2\ \x42\x4a\xb9\x5a\x7b\x04\x01\xd8\x11\xfd\xae\xff\x00\x9d\x74\x2d\ \xfa\xe4\xc4\x3d\x64\xe5\xc5\xc6\xf2\xeb\x08\x2c\x32\x52\x8d\xca\ \x5e\x4e\x54\x33\xe8\x32\xa2\x3f\x0a\xa0\xb5\x5d\xbd\xe6\xb5\x7d\ \xc5\x97\x12\xa4\x07\x5f\x53\xa0\x3c\xad\xa7\x0a\x39\xef\xeb\x5e\ \x62\x75\x22\xeb\x64\x7c\xb5\x3d\x56\x1f\x09\x51\x60\xa3\x59\x2d\ \x1b\xb0\x97\x4b\xcb\x89\x12\xea\x87\xa4\x3e\xeb\x21\x2b\xc8\x53\ \x68\xdc\x48\xef\x8f\xe1\x8f\xc6\x94\x6a\x0b\x85\xc2\xfd\x7d\x12\ \x9e\x6c\xa1\x2b\x59\x6a\x33\x09\x1c\x34\x80\x78\x48\xfc\xf9\xa4\ \xac\x3a\x98\x58\x79\xa6\xd0\xa5\xe7\x8f\x2e\x46\x01\xed\xfc\xb9\ \xa7\xbd\x06\xf2\x1e\xd5\x11\x64\xc8\x61\x0f\x20\x2d\x3e\x22\x4e\ \x01\x27\x3e\x80\xf7\x27\x8e\x6a\x2a\x5a\x37\xa9\x6d\x91\x34\x13\ \x9c\xa3\x45\xbd\xd9\x67\x68\x3e\x90\x5e\x6e\x2d\x25\xe9\xcb\x6e\ \x22\x31\xc8\x57\x2a\xc9\xf8\xa9\x2e\x9e\xd1\xd7\x3d\x0b\xd4\xcb\ \x05\xe2\x2a\x54\xe1\x83\x29\x32\x32\x84\x90\x56\x8c\xe1\x69\xe3\ \xdd\x24\x8f\xc6\xae\xbd\x32\x23\xc8\x8e\xdb\xf1\xdb\x09\x65\x4d\ \x20\x84\xed\xc7\xd3\x3f\x38\xc5\x48\x92\xc3\x2e\x29\x0b\x2d\x24\ \xa8\xfa\x91\xda\xb8\xb2\x73\x9e\xaa\x5a\x9e\x87\xda\xb2\x75\x32\ \xac\xa6\xf9\x16\xf8\xf6\xeb\x9b\xab\xb7\x80\x63\xcb\xfd\xb3\x2a\ \x07\x82\x95\x0c\x8c\x7e\x1f\xc8\xd6\x77\x99\x0e\x46\xb7\x9f\x0d\ \x0a\x5a\x82\x09\x01\x3f\xda\xc7\x15\xe4\x09\xad\xf8\x5f\xab\xdd\ \x5a\x43\x8d\xa8\xfd\x9d\x4a\xfd\xd5\x13\xf7\x0f\xb0\x3d\xc7\xb1\ \xfa\xd6\x6d\x07\x1d\x0b\x0a\x18\x20\xe0\x83\x91\x83\x5a\x93\x4e\ \xed\x73\x39\x96\x69\xd9\xf2\x2b\x0d\x27\x76\xd5\xa6\xfb\x2d\x57\ \x48\xce\x08\x01\xb2\xd9\x65\x95\xe0\x0c\x9e\x54\x7d\xc5\x45\xe7\ \xd9\xf5\x4b\x17\xdb\x4c\xd8\xa7\xec\x51\x04\xe7\x4c\x87\xde\x88\ \xdc\x96\xdc\x6d\x69\x52\x53\xfb\x25\xf0\x48\xc8\xc0\xf7\xed\xcd\ \x5e\x82\xce\x7e\xfb\x6f\x23\xcd\x83\x85\x0c\xd2\xf4\xb0\xea\xdb\ \x6d\x0f\x36\xcb\xa9\x69\x61\xc4\x05\x73\xc8\xec\x69\xb4\xaa\x4e\ \x2a\xcc\x2b\xf0\xaa\x3b\xda\xd7\x2a\x1e\x8d\x88\xda\x56\xe5\x71\ \x55\xde\x35\xcd\xf5\xa6\x30\x8c\xf2\xcc\x72\x95\x48\x58\x39\x49\ \x2d\xe7\x09\xf2\x9c\xfe\x34\xa9\x56\x07\x5f\xb8\x22\x56\x93\xb3\ \xbf\x6a\x52\xe4\x91\x21\x0e\xa4\x04\x16\xfb\xe5\x48\xce\xd3\x93\ \xed\x83\x56\x94\xf8\xab\x7a\x42\x9e\x52\x1a\x4a\x94\x30\xac\x27\ \x71\x38\xed\xf1\x49\xd7\x19\x49\x00\x90\xbc\x11\xc9\xc7\x35\x59\ \x43\x32\xb4\x86\x50\xae\xa8\xbc\xd4\xd6\xaf\xb7\x61\x8f\xec\x52\ \xe5\xc6\x4c\x29\xae\x32\xfc\xc9\x4a\x43\x6e\x18\xe8\xc2\x01\xf4\ \x48\xcf\x7a\x8f\xc7\xb0\xb3\x0f\x5f\xfe\xbf\x62\x7c\x49\x6b\xbb\ \x4c\x94\xee\xd8\xea\xdf\xb1\x08\xc0\x49\x52\xfb\x67\x6e\xc0\x52\ \x3b\x1a\x96\xea\xeb\x8b\xda\x72\xd0\xd2\xe2\x25\xb3\x7b\xb8\x6e\ \x8d\x69\x64\x9c\x16\xf2\x3c\xf2\x55\xec\x94\x27\x24\x13\xeb\x50\ \xfe\x9d\xe9\xb6\x2c\x82\x52\x63\x2d\x4e\x30\xdb\xa5\x0d\x28\xaf\ \x20\x13\x82\xb5\x01\xe8\x54\x42\x73\xf4\xae\x7e\x26\xce\xa4\x21\ \x1e\xdb\xfa\xf5\xd8\x6f\xc3\xa9\x2a\x53\xaa\xdd\xae\x9a\xb7\x6f\ \x6f\xc1\x3b\x78\xd9\xf6\x16\x1b\x1b\x8b\x0b\x29\xc0\x29\xc0\xca\ \xbb\x1a\x8d\x4f\xb5\x44\x63\x5a\xc6\xd4\x4e\xba\xb8\xee\x2e\x22\ \xed\x8f\xbc\x85\x11\xb5\xa7\xfc\x89\x59\xc7\xaa\x5d\x2d\xfe\x07\ \xe2\xa4\xb6\xb2\x3c\x32\x97\x00\x27\x04\x63\x39\xa8\xb7\x54\xad\ \xee\x49\xd3\x32\x58\x6d\x6f\x25\x05\x3b\x87\x84\xa2\x95\x12\x08\ \x56\x32\x3d\xf0\x38\xfa\x53\xaa\x36\xa2\xa4\xb9\x6a\x64\xa4\xaf\ \x3c\x97\xb2\x7a\x7c\x19\xe3\xb2\xaf\x4f\xcb\x95\x06\x55\xf6\x4c\ \xc8\x29\x29\xd8\xdb\x1c\xa9\xf2\x09\x0a\x25\x44\xe4\x64\x72\x30\ \x33\x9e\xf5\x5c\xf5\x47\x4d\x3f\x70\xbc\x46\x99\xa6\xf4\xb2\xd0\ \x98\x88\x6f\xc3\xfb\x6b\x21\xd6\x54\xe9\x74\x15\xf8\xbc\x95\x94\ \x90\x00\x38\x3c\x8f\x6a\x97\x74\xfa\xf1\x17\x50\xdb\x00\x5a\x9a\ \x4d\xc5\x18\x54\xa4\xa4\xf2\xa5\x1c\xe1\x78\xfe\xf6\x09\xfa\x85\ \x0f\x4a\x98\xc7\x6a\x7b\x44\xa5\x25\x4a\x47\x04\x07\x46\x41\x1f\ \xce\xb4\xc2\xb7\x12\x2a\x48\x5d\x4a\x4e\x8c\x9c\x25\xa5\xbe\x1e\ \xbb\x8e\x5c\x56\x88\x72\x3f\x51\xdd\x93\x7d\xb5\x2d\xdb\x7b\xf7\ \x94\x3e\xa3\x0e\x23\x8c\x30\x96\x14\xa0\x5c\x65\x09\x56\x54\x94\ \x8c\x90\x92\x73\x4f\x7a\xd9\xeb\xd6\x93\xd5\x2e\x39\xa4\x2d\x9a\ \x85\x7a\x51\x21\x29\x31\x27\x28\xbe\x42\x40\x19\x20\x9c\xa8\x0f\ \x5c\x13\xeb\x5d\x19\x2d\xf9\x6b\x65\x49\x93\x14\x28\xab\xb6\x17\ \xbd\x39\x1e\xbc\xf6\xa4\x52\xd0\xf4\xa4\x00\xb6\xf6\x11\x80\x72\ \x8f\x4a\x5d\x66\xe5\xba\x1d\x87\xa9\x1a\x4a\xca\xef\xe3\xf8\x18\ \xf4\x0d\xed\x8d\x43\x62\x8b\x22\x12\xca\xd0\xb4\x0c\xa8\xa4\xa7\ \x8f\x6e\x40\xaa\xcb\xf4\x80\xb0\x07\x6d\xd7\x8b\x82\xda\x0b\x58\ \x65\x0e\x05\x01\xfd\x95\x8e\x3e\xb8\x35\x6b\xdb\x6d\x49\xb2\x3e\ \x57\x10\x84\xb0\xb5\xef\x2d\x60\x00\x14\x7b\xe3\xdb\xe9\x4d\x7d\ \x46\x81\x12\xeb\x66\x97\x0a\x62\x9c\x43\x13\x11\xe1\x1f\x0f\x97\ \x14\xa2\x41\x01\x03\xdc\xe3\xf0\xef\xe9\x59\x5a\xcb\x67\xd8\xc3\ \x32\xce\xf2\xec\xce\x4e\xb7\x28\x5b\xba\x42\xdd\x9d\xe4\x11\x37\ \x54\xdd\xd8\x7c\xa4\xf0\x53\x19\xa2\xa0\x15\x8f\x6d\xc7\x8c\xfa\ \x66\xac\x8e\x85\xc6\x7a\x5c\xb6\x2e\xa9\x21\x4c\xbc\xe2\xf7\x10\ \x73\x80\x14\x40\xcd\x44\xba\x8d\x65\x9b\x7c\xea\x79\xb7\x48\x91\ \x1e\x01\x65\xff\x00\xb2\xc5\x4a\x7e\xe3\x6d\xa5\xbe\x10\x9e\xdd\ \xbd\xcf\x04\xe7\x35\x26\xd1\xa5\x8d\x29\xa8\x60\xda\xad\xf2\x5a\ \x52\x87\xec\x5e\x09\xc9\x0e\x0c\xf3\xcf\x62\x41\xf5\xfc\xab\xb3\ \x43\x19\x08\xce\x32\xed\xd4\xe3\x63\x3a\x3a\xa3\xa0\xe4\xb9\x7f\ \x09\x1d\x81\xa5\xf0\x18\x46\x3b\xfe\xee\x3d\xea\x5c\x85\xa1\x94\ \x03\xc9\x57\xa7\xc7\x15\x5e\xe8\x69\x61\x50\x50\x54\xb0\x5c\xfa\ \x7a\xd4\xe2\x37\x20\x2d\x47\x27\xbe\x2b\xb9\x55\xaa\x8b\x37\x23\ \x87\x46\x5a\x19\xba\xeb\xce\x67\x7a\xb6\x80\x7b\x56\x29\x6f\x1c\ \xee\x51\x56\x3b\xfa\xd6\xd2\x48\x39\xe7\xd8\x57\x80\xf9\xcf\x27\ \x8e\x00\x27\xe6\x97\x7b\x2d\x06\x5a\xef\x53\x04\xb8\xeb\x0a\xde\ \xda\x8a\x87\x6e\x7b\x9a\x2b\x35\xe1\x38\x21\x47\xf0\x1c\x7d\x28\ \xa2\xc9\xee\x89\x4d\xad\x99\x0a\xe9\xb0\x43\x7a\x36\x0b\xef\xe7\ \x62\x7c\x4c\x0f\xff\x00\xa8\xaa\x70\x9b\x35\xe9\x89\x29\x6d\x45\ \xb6\xc0\xe3\x07\xe6\xa3\xda\x15\xd5\xc8\xd2\x90\x5b\xf3\x25\xb6\ \xfc\x4c\x10\x3d\x7c\x45\x7f\x9d\x3f\x21\x29\xc7\x39\x18\xc9\xfa\ \x71\x5b\xa1\x15\x64\xd9\xcd\x53\xea\xa4\x8d\x02\x3a\x41\x05\x47\ \x71\x3d\xf9\xed\x5b\xd4\x84\x1f\x2a\x06\x3e\x7d\xab\x15\x00\x0e\ \xd4\xee\x23\xb8\xad\xa8\x52\x4a\x7b\x67\xd4\x0f\x7e\x3d\xe9\xa5\ \x45\x36\x79\xea\x6a\x40\x8a\xf3\x89\x28\x73\xee\x27\xfd\x77\xa8\ \x86\xb2\x2b\x4d\xd9\x49\x4c\x90\xa6\x96\x90\xb4\xa4\x28\x1e\x0f\ \x62\x3d\xc1\xa8\xf7\x4b\xe3\xc0\x9d\x77\xbf\x5d\x2e\x4c\x46\x91\ \xa8\x18\xbe\xc8\x69\x4e\x3c\x80\xa7\x98\x42\x55\x86\x92\x82\x79\ \x4a\x36\x60\x8c\x70\x72\x7d\xea\xb3\x54\x08\x31\xfa\x2b\xa5\x2e\ \x05\xbd\x86\xe3\x2a\x2b\x37\x89\x4a\x52\xb7\xae\x2a\x64\x14\x6d\ \x52\xbb\x84\x04\x84\xa7\x03\x00\x0e\x29\x17\xb4\xb3\x25\xb8\x71\ \x5b\x8a\x4c\xb5\x9a\x01\x6d\x82\xda\x81\x49\x3e\x5c\x7a\xfe\x54\ \x27\xf6\xc1\x28\x42\xb7\x0c\xed\x51\x07\x23\x8e\x0d\x56\xb3\xad\ \x31\xe4\x6a\x6d\x4f\xa7\x6c\x52\x5b\xb5\x41\x95\x67\x63\xc6\xfb\ \x38\x09\x6d\x99\x4a\x71\x41\x3e\x51\x80\x37\x20\x00\x71\x8c\x83\ \x4a\x2c\xf6\x57\x75\x15\xa6\x75\x8e\x3d\xbe\xc7\x69\xbc\x59\xae\ \x4c\x2e\x43\x2d\x23\x30\x2e\x05\x08\xdc\x94\x2f\x00\x12\x92\x0f\ \x29\x39\x20\xa4\x67\xda\xaf\x9d\xf6\x15\xcc\x5d\x56\x08\x88\xc2\ \x36\x14\x96\xf1\x9c\x82\x0e\xee\xd5\xb2\x52\x9b\xfb\x53\x9b\x96\ \x8c\x95\x6d\xc6\x7f\x7b\x19\xc7\xd7\x1c\xe2\xa2\x7a\x06\xed\x78\ \xba\xe9\xbb\x7c\x8d\x23\x65\xd3\xf6\x88\xe1\xf7\x9a\x9f\x19\xe0\ \xbd\xa1\xc4\xb9\xb5\x45\x92\xd0\x09\x50\x24\x28\xe4\x8e\x49\xa8\ \x3e\xa3\x81\x68\x90\x7a\xb7\x70\xb8\xb4\xd2\xe4\xc5\x58\xfb\x13\ \x8e\x72\xa6\x5e\xfb\x3a\x4b\x65\xb3\xdd\x2a\x2b\x08\xe4\x60\x9c\ \x0f\x6a\x8e\x27\x30\x72\xd1\x34\x5b\x0c\xde\xe3\xcb\xd5\x12\x74\ \xd2\x22\xac\x3f\x12\x0b\x52\xd4\xee\x46\xd5\x05\xa9\x49\x09\x03\ \xbe\x46\xd3\xf9\xd2\x29\xeb\x8d\x0d\x2e\xcb\x79\xf4\x22\x33\x20\ \x97\x16\x55\xc2\x31\xdf\x3e\xdd\xaa\x0a\x6f\x42\xc9\x7c\xd4\x57\ \x6b\xfd\xbd\x53\xcb\x3a\x36\x1f\xdb\x22\x91\xfd\x6a\x8a\x96\x95\ \x21\x59\xcf\x04\x92\x0e\x41\xc0\xcd\x35\xc8\x86\xda\x75\x3e\xab\ \xb7\xfd\x86\xc9\x16\x33\xda\x3f\xed\x0e\xc3\xb5\x8c\xc7\x0e\x85\ \x2f\x62\x88\xc0\x05\x60\x14\xf3\x81\xc6\xd3\x50\xaa\x3d\x88\xce\ \x4c\x6e\xba\xc6\xd5\x12\xc5\x6c\xba\xc5\xff\x00\x6c\x17\x47\x59\ \x66\x13\x4d\xad\x28\x2b\x53\x83\x72\x72\x54\x46\xd0\x07\x27\x3d\ \xbd\xa9\xfe\x19\x5c\x94\xc6\x2f\x35\xf6\x77\xdd\x03\x73\x4a\x58\ \x51\x49\xf5\x19\x1c\x1e\xfd\xc5\x54\xd3\x2c\xf6\x94\x68\x5e\x97\ \x1f\xd5\xb0\x4f\xda\x2e\x36\xe2\xe9\x0c\xa0\xef\xdf\x19\x5b\xc2\ \xb8\xe7\x25\x23\x39\xef\x81\x9e\xd5\xae\xf4\xd5\xbd\x7a\x6f\x5f\ \x5d\x2e\x29\x69\x37\xd8\x57\x47\x51\x0d\xf2\x70\xfc\x70\x9d\x9f\ \x65\x4b\x47\xba\x41\x04\x63\x6f\x7c\x9a\x38\x8d\x6e\x46\x66\x74\ \xd3\xef\x22\x34\x06\x22\xa5\xd4\xa5\x44\x24\x11\x9e\x79\xed\x5a\ \xd8\x53\x67\x09\x4a\xd0\xa2\x46\x78\x56\x72\x33\xcf\xfe\xb5\x58\ \x58\xed\xec\x5e\x7a\xd3\x71\x95\x7a\x8c\x99\x12\x60\xda\x6d\xd2\ \x1a\x4a\x8e\x50\xcc\x82\x17\xb9\x61\x3d\xb7\x79\x71\x9e\xe0\x67\ \x1d\xcd\x41\xe3\x59\xed\xd2\x34\x3e\x9c\xb8\x3d\x15\x2a\x9b\x2b\ \x5c\x08\x6f\x48\xe7\xc5\x54\x75\x49\x71\xb5\x33\xbf\xbf\x86\x50\ \x48\xdb\x9c\x73\xdb\x9a\xce\xa5\x64\x69\x95\x57\x7b\xdb\xd2\x3a\ \x31\x0b\x42\xd2\x14\xda\x92\xa4\x9e\xc5\x27\x22\xb6\x14\x82\x80\ \x48\xed\x55\xc7\x4c\xe2\x31\x6f\xea\x37\x50\xad\x10\x19\x6e\x2c\ \x08\xf2\xe1\x38\xcc\x66\x52\x10\xd3\x6a\x72\x2a\x4a\xca\x52\x38\ \x19\x3c\x9c\x55\x8e\x06\x72\x3e\x6a\x6f\x71\xd0\x79\x91\x9c\x77\ \x54\xc9\xc7\x74\x1e\xe0\xd2\xb3\x83\x85\x8c\x10\x79\xf6\xa4\xa1\ \x2a\x50\xc1\xe6\xbd\xdc\xa6\xfe\xf7\x23\xf9\x52\xe4\xae\xc7\x45\ \xd9\x6a\x68\xbd\xc4\x0f\x33\xe2\x24\x1c\x8e\xf5\x1f\x03\xca\x52\ \x47\x63\x52\xe6\x76\xbc\xca\x93\xc6\x08\xa8\xc5\xcd\xaf\xb3\x48\ \x52\x48\xe0\x9e\x6b\x46\x1e\x7f\xe2\xf9\x19\xf1\x30\xff\x00\x25\ \xcc\xc2\xde\xc9\x75\xc3\xc7\x03\xb5\x45\xfa\x8a\xe9\x4c\x67\x10\ \x0e\x00\x18\xe2\xa7\x96\xa6\x36\xc3\x53\xa7\xdb\xd6\xab\x5e\xa6\ \xbc\xa4\xb0\xe0\x4f\xb1\xab\x4e\x57\x52\xb7\x22\x99\x6d\x04\xfb\ \x4a\xab\x48\x5b\x99\x7e\x45\xc2\xe4\xfb\x49\x71\x6d\x04\xec\xdc\ \x32\x01\x51\x2a\x26\x90\x75\x77\xa4\xcd\xdd\xe1\xc5\xbb\x24\xbc\ \xc4\xa0\x82\xa2\xe3\x4a\xde\xad\xbe\xc0\x1e\xff\x00\x4f\xa9\xa9\ \x3f\x4d\xff\x00\x6f\x69\xbc\xb2\x17\xb5\xcf\xb3\x25\x63\x1c\xe0\ \xa4\xed\x35\x68\xd9\x59\x55\xc2\xc7\x15\xc5\x36\x0a\xf6\x8d\xc4\ \xa7\x3e\x55\x27\x07\xf8\x1a\xf2\x58\xba\x6d\xd6\xcd\x17\x67\xc8\ \xf7\xb8\x4a\xbc\x3c\x24\x53\xd6\x3c\xd7\xc3\xee\x70\x55\xc7\x48\ \x16\x1b\x75\xb6\x9d\x52\xd6\x96\x37\x95\xe3\x85\x1c\xf2\x9c\x7a\ \x63\xb7\xd6\x99\x2c\xf0\x64\xb1\x71\x69\xef\x33\x61\xb2\x16\x16\ \x7b\x12\x30\x71\xf5\xed\x5d\x29\xd4\xdb\x45\x90\x75\x21\x76\xd8\ \x31\x3e\xc9\x19\xc8\x67\x73\xab\x04\x25\xd7\x82\xb2\x38\xf9\xc2\ \xbf\x21\x54\xf4\xd8\xad\x89\x0a\x86\xc4\x73\xb3\xc5\xfd\xa9\xda\ \x46\x13\xb8\x82\x9f\xa7\xb1\x1e\xdf\x14\xba\x18\xa9\xca\xf1\x96\ \xa3\xb1\x78\x0a\x2b\x25\x4a\x6a\xd7\xd6\xdf\xc1\xd5\xdd\x2f\x6d\ \xe6\xf4\x15\xb9\xf9\x61\x5e\x33\xc8\x0a\xf3\xfd\xe0\x9f\x4c\xfd\ \x7b\xd4\xd2\x3b\x99\x39\x23\xbf\x02\x99\x2d\xed\x26\x2d\xae\x2c\ \x74\xf0\xdb\x2c\x36\x84\x73\xc0\x4a\x52\x00\xfc\xb1\x4e\xb6\xce\ \x52\x92\x52\x40\x3e\x6e\x7b\x0f\xad\x67\x8b\xd7\x41\x15\x5e\x66\ \xd9\xe5\xc6\x02\xf2\xa9\xcc\xa3\x7b\x89\x18\x5b\x27\xfe\x14\x7b\ \x56\xbb\x6e\xa2\x86\xe3\xe2\x2c\xa7\x44\x77\xf3\xfd\x53\xc7\x6a\ \xd3\xf1\xcf\xde\x14\xf2\x0e\xe2\xa0\x92\x4e\x7b\x1f\x4c\x7d\x68\ \x91\x6a\xb7\xcd\x63\xc2\x9b\x0d\x99\x20\x9c\x00\xe2\x01\xc5\x31\ \x41\xa7\x78\xb2\x8a\x70\x92\xb4\xd7\xc8\x7b\xb6\x2a\x33\xad\xa5\ \x4b\x42\x92\x30\x3c\xdb\x72\x83\xff\x00\x58\x7f\x8d\x3e\x43\x8f\ \x13\x68\x29\x71\x93\xf4\x22\xab\xe6\x74\x15\x9c\x2c\xaa\x23\xf7\ \x6b\x6a\xbb\x83\x0e\xe0\xe2\x06\x7e\x99\xc5\x2e\x6b\x46\x49\x48\ \xca\x75\x96\xad\xd8\x3d\x3e\xde\x0f\xf1\x29\xad\x11\x9d\x45\xbc\ \x7c\xc4\x4e\x8d\x17\xb5\x4b\x78\xaf\xb3\x64\xca\x4c\x64\x10\x4a\ \x31\x84\xf2\x48\x1c\x0f\xa9\xed\x50\x8b\xbe\xab\x80\x89\x46\x06\ \x9e\x8c\x35\x15\xdd\x27\x68\x6a\x39\xcc\x66\x0f\xf6\x9f\x74\x79\ \x40\x07\xf7\x41\x26\x94\x3d\xa2\xec\x60\x03\x78\x93\x76\xbd\x60\ \xfd\xdb\x85\xc1\xc7\x50\x4f\xca\x01\x09\xfe\x14\xe9\x19\xe8\xd6\ \xd8\x3e\x04\x48\xb1\xe2\x46\x69\x39\x08\x65\xb0\x84\x0f\x6c\x01\ \x51\x27\x37\xbd\x97\x9b\xfb\x2f\x32\x69\xc2\x94\x35\xd6\x5e\x4b\ \xf9\x6d\xf9\x78\x91\x48\x1a\x6a\x4a\x25\x4a\xbd\x5f\x65\x7e\xb2\ \xbc\xcd\x47\x87\x21\xf2\x30\x86\x9b\xff\x00\xe1\x34\x3f\x71\x3f\ \xc4\xd2\x6f\xb2\x44\xb6\xc3\x10\x61\xa0\x36\xca\x09\xda\x90\x49\ \x39\xfa\x9e\x49\xa7\x69\xf3\xa6\x5c\xde\xda\xd2\x8a\x00\x3d\xc7\ \x14\x95\x36\xf0\xde\x56\xbc\xaf\x06\x93\x92\x37\xea\xa3\x53\xab\ \x39\x7b\xcf\xe1\xcb\xbb\xe5\xc8\xdd\x08\x2d\x05\xb4\x04\xf9\x30\ \x09\x39\xe7\x9a\x57\x75\x82\xa7\xa2\x2d\x3c\x1c\x8e\xc4\x52\xab\ \x23\x71\xd6\xa6\xd0\xb5\x15\x73\x82\xae\xf4\xf3\x72\x8f\x1c\xa1\ \x68\x6d\x3b\xa9\xaa\x92\x94\x6e\x67\x95\x4c\xb2\x48\xa6\xed\xfa\ \x72\x12\xe4\xab\xf5\x60\x66\xd9\x76\x8c\xe2\x94\xdb\xc8\x4f\x95\ \xe0\x7b\xa1\xc1\xea\x93\x81\xf2\x0e\x08\xe6\xa4\xf0\x35\x01\x43\ \x88\xb7\xdf\x99\x55\xbe\x71\x00\x6d\x59\xce\xff\x00\x94\x9e\xce\ \x0f\x91\xe6\xf7\x4f\xad\x21\xbf\xe1\x9d\x40\x51\x18\x6f\x3b\x72\ \xe6\x0f\x20\xfa\x54\xa2\xc6\xe4\x3b\xed\xa9\x70\x6e\x71\x99\x94\ \x13\xf7\xd0\xeb\x61\x49\x3f\x50\x7d\x6b\x2d\x34\xd3\xb4\x5e\xbe\ \x46\xaa\xd2\x52\x8a\x75\x15\xd7\x9a\xfb\xae\xef\x95\xb5\x1b\xee\ \x62\x33\xe5\x1f\x63\x9c\xd2\xf1\x9c\xed\x58\x18\xfa\x83\xda\x90\ \xc9\x93\x1a\x23\x79\x9d\x3a\x2b\x00\x0e\x54\xe3\xe9\x48\xfe\x74\ \xba\xe3\xd3\xcb\x14\x92\xa4\x34\xe4\xf8\xcd\xab\x80\x84\x3d\xb9\ \x09\xfa\x05\xe7\x14\xdd\x1f\xa7\x71\x6d\xe0\x18\xb7\x4c\x14\xf6\ \x5b\x90\x18\x5a\xff\x00\x32\x9a\xbc\x95\x5b\xeb\x1f\x93\xfb\xd8\ \xac\x55\x1b\x7b\xff\x00\x34\xfe\x97\x19\x5c\xd4\x28\x90\x54\x8b\ \x2c\x67\x6f\x2a\xce\x03\x88\xca\x23\x20\xff\x00\x79\xd2\x31\x81\ \xec\x9c\x9a\xf1\x9b\x7b\xac\xb8\xa9\xd7\x19\x49\x99\x70\x29\xc2\ \x56\x84\xe1\xa6\x12\x7f\x75\xa4\xfa\x0f\x75\x1e\x4d\x3d\xce\xd3\ \xd3\x49\x0b\x76\xff\x00\x31\xc2\x83\x90\x14\xda\x00\xfc\x00\xed\ \x49\x5a\x8b\x25\x08\x5a\x1d\x79\x2e\x8c\x79\x4e\xdc\x67\xe9\x8a\ \xcf\x25\x2d\x9a\x25\xca\x0b\xdd\x67\x3e\x6b\xbb\x71\x3d\x7b\x8a\ \x5b\x73\xc0\xdf\xb2\x5b\x25\x47\xca\x56\x13\xce\x3d\xc9\xc0\xf2\ \x9e\x0f\x6f\x5a\x6b\xb6\xc7\x59\xbf\xdb\xdf\x71\xb6\x9b\xc9\x53\ \xdb\x1b\x18\x03\xcd\x8f\xc3\xf1\xf4\xa7\x7e\xb4\x19\x11\xba\x95\ \x6f\x9e\xc1\xca\xe1\x04\x1d\xbb\x41\x29\x0a\x47\x2a\xf9\x00\x81\ \xf4\xc1\xa6\x7d\x2c\xbf\xb4\xdc\xd5\x29\x4a\x2b\x6c\x10\xcb\x27\ \xb0\x20\x77\x35\x7a\x69\xce\x50\x5e\xb7\x37\xe6\x8d\x2e\x8d\xc4\ \x54\x7d\x96\xf9\xa4\x8e\x9b\xe9\xab\xe5\xc8\xcd\xac\x81\xc7\x6c\ \x55\xad\x15\x40\x34\x95\x2c\x8c\x63\xb6\x6a\xa4\xe9\xb8\x52\x61\ \xb4\x84\x03\xda\xad\x9b\x74\x40\x5b\xdc\xe1\x2a\x24\x1e\xd5\xed\ \x1c\x54\x29\x45\x33\xe7\x14\x6f\xb2\x37\x78\xc8\xc8\x39\x04\xfc\ \x0f\x8a\xc9\x38\x3c\x83\x80\x79\xe0\x66\x94\x08\x8c\xad\x3f\x73\ \xe0\x0a\x4a\xfc\x63\x1c\xee\x6c\xe1\x39\xe4\x7b\x52\x54\xa2\xdd\ \x91\xa5\xc6\x4b\x56\x66\xbe\x53\x81\xdf\x04\x7d\x28\xa4\x57\x0b\ \x83\x31\xe2\x93\xb8\x6e\xf4\x1e\x94\x53\xa1\x4a\x4d\x08\x9d\x58\ \x27\xa9\x05\xd0\x2a\x6d\xad\x1d\x07\x23\x27\x2b\xec\x7d\x37\xab\ \x9a\x79\x32\x54\xa2\x36\x34\x4f\x18\xed\x9a\x6d\xe9\x95\xbd\x4f\ \xe9\x48\x4f\x3e\xaf\x29\xf1\x38\xcf\xfc\x62\xaa\x68\x98\xc8\x4f\ \x01\xb4\x82\x3f\x9d\x68\xe2\xc6\x29\x23\x2d\x3a\x52\x94\x53\x23\ \x09\x92\xa0\xbf\xda\x24\xa0\x64\x60\x91\xc7\xfa\xef\x4a\x52\xea\ \x55\xca\x33\x82\x30\x38\xfe\x54\xf3\x26\x23\x0f\x34\x42\x92\x02\ \x8f\xae\x3d\x2a\x29\x70\x9c\x8b\x3b\xea\x61\xc1\x9c\x9f\x2f\x35\ \x78\x4d\x4f\x62\x27\x07\x03\x64\xbb\x7d\x8c\x5d\x99\xbb\xc8\xb6\ \xc0\x55\xc1\xa0\x42\x25\x29\x94\x17\x53\xc6\x30\x17\x8c\x8e\x3e\ \x6a\x37\x75\x6a\xdc\x1b\x4c\x28\x70\x62\xb1\x01\xb4\x96\xd1\x15\ \xa6\x52\x96\x82\x79\x24\x04\x81\xb4\x02\x49\xe3\x15\x59\xf5\x3f\ \x55\x5f\xb5\x0e\x95\xbc\xca\xb6\xc0\x2d\xda\xe2\x4f\x6a\x1a\xa6\ \x09\x05\x0e\x15\x25\xf6\xc2\x88\x48\x4e\x36\xee\xf2\xfd\xec\xf2\ \x4e\x31\x52\x4b\xb6\xa4\x9b\x67\x91\x7c\x71\x16\x96\x25\x31\x61\ \x43\x6a\xb8\x17\x25\x86\x9c\x3b\xd3\xbb\x6b\x49\xda\x77\x14\xa4\ \x85\x1c\x91\xdc\x01\xf1\x19\xe2\x98\xac\xc8\x92\x5a\x34\xb5\xa4\ \x42\x54\x75\x5a\x20\x22\x1b\x87\x72\xe2\xa6\x3a\x03\x6a\x3f\x29\ \xc6\x0f\x20\x7a\x7a\x0a\x75\x3a\x6b\x4f\x9b\x62\x2d\xa3\x4f\xda\ \x97\x11\x0a\xdc\x98\xe6\x22\x0b\x49\x38\xee\x13\x8c\x67\x1e\xb5\ \x16\x91\xaf\xcc\x08\x9a\x9d\x72\x60\x00\xbb\x3b\x4c\xbb\x15\x09\ \x5e\x3e\xd6\x97\x9b\xcb\x47\xb7\x19\x5e\x53\xeb\xda\x90\xea\x0e\ \xa5\x4e\x80\xe5\xd3\xec\xd6\xd6\x1e\x6e\xce\xd3\x4b\xb8\x93\x33\ \x62\xb7\x29\x3b\x94\x86\x86\xd3\xbb\x6a\x4e\x4e\x48\xf6\xef\x53\ \x9a\x21\x74\x59\xf6\x65\xc6\x81\x01\x31\x23\xc7\x69\x94\x20\x6d\ \x42\x1b\x48\x09\x03\xd8\x01\xc0\xfc\x29\xa6\xc9\xa1\xac\xd1\xb5\ \x15\xd7\x50\xca\x89\x1a\x6c\xfb\x84\x84\xc8\x4a\xdf\x8c\x85\x2e\ \x31\x4a\x52\x9c\x21\x58\x24\x03\xb4\x1f\xad\x56\x6e\xea\x57\x2c\ \x9a\xd7\x55\xdf\x24\xba\xf3\xb0\xa2\xda\x22\x48\x08\x4a\xb2\x0e\ \x77\xe3\x68\xec\x0a\xb8\x1f\x95\x4b\x22\x75\x0e\xe9\x6f\x9a\x8b\ \x75\xfe\xca\xcc\x49\x32\x60\x3d\x32\x19\x6a\x51\x75\x2a\x2d\x00\ \x56\xd2\xc9\x42\x70\xa0\x14\x0e\x46\x47\x7e\x6a\xad\xc5\x92\xa4\ \x9e\xe4\xd8\xc1\x80\xcc\x99\x0f\xbb\x6d\x88\xe3\xb2\x19\xf0\x5e\ \x75\x4c\xa4\xa9\xc6\xc6\x70\x85\x12\x32\x53\xc9\xe0\xf1\xc9\xad\ \x16\x8b\x25\xa2\x08\x2a\xb7\x5a\x60\x43\x6c\x25\x48\x08\x62\x3a\ \x10\x02\x55\x82\xa1\xc0\xe0\x12\x06\x47\xc5\x57\xf6\x9e\xa0\xdd\ \x6e\xcf\xe9\xf7\x66\x5a\x1b\x8b\x02\xfe\x4a\x62\x2d\x32\x8a\xdc\ \x43\x9b\x0a\x80\x5a\x76\x80\x02\x80\x38\xc1\x3f\x3d\xf8\x46\xd7\ \x51\x6f\x89\xb7\x43\xba\x37\xa7\xd2\xe4\x39\x57\x43\x6a\x6c\x09\ \xb8\x70\xc8\xdc\xa4\xa4\xed\x29\xc6\xc2\xa4\xe3\x39\xc8\xce\x71\ \xc7\x33\x9a\x3b\x91\x99\x16\x23\x7a\x77\x4f\xb4\xc3\x71\x98\xb2\ \x5b\x58\x69\xb7\xfe\xd2\xd2\x5a\x88\x84\x84\x3a\x32\x03\x80\x01\ \xc2\xf9\x3e\x6e\xfc\x9a\x4f\x36\xc7\x6d\x55\xc5\xb9\xb2\x6d\x70\ \x9e\x94\xde\x3c\x39\x0e\x47\x4a\x9c\x47\xd1\x44\x64\x7a\x54\x65\ \x1d\x45\x72\x24\x2d\x44\x9b\xcd\xb1\x0d\xcf\xb2\x3c\xcb\x2a\x66\ \x3c\x8d\xe8\x7d\x4f\x04\x96\xb6\xa9\x49\x4e\x32\x54\x01\xc8\xe3\ \xbd\x2e\x3a\xbe\x74\x68\x1a\xa1\x37\x4b\x6c\x31\x3a\xc3\x6f\x4d\ \xc7\xc3\x8f\x33\xc6\x69\xf6\x94\x15\x8c\x28\xa1\x24\x10\x52\x41\ \xc8\xf6\x3e\xb4\x39\xc1\x6e\x0a\xc4\xc6\xdc\xe4\x06\x64\xae\x58\ \x89\x1d\x13\x1e\x4a\x50\xe4\x94\xb6\x90\xe3\x89\x4e\x76\x82\xac\ \x64\x81\x93\x80\x7b\x64\xd3\xa4\x7b\x35\x89\x51\x19\x61\xbb\x4d\ \xb8\x47\x66\x40\x94\xd3\x42\x32\x36\xb6\xfe\xe2\xaf\x11\x23\x18\ \x0b\xdc\x49\xdc\x39\xc9\xce\x6a\xbf\x85\x74\xbc\x39\x7f\x83\x67\ \x93\x69\x8b\x15\xdb\xb5\xb1\xcb\x85\xb0\xfd\xb4\xb8\x06\xcd\xa7\ \x63\xde\x41\xb0\xf9\xd2\x7c\xbb\x87\x71\xcf\x72\x74\x5a\xfb\xa9\ \xee\xda\x1e\x0d\xde\xf2\x23\xba\x89\x69\x52\xda\x71\xa5\x12\xb2\ \x3c\x45\x82\x14\x36\x80\x9c\x60\x01\x82\x73\x4b\x79\x2a\x7b\xa3\ \x61\x53\x2b\xb3\x45\x8d\x1a\xdf\x19\x13\xa4\xca\x89\x0e\x3b\x52\ \x25\x14\x2a\x43\xed\xb4\x94\xad\xe2\x91\xb5\x3b\xd4\x06\x55\x81\ \xc0\xce\x70\x38\xa7\x04\xc2\x51\x39\x2b\x39\xf5\x15\x53\x5a\xf5\ \xac\xbd\x3c\x8d\x63\x39\xfb\x7a\x9f\x93\x1a\xff\x00\x12\x22\x9b\ \x5d\xc1\x6e\xb5\x87\xbc\x34\x85\x20\x29\x23\x60\x09\x50\x25\x20\ \x11\x9c\xf3\x8c\x54\xbb\x51\xf5\x07\xf5\x15\xfb\x51\xc1\x7e\xd8\ \xe4\x86\x2c\x96\x44\x5d\x0a\x99\x5e\x5c\x74\xa9\x4b\x05\x18\xc6\ \x00\x1b\x73\x9c\xfb\xd6\x59\xd5\x69\xd9\x1a\xa9\xca\x9b\x57\x97\ \xad\xfe\xc4\xa5\x71\xdf\x68\x64\x28\xa8\x0e\xfc\x57\xa7\x0e\x23\ \x6a\xb8\x35\x5d\xeb\xdd\x67\xaa\xe3\xf4\x86\x5e\xa9\xb6\xb3\x62\ \x61\x4e\x18\xa6\x3b\xd1\x2e\x2a\x94\x03\x6e\xb8\x94\x12\x09\x69\ \x23\x70\x2a\x48\xf5\x18\x2a\x3c\x10\x01\xb0\x62\xb5\x70\x5c\x06\ \x9e\xb8\xa2\x33\x53\x79\xf1\x53\x15\xc5\x2d\xb1\xc9\xc6\x0a\x92\ \x09\xe3\x19\xe0\x72\x6a\x23\x52\xef\x52\xfa\x37\x68\x9b\x2d\xca\ \x2d\xaf\x61\x3d\x8f\x1f\x15\xaa\xff\x00\x04\x3a\xf2\x54\x79\xcd\ \x64\xca\xb0\xf8\x51\xfa\x1a\x72\x9a\xcf\x8c\xd2\x76\xf7\x06\xac\ \xe7\x92\xa2\x91\x68\xc3\x3d\x37\x11\x0b\x8d\x86\xad\xa1\x3d\x8e\ \x3d\x6a\xad\xea\x04\x70\xb8\xaf\x15\x0e\x4d\x5b\x17\x4c\xa6\x38\ \x18\xc6\x07\x35\x5c\x6b\x36\xc3\x91\x95\x81\xc0\xef\x5a\x30\xdd\ \x64\xef\xcc\x4e\x21\x59\xa4\x51\x3a\x5e\xe6\xfd\x9b\x51\xcb\x8e\ \xd9\xc7\x8a\xd2\xc0\x1e\xe0\x8e\x7f\x8e\x0d\x74\x96\x91\x2c\xb5\ \xa4\x21\x3b\xb4\x1d\xcc\x25\x5f\xc2\xb9\x86\x79\x0a\xea\x84\x28\ \x28\x20\x78\xb1\x1c\x52\x47\xf7\xb7\x63\xf9\x57\x42\x69\xb9\x92\ \x1c\xd2\xf0\xd2\xd3\x4a\x79\x0d\xb2\x1b\x73\xc3\xee\x85\x27\x83\ \x9f\xca\xb8\x18\xac\xaa\xa6\x87\xa4\xc0\x66\x9e\x12\x29\xf6\x90\ \x6e\xa2\xdb\x2d\x31\x51\x3b\x50\xdc\x22\x46\x54\x85\x61\x4c\x25\ \x4a\xe4\xed\xc9\xed\xec\x9c\x02\x4f\xcf\x35\x46\xda\x5b\x6a\xe0\ \xf2\xda\x91\x19\x4c\xb7\x3d\x2a\x5b\x4a\x4a\xf2\x16\xde\xe5\x2b\ \x23\x3d\xc8\xdc\xa1\xcf\x1d\xea\xe0\xfd\x24\xee\xae\x42\xd3\xb6\ \x4b\x78\x8c\x8d\xb3\x56\xf2\x14\xeb\xec\x12\x84\xa3\xca\x92\x9d\ \xde\xe4\x2b\x38\x1c\x9c\x7c\x55\x25\x6d\x75\x2f\xcc\x8d\x0d\xe0\ \xd0\x54\x64\xa5\x2e\xb9\xbf\x07\x6e\xe2\x02\x07\xf6\x46\x55\x8e\ \x7e\x6b\x8b\x51\x24\xda\x3d\x05\x2c\xd2\xa5\x19\xcb\xd7\x23\xa0\ \xf4\xfc\xd7\x5f\xd3\x16\xc7\xdf\x42\x10\x4c\x74\x21\x41\x27\x39\ \x21\x23\xf8\x1c\xd4\xb2\xd0\xbd\x91\xc0\x5a\x81\x07\x8e\xd5\x5d\ \xd8\x5e\x77\xf5\x5c\x78\xc5\xb7\x37\x8e\x77\xa9\x7c\x0f\x4e\xde\ \xfc\x7e\x15\x3d\xb4\x2f\xc4\x84\x56\x94\x85\x0d\xa7\x8f\x5c\x1a\ \xad\x39\x5d\x98\xab\x44\x7e\x88\x77\x1d\xd8\x4e\xe3\xc1\x03\xb6\ \x29\xca\x37\x86\x4e\xdd\xc4\x28\x77\x09\xef\xf9\xd3\x3c\x65\x2d\ \x6c\xa5\x68\x4f\x95\x49\x03\x69\xe0\xfe\x3e\xd4\xec\xdb\xa8\x4a\ \x37\x92\x00\x00\x7e\x15\xae\x0c\xca\xd0\xed\x1b\x68\x56\xe2\x53\ \x8c\x71\x4a\x5f\x7c\x36\xd1\x50\x19\xe2\x9b\x22\x38\x92\x92\x07\ \xaf\xc5\x23\xbd\x4c\x2d\x84\xb6\xd0\xdc\xe9\xe1\x29\x1e\xb4\xfe\ \x22\x8a\x17\xc3\xcd\x2b\x19\x4b\x96\x15\x20\x23\x24\xac\xf6\x48\ \xac\x2e\x4c\x2d\xfb\x6b\xd1\xe3\xe3\xc5\x29\xca\x72\x7b\x9a\xd3\ \x19\xb4\xc3\x41\x79\xf5\x05\xc8\x5f\x2a\x23\xd3\xe0\x7b\x52\x29\ \x93\xd0\xb2\x5a\x52\x94\x90\x53\xf7\xb3\xc8\x1f\x15\x55\xd6\xd5\ \x8f\x4b\x55\x97\x90\xcb\x03\x51\x42\x8e\xb5\x44\x92\x92\xdc\x96\ \xf8\x71\xb5\x70\xa0\x7d\xb1\x55\x6f\x5a\x75\x67\x5d\xa1\xcf\x42\ \x74\x96\x9a\x44\x2b\x52\x87\xec\x9e\x44\x74\xc8\x75\xdf\xf9\x44\ \xe4\x27\xe9\x8f\xc6\xad\x15\x96\x27\x36\x82\xfc\x44\x2c\xa0\x80\ \x92\xa1\x95\x0c\x76\xe7\xbe\x69\xce\x04\x95\xf8\xff\x00\x64\xdb\ \x2c\x6f\x19\x1c\x6e\x18\xa5\xaa\x52\x4f\x7d\x0d\xd7\xa6\xaf\xd5\ \xf5\xdd\xfd\x32\xa6\xe8\x9f\x52\xb5\xa7\xeb\x98\xb6\x5e\xa2\xd8\ \xd3\x6e\x99\x34\x91\x0a\x63\x69\xd8\x87\xd6\x06\x7c\x35\xa4\x12\ \x12\xa2\x01\xc1\x18\xcf\x6c\x55\xcd\xab\x75\x1c\x4b\x4e\x9c\x9f\ \x78\x96\xef\x87\x1a\x1b\x0a\x79\xe2\x0e\x4e\xd4\x8c\x90\x3e\x4f\ \x61\xf3\x4c\xba\x8f\x4d\xb5\x31\xb4\xca\x8c\x86\x1e\x71\x0a\x0b\ \x09\x5b\x78\x21\x40\xf0\x52\x7d\xea\x17\xaa\xa0\xde\xae\x50\x95\ \x63\x93\x0a\x43\xcd\xc8\x50\x2e\x64\x8d\x84\x03\x9e\x7e\x38\xed\ \x54\xa9\x39\xc2\xfa\x12\xa8\xd1\xaf\x28\xb8\xbb\x5b\x7b\xfa\x44\ \x1f\xa7\x7a\xd6\xf9\x7e\x95\x37\x52\x5c\xe5\x45\x85\x69\x79\xd3\ \x96\x1d\x21\x02\x33\x7e\x87\x79\xef\xf3\xee\x7b\x55\xc5\xd3\x1d\ \x4d\x0e\xeb\x16\x74\xfb\x79\x2e\x43\x4b\xfe\x1a\x1d\x29\x20\x39\ \x81\xc9\x4e\x7b\x8a\x88\x41\xb0\x5b\xa2\x43\x4c\x79\x16\xd6\xa6\ \x25\x27\x62\x10\xe3\x23\xc3\x07\x19\xec\x46\x3f\x3a\x94\xd8\xee\ \x31\x23\xb2\xcc\x56\xd8\x69\xa1\xfd\x5a\x5b\x42\x40\x49\x23\xdb\ \x1d\xbf\xf2\xa4\x52\xa4\xe3\x2c\xcd\xdb\xb8\xd7\x8d\x95\x1a\x91\ \xb4\x23\xd9\xeb\xc4\xb2\xa1\xca\x6a\x42\x4f\xad\x6a\x95\x93\xca\ \x12\x0f\xb6\x7d\x69\x96\x14\x9f\x30\x52\x14\x38\x1c\xe3\xd4\x53\ \xba\x1d\x4a\x9b\xee\x49\x27\xb7\xb5\x6d\x52\xba\xb3\x38\x4e\x19\ \x5d\xc4\x92\x9b\xdc\x9c\x90\x01\x3e\x86\xa2\x77\x84\xa1\x93\xbd\ \x43\x6a\x42\x87\x73\x53\x07\x16\x08\x50\x52\x8a\x89\x3c\xfc\x54\ \x47\x54\xa9\x28\x8c\xe9\xc2\x31\x8f\x26\xef\x7f\x63\x59\xeb\x69\ \x1b\x97\x85\xef\x63\x9d\xfa\xca\xcf\xeb\x0e\xa3\xbb\x1b\xc4\x6c\ \x17\x22\x78\x1e\x13\x99\x0a\x2b\x09\xde\x95\x20\x8f\x5c\xff\x00\ \xe8\x45\x45\x2d\x37\x2f\x07\x5e\xda\xf4\xd8\xf0\x8b\x6c\x47\x57\ \x8a\x50\x80\x32\xf2\x93\x93\x9c\x13\x9c\x11\x8c\xf1\xce\x6a\x6f\ \x75\xfb\x15\xef\x5d\xc8\xfd\xa7\x88\x44\xa7\x1b\x43\x78\xf3\x95\ \xa1\x20\x00\x32\x3b\x8c\x8c\x11\xdf\x07\x8a\xa4\x2d\x17\x69\x0e\ \x75\x34\x4d\x52\x9b\x42\xd3\x39\x59\xc1\xe3\xef\x10\x7f\xf4\xaa\ \xe0\x9d\xe4\xdf\x61\xab\x1c\xbf\xf8\xf8\x5f\xed\xf4\x47\x71\x74\ \xb8\xa7\xec\x8d\x93\xc9\xe3\xbd\x5b\xb0\x16\x36\x00\x0f\xe7\x54\ \x4f\x4e\xe7\xa5\x2d\x60\x1f\xbb\xc8\xe6\xac\x2b\x66\xa3\xf0\xe7\ \xb6\x16\xad\xad\xab\x8e\xfc\x57\xb2\x51\x75\xa9\x29\x1e\x0e\x9d\ \x65\x07\x66\x4f\xb3\x8c\x67\xf9\x56\x32\x46\xe6\x17\x93\xdc\x11\ \xcd\x69\x6a\x63\x0b\x48\x58\x70\x24\x7d\x6b\x5c\xb9\x49\x52\x7c\ \x36\xb0\xaa\xca\xa1\x2c\xdb\x1b\x9c\xe3\x97\x71\x89\x9b\x58\x5b\ \xa5\xc9\x4e\x65\x21\x5e\x50\x73\x45\x3c\xb6\xd0\x43\x78\xee\x73\ \x45\x6a\x75\x5b\x7b\x99\x15\x18\xa5\xb1\x18\xe9\xf3\xad\x31\xa2\ \x20\xad\xc2\x9d\xbf\xb4\xe3\x1f\xf1\xaa\xa9\x1b\x0b\x43\xcd\x85\ \x21\x47\x18\xcf\x06\xab\x58\x93\x1c\x6f\x43\x5b\xa3\x34\xac\x29\ \x5b\xfd\x7b\x7e\xd1\x54\xe3\xa7\xf5\x22\xe2\x36\x23\xbe\x14\x52\ \x39\x0a\x35\x78\xd1\xbc\x2e\xb7\x15\x1a\xd6\xb2\x7b\x13\xb2\x0e\ \xd3\x9c\x1f\xad\x43\xb5\x0c\x58\xf2\xaf\x00\xad\xad\xdb\x79\xc7\ \xcd\x2e\x1a\x8d\xb9\x67\xc2\x8a\x09\x50\xe0\xd1\x1d\xa5\x29\x65\ \xc5\x11\xe2\x2b\xb9\xc5\x32\x94\x1c\x75\x65\x6a\xcd\x4b\x44\x55\ \xb7\x5d\x07\xa9\x57\xa7\x2f\x7a\x62\xd8\xfd\xa1\x16\xab\x85\xcf\ \xf5\x83\x4e\xbe\x56\x97\x9a\xcb\xa9\x78\xb5\xb4\x24\x82\x37\xa7\ \x85\x6e\xc8\x07\xb1\xa7\xf9\x3a\x5e\x6c\x5d\x67\x78\xbd\xb1\x64\ \xd3\x57\xa6\x6e\xfe\x13\x8e\x22\xea\x8c\x2e\x3b\x88\x46\xc2\x52\ \xaf\x0d\x7b\x92\x40\x49\xdb\xe5\xe7\x3c\xfa\x54\xd5\x6a\x6d\xbc\ \x85\x3a\xda\x48\x04\xe0\xab\x1c\x7b\xfd\x2b\xd2\xa4\x85\xa1\x2a\ \x52\x7c\xfc\x0f\x92\x39\xc0\xfc\x2a\x5d\x28\xbd\xc4\x25\x62\x35\ \xad\xba\x72\xad\x5d\xac\x6c\xd7\x8b\x73\xb0\x22\xda\x9b\x65\xb6\ \x6e\x91\xd5\xb9\x2b\x75\x2c\xb9\xe2\xb1\xb0\x24\x60\xe1\x79\x07\ \x24\x71\xef\xda\xa1\x37\xcd\x19\x2e\xcf\xac\x2e\xf3\x22\xd9\xec\ \x57\x56\xae\x05\xb5\xa9\x37\x24\x10\xb6\x16\x94\xed\x25\x27\x62\ \xf7\x24\x80\x38\xe3\x9c\xf3\x56\xe5\xa7\x50\xdb\x2d\xfa\xa2\x2d\ \x8a\x44\xd4\xb7\x2e\x5b\x4b\x75\xa6\x94\x71\x94\x20\xa4\x12\x4f\ \x61\xca\xd3\x8c\xf7\xe7\x1d\xa9\x46\xb0\x44\x34\xcc\x57\x8e\xa4\ \x23\x29\xca\x94\xae\x31\xf3\x9a\x4c\x16\x5a\x8e\x1c\xb7\x1f\x38\ \x46\x70\xe2\x2d\xef\xa9\x50\xdc\xf4\x8a\xaf\x2f\xea\x94\x49\x76\ \x3b\x30\xef\x36\xb8\xd0\xe3\xf8\x69\x25\x6c\xad\xa2\xa2\x14\x53\ \x80\x36\x82\x53\xc0\x3e\x87\xb5\x21\xbb\x58\x6f\x93\x26\xb7\x7a\ \xd4\x0e\x40\xdd\x6e\xb6\x48\x66\x33\x51\x14\xa5\x78\x8e\x38\x90\ \x16\xe1\x25\x23\x6f\x09\x18\x48\xcf\x7e\xf5\x65\x26\xda\xf1\x07\ \xec\xcb\x42\x9b\x3c\x82\x0f\x1f\x5a\xc5\x30\x43\xa8\xf1\xd6\xf3\ \x65\x19\xc0\x5e\xf1\x8c\xe7\xd0\xfd\x6b\x46\x48\x99\xf2\x95\xc7\ \x4c\x6c\xb7\x59\x76\x7d\x17\x2a\xee\xcc\x58\xb0\xac\xcc\x07\xd9\ \x65\xb5\xad\x4f\x3c\xef\x85\xb1\x25\xc0\x52\x9f\x0f\x68\x52\x8e\ \xd1\xbb\x24\x0e\x6b\xd6\x34\x6d\xf5\x3a\x7e\xd3\x6b\x0f\x43\x53\ \x90\xb5\x22\x6e\xce\x10\xb5\x6d\x2d\x07\xd4\xe6\x07\x97\xef\x61\ \x5d\x8e\x06\x7d\x6a\x6f\xac\xee\x28\xd2\xba\x6a\x4d\xe6\x42\x54\ \xf8\x8e\x5a\x0a\x61\x0a\x01\x67\xc4\x75\x2d\x03\xcf\xa6\x55\xfc\ \x2a\x45\x0d\x31\x23\x6e\x3e\x2a\x56\xb0\x76\xf0\x73\x83\xed\x50\ \xa1\x1d\x81\x45\x6c\x44\x9b\xe9\x44\xbb\xe3\x5a\xd6\x4c\xd9\x10\ \xd9\x4d\xed\xc8\x2f\xdb\xd4\xa0\x5c\xf0\x9c\x8e\x84\xff\x00\x5a\ \x92\x00\xda\x54\x9c\x10\x09\xca\x49\xec\x69\xca\xf3\xa6\x6e\x57\ \x3d\x1d\xa8\xac\x8c\xd8\x74\xa5\x8e\x5c\xf8\x2a\x8a\xd3\x96\xe2\ \xad\x8b\x24\x28\x12\xe1\xf0\x92\x42\x73\xb4\x81\x85\x63\x9e\x4f\ \x73\x65\x30\xeb\x66\xd0\x4b\x4a\x07\x1c\x1c\x73\x83\xfe\x8d\x44\ \xb4\x1e\xa3\x8d\xaa\x74\x6c\x0d\x48\xcc\x75\x45\x66\x62\x54\xb4\ \xa1\xd5\x02\x53\x85\x94\xe0\x9f\xc2\xb1\x2b\x4a\x4d\xb3\x6c\xa9\ \xc2\x09\x45\x73\x5e\xbf\x91\xa9\x1a\x4a\xe2\x35\x8e\x96\xbc\xaa\ \x44\x6f\x02\xd3\x6b\x7a\x1b\xe9\xde\xad\xea\x5a\xc3\x60\x14\x0d\ \xb8\x29\xf2\x1e\xe4\x7a\x71\x58\xf4\xc7\x4f\xdd\xf4\x8e\x89\x66\ \xc3\x76\x30\x5d\x66\xda\x85\x06\x24\x45\x71\x6b\x53\xa8\x2b\x52\ \x89\x52\x0a\x06\xd3\x82\x38\x05\x59\xe6\xa6\xe9\x04\x27\x3d\xa9\ \x93\x42\xea\x38\xda\xaf\x49\xc7\xd4\x0c\x30\xe4\x56\x5e\x53\xc9\ \xd8\xea\x81\x29\xf0\xdc\x5b\x64\x93\xdb\x19\x41\x3f\x8d\x32\xf6\ \x77\x2b\xc3\x8d\xfb\xff\x00\xa2\xbc\xb5\xe9\xb9\xba\xc6\x1e\xbd\ \x10\x56\x62\x7d\xb6\xf7\x0e\x5d\xb6\x44\xa6\x56\x86\x9e\x54\x74\ \x34\x79\x04\x05\x14\x12\x92\x9c\x81\xf2\x33\x8a\x9a\xdb\x34\xe6\ \xab\x6b\x58\xdd\xb5\x74\xc1\x63\x32\xa7\x5b\x19\x86\xdc\x24\xbe\ \xea\x9a\x6c\xb6\xb2\x4e\xe7\x0b\x60\xa8\x10\xa5\x1c\xed\x18\xe0\ \x63\xd6\x9d\xf5\x1d\xda\xdb\x60\xb6\x2a\xe7\x71\x96\x98\xd1\xc2\ \x90\xd8\x51\xe7\x2a\x5a\x82\x52\x00\xf5\xc9\x50\xfe\x75\xb5\x99\ \xaf\x3a\x93\xb1\xe4\xad\x27\x21\x25\x2a\xc8\x35\x4e\x0e\x77\x74\ \xc9\x8b\x8d\x3d\x1e\xff\x00\xdf\xdd\x95\xb5\xcb\xa7\x57\x27\x74\ \xee\xaf\xb6\x47\x55\xa2\xd0\xe5\xfe\x4c\x49\x11\xed\xf1\x16\xb5\ \xc3\x88\xb6\x16\x85\x93\xbb\x62\x4e\x5c\x28\xf3\x10\x81\xd8\x71\ \x57\x1d\xa5\x73\x5d\xb7\x34\xbb\x9b\x11\x98\x96\xa0\x7c\x46\xe3\ \xbc\x5d\x6d\x3c\x9c\x00\xa5\x25\x24\xf1\x8f\xdd\x14\xc4\x41\x27\ \x27\x93\xeb\x4f\xd6\xc5\x97\x23\x8f\x5c\x54\x56\xa4\xa1\x14\xd1\ \x7c\x33\x59\x9f\xaf\x5b\x89\xa5\x24\xb5\x21\x24\x7a\xf6\xa7\x78\ \xe7\x2c\xa7\xd6\x91\xcd\x6b\xc4\x6f\x3d\x88\xf5\xa5\x51\x01\x0c\ \xa7\xe9\x49\xa9\x2c\xd1\x46\xba\x6b\x2c\xd8\xd3\xa9\xe4\xa2\x34\ \x52\xb7\x15\x84\x81\xde\xab\x1d\x4f\x7b\x86\xa8\x25\x40\xad\xb0\ \xe0\xf2\xf8\xa8\x28\xdd\xff\x00\x6b\x15\x64\x6a\x14\x78\xaf\xa1\ \x2b\xfb\x83\x9a\xab\xba\xb3\xe1\xae\xd8\xea\x40\x68\xa8\x24\xed\ \x0b\x4e\xe0\x48\xf4\xc5\x6c\xa5\x25\x4e\x95\xd9\x86\xbe\xb5\x19\ \xcd\xda\xb6\xfb\x1a\xdd\xd5\xcb\x15\xd6\x42\x81\x87\x1e\x42\x1a\ \x90\x73\x82\xde\xf2\x41\x27\xe0\x12\x93\xf4\xae\xae\xb1\xdb\x90\ \x9b\x8a\x9c\x86\xe3\x8c\xa1\xd6\xf3\x2d\xb4\xab\xca\xb2\x7b\x1c\ \x7b\x90\x2b\xe7\xf6\xb6\xb9\x3f\x32\xec\xfc\x2b\x82\xd4\x70\xa2\ \x83\xea\xa4\x1c\xf0\x01\xf5\x1f\x35\xd4\x5f\xa2\x97\x58\x2d\xb7\ \xc8\x0d\xe9\x1d\x45\x31\x98\xb7\xe8\xa9\x4b\x71\xd4\xf3\x9b\x44\ \xd6\xd2\x36\x8c\x13\xdd\x60\x0e\xdd\xcf\xcf\x35\xe7\xab\x6b\x3c\ \xdc\x8f\x57\x83\x83\x86\x1d\x53\x4f\x5f\x5e\xbf\xa2\xde\xeb\x2e\ \x97\x7b\x57\x68\xa7\xed\x4c\x1c\x2d\x01\x4a\x6d\x0d\xaf\x6a\x95\ \x84\xe4\x00\x4f\x03\x90\x9e\x6b\x92\x93\x19\xbb\x73\xef\x5b\xe4\ \xb4\x4b\x81\x28\x54\x84\x2f\xca\x5a\x52\x07\x27\x38\xe7\x68\xc9\ \xf9\x27\xd6\xbb\x88\xa3\xc5\x5e\xe2\x46\x48\xda\x77\x77\xae\x48\ \xeb\x35\x85\x7a\x63\x5f\xcf\x43\xa9\x57\x85\x31\x2a\x53\x4a\x24\ \xa8\x39\x9c\x73\xcf\xb9\xdc\x08\xf4\xe7\xe2\xb9\xd8\x98\x38\xbc\ \xcb\x99\xd3\xe8\xea\x97\x83\xa2\xde\xda\xaf\xa9\x24\xd0\xf2\x57\ \xf6\x19\x31\x5d\x59\x40\x12\xfc\x45\x21\x44\xe4\x6e\x27\xca\xaf\ \x9c\x72\x40\xc7\x35\x65\xe9\xd2\x0b\x45\x09\x75\xc5\xa3\x76\x7d\ \x89\x1f\xe5\x55\x26\x88\x9c\xa9\x53\xdc\x5e\xc6\xc2\x6e\x4d\x26\ \x42\x80\x56\xe5\xf8\xa0\x04\x3b\xdf\xfb\xd9\xe2\xad\x9b\x11\x2d\ \x24\x2d\x40\x05\x27\x29\x20\x7f\x64\xfb\xfb\xd6\x5a\x6b\xac\x18\ \x84\x49\xe3\x24\x36\x85\x25\x38\xca\x8e\x4e\x07\x39\xcd\x28\x8c\ \x0a\xdb\x4a\x82\x46\x3b\x8f\xce\x91\xc5\xe4\x11\xb9\x58\x4e\x55\ \xbb\x07\x38\x22\x9c\x60\x92\x12\x12\xb4\x8e\x3d\xfb\x1c\xd6\xb4\ \x60\xbd\x85\xab\x05\xa6\x14\xb3\xf7\x12\x33\x4c\xec\xba\x23\x95\ \xcd\x77\xcf\x25\xc2\x43\x69\xfe\xc0\xc7\x6f\x83\xf3\x4f\xb2\xd1\ \xba\x1a\x53\xc9\x0a\x50\xdc\x3d\xc5\x31\xbe\x94\xf8\x86\x43\xdb\ \x90\x9c\x04\xa9\x27\xdf\xd0\x7d\x39\xef\x53\x2d\xef\xd8\x10\x77\ \x42\x37\x5c\x7e\x79\x4b\x89\x3b\x02\xd3\xc7\xb9\x1e\xf5\x93\x36\ \xf4\x85\x79\x80\xd8\x57\xc9\x2a\xf5\x1d\xbe\xbc\xd4\x57\x5d\xf5\ \x33\x4f\x69\x47\x4b\x32\x64\xa5\x52\xd6\x8f\x2a\x00\xe7\x1c\xfa\ \x0f\x4a\x68\xd2\x57\x4d\x5f\xad\xae\xf3\x6d\x50\xa3\xaa\xd0\x98\ \xad\x36\xf2\x95\x35\xa5\x00\x42\xf3\xb4\xa1\x39\x1e\xd4\x3a\xb0\ \x86\xb2\x7a\xf9\x9d\x28\x60\x2b\x3a\x5c\x59\x75\x61\xda\xcb\x2d\ \x86\xa0\x21\xc2\xd1\x90\xd2\x55\x8c\x95\x77\xcf\x34\xa9\x95\xc1\ \x53\xa1\x96\xe5\x0e\x33\xc6\x7b\xfe\x35\x03\xb2\x74\xc3\x5c\xc9\ \xba\xca\x1a\x83\x5a\x2e\x2a\x07\xf5\x62\x13\x0d\xe1\xc4\x9f\x5e\ \x47\x1f\x4e\x69\xce\xd1\xd2\xbd\x47\xfa\xee\x6b\x12\x75\xb3\x8b\ \x86\xd8\x49\x8e\x44\x54\x95\x9c\xe7\x3b\xfb\x0e\x38\xed\x5a\x21\ \x59\x3d\x14\x5f\xaf\x88\xba\x94\xb0\x91\xbd\xeb\xa7\x65\xd8\xfe\ \xc4\x95\xa6\x7c\x55\x9f\x09\xe6\xd6\x1b\x00\x10\x97\x33\xc6\x73\ \x9a\x45\x71\x88\xda\x9d\x54\x97\xd7\x1d\x21\x03\x81\xb8\xa4\x1f\ \xfc\xe9\x9e\x67\x4c\x75\x5f\xeb\x76\x58\x8d\xa8\x60\x3b\x15\x6d\ \xab\xc5\x71\xd8\xca\x4b\x89\xc7\x60\x36\xab\x9c\xd6\xa9\x9d\x20\ \xbf\xa6\x4c\x7f\xb3\x6a\xb4\x96\x94\xb2\x97\x52\x5a\x51\x50\x49\ \x07\xee\xe4\x91\xdf\xde\x87\x34\xd7\xba\xfe\x5f\x92\xb1\xf6\x44\ \xee\xeb\x2f\x93\x17\x07\x6d\xe1\x94\x25\xb7\x9b\x2d\x9e\x30\x55\ \xc2\xb8\xf7\xf7\xf9\xa6\xf7\xed\x8c\x78\x61\xe8\xea\x0a\x03\x27\ \x28\x19\x1c\xf7\xff\x00\x3c\xd3\x64\xfe\x9a\xeb\xe7\x6f\x2f\xc7\ \x81\xa9\x5a\x54\x36\x9a\x07\xc6\x75\x94\xf2\xb2\x78\x4e\xd0\x3b\ \x62\xaa\x88\x7d\x40\xbc\x58\xef\x8e\x5a\xaf\xa9\x11\xa5\xb6\xe1\ \x48\x09\x27\x6a\xfb\xe3\x8f\x91\x59\xe5\x56\x12\x79\x6c\xd3\xef\ \x47\x46\x86\x06\x38\x84\xde\x1e\xa2\x93\xec\xf1\xf1\xb1\x77\xd8\ \xe5\xba\xdb\xe9\x43\x99\xc0\x59\x0a\xf6\xed\x53\x0b\x73\x9e\x2b\ \x67\x1d\xfd\x88\xee\x2a\x07\xa4\x5d\x5d\xee\x3a\x1e\x4a\x02\x14\ \x51\xe2\x2d\x03\xb6\x3d\xbf\x1a\x96\xe9\x54\x38\xea\xc9\x42\x89\ \xf0\xcf\x23\x18\xdc\x08\xff\x00\x0a\xa4\x1b\x5a\x33\x97\x88\x86\ \x59\x34\xf7\x42\xa9\x6a\x48\x56\xd5\x70\x73\x9c\x0a\x85\xea\xb9\ \xa0\x45\x74\xab\x01\x09\x49\x25\x47\xd3\x15\x2f\xbc\x2d\xa4\x29\ \xd2\xb4\xe0\xa4\x77\x57\x63\x9a\xac\x7a\x93\x34\x43\xd3\x13\x9d\ \x5a\xc2\x56\x52\x4b\x64\x9f\x55\x70\x08\xf4\x3c\x9a\x4e\x22\x4e\ \xd6\x2b\x45\x5e\x48\xab\xba\x6c\xfc\x4b\x9d\xfd\x53\xfc\x35\x96\ \xa2\x25\xdb\xa3\x8f\xa9\x39\x49\x58\xdd\x8f\x4e\x78\xc8\xfc\x2b\ \x9b\x2d\xab\x4b\x97\xf5\xaf\x79\xfd\xa3\x8a\x70\x1e\xdd\xce\x45\ \x5c\x1a\xab\x57\xc2\xb6\x69\x39\xda\x77\x4a\x2f\xed\x17\xcb\x8c\ \x77\xff\x00\x59\xba\xda\xbc\x36\x58\x64\x27\x7b\xbb\x72\x7e\xf9\ \x48\xc6\xd1\xdb\xd3\x92\x2a\x97\x69\x6f\xb7\xe1\xc9\x79\x95\xe1\ \x01\x28\x0a\x50\xc2\x7b\x70\x3f\x2e\x6b\x6e\x06\x8b\x50\x93\xed\ \x27\xa4\x2b\xc5\xd5\x82\xff\x00\x5d\xce\xab\xd1\x3a\xa3\xec\xf6\ \x98\x2f\x3a\xb0\x15\x25\xa4\xed\xc1\xfb\xd8\x1c\x91\x52\xc9\xfa\ \xb5\x94\x4e\xb2\x41\x65\x64\xc8\x9d\x28\x20\x25\x3d\xc3\x69\xe5\ \x4b\x23\xdb\xd2\xb9\x3e\xcd\xad\x1e\xb7\x5b\x7c\x36\xd2\x65\xcd\ \x07\x6a\x1c\x5e\x4a\x50\x8c\xf0\x94\x8f\x41\x9c\xf1\xc7\x3e\xf5\ \x62\xf4\x9e\xe1\x24\xdc\x57\x74\x92\x97\x6e\x37\xd9\x3e\x44\x04\ \x72\x23\xb6\x0f\x61\xe8\x9f\xc6\xb7\x55\xc5\x55\xa5\x45\x41\x7a\ \xfc\x1e\x62\x78\x05\x79\x54\xde\x28\xeb\xeb\x54\xe5\x3e\x86\xd8\ \x4a\xce\x4e\x33\xcf\x02\xa6\x76\xf4\x06\x9a\x4e\x72\x4e\x39\x26\ \xaa\xbe\x9d\x6f\x0e\x0f\x1d\xd4\xad\xce\xe7\x6f\x61\xf4\xab\x3e\ \x2b\xa9\xc6\x49\xf4\x1d\xf9\xae\xec\x33\x4a\x8c\x6e\x72\xe9\x68\ \xf5\x16\x49\x92\x96\x5a\x0a\x3c\x9a\x29\x39\x47\xda\x9c\x39\x00\ \xa5\x23\x91\xef\x45\x11\x8d\x34\xba\xc3\xdc\xaa\x37\x78\x95\x3d\ \xa1\xc5\x39\x68\x82\x33\x84\xa0\x2f\x1f\xfe\xe2\xa9\x44\x8d\xbe\ \x63\xb7\x1c\x7d\x4f\xfa\xef\x49\x74\xf0\x26\xcf\x18\x0e\xf8\x73\ \xd3\xfe\x31\x54\xaa\x50\xdc\x84\x8c\xe4\x9f\xe3\x5a\xa1\xee\xa3\ \x0a\xd8\x90\x69\x48\xa1\xb8\xc5\xcd\x99\x2a\xef\x4e\xef\xb9\xe1\ \x34\xa5\x9c\x80\x3b\x7c\xd6\xab\x33\x61\x10\x90\x12\x79\x29\xac\ \x24\x61\xc9\x29\x63\x90\x3b\x9e\x3b\x55\x89\x39\xeb\x52\x3d\x6f\ \x93\xa3\x75\x5d\xc6\xed\xe0\x0d\x46\x35\x1f\x84\x87\x16\x47\x8e\ \x94\xf8\xe8\x4a\x5b\x49\xfb\xde\x1f\x81\x9c\x0e\xc4\x66\xa6\xb7\ \x88\xf6\x59\xfa\x8b\xa8\xee\x6a\x94\xc7\x5b\xd0\x22\x34\x61\x2a\ \x47\x78\xd1\xfc\x00\xa0\xb6\x89\xfb\xa4\xb9\x92\x54\x9e\x77\x00\ \x3d\x05\x48\xf5\x2f\x4d\xdb\xd4\x17\x55\x29\xf9\xea\x79\xa5\x3c\ \x97\x1c\x69\x31\x59\x42\xd6\x10\xa0\xa4\xb6\x5d\x08\xdc\x50\x14\ \x91\xc6\x73\xc7\x7a\x95\x4b\xd2\xd1\x66\xb8\xd4\x9b\xdd\xaa\x0c\ \xa7\x18\xe5\xa7\x1e\x8e\x95\xa9\xbf\xf9\x24\x8e\x3b\xfa\x56\x7c\ \xba\xea\x51\x52\x93\xd6\xc5\x6f\xa1\x61\xb3\x73\xea\x56\x86\x95\ \xa9\x61\x44\x7e\x63\xba\x4d\x4e\xc9\x54\x96\x92\x54\xb7\x53\xe1\ \x61\x4a\xc8\xe5\x63\x93\xf1\xcd\x48\xfa\xcf\x74\x87\x2a\xf5\x66\ \xb3\xb9\x68\xb7\xdc\x9f\xb8\x4a\x52\x23\xfd\xbf\x1f\x67\x65\x48\ \x6d\x4a\x2b\x3c\x1f\x36\x32\x12\x07\x24\x9e\xe2\xa4\x37\xb4\xda\ \x27\xa1\x86\xe4\x5a\x60\x4c\x72\x32\x8a\xd9\x72\x44\x74\x38\x5a\ \x51\xee\x50\x54\x0e\xd3\xf2\x29\x04\xfb\x6c\x0b\xa4\x6f\x06\xe9\ \x06\x2c\xd6\x77\x6e\xf0\xe4\x34\x97\x13\xb8\x76\x38\x50\x23\x35\ \x31\xa4\xd4\x9c\x86\x37\x68\x64\x44\x2f\xa1\xd2\x25\x33\xa7\x2e\ \xec\xb4\xeb\x4a\x8f\x1a\xf9\x31\x96\x10\xca\x8f\x82\x86\xc2\xf2\ \x12\xdf\xf7\x39\xe3\xe0\xd4\x66\xe7\x19\xcb\x8c\x2b\xb7\x4e\xa2\ \xa9\xc4\x3d\x6d\xb8\xcf\xbc\x32\x1b\x27\x29\x6f\xc1\x0e\xc7\xfc\ \x3c\x69\x23\x8f\x5f\x0f\xeb\x57\x0c\x68\x71\x62\x21\x48\x8b\x19\ \x98\xe9\x70\x82\xb4\xb6\xd8\x48\x2a\xc0\x19\x38\xf8\x00\x67\xe0\ \x52\xad\x3b\x6a\xb7\xa6\x74\x8b\x92\x61\xc7\x13\x1d\x40\x6d\xc9\ \x01\xa4\xf8\x8a\x48\xec\x92\xae\xe4\x0f\x6a\xb4\xa9\xf5\x52\x65\ \x14\x2f\x64\x51\xfa\xda\xe4\x8d\x5b\xa0\x75\x76\xae\x6c\xe6\x3c\ \xe3\x6b\x84\xc1\x07\x90\x84\x38\xca\xd6\x07\xb7\xed\x5e\x70\x7d\ \x51\x4b\xb5\x94\x25\x69\xed\x51\xaa\xa2\xe9\x88\xe8\x80\x4e\x8c\ \x12\x7c\x28\xa8\xd8\x0b\x89\x79\x68\xf1\x00\x1f\xbc\x10\x3b\xf7\ \xe2\xad\x56\x74\xed\x8d\x98\x8e\x5a\x51\x68\x80\x9b\x76\xed\xc6\ \x20\x8c\x8f\x07\x21\x41\x40\xec\xc6\xdc\xee\x00\xf6\xef\xcd\x2f\ \x4c\x18\x5f\xac\x0d\xc0\xc4\x8f\xf6\xc2\xc8\x64\xbf\xe1\x8f\x10\ \xb6\x0e\x42\x37\x63\x3b\x72\x49\xc6\x71\x93\x51\xc2\x2a\xe1\x72\ \x17\xa4\x9a\xb2\xc2\xd7\x7a\x05\x8d\x26\x88\xcc\xa6\x6d\xb2\x51\ \xb8\x88\xa7\x1f\x68\x8e\x1a\x4a\x9b\x71\xdc\x7d\xe5\x78\xa4\x61\ \x4a\xe4\x95\x2a\xa1\x1a\x11\xb9\x73\x6c\x9d\x32\xb4\xbb\x0e\xd9\ \x36\x03\xb6\xd9\xeb\x6a\x3d\xcd\x65\x31\xde\x90\x1d\xc7\x20\x25\ \x5b\x96\x94\x12\x52\x08\xf5\x26\xae\xcb\x45\xaa\xd9\x68\x92\xec\ \xab\x55\xb2\x14\x27\x9e\x20\xba\xa8\xec\x25\xb2\xe1\xfe\xf1\x03\ \x9f\xc6\x97\xc7\xb3\x69\xfb\x85\xa9\xbb\x13\xd6\x0b\x59\xb7\xb5\ \xfd\x54\x43\x11\x05\x94\x77\xec\x8c\x6d\x1d\xcf\x61\xea\x69\x33\ \xa2\xe2\xdc\xb9\x0e\x8c\x73\x59\x7a\xe5\xf6\x1b\xfa\x63\x6a\x9d\ \x60\xd0\xf1\x2d\x17\x29\x91\xa5\xb9\x1c\xba\x96\xdc\x8e\xe2\x96\ \x80\xd1\x71\x45\x08\x0a\x57\x27\x68\x21\x3f\xf5\x6a\xa0\xd0\x4d\ \xb5\x22\xc3\xd3\x28\x17\x64\xa1\xdb\x1c\xbb\x8d\xdb\xc7\x65\xee\ \x59\x75\xf4\xba\xe9\x61\x2b\x1d\x8f\x3b\xc8\x07\x82\x40\xae\x88\ \x8b\xa7\xa3\x43\x88\x86\x22\x34\xd4\x76\x1b\xe1\xb6\x9a\x40\x4a\ \x12\x3e\x00\xe0\x73\x49\x17\xa7\xec\x66\xc6\x6c\xa6\xcd\x6e\xfd\ \x5c\x92\x4f\xd9\x3e\xcc\x8f\x07\x24\x95\x13\xb3\x1b\x79\x24\x93\ \xc7\x72\x4d\x2f\x34\x5f\xba\xc7\xcb\x0f\x2d\x2f\xa5\xbf\x05\x0b\ \xa9\x63\x43\x3a\x37\x56\xc4\x61\x98\xee\xd8\x60\xeb\x08\x88\xb7\ \x82\x90\xa6\xd8\xca\xd9\xf1\x90\xde\x78\x4a\x02\x94\xa1\x81\xc0\ \xc9\x15\x7a\xa6\x14\x48\x28\x6d\x88\x2c\x31\x1a\x3a\x01\x4a\x1a\ \x65\x01\x28\x4f\x3c\x80\x07\x03\x9a\xdb\x1e\xd1\x69\x55\x98\xd9\ \xd5\x6c\x82\x6d\xc5\x3b\x0c\x42\xc2\x3c\x12\x33\x9c\x6c\xc6\xdc\ \x67\xe2\xb2\x72\x0c\x48\x10\x99\x89\x06\x2b\x11\x23\x34\x36\xb6\ \xd3\x2d\x84\x21\x03\xd8\x24\x70\x2a\xd4\xfa\xb3\x21\x52\xb2\xb9\ \x8e\xd4\x91\x4e\x56\x73\x84\x28\x7a\x53\x7a\x53\xe5\x19\xa7\x1b\ \x42\x78\x55\x4d\x67\xd4\x63\xa8\xae\xba\x15\xca\x21\x2d\x13\xfc\ \x6b\x7c\x70\x7c\x04\xe7\xeb\x9a\x4d\x30\xf9\x42\x7d\xcd\x2b\x4a\ \x7f\x60\x12\x38\xe2\xb1\x4b\xdd\x46\xd8\xfb\xcc\x88\xeb\x46\xae\ \xd3\x11\xe1\x5a\xe4\x47\x87\xce\x16\xfb\xa8\x2b\xda\x3f\xba\x3d\ \xfe\xb5\x51\xf5\x36\xd8\xf7\xea\x77\x23\xae\x4c\xa9\xea\xda\x77\ \x2b\x21\x0a\x5f\xc0\x20\x60\x55\xed\x75\x64\xae\x31\x6d\x23\x19\ \xe4\x9a\x84\x6a\x6b\x62\x1c\x86\xa1\xb3\x3c\x56\xc8\xae\x25\x2c\ \xa8\xc3\x56\x0f\x3d\xcf\x9f\x7d\x44\xb4\x48\x62\xe0\xf3\xe6\xd9\ \x2e\x3a\x4a\xb1\x87\xdd\x4b\x8a\x19\xf9\x00\x1f\x4a\x85\x38\x95\ \x15\x01\xe7\x42\xc7\x21\x47\x23\x9f\xf5\xeb\x5d\x45\xd6\x2b\x3b\ \xa9\x87\x39\x29\x04\xe5\x95\x29\x3c\x76\x29\x1b\x87\xf2\xae\x5f\ \x59\x90\xb7\x08\x5b\x8b\x21\x4a\xc0\xca\xb8\x15\xcc\x95\x19\x52\ \x76\x91\xd6\xa7\x5d\x56\x85\xd2\xd5\x16\x2e\x87\xeb\xc7\x54\xb4\ \x7a\x5a\x8f\x13\x50\xb9\x70\x88\xd8\xc2\x63\x5c\xd0\x24\x20\x0f\ \x60\xa5\x79\xc0\xf8\x0a\x15\x2d\xbf\x75\xe9\x7d\x44\x81\x1e\xd1\ \xa9\xf4\xfb\x11\x2e\x09\x75\x02\x34\xd8\x6e\xa8\x21\x27\x70\xdd\ \xb9\x0a\xc9\xec\x38\xc1\xaa\x42\x42\x1a\xd8\x95\x36\xa4\x9e\x3b\ \x81\xdc\xe3\xd6\x93\xef\x53\x4b\x0a\x6d\x5e\x1a\xb7\x02\x0f\xaa\ \x48\xe4\x7f\x1a\x44\xf0\xf4\xea\x2d\xac\x69\x86\x2a\xa5\x29\xa7\ \x7b\xfa\xed\x3a\x67\xa6\x45\x2f\x6a\x47\xd8\x43\xe8\x41\x8d\xbc\ \x84\xf0\x0b\x4e\x28\x85\x67\x8e\x30\xa3\x93\xb7\xd3\x15\x7f\x59\ \x10\x50\xd8\x04\x27\x05\x1b\xbb\xf2\xa5\x1a\xe5\x2e\x83\xc8\x4c\ \xfb\xf1\xb8\xc8\x79\x6d\x36\xb4\x12\xf3\x69\xe4\x15\x8e\x0a\x86\ \x7d\x87\x38\xf8\xae\xa5\xd3\x24\x22\x33\x7e\x33\xbb\xbc\x4f\x38\ \xcf\xb6\x3f\xca\xb8\xb2\x86\x4a\xb9\x4e\xd5\x49\xf1\x20\xa4\xb6\ \x25\x50\x0a\xca\x96\x16\x52\xb5\x63\x00\x03\xda\x97\x46\x52\x10\ \xb1\xfb\x5d\xe1\x7c\xe0\xfc\x7b\x53\x5c\x22\xd2\xdd\x29\x28\x29\ \x46\xd0\x06\x13\x80\x41\xe7\x03\xf9\xd2\x97\x4a\x9b\x53\x7e\x1b\ \x5b\x92\xa3\xb4\x2f\x3c\x53\x91\x85\xad\x49\x2b\x23\xc4\x8c\x53\ \xc8\x23\x04\x53\x25\xf9\x97\x14\xd1\x4b\x27\x6a\xd2\xad\xe8\x1e\ \x83\xde\x97\xdb\x24\x00\xda\x71\xb4\x92\x39\xc1\xfb\xd5\xb6\x72\ \x42\xd4\xac\xa7\xb6\x3e\xa6\x99\x6b\xab\x95\x83\x71\x91\x46\x4e\ \xe9\xb5\x82\xdd\xaf\xef\x9a\xbb\x53\xb5\x3a\xe9\x0e\xe7\x19\x5e\ \x24\x65\xb4\x1c\x4b\x3c\x64\x84\x6d\xe5\x3f\x74\x04\xe3\xb6\x69\ \xce\x77\xe9\x2d\xd3\xb8\x71\xac\x1f\xab\x2d\xb7\x6b\x95\xd5\x6c\ \x84\xcd\x86\xcc\x52\x87\xa0\x36\x13\x85\x21\xd2\xb0\x01\x21\x40\ \x70\x32\x3b\x9c\xf2\x33\x69\x49\x6d\x0e\xb4\xa6\xdc\x47\x88\x95\ \x27\x18\x20\x62\xab\xed\x53\xd3\xf6\x1d\x92\x6e\x16\xc0\x84\xaf\ \xb1\x49\x47\x21\x3e\xa9\x04\x73\x8f\x8a\x74\x54\x5d\xf9\x5c\xdf\ \x4e\x34\x71\x35\x23\xc7\x93\x49\x7c\xbf\x17\x2b\xab\x87\x5e\x3a\ \xd4\xbb\xbc\xfb\xed\x93\x42\xda\xcd\x8e\x42\x52\xd4\x18\x92\x9b\ \x5b\x8e\xb5\x8c\xe1\x64\xa0\xa4\x92\xac\xf2\x31\x8e\x06\x3b\x12\ \x61\x8c\x7e\x92\xdd\x75\xd2\xb2\xa7\x4e\xbf\xd9\x2d\xf3\x1a\x98\ \x50\x19\x44\xcb\x72\xda\x6e\x36\xdc\xf9\x5b\xd8\x52\x48\x39\xe7\ \x71\x51\xe0\x73\xef\x74\x5b\x6c\x17\x96\x96\xd2\x90\xeb\xe8\x2a\ \x07\x87\x8e\x43\x7c\xe0\x10\x78\xc5\x2e\x9f\x66\xbb\x86\xca\x27\ \xc0\xb7\xdd\x5b\x20\x28\x87\xd9\x2a\x42\xbb\xfa\x03\xc6\x31\x4f\ \x8d\x24\xb5\x5e\xbc\xcd\x18\x8c\x0e\x0d\xbc\xb0\xd1\xf8\xaf\xaa\ \xfa\x94\x13\x1f\xa5\x47\x5a\x2e\x17\xf6\x6f\x31\x2d\x16\x43\x16\ \x33\x2b\x4a\xa1\x22\x0b\x85\x85\xa5\x58\xf3\xac\xef\xdf\x91\x8e\ \x08\x50\x1c\x9e\x0e\x6b\x46\xbd\xfd\x21\xfa\xb9\xaf\xf4\xd3\xba\ \x61\x16\x9b\x55\xac\xc9\x79\xa5\xfd\xa2\xd8\x97\xdb\x92\x14\x85\ \x85\xa4\x21\x45\xc3\xb7\xcc\x91\xc8\x19\xab\xd9\x36\x7b\x92\x98\ \x71\xa8\xac\xc1\xb4\x43\x3c\x2d\xa8\x51\x40\x04\x1f\x7d\xd9\xa6\ \xf7\xf4\xc4\x25\x02\x5b\x33\x14\xe2\x70\x12\x1b\x09\x4e\x4f\xb8\ \x20\x70\x6a\x5c\x5d\xbd\x7d\xcb\x51\xe8\xbc\x25\xba\xed\xdf\xb9\ \xaf\xb6\x9f\x32\xb4\xd1\x9f\xa5\x06\xba\xd3\xd3\x05\x83\x5a\xdb\ \x5f\xb9\xcc\x5b\x69\x6d\xd5\xb4\xca\x03\xe1\x40\x79\x54\x02\x78\ \x59\x23\x04\xf6\xe6\xa5\xd3\xe0\x5a\xfa\x99\x7a\x87\x76\x4d\x96\ \x7c\x6c\x38\x95\x7e\xdd\x92\xca\xca\x10\x90\x84\xa5\x5e\xc5\x58\ \x2a\xf8\xc8\xa9\x1e\x95\xd1\xad\xb7\x72\x33\x1f\x84\xd2\x16\x95\ \x79\x5f\x71\x01\x4f\x2d\x3f\xd9\x2a\x3e\x61\xef\xed\x53\xf8\xad\ \xa1\x0d\x25\x96\x5b\x28\x1d\xb7\x7a\x8c\x7a\xd6\x4c\xb0\x84\xae\ \xbe\xeb\xe1\xd9\xfc\x04\xb8\x78\x4a\xad\xd3\x77\x7c\x9a\xd3\xe7\ \x6d\xdf\xcb\x53\x56\x9c\xb4\xa6\xd0\x5c\x43\x28\xfb\x36\xe6\xc3\ \x6d\xa0\x2b\x77\x03\xb7\x3e\xf5\x2a\xb3\x30\xdc\x56\xde\x53\x79\ \x4a\x49\xce\x7e\x69\x14\x64\xee\x71\x03\x68\x0e\x01\x8e\x7b\x1f\ \x6a\x5f\x3d\xd4\xb5\x04\x10\xa1\x85\x63\x27\x3e\x94\xb7\x6b\xdc\ \xe5\xd6\xa9\x29\xbd\x77\x64\x67\x54\x3e\xa7\x0e\x12\x40\x2e\x2c\ \x20\x7d\x3b\xf0\x6a\xa3\xeb\xec\xc8\xc8\xd2\xef\xc4\x53\x85\x0d\ \x17\x1a\x42\x54\x9e\x4f\x0a\xdc\x4f\xc0\xc0\x3f\x95\x59\x12\x65\ \xa5\xc9\x6e\x28\x20\x29\xb6\x12\xa2\x94\xf7\xc9\xf7\x1f\x87\xa5\ \x50\x5f\xa4\xad\xd7\xc2\x8d\x11\x90\xea\x52\x14\xf9\x52\xd4\x39\ \x07\x00\x0e\xdf\x88\x35\x86\x5d\x79\xa4\xb9\xb3\x4d\x15\x95\xdd\ \xf2\x29\x3d\x51\x01\xb5\x6a\x2b\xbb\x61\x84\x15\xc9\x96\x0a\x48\ \x40\x3e\x12\x42\xf2\xad\xbe\xd9\x38\xc7\xba\x6a\x51\x1a\xde\xe4\ \xad\x04\x34\x9c\x87\x12\xa7\xe7\x4a\x52\xe1\xf8\x80\x00\xb9\x03\ \x09\x46\xd5\xfa\x03\x94\xa7\x9e\xc4\x1c\xf0\x6a\x2e\xdc\xa6\xe4\ \x33\x35\xf4\xa5\x68\x2e\xb9\x90\x47\x00\x1d\xaa\xc2\x7f\x3d\xbf\ \x95\x48\x27\xdc\x1c\x77\xf5\x54\x64\x04\xb9\x1d\x69\x42\xdb\xf7\ \x4a\x82\x48\x2a\x1f\x50\x8e\x7e\x41\xae\x83\x8d\x49\xa4\xbf\xd6\ \xc2\xe6\xe9\x53\x4d\xda\xf7\x4f\xee\x57\x96\xc9\x42\xd5\x39\xf8\ \xd7\x1b\x72\x64\x01\x96\x9d\x6d\x44\xa1\xc4\x28\x1f\xdd\x50\xec\ \x41\xfa\x8f\x71\x56\x7d\x87\xa8\x71\xd9\x65\x98\xd1\x6e\x0b\x43\ \x28\x40\x4e\xc7\xe1\xa5\x05\x27\xea\xd9\x19\xfa\xe2\xa3\xd7\x1d\ \x2e\xbb\xea\x95\x24\x2c\xb5\x39\x5d\xd4\xae\xce\x9f\x93\xef\xf3\ \xeb\xeb\x5a\x6c\x5a\x1a\xe6\x66\x04\xce\x2b\x8a\xd8\xfd\xe5\x23\ \x3f\x85\x6d\xc5\xd2\xa7\x17\x9e\x5b\x9c\x9c\x3c\x95\x78\x70\xe5\ \x6b\x17\xde\x84\xea\x4d\xbe\x1b\x6a\x91\x26\x78\x53\x68\x1c\x9d\ \x87\xf8\x0e\x6a\xcc\xb3\xf5\x6a\xcb\x37\xc3\x69\x13\x52\xb7\x1c\ \xc0\x65\x86\x92\x5c\x75\x7e\xde\x54\xe7\x68\xf9\x56\x2a\x91\xd1\ \xdd\x3f\xd3\x72\x5c\x4c\x6b\x83\xd2\x66\x36\x4f\xdc\x6b\xf6\x40\ \x9f\x92\x39\x35\xd0\x5a\x1f\x4e\x59\x2c\x50\x50\xcd\x92\xcf\x12\ \x0a\x55\x8c\xa9\xb4\x0d\xea\xfa\xa8\xf2\x7f\x3a\xac\x31\x78\xa7\ \x68\xd3\x8b\x39\x18\xaa\x58\x58\x36\xa1\x26\xc9\xf6\x97\x93\x2a\ \x4c\x60\xf3\xad\x96\xc2\xb9\x09\x3d\xe8\xa7\x1b\x5b\x78\x8e\xca\ \x07\x07\xf9\xd1\x5d\xbc\xce\xcb\x3e\xe2\xe9\xc1\xa8\x95\x8d\x91\ \xb0\xd5\x92\x13\x84\x67\x21\xc3\xff\x00\xf7\x15\x5b\xa4\xa0\xee\ \x40\xe0\x80\x72\x69\x7c\x08\xa5\x5a\x1e\xdb\x29\x00\x12\x9f\x13\ \x38\x1f\xf1\x8a\xa6\xf7\x54\x56\x94\xac\x80\x30\x73\xc0\xad\xd4\ \xdd\xe0\x8c\x0d\x58\x99\xdb\x49\x4c\x26\xc9\x27\x84\xf1\xc7\x15\ \xaa\x18\xdd\x31\xc7\xb3\x9c\x71\xc8\xe4\x57\x96\x97\x02\xed\xc9\ \x3b\x8e\x40\xe4\x66\x8b\x77\x09\x77\x18\x3e\x6c\x7c\xd5\x80\x8a\ \x33\xd4\x9b\x85\xb2\xdf\xa8\x35\x08\xd3\x08\x95\x6b\xb1\x5d\xff\ \x00\x56\xcb\x58\x9b\xb5\xe5\xa8\xb8\x94\x05\x34\x8d\x98\x57\xf5\ \x8d\x93\xb9\x49\xee\x7d\xb3\x4f\x57\xde\xa2\x49\x82\xbd\x4b\x6d\ \xd4\x76\x96\x20\x3f\x67\xb6\xa2\xe4\x55\x12\x59\x7d\x0e\xb4\xbd\ \xc3\x6e\x4a\x11\x85\x85\x27\x6f\x6c\x1c\x83\xc5\x37\xbd\xd3\x8b\ \xdc\xae\x9b\xeb\x2b\x23\x72\xad\xc9\x95\x7e\xd4\x29\xba\x45\x52\ \x9c\x58\x42\x1a\x0e\xc7\x56\xd5\x9d\xb9\x0a\xc3\x2a\xe0\x02\x39\ \x1c\xf7\xc2\x8d\x5d\xa1\xdf\xbe\x6a\x2d\x53\x3e\x64\xa6\x5b\xb7\ \x5e\x6c\x4d\xdb\x1b\xd8\x49\x75\xb7\x12\xb5\xab\x79\x49\x18\xc0\ \xdc\x08\xe7\x9c\x7a\x57\x36\xf2\x95\x4c\xdd\x86\x9f\xdd\x85\x3b\ \x76\xaf\xbf\xe0\x8d\x5a\xb5\x35\xc0\xdf\xad\x96\x9b\xe5\x99\xb8\ \x2b\xbb\x30\xb7\xa1\xa9\x99\x5e\x36\x0a\x00\x52\x9b\x73\x28\x4e\ \x15\xb4\xe7\x23\x20\xf3\xcf\x19\xa6\xfb\x37\x51\x26\x49\xd1\xcc\ \x6a\x69\x36\x16\xe3\xc7\x9a\xa6\x23\xc0\x6c\xcc\x1b\xe4\x48\x71\ \x7b\x08\x27\x6e\x10\x80\xac\xf9\x8e\x4e\x01\x38\xf4\xa7\x96\x34\ \x5e\xa5\x93\x7f\xb3\x5e\xaf\x92\x2d\x89\x4d\x9a\x3b\x88\x60\x44\ \x52\xd4\x5f\x71\xc4\x04\x17\x14\x14\x91\xb0\x6d\x07\xca\x37\x7d\ \xe3\xcd\x31\x40\xe9\xc5\xd9\x7d\x2b\xb4\x69\x79\x2e\xc1\x54\xfb\ \x5b\xe8\x92\xda\xd4\x92\xe4\x75\xad\x0e\x15\x84\xa8\x10\x0a\x90\ \x41\x20\xf1\xeb\xeb\xeb\xba\xf2\x7b\x18\xda\x91\x27\xd2\xba\x99\ \x77\x69\xd7\x6b\x5c\xb8\xf1\xe3\xcf\xb6\x38\xda\x5d\x4c\x79\x1e\ \x33\x4e\x21\xc4\xee\x42\xd2\xad\xa9\x3c\xf2\x30\x47\x04\x1e\xf4\ \xcd\x17\x57\x3d\xa5\xee\x1d\x43\xb9\x4d\x82\xf3\xdf\xaa\x53\x6f\ \x77\xc3\x4c\xd5\x2d\x0b\x69\xcd\xc9\x1b\x10\xa4\x80\xda\xb6\xf2\ \x40\xc8\x27\xd7\xd6\xa5\xda\x27\x4d\xbd\x00\x48\x76\x65\x96\xc9\ \x6c\x52\xca\x70\x8b\x6a\xb7\x05\x81\x9e\x54\x7c\x34\x76\xc9\xc7\ \x1c\x64\xd4\x7f\x59\xe8\x0b\xcd\xe7\xfa\x7e\x88\x4f\xc0\x48\xd4\ \x31\xa0\x35\x13\xc5\x5a\xc7\x86\x58\xce\xf2\xe6\x12\x70\x0e\x78\ \xc6\x7e\x71\x54\xa8\xdb\x8e\x85\xad\x24\x93\x5e\xb4\x62\xa7\xf5\ \x45\xe9\x8d\x51\x36\xc7\x70\xb2\x43\x89\x70\xfd\x54\x6e\x71\x76\ \x4c\x53\xad\x94\x85\x6c\x28\x70\xf8\x69\x29\x50\x51\x1d\x81\x18\ \x3c\x76\xa6\x1d\x25\xad\xef\x4d\xe8\x3d\x39\x36\xee\xcc\x19\x97\ \x1b\xd3\x88\x66\x17\xfb\x41\x6c\x2c\x90\xa5\x2d\x6e\x9d\x98\x42\ \x52\x13\xfb\xa1\x5e\x82\xa7\x57\x0d\x2b\x2e\xe1\xd4\x8f\xe9\x1a\ \xde\x8e\x88\x46\xc0\xe5\xb0\xa3\x71\xf1\x43\xaa\x79\x2b\xdd\x8c\ \x63\x6e\x01\xf5\xce\x7d\x3d\x6a\x14\xd7\x4b\xef\xc9\xd2\x5a\x7e\ \xd5\x2c\xd9\x1f\x93\xa7\xa4\x05\xc6\x0b\x5a\xdd\x62\x5b\x78\x52\ \x54\x97\x12\x50\x36\x12\x95\x0c\x63\x7e\x08\xa8\x53\x90\x4e\x13\ \x4e\xe8\x5b\x23\xa9\x2e\x33\x64\x2f\xfe\xa6\x4b\xd7\x16\xef\x89\ \xb2\xbb\x11\x99\x61\x49\x53\xaa\x4e\x50\xa4\x2c\x81\x94\xa8\x94\ \x72\x40\xc6\x4f\xb5\x38\x7f\x4d\xae\xb0\xae\x2e\xc1\x6a\xcf\x6e\ \x7a\xe9\x02\xd9\xfa\xc6\xe0\xd2\xee\x45\xb6\xd0\x32\xad\xad\x36\ \xaf\x0c\xef\x59\xda\x4f\x21\x23\xdc\xf3\x49\xee\x5a\x1a\xeb\x72\ \x85\x65\x8e\xd5\xba\xc3\x67\x5c\x4b\xec\x5b\x8b\xcd\x44\x52\xbc\ \x35\x36\xd2\xb2\xac\x10\xda\x77\x2f\xd0\x65\x20\x76\xe4\x53\xad\ \xe7\x42\x3a\xde\xb9\x5e\xa5\x85\x6b\xb0\xdd\xd1\x2e\x1a\x22\xc8\ \x89\x76\x04\x04\x29\x0a\x25\x2e\x36\xa0\xda\xfd\x14\x41\x4e\x06\ \x70\x39\x15\x15\x27\x24\xad\x72\xd0\x84\xef\x71\xda\x27\x53\x1c\ \xbc\x5e\xad\x76\x7d\x39\x6e\x80\xeb\xf3\xec\xed\x5d\x9a\x55\xca\ \xe0\x62\xa5\xd4\x38\x78\x69\xbd\xad\xac\xa9\x63\x07\x77\x18\x4f\ \xcd\x37\x45\xbd\xeb\x29\x9d\x53\xd6\x76\x38\xed\xda\xdc\x85\x6d\ \x8d\x10\x47\x6d\xd9\x2b\x6f\x69\x71\xb7\x94\x95\x6e\x4b\x64\xe5\ \x44\x24\x2b\xfb\x21\x3c\x66\xb7\x75\x07\x45\x5d\x75\x55\x89\x8b\ \x03\x16\xad\x37\x09\x94\x36\xd1\x8b\x3d\x2e\xb8\x97\xad\xce\x0d\ \xa5\x4a\x61\x09\x6c\x76\xc7\x1e\x74\x7a\x67\xda\x9d\x23\xe9\x9b\ \xd5\xa7\xa9\xb7\xad\x42\xc3\x90\x65\x5b\x6f\x4c\x44\x43\xc5\xd7\ \x94\x89\x0c\xae\x3a\x16\x9e\x12\x10\x52\xb0\xad\xd9\xfb\xc9\xc7\ \xb1\xac\x11\xd2\x46\xf9\x71\x25\xbf\x27\xf4\x7f\x82\x13\xa0\xf5\ \xcc\xb6\xf4\x9e\x84\x89\x6f\xb4\xbb\x36\x4e\xa1\x6e\x4a\x19\x13\ \x6e\x2a\x51\x6c\xb4\x4a\x89\x71\xd2\x92\x54\x36\x85\x1c\xed\xcf\ \x00\x01\x4e\x8b\xea\x43\xcf\x59\x4a\x5c\xb2\xb6\x2f\x89\xd4\x0a\ \xb0\x08\x68\x94\x4b\x2a\x90\x90\x14\x56\x1c\xd9\x90\xde\xcf\x36\ \x76\x64\x76\xc6\x69\x26\x8a\xe9\xd5\xea\xcc\x9e\x9d\xb7\x2a\x55\ \xb9\x6a\xd3\x3f\x6d\xfb\x6f\x86\xe2\xc8\x73\xc6\x6d\x69\x4f\x87\ \x94\x8c\xe0\xa8\x67\x3b\x7f\x1a\x43\xa8\x74\x7c\xcb\x3c\x69\xf7\ \x59\x17\x08\xac\xcb\xfe\x98\x2e\xfb\x6f\x52\x59\x79\xe6\xca\x16\ \xda\x51\xe1\xbc\x10\x82\x51\x94\x85\xe5\x40\x10\x0e\xde\x69\xea\ \xf7\x46\x5b\xd4\x50\xd7\xd6\x88\x96\x68\xad\x51\x3a\xf5\x7c\xbf\ \xd9\x6e\x36\xb6\xa0\xcb\xb2\x2d\x86\x9e\x2d\xbe\x5d\x43\x85\xc4\ \x15\x85\x24\x94\xa4\xe3\x6e\xd3\xc8\x07\x92\x3d\x39\x9f\xdb\x9b\ \x21\x9d\xde\xf5\x4a\x74\xfa\x36\xb1\x9d\x71\xd7\x77\xeb\x6a\x20\ \x35\x3a\xe9\x2a\x28\xb7\x3f\x32\x3b\xc8\x8a\xe0\x69\xb0\x85\x10\ \x08\x0b\x52\x40\xca\x42\xb0\x37\x11\x9c\x7a\x55\xe2\xdf\xec\xa3\ \x80\xac\x6e\x03\x9c\x0a\xad\x59\x5d\x58\xd3\x84\xbb\xd5\x9a\x5e\ \xf3\xc8\x48\xc7\x00\xd2\xe5\x28\x21\x19\x24\x62\x92\x46\x49\x53\ \xbb\x8d\x63\x73\x77\xcb\xe1\x8e\x29\x4e\x39\xa4\xa2\x6b\x52\xca\ \x9c\x8c\xe5\x79\x9b\xde\x80\x08\x3e\x95\x1c\xba\xb6\x92\xda\x93\ \x8a\x7a\x84\xf0\xf0\xca\x14\x7b\x53\x7d\xdb\x6a\x42\x88\x23\xb5\ \x68\xa2\xb2\xca\xc2\x2a\x4a\xeb\x32\x28\x7e\xac\x5b\xd9\xf0\x5c\ \x75\xcd\xa1\x23\x39\xc9\xc0\x23\xd4\x57\x1e\x5d\xed\x4c\xc5\x9d\ \x3a\x1b\x8b\x49\x4a\x17\x84\x2c\x11\x82\x3b\xa4\xff\x00\x01\xda\ \xbb\x8f\xa8\xed\x32\xfc\x57\x12\x52\x15\x90\x46\x31\x9c\xd7\x21\ \xf5\x4d\x8b\x7b\x77\x22\xdb\x6a\x40\x90\xc2\x8e\x50\xca\x07\x95\ \x27\x9c\x28\x8f\x5c\xfa\x52\x7a\x46\xea\x49\x8d\xe8\xd9\xae\x23\ \x8f\x69\x5b\xcb\x01\xb4\x16\xc1\x2e\x36\xda\xb3\xbb\x1b\x77\x66\ \x90\xab\x24\x03\xfc\x3d\xa9\x44\xc2\x92\xac\x93\x93\xea\x7e\x7d\ \xa9\x32\x73\x9c\xfe\x35\x96\x3b\x1b\x2a\x7b\xd6\x2c\x3e\x86\x5e\ \x55\x07\x50\x2e\xde\x9d\xa9\x75\xf4\x9f\x05\x6a\xec\x92\x01\xcf\ \xe6\x3f\x3e\x2b\xb1\xf4\xdc\xc5\x4a\x89\x1d\x78\x4a\x96\xcb\x61\ \x0e\x82\x78\x2a\xc6\x4f\x6f\xf5\xc5\x70\x15\xb5\xd7\xe3\x5d\xa3\ \xc9\x86\xa5\x25\xd0\xa0\xa6\xcf\x63\xbb\xbe\x2b\xae\xfa\x67\xa9\ \xc4\xcb\x4c\x0b\x8c\x64\xbc\xff\x00\x8a\x0b\x8e\x82\x07\x99\x69\ \x49\xcf\xd0\x9e\xd8\xf8\xae\x46\x3a\x9e\x4a\xaa\x6b\x66\x75\xf0\ \x53\xe2\x50\xc9\xce\x25\xcd\x16\x52\x52\x50\xe8\x20\x21\xd0\x0a\ \x49\xf5\xee\x08\xc7\xa7\x22\x9c\x96\xe2\x50\xc6\x14\xe6\xc5\x28\ \x85\x79\xbd\x0e\x2a\x31\x6d\x7d\x1f\x64\x3b\x5b\x07\x01\x2b\x4a\ \x09\xc7\x98\xf7\x03\xe0\x71\x4f\x4a\x79\x29\x4b\x99\x41\x53\x89\ \x4f\x09\xce\x48\x57\xf6\xbe\x9e\xff\x00\x14\xa8\xcb\x40\x9a\xd4\ \x75\x83\x28\x21\xe4\xa9\x4b\x40\x07\x18\x27\xb6\x7d\x85\x3b\xaf\ \x2e\x34\x57\x90\x49\xc1\x2a\x1f\xcb\xe0\xd4\x2e\x44\xc2\xc3\xa1\ \x01\x40\x37\x80\xb5\x85\x71\xdf\xdb\xe7\xe9\x4f\x91\x64\xed\x61\ \x05\x04\xbb\x9f\xbe\x53\xc7\x70\x3b\x81\x53\x09\xf2\x29\x28\xb5\ \xa8\xe0\xa4\x2b\x07\x91\xbb\x18\x15\xa0\x85\x24\xf2\x33\x8e\x4e\ \x3b\x66\x94\xa0\x95\x25\x21\x5e\x53\x8e\xc1\x40\xee\xac\x78\xf3\ \x63\x18\xf5\xc5\x35\x3b\x30\x4e\xe6\xa6\x9c\x6b\x2a\x52\xc6\xd0\ \x91\xe6\xdc\x3d\x3e\x2b\x15\xc8\x86\xd9\x48\x52\x41\xe3\x00\x9e\ \x72\x3e\x4d\x6c\x75\x2d\xa5\x25\x6e\x1d\xde\x98\x1d\xe9\xbe\x41\ \x65\x2a\xcb\x4d\x95\x82\x9c\x7d\x0f\xe3\x5a\x23\x27\xc8\xba\xd4\ \xd8\xe3\xd1\x0a\x77\xb8\xc0\xce\xfd\xaa\x1e\xde\xf5\x8a\x26\x47\ \x52\x40\x65\x9f\x2e\x4e\x71\xed\xee\x6b\x4a\x76\xe7\x7f\x86\x9d\ \xc4\xf3\xba\xb0\x2b\x47\x2a\xd8\x9c\xe7\x83\xc0\xcd\x44\x99\x74\ \x66\x42\x4b\xea\x4a\x52\x13\xc7\x7a\xf5\xb4\xa1\x2d\x03\xd8\x93\ \xe9\xe9\x5e\x87\x02\xd4\x70\x3c\xc7\x9c\xfa\x56\xc4\xe1\x03\x9f\ \x4c\x9a\xcd\x32\x1b\x33\x8e\xb2\xdb\x81\x69\x4e\x48\x1c\xe3\xda\ \x91\x6a\x7b\x88\xf0\x91\x19\x05\x3b\x94\x00\x48\x07\xd7\xbf\xe7\ \xde\x92\xbb\x74\x47\x88\xa0\x97\x30\xda\x81\x4a\x47\x62\x78\xe4\ \xf3\xed\x51\xb8\x73\x45\xc1\xf3\x26\x46\xe5\x36\xc2\x89\x6c\x64\ \x83\x9e\x47\x22\xb3\x54\xa9\xa6\x54\x4c\x61\x77\x77\xc8\xdb\x73\ \x92\x88\x50\x9c\x38\xd8\xe1\xdc\xb5\x0f\x82\x3f\xf4\xae\x45\xfd\ \x23\xee\xce\x4d\xea\x0b\x50\x50\xea\x14\xcc\x78\xe8\x52\x90\x83\ \x90\x95\xab\x24\x83\xf8\x60\xfe\x22\xba\x2b\x59\xea\x08\xd0\x62\ \xbf\x26\x44\xa5\x33\x19\xb4\x17\x5c\x58\x20\x8e\x07\x63\xf1\xdb\ \x1f\x53\x5c\x63\x74\xb8\xae\xe9\x7e\x99\x76\x78\xef\x5c\xa9\x0b\ \x70\x83\xc7\x04\xf0\x3f\x01\xc7\xe1\x4c\xc0\x43\x3d\x57\x3e\x4b\ \xf9\x23\x15\x2c\x94\xd4\x79\xcb\xf8\x26\x3a\x45\x98\x32\xad\xaf\ \xc7\x7d\x61\xb5\x12\x92\x8c\xf6\x57\x03\x82\x7d\x06\x78\xcf\xcd\ \x2a\xb1\xb9\x19\x6e\x8b\x53\x8d\xf8\x32\x63\xa8\x96\x52\xb1\xc9\ \x0a\xdb\xce\x7d\x71\x83\xf9\x9a\x61\xb0\x2d\xc5\x35\x15\x4d\x2c\ \xee\x5b\x9f\x67\x29\x00\x1d\xc7\xba\x4f\xe3\x8c\x54\xef\x4a\x5a\ \xad\xf7\x99\xa9\x44\xe6\x54\x95\xc7\xe5\x0f\x32\xad\xab\x49\x3c\ \x00\x0f\xc7\x7c\x56\xa8\xda\x32\x95\xfb\x6e\x65\xc7\x55\x6a\x9c\ \x6f\xee\xd8\xb0\xf4\x96\x9b\x6a\x64\x54\x82\x90\x54\x45\x3f\xa7\ \x46\xbe\xc4\x8c\x82\xa0\x83\x4b\xb4\x16\x9d\x9d\x0c\x20\xb3\x73\ \x72\x52\x06\x30\x97\x1b\x09\x50\x19\xe0\x64\x77\xab\x76\x25\x97\ \xed\x70\xc0\x59\x4e\xe0\x3b\xd7\xa6\xc3\xca\x96\x2e\x9a\x94\xe3\ \xb1\xe5\x25\x26\xa5\x64\xee\x40\x34\xc6\x9e\x66\x2b\xe8\x50\x40\ \xef\xcd\x5a\x70\xa1\x25\x31\x52\x52\x00\x18\xa4\x30\x2d\x6d\xb4\ \x54\xd9\x00\x28\x76\x38\xa9\x0d\xa4\xa4\xb4\xa6\x57\xf7\xbd\x05\ \x6b\x9a\x8c\x17\x55\x15\x83\xbb\xb3\x1c\xed\xa9\x4e\x5a\x38\x3f\ \x18\xa2\xbd\x86\x76\x6d\x49\xfd\xd3\xcd\x15\xcc\xaa\x9b\x91\xd1\ \xa5\x2b\x22\x23\xd3\xf4\xa2\x7f\x4f\xa2\x30\xa0\x0a\xb0\xe6\x7d\ \xff\x00\xac\x55\x47\xe4\x47\x5c\x69\x0b\x8c\xb3\x8c\x1e\x29\xc3\ \xa7\x4e\xaa\x2e\x95\x84\xe8\xe5\x2a\xdf\x91\x9f\xf8\xc5\x53\xc6\ \xa1\x84\xd4\xc8\xe2\x54\x70\x0a\xc1\xce\x12\x39\xf9\xae\x8d\x35\ \x97\xc0\xe5\xdf\x34\x13\xe6\x86\xdd\x36\xf6\x50\xb6\x16\x7b\x1e\ \x29\xc2\x18\x29\x7d\xc4\x92\x78\xf8\xa8\xfb\x0e\xa9\xa7\xbc\x40\ \x08\x29\xe0\x8c\xf7\xa7\xa6\xde\x0e\x29\x0f\x24\xe4\x91\x83\xcd\ \x34\xa1\x36\x61\x59\xb5\xa4\xf7\xf2\xfa\x53\x55\xc4\xe4\x21\x19\ \xf2\x9a\x53\x6a\x7d\x0b\x82\xb6\xf3\xd8\x52\x39\x4f\x21\xc2\x87\ \x10\x77\xa4\x28\x8c\x83\x9e\x41\xc7\xf0\x39\xac\x54\xe2\xe3\x36\ \x6e\xab\x25\x28\x23\x09\x6b\x42\x23\xec\xf8\xf4\xa4\xf1\x51\xe2\ \xad\x0d\xa9\x5b\x73\xdf\x8a\xc1\xc5\x87\x65\x7e\xd3\xee\x27\xde\ \x86\xe4\x36\xbb\x80\x65\x97\x10\xa7\x50\x37\x29\xb0\xa1\xb8\x24\ \x9e\x0e\x3d\xbe\x6b\x52\x56\x46\x56\xee\xc5\x8f\x34\xe4\x7f\x32\ \x14\x14\x07\x7a\xdf\x15\xc0\xc3\x41\x6b\x18\x2a\x3d\xab\x25\xb6\ \xb4\xac\x2c\x1c\xa4\x8e\x45\x78\x52\x1d\x58\xe3\x18\xa4\x39\x66\ \x5a\x8e\x4b\x2b\xd0\x1f\x2b\x0b\x49\x6c\x67\x75\x6c\xfb\x32\x0a\ \x14\xa5\x2c\xee\xaf\x51\xb8\x37\xb0\x0e\x47\x6c\xd6\x4b\x6d\x69\ \x8d\x84\x9d\xca\x35\x46\xf9\x0c\x4b\x98\x91\x59\x1b\x14\x01\xe0\ \xd2\xbc\xa5\x6d\x05\x03\x8c\x52\x28\x72\xe2\xc9\x6d\x69\x61\xf6\ \xa4\x6d\x25\x0a\x2d\xac\x28\x02\x3b\x8c\x8f\x5a\x51\x19\x0f\x79\ \x80\x42\xb6\xfa\x66\xa6\x5a\xa2\xb1\x1c\xa3\x9d\xc1\x1f\x5a\xd9\ \x3d\x43\xca\x3b\xd6\xa8\xe1\x48\xda\x14\x9c\x7a\xd6\xa9\x6f\x85\ \x38\x40\x3f\x15\x95\x46\xf2\x35\xb9\x5a\x06\xb4\x11\x95\x2b\xd2\ \xb4\xe7\x72\xca\x88\xaf\x1d\x5e\x06\xc4\xe3\xe6\xb7\xc4\x60\xac\ \xf3\xf7\x45\x3f\x48\xab\xb3\x3e\xb2\x76\x46\xfb\x7b\x3d\xdc\x57\ \xe1\x5b\xdd\x56\xe5\x63\xd0\x77\xaf\x14\xb0\x06\xc4\x70\x2b\xc4\ \x83\x90\x9e\xe6\xb3\xbb\xb7\x76\x69\x4a\xca\xc8\xd8\x95\x06\x9a\ \x2a\x3d\xe9\x08\x4f\x8e\xb2\xb5\x76\xad\xb3\x49\x2b\x0d\x03\xc5\ \x68\x79\x41\x86\x4f\x22\xad\x05\x65\x7e\x6c\xac\x9d\xdd\xb9\x21\ \xae\xf1\x31\xbb\x78\x2e\x29\x61\x29\x1e\xa4\xd5\x6d\xaa\xba\xb3\ \xa6\xa1\xb4\xe2\x5c\xb9\xb3\xe2\x20\xe0\xb6\x16\x9d\xd9\xfa\x66\ \x9b\x3a\xf7\x7f\xbc\x1b\x78\xb6\x59\x1f\x87\x1a\x43\xc7\x2b\x91\ \x25\xcd\xa1\xa4\xfb\x81\xea\x4f\x35\xcc\xea\xd3\x2f\xb4\xa9\x92\ \xef\x1a\xa6\x3c\xd0\x7c\xc6\x34\x62\xa2\x1d\x50\x3c\x0c\x80\x06\ \x73\x58\xf1\x58\xfe\x1c\x94\x56\xe4\x50\xc3\x2a\xd7\x72\x95\x91\ \x33\xea\x8f\x56\x15\x70\x6d\xd8\xd6\x44\x4b\xda\x78\x5c\x8d\xc1\ \x00\x7c\x05\x67\x8a\xa1\x2e\xd3\x9f\x78\xe5\xf7\xc3\x3b\x95\x93\ \x80\x4e\x13\x8e\xfc\xf7\x27\xde\xac\x8b\x9c\x3b\x2b\x70\xb6\x5c\ \x25\x22\x12\x10\x90\x7c\x24\xba\x92\xa2\x48\x04\x1c\x9f\xf0\x15\ \x06\xbc\x4f\xd3\x0c\x33\x25\x11\xd8\x54\xd7\xd6\x02\x5b\x75\x6a\ \x52\xd4\x9e\x73\x9c\x9c\x01\xf9\x1a\xcd\x1a\xb3\xae\xf3\x49\x1d\ \x5a\x31\xa1\x41\x64\xa7\x7b\xbd\xd9\x11\x52\x14\xb6\x8b\xab\x25\ \x3f\xd9\xcf\x75\x13\xed\x58\x0c\x11\x9c\x7e\xed\x6d\x93\x25\xc9\ \x0e\xf8\x8b\x3b\x71\x9d\xa9\x4f\x61\x5a\x52\xa2\x84\x28\xfb\x8a\ \xd2\xaf\x6d\x4c\xf3\xb5\xf4\x14\xb0\x7c\x29\x4c\x3e\x47\xef\x05\ \xe3\xf1\xab\xbf\xa6\x12\x57\x67\xbc\xa2\xce\x40\xf0\x5d\x74\x3f\ \x1d\x59\xf2\xe7\x82\xa4\xfd\x78\xcf\xfe\x95\x56\xea\xeb\x6c\x2b\ \x65\xc5\x9b\x5a\x56\xa0\xf2\x2d\xec\x97\x54\xa5\x64\x87\x8a\x02\ \x94\x9e\x4f\x03\x9e\xde\x98\xab\x45\x88\x6a\xb8\xe8\x7b\x55\xd5\ \xb5\x94\x3b\xe1\xb4\x54\xe2\x40\xdc\x95\xa7\x8c\xe3\xe7\x18\xfc\ \x6b\x99\x8f\x95\xe1\x17\xc9\xfa\x47\x6f\xa2\x62\x9c\xa7\x0e\x7e\ \xae\x5f\x76\x7b\xcb\x29\x75\xe5\xad\xd0\xb6\xf8\x4a\x41\xe3\x9d\ \xde\xde\xd9\xf5\xa9\x23\x52\xdb\x56\x77\x27\x6a\x0a\x55\xb4\x13\ \xdf\x68\xc1\xdc\x7e\x3d\x2b\x9e\xb4\x96\xa3\x75\x49\x5c\x49\x0a\ \xf0\x25\x05\xed\x78\x2b\xb6\x33\x9c\x83\xed\x90\x4d\x5b\xba\x72\ \xfa\xc4\x88\xcf\xc4\x5a\xd2\xe2\x8e\x49\x4e\x41\x51\x48\x27\x27\ \xf1\xe0\xf1\x5c\xd8\xcf\x2b\xca\xcd\xb5\xb0\xed\x2b\xa2\x62\xb7\ \x1a\xfb\x39\x5b\xdb\x7c\x40\x37\x00\xa3\x95\x03\xeb\xf4\xe3\xf9\ \xd6\x36\x1b\x92\x52\x1d\x42\x1d\x59\x64\xac\xe7\x27\x71\x38\x38\ \x18\x3e\x99\xf4\xa6\xb6\x6e\x2d\x29\x85\x48\x3e\x11\x64\xa0\xab\ \x07\x2a\xe3\xe3\xdf\xe9\xf1\x4d\x0f\xce\x62\x25\xe2\x38\x6a\x3e\ \x5e\x71\x7b\x7c\x24\xaf\x0a\x2b\xc6\x46\xef\x7c\x0c\x7e\x75\x6c\ \xf6\x69\xa3\x26\x4b\xe8\xcb\x36\x43\xcb\x4b\xc8\x70\xe1\xa6\x90\ \x00\x69\xa0\xac\x92\x9f\x53\xc7\xcf\x14\xe0\xdc\x9d\xea\x05\x21\ \x38\x3d\xf1\xe9\xf5\xa8\x8d\x9e\xef\xe2\xba\x8d\xd2\x9a\x4e\x5b\ \xcb\x98\xe5\x48\x03\xd7\xf0\x3c\xd3\xdb\x6f\x17\x23\x78\xc8\x2a\ \x79\x0e\x04\x84\x24\x0e\xe0\x1c\x67\x3f\x3e\xd5\xae\x3a\xea\x8c\ \xed\x5b\x46\x2c\x75\xc7\x14\x14\x12\xa4\xab\x1c\x2b\x3d\xc5\x68\ \x62\x30\x74\x82\xa7\x95\x8e\x48\xcf\x35\xb5\x97\xd1\xb1\x0e\xba\ \xb4\xaf\x6a\xca\x4a\x47\x74\x91\xc7\x3e\xf5\xbe\x2a\xda\x01\x68\ \x20\xb9\x85\x67\xcc\x30\x47\xb5\x3e\x04\xa9\xe9\xa1\x8a\x62\x6f\ \xf3\xa5\x3b\x8a\xb3\xf8\xe3\xf9\x1a\x4d\x22\x2a\x9d\x5a\x90\x52\ \x84\xa7\x1b\xb9\x39\x27\x07\x9a\x5b\x1d\xc0\x42\x96\x96\xd4\x0e\ \x77\x04\x13\xc9\x07\xbd\x27\x7d\x63\x6b\x6a\x0a\x04\x94\xfa\x1e\ \x70\x7b\x8f\xaf\xc5\x59\xd8\x9c\xcd\x31\xb3\x86\xde\x70\x24\xfe\ \xcd\x05\x27\x70\x3c\x12\x78\xff\x00\x43\xe6\xb4\xc8\xb9\x25\xa6\ \x1c\x7d\x4b\x46\x5b\xc9\x20\x1f\x51\xee\x2b\x75\xd9\xf4\xc6\x61\ \xd9\x2d\xc8\x4a\x08\xe4\x93\xdf\xd3\xd3\xe9\x51\x6b\xbc\xef\x05\ \x6d\xa9\x4d\x2d\x95\x2b\x97\xc1\x19\x1c\xa7\x21\x43\xdf\xb7\xf1\ \xac\x75\x5e\x51\xab\xac\x37\x6a\xeb\xab\xbf\xa9\xd4\xb6\xd5\x97\ \x54\xe6\xd6\x4f\x8b\x9c\x05\x0e\xff\x00\xcf\xf9\xd6\xb6\x66\xa5\ \xb8\x3e\x47\x47\x8a\x94\x02\xe0\x20\x60\x64\x11\xe9\xe8\x78\xc5\ \x43\x2f\x77\x17\x2e\x37\x56\x19\x8e\x84\xa9\xb6\x4e\xf5\xad\x18\ \xfb\xf9\x00\xfe\x1c\x9f\xc6\x91\xeb\x9d\x4c\xbb\x44\x05\x33\x0f\ \x2e\x4f\x53\x48\x43\x0c\xb6\x39\x56\x0e\xe2\x15\xec\x30\x39\x3e\ \x95\xcf\x93\x6e\x5a\x1b\x23\x4b\x44\x8a\xd3\xf4\x8b\xd5\x81\x71\ \xe3\xe9\xb8\xc9\x42\x5c\x7d\x09\x76\x56\xd5\x79\x91\x85\x1c\x24\ \xfe\x40\xd5\x2e\xc7\xdc\xf2\x9e\x41\xc9\xac\xae\xd3\xe4\xdd\x2e\ \x92\x2e\x53\x56\x1c\x7e\x43\x85\x6b\x50\xed\x9f\x61\xf0\x2b\xd4\ \x36\xb4\x46\x53\xdb\x78\x48\x1f\xc7\xff\x00\x4a\xf4\x58\x7a\x0a\ \x85\x25\x1e\x7f\x53\x83\x88\xaf\xc7\xaa\xe5\xc9\x6d\xe0\x3d\xda\ \x56\xa1\x66\x79\xa6\xc9\x3b\xdc\x6d\x48\x29\xee\x9d\xa4\xf2\x3e\ \x40\x3f\xc6\xa7\x5a\x1f\x54\x45\xfb\x53\x28\x9c\xff\x00\xd9\xa4\ \x17\x3f\x79\x3f\x7f\xb6\x09\x3e\x87\x15\x5b\x45\x56\xd8\xd9\x6f\ \x25\x25\x59\x71\x3f\xd9\x48\xe7\x23\xf9\x56\x6b\x2a\xb8\x45\x61\ \x29\x70\x05\x85\x1f\xeb\x09\xdc\x9e\xdf\xbd\xed\xf5\xaa\xba\x69\ \x4f\x30\xca\x96\xad\x47\x86\xfd\x7a\xb9\xdb\xfa\x4a\xec\xd3\x71\ \x98\x74\x10\xa4\x2d\x20\x85\x24\xe4\x1a\x91\x47\xd6\xf1\x5c\xbf\ \xb1\x60\xb6\xbc\x99\x37\x07\x12\x1c\x5b\x2d\x9d\xde\x0b\x7e\xab\ \x59\x1f\x77\xe0\x1e\x49\x22\xb8\xbf\x4e\xe9\xad\x63\x2c\x22\x09\ \xbf\xa2\x04\x65\x01\x95\xae\x5f\x00\x0f\x4c\x24\x93\x9f\x8a\xe9\ \xae\x84\x58\x2c\xfa\x56\xd8\x61\xdb\xdd\x12\x25\xbe\x77\x4b\x98\ \xaf\xbc\xf2\xbd\x07\xc2\x47\xb5\x3d\x63\xea\x4d\xa8\x52\x77\xf0\ \x38\x18\x9c\x1a\xc3\xdf\x3b\xd7\xb0\xbf\x5a\x69\xa9\x51\x52\xb6\ \xd4\x03\x80\x73\x9e\xe6\x92\x9f\x15\x87\x72\xa0\x52\x53\xdf\xe6\ \xb7\x5a\xc2\x56\xd8\x52\x09\xc8\x02\x97\xb8\x12\xa4\x6d\x79\x00\ \xf1\xc1\xae\xec\x65\x28\xab\x48\xcb\x93\x32\xb9\xa9\x89\x88\x51\ \x05\x20\xe4\xf1\xc5\x14\xb2\xc9\x6a\x6d\xb7\x0c\x85\x64\x83\xd8\ \x1a\x2b\x35\x5a\xd0\x8c\xac\x91\xaa\x95\x19\xca\x37\x6c\x83\x68\ \x26\xf6\x69\x78\x6d\x39\xf7\x72\xe1\xe7\xd4\x78\x8a\xa7\x92\x55\ \x1d\x59\x46\x14\x8f\x50\x07\x06\xb5\x68\xd8\x45\xee\x9f\x5b\x24\ \x23\xcc\xb4\x87\x09\x03\xd7\xf6\x8a\xa5\x29\x56\xe4\xf9\xbb\x8e\ \xfc\xd6\xca\x53\x53\x89\x86\x50\x70\x48\x41\x32\x14\x79\x61\x4e\ \x30\x42\x17\x83\x94\xd3\x4c\x66\xe7\x37\x2c\x44\x43\x6a\x3b\xbd\ \xbb\x54\x89\x4c\x24\x80\xb4\xf9\x71\xeb\x4e\x9a\x5e\x08\x5b\x85\ \xf7\x46\xec\x1c\x73\x56\xa9\x35\x08\xb9\x30\x84\x1c\xe4\xa2\x8a\ \xab\xa3\x76\x3b\x64\xed\x57\xaa\x97\x72\xb2\xbf\x2e\xe0\xc6\xa5\ \x92\x23\xdc\x17\x1f\xc4\x6a\x39\x43\x6d\xad\x20\xab\x23\x18\x56\ \x48\x1e\xea\x1e\xf5\x96\x96\xd4\x57\x4b\x26\x89\xb4\xb5\x6b\x83\ \x65\x44\xcb\x86\xb5\x91\x65\x79\x42\x3a\xd2\xc9\xdc\x5e\xcb\xdb\ \x37\x95\x67\x7a\x52\xa2\x9d\xdc\x80\x52\x08\xce\x45\xad\xa1\xf4\ \xbf\xf4\x65\x7a\x81\x62\x77\xda\xbf\x5c\x5e\x5e\xba\x01\xe0\xec\ \xf0\x7c\x44\xa1\x3e\x1f\x73\xbb\x1b\x3e\xf7\x19\xcf\x6a\x8e\xc6\ \xe9\x87\x83\x6e\xb5\xc4\x37\xcc\xfd\x83\x55\x2f\x50\xee\xfb\x27\ \xf5\x9b\x8b\x87\xc1\xfb\xfc\x7f\x59\xf7\xf9\xed\xf7\x79\xae\x44\ \xaa\x39\x3b\x9b\x23\x86\x94\x22\xac\xb5\xd7\xf9\x43\x05\xd7\x5b\ \xdd\xad\x2c\xea\xcb\x54\xe8\xb6\xc9\xd7\x8b\x4d\xca\x0c\x08\x2f\ \x34\xca\xd9\x65\xf3\x31\x28\x2d\x95\xa7\x72\x88\xd8\x14\x73\x85\ \x73\x8f\x4c\xe6\xbc\xd1\xd6\xcb\xa4\x2e\xbb\xea\x16\x2e\x72\x61\ \xcc\x79\x36\x28\xaa\x4b\xb1\xd8\x53\x29\x52\x0b\xae\x77\x49\x5a\ \xb0\x73\x91\xf7\x8f\xa7\xd2\xa4\xb7\xbe\x99\x31\x76\x9f\xab\x65\ \x3d\x78\x75\xa5\xdf\xa4\x41\x95\x1d\x4d\x32\x02\xa0\xbd\x15\x09\ \x4a\x14\x09\x24\x2f\x25\x20\xe0\x81\xc1\x23\xe6\x9c\x74\xbe\x8f\ \x9f\x6f\xd6\x73\xf5\x5d\xda\xfa\x8b\x94\xe9\xb0\x9b\x86\xb4\x35\ \x0f\xec\xed\x21\x2d\xa8\xa9\x25\x23\x7a\x8f\xa9\xce\x49\xe4\xfa\ \x0e\x28\x55\x64\xb9\x93\xec\xf2\x73\x4d\xae\x7e\x5a\xfe\x08\xdd\ \xda\xf5\xa8\xe7\xeb\xf9\x9a\x5f\x4e\x3d\x6f\x88\x6d\xd0\x1b\x97\ \x21\xf9\xac\x2d\xd0\xb7\x1c\x52\x82\x1b\x09\x4a\xd3\x84\xe1\x19\ \x2a\xc9\x3c\xe0\x0f\x5a\x43\xa7\xb5\xf4\xeb\xdc\xfe\x9f\x29\xa8\ \x8c\x47\x63\x50\xc7\xb8\x99\xcd\x9c\xa9\x4d\xbb\x1b\x6a\x70\x85\ \x7b\x6f\xdd\xe8\x72\x31\x52\xdd\x4f\xa2\xe6\x3f\xa9\xdf\xd4\xfa\ \x7a\xf6\x2d\x57\x09\x10\x93\x0e\x50\x76\x20\x7d\xa7\x10\x95\x15\ \x21\x61\x3b\x92\x43\x89\xdc\x70\x72\x46\x0f\x20\xd3\x2b\x1d\x38\ \x6e\x2c\x2d\x2a\xd5\x82\xee\xa8\x73\x34\xc8\x79\x0c\x3d\x26\x3f\ \xda\x12\xfa\x5f\x00\x3d\xe2\x24\x29\x1c\xa8\x8d\xd9\x04\x60\xfb\ \xf6\xa6\xf1\x1c\x95\xc5\xca\x95\x48\xc9\xaf\x5b\xaf\xa5\xc8\x6e\ \xa8\xd4\xfa\xa2\xed\x66\x65\x51\xae\x4c\x5b\x94\xcf\x50\xc5\x94\ \x16\x98\x3e\x66\x51\x20\x06\xf7\x79\x86\x7b\x79\x87\x65\x03\x8e\ \x2a\x7b\xd4\x46\xee\xd1\xba\x45\xa8\xd6\x8b\x8a\x3f\x58\x31\x66\ \x90\xe2\xe5\x21\x9d\xa0\x94\xb4\xa2\xa2\x94\xee\xf2\x92\x01\x00\ \xe4\xe0\x90\x79\xc6\x29\xad\x7d\x30\x5f\xea\x15\x5a\xe3\xea\x07\ \x0c\xc1\xa8\x93\xa8\x5b\x96\xf4\x40\xa0\x24\x85\x25\x44\x29\x01\ \x43\x72\x4a\x82\x8f\x05\x3c\x10\x3d\x32\x67\x97\xeb\x13\xf7\x9d\ \x0d\x73\xd3\xb2\x66\xb6\x89\x17\x1b\x7b\xd0\xdc\x94\x86\x30\x94\ \xa9\xc6\xca\x0a\xc3\x65\x59\xc0\xce\x76\xee\xfc\x6a\xae\x6e\x2b\ \x5e\x65\xa9\xd1\x9c\xaf\x7e\xc2\xb3\xe9\xfb\x97\x58\x88\xd3\x7a\ \x32\xc1\xfa\x8a\x24\xb7\x74\xe3\x57\x89\x93\x5c\xb7\x1d\xbe\x1a\ \xb6\xb6\xd2\x03\x48\x5a\x77\x2b\x20\xee\x59\x57\x61\xdb\x26\x94\ \xb7\xd4\x7d\x49\x70\xb5\xe9\x96\x6d\x70\x6d\x71\xaf\x17\x4b\xa4\ \xcb\x44\xb0\xf8\x5a\xd8\x65\xe6\x37\x65\xc4\xe0\x85\x29\x38\x46\ \xe0\x9c\x8c\xe7\x19\x1d\xea\x4f\xfd\x03\x95\x0e\x55\x92\xe7\x64\ \xbe\x88\x57\x5b\x6d\x9d\x36\x87\x1e\x7a\x1f\x8c\xcc\x96\x06\xd2\ \x0a\x9b\xde\x92\x14\x14\x9d\xc0\x85\x71\x92\x0e\x45\x68\xb7\xf4\ \xce\x2c\x01\xa5\x04\x7b\xbb\xaa\x36\x29\xf2\x27\xbe\xe3\xcc\x85\ \x2e\x6b\xaf\x25\x7b\xc9\x20\x80\x9e\x56\x4f\x63\xc0\x03\xe6\x92\ \xe4\xde\xe3\x23\x4a\xa4\x74\x5e\xb6\xfc\x93\x98\x48\x7d\x30\x98\ \x44\xc5\xb6\xec\x84\xb6\x90\xf2\xdb\x46\xd4\xa9\x78\xf3\x10\x32\ \x70\x09\xcf\x19\x35\xa6\x74\x20\xe2\x0a\x9b\xe1\x58\xef\x4b\x7e\ \x86\x81\x44\x66\xe2\xee\x8d\x92\x82\x92\xb3\x18\x63\x47\xda\x49\ \x79\x5c\x8f\x4a\x58\x09\x23\x68\x18\x4d\x6c\x94\xd8\x4b\xc1\x5e\ \xf5\xe0\xad\x2e\x79\xb5\x33\x46\x19\x74\x3d\x4a\x76\x8a\xda\xc8\ \xc6\x56\xae\xd5\xad\x09\x2b\x50\x03\xd2\x95\x3a\x90\x19\x29\x14\ \x99\x3e\x43\xa2\xb9\x8d\xb3\xb0\xb7\x0a\x93\xcf\x15\x1c\xd4\x72\ \xdd\x8d\x01\xe2\x81\xb9\x7b\x4e\xd1\xee\x6a\x40\xa5\x14\x93\x8f\ \x4a\x8f\xea\x16\x17\x25\xa5\x0f\x53\x5a\x32\xc9\xc6\xd1\x32\xd4\ \x77\xd5\x1f\x3d\xb5\xfd\xcf\x5d\xeb\xad\x61\x24\x39\x0e\x5c\x87\ \x91\x93\xf6\x76\x92\xa0\x86\x12\x0e\x30\x40\xf6\x3c\x12\x7d\x69\ \xb2\x2e\x9d\xd5\x16\x89\x6c\xbb\x71\xb6\x3e\xd3\x41\x61\x38\xdd\ \xc1\x27\xf1\xae\x90\xeb\x0c\x46\xb4\xe2\x5f\xbc\xc7\x6d\xb6\x64\ \x15\x7e\xd1\x40\x04\x97\x72\x47\x94\x9f\x73\x54\xcd\xf2\xfa\x8b\ \xf6\x9d\x79\xf8\x4a\x52\x64\x32\xe2\x56\xa6\xd6\xac\x2d\x24\x1f\ \x6f\x51\xf4\xae\x35\x49\xce\xed\x4d\x58\xe8\x61\x6a\xb7\x97\x24\ \x74\xd8\x6f\xd5\xf6\x69\x6e\x86\xa3\xb7\x66\x7c\xc9\x77\x21\x00\ \x27\x2b\x51\x03\x24\x77\xf4\x19\xa8\x33\xda\x6a\xf3\xe2\x61\x16\ \xa7\xce\x4e\xd0\x0f\x07\x3c\x9f\x7f\x83\x57\x25\xd5\x71\xcb\x08\ \x96\xec\xc6\x5a\x69\x61\x2f\x36\xe2\xdd\x09\xda\x48\xce\x46\x4f\ \xb1\xaa\xcf\x50\x6a\x75\x15\xed\xb6\x05\x25\x49\xdd\xbd\xee\xe3\ \x24\x11\x91\xf8\x13\x8f\xad\x36\x8c\x1a\xa7\x9a\xfb\xaf\x32\xcb\ \x13\x2a\xcd\x45\xc7\x62\x2b\x1d\x82\xe4\xb6\x62\xaf\x09\x53\x8e\ \x25\x18\xcf\x6c\x9c\x72\x6b\xc9\x51\x9c\x6a\x43\x8c\xe3\x1b\x16\ \x5b\x51\xfa\x1c\x1a\x5d\xa7\x19\x13\x2f\x91\xc3\x88\x52\x9b\x6c\ \x97\x5d\x24\x9c\xe0\x73\xc9\xf9\x38\x1f\x8d\x6f\xbd\x36\x7c\x57\ \x24\x38\x70\x5c\x3c\x24\x7a\xe3\xd6\x9b\x14\xdb\x7d\xc1\x27\x1b\ \xd8\xd1\x79\x94\xe5\xde\xee\xf4\xa7\x37\x3b\x35\xd7\x50\x80\xd3\ \x0d\x65\x2a\x21\x20\x71\xf9\x70\x3d\x6b\xa1\x7a\x0f\x0d\x33\xfa\ \x7c\xea\x5b\x6b\xc5\xd8\xa2\x36\x77\x25\xbc\xe4\x1e\x3f\x78\x12\ \x7f\x0c\x7b\x57\x3e\xdb\x2e\x26\xdd\x35\xb9\x6d\x36\x91\x22\x30\ \x43\xad\xa8\x7e\xea\x92\xa0\xa1\xfc\x06\x0f\xd6\xba\x17\xf4\x6a\ \x92\xe3\xa8\xbb\xac\xb5\xe0\x66\x7f\x8c\x1b\x40\xc6\xc4\xb8\x37\ \x0e\x3d\xbe\x7b\x57\x3f\x1f\xd6\xa7\x67\xca\xdf\x63\xa7\xd1\xed\ \xc6\x6e\x48\x64\xd7\xda\x6a\x4c\x29\x49\x7a\x3a\xd1\x94\x28\x2d\ \xa7\x14\x33\x90\x32\x70\x7d\xe9\xab\x4f\xea\x29\x2c\xf8\x5e\x02\ \x56\x42\x4a\x81\x69\x4b\xda\x52\xac\x85\x10\x93\xdf\x07\x9f\xc3\ \x8a\xe8\xad\x51\x64\x8b\x26\x23\x8f\xa5\x96\xdf\x52\x0a\x94\xe3\ \x09\x1e\x60\x0f\xef\xa7\xfc\x40\xf6\xe2\xa8\x6d\x71\xa2\x57\x68\ \x96\x65\xb0\xe8\x2a\x4f\x29\x52\x46\x4a\xd2\x71\xc0\xe7\xdf\xf8\ \xd7\x26\x2a\xdd\x59\x7c\x0f\x41\x0a\xdc\x4e\xb2\xdf\x99\x37\xb4\ \x6b\x95\x18\xf1\xbc\x44\xab\x85\x79\x51\x8c\xf6\x3d\xf3\xe9\xd8\ \x60\x1e\x6a\x4d\xf6\xe6\xe4\x23\x28\x5b\x7b\xd9\xcb\x89\xda\xb3\ \x95\x1e\x0a\x88\x3d\xf3\xe9\xcf\x07\x35\x45\xdb\x11\x20\x90\x84\ \x2c\xa1\xe2\x00\x2a\x74\x14\xe0\x1e\x09\xc7\xe1\x52\x07\x5d\x99\ \x0d\xf8\xbb\x9b\x12\x1b\x64\xec\x58\x2b\xf3\x2c\x77\xf4\xcf\xcd\ \x2e\x49\xa7\x64\xc9\x96\x1e\x13\xd5\x68\x58\xcc\x5d\x1a\x64\xb8\ \x43\x8b\x69\xc9\x18\x29\x52\x80\x1e\x1a\x14\x48\xc7\xc9\x24\x91\ \xf9\x54\xa6\xd5\xac\x5a\x8c\xda\x1d\x79\xd3\x15\xc4\xe5\x05\xa7\ \x10\x40\x47\xa7\x97\x9f\x31\xc2\x48\x38\xf5\xcd\x52\xd3\xae\x4a\ \x5a\x54\x63\x89\x0c\xa9\x68\x40\x6e\x3a\x8e\xd5\x67\x83\x92\xa3\ \xfb\xbd\xb1\xeb\x5b\x67\x5c\x51\x28\xc5\x6a\x6a\x32\xe4\x70\x54\ \xd2\x37\xa9\x60\x7a\x11\x8c\xf3\xdf\x9f\xad\x5a\x15\x25\x11\x33\ \xc2\x46\x45\xff\x00\x6d\xd5\x70\xd2\x43\x89\x7e\x13\x8d\xb8\x42\ \x96\x19\x70\x2b\x7a\x49\xc0\x27\xd8\xf7\xe7\xe2\xa4\x08\xba\x25\ \x4e\x36\x63\xbe\xd3\xad\x28\x00\xbc\xab\x9e\xd9\x07\x3e\xbc\x1e\ \x47\xc5\x72\xe3\xd6\xc8\xd2\xda\x53\xb1\x24\x4f\x4b\xc5\x64\x2d\ \xb2\x36\xec\x09\xe0\xa9\x40\x1c\x00\x33\x81\x8f\x8a\x77\xb6\xc1\ \xbe\x90\xd3\xd1\xb5\x1c\xd2\xca\x52\xa0\x8c\x34\x55\xb4\xa5\x38\ \x4e\x01\xf9\xfe\x74\xe8\xe2\xb2\xab\x31\x32\xe8\xf4\xf5\x4c\xe9\ \x28\xf7\x58\xaa\x52\x92\x14\xe2\xd0\xda\x4a\x4a\x89\x00\x13\x9e\ \xff\x00\xe1\x5a\xdf\xbd\x41\x8a\xa4\x93\x21\xa0\x51\xf7\xdd\x1c\ \x63\x23\x03\xe0\xf2\x45\x73\xab\x82\xf8\xd3\x0b\x73\xfa\x45\x21\ \x87\x56\x43\xcd\xb4\xf6\x08\x07\xb7\x38\xf8\x26\x9a\x2e\x97\x3d\ \x45\x21\xf6\x61\xa2\x42\x12\x8c\x8f\x0d\xe5\x76\x51\xc1\x21\x58\ \xec\x14\x71\x9c\x55\x96\x31\xb2\x1f\x47\x77\x96\xd6\xaf\xd6\xb1\ \xe6\xbf\x25\xa8\xcf\x0f\xf6\x56\x9b\x59\xdc\x78\xde\x4a\xbb\x9f\ \x73\xb4\xfe\x75\x5e\xea\x7d\x69\x2e\xe5\x30\xc1\xb7\x28\xbe\x96\ \xf2\x90\xa3\x9c\x01\xc9\x00\xfb\x60\x54\x30\x45\xbb\xcb\xb9\xa6\ \x2a\xa5\x89\x13\x23\xb1\x92\xb6\xd5\x93\xb9\x47\xd4\x01\x8e\x32\ \xaf\xce\x9c\x2d\xf6\x77\x23\x3c\xa9\x2e\xc9\x58\x65\xbc\x92\x90\ \x08\x71\x47\x27\x72\x56\x47\xd4\xd2\x67\x55\x6e\xd9\xa6\x9e\x15\ \x2e\x42\xb8\x32\x4c\x56\x1a\x4b\x1b\x5d\x90\x37\x07\x49\x18\xc7\ \x97\x95\x13\xd8\x73\xc6\x7d\x78\xe2\xbc\x76\xd6\x59\xb5\xc9\xbb\ \x5c\x14\xb7\x27\x86\x1c\x0e\x29\x49\xc2\x41\x50\xc6\x11\xfd\xd0\ \x14\x7e\xb9\xcf\x14\xe9\x6d\xb6\x26\x42\xb6\x32\xd8\x6e\x18\xfb\ \xe9\x56\x78\x57\x73\xeb\x82\x72\x7b\x7c\xd2\xfd\x7c\xc3\xcd\xe9\ \x39\xeb\x48\x51\x1f\x65\x51\x09\x3d\xd2\x00\x27\x15\x85\xd4\xbc\ \x92\x5c\xcd\x71\xb4\x59\xca\x57\x28\xc2\x3d\xc1\x6c\xa9\x25\x08\ \x49\xdd\x8f\x5c\x11\x9f\xe5\x4e\x5a\x85\x22\x38\x53\x0d\xa9\x1e\ \x19\x0d\x29\x01\xb3\x91\x80\xda\x7d\x7e\x09\x57\xe3\x9a\x75\xd7\ \x76\x97\x94\xd4\x0b\xd3\x0d\x3c\xa8\xd7\x16\xff\x00\xd9\xd6\xa3\ \x92\xa2\x00\xc8\x23\xd8\x64\x01\xf4\xa6\x3f\x1c\xc9\xb9\xb4\xa5\ \x90\x12\x97\x39\x18\xfb\xa9\xe1\x3f\xc8\x7f\x1a\xf5\x94\xaa\xaa\ \x90\x52\x3c\x7d\x5a\x5c\x3a\x92\x87\x6b\xd3\xc1\x9e\xb4\x96\x9a\ \x69\x98\x9b\x86\xf7\x88\x52\xc8\x3f\x77\x9e\x07\xe3\xdf\xf2\xa7\ \x54\x58\xe4\x7d\x91\x99\x68\x43\xfb\x06\xe2\xe0\x49\x07\x19\xc1\ \x03\xe0\xf6\xf8\xac\x64\x5a\x24\x38\x13\x28\x20\x06\x5d\xfd\xb3\ \x8b\x04\x05\x47\x4e\x70\x33\xed\xc0\xfe\x55\x63\x40\xb7\xc9\x94\ \xc4\x59\x6c\xbe\xe3\x3b\x19\x52\x92\x3b\xa5\x44\x0c\x10\xaf\x62\ \x40\x07\x3d\xb9\xac\xb8\x8c\x46\x44\x9c\x4d\xf8\x4c\x2a\x93\x6a\ \xa2\xdb\x62\x2f\xa3\x58\x9a\x99\xc0\xfe\xaf\x6a\x68\x50\xe1\x52\ \xde\xe1\x1c\xf7\x1b\x54\x39\xfc\xeb\xa8\x7a\x52\xcb\xcf\x36\x95\ \x3a\xda\x42\xc6\x32\x12\x30\x07\xd3\xe2\xa9\x58\xaf\x3a\x99\x68\ \x4c\x68\xca\x8c\x87\x0e\xe5\xa5\xb7\x02\xd2\xa3\xea\x7d\x2b\xa1\ \x3a\x3e\x85\x38\xdb\x41\x28\xca\x4f\x73\x8a\xdf\xd1\x0b\x8b\x2e\ \x26\xc7\x9f\xe9\x97\xfb\xd9\x2d\xb1\x6b\xd8\x42\xb6\x24\x67\x18\ \xa7\x83\x83\x84\xd2\x66\xa0\xa9\xa4\x78\x8c\x8f\x4e\xd5\xb0\x3b\ \x95\x03\x8e\x41\x19\xae\xd4\xda\x9b\xba\x39\xb1\x4e\x0a\xcc\x90\ \xb0\x90\x96\x52\x07\xb5\x14\x32\xa0\xa6\x52\xae\xdc\x51\x5c\xb7\ \xb9\xd4\x5b\x10\x8e\x95\x5d\xa0\xb9\xa2\xad\xd1\x0b\x98\x5a\x43\ \x80\x82\x7f\xe3\x15\x4e\x17\xa8\x06\x3b\xa5\xf6\x47\x90\xf7\xc5\ \x57\x9d\x2a\xb7\x3f\x2a\xcf\x6f\x59\x2a\x42\x32\xbc\x1c\xff\x00\ \x7d\x55\x72\xa6\x3a\x4c\x50\xd2\xc8\x56\x05\x6f\x93\x54\x1a\x6b\ \x99\xcd\xa2\x9e\x22\x9d\x9f\x22\x18\x95\x6e\x41\x23\x3f\x41\xe9\ \x52\x6d\x3a\x13\xf6\x00\x78\xfa\xe2\x9a\x2e\xf6\xb7\x23\xac\xba\ \xc8\xca\x09\xe4\x0f\x4a\x51\xa6\x66\x24\x66\x3a\xd4\x02\xb3\xc0\ \x34\xca\xed\x54\xa5\x78\x95\xa0\x9d\x3a\xb6\x91\x9c\xad\x5b\xa7\ \xda\xb3\x37\x75\x6e\xeb\x0d\xc8\x4e\x3b\xe0\x21\xe4\xb8\x36\x29\ \xcd\xfe\x1e\xc0\x7d\xf7\x8d\xb8\xf7\xa6\x87\xb5\xa5\xb3\xf5\xc2\ \x6d\x2a\xbd\x5b\x9b\xb8\xa8\x80\x98\x8a\x92\x80\xe9\x27\xb0\xdb\ \x9c\xe4\xf7\xc5\x54\xe2\x2b\xad\xf5\x81\xfd\x04\x50\xa1\x06\x25\ \xf5\xcd\x48\x36\x8e\x03\x2a\x6c\x29\x09\x1e\x98\x12\x1c\x27\xfe\ \xaf\xd2\x99\xe7\x04\x27\xa6\xd7\xdd\x26\xe2\x48\xd5\xf2\x35\x03\ \x8e\x30\xc1\x6c\xf8\xee\xba\xa9\x49\x52\x24\x24\x77\x28\x08\xc1\ \xde\x38\x00\x11\xf1\x4a\xa7\x08\xc6\x37\xb5\xc5\xd5\xc5\x54\x6d\ \xad\xac\x5f\x08\xd5\xf0\x18\x76\xe2\x87\xa7\xc7\x1f\xaa\xd0\x17\ \x3c\x6f\x19\x8e\x92\x8d\xe0\xaf\xdb\xcb\xcf\xd2\x9c\x7f\xa6\x1a\ \x65\x28\x63\xc7\xbe\x5b\xd9\x2f\xa5\x85\xb2\x97\x1f\x4a\x4b\x81\ \xe2\x52\xd6\xd0\x4f\x3b\x8a\x55\x8c\x77\xda\x7d\xaa\x89\xd4\xf3\ \x23\xc1\xbe\x75\x6e\xdf\x2d\x65\xa9\x97\x8b\x6b\x22\xda\xc6\xd2\ \x57\x2f\xfd\x88\xb5\xfb\x30\x3e\xf6\x17\xc1\xc7\x6e\xe7\x8a\x71\ \xe9\xcb\x51\xff\x00\xf6\xb3\x61\x75\xf8\xec\xbc\x5b\xd0\x50\x94\ \xd9\x5a\x02\x8a\x09\x79\x5c\x8f\x63\xf3\xf3\x51\x56\x9c\x65\xb2\ \xb3\x2d\x4b\x17\x35\x2b\x32\xed\x8b\xa9\x34\xf4\xbb\xc3\x96\x68\ \x97\xcb\x6c\x8b\x8b\x7b\x82\xe2\xb7\x25\x0a\x75\x25\x3f\x78\x14\ \x83\x9c\x8f\x51\xe9\xc6\x7b\xd3\x42\xb5\x35\x8e\x43\xd3\xbf\x52\ \xde\x6d\xb7\x09\x11\x1b\x52\xdd\x66\x3c\x94\x38\xa4\x63\x23\x90\ \x93\x9c\x64\x11\xf5\x04\x77\x15\x58\xd9\xa4\xcd\xb7\x0b\xae\x87\ \xd0\x97\xb8\xda\x92\xcf\x71\xb5\x5c\xa4\xc3\x5b\x29\x05\xfb\x3c\ \x95\x02\xa4\x21\xc7\x13\xc2\x82\xd6\xe1\xdb\xbb\x0b\x1f\x4e\xf8\ \xe8\x98\x50\x27\xc0\xd3\xb3\xc6\xac\xb7\xb9\x3e\xcf\x60\x76\x22\ \xad\x0c\x41\x0c\x48\x65\x0a\x69\x01\x4d\xbf\x95\x95\x02\x85\x24\ \x77\x03\x27\x27\xd6\xb3\x53\x76\x95\x87\x4e\xbc\xa4\xb4\x5e\xbe\ \xa3\xcc\x2e\xab\x2d\x76\x4d\x18\xe0\x66\xd7\x1e\xed\xaa\x12\xa7\ \x31\x29\xf5\x25\x88\xc8\x4a\x54\x72\x70\x0a\x8e\x48\x09\x48\xe3\ \x93\x56\xba\xee\x51\x63\xca\x83\x6f\x9d\x2a\x3b\x17\x09\xa9\x51\ \x65\x8d\xfc\xba\xa4\x24\x15\xec\xcf\x24\x00\x73\xf4\xaa\x27\xa7\ \x83\x0d\x74\x1f\x1f\xfc\x0b\x8f\xfe\x11\x75\x3d\xeb\xc3\xe8\xb2\ \xda\x6c\x5a\xcd\x41\x41\x3a\x7e\xee\xcb\xef\xa9\x23\x24\x47\x74\ \x16\x1d\x18\xfa\x38\x0f\xe1\x55\x93\xcc\xcb\x50\xa9\x28\xd3\x72\ \x6f\x6b\x7f\x09\xbf\xe4\x94\x48\xd5\xba\x7d\x11\xae\x52\x1b\xbc\ \x43\x53\x56\xb7\x14\xd4\xf5\x87\x46\x23\x2d\x23\xcc\x95\x9f\xdd\ \x23\xe6\xa1\xf2\xfa\x99\x6d\x85\x17\x55\x5c\xa7\x48\x84\x60\x58\ \x56\x1b\x49\x8b\x31\x2e\xba\xf2\xf6\x12\x5b\x52\x38\xd8\xbd\xe9\ \x52\x40\x27\x9c\x55\x55\x1e\xdb\x26\x15\xca\xd7\xa5\xe4\x21\x41\ \xcd\x76\xcc\x29\xd3\x40\x49\x23\xc5\x43\xeb\x7e\x60\xcf\xcb\x6a\ \x48\x24\xfb\x53\xb6\xb3\x6d\xc9\x07\xae\x2c\xc7\x69\xc7\x5c\x54\ \x78\x1b\x50\x84\x95\x13\x88\x89\xf4\x1f\x14\xe5\x1c\xab\x41\x13\ \xc4\xce\x4a\xfb\x7f\x4d\xfd\x89\xed\xc7\xa9\xf6\xb8\x97\xed\x2e\ \xd3\x33\xe0\x1b\x4d\xe5\xb9\x6a\x7a\x63\xaf\x84\x86\x54\xca\x1b\ \x21\x20\xf6\xc9\x2b\xc6\x3e\x98\xef\x56\x1d\x8a\xed\x6f\xbd\x5b\ \x5a\xb8\x5a\xe6\xc7\x9b\x15\xd1\x94\x3c\xc3\x81\x68\x57\xd0\x8e\ \x2a\x9f\x9b\x3a\xd5\x79\xea\x67\x4a\xe6\x5b\xe5\x45\x9e\xc2\x62\ \x5c\xca\x5d\x69\x61\x69\x0a\x11\xd9\xec\x47\xa8\xcf\xe1\x4f\xfd\ \x01\x21\xb8\x3a\xc5\x23\xca\xdb\x7a\xba\xe6\x94\xa4\x76\x48\xf1\ \x07\x03\xd8\x55\x26\xae\x87\x50\xab\x2e\x26\x56\xee\xbf\x08\x97\ \x3f\xaa\x74\xd3\xd7\xb1\x64\x66\xff\x00\x6b\x72\xe6\x14\xa4\x18\ \x89\x94\x82\xe8\x5a\x7e\xf2\x76\xe7\x3b\x87\x72\x3b\x81\x4e\x49\ \xc9\x38\x03\x9a\xa0\x35\x56\xa6\xba\x6a\x8b\xc5\x8f\xed\x72\xd8\ \x8c\xf4\x2d\x71\x15\xa3\x67\x66\x29\xf1\x62\x32\x99\x3e\x1a\x5e\ \x79\x79\x24\x6f\xdc\x39\xc2\x52\x77\x80\x33\xcd\x74\x53\x0d\x06\ \xc7\xcd\x17\xca\x86\x52\x9f\x16\x4f\xb0\xf1\x09\x0c\xb5\x9c\x64\ \xfa\xd2\x67\x25\x2d\x60\x80\x31\x4b\x8e\x08\xe6\x91\x3c\xc0\x56\ \x54\x38\xaa\xc1\xa6\xf5\x34\x4d\x34\xb4\x13\x00\x09\xc9\xf5\xa4\ \xb3\x63\x64\x9e\x29\x72\x12\x94\xf9\x48\xed\x5b\x5f\x40\x2d\x53\ \xf3\xe5\x62\x63\x0b\x94\x8f\x56\x2d\xb6\x93\x6c\x92\xfd\xed\x31\ \xbe\xc0\xda\x0a\x9e\x2f\xfd\xc0\x9f\x9a\xe2\xad\x53\x72\xd3\x8d\ \xea\xa7\x13\xa6\x5c\x71\xa8\x2a\x59\xdc\x1d\x3f\xb3\x3c\xfe\xee\ \x41\x56\x09\xf7\xae\xfa\xea\xbe\x93\x87\xaa\xb4\xec\xab\x3c\xf2\ \xf8\x8c\xf8\x1b\xfc\x25\xed\x51\xda\x42\x87\x3e\xd9\x1d\xaa\x86\ \x73\xa4\x9a\x62\xc6\xb5\x18\x36\x64\x2d\x7d\xbc\x49\x07\xc4\x3f\ \xc7\x8a\xc5\x89\x4e\x73\xd2\x2d\xdf\xe4\x5a\x85\x55\x87\x93\x95\ \xce\x74\xbb\x5a\xda\x96\xe2\x1d\xb7\x87\xdf\x2b\x38\x4b\x69\x41\ \x3b\xd5\xec\x90\x29\xb6\x6e\x92\xd4\xc2\x40\x6d\xeb\x1d\xc1\xa5\ \x67\x01\x0e\x30\xa4\x63\xfe\xd7\x6a\xbf\xf5\x45\x9e\x2c\x7b\x6a\ \xe3\xcb\x65\xb6\xa3\x23\x2a\x05\x23\x69\x6c\x8f\xde\x49\x1d\x8d\ \x55\x77\xcd\x7a\xa6\x9e\x31\xe1\xc8\x5d\xdd\x49\x4e\x13\x22\x40\ \x52\x55\xff\x00\x58\x67\xcd\xf5\xe2\x95\x1a\x55\x29\x3c\xb2\x36\ \x54\xc5\xac\x46\xb4\xe2\x37\x47\xb5\x45\xd3\xd6\xd2\x97\xe5\x37\ \xf6\xd7\x9b\x0b\x96\x73\xc3\x69\xdc\x30\x81\xef\xdb\x27\xdf\x03\ \x1e\xf4\xc7\x72\x90\xdc\xe9\xec\xbe\xb6\x9c\x6a\xda\x95\x12\x95\ \xa8\x60\xad\x23\xef\x63\xdc\xfc\x57\xaf\xb4\xe5\xd1\xe7\xee\x17\ \x0b\x82\x5d\x79\x78\x27\x68\x2b\xe7\xb0\x1c\x71\xf0\x00\xa7\xa4\ \x68\x89\x8d\x36\xdc\x8b\xf3\xff\x00\x65\x8c\x96\xc2\x92\xd1\x58\ \xde\x12\x7b\x25\x5e\x89\x27\x9e\x3d\x2a\x54\xd4\x6f\x14\xf5\x7e\ \xb4\x23\x87\xc3\xb4\xe6\x44\x6e\x46\x19\x95\x21\x70\xbc\x64\xc5\ \x71\xc5\x16\x43\xbc\xa8\x23\x77\x1b\x8f\xa9\xc6\x33\xf3\x5d\x09\ \xd0\x2b\xdc\x49\xf2\x61\x3b\x1e\x57\x8b\x30\xc2\x6e\x3d\xc1\x95\ \x0c\x29\x0a\x6b\xca\x83\xf2\x0a\x7d\x7d\xc5\x52\x9a\xe2\x74\x59\ \x0a\x8c\x21\xb6\xcb\x48\x65\x3e\x1b\x69\x6d\x20\x00\x90\x06\x3e\ \xbf\x5a\x9b\xfe\x8a\x8f\x1f\xe9\xd5\xc1\xa5\x94\x80\xe4\x1d\xd9\ \x50\xec\x43\x89\xc7\xf3\xc7\xe3\x48\xc6\xd3\x5c\x2c\xcf\x91\xab\ \x03\x51\xba\xa9\x2e\x67\x5b\x82\xd2\x23\x07\x83\x45\x6b\xc0\x1e\ \x51\xdb\x9e\xe7\xd7\x1c\x53\x16\xa4\xb6\x34\x82\x64\xc6\x65\xa0\ \xc1\x4f\x88\xb4\x21\xb0\xa0\xbc\x9e\x4a\x49\xec\x3d\xc0\xf7\xf8\ \xa9\x1c\x21\xb1\xa0\xa0\x82\x49\x47\xe3\x5a\xe5\xc6\x5b\xc9\x75\ \xb4\x3a\x5b\x5f\x2a\x6f\x27\x09\xc9\xee\x0f\xc1\x1f\x85\x72\x2d\ \x74\x75\xe3\x2c\xac\xae\x11\x65\x87\x71\x43\x49\x7d\xb7\x5d\x70\ \xb7\xb9\x58\x4e\x32\x9c\x9f\x5c\x76\xc1\x3f\x95\x7b\x74\xd0\x59\ \x82\x96\xd8\x91\xfb\x2d\xa0\x05\x31\xc9\x4e\x47\xa8\x1d\xf3\xeb\ \x8a\x9a\x16\x03\x72\xd6\x10\xde\xf6\x52\x72\xf2\x14\x13\x96\xbd\ \xf0\x3d\x52\x4e\x2a\x47\x62\x4c\x2f\xba\xd2\x52\xb6\xf0\x49\xcf\ \x73\xee\x3e\x71\x55\x85\x24\xf4\x63\x9e\x2a\x70\xd5\x14\x5c\xed\ \x0b\x70\x8c\x94\xc9\x6d\xbf\x15\x0c\x84\xa0\x06\x89\x19\x23\xe3\ \x9c\x11\xf9\xd2\x17\x2d\x2e\x43\x49\x5c\xb6\x65\x3e\xea\x94\x3c\ \x13\x90\x48\x1e\xb9\x1e\x9d\xbd\x79\xae\x9e\x30\xa3\xc8\x28\x25\ \x2d\x00\x46\x42\x47\xef\x1f\x9f\xf5\x9a\xd1\x3f\x48\xd9\x26\xc7\ \x5b\x1f\x62\x43\x24\x1c\xe1\xb2\x40\xe7\xbe\x47\xaf\xad\x12\xc2\ \x4b\x78\xb2\xd0\xe9\x34\xbd\xf4\x73\x73\xca\x92\x72\x11\x18\x04\ \x25\xc1\xb5\x41\x24\xee\x18\x39\xc8\xf5\x39\xe3\x3d\xab\x6c\x49\ \x57\x24\x20\xa8\xdb\x1f\x4b\x9e\x38\xf0\xc0\x5f\x07\x00\x8e\x31\ \xce\x06\x7b\x9f\x8c\x55\xd9\x75\xd1\x01\xb6\xc7\xd8\x5c\xf0\xb0\ \x0e\x06\x3f\x21\xff\x00\x95\x47\x67\x69\xc5\x31\xbd\x4b\x8e\x94\ \x85\x61\x1b\x92\x0e\x4f\x3d\xbe\x9d\xeb\x34\xe9\xd4\x86\xe8\xd3\ \x0c\x55\x29\xad\x0a\xc5\xc8\xf7\xa7\x5a\xf0\x5e\x0c\x23\x78\x2b\ \x74\x00\x4a\x46\x14\x32\x33\xc6\x38\xf6\x35\x82\xf4\xf3\x4e\xc9\ \xcc\x89\x2e\xba\xa2\xb5\x06\xb7\xab\x6a\x06\x4e\x71\xc7\x07\x80\ \x07\xf2\xa9\xd4\xbb\x6a\xd8\x65\x69\x4c\x72\xfa\x57\x94\xa8\x2d\ \x38\x00\xe7\x24\xa8\xfb\x7d\x3e\x29\x13\xd1\xdb\x53\x4b\x4c\x72\ \x92\x55\x80\xa2\x3d\xbf\xf2\xf7\xa4\x39\x49\x6c\x68\x55\x13\xd8\ \x8e\x38\xcb\x71\x5f\xfb\x34\x76\x5a\x68\x38\x47\x88\xa6\xbc\xa5\ \x2a\xce\x70\x7f\xb5\x93\xeb\x59\xb1\x6e\x2a\x7c\x3b\x32\x3b\xeb\ \xdd\x92\x86\x5b\x40\x52\xb2\x3f\x78\x9c\xf1\x9c\x7a\xd4\x91\x98\ \x28\x2c\x78\x88\xda\xf3\xe5\x01\x28\x0d\xa7\xcb\x91\xea\x4f\x6a\ \x72\xb5\xdb\x84\x73\x94\x21\xb4\x12\x09\xc2\x07\xaf\xa7\x34\xbd\ \x59\x57\x51\x24\x37\x59\xed\xaa\x43\x0a\x43\x81\xad\xff\x00\xf0\ \x4d\x04\x7d\xc2\x7d\x33\xea\x7e\x6b\xcd\x73\x6b\x2d\x68\x8b\xb3\ \xce\x20\x94\xb7\x11\xce\x0f\xb6\xde\xd5\x34\xb4\x5b\x5f\x59\x0e\ \xed\x04\x81\xe5\xdc\x30\x09\xa4\xdd\x4e\x65\x0a\xd2\x53\xa1\xa9\ \x29\x52\x5e\x65\x48\x71\x25\x45\x20\xa4\xf0\x46\x47\x23\x8f\x6a\ \x74\x68\xda\x39\x99\x92\x55\xfa\xe9\x23\x92\x74\x8d\x95\xfd\x4b\ \xa3\x66\xc0\x45\xdd\xc6\xee\x16\xc4\x87\xe0\x42\x75\x25\x41\xe4\ \x14\xf9\x83\x67\xba\x54\x9c\x13\xec\x47\xd2\xa1\x53\x63\x48\x83\ \x7c\x75\x2f\xb4\xb6\x9e\x52\xb2\xe6\xe4\xf6\xcf\xde\x18\xf9\x39\ \xa9\x5c\xd3\x2f\x4a\x6b\x3b\xad\xbe\x13\xeb\x71\xfb\x5c\xa5\x16\ \x55\x9f\x32\xd2\x85\x03\xb4\xe3\xdd\x2a\x20\xfd\x4d\x49\xe6\xdb\ \xed\x57\xab\x95\xc6\x59\x77\x88\xef\x86\xe3\x15\x73\xfb\x32\xe6\ \x52\x09\xf5\x21\x27\xf9\x57\x5e\x15\xa5\x4e\xa5\xd2\xbc\x65\xaa\ \xf8\xd8\xc8\xe8\xd3\xab\x04\xdb\xb3\x8f\x6f\xc8\xd1\xa4\x5b\x6c\ \x37\x21\x6d\x24\xa1\x68\x1b\x5d\x4a\x53\x95\x14\x9f\x6c\xf0\xa0\ \x06\x46\x3d\xbd\xea\x40\xe3\x0b\x7e\x32\x98\x88\xfa\x6d\xef\x6c\ \xc3\x5b\x1b\xdc\xd8\xe3\x70\xcf\xf7\x08\x27\x9f\x4f\x6a\x6b\x5b\ \x4c\xda\xe2\x96\x5a\x01\x32\x49\x21\x2b\xcf\x74\xf7\x19\x1e\xa3\ \xe6\xb1\x8b\x76\x99\x16\x64\x55\xb8\xe7\xf5\x45\x45\x0b\xf4\x71\ \x0a\x18\x29\x27\xd8\x91\xd8\xfa\xd2\x2b\x46\x51\x86\x6b\x6a\xc7\ \xd3\x9a\xab\x5a\xd0\x92\xb2\xfb\x09\x51\x2a\x54\x2d\x42\x88\x57\ \x86\x19\x86\xe9\x50\x27\x24\xa5\x2b\x57\xb2\x55\xdb\x24\x72\x0f\ \x63\x5d\x5d\xd1\x75\xb1\xf6\x26\xc2\x46\xde\xdd\xfb\x8a\xe6\x6d\ \x40\xeb\x1a\x96\x04\x78\x56\xe4\xb6\x5c\x69\xc0\xec\x17\x15\xc9\ \x69\x59\xf3\x32\xaf\x74\xe3\x91\x9f\x6c\x57\x4b\x74\xcd\xa6\xe2\ \xb4\xca\x77\x02\x43\x69\x07\x1e\xbc\x72\x6b\xb3\xd1\x52\x94\x5a\ \x8c\x79\x9e\x53\xa6\x24\x9d\x65\x3b\x59\xf3\x2e\xf8\x2b\x42\x90\ \x12\x71\x58\x4b\x80\x87\x3c\xed\x1c\x2a\x91\xdb\xc0\x2c\x83\x9e\ \x3b\xd3\x8c\x10\xb2\x4a\xca\x8e\xdf\x40\x6b\xab\x2b\xc1\xb6\x99\ \x95\x35\x35\x66\x8d\x50\x9d\x71\x9f\xd8\x3c\x9c\x7b\x1a\x29\xc1\ \x48\x42\x8f\x99\x20\xd1\x49\x94\xd4\x9d\xc6\xc6\x0e\x2a\xd7\x2b\ \xce\x9d\xa4\x33\xa2\xed\xea\x6d\x1f\x77\xc4\xc7\xff\x00\xb8\xaa\ \x96\x89\xef\x1e\x12\x85\x7e\x55\x5c\xe8\x3b\x93\xcb\xd2\x70\x62\ \x45\x47\x3f\xb4\xca\x87\x3d\xdc\x55\x4d\xe0\x25\xc6\x98\xcb\xcb\ \x0a\x56\x3b\x57\x42\x54\xd6\x54\xe4\x73\x28\xd4\x76\x4a\x23\x92\ \x67\x29\x6a\x0d\x38\x80\x73\xf8\xd6\xa9\x56\x64\x38\xe0\x90\xc1\ \xf0\x96\x39\xc0\xf5\xa2\x13\x8c\xa5\x45\xe7\x56\x94\x81\xc7\x7a\ \x71\x8f\x2e\x3c\x80\x7c\x27\x01\xf6\xc1\xac\xd2\x72\xa6\xef\x04\ \x6b\x8a\x8d\x45\x69\xb2\x0a\xab\x24\x0b\x7e\xa1\x7e\x60\x92\xe4\ \x9b\xcc\xa4\x04\x9f\xb4\xcb\x2e\x3a\x96\x81\x52\x82\x10\x92\x7c\ \xa8\xc9\x27\x81\xe9\xcf\x6a\x79\x8d\x12\x63\xb8\x0a\x46\xc1\xea\ \x4d\x73\xfe\x9c\x76\xf5\x65\xd4\xbd\x5b\xd7\x0f\xfe\xa4\x9d\x76\ \xb1\x3e\xa0\xdb\xef\x40\xdc\xe2\x5d\xf3\x20\x16\xd4\x55\x96\xd1\ \xb3\x72\x4a\x47\x70\x47\x3c\x54\xf6\xfb\xd5\x1d\x4d\x61\xd0\x16\ \x4d\x43\x74\x6e\xc0\xc4\x8d\x51\x2a\x38\xb5\xa4\xf8\x9e\x04\x08\ \xee\xa0\x2b\xc4\x90\xa2\x41\x59\x4a\x4a\x49\xc6\xd1\xc9\xf6\xa9\ \x58\x96\xa3\x64\x8c\x71\xe1\xbb\xca\x57\x5f\xdd\x8b\x46\x5d\xb8\ \x33\x18\x2d\x3c\xac\x77\x34\x8b\xef\x24\x28\x0a\xaa\xe1\xf5\xc5\ \xd6\x34\x86\xb6\x7e\xe6\xab\x5d\xe6\x5e\x9d\x5b\x29\x8b\x2a\xdb\ \xb9\x11\xe7\xa5\xe3\xb5\x07\x04\xab\x6e\xd3\xf7\xb9\xfa\x76\xad\ \x7d\x32\xea\x5c\xfb\xce\xb8\xfe\x8b\x5c\xa7\xd8\xae\xa2\x45\xb8\ \x4e\x66\x55\xa4\x29\x28\x65\x7b\xb0\xb6\x16\x14\xa5\x64\x81\x93\ \x9c\xfb\x67\xbf\x17\xa3\x55\xc9\x75\xb7\x26\xa5\x5a\x59\x96\x5e\ \x7f\xd1\x7b\x5b\x17\xbe\x2a\x6b\xdb\x8f\x2c\x7b\x73\xde\xa8\xeb\ \xd2\x46\xb2\xfd\x21\x62\xe8\x9b\xd3\xd2\x5c\xb0\x41\xb2\xaa\x61\ \x84\xd4\x85\xb4\x87\xde\x2a\xfb\xcb\x28\x20\x9c\x05\x0c\x73\xc6\ \xdf\x93\x9a\xfa\xe9\xa9\xf5\x54\x7e\x84\xeb\x3b\x53\x37\xb7\x96\ \xdd\x8f\x50\x1b\x7a\x24\x3e\x54\xb7\xcc\x62\xe0\x09\x42\x57\x9c\ \x82\x14\x33\x93\x9e\x09\x1e\xd8\xcc\xf4\xa8\x39\xe2\xd2\x83\x4d\ \x76\xf9\x1d\x71\x1f\xfa\x84\xfd\x29\x35\xcc\xf9\x00\xf4\xa6\x3d\ \x2d\x2e\xe1\x68\xe9\xfa\x67\xea\x49\x8c\x4c\x7a\x24\x45\x48\x79\ \xd8\xcc\x96\xd2\x5b\x4a\x4a\x80\x09\x2a\x3c\xed\x1e\xfc\x9a\xa6\ \x6c\x1d\x70\xba\xdd\xaf\x3a\x69\xc9\xb2\xb4\xda\xe2\x6a\x09\x8a\ \x87\xfa\xb2\x21\x59\x99\x6e\x25\x7b\x1a\x53\x8a\x2a\x21\x5b\x8e\ \x33\xe5\x1c\x11\xda\xa2\x3a\x4f\x51\xd5\x71\x11\x84\x12\x7b\xb2\ \xf6\xc7\x00\x7b\xf1\x4b\xc4\x54\x96\x86\x06\x0e\x2b\x9f\xec\xdd\ \x55\xd5\x53\x34\xec\x6b\x7a\xd9\xb7\xa7\x56\x2b\x55\x8b\x13\x8d\ \x86\x54\x1b\x42\x07\x2a\x77\x69\x56\x78\x00\x8e\xfe\x9d\xa9\xd7\ \xaa\x7d\x58\xbd\xe8\x9b\xa4\x89\x2c\x6a\x1d\x23\x75\x8f\x16\x6a\ \x59\x7e\xcc\xc3\x2e\x19\x4d\xb2\x54\x79\x53\x81\xc2\x90\xe8\x03\ \x90\x40\x1f\x1e\xf7\xa9\x37\xa5\x84\xc3\x11\x4d\x45\xc9\xec\x5b\ \xe9\x0d\x2e\x53\x91\x1a\x96\xca\xe4\x34\x01\x71\xa0\xb0\x56\x90\ \x7b\x12\x3b\x8f\x4a\x5a\xd4\x62\x1b\xda\xa3\xc5\x50\x73\x6f\x33\ \x34\xef\x59\x7a\xcd\x7d\x80\x1a\x32\xe0\x59\x22\x3e\xc8\x75\x3b\ \x93\xb9\x31\x9b\x23\x23\x23\x22\xa4\x48\xea\x56\xa2\x53\xdd\x25\ \x41\x4c\x1c\x6a\xd6\x9c\x5d\xcb\xf6\x47\x82\x94\x34\xa1\xe1\xf9\ \xbc\xbc\xac\xf7\xcf\xa5\x2d\xd4\x93\x2f\x0a\xd4\xd3\x77\xed\xfa\ \xd8\xb8\x50\x84\xa1\x24\x24\x56\xb0\x54\x49\x04\xd5\x1d\xac\x7a\ \xbb\x7a\xd3\x1a\xb2\x13\x49\xd4\x3a\x4a\xfb\x11\xfb\xb2\x20\xc9\ \xb7\x41\x61\xc0\xfc\x56\xd4\xa3\x85\x78\xbe\x21\x49\x58\x03\x04\ \x10\x39\x3d\x87\xa6\xb8\x53\xb5\xb5\xcb\xf4\x95\xd4\x56\xf8\x37\ \xf8\x0c\xb7\x12\xd4\xdf\x86\x87\xa2\xad\x6d\x86\x54\xa4\xa9\x29\ \x09\x0b\x18\x58\x2b\xe5\x7e\xb8\xec\x2a\x12\x7b\xb2\xd2\xc5\xc2\ \xf6\x8a\xd6\xf6\x2f\x26\xdf\x61\xd4\x95\x34\xf2\x1c\x48\x51\x49\ \x28\x50\x20\x10\x70\x47\x1e\xa0\xfa\x56\x69\x50\xdb\xc1\xcd\x73\ \x76\x85\xea\x1c\x8d\x3b\xd1\xdf\xb5\x5b\x6c\x96\x86\xaf\x37\x6d\ \x52\xe5\xb6\x33\x6d\x36\xb4\x47\xf1\x96\x13\x97\x96\x37\x13\xe9\ \xd8\x28\x7a\x63\x81\x52\x19\x9d\x48\xd5\x9a\x7e\x4e\xb2\xd3\x97\ \xa1\x69\x93\x79\xb2\xd9\x4d\xda\x0c\xb8\xac\xad\x0d\x3c\x8e\x01\ \x0b\x6d\x4a\x38\x21\x4a\x03\x83\xc8\xa9\x4a\xe8\xaa\xc6\x42\xc9\ \xb2\xe9\x74\x05\xe4\xa7\xbd\x64\xd9\x2a\x6f\x6f\xad\x52\x56\x0e\ \xa6\x6b\x13\xa8\xf4\x2a\xee\xf1\xec\xea\xb5\x6b\x26\xdd\x2c\xb1\ \x1d\xb7\x03\xd1\x76\xa5\x24\x12\xb2\xac\x2b\x3b\xc1\x23\x68\xf5\ \x1e\x99\x2e\x9f\xa3\xb1\x79\x5a\xa3\xa9\xde\x3a\xdc\x3e\x1e\xa9\ \x90\x12\x16\x49\xc2\x77\xaf\x00\x67\xd2\xac\xdd\x90\x43\x11\x19\ \xcd\x25\xcf\xed\x72\xc7\xb8\xc5\xde\x92\x95\x0e\xf5\x11\xbe\x59\ \x50\x5a\x51\xd9\x92\x7b\x55\x88\xe2\x12\xea\x4f\xbd\x34\xdc\x63\ \x05\x24\x82\x29\xd4\xaa\x58\x6d\x48\x5c\xe2\x0f\xd2\x59\x9d\x71\ \xf6\x81\x6c\x81\x65\x92\x9b\x52\x8e\x54\xf4\x70\x57\xe3\x9f\x65\ \x63\xb0\x1e\xc7\xd7\x9f\x6a\xa9\x74\xc7\x4d\x35\x35\xd4\x29\xf9\ \x6c\x8b\x73\x29\xed\xf6\xa4\xa9\x25\x7f\x41\x8a\xfa\x07\xa8\x2c\ \xc9\x75\x45\x41\x27\x35\x0d\x9f\xa6\x0b\xab\xf3\x24\x91\xf3\x59\ \x65\x47\x11\x52\x76\xd3\xc4\x21\x5b\x87\x1b\x24\x72\x2d\xd7\x41\ \x6a\x02\xb4\x46\x8c\x84\x48\x6c\x01\xc8\x1b\x02\x4f\xbe\x69\xbd\ \x1a\x32\xea\x64\x98\xf3\x58\x97\x35\xd0\x32\x96\x9a\x51\xf0\xd0\ \x33\xdd\x4b\x35\xd6\x92\xb4\x93\x63\x3e\x5c\x53\x4c\xdb\x03\x2c\ \x20\x82\xad\xa3\xd4\x66\x99\x53\xa3\xea\x25\xb9\x68\xf4\x84\xa1\ \xba\x4c\xe5\x6b\xae\x81\xbb\x21\x45\x61\x70\xd3\x9e\xc8\x42\xc9\ \xc0\xfa\xe2\xa4\x1d\x1b\x65\x5a\x67\xa8\x71\xd6\xb9\x49\x79\x32\ \x19\x53\x0b\x00\x14\xf7\x20\xe4\x67\xd0\x10\x2a\xde\xbe\xdb\xa2\ \x21\xb2\xae\x30\x7b\x1c\xf7\xa8\x02\xa1\x32\x9d\x47\x0d\xc8\xec\ \x27\xc7\x32\x02\x77\x84\xe1\x5b\x7d\x46\x7f\x2a\x45\x7a\x31\x54\ \x65\x79\x2d\x87\x60\xf1\x73\x9e\x22\x2e\xdc\xce\xa1\xb1\x3a\x5d\ \x8c\x84\xac\x80\xb4\xe0\x0c\x9c\xe4\x7f\xac\xd2\xd7\x99\x56\xf3\ \xcf\xec\xf1\xfe\xb9\xa6\xed\x1c\x80\xf5\xb1\x90\xf8\xc3\x88\x18\ \x3c\x7f\xaf\xc2\xa4\x25\x05\x0a\x2d\xbb\x8d\xa7\x80\xbf\x43\xf1\ \x5e\x7e\x31\xba\x3d\x14\xa5\x69\x08\x43\x01\xe4\x6c\x70\xf9\xd2\ \x0a\x4a\x88\xe7\x1f\x51\xdf\x8f\x4a\xf1\x88\xea\x8a\xc6\xd7\x4b\ \xc8\x59\x23\x12\x5a\x1b\x93\xc7\xa9\x1e\x87\xf9\xf3\x4b\x7e\xcc\ \xa4\xb8\x36\x1f\x32\xbe\x3b\x7d\x29\x54\x55\xad\xa1\xe6\x3c\x91\ \x8e\x78\xff\x00\x42\xaf\x15\xae\xa5\x5c\xb4\x3c\xb7\xc9\x74\x2b\ \x6e\x03\xc9\xc8\xf3\x27\x9c\xfc\x91\xdc\x53\xfb\x0f\xb6\x5a\xf2\ \xe3\x70\xc7\xaf\x7a\x65\x92\xcc\x77\x16\x14\xa6\x46\xff\x00\x45\ \xa7\xca\xa1\xf8\x8e\xf5\x93\x29\x2b\x40\x6c\xad\xd5\x03\xc6\x4a\ \xb3\xc5\x35\x4a\xc2\x25\x14\xf5\x16\xc9\x79\x4a\x56\xd4\x05\x67\ \x39\xc9\x38\x14\x95\xe8\xee\x48\x3e\x7f\x0d\x1c\xfd\xe4\x8d\xc4\ \x7b\x71\x4a\xa1\x42\x61\xa4\xf0\xd2\x4a\x7d\x77\x1c\xe7\xe4\xd2\ \xf0\x50\x1b\xda\x9c\x04\xf6\xc2\x7b\x51\x6b\xee\x56\xf6\xd8\x8b\ \xb9\xa7\x58\x71\x68\x5b\xac\xa9\x64\x02\x32\xea\xb8\xcf\xc2\x7d\ \xa9\x24\xad\x25\x09\xc5\x38\x95\x21\xbd\xaa\x56\x4a\x52\x00\xcf\ \x1e\xc2\xa5\x6b\x0a\x3c\xed\x01\x5d\xb2\x6b\xc0\xd0\x1f\x7c\x67\ \xdf\x03\x19\xa5\xba\x30\x7c\x87\x46\xb4\xe3\xcc\x89\xb3\xa5\xdb\ \x68\x6c\x42\x01\x40\xe0\x01\xfb\xa3\xd2\x96\x46\xb0\xb2\xc1\xce\ \x01\xe7\x22\xa4\x29\x28\xdd\x8f\xe0\x2b\x05\xa1\x64\xe7\x01\xb4\ \xfb\x9e\x4f\xe1\x54\x54\x60\xb9\x03\xaf\x37\xbb\x1a\x94\xc8\x40\ \x4a\x10\x82\x54\x79\x00\x76\x03\xe6\xa2\x7a\xed\x9f\x16\x1a\xa3\ \x24\x95\xa9\xd5\x24\x15\x27\xbe\x77\x0e\xdf\x02\xa6\xb2\xbf\x64\ \x85\x25\x03\x69\x3f\x78\xab\xb9\xfa\xd4\x79\xd8\x89\x7a\x4a\x9d\ \x74\x12\x12\x9e\xdd\xf9\xa4\xd7\x8d\xe3\x64\x32\x8c\xac\xf3\x33\ \x8f\xfa\x99\xa5\xae\xfa\x73\xa8\x92\x1e\x94\xd3\xf3\x62\x5c\xde\ \x72\x44\x69\x0c\xb0\x7f\xda\x16\xa3\x90\xc1\x09\xec\x42\xb3\xc7\ \x63\x48\xa4\x4b\x95\x09\x6f\xef\x07\xc4\x52\xc3\xb2\x22\xf0\x76\ \x38\x78\xf2\x91\xf1\x80\x47\xe5\x5d\x73\x73\xb3\x19\xd0\xde\x88\ \x48\x4a\x8a\x4e\x17\xec\x7d\xc7\xcf\x7a\xa0\x3a\xab\xa3\xdb\xd3\ \x32\x17\x7d\xb9\x38\xd4\x7b\x73\x48\x25\xb8\xed\x24\x85\x49\x7b\ \x38\x08\xcf\xf1\xfc\x0d\x3f\x0d\x55\xb9\x24\xd6\xb6\xb2\x17\x89\ \x6f\x27\x57\x6b\xdd\xae\xd2\x1e\xd4\x37\xe6\xb2\xc0\x53\x72\x52\ \xeb\x83\x72\x92\xe3\x64\x14\x63\xd8\xfb\x1a\x7b\xb7\xd8\xe5\xa1\ \x68\x2b\x69\x67\x1c\x6e\x03\x9c\x1f\x4a\xd9\xa0\xf5\x0d\xb2\xea\ \xe7\xda\x11\x21\xa6\x54\x80\x0b\x8c\xbc\xe0\x4a\x90\x7d\x7b\xf7\ \x1f\x35\x76\xe9\xb8\xf6\xeb\x8c\x64\x00\x1b\x24\xf2\x0a\x48\x20\ \xfe\x35\xe8\xf0\xf4\x28\x4e\x9e\x49\xbd\x4f\x31\x5f\x13\x56\x35\ \x1c\xb6\x65\x6b\xa5\xb4\x7c\x74\xdc\xcc\xc0\x87\xd2\xea\x95\xb9\ \x45\x47\x85\x1f\x7f\xaf\xf9\xd7\x42\xe8\x68\x31\xe2\x30\xd9\x70\ \xe5\x40\x53\x65\xb2\xc8\xdb\x6f\xa5\xb0\x81\xdf\x82\x2a\x7f\x67\ \xb5\xc5\x8e\xd2\x4a\xc0\x27\x1e\xb5\xbf\x0f\x84\xa7\x85\x8b\xb7\ \x33\x25\x4a\xd5\x2b\xcf\x34\x9d\xd8\xfb\x18\xef\x65\x2a\x6f\xee\ \x8a\xc5\xfb\xd1\x64\xf8\x6d\xb7\xdb\xbd\x64\xdc\x86\xda\x6f\x09\ \x1c\x0a\x8f\x5c\x64\x9f\x19\x6b\x09\x18\x1e\x95\x34\xe9\x29\xb7\ \x99\x68\x5a\xa5\x57\x05\xd5\x7a\x92\xdb\x5d\xcd\x12\xf0\x14\x36\ \xab\xd8\xd1\x51\x38\x8f\xac\x20\x38\x95\x6d\x57\xd6\x8a\xa4\xf0\ \x69\xbb\xc5\xd8\xb5\x3c\x6b\x4a\xd2\x57\x21\x9d\x33\x8b\x39\xcd\ \x3d\x13\xec\xe0\x84\x9d\xfe\x6f\xfa\xea\xab\x16\xd8\xcc\x86\x41\ \x12\x5c\xdc\x7d\x78\xed\x4c\x7d\x33\x4a\x63\xe8\xa8\x29\x40\x4e\ \x47\x88\x09\x3f\xfc\xc5\x53\xcb\xcf\x24\xa8\xec\x39\x34\xf4\xdc\ \x95\x91\x9a\x9a\x51\x8a\x6c\x41\xa8\x4a\x50\xe2\x42\x57\x84\x9f\ \x4c\xd2\x0b\x64\xe5\x46\x92\x97\x1a\x59\x29\x07\xcc\x33\x58\x5d\ \x1d\xf1\x64\x60\x9c\xed\x14\x89\xa6\x5c\x65\x4a\xc0\x38\x3c\xe4\ \xd3\x92\xd2\xcc\x5b\x96\xb7\x43\x03\xfa\x31\x4b\x87\xaf\x22\xb7\ \x79\x38\xd5\xef\x97\x54\xaf\xb2\xff\x00\xb9\x79\x51\xc6\x37\xf9\ \xfe\xf7\x7f\x2d\x39\x5c\x34\x82\x6f\xda\x2f\x4d\x69\x65\xdc\x5f\ \x8b\x3b\x4f\x26\x32\xad\xf7\x36\x1b\x1b\xda\x75\x84\x25\x21\x7b\ \x09\x23\x07\x19\xdb\x9e\xf8\xe7\x8a\x70\x65\xc7\x8b\x9c\x8f\x2d\ \x4a\xb4\x74\x55\x2d\xd5\x48\x5a\x30\x3e\x69\x15\x29\x53\x84\x5b\ \xb1\x6a\x71\x73\x96\x5e\xdf\xec\x6f\xbb\xe8\x9b\x96\xa2\xd0\x97\ \x6d\x39\xae\x35\x22\x6f\x2d\x4e\x42\x3c\x37\x63\x5b\xd3\x10\xb0\ \x52\x77\x05\x01\xb9\x59\x3b\x82\x4f\x27\x1c\x63\x1c\xd3\x7e\x8b\ \xb1\xea\x7b\x36\x1a\xbc\xea\xd6\xef\x31\x1a\x63\xc1\x69\xbf\xd5\ \xa9\x61\x79\xc8\xc2\x94\xb0\xb3\xb8\x80\x08\xec\x33\x9c\x9a\xb0\ \xee\x8e\x06\xe1\xa8\x77\xf4\xa6\x46\x90\x56\xa4\x23\x3d\xeb\x36\ \x1d\x75\x5b\x35\xd7\x84\x54\xd5\xb7\x21\x9d\x4e\xd1\x37\xc7\x64\ \xb1\xd4\x0d\x08\xff\x00\x85\xab\xad\xb1\x15\x1d\xb6\x14\x84\xa9\ \xb9\x8d\x28\xf2\x85\x6e\xe3\x70\x0a\x51\x07\xd4\x80\x3d\xb0\xd3\ \x6c\xe9\x64\x1b\x97\x43\xdf\xd2\xf2\x1e\xb9\xda\xe6\xdd\xde\xfb\ \x74\xe9\x13\x59\x41\x7c\x4a\xde\x09\x2a\x42\x55\xb4\xa7\xca\x00\ \x01\x5d\x8e\x73\x92\x6a\xeb\x68\x78\x51\xc0\xed\x81\x4c\x77\xb7\ \x49\x4e\x32\x72\x4e\x69\x54\xe3\xc4\x99\x35\x68\xc2\x0b\x37\x76\ \xc6\xbd\x2d\x6b\x96\x8d\x30\x6c\xd7\xfb\x9b\x57\x92\xe3\x4a\x65\ \xc7\x51\x18\x30\x95\xb6\x53\xb7\x6e\xd0\xa3\x8e\x33\xce\x7d\x6a\ \x31\xa4\x7a\x7f\xa8\x74\x64\x78\xd6\xbb\x76\xb6\x54\x8d\x37\x11\ \xe5\x2d\x98\x12\x2d\x88\x53\xc9\x6d\x4a\x2a\xf0\xfc\x7d\xfd\xb2\ \x4f\x3b\x73\xed\x8e\xd5\x31\xb3\x3d\x96\x53\xee\x9a\x77\x7d\x21\ \xc6\x0d\x44\xe3\x92\x63\xa1\x08\xd4\x82\x7c\xd1\x52\x5b\x3a\x4f\ \x1a\x1f\x59\x5d\xea\x0a\x6e\xea\x53\x4e\x38\xb7\x91\x6d\xfb\x3f\ \x95\x0f\x2d\xa0\xda\x9c\xdf\xbf\x92\x7c\xc7\xee\xfa\xfc\x52\x1b\ \xb7\x41\x9d\x99\x63\xbf\x58\x63\xeb\x37\xa3\xd9\xae\xd7\x15\x5c\ \xd3\x18\xdb\x90\xb5\xb7\x20\xff\x00\x69\xcd\xd9\x5a\x06\x07\x94\ \x6d\xe4\x0e\x7b\xe6\xd6\x00\xa7\xf0\xa7\x48\xca\xde\xd0\x35\x15\ \x55\xb5\x45\x29\xe1\xe9\x4a\xe9\xaf\x4f\x72\xa8\xb8\x74\xe9\xb9\ \x9a\xc7\x5b\x5d\xa6\xdd\x1c\x5b\x1a\xa2\x03\x70\x9d\x8e\x86\x76\ \xa9\x84\xa5\xa4\xb7\xb8\x2f\x71\xdc\x7c\xb9\xfb\xa3\xf1\xa6\xbb\ \x1f\x4a\xee\x30\xa6\x69\x39\x17\x1d\x5e\xe5\xc0\x69\x67\x31\x6f\ \x68\x40\x4b\x49\x0c\x94\x90\xa4\x1c\x2c\x92\xa3\x84\x79\xf3\xd9\ \x18\xdb\xce\x6a\xdb\xba\x30\x52\xbf\x15\x23\x8a\x6d\x29\x5e\xed\ \xd9\x38\xad\x10\x8c\x26\xae\x22\xa5\x25\x19\x6a\xbd\x5e\xff\x00\ \xc9\x50\xb3\xd1\x45\xb1\x67\x66\xc2\x9d\x5e\xf1\xb4\xc5\xbb\x26\ \xe9\x09\x83\x01\x1b\x90\xe8\x50\xcf\x88\xbd\xd9\x73\xcb\xb9\x23\ \xee\xe3\x76\x4e\x70\x05\x4e\x23\x68\x39\xac\xf5\x59\xed\x77\x6a\ \xd4\x62\x18\x99\x1d\xa8\xf3\xa1\x39\x04\x3b\xe2\xb6\x82\x93\x84\ \xaf\x70\xd9\x90\x90\x33\x83\x8e\x6a\x5c\xcb\x41\x79\x56\x73\x8a\ \xdd\x19\x44\x3b\xb4\x77\xcd\x56\x71\x56\xb2\x26\x9d\x18\x45\xa7\ \x62\xb6\x83\xd1\x28\x4d\xf4\xed\xcd\x29\x23\x50\x3c\xb9\x28\xbc\ \x2a\xef\x0a\xe0\xd4\x50\x85\x47\x7b\x8d\xbe\x42\xa5\x05\x01\xce\ \x79\x19\xcf\xa6\x2b\x7b\x9d\x24\x7e\x54\x6d\x51\x32\xf5\xa9\xd5\ \x72\xbe\xea\x0b\x7f\xea\xf5\x4e\x10\x43\x4d\xc6\x67\x18\x09\x43\ \x21\x67\xd4\x02\x7c\xdc\x91\xe9\xcd\x59\xc5\x45\x1d\xeb\x2d\xfc\ \x0f\x9a\x46\xa8\xd1\xec\xf4\xb6\xb1\x5b\x45\xe9\x49\x0e\xf4\xf1\ \xd3\x7d\xe3\x46\xa1\x68\xc7\xd9\x3f\xdd\x9b\x92\xda\x7f\xb7\xfb\ \x3f\xb9\xfd\xee\xf5\x29\xd1\xfa\x7e\xe3\x62\x9b\x7b\x7e\x76\xa7\ \xb8\xde\x9b\xb8\xcd\x32\x63\xb5\x28\xf9\x61\xa0\xe7\xf6\x48\xe4\ \xf1\xcf\xa6\x07\x03\x81\xce\x5f\x9d\x7b\x03\x68\x35\xa5\x4f\x00\ \x39\x34\x28\xb7\xa9\x2a\x14\xe0\xf4\xf5\xa5\x85\x01\x7b\x79\xad\ \x32\x4a\x56\x93\xcf\x34\x8d\xe9\xcd\xa0\x1c\xac\x71\x4c\xd7\x1b\ \xf3\x4c\xf6\x58\xcf\xc5\x33\x25\xb5\x61\x2a\xc9\x0b\x26\x21\xac\ \x12\xbc\x53\x05\xc9\xf8\xad\xe7\x25\x35\x57\xf5\x77\xae\x5a\x7f\ \x47\x2d\x51\x1c\x5a\xae\x17\x2c\x67\xec\x71\xd6\x3f\x67\xff\x00\ \xcc\x5f\x64\x7d\x39\x3f\x15\xcd\xfa\xb3\xaf\x7a\xfa\xfc\xea\xd1\ \x6f\x7d\x9b\x44\x75\x1e\x13\x11\x1e\x70\x3e\x56\xac\x9f\xc4\x62\ \xa8\xf1\x79\x7d\xd4\x14\xe8\x55\xad\xee\xa3\xa8\x7a\x81\xac\x6c\ \x9a\x66\xdc\xa9\x77\x59\xcc\xc4\x41\xc8\x40\x59\xf3\xac\xff\x00\ \x75\x23\x93\x5c\xcf\xd4\x1e\xb8\xcf\x9b\x70\x2c\x69\x76\x0b\x6d\ \x63\x68\x7a\x42\x02\x94\xaf\x90\x9e\xc9\xfc\x73\xf8\x55\x59\x70\ \x95\x3e\xe2\xeb\x93\xae\x92\xe4\x4c\x79\xc3\xf7\x9d\x59\x52\x96\ \x7e\xa6\xa7\xbd\x0b\xe9\xe2\x35\xa6\xa9\x11\xa5\x05\x22\xdb\x0d\ \x29\x7e\xe0\xf2\x0f\xde\x4e\x70\x96\x81\xf4\xdc\x78\xfa\x03\x59\ \x6b\xe2\xa4\xd5\xe6\xce\x9e\x1b\xa1\xf5\xbc\xd9\x96\x84\xe9\xee\ \xb2\xea\x0a\xd5\x7f\xbb\x5c\x65\x31\x6c\xdc\x4f\xda\x16\x49\x53\ \xa7\xd4\x36\x0f\x18\xf9\xed\xf5\xab\x5f\x4e\xe8\x78\xd6\x9b\x9c\ \x54\xa3\xc6\x73\xc3\x39\x53\x8f\xb8\x56\xb5\x7a\x66\xae\x49\xec\ \xc7\x89\x09\x98\x71\x18\x43\x2c\xa1\x3b\x1b\x6d\x00\x04\xa1\x20\ \x60\x00\x3d\x05\x47\x5e\x67\x32\xdb\x74\x02\x73\xc6\xe1\xee\x2b\ \xcf\xe2\x71\x35\x2a\x3b\x72\x3b\x14\x28\x53\x86\xb1\x44\xb6\xc8\ \xd2\x51\x1d\x21\x23\x09\xc0\xcd\x3f\xb4\x90\x50\x37\x84\xad\x23\ \xb8\x3f\x5e\x0d\x31\xd8\x14\x0b\x3c\x9f\x32\x7d\x71\xde\xa4\x6d\ \xa4\x2d\xa0\x15\xe5\xc7\xc7\x7a\x65\x3d\x50\xba\x9b\x88\xcc\x65\ \xa0\x92\xc8\xde\x9f\xec\x77\x1f\x87\xa8\xad\xad\xa5\xbe\x13\x92\ \x39\xc8\x0a\x38\x22\x94\x16\x9c\x6f\xcc\xde\xec\x7a\xe4\xff\x00\ \x8d\x6d\x61\xd1\xc8\x71\x04\xfe\x19\xa6\x24\x2d\xc9\x98\x35\x15\ \x63\x24\x21\x59\xc6\x38\x02\xb7\xb0\xd6\x50\xa1\x92\x9e\xe1\x4a\ \x00\xf2\x7d\x78\xa5\x6d\xa5\xb2\x06\xd5\x2b\x07\xdc\xf0\x3e\x94\ \xa5\x0c\xb3\xea\xea\xff\x00\x0a\xbe\x51\x6e\x62\x26\x94\x94\xa7\ \x1b\x14\x4f\xb9\x4d\x78\xae\x78\x50\xc8\x3e\x83\xd2\x9c\x76\x46\ \xef\x82\xe7\xc6\x6b\x62\x40\x49\xc2\x10\x84\x0f\xa5\x5b\x29\x19\ \xc6\xe6\x9a\x75\x5f\x71\x93\x81\xea\xae\x05\x6d\x11\x70\x09\x79\ \x40\xfc\x26\x97\x10\xa5\x8c\x14\xab\xe7\x9a\xd6\xe3\x58\xf3\x29\ \x58\x1e\x98\xa1\xa2\x33\x08\xd4\xd8\xc6\xd4\x24\x24\x63\xb6\x38\ \xad\x0b\x4a\xb3\xb8\xd2\xc7\x16\x0e\x52\x94\x94\xfc\x9a\x44\xf2\ \x8a\x95\xb5\x24\xe4\xfe\x42\x97\x26\x59\x08\x26\x6e\x52\xfc\x26\ \xc0\x27\x1e\x63\xed\xf3\x49\x14\xce\x3c\xa8\x19\x09\xe3\x3e\xe7\ \xde\x9d\x94\xc1\x59\x0d\xb3\xe6\x3d\xc9\xff\x00\x5f\xce\xa9\x3e\ \xb1\xf5\xc6\xd7\xa6\x14\xfe\x9f\xd1\xae\x47\xbb\x5f\x00\x29\x7e\ \x60\x21\x71\xa1\x1f\x60\x7b\x38\xe7\xc0\xe0\x7a\xe7\xb5\x2d\xc1\ \xc9\x9a\x68\x53\x9d\x59\x28\xc1\x6a\x49\xfa\x85\xae\x74\xc6\x82\ \x69\xb5\x5f\x24\xa9\x53\x9f\x41\x54\x78\x2c\x0c\xba\xee\x3d\xfd\ \x12\x93\xfd\xa5\x71\xf5\xae\x4b\xea\x36\xb4\xba\x6b\xdb\xe2\xae\ \xf7\x72\x50\xd3\x6a\x29\x8b\x09\x3f\xd4\xc6\x6f\x3d\x81\xfd\xe3\ \x8e\xea\xf5\x3f\x95\x31\x6a\x0b\xc5\xca\xe7\x3e\x4d\xd2\xeb\x25\ \xf9\xd3\x9e\x58\x53\xd2\x5c\x3b\x89\x3f\x3f\x81\xe0\x76\x14\xcd\ \x31\xe7\x64\xa8\x70\x42\x41\xf2\xf3\xc7\xe5\x5a\xe8\x61\xd4\x35\ \x67\x51\x46\x9e\x1d\x7f\xb4\x84\x97\x16\x13\xe2\x27\xc0\x58\x52\ \x89\xf3\x60\xfc\xd3\xff\x00\x4f\xb5\xde\xa0\xd0\xf7\x0f\x1a\x1b\ \xbe\x3c\x35\x28\x78\xd1\x9c\x39\x6d\x5f\x4f\x63\xf2\x29\x95\x2a\ \x08\xe3\x21\x38\x3c\x91\xfe\x5f\x35\x8b\x8d\xe5\x2a\x21\x29\x48\ \x03\x8c\x03\x85\x56\xde\x56\x67\x2b\x11\x86\x85\x5b\xbe\xde\x47\ \x63\xf4\xe7\xac\x1a\x67\x52\xb2\xd2\x63\x4d\x44\x69\xd8\x19\x89\ \x21\x41\x0b\xcf\xb2\x49\xe1\x7f\x87\x3f\x15\x6d\xc0\xd4\x0d\xb8\ \x91\xdc\x2f\xd4\x1e\xe2\xbe\x69\x29\x87\x10\xe7\x88\xd2\x94\x8d\ \x9e\x60\x52\x6a\xc6\xd0\x5d\x6c\xd6\x5a\x63\xc2\x62\x5b\xe9\xbb\ \xdb\xdb\xc0\x0c\xca\xc9\x5a\x47\xf7\x56\x3c\xc3\x8f\x7c\x8f\x8a\ \xd3\x4b\x13\x52\x9e\x9b\xa3\xce\xe2\x3a\x2e\x50\x77\x81\xdf\xad\ \xcb\x2e\xc7\xf1\x77\x01\xc5\x21\x61\x45\xe7\x8a\x73\x9d\xc7\x9a\ \xa1\x74\xc7\x5e\xb4\xb5\xfa\x22\x18\xfb\x7a\xed\x33\x14\x39\x66\ \x5f\x08\x27\xd8\x2c\x71\xf9\xe2\xac\x5b\x26\xb1\x8a\x96\x92\xb4\ \x3e\xcc\x82\xa1\x9d\xcc\xb8\x97\x07\xff\x00\x69\x35\xb6\x18\xfa\ \x4f\x49\x68\xce\x5d\x4a\x33\x83\xeb\x22\x74\xe0\x6d\xb5\x14\x13\ \x92\x7d\xa8\xa6\x48\x97\xd6\x26\x28\x28\x11\x93\xcd\x15\xb6\x33\ \x8c\x95\xd3\x13\x62\x51\xd3\x5b\x6a\x1c\xd1\x90\x96\xb5\x7d\xef\ \x13\xb7\xa7\xed\x15\x4f\x4f\x5a\xda\x84\xd2\xde\x6d\x1b\xf0\x9e\ \xd8\xa8\xa7\x4d\x2e\x32\x99\xd2\x70\x12\xa3\x94\x65\x7f\x87\xed\ \x15\x56\x0a\x16\x97\xa2\x85\x77\x4a\x85\x73\xa4\xea\x53\xb3\x6f\ \x43\xa1\x41\x52\xab\x0d\x16\xa8\xae\x19\x68\xca\x9c\xb7\x14\x36\ \x24\x2a\xb2\xba\x24\x15\x80\xd2\xc6\x00\xf4\xad\xf7\x75\x84\x4e\ \x71\x94\x61\x08\xdd\x93\x48\x46\xc1\x90\x09\x51\x3e\xa7\x9a\xe9\ \xad\x51\xcf\x7a\x3b\x1a\x9a\x59\x0a\x28\x3f\x96\x2a\x7d\xa5\x9e\ \x69\x50\x82\x52\x30\x40\xc1\xa8\x3e\x1b\x2a\xcf\xad\x4b\x34\xc2\ \x17\x1a\x12\xde\x70\x7d\xee\x40\x35\x9f\x12\xaf\x4c\xd1\x85\x95\ \xaa\x0a\xef\x4f\x05\x3c\x1a\x1e\x9d\xeb\xcb\x4b\x45\xd7\xf7\x94\ \xf9\x40\xe0\xd2\x17\x14\xa9\x12\x49\xee\x54\x71\x4f\xb1\x50\x98\ \xb1\x80\xcf\x38\xa4\x54\xfd\xba\x6a\x2b\x73\x45\x3f\xdc\xa8\xe4\ \xf6\x32\x9a\xee\x13\xb4\x1f\x4e\x6a\x35\x70\x90\x95\x3a\x54\xae\ \xc9\x3c\x52\xfb\xa4\x9d\xa8\x23\xf7\x95\x4d\x29\x6f\xc5\x77\x67\ \x24\xd3\x30\xd4\xf2\xab\xb1\x78\x9a\x99\x9d\x90\xb6\xd4\xf0\x4b\ \x83\x04\x61\x55\x23\x8a\xb0\xa4\x6d\x35\x13\x09\xf0\x97\xb7\xb1\ \x1f\x14\xf7\x6f\x91\xbd\xb1\xcf\x98\x55\x31\x34\xef\xaa\x2f\x85\ \xa9\x6e\xab\x37\x4a\x6f\xc3\x70\x9f\x43\x5b\xa0\x2f\x04\xa0\x9f\ \xa5\x6d\x71\x29\x7d\x9e\x3b\xd2\x24\x95\x36\xbe\xf8\x22\xb3\x2e\ \xbc\x6c\xcd\x2f\xa9\x2b\xa1\x45\xd1\xd0\x96\xb6\x7a\x9e\x29\x97\ \x3c\xed\x39\xc7\xc5\x3a\x5c\x47\x8c\xce\xf4\xe3\x8a\x68\x53\x9e\ \xc9\xe6\x9f\x87\x8f\x54\x46\x21\xf5\x85\xac\xb8\xdb\x43\xb7\x06\ \xbc\x5a\xb7\x3a\x14\xda\xbb\xd3\x4c\xb9\xbe\x12\x72\xae\x00\xa6\ \x19\xba\x9e\x3c\x57\x0a\x94\xea\x52\x90\x7c\xca\x52\xb0\x07\xd4\ \x9e\x2a\xd3\xcb\x4d\x66\x93\x13\xc5\xe4\x58\x3e\x3a\x52\x91\x93\ \xce\x29\x1c\x9b\x9c\x76\xf8\x2b\x48\xaa\x67\x58\x75\xb3\x48\x58\ \xdb\x50\x9b\xa8\x62\x97\x40\xc8\x66\x32\xbc\x65\x9f\x8c\x27\x20\ \x7e\x24\x55\x21\xab\x7f\x49\xe7\x1c\x52\xdb\xb0\xd8\xca\x8e\x4e\ \xd7\x66\xb8\x4f\xff\x00\x62\x7f\xce\xb0\xf1\xa3\xbc\x55\xcd\x51\ \x55\x6a\x7b\xa8\xeb\xb9\xda\x8a\x3a\x16\x40\x58\xed\xef\x51\xcb\ \xc6\xb5\x8f\x19\xb5\xad\x6f\x21\xa6\xd3\xf7\x96\xe2\xc2\x52\x3e\ \xa4\xd7\x0c\x5f\xba\xd3\xd4\x4b\xab\x8a\x5a\x6f\x0b\x84\xda\x87\ \xdc\x8a\x80\xd8\x03\xea\x39\xfe\x35\x0d\x9f\x74\xbd\x5c\xd5\xbe\ \x7d\xca\x54\x8d\xca\xca\xbc\x57\x8a\xb9\xfc\x4d\x51\xe2\x2a\x72\ \xb2\x1d\x1e\x8e\xab\x3f\x7a\x47\x5d\x6b\x9e\xbf\xe9\xbb\x41\x5b\ \x71\xe7\x9b\x93\xe9\xff\x00\x82\x8b\xca\x7f\xed\x9e\x3f\x2c\xd5\ \x1b\xae\xfa\xe3\xab\xf5\x31\x5c\x5b\x6b\x9f\xaa\x21\x2c\x10\x50\ \xc1\x3b\xd4\x3f\xbc\xe7\x7f\xcb\x15\x5a\x37\x17\xb1\x50\x2a\x23\ \xda\x94\x36\xdb\x4d\xe0\xaf\x03\xca\x41\x03\xd3\xf1\xa4\xca\x4e\ \x4e\xed\xdc\xeb\x61\xfa\x22\x9c\x35\x97\x98\x9d\xb6\x16\xfb\xc5\ \xc7\x9c\xf1\x49\xf3\x12\xa3\x9c\x9a\x56\x5b\x4a\x06\xd4\x24\x91\ \x91\xe9\x5b\x76\xe1\xad\xca\x04\x21\x27\xcb\x84\xf7\xaf\x76\x84\ \xa4\x93\x8c\x28\xe3\x83\xcf\xd3\xe9\x55\x6e\xec\xec\xd3\xa0\xa1\ \x1b\x24\x26\x98\xb5\x97\x58\x40\x48\x29\x49\x52\xb0\x3b\xf1\xdb\ \x3f\x9d\x74\x7f\xe8\x6f\x2e\x2a\xed\xda\x96\xdc\xa0\x91\x38\x2d\ \x89\x19\xf5\x53\x58\x50\xc6\x3e\x09\xfe\x35\xce\xae\x25\x26\x5b\ \x38\x6c\x94\xac\x28\x10\x3b\x9e\x33\xfe\x15\x3c\xfd\x1f\xb5\x22\ \x34\xaf\x55\xad\x32\x65\x3a\x96\xa0\xce\xcc\x19\x65\x47\x00\x25\ \xce\x12\xa2\x7e\x14\x13\xcd\x2a\xb4\x6f\x02\x1a\x93\x53\xd7\x7f\ \xc1\xd6\xf7\x26\xb2\xf9\xf3\x60\x63\x03\xe0\xe2\x90\x88\x89\x71\ \xb2\xde\x36\xee\xc1\x1f\x0a\xf7\xa7\x99\x6c\xa9\x52\x14\x36\x8c\ \xa5\x5b\x54\x01\xed\x8e\xc6\xb2\x62\x29\x28\x03\x8c\x0e\xc7\x15\ \xc9\x74\xee\xcc\xaa\x76\x42\x5b\x46\x5b\x56\xd7\x52\x37\x24\xed\ \x20\x8e\x47\xcf\xe7\x9a\x92\xb4\xb4\xa1\x09\x24\x9c\x11\xdf\xb8\ \xa6\x65\x36\x1b\x21\xc2\x95\x15\x27\x1e\x70\x79\x4f\x3d\x8f\xbd\ \x39\xb6\x85\x29\x85\x05\x36\x01\x28\x38\x58\x20\xf1\xe8\x47\xd0\ \xd3\x20\xb2\xe8\x52\x6d\x3d\x45\xc1\xcd\xaa\x47\x88\x4e\x36\x92\ \x94\x83\x9e\xdd\xf8\xa5\xac\xa5\x24\x02\x10\x82\x15\xc8\x20\xf7\ \x14\xc7\xa7\xd2\xea\xd8\x0b\x92\xa0\xfc\x94\x1f\x0c\xad\x49\x29\ \xe3\x3c\x63\xda\x9e\xe3\x29\x28\x07\x6a\xb2\xd9\x3c\xa7\xfb\x3f\ \x4a\x6c\x1d\xd5\xc4\xd4\x56\x76\x37\x00\xd2\x55\x84\x95\x6d\x23\ \xf7\x78\xe4\x7d\x7e\xb4\xa1\x94\xb6\x13\x93\x95\x28\x93\xca\x8e\ \x3f\x2f\x8a\x43\x25\x5b\x43\x6b\x24\x25\x5d\x81\x48\xc8\xcf\xcf\ \xe1\x43\x6a\x71\x45\x59\x75\xb2\xa5\xe4\x20\x81\x85\x24\x0f\x5c\ \x76\x3e\x9c\x55\xef\x62\x96\x1c\x52\x40\x58\xc1\x1c\x67\xca\x3f\ \xd7\x34\xa1\x2a\x42\x94\x50\x09\xe0\x02\x46\x29\x33\x39\x71\x96\ \xbc\x2d\x85\x04\xe7\x77\xef\x27\x1d\xeb\x5a\x7c\x54\xbc\xb7\x12\ \xb1\x94\x8c\x76\xce\x73\xcd\x5a\xe5\x77\x15\x3a\xff\x00\x87\xca\ \x10\xb7\x14\x3b\x25\x3d\xcd\x63\x20\xac\x8c\x9c\x63\xeb\xda\xb0\ \x82\x14\xb1\xe2\x29\x2a\x1d\xc1\xdd\xdc\x9e\xdf\x95\x6b\xbe\x5c\ \x2d\x96\x4b\x6a\xee\x57\xbb\x94\x4b\x64\x24\x0c\x97\xa5\x3c\x96\ \xd3\xf8\x67\xb9\xfa\x54\x6f\xa8\x5b\x5b\x20\xc6\xe4\xf2\x42\x47\ \x6a\x65\xd5\xb7\xfb\x16\x93\xb3\x2e\xef\xa8\xee\x6c\xdb\x60\xa7\ \x3b\x54\xe1\xcb\x8f\x2b\xfb\x2d\xa0\x72\xb5\x7c\x0f\xc6\xa9\x7e\ \xa5\x7e\x93\xf6\x88\x65\xcb\x77\x4f\x2d\xaa\xbb\x4a\xda\x40\xb9\ \x4d\x41\x6d\x84\x1f\x74\x36\x70\xa5\xe3\xdd\x58\x1f\x06\xb9\xab\ \x56\x5f\xf5\x16\xad\xbb\xbb\x77\xd4\x57\x49\x37\x49\xc4\x60\xba\ \xf2\xf0\x86\xff\x00\xba\x80\x38\x48\xf8\x48\xc5\x4a\xa6\xd9\xd2\ \xc3\x74\x75\x4a\x9d\x69\xe8\xbc\xfd\x7a\xb1\x65\xf5\x9b\xaf\xb7\ \x8d\x5d\xe2\xd8\x74\xca\x17\x61\xb0\xa8\x94\xb8\xb5\x2b\xfd\xa6\ \x58\xf6\x5a\x87\xdd\x49\xfe\xca\x7f\x12\x6a\x9e\x71\x29\x60\xb6\ \xda\xdc\x50\x1b\x54\x50\x80\x36\x9d\xc6\xb5\xbc\xe0\x49\x48\x69\ \xb0\x70\x7e\xf1\x1f\xce\xb5\x24\x29\x6a\xf1\x94\x4b\x8a\x3d\xf1\ \xdf\xe4\xf3\x5a\x21\x05\x15\xa1\xd3\x8e\x4a\x49\xc2\x2b\xd7\xd4\ \xd0\xb3\x29\xf5\x99\x0a\xca\x46\x30\x02\x46\x78\xf7\x35\x82\xd2\ \xb7\x1b\x48\xc0\xee\x33\x83\xc6\x7d\x29\x62\x88\x43\x4b\xda\xa0\ \x92\x0e\x70\x0f\x27\xde\x93\xc8\x79\x0a\x74\x00\x14\x40\xf4\x4f\ \x00\xf1\x4c\x42\x2a\x46\x29\x6a\xdd\xd9\xad\x0c\xb2\x12\x52\xf3\ \xa9\x4e\xd3\x92\x0a\x7f\x2f\xad\x60\xe6\x12\x93\xb9\x63\x1d\x81\ \x4a\xbb\xfe\x15\xb5\x42\x53\xa1\x3b\xd2\x52\x39\x03\x70\xc9\x48\ \xc7\x02\xb2\x66\x13\x2d\xa4\x29\xd5\x78\xa4\x8c\xee\x24\x64\x7e\ \x1f\x5a\x9b\xf6\x8a\x74\xdc\x9e\x58\x2b\x7a\xe6\x22\x59\x51\x58\ \x28\x0b\x50\xcf\xb6\x31\xe9\x59\x39\x15\x4a\x39\x70\xa7\x80\x4e\ \x7b\x52\xe5\x2d\xa4\x12\x10\xea\x90\x01\xe4\x28\x7a\xfc\x52\x27\ \xe4\x28\xf2\x82\x41\xf5\x28\x18\xfa\xd4\xa6\xde\xc2\xe7\x4e\x10\ \x4d\xc9\xdc\x46\xec\x66\xc2\xc6\xd3\x92\x79\x1c\xd6\x70\xa4\x5c\ \x6d\xef\x22\x4c\x29\x6f\xc5\x75\x07\x29\x52\x16\x52\xa0\x7f\x0a\ \x50\x92\x8c\xa9\x2a\x51\xec\x3d\xb3\x9a\x0a\x77\xa4\x29\x40\xe0\ \x63\x38\x3c\x0a\xb5\xcc\x72\xc3\xc6\x45\x9d\xa3\x3a\xe7\x7c\xb5\ \x2d\xa6\x35\x24\x41\x70\x65\x3c\x7d\xa1\xb3\xb1\xec\x7b\x9f\x45\ \x7e\x3f\x9d\x15\x51\xce\x6d\x29\x19\xc1\xc1\xed\xed\x45\x42\x8a\ \xe5\xa1\xca\xaf\x82\xa5\x9f\xdd\xf5\xf0\x3a\xc3\x4d\x6a\x0b\xf3\ \x76\x28\xc8\x6e\xf5\x72\x4a\x41\x56\x02\x65\xac\x01\xe6\x3e\x99\ \xa9\x33\x5a\xa3\x52\x35\x0c\x0f\xe9\x0d\xd8\x71\xdb\xed\x8e\x7f\ \x9d\x42\x74\xaa\x77\x5a\x63\x92\x78\x1b\xbf\xfc\x8d\x3d\x15\x78\ \x87\x27\xee\x8a\xf1\x55\xeb\x55\x72\xb6\x67\xf3\x3c\x6a\x9c\x93\ \x76\x66\x62\xeb\xa8\x5f\x90\xa7\x5d\xbe\x5c\xce\x4f\x73\x29\x7f\ \xe7\x4a\xdb\xba\xde\x12\x9c\x7e\xb9\xb9\x7f\xf5\x4b\xff\x00\x3a\ \x40\x54\x01\xe2\xbd\x6d\x4a\x52\x82\x52\x82\x49\x3c\x01\xeb\x55\ \x78\xaa\xef\x69\x3f\x9b\x21\x36\x2c\x76\xe9\x78\x24\x2c\x5e\x6e\ \x5c\x73\xfe\xea\x5f\xf9\xd6\x6b\xd5\x7a\x89\x6d\x86\x91\x7e\xba\ \xed\x1e\x9f\x6c\x73\xfc\xeb\x0b\xd5\x9a\xfb\x6d\x88\xdb\xf3\xec\ \xf3\xa2\x30\xf2\xb6\x21\xc7\xd8\x52\x12\x49\x19\x03\x24\x77\xc0\ \x27\x1f\x06\x90\x47\x65\x2c\xa7\x72\xf9\x51\xab\x4a\xb5\x78\xfb\ \xf2\x77\xf1\x64\xbc\xd1\x76\xd8\x7a\x89\x7f\xd4\x2d\x8f\x11\x57\ \xeb\xa8\x57\xfc\xf1\xcf\xf3\xac\x9f\xd5\x7a\x90\x82\xa5\x6a\x1b\ \xb6\x3f\xe7\x8e\x7f\x9d\x35\x0d\xce\x38\x84\x24\x65\x4b\x50\x4a\ \x52\x4e\x32\x49\xc0\xaf\x35\x3d\xaa\xe7\x64\xba\xae\xd9\x76\x8c\ \x23\x49\x42\x52\xa5\x37\xe2\x25\x78\x04\x64\x1c\xa4\x91\x54\x8c\ \xeb\xcf\xac\xe4\xed\xf1\x2d\x9a\x6a\x37\x57\xb1\xb5\x7a\x97\x50\ \xba\xb2\xa5\xdf\xae\x87\xeb\x2d\xcf\xf3\xaf\x58\xd4\x9a\x85\x2b\ \xdc\x2f\xb7\x4f\xfe\xad\xcf\xf3\xa6\x62\x78\xed\x4e\xd0\x6c\x17\ \x69\x76\x19\x77\xc8\xf1\x82\xed\xf0\xd4\x11\x21\xef\x15\x03\x62\ \x8e\x30\x36\x93\x93\xf7\x87\x61\xeb\x4f\x55\x6b\x4b\x48\xc9\xfc\ \xd8\xb8\xe7\x93\xd0\xda\xe6\xa4\xd4\x3b\xf7\x7e\xbe\xba\x7f\xf5\ \x8e\x7f\x9d\x66\xd6\xa7\xd4\x6d\xab\x72\x6f\xf7\x51\xf4\x98\xe7\ \xf9\xd3\x3e\xd2\x72\x2b\xd1\xda\x97\xc7\xab\x6f\x79\xfc\xc3\x34\ \xbb\x49\x33\x3a\xab\x52\x10\x14\x9d\x43\x76\xf9\xff\x00\x6c\x73\ \xfc\xe8\x7b\x53\x6a\x25\x8c\xff\x00\x48\x2e\xb9\xff\x00\x9e\x39\ \xfe\x75\x1b\x43\xa5\xa3\x9f\x4a\x1e\x96\x90\x9c\x85\x52\xb3\xd6\ \xbd\xd4\x9f\xcc\xba\xa9\x27\xa5\xc7\x97\x35\x76\xa4\x6c\x14\x9d\ \x41\x76\x03\xfe\x78\xe7\xf9\xd3\x74\xcd\x69\x7c\x65\xa5\x2d\x7a\ \x86\xe4\x84\x81\x95\x29\x53\x56\x00\xfa\x9c\xd4\x3f\x52\xea\x16\ \x22\x94\x47\x09\x76\x4c\xd7\x8e\xd8\xf0\xe3\xa4\xad\xe7\x94\x7b\ \x04\xa4\x73\xc9\xaa\x9f\xaa\xb1\x7a\x8b\x05\x51\xbf\xa5\xd6\x0b\ \xbd\x8e\x24\x82\x7e\xca\xdc\x98\xab\x65\xb5\xe3\xbe\x32\x06\xe5\ \x0c\x8c\xfa\x8c\xfa\x57\x4f\x07\x86\xc4\x57\xd7\x33\x4b\xb6\xec\ \xdb\x85\xc2\x55\xae\xef\x7b\x22\x79\xab\xba\xdf\x3a\x31\x53\x16\ \xdb\xd5\xca\xe0\xf0\xe3\x7a\xa5\x38\x1a\x1f\xc7\x2a\xff\x00\x5c\ \xd5\x4d\xa9\x75\x9e\xa9\xd4\xae\x95\xdd\x6f\x53\xa4\x23\xd1\xb5\ \x3c\xad\x89\x1e\xc0\x67\x14\xc2\x1b\xf7\xe4\x9f\x5a\xcd\x20\x76\ \x07\xf3\xaf\x41\x47\x0f\x0a\x4b\x4b\xb7\xda\xce\xfe\x1f\x07\x0a\ \x1b\x6e\x63\x87\x14\x7c\xce\x2f\xf1\x35\xea\x41\x4f\x39\x56\x6b\ \x23\xbb\x8f\xa5\x2e\x76\xd5\x73\x66\xd2\xc5\xe1\xfb\x5c\xc6\xad\ \xb2\x5c\x53\x4c\x4c\x5b\x0a\x0c\xba\xb4\xfd\xe4\xa5\x78\xda\x48\ \xf5\x00\xf1\x4f\x6d\x9b\x16\xe2\x30\x5c\xec\x16\xbf\xce\xbd\x42\ \xd6\x14\x0e\xf5\x03\xe8\x6b\xc0\x32\x7d\xbd\xab\xdf\x4c\x11\x8a\ \xad\xcb\xab\xf6\x99\x17\x9e\x24\x6e\x79\xc3\xf8\x9a\xc9\x2f\x3b\ \xbb\x97\x5c\x3f\xf5\xab\x04\xfa\x91\xe9\xc6\x2b\x24\x83\x9d\xc5\ \x35\x0c\xba\x72\xed\x33\x53\xef\x29\x44\x17\x5c\x3f\x55\x9a\x03\ \xab\xc1\x05\xd7\x3e\x79\x35\xa5\x44\x15\x63\x18\xf4\xac\x81\xc0\ \x04\x7e\x00\x50\x4f\x12\x4d\xee\x66\xe3\xef\x04\x85\x87\x57\x94\ \x60\xa7\xcc\x7f\x87\xf1\xaf\x56\xf3\x8e\xa4\x65\xd5\x94\x91\xdf\ \x71\xe6\xb0\x1c\x73\xf3\x5e\x70\xd9\x20\xf2\x85\x73\xff\x00\x24\ \xd0\x4a\x9c\x97\x32\xfa\xe9\xa7\x50\xef\x17\xcb\x7a\x60\xca\xbe\ \xdc\x05\xce\x2a\x02\x56\x93\x29\x79\x75\x09\xc0\x0b\x1c\xf3\xe8\ \x0f\xe7\x53\x34\x5f\x2f\x81\x1e\x5b\xcd\xcb\x00\x76\xfb\x52\xff\ \x00\xce\xb9\xc7\x45\x58\xb5\x46\xa0\xbe\x06\xb4\x7d\xba\xe1\x3e\ \xe7\x19\x06\x4a\x53\x05\xa2\xb7\x1b\x40\x21\x25\x58\x1d\x86\x54\ \x91\xf8\x8a\xb4\xde\xd4\x1a\xa3\x4a\xa6\x3b\x1d\x47\xd2\x37\x8b\ \x32\xde\xf2\xb5\x31\x50\xd4\xda\x1d\x3e\xb9\x04\x00\x48\xf5\xda\ \x7f\x0a\xe0\x63\x70\x15\x54\x9c\xe9\x6a\xbb\x3b\x0e\x4e\x2f\x0d\ \x57\x36\x6a\x6e\xfd\xd7\x26\xd2\x2f\xb7\xbd\xa4\x9b\xdd\xc9\x27\ \xdf\xed\x4b\xed\xf9\xd6\xa8\xd7\xab\xbb\x69\x29\x7a\xf1\x74\x24\ \x65\x5c\x4a\x5f\x23\xdf\xbd\x46\x06\xb0\xd2\xf2\x40\x0c\xdf\x22\ \x79\x86\x7f\x6b\xb9\xbc\x7d\x72\x29\x53\x57\xad\x3b\x22\x2e\xe5\ \xde\x6d\x64\x0f\x43\x25\x03\x18\x3c\x7a\xd7\x2d\xc6\xb2\x5a\xa7\ \xe6\x62\xfd\xf8\xab\x3b\xf9\x92\x78\xda\x8a\xfc\xeb\xcb\x75\x9d\ \x47\x74\x2d\x29\x20\x28\x7d\xa9\xc1\x83\xf9\xf7\xf4\xa5\x82\xfd\ \x7e\x40\x0d\x1b\xcd\xd1\x1e\x5e\xe9\x94\xb1\x81\xe9\xeb\xfc\x2a\ \x39\xa4\x52\xce\xad\xd4\x0c\x58\xb4\xfd\xca\x1c\xeb\xab\xe1\x61\ \x31\xd9\x90\x90\x56\x94\x24\xa8\x9e\x48\x48\xc6\x0f\xad\x31\x5e\ \xba\x83\x67\xb1\x5e\x65\x5b\xa5\x17\xdc\x9b\x11\xc5\xc6\x90\xdb\ \x2d\x6e\xc2\xd0\xa2\x15\xc9\x38\x3c\xe4\x67\x9e\xd5\x2a\x86\x26\ \x7e\xea\x7e\x64\x70\xf1\x13\x7d\x54\xfc\xcb\x11\x5a\x87\x51\x16\ \x83\xa2\xf7\x73\x78\x00\x7f\xfe\x6d\x79\x3e\x9e\xf8\xa5\x11\xb5\ \x16\xa1\x6d\x28\x29\xbe\xdd\x38\xe0\x1f\xb5\xb9\x9e\xdf\x5a\xa4\ \xa4\x75\x75\x4d\xa9\x5f\x63\xb2\x87\x90\xa2\x79\x7d\xcd\x9f\xc1\ \x39\xa6\x2b\x9f\x54\x35\x6c\xdd\xe9\x8a\xf4\x6b\x72\x08\xe3\xec\ \xec\x8d\xc0\x7f\xca\x56\x4f\xe5\x8a\x7c\x3a\x37\x19\x3d\xf4\xf1\ \x63\x63\x80\xc5\xc9\xd9\xe9\xf1\xfb\x1d\x19\x23\x52\x5f\x1b\x6f\ \xc5\x91\xa8\xae\x6c\x36\x15\xc9\x72\x7a\xd0\x93\xf9\xab\x15\x15\ \xbc\xf5\xaa\x35\xa5\x4e\xa4\xea\xeb\xac\xe7\xc2\xb1\xe1\x43\x94\ \xe2\xc6\x7f\xe5\x12\x07\xf1\xae\x70\xb8\x4d\x99\x71\x7f\xc5\xb8\ \x4c\x93\x31\x64\xe5\x45\xe7\x14\xae\x7f\x1a\x4e\x02\x12\xa2\x13\ \xb4\x01\xdf\xd7\xf2\xad\xf4\xba\x26\xda\xd4\xa8\xdf\x86\x86\xda\ \x7d\x17\x67\xd7\x9b\x7e\x1a\x16\xed\xfb\xf4\x85\xd7\x12\x02\x9b\ \xb2\xce\xb8\x40\x41\x3c\x3c\xf4\xc7\x1d\x70\x7d\x06\x76\x83\xf8\ \x1a\xad\xf5\x0e\xa3\xd4\x3a\x9a\x68\x99\xa8\xaf\xb7\x2b\xac\x81\ \xf7\x17\x2e\x4a\xdc\x29\xf8\x4e\x4f\x03\xe9\x4d\x65\x4b\xc7\x95\ \x38\x03\xd5\x55\xe1\x19\x39\x5a\x81\xe3\x00\x67\xb7\xe1\x5d\x4a\ \x54\x29\xd2\x56\x8a\xfa\x9d\x2a\x34\xa3\x47\xdc\x5e\xbc\x4f\x4b\ \xce\xfd\xd0\xe2\xc9\xed\x80\xa3\x83\xf5\xac\xbc\x69\x2a\x46\xd2\ \xf3\xa5\x07\xb8\xde\x71\xc7\xbd\x60\x08\x00\x00\xae\xde\x80\xd0\ \xb2\x10\x08\x1c\x9f\x5c\x9e\xf4\xe1\xaa\x52\xde\xe6\xc5\x4b\x91\ \xbb\x1e\x3b\x98\x1d\xb2\xa3\x5a\x9c\x90\xe8\xec\xea\xc2\x87\x6f\ \x31\xe2\xb5\xf9\xd6\xa2\x12\x14\x00\xef\xf1\x59\x25\x09\x41\xfb\ \xc0\x9f\x91\x53\x6b\x15\x75\x27\x2d\xd9\x8f\x89\x25\xd5\x65\x4f\ \x38\x31\xee\xa3\x59\xa4\x94\x1d\xc9\x5a\xc1\x1c\x67\x35\x22\x85\ \xa2\xb5\x54\xfe\x9f\x5c\x75\xe4\x3b\x4e\xfd\x39\x6c\x92\x22\xcc\ \x99\xf6\x86\x87\x86\xe9\x2d\x80\x9f\x0c\xab\x79\xe5\xe6\xf9\x09\ \x23\xcd\xdf\x83\x88\xa9\x25\x5c\xe4\x9a\x9b\x31\x6e\x76\xd9\xdc\ \x50\xa9\x6f\x81\xe4\x75\xc1\xcf\xf6\xcd\x6a\x76\x4b\xea\x52\xb2\ \xf2\xc9\x57\x07\xcd\xde\xb5\x24\xe4\x8c\x63\xf2\xed\x41\xf5\xf5\ \x35\x29\x58\xa4\xaa\xca\x4b\x73\xd2\xe3\xab\x50\x2b\x71\x64\x8f\ \x9a\x37\x2b\x24\xee\x56\x4f\xae\x4d\x78\x40\xe0\x95\x60\x7e\x75\ \xea\xf6\xe7\x39\x1c\xfb\x54\x95\xbb\xdd\xb0\xf1\x1c\x1c\x07\x17\ \xef\xf7\xab\xcf\x11\xc3\xff\x00\x08\xe1\x1e\x9c\xd7\x83\x39\xc7\ \xf1\xaf\x42\x3b\xee\x56\x3e\x48\xa9\xb9\x56\xd9\xa5\xf5\xa8\x8e\ \x56\xa2\x3e\x4d\x15\x9b\xe9\x40\x1c\x2b\xf0\xa2\xac\x99\x49\x45\ \xb7\xb9\xd5\xba\x67\x8b\x24\x70\x38\x1e\x6c\xff\x00\xda\x34\xea\ \x94\x15\x72\xa3\x84\xd3\x66\x98\x03\xf5\x33\x0a\x57\x00\x6e\xff\ \x00\xf2\x34\xb9\x4e\x17\x32\x3b\x27\xd8\x57\x82\xa9\x77\x36\x78\ \x76\x6c\x2f\x32\xdf\x09\x4e\xe3\x53\x6e\x86\x06\x26\xf5\x1e\x12\ \x24\x36\x8f\xd9\x32\xeb\xcd\x85\x7a\xac\x0c\x0f\xc4\x64\x9f\xc2\ \xa0\x3c\x0e\xdf\xc6\x96\xd9\x6e\xd7\x1b\x15\xe2\x25\xe6\xd0\xe3\ \x68\x9b\x11\x65\x4d\x87\x06\x50\xb0\x41\x4a\x92\xa0\x0f\x20\x82\ \x47\xf1\x1c\x8a\x76\x15\xc2\x9d\x68\xce\x5b\x26\x32\x85\x45\x0a\ \x91\x94\xb6\x4c\x7b\xb5\x45\x77\x55\x75\x10\x46\xb9\xcf\x9a\xe3\ \xb3\xee\x4b\xf1\xb7\xbc\xa2\x94\x80\x55\x90\x94\x93\x84\xe1\x20\ \xa4\x71\xc0\xa9\x74\x3b\x65\x8e\xfd\xa8\xf5\x5e\x96\x67\x4e\x46\ \xb7\x7e\xa9\x61\xc5\xdb\xe6\x34\xfa\xd4\xea\x94\xd1\xd8\xaf\x13\ \x71\xc1\x0a\x24\x1f\x81\x9f\x5e\x6a\x0b\x7a\xd5\x66\x75\xd1\xab\ \xc5\xb3\x4b\x46\xb0\x5d\xda\x98\x26\x2a\x5b\x77\x05\xc8\x43\x8e\ \x0c\x92\x3c\x22\x94\x84\x82\xa3\x93\xc9\xf6\xf5\x34\xba\xef\xd4\ \x1b\x83\xd1\x2e\xcf\x5b\xf4\xbc\x0b\x4d\xc6\xf0\xd1\x62\x7d\xc5\ \x13\x96\xee\xe4\x2b\xef\xf8\x6d\x94\x80\xd9\x3e\xf9\x35\xd3\xa7\ \x3a\x09\xcb\x89\x25\x2b\xbf\x1b\xab\x6c\xb4\xed\x36\x42\xa5\x25\ \x7c\xcd\x3d\x7e\x68\x76\x7d\x16\x7d\x3b\xa3\x34\x75\xc1\xcd\x3d\ \x16\xef\x26\xfd\x20\x3a\xfb\xb2\x1e\x5a\x3c\x26\x42\x93\x80\xde\ \xd2\x30\xac\x29\x38\x3e\xe0\xe7\xd3\x12\xad\x45\xa7\x22\x5f\xba\ \xc7\xa8\xe4\xcd\x8e\x25\xb5\x6c\xb5\x35\x21\x31\x94\xef\x84\x97\ \x9c\xd9\xe4\x4a\x95\x91\x84\xf0\x72\x72\x07\xbf\x15\x56\x5b\xb5\ \xc4\x88\xfa\x5a\x06\x9f\xb8\x69\x78\x17\xa6\xed\x6e\x97\x6d\x92\ \x1d\x98\xb6\x4b\x07\x39\xda\xe2\x12\x0f\x88\x9c\xfa\x65\x3c\x00\ \x3e\x69\x53\xbd\x48\xbe\x2f\x58\xc9\xd5\x1f\xaa\x20\xa9\x53\x61\ \x26\x14\xeb\x7b\xaf\x15\xb5\x25\xb0\x90\x15\x85\x6d\x05\x24\x91\ \x91\xc1\xc6\x71\xcd\x68\x85\x6c\x32\x82\x8b\xb5\xb4\xd2\xdd\xdc\ \xfe\x23\x23\x5a\x86\x54\x9e\xda\x69\x6e\xee\x7f\x11\xc7\x5e\xda\ \xed\xa8\xd2\x56\x4b\xc2\x63\x5a\x6d\x97\xa7\x5d\x5b\x17\x1b\x7c\ \x09\xc9\x7d\xb4\xfd\xf2\x85\x8c\x2d\x58\x05\x28\xcf\x7f\xde\x00\ \xf2\x29\x7e\x95\x21\x1d\x0a\xd6\x8b\x57\x61\x2d\x92\x7f\x36\xaa\ \x07\x25\xeb\x2c\x95\x37\xfa\xa3\x46\x31\xa7\xb6\xe4\xad\x49\xb8\ \xae\x52\x9c\x1e\x83\xcc\x94\x80\x07\xd0\x9f\x9a\x78\x89\xa9\x64\ \xc0\xd1\xb7\x7d\x26\x8b\x52\x1f\x62\xec\xe2\x1c\x5c\xb3\x2b\x61\ \x67\x69\x4f\x1e\x1e\xc3\xbb\x3b\x7b\xee\x1d\xeb\x27\x1e\x94\x71\ \x12\x7a\x25\x95\xad\x3b\x6d\xe0\x84\x2a\x90\x55\x5c\xb9\x59\xaf\ \x2f\x04\x59\x8b\xd1\xf6\x5b\x3d\xea\xdd\xa7\xee\x96\x9b\x4f\xea\ \xd7\xad\xbe\x24\xeb\xac\x8b\x92\x5a\x90\xdc\x93\xbb\x1b\x10\x56\ \x0e\xdc\xa4\x0e\x12\x47\x9b\xbf\x07\x31\xed\x19\x67\xb6\x4e\xd2\ \xb7\x26\xac\x56\xfb\x3d\xf7\x55\xc4\x9a\xa4\x39\x12\xe1\x21\x49\ \x05\x84\x9c\x05\x36\x94\xa8\x64\x1e\xf9\xce\x33\x91\x9e\x05\x46\ \x27\x6a\xa6\xaf\x4c\x42\x46\xa8\xd1\x16\xeb\xf4\xd8\x51\xd3\x19\ \x99\xff\x00\xac\x57\x1d\x4a\x69\x27\xca\x16\x80\x95\x6e\x39\x24\ \xe4\x11\xdc\xf6\xad\x1a\x73\x53\x44\xd3\x53\x21\x4f\x67\x43\x43\ \x99\x75\x82\x56\x63\xce\x37\x57\x1a\x09\x2a\xdc\x39\x6b\x61\x07\ \x09\x56\xde\xe3\x20\x7b\xd6\x8e\x36\x15\xd4\x56\xb5\xbc\xf9\x77\ \x6f\xf3\x1c\xea\xd0\xce\xad\x6b\x7a\xee\xdf\xe6\x4a\x34\x45\xb2\ \x05\xcf\x4d\xde\x9b\xb7\xd9\x6d\x13\xf5\x9b\x13\x14\x3f\x54\x5c\ \x5f\x5b\x69\x6d\x90\x46\x42\x13\x90\x4e\x39\x19\x27\xb8\xe4\xfa\ \x1e\x77\xea\xee\xad\x9b\xa7\xa7\x4a\x86\xdc\x44\x40\xb9\x38\xf3\ \xa1\x51\xb0\x48\x88\x02\x88\x29\x01\x59\x27\x07\xca\x33\xed\x56\ \x8c\x4d\x7f\x1e\xd7\x7e\x46\xa2\xb8\xe8\xa8\x97\x6b\xfa\x25\xb9\ \x29\xb9\xe2\xe8\xe4\x74\xa5\xc5\x95\x1f\xea\x82\x54\x08\x1b\xb1\ \x8c\x8c\x81\xce\x6a\x97\xd6\xfd\x64\xfe\x91\xe9\xdd\x5f\x63\xba\ \x69\x0b\x2c\xbb\x8d\xf6\xec\x26\xa2\xf3\xb7\x0e\xc5\x4a\x4a\x7f\ \x66\x80\x41\x38\xc2\x30\x0e\xe1\x80\xb5\xe4\x1d\xd9\xa7\xd0\xa1\ \x46\xba\x8e\xda\x79\xf8\x9a\x30\xb4\x29\xd7\x71\xee\xf5\xa9\x3b\ \xfd\x02\xd9\x45\xc3\xa9\x9a\x93\x51\x4e\x02\x65\xca\xdf\x65\x71\ \xd8\x9e\x37\x9c\x85\xa9\x60\x15\x8f\x5c\xe3\xcb\xf4\x59\x1e\xb5\ \x15\xfd\x1a\xd9\x57\x53\x7a\xeb\x02\xd9\xaf\x64\x4a\xd4\x11\x26\ \x22\x63\xef\x37\x31\xe5\x2d\x25\xc2\xd2\x95\xbc\x0c\xe0\x1c\xe0\ \xf1\xec\x2a\x15\xd1\xbe\xa2\x5e\xfa\x5d\xad\x59\xd4\xf6\x46\xd8\ \x79\x61\xa5\x47\x93\x19\xf2\x76\x48\x65\x58\x25\x04\x8e\x41\xca\ \x52\x41\xf4\x20\x70\x46\x41\x9a\xe9\xae\xb1\xe8\xfd\x2d\xd4\xdb\ \x6e\xb8\xd2\xdd\x29\x4d\xa9\xe8\xff\x00\x69\x32\x63\x26\xfc\xe3\ \x89\x90\x5d\x41\x4f\x94\xa9\xbc\x34\x94\x92\x48\x01\x27\xdb\x81\ \x5d\x75\x6b\x58\xee\x64\xcb\xb2\x27\x3d\x33\xd0\x7a\x23\x5c\xf5\ \x33\x53\xc2\x63\x45\xc6\x8d\x67\xd0\x91\x24\x34\x88\x9f\x6f\x50\ \x55\xd6\x42\x5c\x52\x5b\x5c\x87\x54\x46\xdc\xf8\x6a\x27\x04\x24\ \x64\x0e\xc3\x96\xce\xb0\xf4\xfe\xc6\x34\xa6\x85\xd4\x96\x9d\x23\ \x68\x87\xaa\x66\xdc\xc4\x1b\xb6\x97\xb3\xdc\xc4\xa6\xdf\x25\x4b\ \x2d\xed\xf0\xdc\x59\x4e\xe4\xb7\xc9\x49\xe3\xc4\x19\x39\x15\x5e\ \xe8\x2e\xae\xdc\xf4\x77\x51\xaf\xfa\xaa\x2d\xa2\x24\xc8\x3a\x81\ \x72\x13\x71\xb5\x49\x70\x94\x3a\xcb\xcb\x2b\x28\xde\x06\x41\x19\ \xc6\xec\x7b\xf1\xcd\x7b\x1b\xa8\xda\x56\xc1\xac\x6c\x3a\xa3\x40\ \x74\xe9\xad\x3b\x2e\xd5\x2c\xc8\x58\x91\x79\x7a\x70\x90\x92\x0a\ \x4b\x7e\x64\xa4\x20\x60\x9e\x40\x27\x9e\xf4\x5d\x58\x32\xca\xe5\ \xdc\xe7\x4b\x6d\x97\xbe\x92\x6b\xe9\x3a\xab\xa6\xfa\x73\x46\xde\ \xf4\xed\xb4\xcf\x80\x6c\xf7\x4f\x1d\xf4\xec\x69\xd7\x36\x3e\x80\ \xea\xf1\x90\xd8\x1e\x6e\xfb\x89\x00\x14\xd6\x1d\x5c\xba\xdb\x9e\ \xfd\x18\xfa\x6d\x0e\x1e\x8c\xd3\xe8\x55\xf8\xba\xc4\x66\xf6\xb8\ \x11\x01\xd7\x32\x0b\xad\x61\x5f\x78\xa9\x44\x92\xac\xf2\x6a\x03\ \x70\xfd\x21\xa0\x93\xad\xd1\x66\xe9\xcc\x6b\x60\xd6\x96\xd9\x11\ \xee\xae\x7e\xb6\x71\xe7\x57\x21\xc4\x29\x08\x78\x15\x23\x01\x08\ \x0e\x38\x7c\x30\x91\x92\xbf\xbc\x30\x05\x30\x49\xeb\x04\x0b\xa7\ \x47\x6d\x1a\x06\xfb\xa2\x9b\x9f\x2a\xc6\xdb\xa9\xb4\xdd\x1a\xba\ \x38\xc1\x8e\xb5\x03\xb5\xc5\x34\x12\x42\xca\x72\x0e\x0a\x80\x3b\ \x47\x1d\xea\x6e\x88\xcb\x2e\x67\x40\xcb\xe8\x9f\x4f\xad\xb7\xe9\ \x1a\x02\xe5\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa9\x93\x79\x42\x27\ \x19\xe7\x1e\x6f\x04\xbb\x90\x8f\x5c\x6d\xdb\xc6\x39\x06\xb9\x87\ \xa0\xd6\x58\x17\x8e\xb5\xe9\x9b\x25\xea\x1b\x53\x20\xc8\xb8\xa5\ \x89\x0c\x2c\xe5\x0e\x27\x9c\x83\x83\xc8\xe2\xa5\x3a\xc3\xac\x7a\ \x63\x5c\x88\xf7\x2d\x75\xd2\xc8\x97\x8d\x4a\xd4\x44\xc5\x55\xce\ \x3d\xe5\xe8\x8d\xbc\x13\x9d\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\ \xf8\xe0\x00\x2a\xbe\xe9\x8e\xa7\xfe\x85\xeb\xeb\x36\xab\xfb\x07\ \xdb\x8d\xb2\x4a\x64\x7d\x9b\xc5\xf0\xbc\x5c\x03\xe5\xdd\xb5\x58\ \xfa\xe0\xd5\x5b\x45\xe3\x19\x59\xdc\xea\x0b\x16\x86\xe9\x55\xc2\ \xf3\xd5\x1d\x29\x23\xa7\xf1\xc4\x6d\x18\xd0\x96\xc4\xc4\x4e\x78\ \x4a\x92\x52\x95\xad\x69\x5a\x81\xc0\x49\x28\xda\x02\x40\xc2\x4f\ \xbf\x35\x19\xbe\xf4\xf3\x49\xeb\xae\x93\x74\xbb\x56\xd9\xf4\xfc\ \x3d\x2d\x71\xd4\x9a\x89\x36\x69\x8d\x40\x5a\xcb\x5e\x1a\x9d\x7d\ \x1b\xc0\x5a\x8f\x98\x06\x32\x33\xdf\x71\x04\x9c\x0a\x86\xda\x7a\ \xf4\x6d\xda\x93\xa8\xf7\xaf\xe8\xa0\x77\xfa\x6f\x1d\x4c\x96\xbf\ \x58\xe3\xec\x39\x4a\xd3\x9c\xf8\x5f\xb4\xfb\xf9\xc6\x13\xda\x9a\ \x1f\xeb\x0c\xd1\xd1\x9d\x23\xd3\xfb\x75\xa1\x50\x65\xe9\x8b\xc0\ \xbb\xc6\xbb\x09\x7b\x8a\xdc\x0e\x3e\xb4\x8f\x0b\x67\x97\x05\xe1\ \xce\xe3\xf7\x3b\x73\xc0\xda\x05\x19\xa7\xa1\x75\xc2\xd0\x9d\x30\ \xd4\xbd\x63\xd4\xdd\x10\x8f\xa1\xa3\xdb\x1b\xb5\xdb\x37\xc1\xbe\ \x35\x25\xd5\x4c\xfb\x42\x52\xd1\x2b\x5e\x55\xb5\x49\xcb\xa7\x8c\ \x11\xe5\xed\xc8\xdb\x10\xb4\x69\xed\x0f\xa5\xbf\x46\x5b\x27\x51\ \x2f\x5a\x26\x0d\xfa\xf4\xcd\xd6\x4d\xbd\x4d\xbe\xfa\xdb\x69\xd2\ \xa7\x56\x02\x9c\xdb\xca\xf6\x25\xb2\x12\x3f\xbd\x9f\x41\x4d\x93\ \x3f\x48\xc2\x9b\x8d\xdb\x55\xda\x74\x05\xb6\xd7\xae\x2e\xf0\x04\ \x29\x77\xc6\xee\x2e\x2d\x01\x3b\x52\x9d\xed\xc7\x23\x08\x56\x10\ \x8c\x1d\xc7\xee\x8c\xe7\x9c\xc2\xa7\x75\x47\xed\x1d\x01\xb7\xf4\ \xa3\xf5\x10\x42\x61\xdc\x95\x3b\xf5\x97\xdb\x33\xbf\x2a\x70\xec\ \xf0\xb6\x71\xfd\x67\x7d\xde\x9d\xa8\xba\x0c\xb3\xe6\x5f\x9a\x2f\ \xa4\x5a\x4b\x4f\xe9\xae\x9f\xb3\x79\xd1\xd6\x5b\xdb\x1a\x8a\x21\ \x97\xa8\x2e\xd7\x1b\xc2\x63\x39\x09\x2b\x6d\x2a\x6d\x2c\x20\xba\ \x92\x42\x77\xe0\x94\x82\x4e\x3b\xf2\x31\xcb\xfd\x4b\xb2\x42\xd3\ \x7d\x41\xbf\x58\xad\xd2\xd3\x32\x0c\x39\xce\x35\x19\xf4\xac\x2b\ \xc4\x68\x1f\x21\xc8\xe0\xf9\x48\xed\x53\x96\xba\xbd\x66\xbc\x68\ \x4b\x16\x96\xea\x1f\x4f\x58\xd5\x23\x4f\xb4\x63\x5a\xe6\xb5\x75\ \x72\x0b\xad\x33\x80\x03\x6b\xda\x95\x05\x80\x12\x81\xe9\xc2\x47\ \xae\x49\x64\xb7\xf5\x0a\xd1\x07\x40\x6a\xbd\x25\x1b\x40\xd9\xc0\ \xbe\x4e\xfb\x4c\x49\x8b\x71\x4e\x3d\x6d\x6c\x10\x52\xca\x14\xa0\ \x54\xb0\x90\x30\x95\x15\x03\xe6\x51\x3b\xb3\x43\xb3\x2d\x0c\xe9\ \xea\x59\xff\x00\xff\x00\x0f\x24\xa9\x3d\x6a\xbb\x8c\x9d\x87\x4e\ \x3e\x42\x4f\xa7\xfb\x4c\x6a\xd9\xd3\x7b\x94\xcd\x51\xfa\x1d\xf5\ \x16\x2e\xa5\x95\x22\x6b\x56\x79\x6c\xc9\x80\xe4\xb7\x0b\x8a\x65\ \x64\xa0\xe1\x0a\x3c\x81\x90\x78\x1f\xdb\x57\xbd\x56\x9f\xa3\xe7\ \x54\x4f\x48\xf5\xa4\xad\x48\x9b\x18\xbe\x7d\xaa\xdc\xb8\x3e\x01\ \x99\xf6\x7d\xbb\x9c\x69\x7b\xf7\x6c\x5e\x71\xe1\xe3\x18\xfd\xee\ \xfc\x52\x9d\x5f\xd5\x98\xd3\x3a\x70\xbe\x9e\xe8\xbd\x1f\x1f\x49\ \xe9\xd9\x32\x84\xb9\xc9\x17\x05\xcc\x91\x2d\x69\xc1\x01\x4e\x28\ \x27\xca\x0a\x52\x71\x8f\xdc\x4f\x3d\xf3\x09\xe8\x0e\x2f\x3e\x9d\ \xc7\x43\xb7\xd1\x5d\x0b\xa7\xaf\x36\x6d\x13\x7f\xd2\x56\x37\xad\ \x52\xac\x85\xeb\xae\xa3\x97\x79\x43\x33\x1a\x9a\x77\x01\xe1\xb6\ \x5d\x0a\xd8\x0a\x06\x30\x82\x9f\x30\xc9\x38\x56\x6b\x8d\x3d\xa4\ \x34\x56\x9d\xfd\x1c\xef\x7a\xd2\xeb\xa5\xe0\x6a\x1b\xbd\x87\x53\ \x3b\x09\x82\xf3\xaa\x43\x32\x52\x16\xdb\x40\x39\xb1\x59\x52\x06\ \xe5\x28\x00\x79\x38\xc9\x23\x35\x11\xbc\xf5\x8b\x4f\x6a\xeb\x55\ \xa4\x75\x13\xa6\x51\xb5\x2d\xe2\xd7\x11\x30\x99\xb9\x35\x78\x7a\ \x11\x71\xa4\xf2\x90\xe2\x10\x93\xb8\xe4\x93\x90\xa1\xc9\x38\xc6\ \x6a\x69\xd3\xad\x61\xa0\xad\x5f\xa2\x3d\xe2\xd5\xa9\x22\x5b\xef\ \x2f\x2e\xff\x00\xe3\x0d\x3a\x2f\x3f\x64\x92\xea\x0a\x99\xda\xa1\ \x8c\xb9\xb5\x38\x27\x21\x3c\x84\x9e\x6a\x74\x7b\x15\xfd\xc5\xab\ \x2c\x2d\x21\xa2\xf4\xce\x9c\xfd\x26\x3a\x6f\x7f\xd2\xb6\xb4\x5a\ \x61\x6a\x4d\x3d\x22\x6a\xe0\xa1\x65\x49\x65\xcf\xb3\x92\x76\xe7\ \x90\x08\x5a\x46\x3b\x64\x1a\x80\x49\xd3\x3a\x5b\x4d\xe8\x4d\x7b\ \xd5\x9b\xe6\x9b\x8b\xa9\xae\x6e\x6a\xd9\x56\xf8\x10\xe5\xba\xb4\ \xc7\x65\x3e\x39\x0a\x5a\x92\x82\x0a\x89\xca\xbd\x7d\x13\x8c\x73\ \x51\x48\xff\x00\xa4\x25\xcc\x75\x9e\xd3\xd4\x19\x5a\x72\x33\x91\ \x2c\xf0\x17\x6f\xb7\xd9\xa3\xca\x2d\x36\xcb\x25\x0a\x48\x1e\x21\ \x42\xb2\x7c\xd9\x27\x6f\x38\x03\x8c\x53\x6d\x83\xac\xc9\x66\xd7\ \xa9\xf4\xee\xa5\xd1\xec\xea\x0d\x2f\xa8\x2e\xae\x5d\x55\x6f\x54\ \xf5\xc7\x76\x2b\xca\x5e\xef\x23\xe9\x49\xe3\x84\xe7\xcb\xce\x3d\ \x32\x72\x5d\x13\x92\x77\x2e\x28\x3d\x3c\xe9\xac\x4e\xae\x74\xd6\ \xea\xbd\x33\x1d\x3a\x77\xa8\x56\x37\x1d\xfd\x59\x21\xc5\x38\x88\ \x92\xbc\x26\x9e\x49\x49\xce\x46\x77\xa1\x00\x67\x00\x93\xd8\x76\ \xaf\x35\xb6\x80\xb2\x68\x1e\x88\x6a\x59\x17\x6b\x5b\x2e\x5f\xa6\ \xea\xc7\x6d\x56\xb7\xdc\xc9\x5b\x31\x58\x57\x99\x69\xf4\xf3\x6c\ \x52\x73\x8f\xde\x1f\x83\x3c\xde\xa3\x5f\x3a\x91\xd5\x5d\x2d\x32\ \x2b\xda\x7f\x48\x46\xd3\xa9\x69\x36\x68\xf3\x67\x96\x62\x45\x43\ \x24\x2c\x25\x6f\x2c\x72\xa5\x6c\x4a\x73\x81\x9c\x24\x62\x9e\xbf\ \x4c\x4e\xa3\xc1\xd6\xba\x86\xc5\x68\xb3\xcf\x83\x32\x3d\x9e\x19\ \x33\x1e\xb7\xaf\x74\x47\x26\xbc\x41\x7b\xc2\x57\xef\xa4\x6d\x18\ \x57\xc9\xf9\xa8\x76\xb3\x2d\x1c\xd9\x92\x66\xbf\xd1\x9f\xa7\x16\ \xad\x4b\xa5\xf5\x7e\xb0\xb8\xda\x63\x5f\xdf\xb1\xb2\x86\xed\xd6\ \xd9\x53\x04\x78\xcf\x48\x58\x27\x73\xab\x2a\x40\x09\x48\x09\xe0\ \xa8\x03\x93\xec\x2a\x7e\xee\x87\xe9\xad\xbb\xab\x3d\x36\x7e\x56\ \x9e\xb0\xb7\x1b\x54\x46\x72\x15\xea\xc8\xc4\xe4\xca\x66\x14\xdd\ \x89\x2d\xa9\x0a\x4a\xd5\xf7\x96\xa0\x9e\x0e\x38\xf5\x26\xa8\xde\ \x92\x75\x2a\x4e\x84\x8b\x7b\xb4\x4b\xb2\x44\xd4\x3a\x7e\xfd\x1c\ \x47\xb9\xdb\x24\x3a\xa6\x7c\x44\xa7\x20\x14\x38\x90\x4a\x14\x02\ \x94\x33\x83\xdc\x1e\xe0\x10\xd3\xa8\xf5\x3e\x9d\x37\xdb\x55\xd7\ \x44\x68\xe3\xa5\x1c\xb7\x3a\x1f\x1b\xae\x8e\xcc\x53\x8e\xa5\x49\ \x52\x09\x52\x82\x76\xed\x29\xec\x90\x3b\xf2\x7b\x54\x26\xac\x5a\ \x70\x9e\x76\xcb\x63\x50\xf4\xde\xcb\xa4\xba\x77\xad\xc4\xfb\x54\ \x37\x6f\x33\xb5\x88\xd3\xfa\x7d\xd7\x89\x25\x96\x92\xad\xe5\xd4\ \x8c\xf6\x28\x51\x4e\x7d\x08\x1f\x15\x68\xca\xe8\xb7\x4f\xed\xb7\ \xf9\x1a\x0a\xe3\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa8\x93\x79\x42\ \x27\x19\xe7\x1e\x6f\x04\xbb\xb8\x23\xd7\x1b\x76\xf9\x71\x92\x0d\ \x50\x5f\xa4\x27\x5c\x24\xf5\x61\xdb\x3f\xd9\xf4\xf2\x34\xeb\x16\ \xc5\xba\xf7\x86\xdc\xcf\x1c\xbc\xf2\xf6\x8f\x10\x90\xda\x30\x40\ \x40\x03\x83\xdc\xf3\x5b\xb5\x7f\x58\xb4\xce\xba\x44\x7b\x96\xbb\ \xe9\x6c\x4b\xc6\xa4\x66\x22\x63\x2a\xe7\x1e\xf2\xf4\x46\xde\x09\ \xfb\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\xf8\xe0\x00\x2a\xdd\x51\ \x6d\x54\x69\x32\x5a\xe5\x8f\x43\xe9\x3f\xd1\x77\x47\xf5\x12\xe3\ \xa2\x60\xdf\x2f\x92\x67\xcc\xb6\x2c\x3d\x21\x48\x69\x6a\x53\xf2\ \x30\xea\xc2\x7e\xf9\x42\x23\xed\x48\xed\xe7\xcf\x38\x15\x28\x83\ \xd2\xad\x1f\xac\x2f\x9d\x19\xd4\x56\x9b\x04\x28\x96\x4b\xc4\x17\ \x5d\xbf\x32\xde\x43\x45\xd8\xed\x85\xa8\x2b\x9e\xc5\x61\x68\xe3\ \x1d\xaa\x8f\xbe\xf5\x44\xdd\x3a\x03\xa7\x7a\x52\x6c\x49\x65\x36\ \x6b\x8a\xe7\x7e\xb2\x13\x37\x78\xdb\x95\x21\x5b\x3c\x2d\x83\x6f\ \xfb\xa3\xbe\xe3\xf7\x7b\x73\xc5\xb3\xa2\xba\x88\xd6\x81\xfd\x16\ \xae\x96\x3b\x86\xa6\xd3\x13\xa6\xcf\x88\xb4\x58\x22\xdb\xa7\x7d\ \xa6\x74\x63\x29\x27\xc5\x0f\x20\x7f\x51\xe1\x85\x93\xcf\xef\x6e\ \x1c\xf1\x91\x58\x89\x66\x5a\xf3\x6c\x40\xe6\x95\xd2\x3d\x47\xe8\ \x85\xea\xf1\xa3\xb4\xe4\x1b\x7d\xea\x06\xb1\x4c\x46\x56\xc2\x15\ \xbc\xc3\x90\xf0\x43\x09\x23\x3c\x81\xe3\xa0\x76\xcf\xec\xc9\xa9\ \xee\xb7\xe8\xde\x80\xbb\x75\x0f\xa7\x3f\xd1\x0b\x2c\x66\xad\x08\ \xbd\xcd\xb5\xdf\x5a\x19\xda\xea\xe2\x82\xb5\x25\xce\x4e\x32\x18\ \x74\x77\xe7\x70\xed\x54\x3f\xe8\xef\xd6\x77\xba\x49\x22\xf2\x55\ \xa7\x13\xa8\x22\x5c\xc3\x05\x51\xd5\x33\xc0\xf0\xdc\x65\x4a\x52\ \x16\x0f\x86\xbc\x9f\x31\xf4\x1e\x87\x3c\x53\x9f\x4f\x7f\x48\x3b\ \xce\x93\xd0\x9a\x9f\x4e\xbf\x63\x45\xc6\x6d\xea\x54\xa9\xac\x5c\ \x15\x2c\xb6\x60\xbf\x21\xa2\x85\xad\x28\x28\x56\xee\x49\x56\x37\ \x0e\xe7\xde\x84\xe3\xcc\x24\xa7\xc8\xb4\xf4\x9d\xef\x4d\x46\xfd\ \x15\xba\xad\x7b\x89\xa6\x60\xce\xd3\xe8\xd6\x2a\x54\x2b\x5a\x9c\ \x5a\x18\x53\x5e\x24\x14\xb0\x14\x50\x42\xb0\x3c\x8a\x20\x1e\x70\ \x47\xad\x25\xbf\xf4\x43\x44\xea\x3e\xae\xf4\xd1\x16\xeb\x67\xea\ \x5b\x56\xa5\xb2\xaa\xe7\x74\x83\x19\xd5\x14\x0f\x0d\xb4\x2c\xa5\ \xb2\x4e\x46\xe2\xb4\xa4\xe3\x1c\x02\x47\x35\x49\xd8\x7a\x9e\x6d\ \x1d\x01\xd4\x3d\x28\x36\x10\xf0\xbd\x5c\x51\x3b\xf5\x8f\xdb\x36\ \x96\x76\xaa\x39\xd9\xe1\x6c\x3b\xbf\xdc\xfd\xf7\x0f\xbd\xdb\x8e\ \x64\x37\xaf\xd2\x12\xf0\xf5\xf3\x40\x5e\xec\x96\x26\x6d\xb3\x34\ \x74\x03\x08\x78\xd2\xbc\x74\x4d\x42\x9b\x43\x6a\xdc\x90\x84\x14\ \x02\x12\x78\x04\xe3\x3d\xf8\xa9\xcc\x88\x70\x92\x64\xcf\xac\x3d\ \x3e\xd2\x4a\xe9\x0e\xa3\xbc\x8d\x2d\xa7\xf4\x86\xa0\xb1\xdd\x36\ \xdb\x58\xb7\xde\x5b\x92\xb9\xd0\xb7\xa1\x19\x71\x21\xd5\xf9\xc0\ \x51\x51\xcf\x9b\xc9\xd8\x64\xd2\xae\xb6\xe8\x2d\x0d\x6c\xd6\xba\ \x63\xa7\xba\x77\x47\x43\x89\x3f\x59\xa2\x0a\xdc\xba\x97\xd7\x9b\ \x7a\x4b\xa8\x42\xbc\x16\xf3\xb4\x64\x21\x65\x44\xe4\x9d\xff\x00\ \x02\xa9\xae\xa3\x6b\x4d\x0b\xaa\xa3\xce\x93\x68\xe9\x7b\x76\x0b\ \xd4\xe7\xfc\x77\xa7\xb7\x7b\x75\xf4\x25\x65\x5b\x97\xb1\x92\x84\ \xa5\x21\x47\x3c\x12\x40\x07\x8e\xc2\x9c\x7a\xc1\xd6\x39\xda\xef\ \x58\xe9\xad\x51\x6f\xb3\x7e\xa1\x9b\xa7\xa3\x32\xd4\x62\x25\xfd\ \xa3\x2e\x34\xe1\x71\x2e\x7d\xc4\xe3\x9c\x71\x83\xdb\xbd\x0d\xa0\ \x50\x95\x91\x7b\x6b\x4e\x92\x68\x36\xa1\xeb\x5d\x2c\xe6\x93\xb1\ \x69\xf8\xd6\x7b\x6a\x5d\xd3\xf7\xaf\xd7\x68\x5c\xd9\x72\x12\xd6\ \xe5\x07\x5a\x2e\x95\x79\x95\xc6\x14\x90\x31\xdb\xd3\x1c\x69\xb4\ \x0c\x1c\x0e\x7f\x8d\x5b\xbd\x44\xea\xa6\x91\xd7\x6b\x9d\x79\xbc\ \xf4\xa2\x30\xd5\x93\x62\xf8\x4e\xdd\x63\xde\x9f\x6d\x90\xe8\x6f\ \x62\x5e\xfb\x38\x4e\x37\x27\xca\x70\x56\x41\xda\x33\x9e\x73\x1c\ \xd7\x5a\xee\x0e\xa5\xd0\xda\x57\x4d\xb1\xa3\xed\x56\x77\xac\x2c\ \x29\x97\x6e\x11\x87\xed\x66\x92\x00\xdc\xae\x06\x32\x46\xe3\x92\ \xac\xa8\x92\x31\x9c\x54\x49\xae\x45\xa1\x19\x25\xaa\x20\xb9\x52\ \x7e\xe6\x73\x8f\x53\x58\xad\x41\x5c\xe3\x3f\x5a\xd8\x1b\xe3\xd3\ \x93\x41\x4a\x02\xbd\xaa\xb7\x43\x1c\x59\xe5\xae\x03\xb7\x3b\xc4\ \x2b\x6b\x40\x97\x65\x48\x6d\x84\x00\x39\x2a\x5a\x82\x47\xf1\x34\ \x55\xf5\xfa\x14\x74\xda\x46\xae\xea\x9c\x7d\x4d\x29\x8f\xff\x00\ \x45\xd3\xcb\x12\x16\xb2\x38\x72\x40\x1f\xb2\x40\xe3\x9c\x1f\x39\ \xfa\x0f\x7a\x29\xb1\xd8\xcb\x53\x47\x62\x4f\xa7\x54\x55\x66\x8e\ \x91\xd8\x6e\xff\x00\xf2\x34\xe4\x3b\x0a\xed\x1a\x2b\x87\x2e\x83\ \xbb\xbe\x7f\x2f\xc9\xc3\xfd\x27\xfe\xfc\xbf\x27\x17\x2b\x9a\xf1\ \x27\x1c\x57\x69\x51\x55\xfd\x0b\xff\x00\x4f\x2f\xc9\x1f\xa4\x7f\ \xdf\x97\xe4\xe2\xd3\xea\x3d\x28\x90\x71\x08\x8f\x73\x5d\xa5\x45\ \x1f\xa1\x7f\xe9\xe5\xf9\x0f\xd2\x7f\xef\xcb\xf2\x70\xfa\x4e\x07\ \x35\xb1\xa0\x54\xad\xc7\xb0\xae\xdc\xa2\xaf\xfa\x2f\xfd\xf9\x7e\ \x43\xf4\x8f\xfb\xf2\xfc\x9c\x5c\xca\xb6\xf0\x06\x4d\x6d\x71\x59\ \x50\x1e\xb5\xd9\x94\x55\x1f\x40\xdd\xdf\x89\xe5\xf9\x27\xf4\x9f\ \xfb\xf2\xfc\x9c\x64\xd9\xda\xb3\x5a\x26\x2f\x83\x9e\x31\x5d\xa9\ \x45\x0b\xa0\xac\xef\xc4\xf2\xfc\x87\xe9\x3f\xf7\xe5\xf9\x3e\x77\ \x6b\xa9\xdf\x63\xb6\xca\x92\x14\x01\x6d\xb3\x8f\xa9\xe0\x7f\x3a\ \xa1\x11\x95\x3a\xa5\x7a\xe7\xd6\xbe\xc6\x51\x5d\x4c\x2e\x11\x61\ \xe2\xd5\xef\x73\xa1\x84\xa0\xb0\xea\xd7\xb9\xf1\xec\x82\x71\x80\ \x73\xf4\xaf\x12\x15\xef\xc5\x7d\x85\xa2\xb4\x64\x37\xf1\xb5\xbd\ \x8f\x8f\x67\x8c\x1c\x63\x3c\xf3\x5e\x82\x08\xef\xe6\xaf\xb0\x74\ \x51\x90\x38\xfd\xc7\xc7\xac\x71\x40\x49\xc5\x7d\x85\xa2\xa7\x20\ \x71\xbb\x8f\x8f\x84\x64\x70\x70\x6b\xd0\x09\x1c\x02\x7d\x39\x3e\ \x95\xf6\x0a\x8a\x8e\x19\x3c\x7e\xe3\xe3\xee\x14\x08\x0a\x38\x03\ \xd7\x15\xe8\x27\x80\x08\xaf\xb0\x34\x51\xc3\x27\xda\x3b\x8f\x90\ \x18\x24\x7d\xd0\x4d\x79\xb4\xfb\x1f\x73\xe9\x5f\x60\x28\xa8\xe1\ \xf7\x83\xc4\x27\xc8\xf8\xff\x00\xb4\x15\x77\xfc\xeb\xcc\x6d\x00\ \x03\x8c\x73\x8a\xfb\x03\x45\x4f\x0f\xbc\x3d\xa3\xb8\xf8\xfc\x8c\ \x9c\x11\xc1\xf9\x15\xe8\xc2\x95\xc2\x52\x33\x5f\x60\x28\xa3\x86\ \x0b\x11\x6e\x47\xc8\x15\x0c\x63\x90\x4f\xf6\xab\xc2\x93\xff\x00\ \x2b\x8e\xfe\xb5\xf5\xfe\x8a\x8e\x1f\x79\x2f\x13\x7e\x47\xc8\x21\ \xbb\x1b\x4f\x6f\x7c\xf6\xa3\x82\x0a\x47\xf0\x3d\xeb\xeb\xed\x14\ \x70\xbb\xc3\xda\x7b\x8f\x90\x24\x01\x94\x9c\xfb\xf3\xef\x5e\xe5\ \x58\x20\x13\x8a\xfa\xfb\x45\x1c\x3e\xf0\xf6\x9e\xe3\xe4\x0a\x54\ \x40\xe1\x47\xbf\x3c\x56\x1b\x95\x93\xc7\x7f\x5e\x6b\xec\x0d\x14\ \x70\xc3\xda\x7b\x8f\x8f\xe0\x10\xac\xf6\x3d\xfb\x77\xaf\x54\xae\ \x30\x09\xcf\xc8\xaf\xaf\xf4\x51\xc3\xef\x0f\x69\xee\x3e\x3f\x61\ \x4a\xf5\xc7\xcd\x03\x68\xce\x72\x4e\x6b\xec\x0d\x15\x3c\x3e\xf2\ \x3d\xa3\xb8\xf9\x00\x79\x1d\xf1\x9e\xc6\xb1\x52\x94\x7d\x41\x15\ \xf6\x06\x8a\x38\x60\xf1\x17\xe4\x7c\x7d\xff\x00\xaa\x6b\xd0\x94\ \x93\x9f\x7e\x3d\xeb\xec\x0d\x14\x70\xfb\xc8\xf6\x8e\xe3\xe4\x07\ \x38\xe0\x8f\xf2\xac\x52\x3c\xb9\x38\xc5\x7d\x81\xa2\x8e\x19\x2f\ \x11\xdc\x7c\x7f\x1c\x64\x0c\x8c\x77\x19\xc5\x62\xa7\x01\xc2\x73\ \xc7\xd2\xbe\xc1\x51\x47\x0c\x87\x88\x7d\x87\xc8\x5b\x7c\x1b\x95\ \xcd\xf0\xc5\xb2\x0c\xb9\xce\x13\xe5\x4c\x76\x14\xe1\x27\xe8\x33\ \x57\x8f\x48\x7f\x45\xcd\x7b\xab\xe6\x33\x2f\x53\x46\x77\x4b\xd9\ \xb2\x0a\xd7\x24\x62\x4b\x89\xe3\x84\x35\xdc\x64\x1e\xea\xc7\xd0\ \xd7\xd0\x9a\x2a\x54\x12\x2b\x2a\xcd\xa1\x8b\x41\xe9\x2b\x0e\x88\ \xd2\xf1\x34\xe6\x9b\x82\x98\x76\xf8\xc3\xca\x91\xca\x96\xa3\xdd\ \x6b\x3f\xbc\xa3\xea\x68\xa7\xda\x2a\xe2\x42\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x0f\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x08\x01\x81\xe7\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/itemviews/README0000644000076500000240000000154412613140041017764 0ustar philstaff00000000000000Item views are widgets that typically display data sets. PyQt's model/view framework lets you handle large data sets by separating the underlying data from the way it is represented to the user, and provides support for customized rendering through the use of delegates. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/itemviews/simpledommodel.py0000755000076500000240000001557312613140041022502 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QAbstractItemModel, QFile, QIODevice, QModelIndex, Qt from PyQt5.QtWidgets import QApplication, QFileDialog, QMainWindow, QTreeView from PyQt5.QtXml import QDomDocument class DomItem(object): def __init__(self, node, row, parent=None): self.domNode = node # Record the item's location within its parent. self.rowNumber = row self.parentItem = parent self.childItems = {} def node(self): return self.domNode def parent(self): return self.parentItem def child(self, i): if i in self.childItems: return self.childItems[i] if i >= 0 and i < self.domNode.childNodes().count(): childNode = self.domNode.childNodes().item(i) childItem = DomItem(childNode, i, self) self.childItems[i] = childItem return childItem return None def row(self): return self.rowNumber class DomModel(QAbstractItemModel): def __init__(self, document, parent=None): super(DomModel, self).__init__(parent) self.domDocument = document self.rootItem = DomItem(self.domDocument, 0) def columnCount(self, parent): return 3 def data(self, index, role): if not index.isValid(): return None if role != Qt.DisplayRole: return None item = index.internalPointer() node = item.node() attributes = [] attributeMap = node.attributes() if index.column() == 0: return node.nodeName() elif index.column() == 1: for i in range(0, attributeMap.count()): attribute = attributeMap.item(i) attributes.append(attribute.nodeName() + '="' + attribute.nodeValue() + '"') return " ".join(attributes) if index.column() == 2: value = node.nodeValue() if value is None: return '' return ' '.join(node.nodeValue().split('\n')) return None def flags(self, index): if not index.isValid(): return Qt.NoItemFlags return Qt.ItemIsEnabled | Qt.ItemIsSelectable def headerData(self, section, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: if section == 0: return "Name" if section == 1: return "Attributes" if section == 2: return "Value" return None def index(self, row, column, parent): if not self.hasIndex(row, column, parent): return QModelIndex() if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QModelIndex() def parent(self, child): if not child.isValid(): return QModelIndex() childItem = child.internalPointer() parentItem = childItem.parent() if not parentItem or parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.row(), 0, parentItem) def rowCount(self, parent): if parent.column() > 0: return 0 if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() return parentItem.node().childNodes().count() class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction("&Open...", self.openFile, "Ctrl+O") self.fileMenu.addAction("E&xit", self.close, "Ctrl+Q") self.xmlPath = "" self.model = DomModel(QDomDocument(), self) self.view = QTreeView(self) self.view.setModel(self.model) self.setCentralWidget(self.view) self.setWindowTitle("Simple DOM Model") def openFile(self): filePath, _ = QFileDialog.getOpenFileName(self, "Open File", self.xmlPath, "XML files (*.xml);;HTML files (*.html);;" "SVG files (*.svg);;User Interface files (*.ui)") if filePath: f = QFile(filePath) if f.open(QIODevice.ReadOnly): document = QDomDocument() if document.setContent(f): newModel = DomModel(document, self) self.view.setModel(newModel) self.model = newModel self.xmlPath = filePath f.close() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 480) window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/simpletreemodel/0000755000076500000240000000000012613140041022272 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/simpletreemodel/default.txt0000644000076500000240000000367112613140041024466 0ustar philstaff00000000000000Getting 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 PyQt-gpl-5.5.1/examples/itemviews/simpletreemodel/simpletreemodel.py0000755000076500000240000001471312613140041026047 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QAbstractItemModel, QFile, QIODevice, QModelIndex, Qt from PyQt5.QtWidgets import QApplication, QTreeView import simpletreemodel_rc class TreeItem(object): def __init__(self, data, parent=None): self.parentItem = parent self.itemData = data self.childItems = [] def appendChild(self, item): self.childItems.append(item) def child(self, row): return self.childItems[row] def childCount(self): return len(self.childItems) def columnCount(self): return len(self.itemData) def data(self, column): try: return self.itemData[column] except IndexError: return None def parent(self): return self.parentItem def row(self): if self.parentItem: return self.parentItem.childItems.index(self) return 0 class TreeModel(QAbstractItemModel): def __init__(self, data, parent=None): super(TreeModel, self).__init__(parent) self.rootItem = TreeItem(("Title", "Summary")) self.setupModelData(data.split('\n'), self.rootItem) def columnCount(self, parent): if parent.isValid(): return parent.internalPointer().columnCount() else: return self.rootItem.columnCount() def data(self, index, role): if not index.isValid(): return None if role != Qt.DisplayRole: return None item = index.internalPointer() return item.data(index.column()) def flags(self, index): if not index.isValid(): return Qt.NoItemFlags return Qt.ItemIsEnabled | Qt.ItemIsSelectable def headerData(self, section, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.rootItem.data(section) return None def index(self, row, column, parent): if not self.hasIndex(row, column, parent): return QModelIndex() if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QModelIndex() def parent(self, index): if not index.isValid(): return QModelIndex() childItem = index.internalPointer() parentItem = childItem.parent() if parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.row(), 0, parentItem) def rowCount(self, parent): if parent.column() > 0: return 0 if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() return parentItem.childCount() def setupModelData(self, lines, parent): parents = [parent] indentations = [0] number = 0 while number < len(lines): position = 0 while position < len(lines[number]): if lines[number][position] != ' ': break position += 1 lineData = lines[number][position:].trimmed() if lineData: # Read the column data from the rest of the line. columnData = [s for s in lineData.split('\t') if s] if position > indentations[-1]: # The last child of the current parent is now the new # parent unless the current parent has no children. if parents[-1].childCount() > 0: parents.append(parents[-1].child(parents[-1].childCount() - 1)) indentations.append(position) else: while position < indentations[-1] and len(parents) > 0: parents.pop() indentations.pop() # Append a new item to the current parent's list of children. parents[-1].appendChild(TreeItem(columnData, parents[-1])) number += 1 if __name__ == '__main__': import sys app = QApplication(sys.argv) f = QFile(':/default.txt') f.open(QIODevice.ReadOnly) model = TreeModel(f.readAll()) f.close() view = QTreeView() view.setModel(model) view.setWindowTitle("Simple Tree Model") view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/simpletreemodel/simpletreemodel.qrc0000644000076500000240000000013612613140041026173 0ustar philstaff00000000000000 default.txt PyQt-gpl-5.5.1/examples/itemviews/simpletreemodel/simpletreemodel_rc.py0000644000076500000240000002141612613140041026526 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 16:25:25 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x07\xb9\ \x47\ \x65\x74\x74\x69\x6e\x67\x20\x53\x74\x61\x72\x74\x65\x64\x09\x09\ \x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x66\x61\x6d\x69\x6c\x69\x61\ \x72\x69\x7a\x65\x20\x79\x6f\x75\x72\x73\x65\x6c\x66\x20\x77\x69\ \x74\x68\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\ \x20\x20\x20\x4c\x61\x75\x6e\x63\x68\x69\x6e\x67\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x09\x09\x09\x52\x75\x6e\x6e\x69\x6e\x67\x20\ \x74\x68\x65\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x20\ \x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\ \x54\x68\x65\x20\x55\x73\x65\x72\x20\x49\x6e\x74\x65\x72\x66\x61\ \x63\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x69\x6e\x74\x65\ \x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x51\x74\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x0a\x0a\x44\x65\x73\x69\x67\x6e\x69\x6e\x67\ \x20\x61\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x09\x09\x09\x43\ \x72\x65\x61\x74\x69\x6e\x67\x20\x61\x20\x47\x55\x49\x20\x66\x6f\ \x72\x20\x79\x6f\x75\x72\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\ \x6f\x6e\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\x20\ \x61\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x09\x48\x6f\x77\x20\x74\ \x6f\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x64\x69\x61\x6c\x6f\ \x67\x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x73\x69\x6e\x67\x20\ \x74\x68\x65\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x50\x75\x74\x74\ \x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\x74\x6f\ \x20\x74\x68\x65\x20\x64\x69\x61\x6c\x6f\x67\x20\x65\x78\x61\x6d\ \x70\x6c\x65\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\ \x20\x61\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\ \x20\x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x53\x69\x67\x6e\ \x61\x6c\x20\x61\x6e\x64\x20\x53\x6c\x6f\x74\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x4d\x61\x6b\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x20\x63\x6f\x6d\x6d\x75\x6e\x69\x63\x61\ \x74\x65\x20\x77\x69\x74\x68\x20\x65\x61\x63\x68\x20\x6f\x74\x68\ \x65\x72\x0a\x0a\x55\x73\x69\x6e\x67\x20\x61\x20\x43\x6f\x6d\x70\ \x6f\x6e\x65\x6e\x74\x20\x69\x6e\x20\x59\x6f\x75\x72\x20\x41\x70\ \x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x09\x47\x65\x6e\x65\x72\x61\ \x74\x69\x6e\x67\x20\x63\x6f\x64\x65\x20\x66\x72\x6f\x6d\x20\x66\ \x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x44\x69\x72\ \x65\x63\x74\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x09\x09\x55\ \x73\x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x20\x77\x69\x74\x68\ \x6f\x75\x74\x20\x61\x6e\x79\x20\x61\x64\x6a\x75\x73\x74\x6d\x65\ \x6e\x74\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x53\x69\x6e\x67\ \x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\x61\x6e\x63\x65\x20\x41\ \x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\x62\x63\x6c\x61\x73\x73\ \x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x27\x73\x20\x62\x61\x73\ \x65\x20\x63\x6c\x61\x73\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\ \x4d\x75\x6c\x74\x69\x70\x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\ \x61\x6e\x63\x65\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\ \x62\x63\x6c\x61\x73\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x66\x6f\ \x72\x6d\x20\x69\x74\x73\x65\x6c\x66\x0a\x20\x20\x20\x20\x41\x75\ \x74\x6f\x6d\x61\x74\x69\x63\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x73\x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x73\x20\x75\x73\x69\x6e\x67\x20\x61\x20\ \x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\x6c\x6f\x67\x20\x57\ \x69\x74\x68\x6f\x75\x74\x20\x41\x75\x74\x6f\x2d\x43\x6f\x6e\x6e\ \x65\x63\x74\x09\x48\x6f\x77\x20\x74\x6f\x20\x63\x6f\x6e\x6e\x65\ \x63\x74\x20\x77\x69\x64\x67\x65\x74\x73\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x61\x20\x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\ \x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\ \x6c\x6f\x67\x20\x57\x69\x74\x68\x20\x41\x75\x74\x6f\x2d\x43\x6f\ \x6e\x6e\x65\x63\x74\x09\x55\x73\x69\x6e\x67\x20\x61\x75\x74\x6f\ \x6d\x61\x74\x69\x63\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\ \x73\x0a\x0a\x46\x6f\x72\x6d\x20\x45\x64\x69\x74\x69\x6e\x67\x20\ \x4d\x6f\x64\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x65\x64\ \x69\x74\x20\x61\x20\x66\x6f\x72\x6d\x20\x69\x6e\x20\x51\x74\x20\ \x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\x20\x20\x20\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\x09\x4c\x6f\ \x61\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x73\x61\x76\x69\x6e\x67\ \x20\x66\x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x45\x64\x69\x74\x69\ \x6e\x67\x20\x61\x20\x46\x6f\x72\x6d\x09\x09\x09\x42\x61\x73\x69\ \x63\x20\x65\x64\x69\x74\x69\x6e\x67\x20\x74\x65\x63\x68\x6e\x69\ \x71\x75\x65\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x50\x72\x6f\ \x70\x65\x72\x74\x79\x20\x45\x64\x69\x74\x6f\x72\x09\x09\x09\x43\ \x68\x61\x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x20\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x0a\x20\x20\x20\x20\x54\x68\ \x65\x20\x4f\x62\x6a\x65\x63\x74\x20\x49\x6e\x73\x70\x65\x63\x74\ \x6f\x72\x09\x09\x45\x78\x61\x6d\x69\x6e\x69\x6e\x67\x20\x74\x68\ \x65\x20\x68\x69\x65\x72\x61\x72\x63\x68\x79\x20\x6f\x66\x20\x6f\ \x62\x6a\x65\x63\x74\x73\x20\x6f\x6e\x20\x61\x20\x66\x6f\x72\x6d\ \x0a\x20\x20\x20\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x09\x09\x09\ \x4f\x62\x6a\x65\x63\x74\x73\x20\x74\x68\x61\x74\x20\x61\x72\x72\ \x61\x6e\x67\x65\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\x20\ \x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\ \x70\x70\x6c\x79\x69\x6e\x67\x20\x61\x6e\x64\x20\x42\x72\x65\x61\ \x6b\x69\x6e\x67\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x6c\x61\x79\x6f\x75\x74\x73\x20\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x48\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x20\x61\x6e\x64\ \x20\x56\x65\x72\x74\x69\x63\x61\x6c\x20\x4c\x61\x79\x6f\x75\x74\ \x73\x09\x53\x74\x61\x6e\x64\x61\x72\x64\x20\x72\x6f\x77\x20\x61\ \x6e\x64\x20\x63\x6f\x6c\x75\x6d\x6e\x20\x6c\x61\x79\x6f\x75\x74\ \x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x47\x72\ \x69\x64\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x61\x20\x6d\x61\x74\x72\x69\x78\x0a\x20\x20\x20\x20\x50\x72\ \x65\x76\x69\x65\x77\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\ \x09\x43\x68\x65\x63\x6b\x69\x6e\x67\x20\x74\x68\x61\x74\x20\x74\ \x68\x65\x20\x64\x65\x73\x69\x67\x6e\x20\x77\x6f\x72\x6b\x73\x0a\ \x0a\x55\x73\x69\x6e\x67\x20\x43\x6f\x6e\x74\x61\x69\x6e\x65\x72\ \x73\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x67\x72\x6f\x75\x70\ \x20\x77\x69\x64\x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\ \x72\x0a\x20\x20\x20\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x46\x65\ \x61\x74\x75\x72\x65\x73\x09\x09\x09\x43\x6f\x6d\x6d\x6f\x6e\x20\ \x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x20\x66\x65\x61\x74\x75\x72\ \x65\x73\x0a\x20\x20\x20\x20\x46\x72\x61\x6d\x65\x73\x09\x09\x09\ \x09\x51\x46\x72\x61\x6d\x65\x0a\x20\x20\x20\x20\x47\x72\x6f\x75\ \x70\x20\x42\x6f\x78\x65\x73\x09\x09\x09\x09\x51\x47\x72\x6f\x75\ \x70\x42\x6f\x78\x0a\x20\x20\x20\x20\x53\x74\x61\x63\x6b\x65\x64\ \x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x53\x74\x61\x63\ \x6b\x65\x64\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x61\ \x62\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x09\x51\x54\x61\ \x62\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x6f\x6f\x6c\ \x62\x6f\x78\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x54\ \x6f\x6f\x6c\x42\x6f\x78\x0a\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x4d\x6f\x64\x65\x09\ \x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\x77\x69\x64\ \x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\x72\x20\x77\x69\ \x74\x68\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x61\x6e\x64\x20\x73\ \x6c\x6f\x74\x73\x0a\x20\x20\x20\x20\x43\x6f\x6e\x6e\x65\x63\x74\ \x69\x6e\x67\x20\x4f\x62\x6a\x65\x63\x74\x73\x09\x09\x09\x4d\x61\ \x6b\x69\x6e\x67\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\ \x20\x69\x6e\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\ \x20\x20\x20\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x09\x43\x68\x61\x6e\x67\x69\ \x6e\x67\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x63\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x0a\ " qt_resource_name = b"\ \x00\x0b\ \x0c\xe2\x22\xf4\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x74\x00\x78\x00\x74\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/itemviews/simplewidgetmapper.py0000755000076500000240000001210212613140041023353 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtGui import QStandardItem, QStandardItemModel from PyQt5.QtWidgets import (QApplication, QDataWidgetMapper, QGridLayout, QLabel, QLineEdit, QPushButton, QSpinBox, QTextEdit, QWidget) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) # Set up the model. self.setupModel() # Set up the widgets. nameLabel = QLabel("Na&me:") nameEdit = QLineEdit() addressLabel = QLabel("&Address:") addressEdit = QTextEdit() ageLabel = QLabel("A&ge (in years):") ageSpinBox = QSpinBox() self.nextButton = QPushButton("&Next") self.previousButton = QPushButton("&Previous") nameLabel.setBuddy(nameEdit) addressLabel.setBuddy(addressEdit) ageLabel.setBuddy(ageSpinBox) # Set up the mapper. self.mapper = QDataWidgetMapper(self) self.mapper.setModel(self.model) self.mapper.addMapping(nameEdit, 0) self.mapper.addMapping(addressEdit, 1) self.mapper.addMapping(ageSpinBox, 2) # Set up connections and layouts. self.previousButton.clicked.connect(self.mapper.toPrevious) self.nextButton.clicked.connect(self.mapper.toNext) self.mapper.currentIndexChanged.connect(self.updateButtons) layout = QGridLayout() layout.addWidget(nameLabel, 0, 0, 1, 1) layout.addWidget(nameEdit, 0, 1, 1, 1) layout.addWidget(self.previousButton, 0, 2, 1, 1) layout.addWidget(addressLabel, 1, 0, 1, 1) layout.addWidget(addressEdit, 1, 1, 2, 1) layout.addWidget(self.nextButton, 1, 2, 1, 1) layout.addWidget(ageLabel, 3, 0, 1, 1) layout.addWidget(ageSpinBox, 3, 1, 1, 1) self.setLayout(layout) self.setWindowTitle("Simple Widget Mapper") self.mapper.toFirst() def setupModel(self): self.model = QStandardItemModel(5, 3, self) names = ("Alice", "Bob", "Carol", "Donald", "Emma") addresses = ("123 Main Street
    Market Town
    ", "PO Box 32
    Mail Handling Service" "
    Service City
    ", "The Lighthouse
    Remote Island
    ", "47338 Park Avenue
    Big City
    ", "Research Station
    Base Camp
    Big Mountain
    ") ages = ("20", "31", "32", "19", "26") for row, name in enumerate(names): item = QStandardItem(name) self.model.setItem(row, 0, item) item = QStandardItem(addresses[row]) self.model.setItem(row, 1, item) item = QStandardItem(ages[row]) self.model.setItem(row, 2, item) def updateButtons(self, row): self.previousButton.setEnabled(row > 0) self.nextButton.setEnabled(row < self.model.rowCount() - 1) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/spinboxdelegate.py0000755000076500000240000000643112613140041022636 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QModelIndex, Qt from PyQt5.QtGui import QStandardItemModel from PyQt5.QtWidgets import QApplication, QItemDelegate, QSpinBox, QTableView class SpinBoxDelegate(QItemDelegate): def createEditor(self, parent, option, index): editor = QSpinBox(parent) editor.setMinimum(0) editor.setMaximum(100) return editor def setEditorData(self, spinBox, index): value = index.model().data(index, Qt.EditRole) spinBox.setValue(value) def setModelData(self, spinBox, model, index): spinBox.interpretText() value = spinBox.value() model.setData(index, value, Qt.EditRole) def updateEditorGeometry(self, editor, option, index): editor.setGeometry(option.rect) if __name__ == '__main__': import sys app = QApplication(sys.argv) model = QStandardItemModel(4, 2) tableView = QTableView() tableView.setModel(model) delegate = SpinBoxDelegate() tableView.setItemDelegate(delegate) for row in range(4): for column in range(2): index = model.index(row, column, QModelIndex()) model.setData(index, (row + 1) * (column + 1)) tableView.setWindowTitle("Spin Box Delegate") tableView.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/0000755000076500000240000000000012613140041021407 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/images/0000755000076500000240000000000012613140041022654 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/images/interview.png0000644000076500000240000000025612613140041025401 0ustar philstaff00000000000000‰PNG  IHDRíÝâRPLTEÀÀÀÀÀÀÀÀÀÿÿÿc4‹`tRNS c”³KIDATx^=ŠÁ À0 ‰º‹=@T³ÿL§ tæAò‰XÌ| -¨P–ÀjcŸ©ÚìÒ¨¥@\VüjþG ¸.P9ÞñeøIØdúe™IEND®B`‚PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/printview.py0000644000076500000240000000423212613140041024011 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QTableView class PrintView(QTableView): def __init__(self): super(PrintView, self).__init__() self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) def print_(self, printer): self.resize(printer.width(), printer.height()) self.render(printer) PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/spreadsheet.py0000644000076500000240000005430212613140041024274 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, QPoint, Qt from PyQt5.QtGui import QColor, QIcon, QKeySequence, QPainter, QPixmap from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QColorDialog, QComboBox, QDialog, QFontDialog, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QMainWindow, QMessageBox, QPushButton, QTableWidget, QTableWidgetItem, QToolBar, QVBoxLayout) from PyQt5.QtPrintSupport import QPrinter, QPrintPreviewDialog import spreadsheet_rc from spreadsheetdelegate import SpreadSheetDelegate from spreadsheetitem import SpreadSheetItem from printview import PrintView from util import decode_pos, encode_pos class SpreadSheet(QMainWindow): dateFormats = ["dd/M/yyyy", "yyyy/M/dd", "dd.MM.yyyy"] currentDateFormat = dateFormats[0] def __init__(self, rows, cols, parent = None): super(SpreadSheet, self).__init__(parent) self.toolBar = QToolBar() self.addToolBar(self.toolBar) self.formulaInput = QLineEdit() self.cellLabel = QLabel(self.toolBar) self.cellLabel.setMinimumSize(80, 0) self.toolBar.addWidget(self.cellLabel) self.toolBar.addWidget(self.formulaInput) self.table = QTableWidget(rows, cols, self) 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)) self.createActions() self.updateColor(0) self.setupMenuBar() self.setupContents() self.setupContextMenu() self.setCentralWidget(self.table) self.statusBar() self.table.currentItemChanged.connect(self.updateStatus) self.table.currentItemChanged.connect(self.updateColor) self.table.currentItemChanged.connect(self.updateLineEdit) self.table.itemChanged.connect(self.updateStatus) self.formulaInput.returnPressed.connect(self.returnPressed) self.table.itemChanged.connect(self.updateLineEdit) self.setWindowTitle("Spreadsheet") def createActions(self): self.cell_sumAction = QAction("Sum", self) self.cell_sumAction.triggered.connect(self.actionSum) self.cell_addAction = QAction("&Add", self) self.cell_addAction.setShortcut(Qt.CTRL | Qt.Key_Plus) self.cell_addAction.triggered.connect(self.actionAdd) self.cell_subAction = QAction("&Subtract", self) self.cell_subAction.setShortcut(Qt.CTRL | Qt.Key_Minus) self.cell_subAction.triggered.connect(self.actionSubtract) self.cell_mulAction = QAction("&Multiply", self) self.cell_mulAction.setShortcut(Qt.CTRL | Qt.Key_multiply) self.cell_mulAction.triggered.connect(self.actionMultiply) self.cell_divAction = QAction("&Divide", self) self.cell_divAction.setShortcut(Qt.CTRL | Qt.Key_division) self.cell_divAction.triggered.connect(self.actionDivide) self.fontAction = QAction("Font...", self) self.fontAction.setShortcut(Qt.CTRL | Qt.Key_F) self.fontAction.triggered.connect(self.selectFont) self.colorAction = QAction(QIcon(QPixmap(16, 16)), "Background &Color...", self) self.colorAction.triggered.connect(self.selectColor) self.clearAction = QAction("Clear", self) self.clearAction.setShortcut(Qt.Key_Delete) self.clearAction.triggered.connect(self.clear) self.aboutSpreadSheet = QAction("About Spreadsheet", self) self.aboutSpreadSheet.triggered.connect(self.showAbout) self.exitAction = QAction("E&xit", self) self.exitAction.setShortcut(QKeySequence.Quit) self.exitAction.triggered.connect(QApplication.instance().quit) self.printAction = QAction("&Print", self) self.printAction.setShortcut(QKeySequence.Print) self.printAction.triggered.connect(self.print_) self.firstSeparator = QAction(self) self.firstSeparator.setSeparator(True) self.secondSeparator = QAction(self) self.secondSeparator.setSeparator(True) def setupMenuBar(self): self.fileMenu = self.menuBar().addMenu("&File") self.dateFormatMenu = self.fileMenu.addMenu("&Date format") self.dateFormatGroup = QActionGroup(self) for f in self.dateFormats: action = QAction(f, self, checkable=True, triggered=self.changeDateFormat) self.dateFormatGroup.addAction(action) self.dateFormatMenu.addAction(action) if f == self.currentDateFormat: action.setChecked(True) self.fileMenu.addAction(self.printAction) self.fileMenu.addAction(self.exitAction) self.cellMenu = self.menuBar().addMenu("&Cell") self.cellMenu.addAction(self.cell_addAction) self.cellMenu.addAction(self.cell_subAction) self.cellMenu.addAction(self.cell_mulAction) self.cellMenu.addAction(self.cell_divAction) self.cellMenu.addAction(self.cell_sumAction) self.cellMenu.addSeparator() self.cellMenu.addAction(self.colorAction) self.cellMenu.addAction(self.fontAction) self.menuBar().addSeparator() self.aboutMenu = self.menuBar().addMenu("&Help") self.aboutMenu.addAction(self.aboutSpreadSheet) def changeDateFormat(self): action = self.sender() oldFormat = self.currentDateFormat newFormat = self.currentDateFormat = action.text() for row in range(self.table.rowCount()): item = self.table.item(row, 1) date = QDate.fromString(item.text(), oldFormat) item.setText(date.toString(newFormat)) def updateStatus(self, item): if item and item == self.table.currentItem(): self.statusBar().showMessage(item.data(Qt.StatusTipRole), 1000) self.cellLabel.setText("Cell: (%s)" % encode_pos(self.table.row(item), self.table.column(item))) def updateColor(self, item): pixmap = QPixmap(16, 16) color = QColor() if item: color = item.backgroundColor() if not color.isValid(): color = self.palette().base().color() painter = QPainter(pixmap) painter.fillRect(0, 0, 16, 16, color) lighter = color.lighter() painter.setPen(lighter) # light frame painter.drawPolyline(QPoint(0, 15), QPoint(0, 0), QPoint(15, 0)) painter.setPen(color.darker()) # dark frame painter.drawPolyline(QPoint(1, 15), QPoint(15, 15), QPoint(15, 1)) painter.end() self.colorAction.setIcon(QIcon(pixmap)) def updateLineEdit(self, item): if item != self.table.currentItem(): return if item: self.formulaInput.setText(item.data(Qt.EditRole)) else: self.formulaInput.clear() def returnPressed(self): text = self.formulaInput.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() def selectColor(self): item = self.table.currentItem() color = item and QColor(item.background()) or self.table.palette().base().color() color = QColorDialog.getColor(color, self) if not color.isValid(): return selected = self.table.selectedItems() if not selected: return for i in selected: i and i.setBackground(color) self.updateColor(self.table.currentItem()) def selectFont(self): selected = self.table.selectedItems() if not selected: return font, ok = QFontDialog.getFont(self.font(), self) if not ok: return for i in selected: i and i.setFont(font) def runInputDialog(self, title, c1Text, c2Text, opText, outText, cell1, cell2, outCell): rows = [] cols = [] for r in range(self.table.rowCount()): rows.append(str(r + 1)) for c in range(self.table.columnCount()): cols.append(chr(ord('A') + c)) addDialog = QDialog(self) addDialog.setWindowTitle(title) group = QGroupBox(title, addDialog) group.setMinimumSize(250, 100) cell1Label = QLabel(c1Text, group) cell1RowInput = QComboBox(group) c1Row, c1Col = decode_pos(cell1) cell1RowInput.addItems(rows) cell1RowInput.setCurrentIndex(c1Row) cell1ColInput = QComboBox(group) cell1ColInput.addItems(cols) cell1ColInput.setCurrentIndex(c1Col) operatorLabel = QLabel(opText, group) operatorLabel.setAlignment(Qt.AlignHCenter) cell2Label = QLabel(c2Text, group) cell2RowInput = QComboBox(group) c2Row, c2Col = decode_pos(cell2) cell2RowInput.addItems(rows) cell2RowInput.setCurrentIndex(c2Row) cell2ColInput = QComboBox(group) cell2ColInput.addItems(cols) cell2ColInput.setCurrentIndex(c2Col) equalsLabel = QLabel("=", group) equalsLabel.setAlignment(Qt.AlignHCenter) outLabel = QLabel(outText, group) outRowInput = QComboBox(group) outRow, outCol = decode_pos(outCell) outRowInput.addItems(rows) outRowInput.setCurrentIndex(outRow) outColInput = QComboBox(group) outColInput.addItems(cols) outColInput.setCurrentIndex(outCol) cancelButton = QPushButton("Cancel", addDialog) cancelButton.clicked.connect(addDialog.reject) okButton = QPushButton("OK", addDialog) okButton.setDefault(True) okButton.clicked.connect(addDialog.accept) buttonsLayout = QHBoxLayout() buttonsLayout.addStretch(1) buttonsLayout.addWidget(okButton) buttonsLayout.addSpacing(10) buttonsLayout.addWidget(cancelButton) dialogLayout = QVBoxLayout(addDialog) dialogLayout.addWidget(group) dialogLayout.addStretch(1) dialogLayout.addItem(buttonsLayout) cell1Layout = QHBoxLayout() cell1Layout.addWidget(cell1Label) cell1Layout.addSpacing(10) cell1Layout.addWidget(cell1ColInput) cell1Layout.addSpacing(10) cell1Layout.addWidget(cell1RowInput) cell2Layout = QHBoxLayout() cell2Layout.addWidget(cell2Label) cell2Layout.addSpacing(10) cell2Layout.addWidget(cell2ColInput) cell2Layout.addSpacing(10) cell2Layout.addWidget(cell2RowInput) outLayout = QHBoxLayout() outLayout.addWidget(outLabel) outLayout.addSpacing(10) outLayout.addWidget(outColInput) outLayout.addSpacing(10) outLayout.addWidget(outRowInput) vLayout = QVBoxLayout(group) vLayout.addItem(cell1Layout) vLayout.addWidget(operatorLabel) vLayout.addItem(cell2Layout) vLayout.addWidget(equalsLabel) vLayout.addStretch(1) vLayout.addItem(outLayout) if addDialog.exec_(): cell1 = cell1ColInput.currentText() + cell1RowInput.currentText() cell2 = cell2ColInput.currentText() + cell2RowInput.currentText() outCell = outColInput.currentText() + outRowInput.currentText() return True, cell1, cell2, outCell return False, None, None, None def actionSum(self): row_first = 0 row_last = 0 row_cur = 0 col_first = 0 col_last = 0 col_cur = 0 selected = self.table.selectedItems() if selected: 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 = encode_pos(row_first, col_first) cell2 = encode_pos(row_last, col_last) out = encode_pos(row_cur, col_cur) ok, cell1, cell2, out = self.runInputDialog("Sum cells", "First cell:", "Last cell:", u"\N{GREEK CAPITAL LETTER SIGMA}", "Output to:", cell1, cell2, out) if ok: row, col = decode_pos(out) self.table.item(row, col).setText("sum %s %s" % (cell1, cell2)) def actionMath_helper(self, title, op): cell1 = "C1" cell2 = "C2" out = "C3" current = self.table.currentItem() if current: out = encode_pos(self.table.currentRow(), self.table.currentColumn()) ok, cell1, cell2, out = self.runInputDialog(title, "Cell 1", "Cell 2", op, "Output to:", cell1, cell2, out) if ok: row, col = decode_pos(out) self.table.item(row, col).setText("%s %s %s" % (op, cell1, cell2)) def actionAdd(self): self.actionMath_helper("Addition", "+") def actionSubtract(self): self.actionMath_helper("Subtraction", "-") def actionMultiply(self): self.actionMath_helper("Multiplication", "*") def actionDivide(self): self.actionMath_helper("Division", "/") def clear(self): for i in self.table.selectedItems(): i.setText("") def setupContextMenu(self): self.addAction(self.cell_addAction) self.addAction(self.cell_subAction) self.addAction(self.cell_mulAction) self.addAction(self.cell_divAction) self.addAction(self.cell_sumAction) self.addAction(self.firstSeparator) self.addAction(self.colorAction) self.addAction(self.fontAction) self.addAction(self.secondSeparator) self.addAction(self.clearAction) self.setContextMenuPolicy(Qt.ActionsContextMenu) def setupContents(self): titleBackground = QColor(Qt.lightGray) titleFont = self.table.font() titleFont.setBold(True) # column 0 self.table.setItem(0, 0, SpreadSheetItem("Item")) self.table.item(0, 0).setBackground(titleBackground) self.table.item(0, 0).setToolTip("This column shows the purchased item/service") self.table.item(0, 0).setFont(titleFont) 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(titleFont) self.table.item(9, 0).setBackground(Qt.lightGray) # column 1 self.table.setItem(0, 1, SpreadSheetItem("Date")) self.table.item(0, 1).setBackground(titleBackground) self.table.item(0, 1).setToolTip("This column shows the purchase date, double click to change") self.table.item(0, 1).setFont(titleFont) 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(Qt.lightGray) # column 2 self.table.setItem(0, 2, SpreadSheetItem("Price")) self.table.item(0, 2).setBackground(titleBackground) self.table.item(0, 2).setToolTip("This column shows the price of the purchase") self.table.item(0, 2).setFont(titleFont) 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).setBackgroundColor(titleBackground) self.table.item(0, 3).setToolTip("This column shows the currency") self.table.item(0, 3).setFont(titleFont) 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(titleBackground) self.table.item(0, 4).setToolTip("This column shows the exchange rate to NOK") self.table.item(0, 4).setFont(titleFont) 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(Qt.lightGray) # column 5 self.table.setItem(0, 5, SpreadSheetItem("NOK")) self.table.item(0, 5).setBackground(titleBackground) self.table.item(0, 5).setToolTip("This column shows the expenses in NOK") self.table.item(0, 5).setFont(titleFont) 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(Qt.lightGray) def showAbout(self): QMessageBox.about(self, "About Spreadsheet", """

    This demo shows use of QTableWidget with custom handling for individual cells.

    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:

    • Adding two cells.
    • Subtracting one cell from another.
    • Multiplying two cells.
    • Dividing one cell with another.
    • Summing the contents of an arbitrary number of cells.
    • """) def print_(self): printer = QPrinter(QPrinter.ScreenResolution) dlg = QPrintPreviewDialog(printer) view = PrintView() view.setModel(self.table.model()) dlg.paintRequested.connect(view.print_) dlg.exec_() if __name__ == '__main__': import sys app = QApplication(sys.argv) sheet = SpreadSheet(10, 6) sheet.setWindowIcon(QIcon(QPixmap(":/images/interview.png"))) sheet.resize(640, 420) sheet.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/spreadsheet.qrc0000644000076500000240000000016012613140041024422 0ustar philstaff00000000000000 images/interview.png PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/spreadsheet_rc.py0000644000076500000240000000323212613140041024754 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 17:17:52 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\xae\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x10\x00\x00\x00\x10\x04\x03\x00\x00\x00\xed\xdd\xe2\x52\ \x00\x00\x00\x0f\x50\x4c\x54\x45\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\ \xc0\xff\xff\xff\x00\x00\x00\x63\x34\x8b\x60\x00\x00\x00\x03\x74\ \x52\x4e\x53\x00\x01\x02\x0d\x63\x94\xb3\x00\x00\x00\x4b\x49\x44\ \x41\x54\x78\x5e\x3d\x8a\xc1\x0d\xc0\x30\x0c\x02\x1d\x89\x01\xba\ \x8b\x3d\x40\x54\xb3\xff\x4c\x05\xa7\x0a\x0f\x74\xe6\x1c\x41\xf2\ \x89\x58\x81\xcc\x7c\x0d\x2d\xa8\x50\x06\x96\xc0\x6a\x63\x9f\xa9\ \xda\x12\xec\xd2\xa8\xa5\x40\x03\x5c\x56\x06\xfc\x6a\xfe\x47\x0d\ \xb8\x2e\x50\x39\xde\xf1\x65\xf8\x00\x49\xd8\x14\x02\x64\xfa\x65\ \x99\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0d\ \x0f\x7f\xc5\x07\ \x00\x69\ \x00\x6e\x00\x74\x00\x65\x00\x72\x00\x76\x00\x69\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/spreadsheetdelegate.py0000644000076500000240000000706012613140041025766 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, Qt from PyQt5.QtWidgets import QCompleter, QDateTimeEdit, QItemDelegate, QLineEdit class SpreadSheetDelegate(QItemDelegate): def __init__(self, parent = None): super(SpreadSheetDelegate, self).__init__(parent) def createEditor(self, parent, styleOption, index): if index.column() == 1: editor = QDateTimeEdit(parent) editor.setDisplayFormat(self.parent().currentDateFormat) editor.setCalendarPopup(True) return editor editor = QLineEdit(parent) # create a completer with the strings in the column as model allStrings = [] for i in range(1, index.model().rowCount()): strItem = index.model().data(index.sibling(i, index.column()), Qt.EditRole) if strItem not in allStrings: allStrings.append(strItem) autoComplete = QCompleter(allStrings) editor.setCompleter(autoComplete) editor.editingFinished.connect(self.commitAndCloseEditor) return editor def commitAndCloseEditor(self): editor = self.sender() self.commitData.emit(editor) self.closeEditor.emit(editor, QItemDelegate.NoHint) def setEditorData(self, editor, index): if isinstance(editor, QLineEdit): editor.setText(index.model().data(index, Qt.EditRole)) elif isinstance(editor, QDateTimeEdit): editor.setDate(QDate.fromString( index.model().data(index, Qt.EditRole), self.parent().currentDateFormat)) def setModelData(self, editor, model, index): if isinstance(editor, QLineEdit): model.setData(index, editor.text()) elif isinstance(editor, QDateTimeEdit): model.setData(index, editor.date().toString(self.parent().currentDateFormat)) PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/spreadsheetitem.py0000644000076500000240000001260612613140041025154 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QTableWidgetItem from util import decode_pos class SpreadSheetItem(QTableWidgetItem): def __init__(self, text=None): if text is not None: super(SpreadSheetItem, self).__init__(text) else: super(SpreadSheetItem, self).__init__() self.isResolving = False def clone(self): item = super(SpreadSheetItem, self).clone() item.isResolving = self.isResolving return item def formula(self): return super(SpreadSheetItem, self).data(Qt.DisplayRole) def data(self, role): if role in (Qt.EditRole, Qt.StatusTipRole): return self.formula() if role == Qt.DisplayRole: return self.display() t = str(self.display()) try: number = int(t) except ValueError: number = None if role == Qt.TextColorRole: if number is None: return QColor(Qt.black) elif number < 0: return QColor(Qt.red) return QColor(Qt.blue) if role == Qt.TextAlignmentRole: if t and (t[0].isdigit() or t[0] == '-'): return Qt.AlignRight | Qt.AlignVCenter return super(SpreadSheetItem, self).data(role) def setData(self, role, value): super(SpreadSheetItem, self).setData(role, value) if self.tableWidget(): self.tableWidget().viewport().update() def display(self): # avoid circular dependencies if self.isResolving: return None self.isResolving = True result = self.computeFormula(self.formula(), self.tableWidget()) self.isResolving = False return result def computeFormula(self, formula, widget): if formula is None: return None # check if the string is actually a formula or not slist = formula.split(' ') if not slist or not widget: # it is a normal string return formula op = slist[0].lower() firstRow = -1 firstCol = -1 secondRow = -1 secondCol = -1 if len(slist) > 1: firstRow, firstCol = decode_pos(slist[1]) if len(slist) > 2: secondRow, secondCol = decode_pos(slist[2]) start = widget.item(firstRow, firstCol) end = widget.item(secondRow, secondCol) firstVal = 0 try: firstVal = start and int(start.text()) or 0 except ValueError: pass secondVal = 0 try: secondVal = end and int(end.text()) or 0 except ValueError: pass result = None if op == "sum": sum_ = 0 for r in range(firstRow, secondRow + 1): for c in range(firstCol, secondCol + 1): tableItem = widget.item(r, c) if tableItem and tableItem != self: try: sum_ += int(tableItem.text()) except ValueError: pass result = sum_ elif op == "+": result = (firstVal + secondVal) elif op == "-": result = (firstVal - secondVal) elif op == "*": result = (firstVal * secondVal) elif op == "/": if secondVal == 0: result = "nan" else: result = (firstVal / secondVal) elif op == "=": if start: result = start.text() else: result = formula return result PyQt-gpl-5.5.1/examples/itemviews/spreadsheet/util.py0000644000076500000240000000371112613140041022740 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# def decode_pos(pos): try: row = int(pos[1:]) - 1 col = ord(pos[0]) - ord('A') except ValueError: row = -1 col = -1 return row, col def encode_pos(row, col): return chr(col + ord('A')) + str(row + 1) PyQt-gpl-5.5.1/examples/itemviews/stardelegate.py0000755000076500000240000002114312613140041022122 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import pyqtSignal, QPointF, QSize, Qt from PyQt5.QtGui import QPainter, QPolygonF from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QStyle, QStyledItemDelegate, QTableWidget, QTableWidgetItem, QWidget) class StarRating(object): # enum EditMode Editable, ReadOnly = range(2) PaintingScaleFactor = 20 def __init__(self, starCount=1, maxStarCount=5): self._starCount = starCount self._maxStarCount = maxStarCount self.starPolygon = QPolygonF([QPointF(1.0, 0.5)]) for i in range(5): self.starPolygon << QPointF(0.5 + 0.5 * math.cos(0.8 * i * math.pi), 0.5 + 0.5 * math.sin(0.8 * i * math.pi)) self.diamondPolygon = QPolygonF() self.diamondPolygon << 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) def starCount(self): return self._starCount def maxStarCount(self): return self._maxStarCount def setStarCount(self, starCount): self._starCount = starCount def setMaxStarCount(self, maxStarCount): self._maxStarCount = maxStarCount def sizeHint(self): return self.PaintingScaleFactor * QSize(self._maxStarCount, 1) def paint(self, painter, rect, palette, editMode): painter.save() painter.setRenderHint(QPainter.Antialiasing, True) painter.setPen(Qt.NoPen) if editMode == StarRating.Editable: painter.setBrush(palette.highlight()) else: painter.setBrush(palette.windowText()) yOffset = (rect.height() - self.PaintingScaleFactor) / 2 painter.translate(rect.x(), rect.y() + yOffset) painter.scale(self.PaintingScaleFactor, self.PaintingScaleFactor) for i in range(self._maxStarCount): if i < self._starCount: painter.drawPolygon(self.starPolygon, Qt.WindingFill) elif editMode == StarRating.Editable: painter.drawPolygon(self.diamondPolygon, Qt.WindingFill) painter.translate(1.0, 0.0) painter.restore() class StarEditor(QWidget): editingFinished = pyqtSignal() def __init__(self, parent = None): super(StarEditor, self).__init__(parent) self._starRating = StarRating() self.setMouseTracking(True) self.setAutoFillBackground(True) def setStarRating(self, starRating): self._starRating = starRating def starRating(self): return self._starRating def sizeHint(self): return self._starRating.sizeHint() def paintEvent(self, event): painter = QPainter(self) self._starRating.paint(painter, self.rect(), self.palette(), StarRating.Editable) def mouseMoveEvent(self, event): star = self.starAtPosition(event.x()) if star != self._starRating.starCount() and star != -1: self._starRating.setStarCount(star) self.update() def mouseReleaseEvent(self, event): self.editingFinished.emit() def starAtPosition(self, x): # Enable a star, if pointer crosses the center horizontally. starwidth = self._starRating.sizeHint().width() // self._starRating.maxStarCount() star = (x + starwidth / 2) // starwidth if 0 <= star <= self._starRating.maxStarCount(): return star return -1 class StarDelegate(QStyledItemDelegate): def paint(self, painter, option, index): starRating = index.data() if isinstance(starRating, StarRating): if option.state & QStyle.State_Selected: painter.fillRect(option.rect, option.palette.highlight()) starRating.paint(painter, option.rect, option.palette, StarRating.ReadOnly) else: super(StarDelegate, self).paint(painter, option, index) def sizeHint(self, option, index): starRating = index.data() if isinstance(starRating, StarRating): return starRating.sizeHint() else: return super(StarDelegate, self).sizeHint(option, index) def createEditor(self, parent, option, index): starRating = index.data() if isinstance(starRating, StarRating): editor = StarEditor(parent) editor.editingFinished.connect(self.commitAndCloseEditor) return editor else: return super(StarDelegate, self).createEditor(parent, option, index) def setEditorData(self, editor, index): starRating = index.data() if isinstance(starRating, StarRating): editor.setStarRating(starRating) else: super(StarDelegate, self).setEditorData(editor, index) def setModelData(self, editor, model, index): starRating = index.data() if isinstance(starRating, StarRating): model.setData(index, editor.starRating()) else: super(StarDelegate, self).setModelData(editor, model, index) def commitAndCloseEditor(self): editor = self.sender() self.commitData.emit(editor) self.closeEditor.emit(editor) def populateTableWidget(tableWidget): staticData = ( ("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 row, (title, genre, artist, rating) in enumerate(staticData): item0 = QTableWidgetItem(title) item1 = QTableWidgetItem(genre) item2 = QTableWidgetItem(artist) item3 = QTableWidgetItem() item3.setData(0, StarRating(rating)) tableWidget.setItem(row, 0, item0) tableWidget.setItem(row, 1, item1) tableWidget.setItem(row, 2, item2) tableWidget.setItem(row, 3, item3) if __name__ == '__main__': import sys app = QApplication(sys.argv) tableWidget = QTableWidget(4, 4) tableWidget.setItemDelegate(StarDelegate()) tableWidget.setEditTriggers( QAbstractItemView.DoubleClicked | QAbstractItemView.SelectedClicked) tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) headerLabels = ("Title", "Genre", "Artist", "Rating") tableWidget.setHorizontalHeaderLabels(headerLabels) populateTableWidget(tableWidget) tableWidget.resizeColumnsToContents() tableWidget.resize(500, 300) tableWidget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/layouts/0000755000076500000240000000000012613140041016564 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/layouts/basiclayouts.py0000755000076500000240000001164012613140041021645 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QDialogButtonBox, QFormLayout, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QSpinBox, QTextEdit, QVBoxLayout) class Dialog(QDialog): NumGridRows = 3 NumButtons = 4 def __init__(self): super(Dialog, self).__init__() self.createMenu() self.createHorizontalGroupBox() self.createGridGroupBox() self.createFormGroupBox() bigEditor = QTextEdit() bigEditor.setPlainText("This widget takes up all the remaining space " "in the top-level layout.") buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QVBoxLayout() mainLayout.setMenuBar(self.menuBar) mainLayout.addWidget(self.horizontalGroupBox) mainLayout.addWidget(self.gridGroupBox) mainLayout.addWidget(self.formGroupBox) mainLayout.addWidget(bigEditor) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Basic Layouts") def createMenu(self): self.menuBar = QMenuBar() self.fileMenu = QMenu("&File", self) self.exitAction = self.fileMenu.addAction("E&xit") self.menuBar.addMenu(self.fileMenu) self.exitAction.triggered.connect(self.accept) def createHorizontalGroupBox(self): self.horizontalGroupBox = QGroupBox("Horizontal layout") layout = QHBoxLayout() for i in range(Dialog.NumButtons): button = QPushButton("Button %d" % (i + 1)) layout.addWidget(button) self.horizontalGroupBox.setLayout(layout) def createGridGroupBox(self): self.gridGroupBox = QGroupBox("Grid layout") layout = QGridLayout() for i in range(Dialog.NumGridRows): label = QLabel("Line %d:" % (i + 1)) lineEdit = QLineEdit() layout.addWidget(label, i + 1, 0) layout.addWidget(lineEdit, i + 1, 1) self.smallEditor = QTextEdit() self.smallEditor.setPlainText("This widget takes up about two thirds " "of the grid layout.") layout.addWidget(self.smallEditor, 0, 2, 4, 1) layout.setColumnStretch(1, 10) layout.setColumnStretch(2, 20) self.gridGroupBox.setLayout(layout) def createFormGroupBox(self): self.formGroupBox = QGroupBox("Form layout") layout = QFormLayout() layout.addRow(QLabel("Line 1:"), QLineEdit()) layout.addRow(QLabel("Line 2, long text:"), QComboBox()) layout.addRow(QLabel("Line 3:"), QSpinBox()) self.formGroupBox.setLayout(layout) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() sys.exit(dialog.exec_()) PyQt-gpl-5.5.1/examples/layouts/borderlayout.py0000755000076500000240000001752712613140041021670 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QRect, QSize, Qt from PyQt5.QtWidgets import (QApplication, QFrame, QLabel, QLayout, QTextBrowser, QWidget, QWidgetItem) class ItemWrapper(object): def __init__(self, i, p): self.item = i self.position = p class BorderLayout(QLayout): West, North, South, East, Center = range(5) MinimumSize, SizeHint = range(2) def __init__(self, parent=None, margin=None, spacing=-1): super(BorderLayout, self).__init__(parent) if margin is not None: self.setContentsMargins(margin, margin, margin, margin) self.setSpacing(spacing) self.list = [] def __del__(self): l = self.takeAt(0) while l is not None: l = self.takeAt(0) def addItem(self, item): self.add(item, self.West) def addWidget(self, widget, position): self.add(QWidgetItem(widget), position) def expandingDirections(self): return Qt.Horizontal | Qt.Vertical def hasHeightForWidth(self): return False def count(self): return len(self.list) def itemAt(self, index): if index < len(self.list): return self.list[index].item return None def minimumSize(self): return self.calculateSize(self.MinimumSize) def setGeometry(self, rect): center = None eastWidth = 0 westWidth = 0 northHeight = 0 southHeight = 0 centerHeight = 0 super(BorderLayout, self).setGeometry(rect) for wrapper in self.list: item = wrapper.item position = wrapper.position if position == self.North: item.setGeometry(QRect(rect.x(), northHeight, rect.width(), item.sizeHint().height())) northHeight += item.geometry().height() + self.spacing() elif position == self.South: item.setGeometry(QRect(item.geometry().x(), item.geometry().y(), rect.width(), item.sizeHint().height())) southHeight += item.geometry().height() + self.spacing() item.setGeometry(QRect(rect.x(), rect.y() + rect.height() - southHeight + self.spacing(), item.geometry().width(), item.geometry().height())) elif position == self.Center: center = wrapper centerHeight = rect.height() - northHeight - southHeight for wrapper in self.list: item = wrapper.item position = wrapper.position if position == self.West: item.setGeometry(QRect(rect.x() + westWidth, northHeight, item.sizeHint().width(), centerHeight)) westWidth += item.geometry().width() + self.spacing() elif position == self.East: item.setGeometry(QRect(item.geometry().x(), item.geometry().y(), item.sizeHint().width(), centerHeight)) eastWidth += item.geometry().width() + self.spacing() item.setGeometry(QRect(rect.x() + rect.width() - eastWidth + self.spacing(), northHeight, item.geometry().width(), item.geometry().height())) if center: center.item.setGeometry(QRect(westWidth, northHeight, rect.width() - eastWidth - westWidth, centerHeight)) def sizeHint(self): return self.calculateSize(self.SizeHint) def takeAt(self, index): if index >= 0 and index < len(self.list): layoutStruct = self.list.pop(index) return layoutStruct.item return None def add(self, item, position): self.list.append(ItemWrapper(item, position)) def calculateSize(self, sizeType): totalSize = QSize() for wrapper in self.list: position = wrapper.position itemSize = QSize() if sizeType == self.MinimumSize: itemSize = wrapper.item.minimumSize() else: # sizeType == self.SizeHint itemSize = wrapper.item.sizeHint() if position in (self.North, self.South, self.Center): totalSize.setHeight(totalSize.height() + itemSize.height()) if position in (self.West, self.East, self.Center): totalSize.setWidth(totalSize.width() + itemSize.width()) return totalSize class Window(QWidget): def __init__(self): super(Window, self).__init__() centralWidget = QTextBrowser() centralWidget.setPlainText("Central widget") layout = BorderLayout() layout.addWidget(centralWidget, BorderLayout.Center) # Because BorderLayout doesn't call its super-class addWidget() it # doesn't take ownership of the widgets until setLayout() is called. # Therefore we keep a local reference to each label to prevent it being # garbage collected too soon. label_n = self.createLabel("North") layout.addWidget(label_n, BorderLayout.North) label_w = self.createLabel("West") layout.addWidget(label_w, BorderLayout.West) label_e1 = self.createLabel("East 1") layout.addWidget(label_e1, BorderLayout.East) label_e2 = self.createLabel("East 2") layout.addWidget(label_e2, BorderLayout.East) label_s = self.createLabel("South") layout.addWidget(label_s, BorderLayout.South) self.setLayout(layout) self.setWindowTitle("Border Layout") def createLabel(self, text): label = QLabel(text) label.setFrameStyle(QFrame.Box | QFrame.Raised) return label if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/layouts/flowlayout.py0000755000076500000240000001227312613140041021353 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QPoint, QRect, QSize, Qt from PyQt5.QtWidgets import (QApplication, QLayout, QPushButton, QSizePolicy, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() flowLayout = FlowLayout() flowLayout.addWidget(QPushButton("Short")) flowLayout.addWidget(QPushButton("Longer")) flowLayout.addWidget(QPushButton("Different text")) flowLayout.addWidget(QPushButton("More text")) flowLayout.addWidget(QPushButton("Even longer button text")) self.setLayout(flowLayout) self.setWindowTitle("Flow Layout") class FlowLayout(QLayout): def __init__(self, parent=None, margin=0, spacing=-1): super(FlowLayout, self).__init__(parent) if parent is not None: self.setContentsMargins(margin, margin, margin, margin) self.setSpacing(spacing) self.itemList = [] def __del__(self): item = self.takeAt(0) while item: item = self.takeAt(0) def addItem(self, item): self.itemList.append(item) def count(self): return len(self.itemList) def itemAt(self, index): if index >= 0 and index < len(self.itemList): return self.itemList[index] return None def takeAt(self, index): if index >= 0 and index < len(self.itemList): return self.itemList.pop(index) return None def expandingDirections(self): return Qt.Orientations(Qt.Orientation(0)) def hasHeightForWidth(self): return True def heightForWidth(self, width): height = self.doLayout(QRect(0, 0, width, 0), True) return height def setGeometry(self, rect): super(FlowLayout, self).setGeometry(rect) self.doLayout(rect, False) def sizeHint(self): return self.minimumSize() def minimumSize(self): size = QSize() for item in self.itemList: size = size.expandedTo(item.minimumSize()) margin, _, _, _ = self.getContentsMargins() size += QSize(2 * margin, 2 * margin) return size def doLayout(self, rect, testOnly): x = rect.x() y = rect.y() lineHeight = 0 for item in self.itemList: wid = item.widget() spaceX = self.spacing() + wid.style().layoutSpacing(QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Horizontal) spaceY = self.spacing() + wid.style().layoutSpacing(QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Vertical) nextX = x + item.sizeHint().width() + spaceX if nextX - spaceX > rect.right() and lineHeight > 0: x = rect.x() y = y + lineHeight + spaceY nextX = x + item.sizeHint().width() + spaceX lineHeight = 0 if not testOnly: item.setGeometry(QRect(QPoint(x, y), item.sizeHint())) x = nextX lineHeight = max(lineHeight, item.sizeHint().height()) return y + lineHeight - rect.y() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = Window() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/layouts/README0000644000076500000240000000155612613140041017453 0ustar philstaff00000000000000PyQt uses a layout-based approach to widget management. Widgets are arranged in the optimal positions in windows based on simple layout rules, leading to a consistent look and feel. Custom layouts can be used to provide more control over the positions and sizes of child widgets. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/mainwindows/0000755000076500000240000000000012613140041017423 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/application/0000755000076500000240000000000012613140041021726 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/application/application.py0000755000076500000240000002364612613140041024621 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QFile, QFileInfo, QPoint, QRect, QSettings, QSize, Qt, QTextStream) from PyQt5.QtGui import QIcon, QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.curFile = '' self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.readSettings() self.textEdit.document().contentsChanged.connect(self.documentWasModified) self.setCurrentFile('') def closeEvent(self, event): if self.maybeSave(): self.writeSettings() event.accept() else: event.ignore() def newFile(self): if self.maybeSave(): self.textEdit.clear() self.setCurrentFile('') def open(self): if self.maybeSave(): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: self.loadFile(fileName) def save(self): if self.curFile: return self.saveFile(self.curFile) return self.saveAs() def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: return self.saveFile(fileName) return False def about(self): QMessageBox.about(self, "About Application", "The Application example demonstrates how to write " "modern GUI applications using Qt, with a menu bar, " "toolbars, and a status bar.") def documentWasModified(self): self.setWindowModified(self.textEdit.document().isModified()) def createActions(self): root = QFileInfo(__file__).absolutePath() self.newAct = QAction(QIcon(root + '/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(root + '/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(root + '/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=self.close) self.cutAct = QAction(QIcon(root + '/images/cut.png'), "Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.textEdit.cut) self.copyAct = QAction(QIcon(root + '/images/copy.png'), "&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.textEdit.copy) self.pasteAct = QAction(QIcon(root + '/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.textEdit.paste) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) self.cutAct.setEnabled(False) self.copyAct.setEnabled(False) self.textEdit.copyAvailable.connect(self.cutAct.setEnabled) self.textEdit.copyAvailable.connect(self.copyAct.setEnabled) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.fileMenu.addSeparator(); self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newAct) self.fileToolBar.addAction(self.openAct) self.fileToolBar.addAction(self.saveAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.cutAct) self.editToolBar.addAction(self.copyAct) self.editToolBar.addAction(self.pasteAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def readSettings(self): settings = QSettings("Trolltech", "Application Example") pos = settings.value("pos", QPoint(200, 200)) size = settings.value("size", QSize(400, 400)) self.resize(size) self.move(pos) def writeSettings(self): settings = QSettings("Trolltech", "Application Example") settings.setValue("pos", self.pos()) settings.setValue("size", self.size()) def maybeSave(self): if self.textEdit.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) if ret == QMessageBox.Save: return self.save() if ret == QMessageBox.Cancel: return False return True def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "Application", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return inf = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.textEdit.setPlainText(inf.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Application", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outf = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outf << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName); self.statusBar().showMessage("File saved", 2000) return True def setCurrentFile(self, fileName): self.curFile = fileName self.textEdit.document().setModified(False) self.setWindowModified(False) if self.curFile: shownName = self.strippedName(self.curFile) else: shownName = 'untitled.txt' self.setWindowTitle("%s[*] - Application" % shownName) def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/mainwindows/application/images/0000755000076500000240000000000012613140041023173 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/application/images/copy.png0000644000076500000240000000247212613140041024660 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÌIDATXõ—]L[eÆwo¼ÙåI q×&ãN¸pÑ…D½Pãå+.&J'†ª‹™àТl†9ܘ€@l¦CÊ +ƒ(ÌÚÑ–ÒÒJ{ú¥ÐïßÿÛÇÌ*‡“<9o!œç÷<ïG‡ÊFϽúé»LZ&aj`ÊÙéyÙš?]Pò¥Áé§WÃ@0„¢­Ç2Š'X"s¿ykÚKr{ç¬ÚØÈ˜@„™…ã‘1)Ka%”D8šBs‡Æ¾Äÿ“y$ñÈX’Ï„]ŒÂå "K£ôÃïM4uY°ëØ6Õž:ü̹ç_.?VžEEU *™Þ¯­Ã±‰Ç¬¶%ü¹è‡kXöÆÒ¯œ¾pŸAÙ€]‡™ŠŠŠÌ’Z[[ݤ¯U­þ¯Tߦ195…Ù¹9è&&PPP€!Ío|ÞI¦ù̘\ÀáOAô…ðC¯ÎÍjöPCfØåŠÇãðz½H§Ó˜œœDee5fg¼ftÓ@2-xðÝQ¬ápF£‘S©~êíEã'Ÿa†A8–ÜPwuãLC#Î5Çí‘q\¼>,/ÀÆÆôzýc@}}ýP2ˆÐFf› ‚Áˆ©¬—ºdn€¦Ø:Ø~E"”+*0®@çmWÚª4¾|Sæ5@f:ÃÃÃèeõ÷÷÷C«Õ¢ªºcwõ*wí¶Ú»e y·ÛíBgg'zzz8PIiniõ×o°ùg¸Ð%3ÀÖÖß @¢(Âï÷cmm §•Ðü®ç©É|Á ˜=@›ÜÛA677ùv¤VÕèûUà©Gç;€Ì%€$3O$(+¯â¸‹˜ 6ZÕ0ÿ˜'“<=MIÉ©J ·³‰=Åø0±|qõ¤êɘ‹ÅP¦¨‚zHÀ˜¸k朙ûçWdÒSjˆF£Ü< ¡¸´×Üf‡ä dÄ(;dH=œs™Ó¹@ ÅeU¸Ø- :c®}ià£v™þ]=¥&­®®rˆ·J*p¹WÀ=¸~žîÌg.í@ªD‹Ž’ÓqLß+++X__ç'Yßt PO¿Ìe¸24ì§ÉXÚëdNi)9D@õÓÏÞ|[–ëO~u¸qøq,ž~½Nm¦7ª¬žd,m72%Ñ#òäÌ'hï ¼f[O5âÉxG•JŤ.Í7RR:÷)µÃáà"ãÅÅEõâñ—\ô¹“é®---né`¡ÔÒ— ———áóù`³Ùø}ii‰C ͲТ’R“éNßxT;5`µZyõÔ ýÎ`0$òòòî³gÙ@SS“[šgJO"ªšÆ‹™7@ŸGGG#mmmÞüü|ûÛA¦²½šÿ'@ss3ŸJGT?U???ÏëÖh4‘ºº:çô]L0ÍÆxG¥Rév:¼bJJo>”´¾¾Þ™““#™gSuVn‹Å‚Hmm­377WVÓÝøFLÂA™n×ßC9V…pÈIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/application/images/cut.png0000644000076500000240000000245312613140041024500 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<½IDATXÃíWkL“W>#qÉ2é—¨Te8ö‡2“f,[pÄ0ÿ`¢.:Nº1‰[³€Ù „X‹…²‚•^äf Ž1øÃFË-ܨ·ji‘ò¯ ܸ aÙ²“<í—ó}ýÞç¼ïó^J€ü“ ÿ t (DÙq+F€®ÝdÝÆf"Lø•Ä‹GÈ¡Ó÷ÈŽ—;82a+A …œ¾0H.Ý€@2«yMô¾ûrhd‘^£Qôî…GõнƒËM ›ö@t/½2= ‰?H¥,Œ1yÁ»ˆKÆ×Æ& ¹ýBþÅ+6FŒ\N“§§§ ÌÓ9¹˜c6 Òä£+A Œ)ž*ß7GëÜ{µÌ‰ž@D–Tƒ+, 6FHõd*{.Tø7¿À4*TßbˆRÕ,XtzEUõÈ mtÂÔs÷!¾sQ•®ÐÏ唃‡´žÌ.Ôݯ™Ë°¯¯¯>¿Ò`µÛí€øyä>Ä^«´¹ˆ/†€'ÓÀgùŽõ`×^3ºvÚsîhØÇÇGŸ««° Á‡²ö.ç–7÷wsaؽè^€/fš †ß©6B÷ðØŸÔϥ犘-~þm—Tk__¸ÐÑsbrVNć—ÔŒ0é·8@¤Ö1ž…›~m©%[—Ù æ. ó$ß6Ž{½ÑÍBÈ o©<ѽV«w„ó’\»R©„úúz0™L uß5ÁQ±dÉQD>¶vÌ´@O“_~ÓÖßß2™ D"¨T*J¥ Ñh K[9¾é•à¸S¯y,ó—Ž"žÇ†æS)ö‚‚æâ   àñx`±X@[^ûÏ& -¦SÎg”Ï Lƒâ[{æÂ`š² ˆÅbÈÌÌ„¢¢"P«ÕÐÙÙÉ`ìþɹÉÛ§u.·ÏK€®·Ø)pÀj—¬xˆÊ‚â)‰>—+![–cãG„&Ø’rdŽo¿£Ñ-­-ðËÀ 8ñ¾³bÁ\i„……„FÜ&ç2¬,Ï3µì;ãºÓ3¯‚åþz‰žÞüb÷<’{f«O[Ê5íXCC=444€¥·2ÅÃóéÀe<’å(ž6]åœ*2x}ôƒ.Zl1 %êq÷/Ë'ï‡_þÓäD LhôÉ>u• ´··Ãׯ–1® fñ6m8hí÷*>]åXªñGZõ¶Y ³CÉ‘8 9ù©–!ú\ ϳÿÿ7üOøç‡¹DÃÏIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/application/images/new.png0000644000076500000240000000152412613140041024474 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<æIDATXÃÕ—ÍNa†ë5”•{qáÒÄà¸â\¸ô\±0ê–&bX¸°‘X Ñ¿‰¤±R¤HE”þÐCÿ¦¦e€ãy{ú…QJ‚É!†IÞœ3§óÍûœóM›N„ˆ"ÿS‘sÀÇÕnÿ¥û¬Ç==d ©ð12<<¼j4::ºV<¯&“ÉV:v‰Dk`` Íknh¤8Òááq™ºï·É²,Úßß'†ñxÍëŠ@?ó°Ç¥Lf¹ Åb±:¯{pˆSww²lÛ¡ùùÏd×uéùÄDB&{Áɪ7JÎÍSøp]‹T‚@gOÎí¦Ggféõ›·Ÿœ¤©©iz÷þE£Ñe^AÀïí¶%†…šã”]ÍÑäô+z2þ”žÅ^ÐLb‹UÚõ <ÿjÍ67«”/nS‰c·…×~QðyÌÍ]µÇ{ÛîŸ;¾äˆ]¸½îâ”Ê3àuäÆuWbØ9êæ3DÔ§àô:­9"˜˜hr€˜kPS*-¹1âNSŒ òmû(¶|E›;ÛjüiŽûÅS(ðC¸fI÷kùR‡×¾TÈUºN­K¯…Þ·Â’=O¦³Þ£±qëÚÐõ˜³n©l4¤kÿàZSÔ Yoäî½â¥ÁËK|mŒu‡5¨ú·ÝeÙ<þžÏ7½Éºx&oFhòÿ™”žé?¿BÓôü½œž¥~Ql%¡’• wIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/application/images/open.png0000644000076500000240000000403112613140041024640 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<«IDATXíW[P“göÊÎìÌöb/¼ÙéÎìn½ÚÙ›µÎº;{°­Ìz±ÎÎ:³vTpuÛâÖ¶T»¥ mÁ‚QB€€€!’@Hs$!gr€B œ GµTxöû~0X‹}gžù/’üÏû>Ïû¾ß—]vý˜ ñ ‚Áu‚ÏýþH¼› áW¯ïµ*ŒÖeÛ`[ 'ñ3ú"üÜ>vH~Š ¹¶Y2Ï­B9þDöQØÇæè‡†={öXSR®,Ê::NâåIÃÄ1·>Iù,`›]YSMM¶4ëû 1y`Å»ï¾?Å«¾ƒñ‰)LOÏ®’ï×¼tŸ¾ã²CO´3@‹{Í=.4ëì¨Wö ‡S…2^5C¼°ôÁ`\&¿K|áH$8AýÝês'ñ¹'H‡—Á×» "U7Ü7¢¸Nˆ,V>ÌVÛ:q,k,üÎç'‘6“•?F}¥þÄoôY1¶~ï Z{œà?0¡L(CF²ù&ÒùÅeÌ-,!4¿ˆ½{÷ZÉ;~ºm$~CF=5iu³€Ò?ËÄâšP¡Z´lñY ¶ ¦]/²sq·žÿ 1% ÍcbjƒC'äݼ-Ó°;’3&ÔSµÓûXOˆÅ!ˆ,CPºFÐí Bå›B›sü©ÏZî*tȼÉE §l“Ï›ˆ'§Ào¢ÖÖ%ÂQÛ(‡Æ¯‚/b”M‰$"êR-šB«èy¡ÅÏStö £Óá‡Ô<€½ ]Õ ‘• /yñƪ©Ô³s LÅ”ØÝï…Éb·¼¥å•KóË«#7ÙæÙ„—Ë<Ðhò£Ýî_'–;† ³x×}æ¤ø<3*6ªÜS3!ŒŽ3Ó&ä7 ñÁÅQs¯¾e`ü ##òΡ¾]¹¸QƒttM§ g€©¸ÝêƒØèB“ÊÌø|åË,ˆÚ$Q‰§g熆G`w8I‚:$|ø!®³ á™\€o ÐÞá,«Ä}ïÝaëÿŸÀ¹ö!HÌýO}îÔ"U„ªšºM>GäŽø<<„ÓݽÁˆÂâbœ~/=ô/ƒ„¼Åÿ-î:C(Q‘÷öñNÜ¿}„3iã ô3«àÉTh58ÑØÝ žX‰¬\ö3>Gªžœžeäî÷¢×lAC'bã éÖÀEÏR$¸†²žn´ÛPÑD…΋J~ m¾›['Ñ ™øe"î)ô(Èx5 ­>ªÜc“ð Ãf]ŽÄK—ÃÊÃÔcÀNzI1Nú‰”[;„|…%jJÕèò0£("øù3 t.¡¨¾¥| ²J*ðÏãqQåöFÑçò@«7 ýj’¿HƒÍ7'©Ú@Là{ˆREÝý qA—Å݈œAüùÍ·]„ël´CÐ(÷N#§ü²K«ñQêWHþoêúXQ¹G‚ãð ø`4™QÉ«ÂûgÏAþ@?én²¹oiÒ›*/råäuö¡ð¾•ùœÊ)ÂS¸Ý)Ü+vQÈÅ•ky8Ÿ€›·n3c‘Ûjs@"mÇ…„Pt» ó+€Ÿ4X÷$ |„JÓ8úa†œVýU³¬;¸:Ù!z/༺]&¾Áƒ”oØ8ŸœŠ=c¯™én*·F׃¤ËÉHÿ:‹ŒÕÇÑØ3ø81 †^›øÝûQOÔñ™îšª­“`+] 9õ¼ð¾g½êÌ=JUm”ÔñCáeS@ðÊ÷%`+njÇ©„DÄ9ŠÜ|6ZZÅ8ƒ/95Èj˜æ¢ÕÒ'õšzL¡Id·™ÛnF¹Ú¥v9,9=ùNìÙrÔG ;«Fˆcÿ9ßîû=ùœ¿€“ñp£­ÄOJénºX¨ï,ú”˜P(·@é<ùWì)*w-Ágû¶¹äD¾Ì²Züãä<ô7°ró°ïÀP Ñ!‰'e*¦K…>¿!ÕFä.[!° ®åÜâÒä‡o<¯<ç–5œiEåøû±X?‡7öïÇ:’«¤ !ípê5U!‹4[É7*4nÔI:ÃrsŽm•û‡$àJespäø)>|˜Œc.2*\"ÕÓ]~MÜ 6étv§wŒäˆ¶ùž„·•û"½Iý€ mô2JxLœKIõ¦.|Âme6Yñƒ\—šÁQ{ ó×Î%&6ÈýÇÈÕ‚ÜÎ^NEX…xö]\©UªûÀ–ÛP­uã®TA/Ê r¿ºÓj£·¢Qø¯CO¹-ˆËæášHª/š5æÇzó-Wx¬¨Ü¯½¬ÜÑâÝ\uÞ˯E¹v2g`õ§—©Ü÷Ò©Ü;øóÂñ‚ÊîP 9”¸ ÂÈ£‡Ã/"÷ÿÚmŠÝa™Õ¶Øk»^2¾/‰ÿf¹_ü€=ÏIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/application/images/paste.png0000644000076500000240000000315512613140041025021 0ustar philstaff00000000000000‰PNG  IHDR szzô4IDATx^­—[lTÇÆsÎÙ‹½öú ¾²ic$BJ!"¡-•b¥/îKh+•¦U¥Æ`UªÚ´ªúV UÊ”'Ú„)­Ä‹¥RƒyÅ9iÓ„š›cjì²;»öz½»Þ³g¦Ãh…årlˆÉ'}úŸ‡ý~óŸ™sJ)‚$„xxžÇkH)õwÖ(' ¸C»h—R¾ÆcdYÖö»@·9ÿ&ü·íõâ`]DDnΉŠ+W®P]S@ Pe(A)fÓi^©/¼´Nl;ñ¹Gƒ|[CL;…D•2â¶Ä¶!!p>SlŒ;€D*ðœàË@P4`ÄHiŸ$Nœ8!Ò‡––g emå(¥´AXW%âØDBÃs\¼=A÷XŽ\$¾©½}÷ï-ËZܱcGYUU•ÓØØ~à†††Ð¥K—Ü®®®ðÖªDU,ÂsÕ1òžO¡(‘Ja Aرˆ†lær¢Ž?Ÿÿ+ M"Àf–„ïûxžGuuµžPKôêÕ«‡„(¥ÞZÀ²A¶-Ú¶8¤XÂŒL¹ì{õ;Ô76|/Á„g2ÊËËÍf>vìØ&½.A,ÐÙÙ©:¤l!Y¶-ÇÆBP´ÍDzˆ8–®`YxÀÜÜ555 räÈ‘ÍÀˆ¢Çb¹°mt0fË#6±¨£Ç,2‹“™c©yîÌ.èßErù<«È,A6›5§féÿm8°èX ´tŽ áÀSб¤ËŒƒÓ²—¦}¯³µã¬Ûû: /´sûÎ$ýýý$“I”Ræúøñã躬3çÎãèÑ£>|˜ÞÞ^‰„,¡ÜíÿÎæøç”OkÇÏøæ/ß&öõ7™|¦ƒkþ.®ñ-dk­{N^VsúogÑwMîÜâ¯vrýúu gkÖ?‹™ëx<Žã8%8À#–%˜ÊA:ÞÊþß½MÕ®×(„bÛBY‚lArf‘Oîf¸êrúadÕ^®Üg2ׯ…î›í‡¡ÍÍÍ´µµ755¡¡ ƒFÜqßÿéo¨lØHâì;L^É”±µy›[¶óIy%c —ÏfòÜÎ2¡íˆ L'çØ·+Êú%3{=kêêêÌu*•2J+ ¹Zpác(,ÊæÆÙR”’{Ã}$eÛÚLMÛË|<œfÒ_ÀÍx,Ìk/x µt:B¡ -ÝêŽ*ø>`ÁƸ P#‹S·¥–’xv}é¬ÇhÿŸ˜®¼LËöƒ¸ a¼‚¤X”xÚ!ÇB-ª€ãi –ÕÖÇC„Ê#ü¿jc!ž© sá߃ìÙùÊ£¹2G(akK!¥%0*¤\@X¥*Ìõ#úpl†ñYïýúÜÊÔàD\¢Ï“=Ó¥RòPjYVL vùÕ_†½·€=“gÓº2òy_»hêίÔpùÝà%žx L¸<¢Ö/Uò‡>ÏõO3D·±óÅ—Y\N`ŽÛS(À%mÔR}±µ–Ý[ât¿—¥j÷WùÑo µ˜µ7ÕØÒËSpSxó3³i %ýÕ‚Öðð)çãç3æu¨ÖË÷‰Á3}ú×rŒ²7Dzþ­”Ìo÷DTØ_p’ ý×=?ý~B¦Ïßöïîv;ü’¨ãsÊu]pWí@2« ~*Ó½·üÔÍi9ô—th¿¢Ó¶í¯}ž%XXXðÒ'Ožœºƒ>IÊ­ã³*×;â§nLËÑRèYt‹= ÀÐÐÛÓÓ“ÒNÏÎΞ.½ßèîê)Œ„…¯055UÐ/"©S§N%ÇÇÇ/g~쮸 KßvÚO&…@@aZüÞà`º»»;¥ßŠÌ$Ð^ísÍaíšw3n`pðýt___úÌ™3¦Å¥Ðx‰µžc!DxØOis´ø±ú½ú*_òØIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/application/images/save.png0000644000076500000240000000224312613140041024640 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<5IDATXÃå—ÍTEÅ·êÖ{¯ÛnÇù@‰FM4™DH˜ÄŒþL\ñ.M\kXÃŽÄ΂htA\ âÄÆ=`PQ`¢ ƒÓý^÷”‹ªîù`æ „QVR©Î{·ëž:÷Ô©zê½ç~6å>·>€]»v½ìýòN5ëػ」;vœ<:ÏÌ—7XœïÜS¦Ú òÜk¼¸g€‹|øî€Ûpüìß?0x.ý¸Àþ·ÎoËryš #–ÓŸdüÕ}›k@E°@xp,#˲m00–aP|#%"+ؑՕsç΃*¸Ò² Ò,ŒI IÞw:ç·¡Õ‚v+Žm(r²ú8Ö ã¯¼Ikñú欬°Fؽ{çk놮€Z¨VêmQ¯µ‚÷ ¦„g5‚¨ •,Ã# Àð/Þ#&|ˆ#Ä!Яª‹öØ'aa½%% ð4M£:ó˜‰lÚc V˜_)FüaÍra-Ñ€: TIO4/à…Ä!‰Ãg ’i؉â‡X‹ïv‘¼€¼íßj#íòŸwPEÕ x:ëTx›œ3x$¼þòówhè6h¤¾ñëÆüß±R^‚DM_„ ¥8ç¶ÅˆžK¹v³Rª¸PïZÅ0}±Ë@Űô&­WùU.ááÆÒ2õÌp}É„-éJœÀsåf—+7»¬QW?תd~Å'¢)¬Ü µw¦l¨Á© È5¯›5Y1žþ{éïñ‚ï›X0+WVU!ÑüçSßòë™,-Þ¸§úWj<õìNžya¨3[1|‡÷÷¿Á·nÝ¢( Dk-ÖZTUÅ9‡ªb­Å˜ðßååeò<ï÷#Íù¸ò-pVPÜ1:¶rO8~œééiŒ1x˜`rròŽYØ1:Ö߆®Ô Up6¬¢V¯÷k933ÃÐÐÖZ¼÷4›Í»P«×pш´Ôˆœ '\ *¨V«dYÖ§¸7Þis©AK­8ǽ#´×Œ1ˆDß:¸«›¯5¨ óö.=Žƒ)mãÕÛ©÷åVl­ô‘Ž ÃòïÛà¡‘aÔµ+—Yœ¿¾6øÀ`­ ÛÃÀP­ÂìÅKœýîΟœž¦6`$^J í‘'©= o8ÈfÇ':ñ*ç52(ºpùêUÎ4ŽÑüú‹¹ÙNoà³>à§Ó'W™éÚ£†Uæ»<_o|wîÙ_‡Æ_˜šþôãõsl}ò5â·ÚÿÝ×ñ?MðK¹èF‰¯IEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/0000755000076500000240000000000012613140041021732 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/dockwidgets.py0000755000076500000240000002727012613140041024626 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDate, QFile, Qt, QTextStream from PyQt5.QtGui import (QFont, QIcon, QKeySequence, QTextCharFormat, QTextCursor, QTextTableFormat) from PyQt5.QtPrintSupport import QPrintDialog, QPrinter from PyQt5.QtWidgets import (QAction, QApplication, QDialog, QDockWidget, QFileDialog, QListWidget, QMainWindow, QMessageBox, QTextEdit) import dockwidgets_rc class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.createDockWindows() self.setWindowTitle("Dock Widgets") self.newLetter() def newLetter(self): self.textEdit.clear() cursor = self.textEdit.textCursor() cursor.movePosition(QTextCursor.Start) topFrame = cursor.currentFrame() topFrameFormat = topFrame.frameFormat() topFrameFormat.setPadding(16) topFrame.setFrameFormat(topFrameFormat) textFormat = QTextCharFormat() boldFormat = QTextCharFormat() boldFormat.setFontWeight(QFont.Bold) italicFormat = QTextCharFormat() italicFormat.setFontItalic(True) tableFormat = QTextTableFormat() tableFormat.setBorder(1) tableFormat.setCellPadding(16) tableFormat.setAlignment(Qt.AlignRight) cursor.insertTable(1, 1, tableFormat) cursor.insertText("The Firm", boldFormat) cursor.insertBlock() cursor.insertText("321 City Street", textFormat) cursor.insertBlock() cursor.insertText("Industry Park") cursor.insertBlock() cursor.insertText("Some Country") cursor.setPosition(topFrame.lastPosition()) cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"), textFormat) cursor.insertBlock() cursor.insertBlock() cursor.insertText("Dear ", textFormat) cursor.insertText("NAME", italicFormat) cursor.insertText(",", textFormat) for i in range(3): cursor.insertBlock() cursor.insertText("Yours sincerely,", textFormat) for i in range(3): cursor.insertBlock() cursor.insertText("The Boss", textFormat) cursor.insertBlock() cursor.insertText("ADDRESS", italicFormat) def print_(self): document = self.textEdit.document() printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec_() != QDialog.Accepted: return document.print_(printer) self.statusBar().showMessage("Ready", 2000) def save(self): filename, _ = QFileDialog.getSaveFileName(self, "Choose a file name", '.', "HTML (*.html *.htm)") if not filename: return file = QFile(filename) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Dock Widgets", "Cannot write file %s:\n%s." % (filename, file.errorString())) return out = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) out << self.textEdit.toHtml() QApplication.restoreOverrideCursor() self.statusBar().showMessage("Saved '%s'" % filename, 2000) def undo(self): document = self.textEdit.document() document.undo() def insertCustomer(self, customer): if not customer: return customerList = customer.split(', ') document = self.textEdit.document() cursor = document.find('NAME') if not cursor.isNull(): cursor.beginEditBlock() cursor.insertText(customerList[0]) oldcursor = cursor cursor = document.find('ADDRESS') if not cursor.isNull(): for i in customerList[1:]: cursor.insertBlock() cursor.insertText(i) cursor.endEditBlock() else: oldcursor.endEditBlock() def addParagraph(self, paragraph): if not paragraph: return document = self.textEdit.document() cursor = document.find("Yours sincerely,") if cursor.isNull(): return cursor.beginEditBlock() cursor.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, 2) cursor.insertBlock() cursor.insertText(paragraph) cursor.insertBlock() cursor.endEditBlock() def about(self): QMessageBox.about(self, "About Dock Widgets", "The Dock Widgets 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 createActions(self): self.newLetterAct = QAction(QIcon(':/images/new.png'), "&New Letter", self, shortcut=QKeySequence.New, statusTip="Create a new form letter", triggered=self.newLetter) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save...", self, shortcut=QKeySequence.Save, statusTip="Save the current form letter", triggered=self.save) self.printAct = QAction(QIcon(':/images/print.png'), "&Print...", self, shortcut=QKeySequence.Print, statusTip="Print the current form letter", triggered=self.print_) self.undoAct = QAction(QIcon(':/images/undo.png'), "&Undo", self, shortcut=QKeySequence.Undo, statusTip="Undo the last editing action", triggered=self.undo) self.quitAct = QAction("&Quit", self, shortcut="Ctrl+Q", statusTip="Quit the application", triggered=self.close) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newLetterAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.printAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.quitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.undoAct) self.viewMenu = self.menuBar().addMenu("&View") self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newLetterAct) self.fileToolBar.addAction(self.saveAct) self.fileToolBar.addAction(self.printAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.undoAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def createDockWindows(self): dock = QDockWidget("Customers", self) dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) self.customerList = QListWidget(dock) self.customerList.addItems(( "John Doe, Harmony Enterprises, 12 Lakeside, Ambleton", "Jane Doe, Memorabilia, 23 Watersedge, Beaton", "Tammy Shea, Tiblanka, 38 Sea Views, Carlton", "Tim Sheen, Caraba Gifts, 48 Ocean Way, Deal", "Sol Harvey, Chicos Coffee, 53 New Springs, Eccleston", "Sally Hobart, Tiroli Tea, 67 Long River, Fedula")) dock.setWidget(self.customerList) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.viewMenu.addAction(dock.toggleViewAction()) dock = QDockWidget("Paragraphs", self) self.paragraphsList = QListWidget(dock) self.paragraphsList.addItems(( "Thank you for your payment which we have received today.", "Your order has been dispatched and should be with you within " "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.", "You made a small overpayment (less than $5) which we will keep " "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.", "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.", "You made an overpayment (more than $5). Do you wish to buy more " "items, or should we return the excess to you?")) dock.setWidget(self.paragraphsList) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.viewMenu.addAction(dock.toggleViewAction()) self.customerList.currentTextChanged.connect(self.insertCustomer) self.paragraphsList.currentTextChanged.connect(self.addParagraph) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/dockwidgets.qrc0000644000076500000240000000030612613140041024747 0ustar philstaff00000000000000 images/new.png images/print.png images/save.png images/undo.png PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/dockwidgets_rc.py0000644000076500000240000006613412613140041025311 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 17:19:16 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x06\xc4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd9\x04\xdc\xb2\xda\x02\ \x00\x00\x06\x7b\x49\x44\x41\x54\x58\xc3\xad\x57\x69\x4c\x54\x57\ \x14\x76\x21\x62\x95\x04\x97\xa8\x25\x18\x52\x1b\x0d\x11\x45\x04\ \xaa\xa4\x49\xb5\x56\x4d\x6c\x69\xb0\x68\xa3\xb6\xc5\xb2\x46\xfd\ \xa3\x2c\x61\x51\x48\x24\x08\x64\xc2\x12\xd0\x22\x42\x11\x59\x44\ \x40\x40\xf6\x91\x7d\x53\x36\x09\xb2\xa9\x08\x0e\x24\x0c\x62\x01\ \x83\x02\x82\x0b\x08\xa9\x5f\xcf\xb9\x99\x31\xa3\x80\x9d\xb4\xf3\ \x92\x2f\xf3\xde\xbc\x7b\xce\xf7\xdd\x73\xce\x3d\xf7\xbe\x79\xf3\ \x54\x2e\x3b\xbb\xe8\x2f\x1c\x1d\x23\x1d\x1d\x1d\x23\x02\x1d\x1c\ \x2e\x48\xd2\xd3\xab\x25\x97\x2e\x15\x56\x47\x46\xde\xac\x4d\x4c\ \xac\xa8\xad\xaa\x6a\xbf\x2f\x95\x36\x41\x89\x2b\x57\x4a\xdb\x8d\ \x8d\xf7\x7c\x49\xa6\xf3\xe7\x69\xe8\x5a\x68\x6f\xff\x47\xa1\xfc\ \xf1\x73\x4c\xff\x0d\xb5\x10\x10\x98\x3c\x48\x76\xc6\x1a\x13\xc1\ \x33\xf2\xf4\x4a\x7a\x3d\x36\x09\xa8\x03\xf9\xc0\x38\x2c\x2c\x7e\ \xce\x21\xd3\xb5\x9a\x8a\xc2\xfc\xc3\x87\xfd\xa3\x8a\xab\x64\x18\ \x7a\x0d\xb5\xe0\xe3\x1b\x3f\x4a\x76\x3f\x11\x3e\xd3\x88\x82\xed\ \xdb\x0f\xac\x3d\xeb\x97\x89\xde\x17\x50\x0b\xf9\xe5\x32\x18\x18\ \x18\xc7\x91\xe9\xe7\x1a\x8b\x82\xad\x6d\x58\x79\x63\xf7\x38\x64\ \xcf\xf1\xaf\xe0\x71\x16\x16\x07\x5b\xc8\xee\x2b\x82\x96\x46\x14\ \xd8\xd8\x04\xfb\xa4\x15\xc9\xd0\x3a\x08\xb5\x60\xe7\x18\xf4\x9c\ \xcc\x7e\x21\x2c\xd1\x88\x00\x4b\x4b\xaf\x8d\xa1\x97\xaa\xd0\xf0\ \x17\xd4\x42\x08\x8d\x25\x33\x7f\xc2\x0a\x8d\x2d\x49\x17\xf7\xa4\ \xfe\x4a\x39\xa0\x0e\x22\x92\x9a\xa0\xa7\x67\x28\xd5\xe4\x6a\x98\ \x47\xcd\xa8\x28\xbf\xfd\x2d\x8a\xba\x31\x27\x0a\xba\x80\xdc\x4e\ \x20\xb6\x74\x00\x86\x86\x3b\xea\xc9\xcc\x54\x63\x75\x60\x67\x17\ \x1e\xc4\x8e\xb3\x3a\x80\x8c\x36\x20\xad\x09\x48\x69\x00\x92\xea\ \x80\x84\x6a\x20\xa6\x1c\xc8\x6c\x04\x4a\x1e\x00\xf5\xed\xe3\x68\ \x6a\xea\x80\xaf\xaf\xef\x2b\x32\x35\xf8\xdf\xe4\x12\x89\x44\x2e\ \x95\x96\x20\xab\x70\x00\xa9\x52\x08\x94\x10\x31\x71\x50\xf3\x01\ \x7a\x9e\x8c\x61\x68\x68\x08\xbd\xbd\xbd\x78\xf8\xf0\x21\x1e\x3c\ \x78\x20\x7e\x13\x13\x13\xb1\x7b\xf7\xee\xda\x43\x87\x0e\x05\x58\ \x5a\x5a\x6e\xe4\x54\xfe\x27\x01\xa1\xa1\xa1\x7d\x13\x13\x13\x98\ \x9c\x9c\xc4\xd4\xd4\x14\xba\xba\xba\x70\xe7\xce\x1d\xdc\xbe\x7d\ \x1b\xf9\xf9\xf9\x28\x29\x29\x41\x55\x55\x15\xea\xeb\xeb\xd1\xdc\ \xdc\x2c\x04\x30\x92\x92\x92\x70\xe3\xc6\x0d\xe4\xe5\xe5\x89\xfb\ \x13\x27\x4e\xdc\xdd\xb1\x63\x87\x99\xda\x42\xec\xec\xec\x96\xd9\ \xda\xda\x7e\x17\x12\x12\xd2\xce\x33\x54\xa2\xb0\xb0\x50\x38\x56\ \x25\xcf\xca\xca\x42\x42\x42\x02\xc2\xc3\xc3\x11\x17\x17\x87\xab\ \x57\xaf\x0a\x81\x7d\x7d\x7d\xe8\xe9\xe9\x11\x36\x75\x75\x75\x38\ \x7d\xfa\xf4\x84\xb9\xb9\xf9\x6f\xe4\x5e\xfb\x93\xe4\x47\x8f\x1e\ \xb5\xa7\xc1\x2f\xa2\xa2\xa2\x10\x1d\x1d\x8d\x8c\x8c\x0c\xc4\xc6\ \xc6\x22\x37\x37\x17\x39\x39\x39\x88\x8c\x8c\x04\x09\x03\xbf\xbf\ \x76\xed\x1a\x2a\x2a\x2a\x44\xd8\x47\x46\x46\x30\x3c\x3c\x8c\x67\ \xcf\x9e\x09\xb1\x4f\x9f\x3e\xc5\xe0\xe0\x20\x06\x06\x06\x50\x50\ \x50\x80\x86\x86\x06\x78\x78\x78\x4c\x6e\xda\xb4\xc9\x69\xce\x76\ \x6d\x63\x63\xb3\x2b\x2c\x2c\x4c\x84\xba\xa3\xa3\x03\xf7\xee\xdd\ \x13\xbf\x72\xb9\x5c\x08\xb8\x7c\xf9\xb2\xf8\xef\xd5\xab\x57\x18\ \x1f\x1f\xc7\xd8\xd8\x18\x46\x47\x47\x3f\x49\xde\xdd\xdd\x8d\xca\ \xca\x4a\x11\xb9\xb6\xb6\x36\x1c\x38\x70\x60\x88\xa8\xbe\x99\x75\ \x95\x1c\x39\x72\x24\x4f\x26\x93\x89\xd0\xa9\x8a\x60\x43\x26\xe2\ \xfc\x96\x95\x95\x7d\x92\x9c\xc5\x36\x36\x36\x8a\xd0\x73\x0d\x30\ \x79\x6b\x6b\xab\x28\x54\xf6\x1b\x14\x14\x04\x13\x13\x93\xbc\x59\ \x7b\x05\x55\x6d\x0d\xab\x56\xe6\x4f\x55\x04\x3b\x61\x42\xbe\xe7\ \x9c\x2a\xc9\x79\xb6\xf7\xef\xdf\x17\xa9\xe0\xda\x60\x81\x2d\x2d\ \x2d\x82\xf0\xc9\x93\x27\x78\xfc\xf8\x31\x1e\x3d\x7a\x24\x8a\xb4\ \xa6\xa6\x06\xc1\xc1\xc1\xa0\x5a\xe8\x20\xba\xef\x67\xa4\x82\xc2\ \x53\xdb\xd9\xd9\x89\xb9\x44\xb4\xb7\xb7\x8b\x99\x73\xf1\x71\x11\ \x4a\xa5\x52\x14\x17\x17\x8b\x77\x4c\xa6\x0c\x3b\x93\xb2\x60\x26\ \xe4\x48\x30\x6e\xde\xbc\x29\x0a\xd4\xdd\xdd\x1d\x5b\xb7\x6e\x95\ \x11\xdd\xef\x04\x9d\x0f\x04\xec\xdf\xbf\xbf\x96\x0a\x50\x38\x9d\ \x4b\x04\x3f\xf3\xcc\xf9\x9d\x6a\xce\x95\x4b\x94\x0b\x8e\x57\x06\ \xd7\x4c\x76\x76\xb6\x28\x64\x3f\x3f\x3f\x38\x39\x39\xe1\xd8\xb1\ \x63\xf0\xf6\xf6\xe6\x14\xb0\x00\xfb\x19\x02\xa8\x69\x14\x14\x15\ \x15\x21\x26\x26\x06\xce\xce\xce\x48\x49\x49\x11\x8e\x55\x45\x70\ \x1d\x30\x31\xcf\x92\x43\xcd\x62\xd3\xd2\xd2\x70\xfd\xfa\x75\xb1\ \x62\x92\x93\x93\x71\xfe\xfc\x79\xae\x78\xb8\xba\xba\x82\x7a\x09\ \x32\x33\x33\xe1\x1b\xef\x0c\xef\xaa\xc3\x42\x84\xb1\xb1\xf1\xec\ \x02\xf6\xed\xdb\x17\x74\xf7\xee\x5d\x51\x64\xfd\xfd\xfd\x48\x4f\ \x4f\x87\x97\x97\x97\x58\x7a\x4c\xa6\x14\xc1\xa1\x8f\x8f\x8f\x17\ \x4d\x86\x09\x79\x75\x04\x04\x04\x88\xf0\x32\x31\x17\x1a\x0b\xe2\ \x34\x95\x97\x97\x8b\x94\xf9\x25\xba\xc2\x2b\xe7\x57\xee\x07\xd8\ \xbc\x79\xf3\xec\x02\xf6\xee\xdd\x2b\x61\xa2\x37\x6f\xde\x08\x11\ \x1c\x6a\x9e\x29\x3b\x63\x21\x11\x11\x11\x22\xaf\x1c\x62\x9e\xe5\ \xb9\x73\xe7\x44\xa4\x98\x98\x9f\x79\x1c\x8b\xe3\x9c\xab\x92\xb3\ \x0d\xe7\x9f\x7b\x01\x17\xa1\x91\x91\xd1\xec\x02\xa8\x7f\x4b\x78\ \xc9\x4d\x4f\x4f\x7f\x20\x82\xf3\xcc\x35\xc1\x85\xe4\xe9\xe9\x89\ \xe3\xc7\x8f\xc3\xc7\xc7\x47\x84\x97\xa3\xa0\xcc\xb9\x2a\x39\xa7\ \x92\xdf\x5d\xb8\x70\x01\x54\x5b\x5c\xf9\xe2\xff\x33\x67\xce\xd0\ \x8e\x69\x38\xbb\x80\x9d\x3b\x77\x4a\x58\xe9\xbb\x77\xef\xe6\x14\ \xc1\xc5\xc7\x4d\x45\x99\xf3\x8f\xc9\xb9\x7e\x02\x03\x03\x85\x50\ \xda\x15\xdf\xb7\x68\x1e\xcf\x4d\xce\xcd\xcd\x0d\xa6\xa6\xa6\x7d\ \x44\xe7\x34\x43\xc0\x86\x0d\x1b\xf4\x69\x89\x64\x50\x3f\x78\xcb\ \x61\x9b\x4b\x04\x13\xa9\x92\x73\x24\x4e\x9d\x3a\x05\x6a\x64\xa0\ \x7d\x04\x2e\x2e\x2e\x1f\x90\x73\x0b\xe7\x0d\x8b\x6d\x79\x53\xa3\ \x31\xc3\x44\xe7\x46\xd0\x9d\x71\x10\xe5\x7d\x5c\x57\x57\xd7\x63\ \xcb\x96\x2d\x72\x76\xca\x45\xf7\xb1\x88\xd2\xd2\xd2\xf7\xe4\x1c\ \x0d\xda\xe9\x60\x6d\x6d\x3d\x2b\x39\x37\x2d\xb6\xe1\xab\xa9\xa9\ \x09\x27\x4f\x9e\x1c\x25\xff\x7c\x68\xf1\x98\xeb\xe8\x36\x5f\xa1\ \xcc\x7c\xcd\x9a\x35\xd1\x66\x66\x66\x23\xfe\xfe\xfe\xc2\x89\x52\ \x04\x77\x3d\x65\xd8\xb3\xb3\xcb\x20\x91\x64\x51\x04\x7c\xde\x93\ \xf3\xe6\xc5\xdd\xf1\xe5\xcb\x97\xc2\x26\x35\x35\x15\x94\xde\xc1\ \xa5\x4b\x97\xd6\x92\xdf\x54\xc2\x59\xc5\x7e\xb0\xe8\x93\xe7\x41\ \xc2\x6a\xc2\x9e\x75\xeb\xd6\x95\xec\xda\xb5\x6b\x8a\x77\x40\x76\ \x78\xeb\xd6\x2d\xb1\x13\xf2\x0a\xb0\xb2\xb2\xa6\xa2\xf4\xc3\xc5\ \x8b\xd5\xb4\x4a\x8a\xa9\x5b\x76\x89\xd9\x72\xb8\x49\xcc\x34\x45\ \xb2\x6f\xf1\xe2\xc5\x95\xe4\xe7\x2a\xc1\x95\xf0\xb5\xc2\xef\x22\ \x75\xcf\x25\x3c\xd0\x40\x5b\x5b\xdb\x71\xfd\xfa\xf5\x6d\x56\x56\ \x56\xa0\x2d\x1b\xdb\xb6\x6d\x03\x3d\x0f\xae\x5a\xb5\xaa\x59\x47\ \x47\xa7\xd2\xc4\xc4\x7c\x88\x85\xa4\xa6\xe6\xc2\xc1\xc1\x61\x42\ \x4f\x4f\x4f\xa6\xa5\xa5\x55\x40\xb6\x7f\x12\x4e\x28\xce\x89\x2b\ \xfe\xcf\x59\x91\x2b\xd6\x68\xf9\xf2\xe5\x81\xfa\xfa\xfa\x8d\x0b\ \x16\x2c\x28\xa2\xe7\x44\x82\x3b\xe1\x07\x8e\xd4\xca\x95\x2b\xe3\ \x56\xaf\x5e\xdd\x40\xf7\x59\x84\x70\xc5\x37\x82\xa1\x22\xa5\x0b\ \x35\xf2\xb5\xa4\x98\x05\x87\xf1\x20\x0b\x22\x2c\x53\x9c\x72\xb4\ \x14\x9f\x65\xdf\x12\x7e\x54\x1c\x4a\x97\xa8\xf3\xc5\xfc\x0f\xd1\ \xc2\x47\xb4\x63\xf2\xc9\xfc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x07\x66\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x07\x2d\x49\x44\x41\x54\x78\x5e\xb5\x56\x5d\x6f\x1c\x57\ \x19\x7e\xce\xc7\x7c\xec\x97\xd7\x6e\x9c\x38\xc6\x89\x03\x49\x9a\ \x26\x4d\x21\xaa\x08\x95\xb8\x40\xca\x25\x08\x89\xfb\x8a\x2b\xee\ \xb8\x41\x48\x48\x20\x21\x21\x04\x37\x5c\xf1\x03\xb8\x00\xa9\x70\ \x83\xa2\x0a\x51\x22\x01\x37\x20\x15\xd1\xa0\xe6\xb3\xad\x53\x2b\ \x49\x9b\xa4\xb1\xe3\x8f\xb5\xbd\x3b\x9b\x59\xef\xcc\xce\xce\xcc\ \x39\x87\xf3\x1e\x2d\x2b\xd3\x3a\xf5\x02\xe2\x58\x8f\xde\x39\xc7\ \x1a\x3f\xcf\xfb\xbc\xef\x79\xc7\xcc\x18\x83\xff\x75\x5d\xbc\xf8\ \x6d\x0e\x20\x54\xaa\xa8\x68\x5d\xd6\x19\xe3\x14\xa7\x74\xa9\xea\ \x5a\x95\x15\xad\xf4\x94\x31\x68\x7a\x15\xb9\xba\xbc\x7c\xf9\x4d\ \x00\x99\xe5\xd5\x00\x20\xf7\x12\x5c\xf8\xc2\xb7\xbe\x94\xa5\x83\ \x53\x40\x59\x63\xe0\x75\x3f\x0c\x6b\x42\x7a\x55\x18\x56\x07\x50\ \x63\x8c\xd5\x00\xd4\xc1\x10\x5a\xd0\x59\x08\x98\x0a\x98\x0e\xb5\ \x31\x81\x86\xf6\x34\x2b\x3d\x4b\x2a\x99\x27\xc5\xdc\xe9\xe7\xd9\ \xd9\x17\xcf\xf2\xc6\xcc\x0c\x13\xcd\x19\xf1\x97\x5f\xbd\xf6\x00\ \xc0\xab\x16\x14\xe3\x4f\x08\x38\x3c\x7f\xf8\x97\x5f\xfc\xca\xcb\ \x2f\x65\xda\x53\x79\x51\xb0\x3b\x37\xdf\x62\x1f\xdc\x7d\x17\x5e\ \xe0\x81\x0b\x30\xce\x01\x21\xb8\x83\xe7\x09\x16\x04\x92\x85\xa1\ \x8f\x8a\x45\xb5\x1a\xda\x18\xa2\x5e\xab\xa2\x56\xab\x60\xee\xe8\ \x02\x4e\x5f\xf8\x32\xae\x6c\x7f\x16\xed\xf6\x03\xf0\xd6\x32\x94\ \x2a\xe7\x01\xbc\x62\xd1\xd9\x57\xc0\xc9\x73\xa7\xce\x7f\xe3\x7b\ \xaf\xf2\xdf\xfd\x63\xc8\x3f\xba\xf9\x16\xe6\x16\x24\x7e\xf8\xdd\ \x1f\xa1\x54\x40\x18\x04\xf0\x3d\x89\x6a\xa5\x82\x30\x0c\x10\xf8\ \x9e\xdd\xfb\x90\x52\x40\x08\x01\xce\x18\x98\x05\x18\x20\xa5\xe7\ \xce\xb3\x5c\xe1\x27\x57\x3b\x78\x78\x7b\x09\xcf\x9b\x77\xe1\xab\ \x5c\x00\x20\x11\xa1\x05\x3e\x21\x60\x37\xc9\xb3\x37\x6f\x0f\x6b\ \xbf\xf9\xeb\x0a\x3a\xd7\x96\xf0\xcd\x53\x06\x5f\xff\xea\xd7\xb0\ \xb1\xbe\x8e\x7e\xd2\x47\x96\x0d\xa1\x94\x42\x59\x14\xc8\x87\x43\ \x68\xad\x61\x8c\x71\xb1\x2c\xcb\x31\xe8\xcc\x89\x11\x3e\x4e\x1e\ \x3a\x89\xf5\x13\xaf\xa0\x9a\xe7\x28\x57\xaf\x01\x00\x23\xec\x2b\ \x80\x5e\x54\xf4\xc7\x94\x71\x2f\x47\x4f\x63\xdc\x78\xfb\x2a\xd6\ \x36\xb7\x51\x14\x85\x23\xe3\x9c\xec\xa7\x0c\x25\xc1\x65\x4f\x8b\ \x44\xd0\xa2\xdf\xfb\xbe\x6f\xcb\x50\x43\xb5\xd1\x84\xfc\x40\x21\ \xac\x56\x21\x94\x40\xb9\x87\x6b\x5f\x01\x24\x5a\x0a\x8e\xc0\x13\ \x80\x64\x08\xc3\x0a\x16\x17\x17\xc1\xbd\x90\x32\x27\x01\x44\x48\ \xd9\x8d\x41\xcb\xed\x39\x07\xed\x38\xf5\x87\xf4\x5c\x3f\x88\xa0\ \x0a\xc9\x13\x04\x82\xc1\xe3\x40\x7e\x90\x00\x80\x41\x70\x06\x5f\ \x70\x80\x19\xd4\x6d\x16\x73\x9f\x39\x8a\x24\x2b\x9c\xfd\x45\x31\ \x1c\x59\x6e\xe0\x7e\x94\x86\x36\xe4\x9c\x76\x0e\x39\x94\x05\x54\ \xa9\xe0\x16\xb7\x42\x2a\x2f\xc2\xf7\x32\x27\x1c\x07\x3a\x60\x41\ \xdc\xbe\xc7\x20\x7d\x89\xa8\x1b\xe1\xf6\xf5\x9b\xd8\xdc\x89\xc8\ \xe2\xb1\xbd\x41\x10\x50\x19\xe8\x99\x1a\x93\x1c\xb0\x44\x15\xb2\ \x9f\x88\xdc\x79\xd5\xda\xee\x59\x07\x7e\xfd\x46\x8c\x40\x0a\x97\ \x18\xd8\x81\x0e\x18\x48\xce\xe0\x49\x61\x23\x50\xaf\xd7\xf1\xc2\ \xf9\xcf\x63\xb6\x13\x8d\xad\xfe\xb7\x12\xb8\x37\x00\xce\xc8\xb1\ \x71\x1c\x97\x85\x1a\x32\x94\x02\xa1\xa7\x21\x05\x3b\xd8\x01\x22\ \x90\x92\x23\xb0\x90\x8c\x51\x23\x59\xd4\x51\x14\xa5\x43\xa9\x4a\ \xa8\x51\x97\x13\x40\x11\xb0\x67\x64\x7d\x89\xe1\x30\x47\x59\x94\ \x50\xda\xf5\x0b\x0c\x97\xa8\x86\xc7\x10\xf8\x8a\x12\x9b\xac\x04\ \x94\x79\xe8\xb9\x46\x44\xa7\xbd\x83\x7b\xcb\x4b\x68\x77\x7b\x2e\ \x73\xcf\xf7\xdd\x3c\xa8\x84\x15\x04\x81\x0f\x3f\x08\x21\x3d\x39\ \xb6\x9e\x40\x37\xc3\x73\x65\xe1\xa0\xf5\xfb\xf5\x6d\x57\x02\x8f\ \xcc\x39\x48\x00\x29\xf0\x84\x73\xc0\x92\x79\x98\x3d\x64\xa7\xd9\ \x99\x73\x38\x39\xba\x7e\xd2\x35\xe7\x7e\x99\x18\x17\xb4\x32\xc8\ \x4a\x20\x4e\x34\xb2\x42\x21\xb7\xfb\x6a\x40\x25\x30\x93\x36\x21\ \x83\xeb\x01\x01\x54\x67\xe6\x30\x7f\xa6\x09\xe9\x79\x6e\x36\x64\ \x85\x41\x77\xa0\x90\xe4\x06\x69\xae\xd1\xb7\xb1\x3f\xd4\xd8\xcd\ \x34\x7a\x43\xe3\x62\x6c\x41\x67\x69\x6e\xa0\x0c\x5c\x89\x3a\x03\ \x8d\x66\x35\x04\x04\x0e\x16\xc0\x19\x29\x05\x7c\xa1\xec\xf5\x3b\ \x81\x3b\x9a\xe1\xfb\x57\x76\x30\x5b\x15\x18\x94\x06\x89\x25\x1c\ \x14\x06\x79\x39\x82\x02\x4a\x63\x50\x8e\x9e\x15\x18\xc0\x38\x04\ \x97\x60\xe4\x96\x2e\x1d\x6f\x73\x4a\xa0\xa0\xfd\x24\x73\x80\x6a\ \x15\x70\x86\xe9\xa9\x06\x4a\x0e\xdc\x6f\x15\xb8\x8b\x02\xca\xd0\ \xb0\x11\x60\x42\x42\xba\x9a\x73\x70\xc9\xc0\x8d\x86\x60\x39\xbc\ \xb2\x0f\x3d\xe8\x23\xdd\x8d\x30\xe8\x45\x28\x8b\x1c\x53\x47\x4f\ \x62\xfe\xd8\x09\x54\x7c\x01\x23\x30\xc9\x35\x84\xb3\x3f\xf4\x05\ \x18\x37\x90\x9e\xef\xb2\x28\xb3\x14\x26\xdd\x45\x96\xc6\xc8\x7a\ \x16\x49\x17\xc3\x24\x86\xca\xfa\x10\x6a\x80\x9a\xd4\x98\xae\x49\ \x1c\x6e\x56\x71\xee\xb9\x06\xe6\x4e\x37\x70\xe4\xd0\x34\x9a\x33\ \x1a\x6f\x74\x7c\xd7\x57\x1e\x4d\xca\xc9\x46\x31\x09\x90\x96\x34\ \xc6\xfa\x3b\x7f\x42\xda\xfa\x10\x53\x15\x89\x43\x8d\x10\x0b\xd3\ \x35\xcc\x1f\x6d\x62\x76\xba\x8e\x99\xc6\x09\x1c\x9d\x9d\xc6\x9c\ \xc5\x73\x53\x75\x54\x2b\x81\x6b\xd4\x52\x29\xa4\x83\x0c\xbb\xfd\ \x04\xbd\xfe\x10\x8b\x26\xc0\x40\x0b\xe4\x93\xcc\x01\x0e\x27\xc0\ \x5a\xe6\x63\x3b\x6a\xe1\xe2\x91\x1c\x3f\xfd\xf1\x77\xb0\xb1\xb9\ \x85\xcd\x8d\x75\xb4\x5a\x2d\x44\xdd\x36\x9a\xd0\x38\x73\xfc\x38\ \x82\x30\x74\x9f\xe1\x24\xcb\xa9\xeb\xdd\x1c\x31\xc6\x8c\x46\xb2\ \x86\x61\x40\x3d\x14\xd0\x05\x47\x3a\x89\x00\x8c\x1c\xf0\x03\x09\ \x66\x4a\x57\x0e\xc6\x04\xee\x7d\xf8\x08\x97\x2f\x5f\xc6\x60\x30\ \x70\x23\x76\x6a\x6a\x0a\xc7\x4e\x7c\xce\xcd\x81\x4f\x5b\x44\x19\ \xd0\xb5\x06\x0d\xb6\xfd\x9b\xf0\x63\xa7\xcc\x91\x06\xa3\x41\xc4\ \x19\x77\x83\x65\x7d\x7d\x9d\xc8\xdd\x97\xf1\xb8\xcd\x9c\xbe\x03\ \x93\x2e\x9f\x26\xab\xcf\xe0\xfb\xf2\x60\x01\x9c\x8d\x26\xa1\xe4\ \xee\x45\xce\x01\x03\x43\x84\xf4\xb1\x71\x1f\x19\x21\x04\xed\xc9\ \xee\xc9\x04\xf8\x1c\x01\x33\x28\xd2\x0e\x98\x19\xdb\xc0\x9e\xe1\ \x80\x13\xe0\xc8\x7d\xc1\x5d\x7d\x61\xc6\xdf\x89\x71\x8d\xff\x93\ \x15\x48\xa0\xfb\xf0\x06\x56\x97\xde\x47\xb7\xbb\xb2\x0e\x60\x68\ \x51\x3e\x53\x80\x10\x80\x27\xb9\x05\x95\xc0\x69\xfd\xaf\x17\xe9\ \x67\xfd\x16\xee\xfe\xed\x0f\xb8\x7f\xeb\xc1\xf6\xda\xda\x8d\xeb\ \x00\x56\x2c\x7a\xfb\xdf\x02\x3e\x6a\x42\xc9\x20\xe5\xbf\x32\x06\ \x14\x5d\xad\x34\xa5\x3e\x20\xfb\x69\xff\xa9\x25\x10\x82\xbb\x9a\ \x6b\x53\x62\xe5\xfa\x9f\x71\xef\xda\x72\x6f\x75\xe5\xd6\xad\xa2\ \x48\x48\xc0\x7b\x16\xdd\x7d\x05\xc0\x30\x67\x89\x20\x21\x16\x9c\ \x33\x68\xad\x31\x3b\x3b\x8b\x4b\x97\x2e\x61\x61\x61\x01\xd3\xd3\ \xd3\x68\x34\x1a\xee\x3f\x63\x29\x85\x8d\x9e\x7b\xe6\x5c\x20\xcf\ \x4b\x3c\x7d\x9a\x98\x76\xbb\xc7\xda\xed\x18\xbd\xdd\x0c\x77\xaf\ \x3d\x1a\x3e\x79\x7c\xe7\x4e\x92\x6c\xbd\x0d\xe0\x9a\xc5\x47\x16\ \xf9\x33\x07\x51\xa3\x0a\xcc\x1f\x06\xe2\xc3\x4d\x84\xba\x81\xbc\ \xc8\x71\xe1\xc2\x4b\x38\x7f\xfe\x05\x4b\x90\x43\x29\xed\x66\x7f\ \xb7\x9b\x22\x49\x62\xc4\x71\x86\x28\x4a\xcc\xf6\x76\x57\x6d\x6d\ \xed\x0c\xdb\xed\xad\x7e\xaf\x17\xc5\x69\xda\xe9\xc6\xf1\x56\x7b\ \x75\xf5\xe1\xd6\x60\xb0\xfb\x00\x00\x65\x7f\xdf\xa2\x6f\xec\xda\ \x57\x80\xe7\x4b\x7f\xd0\x4f\x71\xf5\xb7\xaf\x61\x63\xed\x09\xce\ \xce\x1f\x31\x0f\x1f\x6d\xe3\xf1\x4a\x8b\x45\x51\xdf\x92\x26\x26\ \x8a\x76\xcb\x4e\x27\xca\xba\xdd\x9d\x7e\x1c\xb7\xe3\x38\xde\x89\ \xba\xdd\xcd\x76\xbb\xbd\xd1\x4e\xd3\x5e\x44\x04\x16\xb1\x45\x6f\ \x14\x9f\x5a\xb4\x2c\x36\x69\x3f\x26\xdf\x4f\xc0\xe3\x47\x6b\x1b\ \x3f\xff\xc1\x2f\x16\xef\xbe\xf7\x7e\x91\x26\x59\xb1\x94\xdf\xcb\ \xae\xbc\xfe\xf7\x7e\xad\x86\xdd\x7e\x3f\xea\x46\xd1\x46\x7b\x67\ \x67\x6d\x7b\x38\x1c\x10\xc1\xee\x98\x64\x0c\xb7\x4f\x2c\x32\x8b\ \xe1\x9e\x98\x5b\xde\xf2\xc0\x49\x78\x6f\xe9\xf6\xcf\x7a\xbd\x27\ \x2f\xa7\x83\x56\x7d\x30\x88\x22\xad\x4b\x52\xdf\x27\xec\x21\x7c\ \x3a\x7a\x4e\x1d\xc1\x98\x64\x4c\xa4\x70\xf0\xda\x5f\xc0\xc3\x47\ \x7f\x7c\x1d\xc0\x3b\x16\xcd\x51\x26\xbd\xbd\x59\x7c\x8c\x48\x4f\ \xc8\x31\xb9\x80\x11\xe1\xf2\x68\x3e\x14\x23\x22\x83\xff\xe3\xfa\ \x27\x0a\xd7\x77\xe2\xf8\x4e\x6d\x80\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x06\xe8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x7a\x49\x44\x41\x54\x58\xc3\xed\ \x57\x09\x4c\x54\x57\x14\x1d\x6a\xed\xa6\x4d\x69\x69\xb5\x2e\x15\ \xf7\x1d\xb1\x20\x8a\x0a\x28\x2a\xb2\xa9\x88\xc0\x20\x28\x22\xae\ \xe0\x30\x08\x6e\x6c\x23\x42\x01\xc5\x71\x41\x76\x71\xa1\x0a\x28\ \xe2\x5a\xc0\x0a\x5a\x91\x60\xc0\x15\xad\x88\x68\xcd\x18\xd4\xaa\ \xd4\x5a\xb1\x2e\xe8\x8c\x0a\x9e\x9e\x0f\x3f\x8d\x52\x29\x9a\x9a\ \x36\x69\x9c\xe4\x64\x32\x33\xff\xdd\x73\xef\x39\xf7\xde\xff\x47\ \x02\x40\xf2\x5f\x42\xf2\x36\x81\xff\x65\x02\x66\x52\x85\x91\x99\ \x34\x58\x66\xea\x14\x14\x6f\xea\x18\x98\x66\xea\x18\x90\x3e\xd4\ \x7e\xc1\xaa\x81\xb6\xde\x93\x25\x12\xc9\xc7\x44\x33\xc9\x9b\x7e\ \x0d\x9b\x18\xd2\x97\xc4\x11\xc3\x9c\x17\x17\x7b\x2c\xdc\x7c\x39\ \x60\xf9\xe1\xdb\xa1\xd1\x17\xab\x15\x2b\xae\xa8\x15\xcb\xaf\xa8\ \x03\xa3\xce\x3c\x90\x29\x76\xdf\x1a\x6c\xe7\x97\x6f\x60\x31\x5d\ \xc6\x23\x9f\x10\xef\xbe\x01\xe2\xc5\x96\x24\x4d\x99\x34\x37\x59\ \x15\x91\x50\x76\x37\x3c\x41\x53\x2b\x0f\x07\x26\x2d\x00\xc6\x7a\ \x02\xa3\xa7\x02\x23\xdd\x00\x6b\x77\xc0\x7d\x1e\x10\x16\x5d\xf9\ \xc4\xc2\x75\xc9\xb5\xd6\xba\x7a\x52\x1e\xd7\xf9\xc7\xc4\xd3\x17\ \xa5\x56\x28\x93\xaf\x3e\x0c\x8c\x06\xdc\x02\x49\x24\x03\x4c\xa6\ \x01\x86\x93\x01\x3d\x29\xd0\xdb\x1e\xe8\x66\x4b\x8c\x06\xfa\xd9\ \x00\xd2\x39\xc0\x82\xf0\x22\x75\xaf\xc1\x13\x72\x18\xc6\xe0\xf5\ \x89\x9d\x17\xeb\x12\x8a\x49\xbe\xc9\xaa\x95\x1b\x49\xbc\x06\x70\ \x0d\x02\x2c\xe4\xc0\x50\x56\x6c\x4c\x0c\x64\x12\x83\xbc\x09\x92\ \xe9\x7b\x00\x3d\x5d\x80\x4e\x63\x00\x5d\x0b\x60\x88\x13\x10\x10\ \xa5\x7e\x36\xd0\x56\x56\xc9\x70\x4e\xaf\x45\x3e\x7c\x62\x88\xdc\ \xc6\x23\xaa\x2c\x3c\xbe\xa4\x2a\x3c\x19\x98\xba\x84\x15\xfb\x01\ \x66\x73\x89\xf9\x94\x5b\x01\xd8\x47\x01\x93\xa9\xc6\xd4\x38\x26\ \xc6\xf7\x71\xdf\x50\x11\x5f\xa0\xef\x14\xa0\xab\x1d\x60\xe4\x0c\ \xcc\xa5\x45\xe6\x4e\x01\x77\x19\xd2\xf7\xb5\xaa\x96\x2d\xd9\x71\ \x35\x26\x5d\x53\xeb\x4d\x92\xf1\x01\xf4\x96\xa4\x23\xfc\x01\x9b\ \x08\x92\x92\x70\x7e\x3a\xb0\x7c\x2f\xb0\xbe\x10\xd8\x54\x04\x24\ \xfc\x00\xf8\x6f\xa5\xec\x2b\xa8\x0e\x13\xed\xc3\x5e\x18\xcc\x5e\ \xf0\x5d\xc6\xe4\xbc\xe3\xab\x19\x5a\xf1\x0a\xe4\x0a\x27\xa1\xea\ \xc8\xc4\x92\xaa\x88\x75\x24\x0a\x63\xd5\x24\x1d\x45\xbf\x6d\x22\ \xd9\x6c\x09\xf4\x74\x1b\x10\x7b\x08\xc8\x2a\x03\xb6\x1e\x54\xd5\ \x84\xc4\xee\x51\x7b\x2c\x88\x7b\x18\xb9\x2e\x4f\xb3\xbd\x84\x92\ \x67\x50\x09\x5e\x6b\x4c\x6b\x46\xd1\x2a\x45\x2c\xed\x19\x23\xbf\ \xc7\xf0\x4b\xfe\x1c\x1f\x8e\x86\x31\xbf\xf8\x88\xd0\x7a\x5e\x72\ \x07\xcf\x98\x0b\xb1\x69\x37\x35\xf3\xe9\xb5\x53\x08\x60\x49\x99\ \xad\x59\xb1\x34\x06\x90\xb1\x62\xe5\x01\x60\x57\x29\xb0\xad\x40\ \x55\x33\xc6\x23\xf4\x41\x5f\xd3\x89\x57\x3b\xf4\x1a\x5a\xac\xd3\ \xae\xfb\x4e\x36\xda\xb1\xb5\xbb\x4a\x34\x89\xf9\xb4\x24\x91\x7d\ \x12\x54\x1f\x63\x55\x9a\xfa\x99\x91\xb5\xe7\xed\x3a\x05\x04\xf2\ \xc4\xd4\xb2\xdf\x0d\x2d\x67\x6d\xea\xd2\xdf\x62\xbc\xb8\x28\xb4\ \x98\x58\xf0\x0c\xff\xd4\x8a\xd8\x2d\x9a\x5a\x2f\x25\xbd\xe5\x41\ \x2b\xfa\x69\xbf\x0a\xf0\x48\x61\x15\x39\x40\xca\x31\x20\xfb\xf4\ \x9d\x5a\x59\xe8\x86\x47\x02\xf1\x97\x9d\xf4\xf3\x79\x76\x39\xe1\ \x45\x8c\x63\x3c\x7f\xdf\xc8\xf4\xdf\x32\x4f\x02\x3e\xa9\x4c\x9a\ \x71\x7c\xe3\x81\xc8\xa4\x13\x4f\xba\x1b\x8d\x39\xcf\x6b\xfc\x04\ \x05\x4a\x0b\x8f\x30\xab\x75\xa7\x1f\xe9\x9b\xbb\x65\xe9\x99\xb9\ \xc8\xb9\xc1\xb6\xf9\x45\xe4\x5c\x57\x6e\x06\xa6\xd1\x6f\x3b\xca\ \x6e\xcb\x77\x97\x24\x40\x9e\x09\xac\x2c\x00\xf6\x94\x03\x69\xfb\ \xcb\x9e\x8e\x70\xf6\xbf\xdf\xa1\xb7\x49\x09\x83\xad\x21\x3c\x09\ \x73\xa2\x33\xf1\x59\xff\x11\xee\x16\x5e\x21\x29\xd7\x77\xfd\x48\ \x1b\xb6\x53\x31\x5a\x18\x9f\x45\x05\xdd\x42\x1f\x68\xb7\xea\xb8\ \x9b\xd7\xb8\x08\x0d\x56\x96\xcb\x80\x2b\xf9\xa3\x97\xe2\x94\xda\ \x78\x9c\xef\x85\xf0\xa4\xeb\x1a\x7f\x7a\xeb\xb6\x94\xcb\x84\x72\ \xdb\x0b\x5d\xfd\x2d\x83\xb0\xc1\xd6\x1e\x07\xf2\xca\xd5\xcf\x16\ \x29\xb7\x70\x96\xed\x2b\x3e\x6f\xdf\x63\x5f\x9d\x97\x12\x89\x1d\ \xd1\xf5\xf9\x55\x6b\xe2\xb0\x68\xda\xb2\x0d\xfb\x7f\xcd\x64\x1f\ \x84\x91\x58\xf9\x1d\x10\x9e\x74\xf8\x71\x57\x03\x2b\xa1\xfa\x30\ \xc2\x58\xb0\xe0\xdc\xae\x5c\x60\x4e\x28\x3b\xdb\x07\x70\x5c\x54\ \x5d\xeb\x42\x52\x07\x62\x1c\xbb\x55\x4a\xc9\x66\x6d\x01\x42\xe9\ \x75\x2a\x2b\xc9\x2d\xbb\x53\x3b\x51\xae\xac\xee\xd4\x6f\x44\x29\ \x03\xc4\x10\x33\x89\x21\x44\xeb\x86\xab\x55\xb8\x17\x64\x1c\xbc\ \x58\x9d\xce\xa4\xe3\x38\x11\x69\x07\xef\xd4\x9a\x3b\xf9\xdf\x6f\ \xa1\xdd\x3a\x93\x3f\xbb\x12\x6d\xeb\x12\xd8\xb9\x9f\xbe\x72\xa6\ \x4d\xbc\x00\x53\x8e\x8b\x55\x58\x7d\xd5\x93\xd6\x03\x9e\x94\x6e\ \x29\x3b\x3c\x93\x92\xe7\x9c\xba\x51\x23\x4a\x7e\x92\x87\x95\x84\ \x83\x58\x75\x0b\xe2\x9d\x86\xf7\x06\xa9\x3c\xe6\x42\xf1\x65\x36\ \x28\x7b\x60\xe7\x51\xf5\x33\x47\x2f\x65\xb5\x78\x36\x98\x30\x24\ \x3e\xa8\x4b\x60\x0f\x09\x66\x2b\xeb\x67\x7a\x24\x95\xb0\x67\x87\ \x4f\xa1\xff\x3e\x94\x2c\x92\x33\x9d\x41\xf2\xb5\x59\x27\x9e\x8c\ \x24\x79\xbb\x6e\x03\x8f\xf0\x60\x24\x31\x96\x68\xdf\xd8\x0d\x45\ \x68\xee\xf4\xbc\xb2\xbb\x85\x2a\x20\xff\x02\x30\x2f\x72\x8b\x5a\ \x54\x4d\x48\xdc\x96\xf8\xa2\x6e\xe2\x84\x04\x72\x8a\xd9\x9d\xdc\ \x6c\x76\x4c\xc2\x81\x92\x4f\xe5\x78\x79\xd3\xb3\x10\xf6\x46\xf2\ \x19\x56\x70\xec\x46\x0d\x1b\xb4\x52\xbb\x95\x6e\x8e\xb8\x3c\xac\ \x88\x36\x8d\x91\x0b\xbb\xc3\xc3\x3f\x59\x55\xfe\x0b\x70\xfa\x2a\ \xf7\xc4\xd2\xad\x8f\x44\xdf\x57\x13\x13\x5e\x48\x5c\x48\x20\xef\ \x14\xc7\x8a\xdd\xed\xbe\x11\x98\xc1\xa5\x31\x97\xcd\x16\x4c\x55\ \xa2\x38\x66\x6b\x0a\xea\xc9\xdb\x77\x1f\x54\xc8\xcb\x17\x0a\xd6\ \x8a\xd9\xbf\xbc\x72\xa7\x20\x1d\x26\xb0\xf3\x50\xe9\x4d\x4d\x79\ \x25\xc9\xa3\xb6\x3e\x14\xc9\x85\x7e\x11\xee\x80\xba\x2f\x9c\x15\ \x12\x28\xa2\x44\x71\x5c\x16\x41\x9c\xed\xc5\x6c\xb6\x65\x5c\xa3\ \xd1\xec\xdc\xb5\xdc\x6c\x99\x97\xb8\x52\xb3\x4e\x3e\xee\x3d\x64\ \xc2\x51\x9d\xb6\xdd\x3c\xc5\xec\x1b\x7d\xa0\x60\xbc\x39\x71\x19\ \x45\xb7\x4a\x2a\x34\xb5\xce\xb2\x15\xf7\xba\x19\x5a\x97\x8b\x23\ \xea\x4c\x74\x24\x9a\x37\x3c\x70\xee\xec\xcf\xc0\xc1\x9f\x48\x56\ \x5a\xdf\x6c\x7b\xe8\x5b\x76\x05\xb0\x8f\xf2\x15\xdc\x00\xce\x56\ \x01\xeb\x76\x17\xa9\xfb\x98\x48\x77\xf0\x48\x1f\xe2\xfd\x46\x1e\ \x4a\xec\x42\x13\xf7\x5e\xcb\x3f\x7d\x53\x33\x76\x7a\xc4\xed\xce\ \xfa\xa3\x84\xfd\xb0\x52\xbc\xeb\xfd\x95\x5c\x9c\xd5\x8c\xec\xa2\ \xcb\x9a\xec\xe2\x4b\x4f\xb3\x8a\x54\x35\xd9\x47\x55\x35\x39\xc4\ \xde\x63\xc4\x71\x55\xcd\xf7\x44\xee\x09\x01\x97\x9e\xba\xfa\xae\ \xae\x6a\xa5\xab\xe7\x23\xfa\xaf\xd5\xe0\xf9\xa0\x87\x47\xc0\xfa\ \x8b\xab\xd3\x0a\xab\x0c\x2d\x67\x9e\xfb\xaa\xe7\xe0\x03\xfc\x3a\ \x82\xb0\x17\x65\x6f\xfe\x52\xc9\x0c\x46\xcf\x70\x19\x60\x35\xbb\ \xa0\xdf\xf0\xc9\xe7\xf5\xcc\x5c\x2f\x35\x8a\x61\xae\xaa\x36\x5d\ \x0c\x72\xc4\xb9\xef\xf2\x12\x1b\x9a\x75\x37\xb2\x35\xef\x3d\xd4\ \x71\xe3\x87\x2d\x3f\x8d\xe2\x67\x39\x31\x92\x68\xd7\xd4\xa3\x97\ \xb0\xb9\x06\x88\x8b\x61\x76\x13\x70\x13\x44\x13\x1f\xa5\xb4\x1a\ \xc4\x11\x3e\x6b\x13\x5f\x0b\xf7\x31\xd1\x2a\xed\x57\x79\xee\x6b\ \x26\x26\xd1\x46\x6c\xb0\xbf\x43\x9b\x26\x9e\x6a\xb5\xea\x96\x8b\ \x44\xd2\x92\x78\xef\x25\x49\xfe\xfb\xaf\xb7\xff\x8c\xde\x26\xd0\ \x14\xfe\x00\xc6\x8f\x6d\x5f\x51\xaa\x96\x24\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\xd1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x63\x49\x44\x41\x54\x58\xc3\xc5\ \x97\xcd\x6f\x1b\x55\x14\xc5\x7f\x77\x66\x92\x89\xd3\x7c\xd4\xad\ \x17\x09\x20\xd2\x4d\x55\x51\x10\x08\x51\x84\xca\x0a\x09\xd8\x20\ \xc4\xa2\x52\x17\x2c\x2a\x24\x28\x6b\x36\x2c\x90\xfa\x1f\xc0\x82\ \x0d\xa8\x3b\x04\x2c\xd8\x82\x10\xaa\xda\x45\x05\x64\x07\x08\x04\ \xa1\x34\x40\x85\x11\x6e\x21\xb5\x13\x9c\xe6\xc3\xb5\xd3\x79\xef\ \x5d\x16\xf3\xec\x8c\x9d\xc4\xa6\xf5\x54\x1d\xe9\x4a\x1e\x69\x3c\ \xe7\xdc\x73\xce\xbb\xef\x8d\xa8\x2a\xf7\xf2\x0a\xb8\xc7\x57\xf4\ \x7f\x1e\x7a\xff\x35\x79\xf2\xe6\x16\x91\x55\xa4\x30\xca\x13\xc6\ \x12\xaa\x22\x00\x51\xc0\x4c\x18\x30\xeb\x94\xc0\x3a\x1a\xd5\x35\ \x3e\x7b\xfb\x73\xe6\x81\xa6\xaa\xba\x41\xef\x96\x41\x16\x9c\x7d\ \x5d\xce\x3c\xf8\xc8\x0b\xaf\x3a\xa7\xa1\xaa\x06\x0f\x1c\x7d\x76\ \xdc\x39\x15\x54\x05\x60\xaa\x34\x17\x8d\x17\xef\x1f\x09\xc2\x82\ \x98\xad\x86\x7e\xf1\xde\x89\xea\x77\x8b\xff\xbe\xfb\xe1\x57\x7c\ \x02\xd4\x55\xd5\xf6\x05\x50\xd5\xbe\x75\xf6\x34\x3f\xaa\xaa\xaa\ \x3a\x5f\xb6\xab\x9c\x5a\x6d\xb5\x6e\x6a\xb5\xba\xa4\xc6\x18\xbd\ \xb2\xf0\x75\xf2\xe6\x8b\x7c\xfb\xfc\xa3\xbc\x02\x14\xdb\x4d\xee\ \x55\x03\x33\xe0\x94\x10\x2c\x60\x7c\x39\xd2\xfb\xb4\x04\x8b\x31\ \xb7\x58\x5e\xae\x11\x86\x21\x87\x1e\x7a\x3a\x3a\xf9\xc6\x07\x8f\ \x1d\x9e\xe1\xe5\x97\x8e\xf1\x1c\x30\x21\x22\x72\xc7\x21\x4c\xbd\ \xd6\x2e\xd0\xb4\x1c\xe0\x50\x2c\xaa\x09\xcd\x66\x23\x0d\x55\x14\ \xf1\xf0\xf1\x93\xa3\xa7\xdf\xfa\xf8\x99\xb9\x12\xa7\x80\x43\x40\ \x61\xc8\x55\x90\x02\x81\x45\x31\x9e\x40\x02\x18\xc4\x93\xc9\xe6\ \x6d\xdf\xbe\x09\x8e\x3c\x75\x22\x2e\x4d\x72\x1c\x38\x0a\x4c\x0e\ \xb5\x0a\x14\x87\x60\xd2\xd4\x6e\xe7\x97\x54\x19\x08\x02\xc5\x98\ \x16\x17\x2f\x5e\x60\x6d\x6d\x83\x20\x80\xfd\xfb\x8b\x68\x54\x8c\ \x61\x75\x0e\x98\x00\xaa\x77\xac\x80\x64\x2c\xd0\x4e\x1e\x12\xda\ \xd9\x18\x1d\x15\x66\x66\x0f\xd2\x6c\xd6\xd9\xdc\xac\x61\xcc\x26\ \x85\xc2\x08\xad\xe6\x2a\x5e\xfe\x68\x48\x05\xac\x57\x40\x3b\x7d\ \x4b\x46\x85\x20\x54\xee\x9b\x2d\x31\x35\xf9\x38\xc6\x18\xa2\x28\ \x22\x8e\x0f\x70\x7e\x04\xcd\x65\x10\x09\xce\x77\x4c\xc6\x06\x45\ \x11\x04\x25\x10\x21\x8e\x85\x38\xce\x5a\x3d\x46\x18\x74\xa4\xd3\ \x1c\x32\x90\xf8\xb7\xa4\xa0\xda\x87\x6e\x4a\xce\xe5\x37\x8a\xdb\ \x5e\xb7\x3b\x6f\x83\x48\x4f\x2c\xb7\x1b\x15\xff\x9f\x9c\x08\x08\ \x0e\xcd\x58\xd0\x26\xa1\x3b\xd6\xc3\x36\x1d\xc9\x57\x81\xd4\x82\ \xfe\x24\x7b\xe9\xe5\x48\x40\xfd\xe0\x91\x2e\x03\xba\x41\xe9\x49\ \x9a\xe6\x69\x41\x56\x01\xd9\xa5\x63\x7a\x08\xe5\xae\x40\x9a\x01\ \xd3\xe9\x51\x76\x89\x1c\x3e\x96\xd2\x09\xa7\xcd\xdf\x82\xde\x5e\ \xa5\x13\xc6\x14\x7a\xfb\x79\xbd\x1b\x0a\x24\x3b\xe4\xee\xf6\x5c\ \xbb\x16\x67\xce\x0a\xec\x9c\x84\xba\xeb\x73\xd9\xdd\x43\xf3\x1f\ \x44\x83\x62\xd7\xfd\xfb\x2e\x0c\xa2\xac\xf3\xfd\x94\x68\x0f\xec\ \x5c\x97\x61\xba\x15\x0f\x3a\xe1\xc7\xc0\x38\x50\x64\x6d\x25\x70\ \x1b\x4d\x5a\xb9\x6d\x46\x3b\x2d\x80\xf4\x48\x39\x86\x30\x8d\x52\ \xa4\x56\x59\xb1\x95\xc5\xcb\xf6\xa7\x2f\x3f\x4a\xae\x2c\xfe\xd0\ \xb8\x74\x95\x3f\x80\x55\x60\x6b\x48\x05\xd4\x1f\x40\x15\x25\x04\ \x0a\x08\x53\x28\x07\xa8\x55\x56\xed\xc2\xfc\xb9\xe4\xd7\x6f\x3e\ \x35\xe5\x72\x79\xfd\xef\x3a\xcb\xdf\xff\xc9\x6f\xe5\x2a\x65\xe0\ \x1a\x70\x19\x58\x1f\x32\x03\xa0\x8c\xa1\x4c\x03\x07\x3d\xe8\x85\ \x0e\xe8\x2f\xd7\xa8\x5c\xaa\xf0\xfb\xd2\x0d\xfe\x02\x6a\xc0\x12\ \xf0\x8f\x3f\x86\xd5\x81\xcd\x21\x15\x38\x42\xad\xb2\x6c\x17\xe6\ \xcf\xef\x05\x7a\x1d\xb8\xea\x41\xeb\xc0\x86\x07\xdd\xd2\x01\x5f\ \x3e\x03\x09\xac\x37\x39\xf7\xce\xa9\xc2\xf4\xf5\x1b\xd8\x9f\x2b\ \x2c\xed\x01\xba\xe2\x65\x6e\x00\x89\xde\xc6\x17\xef\xc0\x4f\x33\ \x11\x29\x01\xc7\x80\xc3\xc0\x2d\x0f\x38\x14\xe8\xed\x12\x18\x01\ \xa6\xfd\xd1\xda\x7a\x69\x87\x02\xcd\x5e\xff\x01\xf9\x68\x10\x8e\ \x11\x57\x76\x24\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x09\ \x00\x57\xb8\x67\ \x00\x70\ \x00\x72\x00\x69\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x08\xc8\x58\x67\ \x00\x73\ \x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x04\xb2\x58\xc7\ \x00\x75\ \x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x04\xca\x57\xa7\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x32\ \x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x15\x1e\ \x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xc8\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/images/0000755000076500000240000000000012613140041023177 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/images/new.png0000644000076500000240000000172112613140041024477 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<cIDATXÃÅ—ÍoUÅwf’‰Ó|Ô­ ÒMUQQ„Ê Ø Ä¢R,*$(k6,úÀ‚ ¨;,Ø‚ªÚEd¡4@…n!µœæÃµÓyï]óìŒÄ¦õTéJi<çÜsλï¨*÷ò ¸ÇWôzÿ5yòæ‘U¤0ÊÆª"QÀL0ë”À:Õ5>{ûs榪ºAï–Aœ}]Î<øÈ ¯:§¡ª}vÜ9T`ª4ï ‚˜­†~ñÞ‰êw‹ÿ¾ûáW|ÔUÕöPÕ¾uö4?ªªª:_¶«œZmµnjµº¤Æ½²ðuòæ‹|ûü£¼ÛMîU3à”,`|9Òû´‹1·X^®†!‡z::ùÆžáå—Žñ0!"rÇ!L½Ö.дàP,ª Íf# Uñðñ“£§ßúø™¹§€C@aÈUE1ž@ēɿmß¾ Ž–Ò §Íß‚Þ^¥Æzûy½ $;äîö\»gΠ위ºësÙÝCóDƒb×ýû. ¢¬óý”hì\—aº:áÇÀ8Pdm%pMZ¹mF;-€ôH9†0R¤VY±•ÅËö§/?J®,þиt•?€U`kHÔ@% S(¨UVíÂü¹ä×o>5åryýï:ËßÿÉoå*eàpX2 Œ¡L=è…è/ר\ªðûÒ þjÀð?†ÕÍ!8B­²læÏïz¸êAëÀ†ÝÒ_> ¬79÷ΩÂôõØŸ+,íºâen‰ÞÆïÀO3)Ç€ÃÀ-8èí¦ýÑÚzi‡Í^ÿùhŽWv$IEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/images/print.png0000644000076500000240000000330412613140041025041 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÙܲÚ{IDATXíWiLTWv!b•—¨%R Eª¤IµVMli°h£¶Å²Fý£,aQH$dÂÐ"BYD@@ö‘}S6 ²©$ bƒ‚ ©_Ϲ™1£€´ó’/óÞ¼{Î÷ÝsÎ=÷¾yóT.;»è/##.HÒÓ«%—.VGFÞ¬ML¬¨­ªj¿/•6A‰+WJÛ÷|I¦óçièZhoÿG¡üñsLÿ µ˜Óˆ‚íÛ¬=ë—‰ÞP ùå2Ç‘éç‹‚­mXyc÷8dÏñ¯àq[Èî+‚–FØØû¤ÉÐ:µ`çôœÌ~!,шKK¯¡—ªÐðÔB%3 -I÷¤þJ9 "’š §g(Õäj˜Gͨ(¿ý-Šº1' º€ÜN ¶t††;êÉÌTcu`gÄŽ³:€Œ6 ­ Hi’ꀄj ¦ÈlJõíãhjꀯ¯ï+25øßä‰D.•– «p©R”1qPózžŒahh½½½xøð!Åàà PPP€††xxxLnÚ´ÉiÎvmcc³+,,L„º££÷îÝ¿r¹\¸|ù²øïÕ«WÇØØFGG?IÞÝÝÊÊJ¹¶¶68p`ˆ¨¾™u•9r$O&“‰Ð©Š`C&âü–••}’œÅ666ŠÐs 0ykk«(Tö“¼Y{Um «VæOU;aB¾çœ*Éy¶÷ïß©àÚ`---‚ðÉ“'xüø1=z$Š´¦¦ÁÁÁ Zè ºïg¤‚ÂSÛÙÙ‰¹D´··‹™sñqJ¥R‹wL¦ ;“²`&äH0nÞ¼) ÔÝÝ[·n•Ýïìß¿¿– P8K?óÌùjΕK” ŽW×Lvv¶(d???899áØ±cðööæ°û¨i!&&ÎÎÎHIIŽUEp01Ï’CÍbÓÒÒpýúu±b’““qþüy®x¸ºº‚z 233áï ïªÃB„±±ñìöíÛt÷î]QdýýýHOO‡———XzL¦Á¡M† yuˆð21 â4•——‹”ù%ºÂ+çWîؼyóìöîÝ+a¢7oÞjž);c!"¯bžå¹sçD¤˜˜Ÿy‹ãœ«’³ çŸ{¡‘‘Ñì¨KxÉMOO ‚óÌ5Á…äéé‰ãÇÃÇÇG„—£ Ì¹*9§’ß]¸pT[\ùâÿ3gÎÐŽi8»€;wJXé»wïæÁÅÇME™óɹ~…PÚß·hÏMÎÍÍ ¦¦¦}Dç4CÀ† ôi‰dP?xËa›K©’s$N:jd }...s ç ‹myS£1ÃDçFÐqå}\WW×cË–-rvÊE÷±ˆÒÒÒ÷ä Úé`mm=+97-¶á«©© 'Ož%ÿ|hñ˜ëè6_¡Ì|Íš5Ñfff#þþþ‰Rw=eس³Ë ‘dQ|Þ“óæÅÝñåË—Â&55”ÞÁ¥K—Ö’ßTÂYÅ~°è“çAÂjžuëÖ•ìÚµkŠw@vxëÖ-±ò °²²¦¢ôÃŋմJŠ©[v‰Ùr¸IÌ4E²oñâÅ•äç*Á•ðµÂï"uÏ%<Ð@[[ÛqýúõmVVV -Û¶m=®ZµªYGG§ÒÄÄ|ˆ…¤¦æÂÁÁaBOOO¦¥¥U@¶N(Ή+þÏY‘+Öhùòåúúú ,(¢çD‚;áŽÔÊ•+ãV¯^Ý@÷Y„pÅ7‚¡"¥ 5òµ¤˜‡ñ ",Sœr´Ÿeß~TJ—¨óÅüÑÂG´còÉüIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/images/save.png0000644000076500000240000000354612613140041024653 0ustar philstaff00000000000000‰PNG  IHDR szzô-IDATx^µV]oW~ÎÇ|ì—×nœ8ƉIš&M!ª•¸@Ê%‰ûŠ+î¸AHH !!7\ñ¸©pƒ¢ Q"7 Ñ æ³­S+I›¤±ãµ½;›YïÌÎÎÌ9‡ó-+Ó:õâXÞ9Ç?Ïû¼ïyÇ̃ÿu]¼øm Tª¨h]Öã§t©êZ•­ô”1hz¹º¼|ùM™åÕ ÷\øÂ·¾”¥ƒS@Ycàu? kBzUVPcŒÕÔÁZÐY˜ ˜µ1†ö4+=K*™'ÅÜéçÙÙÏòÆÌ Íñ—_½öÀ«ãO8<ø—_üÊË/eÚSyQ°;7ßbÜ}^à 0Î!¸ƒç ’…¡ŠEµÚ¢^«¢V«`îèN_ø2®líöðÖ2”*ç¼bÑÙWÀÉs§Îã{¯òßýcÈ?ºùæ$~øÝ¡T@ð=‰j¥‚0 øžÝûR@Θ ¥çγ\á'W;xx{ Ï›wá«\ ¡>!`7ɳ7ok¿ùë :×–ðÍS_ÿê×°±¾Ž~ÒG– ¡”BYȇCh­aŒq±,Ë1è̉>N:‰õ¯ šç(W¯#ì+€^TôÇ”q/GOcÜxû*Ö6·Q…#ãœì§ %ÁeO‹DТßû¾oËPCµÑ„ü@!¬V!”@¹‡k_$Z ŽÀ€dà Á½2'DHÙAËí9í8õ‡ô\?ˆ  É‚Áã@~€Ap_p€ÔmsŸ9Š$+œýE1Ynà~”†6äœv9”T©à·B*/Â÷2':`AÜ¾Ç }‰¨áöõ›ØÜ‰Èâ±½AP虓°D²ŸˆÜyÕÚîY~ýFŒ@ —ØHÎàIa#P¯×ñÂùÏc¶­þ·¸7Îȱq—…2”¡§!;Ø"’#°ŒQ#YÔQ¥C©J¨Q—@°gd}‰á0GY”PÚõ —¨†ÇøŠ›¬”yè¹FD§½ƒ{ËKhw{.sÏ÷Ý<¨„?!=9¶ž@7Ãseá õûõmWÌ9H)ð„sÀ’y˜=d§Ù™s89º~Ò5ç~™´2ÈJ N4²B!·ûj@%0“6!ƒëTgæ0¦ éyn6d…Aw äi®Ñ·±?ÔØÍ4zCãblAgin  \‰:f5À)|¡ìõ;;šáûWv0[”‰%y9‚JcPŽžÀ8—`ä–.osJ  ý$s€jp†é©JÜo¸‹Êа`BBºšspÉÀ†`9¼²=è#Ý0èE(‹SGObþØ T|#0É5„³?ô7žï²(³&ÝE–ÆÈzIÃ$†Êúj€šÔ˜®InVqî¹æN7päÐ4š3ot|×WMÊÉF1 –4Æú;BÚúS‰C Ó5ÌmbvºŽ™Æ ÆœÅsSuT+kÔR)¤ƒ »ý½þ‹&À@ ä“Ì'ÀZæc;jáâ‘?ýñw°±¹…Íu´Z-DÝ6šÐ8sü8‚0tŸá$Ë©ëÝ1ÆŒF²†a@=ÐG:‰Œð fJWÆî}ø—/_Æ`0p#vjj ÇN|ÎÍO[Dе ¶ý›ðc§Ì‘£AÄwƒe}}ÈÝ—ñ¸Íœ¾“.Ÿ&«Ïàûò`œ&¡äîEÎC„ô±q!íÉîÉø3(Ò˜ÛÀžá€àÈ}Á]}aÆß‰qÿ“H ûðV—ÞG·»²`hQ>S€€'¹•Àiý¯égýîþí¸ëÁöÚÚëV,zûß>jBÉ å¿2]­4¥> ûiÿ©%‚»škSbåúŸqïÚrouåÖ­¢HHÀ{Ý}À0g‰ !œ3h­1;;‹K—.aaaÓÓÓh4î?c)…ž{æ\ ÏK<}š˜v»ÇÚí½Ý w¯=>y|çN’l½ àšÅGù3Q£ ÌâÃM„º¼ÈqáÂK8þKC)íf·›"IbÄq†(JÌövWmmí Ûí­~¯ÅiÚéÆñV{uõáÖ`°ûeߢoìÚW€çKÐOqõ·¯ací ÎÎ1mãñJ‹EQß’&&ŠvËN'ʺÝ~·ã8Þ‰ºÝÍv»½ÑNÓ^D±EoŸZ´,6i?&ßOÀãGk?ÿÁ/ï¾÷~‘&Y±”ßË®¼þ÷~­†Ý~?êFÑF{ggm{8Áî˜d ·O,2‹áž˜[ÞòÀIxoéöÏz½'/§ƒV}0ˆ"­KRß'ì!|:zNÁ˜dL¤pðÚ_ÀÃG|À;ÍQ&½½Y|ŒHOÈ1¹€áòh>#"ƒÿãú' ×wâøNm€IEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/dockwidgets/images/undo.png0000644000076500000240000000335012613140041024653 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<zIDATXÃíW LTWjí¦Miiµ.÷± Š (*²©ˆÀ ("®à0nl#BÅqAvq¡ (âZÀ Z‘`À­ˆhÍÔªÔZ±.èŒ žž?R)šš6iœäd23ÿÝsï9÷ÞÿG@ò_Bò6ÿefR…‘™4Xfêoê˜fê>Ô~Áª¶Þ“%ÉÇD3É›~ ›Ò—ÄÜ{,Ü|9`ùáÛ¡Ñ«+®¨˯¨£Î<)vßlç—o`1]Æ#Ÿï¾âÅ–$M™47Y‘Pv7 ŒÜI$L¦†“=)ÐÛèfKŒúÙÒ9À‚ð"u¯ÁrÆàõ‰ëŠI¾Éª•I¼p ,äÀPVlL dƒ¼ ’é{=]€Nc] `ˆ¥~6ÐVVÉpN¯E>|bˆÜÆ#ª,<¾¤*<˜º„ûfs‰ù”[ØG“©ÆÔ8&Æ÷qßP_ ï «`ä Ì¥EæNwÒ÷µª–-Ùq5&]SëM’ñô–¤#ü›’’p~:°|/°¾ØT$üøo¥ì+¨íÃ^Ì^ð]Æä¼ã«Zñ ä '¡êÈÄ’ªˆu$ cÕ$E¿m"Ùl ôt{È*¶TÕ„ÄîQ{,ˆ{¹.O³½„’gP ^kLkFÑ*E,í#¿ÇðKþކ1¿øˆÐz^rϘ ±i75óéµS`I™­Y±4±bå`W)°­@U3Æ#ôA_Ó‰W;ôZ¬Ó®ûN6Ú±µ»J4‰ù´$‘}TcUšú™‘µçí:òÄÔ²ß -gmêÒßb¼¸(´˜Xð ÿÔŠØ-šZ/%½åA+úi¿ ðHa9@Ê1 ûôZYè†Gñ—ôóyv9áEŒc<ßÈôß2O>©Lšq|ãȤOº9ÏküJ 0«u§é›»e陹ȹÁ¶ùEä\Wn¦Ño;ÊnËw—$@ž ¬,ö”iûËžŽpö¿ß¡·I ƒ­!< s¢3ñYÿî^!)×wýH¶S1ZŸEÝBh·ê¸›×¸ V–Ë€+ù£—â”Úxœï…ð¤ëz붔˄rÛ ]ý-ƒ°ÁÖòÊÕÏ)·p–í+>oßc_—‰ÑõùUkâ°hÚ² ûÍd„‘XùžtøqW+¡ú0ÂX°àÜ®\`N(;Ûp\T]ëBRb»UJÉfmBéu*+É-»S;Q®¬îÔoD)Ä3‰!D놫U¸d¼XΤã8iïÔš;ùßo¡Ý:“?»mëعŸ¾r¦M¼SŽ‹UX}Õ“Öž”n);<“’眺Q#J~’‡•„ƒXu â†÷©<æBñe6({`çQõ3G/eµx6˜0$>¨K` f+ëgz$•°g‡O¡ÿ>”,’3AòµY'žŒ$y»nð`$1–hߨ Ehîô¼²»…* ÿ0/r‹ZTMHÜ–ø¢nâ„rŠÙÜlvLÂ’OåxyÓ³öFòVpìF ´R»•nޏ<¬ˆ6‘ »ÃÃ?YUþ pú*÷ÄÒ­DßW^H\H ïÇŠÝí¾˜Á¥1—ÍLU¢8fk êÉÛwTÈË ÖŠÙ¿¼r§ &°óPéMMy%É£¶>É…~/œ(¢Dq\AœíÅl¶e\£ÑìܵÜl™—¸R³N>î=dÂQ¶Ý<Åì} `¼9qE·J*4µÎ²÷ºZ—‹#êLt$š7k_ ÷1Ñ*íWyîk&&ÑFl°¿C›&žjµê–‹DÒ’xï%Iþû¯·ÿŒÞ&ÐþÆm_Qª–$IEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/0000755000076500000240000000000012613140041020174 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/0000755000076500000240000000000012613140041021441 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/copy.png0000644000076500000240000000247212613140041023126 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÌIDATXõ—]L[eÆwo¼ÙåI q×&ãN¸pÑ…D½Pãå+.&J'†ª‹™àТl†9ܘ€@l¦CÊ +ƒ(ÌÚÑ–ÒÒJ{ú¥ÐïßÿÛÇÌ*‡“<9o!œç÷<ïG‡ÊFϽúé»LZ&aj`ÊÙéyÙš?]Pò¥Áé§WÃ@0„¢­Ç2Š'X"s¿ykÚKr{ç¬ÚØÈ˜@„™…ã‘1)Ka%”D8šBs‡Æ¾Äÿ“y$ñÈX’Ï„]ŒÂå "K£ôÃïM4uY°ëØ6Õž:ü̹ç_.?VžEEU *™Þ¯­Ã±‰Ç¬¶%ü¹è‡kXöÆÒ¯œ¾pŸAÙ€]‡™ŠŠŠÌ’Z[[ݤ¯U­þ¯Tߦ195…Ù¹9è&&PPP€!Ío|ÞI¦ù̘\ÀáOAô…ðC¯ÎÍjöPCfØåŠÇãðz½H§Ó˜œœDee5fg¼ftÓ@2-xðÝQ¬ápF£‘S©~êíEã'Ÿa†A8–ÜPwuãLC#Î5Çí‘q\¼>,/ÀÆÆôzýc@}}ýP2ˆÐFf› ‚Áˆ©¬—ºdn€¦Ø:Ø~E"”+*0®@çmWÚª4¾|Sæ5@f:ÃÃÃèeõ÷÷÷C«Õ¢ªºcwõ*wí¶Ú»e y·ÛíBgg'zzz8PIiniõ×o°ùg¸Ð%3ÀÖÖß @¢(Âï÷cmm §•Ðü®ç©É|Á ˜=@›ÜÛA677ùv¤VÕèûUà©Gç;€Ì%€$3O$(+¯â¸‹˜ 6ZÕ0ÿ˜'“<=MIÉ©J ·³‰=Åø0±|qõ¤êɘ‹ÅP¦¨‚zHÀ˜¸k朙ûçWdÒSjˆF£Ü< ¡¸´×Üf‡ä dÄ(;dH=œs™Ó¹@ ÅeU¸Ø- :c®}ià£v™þ]=¥&­®®rˆ·J*p¹WÀ=¸~žîÌg.í@ªD‹Ž’ÓqLß+++X__ç'Yßt PO¿Ìe¸24ì§ÉXÚëdNi)9D@õÓÏÞ|[–ëO~u¸qøq,ž~½Nm¦7ª¬žd,m72%Ñ#òäÌ'hï ¼f[O5âÉxG•JŤ.Í7RR:÷)µÃáà"ãÅÅEõâñ—\ô¹“é®---né`¡ÔÒ— ———áóù`³Ùø}ii‰C ͲТ’R“éNßxT;5`µZyõÔ ýÎ`0$òòòî³gÙ@SS“[šgJO"ªšÆ‹™7@ŸGGG#mmmÞüü|ûÛA¦²½šÿ'@ss3ŸJGT?U???ÏëÖh4‘ºº:çô]L0ÍÆxG¥Rév:¼bJJo>”´¾¾Þ™““#™gSuVn‹Å‚Hmm­377WVÓÝøFLÂA™n×ßC9V…pÈIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/cut.png0000644000076500000240000000245312613140041022746 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<½IDATXÃíWkL“W>#qÉ2é—¨Te8ö‡2“f,[pÄ0ÿ`¢.:Nº1‰[³€Ù „X‹…²‚•^äf Ž1øÃFË-ܨ·ji‘ò¯ ܸ aÙ²“<í—ó}ýÞç¼ïó^J€ü“ ÿ t (DÙq+F€®ÝdÝÆf"Lø•Ä‹GÈ¡Ó÷ÈŽ—;82a+A …œ¾0H.Ý€@2«yMô¾ûrhd‘^£Qôî…GõнƒËM ›ö@t/½2= ‰?H¥,Œ1yÁ»ˆKÆ×Æ& ¹ýBþÅ+6FŒ\N“§§§ ÌÓ9¹˜c6 Òä£+A Œ)ž*ß7GëÜ{µÌ‰ž@D–Tƒ+, 6FHõd*{.Tø7¿À4*TßbˆRÕ,XtzEUõÈ mtÂÔs÷!¾sQ•®ÐÏ唃‡´žÌ.Ôݯ™Ë°¯¯¯>¿Ò`µÛí€øyä>Ä^«´¹ˆ/†€'ÓÀgùŽõ`×^3ºvÚsîhØÇÇGŸ««° Á‡²ö.ç–7÷wsaؽè^€/fš †ß©6B÷ðØŸÔϥ犘-~þm—Tk__¸ÐÑsbrVNć—ÔŒ0é·8@¤Ö1ž…›~m©%[—Ù æ. ó$ß6Ž{½ÑÍBÈ o©<ѽV«w„ó’\»R©„úúz0™L uß5ÁQ±dÉQD>¶vÌ´@O“_~ÓÖßß2™ D"¨T*J¥ Ñh K[9¾é•à¸S¯y,ó—Ž"žÇ†æS)ö‚‚æâ   àñx`±X@[^ûÏ& -¦SÎg”Ï Lƒâ[{æÂ`š² ˆÅbÈÌÌ„¢¢"P«ÕÐÙÙÉ`ìþɹÉÛ§u.·ÏK€®·Ø)pÀj—¬xˆÊ‚â)‰>—+![–cãG„&Ø’rdŽo¿£Ñ-­-ðËÀ 8ñ¾³bÁ\i„……„FÜ&ç2¬,Ï3µì;ãºÓ3¯‚åþz‰žÞüb÷<’{f«O[Ê5íXCC=444€¥·2ÅÃóéÀe<’å(ž6]åœ*2x}ôƒ.Zl1 %êq÷/Ë'ï‡_þÓäD LhôÉ>u• ´··Ãׯ–1® fñ6m8hí÷*>]åXªñGZõ¶Y ³CÉ‘8 9ù©–!ú\ ϳÿÿ7üOøç‡¹DÃÏIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/new.png0000644000076500000240000000152412613140041022742 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<æIDATXÃÕ—ÍNa†ë5”•{qáÒÄà¸â\¸ô\±0ê–&bX¸°‘X Ñ¿‰¤±R¤HE”þÐCÿ¦¦e€ãy{ú…QJ‚É!†IÞœ3§óÍûœóM›N„ˆ"ÿS‘sÀÇÕnÿ¥û¬Ç==d ©ð12<<¼j4::ºV<¯&“ÉV:v‰Dk`` Íknh¤8Òááq™ºï·É²,Úßß'†ñxÍëŠ@?ó°Ç¥Lf¹ Åb±:¯{pˆSww²lÛ¡ùùÏd×uéùÄDB&{Áɪ7JÎÍSøp]‹T‚@gOÎí¦Ggféõ›·Ÿœ¤©©iz÷þE£Ñe^AÀïí¶%†…šã”]ÍÑäô+z2þ”žÅ^ÐLb‹UÚõ <ÿjÍ67«”/nS‰c·…×~QðyÌÍ]µÇ{ÛîŸ;¾äˆ]¸½îâ”Ê3àuäÆuWbØ9êæ3DÔ§àô:­9"˜˜hr€˜kPS*-¹1âNSŒ òmû(¶|E›;ÛjüiŽûÅS(ðC¸fI÷kùR‡×¾TÈUºN­K¯…Þ·Â’=O¦³Þ£±qëÚÐõ˜³n©l4¤kÿàZSÔ Yoäî½â¥ÁËK|mŒu‡5¨ú·ÝeÙ<þžÏ7½Éºx&oFhòÿ™”žé?¿BÓôü½œž¥~Ql%¡’• wIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/open.png0000644000076500000240000000403112613140041023106 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<«IDATXíW[P“göÊÎìÌöb/¼ÙéÎìn½ÚÙ›µÎº;{°­Ìz±ÎÎ:³vTpuÛâÖ¶T»¥ mÁ‚QB€€€!’@Hs$!gr€B œ GµTxöû~0X‹}gžù/’üÏû>Ïû¾ß—]vý˜ ñ ‚Áu‚ÏýþH¼› áW¯ïµ*ŒÖeÛ`[ 'ñ3ú"üÜ>vH~Š ¹¶Y2Ï­B9þDöQØÇæè‡†={öXSR®,Ê::NâåIÃÄ1·>Iù,`›]YSMM¶4ëû 1y`Å»ï¾?Å«¾ƒñ‰)LOÏ®’ï×¼tŸ¾ã²CO´3@‹{Í=.4ëì¨Wö ‡S…2^5C¼°ôÁ`\&¿K|áH$8AýÝês'ñ¹'H‡—Á×» "U7Ü7¢¸Nˆ,V>ÌVÛ:q,k,üÎç'‘6“•?F}¥þÄoôY1¶~ï Z{œà?0¡L(CF²ù&ÒùÅeÌ-,!4¿ˆ½{÷ZÉ;~ºm$~CF=5iu³€Ò?ËÄâšP¡Z´lñY ¶ ¦]/²sq·žÿ 1% ÍcbjƒC'äݼ-Ó°;’3&ÔSµÓûXOˆÅ!ˆ,CPºFÐí Bå›B›sü©ÏZî*tȼÉE §l“Ï›ˆ'§Ào¢ÖÖ%ÂQÛ(‡Æ¯‚/b”M‰$"êR-šB«èy¡ÅÏStö £Óá‡Ô<€½ ]Õ ‘• /yñƪ©Ô³s LÅ”ØÝï…Éb·¼¥å•KóË«#7ÙæÙ„—Ë<Ðhò£Ýî_'–;† ³x×}æ¤ø<3*6ªÜS3!ŒŽ3Ó&ä7 ñÁÅQs¯¾e`ü ##òΡ¾]¹¸QƒttM§ g€©¸ÝêƒØèB“ÊÌø|åË,ˆÚ$Q‰§g熆G`w8I‚:$|ø!®³ á™\€o ÐÞá,«Ä}ïÝaëÿŸÀ¹ö!HÌýO}îÔ"U„ªšºM>GäŽø<<„ÓݽÁˆÂâbœ~/=ô/ƒ„¼Åÿ-î:C(Q‘÷öñNÜ¿}„3iã ô3«àÉTh58ÑØÝ žX‰¬\ö3>Gªžœžeäî÷¢×lAC'bã éÖÀEÏR$¸†²žn´ÛPÑD…΋J~ m¾›['Ñ ™øe"î)ô(Èx5 ­>ªÜc“ð Ãf]ŽÄK—ÃÊÃÔcÀNzI1Nú‰”[;„|…%jJÕèò0£("øù3 t.¡¨¾¥| ²J*ðÏãqQåöFÑçò@«7 ýj’¿HƒÍ7'©Ú@Là{ˆREÝý qA—Å݈œAüùÍ·]„ël´CÐ(÷N#§ü²K«ñQêWHþoêúXQ¹G‚ãð ø`4™QÉ«ÂûgÏAþ@?én²¹oiÒ›*/råäuö¡ð¾•ùœÊ)ÂS¸Ý)Ü+vQÈÅ•ky8Ÿ€›·n3c‘Ûjs@"mÇ…„Pt» ó+€Ÿ4X÷$ |„JÓ8úa†œVýU³¬;¸:Ù!z/༺]&¾Áƒ”oØ8ŸœŠ=c¯™én*·F׃¤ËÉHÿ:‹ŒÕÇÑØ3ø81 †^›øÝûQOÔñ™îšª­“`+] 9õ¼ð¾g½êÌ=JUm”ÔñCáeS@ðÊ÷%`+njÇ©„DÄ9ŠÜ|6ZZÅ8ƒ/95Èj˜æ¢ÕÒ'õšzL¡Id·™ÛnF¹Ú¥v9,9=ùNìÙrÔG ;«Fˆcÿ9ßîû=ùœ¿€“ñp£­ÄOJénºX¨ï,ú”˜P(·@é<ùWì)*w-Ágû¶¹äD¾Ì²Züãä<ô7°ró°ïÀP Ñ!‰'e*¦K…>¿!ÕFä.[!° ®åÜâÒä‡o<¯<ç–5œiEåøû±X?‡7öïÇ:’«¤ !ípê5U!‹4[É7*4nÔI:ÃrsŽm•û‡$àJespäø)>|˜Œc.2*\"ÕÓ]~MÜ 6étv§wŒäˆ¶ùž„·•û"½Iý€ mô2JxLœKIõ¦.|Âme6Yñƒ\—šÁQ{ ó×Î%&6ÈýÇÈÕ‚ÜÎ^NEX…xö]\©UªûÀ–ÛP­uã®TA/Ê r¿ºÓj£·¢Qø¯CO¹-ˆËæášHª/š5æÇzó-Wx¬¨Ü¯½¬ÜÑâÝ\uÞ˯E¹v2g`õ§—©Ü÷Ò©Ü;øóÂñ‚ÊîP 9”¸ ÂÈ£‡Ã/"÷ÿÚmŠÝa™Õ¶Øk»^2¾/‰ÿf¹_ü€=ÏIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/paste.png0000644000076500000240000000315512613140041023267 0ustar philstaff00000000000000‰PNG  IHDR szzô4IDATx^­—[lTÇÆsÎÙ‹½öú ¾²ic$BJ!"¡-•b¥/îKh+•¦U¥Æ`UªÚ´ªúV UÊ”'Ú„)­Ä‹¥RƒyÅ9iÓ„š›cjì²;»öz½»Þ³g¦Ãh…årlˆÉ'}úŸ‡ý~óŸ™sJ)‚$„xxžÇkH)õwÖ(' ¸C»h—R¾ÆcdYÖö»@·9ÿ&ü·íõâ`]DDnΉŠ+W®P]S@ Pe(A)fÓi^©/¼´Nl;ñ¹Gƒ|[CL;…D•2â¶Ä¶!!p>SlŒ;€D*ðœàË@P4`ÄHiŸ$Nœ8!Ò‡––g emå(¥´AXW%âØDBÃs\¼=A÷XŽ\$¾©½}÷ï-ËZܱcGYUU•ÓØØ~à†††Ð¥K—Ü®®®ðÖªDU,ÂsÕ1òžO¡(‘Ja Aرˆ†lær¢Ž?Ÿÿ+ M"Àf–„ïûxžGuuµžPKôêÕ«‡„(¥ÞZÀ²A¶-Ú¶8¤XÂŒL¹ì{õ;Ô76|/Á„g2ÊËËÍf>vìØ&½.A,ÐÙÙ©:¤l!Y¶-ÇÆBP´ÍDzˆ8–®`YxÀÜÜ555 räÈ‘ÍÀˆ¢Çb¹°mt0fË#6±¨£Ç,2‹“™c©yîÌ.èßErù<«È,A6›5§féÿm8°èX ´tŽ áÀSб¤ËŒƒÓ²—¦}¯³µã¬Ûû: /´sûÎ$ýýý$“I”Ræúøñã躬3çÎãèÑ£>|˜ÞÞ^‰„,¡ÜíÿÎæøç”OkÇÏøæ/ß&öõ7™|¦ƒkþ.®ñ-dk­{N^VsúogÑwMîÜâ¯vrýúu gkÖ?‹™ëx<Žã8%8À#–%˜ÊA:ÞÊþß½MÕ®×(„bÛBY‚lArf‘Oîf¸êrúadÕ^®Üg2ׯ…î›í‡¡ÍÍÍ´µµ755¡¡ ƒFÜqßÿéo¨lØHâì;L^É”±µy›[¶óIy%c —ÏfòÜÎ2¡íˆ L'çØ·+Êú%3{=kêêêÌu*•2J+ ¹Zpác(,ÊæÆÙR”’{Ã}$eÛÚLMÛË|<œfÒ_ÀÍx,Ìk/x µt:B¡ -ÝêŽ*ø>`ÁƸ P#‹S·¥–’xv}é¬ÇhÿŸ˜®¼LËöƒ¸ a¼‚¤X”xÚ!ÇB-ª€ãi –ÕÖÇC„Ê#ü¿jc!ž© sá߃ìÙùÊ£¹2G(akK!¥%0*¤\@X¥*Ìõ#úpl†ñYïýúÜÊÔàD\¢Ï“=Ó¥RòPjYVL vùÕ_†½·€=“gÓº2òy_»hêίÔpùÝà%žx L¸<¢Ö/Uò‡>ÏõO3D·±óÅ—Y\N`ŽÛS(À%mÔR}±µ–Ý[ât¿—¥j÷WùÑo µ˜µ7ÕØÒËSpSxó3³i %ýÕ‚Öðð)çãç3æu¨ÖË÷‰Á3}ú×rŒ²7Dzþ­”Ìo÷DTØ_p’ ý×=?ý~B¦Ïßöïîv;ü’¨ãsÊu]pWí@2« ~*Ó½·üÔÍi9ô—th¿¢Ó¶í¯}ž%XXXðÒ'Ožœºƒ>IÊ­ã³*×;â§nLËÑRèYt‹= ÀÐÐÛÓÓ“ÒNÏÎΞ.½ßèîê)Œ„…¯055UÐ/"©S§N%ÇÇÇ/g~쮸 KßvÚO&…@@aZüÞà`º»»;¥ßŠÌ$Ð^ísÍaíšw3n`pðýt___úÌ™3¦Å¥Ðx‰µžc!DxØOis´ø±ú½ú*_òØIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/images/save.png0000644000076500000240000000224312613140041023106 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<5IDATXÃå—ÍTEÅ·êÖ{¯ÛnÇù@‰FM4™DH˜ÄŒþL\ñ.M\kXÃŽÄ΂htA\ âÄÆ=`PQ`¢ ƒÓý^÷”‹ªîù`æ „QVR©Î{·ëž:÷Ô©zê½ç~6å>·>€]»v½ìýòN5ëػ」;vœ<:ÏÌ—7XœïÜS¦Ú òÜk¼¸g€‹|øî€Ûpüìß?0x.ý¸Àþ·ÎoËryš #–ÓŸdüÕ}›k@E°@xp,#˲m00–aP|#%"+ؑՕsç΃*¸Ò² Ò,ŒI IÞw:ç·¡Õ‚v+Žm(r²ú8Ö ã¯¼Ikñú欬°Fؽ{çk놮€Z¨VêmQ¯µ‚÷ ¦„g5‚¨ •,Ã# Àð/Þ#&|ˆ#Ä!Яª‹öØ'aa½%% ð4M£:ó˜‰lÚc V˜_)FüaÍra-Ñ€: TIO4/à…Ä!‰Ãg ’i؉â‡X‹ïv‘¼€¼íßj#íòŸwPEÕ x:ëTx›œ3x$¼þòówhè6h¤¾ñëÆüß±R^‚DM_„ ¥8ç¶ÅˆžK¹v³Rª¸PïZÅ0}±Ë@Űô&­WùU.ááÆÒ2õÌp}É„-éJœÀsåf—+7»¬QW?תd~Å'¢)¬Ü µw¦l¨Á© È5¯›5Y1žþ{éïñ‚ï›X0+WVU!ÑüçSßòë™,-Þ¸§úWj<õìNžya¨3[1|‡÷÷¿Á·nÝ¢( Dk-ÖZTUÅ9‡ªb­Å˜ðßååeò<ï÷#Íù¸ò-pVPÜ1:¶rO8~œééiŒ1x˜`rròŽYØ1:Ö߆®Ô Up6¬¢V¯÷k933ÃÐÐÖZ¼÷4›Í»P«×pш´Ôˆœ '\ *¨V«dYÖ§¸7Þis©AK­8ǽ#´×Œ1ˆDß:¸«›¯5¨ óö.=Žƒ)mãÕÛ©÷åVl­ô‘Ž ÃòïÛà¡‘aÔµ+—Yœ¿¾6øÀ`­ ÛÃÀP­ÂìÅKœýîΟœž¦6`$^J í‘'©= o8ÈfÇ':ñ*ç52(ºpùêUÎ4ŽÑüú‹¹ÙNoà³>à§Ó'W™éÚ£†Uæ»<_o|wîÙ_‡Æ_˜šþôãõsl}ò5â·ÚÿÝ×ñ?MðK¹èF‰¯IEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/mdi/mdi.py0000755000076500000240000003727112613140041021334 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSignalMapper, QSize, QTextStream, Qt) from PyQt5.QtGui import QIcon, QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMdiArea, QMessageBox, QTextEdit, QWidget) import mdi_rc class MdiChild(QTextEdit): sequenceNumber = 1 def __init__(self): super(MdiChild, self).__init__() self.setAttribute(Qt.WA_DeleteOnClose) self.isUntitled = True def newFile(self): self.isUntitled = True self.curFile = "document%d.txt" % MdiChild.sequenceNumber MdiChild.sequenceNumber += 1 self.setWindowTitle(self.curFile + '[*]') self.document().contentsChanged.connect(self.documentWasModified) def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return False instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.document().contentsChanged.connect(self.documentWasModified) return True def save(self): if self.isUntitled: return self.saveAs() else: return self.saveFile(self.curFile) def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save As", self.curFile) if not fileName: return False return self.saveFile(fileName) def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) return True def userFriendlyCurrentFile(self): return self.strippedName(self.curFile) def currentFile(self): return self.curFile def closeEvent(self, event): if self.maybeSave(): event.accept() else: event.ignore() def documentWasModified(self): self.setWindowModified(self.document().isModified()) def maybeSave(self): if self.document().isModified(): ret = QMessageBox.warning(self, "MDI", "'%s' has been modified.\nDo you want to save your " "changes?" % self.userFriendlyCurrentFile(), QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.save() if ret == QMessageBox.Cancel: return False return True def setCurrentFile(self, fileName): self.curFile = QFileInfo(fileName).canonicalFilePath() self.isUntitled = False self.document().setModified(False) self.setWindowModified(False) self.setWindowTitle(self.userFriendlyCurrentFile() + "[*]") def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.mdiArea = QMdiArea() self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.setCentralWidget(self.mdiArea) self.mdiArea.subWindowActivated.connect(self.updateMenus) self.windowMapper = QSignalMapper(self) self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.updateMenus() self.readSettings() self.setWindowTitle("MDI") def closeEvent(self, event): self.mdiArea.closeAllSubWindows() if self.mdiArea.currentSubWindow(): event.ignore() else: self.writeSettings() event.accept() def newFile(self): child = self.createMdiChild() child.newFile() child.show() def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: existing = self.findMdiChild(fileName) if existing: self.mdiArea.setActiveSubWindow(existing) return child = self.createMdiChild() if child.loadFile(fileName): self.statusBar().showMessage("File loaded", 2000) child.show() else: child.close() def save(self): if self.activeMdiChild() and self.activeMdiChild().save(): self.statusBar().showMessage("File saved", 2000) def saveAs(self): if self.activeMdiChild() and self.activeMdiChild().saveAs(): self.statusBar().showMessage("File saved", 2000) def cut(self): if self.activeMdiChild(): self.activeMdiChild().cut() def copy(self): if self.activeMdiChild(): self.activeMdiChild().copy() def paste(self): if self.activeMdiChild(): self.activeMdiChild().paste() def about(self): QMessageBox.about(self, "About MDI", "The MDI example demonstrates how to write multiple " "document interface applications using Qt.") def updateMenus(self): hasMdiChild = (self.activeMdiChild() is not None) self.saveAct.setEnabled(hasMdiChild) self.saveAsAct.setEnabled(hasMdiChild) self.pasteAct.setEnabled(hasMdiChild) self.closeAct.setEnabled(hasMdiChild) self.closeAllAct.setEnabled(hasMdiChild) self.tileAct.setEnabled(hasMdiChild) self.cascadeAct.setEnabled(hasMdiChild) self.nextAct.setEnabled(hasMdiChild) self.previousAct.setEnabled(hasMdiChild) self.separatorAct.setVisible(hasMdiChild) hasSelection = (self.activeMdiChild() is not None and self.activeMdiChild().textCursor().hasSelection()) self.cutAct.setEnabled(hasSelection) self.copyAct.setEnabled(hasSelection) def updateWindowMenu(self): self.windowMenu.clear() self.windowMenu.addAction(self.closeAct) self.windowMenu.addAction(self.closeAllAct) self.windowMenu.addSeparator() self.windowMenu.addAction(self.tileAct) self.windowMenu.addAction(self.cascadeAct) self.windowMenu.addSeparator() self.windowMenu.addAction(self.nextAct) self.windowMenu.addAction(self.previousAct) self.windowMenu.addAction(self.separatorAct) windows = self.mdiArea.subWindowList() self.separatorAct.setVisible(len(windows) != 0) for i, window in enumerate(windows): child = window.widget() text = "%d %s" % (i + 1, child.userFriendlyCurrentFile()) if i < 9: text = '&' + text action = self.windowMenu.addAction(text) action.setCheckable(True) action.setChecked(child is self.activeMdiChild()) action.triggered.connect(self.windowMapper.map) self.windowMapper.setMapping(action, window) def createMdiChild(self): child = MdiChild() self.mdiArea.addSubWindow(child) child.copyAvailable.connect(self.cutAct.setEnabled) child.copyAvailable.connect(self.copyAct.setEnabled) return child def createActions(self): self.newAct = QAction(QIcon(':/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit, statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.cutAct = QAction(QIcon(':/images/cut.png'), "Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.cut) self.copyAct = QAction(QIcon(':/images/copy.png'), "&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.copy) self.pasteAct = QAction(QIcon(':/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.paste) self.closeAct = QAction("Cl&ose", self, statusTip="Close the active window", triggered=self.mdiArea.closeActiveSubWindow) self.closeAllAct = QAction("Close &All", self, statusTip="Close all the windows", triggered=self.mdiArea.closeAllSubWindows) self.tileAct = QAction("&Tile", self, statusTip="Tile the windows", triggered=self.mdiArea.tileSubWindows) self.cascadeAct = QAction("&Cascade", self, statusTip="Cascade the windows", triggered=self.mdiArea.cascadeSubWindows) self.nextAct = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild, statusTip="Move the focus to the next window", triggered=self.mdiArea.activateNextSubWindow) self.previousAct = QAction("Pre&vious", self, shortcut=QKeySequence.PreviousChild, statusTip="Move the focus to the previous window", triggered=self.mdiArea.activatePreviousSubWindow) self.separatorAct = QAction(self) self.separatorAct.setSeparator(True) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.fileMenu.addSeparator() action = self.fileMenu.addAction("Switch layout direction") action.triggered.connect(self.switchLayoutDirection) self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.windowMenu = self.menuBar().addMenu("&Window") self.updateWindowMenu() self.windowMenu.aboutToShow.connect(self.updateWindowMenu) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newAct) self.fileToolBar.addAction(self.openAct) self.fileToolBar.addAction(self.saveAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.cutAct) self.editToolBar.addAction(self.copyAct) self.editToolBar.addAction(self.pasteAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def readSettings(self): settings = QSettings('Trolltech', 'MDI Example') pos = settings.value('pos', QPoint(200, 200)) size = settings.value('size', QSize(400, 400)) self.move(pos) self.resize(size) def writeSettings(self): settings = QSettings('Trolltech', 'MDI Example') settings.setValue('pos', self.pos()) settings.setValue('size', self.size()) def activeMdiChild(self): activeSubWindow = self.mdiArea.activeSubWindow() if activeSubWindow: return activeSubWindow.widget() return None def findMdiChild(self, fileName): canonicalFilePath = QFileInfo(fileName).canonicalFilePath() for window in self.mdiArea.subWindowList(): if window.widget().currentFile() == canonicalFilePath: return window return None def switchLayoutDirection(self): if self.layoutDirection() == Qt.LeftToRight: QApplication.setLayoutDirection(Qt.RightToLeft) else: QApplication.setLayoutDirection(Qt.LeftToRight) def setActiveSubWindow(self, window): if window: self.mdiArea.setActiveSubWindow(window) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/mainwindows/mdi/mdi.qrc0000644000076500000240000000040712613140041021455 0ustar philstaff00000000000000 images/copy.png images/cut.png images/new.png images/open.png images/paste.png images/save.png PyQt-gpl-5.5.1/examples/mainwindows/mdi/mdi_rc.py0000644000076500000240000010725412613140041022014 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 17:31:28 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x04\xa3\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x35\x49\x44\x41\x54\x58\xc3\xe5\ \x97\xcd\x8f\x54\x45\x14\xc5\x7f\xb7\xea\xd6\x7b\xaf\xdb\x6e\xc7\ \xf9\x40\x9d\x89\x46\x4d\x34\x99\x44\x8d\x1a\x48\x98\xc4\x8c\x1f\ \x1b\xfe\x02\x4c\x5c\xf1\x07\x18\x16\x2e\x4d\x5c\x6b\x58\xc3\x8e\ \xc4\x8d\x1b\x17\xce\x82\x68\x74\x41\x5c\x18\x0d\xe2\xc4\xc6\x00\ \x3d\x60\x50\x51\x19\x60\x02\xa2\x0e\x0c\x83\xd3\xfd\x5e\xf7\x94\ \x8b\xaa\xee\xf9\x60\xe6\x0d\x84\x51\x16\x56\x52\xa9\xce\x7b\xb7\ \xeb\x9e\x3a\xf7\xd4\xa9\x7a\xea\xbd\xe7\x7e\x36\xe5\x3e\xb7\x3e\ \x80\x5d\xbb\x76\xbd\x03\xec\xfd\x8f\xf2\x4e\x35\x1a\x8d\x03\xeb\ \x19\xd8\xbb\xef\xbd\xa3\x3b\x1f\x1f\x76\x00\x9c\x3c\x3a\xcf\xcc\ \x97\x37\x58\x9c\xef\xdc\x53\xa6\xda\xa0\xf2\xdc\x6b\x03\xbc\xb8\ \x67\x10\x80\x8b\x7f\x16\x7c\xf8\xee\x1e\x80\xdb\x00\x70\xfc\xec\ \x1c\xdf\x3f\x30\x04\x78\x2e\xfd\xb8\xc0\xfe\xb7\xce\x6f\xcb\x72\ \x0f\x1d\x79\x9a\x0b\x23\x96\xd3\x9f\x1f\x64\xfc\xd5\x7d\x9b\x6b\ \x40\x45\xb0\x16\x40\x78\x70\x2c\x23\xcb\xb2\x6d\x01\x30\x30\x96\ \x61\x8d\x50\x1b\x7c\x14\x23\x25\x22\x14\x2b\xd8\x18\x91\xd5\x95\ \x73\xe7\xce\x83\x2a\xb8\x04\xd2\x14\xb2\x0c\xd2\x2c\x8c\x49\x0a\ \x49\x12\xde\x77\x3a\x90\xe7\x90\xb7\xa1\xd5\x82\x76\x2b\x8e\x6d\ \x28\x72\xb2\xfa\x38\xd6\x0a\xe3\xaf\xbc\x49\x6b\xf1\xfa\xe6\x00\ \xac\x15\xac\x15\x04\xb0\x46\xd8\xbd\x7b\xe7\x16\x6b\xeb\x86\xae\ \x80\x5a\xa8\x56\x81\xea\x6d\x51\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ \x84\x01\x67\x05\x35\x82\x08\xa8\x0a\x95\x2c\xc3\x23\x20\x1e\x08\ \xc0\xf0\x1e\x2f\x02\xde\x23\x12\x26\x15\x7c\x88\x23\xc4\x21\x1e\ \x3c\x21\x5e\x40\x4d\x58\x18\x40\xd7\x4a\x89\x06\xac\xa0\xda\x63\ \x00\x9a\x33\xbf\x05\x8a\x53\x07\x69\x02\x95\x04\xb2\x34\xf6\x04\ \x12\x07\x4e\xa1\xe8\x40\x5e\x40\x2b\x8f\xbd\x05\x4b\x39\xb4\x73\ \xc8\x0b\x54\x87\x71\x3d\x00\x2a\xe5\x25\x70\x31\x40\xd5\x30\x39\ \xf9\xd2\xd6\x0a\xf3\x3e\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8\x27\x61\ \x61\xbd\x1c\x25\x25\x20\x00\xf0\x81\x8d\x34\x4d\xa3\x3a\xc3\xb3\ \x98\x11\x89\x6c\x07\xda\x63\x09\x56\x98\x5f\x29\x46\xfc\x61\xcd\ \x72\x7f\x61\x1d\x2d\xd1\x80\x3a\x09\x54\x49\x18\x4f\x34\x2f\xe0\ \x9d\x85\xc4\x21\x89\xc3\x67\x09\x92\x69\xd8\x11\x89\xe2\x13\x87\ \x58\x8b\xef\x76\x91\xbc\x80\xbc\x03\xed\x02\xdf\x6a\x23\xed\x02\ \xf2\x02\x9f\x77\x50\x1d\x45\xd5\x20\x78\x3a\xeb\x54\x78\x9b\x06\ \x9c\x33\x78\x0f\x03\x8f\x24\xbc\xfe\xf2\xf3\x77\x68\xe8\x36\x68\ \xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04\x52\x5e\x82\x44\x4d\x5f\x84\ \x8f\x0d\xa5\x38\xe7\xb6\xc5\x88\x9e\x18\x4b\xb9\x76\xb3\x03\x08\ \x9d\x52\x11\xaa\x90\xb8\x50\xef\x5a\xc5\x30\x7d\xb1\xcb\x40\xc5\ \xb0\x0e\xf4\x26\xad\x57\xf9\x55\x2e\xe1\xe1\xc6\xd2\x32\xf5\xcc\ \x70\x7d\xc9\x84\x2d\xe9\x4a\x19\x10\x9c\x1a\xc0\x73\xe5\x66\x97\ \x2b\x37\xbb\xac\x51\x57\x3f\xd7\xaa\x64\x7e\xc5\x27\xa2\x29\xac\ \x05\x15\xc3\x9c\x0b\xb5\x77\xa6\x6c\x17\xa8\xc1\xa9\x20\xc8\x1a\ \x35\xaf\x9b\x35\x1a\x8f\x59\x31\x9e\xfe\x7b\xe9\xef\x14\x00\xf1\ \x82\xef\x9b\x58\x30\x2b\x57\x56\x02\x55\x21\xd1\x90\xfc\xe7\x53\ \xdf\xf2\xeb\x99\x13\x2c\x2d\xde\xb8\xa7\xfa\x57\x6a\x03\x3c\xf5\ \xec\x4e\x9e\x79\x61\x02\x0f\xa8\x33\x5b\x31\x10\x03\x7c\x87\xf7\ \xf7\xbf\xc1\xc2\xc2\x02\xb7\x6e\xdd\xa2\x28\x0a\x44\x04\x6b\x2d\ \xd6\x5a\x54\x15\x55\xc5\x39\x87\xaa\x62\xad\xc5\x98\xf0\xdf\xe5\ \xe5\x65\xf2\x3c\xef\xf7\x23\xcd\xf9\xb8\xf2\x2d\x18\x70\x56\x50\ \x17\x18\xdc\x31\x3a\xb6\x72\x4f\x38\x7e\x9c\xe9\xe9\x69\x8c\x31\ \x78\xef\x99\x98\x98\x60\x72\x72\xf2\x8e\x59\xd8\x31\x3a\xd6\xdf\ \x86\xae\xd4\x09\x55\x70\x36\xac\xa2\x56\xaf\xf7\x6b\x39\x33\x33\ \xc3\xd0\xd0\x10\xd6\x5a\xbc\xf7\x34\x9b\xcd\xbb\x02\x50\xab\xd7\ \x70\xd1\x88\xb4\xd4\x88\x14\x9c\x0b\x27\x5c\xa0\x2a\x00\xa8\x56\ \xab\x64\x59\xd6\xa7\xb8\x37\xde\x69\x73\x1a\xa9\x17\x41\x4b\xad\ \x38\x1e\xc7\xbd\x23\xb4\xd7\x8c\x31\x88\x44\xdf\x8f\x3a\xb8\xab\ \x9b\xaf\x35\xa8\x0d\xf3\xf6\x18\x2e\x3d\x8e\x83\x29\x6d\xe3\xd5\ \xdb\x12\xa9\xf7\xe5\x56\x6c\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ \xdb\x02\xe0\xa1\x91\x61\xd4\xc2\xb5\x2b\x97\x59\x9c\xbf\xbe\x05\ \x03\x36\xf8\xc0\x60\xad\x02\x0b\xdb\xc3\xc0\x50\xad\xc2\xec\xc5\ \x4b\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa6\x36\x04\x60\x24\x5e\ \x4a\x05\x12\x0b\xed\x91\x27\xa9\x3d\x0c\x6f\x1f\x38\xc8\x66\xc7\ \x81\x27\x3a\xf1\x2a\xe7\x35\x1e\x32\x81\x14\x28\xba\x70\xf9\xea\ \x55\xce\x34\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1f\x4e\x1d\x02\x0e\x6f\ \x08\xe0\xb3\x8f\x3e\xe0\xa7\xd3\x27\x57\x99\xe9\xda\xa3\x86\x55\ \xe6\xbb\x1e\x04\x1b\x3c\x5f\x1d\x6f\x7c\x77\xee\x8f\xd9\x5f\x0e\ \x01\x87\x1b\x8d\xc6\x5f\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5\x73\ \x6c\x7d\xf2\x35\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1\x3f\x4d\xf0\ \x4b\xb9\xe8\x46\x89\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x08\x19\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x07\xab\x49\x44\x41\x54\x58\xc3\xad\ \x57\x5b\x50\x93\x67\x1a\xf6\xca\xce\xec\xcc\xf6\x62\x2f\xbc\xd9\ \xe9\xce\xec\x6e\xbd\xda\xd9\x9b\xb5\xce\xba\x3b\x7b\xb0\xad\xcc\ \x7a\xb1\xce\xce\x3a\xb3\x76\x54\x70\x75\xdb\xe2\x81\xd6\xb6\x54\ \x04\xbb\xa5\x20\x6d\xc1\x82\x06\x08\x07\x51\x42\x80\x80\x80\x02\ \x21\x81\x10\x92\x40\x48\x10\x73\x24\x21\x67\x72\x80\x04\x42\x20\ \x9c\x09\x47\xb5\x54\x78\xf6\xfb\x7e\x13\x16\x30\x58\x8b\x7d\x67\ \x9e\xf9\x2f\x92\xfc\xcf\xfb\x3e\xcf\xfb\xbe\xdf\x97\x5d\x00\x76\ \xfd\x98\x20\xf1\x0b\x82\x14\x02\x03\xc1\x75\x82\x03\xcf\xfd\xfe\ \x8f\x48\xbc\x9b\x20\xe1\x57\xaf\xef\xb5\x2a\x8c\xd6\x65\xdb\x02\ \x60\x19\x1e\x5b\x09\x27\xf1\x33\xfa\x19\x81\x22\xfc\xdc\x3e\x76\ \x48\x7e\x8a\xa0\xb9\xb6\x59\x1c\x32\xcf\xad\x42\x39\xfe\x1d\x44\ \xf6\x51\xd8\xc7\xe6\xe8\x87\x86\x3d\x7b\xf6\x58\x53\x52\xae\x2c\ \xca\x3a\x3a\x10\x4e\xe2\xe5\x49\xc3\xc4\x31\x04\xb7\x3e\x49\xf9\ \x2c\x60\x9b\x5d\x59\x53\x4d\x03\x4d\xb6\x11\x34\xeb\xfb\x20\x31\ \x79\x60\x19\x9d\xc5\xbb\xef\xbe\x3f\xc5\xab\xbe\x83\xf1\x89\x29\ \x4c\x4f\xcf\xae\x92\xef\xd7\xbc\x74\x02\x11\x9f\x0f\xbe\x1d\xe3\ \xb2\x04\x43\x4f\xb4\x33\x40\x8b\x7b\x06\xcd\x3d\x2e\x34\xeb\xec\ \xa8\x57\xf6\x20\x87\x53\x85\x32\x5e\x35\x43\xbc\xb0\xf4\x90\x81\ \xc1\x60\x5c\x26\xbf\x4b\x7c\xe1\x04\x48\x1c\x24\x38\x41\xfd\xdd\ \xea\x73\x27\xf1\xb9\x27\x04\x48\x87\x97\xc1\xd7\xbb\x20\x22\x55\ \x37\xdc\x37\xa2\xb8\x4e\x88\x2c\x56\x3e\xcc\x56\xdb\x3a\x71\x04\ \x2c\x16\x6b\x2c\xfc\xce\xe7\x27\x10\x91\x36\x93\x95\x3f\x46\x7d\ \xa5\xfe\x12\xc4\x6f\xf4\x59\x31\xb6\x02\x7e\xef\x20\x5a\x7b\x9c\ \xe0\x3f\x30\xa1\x4c\x28\x43\x46\x0e\x1b\xb2\x0e\xf9\x26\xd2\xf9\ \xc5\x65\xcc\x2d\x2c\x21\x34\xbf\x88\xbd\x7b\xf7\x5a\xc9\x3b\x7e\ \xba\x6d\x02\x24\x7e\x43\x90\x46\x3d\x35\x13\x69\x75\xb3\x80\xd2\ \x3f\x0f\xcb\xc4\xe2\x9a\x50\xa1\x5a\xb4\x6c\xf1\x59\xa0\xb6\xa0\ \xa6\x5d\x8d\x2f\xb2\x73\x71\xb7\x9e\xff\x0c\x31\x25\x9d\x09\xcd\ \x63\x62\x6a\x06\x83\x43\x81\x27\xe4\xdd\xbc\x2d\xd3\xb0\x3b\x92\ \x03\x33\x26\xd4\x53\xb5\xd3\xfb\x58\x4f\x88\xc5\x03\x21\x88\x2c\ \x43\x50\xba\x46\xd0\xed\x09\x42\xe5\x9b\x42\x9b\x73\xfc\xa9\xcf\ \x5a\x1b\xee\x2a\x74\xc8\xbc\xc9\x45\x09\xa7\x6c\x93\xcf\x9b\x88\ \x27\xa7\x11\x18\x1d\xc3\x80\x6f\x08\xa2\xd6\xd6\x25\xc2\x51\xdb\ \x28\x12\x87\xc6\x1f\xaf\x82\x2f\x62\x94\x4d\x89\x24\x90\x22\xea\ \x52\x2d\x9a\x42\xab\xe8\x18\x79\x04\xa1\xc5\xcf\x10\x53\x74\xf6\ \x0d\xa3\xd3\xe1\x87\xd4\x3c\x80\x16\xbd\x03\x0d\x5d\x06\x14\xd5\ \x0a\x90\x91\x95\x0d\x2f\x79\xf1\xc6\xaa\xa9\xd4\xb3\x73\x0b\x4c\ \xc5\x94\xd8\xdd\xef\x85\xc9\x62\x05\xb7\xbc\x12\xa5\xe5\x95\x4b\ \x13\xf3\xcb\xab\x23\x0f\x01\x37\xd9\x11\xe6\xd9\x15\x84\x97\x15\ \x13\x06\xcb\x3c\xd0\x68\xf2\xa3\xdd\xee\x5f\x27\x96\x3b\x86\x20\ \xb3\x78\xd7\x7d\xe6\x08\xa4\xf8\x3c\x33\x1b\x2a\x8d\x36\xaa\xdc\ \x53\x33\x21\x8c\x8e\x8d\x33\x15\xd3\x26\xe4\x37\x09\xf1\xc1\xc5\ \x8f\x51\x73\xaf\x01\xbe\x65\x60\xfc\x11\xa0\x23\x13\x23\xf2\xce\ \xa1\xbe\x5d\xb9\xb8\x51\x01\x83\x81\x74\x74\x4d\xa7\x1e\x0a\x67\ \x80\xa9\xb8\xdd\xea\x83\xd8\xe8\x42\x93\xca\xcc\xf8\x7c\xe5\xcb\ \x2c\x88\xda\x24\x51\x89\xa7\x67\xe7\x18\x1b\x86\x86\x47\x60\x77\ \x38\x49\x82\x3a\x24\x7c\xf8\x21\xae\xb3\x0b\xe1\x99\x5c\x80\x6f\ \x09\xd0\x90\xde\xe1\x0f\x2c\x81\xab\x1f\xc4\x7d\xef\x04\xdd\x07\ \x1d\x61\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6\x21\x48\xcc\xfd\x4f\ \x7d\xee\xd4\x22\x9d\x55\x84\xaa\x9a\xba\x4d\x3e\x47\xe4\x8e\xf8\ \x3c\x3c\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2\x62\x9c\x7e\x2f\ \x1e\x3d\x03\x01\xf4\x2f\x02\x83\x84\xbc\xc5\xff\x2d\xee\x3a\x43\ \x28\x51\x91\xf7\xf6\x05\xf1\x4e\xdc\xbf\x7d\x84\x33\x69\xe3\x20\ \x18\xf4\x33\xab\xe0\xc9\x54\x68\x35\x38\xd1\xd8\xdd\x0b\x9e\x58\ \x89\xac\x5c\xf6\x33\x3e\x47\xaa\x9e\x9c\x9e\x65\xe4\xee\xf7\x0e\ \xa2\xd7\x6c\x41\x43\x03\x1f\x27\x62\xe3\x20\xe9\xd6\xc0\x45\xcf\ \x01\x52\x90\x24\xb8\x86\xb2\x9e\x00\x6e\xb4\xdb\x50\xd1\x1b\x44\ \x85\xce\x8b\x4a\x7e\x0b\x6d\xbe\x9b\x5b\x27\xd1\xa0\x99\xf8\x16\ \x65\x22\x05\xee\x29\xf4\x28\x13\xc8\x90\x78\x35\x0b\x1a\xad\x3e\ \xaa\xdc\x63\x13\x93\xf0\x0d\x0d\xc3\x66\xef\x83\xb4\x5d\x8e\xc4\ \x4b\x97\x90\xc3\xca\xc3\xd4\x63\xc0\x4e\x7a\x49\x31\x4e\xfa\x89\ \x94\x7f\x5b\x3b\x84\x7c\x85\x13\x25\x6a\x1f\x4a\xd5\x03\xe8\xf2\ \x30\xa3\x28\x22\xf8\xf9\x33\x09\x74\x8f\x2e\xa1\xa8\xbe\x15\xa5\ \x7c\x09\xb2\x4a\x2a\xf0\xcf\xe3\x71\x51\xe5\xf6\x07\x46\xd1\xe7\ \xf2\x40\xab\x37\x20\xfd\x6a\x06\x92\xbf\x48\x83\xcd\x37\x02\x27\ \xa9\xda\x40\x1a\x4c\xe0\x7b\x88\x52\x9d\x1f\x45\xdd\xfd\x0c\x71\ \x41\x97\x1b\xc5\xdd\x1e\x88\x9c\x41\xfc\xf9\xcd\xb7\x5d\x84\xeb\ \x6c\xb4\x43\xd0\x28\xf7\x4e\x23\xa7\xfc\x1e\xb2\x4b\xab\xf1\x51\ \xea\x57\x48\xfe\x6f\xea\xfa\x58\x51\xb9\x47\x82\xe3\xf0\x0c\xf8\ \x60\x34\x99\x51\xc9\xab\xc2\xfb\x67\xcf\x41\xfe\x40\x03\x3f\xe9\ \x6e\xb2\x8d\x19\xb9\x6f\x69\x06\x19\xd2\x9b\x2a\x2f\x72\xe5\x0e\ \xe4\x75\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca\x29\xc2\x53\ \xb8\xdd\x29\xdc\x2b\x76\x04\x90\x51\xc8\xc5\x95\x6b\x79\x38\x11\ \x9f\x80\x9b\xb7\x6e\x33\x63\x15\x91\xdb\x6a\x73\x40\x22\x6d\xc7\ \x85\x84\x0f\x50\x74\xbb\x0c\xf3\x2b\x80\x9f\x34\x58\xf7\x24\x20\ \x1c\x7c\x84\x4a\xd3\x18\x38\xfa\x61\x86\x9c\x56\xfd\x55\xb3\x1e\ \xac\x0e\x3b\xb8\x3a\x1f\xd9\x21\x1e\x7a\x2f\xe0\x13\xbc\xba\x5d\ \x02\x26\xbe\xc1\x83\x94\x6f\xd8\x38\x9f\x9c\x8a\x03\x7f\x3d\x04\ \x63\xaf\x99\xe9\x6e\x2a\xb7\x46\xd7\x83\xa4\xcb\xc9\x48\xff\x3a\ \x8b\x8c\xd5\x3c\x53\xb5\x71\xf6\xa9\xdc\x35\xf6\x69\x5c\x97\x59\ \x19\xd9\xbf\x6e\x21\xa7\xa0\xd4\x82\x74\xbe\x1a\x57\x9b\x34\x60\ \xc9\xcc\x10\xbb\x82\xf8\xe5\xaf\x5f\xa7\x67\xc0\x3b\xe1\x75\x1f\ \x35\xcc\x35\xdd\x66\x7c\x94\x96\x85\xb8\x73\x17\xf1\x97\x43\x31\ \x4c\xd5\x74\x99\xf0\xaa\xaa\x71\xfa\xf4\x19\x68\xcc\x0e\x8c\x92\ \x2d\x36\x14\x1e\xab\x5a\xc7\x0c\x78\xe6\x71\x70\x0d\x23\x4c\xa3\ \x65\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6\x5e\x94\x74\x39\xd0\x66\xf7\ \xaf\x1e\x3d\x11\x4b\x47\x2e\x6f\xc3\x79\x13\x35\x2c\x5c\x99\x1a\ \xf1\x97\x3e\xc7\xd1\xd8\x33\xf8\x38\x31\x09\x86\x5e\x13\x1a\x9b\ \x04\xf8\xdd\x1b\xfb\x51\x4f\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ \x93\x60\x2b\x5d\x0c\x39\xf5\xbc\xf0\xbe\x67\xbd\xea\xcc\x16\x3d\ \x4a\x55\x1e\x08\x6d\x01\x94\xd4\xf1\x43\xe1\x65\x53\x40\xf0\xca\ \xf7\x25\x60\x2b\x6e\x6a\xc7\xa9\x84\x44\xc4\x1c\x39\x8a\xdc\x7c\ \x36\x5a\x5a\xc5\x38\x14\x13\x83\x2f\x39\x35\xc8\x14\x6a\x98\xe6\ \xa2\xd5\xd2\x27\xf5\x9a\x7a\x4c\x13\xa1\x49\x64\xb7\x99\x90\xdb\ \x6e\x46\xb9\xda\x8d\x06\xa5\x76\x39\x2c\x39\x3d\xf9\x4e\x13\xec\ \xd9\x72\xd4\x47\x0d\x3b\xab\x46\x88\x63\xff\x39\x8f\xdf\xee\xfb\ \x3d\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17\x70\xa3\xad\x07\x19\ \xc4\x4f\x4a\x14\xe9\x6e\xba\x58\xa8\xef\x2c\xfa\x94\x98\x50\x28\ \xb7\x40\xe9\x0e\x3c\xf9\x57\xec\x29\x2a\x77\x2d\xc1\x67\x04\xfb\ \xb6\xb9\xe4\x44\x8d\xbe\xcc\xb2\x5a\xfc\xe3\xe4\x19\x1c\x3c\xf4\ \x37\xb0\x72\xf3\xb0\xef\xc0\x1f\x50\x20\xd1\x21\x89\x27\x65\x2a\ \xa6\x4b\x85\x3e\xbf\x21\xd5\x46\xe4\x2e\x90\x5b\x21\xb0\x0c\xae\ \xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87\x6f\x3c\xaf\x3c\xe7\x96\x15\ \x35\x9c\x69\x45\xe5\xf8\xfb\xb1\x58\x1c\x3f\x19\x87\x37\xf6\xef\ \xc7\x8d\x3a\x11\x92\xab\xa4\x0c\x21\xed\x70\xea\x35\x55\x21\x8b\ \x34\x5b\xc9\x03\x37\x2a\x34\x6e\xd4\x49\x3a\x17\xc3\x72\x73\x08\ \x8e\x6d\x95\xfb\x87\x24\xe0\x4a\x65\x73\x70\xe4\xf8\x29\x1c\x3e\ \x7c\x98\x8c\x63\x2e\x32\x05\x2a\x5c\x22\xd5\xd3\x5d\x7e\x4d\xdc\ \x0b\x36\xe9\x74\x76\xa7\x1d\x77\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ \x1a\x95\xfb\x22\xbd\x49\xfd\x80\x0b\x6d\xf4\x04\x32\x4a\x78\x4c\ \x0f\x9c\x4b\x49\xc3\xb5\xa6\x2e\x7c\xc2\x6d\x65\x36\x59\xf1\x83\ \x01\x5c\x97\x9a\xc1\x51\x7b\x20\xf3\x04\xd7\xce\x25\x26\x05\x36\ \xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce\x5e\x4e\x45\x81\ \x58\x85\x78\xf6\x5d\x5c\xa9\x55\x90\xaa\xfb\xc0\x96\xdb\x50\xad\ \x75\xe3\xae\x54\x41\x2f\x10\xca\x0d\x72\xbf\xba\xd3\x6a\xa3\x05\ \xb7\xa2\x51\xf8\x1d\xaf\x43\x8d\x4f\xb9\x2d\x88\xcb\xe6\xe1\x9a\ \x48\x8f\xaa\x1e\x2f\x9a\x35\xe6\xc7\x7f\x7a\xf3\x2d\x57\x78\xac\ \xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5c\x75\x1f\xde\xcb\ \xaf\x45\xb9\x76\x00\x32\x67\x60\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ \xd2\xa9\xdc\x3b\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9d\x50\ \x0b\x39\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3\x2f\x22\xf7\x0e\ \xff\xda\x6d\x8a\xdd\x61\x99\xd5\x1b\xb6\xd8\x6b\xbb\x5e\x32\xbe\ \x2f\x89\xff\x01\x66\xb9\x5f\xfc\x11\x80\x3d\xcf\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x2b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xbd\x49\x44\x41\x54\x58\xc3\xed\ \x57\x6b\x4c\x93\x57\x18\x3e\x23\x71\xc9\x32\xe9\x16\x97\xa8\x54\ \x65\x38\x9d\x02\x15\xf6\x03\x87\x32\x93\x01\x66\x2c\x5b\x70\xc4\ \x30\xff\x60\xa2\x2e\x1a\x3a\x1d\x4e\x03\xba\x31\x89\x5b\xb3\x80\ \xd9\x0c\x84\x02\x19\x58\x1c\x14\x8b\x85\xb2\x82\x95\x5e\xe4\x66\ \x0b\x8e\x31\xf8\xc3\x46\xcb\x2d\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\ \x6a\x69\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0d\x61\xd9\xb2\x93\ \x3c\xed\x97\xf3\x7d\xfd\xde\xe7\xbc\xef\xf3\x5e\x4a\x00\x80\xfc\ \x93\x20\xff\x0a\x02\x74\x09\x28\x44\x14\xd9\x14\x71\x14\x01\x2b\ \x46\x80\xae\xdd\x64\xdd\xc6\x66\x22\x4c\xf8\x95\xc4\x8b\x47\xc8\ \xa1\xd3\xf7\xc8\x8e\x97\x3b\x38\x32\x61\x2b\x41\x20\x85\x9c\xbe\ \x30\x48\x2e\xdd\x80\x19\x40\x32\xab\x79\x4d\xf4\xbe\xfb\x72\x13\ \x68\x64\x06\x91\x04\x5e\xa3\x51\xf4\x06\xee\x85\x47\xf5\xd0\xbd\ \x83\xcb\x4d\x20\x9b\x9d\xf6\x40\x74\x2f\xbd\x16\x32\x3d\x20\x89\ \x3f\x48\xa5\x2c\x1b\x01\x8c\x31\x79\xc1\xbb\x9d\x88\x4b\xc6\xd7\ \xc6\x26\x0e\xa0\x10\xb9\xfd\x42\xfe\xc5\x2b\x36\x46\x8c\x12\x5c\ \x4e\x02\x93\xa7\xa7\xa7\x0d\xcc\xd3\x39\xb9\x98\x63\x36\x14\x0a\ \xd2\xe4\xa3\x2b\x41\x20\x8c\x29\x9e\x2a\xdf\x37\x47\xeb\xdc\x7b\ \xb5\xcc\x89\x9e\x40\x44\x96\x54\x83\x2b\x2c\x0b\x36\x46\x48\x08\ \x13\xf5\x64\x2a\x7b\x2e\x54\x03\x01\xf8\x03\x37\xbf\xc0\x0e\x34\ \x2a\x54\xdf\x62\x88\x52\xd5\x2c\x58\x03\x74\x1d\x16\x08\x04\x7a\ \x45\x55\xf5\xc8\xa0\x6d\x74\xc2\xd4\x73\xf7\x21\xbe\x73\x51\x95\ \x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc\x2e\x03\ \xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf\x3e\xbf\xd2\x60\xb5\xdb\ \xed\x80\xf8\x79\xe4\x3e\xc4\x5e\xab\xb4\xb9\x88\x2f\x86\x80\x27\ \xd3\xc0\x67\xf9\x8e\x19\xf5\x60\xd7\x5e\x33\xba\x76\xda\x73\xee\ \x68\xd8\xc7\xc7\x47\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\ \xf6\x2e\xe7\x96\x37\xf7\x77\x73\x61\xd8\xbd\xe8\x5e\x80\x2f\x66\ \x9a\xa0\x86\xdf\xa9\x36\x42\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\ \xe7\x1a\x8a\x98\x2d\x7e\xfe\x6d\x97\x54\x1a\x6b\x5f\x5f\x1f\xb8\ \xd0\xd1\x73\x07\x62\x72\x15\x56\x4e\xc4\x87\x97\xd4\x8c\x30\x14\ \xe9\x15\xb7\x1e\x38\x1c\x0e\x40\xa4\xd6\x19\x31\x9e\x85\x9b\x05\ \x7e\x6d\xa9\x25\x1a\x5b\x97\xd9\x0c\xe6\x2e\x0a\xf3\x24\x14\xdf\ \x36\x8e\x7b\xbd\x1e\xd1\xcd\x42\xc8\x09\x6f\xa9\x04\x3c\xd1\xbd\ \x56\xab\x15\x10\x77\x7f\x1b\x84\xf3\x92\x5c\xbb\x52\xa9\x84\xfa\ \xfa\x7a\x30\x99\x4c\x0c\x75\xdf\x35\xc1\x51\xb1\x64\x18\xc9\x51\ \x44\x3e\xb6\x76\xcc\xb4\x40\x4f\x93\x5f\x7e\xd3\xd6\xdf\xdf\x0f\ \x32\x99\x0c\x44\x22\x11\xa8\x54\x2a\x90\x4a\xa5\xa0\xd1\x68\x20\ \x4b\x5b\x39\xbe\xe9\x95\xe0\x1f\xb8\x53\xaf\x79\x2c\xf3\x00\x97\ \x8e\x22\x9e\xc7\x86\xe6\x53\x29\x19\xf6\x82\x82\x02\xe6\xe2\xa0\ \xa0\x20\xe0\xf1\x78\x60\xb1\x58\x40\x5b\x5e\x01\xfb\xcf\x26\x0c\ \x2d\xa6\x53\xce\x67\x94\xcf\x09\x4c\x83\xe2\x5b\x7b\xe6\xc2\x60\ \x9a\xb2\x14\x14\x0a\x05\x88\xc5\x62\xc8\xcc\xcc\x84\xa2\xa2\x22\ \x50\xab\xd5\xd0\xd9\xd9\xc9\x60\xec\xfe\xc9\xb9\xc9\xdb\xa7\x75\ \x2e\xb7\xcf\x4b\x80\xae\xb7\xd8\x29\x70\x0e\xc0\x6a\x97\xac\x78\ \x88\xca\x7f\x82\xe2\x29\x89\x0e\x3e\x97\x2b\x21\x5b\x96\x0f\x07\ \x63\xe3\x47\x84\x1f\x26\xd8\x92\x72\x64\x8e\x6f\x1a\xbf\x07\xa3\ \xd1\x08\x2d\xad\x2d\xf0\xcb\xc0\x20\x1c\x38\xf1\xbe\x05\xb3\x62\ \xc1\x04\x5c\x69\x84\x85\x85\x84\x46\xdc\x26\xe7\x32\xac\x2c\xcf\ \x33\xb5\x13\xec\x3b\xe3\xba\xd3\x33\xaf\x82\xe5\xfe\x7a\x89\x06\ \x9e\xde\xfc\x62\x1b\xf7\x3c\x92\x8d\x7b\x66\xab\x4f\x5b\xca\x35\ \xed\x58\x43\x43\x3d\x34\x34\x34\x80\xa5\xb7\x17\x32\x14\xc5\xc3\ \xf3\xe9\xc0\x65\x3c\x92\xe5\x28\x9e\x36\x5d\xe5\x9c\x2a\x32\x78\ \x7d\xf4\x83\x2e\x5a\x6c\x12\x31\x0c\x1b\x25\xea\x71\xf7\x2f\xcb\ \x27\xef\x05\x87\x5f\xfe\xd3\xe4\x44\x0b\x4c\x68\xf4\xc9\x3e\x75\ \x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x96\x31\xae\x81\x09\ \x66\xf1\x36\x6d\x38\x68\x3c\x49\x3a\x3a\x65\xf8\x62\x81\x83\x44\ \xbd\x57\x43\xb6\x0a\x5e\x9b\x2a\xc3\x94\x5c\xb0\x42\x0f\xab\x24\ \xb4\x04\x9f\x4a\xaa\x9b\x43\x37\x31\x28\xd4\x4f\xf2\x0a\xc7\x74\ \x3a\x1d\xd4\xd6\xd6\x82\xc9\x7c\xdb\xb9\x61\x9b\xf7\x5f\xea\x62\ \xb2\xe5\x7e\x9c\x75\x1f\x0d\xf3\xb2\xd4\x4e\xf2\xf6\xb1\xeb\x2e\ \xb6\xae\x94\xc3\x90\x6c\x97\x55\xc1\x4b\x57\xab\x80\x9c\x4d\x6e\ \x5a\xd0\x1c\x49\xbd\xb1\xe7\x88\xb0\xef\xca\x57\xc5\x50\x5a\x5a\ \x0a\x1d\x3f\xf6\x4c\x04\x06\x87\x74\x3c\xaa\x0b\xc2\x84\x46\x8d\ \x07\xc8\x6f\x02\xd9\xf9\xaa\x7e\x9a\xf1\x30\x46\x8e\x36\x20\xaf\ \xbc\x4a\x78\x43\x69\x00\x92\x28\x1d\x98\xcd\x95\xb3\x79\xc3\x7d\ \x3d\xbf\xf9\x44\x6a\xa6\x5d\x2e\x97\x43\x53\x4b\x2b\x44\x1c\x7b\ \xf7\xce\xf4\x14\x25\xae\xf1\x8a\xf5\x77\x9c\xf5\x70\x02\xc2\xd9\ \x0f\x89\xd1\x81\x03\x4f\x8e\xf7\xdc\xd2\x69\xe7\xf3\xdf\x75\xfc\ \x6f\x14\x2e\x36\xd2\xef\xd8\x17\x69\x49\xbe\x2c\x9d\xc8\xd3\x96\ \x3b\xa7\x0f\x31\x8c\x25\xc6\xdf\x9f\xba\x77\x5f\x71\x35\xa0\x41\ \x6c\xb5\x08\x8c\xf9\x94\xf1\xe0\xf0\x33\x4b\x9a\x7c\x68\x13\x5a\ \xbd\xce\xa3\xd9\x6b\x4f\x48\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\ \xf9\x2f\xee\xb9\x49\x6e\x00\xf6\x7b\x3e\xed\xf7\x08\x1e\x2a\x3e\ \x5d\xe5\x58\xaa\xf1\x47\x5a\xf5\xb6\x59\x0b\x11\x1d\xb3\x43\xc9\ \x91\x38\x09\x39\xf9\xa9\x96\x21\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\ \x37\xfc\x4f\x13\xf8\x1d\xe7\x87\x19\xb9\x44\xc3\x01\xcf\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x3a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xcc\x49\x44\x41\x54\x58\xc3\xb5\ \x97\x5d\x4c\x5b\x65\x1c\xc6\x77\x6f\xbc\xd9\xe5\x12\x49\x20\x71\ \xd7\x26\xe3\x4e\x13\xb8\x70\xd1\x85\x44\xbd\x50\xe3\x10\x18\xe5\ \x2b\x2e\x26\x4a\x04\x27\x86\xaa\x8b\x99\xe0\xd0\xa2\x6c\x19\x86\ \x39\x17\xdc\x1a\x16\x98\x80\x40\x6c\xa6\x43\xca\x20\x2b\x83\x1e\ \x28\xcc\xda\xd1\x96\xd2\xd2\x4a\x7b\xfa\x01\xa5\xd0\xef\x16\x1e\ \xdf\xff\xdb\x1d\xc7\xcc\x04\x2a\x87\x93\x3c\x39\x6f\x21\x9c\xe7\ \xf7\x3c\xef\x47\x0f\x87\x00\x1c\xca\x46\xcf\xbd\xfa\xe9\xbb\x4c\ \x5a\x26\x61\x0f\x6a\x60\xca\xd9\xe9\x79\xd9\x9a\x3f\x5d\x50\xf2\ \xa5\xc1\xe9\x8f\xa7\x57\xc3\x40\x30\x02\x84\xa2\x19\xad\xc7\x32\ \x8a\x27\x81\x58\x22\x73\xbf\x79\x6b\xda\x4b\x10\x72\x02\x1c\x7b\ \xe7\xac\xda\x1c\xd8\xc8\x98\x12\x40\x84\x99\x85\xe3\x19\x91\x31\ \x29\x1a\x4b\x61\x25\x94\x44\x38\x9a\x42\x73\x87\xc6\xbe\x13\xc4\ \xff\x02\x90\x12\x93\x79\x24\xf1\xc8\x58\x92\xcf\x1f\x84\x5d\x8c\ \xc2\xe5\x09\x22\x12\x4b\xa3\xf4\xc3\xef\x4d\x34\x75\x59\x01\xb0\ \xeb\xd8\x36\xd5\x90\x9e\x3a\xfc\xcc\xb9\xe7\x5f\x2e\x11\x3f\x56\ \x9e\x45\x45\x55\x0d\x2a\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\ \xac\xb6\x25\xfc\xb9\xe8\x87\x6b\x15\x58\xf6\x04\x10\x08\xc6\xd2\ \xaf\x9c\xbe\x70\x9f\x41\x1c\xd9\x15\x80\x5d\x87\x99\x1a\x8a\x8a\ \x8a\xcc\x92\x5a\x5b\x5b\xdd\xa4\xaf\x55\xad\xfe\xaf\x54\xdf\xa6\ \x06\x06\x06\x31\x39\x35\x85\xd9\xb9\x39\xe8\x26\x26\x50\x50\x50\ \x80\x21\xcd\x6f\x7c\xde\x49\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\ \x4f\x41\xf4\x85\xf0\x43\xaf\xce\xcd\x00\x6a\xf6\x02\x50\x43\x66\ \xd8\xe5\x8a\xc7\xe3\xf0\x7a\xbd\x48\xa7\xd3\x98\x9c\x9c\x44\x65\ \x65\x35\x66\x67\x8d\xbc\x81\x07\x66\x1b\x74\xd3\x16\x0e\x40\x32\ \x2d\x78\xf0\xdd\x8d\x51\x8f\xac\x00\xe1\x70\x18\x46\xa3\x91\x8f\ \x53\xa9\x14\x7e\xea\xed\x45\xe3\x27\x9f\x61\x86\x41\x38\x96\xdc\ \x50\x77\x75\xe3\x4c\x43\x23\xce\x35\x9d\xc7\xed\x91\x71\x5c\xbc\ \x3e\x2c\x2f\xc0\xc6\xc6\x06\xf4\x7a\xfd\x63\x40\x7d\x7d\xfd\x50\ \x32\x88\xd0\x46\x1c\x66\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\ \x11\x97\xba\x64\x6e\x80\x00\xa6\xd8\x3a\xd8\x7e\x45\x22\x11\x94\ \x2b\x2a\x30\xae\x13\x40\xe7\x04\x6d\x57\xda\xaa\x34\xbe\x7c\x53\ \xe6\x35\x40\x66\x3a\x9d\x0e\xc3\xc3\xc3\xe8\x65\xf5\xf7\xf7\xf7\ \x43\xab\xd5\xa2\xaa\xba\x06\x63\x77\xf5\x90\x0e\x2a\x77\x90\xed\ \x04\xb6\x0e\xda\xbb\x65\x06\xa0\x79\xb7\xdb\xed\x18\x1a\x1a\x42\ \x67\x67\x27\x7a\x7a\x7a\x38\x50\x49\x69\x19\x6e\x69\xf5\x10\xd7\ \x00\x6f\x08\xb0\xf9\x00\x67\x00\xb8\xd0\x25\x33\xc0\xd6\xd6\x16\ \xdf\x09\x81\x40\x00\xa2\x28\xc2\xef\xf7\x63\x6d\x6d\x0d\xa7\x14\ \x95\xd0\xfc\xae\xe7\xa9\xc9\x7c\xc1\x0b\x98\x3d\x40\x9b\xdc\x00\ \xdb\x41\x36\x37\x37\xf9\x76\xa4\x56\x14\x15\xd5\xe8\xfb\x55\xe0\ \xa9\x1d\x81\x47\x00\xe7\x3b\x0f\x00\x80\xcc\x25\x80\x24\x33\x4f\ \x24\x12\x28\x2b\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa0\x36\x5a\ \xd5\x07\x30\x05\xff\x98\x27\x93\x3c\x3d\x4d\x49\xc9\xa9\x4a\x0e\ \xa0\xb7\xb3\x03\x89\x3d\xc5\xf8\x17\x30\xb1\x00\x7c\x71\xf5\x00\ \x00\xa4\xea\xc9\x98\x14\x8b\xc5\x50\xa6\xa8\x82\x7a\x48\xc0\x98\ \x19\xb8\x6b\x05\xe6\x9c\x99\xfb\xe7\x57\x64\x04\x90\xd2\x53\x6a\ \x02\x88\x46\xa3\xdc\x3c\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\ \x66\x87\xe4\xa0\x01\x1c\x64\xc4\x04\x28\x3b\x64\x06\x48\x3d\x9c\ \x73\x12\x99\xd3\xb9\x40\x20\xc5\x65\x55\xb8\xd8\x2d\xa0\x7f\x3a\ \x63\xae\x7d\x90\x69\xe0\xa3\x76\x99\x00\xfe\x5d\x3d\xa5\x26\xad\ \xae\xae\x72\x88\xb7\x4a\x2a\x70\xb9\x57\xc0\x3d\x1b\xb8\x7e\x9e\ \x01\xee\xcc\x03\x67\x2e\xed\x13\x40\xaa\x9d\x44\x8b\x8e\x92\xd3\ \x71\x4c\xdf\x01\x2b\x2b\x2b\x58\x5f\x5f\xe7\x10\x27\x59\x03\xdf\ \x74\x09\x50\x4f\x00\xbf\xcc\x65\x1a\xb8\x32\x06\x34\xec\xa7\x01\ \xc9\x58\xda\xeb\x64\x4e\x69\x29\x39\x1d\x44\x04\x40\xf5\xd3\xcf\ \xde\x7c\x5b\x81\x96\xeb\x02\x4f\x7e\x75\x1c\xb8\x71\x0f\xf8\x71\ \x2c\x9e\x7e\xbd\x4e\x6d\xa6\x37\xaa\xac\x00\x9e\x64\x2c\x6d\x37\ \x32\x25\x00\xd1\x23\xf2\xe4\x12\xcc\x1b\x27\x15\x68\xef\x11\xa0\ \xbc\x66\x5b\x7f\x4f\x35\xe2\x3c\x71\x9a\xbf\x8e\x69\xf7\xfc\x4a\ \x26\x01\x90\xa9\x24\x69\xb5\x53\x42\x32\x0f\x06\x83\x70\xb9\x5c\ \xdc\x90\x5e\x4a\xe8\xb3\xc7\xe3\x81\xdb\xed\xc6\xf1\x13\xaf\x25\ \x9f\x7d\xa1\x9c\x4c\x3b\x98\x8a\x99\x8e\x3e\xc9\x78\x47\x00\x95\ \x4a\xc5\x01\xa4\x15\x2e\xcd\x37\x19\x52\x52\x3a\xf7\x29\xb5\xc3\ \xe1\xe0\x22\xe3\xc5\xc5\x45\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\ \x93\xe9\xae\x00\x2d\x2d\x2d\x6e\xe9\x60\xa1\xd4\xd2\x97\x0d\x8d\ \x97\x97\x97\xe1\xf3\xf9\x60\xb3\xd9\xf8\x7d\x69\x69\x89\x43\x10\ \x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92\x52\x93\x11\x8d\xe9\ \x4e\xdf\x78\x54\x3b\x35\x60\xb5\x5a\x79\xf5\xd4\x0a\xfd\xce\x60\ \x30\x24\xf2\xf2\xf2\xee\xb3\x67\x1c\xd9\x17\x40\x53\x53\x93\x5b\ \x9a\x67\x4a\x4f\x22\x13\xaa\x9a\xc6\x16\x8b\x99\x37\x40\x9f\x47\ \x47\x47\x23\x6d\x6d\x6d\xde\xfc\xfc\x7c\x13\xfb\xdb\x41\xa6\xb2\ \xbd\x9a\xff\x27\x40\x73\x73\x33\x9f\x02\x4a\x47\x10\x54\x3f\x55\ \x3f\x3f\x3f\xcf\xeb\xd6\x68\x34\x91\xba\xba\x3a\xe7\xc3\xb4\x5d\ \x4c\x1f\x30\x1d\xcd\xc6\x78\x47\x00\xa5\x52\xe9\x76\x3a\x9d\xbc\ \x62\x4a\x4a\x6f\x3e\x94\xb4\xbe\xbe\xde\x99\x93\x93\x23\x99\x16\ \x67\x53\x75\x56\x00\x8d\x8d\x8d\x6e\x8b\xc5\x82\x81\x81\x81\x48\ \x6d\x6d\xad\x33\x37\x37\x57\x56\xd3\xdd\x00\xf8\x7f\x46\x4c\xc2\ \x41\x99\x6e\xd7\xdf\x43\x39\x56\x18\x85\x70\xc8\x04\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x6d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x06\x34\x49\x44\x41\x54\x78\x5e\xad\x97\x5b\x6c\x54\xc7\ \x1d\xc6\x7f\x73\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\ \x69\x63\x24\x42\x4a\x21\x22\xa1\x2d\x95\x62\xa5\x2f\xee\x4b\x68\ \x2b\x95\xa6\x55\xa5\xc6\x60\x55\xaa\xda\xb4\xaa\xfa\x56\x09\x55\ \xca\x03\x94\x27\xda\x07\x84\x14\x29\xad\xc4\x8b\xa5\x52\x83\x79\ \x08\xc5\x18\x39\x0e\x69\xd3\x84\x9a\x9b\x63\x6a\xec\xb2\x04\x1b\ \x3b\xbb\xf6\x7a\x8f\xbd\xbb\xde\xb3\x67\xa6\xc3\x68\x85\xe5\x72\ \x6c\x88\xc9\x27\x7d\xfa\x9f\x9d\x87\xfd\x7e\xf3\x9f\x99\x73\x11\ \x4a\x29\x82\x24\x84\x78\x05\x78\x9e\xc7\x6b\x48\x29\xf5\x77\xd6\ \x28\x27\x20\xb8\x43\xbb\x01\x68\x97\x52\xbe\xc6\x63\x64\x59\xd6\ \x07\x1a\xf6\xbb\x40\xb7\x06\x39\xff\x14\x00\x26\xfc\xb7\xed\xf5\ \xe2\x60\x5d\x44\x44\x6e\xce\x89\x8a\x2b\x57\xae\x50\x5d\x53\x8d\ \x40\x00\xa0\x50\x08\x65\x28\x41\x29\x66\xd3\x69\x5e\xa9\x17\x2f\ \xbc\xb4\x4e\x6c\x3b\xf1\x1f\xb9\x47\x83\x7c\x5b\x43\x4c\x3c\x4d\ \x07\xf6\xff\x60\x8b\xdd\x2c\x25\xf8\x4a\x32\x3c\x3c\x4c\x65\x65\ \x25\x2b\xc9\x75\x5d\x1e\xc0\x6e\xa9\xb0\x22\x1b\xa2\x2a\x72\x3f\ \xa7\xea\x81\xb5\x03\x08\x2d\x05\x48\xa1\x0d\xf4\x5d\xbc\x48\x2e\ \x97\xc3\x2f\x16\x51\x4a\x91\xcf\xe7\x59\x5c\x5c\xa4\x50\x28\x50\ \xd4\x63\xb5\xb5\xb5\x94\x01\x58\x80\xf8\x82\xf6\x80\x01\x00\x36\ \x44\x05\x1f\x0f\xbc\x4b\x3e\x3b\x8f\x85\x44\x95\x32\xe2\xb6\xc4\ \xb6\x04\x21\x21\x70\x3e\x53\x6c\x8c\x3b\x80\x44\x2a\x04\xf0\x9c\ \x10\x02\xe0\xcb\x40\x05\x50\x0f\x34\x60\xc4\x48\x69\x9f\x24\x02\ \x01\x4e\x9c\x38\x21\x00\x81\x05\xd2\x87\x96\x96\x67\x09\x65\x6d\ \x14\xe5\x28\xa5\xb4\x41\x08\x58\x57\x19\x25\xe2\xd8\x44\x42\x16\ \xc3\x13\x73\x5c\xbc\x3d\x41\xf7\x58\x8e\x5c\x24\xbe\xa9\xbd\x7d\ \xf7\xef\x2d\xcb\x5a\xdc\xb1\x63\x47\x59\x55\x55\x95\xd3\xd8\xd8\ \x18\x7e\xe0\x86\x86\x86\xd0\xa5\x4b\x97\xdc\xae\xae\xae\x08\xf0\ \xd6\xaa\x1d\x00\x13\x44\x55\x2c\xc2\x73\xd5\x31\xf2\x9e\x4f\xa1\ \x28\x91\x4a\x61\x09\x41\xd8\xb1\x88\x86\x6c\xe6\x72\x05\x12\xa2\ \x8e\x3f\x9f\xff\x2b\x0d\x4d\x1b\x01\x22\xc0\x66\x96\x84\xef\xfb\ \x78\x9e\x47\x75\x75\xb5\x9e\x50\x4b\xf4\xea\xd5\xab\x87\x84\x10\ \x28\xa5\xde\x5a\x11\xc0\xb2\x41\x00\xb6\x2d\x90\xda\xb6\x14\x38\ \x08\xa4\x12\x58\xc2\x8c\x1b\x8f\x4c\xb9\xec\x7b\xf5\x3b\xd4\x37\ \x36\x11\x7c\x2f\xc1\x84\x67\x32\x19\xca\xcb\xcb\xcd\x66\x3e\x76\ \xec\xd8\x26\xbd\x7f\x0e\x2e\x41\x2c\x01\xd0\xd9\xd9\xa9\x0e\x1d\ \x3a\xa4\x6c\x21\x08\x59\x10\xb6\x2d\x1c\xc7\xc6\x42\x50\xb4\xcd\ \x1a\x1b\x00\xc7\xb2\x88\x38\x96\xae\x02\x60\x59\x78\x10\xc0\xdc\ \xdc\x1c\x35\x35\x35\x06\x20\x1a\x8d\x72\xe4\xc8\x91\xcd\xc0\x03\ \x88\x1b\x1a\xa2\xc7\x62\xb9\xb0\x6d\x74\x30\x66\x8d\xcb\x23\x36\ \xb1\xa8\xa3\xc7\x2c\x32\x8b\x1e\x93\x99\x1c\x63\xa9\x79\xee\xcc\ \x2e\xe8\xdf\x45\x72\xf9\x3c\xab\xc8\x2c\x41\x36\x9b\x35\xa7\x66\ \xe9\xff\x6d\x0e\x1c\x38\xb0\x1e\xe8\x00\x58\x06\xa0\xb4\x74\x16\ \x8e\x0d\xe1\x90\xc0\x53\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\ \xa6\x7d\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb\x3a\x0d\x2f\xb4\x73\xfb\ \xce\x24\xfd\xfd\xfd\x24\x93\x49\x94\x52\xe6\xfa\xf8\xf1\xe3\xe8\ \xba\xac\x33\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c\x3e\x7c\x98\xde\xde\ \x5e\x12\x89\x84\x04\x2c\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\ \x94\x4f\x6b\xc7\xcf\xf8\xe6\x2f\xdf\x26\xf6\xf5\x37\x99\x7c\xa6\ \x83\x6b\xfe\x2e\xae\xf1\x2d\x64\x6b\x17\xad\x7b\x7f\x4e\x5e\x56\ \x73\xfa\x6f\x67\xd1\x77\x4d\xee\xdc\x9d\xe2\x1b\xaf\x76\x72\xfd\ \xfa\x75\x03\xa0\x67\x6b\xd6\x3f\x16\x8b\x99\xeb\x78\x3c\x8e\xe3\ \x38\x25\x38\x04\xc0\x23\x00\x96\x25\x98\xca\x41\x3a\xde\xca\xfe\ \xdf\xbd\x4d\xd5\xae\xd7\x28\x84\x62\x08\xdb\x42\x59\x82\x6c\x41\ \x72\x7f\x66\x91\x4f\xee\x66\x18\xb8\xea\x72\xfa\x1f\x61\x64\xd5\ \x5e\xae\x8f\xdc\x67\x32\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\ \xcd\xcd\xcd\xb4\xb5\xb5\x19\x37\x35\x35\xa1\xa1\x14\x20\x83\x1f\ \x46\x16\xdc\x71\x15\xdf\xff\xe9\x6f\xa8\x6c\xd8\x48\xe2\xec\x3b\ \x4c\x8f\x5e\xc3\x89\x94\xb1\xb5\x79\x07\x9b\x5b\xb6\xf3\x49\x79\ \x25\x63\x09\x97\xcf\x66\xf2\xdc\x9d\xce\x32\xa1\xed\x88\x0d\x4c\ \x27\xe7\xd8\xb7\x2b\xca\xfa\x25\x00\x33\x7b\x3d\x6b\xea\xea\xea\ \x00\xcc\x75\x2a\x95\x32\x00\x4a\x2b\x10\xa0\xb9\x5a\x70\xe1\x9d\ \x63\x28\x2c\xca\xe6\xc6\xd9\x10\x8f\x52\x94\x92\x7b\xc3\x7d\x24\ \x65\x05\xdb\xda\x7f\x4c\x4d\xdb\xcb\x7c\x3c\x9c\x66\xd2\x5f\xc0\ \xcd\x78\x2c\xcc\x6b\x2f\x78\x20\x00\xb5\x74\x3a\x42\xa1\x90\x09\ \x2d\xdd\xea\x1f\x8e\x01\x2a\xf8\x3e\x60\xc1\xc6\xb8\xa0\x50\x1c\ \x23\x1c\x8b\x53\xb7\xa5\x96\x92\x78\x76\x7d\x05\xe9\xac\xc7\x68\ \xff\x9f\x98\xae\xbc\x4c\xcb\xf6\x83\xb8\x0b\x61\xbc\x82\xa4\x58\ \x94\x78\xda\x21\xc7\x42\x2d\xaa\x80\xe3\x69\xa0\x96\xd5\x15\x01\ \x00\xd6\xc7\x43\x84\xca\x23\xfc\xbf\x6a\x63\x21\x9e\xa9\x0c\x73\ \xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb9\x32\x47\x03\x28\x03\ \x61\x6b\x00\x16\x4b\x21\xa5\x1c\x25\x30\x2a\x15\xa4\x5c\x05\x40\ \x58\xa5\x2a\xcc\xf5\x23\xfa\x70\x6c\x86\xf1\x59\x8f\xef\xfd\xfa\ \x8f\xdc\xca\xd4\xe0\x44\x5c\xa2\x11\x1b\xcf\x93\x14\x3d\x07\xd3\ \x01\xa5\x90\x52\xf2\x50\x6a\x59\x01\x56\x05\x10\x08\x4c\x0d\x04\ \x18\x9d\x76\xf9\xd5\x5f\x86\x18\xbd\xb7\x80\x3d\x93\x67\xd3\xba\ \x32\xf2\x79\x5f\xbb\x68\xea\xce\xaf\xd4\x70\xf9\xdd\xe0\x25\x00\ \x9e\x78\x09\x4c\xb8\x10\x3c\xa2\xd6\x2f\x55\xf2\x87\x1f\x3e\xcf\ \xf5\x4f\x33\x44\x1b\xb7\xb1\xf3\xc5\x97\x59\x12\x5c\x4e\x60\x8e\ \xdb\x53\x01\x28\xc0\x12\x25\x00\x6d\xd4\x52\x7d\xb1\xb5\x96\xdd\ \x5b\xe2\x74\xbf\x97\xa5\x6a\xf7\x57\xf9\xd1\x1b\x6f\x10\xa0\xb5\ \x03\x98\xb5\x37\xd5\xd8\x08\x01\xd2\xcb\x53\x70\x53\x78\xf3\x33\ \x14\xb3\x69\x0a\x19\x1f\x25\xfd\xd5\x82\xd6\x08\xf0\xf0\x29\xe7\ \xe3\xe7\x33\x14\xe6\x75\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc1\x33\ \x7d\xfa\xd7\x72\x8c\xb2\x13\x37\x03\xc7\x01\xb2\x1e\xfe\xad\x94\ \xcc\x6f\xf7\x44\x54\x03\xd8\x5f\x70\x07\x08\x92\x09\xfd\xd7\x3d\ \x3f\xfd\x7e\x42\xa6\xcf\xdf\xf6\xef\x02\xee\x76\x3b\xfc\x92\x06\ \xa8\xe3\x73\xca\x75\x5d\x1f\x70\x57\xed\x00\x40\x32\xab\x0a\x1f\ \x7e\x2a\xd3\xbd\xb7\xfc\xd4\xcd\x69\x39\x05\xf4\x03\x97\x74\x68\ \xbf\x10\xa2\xd3\xb6\xed\xaf\x7d\x9e\x25\x58\x58\x58\xf0\x07\x06\ \x06\xd2\x27\x4f\x9e\x9c\x06\xba\x83\x00\x3e\x1a\x49\xca\xad\xe3\ \xb3\x2a\xd7\x3b\xe2\xa7\x6e\x4c\xcb\xd1\x52\xe8\x59\x1d\x74\x8b\ \x00\x3d\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2\x4e\xcf\xce\xce\ \x9e\x2e\xbd\x1d\xdf\x08\x02\xe8\xee\xea\x29\x00\x8c\x04\x84\x06\ \x85\xaf\x08\x30\x35\x35\x55\xd0\x2f\x22\xa9\x53\xa7\x4e\x25\xc7\ \xc7\xc7\x2f\x03\x67\x81\x7e\x1d\xec\xae\xb8\x09\x4b\xdf\x76\xda\ \x4f\x26\x85\x01\x40\x08\x40\x61\x5a\xfc\xde\xe0\x60\xba\xbb\xbb\ \x3b\xa5\xdf\x8a\xcc\x24\xd0\x5e\xed\x73\xcd\x61\xed\x9a\x77\x33\ \x6e\x11\x60\x70\xf0\xfd\x74\x5f\x5f\x5f\xfa\xcc\x99\x33\xa6\xc5\ \xa5\xd0\x8f\x78\x02\x89\xb5\x9e\x63\x21\x44\x18\x78\x13\xd8\x4f\ \x69\x73\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa\x2a\x5f\xf2\xd8\x15\x9d\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x54\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xe6\x49\x44\x41\x54\x58\xc3\xd5\ \x97\xcd\x4e\x13\x61\x14\x86\xeb\x35\x94\x95\x7b\x71\xe1\xd2\xc4\ \xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb1\x30\xea\x05\x18\x96\ \x26\x62\x58\xb8\xb0\x91\x58\x20\xd1\x9d\xbf\x89\xa4\x14\xb1\x52\ \xa4\x48\x45\x94\xfe\xd0\x02\x43\xff\xa6\x9d\x19\xa6\x65\x80\xe3\ \x79\x7b\xfa\x85\x51\x4a\x82\xc9\x21\x86\x49\xde\x9c\x33\xa7\xf3\ \xcd\xfb\x9c\xf3\x4d\x9b\x4e\x84\x88\x22\xff\x53\x91\x73\x01\xc0\ \xc7\xd5\x90\x6e\xff\xa5\xfb\xac\xc7\x3d\x3d\x64\x0d\xa9\x02\xf0\ \x31\x32\x3c\x3c\xbc\x6a\x34\x3a\x3a\xba\x19\x56\x3c\x1e\xaf\x26\ \x93\xc9\x56\x3a\x9d\x76\x13\x89\x44\x6b\x60\x60\x20\xcd\x6b\x6e\ \x68\x02\xa4\x38\xd2\xe1\xe1\x71\x99\xba\xef\xb7\xc9\xb2\x2c\xda\ \xdf\xdf\x27\x86\xf1\x78\xcd\x18\xeb\x8a\x1a\x40\x3f\xf3\xb0\x1c\ \xc7\xa5\x4c\x66\xb9\x0b\x14\x04\x01\xc5\x62\xb1\x3a\xaf\x7b\x70\ \x1a\x88\x53\x01\x1c\x1c\x10\x77\x77\xb2\x6c\xdb\xa1\xf9\xf9\xcf\ \x64\x0e\xd7\x75\xe9\xf9\xc4\x44\x17\x42\x05\x00\x26\x7b\xc1\xc9\ \xaa\x37\x1c\x4a\xce\xcd\x53\xf8\x70\x5d\x0f\x8b\x17\x54\x00\x82\ \x10\x40\x67\x4f\x14\xce\xed\xa6\x47\x1f\x67\x66\xe9\xf5\x9b\xb7\ \x14\x9f\x9c\xa4\xa9\xa9\x69\x7a\xf7\xfe\x03\x45\xa3\xd1\x65\x5e\ \x7f\x41\x05\xc0\xef\x10\xed\xb6\x25\x86\x85\x9a\xe3\x05\x94\x5d\ \xcd\xd1\xe4\xf4\x2b\x7a\x32\xfe\x94\x9e\xc5\x5e\xd0\x4c\x62\x0e\ \x8b\x17\x55\x00\xda\x81\x18\xf5\x13\x20\x3c\xff\x90\x6a\xcd\x36\ \x15\x37\xab\x94\x2f\x6e\x53\x89\x63\x8d\xb7\x85\xd7\x7e\x51\x01\ \xf0\x79\xcc\xcd\x5d\x1e\xb5\xc7\x7b\xdb\xee\x9f\x3b\xbe\xe4\x88\ \x5d\xb8\xbd\xee\xe2\x94\xca\x33\xe0\x75\xe4\xc6\x75\x57\x62\xd8\ \x10\x39\xea\xe6\x33\x44\xd4\x01\xa7\x06\xe0\xf4\x3a\xad\x39\x22\ \x98\x98\x68\x72\x80\x98\x6b\x50\x53\x9d\x00\x00\x2a\x2d\xb9\x31\ \xe2\x4e\x53\x8c\x10\x0d\x04\xf2\x6d\xfb\x28\xb6\x7c\x45\x00\x9b\ \x3b\xdb\x6a\xfc\x69\x8e\x3c\x6c\x88\x1a\xae\x39\x13\x80\x3a\x8f\ \xb7\x54\x23\x2a\xd7\xc5\x04\x06\x06\x00\x35\x28\x9c\x17\xab\xbc\ \x25\xbb\xca\x13\xc0\x4d\x61\x0e\x15\x2a\x72\x6e\xcc\x7e\x5a\x02\ \x68\x6a\xdd\xad\xf1\x94\x27\x00\x53\xdc\x1c\x71\x6d\x5b\x40\x60\ \x9a\xab\x1c\x75\x9e\xeb\x81\x41\x15\x47\x11\xc0\x6a\x89\x31\x0c\ \xd6\x77\x04\x20\x0c\x64\x26\x62\xb6\x69\x75\x8b\xa8\xaa\x09\x50\ \xb6\xc5\xbc\xd0\x03\xf8\xbe\x29\x63\x87\x29\x60\x0c\x18\x84\x1c\ \x00\x5b\x4d\x45\x00\x74\x03\x53\x98\xad\x94\xc5\x1c\xe7\x46\xe6\ \x1c\x00\xc8\x71\x5d\xa9\xa1\x08\x80\xfd\xfc\x56\x12\x73\x33\x01\ \x08\x35\x18\x42\xe8\xda\x7c\x8e\x29\xa8\x4e\x00\x5b\x00\x03\xc8\ \x98\x67\x36\x04\x00\x32\xe6\x85\xde\xf8\x17\x0b\xfc\x2c\xd8\x8a\ \x00\x18\x67\x3a\x4f\xb4\x54\x14\x23\x98\x02\x00\x02\x0c\x3e\xfb\ \xc5\x53\x28\xf0\x43\xb8\x66\x49\xf7\x6b\xf9\x52\x87\xd7\xbe\x54\ \x01\xc8\x55\x8f\xba\x4e\xad\x4b\x0e\x90\xaf\x85\xde\xb7\xc2\x92\ \x3d\x4f\xa6\xb3\xde\xa3\xb1\x71\xeb\xda\xd0\xf5\x15\x98\xb3\x6e\ \xa9\x00\x6c\x34\xa4\x6b\x18\xff\xe0\x11\x7f\x5a\x17\x53\xd4\x13\ \x0b\x59\x6f\xe4\xee\xbd\xe2\xa5\xc1\xcb\x4b\x7c\x6d\x8c\x75\x87\ \x35\xa8\xfa\xb7\x1c\xdd\x65\xd9\x3c\x8f\x1f\x19\xfe\x9e\xcf\x1e\ \x37\xbd\xc9\xba\x78\x26\x6f\x46\x00\x68\xf2\xff\x81\x99\x94\x9e\ \xe9\x3f\xbf\x19\x01\x42\xd3\xf4\xfc\xbd\x9c\x9e\xa5\x7e\x03\x51\ \x6c\x25\xa1\x92\x95\x0a\x77\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x08\xc8\x58\x67\ \x00\x73\ \x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\xc1\x59\x87\ \x00\x6f\ \x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0a\xc7\x57\x87\ \x00\x63\ \x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\x7c\x5a\x07\ \x00\x63\ \x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0a\xa8\xba\x47\ \x00\x70\ \x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x04\xca\x57\xa7\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ \x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x1d\xa2\ \x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x11\xf3\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x04\xa7\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x17\x31\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc4\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/mainwindows/menus.py0000755000076500000240000002560412613140041021136 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QFrame, QLabel, QMainWindow, QMenu, QMessageBox, QSizePolicy, QVBoxLayout, QWidget) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() widget = QWidget() self.setCentralWidget(widget) topFiller = QWidget() topFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.infoLabel = QLabel( "Choose a menu option, or right-click to invoke a context menu", alignment=Qt.AlignCenter) self.infoLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) bottomFiller = QWidget() bottomFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) vbox = QVBoxLayout() vbox.setContentsMargins(5, 5, 5, 5) vbox.addWidget(topFiller) vbox.addWidget(self.infoLabel) vbox.addWidget(bottomFiller) widget.setLayout(vbox) self.createActions() self.createMenus() message = "A context menu is available by right-clicking" self.statusBar().showMessage(message) self.setWindowTitle("Menus") self.setMinimumSize(160,160) self.resize(480,320) def contextMenuEvent(self, event): menu = QMenu(self) menu.addAction(self.cutAct) menu.addAction(self.copyAct) menu.addAction(self.pasteAct) menu.exec_(event.globalPos()) def newFile(self): self.infoLabel.setText("Invoked File|New") def open(self): self.infoLabel.setText("Invoked File|Open") def save(self): self.infoLabel.setText("Invoked File|Save") def print_(self): self.infoLabel.setText("Invoked File|Print") def undo(self): self.infoLabel.setText("Invoked Edit|Undo") def redo(self): self.infoLabel.setText("Invoked Edit|Redo") def cut(self): self.infoLabel.setText("Invoked Edit|Cut") def copy(self): self.infoLabel.setText("Invoked Edit|Copy") def paste(self): self.infoLabel.setText("Invoked Edit|Paste") def bold(self): self.infoLabel.setText("Invoked Edit|Format|Bold") def italic(self): self.infoLabel.setText("Invoked Edit|Format|Italic") def leftAlign(self): self.infoLabel.setText("Invoked Edit|Format|Left Align") def rightAlign(self): self.infoLabel.setText("Invoked Edit|Format|Right Align") def justify(self): self.infoLabel.setText("Invoked Edit|Format|Justify") def center(self): self.infoLabel.setText("Invoked Edit|Format|Center") def setLineSpacing(self): self.infoLabel.setText("Invoked Edit|Format|Set Line Spacing") def setParagraphSpacing(self): self.infoLabel.setText("Invoked Edit|Format|Set Paragraph Spacing") def about(self): self.infoLabel.setText("Invoked Help|About") QMessageBox.about(self, "About Menu", "The Menu example shows how to create menu-bar menus " "and context menus.") def aboutQt(self): self.infoLabel.setText("Invoked Help|About Qt") def createActions(self): self.newAct = QAction("&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction("&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.printAct = QAction("&Print...", self, shortcut=QKeySequence.Print, statusTip="Print the document", triggered=self.print_) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=self.close) self.undoAct = QAction("&Undo", self, shortcut=QKeySequence.Undo, statusTip="Undo the last operation", triggered=self.undo) self.redoAct = QAction("&Redo", self, shortcut=QKeySequence.Redo, statusTip="Redo the last operation", triggered=self.redo) self.cutAct = QAction("Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.cut) self.copyAct = QAction("&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.copy) self.pasteAct = QAction("&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.paste) self.boldAct = QAction("&Bold", self, checkable=True, shortcut="Ctrl+B", statusTip="Make the text bold", triggered=self.bold) boldFont = self.boldAct.font() boldFont.setBold(True) self.boldAct.setFont(boldFont) self.italicAct = QAction("&Italic", self, checkable=True, shortcut="Ctrl+I", statusTip="Make the text italic", triggered=self.italic) italicFont = self.italicAct.font() italicFont.setItalic(True) self.italicAct.setFont(italicFont) self.setLineSpacingAct = QAction("Set &Line Spacing...", self, statusTip="Change the gap between the lines of a paragraph", triggered=self.setLineSpacing) self.setParagraphSpacingAct = QAction("Set &Paragraph Spacing...", self, statusTip="Change the gap between paragraphs", triggered=self.setParagraphSpacing) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=self.aboutQt) self.aboutQtAct.triggered.connect(QApplication.instance().aboutQt) self.leftAlignAct = QAction("&Left Align", self, checkable=True, shortcut="Ctrl+L", statusTip="Left align the selected text", triggered=self.leftAlign) self.rightAlignAct = QAction("&Right Align", self, checkable=True, shortcut="Ctrl+R", statusTip="Right align the selected text", triggered=self.rightAlign) self.justifyAct = QAction("&Justify", self, checkable=True, shortcut="Ctrl+J", statusTip="Justify the selected text", triggered=self.justify) self.centerAct = QAction("&Center", self, checkable=True, shortcut="Ctrl+C", statusTip="Center the selected text", triggered=self.center) self.alignmentGroup = QActionGroup(self) self.alignmentGroup.addAction(self.leftAlignAct) self.alignmentGroup.addAction(self.rightAlignAct) self.alignmentGroup.addAction(self.justifyAct) self.alignmentGroup.addAction(self.centerAct) self.leftAlignAct.setChecked(True) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.printAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.undoAct) self.editMenu.addAction(self.redoAct) self.editMenu.addSeparator() self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.editMenu.addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) self.formatMenu = self.editMenu.addMenu("&Format") self.formatMenu.addAction(self.boldAct) self.formatMenu.addAction(self.italicAct) self.formatMenu.addSeparator().setText("Alignment") self.formatMenu.addAction(self.leftAlignAct) self.formatMenu.addAction(self.rightAlignAct) self.formatMenu.addAction(self.justifyAct) self.formatMenu.addAction(self.centerAct) self.formatMenu.addSeparator() self.formatMenu.addAction(self.setLineSpacingAct) self.formatMenu.addAction(self.setParagraphSpacingAct) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/mainwindows/README0000644000076500000240000000157612613140041020314 0ustar philstaff00000000000000All the standard features of application main windows are provided by PyQt. Main windows can have pull down menus, tool bars, and dock windows. These separate forms of user input are unified in an integrated action system that also supports keyboard shortcuts and accelerator keys in menu items. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/mainwindows/recentfiles.py0000755000076500000240000002050412613140041022304 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QFileInfo, QSettings, Qt, QTextStream from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit) class MainWindow(QMainWindow): MaxRecentFiles = 5 windowList = [] def __init__(self): super(MainWindow, self).__init__() self.recentFileActs = [] self.setAttribute(Qt.WA_DeleteOnClose) self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.statusBar() self.setWindowTitle("Recent Files") self.resize(400, 300) def newFile(self): other = MainWindow() MainWindow.windowList.append(other) other.show() def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: self.loadFile(fileName) def save(self): if self.curFile: self.saveFile(self.curFile) else: self.saveAs() def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: self.saveFile(fileName) def openRecentFile(self): action = self.sender() if action: self.loadFile(action.data()) def about(self): QMessageBox.about(self, "About Recent Files", "The Recent Files example demonstrates how to provide " "a recently used file menu in a Qt application.") def createActions(self): self.newAct = QAction("&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction("&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) for i in range(MainWindow.MaxRecentFiles): self.recentFileActs.append( QAction(self, visible=False, triggered=self.openRecentFile)) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.separatorAct = self.fileMenu.addSeparator() for i in range(MainWindow.MaxRecentFiles): self.fileMenu.addAction(self.recentFileActs[i]) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.updateRecentFileActions() self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def loadFile(self, fileName): file = QFile(fileName) if not file.open( QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "Recent Files", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.textEdit.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): file = QFile(fileName) if not file.open( QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Recent Files", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File saved", 2000) def setCurrentFile(self, fileName): self.curFile = fileName if self.curFile: self.setWindowTitle("%s - Recent Files" % self.strippedName(self.curFile)) else: self.setWindowTitle("Recent Files") settings = QSettings('Trolltech', 'Recent Files Example') files = settings.value('recentFileList', []) try: files.remove(fileName) except ValueError: pass files.insert(0, fileName) del files[MainWindow.MaxRecentFiles:] settings.setValue('recentFileList', files) for widget in QApplication.topLevelWidgets(): if isinstance(widget, MainWindow): widget.updateRecentFileActions() def updateRecentFileActions(self): settings = QSettings('Trolltech', 'Recent Files Example') files = settings.value('recentFileList', []) numRecentFiles = min(len(files), MainWindow.MaxRecentFiles) for i in range(numRecentFiles): text = "&%d %s" % (i + 1, self.strippedName(files[i])) self.recentFileActs[i].setText(text) self.recentFileActs[i].setData(files[i]) self.recentFileActs[i].setVisible(True) for j in range(numRecentFiles, MainWindow.MaxRecentFiles): self.recentFileActs[j].setVisible(False) self.separatorAct.setVisible((numRecentFiles > 0)) def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/mainwindows/sdi/0000755000076500000240000000000012613140041020202 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/0000755000076500000240000000000012613140041021447 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/copy.png0000644000076500000240000000247212613140041023134 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÌIDATXõ—]L[eÆwo¼ÙåI q×&ãN¸pÑ…D½Pãå+.&J'†ª‹™àТl†9ܘ€@l¦CÊ +ƒ(ÌÚÑ–ÒÒJ{ú¥ÐïßÿÛÇÌ*‡“<9o!œç÷<ïG‡ÊFϽúé»LZ&aj`ÊÙéyÙš?]Pò¥Áé§WÃ@0„¢­Ç2Š'X"s¿ykÚKr{ç¬ÚØÈ˜@„™…ã‘1)Ka%”D8šBs‡Æ¾Äÿ“y$ñÈX’Ï„]ŒÂå "K£ôÃïM4uY°ëØ6Õž:ü̹ç_.?VžEEU *™Þ¯­Ã±‰Ç¬¶%ü¹è‡kXöÆÒ¯œ¾pŸAÙ€]‡™ŠŠŠÌ’Z[[ݤ¯U­þ¯Tߦ195…Ù¹9è&&PPP€!Ío|ÞI¦ù̘\ÀáOAô…ðC¯ÎÍjöPCfØåŠÇãðz½H§Ó˜œœDee5fg¼ftÓ@2-xðÝQ¬ápF£‘S©~êíEã'Ÿa†A8–ÜPwuãLC#Î5Çí‘q\¼>,/ÀÆÆôzýc@}}ýP2ˆÐFf› ‚Áˆ©¬—ºdn€¦Ø:Ø~E"”+*0®@çmWÚª4¾|Sæ5@f:ÃÃÃèeõ÷÷÷C«Õ¢ªºcwõ*wí¶Ú»e y·ÛíBgg'zzz8PIiniõ×o°ùg¸Ð%3ÀÖÖß @¢(Âï÷cmm §•Ðü®ç©É|Á ˜=@›ÜÛA677ùv¤VÕèûUà©Gç;€Ì%€$3O$(+¯â¸‹˜ 6ZÕ0ÿ˜'“<=MIÉ©J ·³‰=Åø0±|qõ¤êɘ‹ÅP¦¨‚zHÀ˜¸k朙ûçWdÒSjˆF£Ü< ¡¸´×Üf‡ä dÄ(;dH=œs™Ó¹@ ÅeU¸Ø- :c®}ià£v™þ]=¥&­®®rˆ·J*p¹WÀ=¸~žîÌg.í@ªD‹Ž’ÓqLß+++X__ç'Yßt PO¿Ìe¸24ì§ÉXÚëdNi)9D@õÓÏÞ|[–ëO~u¸qøq,ž~½Nm¦7ª¬žd,m72%Ñ#òäÌ'hï ¼f[O5âÉxG•JŤ.Í7RR:÷)µÃáà"ãÅÅEõâñ—\ô¹“é®---né`¡ÔÒ— ———áóù`³Ùø}ii‰C ͲТ’R“éNßxT;5`µZyõÔ ýÎ`0$òòòî³gÙ@SS“[šgJO"ªšÆ‹™7@ŸGGG#mmmÞüü|ûÛA¦²½šÿ'@ss3ŸJGT?U???ÏëÖh4‘ºº:çô]L0ÍÆxG¥Rév:¼bJJo>”´¾¾Þ™““#™gSuVn‹Å‚Hmm­377WVÓÝøFLÂA™n×ßC9V…pÈIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/cut.png0000644000076500000240000000245312613140041022754 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<½IDATXÃíWkL“W>#qÉ2é—¨Te8ö‡2“f,[pÄ0ÿ`¢.:Nº1‰[³€Ù „X‹…²‚•^äf Ž1øÃFË-ܨ·ji‘ò¯ ܸ aÙ²“<í—ó}ýÞç¼ïó^J€ü“ ÿ t (DÙq+F€®ÝdÝÆf"Lø•Ä‹GÈ¡Ó÷ÈŽ—;82a+A …œ¾0H.Ý€@2«yMô¾ûrhd‘^£Qôî…GõнƒËM ›ö@t/½2= ‰?H¥,Œ1yÁ»ˆKÆ×Æ& ¹ýBþÅ+6FŒ\N“§§§ ÌÓ9¹˜c6 Òä£+A Œ)ž*ß7GëÜ{µÌ‰ž@D–Tƒ+, 6FHõd*{.Tø7¿À4*TßbˆRÕ,XtzEUõÈ mtÂÔs÷!¾sQ•®ÐÏ唃‡´žÌ.Ôݯ™Ë°¯¯¯>¿Ò`µÛí€øyä>Ä^«´¹ˆ/†€'ÓÀgùŽõ`×^3ºvÚsîhØÇÇGŸ««° Á‡²ö.ç–7÷wsaؽè^€/fš †ß©6B÷ðØŸÔϥ犘-~þm—Tk__¸ÐÑsbrVNć—ÔŒ0é·8@¤Ö1ž…›~m©%[—Ù æ. ó$ß6Ž{½ÑÍBÈ o©<ѽV«w„ó’\»R©„úúz0™L uß5ÁQ±dÉQD>¶vÌ´@O“_~ÓÖßß2™ D"¨T*J¥ Ñh K[9¾é•à¸S¯y,ó—Ž"žÇ†æS)ö‚‚æâ   àñx`±X@[^ûÏ& -¦SÎg”Ï Lƒâ[{æÂ`š² ˆÅbÈÌÌ„¢¢"P«ÕÐÙÙÉ`ìþɹÉÛ§u.·ÏK€®·Ø)pÀj—¬xˆÊ‚â)‰>—+![–cãG„&Ø’rdŽo¿£Ñ-­-ðËÀ 8ñ¾³bÁ\i„……„FÜ&ç2¬,Ï3µì;ãºÓ3¯‚åþz‰žÞüb÷<’{f«O[Ê5íXCC=444€¥·2ÅÃóéÀe<’å(ž6]åœ*2x}ôƒ.Zl1 %êq÷/Ë'ï‡_þÓäD LhôÉ>u• ´··Ãׯ–1® fñ6m8hí÷*>]åXªñGZõ¶Y ³CÉ‘8 9ù©–!ú\ ϳÿÿ7üOøç‡¹DÃÏIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/new.png0000644000076500000240000000152412613140041022750 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<æIDATXÃÕ—ÍNa†ë5”•{qáÒÄà¸â\¸ô\±0ê–&bX¸°‘X Ñ¿‰¤±R¤HE”þÐCÿ¦¦e€ãy{ú…QJ‚É!†IÞœ3§óÍûœóM›N„ˆ"ÿS‘sÀÇÕnÿ¥û¬Ç==d ©ð12<<¼j4::ºV<¯&“ÉV:v‰Dk`` Íknh¤8Òááq™ºï·É²,Úßß'†ñxÍëŠ@?ó°Ç¥Lf¹ Åb±:¯{pˆSww²lÛ¡ùùÏd×uéùÄDB&{Áɪ7JÎÍSøp]‹T‚@gOÎí¦Ggféõ›·Ÿœ¤©©iz÷þE£Ñe^AÀïí¶%†…šã”]ÍÑäô+z2þ”žÅ^ÐLb‹UÚõ <ÿjÍ67«”/nS‰c·…×~QðyÌÍ]µÇ{ÛîŸ;¾äˆ]¸½îâ”Ê3àuäÆuWbØ9êæ3DÔ§àô:­9"˜˜hr€˜kPS*-¹1âNSŒ òmû(¶|E›;ÛjüiŽûÅS(ðC¸fI÷kùR‡×¾TÈUºN­K¯…Þ·Â’=O¦³Þ£±qëÚÐõ˜³n©l4¤kÿàZSÔ Yoäî½â¥ÁËK|mŒu‡5¨ú·ÝeÙ<þžÏ7½Éºx&oFhòÿ™”žé?¿BÓôü½œž¥~Ql%¡’• wIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/open.png0000644000076500000240000000403112613140041023114 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<«IDATXíW[P“göÊÎìÌöb/¼ÙéÎìn½ÚÙ›µÎº;{°­Ìz±ÎÎ:³vTpuÛâÖ¶T»¥ mÁ‚QB€€€!’@Hs$!gr€B œ GµTxöû~0X‹}gžù/’üÏû>Ïû¾ß—]vý˜ ñ ‚Áu‚ÏýþH¼› áW¯ïµ*ŒÖeÛ`[ 'ñ3ú"üÜ>vH~Š ¹¶Y2Ï­B9þDöQØÇæè‡†={öXSR®,Ê::NâåIÃÄ1·>Iù,`›]YSMM¶4ëû 1y`Å»ï¾?Å«¾ƒñ‰)LOÏ®’ï×¼tŸ¾ã²CO´3@‹{Í=.4ëì¨Wö ‡S…2^5C¼°ôÁ`\&¿K|áH$8AýÝês'ñ¹'H‡—Á×» "U7Ü7¢¸Nˆ,V>ÌVÛ:q,k,üÎç'‘6“•?F}¥þÄoôY1¶~ï Z{œà?0¡L(CF²ù&ÒùÅeÌ-,!4¿ˆ½{÷ZÉ;~ºm$~CF=5iu³€Ò?ËÄâšP¡Z´lñY ¶ ¦]/²sq·žÿ 1% ÍcbjƒC'äݼ-Ó°;’3&ÔSµÓûXOˆÅ!ˆ,CPºFÐí Bå›B›sü©ÏZî*tȼÉE §l“Ï›ˆ'§Ào¢ÖÖ%ÂQÛ(‡Æ¯‚/b”M‰$"êR-šB«èy¡ÅÏStö £Óá‡Ô<€½ ]Õ ‘• /yñƪ©Ô³s LÅ”ØÝï…Éb·¼¥å•KóË«#7ÙæÙ„—Ë<Ðhò£Ýî_'–;† ³x×}æ¤ø<3*6ªÜS3!ŒŽ3Ó&ä7 ñÁÅQs¯¾e`ü ##òΡ¾]¹¸QƒttM§ g€©¸ÝêƒØèB“ÊÌø|åË,ˆÚ$Q‰§g熆G`w8I‚:$|ø!®³ á™\€o ÐÞá,«Ä}ïÝaëÿŸÀ¹ö!HÌýO}îÔ"U„ªšºM>GäŽø<<„ÓݽÁˆÂâbœ~/=ô/ƒ„¼Åÿ-î:C(Q‘÷öñNÜ¿}„3iã ô3«àÉTh58ÑØÝ žX‰¬\ö3>Gªžœžeäî÷¢×lAC'bã éÖÀEÏR$¸†²žn´ÛPÑD…΋J~ m¾›['Ñ ™øe"î)ô(Èx5 ­>ªÜc“ð Ãf]ŽÄK—ÃÊÃÔcÀNzI1Nú‰”[;„|…%jJÕèò0£("øù3 t.¡¨¾¥| ²J*ðÏãqQåöFÑçò@«7 ýj’¿HƒÍ7'©Ú@Là{ˆREÝý qA—Å݈œAüùÍ·]„ël´CÐ(÷N#§ü²K«ñQêWHþoêúXQ¹G‚ãð ø`4™QÉ«ÂûgÏAþ@?én²¹oiÒ›*/råäuö¡ð¾•ùœÊ)ÂS¸Ý)Ü+vQÈÅ•ky8Ÿ€›·n3c‘Ûjs@"mÇ…„Pt» ó+€Ÿ4X÷$ |„JÓ8úa†œVýU³¬;¸:Ù!z/༺]&¾Áƒ”oØ8ŸœŠ=c¯™én*·F׃¤ËÉHÿ:‹ŒÕÇÑØ3ø81 †^›øÝûQOÔñ™îšª­“`+] 9õ¼ð¾g½êÌ=JUm”ÔñCáeS@ðÊ÷%`+njÇ©„DÄ9ŠÜ|6ZZÅ8ƒ/95Èj˜æ¢ÕÒ'õšzL¡Id·™ÛnF¹Ú¥v9,9=ùNìÙrÔG ;«Fˆcÿ9ßîû=ùœ¿€“ñp£­ÄOJénºX¨ï,ú”˜P(·@é<ùWì)*w-Ágû¶¹äD¾Ì²Züãä<ô7°ró°ïÀP Ñ!‰'e*¦K…>¿!ÕFä.[!° ®åÜâÒä‡o<¯<ç–5œiEåøû±X?‡7öïÇ:’«¤ !ípê5U!‹4[É7*4nÔI:ÃrsŽm•û‡$àJespäø)>|˜Œc.2*\"ÕÓ]~MÜ 6étv§wŒäˆ¶ùž„·•û"½Iý€ mô2JxLœKIõ¦.|Âme6Yñƒ\—šÁQ{ ó×Î%&6ÈýÇÈÕ‚ÜÎ^NEX…xö]\©UªûÀ–ÛP­uã®TA/Ê r¿ºÓj£·¢Qø¯CO¹-ˆËæášHª/š5æÇzó-Wx¬¨Ü¯½¬ÜÑâÝ\uÞ˯E¹v2g`õ§—©Ü÷Ò©Ü;øóÂñ‚ÊîP 9”¸ ÂÈ£‡Ã/"÷ÿÚmŠÝa™Õ¶Øk»^2¾/‰ÿf¹_ü€=ÏIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/paste.png0000644000076500000240000000315512613140041023275 0ustar philstaff00000000000000‰PNG  IHDR szzô4IDATx^­—[lTÇÆsÎÙ‹½öú ¾²ic$BJ!"¡-•b¥/îKh+•¦U¥Æ`UªÚ´ªúV UÊ”'Ú„)­Ä‹¥RƒyÅ9iÓ„š›cjì²;»öz½»Þ³g¦Ãh…årlˆÉ'}úŸ‡ý~óŸ™sJ)‚$„xxžÇkH)õwÖ(' ¸C»h—R¾ÆcdYÖö»@·9ÿ&ü·íõâ`]DDnΉŠ+W®P]S@ Pe(A)fÓi^©/¼´Nl;ñ¹Gƒ|[CL;…D•2â¶Ä¶!!p>SlŒ;€D*ðœàË@P4`ÄHiŸ$Nœ8!Ò‡––g emå(¥´AXW%âØDBÃs\¼=A÷XŽ\$¾©½}÷ï-ËZܱcGYUU•ÓØØ~à†††Ð¥K—Ü®®®ðÖªDU,ÂsÕ1òžO¡(‘Ja Aرˆ†lær¢Ž?Ÿÿ+ M"Àf–„ïûxžGuuµžPKôêÕ«‡„(¥ÞZÀ²A¶-Ú¶8¤XÂŒL¹ì{õ;Ô76|/Á„g2ÊËËÍf>vìØ&½.A,ÐÙÙ©:¤l!Y¶-ÇÆBP´ÍDzˆ8–®`YxÀÜÜ555 räÈ‘ÍÀˆ¢Çb¹°mt0fË#6±¨£Ç,2‹“™c©yîÌ.èßErù<«È,A6›5§féÿm8°èX ´tŽ áÀSб¤ËŒƒÓ²—¦}¯³µã¬Ûû: /´sûÎ$ýýý$“I”Ræúøñã躬3çÎãèÑ£>|˜ÞÞ^‰„,¡ÜíÿÎæøç”OkÇÏøæ/ß&öõ7™|¦ƒkþ.®ñ-dk­{N^VsúogÑwMîÜâ¯vrýúu gkÖ?‹™ëx<Žã8%8À#–%˜ÊA:ÞÊþß½MÕ®×(„bÛBY‚lArf‘Oîf¸êrúadÕ^®Üg2ׯ…î›í‡¡ÍÍÍ´µµ755¡¡ ƒFÜqßÿéo¨lØHâì;L^É”±µy›[¶óIy%c —ÏfòÜÎ2¡íˆ L'çØ·+Êú%3{=kêêêÌu*•2J+ ¹Zpác(,ÊæÆÙR”’{Ã}$eÛÚLMÛË|<œfÒ_ÀÍx,Ìk/x µt:B¡ -ÝêŽ*ø>`ÁƸ P#‹S·¥–’xv}é¬ÇhÿŸ˜®¼LËöƒ¸ a¼‚¤X”xÚ!ÇB-ª€ãi –ÕÖÇC„Ê#ü¿jc!ž© sá߃ìÙùÊ£¹2G(akK!¥%0*¤\@X¥*Ìõ#úpl†ñYïýúÜÊÔàD\¢Ï“=Ó¥RòPjYVL vùÕ_†½·€=“gÓº2òy_»hêίÔpùÝà%žx L¸<¢Ö/Uò‡>ÏõO3D·±óÅ—Y\N`ŽÛS(À%mÔR}±µ–Ý[ât¿—¥j÷WùÑo µ˜µ7ÕØÒËSpSxó3³i %ýÕ‚Öðð)çãç3æu¨ÖË÷‰Á3}ú×rŒ²7Dzþ­”Ìo÷DTØ_p’ ý×=?ý~B¦Ïßöïîv;ü’¨ãsÊu]pWí@2« ~*Ó½·üÔÍi9ô—th¿¢Ó¶í¯}ž%XXXðÒ'Ožœºƒ>IÊ­ã³*×;â§nLËÑRèYt‹= ÀÐÐÛÓÓ“ÒNÏÎΞ.½ßèîê)Œ„…¯055UÐ/"©S§N%ÇÇÇ/g~쮸 KßvÚO&…@@aZüÞà`º»»;¥ßŠÌ$Ð^ísÍaíšw3n`pðýt___úÌ™3¦Å¥Ðx‰µžc!DxØOis´ø±ú½ú*_òØIEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/sdi/images/save.png0000644000076500000240000000224312613140041023114 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<5IDATXÃå—ÍTEÅ·êÖ{¯ÛnÇù@‰FM4™DH˜ÄŒþL\ñ.M\kXÃŽÄ΂htA\ âÄÆ=`PQ`¢ ƒÓý^÷”‹ªîù`æ „QVR©Î{·ëž:÷Ô©zê½ç~6å>·>€]»v½ìýòN5ëػ」;vœ<:ÏÌ—7XœïÜS¦Ú òÜk¼¸g€‹|øî€Ûpüìß?0x.ý¸Àþ·ÎoËryš #–ÓŸdüÕ}›k@E°@xp,#˲m00–aP|#%"+ؑՕsç΃*¸Ò² Ò,ŒI IÞw:ç·¡Õ‚v+Žm(r²ú8Ö ã¯¼Ikñú欬°Fؽ{çk놮€Z¨VêmQ¯µ‚÷ ¦„g5‚¨ •,Ã# Àð/Þ#&|ˆ#Ä!Яª‹öØ'aa½%% ð4M£:ó˜‰lÚc V˜_)FüaÍra-Ñ€: TIO4/à…Ä!‰Ãg ’i؉â‡X‹ïv‘¼€¼íßj#íòŸwPEÕ x:ëTx›œ3x$¼þòówhè6h¤¾ñëÆüß±R^‚DM_„ ¥8ç¶ÅˆžK¹v³Rª¸PïZÅ0}±Ë@Űô&­WùU.ááÆÒ2õÌp}É„-éJœÀsåf—+7»¬QW?תd~Å'¢)¬Ü µw¦l¨Á© È5¯›5Y1žþ{éïñ‚ï›X0+WVU!ÑüçSßòë™,-Þ¸§úWj<õìNžya¨3[1|‡÷÷¿Á·nÝ¢( Dk-ÖZTUÅ9‡ªb­Å˜ðßååeò<ï÷#Íù¸ò-pVPÜ1:¶rO8~œééiŒ1x˜`rròŽYØ1:Ö߆®Ô Up6¬¢V¯÷k933ÃÐÐÖZ¼÷4›Í»P«×pш´Ôˆœ '\ *¨V«dYÖ§¸7Þis©AK­8ǽ#´×Œ1ˆDß:¸«›¯5¨ óö.=Žƒ)mãÕÛ©÷åVl­ô‘Ž ÃòïÛà¡‘aÔµ+—Yœ¿¾6øÀ`­ ÛÃÀP­ÂìÅKœýîΟœž¦6`$^J í‘'©= o8ÈfÇ':ñ*ç52(ºpùêUÎ4ŽÑüú‹¹ÙNoà³>à§Ó'W™éÚ£†Uæ»<_o|wîÙ_‡Æ_˜šþôãõsl}ò5â·ÚÿÝ×ñ?MðK¹èF‰¯IEND®B`‚PyQt-gpl-5.5.1/examples/mainwindows/sdi/sdi.py0000755000076500000240000002631712613140041021347 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSize, Qt, QTextStream) from PyQt5.QtGui import QIcon, QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit) import sdi_rc class MainWindow(QMainWindow): sequenceNumber = 1 windowList = [] def __init__(self, fileName=None): super(MainWindow, self).__init__() self.init() if fileName: self.loadFile(fileName) else: self.setCurrentFile('') def closeEvent(self, event): if self.maybeSave(): self.writeSettings() event.accept() else: event.ignore() def newFile(self): other = MainWindow() MainWindow.windowList.append(other) other.move(self.x() + 40, self.y() + 40) other.show() def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: existing = self.findMainWindow(fileName) if existing: existing.show() existing.raise_() existing.activateWindow() return if self.isUntitled and self.textEdit.document().isEmpty() and not self.isWindowModified(): self.loadFile(fileName) else: other = MainWindow(fileName) if other.isUntitled: del other return MainWindow.windowList.append(other) other.move(self.x() + 40, self.y() + 40) other.show() def save(self): if self.isUntitled: return self.saveAs() else: return self.saveFile(self.curFile) def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save As", self.curFile) if not fileName: return False return self.saveFile(fileName) def about(self): QMessageBox.about(self, "About SDI", "The SDI example demonstrates how to write single " "document interface applications using Qt.") def documentWasModified(self): self.setWindowModified(True) def init(self): self.setAttribute(Qt.WA_DeleteOnClose) self.isUntitled = True self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.readSettings() self.textEdit.document().contentsChanged.connect(self.documentWasModified) def createActions(self): self.newAct = QAction(QIcon(':/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.closeAct = QAction("&Close", self, shortcut="Ctrl+W", statusTip="Close this window", triggered=self.close) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.cutAct = QAction(QIcon(':/images/cut.png'), "Cu&t", self, enabled=False, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.textEdit.cut) self.copyAct = QAction(QIcon(':/images/copy.png'), "&Copy", self, enabled=False, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.textEdit.copy) self.pasteAct = QAction(QIcon(':/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.textEdit.paste) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) self.textEdit.copyAvailable.connect(self.cutAct.setEnabled) self.textEdit.copyAvailable.connect(self.copyAct.setEnabled) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.closeAct) self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newAct) self.fileToolBar.addAction(self.openAct) self.fileToolBar.addAction(self.saveAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.cutAct) self.editToolBar.addAction(self.copyAct) self.editToolBar.addAction(self.pasteAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def readSettings(self): settings = QSettings('Trolltech', 'SDI Example') pos = settings.value('pos', QPoint(200, 200)) size = settings.value('size', QSize(400, 400)) self.move(pos) self.resize(size) def writeSettings(self): settings = QSettings('Trolltech', 'SDI Example') settings.setValue('pos', self.pos()) settings.setValue('size', self.size()) def maybeSave(self): if self.textEdit.document().isModified(): ret = QMessageBox.warning(self, "SDI", "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() if ret == QMessageBox.Cancel: return False return True def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "SDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.textEdit.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "SDI", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File saved", 2000) return True def setCurrentFile(self, fileName): self.isUntitled = not fileName if self.isUntitled: self.curFile = "document%d.txt" % MainWindow.sequenceNumber MainWindow.sequenceNumber += 1 else: self.curFile = QFileInfo(fileName).canonicalFilePath() self.textEdit.document().setModified(False) self.setWindowModified(False) self.setWindowTitle("%s[*] - SDI" % self.strippedName(self.curFile)) def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() def findMainWindow(self, fileName): canonicalFilePath = QFileInfo(fileName).canonicalFilePath() for widget in QApplication.instance().topLevelWidgets(): if isinstance(widget, MainWindow) and widget.curFile == canonicalFilePath: return widget return None if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/mainwindows/sdi/sdi.qrc0000644000076500000240000000040712613140041021471 0ustar philstaff00000000000000 images/copy.png images/cut.png images/new.png images/open.png images/paste.png images/save.png PyQt-gpl-5.5.1/examples/mainwindows/sdi/sdi_rc.py0000644000076500000240000010725412613140041022030 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 18:04:51 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\x54\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xe6\x49\x44\x41\x54\x58\xc3\xd5\ \x97\xcd\x4e\x13\x61\x14\x86\xeb\x35\x94\x95\x7b\x71\xe1\xd2\xc4\ \xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb1\x30\xea\x05\x18\x96\ \x26\x62\x58\xb8\xb0\x91\x58\x20\xd1\x9d\xbf\x89\xa4\x14\xb1\x52\ \xa4\x48\x45\x94\xfe\xd0\x02\x43\xff\xa6\x9d\x19\xa6\x65\x80\xe3\ \x79\x7b\xfa\x85\x51\x4a\x82\xc9\x21\x86\x49\xde\x9c\x33\xa7\xf3\ \xcd\xfb\x9c\xf3\x4d\x9b\x4e\x84\x88\x22\xff\x53\x91\x73\x01\xc0\ \xc7\xd5\x90\x6e\xff\xa5\xfb\xac\xc7\x3d\x3d\x64\x0d\xa9\x02\xf0\ \x31\x32\x3c\x3c\xbc\x6a\x34\x3a\x3a\xba\x19\x56\x3c\x1e\xaf\x26\ \x93\xc9\x56\x3a\x9d\x76\x13\x89\x44\x6b\x60\x60\x20\xcd\x6b\x6e\ \x68\x02\xa4\x38\xd2\xe1\xe1\x71\x99\xba\xef\xb7\xc9\xb2\x2c\xda\ \xdf\xdf\x27\x86\xf1\x78\xcd\x18\xeb\x8a\x1a\x40\x3f\xf3\xb0\x1c\ \xc7\xa5\x4c\x66\xb9\x0b\x14\x04\x01\xc5\x62\xb1\x3a\xaf\x7b\x70\ \x1a\x88\x53\x01\x1c\x1c\x10\x77\x77\xb2\x6c\xdb\xa1\xf9\xf9\xcf\ \x64\x0e\xd7\x75\xe9\xf9\xc4\x44\x17\x42\x05\x00\x26\x7b\xc1\xc9\ \xaa\x37\x1c\x4a\xce\xcd\x53\xf8\x70\x5d\x0f\x8b\x17\x54\x00\x82\ \x10\x40\x67\x4f\x14\xce\xed\xa6\x47\x1f\x67\x66\xe9\xf5\x9b\xb7\ \x14\x9f\x9c\xa4\xa9\xa9\x69\x7a\xf7\xfe\x03\x45\xa3\xd1\x65\x5e\ \x7f\x41\x05\xc0\xef\x10\xed\xb6\x25\x86\x85\x9a\xe3\x05\x94\x5d\ \xcd\xd1\xe4\xf4\x2b\x7a\x32\xfe\x94\x9e\xc5\x5e\xd0\x4c\x62\x0e\ \x8b\x17\x55\x00\xda\x81\x18\xf5\x13\x20\x3c\xff\x90\x6a\xcd\x36\ \x15\x37\xab\x94\x2f\x6e\x53\x89\x63\x8d\xb7\x85\xd7\x7e\x51\x01\ \xf0\x79\xcc\xcd\x5d\x1e\xb5\xc7\x7b\xdb\xee\x9f\x3b\xbe\xe4\x88\ \x5d\xb8\xbd\xee\xe2\x94\xca\x33\xe0\x75\xe4\xc6\x75\x57\x62\xd8\ \x10\x39\xea\xe6\x33\x44\xd4\x01\xa7\x06\xe0\xf4\x3a\xad\x39\x22\ \x98\x98\x68\x72\x80\x98\x6b\x50\x53\x9d\x00\x00\x2a\x2d\xb9\x31\ \xe2\x4e\x53\x8c\x10\x0d\x04\xf2\x6d\xfb\x28\xb6\x7c\x45\x00\x9b\ \x3b\xdb\x6a\xfc\x69\x8e\x3c\x6c\x88\x1a\xae\x39\x13\x80\x3a\x8f\ \xb7\x54\x23\x2a\xd7\xc5\x04\x06\x06\x00\x35\x28\x9c\x17\xab\xbc\ \x25\xbb\xca\x13\xc0\x4d\x61\x0e\x15\x2a\x72\x6e\xcc\x7e\x5a\x02\ \x68\x6a\xdd\xad\xf1\x94\x27\x00\x53\xdc\x1c\x71\x6d\x5b\x40\x60\ \x9a\xab\x1c\x75\x9e\xeb\x81\x41\x15\x47\x11\xc0\x6a\x89\x31\x0c\ \xd6\x77\x04\x20\x0c\x64\x26\x62\xb6\x69\x75\x8b\xa8\xaa\x09\x50\ \xb6\xc5\xbc\xd0\x03\xf8\xbe\x29\x63\x87\x29\x60\x0c\x18\x84\x1c\ \x00\x5b\x4d\x45\x00\x74\x03\x53\x98\xad\x94\xc5\x1c\xe7\x46\xe6\ \x1c\x00\xc8\x71\x5d\xa9\xa1\x08\x80\xfd\xfc\x56\x12\x73\x33\x01\ \x08\x35\x18\x42\xe8\xda\x7c\x8e\x29\xa8\x4e\x00\x5b\x00\x03\xc8\ \x98\x67\x36\x04\x00\x32\xe6\x85\xde\xf8\x17\x0b\xfc\x2c\xd8\x8a\ \x00\x18\x67\x3a\x4f\xb4\x54\x14\x23\x98\x02\x00\x02\x0c\x3e\xfb\ \xc5\x53\x28\xf0\x43\xb8\x66\x49\xf7\x6b\xf9\x52\x87\xd7\xbe\x54\ \x01\xc8\x55\x8f\xba\x4e\xad\x4b\x0e\x90\xaf\x85\xde\xb7\xc2\x92\ \x3d\x4f\xa6\xb3\xde\xa3\xb1\x71\xeb\xda\xd0\xf5\x15\x98\xb3\x6e\ \xa9\x00\x6c\x34\xa4\x6b\x18\xff\xe0\x11\x7f\x5a\x17\x53\xd4\x13\ \x0b\x59\x6f\xe4\xee\xbd\xe2\xa5\xc1\xcb\x4b\x7c\x6d\x8c\x75\x87\ \x35\xa8\xfa\xb7\x1c\xdd\x65\xd9\x3c\x8f\x1f\x19\xfe\x9e\xcf\x1e\ \x37\xbd\xc9\xba\x78\x26\x6f\x46\x00\x68\xf2\xff\x81\x99\x94\x9e\ \xe9\x3f\xbf\x19\x01\x42\xd3\xf4\xfc\xbd\x9c\x9e\xa5\x7e\x03\x51\ \x6c\x25\xa1\x92\x95\x0a\x77\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x06\x6d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x06\x34\x49\x44\x41\x54\x78\x5e\xad\x97\x5b\x6c\x54\xc7\ \x1d\xc6\x7f\x73\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\ \x69\x63\x24\x42\x4a\x21\x22\xa1\x2d\x95\x62\xa5\x2f\xee\x4b\x68\ \x2b\x95\xa6\x55\xa5\xc6\x60\x55\xaa\xda\xb4\xaa\xfa\x56\x09\x55\ \xca\x03\x94\x27\xda\x07\x84\x14\x29\xad\xc4\x8b\xa5\x52\x83\x79\ \x08\xc5\x18\x39\x0e\x69\xd3\x84\x9a\x9b\x63\x6a\xec\xb2\x04\x1b\ \x3b\xbb\xf6\x7a\x8f\xbd\xbb\xde\xb3\x67\xa6\xc3\x68\x85\xe5\x72\ \x6c\x88\xc9\x27\x7d\xfa\x9f\x9d\x87\xfd\x7e\xf3\x9f\x99\x73\x11\ \x4a\x29\x82\x24\x84\x78\x05\x78\x9e\xc7\x6b\x48\x29\xf5\x77\xd6\ \x28\x27\x20\xb8\x43\xbb\x01\x68\x97\x52\xbe\xc6\x63\x64\x59\xd6\ \x07\x1a\xf6\xbb\x40\xb7\x06\x39\xff\x14\x00\x26\xfc\xb7\xed\xf5\ \xe2\x60\x5d\x44\x44\x6e\xce\x89\x8a\x2b\x57\xae\x50\x5d\x53\x8d\ \x40\x00\xa0\x50\x08\x65\x28\x41\x29\x66\xd3\x69\x5e\xa9\x17\x2f\ \xbc\xb4\x4e\x6c\x3b\xf1\x1f\xb9\x47\x83\x7c\x5b\x43\x4c\x3c\x4d\ \x07\xf6\xff\x60\x8b\xdd\x2c\x25\xf8\x4a\x32\x3c\x3c\x4c\x65\x65\ \x25\x2b\xc9\x75\x5d\x1e\xc0\x6e\xa9\xb0\x22\x1b\xa2\x2a\x72\x3f\ \xa7\xea\x81\xb5\x03\x08\x2d\x05\x48\xa1\x0d\xf4\x5d\xbc\x48\x2e\ \x97\xc3\x2f\x16\x51\x4a\x91\xcf\xe7\x59\x5c\x5c\xa4\x50\x28\x50\ \xd4\x63\xb5\xb5\xb5\x94\x01\x58\x80\xf8\x82\xf6\x80\x01\x00\x36\ \x44\x05\x1f\x0f\xbc\x4b\x3e\x3b\x8f\x85\x44\x95\x32\xe2\xb6\xc4\ \xb6\x04\x21\x21\x70\x3e\x53\x6c\x8c\x3b\x80\x44\x2a\x04\xf0\x9c\ \x10\x02\xe0\xcb\x40\x05\x50\x0f\x34\x60\xc4\x48\x69\x9f\x24\x02\ \x01\x4e\x9c\x38\x21\x00\x81\x05\xd2\x87\x96\x96\x67\x09\x65\x6d\ \x14\xe5\x28\xa5\xb4\x41\x08\x58\x57\x19\x25\xe2\xd8\x44\x42\x16\ \xc3\x13\x73\x5c\xbc\x3d\x41\xf7\x58\x8e\x5c\x24\xbe\xa9\xbd\x7d\ \xf7\xef\x2d\xcb\x5a\xdc\xb1\x63\x47\x59\x55\x55\x95\xd3\xd8\xd8\ \x18\x7e\xe0\x86\x86\x86\xd0\xa5\x4b\x97\xdc\xae\xae\xae\x08\xf0\ \xd6\xaa\x1d\x00\x13\x44\x55\x2c\xc2\x73\xd5\x31\xf2\x9e\x4f\xa1\ \x28\x91\x4a\x61\x09\x41\xd8\xb1\x88\x86\x6c\xe6\x72\x05\x12\xa2\ \x8e\x3f\x9f\xff\x2b\x0d\x4d\x1b\x01\x22\xc0\x66\x96\x84\xef\xfb\ \x78\x9e\x47\x75\x75\xb5\x9e\x50\x4b\xf4\xea\xd5\xab\x87\x84\x10\ \x28\xa5\xde\x5a\x11\xc0\xb2\x41\x00\xb6\x2d\x90\xda\xb6\x14\x38\ \x08\xa4\x12\x58\xc2\x8c\x1b\x8f\x4c\xb9\xec\x7b\xf5\x3b\xd4\x37\ \x36\x11\x7c\x2f\xc1\x84\x67\x32\x19\xca\xcb\xcb\xcd\x66\x3e\x76\ \xec\xd8\x26\xbd\x7f\x0e\x2e\x41\x2c\x01\xd0\xd9\xd9\xa9\x0e\x1d\ \x3a\xa4\x6c\x21\x08\x59\x10\xb6\x2d\x1c\xc7\xc6\x42\x50\xb4\xcd\ \x1a\x1b\x00\xc7\xb2\x88\x38\x96\xae\x02\x60\x59\x78\x10\xc0\xdc\ \xdc\x1c\x35\x35\x35\x06\x20\x1a\x8d\x72\xe4\xc8\x91\xcd\xc0\x03\ \x88\x1b\x1a\xa2\xc7\x62\xb9\xb0\x6d\x74\x30\x66\x8d\xcb\x23\x36\ \xb1\xa8\xa3\xc7\x2c\x32\x8b\x1e\x93\x99\x1c\x63\xa9\x79\xee\xcc\ \x2e\xe8\xdf\x45\x72\xf9\x3c\xab\xc8\x2c\x41\x36\x9b\x35\xa7\x66\ \xe9\xff\x6d\x0e\x1c\x38\xb0\x1e\xe8\x00\x58\x06\xa0\xb4\x74\x16\ \x8e\x0d\xe1\x90\xc0\x53\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\ \xa6\x7d\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb\x3a\x0d\x2f\xb4\x73\xfb\ \xce\x24\xfd\xfd\xfd\x24\x93\x49\x94\x52\xe6\xfa\xf8\xf1\xe3\xe8\ \xba\xac\x33\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c\x3e\x7c\x98\xde\xde\ \x5e\x12\x89\x84\x04\x2c\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\ \x94\x4f\x6b\xc7\xcf\xf8\xe6\x2f\xdf\x26\xf6\xf5\x37\x99\x7c\xa6\ \x83\x6b\xfe\x2e\xae\xf1\x2d\x64\x6b\x17\xad\x7b\x7f\x4e\x5e\x56\ \x73\xfa\x6f\x67\xd1\x77\x4d\xee\xdc\x9d\xe2\x1b\xaf\x76\x72\xfd\ \xfa\x75\x03\xa0\x67\x6b\xd6\x3f\x16\x8b\x99\xeb\x78\x3c\x8e\xe3\ \x38\x25\x38\x04\xc0\x23\x00\x96\x25\x98\xca\x41\x3a\xde\xca\xfe\ \xdf\xbd\x4d\xd5\xae\xd7\x28\x84\x62\x08\xdb\x42\x59\x82\x6c\x41\ \x72\x7f\x66\x91\x4f\xee\x66\x18\xb8\xea\x72\xfa\x1f\x61\x64\xd5\ \x5e\xae\x8f\xdc\x67\x32\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\ \xcd\xcd\xcd\xb4\xb5\xb5\x19\x37\x35\x35\xa1\xa1\x14\x20\x83\x1f\ \x46\x16\xdc\x71\x15\xdf\xff\xe9\x6f\xa8\x6c\xd8\x48\xe2\xec\x3b\ \x4c\x8f\x5e\xc3\x89\x94\xb1\xb5\x79\x07\x9b\x5b\xb6\xf3\x49\x79\ \x25\x63\x09\x97\xcf\x66\xf2\xdc\x9d\xce\x32\xa1\xed\x88\x0d\x4c\ \x27\xe7\xd8\xb7\x2b\xca\xfa\x25\x00\x33\x7b\x3d\x6b\xea\xea\xea\ \x00\xcc\x75\x2a\x95\x32\x00\x4a\x2b\x10\xa0\xb9\x5a\x70\xe1\x9d\ \x63\x28\x2c\xca\xe6\xc6\xd9\x10\x8f\x52\x94\x92\x7b\xc3\x7d\x24\ \x65\x05\xdb\xda\x7f\x4c\x4d\xdb\xcb\x7c\x3c\x9c\x66\xd2\x5f\xc0\ \xcd\x78\x2c\xcc\x6b\x2f\x78\x20\x00\xb5\x74\x3a\x42\xa1\x90\x09\ \x2d\xdd\xea\x1f\x8e\x01\x2a\xf8\x3e\x60\xc1\xc6\xb8\xa0\x50\x1c\ \x23\x1c\x8b\x53\xb7\xa5\x96\x92\x78\x76\x7d\x05\xe9\xac\xc7\x68\ \xff\x9f\x98\xae\xbc\x4c\xcb\xf6\x83\xb8\x0b\x61\xbc\x82\xa4\x58\ \x94\x78\xda\x21\xc7\x42\x2d\xaa\x80\xe3\x69\xa0\x96\xd5\x15\x01\ \x00\xd6\xc7\x43\x84\xca\x23\xfc\xbf\x6a\x63\x21\x9e\xa9\x0c\x73\ \xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb9\x32\x47\x03\x28\x03\ \x61\x6b\x00\x16\x4b\x21\xa5\x1c\x25\x30\x2a\x15\xa4\x5c\x05\x40\ \x58\xa5\x2a\xcc\xf5\x23\xfa\x70\x6c\x86\xf1\x59\x8f\xef\xfd\xfa\ \x8f\xdc\xca\xd4\xe0\x44\x5c\xa2\x11\x1b\xcf\x93\x14\x3d\x07\xd3\ \x01\xa5\x90\x52\xf2\x50\x6a\x59\x01\x56\x05\x10\x08\x4c\x0d\x04\ \x18\x9d\x76\xf9\xd5\x5f\x86\x18\xbd\xb7\x80\x3d\x93\x67\xd3\xba\ \x32\xf2\x79\x5f\xbb\x68\xea\xce\xaf\xd4\x70\xf9\xdd\xe0\x25\x00\ \x9e\x78\x09\x4c\xb8\x10\x3c\xa2\xd6\x2f\x55\xf2\x87\x1f\x3e\xcf\ \xf5\x4f\x33\x44\x1b\xb7\xb1\xf3\xc5\x97\x59\x12\x5c\x4e\x60\x8e\ \xdb\x53\x01\x28\xc0\x12\x25\x00\x6d\xd4\x52\x7d\xb1\xb5\x96\xdd\ \x5b\xe2\x74\xbf\x97\xa5\x6a\xf7\x57\xf9\xd1\x1b\x6f\x10\xa0\xb5\ \x03\x98\xb5\x37\xd5\xd8\x08\x01\xd2\xcb\x53\x70\x53\x78\xf3\x33\ \x14\xb3\x69\x0a\x19\x1f\x25\xfd\xd5\x82\xd6\x08\xf0\xf0\x29\xe7\ \xe3\xe7\x33\x14\xe6\x75\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc1\x33\ \x7d\xfa\xd7\x72\x8c\xb2\x13\x37\x03\xc7\x01\xb2\x1e\xfe\xad\x94\ \xcc\x6f\xf7\x44\x54\x03\xd8\x5f\x70\x07\x08\x92\x09\xfd\xd7\x3d\ \x3f\xfd\x7e\x42\xa6\xcf\xdf\xf6\xef\x02\xee\x76\x3b\xfc\x92\x06\ \xa8\xe3\x73\xca\x75\x5d\x1f\x70\x57\xed\x00\x40\x32\xab\x0a\x1f\ \x7e\x2a\xd3\xbd\xb7\xfc\xd4\xcd\x69\x39\x05\xf4\x03\x97\x74\x68\ \xbf\x10\xa2\xd3\xb6\xed\xaf\x7d\x9e\x25\x58\x58\x58\xf0\x07\x06\ \x06\xd2\x27\x4f\x9e\x9c\x06\xba\x83\x00\x3e\x1a\x49\xca\xad\xe3\ \xb3\x2a\xd7\x3b\xe2\xa7\x6e\x4c\xcb\xd1\x52\xe8\x59\x1d\x74\x8b\ \x00\x3d\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2\x4e\xcf\xce\xce\ \x9e\x2e\xbd\x1d\xdf\x08\x02\xe8\xee\xea\x29\x00\x8c\x04\x84\x06\ \x85\xaf\x08\x30\x35\x35\x55\xd0\x2f\x22\xa9\x53\xa7\x4e\x25\xc7\ \xc7\xc7\x2f\x03\x67\x81\x7e\x1d\xec\xae\xb8\x09\x4b\xdf\x76\xda\ \x4f\x26\x85\x01\x40\x08\x40\x61\x5a\xfc\xde\xe0\x60\xba\xbb\xbb\ \x3b\xa5\xdf\x8a\xcc\x24\xd0\x5e\xed\x73\xcd\x61\xed\x9a\x77\x33\ \x6e\x11\x60\x70\xf0\xfd\x74\x5f\x5f\x5f\xfa\xcc\x99\x33\xa6\xc5\ \xa5\xd0\x8f\x78\x02\x89\xb5\x9e\x63\x21\x44\x18\x78\x13\xd8\x4f\ \x69\x73\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa\x2a\x5f\xf2\xd8\x15\x9d\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xa3\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x35\x49\x44\x41\x54\x58\xc3\xe5\ \x97\xcd\x8f\x54\x45\x14\xc5\x7f\xb7\xea\xd6\x7b\xaf\xdb\x6e\xc7\ \xf9\x40\x9d\x89\x46\x4d\x34\x99\x44\x8d\x1a\x48\x98\xc4\x8c\x1f\ \x1b\xfe\x02\x4c\x5c\xf1\x07\x18\x16\x2e\x4d\x5c\x6b\x58\xc3\x8e\ \xc4\x8d\x1b\x17\xce\x82\x68\x74\x41\x5c\x18\x0d\xe2\xc4\xc6\x00\ \x3d\x60\x50\x51\x19\x60\x02\xa2\x0e\x0c\x83\xd3\xfd\x5e\xf7\x94\ \x8b\xaa\xee\xf9\x60\xe6\x0d\x84\x51\x16\x56\x52\xa9\xce\x7b\xb7\ \xeb\x9e\x3a\xf7\xd4\xa9\x7a\xea\xbd\xe7\x7e\x36\xe5\x3e\xb7\x3e\ \x80\x5d\xbb\x76\xbd\x03\xec\xfd\x8f\xf2\x4e\x35\x1a\x8d\x03\xeb\ \x19\xd8\xbb\xef\xbd\xa3\x3b\x1f\x1f\x76\x00\x9c\x3c\x3a\xcf\xcc\ \x97\x37\x58\x9c\xef\xdc\x53\xa6\xda\xa0\xf2\xdc\x6b\x03\xbc\xb8\ \x67\x10\x80\x8b\x7f\x16\x7c\xf8\xee\x1e\x80\xdb\x00\x70\xfc\xec\ \x1c\xdf\x3f\x30\x04\x78\x2e\xfd\xb8\xc0\xfe\xb7\xce\x6f\xcb\x72\ \x0f\x1d\x79\x9a\x0b\x23\x96\xd3\x9f\x1f\x64\xfc\xd5\x7d\x9b\x6b\ \x40\x45\xb0\x16\x40\x78\x70\x2c\x23\xcb\xb2\x6d\x01\x30\x30\x96\ \x61\x8d\x50\x1b\x7c\x14\x23\x25\x22\x14\x2b\xd8\x18\x91\xd5\x95\ \x73\xe7\xce\x83\x2a\xb8\x04\xd2\x14\xb2\x0c\xd2\x2c\x8c\x49\x0a\ \x49\x12\xde\x77\x3a\x90\xe7\x90\xb7\xa1\xd5\x82\x76\x2b\x8e\x6d\ \x28\x72\xb2\xfa\x38\xd6\x0a\xe3\xaf\xbc\x49\x6b\xf1\xfa\xe6\x00\ \xac\x15\xac\x15\x04\xb0\x46\xd8\xbd\x7b\xe7\x16\x6b\xeb\x86\xae\ \x80\x5a\xa8\x56\x81\xea\x6d\x51\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ \x84\x01\x67\x05\x35\x82\x08\xa8\x0a\x95\x2c\xc3\x23\x20\x1e\x08\ \xc0\xf0\x1e\x2f\x02\xde\x23\x12\x26\x15\x7c\x88\x23\xc4\x21\x1e\ \x3c\x21\x5e\x40\x4d\x58\x18\x40\xd7\x4a\x89\x06\xac\xa0\xda\x63\ \x00\x9a\x33\xbf\x05\x8a\x53\x07\x69\x02\x95\x04\xb2\x34\xf6\x04\ \x12\x07\x4e\xa1\xe8\x40\x5e\x40\x2b\x8f\xbd\x05\x4b\x39\xb4\x73\ \xc8\x0b\x54\x87\x71\x3d\x00\x2a\xe5\x25\x70\x31\x40\xd5\x30\x39\ \xf9\xd2\xd6\x0a\xf3\x3e\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8\x27\x61\ \x61\xbd\x1c\x25\x25\x20\x00\xf0\x81\x8d\x34\x4d\xa3\x3a\xc3\xb3\ \x98\x11\x89\x6c\x07\xda\x63\x09\x56\x98\x5f\x29\x46\xfc\x61\xcd\ \x72\x7f\x61\x1d\x2d\xd1\x80\x3a\x09\x54\x49\x18\x4f\x34\x2f\xe0\ \x9d\x85\xc4\x21\x89\xc3\x67\x09\x92\x69\xd8\x11\x89\xe2\x13\x87\ \x58\x8b\xef\x76\x91\xbc\x80\xbc\x03\xed\x02\xdf\x6a\x23\xed\x02\ \xf2\x02\x9f\x77\x50\x1d\x45\xd5\x20\x78\x3a\xeb\x54\x78\x9b\x06\ \x9c\x33\x78\x0f\x03\x8f\x24\xbc\xfe\xf2\xf3\x77\x68\xe8\x36\x68\ \xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04\x52\x5e\x82\x44\x4d\x5f\x84\ \x8f\x0d\xa5\x38\xe7\xb6\xc5\x88\x9e\x18\x4b\xb9\x76\xb3\x03\x08\ \x9d\x52\x11\xaa\x90\xb8\x50\xef\x5a\xc5\x30\x7d\xb1\xcb\x40\xc5\ \xb0\x0e\xf4\x26\xad\x57\xf9\x55\x2e\xe1\xe1\xc6\xd2\x32\xf5\xcc\ \x70\x7d\xc9\x84\x2d\xe9\x4a\x19\x10\x9c\x1a\xc0\x73\xe5\x66\x97\ \x2b\x37\xbb\xac\x51\x57\x3f\xd7\xaa\x64\x7e\xc5\x27\xa2\x29\xac\ \x05\x15\xc3\x9c\x0b\xb5\x77\xa6\x6c\x17\xa8\xc1\xa9\x20\xc8\x1a\ \x35\xaf\x9b\x35\x1a\x8f\x59\x31\x9e\xfe\x7b\xe9\xef\x14\x00\xf1\ \x82\xef\x9b\x58\x30\x2b\x57\x56\x02\x55\x21\xd1\x90\xfc\xe7\x53\ \xdf\xf2\xeb\x99\x13\x2c\x2d\xde\xb8\xa7\xfa\x57\x6a\x03\x3c\xf5\ \xec\x4e\x9e\x79\x61\x02\x0f\xa8\x33\x5b\x31\x10\x03\x7c\x87\xf7\ \xf7\xbf\xc1\xc2\xc2\x02\xb7\x6e\xdd\xa2\x28\x0a\x44\x04\x6b\x2d\ \xd6\x5a\x54\x15\x55\xc5\x39\x87\xaa\x62\xad\xc5\x98\xf0\xdf\xe5\ \xe5\x65\xf2\x3c\xef\xf7\x23\xcd\xf9\xb8\xf2\x2d\x18\x70\x56\x50\ \x17\x18\xdc\x31\x3a\xb6\x72\x4f\x38\x7e\x9c\xe9\xe9\x69\x8c\x31\ \x78\xef\x99\x98\x98\x60\x72\x72\xf2\x8e\x59\xd8\x31\x3a\xd6\xdf\ \x86\xae\xd4\x09\x55\x70\x36\xac\xa2\x56\xaf\xf7\x6b\x39\x33\x33\ \xc3\xd0\xd0\x10\xd6\x5a\xbc\xf7\x34\x9b\xcd\xbb\x02\x50\xab\xd7\ \x70\xd1\x88\xb4\xd4\x88\x14\x9c\x0b\x27\x5c\xa0\x2a\x00\xa8\x56\ \xab\x64\x59\xd6\xa7\xb8\x37\xde\x69\x73\x1a\xa9\x17\x41\x4b\xad\ \x38\x1e\xc7\xbd\x23\xb4\xd7\x8c\x31\x88\x44\xdf\x8f\x3a\xb8\xab\ \x9b\xaf\x35\xa8\x0d\xf3\xf6\x18\x2e\x3d\x8e\x83\x29\x6d\xe3\xd5\ \xdb\x12\xa9\xf7\xe5\x56\x6c\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ \xdb\x02\xe0\xa1\x91\x61\xd4\xc2\xb5\x2b\x97\x59\x9c\xbf\xbe\x05\ \x03\x36\xf8\xc0\x60\xad\x02\x0b\xdb\xc3\xc0\x50\xad\xc2\xec\xc5\ \x4b\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa6\x36\x04\x60\x24\x5e\ \x4a\x05\x12\x0b\xed\x91\x27\xa9\x3d\x0c\x6f\x1f\x38\xc8\x66\xc7\ \x81\x27\x3a\xf1\x2a\xe7\x35\x1e\x32\x81\x14\x28\xba\x70\xf9\xea\ \x55\xce\x34\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1f\x4e\x1d\x02\x0e\x6f\ \x08\xe0\xb3\x8f\x3e\xe0\xa7\xd3\x27\x57\x99\xe9\xda\xa3\x86\x55\ \xe6\xbb\x1e\x04\x1b\x3c\x5f\x1d\x6f\x7c\x77\xee\x8f\xd9\x5f\x0e\ \x01\x87\x1b\x8d\xc6\x5f\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5\x73\ \x6c\x7d\xf2\x35\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1\x3f\x4d\xf0\ \x4b\xb9\xe8\x46\x89\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x08\x19\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x07\xab\x49\x44\x41\x54\x58\xc3\xad\ \x57\x5b\x50\x93\x67\x1a\xf6\xca\xce\xec\xcc\xf6\x62\x2f\xbc\xd9\ \xe9\xce\xec\x6e\xbd\xda\xd9\x9b\xb5\xce\xba\x3b\x7b\xb0\xad\xcc\ \x7a\xb1\xce\xce\x3a\xb3\x76\x54\x70\x75\xdb\xe2\x81\xd6\xb6\x54\ \x04\xbb\xa5\x20\x6d\xc1\x82\x06\x08\x07\x51\x42\x80\x80\x80\x02\ \x21\x81\x10\x92\x40\x48\x10\x73\x24\x21\x67\x72\x80\x04\x42\x20\ \x9c\x09\x47\xb5\x54\x78\xf6\xfb\x7e\x13\x16\x30\x58\x8b\x7d\x67\ \x9e\xf9\x2f\x92\xfc\xcf\xfb\x3e\xcf\xfb\xbe\xdf\x97\x5d\x00\x76\ \xfd\x98\x20\xf1\x0b\x82\x14\x02\x03\xc1\x75\x82\x03\xcf\xfd\xfe\ \x8f\x48\xbc\x9b\x20\xe1\x57\xaf\xef\xb5\x2a\x8c\xd6\x65\xdb\x02\ \x60\x19\x1e\x5b\x09\x27\xf1\x33\xfa\x19\x81\x22\xfc\xdc\x3e\x76\ \x48\x7e\x8a\xa0\xb9\xb6\x59\x1c\x32\xcf\xad\x42\x39\xfe\x1d\x44\ \xf6\x51\xd8\xc7\xe6\xe8\x87\x86\x3d\x7b\xf6\x58\x53\x52\xae\x2c\ \xca\x3a\x3a\x10\x4e\xe2\xe5\x49\xc3\xc4\x31\x04\xb7\x3e\x49\xf9\ \x2c\x60\x9b\x5d\x59\x53\x4d\x03\x4d\xb6\x11\x34\xeb\xfb\x20\x31\ \x79\x60\x19\x9d\xc5\xbb\xef\xbe\x3f\xc5\xab\xbe\x83\xf1\x89\x29\ \x4c\x4f\xcf\xae\x92\xef\xd7\xbc\x74\x02\x11\x9f\x0f\xbe\x1d\xe3\ \xb2\x04\x43\x4f\xb4\x33\x40\x8b\x7b\x06\xcd\x3d\x2e\x34\xeb\xec\ \xa8\x57\xf6\x20\x87\x53\x85\x32\x5e\x35\x43\xbc\xb0\xf4\x90\x81\ \xc1\x60\x5c\x26\xbf\x4b\x7c\xe1\x04\x48\x1c\x24\x38\x41\xfd\xdd\ \xea\x73\x27\xf1\xb9\x27\x04\x48\x87\x97\xc1\xd7\xbb\x20\x22\x55\ \x37\xdc\x37\xa2\xb8\x4e\x88\x2c\x56\x3e\xcc\x56\xdb\x3a\x71\x04\ \x2c\x16\x6b\x2c\xfc\xce\xe7\x27\x10\x91\x36\x93\x95\x3f\x46\x7d\ \xa5\xfe\x12\xc4\x6f\xf4\x59\x31\xb6\x02\x7e\xef\x20\x5a\x7b\x9c\ \xe0\x3f\x30\xa1\x4c\x28\x43\x46\x0e\x1b\xb2\x0e\xf9\x26\xd2\xf9\ \xc5\x65\xcc\x2d\x2c\x21\x34\xbf\x88\xbd\x7b\xf7\x5a\xc9\x3b\x7e\ \xba\x6d\x02\x24\x7e\x43\x90\x46\x3d\x35\x13\x69\x75\xb3\x80\xd2\ \x3f\x0f\xcb\xc4\xe2\x9a\x50\xa1\x5a\xb4\x6c\xf1\x59\xa0\xb6\xa0\ \xa6\x5d\x8d\x2f\xb2\x73\x71\xb7\x9e\xff\x0c\x31\x25\x9d\x09\xcd\ \x63\x62\x6a\x06\x83\x43\x81\x27\xe4\xdd\xbc\x2d\xd3\xb0\x3b\x92\ \x03\x33\x26\xd4\x53\xb5\xd3\xfb\x58\x4f\x88\xc5\x03\x21\x88\x2c\ \x43\x50\xba\x46\xd0\xed\x09\x42\xe5\x9b\x42\x9b\x73\xfc\xa9\xcf\ \x5a\x1b\xee\x2a\x74\xc8\xbc\xc9\x45\x09\xa7\x6c\x93\xcf\x9b\x88\ \x27\xa7\x11\x18\x1d\xc3\x80\x6f\x08\xa2\xd6\xd6\x25\xc2\x51\xdb\ \x28\x12\x87\xc6\x1f\xaf\x82\x2f\x62\x94\x4d\x89\x24\x90\x22\xea\ \x52\x2d\x9a\x42\xab\xe8\x18\x79\x04\xa1\xc5\xcf\x10\x53\x74\xf6\ \x0d\xa3\xd3\xe1\x87\xd4\x3c\x80\x16\xbd\x03\x0d\x5d\x06\x14\xd5\ \x0a\x90\x91\x95\x0d\x2f\x79\xf1\xc6\xaa\xa9\xd4\xb3\x73\x0b\x4c\ \xc5\x94\xd8\xdd\xef\x85\xc9\x62\x05\xb7\xbc\x12\xa5\xe5\x95\x4b\ \x13\xf3\xcb\xab\x23\x0f\x01\x37\xd9\x11\xe6\xd9\x15\x84\x97\x15\ \x13\x06\xcb\x3c\xd0\x68\xf2\xa3\xdd\xee\x5f\x27\x96\x3b\x86\x20\ \xb3\x78\xd7\x7d\xe6\x08\xa4\xf8\x3c\x33\x1b\x2a\x8d\x36\xaa\xdc\ \x53\x33\x21\x8c\x8e\x8d\x33\x15\xd3\x26\xe4\x37\x09\xf1\xc1\xc5\ \x8f\x51\x73\xaf\x01\xbe\x65\x60\xfc\x11\xa0\x23\x13\x23\xf2\xce\ \xa1\xbe\x5d\xb9\xb8\x51\x01\x83\x81\x74\x74\x4d\xa7\x1e\x0a\x67\ \x80\xa9\xb8\xdd\xea\x83\xd8\xe8\x42\x93\xca\xcc\xf8\x7c\xe5\xcb\ \x2c\x88\xda\x24\x51\x89\xa7\x67\xe7\x18\x1b\x86\x86\x47\x60\x77\ \x38\x49\x82\x3a\x24\x7c\xf8\x21\xae\xb3\x0b\xe1\x99\x5c\x80\x6f\ \x09\xd0\x90\xde\xe1\x0f\x2c\x81\xab\x1f\xc4\x7d\xef\x04\xdd\x07\ \x1d\x61\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6\x21\x48\xcc\xfd\x4f\ \x7d\xee\xd4\x22\x9d\x55\x84\xaa\x9a\xba\x4d\x3e\x47\xe4\x8e\xf8\ \x3c\x3c\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2\x62\x9c\x7e\x2f\ \x1e\x3d\x03\x01\xf4\x2f\x02\x83\x84\xbc\xc5\xff\x2d\xee\x3a\x43\ \x28\x51\x91\xf7\xf6\x05\xf1\x4e\xdc\xbf\x7d\x84\x33\x69\xe3\x20\ \x18\xf4\x33\xab\xe0\xc9\x54\x68\x35\x38\xd1\xd8\xdd\x0b\x9e\x58\ \x89\xac\x5c\xf6\x33\x3e\x47\xaa\x9e\x9c\x9e\x65\xe4\xee\xf7\x0e\ \xa2\xd7\x6c\x41\x43\x03\x1f\x27\x62\xe3\x20\xe9\xd6\xc0\x45\xcf\ \x01\x52\x90\x24\xb8\x86\xb2\x9e\x00\x6e\xb4\xdb\x50\xd1\x1b\x44\ \x85\xce\x8b\x4a\x7e\x0b\x6d\xbe\x9b\x5b\x27\xd1\xa0\x99\xf8\x16\ \x65\x22\x05\xee\x29\xf4\x28\x13\xc8\x90\x78\x35\x0b\x1a\xad\x3e\ \xaa\xdc\x63\x13\x93\xf0\x0d\x0d\xc3\x66\xef\x83\xb4\x5d\x8e\xc4\ \x4b\x97\x90\xc3\xca\xc3\xd4\x63\xc0\x4e\x7a\x49\x31\x4e\xfa\x89\ \x94\x7f\x5b\x3b\x84\x7c\x85\x13\x25\x6a\x1f\x4a\xd5\x03\xe8\xf2\ \x30\xa3\x28\x22\xf8\xf9\x33\x09\x74\x8f\x2e\xa1\xa8\xbe\x15\xa5\ \x7c\x09\xb2\x4a\x2a\xf0\xcf\xe3\x71\x51\xe5\xf6\x07\x46\xd1\xe7\ \xf2\x40\xab\x37\x20\xfd\x6a\x06\x92\xbf\x48\x83\xcd\x37\x02\x27\ \xa9\xda\x40\x1a\x4c\xe0\x7b\x88\x52\x9d\x1f\x45\xdd\xfd\x0c\x71\ \x41\x97\x1b\xc5\xdd\x1e\x88\x9c\x41\xfc\xf9\xcd\xb7\x5d\x84\xeb\ \x6c\xb4\x43\xd0\x28\xf7\x4e\x23\xa7\xfc\x1e\xb2\x4b\xab\xf1\x51\ \xea\x57\x48\xfe\x6f\xea\xfa\x58\x51\xb9\x47\x82\xe3\xf0\x0c\xf8\ \x60\x34\x99\x51\xc9\xab\xc2\xfb\x67\xcf\x41\xfe\x40\x03\x3f\xe9\ \x6e\xb2\x8d\x19\xb9\x6f\x69\x06\x19\xd2\x9b\x2a\x2f\x72\xe5\x0e\ \xe4\x75\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca\x29\xc2\x53\ \xb8\xdd\x29\xdc\x2b\x76\x04\x90\x51\xc8\xc5\x95\x6b\x79\x38\x11\ \x9f\x80\x9b\xb7\x6e\x33\x63\x15\x91\xdb\x6a\x73\x40\x22\x6d\xc7\ \x85\x84\x0f\x50\x74\xbb\x0c\xf3\x2b\x80\x9f\x34\x58\xf7\x24\x20\ \x1c\x7c\x84\x4a\xd3\x18\x38\xfa\x61\x86\x9c\x56\xfd\x55\xb3\x1e\ \xac\x0e\x3b\xb8\x3a\x1f\xd9\x21\x1e\x7a\x2f\xe0\x13\xbc\xba\x5d\ \x02\x26\xbe\xc1\x83\x94\x6f\xd8\x38\x9f\x9c\x8a\x03\x7f\x3d\x04\ \x63\xaf\x99\xe9\x6e\x2a\xb7\x46\xd7\x83\xa4\xcb\xc9\x48\xff\x3a\ \x8b\x8c\xd5\x3c\x53\xb5\x71\xf6\xa9\xdc\x35\xf6\x69\x5c\x97\x59\ \x19\xd9\xbf\x6e\x21\xa7\xa0\xd4\x82\x74\xbe\x1a\x57\x9b\x34\x60\ \xc9\xcc\x10\xbb\x82\xf8\xe5\xaf\x5f\xa7\x67\xc0\x3b\xe1\x75\x1f\ \x35\xcc\x35\xdd\x66\x7c\x94\x96\x85\xb8\x73\x17\xf1\x97\x43\x31\ \x4c\xd5\x74\x99\xf0\xaa\xaa\x71\xfa\xf4\x19\x68\xcc\x0e\x8c\x92\ \x2d\x36\x14\x1e\xab\x5a\xc7\x0c\x78\xe6\x71\x70\x0d\x23\x4c\xa3\ \x65\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6\x5e\x94\x74\x39\xd0\x66\xf7\ \xaf\x1e\x3d\x11\x4b\x47\x2e\x6f\xc3\x79\x13\x35\x2c\x5c\x99\x1a\ \xf1\x97\x3e\xc7\xd1\xd8\x33\xf8\x38\x31\x09\x86\x5e\x13\x1a\x9b\ \x04\xf8\xdd\x1b\xfb\x51\x4f\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ \x93\x60\x2b\x5d\x0c\x39\xf5\xbc\xf0\xbe\x67\xbd\xea\xcc\x16\x3d\ \x4a\x55\x1e\x08\x6d\x01\x94\xd4\xf1\x43\xe1\x65\x53\x40\xf0\xca\ \xf7\x25\x60\x2b\x6e\x6a\xc7\xa9\x84\x44\xc4\x1c\x39\x8a\xdc\x7c\ \x36\x5a\x5a\xc5\x38\x14\x13\x83\x2f\x39\x35\xc8\x14\x6a\x98\xe6\ \xa2\xd5\xd2\x27\xf5\x9a\x7a\x4c\x13\xa1\x49\x64\xb7\x99\x90\xdb\ \x6e\x46\xb9\xda\x8d\x06\xa5\x76\x39\x2c\x39\x3d\xf9\x4e\x13\xec\ \xd9\x72\xd4\x47\x0d\x3b\xab\x46\x88\x63\xff\x39\x8f\xdf\xee\xfb\ \x3d\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17\x70\xa3\xad\x07\x19\ \xc4\x4f\x4a\x14\xe9\x6e\xba\x58\xa8\xef\x2c\xfa\x94\x98\x50\x28\ \xb7\x40\xe9\x0e\x3c\xf9\x57\xec\x29\x2a\x77\x2d\xc1\x67\x04\xfb\ \xb6\xb9\xe4\x44\x8d\xbe\xcc\xb2\x5a\xfc\xe3\xe4\x19\x1c\x3c\xf4\ \x37\xb0\x72\xf3\xb0\xef\xc0\x1f\x50\x20\xd1\x21\x89\x27\x65\x2a\ \xa6\x4b\x85\x3e\xbf\x21\xd5\x46\xe4\x2e\x90\x5b\x21\xb0\x0c\xae\ \xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87\x6f\x3c\xaf\x3c\xe7\x96\x15\ \x35\x9c\x69\x45\xe5\xf8\xfb\xb1\x58\x1c\x3f\x19\x87\x37\xf6\xef\ \xc7\x8d\x3a\x11\x92\xab\xa4\x0c\x21\xed\x70\xea\x35\x55\x21\x8b\ \x34\x5b\xc9\x03\x37\x2a\x34\x6e\xd4\x49\x3a\x17\xc3\x72\x73\x08\ \x8e\x6d\x95\xfb\x87\x24\xe0\x4a\x65\x73\x70\xe4\xf8\x29\x1c\x3e\ \x7c\x98\x8c\x63\x2e\x32\x05\x2a\x5c\x22\xd5\xd3\x5d\x7e\x4d\xdc\ \x0b\x36\xe9\x74\x76\xa7\x1d\x77\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ \x1a\x95\xfb\x22\xbd\x49\xfd\x80\x0b\x6d\xf4\x04\x32\x4a\x78\x4c\ \x0f\x9c\x4b\x49\xc3\xb5\xa6\x2e\x7c\xc2\x6d\x65\x36\x59\xf1\x83\ \x01\x5c\x97\x9a\xc1\x51\x7b\x20\xf3\x04\xd7\xce\x25\x26\x05\x36\ \xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce\x5e\x4e\x45\x81\ \x58\x85\x78\xf6\x5d\x5c\xa9\x55\x90\xaa\xfb\xc0\x96\xdb\x50\xad\ \x75\xe3\xae\x54\x41\x2f\x10\xca\x0d\x72\xbf\xba\xd3\x6a\xa3\x05\ \xb7\xa2\x51\xf8\x1d\xaf\x43\x8d\x4f\xb9\x2d\x88\xcb\xe6\xe1\x9a\ \x48\x8f\xaa\x1e\x2f\x9a\x35\xe6\xc7\x7f\x7a\xf3\x2d\x57\x78\xac\ \xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5c\x75\x1f\xde\xcb\ \xaf\x45\xb9\x76\x00\x32\x67\x60\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ \xd2\xa9\xdc\x3b\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9d\x50\ \x0b\x39\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3\x2f\x22\xf7\x0e\ \xff\xda\x6d\x8a\xdd\x61\x99\xd5\x1b\xb6\xd8\x6b\xbb\x5e\x32\xbe\ \x2f\x89\xff\x01\x66\xb9\x5f\xfc\x11\x80\x3d\xcf\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x2b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xbd\x49\x44\x41\x54\x58\xc3\xed\ \x57\x6b\x4c\x93\x57\x18\x3e\x23\x71\xc9\x32\xe9\x16\x97\xa8\x54\ \x65\x38\x9d\x02\x15\xf6\x03\x87\x32\x93\x01\x66\x2c\x5b\x70\xc4\ \x30\xff\x60\xa2\x2e\x1a\x3a\x1d\x4e\x03\xba\x31\x89\x5b\xb3\x80\ \xd9\x0c\x84\x02\x19\x58\x1c\x14\x8b\x85\xb2\x82\x95\x5e\xe4\x66\ \x0b\x8e\x31\xf8\xc3\x46\xcb\x2d\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\ \x6a\x69\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0d\x61\xd9\xb2\x93\ \x3c\xed\x97\xf3\x7d\xfd\xde\xe7\xbc\xef\xf3\x5e\x4a\x00\x80\xfc\ \x93\x20\xff\x0a\x02\x74\x09\x28\x44\x14\xd9\x14\x71\x14\x01\x2b\ \x46\x80\xae\xdd\x64\xdd\xc6\x66\x22\x4c\xf8\x95\xc4\x8b\x47\xc8\ \xa1\xd3\xf7\xc8\x8e\x97\x3b\x38\x32\x61\x2b\x41\x20\x85\x9c\xbe\ \x30\x48\x2e\xdd\x80\x19\x40\x32\xab\x79\x4d\xf4\xbe\xfb\x72\x13\ \x68\x64\x06\x91\x04\x5e\xa3\x51\xf4\x06\xee\x85\x47\xf5\xd0\xbd\ \x83\xcb\x4d\x20\x9b\x9d\xf6\x40\x74\x2f\xbd\x16\x32\x3d\x20\x89\ \x3f\x48\xa5\x2c\x1b\x01\x8c\x31\x79\xc1\xbb\x9d\x88\x4b\xc6\xd7\ \xc6\x26\x0e\xa0\x10\xb9\xfd\x42\xfe\xc5\x2b\x36\x46\x8c\x12\x5c\ \x4e\x02\x93\xa7\xa7\xa7\x0d\xcc\xd3\x39\xb9\x98\x63\x36\x14\x0a\ \xd2\xe4\xa3\x2b\x41\x20\x8c\x29\x9e\x2a\xdf\x37\x47\xeb\xdc\x7b\ \xb5\xcc\x89\x9e\x40\x44\x96\x54\x83\x2b\x2c\x0b\x36\x46\x48\x08\ \x13\xf5\x64\x2a\x7b\x2e\x54\x03\x01\xf8\x03\x37\xbf\xc0\x0e\x34\ \x2a\x54\xdf\x62\x88\x52\xd5\x2c\x58\x03\x74\x1d\x16\x08\x04\x7a\ \x45\x55\xf5\xc8\xa0\x6d\x74\xc2\xd4\x73\xf7\x21\xbe\x73\x51\x95\ \x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc\x2e\x03\ \xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf\x3e\xbf\xd2\x60\xb5\xdb\ \xed\x80\xf8\x79\xe4\x3e\xc4\x5e\xab\xb4\xb9\x88\x2f\x86\x80\x27\ \xd3\xc0\x67\xf9\x8e\x19\xf5\x60\xd7\x5e\x33\xba\x76\xda\x73\xee\ \x68\xd8\xc7\xc7\x47\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\ \xf6\x2e\xe7\x96\x37\xf7\x77\x73\x61\xd8\xbd\xe8\x5e\x80\x2f\x66\ \x9a\xa0\x86\xdf\xa9\x36\x42\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\ \xe7\x1a\x8a\x98\x2d\x7e\xfe\x6d\x97\x54\x1a\x6b\x5f\x5f\x1f\xb8\ \xd0\xd1\x73\x07\x62\x72\x15\x56\x4e\xc4\x87\x97\xd4\x8c\x30\x14\ \xe9\x15\xb7\x1e\x38\x1c\x0e\x40\xa4\xd6\x19\x31\x9e\x85\x9b\x05\ \x7e\x6d\xa9\x25\x1a\x5b\x97\xd9\x0c\xe6\x2e\x0a\xf3\x24\x14\xdf\ \x36\x8e\x7b\xbd\x1e\xd1\xcd\x42\xc8\x09\x6f\xa9\x04\x3c\xd1\xbd\ \x56\xab\x15\x10\x77\x7f\x1b\x84\xf3\x92\x5c\xbb\x52\xa9\x84\xfa\ \xfa\x7a\x30\x99\x4c\x0c\x75\xdf\x35\xc1\x51\xb1\x64\x18\xc9\x51\ \x44\x3e\xb6\x76\xcc\xb4\x40\x4f\x93\x5f\x7e\xd3\xd6\xdf\xdf\x0f\ \x32\x99\x0c\x44\x22\x11\xa8\x54\x2a\x90\x4a\xa5\xa0\xd1\x68\x20\ \x4b\x5b\x39\xbe\xe9\x95\xe0\x1f\xb8\x53\xaf\x79\x2c\xf3\x00\x97\ \x8e\x22\x9e\xc7\x86\xe6\x53\x29\x19\xf6\x82\x82\x02\xe6\xe2\xa0\ \xa0\x20\xe0\xf1\x78\x60\xb1\x58\x40\x5b\x5e\x01\xfb\xcf\x26\x0c\ \x2d\xa6\x53\xce\x67\x94\xcf\x09\x4c\x83\xe2\x5b\x7b\xe6\xc2\x60\ \x9a\xb2\x14\x14\x0a\x05\x88\xc5\x62\xc8\xcc\xcc\x84\xa2\xa2\x22\ \x50\xab\xd5\xd0\xd9\xd9\xc9\x60\xec\xfe\xc9\xb9\xc9\xdb\xa7\x75\ \x2e\xb7\xcf\x4b\x80\xae\xb7\xd8\x29\x70\x0e\xc0\x6a\x97\xac\x78\ \x88\xca\x7f\x82\xe2\x29\x89\x0e\x3e\x97\x2b\x21\x5b\x96\x0f\x07\ \x63\xe3\x47\x84\x1f\x26\xd8\x92\x72\x64\x8e\x6f\x1a\xbf\x07\xa3\ \xd1\x08\x2d\xad\x2d\xf0\xcb\xc0\x20\x1c\x38\xf1\xbe\x05\xb3\x62\ \xc1\x04\x5c\x69\x84\x85\x85\x84\x46\xdc\x26\xe7\x32\xac\x2c\xcf\ \x33\xb5\x13\xec\x3b\xe3\xba\xd3\x33\xaf\x82\xe5\xfe\x7a\x89\x06\ \x9e\xde\xfc\x62\x1b\xf7\x3c\x92\x8d\x7b\x66\xab\x4f\x5b\xca\x35\ \xed\x58\x43\x43\x3d\x34\x34\x34\x80\xa5\xb7\x17\x32\x14\xc5\xc3\ \xf3\xe9\xc0\x65\x3c\x92\xe5\x28\x9e\x36\x5d\xe5\x9c\x2a\x32\x78\ \x7d\xf4\x83\x2e\x5a\x6c\x12\x31\x0c\x1b\x25\xea\x71\xf7\x2f\xcb\ \x27\xef\x05\x87\x5f\xfe\xd3\xe4\x44\x0b\x4c\x68\xf4\xc9\x3e\x75\ \x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x96\x31\xae\x81\x09\ \x66\xf1\x36\x6d\x38\x68\x3c\x49\x3a\x3a\x65\xf8\x62\x81\x83\x44\ \xbd\x57\x43\xb6\x0a\x5e\x9b\x2a\xc3\x94\x5c\xb0\x42\x0f\xab\x24\ \xb4\x04\x9f\x4a\xaa\x9b\x43\x37\x31\x28\xd4\x4f\xf2\x0a\xc7\x74\ \x3a\x1d\xd4\xd6\xd6\x82\xc9\x7c\xdb\xb9\x61\x9b\xf7\x5f\xea\x62\ \xb2\xe5\x7e\x9c\x75\x1f\x0d\xf3\xb2\xd4\x4e\xf2\xf6\xb1\xeb\x2e\ \xb6\xae\x94\xc3\x90\x6c\x97\x55\xc1\x4b\x57\xab\x80\x9c\x4d\x6e\ \x5a\xd0\x1c\x49\xbd\xb1\xe7\x88\xb0\xef\xca\x57\xc5\x50\x5a\x5a\ \x0a\x1d\x3f\xf6\x4c\x04\x06\x87\x74\x3c\xaa\x0b\xc2\x84\x46\x8d\ \x07\xc8\x6f\x02\xd9\xf9\xaa\x7e\x9a\xf1\x30\x46\x8e\x36\x20\xaf\ \xbc\x4a\x78\x43\x69\x00\x92\x28\x1d\x98\xcd\x95\xb3\x79\xc3\x7d\ \x3d\xbf\xf9\x44\x6a\xa6\x5d\x2e\x97\x43\x53\x4b\x2b\x44\x1c\x7b\ \xf7\xce\xf4\x14\x25\xae\xf1\x8a\xf5\x77\x9c\xf5\x70\x02\xc2\xd9\ \x0f\x89\xd1\x81\x03\x4f\x8e\xf7\xdc\xd2\x69\xe7\xf3\xdf\x75\xfc\ \x6f\x14\x2e\x36\xd2\xef\xd8\x17\x69\x49\xbe\x2c\x9d\xc8\xd3\x96\ \x3b\xa7\x0f\x31\x8c\x25\xc6\xdf\x9f\xba\x77\x5f\x71\x35\xa0\x41\ \x6c\xb5\x08\x8c\xf9\x94\xf1\xe0\xf0\x33\x4b\x9a\x7c\x68\x13\x5a\ \xbd\xce\xa3\xd9\x6b\x4f\x48\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\ \xf9\x2f\xee\xb9\x49\x6e\x00\xf6\x7b\x3e\xed\xf7\x08\x1e\x2a\x3e\ \x5d\xe5\x58\xaa\xf1\x47\x5a\xf5\xb6\x59\x0b\x11\x1d\xb3\x43\xc9\ \x91\x38\x09\x39\xf9\xa9\x96\x21\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\ \x37\xfc\x4f\x13\xf8\x1d\xe7\x87\x19\xb9\x44\xc3\x01\xcf\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x3a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xcc\x49\x44\x41\x54\x58\xc3\xb5\ \x97\x5d\x4c\x5b\x65\x1c\xc6\x77\x6f\xbc\xd9\xe5\x12\x49\x20\x71\ \xd7\x26\xe3\x4e\x13\xb8\x70\xd1\x85\x44\xbd\x50\xe3\x10\x18\xe5\ \x2b\x2e\x26\x4a\x04\x27\x86\xaa\x8b\x99\xe0\xd0\xa2\x6c\x19\x86\ \x39\x17\xdc\x1a\x16\x98\x80\x40\x6c\xa6\x43\xca\x20\x2b\x83\x1e\ \x28\xcc\xda\xd1\x96\xd2\xd2\x4a\x7b\xfa\x01\xa5\xd0\xef\x16\x1e\ \xdf\xff\xdb\x1d\xc7\xcc\x04\x2a\x87\x93\x3c\x39\x6f\x21\x9c\xe7\ \xf7\x3c\xef\x47\x0f\x87\x00\x1c\xca\x46\xcf\xbd\xfa\xe9\xbb\x4c\ \x5a\x26\x61\x0f\x6a\x60\xca\xd9\xe9\x79\xd9\x9a\x3f\x5d\x50\xf2\ \xa5\xc1\xe9\x8f\xa7\x57\xc3\x40\x30\x02\x84\xa2\x19\xad\xc7\x32\ \x8a\x27\x81\x58\x22\x73\xbf\x79\x6b\xda\x4b\x10\x72\x02\x1c\x7b\ \xe7\xac\xda\x1c\xd8\xc8\x98\x12\x40\x84\x99\x85\xe3\x19\x91\x31\ \x29\x1a\x4b\x61\x25\x94\x44\x38\x9a\x42\x73\x87\xc6\xbe\x13\xc4\ \xff\x02\x90\x12\x93\x79\x24\xf1\xc8\x58\x92\xcf\x1f\x84\x5d\x8c\ \xc2\xe5\x09\x22\x12\x4b\xa3\xf4\xc3\xef\x4d\x34\x75\x59\x01\xb0\ \xeb\xd8\x36\xd5\x90\x9e\x3a\xfc\xcc\xb9\xe7\x5f\x2e\x11\x3f\x56\ \x9e\x45\x45\x55\x0d\x2a\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\ \xac\xb6\x25\xfc\xb9\xe8\x87\x6b\x15\x58\xf6\x04\x10\x08\xc6\xd2\ \xaf\x9c\xbe\x70\x9f\x41\x1c\xd9\x15\x80\x5d\x87\x99\x1a\x8a\x8a\ \x8a\xcc\x92\x5a\x5b\x5b\xdd\xa4\xaf\x55\xad\xfe\xaf\x54\xdf\xa6\ \x06\x06\x06\x31\x39\x35\x85\xd9\xb9\x39\xe8\x26\x26\x50\x50\x50\ \x80\x21\xcd\x6f\x7c\xde\x49\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\ \x4f\x41\xf4\x85\xf0\x43\xaf\xce\xcd\x00\x6a\xf6\x02\x50\x43\x66\ \xd8\xe5\x8a\xc7\xe3\xf0\x7a\xbd\x48\xa7\xd3\x98\x9c\x9c\x44\x65\ \x65\x35\x66\x67\x8d\xbc\x81\x07\x66\x1b\x74\xd3\x16\x0e\x40\x32\ \x2d\x78\xf0\xdd\x8d\x51\x8f\xac\x00\xe1\x70\x18\x46\xa3\x91\x8f\ \x53\xa9\x14\x7e\xea\xed\x45\xe3\x27\x9f\x61\x86\x41\x38\x96\xdc\ \x50\x77\x75\xe3\x4c\x43\x23\xce\x35\x9d\xc7\xed\x91\x71\x5c\xbc\ \x3e\x2c\x2f\xc0\xc6\xc6\x06\xf4\x7a\xfd\x63\x40\x7d\x7d\xfd\x50\ \x32\x88\xd0\x46\x1c\x66\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\ \x11\x97\xba\x64\x6e\x80\x00\xa6\xd8\x3a\xd8\x7e\x45\x22\x11\x94\ \x2b\x2a\x30\xae\x13\x40\xe7\x04\x6d\x57\xda\xaa\x34\xbe\x7c\x53\ \xe6\x35\x40\x66\x3a\x9d\x0e\xc3\xc3\xc3\xe8\x65\xf5\xf7\xf7\xf7\ \x43\xab\xd5\xa2\xaa\xba\x06\x63\x77\xf5\x90\x0e\x2a\x77\x90\xed\ \x04\xb6\x0e\xda\xbb\x65\x06\xa0\x79\xb7\xdb\xed\x18\x1a\x1a\x42\ \x67\x67\x27\x7a\x7a\x7a\x38\x50\x49\x69\x19\x6e\x69\xf5\x10\xd7\ \x00\x6f\x08\xb0\xf9\x00\x67\x00\xb8\xd0\x25\x33\xc0\xd6\xd6\x16\ \xdf\x09\x81\x40\x00\xa2\x28\xc2\xef\xf7\x63\x6d\x6d\x0d\xa7\x14\ \x95\xd0\xfc\xae\xe7\xa9\xc9\x7c\xc1\x0b\x98\x3d\x40\x9b\xdc\x00\ \xdb\x41\x36\x37\x37\xf9\x76\xa4\x56\x14\x15\xd5\xe8\xfb\x55\xe0\ \xa9\x1d\x81\x47\x00\xe7\x3b\x0f\x00\x80\xcc\x25\x80\x24\x33\x4f\ \x24\x12\x28\x2b\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa0\x36\x5a\ \xd5\x07\x30\x05\xff\x98\x27\x93\x3c\x3d\x4d\x49\xc9\xa9\x4a\x0e\ \xa0\xb7\xb3\x03\x89\x3d\xc5\xf8\x17\x30\xb1\x00\x7c\x71\xf5\x00\ \x00\xa4\xea\xc9\x98\x14\x8b\xc5\x50\xa6\xa8\x82\x7a\x48\xc0\x98\ \x19\xb8\x6b\x05\xe6\x9c\x99\xfb\xe7\x57\x64\x04\x90\xd2\x53\x6a\ \x02\x88\x46\xa3\xdc\x3c\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\ \x66\x87\xe4\xa0\x01\x1c\x64\xc4\x04\x28\x3b\x64\x06\x48\x3d\x9c\ \x73\x12\x99\xd3\xb9\x40\x20\xc5\x65\x55\xb8\xd8\x2d\xa0\x7f\x3a\ \x63\xae\x7d\x90\x69\xe0\xa3\x76\x99\x00\xfe\x5d\x3d\xa5\x26\xad\ \xae\xae\x72\x88\xb7\x4a\x2a\x70\xb9\x57\xc0\x3d\x1b\xb8\x7e\x9e\ \x01\xee\xcc\x03\x67\x2e\xed\x13\x40\xaa\x9d\x44\x8b\x8e\x92\xd3\ \x71\x4c\xdf\x01\x2b\x2b\x2b\x58\x5f\x5f\xe7\x10\x27\x59\x03\xdf\ \x74\x09\x50\x4f\x00\xbf\xcc\x65\x1a\xb8\x32\x06\x34\xec\xa7\x01\ \xc9\x58\xda\xeb\x64\x4e\x69\x29\x39\x1d\x44\x04\x40\xf5\xd3\xcf\ \xde\x7c\x5b\x81\x96\xeb\x02\x4f\x7e\x75\x1c\xb8\x71\x0f\xf8\x71\ \x2c\x9e\x7e\xbd\x4e\x6d\xa6\x37\xaa\xac\x00\x9e\x64\x2c\x6d\x37\ \x32\x25\x00\xd1\x23\xf2\xe4\x12\xcc\x1b\x27\x15\x68\xef\x11\xa0\ \xbc\x66\x5b\x7f\x4f\x35\xe2\x3c\x71\x9a\xbf\x8e\x69\xf7\xfc\x4a\ \x26\x01\x90\xa9\x24\x69\xb5\x53\x42\x32\x0f\x06\x83\x70\xb9\x5c\ \xdc\x90\x5e\x4a\xe8\xb3\xc7\xe3\x81\xdb\xed\xc6\xf1\x13\xaf\x25\ \x9f\x7d\xa1\x9c\x4c\x3b\x98\x8a\x99\x8e\x3e\xc9\x78\x47\x00\x95\ \x4a\xc5\x01\xa4\x15\x2e\xcd\x37\x19\x52\x52\x3a\xf7\x29\xb5\xc3\ \xe1\xe0\x22\xe3\xc5\xc5\x45\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\ \x93\xe9\xae\x00\x2d\x2d\x2d\x6e\xe9\x60\xa1\xd4\xd2\x97\x0d\x8d\ \x97\x97\x97\xe1\xf3\xf9\x60\xb3\xd9\xf8\x7d\x69\x69\x89\x43\x10\ \x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92\x52\x93\x11\x8d\xe9\ \x4e\xdf\x78\x54\x3b\x35\x60\xb5\x5a\x79\xf5\xd4\x0a\xfd\xce\x60\ \x30\x24\xf2\xf2\xf2\xee\xb3\x67\x1c\xd9\x17\x40\x53\x53\x93\x5b\ \x9a\x67\x4a\x4f\x22\x13\xaa\x9a\xc6\x16\x8b\x99\x37\x40\x9f\x47\ \x47\x47\x23\x6d\x6d\x6d\xde\xfc\xfc\x7c\x13\xfb\xdb\x41\xa6\xb2\ \xbd\x9a\xff\x27\x40\x73\x73\x33\x9f\x02\x4a\x47\x10\x54\x3f\x55\ \x3f\x3f\x3f\xcf\xeb\xd6\x68\x34\x91\xba\xba\x3a\xe7\xc3\xb4\x5d\ \x4c\x1f\x30\x1d\xcd\xc6\x78\x47\x00\xa5\x52\xe9\x76\x3a\x9d\xbc\ \x62\x4a\x4a\x6f\x3e\x94\xb4\xbe\xbe\xde\x99\x93\x93\x23\x99\x16\ \x67\x53\x75\x56\x00\x8d\x8d\x8d\x6e\x8b\xc5\x82\x81\x81\x81\x48\ \x6d\x6d\xad\x33\x37\x37\x57\x56\xd3\xdd\x00\xf8\x7f\x46\x4c\xc2\ \x41\x99\x6e\xd7\xdf\x43\x39\x56\x18\x85\x70\xc8\x04\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x07\ \x04\xca\x57\xa7\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0a\xa8\xba\x47\ \x00\x70\ \x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x08\xc8\x58\x67\ \x00\x73\ \x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\xc1\x59\x87\ \x00\x6f\ \x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0a\xc7\x57\x87\ \x00\x63\ \x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\x7c\x5a\x07\ \x00\x63\ \x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xbc\ \x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x70\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x09\xc9\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x03\x58\ \x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x16\x8d\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/mainwindows/separations.py0000755000076500000240000004503112613140041022333 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtSignal, QBuffer, QByteArray, QFileInfo, QIODevice, QMimeData, QPoint, QSize, Qt) from PyQt5.QtGui import (qBlue, QColor, QDrag, qGreen, QImage, QKeySequence, QPalette, QPixmap, qRed) from PyQt5.QtWidgets import (QApplication, QColorDialog, QFileDialog, QFrame, QGridLayout, QLabel, QLayout, QMainWindow, QMenu, QMessageBox, QPushButton, QVBoxLayout) class FinalWidget(QFrame): def __init__(self, parent, name, labelSize): super(FinalWidget, self).__init__(parent) self.dragStartPosition = QPoint() self.hasImage = False self.imageLabel = QLabel() self.imageLabel.setFrameShadow(QFrame.Sunken) self.imageLabel.setFrameShape(QFrame.StyledPanel) self.imageLabel.setMinimumSize(labelSize) self.nameLabel = QLabel(name) layout = QVBoxLayout() layout.addWidget(self.imageLabel, 1) layout.addWidget(self.nameLabel, 0) self.setLayout(layout) def mouseMoveEvent(self, event): """ If the mouse moves far enough when the left mouse button is held down, start a drag and drop operation. """ if not event.buttons() & Qt.LeftButton: return if (event.pos() - self.dragStartPosition).manhattanLength() \ < QApplication.startDragDistance(): return if not self.hasImage: return drag = QDrag(self) mimeData = QMimeData() output = QByteArray() outputBuffer = QBuffer(output) outputBuffer.open(QIODevice.WriteOnly) self.imageLabel.pixmap().toImage().save(outputBuffer, 'PNG') outputBuffer.close() mimeData.setData('image/png', output) drag.setMimeData(mimeData) drag.setPixmap(self.imageLabel.pixmap().scaled(64, 64, Qt.KeepAspectRatio)) drag.setHotSpot(QPoint(drag.pixmap().width() / 2, drag.pixmap().height())) drag.start() def mousePressEvent(self, event): """ Check for left mouse button presses in order to enable drag and drop. """ if event.button() == Qt.LeftButton: self.dragStartPosition = event.pos() def pixmap(self): return self.imageLabel.pixmap() def setPixmap(self, pixmap): self.imageLabel.setPixmap(pixmap) self.hasImage = True class ScreenWidget(QFrame): # Separation. Cyan, Magenta, Yellow = range(3) convertMap = { Cyan: qRed, Magenta: qGreen, Yellow: qBlue, } imageChanged = pyqtSignal() def __init__(self, parent, initialColor, name, mask, labelSize): """ Initializes the paint color, the mask color (cyan, magenta, or yellow), connects the color selector and invert checkbox to functions, and creates a two-by-two grid layout. """ super(ScreenWidget, self).__init__(parent) self.originalImage = QImage() self.newImage = QImage() self.paintColor = initialColor self.maskColor = mask self.inverted = False self.imageLabel = QLabel() self.imageLabel.setFrameShadow(QFrame.Sunken) self.imageLabel.setFrameShape(QFrame.StyledPanel) self.imageLabel.setMinimumSize(labelSize) self.nameLabel = QLabel(name) self.colorButton = QPushButton("Modify...") self.colorButton.setBackgroundRole(QPalette.Button) self.colorButton.setMinimumSize(32, 32) palette = QPalette(self.colorButton.palette()) palette.setColor(QPalette.Button, initialColor) self.colorButton.setPalette(palette) self.invertButton = QPushButton("Invert") self.invertButton.setEnabled(False) self.colorButton.clicked.connect(self.setColor) self.invertButton.clicked.connect(self.invertImage) gridLayout = QGridLayout() gridLayout.addWidget(self.imageLabel, 0, 0, 1, 2) gridLayout.addWidget(self.nameLabel, 1, 0) gridLayout.addWidget(self.colorButton, 1, 1) gridLayout.addWidget(self.invertButton, 2, 1, 1, 1) self.setLayout(gridLayout) def createImage(self): """ Creates a new image by separating out the cyan, magenta, or yellow component, depending on the mask color specified in the constructor. The amount of the component found in each pixel of the image is used to determine how much of a user-selected ink is used for each pixel in the new image for the label widget. """ self.newImage = newImage = self.originalImage.copy() # Create CMY components for the ink being used. cyanInk = float(255 - QColor(self.paintColor).red()) / 255.0 magentaInk = float(255 - QColor(self.paintColor).green()) / 255.0 yellowInk = float(255 - QColor(self.paintColor).blue()) / 255.0 convert = self.convertMap[self.maskColor] for y in range(newImage.height()): for x in range(newImage.width()): p = self.originalImage.pixel(x, y) # Separate the source pixel into its cyan component. if self.inverted: amount = convert(p) else: amount = 255 - convert(p) newColor = QColor( 255 - min(int(amount * cyanInk), 255), 255 - min(int(amount * magentaInk), 255), 255 - min(int(amount * yellowInk), 255)) newImage.setPixel(x, y, newColor.rgb()) self.imageLabel.setPixmap(QPixmap.fromImage(newImage)) def image(self): """ Returns a reference to the modified image. """ return self.newImage def invertImage(self): """ Sets whether the amount of ink applied to the canvas is to be inverted (subtracted from the maximum value) before the ink is applied. """ self.inverted = not self.inverted self.createImage() self.imageChanged.emit() def setColor(self): """ Separate the current image into cyan, magenta, and yellow components. Create a representation of how each component might appear when applied to a blank white piece of paper. """ newColor = QColorDialog.getColor(self.paintColor) if newColor.isValid(): self.paintColor = newColor palette = QPalette(self.colorButton.palette()) palette.setColor(QPalette.Button, self.paintColor) self.colorButton.setPalette(palette) self.createImage() self.imageChanged.emit() def setImage(self, image): """ Records the original image selected by the user, creates a color separation, and enables the invert image checkbox. """ self.originalImage = image self.createImage() self.invertButton.setEnabled(True) class Viewer(QMainWindow): # Brightness. Gloom, Quarter, Half, ThreeQuarters, Full = range(5) # Brightness value map. brightnessValueMap = { Gloom: 0, Quarter: 64, Half: 128, ThreeQuarters: 191, Full: 255, } def __init__(self): """ Constructor initializes a default value for the brightness, creates the main menu entries, and constructs a central widget that contains enough space for images to be displayed. """ super(Viewer, self).__init__() self.scaledImage = QImage() self.menuMap = {} self.path = '' self.brightness = 255 self.setWindowTitle("QImage Color Separations") self.createMenus() self.setCentralWidget(self.createCentralWidget()) def createMenus(self): """ Creates a main menu with two entries: a File menu, to allow the image to be selected, and a Brightness menu to allow the brightness of the separations to be changed. Initially, the Brightness menu items are disabled, but the first entry in the menu is checked to reflect the default brightness. """ self.fileMenu = QMenu("&File", self) self.brightnessMenu = QMenu("&Brightness", self) self.openAction = self.fileMenu.addAction("&Open...") self.openAction.setShortcut(QKeySequence('Ctrl+O')) self.saveAction = self.fileMenu.addAction("&Save...") self.saveAction.setShortcut(QKeySequence('Ctrl+S')) self.saveAction.setEnabled(False) self.quitAction = self.fileMenu.addAction("E&xit") self.quitAction.setShortcut(QKeySequence('Ctrl+Q')) self.noBrightness = self.brightnessMenu.addAction("&0%") self.noBrightness.setCheckable(True) self.quarterBrightness = self.brightnessMenu.addAction("&25%") self.quarterBrightness.setCheckable(True) self.halfBrightness = self.brightnessMenu.addAction("&50%") self.halfBrightness.setCheckable(True) self.threeQuartersBrightness = self.brightnessMenu.addAction("&75%") self.threeQuartersBrightness.setCheckable(True) self.fullBrightness = self.brightnessMenu.addAction("&100%") self.fullBrightness.setCheckable(True) self.menuMap[self.noBrightness] = self.Gloom self.menuMap[self.quarterBrightness] = self.Quarter self.menuMap[self.halfBrightness] = self.Half self.menuMap[self.threeQuartersBrightness] = self.ThreeQuarters self.menuMap[self.fullBrightness] = self.Full self.currentBrightness = self.fullBrightness self.currentBrightness.setChecked(True) self.brightnessMenu.setEnabled(False) self.menuBar().addMenu(self.fileMenu) self.menuBar().addMenu(self.brightnessMenu) self.openAction.triggered.connect(self.chooseFile) self.saveAction.triggered.connect(self.saveImage) self.quitAction.triggered.connect(QApplication.instance().quit) self.brightnessMenu.triggered.connect(self.setBrightness) def createCentralWidget(self): """ Constructs a central widget for the window consisting of a two-by-two grid of labels, each of which will contain an image. We restrict the size of the labels to 256 pixels, and ensure that the window cannot be resized. """ frame = QFrame(self) grid = QGridLayout(frame) grid.setSpacing(8) grid.setContentsMargins(4, 4, 4, 4) self.layout().setSizeConstraint(QLayout.SetFixedSize) labelSize = QSize(256, 256) self.finalWidget = FinalWidget(frame, "Final image", labelSize) self.cyanWidget = ScreenWidget(frame, Qt.cyan, "Cyan", ScreenWidget.Cyan, labelSize) self.magentaWidget = ScreenWidget(frame, Qt.magenta, "Magenta", ScreenWidget.Magenta, labelSize) self.yellowWidget = ScreenWidget(frame, Qt.yellow, "Yellow", ScreenWidget.Yellow, labelSize) self.cyanWidget.imageChanged.connect(self.createImage) self.magentaWidget.imageChanged.connect(self.createImage) self.yellowWidget.imageChanged.connect(self.createImage) grid.addWidget(self.finalWidget, 0, 0, Qt.AlignTop | Qt.AlignHCenter) grid.addWidget(self.cyanWidget, 0, 1, Qt.AlignTop | Qt.AlignHCenter) grid.addWidget(self.magentaWidget, 1, 0, Qt.AlignTop | Qt.AlignHCenter) grid.addWidget(self.yellowWidget, 1, 1, Qt.AlignTop | Qt.AlignHCenter) return frame def chooseFile(self): """ Provides a dialog window to allow the user to specify an image file. If a file is selected, the appropriate function is called to process and display it. """ imageFile, _ = QFileDialog.getOpenFileName(self, "Choose an image file to open", self.path, "Images (*.*)") if imageFile != '': self.openImageFile(imageFile) self.path = imageFile def setBrightness(self, action): """ Changes the value of the brightness according to the entry selected in the Brightness menu. The selected entry is checked, and the previously selected entry is unchecked. The color separations are updated to use the new value for the brightness. """ if action not in self.menuMap or self.scaledImage.isNull(): return self.brightness = self.brightnessValueMap.get(self.menuMap[action]) if self.brightness is None: return self.currentBrightness.setChecked(False) self.currentBrightness = action self.currentBrightness.setChecked(True) self.createImage() def openImageFile(self, imageFile): """ Load the image from the file given, and create four pixmaps based on the original image. The window caption is set, and the Brightness menu enabled if the image file can be loaded. """ originalImage = QImage() if originalImage.load(imageFile): self.setWindowTitle(imageFile) self.saveAction.setEnabled(True) self.brightnessMenu.setEnabled(True) self.scaledImage = originalImage.scaled(256, 256, Qt.KeepAspectRatio) self.cyanWidget.setImage(self.scaledImage) self.magentaWidget.setImage(self.scaledImage) self.yellowWidget.setImage(self.scaledImage) self.createImage() else: QMessageBox.warning(self, "Cannot open file", "The selected file could not be opened.", QMessageBox.Cancel, QMessageBox.NoButton, QMessageBox.NoButton) def createImage(self): """ Creates an image by combining the contents of the three screens to present a page preview. The image associated with each screen is separated into cyan, magenta, and yellow components. We add up the values for each component from the three screen images, and subtract the totals from the maximum value for each corresponding primary color. """ newImage = self.scaledImage.copy() image1 = self.cyanWidget.image() image2 = self.magentaWidget.image() image3 = self.yellowWidget.image() darkness = 255 - self.brightness for y in range(newImage.height()): for x in range(newImage.width()): # Create three screens, using the quantities of the source CMY # components to determine how much of each of the inks are to # be put on each screen. p1 = image1.pixel(x, y) cyan1 = float(255 - qRed(p1)) magenta1 = float(255 - qGreen(p1)) yellow1 = float(255 - qBlue(p1)) p2 = image2.pixel(x, y) cyan2 = float(255 - qRed(p2)) magenta2 = float(255 - qGreen(p2)) yellow2 = float(255 - qBlue(p2)) p3 = image3.pixel(x, y) cyan3 = float(255 - qRed(p3)) magenta3 = float(255 - qGreen(p3)) yellow3 = float(255 - qBlue(p3)) newColor = QColor( max(255 - int(cyan1 + cyan2 + cyan3) - darkness, 0), max(255 - int(magenta1 + magenta2 + magenta3) - darkness, 0), max(255 - int(yellow1 + yellow2 + yellow3) - darkness, 0)) newImage.setPixel(x, y, newColor.rgb()) self.finalWidget.setPixmap(QPixmap.fromImage(newImage)) def saveImage(self): """ Provides a dialog window to allow the user to save the image file. """ imageFile, _ = QFileDialog.getSaveFileName(self, "Choose a filename to save the image", "", "Images (*.png)") info = QFileInfo(imageFile) if info.baseName() != '': newImageFile = QFileInfo(info.absoluteDir(), info.baseName() + '.png').absoluteFilePath() if not self.finalWidget.pixmap().save(newImageFile, 'PNG'): QMessageBox.warning(self, "Cannot save file", "The file could not be saved.", QMessageBox.Cancel, QMessageBox.NoButton, QMessageBox.NoButton) else: QMessageBox.warning(self, "Cannot save file", "Please enter a valid filename.", QMessageBox.Cancel, QMessageBox.NoButton, QMessageBox.NoButton) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Viewer() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/multimedia/0000755000076500000240000000000012613140041017216 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/multimedia/audiodevices/0000755000076500000240000000000012613140041021662 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/multimedia/audiodevices/audiodevices.py0000755000076500000240000002515012613140041024706 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtMultimedia import QAudio, QAudioDeviceInfo, QAudioFormat from PyQt5.QtWidgets import QApplication, QTableWidgetItem, QMainWindow from ui_audiodevicesbase import Ui_AudioDevicesBase class AudioDevicesBase(QMainWindow, Ui_AudioDevicesBase): def __init__(self, parent=None): super(AudioDevicesBase, self).__init__(parent) self.setupUi(self) class AudioTest(AudioDevicesBase): def __init__(self, parent=None): super(AudioTest, self).__init__(parent) self.deviceInfo = QAudioDeviceInfo() self.settings = QAudioFormat() self.mode = QAudio.AudioOutput self.testButton.clicked.connect(self.test) self.modeBox.activated.connect(self.modeChanged) self.deviceBox.activated.connect(self.deviceChanged) self.sampleRateBox.activated.connect(self.sampleRateChanged) self.channelsBox.activated.connect(self.channelChanged) self.codecsBox.activated.connect(self.codecChanged) self.sampleSizesBox.activated.connect(self.sampleSizeChanged) self.sampleTypesBox.activated.connect(self.sampleTypeChanged) self.endianBox.activated.connect(self.endianChanged) self.populateTableButton.clicked.connect(self.populateTable) self.modeBox.setCurrentIndex(0) self.modeChanged(0) self.deviceBox.setCurrentIndex(0) self.deviceChanged(0) def test(self): self.testResult.clear() if not self.deviceInfo.isNull(): if self.deviceInfo.isFormatSupported(self.settings): self.testResult.setText("Success") self.nearestSampleRate.setText("") self.nearestChannel.setText("") self.nearestCodec.setText("") self.nearestSampleSize.setText("") self.nearestSampleType.setText("") self.nearestEndian.setText("") else: nearest = self.deviceInfo.nearestFormat(self.settings) self.testResult.setText("Failed") self.nearestSampleRate.setText(str(nearest.sampleRate())) self.nearestChannel.setText(str(nearest.channelCount())) self.nearestCodec.setText(nearest.codec()) self.nearestSampleSize.setText(str(nearest.sampleSize())) self.nearestSampleType.setText( self.sampleTypeToString(nearest.sampleType())) self.nearestEndian.setText( self.endianToString(nearest.byteOrder())) else: self.testResult.setText("No Device") sampleTypeMap = { QAudioFormat.SignedInt: "SignedInt", QAudioFormat.UnSignedInt: "UnSignedInt", QAudioFormat.Float: "Float" } @classmethod def sampleTypeToString(cls, sampleType): return cls.sampleTypeMap.get(sampleType, "Unknown") endianMap = { QAudioFormat.LittleEndian: "LittleEndian", QAudioFormat.BigEndian: "BigEndian" } @classmethod def endianToString(cls, endian): return cls.endianMap.get(endian, "Unknown") def modeChanged(self, idx): self.testResult.clear() if idx == 0: self.mode = QAudio.AudioInput else: self.mode = QAudio.AudioOutput self.deviceBox.clear() for deviceInfo in QAudioDeviceInfo.availableDevices(self.mode): self.deviceBox.addItem(deviceInfo.deviceName(), deviceInfo) self.deviceBox.setCurrentIndex(0) self.deviceChanged(0) def deviceChanged(self, idx): self.testResult.clear() if self.deviceBox.count() == 0: return self.deviceInfo = self.deviceBox.itemData(idx) self.sampleRateBox.clear() sampleRatez = self.deviceInfo.supportedSampleRates() self.sampleRateBox.addItems([str(sr) for sr in sampleRatez]) if len(sampleRatez) != 0: self.settings.setSampleRate(sampleRatez[0]) self.channelsBox.clear() chz = self.deviceInfo.supportedChannelCounts() self.channelsBox.addItems([str(ch) for ch in chz]) if len(chz) != 0: self.settings.setChannelCount(chz[0]) self.codecsBox.clear() codecs = self.deviceInfo.supportedCodecs() self.codecsBox.addItems([str(c) for c in codecs]) if len(codecs) != 0: self.settings.setCodec(codecs[0]) # Create a failed condition. self.codecsBox.addItem("audio/test") self.sampleSizesBox.clear() sampleSizez = self.deviceInfo.supportedSampleSizes() self.sampleSizesBox.addItems([str(ss) for ss in sampleSizez]) if len(sampleSizez) != 0: self.settings.setSampleSize(sampleSizez[0]) self.sampleTypesBox.clear() sampleTypez = self.deviceInfo.supportedSampleTypes() self.sampleTypesBox.addItems( [self.sampleTypeToString(st) for st in sampleTypez]) if len(sampleTypez) != 0: self.settings.setSampleType(sampleTypez[0]) self.endianBox.clear() endianz = self.deviceInfo.supportedByteOrders() self.endianBox.addItems([self.endianToString(e) for e in endianz]) if len(endianz) != 0: self.settings.setByteOrder(endianz[0]) self.allFormatsTable.clearContents() def populateTable(self): row = 0 format = QAudioFormat() for codec in self.deviceInfo.supportedCodecs(): format.setCodec(codec) for sampleRate in self.deviceInfo.supportedSampleRates(): format.setSampleRate(sampleRate) for channels in self.deviceInfo.supportedChannelCounts(): format.setChannelCount(channels) for sampleType in self.deviceInfo.supportedSampleTypes(): format.setSampleType(sampleType) for sampleSize in self.deviceInfo.supportedSampleSizes(): format.setSampleSize(sampleSize) for endian in self.deviceInfo.supportedByteOrders(): format.setByteOrder(endian) if self.deviceInfo.isFormatSupported(format): self.allFormatsTable.setRowCount(row + 1) self.setFormatValue(row, 0, format.codec()) self.setFormatValue(row, 1, str(format.sampleRate())) self.setFormatValue(row, 2, str(format.channelCount())) self.setFormatValue(row, 3, self.sampleTypeToString( format.sampleType())) self.setFormatValue(row, 4, str(format.sampleSize())) self.setFormatValue(row, 5, self.endianToString( format.byteOrder())) row += 1 def setFormatValue(self, row, column, value): self.allFormatsTable.setItem(row, column, QTableWidgetItem(value)) def sampleRateChanged(self, idx): self.settings.setSampleRate(int(self.sampleRateBox.itemText(idx))) def channelChanged(self, idx): self.settings.setChannelCount(int(self.channelsBox.itemText(idx))) def codecChanged(self, idx): self.settings.setCodec(self.codecsBox.itemText(idx)) def sampleSizeChanged(self, idx): self.settings.setSampleSize(int(self.sampleSizesBox.itemText(idx))) def sampleTypeChanged(self, idx): sampleType = int(self.sampleTypesBox.itemText(idx)) if sampleType == QAudioFormat.SignedInt: self.settings.setSampleType(QAudioFormat.SignedInt) elif sampleType == QAudioFormat.UnSignedInt: self.settings.setSampleType(QAudioFormat.UnSignedInt) elif sampleType == QAudioFormat.Float: self.settings.setSampleType(QAudioFormat.Float) def endianChanged(self, idx): endian = int(self.endianBox.itemText(idx)) if endian == QAudioFormat.LittleEndian: self.settings.setByteOrder(QAudioFormat.LittleEndian) elif endian == QAudioFormat.BigEndian: self.settings.setByteOrder(QAudioFormat.BigEndian) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName("Audio Device Test") audio = AudioTest() audio.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/multimedia/audiodevices/audiodevicesbase.ui0000644000076500000240000003511112613140041025521 0ustar philstaff00000000000000 AudioDevicesBase 0 0 679 598 Audio Devices 0 0 true 0 0 659 558 Mode Device Input Output 0 Test format 0 0 QFrame::NoFrame QFrame::Plain <i>Actual Settings</i> Qt::RichText Qt::AlignCenter 0 0 QFrame::NoFrame QFrame::Plain <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nearest Settings</span></p></body></html> Qt::RichText Qt::AlignCenter 0 0 false false false false Test Frequency (Hz) Channels Sample size (bits) Endianess 0 0 Note: an invalid codec 'audio/test' exists in order to allow an invalid format to be constructed, and therefore to trigger a 'nearest format' calculation. true Codec false SampleType false All formats Populate table QAbstractItemView::NoEditTriggers false QAbstractItemView::NoSelection QAbstractItemView::SelectItems Qt::ElideNone false false false false false false Codec AlignHCenter|AlignVCenter|AlignCenter Frequency (Hz) AlignHCenter|AlignVCenter|AlignCenter Channels AlignHCenter|AlignVCenter|AlignCenter Sample type AlignHCenter|AlignVCenter|AlignCenter Sample size (bits) AlignHCenter|AlignVCenter|AlignCenter Endianness AlignHCenter|AlignVCenter|AlignCenter PyQt-gpl-5.5.1/examples/multimedia/audiodevices/ui_audiodevicesbase.py0000644000076500000240000003726012613140041026240 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'audiodevicesbase.ui' # # Created: Tue Jun 25 12:31:11 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_AudioDevicesBase(object): def setupUi(self, AudioDevicesBase): AudioDevicesBase.setObjectName("AudioDevicesBase") AudioDevicesBase.resize(679, 598) self.centralwidget = QtWidgets.QWidget(AudioDevicesBase) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.scrollArea = QtWidgets.QScrollArea(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth()) self.scrollArea.setSizePolicy(sizePolicy) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 659, 558)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_4 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_4.setObjectName("gridLayout_4") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") self.modeLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.modeLabel.setObjectName("modeLabel") self.gridLayout_2.addWidget(self.modeLabel, 0, 0, 1, 1) self.deviceLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.deviceLabel.setObjectName("deviceLabel") self.gridLayout_2.addWidget(self.deviceLabel, 0, 1, 1, 1) self.modeBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.modeBox.setObjectName("modeBox") self.modeBox.addItem("") self.modeBox.addItem("") self.gridLayout_2.addWidget(self.modeBox, 1, 0, 1, 1) self.deviceBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.deviceBox.setObjectName("deviceBox") self.gridLayout_2.addWidget(self.deviceBox, 1, 1, 1, 1) self.tabWidget = QtWidgets.QTabWidget(self.scrollAreaWidgetContents) self.tabWidget.setObjectName("tabWidget") self.testFormatTab = QtWidgets.QWidget() self.testFormatTab.setObjectName("testFormatTab") self.gridLayout = QtWidgets.QGridLayout(self.testFormatTab) self.gridLayout.setObjectName("gridLayout") self.actualLabel = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.actualLabel.sizePolicy().hasHeightForWidth()) self.actualLabel.setSizePolicy(sizePolicy) self.actualLabel.setFrameShape(QtWidgets.QFrame.NoFrame) self.actualLabel.setFrameShadow(QtWidgets.QFrame.Plain) self.actualLabel.setTextFormat(QtCore.Qt.RichText) self.actualLabel.setAlignment(QtCore.Qt.AlignCenter) self.actualLabel.setObjectName("actualLabel") self.gridLayout.addWidget(self.actualLabel, 0, 1, 1, 1) self.nearestLabel = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.nearestLabel.sizePolicy().hasHeightForWidth()) self.nearestLabel.setSizePolicy(sizePolicy) self.nearestLabel.setFrameShape(QtWidgets.QFrame.NoFrame) self.nearestLabel.setFrameShadow(QtWidgets.QFrame.Plain) self.nearestLabel.setTextFormat(QtCore.Qt.RichText) self.nearestLabel.setAlignment(QtCore.Qt.AlignCenter) self.nearestLabel.setObjectName("nearestLabel") self.gridLayout.addWidget(self.nearestLabel, 0, 2, 1, 1) self.sampleRateBox = QtWidgets.QComboBox(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sampleRateBox.sizePolicy().hasHeightForWidth()) self.sampleRateBox.setSizePolicy(sizePolicy) self.sampleRateBox.setObjectName("sampleRateBox") self.gridLayout.addWidget(self.sampleRateBox, 3, 1, 1, 1) self.nearestSampleRate = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleRate.setEnabled(False) self.nearestSampleRate.setObjectName("nearestSampleRate") self.gridLayout.addWidget(self.nearestSampleRate, 3, 2, 1, 1) self.channelsBox = QtWidgets.QComboBox(self.testFormatTab) self.channelsBox.setObjectName("channelsBox") self.gridLayout.addWidget(self.channelsBox, 5, 1, 1, 1) self.nearestChannel = QtWidgets.QLineEdit(self.testFormatTab) self.nearestChannel.setEnabled(False) self.nearestChannel.setObjectName("nearestChannel") self.gridLayout.addWidget(self.nearestChannel, 5, 2, 1, 1) self.sampleSizesBox = QtWidgets.QComboBox(self.testFormatTab) self.sampleSizesBox.setObjectName("sampleSizesBox") self.gridLayout.addWidget(self.sampleSizesBox, 9, 1, 1, 1) self.nearestSampleSize = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleSize.setEnabled(False) self.nearestSampleSize.setObjectName("nearestSampleSize") self.gridLayout.addWidget(self.nearestSampleSize, 9, 2, 1, 1) self.endianBox = QtWidgets.QComboBox(self.testFormatTab) self.endianBox.setObjectName("endianBox") self.gridLayout.addWidget(self.endianBox, 14, 1, 1, 1) self.nearestEndian = QtWidgets.QLineEdit(self.testFormatTab) self.nearestEndian.setEnabled(False) self.nearestEndian.setObjectName("nearestEndian") self.gridLayout.addWidget(self.nearestEndian, 14, 2, 1, 1) self.testButton = QtWidgets.QPushButton(self.testFormatTab) self.testButton.setObjectName("testButton") self.gridLayout.addWidget(self.testButton, 15, 1, 1, 1) self.testResult = QtWidgets.QLabel(self.testFormatTab) self.testResult.setText("") self.testResult.setObjectName("testResult") self.gridLayout.addWidget(self.testResult, 15, 2, 1, 1) self.actualFreqLabel = QtWidgets.QLabel(self.testFormatTab) self.actualFreqLabel.setObjectName("actualFreqLabel") self.gridLayout.addWidget(self.actualFreqLabel, 3, 0, 1, 1) self.actualChannelLabel = QtWidgets.QLabel(self.testFormatTab) self.actualChannelLabel.setObjectName("actualChannelLabel") self.gridLayout.addWidget(self.actualChannelLabel, 5, 0, 1, 1) self.actualSampleSizeLabel = QtWidgets.QLabel(self.testFormatTab) self.actualSampleSizeLabel.setObjectName("actualSampleSizeLabel") self.gridLayout.addWidget(self.actualSampleSizeLabel, 9, 0, 1, 1) self.actualEndianLabel = QtWidgets.QLabel(self.testFormatTab) self.actualEndianLabel.setObjectName("actualEndianLabel") self.gridLayout.addWidget(self.actualEndianLabel, 14, 0, 1, 1) self.label = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setWordWrap(True) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 16, 0, 1, 3) self.actualCodecLabel = QtWidgets.QLabel(self.testFormatTab) self.actualCodecLabel.setObjectName("actualCodecLabel") self.gridLayout.addWidget(self.actualCodecLabel, 2, 0, 1, 1) self.nearestCodec = QtWidgets.QLineEdit(self.testFormatTab) self.nearestCodec.setEnabled(False) self.nearestCodec.setObjectName("nearestCodec") self.gridLayout.addWidget(self.nearestCodec, 2, 2, 1, 1) self.codecsBox = QtWidgets.QComboBox(self.testFormatTab) self.codecsBox.setObjectName("codecsBox") self.gridLayout.addWidget(self.codecsBox, 2, 1, 1, 1) self.actualSampleTypeLabel = QtWidgets.QLabel(self.testFormatTab) self.actualSampleTypeLabel.setObjectName("actualSampleTypeLabel") self.gridLayout.addWidget(self.actualSampleTypeLabel, 6, 0, 1, 1) self.sampleTypesBox = QtWidgets.QComboBox(self.testFormatTab) self.sampleTypesBox.setObjectName("sampleTypesBox") self.gridLayout.addWidget(self.sampleTypesBox, 6, 1, 1, 1) self.nearestSampleType = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleType.setEnabled(False) self.nearestSampleType.setObjectName("nearestSampleType") self.gridLayout.addWidget(self.nearestSampleType, 6, 2, 1, 1) self.tabWidget.addTab(self.testFormatTab, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab) self.verticalLayout_2.setObjectName("verticalLayout_2") self.populateTableButton = QtWidgets.QPushButton(self.tab) self.populateTableButton.setObjectName("populateTableButton") self.verticalLayout_2.addWidget(self.populateTableButton) self.allFormatsTable = QtWidgets.QTableWidget(self.tab) self.allFormatsTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.allFormatsTable.setDragDropOverwriteMode(False) self.allFormatsTable.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) self.allFormatsTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems) self.allFormatsTable.setTextElideMode(QtCore.Qt.ElideNone) self.allFormatsTable.setWordWrap(False) self.allFormatsTable.setCornerButtonEnabled(False) self.allFormatsTable.setObjectName("allFormatsTable") self.allFormatsTable.setColumnCount(6) self.allFormatsTable.setRowCount(0) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(5, item) self.allFormatsTable.horizontalHeader().setHighlightSections(False) self.allFormatsTable.verticalHeader().setVisible(False) self.allFormatsTable.verticalHeader().setHighlightSections(False) self.verticalLayout_2.addWidget(self.allFormatsTable) self.tabWidget.addTab(self.tab, "") self.gridLayout_2.addWidget(self.tabWidget, 2, 0, 1, 2) self.gridLayout_4.addLayout(self.gridLayout_2, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scrollArea) AudioDevicesBase.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(AudioDevicesBase) self.statusbar.setObjectName("statusbar") AudioDevicesBase.setStatusBar(self.statusbar) self.retranslateUi(AudioDevicesBase) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(AudioDevicesBase) def retranslateUi(self, AudioDevicesBase): _translate = QtCore.QCoreApplication.translate AudioDevicesBase.setWindowTitle(_translate("AudioDevicesBase", "Audio Devices")) self.modeLabel.setText(_translate("AudioDevicesBase", "Mode")) self.deviceLabel.setText(_translate("AudioDevicesBase", "Device")) self.modeBox.setItemText(0, _translate("AudioDevicesBase", "Input")) self.modeBox.setItemText(1, _translate("AudioDevicesBase", "Output")) self.actualLabel.setText(_translate("AudioDevicesBase", "Actual Settings")) self.nearestLabel.setText(_translate("AudioDevicesBase", "\n" "\n" "

      Nearest Settings

      ")) self.testButton.setText(_translate("AudioDevicesBase", "Test")) self.actualFreqLabel.setText(_translate("AudioDevicesBase", "Frequency (Hz)")) self.actualChannelLabel.setText(_translate("AudioDevicesBase", "Channels")) self.actualSampleSizeLabel.setText(_translate("AudioDevicesBase", "Sample size (bits)")) self.actualEndianLabel.setText(_translate("AudioDevicesBase", "Endianess")) self.label.setText(_translate("AudioDevicesBase", "Note: an invalid codec \'audio/test\' exists in order to allow an invalid format to be constructed, and therefore to trigger a \'nearest format\' calculation.")) self.actualCodecLabel.setText(_translate("AudioDevicesBase", "Codec")) self.actualSampleTypeLabel.setText(_translate("AudioDevicesBase", "SampleType")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.testFormatTab), _translate("AudioDevicesBase", "Test format")) self.populateTableButton.setText(_translate("AudioDevicesBase", "Populate table")) self.allFormatsTable.setSortingEnabled(False) item = self.allFormatsTable.horizontalHeaderItem(0) item.setText(_translate("AudioDevicesBase", "Codec")) item = self.allFormatsTable.horizontalHeaderItem(1) item.setText(_translate("AudioDevicesBase", "Frequency (Hz)")) item = self.allFormatsTable.horizontalHeaderItem(2) item.setText(_translate("AudioDevicesBase", "Channels")) item = self.allFormatsTable.horizontalHeaderItem(3) item.setText(_translate("AudioDevicesBase", "Sample type")) item = self.allFormatsTable.horizontalHeaderItem(4) item.setText(_translate("AudioDevicesBase", "Sample size (bits)")) item = self.allFormatsTable.horizontalHeaderItem(5) item.setText(_translate("AudioDevicesBase", "Endianness")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("AudioDevicesBase", "All formats")) PyQt-gpl-5.5.1/examples/multimedia/audiooutput.py0000755000076500000240000002504512613140041022163 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 math import pi, sin from struct import pack from PyQt5.QtCore import QByteArray, QIODevice, Qt, QTimer, qWarning from PyQt5.QtMultimedia import (QAudio, QAudioDeviceInfo, QAudioFormat, QAudioOutput) from PyQt5.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel, QMainWindow, QPushButton, QSlider, QVBoxLayout, QWidget) class Generator(QIODevice): def __init__(self, format, durationUs, sampleRate, parent): super(Generator, self).__init__(parent) self.m_pos = 0 self.m_buffer = QByteArray() self.generateData(format, durationUs, sampleRate) def start(self): self.open(QIODevice.ReadOnly) def stop(self): self.m_pos = 0 self.close() def generateData(self, format, durationUs, sampleRate): pack_format = '' if format.sampleSize() == 8: if format.sampleType() == QAudioFormat.UnSignedInt: scaler = lambda x: ((1.0 + x) / 2 * 255) pack_format = 'B' elif format.sampleType() == QAudioFormat.SignedInt: scaler = lambda x: x * 127 pack_format = 'b' elif format.sampleSize() == 16: if format.sampleType() == QAudioFormat.UnSignedInt: scaler = lambda x: (1.0 + x) / 2 * 65535 pack_format = 'H' elif format.sampleType() == QAudioFormat.SignedInt: scaler = lambda x: x * 32767 pack_format = 'h' assert(pack_format != '') channelBytes = format.sampleSize() // 8 sampleBytes = format.channelCount() * channelBytes length = (format.sampleRate() * format.channelCount() * (format.sampleSize() // 8)) * durationUs // 100000 self.m_buffer.clear() sampleIndex = 0 factor = 2 * pi * sampleRate / format.sampleRate() while length != 0: x = sin((sampleIndex % format.sampleRate()) * factor) packed = pack(pack_format, int(scaler(x))) for _ in range(format.channelCount()): self.m_buffer.append(packed) length -= channelBytes sampleIndex += 1 def readData(self, maxlen): data = QByteArray() total = 0 while maxlen > total: chunk = min(self.m_buffer.size() - self.m_pos, maxlen - total) data.append(self.m_buffer.mid(self.m_pos, chunk)) self.m_pos = (self.m_pos + chunk) % self.m_buffer.size() total += chunk return data.data() def writeData(self, data): return 0 def bytesAvailable(self): return self.m_buffer.size() + super(Generator, self).bytesAvailable() class AudioTest(QMainWindow): PUSH_MODE_LABEL = "Enable push mode" PULL_MODE_LABEL = "Enable pull mode" SUSPEND_LABEL = "Suspend playback" RESUME_LABEL = "Resume playback" DurationSeconds = 1 ToneSampleRateHz = 600 DataSampleRateHz = 44100 def __init__(self): super(AudioTest, self).__init__() self.m_device = QAudioDeviceInfo.defaultOutputDevice() self.m_output = None self.initializeWindow() self.initializeAudio() def initializeWindow(self): layout = QVBoxLayout() self.m_deviceBox = QComboBox(activated=self.deviceChanged) for deviceInfo in QAudioDeviceInfo.availableDevices(QAudio.AudioOutput): self.m_deviceBox.addItem(deviceInfo.deviceName(), deviceInfo) layout.addWidget(self.m_deviceBox) self.m_modeButton = QPushButton(clicked=self.toggleMode) self.m_modeButton.setText(self.PUSH_MODE_LABEL) layout.addWidget(self.m_modeButton) self.m_suspendResumeButton = QPushButton( clicked=self.toggleSuspendResume) self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) layout.addWidget(self.m_suspendResumeButton) volumeBox = QHBoxLayout() volumeLabel = QLabel("Volume:") self.m_volumeSlider = QSlider(Qt.Horizontal, minimum=0, maximum=100, singleStep=10, valueChanged=self.volumeChanged) volumeBox.addWidget(volumeLabel) volumeBox.addWidget(self.m_volumeSlider) layout.addLayout(volumeBox) window = QWidget() window.setLayout(layout) self.setCentralWidget(window) def initializeAudio(self): self.m_pullTimer = QTimer(self, timeout=self.pullTimerExpired) self.m_pullMode = True self.m_format = QAudioFormat() self.m_format.setSampleRate(self.DataSampleRateHz) self.m_format.setChannelCount(1) self.m_format.setSampleSize(16) self.m_format.setCodec('audio/pcm') self.m_format.setByteOrder(QAudioFormat.LittleEndian) self.m_format.setSampleType(QAudioFormat.SignedInt) info = QAudioDeviceInfo(QAudioDeviceInfo.defaultOutputDevice()) if not info.isFormatSupported(self.m_format): 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.DurationSeconds * 1000000, self.ToneSampleRateHz, self) self.createAudioOutput() def createAudioOutput(self): self.m_audioOutput = QAudioOutput(self.m_device, self.m_format) self.m_audioOutput.notify.connect(self.notified) self.m_audioOutput.stateChanged.connect(self.handleStateChanged) self.m_generator.start() self.m_audioOutput.start(self.m_generator) self.m_volumeSlider.setValue(self.m_audioOutput.volume() * 100) def deviceChanged(self, index): self.m_pullTimer.stop() self.m_generator.stop() self.m_audioOutput.stop() self.m_device = self.m_deviceBox.itemData(index) self.createAudioOutput() def volumeChanged(self, value): if self.m_audioOutput is not None: self.m_audioOutput.setVolume(value / 100.0) def notified(self): qWarning("bytesFree = %d, elapsedUSecs = %d, processedUSecs = %d" % ( self.m_audioOutput.bytesFree(), self.m_audioOutput.elapsedUSecs(), self.m_audioOutput.processedUSecs())) def pullTimerExpired(self): if self.m_audioOutput is not None and self.m_audioOutput.state() != QAudio.StoppedState: chunks = self.m_audioOutput.bytesFree() // self.m_audioOutput.periodSize() for _ in range(chunks): data = self.m_generator.read(self.m_audioOutput.periodSize()) if data is None or len(data) != self.m_audioOutput.periodSize(): break self.m_output.write(data) def toggleMode(self): self.m_pullTimer.stop() self.m_audioOutput.stop() if self.m_pullMode: self.m_modeButton.setText(self.PULL_MODE_LABEL) self.m_output = self.m_audioOutput.start() self.m_pullMode = False self.m_pullTimer.start(20) else: self.m_modeButton.setText(self.PUSH_MODE_LABEL) self.m_pullMode = True self.m_audioOutput.start(self.m_generator) self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) def toggleSuspendResume(self): if self.m_audioOutput.state() == QAudio.SuspendedState: qWarning("status: Suspended, resume()") self.m_audioOutput.resume() self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) elif self.m_audioOutput.state() == QAudio.ActiveState: qWarning("status: Active, suspend()") self.m_audioOutput.suspend() self.m_suspendResumeButton.setText(self.RESUME_LABEL) elif self.m_audioOutput.state() == QAudio.StoppedState: qWarning("status: Stopped, resume()") self.m_audioOutput.resume() self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) elif self.m_audioOutput.state() == QAudio.IdleState: qWarning("status: IdleState") stateMap = { QAudio.ActiveState: "ActiveState", QAudio.SuspendedState: "SuspendedState", QAudio.StoppedState: "StoppedState", QAudio.IdleState: "IdleState"} def handleStateChanged(self, state): qWarning("state = " + self.stateMap.get(state, "Unknown")) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName("Audio Output Test") audio = AudioTest() audio.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/multimedia/README0000644000076500000240000000124512613140041020100 0ustar philstaff00000000000000PyQt contains classes that provide support for audio, video, radio and cameras. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/multimediawidgets/0000755000076500000240000000000012613140041020605 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/multimediawidgets/camera/0000755000076500000240000000000012613140041022035 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/multimediawidgets/camera/camera.py0000755000076500000240000004466312613140041023657 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QByteArray, qFuzzyCompare, Qt, QTimer from PyQt5.QtGui import QPalette, QPixmap from PyQt5.QtMultimedia import (QAudioEncoderSettings, QCamera, QCameraImageCapture, QImageEncoderSettings, QMediaMetaData, QMediaRecorder, QMultimedia, QVideoEncoderSettings) from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QDialog, QMainWindow, QMessageBox) from ui_camera import Ui_Camera from ui_imagesettings import Ui_ImageSettingsUi from ui_videosettings import Ui_VideoSettingsUi class ImageSettings(QDialog): def __init__(self, imageCapture, parent=None): super(ImageSettings, self).__init__(parent) self.ui = Ui_ImageSettingsUi() self.imagecapture = imageCapture self.ui.setupUi(self) self.ui.imageCodecBox.addItem("Default image format", "") for codecName in self.imagecapture.supportedImageCodecs(): description = self.imagecapture.imageCodecDescription(codecName) self.ui.imageCodecBox.addItem(codecName + ": " + description, codecName) self.ui.imageQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.imageResolutionBox.addItem("Default resolution") supportedResolutions, _ = self.imagecapture.supportedResolutions() for resolution in supportedResolutions: self.ui.imageResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) def imageSettings(self): settings = self.imagecapture.encodingSettings() settings.setCodec(self.boxValue(self.ui.imageCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.imageQualitySlider.value())) settings.setResolution(self.boxValue(self.ui.imageResolutionBox)) return settings def setImageSettings(self, settings): self.selectComboBoxItem(self.ui.imageCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.imageResolutionBox, settings.resolution()) self.ui.imageQualitySlider.setValue(settings.quality()) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break class VideoSettings(QDialog): def __init__(self, mediaRecorder, parent=None): super(VideoSettings, self).__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", "") for codecName in self.mediaRecorder.supportedAudioCodecs(): description = self.mediaRecorder.audioCodecDescription(codecName) self.ui.audioCodecBox.addItem(codecName + ": " + description, codecName) supportedSampleRates, _ = self.mediaRecorder.supportedAudioSampleRates() for sampleRate in supportedSampleRates: self.ui.audioSampleRateBox.addItem(str(sampleRate), sampleRate) self.ui.audioQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoCodecBox.addItem("Default video codec", "") for codecName in self.mediaRecorder.supportedVideoCodecs(): description = self.mediaRecorder.videoCodecDescription(codecName) self.ui.videoCodecBox.addItem(codecName + ": " + description, codecName) self.ui.videoQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoResolutionBox.addItem("Default") supportedResolutions, _ = self.mediaRecorder.supportedResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() for rate in supportedFrameRates: self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", "") for format in self.mediaRecorder.supportedContainers(): self.ui.containerFormatBox.addItem( format + ":" + self.mediaRecorder.containerDescription( format), format) def audioSettings(self): settings = self.mediaRecorder.audioSettings() settings.setCodec(self.boxValue(self.ui.audioCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.audioQualitySlider.value())) settings.setSampleRate(self.boxValue(self.ui.audioSampleRateBox)) return settings def setAudioSettings(self, settings): self.selectComboBoxItem(self.ui.audioCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.audioSampleRateBox, settings.sampleRate()) self.ui.audioQualitySlider.setValue(settings.quality()) def videoSettings(self): settings = self.mediaRecorder.videoSettings() settings.setCodec(self.boxValue(self.ui.videoCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.videoQualitySlider.value())) settings.setResolution(self.boxValue(self.ui.videoResolutionBox)) settings.setFrameRate(self.boxValue(self.ui.videoFramerateBox)) return settings def setVideoSettings(self, settings): self.selectComboBoxItem(self.ui.videoCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.videoResolutionBox, settings.resolution()) self.ui.videoQualitySlider.setValue(settings.quality()) for i in range(1, self.ui.videoFramerateBox.count()): itemRate = self.ui.videoFramerateBox.itemData(i) if qFuzzyCompare(itemRate, settings.frameRate()): self.ui.videoFramerateBox.setCurrentIndex(i) break def format(self): return self.boxValue(self.ui.containerFormatBox) def setFormat(self, format): self.selectComboBoxItem(self.ui.containerFormatBox, format) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break class Camera(QMainWindow): def __init__(self, parent=None): super(Camera, self).__init__(parent) self.ui = Ui_Camera() self.camera = None self.imageCapture = None self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.imageSettings = QImageEncoderSettings() self.audioSettings = QAudioEncoderSettings() self.videoSettings = QVideoEncoderSettings() self.videoContainerFormat = '' self.ui.setupUi(self) cameraDevice = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if cameraDevice.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.captureWidget.currentChanged.connect(self.updateCaptureMode) self.ui.lockButton.hide() self.setCamera(cameraDevice) def setCamera(self, cameraDevice): if cameraDevice.isEmpty(): self.camera = QCamera() else: self.camera = QCamera(cameraDevice) self.camera.stateChanged.connect(self.updateCameraState) self.camera.error.connect(self.displayCameraError) self.mediaRecorder = QMediaRecorder(self.camera) self.mediaRecorder.stateChanged.connect(self.updateRecorderState) self.imageCapture = QCameraImageCapture(self.camera) self.mediaRecorder.durationChanged.connect(self.updateRecordTime) self.mediaRecorder.error.connect(self.displayRecorderError) self.mediaRecorder.setMetaData(QMediaMetaData.Title, "Test Title") self.ui.exposureCompensation.valueChanged.connect( self.setExposureCompensation) self.camera.setViewfinder(self.ui.viewfinder) self.updateCameraState(self.camera.state()) self.updateLockStatus(self.camera.lockStatus(), QCamera.UserRequest) self.updateRecorderState(self.mediaRecorder.state()) self.imageCapture.readyForCaptureChanged.connect(self.readyForCapture) self.imageCapture.imageCaptured.connect(self.processCapturedImage) self.imageCapture.imageSaved.connect(self.imageSaved) self.camera.lockStatusChanged.connect(self.updateLockStatus) self.ui.captureWidget.setTabEnabled(0, self.camera.isCaptureModeSupported(QCamera.CaptureStillImage)) self.ui.captureWidget.setTabEnabled(1, self.camera.isCaptureModeSupported(QCamera.CaptureVideo)) self.updateCaptureMode() self.camera.start() def keyPressEvent(self, event): if event.isAutoRepeat(): return if event.key() == Qt.Key_CameraFocus: self.displayViewfinder() self.camera.searchAndLock() event.accept() elif event.key() == Qt.Key_Camera: if self.camera.captureMode() == QCamera.CaptureStillImage: self.takeImage() elif self.mediaRecorder.state() == QMediaRecorder.RecordingState: self.stop() else: self.record() event.accept() else: super(Camera, self).keyPressEvent(event) def keyReleaseEvent(self, event): if event.isAutoRepeat(): return if event.key() == Qt.Key_CameraFocus: self.camera.unlock() else: super(Camera, self).keyReleaseEvent(event) def updateRecordTime(self): msg = "Recorded %d sec" % self.mediaRecorder.duration() // 1000 self.ui.statusbar.showMessage(msg) def processCapturedImage(self, requestId, img): scaledImage = img.scaled(self.ui.viewfinder.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation) self.ui.lastImagePreviewLabel.setPixmap(QPixmap.fromImage(scaledImage)) self.displayCapturedImage() QTimer.singleShot(4000, self.displayViewfinder) def configureCaptureSettings(self): if self.camera.captureMode() == QCamera.CaptureStillImage: self.configureImageSettings() elif self.camera.captureMode() == QCamera.CaptureVideo: self.configureVideoSettings() def configureVideoSettings(self): settingsDialog = VideoSettings(self.mediaRecorder) settingsDialog.setAudioSettings(self.audioSettings) settingsDialog.setVideoSettings(self.videoSettings) settingsDialog.setFormat(self.videoContainerFormat) if settingsDialog.exec_(): self.audioSettings = settingsDialog.audioSettings() self.videoSettings = settingsDialog.videoSettings() self.videoContainerFormat = settingsDialog.format() self.mediaRecorder.setEncodingSettings(self.audioSettings, self.videoSettings, self.videoContainerFormat) def configureImageSettings(self): settingsDialog = ImageSettings(self.imageCapture) settingsDialog.setImageSettings(self.imageSettings) if settingsDialog.exec_(): self.imageSettings = settingsDialog.imageSettings() self.imageCapture.setEncodingSettings(self.imageSettings) def record(self): self.mediaRecorder.record() self.updateRecordTime() def pause(self): self.mediaRecorder.pause() def stop(self): self.mediaRecorder.stop() def setMuted(self, muted): self.mediaRecorder.setMuted(muted) def toggleLock(self): if self.camera.lockStatus() in (QCamera.Searching, QCamera.Locked): self.camera.unlock() elif self.camera.lockStatus() == QCamera.Unlocked: self.camera.searchAndLock() def updateLockStatus(self, status, reason): indicationColor = Qt.black if status == QCamera.Searching: self.ui.statusbar.showMessage("Focusing...") self.ui.lockButton.setText("Focusing...") indicationColor = Qt.yellow elif status == QCamera.Locked: self.ui.lockButton.setText("Unlock") self.ui.statusbar.showMessage("Focused", 2000) indicationColor = Qt.darkGreen elif status == QCamera.Unlocked: self.ui.lockButton.setText("Focus") if reason == QCamera.LockFailed: self.ui.statusbar.showMessage("Focus Failed", 2000) indicationColor = Qt.red palette = self.ui.lockButton.palette() palette.setColor(QPalette.ButtonText, indicationColor) self.ui.lockButton.setPalette(palette) def takeImage(self): self.isCapturingImage = True self.imageCapture.capture() def startCamera(self): self.camera.start() def stopCamera(self): self.camera.stop() def updateCaptureMode(self): tabIndex = self.ui.captureWidget.currentIndex() captureMode = QCamera.CaptureStillImage if tabIndex == 0 else QCamera.CaptureVideo if self.camera.isCaptureModeSupported(captureMode): self.camera.setCaptureMode(captureMode) def updateCameraState(self, state): if state == QCamera.ActiveState: self.ui.actionStartCamera.setEnabled(False) self.ui.actionStopCamera.setEnabled(True) self.ui.captureWidget.setEnabled(True) self.ui.actionSettings.setEnabled(True) elif state in (QCamera.UnloadedState, QCamera.LoadedState): self.ui.actionStartCamera.setEnabled(True) self.ui.actionStopCamera.setEnabled(False) self.ui.captureWidget.setEnabled(False) self.ui.actionSettings.setEnabled(False) def updateRecorderState(self, state): if state == QMediaRecorder.StoppedState: self.ui.recordButton.setEnabled(True) self.ui.pauseButton.setEnabled(True) self.ui.stopButton.setEnabled(False) elif state == QMediaRecorder.PausedState: self.ui.recordButton.setEnabled(True) self.ui.pauseButton.setEnabled(False) self.ui.stopButton.setEnabled(True) elif state == QMediaRecorder.RecordingState: self.ui.recordButton.setEnabled(False) self.ui.pauseButton.setEnabled(True) self.ui.stopButton.setEnabled(True) def setExposureCompensation(self, index): self.camera.exposure().setExposureCompensation(index * 0.5) def displayRecorderError(self): QMessageBox.warning(self, "Capture error", self.mediaRecorder.errorString()) def displayCameraError(self): QMessageBox.warning(self, "Camera error", self.camera.errorString()) def updateCameraDevice(self, action): self.setCamera(action.data()) def displayViewfinder(self): self.ui.stackedWidget.setCurrentIndex(0) def displayCapturedImage(self): self.ui.stackedWidget.setCurrentIndex(1) def readyForCapture(self, ready): self.ui.takeImageButton.setEnabled(ready) def imageSaved(self, id, fileName): self.isCapturingImage = False if self.applicationExiting: self.close() def closeEvent(self, event): if self.isCapturingImage: self.setEnabled(False) self.applicationExiting = True event.ignore() else: event.accept() if __name__ == '__main__': import sys app = QApplication(sys.argv) camera = Camera() camera.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/multimediawidgets/camera/camera.ui0000644000076500000240000003064312613140041023632 0ustar philstaff00000000000000 Camera 0 0 668 422 Camera 1 0 255 255 255 145 145 145 255 255 255 145 145 145 145 145 145 145 145 145 0 0 0 QFrame::Box Focus 0 Image Capture Photo Qt::Vertical 20 161 Exposure Compensation: -4 4 2 Qt::Horizontal QSlider::TicksAbove Video Record Pause Stop Qt::Vertical 20 76 Mute true 0 0 668 29 File Devices Exit Start Camera Stop Camera Settings QCameraViewfinder QWidget
      PyQt5.QtMultimediaWidgets
      1
      recordButton clicked() Camera record() 647 149 61 238 stopButton clicked() Camera stop() 647 225 140 236 pauseButton clicked() Camera pause() 647 187 234 237 actionExit triggered() Camera close() -1 -1 154 130 takeImageButton clicked() Camera takeImage() 625 132 603 169 lockButton clicked() Camera toggleLock() 658 75 453 119 muteButton toggled(bool) Camera setMuted(bool) 647 377 5 280 exposureCompensation valueChanged(int) Camera setExposureCompensation(int) 559 367 665 365 actionSettings triggered() Camera configureCaptureSettings() -1 -1 333 210 actionStartCamera triggered() Camera startCamera() -1 -1 333 210 actionStopCamera triggered() Camera stopCamera() -1 -1 333 210 record() pause() stop() enablePreview(bool) configureCaptureSettings() takeImage() startCamera() toggleLock() setMuted(bool) stopCamera() setExposureCompensation(int)
      PyQt-gpl-5.5.1/examples/multimediawidgets/camera/imagesettings.ui0000644000076500000240000000612712613140041025245 0ustar philstaff00000000000000 ImageSettingsUi 0 0 332 270 Dialog Image Resolution: Image Format: Quality: 4 Qt::Horizontal Qt::Vertical 20 14 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() ImageSettingsUi accept() 322 272 44 230 buttonBox rejected() ImageSettingsUi reject() 405 262 364 227 PyQt-gpl-5.5.1/examples/multimediawidgets/camera/ui_camera.py0000644000076500000240000002415212613140041024340 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'camera.ui' # # Created: Fri Jun 28 12:10:56 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Camera(object): def setupUi(self, Camera): Camera.setObjectName("Camera") Camera.resize(668, 422) self.centralwidget = QtWidgets.QWidget(Camera) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setObjectName("gridLayout_3") self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth()) self.stackedWidget.setSizePolicy(sizePolicy) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) self.stackedWidget.setPalette(palette) self.stackedWidget.setObjectName("stackedWidget") self.viewfinderPage = QtWidgets.QWidget() self.viewfinderPage.setObjectName("viewfinderPage") self.gridLayout_5 = QtWidgets.QGridLayout(self.viewfinderPage) self.gridLayout_5.setObjectName("gridLayout_5") self.viewfinder = QCameraViewfinder(self.viewfinderPage) self.viewfinder.setObjectName("viewfinder") self.gridLayout_5.addWidget(self.viewfinder, 0, 0, 1, 1) self.stackedWidget.addWidget(self.viewfinderPage) self.previewPage = QtWidgets.QWidget() self.previewPage.setObjectName("previewPage") self.gridLayout_4 = QtWidgets.QGridLayout(self.previewPage) self.gridLayout_4.setObjectName("gridLayout_4") self.lastImagePreviewLabel = QtWidgets.QLabel(self.previewPage) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lastImagePreviewLabel.sizePolicy().hasHeightForWidth()) self.lastImagePreviewLabel.setSizePolicy(sizePolicy) self.lastImagePreviewLabel.setFrameShape(QtWidgets.QFrame.Box) self.lastImagePreviewLabel.setText("") self.lastImagePreviewLabel.setObjectName("lastImagePreviewLabel") self.gridLayout_4.addWidget(self.lastImagePreviewLabel, 0, 0, 1, 1) self.stackedWidget.addWidget(self.previewPage) self.gridLayout_3.addWidget(self.stackedWidget, 0, 0, 3, 1) self.lockButton = QtWidgets.QPushButton(self.centralwidget) self.lockButton.setObjectName("lockButton") self.gridLayout_3.addWidget(self.lockButton, 1, 1, 1, 2) self.captureWidget = QtWidgets.QTabWidget(self.centralwidget) self.captureWidget.setObjectName("captureWidget") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.gridLayout = QtWidgets.QGridLayout(self.tab_2) self.gridLayout.setObjectName("gridLayout") self.takeImageButton = QtWidgets.QPushButton(self.tab_2) self.takeImageButton.setObjectName("takeImageButton") self.gridLayout.addWidget(self.takeImageButton, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 161, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) self.label = QtWidgets.QLabel(self.tab_2) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 2, 0, 1, 1) self.exposureCompensation = QtWidgets.QSlider(self.tab_2) self.exposureCompensation.setMinimum(-4) self.exposureCompensation.setMaximum(4) self.exposureCompensation.setPageStep(2) self.exposureCompensation.setOrientation(QtCore.Qt.Horizontal) self.exposureCompensation.setTickPosition(QtWidgets.QSlider.TicksAbove) self.exposureCompensation.setObjectName("exposureCompensation") self.gridLayout.addWidget(self.exposureCompensation, 3, 0, 1, 1) self.captureWidget.addTab(self.tab_2, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.gridLayout_2 = QtWidgets.QGridLayout(self.tab) self.gridLayout_2.setObjectName("gridLayout_2") self.recordButton = QtWidgets.QPushButton(self.tab) self.recordButton.setObjectName("recordButton") self.gridLayout_2.addWidget(self.recordButton, 0, 0, 1, 1) self.pauseButton = QtWidgets.QPushButton(self.tab) self.pauseButton.setObjectName("pauseButton") self.gridLayout_2.addWidget(self.pauseButton, 1, 0, 1, 1) self.stopButton = QtWidgets.QPushButton(self.tab) self.stopButton.setObjectName("stopButton") self.gridLayout_2.addWidget(self.stopButton, 2, 0, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 76, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout_2.addItem(spacerItem1, 3, 0, 1, 1) self.muteButton = QtWidgets.QPushButton(self.tab) self.muteButton.setCheckable(True) self.muteButton.setObjectName("muteButton") self.gridLayout_2.addWidget(self.muteButton, 4, 0, 1, 1) self.captureWidget.addTab(self.tab, "") self.gridLayout_3.addWidget(self.captureWidget, 2, 1, 1, 2) Camera.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Camera) self.menubar.setGeometry(QtCore.QRect(0, 0, 668, 29)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") self.menuDevices = QtWidgets.QMenu(self.menubar) self.menuDevices.setObjectName("menuDevices") Camera.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Camera) self.statusbar.setObjectName("statusbar") Camera.setStatusBar(self.statusbar) self.actionExit = QtWidgets.QAction(Camera) self.actionExit.setObjectName("actionExit") self.actionStartCamera = QtWidgets.QAction(Camera) self.actionStartCamera.setObjectName("actionStartCamera") self.actionStopCamera = QtWidgets.QAction(Camera) self.actionStopCamera.setObjectName("actionStopCamera") self.actionSettings = QtWidgets.QAction(Camera) self.actionSettings.setObjectName("actionSettings") 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.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuDevices.menuAction()) self.retranslateUi(Camera) self.stackedWidget.setCurrentIndex(0) self.captureWidget.setCurrentIndex(0) 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.lockButton.clicked.connect(Camera.toggleLock) self.muteButton.toggled['bool'].connect(Camera.setMuted) self.exposureCompensation.valueChanged['int'].connect(Camera.setExposureCompensation) self.actionSettings.triggered.connect(Camera.configureCaptureSettings) self.actionStartCamera.triggered.connect(Camera.startCamera) self.actionStopCamera.triggered.connect(Camera.stopCamera) QtCore.QMetaObject.connectSlotsByName(Camera) def retranslateUi(self, Camera): _translate = QtCore.QCoreApplication.translate Camera.setWindowTitle(_translate("Camera", "Camera")) self.lockButton.setText(_translate("Camera", "Focus")) self.takeImageButton.setText(_translate("Camera", "Capture Photo")) self.label.setText(_translate("Camera", "Exposure Compensation:")) self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab_2), _translate("Camera", "Image")) self.recordButton.setText(_translate("Camera", "Record")) self.pauseButton.setText(_translate("Camera", "Pause")) self.stopButton.setText(_translate("Camera", "Stop")) self.muteButton.setText(_translate("Camera", "Mute")) self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab), _translate("Camera", "Video")) self.menuFile.setTitle(_translate("Camera", "File")) self.menuDevices.setTitle(_translate("Camera", "Devices")) self.actionExit.setText(_translate("Camera", "Exit")) self.actionStartCamera.setText(_translate("Camera", "Start Camera")) self.actionStopCamera.setText(_translate("Camera", "Stop Camera")) self.actionSettings.setText(_translate("Camera", "Settings")) from PyQt5.QtMultimediaWidgets import QCameraViewfinder PyQt-gpl-5.5.1/examples/multimediawidgets/camera/ui_imagesettings.py0000644000076500000240000000642312613140041025754 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'imagesettings.ui' # # Created: Fri Jun 28 11:48:28 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_ImageSettingsUi(object): def setupUi(self, ImageSettingsUi): ImageSettingsUi.setObjectName("ImageSettingsUi") ImageSettingsUi.resize(332, 270) self.gridLayout = QtWidgets.QGridLayout(ImageSettingsUi) self.gridLayout.setObjectName("gridLayout") self.groupBox_2 = QtWidgets.QGroupBox(ImageSettingsUi) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.label_8 = QtWidgets.QLabel(self.groupBox_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2) self.imageResolutionBox = QtWidgets.QComboBox(self.groupBox_2) self.imageResolutionBox.setObjectName("imageResolutionBox") self.gridLayout_2.addWidget(self.imageResolutionBox, 1, 0, 1, 2) self.label_6 = QtWidgets.QLabel(self.groupBox_2) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 2, 0, 1, 2) self.imageCodecBox = QtWidgets.QComboBox(self.groupBox_2) self.imageCodecBox.setObjectName("imageCodecBox") self.gridLayout_2.addWidget(self.imageCodecBox, 3, 0, 1, 2) self.label_7 = QtWidgets.QLabel(self.groupBox_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 1) self.imageQualitySlider = QtWidgets.QSlider(self.groupBox_2) self.imageQualitySlider.setMaximum(4) self.imageQualitySlider.setOrientation(QtCore.Qt.Horizontal) self.imageQualitySlider.setObjectName("imageQualitySlider") self.gridLayout_2.addWidget(self.imageQualitySlider, 4, 1, 1, 1) self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 14, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) self.buttonBox = QtWidgets.QDialogButtonBox(ImageSettingsUi) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayout.addWidget(self.buttonBox, 2, 0, 1, 1) self.retranslateUi(ImageSettingsUi) self.buttonBox.accepted.connect(ImageSettingsUi.accept) self.buttonBox.rejected.connect(ImageSettingsUi.reject) QtCore.QMetaObject.connectSlotsByName(ImageSettingsUi) def retranslateUi(self, ImageSettingsUi): _translate = QtCore.QCoreApplication.translate ImageSettingsUi.setWindowTitle(_translate("ImageSettingsUi", "Dialog")) self.groupBox_2.setTitle(_translate("ImageSettingsUi", "Image")) self.label_8.setText(_translate("ImageSettingsUi", "Resolution:")) self.label_6.setText(_translate("ImageSettingsUi", "Image Format:")) self.label_7.setText(_translate("ImageSettingsUi", "Quality:")) PyQt-gpl-5.5.1/examples/multimediawidgets/camera/ui_videosettings.py0000644000076500000240000001524212613140041025777 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'videosettings.ui' # # Created: Fri Jun 28 11:48:14 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_VideoSettingsUi(object): def setupUi(self, VideoSettingsUi): VideoSettingsUi.setObjectName("VideoSettingsUi") VideoSettingsUi.resize(561, 369) self.gridLayout_4 = QtWidgets.QGridLayout(VideoSettingsUi) self.gridLayout_4.setObjectName("gridLayout_4") self.scrollArea = QtWidgets.QScrollArea(VideoSettingsUi) self.scrollArea.setFrameShape(QtWidgets.QFrame.NoFrame) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 543, 250)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_3 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_3.setObjectName("gridLayout_3") self.groupBox = QtWidgets.QGroupBox(self.scrollAreaWidgetContents) self.groupBox.setObjectName("groupBox") self.gridLayout = QtWidgets.QGridLayout(self.groupBox) self.gridLayout.setObjectName("gridLayout") self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 0, 0, 1, 2) self.audioCodecBox = QtWidgets.QComboBox(self.groupBox) self.audioCodecBox.setObjectName("audioCodecBox") self.gridLayout.addWidget(self.audioCodecBox, 1, 0, 1, 2) self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setObjectName("label_5") self.gridLayout.addWidget(self.label_5, 2, 0, 1, 2) self.audioSampleRateBox = QtWidgets.QComboBox(self.groupBox) self.audioSampleRateBox.setObjectName("audioSampleRateBox") self.gridLayout.addWidget(self.audioSampleRateBox, 3, 0, 1, 2) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1) self.audioQualitySlider = QtWidgets.QSlider(self.groupBox) self.audioQualitySlider.setMaximum(4) self.audioQualitySlider.setOrientation(QtCore.Qt.Horizontal) self.audioQualitySlider.setObjectName("audioQualitySlider") self.gridLayout.addWidget(self.audioQualitySlider, 4, 1, 1, 1) self.gridLayout_3.addWidget(self.groupBox, 0, 0, 1, 1) self.groupBox_2 = QtWidgets.QGroupBox(self.scrollAreaWidgetContents) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.label_8 = QtWidgets.QLabel(self.groupBox_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2) self.videoResolutionBox = QtWidgets.QComboBox(self.groupBox_2) self.videoResolutionBox.setObjectName("videoResolutionBox") self.gridLayout_2.addWidget(self.videoResolutionBox, 1, 0, 1, 2) self.label_9 = QtWidgets.QLabel(self.groupBox_2) self.label_9.setObjectName("label_9") self.gridLayout_2.addWidget(self.label_9, 2, 0, 1, 2) self.videoFramerateBox = QtWidgets.QComboBox(self.groupBox_2) self.videoFramerateBox.setObjectName("videoFramerateBox") self.gridLayout_2.addWidget(self.videoFramerateBox, 3, 0, 1, 2) self.label_6 = QtWidgets.QLabel(self.groupBox_2) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 4, 0, 1, 2) self.videoCodecBox = QtWidgets.QComboBox(self.groupBox_2) self.videoCodecBox.setObjectName("videoCodecBox") self.gridLayout_2.addWidget(self.videoCodecBox, 5, 0, 1, 2) self.label_7 = QtWidgets.QLabel(self.groupBox_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 6, 0, 1, 1) self.videoQualitySlider = QtWidgets.QSlider(self.groupBox_2) self.videoQualitySlider.setMaximum(4) self.videoQualitySlider.setOrientation(QtCore.Qt.Horizontal) self.videoQualitySlider.setObjectName("videoQualitySlider") self.gridLayout_2.addWidget(self.videoQualitySlider, 6, 1, 1, 1) self.gridLayout_3.addWidget(self.groupBox_2, 0, 1, 3, 1) self.label_4 = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.label_4.setObjectName("label_4") self.gridLayout_3.addWidget(self.label_4, 1, 0, 1, 1) self.containerFormatBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.containerFormatBox.setObjectName("containerFormatBox") self.gridLayout_3.addWidget(self.containerFormatBox, 2, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_4.addWidget(self.scrollArea, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 14, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout_4.addItem(spacerItem, 1, 0, 1, 1) self.buttonBox = QtWidgets.QDialogButtonBox(VideoSettingsUi) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayout_4.addWidget(self.buttonBox, 2, 0, 1, 1) self.retranslateUi(VideoSettingsUi) self.buttonBox.accepted.connect(VideoSettingsUi.accept) self.buttonBox.rejected.connect(VideoSettingsUi.reject) QtCore.QMetaObject.connectSlotsByName(VideoSettingsUi) def retranslateUi(self, VideoSettingsUi): _translate = QtCore.QCoreApplication.translate VideoSettingsUi.setWindowTitle(_translate("VideoSettingsUi", "Dialog")) self.groupBox.setTitle(_translate("VideoSettingsUi", "Audio")) self.label_2.setText(_translate("VideoSettingsUi", "Audio Codec:")) self.label_5.setText(_translate("VideoSettingsUi", "Sample Rate:")) self.label_3.setText(_translate("VideoSettingsUi", "Quality:")) self.groupBox_2.setTitle(_translate("VideoSettingsUi", "Video")) self.label_8.setText(_translate("VideoSettingsUi", "Resolution:")) self.label_9.setText(_translate("VideoSettingsUi", "Framerate:")) self.label_6.setText(_translate("VideoSettingsUi", "Video Codec:")) self.label_7.setText(_translate("VideoSettingsUi", "Quality:")) self.label_4.setText(_translate("VideoSettingsUi", "Container Format:")) PyQt-gpl-5.5.1/examples/multimediawidgets/camera/videosettings.ui0000644000076500000240000001410012613140041025257 0ustar philstaff00000000000000 VideoSettingsUi 0 0 561 369 Dialog QFrame::NoFrame true 0 0 543 250 Audio Audio Codec: Sample Rate: Quality: 4 Qt::Horizontal Video Resolution: Framerate: Video Codec: Quality: 4 Qt::Horizontal Container Format: Qt::Vertical 20 14 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() VideoSettingsUi accept() 322 272 44 230 buttonBox rejected() VideoSettingsUi reject() 405 262 364 227 PyQt-gpl-5.5.1/examples/multimediawidgets/player.py0000755000076500000240000006116612613140041022470 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtSignal, pyqtSlot, Q_ARG, QAbstractItemModel, QFileInfo, qFuzzyCompare, QMetaObject, QModelIndex, QObject, Qt, QThread, QTime, QUrl) from PyQt5.QtGui import QColor, qGray, QImage, QPainter, QPalette from PyQt5.QtMultimedia import (QAbstractVideoBuffer, QMediaContent, QMediaMetaData, QMediaPlayer, QMediaPlaylist, QVideoFrame, QVideoProbe) from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QFileDialog, QFormLayout, QHBoxLayout, QLabel, QListView, QMessageBox, QPushButton, QSizePolicy, QSlider, QStyle, QToolButton, QVBoxLayout, QWidget) class VideoWidget(QVideoWidget): def __init__(self, parent=None): super(VideoWidget, self).__init__(parent) self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) p = self.palette() p.setColor(QPalette.Window, Qt.black) self.setPalette(p) self.setAttribute(Qt.WA_OpaquePaintEvent) def keyPressEvent(self, event): if event.key() == Qt.Key_Escape and self.isFullScreen(): self.setFullScreen(False) event.accept() elif event.key() == Qt.Key_Enter and event.modifiers() & Qt.Key_Alt: self.setFullScreen(not self.isFullScreen()) event.accept() else: super(VideoWidget, self).keyPressEvent(event) def mouseDoubleClickEvent(self, event): self.setFullScreen(not self.isFullScreen()) event.accept() class PlaylistModel(QAbstractItemModel): Title, ColumnCount = range(2) def __init__(self, parent=None): super(PlaylistModel, self).__init__(parent) self.m_playlist = None def rowCount(self, parent=QModelIndex()): return self.m_playlist.mediaCount() if self.m_playlist is not None and not parent.isValid() else 0 def columnCount(self, parent=QModelIndex()): return self.ColumnCount if not parent.isValid() else 0 def index(self, row, column, parent=QModelIndex()): return self.createIndex(row, column) if self.m_playlist is not None and not parent.isValid() and row >= 0 and row < self.m_playlist.mediaCount() and column >= 0 and column < self.ColumnCount else QModelIndex() def parent(self, child): return QModelIndex() def data(self, index, role=Qt.DisplayRole): if index.isValid() and role == Qt.DisplayRole: if index.column() == self.Title: location = self.m_playlist.media(index.row()).canonicalUrl() return QFileInfo(location.path()).fileName() return self.m_data[index] return None def playlist(self): return self.m_playlist def setPlaylist(self, playlist): if self.m_playlist is not None: self.m_playlist.mediaAboutToBeInserted.disconnect( self.beginInsertItems) self.m_playlist.mediaInserted.disconnect(self.endInsertItems) self.m_playlist.mediaAboutToBeRemoved.disconnect( self.beginRemoveItems) self.m_playlist.mediaRemoved.disconnect(self.endRemoveItems) self.m_playlist.mediaChanged.disconnect(self.changeItems) self.beginResetModel() self.m_playlist = playlist if self.m_playlist is not None: self.m_playlist.mediaAboutToBeInserted.connect( self.beginInsertItems) self.m_playlist.mediaInserted.connect(self.endInsertItems) self.m_playlist.mediaAboutToBeRemoved.connect( self.beginRemoveItems) self.m_playlist.mediaRemoved.connect(self.endRemoveItems) self.m_playlist.mediaChanged.connect(self.changeItems) self.endResetModel() def beginInsertItems(self, start, end): self.beginInsertRows(QModelIndex(), start, end) def endInsertItems(self): self.endInsertRows() def beginRemoveItems(self, start, end): self.beginRemoveRows(QModelIndex(), start, end) def endRemoveItems(self): self.endRemoveRows() def changeItems(self, start, end): self.dataChanged.emit(self.index(start, 0), self.index(end, self.ColumnCount)) class PlayerControls(QWidget): play = pyqtSignal() pause = pyqtSignal() stop = pyqtSignal() next = pyqtSignal() previous = pyqtSignal() changeVolume = pyqtSignal(int) changeMuting = pyqtSignal(bool) changeRate = pyqtSignal(float) def __init__(self, parent=None): super(PlayerControls, self).__init__(parent) self.playerState = QMediaPlayer.StoppedState self.playerMuted = False self.playButton = QToolButton(clicked=self.playClicked) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.stopButton = QToolButton(clicked=self.stop) self.stopButton.setIcon(self.style().standardIcon(QStyle.SP_MediaStop)) self.stopButton.setEnabled(False) self.nextButton = QToolButton(clicked=self.next) self.nextButton.setIcon( self.style().standardIcon(QStyle.SP_MediaSkipForward)) self.previousButton = QToolButton(clicked=self.previous) self.previousButton.setIcon( self.style().standardIcon(QStyle.SP_MediaSkipBackward)) self.muteButton = QToolButton(clicked=self.muteClicked) self.muteButton.setIcon( self.style().standardIcon(QStyle.SP_MediaVolume)) self.volumeSlider = QSlider(Qt.Horizontal, sliderMoved=self.changeVolume) self.volumeSlider.setRange(0, 100) self.rateBox = QComboBox(activated=self.updateRate) self.rateBox.addItem("0.5x", 0.5) self.rateBox.addItem("1.0x", 1.0) self.rateBox.addItem("2.0x", 2.0) self.rateBox.setCurrentIndex(1) layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.stopButton) layout.addWidget(self.previousButton) layout.addWidget(self.playButton) layout.addWidget(self.nextButton) layout.addWidget(self.muteButton) layout.addWidget(self.volumeSlider) layout.addWidget(self.rateBox) self.setLayout(layout) def state(self): return self.playerState def setState(self,state): if state != self.playerState: self.playerState = state if state == QMediaPlayer.StoppedState: self.stopButton.setEnabled(False) self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) elif state == QMediaPlayer.PlayingState: self.stopButton.setEnabled(True) self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) elif state == QMediaPlayer.PausedState: self.stopButton.setEnabled(True) self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def volume(self): return self.volumeSlider.value() def setVolume(self, volume): self.volumeSlider.setValue(volume) def isMuted(self): return self.playerMuted def setMuted(self, muted): if muted != self.playerMuted: self.playerMuted = muted self.muteButton.setIcon( self.style().standardIcon( QStyle.SP_MediaVolumeMuted if muted else QStyle.SP_MediaVolume)) def playClicked(self): if self.playerState in (QMediaPlayer.StoppedState, QMediaPlayer.PausedState): self.play.emit() elif self.playerState == QMediaPlayer.PlayingState: self.pause.emit() def muteClicked(self): self.changeMuting.emit(not self.playerMuted) def playbackRate(self): return self.rateBox.itemData(self.rateBox.currentIndex()) def setPlaybackRate(self, rate): for i in range(self.rateBox.count()): if qFuzzyCompare(rate, self.rateBox.itemData(i)): self.rateBox.setCurrentIndex(i) return self.rateBox.addItem("%dx" % rate, rate) self.rateBox.setCurrentIndex(self.rateBox.count() - 1) def updateRate(self): self.changeRate.emit(self.playbackRate()) class FrameProcessor(QObject): histogramReady = pyqtSignal(list) @pyqtSlot(QVideoFrame, int) def processFrame(self, frame, levels): histogram = [0.0] * levels if levels and frame.map(QAbstractVideoBuffer.ReadOnly): pixelFormat = frame.pixelFormat() if pixelFormat == QVideoFrame.Format_YUV420P or pixelFormat == QVideoFrame.Format_NV12: # Process YUV data. bits = frame.bits() for idx in range(frame.height() * frame.width()): histogram[(bits[idx] * levels) >> 8] += 1.0 else: imageFormat = QVideoFrame.imageFormatFromPixelFormat(pixelFormat) if imageFormat != QImage.Format_Invalid: # Process RGB data. image = QImage(frame.bits(), frame.width(), frame.height(), imageFormat) for y in range(image.height()): for x in range(image.width()): pixel = image.pixel(x, y) histogram[(qGray(pixel) * levels) >> 8] += 1.0 # Find the maximum value. maxValue = 0.0 for value in histogram: if value > maxValue: maxValue = value # Normalise the values between 0 and 1. if maxValue > 0.0: for i in range(len(histogram)): histogram[i] /= maxValue frame.unmap() self.histogramReady.emit(histogram) class HistogramWidget(QWidget): def __init__(self, parent=None): super(HistogramWidget, self).__init__(parent) self.m_levels = 128 self.m_isBusy = False self.m_histogram = [] self.m_processor = FrameProcessor() self.m_processorThread = QThread() self.m_processor.moveToThread(self.m_processorThread) self.m_processor.histogramReady.connect(self.setHistogram) def __del__(self): self.m_processorThread.quit() self.m_processorThread.wait(10000) def setLevels(self, levels): self.m_levels = levels def processFrame(self, frame): if self.m_isBusy: return self.m_isBusy = True QMetaObject.invokeMethod(self.m_processor, 'processFrame', Qt.QueuedConnection, Q_ARG(QVideoFrame, frame), Q_ARG(int, self.m_levels)) @pyqtSlot(list) def setHistogram(self, histogram): self.m_isBusy = False self.m_histogram = list(histogram) self.update() def paintEvent(self, event): painter = QPainter(self) if len(self.m_histogram) == 0: painter.fillRect(0, 0, self.width(), self.height(), QColor.fromRgb(0, 0, 0)) return barWidth = self.width() / float(len(self.m_histogram)) for i, value in enumerate(self.m_histogram): h = value * self.height() # Draw the level. painter.fillRect(barWidth * i, self.height() - h, barWidth * (i + 1), self.height(), Qt.red) # Clear the rest of the control. painter.fillRect(barWidth * i, 0, barWidth * (i + 1), self.height() - h, Qt.black) class Player(QWidget): fullScreenChanged = pyqtSignal(bool) def __init__(self, playlist, parent=None): super(Player, self).__init__(parent) self.colorDialog = None self.trackInfo = "" self.statusInfo = "" self.duration = 0 self.player = QMediaPlayer() self.playlist = QMediaPlaylist() self.player.setPlaylist(self.playlist) self.player.durationChanged.connect(self.durationChanged) self.player.positionChanged.connect(self.positionChanged) self.player.metaDataChanged.connect(self.metaDataChanged) self.playlist.currentIndexChanged.connect(self.playlistPositionChanged) self.player.mediaStatusChanged.connect(self.statusChanged) self.player.bufferStatusChanged.connect(self.bufferingProgress) self.player.videoAvailableChanged.connect(self.videoAvailableChanged) self.player.error.connect(self.displayErrorMessage) self.videoWidget = VideoWidget() self.player.setVideoOutput(self.videoWidget) self.playlistModel = PlaylistModel() self.playlistModel.setPlaylist(self.playlist) self.playlistView = QListView() self.playlistView.setModel(self.playlistModel) self.playlistView.setCurrentIndex( self.playlistModel.index(self.playlist.currentIndex(), 0)) self.playlistView.activated.connect(self.jump) self.slider = QSlider(Qt.Horizontal) self.slider.setRange(0, self.player.duration() / 1000) self.labelDuration = QLabel() self.slider.sliderMoved.connect(self.seek) self.labelHistogram = QLabel() self.labelHistogram.setText("Histogram:") self.histogram = HistogramWidget() histogramLayout = QHBoxLayout() histogramLayout.addWidget(self.labelHistogram) histogramLayout.addWidget(self.histogram, 1) self.probe = QVideoProbe() self.probe.videoFrameProbed.connect(self.histogram.processFrame) self.probe.setSource(self.player) openButton = QPushButton("Open", clicked=self.open) controls = PlayerControls() controls.setState(self.player.state()) controls.setVolume(self.player.volume()) controls.setMuted(controls.isMuted()) controls.play.connect(self.player.play) controls.pause.connect(self.player.pause) controls.stop.connect(self.player.stop) controls.next.connect(self.playlist.next) controls.previous.connect(self.previousClicked) controls.changeVolume.connect(self.player.setVolume) controls.changeMuting.connect(self.player.setMuted) controls.changeRate.connect(self.player.setPlaybackRate) controls.stop.connect(self.videoWidget.update) self.player.stateChanged.connect(controls.setState) self.player.volumeChanged.connect(controls.setVolume) self.player.mutedChanged.connect(controls.setMuted) self.fullScreenButton = QPushButton("FullScreen") self.fullScreenButton.setCheckable(True) self.colorButton = QPushButton("Color Options...") self.colorButton.setEnabled(False) self.colorButton.clicked.connect(self.showColorDialog) displayLayout = QHBoxLayout() displayLayout.addWidget(self.videoWidget, 2) displayLayout.addWidget(self.playlistView) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addStretch(1) controlLayout.addWidget(controls) controlLayout.addStretch(1) controlLayout.addWidget(self.fullScreenButton) controlLayout.addWidget(self.colorButton) layout = QVBoxLayout() layout.addLayout(displayLayout) hLayout = QHBoxLayout() hLayout.addWidget(self.slider) hLayout.addWidget(self.labelDuration) layout.addLayout(hLayout) layout.addLayout(controlLayout) layout.addLayout(histogramLayout) self.setLayout(layout) if not self.player.isAvailable(): QMessageBox.warning(self, "Service not available", "The QMediaPlayer object does not have a valid service.\n" "Please check the media service plugins are installed.") controls.setEnabled(False) self.playlistView.setEnabled(False) openButton.setEnabled(False) self.colorButton.setEnabled(False) self.fullScreenButton.setEnabled(False) self.metaDataChanged() self.addToPlaylist(playlist) def open(self): fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Files") self.addToPlaylist(fileNames) def addToPlaylist(self, fileNames): for name in fileNames: fileInfo = QFileInfo(name) if fileInfo.exists(): url = QUrl.fromLocalFile(fileInfo.absoluteFilePath()) if fileInfo.suffix().lower() == 'm3u': self.playlist.load(url) else: self.playlist.addMedia(QMediaContent(url)) else: url = QUrl(name) if url.isValid(): self.playlist.addMedia(QMediaContent(url)) def durationChanged(self, duration): duration /= 1000 self.duration = duration self.slider.setMaximum(duration) def positionChanged(self, progress): progress /= 1000 if not self.slider.isSliderDown(): self.slider.setValue(progress) self.updateDurationInfo(progress) def metaDataChanged(self): if self.player.isMetaDataAvailable(): self.setTrackInfo("%s - %s" % ( self.player.metaData(QMediaMetaData.AlbumArtist), self.player.metaData(QMediaMetaData.Title))) def previousClicked(self): # Go to the previous track if we are within the first 5 seconds of # playback. Otherwise, seek to the beginning. if self.player.position() <= 5000: self.playlist.previous() else: self.player.setPosition(0) def jump(self, index): if index.isValid(): self.playlist.setCurrentIndex(index.row()) self.player.play() def playlistPositionChanged(self, position): self.playlistView.setCurrentIndex( self.playlistModel.index(position, 0)) def seek(self, seconds): self.player.setPosition(seconds * 1000) def statusChanged(self, status): self.handleCursor(status) if status == QMediaPlayer.LoadingMedia: self.setStatusInfo("Loading...") elif status == QMediaPlayer.StalledMedia: self.setStatusInfo("Media Stalled") elif status == QMediaPlayer.EndOfMedia: QApplication.alert(self) elif status == QMediaPlayer.InvalidMedia: self.displayErrorMessage() else: self.setStatusInfo("") def handleCursor(self, status): if status in (QMediaPlayer.LoadingMedia, QMediaPlayer.BufferingMedia, QMediaPlayer.StalledMedia): self.setCursor(Qt.BusyCursor) else: self.unsetCursor() def bufferingProgress(self, progress): self.setStatusInfo("Buffering %d%" % progress) def videoAvailableChanged(self, available): if available: self.fullScreenButton.clicked.connect( self.videoWidget.setFullScreen) self.videoWidget.fullScreenChanged.connect( self.fullScreenButton.setChecked) if self.fullScreenButton.isChecked(): self.videoWidget.setFullScreen(True) else: self.fullScreenButton.clicked.disconnect( self.videoWidget.setFullScreen) self.videoWidget.fullScreenChanged.disconnect( self.fullScreenButton.setChecked) self.videoWidget.setFullScreen(False) self.colorButton.setEnabled(available) def setTrackInfo(self, info): self.trackInfo = info if self.statusInfo != "": self.setWindowTitle("%s | %s" % (self.trackInfo, self.statusInfo)) else: self.setWindowTitle(self.trackInfo) def setStatusInfo(self, info): self.statusInfo = info if self.statusInfo != "": self.setWindowTitle("%s | %s" % (self.trackInfo, self.statusInfo)) else: self.setWindowTitle(self.trackInfo) def displayErrorMessage(self): self.setStatusInfo(self.player.errorString()) def updateDurationInfo(self, currentInfo): duration = self.duration if currentInfo or duration: currentTime = QTime((currentInfo/3600)%60, (currentInfo/60)%60, currentInfo%60, (currentInfo*1000)%1000) totalTime = QTime((duration/3600)%60, (duration/60)%60, duration%60, (duration*1000)%1000); format = 'hh:mm:ss' if duration > 3600 else 'mm:ss' tStr = currentTime.toString(format) + " / " + totalTime.toString(format) else: tStr = "" self.labelDuration.setText(tStr) def showColorDialog(self): if self.colorDialog is None: brightnessSlider = QSlider(Qt.Horizontal) brightnessSlider.setRange(-100, 100) brightnessSlider.setValue(self.videoWidget.brightness()) brightnessSlider.sliderMoved.connect( self.videoWidget.setBrightness) self.videoWidget.brightnessChanged.connect( brightnessSlider.setValue) contrastSlider = QSlider(Qt.Horizontal) contrastSlider.setRange(-100, 100) contrastSlider.setValue(self.videoWidget.contrast()) contrastSlider.sliderMoved.connect(self.videoWidget.setContrast) self.videoWidget.contrastChanged.connect(contrastSlider.setValue) hueSlider = QSlider(Qt.Horizontal) hueSlider.setRange(-100, 100) hueSlider.setValue(self.videoWidget.hue()) hueSlider.sliderMoved.connect(self.videoWidget.setHue) self.videoWidget.hueChanged.connect(hueSlider.setValue) saturationSlider = QSlider(Qt.Horizontal) saturationSlider.setRange(-100, 100) saturationSlider.setValue(self.videoWidget.saturation()) saturationSlider.sliderMoved.connect( self.videoWidget.setSaturation) self.videoWidget.saturationChanged.connect( saturationSlider.setValue) layout = QFormLayout() layout.addRow("Brightness", brightnessSlider) layout.addRow("Contrast", contrastSlider) layout.addRow("Hue", hueSlider) layout.addRow("Saturation", saturationSlider) button = QPushButton("Close") layout.addRow(button) self.colorDialog = QDialog(self) self.colorDialog.setWindowTitle("Color Options") self.colorDialog.setLayout(layout) button.clicked.connect(self.colorDialog.close) self.colorDialog.show() if __name__ == '__main__': import sys app = QApplication(sys.argv) player = Player(sys.argv[1:]) player.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/multimediawidgets/README0000644000076500000240000000137112613140041021467 0ustar philstaff00000000000000PyQt contains classes that provide support for audio, video, radio and cameras. The QtMultimediaWidgets module allows them to be used in widget-based applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/multimediawidgets/videographicsitem.py0000755000076500000240000001313512613140041024673 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, QSize, QSizeF, Qt, QUrl from PyQt5.QtGui import QTransform from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer from PyQt5.QtMultimediaWidgets import QGraphicsVideoItem from PyQt5.QtWidgets import (QApplication, QFileDialog, QGraphicsScene, QGraphicsView, QHBoxLayout, QPushButton, QSlider, QStyle, QVBoxLayout, QWidget) class VideoPlayer(QWidget): def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.videoItem = QGraphicsVideoItem() self.videoItem.setSize(QSizeF(640, 480)) scene = QGraphicsScene(self) graphicsView = QGraphicsView(scene) scene.addItem(self.videoItem) rotateSlider = QSlider(Qt.Horizontal) rotateSlider.setRange(-180, 180) rotateSlider.setValue(0) rotateSlider.valueChanged.connect(self.rotateVideo) openButton = QPushButton("Open...") openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(graphicsView) layout.addWidget(rotateSlider) layout.addLayout(controlLayout) self.setLayout(layout) self.mediaPlayer.setVideoOutput(self.videoItem) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) def sizeHint(self): return QSize(800, 600) def openFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath()) if fileName != '': self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(fileName))) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def rotateVideo(self, angle): x = self.videoItem.boundingRect().width() / 2.0 y = self.videoItem.boundingRect().height() / 2.0 self.videoItem.setTransform( QTransform().translate(x, y).rotate(angle).translate(-x, -y)) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/multimediawidgets/videowidget.py0000755000076500000240000001232612613140041023500 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, Qt, QUrl from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget) class VideoPlayer(QWidget): def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) videoWidget = QVideoWidget() openButton = QPushButton("Open...") openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) self.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) def openFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath()) if fileName != '': self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(fileName))) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def handleError(self): self.playButton.setEnabled(False) self.errorLabel.setText("Error: " + self.mediaPlayer.errorString()) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.resize(320, 240) player.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/network/0000755000076500000240000000000012613140041016555 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/network/blockingfortuneclient.py0000755000076500000240000002014612613140041023527 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtSignal, QDataStream, QMutex, QMutexLocker, QThread, QWaitCondition) from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import (QApplication, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QWidget) from PyQt5.QtNetwork import (QAbstractSocket, QHostAddress, QNetworkInterface, QTcpSocket) class FortuneThread(QThread): newFortune = pyqtSignal(str) error = pyqtSignal(int, str) def __init__(self, parent=None): super(FortuneThread, self).__init__(parent) self.quit = False self.hostName = '' self.cond = QWaitCondition() self.mutex = QMutex() self.port = 0 def __del__(self): self.mutex.lock() self.quit = True self.cond.wakeOne() self.mutex.unlock() self.wait() def requestNewFortune(self, hostname, port): locker = QMutexLocker(self.mutex) self.hostName = hostname self.port = port if not self.isRunning(): self.start() else: self.cond.wakeOne() def run(self): self.mutex.lock() serverName = self.hostName serverPort = self.port self.mutex.unlock() while not self.quit: Timeout = 5 * 1000 socket = QTcpSocket() socket.connectToHost(serverName, serverPort) if not socket.waitForConnected(Timeout): self.error.emit(socket.error(), socket.errorString()) return while socket.bytesAvailable() < 2: if not socket.waitForReadyRead(Timeout): self.error.emit(socket.error(), socket.errorString()) return instr = QDataStream(socket) instr.setVersion(QDataStream.Qt_4_0) blockSize = instr.readUInt16() while socket.bytesAvailable() < blockSize: if not socket.waitForReadyRead(Timeout): self.error.emit(socket.error(), socket.errorString()) return self.mutex.lock() fortune = instr.readQString() self.newFortune.emit(fortune) self.cond.wait(self.mutex) serverName = self.hostName serverPort = self.port self.mutex.unlock() class BlockingClient(QWidget): def __init__(self, parent=None): super(BlockingClient, self).__init__(parent) self.thread = FortuneThread() self.currentFortune = '' hostLabel = QLabel("&Server name:") portLabel = QLabel("S&erver port:") for ipAddress in QNetworkInterface.allAddresses(): if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: break else: ipAddress = QHostAddress(QHostAddress.LocalHost) ipAddress = ipAddress.toString() self.hostLineEdit = QLineEdit(ipAddress) self.portLineEdit = QLineEdit() self.portLineEdit.setValidator(QIntValidator(1, 65535, self)) hostLabel.setBuddy(self.hostLineEdit) portLabel.setBuddy(self.portLineEdit) self.statusLabel = QLabel( "This example requires that you run the Fortune Server example as well.") self.statusLabel.setWordWrap(True) self.getFortuneButton = QPushButton("Get Fortune") self.getFortuneButton.setDefault(True) self.getFortuneButton.setEnabled(False) quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.getFortuneButton.clicked.connect(self.requestNewFortune) quitButton.clicked.connect(self.close) self.hostLineEdit.textChanged.connect(self.enableGetFortuneButton) self.portLineEdit.textChanged.connect(self.enableGetFortuneButton) self.thread.newFortune.connect(self.showFortune) self.thread.error.connect(self.displayError) mainLayout = QGridLayout() mainLayout.addWidget(hostLabel, 0, 0) mainLayout.addWidget(self.hostLineEdit, 0, 1) mainLayout.addWidget(portLabel, 1, 0) mainLayout.addWidget(self.portLineEdit, 1, 1) mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Blocking Fortune Client") self.portLineEdit.setFocus() def requestNewFortune(self): self.getFortuneButton.setEnabled(False) self.thread.requestNewFortune(self.hostLineEdit.text(), int(self.portLineEdit.text())) def showFortune(self, nextFortune): if nextFortune == self.currentFortune: self.requestNewFortune() return self.currentFortune = nextFortune self.statusLabel.setText(self.currentFortune) self.getFortuneButton.setEnabled(True) def displayError(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.") 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.") else: QMessageBox.information(self, "Blocking Fortune Client", "The following error occurred: %s." % message) self.getFortuneButton.setEnabled(True) def enableGetFortuneButton(self): self.getFortuneButton.setEnabled(self.hostLineEdit.text() != '' and self.portLineEdit.text() != '') if __name__ == '__main__': import sys app = QApplication(sys.argv) client = BlockingClient() client.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/network/broadcastreceiver.py0000755000076500000240000000702312613140041022623 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QUdpSocket class Receiver(QDialog): def __init__(self, parent=None): super(Receiver, self).__init__(parent) self.statusLabel = QLabel("Listening for broadcasted messages") quitButton = QPushButton("&Quit") self.udpSocket = QUdpSocket(self) self.udpSocket.bind(45454) self.udpSocket.readyRead.connect(self.processPendingDatagrams) quitButton.clicked.connect(self.close) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Broadcast Receiver") def processPendingDatagrams(self): while self.udpSocket.hasPendingDatagrams(): datagram, host, port = self.udpSocket.readDatagram(self.udpSocket.pendingDatagramSize()) try: # Python v3. datagram = str(datagram, encoding='ascii') except TypeError: # Python v2. pass self.statusLabel.setText("Received datagram: \"%s\"" % datagram) if __name__ == '__main__': import sys app = QApplication(sys.argv) receiver = Receiver() receiver.show() sys.exit(receiver.exec_()) PyQt-gpl-5.5.1/examples/network/broadcastsender.py0000755000076500000240000000725312613140041022304 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QTimer from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QLabel, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QHostAddress, QUdpSocket class Sender(QDialog): def __init__(self, parent=None): super(Sender, self).__init__(parent) self.statusLabel = QLabel("Ready to broadcast datagrams on port 45454") self.startButton = QPushButton("&Start") quitButton = QPushButton("&Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.startButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.timer = QTimer(self) self.udpSocket = QUdpSocket(self) self.messageNo = 1 self.startButton.clicked.connect(self.startBroadcasting) quitButton.clicked.connect(self.close) self.timer.timeout.connect(self.broadcastDatagramm) mainLayout = QVBoxLayout() mainLayout.addWidget(self.statusLabel) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Broadcast Sender") def startBroadcasting(self): self.startButton.setEnabled(False) self.timer.start(1000) def broadcastDatagramm(self): self.statusLabel.setText("Now broadcasting datagram %d" % self.messageNo) datagram = "Broadcast message %d" % self.messageNo self.udpSocket.writeDatagram(datagram, QHostAddress(QHostAddress.Broadcast), 45454) self.messageNo += 1 if __name__ == '__main__': import sys app = QApplication(sys.argv) sender = Sender() sender.show() sys.exit(sender.exec_()) PyQt-gpl-5.5.1/examples/network/fortuneclient.py0000755000076500000240000002122412613140041022014 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDataStream, QSettings, QTimer from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton) from PyQt5.QtNetwork import (QAbstractSocket, QHostInfo, QNetworkConfiguration, QNetworkConfigurationManager, QNetworkInterface, QNetworkSession, QTcpSocket) class Client(QDialog): def __init__(self, parent=None): super(Client, self).__init__(parent) self.networkSession = None self.blockSize = 0 self.currentFortune = '' hostLabel = QLabel("&Server name:") portLabel = QLabel("S&erver port:") self.hostCombo = QComboBox() self.hostCombo.setEditable(True) name = QHostInfo.localHostName() if name != '': self.hostCombo.addItem(name) domain = QHostInfo.localDomainName() if domain != '': self.hostCombo.addItem(name + '.' + domain) if name != 'localhost': self.hostCombo.addItem('localhost') ipAddressesList = QNetworkInterface.allAddresses() for ipAddress in ipAddressesList: if not ipAddress.isLoopback(): self.hostCombo.addItem(ipAddress.toString()) for ipAddress in ipAddressesList: if ipAddress.isLoopback(): self.hostCombo.addItem(ipAddress.toString()) self.portLineEdit = QLineEdit() self.portLineEdit.setValidator(QIntValidator(1, 65535, self)) hostLabel.setBuddy(self.hostCombo) portLabel.setBuddy(self.portLineEdit) self.statusLabel = QLabel("This examples requires that you run " "the Fortune Server example as well.") self.getFortuneButton = QPushButton("Get Fortune") self.getFortuneButton.setDefault(True) self.getFortuneButton.setEnabled(False) quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.tcpSocket = QTcpSocket(self) self.hostCombo.editTextChanged.connect(self.enableGetFortuneButton) self.portLineEdit.textChanged.connect(self.enableGetFortuneButton) self.getFortuneButton.clicked.connect(self.requestNewFortune) quitButton.clicked.connect(self.close) self.tcpSocket.readyRead.connect(self.readFortune) self.tcpSocket.error.connect(self.displayError) mainLayout = QGridLayout() mainLayout.addWidget(hostLabel, 0, 0) mainLayout.addWidget(self.hostCombo, 0, 1) mainLayout.addWidget(portLabel, 1, 0) mainLayout.addWidget(self.portLineEdit, 1, 1) mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Fortune Client") self.portLineEdit.setFocus() manager = QNetworkConfigurationManager() if manager.capabilities() & QNetworkConfigurationManager.NetworkSessionRequired: settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') id = settings.value('DefaultNetworkConfiguration') settings.endGroup() config = manager.configurationFromIdentifier(id) if config.state() & QNetworkConfiguration.Discovered == 0: config = manager.defaultConfiguration() self.networkSession = QNetworkSession(config, self) self.networkSession.opened.connect(self.sessionOpened) self.getFortuneButton.setEnabled(False) self.statusLabel.setText("Opening network session.") self.networkSession.open() def requestNewFortune(self): self.getFortuneButton.setEnabled(False) self.blockSize = 0 self.tcpSocket.abort() self.tcpSocket.connectToHost(self.hostCombo.currentText(), int(self.portLineEdit.text())) def readFortune(self): instr = QDataStream(self.tcpSocket) instr.setVersion(QDataStream.Qt_4_0) if self.blockSize == 0: if self.tcpSocket.bytesAvailable() < 2: return self.blockSize = instr.readUInt16() if self.tcpSocket.bytesAvailable() < self.blockSize: return nextFortune = instr.readQString() if nextFortune == self.currentFortune: QTimer.singleShot(0, self.requestNewFortune) return self.currentFortune = nextFortune self.statusLabel.setText(self.currentFortune) self.getFortuneButton.setEnabled(True) def displayError(self, socketError): if socketError == QAbstractSocket.RemoteHostClosedError: pass elif socketError == QAbstractSocket.HostNotFoundError: QMessageBox.information(self, "Fortune Client", "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.") else: QMessageBox.information(self, "Fortune Client", "The following error occurred: %s." % self.tcpSocket.errorString()) self.getFortuneButton.setEnabled(True) def enableGetFortuneButton(self): self.getFortuneButton.setEnabled( (self.networkSession is None or self.networkSession.isOpen()) and self.hostCombo.currentText() != '' and self.portLineEdit.text() != '') def sessionOpened(self): config = self.networkSession.configuration() if config.type() == QNetworkConfiguration.UserChoice: id = self.networkSession.sessionProperty('UserChoiceConfiguration') else: id = config.identifier() settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') settings.setValue('DefaultNetworkConfiguration', id) settings.endGroup() self.statusLabel.setText("This examples requires that you run the " "Fortune Server example as well.") self.enableGetFortuneButton() if __name__ == '__main__': import sys app = QApplication(sys.argv) client = Client() client.show() sys.exit(client.exec_()) PyQt-gpl-5.5.1/examples/network/fortuneserver.py0000755000076500000240000001444712613140041022055 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 random from PyQt5.QtCore import QByteArray, QDataStream, QIODevice, QSettings from PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, QMessageBox, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import (QHostAddress, QNetworkConfiguration, QNetworkConfigurationManager, QNetworkInterface, QNetworkSession, QTcpServer) class Server(QDialog): 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.") def __init__(self, parent=None): super(Server, self).__init__(parent) self.tcpServer = None self.networkSession = None self.statusLabel = QLabel() quitButton = QPushButton("Quit") quitButton.setAutoDefault(False) manager = QNetworkConfigurationManager() if manager.capabilities() & QNetworkConfigurationManager.NetworkSessionRequired: settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') id = settings.value('DefaultNetworkConfiguration', '') settings.endGroup() config = manager.configurationFromIdentifier(id) if config.state() & QNetworkConfiguration.Discovered == 0: config = manager.defaultConfiguration() self.networkSession = QNetworkSession(config, self) self.networkSession.opened.connect(self.sessionOpened) self.statusLabel.setText("Opening network session.") self.networkSession.open() else: self.sessionOpened() quitButton.clicked.connect(self.close) self.tcpServer.newConnection.connect(self.sendFortune) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Fortune Server") def sessionOpened(self): if self.networkSession is not None: config = self.networkSession.configuration() if config.type() == QNetworkConfiguration.UserChoice: id = self.networkSession.sessionProperty('UserChoiceConfiguration') else: id = config.identifier() settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') settings.setValue('DefaultNetworkConfiguration', id) settings.endGroup(); self.tcpServer = QTcpServer(self) if not self.tcpServer.listen(): QMessageBox.critical(self, "Fortune Server", "Unable to start the server: %s." % self.tcpServer.errorString()) self.close() return for ipAddress in QNetworkInterface.allAddresses(): if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: break else: ipAddress = QHostAddress(QHostAddress.LocalHost) ipAddress = ipAddress.toString() self.statusLabel.setText("The server is running on\n\nIP: %s\nport %d\n\n" "Run the Fortune Client example now." % (ipAddress, self.tcpServer.serverPort())) def sendFortune(self): fortune = self.FORTUNES[random.randint(0, len(self.FORTUNES) - 1)] block = QByteArray() out = QDataStream(block, QIODevice.WriteOnly) out.setVersion(QDataStream.Qt_4_0) out.writeUInt16(0) out.writeQString(fortune) out.device().seek(0) out.writeUInt16(block.size() - 2) clientConnection = self.tcpServer.nextPendingConnection() clientConnection.disconnected.connect(clientConnection.deleteLater) clientConnection.write(block) clientConnection.disconnectFromHost() if __name__ == '__main__': import sys app = QApplication(sys.argv) server = Server() random.seed(None) sys.exit(server.exec_()) PyQt-gpl-5.5.1/examples/network/http/0000755000076500000240000000000012613140041017534 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/network/http/authenticationdialog.ui0000644000076500000240000000604112613140041024273 0ustar philstaff00000000000000 Dialog 0 0 389 243 Http authentication required You need to supply a Username and a Password to access this site false Username: Password: Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok Site: 75 true %1 at %2 true Qt::Vertical 20 40 buttonBox accepted() Dialog accept() 248 254 157 274 buttonBox rejected() Dialog reject() 316 260 286 274 PyQt-gpl-5.5.1/examples/network/http/http.py0000755000076500000240000002163412613140041021076 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2010 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, QFile, QFileInfo, QIODevice, QUrl from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QProgressDialog, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest class HttpWindow(QDialog): def __init__(self, parent=None): super(HttpWindow, self).__init__(parent) self.url = QUrl() self.qnam = QNetworkAccessManager() self.reply = None self.outFile = None self.httpGetId = 0 self.httpRequestAborted = False self.urlLineEdit = QLineEdit('https://www.qt.io') urlLabel = QLabel("&URL:") urlLabel.setBuddy(self.urlLineEdit) self.statusLabel = QLabel( "Please enter the URL of a file you want to download.") self.statusLabel.setWordWrap(True) self.downloadButton = QPushButton("Download") self.downloadButton.setDefault(True) self.quitButton = QPushButton("Quit") self.quitButton.setAutoDefault(False) buttonBox = QDialogButtonBox() buttonBox.addButton(self.downloadButton, QDialogButtonBox.ActionRole) buttonBox.addButton(self.quitButton, QDialogButtonBox.RejectRole) self.progressDialog = QProgressDialog(self) self.urlLineEdit.textChanged.connect(self.enableDownloadButton) self.qnam.authenticationRequired.connect( self.slotAuthenticationRequired) self.qnam.sslErrors.connect(self.sslErrors) self.progressDialog.canceled.connect(self.cancelDownload) self.downloadButton.clicked.connect(self.downloadFile) self.quitButton.clicked.connect(self.close) topLayout = QHBoxLayout() topLayout.addWidget(urlLabel) topLayout.addWidget(self.urlLineEdit) mainLayout = QVBoxLayout() mainLayout.addLayout(topLayout) mainLayout.addWidget(self.statusLabel) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("HTTP") self.urlLineEdit.setFocus() def startRequest(self, url): self.reply = self.qnam.get(QNetworkRequest(url)) self.reply.finished.connect(self.httpFinished) self.reply.readyRead.connect(self.httpReadyRead) self.reply.downloadProgress.connect(self.updateDataReadProgress) def downloadFile(self): self.url = QUrl(self.urlLineEdit.text()) fileInfo = QFileInfo(self.url.path()) fileName = fileInfo.fileName() if not fileName: fileName = 'index.html' if QFile.exists(fileName): ret = QMessageBox.question(self, "HTTP", "There already exists a file called %s in the current " "directory. Overwrite?" % fileName, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if ret == QMessageBox.No: return QFile.remove(fileName) self.outFile = QFile(fileName) if not self.outFile.open(QIODevice.WriteOnly): QMessageBox.information(self, "HTTP", "Unable to save the file %s: %s." % (fileName, self.outFile.errorString())) self.outFile = None return self.progressDialog.setWindowTitle("HTTP") self.progressDialog.setLabelText("Downloading %s." % fileName) self.downloadButton.setEnabled(False) self.httpRequestAborted = False self.startRequest(self.url) def cancelDownload(self): self.statusLabel.setText("Download canceled.") self.httpRequestAborted = True if self.reply is not None: self.reply.abort() self.downloadButton.setEnabled(True) def httpFinished(self): if self.httpRequestAborted: if self.outFile is not None: self.outFile.close() self.outFile.remove() self.outFile = None self.reply.deleteLater() self.reply = None self.progressDialog.hide() return self.progressDialog.hide() self.outFile.flush() self.outFile.close() redirectionTarget = self.reply.attribute(QNetworkRequest.RedirectionTargetAttribute) if self.reply.error(): self.outFile.remove() QMessageBox.information(self, "HTTP", "Download failed: %s." % self.reply.errorString()) self.downloadButton.setEnabled(True) elif redirectionTarget is not None: newUrl = self.url.resolved(redirectionTarget) ret = QMessageBox.question(self, "HTTP", "Redirect to %s?" % newUrl.toString(), QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.Yes: self.url = newUrl self.reply.deleteLater() self.reply = None self.outFile.open(QIODevice.WriteOnly) self.outFile.resize(0) self.startRequest(self.url) return else: fileName = QFileInfo(QUrl(self.urlLineEdit.text()).path()).fileName() self.statusLabel.setText("Downloaded %s to %s." % (fileName, QDir.currentPath())) self.downloadButton.setEnabled(True) self.reply.deleteLater() self.reply = None self.outFile = None def httpReadyRead(self): if self.outFile is not None: self.outFile.write(self.reply.readAll()) def updateDataReadProgress(self, bytesRead, totalBytes): if self.httpRequestAborted: return self.progressDialog.setMaximum(totalBytes) self.progressDialog.setValue(bytesRead) def enableDownloadButton(self): self.downloadButton.setEnabled(self.urlLineEdit.text() != '') def slotAuthenticationRequired(self, authenticator): import os from PyQt5 import uic ui = os.path.join(os.path.dirname(__file__), 'authenticationdialog.ui') dlg = uic.loadUi(ui) dlg.adjustSize() dlg.siteDescription.setText("%s at %s" % (authenticator.realm(), self.url.host())) dlg.userEdit.setText(self.url.userName()) dlg.passwordEdit.setText(self.url.password()) if dlg.exec_() == QDialog.Accepted: authenticator.setUser(dlg.userEdit.text()) authenticator.setPassword(dlg.passwordEdit.text()) def sslErrors(self, reply, errors): errorString = ", ".join([str(error.errorString()) for error in errors]) ret = QMessageBox.warning(self, "HTTP Example", "One or more SSL errors has occurred: %s" % errorString, QMessageBox.Ignore | QMessageBox.Abort) if ret == QMessageBox.Ignore: self.reply.ignoreSslErrors() if __name__ == '__main__': import sys app = QApplication(sys.argv) httpWin = HttpWindow() httpWin.show() sys.exit(httpWin.exec_()) PyQt-gpl-5.5.1/examples/network/lightmaps.py0000644000076500000240000004040712613140041021124 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (pyqtSignal, QBasicTimer, QObject, QPoint, QPointF, QRect, QSize, QStandardPaths, Qt, QUrl) from PyQt5.QtGui import (QColor, QDesktopServices, QImage, QPainter, QPainterPath, QPixmap, QRadialGradient) from PyQt5.QtWidgets import QAction, QApplication, QMainWindow, QWidget from PyQt5.QtNetwork import (QNetworkAccessManager, QNetworkDiskCache, QNetworkRequest) # how long (milliseconds) the user need to hold (after a tap on the screen) # before triggering the magnifying glass feature # 701, a prime number, is the sum of 229, 233, 239 # (all three are also prime numbers, consecutive!) HOLD_TIME = 701 # maximum size of the magnifier # Hint: see above to find why I picked self one :) MAX_MAGNIFIER = 229 # tile size in pixels TDIM = 256 class Point(QPoint): """QPoint, that is fully qualified as a dict key""" def __init__(self, *par): if par: super(Point, self).__init__(*par) else: super(Point, self).__init__() def __hash__(self): return self.x() * 17 ^ self.y() def __repr__(self): return "Point(%s, %s)" % (self.x(), self.y()) def tileForCoordinate(lat, lng, zoom): zn = float(1 << zoom) tx = float(lng + 180.0) / 360.0 ty = (1.0 - math.log(math.tan(lat * math.pi / 180.0) + 1.0 / math.cos(lat * math.pi / 180.0)) / math.pi) / 2.0 return QPointF(tx * zn, ty * zn) def longitudeFromTile(tx, zoom): zn = float(1 << zoom) lat = tx / zn * 360.0 - 180.0 return lat def latitudeFromTile(ty, zoom): zn = float(1 << zoom) n = math.pi - 2 * math.pi * ty / zn lng = 180.0 / math.pi * math.atan(0.5 * (math.exp(n) - math.exp(-n))) return lng class SlippyMap(QObject): updated = pyqtSignal(QRect) def __init__(self, parent=None): super(SlippyMap, self).__init__(parent) self._offset = QPoint() self._tilesRect = QRect() self._tilePixmaps = {} # Point(x, y) to QPixmap mapping self._manager = QNetworkAccessManager() self._url = QUrl() # public vars self.width = 400 self.height = 300 self.zoom = 15 self.latitude = 59.9138204 self.longitude = 10.7387413 self._emptyTile = QPixmap(TDIM, TDIM) self._emptyTile.fill(Qt.lightGray) cache = QNetworkDiskCache() cache.setCacheDirectory( QStandardPaths.writableLocation(QStandardPaths.CacheLocation)) self._manager.setCache(cache) self._manager.finished.connect(self.handleNetworkData) def invalidate(self): if self.width <= 0 or self.height <= 0: return ct = tileForCoordinate(self.latitude, self.longitude, self.zoom) tx = ct.x() ty = ct.y() # top-left corner of the center tile xp = int(self.width / 2 - (tx - math.floor(tx)) * TDIM) yp = int(self.height / 2 - (ty - math.floor(ty)) * TDIM) # first tile vertical and horizontal xa = (xp + TDIM - 1) / TDIM ya = (yp + TDIM - 1) / TDIM xs = int(tx) - xa ys = int(ty) - ya # offset for top-left tile self._offset = QPoint(xp - xa * TDIM, yp - ya * TDIM) # last tile vertical and horizontal xe = int(tx) + (self.width - xp - 1) / TDIM ye = int(ty) + (self.height - yp - 1) / TDIM # build a rect self._tilesRect = QRect(xs, ys, xe - xs + 1, ye - ys + 1) if self._url.isEmpty(): self.download() self.updated.emit(QRect(0, 0, self.width, self.height)) def render(self, p, rect): for x in range(self._tilesRect.width()): for y in range(self._tilesRect.height()): tp = Point(x + self._tilesRect.left(), y + self._tilesRect.top()) box = self.tileRect(tp) if rect.intersects(box): p.drawPixmap(box, self._tilePixmaps.get(tp, self._emptyTile)) def pan(self, delta): dx = QPointF(delta) / float(TDIM) center = tileForCoordinate(self.latitude, self.longitude, self.zoom) - dx self.latitude = latitudeFromTile(center.y(), self.zoom) self.longitude = longitudeFromTile(center.x(), self.zoom) self.invalidate() # slots def handleNetworkData(self, reply): img = QImage() tp = Point(reply.request().attribute(QNetworkRequest.User)) url = reply.url() if not reply.error(): if img.load(reply, None): self._tilePixmaps[tp] = QPixmap.fromImage(img) reply.deleteLater() self.updated.emit(self.tileRect(tp)) # purge unused tiles bound = self._tilesRect.adjusted(-2, -2, 2, 2) for tp in list(self._tilePixmaps.keys()): if not bound.contains(tp): del self._tilePixmaps[tp] self.download() def download(self): grab = None for x in range(self._tilesRect.width()): for y in range(self._tilesRect.height()): tp = Point(self._tilesRect.topLeft() + QPoint(x, y)) if tp not in self._tilePixmaps: grab = QPoint(tp) break if grab is None: self._url = QUrl() return path = 'http://tile.openstreetmap.org/%d/%d/%d.png' % (self.zoom, grab.x(), grab.y()) self._url = QUrl(path) request = QNetworkRequest() request.setUrl(self._url) request.setRawHeader('User-Agent', 'Nokia (PyQt) Graphics Dojo 1.0') request.setAttribute(QNetworkRequest.User, grab) self._manager.get(request) def tileRect(self, tp): t = tp - self._tilesRect.topLeft() x = t.x() * TDIM + self._offset.x() y = t.y() * TDIM + self._offset.y() return QRect(x, y, TDIM, TDIM) class LightMaps(QWidget): def __init__(self, parent = None): super(LightMaps, self).__init__(parent) self.pressed = False self.snapped = False self.zoomed = False self.invert = False self._normalMap = SlippyMap(self) self._largeMap = SlippyMap(self) self.pressPos = QPoint() self.dragPos = QPoint() self.tapTimer = QBasicTimer() self.zoomPixmap = QPixmap() self.maskPixmap = QPixmap() self._normalMap.updated.connect(self.updateMap) self._largeMap.updated.connect(self.update) def setCenter(self, lat, lng): self._normalMap.latitude = lat self._normalMap.longitude = lng self._normalMap.invalidate() self._largeMap.invalidate() # slots def toggleNightMode(self): self.invert = not self.invert self.update() def updateMap(self, r): self.update(r) def activateZoom(self): self.zoomed = True self.tapTimer.stop() self._largeMap.zoom = self._normalMap.zoom + 1 self._largeMap.width = self._normalMap.width * 2 self._largeMap.height = self._normalMap.height * 2 self._largeMap.latitude = self._normalMap.latitude self._largeMap.longitude = self._normalMap.longitude self._largeMap.invalidate() self.update() def resizeEvent(self, event): self._normalMap.width = self.width() self._normalMap.height = self.height() self._normalMap.invalidate() self._largeMap.width = self._normalMap.width * 2 self._largeMap.height = self._normalMap.height * 2 self._largeMap.invalidate() def paintEvent(self, event): p = QPainter() p.begin(self) self._normalMap.render(p, event.rect()) p.setPen(Qt.black) p.drawText(self.rect(), Qt.AlignBottom | Qt.TextWordWrap, "Map data CCBYSA 2009 OpenStreetMap.org contributors") p.end() if self.zoomed: dim = min(self.width(), self.height()) magnifierSize = min(MAX_MAGNIFIER, dim * 2 / 3) radius = magnifierSize / 2 ring = radius - 15 box = QSize(magnifierSize, magnifierSize) # reupdate our mask if self.maskPixmap.size() != box: self.maskPixmap = QPixmap(box) self.maskPixmap.fill(Qt.transparent) g = QRadialGradient() g.setCenter(radius, radius) g.setFocalPoint(radius, radius) g.setRadius(radius) g.setColorAt(1.0, QColor(255, 255, 255, 0)) g.setColorAt(0.5, QColor(128, 128, 128, 255)) mask = QPainter(self.maskPixmap) mask.setRenderHint(QPainter.Antialiasing) mask.setCompositionMode(QPainter.CompositionMode_Source) mask.setBrush(g) mask.setPen(Qt.NoPen) mask.drawRect(self.maskPixmap.rect()) mask.setBrush(QColor(Qt.transparent)) mask.drawEllipse(g.center(), ring, ring) mask.end() center = self.dragPos - QPoint(0, radius) center += QPoint(0, radius / 2) corner = center - QPoint(radius, radius) xy = center * 2 - QPoint(radius, radius) # only set the dimension to the magnified portion if self.zoomPixmap.size() != box: self.zoomPixmap = QPixmap(box) self.zoomPixmap.fill(Qt.lightGray) if True: p = QPainter(self.zoomPixmap) p.translate(-xy) self._largeMap.render(p, QRect(xy, box)) p.end() clipPath = QPainterPath() clipPath.addEllipse(QPointF(center), ring, ring) p = QPainter(self) p.setRenderHint(QPainter.Antialiasing) p.setClipPath(clipPath) p.drawPixmap(corner, self.zoomPixmap) p.setClipping(False) p.drawPixmap(corner, self.maskPixmap) p.setPen(Qt.gray) p.drawPath(clipPath) if self.invert: p = QPainter(self) p.setCompositionMode(QPainter.CompositionMode_Difference) p.fillRect(event.rect(), Qt.white) p.end() def timerEvent(self, event): if not self.zoomed: self.activateZoom() self.update() def mousePressEvent(self, event): if event.buttons() != Qt.LeftButton: return self.pressed = self.snapped = True self.pressPos = self.dragPos = event.pos() self.tapTimer.stop() self.tapTimer.start(HOLD_TIME, self) def mouseMoveEvent(self, event): if not event.buttons(): return if not self.zoomed: if not self.pressed or not self.snapped: delta = event.pos() - self.pressPos self.pressPos = event.pos() self._normalMap.pan(delta) return else: threshold = 10 delta = event.pos() - self.pressPos if self.snapped: self.snapped &= delta.x() < threshold self.snapped &= delta.y() < threshold self.snapped &= delta.x() > -threshold self.snapped &= delta.y() > -threshold if not self.snapped: self.tapTimer.stop() else: self.dragPos = event.pos() self.update() def mouseReleaseEvent(self, event): self.zoomed = False self.update() def keyPressEvent(self, event): if not self.zoomed: if event.key() == Qt.Key_Left: self._normalMap.pan(QPoint(20, 0)) if event.key() == Qt.Key_Right: self._normalMap.pan(QPoint(-20, 0)) if event.key() == Qt.Key_Up: self._normalMap.pan(QPoint(0, 20)) if event.key() == Qt.Key_Down: self._normalMap.pan(QPoint(0, -20)) if event.key() == Qt.Key_Z or event.key() == Qt.Key_Select: self.dragPos = QPoint(self.width() / 2, self.height() / 2) self.activateZoom() else: if event.key() == Qt.Key_Z or event.key() == Qt.Key_Select: self.zoomed = False self.update() delta = QPoint(0, 0) if event.key() == Qt.Key_Left: delta = QPoint(-15, 0) if event.key() == Qt.Key_Right: delta = QPoint(15, 0) if event.key() == Qt.Key_Up: delta = QPoint(0, -15) if event.key() == Qt.Key_Down: delta = QPoint(0, 15) if delta != QPoint(0, 0): self.dragPos += delta self.update() class MapZoom(QMainWindow): def __init__(self): super(MapZoom, self).__init__(None) self.map_ = LightMaps(self) self.setCentralWidget(self.map_) self.map_.setFocus() self.osloAction = QAction("&Oslo", self) self.berlinAction = QAction("&Berlin", self) self.jakartaAction = QAction("&Jakarta", self) self.nightModeAction = QAction("Night Mode", self) self.nightModeAction.setCheckable(True) self.nightModeAction.setChecked(False) self.osmAction = QAction("About OpenStreetMap", self) self.osloAction.triggered.connect(self.chooseOslo) self.berlinAction.triggered.connect(self.chooseBerlin) self.jakartaAction.triggered.connect(self.chooseJakarta) self.nightModeAction.triggered.connect(self.map_.toggleNightMode) self.osmAction.triggered.connect(self.aboutOsm) menu = self.menuBar().addMenu("&Options") menu.addAction(self.osloAction) menu.addAction(self.berlinAction) menu.addAction(self.jakartaAction) menu.addSeparator() menu.addAction(self.nightModeAction) menu.addAction(self.osmAction) # slots def chooseOslo(self): self.map_.setCenter(59.9138204, 10.7387413) def chooseBerlin(self): self.map_.setCenter(52.52958999943302, 13.383053541183472) def chooseJakarta(self): self.map_.setCenter(-6.211544, 106.845172) def aboutOsm(self): QDesktopServices.openUrl(QUrl('http://www.openstreetmap.org')) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName('LightMaps') w = MapZoom() w.setWindowTitle("OpenStreetMap") w.resize(600, 450) w.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/network/loopback.py0000755000076500000240000001551712613140041020735 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QByteArray, Qt from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QLabel, QMessageBox, QProgressBar, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QHostAddress, QTcpServer, QTcpSocket class Dialog(QDialog): TotalBytes = 50 * 1024 * 1024 PayloadSize = 65536 def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.tcpServer = QTcpServer() self.tcpClient = QTcpSocket() self.bytesToWrite = 0 self.bytesWritten = 0 self.bytesReceived = 0 self.clientProgressBar = QProgressBar() self.clientStatusLabel = QLabel("Client ready") self.serverProgressBar = QProgressBar() self.serverStatusLabel = QLabel("Server ready") self.startButton = QPushButton("&Start") self.quitButton = QPushButton("&Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.startButton, QDialogButtonBox.ActionRole) buttonBox.addButton(self.quitButton, QDialogButtonBox.RejectRole) self.startButton.clicked.connect(self.start) self.quitButton.clicked.connect(self.close) self.tcpServer.newConnection.connect(self.acceptConnection) self.tcpClient.connected.connect(self.startTransfer) self.tcpClient.bytesWritten.connect(self.updateClientProgress) self.tcpClient.error.connect(self.displayError) mainLayout = QVBoxLayout() mainLayout.addWidget(self.clientProgressBar) mainLayout.addWidget(self.clientStatusLabel) mainLayout.addWidget(self.serverProgressBar) mainLayout.addWidget(self.serverStatusLabel) mainLayout.addStretch(1) mainLayout.addSpacing(10) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Loopback") def start(self): self.startButton.setEnabled(False) QApplication.setOverrideCursor(Qt.WaitCursor) self.bytesWritten = 0 self.bytesReceived = 0 while not self.tcpServer.isListening() and not self.tcpServer.listen(): ret = QMessageBox.critical(self, "Loopback", "Unable to start the test: %s." % self.tcpServer.errorString(), QMessageBox.Retry | QMessageBox.Cancel) if ret == QMessageBox.Cancel: return self.serverStatusLabel.setText("Listening") self.clientStatusLabel.setText("Connecting") self.tcpClient.connectToHost(QHostAddress(QHostAddress.LocalHost), self.tcpServer.serverPort()) def acceptConnection(self): self.tcpServerConnection = self.tcpServer.nextPendingConnection() self.tcpServerConnection.readyRead.connect(self.updateServerProgress) self.tcpServerConnection.error.connect(self.displayError) self.serverStatusLabel.setText("Accepted connection") self.tcpServer.close() def startTransfer(self): self.bytesToWrite = Dialog.TotalBytes - self.tcpClient.write(QByteArray(Dialog.PayloadSize, '@')) self.clientStatusLabel.setText("Connected") def updateServerProgress(self): self.bytesReceived += self.tcpServerConnection.bytesAvailable() self.tcpServerConnection.readAll() self.serverProgressBar.setMaximum(Dialog.TotalBytes) self.serverProgressBar.setValue(self.bytesReceived) self.serverStatusLabel.setText("Received %dMB" % (self.bytesReceived / (1024 * 1024))) if self.bytesReceived == Dialog.TotalBytes: self.tcpServerConnection.close() self.startButton.setEnabled(True) QApplication.restoreOverrideCursor() def updateClientProgress(self, numBytes): self.bytesWritten += numBytes if self.bytesToWrite > 0: self.bytesToWrite -= self.tcpClient.write(QByteArray( min(self.bytesToWrite, Dialog.PayloadSize), '@')) self.clientProgressBar.setMaximum(Dialog.TotalBytes) self.clientProgressBar.setValue(self.bytesWritten) self.clientStatusLabel.setText("Sent %dMB" % (self.bytesWritten / (1024 * 1024))) def displayError(self, socketError): if socketError == QTcpSocket.RemoteHostClosedError: return QMessageBox.information(self, "Network error", "The following error occured: %s." % self.tcpClient.errorString()) self.tcpClient.close() self.tcpServer.close() self.clientProgressBar.reset() self.serverProgressBar.reset() self.clientStatusLabel.setText("Client ready") self.serverStatusLabel.setText("Server ready") self.startButton.setEnabled(True) QApplication.restoreOverrideCursor() if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(dialog.exec_()) PyQt-gpl-5.5.1/examples/network/README0000644000076500000240000000144712613140041017443 0ustar philstaff00000000000000PyQt is provided with an extensive set of network classes to support both client-based and server side network programming. These examples demonstrate the fundamental aspects of network programming with PyQt. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/network/threadedfortuneserver.py0000755000076500000240000001254212613140041023550 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 random from PyQt5.QtCore import (pyqtSignal, QByteArray, QDataStream, QIODevice, QThread) from PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, QMessageBox, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import (QHostAddress, QNetworkInterface, QTcpServer, QTcpSocket) class FortuneThread(QThread): error = pyqtSignal(QTcpSocket.SocketError) def __init__(self, socketDescriptor, fortune, parent): super(FortuneThread, self).__init__(parent) self.socketDescriptor = socketDescriptor self.text = fortune def run(self): tcpSocket = QTcpSocket() if not tcpSocket.setSocketDescriptor(self.socketDescriptor): self.error.emit(tcpSocket.error()) return block = QByteArray() outstr = QDataStream(block, QIODevice.WriteOnly) outstr.setVersion(QDataStream.Qt_4_0) outstr.writeUInt16(0) outstr.writeQString(self.text) outstr.device().seek(0) outstr.writeUInt16(block.size() - 2) tcpSocket.write(block) tcpSocket.disconnectFromHost() tcpSocket.waitForDisconnected() class FortuneServer(QTcpServer): 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.") def incomingConnection(self, socketDescriptor): fortune = self.FORTUNES[random.randint(0, len(self.FORTUNES) - 1)] thread = FortuneThread(socketDescriptor, fortune, self) thread.finished.connect(thread.deleteLater) thread.start() class Dialog(QDialog): def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.server = FortuneServer() statusLabel = QLabel() statusLabel.setWordWrap(True) quitButton = QPushButton("Quit") quitButton.setAutoDefault(False) if not self.server.listen(): QMessageBox.critical(self, "Threaded Fortune Server", "Unable to start the server: %s." % self.server.errorString()) self.close() return for ipAddress in QNetworkInterface.allAddresses(): if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: break else: ipAddress = QHostAddress(QHostAddress.LocalHost) ipAddress = ipAddress.toString() statusLabel.setText("The server is running on\n\nIP: %s\nport: %d\n\n" "Run the Fortune Client example now." % (ipAddress, self.server.serverPort())) quitButton.clicked.connect(self.close) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Threaded Fortune Server") if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(dialog.exec_()) PyQt-gpl-5.5.1/examples/opengl/0000755000076500000240000000000012613140041016350 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/opengl/2dpainting.py0000755000076500000240000001323212613140041020765 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 import math from PyQt5.QtCore import QPointF, QRect, QRectF, Qt, QTimer from PyQt5.QtGui import (QBrush, QColor, QFont, QLinearGradient, QPainter, QPen, QSurfaceFormat) from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QOpenGLWidget, QWidget) class Helper(object): def __init__(self): gradient = QLinearGradient(QPointF(50, -20), QPointF(80, 20)) gradient.setColorAt(0.0, Qt.white) gradient.setColorAt(1.0, QColor(0xa6, 0xce, 0x39)) self.background = QBrush(QColor(64, 32, 64)) self.circleBrush = QBrush(gradient) self.circlePen = QPen(Qt.black) self.circlePen.setWidth(1) self.textPen = QPen(Qt.white) self.textFont = QFont() self.textFont.setPixelSize(50) def paint(self, painter, event, elapsed): painter.fillRect(event.rect(), self.background) painter.translate(100, 100) painter.save() painter.setBrush(self.circleBrush) painter.setPen(self.circlePen) painter.rotate(elapsed * 0.030) r = elapsed / 1000.0 n = 30 for i in range(n): painter.rotate(30) radius = 0 + 120.0*((i+r)/n) circleRadius = 1 + ((i+r)/n)*20 painter.drawEllipse(QRectF(radius, -circleRadius, circleRadius*2, circleRadius*2)) painter.restore() painter.setPen(self.textPen) painter.setFont(self.textFont) painter.drawText(QRect(-50, -50, 100, 100), Qt.AlignCenter, "Qt") class Widget(QWidget): def __init__(self, helper, parent): super(Widget, self).__init__(parent) self.helper = helper self.elapsed = 0 self.setFixedSize(200, 200) def animate(self): self.elapsed = (self.elapsed + self.sender().interval()) % 1000 self.repaint() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) self.helper.paint(painter, event, self.elapsed) painter.end() class GLWidget(QOpenGLWidget): def __init__(self, helper, parent): super(GLWidget, self).__init__(parent) self.helper = helper self.elapsed = 0 self.setFixedSize(200, 200) self.setAutoFillBackground(False) def animate(self): self.elapsed = (self.elapsed + self.sender().interval()) % 1000 self.update() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) self.helper.paint(painter, event, self.elapsed) painter.end() class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle("2D Painting on Native and OpenGL Widgets") helper = Helper() native = Widget(helper, self) openGL = GLWidget(helper, self) nativeLabel = QLabel("Native") nativeLabel.setAlignment(Qt.AlignHCenter) openGLLabel = QLabel("OpenGL") openGLLabel.setAlignment(Qt.AlignHCenter) layout = QGridLayout() layout.addWidget(native, 0, 0) layout.addWidget(openGL, 0, 1) layout.addWidget(nativeLabel, 1, 0) layout.addWidget(openGLLabel, 1, 1) self.setLayout(layout) timer = QTimer(self) timer.timeout.connect(native.animate) timer.timeout.connect(openGL.animate) timer.start(50) if __name__ == '__main__': app = QApplication(sys.argv) fmt = QSurfaceFormat() fmt.setSamples(4) QSurfaceFormat.setDefaultFormat(fmt) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/opengl/grabber.py0000755000076500000240000003336312613140041020341 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 import math from PyQt5.QtCore import pyqtSignal, QSize, Qt, QTimer from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QAction, QApplication, QGridLayout, QLabel, QLineEdit, QMainWindow, QMessageBox, QOpenGLWidget, QScrollArea, QSizePolicy, QSlider, QWidget) class GLWidget(QOpenGLWidget): xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super(GLWidget, self).__init__(parent) self.gear1 = 0 self.gear2 = 0 self.gear3 = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.gear1Rot = 0 timer = QTimer(self) timer.timeout.connect(self.advanceGears) timer.start(20) def setXRotation(self, angle): self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.update() def setYRotation(self, angle): self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.update() def setZRotation(self, angle): self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.update() def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() lightPos = (5.0, 5.0, 10.0, 1.0) reflectance1 = (0.8, 0.1, 0.0, 1.0) reflectance2 = (0.0, 0.8, 0.2, 1.0) reflectance3 = (0.2, 0.2, 1.0, 1.0) self.gl.glLightfv(self.gl.GL_LIGHT0, self.gl.GL_POSITION, lightPos) self.gl.glEnable(self.gl.GL_LIGHTING) self.gl.glEnable(self.gl.GL_LIGHT0) self.gl.glEnable(self.gl.GL_DEPTH_TEST) self.gear1 = self.makeGear(reflectance1, 1.0, 4.0, 1.0, 0.7, 20) self.gear2 = self.makeGear(reflectance2, 0.5, 2.0, 2.0, 0.7, 10) self.gear3 = self.makeGear(reflectance3, 1.3, 2.0, 0.5, 0.7, 10) self.gl.glEnable(self.gl.GL_NORMALIZE) self.gl.glClearColor(0.0, 0.0, 0.0, 1.0) def paintGL(self): self.gl.glClear(self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glPushMatrix() self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.drawGear(self.gear1, -3.0, -2.0, 0.0, self.gear1Rot / 16.0) self.drawGear(self.gear2, +3.1, -2.0, 0.0, -2.0 * (self.gear1Rot / 16.0) - 9.0) self.gl.glRotated(+90.0, 1.0, 0.0, 0.0) self.drawGear(self.gear3, -3.1, -1.8, -2.2, +2.0 * (self.gear1Rot / 16.0) - 2.0) self.gl.glPopMatrix() def resizeGL(self, width, height): side = min(width, height) if side < 0: return self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glFrustum(-1.0, +1.0, -1.0, 1.0, 5.0, 60.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -40.0) def mousePressEvent(self, event): self.lastPos = event.pos() def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = event.pos() def advanceGears(self): self.gear1Rot += 2 * 16 self.update() def xRotation(self): return self.xRot def yRotation(self): return self.yRot def zRotation(self): return self.zRot def makeGear(self, reflectance, innerRadius, outerRadius, thickness, toothSize, toothCount): list = self.gl.glGenLists(1) self.gl.glNewList(list, self.gl.GL_COMPILE) self.gl.glMaterialfv(self.gl.GL_FRONT, self.gl.GL_AMBIENT_AND_DIFFUSE, reflectance) r0 = innerRadius r1 = outerRadius - toothSize / 2.0 r2 = outerRadius + toothSize / 2.0 delta = (2.0 * math.pi / toothCount) / 4.0 z = thickness / 2.0 self.gl.glShadeModel(self.gl.GL_FLAT) for i in range(2): if i == 0: sign = +1.0 else: sign = -1.0 self.gl.glNormal3d(0.0, 0.0, sign) self.gl.glBegin(self.gl.GL_QUAD_STRIP) for j in range(toothCount+1): angle = 2.0 * math.pi * j / toothCount self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), sign * z) self.gl.glVertex3d(r1 * math.cos(angle), r1 * math.sin(angle), sign * z) self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), sign * z) self.gl.glVertex3d(r1 * math.cos(angle + 3 * delta), r1 * math.sin(angle + 3 * delta), sign * z) self.gl.glEnd() self.gl.glBegin(self.gl.GL_QUADS) for j in range(toothCount): angle = 2.0 * math.pi * j / toothCount self.gl.glVertex3d(r1 * math.cos(angle), r1 * math.sin(angle), sign * z) self.gl.glVertex3d(r2 * math.cos(angle + delta), r2 * math.sin(angle + delta), sign * z) self.gl.glVertex3d(r2 * math.cos(angle + 2 * delta), r2 * math.sin(angle + 2 * delta), sign * z) self.gl.glVertex3d(r1 * math.cos(angle + 3 * delta), r1 * math.sin(angle + 3 * delta), sign * z) self.gl.glEnd() self.gl.glBegin(self.gl.GL_QUAD_STRIP) for i in range(toothCount): for j in range(2): angle = 2.0 * math.pi * (i + (j / 2.0)) / toothCount s1 = r1 s2 = r2 if j == 1: s1, s2 = s2, s1 self.gl.glNormal3d(math.cos(angle), math.sin(angle), 0.0) self.gl.glVertex3d(s1 * math.cos(angle), s1 * math.sin(angle), +z) self.gl.glVertex3d(s1 * math.cos(angle), s1 * math.sin(angle), -z) self.gl.glNormal3d(s2 * math.sin(angle + delta) - s1 * math.sin(angle), s1 * math.cos(angle) - s2 * math.cos(angle + delta), 0.0) self.gl.glVertex3d(s2 * math.cos(angle + delta), s2 * math.sin(angle + delta), +z) self.gl.glVertex3d(s2 * math.cos(angle + delta), s2 * math.sin(angle + delta), -z) self.gl.glVertex3d(r1, 0.0, +z) self.gl.glVertex3d(r1, 0.0, -z) self.gl.glEnd() self.gl.glShadeModel(self.gl.GL_SMOOTH) self.gl.glBegin(self.gl.GL_QUAD_STRIP) for i in range(toothCount+1): angle = i * 2.0 * math.pi / toothCount self.gl.glNormal3d(-math.cos(angle), -math.sin(angle), 0.0) self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), +z) self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), -z) self.gl.glEnd() self.gl.glEndList() return list def drawGear(self, gear, dx, dy, dz, angle): self.gl.glPushMatrix() self.gl.glTranslated(dx, dy, dz) self.gl.glRotated(angle, 0.0, 0.0, 1.0) self.gl.glCallList(gear) self.gl.glPopMatrix() def normalizeAngle(self, angle): while (angle < 0): angle += 360 * 16 while (angle > 360 * 16): angle -= 360 * 16 class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() centralWidget = QWidget() self.setCentralWidget(centralWidget) self.glWidget = GLWidget() self.pixmapLabel = QLabel() self.glWidgetArea = QScrollArea() self.glWidgetArea.setWidget(self.glWidget) self.glWidgetArea.setWidgetResizable(True) self.glWidgetArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.glWidgetArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.glWidgetArea.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.glWidgetArea.setMinimumSize(50, 50) self.pixmapLabelArea = QScrollArea() self.pixmapLabelArea.setWidget(self.pixmapLabel) self.pixmapLabelArea.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.pixmapLabelArea.setMinimumSize(50, 50) xSlider = self.createSlider(self.glWidget.xRotationChanged, self.glWidget.setXRotation) ySlider = self.createSlider(self.glWidget.yRotationChanged, self.glWidget.setYRotation) zSlider = self.createSlider(self.glWidget.zRotationChanged, self.glWidget.setZRotation) self.createActions() self.createMenus() centralLayout = QGridLayout() centralLayout.addWidget(self.glWidgetArea, 0, 0) centralLayout.addWidget(self.pixmapLabelArea, 0, 1) centralLayout.addWidget(xSlider, 1, 0, 1, 2) centralLayout.addWidget(ySlider, 2, 0, 1, 2) centralLayout.addWidget(zSlider, 3, 0, 1, 2) centralWidget.setLayout(centralLayout) xSlider.setValue(15 * 16) ySlider.setValue(345 * 16) zSlider.setValue(0 * 16) self.setWindowTitle("Grabber") self.resize(400, 300) def grabFrameBuffer(self): image = self.glWidget.grabFramebuffer() self.setPixmap(QPixmap.fromImage(image)) def clearPixmap(self): self.setPixmap(QPixmap()) def about(self): QMessageBox.about(self, "About Grabber", "The Grabber example demonstrates two approaches for " "rendering OpenGL into a Qt pixmap.") def createActions(self): self.grabFrameBufferAct = QAction("&Grab Frame Buffer", self, shortcut="Ctrl+G", triggered=self.grabFrameBuffer) self.clearPixmapAct = QAction("&Clear Pixmap", self, shortcut="Ctrl+L", triggered=self.clearPixmap) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.grabFrameBufferAct) self.fileMenu.addAction(self.clearPixmapAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createSlider(self, changedSignal, setterSlot): slider = QSlider(Qt.Horizontal) slider.setRange(0, 360 * 16) slider.setSingleStep(16) slider.setPageStep(15 * 16) slider.setTickInterval(15 * 16) slider.setTickPosition(QSlider.TicksRight) slider.valueChanged.connect(setterSlot) changedSignal.connect(slider.setValue) return slider def setPixmap(self, pixmap): self.pixmapLabel.setPixmap(pixmap) size = pixmap.size() if size - QSize(1, 0) == self.pixmapLabelArea.maximumViewportSize(): size -= QSize(1, 0) self.pixmapLabel.resize(size) if __name__ == '__main__': app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/opengl/hellogl.py0000755000076500000240000002200512613140041020352 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 import math from PyQt5.QtCore import pyqtSignal, QPoint, QSize, Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QOpenGLWidget, QSlider, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.glWidget = GLWidget() self.xSlider = self.createSlider() self.ySlider = self.createSlider() self.zSlider = self.createSlider() self.xSlider.valueChanged.connect(self.glWidget.setXRotation) self.glWidget.xRotationChanged.connect(self.xSlider.setValue) self.ySlider.valueChanged.connect(self.glWidget.setYRotation) self.glWidget.yRotationChanged.connect(self.ySlider.setValue) self.zSlider.valueChanged.connect(self.glWidget.setZRotation) self.glWidget.zRotationChanged.connect(self.zSlider.setValue) mainLayout = QHBoxLayout() mainLayout.addWidget(self.glWidget) mainLayout.addWidget(self.xSlider) mainLayout.addWidget(self.ySlider) mainLayout.addWidget(self.zSlider) self.setLayout(mainLayout) self.xSlider.setValue(15 * 16) self.ySlider.setValue(345 * 16) self.zSlider.setValue(0 * 16) self.setWindowTitle("Hello GL") def createSlider(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 class GLWidget(QOpenGLWidget): xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super(GLWidget, self).__init__(parent) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.lastPos = QPoint() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(400, 400) def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.update() def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.update() def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.update() def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() self.setClearColor(self.trolltechPurple.darker()) self.object = self.makeObject() self.gl.glShadeModel(self.gl.GL_FLAT) self.gl.glEnable(self.gl.GL_DEPTH_TEST) self.gl.glEnable(self.gl.GL_CULL_FACE) def paintGL(self): self.gl.glClear( self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -10.0) self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.gl.glCallList(self.object) def resizeGL(self, width, height): side = min(width, height) if side < 0: return self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) def mousePressEvent(self, event): self.lastPos = event.pos() def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = event.pos() def makeObject(self): genList = self.gl.glGenLists(1) self.gl.glNewList(genList, self.gl.GL_COMPILE) self.gl.glBegin(self.gl.GL_QUADS) 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) NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * math.pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * math.pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) self.gl.glEnd() self.gl.glEndList() return genList def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.setColor(self.trolltechGreen) self.gl.glVertex3d(x1, y1, -0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x3, y3, -0.05) self.gl.glVertex3d(x4, y4, -0.05) self.gl.glVertex3d(x4, y4, +0.05) self.gl.glVertex3d(x3, y3, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.setColor(self.trolltechGreen.darker(250 + int(100 * x1))) self.gl.glVertex3d(x1, y1, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle def setClearColor(self, c): self.gl.glClearColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()) def setColor(self, c): self.gl.glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/opengl/openglwindow.py0000644000076500000240000001447412613140041021450 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## Contact: http://www.qt-project.org/legal ## ## This file is part of the documentation 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 Digia Plc and its Subsidiary(-ies) 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 array from PyQt5.QtCore import QEvent from PyQt5.QtGui import (QGuiApplication, QMatrix4x4, QOpenGLContext, QOpenGLShader, QOpenGLShaderProgram, QSurfaceFormat, QWindow) class OpenGLWindow(QWindow): def __init__(self, parent=None): super(OpenGLWindow, self).__init__(parent) self.m_update_pending = False self.m_animating = False self.m_context = None self.m_gl = None self.setSurfaceType(QWindow.OpenGLSurface) def initialize(self): pass def setAnimating(self, animating): self.m_animating = animating if animating: self.renderLater() def renderLater(self): if not self.m_update_pending: self.m_update_pending = True QGuiApplication.postEvent(self, QEvent(QEvent.UpdateRequest)) def renderNow(self): if not self.isExposed(): return self.m_update_pending = False needsInitialize = False if self.m_context is None: self.m_context = QOpenGLContext(self) self.m_context.setFormat(self.requestedFormat()) self.m_context.create() needsInitialize = True self.m_context.makeCurrent(self) if needsInitialize: self.m_gl = self.m_context.versionFunctions() self.m_gl.initializeOpenGLFunctions() self.initialize() self.render(self.m_gl) self.m_context.swapBuffers(self) if self.m_animating: self.renderLater() def event(self, event): if event.type() == QEvent.UpdateRequest: self.renderNow() return True return super(OpenGLWindow, self).event(event) def exposeEvent(self, event): self.renderNow() def resizeEvent(self, event): self.renderNow() class TriangleWindow(OpenGLWindow): vertexShaderSource = ''' attribute highp vec4 posAttr; attribute lowp vec4 colAttr; varying lowp vec4 col; uniform highp mat4 matrix; void main() { col = colAttr; gl_Position = matrix * posAttr; } ''' fragmentShaderSource = ''' varying lowp vec4 col; void main() { gl_FragColor = col; } ''' def __init__(self): super(TriangleWindow, self).__init__() self.m_program = 0 self.m_frame = 0 self.m_posAttr = 0 self.m_colAttr = 0 self.m_matrixUniform = 0 def initialize(self): self.m_program = QOpenGLShaderProgram(self) self.m_program.addShaderFromSourceCode(QOpenGLShader.Vertex, self.vertexShaderSource) self.m_program.addShaderFromSourceCode(QOpenGLShader.Fragment, self.fragmentShaderSource) self.m_program.link() self.m_posAttr = self.m_program.attributeLocation('posAttr') self.m_colAttr = self.m_program.attributeLocation('colAttr') self.m_matrixUniform = self.m_program.uniformLocation('matrix') def render(self, gl): gl.glViewport(0, 0, self.width(), self.height()) gl.glClear(gl.GL_COLOR_BUFFER_BIT) self.m_program.bind() matrix = QMatrix4x4() matrix.perspective(60, 4.0/3.0, 0.1, 100.0) matrix.translate(0, 0, -2) matrix.rotate(100.0 * self.m_frame / self.screen().refreshRate(), 0, 1, 0) self.m_program.setUniformValue(self.m_matrixUniform, matrix) vertices = array.array('f', [ 0.0, 0.707, -0.5, -0.5, 0.5, -0.5]) gl.glVertexAttribPointer(self.m_posAttr, 2, gl.GL_FLOAT, False, 0, vertices) gl.glEnableVertexAttribArray(self.m_posAttr) colors = array.array('f', [ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]) gl.glVertexAttribPointer(self.m_colAttr, 3, gl.GL_FLOAT, False, 0, colors) gl.glEnableVertexAttribArray(self.m_colAttr) gl.glDrawArrays(gl.GL_TRIANGLES, 0, 3) self.m_program.release() self.m_frame += 1 if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) format = QSurfaceFormat() format.setSamples(4) window = TriangleWindow() window.setFormat(format) window.resize(640, 480) window.show() window.setAnimating(True) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/opengl/overpainting.py0000755000076500000240000003163512613140041021442 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 import math, random from PyQt5.QtCore import (QPoint, QPointF, QRect, QRectF, QSize, Qt, QTime, QTimer) from PyQt5.QtGui import (QBrush, QColor, QFontMetrics, QImage, QPainter, QRadialGradient, QSurfaceFormat) from PyQt5.QtWidgets import QApplication, QOpenGLWidget class Bubble(object): def __init__(self, position, radius, velocity): self.position = position self.vel = velocity self.radius = radius self.innerColor = self.randomColor() self.outerColor = self.randomColor() self.updateBrush() def updateBrush(self): gradient = QRadialGradient(QPointF(self.radius, self.radius), self.radius, QPointF(self.radius*0.5, self.radius*0.5)) gradient.setColorAt(0, QColor(255, 255, 255, 255)) gradient.setColorAt(0.25, self.innerColor) gradient.setColorAt(1, self.outerColor) self.brush = QBrush(gradient) def drawBubble(self, painter): painter.save() painter.translate(self.position.x() - self.radius, self.position.y() - self.radius) painter.setBrush(self.brush) painter.drawEllipse(0, 0, int(2*self.radius), int(2*self.radius)) painter.restore() def randomColor(self): red = random.randrange(205, 256) green = random.randrange(205, 256) blue = random.randrange(205, 256) alpha = random.randrange(91, 192) return QColor(red, green, blue, alpha) def move(self, bbox): self.position += self.vel leftOverflow = self.position.x() - self.radius - bbox.left() rightOverflow = self.position.x() + self.radius - bbox.right() topOverflow = self.position.y() - self.radius - bbox.top() bottomOverflow = self.position.y() + self.radius - bbox.bottom() if leftOverflow < 0.0: self.position.setX(self.position.x() - 2 * leftOverflow) self.vel.setX(-self.vel.x()) elif rightOverflow > 0.0: self.position.setX(self.position.x() - 2 * rightOverflow) self.vel.setX(-self.vel.x()) if topOverflow < 0.0: self.position.setY(self.position.y() - 2 * topOverflow) self.vel.setY(-self.vel.y()) elif bottomOverflow > 0.0: self.position.setY(self.position.y() - 2 * bottomOverflow) self.vel.setY(-self.vel.y()) def rect(self): return QRectF(self.position.x() - self.radius, self.position.y() - self.radius, 2 * self.radius, 2 * self.radius) class GLWidget(QOpenGLWidget): def __init__(self, parent=None): super(GLWidget, self).__init__(parent) midnight = QTime(0, 0, 0) random.seed(midnight.secsTo(QTime.currentTime())) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.image = QImage() self.bubbles = [] self.lastPos = QPoint() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) self.animationTimer = QTimer() self.animationTimer.setSingleShot(False) self.animationTimer.timeout.connect(self.animate) self.animationTimer.start(25) self.setAutoFillBackground(False) self.setMinimumSize(200, 200) self.setWindowTitle("Overpainting a Scene") def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() self.object = self.makeObject() def mousePressEvent(self, event): self.lastPos = event.pos() def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = event.pos() def paintEvent(self, event): self.makeCurrent() self.gl.glMatrixMode(self.gl.GL_MODELVIEW) self.gl.glPushMatrix() self.setClearColor(self.trolltechPurple.darker()) self.gl.glShadeModel(self.gl.GL_SMOOTH) self.gl.glEnable(self.gl.GL_DEPTH_TEST) #self.gl.glEnable(self.gl.GL_CULL_FACE) self.gl.glEnable(self.gl.GL_LIGHTING) self.gl.glEnable(self.gl.GL_LIGHT0) self.gl.glEnable(self.gl.GL_MULTISAMPLE) self.gl.glLightfv(self.gl.GL_LIGHT0, self.gl.GL_POSITION, (0.5, 5.0, 7.0, 1.0)) self.setupViewport(self.width(), self.height()) self.gl.glClear( self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -10.0) self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.gl.glCallList(self.object) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) self.gl.glPopMatrix() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) for bubble in self.bubbles: if bubble.rect().intersects(QRectF(event.rect())): bubble.drawBubble(painter) self.drawInstructions(painter) painter.end() def resizeGL(self, width, height): self.setupViewport(width, height) def showEvent(self, event): self.createBubbles(20 - len(self.bubbles)) def sizeHint(self): return QSize(400, 400) def makeObject(self): list = self.gl.glGenLists(1) self.gl.glNewList(list, self.gl.GL_COMPILE) self.gl.glEnable(self.gl.GL_NORMALIZE) self.gl.glBegin(self.gl.GL_QUADS) self.gl.glMaterialfv(self.gl.GL_FRONT, self.gl.GL_DIFFUSE, (self.trolltechGreen.red()/255.0, self.trolltechGreen.green()/255.0, self.trolltechGreen.blue()/255.0, 1.0)) 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) NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * math.pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * math.pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) self.gl.glEnd() self.gl.glEndList() return list def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.gl.glNormal3d(0.0, 0.0, -1.0) self.gl.glVertex3d(x1, y1, -0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x3, y3, -0.05) self.gl.glVertex3d(x4, y4, -0.05) self.gl.glNormal3d(0.0, 0.0, 1.0) self.gl.glVertex3d(x4, y4, +0.05) self.gl.glVertex3d(x3, y3, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.setColor(self.trolltechGreen.darker(250 + int(100 * x1))) self.gl.glNormal3d((x1 + x2)/2.0, (y1 + y2)/2.0, 0.0) self.gl.glVertex3d(x1, y1, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle def createBubbles(self, number): for i in range(number): position = QPointF(self.width()*(0.1 + 0.8*random.random()), self.height()*(0.1 + 0.8*random.random())) radius = min(self.width(), self.height())*(0.0125 + 0.0875*random.random()) velocity = QPointF(self.width()*0.0125*(-0.5 + random.random()), self.height()*0.0125*(-0.5 + random.random())) self.bubbles.append(Bubble(position, radius, velocity)) def animate(self): for bubble in self.bubbles: bubble.move(self.rect()) self.update() def setupViewport(self, width, height): side = min(width, height) self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) def drawInstructions(self, painter): text = "Click and drag with the left mouse button to rotate the Qt " \ "logo." metrics = QFontMetrics(self.font()) border = max(4, metrics.leading()) rect = metrics.boundingRect(0, 0, self.width() - 2*border, int(self.height()*0.125), Qt.AlignCenter | Qt.TextWordWrap, text) painter.setRenderHint(QPainter.TextAntialiasing) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2*border), QColor(0, 0, 0, 127)) painter.setPen(Qt.white) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2*border), QColor(0, 0, 0, 127)) painter.drawText((self.width() - rect.width())/2, border, rect.width(), rect.height(), Qt.AlignCenter | Qt.TextWordWrap, text) def setClearColor(self, c): self.gl.glClearColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()) def setColor(self, c): self.gl.glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()) if __name__ == '__main__': app = QApplication(sys.argv) fmt = QSurfaceFormat() fmt.setSamples(4) QSurfaceFormat.setDefaultFormat(fmt) window = GLWidget() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/opengl/README0000644000076500000240000000161512613140041017233 0ustar philstaff00000000000000PyQt provides support for integration with OpenGL implementations on all platforms, giving developers the opportunity to display hardware accelerated 3D graphics alongside a more conventional user interface. These examples demonstrate the basic techniques used to take advantage of OpenGL in PyQt applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/opengl/textures/0000755000076500000240000000000012613140041020233 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/opengl/textures/images/0000755000076500000240000000000012613140041021500 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/opengl/textures/images/side1.png0000644000076500000240000000164712613140041023223 0ustar philstaff00000000000000‰PNG  IHDRk¬XTŸPLTEø|øüøøˆøøðøŒø¨Pø°`øÈø€øôèøÜ¸øèÐø´høÄˆøàÀø˜0ø„øÀ€øðàø¬XøäÈøøøøÐ øÔ¨øìØø ø @ø¤Høðèøœ8øÔ°ø¼xø„ø¸xøÌ˜ø°hø¸pøØ¸ø˜8øŒ øäÐø€øìàø”(ø¤PøØ°ø”0ø´pøÈ˜øôðøàÈø¨XøˆDžÃIDATx^íÖWnÝ@ FáŸêíöÞ\KzÏþ×@ÈÆä#ñðœðÃ`H™ó€Éa]Àÿ2ÊÚ5@µ(R¿óÙNÒ¯›C¡6—õ]$É+@™O$¹¸O É-@}HòÐ}ún.ÒBr ð½‰$yضW€2ä ^ É+Àê"Jò PeW’¼T·‘$¯ãæ§$¯U;½W€*‹$9ˆ7‹+INŽ7‡w’œÔ³S!É'@üé6Q›G€åh_Hò Pçi¤6Ûíð~* ªH›$L€±4½››•QKõÍÊÖª à½zÚå±µÙ:H€XíóºóX°HçÛßwF˜§óÿÒ:•adgÆÏ¶ö¨8L€üÜÞ{Z ý{0}3s`SuÛݬÌ<:“™ùøª?í+3wsý®X¼5óн¦ÍÖÌ'@.)º,ͼ”E2ŠÍüØØÌ\Øë`åà¨ÞÊ Æê­`¤ÞÖAœÔ[2ÀXýE«€&P.@¦!]͈ևc; -©‚XÎvzNûMü:.Ÿvݤ“©ž]1ùñåòQ£ÿ Ö‹½ @Ø  üÀ/«%çøÊÙ ~IEND®B`‚PyQt-gpl-5.5.1/examples/opengl/textures/images/side2.png0000644000076500000240000000312612613140041023216 0ustar philstaff00000000000000‰PNG  IHDRk¬XTŠPLTEüxü€èüððüøü€øüøHü Xü¨üȨüиüØ8ü˜Øüèàüð üüˆ€üÀ0ü˜ˆüÀüˆÐüèÈüà(üxü¸°üØ üÐ@ü pü¸ðüð˜üÈÀüàhü°Pü¨°üÐ`ü°ü€àüè`ü¨@ü˜Ðüàpü° üˆ0ü€ü¸üÀPü @)qó‡IDATx^íÜç–ÛF €QLcïM½luIòþ¯%ÿ|¥¥è3Cà{ãÚ– pµ`ˆ À À `€`¿00€!00000000000À³c```````È’è¦C«µºl‹! QÜ+ j»ùÔ€ŵÚÊ5dͧ€©†C¢V ÿ®áÎD°SkèC¤ÃdMÛ¯ˆÔJ¶5|­²’+èSøzºñ a^ÅÖk€HÃìö¹·] Ïè-ö`#àI}(ºžW‘yixfe“Ó[¯~ÀÓ;$,Hüèa‰ôÙ€-,R™ùÁ2ýTžl`¡.ž„°T±Ÿ°T¥ô €Åºx `±D瀄Û{ÐÃdB øb½ëö=¨ ª¸—æ–’}\%dï|ð@9¸²Q²n÷W8ŽÄ÷£±—pw™Ãø4ôf²|÷Ö¸ €ïAWeîéîìÓY|:˜;;À} Çzdþç~Šüæ6ÀË/ÿÌzùÄÛ9 €ïA­4”k¸§ƒ“øå“y¨ÜSà"¾µ3w¼Úm€tÎýâ w4¸€ïA‰y´=L×:€ïAB-òLA; gžoZ˜L8 ÐÏÜÚ/¾ÿ x™¹²%0Yé4@4÷*`ªÂi€ÃÜó] S¥N„swöLº€ïA¹ùJ'Ï? s¶ÄóOƒbî_TSõ.Hd~¬Üï‹PìÁ¥`¢Ôi€xþcL˜hã¾5KlÝ(ôÌ—ª#ØÓÊ!¼ü[²‹*c–y ÖþÕÙ ìÖpöûñøüb°v5khÀÚvõ—‰ƒèêR°U­ KZ® wà'EÝ}ï븀¥W³~€Ú ²õHáõ&æw²¾¸Z³~¥m?@`¿ïL °="`yh%€Êv ¥ÐÂïú0,Ç âH <½¡XV ©åQ€3àÁ h¤€§3C <±54 À‹ €ð†@®íjˆ€¶WDb@«•¡ [À¤!Zæ§[æ§—–ù)|R- € ¥GC øû?ü P† €ªñý— @ˆ>¡РÁéÄûüK ×0jcèd%Œª Y`÷/:Çñ 8:*Å~}6!€`<l\±_ OŸ?1Tðùφ>ÙBÁxþÎÐPûÑümfˆàó™¡pï?CnèÈ;Óvþ¦çO•¡Øù›@ö;ÓÈZìüM k‘ó7!€¾DÎß„ú7äüM଑ó7!€d<cl5rþ&ð"ó7!€X çoB;œ¿ œrþ&açoB vþ&PaçoB›ñù·3óSҀﳾþ¤ä{ן“xwŠªÍá^ƒ}:í›€Ä € ŒËÇcæÙmÌ—Û˜ÍmÌ×ÿÆüY´¥[•€t‰šê6fx³¶Ži/ò „Û¹p…%K\P,ÚÙqµ‡eëÜP),\æ4€¬aéä¢îÏG‡ä˧ÜÈ øgÞ µ@ k4@Wi€¾Úü‰€€@QÄ §Qè ¸z÷?``````````````` ü0ñ€HÇ ð/|6ªàUÚIEND®B`‚PyQt-gpl-5.5.1/examples/opengl/textures/images/side3.png0000644000076500000240000000410512613140041023215 0ustar philstaff00000000000000‰PNG  IHDRk¬XTíPLTExøøüø€øøôøøøø€ø€ ø€øðèø¨XøèÜøèÔøðìø,ø Lø¨Tø(ø¨\øÀ„øÀŒøÈøÈœøÐ¤øÐ¬øØ´øØ¼øàÀøàÌø$øèØøðäøˆøˆøøðøˆø ø¸|ø˜<ø°døàÈø˜4øÈ”ø˜0ø°løÐ¨øØ°ø°`ø¸tøØ¸ø¸xø HøÀ€øèÐøÀˆø DøÈ˜øðàø˜8øàÄø°høððøÐ ø°pø¸pøˆø¸€øˆ øÐ°øèàøØÀøÀø¨Pø0øàÐø˜@ø¨`øÈ ø Pø @ø"9IDATx^íÝ…’³èÇá£qwww·Ïu÷þ/çTíùjv3H„wªhèßä ÐÀ (æA@@1l@@(F €€€€€€€€€€€(O@@@@@@@ÀH×ËOùŸÙQ_³a[/£Î4ÿ\>HqH_}·áž½W\v£ 0¬X× ùøI½vfc³ì¿ô¨Ì4l“õœŠ€ñ{[gæçx(½`·’©d&vÎ~2x˜XÔ¸Å@/÷4óIg PAE· ž™5º` pei-Ž¨Ëºcp…Ym~}¨là‚Ú¦3€wÌ àŠ3ç¼n¡º+Cƒò–œ~@}ƒÀ5Ô‡GF3¨YFY¼Gs6º ÌBþÃuã®N·[õåiî#¶è” @ ®žŽWâ`ö‚ +°(»Žy›äžÑÈa³R\’p”ì’Oé<6©Î`Œ7Z´¦fë›0HàM3Ö6,bm9& ¬dVi£JX×w&ç+vƒ6¬‚58Æaæ'Ú¸cø×g°r`¯Òý„o&€ÏøO3Ú¦”¿4ø·¬`÷Áõ'pŒ×Ì6m×°ŸF<¦xíXí0qÊ@{è?ж]À§$€•ð5Ðßhgç,ªÁ¦x3x×`pÿ PR=NL°ØÃŸ´ íÐx¶GtúE»tÏ&,îð'´h—2ðì €JÀS7^-ˆ@2àõ\^UytNñðhdðø]ý¿i·º¼.Žª¯÷ FL*pï Åà®Í(.c¸UÐã‚[ÚÅà.™‡€\úJ±hÂ¥Å`hÄàŽÌ%Åàa„·iuŠ@oûئ”ñ¶« Å nb5»L#€š‰Õ ?(N%+Ù Š@"‡Õ¦i¢TûXiT#Š@=‹•´‰NñH” XÉÞOÅ ]¾²ÏÌ×Û™ˆdê¥ÒwõòþÔ‚GýE±ÔèE cb»FÉë›(Ô±C{—½Ḛ̀Sfþ."±kWó(t ä €%‚dUÙä¬oCÞ†…€uÒ¬Z\ÿŽ3ÀÁÓN,  ­É cBEVš+ÀÔ4Î0˜AQ9¦#¨êš%@ʲz*XÍ´±sEŽG€qîxy8Oet""=ÑmV'¹¶®ÍÀ8~8y ·zy [•gàŸñéÌÄæ™)öÎRG[œF€¨û ›6ˆ$QýÖŠ&%®°YÇ cõ=fwŠ:ËD€Î±IÍèÐ=6¨aãë»0õ,¬íŠ€úK(Y^ꨃh4±.‹€úMÀŽ8@k2#`ôá_Ÿ€ú)ú8ê'ðo/êC¾ýÍ @ýqà[äö£z. hqÅeäðí.òiøeê‘èÁ¯Eà~%£`À¯JôtøuZ€Ìa‰””€O %@æÓóž 4ÞÿMM¥0œfM•_Ï>uÃ0ÅŸpòÞ·Õ(ŒO¯·¤ ¼«„ †×)x¿àY_%@ZíоÏ&JÒðÚã{í^HnñÚHDZðŒB p¯r+-Â+;V€kü›ö™¥[>{€°ÌÞÓ]‡W#=”Î÷kÕ(H?áUB à€LÓ@PžÝ+@Ó"М`:6?Ï%À¦Y èáF€Æ×@0…ièþŠ`ßòd0@Ó&Ðø;pÎ0ñg :€"º3À¦S 8Á´ l~Å‚àg˜&`ô`ëátŸ`z tõ3L9À¦,Д¦‚ààÏ t ˜bÉð«_t/0[:¹:€ L+:€2úC(À¦¡¦Èa;:€-LO ƒíJðáÉéþ„­§øÞøL0…­ hÏ~Ó¬ü ¦(£ŸÁt¿øLðü ¦8øLÃÏ`:€ŸÁt=ü ¦ØùLÐÃvåØúL°€­çØúL°€­àxô3˜ ‡mÍð;L ‡­àÈü%” €í'>€¹ ¤XG˜®|+?éÚÓ À¦}MPíý)˜`S,é><ûDð ¶œ`Ó.Ðô°]ùþN°†íİ‚itþ%èÄp„i|ÞµòÞ®xßú{ÈÈÖ ˜Ô{r€lÈr,ɪH°9@ˆìëKàÈг´ì¡aÈØ>SüÿøþhI€ @€ €£ÕÉ´­J Àheò Œ–'pÄh]òKŒ6M`ÀhYêkŒ·Oàn”'0àF«´N¸Õ¾J p³iÊKÜ.–éÌð–6uª¼­¬N`½Ã[ÛÉÔ‹yÄÛ‹Ëü˜M}ÓËò1â¿Öd“×O((€x—?ñ€ @i'@€ @€ @€ @€È2€¨€¨€þ èØ«hƒIEND®B`‚PyQt-gpl-5.5.1/examples/opengl/textures/images/side5.png0000644000076500000240000000341612613140041023223 0ustar philstaff00000000000000‰PNG  IHDRk¬XTPLTExüðüè€ü€üøüðøüøü(˜ü8 ü@¨üP¨üX°üh¸üp¸üxÀü€ÀüˆÈüÐü Ðü¨Øü°Øü¸àüÀàüÈèüÐèüØðüàˆüˆüü ˜ü0°ü`Èü˜ üHàüаüpÈü ðüð˜ü@Ðü°èüàØüÀˆü €ü¨ü`ü0Àü üP1:¹)      e@)ðŸ$ãtx>Ç(N³Ç¢¬š¶ëù*Åû®mêª,òÇÓÏ4‰£ðøgÏ=8Ó8ɘø  l.R ãä8×;Ÿý 8†ÑÕý-ç  b†3HL„À2Óp€Ü4Pp4p€Æ0@ 3 ð:7 PAІ>ƒF¤0à8Fø®Q€|Ï(€ ÀÇpÄð€ Æb dF~Àȱÿ*ŒLðJìßö¯Á†pÁþhMÈ>@w5ø{Bð¿Á0Šã$M³Ó)/вªêæŸÔ_ª²,þͲ4Iâ8 Ãã÷À÷ÏžçºÇ™¾ŽÃ   k£àà¯Rì>€§W'|êÀ#v€;@ ÄPaø‚ ÆÐ`h±tØzì9(ì9€Ä À€`Ä0ap°üÀpÀàbð0,oôåõ)<ç×naùmœ×H‹úi‡þÀ%ó'6“ÉOJµgU[ˆ|N/;šþ÷¾`ë2ÆÝ^ÖÿÔGÁn‰{R»X"þ6Évs†Tí ÒZ·/ÿù€/“‹õ'—ÝŸ¯åø•¢îÄ>–€[P³M3\5t«ÅcË>±­sæú%(·Ì8Ü&€Œ@ºmÎé툙e @Ȍķ `f’Úà•%3”IÙp`¦Ù0+f,ÏVHf.µŠŒg@ÏL¦ÐÎt`‡ É«¶ÒZó¾«NqpOoÀ¨¯Ä9mÞ²âe8Þ x€’½Žô ¥çÓ„â&\k«U¾$¦²Ñ@7ãXÝñ´ÊL¥ë[äÚšƒ•EºZû«JèÑ}#úkA å]Ãùíʞ࿾@{¾k$»?¬ <€ÖuzœZ'Ðì·ÄŸÖäûÐÝÀ–“À0YÀü˜º»k5.8»йí5FÌ*fà÷ƒ6€ùau¹w€{ èƽhõkpùpwÐ/¶f>ã·ÀúñþBŒãëW¶û(Íþ„Ю6g>Ÿ-®6g¾^[†@½Ð!Ð ]êcèÙ|j Ý{‚êy€2@ësãCã-\Ê­6¸%6.”L¿1Æ7\¯®€ ðiÚrA»3? `~—Œì6Pr °Ðfÿ2¹÷vPPòM CGs'  ßtcÏ×ÙÏËóy‘±Qñ0@ø kCC¢ž P°—ŒüC\ÌÙ‚ À·ÛäšÎ¾!hg«kåÃÜ`ùÁ•åæïÀ¡°|n†¸ûyíäÜGpþúÂÇnÛ%R!üú¶…@4×@X¾ô±Ýn$ÄQ”WÝV}3@%ß{mÀÓÕÅ‹üF€/‚½qÑ0–»¯ð¦¦[È·ï¿ÒP–û/§YÌÜ­á,OêËhe#è]öf†FÃXþ%póÞɹ“c§¡,/óž²¥VOsÿ´Ó<°¹ Q3À“qé9øËëܧ¨Rú:]ö,çØdbY}ÎÞ<³²åþºÉ“óÀæ3T€ós¤ÆA²¥¸½¶àÈ6‹Hm¬/pÚ Àë´íFCnk}±€ ¹¶ÀÛàö¿w׈? à·VW˜(> ƒ‹å%6úŒ ·¿ÈJ4Ü Ïå>ªÌ¨Ü½ãßQ™.qn~Îm«3´lyr ÀpN*eg¡¥åÔ©?½£0¸aÞÁª4e êR¤‘ï¦Aɤ'Çõü(+[°ÔÖ¾C@@@@@@@@@@@@@@@C¿B€7@@ð7 ;®ý°§IEND®B`‚PyQt-gpl-5.5.1/examples/opengl/textures/images/side6.png0000644000076500000240000000424712613140041023227 0ustar philstaff00000000000000‰PNG  IHDRk¬XTðPLTEøxøüøøøøø €øôøø€ø€øàðøˆø$ø(ø,ø8˜øD ø\¨ø`°øh°øl°ø„Àø”Èø€øœÈø¨Ðø¬Ðø¼ØøÌàøÐèøØèøÜèøäðøèðøðøøˆøˆø˜ÈøÄàøìðø¸ØøT¨øŒÀøÔèød°øx¸ø|¸øÈàøˆøÈø´Øø€ø<˜øÀàøp¸ø@ øÐàø€ÀøH øˆÀøL øP¨ø ø0ø Ðø¤Ðø0˜ø4˜øàèø`¨øððø°ÐøÀØø ˆø°Øø ÈøÀøt¸ø@˜øX¨ø€¸øP øp°ÍŒ<ürIDATx^íÝçr¥:†áo‰´sÎ9;çœÝ9ž™û¿›©ê*ÿè3H€·~´Þ p•Ÿ 倀ö70E1000000000000000LƒÁrý¹Ó>± `üåéºzó2oá­ÍÊÑ_ì•NñÿÍ×Ùp{g-H«»™/î|¨+ô3 ð©]ö]«‘M€~ÕGÌJ£ìt_‘ 'È€h瑨ÊÀsÉÚ§,ôŠHX20ºGt~±\¹hì4íÅqãçe@4|(ó •½qf/†‹P•¯uWY¾ûä¯w3~9Ü/BšS»Êü|ÀN ²ò 7ó"“ÈzéZ0#t>‡¤‡Ž SbÍÂsveÀýI÷ “¢Á Â;êX1+|5Gx—c² ç ¼"ž[Íé’;o> +/?"+nÞã„,ÿÿ… Y ßÿóc²à;Â›È €u ¡ù‡dÀ•ƒð:d@0Gxu²À}Dx¯Â€*ÂsFdÀ’d@¿…ðÊdÀ*‡ðü‘Hjß é«°`5ƒ¤g²`I/dÀ7Èúl€ûIE²à²ÚV>$Í\+6µO6BÚÐ €È*‘ KH;¶  i KH{%î íÀ€¡iç6Ô!ÍLH+“Çw`@òN,èCÑÄ€ È›SöÄòʬ¡è€ 5-8‚¢^ö–P5"i£N£zYœ;¾çÏr…³Î •ûPä íCó>lÃqîvú©("é(8m– /ßRH4Ô¨óÊç)hCÕý«I½…•—©¨BÕý]ÓAÌ6“”ä¼ú=|EüŽžR0IðîÿÂG¢î§)èBY›Þ"·‚¤?˜pe]zkü‚äÍ–Æü‚²õÀnïÉYšpe‡oçËÞ—Ó7` u»ô§/>ÞÛÑ®Ñk ƵPÏÇû+LMغ1ÑÒÇ6mL¨@ÝŠˆ§Ø®cƒΠnJ̱eþÈ\€Ô¹ô©ˆ­»1@xP'Ä%4Ô5`„ˆD :Ê C¾ ¢ô´0à µ §a&À-’å_<+áŽý3ñûn&À>Ôºÿ,þâ›4 ˆÛ£™{ˆW Í»± ®ŒØ n…CÙc-Īn$À%b¶qIÖr†8Í„‰Ððó ˆÓ‰‰ˆU…”Mb \˜CœJ‚Ô¿"º‚‰3ÄÈÆ}ßT]` À‘®uˆ®m €¯íBæ‘Õ hiûá>D[– Ð8~7•“Î-à'ÅË!ª¡y"軲üœÆaðk¢GÎÕ5ÍÈ逆P7ÑùäíÂ@ÑÒz7gUk㢇%Ê…ª‘‰u(ëi¼Ñà ::¯I@QL´ÎdO¡¨j$åtŽ\+(Z˜ ðª6‡Á™M¨z¡D Ï'3F:§ñz÷ËP*@ÕXÛ˜r›ÊðMÛ’TÃt.¡q ë´ªH¦Ð Šn´-Kh.@Š¡énsßì…”ô¬§8õ +OæÐW]sH;6àZשÐd9S“Švuëd2ÝèÙ„YC³ºzž[+S³Ô§ÃÝ­ß@ò¦<ëxÆ×u é#™@y(Zn©èæ images/brick.png images/qt-logo.png PyQt-gpl-5.5.1/examples/painting/basicdrawing/basicdrawing_rc.py0000644000076500000240000004613412613140041025035 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 09:37:31 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0e\x70\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x50\x00\x00\x00\x50\x08\x06\x00\x00\x00\x8e\x11\xf2\xad\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\x3d\x00\x00\x01\x3d\ \x01\x9f\xdc\x2b\xea\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0d\xed\x49\x44\ \x41\x54\x78\x9c\xed\x5c\x79\x70\x1c\xd5\x9d\xfe\x7a\x46\x73\x69\ \x34\xba\x0f\xcb\x96\x35\xbe\x8d\x90\x10\xbe\x30\x8e\x85\xed\x10\ \x67\x51\x44\x4c\x16\x58\x76\x97\xb0\xb0\x04\x36\x45\x2a\x86\x62\ \xf1\x06\xb6\x48\xc2\x62\x90\x8b\x50\xd9\xb0\x5b\x9b\x84\x85\x62\ \xd9\x0a\x09\x6c\x41\xc0\x2c\xb5\x0e\x87\x11\xc2\x16\xb2\x25\x1b\ \xb0\x6c\xd9\x96\xe4\xdb\xb2\x75\x59\xb2\x67\xac\xd1\x68\xa6\xef\ \xee\xf7\xf6\x8f\xd6\x31\xb6\xa7\xbb\x67\xa4\x19\x8d\x30\xf9\xaa\ \x5c\xe5\x79\xfd\xbd\xee\x5f\x7f\xfa\xbd\x7e\xc7\xef\xf7\x1e\x43\ \x29\x45\xbc\xf0\xd4\x78\xcb\x01\x54\x03\xa8\x04\x90\xe3\x70\x5a\ \x0a\x2a\x96\x67\x2c\xc8\xcc\xb6\x7a\xac\x69\x8c\xcd\x66\x63\x60\ \xb3\x5b\xa8\xa2\x50\x91\xe7\xd4\x7e\x91\xa7\xc7\x65\x89\xb4\xc8\ \x32\xdd\xa9\x2a\xb4\x69\xcf\x96\x0e\x12\xf7\x43\xa7\x29\x98\x58\ \x05\xf4\xd4\x78\xad\x00\x9e\x06\xf0\x20\x80\x12\x00\xb0\x58\x19\ \x2c\x2a\x4f\x47\xc5\x72\x37\xec\x0e\x4b\x4c\xf7\x51\x15\x8a\x70\ \x48\xe5\x78\x96\x9c\x17\x05\x72\x52\x92\xc8\x7e\x45\xa2\x0d\x8a\ \x42\x1b\xf7\x6c\xe9\x90\x26\xf8\x1e\x29\x43\x4c\x02\x7a\x6a\xbc\ \x33\x00\xfc\x11\xc0\xba\xd1\x32\xbb\xc3\x82\xea\x3b\xf3\xe0\xc9\ \xb2\x26\xc4\x10\xa2\x52\x84\x43\xaa\xc0\xb3\xe4\x82\x28\x90\x53\ \x92\x48\x0e\xc8\x32\xfd\x4c\x91\xe9\x8e\x3d\x5b\x3a\x84\x84\x3c\ \x24\x09\x30\x15\xd0\x53\xe3\xf5\x02\xf8\x1c\xc0\x8c\xc8\xf2\xb5\ \xd5\xd9\x28\x99\xeb\x4c\xa2\x69\x1a\x08\x01\xd8\x90\x2a\xf2\xac\ \xea\x13\x04\xd2\x29\x89\xa4\x55\x96\xe8\x2e\x55\xa1\x9f\x34\xd7\ \x76\x84\x93\x6e\x80\x09\x62\x11\xf0\x1d\x00\x7f\x1d\x59\xb6\xb0\ \x3c\x1d\x37\xac\xc9\x4c\xa6\x5d\xa6\xa0\x14\x60\xc3\xaa\xc4\x85\ \x55\xbf\xc8\x93\x33\x92\x48\x0f\xca\x12\xd9\xad\x28\xb4\xbe\xb9\ \xb6\x63\x70\xaa\xec\x30\x14\xd0\x53\xe3\xfd\x26\x80\x86\xc8\x32\ \xb7\xc7\x8a\x0d\x77\xe7\xc3\x6a\x65\x92\x6c\xda\xc4\x40\x29\xc0\ \x85\x55\x99\x63\xd5\x41\x41\x13\xf6\xb0\x2c\x91\x26\x45\xa6\x75\ \xcd\xb5\x1d\x17\x12\xfd\x3c\x33\x01\x9b\x01\xac\x8e\x2c\x9b\xb7\ \xd8\x85\x55\x37\x67\x25\xda\x8e\x29\x01\xc7\xaa\x0a\x17\x26\x01\ \x81\x27\x5d\x92\x40\xda\x64\x89\xec\x91\x15\x5a\xd7\xfc\x6c\x47\ \xcf\x44\xef\xa9\x2b\xa0\xa7\xc6\x9b\x06\x80\x05\x60\x8f\x2c\x5f\ \x71\x53\x26\x16\x55\xa4\x4f\xf4\x79\xd3\x12\x3c\x47\x54\x2e\xac\ \x0e\x09\x1c\xe9\x11\x45\xd2\x2e\x4b\x74\xaf\x22\x93\xba\xa6\x67\ \x3b\x4e\x9b\xd5\x35\x12\xf0\x5a\x00\x1d\x97\x97\xdf\x72\x47\x1e\ \xf2\x8b\x6c\x93\xb7\xfa\x2b\x00\x91\x27\x84\x0d\xab\xc1\xbe\x6e\ \xb1\x64\x4f\x6d\x07\x17\x8d\x63\x34\x78\xab\xb8\xbc\x80\x61\x80\ \x9c\xbc\xb4\x84\x19\x38\xdd\xe1\x70\x59\x2c\xb9\x05\xb6\x1c\xe6\ \xb2\x56\x18\x09\x23\x01\xe7\x5c\x5e\x60\xb3\x5b\x60\x4d\x9b\x9e\ \x9d\x47\xaa\x60\x24\x60\x6c\x53\x8b\xaf\x39\xfe\x2c\xd2\x24\xf1\ \x67\x01\x27\x89\x94\xf6\x08\x92\x48\xc0\xb1\x04\x16\xd8\x30\x23\ \xb7\x00\x79\x99\x39\x10\x55\x0e\x41\xd1\x0f\x51\xe1\x53\x69\x5a\ \xcc\x98\x52\x01\x55\x15\xe8\xeb\x12\x70\xf6\xa4\x00\x22\xda\xb0\ \x7e\xc5\x6a\x3c\x76\xeb\x46\x5c\xef\x5d\x72\x09\x8f\x52\x82\xfe\ \xf0\x59\x9c\x09\x74\xe0\xb8\x7f\x3f\x5a\xfa\xea\xa1\x12\x65\x2a\ \x4d\x8d\x19\x53\x26\xa0\x6f\x40\xc2\xde\x86\x61\x88\x3c\xc1\xa3\ \x77\xdf\x83\x67\xbe\xff\x9c\x2e\x97\x61\x2c\x98\xe9\x99\x87\x99\ \x9e\x79\xa8\x2a\xbd\x0d\x77\x94\xfd\x18\x75\x27\xdf\x40\x53\xd7\ \x36\xc8\x64\x7a\xad\x78\x4d\x89\x80\xed\xfb\x59\xb4\xed\x0b\x21\ \x27\xd7\x89\x4f\x5f\xdc\x8a\xf2\xd9\x95\x71\xd5\xcf\x71\x15\xe1\ \xee\xca\xc7\xf1\x8d\xd2\xef\xe2\xa5\x2f\x1e\xc7\x90\xe0\x37\xe4\ \xab\x32\xc5\x91\x43\x2c\x00\xe0\xae\x6f\xdd\x8a\x9c\xac\x0c\x0c\ \x09\x3e\x04\xf8\x0b\x18\xe2\x2f\x40\x54\x13\xf7\x79\x48\xba\x80\ \xc7\xdb\x39\x1c\xde\x17\x82\xdb\x6d\xc3\x07\xcf\xbf\x13\xb7\x78\ \x91\xf0\x66\x97\xe1\xa7\xeb\x7e\x8f\x17\x3f\xff\x09\x7a\x82\xc7\ \x75\x79\xbe\xf3\x32\xda\x5a\xc2\x60\x18\x06\xdb\x9e\x78\x02\x05\ \x99\x85\x63\xd7\x5a\xfa\xea\xf1\x6a\xcb\x53\x13\xb6\xe1\x72\x24\ \xb5\x17\xee\xef\x11\x71\xa0\x69\x18\x0c\xc3\xe0\xf5\xa7\x7f\x8b\ \xeb\x4a\xaf\x9f\xf4\x3d\xb3\x9d\x05\x78\x64\xd5\xbf\x23\xc3\x9e\ \xad\xcb\xf1\x0d\x68\xcd\xbc\xb0\xd0\x7d\x89\x78\xc9\x40\xd2\x04\ \xa4\x00\x5a\xf7\x86\x40\x01\x54\xdd\x50\x86\x5b\x2a\x6b\x4c\xeb\ \x88\xb2\x84\xf7\xf6\xbe\x8b\x8f\x0f\x7e\x68\xc8\xcb\x76\xe6\xe3\ \x81\x65\x9b\xc1\x20\xfa\xac\xc8\xd7\xaf\x09\x58\xb1\x70\x41\xbc\ \x66\xc7\x8d\xa4\x09\xd8\x79\x8c\xc7\xd0\xa0\x82\x34\x9b\x05\xbf\ \xdd\xf8\x6b\x53\xfe\xfe\x73\x3b\xb0\xa5\xf1\xfb\x78\x69\x57\x2d\ \xee\xd9\xfc\x30\xca\x7f\xb4\x04\x6f\x34\xfe\x4e\x97\x5f\x51\xb4\ \x1a\xab\x4b\x37\x5c\x51\x4e\x08\x85\xef\x82\x0c\x00\x58\x5b\x59\ \x35\xf1\x17\x88\x11\x49\x11\x90\x52\x8a\xb6\x7d\xda\x6a\xfb\x77\ \xd6\xac\xc4\x82\xa2\x45\x86\xfc\xfe\xd0\x19\xfc\xfe\x40\x2d\x7c\ \x6c\x2f\xe6\x5f\xe3\xc2\xcd\xdf\xcd\x45\x77\x4f\x00\x8f\xfe\xaa\ \x16\xfb\x3b\xbf\xd0\xad\x57\xbd\xf0\xbe\x2b\xbc\x30\x70\x51\x81\ \x2a\x6b\x2b\x4c\x7f\xb9\xf2\xce\x49\xbe\x89\x39\x92\x22\xa0\x6f\ \x40\x06\xc7\xaa\x00\x80\x1f\xd6\x3c\x68\xca\x7f\xb5\xe5\xe7\x90\ \xd4\xf1\xb8\x51\x7e\x91\x0d\x73\x16\x38\xa1\xa8\x14\x0f\xbe\xb0\ \x51\xb7\x5e\x51\x86\x17\x95\x33\x6e\xba\xec\xd9\x5a\xf3\xcd\xce\ \x71\x62\x7e\xd1\x57\xb4\x09\xf7\x76\x8a\x00\x80\xac\x6c\x07\xd6\ \x57\x54\x1b\x72\xfd\x6c\x1f\xfa\x86\xaf\x5c\xb7\xac\x5c\xe9\x01\ \x00\x74\x9e\xf1\xe3\x95\x4f\x5e\xd4\xad\xbf\x6e\xee\x5d\x97\xfc\ \xf6\xf5\x6b\xcd\xb7\x6c\x5e\x69\x5c\x36\x4f\x14\x49\x19\xc6\xf4\ \x9c\xd5\xbc\x69\xf5\x12\xf3\x21\x4b\x67\xa0\x3d\x6a\x79\x86\xc7\ \x0a\x57\xba\x05\x3c\x47\xb0\xf3\x50\x23\x7e\x74\xcb\x23\x51\x79\ \x8b\xf2\x97\x61\xef\x27\x3c\xba\xbb\x82\xf8\x76\xd5\x52\xfc\xdf\ \x53\x7f\x40\x8f\xbf\x1b\xc5\x39\xc5\x51\xf9\x59\xce\x02\x2c\xce\ \x5f\x0e\x56\x1e\x06\x2b\x0d\x83\x93\x86\x27\x35\x2e\x4c\xb8\x80\ \xc3\x01\x15\x6c\x48\x6b\xbe\x77\x54\x7d\xcf\x94\xaf\x27\x20\x00\ \xe4\x16\xda\xd1\x77\x56\xc0\xd1\x4e\xfd\x95\x75\x9b\xc5\x8e\x55\ \x65\x2b\x71\xa6\xb3\x1e\x84\x02\x8b\x8a\xaf\xc1\xa2\xe2\x6b\x74\ \xf9\x0b\xf3\x96\xe0\x9f\xaa\x5e\xba\xa4\x6c\x4f\xf7\x07\xf8\x43\ \xeb\x16\x53\x5b\xa3\x21\xe1\x4d\x78\x28\x20\x8f\xfd\x7f\xcd\x35\ \xeb\x0c\x98\x1a\xce\x04\xae\x88\x1a\x8c\x21\xaf\x40\x0b\x1d\xf4\ \x9e\x0b\x80\x50\xfd\x6c\x90\xf5\xcb\xd6\xc6\x61\xe1\x95\x60\x98\ \x89\x2f\x12\x27\x5c\xc0\xe1\x80\xe6\x7d\x4e\x57\x1a\x4a\xf2\xbd\ \x86\x5c\x0a\x8a\xde\xe0\x09\xdd\xeb\x79\x85\x5a\x03\x91\x25\x82\ \xcf\x4f\x34\xe9\xf2\x16\xcf\x5e\x3c\x01\x4b\x13\x83\x24\x08\xa8\ \xad\x9a\x14\xe5\x9b\x07\xde\x25\x45\x80\x42\x64\xdd\xeb\x99\xd9\ \xe3\xc1\xab\x96\x53\xfb\x74\x79\x79\x9e\xdc\x38\x2c\x4c\x2c\x12\ \xfe\x0d\x0c\x8e\x34\xe1\xd2\x99\xd1\x3f\xe2\x91\x30\xfb\x78\xdb\ \x22\x42\x39\x41\x2e\xa4\xcb\xcb\x72\xe5\xe2\x5b\x1b\x72\x11\x0e\ \xf6\x63\xc9\xc3\x2b\x90\x9b\x99\x89\x9d\xcf\xef\x8c\xca\x1d\x08\ \xf6\xe0\xc8\xc0\x21\xd8\x2d\x76\x38\x6d\x6e\x64\xa7\x67\x21\xc8\ \x5f\x34\xb5\x55\x0f\x09\x17\x90\x63\xb5\x6f\xd5\xac\xfc\x22\x53\ \xae\xa8\x44\x8d\x14\x8e\x21\xcd\x36\xde\x40\x38\x81\xd5\xe5\x65\ \xd8\x73\x50\x5c\xe2\xc0\x59\x81\xc3\xe9\xce\x20\x7a\x1c\xfa\x82\ \xf4\x86\x8f\xe1\xed\x63\x13\xeb\x30\xa2\x21\xe1\x4d\x58\x91\x35\ \x01\xdd\xae\x0c\x53\xae\xa8\x1a\x27\x5d\x59\x2c\xda\x3f\x00\x60\ \x45\x7d\x01\x2d\x8c\x05\x6e\x7b\x6a\xb2\x25\x12\x2a\x20\x21\x14\ \xaa\xd6\x87\x20\x33\x16\x01\x4d\x3c\x10\xc0\x58\x18\x95\xe3\x8d\ \x9b\xbb\xc7\x91\x63\x6e\x60\x12\x90\x50\x01\xd5\x88\x55\xf7\x98\ \x3c\x30\x86\xb8\x87\x6d\xa4\x19\x73\xe2\xd7\x40\x40\x59\x1e\x1f\ \xab\x65\xb9\xcc\x7b\xe1\x58\x66\x00\x69\x23\x1d\xb1\x99\x80\x99\ \x8e\xd4\xf4\xc4\x89\x6d\xc2\xca\x78\x9e\x8d\xdb\xe5\x36\xe5\x4b\ \x31\x78\xe0\x68\x47\x22\x88\xc6\xdf\x4b\x8f\xfd\x2a\xf0\x40\x5b\ \x44\x9e\xf4\x60\xc8\x3c\xc7\xd1\x6a\x89\x61\x10\x30\x92\xfc\xa4\ \xb7\x78\x3a\x0a\x0b\x93\x9a\x10\x77\x42\x9f\x6a\x77\x30\x18\x7d\ \xcf\x0b\x41\x9f\x39\xdf\xea\x32\xe5\x28\x23\x5e\xed\x72\x38\x0c\ \x79\xac\x3c\x6c\x6e\x60\x12\x90\x50\x01\x19\x86\x81\xcd\xa6\x29\ \x78\x31\x68\x3e\x38\xb5\xa7\x99\xe7\x58\x8f\x76\x4c\x0e\xbb\x31\ \x97\x95\xae\x02\x01\x01\xc0\xe1\xd4\x6e\x39\x38\x1c\x30\xe7\xc6\ \xe0\x81\xb2\x3c\xea\x81\x26\x02\x5e\x0d\x1e\x08\x00\x0e\xa7\xb6\ \xed\x61\x30\x6c\xfe\x42\x0e\x6b\x0c\x1e\xa8\x8e\x0a\x68\x2c\xf6\ \x55\xe3\x81\x4e\xa7\xd6\x84\x87\x43\xe6\x3b\x10\xec\x26\x02\x52\ \x68\x1b\x73\x00\x20\xdd\x44\x40\xee\x6a\xf1\x40\xfb\x48\x13\x0e\ \x71\xe6\xb3\x0c\x7b\x9a\xb1\x28\x6a\xc4\xb8\xd2\xed\x30\xce\xcb\ \xbe\x6a\x3c\xd0\x31\x32\x94\x61\x39\xf3\xcd\x45\x66\xdf\x40\x25\ \x62\x66\xe3\x72\xea\x0b\x28\x28\x2c\x08\x55\x63\x33\x30\xc1\x48\ \x9a\x07\xf2\x9c\xfe\x3a\xdf\x28\x1c\x69\x2e\xc3\x29\x98\x24\x8e\ \x7b\x60\x61\x56\x81\x2e\x2f\x68\x92\x2b\x93\x4c\x24\x5c\x40\x4f\ \xd6\xe8\xcc\x41\xc5\xc0\xd0\x39\x53\x7e\x69\x96\x7e\xfc\x22\xe0\ \x1f\xff\x23\x7c\xb3\x62\xbd\x2e\xef\x84\xbf\x35\x0e\x0b\x13\x8b\ \x84\x0b\x58\x50\x3c\xb2\x0a\x4a\x81\x6d\x5f\xbe\x67\xca\xf7\x66\ \x97\xe9\x5e\x1b\xf4\x6b\x6d\xd8\xe3\xb1\x63\x6e\xe1\x7c\x5d\xde\ \x51\xdf\x97\xf1\x19\x99\x40\x24\x5c\xc0\x74\xb7\x15\x6e\x8f\x36\ \x94\x69\x38\xb8\xcb\x94\x3f\x27\x47\x5f\xc0\x80\x6f\x64\x75\x7b\ \x96\x7e\x82\x10\xa5\x04\xc7\xfc\x2d\x31\xdb\x67\xd6\xf3\xc7\x8b\ \xa4\x4c\x20\x0b\x47\xbc\xf0\xd0\x49\xfd\x14\xb4\x51\xc4\xe2\x81\ \xd7\xcd\xd7\x4f\x0d\xe9\x0e\x9e\x00\x2b\x05\xb5\x1f\x31\x44\xd7\ \x66\x66\xea\x7b\xf2\x44\x90\x14\x01\x4b\xe7\x69\xf3\xd6\xbe\xbe\ \x20\x8e\xf4\xb6\x19\x72\xb3\x9d\x05\x51\x5f\x2a\x38\xa8\x8c\x75\ \x22\x35\x2b\xbe\xa3\x5b\xff\x58\x44\xf3\xb5\x3b\x34\x01\x65\x89\ \x42\x52\xc4\xa8\xfc\xbc\xf4\x62\x38\xd3\x12\xb7\x55\x2d\x29\x02\ \xce\xf4\x3a\xe0\x72\x5b\x41\x29\xc5\x0b\xef\xbd\x60\xca\xff\x9b\ \x8a\xc7\xae\x28\x3b\xf8\xa5\x36\x10\x5f\x5a\x31\x07\x77\xae\xfa\ \x5b\xdd\xba\x47\x22\x04\x4c\x77\x6b\x9f\x0e\x4a\x29\x4e\xf6\x47\ \xf7\x7e\x06\x0c\xfe\xaa\x7c\x13\x2e\x76\x66\xe2\xf4\xbe\x0c\xe4\ \x0e\xaf\xc5\x43\x95\xe6\xd9\x63\x7a\x48\x4a\x6a\x07\xc3\x30\x98\ \xb7\xd8\x85\x8e\x03\x61\x7c\xdc\xdc\x0c\xf5\x11\xc5\x70\xe9\xaa\ \xac\x60\x25\x2a\x67\xac\xc1\xe1\x81\xdd\x00\x80\xbe\x6e\x11\x7d\ \x67\x05\xd8\x1d\x16\xfc\xee\xf1\x57\x75\xeb\xf5\x87\xce\xe0\xb8\ \x7f\xff\xd8\x6f\x77\xc6\xf8\xee\xf9\xe3\x7d\x47\x75\xb3\x61\xd7\ \xce\xf9\x1e\xd6\x6e\x1a\xcf\x9a\x50\x88\x04\x1c\x8e\xf9\xf5\x2e\ \x41\xd2\x16\xd1\x16\x57\xa4\xc3\x66\x67\x10\x1a\x96\x51\xfb\xce\ \x66\x53\xfe\xbd\xd7\x3f\x89\xb2\x82\x1b\x71\xe4\x40\x18\xcd\xf5\ \x41\xac\x5c\x3a\x1f\x6f\xd5\xbe\x64\x98\x1a\xb7\xed\xe8\x2b\xa0\ \x11\x19\x0b\x69\x36\x06\xd9\xb9\xda\x1f\x6a\xc7\xa1\xe8\x61\xcd\ \x68\x88\xff\xd8\x8d\x71\x24\x4d\x40\x67\xba\x05\x4b\x57\x69\x19\ \x56\x2f\xfe\xf1\x4d\x9c\x3e\x7f\xca\x90\x9f\xe5\xcc\xc7\x63\xab\ \x7f\x83\xad\x8f\xd5\xa3\xfd\xb5\x5d\xd8\xf1\x8b\x9d\x86\x59\xad\ \x27\xfc\x07\xd0\xda\xdf\x70\x45\xf9\x75\x2b\xb4\x58\xcc\x3b\x1f\ \xd7\xc3\x1f\x8a\x6d\x80\x3d\x99\xdd\x7f\x49\x5d\xc6\x5d\x50\x96\ \x8e\xa2\x59\x76\x48\x22\xc1\xbd\xbf\xfc\x7b\xc3\xfc\x96\x51\xcc\ \xc8\x99\x89\x59\x79\xb3\x0d\x39\x01\xfe\x3c\xfe\xab\xe5\x67\x51\ \xaf\xcd\x9e\xeb\x44\xc9\x5c\x27\x04\x41\xc5\x7d\x2f\xdc\xa7\xdb\ \x99\x8c\xe2\xdc\xf0\x69\x34\x74\x6e\x35\xb5\x4b\x0f\xc9\xcd\xd2\ \x67\x80\xb5\xd5\x39\xd8\xf9\xc1\x20\xda\x8f\xf6\xe1\xb6\xda\x0d\ \xf8\x70\xf3\x47\x93\xba\x65\x48\x0c\xe0\x3f\xbf\x78\x1c\x21\x51\ \x67\xbd\x91\xd1\x0e\xc4\xe8\x3c\xc6\xe3\xd4\xc9\x53\x58\xb9\xe9\ \x1b\x78\xa0\xfa\x1e\xdc\xb8\x78\x15\x96\xcd\xbd\x01\x61\x39\x80\ \x63\xbe\x16\x1c\xf3\xed\xc3\x51\xdf\x3e\x0c\x8b\x13\xcf\x4a\x00\ \x8c\x37\x5c\x3f\x09\xe0\xf9\xc8\x32\xbb\xc3\x82\xbb\x1e\x88\x3f\ \xeb\x5d\x96\x28\x76\xd5\x05\x70\xbe\x4f\xc2\x9a\x1b\xcb\xf1\xf6\ \x93\x6f\xc3\xe3\xf4\xc4\x7d\x9f\xee\xe0\x71\xbc\xfc\xc5\x3f\x63\ \x90\x1f\x88\xbb\xee\x64\xd0\xbe\x3f\x9c\xd3\x5c\xdb\x31\x14\xed\ \xda\x94\x44\x62\x6c\x76\x06\xeb\x37\xe4\xe2\xc6\x75\x59\xf8\xbc\ \xf5\x08\xca\xff\x61\x05\xb6\xee\x79\x2b\xe6\xfa\x7e\xb6\x0f\x6f\ \x1e\xfe\x57\xfc\x72\xd7\x0f\xa7\x5c\x3c\x33\x4c\x5d\x28\x8b\x01\ \xe6\x97\xb9\x70\xc7\xfd\x85\x28\x5f\xee\xc4\x53\xaf\x6f\xc6\x82\ \x1f\x94\x63\xe3\xcb\x0f\x19\x2e\x3a\x10\xaa\x62\xcb\x67\xf7\xa2\ \xf1\xcc\xff\x6a\xc3\x8d\x69\x86\x29\x8f\x05\xa6\x59\x19\x94\xce\ \x77\x62\x6d\x75\x0e\x06\x03\x2c\xde\xf8\x53\x1d\x9e\xdb\xaa\x9f\ \xec\x63\x61\xac\x58\x98\xb7\x74\x0a\x2d\x8c\x0f\x29\xdb\x2f\x6c\ \xb1\x00\xb3\x4a\xb5\x89\xfd\x8e\x2f\xf7\x18\x72\xab\xbc\xb7\x4d\ \x85\x49\x51\xa1\x28\x14\x94\x42\x77\xb9\x3b\xa5\x1b\xae\x4b\xe6\ \x6a\x73\xe6\xde\xde\x21\x9c\x3a\xaf\x9f\xa9\xba\xb4\xf8\x66\xd4\ \x2c\xbc\x3f\x25\xf9\x2f\x6c\x48\xe5\x8d\x4e\x9b\x4b\xa9\x80\x33\ \x4b\x1d\xb0\x5a\xb5\x99\xc0\x7f\xd7\xbd\x62\xc8\xbd\xfd\xda\x8d\ \xf8\x55\xf5\x47\xf8\xc7\x55\x2f\xe3\xf6\xb2\x87\xa7\xc6\x40\x00\ \x02\x47\x0c\x33\x04\x52\x2a\x60\x9a\x8d\x81\x77\x81\x16\x17\x79\ \xaf\xa1\x0e\xb2\x6a\x1c\x06\x60\x18\x0b\xae\x2d\x5a\x86\xf9\xb9\ \x57\x9c\xc8\x92\x34\xf0\x1c\x31\x5c\x4e\x4a\xf9\x99\x09\xcb\xab\ \x32\x91\xe1\xb1\xa2\x7f\x20\x84\x07\xfe\xe3\xfe\x54\x9b\x73\x09\ \x14\x85\x82\x0d\x29\x9b\x8c\x38\x29\x17\xd0\x66\x67\x50\xf5\x17\ \xd9\xb0\x58\x80\x3f\x7d\xda\x8c\x37\x76\xbd\x96\x6a\x93\xc6\x70\ \xbe\x57\x3a\xd8\xf4\x6c\xc7\x49\x23\x4e\xca\x05\x04\x80\xbc\x42\ \x1b\xd6\xd5\xe4\x20\x3b\x2f\x0d\x3f\xf9\xf5\x16\xfc\xdb\xfb\xcf\ \xa5\xfc\x8c\x04\x49\x24\x34\x18\x50\x1e\x32\xe3\x4d\x9b\x73\x9c\ \x8a\x67\x3b\x50\x5c\xe2\x40\x7f\x9f\x88\x6d\xad\x6f\xe1\xc3\xfd\ \xef\x63\xd1\xac\x85\x58\xb2\xb0\x12\x4b\xe7\x5d\x07\xc2\xa8\x60\ \xa5\x20\xfc\xec\x39\x74\x1b\xec\x56\x4f\x04\x64\x89\xd2\xce\xe3\ \xfc\xbd\xbb\x9f\x69\xd7\xdf\x5b\x31\x82\x69\x23\x20\x00\x80\x01\ \x8a\x4b\x34\x21\xb5\x6d\x38\x27\xd0\x1a\x3c\x81\xd6\xd6\x77\xa7\ \xcc\x04\x81\x27\x6a\xd7\x29\xe1\xc7\x8d\xff\xd2\xfe\x66\x2c\xfc\ \xe9\x25\x60\x8a\x40\x29\x30\x3c\xa4\x84\x2e\x5e\x90\xff\x47\x12\ \xc8\x13\x8d\x4f\xb7\xeb\x6f\x09\xb8\x0c\x5f\x2b\x01\x47\x4e\xb7\ \x94\x38\x56\xf5\x89\x02\x3d\x2d\x8b\xe4\x80\xaa\xd2\xcf\xd2\xdd\ \xd6\xfa\xf7\x1f\x3d\x68\x9e\xcc\x13\x05\x57\xa5\x80\x94\x02\x1c\ \xab\x4a\x5c\x98\xf8\xc5\x91\x83\x6b\x55\x85\x36\x38\x5d\x96\xfa\ \x8f\x36\x1d\x4a\xe8\xc1\xb5\x5f\x79\x01\xb5\xf3\x52\xc9\x45\x81\ \x1f\x13\xaa\xd1\x62\x61\x3e\xf9\xf4\xc9\xc3\xc1\xa9\x78\xbe\x91\ \x80\x93\x89\xb5\x24\x1c\x1c\xab\xca\x5c\x98\x8c\x1c\x2c\x4b\x0e\ \xaa\x0a\xdd\xc5\x30\xf8\x78\xc7\x4f\xdb\xcc\x53\x61\x93\x08\x23\ \x01\x5f\x03\x70\x37\x80\x25\x06\x9c\x84\x83\x67\x89\xc2\x86\x47\ \x4f\xe0\x25\x87\x14\x99\xee\x06\x83\xba\x86\x9f\xb5\x99\x67\xad\ \xa7\x00\xba\x02\x86\xb6\x77\x5d\x18\x39\x06\xf9\x03\x00\x37\xe9\ \xf1\x26\x0a\x9e\x25\x0a\xc7\xaa\x01\x81\x23\x5d\xe2\xa8\x50\xc0\ \xf6\x86\x9f\xb7\x25\xfc\xa8\xe2\x64\xc2\xf0\x1b\x18\xda\xde\x15\ \xf4\xd4\x78\x6f\x01\xf0\x2e\x80\x5b\x27\xf2\x80\x91\x13\x72\x47\ \x85\x3a\x2c\x4b\xb4\x89\x12\xba\xbd\xf1\xe9\xf6\xfe\x89\xdc\x6f\ \xba\xc1\xb4\x13\x09\x6d\xef\xe2\x3d\x35\xde\xdb\x01\xbc\x0e\xad\ \x49\x47\x85\xc0\x13\x95\x0d\xa9\x41\x81\x27\x5d\xa2\x40\xda\x14\ \x99\x36\x29\x32\xdd\xbe\xfb\x99\xf6\xde\x44\x1a\x3c\xdd\x10\x53\ \x2f\x1c\xda\xde\x25\x7b\x6a\xbc\x7f\x67\xb5\x82\x13\x78\xf2\x03\ \x36\xa4\x0e\x09\x3c\xe9\x91\x04\xd2\x2e\x49\xb4\x59\x55\xe8\xf6\ \xdd\xcf\xb4\x9f\x4d\xb2\xad\xd3\x12\xff\x0f\xd4\xc9\xcc\xde\x09\ \x31\x84\xf7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xff\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x10\x08\x02\x00\x00\x00\xf8\x62\xea\x0e\ \x00\x00\x02\xc6\x49\x44\x41\x54\x78\x5e\x2d\x94\x5b\x6e\x14\x31\ \x10\x45\xaf\x1f\xdd\x93\x87\x26\x3b\x61\x13\x6c\x82\x2c\x05\x09\ \x85\xf5\xc0\x17\x1f\x91\xf8\x60\x09\x2c\x01\x96\x00\x4a\x08\x93\ \x7e\xda\x2e\xd3\x07\x5b\xb2\x3c\xb7\xed\xaa\xba\xe5\x5b\x55\xe3\ \x7e\xff\xf8\xe4\x83\x8e\x25\x2f\xef\x24\xa7\x5a\xa5\xaa\x6a\x32\ \x93\x8a\x8a\xa9\x16\xf1\x79\xec\x19\x33\xe7\xe4\x3c\x27\xcd\x06\ \x50\xba\x57\x18\x15\x4f\x0a\x83\x42\x94\x8b\xba\x7f\x77\x1f\xe5\ \xb4\x5d\x7e\x1e\xa7\xde\xcb\x60\x92\x0b\x38\x94\x24\xcb\xca\x3b\ \x7b\x2d\x44\xb7\xa4\x92\x89\xee\xa3\x24\x61\x73\x2c\x0c\xb8\x75\ \x9c\x11\x74\xb8\xd6\xd5\x59\xe1\xa4\x8f\x0f\x0f\xd5\x14\x49\xdf\ \x6b\x7b\xf9\x1e\x07\xf9\xa1\xa7\xa0\x22\xdb\xb4\x4d\x4a\xb3\xd2\ \xda\x92\x85\xac\xac\x30\xf9\x08\x4d\x49\x4a\x0b\x87\x32\x59\x85\ \xd2\x7b\x72\x1f\x6f\x95\xee\xf4\xf5\xdb\xa3\x19\x0f\x8d\x3e\xca\ \x07\xd0\x7e\x79\x3c\xf0\xe9\x2c\x13\x49\xa5\x49\xeb\x93\xd6\xbf\ \x5a\x9e\xb5\xbd\x76\x11\xf6\x49\x79\xc3\xd8\xb2\x20\x98\x94\x93\ \xbc\x07\xd7\x8a\x2c\xa7\x3b\xd2\x1f\x6e\x39\x21\x90\x14\x11\x34\ \x70\x67\x41\xf1\x4a\x68\x35\x08\xb9\xb9\xee\xc5\xc8\x8b\x0a\x42\ \x69\x3f\xc0\x26\x09\x17\xcb\xec\x82\x09\x25\x11\x30\xe2\xbe\x47\ \xc8\x10\x16\x5f\x08\xc4\x93\x79\x84\xc2\x08\x46\x90\x4a\xc4\x7d\ \xd6\xf2\x87\xac\xab\xc0\x79\x26\x5f\x3c\x0d\x29\x9c\x47\x3d\x21\ \x9d\xd2\x84\x4b\x74\x94\x24\x9c\x90\x8e\xc7\xad\x70\x53\x03\x08\ \xbc\x58\x4e\x56\x10\x61\xbb\x68\x7d\x39\xa2\x03\xa8\x81\x61\x3d\ \x3f\xc1\x44\x6d\x33\x42\x43\x30\x37\x2f\x70\x2d\x00\x33\x82\xaa\ \xe2\x95\x56\x42\x21\x11\x46\xad\x6e\x99\x23\x42\x1f\xeb\xb9\xfb\ \x13\x55\xec\x14\x79\x07\xca\xa1\x80\x84\xb1\x0f\xc8\x32\xdc\x48\ \xb5\xe9\x86\x86\xbe\x35\x71\x81\x2f\x9a\x61\x1a\xbc\x6c\x04\x94\ \x0d\xe6\xfd\x42\xee\xfb\x2b\x5a\xf1\xa6\x05\x07\x1f\xa1\x2c\x49\ \x00\x4f\xd9\x54\x7b\xdc\x38\x8a\x11\xf2\x54\x51\xea\x1d\xc1\x51\ \x55\xac\xd6\x8a\x46\x2e\x56\xf0\xa7\xb5\x0d\x4c\x9b\x2e\xad\x23\ \x49\xb6\x4b\x81\x08\xec\x36\x62\x23\x75\xee\x10\x28\xcc\x70\xcb\ \x67\x97\xce\xc3\x11\xf9\x31\x59\xa6\x43\xbc\x27\x90\x25\xc8\x5a\ \xe5\x6b\xe5\x24\x2f\x90\x95\x95\xd4\xe4\xe0\xa8\x4e\xb6\x73\x9b\ \x92\xe4\x35\xde\xc8\x0d\xaa\x6a\xd5\x6e\x94\x3d\xa1\x48\xc3\x24\ \x5a\x65\xfa\x45\x0a\x96\x7b\x3d\x10\x77\x54\x0a\xca\x85\x39\xd8\ \xa7\x3e\x50\x88\x96\xb9\x95\xa3\x2a\xb5\x80\xd3\xcc\x5e\x79\x19\ \x41\xb9\x45\x15\x02\x46\xcb\xe8\x30\x3f\x43\x30\x9e\xb9\x2b\x3b\ \x59\xcb\x14\x22\x4b\x7d\x1a\xda\x28\xc1\x9d\x50\xb5\xff\x3d\xc4\ \x6b\x85\x13\x98\x96\x15\xb8\x71\x93\x62\xc0\x3e\xa2\x7b\xd6\x97\ \xcf\x4c\xf6\xe9\xdc\xa7\x54\x28\x40\xd6\xfb\x2c\xd2\xbf\x40\x69\ \xd6\x95\xad\x6d\x0c\x1d\xd8\x2f\x0a\x9b\xc2\xd4\xab\xc8\x1a\x60\ \x8a\x9d\x09\x02\x7d\x78\xff\xd0\x06\x2f\x8c\x30\x4b\x62\xfa\x33\ \xba\x1b\x93\xd5\x0b\x53\xba\x32\x92\x41\x46\x94\x91\x70\x2e\x61\ \x2f\x07\x06\x08\x62\x30\x25\x94\x7b\xfb\x46\xf2\x78\x49\x5d\x38\ \x80\x5a\x3b\x61\x41\x38\x74\x07\x34\x3b\xd2\xaf\xed\x05\x70\x74\ \x17\x34\x81\xc0\x35\x8e\xd0\x5b\xee\x1f\xb6\x84\x15\x24\xe2\x59\ \x92\x70\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0f\x9e\x84\x47\ \x00\x62\ \x00\x72\x00\x69\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x74\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/painting/basicdrawing/images/0000755000076500000240000000000012613140041022577 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/painting/basicdrawing/images/brick.png0000644000076500000240000000137712613140041024407 0ustar philstaff00000000000000‰PNG  IHDR øbêÆIDATx^-”[n1E¯Ý“‡&;al‚, …õÀ‘ø` ,–J“~Ú.Ó[²<·íªºå[Uã~ÿøäƒŽ%/ï$§Z¥ªj2“ŠŠ©ñyì3çä<'ÍPºWO ƒB”‹ºwå´]~§ÞË`’ 8”$ËÊ;{-D·¤’‰î£$as, ¸uœt¸ÖÕYá¤ÕIßk{ùù¡§ "Û´MJ³ÒÚ’…¬¬0ùMIJ ‡2Y…Ò{ro•îôõÛ£>ÊÐ~y<ðé,I¥Ië“Ö¿Zžµ½vöIyÃØ² ˜”“¼׊,§;Òn9!4pgAñJh5¹¹îÅÈ‹ Bi?À& Ëì‚ %0â¾GÈ_Ä“y„ÂFJÄ}Öò‡¬«Ày&_< )œG=!Ò„Kt”$œŽÇ­pS¼XNVa»h}9¢¨a=?ÁDm3BC07/p-3‚ªâ•VB!F­n™#Bë¹ûUìyÊ¡€„±È2ÜHµé††¾5q/ša¼l” æýBîû+Zñ¦¡,IOÙT{Ü8ŠòTQêÁQU¬ÖŠF.Vð§µ L›.­#I¶Kì6b#uî(ÌpËg—ÎÃù1Y¦C¼'%ÈZåkå$/••Ôäà¨N¶s›’ä5ÞÈ ªjÕn”=¡HÃ$ZeúE –{=wT Ê…9ا>Pˆ–¹•£*µ€ÓÌ^yA¹EFËè0?C0ž¹+;YË"K}Ú(ÁPµÿ=Äk…˜–¸q“bÀ>¢{Ö—ÏLöéܧT(@Öû,Ò¿@iÖ•­m Ø/ ›ÂÔ«È`Š }xÿÐ/Œ0Kbú3º“Õ Sº2’AF”‘p.a/b0%”{ûFòxI]8€Z;aA8t4;Ò¯ípt4À5ŽÐ[î¶„$âY’pIEND®B`‚PyQt-gpl-5.5.1/examples/painting/basicdrawing/images/qt-logo.png0000644000076500000240000000716012613140041024673 0ustar philstaff00000000000000‰PNG  IHDRPPŽò­sBIT|dˆ pHYs==ŸÜ+êtEXtSoftwarewww.inkscape.org›î< íIDATxœí\ypÕþzFsi4ºË–5¾¾0Ž…ígQDLXv—°°6E*†bñ¶HÂb‹PÙ°[›„…bÙ lAÀ,µ‡Â²%°lÙ–äÛ²uY²g¬Ñh¦ïî÷öÖ1¶§»g¤0ùª\åyý½î_ú½~Çï÷C)E¼ðÔxËT¨ãpZ *–g,È̶z¬iŒÍfc`³[¨¢P‘çÔ~‘§Çe‰´È2Ý©*´iÏ–÷C§)˜XôÔx­žð €°X,*OGÅr7ìKL÷QŠpHåx–œrR’È~E¢ ŠB÷lé&ø)CLzj¼3üÀºÑ2»Ã‚ê;óàɲ&Ä¢R„CªÀ³ä‚(S’HÈ2ýL‘éŽ=[:„„<$ 0ÐSãõøÀŒÈòµÕÙ(™ëL¢iØ*ò¬êÒ)‰¤U–è.U¡Ÿ4×v„“n€ bðY¶°<7¬ÉL¦]¦ `êąU¿È“3’HÊÙ­(´¾¹¶cpªì0ÐSãý&€†È2·ÇŠ wçÃje’lÚÄ@)À…U™cÕAAö°,‘&E¦u͵ý<3›¬Ž,›·Ø…U7g%ÚŽ)Ǫ &']’@Úd‰ì‘Z×ülGÏDï©+ §Æ›€`,_qS&U¤OôyÓø â/@T÷yHº€ÇÛ9Þ‚ÛmÃÏ¿·x‘ðf—á§ë~?ÿ z‚Çuy¾ó2ÚZÂ`Ûžx™…c×ZúêñjËS¶ár$µîïq i Ãàõ§‹ëJ¯Ÿô=³xdÕ¿#Þ­Ëñ hͼ°Ð}‰xÉ@Ò¤Z÷†@TÝP†[*kL눲„÷ö¾‹~hÈËvæãe›Á ú¬Èׯ X±pA¼fǤ ØyŒÇР‚4›¿ÝøkSþþs;°¥ñûxiW-îÙü0Ê´o4þN—_Q´«K7\QN…ï‚ X[Y5ñˆIRж}Újûw֬Ă¢E†üþÐüþ@-|l/æ_ãÂÍßÍEwOþªû;¿Ð­W½ð¾+¼0pQ*k+L¹òÎI¾‰9’" o@Ǫ€Ö8µ§™çXvL»1—•®ÀáÔn980çÆà²<ê&^ §¶ía0lþBk ¨Ž h,öUãN§Ö„‡Cæ;ì&Rhs ÝD@îjñ@ûHqæ³ {š±(jĸÒí0Î˾j<Ð12”a9óÍEfß@%bfãrê ((,Uc30ÁHšòœþ:ß(i.Ã)˜$Ž{`aV./h’+“L$\@OÖèÌAÅÀÐ9S~i–~ü"àÿ#|³b½.ï„¿5 ‹„ XP<² Jm_¾gÊ÷f—é^ôkmØã±cná|]ÞQß—ñ™@$\Àt·n6”i8¸Ë”?'G_À€odu{–~‚¥Çü-1ÛgÖóÇ‹¤L G¼ðÐIý´QÄâ×Í×O éž+µ1D×ffê{òDKçióÖ¾¾ Žô¶r³Q_*8¨Œu"5+¾£[ÿXDóµ;4e‰BRĨü¼ôb8Ó·U-)Îô:àr[A)Å ï½`Êÿ›ŠÇ®(;ø¥6_Z1w®ú[ݺG"LwkŸJ)NöG÷~ þª|.vfâô¾ ä¯ÅC•æÙczHJjÃ0˜·Ø…Ža|ÜÜ õÅp骬`%*g¬ÁáÝ€¾n}gØüîñWuëõ‡Îà¸ÿØowÆøîùã}Gu³a×ÎùÖnÏšPˆŽùõ.AÒÑW¤Ãfg–QûÎfSþ½×?‰²‚qä@ÍõA¬\:oÕ¾d˜·íè+  i6Ù¹ÚjÇ¡èaÍhˆÿØq$M@gºKWiV/þñMœ>ÊŸåÌÇc«ƒ­Õ£ýµ]Øñ‹†Y­'üÐÚßpEùu+´XÌ;×Êm€=™ÝI]Æ]P–Ž¢YvH"Á½¿ü{Ãü–QÌÈ™‰Yy³ 9þ<þ«ågQ¯ÍžëDÉ\'AÅ}/ܧۙŒâÜði4tn5µKÉÍÒg€µÕ9ØùÁ Úöá¶Ú øpóG“ºeH à?¿x!Qg½‘ÑÄè<ÆãÔÉSX¹éx úܸx–ͽa9€c¾óíÃQß> ‹ÏJŒ7\? àùÈ2»Ã‚»ˆ?ë]–(vÕp¾OšËñö“oÃãôÄ}Ÿîàq¼üÅ?cˆ»îdо?œÓ\Û1íÚ”Dblvë7äâÆuYø¼õÊÿa¶îy+æú~¶oþWür×§\<3L](‹æ—¹pÇý…(_îÄS¯oÆ‚”cãË.:ªbËg÷¢ñÌÿjÃi†)¦Y”Îwbmu,ÞøSžÛªŸìca¬X˜·t -Œ)Û/l±³Jµ‰ýŽ/÷r«¼·M…IQ¡(”Bw¹;¥®KæjsæÞÞ!œ:¯Ÿ©º´øfÔ,¼?%ù/lHåN›K©€3K°Zµ™À×½bȽýÚøUõGøÇU/ãö²‡§Æ@G 3R*`šwy¯¡²j` ®-Z†ù¹WœÈ’4ð1\NJù™ Ë«2‘á±¢ „þãþT›s …‚ )›Œ8)ÐfgPõÙ°X€?}ÚŒ7v½–j“Æp¾W:ØôlÇI#NÊ€¼BÖÕä ;/ ?ùõüÛûÏ¥üŒI$4P2ãM›sœŠg;P\â@Ÿˆm­oáÃýïcѬ…X²°Kç]¨`¥ üì9tìVOd‰ÒÎãü½»Ÿi×ß[1‚i# €ŠK4!µm8'Ð<ÖÖw§Ì'j×)áÇÿÒþf,üé%`Š@)0<¤„.^ÿGÈO·ëo ¸ _+GN·”8Võ‰=-‹ä€ªÒÏÒÝÖú÷=hžÌW¥€”«J\˜øÅ‘ƒkU…68]–ú6JèÁµ_yµóRÉEªÑba>ùôÉÃÁ©x¾‘€“‰µ$«Ê\˜Œ,Kª ÝÅ0øxÇOÛÌSa“#_p7€%œ„ƒg‰Â†GOà%‡™îƒº†Ÿµ™g­§º†¶w]9ù7éñ& ž% Ǫ#]â¨PÀö†Ÿ·%ü¨âdÂðÚÞôÔxoð.€['ò€‘rG…:,K´‰º½ñéöþ‰ÜoºÁ´ mïâ=5ÞÛ¼­IG…À• ©A']¢@Ú™6)2ݾû™öÞD<ÝS/ÚÞ%{j¼gµ‚xò6¤ <é‘Ò.I´YUèöÝÏ´ŸM²­ÓÿÔÉÌÞ 1„÷IEND®B`‚PyQt-gpl-5.5.1/examples/painting/concentriccircles.py0000755000076500000240000001171512613140041022753 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QRect, QRectF, QSize, Qt, QTimer from PyQt5.QtGui import QColor, QPainter, QPalette, QPen from PyQt5.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel, QSizePolicy, QWidget) class CircleWidget(QWidget): def __init__(self, parent=None): super(CircleWidget, self).__init__(parent) self.floatBased = False self.antialiased = False self.frameNo = 0 self.setBackgroundRole(QPalette.Base) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) def setFloatBased(self, floatBased): self.floatBased = floatBased self.update() def setAntialiased(self, antialiased): self.antialiased = antialiased self.update() def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(180, 180) def nextAnimationFrame(self): self.frameNo += 1 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.frameNo % 128) - diameter / 2) alpha = 255 - (delta * delta) / 4 - diameter if alpha > 0: painter.setPen(QPen(QColor(0, diameter / 2, 127, alpha), 3)) if self.floatBased: painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter)) else: painter.drawEllipse(QRect(-diameter / 2, -diameter / 2, diameter, diameter)) class Window(QWidget): def __init__(self): super(Window, self).__init__() aliasedLabel = self.createLabel("Aliased") antialiasedLabel = self.createLabel("Antialiased") intLabel = self.createLabel("Int") floatLabel = self.createLabel("Float") layout = QGridLayout() layout.addWidget(aliasedLabel, 0, 1) layout.addWidget(antialiasedLabel, 0, 2) layout.addWidget(intLabel, 1, 0) layout.addWidget(floatLabel, 2, 0) timer = QTimer(self) for i in range(2): for j in range(2): w = CircleWidget() w.setAntialiased(j != 0) w.setFloatBased(i != 0) timer.timeout.connect(w.nextAnimationFrame) layout.addWidget(w, i + 1, j + 1) timer.start(100) self.setLayout(layout) self.setWindowTitle("Concentric Circles") def createLabel(self, text): label = QLabel(text) label.setAlignment(Qt.AlignCenter) label.setMargin(2) label.setFrameStyle(QFrame.Box | QFrame.Sunken) return label if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/painting/painterpaths.py0000755000076500000240000002541312613140041021761 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 math import cos, pi, sin from PyQt5.QtCore import QSize, Qt from PyQt5.QtGui import (QBrush, QColor, QFont, QLinearGradient, QPainter, QPainterPath, QPalette, QPen) from PyQt5.QtWidgets import (QApplication, QComboBox, QGridLayout, QLabel, QSizePolicy, QSpinBox, QWidget) class RenderArea(QWidget): def __init__(self, path, parent=None): super(RenderArea, self).__init__(parent) self.path = path self.penWidth = 1 self.rotationAngle = 0 self.setBackgroundRole(QPalette.Base) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(100, 100) def setFillRule(self, rule): self.path.setFillRule(rule) self.update() def setFillGradient(self, color1, color2): self.fillColor1 = color1 self.fillColor2 = color2 self.update() def setPenWidth(self, width): self.penWidth = width self.update() def setPenColor(self, color): self.penColor = color self.update() def setRotationAngle(self, degrees): self.rotationAngle = degrees self.update() def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.scale(self.width() / 100.0, self.height() / 100.0) painter.translate(50.0, 50.0) painter.rotate(-self.rotationAngle) painter.translate(-50.0, -50.0) painter.setPen( QPen(self.penColor, self.penWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) gradient = QLinearGradient(0, 0, 0, 100) gradient.setColorAt(0.0, self.fillColor1) gradient.setColorAt(1.0, self.fillColor2) painter.setBrush(QBrush(gradient)) painter.drawPath(self.path) class Window(QWidget): NumRenderAreas = 9 def __init__(self): super(Window, self).__init__() rectPath = QPainterPath() rectPath.moveTo(20.0, 30.0) rectPath.lineTo(80.0, 30.0) rectPath.lineTo(80.0, 70.0) rectPath.lineTo(20.0, 70.0) rectPath.closeSubpath() roundRectPath = QPainterPath() roundRectPath.moveTo(80.0, 35.0) roundRectPath.arcTo(70.0, 30.0, 10.0, 10.0, 0.0, 90.0) roundRectPath.lineTo(25.0, 30.0) roundRectPath.arcTo(20.0, 30.0, 10.0, 10.0, 90.0, 90.0) roundRectPath.lineTo(20.0, 65.0) roundRectPath.arcTo(20.0, 60.0, 10.0, 10.0, 180.0, 90.0) roundRectPath.lineTo(75.0, 70.0) roundRectPath.arcTo(70.0, 60.0, 10.0, 10.0, 270.0, 90.0) roundRectPath.closeSubpath() ellipsePath = QPainterPath() ellipsePath.moveTo(80.0, 50.0) ellipsePath.arcTo(20.0, 30.0, 60.0, 40.0, 0.0, 360.0) piePath = QPainterPath() piePath.moveTo(50.0, 50.0) piePath.lineTo(65.0, 32.6795) piePath.arcTo(20.0, 30.0, 60.0, 40.0, 60.0, 240.0) piePath.closeSubpath() polygonPath = QPainterPath() polygonPath.moveTo(10.0, 80.0) polygonPath.lineTo(20.0, 10.0) polygonPath.lineTo(80.0, 30.0) polygonPath.lineTo(90.0, 70.0) polygonPath.closeSubpath() groupPath = QPainterPath() groupPath.moveTo(60.0, 40.0) groupPath.arcTo(20.0, 20.0, 40.0, 40.0, 0.0, 360.0) groupPath.moveTo(40.0, 40.0) groupPath.lineTo(40.0, 80.0) groupPath.lineTo(80.0, 80.0) groupPath.lineTo(80.0, 40.0) groupPath.closeSubpath() textPath = QPainterPath() timesFont = QFont('Times', 50) timesFont.setStyleStrategy(QFont.ForceOutline) textPath.addText(10, 70, timesFont, "Qt") bezierPath = QPainterPath() bezierPath.moveTo(20, 30) bezierPath.cubicTo(80, 0, 50, 50, 80, 80) starPath = QPainterPath() starPath.moveTo(90, 50) for i in range(1, 5): starPath.lineTo(50 + 40 * cos(0.8 * i * pi), 50 + 40 * sin(0.8 * i * pi)) starPath.closeSubpath() self.renderAreas = [RenderArea(rectPath), RenderArea(roundRectPath), RenderArea(ellipsePath), RenderArea(piePath), RenderArea(polygonPath), RenderArea(groupPath), RenderArea(textPath), RenderArea(bezierPath), RenderArea(starPath)] assert len(self.renderAreas) == 9 self.fillRuleComboBox = QComboBox() self.fillRuleComboBox.addItem("Odd Even", Qt.OddEvenFill) self.fillRuleComboBox.addItem("Winding", Qt.WindingFill) fillRuleLabel = QLabel("Fill &Rule:") fillRuleLabel.setBuddy(self.fillRuleComboBox) self.fillColor1ComboBox = QComboBox() self.populateWithColors(self.fillColor1ComboBox) self.fillColor1ComboBox.setCurrentIndex( self.fillColor1ComboBox.findText("mediumslateblue")) self.fillColor2ComboBox = QComboBox() self.populateWithColors(self.fillColor2ComboBox) self.fillColor2ComboBox.setCurrentIndex( self.fillColor2ComboBox.findText("cornsilk")) fillGradientLabel = QLabel("&Fill Gradient:") fillGradientLabel.setBuddy(self.fillColor1ComboBox) fillToLabel = QLabel("to") fillToLabel.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.penWidthSpinBox = QSpinBox() self.penWidthSpinBox.setRange(0, 20) penWidthLabel = QLabel("&Pen Width:") penWidthLabel.setBuddy(self.penWidthSpinBox) self.penColorComboBox = QComboBox() self.populateWithColors(self.penColorComboBox) self.penColorComboBox.setCurrentIndex( self.penColorComboBox.findText('darkslateblue')) penColorLabel = QLabel("Pen &Color:") penColorLabel.setBuddy(self.penColorComboBox) self.rotationAngleSpinBox = QSpinBox() self.rotationAngleSpinBox.setRange(0, 359) self.rotationAngleSpinBox.setWrapping(True) self.rotationAngleSpinBox.setSuffix(u'\N{DEGREE SIGN}') rotationAngleLabel = QLabel("&Rotation Angle:") rotationAngleLabel.setBuddy(self.rotationAngleSpinBox) self.fillRuleComboBox.activated.connect(self.fillRuleChanged) self.fillColor1ComboBox.activated.connect(self.fillGradientChanged) self.fillColor2ComboBox.activated.connect(self.fillGradientChanged) self.penColorComboBox.activated.connect(self.penColorChanged) for i in range(Window.NumRenderAreas): self.penWidthSpinBox.valueChanged.connect(self.renderAreas[i].setPenWidth) self.rotationAngleSpinBox.valueChanged.connect(self.renderAreas[i].setRotationAngle) topLayout = QGridLayout() for i in range(Window.NumRenderAreas): topLayout.addWidget(self.renderAreas[i], i / 3, i % 3) mainLayout = QGridLayout() mainLayout.addLayout(topLayout, 0, 0, 1, 4) mainLayout.addWidget(fillRuleLabel, 1, 0) mainLayout.addWidget(self.fillRuleComboBox, 1, 1, 1, 3) mainLayout.addWidget(fillGradientLabel, 2, 0) mainLayout.addWidget(self.fillColor1ComboBox, 2, 1) mainLayout.addWidget(fillToLabel, 2, 2) mainLayout.addWidget(self.fillColor2ComboBox, 2, 3) mainLayout.addWidget(penWidthLabel, 3, 0) mainLayout.addWidget(self.penWidthSpinBox, 3, 1, 1, 3) mainLayout.addWidget(penColorLabel, 4, 0) mainLayout.addWidget(self.penColorComboBox, 4, 1, 1, 3) mainLayout.addWidget(rotationAngleLabel, 5, 0) mainLayout.addWidget(self.rotationAngleSpinBox, 5, 1, 1, 3) self.setLayout(mainLayout) self.fillRuleChanged() self.fillGradientChanged() self.penColorChanged() self.penWidthSpinBox.setValue(2) self.setWindowTitle("Painter Paths") def fillRuleChanged(self): rule = Qt.FillRule(self.currentItemData(self.fillRuleComboBox)) for i in range(Window.NumRenderAreas): self.renderAreas[i].setFillRule(rule) def fillGradientChanged(self): color1 = QColor(self.currentItemData(self.fillColor1ComboBox)) color2 = QColor(self.currentItemData(self.fillColor2ComboBox)) for i in range(Window.NumRenderAreas): self.renderAreas[i].setFillGradient(color1, color2) def penColorChanged(self): color = QColor(self.currentItemData(self.penColorComboBox)) for i in range(Window.NumRenderAreas): self.renderAreas[i].setPenColor(color) def populateWithColors(self, comboBox): colorNames = QColor.colorNames() for name in colorNames: comboBox.addItem(name, name) def currentItemData(self, comboBox): return comboBox.itemData(comboBox.currentIndex()) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/painting/README0000644000076500000240000000165112613140041017560 0ustar philstaff00000000000000PyQt's painting system is able to render vector graphics, images, and outline font-based text with sub-pixel accuracy using anti-aliasing to improve rendering quality. These examples show the most common techniques that are used when painting with PyQt, from basic concepts such as drawing simple primitives to the use of transformations. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/painting/svgviewer/0000755000076500000240000000000012613140041020716 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/painting/svgviewer/files/0000755000076500000240000000000012613140041022020 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/painting/svgviewer/files/bubbles.svg0000644000076500000240000002356312613140041024170 0ustar philstaff00000000000000 Spheres Semi-transparent bubbles on a colored background. PyQt-gpl-5.5.1/examples/painting/svgviewer/files/cubic.svg0000644000076500000240000001224012613140041023625 0ustar philstaff00000000000000 Example cubic02 - cubic Bezier commands in path data Picture showing examples of "C" and "S" commands, along with annotations showing the control points and end points M100,200 C100,100 400,100 400,200 M100,500 C25,400 475,400 400,500 M100,800 C175,700 325,700 400,800 M600,200 C675,100 975,100 900,200 M600,500 C600,350 900,650 900,500 M600,800 C625,700 725,700 750,800 S875,900 900,800 PyQt-gpl-5.5.1/examples/painting/svgviewer/files/spheres.svg0000644000076500000240000000606612613140041024222 0ustar philstaff00000000000000 Spheres Gradient filled spheres with different colors. PyQt-gpl-5.5.1/examples/painting/svgviewer/svgviewer.py0000755000076500000240000002476312613140041023330 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QSize, Qt from PyQt5.QtGui import QBrush, QColor, QImage, QPainter, QPixmap, QPen from PyQt5.QtWidgets import (QActionGroup, QApplication, QFileDialog, QGraphicsItem, QGraphicsRectItem, QGraphicsScene, QGraphicsView, QMainWindow, QMenu, QMessageBox, QWidget) from PyQt5.QtOpenGL import QGL, QGLFormat, QGLWidget from PyQt5.QtSvg import QGraphicsSvgItem import svgviewer_rc class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.currentPath = '' self.view = SvgView() fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") self.menuBar().addMenu(fileMenu) viewMenu = QMenu("&View", self) self.backgroundAction = viewMenu.addAction("&Background") self.backgroundAction.setEnabled(False) self.backgroundAction.setCheckable(True) self.backgroundAction.setChecked(False) self.backgroundAction.toggled.connect(self.view.setViewBackground) self.outlineAction = viewMenu.addAction("&Outline") self.outlineAction.setEnabled(False) self.outlineAction.setCheckable(True) self.outlineAction.setChecked(True) self.outlineAction.toggled.connect(self.view.setViewOutline) self.menuBar().addMenu(viewMenu) rendererMenu = QMenu("&Renderer", self) self.nativeAction = rendererMenu.addAction("&Native") self.nativeAction.setCheckable(True) self.nativeAction.setChecked(True) if QGLFormat.hasOpenGL(): self.glAction = rendererMenu.addAction("&OpenGL") self.glAction.setCheckable(True) self.imageAction = rendererMenu.addAction("&Image") self.imageAction.setCheckable(True) if QGLFormat.hasOpenGL(): rendererMenu.addSeparator() self.highQualityAntialiasingAction = rendererMenu.addAction("&High Quality Antialiasing") self.highQualityAntialiasingAction.setEnabled(False) self.highQualityAntialiasingAction.setCheckable(True) self.highQualityAntialiasingAction.setChecked(False) self.highQualityAntialiasingAction.toggled.connect(self.view.setHighQualityAntialiasing) rendererGroup = QActionGroup(self) rendererGroup.addAction(self.nativeAction) if QGLFormat.hasOpenGL(): rendererGroup.addAction(self.glAction) rendererGroup.addAction(self.imageAction) self.menuBar().addMenu(rendererMenu) openAction.triggered.connect(self.openFile) quitAction.triggered.connect(QApplication.instance().quit) rendererGroup.triggered.connect(self.setRenderer) self.setCentralWidget(self.view) self.setWindowTitle("SVG Viewer") def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open SVG File", self.currentPath, "SVG files (*.svg *.svgz *.svg.gz)") if path: svg_file = QFile(path) if not svg_file.exists(): QMessageBox.critical(self, "Open SVG File", "Could not open file '%s'." % path) self.outlineAction.setEnabled(False) self.backgroundAction.setEnabled(False) return self.view.openFile(svg_file) if not path.startswith(':/'): self.currentPath = path self.setWindowTitle("%s - SVGViewer" % self.currentPath) self.outlineAction.setEnabled(True) self.backgroundAction.setEnabled(True) self.resize(self.view.sizeHint() + QSize(80, 80 + self.menuBar().height())) def setRenderer(self, action): if QGLFormat.hasOpenGL(): self.highQualityAntialiasingAction.setEnabled(False) if action == self.nativeAction: self.view.setRenderer(SvgView.Native) elif action == self.glAction: if QGLFormat.hasOpenGL(): self.highQualityAntialiasingAction.setEnabled(True) self.view.setRenderer(SvgView.OpenGL) elif action == self.imageAction: self.view.setRenderer(SvgView.Image) class SvgView(QGraphicsView): Native, OpenGL, Image = range(3) def __init__(self, parent=None): super(SvgView, self).__init__(parent) self.renderer = SvgView.Native self.svgItem = None self.backgroundItem = None self.outlineItem = None self.image = QImage() self.setScene(QGraphicsScene(self)) self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.setDragMode(QGraphicsView.ScrollHandDrag) self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) # Prepare background check-board pattern. tilePixmap = QPixmap(64, 64) tilePixmap.fill(Qt.white) tilePainter = QPainter(tilePixmap) color = QColor(220, 220, 220) tilePainter.fillRect(0, 0, 32, 32, color) tilePainter.fillRect(32, 32, 32, 32, color) tilePainter.end() self.setBackgroundBrush(QBrush(tilePixmap)) def drawBackground(self, p, rect): p.save() p.resetTransform() p.drawTiledPixmap(self.viewport().rect(), self.backgroundBrush().texture()) p.restore() def openFile(self, svg_file): if not svg_file.exists(): return s = self.scene() if self.backgroundItem: drawBackground = self.backgroundItem.isVisible() else: drawBackground = False if self.outlineItem: drawOutline = self.outlineItem.isVisible() else: drawOutline = True s.clear() self.resetTransform() self.svgItem = QGraphicsSvgItem(svg_file.fileName()) self.svgItem.setFlags(QGraphicsItem.ItemClipsToShape) self.svgItem.setCacheMode(QGraphicsItem.NoCache) self.svgItem.setZValue(0) self.backgroundItem = QGraphicsRectItem(self.svgItem.boundingRect()) self.backgroundItem.setBrush(Qt.white) self.backgroundItem.setPen(QPen(Qt.NoPen)) self.backgroundItem.setVisible(drawBackground) self.backgroundItem.setZValue(-1) self.outlineItem = QGraphicsRectItem(self.svgItem.boundingRect()) outline = QPen(Qt.black, 2, Qt.DashLine) outline.setCosmetic(True) self.outlineItem.setPen(outline) self.outlineItem.setBrush(QBrush(Qt.NoBrush)) self.outlineItem.setVisible(drawOutline) self.outlineItem.setZValue(1) s.addItem(self.backgroundItem) s.addItem(self.svgItem) s.addItem(self.outlineItem) s.setSceneRect(self.outlineItem.boundingRect().adjusted(-10, -10, 10, 10)) def setRenderer(self, renderer): self.renderer = renderer if self.renderer == SvgView.OpenGL: if QGLFormat.hasOpenGL(): self.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers))) else: self.setViewport(QWidget()) def setHighQualityAntialiasing(self, highQualityAntialiasing): if QGLFormat.hasOpenGL(): self.setRenderHint(QPainter.HighQualityAntialiasing, highQualityAntialiasing) def setViewBackground(self, enable): if self.backgroundItem: self.backgroundItem.setVisible(enable) def setViewOutline(self, enable): if self.outlineItem: self.outlineItem.setVisible(enable) def paintEvent(self, event): if self.renderer == SvgView.Image: if self.image.size() != self.viewport().size(): self.image = QImage(self.viewport().size(), QImage.Format_ARGB32_Premultiplied) imagePainter = QPainter(self.image) QGraphicsView.render(self, imagePainter) imagePainter.end() p = QPainter(self.viewport()) p.drawImage(0, 0, self.image) else: super(SvgView, self).paintEvent(event) def wheelEvent(self, event): factor = pow(1.2, event.delta() / 240.0) self.scale(factor, factor) event.accept() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() if len(sys.argv) == 2: window.openFile(sys.argv[1]) else: window.openFile(':/files/bubbles.svg') window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/painting/svgviewer/svgviewer.qrc0000644000076500000240000000025412613140041023447 0ustar philstaff00000000000000 files/bubbles.svg files/cubic.svg files/spheres.svg PyQt-gpl-5.5.1/examples/painting/svgviewer/svgviewer_rc.py0000644000076500000240000003344412613140041024005 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 10:02:47 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\x58\ \x00\ \x00\x14\xa0\x78\x9c\xb5\x98\x6f\x6f\xa2\x40\x10\xc6\xdf\xfb\x29\ \xe6\xf6\xde\xdc\x25\x52\x11\xf9\x7b\x51\x9b\x94\xdc\xcb\x4b\x4c\ \x9a\xdc\x7b\x0a\xab\x6c\x0e\xc1\xc0\xb6\xda\xfb\xf4\x37\xbb\xeb\ \xd2\xd6\x03\x6d\x65\x4b\x22\x15\x2b\xbf\x79\x66\xe6\x61\x19\x99\ \xdf\x1e\xb6\x05\x3c\xd1\xba\x61\x55\xb9\x20\xd3\x1b\x9b\x40\xc3\ \x93\x32\x4b\x8a\xaa\xa4\x0b\x52\x56\xe4\x76\x39\x9a\x37\x4f\x1b\ \xd8\xb3\x8c\xe7\xf8\x15\x3b\xdd\x12\xc8\x29\xdb\xe4\x5c\x1f\x3d\ \x31\xba\xbf\xab\x0e\x0b\x62\x83\x0d\x53\xdb\x56\x3b\x32\x02\xb1\ \x61\x80\xb2\x59\x90\x9c\xf3\xdd\x8f\xc9\x64\xbf\xdf\xdf\xec\x67\ \x37\x55\xbd\x99\x38\xf8\x9d\x09\x92\xc9\xeb\xf8\x0e\x81\x87\xa4\ \xa1\xab\xba\x5a\xb3\x02\x05\x70\x56\x3e\x93\x25\x92\xe6\x9c\xf1\ \x82\x2e\x7f\x1e\x92\xed\xae\xa0\x90\x3e\x3e\xb0\xd4\x76\xc0\x52\ \xef\xe0\x8e\xfe\x65\xb4\x86\xb4\xda\x6e\x51\x7d\x03\xac\x84\x5d\ \xc2\x73\xc8\x12\x9e\xcc\x27\xea\x5c\x41\xc9\x68\x93\x2e\x57\x2c\ \xe5\x8f\x35\x85\x26\xaf\xf6\xac\xdc\x00\x55\xd0\x06\xaa\x35\x90\ \x98\x00\x12\x80\xdc\x93\x96\x36\x56\x99\xe0\x26\xca\x22\x4a\x81\ \xe4\xa4\x2c\x2b\x9e\x70\xd4\xdd\xb4\x20\x9e\xa3\xb2\xaa\xe4\x75\ \x55\xc0\xae\x62\x25\x6f\x5e\xce\x44\x26\xc5\x97\xfa\x78\x3e\x91\ \x42\x46\x42\x52\x4d\x53\x0e\x98\x6d\x21\xca\x5d\x52\xd1\x80\xba\ \xfa\x83\xb9\x3f\x14\x8f\xed\x91\xa5\xcb\x4f\xe0\x20\xf7\xcf\x72\ \x7f\xfc\x34\x8a\xc2\x97\x9e\xc8\x83\x89\x62\x7f\xb1\x2c\x58\x89\ \x3a\x4c\xc1\xb2\x64\x01\x76\x55\xf1\x5c\xb0\x92\x76\x46\xfc\x1a\ \xca\xed\x34\x28\x36\x45\xc9\x16\x0d\xb7\xc7\x8e\x6a\xf0\x18\x5f\ \x32\xd0\x70\xaa\xab\x68\xe0\x2a\x7a\x4b\x15\xca\xbb\x88\x35\xcd\ \x4e\x69\x1e\x81\x6c\x41\x7e\x69\x7d\xf1\xf4\x15\xb2\x03\x9d\xb2\ \x3a\x2d\x3e\x2a\x37\x3d\xc8\x02\xe0\x1b\xac\xbe\x84\xd5\xe2\x83\ \xc1\x4c\xf7\x22\x33\x2d\x92\x06\xeb\x14\xf3\x62\x25\x4a\x76\x22\ \x65\xfa\xa1\xd3\xdc\xfe\xd3\x38\x3d\x70\x10\x3b\x2b\x29\xd3\xbc\ \xc2\xff\x6d\x59\x96\x15\x98\xc8\x1a\x5d\x6d\x35\xec\x2f\xe6\xe2\ \x38\xc7\xc3\x75\xb2\x65\x05\x72\x7e\xd3\x3a\x4b\xca\x44\x3a\xd3\ \xf1\x6c\xe9\x4d\x27\xf0\xc8\xf2\x62\x37\xf0\xca\xc4\x60\x27\x56\ \x75\x0c\x5a\xd5\xc3\x58\x8e\x37\x76\xcd\x39\x35\x90\x34\x99\x80\ \x37\xd8\xa9\x42\x5e\xec\x1c\x89\xdd\xe4\xe1\x46\xf5\x3e\xc1\xa8\ \x17\x98\x27\x14\x1d\x24\x95\x06\x51\x04\xf7\x6a\x02\x16\xaa\x0f\ \x61\xce\xbf\x5e\xeb\xdf\x33\x3d\xea\xb4\xef\xcc\xa0\x7d\x43\xb1\ \xd2\x62\xcc\xc0\x98\x7f\x67\x8e\xa4\xc9\x0c\xc2\xc1\xfe\x0d\xe5\ \xb5\xad\x04\x42\x0f\x7a\xb8\x81\xc3\x4f\x30\xf0\x05\xe6\x19\xfb\ \x4d\xb5\xfd\x82\xab\x11\x33\xa7\x17\x61\xce\xc1\x61\xeb\xe0\x73\ \x5d\xea\xb4\xb0\x6b\xc8\xc2\xfe\x71\xf9\xf7\x31\xb6\xb9\x61\x21\ \x52\x34\x88\x06\x0f\x0b\x5a\x5f\xec\x6b\x64\x37\xfa\x6a\xbb\xf9\ \x9f\x30\x2c\x44\xef\x64\x9e\xf1\x9f\xaf\x2d\xdc\x3b\x38\x5c\x44\ \x44\xfd\x88\xe1\x16\x0e\xde\x0c\x11\x97\xba\xd4\x69\x61\xcf\xa0\ \x85\xc5\x1d\x40\xfc\x9d\x79\xc6\x2c\x8c\x34\xdf\x53\x19\x0c\x9b\ \x22\xb4\xbe\xf8\x28\x10\x7a\xd0\xc3\x2d\x6c\x70\x8c\x88\x86\x8f\ \x11\xad\x2c\xd9\x94\xeb\x2c\xac\x11\xfe\x7f\x08\x73\x16\xf6\x5a\ \x0b\x9f\xeb\x52\xa7\x85\x7d\xf8\x16\xcb\x9f\x8d\xf7\xfa\x87\xe8\ \x77\x83\xa6\x16\x37\x05\xdf\x31\x39\x5a\x04\xc7\x3b\x0b\xa6\xfe\ \x66\xb4\x18\x48\x55\x34\x08\xf0\xa2\x8f\x8c\x51\x43\x45\x93\xf5\ \x1f\x36\x06\xe9\x5a\xc6\xbe\x4e\xff\x6d\x19\xda\x07\x00\x17\xb6\ \xfb\x1e\x49\xc3\x2f\x5c\x83\xe3\x93\x74\xb5\x61\x66\x34\x7c\x24\ \xf3\xfb\xe7\xa9\xf7\x22\x82\xe1\x88\x50\xdf\x12\xa3\x8f\x14\xa7\ \xeb\x21\x8f\x7b\xd4\x74\x0a\x8c\xcc\xaf\x4f\x91\xab\xd7\xa7\x73\ \x26\xd6\xeb\x93\xd9\xd0\x62\x69\x3c\xb5\xbd\x8e\x34\x17\x4f\x06\ \x97\xa3\x7f\xef\x90\xc3\xc1\ \x00\x00\x02\xd2\ \x00\ \x00\x0c\x36\x78\x9c\xd5\x56\x7f\x6b\xdb\x30\x10\xfd\xbf\x9f\xe2\ \xa6\x32\x68\x20\x89\x7f\x24\x6e\x9b\xe2\xa4\xb0\x0d\xf6\xe7\x06\ \xa5\x1f\xc0\xb5\xcf\xb6\x88\x62\x05\x49\xad\x9b\x6f\xbf\x93\xe5\ \x39\x4e\x9b\x36\x4b\xe9\x0a\x15\x18\x4b\xf6\xdd\xd3\xbd\xa7\x83\ \xa7\xf8\xfa\x71\x25\xe0\x01\x95\xe6\xb2\x9a\xb3\x60\xec\x33\xd0\ \x26\xa9\xb2\x44\xc8\x0a\xe7\xac\x92\xec\x7a\x71\x12\xeb\x87\x02\ \x6a\x9e\x99\x72\xce\x2e\xd3\x15\x83\x12\x79\x51\x9a\x76\xf1\xc0\ \xb1\xfe\x26\x1f\xe7\xcc\x07\x1f\xa6\x7e\xf3\xb0\x13\xa0\x41\xd8\ \x95\x9e\xb3\xd2\x98\xf5\x95\xe7\xd5\x75\x3d\xae\x27\x63\xa9\x0a\ \x2f\xf4\x7d\xdf\x23\xd0\x5e\xd8\xd5\xa3\xe0\xd5\x72\x5f\x70\x30\ \x9b\xcd\xbc\xe6\xaf\xe7\xe2\xef\x12\x8d\xbf\x95\xcc\xb9\xa0\x0a\ \x0d\xaf\x36\xac\xcf\x20\x64\x0b\x8a\x8a\x0d\x37\x02\x17\x37\xeb\ \x12\x15\xea\xd8\x73\x4b\xfb\x23\x43\x9d\x2e\x7e\xaa\x24\xe3\x58\ \x19\x20\x10\x81\x19\x68\x17\x47\x24\x4d\x09\x19\xcf\x73\x5a\xd1\ \xdf\x54\x0a\xa9\xf4\x38\xf6\x9a\xa4\x66\x73\xca\xcf\xb5\x9b\xd2\ \xe2\xcb\x68\x04\xdf\x15\x26\x06\xc1\x22\x26\x02\x8a\x16\x59\x43\ \x2e\x15\x60\x92\x96\x90\x72\x95\x0a\x04\x23\x61\x95\x2c\xe9\x5d\ \xe2\x0a\x84\x94\x4b\x10\x7c\x89\x2d\x52\x33\xda\x2a\xc6\x30\x1a\ \x75\x3b\x38\xd8\xae\x5e\x9e\xcd\xd9\x9d\xb8\x47\x47\x8c\x75\xdb\ \xdd\x56\xdc\x90\xd4\xf7\x1a\xd5\xcd\x3a\x49\xf1\x57\x75\xab\x91\ \xf5\xc1\x7b\x23\xb5\x87\xc5\x20\xdd\x34\x2f\x45\xaa\xd1\x89\x41\ \x4e\x5f\x47\x91\x9d\x6c\xdc\x64\xd1\xa5\xc7\xda\xc8\x35\xc8\x3c\ \xd7\x48\xa7\xee\x7f\xb5\x4d\x22\xd7\xa3\x46\x9e\x39\xab\x4b\x6e\ \xa8\x14\xef\xa5\xf8\x8b\xe8\x49\x82\x25\xf0\x4a\x3c\x55\xf3\x24\ \xe1\x34\xa4\x31\x9d\xf6\x72\x62\x6f\x57\x98\xd7\xf4\x52\x98\x7d\ \x6a\xb9\xa8\xfe\xe3\xd4\x9a\x4e\xad\x5e\x6f\x54\xab\x50\x88\xd5\ \xa7\xd6\xab\x61\x70\x9c\x62\x41\x30\x99\x04\xc1\x1b\x15\xdb\xa0\ \x10\xb2\xfe\xd4\x92\x39\x0a\xc7\x76\x99\xed\xb3\x37\x6a\xa6\xcb\ \x24\x93\xb5\xfd\xf4\xff\x14\x3b\x42\xb0\x3b\x91\xa4\xcb\xf6\x93\ \xa4\xbd\xb9\xd9\xb4\x6e\x78\x84\x22\xad\xea\xbb\x20\xfe\x0e\xc8\ \x73\x89\xfa\x4e\xf2\x03\x73\x5e\x21\x24\xe0\xd4\xd9\x3a\x88\x33\ \x86\x1d\x5f\x68\x4d\x65\xab\x25\x6b\xbc\x8c\xe4\x53\xe2\xec\x74\ \x2b\xef\x80\xbd\x20\x55\x5b\x93\xf5\x36\x67\x68\x71\xd1\x22\x9c\ \x92\xfd\xe1\x6c\x66\x99\x28\xb9\x6c\x6e\x01\x15\xf1\x6a\xe3\x15\ \xa6\x06\x1c\xa2\x03\x6c\x2f\x06\xd6\xf5\xbb\x8b\xc1\xb4\xdb\x21\ \xf6\x8a\x1d\xf0\x4e\xa4\x83\xd0\xc1\x45\xb4\x1f\x3c\x0c\xa3\x67\ \xe0\x46\x25\x95\x26\xbd\x56\x74\x23\xb0\x53\x41\x96\x7c\x46\xd7\ \x8c\x21\xa1\x0c\xda\x36\x88\xa9\xb3\xa0\xb9\x48\x5c\x95\x0a\x73\ \x22\xfa\x57\xb9\xfd\xd9\xd1\x30\x8a\x06\xa0\xd3\x44\xe0\x19\xf5\ \xc2\xd0\x1f\x13\x54\xa7\x5b\x7b\x00\x3d\xd1\xb7\xbe\xfc\xba\xe8\ \x07\xaa\x9e\x04\xd1\x30\x9c\xfa\x5d\xd5\x3b\x61\xae\x1a\xaa\xc4\ \x55\xd3\xb5\xc3\x7b\x52\xdb\x4b\xae\x33\xd1\xc3\x0d\x55\xfc\x03\ \xc9\x4b\x7f\x18\xf6\x4e\x66\x2f\xc7\x73\x4b\xf2\xfc\x43\x59\xf6\ \xcc\xef\x7d\x78\x86\x51\x34\x9c\x84\x07\x88\x4e\xa8\xb2\xc9\x47\ \xd2\xec\x3b\xd6\x31\x3c\x63\x7b\x69\x5f\x9c\xfc\x01\x4d\xb4\x75\ \x0c\ \x00\x00\x05\xf1\ \x00\ \x00\x27\x73\x78\x9c\xdd\x9a\x6d\x6f\x9b\x48\x10\x80\x3f\x5f\x7e\ \xc5\x94\xea\xa4\x5a\xb2\xcd\xf2\x66\x9b\xd6\x4e\xa5\x26\x51\x75\ \x52\xaf\x8d\x9a\xe4\x4e\x77\xdf\xd6\xb0\xd8\x28\x18\x2c\xc0\x71\ \xdc\x5f\x7f\xb3\xcb\xbb\x63\xc7\x90\x92\x5c\x5c\xa4\x64\x17\xbc\ \xcc\xee\x3c\xbb\x3b\x33\x0c\x8c\x3f\xde\x2f\x3c\xb8\x63\x61\xe4\ \x06\xfe\x44\x52\xfa\x44\x82\x28\xa6\xbe\x4d\xbd\xc0\x67\x13\xc9\ \x0f\xa4\x8f\xa7\x27\xe3\x37\xe7\xdf\xce\xae\xff\xb9\xbc\x80\xe8\ \x6e\x06\x97\x37\x9f\xbe\xfc\x71\x06\x52\x4f\x96\xff\xd6\xce\x64\ \xf9\xfc\xfa\x1c\xae\xfe\xfa\x0c\x78\xb3\x2c\x5f\x7c\x95\x40\x9a\ \xc7\xf1\xf2\xbd\x2c\xaf\xd7\xeb\xfe\x5a\xeb\x07\xe1\x4c\xbe\xfe\ \x2e\xab\x84\x28\xf2\xf7\x8b\xb3\x1e\xb6\xed\xf1\x13\x62\x12\x9d\ \xdf\x2c\xa3\x50\x85\xf4\xed\xd8\x96\xb0\x2b\xde\xc3\xda\xb5\xe3\ \xf9\x44\x52\x89\xb5\x90\x60\xce\xdc\xd9\x3c\xc6\xb1\x19\xfc\xec\ \xce\x65\xeb\x4f\xc1\xfd\x44\x22\x40\x60\x44\x08\x0c\x08\x91\x4e\ \x00\x0f\x54\xc4\x8f\x26\x3b\xfa\xc6\xbe\x08\xef\xa3\xd4\xec\xfd\ \xbd\xe7\xfa\xb7\xbb\x1a\x2b\xa6\x69\xca\xe2\x57\x39\x69\x3f\xa5\ \x11\xbb\x0c\x03\xc7\xf5\x10\x47\xec\xfa\x1b\xa9\x8c\x4b\xc5\x21\ \x03\x8c\x63\x37\xf6\xd8\xe9\xd5\x72\xce\x42\x16\x8d\xe5\xe4\x94\ \xff\x60\xb3\xc8\x3a\xbd\x62\x0b\xb7\x17\x87\xd4\x8f\x96\x34\x64\ \x7e\x0c\xd3\xd5\x74\xea\xb1\x08\x02\x1f\x28\x58\x81\x17\x84\xcc\ \xc6\x8e\xac\xdb\x59\x18\xac\x7c\xbb\x3f\x96\xc5\x7d\xa2\x7f\x14\ \xe1\x44\x49\x15\x4f\xde\xf4\x7a\x70\x16\x32\x1a\x33\x08\xa9\xed\ \x52\x0f\x66\xbc\x44\xa1\x11\x38\x41\x08\x8c\x5a\xf3\x54\x7c\x1f\ \x7a\xbd\xfc\xbe\xa4\xf1\xe7\xb4\x2d\xb8\xf6\x44\x9a\x7a\x2b\xf6\ \x49\xb4\x94\x72\x21\x37\xbe\x1b\x23\xc3\x55\xc4\xc2\xab\x25\xb5\ \xd8\x37\xff\x26\x62\x52\x2a\x64\xfb\xb0\xf8\x2c\x48\x60\x6d\x44\ \x11\x22\x0e\x9c\x0a\x70\xf0\x6a\xcf\xe0\x95\x4d\x52\x39\xcd\x6f\ \x1f\x47\x71\xb0\x84\xc0\x71\x22\x86\xf3\x49\x7e\xe7\x4b\x2d\x58\ \xf6\x04\x80\x89\xb4\x9e\xbb\x31\x4b\x2f\x05\xd8\xb9\x1b\xa3\x00\ \x45\x02\x79\x9f\x00\xd5\xd8\x92\xf0\xd6\xb2\x2d\xdb\x71\xb6\x65\ \xf4\x07\xc6\x23\x52\x70\xd0\x0f\xc5\x50\x6a\xd9\x0f\xc4\x0c\xcb\ \x62\xc6\x72\x15\xe9\x63\xa4\x71\x76\x7f\x31\xd0\x8e\xc3\x51\xff\ \x34\xe8\x29\x1e\xa6\xd9\x1e\xe8\x59\xc8\x98\xff\x8b\xa1\xe6\x2b\ \xba\x05\xd4\xa6\x49\xf1\x68\x0f\xf5\x86\x79\x5e\xb0\xfe\xc5\x58\ \x3b\x4e\x2b\xac\xf9\xb2\x6e\x93\x75\xe1\x19\xda\x22\xad\x67\xa4\ \xd5\x8c\xb4\xda\x80\xb4\xe0\xc4\x58\x43\xa3\x8a\x07\x87\x72\x98\ \x00\x3a\x5f\x46\xc3\x0a\x81\x68\x15\x3a\xa8\xe4\x13\xd5\xbf\x57\ \x70\x25\x89\xc5\xb5\x51\x78\x54\x81\x95\x7b\x35\x85\xb0\x51\x93\ \x2b\x8d\x74\xb7\xac\xe6\x0b\x62\x34\xaa\xe8\x5e\x55\xf2\xf4\xa4\ \x91\x83\xb7\xdc\xd0\xf2\x18\xc4\x01\x2c\xe8\x2d\x96\x73\xb6\x00\ \x2f\x08\x6e\xc1\x73\x6f\x59\x19\x42\x94\x44\x24\x75\x42\x81\x24\ \x78\x79\x55\x5b\x79\x2f\xe2\xe1\xf6\xce\xe5\x0a\x34\x9b\x12\x15\ \x0f\x5d\x7f\xba\x43\x3f\x6a\x5c\x38\xfe\x66\xb4\x74\x9d\xf3\xfa\ \x19\xaf\x7c\xd4\xbc\x84\x06\xcd\x88\x29\x8a\xa6\x29\xca\x4f\x39\ \xd7\xa3\x46\x96\xa8\xd0\x74\x95\xf1\x75\xf6\x44\x66\xd1\x9c\xda\ \xc1\x9a\x5f\x7a\x3e\x62\x0d\x80\x4d\x3d\x74\xda\x0f\xa2\x11\xfe\ \x78\xdd\x80\xc8\x4e\x21\xa4\x22\xe4\x21\xa2\xb2\x27\x39\x67\x0e\ \xfa\x19\x7c\xc8\x4c\xe8\x14\x1e\x24\x71\x0c\x15\xbf\x90\x3a\x95\ \x82\x25\xea\xec\x7a\x1e\xe2\x0b\xbd\x77\x6f\x0b\xbc\x1d\x69\x0f\ \xaa\x62\x4c\xb3\xc4\xab\x24\xc1\x61\x49\xdd\xb4\x8b\x44\x6c\xaa\ \xdc\x03\x59\xc6\x16\xa3\xca\x4d\x6f\xe9\xc0\x62\x9a\xb9\xe3\x36\ \x4d\xab\xde\xb6\xa4\xf1\xbc\xda\x13\x0e\xe9\x4f\xd0\x86\x5d\x83\ \xc0\x17\x30\x48\x57\x1b\x62\xa9\xa8\xdd\x9e\x82\xa5\xca\x4b\x5e\ \x51\x48\xb7\xa7\xea\x58\xc1\xff\x5d\x85\xec\x59\x2c\xd9\x81\xcd\ \x14\xa5\xab\xaa\xa2\xd2\x55\x54\xf8\x77\xe7\xe0\x0f\x01\x93\x67\ \xe9\xc3\xbe\x9c\x3d\xed\x8f\xb3\x2b\x21\xb3\xe2\xf2\x44\x14\xc1\ \x20\x4e\x44\x22\x36\x91\x9a\x26\x4d\x46\x5c\x72\x96\x33\x19\xe4\ \xdd\x88\x2e\x84\x5c\x10\x99\x08\x5c\x09\x8b\x89\x24\xaa\x1e\x06\ \x1b\xef\x30\x06\xea\x0e\x09\xe9\xa4\xd3\x35\xc6\x3d\x03\x22\x0d\ \xf2\x7e\x1e\x32\x87\xc7\x30\x69\xa8\x5f\x1e\x4a\x9e\x41\xe8\xe4\ \xca\x8c\xa9\xef\x2e\x50\xe0\x75\xd6\x09\xd0\x38\x0e\xdd\xe9\x2a\ \x66\x5f\xe9\x82\xa5\x5d\xf2\x1f\x24\x88\x37\x4b\x56\x1a\x83\x04\ \xd4\xb6\xdd\xd8\xbd\x63\x3c\xe0\x5b\x14\xfb\xf4\x8e\x62\x47\xb8\ \x8f\x49\x97\x7c\x00\x9c\x1e\xa1\xe2\x94\xcd\x5c\x9e\x82\x89\x70\ \x62\x57\x82\x68\x94\x0d\xce\x41\x73\xfd\x03\xc5\x85\x6c\x89\x81\ \xd4\x19\xb2\x42\x14\xae\x6f\xf3\xcd\x50\x98\xb1\x14\xfa\x3e\x20\ \x9a\x62\x54\x80\x54\x9a\x45\x16\xf5\xd8\x3b\xd2\x37\xba\xf8\xd7\ \xc9\x97\x78\x2d\x6a\x79\x36\xa0\x04\x2d\x9f\xff\x17\xa6\xa7\x65\ \xf4\x86\xed\xc2\x1b\x91\xc3\xec\x06\x1c\xde\xa0\x29\xbd\xd2\x23\ \xfe\x2b\xe0\x67\x64\xfc\xcc\x76\xf9\xa9\x46\x8d\xc5\xa7\x21\x3f\ \xad\x21\xbe\xf2\x63\xfb\x2b\xe0\xa7\x66\xfc\x06\xed\xf2\x33\x06\ \x35\xf8\xe9\xc8\x4f\x6f\xc8\x6f\xa7\xc9\xfb\xbf\xe8\xe9\x19\xbd\ \x51\xbb\xf4\x86\x75\x4c\xdf\x80\xef\xde\x23\x36\x7d\xb9\xe3\xd0\ \xdb\x85\x37\xd0\xeb\x6c\xdd\x21\x37\x7e\xf8\xff\xa8\xad\x1f\xc9\ \x7d\xaf\xd2\xf2\xf6\xad\x63\xfe\x4c\x24\x68\x1e\xb7\xf9\x2b\xdc\ \x6f\xdf\x78\x0a\xc1\xc7\xc2\x97\x41\x0d\x17\xfc\x94\xf0\xe5\x55\ \x59\x40\xed\x99\xfc\x87\x5a\xc7\x02\xea\x1c\x9f\x7e\xcc\xe1\x9f\ \xd1\x37\x9e\x29\x00\xd4\xd5\x1a\xcb\x4f\x18\xc1\x23\xb7\x81\xca\ \x33\x45\x80\xa3\xe7\xf2\xc1\xaf\xcc\x04\xe6\x11\xa0\xd9\xba\x09\ \x54\x55\xa3\x2b\x5c\x2c\xec\x67\xa8\xf4\x49\x62\x03\x21\x87\x28\ \x12\x07\x22\x57\xc0\x3f\x31\xf8\x02\x9a\x91\x94\x3a\x96\xba\xc8\ \x1d\xf0\x77\x09\xa2\xfa\xa3\x9a\x4b\x2a\xa7\x4b\x92\x17\x16\x1d\ \x9e\xbc\x09\x83\x5b\xf1\x25\x85\xcf\xb6\x71\x17\xd4\x1f\x79\x2a\ \x27\x7b\x14\xa8\xb6\xd2\x4d\xd2\x81\x44\x27\x15\x75\x42\xbd\x3a\ \x10\x06\xb1\xd8\x8b\x15\xf5\x4a\xf9\x84\x3c\x99\xc2\x73\x5c\x03\ \x53\x24\x12\x44\x99\xa6\x12\x14\x6d\x54\xfa\xfc\x42\xab\xbc\xc0\ \x68\x9e\xca\x79\x52\x22\xe7\x45\xd2\x38\x8f\x26\x71\x9a\x6c\x88\ \x74\x47\x24\xdc\xb7\xb7\x43\xb1\x0d\x3e\x00\x7a\x67\xe9\xe4\xb7\ \x7c\x00\x0f\xe2\xa9\xa6\xb9\x8c\x9a\x4b\xe9\x40\xc0\x99\xa5\xfd\ \xf6\x3c\x92\x76\x0d\x23\x5b\x62\xc5\xb6\xd9\x33\xbd\x79\xa8\x90\ \x24\xb1\x0f\xe5\x0c\x0f\x8e\x9e\x67\x63\x74\x9d\x94\x46\x5f\x27\ \xa0\x69\x5d\xc9\x9d\x6a\xe6\x6f\x83\x6a\x64\x46\x8b\x44\xdf\x01\ \x85\x47\xb8\xa5\x2b\xb3\x55\x2f\x87\xf2\x32\x1a\x97\xde\xe8\xb4\ \xa9\x33\xcf\x7a\x18\xea\x41\xa5\xb7\xf2\x1e\x2f\xa3\x72\xf9\x95\ \x4c\x73\x9d\x45\x31\xe6\x1f\xa1\x9d\x9e\xfc\x07\x24\xe4\x53\x30\ \ " qt_resource_name = b"\ \x00\x05\ \x00\x6d\x02\xc3\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x73\ \x00\x09\ \x08\xf6\x8f\xa7\ \x00\x63\ \x00\x75\x00\x62\x00\x69\x00\x63\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0b\ \x08\x32\x87\x47\ \x00\x73\ \x00\x70\x00\x68\x00\x65\x00\x72\x00\x65\x00\x73\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0b\ \x02\x19\x2b\xe7\ \x00\x62\ \x00\x75\x00\x62\x00\x62\x00\x6c\x00\x65\x00\x73\x00\x2e\x00\x73\x00\x76\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x44\x00\x01\x00\x00\x00\x01\x00\x00\x06\x32\ \x00\x00\x00\x28\x00\x01\x00\x00\x00\x01\x00\x00\x03\x5c\ \x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/painting/transformations.py0000755000076500000240000002063312613140041022507 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QPointF, QSize, Qt from PyQt5.QtGui import QBrush, QFont, QFontMetrics, QPainter, QPainterPath from PyQt5.QtWidgets import QApplication, QComboBox, QGridLayout, QWidget NoTransformation, Translate, Rotate, Scale = range(4) class RenderArea(QWidget): def __init__(self, parent=None): super(RenderArea, self).__init__(parent) newFont = self.font() newFont.setPixelSize(12) self.setFont(newFont) fontMetrics = QFontMetrics(newFont) self.xBoundingRect = fontMetrics.boundingRect("x") self.yBoundingRect = fontMetrics.boundingRect("y") self.shape = QPainterPath() self.operations = [] def setOperations(self, operations): self.operations = operations self.update() def setShape(self, shape): self.shape = shape self.update() def minimumSizeHint(self): return QSize(182, 182) def sizeHint(self): return QSize(232, 232) def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), QBrush(Qt.white)) painter.translate(66, 66) painter.save() self.transformPainter(painter) self.drawShape(painter) painter.restore() self.drawOutline(painter) self.transformPainter(painter) self.drawCoordinates(painter) def drawCoordinates(self, painter): painter.setPen(Qt.red) painter.drawLine(0, 0, 50, 0) painter.drawLine(48, -2, 50, 0) painter.drawLine(48, 2, 50, 0) painter.drawText(60 - self.xBoundingRect.width() / 2, 0 + self.xBoundingRect.height() / 2, "x") painter.drawLine(0, 0, 0, 50) painter.drawLine(-2, 48, 0, 50) painter.drawLine(2, 48, 0, 50) painter.drawText(0 - self.yBoundingRect.width() / 2, 60 + self.yBoundingRect.height() / 2, "y") def drawOutline(self, painter): painter.setPen(Qt.darkGreen) painter.setPen(Qt.DashLine) painter.setBrush(Qt.NoBrush) painter.drawRect(0, 0, 100, 100) def drawShape(self, painter): painter.fillPath(self.shape, Qt.blue) def transformPainter(self, painter): for operation in self.operations: if operation == Translate: painter.translate(50, 50) elif operation == Scale: painter.scale(0.75, 0.75) elif operation == Rotate: painter.rotate(60) class Window(QWidget): operationTable = (NoTransformation, Rotate, Scale, Translate) NumTransformedAreas = 3 def __init__(self): super(Window, self).__init__() self.originalRenderArea = RenderArea() self.shapeComboBox = QComboBox() self.shapeComboBox.addItem("Clock") self.shapeComboBox.addItem("House") self.shapeComboBox.addItem("Text") self.shapeComboBox.addItem("Truck") layout = QGridLayout() layout.addWidget(self.originalRenderArea, 0, 0) layout.addWidget(self.shapeComboBox, 1, 0) self.transformedRenderAreas = list(range(Window.NumTransformedAreas)) self.operationComboBoxes = list(range(Window.NumTransformedAreas)) for i in range(Window.NumTransformedAreas): self.transformedRenderAreas[i] = RenderArea() self.operationComboBoxes[i] = QComboBox() self.operationComboBoxes[i].addItem("No transformation") self.operationComboBoxes[i].addItem(u"Rotate by 60\N{DEGREE SIGN}") self.operationComboBoxes[i].addItem("Scale to 75%") self.operationComboBoxes[i].addItem("Translate by (50, 50)") self.operationComboBoxes[i].activated.connect(self.operationChanged) layout.addWidget(self.transformedRenderAreas[i], 0, i + 1) layout.addWidget(self.operationComboBoxes[i], 1, i + 1) self.setLayout(layout) self.setupShapes() self.shapeSelected(0) self.setWindowTitle("Transformations") def setupShapes(self): truck = QPainterPath() truck.setFillRule(Qt.WindingFill) truck.moveTo(0.0, 87.0) truck.lineTo(0.0, 60.0) truck.lineTo(10.0, 60.0) truck.lineTo(35.0, 35.0) truck.lineTo(100.0, 35.0) truck.lineTo(100.0, 87.0) truck.lineTo(0.0, 87.0) truck.moveTo(17.0, 60.0) truck.lineTo(55.0, 60.0) truck.lineTo(55.0, 40.0) truck.lineTo(37.0, 40.0) truck.lineTo(17.0, 60.0) truck.addEllipse(17.0, 75.0, 25.0, 25.0) truck.addEllipse(63.0, 75.0, 25.0, 25.0) clock = QPainterPath() clock.addEllipse(-50.0, -50.0, 100.0, 100.0) clock.addEllipse(-48.0, -48.0, 96.0, 96.0) clock.moveTo(0.0, 0.0) clock.lineTo(-2.0, -2.0) clock.lineTo(0.0, -42.0) clock.lineTo(2.0, -2.0) clock.lineTo(0.0, 0.0) clock.moveTo(0.0, 0.0) clock.lineTo(2.732, -0.732) clock.lineTo(24.495, 14.142) clock.lineTo(0.732, 2.732) clock.lineTo(0.0, 0.0) house = QPainterPath() house.moveTo(-45.0, -20.0) house.lineTo(0.0, -45.0) house.lineTo(45.0, -20.0) house.lineTo(45.0, 45.0) house.lineTo(-45.0, 45.0) house.lineTo(-45.0, -20.0) house.addRect(15.0, 5.0, 20.0, 35.0) house.addRect(-35.0, -15.0, 25.0, 25.0) text = QPainterPath() font = QFont() font.setPixelSize(50) fontBoundingRect = QFontMetrics(font).boundingRect("Qt") text.addText(-QPointF(fontBoundingRect.center()), font, "Qt") self.shapes = (clock, house, text, truck) self.shapeComboBox.activated.connect(self.shapeSelected) def operationChanged(self): operations = [] for i in range(Window.NumTransformedAreas): index = self.operationComboBoxes[i].currentIndex() operations.append(Window.operationTable[index]) self.transformedRenderAreas[i].setOperations(operations[:]) def shapeSelected(self, index): shape = self.shapes[index] self.originalRenderArea.setShape(shape) for i in range(Window.NumTransformedAreas): self.transformedRenderAreas[i].setShape(shape) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/pyuic/0000755000076500000240000000000012613140041016215 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/pyuic/compile-on-the-fly.py0000755000076500000240000000464312613140041022211 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## 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 Riverbank Computing Limited 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." ## ############################################################################# import sys from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QApplication, QDialog from PyQt5.uic import loadUiType app = QApplication(sys.argv) form_class, base_class = loadUiType('demo.ui') class DemoImpl(QDialog, form_class): def __init__(self, *args): super(DemoImpl, self).__init__(*args) self.setupUi(self) @pyqtSlot() def on_button1_clicked(self): for s in "This is a demo".split(" "): self.list.addItem(s) form = DemoImpl() form.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/pyuic/demo.ui0000644000076500000240000000631412613140041017504 0ustar philstaff00000000000000 DemoDialog 0 0 400 300 PyQt5.uic Demo Dialog 9 6 Qt::Vertical 20 40 Qt::Vertical 20 40 0 6 Add items Clear list 0 6 Qt::Horizontal 131 31 OK okButton clicked() DemoDialog accept() 369 256 96 254 button2 clicked() list clear() 92 112 279 123 PyQt-gpl-5.5.1/examples/pyuic/load_ui1.py0000755000076500000240000000407012613140041020270 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## 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 Riverbank Computing Limited 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." ## ############################################################################# import sys from PyQt5.QtWidgets import QApplication from PyQt5.uic import loadUi app = QApplication(sys.argv) widget = loadUi('demo.ui') widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/pyuic/load_ui2.py0000755000076500000240000000454712613140041020302 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## 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 Riverbank Computing Limited 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." ## ############################################################################# import sys from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QApplication, QDialog from PyQt5.uic import loadUi class DemoImpl(QDialog): def __init__(self, *args): super(DemoImpl, self).__init__(*args) loadUi('demo.ui', self) @pyqtSlot() def on_button1_clicked(self): for s in "This is a demo".split(" "): self.list.addItem(s) app = QApplication(sys.argv) widget = DemoImpl() widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/qml/0000755000076500000240000000000012613140041015655 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/qml/referenceexamples/0000755000076500000240000000000012613140041021352 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/qml/referenceexamples/adding.py0000755000076500000240000000622412613140041023161 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import qmlRegisterType, QQmlComponent, QQmlEngine QML = b''' import People 1.0 Person { name: "Bob Jones" shoeSize: 12 } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize app = QCoreApplication(sys.argv) qmlRegisterType(Person, "People", 1, 0, "Person") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) person = component.create() if person is not None: print("The person's name is \"%s\"" % person.name) print("They wear a %d sized shoe" % person.shoeSize) else: print("Unable to create component instance") for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/attached.py0000755000076500000240000001356212613140041023513 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, Q_CLASSINFO, QCoreApplication, QDate, QObject, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { Boy { name: "Robert Campbell" BirthdayParty.rsvp: "2009-07-01" } Boy { name: "Leo Hodges" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } BirthdayParty.rsvp: "2009-07-06" } host: Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() @pyqtProperty(QDate) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): self._rsvp = rsvp class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/binding.py0000755000076500000240000002116712613140041023350 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, Q_CLASSINFO, QCoreApplication, QDate, QObject, QTime, QTimer, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty, QQmlProperty, QQmlPropertyValueSource) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { id: theParty HappyBirthdaySong on announcement { name: theParty.host.name } host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } onPartyStarted: console.log("This party started rockin' at " + time); Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 shoeChanged = pyqtSignal() @pyqtProperty(int, notify=shoeChanged) def size(self): return self._size @size.setter def size(self, size): if self._size != size: self._size = size self.shoeChanged.emit() @pyqtProperty(QColor, notify=shoeChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.shoeChanged.emit() @pyqtProperty(str, notify=shoeChanged) def brand(self): return self._brand @brand.setter def brand(self, brand): if self._brand != brand: self._brand = brand self.shoeChanged.emit() @pyqtProperty(float, notify=shoeChanged) def price(self): return self._price @price.setter def price(self, price): if self._price != price: self._price = price self.shoeChanged.emit() class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() rsvpChanged = pyqtSignal() @pyqtProperty(QDate, notify=rsvpChanged) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): if self._rsvp != rsvp: self._rsvp = rsvp self.rsvpChanged.emit() class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] hostChanged = pyqtSignal() @pyqtProperty(Person, notify=hostChanged) def host(self): return self._host @host.setter def host(self, host): if self._host != host: self._host = host self.hostChanged.emit() @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtProperty(str) def announcement(self): return '' @announcement.setter def announcement(self, announcement): print(announcement) def startParty(self): self.partyStarted.emit(QTime.currentTime()) class HappyBirthdaySong(QObject, QQmlPropertyValueSource): def __init__(self, parent=None): super(HappyBirthdaySong, self).__init__(parent) self._line = -1 self._lyrics = [] self._target = QQmlProperty() self._name = '' timer = QTimer(self) timer.timeout.connect(self.advance) timer.start(1000) nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self._lyrics = [ "", "Happy birthday to you,", "Happy birthday to you,", "Happy birthday dear %s," % self._name, "Happy birthday to you!" ] self.nameChanged.emit() def setTarget(self, target): self._target = target @pyqtSlot() def advance(self): self._line += 1 if self._line < len(self._lyrics): self._target.write(self._lyrics[self._line]) else: QCoreApplication.instance().quit() app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(HappyBirthdaySong, "People", 1, 0, "HappyBirthdaySong") qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/qml/referenceexamples/coercion.py0000755000076500000240000001006612613140041023533 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 BirthdayParty { host: Boy { name: "Bob Jones" shoeSize: 12 } guests: [ Boy { name: "Leo Hodges" }, Boy { name: "Jack Smith" }, Girl { name: "Anne Brown" } ] } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/default.py0000755000076500000240000001013112613140041023347 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, Q_CLASSINFO, QCoreApplication, QObject, QUrl) from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 BirthdayParty { host: Boy { name: "Bob Jones" shoeSize: 12 } Boy { name: "Leo Hodges" } Boy { name: "Jack Smith" } Girl { name: "Anne Brown" } } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/grouped.py0000755000076500000240000001276412613140041023406 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, Q_CLASSINFO, QCoreApplication, QObject, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 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 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") bestShoe = None for guest in party.guests: print(" \"%s\"" % guest.name) if bestShoe is None or bestShoe.shoe.price < guest.shoe.price: bestShoe = guest if bestShoe is not None: print("\"%s\" is wearing the best shoes!" % bestShoe.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/methods.py0000755000076500000240000001013212613140041023367 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, pyqtSlot, QCoreApplication, QObject, QUrl) from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import QtQuick 2.0 import People 1.0 BirthdayParty { host: Person { name: "Bob Jones" shoeSize: 12 } guests: [ Person { name: "Leo Hodges" }, Person { name: "Jack Smith" }, Person { name: "Anne Brown" } ] Component.onCompleted: invite("William Green") } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class BirthdayParty(QObject): def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtSlot(str) def invite(self, name): person = Person(self) person.name = name self._guests.append(person) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person, "People", 1, 0, "Person") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) print("They are inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/properties.py0000755000076500000240000000760512613140041024133 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import QtQuick 2.0 import People 1.0 BirthdayParty { host: Person { name: "Bob Jones" shoeSize: 12 } guests: [ Person { name: "Leo Hodges" }, Person { name: "Jack Smith" }, Person { name: "Anne Brown" } ] } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class BirthdayParty(QObject): def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person, "People", 1, 0, "Person") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) print("They are inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/signal.py0000755000076500000240000001451212613140041023207 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, pyqtSignal, Q_CLASSINFO, QCoreApplication, QDate, QObject, QTime, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { onPartyStarted: console.log("This party started rockin' at " + time); host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() @pyqtProperty(QDate) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): self._rsvp = rsvp class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) def startParty(self): self.partyStarted.emit(QTime.currentTime()) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); PyQt-gpl-5.5.1/examples/qml/referenceexamples/valuesource.py0000755000076500000240000002113612613140041024267 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, Q_CLASSINFO, QCoreApplication, QDate, QObject, QTime, QTimer, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty, QQmlProperty, QQmlPropertyValueSource) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { HappyBirthdaySong on announcement { name: "Bob Jones" } onPartyStarted: console.log("This party started rockin' at " + time); host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 shoeChanged = pyqtSignal() @pyqtProperty(int, notify=shoeChanged) def size(self): return self._size @size.setter def size(self, size): if self._size != size: self._size = size self.shoeChanged.emit() @pyqtProperty(QColor, notify=shoeChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.shoeChanged.emit() @pyqtProperty(str, notify=shoeChanged) def brand(self): return self._brand @brand.setter def brand(self, brand): if self._brand != brand: self._brand = brand self.shoeChanged.emit() @pyqtProperty(float, notify=shoeChanged) def price(self): return self._price @price.setter def price(self, price): if self._price != price: self._price = price self.shoeChanged.emit() class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() rsvpChanged = pyqtSignal() @pyqtProperty(QDate, notify=rsvpChanged) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): if self._rsvp != rsvp: self._rsvp = rsvp self.rsvpChanged.emit() class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] hostChanged = pyqtSignal() @pyqtProperty(Person, notify=hostChanged) def host(self): return self._host @host.setter def host(self, host): if self._host != host: self._host = host self.hostChanged.emit() @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtProperty(str) def announcement(self): return '' @announcement.setter def announcement(self, announcement): print(announcement) def startParty(self): self.partyStarted.emit(QTime.currentTime()) class HappyBirthdaySong(QObject, QQmlPropertyValueSource): def __init__(self, parent=None): super(HappyBirthdaySong, self).__init__(parent) self._line = -1 self._lyrics = [] self._target = QQmlProperty() self._name = '' timer = QTimer(self) timer.timeout.connect(self.advance) timer.start(1000) nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self._lyrics = [ "", "Happy birthday to you,", "Happy birthday to you,", "Happy birthday dear %s," % self._name, "Happy birthday to you!" ] self.nameChanged.emit() def setTarget(self, target): self._target = target @pyqtSlot() def advance(self): self._line += 1 if self._line < len(self._lyrics): self._target.write(self._lyrics[self._line]) else: QCoreApplication.instance().quit() app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(HappyBirthdaySong, "People", 1, 0, "HappyBirthdaySong") qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/qtdemo/0000755000076500000240000000000012613140041016355 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/qtdemo/colors.py0000644000076500000240000002252512613140041020236 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtGui import QColor, QFont from PyQt5.QtWidgets import QMessageBox, QWidget class Colors(object): # Colors: sceneBg1 = QColor(91, 91, 91) sceneBg1Line = QColor(114, 108, 104) sceneBg2 = QColor(0, 0, 0) sceneLine = QColor(255, 255, 255) paperBg = QColor(100, 100, 100) menuTextFg = QColor(255, 0, 0) buttonBgLow = QColor(255, 255, 255, 90) buttonBgHigh = QColor(255, 255, 255, 20) buttonText = QColor(255, 255, 255) tt_green = QColor(166, 206, 57) fadeOut = QColor(206, 246, 117, 0) heading = QColor(190, 230, 80) contentColor = "" glVersion = "Not detected!" # Guides: stageStartY = 8 stageHeight = 536 stageStartX = 8 stageWidth = 785 contentStartY = 22 contentHeight = 510 # Properties: noTicker = False noRescale = False noAnimations = False noBlending = False noScreenSync = False fullscreen = False usePixmaps = False useLoop = False showBoundingRect = False showFps = False noAdapt = False noWindowMask = True useButtonBalls = False useEightBitPalette = False noTimerUpdate = False noTickerMorph = False adapted = False verbose = False pause = True fps = 100 menuCount = 18 animSpeed = 1.0 benchmarkFps = -1.0 tickerLetterCount = 80; tickerMoveSpeed = 0.4 tickerMorphSpeed = 2.5 tickerText = ".EROM ETAERC .SSEL EDOC" rootMenuName = "PyQt Examples" @staticmethod def contentFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) if sys.platform == 'darwin': font.setPixelSize(14) font.setFamily('Arial') else: font.setPixelSize(13) font.setFamily('Verdana') return font @staticmethod def headingFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) font.setPixelSize(23) font.setBold(True) font.setFamily('Verdana') return font; @staticmethod def buttonFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) font.setPixelSize(11) font.setFamily('Verdana') return font @staticmethod def tickerFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) if sys.platform == 'darwin': font.setPixelSize(11) font.setBold(True) font.setFamily('Arial') else: font.setPixelSize(10) font.setBold(True) font.setFamily('sans serif') return font @classmethod def debug(cls, *args): if cls.verbose: sys.stderr.write("%s\n" % " ".join([str(arg) for arg in args])) @classmethod def parseArgs(cls, argv): # Some arguments should be processed before others. Handle them now. if "-verbose" in argv: cls.verbose = True # Handle the rest of the arguments. They may override attributes # already set. for s in argv: if s == "-no-ticker": cls.noTicker = True elif s.startswith("-ticker"): cls.noTicker = not bool(parseFloat(s, "-ticker")) elif s == "-no-animations": cls.noAnimations = True elif s.startswith("-animations"): cls.noAnimations = not bool(parseFloat(s, "-animations")) elif s == "-no-adapt": # Don't adapt the animations based on the actual performance. cls.noAdapt = True elif s == "-low": cls.setLowSettings() elif s == "-no-rescale": cls.noRescale = True elif s == "-use-pixmaps": cls.usePixmaps = True elif s == "-fullscreen": cls.fullscreen = True elif s == "-show-br": cls.showBoundingRect = True elif s == "-show-fps": cls.showFps = True elif s == "-no-blending": cls.noBlending = True elif s == "-no-sync": cls.noScreenSync = True elif s.startswith("-menu"): cls.menuCount = int(parseFloat(s, "-menu")) elif s.startswith("-use-timer-update"): cls.noTimerUpdate = not bool(parseFloat(s, "-use-timer-update")) elif s.startswith("-pause"): cls.pause = bool(parseFloat(s, "-pause")) elif s == "-no-ticker-morph": cls.noTickerMorph = True elif s == "-use-window-mask": cls.noWindowMask = False elif s == "-use-loop": cls.useLoop = True elif s == "-use-8bit": cls.useEightBitPalette = True elif s.startswith("-8bit"): cls.useEightBitPalette = bool(parseFloat(s, "-8bit")) elif s == "-use-balls": cls.useButtonBalls = True elif s.startswith("-ticker-letters"): cls.tickerLetterCount = int(parseFloat(s, "-ticker-letters")) elif s.startswith("-ticker-text"): cls.tickerText = parseText(s, "-ticker-text") elif s.startswith("-ticker-speed"): cls.tickerMoveSpeed = parseFloat(s, "-ticker-speed") elif s.startswith("-ticker-morph-speed"): cls.tickerMorphSpeed = parseFloat(s, "-ticker-morph-speed") elif s.startswith("-animation-speed"): cls.animSpeed = parseFloat(s, "-animation-speed") elif s.startswith("-fps"): cls.fps = int(parseFloat(s, "-fps")) elif s.startswith("-h") or s.startswith("-help"): QMessageBox.warning(None, "Arguments", "Usage: qtdemo.py [-verbose] [-no-adapt] " "[-fullscreen] [-ticker[0|1]] " "[-animations[0|1]] [-no-blending] [-no-sync] " "[-use-timer-update[0|1]] [-pause[0|1]] " "[-use-window-mask] [-no-rescale] [-use-pixmaps] " "[-show-fps] [-show-br] [-8bit[0|1]] [-menu] " "[-use-loop] [-use-balls] [-animation-speed] " "[-fps] [-low] [-ticker-letters] " "[-ticker-speed] [-no-ticker-morph] " "[-ticker-morph-speed] [-ticker-text]") sys.exit(0) cls.postConfigure() @classmethod def setLowSettings(cls): cls.noTicker = True cls.noTimerUpdate = True cls.fps = 30 cls.usePixmaps = True cls.noAnimations = True cls.noBlending = True @classmethod def postConfigure(cls): if not cls.noAdapt: w = QWidget() if w.depth() < 16: cls.useEightBitPalette = True cls.adapted = True cls.debug("- Adapt: Color depth less than 16 bit. Using 8 bit palette") def parseFloat(argument, name): try: value = float(parseText(argument, name)) except ValueError: value = 0.0 return value def parseText(argument, name): if len(name) == len(argument): QMessageBox.warning(None, "Arguments", "No argument number found for %s. Remember to put name and " "value adjacent! (e.g. -fps100)") sys.exit(0) return argument[len(name):] PyQt-gpl-5.5.1/examples/qtdemo/demoitem.py0000644000076500000240000002103312613140041020531 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPointF, QRectF, qRound from PyQt5.QtGui import QColor, QPainter, QPixmap, QTransform from PyQt5.QtWidgets import QGraphicsObject from colors import Colors class SharedImage(object): def __init__(self): self.refCount = 0 self.image = None self.pixmap = None self.transform = QTransform() self.unscaledBoundingRect = QRectF() class DemoItem(QGraphicsObject): _sharedImageHash = {} _transform = QTransform() def __init__(self, parent=None): super(DemoItem, self).__init__(parent) self.noSubPixeling = False self.currentAnimation = None self.currGuide = None self.guideFrame = 0.0 self._sharedImage = SharedImage() self._sharedImage.refCount += 1 self._hashKey = '' def __del__(self): self._sharedImage.refCount -= 1 if self._sharedImage.refCount == 0: if self._hashKey: del DemoItem._sharedImageHash[self._hashKey] def animationStarted(self, id=0): pass def animationStopped(self, id=0): pass def setRecursiveVisible(self, visible): self.setVisible(visible) for c in self.childItems(): c.setVisible(visible) def useGuide(self, guide, startFrame): self.guideFrame = startFrame while self.guideFrame > guide.startLength + guide.length(): if guide.nextGuide == guide.firstGuide: break guide = guide.nextGuide self.currGuide = guide def guideAdvance(self, distance): self.guideFrame += distance while self.guideFrame > self.currGuide.startLength + self.currGuide.length(): self.currGuide = self.currGuide.nextGuide if self.currGuide == self.currGuide.firstGuide: self.guideFrame -= self.currGuide.lengthAll() def guideMove(self, moveSpeed): self.currGuide.guide(self, moveSpeed) def setPosUsingSheepDog(self, dest, sceneFence): self.setPos(dest) if sceneFence.isNull(): return itemWidth = self.boundingRect().width() itemHeight = self.boundingRect().height() fenceRight = sceneFence.x() + sceneFence.width() fenceBottom = sceneFence.y() + sceneFence.height() if self.scenePos().x() < sceneFence.x(): self.moveBy(self.mapFromScene(QPointF(sceneFence.x(), 0)).x(), 0) if self.scenePos().x() > fenceRight - itemWidth: self.moveBy(self.mapFromScene(QPointF(fenceRight - itemWidth, 0)).x(), 0) if self.scenePos().y() < sceneFence.y(): self.moveBy(0, self.mapFromScene(QPointF(0, sceneFence.y())).y()) if self.scenePos().y() > fenceBottom - itemHeight: self.moveBy(0, self.mapFromScene(QPointF(0, fenceBottom - itemHeight)).y()) def setGuidedPos(self, pos): # Make sure we have a copy. self.guidedPos = QPointF(pos) def getGuidedPos(self): # Return a copy so that it can be changed. return QPointF(self.guidedPos) @staticmethod def setTransform(transform): DemoItem._transform = transform def useSharedImage(self, hashKey): self._hashKey = hashKey if hashKey not in DemoItem._sharedImageHash: DemoItem._sharedImageHash[hashKey] = self._sharedImage else: self._sharedImage.refCount -= 1 self._sharedImage = DemoItem._sharedImageHash[hashKey] self._sharedImage.refCount += 1 def createImage(self, transform): return None def _validateImage(self): if (self._sharedImage.transform != DemoItem._transform and not Colors.noRescale) or (self._sharedImage.image is None and self._sharedImage.pixmap is None): # (Re)create image according to new transform. self._sharedImage.image = None self._sharedImage.pixmap = None self._sharedImage.transform = DemoItem._transform # Let subclass create and draw a new image according to the new # transform. if Colors.noRescale: transform = QTransform() else: transform = DemoItem._transform image = self.createImage(transform) if image is not None: if Colors.showBoundingRect: # Draw red transparent rect. painter = QPainter(image) painter.fillRect(image.rect(), QColor(255, 0, 0, 50)) painter.end() self._sharedImage.unscaledBoundingRect = self._sharedImage.transform.inverted()[0].mapRect(QRectF(image.rect())) if Colors.usePixmaps: if image.isNull(): self._sharedImage.pixmap = QPixmap(1, 1) else: self._sharedImage.pixmap = QPixmap(image.size()) self._sharedImage.pixmap.fill(QColor(0, 0, 0, 0)) painter = QPainter(self._sharedImage.pixmap) painter.drawImage(0, 0, image) else: self._sharedImage.image = image return True else: return False return True def boundingRect(self): self._validateImage() return self._sharedImage.unscaledBoundingRect def paint(self, painter, option=None, widget=None): if self._validateImage(): wasSmoothPixmapTransform = painter.testRenderHint(QPainter.SmoothPixmapTransform) painter.setRenderHint(QPainter.SmoothPixmapTransform) if Colors.noRescale: # Let the painter scale the image for us. This may degrade # both quality and performance. if self._sharedImage.image is not None: painter.drawImage(self.pos(), self._sharedImage.image) else: painter.drawPixmap(self.pos(), self._sharedImage.pixmap) else: m = painter.worldTransform() painter.setWorldTransform(QTransform()) x = m.dx() y = m.dy() if self.noSubPixeling: x = qRound(x) y = qRound(y) if self._sharedImage.image is not None: painter.drawImage(QPointF(x, y), self._sharedImage.image) else: painter.drawPixmap(QPointF(x, y), self._sharedImage.pixmap) if not wasSmoothPixmapTransform: painter.setRenderHint(QPainter.SmoothPixmapTransform, False) def collidesWithItem(self, item, mode): return False PyQt-gpl-5.5.1/examples/qtdemo/demoitemanimation.py0000644000076500000240000001064512613140041022440 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPropertyAnimation, QTimer from colors import Colors class DemoItemAnimation(QPropertyAnimation): ANIM_IN, ANIM_OUT, ANIM_UNSPECIFIED = range(3) def __init__(self, item, inOrOut=ANIM_UNSPECIFIED): super(DemoItemAnimation, self).__init__(item, b'pos') self._startDelay = 0 self._inOrOut = inOrOut self._hideOnFinished = False def prepare(self): self.targetObject().prepare() def setHideOnFinished(self, hide): self._hideOnFinshed = hide def setStartDelay(self, delay): self._startDelay = delay def setDuration(self, duration): duration = int(duration * Colors.animSpeed) super(DemoItemAnimation, self).setDuration(duration) def notOwnerOfItem(self): return self is not self.targetObject().currentAnimation def play(self, fromStart=True, force=False): item = self.targetObject() # If the item that this animation controls in currently under the # control of another animation, stop that animation first. if item.currentAnimation is not None: item.currentAnimation.stop() item.currentAnimation = self if Colors.noAnimations and not force: # If animations are disabled just move to the end position. item.setPos(self.endValue()) else: if self.isVisible(): # If the item is already visible, start the animation from the # item's current position rather than from the start. self.setStartValue(item.pos()) if fromStart: self.setCurrentTime(0) item.setPos(self.startValue()) if self._inOrOut == DemoItemAnimation.ANIM_IN: item.setRecursiveVisible(True) if not Colors.noAnimations or force: if self._startDelay: QTimer.singleShot(self._startDelay, self.start) else: self.start() def setCurveShape(self, shape): self.setEasingCurve(shape) def setEnabled(self, enabled): self.targetObject().setEnabled(enabled) def isVisible(self): return self.targetObject().isVisible() def updateState(self, new, old): item = self.targetObject() if new == QPropertyAnimation.Running: item.animationStarted(self._inOrOut) elif new == QPropertyAnimation.Stopped: if self._hideOnFinished: item.setRecursiveVisible(False) item.animationStopped(self._inOrOut) PyQt-gpl-5.5.1/examples/qtdemo/demotextitem.py0000644000076500000240000001005412613140041021437 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRectF from PyQt5.QtGui import QColor, QImage, QPainter from PyQt5.QtWidgets import QGraphicsTextItem, QStyleOptionGraphicsItem from demoitem import DemoItem class DemoTextItem(DemoItem): STATIC_TEXT, DYNAMIC_TEXT = range(2) def __init__(self, text, font, textColor, textWidth, parent=None, type=STATIC_TEXT, bgColor=QColor()): super(DemoTextItem, self).__init__(parent) self.type = type self.text = text self.font = font self.textColor = textColor self.bgColor = bgColor self.textWidth = textWidth self.noSubPixeling = True def setText(self, text): self.text = text self.update() def createImage(self, transform): if self.type == DemoTextItem.DYNAMIC_TEXT: return None sx = min(transform.m11(), transform.m22()) sy = max(transform.m22(), sx) textItem = QGraphicsTextItem() textItem.setHtml(self.text) textItem.setTextWidth(self.textWidth) textItem.setFont(self.font) textItem.setDefaultTextColor(self.textColor) textItem.document().setDocumentMargin(2) w = textItem.boundingRect().width() h = textItem.boundingRect().height() image = QImage(int(w * sx), int(h * sy), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.scale(sx, sy) style = QStyleOptionGraphicsItem() textItem.paint(painter, style, None) return image def animationStarted(self, id=0): self.noSubPixeling = False def animationStopped(self, id=0): self.noSubPixeling = True def boundingRect(self): if self.type == DemoTextItem.STATIC_TEXT: return super(DemoTextItem, self).boundingRect() # Sorry for using magic number. return QRectF(0, 0, 50, 20) def paint(self, painter, option, widget): if self.type == DemoTextItem.STATIC_TEXT: super(DemoTextItem, self).paint(painter, option, widget) return painter.setPen(self.textColor) painter.drawText(0, 0, self.text) PyQt-gpl-5.5.1/examples/qtdemo/examplecontent.py0000644000076500000240000001332012613140041021754 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from xml.dom.minidom import parseString from PyQt5.QtCore import QRectF, QRegExp, Qt from PyQt5.QtGui import QImage from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from demotextitem import DemoTextItem from headingitem import HeadingItem from imageitem import ImageItem class ExampleContent(DemoItem): def __init__(self, name, parent=None): super(ExampleContent, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.name = name self.heading = None self.description = None self.screenshot = None self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared = True def animationStopped(self, id): if id == DemoItemAnimation.ANIM_OUT: # Free up some memory. self.heading = None self.description = None self.screenshot = None self._prepared = False def loadDescription(self): contents = self._menu_manager.getHtml(self.name).data().decode('utf8') if contents == '': paragraphs = [] else: exampleDoc = parseString(contents) paragraphs = exampleDoc.getElementsByTagName('p') if len(paragraphs) < 1: Colors.debug("- ExampleContent.loadDescription(): Could not load description:", self._menu_manager.info[self.name].get('docfile')) description = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." for p in paragraphs: description = self.extractTextFromParagraph(p) if self.isSummary(description): break return Colors.contentColor + description def isSummary(self, text): re = QRegExp("(In )?((The|This) )?(%s )?.*(tutorial|example|demo|application)" % self.name, Qt.CaseInsensitive) return ('[' not in text) and (re.indexIn(text) >= 0) def extractTextFromParagraph(self, parentNode): description = '' node = parentNode.firstChild while node is not None: if node.nodeType == node.TEXT_NODE: description += Colors.contentColor + node.nodeValue elif node.hasChildNodes(): if node.nodeName == 'b': beginTag = '' endTag = '' elif node.nodeName == 'a': beginTag = Colors.contentColor endTag = '' elif node.nodeName == 'i': beginTag = '' endTag = '' elif node.nodeName == 'tt': beginTag = '' endTag = '' else: beginTag = endTag = '' description += beginTag + self.extractTextFromParagraph(node) + endTag node = node.nextSibling return description def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem(QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos(0, self.description.pos().y() + self.description.boundingRect().height() + 10) def boundingRect(self): return QRectF(0, 0, 500, 100) PyQt-gpl-5.5.1/examples/qtdemo/examples.xml0000644000076500000240000002617512613140041020730 0ustar philstaff00000000000000 PyQt-gpl-5.5.1/examples/qtdemo/guide.py0000644000076500000240000001121012613140041020017 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QLineF, QPointF class Guide(object): def __init__(self, follows=None): self.scaleX = 1.0 self.scaleY = 1.0 if follows is not None: while follows.nextGuide is not follows.firstGuide: follows = follows.nextGuide follows.nextGuide = self self.prevGuide = follows self.firstGuide = follows.firstGuide self.nextGuide = follows.firstGuide self.startLength = int(follows.startLength + follows.length()) + 1 else: self.prevGuide = self self.firstGuide = self self.nextGuide = self self.startLength = 0 def setScale(self, scaleX, scaleY, all=True): self.scaleX = scaleX self.scaleY = scaleY if all: next = self.nextGuide while next is not self: next.scaleX = scaleX next.scaleY = scaleY next = next.nextGuide def setFence(self, fence, all=True): self.fence = fence if all: next = self.nextGuide while next is not self: next.fence = fence next = next.nextGuide def lengthAll(self): len = self.length() next = self.nextGuide while next is not self: len += next.length() next = next.nextGuide return len def move(self, item, dest, moveSpeed): walkLine = QLineF(item.getGuidedPos(), dest) if moveSpeed >= 0 and walkLine.length() > moveSpeed: # The item is too far away from it's destination point so we move # it towards it instead. dx = walkLine.dx() dy = walkLine.dy() if abs(dx) > abs(dy): # Walk along x-axis. if dx != 0: d = moveSpeed * dy / abs(dx) if dx > 0: s = moveSpeed else: s = -moveSpeed dest.setX(item.getGuidedPos().x() + s) dest.setY(item.getGuidedPos().y() + d) else: # Walk along y-axis. if dy != 0: d = moveSpeed * dx / abs(dy) if dy > 0: s = moveSpeed else: s = -moveSpeed dest.setX(item.getGuidedPos().x() + d) dest.setY(item.getGuidedPos().y() + s) item.setGuidedPos(dest) def startPos(self): return QPointF(0, 0) def endPos(self): return QPointF(0, 0) def length(self): return 1.0 def guide(self, item, moveSpeed): raise NotImplementedError PyQt-gpl-5.5.1/examples/qtdemo/guidecircle.py0000644000076500000240000000732112613140041021211 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import QPointF from guide import Guide PI2 = 2 * math.pi class GuideCircle(Guide): CW = 1 CCW = -1 def __init__(self, rect, startAngle=0.0, span=360.0, dir=CCW, follows=None): super(GuideCircle, self).__init__(follows) self.radiusX = rect.width() / 2.0 self.radiusY = rect.height() / 2.0 self.posX = rect.topLeft().x() self.posY = rect.topLeft().y() self.spanRad = span * PI2 / -360.0 if dir == GuideCircle.CCW: self.startAngleRad = startAngle * PI2 / -360.0 self.endAngleRad = self.startAngleRad + self.spanRad self.stepAngleRad = self.spanRad / self.length() else: self.startAngleRad = self.spanRad + (startAngle * PI2 / -360.0) self.endAngleRad = startAngle * PI2 / -360.0 self.stepAngleRad = -self.spanRad / self.length() def length(self): return abs(self.radiusX * self.spanRad) def startPos(self): return QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.startAngleRad)) * self.scaleX, (self.posY + self.radiusY + self.radiusY * math.sin(self.startAngleRad)) * self.scaleY) def endPos(self): return QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.endAngleRad)) * self.scaleX, (self.posY + self.radiusY + self.radiusY * math.sin(self.endAngleRad)) * self.scaleY) def guide(self, item, moveSpeed): frame = item.guideFrame - self.startLength end = QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.startAngleRad + (frame * self.stepAngleRad))) * self.scaleX, (self.posY + self.radiusY + self.radiusY * math.sin(self.startAngleRad + (frame * self.stepAngleRad))) * self.scaleY) self.move(item, end, moveSpeed) PyQt-gpl-5.5.1/examples/qtdemo/guideline.py0000644000076500000240000000576312613140041020707 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QLineF, QPointF from guide import Guide class GuideLine(Guide): def __init__(self, line_or_point, follows=None): super(GuideLine, self).__init__(follows) if isinstance(line_or_point, QLineF): self.line = line_or_point elif follows is not None: self.line = QLineF(self.prevGuide.endPos(), line_or_point) else: self.line = QLineF(QPointF(0, 0), line_or_point) def length(self): return self.line.length() def startPos(self): return QPointF(self.line.p1().x() * self.scaleX, self.line.p1().y() * self.scaleY) def endPos(self): return QPointF(self.line.p2().x() * self.scaleX, self.line.p2().y() * self.scaleY) def guide(self, item, moveSpeed): frame = item.guideFrame - self.startLength endX = (self.line.p1().x() + (frame * self.line.dx() / self.length())) * self.scaleX endY = (self.line.p1().y() + (frame * self.line.dy() / self.length())) * self.scaleY pos = QPointF(endX, endY) self.move(item, pos, moveSpeed) PyQt-gpl-5.5.1/examples/qtdemo/headingitem.py0000644000076500000240000000770512613140041021216 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import (QColor, QFontMetrics, QImage, QLinearGradient, QPainter, QPen) from colors import Colors from demoitem import DemoItem class HeadingItem(DemoItem): def __init__(self, text, parent=None): super(HeadingItem, self).__init__(parent) self.text = text self.noSubPixeling = True def createImage(self, transform): sx = min(transform.m11(), transform.m22()) sy = max(transform.m22(), sx) fm = QFontMetrics(Colors.headingFont()) w = fm.width(self.text) + 1 h = fm.height() xShadow = 3.0 yShadow = 3.0 image = QImage(int((w + xShadow) * sx), int((h + yShadow) * sy), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setFont(Colors.headingFont()) painter.scale(sx, sy) # Draw shadow. brush_shadow = QLinearGradient(xShadow, yShadow, w, yShadow) brush_shadow.setSpread(QLinearGradient.PadSpread) if Colors.useEightBitPalette: brush_shadow.setColorAt(0.0, QColor(0, 0, 0)) else: brush_shadow.setColorAt(0.0, QColor(0, 0, 0, 100)) pen_shadow = QPen() pen_shadow.setBrush(brush_shadow) painter.setPen(pen_shadow) painter.drawText(int(xShadow), int(yShadow), int(w), int(h), Qt.AlignLeft, self.text) # Draw text. brush_text = QLinearGradient(0, 0, w, w) brush_text.setSpread(QLinearGradient.PadSpread) brush_text.setColorAt(0.0, QColor(255, 255, 255)) brush_text.setColorAt(0.2, QColor(255, 255, 255)) brush_text.setColorAt(0.5, QColor(190, 190, 190)) pen_text = QPen() pen_text.setBrush(brush_text) painter.setPen(pen_text) painter.drawText(0, 0, int(w), int(h), Qt.AlignLeft, self.text) return image def animationStarted(self, id=0): self.noSubPixeling = False def animationStopped(self, id=0): self.noSubPixeling = True PyQt-gpl-5.5.1/examples/qtdemo/imageitem.py0000644000076500000240000001122212613140041020666 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPoint from PyQt5.QtGui import QColor, QImage, QLinearGradient, QPainter from colors import Colors from demoitem import DemoItem class ImageItem(DemoItem): def __init__(self, image, maxWidth, maxHeight, parent=None, adjustSize=False, scale=1.0): super(ImageItem, self).__init__(parent) self.image = image self.maxWidth = maxWidth self.maxHeight = maxHeight self.adjustSize = adjustSize self.scale = scale def createImage(self, transform): original = QImage(self.image) if original.isNull(): return original size = transform.map(QPoint(self.maxWidth, self.maxHeight)) w = size.x() h = size.y() # Optimization: if image is smaller than maximum allowed size, just # return the loaded image. if original.size().height() <= h and original.size().width() <= w and not self.adjustSize and self.scale == 1: return original # Calculate what the size of the final image will be. w = min(w, float(original.size().width()) * self.scale) h = min(h, float(original.size().height()) * self.scale) adjustx = 1.0 adjusty = 1.0 if self.adjustSize: adjustx = min(transform.m11(), transform.m22()) adjusty = max(transform.m22(), adjustx) w *= adjustx h *= adjusty # Create a new image with correct size, and draw original on it. image = QImage(int(w + 2), int(h + 2), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform) if self.adjustSize: painter.scale(adjustx, adjusty) if self.scale != 1: painter.scale(self.scale, self.scale) painter.drawImage(0, 0, original) if not self.adjustSize: # Blur out edges. blur = 30 if h < original.height(): brush1 = QLinearGradient(0, h - blur, 0, h) brush1.setSpread(QLinearGradient.PadSpread) brush1.setColorAt(0.0, QColor(0, 0, 0, 0)) brush1.setColorAt(1.0, Colors.sceneBg1) painter.fillRect(0, int(h) - blur, original.width(), int(h), brush1) if w < original.width(): brush2 = QLinearGradient(w - blur, 0, w, 0) brush2.setSpread(QLinearGradient.PadSpread) brush2.setColorAt(0.0, QColor(0, 0, 0, 0)) brush2.setColorAt(1.0, Colors.sceneBg1) painter.fillRect(int(w) - blur, 0, int(w), original.height(), brush2) return image PyQt-gpl-5.5.1/examples/qtdemo/images/0000755000076500000240000000000012613140041017622 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/qtdemo/images/demobg.png0000644000076500000240000005030312613140041021566 0ustar philstaff00000000000000‰PNG  IHDR X­¨rBkPLTEAAA###kkk555WWW666bbbTTTYYYXXXUUUVVVZZZggg[[[777\\\]]]^^^888___```999aaadddccc'''eeefffhhh333iiijjj444000---222+++%%%...111$$$///,,,***)))&&&((("""!!! wwwooo‰‰‰mmmnnnlllpppqqqrrrtttuuusssvvvˆˆˆ………yyy†††ƒƒƒ‚‚‚„„„‡‡‡}}}€€€~~~|||{{{zzzxxxMMMOOONNNDDDEEELLLPPPGGGJJJCCC<<>>@@@===SSS;;;:::???`ì˜OIDATx^ì™7ŽÅ0C稣è~Øtü¥‚©Z»[ÃâÕvñ@D -È»k¤ÿXœsç˜'ÖZ­”²Ùvd8ˆõùÑR x"?}áýl%qȃ™õG”UÁï÷’œ~‡p‘ÊŠé Å”J”ˆË%¢”ò¥DŽR"bÀhLjT¼¤„ÏͦT’„Ù–³6U‰ÜYåÖx­òÏј’í’„¹•—V)K¤YbÀ(´F²"Ð)’)¥IÐ"M‰T—ú#D  º0¬µ³íÙ”Ò$ápdzD4bÊȺs„4Tj3ä«/Ì&™rJ’÷³D˜«K#ëÆ"жÅÈLÈw_8M)’ Q’\"éM¤Y×à—={Yiˆâ8<Ä,Š â" UTp!>A!Ë\K/¹¨™™L¦µV«µj“Æ&ï\ø.\ù-~opÎEÓ(úMX”eÏÒ4ÍÓ8Žéˆ·LA…Íc|À9Ï'yNéˆR!†BŸR†2I’0@ÅŸ=wÞ´!hc8á NƒÀ÷|ß¶Ol×uû®ã8=Çó¼ž+Ó4­k«iöW뺮/«ªj/ÚvG!Ûã01UKk Í챂­Öj‹©7妬Ô=¬U÷°z…†l¾]ü¿?U> üìt:ÏÝ®a¼º®Ïañ·ùÏ;çÖÜ´†áŸÆ§ø¤Z±E,Ë'pÆpÛ_‚I™„ßPJÁ4¤I;?¿ï·ª¼|µÈRL‘÷½xï5£G»>isä/jy˪ü¡Œ|YÕjõ²ºZW¼îj5ñ+ÝŽÁJÝÀ/N‘Ék¤s†x÷î Ý»¯pïŽéÞ}I÷.n^k‚{7“èt:Žã8¦ÔKˆAUk!åd¯‰ä,ËÊä3™L#Õh4Ì¢iÖë…zÝ0²†Q«ÝÕä%àR/÷9ämù=…d*d¸¿¿¿è-æóóÃós‚iß#ÝÏH÷³Àå§/]××ékD•|þ±z÷CVd®ûÿ)Ù«éz.6äã…÷€Mø3⃞í'_¶[ $ÓAR· ª*ð8 >šÄ‡>2ÄGƒø0ÁGø0ˆøˆËG|Fäz–¤$ï•Jeˆ5d´ ½sdp{ >nˆ{ÉÇgM@Š¡AÅÑ âhP)*Tq4¨¦àÁ—Ôâãt<ˆ3ð!÷>'ÄÇ+âc >^"/æÉ$F1‡M|”–|´ªÀƒøhøÈ âÃu¤` w5D®~—ÀcøÈ´Ö¦þå#•H§û•Š\D‹Ö,"Dî´°ˆˆ&৯ëoóÁÑPk^ ª)ñA%6àã ñq >^K78AìWHiŒMâà â£C|8àÃ&>JK>Zàã€øhøÈ ù’2‘BÉñA»Cl­€ñ‘#>h/šZòQL$Òéå"2ŸÏ×n²4?yq4¨T *E…*Ž•DÃ-˜¦ W=›ø(-àõ€{ xâÃ6ñQZòÑH¹‰ìYH>ƒxêaÖ‰O=jžzð‘#>ÈÕRK>ŠÅbâ(™Æ"B&"M½7W›¬˜Hˆ.ŽCƒŠ£A¥¨PÅÑ ’hxDÒWß-Iõx(57‰¦5W=Ö«ù{ªOà£`v“I,"Øe !"l“@Ú1”­æéhÕ\•¢RÍO™šÿš[LÍMOÍ $[óÔüò«jŽ*‚Bác§ÛMÒ"RéóM–'!÷RB4qQs$j5W%ªùéC©¹E|0õjžej^öQó # à£à´»±ˆ¨M–÷&ëÛ¢K«9«sHÍO£SóSs ɹê=57¨9ø(Ù¬Ó~Š5Dš:Æ!ËMF†~¢K«ù*SñcÔ¼…T™zXR=˜šÔùX@fYò´Ýîv³M–”Û¸KˆVs$¤šs>¦âG¨yµ…¬™ †Rsâ#;Ë"õÁ Ýf›,w\w ÑjŽ ­æœ©Ø¾š·ˆ5SÁj<ˆ”s8<Å"ßdyãBoœ®$D35G…VsÎ"¶¦æþSÁðjžõøÈ:‡‡ÏÚí¶»ÉòÞôΕ„ÄQÒµš£¢SsUâÕÜajî; ¯æŠòŒm² ! 9Nç¢ ˆ•šW¢TsUâÁÔÜ!>¾9ŒJÍ‘e9ÏÝM–ºãt.!¾’®K«¹*™šO˜š;ˆé3Œ^ÍU½žÜdu»Vä&‹IHÜ%]«9*„š³©ù±˜z8>SÁðj^\Qs¯î.lân²’Iþ¦—Iˆ& ¦jŽ £æ¬.Ćj>fjnM6t˜zD­æÅ5÷Šþ’´G=ÚdѸp½„tïc+éZÍ‘jÎ ?˜ŠÔ¼ÅÔ|B|øLëyž©y‘ø`êáÕñ@a ñÞôá®HˆVsT5çu>.Äj>&>ØTp§‚«yž©ù§"ÂÔÃ+ïW{ûx$7Yî›^.!71–­æ¨hÔu!ù¸Õ|L|øM£Us¨¦‚ÅUõ@ÔQÆpD›¬Á€Æéé´+!râ7)Ô¥Õ\Õ-ñA%¾OÍÙTpì7ŒXÍó\Í׫ÊEÃ-{8Ä& ò5 ñŸêÒjNh¸%¾G̓}°^ÍÙT0ï?”Å2 Fî›Þµâ?)Ô¥Õ\ñq+Ö©9?‡Ê*½šš *5WeG°&! &!ñ—t­æ¨ÍÕ\•Xò±åc®ÌõÇ\•ƒNg %éÃኄxÿ„설k5G…QsU‚s…lç˜+3À1Wêƒ]_5WeôW$d§&…ZÍQ¡Ô\ÕL¬?æêl;Ç\eý޹  æ¼ì~xÌ%d´¿3“B­æ¨Pj®j6›‰ÿÃ1WÕ`ìr5_-r<ô$ÄûñVJŸjâ¨æH(5W5CnÄâcÇ\!~Ç\UsF/»ÿÄ•ïs,uú›jXi5gu#ù˜‰ísUàƒ]ßCëí'®„Ð7ïî?!ÞçŠ|R¨ ˆ¿š£6Qs÷€*±2Œ^Í£ø—Ö_=xGý¾; q?Ǫ„¸“B2ØI×jŽl¦æK>f⡹ÊDõ/-WŸš–ޤ„ÈϱºRBÔ¤pw$]«9jC5W|ÌD´jý1WþSÁÕºš^OBøédW$]«9js5W%¢=æªð˜«ðjÎë |)!Ï{‡«“ÂÝt­æ¨0j®JDwÌ⩇µv*ø{w¶ÛDDa¸Ä&!`‡ÕØÀ$,fy.Y/x‡2CÃàN ,y|šÎÄGbU·Üã.DYÑÿuñ©í“ŽhŽ4ÿŸsíÁÄ)½ùMÈ_/…<Ò5JsÄP3WO%ÑÙñ÷áÒŸLüKá9/…Ò5JsÄC f®FÌÌÕrh>»‡ôÉœ—¤k”æÈ¾qJ³@WÁ\4Ç}8ƒLðRø¿"]iŽDÐ1þ>ö)žæÌ«`.š#k›[ãñÁKáÍGÁ_çÕ(ÍÓ܇¡0šo€æÌ«`.šûéc =öë¼¥ùì> q4Ÿ¹ÊLs¤¿é¤…ôÐßÜj”æ¸Cóh>Í™™+A4GÖ6ç!=ø7·¥9BžæÌÌÕèÑÁõjš#î@¶Æ-¤ÿæV£4GÈÑ4_ÊÌÕ 3sOsE:¥¹KÍ‘šÚ3W/sÏ\ÅÓ\>Ò5YhŽDÐÙ«kÊ=sµ z,Fs¤'éš,4G"hŽÔî>j-gæê3sµ(Í; Cº& Í‘š#µ¿š–;su&dæ*žæˆµS;…tMš#4Gj.ÔÉÌU?áÌOsÄþ¹;„tÍ?IóÙ}ÔÔåÌ•e^“б÷aGŠôV”æM‚hŽû¨)!ÍÓÏ\ñô@¦‡÷aéí(Í}BiŽPº™«õÔ3W<=‹û‹tÝbÈBs$œæ¥š¹Z?¤G/fæ áèÁÒÜúÈEºn1d¡9As„h!š·g®zž©i¾ÃÓ‰tÝbÈBs$‚æHI%-@óKžæ¾°Û¦9"éºÅ ŸæHY’û‹ y{æêlŠ™«D4—tÝbOs¤ô÷QRÍ3Ì\…Ñ\‘ÎDiŽð4ß+݇|x𝀿f®‚h®Hg¢4GBhŽû †æùg®xšËGºÒÉBs$ˆæ¸’Žœ¹23WRh.éJs$ Í‘Pš#ÄÍ\ ˜™+)4G*©H×-†,4GÂiŽPÈÌ•|š#Uµ=tÝbOs¤ Ö53s%‘æHåî£ Fºn1ȧ9R»Ä½ ʧ9Rùû¨†Št&Jss$Í‘ÂÝGA²g®xz ÛÍ}TCñH×-†,4G8š»þ> ’Òé§9"C3W‡‘™+$F8Íý¨êDu\é¤9’@sÄ£9"ÍëÌ\ÅéèÅ}è¸8ÒIs$æˆOsD@{ÕßÒÓ|òÿ>´6ÒIs$“æ2@sD¥¥·´QÜGi¤“æHUš#ª* ½¥õ£¸ÒH'Í‘ª4Gº¯IŠÏ\á-­œ‘ iîßÇìk’ŽÍÓ!Òƒ!Íñë ™M²µ.4'Ò!Í‘>šƒ´²&4'Ò!Í‘~šƒ´²4'Ò!Í戬Í[C:iŽ¥9"ÍÓ|ÕH'ÍIsä‹Ôœ¹ŠÓ±›Dz ¤¹ÿ˜+)4?X5ͳié in ší¬+ 4?X5Í‘ŽZí 4Grin šYW|šR¨ã4GfÔZéL Í‘š# ƒWšgÏ\Åi®sj…‘ΤÐÉ¥¹-Òà•ÀÌUišƒZQ¤3)4G Òàoæjz4@sP‹H&…æHIš#˜¹ªMs„H„4ï»D°@íÌ\µAs„H䜽{Û£ˆÂ(¼%:–¡)È1æ"RŽ”;á'x|æà™Õ¦%ÊêÒfÏÅzƒºø4úwBs"¡9™¨÷wKlië 9©éAs"¡9™¨wEKliå4yGšç#=š ÍÉD½Xág®îHó|¤ÇàCBs"¡9™¨÷†Vþ™«4Íó‘ƒ ÍI4'{X&Í/ühŽ5Ò4ÏGz >‚æXŠæú-mšæùHÁGМŒ`Ê-m>Í›AzМHhNn;À$[Zš“wgÕ!=hN$4'ÿu€ ¶´4'+—e = š ÍɦßÒæÓœlpv6é1øÐœ”As²¢‚åniõ4'78;›‡ô¸Å ¡9)ƒædã«æd/´ç"=n1ÍÉÖ ÖÍGB›‹ô¸Å4';/X4 ­b¤͉„æ4X4 -éAs"¡9‘МŒÑ`ÕÓ|$´¤͉„æDBsr[VÑ––=r4'š“"hN¬Š-mšæYHš ÍI4'×Vþ–6Ms’ô8“4'׿Zñ[Ú4ÍÛBzМHhNÖ¸°ÂÏ\¥iÞÒƒæDBs²†5CsòIµHš ÍÉNÖÍɹÍGzМhN$4'Ú 9YKîh.ÒƒæD@s"§9̰hN¶’;š‡ô 99tšÃ «žædǹ£9Hš“ 9±Vh>â\.Òãã‚zš ͉ Î\9Ð|ņ47 ÍÉñ±}护éAZAz|\PBs²XÞ––¸niÓô ­ =¾û/¡9ÙŽ@lDÁê|šOL—‰ô 9МHhNv#)li]h.@z|÷¿Yš3²5‡-­€æ¤Çwÿ¦9G,K«§y“Hš“Åi~¼åniõ4oéAs" 9±¼3Wzš{!=hN4'𫛿M"=hN$4'}oEž¹šAsòá´j¤͉„æ¤_ý¬À3W3hNVì;‹ô yМl¾™si培JÓœlìw:éAó 9é·ï£·²hþnÍÉýNBzМ,Hó~÷>z›AsÕ–6ñ>öìšAzМ,IsÞGo‚-­ ҃͠暓…i~¹U´¥ýŸÀF‘.¡9‘М,Nsb‚-­ÍI{H—МHhN4'&ØÒzМ´‡t ÍÉáÑœ ƒ±¥­˜æ¤=¤KhNædý‰tk…æ"=h~Ûî4'Ãú} VÍÓôðDzМHhNÜiN†íûøÅʧyšžHš ÍÉ‚4vïc°Òiž¦G“H‡æDBs"¡9Y’æ¼Á*¡yšd¨éМHhN$4' Ó|ØÇ¤g®òÿœæòŸ“Ê‘͉„æäÐhN¬¼3W3hNÖP‚æÄæä¼éD¸¥As²Óâ‰#ÒƒæWšwš“î¼ë¬¤3WY4G‹~Hš_IhNÜiNºõûèlB:iŽ=‘®|HhN$4'î4'Ýö}t6¡G4G‹žH×>$4'‡Cón÷>ÎmDªiN®¤9‘МÍy ýuÕ4'ŽH×ßbšWšwûX34÷FºþCМ8ÓœX4OÓÃéAs"¡9q§9±¢Ï\Ý•¤ hN$4'š“hN¬ø3Wiz. 9‘МHhN 9yÑYÍý·´iz. 9‘МÍyzúÎÿ NsÕg ]IóÙ»“]'b ŒÂ%q‘°¡%¤±`Ä8D \†0ÏOCHÎÝõÂe~_S½8oP‹O­r-Ò|Ž„æä?¡9óqdŠ]Zš“Y•ë†H×_0š“V4g>ެ~—VOsòG•ë–Hš ÍI;š3O­v—VOsò—–ëvHš ÍISš«Û¥ÕÓœh¹n…ô 9‘М4¦91Ÿg®ô4‡–¤+.hN$4'ÍiNl šCKÒ 4'ãÓœX/4ßÖÒœ´Gºþ‚AМ¸Óœäb}Ð|[KsÒéúã‚AsâNs’sÉÖÅ3Wµ4'¤ Ž ÊiN$4'î4'9ç’³éi¾u¡¹éAóšw𓼛lмß]Úez(Ç%4' i^öó‘­ÿ]Úez(wÿ¦9óQ¬÷]Úez(wÿǦy>ÄúÞ¥]¦‡ éú»ÿAsâLsb=?sµüWP†týÝÿ 9q§9±AhNÞ~]É‘wÿÛÓœ¸Óœ¤dCМüvèª=ÒƒæDBsâNs’RÚØ4';‡®Z#=hN$4'î4'iþ6ÉN=ÍÉ£«¶Hš“ÑhN6»ùH6 ÍÁhk¤ëiN4'ãÒ<íç#Ù 4£¤ i4'~4g>’õòÌUÍÁ¨éBš͉+ÍÓ!ÖÇ3Wõ4'¤Í‹€æÄ™æÄzx檞æD‚ô yМ8Óœ€tá.­ÍH—ÓœHhN4'î4'Ódêg®œh.Fº„æDKó2ÍÉ4=N1ÍÅH—Мhi^º 9©¤99žæïØÊ4×"]Bs4?™Jš“i7“ @s)Ò%4'Aó“q£ù´ŸÉF¡9yyîß!½!ͱw'»NÄ@†K¤0ÉØFbÁ‰q‰ñ2¤I3u.O”ÛɹÔ$ÇÒi—Ü‹ÿ jñ©UåŠhŽhŽ”£9æãºù 9²Ak"^#Í ÍÍ‘¢4?ÙÇ* ù$=-ZôŠiÞIhŽx¢9bs?s5Md”k"N,|hiÞIhŽø¢9b³:sÅУÛË5H'>”4ï$4G|Ñ Á Ó|IМ¡G¹H'>”4ï Ò¼ÑY…Lwšÿ+ˆ@®Ò©…Fs¤fš#a6ŸÍd—–§9B ^øh4?©™æH8›•Íb—–§9B ½bš#š#š#…hvól»´<ÍéÓ‘ÐqBsÌG0ù.m!šH§iŽHhŽHhŽø¡yØÇÊœ¹ÒÓœG:¿ð!¡9RŠææH44ç‘ÎßbÐi43†¢ù˜{óBséü-†FsDBs„¢ù˜cÍÍy¤ó·Í ÍŠæcâv>¢¹¡92H¯™æˆ„戄æHš‡~œh^hެI¤ó·$4G$4G$4GŠÐ|?Ѫإ¦²æÎŸI”БÐqAsÌÇ`5ìÒNÓYSHçÏ$ÊhŽ…FsäHšIC²šviÿg>¤óge4ÇÂG£9r$ÍǤ4¤dsÚ¥åè1†B:&±Ñ‘Ð!h¾IÚÎG²YŸ¹B¦éHw@sDKó^Bs„¢yŸÆùHæ…ætG4_JhŽHhŽ4ßÏÇ`NhŽH÷Có¥–æ}å4Ç|$óAs„A:OsD@sDKó¾~šï’³y¡9tžæˆˆæXøh4G&iþ¯ùXäœÍÍY¤—Á Ñ‘Ð9„æ1a>R^äÍghN"½üã‚æˆ„æÈ!4ïA”òÙ|,L}抧9tžæÈ¼hnZšš#‡Ð<ž§yÞÍG6ñ™+žæÒÒÑÒ|Ð9„æñ<Í3æ#ÛQôàiÞ•¦9ò­?éž<–æÙ»·åƉ À]GE²«†•Œ\[µ` ‡}$ ‹ÉÌ!fãÇg4šF^Um:Æ5=.þ7苯»G}  GLsW%1è!ðêýëC™xÎEº‡ã‚þiŽØŸæ‰æˆ²,â--¿>4Œç\¤Oåî¢yþš#Jõ=£ðßÒòëÃÀxÎEº‡»ÿ‰æ:diž?…æˆgº>J ý--߯sÒ‰<L4W!Kóü)4G”¦>J:¦·´ cÒáIÜý¢9B–櫽hn룤°sŧ9ÀCºö9EMs„Ͳ4Ï÷£¹«*š#HÇ=bš#„hŽ8Vš›¨ªç Í ¤oí=Zš#ö¢y¢¹‰JÕGEáÓü‡æ*xHWõ±Å=Rš#ö¢y¢¹‰J×GE±Ðœ‡ô¾É‹%“Ds™»ÿáÓ¼|n꣢8hÎCúf³ÁD#ÝÛÝÿDóë㢹­J”æ·¢9éÝd£‡ @ú$hŽ¡9âØh^U õ--Ÿæ<¤«&ÖpSQ7y'@s„ÍÇGsĬ¦0ßÒòiÎBº®U ªÉ ¤Ã~Ž Ñ!BsÄñÑQÏêšB|K˧9馉u±ÒÑ¿òs\Pˆæˆ'Ñ<ÑQwõQSØoiù4wñÙ.Òû&ÖC×ÄÒ1D÷s÷_ˆæˆ@hŽ“æãú¨ûú¨‰7 Ÿæ¥„]¤÷M,U @úý=†è¾îþ'š#¦y9¤yú˜Q4Gh* ‘Ž&Ö®b‡è~îþ'š#iŽÑ±Ksõ™ hŽÒÑIJHÿGääCôÉÐ!Bs„ Í#š#Þ§yÈ(š;*¬ ÒG›&/M“K&âwÿ·²Ç×1Üýçÿ&qDsĈæˆ,Ë(š¼`Ž&–EºÞäÕC ÝÍB4GÄEsþŸæˆóL}Í^0HwM, ½oòbSQ7y}Þý¢9".šó/ ø4Gdº>Î)¸ß\ñéxHmšèMÅÛT„?<Ýý¢9b4/Gó:3õ‘Qø¿¹bÒÜÅ\7±Þ¸Meôþ¹íK ½¢{¿ûŸhŽ8<Í‹CÒÜÖGF¡ÿæŠMsëÝMlbÝn€t,™L“æ«ÇhžhîêcA šK¾¥åÓÜÅ|gÓD7±º&/N„!úi¾bÐ<ÑÜÄb± ÀßÒòiîb>Ø4A ›X]}†è>iŽ¢9‚AóDs õó-mø4w1·›&¦‰…ç„›þw vˆîæYš¯4O47q¦ëcALz„Oó1Ò/°ib‘þj‹!ˆFˆ/š#di¾bÓ<Ñ<[˜úX“áÓÜÅJ#]ýâ«®‰õ n›¼@ºš#Ž‡æ‰æ¶>Äœ †OsÄÕ‹B!ýs»i¤£ÉK@ú‹+±»ÿ‰æ³°i~¶@P$4Gtî.Ò/U(¤¿²H7M^l*Â¥ùZˆæˆÐiŽhrŠæ3×(º&Ö¥jbéª>Ü&–««©Ò|-KóYè4G4MÞP44kçâE×ĺ|óH×M,Ýä5HÇ]êî¿,Íײ4Ÿ…NsDÓÕGC±Ð|°WµÒÏ¥€ôõu©á&Ö_X2¡ùµÍ²4Ÿ…NsDÓ×GCqÐ|g/·P¤ŸžöÿÄzg7±TCtš_ËÒ|Í¢y¢yŽúh(š›Ò@_麉¥¯Ké‚h¬ø£9"Ñ|Tâ4ׇ. ö[Z>ÍC¤w›XÝ?¾ÒíÄ!ý©»ÿ‰æçò4G¼OóÑRàoiù4G鮉¤÷M^ AÔ7Qš#„hŽðMójDsĈ戢m)ð·´|šï"Ý5±€t×äµH—¡9Bˆæ!š#|Ó¼Ñ1¢9¢UõÑ’‡·´~hî¢èêÃ4±€ô[ÓäŦ¢nòJÐ!Ds„Í¥9ÿ7‰cšg#š#Z]-þ›+>Í]¶‰¤«ME4ytøC„æwB4GD@sÖŸæˆÖÔGAÑÐÜE&nžn·é0B4¿¢9"šó/ìAs[-þ›+>Í];›&º‰uÛÿ H7Ctšß%š?RÅ> JsWK û7W|š»¸ùy¸i¢›X»›X7¢'š«¢9‚AsƃCÓÜÄr¹¤°sŧ9B=óÈ-ÒOT\öM,‡ô› ÑÍ¢9‚Es„7š›˜/ÕGáÑüí4Gè[¹Aºjb ‰¤£É«)#Gs„ÍB4G°hŽðFsK]sbÐ\fa—Osnáä麉u¢›Xé}“×nºKÑ!Ds„Í,š#<Ó¼]šúXRà »|š»[jyw=çõ÷hb9¤ßŸöM^lºË¢9â4O4·õ±¤ãyKû=P 鶉5Dúvkš¼@úƒäÝÿxiþ{wÛÜÄ EøŽÁ ¦µpÓ@xëÆ›4x’2ü$À¼´†\;?iWg¯Š²Õ8Sçj…üáüƒóá9²´ Ð\WA}¹K¦GcŒXҵћ‘w¤ÃòßýÏ4_ÄFs„Rý]Ú0ÍQ ÄØŽXŒô;béu%3ÍmÈÒ|ÍJ©=rO{MsŽq3bévÄ:Ò#nÑ3Íë¥ù86š#”釢dhÎ1~zæ ]÷ÃŽX@ú+¢ËÒ!Ds„,ÍDZѱ×ôCQ24瘟2ÒyÄÒu­pˆ.Is„Ͳ4ÇJs…~(J‚æ]H'øú¾¯7,¢ËÑ!DsÄÕ4Ï4ç~(J†æ>ÒñæÏfÝ"½yuó€tIšW±Ò<Ó\!~¥Thî#×¥6@úW¢zäm_j¡9B𿙿æÜEQ?s¦yÒg3\—ÒÍuÂI3ò陿Nüp4Gx4wû¡(òg®Â4÷ã┯Kéfä­G¬÷Œôu¦y©ÒáÑq%͹Š¢~æ*Ls?ªáHäyóõ ÝŽ¼T9H_/åiÎ!BsDâ4y4GtМû¡(Hsù»´ašsTÕ°i¤Ïfü0¯îÇ × éºÄò4GˆÐ‘ÍÃÏ$2ÍÝ4ç èŸ¹ Óœ£2ýÐÑ#V‹t;bé~éƒôµ‹t!š#DhŽH€æ/lOsŽ‚‚ôˆŸæˆªéG5Ò#îŒX@úAúÚAºÍצy¦yø ×£9âAQG¾Ò|ˆ~TŒôÓvÄb¤¤oéB4GDBsD„4Áà¦9¢Ðý(È£GOiÎý`¤óˆÅH?0Hß´HÏ4w#Bš‡¿`°š›(ê~ä ö•æèŽëR›!}ß }¤gš»!Góð n˜æª°ýx@©Ð¤Ÿ¤ó?M.‡éû.ÒßFFó¹Ír4ÁàÆiÞö£ ¾ÓÜ©#½±tAøŸ&·¾Gº4(KóyÍówÿh^Šü™«-èÁH·#–‹ô[éFºïs!š#¢£¹àwÿåiŽ˜N)òg®Âôðcd¯K9H?2HŸ´H_/¿ßwei>÷iž¿û/GsÄTÿhÇ4½3šƒ~ŒêËCúHCô¶²4Ÿ'NsDOhŽxhúñ"zzûSÁ«c¤G, ýØ ýÐAzÓ¥{5j—4Ï4Gô„æˆiÓ)õä.m˜æ£-ÒÏ ÒO¤×#/Ñ£¤ùBžæ™æSôcJqߥ Ó<ŒôFºyqˆ!Í‚4Gdšs?¦õ]Ú0ÍÃHŸ1ÒÍÈ»1oþéh‡,ÍQÐ<ÓœûQR¬wiÃ4"ýwƒôc G^ Ýï‡,Í‘Ð<ÓQ–(úg®Â4÷‘þÜ ýÜEúå%F^ Ý?ú¢9"šgš#JÝ’¡¹ôsFº6:F^ Ý÷ùEóLs„GsDY÷£¤4hî#ý Ýô£±øŸXK{ˆîMW™æˆÄiŽðhŽxdûQRÏiFº±VõˆE@ú‡èÑÒ|)DsD4÷£›æm?JJæ>ÒÿÒëkeF, ]¼8Dæ!š#Ò 9¢‹æª›æN?îPiFº±Ì› G«/@ºyÛCôŽ B4GÑ?ͯÿL¢ÿMsƒ;êÓ]Ú­nG,]ÃnG^¢3Í¢9BˆæˆÞÑ<üƒíinc û1 þÜ¥ÝévÄrÞŽ¼¸‰š;!DsÄÎhþ½{Ým"¢< Å„K á*H¡!¨—g‚Pî-Išx|ÖÎOšü-#elwÿœ7X­¾ã±§<šË 4¯¢¾år—¶ҹĊH¯KÞß'g@úvµÛÒü²?Lh®ß` §ùãNý}t(»´‘Ž H_,PòéÛþhi~ÙF4×o0ÐÓ<~7(ùg®š‡‹%^ š` HG•,ͧF4GìŠæòšw:*†æî½³‘~¸9‰Uÿ?æÂT‰ ÍF4GìŠæòšsP14瘌ª$"%Öúu[ S%f4ŸÑ¡¤¹õrA=Í9¨šs¸ÑÒÿø«»Xé¾ÄÂ!¡0UbDóiÞ4×o0°§9Cs7ÒqÒH“¼|H(L•XÐ|š;Íõ ìiÎAÙÒ\FzeôA(±"ÒCÉ{vñ“¼âTIKs'Ð\±Á ašsP¦4—‘Î%¾YòÎ3 ùÒˆææŠ IÓœƒÒ|æJôºÄð¤ÉlV—¼@:þ Ó|iKsׄæû%Ñœƒ’{æJΗX¡Äb¤Ó¬žÄÒáaªÄæK[š»&4ß/‚æ"ÒôPÒœ ¡çK¬°H%_·Å÷ñM˜*±¡9Â–æ® Í÷‹ ¹ˆt‰;{ZôñÁ:ÒQb}ÒqH(L•Ò|iIó–æ”Ü]Z}8_bE¤W߇/±³ˆôÓS|ÂTÉU¥yKsJî.­>&r¡y¿PšË ŒhÎAÉÝ¥ÕÇäH%éÕ÷QuX8D—iް¤y¿PšË ÌhÎAÉÞ¥Õ#K, K^ ]¤yKš÷3¥¹~ƒ!Í9(Ñ»´z¤w1i‘~‚ëèqÒ]¤yKš÷ó£¹~ƒ=Í9(É»´z¤s‰¤ûÅ ga1ŽjW˜*Qм¥¹bƒ%Í9(Ág®ôHç HßœT þi>I„æˆi.o0ÈæT Í9&¾Äzµ>iBä¯ú’H_¢gBsD‚4—7dIs*†æncÒ$”X—ÞŒÃ!z4GØÐü{w»ÛDDxDÂá³|ó x‚‹J!!!mZš†%—ñîñ¹Š­ÑhGþsî`ìÓ¼Òœƒ¤fiU‘î?¼4YÅ—X³õHÇHÖÀ‡>Í+ÍR4ç ™YZe¤'Œt”X³~r‚!ÂŒ] j4ŸWšg\0(’˜¥UGúøÎ%îKÞ8„ž±‹A›æ•æIšsà,­>Ò›f²Ýi²ÿ’×Íмü‚Pš§H%V—Òø-O‚ô–æSc4/¿` d„æ)ÒC‰Õ¬¶Œôî%¯ï°€ôÜ] º4 ¹À™ 4O‘ŽË @zwø ”¼@zÞšD]š Ð\ภTš§H%VDº/±Â8áH%oÎÀ‡.͇=£¹üqAá 34çp\b5XÌ‹qBF:ü‘±‹AæÃžÑ\þ¸ xšs¸®ÄÒQb-Œtø¼pÔQi®s\P>È Í9¾„ HoK¬Æ—XŒt ö›æ#mšë”2CsÇ/M.±éó9†ÐûLó‘>ÍõïþË™¡9‡é\b1Ò}É¢—ìbP¢9BŠæýºû/$Hs}¤£Äb¤·%/&mó×$êÒ|$Eó¾Ýý—’¤¹>ÒC‰ÅHGÉ‹ï#wM¢.ÍG…47t÷_>ÈÍS¤û?¸žÃH%/ù HÏ[“h€æVîþË™¡9‡kO@‡qFú:–¼@úñqÎ.4/½``Ÿæd†æ®}iòèý_HÇ8áåH‡?úMs—Ò¼ü‚A¥9™¡9‡ëvš0Ò¿Å8!ÞÎ×–ïbÐ¥¹Ki^rÁ Ò< 2CsJ,FúÓXbéÝüyñšD]š»Ch~Tiždæ)ÒŒô®ÄZ¯@útŠ!²5‰J4GBóóJó¤‹ÑCé±ÄZé]ɋѨì5‰º4w‡Ðü¨Ò¼ébôÐG:—X@z(yãOôü5‰¦i^iÎAfè‘"K, %/&m+Í+Íÿd„)Ò¹ÄÒOcÉ ¤Û ù‹4Ç÷¡$1K«ôô¥‰ÿ>NÛŠs }öMhÃmwÿ³woËMÃ`€‚N%.”ãp,0ÃK9mÅ´nZÒÇG’ÿµìrÁ…ùó«ÊÞè |ñ­ÖZSšÇèÊé 4·Gzœ¸ÒÑM,øcô‚-ÍwR¢¹Æ‚9ÒhnŽtbe¿i"!šXø>ã li¾“ÍU ì‘®@ss¤»«(»¦‰„X+·ÞÙ!]. Ç.ØÒ|‘Í• ì‘®@s{¤OŠˆôøæî2,|ÿgÁ€4W[0°GºÍÍ‘îŒ¤Ç H—ý+𓿠fHW ¹9Ò»‰Û.Īt y¥é>‚椹Á¸ 9Ò#r@z ±€t y¤é®°`+ÍíÇí‘ Òcˆ¤/»HWX0ÈŠæöã‚öH× ¹=ÒbMbÓı$äÒžIÌŒæöã‚öHW¡¹=Ò¯6MBS±ßÄ‚?F/d@óÔÇí‘ Ò'W›&mëM,|‚AÒ4Ïo÷_é yF‡û@M“bé3¹D'Í“ßý·Gz$@6H6Mb-ôò¢Ú®°``JóÌvÿí‘ Ò?÷‘Ž HMw| ¦4Ïn÷ßé @NHŸé…GúÚ‡X@zUõ›î×r÷—»ÿ›D:#Ò'+yÓH—&ï M÷k¸û¿«=.Hš‘d‡ôõz¿vH¯ir$!ïl¤+.TÜýW ¹ÒÏòDúÞž_ÏY­Ê龩Økb…w+wÿIs"® »ãÍÑàíÜý'͉ô°žÓCzÛÄ:r!/Þ–x hn>.Hšé>ÄrÒ%Ärë@:.Ñ hn¾ûOšé>ÄêßüÒ' ¹D×X0HŸæ¤9‘^é1ÄÒ%äEÿj{iNšé1ÄÒMw]š“æï’¦9‘Þ{ÓH¯äwtiº+Òœ4—4͉tYωM“bÉ%ˆ ]æ¤ùÓ´iN¤_]Ï9Æï„³~q1‚椹ւþA¤ð¿ƒì×ç±i"!Vlb…’¢Ö‚A^4WX00=ˆô¯¥ÓĵÝôbéð¹Æ‚A4W\0°?ˆô¢<<Ú…Xg@z#—è Ð\u\Ðþ Ò‹²·C, ½ip‰®0.˜8ÍíÇí"Ý…X@z÷0ïH÷— \¢+Œ &NsûqAûƒH/€t ±ÎA€ôAÓ47´?ˆôbéa$,­éšã‚f4ç¸à¿"=†X@ú·mˆÕ4@ºæ¸ )Ííwÿ?ˆôázNx¸:¬w¢©JŠz Š4çîÿøƒHGˆ¤/ðfh,hÒœ»ÿã"}Ø4AˆUU‡@z[âÕIsîþ+Dú•¦I±ü:a¤ŸÊªA‚4çî¿þA¤÷›&‡µoš„uB ýôT.Ѥ¹þ¸ iN¤Ç¦‰±Ú7M€tòâÝ`\pšÎ¸ iN¤‡kîB, ]B^iºo|\pšÎ¸ iN¤Kˆ‘~0ŸIÈ ¤ot÷šÒî?iN¤_þ ošéíï„~X Hßèî“Ðî?iN¤×õy±€t×Tôë¶hb…wƒã‚ÓtvÿIs"ýÙÛµû@\ˆ¤w¿¢‰lÍIs"݇XëºFÓd~r¹Äï„@z[âÝFš“æDº±ÖõDC¬ ýB.Ñ3Ûý×§yß‘îŒÞC:ÞüÒCÈ‹j»úîF4Ï$º"ÒÃÄ-Ž H—ý+ƒÝKšÛ/ØDz¹×Cº„X‚ôEØ|Æ%úµÝýÿÃÞÝ45íEag¤8Z_¨þ«(£ÂÇ…–‚À€ —‚‚M mŠ}·äã{Ͻçä&8ã]dÚ¼Ü'‹ó ²ø=ç$OšûÔ`à@º±éqq_ºçÐûŸÍ=k0p ]Úsì¥ …¼æRQšW³ÁÀ=€ôù*Ò¤_êÆÉ?GuÈëͽk0p ]>¤ëK·Û ÒÉÕ£9ÊÝHoòç éúŸXò ÒÍ’°z4G¹ {éMþD.!VÜnû€—„å£9ʳ ½ùaÃVÜJˆÕ»¤«——èå£9ʳ ýcéöÒDN!// Gs” .aéMAº½4¤$äe¤Šæèý_êÒí?M ÒéRñ†B^¹ä-ÍÑû¿Ô¤Û+Fº„¼‚ô|hŽÞÿü.!VÀH7!–.>°HσæèýÏé6Ĥ닋é…нÿ@º ±é:Ä¢7‰ôÎãмð½ÿ 9~÷Ç£b¥‘Þ!¤û×ûšééKb¥Þ!¤{ÙûšéöÒ$±‚é]Bz‡îSï?h.H·—&6IJHÒûŒôÌ4—š—né6ÄJ }LHï3Ò³Ò\h^º¤G‘±&©K“Á˜Þg¤{KsÐH+nSH¿!¤wé~Ò4Òça8iDbý鵚ß4ßö•æ@º2z¸EÉK“€~@:ùÃgšo{Ks Ûs’HïÝAºYúKómi¤S{N8I"}DHÿ#]–„Õ£9 ÜH§ëo¤·c¤÷ñ’°z4Gƒ{餯ÒÛ‚t yy‰^zš£Á ûÒ§I¤›——„%¦9ʳ }NHH·!/#½@4G¹à’~{éWò Ò Ds” .{éé6¨‹C^Fz½^š£\pÉHŸMšÓ$Ò/éǼús)û~ä@s” æ?€ô-ú¤M-ÒÕûÑR/‡¼tÉKKœhŽÞÿüNí ‚t±tÈkB,³$\ÍÑû_ü¤K;ˆF:ÿÓD½ ׄô®j€–%áh^†Þ }5œ1Ò# ±TÈK!–AºZ‚ð’0ÍKÜû¤ïÒMˆ5RF¤ë——èh^ÞÞ }ç6ÔHõf‰K#=uÉ›æeëý·4ÇÒéÒ¤1Q!Vh/Mèk,!oMî yùzÿÝ4ÇÒ“!Öõ”N!‡¼Êè‚tÍ34˜æ@úí|Í„XAÐ&¤›K, yéŠnšË¨Í1€tn—Zé¹Äê'C^ƒtò¹“æ2ªDs ]B^{‰eC^}©ÈKÍeT‹æ@zhB^±F|©x5Í¥¢,A¼¤9NïGÄ!‡¼-þÜV¿²ñ’æ@º^‚Ðyƒ8ä¥K#BÞVj R)š»ß }Öˆ/§7]òšk(Ÿ£×ë‚ôŠÑÜ]aéêýP!¯|nÛ¥·¥B,{É[«óVéhž½ÁH·—¼æRÑ„Xá)©©Ç\ò–‚æù6éº*¦bC¿ê™$.yêwqäMáú:ER‚êºâÂæ“M^Fhstª¨{°ùI=oö÷÷öž~><:úÿôôøøàääËîÞÅÅׯ‡?¾??>?;û¶û‡¸7Áê8ÞÅJüÙ ¿½––¾â5w*}ªzjT ‘™íå5Ã[[—ˆ4¹ó"f&~šá«þ†4Nûõ³â6 Äqýy,w&X!PH/Ù9|!øél½\4˜h¬µÙ>8DTiO !Ä1 É)c.k–\k]*2s æVø+yáßâ)!"[¬1.;ç†JY:*ÞZÒŽd%Ĭø)@G‰¬5Õ0¼»Fø•‡TTH¢¨ðIn*„Ä`ZlW± Ž!‰Éîƒil©¯#a¬¢^RKׇRÁ aÏÓ§/Ãyòžœ3æ ¹Z×H")z®”¹ö}ð1ÙHö²D8ý…Á9.ŒÛ[Cƒ8Æv}ø÷|Ãqk ¥B'Ý󡶆¨ÐaO™>ŸÇÉ®ÿtpìãQQRˆ(h¼?8×û£ù(åþùª.› @‘¥Ý‡>dí¹éCFŸFí¨L߇¦!!ñÑ?P)¹çC¯ŽÒó¡hô#*¥B‡|ät^/!fòÃ6$˜ø€4$ÈvÒª·NZ—wê&rÌ|Eï¢d1…ÏWà >úG+í£õ÷¯W>ö0’–F£eÞDJïh…ˆ”*>þíêzìQ>š€œþ°cw»mA†ª(ÁRY³0е©QªFý9ÌýßO?f?؉wÝöÀ‡Œ”W‰’Ã<šËÖäØ!c3b²ã-ÏBJê\’‹[óJ)ñM’i,qÁÇlsÊyè§•:Ò‘¤”h§0óš´”<\"6)ŪM’’¢7IZŠ>Í“R‚¿!ï¼(É®€"QRÔõžÎ4“C¸5—åô˜åôÈópzªÈ:Ì’*%å¬òËÄ’8j§üKŠzs (Z }Ü“|èx$Ì[H@¢6‰–²çð¹èʶ6yWUÕpÂØÇ†òúž\²qô‹…RøðbæíŽ.†fî'sþïp•7«ÃúÕ!ŸAqkl*cLcŒüÈ3N¸lf"8 3o RIÈ…¡䎔H ókMRÊ ’ç(J i¤¥0{Ouq|iûº6@‚ñ©0Ããb+Ïe‘‚ɼ”¯/œÒ+¦YþÛãP&t%†4ø©n¿¬yKu¤a0kêÚÖFýB0”ç,9a&FI•• eHJ±_·$¥¸;R¾Ãˆdú)oŒÞ)ÁÇï›ì9”OŸŠ¢{)K ÁHFƒy\D^à¢KÖ‹Ä-\ÎøR·ýä#\â\ŠâÁ1 úU–USA´m=´¤,s~‡P Ó¬1ÈÜÆu‰ a‚”´™^IÑ;E›y˜¤”&NrVR~ÂH2Ï>‚„¹¾Ãˆ$°ç;vÏ›¸FqÜYÛº°äÂ…%Ìøcã yA‘mÒÞOrSE€B>þ=sf< ³«ÕMJNñDIºŸCDá¼ZdJ5VäXû]iš¶Áº¦±èÒ)JY¹Üt–ÒO’Îyœž4E¨,¶ÓïªH£$ (ÈÓCê:­ëZéÔÌ&Çr‘”.«!Õ p˜å ¹ˆ“ߘٹ¸šÁs ¾rél¨Ç¦â—¢DJî•Òˆ"aˆäŽ)°ÝñA—ñÞ‘B$6¯.DòÄ̰›Ñ%ù“€k‚Ãásî¡dþ†QÊ×eš¤ImnÊðø¶d%+2ŒR:5HáMaúQhÆÄcoK*ÀÂÐhôŸÕæthX«@„Àá$­G Ó3ÚL $L¶!'¥djleâúª|RˆÄf$E.ÉØi˜¤âƒ4˜Òïƒ4˜—Q€äÇŒ”g ù]® ÞƒC|øüÜG{( Ø—dFJ†œ $æÉ-Ž£Èœ“0´R @1RZR0º¯1F¤xÌ0ÕÆ¾Ês¦ÏÍßjyY¶hõéз"\»Ö§ á«hÌÅ+etI&Ï\.¥W ¨ÌòœÁ%¦Ú³¼#'eÇh)$·­M÷ØaÌ}1?SŒ!’_.¯6#)@â»$<"È5Á¿ï§÷÷ ˆPbÑû±§è%Éiøx#Hô9YŽ`‘\„fL¦fÒ³㾜rÃaC €Ø(¢(Ž×±¦cfÓ†ÓIä’Àˆï’(ñA6¤Á4âƒ4Ò°Ù‰yæj[ï%áaìq>lDJ)>HÆ4˜¿pÍì[o"I…c…оÖCI<ìƒ%cfíµ÷~ÕJ#íî/qÆ7øRÅPüü<®Èf•€ÇÓ4ΔøÄÌHóö)âä©Â4^ÍfOOƒ É€¨®Ù”}±.‚`,I¥’ðçE>C &|ÎU’~ïŠa@j8@liMQ ‡âLkʹ†ïð¿~œ‰$,È£8cQÊ3˜âL3%Z·,“ĦØ$ù¦ =S ‰Â5…‡ˆ7I0D  Àh’„M‹?€mZX²RÈ ûÉd<^dzY3›aœ@—]Á‚)E]·’,E’{^·ZI—%Ÿó¢IúW袀3À3ÅbÈh9íR¥N ¨QŒ²t'É l’ðñ&‰mZPC5P54¸{“j †j 5j( †j(,‰d¶-“É‹$ŒŸfIˆOI,I½ëŸÓ ÉÉ=ç‘QÃç"à2ì\—%&IQˆ$jŠÁL9MšbYœaw¹=ø!ÃÁüP ñ?ž¶iA Ô8q5P€¨¡€Ô@ Ô †jœÑÁ€¨¡pBz 4],–*Éd|Iv‡Ì–FËéËMV£!ä‰ ’gNêuKVn+˜A77³H²)Äcæ3B†Èr:ÕÞpF—^ †È© ÁÒ$PCpéN’Òü(:&IdJüï0IàÇÏÚ GÜ fÐÍø†Ï,’t HÂzàZXB:û²hCÈì©ÔBu¯j´C€ Qc+w’ 6LqžVwL‰CH_üøú­ ð´‚?60óÀŽhN±?6ö+ýS2?êvˆDáš5QEâ^üƌĦhôø2¤÷?r+˜D}â3f˜.4§Ø~ÅgBÈýT›B ée"Å™P¨*w’8q¸|AsÎŽƒ3H”Þ$‰*3  êrÌ­àÏÍ3èööÓ„ýŒ_ä éwÒå’wïWìB¨GDŒpÓ[!®¯Õ’Q\w'‰{ñ[š›ID!,š«»·‚ÀÇm3XÉí- ¦8à!rÍÇ߯0?ø Æ|Ê ‰ìW \g¹“Ľøõ‹‘{5ðÞë¸ÚŒæêGnwEÝ.àÇë`I8„°!¤×á’w}'û•– +)AøØ~ÕçOm~@ …µ¼h1 ’¶iI`ÉR@  ˆCz4IÌCln3~¼¤Ü{û+\òIÊB éD,Y ,Y’ˆ öjPCaqݽ⮦(úæGn÷A=ðY~êö+„ô§ÒѤ¯CH¯æ|îYݯXݯÄ2? †jþuÖÒ®{Ýë,¨¡ˆCºûr9ÔäVpOdA¦&IŒîýj.÷Wøaû•– Ô°Ý×½£Ôuoêé,ÀÞðp¢G?·‚û"ƒ§"IŒîýŠîW|¢ýª"€»Ît\g]È»îm÷º7énôèÿR­ pd­`ÁM@’É-îý ~Ø~U0 @‘µwÝ 5;„ô¦#¤[ô¾¸Ì Ï­÷+þÈ~U¨PÃBº"Ò«TH?w/±Üß}3?ŠÜ ¾ôS?$®O¾ìë°_áMÂ¥¼?´ÿ˜©P ŽK,~(¶ éÀfH÷~A4ý® "·‚)dAæ€øñð€b„ûs}z‘B?ˆ7 +ÖÑcÚFIÉz¨P çkïg²šä3Y¿Ô/ˆ«Ì UCñ?B¾ñü^’²ýŠíW¥  é‚TH_§Bz♬÷ýÑÜ fÐóù¶Ý¯øcûÕØ†ˆ…tAWH!]ÔPt…tà[üQà€[Á 2?¶Þ¯¦SÛ¯ÆÚŸÇ!]ÑÒíB: ée¬†!·‚oD©!´W»Ÿ¤:¿–÷×a¿ªžQÃ\í¢úÐ~ÐBºwÉë7ék÷I¨¬üK¬èq÷TôÈ­àÛ‘AðC«Tç¨>P£úê¼’è¡ù–ˆ¢†…t…Ò#?¼è±LE&=Þ³>V+˜Aì‡UŸÚêㇶú°W£4š[ô§¢Gúu /šûÑ£IDCj#h3H£ÇƒF‰æÔFóªæ«6š—êG*zôRÑ£Š¢‡ÍÝþ¼tþ¸Ç´‚Àᵂ¹Ih.ÑcÖFZ£GÍí©+ø‘Š”ŠU=RÑ|°C4‡‚Ü ¾´ÕSWZ Zô(SуRÑ£r¢‡Í-z¼Óßr+è!ƒ¢§®4š×ÍßÒ ÒÑ·‚Àñ·‚´e+¸x×V8¼V0·‚ô-¶‚å‘´‚‡ÿÇ=2è#´‚@n÷@åVP[Aô­ Í®Ž¿Ì Ü æVðudÐ+­àô+µ‚¹<¨hžA¡r+¸2(·‚¹|d­àü}ZÁêè[Aà8[Á :¸VÈ­àa ƒr+˜[ÁבA¹Ì­àëÈ Ü FÑCñµZÁÿ·w/+ a…K$¸ÍBpáB0&^Fc¼‹ ¨¯¢ ‚hPßµ¿™ÈtO÷ßgsÞ¡ø<äEWÁy*8õ©‚D¨ *h‡¨t\E#†è¯ >V¡‚#T°eˆPATÐQRür«‚3Ÿ*H”½ QÁþB„ ¢‚vˆçnU°A[†(¨‚¨à¤n$Jª‚ß¾TÐÿ¹Qö*8@û ‘'£‚‡ÈVAU¡‚;¨` Dݪà«+D‰zSÁu*èü܃¨(ÜFӆȓ ‡ÈPAcšûSÁCT0"T´CCQA/Óœ”¥‚[¨`ÚT „´TÁ*Tð\Q<Ü@‹AQÁ@ˆPATБW!r¡‚¨`œ_/ÐКc“MIEND®B`‚PyQt-gpl-5.5.1/examples/qtdemo/images/qtlogo_small.png0000644000076500000240000000673212613140041023035 0ustar philstaff00000000000000‰PNG  IHDR››uaéŒsRGB®Îé pHYs  Í›žtIMEØ  ;ޝ» lIDATxÚíÝyÕðïëî¹—=XÜe—]CAD@Q.ÅŒÔx%j*Æ#©DMŒ$P©2Æ$š2R‰e*ñ­Xj©Ñ2Á$å]F-+" rì»°×ÌÓsôtOïå]ÖzP®é…žß·Š‚ª÷¶gæÍ‡÷^¿~ÝË,°J‰#è 4SsPJ Žâ%6Gñ£xŠí 88ŠØÅSlŽâ)6Gñ£xŠÀQ<ÅFà(žb#pO±8ЧØÅSlŽâ)6Gñ£qØ <Ö¢¡?”£Í¤Ø4FÏ…ÌjêšÂᙳ*¢M“‘PX XÏꪕÐU{@íÒ{z[´žT§‘êoÏe¬œc—+6w´ Hi~íu¢:´@8óίÄü•eÀ²„(þcÜ–¥;©\ÒJèªÝŸêÖã½­ZzÀPÕN]3Ò¶YØÜÑ4þÅõ·°ÊÀ\n ÌšS¥Kk`YœÛñ¸#,;ϳfÎNkýVOªËèÎôä-ÙÞÞVMm„¬DÇ%p_•U³¥icnã\ ‘qý uˆÅd8Ž8á/ÅáØyž6sv:ÛgÅÓ=FwºÛèïkÕz­šj¤¼A¨”è¸@G)ö¿¼>2àMÍ!TVÊ0MQ’×’d&£rM0*×TŒ M?£ ¸pLƒg¬œ2ÒvROÚýñV­+ÙžëMuééä=+ˆ“ûª„¥ÆÁo\ ªJd„·à%&‡¢ru(*WWŒ M€æyU ››¹~«ã…;·>~ÂЗøó|4¥ åYøà?e™lïŽÉŠŠÔNèGöà8JɇÑCÁ Ð÷ÇYf$\Þ€iÙe “À‡²¤ ‡ÀÀʬú›Àí˜Æ€`PB¼WÞ½:Ϊ?Ëç^Š©ãOG4AÞΡ'ێ퉰wàS˜ÜBHŽÊ$€s.$0Æ|‰À#4Y–°v}5X}ëj|óÂå‹\h¼zÆhíߊ5;žÀ§ñµ+QW]w „*È[9!À˜äÉg‘F¡ýÖXGŒŽ°7P>ø0ýÛ¢XóËçqÃÅš̴Ú9XqÑX6åFèV¶`N¥l<ól΋þ¼â5üzÙ ˜X},'ï[lî0ìÚ­aÛæ,žþùØ=yº«N:—ÅþDøˆË ·Ì½ç5.…a熰=q°"Xtæ"„Xš*§!.¸¯±¸#>-K`íº8®]ò \µà2W}pÿ»ßÁ¥«–âúßÿ©\fÄÊŠŒg­@E° \8€ŽÎ&ŸˆéMSGgµg”Û”À}ÉðÙ¾_‡>Ü}Í÷\å™üžÚô¨N/‰âŸë_ÀŠ'ï/¨ÓX9 ›/dºi¢moó¦žP 8\‡ƒC€Ã‹eé$hWw˜žmç®4¦6OÇ…3ç»Ê7w¾ƒ¸ÖŽ‹¢jLó6á¹·_Ak×¾‚zLX޶½&mÍø®[rE!j6xŽh9æpègl®4]ç8ЙÅE³ÎG8rÕÙ“ü Œ ž)8Ž@cC¦‘ÂÚí› ê^u6¶®S0]‚W¯ÁM—\[P~óÜ{ñÀ²—pßÒç0³n!LÇðÍÒ-‹I 1d26xÆÆìÉg­Ó¯uAÂÆ9‹I@€áó-õÂÁ0Ιr6,Ç*zœÚhj£ƒW¥ÆFÆÃ)aï&díL=^³Yà&7Lt•›Ž5ßi›¡9¦`wç>Wý…3çBÍ%a˜yˆCvd o¦k']ÏF=܈a4¶%„ µõ®ò¼­Ã°´‚Õÿ@@B4¢ ¡ö»ê_½l6n{ä.üëÎ÷±õ±×Q3\öì–? %±•áô™mÉá²ÂFàÀÕl(¡(ÆUŽu•ÚÜ‚#œák B ®£…‚r¦{¶&VÁl$ÓIðCz¶¸¾{²ëÔÃP¤ d(YW§œÄ-^Öà,‹#aL¤ÂUæ¢ÈÜJV$X¶.8¤— ‚rS ¹ô ° ‚RdĵÔÒ©ÒIÞæe;‡ã\@’$ÈR‘kSB%!I Žã€óÂR™)øFm.z ´{y‚cÇö#ƒ'âxU¶ØÊœ$18Ü]ìÖPV|Çç²,»vqpp×Y(a#p_œ]*ò–‰Œ¡¹çfL^Ð-˜ËqY’!²GÍ‹«~ÃVVà¢Qv^G2£º!ÊAÈLÆÈ™›€ms„׆HÃÖ†ê2ÂFàÿ TU*€GO²×U”È*†‡FÆ/Yåó±°{Ãd&Ÿôl‘ß°ùœ@,*Œc¢³(¶ÊÐØ‚¡Ñ¶rºÆÚ:Wýþ\7„à£~¢ Â߉oÁq.«0ÃÎŽ=E댌Æ&I †ÁÝÆ™“]uÛÕÅ—PàíªÒ)þ½øç@4&c\]›wZ´NSÕ´á¡‘1@ÓÀf4nŒÔ­,º³û†® Ã&À0hQ¶r'K Ó¦TbÓ®­ØÝ¹×U>«~1ÂJlð>™aÿ •uX2kAA½ÖOЫuB‘p!\K 㢠èK'ÑÕ“·”òf+É'ßïÀ9ŽÀÔ©1Ø¶Š—?ø·«|bÕ Ìi¸9'…xŸ†-;ñÃ+n„Ú›Ø7v¼‡Û¨ˆ ’ÙTAùק݆KëWàŽÙ⪷#o„­ÜÀ9Ž@M‚é³jðØš¿!‘rïæ¸eî=¸ þ´o¯ÆO®]‰¿k®¶¹óm(,Œ†ñaX9wm)¨3~ÌDüôòŸáÊùKQ«.ézœŸ°ù0~-âÙ6Ü÷ôC®òªÐi¸{ÑCøïïâÑÿáàÛƒnãïÛne!8C]}ÍÓcXýâ“HiZÑ×SõDI聯῜¿ —Q¹ŒI, ¦‰a46†\ÏfˆF$46ÆðÒBBŸSx?‚$1(‡ìæp¸g>Y…o"¬Ä†O"¦Lƒ®Ì~lhÙ€pŒ#eucoò3lèx¯~þþ×õ.éà•.¸åå®÷NÔgVàÏøf{’e 4Mˆà[7LÀŸßy{ãm¸ÿ»+1±Îý€!!võmÆ?v<޽›‚vð W–‹Ö#—oÅ‹Ÿÿ²$C ]7U¤9XҞͯØ|δ8ÆÕ†pýu°ïÀk¸lÕ˜=~ žYù0¢¡/žéÑ—ëÄŸÖÞÓ1†{´C{JÓäPXJ‘›hJ þŽoæp¶- ÃYgŒCC“W^›[>)¨sZ¬ g×-€akÈÝ œ„­LÁ Gss•ñææ÷]un=÷W¸yÎ/°°ùÊ!+ÇîÅ1¹NØÊçƒE=cf5ž}ûU×ºÙØH=®šq;–Ÿy+„Žg[¶Ïì&leÎq€Å‹Æ¡×؇•]U’Q1`÷}›héÃË"G²ôñeÃi8,aÚUxÛ¬Û¾ cOC$€ 9+=ŸakÏC»zþ ³gWzã‡i{ïD~få_œ¥Ú¶@ELÆ•Ë1ú}|Æî®F@ Àrò0cø&棛 ѽ=³î­[^£¥7b8p 2 `òòæàóÙŽäi’ܶ¥;)]µ¹¤ÕŸê6âû7«{Û7ª=¥x¿åŠÍ7à«;lOæXÜ0sNÊÔUOY©n£§·EëJÐÕþ}¹´©yó ×ÊÛè‚‚Ÿè{››–ÎÓù¬ÌÄó©n#¡v}ñ™Þd‡žuÌÑÝ^îØF\Gî?bRì†cYplnÚϘš£fù®T·W;ŒþøÎL| ]ÏÚy MØF œØ¦n„Á38½â¡Ã̜ͩ£êªÏ%­T§ÑhÉv«zJí44¯†?Âæ‡®5½yç)û‚1ß6Ò–“î7 ÕîW;žÞ=Zwò@.5Ц§ÍSì—Øv¹‡Œ¹²ô@Â’D¦&pϦp ì‡#lŽBØa#p„Bà#lŽBØa#p„Bà#lGØa#p„Bà#lGØa#pÔ„À6GØ(ް8ÂF!p„À6GØ(ް8ÂF!p„À6Jù€#lް8ÿ#lްQüް8ÂFñ8ÂFà¥(8œÊà#lÿ#lްQüް8ÂFñ8ÂFàÅà#lÿ#lްQüް8ÂFñ8ÂFàÅà#lÿ#lްQüް8ÏÀ6ŠgàÅ3p„â8ÂFñ a£xްQ<GØ(ž#lÏÀ6ŠgàÅ3p„â8ÂFñ a£xްQ<GØ(ž#lÏÀ6ŠgàÅ3p„â8ÂFñ a£xްQ<GØ(ž#lÏÀ6ŠgàÅ3pÿ`Óß(_dIEND®B`‚PyQt-gpl-5.5.1/examples/qtdemo/images/trolltech-logo.png0000644000076500000240000005577312613140041023307 0ustar philstaff00000000000000‰PNG  IHDR¶².ïêÒsBIT|dˆ pHYs b bbÛÏŒtEXtSoftwarewww.inkscape.org›î< IDATxœìyxTåõÇ¿çޙɞ°ïvQ¶0•¨EAH‚ ZµnH&ŠÚEÛÚö×Òhmí¦­V!Á½ÖV£ Ôâ$!²ucßw’u–ûžßY˜¹÷N¶H€÷óÍÇÍË5îZÞçuk[yì›]mêP"‘H$ç-­Rlñ©}» Ÿå6bº àK›ª›ÐÙ‚1Ž8ôMŒQÈršR[£‰ê Q^[£ís׊¯<^¬óø<«Ö.úö›33¢D"‘H::-Rl4Ô˜Êã1±ÍÕ¿èÒŒqÄBUÏFkO­•ZEM8àqóW·¶ÞãæÖ>ú¿í"D"‘HÎÍ*¶˜™Ç©Ì9 $5×Yt¬ŠI) èÙ×6ÉÇ#¸ªBTÖTk‡Ü5â¯G¬÷úÔ×àËb^Ä¢½å“H$Iè4©Øâ®MœÂk¬Íu¯búœ®mžGkO|>æªSZuM•8ìv‹ï¼þBóЉÿ÷ÙêEìkoù$‰DÒr‚*¶ø™‰ÌX  YM¥`úœ®ˆ7ÄŽœÓh>FU¥VSS%ŽÔÖhÛ½^|áq‹ ª V/ÚUÛÞòI$‰Äˆ©b‹½6ñ‡Dø[K:°ÚW§vAçnÍuç B0*OiîÚ*q¬¶Vìð¸y£×ãûä$”·.ÚZÙÞòI$É…ŒA±ÅÏLœÂŒO`ºoÆ´Ñ'1âLÈvÎÁ¨ªÔ<ÕUÚqw ïòÔŠMn¯X£1Þ_»hëÉö–O"‘H.[ç9ƒ:iµb‰-iÜo`.¿¶óî|¨©Ò¼UUÚIwØív‹-ÞZþÜê®~ïÃÇwioù$‰ä|"@±ÅÍøo€onICE!\wS7Ä%œ_ójg›êjá«®ÐÊüŸ{Tß{k~õÕžö–M"‘HÎE[Ì5‰%-m8jl Æ&Ç1Á.tj«5Q]%ÊjªÅ>O­øÊãÑÖišxÿ³E_×Þ²I$IG¦Q±ÅÍL| ŒZÒÈb!̹£¬ÖöY€}!£_|îu‹"?\³hë¦ö–M"‘H:Ä̈Ÿ1xCû -퀃#1uz§3,š¤54,>¯­ÒºÝâ[”ÈÅç‰äB„˜q3ü …-m4ùªN8,òLÊ% þ‹ÏkkÅ·^·VâÊǪزF.>—H$ç#õŠ-q€¡-i („îì«Mº!Ïe4£²B«©­–‹Ï%ÉùEΔhÚî–6è3 ÓfÊÿó!U¢¶ºJs×úvxÜØèõhŸœdúH.>—H$ç7#ñnf~¡¥ FOˆÅ¥›Mð/9Ï0[|îõòg^æäâs‰DÒ‘ ˜‰/ó]-m0ñ²x »8úLÊ$9‡`ª+5ou•v²¶Vì:ZV;»dÑ·ÇÛ[.‰DrábQ½[³‡vTô¹—½_ræ bâTkLœÚ@ÏÊM¢©Ø$I»¡0¸GkDÅÈL#‰D"é¸(Z¥Ø"¥Å&‘H$’Œ {kÈl#‰D"éÈ(Zµç ‘Tl‰D"é¸H¿¢D"‘HÎ+¤b“H$Éy…Tl‰D"9¯ŠM"‘H$çR±I$‰ä¼B*6‰D"‘œWHÅ&‘H$’ó ©Ø$‰Dr^aioÎ^Có¦{¶Y­ˆ‹‰A­¯š›IK$ÉùÀy¥ØºˆNEQ@ŠT¤‰D¢çœPlö¸±æÃ2°ßs<2RÅÛ½ˆÉ#.o?Áü˜Ðç*t‹î‹çŠFYí±°öýõÆ*l*ª(wÉ@|ð‡÷PVs eµÇPVseµÇPZ{¬¾¬îsyí 9(‘H.(:¼b;~Ø‹Ï?Tj aé/ÿÔa”Z‰.Â/®x‹‹~ŠÝe_…­ß£‡sxŽQã¡F¡gìôŒ´íG;ßÀ›[ž ›,’:2–;†“‚Ÿ2¼ÙéEœÉqùŽ;À˜PHX—ZôÊ™W"9—èЊ­¼Ô‡‚wKV“<ñÀÃHŸxc;JœN‘ÝððÔ%xyã£(9ðaèrr×sÍøkCïû"« År¸´ò"MQú¡k8ÁPvø:GîziÚêðû›A%¥€pÜΨbƒ@ wèÊ"HÅ&‘ÔÓa[u•†Õÿ-…Ǹ8ú'?¸ Îé÷·“T-êF`þ„Gq²ú0v–n ©¯²R¯áØ"¤Œ¾*¤~Ï2–;†CÁ ¸ŠÒ€ë^p¶òjÎt%?¿$­0£½e•H$ƒ›+rÍ娮 œš2ñ"üöæÇÛI¢Ö¡Š{’~‡hk\Hý3±ÖõïUé°ï$aÙ︟l" @· Õˆø³)—D"éØtHŶoW-Žéæ•,VÂ3÷þ½$j]£{ãcRÇç×&Œ¼$¤>Ï2ó’3Àx@”Éá2k9»RI$’s§ØX› + å©WNmQj¬ŽÆø>)¸|`Û—#è<\5öÊPDêðÜ·Ì>˜‰ÿarh]VêIì–V4%;­¨—j±u ÿ⬠)‘H:,ΟµýëjT”fÚŠ¶à©{ÎŒµ¶áàj¼ôá xç£ 8q²V«‚¡{còè$Üý½ù¸¸ÿ¥!1ï’cÇÉÍ8pjG«ÚUUTUί©*aÆøÔeêÈøå.[uŧ4Rç>?gívÿÂç®û¬@©Y?Μ$«èe© ¾à£¯ïËçnhÕZŒÛW‰‰®˜ÀLý@ðBQvô‰ü²ugtš»òÆuŠP"&Bˆžu¿Oᯗ¦žqËó¾eöÁ>I€¢©ÐöY#Ê6?=c›»¹vÎeI½…ªU€þ çïŽì¹%åÁÚÜ“;¹‹Å¢`ýÀ°Ê¨ÞÙ³Jއ÷¬$s:”bóz[JŒÖÚÝisÐ%¶kXÇÚWþ-^ÛôD]X~à¸*%ŸûphŸ[¿Þ­_ïÇ‹Ë]¸kÎlü宿7îÐ¬Š ÷Lx ®¾µUÙI̬µ>½Ú¼]G&+‹k¿Ãp€ñøóiJ-™yöÛ˜è!ôTG)Ì6& XmV8]ŽCL(ð¹½?lJÉee‘rpœýQ™Ù8‡Ç4ƒåÕßq>@-:'çʤhh–?|lÙ™@†€ÂМ.û…PY:gÝ×-ê°…däÙÇ‚èqìP©.ð¦nT¸=]N8ó/DXOþÆLÁeºì³ãRÕ«•†­?ØT8]Žã ^–ZÜš¹Ü1‰üXµ!ë鯺4N—ã€õÙiEW‡ó<%=ÊùÕÆ*ÔÖZ(]ºDáÑ[~Öqö•‹'×, Xk— bÚŒÎ:2º±Ìçc,ÍÍǸû&¢²¶Â¬«Ó'~.íuY«Ú˜Í¯]:lDHrttŽq\  ¿¾\QÄ͵}ðÝäøL—ã5&ú'€±l&ÕzãûV›eÓ½y“¦™õ“•Eʱö—ÀøÌS†3èáæä€+ƒ Ôµ?`ŒÚP(UQDaf¾=l 33òí·ÑZfÂ<ð¦+?s{º|¼07% ]†+ùaåÑ÷Läm @#N·qÌaŸ˜ @om7`tëÏF"iF±UWiøöË*CùOoË„Íbö|jG*÷ੵ ÚkTT¤ö+â‘842 |çîãH}4-ä±§½­UõÍ,¶”±kQzØQØlCi¯%››j–•EŠÛà ܪ;TÐvSAâ£Ì<»a¼CcK¸]Wì#à}>Zfv;W&]¤”€1ƯØËÀ; Z£«ÏL¯ÍÏŸ²9îÌwü”˜^C`àÍQ&üÀ>]õÉš­æ 2ò'¥øÏ&Ýîf¿ ô2›4†ëf¬°_LÀ0z€ŽÈq€"5!œ–DÒb:ŒbÛþUMãö3 $tŠÀý3~Öq^ßü'Ty‚Nì—' &N ([¿q\z_Hcí:ƒ:_Ü¢º·@Y©nWoR'Î I†Ž3z™·hQÓ»½7q>€qºâU¥žªžÙi…7ç¤&æ?èŽ+Lô„AæÊäa ^ «'XáÉKÒŠ®]’Vt91¯%çBBÍÐÅ¿…DJNZÑu9i…SAø­®I‹ð´îíGÇݹ㻃±HWü•'!:1'µè–> уÞâÁ™÷/wt…y–I·Ïg§ ÊI-ºeIZá]Ù©Ec#l'ãTß]׆®ÎJcК> Ñý²ÓŠæd§;³ÓŠ’K=‰q¤RëÜIè0Šmß.còˆÉcÃÖ¾ñÐj|s¼¤ÙzVÁqE‚¡üU×;øö`hÓ -µÚŽöì‚nݢѻs߯ïð0÷6)mòMd~þÔ8bzLß“ªñ½oÎÝê³-¢4 Ë IyÉ746ÒøN“!þ•3»x}Ç%éÅaeS2Ý»|âhfÌÕ¯Zœº¾ÑR«‰¬ý‹¡!!¤”2V›õ§bü˘豆ì,‹¦­ö“>Kñ¦ƒ§DbþD_öôŒmîç®/ÞY7ŒmÀŸ,š¶:àÍì͹ojKfnkå)I$­¦C(¶Šr å'}†ò›®Ð?ÚƒñÖÿžiqý^ýlèÖ3pª@Ó¼ôHHrŒí= ÝbšWNGMæ×.28¤±ÏˆŒ§šjcž4=uÅG¼õÔI¬Õ·W(ÀB3 \aƒT0þ×”LB¡Ÿ@??EÐæÕ雫è")Å™“lŽªI~’;9 ÀB}¹¢qÀÛƒôîH0pMCuÃ1¢;›W°ésä–¬‚”œ&¹pèŠm¿‰µmAº=|ù w•þÇ«´ªÍ¨qÆýÝVnÆŽ#méTHÁÕC¾ßl=³ùµ)£“Û<î¹uÒ—(@“aé¬(à e ½¦u™vëb(P¦ÀðÖÁÆy)Óá¦d"qó7&U÷ë>ljޖ MõŒ‹w€h]1³U øÂ*¬44&L«ÿÏÌ%qU¦Ë±ìžeSÍÆ%"³6–W’‘gÛ¬àI˜éoTfnÈ £‡‡5mÔ¦C­nÓo`bâTTUœNí¥ù¿ãwxáÁ¶çœÔÿ:äný4a´R@Ó€“ÇŒ©´Rí¡°œ¬3ÁhrYÕ‡î„Aì2 ý0/wžÚÅ&z™E…(lbá(8LM„00D_FÌ£3ó™ºbCd1õÞscZÔ!¡ªH¨·gæ;N×#Å,Ò³Ï(†m蘣ª¾k3óÿ—Züûï·Á¾çAêDêšM&¢’Œ<Çß½¢Õɪ%&ín±ÕV ?b|ˆßxyx⛦ ZDŸ†²Ï7oI–HK4wc‡=8¸×ð×Õšˆh­/¢cl°ZO?®ãâ­aY,ÞÑ!डŒšÎI¢Îâ D15Ï™x·I±µ«u_Ma³Àh&ŠMÁ-¶zËÏ`y2Ñ™±ØÿÀ(C‚¼-Ù LÄÆ$üѤ^tV)Kg} æß0 Ö‰bÆ_3òí«ý­·ìô’Ì” Ú¤J„ŸØÊ«¿p®œ4¾Mç%‘´’vWlûw_â¬6ß¿LmÝvUì‘JSÏT³˜)¶C‡NaïñÝ!É4²»Eå(x§4ào°íJ<=w¾± 'ówãˆëklxiÞÿóÛ!w® ØD±5—ä˜`x3"ó“ Mo(…4MÑÈÔEAlSghªY]°F™ÝRšSäÁ`6XL­vï¸)1^ü˜Bâr nÛºp…ªú¾Ì\îhÜ.'½ðŸ,0Œõ¦m€QÐDafž£y?¼D"íîŠÜ·Ë8}2zÄDÛôSmgûÉ&—@5IϾ6(*Ah~ž^ûäüò}TuËÕ£eóeѶh ëÕöEÙÉý®Å N£På=…*Ï)TyO¡ÚSŽ*Ï)TzËQí9]~ªöÜZû.5"à„¾Œórç©oÎ}3ÈVà´ÏBJ¦Ñ•PHíe’ýÅÓcÓú‡Ç%ul|×óZ•Dèäb…º[ÍÖë‹u‡޵{`p3Ò\·¬IHñmj®Ži;Æ.6.§>ÅDN“êb¬G'v§®_³07eŒÏVý0.ÔŽgÏeeÑ„†¥9sоË*H™| ¼æ—þŒnV+ž¹¹cÕ?æî³D.ÚU±y=Œ#ŒŠmöäkLj·Ã{ÚÜÖb!ôèmÅáýÁ¬/I±%v‰. pªìÌþ¾cl Ü¥eË&:ÂnÛ þŒ@wëŠc"ö^ À4G#AìcÝs7Èz8B/“¹±Ý‹±X°,ù˜¢²ô?sÀú´-bát9öA7ÏF௳S‹þ¬]¨0);M<ˆ±tØ÷vvF‰Ñßß ÏÎ]] 3c¹ýߤҋ`èÃrÇîç ¿ûRâÿ¨seÒ›ÐÔLÖµéê#žàµÖÊ#‘´”vuE–žðB˜xò¯º´Eë_[ÌáÊÝ!µïÒÝ}½sß¡úTHÁôdÃòŸ /¼y !¡*Xÿ€lD»LŠM-62SxD; \«< ³L cOÜ9˜<õì6´ Ñ›áÄëq›¹îmŒm 9sŠ?ý¢u€Êb¤Yyö¬’oUÝÄ kø×éš|‰Óåø]ÆrǬy¹ó‚ºw%’ÖЮŠíT™1*PU cêH„ÆáŠÝ!µK0¶eeµðj­~ `Ú¥2 ƒž—Ò7–1𡾜¿ºï¿—™*ŸÇ— cº¦^ ]vCÎI€ ©_ˆù?ðæÜ­f¼g8a ð %ØÆ§u£€ ý|W[רµ„çn8FÀúr4?Ô¾—Î.ú@«ÖË,žµö€OõåÌÄ"§Ëî´/üЬèlÛ³{Á ‡ÉK„DÒ:ÚW±•§Lºt‰k˜¿WsãDM“KŽš%.Áø")cËž6M…4âÔ¹°a2s×õÓ|žìßfþxqî†c ¼¬+V5(ú,XḀ>7ä·'=‰ÿjø Ôå<ÔA·Ý—?±q¢s~þÔ80ësRëQžX·^Œú §úLS —çåŽ)1*3ýÒ¤8Ùï¸.X‘3'ÉÚ”ÒŸ?µ`´v‰Õ¢¬,ó­/ꌳÁ¢cˆ¢.ût€ôû/õS4C:0‰¤Õ´ë[¹>"€¾½º‡uŒ#•{ÁM§l–x‹ 6îÚ€ñƒ'¶¹ßq}Ñ»K:y´Í}œôÝ\ô¯ƒu[×è•Ð\·§Ë g^ò*&¬SXôDÃðW`ñWzür2ø§ËÑŸÿÑx0Dä#Ë?(EõF¯ðÙª#0#¾Ucå§Ë±„‰ª,‚o…I†øE°<9wmMf¾ã±ú~œ‡Ê«“œ.Ç{Ìü%ufàbª ûÕÙý Läl)Ùé…«œùŽOÀ¸Â¯8Œ|§+9,Ö3”Ý`gÀ>=p+ét9ž#ÆFVh#Cl„€—š`n ÃÛ­Aëtp¬}«ÓåØL M ÞH cæ±dÃl€úèÚø„×Zd±j·šº„–%S•Hš ]›™+rHŸaãxµ1ÉBk‰ŒV`µ¼ÞÀÀ‚¯ö|¤EË=|JÅæÏ¢E,ä'ߪ^‚þÍ!Ä×p=0”ŠìôâÎåÉWBá·p:½¸Š W™$ä÷á‘%iEÿö/|vîêÊŒ<û÷ˆècþ®Ïþ'æÆø@-"ðå8­€ս㣟?xªzÁO)00À"26 ŠPîd¯2àïëV¾ D7‘I8'©ÄõK®;3áJ0_I Ô_`3*7iuÒǘÌõó \¿Hܤ™ ÆíÏÏ]{Ò™ïØ¤ßïZzžI0ÚÍéóq@F.h:Ýfj}fkF[Ù<Ûöƒf1 ­ãâaçþǶ°4µðŽjSê3òÖ¶™‘=§ðsEU'X×LÕ½B¡Ë—¤™†€æ¤o¢º¤ÀÁv|ö1ÑrÒ e¢ÁY4mµ/;µèçB¡©¾mÁ)0A mã?‹Ó×íx˜~Œ–mã‚[œ„€/pÝâôõÅ-бÀ·,I¯{‘(u'¾‚>kB)TMŸÌZ"i5íf±U˜Xk0npx“x´.+*F1<掗¶èyÛ$Ãú ¹ó•úõ_:s’qwõRp)½AÔÌÇÞM¤ì‚ÃÍë&/|ÇÞKóa,3Æ4Šƒ|É oîó­>ó¼ž%©E%w¤ô(¯JÄu.µ]`ú´&ºfM}cX-â ŸG©3º6ísé쬂”Ñ++†²¦Ž¬w;Ž¡‚wªl'Ÿ¶CXyç’Y%ͼ‰Ñë`è'w ®ƒúµe›Ÿ?õ›pŠ2À(úc?1mÄ‚º£×æÂ½‹±È*H±ì¯¨.²hJ¢PD"3%‚x€h!¦ÃxoÉœ¢Æµx}7¯ÿòèØ‰ñÁJ"%s"@À| „ÃDüÙ’´â€ ’z÷ï4çòä©PÄÍLXçy[¦Ý’„нv@‹6Ml`îÝ=aµ…î<Ù³½k>, †€ƒË¶"62ä½Yµý_xûO‡ÜÏš˰g{àonØØð`‰ZÆçÛßÇŒ2??õÐ/pÏÕút‚g‡p¬cûzSõ˜Om1]o&‘H$gƒv³ØÌGâã#ªԀðYl‹Q™»=¡…û@ÿ®‰H¾2šáó0þUð*–®|Q‘ˆŽŒFLT$¦Oø\}oÈcI$É…@»)6³À‘^=š[óÚzܾ0)6ë™QlÝcûbððÓ©7–á«o«êhšh³b{wëX¹ùMØ,°)Q°Yl°ª‘ˆ´D"&2ñÑqˆN@§¨xì«hÉ4D"‘tlÚM±™ŽôîÞPðháqÙ›YlO“Ó4-"Ú‡[ª«äû>€3¶Ë¶Dr!С,¶„˜„°åÓ:65ˆÅV^úú3©ØŒÜ¾jLLÔXû;`\ÞÞ²œIXPjØÓûK$8í2ÇT±EŸÅ¦Ì#Ö [YU,6<(ª&âÀT©ð<1$æ¿ð>H:Ë"†…¬,R `f{Ë!‘œot(‹­slxSjù„‚NÚB°9¶ŠšÐ§C¤Åˆ3oâ•Ltƒñ?›V|ÿÙ—èÌp`ìÄdb„?ÝŽDrÓ>ŠÍd tŽéÖqÂe­€Äb«¨9rß2x$&ºÛXÈ""Jjª]†+ùab®[3bÑþ“=«ä˜—;OílÛ? Ð žÈLËrÒŠÞ÷o{ß2û`ŸE±³DAðQRx»âÃëÏ]_¼Ól¼¬‚Ë‘“U|*+¬ ă  Ä °_@ygizáþí2óì·1h(€Éz7$±¸Ñ™ç¸¨ñ³‚•KR‹J?ƒèÞü¤á‚@& bðAøBûgöõ%-²^Ë“§‚øÜbÑ IDATj`ðîœôâ—å% ¢Neà20@´Ì¼ ÑŸøo+“±Ü1\!\ÆÄãÆ.(ø>ííæä˜—;OíbÙ3šUŒc €á ìlØZ(ÒRúåÓ3¶¹ r¯LêŸÚørãéýDƒL?ÉUe@ÂÐ%°h¿ÉžU²·¡nVAŠå@YÕh"r€a¡'€ý þ’<â_ÙsKÎL^;ÉY§]›D±ÅF†w[¸òDMXlÕ•!÷--¶Ó8s“`SçèË xÊìAX‡®Xšjð« —ýêÎ6ú€&Ó×Þ粤ÞPÕ· ÒdªßBõ»d34:ó¯z:Egú?Ôä%OPˆ ¡’…0q ŽâºÝ§ð£N—ãS¨Ê³g­ÛP'(Ýà2\£@ð·V(êNM\®.©hØÐ›¨êã™.ûßNz>R¿ßYp1 EuM©"« å5|R Œ³ç©óû­»7€­¼zí]yã®{)}c™3Ï~/)ôw¬5vÛVÕG3ò’˜“^øO³¡3–;†w±áu&øï¢Ý0 ‚ÛÛegÆ ûÍ9³‹õûBuaQLjS5k|à̳?ý~òW} À^È\î˜Ä ¿ED}«;À¦þ)3Ïñ‹%éEÏ4yÝ$çí2Ç,£²6t%0Ž^½M&W˧…ž/Ò¢ÚBîã|#”y “ŽšP ZÙÕôÌ|GÞCƒRÓ‘á²O†ª~`rýwØÊ«WèôW…-1¼šX¹ð{¯– o5oâ Z‚F¥fŠ…AwŠØcªPš îPYÕÇNü1æ7Qo²¬Ÿ:ó/ƒè9Ö õ:ñ«™Ë“ôœ.Ç=¤`#š”ˆ1˜­ÉÌwü¤ézbº3/ùG ú‹^ALõc:YA@M宋aÂÓ®äß49žäœ }›zæÜzþ„3£‡ 6YTº•é¡osÞÀ¦î]K¯/ÜßÊžÆ3ã5ªÙÁË’ûè#½ýŠ1è§¾ÀZ]“«2\výCß `#À/1ÑÀt ˜°ªþ˜?½5/½ `~ Œ,“:øm0²ÿ€’ùÉ—)+œ^CØ ÐýÜ ` 1¾Ÿ±Ü1Ë켃ÁDot3Q”C×ðêö€ðïýî¨; þ€‰¾OÌ?°ÃЧ‚¿ø¾7o¢@ÿ¤°¥Ìx’Jð<¯‰•ÍpÙ¯*7h.ˆv<#/ùK4¾=ðw€ðê‚‘NŸøÿ,Ÿ42X’sƒvqEªAF­¨ ïºT› 5®} …`/1áPlš'ä>Î0Z5øði! €Æ6“B;ÁÂí#u»…Ä/ðó²Ó‹>€{—OY-ßvY¸u_(‡|_ô»hÚj½É¾ À_3]ö›°”y¹£moÎÝú8]Žˆ¨CÊ[9i…íœyÉoƒ^B}¤áú%s 7€seR14õKøY,¤àv+[v©Ô+Mfú}vzѯëËÞqº’ûü ¾2_”z«g½9w«2óíÇ™é]]µI?Éõäܵ5õçö@ç%8sÒŠrë?¹2ò“wóïª0ýÀ‡AäNôû5€×‰x¿ÐÈRe«Ýë‹Ò[¯ÇIXf.ž³æ(8ó»À×ɪ¨ü}Òr;‡éX®È0DúC °Í_ó8†c^Ð+šœ:º 0UlŒP&õ÷ÇxÕ1ÙiEO-™]èZ’Zü^ûÜ ¾GWïÐ’ôâ>Ô?øJü+00éÁw“ã ;£Äk¢Ôé½i}. Öl]#¢.nðyö± ÖÏ9nY2§hsÇú ™íº:WÏËgj­63½îÿ™˜¿ R5·A©)–-&u¨2Ò72]öÙ \¦;üMvj£R«+9ìû €ÒÀj˜èÌs¤7-8-ËN+º2;­èù%©ÅïåÌ)Z狜`t`5|Ð Ô ÏÆâwÜGf\ÓäX’O»(6KWde˜-6°Y£؂Er†Ãé•[#ÌFÅÆ„¶û¨‰^j°ðB¹ ~®©z¾1Œ ìÓYj=|UK†]´ˆƒûTjIûHQnƒÎÊa2Ê £¬»XöØ[3O¿Î‘ÛJÞfVQ°Px‹g­=¿½lO7Wú3M7öbì;;£ÄK€q+w&íýäQùYCï ‡¤€kWŸú—8éþåŽð†hKÎ*íäŠ f±…7x"Ô(Tè^ÛB°Hθ0$nöjÒbk„ ÄÜæÜÄØe‚‡šŒkPd¢˜¨.èay°ñæ¦ÄÂVÕÙK'˜½8Š ¦°à¡¤?{Ýù® ûõA–¬b€u­í[½ª‘âQØøÝg¡šYh&“ÅB­G¢@{‚²@²®î  b×a¸ÏŒ÷™…ÙKÁ~ü>+…Ç!¸ûSÒÁéXŠ-ÌQ‘@øH‚YláÈoéÒbóã$çMÀ ø¶vÆÌ&o54úyWÆ g¾£@WѸµ9£1=hÁò‰—ƒ”«â«˜[C¸¹y´=)Ôª _¢Ó ’OË·:óWê 7%k ;ÙÒª¾.QÇ[×5 ×—1‘©bcÆv“•Æóó—GóÜç¬,R0Ö>ÐDŽ_8ó÷éŠG…PŸIrÖèPŠ­Úž„ÅþD¨gX±E…þý—[†‡«âÀØìí ›mJuʹ2):C›ø*º­ObÑjëÓLÖá`… âáL ʀݰ†>jV³ÅÝ­ÚBcÿ%Ž> 8ÂäÐØÝ,¥c\;IÛèPslU®<ŒÁ\‘áÈo)-¶ Šna£Í_4fÄ?ønr+uºåÐY­,0;gNQk–AHÎAÚÅbÌSTUŸ‹-\slšÉ:6" 62t/Y¸öŒ; aºöJñEÔL ß(Ên} ƒ›ÊJñ†"ð3þJ-\(Ä»MÆj¹¬ÖGm ÞƲ ÷B€·ÃžBMf‘œ'´›b‹Š6.±9x"ž›@ÎdðˆÅžËWVs,,ýœœô,ÁpAˆE·w†‡$ެ,³¤iFˆŒÛé0ÓFÿÏw¤DBÓ&›=ЛJÖ!aVŒëᦊ 0+ç¯Z;&™eC·êÚ-tÙûg¸’ãt9¶:]ŽWùÉ)­•Cröi7ÅgTlŽÅv]‘kx._i­ùú…È›sßÔˆ)O_Π9]“aD¯\4É|`ŒÃ|Ù“½H ŒÚ³ª™]f _*bpùË‹Ð- à¸7â”ÉÚAÐËb>w&L^è *Y°,¹€@71pJµF¼ØÚ1m($Üuív/ÇS\fÖÃï&Ç/X‘œœé²Ïn~ü³Ç ©ŸD]îN"} ¿ÎÏŸÔEš’ÊOA—›À{îºÏZýpÈI+z„OtÅö~’éJ6,”w®Lê–™o¿üÞ¼IÓÀíåkô5tÌ”ÑZY$g—v €XÅVZþ9¶È3芴Z[±È”2©ØX:»°Ð™ïxŒß` fÐÛ>[µ;ÓåØÊ@? Ð*½àæÖŒáS¬µ°×‰À^±,sºGØ$€QQˆL¬ßÈæ0€·´œÁ·ø÷Gà)°©û.ûÇõ)0ƒÖ8Hñ?€.ò/!Æ|§+y ¾h€ïU½WhÚ-\öÐÌ;]ŽýDØÄ €Qú)´ ÀŠÖ\“3 Yè Öxw[˜kaïL§Ëñ N%@—ʇºÙûT›ÇÔð Vð)ŸuC¼Õérì$àKîLDƒÕî €Iû€Ô™M–2!¼;"KÂN‡²Øª«}¨r‡w‘ö™ ÷·YC/¨öVÀ­…?ô\''µøQ€£"ê·=isÄá ©ŸWX¬<æÿž \CÀLÔ)¨Æ­Â`IZá[rMÚÅ”Z߯GÀLXLú;Œ–)¾¨¾ŸØÏZ{@Õx¬‰õý˜1 Àtø/(7ßì­]Y2«p›Ðhú=Öb\ ƒRÃ*EXǽ”¾±¬ÍcÎ)ZÇ O Ÿ£#C˜C iØÉ\!И>ƒÙJ{¢Û*äìСlٻٴ¼­„mŽÍ$*2"¢UÙ‘L‘nHsÌÙiÅO@UZ ØÃ͈V­qjàٙŇ³ÓŠRA¸“€BÀ4'¥° ¼ÚXzD»µ~‹}€"f-I+zuijá—²žmiZÑgÌ<0]Ìö Æÿà¹ë‹w椧üCÔ%g6soh ì$à}0ÞlòäÛ‰¥×îˆ8yDÝy賸 ø¢nICñµþ ‹ÛJÎìâõ¶“ãüÀ—ÐÍõÕãè+¨~Ú¥sÖ}ML÷átN7ÿ²¸£~ªL’3K»¹"cbÍÛ7û¿Fò°ðÍ‹ŸÉ¨H›5Š-ü3çõ»Ng8s’j½l‰VÁý4…{pD´ë„·ÿ¾†Ý¢½ï%Q1–€/–J¥ÍÎÍd§½à . N#\, Úæí6Û‰f;wgg”xüu^îègºØb‡ ð€DÚJ¿Ð××<ꨈŸ "ª,;䤿|WAÊ,e5«ŠHyÊŽ¨Èã;õý0˜‘†§ýrmXÇéÛª= ˜Ylqñ6DÚšKØ4»åüšD"‘„v[ÇÖ@÷ÞVœ<¸ôæÛÛ²CEp†t¹$¤öeF‹­W÷Ð#"ÏFàˆÒñP\8]“/!òäd¶ÈN[»¥½d’œ?Ü›7ÑÎ uñ/Óˆ¾]:»hW{ÉÔžtÅf÷[÷#;z´ÇNA÷øöhl¤Wì@tŽêÑæ,GØG I&Áö–R-!ʪÏR$iX{ˆAwèÊ^pg»È#9¯Šò'0ö T˜à‰v©]iwÅÖ£—ÍPÆ\7Ï6ÿªÐV70²»k÷¶~ãÜÒã^ÔÖ×°Ý0åúäùîøx5CB‹°m }#Ô³I¦+ùF&þ?³cÌäó!RpÀ…F›–Î)þ/ƒ[•d@"‘œß´ëDF+ˆK0¦×Z½© ¬ãŒêÞ¶­¼í7ZkQÑ\yÉôä)9ðaHí[J´5þ¬Œ6ˆ»1ÆìÀv"¤q/3=F Vd¸_eäÙï$Ó0$‰Dr!ÒîŠ ú&ƒ0Öno2䋺OlSÂóÃûŒVÕÅá´l³eSkØphµé1E5Êèñ¶(ýŸ)± ÍW:§á‹ˆè¥ ×ÄgÚ[‰DÒ1èŠmÈHcfcǪ°¢dYØÆˆ‹èŒ‘=‚l‹„š*£‡J%}êu!Éòõ±bTyÊMYmÆ[RUSmR³eôŒMD×hCÎØs ¯ÂJ ×øQ“mOÐB§ËñøÙM"‘t4:„bKèlAw“¹¶gó;»‡Âô¡·µªþ¦¢ -pú¦[·h<0óÇ!ÉÑ”Òf’`ºªÆH½Åö¾:·)Ç{±õ‹*l)©lüsë†îQ¡-8CˆÅéë rÒŠ–/I+^„£Ú¯›Ôû©seR‹-ˆvn•y¹£mYY!˜ðÍàÌI²ÎËmütœ9IÖŸäNÏmஂ”ÈßÑ^ãŸK<øî°gNR›·$™—;Úv6ïõƒï&·y¥ÝƒG22 ÇÎgoúÇ+Ž¡[\÷ ­ZÇÈîvôK†ýåÛš­{⨻¾3nš9çÖÜ>áŦCfûEÖa1Ql5µ¡™Löì-ÿk¿ù»¶×b϶TUh ˜2~ îáÄ´ÑWãù’ÿñ;1svF‰÷öUc2¢j"gèäwÈJšåçšµsº&9˜yÛ3`·ÞNN—£’A_)ŒÜ¢^}I·KF¾ãy’€=·$½02VØ'*ó4¹³-fÂÁ±vw¦Ë±Ž™×(Ë‹‹g­=ÐÖóË*H±,¯žO dAOõâΈQœ.Ç7¾dÐF«'jɳsW7îÊ›é²ÿ™‰¾БÀÙéEóͯ…ãw ÌjøL'–¤]Õù2óí×Càr&²£§:® Z¤Óå8Á@‘^²$­¸qóÖ —c1&éºx?;µèçf}ëë³Àîœô¢tÿks¨¼úL"f»è7ºXœ.Ç1€?cgræüÀæçOíc÷†ÏæÙϦï›—;OíbÝ3O&#„KA¼ ”@©è`vjáLsyí÷QFcMfÁ@/"¬áÿræ¢×¬p\©0 ÛopÏ’Ô¢}y¦+ù.&þac`­&Ú}yÌ×ÔÞ;¾»5Âò;0MºŒ@OÀ™çØI 6²Ð~™^tm(#ß~#3.#ÀÞÙ3¶ Z„Óå8Î@1žËN-ú¯¾3ß±©áâ®Å©ë7ˆ¸ìéD4`ãA¸3;µ¨qÃÞÌ|G˜g3È`"€®N—£ Àw ¼XYûÒ«Ó7·(US‡°Ø qH¤a;¯WàIןÃ:Î5CТzÖVʺtÂÃé„4þ–#Ÿ£Úkì»èc ÍÉòÐv¶Æá~Ç“øÁ˜ßàêQ³° mþùè“ØóÆØÿïïðÆOs1môÕêv·<xuúæ*b~E_ÎàkÌêgº?ÄZª‹¸œŽÓ 1–Àv&ÎŽ(¯þüÞ•“Öš0´!x…‰o­ëË~ úœA˜ @<×€èQ¡iŸÝ›7i`[Î+seò°ƒeÕk,aðÆ°¡î%t4€[ügŸ­ú‹Œ<{ãšì2Ünjâ ýÿºLÜìZ˜ÛW‰ÉÌw¼ÁLo3ÑLŸ¨] ˜É üL—ãµ+Jv›ÝdÖÿ¼Üy*éä¡q»»sÇw?P^õ¯ ¢ñ¬¨Û »@7BÎ|Çýƒ‰lB³ù÷é]óà»Éñ]¬{V1áua"€‚ºÏ(/Ïp.K æÏŸPä&Aú>â«Í«‚g˜J±À•fõâºÀû¦ø‚?ìiºÕfýLFP¨ cÆ<úeF¾ýV³–óó§Æe¸ìËÀx“€8P÷=€nÌc¥3Ïñ‚á;æ/èºy¹£myŽ·Xæ‡À˜ šA;§Ëñcf¬cÐoP·›z×úC1ÆñLTMdá=˦$šŸk F±© áF+÷­Þ1©Ývìý®Áø>)MÖÙ³£Ö`=Z¬„yªÒv#—ÁXùÍóMÖéÜÕ}ŒË©r7Ž–nó¸ (*®Ÿ†Çoý#»õ ¤O¼]âºêS¡…¤˜E%f¤4Þ¤y¹£m.G.×­çñÿ¾û ÛI™ ¬i®y¹óÌwÁ&gæÛÿAÿF²Ìw²$H|ºð{¯–Ÿ ™o¿–5ÞXÿõÇS/¯?É¨Ð™ï˜ Äâ}“.cDo‹!ï[½Òä_Ƭ4ùCs®LUYÈŒyºCÕн1p«ÛÛù ЈÞ5é.q¡ËnðywŠÜ=@€ûI!Z ò“/µÚ¬_hš®™ñú3~¶ ßñ`°saà·Güɨ<4 0îê V”Ëôe?ÉE k”™ßaâ 퉒Íe1œ€Æ«?2Ùÿ“ñžy=@ N+³IýhbzNÿ=]°Â1ȾbéºúÆÉ~ÂÝè©ÛfÐ5]¬Ñ¿±éú¨¬‚‹Óåø€'èAôÁxF«ªwEKÜ©F±À‘ц²C‡+ðÁf³ßFÛ¹cܯÑ#Æ|.©ªBÃFkí7 âªÑ!†øïÿûOmo²ŽÅJˆ5Ù]ü£-†ßÊ3ÌÜ}–ƒeou]"bî&àF]ç­½4Úº¹:&tŠØ{̱0Óc¨Óÿ« tqŸ„èNš £âéïóÐí-=—y¹£mÌôêÞPý¢{ØÓSõáOºf`<í\™]ïR2¸•/×—i ëèÂçõ4õ€4ËŸPg1ú“éIˆî* °)àÓƒ™+“‡-M-ü0Þ'Èðà&6<ä+Nº+?…9€ÿÖ Æœ> Ñ!.8`[b~<Ø ³ºKW\  V!Ô0ìLÃu¬´ù¦à´PÞ¬˜ýXÇéçIëå3ͤΌÉú%, V8´5}ߘ7°Â£³ÓŠ:©$. ß,ÞçC€[˜4<ðEþ½èîÛÉ.©ÃlÕõñPæÊäaæã#™‰~¦+õ¨QXð²ªÛÜØ¯z=Þ>ðh= ´4°)]Â=•Mœ1€¦Ø:wµ o¢qø·¯†7Ø-ÒƒûFÏØ@«¶ì¤«–Ÿ@uÕéÜV›‚‡î¸ ?žýÓÆ¬ÁõMË‚aºö4Æ |²%ø¼Ü… «Ât‹I ÔM–3ãWºÃ< ÑücNщçç®=©Zl÷C÷fH,ÒšºFhtû’´Â¯M[í[’Vøˆÿa¨¥þ`›¢³5úè¬(½–^ø·—Ò7–-M-<’Zôsô_„^,,?¬6¦Àl p bcPÉ‹s7 &Û½Ë'ŽXg©ñÛÙiEÙ/M[]»tvÑ.fñKÃ0Ϫ—Áððe˜Y$s[ ¼ÿæÜ­žLWòLÔ¹ÂüªÒÓÙéEy‹¦­ö-ž³~+¿ÓuSëá`s† ™Z€èaOçì´¢¨º¿uE ˜Y¿Ŧ°Áâ;ò|zц~›‹68¡;fël‹ Pb¦¢Î=hF—+&Žò/ æÉº:¥'}‰ÅAÚÃ"æäÌ.þ<—ºþ[ÿ1Tb4º´ä%O BÀ÷Ÿ€×—¤¾ôôŒmîçS×n'~~´ñ^›`AÝ9 "þ5T­{vZQDvZQt·I¡_ëê%U»÷ŹŽeÏ-)÷’å!è¬r5÷ûìXŠ ’¦ÆÃb tˆ}ùÕ>,~?¼Ë”zÇ Â¯S^õÃ–°q]Þ_v¢q§lR€‹/ê‹ÏŸ]ßÞºbý| Ǫö·¨î F—ìû…kB–á|ëyƒhðp»;ß `Ï"f”øˆ/òÿ3‹Ø"à‹C™ .Ðz÷‰!dž˜šUl c¸¡pÌß%Ó@ý\˜aý 6q£ a"ÝüÞk*‰´f©âJ…†ë¨Ô>¥î:`xc'œ–Kí¨€W[T³ñUhoÀø ½0 êÝ=flÐûé º@”`œgPåU„¦Ÿ_[ëïÒ\œ¾n7}¤Ø {—OéZDÕTø}wóǤŸ?ذüÄ _2ž×¼¥Ùµ’Ä­Ëì YMïµ ¥Èä^w1Ö£  ˜ß©~Ê@WúýXÄ0X„&~Ÿè Š ºö°bÄ%º1þýg¨õ´=ÇÙdù6üsÓïÛÔ–LJI@Ttà-úËK°~Ga¤ Ä+<ØppõYÙJ'\XkãÌaÊë×Qu2=Þžd“ rƒÂ¡$(e°QN6†œûcÌÀuRLH€ËDu\ëbŽßˆPŒÊªU0ó°æºy6gN’•Û­.ÌŸ‡4¾*¢Û”,•-ÚЙ_ÿ2&Ò¦°ñ:ŒaÿŠ×"0ÔgõÆ~fe|¦“5ßT`Á:×xsnÈÖCJhך„Öâ=²ê#>›}é ŽÒä}í®ÈÆMŠCu¥†½;O+²C‡Náª_\‚?­†Umsv˜3N•çÿ ­íJ8&^ÅôÿoïÞ㣪®=€ÿ֙Ʉ<@!ˆ ÖÒjD¬d¥UE^?­õÓ+‰|hï§Ÿ¶^ëã6EZ¹÷z«ÖÚJ‚ʽõÓöí… ÂC^!$!ðžB $ó>sÎÙëþ1I˜™3“™0yìï_ÉädÎÎLfÖœ½×Z{Öuضî.—(ü~ÿâä½´³'D­sm7ÁGêÊQv¶ŸŸÛ¿Þ®¢þn#‰õÑ.5H`ß»SjN½kW”0È´v‰!Z¯ËˆþK¦6 D[ C¤œesiü°… IiJDh‘“O2,¦DjZ‡ÈŸVR‘½&ë¡íz®›÷ÉøÛ¬¬„®§À°Z’ZÎb¢jŠzAÇkÅ`#X, ×­r ìUZ à›Eê~wrh™áÄ’é%ƒçWª‰MÛF1@+Ú:wð®  ¿ÏåM+¯Ë)°ïAS×™&ÖTÊÄù«îÛ %¼ôA¹À›4?|àdð‰<ò¨înê"ãÎ)ȪhÌåãñ€å žú‰˜[Ÿ†¼†³Jôa«j³ýÁˆÝy"ƒ9öD–/0vƒ¨Í× ³hõx·lDÀćÂ(¬GÕéË뾃gðÈ«S°ù*˜î*ºÐ°´üUÔyϵ}pÒú+xtö`=àÃÁ 7T¿€ßo`ÿð»yo⎛îl÷ý5úëpÖy jб»jœjdVrÏÁÄwDi•¢©ƒR+š¾>…Ȥ Æ_óf–Ä}'Q6²LŸ"…Òö‹T@œ‰rag­?~(€°Ê|k†2LVGÏÁµ ó lßÀ@XG 20‰•ð¾K *iÊ )% §TóÎM¬¯ut÷o&¬'Fh‹/kª7y+á©ü$¸¥%ƒOEy¯%‹5i~[cov¥]`œŽ l“`1G¬ùœmJ8 £ í3Ù „§ôOøþ†±i)èz¿—·ú`Ú YK#ºáBR讬ЅBÏ%Í»ãJþ Ö$%%0tó“-„òÊÒY»Åû|¾>Û‚•yÓK:ÝnªûE…Š<0e ¶®«Çù½Ñöì=ÇsŸÀº××uªwc¼5ø/`IÙK8Y n÷i±2ǦâÖ1©p6hpÖh¬×qæÒ)<ñêStM:F\? _»éŒ½åNŒeGzJ:üšÕrG•óªœÇcî*ÐÓCQ®tv7§ópŠ# `Y Oÿ—ì‚{G†©Ó¦¦´جÄg 6¿}ëÂ2M‡exDV8€Ù8Õüµ`*¤¦ö_-HyˆÓB/¾(FV`¨w§–8£]ù2k7èP`ƒ u ë]É º/b®%°Å ¬º¦ŽЮÀv¥P¨ ¼’~€˜2BGKˆ>»lfECN½á5xãSýÉpÈ{/1·”Ñ6ÿ¸åhƘêqãï_Î%–s*£~ÜèŒ?=±£>§ÀÞ€ˆ)|‹Å î §ˆ#úˆ2]Ñë3{•ýë¤5ysÊØ€àe“„­ÿ¬Gmõå糸ü0f.šŽ5¿êøÎØ]áhÝçÈ/.µk^oŠ ¼6 ¯6{ .\BQ]9Šê>ê’ów'?^eÌ ÌÛ5Þiþ’™+@4+ìçŒÙ ÒË‘S|Fƃ¦K( mTKú•cƒ’OŸˆ¬éaÝàó°Û˜oŒ²¥êÉüÙ{Î7¸%ÙÄF]‹Ìä™ÖÚ‡¹íÀĨˆl?EDst(“‹4}l¡ï; ¾Í„“kÅöæoÞZâÌYc7=6¤(³Ùí$În¼&u×¹F¯ ¡e ;ƒ#Ú‘Å~™i#QXšÿf„NOª©šµ¸ù–í¬„UF(Ìô‹ˆûŒûúZËùŸ›Z±20Ùwú\ÁL݈Äž¹pëäŸç>´%²<$ª &<ÎÌ¿&ãa³ø²×ØW'YùgÝçR§ V+aò´A¸}\B/жìÚ{þÅŽÊ3]ú?Þ¦MÇÿŠ·‹ÜeAMº,çÓ{R5¢|˜3£Ž¯(k©±$%¿ !â˜QÕã²²GÏ­¼{‘7ÀÌ Ûóû+æ¬0Àdêð®™öG"bSDf~=4³ñ—GdMT0c1äñâsù3ËÚõ¢a…"»z g毵T,MŸ¦‹ÃnljˆÛr¯„õyÙåaÉ9,x‘yPœÓ‰)ÆvizsÝqs?¡[#¬ZjÌ}¨ED©g£'/‰’·æ·¬U¾?kg-ÌWGá]=Xï²Àí¹fð³Áî3ñ¥#i €È:¨ç½?iÏïÏ]=n ƒÿÒ[5…ßÕ5åqÅÖÌb!Üeï‘£RPºµ—.ÿÿ8ÎcÒ‚YøáÌixó‡o_Õu·ã—öáÓ#à`méU;gdÉ^õCR Ð°e È”*ì ý ôJ¬ijåMa­c˜ñ~Κ¬[)ËÕdß~[cZrR²–)XÉdF&|y3J_‹9¦¯åL£0»˜x²Õf{àðµBQþô²ØïEH (ylƯ´$†00!§ ë= ñ … †u>"[;1 ÚÍ›†.·J2ÿ ­gC†Ê›^²%{uÖF ß'Y°²3{Í„—‰•ÏP8,®³fX¬Èd™ Ê$`GތҰ^œ¬å(í©Z„¬¯5kÐnþxíË—Þ¿p¨ QþBÁ„Ù¢ïžÞÿØY—÷&‹ àùÊT@Ë—L/éT“U"2›š‡ÚÑÚU9Ÿ»añ ¼hè5÷D"l#3ÆñÇZÛj¦³b<×)BQvåLø¥"Œmâ±f(ÃtV2YA&1g‚°9t šöøpz‘ë…5öÅÌø]ÄÞÊ)°ßªø8€ä}Bx,ÉlËÊTXd2‘È›^úR'EKûçGzT`k6h°ÎŒ#û=ØW憮34M`éÊ5X»s+ò~ö6¼#ê.qsèBÖ]†£uŸ·}°ÔYV"ZÀÜï ÈKÄÓ–>Yjªƒð¥øŸâë7 0ÍåÿTaþiНÃfàà4Àà­­Ž†ð`<'¨ù[Ó‡…Aº*|kN±/»Àþ,{ù…¬qЃiA°§‡é¿¨@ÉŽÖV‰ˆ ÁuÏ3PÚ±¾~ÖŸÆ:„d5H!æwȰ°nJ lJ…!˜¶¤0ˆÖ)Ìÿã4†•ÍwÅœƼOì  |ýg0ƒ?‚aÁ¹F/+18XcÁw:Á *­ìåDd®Ï •—]®eØ·u?7ÁæÖ[ļ-2›²ÇJÐtþèÏu:Àï E2À:@ nék@µ£I›Ô©²5zgÀüa'G°’c…Æ 1Ä ž¶ ybT`:{ÌTd$¢`‡’'Ÿ‚»'öÇà¡Áu§ªsNLÿ×çqïÏî۫߈{®*çq,Þ6ïÿDµÄÓ˜ð!Yè®%Ó˶G;àÏSözê#`¢W±MMS\"вŠÕn¼Ì—â»çJ²Èòg”d íÌ#B‘0è®÷gîÚíÇõª{'¢o©š-Ii÷Õ$äÍ(Þo±ÚÆ úÎåÁEæÛbuûoºƒâ÷f•FMÓ]údég 1ÌÑZUE??‹(9´ôÉÒ“`ÄÜ™˜£ÍÄkÌÞÆ€Ç4ÕÆˆú¿ ÌQ4ÇÕ•<׌+{¬—=´Å?ü‹²É zQ¶ Š~®àm|ÞØ‹(I-þs¼b •’ªà¶;ÓpÛip» |yÌÓÇý¨Óéû÷j.,ßÿJÏ®ǹõ`OÔxI÷üïÜ=íÞ“I’$©+ôê+¶ƒ¬¸nXê·À^úÏeq l©Iý1÷î\Lõ,vWm@§µÎóðøHOIG½ZFµï”xÜÆ™DA’$©W6u[*ê·oÕR¾ß:×\×HŒßê˜|7 0wÀùŸŠE(þ²{ì°Àèo¤£_jøŸZ[ëÁ+Çl~.uP]¶›ã½y§$IÒè-ÉF7ÁÜüøÃÕ«pöâ錨÷q»¿Jô$I’€>Øà+_OÁaáý#U¿y¿ÏIЈzK´Æm¯’Ó’$u }&°Àý DzKØmE»áå_LЈz‡ µÚ$z ’$IÍúT`KISðÍ'¯EJZøŸýÇ¿­Àâ,JШz¶ 5š­¯ì_œèqH’$5ëS ÒXðÍi×"}Àå+7f`ñGà?Wý&#ëy„.Öú¿ŸèqH’$…ês ®dÅãO_‡Ì±i-;°å/ÅäWÄñÚøìÛÖÛ=îÛ ×Ö$Iênúd`‚õmãîíéß‚;î¾\P^q ÷q^õóQ-À»5›vˆý;d“$Ij l $Œæ&jü>ÃP¹\WÅf‹rpÛ–\Ö=>I’¤žH¶«@†Ç)ü^·Q«ªÂp¹®kŸ]4,[+s+eÁ³$IRÉÀGBn§®ú¼\ë÷Ç4UìÑ´Eë³-¹'ý‰Ÿ$IR_``Kô@z€Û¥«>¯¸à÷Šãˆ-¾ª~›ËóöÈ‚fI’¤²²À4(XE@Z¢ÓÝ0—ðº:¿_ÄçšßØz ʦÊÜJw¢Ç'I’$™YÝ…§7^óøW,Ö”è%3àuš×#êü>qBUõ MÅ¶Ô %¹g¢Ç'I’$µŸמ,éÿèˆIPh€ë<¦.à x݆æu‹‹>¿q2 Š/tÛœõÖŠ·+=>I’$©óZ’G\…_Vœ6ò~ÃÀF·$pLqáqº×c\ôûÄÉ€Ÿ÷j±]X_œ[y)Ñc“$I’ºNXVdç§O¤=vóýŠÂÀ¨Au„×#t¯[¯÷{ù¤0ö©¶‹_¡Ü S’$©o2¥û{ÖŸª8mä$ÃàµMHÄ ¢ñy„áqõ~Ÿq*àû4UYUßÚM¿=Q“è±I’$IÝGÔ:¶†OO×{tØÃKò*0¹šòy…áq ªOœøÄ~MEŠj]·ù7_T]ÍqH’$I=SÌíó…ç=ôôèién×_Áx*Þ'öû áu‹ŸWœ ¨b¿àëv¾zðt¼Ï%I’$õÄÌ­ð4YÒ\7åèG0ç¹ $Ù¨Ý'PýBx\F£ßkœQý|@ ˆ•Öï\´ÿxç†.I’$Ifm¶Ôâlx~ÀÔõ úE¬ã~!ÜnÃé÷ˆ³~Õ8 Plèúú¹‡ŽÆuÄ’$I’ÔŠv÷Št®ûòŨ¨üºÛi¸½^£*à*v CnÏ­<Ø••$I’¤öø^ïK«SÌÜIEND®B`‚PyQt-gpl-5.5.1/examples/qtdemo/itemcircleanimation.py0000644000076500000240000003213312613140041022751 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import math import random from PyQt5.QtCore import QLineF, QPointF, QRectF, Qt, QTime from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from guidecircle import GuideCircle from guideline import GuideLine from letteritem import LetterItem class TickerPostEffect(object): def tick(self, adjust): pass def transform(self, item, pos): pass class PostRotateXY(TickerPostEffect): def __init__(self, speedx, speedy, curvx, curvy): super(PostRotateXY, self).__init__() self.currRotX = 0.0 self.currRotY = 0.0 self.speedx = speedx self.speedy = speedy self.curvx = curvx self.curvy = curvy def tick(self, adjust): self.currRotX += self.speedx * adjust self.currRotY += self.speedy * adjust def transform(self, item, pos): parent = item.parentItem() center = parent.boundingRect().center() pos.setX(center.x() + (pos.x() - center.x()) * math.cos(self.currRotX + pos.x() * self.curvx)) pos.setY(center.y() + (pos.y() - center.y()) * math.cos(self.currRotY + pos.y() * self.curvy)) class PostRotateXYTwist(PostRotateXY): def transform(self, item, pos): parent = item.parentItem() center = parent.boundingRect().center() pos.setX(center.x() + (pos.x() - center.x()) * math.cos(self.currRotX + pos.y() * self.curvx)) pos.setY(center.y() + (pos.y() - center.y()) * math.cos(self.currRotY + pos.x() * self.curvy)) class TickerEffect(object): Normal, Intro, Outro = range(3) def __init__(self, letters): self.postEffect = TickerPostEffect() self.status = TickerEffect.Intro self.letters = letters self.morphSpeed = self.normalMorphSpeed = Colors.tickerMorphSpeed self.moveSpeed = self.normalMoveSpeed = Colors.tickerMoveSpeed self.useSheepDog = True self.morphBetweenModels = not Colors.noTickerMorph def setPostEffect(self, effect): self.postEffect = effect def slowDownAfterIntro(self, adjust): if self.morphBetweenModels: if self.status == TickerEffect.Intro: dec = 0.1 * adjust self.moveSpeed -= dec if self.moveSpeed < Colors.tickerMoveSpeed: self.moveSpeed = self.normalMoveSpeed self.morphSpeed = self.normalMorphSpeed self.status = TickerEffect.Normal def moveLetters(self, adjust): adaptedMoveSpeed = self.moveSpeed * adjust adaptedMorphSpeed = self.morphSpeed * adjust self.postEffect.tick(adjust) if self.morphBetweenModels: move_speed = adaptedMoveSpeed morph_speed = adaptedMorphSpeed else: move_speed = Colors.tickerMoveSpeed morph_speed = -1 for letter in self.letters: letter.guideAdvance(move_speed) letter.guideMove(morph_speed) pos = letter.getGuidedPos() self.postEffect.transform(letter, pos) if self.useSheepDog: letter.setPosUsingSheepDog(pos, QRectF(0, 0, 800, 600)) else: letter.setPos(pos) def tick(self, adjust): self.slowDownAfterIntro(adjust) self.moveLetters(adjust) class EffectWhirlWind(TickerEffect): def __init__(self, letters): super(EffectWhirlWind, self).__init__(letters) self.moveSpeed = 50 for letter in self.letters: letter.setGuidedPos(QPointF(0, 100)) class EffectSnake(TickerEffect): def __init__(self, letters): super(EffectSnake, self).__init__(letters) self.moveSpeed = 40 for i, letter in enumerate(self.letters): letter.setGuidedPos(QPointF(0, -250 - (i * 5))) class EffectScan(TickerEffect): def __init__(self, letters): super(EffectScan, self).__init__(letters) for letter in self.letters: letter.setGuidedPos(QPointF(100, -300)) class EffectRaindrops(TickerEffect): def __init__(self, letters): super(EffectRaindrops, self).__init__(letters) for letter in self.letters: letter.setGuidedPos(QPointF(random.randint(-100, 100), random.randint(-200, 1100))) class EffectLine(TickerEffect): def __init__(self, letters): super(EffectLine, self).__init__(letters) for i, letter in enumerate(self.letters): letter.setGuidedPos(QPointF(100, 500 + i * 20)) class ItemCircleAnimation(DemoItem): def __init__(self, parent=None): super(ItemCircleAnimation, self).__init__(parent) self.letterList = [] self.letterCount = Colors.tickerLetterCount self.scale = 1.0 self.showCount = -1 self.tickOnPaint = False self.paused = False self.doIntroTransitions = True self.setAcceptHoverEvents(True) self.setCursor(Qt.OpenHandCursor) self.setupGuides() self.setupLetters() self.useGuideQt() self.effect = None self.mouseMoveLastPosition = QPointF() self.tickTimer = QTime() def createLetter(self, c): letter = LetterItem(c, self) self.letterList.append(letter) def setupLetters(self): self.letterList = [] s = Colors.tickerText tlen = len(s) room = self.letterCount while room >= tlen: for c in s: self.createLetter(c) room -= tlen # Fill in with blanks. while room > 0: self.createLetter(' ') room -= 1 def setupGuides(self): x = 0 y = 20 self.qtGuide1 = GuideCircle(QRectF(x, y, 260, 260), -36, 342) GuideLine(QPointF(x + 240, y + 268), self.qtGuide1) GuideLine(QPointF(x + 265, y + 246), self.qtGuide1) GuideLine(QPointF(x + 158, y + 134), self.qtGuide1) GuideLine(QPointF(x + 184, y + 109), self.qtGuide1) GuideLine(QPointF(x + 160, y + 82), self.qtGuide1) GuideLine(QPointF(x + 77, y + 163), self.qtGuide1) GuideLine(QPointF(x + 100, y + 190), self.qtGuide1) GuideLine(QPointF(x + 132, y + 159), self.qtGuide1) GuideLine(QPointF(x + 188, y + 211), self.qtGuide1) GuideCircle(QRectF(x + 30, y + 30, 200, 200), -30, 336, GuideCircle.CW, self.qtGuide1) GuideLine(QPointF(x + 238, y + 201), self.qtGuide1) y = 30 self.qtGuide2 = GuideCircle(QRectF(x + 30, y + 30, 200, 200), 135, 270, GuideCircle.CCW) GuideLine(QPointF(x + 222, y + 38), self.qtGuide2) GuideCircle(QRectF(x, y, 260, 260), 135, 270, GuideCircle.CW, self.qtGuide2) GuideLine(QPointF(x + 59, y + 59), self.qtGuide2) x = 115 y = 10 self.qtGuide3 = GuideLine(QLineF(x, y, x + 30, y)) GuideLine(QPointF(x + 30, y + 170), self.qtGuide3) GuideLine(QPointF(x, y + 170), self.qtGuide3) GuideLine(QPointF(x, y), self.qtGuide3) self.qtGuide1.setFence(QRectF(0, 0, 800, 600)) self.qtGuide2.setFence(QRectF(0, 0, 800, 600)) self.qtGuide3.setFence(QRectF(0, 0, 800, 600)) def useGuide(self, guide, firstLetter, lastLetter): padding = guide.lengthAll() / float(lastLetter - firstLetter) for i, letter in enumerate(self.letterList[firstLetter:lastLetter]): letter.useGuide(guide, i * padding) def useGuideQt(self): if self.currGuide is not self.qtGuide1: self.useGuide(self.qtGuide1, 0, self.letterCount) self.currGuide = self.qtGuide1 def useGuideTt(self): if self.currGuide is not self.qtGuide2: split = int(self.letterCount * 5.0 / 7.0) self.useGuide(self.qtGuide2, 0, split) self.useGuide(self.qtGuide3, split, self.letterCount) self.currGuide = self.qtGuide2 def boundingRect(self): return QRectF(0, 0, 300, 320) def prepare(self): pass def switchToNextEffect(self): self.showCount += 1 if self.showCount == 1: self.effect = EffectSnake(self.letterList) elif self.showCount == 2: self.effect = EffectLine(self.letterList) self.effect.setPostEffect(PostRotateXYTwist(0.01, 0.0, 0.003, 0.0)) elif self.showCount == 3: self.effect = EffectRaindrops(self.letterList) self.effect.setPostEffect(PostRotateXYTwist(0.01, 0.005, 0.003, 0.003)) elif self.showCount == 4: self.effect = EffectScan(self.letterList) self.effect.normalMoveSpeed = 0 self.effect.setPostEffect(PostRotateXY(0.008, 0.0, 0.005, 0.0)) else: self.showCount = 0 self.effect = EffectWhirlWind(self.letterList) def animationStarted(self, id): if id == DemoItemAnimation.ANIM_IN: if self.doIntroTransitions: # Make all letters disappear. for letter in self.letterList: letter.setPos(1000, 0) self.switchToNextEffect() self.useGuideQt() self.scale = 1.0 # The first time we run, we have a rather large delay to # perform benchmark before the ticker shows. But now, since we # are showing, use a more appropriate value. self.currentAnimation.setStartDelay(1500) elif self.effect is not None: self.effect.useSheepDog = False self.tickTimer = QTime.currentTime() def swapModel(self): if self.currGuide is self.qtGuide2: self.useGuideQt() else: self.useGuideTt() def hoverEnterEvent(self, event): # Skip swap here to enhance ticker dragging. pass def hoverLeaveEvent(self, event): self.swapModel() def setTickerScale(self, s): self.scale = s self.qtGuide1.setScale(self.scale, self.scale) self.qtGuide2.setScale(self.scale, self.scale) self.qtGuide3.setScale(self.scale, self.scale) def mousePressEvent(self, event): self.mouseMoveLastPosition = event.scenePos(); if event.button() == Qt.LeftButton: self.setCursor(Qt.ClosedHandCursor) else: self.switchToNextEffect() def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton: self.setCursor(Qt.OpenHandCursor) def mouseMoveEvent(self, event): newPosition = event.scenePos() self.setPosUsingSheepDog(self.pos() + newPosition - self.mouseMoveLastPosition, QRectF(-260, -280, 1350, 1160)) self.mouseMoveLastPosition = newPosition def wheelEvent(self, event): if event.angleDelta().y() > 0: self.effect.moveSpeed -= 0.20 else: self.effect.moveSpeed += 0.20 if self.effect.moveSpeed < 0: self.effect.moveSpeed = 0.0 def pause(self, on): self.paused = on self.tickTimer = QTime.currentTime() def tick(self): if self.paused or not self.effect: return t = self.tickTimer.msecsTo(QTime.currentTime()) self.tickTimer = QTime.currentTime() self.effect.tick(t / 10.0) def paint(self, painter, opt, widget): if self.tickOnPaint: self.tick() PyQt-gpl-5.5.1/examples/qtdemo/letteritem.py0000644000076500000240000000673412613140041021117 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRect, Qt from PyQt5.QtGui import QColor, QImage, QLinearGradient, QPainter from colors import Colors from demoitem import DemoItem class LetterItem(DemoItem): def __init__(self, letter, parent=None): super(LetterItem, self).__init__(parent) self.letter = letter self.useSharedImage(__file__ + letter) def createImage(self, transform): scaledRect = transform.mapRect(QRect(0, 0, 25, 25)) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(0) painter = QPainter(image) painter.scale(transform.m11(), transform.m22()) painter.setRenderHints(QPainter.TextAntialiasing | QPainter.Antialiasing | QPainter.SmoothPixmapTransform) painter.setPen(Qt.NoPen) if Colors.useEightBitPalette: painter.setBrush(QColor(102, 175, 54)) painter.drawEllipse(0, 0, 25, 25) painter.setFont(Colors.tickerFont()) painter.setPen(QColor(255, 255, 255)) painter.drawText(10, 15, self.letter) else: brush = QLinearGradient(0, 0, 0, 25) brush.setSpread(QLinearGradient.PadSpread) brush.setColorAt(0.0, QColor(102, 175, 54, 200)) brush.setColorAt(1.0, QColor(102, 175, 54, 60)) painter.setBrush(brush) painter.drawEllipse(0, 0, 25, 25) painter.setFont(Colors.tickerFont()) painter.setPen(QColor(255, 255, 255, 255)) painter.drawText(10, 15, self.letter) return image PyQt-gpl-5.5.1/examples/qtdemo/mainwindow.py0000644000076500000240000003247112613140041021112 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFileInfo, QPoint, QRect, qRound, Qt, QTime, QTimer from PyQt5.QtGui import (QFontMetricsF, QImage, QPainter, QPixmap, QPolygon, QRegion) from PyQt5.QtWidgets import (QApplication, QFrame, QGraphicsScene, QGraphicsView, QGraphicsWidget, QMessageBox, QWidget) from colors import Colors from demoitem import DemoItem from demotextitem import DemoTextItem from imageitem import ImageItem from menumanager import MenuManager class MainWindow(QGraphicsView): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.imagesDir = QFileInfo(__file__).absolutePath() + '/images' self.updateTimer = QTimer(self) self.demoStartTime = QTime() self.fpsTime = QTime() self.background = QPixmap() self.scene = None self.mainSceneRoot = None self.frameTimeList = [] self.fpsHistory = [] self.currentFps = Colors.fps self.fpsMedian = -1 self.fpsLabel = None self.pausedLabel = None self.doneAdapt = False self.useTimer = False self.updateTimer.setSingleShot(True) self.companyLogo = None self.qtLogo = None self.setupWidget() self.setupScene() self.setupSceneItems() self.drawBackgroundToPixmap() def setupWidget(self): desktop = QApplication.desktop() screenRect = desktop.screenGeometry(desktop.primaryScreen()) windowRect = QRect(0, 0, 800, 600) if screenRect.width() < 800: windowRect.setWidth(screenRect.width()) if screenRect.height() < 600: windowRect.setHeight(screenRect.height()) windowRect.moveCenter(screenRect.center()) self.setGeometry(windowRect) self.setMinimumSize(80, 60) self.setWindowTitle("PyQt Examples") self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setFrameStyle(QFrame.NoFrame) self.setRenderingSystem() self.updateTimer.timeout.connect(self.tick) def setRenderingSystem(self): self.setCacheMode(QGraphicsView.CacheBackground) self.setViewport(QWidget()) def start(self): self.switchTimerOnOff(True) self.demoStartTime.restart() MenuManager.instance().itemSelected(MenuManager.ROOT, Colors.rootMenuName) Colors.debug("- starting demo") def enableMask(self, enable): if not enable or Colors.noWindowMask: self.clearMask() else: region = QPolygon([ # North side. 0, 0, 800, 0, # East side. # 800, 70, # 790, 90, # 790, 480, # 800, 500, 800, 600, # South side. 700, 600, 670, 590, 130, 590, 100, 600, 0, 600, # West side. # 0, 550, # 10, 530, # 10, 520, # 0, 520, 0, 0]) self.setMask(QRegion(region)) def setupScene(self): self.scene = QGraphicsScene(self) self.scene.setSceneRect(0, 0, 800, 600) self.setScene(self.scene) self.scene.setItemIndexMethod(QGraphicsScene.NoIndex) def switchTimerOnOff(self, on): ticker = MenuManager.instance().ticker if ticker and ticker.scene(): ticker.tickOnPaint = not on or Colors.noTimerUpdate if on and not Colors.noTimerUpdate: self.useTimer = True self.fpsTime = QTime.currentTime() self.updateTimer.start(int(1000 / Colors.fps)) update_mode = QGraphicsView.NoViewportUpdate else: self.useTimer = False self.updateTimer.stop() if Colors.noTicker: update_mode = QGraphicsView.MinimalViewportUpdate else: update_mode = QGraphicsView.SmartViewportUpdate self.setViewportUpdateMode(update_mode) def measureFps(self): # Calculate time difference. t = self.fpsTime.msecsTo(QTime.currentTime()) if t == 0: t = 0.01 self.currentFps = (1000.0 / t) self.fpsHistory.append(self.currentFps) self.fpsTime = QTime.currentTime() # Calculate median. size = len(self.fpsHistory) if size == 10: self.fpsHistory.sort() self.fpsMedian = self.fpsHistory[int(size / 2)] if self.fpsMedian == 0: self.fpsMedian = 0.01 self.fpsHistory = [] return True return False def forceFpsMedianCalculation(self): # Used for adaption in case things are so slow that no median has yet # been calculated. if self.fpsMedian != -1: return size = len(self.fpsHistory) if size == 0: self.fpsMedian = 0.01 return self.fpsHistory.sort() self.fpsMedian = self.fpsHistory[size // 2] if self.fpsMedian == 0: self.fpsMedian = 0.01 def tick(self): medianChanged = self.measureFps() self.checkAdapt() if medianChanged and self.fpsLabel and Colors.showFps: self.fpsLabel.setText("FPS: %d" % int(self.currentFps)) if MenuManager.instance().ticker: MenuManager.instance().ticker.tick() self.viewport().update() if self.useTimer: self.updateTimer.start(int(1000 / Colors.fps)) def setupSceneItems(self): if Colors.showFps: self.fpsLabel = DemoTextItem("FPS: --", Colors.buttonFont(), Qt.white, -1, None, DemoTextItem.DYNAMIC_TEXT) self.fpsLabel.setZValue(1000) self.fpsLabel.setPos(Colors.stageStartX, 600 - QFontMetricsF(Colors.buttonFont()).height() - 5) self.mainSceneRoot = QGraphicsWidget() self.scene.addItem(self.mainSceneRoot) self.companyLogo = ImageItem( QImage(self.imagesDir + '/trolltech-logo.png'), 1000, 1000, None, True, 0.5) self.qtLogo = ImageItem(QImage(self.imagesDir + '/qtlogo_small.png'), 1000, 1000, None, True, 0.5) self.companyLogo.setZValue(100) self.qtLogo.setZValue(100) self.pausedLabel = DemoTextItem("PAUSED", Colors.buttonFont(), Qt.white, -1, None) self.pausedLabel.setZValue(100) fm = QFontMetricsF(Colors.buttonFont()) self.pausedLabel.setPos(Colors.stageWidth - fm.width("PAUSED"), 590 - fm.height()) self.pausedLabel.setRecursiveVisible(False) def checkAdapt(self): if self.doneAdapt or Colors.noTimerUpdate or self.demoStartTime.elapsed() < 2000: return self.doneAdapt = True self.forceFpsMedianCalculation() Colors.benchmarkFps = self.fpsMedian Colors.debug("- benchmark: %d FPS" % int(Colors.benchmarkFps)) if Colors.noAdapt: return if self.fpsMedian < 30: ticker = MenuManager.instance().ticker if ticker and ticker.scene(): self.scene.removeItem(ticker) Colors.noTimerUpdate = True self.switchTimerOnOff(False) if self.fpsLabel: self.fpsLabel.setText("FPS: (%d)" % int(self.fpsMedian)) Colors.debug("- benchmark adaption: removed ticker (fps < 30)") if self.fpsMedian < 20: Colors.noAnimations = True Colors.debug("- benchmark adaption: animations switched off (fps < 20)") Colors.adapted = True def drawBackgroundToPixmap(self): r = self.scene.sceneRect() self.background = QPixmap(qRound(r.width()), qRound(r.height())) self.background.fill(Qt.black) painter = QPainter(self.background) bg = QImage(self.imagesDir + '/demobg.png') painter.drawImage(0, 0, bg) def drawBackground(self, painter, rect): painter.drawPixmap(QPoint(0, 0), self.background) def toggleFullscreen(self): if self.isFullScreen(): self.enableMask(True) self.showNormal() if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(False) else: self.enableMask(False) self.showFullScreen() def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: QApplication.quit() elif event.key() == Qt.Key_F1: s = "" s += "\nAdapt: " s += ["on", "off"][Colors.noAdapt] s += "\nAdaption occured: " s += ["no", "yes"][Colors.adapted] w = QWidget() s += "\nColor bit depth: %d" % w.depth() s += "\nWanted FPS: %d" % Colors.fps s += "\nBenchmarked FPS: "; if Colors.benchmarkFps != -1: s += "%d" % Colors.benchmarkFps else: s += "not calculated" s += "\nAnimations: "; s += ["on", "off"][Colors.noAnimations] s += "\nBlending: "; s += ["on", "off"][Colors.useEightBitPalette] s += "\nTicker: "; s += ["on", "off"][Colors.noTicker] s += "\nPixmaps: "; s += ["off", "on"][Colors.usePixmaps] s += "\nRescale images on resize: "; s += ["on", "off"][Colors.noRescale] s += "\nTimer based updates: "; s += ["on", "off"][Colors.noTimerUpdate] s += "\nSeparate loop: "; s += ["no", "yes"][Colors.useLoop] s += "\nScreen sync: "; s += ["yes", "no"][Colors.noScreenSync] QMessageBox.information(None, "Current configuration", s) super(MainWindow, self).keyPressEvent(event) def focusInEvent(self, event): if not Colors.pause: return if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(False) code = MenuManager.instance().currentMenuCode if code in (MenuManager.ROOT, MenuManager.MENU1): self.switchTimerOnOff(True) self.pausedLabel.setRecursiveVisible(False) def focusOutEvent(self, event): if not Colors.pause: return if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(True) code = MenuManager.instance().currentMenuCode if code in (MenuManager.ROOT, MenuManager.MENU1): self.switchTimerOnOff(False) self.pausedLabel.setRecursiveVisible(True) def resizeEvent(self, event): self.resetTransform() self.scale(event.size().width() / 800.0, event.size().height() / 600.0) super(MainWindow, self).resizeEvent(event) DemoItem.setTransform(self.transform()) if self.companyLogo: r = self.scene.sceneRect() ttb = self.companyLogo.boundingRect() self.companyLogo.setPos(int((r.width() - ttb.width()) / 2), 595 - ttb.height()) qtb = self.qtLogo.boundingRect() self.qtLogo.setPos(802 - qtb.width(), 0) # Changing size will almost always hurt FPS during the change so ignore # it. self.fpsHistory = [] PyQt-gpl-5.5.1/examples/qtdemo/menucontent.py0000644000076500000240000001164512613140041021275 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QFileInfo, QRectF, QTextStream from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from demotextitem import DemoTextItem from headingitem import HeadingItem class MenuContentItem(DemoItem): def __init__(self, el, parent=None): super(MenuContentItem, self).__init__(parent) self.name = el.getAttribute('name') self.heading = None self.description1 = None self.description2 = None readme_dir = QFileInfo(__file__).dir() readme_dir.cdUp() readme_dir.cd(el.getAttribute('dirname')) self.readmePath = readme_dir.absoluteFilePath('README') self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared= True def animationStopped(self, id): if self.name == Colors.rootMenuName: # Optimization hack. return if id == DemoItemAnimation.ANIM_OUT: # Free up some memory self.heading = None self.description1 = None self.description2 = None self._prepared = False def loadDescription(self, startPara, nrPara): readme = QFile(self.readmePath) if not readme.open(QFile.ReadOnly): Colors.debug("- MenuContentItem.loadDescription: Could not load:", self.readmePath) return "" in_str = QTextStream(readme) # Skip a certain number of paragraphs. while startPara: if not in_str.readLine(): startPara -= 1 # Read in the number of wanted paragraphs. result = '' line = in_str.readLine() while True: result += line + " " line = in_str.readLine() if not line: nrPara -= 1 line = "

      " + in_str.readLine() if nrPara == 0 or in_str.atEnd(): break return Colors.contentColor + result def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) para1 = self.loadDescription(0, 1) if not para1: para1 = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." bgcolor = Colors.sceneBg1.darker(200) bgcolor.setAlpha(100) self.description1 = DemoTextItem(para1, Colors.contentFont(), Colors.heading, 500, self, DemoTextItem.STATIC_TEXT) self.description2 = DemoTextItem(self.loadDescription(1, 2), Colors.contentFont(), Colors.heading, 250, self, DemoTextItem.STATIC_TEXT) # Place the items on screen. self.heading.setPos(0, 3) self.description1.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.description2.setPos(0, self.description1.pos().y() + self.description1.boundingRect().height() + 15) def boundingRect(self): return QRectF(0, 0, 500, 350) PyQt-gpl-5.5.1/examples/qtdemo/menumanager.py0000644000076500000240000011025612613140041021233 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import sys from xml.dom.minidom import parseString from PyQt5.QtCore import (QByteArray, QDir, QEasingCurve, QFile, QFileInfo, QLibraryInfo, QObject, QPointF, QProcess, QProcessEnvironment, QStandardPaths, Qt, QT_VERSION, QT_VERSION_STR, QTextStream, QUrl) from PyQt5.QtWidgets import QApplication, QMessageBox from colors import Colors from demoitemanimation import DemoItemAnimation from examplecontent import ExampleContent from itemcircleanimation import ItemCircleAnimation from menucontent import MenuContentItem from score import Score from textbutton import TextButton class MenuManager(QObject): ROOT, MENU1, MENU2, LAUNCH, DOCUMENTATION, QUIT, FULLSCREEN, UP, DOWN, \ BACK, LAUNCH_QML = range(11) pInstance = None def __init__(self): super(MenuManager, self).__init__() self.contentsDoc = None self.assistantProcess = QProcess() self.helpRootUrl = '' self.docDir = QDir() self.imgDir = QDir() self.info = {} self.window = None self.ticker = None self.tickerInAnim = None self.upButton = None self.downButton = None self.score = Score() self.currentMenu = "[no menu visible]" self.currentCategory = "[no category visible]" self.currentMenuButtons = "[no menu buttons visible]" self.currentInfo = "[no info visible]" self.currentMenuCode = -1 self.readXmlDocument() @classmethod def instance(cls): if cls.pInstance is None: cls.pInstance = cls() return cls.pInstance def getResource(self, name): return QByteArray() def readXmlDocument(self): root = QFileInfo(__file__).absolutePath() xml_file = QFile(root + '/examples.xml') xml_file.open(QFile.ReadOnly | QFile.Text) contents = xml_file.readAll().data() xml_file.close() self.contentsDoc = parseString(contents) def itemSelected(self, userCode, menuName): if userCode == MenuManager.LAUNCH: self.launchExample(self.currentInfo) elif userCode == MenuManager.LAUNCH_QML: self.launchQml(self.currentInfo) elif userCode == MenuManager.DOCUMENTATION: self.showDocInAssistant(self.currentInfo) elif userCode == MenuManager.QUIT: QApplication.quit() elif userCode == MenuManager.FULLSCREEN: self.window.toggleFullscreen() elif userCode == MenuManager.ROOT: # Out. self.score.queueMovie(self.currentMenu + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentMenuButtons + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentInfo + ' -out') self.score.queueMovie(self.currentInfo + ' -buttons -out', Score.NEW_ANIMATION_ONLY) self.score.queueMovie('back -out', Score.ONLY_IF_VISIBLE) # Book-keeping. self.currentMenuCode = MenuManager.ROOT self.currentMenu = menuName + ' -menu1' self.currentMenuButtons = menuName + ' -buttons' self.currentInfo = menuName + ' -info' # In. self.score.queueMovie('upndown -shake') self.score.queueMovie(self.currentMenu, Score.FROM_START, Score.UNLOCK_ITEMS) self.score.queueMovie(self.currentMenuButtons, Score.FROM_START, Score.UNLOCK_ITEMS) self.score.queueMovie(self.currentInfo) if not Colors.noTicker: self.ticker.doIntroTransitions = True self.tickerInAnim.setStartDelay(2000) self.ticker.useGuideQt() self.score.queueMovie('ticker', Score.NEW_ANIMATION_ONLY) elif userCode == MenuManager.MENU1: # Out. self.score.queueMovie(self.currentMenu + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentMenuButtons + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentInfo + ' -out') # Book-keeping. self.currentMenuCode = MenuManager.MENU1 self.currentCategory = menuName self.currentMenu = menuName + ' -menu1' self.currentInfo = menuName + ' -info' # In. self.score.queueMovie('upndown -shake') self.score.queueMovie('back -in') self.score.queueMovie(self.currentMenu, Score.FROM_START, Score.UNLOCK_ITEMS) self.score.queueMovie(self.currentInfo) if not Colors.noTicker: self.ticker.useGuideTt() elif userCode == MenuManager.MENU2: # Out. self.score.queueMovie(self.currentInfo + ' -out', Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons -out', Score.NEW_ANIMATION_ONLY) # Book-keeping. self.currentMenuCode = MenuManager.MENU2 self.currentInfo = menuName # In/shake. self.score.queueMovie('upndown -shake') self.score.queueMovie('back -shake') self.score.queueMovie(self.currentMenu + ' -shake') self.score.queueMovie(self.currentInfo, Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons', Score.NEW_ANIMATION_ONLY) if not Colors.noTicker: self.score.queueMovie('ticker -out', Score.NEW_ANIMATION_ONLY) elif userCode == MenuManager.UP: backMenu = self.info[self.currentMenu]['back'] if backMenu: self.score.queueMovie(self.currentMenu + ' -top_out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(backMenu + ' -bottom_in', Score.FROM_START, Score.UNLOCK_ITEMS) self.currentMenu = backMenu elif userCode == MenuManager.DOWN: moreMenu = self.info[self.currentMenu]['more'] if moreMenu: self.score.queueMovie(self.currentMenu + ' -bottom_out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(moreMenu + ' -top_in', Score.FROM_START, Score.UNLOCK_ITEMS) self.currentMenu = moreMenu elif userCode == MenuManager.BACK: if self.currentMenuCode == MenuManager.MENU2: # Out. self.score.queueMovie(self.currentInfo + ' -out', Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons -out', Score.NEW_ANIMATION_ONLY) # Book-keeping. self.currentMenuCode = MenuManager.MENU1 self.currentMenuButtons = self.currentCategory + ' -buttons' self.currentInfo = self.currentCategory + ' -info' # In/shake. self.score.queueMovie('upndown -shake') self.score.queueMovie(self.currentMenu + ' -shake') self.score.queueMovie(self.currentInfo, Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons', Score.NEW_ANIMATION_ONLY) if not Colors.noTicker: self.ticker.doIntroTransitions = False self.tickerInAnim.setStartDelay(500) self.score.queueMovie('ticker', Score.NEW_ANIMATION_ONLY) elif self.currentMenuCode != MenuManager.ROOT: self.itemSelected(MenuManager.ROOT, Colors.rootMenuName) # Update back and more buttons. if self.info.setdefault(self.currentMenu, {}).get('back'): back_state = TextButton.OFF else: back_state = TextButton.DISABLED if self.info[self.currentMenu].get('more'): more_state = TextButton.OFF else: more_state = TextButton.DISABLED self.upButton.setState(back_state) self.downButton.setState(more_state) if self.score.hasQueuedMovies(): self.score.playQue() # Playing new movies might include loading etc., so ignore the FPS # at this point. self.window.fpsHistory = [] def showDocInAssistant(self, name): url = self.resolveDocUrl(name) Colors.debug("Sending URL to Assistant:", url) # Start assistant if it's not already running. if self.assistantProcess.state() != QProcess.Running: app = QLibraryInfo.location(QLibraryInfo.BinariesPath) + QDir.separator() if sys.platform == 'darwin': app += 'Assistant.app/Contents/MacOS/Assistant' else: app += 'assistant' args = ['-enableRemoteControl'] self.assistantProcess.start(app, args) if not self.assistantProcess.waitForStarted(): QMessageBox.critical(None, "PyQt Demo", "Could not start %s." % app) return # Send command through remote control even if the process was just # started to activate assistant and bring it to the front. cmd_str = QTextStream(self.assistantProcess) cmd_str << 'SetSource ' << url << '\n' def launchExample(self, name): executable = self.resolveExeFile(name) process = QProcess(self) process.error.connect(self.launchError) if sys.platform == 'win32': # Make sure it finds the DLLs on Windows. env = QProcessEnvironment.systemEnvironment() env.insert('PATH', QLibraryInfo.location(QLibraryInfo.BinariesPath) + ';' + env.value('PATH')) process.setProcessEnvironment(env) if self.info[name]['changedirectory'] != 'false': workingDirectory = self.resolveDataDir(name) process.setWorkingDirectory(workingDirectory) Colors.debug("Setting working directory:", workingDirectory) Colors.debug("Launching:", executable) process.start(sys.executable, [executable]) def launchQml(self, name): import_path = self.resolveDataDir(name) qml = self.resolveQmlFile(name) process = QProcess(self) process.error.connect(self.launchError) env = QProcessEnvironment.systemEnvironment() env.insert('QML2_IMPORT_PATH', import_path) process.setProcessEnvironment(env) executable = QLibraryInfo.location(QLibraryInfo.BinariesPath) + '/qmlscene' Colors.debug("Launching:", executable) process.start(executable, [qml]) def launchError(self, error): if error != QProcess.Crashed: QMessageBox.critical(None, "Failed to launch the example", "Could not launch the example. Ensure that it has been " "built.", QMessageBox.Cancel) def init(self, window): self.window = window # Create div. self.createTicker() self.createUpnDownButtons() self.createBackButton() # Create first level menu. rootElement = self.contentsDoc.documentElement self.createRootMenu(rootElement) # Create second level menus. level2Menu = self._first_element(rootElement) while level2Menu is not None: self.createSubMenu(level2Menu) # Create leaf menu and example info. example = self._first_element(level2Menu) while example is not None: self.readInfoAboutExample(example) self.createLeafMenu(example) example = self._next_element(example) level2Menu = self._next_element(level2Menu) @classmethod def _first_element(cls, node): return cls._skip_nonelements(node.firstChild) @classmethod def _next_element(cls, node): return cls._skip_nonelements(node.nextSibling) @staticmethod def _skip_nonelements(node): while node is not None and node.nodeType != node.ELEMENT_NODE: node = node.nextSibling return node def readInfoAboutExample(self, example): name = example.getAttribute('name') if name in self.info: Colors.debug("__WARNING: MenuManager.readInfoAboutExample: " "Demo/example with name", name, "appears twice in " "the xml-file!__") self.info.setdefault(name, {})['filename'] = example.getAttribute('filename') self.info[name]['dirname'] = example.parentNode.getAttribute('dirname') self.info[name]['changedirectory'] = example.getAttribute('changedirectory') self.info[name]['image'] = example.getAttribute('image') self.info[name]['qml'] = example.getAttribute('qml') def resolveDir(self, name): dirName = self.info[name]['dirname'] fileName = self.info[name]['filename'].split('/') dir = QFileInfo(__file__).dir() # To the 'examples' directory. dir.cdUp() dir.cd(dirName) if len(fileName) > 1: dir.cd('/'.join(fileName[:-1])) # This may legitimately fail if the example is just a simple .py file. dir.cd(fileName[-1]) return dir def resolveDataDir(self, name): return self.resolveDir(name).absolutePath() def resolveExeFile(self, name): dir = self.resolveDir(name) fileName = self.info[name]['filename'].split('/')[-1] pyFile = QFile(dir.path() + '/' + fileName + '.py') if pyFile.exists(): return pyFile.fileName() pywFile = QFile(dir.path() + '/' + fileName + '.pyw') if pywFile.exists(): return pywFile.fileName() Colors.debug("- WARNING: Could not resolve executable:", dir.path(), fileName) return '__executable not found__' def resolveQmlFile(self, name): dir = self.resolveDir(name) fileName = self.info[name]['filename'].split('/')[-1] qmlFile = QFile(dir.path() + '/' + fileName + '.qml') if qmlFile.exists(): return qmlFile.fileName() Colors.debug("- WARNING: Could not resolve QML file:", dir.path(), fileName) return '__QML not found__' def resolveDocUrl(self, name): dirName = self.info[name]['dirname'] fileName = self.info[name]['filename'] return self.helpRootUrl + dirName.replace('/', '-') + '-' + fileName + '.html' def resolveImageUrl(self, name): return self.helpRootUrl + 'images/' + name def getHtml(self, name): return self.getResource(self.resolveDocUrl(name)) def getImage(self, name): imageName = self.info[name]['image'] fileName = self.info[name]['filename'] if self.info[name]['qml'] == 'true': fileName = 'qml-' + fileName.split('/')[-1] if not imageName: imageName = fileName + '-example.png' if self.getResource(self.resolveImageUrl(imageName)).isEmpty(): imageName = fileName + '.png' if self.getResource(self.resolveImageUrl(imageName)).isEmpty(): imageName = fileName + 'example.png' return self.getResource(self.resolveImageUrl(imageName)) def createRootMenu(self, el): name = el.getAttribute('name') self.createMenu(el, MenuManager.MENU1) self.createInfo( MenuContentItem(el, self.window.mainSceneRoot), name + ' -info') menuButtonsIn = self.score.insertMovie(name + ' -buttons') menuButtonsOut = self.score.insertMovie(name + ' -buttons -out') self.createLowLeftButton("Quit", MenuManager.QUIT, menuButtonsIn, menuButtonsOut, None) self.createLowRightButton("Toggle fullscreen", MenuManager.FULLSCREEN, menuButtonsIn, menuButtonsOut, None) def createSubMenu(self, el): name = el.getAttribute('name') self.createMenu(el, MenuManager.MENU2) self.createInfo( MenuContentItem(el, self.window.mainSceneRoot), name + ' -info') def createLeafMenu(self, el): name = el.getAttribute('name') self.createInfo(ExampleContent(name, self.window.mainSceneRoot), name) infoButtonsIn = self.score.insertMovie(name + ' -buttons') infoButtonsOut = self.score.insertMovie(name + ' -buttons -out') self.createLowRightLeafButton("Documentation", 600, MenuManager.DOCUMENTATION, infoButtonsIn, infoButtonsOut, None) if el.getAttribute('executable') != 'false': self.createLowRightLeafButton("Launch", 405, MenuManager.LAUNCH, infoButtonsIn, infoButtonsOut, None) elif el.getAttribute('qml') == 'true': self.createLowRightLeafButton("Display", 405, MenuManager.LAUNCH_QML, infoButtonsIn, infoButtonsOut, None) def createMenu(self, category, type): sw = self.window.scene.sceneRect().width() xOffset = 15 yOffset = 10 maxExamples = Colors.menuCount menuIndex = 1 name = category.getAttribute('name') currentNode = self._first_element(category) currentMenu = '%s -menu%d' % (name, menuIndex) while currentNode is not None: movieIn = self.score.insertMovie(currentMenu) movieOut = self.score.insertMovie(currentMenu + ' -out') movieNextTopOut = self.score.insertMovie(currentMenu + ' -top_out') movieNextBottomOut = self.score.insertMovie(currentMenu + ' -bottom_out') movieNextTopIn = self.score.insertMovie(currentMenu + ' -top_in') movieNextBottomIn = self.score.insertMovie(currentMenu + ' -bottom_in') movieShake = self.score.insertMovie(currentMenu + ' -shake') i = 0 while currentNode is not None and i < maxExamples: # Create a normal menu button. label = currentNode.getAttribute('name') item = TextButton(label, TextButton.LEFT, type, self.window.mainSceneRoot) item.setRecursiveVisible(False) item.setZValue(10) ih = item.sceneBoundingRect().height() iw = item.sceneBoundingRect().width() ihp = ih + 3 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1000 + (i * 20)) anim.setStartValue(QPointF(xOffset, -ih)) anim.setKeyValueAt(0.20, QPointF(xOffset, -ih)) anim.setKeyValueAt(0.50, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (10 * float(i / 4.0)))) anim.setKeyValueAt(0.60, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.70, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (5 * float(i / 4.0)))) anim.setKeyValueAt(0.80, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.90, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (2 * float(i / 4.0)))) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(700 + (30 * i)) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.60, QPointF(xOffset, 600 - ih - ih)) anim.setKeyValueAt(0.65, QPointF(xOffset + 20, 600 - ih)) anim.setEndValue(QPointF(sw + iw, 600 - ih)) movieOut.append(anim) # Create shake-animation. anim = DemoItemAnimation(item) anim.setDuration(700) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.55, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i*2.0)) anim.setKeyValueAt(0.70, QPointF(xOffset - 10, (i * ihp) + yOffset + Colors.contentStartY - i*1.5)) anim.setKeyValueAt(0.80, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i*1.0)) anim.setKeyValueAt(0.90, QPointF(xOffset - 2, (i * ihp) + yOffset + Colors.contentStartY - i*0.5)) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieShake.append(anim) # Create next-menu top-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(200 + (30 * i)) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.70, QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(-iw, yOffset + Colors.contentStartY)) movieNextTopOut.append(anim) # Create next-menu bottom-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(200 + (30 * i)) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.70, QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) movieNextBottomOut.append(anim) # Create next-menu top-in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(700 - (30 * i)) anim.setStartValue(QPointF(-iw, yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.30, QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextTopIn.append(anim) # Create next-menu bottom-in-animation. reverse = maxExamples - i anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1000 - (30 * reverse)) anim.setStartValue(QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.30, QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextBottomIn.append(anim) i += 1 currentNode = self._next_element(currentNode) if currentNode is not None and i == maxExamples: # We need another menu, so register for 'more' and 'back' # buttons. menuIndex += 1 self.info.setdefault(currentMenu, {})['more'] = '%s -menu%d' % (name, menuIndex) currentMenu = '%s -menu%d' % (name, menuIndex) self.info.setdefault(currentMenu, {})['back'] = '%s -menu%d' % (name, menuIndex - 1) def createLowLeftButton(self, label, type, movieIn, movieOut, movieShake, menuString=""): button = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) if menuString: button.setMenuString(menuString) button.setRecursiveVisible(False) button.setZValue(10) iw = button.sceneBoundingRect().width() xOffset = 15 # Create in-animation. buttonIn = DemoItemAnimation(button, DemoItemAnimation.ANIM_IN) buttonIn.setDuration(1800) buttonIn.setStartValue(QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setKeyValueAt(0.5, QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setKeyValueAt(0.7, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setEndValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(buttonIn) # Create out-animation. buttonOut = DemoItemAnimation(button, DemoItemAnimation.ANIM_OUT) buttonOut.setHideOnFinished(True) buttonOut.setDuration(400) buttonOut.setStartValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) buttonOut.setEndValue(QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(buttonOut) if movieShake is not None: shakeAnim = DemoItemAnimation(button, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(buttonIn.endValue()) shakeAnim.setKeyValueAt(0.60, buttonIn.endValue()) shakeAnim.setKeyValueAt(0.70, buttonIn.endValue() + QPointF(-3, 0)) shakeAnim.setKeyValueAt(0.80, buttonIn.endValue() + QPointF(2, 0)) shakeAnim.setKeyValueAt(0.90, buttonIn.endValue() + QPointF(-1, 0)) shakeAnim.setEndValue(buttonIn.endValue()) movieShake.append(shakeAnim) def createLowRightButton(self, label, type, movieIn, movieOut, movieShake): item = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) item.setRecursiveVisible(False) item.setZValue(10) sw = self.window.scene.sceneRect().width() xOffset = 70 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1800) anim.setStartValue(QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.5, QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.7, QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 35)) anim.setEndValue(QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(400) anim.setStartValue(QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 26)) anim.setEndValue(QPointF(sw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(anim) def createLowRightLeafButton(self, label, xOffset, type, movieIn, movieOut, movieShake): item = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) item.setRecursiveVisible(False) item.setZValue(10) sw = self.window.scene.sceneRect().width() sh = self.window.scene.sceneRect().height() # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1050) anim.setStartValue(QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.10, QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.30, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.35, QPointF(xOffset + 30, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.40, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.45, QPointF(xOffset + 5, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.50, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setEndValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(300) anim.setStartValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) anim.setEndValue(QPointF(xOffset, sh)) movieOut.append(anim) def createInfo(self, item, name): movie_in = self.score.insertMovie(name) movie_out = self.score.insertMovie(name + ' -out') item.setZValue(8) item.setRecursiveVisible(False) xOffset = 230.0 infoIn = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) infoIn.setDuration(650) infoIn.setStartValue(QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY)) infoIn.setKeyValueAt(0.60, QPointF(xOffset, Colors.contentStartY)) infoIn.setKeyValueAt(0.70, QPointF(xOffset + 20, Colors.contentStartY)) infoIn.setKeyValueAt(0.80, QPointF(xOffset, Colors.contentStartY)) infoIn.setKeyValueAt(0.90, QPointF(xOffset + 7, Colors.contentStartY)) infoIn.setEndValue(QPointF(xOffset, Colors.contentStartY)) movie_in.append(infoIn) infoOut = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) infoOut.setCurveShape(QEasingCurve.InQuad) infoOut.setDuration(300) infoOut.setHideOnFinished(True) infoOut.setStartValue(QPointF(xOffset, Colors.contentStartY)) infoOut.setEndValue(QPointF(-600, Colors.contentStartY)) movie_out.append(infoOut) def createTicker(self): if Colors.noTicker: return movie_in = self.score.insertMovie('ticker') movie_out = self.score.insertMovie('ticker -out') movie_activate = self.score.insertMovie('ticker -activate') movie_deactivate = self.score.insertMovie('ticker -deactivate') self.ticker = ItemCircleAnimation() self.ticker.setZValue(50) self.ticker.hide() # Move ticker in. qtendpos = 485 qtPosY = 120 self.tickerInAnim = DemoItemAnimation(self.ticker, DemoItemAnimation.ANIM_IN) self.tickerInAnim.setDuration(500) self.tickerInAnim.setStartValue(QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.60, QPointF(qtendpos, Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.70, QPointF(qtendpos + 30, Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.80, QPointF(qtendpos, Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.90, QPointF(qtendpos + 5, Colors.contentStartY + qtPosY)) self.tickerInAnim.setEndValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) movie_in.append(self.tickerInAnim) # Move ticker out. qtOut = DemoItemAnimation(self.ticker, DemoItemAnimation.ANIM_OUT) qtOut.setHideOnFinished(True) qtOut.setDuration(500) qtOut.setStartValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtOut.setEndValue(QPointF(self.window.scene.sceneRect().width() + 700, Colors.contentStartY + qtPosY)) movie_out.append(qtOut) # Move ticker in on activate. qtActivate = DemoItemAnimation(self.ticker) qtActivate.setDuration(400) qtActivate.setStartValue(QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.60, QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.70, QPointF(qtendpos + 30, Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.80, QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.90, QPointF(qtendpos + 5, Colors.contentStartY + qtPosY)) qtActivate.setEndValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) movie_activate.append(qtActivate) # Move ticker out on deactivate. qtDeactivate = DemoItemAnimation(self.ticker) qtDeactivate.setHideOnFinished(True) qtDeactivate.setDuration(400) qtDeactivate.setStartValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtDeactivate.setEndValue(QPointF(qtendpos, 800)) movie_deactivate.append(qtDeactivate) def createUpnDownButtons(self): xOffset = 15.0 yOffset = 450.0 self.upButton = TextButton("", TextButton.LEFT, MenuManager.UP, self.window.mainSceneRoot, TextButton.UP) self.upButton.prepare() self.upButton.setPos(xOffset, yOffset) self.upButton.setState(TextButton.DISABLED) self.downButton = TextButton("", TextButton.LEFT, MenuManager.DOWN, self.window.mainSceneRoot, TextButton.DOWN) self.downButton.prepare() self.downButton.setPos(xOffset + 10 + self.downButton.sceneBoundingRect().width(), yOffset) movieShake = self.score.insertMovie('upndown -shake') shakeAnim = DemoItemAnimation(self.upButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(self.upButton.pos()) shakeAnim.setKeyValueAt(0.60, self.upButton.pos()) shakeAnim.setKeyValueAt(0.70, self.upButton.pos() + QPointF(-2, 0)) shakeAnim.setKeyValueAt(0.80, self.upButton.pos() + QPointF(1, 0)) shakeAnim.setKeyValueAt(0.90, self.upButton.pos() + QPointF(-1, 0)) shakeAnim.setEndValue(self.upButton.pos()) movieShake.append(shakeAnim) shakeAnim = DemoItemAnimation(self.downButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(self.downButton.pos()) shakeAnim.setKeyValueAt(0.60, self.downButton.pos()) shakeAnim.setKeyValueAt(0.70, self.downButton.pos() + QPointF(-5, 0)) shakeAnim.setKeyValueAt(0.80, self.downButton.pos() + QPointF(-3, 0)) shakeAnim.setKeyValueAt(0.90, self.downButton.pos() + QPointF(-1, 0)) shakeAnim.setEndValue(self.downButton.pos()) movieShake.append(shakeAnim) def createBackButton(self): backIn = self.score.insertMovie('back -in') backOut = self.score.insertMovie('back -out') backShake = self.score.insertMovie('back -shake') self.createLowLeftButton("Back", MenuManager.ROOT, backIn, backOut, backShake, Colors.rootMenuName) PyQt-gpl-5.5.1/examples/qtdemo/qtdemo.py0000755000076500000240000000613712613140041020232 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QEventLoop, QTime from PyQt5.QtWidgets import QApplication, QMessageBox from colors import Colors from mainwindow import MainWindow from menumanager import MenuManager def artisticSleep(sleepTime): time = QTime() time.restart() while time.elapsed() < sleepTime: QApplication.processEvents(QEventLoop.AllEvents, 50) if __name__ == '__main__': import sys app = QApplication(sys.argv) Colors.parseArgs(sys.argv) if sys.platform == 'win32': QMessageBox.information(None, "Documentation Warning", "If you are using the GPL version of PyQt from the binary " "installer then you will probably see warning messages about " "missing documentation. This is because the installer does " "not include a copy of the Qt documentation as it is so " "large.") mainWindow = MainWindow() MenuManager.instance().init(mainWindow) mainWindow.setFocus() if Colors.fullscreen: mainWindow.showFullScreen() else: mainWindow.enableMask(True) mainWindow.show() artisticSleep(500) mainWindow.start() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/qtdemo/scanitem.py0000644000076500000240000000612512613140041020536 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRect from PyQt5.QtGui import QColor, QImage, QPainter, QPen from colors import Colors from demoitem import DemoItem class ScanItem(DemoItem): ITEM_WIDTH = 16 ITEM_HEIGHT = 16 def __init__(self, parent=None): super(ScanItem, self).__init__(parent) self.useSharedImage(__file__) def createImage(self, transform): scaledRect = transform.mapRect(QRect(0, 0, ScanItem.ITEM_WIDTH, ScanItem.ITEM_HEIGHT)) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHint(QPainter.Antialiasing) if Colors.useEightBitPalette: painter.setPen(QPen(QColor(100, 100, 100), 2)) painter.setBrush(QColor(206, 246, 117)) painter.drawEllipse(1, 1, scaledRect.width() - 2, scaledRect.height() - 2) else: painter.setPen(QPen(QColor(0, 0, 0, 15), 1)) painter.setBrush(QColor(0, 0, 0, 15)) painter.drawEllipse(1, 1, scaledRect.width() - 2, scaledRect.height() - 2) return image PyQt-gpl-5.5.1/examples/qtdemo/score.py0000644000076500000240000000777212613140041020057 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from colors import Colors class Score(object): LOCK_ITEMS, UNLOCK_ITEMS, SKIP_LOCK = range(3) FROM_CURRENT, FROM_START, NEW_ANIMATION_ONLY, ONLY_IF_VISIBLE = range(4) def __init__(self): self._index = {} self._playlist = [] def hasQueuedMovies(self): return len(self._playlist) > 0 def prepare(self, movie, runMode, lockMode): if lockMode == Score.LOCK_ITEMS: for item in movie: if runMode != Score.ONLY_IF_VISIBLE or item.isVisible(): item.setEnabled(False) item.prepare() elif lockMode == Score.UNLOCK_ITEMS: for item in movie: if runMode != Score.ONLY_IF_VISIBLE or item.isVisible(): item.setEnabled(True) item.prepare() else: for item in movie: if runMode != Score.ONLY_IF_VISIBLE or item.isVisible(): item.prepare() def _play(self, movie, runMode): if runMode == Score.NEW_ANIMATION_ONLY: for item in movie: if item.notOwnerOfItem(): item.play(True) elif runMode == Score.ONLY_IF_VISIBLE: for item in movie: if item.isVisible(): item.play(runMode == Score.FROM_START) else: for item in movie: item.play(runMode == Score.FROM_START) def queueMovie(self, indexName, runMode=FROM_START, lockMode=SKIP_LOCK): try: movie = self._index[indexName] except KeyError: Colors.debug("Queuing movie:", indexName, "(does not exist)") return self.prepare(movie, runMode, lockMode) self._playlist.append((movie, runMode)) Colors.debug("Queuing movie:", indexName) def playQue(self): for movie, runMode in self._playlist: self._play(movie, runMode) self._playlist = [] Colors.debug("********* Playing que *********") def insertMovie(self, indexName): movie = [] self._index[indexName] = movie return movie PyQt-gpl-5.5.1/examples/qtdemo/textbutton.py0000644000076500000240000003155712613140041021162 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPointF, QRect, QRectF, QSize, Qt from PyQt5.QtGui import (QColor, QImage, QLinearGradient, QPainter, QPainterPath, QPen) from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from demotextitem import DemoTextItem from scanitem import ScanItem class ButtonBackground(DemoItem): def __init__(self, type, highlighted, pressed, logicalSize, parent): super(ButtonBackground, self).__init__(parent) self.type = type self.highlighted = highlighted self.pressed = pressed self.logicalSize = logicalSize self.useSharedImage('%s%d%d%d' % (__file__, type, highlighted, pressed)) def createImage(self, transform): if self.type in (TextButton.SIDEBAR, TextButton.PANEL): return self.createRoundButtonBackground(transform) else: return self.createArrowBackground(transform) def createRoundButtonBackground(self, transform): scaledRect = transform.mapRect(QRect(0, 0, self.logicalSize.width(), self.logicalSize.height())) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHint(QPainter.SmoothPixmapTransform) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.NoPen) if Colors.useEightBitPalette: painter.setPen(QColor(120, 120, 120)) if self.pressed: painter.setBrush(QColor(60, 60, 60)) elif self.highlighted: painter.setBrush(QColor(100, 100, 100)) else: painter.setBrush(QColor(80, 80, 80)) else: outlinebrush = QLinearGradient(0, 0, 0, scaledRect.height()) brush = QLinearGradient(0, 0, 0, scaledRect.height()) brush.setSpread(QLinearGradient.PadSpread) highlight = QColor(255, 255, 255, 70) shadow = QColor(0, 0, 0, 70) sunken = QColor(220, 220, 220, 30) if self.type == TextButton.PANEL: normal1 = QColor(200, 170, 160, 50) normal2 = QColor(50, 10, 0, 50) else: normal1 = QColor(255, 255, 245, 60) normal2 = QColor(255, 255, 235, 10) if self.pressed: outlinebrush.setColorAt(0, shadow) outlinebrush.setColorAt(1, highlight) brush.setColorAt(0, sunken) painter.setPen(Qt.NoPen) else: outlinebrush.setColorAt(1, shadow) outlinebrush.setColorAt(0, highlight) brush.setColorAt(0, normal1) if not self.highlighted: brush.setColorAt(1, normal2) painter.setPen(QPen(outlinebrush, 1)) painter.setBrush(brush) if self.type == TextButton.PANEL: painter.drawRect(0, 0, scaledRect.width(), scaledRect.height()) else: painter.drawRoundedRect(0, 0, scaledRect.width(), scaledRect.height(), 10, 90, Qt.RelativeSize) return image def createArrowBackground(self, transform): scaledRect = transform.mapRect(QRect(0, 0, self.logicalSize.width(), self.logicalSize.height())) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHint(QPainter.SmoothPixmapTransform) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.NoPen) if Colors.useEightBitPalette: painter.setPen(QColor(120, 120, 120)) if self.pressed: painter.setBrush(QColor(60, 60, 60)) elif self.highlighted: painter.setBrush(QColor(100, 100, 100)) else: painter.setBrush(QColor(80, 80, 80)) else: outlinebrush = QLinearGradient(0, 0, 0, scaledRect.height()) brush = QLinearGradient(0, 0, 0, scaledRect.height()) brush.setSpread(QLinearGradient.PadSpread) highlight = QColor(255, 255, 255, 70) shadow = QColor(0, 0, 0, 70) sunken = QColor(220, 220, 220, 30) normal1 = QColor(200, 170, 160, 50) normal2 = QColor(50, 10, 0, 50) if self.pressed: outlinebrush.setColorAt(0, shadow) outlinebrush.setColorAt(1, highlight) brush.setColorAt(0, sunken) painter.setPen(Qt.NoPen) else: outlinebrush.setColorAt(1, shadow) outlinebrush.setColorAt(0, highlight) brush.setColorAt(0, normal1) if not self.highlighted: brush.setColorAt(1, normal2) painter.setPen(QPen(outlinebrush, 1)) painter.setBrush(brush); painter.drawRect(0, 0, scaledRect.width(), scaledRect.height()) xOff = scaledRect.width() / 2 yOff = scaledRect.height() / 2 sizex = 3.0 * transform.m11() sizey = 1.5 * transform.m22() if self.type == TextButton.UP: sizey *= -1 path = QPainterPath() path.moveTo(xOff, yOff + (5 * sizey)) path.lineTo(xOff - (4 * sizex), yOff - (3 * sizey)) path.lineTo(xOff + (4 * sizex), yOff - (3 * sizey)) path.lineTo(xOff, yOff + (5 * sizey)) painter.drawPath(path) return image class TextButton(DemoItem): BUTTON_WIDTH = 180 BUTTON_HEIGHT = 19 LEFT, RIGHT = range(2) SIDEBAR, PANEL, UP, DOWN = range(4) ON, OFF, HIGHLIGHT, DISABLED = range(4) def __init__(self, text, align=LEFT, userCode=0, parent=None, type=SIDEBAR): super(TextButton, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.menuString = text self.buttonLabel = text self.alignment = align self.buttonType = type self.userCode = userCode self.scanAnim = None self.bgOn = None self.bgOff = None self.bgHighlight = None self.bgDisabled = None self.state = TextButton.OFF self.setAcceptHoverEvents(True) self.setCursor(Qt.PointingHandCursor) # Calculate the button size. if type in (TextButton.SIDEBAR, TextButton.PANEL): self.logicalSize = QSize(TextButton.BUTTON_WIDTH, TextButton.BUTTON_HEIGHT) else: self.logicalSize = QSize(int((TextButton.BUTTON_WIDTH / 2.0) - 5), int(TextButton.BUTTON_HEIGHT * 1.5)) self._prepared = False def setMenuString(self, menu): self.menuString = menu def prepare(self): if not self._prepared: self.setupHoverText() self.setupScanItem() self.setupButtonBg() self._prepared = True def boundingRect(self): return QRectF(0, 0, self.logicalSize.width(), self.logicalSize.height()) def setupHoverText(self): if not self.buttonLabel: return textItem = DemoTextItem(self.buttonLabel, Colors.buttonFont(), Colors.buttonText, -1, self) textItem.setZValue(self.zValue() + 2) textItem.setPos(16, 0) def setupScanItem(self): if Colors.useButtonBalls: scanItem = ScanItem(self) scanItem.setZValue(self.zValue() + 1) self.scanAnim = DemoItemAnimation(scanItem) x = 1.0 y = 1.5 stop = TextButton.BUTTON_WIDTH - scanItem.boundingRect().width() - x if self.alignment == TextButton.LEFT: self.scanAnim.setDuration(2500) self.scanAnim.setKeyValueAt(0.0, QPointF(x, y)) self.scanAnim.setKeyValueAt(0.5, QPointF(x, y)) self.scanAnim.setKeyValueAt(0.7, QPointF(stop, y)) self.scanAnim.setKeyValueAt(1.0, QPointF(x, y)) scanItem.setPos(QPointF(x, y)) else: self.scanAnim.setKeyValueAt(0.0, QPointF(stop, y)) self.scanAnim.setKeyValueAt(0.5, QPointF(x, y)) self.scanAnim.setKeyValueAt(1.0, QPointF(stop, y)) scanItem.setPos(QPointF(stop, y)) def setState(self, state): self.state = state self.bgOn.setRecursiveVisible(state == TextButton.ON) self.bgOff.setRecursiveVisible(state == TextButton.OFF) self.bgHighlight.setRecursiveVisible(state == TextButton.HIGHLIGHT) self.bgDisabled.setRecursiveVisible(state == TextButton.DISABLED) if state == TextButton.DISABLED: self.setCursor(Qt.ArrowCursor) else: self.setCursor(Qt.PointingHandCursor) def setupButtonBg(self): self.bgOn = ButtonBackground(self.buttonType, True, True, self.logicalSize, self) self.bgOff = ButtonBackground(self.buttonType, False, False, self.logicalSize, self) self.bgHighlight = ButtonBackground(self.buttonType, True, False, self.logicalSize, self) self.bgDisabled = ButtonBackground(self.buttonType, True, True, self.logicalSize, self) self.setState(TextButton.OFF) def hoverEnterEvent(self, event): if not self.isEnabled() or self.state == TextButton.DISABLED: return if self.state == TextButton.OFF: self.setState(TextButton.HIGHLIGHT) if Colors.noAnimations and Colors.useButtonBalls: # Wait a bit in the beginning to enhance the effect. We have # to do this here so that the adaption can be dynamic. self.scanAnim.setDuration(1000) self.scanAnim.setKeyValueAt(0.2, self.scanAnim.posAt(0)) if (self._menu_manager.window.fpsMedian > 10 or Colors.noAdapt or Colors.noTimerUpdate): if Colors.useButtonBalls: self.scanAnim.play(True, True) def hoverLeaveEvent(self, event): if self.state == TextButton.DISABLED: return self.setState(TextButton.OFF) if Colors.noAnimations and Colors.useButtonBalls: self.scanAnim.stop() def mousePressEvent(self, event): if self.state == TextButton.DISABLED: return if self.state == TextButton.HIGHLIGHT or self.state == TextButton.OFF: self.setState(TextButton.ON) def mouseReleaseEvent(self, event): if self.state == TextButton.ON: self.setState(TextButton.OFF) if self.isEnabled() and self.boundingRect().contains(event.pos()): self._menu_manager.itemSelected(self.userCode, self.menuString) def animationStarted(self, _): if self.state == TextButton.DISABLED: return self.setState(TextButton.OFF) PyQt-gpl-5.5.1/examples/quick/0000755000076500000240000000000012613140041016200 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/0000755000076500000240000000000012613140041020157 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/animation.py0000644000076500000240000000475712613140041022525 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 import os.path from PyQt5.QtCore import QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView # Access the shared module. sys.path.insert(1, os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'shared')) import shared_rc import animation_rc app = QGuiApplication(sys.argv) view = QQuickView() view.engine().quit.connect(app.quit) view.setSource(QUrl('qrc:///animation/animation.qml')) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/animation/animation.qml0000644000076500000240000000645312613140041022661 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../shared" as Examples Item { height: 480 width: 320 Examples.LauncherList { id: ll anchors.fill: parent Component.onCompleted: { addExample("ColorAnimation", "Interpolates between colors", Qt.resolvedUrl("basics/color-animation.qml")); addExample("PropertyAnimation", "Interpolates between numbers", Qt.resolvedUrl("basics/property-animation.qml")); addExample("Behaviors", "Animates procedural movement", Qt.resolvedUrl("behaviors/behavior-example.qml")); addExample("Wiggly Text", "Text that wiggles as you drag it", Qt.resolvedUrl("behaviors/wigglytext.qml")); addExample("Tv Tennis", "Paddles that follow a ball", Qt.resolvedUrl("behaviors/tvtennis.qml")); addExample("Easing Curves", "Compare available easing curves", Qt.resolvedUrl("easing/easing.qml")); addExample("States", "Simple states", Qt.resolvedUrl("states/states.qml")); addExample("Transitions", "Simple states with animated transitions", Qt.resolvedUrl("states/transitions.qml")); addExample("PathAnimation", "Animate along a path", Qt.resolvedUrl("pathanimation/pathanimation.qml")); addExample("PathInterpolator", "Interpolates along a path", Qt.resolvedUrl("pathinterpolator/pathinterpolator.qml")); } } } PyQt-gpl-5.5.1/examples/quick/animation/animation.qrc0000644000076500000240000000156712613140041022656 0ustar philstaff00000000000000 animation.qml basics/images/face-smile.png basics/images/moon.png basics/images/shadow.png basics/images/star.png basics/images/sun.png basics/color-animation.qml basics/property-animation.qml behaviors/behavior-example.qml behaviors/SideRect.qml behaviors/tvtennis.qml behaviors/wigglytext.qml easing/easing.qml pathanimation/pathanimation.qml pathinterpolator/pathinterpolator.qml states/qt-logo.png states/states.qml states/transitions.qml PyQt-gpl-5.5.1/examples/quick/animation/animation_rc.py0000644000076500000240000117640612613140041023213 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Mon Jul 22 18:46:29 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0d\x2b\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x73\x68\x61\x72\x65\x64\x22\x20\ \x61\x73\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x0a\x0a\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x34\x38\x30\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x0a\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x2e\ \x4c\x61\x75\x6e\x63\x68\x65\x72\x4c\x69\x73\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6c\x6c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\ \x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\ \x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\ \x6c\x65\x28\x22\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x22\x2c\x20\x22\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\ \x65\x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x63\x6f\x6c\x6f\x72\ \x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\ \x55\x72\x6c\x28\x22\x62\x61\x73\x69\x63\x73\x2f\x63\x6f\x6c\x6f\ \x72\x2d\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x71\x6d\x6c\x22\ \x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x50\x72\x6f\x70\ \x65\x72\x74\x79\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x22\x2c\x20\ \x22\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x65\x73\x20\x62\x65\ \x74\x77\x65\x65\x6e\x20\x6e\x75\x6d\x62\x65\x72\x73\x22\x2c\x20\ \x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\ \x62\x61\x73\x69\x63\x73\x2f\x70\x72\x6f\x70\x65\x72\x74\x79\x2d\ \x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x71\x6d\x6c\x22\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\ \x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x42\x65\x68\x61\x76\x69\ \x6f\x72\x73\x22\x2c\x20\x22\x41\x6e\x69\x6d\x61\x74\x65\x73\x20\ \x70\x72\x6f\x63\x65\x64\x75\x72\x61\x6c\x20\x6d\x6f\x76\x65\x6d\ \x65\x6e\x74\x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\ \x64\x55\x72\x6c\x28\x22\x62\x65\x68\x61\x76\x69\x6f\x72\x73\x2f\ \x62\x65\x68\x61\x76\x69\x6f\x72\x2d\x65\x78\x61\x6d\x70\x6c\x65\ \x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\ \x22\x57\x69\x67\x67\x6c\x79\x20\x54\x65\x78\x74\x22\x2c\x20\x22\ \x54\x65\x78\x74\x20\x74\x68\x61\x74\x20\x77\x69\x67\x67\x6c\x65\ \x73\x20\x61\x73\x20\x79\x6f\x75\x20\x64\x72\x61\x67\x20\x69\x74\ \x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\ \x6c\x28\x22\x62\x65\x68\x61\x76\x69\x6f\x72\x73\x2f\x77\x69\x67\ \x67\x6c\x79\x74\x65\x78\x74\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\ \x78\x61\x6d\x70\x6c\x65\x28\x22\x54\x76\x20\x54\x65\x6e\x6e\x69\ \x73\x22\x2c\x20\x22\x50\x61\x64\x64\x6c\x65\x73\x20\x74\x68\x61\ \x74\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x61\x20\x62\x61\x6c\x6c\x22\ \x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\ \x28\x22\x62\x65\x68\x61\x76\x69\x6f\x72\x73\x2f\x74\x76\x74\x65\ \x6e\x6e\x69\x73\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\ \x70\x6c\x65\x28\x22\x45\x61\x73\x69\x6e\x67\x20\x43\x75\x72\x76\ \x65\x73\x22\x2c\x20\x22\x43\x6f\x6d\x70\x61\x72\x65\x20\x61\x76\ \x61\x69\x6c\x61\x62\x6c\x65\x20\x65\x61\x73\x69\x6e\x67\x20\x63\ \x75\x72\x76\x65\x73\x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\ \x76\x65\x64\x55\x72\x6c\x28\x22\x65\x61\x73\x69\x6e\x67\x2f\x65\ \x61\x73\x69\x6e\x67\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\ \x6d\x70\x6c\x65\x28\x22\x53\x74\x61\x74\x65\x73\x22\x2c\x20\x22\ \x53\x69\x6d\x70\x6c\x65\x20\x73\x74\x61\x74\x65\x73\x22\x2c\x20\ \x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\ \x73\x74\x61\x74\x65\x73\x2f\x73\x74\x61\x74\x65\x73\x2e\x71\x6d\ \x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x54\x72\ \x61\x6e\x73\x69\x74\x69\x6f\x6e\x73\x22\x2c\x20\x22\x53\x69\x6d\ \x70\x6c\x65\x20\x73\x74\x61\x74\x65\x73\x20\x77\x69\x74\x68\x20\ \x61\x6e\x69\x6d\x61\x74\x65\x64\x20\x74\x72\x61\x6e\x73\x69\x74\ \x69\x6f\x6e\x73\x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\ \x65\x64\x55\x72\x6c\x28\x22\x73\x74\x61\x74\x65\x73\x2f\x74\x72\ \x61\x6e\x73\x69\x74\x69\x6f\x6e\x73\x2e\x71\x6d\x6c\x22\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\ \x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x50\x61\x74\x68\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x22\x2c\x20\x22\x41\x6e\x69\x6d\x61\ \x74\x65\x20\x61\x6c\x6f\x6e\x67\x20\x61\x20\x70\x61\x74\x68\x22\ \x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\ \x28\x22\x70\x61\x74\x68\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2f\ \x70\x61\x74\x68\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x71\x6d\ \x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x50\x61\ \x74\x68\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x22\x2c\ \x20\x22\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x65\x73\x20\x61\ \x6c\x6f\x6e\x67\x20\x61\x20\x70\x61\x74\x68\x22\x2c\x20\x51\x74\ \x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x70\x61\ \x74\x68\x69\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x2f\x70\ \x61\x74\x68\x69\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x2e\ \x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0e\x0c\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x77\x69\x6e\x64\x6f\x77\x0a\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x33\x32\x30\x0a\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x34\x38\x30\x0a\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\ \x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x76\x61\x72\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\ \x28\x22\x32\x64\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x63\x6c\x65\x61\x72\ \x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x77\x69\x64\x74\x68\ \x2c\x20\x68\x65\x69\x67\x68\x74\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x73\x74\ \x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x22\x62\x6c\x61\ \x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6e\x74\x65\x78\x74\x2e\x70\x61\x74\x68\x20\x3d\x20\x6d\ \x6f\x74\x69\x6f\x6e\x50\x61\x74\x68\x2e\x70\x61\x74\x68\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\ \x78\x74\x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x50\x61\x74\ \x68\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\x6f\x74\x69\ \x6f\x6e\x50\x61\x74\x68\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x61\x74\x68\x3a\x20\x50\x61\x74\x68\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x61\x72\x74\x58\x3a\ \x20\x35\x30\x3b\x20\x73\x74\x61\x72\x74\x59\x3a\x20\x35\x30\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x61\x74\ \x68\x43\x75\x62\x69\x63\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\x20\x77\x69\x6e\x64\ \x6f\x77\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x35\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x77\x69\x6e\x64\x6f\x77\x2e\x68\x65\x69\x67\x68\x74\x20\x2d\ \x20\x35\x30\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x31\x58\x3a\x20\ \x78\x3b\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x31\x59\x3a\x20\x35\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x6f\x6e\x74\x72\x6f\x6c\x32\x58\x3a\x20\x35\x30\x3b\x20\ \x63\x6f\x6e\x74\x72\x6f\x6c\x32\x59\x3a\x20\x79\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x20\x63\x61\x6e\x76\x61\x73\x2e\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\ \x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x6f\x6e\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\x6e\x69\x6e\ \x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x2d\x31\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x61\x75\x73\x65\x41\ \x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\ \x69\x6f\x6e\x3a\x20\x31\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x70\x72\ \x6f\x67\x72\x65\x73\x73\x41\x6e\x69\x6d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\x6e\x69\ \x6e\x67\x3a\x20\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x3a\x20\ \x30\x3b\x20\x74\x6f\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x75\x72\x61\x74\x69\x6f\ \x6e\x3a\x20\x32\x30\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\ \x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x49\x6e\x51\x75\ \x61\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x6f\x78\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x35\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\ \x68\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\ \x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x62\x69\x6e\x64\x20\ \x6f\x75\x72\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x74\ \x6f\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x74\x68\x65\x20\x70\x61\x74\ \x68\x20\x61\x73\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x20\x63\x68\ \x61\x6e\x67\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\ \x20\x6d\x6f\x74\x69\x6f\x6e\x50\x61\x74\x68\x2e\x78\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x79\x3a\x20\x6d\x6f\x74\x69\x6f\x6e\x50\ \x61\x74\x68\x2e\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x6f\ \x74\x61\x74\x69\x6f\x6e\x3a\x20\x6d\x6f\x74\x69\x6f\x6e\x50\x61\ \x74\x68\x2e\x61\x6e\x67\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3a\x20\x54\x72\x61\x6e\ \x73\x6c\x61\x74\x65\x20\x7b\x20\x78\x3a\x20\x2d\x62\x6f\x78\x2e\ \x77\x69\x64\x74\x68\x2f\x32\x3b\x20\x79\x3a\x20\x2d\x62\x6f\x78\ \x2e\x68\x65\x69\x67\x68\x74\x2f\x32\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x63\x65\x6e\x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\ \x74\x3a\x20\x22\x42\x6f\x78\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x10\x5b\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x77\x69\x6e\ \x64\x6f\x77\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x0a\ \x0a\x20\x20\x20\x20\x2f\x2f\x20\x4c\x65\x74\x27\x73\x20\x64\x72\ \x61\x77\x20\x74\x68\x65\x20\x73\x6b\x79\x2e\x2e\x2e\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\ \x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\ \x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x74\ \x6f\x70\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x67\x72\x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\ \x65\x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\ \x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\x30\x2e\x30\x3b\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x44\x65\x65\x70\x53\x6b\x79\x42\ \x6c\x75\x65\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\ \x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\x31\x2e\x30\x3b\ \x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\x67\x68\x74\x53\x6b\ \x79\x42\x6c\x75\x65\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x2f\x2f\ \x20\x2e\x2e\x2e\x61\x6e\x64\x20\x74\x68\x65\x20\x67\x72\x6f\x75\ \x6e\x64\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\ \x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\ \x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\ \x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\ \x6f\x6e\x3a\x20\x30\x2e\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x46\x6f\x72\x65\x73\x74\x47\x72\x65\x65\x6e\x22\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\ \x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\ \x69\x6f\x6e\x3a\x20\x31\x2e\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x44\x61\x72\x6b\x47\x72\x65\x65\x6e\x22\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x20\x73\x68\x61\x64\x6f\ \x77\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x6d\x69\x6c\x65\x79\ \x20\x66\x61\x63\x65\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\ \x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x79\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x69\ \x6e\x48\x65\x69\x67\x68\x74\x20\x2b\x20\x35\x38\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\x69\x6d\ \x61\x67\x65\x73\x2f\x73\x68\x61\x64\x6f\x77\x2e\x70\x6e\x67\x22\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\ \x20\x73\x63\x61\x6c\x65\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x64\x65\x70\x65\x6e\x64\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x79\ \x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\ \x20\x73\x6d\x69\x6c\x65\x79\x20\x66\x61\x63\x65\x2e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x63\x61\x6c\x65\x3a\x20\x73\x6d\x69\ \x6c\x65\x79\x2e\x79\x20\x2a\x20\x30\x2e\x35\x20\x2f\x20\x28\x73\ \x6d\x69\x6c\x65\x79\x2e\x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x20\ \x2d\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x61\x78\x48\x65\x69\x67\ \x68\x74\x29\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x49\ \x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x20\x73\x6d\x69\x6c\x65\x79\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6d\ \x61\x78\x48\x65\x69\x67\x68\x74\x3a\x20\x77\x69\x6e\x64\x6f\x77\ \x2e\x68\x65\x69\x67\x68\x74\x20\x2f\x20\x33\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\ \x20\x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x3a\x20\x32\x20\x2a\x20\ \x77\x69\x6e\x64\x6f\x77\x2e\x68\x65\x69\x67\x68\x74\x20\x2f\x20\ \x33\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x79\x3a\x20\x6d\x69\x6e\x48\x65\x69\x67\x68\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\ \x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x63\x65\x2d\x73\ \x6d\x69\x6c\x65\x2e\x70\x6e\x67\x22\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x41\x6e\x69\x6d\x61\x74\x65\x20\x74\x68\ \x65\x20\x79\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x2e\x20\x53\x65\ \x74\x74\x69\x6e\x67\x20\x6c\x6f\x6f\x70\x73\x20\x74\x6f\x20\x41\ \x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\ \x65\x20\x6d\x61\x6b\x65\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x2f\x2f\x20\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\ \x20\x72\x65\x70\x65\x61\x74\x20\x69\x6e\x64\x65\x66\x69\x6e\x69\ \x74\x65\x6c\x79\x2c\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\ \x69\x74\x20\x77\x6f\x75\x6c\x64\x20\x6f\x6e\x6c\x79\x20\x72\x75\ \x6e\x20\x6f\x6e\x63\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x53\x65\x71\x75\x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\ \x69\x6f\x6e\x20\x6f\x6e\x20\x79\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\ \x20\x4d\x6f\x76\x65\x20\x66\x72\x6f\x6d\x20\x6d\x69\x6e\x48\x65\ \x69\x67\x68\x74\x20\x74\x6f\x20\x6d\x61\x78\x48\x65\x69\x67\x68\ \x74\x20\x69\x6e\x20\x33\x30\x30\x6d\x73\x2c\x20\x75\x73\x69\x6e\ \x67\x20\x74\x68\x65\x20\x4f\x75\x74\x45\x78\x70\x6f\x20\x65\x61\ \x73\x69\x6e\x67\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\ \x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x69\x6e\x48\x65\x69\x67\ \x68\x74\x3b\x20\x74\x6f\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\ \x61\x78\x48\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x61\x73\x69\x6e\x67\x2e\ \x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x4f\x75\x74\ \x45\x78\x70\x6f\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\ \x33\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x54\x68\x65\x6e\x20\x6d\x6f\x76\x65\x20\x62\x61\x63\x6b\ \x20\x74\x6f\x20\x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x20\x69\x6e\ \x20\x31\x20\x73\x65\x63\x6f\x6e\x64\x2c\x20\x75\x73\x69\x6e\x67\ \x20\x74\x68\x65\x20\x4f\x75\x74\x42\x6f\x75\x6e\x63\x65\x20\x65\ \x61\x73\x69\x6e\x67\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\ \x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\ \x6d\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x61\x78\x48\x65\x69\ \x67\x68\x74\x3b\x20\x74\x6f\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\ \x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x61\x73\x69\x6e\x67\ \x2e\x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x4f\x75\ \x74\x42\x6f\x75\x6e\x63\x65\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\ \x6e\x3a\x20\x31\x30\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x6e\x20\x70\x61\x75\x73\x65\ \x20\x66\x6f\x72\x20\x35\x30\x30\x6d\x73\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x50\x61\x75\x73\x65\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x35\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\ \x5d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\x5d\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x51\x74\x51\x75\x69\x63\x6b\x2e\x50\x61\x72\x74\ \x69\x63\x6c\x65\x73\x20\x32\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\ \x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x77\x69\x6e\x64\x6f\x77\ \x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\x32\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x0a\x0a\x20\x20\ \x20\x20\x2f\x2f\x20\x4c\x65\x74\x27\x73\x20\x64\x72\x61\x77\x20\ \x74\x68\x65\x20\x73\x6b\x79\x2e\x2e\x2e\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\ \x74\x6f\x70\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x74\x6f\x70\x3b\ \x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\ \x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\ \x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\ \x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\ \x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\ \x73\x69\x74\x69\x6f\x6e\x3a\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\ \x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x6f\x6e\x20\x63\x6f\x6c\x6f\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\ \x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\ \x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\ \x6f\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\ \x6f\x6d\x3a\x20\x22\x44\x65\x65\x70\x53\x6b\x79\x42\x6c\x75\x65\ \x22\x3b\x20\x74\x6f\x3a\x20\x22\x23\x30\x45\x31\x35\x33\x33\x22\ \x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x22\x23\ \x30\x45\x31\x35\x33\x33\x22\x3b\x20\x74\x6f\x3a\x20\x22\x44\x65\ \x65\x70\x53\x6b\x79\x42\x6c\x75\x65\x22\x3b\x20\x64\x75\x72\x61\ \x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\ \x74\x53\x74\x6f\x70\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\ \x3a\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\x6e\x74\x69\x61\x6c\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x63\x6f\x6c\ \x6f\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\ \x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x22\x53\ \x6b\x79\x42\x6c\x75\x65\x22\x3b\x20\x74\x6f\x3a\x20\x22\x23\x34\ \x33\x37\x32\x38\x34\x22\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\ \x6f\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\ \x6f\x6d\x3a\x20\x22\x23\x34\x33\x37\x32\x38\x34\x22\x3b\x20\x74\ \x6f\x3a\x20\x22\x53\x6b\x79\x42\x6c\x75\x65\x22\x3b\x20\x64\x75\ \x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x2f\x2f\x20\x74\x68\x65\x20\x73\x75\x6e\x2c\x20\ \x6d\x6f\x6f\x6e\x2c\x20\x61\x6e\x64\x20\x73\x74\x61\x72\x73\x0a\ \x20\x20\x20\x20\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x77\x69\x64\x74\x68\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x32\x20\x2a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x72\x6f\x74\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x30\x3b\ \x20\x74\x6f\x3a\x20\x33\x36\x30\x3b\x20\x64\x75\x72\x61\x74\x69\ \x6f\x6e\x3a\x20\x31\x30\x30\x30\x30\x3b\x20\x6c\x6f\x6f\x70\x73\ \x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\ \x6e\x69\x74\x65\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\ \x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\ \x65\x73\x2f\x73\x75\x6e\x2e\x70\x6e\x67\x22\x3b\x20\x79\x3a\x20\ \x31\x30\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x72\x6f\x74\x61\x74\x69\x6f\x6e\x3a\x20\x2d\x33\x20\x2a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x6f\x74\x61\x74\x69\x6f\x6e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\ \x69\x6d\x61\x67\x65\x73\x2f\x6d\x6f\x6f\x6e\x2e\x70\x6e\x67\x22\ \x3b\x20\x79\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\ \x68\x74\x20\x2d\x20\x37\x34\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\ \x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x72\x6f\x74\x61\x74\x69\x6f\x6e\x3a\ \x20\x2d\x70\x61\x72\x65\x6e\x74\x2e\x72\x6f\x74\x61\x74\x69\x6f\ \x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x50\x61\x72\x74\x69\x63\x6c\x65\x53\x79\x73\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x70\x61\x72\x74\x69\x63\x6c\x65\x73\x79\x73\ \x74\x65\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x78\x3a\x20\x30\x3b\x20\x79\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x68\x65\x69\x67\x68\x74\x2f\x32\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x77\x69\x64\x74\x68\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\x74\x2f\ \x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\ \x61\x67\x65\x50\x61\x72\x74\x69\x63\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\ \x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x73\x74\ \x61\x72\x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x6f\x75\x70\x73\x3a\x20\ \x5b\x22\x73\x74\x61\x72\x22\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x23\x30\x30\x33\x33\x33\x33\x33\x33\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\ \x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x6f\x6e\x20\x6f\x70\x61\x63\x69\x74\x79\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\ \x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\ \x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x20\x66\x72\x6f\x6d\x3a\x20\x30\x3b\x20\x74\x6f\x3a\x20\x31\x3b\ \x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x31\x3b\ \x20\x74\x6f\x3a\x20\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x45\x6d\x69\x74\x74\x65\x72\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x67\ \x72\x6f\x75\x70\x3a\x20\x22\x73\x74\x61\x72\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x65\x6d\x69\x74\x52\x61\x74\x65\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x77\x69\x64\x74\x68\x20\x2f\x20\x35\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x69\ \x66\x65\x53\x70\x61\x6e\x3a\x20\x35\x30\x30\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x2f\x2f\x20\x2e\x2e\x2e\x61\x6e\x64\x20\x74\x68\x65\x20\x67\x72\ \x6f\x75\x6e\x64\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\ \x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\ \x6f\x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\ \x6d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\ \x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\ \x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x3a\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\x6e\ \x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\x6e\ \x20\x63\x6f\x6c\x6f\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x6f\ \x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\ \x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\ \x3a\x20\x22\x46\x6f\x72\x65\x73\x74\x47\x72\x65\x65\x6e\x22\x3b\ \x20\x74\x6f\x3a\x20\x22\x23\x30\x30\x31\x36\x30\x30\x22\x3b\x20\ \x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\x61\x74\ \x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x22\x23\x30\x30\ \x31\x36\x30\x30\x22\x3b\x20\x74\x6f\x3a\x20\x22\x46\x6f\x72\x65\ \x73\x74\x47\x72\x65\x65\x6e\x22\x3b\x20\x64\x75\x72\x61\x74\x69\ \x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\ \x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\ \x31\x2e\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x44\x61\x72\ \x6b\x47\x72\x65\x65\x6e\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x01\xa9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2c\x00\x00\x00\x06\x08\x04\x00\x00\x00\x12\xba\xb4\xda\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0d\xd6\x00\x00\x0d\xd6\x01\x90\x6f\x79\x9c\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x0a\x15\x02\x2e\x16\x28\ \xc5\x30\x58\x00\x00\x01\x2d\x49\x44\x41\x54\x28\xcf\x55\x92\xcd\ \x4a\x42\x01\x10\x85\xbf\x73\xed\x56\x22\xa5\x29\x45\x11\x85\x44\ \x50\xed\xb4\x1e\xa0\x75\xaf\xd1\x0b\xf4\x06\x81\xd0\xb6\xa7\x69\ \xd1\xb6\x4d\xcb\xca\x5d\x10\x11\x81\xf4\x03\x59\x61\xa5\xe6\x4d\ \xef\x69\x71\xaf\x8a\x33\x8b\xe1\x0c\x73\xce\x30\x87\x11\xc0\x0e\ \xb3\xc1\x4d\x0c\x00\xd5\x12\x45\xe7\xc9\x92\xd1\x92\x4b\x2c\x30\ \x47\x4e\x59\x42\x87\x0a\x80\x98\x3f\x47\x74\xd5\xf6\x37\x1f\x6a\ \xd2\x24\x76\x87\x16\xef\xf5\xcf\x84\x5f\x09\xd6\xe2\x33\x6a\x08\ \x76\xb8\x05\xaa\xeb\x1c\x78\x95\x2d\x36\x55\xa6\x08\x60\xc6\xa1\ \x11\xd6\x44\x3f\xc1\x7a\xe3\xd1\xf7\xba\xa3\xe1\xf3\xfa\x73\xa2\ \x28\x80\xbd\xec\xe0\x84\x23\x65\x9c\x0a\x28\x66\x60\x24\x27\x8a\ \x80\xd2\x6a\x84\x53\x65\x19\x6c\xc1\x94\x35\x5c\xa7\xc8\xa7\x85\ \xe3\x8b\x7e\x8d\x00\x60\xad\x4f\x83\x27\xff\x8e\xa8\x81\x43\x02\ \x2c\x13\xe3\x24\x6d\x26\x33\xb6\x6d\x65\x08\x93\xe5\x02\xe8\xf2\ \xc2\x53\x77\x90\xe2\xc4\x0a\xa8\xec\x6b\xd7\x8b\x2a\xb3\xe1\x65\ \xad\x30\x3d\xb4\x23\xbd\x62\x84\x3c\x69\x43\x8f\x67\xbf\xe8\x81\ \x06\xaf\x5c\xdd\x5c\x82\xd8\x1e\x5a\x71\xcd\x61\xd0\x8b\x6f\xd3\ \xf1\x4a\x81\x79\xe5\xc9\x39\xc4\xcc\x91\x27\x47\x96\x19\x85\x08\ \x6c\x22\x22\x3a\xb4\x69\xe9\x07\x39\xa2\x4d\x8b\xaf\x7a\x2b\xe1\ \x8e\xdf\xe0\x1f\x5d\xe3\x8b\x95\xa8\x58\x6d\x6b\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x09\x81\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x04\x00\x00\x00\x00\x60\xb9\x55\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\x5e\x1a\ \x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x07\x14\x0b\x14\ \x1b\xf7\x7c\xd9\x62\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xff\x87\ \x8f\xcc\xbf\x00\x00\x09\x05\x49\x44\x41\x54\x68\xde\xed\xd8\x69\ \xc8\xa5\xe7\x59\x07\xf0\xdf\xfd\x6c\x67\x7d\xcf\xbb\xce\x64\x99\ \x4c\xc8\x58\xeb\x92\x8a\x26\xa1\x62\x09\xb5\x35\xd4\x98\x82\xb4\ \x1f\x04\xad\x52\x42\x2c\xd1\x4a\x70\x0b\x22\x16\x63\xc4\x2f\x6d\ \x15\x2d\x82\x1f\x84\x8a\xb6\x4a\xd5\x62\x15\xa9\x21\x69\x49\x2d\ \xd5\x42\x48\x71\xa5\x1a\x13\x0d\x66\x71\x32\x33\xc9\xcc\x64\xde\ \xfd\xbc\x67\x79\x76\x3f\xcc\x31\x52\x9d\x49\xde\x89\x29\x7e\x99\ \xeb\xe1\x7c\x79\x0e\xf7\x7d\xfd\x9f\xeb\xfa\xdf\xcb\xff\xcf\xd5\ \xb8\x1a\x57\xe3\x6a\xfc\x3f\x47\x78\x3d\x83\xda\x8b\xe3\xc2\xd7\ \xbc\x6a\x5f\xdf\x64\xe1\x0a\x13\x13\xd5\xf1\xb9\xe4\x1f\x7b\xff\ \xb2\x74\x7a\xe9\xc2\xb0\x88\xd7\xf2\xb7\xee\xbe\x7f\x6f\x50\xa4\ \x65\x54\xa9\xb4\xda\xf0\xf5\x01\xd0\x12\xc4\xcf\x77\x3e\x79\xed\ \x8b\xef\x7a\xeb\x3b\x06\xb7\xae\x9e\xb8\xb1\x77\xd4\x48\x61\xe2\ \xe5\x49\xfd\xcc\xce\x93\x4f\x3c\xb6\xf2\xa5\x1f\x3b\x1f\xe5\x6a\ \x4d\x78\x63\x01\xb4\x84\x2a\x7e\x62\xf0\x89\xdb\x8e\xdf\x77\xe2\ \xae\x1b\x46\xb1\x54\x22\x15\x2f\x7e\xb5\x5c\xae\x71\x6e\x3e\x79\ \xf4\xa9\xdf\x7b\xe0\xf1\x30\x55\x1d\x16\x44\x38\x54\xfa\xe8\x4c\ \xf7\x57\xbf\xe3\xe8\x2f\xbf\xf9\xae\x61\xd4\x59\x0c\x2b\xb5\x12\ \x41\x2a\x96\x20\x68\x35\x52\x71\xfb\xf4\xe3\xcf\x7f\xf8\x57\xbe\ \x62\xa6\x0e\xed\x1b\x00\xa0\x25\xf9\xdc\xea\x43\x3f\xfb\x96\xfb\ \x97\x06\x7d\x8d\x58\x2b\xd2\xd5\x6a\x05\xd1\x82\x19\x17\x39\x19\ \xa4\x96\xac\xd9\x6f\xbe\xfc\xfb\x37\x7c\xf8\x07\xcf\x26\xc5\x6b\ \x33\xe2\x35\xfe\x6f\x43\x93\xfe\xfa\x8d\x27\x7f\xfb\x9b\xbf\xaf\ \x27\x12\xf4\x0c\xc4\x2a\x41\x25\xb7\x64\x66\xa0\x2f\x57\xa0\x55\ \x29\x25\xd6\xad\x9a\xf9\xfc\x33\xfb\xf7\xfd\xc6\x57\xba\xf9\x6b\ \xb5\x22\xbc\x7a\xfa\x2a\xfd\xb9\x6f\xdb\xfb\xd4\xcd\x6f\x69\x0d\ \x45\x36\x44\xd8\xd4\x88\x55\x22\x43\x24\x46\x52\x85\x42\xa2\x42\ \x2b\xd3\x15\xa9\xfd\xdd\xee\xf6\x8f\xff\xda\xe7\xb3\xf9\xab\x43\ \x08\xaf\xfe\xf5\x3f\xff\xad\x27\x3f\x7b\xeb\x89\xc2\x48\xaa\xa7\ \x2f\xb6\x6f\x86\x46\x2c\xd2\x11\x49\xa4\x56\x64\x0a\x41\xa3\x95\ \x4b\xa4\x12\x91\xb1\xbf\x9f\x4c\xef\xfd\xd8\xc3\xd9\x3c\x34\x97\ \xcf\x12\xbd\x4a\xef\xe3\x8f\x1f\x7b\xea\x0f\x6e\x3c\x91\x4b\x34\ \x2a\x41\xee\x82\x03\xb5\xb9\x46\xad\x54\x2a\xb4\x22\x07\xa6\x22\ \x8d\xda\x5c\xa1\x35\x71\xa0\x94\x79\xd3\x20\xfc\xce\x2f\xdd\x2e\ \x7d\x35\x22\x44\x97\x67\xfe\x53\xa3\x87\x3e\x3a\xb8\x25\x53\x98\ \xa3\xb6\x63\xcf\x4c\xad\x46\xad\x52\xa9\x14\xa8\xe4\xa6\x5a\x53\ \x07\x6a\x13\x63\xb5\xa9\x5a\xe3\x88\x63\xcb\xe1\xe3\x7f\x71\x4c\ \xdc\x5e\x71\x05\xc2\x41\xe7\x43\xf7\xf4\xde\x97\x2b\x25\x06\x5a\ \x95\x4a\xae\x56\x29\xd5\x0b\x00\x13\x53\x07\x2a\xb5\x03\x63\xff\ \xe1\x05\xbb\x22\x7b\x66\xc6\xe6\x6a\xac\xba\xee\x4d\x0f\x7f\x64\ \x77\x78\xf9\x4a\x47\x97\x2b\xff\x27\x8f\xfb\x85\x83\x50\x68\x44\ \x12\x99\x44\xb5\x48\x5b\xab\x95\xaf\x70\xbe\x23\x12\xab\x9d\x93\ \xab\x5c\xb0\x6b\x2c\xd3\x55\x0b\x5a\x91\x9e\x63\xef\x7b\xe0\x7b\ \xa5\xed\x15\x55\x20\xec\x75\x1f\xf9\xc9\xce\xb5\x73\x53\xa5\xc8\ \x1a\x22\xa5\x5c\xb9\x80\x51\x2b\x1c\x31\x72\x54\x6c\x66\x26\xb6\ \xaf\x51\x29\xcd\xcd\xbd\x24\x95\x69\x04\x73\xb5\xe5\x10\x1e\xd8\ \x1e\x5d\xae\x06\x97\x7e\x1d\xfd\xc9\xf5\xd9\xdd\x5b\x32\xb1\x33\ \x1a\x17\xd4\xb6\x35\x6a\x3d\x41\xd0\xc8\x94\x4e\xdb\x56\x88\x05\ \xb5\xa0\x52\xa8\x34\x4a\x95\x1d\x07\x62\xad\x97\x75\x55\x62\x37\ \xdd\xfa\xe0\xbb\x2e\x57\x83\xe8\x52\x0d\x28\xb3\x87\x7e\xa8\xb3\ \x9a\x2b\xc5\x2a\xcf\x38\x6b\x2a\x52\x6b\x95\x1a\x41\xaa\x12\x4b\ \x44\x9e\xb5\x6b\xc9\xc8\x4c\xa1\x52\x89\x4d\x54\x2a\x73\xbb\xb6\ \xcc\x6c\xab\x94\x22\xe1\xde\x69\xff\xd2\x4b\x3e\xb9\x54\x03\x76\ \xfa\xf5\x7b\x27\x22\x91\x58\x50\x39\x27\xb2\x64\xae\xaf\x2f\x51\ \xcb\x75\xc5\x98\x58\x36\x34\x93\xdb\x95\x08\xe6\x0b\xf6\x4f\xb5\ \x26\xe6\xd6\x25\x0a\x67\x65\x86\xdf\xfd\x47\xc7\x3f\x38\x56\x1d\ \xae\x05\xf1\x9f\x1d\xeb\xde\x96\x8b\x16\x4f\x58\x6c\xbc\xdb\x26\ \xa8\xf5\xac\x18\xe8\x8a\x24\x3a\x2a\x5b\xce\xc8\xd5\x82\x4c\xe1\ \x82\xb3\x76\x8d\xed\x1b\x3b\x30\x12\x9b\x3a\x63\xd0\x79\xfc\xdd\ \x4d\xd2\x1e\xa6\x05\x2d\xf1\x63\x6f\x5f\x8e\x57\x16\x15\x88\xb4\ \x22\x1d\x7d\xb1\x6a\xc1\xed\xd8\xc4\x81\x03\x63\x5f\xf5\xaf\x5e\ \xf0\x92\xd3\x1a\xa5\xc6\x86\x75\x3d\xec\x78\xd9\x39\x5b\x4a\xc7\ \x14\x4a\x7b\xa2\x77\x5e\xe8\x5c\xaa\x09\x97\xa8\xc0\x3c\x9d\xde\ \xd6\xd3\x11\xeb\x4a\x25\x82\xa1\x23\x06\xfa\x2a\xfb\x6a\x43\x19\ \x82\xc8\x58\xd7\xd0\x11\x43\x4b\xf6\xe5\x56\xbc\x6c\xba\x98\xb2\ \x10\x99\x38\x2f\x17\xa3\xd2\xbd\xf9\xc5\xc1\xa5\x00\xfc\x6f\x0e\ \x84\xb3\x59\x7e\x73\x63\xcd\xbe\x7a\x71\xd2\xcf\xec\x18\x62\x5d\ \x17\x67\x95\x2a\xb1\x46\x6b\xc5\x51\x8d\xae\xb1\xd6\x48\xd0\xd1\ \x88\x0c\xd5\x2a\xc1\x81\x53\x06\x6e\xf2\x84\x81\xe6\xd8\xc9\xd1\ \x6d\xe7\x0f\xc7\x81\xa4\x5e\x49\xc4\x6a\x41\x10\x89\xa4\xc6\x4e\ \x8b\x9c\x57\x6a\x24\x32\xb9\x4a\x23\x59\xe0\x5f\x73\xad\xe3\x36\ \xf4\x74\x8c\xed\x23\x52\x23\x32\x74\xc1\xb2\x5b\xf5\xf5\xd3\x27\ \x8e\x1c\xb2\x02\xf3\x24\x1e\x32\x5f\x10\xf0\xe2\x64\xdb\x12\xa5\ \x75\x89\x5a\x26\x11\xd4\xe8\x2b\xec\x18\xa8\xf5\xad\x6b\xcd\x0d\ \x24\x5a\xa5\x56\xfb\xca\xd9\x78\xde\xba\x3d\x9c\x5d\x3d\x1c\x00\ \xe3\xb8\xea\xb7\x72\xab\xf6\x25\x82\x58\xad\xa7\xd1\x51\x68\xec\ \xca\xad\xd9\x50\x4a\x0d\x70\x56\x6c\x59\x5f\xd0\x58\x53\x58\xb1\ \xa9\xd6\x58\x31\xd1\x48\x6d\x99\x89\x44\x86\x36\xb3\x43\xee\x03\ \x49\x93\xcd\x2a\xad\xbe\x89\x46\xb6\x38\xfb\x23\x8d\xcc\x5c\xa3\ \x23\x13\x49\xdd\x60\x2a\x93\x6a\xb5\x52\xb9\xa0\xe3\x5a\xab\x4e\ \x79\x41\xe5\x66\x73\xbb\xce\xa8\x34\x9e\x75\xd4\xb2\x61\x7e\x48\ \x00\xd7\x95\xcd\x7e\x6a\xa4\x35\x51\xaa\x24\x0a\x41\x62\xc9\x75\ \x36\x25\x22\x1d\xec\x2a\x65\x06\xfa\xb6\x65\x5a\xa9\x46\xb0\xa6\ \xd5\x1a\x4b\x54\x22\x1d\xa5\x80\xcc\x50\xed\xc4\xb6\xf6\x30\x24\ \x6c\x3b\xa5\x9d\x52\x6a\xc9\xd0\x9a\x8e\x8e\xd1\x62\xb2\xb1\x46\ \x64\x6a\xa2\x55\x39\xab\x95\xdb\x93\x49\x6d\x18\x89\xc5\x56\x14\ \x36\x0d\x0d\x44\x12\xad\xae\x56\xd0\x91\x9a\x15\xdf\x79\xe1\x70\ \x00\x74\xca\xf8\xb9\xd2\x5c\xed\x7a\x03\x3d\xd7\xb9\xd1\x31\xad\ \xcc\x5c\x26\x93\xca\x0d\xf5\xf4\xd0\x13\xa9\x4c\x4d\xcd\x05\x7d\ \xbb\x06\x36\xf4\x64\x7a\x56\x0d\x75\xb4\xfa\xae\x91\x89\x4e\x1f\ \x3d\x38\x64\x05\x06\xe5\xca\x3f\x8c\x1d\x68\xd5\x3a\x96\x24\xba\ \x52\xcb\x3a\x12\x23\xeb\xfa\xd8\x15\x54\xf6\xcd\xa4\x3a\xfa\xb6\ \x44\x8b\x0d\x87\x0d\xeb\x82\x53\xb6\xf5\xf5\x2c\x59\xb6\x26\xd6\ \x3e\x7b\xcd\xf4\x50\x00\x02\xf5\x9d\x8f\x4d\xaa\x8e\x58\x2a\xb5\ \x62\xcd\x96\xb9\x0a\x1d\x99\xa9\x46\x2a\x48\xd5\x86\x96\x0d\xf4\ \x05\xab\x12\xcc\x35\xfa\x36\x44\xc6\x72\x53\xb1\x1b\x5c\x8b\x7d\ \x53\x1e\x5f\xca\x0f\xd9\x02\xcd\x5d\x2f\x66\x5f\xcd\xf5\x0c\x0d\ \x25\x0e\xbc\x60\x57\xb0\x2c\x35\x33\xd4\x15\x8b\xa4\x86\x8e\x5b\ \x46\xd7\xaa\x5d\xad\xa0\xc5\x58\xaa\x51\x68\x0d\x1c\x68\xc5\xba\ \x6a\xf3\xea\x5b\xbe\x10\xca\x70\xc8\x0b\x49\x73\xdd\xa4\xf7\xf0\ \xbe\x5c\x22\xd1\xd7\x35\x30\xd7\xd8\x51\xaa\x95\x12\x41\x24\xa8\ \x95\x62\x99\xc6\xbe\x21\x8b\xa5\x3a\xf1\x82\x58\x1f\x13\x95\x7d\ \x41\x57\x2d\xfb\x9b\x1f\x78\x4e\x73\xe8\x1b\x51\x28\xee\xfc\xf3\ \x62\xf3\x94\x2d\x73\x89\xcc\x9a\xcc\x81\x48\x5f\x2a\x68\xc4\x12\ \x89\x48\xdf\xdc\x35\x06\xfa\x46\x12\x41\xae\xd5\xd3\xd3\xba\xc6\ \x37\x48\xa5\x3a\x56\xf4\x0c\xf5\x3e\xb1\x3e\x39\x34\x80\x40\xfd\ \xa3\xa7\xfa\x9f\xde\xb7\xb7\x10\x60\x37\x39\xea\x88\x0d\x41\xc7\ \xaa\x55\x99\xc6\x11\xdf\x68\xd9\x9a\x8e\x65\x43\x1d\x94\xba\x3a\ \x3a\x26\x62\x89\xca\x8a\x91\x23\x12\x91\xe6\xc9\x0f\x3e\xaa\xbc\ \xb4\x38\x48\x2e\x2d\x0b\xd2\xf9\xed\xbf\xfb\x85\x1f\x99\x1f\x99\ \xaa\xd4\x62\x1d\x43\x5d\x2f\x5a\x36\xf6\x76\x54\x46\x12\xb4\x6a\ \x91\x60\xa6\x92\x0a\x26\x2e\x28\xb4\x82\x9e\xbe\x0d\x53\x5b\xca\ \xb6\xf3\xd1\xb5\x5d\xf5\x15\x5c\x4a\x03\xf5\x4f\x3c\x7f\xf4\x23\ \x5b\xc6\x52\x33\x85\xc6\x4c\xe5\x84\x75\x6f\x36\xd5\xb5\x2c\xd6\ \x9a\x5e\xb4\x44\x34\x5a\xb1\x78\xa1\x98\x6a\xad\x20\xe8\x18\x5e\ \x5c\x9a\x9f\xfd\xc0\x5f\x46\x45\xb8\x42\x61\xd2\x66\xf9\xfd\x9f\ \x2e\x3e\x37\x31\x53\xc8\x8d\xf4\x17\xd3\xcd\xa4\x1a\x34\x6a\x99\ \xa0\x5d\x80\x28\xcc\xe4\xe6\x2a\x8d\x5a\x25\x35\x32\xb5\x63\x76\ \xea\x96\x07\x47\xfb\x9a\x2b\x54\x46\x81\xfa\xdb\x77\xef\xbd\x7f\ \xf2\x4f\xe7\x55\x76\x8c\xed\x69\x74\x6d\xe8\x2e\x2e\xe0\x16\x20\ \x6a\x8d\xd2\x5c\x21\x57\x2a\xd5\x5a\xad\x56\xe2\x82\x67\x6d\xcd\ \xba\x3f\x75\xe7\x49\x55\xb8\x72\x71\x1a\xa8\xde\x73\xfa\xfb\x3f\ \xb0\x73\x72\x47\xa6\x96\x3b\xef\x82\xd2\x8e\x99\xa9\xdc\x4c\xbe\ \xd0\x87\xa5\x42\x6e\xa2\x54\x2c\xae\xed\x30\x76\xce\x7e\x9e\xfd\ \xcc\x3d\x7f\x1d\x2e\xb9\x01\xbd\x26\x00\x42\x1b\x15\x77\xff\xdb\ \x9d\x3f\xbc\xfd\xdc\xa6\x99\xc4\xc4\xdc\xa6\xa9\x3d\x07\x0e\x34\ \xaf\xa4\x9f\x99\x98\x9a\x9b\xab\xc4\x62\x23\x41\x29\x37\x9f\x8c\ \x7e\xfa\x9e\xcf\xf4\xa6\xaf\xdb\x1f\xb8\xe8\x11\x94\xd9\x1f\x7f\ \xd3\x5f\xfd\x56\xb8\xe3\x46\x89\xd6\x92\xd4\x9a\x9e\xae\x65\x8d\ \xa0\xc4\xae\x62\x21\xd9\x5a\x8d\xa0\x35\x57\x19\x9f\xb9\xfe\xfe\ \xbb\x1f\xed\xcd\xfe\x4f\x0e\xc9\x45\x08\x92\x7f\x5e\xff\xcd\x0f\ \xf5\xee\xbb\xbe\xb3\x2a\x31\xd7\x97\x1a\x18\xa2\x90\xb3\xd0\xcb\ \x17\xd7\xc2\x45\xf1\xbe\xd9\x0e\x1e\xb9\xf9\xc1\xbb\xfe\x3d\x2b\ \x5e\xdb\x2b\x3b\x9c\x4b\x16\x9f\xee\x7f\xea\xbb\xf6\x7e\x31\xbd\ \x63\x2d\x74\x05\xb1\xbe\x1b\x94\x5e\xd2\x08\x22\x85\x5a\x8b\x5a\ \x2b\x55\x3e\xd9\xff\xd8\xbb\x1f\x39\xb6\xaf\x3a\x8c\x69\x79\x68\ \x9f\xb0\x4e\x9e\x1e\xfd\xe9\x3b\xda\xf7\xa7\x77\x0d\x87\x89\xc8\ \x35\x32\xbb\x22\x5d\xc1\xae\x1c\x43\x75\x59\x7f\x39\xfb\xc3\xef\ \xf9\xe2\xf5\xbb\x49\xf1\x06\xfa\x84\xff\xed\x99\x88\x37\x7b\x5f\ \x3a\x7e\xf2\x8e\xe4\x6d\xc9\x2d\x9d\x9b\x56\xfb\xeb\x21\x11\x54\ \xed\x7e\x3e\x3e\x99\x3f\xdd\xf9\xdb\xf5\x2f\xbe\xf3\xf9\xe1\x54\ \xf9\x86\x3b\xa5\x5f\x63\xd7\x46\x75\x3c\xcf\x36\xbb\xdb\x83\x9d\ \xe1\xb3\xbd\xc9\xa8\x1a\xdf\xbe\xf3\xb6\x49\x51\xc6\x79\x52\x44\ \xb5\xfa\xeb\xe6\x15\xff\x0f\xcb\x3a\x2c\x9e\xff\x72\xca\xdb\x8b\ \x7c\xbd\x1a\x57\xe3\x6a\x5c\x8d\x2b\x8f\xff\x04\x03\x78\x12\x78\ \x73\x21\x26\xd6\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x1f\xd9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x44\x00\x00\x00\x44\x08\x06\x00\x00\x00\x38\x13\x93\xb2\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\ \x42\x28\x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x07\x11\ \x12\x27\x26\x7f\x56\x98\x8e\x00\x00\x1f\x59\x49\x44\x41\x54\x78\ \xda\xec\x99\xd9\x93\x25\xc7\x75\xde\xbf\x93\x4b\x55\xdd\xba\x7b\ \xdf\x7b\xbb\xa7\xbb\x67\x45\x63\x1b\x0c\x16\x82\x00\x4c\x52\x32\ \x05\x8b\xa2\x8d\xb0\x41\x2b\xa8\x08\xca\x8e\xf0\x03\xc3\x0f\x8e\ \xf0\x9b\x1e\xec\xd0\xb3\xe9\x3f\xc1\x0e\x3f\xf9\xc9\x2f\x76\x84\ \x65\x87\x45\xd3\x72\x50\xa4\xc4\x45\xd6\x42\x12\xfb\x32\x20\x30\ \x0b\x66\xc1\x4c\x4f\xef\xcb\x5d\xea\xd6\x92\xcb\x71\xf5\x5d\x66\ \x01\x86\x20\x68\x52\x0a\x84\xc2\xa7\xfb\x8b\x93\x5d\x35\x51\x59\ \xf9\x9b\xcc\x73\x4e\x66\xe1\xff\xdb\xa7\xc4\x7e\xef\xf7\x26\xfa\ \x88\xf1\x9f\x9d\x14\xf8\x39\x76\xf1\x22\x68\x77\x17\x84\xbf\x4d\ \xc6\x0c\x3a\xd2\x47\xae\xff\xd5\x3f\x88\x98\x41\xaf\xbf\xfe\xb3\ \x07\xbc\xbd\x0d\x3d\x1a\x41\xe2\xaf\xc1\xc4\xdf\x3c\x88\x13\x04\ \x00\x07\x07\x80\x19\x85\x0a\x1f\xb6\x5c\x54\x36\xdf\x87\x58\x6a\ \xdd\x1f\x08\x1f\x40\x74\x3a\x08\xaa\x55\xf0\xdf\x0a\x20\x38\xdf\ \xd3\x7c\xfd\x14\xb2\xbf\x00\xcb\x7e\x10\xf1\xf7\x3a\x84\x99\xf1\ \x1f\x00\x5e\xa0\xda\x58\x81\x5a\x5e\x06\xf8\x5f\x97\x7a\xa3\x2d\ \x98\x67\xf7\xff\xf4\xb7\x44\xe1\x65\x08\x40\x02\x9f\x62\x20\xcc\ \x10\xcc\x9f\xb4\xc7\x4e\x80\x74\x45\xad\xfc\x36\xe0\x35\x05\xa0\ \x07\x14\xe6\x56\x7f\x46\x12\xd9\x6a\xc5\x43\x23\x03\xf0\xb5\x27\ \x09\xf6\xb4\xc6\x6b\x9f\x9d\xbe\xe7\x4a\xa1\xa5\x56\x75\x64\xf0\ \x44\x9f\x62\x20\x58\x2f\xd5\x87\xe6\x3f\x06\x7e\x2e\x98\xb1\x0a\ \xb1\xdd\x09\x19\x00\x8c\x54\xa8\x06\x11\xe6\xd6\xe8\x2a\x66\x84\ \x08\xa0\xd1\x04\x50\x95\x04\xae\x69\xe4\x21\xf8\xa0\x45\x96\x07\ \x35\x52\x45\xc0\x01\xf2\x7b\xff\x43\xbe\xf1\x29\x03\xb2\x0a\x0f\ \x09\x8d\x73\x08\xf0\x5f\x9e\x13\xe5\xd4\xff\x88\xf1\xbf\x29\xf5\ \x3f\x00\xcf\x8e\x99\xc6\x35\x7c\xf3\x11\x29\x44\x00\xd4\x8b\xda\ \x9d\x00\x9b\x06\x20\x17\x15\x39\x24\x18\x84\x61\x33\x04\xc2\x00\ \x67\xdf\xf1\xc9\x5b\x4f\x6a\x5f\x1d\x55\x2d\xc1\xc9\x0c\x16\x33\ \xe3\xf4\x77\x01\x77\x45\x7c\x2a\x80\x30\x4f\x45\x84\x23\x2b\xd0\ \x11\x75\x3c\x34\x8c\xc0\x8f\x09\xcc\x8c\x1b\xd3\x8c\x82\x7f\xfc\ \x8c\xc2\x52\x2c\x44\x91\x13\x69\xd5\x46\x98\x84\x34\x8c\x42\xcf\ \x07\x35\xdc\x84\xc4\xab\xb1\x86\xf3\x2d\x62\x5b\xc7\x11\x90\x4b\ \x10\xf0\x59\x1d\x64\x03\xfc\xa4\xa3\xaa\xd0\x0b\x54\xdb\xac\x68\ \xcd\x09\xd5\xc1\x98\xdb\x35\xa3\x71\x21\xfd\x74\x00\xc1\x4b\x2b\ \xc0\x4f\x9e\x98\x4e\xff\x1a\x2c\xac\x77\x38\xb1\xdf\xc0\xda\x52\ \x95\xff\xec\x14\xf1\x00\x84\xb7\x21\xf0\x26\x08\xa6\x84\x85\xb5\ \xaa\x8f\xfb\xe4\x39\x6f\xb9\x46\xbd\xc9\x87\x61\xc3\x52\xda\xc6\ \x01\x2a\x1e\xcd\x06\x50\xb6\x55\xba\x20\x72\xd2\x7e\xaf\x1b\x41\ \xa0\x0b\x9f\x2a\x04\x08\x51\x2d\xd7\x8c\x28\x42\x97\xaa\x8c\xff\ \x33\x88\xff\x11\xc0\x6f\xfd\xb6\x44\x8a\x18\x80\xc5\x7d\x8c\x5f\ \x79\x06\xd7\x5e\x5d\x10\x7f\x63\x40\xe8\x73\xb7\x80\x3d\x61\xdd\ \x0f\x5f\x68\xe7\xff\xe1\x59\x42\x15\x23\x5f\x3b\xd0\x50\xfb\x5d\ \x88\x95\xc6\xc6\x3a\x44\xb1\x5b\xd5\x90\x41\x00\x4e\x22\x40\x1e\ \x13\x76\x37\x84\xb3\x8b\x12\xe1\xaa\x70\xd4\x56\xe0\xae\xcf\x9b\ \x0b\x6c\xf4\x12\xc3\x76\xa0\x4d\x17\x59\xdc\x22\x6a\x2d\xb1\xa5\ \x65\x8f\x34\x42\x23\x68\xbb\x68\xd0\x43\x56\x23\xf9\x01\x01\xa7\ \x20\xf0\x0d\x08\x37\x32\x6d\x64\xce\xd2\xb9\xff\x76\x07\xc2\x37\ \x66\xba\xf4\x0f\x09\x3e\x8a\x96\xf7\x8f\xe1\xaf\x05\x08\x73\xa9\ \x1b\x1f\xcd\x26\xf4\xe2\x9b\xce\x09\xef\x82\xc7\xbb\x5d\x5c\x38\ \xed\x09\x66\xc8\xdd\x5b\xb1\xd7\x74\x6a\x71\xfb\x74\x53\x0b\x17\ \xc0\x57\xeb\x25\x24\xc1\x4e\xac\xb1\xc7\x22\xa9\x71\x9b\x45\x7a\ \x9c\x29\x5f\x82\x77\xab\x44\x74\x1c\xd2\x1e\x87\x4a\x7a\x40\xda\ \x93\xb9\x38\x06\x61\xcb\x6b\x69\x17\x94\xb4\xd8\xa8\x35\x04\xc3\ \x45\xb5\xaf\x33\x37\xb6\x1a\x21\x94\x37\xcf\xd6\x04\xb8\x81\xf4\ \x47\x19\xff\x27\x10\x03\xe0\x77\x7e\x97\xf0\xb5\x93\x12\x5f\xff\ \x02\x61\xd7\xb7\x20\x42\x84\x7f\xff\xa7\x7e\xba\xb4\x3f\xd9\x58\ \x15\x7e\x11\xeb\x80\x00\x68\x66\x18\x22\x80\x2f\x0a\x81\xa2\xc3\ \xf8\xef\x7f\x32\xc4\x6f\xbd\xd0\xc1\xd6\x1a\x51\xbe\x3f\xe4\xd5\ \xc3\x82\xaa\xbb\x27\xa8\xe8\x35\xc1\x83\x2b\x6c\xa3\x36\xa9\x81\ \xf7\x72\xbc\x40\xd2\x4b\xf2\x69\x8f\xd9\xf6\x40\xd6\xb2\xb7\x3d\ \x22\x51\x10\x4c\x05\x94\xd5\x20\xe4\x12\x8c\x3c\x09\xa6\x18\x72\ \x68\x40\xc5\xea\xd1\x35\x72\x24\x61\x73\x4b\x54\x89\x0b\x90\x11\ \x14\x9f\x14\x3c\xd8\x23\xb5\x4b\xf8\x67\x20\x3c\xb1\x4a\x18\xbc\ \x1f\xa2\xd7\xcd\xf9\x56\x7b\x89\x84\x34\x68\x8a\x8c\xdf\x07\xc1\ \x43\xe1\x03\xb8\x5f\x29\x90\x09\x80\xfd\xb6\x87\x38\xd4\x60\x56\ \xcc\xc8\xf0\xbd\x55\x81\xea\xc9\x0a\x7e\x47\xa5\xc8\xf7\x76\x7c\ \xd1\x3a\x27\x0e\x4f\xae\xbb\xf8\x6a\x26\xeb\x3b\x1a\xfd\xea\x43\ \x3e\xaf\x0a\x29\x4c\xcc\x9a\x9c\xd0\x87\x55\x40\x9e\x06\x8d\xbb\ \x24\xd0\x64\x98\x04\xec\xbb\xa5\x04\x88\x43\x2f\x10\x11\xd4\x2a\ \xbc\xdf\x65\x36\x25\x3c\xee\x93\x77\x75\x68\xdf\x23\xcb\x1b\x40\ \xde\x14\x92\x95\x2c\x4e\xd4\x9c\x75\x3d\x11\x5f\xbb\x89\x1a\x14\ \xde\x58\xf4\x18\x9f\xaa\xa2\x91\x66\xfe\xda\xf2\xa2\x57\x88\x94\ \x76\x3b\x69\x76\x51\xe9\x95\x7a\xac\xc4\x30\xa5\x33\xf0\xbf\x32\ \x20\xfc\xda\xd3\x84\x7e\x93\xcd\xf9\xeb\x94\x8d\x4f\xa3\xfe\xdc\ \xe5\xa8\x28\x92\x20\x3d\x36\xca\xea\x7b\x46\x0b\x3e\x5d\x45\x7c\ \x2b\x01\xc4\x88\xa9\xf1\x19\x31\x58\xd9\xe4\xd6\xcd\x82\x6b\xdb\ \x6d\x91\xc4\x5f\x60\x9d\xed\x11\xcb\x98\x55\x52\x61\x1b\x9f\x2d\ \xf2\x2c\x34\x63\x71\x22\x4f\x72\xef\xbc\x6b\x17\x89\x3f\xcb\x5e\ \x84\x52\x17\xac\x2b\x32\x90\xca\x45\x61\x65\x2c\x75\x2c\xf6\x55\ \x20\x12\x22\x57\x27\x5f\x6c\x31\x78\x95\x7c\x68\xd8\x46\x0f\xc9\ \x60\xeb\x0d\x56\x83\xc0\xe7\x31\xcb\xfc\x58\x15\x61\x5e\x60\xdc\ \x8d\x04\xa1\x27\x38\xbf\x80\x4a\x1a\xeb\x66\xd2\x12\x94\xed\xe3\ \xd5\x67\x0c\xbf\x9b\x10\x92\x0f\x08\x7f\x34\xf6\xf4\x8d\x5f\x0c\ \xc8\x3c\x95\xde\xb1\xdd\xae\x18\xb7\xeb\x6a\xf7\x12\x8a\x85\xd8\ \x7a\x5c\xfc\xac\xa4\xd5\x2b\x0d\xd1\xda\xce\x92\x7e\x66\xeb\x68\ \xb4\x91\xb6\x5a\xa2\xb2\x9d\xc1\x74\x42\xa4\xf1\xdf\x05\x35\x36\ \xa8\xde\x27\x2e\xe4\x93\xc4\xf6\xba\xc9\x71\xac\xbf\x67\x1a\xe9\ \x61\xfa\xa4\x3d\x90\x0b\xc4\xdd\x66\xd8\x79\x88\x64\xbc\x40\x95\ \x46\x05\x42\x84\xf0\x5c\xc0\xbb\x14\xf9\x70\x7f\x6d\x78\xe3\x92\ \x85\xdc\x19\x04\x2d\x33\xa8\xf5\xdc\x4e\x54\x37\x8b\x2a\x20\x86\ \xaf\xb7\x41\xa9\xe1\xf0\x16\x88\xb8\x2d\xf8\x98\x62\xc1\x44\xa9\ \x4d\xe0\xe9\x34\x6a\xa3\x97\x5c\x10\x76\x64\x77\x6b\x81\x5a\xc9\ \x2d\xf1\x5f\x9f\x49\xf8\x74\x1c\x50\x5e\x57\x78\x1f\x29\x7d\xe3\ \x3d\x30\xdf\x33\xf3\xef\x31\xfa\x19\x40\x08\x80\x20\x82\xbb\x7d\ \xed\xa5\x17\x03\x08\xd1\x80\x17\x07\xb8\xbe\xa5\xb0\x54\x3d\xe3\ \x97\xae\xd7\xac\x3f\x18\xc9\xd1\x32\x64\xaa\xba\xac\x92\x00\x2a\ \x0f\x61\xa2\x67\x41\x6e\x19\xf1\xd6\x8e\xf3\xf2\x73\xfd\x75\x5a\ \x3c\xbc\x9c\x9f\xd0\xc1\xb9\x85\xea\xf1\x5f\x13\xe1\xea\xe3\x10\ \x95\x1a\x40\x1e\x80\x03\x88\xef\xea\x7c\x16\xeb\x59\xc2\x67\x23\ \xe4\x1b\xef\x20\x59\xff\x91\xb3\xfe\x9d\xeb\x0b\x67\xe8\xed\x7a\ \xa3\x1d\x88\x70\xf4\x7f\xa0\xb2\xcb\x64\xaa\x19\x8a\x76\xe0\x39\ \xec\x8b\xb4\x77\xcc\x55\xb7\xff\x44\x88\x95\x1e\x7a\xd7\x16\x7c\ \x67\xeb\xa2\xfc\x83\xd5\x1d\x73\x6a\xb5\x89\x6a\xa0\xb5\x55\x7b\ \xf4\xfc\xff\x72\x33\x18\x6a\xd6\x93\xfb\x44\x40\x80\xdb\x51\x39\ \x42\x02\x8b\x2a\x0a\x22\x80\x7f\xfc\x95\x00\x5e\x9c\x00\xd9\x5d\ \xd0\xc0\xf3\xd1\xca\xec\xec\x3d\x04\x5b\x14\x28\x02\xcd\xd6\x76\ \x48\x27\x9a\x44\xd1\xf6\x36\x7c\x76\xb0\x9f\x74\xf7\xae\x8e\x1f\ \x0c\xc4\x13\x4b\x8d\x73\x5f\x23\xd5\x5e\x04\xa8\x28\x65\x26\x22\ \xe1\x66\x50\xf8\x43\x9d\x0b\x70\x29\xf2\xaa\xf4\x1a\xf0\x01\x6c\ \x7f\x07\x83\x8b\x7f\xe8\x1d\xbf\x77\x73\x61\xcd\x7c\xa7\xd6\xd0\ \xeb\xe4\x9a\x01\x7b\xbd\x45\x45\x53\x41\x0f\x7f\x08\x5e\xea\xfa\ \x85\xad\x08\xd5\xdd\xb7\xe4\xb5\xd3\x7b\xde\x1f\x5b\x72\xce\xe7\ \xba\x3a\xb8\x85\xcf\xfd\xc4\x21\x41\x90\x8d\x51\x09\x16\x90\x09\ \x89\xe2\x7e\xfb\x21\xc2\xc7\x18\xe7\x20\x18\x54\xad\x46\xa4\x14\ \xfa\x24\x61\xf8\x3b\x5f\x0e\x10\x46\x6b\x0e\x79\x21\x83\x0f\x86\ \xde\xd5\xcf\x52\x34\xfe\x75\x42\xea\xbd\xa5\x88\x44\x5e\x77\x9c\ \xd6\xf7\x6e\x14\x4f\x8e\xae\x04\x9f\x69\xac\xfd\x4e\x58\x39\xfd\ \x14\x20\x6d\xa9\x0c\x24\x66\x20\xc4\xac\x77\xa2\x7b\xdf\x84\x71\ \x67\x43\xe4\x01\xf6\x04\x38\x55\xfa\x00\x6c\x34\xb2\xf5\xf3\x3c\ \xbc\xf1\xad\xfd\xd6\x69\x73\xbe\xb5\x18\x5d\x26\x1f\xe7\x20\xf3\ \x3a\xd0\x24\xae\x8f\x88\x55\xfe\x8e\xdc\x3f\x75\xc8\x59\xad\x46\ \x52\xac\x7b\xb7\xb9\x81\xcf\xbc\x5d\xde\x43\xd3\x14\x90\x66\x0f\ \x87\xf5\x63\x28\x48\xe3\xbe\x46\x9f\xa4\xfe\x80\x47\xc0\x16\x5d\ \xef\x51\xc8\x4b\x9d\x01\xf6\x7a\x21\x8b\xc5\x35\x66\xdb\x12\xf1\ \x8d\x5d\xb6\xc1\x53\x1c\xf0\xf3\x04\x53\x35\x69\x1e\xef\x5c\x49\ \x1e\x2d\x36\x6b\x0f\x34\xcf\xfd\xd3\x40\x2f\xad\x82\xe4\x18\x50\ \x79\xe9\x3d\x48\x10\x70\x24\x22\x90\x00\x00\xba\xf7\x2d\xf8\x4e\ \xc7\xec\xf9\x8e\x77\x80\xb7\x1a\x30\x21\xcc\xee\x26\x06\x97\xbf\ \x99\x56\x8e\x25\x17\xba\x27\xc3\x57\x05\x55\x06\x1c\x39\x26\xa2\ \x4b\x74\xd8\x5b\x87\xaf\x39\x38\xf3\xb6\x3b\xfe\xf6\x36\x2d\x8f\ \xaa\x4e\xa0\x4e\x21\x86\xa9\x43\x7f\x2f\x84\x3b\x43\xbf\x44\x96\ \x99\xef\x53\x92\x04\x9b\x91\x42\x8b\xcf\x1c\x9c\x42\xa8\x3d\x76\ \xb4\x83\x0b\x5b\x9c\x75\xce\xa1\xb2\xbe\x05\x56\xbb\x96\xfd\xe9\ \x9d\xab\xe3\x47\xf3\xab\x65\x99\xfa\xe4\x0b\x52\x77\x9b\x80\xd8\ \x02\x94\x05\x49\x9a\xc1\x10\xf7\x42\xa1\x0f\x01\x01\x6e\x83\x20\ \x62\xc0\x97\x02\x83\xe1\x21\x90\xc1\xf3\x08\x6a\xa1\x86\xda\xa9\ \xbf\x57\x19\xbc\xf7\x47\x67\x89\x72\x74\xd7\xe8\x16\x31\x5d\xe7\ \x51\xab\xc5\xde\xe7\x22\x5a\xff\x4b\x77\xfc\x6a\xe1\xeb\xfe\xa4\ \x02\x0c\x79\x6c\x2b\x85\xb4\xa1\xc1\xbf\xb2\x3a\x24\x8e\xe1\x31\ \xc0\x81\x1d\xfa\x82\xba\xdb\xa7\x11\x66\xc7\xc4\x66\x57\xa2\x08\ \xdb\x5c\xb4\x9e\x62\xbd\x37\xda\xbb\x9a\xd7\xd3\xf7\xb3\xe5\xda\ \xc9\xcf\x4b\xbd\xd8\x05\xe4\x0e\x48\x79\x90\x10\x13\x41\x4e\x60\ \x4c\xdb\x13\x4f\xf7\x5d\x32\x24\x18\xcc\x53\x18\x4c\x0c\x82\x9f\ \x42\x61\x3f\x79\x1e\x38\x45\xd0\x6d\x23\x3e\x76\x2e\x1c\x5e\x7d\ \xf9\xac\xae\xc3\x37\xda\x8d\x43\x41\x79\xc4\xcd\x8d\x1b\xdc\x4d\ \x7b\xd0\x7a\x89\x0f\xa2\xcd\x62\x37\xda\x09\xfd\x56\x86\xbf\x03\ \xbe\xdf\xec\x4f\x12\x90\x73\x40\xa3\x01\x10\x81\x05\xee\x63\xfc\ \x2f\x63\xe2\x37\x1e\xa7\x7b\xb6\xf1\xff\x0e\x84\x11\x04\x5f\x87\ \x93\xeb\xd5\x4d\xb2\xc5\x3e\x2f\x6e\xb4\xb8\xbe\xcd\x10\x69\x30\ \xd8\x16\xcf\x0f\xdf\xcb\x9e\x08\x74\x45\x05\xab\x27\x40\x6a\xaf\ \xd4\x18\x24\x0a\x40\x18\x40\x9a\x69\xfc\x50\x16\x50\xa5\x97\x33\ \x89\xb9\x9f\xb7\xe7\xb2\xb7\xdb\x98\xb7\xc5\x91\x0a\x90\xcc\x41\ \xc1\x00\xe1\xf2\x0a\x02\x0a\xc3\xfd\x77\xd2\x07\xb3\x24\xa9\x71\ \x7d\x2b\xe3\x7a\xfe\x18\x8f\x9a\x8f\xd0\xcd\xe3\x2c\xb6\x5b\x03\ \x69\xf6\x0c\x0e\x00\xfc\xe1\x1d\x08\xa3\x11\x44\x51\x20\x28\x61\ \x54\x82\x00\x91\xf7\x50\x1f\x3f\x43\xbe\xdc\x26\xf4\xc3\x10\x4b\ \x9f\x27\xfe\x71\xc5\xe2\xfd\xc2\xe2\xdc\x9b\x12\x57\x7b\xa1\x36\ \x79\x0d\x19\x57\x84\x19\x1b\x48\xde\xf0\x61\x72\xc2\xf2\xb8\xb6\ \x77\xc9\x9e\x50\xb9\xab\xea\x93\x55\xc8\xaa\x03\xa9\x0c\x10\xa2\ \x94\x04\x49\x9e\xce\x12\x55\x4a\x8a\xf9\x72\x99\xc7\x8f\xfb\xc6\ \x10\xa2\xd9\xec\x20\x94\xf2\xf0\xce\x83\xd8\x01\xec\x01\xe1\xc0\ \xd2\x41\xd4\x18\xba\x5b\x83\xbb\xb9\x55\xdf\xb9\x36\x7c\xe4\x44\ \x37\x1c\x52\xbf\xb5\x09\x47\x2f\x09\xb1\xbb\x23\x82\xdc\x20\xb5\ \x02\x1d\x08\xf3\x1b\xa0\x64\x84\x20\x4d\x10\x46\x4a\x04\x5c\x44\ \x2e\x48\x9a\x46\x93\x19\xb7\x5a\xbb\x96\xe8\xe3\x80\x7c\x6d\xdd\ \xe3\x7c\x3b\x47\xb6\x14\xc3\x50\x0f\xc7\x75\x88\xfe\xe7\x06\xa8\ \x6e\x31\xdb\x7a\x87\x32\x3e\xc3\x2a\x69\x72\x78\x40\x94\xbb\xf1\ \xfe\x35\xd7\xc2\x6e\xd1\x51\x75\x40\xb6\x24\x48\xe7\x53\x10\x13\ \x18\x7e\x2a\x75\xd4\x26\x80\xc4\x9d\xb8\x41\x62\x0e\x63\xea\x79\ \xee\xe7\xc5\x10\x03\x82\xc1\x98\xb6\x79\x02\xa4\x94\x77\x93\x4c\ \x25\xb4\x83\x6a\x29\xa8\x43\x50\xba\xe9\xd7\x92\x2d\x75\xb5\xb6\ \x30\x78\x95\x42\xdb\xf7\xcc\x01\x69\x8a\x6c\x1d\x8a\x3b\xd0\x0a\ \x14\x91\x53\x56\x6c\x3c\xa0\x44\xb6\xea\x51\x54\x0e\x30\x92\x63\ \xfa\xd2\xb7\xec\xcf\x8f\x21\xff\xb6\xd4\x73\xe7\x99\x5e\x3c\x3f\ \xe2\xbf\xfa\xc2\x18\x49\xb5\xe1\x14\xad\x08\xee\xb4\x81\x84\x58\ \xed\x0e\x20\xb8\x47\x45\xf3\xb3\xd6\x27\x4b\xfd\x0b\x07\x4f\x85\ \x92\x85\x6c\x02\xa2\x92\x02\x22\x03\x89\xa0\xf4\x1e\x74\x24\xc9\ \x13\x0f\xba\x13\x3f\x40\x98\x81\x21\x1c\x39\x06\x4d\x59\x30\x03\ \x13\xcd\xda\xbe\x94\xf0\x53\x38\xd2\xdf\x06\xc2\xa5\x80\x02\x14\ \xe6\x50\x4d\x20\x4c\x9d\xda\xbe\x94\x9c\xa8\x3c\x2b\x9b\x3a\xa4\ \xe3\x3e\xf0\x35\x8e\x90\x13\x6a\x69\x19\xeb\x52\xb1\x7f\x4a\x08\ \xd3\x48\xe1\xc4\x2d\x5c\x39\xdc\xa2\x7f\xf1\xbf\xfd\x27\x0f\xaa\ \x27\x41\x68\xaf\x48\xfe\xf1\x29\x0d\x47\x8c\xf6\xf6\xd8\x57\xd3\ \xeb\x22\xd7\x23\x64\xfa\x21\x76\xb5\x07\x09\x69\x8f\xd5\x60\x7c\ \xb0\x99\xf5\x64\xdf\x75\x64\x1b\x90\x75\x80\x54\x0a\xf8\x3e\x20\ \x9a\x20\xa9\x26\x30\x20\x78\x36\x70\x31\xf3\xd3\x6c\x33\xaf\x43\ \x78\x36\x43\xf8\xc3\x33\x64\x96\xf3\xe7\xc1\x75\x0e\x98\x85\x2d\ \xbd\x03\x63\x50\xfa\x04\xa2\x06\xc8\x52\x7e\xdf\x3d\x9c\x17\xf2\ \x19\x55\x0d\x96\xe4\xb8\xbe\xcb\x3b\xbd\x0c\x79\x7d\x13\x2c\x2e\ \x82\xec\x79\xe8\xf5\x21\x64\x48\xf8\x52\xa1\x8a\x1f\x7e\x91\xa8\ \x17\xb2\x2a\xb6\x2c\xae\xbf\xed\xe9\xab\xf7\x01\xc2\xfc\x2c\x6d\ \xbe\xd4\x15\xbe\xe9\x94\xe9\xb3\x0a\x7d\x2a\xa1\x43\x99\xa6\x3e\ \xd6\x46\x57\x48\xba\x1a\x54\x92\x92\xca\x76\x18\xae\x05\xa7\x8e\ \x8f\x77\xdd\x9a\x12\x4c\xa2\x06\x88\x0a\x81\xa4\x03\xdb\x75\x10\ \x45\x20\x31\x85\x41\xe4\xa6\x30\x04\x95\x9a\xfb\x29\x98\x3b\x46\ \x00\xf1\x3d\xcb\x87\xe7\x40\xc0\x20\x2e\x3d\x1d\xc1\x98\x2e\x41\ \xb6\xf9\xa4\x1f\x94\x6d\x11\x11\x64\x95\x11\x0c\x59\x8f\x6e\x85\ \x8f\xc4\x72\x81\xd9\x05\x29\xd1\xf8\x2d\x0a\xd3\xcb\x9e\xd5\x01\ \xc9\x76\x1d\x72\xb1\xc7\x16\xc0\x3e\x8c\xaa\xa6\x7d\xf0\xfe\x18\ \xd7\xd7\x09\x6f\xfc\x8c\x19\x42\xf4\x0a\xf3\xf7\xbf\xea\x5d\x8d\ \x8d\x14\x4c\x10\x71\x05\xd6\x36\x22\xa9\x9a\xde\xe7\x1d\xb6\x76\ \x99\xa1\x57\x60\xd2\x2e\xa9\x51\xc5\xda\xa1\x2e\xb6\x8b\x66\x54\ \x01\x64\x0c\x50\x40\x93\xc0\x09\x0c\xc0\x6e\x1d\xa0\x95\x59\x69\ \x2e\x66\x33\x62\x92\x7e\xef\xa4\x5b\xfa\x98\xda\x70\x1e\x37\x44\ \xe9\x99\x27\x20\xe0\xa7\x50\x88\x0c\xe0\x37\x27\xfd\x90\x14\x93\ \xf8\x24\x62\x0b\x15\x32\xc6\xbb\x45\xcd\x1d\x1f\xed\x28\xad\x6f\ \x91\xaf\x55\x9c\xa9\x9e\x62\x5f\xed\x92\xab\x24\x1c\x60\x93\x0a\ \x7f\x08\xcf\x0e\xac\x3d\x17\x0b\xca\x2f\x36\x20\x7f\xf3\x3a\xf1\ \xd7\xe1\xe9\x81\xab\x5e\x7d\xa4\x2a\xc5\x37\x59\x62\x62\x19\x11\ \x32\xfe\xe9\x17\xf7\xa8\x6f\x2a\x42\xa4\x0d\x26\x71\x40\xec\x3c\ \xe0\xaa\xcc\xea\x4c\x36\xd4\x67\x31\xf6\x75\x6a\x01\x22\xc2\x14\ \xc6\xe4\x05\x69\x0a\xc5\x33\x88\x3b\x00\x55\x66\x30\xe4\x6c\x56\ \xcc\x62\xc7\xc7\x00\x61\xf0\x0c\x0a\x26\x30\xe6\xd9\x05\x2e\x03\ \xbb\x3d\x00\x23\x40\xd1\x2c\x58\x3b\x50\x00\x88\x10\xf0\x03\xd3\ \x28\x52\xf4\x64\x14\x19\xb0\x8e\x85\xc7\xba\xf7\xce\xb0\x35\x03\ \xb6\xb2\x21\xb4\x0a\xe1\x91\x40\xf8\x04\xc8\x53\x26\xed\x10\x2c\ \x95\x30\x7e\xec\xef\x17\x43\x68\x76\xac\x28\x8f\x3c\x7b\x90\x4d\ \xfe\x5c\xa8\x65\x48\xec\x91\x21\x53\xdf\xf5\xb9\x7d\x57\x40\x24\ \xb0\x32\x4f\x12\xb3\x20\x99\x1f\x13\x21\x40\x1a\xb7\x8b\x2e\x92\ \x47\x22\x00\x19\xd8\x6f\x81\xb8\x0a\xa0\x0a\xa2\x10\x20\x59\x8a\ \x26\xe2\x79\xda\x9d\xc3\xe1\xc9\x2f\xc0\x7c\xd7\x1f\x1e\x44\x1e\ \x8c\x02\xf0\x23\x80\xc7\x00\x0c\x48\x60\xd6\x17\x4d\xa5\x4b\x85\ \x0c\x0c\x7d\x85\xad\x7e\x80\x58\x31\xbc\x30\x20\x1c\x90\x70\x06\ \x51\x3e\x92\x2c\xb6\x20\x39\xc9\x02\xd8\x40\x39\x2f\xfe\xf4\x03\ \x2f\x7f\xff\x16\xd3\xc7\x04\xd5\xe9\xa2\x75\x60\x6f\xa1\x2c\x0b\ \x4d\x29\x05\x79\x5a\xa9\x2a\x57\x59\x20\xc1\x1d\x19\xc9\x65\xef\ \x78\x15\xe4\x17\x9d\x75\x75\xa2\x19\x0c\x45\xc0\x0c\xc6\xbc\x3c\ \xa7\xf9\x7e\x85\x32\x00\x06\xcc\x0a\x60\x0d\x22\x35\xed\x9a\xe4\ \xed\x40\x8b\x79\xc1\x3a\x7b\x05\x86\x03\xc8\x81\xd9\x00\x6c\x41\ \xb0\x60\x9a\x1d\x15\x88\x3b\x7d\x91\xb8\xab\x3f\xcd\x13\xb6\x45\ \x9e\x6c\xc5\x0b\xf6\x6d\x78\x7d\x49\x78\x79\x9d\x7c\xbc\xc9\x2a\ \xe8\x63\xd4\xf0\x08\xaa\x72\x3f\xcb\x2c\x2d\x1b\xbf\x52\xc2\xf8\ \xd8\x2c\x43\x34\x39\xb1\x66\xbc\xf8\x05\x12\xbb\xa0\x20\x68\xd0\ \x64\x30\x3c\x76\xa8\x7a\xc3\x85\x0d\x3c\xe5\x35\x52\x59\xdd\x53\ \xd6\x71\xb9\xeb\x08\xca\x41\x12\x00\x61\x1e\x1b\xee\x8d\x11\x84\ \xbb\xda\x1e\x44\x05\x40\x16\x84\xf9\xb5\x79\x6d\x32\xcf\x34\x3c\ \x0b\xa2\x77\xd5\x1f\xf0\xb3\xe7\xcf\xb2\x12\xcd\x9e\x2f\x66\xa2\ \xa9\x48\x01\x42\x30\xf2\x34\x1b\x43\x16\x5b\x50\xd8\x70\xc4\x9b\ \x52\xc8\x3d\x8b\x64\xa4\xab\x28\x70\x0e\x7e\x95\xc0\x9f\x78\x2f\ \x43\x93\x63\xfc\x1f\x79\x7c\xbe\x53\xb8\xaf\x9f\x2c\x8a\xa7\x43\ \x5d\x49\x04\xc3\x14\xda\xcb\x7c\x07\xc8\x2b\x42\x9a\x88\xe0\x9a\ \x2e\xf3\x4e\x7c\x64\xd0\xf3\xf6\x3d\x9b\xb7\xa9\xc7\x47\xff\x1d\ \x89\xbb\xc0\x4c\x99\xcd\xd2\xf0\x5c\x5c\xea\x6e\x78\x53\xc7\xb7\ \x9f\x49\xa0\xf9\x3d\x31\xbd\xed\x0a\xd9\x86\xab\xf4\x00\xd5\x17\ \x42\xe7\xb0\xb2\xd0\xd5\x22\x85\x33\xff\x6f\x67\xaa\x54\x8a\xff\ \xd5\x1e\xcb\xb5\x43\xaa\x14\xcb\x16\x81\x4d\x11\x65\x5e\x06\xec\ \xe0\x58\xb2\x45\x08\x42\x9b\x42\x1e\x81\x3f\x1c\x17\x69\xee\xee\ \x34\x3f\xbc\x81\xc3\x5d\xd0\xe6\xe9\x78\x7e\x53\xf8\x29\x14\xe2\ \xf9\xc0\x67\xc6\x77\x4a\xfd\x79\x11\x77\x9f\x98\xcc\x04\x0e\x2b\ \x95\x36\x99\xe6\x39\xb8\xb8\x03\x5b\x39\xe5\x38\xdc\xa0\xc3\x33\ \x5b\x28\xf4\x96\xb8\x11\x0c\x8b\xef\xa2\x50\x82\x0b\x0f\x97\x11\ \x7c\x66\xe5\x41\x11\xbc\x02\x43\xbf\xff\x8a\x57\xb7\x3f\x16\xbf\ \xfe\x9e\x32\x03\x1b\x11\xf9\x8a\xe4\xbc\xe6\x99\xea\x18\x50\x15\ \x1e\x55\xb2\xa6\x89\xdc\x74\x48\x9a\x1e\x53\xbe\x0c\x99\x2e\x43\ \x65\x8b\x51\x65\xb7\x97\x51\x0e\x78\xbe\x3b\x22\x62\x6e\x3f\xeb\ \x3c\x8a\x48\xce\xe2\x47\x30\x2f\xf1\x67\xf7\x78\x5a\x81\x92\x9d\ \x0a\xe6\xde\x9a\x9e\xf8\xee\x1c\x34\x6f\xce\xfb\xbd\x5d\xc3\xc9\ \xc8\x5c\x81\x4e\xce\xb3\x34\xd7\x21\x8a\x9b\xd2\xc6\x3b\xde\x57\ \x47\x82\x82\x02\xa2\xb0\xca\x49\x4f\x82\x5c\xee\xac\x55\x70\xde\ \x6f\x12\xe3\x91\xed\x0f\xcd\x10\xc1\xae\x60\x1a\x2b\xe6\xb1\x52\ \xbc\x4f\x85\x20\x08\x22\x67\xfb\x44\x0b\x45\xc5\xa7\x79\x5b\x0a\ \x5e\x84\x18\xb4\x21\x47\x4b\x90\xc5\x29\x92\xf9\xf3\x9e\xb1\xc2\ \x16\x04\x7f\x77\xd9\xcd\xf7\x72\x61\x9e\xa3\x00\x28\x00\x23\x9a\ \xc0\x98\x45\xe3\x59\xe6\x11\xd3\xd4\x4a\x73\x20\xa6\x54\x3e\x53\ \x31\x03\xce\x77\x01\xc0\xed\xbe\x98\xa7\x30\xd8\x96\x62\xf2\x52\ \xf3\x90\xd9\x8f\x09\x6e\x44\x2a\x1b\xb2\x32\x03\x61\xf7\xf7\xd0\ \xac\x8e\x71\xe5\xc0\xd2\x23\x82\x81\x18\x17\xde\xbd\xcc\x4f\x03\ \xc0\xd7\x3f\xb4\x64\x68\x7a\x2e\xcf\xf3\x77\xb7\x76\x22\x08\x03\ \x04\x02\x12\x04\xc1\x09\x79\x6f\x22\x23\x0c\x97\x9e\x24\x2c\x74\ \xd4\xf5\xe3\x01\x91\xe7\x62\xb2\x8c\x00\xcf\x13\x71\x29\xb0\x2f\ \x25\xa6\x0f\x9c\x1f\x1c\xa3\x02\x50\x04\x3a\x12\xc2\x09\x1c\x40\ \x01\x2c\xef\xaa\xdd\xdd\x34\xad\x96\x62\xd2\xb3\x57\x9c\xa6\x70\ \x30\xee\x00\xe0\x59\x3f\xde\xdf\x6e\xb3\x01\xa0\xa5\xd5\x41\x7c\ \x02\x3e\x1a\xc2\x07\xd6\xb9\x30\x23\x17\x8c\x89\x50\x20\xab\x46\ \xf6\xcc\x6a\xae\x46\x36\x87\xbf\x61\x9e\x7e\x0e\x96\xce\x82\x3f\ \x12\x43\x78\x7a\x49\x1e\x29\x4d\x11\x28\x85\x88\x3c\x42\xa9\x21\ \xd9\x01\x8e\x26\x48\x24\xc9\xc2\xa0\x50\x29\x39\x3d\x42\x21\x46\ \x51\x28\x86\x54\x4b\x12\x9f\x17\x0d\x6f\x18\xc2\x7b\xb0\x63\xc0\ \xf9\x69\x51\x36\x03\x04\x26\x60\x32\x2b\x2a\x00\xe2\x59\xa1\x16\ \x02\x08\x40\xac\x01\x88\xdb\x40\x88\x1d\x18\x06\x40\x51\x4a\x81\ \x20\xa6\xb7\xc0\x60\x6f\x67\x25\xca\x0c\xbc\xf3\xe0\xb9\xb7\x0c\ \x9f\x03\x54\x13\x5b\x41\x3d\xbf\x06\x0d\xc3\xd2\xb6\x40\xf9\x59\ \xd6\xb6\xee\xe3\xf4\x06\xd5\x87\x1b\xd0\x8e\x9c\x61\x82\x9a\xfc\ \x58\x2e\x60\x30\x86\xa5\x16\x78\x06\xe4\xde\x70\x17\x04\xc8\x9d\ \x43\xc6\x02\x24\x23\x60\xbc\x0b\xce\x23\x45\xcd\xcb\x4b\x15\x88\ \x66\x8f\xad\x3e\x09\xef\x4e\x92\x28\x8e\x6b\x4a\xe3\xa0\x6b\x0e\ \xfd\xcd\xa2\xc1\x29\x80\xda\x11\x10\x37\x7b\xc1\x52\x8a\x01\x8f\ \xd9\xa0\x23\x80\x62\x00\x13\x4d\x97\x0d\x02\x30\x34\xc0\xe2\xae\ \x58\x61\x01\x36\xd3\xeb\x90\x53\x96\x3c\xbb\x8e\x1c\xf0\x66\x0e\ \x63\x2a\x3b\xf3\x05\xc3\x64\x84\xea\x4a\x30\x14\x1c\xe5\xc8\xc5\ \xbb\xc4\xea\x32\xf9\xca\x26\xbc\x4a\x50\x65\x63\xc5\xfe\x58\x46\ \x03\xf6\x51\x22\x19\x90\x04\x04\x9e\xe0\x58\xc1\xa5\x63\x98\xc8\ \xc0\x28\xdc\xd9\x70\xba\x89\xe6\xfd\xbf\xfb\x19\xa0\x0a\x8a\x6f\ \x44\x3a\x6e\xb8\xd0\x39\x5a\x62\xa7\x56\x04\x5b\xcd\xc8\x0c\xb4\ \x19\x50\x98\x99\xda\xaa\xe8\xef\x5f\x27\x56\x09\x93\x6c\x32\x28\ \xf0\xf0\xd6\x81\x4a\xb1\x93\xb3\x8a\x35\x00\x73\x00\xe2\x08\x34\ \x03\x42\xa8\x00\x08\x67\x85\x9a\x9c\xcd\x22\x0f\x66\x3b\xdd\xd6\ \x43\x81\x6f\x43\x72\x60\x7f\x04\x43\x97\x7e\x5c\xea\x08\x84\x9b\ \xca\xb9\x09\x14\x97\x00\x85\x97\x66\xb1\x1d\xf7\x49\x8a\x88\x29\ \x78\x8c\x6d\xdc\x2b\xe1\x5c\x84\xd1\x17\x90\x86\xb7\xf2\xcb\x2b\ \x3e\x0e\x5d\xa6\xf4\xd0\xe2\xf0\x86\xc1\x6f\x6e\x7a\xa2\x9f\x93\ \x76\x8f\x12\x0e\x7e\xd8\x10\x68\x91\x42\x56\xd5\x36\xac\x69\x35\ \x14\x4d\x81\x3c\x40\x30\x48\xb9\xb1\x73\x02\x94\x86\x9c\x05\x55\ \x2a\xa2\xad\x46\x1d\xe3\xdd\x7a\xbe\xec\x46\x79\x19\x51\x18\x22\ \x74\x60\x53\x4a\xcd\x45\x60\x2f\x41\xac\x27\x50\x80\x70\x02\x83\ \x11\x4f\x00\x4d\x97\x8e\x9c\x25\x0c\x7f\x7b\x26\x30\xc4\xac\x40\ \xb3\xf0\xac\x01\x9e\xc6\x1a\x76\x34\x01\xe0\x8d\x03\xcf\x95\x79\ \xd8\x21\xa0\x3b\xc1\xcd\x30\xac\x8e\x31\x8e\x03\x62\x79\x80\x4a\ \xf2\x01\x77\x0f\x12\x42\xe5\x34\xb2\xc6\x62\x75\xdc\x3e\x04\x57\ \x0e\x39\x53\xdb\xd4\x8a\x87\xf8\x8b\xa7\x0c\xf3\x77\x98\xe8\xe7\ \x9d\x87\xec\x75\x81\xfa\xa2\x06\x28\x52\xa1\x0d\x78\xf1\x52\x07\ \xa2\xe8\x61\x14\xf7\xe8\x60\x61\xc4\x39\xbf\x46\xfa\xf0\x1d\x08\ \x7e\x54\xab\xf0\xe1\xd6\x83\xe1\x9b\xc3\xb7\xcc\xf3\xaa\xef\x95\ \x88\x3d\x48\x39\xf8\x52\x90\x0e\x42\x03\xd0\x33\x28\xa5\xc0\x41\ \xa9\x29\x14\x20\x9e\x01\xd1\x00\xd1\x2c\x7e\x14\x13\x40\xc4\x00\ \xc3\xce\x3e\x54\xc9\x52\x02\x3c\x9b\xc3\xbe\xb0\xe0\x23\x19\x5b\ \xb6\x1d\xec\x00\x48\x8d\x2a\x56\x1e\x09\xb7\x69\x61\xe3\x55\x1e\ \x37\x2e\x50\xb2\x5a\xc1\xe0\xf8\x02\x0e\xa4\x46\x7d\xf4\x32\x9e\ \x7c\x79\xdb\x32\xaa\x22\xab\x09\xea\x2f\x77\x91\x75\x2b\xa4\x5d\ \x1f\x5b\x8f\x67\xcc\xc7\x2d\xd1\x1f\xf3\x7d\xce\x43\xbe\x04\xbc\ \x16\x48\x2f\xc6\xda\xad\xfe\xa4\xa6\xac\xec\x71\xd6\xe8\xd2\xee\ \x72\x42\x49\xfd\xa2\x43\xf2\xaa\x50\x49\x40\x42\xae\xc2\x55\x8f\ \x93\x3a\xb8\x06\x91\xe7\x9d\xc5\xb8\x3a\x68\xe6\xb7\xcc\x61\x7e\ \x82\x62\x26\xd2\x16\x98\x7d\x76\xf0\xca\x80\xf4\x11\x24\x06\x4b\ \x9a\x0c\x8c\x84\x06\x73\x58\xfa\x18\x34\x81\xa2\x01\xd0\xac\xf6\ \xc8\x66\x99\xc4\x80\xbd\x2a\x45\xa5\x00\x76\xd3\xb8\xe1\x8b\x02\ \x3e\x37\x13\x20\x3e\x77\xf0\x23\x0f\xd3\x27\x0e\xba\xd1\x95\x48\ \x55\x2f\x21\x69\xac\xa0\x9a\xe5\xbe\xfd\xee\x77\xe5\x50\x5d\xc1\ \xf8\x41\xe5\x93\xa5\x65\xfa\xf3\xaf\x9c\x56\x0a\x87\x7e\xe9\xfa\ \x9e\x78\xe0\x6d\x6b\xfd\xc5\xc0\x79\x54\x72\x03\xdb\x78\xe5\x1d\ \x07\xe0\x5e\x20\xcc\x80\x31\x3f\x08\xe4\x39\x8e\xc8\xe8\xba\xd8\ \x3f\xc6\xd8\x3a\xb6\x2e\x92\xc6\x55\xb8\x28\xc3\x99\xf7\x58\xac\ \xfb\x88\x6c\x0c\x27\xd2\x0d\xa9\xec\xc8\xdb\xda\x39\x21\x02\x29\ \xa2\x83\xd7\xbb\x0f\x85\xd1\xee\xdb\xbe\x2d\xf6\x4c\x5d\x04\x1e\ \x24\x2c\xbc\xa0\xd2\x67\x20\x9d\xcd\x4e\xcf\xdd\xf4\x70\xc7\x63\ \xba\x29\x63\x0d\x88\xca\x54\x20\x80\xf3\x52\x7e\xe6\x01\xcc\x33\ \x96\xb5\xf0\xd6\xc0\x67\x39\x7c\x9a\x81\x73\x3b\x81\xe2\xc7\x0e\ \xc5\x3e\x38\x13\xea\xe6\xf1\x07\xe4\x0f\x04\xe8\x00\xe3\x38\xe5\ \xac\x9e\x50\xb5\xf9\xeb\xdc\xec\xd7\xe8\xc4\x5b\x2f\x59\xa5\x5e\ \x95\x2f\x7f\x49\x08\xd2\x11\xed\x9c\xec\xf9\xbd\x93\x2c\xe2\x6c\ \x80\xd5\x0b\x85\x5e\xfa\x80\xfc\x1a\xc2\xfd\x7d\x14\xed\x36\x9c\ \xba\xeb\xe3\xb6\x4a\x12\xe6\x7a\x15\x63\x91\xd4\x46\xf2\xc6\x2a\ \xe3\xd6\x90\xe9\x9f\xbc\x7c\x1b\x18\xdd\x0c\x32\xa8\x47\x48\xa2\ \xdb\x86\x29\x1a\x14\x6e\x5c\x66\x32\x07\x30\xf5\xcf\x36\x3b\x66\ \x23\x5f\x33\xdf\x1f\x5d\x74\x5f\xa6\x5d\x5f\x25\xe9\x66\xb9\x2b\ \x05\xe4\x08\x10\x35\x48\x11\x83\xa9\x0a\xcc\x37\x78\xe4\xc0\x02\ \xa0\x79\x1c\xf1\x76\x96\x41\x6c\x29\x53\x2a\x07\x9b\x0c\x5c\xa4\ \xf0\x69\x02\x37\x1e\x4e\xa1\xe4\xa6\x6c\x3b\x98\x3d\x46\x6e\x83\ \xb4\xf7\x70\xe5\xa5\x4a\x0d\x97\xc1\xd9\x16\x01\x3b\x3c\x5e\x8c\ \x39\xaf\x8c\xbc\xa9\x57\x29\x6f\xfc\x06\xb5\xf6\xdf\x94\xcf\x7d\ \xfb\x26\x35\x30\x02\x30\xe2\xef\x7d\x55\x60\x54\x55\xe2\xc6\x33\ \xa4\x2e\x9c\x73\x38\xf7\x6d\xd7\xee\x81\xee\x9e\x21\x5c\xca\x94\ \x84\x66\x76\x50\xea\xc7\xb8\xc7\x7e\xf4\x82\xe0\xb0\x68\x78\x56\ \x4d\xe9\x87\x87\x08\x6e\xec\xc2\x77\x56\xc8\x23\x66\xdd\xff\x80\ \xd4\x60\xa3\x77\x32\x1c\xf8\x3c\x7c\x38\xbd\x36\x7c\x08\xe4\x54\ \xc0\x0e\xcc\x39\x80\xc3\xdb\xb1\x82\x59\x43\xb2\x02\x4a\x31\xe6\ \x05\x99\x9b\x01\x19\x83\xdd\x00\x6c\x8f\x34\x84\x37\xa5\xcf\x07\ \x70\xe3\x3e\x5c\x72\x50\xaa\x0f\x9f\x15\xf0\x47\x30\x76\x19\x69\ \xa2\x46\xcd\x33\xad\x0f\x9a\x8d\x66\x0b\x45\x26\x48\x8f\xd7\xa1\ \x31\xa0\x78\xfb\xd0\xa5\x6d\x2b\x07\x15\xe3\x51\x0e\xdc\x05\xa7\ \x7d\x51\x6b\xf3\xc1\xfe\x25\x54\x86\x63\x8a\xbe\xe9\x01\x14\xb8\ \xd7\xf8\xae\x4a\x15\x1f\x6b\xfc\xc6\x17\x25\x32\x53\x65\xa9\xac\ \x1f\xdd\xba\x29\x85\x51\xe0\xe5\x16\x88\x0c\x54\xff\x8a\x17\x7d\ \x29\x4d\xe3\x51\x61\x9b\x27\x7b\xa7\xb2\xab\x7b\x42\x04\xa3\x1b\ \x83\x13\xd8\xb2\x81\xb2\x0e\x68\x26\x60\xbf\x0d\x38\x9e\x64\x08\ \x18\x0b\x8a\x0a\xb0\x1e\x83\xd4\x10\x90\x11\x08\x04\x66\x03\xb8\ \xf1\x0c\xc6\x21\x7c\x5e\x2a\xdb\x2b\x2f\xed\xc0\x8f\x4a\xfe\x79\ \x06\x37\x9a\x2c\x13\x64\x85\x3a\xa8\x9f\xaa\xbe\xde\x5e\xc6\x9b\ \xb0\xaa\xc3\xf9\xd2\x73\x30\xd9\x75\x0a\x46\x1f\x18\xce\x87\xae\ \x39\x30\xaa\xbd\x35\x96\xdf\x1d\x5a\xf7\xf4\xda\x86\x15\xed\x15\ \x69\x2a\x0f\xbb\xd6\xd6\xcd\xd1\xd6\x70\xbf\xba\x68\x1d\xd1\x2f\ \xf2\xb1\x7b\x9e\x82\x1f\x3b\x27\x70\xf6\x98\x80\x70\x96\xce\xfd\ \x10\xfc\x1f\x17\x09\x4f\xb4\x35\x32\xa3\x11\x8c\x04\x2a\x03\xe5\ \x93\x07\x1f\x25\x17\xbf\x08\x35\x24\x90\x7b\xd0\x07\xc3\xc6\xde\ \xc6\xa1\xee\xbf\x6b\x3e\x1b\xc0\xb6\x82\x05\x90\x6c\x12\x64\x2d\ \x82\x8c\x17\x20\x2a\xa5\xa2\x16\x44\xd0\x00\xa9\x18\x24\xc3\xd9\ \x9e\xde\x95\xbf\x19\xd8\x26\xf0\xc5\x00\x3e\x2b\x81\xa4\xfb\x25\ \x90\x83\xb2\x6d\xe0\x06\x8c\xe2\x90\xbc\x11\xc1\x5e\x67\xad\xfe\ \x56\xbd\xa3\xdf\x12\x1c\xf4\x99\xf9\x32\xcc\xd2\x29\x32\xf1\x32\ \xc8\x7e\xcb\xfa\xfc\x0d\xa7\xde\xef\x47\x8f\x0b\x8b\xee\x9e\xa7\ \xd9\xae\x20\x7f\xf3\xc9\x80\xba\xc3\x45\x45\x63\x23\x6a\x65\xd4\ \x68\x18\x43\xf4\x11\x20\xbf\xb8\xf1\xbf\x07\xa1\x0d\x81\xb5\x96\ \xf4\xd9\xd9\xd3\x70\xf1\x57\x48\xf7\x6f\x40\xfb\x27\x39\x3a\x6c\ \x20\xdc\xd9\x38\xaa\x53\x46\x3b\xee\xd1\xdd\x2b\xe9\xe3\xdc\x37\ \x6b\x51\xc5\x6b\xd9\x00\x64\x5d\x40\xc6\x11\x44\x54\x87\x08\x6b\ \x20\x55\x01\xc9\x00\x10\x62\xba\xd3\x75\x05\xbc\x1d\x83\xf3\x21\ \x7c\xa9\xc9\x12\x49\x18\x66\x00\x64\x99\xca\x64\x53\xbe\xd5\x7b\ \x30\x7c\x35\x8e\x3a\x55\x62\xb5\x0e\xe0\x7d\x20\x32\x4c\xee\xa7\ \x94\x76\x1f\x60\xab\x57\x49\xf2\xcb\x90\x38\x4f\xd7\xde\xee\xd3\ \x3f\xdf\x61\x7c\xc8\xf8\x66\x2d\x80\xb4\x1a\xed\x2c\x47\x08\x4b\ \xf4\xcb\x02\x61\x00\x7f\x79\x5a\xc2\x3d\xbc\xc6\x85\x7c\xce\xeb\ \xc1\x79\x52\xe2\x69\xae\xee\xf5\x50\xb9\x75\x41\x8e\x35\xb3\x55\ \x27\x18\xbe\xe3\x91\x05\xc3\x5d\xf9\xe2\xee\xe5\xd1\x32\x0f\x6d\ \x2f\x0a\xbd\x54\xf1\x2c\xb9\x44\x04\xd2\x12\x50\xb3\xc3\x67\xef\ \xc1\x7e\x56\x6c\x15\x80\x4f\x01\x33\x06\xb2\x5c\x3a\xd5\x55\x9b\ \x8b\xa7\xbb\xc3\xb8\x91\xfd\x4f\x92\xe6\x7d\xd8\x3a\x38\xeb\xae\ \x12\xf1\x3b\x90\x7a\x13\x1c\xc7\x24\xc7\xef\x71\xde\x5c\x86\x95\ \x4d\x06\x6e\x0a\x61\xaf\xe0\x4b\x3f\x48\xe9\x67\x8d\x01\xd3\xea\ \x8f\x08\xfc\xcb\x01\x79\xfd\x29\x81\xfe\xea\x1a\x48\xac\x38\xde\ \x7b\x87\x85\x7e\x52\xb4\xf6\x7a\x14\xef\xbe\xcf\x7d\xda\xa3\xbc\ \xfe\x00\x64\x56\x21\x35\x0e\xbc\x8f\x3e\x03\xed\x9f\xf0\x59\x71\ \x73\x5c\x8c\x1f\x3e\xb8\x26\x97\xcc\x81\x3b\xe1\x92\xa2\x2e\x89\ \x95\x54\x0c\x21\x40\x44\x0c\x06\x4d\x98\x38\x57\x7a\x12\x46\xc4\ \x6a\xb7\xb2\x10\x1d\xb4\x56\x69\x33\x8a\xa3\x2d\x51\xe1\x05\x1a\ \xb4\x6e\xb2\x3e\xfc\x36\x60\x36\x29\x5f\x5d\xe0\xac\x7e\x9c\x44\ \xfe\x12\xc2\xda\x88\x1d\x35\x9c\xb5\x57\x15\xc5\x4d\xf6\x68\x53\ \x68\x37\x41\xc3\x1d\xfc\xda\x4b\x05\x7d\xc2\x91\x2a\xfc\x82\xb6\ \x7f\xf9\x05\x72\xdb\xe2\xa4\x14\x42\xa1\xe8\xbf\x24\xeb\xd1\x29\ \xd4\xb7\x61\xe3\xc3\xd7\xe4\x7e\xbe\x61\x87\xa7\x8f\xe9\x60\x7c\ \x93\x21\x63\xb2\x95\x16\xb4\x6e\x90\x4f\xbf\x2f\x03\x55\xab\xb5\ \x68\x5c\x53\xdd\x13\xd6\xda\x6b\xb6\x70\x91\xc9\x7d\x3b\x4d\xff\ \x6f\x35\xd7\xd6\x22\xc7\x71\x85\xbf\x53\x5d\xd5\x97\x99\x9e\xd9\ \xd9\x9b\xb4\xab\x45\x09\x8e\x8d\x91\x9d\x7b\x6c\x07\x41\xae\xe4\ \x21\xc6\xc1\xe0\x40\x88\xf1\x63\xf2\x4f\xf2\x98\x37\xe7\x37\xc4\ \x2f\x06\x93\x10\x84\x83\x13\x25\xe0\x80\x43\x30\x09\xb1\x12\x22\ \x6b\xa3\xcb\x6a\xa5\xd5\xcc\x8e\x76\x67\x76\x67\x7a\xfa\x5a\xdd\ \x55\x75\xbc\x0c\xc8\x66\x61\x4d\x14\x90\x60\xfd\xc1\x81\xe2\x9c\ \xee\xea\x3e\x1f\x14\x1c\x4e\x9f\xaf\xcb\xa4\xa9\x5c\x64\x1a\x96\ \xca\x47\x19\x45\x8a\x83\x50\x09\xbf\x4b\x24\x95\xdd\x91\xb6\xc3\ \x90\xb6\x60\xa1\xba\xe0\xc3\xdf\x3a\x49\x2f\x52\xb5\xaa\x38\x9c\ \x4c\x11\x4c\x77\x50\xc5\x23\xb6\x7e\x4c\x3a\xbb\x4b\x61\x2f\x15\ \x42\x2d\xa2\xd1\x43\x8a\x64\x06\xeb\x2f\x98\x6a\xb1\x2b\xef\xe0\ \xe0\x61\xf5\x35\x84\xff\x03\xfc\xc1\x4b\xc4\xb5\x3a\xc3\x16\x9e\ \x08\xb2\x7d\x28\xb3\xec\x3a\x07\x6b\x82\xaa\x29\x26\xf9\x2e\xcc\ \xf9\xc8\x36\x99\x24\xcf\xfa\x2c\x4a\x21\x54\xf7\x07\xac\xf2\x0e\ \xe5\xf6\x1a\x7a\xb3\x67\xa9\x08\x2d\xf2\xc5\xa7\xe1\x19\xb0\xe5\ \x36\x93\xe8\x92\x4c\xb7\x00\x16\x96\x99\x85\xb0\x1a\x2e\xec\xc0\ \xa9\x08\x0a\x2b\xf0\xf5\x3d\x91\xc5\x39\x3b\x15\x20\x32\x6d\xa0\ \xfc\x3d\xb7\x70\x81\x0e\xce\x75\x09\xc5\x6f\x10\x67\xa3\x66\x12\ \x36\xaa\x5e\xfb\x3c\x02\x7d\x80\xad\x0f\xef\xe3\xeb\xdf\xe9\xc2\ \x35\xad\xa6\x2a\x0f\x4b\xdf\x53\x9d\x0a\x01\xc1\x96\xf8\xee\xd9\ \x9c\xe8\xad\x47\x38\xda\xbd\xfd\x33\x82\x09\x62\x08\x91\x57\x45\ \x7f\x68\xeb\x49\x80\xa5\x7e\xe4\xe2\xfe\x2e\x2c\x76\xa0\xef\x5b\ \x1c\x85\x28\x1c\x67\x64\xf2\x44\x88\xc5\x45\xf8\xc6\x63\x8d\x77\ \xad\xe9\x4c\x6d\xac\xc7\x2e\x5b\x03\x83\xae\xc2\xb6\x0f\xe0\xd4\ \x75\x98\x70\x87\x39\xd8\x01\xfb\xdb\x1e\xa9\x9b\xec\xe4\x2d\xb8\ \x60\x0b\xd6\xdf\x86\xf3\x47\xe0\x60\x06\xf2\x36\x61\xc2\x5d\x90\ \xb8\x09\xbd\x7a\x46\xc0\xfe\x81\x7b\x33\xcd\x4d\x6f\x05\x39\x6b\ \xb5\x6a\x35\x54\x73\x13\x14\x2b\x3c\xfb\xb4\x87\x6f\x3c\x3f\x85\ \xe0\x44\x85\x7e\x28\x7b\x65\x69\xab\xe9\x14\x44\x16\xff\xfe\xaf\ \x7a\x64\xb3\xee\xf3\x9e\xeb\x38\x97\x80\xad\xe8\x85\xdf\x65\xad\ \x0b\x4e\xd0\xf9\xc4\x47\xd0\x1f\xcb\xd5\x64\x4c\x4f\x6d\x31\x2e\ \xc2\xe1\xca\xb5\x5a\x84\xa3\x06\xde\x59\xe5\xc2\x66\x83\xc9\xfe\ \x0b\x55\x3d\xa0\x85\x24\x27\xcf\x0d\x49\x2f\x68\x20\xb8\x03\x8e\ \xf6\xc0\xed\x11\xb1\xda\x84\x09\xfa\xe4\xc2\x3e\xb1\x3f\x10\xe4\ \xf7\x45\x13\x0c\x60\xa2\x3e\x5c\xb4\x0f\x29\x86\x8e\xc3\x3d\x12\ \xe1\x1e\x37\xf2\x26\x8e\x58\x46\x12\x4e\x6c\x94\x5c\xe6\x5e\xb1\ \x01\xb7\x2e\x30\x1e\x1a\xbc\x7d\x55\xc3\xb8\xfb\xc8\xbb\x1d\x5c\ \xba\x4c\xf4\xdc\xe5\x1c\xd6\xe6\x2d\xca\x49\xfe\xf2\x8a\xc1\xe2\ \x66\x85\xb2\x7e\xb4\xa3\xdd\xd0\x53\x43\xdf\xfe\x13\x33\x03\x88\ \x6f\x0b\x11\xd9\x0c\x97\xea\x86\x5e\x3d\x3e\x00\xcb\x7f\xfd\x16\ \xa1\x97\x6f\x20\x2c\x0e\x78\x5f\xdc\xf0\xf2\x36\xbb\x2f\x6d\x2b\ \xba\xfe\x4c\xc1\x82\x6e\x13\xda\x35\xc0\x77\x61\x5b\x11\x64\x93\ \x0a\x8a\x0b\xeb\xea\x82\x6a\xc9\xc2\x77\x47\x88\x2d\x98\xa7\xc4\ \x88\xe0\xdb\x94\x55\x54\x31\xd3\x2e\x99\x60\xea\x42\xbb\xca\x79\ \x37\x54\x4b\x83\x4d\x27\xfc\x9e\xe3\xf5\x0d\xf1\x5c\xba\x49\x00\ \xf0\xfa\x9f\x35\xff\xe5\x9b\x0e\x1b\x50\xfc\x56\xa7\xa6\x8b\xef\ \x36\xfc\xf6\x0b\x84\xef\x01\xf4\xe5\x7d\x00\xfb\xee\x91\x10\x72\ \xbc\xe7\x3a\x07\xa1\x37\x33\x9f\xaa\x79\xeb\x99\x2e\xb7\x8b\x16\ \xa2\xd9\x75\xef\xbd\x49\xe9\x7e\x08\xe1\x7c\x90\x37\x5b\x6b\xb1\ \x9b\x6c\x8a\xa0\xf7\x24\x28\xdd\x22\x8e\x9f\x62\xf0\x90\x89\xad\ \x57\xb8\xcc\x29\x03\x64\x4a\x92\xf2\xe1\x44\x91\x13\x45\x12\x82\ \x5b\x24\x68\x76\xb4\x2c\x30\x8b\x9c\x5b\xd8\xbf\x45\xd5\xd2\x79\ \xf4\xa3\x01\xce\x4d\x3e\x80\x6d\x3d\x8f\xf7\x5f\xba\x83\x8b\xef\ \x94\x00\x40\xdf\xff\x7b\xc3\x7f\xfc\x82\x87\x37\x40\x00\x98\x5e\ \xfe\x07\x3f\x76\x01\x11\x11\xf8\xd3\xc8\x70\xff\xfc\x9a\x70\x61\ \xb2\xa2\x65\x7a\xcf\x3b\x3b\xc9\xe8\xe7\x00\xce\x42\x41\xb7\x1b\ \x12\xc8\xbc\x85\x5e\xc5\xd6\x4b\xc1\x61\x0a\xa8\x0c\x1e\x0e\xd9\ \xb5\x0b\xe4\x3a\x11\x23\x37\x43\xea\xe7\xc4\x61\xe5\x25\x87\x23\ \xf6\xc4\x1e\x02\xae\x5c\x68\x34\xb4\xcc\xe1\xb5\x1d\xf9\xdb\xd7\ \x64\xcb\xc5\x30\x17\x94\xb7\x92\x64\x88\x93\x2d\xac\xec\x3d\xc1\ \x7f\xfb\x29\x1e\x80\x5e\xbc\x6d\xe9\x52\xca\xa7\x42\xa6\xda\xb4\ \xc7\xb1\xf3\x0f\xcb\x68\x21\x1b\x13\x61\x0e\xab\xb1\x2c\x6f\x7c\ \x95\x91\xbb\x5b\xb0\x2c\x29\xc4\x0c\x2e\xd6\x50\x34\x21\x2d\x0b\ \x61\xa4\xc6\x2b\x9b\x1a\x9d\x1b\x1a\x8b\xae\x82\xa1\x1c\xe9\x9a\ \x26\x60\x06\x87\xc6\x6b\x8d\x26\x08\x18\xf0\x6d\x23\x7b\x4b\x95\ \x0b\xf4\xd4\x35\x26\x06\x00\xb1\x36\x19\xd8\xd6\x14\xe8\x0e\xe3\ \x53\xa7\xdb\x65\x86\xf0\xcf\xe4\xd2\x93\xd9\x08\x9d\xd4\x01\x40\ \x9a\x42\x18\x2b\x04\x74\x37\x47\x44\x39\xc2\x82\x51\x1e\x79\x21\ \x3d\x40\xa5\xe8\xd9\x06\x3e\xcd\x8f\x1f\xde\x87\x43\x7e\xb5\x86\ \x28\x2b\x2c\x11\xc8\xe7\x92\x24\x15\x4d\x67\xbf\x81\x63\x03\x92\ \x06\x57\x3f\xc7\x75\x30\xee\xdb\xc0\x2d\x30\x00\xa2\xc2\xa1\x35\ \xbd\xed\x56\xfa\xcb\xa7\x51\xc8\xec\x61\x21\x49\x69\xbd\xf8\xb8\ \x2a\x8c\x7c\x48\xd5\x04\x35\x4c\x93\xa1\x56\x0c\x6e\x19\xc4\x3a\ \xb7\xca\x09\xa3\x9a\x12\x19\x58\xbb\x52\x3f\xf8\xa6\x8c\x97\x8d\ \x83\xd7\x68\x0c\x86\x04\x51\x95\x5c\xa3\x54\xd6\x7a\xf3\xae\x90\ \xcc\x4b\xcc\x15\x33\xbb\x07\xec\x17\xc8\xaf\xaf\x7b\xf3\x87\x8a\ \xc3\xca\x06\xc9\xa4\xde\x79\x32\x3a\x4d\x42\x66\x00\x70\x10\xce\ \x1c\x2b\x91\x2d\x22\x39\x5c\xc9\x91\x4d\x33\xfa\xd1\x3b\x40\x27\ \xd1\x48\x3c\x0b\x12\xf0\xa4\xd0\x90\x96\xb9\xd8\x33\xc7\xa6\xa6\ \xcf\xd7\x06\xa5\x63\x90\x69\x38\xf4\xf2\x2a\x16\x12\xeb\x55\x8d\ \x5f\xdf\xd7\x78\xc6\x92\x1f\xb1\x71\x9d\x49\xd2\xf6\xe3\x39\x21\ \xd4\x05\x84\x2b\x53\xaf\xb3\x47\x38\x2d\x60\x9e\xdb\x71\x5f\x01\ \xb2\x0d\x3a\xfc\xe1\x17\xe9\x63\xdf\xaf\x30\x5f\xdb\x2b\x3f\xe9\ \xf2\x95\xd7\x3c\x7e\x73\x59\x30\x9f\xbc\x17\xbf\xf7\x15\xe2\xbb\ \xe7\x96\x5d\xe6\xf7\x3e\x89\x2d\xcd\xaf\x4f\xf6\x82\x80\xab\x40\ \x1d\xbb\xef\x10\x82\x79\x6e\xa7\x13\x3c\x83\xe0\x14\xfe\x89\xb1\ \xff\xbc\x12\x31\xff\x02\xfc\x3f\x48\xb6\xe3\xb8\x55\x65\x22\xfe\ \xc4\x77\xec\xcf\x12\xde\x09\x64\xd2\xa9\x25\x44\xeb\xf9\x0b\xd3\ \x89\xc9\x5e\xfb\xb1\x7c\xc8\x3d\xe4\xbd\x7b\xf0\x4f\x20\xeb\xb1\ \x25\x2f\x1e\xd7\x11\x1a\x0c\x4e\xae\x57\xe6\x49\xdc\xad\x2c\x1e\ \x02\x45\x01\x1b\x45\x30\x27\xd4\x42\x0f\xea\xa1\xcf\x06\x98\xe7\ \xf6\x99\xc4\x47\x00\x82\xcc\x5d\x48\x6e\xc3\x72\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x5d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x14\x00\x00\x00\x14\x08\x04\x00\x00\x00\x27\x80\xd5\x86\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x0a\x15\x04\x24\x38\x0a\ \x71\xa9\xaf\x00\x00\x00\xe1\x49\x44\x41\x54\x28\xcf\xb5\x92\xcd\ \x4a\xc3\x40\x14\x85\xbf\x9b\x4e\xd3\x96\x3a\xd6\xb6\x8a\xd0\x12\ \x14\xd2\x8d\x5b\x5f\xc4\x07\x77\xe5\x0b\xf4\x07\x0a\x8a\x8b\x2c\ \x8c\x6d\x35\x0a\xc7\x45\x2d\x9d\x10\x09\x01\xe9\x59\x0c\xc3\xcc\ \xc7\xbd\x97\x73\x2e\x9c\x5c\x79\x70\x86\x8a\xfe\xc2\x1a\x4a\x17\ \xea\x53\x5f\xf1\xb7\xde\x19\x9d\x6a\xfd\x28\xc4\xfc\xfe\xd2\xc3\ \xcb\x01\xf8\x00\x8d\xca\xd8\x1b\x8a\x19\x72\xcb\x8d\x62\x59\x88\ \xba\xf2\x24\x3e\x26\x21\xe1\x8a\x31\xb0\xe6\xf3\xf8\xe3\x0e\xb3\ \x78\xd4\x62\x40\xc2\x8c\x07\x52\xe6\x88\x9d\xbe\xd8\xd8\x36\x00\ \x3d\xa0\x36\x6d\x1c\x2d\x2e\x49\xb9\xc3\x98\x30\x22\xc3\xa8\xb4\ \x76\x18\x1b\x5e\x78\x65\x41\xc4\x92\x8c\x82\x77\x3e\x2a\xad\x6d\ \x07\xa0\x6f\x9e\xe8\x72\xcd\x33\x8f\xac\xad\x38\x7a\x61\x65\x6b\ \x64\x38\xee\x31\x56\x64\x14\xa6\xc0\xb4\x6a\x7c\x9a\x2a\xd5\xb8\ \x36\xd2\xfd\xb3\xce\x35\x52\xaf\x41\xf2\xea\xca\x41\x5e\x8f\xe5\ \x4d\xd7\xcc\xff\x7f\xa1\x7f\x00\x8c\x7c\x48\xb7\x46\x58\x24\x0f\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x3c\x30\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x10\x06\x00\x00\x00\xfa\xf9\xad\x9d\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd6\x00\x00\x0d\xd6\ \x01\x90\x6f\x79\x9c\x00\x00\x00\x09\x76\x70\x41\x67\x00\x00\x00\ \x40\x00\x00\x00\x40\x00\xea\xf3\xf8\x60\x00\x00\x00\x06\x62\x4b\ \x47\x44\xff\xff\xff\xff\xff\xff\x09\x58\xf7\xdc\x00\x00\x3b\x8d\ \x49\x44\x41\x54\x78\xda\xec\x7c\x77\x54\x55\xd7\xb6\xfe\x3e\x85\ \x73\xe8\x1d\x3b\x45\x41\x63\x01\xc1\x8a\x15\x30\xf6\x0a\x18\x63\ \x57\x34\x1a\xbb\x80\x9a\xd8\x15\x34\x9a\x68\x2c\x18\x35\xc6\x12\ \x01\x8d\xc6\x18\x0b\xa6\xa8\x89\x0d\x35\x1a\x4b\x54\x34\x31\x76\ \xc0\x86\x14\x91\x22\x07\x4e\xdb\xe5\xcd\x39\xf7\x5a\xe3\x37\x72\ \xff\xf9\xe5\xe6\xdd\xfb\xde\x1d\xef\xde\x64\x70\xbf\xac\x5d\x56\ \x99\xdf\x6c\x6b\xae\x7d\xae\x56\xf8\xcf\x3f\xff\xd6\xff\xfc\x9f\ \x53\x00\x45\xc9\x56\x00\x62\x14\x65\x5b\x36\xe0\x2e\x45\xb9\x96\ \x03\x58\xa9\x28\x5f\x7f\x25\x08\x9a\x65\x8a\x72\xa1\x13\xe0\x53\ \x45\xc9\x57\x60\xf9\x5a\x8e\xfc\x3a\x7f\x8e\xbf\xc7\xfb\xe1\xfd\ \xfe\x47\x01\xfe\xd7\x09\x56\x90\x88\x08\x45\x39\x12\x04\x44\x69\ \x14\xe5\xf8\x45\x58\xc6\x6c\x45\xb9\x74\x55\x10\xf4\x9b\x05\x41\ \xea\x25\x08\xc6\x61\x82\xd0\x24\x41\x10\x9c\xfb\x0a\x42\x4d\x96\ \x20\xb8\xcf\x14\x04\xbf\xf5\x82\xe0\x09\xef\xd8\x26\x09\x82\xf7\ \x2d\x41\x78\x92\x09\xf8\x1b\x47\x7e\x9d\x3f\xc7\xdf\xe3\xfd\xf0\ \x7e\xf9\x38\x7c\x5c\x3e\x0f\x3e\xaf\xff\x28\xc0\x3f\x8c\xe8\x54\ \x84\x20\x45\x39\x5b\x0b\xf0\x9c\xa2\x5c\x4d\x86\xe9\x7e\x27\x08\ \x67\xa6\x09\x82\x61\x28\x90\xb5\x43\x10\x5c\xe0\xcf\xf1\x03\x41\ \xf0\x81\xeb\x96\xf7\x05\xa1\xfe\x49\x41\xd0\x01\x69\xc1\xd0\xd6\ \xb4\x10\x84\x16\xf0\x27\xaf\x02\x5e\x80\x64\x61\xb5\x20\xb4\x9f\ \x24\x9c\xd4\xdc\x13\x84\x8e\x56\x61\xaf\x62\x15\x84\xce\x36\x8e\ \xfc\x3a\x7f\x8e\xbf\xc7\xfb\xe1\xfd\xf2\x71\xf8\xb8\x7c\x1e\x7c\ \x5e\x7c\x9e\x7c\xde\x7c\x1d\xff\x51\x80\x3f\x4d\xf8\xf7\xa7\x41\ \xe8\x5e\x40\x4a\x29\x58\xda\x73\x01\x58\x01\x0b\x1c\x21\x08\xd5\ \x56\x10\xf6\x9b\x70\xaf\x44\x10\x02\xca\xc0\x22\x77\x01\x31\xf5\ \x85\xba\x8a\xbf\x10\xd7\xd1\xfa\xda\xa7\x74\xb4\xe3\x91\x91\x27\ \x8a\x5f\x3d\x16\x3d\x2f\x2c\x1e\x50\xf4\xe0\xd1\x8e\x5a\xfe\x69\ \x19\x45\x39\x0f\x6f\xd6\xef\x9f\x7e\xa8\x38\xe1\xd1\xad\xc0\x47\ \xfb\x0a\x4b\xb2\xf3\x4e\x36\x92\xbe\xbe\x5f\x32\x2d\x2f\x3f\xe4\ \xfc\xa1\xb0\x92\x35\x79\x9e\x84\x3e\x79\xf1\xc1\xe1\x70\xbd\x41\ \xee\x92\xa0\xd6\xfb\x0a\x8b\xcf\x3d\x4a\xaf\xff\x18\xde\x2b\xc9\ \xdd\x52\x6b\x47\x5a\x46\xc9\xb3\x27\xfb\xbd\xde\x58\x3c\xe0\xf5\ \xb0\xd2\x4c\xc7\x5f\x47\x9e\xe0\xe3\xf2\x79\xf0\x79\xf1\x79\xf2\ \x79\xf3\x75\xf0\x75\xf1\x75\xfe\xdb\x2b\x80\xa2\x10\x78\x42\xec\ \xad\x01\xbc\x29\x08\x9d\x3e\x03\x2b\xdb\x24\x08\xae\x8b\x05\xc1\ \xe9\x8a\x20\x38\x14\x0b\x82\x6f\x01\x3c\x09\x16\x17\xe2\x2b\x34\ \x85\x37\xde\x6a\x6f\x28\x6f\x5c\x1c\xef\x6c\x79\xc7\xbb\x70\xde\ \x23\x1f\xbf\xa2\x0d\x47\x0a\x33\x1e\xae\x09\xaa\xb3\x6f\xa8\xe8\ \x6c\xb9\x17\xb2\xf8\xc3\x1a\x97\xb9\xde\xb3\x9b\x7d\x3a\x62\xaa\ \xe7\xcc\x86\xd6\x88\x6d\x9d\xfb\x7b\x9f\x0c\x7b\xa7\x43\x9f\xe0\ \x21\xde\xae\x6d\x13\xa2\x97\x7b\x79\x79\xcd\x8a\x8c\xe8\x71\xc5\ \x69\xa1\xf7\xa1\x4e\x69\xbd\xeb\xea\x74\xde\x6b\x3b\xad\xef\xdd\ \x0c\x70\x4c\xa4\x4b\xf7\xcf\x9c\x16\x7a\x25\xb4\x9d\x18\x15\x0a\ \xcf\x59\xc3\xda\x75\xd0\x07\x0f\xf1\x90\x1b\x9d\x8d\x18\xdd\xb9\ \xbf\xcb\x2c\x1f\xc7\xa6\xcb\x47\x4c\x95\xa6\xd8\x5e\x84\xd4\xff\ \xb0\xa6\x78\x5f\xee\xc6\x86\xed\xf6\x0d\x2d\xee\x9c\x77\xb8\xd6\ \xb1\x0d\x47\xca\xed\x25\x25\x2e\x43\xde\xf1\xe6\xf3\xe4\xf3\xe6\ \xeb\xe0\xeb\xe2\xeb\xe4\xeb\xe6\x72\xf8\xb7\x51\x00\x48\xaa\xb6\ \x01\xc4\x09\xc2\x0f\x8f\x61\xf8\xd6\x82\x60\x9d\x0f\xee\x74\x0a\ \x08\x4a\x07\x96\xd3\x1d\x9e\xd8\x07\x82\x1b\x22\x7d\x6d\x5f\xa3\ \xb9\xd9\xf9\x44\x49\xec\x93\x72\x8f\x09\xef\x9b\x0a\xbe\x7b\xf0\ \xc8\x3f\x6b\xf7\x2d\xf9\xb2\x3d\xaa\xd1\xde\x05\x0b\x3c\x02\xea\ \x7f\x14\xea\xdc\x61\xab\x8f\x77\xeb\x69\x5d\xbe\x77\x5e\xe3\x9e\ \xd5\x61\xdf\x00\x3b\xd8\xdc\x89\xb6\x2b\x47\x82\x2d\x1a\x8e\xb7\ \x0c\x98\xe0\x03\xbd\x3a\x34\x1d\x36\x39\x12\xa3\x76\xc8\x8a\x29\ \x38\xca\x90\x86\x9a\x29\x75\xa0\xbd\x29\x30\x79\xca\x3d\xc2\x98\ \x29\x16\x40\xdf\x86\xdf\x4c\x1d\x0e\xb8\x22\xf8\xd9\xd4\xfb\xf0\ \x5c\xf5\x1b\x77\xa6\xf4\x86\xa8\xdf\x24\x6c\xf1\xc4\x46\x40\x9d\ \xad\xcd\xd3\x91\x10\xfd\xdd\x07\x46\xee\x1b\x50\x0f\x66\x3a\xb2\ \x75\x4d\xe7\xcf\x60\xdc\xb5\xfe\xe3\x42\x3f\xef\xb0\x55\x13\x22\ \x5f\x69\x34\x72\xc1\x82\xa2\x5e\x8f\x1c\x03\x0a\x77\xdf\x7a\x99\ \xff\xb4\xad\x67\xe8\xfb\x26\xbe\x0e\xbe\x2e\xbe\x4e\xbe\x6e\x2e\ \x07\x2e\x97\xff\xb3\x0a\xa0\x28\x1b\xa7\x00\x3c\x11\x84\xc6\xe0\ \x1e\x75\x7b\x40\xa4\x53\xc1\x2a\x1e\x81\x5b\x0c\x14\x84\x06\xa5\ \xc2\x38\xc1\x45\x88\x6c\xbd\xec\xa5\xe6\x69\x6d\xf7\xf8\x44\xa9\ \x28\xfb\x51\xbb\x06\xb9\xe9\x3b\x0d\x15\x86\x36\x8d\x92\x46\xe7\ \xfa\x48\x6f\x4c\x6f\x25\xf9\xb4\xf1\x18\xdb\xee\x68\x9f\x4b\x20\ \xba\x1f\x5a\x2d\x1b\xd9\x01\xc4\x79\xb4\x71\xad\x71\x41\x40\xdc\ \x17\xf5\x5b\x8c\xfa\x1c\xa3\xaf\xdf\xc4\xb8\x72\x40\xad\x97\x67\ \xf7\xdf\xa0\xf7\x59\x6e\x72\x87\x7d\x80\x1a\x97\xab\x11\x69\x18\ \x95\x9d\xa6\x35\xbf\x0a\xf8\x8d\xe3\xaa\x37\xe6\x32\x9c\x44\xd7\ \xa7\x36\xbb\x4a\xcf\x9d\x08\x8f\x05\x8c\x77\x2b\x8b\xc4\xf7\x5e\ \x7b\x0a\xdd\xab\xa0\xbf\xe5\xbe\xcf\xe3\x3c\x61\xe6\x13\xea\xd5\ \x1d\x3d\x00\xc6\x5b\x19\x5c\x35\x6e\x03\x28\xc8\x96\xb0\x75\x23\ \x3a\xc2\x4a\x96\xb4\xf9\xa9\xf7\x31\x41\xf0\x6a\xd1\x4c\xd7\xca\ \xcf\xa7\x8d\xf1\x3b\xa7\x5f\x1b\xed\x1b\x9d\xfb\x32\x3f\x5f\x08\ \x98\x9b\xbe\xb3\x74\xcd\xf3\xc1\x1e\x4e\x89\x12\x5f\x27\x5f\x37\ \x97\x03\x97\x0b\x97\xd3\xbf\x9c\x02\xfc\x75\x17\x7f\xea\x4b\x58\ \x6c\x2b\x41\x08\xfb\x09\xe8\xf2\x85\xff\xee\x09\x62\x1a\x07\x49\ \xd6\x58\xb0\x88\x10\x53\x8b\x0a\x77\x63\xe3\x01\x8b\x9f\x07\xdd\ \x33\xd7\x99\xf0\xe9\x73\x6d\x67\xa1\x5f\x40\x8b\x09\xb7\x7d\x6e\ \x34\xbe\x14\x91\xec\x9e\xed\x1a\xda\xfa\x7c\x9f\xe3\x60\xd1\x3f\ \xb7\x78\x39\xa2\x03\x8a\xc8\x7f\xf1\x50\x20\x4c\x3b\xc7\xfb\x49\ \xcf\xa1\xb8\x61\x73\xdd\x11\x11\x0e\x23\x7d\x62\x8c\x0c\xa4\x3c\ \x5c\x1f\xe2\xd3\x86\x96\xf6\x9b\x6b\x28\x00\xa8\x80\xa3\x13\xe1\ \x2d\x87\x2d\x84\xdf\x38\xbc\xa7\xb6\x75\x9b\x09\x2b\x75\x6a\xfb\ \x13\x87\x89\x6a\xdb\x70\x91\x70\xbc\xa3\x23\xeb\xa7\x01\xeb\x37\ \x98\xc6\x71\x0c\xcc\xc6\xbb\xae\xfd\x23\x3c\xe1\xee\x04\xef\x65\ \x3d\x61\x45\xba\xb7\xea\x2f\x1c\x06\x2b\x75\xf0\x6b\xba\x6f\x38\ \x50\xe8\xdc\x29\x22\xa2\xb7\x01\x56\x9a\xd1\x24\xa6\xe5\x1b\xee\ \xd9\xfa\xcd\xda\x5f\x03\x0a\x26\xdc\x2e\x0c\x7b\xf8\x41\xdd\xef\ \x3e\x7d\x6e\x3a\x5d\xb9\xc8\x98\x38\x60\x31\x97\x03\x97\x0b\x97\ \x13\x97\xdb\x3f\x3b\x44\x68\xff\x29\xdb\x34\x9a\xf0\xe9\x3e\x28\ \x26\xf8\xdb\x0f\xf4\xf5\x82\x3b\x20\x16\xdf\x3d\xc2\x51\x65\xa1\ \x20\x34\xef\xf4\xf2\x97\xe7\x5f\xb9\xfd\x30\xf9\xe7\xca\xd3\x25\ \xf3\xea\xc6\xae\xaa\xe3\x31\xa1\xf6\xae\xc6\x73\x82\xf7\xb8\x9d\ \x09\x6b\x10\x95\x07\x22\xf8\xb9\xc5\xd7\xf1\x9f\x80\x60\xbb\xd7\ \xdf\x1e\x9b\x0e\x13\x6d\xe4\x3e\xb6\xc3\x56\x4c\xa3\x8c\xf7\x1a\ \x8e\xc7\x1d\xb9\x6e\xb3\x67\x36\x11\x75\xde\x30\x8c\x86\x5e\xa6\ \xfd\x86\xcd\x21\x8e\x20\x43\x76\x27\x3c\x2b\x9f\xa6\xab\x15\x72\ \x3a\x61\x8a\x34\x96\x30\x5c\x3e\x43\xe8\x81\x48\xd7\x13\x09\x6f\ \x4a\xeb\xe9\xbd\xc7\xf2\x0d\xc2\x23\x72\x00\x5b\x5c\x0a\xfd\x6f\ \xb2\xe6\xa9\x3a\xae\x71\x2e\xce\x43\xbf\xc7\xf3\x2c\xce\xcb\xf1\ \x72\xd0\x2c\x98\xa7\xb7\x7b\x54\x47\x58\xa9\xae\xaa\xee\xfc\xd8\ \xa5\x14\x82\xb6\xc6\xc7\xc3\x3e\x61\x71\x98\x5b\xd7\x19\x82\xe0\ \xb1\xaa\x4e\xbf\x10\x53\xf0\x9e\xea\xbd\xa5\x43\xea\x5f\x58\x55\ \xe7\xd5\xec\x82\x22\xf7\x39\x93\x7f\xe6\x72\xe1\x72\xe2\x72\xe3\ \x72\xe4\x72\xfd\x97\x55\x80\xff\xa7\xa9\x5f\x79\xa8\xc4\xcb\xe0\ \x90\x8d\x9f\xc1\x7f\x43\xac\xf3\x6b\xac\xa0\x53\xeb\x10\xd6\xf5\ \xc5\xd1\xdc\x97\xde\x91\x8b\x5c\xe4\x04\x4b\x56\x5d\xaf\x49\x77\ \xbd\xa3\x82\x8e\xb5\x18\x66\xec\xed\x34\x25\xd4\xb5\xa7\x09\xf3\ \xe5\xa0\x8a\x01\x60\x71\xba\x37\x3d\x6e\x76\xb0\xc0\xdb\x6f\x1a\ \x23\xfd\x5f\x11\xe1\xbf\xb9\x8c\x24\xc1\xef\x12\x32\x55\x62\xc5\ \x75\x2a\x81\xf6\x03\x84\x8a\xed\xaa\x4a\xac\xed\x01\x61\x84\xbd\ \xb9\x7a\xdf\x46\xef\x09\xe1\xf6\x13\x84\x81\x76\x17\x95\x58\xd6\ \xbe\x69\x2f\x21\x8c\x66\xd7\xc3\xb1\x3f\xea\x77\x3b\xeb\xaf\x33\ \x61\x90\xad\x9e\xfa\xbe\xcd\x99\xdd\x7f\x48\x78\x44\x82\x95\xa2\ \x6f\xd0\x54\xe0\x3c\xb5\x5f\x38\xef\x40\xdb\x35\x36\xf5\x0f\x40\ \xc5\xf5\xb8\xd1\x71\x15\x86\x8e\x06\x3b\x07\x8c\xc6\xdc\xa4\xc5\ \xf6\x9e\x2b\x40\x11\xda\x37\x3a\xd7\xec\xaa\xb1\xb7\x32\xda\xde\ \xa8\x5e\x87\x49\x77\x8b\xf4\xf9\x05\x3e\x89\x8b\x5c\xb8\x9c\xb8\ \xdc\xb8\x1c\xb9\x5c\xb9\x9c\xff\x05\x3d\xc0\xa9\xbd\x30\xc1\x86\ \x82\x50\xab\x1b\x2c\xd3\x00\x4b\xae\x44\x4d\x96\xae\x49\xbb\x34\ \x42\x78\x7e\x81\xf7\xc3\xb9\xbe\x0d\x96\xb7\x72\x68\xa5\x5f\x5d\ \x67\x73\xaf\x49\x1e\x63\x83\x8f\x44\x0c\x14\x82\x0c\x35\x4d\x7b\ \xf7\xf4\x83\xa7\x75\xb5\xcd\xd1\xa9\x30\xa1\xf1\x4e\xd3\x82\x3f\ \xc0\x98\xac\x6f\xe3\xfa\x88\x96\xda\x4d\xce\x50\x09\xb6\x4c\x45\ \x94\x13\xcd\x1f\x51\x7b\x6c\xcd\x97\x84\x89\x35\x05\x84\x19\x35\ \xfb\x08\xb3\x2c\xf3\x08\x0f\x5b\xf6\xab\x04\x5a\x9b\x13\x8e\xb3\ \x9e\x20\xcc\xb4\x75\x22\x0c\xb4\xff\xa2\x12\xc9\x30\xd5\x3e\x8d\ \x70\x83\x8d\x29\x8e\xb5\x1e\xe1\x19\xeb\x65\xc2\x1b\xe6\xaf\x68\ \xfc\x0c\xb3\x99\xda\x49\x35\x73\xd9\xf8\x91\x84\x4b\xcd\xf7\x00\ \x80\x5b\xeb\x7e\x9a\x77\x84\x72\x03\x73\x0c\x5d\xb0\xcb\x41\x58\ \x57\xbc\x53\xb3\x90\xdb\xb0\xce\x8d\xbe\x2b\xa3\x13\xc0\x33\x3c\ \x6f\xdc\xa3\x17\xd0\xeb\xf6\x4b\x48\x7c\xcb\x03\x42\x90\xf1\x5d\ \x87\x39\x75\xcb\x7a\x4d\x2a\xba\x9b\xfb\xb9\x5f\xff\xe5\xad\xb8\ \xdc\xb8\x1c\xb9\x5c\xb9\x9c\xff\x65\x14\x40\x51\x76\x1e\x07\xb8\ \x05\x51\x0f\x73\xeb\xef\x91\x42\xc8\x72\xbd\x95\x77\x94\xa7\x42\ \x87\xe6\xfd\x0a\x2f\xe4\xb6\xf7\x89\x5a\x72\xd0\x68\x31\x7c\x58\ \xdb\x18\x69\x71\xeb\xda\xd0\x2b\x3c\x1d\xb3\xec\x90\xb7\x62\x32\ \x31\xff\xf5\x9a\xdd\xa6\x0a\x05\x65\x78\x51\x6b\x2f\xe0\x78\xcd\ \x2d\x6d\x37\x72\xdc\xd9\xe6\x3b\xe4\x88\xe5\xaa\x5f\x49\xf0\x65\ \x55\x3f\x11\xe6\x55\xbd\x26\x0c\x30\x85\x10\x46\x57\xab\x44\xa4\ \x9b\xf7\x51\x3b\xdf\x5c\xa4\x7a\x00\xeb\x56\x95\x10\xdb\x6a\x95\ \x40\xbb\x4a\x68\xb4\x4a\xb8\x10\x6b\x3f\x45\x98\x20\x8a\xec\xfa\ \x4b\xc2\x7c\x55\x01\x84\x68\xdb\x15\x6a\x0b\x56\x15\xcb\xad\x4d\ \x09\x0f\x9b\xef\xd2\x38\x63\x6b\x3e\x54\xc7\x37\xad\x40\x94\xf2\ \xaa\x82\x19\xfe\xa6\xce\xaf\xaa\x2d\xfa\x17\x39\xc7\x6c\x24\xff\ \x00\xff\x00\xee\x32\x5c\xac\xf5\x33\xac\xfb\xb5\xe7\xe3\x36\x8d\ \x40\x62\xa6\x86\x0d\x63\x92\x41\x7a\x27\x1b\xed\x46\xbb\x77\xbc\ \xe4\xa8\xab\x3d\x32\xd2\x52\x32\x2f\x7f\x85\x6f\xe2\x92\x83\x5c\ \x8e\x5c\xae\x5c\xce\x5c\xee\xff\x4b\x0a\x40\xdb\xb9\x2f\xd5\x6d\ \x4b\x60\x04\x4c\x08\xb6\x35\xe8\x30\x3d\x12\x84\x76\x8a\x0f\x64\ \xb4\x8d\x5f\x6c\xca\x0d\xf7\x5a\x3d\x47\x67\x58\xa0\x1f\xeb\xdb\ \x2f\xf2\x9e\x5b\x97\x80\x25\x2d\x1e\x02\xf1\x9b\x83\xc6\x77\xb6\ \xc3\xc0\xe7\xdc\xcb\x9b\x4f\x45\xe2\xf5\xbe\x6e\x3b\x41\xa7\x3d\ \x95\x38\xdb\x74\x35\x72\xbf\x0e\x26\xc1\xcd\x2c\xa7\x92\x89\x3c\ \xb3\xa2\x1b\x09\x34\xbd\xf2\x13\xa6\x08\xdf\x13\x26\xd6\xac\x54\ \x89\xb5\x4c\x26\xcc\x01\x4b\x25\xb4\x75\x24\x2c\x63\xa1\x20\x10\ \xfb\x25\xcb\x3e\xa0\x12\x0e\xae\x9f\x62\xbd\xcd\x46\x78\xd6\x4a\ \x6d\x21\xd5\xb6\x83\x30\xc9\x7e\x80\xbd\xb7\x88\x85\x00\x67\x1a\ \x2f\xdb\x3a\x82\x8d\xb3\x8d\x30\xdf\xbc\x8a\xae\x0f\xaa\xf9\x94\ \xda\x01\x26\x5f\x55\x41\x5f\x0f\x46\x84\x79\xa7\x12\xa6\x57\x8c\ \xc3\x51\x61\x5d\xad\x61\x9d\x31\x4a\xaa\x6d\x1a\x2a\x84\x6e\x85\ \xeb\x4c\x90\xc3\x37\x6e\x52\xf3\x6d\x48\x69\x60\x62\xe7\x87\x40\ \xef\xfd\x80\x84\xe6\x3f\x82\xad\x6f\x37\x3c\xf7\x0b\x8d\xbc\x57\ \xec\x92\x1f\xea\xbd\x71\x8e\x8e\xcb\x95\xcb\x99\xcb\x9d\xf3\xf0\ \x97\x15\xe0\xaf\xc7\x7a\xff\x30\x78\xfd\x29\x4c\x02\xc4\xe0\x5c\ \x4f\xf8\x54\x86\xdc\x39\xa0\x65\xc9\xb4\x67\xad\xdd\xea\x8c\x72\ \xd1\x6c\x94\x37\x7b\x4f\xec\xf5\xc2\x75\x5d\x7d\xe7\xc6\x70\x47\ \xbf\x37\x20\xad\xdd\xef\x20\x80\xe5\xee\xee\x21\x2b\xd0\x12\x74\ \xb3\x1d\x17\x30\xcb\x8d\xc4\x14\x4d\x1a\x53\x1e\x4e\x16\xf4\xa8\ \x74\x31\x40\xb2\x34\xa8\x3c\x96\xda\x87\x5f\xcf\x46\x94\xc3\xaa\ \x8f\xb2\xe7\x2f\x11\x66\x58\x3a\x32\x42\xa6\x31\xa2\xae\xaa\x04\ \xab\xc4\x09\x1b\x6c\xa3\x54\xe2\xed\x1f\x33\x8b\x5f\xa8\x86\x02\ \x5b\x3d\x96\x1b\x94\x10\x2a\x4c\x51\x62\xd9\xf5\x04\x22\x48\x00\ \xa2\xfa\xa9\x0a\x81\x0a\x44\xd8\x5f\xf5\x14\x36\x2b\xe1\x0d\x6b\ \x5f\xc2\x74\x0b\xad\x43\xce\x32\x6f\x21\x74\x37\xbd\x47\xa8\x7a\ \x84\x08\xa9\x6b\x45\x16\x60\x8c\xf4\xea\xd5\x2b\x54\x37\xb9\x2b\ \x2a\x06\x85\xaa\x61\x28\x07\xed\x26\xc7\xd5\x18\xdd\x5d\xc4\xc6\ \x10\xca\x74\x2b\xfc\xa5\x76\x80\x2e\x23\xeb\x4f\x0f\xd9\x0c\x12\ \x0e\x10\xa6\xf9\x8c\xe9\xf5\xa2\xb4\x71\xc1\x69\xb7\x57\xa3\x5c\ \xb8\x9c\xb9\xdc\x39\x0f\x9c\x97\xff\x01\x0f\xf0\xfb\x64\xb4\x5b\ \xb0\xe5\x50\xd0\xd3\x5a\xb0\x50\xb0\x9b\x5a\x2f\x5e\x3f\x2c\x0b\ \x34\x3c\x8f\x56\xac\xef\x56\x65\x7b\x0a\x09\x1e\x6e\xa5\x7e\xcf\ \x1a\x3c\x10\x82\x1c\x4c\x0d\xba\x84\x07\xe2\x14\x3d\x69\xb3\x23\ \x78\xea\x26\x38\x37\x43\x84\x98\x7c\x5f\xb5\xe8\xd7\xe3\x55\x82\ \xcb\xca\x50\x20\xd2\xd8\xf2\x34\x6a\x9f\x06\x8b\xa1\x58\xcf\x88\ \x4f\xb3\x7c\xc6\x5c\x71\x47\x46\x44\x27\xc2\x64\x44\x22\xf6\xa4\ \x4a\xa4\x9d\x59\xbe\xbd\x84\x3d\xb7\x83\x29\x48\x7f\x46\x7c\x0b\ \x44\x81\x2b\x4c\xb4\xed\x04\xbb\xee\x4c\x18\x64\xef\xc7\x92\xc1\ \x1d\x2c\x34\x5c\x25\x8c\xb3\x9f\x60\x78\x52\x1d\xcf\xce\xc7\xb5\ \x31\x45\xfc\x9a\x29\x44\x11\xa2\x1c\x5b\xfd\x3e\x5b\x1f\x86\xae\ \x65\x40\x7c\x32\x10\x1d\x24\xcd\x2c\x3b\x44\xd7\xa5\xca\x56\x54\ \x14\x4e\xb0\x3a\xc1\xf5\x08\xfd\x5b\x4e\x4e\x28\x27\xf7\xb2\x10\ \x13\x6e\x77\x1b\x3c\x6c\x09\xbb\x11\xd7\x85\x7e\x6d\x1b\x94\x08\ \x41\xb6\x8f\xaa\xd3\xbd\x9c\x12\x3c\xaa\xd6\x96\x1d\x30\x86\x46\ \x2b\x5c\xee\x9c\x07\xce\xcb\x3f\x4d\x01\x68\x1b\x42\x35\xec\xd7\ \x30\x6d\x1d\x44\x61\x3d\xa4\x6e\xee\x67\xe4\x5a\x72\x91\x10\x19\ \xd2\xb6\x62\x77\xe1\x39\xcf\x16\xd3\x17\xb9\xd4\x75\x6f\xe9\xb3\ \xdf\x18\x69\x18\x5a\x77\x44\xd3\xf9\x30\x40\x77\xef\x39\x98\xfc\ \x08\x71\xfa\xb6\xae\x03\x60\xa1\xc9\x9a\x08\x19\x09\xae\x10\x54\ \x8b\x3b\x22\xe7\xd4\x1c\x87\xeb\xe3\xe4\xc4\xaa\x36\xe4\xf2\xe5\ \x6a\x3f\x12\x50\x92\x79\x18\x61\x8a\xb5\x83\x4a\xa8\xf5\x63\x96\ \xdd\x77\x26\x8c\xb1\x8d\x64\x04\x9d\x64\x84\xab\xf7\x63\x98\x0b\ \x8f\x66\x84\x97\x03\xa1\xf4\x1e\xb3\x74\xc5\xf6\x23\xc3\x2b\x0c\ \xaf\x32\x3c\xc1\xc6\xe1\x0a\xd1\x89\xbd\x37\x8a\x29\xd0\x1a\x86\ \x3b\x98\x02\x9d\x64\x9e\x85\x85\x0a\xd6\xbf\x07\xeb\x67\xbd\x65\ \x0a\xe1\x20\x73\x2f\x35\x27\xa8\x6e\x4c\x8a\x10\x4b\x21\xec\x31\ \x24\xad\xbd\x09\x03\x49\x81\x96\x09\xad\x94\x70\xda\x56\x3e\x77\ \x73\xc3\x42\x96\xe7\xae\xc6\x10\x5a\xf4\x3d\xea\x4e\x6d\x02\x1e\ \xcf\xe5\xa6\xfb\x14\xdf\x19\xc6\xc8\xd7\x01\x25\x2f\x3d\xdf\x9c\ \xbe\x86\xcb\x9d\xf3\xc0\x79\xe1\x3c\xfd\x13\x3c\xc0\xd3\x9b\x58\ \x24\x11\x04\xd3\x10\x2a\x61\x2e\x52\x40\xfc\x75\x56\x95\xcc\x7c\ \xf6\x8b\x9b\xc7\xdb\xed\xf4\x9b\xf5\x33\xdc\x4c\xc1\x3e\x8e\x53\ \x7d\x9f\x07\x5c\x87\xa9\xfc\xe6\x37\x24\x58\x07\x6f\x6c\x30\xd6\ \xf6\x7a\x0c\xb8\x4b\xbb\x5b\x1f\x42\xc9\x50\xa5\x6e\x36\x4e\x51\ \x53\xa9\x45\x8c\xd3\x24\x0b\x09\x54\x15\x1f\x27\xae\x05\x3c\x8b\ \x16\xce\x5c\xec\x54\xc2\x58\x24\x84\x88\x9e\x4e\x18\xce\x88\xf1\ \x60\xed\x40\x9e\xd5\x73\x0b\xb7\xaa\x84\x7a\x02\x21\x44\x94\x55\ \x55\x94\x7c\xeb\x6a\x76\x5f\x7d\x5e\xb1\x3a\x33\xec\xc8\xae\xd7\ \x65\x49\xe0\x42\xd6\xdf\x54\xa6\x18\xdb\x59\x9b\xf5\xc7\x43\x88\ \x7d\x14\xbb\xdf\x8f\xcd\x4b\x1d\x27\x8e\xcd\x27\x16\x15\x8b\x72\ \x87\xe6\x44\x74\x39\x5a\xba\x90\xa5\x84\x8b\xa3\x89\xa2\x08\x65\ \x3d\xc9\xc1\x4b\xfb\x2d\xe0\x38\x8d\x46\xf7\x01\xc8\xe9\x9c\xf6\ \x96\x03\x86\xca\x4c\xc3\x0b\xaf\xf1\x40\xd0\x07\xbe\x6f\x85\x6c\ \xc2\x8a\xa3\xdf\x1e\x7f\x09\xec\x7d\x94\xbe\x99\xfb\x67\xc1\xba\ \xd2\xf6\x05\x13\xdc\xf3\xdf\x6e\xc7\x79\xe0\xbc\x70\x9e\xfe\x61\ \x0a\xa0\x28\x29\x4c\xa3\x1e\xfa\x02\xad\x40\xa9\x01\x68\x72\xbb\ \x61\x8d\xb1\x7d\xab\xf9\xa6\xc9\x50\xcb\x7b\x55\x76\xd7\x5b\x43\ \x42\x9c\x6d\xee\x01\x3e\x70\x57\xff\x9b\xef\x9e\x80\x41\x58\x52\ \x75\x3e\xe0\x0b\xae\x0f\x68\x6e\x44\x85\x9a\x71\xda\x5d\x86\x95\ \x34\xe4\x60\xc7\xfd\xe8\xf2\xb4\xde\x4e\x3f\x02\x7a\x6a\x5a\xe9\ \x1b\x63\x4a\x06\x2a\x90\x81\x34\x0b\xb1\x64\xb1\xd1\x4a\x0c\xc5\ \xe8\x4c\xc1\x83\x59\x98\x27\x13\xbc\x62\x6b\xce\xd0\x99\x65\xf9\ \xdc\x82\x47\x30\x02\xfb\x12\x96\xa9\x84\xca\x39\x56\x2b\xb5\xf3\ \xac\x57\x98\x22\xfc\x40\xd7\xd3\x2c\x80\xe4\x61\xb6\x32\x17\xce\ \xb3\xfd\x1f\x58\xfb\x3e\x53\x90\x66\x84\xd9\xac\xff\x72\xd6\x7f\ \xa0\x75\xdb\x1f\xe7\x41\x48\x6d\x52\x64\x75\xde\x09\xe0\xe9\x9a\ \xe3\xd3\xa0\x20\xfd\x00\x8f\x08\x99\x12\x84\x00\x92\x0c\xca\x27\ \x4e\xf3\xad\xb1\x37\xc9\xe5\x1d\xc7\x22\x80\x18\x28\x30\xfd\x0c\ \xd7\x1b\x41\x8e\xf4\x11\xca\xd1\x69\xa4\xef\x7b\x58\xf9\xf4\xe9\ \x81\x67\x8d\x4e\xcd\x3c\x32\xbc\x37\x0a\x82\x2d\xd6\x94\xea\xba\ \x7f\x48\x08\xe7\x81\xf3\xc2\x79\xe2\xbc\xfd\x03\x3c\x40\xb7\x16\ \x18\x99\xe1\xd1\x79\x30\x48\x7b\xa1\xbb\x74\x0f\x62\xcf\xde\x57\ \x96\x82\xb7\x5c\x83\xe2\x63\x8c\xe3\x8c\xb3\x9c\x67\xba\x8f\x35\ \x18\x3c\x92\x6a\x6d\x81\x09\xcf\x76\x5b\xe7\x87\x1a\xfc\x44\x6f\ \x22\xe2\x97\x69\xc7\xeb\xf5\x34\x54\x23\xc7\x8e\x84\xc1\xce\x48\ \xe4\x2c\xcd\x72\x63\x21\x7d\x42\xd1\x4d\x13\xaf\xd6\xd9\xd0\x32\ \x78\x8c\x56\xce\x82\x20\xbf\x06\x4c\x60\x2e\xd2\x43\x29\x27\x0b\ \x8e\x55\xca\xc9\x32\x33\x99\xe5\x3e\x96\xf3\xad\x3c\x3b\xef\xcb\ \x08\x2c\x56\x09\x23\xa4\xdd\x01\x23\x72\xbe\x7a\xdd\xb2\x9a\xdd\ \xff\x91\xb5\xf7\x33\x5c\xa5\xbe\xaf\xde\x97\xf3\x2d\xea\xfd\xc3\ \xd6\x7b\xec\xfd\x62\x66\xd1\x38\x6e\x05\x53\x84\x23\x30\x5e\x27\ \xca\xf2\xcb\x6d\x18\x82\x02\x15\x05\x3d\x88\x02\x61\x1a\xfb\x57\ \x32\x71\xde\x2c\x94\x94\x10\x26\x88\x6b\xd1\x00\xf0\x0f\x3d\xa2\ \xb6\x95\x61\x28\xc9\xe5\x57\x67\x92\x8f\x6e\xb0\x93\x13\x79\x84\ \xe5\x0e\x73\xa9\x50\xad\x43\xbb\xd6\x7e\xe2\xe6\xe6\xf7\x36\x78\ \x80\x15\x9e\x19\xb5\x6a\xc0\x23\x64\x1a\x8f\xbb\x6c\x71\x1f\x5b\ \x2e\x16\xba\xba\xd5\x8a\x8f\xe1\xbc\x70\x9e\x38\x6f\xff\x00\x05\ \x70\xf8\x02\x23\x12\xd6\xe4\x20\x12\x9d\xb4\xbf\x10\x77\x0b\x6f\ \x07\x94\xd9\x72\xaa\x1f\x38\xaf\xed\x33\xc5\xf1\xb8\x73\x27\xb7\ \x6b\x30\xed\x6f\xdd\x07\xfa\x6c\x42\x8d\x35\xde\x35\x4e\x46\xd7\ \xaf\x49\x56\xca\x91\x20\xcd\x13\xed\x6b\xd2\xf8\x6e\x0e\x7e\x84\ \x82\x7e\x0f\x6d\x5c\x72\xe4\x96\x8c\x88\x6d\xaa\x45\x9a\x2f\x11\ \x66\x59\x0a\xff\x90\x65\xe7\xa3\x25\x2a\x15\xd0\xae\x8b\x16\xa4\ \xe4\x58\xac\xa4\x18\x0a\x5e\xb7\xce\xb7\x4e\xa9\x6e\x0b\x72\x8c\ \xdf\x72\xec\x08\xa4\x40\x13\x37\x4f\x9b\xb6\x01\x1c\xe0\x6f\x9b\ \x7e\xbb\xfd\xe0\x6b\x14\x24\xec\x16\xd0\x82\x33\xe5\x68\x8b\x85\ \xea\x0b\x89\x96\x3a\x88\xca\x19\x8b\x23\x43\x0b\xe1\x7a\x6b\x1d\ \xca\x49\xa2\xa0\x8d\xef\x25\x59\x9a\x62\x3f\xb7\x6f\xdf\xdf\x01\ \xfd\xee\x99\xd6\x3f\x2d\x0e\xc6\x19\xbf\x65\x4b\x56\x0c\x8c\x3b\ \xc5\xb2\xc0\xd4\x0e\x1d\xbd\x0c\x1e\x83\x88\xce\x47\x05\x51\x1e\ \x2b\x39\x2c\x94\x30\xcf\x23\xe7\xb3\x90\x70\xd8\x52\x44\x98\x41\ \x75\x01\x78\xce\x82\xcf\x05\x29\xa9\xd2\x35\x54\x06\xf0\x08\xdd\ \x49\x3e\x5e\x0e\x4d\x48\x6e\x8f\x75\x6d\x30\x14\x68\x36\x08\x11\ \x78\xd5\x70\xd4\xd8\x1b\xf0\x5b\xb7\x44\xac\x06\x18\xdf\x70\x1e\ \xe9\x0a\xdb\x67\x7b\xed\x9a\x02\x67\xef\x3e\x53\x38\x2f\x9c\x27\ \xce\xdb\x5f\x54\x00\xda\xe7\x1f\x27\x9a\x04\xdb\x1c\x70\xec\xdf\ \x09\x23\x94\x2f\xc1\x0c\xd3\xca\x6e\x17\x6b\x9c\x3a\x75\xbd\xae\ \xff\x44\xbb\xcf\x78\xce\x7b\x8e\xc3\x24\xe7\x7a\xee\x37\x70\x58\ \xa7\xba\x4e\xab\x71\xc2\xda\x5d\xe2\x0c\x74\xe9\xb0\x70\xd4\xfc\ \x7c\x25\x42\x2c\x65\xc9\xd9\x22\xcc\x82\xe5\x70\xaa\xa0\x55\x48\ \xeb\x2b\x1b\xa2\xa5\x4b\x52\x59\x3a\x09\xea\xf0\x6b\x2d\xab\xa8\ \x75\x60\x8a\xc1\x2d\xee\x1e\xdf\x7f\x33\x57\x3e\x15\x5b\xf2\x18\ \xac\x08\x6e\x7a\x6f\x6b\xdf\xa3\xb0\x3b\xb8\x78\xf1\x4a\x5f\xdc\ \x36\x46\xe5\xc5\x08\xc3\x57\x01\x61\xfa\xa9\x25\x9b\xa0\x20\x53\ \xf0\xfe\x8b\x8b\x2f\xe6\x92\xc2\x94\x9b\xef\xa1\x65\x82\xe0\x57\ \x21\xca\x59\x0c\xb3\x21\x14\x50\xdb\x8c\xed\x58\x45\x81\x36\xbe\ \x57\x50\x08\xb6\xf4\xce\xee\xc9\x3f\x6e\x02\x91\x76\x0d\x8b\xc9\ \x1a\x0e\xf3\xba\xd4\xfb\xea\xa8\xf2\x1c\x41\xd8\x5c\xb0\xb5\xc3\ \x51\x3f\x9a\xc7\x52\xcb\x7c\xb6\xad\x1b\xce\xea\x12\xab\x98\x02\ \x5f\xe1\xa1\x84\x25\xb5\x5b\x09\xcf\x54\x3d\xa3\x6d\x6f\xd7\xf2\ \x24\x52\xc8\x31\x15\x98\xbb\x47\xc8\x87\xaa\x7b\xb2\x10\x52\x8f\ \x14\x64\x9c\x14\x8a\x9b\x51\xf0\x80\xcd\x29\x77\x7a\x53\x1a\x08\ \x84\x75\x73\x9c\xe2\x3c\x0d\x93\x43\x97\x45\xee\x63\x00\x9d\x74\ \xc3\x1c\x7b\x7b\xcf\xa9\xf0\x2a\xb9\xe9\x9c\xd5\xf5\x3a\xe7\x89\ \xf3\xc6\x79\xfc\x0b\x1e\xe0\x8d\xd9\x78\x72\x06\xb6\xbd\x18\x5c\ \x4a\x13\x69\xb8\x0c\x95\x77\x5f\x93\xe5\xf6\x6b\xbd\xe3\xe8\x98\ \x64\x87\x3b\x60\xe9\xc3\xe0\xee\x53\xc7\xf9\xce\x25\x48\xbc\xfe\ \x6d\x25\x9c\x92\xb9\x1c\xda\xb6\x85\xcb\x5d\x5f\x7f\x81\x0b\x94\ \xdc\x2a\xc9\xc5\x4b\x33\xca\x96\x02\x78\x8a\x6b\x8a\xd0\x25\xc7\ \x8a\x2d\x9e\x53\x68\x10\x1f\x15\x9a\xe9\x7e\x83\x8a\x64\x44\x39\ \xc1\x5c\x9b\xb9\x64\x47\x86\x23\x98\x67\xa8\x43\x98\x81\x96\x59\ \x79\xa4\x62\x19\x3e\xff\xd5\xe5\xaf\x46\x5c\x80\x0f\xb3\x9a\xad\ \x0e\x4c\xf3\xeb\x89\x5f\xed\xd9\xa7\x97\x95\x01\x4e\x91\x3e\xc7\ \x4a\xdf\xb1\x76\xc7\xe7\x5f\xed\x47\x96\x2d\x5b\x8c\x6a\xe9\xd6\ \x3c\x99\x65\xe7\x6f\x10\x46\xb1\xd2\xee\x52\xcb\x64\x7a\xae\x0c\ \xc7\x3f\xfa\xde\x71\xc7\x2b\x75\xf1\x70\xc7\x76\xc5\x8e\xd5\xf8\ \xf6\xb6\xab\xd8\x6f\x68\x68\x90\xe2\x07\x96\x7f\x70\xf4\x81\x1d\ \x3f\xb5\xa1\x79\x8c\x2b\x4f\x50\x4b\xc6\x30\x3f\xb2\x70\x2b\x21\ \x28\x56\x1f\xa6\x18\x4d\x99\x62\xbf\x40\x94\x06\x56\x76\x43\x14\ \xc5\xe2\x62\xda\x43\xac\x2d\x70\x40\x83\xb0\xaf\x2d\xa4\xf9\x88\ \xa1\xa5\x0d\x00\xb2\x25\xb7\xf2\x0a\xc0\x04\xa9\xe5\xeb\xa7\x80\ \x29\xa0\x20\x0e\x48\xa5\xc3\x4a\x25\x1f\x6d\xdb\x71\xbe\x53\x5f\ \x60\x66\xa5\xe1\x43\x0c\xa5\xd6\x5e\xa6\x11\x4e\x75\x62\x92\x39\ \x4f\x9c\x37\xce\xe3\x5f\x50\x00\x73\x06\x1e\xa5\xc2\x42\xbe\xc5\ \x33\x6b\x6b\x43\x7b\xa9\x30\xb8\xee\x02\xd9\x45\x8c\x32\x1c\x0b\ \x5b\xeb\xe0\x60\xa8\x31\xde\x85\x27\xde\x31\xdc\xd1\x4f\x44\x57\ \xa6\x1d\x8f\x2e\x5b\x89\x13\xd7\x95\x1f\x41\x57\x68\x9f\xf1\xf2\ \x24\x60\xb2\xfd\xc4\x0b\x5c\x78\x8a\x75\xe4\x63\xaa\xbf\x59\xfb\ \xe5\x8e\x26\x5c\x90\xbb\x13\xc7\xb1\x2f\x2a\x54\x5d\x7f\xfa\xeb\ \x46\xea\xa9\x9c\x39\x92\x09\xd0\x91\x6d\xa7\x2c\x6c\x7f\x7d\x8f\ \x11\x05\x16\xf6\x6a\xdd\xab\x57\xe5\x70\x3a\x57\xe2\x52\x78\xec\ \x15\x64\xc7\xe7\x97\x1f\xdf\x7a\x38\x1c\xf8\xf3\xfa\xf2\xe7\xcf\ \xfd\x05\xa1\x3c\xbd\xa8\xe8\x29\x2c\xfb\x77\xc3\xed\x15\x79\xeb\ \x91\x1e\x79\x5d\xcd\xbc\x3f\x86\x1a\xf3\x71\x75\x1c\x56\xda\x4d\ \xa9\xb9\x84\xa3\x48\x33\x6b\x40\x6c\xbf\x3d\xff\x75\x76\x7e\x1a\ \xf4\xb3\xa1\x78\x01\xf6\x73\x24\xfe\xcb\x3b\xd8\xef\xb9\x5b\x3f\ \xf4\xc1\x71\x4a\x0f\x16\xae\x7a\x95\x0b\xf3\x38\xf4\xca\x8d\x55\ \xfc\x92\x60\x5e\x88\xeb\xcd\x97\x99\x42\x14\xb1\x79\xd7\x61\x49\ \xe7\x7c\xc2\x74\xb5\xa4\x6d\x3f\x55\x54\x07\x3d\x81\xad\x38\x3f\ \x05\x43\x9b\x6d\x75\xee\x69\x34\x18\xeb\xc8\xfc\x68\x3a\x99\x68\ \x5e\xf0\x36\x7a\x48\xfb\xa8\x92\x07\x24\xd7\x25\x58\x28\xd3\x2c\ \xd3\xdc\xb4\xd6\x05\x3c\x62\xa8\xa5\x07\x45\xd4\xbf\x6f\xa8\x31\ \xe0\xbc\x7f\xb1\x5f\x34\xf8\x86\xad\xe5\x3c\x71\xde\x38\x8f\x7f\ \x41\x01\x9c\xcb\xe8\x8b\x9d\x75\xf2\x7c\xf8\xef\x91\xa6\x6e\x65\ \xce\xc6\x99\xa1\x2e\xba\x2f\x35\x4b\xf4\x27\x9c\x4e\xe8\xdf\xd2\ \xeb\x71\x5b\xa7\x49\xd5\xfd\x24\x47\x61\xae\xa8\xc4\x9a\x2e\x50\ \x2a\xd7\xa0\xbc\x0c\xd1\x7e\x82\x2c\xfb\xb1\xb5\x38\x3f\x03\xf0\ \x89\xa5\xcf\x7d\x74\x85\x81\xd6\xad\xf7\xa6\x02\xc2\x2e\xfd\xf1\ \x59\xb2\x88\x9d\xa5\xd7\x10\xe5\x96\xd5\x05\x4c\x80\xc3\x99\xa5\ \xaa\x02\x5b\x0a\x96\xca\x3d\x03\x11\x45\x16\x1b\xa4\x04\x4a\x61\ \xa0\xf9\x7d\x6d\xdb\xed\x50\x5f\x28\xba\xf2\xb2\x45\x19\xd4\xd2\ \xef\x34\xb9\x7b\xf9\xc1\x08\xb8\x3e\x55\x3c\xa8\xa0\x23\xdc\x6e\ \x73\x56\x6b\xff\xb2\xbb\xf9\x23\xc2\x28\x44\xb2\xfc\x42\x86\x77\ \xff\x70\xbd\x25\x5e\xb7\x2d\xb4\x95\x60\x32\x67\x5f\x28\x9e\xc6\ \x7e\xee\xec\xbb\x57\x07\xfb\x2d\xec\x53\x32\x12\xc7\xb1\x0c\xb7\ \xd5\x85\x71\x31\xcf\x0e\x17\x1b\xa8\x8a\xca\x0f\x89\xcc\x2a\xe1\ \xb1\x68\xf9\xb4\x9e\xde\xdc\xf3\x50\x3b\x51\x75\xf5\xd2\xf5\x57\ \x83\x48\x4e\x0f\x9f\x74\x23\xb9\xdc\x7f\xb0\x1d\x3d\x90\x75\xeb\ \xfd\xd5\xe8\x49\x2d\xfb\x73\xdd\x00\x37\xd8\x3b\x15\x6c\x01\x4c\ \x13\xbb\x94\xb5\xa4\x5c\x28\xc7\xb4\x99\x4a\xc9\x55\xca\x58\xb0\ \xf3\xe5\x0e\x2b\xf5\x26\xc0\xab\xda\x6a\xbd\xe4\x74\xa2\x3a\xb2\ \xfc\x6b\xe3\xa1\x50\x17\xce\x1b\xe7\xf1\xcf\x2a\x00\x2f\xf8\xc4\ \x80\xe6\x54\xe3\x76\x42\xee\xa2\x9c\x87\xa4\xa2\xbf\xe5\x7b\x93\ \xd1\xa0\x0d\x4b\xd7\xf9\xe8\xda\x68\x27\x60\xc5\x4a\xf7\x93\xf6\ \x3c\xc5\xa6\x56\x94\xa5\x67\xcb\x69\x54\xc0\x89\x90\x06\x54\x1c\ \xa1\x02\x6c\x68\xf1\xc7\x80\x09\xd6\x8f\x9f\xfe\x4a\xd8\x31\x37\ \x1d\x3d\x83\xcd\xf9\x49\x3c\xc5\xfe\xd0\x92\xe6\x24\x90\x75\x55\ \x55\x84\xb1\x64\x91\x24\x48\x46\xf8\x0b\x86\x66\x26\xc0\x4b\xec\ \x14\x10\xb6\x49\x3e\x13\xbd\x34\xba\x67\x58\x32\x75\xcb\x75\x03\ \x17\x5d\x53\x4b\x24\x35\x32\x7d\x60\xa7\x5e\xcd\xf3\xc4\x25\x88\ \x01\xee\x01\x01\x7e\x73\x31\x47\x51\x92\x99\xcb\x4f\xaa\x19\xaa\ \x8e\x57\x63\x20\x8c\xae\xa9\x51\x3d\x4f\x0d\x3e\xf7\x8e\x92\x8a\ \x0a\x11\x18\x1d\x98\x55\xeb\x0e\x28\xd2\x7d\xc9\x9f\xfa\xbd\xad\ \x56\x19\x6a\x7a\xda\x67\x20\x3a\xf6\x75\x29\xc5\x71\x7d\x7a\x78\ \xde\xd2\x7d\xc7\xe6\x7f\x89\x70\xac\xf9\x67\xd5\x53\xd5\xbc\x60\ \xd7\x8d\x4c\x91\xef\xaa\xf3\x67\x9e\x67\xa7\xe9\x2d\x3a\xd4\x16\ \x5f\xd6\x27\xb9\xf4\x7f\xea\x0d\x98\x66\x6d\x9e\x57\x46\x55\x85\ \x05\x4f\xb0\x52\x98\x65\x77\x29\xde\x8a\x72\x15\x5d\xcb\x63\x28\ \x67\x88\x35\x3d\xa7\xed\x63\xa5\xf5\x2a\xe0\x72\x5d\xb0\x76\x19\ \x30\x15\x0c\x38\x1b\xe6\xbb\xbf\xda\x6e\xdc\x16\x96\xce\x79\xe3\ \x3c\x72\x5e\xff\x84\x07\xd8\x8e\xa9\xcb\x78\x78\x69\x32\xfc\x0d\ \x91\xb2\x64\xd0\x77\xd7\x53\x72\xb4\x38\x59\x77\x35\x70\xac\x6e\ \xa3\x6e\x82\xf6\x13\x2c\x3a\x6a\x97\xd3\x31\x2d\x24\x57\xe4\x9a\ \x83\x94\x00\xf2\x00\x82\x34\xb6\xaa\x07\xe1\xe2\xca\x54\xf4\x00\ \xe2\xc9\x97\xd3\x31\xc9\x12\xd7\x96\xe2\xc6\x24\x49\x9c\xc9\x6a\ \xfc\x89\xa6\x21\xa8\xe9\x40\x44\x2d\x12\x08\x17\x4c\xb8\xf9\x18\ \x6b\x33\x8b\xac\x69\xaf\x5e\x67\xc4\x45\xa3\x8b\xf6\x88\x76\xfd\ \x05\x0b\x31\x71\x37\x63\xcf\x76\x82\x18\x1f\x7e\x23\x8c\x4e\xe5\ \xdb\xfd\xde\x7a\x37\x62\x83\x6b\xfe\xfe\x0e\x50\x8a\x1d\xa2\x8f\ \x1f\x1f\x89\x04\xc4\x29\xe9\x8c\x10\xb9\x9a\xd5\xec\xab\xf7\xb2\ \x0a\xdd\x51\x42\xb9\x66\x12\x3d\xb7\x14\xc7\x1b\xba\x65\xf0\xe0\ \x48\x98\x8f\xbf\x7f\xc0\x4e\xec\xa7\x9d\x5f\x1b\x54\x77\x21\xec\ \x4c\x68\x28\xe2\xa0\xd3\xb1\x87\x3b\x4d\xa3\x79\x5c\xb3\xaf\x61\ \x87\x42\x4c\xa1\x58\x05\xd3\x43\x0d\x65\xca\xa0\x1a\xd5\xf2\x13\ \xf8\xfa\x18\x26\xd1\xf3\x37\xa5\xc3\xa6\x76\x80\x19\xd2\xda\xf2\ \x40\x40\x0f\x71\xcd\x4b\x3b\xe5\x04\xd7\x5e\x8e\x42\x14\xd7\x55\ \x78\xd2\xf3\x03\x4d\xdd\x09\xcf\xe0\x7c\x95\x54\x21\xd6\x62\xc1\ \x0a\xaa\x66\xbc\xdc\x12\xeb\x04\x60\x98\xcb\xe1\xee\x77\xe2\x19\ \x9d\x77\xe0\x58\xce\x1b\xe7\x91\xf3\xfa\x27\x14\xa0\x8d\x4e\xcd\ \x1a\xf5\x1a\xf8\x9b\x60\x4f\x94\x3a\x80\x26\x75\x56\x24\x29\x40\ \xb7\xba\xb6\x51\x73\x5e\x13\x8f\x77\x61\x93\x97\x23\x5e\xa3\x02\ \x47\x9a\xd9\x0c\xe8\x21\x1d\xae\x39\x86\x6d\x59\x36\x23\x61\xe1\ \xd2\xd8\x6a\x3f\x6c\x4b\x4b\x4d\xe8\xf2\xd2\xe4\x33\xa6\x89\x94\ \x64\xdd\x00\x8b\x23\x97\x6f\x6e\x4a\x0a\x30\x08\x05\x42\x96\xdd\ \x8b\x1d\xb3\x1a\x18\xf1\x4d\xa8\xcd\x15\x24\x8a\x11\x18\x80\x1e\ \x40\xd3\x4a\x8e\xae\x84\xed\xde\xd2\xae\x0b\xb7\x0d\x03\x82\x7d\ \x7e\xf2\x5f\x12\x9d\x05\xb1\x79\x40\xcd\x5c\x0f\x48\x36\xde\xbf\ \xb8\xd8\x65\x0d\xe8\x7f\x70\x1b\xff\x53\xd6\xe1\x8c\xe8\xf7\x59\ \x3f\x9f\xb2\x90\xc3\x4b\xb4\xed\xd5\xeb\xd5\x2b\x55\x82\xaa\x87\ \xc2\x7b\x73\xfc\xaf\x59\xe0\xfc\x7f\x6e\xfb\x25\xaf\xd6\x00\x11\ \xaf\x06\xd4\x6c\xc1\x7e\x7d\x96\x07\x84\xe1\x38\x4b\xae\x2f\xb0\ \x0e\xdf\x4a\xf3\x88\xc2\x79\x90\x42\xdd\x61\xfd\x00\x92\x42\xd4\ \x30\xe2\xa9\x7f\x25\x80\xad\x23\x91\xd6\xf9\x18\xd6\x3b\x94\x5c\ \x7a\x94\x65\x18\x25\xcb\x79\xb8\x3e\xe5\x2c\x28\xc4\x4a\x94\xa7\ \xbc\x84\xe4\x17\x2d\x0d\xac\xfe\x9d\xe4\xea\x0e\x8a\x89\x72\x5e\ \x52\x8d\xf3\x8f\x95\x93\xc8\xa3\x44\x08\x37\xc5\x53\x78\xaa\xa8\ \x69\x88\xbc\x28\xef\x4a\x6b\x75\x99\xb5\x8d\x9c\x37\xce\x23\xe7\ \xf5\x4f\x28\xc0\x5d\x03\x7d\x75\x23\x60\xae\xa9\x6b\x23\x46\x8b\ \x0b\xf0\x5b\x5b\xe5\x90\xec\xaf\x29\xf0\x8a\xd7\x36\x84\x63\x9c\ \x18\xf5\xc7\x57\xf6\xfa\xa8\xa1\xf2\x75\xb3\x99\xd0\x9d\x26\xf4\ \x58\x5e\x62\x71\xa4\x6d\x60\x00\x79\x86\x9b\xb0\x40\x33\x5d\x97\ \x68\xbb\xf5\x58\x6e\x49\x49\x5d\x05\xbb\x9f\x2d\xbb\x33\x97\x5f\ \x06\xc4\x12\x31\x35\x5b\x18\x41\x73\x59\x5b\xc5\x00\xd6\x76\x67\ \x9e\x40\x36\x41\x3d\xc1\xf3\xac\x3e\xe4\x12\xbc\x9f\x11\x9d\xe1\ \xb1\x05\x04\x73\x6a\xf4\xc5\x95\x45\xf0\xdc\xe0\xf8\x3e\x8e\x2e\ \x2d\x68\xd7\x71\xea\x85\x41\xb5\x48\x14\x28\x79\x80\xa3\x0c\x6f\ \x33\x74\xe0\xd7\x19\x91\xd5\xec\x3d\x08\x19\x6f\x3d\xed\x33\xc5\ \x75\x06\xf4\x7b\xed\xe2\xde\x22\x38\xff\x4f\x1f\x9b\x91\xb7\xe5\ \x67\xb8\x9d\xa1\x6f\x7b\x69\x32\x9b\xc7\x7b\x6c\x5e\xef\x33\x7c\ \x9b\xcd\x9f\x7b\x98\x9e\x4c\x21\xbe\x64\xe3\x7c\x48\xae\x5c\x66\ \xdf\x2f\x28\x66\x55\x4e\x2d\x2d\x45\x24\x27\x77\x0b\xf7\x14\x3f\ \x00\x64\x82\xfc\xea\xe0\x75\x29\x91\xee\x57\xa8\xef\x29\x88\x46\ \x9c\x27\xec\x23\x5a\x50\xf1\x37\x86\x9c\xfc\x01\x39\x58\xab\xf3\ \x8a\xe7\xbc\x71\x1e\x39\xaf\x7f\x42\x01\x5a\xbf\xc7\x34\xe5\x30\ \x56\xef\xec\xdd\x45\xd0\x1e\xe3\x47\x82\x8f\x92\xa8\x29\x34\x1a\ \x85\x4f\xc0\x49\x7a\xc0\xdd\x56\x4a\x86\xf4\x88\x5c\x79\xb9\xfd\ \x80\xba\x8f\xa7\x82\x07\x10\xac\x96\x4e\x01\xf7\xd3\x7e\xbf\xcc\ \xba\x5a\x75\xf5\x96\x2b\xaa\x00\x2c\x53\x48\x00\x79\x64\x99\x47\ \x40\x01\xf6\xd1\xc2\xa2\xab\x55\xc1\xe5\x71\xac\xe9\xc9\x04\xe6\ \xc7\x2c\xbf\x31\x13\x6c\x3b\x26\xe8\x26\x28\x08\xd1\xb5\x68\x04\ \x60\xf8\xcb\xed\x4b\xd3\x00\x95\x17\x4d\xde\xd9\x03\x98\x59\xfd\ \xfb\xe9\x9d\xaa\x62\x99\xd4\xfe\x72\x19\x21\x65\x48\x30\xf5\xcb\ \xf1\x77\x7e\x9d\x3d\xf7\x3d\x6b\x0f\x61\xfd\xbc\xa2\x7e\x7b\x4d\ \x68\x8b\xe3\x94\x1c\x48\x09\xa7\x71\xc5\xa2\xa6\xcc\xb2\x27\x11\ \xb6\x84\xf7\x11\x89\x70\x52\x24\xc3\x1f\xd6\x73\x83\xcd\x3b\x80\ \x14\x25\x43\x0e\x30\x17\xd2\xba\xdd\xac\x1d\xc8\x60\xf2\xe8\x8b\ \xa7\x1c\x25\x80\x15\xc6\xdc\xad\x3f\x10\xd1\x1e\x78\x9d\xe4\x5a\ \xac\xf6\x67\xb3\xa9\xf2\xb6\xf7\x23\x4c\x11\x67\x62\x2e\x26\x44\ \x90\x61\x8e\x10\xb6\x6b\xee\x18\x8d\x9c\x37\xce\x23\xf2\xfa\xe7\ \x3c\x00\x69\x8d\x26\x08\x6e\x29\x80\x8d\xa4\x4f\x15\x2f\xa8\x2a\ \xb5\xd3\xcc\x13\x56\x69\x32\x1c\x7a\x09\x15\x50\x9d\x87\x18\x0e\ \xb8\x41\x49\x21\xcd\x3d\x23\xed\xc4\xb6\xb2\x5e\x5a\x47\x95\x30\ \x45\x5c\xac\xee\xdf\xe9\x9b\xbd\x6c\x25\xc3\x3e\x83\xce\xc1\x03\ \x60\xe2\x64\xf9\xa4\x20\x59\xa0\xe9\xc3\x71\x81\xb0\x70\x27\x12\ \xc8\x2b\xe6\x01\x02\xd8\x6e\xc0\x9d\x11\x93\xc7\x2c\x33\xdd\xb4\ \x82\x59\x5c\x0f\x86\x13\xd9\xfd\xcd\x84\x39\x55\x21\x88\x50\x77\ \x08\x52\x05\x6e\xf2\xa5\xf6\x99\x6a\x76\x3e\x6f\x0a\xe1\x16\xab\ \x22\x12\x43\xc8\xfb\x5b\xc9\x14\x26\x44\x7d\x0f\xc7\xa1\x7e\xda\ \x12\xba\x55\x74\x53\xdb\x55\x3e\x6c\x5c\x7a\x5e\x2a\xc3\x79\xd0\ \xfb\xef\x52\xfb\x30\x22\xdd\xe7\x8a\x74\x91\x30\x9c\xd6\x75\x13\ \xd6\xd5\x98\xe4\x71\x06\x2c\x9c\xea\x0e\x60\x10\x14\x3a\xac\x16\ \x6c\x03\x3e\xa0\xca\xe4\x58\x7b\xa9\x4a\xb4\x34\x80\x42\x46\x3e\ \x2b\x95\x1f\x16\x07\x92\x01\xad\x97\x80\x78\x2a\x71\x8d\xc5\xfb\ \xe0\x2b\xa2\x29\x34\xcf\x12\xd2\x1d\x7a\x71\xde\x38\x8f\x9c\xd7\ \xbf\xbb\x14\x2c\x79\x48\x8d\xe8\x23\xcf\x0a\xf8\x17\x1d\x4e\xbe\ \xf0\x98\x88\xcf\x91\xdd\xe4\x7c\x22\x70\xa9\x92\x4f\xa5\xd6\x0c\ \x74\x41\x98\xff\x2b\x71\xa4\x18\xb1\xca\x52\xc2\x7c\xf6\x55\x6e\ \xba\xec\x4f\xb5\xf3\xa5\xe2\x40\x2a\x9d\x0e\x12\x3f\x27\x85\x88\ \xa2\x8f\x2b\x53\x65\x0f\xd2\xf0\x0a\x08\x05\xc7\x98\x02\x38\xfc\ \x11\x99\x20\xcf\x30\x05\x39\x0c\x04\x93\xc5\x32\xa2\xae\x57\xb7\ \xfd\x03\xd1\xaf\x4c\x8d\xd5\x76\xd5\x05\x42\x99\x3d\x7f\xda\x74\ \x5b\xed\x07\x89\x25\x1c\xc2\xf0\x39\x53\x00\x3d\xeb\x87\xb7\x4d\ \x88\x52\x1e\xeb\xff\xba\xc9\x8f\xdd\xe7\xef\x85\xa8\xc4\x57\xef\ \xf9\x83\xe2\x96\xb1\x79\x06\xb0\xf9\x4b\xe4\xfa\x93\x64\x59\xad\ \x0f\xc0\xba\xbf\xa6\xdc\x28\xc1\x4e\x04\xcb\x09\x62\x03\xf2\x04\ \x49\xd2\x35\x92\x6f\x39\x1a\x16\x45\x7b\x24\xf8\xa6\x90\xa6\x28\ \xe4\x21\xf2\x95\x40\x34\x2c\x90\x7b\x8e\x3a\x0e\x79\xe4\x2c\xf8\ \x37\x96\x7e\x51\x50\x29\x28\x82\x27\xe7\xed\x2f\x94\x82\x6b\x7a\ \xa1\x1d\x43\xc7\x1a\xc0\x3c\x65\x90\x02\x7a\x26\x49\x8a\x08\xb1\ \xbf\x8b\xd8\x5f\x51\xa0\xde\x97\x0a\x77\xf0\x54\x3f\x90\x34\x31\ \x57\x89\x21\x8d\x76\x17\xe0\x2d\xa4\x58\x33\x4e\x9d\xb0\x00\x08\ \xa7\x5f\x19\x42\x04\x79\x88\x54\x25\x4b\x3d\x0e\xc5\x85\x3c\xdb\ \x54\xe0\x20\x1e\x82\xc2\xca\xb9\xcb\x4d\xd1\x33\x58\x16\x58\x8a\ \xc8\x63\xa4\x28\x63\xd5\xe3\x5f\xca\x15\x88\x38\x16\x3b\x29\x29\ \x24\x01\xcf\x65\x96\x3b\x89\xb0\x1c\x92\x2e\x22\x08\x2d\x9b\x08\ \xfb\x94\x59\xe0\x10\x46\x04\x5d\x97\x38\x51\x44\x34\x29\x82\x89\ \x2b\x04\xc3\x2a\x76\xbf\x31\xeb\xe7\x5d\x46\xf8\x10\xee\x39\x98\ \x2b\xdf\xc3\xc6\x5f\xc9\xfa\x67\xf3\xc2\x79\x92\x8b\x2f\x60\x38\ \x8f\xad\x43\xb5\xf4\x70\x3c\x1b\xb0\xd7\xb7\x8f\x14\xa1\x7e\x71\ \xc5\xf1\x7a\x22\x7e\x67\x70\xbf\x5f\x6e\xae\x58\x4a\x72\x09\x24\ \x43\x12\x40\x6e\x99\x74\x0a\x9a\x4a\xf6\xfa\x18\xf2\xfd\x78\x34\ \x34\x90\xe4\x78\x92\x77\x96\x50\x81\x28\x1d\x52\xa8\x60\x04\x1e\ \x20\x1c\xb0\x5c\x89\x50\x92\xa9\xfc\xf3\x4c\x69\x05\x3c\x31\xde\ \x38\x8f\x9c\xd7\x3f\xa1\x00\x37\xd6\xe2\x74\xe1\x6f\x30\x0a\x51\ \xbb\x4f\x0b\xc9\x84\xb5\x99\xe2\x2c\xd8\x95\x2b\xd6\x13\x4a\x36\ \x0c\x95\x4c\x35\xf3\xb1\x0a\x3e\x95\x25\x2d\x25\xc2\xd3\x24\x37\ \x95\x68\x20\x7c\x19\x2d\x28\x95\x50\x50\xc6\x69\x3e\xa1\x1e\x13\ \x34\xdf\xd0\x61\x4e\x9c\x06\x0a\x40\x3f\x4d\xb8\xba\x48\x02\x97\ \xb6\xca\xf2\xd9\x64\x4c\x1a\x9f\x2e\x7b\xde\x56\x6e\x49\xfe\xc3\ \x43\x39\x4c\x2e\x30\xc8\x6e\x67\x1f\x74\x2c\x22\x5c\xcf\x3e\xfd\ \x4a\x64\x87\x2c\x89\xd6\x05\x84\x51\xac\x04\xeb\xce\x14\xa6\xcc\ \x5c\x8b\x11\x52\xc8\x14\xe8\x0d\x86\x46\x96\x6c\x0e\x63\xed\x17\ \x0c\x6b\x54\x57\x5e\x13\xc9\xdb\x0c\x9b\xb0\xed\xdc\x25\xd6\xef\ \x5d\xb5\x5f\x66\xc1\x01\x96\xa6\x6c\x3e\x7d\x54\xb4\x14\x03\xd0\ \x4e\x9e\x30\xc7\x3e\x92\x14\xdf\x83\x3e\x20\x49\x80\x3c\x1e\x14\ \xbe\xe8\xab\xe2\xed\xf8\x1d\xc0\x07\x9b\x37\x17\x58\xa0\xdf\x33\ \x51\x3f\xdf\x11\x43\xb1\xe0\x83\xf2\x21\xc2\x63\x84\x5d\xe8\x09\ \xc0\xcf\x6e\x20\xcb\x4e\xd1\x20\x0a\xa0\x10\xa9\x28\x1f\x39\x5d\ \x13\x87\x72\x94\x97\x92\x42\x6c\x90\x25\x34\x3c\x25\x4b\xb9\x21\ \x24\x00\xbe\x10\x6e\x28\x17\xac\x27\x38\x6f\x9c\x47\xce\xeb\x9f\ \x50\x80\x66\x36\x8c\x2b\xea\xa7\xc7\xd2\x75\xf8\xc8\x08\x52\x14\ \xb3\x51\xbe\x2d\xbc\x2d\xb7\xac\xac\x94\x53\x94\x2c\x1a\x28\x4d\ \x2a\x53\x1d\xbe\xe4\xa6\x69\x85\x9a\x08\x47\x15\xe7\xd4\xaf\x79\ \x35\x99\x64\xf9\x49\x80\x28\x80\x24\x01\x17\x96\x01\x81\x81\x3e\ \xea\x84\xeb\xf0\xdc\x9b\xcb\x3a\x5a\x1d\xaa\xf1\xc7\x51\xf5\xb6\ \xa3\xa3\x5a\x9f\x94\x99\x6c\x29\x42\x9a\xe5\x3c\xcd\x9b\xe8\xf8\ \x40\x11\x92\x28\x84\x84\x83\x80\xe8\x30\x49\x6a\x40\x18\x28\xf6\ \x57\x91\x29\x88\x87\x7d\x9a\x8a\x36\x17\x76\x98\xf2\x50\x2d\xf1\ \xda\x4e\xb0\x73\xfc\x2b\x0c\x7f\x64\x38\x82\x1d\x32\xf5\x65\xd8\ \x91\x5d\xef\xfb\x37\xcf\xef\x27\x3c\xc3\xbe\xf4\x29\x47\xa4\x71\ \x38\x76\x56\x91\xcd\x23\x42\xac\x4f\xa8\x56\x06\x2b\x00\xd1\xb2\ \xa3\xc1\xb2\x13\x31\x33\x91\x3e\x47\x89\xae\x5a\xb0\xdd\x8e\x87\ \x42\xf5\x3e\xae\xdd\x04\xd7\x39\x70\xf1\x9b\xef\x18\x3e\xa4\xdc\ \x29\x8e\xc9\x29\x49\xa3\xd2\x14\x4b\x0a\x91\x09\x06\xb4\x8b\xfa\ \x4b\x11\x10\x53\xe0\xa8\xed\x09\x19\xdc\x75\x2d\xca\x3d\x4f\x3a\ \x2c\xc4\xe0\x66\x13\x42\x70\x34\x60\x16\x1c\x2b\x35\xa8\xac\xe4\ \xbc\x71\x1e\x39\xaf\x7f\x42\x01\xae\x4b\xaa\xa6\x88\x0a\xfc\xed\ \x74\x98\xab\x87\x5c\xd6\xa4\x97\xfd\x34\xbf\x4a\xfd\x4a\x0f\xc8\ \xb2\x1c\xa5\x84\xa3\x1d\xc0\x84\x3c\x71\x42\xa0\x00\xad\x11\xc5\ \x52\xed\x72\x8a\x69\x87\x35\x83\x99\xe5\x9f\x63\x96\x9f\x49\xe7\ \xfb\xb1\x9a\x5b\x64\xd9\xe1\x88\xb5\x57\xf9\x86\x68\x37\x81\x25\ \x74\x4f\x4e\x75\x01\x02\x7f\x0a\xbe\xd6\x40\x84\xdd\xc4\xd4\xed\ \x4b\x33\x30\xfb\x35\xcf\xb3\x5e\x71\x98\x4b\x02\xf4\x50\x14\xa6\ \x08\x5d\x98\xa0\x45\x00\x2c\x99\xbc\x64\x04\x9c\x22\x54\xc4\x5f\ \x18\x2e\x62\x38\x4a\x45\x7b\x0b\x86\xf5\x99\x47\xe1\xed\x2e\x1c\ \xd9\xf5\xce\xac\xed\xca\xaf\xf3\xf7\x18\xae\x55\x91\x8d\xe7\x21\ \x8a\x7c\x7c\xa6\x98\xa5\x8c\x78\x57\x95\x78\xfc\x45\x91\xa5\xaf\ \x6d\x21\xa4\xce\xc2\xb4\x1d\xa9\x0d\xd1\x33\x9c\xd7\xfe\xf2\x12\ \xdf\x5b\x71\x61\xf6\xb7\xf8\x43\x97\xfa\x0f\x6b\x0f\xd3\xfd\x4a\ \xef\x91\x5c\xc0\xea\xa3\x01\xe9\x34\x50\xf5\x04\x42\x8a\x40\x72\ \x54\x92\xb0\xe2\xa7\x24\x4b\x87\xb4\xdd\x08\xfd\x35\xb3\xf1\x84\ \x41\x96\x31\x44\x00\x2f\x2d\x91\x17\x69\x81\xe6\x5d\xa9\x6e\xe9\ \x01\xce\x1b\xe7\x11\x79\xfd\x93\x1e\x60\x52\x24\xea\x21\x74\xb5\ \x0d\xfe\x0e\x3a\x64\x62\x15\xa9\xca\x47\xd6\x6b\x46\xc9\xde\x05\ \x7b\xe5\x33\x40\x7d\x0e\xdc\x19\x23\x97\x91\x27\x88\x93\x72\x35\ \x5e\x38\x21\xf1\x9a\x06\x27\x98\x20\x86\x6a\x67\xe1\x82\xc0\x75\ \xc5\x53\x4c\x8f\xc0\x05\x91\x46\xdf\x54\xdb\xb8\x20\x2c\x71\x68\ \x2a\x40\x11\x7a\xf9\xec\xd6\xc1\xe1\xc8\x1a\x97\x79\x06\xfc\xbf\ \x5b\x38\x5a\x90\x1d\x84\xf5\x81\xb7\xda\x4e\xb7\x57\xe9\x40\x0e\ \xcb\x0a\x2e\x6a\x83\x99\x22\x78\x90\x20\x02\x71\x39\x24\xf8\xcf\ \x19\x11\xd7\x18\x01\x07\xd9\x75\x15\x15\xb8\xff\x47\xe2\x66\x30\ \x1c\xcd\x08\xe7\xc4\xb6\x60\xed\x50\xae\x40\x7f\x83\x07\x19\xee\ \x20\x0c\x12\xff\x66\x5c\xc2\x9b\xd0\x66\xc4\x63\xf2\xfb\xa4\xd1\ \x8b\xa1\x78\x1a\x3f\xf8\xf5\xb4\x12\x5c\xc7\xd1\x26\xd9\xd1\x18\ \xea\xd6\x5d\x5f\xe0\xe8\x03\x6d\x3f\x28\x65\x6b\xbf\xc0\xd8\x0e\ \x84\x93\x45\x83\x3c\x6e\x52\xac\x8f\x21\x79\xa5\x40\x1b\x10\x25\ \xac\x45\x57\x9f\x24\x75\xd5\x6e\xc4\xeb\x20\xe7\xe5\x84\xa3\x51\ \xee\x72\xba\x7c\x06\xd9\x92\x77\xca\x32\xf2\x22\x9f\xd6\x58\xa4\ \x9f\x0a\xf6\x72\xde\x38\x8f\x9c\xd7\xff\xaf\x02\xb0\x9f\x2f\x40\ \x94\x76\x72\xc1\x24\xc2\xa1\x52\x0f\x76\x65\xba\x20\x1a\xf4\x7b\ \xac\xa5\x77\xe6\x49\x33\xe5\x1b\x72\x36\x7e\xc3\x2b\x5f\x57\xf2\ \xb1\xe2\x2d\x85\x69\x91\xd0\x04\x69\xb4\x3e\x98\xec\x73\x07\x4d\ \x30\x43\x8e\x46\x01\x28\x8f\xc1\xf2\xbb\x91\x2b\x23\x0d\x57\xc0\ \x03\xd0\x82\x37\x28\x81\x9a\x4a\xba\x1f\x88\x23\xf6\xd9\xd7\x65\ \xa0\x03\x24\x4f\xf3\x3b\x4c\xef\xd7\x10\x3c\xc8\xad\xf1\x77\xf7\ \xd9\xe0\xd4\xab\xbb\xef\x18\xa9\x12\x62\xe0\xa7\xc7\xf6\xe8\x91\ \x20\x9b\x33\x7c\xb4\x9d\xaf\x86\x08\x79\xa0\x1a\x63\x45\x91\x11\ \xb9\x98\x11\xb5\x86\xe1\x74\x86\xfd\xff\x48\x28\xb3\xf4\x72\xf1\ \x24\xc3\x53\xfc\xf9\xbf\x55\x14\x86\x03\xb8\x42\xf1\xfe\x99\x02\ \x1c\x00\x48\x55\x3c\xa5\x53\x18\x6d\x6d\x57\x15\x98\xe7\xd6\xa9\ \xfb\x86\xa1\x82\xf4\xb8\x30\x66\x66\xe5\x2d\x58\xc7\x37\x77\x8f\ \xe3\x17\x4c\x8b\x3a\xcd\x18\xd0\x08\xda\x3d\x7a\x74\xb4\xea\xab\ \x30\x44\x82\x1c\x34\xaa\xe2\x90\x1c\x52\x85\x70\x40\xb4\xfc\x70\ \x34\x10\x25\x53\x88\xd6\xc6\xab\xbb\x29\x92\x63\xb4\xf8\x8b\xe6\ \x5b\xc2\xfa\x3a\x94\x73\x10\x78\x82\x46\xc0\x90\xbf\x7c\x46\xc9\ \x26\x83\x24\xb4\x4f\xd0\x39\xd9\x3e\xba\x33\x8f\xf3\xc6\x79\xe4\ \xbc\xfe\x1d\xdb\xc0\x1a\x6f\xcc\x78\x0d\xc9\xb8\x97\xac\x2e\xd0\ \xbc\x74\x74\xb4\x8d\xbc\xfd\x85\x78\x4c\x7e\x20\x7f\x67\x2d\x16\ \x4f\x4b\x83\xe4\x34\x4c\x2f\xe4\x31\x44\x6c\xa6\x38\x53\x77\x41\ \x3d\xdf\xd6\x03\x2a\x31\xe2\x5a\xad\x4e\x4d\x5e\xb4\x4f\x51\x83\ \xc1\x13\x78\x21\x61\x6c\xe1\x29\x02\x28\x02\x2d\x50\x21\x01\x40\ \x41\x08\x5d\xfc\xb4\x8e\x23\x8a\xf4\x13\xb0\x94\x3b\xfd\x40\x1b\ \x58\xa8\xe5\xb8\xf5\x3e\xc6\xb6\x0f\x87\x7e\x36\xcc\x0c\x21\xa1\ \x93\x7d\x68\x7b\xdc\x77\x7f\x7e\x6a\xbf\xcd\x36\x0d\x0f\x7f\xaa\ \x0b\x64\x19\xfa\x49\x46\x22\x48\x80\x1e\x2a\xa1\x82\x07\x23\x90\ \x2b\x06\x27\x96\x13\x98\x6f\x6f\xc0\x92\x35\x97\xbf\x79\x6e\x14\ \x57\x08\xe6\x51\xd6\x30\x45\xc3\xfb\x1b\x00\xa1\x9f\xea\xcd\x35\ \x77\xa4\x74\xac\x40\x1e\x6c\x80\xbf\x43\x88\x4e\x18\x71\xdf\xf4\ \x1d\x84\xb4\x0f\x36\x5f\xc0\x24\xb2\x66\xae\xe5\xb2\x02\xdb\xb2\ \x79\x9f\xcd\x1c\xd3\x06\x0e\x7d\x26\xef\x1b\x36\x14\x09\x53\x92\ \x60\x9d\xa4\xb8\xb8\x6e\x4a\x0e\x83\x00\x29\x77\x60\xed\x68\x6d\ \x43\x35\x84\x92\xdc\x52\xe4\xc3\xda\xd6\x78\x17\xe4\xfa\x01\x8e\ \x2f\x8e\xd1\xeb\x71\x6f\x21\x3d\xd2\x76\x43\xdb\x96\xba\x22\x0f\ \xf6\x89\xf2\x67\xd2\xc7\xd6\x62\x8d\x87\x71\x89\x35\xe8\xf6\x17\ \x9c\x37\xce\xe3\x5f\x38\x0e\x76\x1a\x8f\xa9\x9e\xee\xae\x03\xe4\ \xd8\xe6\x48\x17\xd9\xb1\x87\x70\xf0\x69\x77\xeb\x22\xa5\xbf\x7d\ \x65\xee\x29\xe9\xb4\x94\x2b\x43\x6a\x01\x8a\xe0\x26\xa7\xa0\x85\ \x4b\x87\xf4\x9b\xd0\xa2\xa5\x01\x30\x34\x4e\xf8\xa1\x7e\x0e\x2d\ \x60\x29\x2d\xa0\x42\x09\xd4\xee\x26\x45\x08\x44\xe2\x15\x14\x80\ \x86\x2c\x39\x88\x29\x86\x22\x7c\x43\xe7\xe0\xa7\x2a\xc0\x02\x12\ \x6f\x8c\x3a\x20\xc1\xb4\x37\x7a\xaf\x9a\x1f\x0b\xfd\x3b\xf7\x73\ \xda\x66\x2c\x82\x2c\xba\x43\xf1\xd7\x48\xf8\xf2\x4d\x1b\xe2\xb0\ \x80\xd2\x46\xdf\xb7\x1e\xfe\x74\x6c\xc2\x5b\xb3\x36\xa2\xe0\xbf\ \xaa\x93\x95\x82\xc9\xdd\x93\x98\x27\xe7\xd1\x42\xa5\xd1\xa2\xab\ \xd4\x85\x3c\x50\x39\xc5\xe8\xb3\x44\x34\xa1\x78\x92\xe1\x43\x76\ \x1d\x09\x3f\xa2\x3e\x27\xfb\x4b\x07\x31\xf9\x7c\xf6\xe6\xb3\x3d\ \x22\x78\x8c\xac\xf2\xa3\x7b\xb1\xa2\x99\x94\xbd\x68\x2d\x6e\xef\ \xda\x45\xf6\x1f\x85\xae\x3d\x35\x79\x5d\xae\x05\x76\x19\x05\xd5\ \x2f\xe6\xc9\x87\x61\x9e\xcd\x9d\x3a\x1a\xe1\x0c\x61\x73\xdb\x8f\ \xa7\xc5\x82\x47\x98\x11\x3a\xc2\x22\x36\x20\xcb\x7d\x54\xf9\x44\ \x55\x28\x72\xed\x09\x80\x5e\x18\xe3\x01\x35\x38\x3f\xe6\x09\xce\ \x82\x7c\x76\x93\xad\xa6\x68\xdf\x21\xf5\xeb\xac\xdf\xa3\x9e\x1a\ \x82\x5c\xf1\x54\x70\x80\x1e\x14\x4d\x1e\x23\x1e\x92\x33\x30\xba\ \x4b\xa7\xe5\x5c\x30\x94\x3c\xf9\xb2\x2d\x2c\xf7\x14\xe7\x89\xf3\ \xc6\x79\xfc\x0b\x0a\x70\x1f\x36\x2b\xa8\xc3\xd2\x0a\x70\xbc\x0f\ \xdc\x03\x9c\xe1\xd9\xc2\x48\xb3\xbb\xc6\x66\x99\x73\xd9\x22\x8e\ \x16\x07\xe0\xcf\xac\x45\x51\xec\x2a\x75\xc5\x18\x24\x5d\x23\x82\ \x8f\x88\x33\x0d\x06\xd2\xd4\x47\x0e\xc7\x28\x62\x5e\xd3\x3f\x57\ \x2b\x55\xda\xd9\xe4\xda\x3c\xe8\x34\x31\x93\x5c\x3f\x55\x0e\x01\ \x31\x76\x96\x13\x56\x28\x19\x42\x10\x8e\x6c\xed\x8b\x1f\x92\xc4\ \x07\x45\x1d\x7e\x06\x0b\xfe\xb1\xe8\x50\xee\x14\x10\x74\x4c\x5a\ \xc7\x3e\x11\xe7\x40\xd0\x5f\x4b\x4b\x15\x88\x99\xba\x89\x96\x79\ \x0a\x24\xa3\x57\x17\x5e\xb8\x8d\xd9\xf8\x47\x93\x3f\xbc\x83\xa7\ \x88\x71\x9a\xc1\x3f\xe1\xa7\x57\x9d\xd6\x76\xfe\xbc\x12\x44\xf0\ \xf6\xef\x43\xf6\x54\x81\x0b\x4d\x6c\x39\xe3\x14\x56\xfe\x66\x79\ \x25\xba\x63\x61\x68\xf6\xb7\x49\x59\x58\xd8\x49\x2a\x9f\xd1\x05\ \xeb\x06\x6f\xb7\x1f\xf2\x7d\xd5\x6e\x78\x6f\x4d\xe7\x2e\xf8\xc3\ \x8d\x41\x29\x71\x47\xb0\x9f\xd4\x8a\x94\x54\x33\xac\xeb\x4c\xda\ \x89\x6d\xf6\x4e\xf8\x05\x54\x75\x35\xba\x5c\xa7\x13\x30\x0f\x48\ \xad\xa2\xa2\x22\x7b\x85\x41\x6e\x72\xd2\xe5\xf0\xe1\x49\x17\x41\ \xaf\xcb\xbb\x2c\x7e\xea\xa5\xfe\x9a\xa1\x90\xbe\x63\x00\xba\xba\ \x11\xf1\xf9\xb4\xee\x23\x6c\xdd\x37\x51\x0e\x64\x18\x9e\x9a\x8d\ \x6a\x1d\x45\x07\x08\x87\x40\x92\x5e\x8f\x06\x21\x9e\x72\x78\x9f\ \xce\x02\xc6\x18\x7a\x63\xb6\x2f\x85\x6a\x83\x51\xee\xd2\x18\xfc\ \x44\x4c\xea\x0a\x3c\x0c\x02\x3b\xef\xaf\xe9\x6c\xa9\x77\xd9\xc2\ \x79\xe2\xbc\x71\x1e\xff\x6e\x05\xd0\x68\x26\xf7\x55\xb3\x46\xc3\ \x3a\x18\x6e\xa0\xab\x8f\x33\x24\x14\x65\x81\x72\x1f\xc7\x72\xcb\ \xf3\xf3\x1b\xad\x2f\xa4\x64\xf1\xb6\xe9\x7b\xf1\x9a\x78\x0a\x2d\ \xcd\x5e\x2a\xce\x94\xa3\x30\xa2\x4a\xaf\x0c\x58\xb1\xcb\x16\x47\ \x3b\x0d\xa7\x0f\x1e\x5a\x90\x42\x44\x4b\x63\xf4\x3d\x01\x61\x49\ \xba\xef\xd4\x8f\x3a\x35\xb3\x59\x08\x40\x41\x01\x92\xeb\xe3\x8a\ \xf0\x18\xc4\x1b\x8e\xc9\xa5\xb5\xee\x73\x13\x7e\x77\xe1\x9e\x77\ \x02\x04\xff\xc5\xaf\xdb\x4f\x44\x41\x21\x65\x5b\xc7\x0c\xf7\xa5\ \x30\xb3\x76\xdf\xb7\x1a\x1f\x9e\x07\x44\xf4\x95\x97\x20\x11\xce\ \x36\x69\x8c\x92\x09\x78\x40\x0a\xc3\x4d\x8f\xa1\x96\xb5\x03\xe6\ \x2a\x25\xa3\x1e\xad\xc3\xca\xda\x6f\xdd\x2f\xf8\x62\xe5\xf1\x66\ \xe5\xf9\x8d\xf8\xcb\x9f\x9c\xb8\x73\x4f\xf0\x27\x63\xbf\x9e\xbf\ \xb0\x02\x7f\x60\xf2\xb2\xdf\xa3\x31\x58\xd2\x36\xdc\x01\x17\x9e\ \x83\x9f\x57\x4a\xfe\x4a\x2c\x60\x67\x79\x20\xc6\x78\xe7\xa9\x52\ \x22\x8e\xd3\xee\x68\xab\x59\xe1\x20\xda\xcf\xee\x7c\x5e\x7f\xc1\ \x65\x41\xd8\xe3\xbb\xe3\xe3\x4e\xe0\x29\x02\xdc\x5c\xc5\x1f\x3b\ \x91\x02\x8f\x50\x3f\xf5\x82\xca\x49\x1c\x11\x4f\xeb\x52\x32\x71\ \xbd\x2c\x04\xe0\x7a\x63\x01\x67\x91\x47\x4c\xd2\x7d\x4b\xc9\x5f\ \x8e\xbe\x07\x60\xb2\xbd\x3e\xc9\xed\xa6\x38\xc0\x11\x72\x08\x0c\ \x40\x86\xdf\xf1\x90\xdd\x7e\x0d\xb7\x95\xf6\x53\x20\x77\x98\xaf\ \x65\xbe\xe8\x23\xae\x37\x7d\x2f\x4f\x31\xbe\x69\x59\x72\x7e\x23\ \xe7\x89\xf3\xc6\x79\xfc\x6f\x7c\x15\x6c\x1f\x83\x9b\x0c\xc3\x40\ \x3d\x46\xbe\x3d\x3e\xf7\xdd\xbf\x13\xf6\xdf\xbd\xf7\xba\xa5\xf4\ \xbe\xd9\x76\xf9\xb2\x38\xca\x6e\xc3\x98\x2b\x1e\xb4\x1f\xb0\xd9\ \xb0\x40\x2b\xce\xf8\xaf\xf6\xae\x34\x2c\xca\x23\xf9\xcf\x05\xa3\ \xdc\x87\xa0\x01\x05\x11\x85\xa0\x08\x82\x07\x9b\xa8\x51\xa2\x46\ \xa3\x89\x78\xc7\xa8\x59\xa3\x49\xd4\x28\x1e\xa8\x10\x5c\x8f\xf5\ \x4a\x34\x5e\xa0\x39\x30\x2a\x1e\xeb\x8d\x22\xe2\xf1\xf7\x40\x40\ \x10\xf1\x44\x81\x88\x80\xc8\x3d\xc3\x31\x07\xcc\xcd\x0c\x33\xc3\ \x6c\x55\x0d\xfd\x61\xbf\xed\xf3\xfc\x93\x27\xbb\x1b\xe7\xcb\xef\ \x99\x9e\xf7\xed\xb7\xfa\x57\xd5\xd5\xdd\xd5\xd5\xef\xf0\xb6\xa2\ \x9a\x3b\x8e\x76\x0d\xa2\xd3\xf3\xd1\x76\x12\x40\x68\x90\xf0\x01\ \x59\xfa\x25\xc1\xf6\x4e\x43\x28\x26\x85\x5b\x28\x60\x59\x48\x84\ \x58\x0d\x01\x7b\x4a\x28\x10\x16\x66\xcd\xd6\xe5\xd4\x50\xca\xd4\ \x21\x79\x26\x60\x76\x6b\x42\x1a\x34\x6f\xe4\xc8\x90\x7d\x79\xd0\ \x63\x4f\x1c\x4f\x69\x9f\x05\x9e\xe2\x8c\x6d\xe6\xde\xa4\x9f\x61\ \x28\x50\xaf\xbe\xb2\xa4\x14\xf6\xed\xa3\x07\xca\x06\x9a\x21\x53\ \x7e\x1e\xd7\x8f\x0f\x84\xda\xef\x32\x8f\xb4\x24\x02\xae\x37\x17\ \xa0\x42\x1d\x82\x4d\xc9\x96\x51\xf8\xbb\x29\x15\xd1\xe1\x0e\x94\ \x03\xda\x3d\x01\xc3\xd9\x8c\x8a\xef\x48\x40\x57\x1d\x54\x1e\xb4\ \x2e\x08\xe2\x07\x9f\x8d\x5c\xe6\xfd\x05\xb4\xeb\x64\x6e\xc6\xed\ \x9f\xaf\x83\x03\x0b\x4d\x91\xcc\xc8\x03\xf1\x7d\xc3\x36\x3f\x88\ \xc7\x30\x90\xe2\xf8\x35\x11\xcd\x85\x86\xb7\x52\x36\x34\xb8\x5d\ \x17\x6a\x5f\x35\xb6\x8b\x14\x1f\xd9\xa9\xf8\x30\x6b\xbb\x79\x0b\ \x28\x36\xb7\x92\xff\x2b\xa9\xe8\xb2\xcd\xb7\x74\xe0\x6c\x99\xb0\ \x0b\x75\xa0\x8d\xb4\x97\x17\x65\x1e\x68\xf7\x29\x6e\x92\x9b\x64\ \x38\x19\x34\x7e\x64\x7c\x82\x49\xa3\xa6\x65\xed\x12\x5c\x9d\x28\ \x57\x98\x33\xda\x4e\x3c\x7c\xc8\xf4\xc2\xf4\xc4\xf4\xf6\x1b\xa4\ \x85\x67\x97\xa0\xfd\x72\xe3\x2c\xe0\xb8\xdb\x6f\x7b\x6c\x76\x83\ \x45\x95\xe8\x4b\x5d\x2f\xc1\x5e\xdd\x8d\x2b\x5b\xf5\x7e\x46\xa1\ \x51\xa3\x1f\x6f\x94\x1a\xca\x31\x0b\xd6\xb8\xdb\x98\x81\xf9\xf1\ \xe4\x09\x02\x28\x4e\x90\xe5\x30\x82\x02\x17\xd1\xf6\x13\xe9\x64\ \xdd\x86\x2e\x07\x29\xd4\x19\x65\x73\x9d\x2c\x7f\x3e\x7f\x70\xa7\ \x21\x5c\xb1\x8e\xc1\x40\x18\xa5\x81\x13\x8e\xea\xa8\x26\xe2\xe6\ \x83\x47\x48\xa7\x39\x86\xa3\xc1\x80\xe5\x3a\x5d\x49\x00\xc6\xe7\ \x24\x5e\x87\xa0\x27\xf7\xe1\xb9\x86\x9d\x12\xe0\x5c\x60\x49\x9b\ \xe0\x05\xcc\xc6\x03\x6f\x44\x2c\x07\x0a\x2e\x3f\xaf\x2d\x4c\xef\ \x0d\xab\x88\x6b\x79\x63\xce\x7a\x82\x2b\x2f\x3c\xff\xcb\x4f\x43\ \x61\x72\x36\xf3\xe8\xf2\x7d\x30\x87\x59\xbb\xf6\x70\xca\x1e\x18\ \xeb\x37\x99\xcf\xee\xf8\x01\x3c\xd3\x81\xd1\xd9\x21\xa7\x60\x08\ \x48\xdd\x58\x63\xb9\x0e\x0a\x39\x3c\x29\x33\x78\x1d\x6c\x56\x2d\ \xd9\xb9\x2a\x0d\x4f\x31\xf7\xfd\xc9\xe3\xfa\xb9\x73\x38\xad\x92\ \xcc\x39\x62\x46\x17\xaf\x8b\x28\xa5\xed\x59\xf3\x0a\xca\xe6\xdd\ \x0c\x81\x30\x2e\x19\x70\x0b\x05\xc8\x20\x49\x96\x07\x88\x7b\x22\ \xe8\xe1\x48\xf1\xe9\xb4\xbe\x9f\xcf\xf7\xa7\xf2\x1a\x9b\xfb\x74\ \x48\x7d\x44\x97\x32\xe2\xe9\x23\x7b\x2f\xea\x40\x7b\x1d\xa2\x69\ \x6e\x95\x8c\xe7\x06\x4c\x8e\xc6\xf5\x98\xda\x66\x1c\xd0\xfe\x18\ \xcf\x31\xe8\x2b\x8d\xb9\xc6\x0a\xfd\x78\x6d\x17\x7e\x8e\x76\xe8\ \x95\xad\x4c\x2f\x4c\x4f\x4c\x6f\xff\x6f\x03\xe0\x72\xb7\x90\x43\ \x86\xa3\xc9\x32\x5c\x4e\x38\x9c\x16\x7c\x0e\x76\x57\xd4\x6d\xb9\ \x4b\x92\xe5\xca\x63\x89\xf4\x5e\x7b\xbc\x76\x74\x6e\xb8\xf1\x55\ \x7b\x0a\x4e\xbe\x8c\xbb\xf4\xb3\x31\x26\x6e\x0a\x36\xce\x35\x7f\ \x4c\xb1\xea\x10\xfb\xf5\xd6\x4d\x0e\x97\xde\x94\xf9\xb2\xc1\xa1\ \x80\x8e\x70\x3e\xed\xfa\x21\x19\x42\xa2\x6d\x1c\x29\x3c\x41\xb0\ \x86\x42\xcc\x55\x3c\x37\x5a\x5e\xb5\x76\x06\x94\xaa\x21\x62\x46\ \x79\xf7\xd4\x73\x7c\x01\x23\x89\xe8\xbf\x72\xee\x52\x02\x45\xa6\ \x3e\x02\x70\xa5\x3e\xb0\xb2\x00\x7b\x4a\x4b\x48\xda\x68\xf4\x44\ \x8d\xdf\xec\x82\x40\x8b\x60\x88\xac\x60\x53\x14\xdc\x76\xd7\xad\ \xf8\x38\xf4\xec\xc1\x57\x06\x15\x66\x41\xbf\x18\x6e\x7c\x2f\xe4\ \x99\x05\x3c\xc9\xd3\xc8\x05\xc5\xe0\x89\x86\x08\xc2\xfb\xe4\x40\ \xfd\x7d\x7e\xe8\x11\x78\x52\x84\x2f\xa1\x52\xba\x6e\xc6\x00\xcb\ \xde\x86\x97\xdb\x4f\x03\x86\xc8\xf7\x5d\x3c\x82\x43\x57\xdb\xcb\ \x57\x76\xd8\x1e\x73\x26\x65\xfc\x1c\x07\x87\x5c\x4d\x72\x3d\xa7\ \x00\xcd\xdf\xa9\xc7\x53\xee\x1e\xca\x4f\x06\x3d\xd5\xea\x09\x78\ \x6e\xa4\xf8\x44\xc1\x5a\xda\x2b\x71\xb5\xa5\xcd\x21\xb3\xbc\xeb\ \x3a\x8a\xa8\x46\x3b\x64\xd2\xa6\xda\x4a\xe7\xd1\xd4\x71\x2e\xe1\ \xeb\x27\xcd\x77\x8c\x8f\x31\x90\x6b\x3c\xa4\x9f\xa0\xfd\x19\xf0\ \x76\xfb\x63\x8c\x64\x4a\xd2\xda\x8f\x69\xd2\x73\xc3\x41\x0f\xf1\ \xa8\x07\xa6\x17\xa6\x27\xa6\xb7\xdf\xf0\x6c\xa0\xcf\x20\x1c\x89\ \x78\x17\x1c\x77\xe3\xc8\xe3\x15\xef\xae\x81\xfa\x0b\x75\xf1\x82\ \x64\x5d\xc2\xf9\x43\xaa\x50\x83\xbb\x7e\x92\xcc\xbe\xdd\x5b\xff\ \x50\x3b\x94\x04\x3e\xa7\xd9\x8e\x89\x4c\xb0\xf5\x71\x97\x2c\xbd\ \xd5\xb1\x8a\xd0\xd7\xbd\x0f\xc5\xb0\x07\x3a\xfb\x52\xe0\xc8\xdb\ \x7e\x38\x2a\x94\x33\x5f\x18\x48\x0f\x52\x08\xc6\x12\x91\x16\x72\ \x8d\xa1\x40\xec\x7e\xc0\xbb\x80\x0b\x3a\x3d\xc3\x34\xfa\xfd\x39\ \x12\x6b\xf1\x45\xa4\x3d\xb3\x04\x4e\x0c\x11\x58\x65\x96\xe1\x90\ \x61\x72\xd0\x08\xd0\x70\x0c\xe7\x1b\x3c\x00\x43\x75\xc3\x8a\xbf\ \xa0\x4d\xe3\xab\xf9\x9f\x00\x66\x2b\x6b\xb3\x7c\x00\x8f\x29\x63\ \xee\xf4\xa4\xf2\x6d\xf7\xcf\xe0\x75\xda\x80\xe2\x6d\x74\x16\x59\ \x5f\xeb\x47\x59\xb9\xd1\xaa\xa9\xb4\x99\x93\x4c\x21\xde\xf9\xb0\ \xe6\x89\xb1\x1a\x22\x29\x7c\x7e\x47\x36\x19\x68\x0d\x28\x7e\x81\ \x75\xee\x02\x72\xa2\x3c\xd5\x28\xb7\x25\x0a\xdb\x81\x72\x43\xbb\ \x66\x90\xab\x57\x08\x03\x49\xf1\xc1\xf6\xcb\x48\xf1\x72\x67\x67\ \xab\x87\x70\xeb\x43\xf5\x3c\x77\xaa\x44\x83\x33\x1d\x41\x43\x6f\ \xbf\xd0\x16\xaf\x5e\x0b\xd8\x5f\xaf\xc7\x44\x13\xd5\x23\xfd\x2e\ \x7d\x7f\x99\xbd\xf6\x28\xbf\x5c\x37\xec\xfc\x21\xa6\x07\xa6\x17\ \xa6\xa7\xdf\xfc\x70\x28\x05\x12\xc8\xa2\xea\x41\x5d\xe6\xf7\x5c\ \x86\x3b\x5a\xc0\xe2\x4e\xf8\x0c\xf1\x38\xc8\xa9\x7f\x78\x50\xe4\ \x61\x98\xac\xfe\x32\x45\xaa\x2f\x37\x6c\xd2\xb7\x9a\xf7\xb4\xef\ \xd2\xce\x54\xe0\x9b\x79\xd7\xeb\xce\xa8\xa7\xa3\xab\x36\x57\x0a\ \xee\x21\xa1\x9c\x41\x2e\x0a\xea\xd9\x85\x9e\xc3\x00\x20\x11\xc2\ \x6d\x0d\x60\x9a\x69\xa3\x53\x0b\xf5\x7c\x67\xbb\x14\x8a\x24\x4e\ \xb5\xd5\x76\xf6\x18\x54\x24\xba\xce\x03\xa4\x80\x6c\xde\x09\x34\ \x08\x20\x7a\x8b\x75\x3b\x96\x14\x70\x19\x0c\x24\x86\x14\x92\x46\ \xdf\x7d\x2d\xcf\x48\x21\xce\x60\x20\xe4\x7a\xc1\x63\x4c\x21\xc5\ \xbc\xc7\x51\x90\x07\xd9\x64\x59\xd5\x89\xa3\xa9\xde\xc9\x54\x3e\ \x0a\x70\x4a\x67\x8f\xc6\xc9\x29\xde\xbf\x00\x15\xd9\xa9\xe8\xe3\ \xa8\x60\x32\xc4\x2c\xea\xe1\x35\x28\x07\xc5\x21\xb2\xe8\x90\x67\ \x28\xca\x49\x7b\x21\x9b\x05\x1a\xa2\xee\x73\x5b\x5b\x5a\xd6\x29\ \xec\x6e\xd3\xe6\xd9\x48\xa7\x10\xda\x3d\x7d\xe6\xb6\x90\x7e\x4f\ \xf4\x18\x46\x79\x13\x35\xae\x2e\x18\x58\x83\x65\x1e\xbe\x06\x22\ \xa3\xad\x54\xb5\x0d\x9d\xb9\xee\x8c\x12\x54\xaa\x4f\xd3\x4f\xd3\ \xab\xcc\x7b\xea\x95\xfa\x18\xd5\xdd\x14\x29\xe3\x9d\xe9\x81\xe9\ \x85\xe9\xe9\x77\x7c\x3f\xc0\xcc\x60\xa4\x87\x9b\xcd\x05\xf1\xdb\ \x25\x3e\xd7\x7b\x40\xbf\x11\xf5\xb3\x4f\x77\xcc\x32\xb6\xa5\x26\ \xd7\x4e\xd5\xc4\xaa\x96\xe7\x2c\x34\x2c\xd5\x2f\xd1\x7a\x72\x14\ \x86\x77\x34\x3f\x4a\x37\x60\x7a\xb5\x6e\x96\x92\x8b\x99\x7f\x66\ \x27\x5b\xdc\xc6\x75\xe1\x2a\xdd\xa7\xd3\xe9\xd8\x69\x6f\xc5\x93\ \x61\x8c\xf2\xdc\x41\x04\xf9\xb8\x85\x93\x87\x70\x72\xdc\x44\xc4\ \x4d\xa1\xa1\x02\x56\x76\xb6\x42\x5a\x46\x1e\x17\xcc\x20\x83\xf0\ \xe5\xfb\x13\xe1\xd9\x7c\x24\x32\x11\x14\x95\x4b\x0a\x49\x23\x03\ \xe1\x90\xc2\xac\x8a\x5a\x08\x48\x06\x63\x35\x14\x40\xf4\x20\xd9\ \xe8\x39\x08\x23\xb1\xde\xce\x72\x76\x5d\x0d\xdc\x17\xc3\x0c\x0c\ \x40\x01\xf5\xd2\xf2\x15\x9e\x53\x0c\x08\x06\xc1\x9b\x86\x86\x06\ \x72\x8c\x01\x4c\xb0\x24\x0a\x86\xe0\xf3\x40\x4e\x4f\x3a\xda\x75\ \x99\xe4\x86\xc8\xa7\xe3\x3e\x1a\xdb\x3f\x73\x9b\x46\xcf\x71\xf6\ \xfc\x84\xba\x94\xdb\x5b\xdf\x13\xba\x76\xc3\xa1\xcf\x62\x2e\xb0\ \x45\x17\xef\xa0\xf3\xc4\xf7\x25\x18\x26\xaa\x7f\x90\xad\x07\x86\ \xbf\x6e\x5b\x0c\x09\x24\x8a\x9a\x31\x9a\xef\x54\xd5\x39\x0b\xed\ \x3e\x75\x9c\x6d\xac\x48\x4d\x65\xbc\x33\x3d\x30\xbd\xfc\xce\x2f\ \x88\x60\x9e\x80\xfa\x8a\x0c\x67\x99\x5d\x6f\x43\x8f\xe1\x68\xfb\ \x05\xce\xf1\x85\x45\xdd\x8b\x3c\xdd\x8f\xfc\xfd\x6d\x43\x8f\xdc\ \x11\xbb\xaa\xa3\x34\xbb\xcb\xba\x18\xba\x6a\x63\x95\x85\x60\xc1\ \xb7\x94\x53\x1b\xcf\x82\xa8\x87\xb5\x1e\x2d\x55\x14\xc9\xea\x25\ \xe8\x4b\x22\xec\xef\xd6\x0d\x73\x55\x78\x27\x7b\x0e\xc7\x9a\xb9\ \x91\xde\x34\x69\xb4\x58\x7a\xa0\x41\x40\x9e\x81\xfb\x3d\x40\xd8\ \x14\x71\xde\x44\xbf\xdf\xb5\xdf\x0d\x48\x07\xcf\xc9\x43\x70\x6c\ \x62\x01\x57\x5a\xe6\x0b\x34\xa4\x90\x51\xfc\xb5\xd6\x1e\xcc\x57\ \x53\x8f\x7e\x0e\x8a\x42\xcf\x92\xc5\xe6\x16\xbc\x62\xc2\x6c\x7e\ \x78\x27\xbe\x4f\x58\xcd\xab\x23\x7c\x46\xd7\x45\xc1\xf7\xe9\x9d\ \x06\x56\x4f\x9e\x20\x94\xbf\x9d\x96\xaf\x2b\xe9\x39\xe0\xca\x6d\ \x63\x49\x8e\x55\x20\x07\xa2\xd2\xce\x2a\xd7\x14\xe7\xbf\x93\xdc\ \xc7\xdc\xf9\xd4\x8e\xd6\x1e\x49\x56\xe6\xbc\x83\xf1\x57\xfe\x81\ \x9e\xcb\xe8\x7b\x24\xb6\xdb\x92\x66\x8a\x16\x7c\x45\xbc\x94\x60\ \xde\xbf\xa1\x59\xb5\x15\x79\x32\x3c\xd4\x2d\xc2\xc0\x91\xe8\x7b\ \x75\xb2\x7a\x60\x59\x17\xad\x94\xd7\xae\xab\x3e\x72\x27\x70\xa2\ \xef\x1e\xe0\xf9\x1a\xe3\x9d\xe9\x81\xe9\xe5\x77\x35\x80\x7f\x35\ \x84\x48\x4f\x6b\x6c\x19\x17\x75\xe6\x4c\x8f\x7c\x0f\x3c\x8f\x93\ \x10\xf4\xca\x17\x76\xe5\xf3\x86\x8a\xf2\x0c\x1d\xaa\xee\x3f\xce\ \x68\x8a\x56\xdf\x54\xff\xb5\x7e\xab\x21\x5e\xf3\xa5\x1c\x14\xa8\ \xd7\xb7\x3a\xd7\xa9\xa0\xc1\xb7\x34\xee\xcd\xef\x80\xe8\x1b\x61\ \xeb\xe6\x38\x9d\x2c\x8a\x71\x5b\x0d\xb8\x40\x70\xaa\xd7\x47\xf4\ \x0a\x19\x7f\xdf\x29\x56\xa2\x7c\x8e\xd2\x64\x8a\xf3\xd6\x21\x22\ \x36\xc1\xe3\x2b\x72\x72\x0a\xb7\x5c\x6b\x0f\x72\x6a\x21\x9c\xea\ \xb0\x9b\x30\xbd\xeb\x41\xec\xc1\xdc\xcf\x85\xe3\xc9\xb3\xb8\x08\ \xbf\xa3\x9e\x5e\x68\x7b\x06\x91\x93\x6d\xd3\xcf\x8a\x82\xfb\x0c\ \x59\x39\x5d\x57\x43\xd7\x5d\xb6\x28\x84\x71\x68\x60\xa0\xe0\x59\ \xac\x5e\x3c\xce\xce\x5b\xe0\xb0\x8c\x70\xb5\x93\x13\x51\x9e\x43\ \x72\x14\x5a\x46\x79\xfe\x44\x72\x5a\xde\xba\x6d\xf5\x70\x24\xf7\ \x16\xfe\x3d\xdf\xd1\x80\x31\x82\x6d\xbd\xe6\x51\x79\x18\xb6\xd3\ \xe2\x03\x5b\x50\x2e\xc0\xc3\xbb\x6a\xbe\xe4\x53\xe0\xe5\x6d\xe0\ \xa5\x1e\x30\x5e\xfd\x85\x1c\x3c\x46\xe3\x70\xd5\x54\xb5\x7d\xfd\ \xd6\xfa\xc3\xfa\x50\xd5\xe9\x1f\x67\x30\x5e\x19\xcf\x8c\x77\xa6\ \x87\x3f\xec\x2d\x61\x5c\xee\x07\xd8\x3f\xa3\x78\xbb\xf9\x10\x0e\ \x31\x8d\xe8\xa3\xea\x0e\x6a\x90\x9c\x0f\x2a\xf7\x99\xcb\xa9\xbf\ \xa9\x7f\xad\xd2\xf0\x94\x2f\x0f\x5c\x15\xef\x53\x4e\x52\x69\xc4\ \x63\xf5\x7a\xf5\x36\x69\x34\x04\x29\xe3\x65\x99\x95\x68\xf1\x76\ \x8a\x55\xb5\x0b\xf0\x4e\xfd\x3a\xca\x76\x85\xde\xe3\x70\x91\xde\ \x28\xa2\xf1\x6a\x06\x5c\x65\xd3\xcf\xcf\x0f\x51\xb0\xb6\xef\x60\ \xc0\x41\xfc\x7b\x7e\xab\x89\xf8\x2d\x3e\x3e\xe4\x19\x56\x79\xdb\ \xd3\xf7\xe3\x3d\x0e\x92\x44\xb5\x1e\x36\xe8\x51\xb8\xff\x70\x5f\ \x4d\x4d\xcc\x75\x81\xfa\xb9\xa3\x79\x6e\xce\xce\xd6\x72\x1c\x83\ \xe9\x6d\x45\x2d\x0c\xa9\xfc\x0a\x94\xe3\x75\x3c\x67\x0b\x29\x98\ \xe7\xb2\x85\x4e\xed\x16\xbb\xaf\xa1\xdf\xa7\x42\xbd\xe8\xe2\x7b\ \xf7\x78\x08\x08\x43\x8d\xb7\x37\x51\xd0\xdb\x27\x84\xe4\x5a\xed\ \xb7\x90\xde\xf0\xd1\xaf\xaf\x3b\xe6\xeb\xdb\xd8\x90\xdc\x83\x04\ \x22\x2f\x03\xed\xf3\xdf\xc5\x2c\x7d\xb3\x59\xaf\x6f\x6b\xc3\x93\ \x4b\x8a\x44\x6c\xb7\x7e\x87\x5c\x5e\x89\x27\x9c\x26\xa8\xef\xc9\ \x20\xa0\x26\x56\x29\x8b\x55\x47\xc5\x63\x2b\x8a\xd5\xdd\x15\xb3\ \x0f\x5c\x65\x3c\x32\x5e\x19\xcf\x8c\xf7\xff\xa0\xf7\x04\xbe\x03\ \xea\x02\xf7\xca\x93\xbd\x8f\x63\x52\xe0\x5e\xef\x22\x68\x8e\x4d\ \xe0\x76\x9f\x81\x9c\x29\x69\x09\xe5\x5d\xd5\x1d\xca\x39\x7b\x52\ \x6b\xb6\xb4\x2c\x56\x0c\xa8\x4c\xd5\x97\xa9\xc2\xa5\x15\x60\x08\ \x0d\xd2\xb9\xaf\xd6\x03\x11\x4d\x52\xfb\x32\x88\x1c\x1a\x2f\xa8\ \xae\x34\x7f\x8d\x9b\x4c\xa6\xd7\x14\x48\xa9\xe1\xe5\xba\xf1\xb0\ \xff\xd9\xce\xec\xb5\x11\xf0\x84\x6d\x40\xdf\x7a\xc0\x44\x5b\xcf\ \xc0\xb3\xe8\x80\x6d\xba\x05\x7c\x83\x8a\x12\xfc\xd0\x4f\x43\x4d\ \x52\xfa\xdf\x23\x0f\xe0\xea\x97\x6e\x35\x08\x5f\x27\xf4\x04\xdc\ \xfd\xbd\xf6\x52\x79\x6d\xaf\x54\x2a\x2f\xea\xd9\x93\xb0\x16\x10\ \xcb\x95\x50\x8e\xd7\x9d\xe8\x95\x8c\x8a\xe6\x2a\xe1\x3e\x7c\x7e\ \x98\x5f\x0e\xfe\xce\x2b\xf6\xff\x15\x0d\x81\xbf\xb6\xaf\x88\x14\ \xac\x0d\xf8\x00\x10\x5e\x51\x1b\x98\xd4\x29\x97\x1a\x30\xc7\x66\ \x1c\xde\xcf\x71\xe1\xed\xc7\x63\xdc\x90\xf9\x78\x11\xe7\x1a\xc6\ \x27\xea\x93\xcd\xe5\xd4\xce\xe8\x72\x3c\xb1\xd7\x24\xdd\x5d\x71\ \x18\xf0\x9c\x7a\x8c\x14\x0c\xb8\x5a\xda\xe2\xa4\x28\xaf\x4c\x2d\ \xf3\x57\x05\x28\x5a\xf7\xa4\x32\xde\x18\x8f\x8c\x57\xc6\xf3\x7f\ \xdc\x8b\x22\x69\x04\xa2\x31\x68\xb6\x12\x4f\xc8\x0a\x67\x0a\xf7\ \xe1\x26\xe9\xc0\xd8\xde\xb0\x23\x20\xd2\x84\x4c\xf3\x0b\xe6\x88\ \x2e\xfb\x56\xb7\x69\x3d\xd4\x11\x3b\x6f\x16\xdf\x68\xb6\x6f\xb9\ \xf3\xb8\x5d\xb3\x44\x75\x4b\x7e\xa6\x23\x59\x37\x5e\x16\xfd\x7a\ \x1e\x10\xf2\x5d\x53\x7c\x91\x12\x8f\x38\xc9\x8e\x94\x7f\x08\xb6\ \xbe\x5e\x33\x44\xe6\x80\xab\x08\x93\x03\x25\x98\x58\x78\x75\xae\ \x4a\xc0\x13\x36\x1e\xde\x19\x80\x39\xc2\x07\xfe\x57\x00\x8b\x84\ \x4b\x02\x03\x51\x0e\xe1\xec\xa0\x5f\x50\x11\xc2\xd2\xfe\xef\x92\ \xe1\x0c\xeb\x3f\x80\x14\x74\xbd\xbf\x17\xa2\xcd\xb8\xa0\xf3\x80\ \x5b\x6c\x66\xf6\xff\x94\x70\x1c\x21\x95\xd3\xf5\x2f\xe1\x3a\x44\ \x5b\x40\x7c\x7f\x61\x12\xd5\xc3\xed\xb2\x38\x08\x27\x6d\xb5\xc2\ \x88\xb7\x23\xb0\x5c\xf8\x0d\x1a\x04\xcc\xf5\xf3\x48\x0e\x05\xef\ \x1f\x28\x97\x65\x85\xc9\x84\x72\x1a\x5f\x6b\x66\xca\xa0\x3d\x86\ \x47\xd2\x65\x65\x90\x32\xa6\x2b\x6d\xba\x59\x54\x04\xb8\x43\xb6\ \xa1\x02\x0c\x5e\xf3\xb5\xea\xb0\xfc\x5c\x47\x72\x91\x63\xd3\x67\ \xf2\xaf\x1f\xb7\x57\x05\x6b\x3e\x56\x95\xef\xbc\xc9\x78\x62\xbc\ \x31\x1e\x19\xaf\x8c\xe7\x3f\xcc\x00\xfe\xfd\x49\xe2\x98\x9b\x64\ \x08\x65\x36\xdd\xf1\xa8\x65\xc8\x0b\x7f\x48\xfa\x6e\x10\x0e\x19\ \x11\x08\x63\xd8\xb5\xb1\xea\xdb\xdc\xb0\xb6\x9d\xdf\xce\x7c\xf0\ \xa5\x78\x82\x8c\x7b\xf1\xe3\x66\x55\xcb\x05\x79\xa6\x3a\x5c\xf7\ \x4d\x4b\x55\x2d\x2c\xa3\xb4\xb1\x0d\x71\x85\x89\x40\x58\x92\xd8\ \xe6\xc9\x13\xa0\x20\xbe\xf9\xf6\x0b\x0d\x10\x5b\xa1\x8a\x69\x98\ \x85\x6f\xe1\x33\x34\xeb\x71\xac\xb7\x74\xac\x14\x2e\xa2\x9e\x3a\ \xcd\x75\x35\x79\x84\xfb\x5e\x73\x00\x8b\x6c\x67\xf9\xfa\x02\x2a\ \xbb\x2c\xf6\x2f\x06\xac\xed\x52\x16\x10\x47\xf8\x76\x60\x29\xca\ \x09\x98\xc4\x10\xcb\xbb\x42\x39\xfd\x7e\x03\xae\xc3\xfb\x76\xfa\ \xd7\xe3\x77\xa1\xb5\x9e\xfd\x82\x6f\xbd\x96\xe2\x90\xc3\xef\x03\ \xcf\xa1\x65\xa5\xf0\x67\x5c\x23\x18\x0c\x98\xf4\x69\x6c\x57\x2e\ \x68\x80\xfb\xf4\xbf\x48\x76\xbd\x10\x80\x21\xcf\x02\xb9\x2b\xa0\ \x1d\xf9\x8d\x37\x8a\x72\xe0\xfb\x8d\x96\xaa\x3a\x30\xd4\xe6\xe4\ \x96\xd8\x96\x03\xea\xf0\xfc\xcd\xa2\x1f\xa5\x49\x17\x3f\x56\x8f\ \xe1\x14\xb4\x4d\xfa\x76\x26\xe3\x85\xf1\xc4\x78\x63\x3c\x32\x5e\ \xff\x6b\xde\x16\xce\x2c\x95\xcb\x1d\x0b\xea\x80\x0d\x0e\x55\xe9\ \x63\x68\xd0\x93\xa0\x1b\xbe\xe0\xe8\x65\xf3\x46\xe6\x86\x42\xe3\ \x72\x73\x9d\xdd\x9d\x27\x9b\x3e\xdb\x9d\x91\xbf\xa6\x29\xa9\xe5\ \xd3\x5d\xde\xcf\xeb\x1a\xee\xc9\x86\x17\xd6\x28\xc3\x5a\x27\x4a\ \x4c\xa6\xb9\xba\x9f\xa5\xbb\x5f\x5d\x00\x22\x6d\xc4\x33\x9e\xd8\ \x03\xc6\xd5\xaa\xf2\x4e\x01\xa1\x0f\xc4\x79\x8f\xa0\x66\x83\x41\ \xb2\xb4\x44\x0b\x0a\x90\x2a\x63\x70\xd7\xd0\xb4\x51\x77\xbd\x15\ \x73\xe3\x32\xdb\x1f\x1b\xd6\x51\x16\x7d\x26\x6f\xaa\xf5\x45\x10\ \x14\x79\xcb\xe6\x5c\xb6\xf3\x42\xe4\xa6\x3b\xc8\x10\x19\x5a\x8e\ \x43\x39\xae\xf7\x8f\xe1\x75\x70\xda\x61\x0f\xde\xd7\x51\x60\x78\ \x8c\xb9\x81\xe6\x23\xba\xd3\x78\xa6\xd1\x34\x57\x11\x53\x7f\x0f\ \xfb\xa4\xf4\x6f\x25\x3a\x90\x43\x27\xbe\xff\x08\x0c\x43\x97\x5f\ \xe7\x7e\xff\x3e\xc8\xa7\x15\x9d\x7a\x12\x0d\xdf\x1b\xa4\x17\xd0\ \xc5\x2b\xba\xb5\x06\x37\xcb\x4d\x73\x9f\x7d\x28\x1e\x2b\x6b\x2b\ \x2c\xcc\x3f\xd5\x58\x2e\x17\xec\xb2\x77\x16\x39\xfb\x9a\xc6\xed\ \xce\x60\x3c\x30\x5e\x18\x4f\x8c\x37\xc6\xe3\x7f\xfd\xff\x05\x70\ \xb9\x2b\x0e\x02\xf8\xf2\xf3\x2a\x63\x81\xc6\x8f\x7c\x1c\x9d\x60\ \x0d\xa0\x0a\x1f\x3d\x2c\x54\x03\xcb\x9a\x7e\x43\xa6\x07\xf0\x38\ \xe2\xe3\xbd\x5b\x7a\x9b\x3d\xdb\xba\x6f\x08\xbe\x75\xb2\x3a\x4b\ \xb2\x28\x69\xe7\x73\xa3\xf8\x84\x54\x5e\x26\x94\xcf\x95\x77\x6f\ \x9a\x68\x5c\xaa\x8b\x95\x1a\x5f\x3f\x05\x17\x7a\x5f\x7c\xba\xa0\ \x00\x08\xdf\x5e\x1b\x93\x7b\x15\x70\x68\xf5\xa8\xec\xe7\x40\xbc\ \x6d\x2d\x2f\x47\x09\x8a\x79\x5b\xb4\xfd\x41\x77\x9c\x5d\x37\x06\ \x3c\xb9\x88\xcb\xab\x66\x43\xf1\x34\xc0\xbf\x49\x33\x4a\xc4\x40\ \x71\xbb\x74\x6e\x69\x1b\xe1\xb2\x52\x21\x2b\x07\x2c\x6f\xee\x8a\ \xd7\xe9\xff\xd2\x10\xf1\x54\x0e\xf5\xcc\x16\x5d\xcb\x6f\xc3\xd3\ \xc7\xb5\x6e\x39\xae\xf4\x9c\x95\xd9\x16\x78\xfe\xb7\x35\x27\x72\ \x7f\x85\xef\xd7\xc5\x25\x05\x66\xc0\x33\x52\xfb\x0a\x30\xa4\x96\ \x15\xf2\xae\x4d\xde\xc6\xa5\xcf\x76\x8a\xbc\x24\x0f\xca\x84\xb7\ \xaa\xab\xbc\x25\x82\xa4\x9d\x2d\xe7\xcc\xd7\x74\x15\x1b\x46\x0c\ \xfe\x20\x40\x0b\xed\x1c\xc4\xda\xcd\x78\x60\xbc\x30\x9e\xfe\x47\ \xff\x31\x84\xb6\x99\x17\x5b\xb7\x27\x27\xf4\xc6\x2d\x15\xe7\x9f\ \xdc\x85\x40\xb7\x70\xe8\x59\x7f\x20\xa2\x71\xf6\xb8\x39\x43\x22\ \x61\x60\x8f\xec\xaf\xf7\x73\xe4\xf0\x12\x57\x35\xae\xd7\x17\xe9\ \xbe\x88\xbb\xf1\x7f\x6b\x5e\xdf\x93\x6e\x48\x0c\xcb\x39\x5b\x7d\ \x41\xb2\x39\xff\x65\x65\x68\xe3\x81\x66\x5b\xf9\x08\xc5\x6a\xd9\ \x11\xd1\xcb\x8e\xbd\x5a\x0f\x89\xdd\xab\x76\x50\xc4\x57\x62\xc1\ \xf3\x6a\x50\x90\xa6\x36\x3d\x3f\x0e\x30\xaf\xfa\xf3\x9c\x22\xc0\ \xfa\xaa\xaa\x4c\x47\x40\x51\xe5\xf2\x3b\x77\x00\xbb\x55\xf5\xca\ \xf0\x06\xec\x07\x68\x0f\x28\x80\x72\x19\x62\x55\x47\x66\x2f\x40\ \x71\xf5\xca\xbb\x27\xf0\xfa\xba\xf4\xfc\x24\xc0\xaf\xc4\x1e\xcf\ \x5b\xa1\x7e\x4f\xa9\xd7\x2b\x09\xc4\xde\x0e\xc8\xf7\xe2\x73\x5f\ \x07\x36\x2e\x69\x2e\x93\x8f\xc8\x1d\x5c\xf5\x89\x64\x48\xfe\xcb\ \xeb\xd9\xaf\x07\x49\xdf\x4d\x0c\x6b\x0c\xd1\x27\xe9\x82\xe2\x6e\ \xb0\x76\xb0\x76\xb1\x76\xb2\x76\x33\x1e\x18\x2f\x7f\x8a\xff\x0c\ \xfa\xd7\x21\x62\x84\x1d\x2d\x96\x1c\x1f\x2d\xc3\xfc\x9d\x5e\x7c\ \xbb\xcf\x81\xe6\xfb\xa3\x72\x07\x40\x04\xbf\xae\x78\x82\x39\x02\ \xd4\x91\x55\x15\x2e\x08\x48\xe7\x14\x1c\x70\x33\xd7\xd9\x1c\x31\ \xa8\x63\x4b\x9e\x2a\x9b\xfa\x2b\xa7\xaf\x4b\x49\x3b\x5a\x76\xa6\ \xf9\x6c\xd2\x8e\x0c\xdb\x0a\x73\xd3\xc8\xac\x4b\x05\xbe\xb5\x7b\ \x9a\x3d\x2a\x83\xcb\x83\x1a\xba\x34\x9e\x93\x67\x8a\x44\x4d\xef\ \x8b\x17\xb7\x2d\x92\xad\x93\x04\xd5\x39\x9b\xe7\x29\x16\x4a\x0b\ \x6a\xaa\x2d\x93\xd5\xb3\xa5\xc7\xaa\xeb\x38\xc7\xd4\xe3\xa5\x69\ \x88\xca\xe9\xd2\xcc\x9a\x34\xcb\x64\x79\xbc\xc4\xab\xce\xd7\x3c\ \x4f\x54\xd2\x34\x58\xbc\xa8\x6d\x51\xf9\x40\xb1\xb4\xf1\x17\x79\ \x66\x81\x6d\xed\xd6\xe6\x92\xca\xe0\xdb\x17\x5e\xed\x6d\xf2\xcf\ \xba\x74\xc9\xb1\x74\x5c\xf3\xa2\xa4\x1d\x4f\xbf\x6f\xfa\x55\x19\ \xb6\x2e\xc5\x74\xda\x66\xbe\xa1\x2a\xb6\x84\xc9\xc9\xe4\x66\xed\ \x60\xed\x62\xed\x64\xed\x66\x3c\xfc\xe9\xff\x35\x8c\xcb\xdd\x8c\ \x50\xc3\xe5\x7e\x84\x81\xd5\x56\xe1\x86\xc7\x73\x30\xef\xa5\xb7\ \x77\x0f\x3e\x10\x17\x30\xf6\xed\xf7\x1e\xe1\xe4\x68\xf2\x93\x77\ \xc0\x21\x17\x2c\x1f\xd7\x18\x01\x61\x9b\x94\x5d\x61\xf9\xfd\xa2\ \x39\x85\xdf\xff\x4d\xb8\xcd\x7e\x99\xf1\xcc\x5a\x51\xdd\x4d\x6d\ \xb8\xf6\xd6\x8a\xa8\xa7\xaa\xa6\xaf\x95\x35\x71\x9e\x19\x91\xd5\ \x63\xe5\xc6\x6d\x57\xd3\x9e\x95\x0e\x93\x14\xec\x4b\x48\x91\x94\ \x7c\xdf\xf4\x28\x69\xc2\x99\xdc\xe2\x88\xc6\xb1\xc9\xcb\x01\xbb\ \x23\x9e\x2f\xb7\x96\x5f\x3a\x5a\xea\x21\x49\xdd\x97\x90\xe1\x5c\ \xed\x2f\x97\x6e\xbb\xfa\xf4\x52\xd3\x30\x65\x56\x9c\x67\xdd\x16\ \xad\x11\xeb\x15\x2e\x87\xe7\x24\xae\x15\xb1\xe7\x32\x39\x98\x5c\ \x4c\x4e\x26\x37\x6b\x07\x6b\x17\x6b\xe7\x9f\xfe\x5f\xc3\xfe\x7d\ \x83\x18\x2d\x01\x1c\xc5\xe5\x0e\x4b\xc4\xbd\x45\xf7\xe8\x29\x30\ \xd2\x1b\xde\x0a\xb1\x71\x8d\x80\xb1\xf3\xc0\x84\xab\x21\x37\x60\ \x9d\x2c\x8e\xda\x39\xe6\x07\xc8\xf7\x99\x31\x6d\xd6\xf0\xaf\xa0\ \xe7\xf9\x4c\x8a\x8a\x80\xa9\xd8\x85\xb9\xef\xcf\x1d\x7c\x12\xf2\ \x87\x96\xbe\x23\x1d\x00\x3b\x08\xfb\x7c\xc2\x4f\xf6\xed\x03\x29\ \xa6\x8b\x43\x12\xfb\x86\x41\x66\xa1\x3f\x43\x56\xce\xae\x63\xf7\ \xb1\x7a\x58\xbd\xec\x39\xec\xb9\x4c\x0e\x26\x17\x93\x93\xc9\xcd\ \xda\xf1\xe6\x7f\x03\x7f\xdb\x65\x66\x21\x97\x3b\x05\x48\xc5\xbc\ \xba\x0f\x87\xe3\x7b\x78\x5c\x14\xe3\xd6\x40\x4f\xf3\xee\xb9\xb9\ \xc7\x03\x18\x5b\xcf\x0d\x08\x33\x42\xc0\x44\xbd\xf6\x2f\x13\x87\ \x06\xc1\xd4\x6c\xe5\xd8\xf1\x3e\x33\x61\x11\xb6\x6e\x52\xfc\x7b\ \x0a\xe8\xa1\x0d\x51\x8e\x73\xb4\xb0\xce\x7e\xc1\x90\x95\xb3\xeb\ \xd8\x7d\xac\x1e\x56\x2f\x7b\x0e\x7b\x2e\x93\x83\xc9\xf5\xe6\x9f\ \x43\xff\x70\x03\x89\xa4\xfc\x77\x98\x54\x51\x1e\x11\x97\x3b\x24\ \x0c\x10\x32\x6f\x67\xcd\xc6\x40\x33\x8c\xbd\xf9\x80\x3e\x5c\xae\ \x1f\x17\x37\x51\x18\xb2\x72\x76\x1d\xbb\x8f\xd5\xc3\xea\x7d\xf3\ \xdf\xc1\x6f\x3e\x6f\x0c\xe0\xcd\xe7\x7f\xe7\xf3\x4f\xda\xd9\x47\ \x7f\x10\xe1\xae\x91\x00\x00\x00\x22\x7a\x54\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x00\x78\xda\x2b\x2f\x2f\xd7\xcb\xcc\xcb\ \x2e\x4e\x4e\x2c\x48\xd5\xcb\x2f\x4a\x07\x00\x36\xd8\x06\x58\x10\ \x53\xca\x5c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x09\x61\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x6d\x79\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x65\ \x78\x74\x0a\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x37\ \x35\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\ \x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x36\x0a\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x36\x34\x36\x34\x36\x34\x22\ \x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\ \x68\x3a\x20\x34\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x0a\x20\x20\x20\ \x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\ \x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x6f\x76\x65\x72\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x45\ \x6e\x74\x65\x72\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\x2e\ \x78\x20\x3d\x20\x6d\x79\x52\x65\x63\x74\x2e\x78\x3b\x20\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x63\x75\x73\ \x52\x65\x63\x74\x2e\x79\x20\x3d\x20\x6d\x79\x52\x65\x63\x74\x2e\ \x79\x3b\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x66\x6f\x63\x75\x73\x52\x65\x63\x74\x2e\x74\x65\x78\x74\x20\x3d\ \x20\x6d\x79\x52\x65\x63\x74\x2e\x74\x65\x78\x74\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \ \x00\x00\x11\x18\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x70\x61\x67\x65\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\ \x3a\x20\x33\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\ \x38\x30\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x42\x6c\x61\x63\x6b\x22\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x4d\ \x61\x6b\x65\x20\x61\x20\x62\x61\x6c\x6c\x20\x74\x6f\x20\x62\x6f\ \x75\x6e\x63\x65\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\ \x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x62\x61\x6c\x6c\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x41\x64\x64\x20\x61\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x66\x6f\x72\x20\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\ \x79\x20\x63\x6f\x6f\x72\x64\x69\x6e\x61\x74\x65\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x76\x61\ \x72\x69\x61\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\ \x3a\x20\x22\x72\x69\x67\x68\x74\x22\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x78\x3a\x20\x32\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\ \x20\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x30\x3b\ \x20\x7a\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\ \x6c\x6f\x72\x3a\x20\x22\x4c\x69\x6d\x65\x22\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x4d\x6f\x76\x65\x20\x74\x68\x65\ \x20\x62\x61\x6c\x6c\x20\x74\x6f\x20\x74\x68\x65\x20\x72\x69\x67\ \x68\x74\x20\x61\x6e\x64\x20\x62\x61\x63\x6b\x20\x74\x6f\x20\x74\ \x68\x65\x20\x6c\x65\x66\x74\x20\x72\x65\x70\x65\x61\x74\x65\x64\ \x6c\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\ \x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\ \x6e\x20\x78\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x6f\x3a\x20\x70\x61\ \x67\x65\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x34\x30\x3b\x20\x64\ \x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\x30\x30\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x72\x6f\x70\ \x65\x72\x74\x79\x41\x63\x74\x69\x6f\x6e\x20\x7b\x20\x74\x61\x72\ \x67\x65\x74\x3a\x20\x62\x61\x6c\x6c\x3b\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x3a\x20\x22\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x22\ \x3b\x20\x76\x61\x6c\x75\x65\x3a\x20\x22\x6c\x65\x66\x74\x22\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\ \x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\ \x74\x6f\x3a\x20\x32\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x32\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x50\x72\x6f\x70\x65\x72\x74\x79\x41\x63\x74\ \x69\x6f\x6e\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x62\x61\ \x6c\x6c\x3b\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x3a\x20\x22\x64\ \x69\x72\x65\x63\x74\x69\x6f\x6e\x22\x3b\x20\x76\x61\x6c\x75\x65\ \x3a\x20\x22\x72\x69\x67\x68\x74\x22\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x4d\x61\x6b\x65\x20\x79\x20\x6d\x6f\x76\x65\x20\x77\x69\ \x74\x68\x20\x61\x20\x76\x65\x6c\x6f\x63\x69\x74\x79\x20\x6f\x66\ \x20\x32\x30\x30\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\ \x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\x7b\x20\x53\x70\ \x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x7b\x20\x76\ \x65\x6c\x6f\x63\x69\x74\x79\x3a\x20\x32\x30\x30\x3b\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\ \x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x79\x20\x3d\x20\x70\x61\ \x67\x65\x2e\x68\x65\x69\x67\x68\x74\x2d\x31\x30\x3b\x20\x2f\x2f\ \x20\x73\x74\x61\x72\x74\x20\x74\x68\x65\x20\x62\x61\x6c\x6c\x20\ \x6d\x6f\x74\x69\x6f\x6e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x20\x44\x65\x74\x65\x63\x74\x20\x74\x68\x65\x20\x62\x61\ \x6c\x6c\x20\x68\x69\x74\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x74\ \x6f\x70\x20\x6f\x72\x20\x62\x6f\x74\x74\x6f\x6d\x20\x6f\x66\x20\ \x74\x68\x65\x20\x76\x69\x65\x77\x20\x61\x6e\x64\x20\x62\x6f\x75\ \x6e\x63\x65\x20\x69\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\ \x6e\x59\x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x79\x20\x3c\ \x3d\x20\x30\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\x20\x70\x61\x67\x65\x2e\ \x68\x65\x69\x67\x68\x74\x20\x2d\x20\x32\x30\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\ \x69\x66\x20\x28\x79\x20\x3e\x3d\x20\x70\x61\x67\x65\x2e\x68\x65\ \x69\x67\x68\x74\x20\x2d\x20\x32\x30\x29\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\ \x20\x30\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x50\x6c\x61\x63\x65\x20\ \x62\x61\x74\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x6c\x65\x66\x74\ \x20\x61\x6e\x64\x20\x72\x69\x67\x68\x74\x20\x6f\x66\x20\x74\x68\ \x65\x20\x76\x69\x65\x77\x2c\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x74\x68\x65\x20\x79\x0a\x20\x20\x20\x20\x2f\x2f\x20\x63\ \x6f\x6f\x72\x64\x69\x6e\x61\x74\x65\x73\x20\x6f\x66\x20\x74\x68\ \x65\x20\x62\x61\x6c\x6c\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\ \x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x6c\x65\x66\x74\x42\x61\x74\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\x6d\x65\ \x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\x20\x32\x3b\x20\ \x77\x69\x64\x74\x68\x3a\x20\x32\x30\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x20\x39\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\ \x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x62\x61\x6c\x6c\x2e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\ \x3d\x3d\x20\x27\x6c\x65\x66\x74\x27\x20\x3f\x20\x62\x61\x6c\x6c\ \x2e\x79\x20\x2d\x20\x34\x35\x20\x3a\x20\x70\x61\x67\x65\x2e\x68\ \x65\x69\x67\x68\x74\x2f\x32\x20\x2d\x34\x35\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\ \x20\x79\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\ \x74\x69\x6f\x6e\x7b\x20\x76\x65\x6c\x6f\x63\x69\x74\x79\x3a\x20\ \x33\x30\x30\x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x72\x69\x67\x68\x74\x42\ \x61\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x4c\x69\x6d\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x78\x3a\x20\x70\x61\x67\x65\x2e\x77\x69\x64\x74\x68\x20\x2d\ \x20\x32\x32\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x39\x30\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x79\x3a\x20\x62\x61\x6c\x6c\x2e\x64\x69\x72\x65\x63\ \x74\x69\x6f\x6e\x20\x3d\x3d\x20\x27\x72\x69\x67\x68\x74\x27\x20\ \x3f\x20\x62\x61\x6c\x6c\x2e\x79\x20\x2d\x20\x34\x35\x20\x3a\x20\ \x70\x61\x67\x65\x2e\x68\x65\x69\x67\x68\x74\x2f\x32\x20\x2d\x34\ \x35\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\x7b\x20\x53\x70\x72\x69\x6e\ \x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x7b\x20\x76\x65\x6c\x6f\ \x63\x69\x74\x79\x3a\x20\x33\x30\x30\x20\x7d\x20\x7d\x0a\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x20\ \x72\x65\x73\x74\x2c\x20\x74\x6f\x20\x6d\x61\x6b\x65\x20\x69\x74\ \x20\x6c\x6f\x6f\x6b\x20\x72\x65\x61\x6c\x69\x73\x74\x69\x63\x2c\ \x20\x69\x66\x20\x6e\x65\x69\x74\x68\x65\x72\x20\x65\x76\x65\x72\ \x20\x73\x63\x6f\x72\x65\x73\x2e\x2e\x2e\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x4c\x69\x6d\x65\x22\x3b\x20\x78\x3a\x20\x70\x61\x67\ \x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2d\x38\x30\x3b\x20\x79\x3a\ \x20\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x34\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x36\x30\x20\x7d\x0a\x20\x20\x20\x20\ \x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x42\x6c\x61\x63\x6b\x22\x3b\x20\x78\x3a\x20\x70\ \x61\x67\x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2d\x37\x30\x3b\x20\ \x79\x3a\x20\x31\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x30\x20\x7d\x0a\x20\ \x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\x63\ \x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\x6d\x65\x22\x3b\x20\x78\x3a\ \x20\x70\x61\x67\x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2b\x34\x30\ \x3b\x20\x79\x3a\x20\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x34\ \x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x36\x30\x20\x7d\x0a\ \x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x42\x6c\x61\x63\x6b\x22\x3b\x20\ \x78\x3a\x20\x70\x61\x67\x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2b\ \x35\x30\x3b\x20\x79\x3a\x20\x31\x30\x3b\x20\x77\x69\x64\x74\x68\ \x3a\x20\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x52\x65\x70\x65\x61\x74\x65\x72\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x6c\x3a\ \x20\x70\x61\x67\x65\x2e\x68\x65\x69\x67\x68\x74\x20\x2f\x20\x32\ \x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\ \x67\x6c\x65\x20\x7b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\ \x6d\x65\x22\x3b\x20\x78\x3a\x20\x70\x61\x67\x65\x2e\x77\x69\x64\ \x74\x68\x2f\x32\x2d\x35\x3b\x20\x79\x3a\x20\x69\x6e\x64\x65\x78\ \x20\x2a\x20\x32\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x31\x30\x20\x7d\x0a\x20\ \x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0f\xfa\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x0a\x0a\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\ \x20\x74\x65\x78\x74\x3a\x20\x22\x44\x72\x61\x67\x20\x6d\x65\x21\ \x22\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\ \x6f\x6f\x6c\x20\x61\x6e\x69\x6d\x61\x74\x65\x64\x3a\x20\x74\x72\ \x75\x65\x0a\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x3b\ \x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x34\x37\x34\x37\x34\x37\ \x22\x3b\x20\x66\x6f\x63\x75\x73\x3a\x20\x74\x72\x75\x65\x0a\x0a\ \x20\x20\x20\x20\x4b\x65\x79\x73\x2e\x6f\x6e\x50\x72\x65\x73\x73\ \x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\ \x20\x28\x65\x76\x65\x6e\x74\x2e\x6b\x65\x79\x20\x3d\x3d\x20\x51\ \x74\x2e\x4b\x65\x79\x5f\x44\x65\x6c\x65\x74\x65\x20\x7c\x7c\x20\ \x65\x76\x65\x6e\x74\x2e\x6b\x65\x79\x20\x3d\x3d\x20\x51\x74\x2e\ \x4b\x65\x79\x5f\x42\x61\x63\x6b\x73\x70\x61\x63\x65\x29\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x61\ \x69\x6e\x65\x72\x2e\x72\x65\x6d\x6f\x76\x65\x28\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x65\ \x76\x65\x6e\x74\x2e\x74\x65\x78\x74\x20\x21\x3d\x20\x22\x22\x29\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x61\x70\x70\x65\x6e\x64\x28\ \x65\x76\x65\x6e\x74\x2e\x74\x65\x78\x74\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x61\x70\x70\x65\x6e\x64\ \x28\x74\x65\x78\x74\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x61\x6e\x69\x6d\x61\ \x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x76\x61\x72\x20\x6c\x61\x73\x74\x4c\x65\x74\x74\ \x65\x72\x20\x3d\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\ \x68\x69\x6c\x64\x72\x65\x6e\x5b\x63\x6f\x6e\x74\x61\x69\x6e\x65\ \x72\x2e\x63\x68\x69\x6c\x64\x72\x65\x6e\x2e\x6c\x65\x6e\x67\x74\ \x68\x20\x2d\x20\x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x76\ \x61\x72\x20\x6e\x65\x77\x4c\x65\x74\x74\x65\x72\x20\x3d\x20\x6c\ \x65\x74\x74\x65\x72\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x63\ \x72\x65\x61\x74\x65\x4f\x62\x6a\x65\x63\x74\x28\x63\x6f\x6e\x74\ \x61\x69\x6e\x65\x72\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\ \x65\x77\x4c\x65\x74\x74\x65\x72\x2e\x74\x65\x78\x74\x20\x3d\x20\ \x74\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x77\ \x4c\x65\x74\x74\x65\x72\x2e\x66\x6f\x6c\x6c\x6f\x77\x20\x3d\x20\ \x6c\x61\x73\x74\x4c\x65\x74\x74\x65\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x61\x6e\x69\ \x6d\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\ \x20\x72\x65\x6d\x6f\x76\x65\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x66\x20\x28\x63\x6f\x6e\x74\x61\x69\x6e\x65\ \x72\x2e\x63\x68\x69\x6c\x64\x72\x65\x6e\x2e\x6c\x65\x6e\x67\x74\ \x68\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\x68\x69\x6c\x64\x72\x65\ \x6e\x5b\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\x68\x69\x6c\ \x64\x72\x65\x6e\x2e\x6c\x65\x6e\x67\x74\x68\x20\x2d\x20\x31\x5d\ \x2e\x64\x65\x73\x74\x72\x6f\x79\x28\x29\x0a\x20\x20\x20\x20\x7d\ \x0a\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x64\ \x6f\x4c\x61\x79\x6f\x75\x74\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x76\x61\x72\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x3d\ \x20\x6e\x75\x6c\x6c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\ \x72\x20\x28\x76\x61\x72\x20\x69\x20\x3d\x20\x30\x3b\x20\x69\x20\ \x3c\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\x74\ \x2e\x6c\x65\x6e\x67\x74\x68\x3b\x20\x2b\x2b\x69\x29\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\ \x6e\x65\x77\x4c\x65\x74\x74\x65\x72\x20\x3d\x20\x6c\x65\x74\x74\ \x65\x72\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x63\x72\x65\x61\ \x74\x65\x4f\x62\x6a\x65\x63\x74\x28\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x6e\x65\x77\x4c\x65\x74\x74\x65\x72\x2e\x74\x65\x78\x74\x20\x3d\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\x74\x5b\ \x69\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6e\ \x65\x77\x4c\x65\x74\x74\x65\x72\x2e\x66\x6f\x6c\x6c\x6f\x77\x20\ \x3d\x20\x66\x6f\x6c\x6c\x6f\x77\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x3d\x20\x6e\x65\ \x77\x4c\x65\x74\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x43\x6f\x6d\ \x70\x6f\x6e\x65\x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x6c\x65\x74\x74\x65\x72\x43\x6f\x6d\x70\x6f\ \x6e\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\ \x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x6c\x65\x74\x74\x65\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x76\x61\x72\x69\x61\x6e\x74\x20\x66\x6f\x6c\x6c\x6f\x77\x0a\x0a\ \x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x78\x3a\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x3f\x20\ \x66\x6f\x6c\x6c\x6f\x77\x2e\x78\x20\x2b\x20\x66\x6f\x6c\x6c\x6f\ \x77\x2e\x77\x69\x64\x74\x68\x20\x3a\x20\x63\x6f\x6e\x74\x61\x69\ \x6e\x65\x72\x2e\x77\x69\x64\x74\x68\x20\x2f\x20\x36\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\x20\x66\x6f\x6c\ \x6c\x6f\x77\x20\x3f\x20\x66\x6f\x6c\x6c\x6f\x77\x2e\x79\x20\x3a\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x68\x65\x69\x67\x68\ \x74\x20\x2f\x20\x32\x0a\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\ \x70\x69\x78\x65\x6c\x53\x69\x7a\x65\x3a\x20\x34\x30\x3b\x20\x66\ \x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\x20\x74\x72\x75\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x23\x39\x39\x39\x39\x39\x39\x22\x3b\x20\x73\x74\x79\ \x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x32\x32\x32\x32\x32\ \x32\x22\x3b\x20\x73\x74\x79\x6c\x65\x3a\x20\x54\x65\x78\x74\x2e\ \x52\x61\x69\x73\x65\x64\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x64\x72\x61\x67\x2e\x74\x61\x72\x67\x65\x74\ \x3a\x20\x6c\x65\x74\x74\x65\x72\x3b\x20\x64\x72\x61\x67\x2e\x61\ \x78\x69\x73\x3a\x20\x44\x72\x61\x67\x2e\x58\x41\x6e\x64\x59\x41\ \x78\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x50\x72\x65\x73\x73\x65\x64\x3a\x20\x6c\ \x65\x74\x74\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x20\x3d\x20\x22\x23\ \x64\x64\x64\x64\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x52\x65\x6c\x65\x61\x73\ \x65\x64\x3a\x20\x6c\x65\x74\x74\x65\x72\x2e\x63\x6f\x6c\x6f\x72\ \x20\x3d\x20\x22\x23\x39\x39\x39\x39\x39\x39\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x2f\x2f\x21\x20\ \x5b\x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x78\x20\x7b\x20\ \x65\x6e\x61\x62\x6c\x65\x64\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x2e\x61\x6e\x69\x6d\x61\x74\x65\x64\x3b\x20\x53\x70\x72\ \x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\ \x70\x72\x69\x6e\x67\x3a\x20\x33\x3b\x20\x64\x61\x6d\x70\x69\x6e\ \x67\x3a\x20\x30\x2e\x33\x3b\x20\x6d\x61\x73\x73\x3a\x20\x31\x2e\ \x30\x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\ \x7b\x20\x65\x6e\x61\x62\x6c\x65\x64\x3a\x20\x63\x6f\x6e\x74\x61\ \x69\x6e\x65\x72\x2e\x61\x6e\x69\x6d\x61\x74\x65\x64\x3b\x20\x53\ \x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x33\x3b\x20\x64\x61\x6d\x70\ \x69\x6e\x67\x3a\x20\x30\x2e\x33\x3b\x20\x6d\x61\x73\x73\x3a\x20\ \x31\x2e\x30\x20\x7d\x20\x7d\x0a\x2f\x2f\x21\x20\x5b\x31\x5d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\ \x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\ \x6e\x43\x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x64\x6f\x4c\x61\ \x79\x6f\x75\x74\x28\x29\x0a\x7d\x0a\ \x00\x00\x11\x5c\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x33\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x34\x38\x30\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x23\x33\x34\x33\x34\x33\x34\x22\x0a\x0a\x20\x20\x20\x20\ \x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x63\x65\x6e\x74\ \x65\x72\x49\x6e\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x30\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x33\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\ \x68\x3a\x20\x34\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x69\x64\x65\x52\x65\x63\x74\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x6c\x65\x66\x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\ \x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x3b\x20\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\ \x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x6c\x65\x66\x74\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x74\x65\x78\x74\x3a\x20\x22\x4c\x65\x66\x74\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x69\x64\x65\x52\x65\x63\x74\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x72\x69\ \x67\x68\x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x76\x65\ \x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3b\x20\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\ \x67\x68\x74\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x74\x65\x78\x74\x3a\x20\x22\x52\x69\x67\x68\x74\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x69\x64\x65\x52\x65\x63\x74\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x74\x6f\ \x70\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x76\x65\x72\x74\ \x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x74\x6f\x70\x3b\x20\x68\x6f\x72\x69\x7a\x6f\x6e\x74\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x22\x54\x6f\x70\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x69\x64\x65\x52\x65\x63\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x6f\x74\x74\x6f\x6d\ \x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x76\x65\x72\x74\x69\ \x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x2e\x62\x6f\x74\x74\x6f\x6d\x3b\x20\x68\x6f\x72\x69\x7a\x6f\ \x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x74\x65\x78\x74\x3a\x20\x22\x42\x6f\x74\x74\x6f\x6d\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x73\x74\x72\x69\x6e\x67\x20\x74\x65\x78\x74\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\x20\x36\x32\x3b\ \x20\x79\x3a\x20\x37\x35\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x37\ \x35\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\ \x3a\x20\x36\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\x68\x3a\x20\x34\x3b\ \x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x66\x69\x72\x65\x62\ \x72\x69\x63\x6b\x22\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x61\x6e\x20\x27\x65\x6c\ \x61\x73\x74\x69\x63\x27\x20\x62\x65\x68\x61\x76\x69\x6f\x72\x20\ \x6f\x6e\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\ \x27\x73\x20\x78\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x2e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x78\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\ \x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x65\x61\x73\ \x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\ \x2e\x4f\x75\x74\x45\x6c\x61\x73\x74\x69\x63\x3b\x20\x65\x61\x73\ \x69\x6e\x67\x2e\x61\x6d\x70\x6c\x69\x74\x75\x64\x65\x3a\x20\x33\ \x2e\x30\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x70\x65\x72\x69\x6f\ \x64\x3a\x20\x32\x2e\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x33\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x61\x6e\ \x20\x27\x65\x6c\x61\x73\x74\x69\x63\x27\x20\x62\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\ \x52\x65\x63\x74\x27\x73\x20\x79\x20\x70\x72\x6f\x70\x65\x72\x74\ \x79\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x42\ \x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\ \x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\ \x73\x69\x6e\x67\x2e\x4f\x75\x74\x45\x6c\x61\x73\x74\x69\x63\x3b\ \x20\x65\x61\x73\x69\x6e\x67\x2e\x61\x6d\x70\x6c\x69\x74\x75\x64\ \x65\x3a\x20\x33\x2e\x30\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x70\ \x65\x72\x69\x6f\x64\x3a\x20\x32\x2e\x30\x3b\x20\x64\x75\x72\x61\ \x74\x69\x6f\x6e\x3a\x20\x33\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x64\x3a\x20\x66\x6f\x63\x75\x73\x54\x65\x78\x74\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\x2e\ \x74\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x63\x65\x6e\ \x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\ \x6c\x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x6e\ \x74\x2e\x70\x69\x78\x65\x6c\x53\x69\x7a\x65\x3a\x20\x31\x36\x3b\ \x20\x66\x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x61\x20\x62\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\ \x54\x65\x78\x74\x27\x73\x20\x78\x20\x70\x72\x6f\x70\x65\x72\x74\ \x79\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x74\x68\x65\x20\x6f\x70\ \x61\x63\x69\x74\x79\x20\x74\x6f\x20\x30\x2c\x20\x73\x65\x74\x20\ \x74\x68\x65\x20\x6e\x65\x77\x20\x74\x65\x78\x74\x20\x76\x61\x6c\ \x75\x65\x2c\x20\x74\x68\x65\x6e\x20\x73\x65\x74\x20\x74\x68\x65\ \x20\x6f\x70\x61\x63\x69\x74\x79\x20\x62\x61\x63\x6b\x20\x74\x6f\ \x20\x31\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\ \x74\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\ \x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\ \x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x61\x72\x67\x65\ \x74\x3a\x20\x66\x6f\x63\x75\x73\x54\x65\x78\x74\x3b\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x3a\x20\x22\x6f\x70\x61\x63\x69\x74\x79\ \x22\x3b\x20\x74\x6f\x3a\x20\x30\x3b\x20\x64\x75\x72\x61\x74\x69\ \x6f\x6e\x3a\x20\x31\x35\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\ \x6e\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x66\x6f\x63\x75\ \x73\x54\x65\x78\x74\x3b\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x3a\ \x20\x22\x6f\x70\x61\x63\x69\x74\x79\x22\x3b\x20\x74\x6f\x3a\x20\ \x31\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x31\x35\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0d\x4f\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x77\x69\x6e\x64\x6f\x77\x0a\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x33\x32\x30\x0a\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x34\x38\x30\x0a\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\ \x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x76\x61\x72\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\ \x28\x22\x32\x64\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x63\x6c\x65\x61\x72\ \x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x77\x69\x64\x74\x68\ \x2c\x20\x68\x65\x69\x67\x68\x74\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x73\x74\ \x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x22\x62\x6c\x61\ \x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6e\x74\x65\x78\x74\x2e\x70\x61\x74\x68\x20\x3d\x20\x70\ \x61\x74\x68\x41\x6e\x69\x6d\x2e\x70\x61\x74\x68\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\ \x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x53\ \x65\x71\x75\x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\ \x6e\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x2d\x31\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x50\x61\x75\x73\x65\x41\x6e\x69\x6d\x61\ \x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\ \x20\x31\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x50\x61\x74\x68\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x70\x61\x74\x68\x41\x6e\x69\x6d\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\ \x32\x30\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\ \x73\x69\x6e\x67\x2e\x49\x6e\x51\x75\x61\x64\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x61\x72\x67\x65\x74\x3a\ \x20\x62\x6f\x78\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x3a\x20\x50\x61\ \x74\x68\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x52\x69\x67\x68\ \x74\x46\x69\x72\x73\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x50\x6f\x69\x6e\x74\x3a\x20\ \x51\x74\x2e\x70\x6f\x69\x6e\x74\x28\x62\x6f\x78\x2e\x77\x69\x64\ \x74\x68\x2f\x32\x2c\x20\x62\x6f\x78\x2e\x68\x65\x69\x67\x68\x74\ \x2f\x32\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x61\x74\x68\x3a\x20\x50\x61\x74\x68\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x61\ \x72\x74\x58\x3a\x20\x35\x30\x3b\x20\x73\x74\x61\x72\x74\x59\x3a\ \x20\x35\x30\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x50\x61\x74\x68\x43\x75\x62\x69\x63\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x78\x3a\x20\x77\x69\x6e\x64\x6f\x77\x2e\x77\ \x69\x64\x74\x68\x20\x2d\x20\x35\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x77\x69\x6e\x64\x6f\x77\x2e\x68\x65\x69\x67\x68\x74\x20\x2d\ \x20\x35\x30\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\ \x31\x58\x3a\x20\x78\x3b\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x31\x59\ \x3a\x20\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\ \x32\x58\x3a\x20\x35\x30\x3b\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x32\ \x59\x3a\x20\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x20\x63\x61\x6e\x76\x61\x73\x2e\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\ \x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\ \x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x62\x6f\x78\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x78\x3a\x20\x32\x35\x3b\x20\x79\x3a\x20\x32\x35\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x35\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\x68\ \x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\ \x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x63\x65\x6e\x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x22\x42\x6f\x78\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\x44\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x2f\x2a\ \x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x69\x73\x20\x65\x78\x61\ \x63\x74\x6c\x79\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x61\x73\ \x20\x73\x74\x61\x74\x65\x73\x2e\x71\x6d\x6c\x2c\x20\x65\x78\x63\ \x65\x70\x74\x20\x74\x68\x61\x74\x20\x77\x65\x20\x68\x61\x76\x65\ \x20\x61\x70\x70\x65\x6e\x64\x65\x64\x0a\x20\x20\x20\x20\x61\x20\ \x73\x65\x74\x20\x6f\x66\x20\x74\x72\x61\x6e\x73\x69\x74\x69\x6f\ \x6e\x73\x20\x74\x6f\x20\x61\x70\x70\x6c\x79\x20\x61\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x73\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\ \x69\x74\x65\x6d\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x0a\x20\x20\ \x20\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x65\x61\x63\x68\x20\x73\ \x74\x61\x74\x65\x2e\x0a\x2a\x2f\x0a\x0a\x52\x65\x63\x74\x61\x6e\ \x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x70\x61\ \x67\x65\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x36\x34\ \x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x0a\x20\ \x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x33\x34\x33\x34\ \x33\x34\x22\x0a\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\ \x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x75\x73\ \x65\x72\x49\x63\x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x78\ \x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\x74\x2e\x78\x3b\ \x20\x79\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\x74\x2e\ \x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\ \x3a\x20\x22\x71\x74\x2d\x6c\x6f\x67\x6f\x2e\x70\x6e\x67\x22\x0a\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\ \x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\x74\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\ \x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\ \x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x74\x6f\x70\x3b\x20\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x31\x30\x3b\x20\x74\x6f\x70\x4d\x61\x72\x67\x69\x6e\x3a\ \x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\ \x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\x20\ \x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\x6c\ \x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\x73\ \x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\x6f\ \x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x74\x61\ \x74\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x69\x6e\x67\x20\x74\x68\ \x65\x20\x69\x6d\x61\x67\x65\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x69\x74\x73\x20\x69\x6e\x69\x74\x69\x61\ \x6c\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\ \x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\x20\x27\x27\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\ \x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\ \x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x20\x7b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x76\x65\x72\ \x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\ \x65\x72\x3b\x20\x72\x69\x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\ \x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\ \x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\x20\ \x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\x6c\ \x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\x73\ \x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\x6f\ \x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x27\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\ \x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\ \x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x27\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\ \x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\ \x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\x3b\x20\ \x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\x3b\x20\ \x62\x6f\x74\x74\x6f\x6d\x4d\x61\x72\x67\x69\x6e\x3a\x20\x32\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\ \x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x34\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\x3b\x20\x62\ \x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x47\x72\ \x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x36\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\x6c\x69\x63\x6b\ \x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\x73\x65\x74\x73\ \x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\x6f\x20\x27\x62\ \x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\ \x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\x20\x27\x62\x6f\ \x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x20\x7d\x0a\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x73\x74\x61\x74\x65\x73\x3a\x20\x5b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x49\x6e\x20\x73\ \x74\x61\x74\x65\x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x27\x2c\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x69\x6d\x61\ \x67\x65\x20\x74\x6f\x20\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\ \x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x6d\x69\x64\x64\x6c\x65\x52\ \x69\x67\x68\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x50\x72\x6f\x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\ \x73\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x75\x73\x65\x72\ \x49\x63\x6f\x6e\x3b\x20\x78\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\ \x69\x67\x68\x74\x52\x65\x63\x74\x2e\x78\x3b\x20\x79\x3a\x20\x6d\ \x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x52\x65\x63\x74\x2e\x79\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x2c\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x49\x6e\x20\x73\x74\x61\ \x74\x65\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x2c\ \x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x69\x6d\x61\x67\x65\x20\ \x74\x6f\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\x63\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x61\x74\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x61\ \x6d\x65\x3a\x20\x22\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x72\x6f\ \x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\x73\x20\x7b\x20\x74\ \x61\x72\x67\x65\x74\x3a\x20\x75\x73\x65\x72\x49\x63\x6f\x6e\x3b\ \x20\x78\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\ \x63\x74\x2e\x78\x3b\x20\x79\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\ \x65\x66\x74\x52\x65\x63\x74\x2e\x79\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x5d\x0a\x0a\x20\x20\ \x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x2f\x2f\ \x20\x54\x72\x61\x6e\x73\x69\x74\x69\x6f\x6e\x73\x20\x64\x65\x66\ \x69\x6e\x65\x20\x68\x6f\x77\x20\x74\x68\x65\x20\x70\x72\x6f\x70\ \x65\x72\x74\x69\x65\x73\x20\x63\x68\x61\x6e\x67\x65\x20\x77\x68\ \x65\x6e\x20\x74\x68\x65\x20\x69\x74\x65\x6d\x20\x6d\x6f\x76\x65\ \x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x65\x61\x63\x68\x20\x73\ \x74\x61\x74\x65\x0a\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x69\x74\ \x69\x6f\x6e\x73\x3a\x20\x5b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x20\x57\x68\x65\x6e\x20\x74\x72\x61\x6e\x73\x69\x74\ \x69\x6f\x6e\x69\x6e\x67\x20\x74\x6f\x20\x27\x6d\x69\x64\x64\x6c\ \x65\x52\x69\x67\x68\x74\x27\x20\x6d\x6f\x76\x65\x20\x78\x2c\x79\ \x20\x6f\x76\x65\x72\x20\x61\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x20\x6f\x66\x20\x31\x20\x73\x65\x63\x6f\x6e\x64\x2c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x77\x69\x74\x68\x20\x4f\x75\ \x74\x42\x6f\x75\x6e\x63\x65\x20\x65\x61\x73\x69\x6e\x67\x20\x66\ \x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x54\x72\x61\x6e\x73\x69\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x3a\x20\ \x22\x2a\x22\x3b\x20\x74\x6f\x3a\x20\x22\x6d\x69\x64\x64\x6c\x65\ \x52\x69\x67\x68\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x7b\x20\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x3a\ \x20\x22\x78\x2c\x79\x22\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\ \x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x4f\x75\x74\x42\ \x6f\x75\x6e\x63\x65\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\ \x20\x31\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x2c\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x57\ \x68\x65\x6e\x20\x74\x72\x61\x6e\x73\x69\x74\x69\x6f\x6e\x69\x6e\ \x67\x20\x74\x6f\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\ \x27\x20\x6d\x6f\x76\x65\x20\x78\x2c\x79\x20\x6f\x76\x65\x72\x20\ \x61\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x32\x20\ \x73\x65\x63\x6f\x6e\x64\x73\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x20\x77\x69\x74\x68\x20\x49\x6e\x4f\x75\x74\x51\x75\ \x61\x64\x20\x65\x61\x73\x69\x6e\x67\x20\x66\x75\x6e\x63\x74\x69\ \x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x72\x61\x6e\ \x73\x69\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x3a\x20\x22\x2a\x22\x3b\x20\ \x74\x6f\x3a\x20\x22\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\ \x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x3a\x20\x22\x78\x2c\x79\x22\ \x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\ \x61\x73\x69\x6e\x67\x2e\x49\x6e\x4f\x75\x74\x51\x75\x61\x64\x3b\ \x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\x30\x30\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x2c\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x46\x6f\x72\x20\x61\x6e\x79\ \x20\x6f\x74\x68\x65\x72\x20\x73\x74\x61\x74\x65\x20\x63\x68\x61\ \x6e\x67\x65\x73\x20\x6d\x6f\x76\x65\x20\x78\x2c\x79\x20\x6c\x69\ \x6e\x65\x61\x72\x6c\x79\x20\x6f\x76\x65\x72\x20\x64\x75\x72\x61\ \x74\x69\x6f\x6e\x20\x6f\x66\x20\x32\x30\x30\x6d\x73\x2e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x54\x72\x61\x6e\x73\x69\x74\x69\x6f\ \x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x7b\x20\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x3a\x20\x22\x78\ \x2c\x79\x22\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\ \x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x5d\ \x0a\x7d\x0a\ \x00\x00\x14\x1d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2e\x00\x00\x00\x37\x08\x06\x00\x00\x00\x73\x60\x78\x64\ \x00\x00\x13\xe4\x49\x44\x41\x54\x78\x9c\x62\xfc\xff\xff\x3f\xc3\ \xdf\x7f\x7f\x99\x99\x99\x98\xff\x3e\x78\xf1\x58\x66\xe9\x9e\x55\ \x09\x87\x2f\x9e\xb6\x79\xf7\xe9\xad\x98\xa4\xf2\x3f\x7e\x51\xb9\ \xbf\xfc\xcc\x1c\x3f\xf8\xfe\xfd\xff\xc7\xca\xc5\xc6\xf7\x46\x9c\ \x5b\xf6\x96\x24\xaf\xd2\x35\x29\x3e\xa5\xcb\xd2\xbc\x4a\xd7\xc4\ \x78\x64\xef\x08\x70\x8a\x3e\x63\x63\x66\xff\xc5\x80\x05\xfc\x67\ \xf8\xcf\xf4\xef\xff\x3f\x26\x06\x86\xff\x0c\x8c\x0c\x8c\xff\x19\ \x19\x18\xff\x33\x30\x42\x69\x0a\x00\x00\x00\x00\xff\xff\x62\xfc\ \xfb\xf7\x2f\x33\x13\x13\xd3\xdf\x59\x9b\x17\xa6\x54\xcf\x6d\xed\ \x7d\xf3\xe6\x0d\x1f\x17\x2f\xdb\x7f\x7b\x2f\x61\x46\x59\x45\x4e\ \x06\x86\x7f\x8c\x0c\x0c\xff\x99\x18\x18\x18\x18\x18\xfe\xfd\xff\ \xc7\xf0\xe7\xdf\x6f\x86\x7f\xff\xff\x30\x30\x30\x30\x32\xb0\x30\ \xb1\x32\x70\xb2\xf0\x7c\xe3\x63\x17\x7a\x26\xcc\x25\x75\x5f\x9c\ \x47\xee\xa6\x04\x8f\xc2\x75\x09\x5e\x85\x9b\xa2\x5c\x52\xf7\x05\ \x38\xc5\x9e\xb1\xb3\x70\xfc\xc0\x6e\xf5\x7f\xc6\x7f\xff\xff\x31\ \xc3\x39\x24\x7a\x08\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\ \xa4\xb5\xb3\x73\xf2\xbb\xf3\x26\x73\xf2\x09\xff\x63\x67\x63\xfb\ \xef\x1e\x2c\xc4\x20\x21\xc3\xc6\xf8\xed\xeb\x3f\x46\x46\x88\x39\ \x8c\x70\x0b\x18\x99\xfe\x33\x32\x30\xfc\x67\x60\x60\x60\xf8\xff\ \xff\x3f\xd3\xbf\xff\x7f\x19\xff\xfc\xff\x03\xf1\xd0\xbf\x3f\x0c\ \xff\x19\xfe\x33\xb0\x30\xb2\x32\xb0\xb3\x70\xff\xe5\x67\x17\x7e\ \x21\xcc\x25\x79\x5f\x8c\x47\xee\xa6\x14\xaf\xe2\x75\x09\x1e\x85\ \xeb\xa2\x3c\x32\x77\x85\x39\x25\x9e\x70\xb0\x72\x7d\xc5\xe7\xa1\ \xff\x70\x4b\x19\xff\x31\x62\xf1\x10\x00\x00\x00\xff\xff\x6c\x92\ \xbd\x0a\xc2\x30\x14\x46\xbf\x2f\x16\x7f\xd2\x06\x21\x83\xc6\x41\ \xc5\x5d\x70\xec\xa8\xbb\xcf\xe2\x6b\xba\x76\x70\x28\xa8\x83\xe0\ \xd6\xb1\x88\x20\x24\xf7\x3a\x88\x5b\x5e\xe0\x1c\x0e\x1c\x36\xb7\ \xcb\x76\x7f\x3a\x9e\x85\xea\xe2\x87\xb2\xab\x4b\x53\x1f\xa6\x78\ \xbf\x04\x66\x90\x03\x67\x4c\xa0\xfe\x0a\xa9\xc4\x7f\x8f\x64\xa2\ \x44\x24\x89\x48\x1a\xa1\x2a\x30\x2c\x30\x2e\xac\xb8\x91\xef\xfc\ \x24\x3c\x66\xe5\xf2\xba\x70\x9b\x36\x54\xeb\x76\x5e\xad\xee\xde\ \x86\xa7\x1d\xba\x9e\x79\x0f\x45\xc5\x28\x94\x04\xf0\x05\x00\x00\ \xff\xff\x62\x99\xbc\x76\x56\xee\xa7\xef\x5f\x79\xf9\xb9\xf9\xfe\ \x32\xb2\xff\x65\x56\xd6\xe4\x62\xf8\xfd\xeb\x3f\x03\x23\x13\x51\ \x8e\x66\x60\x60\x60\x60\xfc\xcf\xf0\x9f\xf1\xff\x7f\xf4\x18\x66\ \xfc\xcf\xca\xc4\xf6\x9f\x8d\x99\x1d\xc9\x43\x0c\x8c\xff\xfe\xff\ \x65\xfe\xf8\xe3\xb5\xc4\xbb\xef\xcf\x24\x6e\xbc\x39\x65\x01\xf1\ \x10\x33\x03\x3b\x33\xe7\x7f\x1e\x36\xc1\xb7\x82\x9c\xe2\x0f\xc5\ \x79\x64\x6f\x8b\xf3\x28\x5c\x97\xe4\x55\xb8\x2e\xce\x23\x77\x5b\ \x98\x4b\xe2\x11\x0f\x9b\xc0\x3b\x26\x46\xa6\xbf\x30\xd3\x01\x00\ \x00\x00\xff\xff\x62\x54\x89\x34\xbe\xfb\xf4\xed\x0b\x25\x86\xff\ \xcc\xff\x85\x44\x58\x18\xbd\xc3\x45\x88\x76\x31\xb9\x00\x9a\x9e\ \xff\x31\xa2\x79\xe8\xef\x7f\x48\x0c\xfd\xf9\xf7\x9b\xe1\xff\xff\ \x7f\x0c\x8c\x8c\xcc\x0c\x6c\xcc\x1c\x0c\x3c\xac\xfc\x1f\x04\x39\ \xc5\x1e\x89\x72\xcb\xde\x91\xe0\x51\xb8\x26\xc9\xab\x70\x03\x00\ \x00\x00\xff\xff\xbc\xd1\xb1\x0d\x80\x30\x10\x03\x40\x3b\x05\x54\ \x54\xb4\x91\x32\x0e\xa2\x65\xff\x45\xc8\xff\xdb\x54\x94\xb4\x8c\ \x70\x3a\x6e\xe7\xb8\x01\x2f\x73\x1a\x7d\xac\x38\xae\x1d\x11\x06\ \x3f\xbe\x7e\x00\x99\xa0\x5e\x90\xad\x56\x4e\x96\x02\xa9\x84\x5c\ \x20\x1b\x1e\x00\x00\x00\xff\xff\xb4\x92\x21\x12\x00\x20\x0c\xc3\ \xda\x5b\x81\xff\x7f\x98\xa0\x26\x70\x18\x2a\x73\x11\x11\x0d\x30\ \xdd\xd6\xfb\x3d\xbe\x0c\x61\x81\x91\xae\x92\x72\xa8\x0c\x96\xbc\ \x9b\x1d\x00\x00\x00\xff\xff\x94\x94\xb1\x0d\x00\x20\x0c\xc3\xdc\ \x96\xff\x4f\x76\x19\xd8\x10\x42\x70\x40\x6c\x79\xc9\xd8\x96\x7f\ \x22\x21\x33\xa8\x2a\x6c\xd1\x05\xc8\x08\xd6\x27\x34\xb6\x57\xc6\ \x93\xe7\x10\x34\x01\x00\x00\xff\xff\x8c\x91\xc1\x0a\x80\x20\x10\ \x05\x67\xdd\x35\xa5\xfe\xff\x3b\x83\x28\x41\xad\xad\x4b\x67\xeb\ \xdd\x67\x18\x78\x36\x02\x46\xc1\x6a\x42\x9e\x8d\xbd\x1c\xac\x5b\ \x21\x6a\x24\x4d\x09\x01\xaa\x37\x4e\xef\x68\x30\xb2\x2d\x04\x51\ \xfc\xbe\x3e\xac\xef\xed\x3f\xf7\x00\x00\x00\xff\xff\x22\xd9\xe1\ \xff\xff\x31\x30\x70\x70\x32\x33\x7c\xfb\xfa\x87\xe1\xf4\xc9\xc7\ \x0c\x52\x5c\xea\x0c\x5e\x26\x3e\x0c\xc6\xaa\x86\x0c\xa2\x02\x22\ \x0c\x8c\x8c\x0c\x0c\x5f\x7e\x7d\x60\x78\xf6\xe9\x1e\xc3\xb5\xd7\ \x27\x19\xae\xbe\x3a\xc1\xf0\xf5\xf7\x27\x06\x6e\x56\x3e\x9c\x8e\ \x67\x64\x64\x60\x80\x95\x4a\x4c\x8c\x4c\x0c\xff\xff\xff\x67\xf8\ \x4f\xc0\x13\x00\x00\x00\x00\xff\xff\x22\xc9\xe1\xff\xff\x43\x1c\ \x7d\xe7\xc6\x17\x86\xa3\xfb\xde\x32\x54\x84\x54\x30\x14\x85\x67\ \x30\xb0\xb3\xb3\x32\xfc\x87\x54\xe9\x70\xb5\x5a\x62\x16\x0c\xae\ \x2a\xd1\x0c\xcf\x3f\x3f\x60\x58\x73\x75\x22\xc3\xe9\x27\x3b\x19\ \xb8\xd8\xf8\x18\x30\x8b\x4d\x06\x86\x5f\x3f\xff\x31\xb0\xb0\xb0\ \x30\x30\x32\xfd\x65\xf8\xf6\xfb\x0b\x03\x0b\x13\x0b\x03\x2b\x13\ \x3b\x5e\xc7\x03\x00\x00\x00\xff\xff\x22\x3a\x3b\xfe\xff\xc7\xc0\ \xc0\xce\xc1\xc4\x70\xe3\xf2\x57\x86\x9d\x6b\x5f\x30\xcc\x2e\x9c\ \xce\x50\x19\x97\xcb\xc0\xc2\xca\xc4\xf0\xf7\xdf\x5f\x86\xff\xff\ \xff\xc1\x2b\x9b\x3f\x7f\x7f\x33\xfc\xfe\x03\x29\xd2\x24\x79\xe5\ \x19\x72\x2d\xfa\x19\x42\x74\xf2\x19\xbe\xfd\xfa\xcc\xc0\x04\x2d\ \x01\xfe\xff\x67\x60\x60\x65\x63\x64\x78\xf5\xec\x0f\xc3\x92\x59\ \x0f\x18\x3c\xc4\x4b\x18\xba\xbc\x36\x32\xd4\xd8\x2f\x66\x30\x94\ \x74\x64\xf8\xf1\xe7\x1b\x5c\x2d\x36\x00\x00\x00\x00\xff\xff\x8c\ \xd4\x21\x0e\xc2\x40\x10\x40\xd1\x3f\x33\xbb\x75\x0d\x06\x01\x0e\ \x53\x82\x44\x35\x58\x24\xa6\x12\x8d\x20\xe1\x04\x78\x6e\xc4\x01\ \xb8\x0c\x69\x10\x08\x0c\x49\x31\x5d\xb6\x83\x42\x92\x70\x82\xff\ \xd4\xff\x0b\xfe\x8d\x3c\xee\x99\xcb\xf9\xca\x69\x7f\x64\xbb\x6e\ \xe8\x53\x42\x45\x31\x35\x44\x14\xd3\x80\x49\x20\x58\xa4\x08\x05\ \x0e\x0c\xee\x64\xcf\x34\x8b\x03\x9b\xf9\x8e\xae\x7f\xa2\x62\xb8\ \x3b\xaa\xc2\xad\x7d\x11\xbd\xa4\xae\x56\x8c\xe2\x94\x6a\xbc\x64\ \x52\xce\x78\x0f\x09\xf8\xfd\xe4\x0f\x00\x00\x00\xff\xff\x22\x3a\ \xc4\x19\x19\x99\x18\x0e\xee\x7e\xce\xa0\xa9\xac\xcb\x50\x16\x95\ \xcb\xc0\xc0\xc0\xc0\xc0\xca\xc2\xc2\xc0\xc8\xc8\xc8\xf0\xff\x3f\ \x24\x99\xdc\x78\x7b\x92\xa1\x66\x43\x3a\x83\x4f\x65\x04\xc3\xda\ \x43\x5b\xa0\x21\xc6\x08\x0f\xb9\x10\xed\x3c\x06\x45\x41\x6d\x86\ \x9f\x7f\xbe\x31\x30\x33\x31\x33\xfc\xff\xc7\xc8\xf0\xf4\xf1\x17\ \x06\x6d\x25\x55\x06\x19\x51\x69\xa8\x63\x19\x18\xfe\x13\x51\x12\ \x01\x00\x00\x00\xff\xff\x84\xd4\x2b\x0e\xc2\x40\x14\x46\xe1\xf3\ \xdf\xa6\x4c\x05\xeb\x40\xa0\x50\x2c\x02\x0d\x49\x75\x05\x0e\xc9\ \x1e\x58\x09\x8a\x2d\x90\x60\x70\x24\x78\x12\x14\x62\x12\x02\x02\ \x0c\x8f\xb6\x77\xb0\x18\xc2\x0e\x8e\xf8\x72\xfe\x86\xa7\x04\x9d\ \x20\xe2\xe9\x4d\x3c\xde\x99\x4d\x2a\x42\x5e\xd0\xb4\x0d\x92\xf0\ \xe4\x48\xe2\x70\xdd\xb3\xd8\x4c\x89\xb6\xe5\xd6\xdd\x31\x9e\x97\ \x2c\xd7\x2b\x4c\xc2\xdd\xf1\xd4\x92\x67\x81\x51\xaf\xa2\xf6\x1a\ \x99\x78\x3d\xc4\xe5\xfc\x64\xd8\x1f\x00\x7c\xed\x34\xc3\x64\x98\ \x0c\xfd\xe0\xf2\x01\x00\x00\xff\xff\x22\x1c\xe2\xff\x21\x65\xf5\ \x8d\x2b\x1f\x19\x04\x84\xc4\x19\xfc\xad\x3d\x19\x18\x18\x18\x18\ \x98\xa1\x2d\x30\x58\x64\x6e\xbe\x31\x8b\xe1\xdf\xff\xbf\x0c\xec\ \x0c\x02\x0c\xa6\xe6\x92\x0c\x72\x9a\x22\x0c\x55\x33\xda\x18\xbe\ \xff\x82\x84\x2e\x23\xb4\x08\x36\x94\x74\x60\x90\xe1\x57\x66\x60\ \x62\xfd\xc5\xf0\xf2\xc5\x67\x86\xdf\x2f\xdf\x33\x58\xe9\x98\x20\ \x2c\x63\x60\x60\xf8\xf5\xf7\x3b\xc3\xd7\xdf\x9f\x18\xbe\xff\xf9\ \xca\xf0\xeb\x2f\xf6\x56\x31\x00\x00\x00\xff\xff\x22\xe8\x70\x26\ \x66\x06\x86\x9f\xdf\x19\x18\xee\xdf\xfb\xc8\x60\xa9\x63\xc4\x20\ \x25\x2c\x09\x0f\xe5\xff\x0c\xff\x19\x18\x19\x99\x18\x3e\xfc\x78\ \xcd\xf0\xe0\xfd\x55\x06\x0e\x16\x2e\x86\x3f\xff\x7e\x33\xfc\xfe\ \xf3\x87\x41\x53\x47\x90\xe1\xe1\xe3\xfb\x0c\x07\x2e\x1c\x85\x84\ \xe6\xff\x7f\x0c\x7f\xff\xfd\x65\x60\x67\xe1\x64\xe0\xfd\x64\xc4\ \xb0\x62\xfe\x43\x86\x64\xd3\x46\x86\xcd\x33\x76\x30\xb8\x98\x38\ \x40\x03\x03\x52\xc8\x29\x08\x6a\x33\x98\xc9\xb8\x33\x68\x88\x98\ \x30\x48\xf2\x28\x60\x75\x17\x00\x00\x00\xff\xff\xc2\x5b\x1c\xfe\ \xff\xcf\xc0\xc0\xc2\xc2\xc8\xf0\xfe\xdd\x5f\x86\xef\xef\x7f\x30\ \x58\xe9\x9a\x42\x1c\xf1\xef\x1f\x03\x13\x33\xa4\xbc\x65\x64\x64\ \x64\x78\xf9\xe5\x21\xc3\x97\x5f\x1f\x19\xd8\x59\xb8\x20\xc9\xe2\ \xef\x7f\x06\x61\x31\x36\x06\x06\xe6\x7f\x0c\xa7\xae\x9d\x63\xf0\ \x34\x73\x85\xe7\x03\x06\x06\x06\x06\x4d\x51\x33\x86\x77\x8f\xfa\ \x19\x54\xc5\xb4\x19\x34\xe5\xd5\x18\xfe\xfe\xfb\x0b\x75\x38\x24\ \x16\x2d\x65\xbd\x19\x2c\x64\x3c\x19\x18\x19\x99\x18\x9e\x7f\xbe\ \xcf\xd0\xb0\x2f\x02\xc3\x6d\x00\x00\x00\x00\xff\xff\xc2\x1f\xe2\ \xff\x19\x18\x98\x98\x19\x19\xde\xbf\xfd\xcd\xc0\xf0\x8f\x99\x41\ \x5f\x45\x8b\x81\x81\x81\x81\x81\x11\xde\x02\x83\x44\xed\x9b\x6f\ \xcf\x19\xfe\xfc\xfb\xcd\xc0\xc8\xc0\xc8\xc0\xc8\x08\x49\xab\x9c\ \xdc\x4c\x0c\xcc\x5c\x2c\x0c\x37\x1f\xdf\x83\xeb\x61\x64\x82\xe8\ \xd3\x53\xd1\x64\xe0\xe2\xe3\x67\xf8\xf3\xf7\x0f\x6e\x8b\x09\x54\ \x40\x00\x00\x00\x00\xff\xff\x22\x98\x54\x18\x19\x19\x18\x3e\xbc\ \xff\xc5\xc0\xc4\xce\xc9\xa0\x20\x21\x07\x11\x83\x86\x1c\xcc\xe8\ \x4f\x3f\xde\x42\x9a\xa1\x50\xfe\xbf\x7f\x0c\x0c\xac\xac\x0c\x0c\ \xdc\xdc\xac\x0c\xcf\xdf\xbc\x84\x58\xc4\xc8\x04\xd7\x27\x25\x2c\ \xc1\xa0\xa9\x26\xc5\x70\xf1\xfe\x25\x86\xa7\xaf\x9f\xc3\x43\x1a\ \x06\xfe\xfc\xfd\xcb\xf0\xfb\xcf\x3f\x14\xbb\xd0\x01\x00\x00\x00\ \xff\xff\x22\x5c\x73\xfe\x67\x60\xf8\xfc\xe9\x37\x03\x2f\x17\x37\ \x83\x28\xbf\x30\xd4\x33\xd0\x4e\x15\x54\xc9\xb7\xdf\x9f\x51\x3c\ \xc2\xc0\x00\xc9\x1b\x1c\x1c\x2c\x0c\xef\x3f\x7f\x82\xeb\xf9\x0f\ \x0d\x49\x4e\x76\x4e\x86\x88\x28\x2d\x86\xd4\xce\x64\x06\x13\x69\ \x17\x86\xc3\x53\x37\x32\xfc\xff\xff\x9f\xe1\x1f\xc3\x3f\x06\x66\ \x46\x66\x86\xed\x37\x17\x32\xec\xba\xbd\x82\x41\x84\x5b\x92\x01\ \xa9\xef\x80\x02\x00\x00\x00\x00\xff\xff\x7c\x95\x4d\x0a\x80\x20\ \x18\x44\x9f\xf9\x43\x88\x50\xf7\xbf\x5b\x27\x88\x36\x2d\x34\x31\ \xfd\x5a\xb8\x11\x8a\xf6\x03\xf3\x86\x19\x98\x7f\x70\xd5\x77\x9e\ \x62\x21\xf8\x85\xe0\xc3\xa7\x2c\xdf\x91\xf1\x2c\x44\x7a\x53\xce\ \x69\xe2\x95\x28\xb5\x60\xb5\x05\x81\x86\x30\x29\x85\xb7\x2b\xd6\ \x18\x8c\x1e\x11\x7a\xf4\xd4\x4e\xf6\xbc\x91\xe4\xa0\xb6\x8a\xd3\ \xf3\xcb\xf3\x01\x00\x00\xff\xff\x84\x97\xc1\x0a\x80\x30\x0c\x43\ \x5f\xb7\xae\x9b\xc5\xff\xff\x57\xad\x16\x0f\x9e\x64\x03\xef\x21\ \x79\x10\x08\xe4\x7f\xc7\x81\x88\x64\xb3\x41\x57\x5b\x6a\x22\x63\ \x3a\x1e\x22\xa0\x5a\x38\xe2\xe4\xba\x63\x82\xf3\xb6\x93\x99\x7c\ \x7b\x7a\x4d\x8a\x54\x9a\x0c\xac\x3a\x5d\x7d\x99\xf9\x00\x00\x00\ \xff\xff\x22\xaa\x1c\xff\xfb\xf7\x3f\x03\x0b\x33\x33\x03\x13\x13\ \x13\xb2\xf9\x70\x00\x69\xf5\xa1\xbb\x1c\x92\xb1\xff\xfe\xfb\x0b\ \x75\x20\x2a\x60\x65\x62\x83\x26\x1d\x6c\x69\x18\xd2\x3a\xfc\xff\ \xff\x1f\xce\x5a\x14\x00\x00\x00\xff\xff\x22\xb2\xad\x02\x29\xf6\ \x18\x71\xf6\xe7\xb0\x97\x00\x8c\x50\x29\x6c\xb2\x4c\x8c\xc4\x0d\ \x21\xe0\x02\x00\x00\x00\x00\xff\xff\x22\xca\xe1\x4c\x4c\x8c\x0c\ \x7f\xff\xfd\x63\xf8\x87\xa5\x49\xca\xc0\xc0\x80\xbd\x5a\x86\x3a\ \x98\x91\x11\x7b\xb9\x40\x69\xcf\x08\x00\x00\x00\xff\xff\x22\xaa\ \x38\x64\x61\x85\xa4\xd5\xdf\x7f\x7e\xc3\x1d\x85\x0c\x58\x18\x59\ \xb1\xb6\x9d\xff\xfd\xfd\xcf\xc0\xcc\xc4\xc4\xc0\x84\x65\x80\xe6\ \xf7\xbf\x9f\xd0\xa2\x8e\xbc\x91\x38\x00\x00\x00\x00\xff\xff\x22\ \x1c\xe2\x8c\x0c\x0c\xec\xec\x2c\x0c\xdf\x7e\x7c\x67\xf8\xf1\x0b\ \x7b\xbb\x81\x95\x99\x1d\xc3\xfe\xff\x0c\x0c\x0c\x7f\xfe\xfe\x63\ \x60\x65\x65\x65\x60\x61\x46\x76\x38\x24\xfc\x7f\xfc\xf9\x06\x2d\ \x22\xc9\x03\x00\x00\x00\x00\xff\xff\x22\x58\x73\x32\x32\x32\x30\ \x70\x73\x43\xfa\x96\x1f\xbf\x7e\x82\x0a\xff\x87\x3b\x8e\x81\x81\ \x81\x81\x93\x95\x9b\x01\x32\xa8\x89\x70\xda\xff\x7f\x0c\x0c\xbf\ \x7f\xfd\x65\xe0\x64\xe7\x80\x14\x85\x50\x09\x58\x3e\xf9\xfa\xeb\ \x23\x24\x89\x91\xe9\x72\x00\x00\x00\x00\xff\xff\x22\x2a\x8d\xf3\ \xf2\xb1\x32\x7c\xff\xf1\x8d\xe1\xe5\xfb\xd7\x10\x07\xff\x47\x38\ \x90\x81\x81\x81\x81\x87\x4d\x80\x81\x81\x01\x29\xf4\x18\x21\x0e\ \xff\xf9\xf3\x2f\x03\x1f\x17\x2f\x44\x0e\xaa\x89\x91\x81\x91\xe1\ \xcf\xbf\xdf\x0c\x9f\x7e\xbe\x63\x60\x66\x64\x21\xd8\xb7\xc4\x05\ \x00\x00\x00\x00\xff\xff\xc2\xef\x70\xa8\x03\xf8\x05\xd9\x18\x18\ \xfe\xfc\x64\xb8\xf7\xec\x21\xd4\xe1\xa8\x96\x09\x70\x88\xa2\x74\ \xb3\x18\x19\x19\x18\xfe\xfc\x81\x54\x5c\x62\x82\x42\x0c\x0c\x0c\ \x90\x9e\x10\xcc\x8d\x9f\x7e\xbe\x83\x38\x9c\x89\x85\x81\xdc\x20\ \x07\x00\x00\x00\xff\xff\x22\x18\xe2\x7f\xff\xfd\x67\xe0\x17\x64\ \x61\x60\x60\x61\x60\xb8\x78\xe7\x2a\x9a\xbf\x20\x61\x2e\xc2\x25\ \xc5\xc0\xc6\xc2\x09\x29\x29\xa0\xed\xf7\x9f\x3f\xfe\x33\xfc\xfc\ \xf6\x87\x41\x5e\x42\x06\xee\x59\x58\xe8\xbe\xfc\xf2\x88\xe1\xeb\ \xaf\x8f\x0c\xcc\x8c\xcc\x64\xa7\x71\x00\x00\x00\x00\xff\xff\xc2\ \xeb\x70\x46\x46\x06\x86\xbf\x7f\xfe\x33\xf0\xf0\x31\x31\xf0\x0a\ \x73\x32\x9c\xbc\x7a\x8e\x81\x81\x81\x81\x81\x19\x5e\x11\x41\x1c\ \x2e\xca\x2d\xc3\x20\xc0\x2e\xc2\xf0\x17\xda\x4f\x64\x62\x66\x60\ \xf8\xfc\xe1\x0f\x03\xc3\xaf\xff\x0c\xba\xca\x9a\x50\xd3\x10\x2d\ \xbe\x7b\xef\x2e\x33\xfc\xfe\xfb\x0b\x9a\xc6\x91\x9d\x8e\x48\x4e\ \x4c\x8c\x4c\x0c\xac\x2c\x2c\x0c\xcc\xcc\xd8\xcb\x7b\x00\x00\x00\ \x00\xff\xff\x22\x5c\xe5\xff\x63\x60\x60\x65\x67\x60\x50\x50\xe2\ \x67\x38\x7b\xe3\x32\xc3\xa3\x57\x8f\xa1\x5d\x36\x48\xfb\xfa\xdf\ \xff\x7f\x0c\x9c\xac\x3c\x0c\x4a\x42\x3a\x0c\xbf\xfe\xfd\x64\x60\ \x64\x60\x62\x60\x62\x62\x64\x78\xfa\xe8\x3b\x03\x2b\x27\x2f\x83\ \x8d\xae\x05\xc4\x22\xa4\x6e\xd8\xb5\x57\x27\x18\x58\xa0\xc9\x04\ \xa5\x3c\x87\xfa\x81\x87\x4d\x90\xe1\xeb\xef\x8f\x0c\x2f\xdf\xbd\ \x61\x78\xf7\xf1\x23\xd6\x16\x22\x00\x00\x00\xff\xff\x22\xaa\x38\ \xfc\xf7\xf7\x3f\x83\x9a\x06\x2f\xc3\xe7\x8f\x6f\x18\x36\x1f\xdb\ \xc9\xc0\xc0\xc0\x80\x51\x8d\xdb\x2b\x86\x30\xfc\xfb\xfb\x97\x81\ \x99\xed\x1f\xc3\xcf\x6f\x4c\x0c\xa7\x8e\x3e\x60\x08\x75\xf2\x66\ \x50\x93\x51\x61\xf8\xf7\xef\x1f\x03\x23\x23\x24\x24\x9f\x7c\xba\ \xc3\x70\xfb\xed\x45\x06\x0e\x56\x2e\x06\x56\x36\x26\x86\xcf\xdf\ \xbe\x30\x30\x30\x40\x6a\x66\x58\x6d\x6a\x25\xef\xc5\x60\x2d\x92\ \xc0\xa0\xfc\x27\x80\x21\x55\x77\x02\x83\x28\x8f\x34\x24\x86\x90\ \x3c\x00\x00\x00\x00\xff\xff\x22\xaa\x02\xfa\xfd\xeb\x3f\x83\x84\ \x0c\x1b\x83\x84\x12\x1f\xc3\xf4\xf5\x8b\x18\x7e\xfd\xf9\xc5\xc0\ \xc2\xcc\xcc\xf0\x9f\xe1\x3f\x7c\xe4\x49\x5b\xcc\x82\x21\x4c\x2f\ \x9f\xe1\xd3\xa7\xef\x0c\x5b\xd6\x3d\x64\xb0\xd5\x73\x61\x98\x98\ \xd7\x0a\x35\x83\x91\xe1\x1f\x03\xc4\xa3\xfb\xef\xad\x62\xf8\xfa\ \xeb\x13\x03\x0b\x0b\x33\x83\x98\x18\x27\xc3\xc3\x17\x4f\x19\x9e\ \xbf\x7b\x01\x0d\x70\x48\x90\xf3\xb2\x09\x33\x14\xb9\xb6\x30\xb4\ \x25\xb4\x31\x38\xe9\x3a\x33\xc0\x87\xe7\x90\x9a\x1c\x00\x00\x00\ \x00\xff\xff\x22\xae\xad\xc2\xc0\xc0\xf0\x9f\xf1\x1f\x83\xad\x93\ \x04\xc3\xd5\x5b\x17\x19\xa6\xac\x9b\xcd\xc0\xc0\xc0\xc0\xf0\xfb\ \xcf\x1f\xb8\xc3\xfe\xff\xff\xcf\xe0\xa7\x91\xc1\x50\x67\xb7\x86\ \x61\x4d\xf9\x46\x86\xbd\x13\xd7\x30\x88\xf0\x8b\x40\xc6\x56\x18\ \xfe\x32\x30\x33\xb2\x30\xdc\x7b\x77\x99\xe1\xd0\x83\xf5\x0c\xdc\ \x6c\x7c\x0c\xbf\x7e\xfd\x66\x50\xd7\xe1\x67\xf8\xf8\xf1\x15\xc3\ \xca\x3d\x9b\x20\xf6\xfc\x83\xe5\x03\xb4\x21\x38\x2c\x39\x18\x00\ \x00\x00\xff\xff\x22\x6a\x08\x8e\x91\x91\x81\xe1\xf7\xcf\xff\x0c\ \x12\x32\x2c\x0c\xd6\xee\x32\x0c\x95\x53\xdb\x18\x4c\x35\x8d\x18\ \x6c\x75\x2d\x19\x7e\xff\xf9\xcd\xc0\xc4\xc4\xc4\xc0\xcc\xc4\xc4\ \xf0\xff\xff\x3f\x06\x55\x29\x55\x06\x55\x29\x48\x29\x02\x49\xbf\ \xff\x19\x98\x19\x59\x18\x3e\xfd\x7c\xc7\x30\xe7\x6c\x2d\xc3\xdf\ \x7f\xbf\x19\xd8\x59\x38\x19\x7e\xff\xfe\xc7\x20\x24\xc6\xcc\xe0\ \x1a\x28\xcb\xd0\xb1\xaa\x9b\x41\x5c\x58\x94\x21\xc4\xde\x9f\x81\ \x99\x81\x91\xe1\xff\xff\x7f\x0c\x9f\x7f\x7d\x60\x78\xf8\xe1\x3a\ \xc3\xa9\x27\x3b\x19\xde\x7c\x7b\xc6\xc0\xca\xcc\x86\xd2\x52\x04\ \x00\x00\x00\xff\xff\x62\xe4\xf1\x90\xfb\xcf\xc8\xc8\xc0\xf0\xeb\ \xe7\x7f\x06\x59\x45\x76\x06\xb7\x40\xdc\x03\xfb\xff\xff\x33\x30\ \x70\x70\x30\x33\x9c\x3a\xf2\x96\xe1\xe6\xf9\xbf\x0c\x4b\x6b\x66\ \x33\x78\x59\x3a\x42\xca\x75\x68\x1a\xfe\xf7\xff\x1f\xc3\xff\xff\ \x90\x92\x07\x36\x9e\xf8\xe4\xe3\x6d\x86\xe9\xa7\xca\x18\x9e\x7e\ \xba\xcb\xc0\xc9\xca\x03\x1f\xfc\xfc\xff\x9f\x81\x81\x9d\x9d\x89\ \xe1\xcb\x97\x5f\x0c\x2f\x5f\x7e\x65\x50\x93\x51\x66\x10\x17\x12\ \x63\xf8\xf1\xe7\x1b\xc3\xfb\xef\x2f\x19\x3e\xfe\x78\x03\xcf\xfc\ \xe8\x19\x14\x00\x00\x00\xff\xff\x22\xc9\xe1\x30\xcb\x38\x39\x59\ \x18\x1e\xde\xff\xcc\x70\xf1\xf4\x47\x06\x6f\xfd\x50\x86\x64\xcf\ \x78\x06\x1d\x25\x4d\x06\x56\x68\x6f\x06\xe6\xe0\x6f\xbf\x3f\x33\ \xac\xbd\x3a\x99\xe1\xf0\x83\x0d\x0c\x7f\xfe\xfd\x82\x8c\x02\xa0\ \x8d\xd8\xc2\x86\xac\x59\x58\x98\x18\x7e\xfc\xfa\xc1\xf0\xfb\xcf\ \x1f\xc8\x8c\x03\x13\x2b\xb4\xe4\x61\xc4\x3a\xca\x0b\x00\x00\x00\ \xff\xff\x22\x79\x0e\x82\x91\x91\x81\xe1\xfb\xb7\x3f\x0c\x32\x72\ \xdc\x0c\x7e\xe1\xd2\x0c\x77\x19\x37\x31\x18\x25\x58\x31\xb4\x2e\ \xee\x63\x60\x60\x60\x60\xf8\xfb\x17\x61\xc9\x9f\x7f\xbf\x18\x0e\ \xde\x5f\xcb\xc0\xc0\xc0\xc0\xc0\xc5\xca\x8b\xd5\x01\x8c\x4c\x90\ \x51\x81\x9f\x3f\xff\x32\x30\x33\xb0\x31\x70\xb0\x72\x33\xb0\xb3\ \x70\x32\x30\x33\x42\x27\x0b\xb0\x0f\x4d\xff\x07\x00\x00\x00\xff\ \xff\x22\x6b\xf2\x84\x91\x89\x81\xe1\xd7\xaf\x7f\x0c\x3f\xbe\xfd\ \x65\x50\x53\x15\x67\x10\x94\xe0\x65\xd8\x7a\x6c\x0f\x03\x03\x03\ \x03\x03\x13\x33\x33\x3c\xc9\xf0\xb1\x0b\x33\xb8\xa9\xc6\x30\x7c\ \xf8\xf1\x8a\xe1\xe3\xcf\xb7\xd0\x34\x8f\x3d\x2a\x19\x19\x19\x50\ \x7a\x3d\x78\xdb\x30\xff\x19\xfe\x00\x00\x00\x00\xff\xff\x22\x6b\ \x46\x02\x6e\xd1\x3f\x06\x86\xff\x8c\x7f\x18\xd4\x35\x04\x19\xce\ \x1c\xbd\xca\x70\xe9\xde\x15\x06\x3d\x25\x1d\xc8\x80\x11\xb4\x76\ \x0d\xd4\xca\x66\x90\xe1\x53\x65\x78\xf1\xe9\x11\xc3\xb1\x27\x9b\ \x19\x3e\xfc\x78\x85\xb3\xfd\x4e\x84\xad\xff\xff\xfd\xff\xc3\xc8\ \xcf\x2e\xfa\x0c\x00\x00\x00\xff\xff\xa2\x6c\xba\x8a\x91\x81\xe1\ \xf7\xef\xff\x0c\xea\xba\xbc\x0c\x7f\xfe\x7f\x63\x98\xb1\x71\x21\ \x03\x03\x03\x03\xc3\x9f\xbf\x7f\xe0\x0d\x31\x16\x46\x56\x06\x2b\ \x39\x1f\x86\x20\x9d\x2c\x06\x5e\x36\x01\x86\xbf\xff\xfe\x30\xe0\ \xcc\x40\x04\x00\x13\x23\xe3\xbf\xdf\x7f\x7f\x32\xa8\x0a\x1b\xed\ \x07\x00\x00\x00\xff\xff\xa2\xc8\xe1\x8c\x8c\x0c\x0c\x7f\x7f\xff\ \x67\xe0\x15\x60\x64\x70\x74\x97\x65\x98\xb9\x76\x31\xc3\xf6\x13\ \x7b\x19\xd8\x58\xd9\xe0\x0e\xff\xcf\xf0\x9f\x88\xf9\x1f\xa2\xc0\ \xff\xff\x0c\xff\x99\x98\x99\xd8\x7e\x3b\x28\x06\xcf\x02\x00\x00\ \x00\xff\xff\xa2\x78\x82\x90\x91\x89\x81\xe1\xe7\x8f\x7f\x0c\xda\ \x86\x3c\x0c\xf6\x3e\xc2\x0c\x69\x93\x32\x19\x66\x6c\x9a\xcf\xf0\ \xe1\xf3\x67\x86\xff\xff\x11\x6d\x94\x6f\xbf\x3f\x33\xfc\xf9\xff\ \x1b\xe7\xc8\x14\x0e\xd3\xff\x33\x32\x32\xfd\x63\x62\x64\xfe\xc3\ \xc2\xc4\xfa\xfb\xfd\xf7\x57\x8c\x0e\x0a\xa1\x53\xd4\x45\x8d\x8e\ \x03\x00\x00\x00\xff\xff\x22\xb9\x38\xc4\x05\x60\x65\xfc\xb7\xef\ \xbf\x19\x9e\x3c\xfd\xc0\x20\x29\x20\xc5\xa0\x28\x29\xc7\xc0\xce\ \xc6\xce\xf0\xfd\xf7\x67\x86\x8f\x3f\xde\x41\x47\xbc\x30\xd3\x36\ \x64\x62\x16\xba\x82\x02\xba\xd8\xe0\x3f\xc3\x3f\xe6\x7f\xff\x20\ \x0b\x1c\xfe\xfe\xfb\xfd\xef\xf7\xdf\x5f\x4c\xb6\xf2\x41\x2b\x52\ \x4d\x5b\x62\x58\x98\x58\xfe\x02\x00\x00\x00\xff\xff\x22\x3b\x73\ \x62\x58\xce\xc8\xc0\xf0\xe3\xfb\x5f\x06\x16\x66\x66\x06\x35\x15\ \x31\x86\x5f\xbf\xbf\x31\xdc\xff\x78\x09\x3e\xb5\x0d\x9d\x66\xf9\ \x0f\x59\x09\xc1\x04\x6f\xe3\xfe\x67\xf8\xc7\xfc\xf7\xdf\x5f\xc6\ \xbf\xff\x7e\x33\xfe\xfd\xf7\x87\xe1\xef\xbf\xbf\x0c\x8c\x0c\x90\ \x7e\x2c\x17\x2b\xdf\x17\x71\x4e\xb1\xc7\xa2\x5c\x32\xb7\xcd\x64\ \xdc\x97\x9a\xcb\x7a\xac\x82\x0c\xb4\xff\x67\x04\x00\x00\x00\xff\ \xff\x62\x81\xac\x7a\xf8\x4f\x95\x09\x70\x48\xf3\xfa\x3f\xc3\xcf\ \x1f\x7f\xfe\x33\x32\xb2\xfc\xe7\x64\x65\x83\x2f\xd7\xf8\xf7\xff\ \x2f\xf3\xdf\x7f\x7f\x18\x7f\xff\xfb\xcd\xf8\xe7\xdf\x1f\x86\x7f\ \xff\x20\x6b\x5e\xd8\x20\x0e\xfc\x2a\xc0\x21\xff\x58\x94\x5b\xe6\ \xb6\x24\xaf\xc2\x75\x49\x5e\xc5\xab\x92\xbc\x0a\x37\x45\xb8\xa4\ \x1e\xf0\x71\x08\xbd\x66\x62\x64\xfe\xc7\xc0\xc0\xc0\xf0\xff\xff\ \x3f\x26\x06\x68\xac\x00\x00\x00\x00\xff\xff\x62\xf9\xf3\xe7\x0f\ \x03\x1b\x1b\xdb\x3f\x06\x86\xdf\x4c\x24\x25\x3f\x88\x53\xff\x33\ \x32\x32\xa0\x85\xe0\x7f\xe6\x7f\xff\xff\x30\xfe\xfe\xfb\x8b\xf1\ \xef\x9f\xdf\xf0\x10\x64\x61\x66\x67\xe0\x66\xe5\xfb\x2a\xc6\x21\ \xff\x58\x94\x5b\xfa\x0e\xc4\x81\x4a\x57\x25\x78\x14\x6e\x8a\x72\ \x4b\xdd\x47\x76\x20\x3a\x80\x2c\xc8\xf9\xcf\xc0\xc4\xc8\x0c\xcf\ \xe5\x00\x00\x00\x00\xff\xff\x62\x11\x13\x10\x7e\xf2\xf4\xed\x73\ \x59\x76\x66\xee\xbf\xff\xff\x33\x30\x63\x77\x3c\xe3\x7f\xa4\xc5\ \x2e\x28\x69\x10\x11\x82\x10\x33\x59\x61\x0e\xe4\x16\x7d\x22\xca\ \x2d\x73\x5b\x82\x57\xe1\xba\x14\xaf\xe2\x35\x09\x1e\x85\x9b\x22\ \xdc\xd2\xf7\xf9\x39\x84\x5e\xe1\x72\xe0\xff\xff\xff\x98\xff\xc3\ \x63\x1f\xba\x18\x81\x91\xf1\x3f\x13\x96\x21\x5b\x00\x00\x00\x00\ \xff\xff\x62\xd9\xd3\xbf\xc1\x2e\xa4\x2e\x6e\xd3\xc5\x2b\x97\x74\ \x59\x98\xa5\xfe\x42\x06\x53\x99\xfe\x33\x31\x22\x56\x01\xfd\xfd\ \xff\x87\xf1\xcf\x5f\xc8\x0a\x86\xbf\xff\xa1\x21\xc8\xc4\xce\xc0\ \xcd\xc6\xf7\x5d\x94\x43\x0e\x12\x82\x3c\x8a\xd7\x24\x79\x15\xaf\ \x49\xf0\xca\xdf\x10\xe5\x96\xb9\xcf\xcf\x2e\xf4\x8a\x89\x09\xb7\ \x03\xff\x41\x17\xcc\x40\x03\x05\xb2\x04\x84\x91\xe9\x2f\xb1\x91\ \x0e\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\xeb\x8f\x6f\x84\ \xbd\x4a\xa2\x37\x3f\xfe\x76\xd9\x32\x38\x46\xee\xdf\xd7\x6f\xdf\ \x99\xfe\x33\x40\x06\x32\x59\x99\xd8\x18\xb8\x58\x79\x3f\x09\x70\ \x88\x3d\x11\xe1\x96\xbe\x23\xc1\xa3\x70\x43\x92\x57\xe1\x9a\x38\ \x8f\xfc\x4d\x51\x6e\xa9\x07\xfc\xec\xc2\x78\x1d\x88\x2d\x04\x89\ \x74\x1b\x5e\x00\x00\x00\x00\xff\xff\x62\xfc\xf3\xf7\x0f\x33\x33\ \x13\xf3\xdf\x57\xef\xde\xf3\x66\xcf\x4e\xde\x2e\xa1\xfd\x56\x4f\ \x96\x4f\xfd\xac\x04\xaf\xc2\x75\x69\x3e\x95\x4b\x52\xbc\x8a\xd7\ \xc4\xb8\x65\xef\x08\x70\x8a\xbe\x64\x66\x62\xc6\xde\xe2\xf9\xff\ \x8f\xf9\x1f\xc3\x3f\x68\xc3\x96\x11\x69\xa9\x13\xd9\x9d\x78\x82\ \x00\x00\x00\x00\xff\xff\x03\x00\x3c\x1e\x17\xa6\x18\xe4\xa8\x9e\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0f\x24\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x70\x61\x67\x65\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\ \x3a\x20\x36\x34\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\ \x38\x30\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\ \x33\x34\x33\x34\x33\x34\x22\x0a\x0a\x20\x20\x20\x20\x49\x6d\x61\ \x67\x65\x20\x7b\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x75\x73\x65\x72\x49\x63\x6f\x6e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x78\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\ \x74\x2e\x78\x3b\x20\x79\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\ \x65\x63\x74\x2e\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\ \x75\x72\x63\x65\x3a\x20\x22\x71\x74\x2d\x6c\x6f\x67\x6f\x2e\x70\ \x6e\x67\x22\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\ \x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x74\x6f\x70\x3b\x20\x6c\x65\x66\x74\x4d\x61\ \x72\x67\x69\x6e\x3a\x20\x31\x30\x3b\x20\x74\x6f\x70\x4d\x61\x72\ \x67\x69\x6e\x3a\x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\ \x67\x68\x74\x3a\x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\ \x65\x6e\x74\x22\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\ \x75\x73\x3a\x20\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x43\x6c\x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\ \x72\x65\x20\x73\x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\ \x65\x20\x74\x6f\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\ \x20\x73\x74\x61\x74\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x69\x6e\ \x67\x20\x74\x68\x65\x20\x69\x6d\x61\x67\x65\x20\x74\x6f\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x69\x74\x73\x20\x69\x6e\ \x69\x74\x69\x61\x6c\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\ \x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\ \x20\x27\x27\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\ \x69\x67\x68\x74\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x72\x69\x67\x68\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\ \x20\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x3b\x20\x72\x69\x67\x68\x74\x4d\x61\x72\ \x67\x69\x6e\x3a\x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\ \x67\x68\x74\x3a\x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\ \x65\x6e\x74\x22\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\ \x75\x73\x3a\x20\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x43\x6c\x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\ \x72\x65\x20\x73\x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\ \x65\x20\x74\x6f\x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\ \x41\x72\x65\x61\x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\ \x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\ \x6c\x69\x63\x6b\x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\ \x74\x65\x20\x3d\x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x27\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x64\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\ \x66\x74\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x62\x6f\x74\ \x74\x6f\x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\ \x6f\x6d\x3b\x20\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\ \x31\x30\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\ \x69\x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\ \x22\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\ \x20\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\ \x6c\x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\ \x73\x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\ \x6f\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\ \x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\ \x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x20\x7d\x0a\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x73\x74\x61\x74\x65\ \x73\x3a\x20\x5b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\ \x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\ \x49\x6e\x20\x73\x74\x61\x74\x65\x20\x27\x6d\x69\x64\x64\x6c\x65\ \x52\x69\x67\x68\x74\x27\x2c\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\ \x20\x69\x6d\x61\x67\x65\x20\x74\x6f\x20\x6d\x69\x64\x64\x6c\x65\ \x52\x69\x67\x68\x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x53\x74\x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x6d\x69\x64\ \x64\x6c\x65\x52\x69\x67\x68\x74\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x50\x72\x6f\x70\x65\x72\x74\x79\x43\x68\ \x61\x6e\x67\x65\x73\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\ \x75\x73\x65\x72\x49\x63\x6f\x6e\x3b\x20\x78\x3a\x20\x6d\x69\x64\ \x64\x6c\x65\x52\x69\x67\x68\x74\x52\x65\x63\x74\x2e\x78\x3b\x20\ \x79\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x52\x65\ \x63\x74\x2e\x79\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x2c\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x49\x6e\ \x20\x73\x74\x61\x74\x65\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\ \x66\x74\x27\x2c\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x69\x6d\ \x61\x67\x65\x20\x74\x6f\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\ \x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\ \x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x62\x6f\x74\x74\x6f\x6d\x4c\ \x65\x66\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x50\x72\x6f\x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\x73\ \x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x75\x73\x65\x72\x49\ \x63\x6f\x6e\x3b\x20\x78\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\ \x66\x74\x52\x65\x63\x74\x2e\x78\x3b\x20\x79\x3a\x20\x62\x6f\x74\ \x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\x63\x74\x2e\x79\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x5d\ \x0a\x7d\x0a\ \x00\x00\x08\xe9\ \x00\ \x00\x20\xce\x78\x9c\xe5\x59\x51\x73\xda\xb8\x16\x7e\xe7\x57\x9c\ \xc9\xed\x4c\x9b\x1d\x4a\xd2\x24\xed\x76\x61\xfa\x60\x8c\x43\x3c\ \x03\x98\xd8\xa6\xb9\x99\x9d\x9d\x1d\x61\x04\xe8\xc6\x58\x54\x96\ \x93\x72\x3b\xfd\xef\x7b\x24\xdb\x04\x1b\xbb\x1b\xdf\xd9\x3e\x5d\ \xc8\x10\x7c\x24\x7d\xe7\x3b\x9f\xce\x91\x84\x7d\xf6\xcb\x3f\xf8\ \x6a\xe9\x3f\x30\xf9\x76\x27\xd8\x6a\x2d\xe1\x8d\x79\x0a\x17\xe7\ \xef\x2e\x61\xc0\x56\x8c\xc0\x34\x0c\x80\x44\x8b\x33\x2e\x80\xc9\ \x18\xe2\x64\x1e\xb3\x05\x23\x62\xf7\xe6\x2d\xa3\xf1\x69\x27\x1d\ \x1c\x49\x12\xc8\x2e\xac\xa5\xdc\x76\xcf\xce\x9e\x9e\x9e\x3a\x5f\ \xe4\xdb\xad\xe0\xff\xa1\x81\xec\x70\xb1\x3a\x0b\xe9\x8a\x84\x99\ \x2f\x7f\xcd\x62\x58\xb2\x90\x02\xfe\xdf\x12\x21\x81\x2f\x41\xae\ \x29\xd0\xaf\x64\xb3\x0d\x69\x9c\x5f\xdf\x4a\xf0\x39\x0f\x1f\x98\ \xec\x64\x43\x5f\xdd\xfa\x7f\xf6\xad\xa1\x3d\xf9\x73\x64\x9b\xd6\ \xc4\xb3\xba\x7d\x6f\xf0\x4a\xb5\xdc\xf3\x04\x36\x64\x07\x49\x4c\ \x71\x6c\xee\x20\x89\x16\x54\x68\x2c\x49\xc5\x66\x0f\x8c\x83\x20\ \x64\x01\x8d\xb0\x33\xc1\xae\x3c\x0c\xf9\x53\xdc\xcd\x9c\x9c\xb8\ \x74\xc1\x62\x29\xd8\x3c\x91\x8c\x47\x2a\x7c\x0d\xcb\x22\x88\x79\ \x22\x02\xaa\x2d\x73\x16\xa1\x0a\x38\x16\x71\xdb\xf0\xc4\xe4\x1a\ \x50\x23\xf5\x9f\x27\x52\xc1\x6c\xf8\x82\x2d\x59\x40\x14\x46\x1b\ \x88\xa0\xb0\x45\x0e\x4c\x4a\xba\x00\x94\xe6\x91\x2d\xf0\x8b\x5c\ \x13\xa9\x29\xa5\x1c\x58\xb4\x82\x80\x47\x0b\xa6\x06\xc5\x6a\x90\ \x46\xa2\x52\x71\x03\x80\x5f\xa0\xc8\x4d\x47\x94\x91\x0a\xf8\x82\ \xc2\x26\x89\x25\x08\x2a\x09\x92\x55\xb0\x64\xce\x1f\x55\x53\x36\ \xbb\x29\x0a\x40\xc4\x25\x86\xdf\x4e\x95\x0a\x11\x50\xe1\x1c\x3a\ \x8e\x16\x25\x56\xe8\x35\x08\x09\xdb\x50\xd1\xa9\xa3\x82\x2e\x0f\ \x44\xc9\xa9\x60\xa8\x8b\x24\xa0\x3f\x8b\x0d\x7a\xcd\x61\x54\x97\ \x05\x0f\x92\x0d\xc5\x74\xcc\x67\x4e\x25\x2e\xc7\x16\x81\xd9\x81\ \x39\xc0\x48\x18\x3f\xab\xaf\x67\x0d\x1b\x73\x84\xc3\x78\xf6\x61\ \x4e\x28\xd3\xe3\x15\x7c\x44\x36\x54\x91\x2b\xd4\x86\x2e\x0c\xaf\ \x54\x18\x18\xd4\xf3\x90\x38\x77\x80\x43\x55\x67\x8c\x2d\xf5\xc3\ \x45\xac\xb3\x76\x4e\x55\x86\x61\x94\x1c\x68\xb4\x40\x2b\x55\xc9\ \x84\x3c\x37\x5c\x52\x48\x25\xc4\x71\x98\xcc\xec\x91\x2e\x72\xb4\ \x25\xb6\xa7\xa2\xc5\x7c\x29\x9f\x54\x8a\x65\xf9\x07\xf1\x96\x06\ \x2a\xfb\x70\x2c\x53\x69\x29\x54\xde\x45\x69\x06\xc6\x71\x16\x5e\ \x5e\x8f\x37\xb6\x07\x9e\x73\xed\xdf\x19\xae\x05\xf8\x7d\xea\x3a\ \x9f\xed\x81\x35\x80\xfe\x3d\x36\x5a\x60\x3a\xd3\x7b\xd7\x1e\xde\ \xf8\x70\xe3\x8c\x06\x96\xeb\x81\x31\x19\xa0\x75\xe2\xbb\x76\x7f\ \xe6\x3b\xae\xa7\xcb\xc6\xf0\x70\xf0\x89\x6e\x33\x26\xf7\x60\xfd\ \x7b\xea\x5a\x9e\x07\x8e\x0b\xf6\x78\x3a\xb2\x11\x0f\x1d\xb8\xc6\ \xc4\xb7\x2d\xaf\x0d\xf6\xc4\x1c\xcd\x06\xf6\x64\xd8\x06\xc4\x80\ \x89\xe3\x2b\x90\x91\x3d\xb6\x7d\xec\xe9\x3b\x6d\xed\xfa\x78\x24\ \x38\xd7\x30\xb6\x5c\xf3\x06\x2f\x8d\xbe\x3d\xb2\xfd\x7b\xed\xf2\ \xda\xf6\x27\xca\xdd\xb5\xe3\x2a\x20\x03\xa6\x86\xeb\xdb\xe6\x6c\ \x64\xb8\x30\x9d\xb9\x53\xc7\xb3\x40\xc5\x37\xb0\x3d\x73\x64\xd8\ \x63\x6b\xd0\x41\x0e\xe8\x17\xac\xcf\xd6\xc4\x07\xef\xc6\x18\x8d\ \x8a\xe1\x2a\x1c\xe7\x6e\x62\xb9\x2a\x86\xc3\x70\xa1\x6f\x21\x53\ \xa3\x3f\xb2\x94\x3b\x1d\xed\xc0\x76\x2d\xd3\x57\x61\x3d\x7f\x33\ \x51\x44\x24\x39\x6a\x2b\x20\x6f\x6a\x99\x36\x7e\x47\x5d\x2c\x0c\ \xca\x70\xef\xdb\x19\xac\x67\xdd\xce\xb0\x1f\x36\xc2\xc0\x18\x1b\ \x43\x8c\xf1\xcd\xdf\xab\x83\x93\x64\xce\x5c\x6b\xac\xb8\xa3\x24\ \xde\xac\xef\xf9\xb6\x3f\xf3\x2d\x18\x3a\xce\x40\xcb\xee\x59\xee\ \x67\x5c\x26\xbd\x1e\x8c\x1c\x4f\x0b\x37\xf3\x2c\x4d\x66\x60\xf8\ \x86\x76\x8f\x28\x28\x1c\xf6\xc0\xef\xfd\x99\x67\x6b\x09\xed\x89\ \x6f\xb9\xee\x6c\xea\xdb\xce\xe4\x14\xe7\xfc\x0e\x15\x42\xa6\x06\ \x8e\x1e\x68\xad\x9d\x89\x8a\x39\xcd\x1d\xcb\x71\xef\x15\xb4\xd2\ \x43\xcf\x46\x1b\xee\x6e\x2c\xb4\xbb\x4a\x5e\xad\x9a\xa1\xe4\xf0\ \x50\x3d\xd3\x3f\xec\x86\x2e\x51\x4c\x1d\xd8\x73\xbc\x30\xb1\x86\ \x23\x7b\x68\x4d\x4c\x4b\x75\x70\x14\xd0\x9d\xed\x59\xa7\x38\x79\ \xb6\xa7\x3a\xd8\xda\x39\x66\x04\xba\x9d\xe9\xd8\xd5\xa4\x21\x37\ \x3d\x5d\xd7\xc5\x74\x6e\xeb\xd9\x05\xfb\x1a\x8c\xc1\x67\x5b\xf1\ \xcf\xfa\x63\x3e\x78\x76\x96\x3e\x5a\x3e\xf3\x26\x53\xbf\x73\x72\ \xb0\xd9\x58\x93\x41\xbe\xd5\xbc\x4a\xcd\xff\xdc\xeb\xac\xd5\x62\ \x9b\x2d\xc7\xfd\xef\x56\xde\x26\x2c\x78\x80\x8b\xce\x79\xab\xe5\ \xe2\x9e\x49\xa2\x15\xee\x5e\xdf\x5a\xaa\xca\xd9\xa2\x8b\x65\x8d\ \xab\xc2\x93\xbe\x7c\x62\x0b\xb9\xee\xc2\xe5\xc5\x79\x0f\xd6\x54\ \x2d\xa3\x5d\xb8\xfa\x88\x17\x01\x0f\xb9\xe8\xc2\xc9\xbf\x2e\x2e\ \xd5\xfb\xa4\xa5\xbb\xe3\xda\x81\x45\x2f\x77\xf0\x48\x04\x50\x12\ \xe3\xea\x69\x26\xe2\x91\x76\xe1\x77\x38\xef\x5c\xb4\xf3\x8f\x77\ \x97\xea\xf3\xc3\xfb\xbd\xe1\x63\x5b\x8f\xff\xd1\x0b\xfb\x5f\x5c\ \xa9\xbe\xbf\x7d\xd4\x9f\x1a\xe2\x37\x84\x78\x87\x7f\xf0\x47\x4a\ \x60\x84\x6b\xea\x18\xb7\xa6\x30\x0b\x27\x0f\x29\xe5\xe2\xef\xb6\ \xb8\x3a\xe6\x76\xd5\xd7\x0a\xa9\x5a\xc0\xe1\x9b\x5e\x39\x31\x1e\ \x4b\x77\xec\x8c\x58\x44\x89\x38\xe9\x81\xc4\x21\x5d\x28\x58\x7b\ \x30\x27\x61\x68\x66\x02\x0c\x88\x78\xc0\xbd\xe9\x04\xbe\xbf\x08\ \xd8\x8e\x6e\x13\xb2\x28\x03\xa7\xd6\x22\xb0\x8d\x3b\x12\x89\x1a\ \x40\x3b\x89\xac\xc2\xce\xcc\x45\x70\x8f\x84\x1b\x1e\xbd\x9c\x74\ \x0d\xf6\xbe\xa1\x88\xee\x73\xdc\xfe\x78\x03\xde\xd5\xaa\xec\x1b\ \x8e\x15\x77\x04\x26\x2d\x7d\x39\x7f\x33\x99\xb3\xe0\x98\xbd\x36\ \x17\xd1\x87\x3c\x6c\xa2\x78\x25\x70\x6e\x2f\x22\xdf\x53\x75\xa0\ \x68\xa4\x79\x0d\xed\x6a\xfc\x29\x25\xc1\x7a\x9a\x2c\x97\x8d\x84\ \xaf\x0b\xa0\x52\x1c\x75\x98\x96\x61\x03\xdd\x71\xf6\x84\xac\xcc\ \x76\x21\x8b\xd0\x8e\x08\xd6\xac\x61\xae\x1f\x43\xe7\xf6\x92\x32\ \x89\xd8\x36\x61\x5d\x87\xfe\xdc\x52\xaa\xa6\x10\x4f\x7b\xfd\x30\ \x79\xb1\x8b\x3c\xb3\x2b\x03\xa8\x94\xc7\x5c\xa3\x49\x50\x3c\xb7\ \x35\x11\x9f\x45\x95\xe2\xa3\xb9\x88\x3e\xc2\xc3\xed\x50\x50\xfa\ \xe2\x15\x41\xeb\x50\x81\x9e\xdb\x4b\xfa\x50\xd2\x08\x3d\xd3\xb9\ \x92\x7d\xb5\x07\xb5\x26\x34\x0d\xa0\x46\xa0\xe7\x96\x52\x82\x86\ \x78\x1a\x7e\x79\x04\x1e\xee\x15\xc7\xec\x95\xf5\x98\x79\x53\x7d\ \x90\x62\x15\x7c\x66\x2e\x95\x2c\x25\x61\x23\xdd\xab\x89\x57\x63\ \x27\xe2\x4b\xc2\xd9\xcb\x73\x52\x6b\x5b\x43\xbd\x4a\x1c\x4f\x52\ \x1a\x36\x29\x2c\x3b\xb2\xbe\x6e\xf9\x31\x7d\x65\x2d\x41\x3f\xec\ \x1a\x56\x6c\x15\x72\x66\x2e\x42\xbb\x7c\x47\x1a\xb2\xae\x81\xdf\ \x37\x14\x1d\x8c\xf1\xb7\x70\xb2\x69\xbc\xe0\xd4\x04\x50\xa5\xce\ \x98\x2d\x22\x75\xda\x6b\x16\x85\xc9\x44\xd5\x26\x8b\xd6\xd2\x62\ \xc6\x05\x4e\x76\xf8\xd0\x64\x9f\xad\x80\xce\xcc\x45\xec\x3e\x8b\ \xbf\x34\x54\xbe\x9a\x76\x25\xba\xcb\xe3\x5d\x5f\xf0\xa7\x66\xeb\ \x4c\x0d\xf9\x2a\x69\x3c\xfc\x89\xdf\xcc\x03\x4e\x5f\x48\x62\x59\ \x75\x4e\xc8\x1a\x2a\x96\x4a\x3c\xe4\xd0\xc8\xe5\x4d\xf6\xdb\x1a\ \x2f\xcf\x2d\xe5\x0d\x8b\xe3\x6f\x04\xdc\x17\x9b\x15\x41\x5d\x28\ \x75\x6e\x3c\xb2\x58\x84\xb4\xf9\x94\xd4\x47\x53\x23\x5b\xc3\x39\ \xe9\x93\xe0\xe1\x38\x0a\x65\x2d\x15\x1a\x11\xfc\xe5\x07\x71\xa4\ \x57\x05\x9c\x99\x4b\x7b\x3a\x79\xa4\xea\x86\x24\x96\x70\xbc\x6e\ \x34\x09\xd5\xdc\x2b\x9d\x8c\x11\x6b\x87\x45\xd1\x6c\x21\xaa\x89\ \xa1\x4a\x9f\x21\x61\x51\x3c\xe7\xa2\xc9\xaf\x89\x3e\x4f\xa2\xa0\ \x6a\x8b\x49\x1b\x4a\x09\xc4\xc2\x47\x2a\x1a\x4c\x6c\x25\x78\x6e\ \x2f\x95\x1a\xdb\x0c\x05\xd9\x35\x13\xbf\x06\xbf\x8e\xbe\x2a\xb1\ \x26\x4e\x52\x9d\xeb\x14\xaa\x89\x43\x9d\x51\x9a\x3a\xea\xd3\xff\ \x32\x7a\xf4\x13\x3a\xb5\xd6\x9e\x6d\x7b\x19\xf8\xf7\xf4\xe7\xbc\ \xc9\x37\x5b\x1e\x69\xf4\xc2\xcf\x79\xfc\x81\x4f\x57\xc8\xa7\xb5\ \xb7\xda\x92\x6e\x0e\x3a\xa9\x57\x7e\xbf\xe2\xfd\x87\x5e\x7e\x1f\ \x23\xbd\xb3\xd1\xd1\x57\xad\x42\x67\x9f\x7e\x55\x21\x48\xfc\xd7\ \xd5\x81\xf4\x80\x44\xc1\x9a\x8b\xb8\x13\xa0\x7f\x2a\xec\xa8\xab\ \x1e\x1f\x50\x75\x2c\xcc\x6f\x7e\xdc\xad\x59\xba\xbe\x15\xa0\xca\ \xb7\x54\x0e\x5f\x8a\x7c\x1c\x72\xf9\xee\xe0\x0e\xca\xbb\x0b\xf5\ \xc6\xd0\xbf\x76\xe1\xf2\xf0\x3e\xcb\x33\xef\xab\x0f\x47\x48\x58\ \x13\x58\xdc\x9d\x3d\xca\xe5\x95\x7a\x23\x4a\xd6\x90\x8d\x44\x47\ \x82\xe0\x69\x21\xc6\xaf\x17\x2a\x26\xc9\x48\xc8\xf4\x5c\x74\x41\ \x8a\x84\x1e\x01\xe7\x61\x63\x55\xe0\x22\x48\x42\x53\x87\x9f\x07\ \x5f\x32\x17\x46\xff\x0f\x3a\x5c\xd4\xe8\x70\x38\x51\xf0\x16\x7e\ \xfd\xf0\xff\x23\x8b\xc0\xf6\x7d\x2e\xec\xe3\xb8\x7a\xaf\xde\x27\ \x7f\x17\x6f\x9a\x91\xe5\x68\x2f\x8e\x86\x55\x8a\xf9\x93\x35\x39\ \x1a\x3e\xe6\x58\xf2\x86\xa0\xa4\x42\x09\xf5\xe2\x91\x19\xb2\xe0\ \x81\xa2\x28\x6c\x09\x6f\x94\x30\x9d\x58\x62\xd9\xc3\xa7\x4f\xf0\ \xfa\xf5\x29\x1c\x5a\xe0\x44\x3f\xe5\xc1\xd8\x69\x18\xd3\x62\xd3\ \xeb\xd7\x95\xf8\x39\xfd\x25\x0b\xc3\x9c\xf4\x0f\x3b\x6e\x88\x58\ \xe1\x76\xd4\x85\xb7\xef\xe1\xec\x0c\xc6\xe4\x81\x1e\x04\x31\x67\ \xab\x95\x7e\x72\x43\xd2\xa7\x61\x22\x9f\xe8\xb6\x7a\x0c\x43\xc3\ \xe5\x11\xf6\xf7\x63\x4d\x34\xe5\x18\xba\xe0\x69\xee\xd5\xc2\x64\ \x0b\x6d\x1a\x70\x65\x8f\x69\x76\x23\x16\x97\xd6\x68\x85\x78\xb8\ \xb2\x21\x77\x2a\x0f\xd2\xab\xa2\xc4\xb2\x2c\xda\xaf\xcd\x07\x2b\ \xfd\x0f\x28\x4b\x41\xa2\x38\x7d\x78\xd6\x05\x7f\x7f\x51\xc3\x7d\ \x92\x6c\xe6\x54\x18\x11\xdb\xa4\x4f\xcd\xbe\xe5\x37\x8d\x19\xc5\ \xe1\x27\x5f\xd5\x04\xa6\x5b\x45\xba\x6f\xa8\xcf\xbd\x69\xae\x77\ \x8f\xec\x96\x32\x86\xd3\x7f\xbe\x7e\xa3\x44\x39\xed\xc1\x22\x11\ \x1a\x18\x93\xf8\xfc\xfc\xbc\x22\x02\xf5\xd2\xd1\xd5\x72\xd0\x32\ \xfc\x74\x1e\xdf\x5b\xd5\x57\x85\x0d\xf0\x5a\x15\x00\x99\x17\x16\ \x8b\x1f\xa6\xad\x7a\xd8\x87\xd7\x37\x59\x7d\x87\x64\xc7\x13\xd9\ \x49\xcb\x7d\xdf\x09\xc3\x4f\x36\xe5\x09\x52\x6b\x4f\xda\xbd\xb4\ \x5c\x6d\xa9\x7a\x96\x89\x22\x6d\xd4\x8d\xf5\xc2\xbd\xf4\xde\x7e\ \x27\x7e\xde\x93\xeb\x42\x59\xe2\xb9\x42\xab\x5d\xa5\x97\xee\x71\ \xb0\xc7\x63\xb9\xeb\xa7\x9f\x9f\xb0\xd2\x4b\x07\x8a\xd3\x02\x3d\ \x41\x65\x22\xa2\xc3\x67\x0d\xbd\x56\xa9\xed\xf7\x3f\x7a\x19\x8f\ \xef\xad\xbf\x00\x85\x55\xe9\x23\ " qt_resource_name = b"\ \x00\x09\ \x00\x38\x80\xfe\ \x00\x61\ \x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x06\ \x06\xb8\xa0\x47\ \x00\x65\ \x00\x61\x00\x73\x00\x69\x00\x6e\x00\x67\ \x00\x0d\ \x01\x01\x29\x3c\ \x00\x61\ \x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x06\ \x07\xaa\x8a\xc3\ \x00\x73\ \x00\x74\x00\x61\x00\x74\x00\x65\x00\x73\ \x00\x0d\ \x05\x2d\x81\x1e\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x09\ \x0e\x8c\x57\xf3\ \x00\x62\ \x00\x65\x00\x68\x00\x61\x00\x76\x00\x69\x00\x6f\x00\x72\x00\x73\ \x00\x06\ \x06\x88\x9f\xa3\ \x00\x62\ \x00\x61\x00\x73\x00\x69\x00\x63\x00\x73\ \x00\x10\ \x09\x74\x70\xe2\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x70\x00\x6f\x00\x6c\x00\x61\x00\x74\x00\x6f\x00\x72\ \x00\x14\ \x00\xf7\xc0\xdc\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x70\x00\x6f\x00\x6c\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\ \x00\x71\x00\x6d\x00\x6c\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x16\ \x07\xe4\x0e\x9c\ \x00\x70\ \x00\x72\x00\x6f\x00\x70\x00\x65\x00\x72\x00\x74\x00\x79\x00\x2d\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\ \x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x13\ \x09\x74\xb2\xfc\ \x00\x63\ \x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2d\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x71\ \x00\x6d\x00\x6c\ \x00\x0a\ \x0b\x69\x6b\xa7\ \x00\x73\ \x00\x68\x00\x61\x00\x64\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\x61\x59\xc7\ \x00\x6d\ \x00\x6f\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0a\xc1\x57\xa7\ \x00\x73\ \x00\x75\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x0a\x85\x58\x07\ \x00\x73\ \x00\x74\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x03\x18\xd8\x27\ \x00\x66\ \x00\x61\x00\x63\x00\x65\x00\x2d\x00\x73\x00\x6d\x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x00\x98\x05\x3c\ \x00\x53\ \x00\x69\x00\x64\x00\x65\x00\x52\x00\x65\x00\x63\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x0a\x81\x10\x9c\ \x00\x74\ \x00\x76\x00\x74\x00\x65\x00\x6e\x00\x6e\x00\x69\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0e\ \x03\x4b\xca\x1c\ \x00\x77\ \x00\x69\x00\x67\x00\x67\x00\x6c\x00\x79\x00\x74\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x14\ \x02\xfe\x8d\x7c\ \x00\x62\ \x00\x65\x00\x68\x00\x61\x00\x76\x00\x69\x00\x6f\x00\x72\x00\x2d\x00\x65\x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\ \x00\x71\x00\x6d\x00\x6c\ \x00\x11\ \x01\x2b\x0f\x3c\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \ \x00\x0f\ \x06\xe3\xac\x1c\ \x00\x74\ \x00\x72\x00\x61\x00\x6e\x00\x73\x00\x69\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0a\xcd\x05\x3c\ \x00\x73\ \x00\x74\x00\x61\x00\x74\x00\x65\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x00\x47\x29\x7c\ \x00\x65\ \x00\x61\x00\x73\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x5c\x00\x02\x00\x00\x00\x01\x00\x00\x00\x1a\ \x00\x00\x00\x94\x00\x02\x00\x00\x00\x03\x00\x00\x00\x12\ \x00\x00\x00\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x11\ \x00\x00\x00\x4a\x00\x02\x00\x00\x00\x03\x00\x00\x00\x0e\ \x00\x00\x00\xa6\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ \x00\x00\x00\x7c\x00\x02\x00\x00\x00\x04\x00\x00\x00\x09\ \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x00\xa7\xa3\ \x00\x00\x02\x44\x00\x00\x00\x00\x00\x01\x00\x00\xd2\x22\ \x00\x00\x02\x22\x00\x00\x00\x00\x00\x01\x00\x00\xc2\x24\ \x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\xb1\x08\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x2f\ \x00\x00\x02\xbe\x00\x00\x00\x00\x00\x01\x00\x01\x04\x1d\ \x00\x00\x02\x9a\x00\x00\x00\x00\x00\x01\x00\x00\xf0\xd5\ \x00\x00\x02\xda\x00\x00\x00\x00\x00\x01\x00\x01\x18\x3e\ \x00\x00\x02\xf4\x00\x01\x00\x00\x00\x01\x00\x01\x27\x66\ \x00\x00\x00\xfa\x00\x02\x00\x00\x00\x05\x00\x00\x00\x15\ \x00\x00\x01\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x3f\ \x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x9e\ \x00\x00\x01\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x6f\ \x00\x00\x01\x84\x00\x00\x00\x00\x00\x01\x00\x00\x40\xac\ \x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x0e\ \x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x4a\x31\ \x00\x00\x01\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xff\ \x00\x00\x02\x72\x00\x00\x00\x00\x00\x01\x00\x00\xe3\x82\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/animation/basics/0000755000076500000240000000000012613140041021423 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/basics/color-animation.qml0000644000076500000240000001153512613140041025236 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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.Particles 2.0 Item { id: window width: 320; height: 480 // Let's draw the sky... Rectangle { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } //! [0] gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } } } GradientStop { position: 1.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } } } } //! [0] } // the sun, moon, and stars Item { width: parent.width; height: 2 * parent.height NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite } Image { source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter rotation: -3 * parent.rotation } Image { source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter rotation: -parent.rotation } ParticleSystem { id: particlesystem x: 0; y: parent.height/2 width: parent.width; height: parent.height/2 ImageParticle { source: "images/star.png" groups: ["star"] color: "#00333333" SequentialAnimation on opacity { loops: Animation.Infinite NumberAnimation { from: 0; to: 1; duration: 5000 } NumberAnimation { from: 1; to: 0; duration: 5000 } } } Emitter { group: "star" anchors.fill: parent emitRate: parent.width / 50 lifeSpan: 5000 } } } // ...and the ground. Rectangle { anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } } } GradientStop { position: 1.0; color: "DarkGreen" } } } } PyQt-gpl-5.5.1/examples/quick/animation/basics/images/0000755000076500000240000000000012613140041022670 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/basics/images/face-smile.png0000644000076500000240000003606012613140041025410 0ustar philstaff00000000000000‰PNG  IHDR@@úù­ pHYs Ö Öoyœ vpAg@@êóø`bKGDÿÿÿÿÿÿ X÷Ü;IDATxÚì|wTU×¶þ>…sè;EAcÁŠ0ö cW4»€šØ4šh,5ÆÆ ¦¨‰ 5KT41vÀ†‘"NÛåÍ9÷Zã7rÿùåæÝûÞïÞdp¿¬]V™ßlk®}®VøÏ?ÿÖÿüŸSEÉVbe[6à.E¹–X©(_%šeŠr¡àSEÉW`ùZŽü:Ž¿ÇûáýþGþ× VˆE9DiåøEXÆlE¹tUô›Aê%Æa‚Ð$Aœû BM– ¸Ï¿õ‚à ïØ& ‚÷-Ax’ øG~?Çßãýð~ù8|\>>¯ÿ(À?ŒèT„ E9[ ðœ¢\M†é~'g¦ ‚a(µC\àÏñAðë–÷¡þIAÐiÁÐÖ´„ð'¯^€daµ ´Ÿ$œÔÜ„ŽVa¯b„Î6Žü:Ž¿Çûáýòqø¸||^|ž|Þ|ÿQ€?Mø÷§Aè^@J)XÚsX !ÕVö›p¯DÊÀ"w1õ…ºŠ¿×ÑúÚ§t´ã‘‘'Š_==/,PôàÑŽZþiE9oÖïŸ~¨8áÑ­ÀGû K²óN6’¾¾_2-/?äü¡°’5yž„>yñÁáp½Aî’ Öû ‹Ï=J¯ÿÞ+ÉÝRkGZFɳ'û½ÞX<àõ°ÒLÇ_GžàãòyðyñyòyóuðuñuþÛ+€¢xBì­¼)>+Û$®‹ÁéŠ 8 ‚o< â+4…7Þjo(o\ïlyÇ»pÞ#¿¢ G 3® ª³o¨èl¹²øÃ—¹Þ³›}:bªç̆ֈmû{Ÿ {§CŸà!Þ®m¢—{yyÍŠŒèqÅi¡÷¡Ni½ëêtÞk;­ïÝ pL¤K÷Ïœz%´ ÏYÃÚuÐñݹ¿Ë,ǦËGL•¦Ø^„Ôÿ°¦x_îÆ†íö -îœw¸Ö± GÊí%%.CÞñæóäóæëàëâëäëærø·QHª¶Ä ÂaøÖ‚`ît J–Ӟ؂"}m_£¹ÙùDIì“r ï› ¾{ðÈ?k÷-ù²=ªÑÞ <êêÜa«wëi]¾w^ãžÕaß;ØÜ‰¶+G‚-Ž· ˜à½:469£vÈŠ)8ʆš)u ½)0yÊ=˜)@߆ßL¸"øÙÔûð\õw¦ô†¨ß$lñÄF@­ÍÓ‘ýÝFîPf:²uMçÏ`ܵþãB?ï°U"_i4rÁ‚¢^ wßz™ÿ´­gèû&¾¾.¾N¾n..—ÿ³  (§<„Æàu{@¤SÁ*[ „¥Â8ÁEˆl½ì¥æim÷øD©(ûQ»¹é; †6’FçúHoLo%ù´ñÛîhŸK ºZ-ÙÄy´q­qA@Üõ[Œú£¯ßĸr@­—g÷ß ÷Ynr‡}€—«i•¦5¿ øãª7æ2œD×§6»JÏŒw+‹Ä÷^{ Ý« ¿å¾Ïã}n:]¹È˜8`1—— ——Û?;Dhÿ)Û4šðé>(&øÛôõ‚; ß=ÂQe¡ 4ïôò—ç_¹ý0ùçÊÓ%óêÆ®ªã1¡ö®Æs‚÷¸ k•"ø¹Å×ñŸ€`»×ß›mä>¶ÃVL£Œ÷ŽÇ¹n³g6uÞ0Œ†^¦ý†Í!Ž Cv'<+Ÿ¦«r:aŠ4–0\>CèH× oJëé½Çò Â#r[\ ýo²æ©:®q.ÎC¿Çó,ÎËñrÐ,˜§·{TGX©®ªîüØ¥‚¶ÆÇÃ>aq˜[ׂ౪N¿Sðžê½¥Cê_XUçÕì‚"÷9“ærárârãrärý—U€ÿ§©_y¨ÄËàŸÁC¬ók¬ SëÖõÅÑÜ—Þ‘‹\äKV]¯Iw½£‚޵fìí4%Ôµ§ óå Š`qº7=nv°ÀÛo#ý_ΌŒ$Áï2UbÅu*ö„ŠíªJ¬ía„½¹zßFï áö„v•XÖ¾i/!Œf×ñ?êw;ë¯3a­žú¾Í™ÝHxD‚•¢oÐTà<µ_8ï@Û56õ@Åõ¸Ñq†Ž;ŒÆÜ¤Åöž+@Ú7:×쪱·2ÚÞ¨^‡Iw‹ôù>‰‹\¸œ¸Ü¸¹\¹œÿ=À©½0Á†‚P«,ÓK®DM–®I»4Bx~÷ù¾ –·rh¥_]gs¯IcƒD ‚ 5M{÷ôƒ§uµÍÑ©0¡ñNÓ‚?À˜¬oãúˆ–ÚMÎP ¶LE”ÍQ{lÍ—„‰5„5û³,ó[ö«Z›޳ž Ì´u" ´ÿ¢É0Õ>pƒ)޵áëeÂæ¯hü ³™ÚI5sÙø‘„KÍ÷€[ë~šw„rs ]°ËAXW¼S³Û°Î¾+£À3TÇ7­@”òª‚þ¦Î¯ª-ú9Çl$ÿÿî2\¬õ3¬ûµçã6@b¦† c’Az'íF»w¼ä¨«=2ÒR2/…oâ’ƒ\Ž\®\Î\îÿK @Û¹/ÕmK`L¶5è0=„vŠd´_lÊ ÷Z=GgX ëÛ/òž[—€%-ñ›ƒÆw¶ÃÀçÜË›OEâõ¾n;A§=•8Ût5r¿&ÁÍ,§’‰<³¢ 4½ò¦ß&Ö¬T‰µL&ÌK%´u$,c¡ û%Ë> ®Ÿb½ÍFxÖJm!Õ¶ƒ0É~€½·ˆ…g/Û:‚³0߼Юªù”Ú&_UA_F„y§¦WŒÃQa]­a1Jªm*„n…ëLÃ7nRómHi`bç‡@ïý€„æ?‚­o7<÷ ¼Wì’ê½qŽŽË•Ë™Ëóð—à¯Çzÿ0xý)LÄà\OøT†Ü9 eÉ´g­ÝêŒrÑl”7{OìõÂu]}çÆpG¿7 ­Ýï €åîî!+Ðt³0ËÄMSNô¨t1@²4¨<–Ú‡_ÏF”ê²ç/fX:2B¦1¢®ª«Ä l£Tâí3‹_¨†[=–”*LQbÙõ"H¢ú© DØ_õ6+á k_Ât ­CÎ2o!t7½G¨z„©kE`ŒôêÕ+T7¹+*…ªa(í&ÇÕÝ]ÄÆÊt+ü¥v€.#ëOÙ ¦ùŒéõ¢´qÁi·W£\¸œ¹Ü9œ—ÿðûd´[°åPÐÓZ°P°›Z/^?, 4[†®e@|2$Í,;D×¥ÊVTN°:Áõý[NN('÷²nwwsÃB–ç®ÆZô=êNmÏå¦û߯È×%/=ßœ¾†ËóÀyá<ý<ÀÓ›X$Ó*a.R@üuV•Ì|ö‹›ÇÛíô›õ3ÜLÁ>ŽS}Ÿ\‡©üæ7$Xol0Ööz ¸K»[BÉP¥n6NQS©EŒÓ$ T'®<‹Î\ìTÂX$„ˆžNΈñ`í@žÕs ·ª„z!D”UU”|ëjv_}^±:3ìÈ®×eIàBÖßT¦ÛY›õÇCˆ}»ßÍK'ŽÍ'‹r‡æDt9Zº¥„‹£‰¢e=ÉÁKû-à8F÷Èéœö–†ÊLà ¯ñ@оo…lŠ£ß ì}”¾™ûgÁºÒöÜóßnÇyà¼pžþa  ()L£ú­@©hr»a±}«ù¦ÉPË{Uv×[CBœmî>pWÿ›ïž€AXRu>à ®hnD…šqÚ]†•4ä`Çýèò´ÞN?zjZécJ*4 ±d±ÑJ ÅèLÁƒY˜'¼bkÎЙeùÜ‚G0û–©„Ê9V+µó¬W˜"ü@×Ó,€äa¶2γýXû>Sf„Ù¬ÿrÖ uÛçAHmRduÞ àéšãÓ  ý™„’ Ê'Nó­±7ÉåÇ"€(0ý ×AŽôÊÑi¤ï{XùôégNÍ<2¼7 ‚-Ö”êºHçóÂyâ¼ý<@·™áÑy0H{¡»tbÏÞW–‚·\ƒâcŒãŒ³œgº5<’jm Ïv[ç‡üDo"â—iÇëõ4T#ÇŽ„ÁÎHä,Írc!}BÑM¯ÖÙÐ2xŒV΂ ¿L`.ÒC)' ŽUÊÉ23™å>–ó­<;ïË,V #¤Ý#r¾zݲšÝÿ‘µ÷3\¥¾¯Þ—ó-êýÃÖ{ìýbfÑ8nS„#0^'ÊòËm‚=ˆaûW2qÞ,””&ˆkÑð=¢¶•a(ÉåWg’n°“y„ås©P­C»Ö~âææ÷6x€žµjÀ#d»lq[.ººÕŠá¼pž8oÿpø#Öä ´¿w o”Ùrª8¯í3Åñ¸s'·k0íoÝúlB5Þ5NFׯIVÊ‘ ÍíkÒøn~„‚~m\rä–ŒˆmªEš/fY ÿeç£%*Ю‹¤äX¬¤ ^·Î·N©n rŒßrì¤@7O›¶ào›~»ýàk$ìЂ3åh‹…ê ‰–:ˆÊ‹#C ázkÊI¢ ï%Yšb?·oßßýî™Ö?-Æ¿eKV Œ;ŲÀÔ½ ƒˆÎGQ+9,”0Ï#ç³pØRD˜Aux΂Ï)©Ò5TðÝI>^MHnum0h6xÕpÔØð[·D¬ßpé Ûg{íšgï>S8/œ'ÎÛ_TÚç'šÛpìß #”/Á ÓÊnkœ:u½®ÿD»ÏxÎ{ŽÃ$çzî7pX§ºN«qÂÚ]â té°pÔü|%B,eÉÙ"Ì‚åpª UHë+¢¥KRY: êðk-«¨u`ŠÁ-îß3W>[ò¬nzokߣ°;¸xñJ_Ü6FåÅÃWaú©%›  Sðþ‹‹/æ’”›ï¡e‚àW!ÊY ³!PÛŒíXE6¾WP¶ôÎîÉ?n‘v ‹ÉóºÔûê¨òAØ\°µÃQ?šÇRË|¶­Î꫘_á¡„%µ[ ÏT=£mo×ò$RÈ1˜»Gȇª{²RdœŠ›Qð€Í)wzS„usœâ< “C—EîctÃ{{Ï©ð*¹éœÕõ:ç‰óÆyü àÙxr¶½\Ji¸ •w_“åök½ãè˜d‡;`éÃàîSÇùÎ%H¼þm%œ’¹Ú¶…Ë]_ ”Ü*ÉÅK3Ê–xŠkŠÐ%ÇŠ-žShšé~ƒŠdD9Á\›¹dG†#˜g¨C˜–Yy¤b>ÿÕå¯F\€³š­Lóë‰_íÙ§—•N‘>ÇJß±vÇç_íG–-[ŒjéÖ<™eçoF±ÒîRËdz® Ç?úÞqÇ+uñpÇvÅŽÕøö¶«Øohhâ–pô?µ¡yŒ+OPKÆ0?²p+!(V¦M™b¿@”VvCÅâbÚC¬-p@ƒ°¯-¤ùˆ¡¥ ²%·ò À©åë§€)  H¥ÃJ%mÛq¾S_`f¥áC ¥Ö^¦Nub’9Oœ7Îã_Ps¥ÂB¾Å3kkC{©0¸îÙEŒ2 [ëà`¨1Þ…'Þ1ÜÑODW¦.[‰וAWhŸñò$`²ýÄ \xŠuäcª¿YûåŽ&\»DZ/*T]úëF꩜9’ Бm§,l}öjÝ«Wåp:WâRxìdÇç—ßz8øóúòçÏý¡<½¨è),ûwÃíyë‘y]ͼ?†óquVÚM©¹„£H3k@l¿=ÿuv~ô³¡xös$þË;Øï¹[?ôÁqJ®z• ó8ôÊUü’`^ˆëÍ—™B±y×aIç|Âtµ¤m?UT=­8?C›muîi4ëÈüh:™h^ð6zHû¨’$×%X(Ó,ÓÜ´ÖU<¨ #ÜnsVkÿ²»ù#Â(D²üB†wÿp½%^·-´•`2g_(žÆ~îì»Wû-ìS2DZ ·Õ…q1ϨŠÊ‰Ì*á±hù´žÞÜóP;QuõÒõWƒHNŸt#¹Ü°=uëýÕèI-ûsÝ7Ø;lL»”µ¤\(Ç´™JÉUÊX°óå+õ&À«Új½ät¢:²ükã¡PÎçñÏ*/øÄ€æTãvB‡¤¢¿å{“Ñ  K×ùèÚh'`ÅJ÷“ö<ŦV”¥gËiTÀ‰T¡lhñÇ€ ÖŸþJØ17=ƒÍùI<ÅþÐ’æ$uUU„±d‘$HFø †f&ÀKì¶I>½4ºgX2uËu]SK$52}`§^ÍóÄ%ˆî~s1GQ’™ËOªªŽWc Œ®©Q=O >÷Ž’Š ˜Uë(Ò}ÉŸú½­VjzÚg :öu)Åq}zxÞÒ}Çæ‰p¬ùgÕSÕ¼`×L‘ïªógžg§é-:Ô_Ö'¹ôê ˜fmžWFU…O°R˜ew)ÞŠr]Ëc(gˆ5=§íc¥õ*àr]°v0 8滿ÚnÜ–Îyãå,(ÄJ”§¼„ä- ¬þäêЉr^Ró•“È£D7ÅSxª¨iˆ¼(ïJku™µœ7Î#çõO(À]}u#`®©k#F‹ ð[[åì¯)ðŠ×6„cœõÇWöú¨¡òu³™Ð&ôX^bq¤m`y†›°@3]—h»õXnII]»Ÿ-»3—_Ä15[AsY[ÅÖvgž@6A=Áó¬>伟á±sjôÅ•EðÜàø>Ž.-h×qê…AµH(y€£ o3tàבÕì=o=í3Åuô{íâÞ"8ÿO›‘·åg¸¡o{i2›Ç{l^ï3|›ÍŸ{˜žL!¾dã|H®\fß/(fUN--E$'w ÷?d‚üêàu)‘îW¨ï)ˆFœ'ì#ZPñ7†œü9X«óŠç¼q9¯BZ¿Ç4å0VïìÝEÐãG‚’¨)4…OÀIzÀÝVJ†ôˆ\y¹ý€º§‚¬–N÷Ó~¿ÌºZuõ–+ª,SHyd™G@öÑ¢«UÁåq¬éÉæÇ,¿1l;&è&(ѵh`øËíKÓ•MÞÙ˜Yýûéªb™Ôþr!eH0õËñw~=÷=kaý¼¢~{Mh‹ã”H §qÅ¢¦Ì²'¶„÷‰pR$ÃÖsƒÍ;€%C0ҺݬÈ`òè‹§%€ÆÜ­?ÑxäZ¬ög³©ò¶÷#Lgb.&Da޶kîœ7Î#òúç<i&n)€¤O/¨*µÓÌVi2z P‡¸AI!Í=#íͲ^ZG•0E\¬îß雽l%Ã>ƒÎÁ`âdù¤ Y éÃq°p'È+æØnÀ“Ç,3Ý´‚Y\†ÙýÍ„9U!ˆPwRnò¥ö™jv>o á«"CÈû[É&D}Ç¡~ÚºUtSÛU>l\z^*ÃyÐûïRû0"ÝçŠt‘0œÖuÖÕ˜äq,œê`:¬l> ÊäX{©J´4€BF>+•’­—€x*qÅûà+¢)4ÏÒzqÞ8œ×¿»,yHè#Ï øN¾ð˜ˆÏ‘Ýä|"p©’O¥Ö tA˜ÿ+q¤±ÊRÂ|öUnºìOµó¥â@*?'…ˆ¢+SeÒð ǘ8ü™ Ï09 “Å2¢®W·ýѯLÕvÕB™=Út[í‰%Âð9S=뇷MˆRëÿºÉÝçï…¨ÄWïùƒâ–±y°ùKäú“dY­Àº¿¦Ü(ÁNË bòIÒ5’o9E{$ø¦¦(ä!ò•@4,{Ž:yä,ø7–~QP)(‚'çí/”‚kz¡CÇÀ•%-%ÂÓ$7•h |-(•PPÆi>¡4ßÐaNœ @?M¸ºH—¶ÊòÙdLŸ.{ÞVnIþÃC9L.0Èngt,"\Ï>ýJd‡,‰Ö„Q¬ëΦÌ\‹RÈè †F–lcí kTW^ÉÛ ›°íÜ%Öï]µ_fÁ–¦l>}T´ÐNž0Ç>’߃> I€<¾è«âíøÀ›7X ß3Q?ßC±àƒò!Âc„]è ÀÏn ËNÑ  ©(9]‡r”—’Bl%4<%K¹!$¾n(¬'8oœGÎëŸP€f6Œ+ê§ÇÒuøÈR³Q¾-¼-·¬¬”S”,(M*S¾ä¦i…šGçÔ¯y5™dùI€(€$–>ê„ëðÜ›Ë:ZªñÇQõ¶££ZŸ”™l)Bšå<Í›èø@’(„„ƒ€è0Ij@(öW‘)ˆ‡}šŠ6v˜òP-ñÚN°sü+ d8‚2õeØ‘]ïû7Ïï'<þô)G¤q8vV‘Í#B¬O¨V+Ѳ£Á²13‘>G‰®Z°ÝއBõ>®Ý×9pñ›ï>¤Ü)ŽÉ)I£ÒK ‘ ´‹úKSà¨í Üu-Ê=O:,ÄàfBp4`+5¨¬ä¼q9¯B®Kª¦ˆ üít˜«‡\Ö¤—ý4¿JýJȲ¥„£À„˜ìsM0CŽF(Áò»‘+# WÀЂ7(šJºˆ#öÙ×e $Oó;Lï×<È­ñw÷ÙàÔ«»ï©bà§Çöè‘ ›3|´¯†y cE‘¹˜µ†át†ýÿH(³ôrñ$ÃSüù¿U†¸Bñþ™HU<¥SmmW˜çÖ©û†¡‚ô¸0ffå-XÇ7wãL‹:ÍÐÚ=zt´ê«0D‚4ªâR…p@´üp4%SˆÖÆ«»)’c´ø‹æ[Âú:”sx‚FÀ¿|FÉ&ƒ$´OÐ9Ù>º3óÆyä¼þÛÀoÌx ɸ—¬.мtt´¼ý…xL~ g-OKƒä4L/ä1Dl¦8SwA=ßÖ*1âZ­NM^´OQƒÁx!alá)(-P!@A]ü´Ž#Šô°”;ý@X¨å¸õ>ƶ‡~6Ì !¡“}h{Üw~j¿Í6 ª dúIF"H€*¡‚#+'–˜ooÀ’5—¿ynWæQÖ0EÃû¡ŸêÍ5w¤t¬@l€¿CˆNqßô„´6_À$²f®å²Û²yŸÍÓ}&ï6 S’`¤¸¸nJƒ)w`íhmC5„’ÜRäÃÚÖxäúŽ/ŽÑëqo!=ÒvCÛ–º"ö‰ògÒÇÖb‡q‰5èöœ7Îã_8v©žî®䨿HÙ±‡pðiwë"¥¿}eî)é´”+CjŠà&§ …K‡ô›Ð¢¥04Nø¡~-`)- B Ôî&ED ,9ˆ)†"|Cçà§*ÀoŒ: Á´7z¯š ý;÷sÚf,‚,ºCñ×HøòMâ°€ÒFß·þtlÂ[³6¢à¿ª“•‚ÉÝ“˜'çÑB¥Ñ¢«Ô…'ûK1ù|öæ³="xŒ¬ò£{±¢™”½h-nïÚEö…®=5y]®vÕ/æÉ‡ažÍ:á asÛ§Å‚G˜:Â"6 Ë}TùDU(rí €^ã58?æ ΂|v“­¦hß!õë¬ß£ž‚\ñTp€M#’30ºK§å\0”<ù²-,÷ç‰óÆyü p6+¨ÃÒ p¼ÜœáÙÂH³»Æf™sÙ"ŽàϬEQì*uÅ$]#‚ˆ3 ÒÔGÇ(b^Ó?W+UÚÙäÚ<è41“\?U1v–V(BŽlí‹’ÄE~ þ±èPîtLZÇ>ç@Ð_KKˆ™º‰–y $£W^¸ÙøG“?¼ƒ§ˆqšÁ?á§WÖvþ¼DðöïCöT Ml9ãVþfy%ºcahö·IYXØI*ŸÑëo·ò}ÕnxoMç.øÃA)qG°ŸÔŠ”T3¬ëLÚ‰möNøTu5º\§0H­¢¢"{…AnrÒåðáIA¯Ë»,~ê¥þš¡¾cººñù´î#lÝ7QdžšjE‡@’^!žrxŸÎÆzc¶/…jƒQîÒüDLê < ;ï¯él©wÙÂyâ¼qÿnÐh&÷U³FÃ:n «3$erÇrËóó­/¤dñ¶é{ñšx -Í^*Δ£0¢J¯ X±ËG; §ZBDKcô=aIºïÔ:5³Y@A’ëãŠðÄŽÉ¥µîs~wážwÿůÛODA!e[Ç ÷¥0³vß·žDô•— Î6iŒ’ x@ ÃM¡–µæ*%£­ÃÊÚoÝ/øbåñfåùøËŸœ¸sOð'c¿ž¿°`ò²ß£1XÒ6ÜžƒŸWJþJ,`gy Æxç©R"ŽÓîh«Yá ÚÏî|^ÁeAØã»ããNà)Ü\Å;‘P?õ‚ÊIOëR2q½,àzcg‘GLÒ}KÉ_޾`²½>Éí¦8Àr @†ßñÝ~ ·•öS w˜¯e¾è#®7}/O1¾iYr~#ç‰óÆyüo|lƒ› Ã@=F¾=>÷Ý¿öß½÷º¥ô¾Ùvù²8ÊnØ+´°Ù°@+Îø¯ö®4,Ê#ùϣ܇ … ‚›¨Q¢F£‰xǨY£IÔ(¨\õJ4^ 90*ë"âñ÷@@ñDˆ€È=Ã1ÌÍ 3ÃlU ýa¿íóü“'»çË÷í·úWÕÕÝÕÕï𶢚;Žv ¢ÓóÑv@hðYú%ÁöNC(&…[(`YH„X {J(fÍÖåÔPÊÔ!y&`vkB4oäÈ}yÐcOOiŸžâŒmæÞ¤Ÿa(P¯¾²¤öí£Êš!S~ׄÚï2´$®7 B‚MÉ–Qø»)Ñá”Ú=ÃÙŒŠïH@WT´.âŸ\æý´ëdnÆíŸ¯ƒ M‘ÌÈñ}Ã6?ˆÇ0âø5Í…†·R64¸]j_5¶‹Ù©ø0k»y (6·’ÿ+©è²Í·tàl™° u ´—eh÷)n’›d84~d|‚I£¦eí\(W˜3ÚN<|ÈôÂôÄôö¤…g— ýrã,à¸Ûo{lvƒE•èK]/Á^Ý+[õ~F¡Q£o”Ê1 Ö¸Û˜ùñä (Nå0‚Ñöéd݆.)Ôes,>p§!\±ŽÁ@¥Žê¨&âæƒGH§9†£Á€å:]IÆç$^‡ '÷Ṇà\`I›àÌÆoD, .?¯-Lï «ˆkycÎz‚+/<ÿËOCar6óèò}0‡Y»öpÊë7™Ïîø<ÓÑÙ!§`HÝXc¹ 9<)3xlV-Ù¹* O1÷ýÉãú¹s8­’Ì9bF¯‹(¥íYó ÊæÝ 0.p È I–ˆ{"èáHñé´¾ŸÏ÷§ò›ûtH}D—2âé#{/ê@{¢in•ŒçLŽÆõ˜ÚfÐþÏ1è+¹Æ ýxm~Žvè•­L/LOLoÿoàr·C†£É2\N8œ|vWÔm¹K’åÊc‰ô^{¼vtn¸ñU{ N¾Œ»ô³1&n 6Î5L±êûõÖM—Þ”ù²Á¡€Žp>íú!B¢m)p¥>°²{JKHÚhôDßì‚@‹`ˆ¬`SÜv×­ø8ôìÁWfA¿n|/ä™<ÉÓÈÅà‰†Âûä@ý}~èxR„/¡RºnÆËÞ†—ÛO†È÷]<‚CWÛËWvØs&eü‡\Mr=§Íß©ÇSîÊO=Õê xn¤øDÁZÚ+qµ¥Í!³¼ë:ЍF;dÒ¦ÚJçÑÔq.áë'ÍwŒ1k<¤Ÿ ýðvûcŒdJÒÚiÒsÃAñ¨¦¦'¦·ßðl Ï ‰xwãÈãï®ú uñ‚d]ÂùCªPƒ»~’̾Ý[ÿP;”>§ÙމL°õq—,½Õ±ŠÐ×½Ű:ûRàÈÛ~8*”3_HRÆ‘r¡@ì~À»€ :=Ã4úý9kñE¤=³N Xe–áarÐÐp ç<CuÊ¿ Mã«ùŸf+k³|)cîô¤òm÷ÏàuÚ€âmtY_ëGY¹Ñª©´™“L!Þù°æ‰±")|~G6h (~uîr¢<Õ(·% ÛrC»f«WIñÁöËHñrgg«‡pëCõ pJgÆÉ)Þ¿Ù©èã¨`2Ä,êá5(Å!²èg(ÊI{!›¢îs[[ZÖ)ìnÓæÙH§Ú=}æ¶~OôFy5®.Xƒe¾"£­Tµ ¹îŒTªOÓOÓ«Ì{ê•úÕÝ)ãéé…ééw|?ÀÌ`¤‡›ÍñÛ%>×{@¿õ³OwÌ2¶¥&×NÕĪ–ç,4,Õ/Ñzr†w4?J7`zµn–’‹™f'[ÜÆuá*ݧÓéØioÅ“aŒòÜAù¸…“‡prÜDÄM¡¡Vv¶BZFÌ ƒðåûáÙ|$2•K I#ᬊZHc5@ô Ùè9#±ÞÎrv] Üà @õÒòžS Á›††rŒL°$ †àó@NO:Úu™ä†È§ã>Û?s›FÏqöü„º”Û[ߺváÏb.°Eï óÄ÷%&ª­†¿n[ $Šš1šïTÕ9 í>uœm¬HMe¼3=0½üÎ/ˆ`ž€úŠ g™]oCáhûÎñ…EÝ‹<ÝüýmCÜ»ª£4»Ëººjc•…`Á·”SÏ‚¨‡µ-UÉê%èK"ìïÖ sUx'{Çš¹‘Þ4i´Xz A@žû=@ØqÞD¿ßµß HÏÉCplbWZæ 4¤QüµÖÌWS~ŠBÏ’Åæ¼bÂl~x'¾OXÍ«#|F×EÁ÷éVOž ”¿–¯+é9àÊmcIŽU ¢ÒÎ*×ç¿“ÜÇÜùÔŽÖIV漃ñWþžËè{$¶Û’fŠ|E¼”`Þ¿¡Yµy2<Ô-ÂÀ‘è{u²z`Y­”×®«>r'p¢ïàùãééåw5€5„HOkluæL|<“ôÊvåó†Šò ªî?ÎhŠVßTÿµ~«!^ó¥¨×·:ש Á·4îÍï€èaëæ8,Šq[ ¸@pª×Gô ß)V¢|ŽÒdŠóÖ!"6Áã+rr ·\krj!œê°›0½ëAìÁÜÏ…ãɳ¸¿£ž^h{‘“mÓÏŠ‚û Y9]WC×]¶(„qh` àY¬^<ÎÎ[à°Œpµ“QžCrZFyþDrZÞºmõp$÷þ=ßÑ€1‚m½æQy¶Óâ[P.Àûj¾äSàåmà¥0^ý…>äVyÛÓ÷ã=’Dµ6èQ¸ÿp_MMÌuú¹£ynÎÎÖrƒémE- ©ü ”ãu|~˜_þÎ+öÿ ¿¶¯ˆ¬ ø^Q˜Ô)—0ÇfÞÏqáíÇcÜùxçÆ'ê“ÍåÔÎèr<±×$Ý]qðœzŒ ¸ZÚâ¤(¯L-óW(Z÷¤2ÞŒWÆóÜ‹"i¢1h¶OÈ g ÷á&éÀØÞ°# Ò„Ló æˆ.ûV·i=Ô;oßh¶o¹ó¸]³DuK~¦#Y7^ýzò]S|‘8ÉŽ”¶¾^3D怫“%˜Xxu®JÀ6Þ€9ÂþW‹„KQáì _PÂÒþï’á ë?€t½¿¢Í¸ ó€[lföÿ”p!•Óõ/á:D[@|aÕÃí²8'mµÂˆ·#°\ø ÌõóHï(—e…É„r_kfÊ =†GÒee2¦+mºYT¸C¶¡ ^óµê°ü\Gr‘cÓgò¯·Wk>V•ï¼Éxb¼1¯Œç?ÌþýI☛de6Ýñ¨eÈ Húncص±êÛܰ¶ßÎ|ð¥x‚Œ{ñãfUËy¦:\÷MKU-,£´± q…‰@X’ØæÉ  ¾ùö [¡Ši˜…oá34ëq¬·t¬.¢ž:Íu5y„û^s‹lgùú*»,ö/¬íRGøv`)Ê ˜ÄË»B9ý~®Ãûvú×ãw¡µžý‚o½–âÃïÏ¡e¥ðg\# ˜ôilW.h€ûô¿Hv½€!Ϲ+ ù7Šràû–ª:0Ôæä–Ø–êðüÍ¢¥I?Vá´Múv&ã…ñÄxc<2^ÿkÞÎ,•Ë ê€ UéchГ ¾àèeóFæ†BãrsÝ'›>Û‘¿¦)©åÓ]ÞÏëîɆÖ(ÃZ'JL¦¹ºŸ¥»_]"mÄ3žØÆÕªòN¡Äy fƒA²´D *cp×дQw½sã2ÛÖQ}&oªõEyËæ\¶óBä¦;ÈZŽC9®÷áupÚaÞ×Q`xŒ¹æ#ºÓx¦Ñ4WSû¤ôo%:C'¾ÿ C—_ç~ÿ>ȧz ߤÐÅ+ºµ7ËMsŸ}(+k+,Ì?ÕX.ì²w9ûšÆíÎ`<0^OŒ7Æãýÿp¹+øòó*cÆ|`   =,TËš~C¦ð8âã½[z›=Ûºo¾u²:K²(içs£ø„T^&”Ï•wošh\ª‹•_?z_|º ß^“{phõ¨ìç@¼m-/G Šy[´ýAwœ]7<¹ˆË«fCñ4À¿I3JÄ@q»tniá²R!+,oîŠ×éÿÒñTõÌ]ËoÃÓǵn9®ôœ•Ùxþ·5'r…ï×Å%fÀ3Rû 0¤–ò®MÞÆ¥Ïvм$Ê„·ª«¼%‚¤-çÌ×tF þ @ íÄÚÍx`¼0žþGÿ1„¶™[·''ôÆ-çŸÜ…@·pèY ¢qö¸9C"a`ì¯÷säðW5®×龈»ñk^ß“nH Ë9[}A²9ÿeehãf[ùÅjÙÑËŽ½Z‰Ý«vPÄWbÁójP¦6=?0¯úóœ"ÀúªªLG@Qåò;w»UõÊðìh(€rbUGf/@qõÊ»'ðúºôü$À¯ÄÏ[¡~O©×+ ÄÞÈ÷âs_6.i.“È\õ‰dHþËëÙ¯IßM k Ñ'é‚ân°v°v±v²v3/Šÿ ú×!b„-–-Ãü^|»Ïæû£r@¿®x‚9Ô‘U.Hçp3×Ù1¨cKž*›ú+§¯KI;Zv¦ùlÒŽ Û sÓȬK¾µ{š=*ƒËƒº4ž“gŠDMï‹·-’­“Õ9›ç)J jª-“Õ³¥Çªë8ÇÔã¥iˆÊéÒÌš4Ëdy¼Ä«Î×0öí÷áähò“wÀ!,×a›”]aùý¢9…ßÿM¸Í~™ñÌZQÝMm¸öÖŠ¨§ª¦¯•5qž‘ÕcåÆmWÓž•“ìKH‘”|ßô(i™ÜâˆÆ±ÉË»#ž/·–_:Zê!IÝ—á\í/—n»úôRÓ0eVœgÝ­ë.‡ç$®±ç29˜\LN&7kkkçŸþ_Ãþ}ƒ-ÅåKĽE÷è)0ÒÞ ±q€±óÀ„«!7`,ŽÚ9æÈ÷™1mÖð¯ çùLŠŠ€©Ø…¹ïÏ|ò‡–¾#;û|ÂOöí)¦‹Cû†Af¡?CVήc÷±zX½ì9ì¹L&““ÉÍÚñæÛef!—;Hżº‡ã{x\ãÖ@Oóî¹¹Ç[Ï 3BÀD½ö/‡ÁÔlåØñ>3a¶nRü{ è¡ QŽs´°Î~Á•³ëØ}¬V/{{.“ƒÉõæŸCÿp‰¤üw˜TQ—;$ 2ogÍÆ@3Œ½ù€>\®7Q²rv»ÕÃê}óßÁo>o àÍççóOÚÙGᮑ"zTXtSoftwarexÚ+//×ËÌË.NN,HÕË/J6ØXSÊ\IEND®B`‚PyQt-gpl-5.5.1/examples/quick/animation/basics/images/moon.png0000644000076500000240000000460112613140041024347 0ustar philstaff00000000000000‰PNG  IHDR@@`¹UsRGB®Îé pHYs¯¯^‘tIMEØ ÷|ÙbbKGDÿ‡Ì¿ IDAThÞíØiÈ¥çYðßýlg}Ï»Îd™LÈXë’Š&¡b µ5Ô˜‚´­RB,ÑJp "cÄ/m-‚„жJÕb©!iI-ÕBHq¥ fq23ÉÌdÞý¼gyv?Ì1RIÞ‰)~™ëá|y÷}ýŸëúßËÿÏÕ¸Wãjü?Gx=ƒÚ‹ãÂ×¼j_ßdá Õñ¹ä{ÿ²tzé°ˆ×ò·î¾oP¤eT©´ÚðõÐÄÏw>yí‹ïzë;·®ž¸±wÔHaâåIýÌΓO<¶ò¥;åjMxc´„*~bð‰ÛŽßwâ®F±T"/~µ\®qn>yô©ß{àñ0UD8TúèL÷W¿ãè/¿ù®aÔY +µA*– h5RqûôãÏøW¾b¦í %ùÜêC?û–û—}X+ÒÕjÑ‚9¤–¬Ùo¾üû7|øÏ&Åk3â5þoC“þú'û›¿¯'ô Ä*A%·df /W U)%Ö­šùü3û÷ýÆWºùkµ"¼zú*ý¹oÛûÔÍoi E6DØÔˆU"C$FR…B¢B+Ó©ýÝîöÿÚç³ù«C¯þõ?ÿ­'?{ë‰ÂHª§/¶o†F,ÒI¤Vd A£•K¤‘±¿ŸLïýØÃÙ<4—ϽJïã{ên<‘K4*A¹F­T*´"¦"Ú\¡5q ”yÓ üÎ/Ý.}5"D—gþS£‡>:¸%S˜£¶cÏL­F­R©¨ä¦ZSjcµ©ZãˆcËáãqLÜ^qÂAçC÷ôÞ—+%Z•J®V)Õ S*µcÿá»"{fÆæj¬ºîMdwxùJG—+ÿ'û…ƒPhD™DµH[«•¯p¾#«“«\°k,ÓU Z‘žcï{à{¥íU ìuùÉεsS¥È"¥\¹€Q+1rTlf&¶¯Q)Íͽ$•isµåØ]®—~ýÉõÙÝ[2±3Ô¶5j=AÐÈ”NÛVˆµ R¨4J•b­—uUb7Ýúà».WƒèR (³‡~¨³š+Å*Ï8k*Rk•AªKDžµkÉÈL¡R‰MT*s»¶Ìl«”"áÞiÿÒK>¹Tvúõ{'"‘XP9'²d®¯/QËuŘX64“Û•æ öOµ&æÖ% ge†ßýGÇ?8V®ñŸëÞ–‹OXl¼Û&¨õ¬èŠ$:*[ÎÈÕ‚LႳví;0›:cÐyüÝMÒ¦-ñco_ŽWˆ´"}±jÁíØÄc_õ¯^ð’ӥƆu=ìxÙ9[JÇJ{¢w^è\ª —¨À<ÞÖÓëJ%‚¡#ú*ûjC‚ÈX×ÐCKöåV¼lº˜²™8/£Ò½ùÅÁ¥üo„³Y~sc;zqÒÏìb]g•*±FkÅQ®±ÖHÐш Õ*ÁSnò„æØÉÑmçǤ^IÄjA‰¤ÆN‹œWj$2¹J#Yà_s­ã6ôtŒí#R#2tÁ²[õõÓ'޲ó$2_ðâdÛ¥u‰Z&Ôè+ì¨õ­kÍ $Z¥VûÊÙxÞº=œ]=ã¸ê·r«ö%‚X­§ÑQhìÊ­ÙPJ pVlY_ÐXSX±©ÖX1ÑHm™‰D†6³CîI“Í*­¾‰F¶8û#Ì\£#IÝ`*“jµR¹ ãZ«NyAåfs»Î¨4žuÔ²a~HוÍ~j¤5Qª$ AbÉu6%"ì*eú¶eZ©F°¦ÕKT"¥€ÌPíĶö0$l;¥RjÉÐšŽŽÑb²±Fdj¢U9«•Û“Im‰ÅV6 D­®VБšßyáptÊø¹Ò\íz=×¹Ñ1­Ì\&“Ê õôЩLMÍ}»6ôdzV u´ú®‘‰N=8dåÊ?ŒhÕ:–$ºRË:#ëúØTöͤ:ú¶D‹ ‡ ë‚S¶õõ,Y¶&Ö>{ÍôPõMªŽX*µbÍ–¹ ™©F*HÕ†– ô«Ì5ú6DÆrS±\‹}S_ÊÙÍ]/f_Íõ %¼`W°,53Ô‹¤†Ž[Fת]­ ÅXªQh hźjóê[¾ÊpÈ Isݤ÷ð¾\"Ñ×50רQª•A$¨•b™Æ¾!‹¥:ñ‚X•}AW-û›xNsèQ(îüóbó”-s‰ÌšÌH_*hĉHßÜ5úFA®ÕÓÓºÆ7H¥:Vô õ>±>94€@ý£§úŸÞ··`79êˆ AǪU™ÆßhÙšŽeC”º::&b‰ÊŠ‘#‘æÉ>ª¼´8H.- Òùí¿û…™™ªÔbC]/Z6övTF´j‘`¦’ &.(´‚ž¾ S[ʶóѵ]õ\JõO<ô#[ÆR3…ÆLå„uo6Õµ,Öš^´D4Z±x¡˜j­ è^\šŸýÀ_FE¸BaÒfùýŸ.>71SÈôÓͤ4j™ ]€(Ìäæ*Z%52µcvê–Gûš+TFúÛwï½òOçUvŒíitmè..à jÒ\!W*ÕZ­Vâ‚gmͺ?uçIU¸rq¨Þsúû?°srG¦–;ï‚ÒŽ™©ÜL¾Ð‡¥Bn¢T,®í0vÎ~žýÌ=.¹½&BwÿÛ?¼ýܦ™ÄÄܦ©=4¯¤Ÿ™˜š›«Äb#A)7ŸŒ~úžÏô¦¯Û¸è”ÙÓ_ýV¸ãF‰Ö’Ôšž®e Ä®b!ÙZ 5WŸ¹þþ»íÍþOÉE’^ÿÍõ³*1×—¢³ÐË×ÂEñ¾Ù¹ùÁ»þ=+^Û+;œKŸîê»ö~1½c-t±¾”^Ò"…Z‹Z+U>ÙÿØ»9¶¯:ŒiyhŸ°Nžýé;Ú÷§w ‡‰È52»"]Á®CuY9ûÃïùâõ»Iñú„ÿ홈7{_:~òŽämÉ-›Vûë!Tí~>>™?ÝùÛõ/¾óùáTù†;¥_c×Fu<Ï6»Ûƒá³½É¨ß¾ó¶IQÆyRDµúëæÿË:,žÿrÊÛ‹|½Wãj\+ÿxxs!&ÖIEND®B`‚PyQt-gpl-5.5.1/examples/quick/animation/basics/images/shadow.png0000644000076500000240000000065112613140041024665 0ustar philstaff00000000000000‰PNG  IHDR,º´ÚsRGB®ÎébKGDÿ‡Ì¿ pHYs Ö ÖoyœtIMEÙ .(Å0X-IDAT(ÏU’ÍJB…¿síV"¥)E…DPí´ u¯Ñ ôж§iѶMËÊ]ôYa¥æMïiq¯Š3‹á sÎ0‡À³ÁM ÕEçÉ’Ñ’K,0GNYB‡ €˜?GtÕö7jÒ$v‡ïõÏ„_ Öâ3jv¸ªëx•-6U¦`Æ¡ÖD?ÁzãÑ÷º£áóús¢(€½ìà„#eœ (f`$'Š€Òj„SelÁ”5\§È§…ã‹~`­Oƒ'ÿލC,ã$m&3¶me“åèòÂSwâÄ ¨ìk׋*³áe­0=´#½b„&!áŠ1°æóøã³xÔb@ÂŒRæˆ¾ØØ6= 6m-.I¹Ã˜0"è´v^xeAÄ’Œ‚w>*­m ožèrÍ3¬­8zaekd8î1Vd¦À´j|š*Õ¸6Òý³Î5R¯AòêÊA^åM×Ìÿ¡Œ|H·FX$IEND®B`‚PyQt-gpl-5.5.1/examples/quick/animation/basics/images/sun.png0000644000076500000240000001773112613140041024214 0ustar philstaff00000000000000‰PNG  IHDRDD8“²sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEØ'&V˜ŽYIDATxÚì™Ù“%ÇuÞ¿“KUݺ{ß{»§»gEc ‚LR2‹¢°A+¨ÊŽðÃŽð›ìгé?Á?ùÉ/v„e‡EÓrP¤ÄEÖBû2 0 fÁLOïË]êÖ’Ëqõ]f† hR „§û‹“]5QYù›ÌsNfáÿÛ§Ä~ï÷&úˆñŸø9vñ"hw„¿MÆ :ÒG®ÿÕ?ˆ˜A¯¿þ³¼½ =Aâ¯ÁÄß<ˆ€… ¶\T6߇XjÝ@t:ªUðß 8ßÓ|ý²¿Ë~ñ÷:„™ñ^ ÚXZ^ø_—z£-˜g÷ÿô·Dáe@Ÿb ÌÌŸ´ÇN€tE­ü6à5 æVFÙjÅC#ðµ' ö´ÆkŸ¾çJ¡¥VudðDŸb X/Õ‡æ?~.˜± ±Ý ŒT¨æÖè*f„ ÑP•®iä!ø E–5REÀò{ÿC¾ñ)²  sð_žåÔÿˆñ¿)õ?ÏŽ™Æ5|ó)DÔ‹Ú› 9$„a3ÂgßñÉ[Oj_U-ÁÉ 3ãôwwE|*€0OE„#+Ðu<4ŒÀ ̌ӌ‚üŒÂR,D‘iÕF˜„4ŒBÏ5܄ó-b[ÇKðYdü¤£ªÐ TÛ¬hÍ ÕÁ˜Û5£q!ýtÁK+ÀOž˜Nÿ,¬w8±ßÀÚR•ÿìñ„·!ð&¦„…µªûä9o¹F½É‡aÃRÚÆ*ÍP¶Uº rÒ~¯A  Ÿ*Q-׌(B—ªŒÿ3ˆÿÀoý¶DŠ€Å}Œ_y×^]c@ès·€=aÝ_hçÿáYB#_;ÐPû]ˆ•ÆÆ:D±[ÕAN"@v7„³‹áªpÔVà®Ï› lôÃv MYÜ"j-±¥e4B#h»hÐCV#ù§ ð 72mdÎÒ¹ÿvÂ7fºô >Š–÷á¯s©Í&ôâ›Î ï‚Ç»]\8í fÈÝ[±×tjqûtS ÀWë%$ÁN¬±Ç"©q›Ezœ)_‚w«DtÒ‡Jz@Ú“¹8aËki”´Ø¨5ÃEµ¯37¶!”7ÏÖ¸ôGÿ'àw~—ðµ“_ÿa×· B„ÿ§~º´?ÙX~ë€hf"€/ ¢Ãøï2Äo½ÐÁÖQ¾?äÕª»'¨è5Áƒ+l£6©÷r¼@ÒKòiÙö@Ö²·="QL”Õ äŒ< ¦rh@ÅêÑ5r$asKT‰ Ÿ<Ø#µKøg <±J¼¢×ÍùV{‰„4hŠŒßÁCá¸_) €ý¶‡8Ô`VÌÈð½UêÉ ~G¥È÷v|Ñ:'O®»øj&ë;ýêC>¯ )LÌšœÐ‡U@ž»$Ðd˜컥ˆC/Ô*¼ße6%<î“wuhß#Ë@Þ’•,NÔœu=_»‰ÞXôŸª¢‘fþÚò¢Wˆ”v;ivQé•z¬Ä0¥3ð¿2 üÚÓ„~“Íùë”O£þÜå¨(’ =6Êê{F >]E|+Ĉ©ñ1XÙäÖÍ‚kÛm‘Ä_`í˘URaŸ-ò,4cq"Orï¼k‰?Ë^„R¬+2ÊEae,u,öU "W'_l1x•|hØFÉ`ë VƒÀç1ËüXa^`Ü¡'8¿€JëfÒ”íãÕg ¿›’4öô_ È<•ޱݮ·ëj÷Š…Øz\ü¬¤Õ+ ÑÚÎ’~fëh´‘¶Z¢²ÁtB¤ñß56¨Þ'.ä“ÄöºÉq¬¿géaú¤= ÄÝfØyˆd¼@•FB„ð\À»ùpmxã’…Ü-3¨õÜNT7‹* †¯·A©áðˆ¸-ø˜bÁD©Màé4j£—\vdwkZÉ-ñ_ŸIøtP^Wx)}ã=0ß3óï1ú@€ ‚»}í¥Ñ€¸¾¥°T=㗮׬?ÉÑ2dªº¬’*a¢gAnñÖŽóòsýuZ<¼œŸÐÁ¹…êñ_áêã•@€ˆïê|ëYÂg#äï Yÿ‘³þë gèíz£ˆpô ²ËdªŠvà9ì‹´wÌU·ÿDˆ•z×|gë¢üƒÕsjµ‰j µU{ôüÿr3jÖ“ûD@€ÛQ9B‹* "€ü•^œÙ]ÐÀóÑÊìì=[(ÍÖvH'šDÑö6|v°Ÿt÷®Ž ÄKs_#Õ^¨(e&"áfPøC p)òªôðlƒ‹è¿wsaÍ|§ÖÐëäš{½EESA^êú…­ÕÝ·äµÓ{Þ[rÎçº:¸…ÏýÄ!AQ  ‰â~û!ÂÇç T­F¤ú$aø;_Fky!ƒ†ÞÕÏR4þuBê½¥ˆD^wœÖ÷nOŽ®Ÿi¬ýNX9ý m© $f Ĭw¢{ß„qgCäö8Uúl4²õó<¼ñ­ýÖis¾µ]&ç ó:Ð$®ˆUþŽÜ?uÈY­FR¬{·¹Ï¼]ÞCÓf‡õc(Hã¾FŸ¤þ€GÀ]ïQÈKöz!‹Å5fÛñ]¶ÁSðóS5iï\I-6k4ÏýÓ@/­‚äPyé=Hp$"º÷-øNÇìùŽw€·0!Ìî&—¿™VŽ%º'ÃWU9&¢KtØ[‡¯98ó¶;þö6-ªN N!†©C/„;C¿D–™ïS’›‘B‹ÏœB¨=v´ƒ [œuΡ²¾V»–ýé«ãGó«e™úä Rw›€Ø”IšÁ÷B¡nƒ bÀ—ƒá!Áój¡†Ú©¿W¼÷Gg‰rt×è1]çQ«ÅÞç"ZÿKwüjáëþ¤ yl+…´¡Á¿²:$Žá1Àú‚ºÛ§fÇÄfW¢Û\´žb½7Ú»š×Ó÷³åÚÉÏK½ØäHyAN`LÛO÷]2$ÌSL ‚ŸBa?y8EÐm#>v.^}ù¬®Ã7ÚCAyÄÍÜM{Ðz‰¢Íb7Ú ýV†¿¾ßìOs@£îcü/câ7§{¶ñÿ„_‡“ëÕM²Å>/n´¸¾Íi0ØÏßËžtE«'@j¯Ô$ @@šiüPP¥—3‰¹Ÿ·ç²·Û˜·Å‘ ÌAÁáò  ÃýwÒ³$©q}+ãzþšÐÍã,¶[iö üá£DQ (aT‚‘÷P?C¾Ü&ôÃKŸ'þqÅâýÂâÜ›W{¡6y W„HÞðarÂò¸¶wÉžP¹«ê“UȪ© ¢”IžÎUJŠùr™ÇûÆ¢Ùì ”òð΃ØìáÀÒAÔº[ƒ»¹Uß¹6|äD7R¿µ G/ ±»#‚Ü µó d„ MFJ\D.HšF“·Z»–èã€|mÝã|;G¶ÃPÇuˆþç¨n1Ûz‡2>Ã*irx@”»ñþ5×ÂnÑQu@¶$HçS~*uÔ&€Ä¸AbcêyîçÅ‚Á˜¶y¤”w“L%´ƒj)¨CPºé×’-uµ¶0x•BÛ÷ÌiŠlŠ;Ð ‘SVl< D¶êQT0’cúÒ·ìÏ!ÿ¶Ôsç™^ð5ŽjiëR±JÓHáÄ-\9Ü¢ñ¿ý'ª'Ah¯Hþñ) GŒööØWÓë"×#dú!vµ iÕ`|°™õdßudu€T ø> š ©&0 x6p1óÓl3¯Cx6CøÃ3d–óçÁu˜…-½cPú¢ÈR~ß=œòU –举Ë;½ y},.‚ìyèõ!dHøR¡Š~‘¨²*¶,®¿íé«÷Âü,m¾Ô¾é”é³ }*¡C™¦>ÖFWHºT’’Êv®§ŽwÝšL¢ˆ ¤ÛuE 1…Aä¦0•šû)˜;Fñ=ˇç@À .=Á˜.A¶ù¤”md• Yn…ÄrÙ)Ñø- ÓËžÕÉvr±ÇÀ>Œª¦}ðþ×× oüŒBô ó÷¿ê]LqÖ6"©šÞç¶v™¡W`Ò.©QÅÚ¡.¶‹fTd P@“À Àn •Yi.f3b’~ï¤[ú˜Úp7Dé™' à§Pˆ à7'ý“ø$b 2Æ»EÍí(­o‘¯Uœ©žb_í’«$`“ Ϭ= Ê/6 ó:ñ×áé«^}¤*Å7Ybb2þé÷¨o*B¤ &q@ì<àªÌêL6Ôg1öuj"ÂÆäi Å3ˆ;Uf0älVÌbÇÇað &0æÙ.»=#@Ñ,X;PˆðÓ(Rôd°Ž…Ǻ÷ΰ5¶²!´ á‘@øÈS&í,•0~ìïChv¬(<{Mþ\¨eHì‘!Sßõ¹}W@$°2O³ ™!@·‹.’G"Øo¸   ¢ YŠ&âyÚÃáÉ/À|×DŒð#€Ç H`ÖM¥K… }…­~€X1¼0 pQ>’,¶ 9ÉØ@9/þô/ÿÓÇÕé¢u`o¡, M)yZ©*WY ÁÉeïxäuu¢ EÀ Ƽ<§ù~…2Ì ` "5íšäí@‹yÁ:{†ÈÙlA°`šˆ;}‘¸«?ͶEžlÅ ömx}Ixy|¼É*ècÔðªr?Ë,-¿RÂøØ,C49±f¼ø»  hÐd0S1ÎwÀí¾˜§0Ø–bòRóÙ nD*²2a÷÷ЬŽqåÀÒ#‚Þ½ÌOÀ×?´dhz.Ïów·v"Á yo"# —ž$,tÔõã‘çb²ŒÏq)°/%¦œ£P: @,ïªÝÝ4­–bÒ³Wœ¦p0îàY?Þßn³ ¥ÕA|>ÂÖ¹0#Œ‰P «FöÌj®F6‡¿až~–΂?CxzI)M(…ˆ ïN’(ŽkJã kýÍ¢Á)€Ú7{ÁRŠÙ #€bM— 04Àâ®Xa6ÓëS–<»Žðfc*;óÃd„êJ0åÈÅ»Äê2ùÊ&¼JPecÅþXFöQ"žàXÁ¥c˜ÈÀ(ÜÙpº‰æý¿û  ŠoD:n¸Ð9Zb§V[ÍÈ ´P˜™Úªèï_'V “l2(ððÖJ±“³Š5sâ4B¨g…šœÍ"f;ÝÖCoCr`C—~\ꄛʹ —…—f±÷IŠˆ)xŒmÜ+á\„ц·òË+>]¦ôÐâð†Áonz¢Ÿ“v~Øh‘BVÕ6¬i5M<@0H¹±s”†œU*¢­FãÝz¾ìFyQ"t`SJÍE`/A¬'P€pƒOM—Žœ% {&0Ĭ@³ð¬žÆv4àÏ•yØ! ;ÁÍ0¬Ž1Žby€JòwBå4²ÆbuÜ>W9SÛÔŠ‡ø‹§ ów˜èç‡ìuú¢(R¡ xñR¢èa÷è`aÄ9¿Fúð~T«ðáÖƒá›Ã·Ìóªï•ˆ=H9øRBÐ3(¥ÀA©) žÑÑ,~@ÄÃÎ>TÉR<›Ã¾°à#[¶ìH*V ·iaãU7.P²ZÁàø¤F}ô2ž|yÛ2ª"« ê/w‘u+¤][gÌÇ-Ñó}ÎC¾¼H/ÆÚ­þ¤¦¬ìqÖèÒîrBIý¢CòªPI@B®ÂU“:¸‘çŸ:hæ·Ìa~‚b&Ò˜}vðÊ€ô$Kš Œ„sXú4¢ЬöÈf™Ä€½*E¥vÓ¸á‹>7 >wð#Ó'ºÑ•HU/!i¬ šå¾ýîwåP]ÁøAå“¥eúó¯œV ‡~éúžxàmkýÅÀyTrÛxåà^ Ì€1?ä9ŽÈèºØ?ÆØ:¶.’ÆU¸(Ù÷X¬ûˆl 'Ò ©ìÈÛÚ9!)¢ƒ×»…ÑîÛ¾-öL]$,¼ Òg ÍNÏÝôpÇcº)c ˆÊT €óR~æÌ3–µðÖÀg9|šs;âÇÅ>8êæñäèã8嬞PµùëÜì×èÄ[/Y¥^•/IÒíœìù½“,âl€Õ …^ú€üÂý}í6œºëã¶Jæzc‘ÔFòÆ*ãÖ韼|Ý 2¨GH¢Û†)n\f20õÏ6;f#_3ß]t_¦]_%éf¹+ä5Hƒ© Ì7xäÀ yñv–Al)S*› \¤ði7N¡ä¦l;˜=Fnƒ´÷på¥J —ÁÙ;<^Œ9¯Œ¼©W)oüµöß”Ï}û&500âï}U`TUâÆ3¤.œs8÷m×îîž!\Ê”„fvPêǸÇ~ô‚à°hxVM采nìÂwVÈ#fÝÿ€Ô`£w2ø<|8½6|äTÀÌ9€ÃÛ±‚YC²J1æ™›ƒÝl4„7¥Ïpã>\rPªŸðG0vi¢FÍ3­šf E&Hס1 xûÐ¥m+ãQܧ}QkóÁþ%T†cоé¸×ø®JküÆ%2Se©¬ݺ)…Qàåˆ TÿŠ})MãQa›'{§²«{B£ƒز²h&`¿ 8žd Š °ƒÔf¸ñ Æ!|^*Û+/íÀJþy7š,d…:¨Ÿª¾Þ^Æ›°ªÃùÒs0Ùu F·®90ª½5–ßZ÷ôÚ†íi*»ÖÖÍÑÖp¿ºhÑ/ò±{ž‚;'pö˜€p–Îýü O´52£Œ*å“%¿5${ÐÃÆÞÆ¡î¿k>À¶‚ld-‚Œ *¥¢DЩ$ÃÙžÞ•¿Ø&ðÅ>+¤û%ƒ²màŒâ¼Á^g­þV½£ßô™ù2ÌÒ)2ñ2È~Ëúü §ÞïG ‹îž§Ù® óÉ€ºÃEEc#jeÔhCô ¿¸ñ¿¡ µ–ôÙÙÓpñWH÷o@û'9:l ÜÙ8ªSF;îÑÝ+éãÜ7kQÅkÙd]@ÆDT‡k UÉbºÓu¼ƒó!|©ÉIfd™ÊdS¾Õ{0|5Ž:Ubµà} 2Lî§”v`«WIòË8O×ÞîÓ?ßa|Èøf-€´í,GKôËayZÂ=¼Æ…|ÎëÁyRâi®îõP¹uAŽ5³U'¾ã‘Ã]ùâîåÑ2m/ ½Tñ,¹DÒP³ÃgïÁ~Vl€O3²\:ÕU›‹§»Ã¸‘ýO’æ}Ø:8ë®ñ;zÇ$ÇïqÞ\†•Mn a¯àK?HégÓêüËyý)þêH¬8Þ{‡…~R´özï¾Ï}Ú£¼þdV!5¼>íŸðYqs\Œ>¸&—Ì;á’¢.‰•T !@D M˜8WzFÄj·²´Vi3Š£-Qá´n²>ü6`6)_]à¬~œDþÂÚˆ5œµWÅMöhSh7AÃüÚK}‘*ü‚¶ùrÛâ¤B¡è¿$ëÑ)Ô·aãÃ×ä~¾a‡§é`|“!c²•´nO¿/U«µh\SÝÖÚk¶p‘É};Mÿo5×Ö"Çq…¿S]Õ—™žÙÙ›´«E Ž‘{lA®ä!ÆÁà@ˆñcòOò˜7ç7Ä/“„ƒ%à€C0 ±"k£Ëj¥ÕÌŽvgvgzúZÝUu¼ ÈfaM`ýÁâœîê>NŸ¯Ë¤©\d–ÊGEŠƒP ¿K$•Ý‘¶Ã¶`¡ºàÃß:I/Rµª8œLLwPÅ#¶~L:»Ka/B-¢ÑCŠdë/˜j±+ïààaõ5„ÿüÁKĵ:Þ²}(³ì:k‚ª)&ù.ÌùÈ6™$Ïú,J!T÷¬òåöz³g©-òŧá°å6“è’L·–™…°.ìÀ© +ðõ=‘Å9; 2m ü=·pÎu Åog£f6ª^û<}€­ïãëßéÂ5­¦*KßS Á–øîÙœè­G8Ú½ý3‚ b‘WEhëI€¥~äâþ.,v ï[…(gdòDˆÅEøÆcw­éLm¬Ç.[ƒ®Â¶àÔu˜p‡9ØûÛ©›ìä-¸` Ö߆óGà`ò6aÂ]¸ ½zFÀþ{3ÍMo9kµj5Ts+<û´‡o±?ä÷E `¢>\´)†ŽÃ=á7ò&ŽXFNl”\æ^±·.0¼}UøûÈ»\ºLôÜåÖæ-ÊIþòŠÁâf…²~´£ÝÐSCßþ3ˆo Ù —ê†^=>Ëý¡—o ,x_Üðò6»/m+ºþLÁ‚nÚ5Àwa[d“ Š ëê‚jÉÂwGˆ-˜§ÄˆàÛ”UT1Ó.™`êB»Êy7TKƒM'üžãõ ñ\ºIðúŸ5ÿå›PüV§¦‹ï6üö „ïôå}ûî‘r¼ç:¡73Ÿªyë™.·‹¢Ùuï½Ié~á|7[k±›lŠ ÷$(Ý"ŽŸbð‰­W¸Ì)dJ’òáD‘E‚[$hv´,0‹œ[Ø¿EÕÒyô£ÎM>€m=÷_ºƒ‹ï”@ßÿ{Ãü‚‡7@˜^þ?vøÓÈpÿüšpa²¢ezÏ;;ÉèçÎBA·ȼ…^ÅÖKÁa ¨ Ùµ ä:#7CêçÄaå%‡#öÄ®\h4´ÌáµùÛ×dËÅ0”·’dˆ“-¬ì=Áû)€^¼méRʧB¦Ú´Ç±óËh!a«±,o|•‘»[°,)Ä .ÖP4!- a¤Æ+›‹®‚¡éš&`‡Æk&ðm#{K• ôÔ5&±6ØÖèãS§Ûe†ðÏäÒ“ÙÔ@šB+t7GD9‚Qy!=@¥èÙ>ÍÞ‡C~µ†(+,Èç’$Mg¿c’W?Çu0îÛÀ-0¢Â¡5½íVú˧QÈìa!Ii½ø¸*Œ|HÕ5L“¡V nÄ:·Ê £šX»R?ø¦Œ—ƒ×h †Q•\£TÖzó®ÌKÌ3»ìȯ¯{ó‡ŠÃÊɤÞy2:MBfpÎ+‘-"9\É‘M3úÑ;@'ÑH< ð¤Ð–¹Ø3Ǧ¦Ï×¥ci8ôò*ëU_ß×xÆ’±qIÒöã9!Ô„+S¯³G8-`žÛq_² :üáéc߯0_Û+?éò•×<~sY0Ÿ¼¿÷â»ç–]æ÷>‰-ͯOö‚€«@»ï‚yn§<ƒàþ‰±ÿ¼1ÿü?H¶ã¸Ue"þÄwìÏÞ dÒ©%Dëù Ó‰É^û±|È=ä½{ðO ë±%/× N®WæIÜ­,EE0'ÔBê¡Ï˜çö™ÄG‚Ì]HnÃrIEND®B`‚PyQt-gpl-5.5.1/examples/quick/animation/basics/property-animation.qml0000644000076500000240000001013312613140041025775 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 Item { id: window width: 320; height: 480 // Let's draw the sky... Rectangle { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } gradient: Gradient { GradientStop { position: 0.0; color: "DeepSkyBlue" } GradientStop { position: 1.0; color: "LightSkyBlue" } } } // ...and the ground. Rectangle { anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } gradient: Gradient { GradientStop { position: 0.0; color: "ForestGreen" } GradientStop { position: 1.0; color: "DarkGreen" } } } // The shadow for the smiley face Image { anchors.horizontalCenter: parent.horizontalCenter y: smiley.minHeight + 58 source: "images/shadow.png" // The scale property depends on the y position of the smiley face. scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight) } Image { id: smiley property int maxHeight: window.height / 3 property int minHeight: 2 * window.height / 3 anchors.horizontalCenter: parent.horizontalCenter y: minHeight source: "images/face-smile.png" //! [0] // Animate the y property. Setting loops to Animation.Infinite makes the // animation repeat indefinitely, otherwise it would only run once. SequentialAnimation on y { loops: Animation.Infinite // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function NumberAnimation { from: smiley.minHeight; to: smiley.maxHeight easing.type: Easing.OutExpo; duration: 300 } // Then move back to minHeight in 1 second, using the OutBounce easing function NumberAnimation { from: smiley.maxHeight; to: smiley.minHeight easing.type: Easing.OutBounce; duration: 1000 } // Then pause for 500ms PauseAnimation { duration: 500 } } //! [0] } } PyQt-gpl-5.5.1/examples/quick/animation/behaviors/0000755000076500000240000000000012613140041022141 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/behaviors/behavior-example.qml0000644000076500000240000001053412613140041026107 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 { width: 320; height: 480 color: "#343434" Rectangle { anchors.centerIn: parent width: 200; height: 200 radius: 30 color: "transparent" border.width: 4; border.color: "white" SideRect { id: leftRect anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.left } text: "Left" } SideRect { id: rightRect anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.right } text: "Right" } SideRect { id: topRect anchors { verticalCenter: parent.top; horizontalCenter: parent.horizontalCenter } text: "Top" } SideRect { id: bottomRect anchors { verticalCenter: parent.bottom; horizontalCenter: parent.horizontalCenter } text: "Bottom" } Rectangle { id: focusRect property string text x: 62; y: 75; width: 75; height: 50 radius: 6 border.width: 4; border.color: "white" color: "firebrick" // Set an 'elastic' behavior on the focusRect's x property. Behavior on x { NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } } //! [0] // Set an 'elastic' behavior on the focusRect's y property. Behavior on y { NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } } //! [0] Text { id: focusText text: focusRect.text anchors.centerIn: parent color: "white" font.pixelSize: 16; font.bold: true // Set a behavior on the focusText's x property: // Set the opacity to 0, set the new text value, then set the opacity back to 1. Behavior on text { SequentialAnimation { NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 } NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 } } } } } } } PyQt-gpl-5.5.1/examples/quick/animation/behaviors/SideRect.qml0000644000076500000240000000454112613140041024362 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: myRect property string text width: 75; height: 50 radius: 6 color: "#646464" border.width: 4; border.color: "white" MouseArea { anchors.fill: parent hoverEnabled: true onEntered: { focusRect.x = myRect.x; focusRect.y = myRect.y; focusRect.text = myRect.text; } } } PyQt-gpl-5.5.1/examples/quick/animation/behaviors/tvtennis.qml0000644000076500000240000001043012613140041024524 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: 320; height: 480; color: "Black" // Make a ball to bounce Rectangle { id: ball // Add a property for the target y coordinate property variant direction : "right" x: 20; width: 20; height: 20; z: 1 color: "Lime" // Move the ball to the right and back to the left repeatedly SequentialAnimation on x { loops: Animation.Infinite NumberAnimation { to: page.width - 40; duration: 2000 } PropertyAction { target: ball; property: "direction"; value: "left" } NumberAnimation { to: 20; duration: 2000 } PropertyAction { target: ball; property: "direction"; value: "right" } } // Make y move with a velocity of 200 Behavior on y { SpringAnimation{ velocity: 200; } } Component.onCompleted: y = page.height-10; // start the ball motion // Detect the ball hitting the top or bottom of the view and bounce it onYChanged: { if (y <= 0) { y = page.height - 20; } else if (y >= page.height - 20) { y = 0; } } } // Place bats to the left and right of the view, following the y // coordinates of the ball. Rectangle { id: leftBat color: "Lime" x: 2; width: 20; height: 90 // ![0] y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45; Behavior on y { SpringAnimation{ velocity: 300 } } // ![0] } Rectangle { id: rightBat color: "Lime" x: page.width - 22; width: 20; height: 90 y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45; Behavior on y { SpringAnimation{ velocity: 300 } } } // The rest, to make it look realistic, if neither ever scores... Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 } Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 } Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 } Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 } Repeater { model: page.height / 20 Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 } } } PyQt-gpl-5.5.1/examples/quick/animation/behaviors/wigglytext.qml0000644000076500000240000000777212613140041025100 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: container property string text: "Drag me!" property bool animated: true width: 320; height: 480; color: "#474747"; focus: true Keys.onPressed: { if (event.key == Qt.Key_Delete || event.key == Qt.Key_Backspace) container.remove() else if (event.text != "") { container.append(event.text) } } function append(text) { container.animated = false var lastLetter = container.children[container.children.length - 1] var newLetter = letterComponent.createObject(container) newLetter.text = text newLetter.follow = lastLetter container.animated = true } function remove() { if (container.children.length) container.children[container.children.length - 1].destroy() } function doLayout() { var follow = null for (var i = 0; i < container.text.length; ++i) { var newLetter = letterComponent.createObject(container) newLetter.text = container.text[i] newLetter.follow = follow follow = newLetter } } Component { id: letterComponent Text { id: letter property variant follow //! [0] x: follow ? follow.x + follow.width : container.width / 6 y: follow ? follow.y : container.height / 2 //! [0] font.pixelSize: 40; font.bold: true color: "#999999"; styleColor: "#222222"; style: Text.Raised MouseArea { anchors.fill: parent drag.target: letter; drag.axis: Drag.XAndYAxis onPressed: letter.color = "#dddddd" onReleased: letter.color = "#999999" } //! [1] Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } //! [1] } } Component.onCompleted: doLayout() } PyQt-gpl-5.5.1/examples/quick/animation/easing/0000755000076500000240000000000012613140041021425 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/easing/easing.qml0000644000076500000240000002031612613140041023410 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: window width: 320; height: 480; color: "#232323" property var easingCurve: [ 0.2, 0.2, 0.13, 0.65, 0.2, 0.8, 0.624, 0.98, 0.93, 0.95, 1, 1 ] ListModel { id: easingTypes ListElement { name: "Easing.Linear"; type: Easing.Linear; ballColor: "DarkRed" } ListElement { name: "Easing.InQuad"; type: Easing.InQuad; ballColor: "IndianRed" } ListElement { name: "Easing.OutQuad"; type: Easing.OutQuad; ballColor: "Salmon" } ListElement { name: "Easing.InOutQuad"; type: Easing.InOutQuad; ballColor: "Tomato" } ListElement { name: "Easing.OutInQuad"; type: Easing.OutInQuad; ballColor: "DarkOrange" } ListElement { name: "Easing.InCubic"; type: Easing.InCubic; ballColor: "Gold" } ListElement { name: "Easing.OutCubic"; type: Easing.OutCubic; ballColor: "Yellow" } ListElement { name: "Easing.InOutCubic"; type: Easing.InOutCubic; ballColor: "PeachPuff" } ListElement { name: "Easing.OutInCubic"; type: Easing.OutInCubic; ballColor: "Thistle" } ListElement { name: "Easing.InQuart"; type: Easing.InQuart; ballColor: "Orchid" } ListElement { name: "Easing.OutQuart"; type: Easing.OutQuart; ballColor: "Purple" } ListElement { name: "Easing.InOutQuart"; type: Easing.InOutQuart; ballColor: "SlateBlue" } ListElement { name: "Easing.OutInQuart"; type: Easing.OutInQuart; ballColor: "Chartreuse" } ListElement { name: "Easing.InQuint"; type: Easing.InQuint; ballColor: "LimeGreen" } ListElement { name: "Easing.OutQuint"; type: Easing.OutQuint; ballColor: "SeaGreen" } ListElement { name: "Easing.InOutQuint"; type: Easing.InOutQuint; ballColor: "DarkGreen" } ListElement { name: "Easing.OutInQuint"; type: Easing.OutInQuint; ballColor: "Olive" } ListElement { name: "Easing.InSine"; type: Easing.InSine; ballColor: "DarkSeaGreen" } ListElement { name: "Easing.OutSine"; type: Easing.OutSine; ballColor: "Teal" } ListElement { name: "Easing.InOutSine"; type: Easing.InOutSine; ballColor: "Turquoise" } ListElement { name: "Easing.OutInSine"; type: Easing.OutInSine; ballColor: "SteelBlue" } ListElement { name: "Easing.InExpo"; type: Easing.InExpo; ballColor: "SkyBlue" } ListElement { name: "Easing.OutExpo"; type: Easing.OutExpo; ballColor: "RoyalBlue" } ListElement { name: "Easing.InOutExpo"; type: Easing.InOutExpo; ballColor: "MediumBlue" } ListElement { name: "Easing.OutInExpo"; type: Easing.OutInExpo; ballColor: "MidnightBlue" } ListElement { name: "Easing.InCirc"; type: Easing.InCirc; ballColor: "CornSilk" } ListElement { name: "Easing.OutCirc"; type: Easing.OutCirc; ballColor: "Bisque" } ListElement { name: "Easing.InOutCirc"; type: Easing.InOutCirc; ballColor: "RosyBrown" } ListElement { name: "Easing.OutInCirc"; type: Easing.OutInCirc; ballColor: "SandyBrown" } ListElement { name: "Easing.InElastic"; type: Easing.InElastic; ballColor: "DarkGoldenRod" } ListElement { name: "Easing.OutElastic"; type: Easing.OutElastic; ballColor: "Chocolate" } ListElement { name: "Easing.InOutElastic"; type: Easing.InOutElastic; ballColor: "SaddleBrown" } ListElement { name: "Easing.OutInElastic"; type: Easing.OutInElastic; ballColor: "Brown" } ListElement { name: "Easing.InBack"; type: Easing.InBack; ballColor: "Maroon" } ListElement { name: "Easing.OutBack"; type: Easing.OutBack; ballColor: "LavenderBlush" } ListElement { name: "Easing.InOutBack"; type: Easing.InOutBack; ballColor: "MistyRose" } ListElement { name: "Easing.OutInBack"; type: Easing.OutInBack; ballColor: "Gainsboro" } ListElement { name: "Easing.OutBounce"; type: Easing.OutBounce; ballColor: "Silver" } ListElement { name: "Easing.InBounce"; type: Easing.InBounce; ballColor: "DimGray" } ListElement { name: "Easing.InOutBounce"; type: Easing.InOutBounce; ballColor: "SlateGray" } ListElement { name: "Easing.OutInBounce"; type: Easing.OutInBounce; ballColor: "DarkSlateGray" } ListElement { name: "Easing.Bezier"; type: Easing.Bezier; ballColor: "Chartreuse"; } } Component { id: delegate Item { height: 56; width: window.width Text { text: name; anchors.centerIn: parent; color: "White" } Rectangle { id: slot1; color: "#121212"; x: 30; height: 46; width: 46 border.color: "#343434"; border.width: 1; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter } Rectangle { id: slot2; color: "#121212"; x: window.width - 76; height: 46; width: 46 border.color: "#343434"; border.width: 1; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter } Rectangle { id: rect; x: 30; color: "#454545" border.color: "White"; border.width: 2 height: 46; width: 46; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter MouseArea { onClicked: if (rect.state == '') rect.state = "right"; else rect.state = '' anchors.fill: parent anchors.margins: -5 // Make MouseArea bigger than the rectangle, itself } states : State { name: "right" PropertyChanges { target: rect; x: window.width - 76; color: ballColor } } transitions: Transition { NumberAnimation { properties: "x"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 } ColorAnimation { properties: "color"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 } } } } } Flickable { anchors.fill: parent contentHeight: layout.height Column { id: layout Repeater { model: easingTypes; delegate: delegate } } } function getBezierCurve(name) { if (name === "Easing.Bezier") return easingCurve; return []; } } PyQt-gpl-5.5.1/examples/quick/animation/pathanimation/0000755000076500000240000000000012613140041023013 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/pathanimation/pathanimation.qml0000644000076500000240000000651712613140041026373 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: window width: 320 height: 480 Canvas { id: canvas anchors.fill: parent antialiasing: true onPaint: { var context = canvas.getContext("2d") context.clearRect(0, 0, width, height) context.strokeStyle = "black" context.path = pathAnim.path context.stroke() } } SequentialAnimation { running: true loops: -1 PauseAnimation { duration: 1000 } //! [0] PathAnimation { id: pathAnim duration: 2000 easing.type: Easing.InQuad target: box orientation: PathAnimation.RightFirst anchorPoint: Qt.point(box.width/2, box.height/2) path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } } //! [0] } Rectangle { id: box x: 25; y: 25 width: 50; height: 50 border.width: 1 antialiasing: true Text { anchors.centerIn: parent text: "Box" } } } PyQt-gpl-5.5.1/examples/quick/animation/pathinterpolator/0000755000076500000240000000000012613140041023556 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/pathinterpolator/pathinterpolator.qml0000644000076500000240000000701412613140041027672 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: window width: 320 height: 480 Canvas { id: canvas anchors.fill: parent antialiasing: true onPaint: { var context = canvas.getContext("2d") context.clearRect(0, 0, width, height) context.strokeStyle = "black" context.path = motionPath.path context.stroke() } } //! [0] PathInterpolator { id: motionPath path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } SequentialAnimation on progress { running: true loops: -1 PauseAnimation { duration: 1000 } NumberAnimation { id: progressAnim running: false from: 0; to: 1 duration: 2000 easing.type: Easing.InQuad } } } //! [0] Rectangle { id: box width: 50; height: 50 border.width: 1 antialiasing: true //bind our attributes to follow the path as progress changes x: motionPath.x y: motionPath.y rotation: motionPath.angle transform: Translate { x: -box.width/2; y: -box.height/2 } Text { anchors.centerIn: parent text: "Box" } } } PyQt-gpl-5.5.1/examples/quick/animation/states/0000755000076500000240000000000012613140041021462 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/animation/states/qt-logo.png0000644000076500000240000001203512613140041023553 0ustar philstaff00000000000000‰PNG  IHDR.7s`xdäIDATxœbüÿÿ?Ãß™™™˜ÿ>xñXféžU ‡/ž¶y÷é­˜¤ò?~Q¹¿üÌ?øþýÿÇÊÅÆ÷Fœ[ö–$¯Ò5)>¥ËÒ¼J×ÄxdïpŠ>ccfÿÅ€ügøÏôïÿ?&†ÿ Œ Œÿÿ30Bi ÿÿbüû÷/3ÓßY›¦TÏmí}óæ /Û{/aFYEN†Œ ÿ™þýÿÇðçßo†ÿÿ00002°0±2p²ð|ãcz&Ì%u_œGî¦Âu ^…›¢\R÷8Åž±³püÀnõÆÿÿ1Ã9$zÿÿbüÿÿ?äµ³sò»ó&sò ÿcgcûï,Ä !ÃÆøíë?FFˆ9Œp ™þ320üg```øÿÿ?Ó¿ÿÿüÿñп? ÿþ3°0²2°³pÿåg~!Ì%y_ŒGâu …ë¢<2w…9%žp°r}Åç¡ÿpKÿ1bñÿÿl’½ Â0F¿/Ò!ƒÆAÅ]p쨻Ïâkºvp(¨ƒàÖ±ˆ $÷:ˆ[^à6·Ëv:ž…ê⇲«KS¦x¿fgL þ ©Äd¢D$‰H¡*0,0.¬¸‘ïü$¬ïí?÷ÿÿ"Ùáÿÿ10pp23|ûú‡áôÉÇ R\ê ^&> ƪ† ¢" ŒŒ _~}`xöéõ×'®¾:Áðõ÷'nV>œŽgdd`€•JLŒL ÿÿÿgøOÀÿÿ"ÉáÿÿC}çÆ†£ûÞ2T„T0…g0°³³2ü‡TépµZb ®*Ñ Ï??`Xsu"Ãé';¸Øø0‹M†_?ÿ1°°°002ýeøöû   +;^Çÿÿ":;þÿÇÀÀÎÁÄpãòW†k_0Ì.œÎP—ËÀÂÊÄð÷ß_†ÿÿÿÁ+›?3üþ)Ò$yår-úBtò¾ýúÌÀ-þÿg``ecdxõìÃ’Y<ÄKº¼62ÔØ/f0”tdøñç\-6ÿÿŒÔ!Â@@Ñ?3»u S‚D5X$¦ áxnĸ i I1]¶ƒB’p‚ÿÔÿ þ<î™ËùÊid»nèSBE15DÓ€I X¤ îdÏ4‹›ùŽ®¢b¸;ªÂ­}½¤®VŒâ”j¼dRÎx øýäÿÿ":Ä™î~Π©¬ËP•ËÀÀÀÀÀÊÂÂÀÈÈÈðÿ?$™Üx{’¡fC:ƒOeÃÚC[ !ƹí<EAm†Ÿ¾10313üÿÇÈðôñm%UQi¨cþQÿÿ„Ô+Â@FáóߦLë@ P, IuÉX Š-`p$xb ¶w°ÂŽørþ†§ âéM<Þ™M*B^д ’ðäHâpݳØL‰¶åÖÝ1ž—,×+LÂÝñÔ’gQ¯¢ö™x=ÄåüdØ|í4Ãd˜ ýàòÿÿ"âÿ!eõ+„Äü­=˜¡-0Xdn¾1‹áßÿ¿ ì  ¦æ’ rš" U3Ú¾ÿ‚„.#´6”t`áWf`býÅðòÅg†ß/ß3Xé˜ ,c``øõ÷;Ã×ߟ¾ÿùÊðë/öV1ÿÿ"èp&f†ŸßîßûÈ`©cÄ %, åÿ ÿ™>üxÍðàýU.†?ÿ~3üþó‡ASGááãû .…„æÿ ÿýe`gádàýdİbþC†dÓF†Í3v0¸˜8@RÈ)j3˜É¸3hˆ˜0Hò(`uÿÿÂ[þÿÏÀÀÂÂÈðþÝ_†ïï0XéšBñï3¤¼edddxùå!×_ØY¸ Éâïa16æ §®cð4s…çMQ3†wúTÅ´4åÕþþû u8$-e½,d<™ž¾Ïа/ÃmÿÿÂâÿ˜˜Þ¿ýÍÀð™A_E‹ÞƒDí›oÏþüûÍÀÈÀÈÀÈI«œÜL Ì\, 7߃ëad‚èÓSÑdàâãgøó÷n‹ T@ÿÿ"˜T>¼ÿÅÀÄÎÉ  !ƒ†ÌèO?ÞBš¡Pþ¿ ¬¬ Üܬ Ïß¼„XÄÈ×'%,Á ©&Åpñþ%†§¯ŸÃCþüýËðûÏ?»Ðÿÿ"\sþg`øüé7/7ƒ(¿0Ô3ÐNTɷߟQ<ÂÀÉ, ï?‚ëù INvN†ˆ(-†ÔÎdi†ÃS72üÿÿŸáÃ?fFf†í72캽‚A„[’©ï€ÿÿ|•M € DŸùCˆP÷¿['ˆ6-41ýZ¸Šöó†˜pÕwžb!ø…àç,ß‘ñ,DzSÎiâ•(µ`µ†0)…·+ÖŒzôÔNö¼‘ä ¶ŠÓóËóÿÿ„—Á €0 C_·®›ÅÿÿW­ždï!yäLjd³AW[j"c:" Z8âäºc‚ó¶“™|{zMŠTš ¬:]}™ùÿÿ"ªÿû÷? 33²ùpiõ¡»’±ÿþû u *`ebƒ&liÒ:üÿÿÎZÿÿ"²­)öqöç°—ŒP)l²LŒÄ !àÿÿ"ÊáLLŒ ÿýcø‡¥IÊÀÀ€½Z†:˜‘{¹@iÏÿÿ"ª8da…¤Õß~Ã… XY±¶ÿýýÏÀÌÄÄÀ„e€æ÷¿ŸÐ¢Ž¼‘8ÿÿ"⌠ìì, ß~|gøñ {»•™Ãþÿ þþc`eee`aFv8$üüù-"Éÿÿ"Xs2220psCú–¿~‚ ÿ‡;Ž“•›2¨‰pÚÿ ¿ýeàd瀅P X>ùúë#$‰‘érÿÿ"*óò±2|ÿñáåû×ÿG8‡M€)ô!ÿùó//Dª‰‘‘áÏ¿ß Ÿ~¾c`fd!Ø·ÄÿÿÂïp¨øÙþüd¸÷ì!Ôᨖ pˆ¢t³þüT\b‚B žÌŸ~¾ƒ8œ‰…Ü ÿÿ"âÿýgàda``a`¸xç*š¿ a.Â%ÅÀÆÂ )) í÷Ÿ?þ3üüö‡A^BîYXè¾üòˆáë¯ ÌŒÌd§qÿÿÂëpFF†¿þ3ðð11ð s2œ¼zŽ^A.Ê-à À.ÂðÚOdbf`øüáïÿ ºÊšPÓ-¾{ï.3üþû šÆ‘ŽHNLŒL ¬,, ÌÌØË{ÿÿ"\åÿc``eg`PPâg8{ã2ãW¡]6Hûúßÿ œ¬< JB: ¿þýd`d`b`bbdxúè;+'/ƒ®Ä"¤nصW'X É¥<‡ú‡Máëï /ß½ax÷ñ#Ö"ÿÿ"ª8ü÷÷?ƒš/Ãço6ÛÉÀÀÀ€QÛ+†0üûû—™íÃÏoL §Ž>`uòfP“Qaø÷ï##$$Ÿ|ºÃpûíEV.V6&†Ïß¾000@jfXmj%ïÅ`-’À ü'€!Uwƒ(4$†<ÿÿ"ªúýë?ƒ„ ƒ„Ãôõ‹~ýùÅÀÂÌÌðŸá?|äI[Ì‚!L/ŸáÓ§ï [Ö=d°Õsa˜˜× 5ƒ‘áÄ£ûï­bøúë 3ƒ˜'ÃÃOž¿{ pHó² 3¹¶0´%´18é:3À‡çšÿÿ"®­ÂÀÀðŸñƒ­“ÃÕ[¦¬›ÍÀÀÀÀðûϸÃþÿÿÏà§‘ÁPg·†aMùF†½×0ˆð‹@ÆVþ203²0Ü{w™áЃõ Ül| ¿~ýfP×ágøøñÃÊ=› öüƒå´!8,9ÿÿ"jŽ‘‘á÷Ïÿ 2, Öî2 •SÛL5lu-~ÿùÍÀÄÄÄÀÌÄÄðÿÿ?U)UU)H)I¿ÿ˜Y>ý|Ç0çl-Ãß¿ØY8~ÿþÇ $ÆÌà(Ëбª›A\X”!ÄÞŸ™‘áÿÿ Ÿ}`xøá:é';Þ|{ÆÀÊ̆ÒRÿÿbäñûÏÈÈÀðëçYEv·@Üûÿÿ30pp03œ:ò–áæù¿ Kkf3xY:BÊuhþ÷ÿÃÿÿ’6žøäãm†é§Êž~ºËÀÉÊüüÿŸ‰áË—_ /_~eP“QfcøñçÃûï/>þxÏüèÿÿ"Éá0Ë89YÞÿÌpñôGoýP†dÏx%MVhoæào¿?3¬½:™áðƒ þý‚Œ ØÂ†¬YX˜~üúÁðûÏÈŒ+´äaÄ:Ê ÿÿ"y‚‘‘áû·? 2rÜ ~áÒ w71%X1´.îc````øûaÉŸ¿Þ_ËÀÀÀÀÀÅʋՌLQŸ?ÿ203°1p°r3°³p203B' °Mÿÿÿ"kò„‘‰áׯ ?¾ýePSg”àeØzl33<Éð± 3¸©Æ0|øñŠáãÏ·Ð4=*Pz=xÛ0ÿþÿÿ"kFnÑ?†ÿŒÔ5νÊpéÞ=%È€´v ÔÊfáSexñéñ'›>üx…³ýN„­ÿÿýÿÃÈÏ.ú ÿÿ¢lºŠ‘á÷ïÿ 꺼 þc˜±q!ß¿à 1FV+9† ,^6†¿ÿþ0àÌ@#ã¿ß2¨ íÿÿ¢Èጌ ÿgà`dpt—e˜¹v1Ãö{ØXÙàÿÏðŸˆù¢Àÿÿ ÿ™˜™Ø~;(Ïÿÿ¢x‚‘‰áç Ú†< ö> i“2flšÏðáóg†ÿÿm”o¿?3üùÿçÈÓÿ322ýcbdþÃÂÄúûý÷WŒ ¡SÔEŽÿÿ"¹8Ä`eü·ï¿ž<ýÀ ) Å ()ÇÀÎÆÎðý÷g†?ÞAG¼0Ó6dbº‚ºØà?Ã?æÿ þþûýï÷ß_L¶òA+RM[bX˜Xþÿÿ";sbXÎÈÀðãû_ff51†_¿¿1Üÿx >µ fùY ÁoãþgøÇü÷ß_Æ¿ÿ~3þý÷‡áï¿¿ Œ ~,+ßqN±Ç¢\2·ÍdÜ—šËz¬‚ ´ÿgÿÿb¬zøO• pHóú?ÃÏþ32²üçdeƒ/×ø÷ÿ/óßÿûÍøç߆ÿ k^Ø ü*À!ÿX”[æ¶$¯ÂuI^Å«’¼ 7E¸¤ðq½fbdþÇÀÀÀðÿÿ?&h¬ÿÿbùóçÛ?†ßL$%?ˆSÿ322 …àæÿÿ0þþû‹ñïŸßðdafgàfåû*Æ!ÿX”[úÄJW%xnŠrKÝGv :€,ÈùÏÀÄÈ Ïåÿÿb~òôísYvfî¿ÿÿ30cw<ã¤Å.(i‚3Yaä}"Ê-s[‚Wắâ5 …›"ÜÒ÷ù9„^áràÿÿÿ˜ÿÃcº‘ñ?–![ÿÿbÙÓ¿Á.¤.nÓÅ+—tY˜¥þBS™þ31"Výýÿ‡ñÏ_È †¿ÿ¡!ÈÄÎÀÍÆ÷]”C‚<Š×$y¯IðÊßå–¹ÏÏ.ôЉ ·ÿAÌ@²„‘é/±‘ÿÿbüÿÿ?Ãëo„½J¢7?þvÙ28Fîß×oß™þ3@2Y™Ø¸Xy? pˆ=á–¾#Á£pC’Wáš8üMQn©üìÂxˆ-‰t^ÿÿbüó÷33óßWïÞófÏNÞ.¡ýVO–Oý¬¯Âui>•KR¼Š×ĸeïpоdfbÆÞâùÿùÃ?hÖi©Ùx‚ÿÿ<¦䨞IEND®B`‚PyQt-gpl-5.5.1/examples/quick/animation/states/states.qml0000644000076500000240000000744412613140041023511 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: 640; height: 480 color: "#343434" Image { id: userIcon x: topLeftRect.x; y: topLeftRect.y source: "qt-logo.png" } Rectangle { id: topLeftRect anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to the default state, returning the image to // its initial position MouseArea { anchors.fill: parent; onClicked: page.state = '' } } Rectangle { id: middleRightRect anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'middleRight' MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } } Rectangle { id: bottomLeftRect anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'bottomLeft' MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } } states: [ // ![0] // In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } } // ![0] ] } PyQt-gpl-5.5.1/examples/quick/animation/states/transitions.qml0000644000076500000240000001150412613140041024553 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 /* This is exactly the same as states.qml, except that we have appended a set of transitions to apply animations when the item changes between each state. */ Rectangle { id: page width: 640; height: 480 color: "#343434" Image { id: userIcon x: topLeftRect.x; y: topLeftRect.y source: "qt-logo.png" } Rectangle { id: topLeftRect anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to the default state, returning the image to // its initial position MouseArea { anchors.fill: parent; onClicked: page.state = '' } } Rectangle { id: middleRightRect anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'middleRight' MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } } Rectangle { id: bottomLeftRect anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'bottomLeft' MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } } states: [ // In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } } ] // ![0] // Transitions define how the properties change when the item moves between each state transitions: [ // When transitioning to 'middleRight' move x,y over a duration of 1 second, // with OutBounce easing function. Transition { from: "*"; to: "middleRight" NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 } }, // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds, // with InOutQuad easing function. Transition { from: "*"; to: "bottomLeft" NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 } }, // For any other state changes move x,y linearly over duration of 200ms. Transition { NumberAnimation { properties: "x,y"; duration: 200 } } // ![0] ] } PyQt-gpl-5.5.1/examples/quick/canvas/0000755000076500000240000000000012613140041017453 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/bezierCurve/0000755000076500000240000000000012613140041021740 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/bezierCurve/bezierCurve.qml0000644000076500000240000001117012613140041024740 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Bezier Curve"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"red" property string fillStyle:"red" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value antialiasing: true Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); //! [0] ctx.beginPath(); ctx.moveTo(75,40); ctx.bezierCurveTo(75,37,70,25,50,25); ctx.bezierCurveTo(20,25,20,62.5,20,62.5); ctx.bezierCurveTo(20,80,40,102,75,120); ctx.bezierCurveTo(110,102,130,80,130,62.5); ctx.bezierCurveTo(130,62.5,130,25,100,25); ctx.bezierCurveTo(85,25,75,37,75,40); ctx.closePath(); //! [0] if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/canvas/canvas.py0000644000076500000240000000474612613140041021313 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 import os.path from PyQt5.QtCore import QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView # Access the shared module. sys.path.insert(1, os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'shared')) import shared_rc import canvas_rc app = QGuiApplication(sys.argv) view = QQuickView() view.engine().quit.connect(app.quit) view.setSource(QUrl('qrc:///canvas/canvas.qml')) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/canvas/canvas.qml0000644000076500000240000000577512613140041021457 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../shared" as Examples Item { height: 480 width: 320 Examples.LauncherList { id: ll anchors.fill: parent Component.onCompleted: { addExample("Red heart", "Draws a red heart with bezier curves", Qt.resolvedUrl("bezierCurve/bezierCurve.qml")); addExample("Talk bubble", "Draws a talk bubble with quadratic curves", Qt.resolvedUrl("quadraticCurveTo/quadraticCurveTo.qml")); addExample("Squircle", "Draws a smooth squircle with simple lines", Qt.resolvedUrl("squircle/squircle.qml")); addExample("Rounded rectangle", "Draws a rounded rectangle with lines and arcs", Qt.resolvedUrl("roundedrect/roundedrect.qml")); addExample("Smile face", "Draws a smile face with complex paths", Qt.resolvedUrl("smile/smile.qml")); addExample("Clip", "Shows the canvas clip feature", Qt.resolvedUrl("clip/clip.qml")); addExample("Tiger", "Draw a tiger with a collection of SVG paths", Qt.resolvedUrl("tiger/tiger.qml")); } } } PyQt-gpl-5.5.1/examples/quick/canvas/canvas.qrc0000644000076500000240000000246712613140041021446 0ustar philstaff00000000000000 canvas.qml bezierCurve/bezierCurve.qml clip/clip.qml contents/Button.qml contents/qt-logo.png contents/ScrollBar.qml contents/Slider.qml contents/TitleBar.qml contents/ToolBar.qml contents/images/button-pressed.png contents/images/button.png contents/images/default.svg contents/images/gloss.png contents/images/lineedit.png contents/images/lineedit.sci contents/images/quit.png contents/images/stripes.png contents/images/titlebar.png contents/images/titlebar.sci contents/images/toolbutton.png contents/images/toolbutton.sci quadraticCurveTo/quadraticCurveTo.qml roundedrect/roundedrect.qml smile/smile.qml squircle/squircle.png squircle/squircle.qml tiger/tiger.js tiger/tiger.qml PyQt-gpl-5.5.1/examples/quick/canvas/canvas_rc.py0000644000076500000240000274000612613140041021775 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Mon Jul 22 19:21:56 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0b\xfd\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x73\x68\x61\x72\x65\x64\x22\x20\ \x61\x73\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x0a\x0a\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x34\x38\x30\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x0a\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x2e\ \x4c\x61\x75\x6e\x63\x68\x65\x72\x4c\x69\x73\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6c\x6c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\ \x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\ \x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\ \x6c\x65\x28\x22\x52\x65\x64\x20\x68\x65\x61\x72\x74\x22\x2c\x20\ \x22\x44\x72\x61\x77\x73\x20\x61\x20\x72\x65\x64\x20\x68\x65\x61\ \x72\x74\x20\x77\x69\x74\x68\x20\x62\x65\x7a\x69\x65\x72\x20\x63\ \x75\x72\x76\x65\x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\ \x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x62\x65\x7a\x69\x65\x72\x43\ \x75\x72\x76\x65\x2f\x62\x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\ \x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\ \x22\x54\x61\x6c\x6b\x20\x62\x75\x62\x62\x6c\x65\x22\x2c\x20\x22\ \x44\x72\x61\x77\x73\x20\x61\x20\x74\x61\x6c\x6b\x20\x62\x75\x62\ \x62\x6c\x65\x20\x77\x69\x74\x68\x20\x71\x75\x61\x64\x72\x61\x74\ \x69\x63\x20\x63\x75\x72\x76\x65\x73\x22\x2c\x20\x20\x51\x74\x2e\ \x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x71\x75\x61\ \x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x2f\x71\x75\ \x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x2e\x71\ \x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x53\ \x71\x75\x69\x72\x63\x6c\x65\x22\x2c\x20\x22\x44\x72\x61\x77\x73\ \x20\x61\x20\x73\x6d\x6f\x6f\x74\x68\x20\x73\x71\x75\x69\x72\x63\ \x6c\x65\x20\x77\x69\x74\x68\x20\x73\x69\x6d\x70\x6c\x65\x20\x6c\ \x69\x6e\x65\x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\ \x76\x65\x64\x55\x72\x6c\x28\x22\x73\x71\x75\x69\x72\x63\x6c\x65\ \x2f\x73\x71\x75\x69\x72\x63\x6c\x65\x2e\x71\x6d\x6c\x22\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\ \x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x52\x6f\x75\x6e\x64\x65\ \x64\x20\x72\x65\x63\x74\x61\x6e\x67\x6c\x65\x22\x2c\x20\x22\x44\ \x72\x61\x77\x73\x20\x61\x20\x72\x6f\x75\x6e\x64\x65\x64\x20\x72\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x77\x69\x74\x68\x20\x6c\x69\ \x6e\x65\x73\x20\x61\x6e\x64\x20\x61\x72\x63\x73\x22\x2c\x20\x20\ \x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\ \x72\x6f\x75\x6e\x64\x65\x64\x72\x65\x63\x74\x2f\x72\x6f\x75\x6e\ \x64\x65\x64\x72\x65\x63\x74\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\ \x78\x61\x6d\x70\x6c\x65\x28\x22\x53\x6d\x69\x6c\x65\x20\x66\x61\ \x63\x65\x22\x2c\x20\x22\x44\x72\x61\x77\x73\x20\x61\x20\x73\x6d\ \x69\x6c\x65\x20\x66\x61\x63\x65\x20\x77\x69\x74\x68\x20\x63\x6f\ \x6d\x70\x6c\x65\x78\x20\x70\x61\x74\x68\x73\x22\x2c\x20\x20\x51\ \x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x73\ \x6d\x69\x6c\x65\x2f\x73\x6d\x69\x6c\x65\x2e\x71\x6d\x6c\x22\x29\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\ \x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x43\x6c\x69\x70\x22\ \x2c\x20\x22\x53\x68\x6f\x77\x73\x20\x74\x68\x65\x20\x63\x61\x6e\ \x76\x61\x73\x20\x63\x6c\x69\x70\x20\x66\x65\x61\x74\x75\x72\x65\ \x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\ \x72\x6c\x28\x22\x63\x6c\x69\x70\x2f\x63\x6c\x69\x70\x2e\x71\x6d\ \x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x54\x69\ \x67\x65\x72\x22\x2c\x20\x22\x44\x72\x61\x77\x20\x61\x20\x74\x69\ \x67\x65\x72\x20\x77\x69\x74\x68\x20\x61\x20\x63\x6f\x6c\x6c\x65\ \x63\x74\x69\x6f\x6e\x20\x6f\x66\x20\x53\x56\x47\x20\x70\x61\x74\ \x68\x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\ \x64\x55\x72\x6c\x28\x22\x74\x69\x67\x65\x72\x2f\x74\x69\x67\x65\ \x72\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\x00\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x69\x6d\x70\x6f\x72\x74\x20\x22\x74\x69\x67\x65\x72\x2e\ \x6a\x73\x22\x20\x61\x73\x20\x54\x69\x67\x65\x72\x0a\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\ \x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\x0a\x0a\x20\x20\x43\ \x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x73\x70\x61\x63\ \x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\ \x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\x6e\x74\x2e\x70\x6f\ \x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\x20\x74\x65\x78\x74\ \x3a\x22\x54\x69\x67\x65\x72\x20\x77\x69\x74\x68\x20\x53\x56\x47\ \x20\x70\x61\x74\x68\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\ \x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\x43\ \x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x38\x30\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\x73\ \x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\ \x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x73\ \x74\x65\x65\x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\ \x67\x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x79\x65\x6c\ \x6c\x6f\x77\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\ \x65\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\x70\ \x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x58\x20\ \x3a\x20\x73\x63\x61\x6c\x65\x58\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x59\x20\ \x3a\x20\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\x74\x61\x74\x65\x20\ \x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x66\x72\x61\x6d\x65\x3a\x30\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\ \x68\x61\x6e\x67\x65\x64\x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\ \x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\ \x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\ \x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x53\x63\x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x53\x63\x61\x6c\ \x65\x59\x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x72\x65\x71\x75\x65\ \x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x6f\x6e\x52\x6f\x74\x61\x74\x65\x43\x68\x61\x6e\x67\ \x65\x64\x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\ \x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\ \x61\x69\x6e\x74\x65\x64\x20\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x72\ \x61\x6d\x65\x2b\x2b\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x66\x72\ \x61\x6d\x65\x20\x3c\x20\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\ \x72\x2e\x6c\x65\x6e\x67\x74\x68\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\ \x69\x6e\x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x76\x61\x72\x20\x63\x74\x78\x20\x3d\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\x27\ \x32\x64\x27\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\ \x65\x61\x72\x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\ \x6e\x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x67\x6c\x6f\x62\ \x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x73\x63\x61\x6c\x65\x28\x63\x61\ \x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x58\x2c\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x59\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x6f\x74\ \x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x72\x6f\x74\x61\x74\ \x65\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x43\x6f\x6d\x70\x6f\x73\ \x69\x74\x65\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x20\x3d\x20\x22\ \x73\x6f\x75\x72\x63\x65\x2d\x6f\x76\x65\x72\x22\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x74\x72\ \x61\x6e\x73\x6c\x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x77\ \x69\x64\x74\x68\x2f\x32\x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x68\ \x65\x69\x67\x68\x74\x2f\x32\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\ \x53\x74\x79\x6c\x65\x20\x3d\x20\x51\x74\x2e\x72\x67\x62\x61\x28\ \x2e\x33\x2c\x20\x2e\x33\x2c\x20\x2e\x33\x2c\x31\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x31\x3b\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\ \x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\ \x6f\x72\x20\x28\x76\x61\x72\x20\x69\x20\x3d\x20\x30\x3b\x20\x69\ \x20\x3c\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x72\x61\x6d\x65\x20\ \x26\x26\x20\x69\x20\x3c\x20\x54\x69\x67\x65\x72\x2e\x74\x69\x67\ \x65\x72\x2e\x6c\x65\x6e\x67\x74\x68\x3b\x20\x69\x2b\x2b\x29\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\ \x72\x5b\x69\x5d\x2e\x77\x69\x64\x74\x68\x20\x21\x3d\x20\x75\x6e\ \x64\x65\x66\x69\x6e\x65\x64\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x54\x69\x67\ \x65\x72\x2e\x74\x69\x67\x65\x72\x5b\x69\x5d\x2e\x77\x69\x64\x74\ \x68\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\ \x67\x65\x72\x5b\x69\x5d\x2e\x70\x61\x74\x68\x20\x21\x3d\x20\x75\ \x6e\x64\x65\x66\x69\x6e\x65\x64\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x70\x61\x74\x68\x20\x3d\x20\x54\x69\x67\x65\x72\x2e\x74\ \x69\x67\x65\x72\x5b\x69\x5d\x2e\x70\x61\x74\x68\x3b\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\x72\x5b\x69\ \x5d\x2e\x66\x69\x6c\x6c\x20\x21\x3d\x20\x75\x6e\x64\x65\x66\x69\ \x6e\x65\x64\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\ \x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\x20\x54\x69\x67\x65\x72\ \x2e\x74\x69\x67\x65\x72\x5b\x69\x5d\x2e\x66\x69\x6c\x6c\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\x67\ \x65\x72\x5b\x69\x5d\x2e\x73\x74\x72\x6f\x6b\x65\x20\x21\x3d\x20\ \x75\x6e\x64\x65\x66\x69\x6e\x65\x64\x29\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\ \x20\x3d\x20\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\x72\x5b\x69\ \x5d\x2e\x73\x74\x72\x6f\x6b\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\ \x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x75\ \x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ \x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\ \x61\x6c\x65\x58\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\ \x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\ \x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\ \x20\x69\x6e\x69\x74\x3a\x30\x2e\x35\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x53\x63\x61\x6c\x65\x58\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\ \x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\ \x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\ \x20\x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\ \x3b\x20\x69\x6e\x69\x74\x3a\x30\x2e\x35\x3b\x20\x6e\x61\x6d\x65\ \x3a\x22\x53\x63\x61\x6c\x65\x59\x22\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\ \x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\ \x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\ \x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x4d\x61\x74\ \x68\x2e\x50\x49\x2a\x32\x3b\x20\x69\x6e\x69\x74\x3a\x30\x3b\x20\ \x6e\x61\x6d\x65\x3a\x22\x52\x6f\x74\x61\x74\x65\x22\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\ \x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\ \x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x01\x6d\xec\ \x76\ \x61\x72\x20\x74\x69\x67\x65\x72\x20\x3d\x20\x5b\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x2d\x31\x32\x32\x2e\x33\x30\x34\x20\x38\x34\x2e\x32\x38\x35\x43\ \x2d\x31\x32\x32\x2e\x33\x30\x34\x20\x38\x34\x2e\x32\x38\x35\x20\ \x2d\x31\x32\x32\x2e\x32\x30\x33\x20\x38\x36\x2e\x31\x37\x39\x20\ \x2d\x31\x32\x33\x2e\x30\x32\x37\x20\x38\x36\x2e\x31\x36\x43\x2d\ \x31\x32\x33\x2e\x38\x35\x31\x20\x38\x36\x2e\x31\x34\x31\x20\x2d\ \x31\x34\x30\x2e\x33\x30\x35\x20\x33\x38\x2e\x30\x36\x36\x20\x2d\ \x31\x36\x30\x2e\x38\x33\x33\x20\x34\x30\x2e\x33\x30\x39\x43\x2d\ \x31\x36\x30\x2e\x38\x33\x33\x20\x34\x30\x2e\x33\x30\x39\x20\x2d\ \x31\x34\x33\x2e\x30\x35\x20\x33\x32\x2e\x39\x35\x36\x20\x2d\x31\ \x32\x32\x2e\x33\x30\x34\x20\x38\x34\x2e\x32\x38\x35\x7a\x22\x7d\ \x0a\x20\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x38\x2e\x37\x37\x34\ \x20\x38\x31\x2e\x32\x36\x32\x43\x2d\x31\x31\x38\x2e\x37\x37\x34\ \x20\x38\x31\x2e\x32\x36\x32\x20\x2d\x31\x31\x39\x2e\x33\x32\x33\ \x20\x38\x33\x2e\x30\x37\x38\x20\x2d\x31\x32\x30\x2e\x30\x39\x32\ \x20\x38\x32\x2e\x37\x37\x39\x43\x2d\x31\x32\x30\x2e\x38\x36\x20\ \x38\x32\x2e\x34\x38\x31\x20\x2d\x31\x31\x39\x2e\x39\x37\x37\x20\ \x33\x31\x2e\x36\x37\x35\x20\x2d\x31\x34\x30\x2e\x30\x34\x33\x20\ \x32\x36\x2e\x38\x30\x31\x43\x2d\x31\x34\x30\x2e\x30\x34\x33\x20\ \x32\x36\x2e\x38\x30\x31\x20\x2d\x31\x32\x30\x2e\x38\x32\x20\x32\ \x35\x2e\x39\x33\x37\x20\x2d\x31\x31\x38\x2e\x37\x37\x34\x20\x38\ \x31\x2e\x32\x36\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\ \x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\ \x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x39\x31\x2e\x32\x38\x34\x20\x31\x32\x33\x2e\x35\x39\x43\x2d\x39\ \x31\x2e\x32\x38\x34\x20\x31\x32\x33\x2e\x35\x39\x20\x2d\x38\x39\ \x2e\x36\x34\x38\x20\x31\x32\x34\x2e\x35\x35\x20\x2d\x39\x30\x2e\ \x31\x31\x38\x20\x31\x32\x35\x2e\x32\x32\x37\x43\x2d\x39\x30\x2e\ \x35\x38\x39\x20\x31\x32\x35\x2e\x39\x30\x34\x20\x2d\x31\x33\x39\ \x2e\x37\x36\x33\x20\x31\x31\x33\x2e\x31\x30\x32\x20\x2d\x31\x34\ \x39\x2e\x32\x31\x38\x20\x31\x33\x31\x2e\x34\x35\x39\x43\x2d\x31\ \x34\x39\x2e\x32\x31\x38\x20\x31\x33\x31\x2e\x34\x35\x39\x20\x2d\ \x31\x34\x35\x2e\x35\x33\x39\x20\x31\x31\x32\x2e\x35\x37\x32\x20\ \x2d\x39\x31\x2e\x32\x38\x34\x20\x31\x32\x33\x2e\x35\x39\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\x34\x2e\x30\x39\x33\x20\ \x31\x33\x33\x2e\x38\x30\x31\x43\x2d\x39\x34\x2e\x30\x39\x33\x20\ \x31\x33\x33\x2e\x38\x30\x31\x20\x2d\x39\x32\x2e\x32\x33\x37\x20\ \x31\x33\x34\x2e\x31\x39\x37\x20\x2d\x39\x32\x2e\x34\x37\x31\x20\ \x31\x33\x34\x2e\x39\x38\x38\x43\x2d\x39\x32\x2e\x37\x30\x34\x20\ \x31\x33\x35\x2e\x37\x37\x39\x20\x2d\x31\x34\x33\x2e\x34\x30\x37\ \x20\x31\x33\x39\x2e\x31\x32\x31\x20\x2d\x31\x34\x36\x2e\x35\x39\ \x37\x20\x31\x35\x39\x2e\x35\x32\x32\x43\x2d\x31\x34\x36\x2e\x35\ \x39\x37\x20\x31\x35\x39\x2e\x35\x32\x32\x20\x2d\x31\x34\x39\x2e\ \x30\x35\x35\x20\x31\x34\x30\x2e\x34\x33\x37\x20\x2d\x39\x34\x2e\ \x30\x39\x33\x20\x31\x33\x33\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x39\x38\x2e\x33\x30\x34\x20\x31\x32\x38\ \x2e\x32\x37\x36\x43\x2d\x39\x38\x2e\x33\x30\x34\x20\x31\x32\x38\ \x2e\x32\x37\x36\x20\x2d\x39\x36\x2e\x35\x32\x36\x20\x31\x32\x38\ \x2e\x39\x33\x39\x20\x2d\x39\x36\x2e\x38\x37\x32\x20\x31\x32\x39\ \x2e\x36\x38\x37\x43\x2d\x39\x37\x2e\x32\x31\x38\x20\x31\x33\x30\ \x2e\x34\x33\x35\x20\x2d\x31\x34\x37\x2e\x38\x36\x36\x20\x31\x32\ \x36\x2e\x33\x34\x36\x20\x2d\x31\x35\x33\x2e\x39\x39\x38\x20\x31\ \x34\x36\x2e\x30\x36\x34\x43\x2d\x31\x35\x33\x2e\x39\x39\x38\x20\ \x31\x34\x36\x2e\x30\x36\x34\x20\x2d\x31\x35\x33\x2e\x36\x34\x36\ \x20\x31\x32\x36\x2e\x38\x32\x35\x20\x2d\x39\x38\x2e\x33\x30\x34\ \x20\x31\x32\x38\x2e\x32\x37\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\ \x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x31\x30\x39\x2e\x30\x30\x39\x20\x31\x31\x30\x2e\x30\ \x37\x32\x43\x2d\x31\x30\x39\x2e\x30\x30\x39\x20\x31\x31\x30\x2e\ \x30\x37\x32\x20\x2d\x31\x30\x37\x2e\x37\x30\x31\x20\x31\x31\x31\ \x2e\x34\x34\x36\x20\x2d\x31\x30\x38\x2e\x33\x34\x20\x31\x31\x31\ \x2e\x39\x36\x37\x43\x2d\x31\x30\x38\x2e\x39\x37\x39\x20\x31\x31\ \x32\x2e\x34\x38\x38\x20\x2d\x31\x35\x32\x2e\x37\x32\x32\x20\x38\ \x36\x2e\x36\x33\x34\x20\x2d\x31\x36\x36\x2e\x38\x36\x39\x20\x31\ \x30\x31\x2e\x36\x37\x36\x43\x2d\x31\x36\x36\x2e\x38\x36\x39\x20\ \x31\x30\x31\x2e\x36\x37\x36\x20\x2d\x31\x35\x38\x2e\x31\x32\x38\ \x20\x38\x34\x2e\x35\x33\x33\x20\x2d\x31\x30\x39\x2e\x30\x30\x39\ \x20\x31\x31\x30\x2e\x30\x37\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\ \x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x31\x31\x36\x2e\x35\x35\x34\x20\x31\x31\x34\x2e\x32\ \x36\x33\x43\x2d\x31\x31\x36\x2e\x35\x35\x34\x20\x31\x31\x34\x2e\ \x32\x36\x33\x20\x2d\x31\x31\x35\x2e\x30\x39\x38\x20\x31\x31\x35\ \x2e\x34\x38\x20\x2d\x31\x31\x35\x2e\x36\x37\x34\x20\x31\x31\x36\ \x2e\x30\x37\x31\x43\x2d\x31\x31\x36\x2e\x32\x35\x20\x31\x31\x36\ \x2e\x36\x36\x31\x20\x2d\x31\x36\x32\x2e\x36\x33\x38\x20\x39\x35\ \x2e\x39\x32\x32\x20\x2d\x31\x37\x34\x2e\x39\x39\x32\x20\x31\x31\ \x32\x2e\x34\x36\x39\x43\x2d\x31\x37\x34\x2e\x39\x39\x32\x20\x31\ \x31\x32\x2e\x34\x36\x39\x20\x2d\x31\x36\x38\x2e\x32\x34\x37\x20\ \x39\x34\x2e\x34\x34\x37\x20\x2d\x31\x31\x36\x2e\x35\x35\x34\x20\ \x31\x31\x34\x2e\x32\x36\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x31\x39\x2e\x31\x35\x34\x20\x31\x31\x38\x2e\x33\x33\ \x35\x43\x2d\x31\x31\x39\x2e\x31\x35\x34\x20\x31\x31\x38\x2e\x33\ \x33\x35\x20\x2d\x31\x31\x37\x2e\x35\x34\x36\x20\x31\x31\x39\x2e\ \x33\x34\x33\x20\x2d\x31\x31\x38\x2e\x30\x33\x36\x20\x31\x32\x30\ \x2e\x30\x30\x36\x43\x2d\x31\x31\x38\x2e\x35\x32\x36\x20\x31\x32\ \x30\x2e\x36\x36\x39\x20\x2d\x31\x36\x37\x2e\x33\x30\x38\x20\x31\ \x30\x36\x2e\x34\x34\x36\x20\x2d\x31\x37\x37\x2e\x32\x39\x31\x20\ \x31\x32\x34\x2e\x35\x32\x32\x43\x2d\x31\x37\x37\x2e\x32\x39\x31\ \x20\x31\x32\x34\x2e\x35\x32\x32\x20\x2d\x31\x37\x33\x2e\x30\x36\ \x36\x20\x31\x30\x35\x2e\x37\x34\x39\x20\x2d\x31\x31\x39\x2e\x31\ \x35\x34\x20\x31\x31\x38\x2e\x33\x33\x35\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x31\x30\x38\x2e\x34\x32\x20\x31\x31\x38\x2e\ \x39\x34\x39\x43\x2d\x31\x30\x38\x2e\x34\x32\x20\x31\x31\x38\x2e\ \x39\x34\x39\x20\x2d\x31\x30\x37\x2e\x32\x39\x38\x20\x31\x32\x30\ \x2e\x34\x38\x20\x2d\x31\x30\x37\x2e\x39\x39\x39\x20\x31\x32\x30\ \x2e\x39\x31\x35\x43\x2d\x31\x30\x38\x2e\x37\x20\x31\x32\x31\x2e\ \x33\x35\x20\x2d\x31\x34\x38\x2e\x37\x36\x39\x20\x39\x30\x2e\x31\ \x30\x32\x20\x2d\x31\x36\x34\x2e\x37\x32\x37\x20\x31\x30\x33\x2e\ \x32\x30\x37\x43\x2d\x31\x36\x34\x2e\x37\x32\x37\x20\x31\x30\x33\ \x2e\x32\x30\x37\x20\x2d\x31\x35\x33\x2e\x38\x36\x32\x20\x38\x37\ \x2e\x33\x32\x36\x20\x2d\x31\x30\x38\x2e\x34\x32\x20\x31\x31\x38\ \x2e\x39\x34\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\ \x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\ \x32\x38\x2e\x32\x20\x39\x30\x43\x2d\x31\x32\x38\x2e\x32\x20\x39\ \x30\x20\x2d\x31\x32\x37\x2e\x36\x20\x39\x31\x2e\x38\x20\x2d\x31\ \x32\x38\x2e\x34\x20\x39\x32\x43\x2d\x31\x32\x39\x2e\x32\x20\x39\ \x32\x2e\x32\x20\x2d\x31\x35\x37\x2e\x38\x20\x35\x30\x2e\x32\x20\ \x2d\x31\x37\x37\x2e\x30\x30\x31\x20\x35\x37\x2e\x38\x43\x2d\x31\ \x37\x37\x2e\x30\x30\x31\x20\x35\x37\x2e\x38\x20\x2d\x31\x36\x31\ \x2e\x38\x20\x34\x36\x20\x2d\x31\x32\x38\x2e\x32\x20\x39\x30\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x37\x2e\x35\x30\ \x35\x20\x39\x36\x2e\x39\x37\x39\x43\x2d\x31\x32\x37\x2e\x35\x30\ \x35\x20\x39\x36\x2e\x39\x37\x39\x20\x2d\x31\x32\x36\x2e\x35\x33\ \x20\x39\x38\x2e\x36\x30\x38\x20\x2d\x31\x32\x37\x2e\x32\x36\x39\ \x20\x39\x38\x2e\x39\x37\x35\x43\x2d\x31\x32\x38\x2e\x30\x30\x37\ \x20\x39\x39\x2e\x33\x34\x33\x20\x2d\x31\x36\x34\x2e\x39\x39\x32\ \x20\x36\x34\x2e\x34\x39\x39\x20\x2d\x31\x38\x32\x2e\x31\x30\x31\ \x20\x37\x36\x2e\x30\x36\x31\x43\x2d\x31\x38\x32\x2e\x31\x30\x31\ \x20\x37\x36\x2e\x30\x36\x31\x20\x2d\x31\x36\x39\x2e\x38\x30\x34\ \x20\x36\x31\x2e\x32\x36\x31\x20\x2d\x31\x32\x37\x2e\x35\x30\x35\ \x20\x39\x36\x2e\x39\x37\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x32\x37\x2e\x36\x32\x20\x31\x30\x31\x2e\x33\x34\x39\ \x43\x2d\x31\x32\x37\x2e\x36\x32\x20\x31\x30\x31\x2e\x33\x34\x39\ \x20\x2d\x31\x32\x36\x2e\x34\x39\x38\x20\x31\x30\x32\x2e\x38\x38\ \x20\x2d\x31\x32\x37\x2e\x31\x39\x39\x20\x31\x30\x33\x2e\x33\x31\ \x35\x43\x2d\x31\x32\x37\x2e\x39\x20\x31\x30\x33\x2e\x37\x34\x39\ \x20\x2d\x31\x36\x37\x2e\x39\x36\x39\x20\x37\x32\x2e\x35\x30\x32\ \x20\x2d\x31\x38\x33\x2e\x39\x32\x37\x20\x38\x35\x2e\x36\x30\x37\ \x43\x2d\x31\x38\x33\x2e\x39\x32\x37\x20\x38\x35\x2e\x36\x30\x37\ \x20\x2d\x31\x37\x33\x2e\x30\x36\x32\x20\x36\x39\x2e\x37\x32\x36\ \x20\x2d\x31\x32\x37\x2e\x36\x32\x20\x31\x30\x31\x2e\x33\x34\x39\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x39\x2e\ \x38\x33\x20\x31\x30\x33\x2e\x30\x36\x35\x43\x2d\x31\x32\x39\x2e\ \x33\x32\x37\x20\x31\x30\x39\x2e\x31\x31\x33\x20\x2d\x31\x32\x38\ \x2e\x33\x33\x39\x20\x31\x31\x35\x2e\x36\x38\x32\x20\x2d\x31\x32\ \x36\x2e\x36\x20\x31\x31\x38\x2e\x38\x30\x31\x43\x2d\x31\x32\x36\ \x2e\x36\x20\x31\x31\x38\x2e\x38\x30\x31\x20\x2d\x31\x33\x30\x2e\ \x32\x20\x31\x33\x31\x2e\x32\x30\x31\x20\x2d\x31\x32\x31\x2e\x34\ \x20\x31\x34\x34\x2e\x34\x30\x31\x43\x2d\x31\x32\x31\x2e\x34\x20\ \x31\x34\x34\x2e\x34\x30\x31\x20\x2d\x31\x32\x31\x2e\x38\x20\x31\ \x35\x31\x2e\x36\x30\x31\x20\x2d\x31\x32\x30\x2e\x32\x20\x31\x35\ \x34\x2e\x38\x30\x31\x43\x2d\x31\x32\x30\x2e\x32\x20\x31\x35\x34\ \x2e\x38\x30\x31\x20\x2d\x31\x31\x36\x2e\x32\x20\x31\x36\x33\x2e\ \x32\x30\x31\x20\x2d\x31\x31\x31\x2e\x34\x20\x31\x36\x34\x2e\x30\ \x30\x31\x43\x2d\x31\x30\x37\x2e\x35\x31\x36\x20\x31\x36\x34\x2e\ \x36\x34\x38\x20\x2d\x39\x38\x2e\x37\x39\x33\x20\x31\x36\x37\x2e\ \x37\x31\x37\x20\x2d\x38\x38\x2e\x39\x33\x32\x20\x31\x36\x39\x2e\ \x31\x32\x31\x43\x2d\x38\x38\x2e\x39\x33\x32\x20\x31\x36\x39\x2e\ \x31\x32\x31\x20\x2d\x37\x31\x2e\x38\x20\x31\x38\x33\x2e\x32\x30\ \x31\x20\x2d\x37\x35\x20\x31\x39\x36\x2e\x30\x30\x31\x43\x2d\x37\ \x35\x20\x31\x39\x36\x2e\x30\x30\x31\x20\x2d\x37\x35\x2e\x34\x20\ \x32\x31\x32\x2e\x34\x30\x31\x20\x2d\x37\x39\x20\x32\x31\x34\x2e\ \x30\x30\x31\x43\x2d\x37\x39\x20\x32\x31\x34\x2e\x30\x30\x31\x20\ \x2d\x36\x37\x2e\x34\x20\x32\x30\x32\x2e\x38\x30\x31\x20\x2d\x37\ \x37\x20\x32\x31\x39\x2e\x36\x30\x31\x4c\x2d\x38\x31\x2e\x34\x20\ \x32\x33\x38\x2e\x34\x30\x31\x43\x2d\x38\x31\x2e\x34\x20\x32\x33\ \x38\x2e\x34\x30\x31\x20\x2d\x35\x35\x2e\x38\x20\x32\x31\x36\x2e\ \x38\x30\x31\x20\x2d\x37\x31\x2e\x34\x20\x32\x33\x35\x2e\x32\x30\ \x31\x4c\x2d\x38\x31\x2e\x34\x20\x32\x36\x31\x2e\x32\x30\x31\x43\ \x2d\x38\x31\x2e\x34\x20\x32\x36\x31\x2e\x32\x30\x31\x20\x2d\x36\ \x31\x2e\x38\x20\x32\x34\x32\x2e\x38\x30\x31\x20\x2d\x36\x39\x20\ \x32\x35\x31\x2e\x32\x30\x31\x4c\x2d\x37\x32\x2e\x32\x20\x32\x36\ \x30\x2e\x30\x30\x31\x43\x2d\x37\x32\x2e\x32\x20\x32\x36\x30\x2e\ \x30\x30\x31\x20\x2d\x32\x39\x20\x32\x33\x32\x2e\x38\x30\x31\x20\ \x2d\x35\x39\x2e\x38\x20\x32\x36\x32\x2e\x34\x30\x31\x43\x2d\x35\ \x39\x2e\x38\x20\x32\x36\x32\x2e\x34\x30\x31\x20\x2d\x35\x31\x2e\ \x38\x20\x32\x35\x38\x2e\x38\x30\x31\x20\x2d\x34\x37\x2e\x34\x20\ \x32\x36\x31\x2e\x36\x30\x31\x43\x2d\x34\x37\x2e\x34\x20\x32\x36\ \x31\x2e\x36\x30\x31\x20\x2d\x34\x30\x2e\x36\x20\x32\x36\x30\x2e\ \x34\x30\x31\x20\x2d\x34\x31\x2e\x34\x20\x32\x36\x32\x2e\x30\x30\ \x31\x43\x2d\x34\x31\x2e\x34\x20\x32\x36\x32\x2e\x30\x30\x31\x20\ \x2d\x36\x32\x2e\x32\x20\x32\x37\x32\x2e\x34\x30\x31\x20\x2d\x36\ \x35\x2e\x38\x20\x32\x39\x30\x2e\x38\x30\x31\x43\x2d\x36\x35\x2e\ \x38\x20\x32\x39\x30\x2e\x38\x30\x31\x20\x2d\x35\x37\x2e\x34\x20\ \x32\x38\x30\x2e\x38\x30\x31\x20\x2d\x36\x30\x2e\x36\x20\x32\x39\ \x31\x2e\x36\x30\x31\x4c\x2d\x36\x30\x2e\x32\x20\x33\x30\x33\x2e\ \x32\x30\x31\x43\x2d\x36\x30\x2e\x32\x20\x33\x30\x33\x2e\x32\x30\ \x31\x20\x2d\x35\x36\x2e\x32\x20\x32\x38\x31\x2e\x36\x30\x31\x20\ \x2d\x35\x36\x2e\x36\x20\x33\x31\x39\x2e\x32\x30\x31\x43\x2d\x35\ \x36\x2e\x36\x20\x33\x31\x39\x2e\x32\x30\x31\x20\x2d\x33\x37\x2e\ \x34\x20\x33\x30\x31\x2e\x32\x30\x31\x20\x2d\x34\x39\x20\x33\x32\ \x32\x2e\x30\x30\x31\x4c\x2d\x34\x39\x20\x33\x33\x38\x2e\x38\x30\ \x31\x43\x2d\x34\x39\x20\x33\x33\x38\x2e\x38\x30\x31\x20\x2d\x33\ \x33\x2e\x38\x20\x33\x32\x32\x2e\x34\x30\x31\x20\x2d\x34\x30\x2e\ \x32\x20\x33\x33\x35\x2e\x32\x30\x31\x43\x2d\x34\x30\x2e\x32\x20\ \x33\x33\x35\x2e\x32\x30\x31\x20\x2d\x33\x30\x2e\x32\x20\x33\x32\ \x36\x2e\x34\x30\x31\x20\x2d\x33\x34\x2e\x32\x20\x33\x34\x31\x2e\ \x36\x30\x31\x43\x2d\x33\x34\x2e\x32\x20\x33\x34\x31\x2e\x36\x30\ \x31\x20\x2d\x33\x35\x20\x33\x35\x32\x2e\x30\x30\x31\x20\x2d\x33\ \x30\x2e\x36\x20\x33\x34\x30\x2e\x38\x30\x31\x43\x2d\x33\x30\x2e\ \x36\x20\x33\x34\x30\x2e\x38\x30\x31\x20\x2d\x31\x34\x2e\x36\x20\ \x33\x31\x30\x2e\x32\x30\x31\x20\x2d\x32\x30\x2e\x36\x20\x33\x33\ \x36\x2e\x34\x30\x31\x43\x2d\x32\x30\x2e\x36\x20\x33\x33\x36\x2e\ \x34\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\x33\x35\x35\x2e\x36\x30\ \x31\x20\x2d\x31\x36\x2e\x36\x20\x33\x34\x30\x2e\x38\x30\x31\x43\ \x2d\x31\x36\x2e\x36\x20\x33\x34\x30\x2e\x38\x30\x31\x20\x2d\x31\ \x36\x2e\x32\x20\x33\x35\x31\x2e\x32\x30\x31\x20\x2d\x37\x20\x33\ \x35\x38\x2e\x34\x30\x31\x43\x2d\x37\x20\x33\x35\x38\x2e\x34\x30\ \x31\x20\x2d\x38\x2e\x32\x20\x33\x30\x37\x2e\x36\x30\x31\x20\x34\ \x2e\x36\x20\x33\x34\x33\x2e\x36\x30\x31\x4c\x38\x2e\x36\x20\x33\ \x36\x30\x2e\x30\x30\x31\x43\x38\x2e\x36\x20\x33\x36\x30\x2e\x30\ \x30\x31\x20\x31\x31\x2e\x34\x20\x33\x35\x30\x2e\x38\x30\x31\x20\ \x31\x31\x20\x33\x34\x35\x2e\x36\x30\x31\x43\x31\x31\x20\x33\x34\ \x35\x2e\x36\x30\x31\x20\x32\x35\x2e\x38\x20\x33\x32\x39\x2e\x32\ \x30\x31\x20\x31\x39\x20\x33\x35\x33\x2e\x36\x30\x31\x43\x31\x39\ \x20\x33\x35\x33\x2e\x36\x30\x31\x20\x33\x34\x2e\x32\x20\x33\x33\ \x30\x2e\x38\x30\x31\x20\x33\x31\x20\x33\x34\x34\x2e\x30\x30\x31\ \x43\x33\x31\x20\x33\x34\x34\x2e\x30\x30\x31\x20\x32\x33\x2e\x34\ \x20\x33\x36\x30\x2e\x30\x30\x31\x20\x32\x35\x20\x33\x36\x34\x2e\ \x38\x30\x31\x43\x32\x35\x20\x33\x36\x34\x2e\x38\x30\x31\x20\x34\ \x31\x2e\x38\x20\x33\x33\x30\x2e\x30\x30\x31\x20\x34\x33\x20\x33\ \x32\x38\x2e\x34\x30\x31\x43\x34\x33\x20\x33\x32\x38\x2e\x34\x30\ \x31\x20\x34\x31\x20\x33\x37\x30\x2e\x38\x30\x32\x20\x35\x31\x2e\ \x38\x20\x33\x33\x34\x2e\x38\x30\x31\x43\x35\x31\x2e\x38\x20\x33\ \x33\x34\x2e\x38\x30\x31\x20\x35\x37\x2e\x34\x20\x33\x34\x36\x2e\ \x38\x30\x31\x20\x35\x34\x2e\x36\x20\x33\x35\x31\x2e\x32\x30\x31\ \x43\x35\x34\x2e\x36\x20\x33\x35\x31\x2e\x32\x30\x31\x20\x36\x32\ \x2e\x36\x20\x33\x34\x33\x2e\x32\x30\x31\x20\x36\x31\x2e\x38\x20\ \x33\x34\x30\x2e\x30\x30\x31\x43\x36\x31\x2e\x38\x20\x33\x34\x30\ \x2e\x30\x30\x31\x20\x36\x36\x2e\x34\x20\x33\x33\x31\x2e\x38\x30\ \x31\x20\x36\x39\x2e\x32\x20\x33\x34\x35\x2e\x34\x30\x31\x43\x36\ \x39\x2e\x32\x20\x33\x34\x35\x2e\x34\x30\x31\x20\x37\x31\x20\x33\ \x35\x34\x2e\x38\x30\x31\x20\x37\x32\x2e\x36\x20\x33\x35\x31\x2e\ \x36\x30\x31\x43\x37\x32\x2e\x36\x20\x33\x35\x31\x2e\x36\x30\x31\ \x20\x37\x36\x2e\x36\x20\x33\x37\x35\x2e\x36\x30\x32\x20\x37\x37\ \x2e\x38\x20\x33\x35\x32\x2e\x38\x30\x31\x43\x37\x37\x2e\x38\x20\ \x33\x35\x32\x2e\x38\x30\x31\x20\x37\x39\x2e\x34\x20\x33\x33\x39\ \x2e\x32\x30\x31\x20\x37\x32\x2e\x32\x20\x33\x32\x37\x2e\x36\x30\ \x31\x43\x37\x32\x2e\x32\x20\x33\x32\x37\x2e\x36\x30\x31\x20\x37\ \x33\x20\x33\x32\x34\x2e\x34\x30\x31\x20\x37\x30\x2e\x32\x20\x33\ \x32\x30\x2e\x34\x30\x31\x43\x37\x30\x2e\x32\x20\x33\x32\x30\x2e\ \x34\x30\x31\x20\x38\x33\x2e\x38\x20\x33\x34\x32\x2e\x30\x30\x31\ \x20\x37\x36\x2e\x36\x20\x33\x31\x33\x2e\x32\x30\x31\x43\x37\x36\ \x2e\x36\x20\x33\x31\x33\x2e\x32\x30\x31\x20\x38\x37\x2e\x38\x30\ \x31\x20\x33\x32\x31\x2e\x32\x30\x31\x20\x38\x39\x2e\x30\x30\x31\ \x20\x33\x32\x31\x2e\x32\x30\x31\x43\x38\x39\x2e\x30\x30\x31\x20\ \x33\x32\x31\x2e\x32\x30\x31\x20\x37\x35\x2e\x34\x20\x32\x39\x38\ \x2e\x30\x30\x31\x20\x38\x34\x2e\x32\x20\x33\x30\x32\x2e\x38\x30\ \x31\x43\x38\x34\x2e\x32\x20\x33\x30\x32\x2e\x38\x30\x31\x20\x37\ \x39\x20\x32\x39\x32\x2e\x34\x30\x31\x20\x39\x37\x2e\x30\x30\x31\ \x20\x33\x30\x34\x2e\x34\x30\x31\x43\x39\x37\x2e\x30\x30\x31\x20\ \x33\x30\x34\x2e\x34\x30\x31\x20\x38\x31\x20\x32\x38\x38\x2e\x34\ \x30\x31\x20\x39\x38\x2e\x36\x30\x31\x20\x32\x39\x38\x2e\x30\x30\ \x31\x43\x39\x38\x2e\x36\x30\x31\x20\x32\x39\x38\x2e\x30\x30\x31\ \x20\x31\x30\x36\x2e\x36\x30\x31\x20\x33\x30\x34\x2e\x34\x30\x31\ \x20\x39\x39\x2e\x30\x30\x31\x20\x32\x39\x34\x2e\x34\x30\x31\x43\ \x39\x39\x2e\x30\x30\x31\x20\x32\x39\x34\x2e\x34\x30\x31\x20\x38\ \x34\x2e\x36\x20\x32\x37\x38\x2e\x34\x30\x31\x20\x31\x30\x36\x2e\ \x36\x30\x31\x20\x32\x39\x36\x2e\x34\x30\x31\x43\x31\x30\x36\x2e\ \x36\x30\x31\x20\x32\x39\x36\x2e\x34\x30\x31\x20\x31\x31\x38\x2e\ \x32\x30\x31\x20\x33\x31\x32\x2e\x38\x30\x31\x20\x31\x31\x39\x2e\ \x30\x30\x31\x20\x33\x31\x35\x2e\x36\x30\x31\x43\x31\x31\x39\x2e\ \x30\x30\x31\x20\x33\x31\x35\x2e\x36\x30\x31\x20\x31\x30\x39\x2e\ \x30\x30\x31\x20\x32\x38\x36\x2e\x34\x30\x31\x20\x31\x30\x34\x2e\ \x36\x30\x31\x20\x32\x38\x33\x2e\x36\x30\x31\x43\x31\x30\x34\x2e\ \x36\x30\x31\x20\x32\x38\x33\x2e\x36\x30\x31\x20\x31\x31\x33\x2e\ \x30\x30\x31\x20\x32\x34\x37\x2e\x32\x30\x31\x20\x31\x35\x34\x2e\ \x32\x30\x31\x20\x32\x36\x32\x2e\x38\x30\x31\x43\x31\x35\x34\x2e\ \x32\x30\x31\x20\x32\x36\x32\x2e\x38\x30\x31\x20\x31\x36\x31\x2e\ \x30\x30\x31\x20\x32\x38\x30\x2e\x30\x30\x31\x20\x31\x36\x35\x2e\ \x34\x30\x31\x20\x32\x36\x31\x2e\x36\x30\x31\x43\x31\x36\x35\x2e\ \x34\x30\x31\x20\x32\x36\x31\x2e\x36\x30\x31\x20\x31\x37\x38\x2e\ \x32\x30\x31\x20\x32\x35\x35\x2e\x32\x30\x31\x20\x31\x38\x39\x2e\ \x34\x30\x31\x20\x32\x38\x32\x2e\x38\x30\x31\x43\x31\x38\x39\x2e\ \x34\x30\x31\x20\x32\x38\x32\x2e\x38\x30\x31\x20\x31\x39\x33\x2e\ \x34\x30\x31\x20\x32\x36\x39\x2e\x32\x30\x31\x20\x31\x39\x32\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x43\x31\x39\x32\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x20\x31\x39\x39\x2e\ \x34\x30\x31\x20\x32\x36\x37\x2e\x36\x30\x31\x20\x31\x39\x38\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x43\x31\x39\x38\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x20\x32\x31\x31\x2e\ \x38\x30\x31\x20\x32\x37\x30\x2e\x38\x30\x31\x20\x32\x31\x33\x2e\ \x30\x30\x31\x20\x32\x37\x30\x2e\x30\x30\x31\x43\x32\x31\x33\x2e\ \x30\x30\x31\x20\x32\x37\x30\x2e\x30\x30\x31\x20\x32\x31\x39\x2e\ \x38\x30\x31\x20\x32\x37\x36\x2e\x38\x30\x31\x20\x32\x32\x30\x2e\ \x32\x30\x31\x20\x32\x37\x33\x2e\x32\x30\x31\x43\x32\x32\x30\x2e\ \x32\x30\x31\x20\x32\x37\x33\x2e\x32\x30\x31\x20\x32\x32\x39\x2e\ \x34\x30\x31\x20\x32\x37\x36\x2e\x30\x30\x31\x20\x32\x32\x37\x2e\ \x34\x30\x31\x20\x32\x37\x32\x2e\x34\x30\x31\x43\x32\x32\x37\x2e\ \x34\x30\x31\x20\x32\x37\x32\x2e\x34\x30\x31\x20\x32\x33\x36\x2e\ \x32\x30\x31\x20\x32\x38\x38\x2e\x30\x30\x31\x20\x32\x33\x36\x2e\ \x36\x30\x31\x20\x32\x39\x31\x2e\x36\x30\x31\x4c\x32\x33\x39\x2e\ \x30\x30\x31\x20\x32\x37\x37\x2e\x36\x30\x31\x4c\x32\x34\x31\x2e\ \x30\x30\x31\x20\x32\x38\x30\x2e\x34\x30\x31\x43\x32\x34\x31\x2e\ \x30\x30\x31\x20\x32\x38\x30\x2e\x34\x30\x31\x20\x32\x34\x32\x2e\ \x36\x30\x31\x20\x32\x37\x32\x2e\x38\x30\x31\x20\x32\x34\x31\x2e\ \x38\x30\x31\x20\x32\x37\x31\x2e\x36\x30\x31\x43\x32\x34\x31\x2e\ \x30\x30\x31\x20\x32\x37\x30\x2e\x34\x30\x31\x20\x32\x36\x31\x2e\ \x38\x30\x31\x20\x32\x37\x38\x2e\x34\x30\x31\x20\x32\x36\x36\x2e\ \x36\x30\x31\x20\x32\x39\x39\x2e\x32\x30\x31\x4c\x32\x36\x38\x2e\ \x36\x30\x31\x20\x33\x30\x37\x2e\x36\x30\x31\x43\x32\x36\x38\x2e\ \x36\x30\x31\x20\x33\x30\x37\x2e\x36\x30\x31\x20\x32\x37\x34\x2e\ \x36\x30\x31\x20\x32\x39\x32\x2e\x38\x30\x31\x20\x32\x37\x33\x2e\ \x30\x30\x31\x20\x32\x38\x38\x2e\x38\x30\x31\x43\x32\x37\x33\x2e\ \x30\x30\x31\x20\x32\x38\x38\x2e\x38\x30\x31\x20\x32\x37\x38\x2e\ \x32\x30\x31\x20\x32\x38\x39\x2e\x36\x30\x31\x20\x32\x37\x38\x2e\ \x36\x30\x31\x20\x32\x39\x34\x2e\x30\x30\x31\x43\x32\x37\x38\x2e\ \x36\x30\x31\x20\x32\x39\x34\x2e\x30\x30\x31\x20\x32\x38\x32\x2e\ \x36\x30\x31\x20\x32\x37\x30\x2e\x38\x30\x31\x20\x32\x37\x37\x2e\ \x38\x30\x31\x20\x32\x36\x34\x2e\x38\x30\x31\x43\x32\x37\x37\x2e\ \x38\x30\x31\x20\x32\x36\x34\x2e\x38\x30\x31\x20\x32\x38\x32\x2e\ \x32\x30\x31\x20\x32\x36\x34\x2e\x30\x30\x31\x20\x32\x38\x33\x2e\ \x34\x30\x31\x20\x32\x36\x37\x2e\x36\x30\x31\x4c\x32\x38\x33\x2e\ \x34\x30\x31\x20\x32\x36\x30\x2e\x34\x30\x31\x43\x32\x38\x33\x2e\ \x34\x30\x31\x20\x32\x36\x30\x2e\x34\x30\x31\x20\x32\x39\x30\x2e\ \x36\x30\x31\x20\x32\x36\x31\x2e\x32\x30\x31\x20\x32\x39\x30\x2e\ \x36\x30\x31\x20\x32\x35\x38\x2e\x38\x30\x31\x43\x32\x39\x30\x2e\ \x36\x30\x31\x20\x32\x35\x38\x2e\x38\x30\x31\x20\x32\x39\x35\x2e\ \x30\x30\x31\x20\x32\x35\x34\x2e\x38\x30\x31\x20\x32\x39\x37\x2e\ \x30\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\x43\x32\x39\x37\x2e\ \x30\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\x20\x32\x38\x34\x2e\ \x36\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x20\x33\x30\x33\x2e\ \x30\x30\x31\x20\x32\x34\x33\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x30\x30\x31\x20\x32\x34\x33\x2e\x36\x30\x31\x20\x33\x31\x30\x2e\ \x32\x30\x31\x20\x32\x35\x34\x2e\x34\x30\x31\x20\x33\x30\x36\x2e\ \x36\x30\x31\x20\x32\x33\x35\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x30\x30\x31\x20\x32\x31\x36\x2e\x38\x30\x31\x20\x32\x39\x39\x2e\ \x30\x30\x31\x20\x32\x31\x35\x2e\x32\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x31\x34\x2e\x38\x30\x31\x43\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x31\x34\x2e\x38\x30\x31\x20\x33\x30\x34\x2e\ \x36\x30\x31\x20\x32\x31\x31\x2e\x32\x30\x31\x20\x33\x30\x32\x2e\ \x36\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x43\x33\x30\x30\x2e\ \x36\x30\x31\x20\x32\x30\x38\x2e\x30\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x20\x33\x30\x38\x2e\ \x36\x30\x31\x20\x32\x31\x33\x2e\x36\x30\x31\x20\x33\x30\x33\x2e\ \x34\x30\x31\x20\x31\x39\x31\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x34\x30\x31\x20\x31\x39\x31\x2e\x36\x30\x31\x20\x33\x30\x39\x2e\ \x38\x30\x31\x20\x31\x39\x33\x2e\x32\x30\x31\x20\x32\x39\x37\x2e\ \x38\x30\x31\x20\x31\x36\x34\x2e\x30\x30\x31\x43\x32\x39\x37\x2e\ \x38\x30\x31\x20\x31\x36\x34\x2e\x30\x30\x31\x20\x33\x30\x30\x2e\ \x36\x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\x20\x32\x39\x36\x2e\ \x36\x30\x31\x20\x31\x35\x33\x2e\x32\x30\x31\x43\x32\x39\x36\x2e\ \x36\x30\x31\x20\x31\x35\x33\x2e\x32\x30\x31\x20\x33\x30\x34\x2e\ \x36\x30\x31\x20\x31\x35\x37\x2e\x36\x30\x31\x20\x33\x30\x37\x2e\ \x34\x30\x31\x20\x31\x35\x36\x2e\x30\x30\x31\x43\x33\x30\x37\x2e\ \x34\x30\x31\x20\x31\x35\x36\x2e\x30\x30\x31\x20\x33\x30\x37\x2e\ \x30\x30\x31\x20\x31\x35\x34\x2e\x34\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x31\x35\x30\x2e\x34\x30\x31\x43\x33\x30\x33\x2e\ \x38\x30\x31\x20\x31\x35\x30\x2e\x34\x30\x31\x20\x32\x38\x32\x2e\ \x32\x30\x31\x20\x39\x35\x2e\x36\x20\x33\x30\x32\x2e\x36\x30\x31\ \x20\x31\x31\x37\x2e\x36\x30\x31\x43\x33\x30\x32\x2e\x36\x30\x31\ \x20\x31\x31\x37\x2e\x36\x30\x31\x20\x33\x31\x34\x2e\x34\x35\x31\ \x20\x31\x33\x31\x2e\x31\x35\x31\x20\x33\x30\x38\x2e\x30\x35\x31\ \x20\x31\x30\x38\x2e\x33\x35\x31\x43\x33\x30\x38\x2e\x30\x35\x31\ \x20\x31\x30\x38\x2e\x33\x35\x31\x20\x32\x39\x38\x2e\x39\x34\x20\ \x38\x34\x2e\x33\x34\x31\x20\x32\x39\x39\x2e\x37\x31\x37\x20\x38\ \x30\x2e\x30\x34\x35\x4c\x2d\x31\x32\x39\x2e\x38\x33\x20\x31\x30\ \x33\x2e\x30\x36\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\ \x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x32\x39\x39\x2e\x37\x31\x37\x20\x38\x30\x2e\x32\x34\x35\x43\x33\ \x30\x30\x2e\x33\x34\x35\x20\x38\x30\x2e\x34\x32\x36\x20\x33\x30\ \x32\x2e\x35\x35\x31\x20\x38\x31\x2e\x35\x35\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x38\x33\x2e\x32\x43\x33\x30\x33\x2e\x38\x30\x31\ \x20\x38\x33\x2e\x32\x20\x33\x31\x30\x2e\x36\x30\x31\x20\x39\x34\ \x20\x33\x30\x35\x2e\x34\x30\x31\x20\x37\x35\x2e\x36\x43\x33\x30\ \x35\x2e\x34\x30\x31\x20\x37\x35\x2e\x36\x20\x32\x39\x36\x2e\x32\ \x30\x31\x20\x34\x36\x2e\x38\x20\x33\x30\x35\x2e\x30\x30\x31\x20\ \x35\x38\x43\x33\x30\x35\x2e\x30\x30\x31\x20\x35\x38\x20\x33\x31\ \x31\x2e\x30\x30\x31\x20\x36\x35\x2e\x32\x20\x33\x30\x37\x2e\x38\ \x30\x31\x20\x35\x31\x2e\x36\x43\x33\x30\x33\x2e\x39\x33\x36\x20\ \x33\x35\x2e\x31\x37\x33\x20\x33\x30\x31\x2e\x34\x30\x31\x20\x32\ \x38\x2e\x38\x20\x33\x30\x31\x2e\x34\x30\x31\x20\x32\x38\x2e\x38\ \x43\x33\x30\x31\x2e\x34\x30\x31\x20\x32\x38\x2e\x38\x20\x33\x31\ \x33\x2e\x30\x30\x31\x20\x33\x33\x2e\x36\x20\x32\x38\x36\x2e\x32\ \x30\x31\x20\x2d\x36\x4c\x32\x39\x35\x2e\x30\x30\x31\x20\x2d\x32\ \x2e\x34\x43\x32\x39\x35\x2e\x30\x30\x31\x20\x2d\x32\x2e\x34\x20\ \x32\x37\x35\x2e\x34\x30\x31\x20\x2d\x34\x32\x20\x32\x35\x33\x2e\ \x38\x30\x31\x20\x2d\x34\x37\x2e\x32\x4c\x32\x34\x35\x2e\x38\x30\ \x31\x20\x2d\x35\x33\x2e\x32\x43\x32\x34\x35\x2e\x38\x30\x31\x20\ \x2d\x35\x33\x2e\x32\x20\x32\x38\x34\x2e\x32\x30\x31\x20\x2d\x39\ \x31\x2e\x32\x20\x32\x37\x31\x2e\x34\x30\x31\x20\x2d\x31\x32\x38\ \x43\x32\x37\x31\x2e\x34\x30\x31\x20\x2d\x31\x32\x38\x20\x32\x36\ \x34\x2e\x36\x30\x31\x20\x2d\x31\x33\x33\x2e\x32\x20\x32\x35\x35\ \x2e\x30\x30\x31\x20\x2d\x31\x32\x34\x43\x32\x35\x35\x2e\x30\x30\ \x31\x20\x2d\x31\x32\x34\x20\x32\x34\x38\x2e\x36\x30\x31\x20\x2d\ \x31\x31\x39\x2e\x32\x20\x32\x34\x32\x2e\x36\x30\x31\x20\x2d\x31\ \x32\x30\x2e\x38\x43\x32\x34\x32\x2e\x36\x30\x31\x20\x2d\x31\x32\ \x30\x2e\x38\x20\x32\x31\x31\x2e\x38\x30\x31\x20\x2d\x31\x31\x39\ \x2e\x36\x20\x32\x30\x39\x2e\x38\x30\x31\x20\x2d\x31\x31\x39\x2e\ \x36\x43\x32\x30\x37\x2e\x38\x30\x31\x20\x2d\x31\x31\x39\x2e\x36\ \x20\x31\x37\x33\x2e\x30\x30\x31\x20\x2d\x31\x35\x36\x2e\x38\x20\ \x31\x30\x37\x2e\x34\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x43\x31\ \x30\x37\x2e\x34\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x20\x31\x30\ \x32\x2e\x32\x30\x31\x20\x2d\x31\x33\x37\x2e\x32\x20\x39\x37\x2e\ \x38\x30\x31\x20\x2d\x31\x33\x38\x2e\x34\x43\x39\x37\x2e\x38\x30\ \x31\x20\x2d\x31\x33\x38\x2e\x34\x20\x37\x39\x2e\x34\x20\x2d\x31\ \x35\x34\x2e\x34\x20\x33\x30\x2e\x36\x20\x2d\x31\x33\x31\x2e\x36\ \x43\x33\x30\x2e\x36\x20\x2d\x31\x33\x31\x2e\x36\x20\x32\x30\x2e\ \x36\x20\x2d\x31\x32\x39\x2e\x36\x20\x31\x39\x20\x2d\x31\x32\x39\ \x2e\x36\x43\x31\x37\x2e\x34\x20\x2d\x31\x32\x39\x2e\x36\x20\x31\ \x34\x2e\x36\x20\x2d\x31\x32\x39\x2e\x36\x20\x36\x2e\x36\x20\x2d\ \x31\x32\x33\x2e\x32\x43\x2d\x31\x2e\x34\x20\x2d\x31\x31\x36\x2e\ \x38\x20\x2d\x31\x2e\x38\x20\x2d\x31\x31\x36\x20\x2d\x33\x2e\x38\ \x20\x2d\x31\x31\x34\x2e\x34\x43\x2d\x33\x2e\x38\x20\x2d\x31\x31\ \x34\x2e\x34\x20\x2d\x32\x30\x2e\x32\x20\x2d\x31\x30\x33\x2e\x32\ \x20\x2d\x32\x35\x20\x2d\x31\x30\x32\x2e\x34\x43\x2d\x32\x35\x20\ \x2d\x31\x30\x32\x2e\x34\x20\x2d\x33\x36\x2e\x36\x20\x2d\x39\x36\ \x20\x2d\x34\x31\x20\x2d\x38\x36\x4c\x2d\x34\x34\x2e\x36\x20\x2d\ \x38\x34\x2e\x38\x43\x2d\x34\x34\x2e\x36\x20\x2d\x38\x34\x2e\x38\ \x20\x2d\x34\x36\x2e\x32\x20\x2d\x37\x37\x2e\x36\x20\x2d\x34\x36\ \x2e\x36\x20\x2d\x37\x36\x2e\x34\x43\x2d\x34\x36\x2e\x36\x20\x2d\ \x37\x36\x2e\x34\x20\x2d\x35\x31\x2e\x34\x20\x2d\x37\x32\x2e\x38\ \x20\x2d\x35\x32\x2e\x32\x20\x2d\x36\x37\x2e\x32\x43\x2d\x35\x32\ \x2e\x32\x20\x2d\x36\x37\x2e\x32\x20\x2d\x36\x31\x20\x2d\x36\x31\ \x2e\x32\x20\x2d\x36\x30\x2e\x36\x20\x2d\x35\x36\x2e\x38\x43\x2d\ \x36\x30\x2e\x36\x20\x2d\x35\x36\x2e\x38\x20\x2d\x36\x32\x2e\x32\ \x20\x2d\x35\x31\x2e\x36\x20\x2d\x36\x33\x20\x2d\x34\x36\x2e\x38\ \x43\x2d\x36\x33\x20\x2d\x34\x36\x2e\x38\x20\x2d\x37\x30\x2e\x32\ \x20\x2d\x34\x32\x20\x2d\x36\x39\x2e\x34\x20\x2d\x33\x39\x2e\x32\ \x43\x2d\x36\x39\x2e\x34\x20\x2d\x33\x39\x2e\x32\x20\x2d\x37\x37\ \x20\x2d\x32\x35\x2e\x32\x20\x2d\x37\x35\x2e\x38\x20\x2d\x31\x38\ \x2e\x34\x43\x2d\x37\x35\x2e\x38\x20\x2d\x31\x38\x2e\x34\x20\x2d\ \x38\x32\x2e\x32\x20\x2d\x31\x38\x2e\x38\x20\x2d\x38\x35\x20\x2d\ \x31\x36\x2e\x34\x43\x2d\x38\x35\x20\x2d\x31\x36\x2e\x34\x20\x2d\ \x38\x35\x2e\x38\x20\x2d\x31\x31\x2e\x36\x20\x2d\x38\x37\x2e\x34\ \x20\x2d\x31\x31\x2e\x32\x43\x2d\x38\x37\x2e\x34\x20\x2d\x31\x31\ \x2e\x32\x20\x2d\x39\x30\x2e\x32\x20\x2d\x31\x30\x20\x2d\x38\x37\ \x2e\x38\x20\x2d\x36\x43\x2d\x38\x37\x2e\x38\x20\x2d\x36\x20\x2d\ \x38\x39\x2e\x34\x20\x2d\x33\x2e\x32\x20\x2d\x38\x39\x2e\x38\x20\ \x2d\x31\x2e\x36\x43\x2d\x38\x39\x2e\x38\x20\x2d\x31\x2e\x36\x20\ \x2d\x38\x39\x20\x31\x2e\x32\x20\x2d\x39\x33\x2e\x34\x20\x36\x2e\ \x38\x43\x2d\x39\x33\x2e\x34\x20\x36\x2e\x38\x20\x2d\x39\x39\x2e\ \x38\x20\x32\x35\x2e\x36\x20\x2d\x39\x37\x2e\x38\x20\x33\x30\x2e\ \x38\x43\x2d\x39\x37\x2e\x38\x20\x33\x30\x2e\x38\x20\x2d\x39\x37\ \x2e\x34\x20\x33\x35\x2e\x36\x20\x2d\x31\x30\x30\x2e\x32\x20\x33\ \x37\x2e\x32\x43\x2d\x31\x30\x30\x2e\x32\x20\x33\x37\x2e\x32\x20\ \x2d\x31\x30\x33\x2e\x38\x20\x33\x36\x2e\x38\x20\x2d\x39\x35\x2e\ \x34\x20\x34\x38\x2e\x38\x43\x2d\x39\x35\x2e\x34\x20\x34\x38\x2e\ \x38\x20\x2d\x39\x34\x2e\x36\x20\x35\x30\x20\x2d\x39\x37\x2e\x38\ \x20\x35\x32\x2e\x34\x43\x2d\x39\x37\x2e\x38\x20\x35\x32\x2e\x34\ \x20\x2d\x31\x31\x35\x20\x35\x36\x20\x2d\x31\x31\x37\x2e\x34\x20\ \x37\x32\x2e\x34\x43\x2d\x31\x31\x37\x2e\x34\x20\x37\x32\x2e\x34\ \x20\x2d\x31\x33\x31\x20\x38\x37\x2e\x32\x20\x2d\x31\x33\x31\x20\ \x39\x32\x2e\x34\x43\x2d\x31\x33\x31\x20\x39\x34\x2e\x37\x30\x35\ \x20\x2d\x31\x33\x30\x2e\x37\x32\x39\x20\x39\x37\x2e\x38\x35\x32\ \x20\x2d\x31\x33\x30\x2e\x30\x33\x20\x31\x30\x32\x2e\x34\x36\x35\ \x43\x2d\x31\x33\x30\x2e\x30\x33\x20\x31\x30\x32\x2e\x34\x36\x35\ \x20\x2d\x31\x33\x30\x2e\x36\x20\x31\x31\x30\x2e\x38\x30\x31\x20\ \x2d\x31\x30\x33\x20\x31\x31\x31\x2e\x36\x30\x31\x43\x2d\x37\x35\ \x2e\x34\x20\x31\x31\x32\x2e\x34\x30\x31\x20\x32\x39\x39\x2e\x37\ \x31\x37\x20\x38\x30\x2e\x32\x34\x35\x20\x32\x39\x39\x2e\x37\x31\ \x37\x20\x38\x30\x2e\x32\x34\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\ \x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x31\x31\x35\x2e\x36\x20\x31\x30\x32\x2e\x36\x43\x2d\x31\x34\x30\ \x2e\x36\x20\x36\x33\x2e\x32\x20\x2d\x31\x32\x36\x2e\x32\x20\x31\ \x31\x39\x2e\x36\x30\x31\x20\x2d\x31\x32\x36\x2e\x32\x20\x31\x31\ \x39\x2e\x36\x30\x31\x43\x2d\x31\x31\x37\x2e\x34\x20\x31\x35\x34\ \x2e\x30\x30\x31\x20\x31\x32\x2e\x32\x20\x31\x31\x36\x2e\x34\x30\ \x31\x20\x31\x32\x2e\x32\x20\x31\x31\x36\x2e\x34\x30\x31\x43\x31\ \x32\x2e\x32\x20\x31\x31\x36\x2e\x34\x30\x31\x20\x31\x38\x31\x2e\ \x30\x30\x31\x20\x38\x36\x20\x31\x39\x32\x2e\x32\x30\x31\x20\x38\ \x32\x43\x32\x30\x33\x2e\x34\x30\x31\x20\x37\x38\x20\x32\x39\x38\ \x2e\x36\x30\x31\x20\x38\x34\x2e\x34\x20\x32\x39\x38\x2e\x36\x30\ \x31\x20\x38\x34\x2e\x34\x4c\x32\x39\x33\x2e\x30\x30\x31\x20\x36\ \x37\x2e\x36\x43\x32\x32\x38\x2e\x32\x30\x31\x20\x32\x31\x2e\x32\ \x20\x32\x30\x39\x2e\x30\x30\x31\x20\x34\x34\x2e\x34\x20\x31\x39\ \x35\x2e\x34\x30\x31\x20\x34\x30\x2e\x34\x43\x31\x38\x31\x2e\x38\ \x30\x31\x20\x33\x36\x2e\x34\x20\x31\x38\x34\x2e\x32\x30\x31\x20\ \x34\x36\x20\x31\x38\x31\x2e\x30\x30\x31\x20\x34\x36\x2e\x38\x43\ \x31\x37\x37\x2e\x38\x30\x31\x20\x34\x37\x2e\x36\x20\x31\x33\x38\ \x2e\x36\x30\x31\x20\x32\x32\x2e\x38\x20\x31\x33\x32\x2e\x32\x30\ \x31\x20\x32\x33\x2e\x36\x43\x31\x32\x35\x2e\x38\x30\x31\x20\x32\ \x34\x2e\x34\x20\x31\x30\x30\x2e\x34\x35\x39\x20\x30\x2e\x36\x34\ \x39\x20\x31\x31\x35\x2e\x34\x30\x31\x20\x33\x32\x2e\x34\x43\x31\ \x33\x31\x2e\x34\x30\x31\x20\x36\x36\x2e\x34\x20\x35\x37\x20\x37\ \x31\x2e\x36\x20\x34\x30\x2e\x32\x20\x36\x30\x2e\x34\x43\x32\x33\ \x2e\x34\x20\x34\x39\x2e\x32\x20\x34\x37\x2e\x34\x20\x37\x38\x2e\ \x38\x20\x34\x37\x2e\x34\x20\x37\x38\x2e\x38\x43\x36\x35\x2e\x38\ \x20\x39\x38\x2e\x38\x20\x33\x31\x2e\x34\x20\x38\x32\x20\x33\x31\ \x2e\x34\x20\x38\x32\x43\x2d\x33\x20\x36\x39\x2e\x32\x20\x2d\x32\ \x37\x20\x39\x34\x2e\x38\x20\x2d\x33\x30\x2e\x32\x20\x39\x35\x2e\ \x36\x43\x2d\x33\x33\x2e\x34\x20\x39\x36\x2e\x34\x20\x2d\x33\x38\ \x2e\x32\x20\x39\x39\x2e\x36\x20\x2d\x33\x39\x20\x39\x33\x2e\x32\ \x43\x2d\x33\x39\x2e\x38\x20\x38\x36\x2e\x38\x20\x2d\x34\x37\x2e\ \x33\x31\x20\x37\x30\x2e\x30\x39\x39\x20\x2d\x37\x39\x20\x39\x36\ \x2e\x34\x43\x2d\x39\x39\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x2d\ \x31\x31\x32\x2e\x38\x20\x39\x31\x20\x2d\x31\x31\x32\x2e\x38\x20\ \x39\x31\x4c\x2d\x31\x31\x35\x2e\x36\x20\x31\x30\x32\x2e\x36\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x65\x38\x37\x66\x33\x61\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x31\x33\x33\x2e\x35\x31\x20\x32\x35\x2e\ \x33\x34\x36\x43\x31\x32\x37\x2e\x31\x31\x20\x32\x36\x2e\x31\x34\ \x36\x20\x31\x30\x31\x2e\x37\x34\x33\x20\x32\x2e\x34\x30\x37\x20\ \x31\x31\x36\x2e\x37\x31\x20\x33\x34\x2e\x31\x34\x36\x43\x31\x33\ \x33\x2e\x33\x31\x20\x36\x39\x2e\x33\x34\x36\x20\x35\x38\x2e\x33\ \x31\x20\x37\x33\x2e\x33\x34\x36\x20\x34\x31\x2e\x35\x31\x20\x36\ \x32\x2e\x31\x34\x36\x43\x32\x34\x2e\x37\x30\x39\x20\x35\x30\x2e\ \x39\x34\x36\x20\x34\x38\x2e\x37\x31\x20\x38\x30\x2e\x35\x34\x36\ \x20\x34\x38\x2e\x37\x31\x20\x38\x30\x2e\x35\x34\x36\x43\x36\x37\ \x2e\x31\x31\x20\x31\x30\x30\x2e\x35\x34\x36\x20\x33\x32\x2e\x37\ \x30\x39\x20\x38\x33\x2e\x37\x34\x36\x20\x33\x32\x2e\x37\x30\x39\ \x20\x38\x33\x2e\x37\x34\x36\x43\x2d\x31\x2e\x36\x39\x31\x20\x37\ \x30\x2e\x39\x34\x36\x20\x2d\x32\x35\x2e\x36\x39\x31\x20\x39\x36\ \x2e\x35\x34\x36\x20\x2d\x32\x38\x2e\x38\x39\x31\x20\x39\x37\x2e\ \x33\x34\x36\x43\x2d\x33\x32\x2e\x30\x39\x31\x20\x39\x38\x2e\x31\ \x34\x36\x20\x2d\x33\x36\x2e\x38\x39\x31\x20\x31\x30\x31\x2e\x33\ \x34\x36\x20\x2d\x33\x37\x2e\x36\x39\x31\x20\x39\x34\x2e\x39\x34\ \x36\x43\x2d\x33\x38\x2e\x34\x39\x31\x20\x38\x38\x2e\x35\x34\x36\ \x20\x2d\x34\x35\x2e\x38\x37\x20\x37\x32\x2e\x30\x31\x32\x20\x2d\ \x37\x37\x2e\x36\x39\x31\x20\x39\x38\x2e\x31\x34\x36\x43\x2d\x39\ \x38\x2e\x39\x32\x37\x20\x31\x31\x35\x2e\x34\x39\x32\x20\x2d\x31\ \x31\x32\x2e\x34\x31\x38\x20\x39\x34\x2e\x30\x33\x37\x20\x2d\x31\ \x31\x32\x2e\x34\x31\x38\x20\x39\x34\x2e\x30\x33\x37\x4c\x2d\x31\ \x31\x35\x2e\x36\x31\x38\x20\x31\x30\x34\x2e\x31\x34\x36\x43\x2d\ \x31\x34\x30\x2e\x36\x31\x38\x20\x36\x34\x2e\x33\x34\x36\x20\x2d\ \x31\x32\x35\x2e\x35\x34\x36\x20\x31\x32\x32\x2e\x36\x35\x35\x20\ \x2d\x31\x32\x35\x2e\x35\x34\x36\x20\x31\x32\x32\x2e\x36\x35\x35\ \x43\x2d\x31\x31\x36\x2e\x37\x34\x35\x20\x31\x35\x37\x2e\x30\x35\ \x36\x20\x31\x33\x2e\x35\x30\x39\x20\x31\x31\x38\x2e\x31\x34\x36\ \x20\x31\x33\x2e\x35\x30\x39\x20\x31\x31\x38\x2e\x31\x34\x36\x43\ \x31\x33\x2e\x35\x30\x39\x20\x31\x31\x38\x2e\x31\x34\x36\x20\x31\ \x38\x32\x2e\x33\x31\x20\x38\x37\x2e\x37\x34\x36\x20\x31\x39\x33\ \x2e\x35\x31\x20\x38\x33\x2e\x37\x34\x36\x43\x32\x30\x34\x2e\x37\ \x31\x20\x37\x39\x2e\x37\x34\x36\x20\x32\x39\x39\x2e\x30\x33\x38\ \x20\x38\x36\x2e\x30\x37\x33\x20\x32\x39\x39\x2e\x30\x33\x38\x20\ \x38\x36\x2e\x30\x37\x33\x4c\x32\x39\x33\x2e\x35\x31\x20\x36\x38\ \x2e\x37\x36\x34\x43\x32\x32\x38\x2e\x37\x31\x20\x32\x32\x2e\x33\ \x36\x34\x20\x32\x31\x30\x2e\x33\x31\x20\x34\x36\x2e\x31\x34\x36\ \x20\x31\x39\x36\x2e\x37\x31\x20\x34\x32\x2e\x31\x34\x36\x43\x31\ \x38\x33\x2e\x31\x31\x20\x33\x38\x2e\x31\x34\x36\x20\x31\x38\x35\ \x2e\x35\x31\x20\x34\x37\x2e\x37\x34\x36\x20\x31\x38\x32\x2e\x33\ \x31\x20\x34\x38\x2e\x35\x34\x36\x43\x31\x37\x39\x2e\x31\x31\x20\ \x34\x39\x2e\x33\x34\x36\x20\x31\x33\x39\x2e\x39\x31\x20\x32\x34\ \x2e\x35\x34\x36\x20\x31\x33\x33\x2e\x35\x31\x20\x32\x35\x2e\x33\ \x34\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x65\x61\x38\x63\x34\x64\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x34\x2e\x38\x31\x39\ \x20\x32\x37\x2e\x30\x39\x31\x43\x31\x32\x38\x2e\x34\x31\x39\x20\ \x32\x37\x2e\x38\x39\x31\x20\x31\x30\x33\x2e\x36\x38\x35\x20\x33\ \x2e\x38\x36\x32\x20\x31\x31\x38\x2e\x30\x31\x39\x20\x33\x35\x2e\ \x38\x39\x31\x43\x31\x33\x34\x2e\x32\x31\x39\x20\x37\x32\x2e\x30\ \x39\x32\x20\x35\x39\x2e\x36\x31\x39\x20\x37\x35\x2e\x30\x39\x32\ \x20\x34\x32\x2e\x38\x31\x39\x20\x36\x33\x2e\x38\x39\x32\x43\x32\ \x36\x2e\x30\x31\x39\x20\x35\x32\x2e\x36\x39\x32\x20\x35\x30\x2e\ \x30\x31\x39\x20\x38\x32\x2e\x32\x39\x32\x20\x35\x30\x2e\x30\x31\ \x39\x20\x38\x32\x2e\x32\x39\x32\x43\x36\x38\x2e\x34\x31\x39\x20\ \x31\x30\x32\x2e\x32\x39\x32\x20\x33\x34\x2e\x30\x31\x39\x20\x38\ \x35\x2e\x34\x39\x32\x20\x33\x34\x2e\x30\x31\x39\x20\x38\x35\x2e\ \x34\x39\x32\x43\x2d\x30\x2e\x33\x38\x31\x20\x37\x32\x2e\x36\x39\ \x32\x20\x2d\x32\x34\x2e\x33\x38\x32\x20\x39\x38\x2e\x32\x39\x32\ \x20\x2d\x32\x37\x2e\x35\x38\x32\x20\x39\x39\x2e\x30\x39\x32\x43\ \x2d\x33\x30\x2e\x37\x38\x32\x20\x39\x39\x2e\x38\x39\x32\x20\x2d\ \x33\x35\x2e\x35\x38\x32\x20\x31\x30\x33\x2e\x30\x39\x32\x20\x2d\ \x33\x36\x2e\x33\x38\x32\x20\x39\x36\x2e\x36\x39\x32\x43\x2d\x33\ \x37\x2e\x31\x38\x32\x20\x39\x30\x2e\x32\x39\x32\x20\x2d\x34\x34\ \x2e\x34\x33\x20\x37\x33\x2e\x39\x32\x35\x20\x2d\x37\x36\x2e\x33\ \x38\x32\x20\x39\x39\x2e\x38\x39\x32\x43\x2d\x39\x38\x2e\x38\x35\ \x35\x20\x31\x31\x37\x2e\x39\x38\x33\x20\x2d\x31\x31\x32\x2e\x30\ \x33\x36\x20\x39\x37\x2e\x30\x37\x34\x20\x2d\x31\x31\x32\x2e\x30\ \x33\x36\x20\x39\x37\x2e\x30\x37\x34\x4c\x2d\x31\x31\x35\x2e\x36\ \x33\x36\x20\x31\x30\x35\x2e\x36\x39\x32\x43\x2d\x31\x33\x39\x2e\ \x34\x33\x36\x20\x36\x36\x2e\x36\x39\x32\x20\x2d\x31\x32\x34\x2e\ \x38\x39\x31\x20\x31\x32\x35\x2e\x37\x31\x20\x2d\x31\x32\x34\x2e\ \x38\x39\x31\x20\x31\x32\x35\x2e\x37\x31\x43\x2d\x31\x31\x36\x2e\ \x30\x39\x31\x20\x31\x36\x30\x2e\x31\x31\x20\x31\x34\x2e\x38\x31\ \x39\x20\x31\x31\x39\x2e\x38\x39\x32\x20\x31\x34\x2e\x38\x31\x39\ \x20\x31\x31\x39\x2e\x38\x39\x32\x43\x31\x34\x2e\x38\x31\x39\x20\ \x31\x31\x39\x2e\x38\x39\x32\x20\x31\x38\x33\x2e\x36\x31\x39\x20\ \x38\x39\x2e\x34\x39\x32\x20\x31\x39\x34\x2e\x38\x31\x39\x20\x38\ \x35\x2e\x34\x39\x32\x43\x32\x30\x36\x2e\x30\x31\x39\x20\x38\x31\ \x2e\x34\x39\x32\x20\x32\x39\x39\x2e\x34\x37\x34\x20\x38\x37\x2e\ \x37\x34\x36\x20\x32\x39\x39\x2e\x34\x37\x34\x20\x38\x37\x2e\x37\ \x34\x36\x4c\x32\x39\x34\x2e\x30\x32\x20\x36\x39\x2e\x39\x32\x38\ \x43\x32\x32\x39\x2e\x32\x31\x39\x20\x32\x33\x2e\x35\x32\x38\x20\ \x32\x31\x31\x2e\x36\x31\x39\x20\x34\x37\x2e\x38\x39\x31\x20\x31\ \x39\x38\x2e\x30\x31\x39\x20\x34\x33\x2e\x38\x39\x31\x43\x31\x38\ \x34\x2e\x34\x31\x39\x20\x33\x39\x2e\x38\x39\x31\x20\x31\x38\x36\ \x2e\x38\x31\x39\x20\x34\x39\x2e\x34\x39\x31\x20\x31\x38\x33\x2e\ \x36\x31\x39\x20\x35\x30\x2e\x32\x39\x32\x43\x31\x38\x30\x2e\x34\ \x31\x39\x20\x35\x31\x2e\x30\x39\x32\x20\x31\x34\x31\x2e\x32\x31\ \x39\x20\x32\x36\x2e\x32\x39\x31\x20\x31\x33\x34\x2e\x38\x31\x39\ \x20\x32\x37\x2e\x30\x39\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x63\x39\x39\x36\x31\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\ \x36\x2e\x31\x32\x38\x20\x32\x38\x2e\x38\x33\x37\x43\x31\x32\x39\ \x2e\x37\x32\x38\x20\x32\x39\x2e\x36\x33\x37\x20\x31\x30\x34\x2e\ \x39\x39\x39\x20\x35\x2e\x36\x30\x35\x20\x31\x31\x39\x2e\x33\x32\ \x38\x20\x33\x37\x2e\x36\x33\x37\x43\x31\x33\x36\x2e\x31\x32\x38\ \x20\x37\x35\x2e\x31\x39\x33\x20\x36\x30\x2e\x33\x39\x34\x20\x37\ \x36\x2e\x34\x38\x32\x20\x34\x34\x2e\x31\x32\x38\x20\x36\x35\x2e\ \x36\x33\x37\x43\x32\x37\x2e\x33\x32\x38\x20\x35\x34\x2e\x34\x33\ \x37\x20\x35\x31\x2e\x33\x32\x38\x20\x38\x34\x2e\x30\x33\x37\x20\ \x35\x31\x2e\x33\x32\x38\x20\x38\x34\x2e\x30\x33\x37\x43\x36\x39\ \x2e\x37\x32\x38\x20\x31\x30\x34\x2e\x30\x33\x37\x20\x33\x35\x2e\ \x33\x32\x38\x20\x38\x37\x2e\x32\x33\x37\x20\x33\x35\x2e\x33\x32\ \x38\x20\x38\x37\x2e\x32\x33\x37\x43\x30\x2e\x39\x32\x38\x20\x37\ \x34\x2e\x34\x33\x37\x20\x2d\x32\x33\x2e\x30\x37\x32\x20\x31\x30\ \x30\x2e\x30\x33\x37\x20\x2d\x32\x36\x2e\x32\x37\x32\x20\x31\x30\ \x30\x2e\x38\x33\x37\x43\x2d\x32\x39\x2e\x34\x37\x32\x20\x31\x30\ \x31\x2e\x36\x33\x37\x20\x2d\x33\x34\x2e\x32\x37\x32\x20\x31\x30\ \x34\x2e\x38\x33\x37\x20\x2d\x33\x35\x2e\x30\x37\x32\x20\x39\x38\ \x2e\x34\x33\x37\x43\x2d\x33\x35\x2e\x38\x37\x32\x20\x39\x32\x2e\ \x30\x33\x37\x20\x2d\x34\x32\x2e\x39\x38\x39\x20\x37\x35\x2e\x38\ \x33\x39\x20\x2d\x37\x35\x2e\x30\x37\x33\x20\x31\x30\x31\x2e\x36\ \x33\x37\x43\x2d\x39\x38\x2e\x37\x38\x32\x20\x31\x32\x30\x2e\x34\ \x37\x34\x20\x2d\x31\x31\x31\x2e\x36\x35\x35\x20\x31\x30\x30\x2e\ \x31\x31\x20\x2d\x31\x31\x31\x2e\x36\x35\x35\x20\x31\x30\x30\x2e\ \x31\x31\x4c\x2d\x31\x31\x35\x2e\x36\x35\x35\x20\x31\x30\x37\x2e\ \x32\x33\x37\x43\x2d\x31\x33\x37\x2e\x34\x35\x35\x20\x37\x30\x2e\ \x34\x33\x37\x20\x2d\x31\x32\x34\x2e\x32\x33\x36\x20\x31\x32\x38\ \x2e\x37\x36\x35\x20\x2d\x31\x32\x34\x2e\x32\x33\x36\x20\x31\x32\ \x38\x2e\x37\x36\x35\x43\x2d\x31\x31\x35\x2e\x34\x33\x36\x20\x31\ \x36\x33\x2e\x31\x36\x35\x20\x31\x36\x2e\x31\x32\x38\x20\x31\x32\ \x31\x2e\x36\x33\x37\x20\x31\x36\x2e\x31\x32\x38\x20\x31\x32\x31\ \x2e\x36\x33\x37\x43\x31\x36\x2e\x31\x32\x38\x20\x31\x32\x31\x2e\ \x36\x33\x37\x20\x31\x38\x34\x2e\x39\x32\x38\x20\x39\x31\x2e\x32\ \x33\x37\x20\x31\x39\x36\x2e\x31\x32\x39\x20\x38\x37\x2e\x32\x33\ \x37\x43\x32\x30\x37\x2e\x33\x32\x39\x20\x38\x33\x2e\x32\x33\x37\ \x20\x32\x39\x39\x2e\x39\x31\x31\x20\x38\x39\x2e\x34\x31\x39\x20\ \x32\x39\x39\x2e\x39\x31\x31\x20\x38\x39\x2e\x34\x31\x39\x4c\x32\ \x39\x34\x2e\x35\x32\x39\x20\x37\x31\x2e\x30\x39\x32\x43\x32\x32\ \x39\x2e\x37\x32\x39\x20\x32\x34\x2e\x36\x39\x31\x20\x32\x31\x32\ \x2e\x39\x32\x39\x20\x34\x39\x2e\x36\x33\x37\x20\x31\x39\x39\x2e\ \x33\x32\x39\x20\x34\x35\x2e\x36\x33\x37\x43\x31\x38\x35\x2e\x37\ \x32\x38\x20\x34\x31\x2e\x36\x33\x37\x20\x31\x38\x38\x2e\x31\x32\ \x38\x20\x35\x31\x2e\x32\x33\x37\x20\x31\x38\x34\x2e\x39\x32\x38\ \x20\x35\x32\x2e\x30\x33\x37\x43\x31\x38\x31\x2e\x37\x32\x38\x20\ \x35\x32\x2e\x38\x33\x37\x20\x31\x34\x32\x2e\x35\x32\x38\x20\x32\ \x38\x2e\x30\x33\x37\x20\x31\x33\x36\x2e\x31\x32\x38\x20\x32\x38\ \x2e\x38\x33\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x65\x65\x61\x35\x37\x35\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x37\x2e\x34\ \x33\x38\x20\x33\x30\x2e\x35\x38\x33\x43\x31\x33\x31\x2e\x30\x33\ \x37\x20\x33\x31\x2e\x33\x38\x33\x20\x31\x30\x36\x2e\x38\x31\x34\ \x20\x37\x2e\x31\x32\x39\x20\x31\x32\x30\x2e\x36\x33\x37\x20\x33\ \x39\x2e\x33\x38\x33\x43\x31\x33\x37\x2e\x34\x33\x38\x20\x37\x38\ \x2e\x35\x38\x33\x20\x36\x32\x2e\x32\x33\x37\x20\x37\x38\x2e\x35\ \x38\x33\x20\x34\x35\x2e\x34\x33\x37\x20\x36\x37\x2e\x33\x38\x33\ \x43\x32\x38\x2e\x36\x33\x37\x20\x35\x36\x2e\x31\x38\x33\x20\x35\ \x32\x2e\x36\x33\x37\x20\x38\x35\x2e\x37\x38\x33\x20\x35\x32\x2e\ \x36\x33\x37\x20\x38\x35\x2e\x37\x38\x33\x43\x37\x31\x2e\x30\x33\ \x37\x20\x31\x30\x35\x2e\x37\x38\x33\x20\x33\x36\x2e\x36\x33\x37\ \x20\x38\x38\x2e\x39\x38\x33\x20\x33\x36\x2e\x36\x33\x37\x20\x38\ \x38\x2e\x39\x38\x33\x43\x32\x2e\x32\x33\x37\x20\x37\x36\x2e\x31\ \x38\x33\x20\x2d\x32\x31\x2e\x37\x36\x33\x20\x31\x30\x31\x2e\x37\ \x38\x33\x20\x2d\x32\x34\x2e\x39\x36\x33\x20\x31\x30\x32\x2e\x35\ \x38\x33\x43\x2d\x32\x38\x2e\x31\x36\x33\x20\x31\x30\x33\x2e\x33\ \x38\x33\x20\x2d\x33\x32\x2e\x39\x36\x33\x20\x31\x30\x36\x2e\x35\ \x38\x33\x20\x2d\x33\x33\x2e\x37\x36\x33\x20\x31\x30\x30\x2e\x31\ \x38\x33\x43\x2d\x33\x34\x2e\x35\x36\x33\x20\x39\x33\x2e\x37\x38\ \x33\x20\x2d\x34\x31\x2e\x35\x34\x38\x20\x37\x37\x2e\x37\x35\x32\ \x20\x2d\x37\x33\x2e\x37\x36\x33\x20\x31\x30\x33\x2e\x33\x38\x33\ \x43\x2d\x39\x38\x2e\x37\x30\x39\x20\x31\x32\x32\x2e\x39\x36\x35\ \x20\x2d\x31\x31\x31\x2e\x32\x37\x33\x20\x31\x30\x33\x2e\x31\x34\ \x36\x20\x2d\x31\x31\x31\x2e\x32\x37\x33\x20\x31\x30\x33\x2e\x31\ \x34\x36\x4c\x2d\x31\x31\x35\x2e\x36\x37\x33\x20\x31\x30\x38\x2e\ \x37\x38\x33\x43\x2d\x31\x33\x35\x2e\x34\x37\x33\x20\x37\x33\x2e\ \x39\x38\x32\x20\x2d\x31\x32\x33\x2e\x35\x38\x32\x20\x31\x33\x31\ \x2e\x38\x31\x39\x20\x2d\x31\x32\x33\x2e\x35\x38\x32\x20\x31\x33\ \x31\x2e\x38\x31\x39\x43\x2d\x31\x31\x34\x2e\x37\x38\x32\x20\x31\ \x36\x36\x2e\x32\x32\x20\x31\x37\x2e\x34\x33\x37\x20\x31\x32\x33\ \x2e\x33\x38\x33\x20\x31\x37\x2e\x34\x33\x37\x20\x31\x32\x33\x2e\ \x33\x38\x33\x43\x31\x37\x2e\x34\x33\x37\x20\x31\x32\x33\x2e\x33\ \x38\x33\x20\x31\x38\x36\x2e\x32\x33\x38\x20\x39\x32\x2e\x39\x38\ \x33\x20\x31\x39\x37\x2e\x34\x33\x38\x20\x38\x38\x2e\x39\x38\x33\ \x43\x32\x30\x38\x2e\x36\x33\x38\x20\x38\x34\x2e\x39\x38\x33\x20\ \x33\x30\x30\x2e\x33\x34\x37\x20\x39\x31\x2e\x30\x39\x32\x20\x33\ \x30\x30\x2e\x33\x34\x37\x20\x39\x31\x2e\x30\x39\x32\x4c\x32\x39\ \x35\x2e\x30\x33\x38\x20\x37\x32\x2e\x32\x35\x35\x43\x32\x33\x30\ \x2e\x32\x33\x38\x20\x32\x35\x2e\x38\x35\x35\x20\x32\x31\x34\x2e\ \x32\x33\x38\x20\x35\x31\x2e\x33\x38\x33\x20\x32\x30\x30\x2e\x36\ \x33\x38\x20\x34\x37\x2e\x33\x38\x33\x43\x31\x38\x37\x2e\x30\x33\ \x38\x20\x34\x33\x2e\x33\x38\x33\x20\x31\x38\x39\x2e\x34\x33\x38\ \x20\x35\x32\x2e\x39\x38\x33\x20\x31\x38\x36\x2e\x32\x33\x38\x20\ \x35\x33\x2e\x37\x38\x33\x43\x31\x38\x33\x2e\x30\x33\x38\x20\x35\ \x34\x2e\x35\x38\x33\x20\x31\x34\x33\x2e\x38\x33\x38\x20\x32\x39\ \x2e\x37\x38\x33\x20\x31\x33\x37\x2e\x34\x33\x38\x20\x33\x30\x2e\ \x35\x38\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x31\x62\x32\x38\x38\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x38\x2e\x37\x34\ \x37\x20\x33\x32\x2e\x33\x32\x38\x43\x31\x33\x32\x2e\x33\x34\x37\ \x20\x33\x33\x2e\x31\x32\x38\x20\x31\x30\x36\x2e\x33\x38\x33\x20\ \x39\x2e\x36\x37\x37\x20\x31\x32\x31\x2e\x39\x34\x37\x20\x34\x31\ \x2e\x31\x32\x38\x43\x31\x34\x31\x2e\x31\x34\x37\x20\x37\x39\x2e\ \x39\x32\x38\x20\x36\x33\x2e\x35\x34\x36\x20\x38\x30\x2e\x33\x32\ \x38\x20\x34\x36\x2e\x37\x34\x36\x20\x36\x39\x2e\x31\x32\x38\x43\ \x32\x39\x2e\x39\x34\x36\x20\x35\x37\x2e\x39\x32\x38\x20\x35\x33\ \x2e\x39\x34\x36\x20\x38\x37\x2e\x35\x32\x38\x20\x35\x33\x2e\x39\ \x34\x36\x20\x38\x37\x2e\x35\x32\x38\x43\x37\x32\x2e\x33\x34\x36\ \x20\x31\x30\x37\x2e\x35\x32\x38\x20\x33\x37\x2e\x39\x34\x36\x20\ \x39\x30\x2e\x37\x32\x38\x20\x33\x37\x2e\x39\x34\x36\x20\x39\x30\ \x2e\x37\x32\x38\x43\x33\x2e\x35\x34\x36\x20\x37\x37\x2e\x39\x32\ \x38\x20\x2d\x32\x30\x2e\x34\x35\x34\x20\x31\x30\x33\x2e\x35\x32\ \x38\x20\x2d\x32\x33\x2e\x36\x35\x34\x20\x31\x30\x34\x2e\x33\x32\ \x38\x43\x2d\x32\x36\x2e\x38\x35\x34\x20\x31\x30\x35\x2e\x31\x32\ \x38\x20\x2d\x33\x31\x2e\x36\x35\x34\x20\x31\x30\x38\x2e\x33\x32\ \x38\x20\x2d\x33\x32\x2e\x34\x35\x34\x20\x31\x30\x31\x2e\x39\x32\ \x38\x43\x2d\x33\x33\x2e\x32\x35\x34\x20\x39\x35\x2e\x35\x32\x38\ \x20\x2d\x34\x30\x2e\x31\x30\x38\x20\x37\x39\x2e\x36\x36\x35\x20\ \x2d\x37\x32\x2e\x34\x35\x34\x20\x31\x30\x35\x2e\x31\x32\x38\x43\ \x2d\x39\x38\x2e\x36\x33\x36\x20\x31\x32\x35\x2e\x34\x35\x36\x20\ \x2d\x31\x31\x30\x2e\x38\x39\x31\x20\x31\x30\x36\x2e\x31\x38\x33\ \x20\x2d\x31\x31\x30\x2e\x38\x39\x31\x20\x31\x30\x36\x2e\x31\x38\ \x33\x4c\x2d\x31\x31\x35\x2e\x36\x39\x31\x20\x31\x31\x30\x2e\x33\ \x32\x38\x43\x2d\x31\x33\x33\x2e\x36\x39\x31\x20\x37\x37\x2e\x31\ \x32\x38\x20\x2d\x31\x32\x32\x2e\x39\x32\x37\x20\x31\x33\x34\x2e\ \x38\x37\x34\x20\x2d\x31\x32\x32\x2e\x39\x32\x37\x20\x31\x33\x34\ \x2e\x38\x37\x34\x43\x2d\x31\x31\x34\x2e\x31\x32\x37\x20\x31\x36\ \x39\x2e\x32\x37\x34\x20\x31\x38\x2e\x37\x34\x36\x20\x31\x32\x35\ \x2e\x31\x32\x38\x20\x31\x38\x2e\x37\x34\x36\x20\x31\x32\x35\x2e\ \x31\x32\x38\x43\x31\x38\x2e\x37\x34\x36\x20\x31\x32\x35\x2e\x31\ \x32\x38\x20\x31\x38\x37\x2e\x35\x34\x37\x20\x39\x34\x2e\x37\x32\ \x38\x20\x31\x39\x38\x2e\x37\x34\x37\x20\x39\x30\x2e\x37\x32\x38\ \x43\x32\x30\x39\x2e\x39\x34\x37\x20\x38\x36\x2e\x37\x32\x38\x20\ \x33\x30\x30\x2e\x37\x38\x33\x20\x39\x32\x2e\x37\x36\x34\x20\x33\ \x30\x30\x2e\x37\x38\x33\x20\x39\x32\x2e\x37\x36\x34\x4c\x32\x39\ \x35\x2e\x35\x34\x37\x20\x37\x33\x2e\x34\x31\x39\x43\x32\x33\x30\ \x2e\x37\x34\x37\x20\x32\x37\x2e\x30\x31\x39\x20\x32\x31\x35\x2e\ \x35\x34\x37\x20\x35\x33\x2e\x31\x32\x38\x20\x32\x30\x31\x2e\x39\ \x34\x37\x20\x34\x39\x2e\x31\x32\x38\x43\x31\x38\x38\x2e\x33\x34\ \x37\x20\x34\x35\x2e\x31\x32\x38\x20\x31\x39\x30\x2e\x37\x34\x37\ \x20\x35\x34\x2e\x37\x32\x38\x20\x31\x38\x37\x2e\x35\x34\x37\x20\ \x35\x35\x2e\x35\x32\x38\x43\x31\x38\x34\x2e\x33\x34\x37\x20\x35\ \x36\x2e\x33\x32\x38\x20\x31\x34\x35\x2e\x31\x34\x37\x20\x33\x31\ \x2e\x35\x32\x38\x20\x31\x33\x38\x2e\x37\x34\x37\x20\x33\x32\x2e\ \x33\x32\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x33\x62\x66\x39\x63\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x30\x2e\x30\x35\ \x36\x20\x33\x34\x2e\x30\x37\x33\x43\x31\x33\x33\x2e\x36\x35\x35\ \x20\x33\x34\x2e\x38\x37\x33\x20\x31\x30\x37\x2e\x33\x31\x33\x20\ \x31\x31\x2e\x36\x31\x33\x20\x31\x32\x33\x2e\x32\x35\x35\x20\x34\ \x32\x2e\x38\x37\x33\x43\x31\x34\x33\x2e\x36\x35\x36\x20\x38\x32\ \x2e\x38\x37\x34\x20\x36\x34\x2e\x38\x35\x35\x20\x38\x32\x2e\x30\ \x37\x34\x20\x34\x38\x2e\x30\x35\x35\x20\x37\x30\x2e\x38\x37\x34\ \x43\x33\x31\x2e\x32\x35\x35\x20\x35\x39\x2e\x36\x37\x34\x20\x35\ \x35\x2e\x32\x35\x35\x20\x38\x39\x2e\x32\x37\x34\x20\x35\x35\x2e\ \x32\x35\x35\x20\x38\x39\x2e\x32\x37\x34\x43\x37\x33\x2e\x36\x35\ \x35\x20\x31\x30\x39\x2e\x32\x37\x34\x20\x33\x39\x2e\x32\x35\x35\ \x20\x39\x32\x2e\x34\x37\x34\x20\x33\x39\x2e\x32\x35\x35\x20\x39\ \x32\x2e\x34\x37\x34\x43\x34\x2e\x38\x35\x35\x20\x37\x39\x2e\x36\ \x37\x34\x20\x2d\x31\x39\x2e\x31\x34\x35\x20\x31\x30\x35\x2e\x32\ \x37\x34\x20\x2d\x32\x32\x2e\x33\x34\x35\x20\x31\x30\x36\x2e\x30\ \x37\x34\x43\x2d\x32\x35\x2e\x35\x34\x35\x20\x31\x30\x36\x2e\x38\ \x37\x34\x20\x2d\x33\x30\x2e\x33\x34\x35\x20\x31\x31\x30\x2e\x30\ \x37\x34\x20\x2d\x33\x31\x2e\x31\x34\x35\x20\x31\x30\x33\x2e\x36\ \x37\x34\x43\x2d\x33\x31\x2e\x39\x34\x35\x20\x39\x37\x2e\x32\x37\ \x34\x20\x2d\x33\x38\x2e\x36\x36\x38\x20\x38\x31\x2e\x35\x37\x38\ \x20\x2d\x37\x31\x2e\x31\x34\x35\x20\x31\x30\x36\x2e\x38\x37\x34\ \x43\x2d\x39\x38\x2e\x35\x36\x34\x20\x31\x32\x37\x2e\x39\x34\x37\ \x20\x2d\x31\x31\x30\x2e\x35\x30\x39\x20\x31\x30\x39\x2e\x32\x31\ \x39\x20\x2d\x31\x31\x30\x2e\x35\x30\x39\x20\x31\x30\x39\x2e\x32\ \x31\x39\x4c\x2d\x31\x31\x35\x2e\x37\x30\x39\x20\x31\x31\x31\x2e\ \x38\x37\x34\x43\x2d\x31\x33\x31\x2e\x37\x30\x39\x20\x38\x31\x2e\ \x36\x37\x34\x20\x2d\x31\x32\x32\x2e\x32\x37\x33\x20\x31\x33\x37\ \x2e\x39\x32\x39\x20\x2d\x31\x32\x32\x2e\x32\x37\x33\x20\x31\x33\ \x37\x2e\x39\x32\x39\x43\x2d\x31\x31\x33\x2e\x34\x37\x33\x20\x31\ \x37\x32\x2e\x33\x32\x39\x20\x32\x30\x2e\x30\x35\x35\x20\x31\x32\ \x36\x2e\x38\x37\x34\x20\x32\x30\x2e\x30\x35\x35\x20\x31\x32\x36\ \x2e\x38\x37\x34\x43\x32\x30\x2e\x30\x35\x35\x20\x31\x32\x36\x2e\ \x38\x37\x34\x20\x31\x38\x38\x2e\x38\x35\x36\x20\x39\x36\x2e\x34\ \x37\x34\x20\x32\x30\x30\x2e\x30\x35\x36\x20\x39\x32\x2e\x34\x37\ \x34\x43\x32\x31\x31\x2e\x32\x35\x36\x20\x38\x38\x2e\x34\x37\x34\ \x20\x33\x30\x31\x2e\x32\x32\x20\x39\x34\x2e\x34\x33\x37\x20\x33\ \x30\x31\x2e\x32\x32\x20\x39\x34\x2e\x34\x33\x37\x4c\x32\x39\x36\ \x2e\x30\x35\x36\x20\x37\x34\x2e\x35\x38\x33\x43\x32\x33\x31\x2e\ \x32\x35\x36\x20\x32\x38\x2e\x31\x38\x33\x20\x32\x31\x36\x2e\x38\ \x35\x36\x20\x35\x34\x2e\x38\x37\x34\x20\x32\x30\x33\x2e\x32\x35\ \x36\x20\x35\x30\x2e\x38\x37\x34\x43\x31\x38\x39\x2e\x36\x35\x36\ \x20\x34\x36\x2e\x38\x37\x33\x20\x31\x39\x32\x2e\x30\x35\x36\x20\ \x35\x36\x2e\x34\x37\x34\x20\x31\x38\x38\x2e\x38\x35\x36\x20\x35\ \x37\x2e\x32\x37\x34\x43\x31\x38\x35\x2e\x36\x35\x36\x20\x35\x38\ \x2e\x30\x37\x34\x20\x31\x34\x36\x2e\x34\x35\x36\x20\x33\x33\x2e\ \x32\x37\x33\x20\x31\x34\x30\x2e\x30\x35\x36\x20\x33\x34\x2e\x30\ \x37\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x66\x35\x63\x63\x62\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x31\x2e\x33\x36\x35\ \x20\x33\x35\x2e\x38\x31\x39\x43\x31\x33\x34\x2e\x39\x36\x35\x20\ \x33\x36\x2e\x36\x31\x39\x20\x31\x30\x37\x2e\x35\x32\x33\x20\x31\ \x33\x2e\x39\x34\x34\x20\x31\x32\x34\x2e\x35\x36\x35\x20\x34\x34\ \x2e\x36\x31\x39\x43\x31\x34\x36\x2e\x35\x36\x35\x20\x38\x34\x2e\ \x32\x31\x39\x20\x36\x36\x2e\x31\x36\x34\x20\x38\x33\x2e\x38\x31\ \x39\x20\x34\x39\x2e\x33\x36\x34\x20\x37\x32\x2e\x36\x31\x39\x43\ \x33\x32\x2e\x35\x36\x34\x20\x36\x31\x2e\x34\x31\x39\x20\x35\x36\ \x2e\x35\x36\x34\x20\x39\x31\x2e\x30\x31\x39\x20\x35\x36\x2e\x35\ \x36\x34\x20\x39\x31\x2e\x30\x31\x39\x43\x37\x34\x2e\x39\x36\x34\ \x20\x31\x31\x31\x2e\x30\x31\x39\x20\x34\x30\x2e\x35\x36\x34\x20\ \x39\x34\x2e\x32\x31\x39\x20\x34\x30\x2e\x35\x36\x34\x20\x39\x34\ \x2e\x32\x31\x39\x43\x36\x2e\x31\x36\x34\x20\x38\x31\x2e\x34\x31\ \x39\x20\x2d\x31\x37\x2e\x38\x33\x36\x20\x31\x30\x37\x2e\x30\x31\ \x39\x20\x2d\x32\x31\x2e\x30\x33\x36\x20\x31\x30\x37\x2e\x38\x31\ \x39\x43\x2d\x32\x34\x2e\x32\x33\x36\x20\x31\x30\x38\x2e\x36\x31\ \x39\x20\x2d\x32\x39\x2e\x30\x33\x36\x20\x31\x31\x31\x2e\x38\x31\ \x39\x20\x2d\x32\x39\x2e\x38\x33\x36\x20\x31\x30\x35\x2e\x34\x31\ \x39\x43\x2d\x33\x30\x2e\x36\x33\x36\x20\x39\x39\x2e\x30\x31\x39\ \x20\x2d\x33\x37\x2e\x32\x32\x37\x20\x38\x33\x2e\x34\x39\x32\x20\ \x2d\x36\x39\x2e\x38\x33\x36\x20\x31\x30\x38\x2e\x36\x31\x39\x43\ \x2d\x39\x38\x2e\x34\x39\x31\x20\x31\x33\x30\x2e\x34\x33\x38\x20\ \x2d\x31\x31\x30\x2e\x31\x32\x37\x20\x31\x31\x32\x2e\x32\x35\x36\ \x20\x2d\x31\x31\x30\x2e\x31\x32\x37\x20\x31\x31\x32\x2e\x32\x35\ \x36\x4c\x2d\x31\x31\x35\x2e\x37\x32\x37\x20\x31\x31\x33\x2e\x34\ \x31\x39\x43\x2d\x31\x33\x30\x2e\x31\x32\x38\x20\x38\x35\x2e\x30\ \x31\x39\x20\x2d\x31\x32\x31\x2e\x36\x31\x38\x20\x31\x34\x30\x2e\ \x39\x38\x33\x20\x2d\x31\x32\x31\x2e\x36\x31\x38\x20\x31\x34\x30\ \x2e\x39\x38\x33\x43\x2d\x31\x31\x32\x2e\x38\x31\x38\x20\x31\x37\ \x35\x2e\x33\x38\x34\x20\x32\x31\x2e\x33\x36\x34\x20\x31\x32\x38\ \x2e\x36\x31\x39\x20\x32\x31\x2e\x33\x36\x34\x20\x31\x32\x38\x2e\ \x36\x31\x39\x43\x32\x31\x2e\x33\x36\x34\x20\x31\x32\x38\x2e\x36\ \x31\x39\x20\x31\x39\x30\x2e\x31\x36\x35\x20\x39\x38\x2e\x32\x31\ \x39\x20\x32\x30\x31\x2e\x33\x36\x35\x20\x39\x34\x2e\x32\x31\x39\ \x43\x32\x31\x32\x2e\x35\x36\x35\x20\x39\x30\x2e\x32\x31\x39\x20\ \x33\x30\x31\x2e\x36\x35\x36\x20\x39\x36\x2e\x31\x31\x20\x33\x30\ \x31\x2e\x36\x35\x36\x20\x39\x36\x2e\x31\x31\x4c\x32\x39\x36\x2e\ \x35\x36\x35\x20\x37\x35\x2e\x37\x34\x36\x43\x32\x33\x31\x2e\x37\ \x36\x35\x20\x32\x39\x2e\x33\x34\x36\x20\x32\x31\x38\x2e\x31\x36\ \x35\x20\x35\x36\x2e\x36\x31\x39\x20\x32\x30\x34\x2e\x35\x36\x35\ \x20\x35\x32\x2e\x36\x31\x39\x43\x31\x39\x30\x2e\x39\x36\x35\x20\ \x34\x38\x2e\x36\x31\x39\x20\x31\x39\x33\x2e\x33\x36\x35\x20\x35\ \x38\x2e\x32\x31\x39\x20\x31\x39\x30\x2e\x31\x36\x35\x20\x35\x39\ \x2e\x30\x31\x39\x43\x31\x38\x36\x2e\x39\x36\x35\x20\x35\x39\x2e\ \x38\x31\x39\x20\x31\x34\x37\x2e\x37\x36\x35\x20\x33\x35\x2e\x30\ \x31\x39\x20\x31\x34\x31\x2e\x33\x36\x35\x20\x33\x35\x2e\x38\x31\ \x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x38\x64\x38\x63\x34\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x32\x2e\x36\x37\x34\x20\ \x33\x37\x2e\x35\x36\x35\x43\x31\x33\x36\x2e\x32\x37\x34\x20\x33\ \x38\x2e\x33\x36\x35\x20\x31\x30\x38\x2e\x38\x33\x32\x20\x31\x35\ \x2e\x36\x38\x39\x20\x31\x32\x35\x2e\x38\x37\x34\x20\x34\x36\x2e\ \x33\x36\x35\x43\x31\x34\x37\x2e\x38\x37\x34\x20\x38\x35\x2e\x39\ \x36\x35\x20\x36\x37\x2e\x34\x37\x34\x20\x38\x35\x2e\x35\x36\x35\ \x20\x35\x30\x2e\x36\x37\x34\x20\x37\x34\x2e\x33\x36\x35\x43\x33\ \x33\x2e\x38\x37\x34\x20\x36\x33\x2e\x31\x36\x35\x20\x35\x37\x2e\ \x38\x37\x34\x20\x39\x32\x2e\x37\x36\x35\x20\x35\x37\x2e\x38\x37\ \x34\x20\x39\x32\x2e\x37\x36\x35\x43\x37\x36\x2e\x32\x37\x34\x20\ \x31\x31\x32\x2e\x37\x36\x35\x20\x34\x31\x2e\x38\x37\x34\x20\x39\ \x35\x2e\x39\x36\x35\x20\x34\x31\x2e\x38\x37\x34\x20\x39\x35\x2e\ \x39\x36\x35\x43\x37\x2e\x34\x37\x33\x20\x38\x33\x2e\x31\x36\x35\ \x20\x2d\x31\x36\x2e\x35\x32\x37\x20\x31\x30\x38\x2e\x37\x36\x35\ \x20\x2d\x31\x39\x2e\x37\x32\x37\x20\x31\x30\x39\x2e\x35\x36\x35\ \x43\x2d\x32\x32\x2e\x39\x32\x37\x20\x31\x31\x30\x2e\x33\x36\x35\ \x20\x2d\x32\x37\x2e\x37\x32\x37\x20\x31\x31\x33\x2e\x35\x36\x35\ \x20\x2d\x32\x38\x2e\x35\x32\x37\x20\x31\x30\x37\x2e\x31\x36\x35\ \x43\x2d\x32\x39\x2e\x33\x32\x37\x20\x31\x30\x30\x2e\x37\x36\x35\ \x20\x2d\x33\x35\x2e\x37\x38\x36\x20\x38\x35\x2e\x34\x30\x35\x20\ \x2d\x36\x38\x2e\x35\x32\x37\x20\x31\x31\x30\x2e\x33\x36\x35\x43\ \x2d\x39\x38\x2e\x34\x31\x38\x20\x31\x33\x32\x2e\x39\x32\x39\x20\ \x2d\x31\x30\x39\x2e\x37\x34\x35\x20\x31\x31\x35\x2e\x32\x39\x33\ \x20\x2d\x31\x30\x39\x2e\x37\x34\x35\x20\x31\x31\x35\x2e\x32\x39\ \x33\x4c\x2d\x31\x31\x35\x2e\x37\x34\x35\x20\x31\x31\x34\x2e\x39\ \x36\x35\x43\x2d\x31\x32\x39\x2e\x33\x34\x36\x20\x38\x38\x2e\x35\ \x36\x34\x20\x2d\x31\x32\x30\x2e\x39\x36\x33\x20\x31\x34\x34\x2e\ \x30\x33\x38\x20\x2d\x31\x32\x30\x2e\x39\x36\x33\x20\x31\x34\x34\ \x2e\x30\x33\x38\x43\x2d\x31\x31\x32\x2e\x31\x36\x33\x20\x31\x37\ \x38\x2e\x34\x33\x38\x20\x32\x32\x2e\x36\x37\x33\x20\x31\x33\x30\ \x2e\x33\x36\x35\x20\x32\x32\x2e\x36\x37\x33\x20\x31\x33\x30\x2e\ \x33\x36\x35\x43\x32\x32\x2e\x36\x37\x33\x20\x31\x33\x30\x2e\x33\ \x36\x35\x20\x31\x39\x31\x2e\x34\x37\x34\x20\x39\x39\x2e\x39\x36\ \x35\x20\x32\x30\x32\x2e\x36\x37\x34\x20\x39\x35\x2e\x39\x36\x35\ \x43\x32\x31\x33\x2e\x38\x37\x34\x20\x39\x31\x2e\x39\x36\x35\x20\ \x33\x30\x32\x2e\x30\x39\x33\x20\x39\x37\x2e\x37\x38\x33\x20\x33\ \x30\x32\x2e\x30\x39\x33\x20\x39\x37\x2e\x37\x38\x33\x4c\x32\x39\ \x37\x2e\x30\x37\x35\x20\x37\x36\x2e\x39\x31\x43\x32\x33\x32\x2e\ \x32\x37\x34\x20\x33\x30\x2e\x35\x31\x20\x32\x31\x39\x2e\x34\x37\ \x34\x20\x35\x38\x2e\x33\x36\x35\x20\x32\x30\x35\x2e\x38\x37\x34\ \x20\x35\x34\x2e\x33\x36\x35\x43\x31\x39\x32\x2e\x32\x37\x34\x20\ \x35\x30\x2e\x33\x36\x35\x20\x31\x39\x34\x2e\x36\x37\x34\x20\x35\ \x39\x2e\x39\x36\x35\x20\x31\x39\x31\x2e\x34\x37\x34\x20\x36\x30\ \x2e\x37\x36\x35\x43\x31\x38\x38\x2e\x32\x37\x34\x20\x36\x31\x2e\ \x35\x36\x35\x20\x31\x34\x39\x2e\x30\x37\x34\x20\x33\x36\x2e\x37\ \x36\x35\x20\x31\x34\x32\x2e\x36\x37\x34\x20\x33\x37\x2e\x35\x36\ \x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x61\x65\x35\x64\x37\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x33\x2e\x39\x38\x33\x20\ \x33\x39\x2e\x33\x31\x43\x31\x33\x37\x2e\x35\x38\x33\x20\x34\x30\ \x2e\x31\x31\x20\x31\x31\x30\x2e\x35\x32\x39\x20\x31\x37\x2e\x32\ \x32\x33\x20\x31\x32\x37\x2e\x31\x38\x33\x20\x34\x38\x2e\x31\x31\ \x43\x31\x34\x39\x2e\x31\x38\x33\x20\x38\x38\x2e\x39\x31\x20\x36\ \x38\x2e\x37\x38\x33\x20\x38\x37\x2e\x33\x31\x20\x35\x31\x2e\x39\ \x38\x33\x20\x37\x36\x2e\x31\x31\x43\x33\x35\x2e\x31\x38\x33\x20\ \x36\x34\x2e\x39\x31\x20\x35\x39\x2e\x31\x38\x33\x20\x39\x34\x2e\ \x35\x31\x20\x35\x39\x2e\x31\x38\x33\x20\x39\x34\x2e\x35\x31\x43\ \x37\x37\x2e\x35\x38\x33\x20\x31\x31\x34\x2e\x35\x31\x20\x34\x33\ \x2e\x31\x38\x33\x20\x39\x37\x2e\x37\x31\x20\x34\x33\x2e\x31\x38\ \x33\x20\x39\x37\x2e\x37\x31\x43\x38\x2e\x37\x38\x33\x20\x38\x34\ \x2e\x39\x31\x20\x2d\x31\x35\x2e\x32\x31\x37\x20\x31\x31\x30\x2e\ \x35\x31\x20\x2d\x31\x38\x2e\x34\x31\x37\x20\x31\x31\x31\x2e\x33\ \x31\x43\x2d\x32\x31\x2e\x36\x31\x38\x20\x31\x31\x32\x2e\x31\x31\ \x20\x2d\x32\x36\x2e\x34\x31\x38\x20\x31\x31\x35\x2e\x33\x31\x20\ \x2d\x32\x37\x2e\x32\x31\x38\x20\x31\x30\x38\x2e\x39\x31\x43\x2d\ \x32\x38\x2e\x30\x31\x38\x20\x31\x30\x32\x2e\x35\x31\x20\x2d\x33\ \x34\x2e\x33\x34\x36\x20\x38\x37\x2e\x33\x31\x38\x20\x2d\x36\x37\ \x2e\x32\x31\x38\x20\x31\x31\x32\x2e\x31\x31\x43\x2d\x39\x38\x2e\ \x33\x34\x35\x20\x31\x33\x35\x2e\x34\x32\x20\x2d\x31\x30\x39\x2e\ \x33\x36\x33\x20\x31\x31\x38\x2e\x33\x32\x39\x20\x2d\x31\x30\x39\ \x2e\x33\x36\x33\x20\x31\x31\x38\x2e\x33\x32\x39\x4c\x2d\x31\x31\ \x35\x2e\x37\x36\x34\x20\x31\x31\x36\x2e\x35\x31\x43\x2d\x31\x32\ \x38\x2e\x37\x36\x34\x20\x39\x32\x2e\x35\x31\x20\x2d\x31\x32\x30\ \x2e\x33\x30\x39\x20\x31\x34\x37\x2e\x30\x39\x33\x20\x2d\x31\x32\ \x30\x2e\x33\x30\x39\x20\x31\x34\x37\x2e\x30\x39\x33\x43\x2d\x31\ \x31\x31\x2e\x35\x30\x39\x20\x31\x38\x31\x2e\x34\x39\x33\x20\x32\ \x33\x2e\x39\x38\x33\x20\x31\x33\x32\x2e\x31\x31\x20\x32\x33\x2e\ \x39\x38\x33\x20\x31\x33\x32\x2e\x31\x31\x43\x32\x33\x2e\x39\x38\ \x33\x20\x31\x33\x32\x2e\x31\x31\x20\x31\x39\x32\x2e\x37\x38\x33\ \x20\x31\x30\x31\x2e\x37\x31\x20\x32\x30\x33\x2e\x39\x38\x33\x20\ \x39\x37\x2e\x37\x31\x43\x32\x31\x35\x2e\x31\x38\x33\x20\x39\x33\ \x2e\x37\x31\x20\x33\x30\x32\x2e\x35\x32\x39\x20\x39\x39\x2e\x34\ \x35\x36\x20\x33\x30\x32\x2e\x35\x32\x39\x20\x39\x39\x2e\x34\x35\ \x36\x4c\x32\x39\x37\x2e\x35\x38\x33\x20\x37\x38\x2e\x30\x37\x34\ \x43\x32\x33\x32\x2e\x37\x38\x33\x20\x33\x31\x2e\x36\x37\x33\x20\ \x32\x32\x30\x2e\x37\x38\x33\x20\x36\x30\x2e\x31\x31\x20\x32\x30\ \x37\x2e\x31\x38\x33\x20\x35\x36\x2e\x31\x31\x43\x31\x39\x33\x2e\ \x35\x38\x33\x20\x35\x32\x2e\x31\x31\x20\x31\x39\x35\x2e\x39\x38\ \x33\x20\x36\x31\x2e\x37\x31\x20\x31\x39\x32\x2e\x37\x38\x33\x20\ \x36\x32\x2e\x35\x31\x43\x31\x38\x39\x2e\x35\x38\x33\x20\x36\x33\ \x2e\x33\x31\x20\x31\x35\x30\x2e\x33\x38\x33\x20\x33\x38\x2e\x35\ \x31\x20\x31\x34\x33\x2e\x39\x38\x33\x20\x33\x39\x2e\x33\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x63\x66\x32\x65\x62\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x31\x34\x35\x2e\x32\x39\x32\x20\x34\x31\ \x2e\x30\x35\x35\x43\x31\x33\x38\x2e\x38\x39\x32\x20\x34\x31\x2e\ \x38\x35\x35\x20\x31\x31\x32\x2e\x39\x31\x37\x20\x31\x38\x2e\x34\ \x31\x31\x20\x31\x32\x38\x2e\x34\x39\x32\x20\x34\x39\x2e\x38\x35\ \x35\x43\x31\x34\x39\x2e\x36\x39\x32\x20\x39\x32\x2e\x36\x35\x36\ \x20\x37\x30\x2e\x30\x39\x32\x20\x38\x39\x2e\x30\x35\x36\x20\x35\ \x33\x2e\x32\x39\x32\x20\x37\x37\x2e\x38\x35\x36\x43\x33\x36\x2e\ \x34\x39\x32\x20\x36\x36\x2e\x36\x35\x36\x20\x36\x30\x2e\x34\x39\ \x32\x20\x39\x36\x2e\x32\x35\x36\x20\x36\x30\x2e\x34\x39\x32\x20\ \x39\x36\x2e\x32\x35\x36\x43\x37\x38\x2e\x38\x39\x32\x20\x31\x31\ \x36\x2e\x32\x35\x36\x20\x34\x34\x2e\x34\x39\x32\x20\x39\x39\x2e\ \x34\x35\x36\x20\x34\x34\x2e\x34\x39\x32\x20\x39\x39\x2e\x34\x35\ \x36\x43\x31\x30\x2e\x30\x39\x32\x20\x38\x36\x2e\x36\x35\x36\x20\ \x2d\x31\x33\x2e\x39\x30\x38\x20\x31\x31\x32\x2e\x32\x35\x36\x20\ \x2d\x31\x37\x2e\x31\x30\x38\x20\x31\x31\x33\x2e\x30\x35\x36\x43\ \x2d\x32\x30\x2e\x33\x30\x38\x20\x31\x31\x33\x2e\x38\x35\x36\x20\ \x2d\x32\x35\x2e\x31\x30\x38\x20\x31\x31\x37\x2e\x30\x35\x36\x20\ \x2d\x32\x35\x2e\x39\x30\x38\x20\x31\x31\x30\x2e\x36\x35\x36\x43\ \x2d\x32\x36\x2e\x37\x30\x38\x20\x31\x30\x34\x2e\x32\x35\x36\x20\ \x2d\x33\x32\x2e\x39\x30\x35\x20\x38\x39\x2e\x32\x33\x32\x20\x2d\ \x36\x35\x2e\x39\x30\x38\x20\x31\x31\x33\x2e\x38\x35\x36\x43\x2d\ \x39\x38\x2e\x32\x37\x33\x20\x31\x33\x37\x2e\x39\x31\x31\x20\x2d\ \x31\x30\x38\x2e\x39\x38\x32\x20\x31\x32\x31\x2e\x33\x36\x35\x20\ \x2d\x31\x30\x38\x2e\x39\x38\x32\x20\x31\x32\x31\x2e\x33\x36\x35\ \x4c\x2d\x31\x31\x35\x2e\x37\x38\x32\x20\x31\x31\x38\x2e\x30\x35\ \x36\x43\x2d\x31\x32\x38\x2e\x35\x38\x32\x20\x39\x34\x2e\x38\x35\ \x36\x20\x2d\x31\x31\x39\x2e\x36\x35\x34\x20\x31\x35\x30\x2e\x31\ \x34\x37\x20\x2d\x31\x31\x39\x2e\x36\x35\x34\x20\x31\x35\x30\x2e\ \x31\x34\x37\x43\x2d\x31\x31\x30\x2e\x38\x35\x34\x20\x31\x38\x34\ \x2e\x35\x34\x37\x20\x32\x35\x2e\x32\x39\x32\x20\x31\x33\x33\x2e\ \x38\x35\x36\x20\x32\x35\x2e\x32\x39\x32\x20\x31\x33\x33\x2e\x38\ \x35\x36\x43\x32\x35\x2e\x32\x39\x32\x20\x31\x33\x33\x2e\x38\x35\ \x36\x20\x31\x39\x34\x2e\x30\x39\x33\x20\x31\x30\x33\x2e\x34\x35\ \x36\x20\x32\x30\x35\x2e\x32\x39\x33\x20\x39\x39\x2e\x34\x35\x36\ \x43\x32\x31\x36\x2e\x34\x39\x33\x20\x39\x35\x2e\x34\x35\x36\x20\ \x33\x30\x32\x2e\x39\x36\x35\x20\x31\x30\x31\x2e\x31\x32\x38\x20\ \x33\x30\x32\x2e\x39\x36\x35\x20\x31\x30\x31\x2e\x31\x32\x38\x4c\ \x32\x39\x38\x2e\x30\x39\x33\x20\x37\x39\x2e\x32\x33\x37\x43\x32\ \x33\x33\x2e\x32\x39\x32\x20\x33\x32\x2e\x38\x33\x37\x20\x32\x32\ \x32\x2e\x30\x39\x33\x20\x36\x31\x2e\x38\x35\x36\x20\x32\x30\x38\ \x2e\x34\x39\x33\x20\x35\x37\x2e\x38\x35\x36\x43\x31\x39\x34\x2e\ \x38\x39\x33\x20\x35\x33\x2e\x38\x35\x35\x20\x31\x39\x37\x2e\x32\ \x39\x33\x20\x36\x33\x2e\x34\x35\x36\x20\x31\x39\x34\x2e\x30\x39\ \x33\x20\x36\x34\x2e\x32\x35\x36\x43\x31\x39\x30\x2e\x38\x39\x32\ \x20\x36\x35\x2e\x30\x35\x36\x20\x31\x35\x31\x2e\x36\x39\x32\x20\ \x34\x30\x2e\x32\x35\x35\x20\x31\x34\x35\x2e\x32\x39\x32\x20\x34\ \x31\x2e\x30\x35\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x35\ \x2e\x38\x20\x31\x31\x39\x2e\x36\x30\x31\x43\x2d\x31\x32\x38\x2e\ \x36\x20\x39\x37\x2e\x36\x20\x2d\x31\x31\x39\x20\x31\x35\x33\x2e\ \x32\x30\x31\x20\x2d\x31\x31\x39\x20\x31\x35\x33\x2e\x32\x30\x31\ \x43\x2d\x31\x31\x30\x2e\x32\x20\x31\x38\x37\x2e\x36\x30\x31\x20\ \x32\x36\x2e\x36\x20\x31\x33\x35\x2e\x36\x30\x31\x20\x32\x36\x2e\ \x36\x20\x31\x33\x35\x2e\x36\x30\x31\x43\x32\x36\x2e\x36\x20\x31\ \x33\x35\x2e\x36\x30\x31\x20\x31\x39\x35\x2e\x34\x30\x31\x20\x31\ \x30\x35\x2e\x32\x20\x32\x30\x36\x2e\x36\x30\x31\x20\x31\x30\x31\ \x2e\x32\x43\x32\x31\x37\x2e\x38\x30\x31\x20\x39\x37\x2e\x32\x20\ \x33\x30\x33\x2e\x34\x30\x31\x20\x31\x30\x32\x2e\x38\x20\x33\x30\ \x33\x2e\x34\x30\x31\x20\x31\x30\x32\x2e\x38\x4c\x32\x39\x38\x2e\ \x36\x30\x31\x20\x38\x30\x2e\x34\x43\x32\x33\x33\x2e\x38\x30\x31\ \x20\x33\x34\x20\x32\x32\x33\x2e\x34\x30\x31\x20\x36\x33\x2e\x36\ \x20\x32\x30\x39\x2e\x38\x30\x31\x20\x35\x39\x2e\x36\x43\x31\x39\ \x36\x2e\x32\x30\x31\x20\x35\x35\x2e\x36\x20\x31\x39\x38\x2e\x36\ \x30\x31\x20\x36\x35\x2e\x32\x20\x31\x39\x35\x2e\x34\x30\x31\x20\ \x36\x36\x43\x31\x39\x32\x2e\x32\x30\x31\x20\x36\x36\x2e\x38\x20\ \x31\x35\x33\x2e\x30\x30\x31\x20\x34\x32\x20\x31\x34\x36\x2e\x36\ \x30\x31\x20\x34\x32\x2e\x38\x43\x31\x34\x30\x2e\x32\x30\x31\x20\ \x34\x33\x2e\x36\x20\x31\x31\x34\x2e\x39\x38\x31\x20\x31\x39\x2e\ \x37\x39\x33\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x35\x31\x2e\x36\ \x43\x31\x35\x32\x2e\x30\x32\x38\x20\x39\x39\x2e\x33\x30\x37\x20\ \x36\x39\x2e\x30\x34\x31\x20\x38\x39\x2e\x32\x32\x37\x20\x35\x34\ \x2e\x36\x20\x37\x39\x2e\x36\x43\x33\x37\x2e\x38\x20\x36\x38\x2e\ \x34\x20\x36\x31\x2e\x38\x20\x39\x38\x20\x36\x31\x2e\x38\x20\x39\ \x38\x43\x38\x30\x2e\x32\x20\x31\x31\x38\x2e\x30\x30\x31\x20\x34\ \x35\x2e\x38\x20\x31\x30\x31\x2e\x32\x20\x34\x35\x2e\x38\x20\x31\ \x30\x31\x2e\x32\x43\x31\x31\x2e\x34\x20\x38\x38\x2e\x34\x20\x2d\ \x31\x32\x2e\x36\x20\x31\x31\x34\x2e\x30\x30\x31\x20\x2d\x31\x35\ \x2e\x38\x20\x31\x31\x34\x2e\x38\x30\x31\x43\x2d\x31\x39\x20\x31\ \x31\x35\x2e\x36\x30\x31\x20\x2d\x32\x33\x2e\x38\x20\x31\x31\x38\ \x2e\x38\x30\x31\x20\x2d\x32\x34\x2e\x36\x20\x31\x31\x32\x2e\x34\ \x30\x31\x43\x2d\x32\x35\x2e\x34\x20\x31\x30\x36\x20\x2d\x33\x31\ \x2e\x34\x36\x35\x20\x39\x31\x2e\x31\x34\x34\x20\x2d\x36\x34\x2e\ \x36\x20\x31\x31\x35\x2e\x36\x30\x31\x43\x2d\x39\x38\x2e\x32\x20\ \x31\x34\x30\x2e\x34\x30\x31\x20\x2d\x31\x30\x38\x2e\x36\x20\x31\ \x32\x34\x2e\x34\x30\x31\x20\x2d\x31\x30\x38\x2e\x36\x20\x31\x32\ \x34\x2e\x34\x30\x31\x4c\x2d\x31\x31\x35\x2e\x38\x20\x31\x31\x39\ \x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x34\x2e\x32\ \x20\x31\x34\x39\x2e\x36\x30\x31\x43\x2d\x37\x34\x2e\x32\x20\x31\ \x34\x39\x2e\x36\x30\x31\x20\x2d\x38\x31\x2e\x34\x20\x31\x36\x31\ \x2e\x32\x30\x31\x20\x2d\x36\x30\x2e\x36\x20\x31\x37\x34\x2e\x34\ \x30\x31\x43\x2d\x36\x30\x2e\x36\x20\x31\x37\x34\x2e\x34\x30\x31\ \x20\x2d\x35\x39\x2e\x32\x20\x31\x37\x35\x2e\x38\x30\x31\x20\x2d\ \x37\x37\x2e\x32\x20\x31\x37\x31\x2e\x36\x30\x31\x43\x2d\x37\x37\ \x2e\x32\x20\x31\x37\x31\x2e\x36\x30\x31\x20\x2d\x38\x33\x2e\x34\ \x20\x31\x36\x39\x2e\x36\x30\x31\x20\x2d\x38\x35\x20\x31\x35\x39\ \x2e\x32\x30\x31\x43\x2d\x38\x35\x20\x31\x35\x39\x2e\x32\x30\x31\ \x20\x2d\x38\x39\x2e\x38\x20\x31\x35\x34\x2e\x38\x30\x31\x20\x2d\ \x39\x34\x2e\x36\x20\x31\x34\x39\x2e\x32\x30\x31\x43\x2d\x39\x39\ \x2e\x34\x20\x31\x34\x33\x2e\x36\x30\x31\x20\x2d\x37\x34\x2e\x32\ \x20\x31\x34\x39\x2e\x36\x30\x31\x20\x2d\x37\x34\x2e\x32\x20\x31\ \x34\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x35\x2e\ \x38\x20\x31\x30\x32\x43\x36\x35\x2e\x38\x20\x31\x30\x32\x20\x38\ \x33\x2e\x34\x39\x38\x20\x31\x32\x38\x2e\x38\x32\x31\x20\x38\x32\ \x2e\x39\x20\x31\x33\x33\x2e\x36\x30\x31\x43\x38\x31\x2e\x36\x20\ \x31\x34\x34\x2e\x30\x30\x31\x20\x38\x31\x2e\x34\x20\x31\x35\x33\ \x2e\x36\x30\x31\x20\x38\x34\x2e\x36\x20\x31\x35\x37\x2e\x36\x30\ \x31\x43\x38\x37\x2e\x38\x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\ \x20\x39\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\x38\x30\x31\x20\ \x39\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\x38\x30\x31\x43\x39\ \x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\x38\x30\x31\x20\x39\x36\ \x2e\x32\x30\x31\x20\x31\x39\x36\x2e\x30\x30\x31\x20\x31\x30\x38\ \x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x43\x31\x30\x38\ \x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x20\x31\x32\x30\ \x2e\x32\x30\x31\x20\x31\x34\x32\x2e\x30\x30\x31\x20\x31\x30\x30\ \x2e\x32\x30\x31\x20\x31\x32\x33\x2e\x36\x30\x31\x43\x31\x30\x30\ \x2e\x32\x30\x31\x20\x31\x32\x33\x2e\x36\x30\x31\x20\x36\x35\x20\ \x39\x34\x2e\x38\x20\x36\x35\x2e\x38\x20\x31\x30\x32\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\x34\x30\ \x31\x43\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\x34\x30\x31\x20\ \x2d\x34\x33\x20\x31\x38\x33\x2e\x36\x30\x31\x20\x2d\x35\x37\x2e\ \x34\x20\x32\x31\x34\x2e\x38\x30\x31\x4c\x2d\x35\x31\x20\x32\x31\ \x32\x2e\x34\x30\x31\x43\x2d\x35\x31\x20\x32\x31\x32\x2e\x34\x30\ \x31\x20\x2d\x35\x31\x2e\x38\x20\x32\x32\x33\x2e\x36\x30\x31\x20\ \x2d\x35\x35\x20\x32\x32\x36\x2e\x30\x30\x31\x4c\x2d\x34\x37\x2e\ \x38\x20\x32\x32\x32\x2e\x38\x30\x31\x43\x2d\x34\x37\x2e\x38\x20\ \x32\x32\x32\x2e\x38\x30\x31\x20\x2d\x34\x33\x20\x32\x33\x30\x2e\ \x38\x30\x31\x20\x2d\x34\x37\x20\x32\x33\x35\x2e\x36\x30\x31\x43\ \x2d\x34\x37\x20\x32\x33\x35\x2e\x36\x30\x31\x20\x2d\x33\x30\x2e\ \x32\x20\x32\x34\x33\x2e\x36\x30\x31\x20\x2d\x33\x31\x20\x32\x35\ \x30\x2e\x30\x30\x31\x43\x2d\x33\x31\x20\x32\x35\x30\x2e\x30\x30\ \x31\x20\x2d\x32\x34\x2e\x36\x20\x32\x34\x32\x2e\x30\x30\x31\x20\ \x2d\x32\x38\x2e\x36\x20\x32\x33\x35\x2e\x36\x30\x31\x43\x2d\x33\ \x32\x2e\x36\x20\x32\x32\x39\x2e\x32\x30\x31\x20\x2d\x33\x39\x2e\ \x38\x20\x32\x33\x33\x2e\x32\x30\x31\x20\x2d\x33\x39\x20\x32\x31\ \x34\x2e\x38\x30\x31\x4c\x2d\x34\x37\x2e\x38\x20\x32\x31\x38\x2e\ \x30\x30\x31\x43\x2d\x34\x37\x2e\x38\x20\x32\x31\x38\x2e\x30\x30\ \x31\x20\x2d\x34\x32\x2e\x32\x20\x32\x30\x39\x2e\x32\x30\x31\x20\ \x2d\x34\x32\x2e\x32\x20\x32\x30\x32\x2e\x38\x30\x31\x4c\x2d\x35\ \x30\x2e\x32\x20\x32\x30\x35\x2e\x32\x30\x31\x43\x2d\x35\x30\x2e\ \x32\x20\x32\x30\x35\x2e\x32\x30\x31\x20\x2d\x33\x34\x2e\x37\x33\ \x31\x20\x31\x37\x38\x2e\x36\x32\x33\x20\x2d\x34\x35\x2e\x34\x20\ \x31\x37\x37\x2e\x32\x30\x31\x43\x2d\x35\x31\x2e\x34\x20\x31\x37\ \x36\x2e\x34\x30\x31\x20\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\ \x34\x30\x31\x20\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\x34\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x31\x2e\x38\x20\x31\x39\ \x33\x2e\x32\x30\x31\x43\x2d\x32\x31\x2e\x38\x20\x31\x39\x33\x2e\ \x32\x30\x31\x20\x2d\x31\x39\x20\x31\x38\x38\x2e\x38\x30\x31\x20\ \x2d\x32\x31\x2e\x38\x20\x31\x38\x39\x2e\x36\x30\x31\x43\x2d\x32\ \x34\x2e\x36\x20\x31\x39\x30\x2e\x34\x30\x31\x20\x2d\x35\x35\x2e\ \x38\x20\x32\x30\x35\x2e\x32\x30\x31\x20\x2d\x36\x31\x2e\x38\x20\ \x32\x31\x34\x2e\x38\x30\x31\x43\x2d\x36\x31\x2e\x38\x20\x32\x31\ \x34\x2e\x38\x30\x31\x20\x2d\x32\x37\x2e\x34\x20\x31\x39\x30\x2e\ \x34\x30\x31\x20\x2d\x32\x31\x2e\x38\x20\x31\x39\x33\x2e\x32\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x2e\x34\x20\x32\x30\ \x31\x2e\x32\x30\x31\x43\x2d\x31\x31\x2e\x34\x20\x32\x30\x31\x2e\ \x32\x30\x31\x20\x2d\x38\x2e\x36\x20\x31\x39\x36\x2e\x38\x30\x31\ \x20\x2d\x31\x31\x2e\x34\x20\x31\x39\x37\x2e\x36\x30\x31\x43\x2d\ \x31\x34\x2e\x32\x20\x31\x39\x38\x2e\x34\x30\x31\x20\x2d\x34\x35\ \x2e\x34\x20\x32\x31\x33\x2e\x32\x30\x31\x20\x2d\x35\x31\x2e\x34\ \x20\x32\x32\x32\x2e\x38\x30\x31\x43\x2d\x35\x31\x2e\x34\x20\x32\ \x32\x32\x2e\x38\x30\x31\x20\x2d\x31\x37\x20\x31\x39\x38\x2e\x34\ \x30\x31\x20\x2d\x31\x31\x2e\x34\x20\x32\x30\x31\x2e\x32\x30\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x38\x20\x31\x38\x36\x2e\x30\ \x30\x31\x43\x31\x2e\x38\x20\x31\x38\x36\x2e\x30\x30\x31\x20\x34\ \x2e\x36\x20\x31\x38\x31\x2e\x36\x30\x31\x20\x31\x2e\x38\x20\x31\ \x38\x32\x2e\x34\x30\x31\x43\x2d\x31\x20\x31\x38\x33\x2e\x32\x30\ \x31\x20\x2d\x33\x32\x2e\x32\x20\x31\x39\x38\x2e\x30\x30\x31\x20\ \x2d\x33\x38\x2e\x32\x20\x32\x30\x37\x2e\x36\x30\x31\x43\x2d\x33\ \x38\x2e\x32\x20\x32\x30\x37\x2e\x36\x30\x31\x20\x2d\x33\x2e\x38\ \x20\x31\x38\x33\x2e\x32\x30\x31\x20\x31\x2e\x38\x20\x31\x38\x36\ \x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x31\x2e\x34\ \x20\x32\x32\x39\x2e\x36\x30\x31\x43\x2d\x32\x31\x2e\x34\x20\x32\ \x32\x39\x2e\x36\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\x32\x32\x33\ \x2e\x36\x30\x31\x20\x2d\x32\x34\x2e\x32\x20\x32\x32\x34\x2e\x34\ \x30\x31\x43\x2d\x32\x37\x20\x32\x32\x35\x2e\x32\x30\x31\x20\x2d\ \x36\x33\x20\x32\x34\x32\x2e\x38\x30\x31\x20\x2d\x36\x39\x20\x32\ \x35\x32\x2e\x34\x30\x31\x43\x2d\x36\x39\x20\x32\x35\x32\x2e\x34\ \x30\x31\x20\x2d\x32\x37\x20\x32\x32\x36\x2e\x38\x30\x31\x20\x2d\ \x32\x31\x2e\x34\x20\x32\x32\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x32\x30\x2e\x32\x20\x32\x31\x38\x2e\x38\x30\x31\ \x43\x2d\x32\x30\x2e\x32\x20\x32\x31\x38\x2e\x38\x30\x31\x20\x2d\ \x31\x39\x20\x32\x31\x34\x2e\x30\x30\x31\x20\x2d\x32\x31\x2e\x38\ \x20\x32\x31\x34\x2e\x38\x30\x31\x43\x2d\x32\x33\x2e\x38\x20\x32\ \x31\x34\x2e\x38\x30\x31\x20\x2d\x35\x30\x2e\x32\x20\x32\x32\x36\ \x2e\x34\x30\x31\x20\x2d\x35\x36\x2e\x32\x20\x32\x33\x36\x2e\x30\ \x30\x31\x43\x2d\x35\x36\x2e\x32\x20\x32\x33\x36\x2e\x30\x30\x31\ \x20\x2d\x32\x36\x2e\x36\x20\x32\x31\x34\x2e\x34\x30\x31\x20\x2d\ \x32\x30\x2e\x32\x20\x32\x31\x38\x2e\x38\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x34\x2e\x36\x20\x32\x36\x36\x2e\x34\x30\x31\ \x4c\x2d\x34\x34\x2e\x36\x20\x32\x37\x34\x2e\x30\x30\x31\x43\x2d\ \x34\x34\x2e\x36\x20\x32\x37\x34\x2e\x30\x30\x31\x20\x2d\x33\x34\ \x2e\x32\x20\x32\x36\x36\x2e\x34\x30\x31\x20\x2d\x33\x30\x2e\x36\ \x20\x32\x36\x37\x2e\x36\x30\x31\x43\x2d\x33\x30\x2e\x36\x20\x32\ \x36\x37\x2e\x36\x30\x31\x20\x2d\x33\x37\x2e\x34\x20\x32\x37\x38\ \x2e\x38\x30\x31\x20\x2d\x33\x38\x2e\x32\x20\x32\x38\x34\x2e\x30\ \x30\x31\x43\x2d\x33\x38\x2e\x32\x20\x32\x38\x34\x2e\x30\x30\x31\ \x20\x2d\x32\x37\x2e\x38\x20\x32\x37\x31\x2e\x32\x30\x31\x20\x2d\ \x32\x32\x2e\x32\x20\x32\x37\x31\x2e\x36\x30\x31\x43\x2d\x32\x32\ \x2e\x32\x20\x32\x37\x31\x2e\x36\x30\x31\x20\x2d\x31\x34\x2e\x36\ \x20\x32\x37\x32\x2e\x30\x30\x31\x20\x2d\x31\x34\x2e\x36\x20\x32\ \x38\x32\x2e\x38\x30\x31\x43\x2d\x31\x34\x2e\x36\x20\x32\x38\x32\ \x2e\x38\x30\x31\x20\x2d\x39\x20\x32\x37\x32\x2e\x34\x30\x31\x20\ \x2d\x35\x2e\x38\x20\x32\x37\x32\x2e\x38\x30\x31\x43\x2d\x35\x2e\ \x38\x20\x32\x37\x32\x2e\x38\x30\x31\x20\x2d\x34\x2e\x36\x20\x32\ \x37\x39\x2e\x32\x30\x31\x20\x2d\x35\x2e\x38\x20\x32\x38\x36\x2e\ \x30\x30\x31\x43\x2d\x35\x2e\x38\x20\x32\x38\x36\x2e\x30\x30\x31\ \x20\x2d\x31\x2e\x38\x20\x32\x37\x38\x2e\x34\x30\x31\x20\x32\x2e\ \x32\x20\x32\x38\x30\x2e\x30\x30\x31\x43\x32\x2e\x32\x20\x32\x38\ \x30\x2e\x30\x30\x31\x20\x38\x2e\x36\x20\x32\x37\x38\x2e\x30\x30\ \x31\x20\x37\x2e\x38\x20\x32\x38\x39\x2e\x36\x30\x31\x43\x37\x2e\ \x38\x20\x32\x38\x39\x2e\x36\x30\x31\x20\x37\x2e\x38\x20\x33\x30\ \x30\x2e\x30\x30\x31\x20\x37\x20\x33\x30\x32\x2e\x38\x30\x31\x43\ \x37\x20\x33\x30\x32\x2e\x38\x30\x31\x20\x31\x32\x2e\x36\x20\x32\ \x37\x36\x2e\x34\x30\x31\x20\x31\x35\x20\x32\x37\x36\x2e\x30\x30\ \x31\x43\x31\x35\x20\x32\x37\x36\x2e\x30\x30\x31\x20\x32\x33\x20\ \x32\x37\x34\x2e\x38\x30\x31\x20\x32\x37\x2e\x38\x20\x32\x38\x33\ \x2e\x36\x30\x31\x43\x32\x37\x2e\x38\x20\x32\x38\x33\x2e\x36\x30\ \x31\x20\x32\x33\x2e\x38\x20\x32\x37\x36\x2e\x30\x30\x31\x20\x32\ \x38\x2e\x36\x20\x32\x37\x38\x2e\x30\x30\x31\x43\x32\x38\x2e\x36\ \x20\x32\x37\x38\x2e\x30\x30\x31\x20\x33\x39\x2e\x34\x20\x32\x37\ \x39\x2e\x36\x30\x31\x20\x34\x32\x2e\x36\x20\x32\x38\x36\x2e\x34\ \x30\x31\x43\x34\x32\x2e\x36\x20\x32\x38\x36\x2e\x34\x30\x31\x20\ \x33\x35\x2e\x38\x20\x32\x37\x34\x2e\x34\x30\x31\x20\x34\x31\x2e\ \x34\x20\x32\x37\x37\x2e\x36\x30\x31\x43\x34\x31\x2e\x34\x20\x32\ \x37\x37\x2e\x36\x30\x31\x20\x34\x38\x2e\x32\x20\x32\x37\x37\x2e\ \x36\x30\x31\x20\x34\x39\x2e\x34\x20\x32\x38\x34\x2e\x30\x30\x31\ \x43\x34\x39\x2e\x34\x20\x32\x38\x34\x2e\x30\x30\x31\x20\x35\x37\ \x2e\x38\x20\x33\x30\x35\x2e\x32\x30\x31\x20\x35\x39\x2e\x38\x20\ \x33\x30\x36\x2e\x38\x30\x31\x43\x35\x39\x2e\x38\x20\x33\x30\x36\ \x2e\x38\x30\x31\x20\x35\x32\x2e\x32\x20\x32\x38\x35\x2e\x32\x30\ \x31\x20\x35\x33\x2e\x38\x20\x32\x38\x35\x2e\x32\x30\x31\x43\x35\ \x33\x2e\x38\x20\x32\x38\x35\x2e\x32\x30\x31\x20\x35\x31\x2e\x38\ \x20\x32\x37\x33\x2e\x32\x30\x31\x20\x35\x37\x20\x32\x38\x38\x2e\ \x30\x30\x31\x43\x35\x37\x20\x32\x38\x38\x2e\x30\x30\x31\x20\x35\ \x33\x2e\x38\x20\x32\x37\x34\x2e\x30\x30\x31\x20\x35\x39\x2e\x34\ \x20\x32\x37\x34\x2e\x38\x30\x31\x43\x36\x35\x20\x32\x37\x35\x2e\ \x36\x30\x31\x20\x36\x39\x2e\x34\x20\x32\x38\x35\x2e\x36\x30\x31\ \x20\x37\x37\x2e\x38\x20\x32\x38\x33\x2e\x32\x30\x31\x43\x37\x37\ \x2e\x38\x20\x32\x38\x33\x2e\x32\x30\x31\x20\x38\x37\x2e\x34\x30\ \x31\x20\x32\x38\x38\x2e\x38\x30\x31\x20\x38\x39\x2e\x34\x30\x31\ \x20\x32\x31\x39\x2e\x36\x30\x31\x4c\x2d\x33\x34\x2e\x36\x20\x32\ \x36\x36\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x39\ \x2e\x38\x20\x31\x37\x33\x2e\x36\x30\x31\x43\x2d\x32\x39\x2e\x38\ \x20\x31\x37\x33\x2e\x36\x30\x31\x20\x2d\x31\x35\x20\x31\x36\x37\ \x2e\x36\x30\x31\x20\x32\x35\x20\x31\x37\x33\x2e\x36\x30\x31\x43\ \x32\x35\x20\x31\x37\x33\x2e\x36\x30\x31\x20\x33\x32\x2e\x32\x20\ \x31\x37\x34\x2e\x30\x30\x31\x20\x33\x39\x20\x31\x36\x35\x2e\x32\ \x30\x31\x43\x34\x35\x2e\x38\x20\x31\x35\x36\x2e\x34\x30\x31\x20\ \x37\x32\x2e\x36\x20\x31\x34\x39\x2e\x32\x30\x31\x20\x37\x39\x20\ \x31\x35\x31\x2e\x32\x30\x31\x4c\x38\x38\x2e\x36\x30\x31\x20\x31\ \x35\x37\x2e\x36\x30\x31\x4c\x38\x39\x2e\x34\x30\x31\x20\x31\x35\ \x38\x2e\x38\x30\x31\x43\x38\x39\x2e\x34\x30\x31\x20\x31\x35\x38\ \x2e\x38\x30\x31\x20\x31\x30\x31\x2e\x38\x30\x31\x20\x31\x36\x39\ \x2e\x32\x30\x31\x20\x31\x30\x32\x2e\x32\x30\x31\x20\x31\x37\x36\ \x2e\x38\x30\x31\x43\x31\x30\x32\x2e\x36\x30\x31\x20\x31\x38\x34\ \x2e\x34\x30\x31\x20\x38\x37\x2e\x38\x30\x31\x20\x32\x33\x32\x2e\ \x34\x30\x31\x20\x37\x38\x2e\x32\x20\x32\x34\x38\x2e\x34\x30\x31\ \x43\x36\x38\x2e\x36\x20\x32\x36\x34\x2e\x34\x30\x31\x20\x35\x39\ \x20\x32\x37\x36\x2e\x38\x30\x31\x20\x33\x39\x2e\x38\x20\x32\x37\ \x34\x2e\x34\x30\x31\x43\x33\x39\x2e\x38\x20\x32\x37\x34\x2e\x34\ \x30\x31\x20\x31\x39\x20\x32\x37\x30\x2e\x34\x30\x31\x20\x2d\x36\ \x2e\x36\x20\x32\x37\x34\x2e\x34\x30\x31\x43\x2d\x36\x2e\x36\x20\ \x32\x37\x34\x2e\x34\x30\x31\x20\x2d\x33\x35\x2e\x38\x20\x32\x37\ \x32\x2e\x38\x30\x31\x20\x2d\x33\x38\x2e\x36\x20\x32\x36\x34\x2e\ \x38\x30\x31\x43\x2d\x34\x31\x2e\x34\x20\x32\x35\x36\x2e\x38\x30\ \x31\x20\x2d\x32\x37\x2e\x34\x20\x32\x34\x31\x2e\x36\x30\x31\x20\ \x2d\x32\x37\x2e\x34\x20\x32\x34\x31\x2e\x36\x30\x31\x43\x2d\x32\ \x37\x2e\x34\x20\x32\x34\x31\x2e\x36\x30\x31\x20\x2d\x32\x33\x20\ \x32\x33\x33\x2e\x32\x30\x31\x20\x2d\x32\x34\x2e\x32\x20\x32\x31\ \x38\x2e\x38\x30\x31\x43\x2d\x32\x35\x2e\x34\x20\x32\x30\x34\x2e\ \x34\x30\x31\x20\x2d\x32\x35\x20\x31\x37\x36\x2e\x34\x30\x31\x20\ \x2d\x32\x39\x2e\x38\x20\x31\x37\x33\x2e\x36\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x65\x35\x36\x36\x38\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x37\x2e\x38\x20\x31\x37\x35\x2e\x36\x30\x31\ \x43\x30\x2e\x36\x20\x31\x39\x34\x2e\x30\x30\x31\x20\x2d\x32\x39\ \x20\x32\x35\x39\x2e\x32\x30\x31\x20\x2d\x32\x39\x20\x32\x35\x39\ \x2e\x32\x30\x31\x43\x2d\x33\x31\x20\x32\x36\x30\x2e\x38\x30\x31\ \x20\x2d\x31\x36\x2e\x33\x34\x20\x32\x36\x36\x2e\x38\x34\x36\x20\ \x2d\x36\x2e\x32\x20\x32\x36\x34\x2e\x34\x30\x31\x43\x34\x2e\x37\ \x34\x36\x20\x32\x36\x31\x2e\x37\x36\x33\x20\x34\x35\x20\x32\x36\ \x36\x2e\x30\x30\x31\x20\x34\x35\x20\x32\x36\x36\x2e\x30\x30\x31\ \x43\x36\x38\x2e\x36\x20\x32\x35\x30\x2e\x34\x30\x31\x20\x38\x31\ \x2e\x34\x20\x32\x30\x36\x2e\x30\x30\x31\x20\x38\x31\x2e\x34\x20\ \x32\x30\x36\x2e\x30\x30\x31\x43\x38\x31\x2e\x34\x20\x32\x30\x36\ \x2e\x30\x30\x31\x20\x39\x31\x2e\x38\x30\x31\x20\x31\x38\x32\x2e\ \x30\x30\x31\x20\x37\x34\x2e\x32\x20\x31\x37\x38\x2e\x38\x30\x31\ \x43\x35\x36\x2e\x36\x20\x31\x37\x35\x2e\x36\x30\x31\x20\x2d\x37\ \x2e\x38\x20\x31\x37\x35\x2e\x36\x30\x31\x20\x2d\x37\x2e\x38\x20\ \x31\x37\x35\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x62\x32\x33\x32\x35\x39\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\ \x2e\x38\x33\x31\x20\x32\x30\x36\x2e\x34\x39\x37\x43\x2d\x36\x2e\ \x35\x30\x35\x20\x31\x39\x33\x2e\x37\x30\x37\x20\x2d\x34\x2e\x39\ \x32\x31\x20\x31\x38\x31\x2e\x39\x30\x36\x20\x2d\x37\x2e\x38\x20\ \x31\x37\x35\x2e\x36\x30\x31\x43\x2d\x37\x2e\x38\x20\x31\x37\x35\ \x2e\x36\x30\x31\x20\x35\x34\x2e\x36\x20\x31\x38\x32\x2e\x30\x30\ \x31\x20\x36\x35\x2e\x38\x20\x31\x36\x31\x2e\x32\x30\x31\x43\x37\ \x30\x2e\x30\x34\x31\x20\x31\x35\x33\x2e\x33\x32\x36\x20\x38\x34\ \x2e\x38\x30\x31\x20\x31\x38\x34\x2e\x30\x30\x31\x20\x38\x34\x2e\ \x34\x20\x31\x39\x33\x2e\x36\x30\x31\x43\x38\x34\x2e\x34\x20\x31\ \x39\x33\x2e\x36\x30\x31\x20\x32\x31\x2e\x34\x20\x32\x30\x38\x2e\ \x30\x30\x31\x20\x36\x2e\x36\x20\x31\x39\x36\x2e\x38\x30\x31\x4c\ \x2d\x39\x2e\x38\x33\x31\x20\x32\x30\x36\x2e\x34\x39\x37\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x61\x35\x32\x36\x34\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x35\x2e\x34\x20\x32\x32\x32\x2e\x38\x30\ \x31\x43\x2d\x35\x2e\x34\x20\x32\x32\x32\x2e\x38\x30\x31\x20\x2d\ \x33\x2e\x34\x20\x32\x33\x30\x2e\x30\x30\x31\x20\x2d\x35\x2e\x38\ \x20\x32\x33\x34\x2e\x30\x30\x31\x43\x2d\x35\x2e\x38\x20\x32\x33\ \x34\x2e\x30\x30\x31\x20\x2d\x37\x2e\x34\x20\x32\x33\x34\x2e\x38\ \x30\x31\x20\x2d\x38\x2e\x36\x20\x32\x33\x35\x2e\x32\x30\x31\x43\ \x2d\x38\x2e\x36\x20\x32\x33\x35\x2e\x32\x30\x31\x20\x2d\x37\x2e\ \x34\x20\x32\x33\x38\x2e\x38\x30\x31\x20\x2d\x31\x2e\x34\x20\x32\ \x34\x30\x2e\x34\x30\x31\x43\x2d\x31\x2e\x34\x20\x32\x34\x30\x2e\ \x34\x30\x31\x20\x30\x2e\x36\x20\x32\x34\x34\x2e\x38\x30\x31\x20\ \x33\x20\x32\x34\x35\x2e\x32\x30\x31\x43\x35\x2e\x34\x20\x32\x34\ \x35\x2e\x36\x30\x31\x20\x31\x30\x2e\x32\x20\x32\x35\x31\x2e\x32\ \x30\x31\x20\x31\x34\x2e\x32\x20\x32\x35\x30\x2e\x30\x30\x31\x43\ \x31\x38\x2e\x32\x20\x32\x34\x38\x2e\x38\x30\x31\x20\x32\x39\x2e\ \x34\x20\x32\x34\x34\x2e\x38\x30\x31\x20\x32\x39\x2e\x34\x20\x32\ \x34\x34\x2e\x38\x30\x31\x43\x32\x39\x2e\x34\x20\x32\x34\x34\x2e\ \x38\x30\x31\x20\x33\x35\x20\x32\x34\x31\x2e\x36\x30\x31\x20\x34\ \x33\x2e\x38\x20\x32\x34\x35\x2e\x32\x30\x31\x43\x34\x33\x2e\x38\ \x20\x32\x34\x35\x2e\x32\x30\x31\x20\x34\x36\x2e\x31\x37\x35\x20\ \x32\x34\x34\x2e\x33\x39\x39\x20\x34\x36\x2e\x36\x20\x32\x34\x30\ \x2e\x34\x30\x31\x43\x34\x37\x2e\x31\x20\x32\x33\x35\x2e\x37\x30\ \x31\x20\x35\x30\x2e\x32\x20\x32\x33\x32\x2e\x30\x30\x31\x20\x35\ \x32\x2e\x32\x20\x32\x33\x30\x2e\x30\x30\x31\x43\x35\x34\x2e\x32\ \x20\x32\x32\x38\x2e\x30\x30\x31\x20\x36\x33\x2e\x38\x20\x32\x31\ \x35\x2e\x32\x30\x31\x20\x36\x32\x2e\x36\x20\x32\x31\x34\x2e\x38\ \x30\x31\x43\x36\x31\x2e\x34\x20\x32\x31\x34\x2e\x34\x30\x31\x20\ \x2d\x35\x2e\x34\x20\x32\x32\x32\x2e\x38\x30\x31\x20\x2d\x35\x2e\ \x34\x20\x32\x32\x32\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x37\x32\ \x37\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x39\x2e\x38\x20\x31\x37\x34\x2e\x34\x30\x31\ \x43\x2d\x39\x2e\x38\x20\x31\x37\x34\x2e\x34\x30\x31\x20\x2d\x31\ \x32\x2e\x36\x20\x31\x39\x36\x2e\x38\x30\x31\x20\x2d\x39\x2e\x34\ \x20\x32\x30\x35\x2e\x32\x30\x31\x43\x2d\x36\x2e\x32\x20\x32\x31\ \x33\x2e\x36\x30\x31\x20\x2d\x37\x20\x32\x31\x35\x2e\x36\x30\x31\ \x20\x2d\x37\x2e\x38\x20\x32\x31\x39\x2e\x36\x30\x31\x43\x2d\x38\ \x2e\x36\x20\x32\x32\x33\x2e\x36\x30\x31\x20\x2d\x34\x2e\x32\x20\ \x32\x33\x33\x2e\x36\x30\x31\x20\x31\x2e\x34\x20\x32\x33\x39\x2e\ \x36\x30\x31\x4c\x31\x33\x2e\x34\x20\x32\x34\x31\x2e\x32\x30\x31\ \x43\x31\x33\x2e\x34\x20\x32\x34\x31\x2e\x32\x30\x31\x20\x32\x38\ \x2e\x36\x20\x32\x33\x37\x2e\x36\x30\x31\x20\x33\x37\x2e\x38\x20\ \x32\x34\x30\x2e\x34\x30\x31\x43\x33\x37\x2e\x38\x20\x32\x34\x30\ \x2e\x34\x30\x31\x20\x34\x36\x2e\x37\x39\x34\x20\x32\x34\x31\x2e\ \x37\x34\x34\x20\x35\x30\x2e\x32\x20\x32\x32\x36\x2e\x38\x30\x31\ \x43\x35\x30\x2e\x32\x20\x32\x32\x36\x2e\x38\x30\x31\x20\x35\x35\ \x20\x32\x32\x30\x2e\x34\x30\x31\x20\x36\x32\x2e\x32\x20\x32\x31\ \x37\x2e\x36\x30\x31\x43\x36\x39\x2e\x34\x20\x32\x31\x34\x2e\x38\ \x30\x31\x20\x37\x36\x2e\x36\x20\x31\x37\x33\x2e\x32\x30\x31\x20\ \x37\x32\x2e\x36\x20\x31\x36\x35\x2e\x32\x30\x31\x43\x36\x38\x2e\ \x36\x20\x31\x35\x37\x2e\x32\x30\x31\x20\x35\x34\x2e\x32\x20\x31\ \x35\x32\x2e\x38\x30\x31\x20\x33\x38\x2e\x32\x20\x31\x36\x38\x2e\ \x34\x30\x31\x43\x32\x32\x2e\x32\x20\x31\x38\x34\x2e\x30\x30\x31\ \x20\x32\x30\x2e\x32\x20\x31\x36\x37\x2e\x32\x30\x31\x20\x2d\x39\ \x2e\x38\x20\x31\x37\x34\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x38\x2e\x32\x20\x32\x34\x39\x2e\x32\x30\x31\x43\x2d\ \x38\x2e\x32\x20\x32\x34\x39\x2e\x32\x30\x31\x20\x2d\x39\x20\x32\ \x34\x37\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x34\x20\x32\x34\x36\ \x2e\x38\x30\x31\x43\x2d\x31\x33\x2e\x34\x20\x32\x34\x36\x2e\x38\ \x30\x31\x20\x2d\x33\x35\x2e\x38\x20\x32\x34\x33\x2e\x32\x30\x31\ \x20\x2d\x34\x34\x2e\x32\x20\x32\x33\x30\x2e\x38\x30\x31\x43\x2d\ \x34\x34\x2e\x32\x20\x32\x33\x30\x2e\x38\x30\x31\x20\x2d\x35\x31\ \x20\x32\x32\x35\x2e\x32\x30\x31\x20\x2d\x34\x36\x2e\x36\x20\x32\ \x33\x36\x2e\x38\x30\x31\x43\x2d\x34\x36\x2e\x36\x20\x32\x33\x36\ \x2e\x38\x30\x31\x20\x2d\x33\x36\x2e\x32\x20\x32\x35\x37\x2e\x32\ \x30\x31\x20\x2d\x32\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\ \x43\x2d\x32\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\x20\x2d\ \x31\x33\x20\x32\x36\x34\x2e\x30\x30\x31\x20\x2d\x38\x2e\x32\x20\ \x32\x34\x39\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x33\x66\x34\x63\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x37\x31\ \x2e\x37\x34\x32\x20\x31\x38\x35\x2e\x32\x32\x39\x43\x37\x32\x2e\ \x34\x30\x31\x20\x31\x37\x37\x2e\x33\x32\x33\x20\x37\x34\x2e\x33\ \x35\x34\x20\x31\x36\x38\x2e\x37\x30\x39\x20\x37\x32\x2e\x36\x20\ \x31\x36\x35\x2e\x32\x30\x31\x43\x36\x36\x2e\x31\x35\x34\x20\x31\ \x35\x32\x2e\x33\x30\x37\x20\x34\x39\x2e\x31\x38\x31\x20\x31\x35\ \x37\x2e\x36\x39\x35\x20\x33\x38\x2e\x32\x20\x31\x36\x38\x2e\x34\ \x30\x31\x43\x32\x32\x2e\x32\x20\x31\x38\x34\x2e\x30\x30\x31\x20\ \x32\x30\x2e\x32\x20\x31\x36\x37\x2e\x32\x30\x31\x20\x2d\x39\x2e\ \x38\x20\x31\x37\x34\x2e\x34\x30\x31\x43\x2d\x39\x2e\x38\x20\x31\ \x37\x34\x2e\x34\x30\x31\x20\x2d\x31\x31\x2e\x35\x34\x35\x20\x31\ \x38\x38\x2e\x33\x36\x34\x20\x2d\x31\x30\x2e\x37\x30\x35\x20\x31\ \x39\x38\x2e\x33\x37\x36\x43\x2d\x31\x30\x2e\x37\x30\x35\x20\x31\ \x39\x38\x2e\x33\x37\x36\x20\x32\x36\x2e\x36\x20\x31\x38\x36\x2e\ \x38\x30\x31\x20\x32\x37\x2e\x34\x20\x31\x39\x32\x2e\x34\x30\x31\ \x43\x32\x37\x2e\x34\x20\x31\x39\x32\x2e\x34\x30\x31\x20\x32\x39\ \x20\x31\x38\x39\x2e\x32\x30\x31\x20\x33\x38\x2e\x32\x20\x31\x38\ \x39\x2e\x32\x30\x31\x43\x34\x37\x2e\x34\x20\x31\x38\x39\x2e\x32\ \x30\x31\x20\x37\x30\x2e\x31\x34\x32\x20\x31\x38\x38\x2e\x30\x32\ \x39\x20\x37\x31\x2e\x37\x34\x32\x20\x31\x38\x35\x2e\x32\x32\x39\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\ \x22\x3a\x22\x23\x61\x35\x31\x39\x32\x36\x22\x2c\x20\x22\x77\x69\ \x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x32\x38\x2e\x36\x20\x31\x37\x35\x2e\x32\x30\x31\x43\ \x32\x38\x2e\x36\x20\x31\x37\x35\x2e\x32\x30\x31\x20\x33\x33\x2e\ \x34\x20\x31\x38\x30\x2e\x30\x30\x31\x20\x32\x39\x2e\x38\x20\x31\ \x38\x39\x2e\x36\x30\x31\x43\x32\x39\x2e\x38\x20\x31\x38\x39\x2e\ \x36\x30\x31\x20\x31\x35\x2e\x34\x20\x32\x30\x35\x2e\x36\x30\x31\ \x20\x31\x37\x2e\x34\x20\x32\x31\x39\x2e\x36\x30\x31\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x31\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\ \x31\x43\x2d\x31\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\x20\ \x2d\x32\x33\x2e\x38\x20\x32\x34\x37\x2e\x32\x30\x31\x20\x2d\x31\ \x35\x20\x32\x35\x34\x2e\x30\x30\x31\x43\x2d\x31\x35\x20\x32\x35\ \x34\x2e\x30\x30\x31\x20\x2d\x31\x30\x2e\x32\x20\x32\x35\x36\x2e\ \x30\x30\x31\x20\x2d\x31\x31\x2e\x34\x20\x32\x35\x37\x2e\x36\x30\ \x31\x43\x2d\x31\x32\x2e\x36\x20\x32\x35\x39\x2e\x32\x30\x31\x20\ \x2d\x31\x38\x2e\x32\x20\x32\x36\x33\x2e\x32\x30\x31\x20\x2d\x31\ \x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x31\x34\x2e\x33\x36\x20\x32\x36\x31\x2e\x32\x30\ \x31\x43\x2d\x31\x34\x2e\x33\x36\x20\x32\x36\x31\x2e\x32\x30\x31\ \x20\x2d\x31\x37\x2e\x38\x38\x20\x32\x35\x30\x2e\x39\x36\x31\x20\ \x2d\x31\x30\x2e\x38\x34\x20\x32\x35\x36\x2e\x34\x30\x31\x43\x2d\ \x31\x30\x2e\x38\x34\x20\x32\x35\x36\x2e\x34\x30\x31\x20\x2d\x36\ \x2e\x34\x31\x39\x20\x32\x35\x38\x2e\x38\x34\x39\x20\x2d\x37\x2e\ \x39\x36\x20\x32\x35\x39\x2e\x32\x38\x31\x43\x2d\x31\x32\x2e\x35\ \x32\x20\x32\x36\x30\x2e\x35\x36\x31\x20\x2d\x37\x2e\x39\x36\x20\ \x32\x36\x33\x2e\x31\x32\x31\x20\x2d\x31\x34\x2e\x33\x36\x20\x32\ \x36\x31\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\ \x2e\x35\x36\x20\x32\x36\x31\x2e\x32\x30\x31\x43\x2d\x39\x2e\x35\ \x36\x20\x32\x36\x31\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x30\x38\ \x20\x32\x35\x30\x2e\x39\x36\x31\x20\x2d\x36\x2e\x30\x34\x20\x32\ \x35\x36\x2e\x34\x30\x31\x43\x2d\x36\x2e\x30\x34\x20\x32\x35\x36\ \x2e\x34\x30\x31\x20\x2d\x31\x2e\x36\x36\x35\x20\x32\x35\x38\x2e\ \x37\x31\x31\x20\x2d\x33\x2e\x31\x36\x20\x32\x35\x39\x2e\x32\x38\ \x31\x43\x2d\x36\x2e\x35\x32\x20\x32\x36\x30\x2e\x35\x36\x31\x20\ \x2d\x33\x2e\x31\x36\x20\x32\x36\x33\x2e\x31\x32\x31\x20\x2d\x39\ \x2e\x35\x36\x20\x32\x36\x31\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x32\x2e\x39\x36\x20\x32\x36\x31\x2e\x34\x30\x31\ \x43\x2d\x32\x2e\x39\x36\x20\x32\x36\x31\x2e\x34\x30\x31\x20\x2d\ \x36\x2e\x34\x38\x20\x32\x35\x31\x2e\x31\x36\x31\x20\x30\x2e\x35\ \x36\x20\x32\x35\x36\x2e\x36\x30\x31\x43\x30\x2e\x35\x36\x20\x32\ \x35\x36\x2e\x36\x30\x31\x20\x34\x2e\x39\x34\x33\x20\x32\x35\x38\ \x2e\x39\x33\x33\x20\x33\x2e\x34\x34\x31\x20\x32\x35\x39\x2e\x34\ \x38\x31\x43\x30\x2e\x34\x38\x20\x32\x36\x30\x2e\x35\x36\x31\x20\ \x33\x2e\x34\x34\x31\x20\x32\x36\x33\x2e\x33\x32\x31\x20\x2d\x32\ \x2e\x39\x36\x20\x32\x36\x31\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x33\x2e\x35\x32\x20\x32\x36\x31\x2e\x33\x32\x31\x43\ \x33\x2e\x35\x32\x20\x32\x36\x31\x2e\x33\x32\x31\x20\x30\x20\x32\ \x35\x31\x2e\x30\x38\x31\x20\x37\x2e\x30\x34\x31\x20\x32\x35\x36\ \x2e\x35\x32\x31\x43\x37\x2e\x30\x34\x31\x20\x32\x35\x36\x2e\x35\ \x32\x31\x20\x31\x30\x2e\x38\x38\x31\x20\x32\x35\x38\x2e\x31\x32\ \x31\x20\x39\x2e\x39\x32\x31\x20\x32\x35\x39\x2e\x34\x30\x31\x43\ \x38\x2e\x39\x36\x31\x20\x32\x36\x30\x2e\x36\x38\x31\x20\x39\x2e\ \x39\x32\x31\x20\x32\x36\x33\x2e\x32\x34\x31\x20\x33\x2e\x35\x32\ \x20\x32\x36\x31\x2e\x33\x32\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\ \x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x31\x30\x2e\x32\x20\x32\x36\x32\x2e\x30\x30\x31\x43\x31\x30\x2e\ \x32\x20\x32\x36\x32\x2e\x30\x30\x31\x20\x35\x2e\x34\x20\x32\x34\ \x39\x2e\x36\x30\x31\x20\x31\x34\x2e\x36\x20\x32\x35\x36\x2e\x30\ \x30\x31\x43\x31\x34\x2e\x36\x20\x32\x35\x36\x2e\x30\x30\x31\x20\ \x31\x39\x2e\x34\x20\x32\x35\x38\x2e\x30\x30\x31\x20\x31\x38\x2e\ \x32\x20\x32\x35\x39\x2e\x36\x30\x31\x43\x31\x37\x20\x32\x36\x31\ \x2e\x32\x30\x31\x20\x31\x38\x2e\x32\x20\x32\x36\x34\x2e\x34\x30\ \x31\x20\x31\x30\x2e\x32\x20\x32\x36\x32\x2e\x30\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x61\x35\x32\x36\x34\x63\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x38\x2e\x32\x20\x32\x34\x34\x2e\x38\x30\x31\x43\x2d\ \x31\x38\x2e\x32\x20\x32\x34\x34\x2e\x38\x30\x31\x20\x2d\x35\x20\ \x32\x34\x32\x2e\x30\x30\x31\x20\x31\x20\x32\x34\x35\x2e\x32\x30\ \x31\x43\x31\x20\x32\x34\x35\x2e\x32\x30\x31\x20\x37\x20\x32\x34\ \x36\x2e\x34\x30\x31\x20\x38\x2e\x32\x20\x32\x34\x36\x2e\x30\x30\ \x31\x43\x39\x2e\x34\x20\x32\x34\x35\x2e\x36\x30\x31\x20\x31\x32\ \x2e\x36\x20\x32\x34\x35\x2e\x32\x30\x31\x20\x31\x32\x2e\x36\x20\ \x32\x34\x35\x2e\x32\x30\x31\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x61\x35\x32\x36\x34\x63\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x35\x2e\x38\x20\x32\x35\ \x33\x2e\x36\x30\x31\x43\x31\x35\x2e\x38\x20\x32\x35\x33\x2e\x36\ \x30\x31\x20\x32\x37\x2e\x38\x20\x32\x34\x30\x2e\x30\x30\x31\x20\ \x33\x39\x2e\x38\x20\x32\x34\x34\x2e\x34\x30\x31\x43\x34\x36\x2e\ \x38\x31\x36\x20\x32\x34\x36\x2e\x39\x37\x34\x20\x34\x35\x2e\x38\ \x20\x32\x34\x33\x2e\x36\x30\x31\x20\x34\x36\x2e\x36\x20\x32\x34\ \x30\x2e\x38\x30\x31\x43\x34\x37\x2e\x34\x20\x32\x33\x38\x2e\x30\ \x30\x31\x20\x34\x37\x2e\x36\x20\x32\x33\x33\x2e\x38\x30\x31\x20\ \x35\x32\x2e\x36\x20\x32\x33\x30\x2e\x38\x30\x31\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x33\x33\x20\x32\x33\x37\x2e\x36\x30\x31\x43\x33\x33\ \x20\x32\x33\x37\x2e\x36\x30\x31\x20\x32\x39\x20\x32\x32\x36\x2e\ \x38\x30\x31\x20\x32\x36\x2e\x32\x20\x32\x33\x39\x2e\x36\x30\x31\ \x43\x32\x33\x2e\x34\x20\x32\x35\x32\x2e\x34\x30\x31\x20\x32\x30\ \x2e\x32\x20\x32\x35\x36\x2e\x30\x30\x31\x20\x31\x38\x2e\x36\x20\ \x32\x35\x38\x2e\x38\x30\x31\x43\x31\x38\x2e\x36\x20\x32\x35\x38\ \x2e\x38\x30\x31\x20\x31\x38\x2e\x36\x20\x32\x36\x34\x2e\x30\x30\ \x31\x20\x32\x37\x20\x32\x36\x33\x2e\x36\x30\x31\x43\x32\x37\x20\ \x32\x36\x33\x2e\x36\x30\x31\x20\x33\x37\x2e\x38\x20\x32\x36\x33\ \x2e\x32\x30\x31\x20\x33\x38\x2e\x32\x20\x32\x36\x30\x2e\x34\x30\ \x31\x43\x33\x38\x2e\x36\x20\x32\x35\x37\x2e\x36\x30\x31\x20\x33\ \x37\x20\x32\x34\x36\x2e\x30\x30\x31\x20\x33\x33\x20\x32\x33\x37\ \x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x61\x35\x32\x36\x34\x63\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x34\x37\x20\x32\x34\x34\x2e\x38\x30\ \x31\x43\x34\x37\x20\x32\x34\x34\x2e\x38\x30\x31\x20\x35\x30\x2e\ \x36\x20\x32\x34\x32\x2e\x34\x30\x31\x20\x35\x33\x20\x32\x34\x33\ \x2e\x36\x30\x31\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x61\x35\x32\x36\x34\x63\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x35\x33\x2e\x35\x20\x32\x32\x38\x2e\x34\ \x30\x31\x43\x35\x33\x2e\x35\x20\x32\x32\x38\x2e\x34\x30\x31\x20\ \x35\x36\x2e\x34\x20\x32\x32\x33\x2e\x35\x30\x31\x20\x36\x31\x2e\ \x32\x20\x32\x32\x32\x2e\x37\x30\x31\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x62\x32\x62\x32\x62\ \x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x32\x35\x2e\x38\x20\x32\x36\x35\x2e\x32\x30\x31\x43\x2d\x32\x35\ \x2e\x38\x20\x32\x36\x35\x2e\x32\x30\x31\x20\x2d\x37\x2e\x38\x20\ \x32\x36\x38\x2e\x34\x30\x31\x20\x2d\x33\x2e\x34\x20\x32\x36\x36\ \x2e\x38\x30\x31\x43\x2d\x33\x2e\x34\x20\x32\x36\x36\x2e\x38\x30\ \x31\x20\x35\x2e\x34\x20\x32\x36\x36\x2e\x38\x30\x31\x20\x2d\x33\ \x20\x32\x36\x38\x2e\x38\x30\x31\x43\x2d\x33\x20\x32\x36\x38\x2e\ \x38\x30\x31\x20\x2d\x31\x35\x2e\x38\x20\x32\x36\x38\x2e\x38\x30\ \x31\x20\x2d\x32\x33\x2e\x38\x20\x32\x36\x37\x2e\x36\x30\x31\x43\ \x2d\x32\x33\x2e\x38\x20\x32\x36\x37\x2e\x36\x30\x31\x20\x2d\x33\ \x35\x2e\x34\x20\x32\x36\x32\x2e\x30\x30\x31\x20\x2d\x32\x35\x2e\ \x38\x20\x32\x36\x35\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\ \x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\ \x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x31\x2e\x38\x20\x31\x37\x32\x2e\x30\x30\x31\x43\x2d\ \x31\x31\x2e\x38\x20\x31\x37\x32\x2e\x30\x30\x31\x20\x35\x2e\x38\ \x20\x31\x37\x32\x2e\x30\x30\x31\x20\x37\x2e\x38\x20\x31\x37\x32\ \x2e\x38\x30\x31\x43\x37\x2e\x38\x20\x31\x37\x32\x2e\x38\x30\x31\ \x20\x31\x35\x20\x32\x30\x33\x2e\x36\x30\x31\x20\x31\x31\x2e\x34\ \x20\x32\x31\x31\x2e\x32\x30\x31\x43\x31\x31\x2e\x34\x20\x32\x31\ \x31\x2e\x32\x30\x31\x20\x31\x30\x2e\x32\x20\x32\x31\x34\x2e\x30\ \x30\x31\x20\x37\x2e\x34\x20\x32\x30\x38\x2e\x34\x30\x31\x43\x37\ \x2e\x34\x20\x32\x30\x38\x2e\x34\x30\x31\x20\x2d\x31\x31\x20\x31\ \x37\x35\x2e\x36\x30\x31\x20\x2d\x31\x34\x2e\x32\x20\x31\x37\x33\ \x2e\x36\x30\x31\x43\x2d\x31\x37\x2e\x34\x20\x31\x37\x31\x2e\x36\ \x30\x31\x20\x2d\x31\x33\x20\x31\x37\x32\x2e\x30\x30\x31\x20\x2d\ \x31\x31\x2e\x38\x20\x31\x37\x32\x2e\x30\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\ \x31\x43\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\x31\x20\ \x2d\x38\x30\x20\x31\x37\x31\x2e\x30\x30\x31\x20\x2d\x36\x37\x2e\ \x34\x20\x31\x37\x33\x2e\x36\x30\x31\x43\x2d\x36\x37\x2e\x34\x20\ \x31\x37\x33\x2e\x36\x30\x31\x20\x2d\x36\x32\x2e\x36\x20\x31\x39\ \x36\x2e\x30\x30\x31\x20\x2d\x35\x39\x2e\x34\x20\x32\x30\x30\x2e\ \x38\x30\x31\x43\x2d\x35\x36\x2e\x32\x20\x32\x30\x35\x2e\x36\x30\ \x31\x20\x2d\x35\x39\x2e\x38\x20\x32\x30\x35\x2e\x36\x30\x31\x20\ \x2d\x36\x33\x2e\x34\x20\x32\x30\x32\x2e\x38\x30\x31\x43\x2d\x36\ \x37\x20\x32\x30\x30\x2e\x30\x30\x31\x20\x2d\x38\x31\x2e\x38\x20\ \x31\x38\x36\x2e\x30\x30\x31\x20\x2d\x38\x33\x2e\x38\x20\x31\x38\ \x31\x2e\x36\x30\x31\x43\x2d\x38\x35\x2e\x38\x20\x31\x37\x37\x2e\ \x32\x30\x31\x20\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\ \x31\x20\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x37\x2e\x30\x33\x39\x20\x31\ \x37\x33\x2e\x38\x31\x38\x43\x2d\x36\x37\x2e\x30\x33\x39\x20\x31\ \x37\x33\x2e\x38\x31\x38\x20\x2d\x36\x31\x2e\x32\x33\x39\x20\x31\ \x37\x35\x2e\x33\x36\x36\x20\x2d\x36\x30\x2e\x32\x33\x20\x31\x37\ \x37\x2e\x35\x38\x31\x43\x2d\x35\x39\x2e\x32\x32\x32\x20\x31\x37\ \x39\x2e\x37\x39\x35\x20\x2d\x36\x31\x2e\x34\x33\x32\x20\x31\x38\ \x33\x2e\x30\x39\x32\x20\x2d\x36\x31\x2e\x34\x33\x32\x20\x31\x38\ \x33\x2e\x30\x39\x32\x43\x2d\x36\x31\x2e\x34\x33\x32\x20\x31\x38\ \x33\x2e\x30\x39\x32\x20\x2d\x36\x32\x2e\x34\x33\x32\x20\x31\x38\ \x36\x2e\x33\x39\x37\x20\x2d\x36\x33\x2e\x36\x33\x34\x20\x31\x38\ \x34\x2e\x32\x33\x35\x43\x2d\x36\x34\x2e\x38\x33\x36\x20\x31\x38\ \x32\x2e\x30\x37\x32\x20\x2d\x36\x37\x2e\x37\x30\x38\x20\x31\x37\ \x34\x2e\x34\x31\x32\x20\x2d\x36\x37\x2e\x30\x33\x39\x20\x31\x37\ \x33\x2e\x38\x31\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x37\x20\ \x31\x37\x33\x2e\x36\x30\x31\x43\x2d\x36\x37\x20\x31\x37\x33\x2e\ \x36\x30\x31\x20\x2d\x36\x33\x2e\x34\x20\x31\x37\x38\x2e\x38\x30\ \x31\x20\x2d\x35\x39\x2e\x38\x20\x31\x37\x38\x2e\x38\x30\x31\x43\ \x2d\x35\x36\x2e\x32\x20\x31\x37\x38\x2e\x38\x30\x31\x20\x2d\x35\ \x35\x2e\x38\x31\x38\x20\x31\x37\x38\x2e\x33\x38\x38\x20\x2d\x35\ \x33\x20\x31\x37\x39\x2e\x30\x30\x31\x43\x2d\x34\x38\x2e\x34\x20\ \x31\x38\x30\x2e\x30\x30\x31\x20\x2d\x34\x38\x2e\x38\x20\x31\x37\ \x38\x2e\x30\x30\x31\x20\x2d\x34\x32\x2e\x32\x20\x31\x37\x39\x2e\ \x32\x30\x31\x43\x2d\x33\x39\x2e\x35\x36\x20\x31\x37\x39\x2e\x36\ \x38\x31\x20\x2d\x33\x37\x20\x31\x37\x38\x2e\x38\x30\x31\x20\x2d\ \x33\x34\x2e\x32\x20\x31\x38\x30\x2e\x30\x30\x31\x43\x2d\x33\x31\ \x2e\x34\x20\x31\x38\x31\x2e\x32\x30\x31\x20\x2d\x32\x38\x2e\x32\ \x20\x31\x38\x30\x2e\x34\x30\x31\x20\x2d\x32\x37\x20\x31\x37\x38\ \x2e\x34\x30\x31\x43\x2d\x32\x35\x2e\x38\x20\x31\x37\x36\x2e\x34\ \x30\x31\x20\x2d\x32\x31\x20\x31\x37\x32\x2e\x32\x30\x31\x20\x2d\ \x32\x31\x20\x31\x37\x32\x2e\x32\x30\x31\x43\x2d\x32\x31\x20\x31\ \x37\x32\x2e\x32\x30\x31\x20\x2d\x33\x33\x2e\x38\x20\x31\x37\x34\ \x2e\x30\x30\x31\x20\x2d\x33\x36\x2e\x36\x20\x31\x37\x34\x2e\x38\ \x30\x31\x43\x2d\x33\x36\x2e\x36\x20\x31\x37\x34\x2e\x38\x30\x31\ \x20\x2d\x35\x39\x20\x31\x37\x36\x2e\x30\x30\x31\x20\x2d\x36\x37\ \x20\x31\x37\x33\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\ \x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x2d\x32\x32\x2e\x34\x20\x31\x37\x33\x2e\x38\x30\x31\x43\x2d\x32\ \x32\x2e\x34\x20\x31\x37\x33\x2e\x38\x30\x31\x20\x2d\x32\x38\x2e\ \x38\x35\x20\x31\x37\x37\x2e\x33\x30\x31\x20\x2d\x32\x39\x2e\x32\ \x35\x20\x31\x37\x39\x2e\x37\x30\x31\x43\x2d\x32\x39\x2e\x36\x35\ \x20\x31\x38\x32\x2e\x31\x30\x31\x20\x2d\x32\x34\x20\x31\x38\x35\ \x2e\x38\x30\x31\x20\x2d\x32\x34\x20\x31\x38\x35\x2e\x38\x30\x31\ \x43\x2d\x32\x34\x20\x31\x38\x35\x2e\x38\x30\x31\x20\x2d\x32\x31\ \x2e\x32\x35\x20\x31\x39\x30\x2e\x34\x30\x31\x20\x2d\x32\x30\x2e\ \x36\x35\x20\x31\x38\x38\x2e\x30\x30\x31\x43\x2d\x32\x30\x2e\x30\ \x35\x20\x31\x38\x35\x2e\x36\x30\x31\x20\x2d\x32\x31\x2e\x36\x20\ \x31\x37\x34\x2e\x32\x30\x31\x20\x2d\x32\x32\x2e\x34\x20\x31\x37\ \x33\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\x2c\ \x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x35\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x39\ \x2e\x38\x38\x35\x20\x31\x37\x39\x2e\x32\x36\x35\x43\x2d\x35\x39\ \x2e\x38\x38\x35\x20\x31\x37\x39\x2e\x32\x36\x35\x20\x2d\x35\x32\ \x2e\x38\x37\x38\x20\x31\x39\x30\x2e\x34\x35\x33\x20\x2d\x35\x32\ \x2e\x36\x36\x31\x20\x31\x37\x39\x2e\x32\x34\x32\x43\x2d\x35\x32\ \x2e\x36\x36\x31\x20\x31\x37\x39\x2e\x32\x34\x32\x20\x2d\x35\x32\ \x2e\x31\x30\x34\x20\x31\x37\x37\x2e\x39\x38\x34\x20\x2d\x35\x33\ \x2e\x38\x36\x34\x20\x31\x37\x37\x2e\x39\x36\x32\x43\x2d\x35\x39\ \x2e\x39\x33\x39\x20\x31\x37\x37\x2e\x38\x38\x36\x20\x2d\x35\x38\ \x2e\x34\x31\x38\x20\x31\x37\x33\x2e\x37\x38\x34\x20\x2d\x35\x39\ \x2e\x38\x38\x35\x20\x31\x37\x39\x2e\x32\x36\x35\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x35\x32\x2e\x37\x30\x37\x20\x31\x37\x39\x2e\ \x35\x31\x34\x43\x2d\x35\x32\x2e\x37\x30\x37\x20\x31\x37\x39\x2e\ \x35\x31\x34\x20\x2d\x34\x34\x2e\x37\x38\x36\x20\x31\x39\x30\x2e\ \x37\x30\x31\x20\x2d\x34\x35\x2e\x34\x32\x32\x20\x31\x37\x39\x2e\ \x34\x32\x31\x43\x2d\x34\x35\x2e\x34\x32\x32\x20\x31\x37\x39\x2e\ \x34\x32\x31\x20\x2d\x34\x35\x2e\x34\x31\x35\x20\x31\x37\x39\x2e\ \x30\x38\x39\x20\x2d\x34\x37\x2e\x31\x36\x38\x20\x31\x37\x38\x2e\ \x39\x33\x36\x43\x2d\x35\x31\x2e\x39\x31\x35\x20\x31\x37\x38\x2e\ \x35\x32\x32\x20\x2d\x35\x31\x2e\x35\x37\x20\x31\x37\x34\x2e\x30\ \x30\x34\x20\x2d\x35\x32\x2e\x37\x30\x37\x20\x31\x37\x39\x2e\x35\ \x31\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x34\x35\x2e\x34\x39\ \x34\x20\x31\x37\x39\x2e\x35\x32\x32\x43\x2d\x34\x35\x2e\x34\x39\ \x34\x20\x31\x37\x39\x2e\x35\x32\x32\x20\x2d\x33\x37\x2e\x35\x33\ \x34\x20\x31\x39\x30\x2e\x31\x35\x20\x2d\x33\x38\x2e\x32\x30\x33\ \x20\x31\x38\x30\x2e\x34\x38\x34\x43\x2d\x33\x38\x2e\x32\x30\x33\ \x20\x31\x38\x30\x2e\x34\x38\x34\x20\x2d\x33\x38\x2e\x30\x38\x34\ \x20\x31\x37\x39\x2e\x32\x35\x31\x20\x2d\x33\x39\x2e\x37\x33\x38\ \x20\x31\x37\x38\x2e\x39\x35\x43\x2d\x34\x33\x2e\x36\x33\x20\x31\ \x37\x38\x2e\x32\x34\x34\x20\x2d\x34\x33\x2e\x38\x34\x31\x20\x31\ \x37\x34\x2e\x39\x39\x35\x20\x2d\x34\x35\x2e\x34\x39\x34\x20\x31\ \x37\x39\x2e\x35\x32\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\ \x38\x2e\x36\x31\x38\x20\x31\x37\x39\x2e\x36\x30\x32\x43\x2d\x33\ \x38\x2e\x36\x31\x38\x20\x31\x37\x39\x2e\x36\x30\x32\x20\x2d\x33\ \x30\x2e\x37\x31\x38\x20\x31\x39\x31\x2e\x31\x36\x33\x20\x2d\x33\ \x30\x2e\x33\x37\x20\x31\x38\x31\x2e\x33\x38\x32\x43\x2d\x33\x30\ \x2e\x33\x37\x20\x31\x38\x31\x2e\x33\x38\x32\x20\x2d\x32\x38\x2e\ \x37\x32\x36\x20\x31\x38\x30\x2e\x30\x30\x34\x20\x2d\x33\x30\x2e\ \x34\x37\x32\x20\x31\x37\x39\x2e\x37\x38\x32\x43\x2d\x33\x36\x2e\ \x32\x39\x20\x31\x37\x39\x2e\x30\x34\x32\x20\x2d\x33\x35\x2e\x34\ \x39\x32\x20\x31\x37\x34\x2e\x35\x38\x38\x20\x2d\x33\x38\x2e\x36\ \x31\x38\x20\x31\x37\x39\x2e\x36\x30\x32\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x35\x65\ \x35\x62\x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x37\x34\x2e\x37\x39\x32\x20\x31\x38\x33\x2e\x31\x33\x32\ \x4c\x2d\x38\x32\x2e\x34\x35\x20\x31\x38\x31\x2e\x36\x30\x31\x43\ \x2d\x38\x35\x2e\x30\x35\x20\x31\x37\x36\x2e\x36\x30\x31\x20\x2d\ \x38\x37\x2e\x31\x35\x20\x31\x37\x30\x2e\x34\x35\x31\x20\x2d\x38\ \x37\x2e\x31\x35\x20\x31\x37\x30\x2e\x34\x35\x31\x43\x2d\x38\x37\ \x2e\x31\x35\x20\x31\x37\x30\x2e\x34\x35\x31\x20\x2d\x38\x30\x2e\ \x38\x20\x31\x37\x31\x2e\x34\x35\x31\x20\x2d\x36\x38\x2e\x33\x20\ \x31\x37\x34\x2e\x32\x35\x31\x43\x2d\x36\x38\x2e\x33\x20\x31\x37\ \x34\x2e\x32\x35\x31\x20\x2d\x36\x37\x2e\x34\x32\x34\x20\x31\x37\ \x37\x2e\x35\x36\x39\x20\x2d\x36\x35\x2e\x39\x35\x32\x20\x31\x38\ \x33\x2e\x33\x36\x34\x4c\x2d\x37\x34\x2e\x37\x39\x32\x20\x31\x38\ \x33\x2e\x31\x33\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x35\x65\x35\x62\x32\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\x2e\x37\ \x32\x34\x20\x31\x37\x38\x2e\x34\x37\x43\x2d\x31\x31\x2e\x33\x39\ \x20\x31\x37\x35\x2e\x39\x36\x34\x20\x2d\x31\x32\x2e\x37\x30\x37\ \x20\x31\x37\x34\x2e\x32\x30\x36\x20\x2d\x31\x33\x2e\x33\x35\x37\ \x20\x31\x37\x33\x2e\x38\x43\x2d\x31\x36\x2e\x33\x37\x20\x31\x37\ \x31\x2e\x39\x31\x37\x20\x2d\x31\x32\x2e\x32\x32\x37\x20\x31\x37\ \x32\x2e\x32\x39\x34\x20\x2d\x31\x31\x2e\x30\x39\x38\x20\x31\x37\ \x32\x2e\x32\x39\x34\x43\x2d\x31\x31\x2e\x30\x39\x38\x20\x31\x37\ \x32\x2e\x32\x39\x34\x20\x35\x2e\x34\x37\x33\x20\x31\x37\x32\x2e\ \x32\x39\x34\x20\x37\x2e\x33\x35\x36\x20\x31\x37\x33\x2e\x30\x34\ \x37\x43\x37\x2e\x33\x35\x36\x20\x31\x37\x33\x2e\x30\x34\x37\x20\ \x37\x2e\x38\x38\x20\x31\x37\x35\x2e\x32\x38\x39\x20\x38\x2e\x35\ \x36\x34\x20\x31\x37\x38\x2e\x36\x38\x43\x38\x2e\x35\x36\x34\x20\ \x31\x37\x38\x2e\x36\x38\x20\x2d\x31\x2e\x35\x32\x34\x20\x31\x37\ \x36\x2e\x36\x37\x20\x2d\x39\x2e\x37\x32\x34\x20\x31\x37\x38\x2e\ \x34\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x33\x2e\x38\x38\x20\x34\ \x30\x2e\x33\x32\x31\x43\x37\x31\x2e\x36\x30\x31\x20\x34\x34\x2e\ \x32\x38\x31\x20\x39\x37\x2e\x31\x32\x31\x20\x38\x2e\x36\x34\x31\ \x20\x39\x38\x2e\x38\x38\x31\x20\x2d\x31\x2e\x30\x34\x43\x31\x30\ \x30\x2e\x36\x34\x31\x20\x2d\x31\x30\x2e\x37\x32\x20\x39\x30\x2e\ \x35\x32\x31\x20\x2d\x32\x32\x2e\x36\x20\x39\x30\x2e\x35\x32\x31\ \x20\x2d\x32\x32\x2e\x36\x43\x39\x31\x2e\x38\x34\x31\x20\x2d\x32\ \x35\x2e\x36\x38\x20\x38\x37\x2e\x30\x30\x31\x20\x2d\x33\x39\x2e\ \x37\x36\x20\x38\x31\x2e\x37\x32\x31\x20\x2d\x34\x39\x43\x37\x36\ \x2e\x34\x34\x31\x20\x2d\x35\x38\x2e\x32\x34\x20\x36\x30\x2e\x35\ \x34\x20\x2d\x35\x37\x2e\x32\x36\x36\x20\x34\x33\x20\x2d\x35\x38\ \x2e\x32\x34\x43\x32\x37\x2e\x31\x36\x20\x2d\x35\x39\x2e\x31\x32\ \x20\x38\x2e\x36\x38\x20\x2d\x33\x35\x2e\x38\x20\x37\x2e\x33\x36\ \x20\x2d\x33\x34\x2e\x30\x34\x43\x36\x2e\x30\x34\x20\x2d\x33\x32\ \x2e\x32\x38\x20\x31\x32\x2e\x32\x20\x36\x2e\x30\x30\x31\x20\x31\ \x33\x2e\x35\x32\x20\x31\x31\x2e\x37\x32\x31\x43\x31\x34\x2e\x38\ \x34\x20\x31\x37\x2e\x34\x34\x31\x20\x31\x32\x2e\x32\x20\x34\x33\ \x2e\x38\x34\x31\x20\x31\x32\x2e\x32\x20\x34\x33\x2e\x38\x34\x31\ \x43\x34\x36\x2e\x34\x34\x20\x33\x34\x2e\x37\x34\x31\x20\x31\x36\ \x2e\x31\x36\x20\x33\x36\x2e\x33\x36\x31\x20\x34\x33\x2e\x38\x38\ \x20\x34\x30\x2e\x33\x32\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x61\x38\x65\x35\x31\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x38\x2e\ \x30\x38\x38\x20\x2d\x33\x33\x2e\x33\x39\x32\x43\x36\x2e\x37\x39\ \x32\x20\x2d\x33\x31\x2e\x36\x36\x34\x20\x31\x32\x2e\x38\x34\x20\ \x35\x2e\x39\x32\x31\x20\x31\x34\x2e\x31\x33\x36\x20\x31\x31\x2e\ \x35\x33\x37\x43\x31\x35\x2e\x34\x33\x32\x20\x31\x37\x2e\x31\x35\ \x33\x20\x31\x32\x2e\x38\x34\x20\x34\x33\x2e\x30\x37\x33\x20\x31\ \x32\x2e\x38\x34\x20\x34\x33\x2e\x30\x37\x33\x43\x34\x35\x2e\x35\ \x31\x32\x20\x33\x34\x2e\x31\x39\x33\x20\x31\x36\x2e\x37\x32\x38\ \x20\x33\x35\x2e\x37\x32\x39\x20\x34\x33\x2e\x39\x34\x34\x20\x33\ \x39\x2e\x36\x31\x37\x43\x37\x31\x2e\x31\x36\x31\x20\x34\x33\x2e\ \x35\x30\x35\x20\x39\x36\x2e\x32\x31\x37\x20\x38\x2e\x35\x31\x33\ \x20\x39\x37\x2e\x39\x34\x35\x20\x2d\x30\x2e\x39\x39\x32\x43\x39\ \x39\x2e\x36\x37\x33\x20\x2d\x31\x30\x2e\x34\x39\x36\x20\x38\x39\ \x2e\x37\x33\x37\x20\x2d\x32\x32\x2e\x31\x36\x20\x38\x39\x2e\x37\ \x33\x37\x20\x2d\x32\x32\x2e\x31\x36\x43\x39\x31\x2e\x30\x33\x33\ \x20\x2d\x32\x35\x2e\x31\x38\x34\x20\x38\x36\x2e\x32\x38\x31\x20\ \x2d\x33\x39\x2e\x30\x30\x38\x20\x38\x31\x2e\x30\x39\x37\x20\x2d\ \x34\x38\x2e\x30\x38\x43\x37\x35\x2e\x39\x31\x33\x20\x2d\x35\x37\ \x2e\x31\x35\x32\x20\x36\x30\x2e\x33\x30\x32\x20\x2d\x35\x36\x2e\ \x31\x39\x35\x20\x34\x33\x2e\x30\x38\x20\x2d\x35\x37\x2e\x31\x35\ \x32\x43\x32\x37\x2e\x35\x32\x38\x20\x2d\x35\x38\x2e\x30\x31\x36\ \x20\x39\x2e\x33\x38\x34\x20\x2d\x33\x35\x2e\x31\x32\x20\x38\x2e\ \x30\x38\x38\x20\x2d\x33\x33\x2e\x33\x39\x32\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x66\ \x61\x61\x37\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x38\x2e\x38\x31\x36\x20\x2d\x33\x32\x2e\x37\x34\x34\x43\ \x37\x2e\x35\x34\x34\x20\x2d\x33\x31\x2e\x30\x34\x38\x20\x31\x33\ \x2e\x34\x38\x20\x35\x2e\x38\x34\x31\x20\x31\x34\x2e\x37\x35\x32\ \x20\x31\x31\x2e\x33\x35\x33\x43\x31\x36\x2e\x30\x32\x34\x20\x31\ \x36\x2e\x38\x36\x35\x20\x31\x33\x2e\x34\x38\x20\x34\x32\x2e\x33\ \x30\x35\x20\x31\x33\x2e\x34\x38\x20\x34\x32\x2e\x33\x30\x35\x43\ \x34\x34\x2e\x38\x38\x34\x20\x33\x33\x2e\x31\x34\x35\x20\x31\x37\ \x2e\x32\x39\x36\x20\x33\x35\x2e\x30\x39\x37\x20\x34\x34\x2e\x30\ \x30\x38\x20\x33\x38\x2e\x39\x31\x33\x43\x37\x30\x2e\x37\x32\x31\ \x20\x34\x32\x2e\x37\x32\x39\x20\x39\x35\x2e\x33\x31\x33\x20\x38\ \x2e\x33\x38\x35\x20\x39\x37\x2e\x30\x30\x39\x20\x2d\x30\x2e\x39\ \x34\x34\x43\x39\x38\x2e\x37\x30\x35\x20\x2d\x31\x30\x2e\x32\x37\ \x32\x20\x38\x38\x2e\x39\x35\x33\x20\x2d\x32\x31\x2e\x37\x32\x20\ \x38\x38\x2e\x39\x35\x33\x20\x2d\x32\x31\x2e\x37\x32\x43\x39\x30\ \x2e\x32\x32\x35\x20\x2d\x32\x34\x2e\x36\x38\x38\x20\x38\x35\x2e\ \x35\x36\x31\x20\x2d\x33\x38\x2e\x32\x35\x36\x20\x38\x30\x2e\x34\ \x37\x33\x20\x2d\x34\x37\x2e\x31\x36\x43\x37\x35\x2e\x33\x38\x35\ \x20\x2d\x35\x36\x2e\x30\x36\x34\x20\x36\x30\x2e\x30\x36\x33\x20\ \x2d\x35\x35\x2e\x31\x32\x35\x20\x34\x33\x2e\x31\x36\x20\x2d\x35\ \x36\x2e\x30\x36\x34\x43\x32\x37\x2e\x38\x39\x36\x20\x2d\x35\x36\ \x2e\x39\x31\x32\x20\x31\x30\x2e\x30\x38\x38\x20\x2d\x33\x34\x2e\ \x34\x34\x20\x38\x2e\x38\x31\x36\x20\x2d\x33\x32\x2e\x37\x34\x34\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x34\x63\x36\x61\x38\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x39\x2e\x35\x34\x34\x20\x2d\x33\x32\ \x2e\x30\x39\x36\x43\x38\x2e\x32\x39\x36\x20\x2d\x33\x30\x2e\x34\ \x33\x32\x20\x31\x34\x2e\x31\x32\x20\x35\x2e\x37\x36\x31\x20\x31\ \x35\x2e\x33\x36\x38\x20\x31\x31\x2e\x31\x36\x39\x43\x31\x36\x2e\ \x36\x31\x36\x20\x31\x36\x2e\x35\x37\x37\x20\x31\x34\x2e\x31\x32\ \x20\x34\x31\x2e\x35\x33\x37\x20\x31\x34\x2e\x31\x32\x20\x34\x31\ \x2e\x35\x33\x37\x43\x34\x33\x2e\x35\x35\x36\x20\x33\x32\x2e\x34\ \x39\x37\x20\x31\x37\x2e\x38\x36\x34\x20\x33\x34\x2e\x34\x36\x35\ \x20\x34\x34\x2e\x30\x37\x32\x20\x33\x38\x2e\x32\x30\x39\x43\x37\ \x30\x2e\x32\x38\x31\x20\x34\x31\x2e\x39\x35\x33\x20\x39\x34\x2e\ \x34\x30\x39\x20\x38\x2e\x32\x35\x37\x20\x39\x36\x2e\x30\x37\x33\ \x20\x2d\x30\x2e\x38\x39\x35\x43\x39\x37\x2e\x37\x33\x37\x20\x2d\ \x31\x30\x2e\x30\x34\x38\x20\x38\x38\x2e\x31\x36\x39\x20\x2d\x32\ \x31\x2e\x32\x38\x20\x38\x38\x2e\x31\x36\x39\x20\x2d\x32\x31\x2e\ \x32\x38\x43\x38\x39\x2e\x34\x31\x37\x20\x2d\x32\x34\x2e\x31\x39\ \x32\x20\x38\x34\x2e\x38\x34\x31\x20\x2d\x33\x37\x2e\x35\x30\x34\ \x20\x37\x39\x2e\x38\x34\x39\x20\x2d\x34\x36\x2e\x32\x34\x43\x37\ \x34\x2e\x38\x35\x37\x20\x2d\x35\x34\x2e\x39\x37\x36\x20\x35\x39\ \x2e\x38\x32\x34\x20\x2d\x35\x34\x2e\x30\x35\x35\x20\x34\x33\x2e\ \x32\x34\x20\x2d\x35\x34\x2e\x39\x37\x36\x43\x32\x38\x2e\x32\x36\ \x34\x20\x2d\x35\x35\x2e\x38\x30\x38\x20\x31\x30\x2e\x37\x39\x32\ \x20\x2d\x33\x33\x2e\x37\x36\x20\x39\x2e\x35\x34\x34\x20\x2d\x33\ \x32\x2e\x30\x39\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x39\x65\x32\x64\x33\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x30\x2e\x32\ \x37\x32\x20\x2d\x33\x31\x2e\x34\x34\x38\x43\x39\x2e\x30\x34\x38\ \x20\x2d\x32\x39\x2e\x38\x31\x36\x20\x31\x34\x2e\x37\x36\x20\x35\ \x2e\x36\x38\x31\x20\x31\x35\x2e\x39\x38\x34\x20\x31\x30\x2e\x39\ \x38\x35\x43\x31\x37\x2e\x32\x30\x38\x20\x31\x36\x2e\x32\x38\x39\ \x20\x31\x34\x2e\x37\x36\x20\x34\x30\x2e\x37\x36\x39\x20\x31\x34\ \x2e\x37\x36\x20\x34\x30\x2e\x37\x36\x39\x43\x34\x32\x2e\x36\x32\ \x38\x20\x33\x31\x2e\x38\x34\x39\x20\x31\x38\x2e\x34\x33\x32\x20\ \x33\x33\x2e\x38\x33\x33\x20\x34\x34\x2e\x31\x33\x36\x20\x33\x37\ \x2e\x35\x30\x35\x43\x36\x39\x2e\x38\x34\x31\x20\x34\x31\x2e\x31\ \x37\x37\x20\x39\x33\x2e\x35\x30\x35\x20\x38\x2e\x31\x32\x39\x20\ \x39\x35\x2e\x31\x33\x37\x20\x2d\x30\x2e\x38\x34\x38\x43\x39\x36\ \x2e\x37\x36\x39\x20\x2d\x39\x2e\x38\x32\x34\x20\x38\x37\x2e\x33\ \x38\x35\x20\x2d\x32\x30\x2e\x38\x34\x20\x38\x37\x2e\x33\x38\x35\ \x20\x2d\x32\x30\x2e\x38\x34\x43\x38\x38\x2e\x36\x30\x39\x20\x2d\ \x32\x33\x2e\x36\x39\x36\x20\x38\x34\x2e\x31\x32\x31\x20\x2d\x33\ \x36\x2e\x37\x35\x32\x20\x37\x39\x2e\x32\x32\x35\x20\x2d\x34\x35\ \x2e\x33\x32\x43\x37\x34\x2e\x33\x32\x39\x20\x2d\x35\x33\x2e\x38\ \x38\x38\x20\x35\x39\x2e\x35\x38\x35\x20\x2d\x35\x32\x2e\x39\x38\ \x35\x20\x34\x33\x2e\x33\x32\x20\x2d\x35\x33\x2e\x38\x38\x38\x43\ \x32\x38\x2e\x36\x33\x32\x20\x2d\x35\x34\x2e\x37\x30\x34\x20\x31\ \x31\x2e\x34\x39\x36\x20\x2d\x33\x33\x2e\x30\x38\x20\x31\x30\x2e\ \x32\x37\x32\x20\x2d\x33\x31\x2e\x34\x34\x38\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x34\x34\x2e\x32\x20\x33\x36\x2e\x38\x43\x36\x39\x2e\x34\ \x20\x34\x30\x2e\x34\x20\x39\x32\x2e\x36\x30\x31\x20\x38\x20\x39\ \x34\x2e\x32\x30\x31\x20\x2d\x30\x2e\x38\x43\x39\x35\x2e\x38\x30\ \x31\x20\x2d\x39\x2e\x36\x20\x38\x36\x2e\x36\x30\x31\x20\x2d\x32\ \x30\x2e\x34\x20\x38\x36\x2e\x36\x30\x31\x20\x2d\x32\x30\x2e\x34\ \x43\x38\x37\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\x32\x20\x38\x33\ \x2e\x34\x20\x2d\x33\x36\x20\x37\x38\x2e\x36\x20\x2d\x34\x34\x2e\ \x34\x43\x37\x33\x2e\x38\x20\x2d\x35\x32\x2e\x38\x20\x35\x39\x2e\ \x33\x34\x36\x20\x2d\x35\x31\x2e\x39\x31\x34\x20\x34\x33\x2e\x34\ \x20\x2d\x35\x32\x2e\x38\x43\x32\x39\x20\x2d\x35\x33\x2e\x36\x20\ \x31\x32\x2e\x32\x20\x2d\x33\x32\x2e\x34\x20\x31\x31\x20\x2d\x33\ \x30\x2e\x38\x43\x39\x2e\x38\x20\x2d\x32\x39\x2e\x32\x20\x31\x35\ \x2e\x34\x20\x35\x2e\x36\x20\x31\x36\x2e\x36\x20\x31\x30\x2e\x38\ \x43\x31\x37\x2e\x38\x20\x31\x36\x20\x31\x35\x2e\x34\x20\x34\x30\ \x20\x31\x35\x2e\x34\x20\x34\x30\x43\x34\x30\x2e\x39\x20\x33\x31\ \x2e\x34\x20\x31\x39\x20\x33\x33\x2e\x32\x20\x34\x34\x2e\x32\x20\ \x33\x36\x2e\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x30\x2e\x36\x30\ \x31\x20\x32\x2e\x38\x43\x39\x30\x2e\x36\x30\x31\x20\x32\x2e\x38\ \x20\x36\x32\x2e\x38\x20\x31\x30\x2e\x34\x20\x35\x31\x2e\x32\x20\ \x38\x2e\x38\x43\x35\x31\x2e\x32\x20\x38\x2e\x38\x20\x33\x35\x2e\ \x34\x20\x32\x2e\x32\x20\x32\x36\x2e\x36\x20\x32\x34\x43\x32\x36\ \x2e\x36\x20\x32\x34\x20\x32\x33\x20\x33\x31\x2e\x32\x20\x32\x31\ \x20\x33\x33\x2e\x32\x43\x31\x39\x20\x33\x35\x2e\x32\x20\x39\x30\ \x2e\x36\x30\x31\x20\x32\x2e\x38\x20\x39\x30\x2e\x36\x30\x31\x20\ \x32\x2e\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x34\x2e\x34\x30\x31\ \x20\x30\x2e\x36\x43\x39\x34\x2e\x34\x30\x31\x20\x30\x2e\x36\x20\ \x36\x35\x2e\x34\x20\x31\x32\x2e\x38\x20\x35\x35\x2e\x34\x20\x31\ \x32\x2e\x34\x43\x35\x35\x2e\x34\x20\x31\x32\x2e\x34\x20\x33\x39\ \x20\x37\x2e\x38\x20\x33\x30\x2e\x36\x20\x32\x32\x2e\x34\x43\x33\ \x30\x2e\x36\x20\x32\x32\x2e\x34\x20\x32\x32\x2e\x32\x20\x33\x31\ \x2e\x36\x20\x31\x39\x20\x33\x33\x2e\x32\x43\x31\x39\x20\x33\x33\ \x2e\x32\x20\x31\x38\x2e\x36\x20\x33\x34\x2e\x38\x20\x32\x35\x20\ \x33\x30\x2e\x38\x4c\x33\x35\x2e\x34\x20\x33\x36\x43\x33\x35\x2e\ \x34\x20\x33\x36\x20\x35\x30\x2e\x32\x20\x34\x35\x2e\x36\x20\x35\ \x39\x2e\x38\x20\x32\x39\x2e\x36\x43\x35\x39\x2e\x38\x20\x32\x39\ \x2e\x36\x20\x36\x33\x2e\x38\x20\x31\x38\x2e\x34\x20\x36\x33\x2e\ \x38\x20\x31\x36\x2e\x34\x43\x36\x33\x2e\x38\x20\x31\x34\x2e\x34\ \x20\x38\x35\x20\x38\x2e\x38\x20\x38\x36\x2e\x36\x30\x31\x20\x38\ \x2e\x34\x43\x38\x38\x2e\x32\x30\x31\x20\x38\x20\x39\x34\x2e\x38\ \x30\x31\x20\x33\x2e\x38\x20\x39\x34\x2e\x34\x30\x31\x20\x30\x2e\ \x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x39\x39\x63\x63\x33\x32\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x37\x20\x33\x36\x2e\x35\x31\ \x34\x43\x34\x30\x2e\x31\x32\x38\x20\x33\x36\x2e\x35\x31\x34\x20\ \x33\x31\x2e\x37\x35\x35\x20\x33\x32\x2e\x36\x34\x39\x20\x33\x31\ \x2e\x37\x35\x35\x20\x32\x36\x2e\x34\x43\x33\x31\x2e\x37\x35\x35\ \x20\x32\x30\x2e\x31\x35\x32\x20\x34\x30\x2e\x31\x32\x38\x20\x31\ \x33\x2e\x38\x38\x37\x20\x34\x37\x20\x31\x33\x2e\x38\x38\x37\x43\ \x35\x33\x2e\x38\x37\x34\x20\x31\x33\x2e\x38\x38\x37\x20\x35\x39\ \x2e\x34\x34\x36\x20\x31\x38\x2e\x39\x35\x32\x20\x35\x39\x2e\x34\ \x34\x36\x20\x32\x35\x2e\x32\x43\x35\x39\x2e\x34\x34\x36\x20\x33\ \x31\x2e\x34\x34\x39\x20\x35\x33\x2e\x38\x37\x34\x20\x33\x36\x2e\ \x35\x31\x34\x20\x34\x37\x20\x33\x36\x2e\x35\x31\x34\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x36\x35\x39\x39\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x34\x33\x2e\x33\x37\x37\x20\x31\x39\x2e\x38\x33\ \x43\x33\x38\x2e\x35\x33\x31\x20\x32\x30\x2e\x35\x35\x32\x20\x33\ \x33\x2e\x34\x34\x32\x20\x32\x32\x2e\x30\x35\x35\x20\x33\x33\x2e\ \x35\x31\x34\x20\x32\x31\x2e\x38\x33\x39\x43\x33\x35\x2e\x30\x35\ \x34\x20\x31\x37\x2e\x32\x32\x20\x34\x31\x2e\x34\x31\x35\x20\x31\ \x33\x2e\x38\x38\x37\x20\x34\x37\x20\x31\x33\x2e\x38\x38\x37\x43\ \x35\x31\x2e\x32\x39\x36\x20\x31\x33\x2e\x38\x38\x37\x20\x35\x35\ \x2e\x30\x38\x34\x20\x31\x35\x2e\x38\x36\x35\x20\x35\x37\x2e\x33\ \x32\x20\x31\x38\x2e\x38\x37\x35\x43\x35\x37\x2e\x33\x32\x20\x31\ \x38\x2e\x38\x37\x35\x20\x35\x32\x2e\x30\x30\x34\x20\x31\x38\x2e\ \x35\x34\x35\x20\x34\x33\x2e\x33\x37\x37\x20\x31\x39\x2e\x38\x33\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x35\x35\x2e\x34\x20\x31\x39\x2e\x36\ \x43\x35\x35\x2e\x34\x20\x31\x39\x2e\x36\x20\x35\x31\x20\x31\x36\ \x2e\x34\x20\x35\x31\x20\x31\x38\x2e\x36\x43\x35\x31\x20\x31\x38\ \x2e\x36\x20\x35\x34\x2e\x36\x20\x32\x33\x20\x35\x35\x2e\x34\x20\ \x31\x39\x2e\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\x2e\x34\x20\ \x32\x37\x2e\x37\x32\x36\x43\x34\x32\x2e\x39\x30\x31\x20\x32\x37\ \x2e\x37\x32\x36\x20\x34\x30\x2e\x38\x37\x35\x20\x32\x35\x2e\x37\ \x20\x34\x30\x2e\x38\x37\x35\x20\x32\x33\x2e\x32\x43\x34\x30\x2e\ \x38\x37\x35\x20\x32\x30\x2e\x37\x30\x31\x20\x34\x32\x2e\x39\x30\ \x31\x20\x31\x38\x2e\x36\x37\x35\x20\x34\x35\x2e\x34\x20\x31\x38\ \x2e\x36\x37\x35\x43\x34\x37\x2e\x39\x20\x31\x38\x2e\x36\x37\x35\ \x20\x34\x39\x2e\x39\x32\x36\x20\x32\x30\x2e\x37\x30\x31\x20\x34\ \x39\x2e\x39\x32\x36\x20\x32\x33\x2e\x32\x43\x34\x39\x2e\x39\x32\ \x36\x20\x32\x35\x2e\x37\x20\x34\x37\x2e\x39\x20\x32\x37\x2e\x37\ \x32\x36\x20\x34\x35\x2e\x34\x20\x32\x37\x2e\x37\x32\x36\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x35\x38\x2e\x36\x20\x31\x34\x2e\x34\x43\ \x2d\x35\x38\x2e\x36\x20\x31\x34\x2e\x34\x20\x2d\x36\x31\x2e\x38\ \x20\x2d\x36\x2e\x38\x20\x2d\x35\x39\x2e\x34\x20\x2d\x31\x31\x2e\ \x32\x43\x2d\x35\x39\x2e\x34\x20\x2d\x31\x31\x2e\x32\x20\x2d\x34\ \x38\x2e\x36\x20\x2d\x32\x31\x2e\x32\x20\x2d\x34\x39\x20\x2d\x32\ \x34\x2e\x38\x43\x2d\x34\x39\x20\x2d\x32\x34\x2e\x38\x20\x2d\x34\ \x39\x2e\x34\x20\x2d\x34\x32\x2e\x38\x20\x2d\x35\x30\x2e\x36\x20\ \x2d\x34\x33\x2e\x36\x43\x2d\x35\x31\x2e\x38\x20\x2d\x34\x34\x2e\ \x34\x20\x2d\x35\x39\x2e\x34\x20\x2d\x35\x30\x2e\x34\x20\x2d\x36\ \x35\x2e\x34\x20\x2d\x34\x34\x43\x2d\x36\x35\x2e\x34\x20\x2d\x34\ \x34\x20\x2d\x37\x35\x2e\x38\x20\x2d\x32\x36\x20\x2d\x37\x35\x20\ \x2d\x31\x39\x2e\x36\x4c\x2d\x37\x35\x20\x2d\x31\x37\x2e\x36\x43\ \x2d\x37\x35\x20\x2d\x31\x37\x2e\x36\x20\x2d\x38\x32\x2e\x36\x20\ \x2d\x31\x38\x20\x2d\x38\x34\x2e\x32\x20\x2d\x31\x36\x43\x2d\x38\ \x34\x2e\x32\x20\x2d\x31\x36\x20\x2d\x38\x35\x2e\x34\x20\x2d\x31\ \x30\x2e\x38\x20\x2d\x38\x36\x2e\x36\x20\x2d\x31\x30\x2e\x34\x43\ \x2d\x38\x36\x2e\x36\x20\x2d\x31\x30\x2e\x34\x20\x2d\x38\x39\x2e\ \x34\x20\x2d\x38\x20\x2d\x38\x37\x2e\x34\x20\x2d\x35\x2e\x32\x43\ \x2d\x38\x37\x2e\x34\x20\x2d\x35\x2e\x32\x20\x2d\x38\x39\x2e\x34\ \x20\x2d\x32\x2e\x38\x20\x2d\x38\x39\x20\x31\x2e\x32\x4c\x2d\x38\ \x31\x2e\x34\x20\x35\x2e\x32\x43\x2d\x38\x31\x2e\x34\x20\x35\x2e\ \x32\x20\x2d\x37\x39\x2e\x34\x20\x31\x39\x2e\x36\x20\x2d\x36\x38\ \x2e\x36\x20\x32\x34\x2e\x38\x43\x2d\x36\x33\x2e\x37\x36\x34\x20\ \x32\x37\x2e\x31\x32\x39\x20\x2d\x36\x30\x2e\x36\x20\x32\x30\x2e\ \x34\x20\x2d\x35\x38\x2e\x36\x20\x31\x34\x2e\x34\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x35\x39\x2e\x36\x20\x31\x32\x2e\x35\x36\x43\x2d\ \x35\x39\x2e\x36\x20\x31\x32\x2e\x35\x36\x20\x2d\x36\x32\x2e\x34\ \x38\x20\x2d\x36\x2e\x35\x32\x20\x2d\x36\x30\x2e\x33\x32\x20\x2d\ \x31\x30\x2e\x34\x38\x43\x2d\x36\x30\x2e\x33\x32\x20\x2d\x31\x30\ \x2e\x34\x38\x20\x2d\x35\x30\x2e\x36\x20\x2d\x31\x39\x2e\x34\x38\ \x20\x2d\x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\x43\x2d\ \x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\x20\x2d\x35\x31\ \x2e\x33\x32\x20\x2d\x33\x38\x2e\x39\x32\x20\x2d\x35\x32\x2e\x34\ \x20\x2d\x33\x39\x2e\x36\x34\x43\x2d\x35\x33\x2e\x34\x38\x20\x2d\ \x34\x30\x2e\x33\x36\x20\x2d\x36\x30\x2e\x33\x32\x20\x2d\x34\x35\ \x2e\x37\x36\x20\x2d\x36\x35\x2e\x37\x32\x20\x2d\x34\x30\x43\x2d\ \x36\x35\x2e\x37\x32\x20\x2d\x34\x30\x20\x2d\x37\x35\x2e\x30\x38\ \x20\x2d\x32\x33\x2e\x38\x20\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\ \x38\x2e\x30\x34\x4c\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\x36\x2e\ \x32\x34\x43\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\x36\x2e\x32\x34\ \x20\x2d\x38\x31\x2e\x32\x20\x2d\x31\x36\x2e\x36\x20\x2d\x38\x32\ \x2e\x36\x34\x20\x2d\x31\x34\x2e\x38\x43\x2d\x38\x32\x2e\x36\x34\ \x20\x2d\x31\x34\x2e\x38\x20\x2d\x38\x33\x2e\x37\x32\x20\x2d\x31\ \x30\x2e\x31\x32\x20\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\x37\x36\ \x43\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\x37\x36\x20\x2d\x38\x37\ \x2e\x33\x32\x20\x2d\x37\x2e\x36\x20\x2d\x38\x35\x2e\x35\x32\x20\ \x2d\x35\x2e\x30\x38\x43\x2d\x38\x35\x2e\x35\x32\x20\x2d\x35\x2e\ \x30\x38\x20\x2d\x38\x37\x2e\x33\x32\x20\x2d\x32\x2e\x39\x32\x20\ \x2d\x38\x36\x2e\x39\x36\x20\x30\x2e\x36\x38\x4c\x2d\x38\x30\x2e\ \x31\x32\x20\x34\x2e\x32\x38\x43\x2d\x38\x30\x2e\x31\x32\x20\x34\ \x2e\x32\x38\x20\x2d\x37\x38\x2e\x33\x32\x20\x31\x37\x2e\x32\x34\ \x20\x2d\x36\x38\x2e\x36\x20\x32\x31\x2e\x39\x32\x43\x2d\x36\x34\ \x2e\x32\x34\x38\x20\x32\x34\x2e\x30\x31\x35\x20\x2d\x36\x31\x2e\ \x34\x20\x31\x37\x2e\x39\x36\x20\x2d\x35\x39\x2e\x36\x20\x31\x32\ \x2e\x35\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x65\x62\x39\x35\x35\x63\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x31\x2e\x30\x35\ \x20\x2d\x34\x32\x2e\x36\x31\x43\x2d\x35\x32\x2e\x31\x34\x20\x2d\ \x34\x33\x2e\x34\x37\x20\x2d\x35\x39\x2e\x36\x33\x20\x2d\x34\x39\ \x2e\x32\x34\x20\x2d\x36\x35\x2e\x34\x38\x20\x2d\x34\x33\x43\x2d\ \x36\x35\x2e\x34\x38\x20\x2d\x34\x33\x20\x2d\x37\x35\x2e\x36\x32\ \x20\x2d\x32\x35\x2e\x34\x35\x20\x2d\x37\x34\x2e\x38\x34\x20\x2d\ \x31\x39\x2e\x32\x31\x4c\x2d\x37\x34\x2e\x38\x34\x20\x2d\x31\x37\ \x2e\x32\x36\x43\x2d\x37\x34\x2e\x38\x34\x20\x2d\x31\x37\x2e\x32\ \x36\x20\x2d\x38\x32\x2e\x32\x35\x20\x2d\x31\x37\x2e\x36\x35\x20\ \x2d\x38\x33\x2e\x38\x31\x20\x2d\x31\x35\x2e\x37\x43\x2d\x38\x33\ \x2e\x38\x31\x20\x2d\x31\x35\x2e\x37\x20\x2d\x38\x34\x2e\x39\x38\ \x20\x2d\x31\x30\x2e\x36\x33\x20\x2d\x38\x36\x2e\x31\x35\x20\x2d\ \x31\x30\x2e\x32\x34\x43\x2d\x38\x36\x2e\x31\x35\x20\x2d\x31\x30\ \x2e\x32\x34\x20\x2d\x38\x38\x2e\x38\x38\x20\x2d\x37\x2e\x39\x20\ \x2d\x38\x36\x2e\x39\x33\x20\x2d\x35\x2e\x31\x37\x43\x2d\x38\x36\ \x2e\x39\x33\x20\x2d\x35\x2e\x31\x37\x20\x2d\x38\x38\x2e\x38\x38\ \x20\x2d\x32\x2e\x38\x33\x20\x2d\x38\x38\x2e\x34\x39\x20\x31\x2e\ \x30\x37\x4c\x2d\x38\x31\x2e\x30\x38\x20\x34\x2e\x39\x37\x43\x2d\ \x38\x31\x2e\x30\x38\x20\x34\x2e\x39\x37\x20\x2d\x37\x39\x2e\x31\ \x33\x20\x31\x39\x2e\x30\x31\x20\x2d\x36\x38\x2e\x36\x20\x32\x34\ \x2e\x30\x38\x43\x2d\x36\x33\x2e\x38\x38\x36\x20\x32\x36\x2e\x33\ \x35\x20\x2d\x36\x30\x2e\x38\x20\x31\x39\x2e\x37\x39\x20\x2d\x35\ \x38\x2e\x38\x35\x20\x31\x33\x2e\x39\x34\x43\x2d\x35\x38\x2e\x38\ \x35\x20\x31\x33\x2e\x39\x34\x20\x2d\x36\x31\x2e\x39\x37\x20\x2d\ \x36\x2e\x37\x33\x20\x2d\x35\x39\x2e\x36\x33\x20\x2d\x31\x31\x2e\ \x30\x32\x43\x2d\x35\x39\x2e\x36\x33\x20\x2d\x31\x31\x2e\x30\x32\ \x20\x2d\x34\x39\x2e\x31\x20\x2d\x32\x30\x2e\x37\x37\x20\x2d\x34\ \x39\x2e\x34\x39\x20\x2d\x32\x34\x2e\x32\x38\x43\x2d\x34\x39\x2e\ \x34\x39\x20\x2d\x32\x34\x2e\x32\x38\x20\x2d\x34\x39\x2e\x38\x38\ \x20\x2d\x34\x31\x2e\x38\x33\x20\x2d\x35\x31\x2e\x30\x35\x20\x2d\ \x34\x32\x2e\x36\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x32\x62\x38\x39\x32\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x31\x2e\ \x35\x20\x2d\x34\x31\x2e\x36\x32\x43\x2d\x35\x32\x2e\x34\x38\x20\ \x2d\x34\x32\x2e\x35\x34\x20\x2d\x35\x39\x2e\x38\x36\x20\x2d\x34\ \x38\x2e\x30\x38\x20\x2d\x36\x35\x2e\x35\x36\x20\x2d\x34\x32\x43\ \x2d\x36\x35\x2e\x35\x36\x20\x2d\x34\x32\x20\x2d\x37\x35\x2e\x34\ \x34\x20\x2d\x32\x34\x2e\x39\x20\x2d\x37\x34\x2e\x36\x38\x20\x2d\ \x31\x38\x2e\x38\x32\x4c\x2d\x37\x34\x2e\x36\x38\x20\x2d\x31\x36\ \x2e\x39\x32\x43\x2d\x37\x34\x2e\x36\x38\x20\x2d\x31\x36\x2e\x39\ \x32\x20\x2d\x38\x31\x2e\x39\x20\x2d\x31\x37\x2e\x33\x20\x2d\x38\ \x33\x2e\x34\x32\x20\x2d\x31\x35\x2e\x34\x43\x2d\x38\x33\x2e\x34\ \x32\x20\x2d\x31\x35\x2e\x34\x20\x2d\x38\x34\x2e\x35\x36\x20\x2d\ \x31\x30\x2e\x34\x36\x20\x2d\x38\x35\x2e\x37\x20\x2d\x31\x30\x2e\ \x30\x38\x43\x2d\x38\x35\x2e\x37\x20\x2d\x31\x30\x2e\x30\x38\x20\ \x2d\x38\x38\x2e\x33\x36\x20\x2d\x37\x2e\x38\x20\x2d\x38\x36\x2e\ \x34\x36\x20\x2d\x35\x2e\x31\x34\x43\x2d\x38\x36\x2e\x34\x36\x20\ \x2d\x35\x2e\x31\x34\x20\x2d\x38\x38\x2e\x33\x36\x20\x2d\x32\x2e\ \x38\x36\x20\x2d\x38\x37\x2e\x39\x38\x20\x30\x2e\x39\x34\x4c\x2d\ \x38\x30\x2e\x37\x36\x20\x34\x2e\x37\x34\x43\x2d\x38\x30\x2e\x37\ \x36\x20\x34\x2e\x37\x34\x20\x2d\x37\x38\x2e\x38\x36\x20\x31\x38\ \x2e\x34\x32\x20\x2d\x36\x38\x2e\x36\x20\x32\x33\x2e\x33\x36\x43\ \x2d\x36\x34\x2e\x30\x30\x36\x20\x32\x35\x2e\x35\x37\x32\x20\x2d\ \x36\x31\x20\x31\x39\x2e\x31\x38\x20\x2d\x35\x39\x2e\x31\x20\x31\ \x33\x2e\x34\x38\x43\x2d\x35\x39\x2e\x31\x20\x31\x33\x2e\x34\x38\ \x20\x2d\x36\x32\x2e\x31\x34\x20\x2d\x36\x2e\x36\x36\x20\x2d\x35\ \x39\x2e\x38\x36\x20\x2d\x31\x30\x2e\x38\x34\x43\x2d\x35\x39\x2e\ \x38\x36\x20\x2d\x31\x30\x2e\x38\x34\x20\x2d\x34\x39\x2e\x36\x20\ \x2d\x32\x30\x2e\x33\x34\x20\x2d\x34\x39\x2e\x39\x38\x20\x2d\x32\ \x33\x2e\x37\x36\x43\x2d\x34\x39\x2e\x39\x38\x20\x2d\x32\x33\x2e\ \x37\x36\x20\x2d\x35\x30\x2e\x33\x36\x20\x2d\x34\x30\x2e\x38\x36\ \x20\x2d\x35\x31\x2e\x35\x20\x2d\x34\x31\x2e\x36\x32\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x66\x38\x64\x63\x63\x38\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x35\x31\x2e\x39\x35\x20\x2d\x34\x30\x2e\x36\ \x33\x43\x2d\x35\x32\x2e\x38\x32\x20\x2d\x34\x31\x2e\x36\x31\x20\ \x2d\x36\x30\x2e\x30\x39\x20\x2d\x34\x36\x2e\x39\x32\x20\x2d\x36\ \x35\x2e\x36\x34\x20\x2d\x34\x31\x43\x2d\x36\x35\x2e\x36\x34\x20\ \x2d\x34\x31\x20\x2d\x37\x35\x2e\x32\x36\x20\x2d\x32\x34\x2e\x33\ \x35\x20\x2d\x37\x34\x2e\x35\x32\x20\x2d\x31\x38\x2e\x34\x33\x4c\ \x2d\x37\x34\x2e\x35\x32\x20\x2d\x31\x36\x2e\x35\x38\x43\x2d\x37\ \x34\x2e\x35\x32\x20\x2d\x31\x36\x2e\x35\x38\x20\x2d\x38\x31\x2e\ \x35\x35\x20\x2d\x31\x36\x2e\x39\x35\x20\x2d\x38\x33\x2e\x30\x33\ \x20\x2d\x31\x35\x2e\x31\x43\x2d\x38\x33\x2e\x30\x33\x20\x2d\x31\ \x35\x2e\x31\x20\x2d\x38\x34\x2e\x31\x34\x20\x2d\x31\x30\x2e\x32\ \x39\x20\x2d\x38\x35\x2e\x32\x35\x20\x2d\x39\x2e\x39\x32\x43\x2d\ \x38\x35\x2e\x32\x35\x20\x2d\x39\x2e\x39\x32\x20\x2d\x38\x37\x2e\ \x38\x34\x20\x2d\x37\x2e\x37\x20\x2d\x38\x35\x2e\x39\x39\x20\x2d\ \x35\x2e\x31\x31\x43\x2d\x38\x35\x2e\x39\x39\x20\x2d\x35\x2e\x31\ \x31\x20\x2d\x38\x37\x2e\x38\x34\x20\x2d\x32\x2e\x38\x39\x20\x2d\ \x38\x37\x2e\x34\x37\x20\x30\x2e\x38\x31\x4c\x2d\x38\x30\x2e\x34\ \x34\x20\x34\x2e\x35\x31\x43\x2d\x38\x30\x2e\x34\x34\x20\x34\x2e\ \x35\x31\x20\x2d\x37\x38\x2e\x35\x39\x20\x31\x37\x2e\x38\x33\x20\ \x2d\x36\x38\x2e\x36\x20\x32\x32\x2e\x36\x34\x43\x2d\x36\x34\x2e\ \x31\x32\x37\x20\x32\x34\x2e\x37\x39\x34\x20\x2d\x36\x31\x2e\x32\ \x20\x31\x38\x2e\x35\x37\x20\x2d\x35\x39\x2e\x33\x35\x20\x31\x33\ \x2e\x30\x32\x43\x2d\x35\x39\x2e\x33\x35\x20\x31\x33\x2e\x30\x32\ \x20\x2d\x36\x32\x2e\x33\x31\x20\x2d\x36\x2e\x35\x39\x20\x2d\x36\ \x30\x2e\x30\x39\x20\x2d\x31\x30\x2e\x36\x36\x43\x2d\x36\x30\x2e\ \x30\x39\x20\x2d\x31\x30\x2e\x36\x36\x20\x2d\x35\x30\x2e\x31\x20\ \x2d\x31\x39\x2e\x39\x31\x20\x2d\x35\x30\x2e\x34\x37\x20\x2d\x32\ \x33\x2e\x32\x34\x43\x2d\x35\x30\x2e\x34\x37\x20\x2d\x32\x33\x2e\ \x32\x34\x20\x2d\x35\x30\x2e\x38\x34\x20\x2d\x33\x39\x2e\x38\x39\ \x20\x2d\x35\x31\x2e\x39\x35\x20\x2d\x34\x30\x2e\x36\x33\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x35\x39\x2e\x36\x20\x31\x32\x2e\x34\x36\ \x43\x2d\x35\x39\x2e\x36\x20\x31\x32\x2e\x34\x36\x20\x2d\x36\x32\ \x2e\x34\x38\x20\x2d\x36\x2e\x35\x32\x20\x2d\x36\x30\x2e\x33\x32\ \x20\x2d\x31\x30\x2e\x34\x38\x43\x2d\x36\x30\x2e\x33\x32\x20\x2d\ \x31\x30\x2e\x34\x38\x20\x2d\x35\x30\x2e\x36\x20\x2d\x31\x39\x2e\ \x34\x38\x20\x2d\x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\ \x43\x2d\x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\x20\x2d\ \x35\x31\x2e\x33\x32\x20\x2d\x33\x38\x2e\x39\x32\x20\x2d\x35\x32\ \x2e\x34\x20\x2d\x33\x39\x2e\x36\x34\x43\x2d\x35\x33\x2e\x31\x36\ \x20\x2d\x34\x30\x2e\x36\x38\x20\x2d\x36\x30\x2e\x33\x32\x20\x2d\ \x34\x35\x2e\x37\x36\x20\x2d\x36\x35\x2e\x37\x32\x20\x2d\x34\x30\ \x43\x2d\x36\x35\x2e\x37\x32\x20\x2d\x34\x30\x20\x2d\x37\x35\x2e\ \x30\x38\x20\x2d\x32\x33\x2e\x38\x20\x2d\x37\x34\x2e\x33\x36\x20\ \x2d\x31\x38\x2e\x30\x34\x4c\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\ \x36\x2e\x32\x34\x43\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\x36\x2e\ \x32\x34\x20\x2d\x38\x31\x2e\x32\x20\x2d\x31\x36\x2e\x36\x20\x2d\ \x38\x32\x2e\x36\x34\x20\x2d\x31\x34\x2e\x38\x43\x2d\x38\x32\x2e\ \x36\x34\x20\x2d\x31\x34\x2e\x38\x20\x2d\x38\x33\x2e\x37\x32\x20\ \x2d\x31\x30\x2e\x31\x32\x20\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\ \x37\x36\x43\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\x37\x36\x20\x2d\ \x38\x37\x2e\x33\x32\x20\x2d\x37\x2e\x36\x20\x2d\x38\x35\x2e\x35\ \x32\x20\x2d\x35\x2e\x30\x38\x43\x2d\x38\x35\x2e\x35\x32\x20\x2d\ \x35\x2e\x30\x38\x20\x2d\x38\x37\x2e\x33\x32\x20\x2d\x32\x2e\x39\ \x32\x20\x2d\x38\x36\x2e\x39\x36\x20\x30\x2e\x36\x38\x4c\x2d\x38\ \x30\x2e\x31\x32\x20\x34\x2e\x32\x38\x43\x2d\x38\x30\x2e\x31\x32\ \x20\x34\x2e\x32\x38\x20\x2d\x37\x38\x2e\x33\x32\x20\x31\x37\x2e\ \x32\x34\x20\x2d\x36\x38\x2e\x36\x20\x32\x31\x2e\x39\x32\x43\x2d\ \x36\x34\x2e\x32\x34\x38\x20\x32\x34\x2e\x30\x31\x35\x20\x2d\x36\ \x31\x2e\x34\x20\x31\x37\x2e\x38\x36\x20\x2d\x35\x39\x2e\x36\x20\ \x31\x32\x2e\x34\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x32\x2e\ \x37\x20\x36\x2e\x32\x43\x2d\x36\x32\x2e\x37\x20\x36\x2e\x32\x20\ \x2d\x38\x34\x2e\x33\x20\x2d\x34\x20\x2d\x38\x35\x2e\x32\x20\x2d\ \x34\x2e\x38\x43\x2d\x38\x35\x2e\x32\x20\x2d\x34\x2e\x38\x20\x2d\ \x37\x36\x2e\x31\x20\x33\x2e\x34\x20\x2d\x37\x35\x2e\x33\x20\x33\ \x2e\x34\x43\x2d\x37\x34\x2e\x35\x20\x33\x2e\x34\x20\x2d\x36\x32\ \x2e\x37\x20\x36\x2e\x32\x20\x2d\x36\x32\x2e\x37\x20\x36\x2e\x32\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x39\x2e\x38\x20\x30\x43\x2d\ \x37\x39\x2e\x38\x20\x30\x20\x2d\x36\x31\x2e\x34\x20\x33\x2e\x36\ \x20\x2d\x36\x31\x2e\x34\x20\x38\x43\x2d\x36\x31\x2e\x34\x20\x31\ \x30\x2e\x39\x31\x32\x20\x2d\x36\x31\x2e\x36\x34\x33\x20\x32\x34\ \x2e\x33\x33\x31\x20\x2d\x36\x37\x20\x32\x32\x2e\x38\x43\x2d\x37\ \x35\x2e\x34\x20\x32\x30\x2e\x34\x20\x2d\x37\x31\x2e\x38\x20\x36\ \x20\x2d\x37\x39\x2e\x38\x20\x30\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\x63\x63\x33\ \x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x37\x31\x2e\x34\x20\x33\x2e\x38\x43\x2d\x37\x31\x2e\x34\x20\x33\ \x2e\x38\x20\x2d\x36\x32\x2e\x34\x32\x32\x20\x35\x2e\x32\x37\x34\ \x20\x2d\x36\x31\x2e\x34\x20\x38\x43\x2d\x36\x30\x2e\x38\x20\x39\ \x2e\x36\x20\x2d\x36\x30\x2e\x31\x33\x37\x20\x31\x37\x2e\x39\x30\ \x38\x20\x2d\x36\x35\x2e\x36\x20\x31\x39\x43\x2d\x37\x30\x2e\x31\ \x35\x32\x20\x31\x39\x2e\x39\x31\x31\x20\x2d\x37\x32\x2e\x33\x38\ \x32\x20\x39\x2e\x36\x39\x20\x2d\x37\x31\x2e\x34\x20\x33\x2e\x38\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x2e\x35\x39\x35\x20\x34\x36\ \x2e\x33\x34\x39\x43\x31\x34\x2e\x30\x39\x38\x20\x34\x34\x2e\x36\ \x30\x37\x20\x31\x35\x2e\x34\x30\x39\x20\x34\x34\x2e\x37\x33\x38\ \x20\x31\x37\x2e\x32\x20\x34\x34\x2e\x32\x43\x31\x39\x2e\x32\x20\ \x34\x33\x2e\x36\x20\x33\x31\x2e\x34\x20\x33\x39\x2e\x38\x20\x33\ \x32\x2e\x32\x20\x33\x37\x2e\x32\x43\x33\x33\x20\x33\x34\x2e\x36\ \x20\x34\x36\x2e\x32\x20\x33\x39\x20\x34\x36\x2e\x32\x20\x33\x39\ \x43\x34\x38\x20\x33\x39\x2e\x38\x20\x35\x32\x2e\x34\x20\x34\x32\ \x2e\x34\x20\x35\x32\x2e\x34\x20\x34\x32\x2e\x34\x43\x35\x37\x2e\ \x32\x20\x34\x33\x2e\x36\x20\x36\x33\x2e\x38\x20\x34\x34\x20\x36\ \x33\x2e\x38\x20\x34\x34\x43\x36\x36\x2e\x32\x20\x34\x35\x20\x36\ \x39\x2e\x36\x20\x34\x37\x2e\x38\x20\x36\x39\x2e\x36\x20\x34\x37\ \x2e\x38\x43\x38\x34\x2e\x32\x20\x35\x38\x20\x39\x36\x2e\x36\x30\ \x31\x20\x35\x30\x2e\x38\x20\x39\x36\x2e\x36\x30\x31\x20\x35\x30\ \x2e\x38\x43\x31\x31\x36\x2e\x36\x30\x31\x20\x34\x34\x2e\x32\x20\ \x31\x31\x30\x2e\x36\x30\x31\x20\x32\x37\x20\x31\x31\x30\x2e\x36\ \x30\x31\x20\x32\x37\x43\x31\x30\x37\x2e\x36\x30\x31\x20\x31\x38\ \x20\x31\x31\x30\x2e\x38\x30\x31\x20\x31\x34\x2e\x36\x20\x31\x31\ \x30\x2e\x38\x30\x31\x20\x31\x34\x2e\x36\x43\x31\x31\x31\x2e\x30\ \x30\x31\x20\x31\x30\x2e\x38\x20\x31\x31\x38\x2e\x32\x30\x31\x20\ \x31\x37\x2e\x32\x20\x31\x31\x38\x2e\x32\x30\x31\x20\x31\x37\x2e\ \x32\x43\x31\x32\x30\x2e\x38\x30\x31\x20\x32\x31\x2e\x34\x20\x31\ \x32\x31\x2e\x36\x30\x31\x20\x32\x36\x2e\x34\x20\x31\x32\x31\x2e\ \x36\x30\x31\x20\x32\x36\x2e\x34\x43\x31\x32\x39\x2e\x36\x30\x31\ \x20\x33\x37\x2e\x36\x20\x31\x32\x36\x2e\x32\x30\x31\x20\x31\x39\ \x2e\x38\x20\x31\x32\x36\x2e\x32\x30\x31\x20\x31\x39\x2e\x38\x43\ \x31\x32\x36\x2e\x34\x30\x31\x20\x31\x38\x2e\x38\x20\x31\x32\x33\ \x2e\x36\x30\x31\x20\x31\x35\x2e\x32\x20\x31\x32\x33\x2e\x36\x30\ \x31\x20\x31\x34\x43\x31\x32\x33\x2e\x36\x30\x31\x20\x31\x32\x2e\ \x38\x20\x31\x32\x31\x2e\x38\x30\x31\x20\x39\x2e\x34\x20\x31\x32\ \x31\x2e\x38\x30\x31\x20\x39\x2e\x34\x43\x31\x31\x38\x2e\x38\x30\ \x31\x20\x36\x20\x31\x32\x31\x2e\x32\x30\x31\x20\x2d\x31\x20\x31\ \x32\x31\x2e\x32\x30\x31\x20\x2d\x31\x43\x31\x32\x33\x2e\x30\x30\ \x31\x20\x2d\x31\x34\x2e\x38\x20\x31\x32\x30\x2e\x38\x30\x31\x20\ \x2d\x31\x33\x20\x31\x32\x30\x2e\x38\x30\x31\x20\x2d\x31\x33\x43\ \x31\x31\x39\x2e\x36\x30\x31\x20\x2d\x31\x34\x2e\x38\x20\x31\x31\ \x30\x2e\x34\x30\x31\x20\x2d\x34\x2e\x38\x20\x31\x31\x30\x2e\x34\ \x30\x31\x20\x2d\x34\x2e\x38\x43\x31\x30\x38\x2e\x32\x30\x31\x20\ \x2d\x31\x2e\x34\x20\x31\x30\x32\x2e\x32\x30\x31\x20\x30\x2e\x32\ \x20\x31\x30\x32\x2e\x32\x30\x31\x20\x30\x2e\x32\x43\x39\x39\x2e\ \x34\x30\x31\x20\x32\x20\x39\x36\x2e\x30\x30\x31\x20\x30\x2e\x36\ \x20\x39\x36\x2e\x30\x30\x31\x20\x30\x2e\x36\x43\x39\x33\x2e\x34\ \x30\x31\x20\x30\x2e\x32\x20\x38\x37\x2e\x38\x30\x31\x20\x37\x2e\ \x32\x20\x38\x37\x2e\x38\x30\x31\x20\x37\x2e\x32\x43\x39\x30\x2e\ \x36\x30\x31\x20\x37\x20\x39\x33\x2e\x30\x30\x31\x20\x31\x31\x2e\ \x34\x20\x39\x35\x2e\x34\x30\x31\x20\x31\x31\x2e\x36\x43\x39\x37\ \x2e\x38\x30\x31\x20\x31\x31\x2e\x38\x20\x39\x39\x2e\x36\x30\x31\ \x20\x39\x2e\x32\x20\x31\x30\x31\x2e\x32\x30\x31\x20\x38\x2e\x36\ \x43\x31\x30\x32\x2e\x38\x30\x31\x20\x38\x20\x31\x30\x35\x2e\x36\ \x30\x31\x20\x31\x33\x2e\x38\x20\x31\x30\x35\x2e\x36\x30\x31\x20\ \x31\x33\x2e\x38\x43\x31\x30\x36\x2e\x30\x30\x31\x20\x31\x36\x2e\ \x34\x20\x31\x30\x30\x2e\x34\x30\x31\x20\x32\x31\x2e\x32\x20\x31\ \x30\x30\x2e\x34\x30\x31\x20\x32\x31\x2e\x32\x43\x31\x30\x30\x2e\ \x30\x30\x31\x20\x32\x35\x2e\x38\x20\x39\x38\x2e\x34\x30\x31\x20\ \x32\x34\x2e\x32\x20\x39\x38\x2e\x34\x30\x31\x20\x32\x34\x2e\x32\ \x43\x39\x35\x2e\x34\x30\x31\x20\x32\x33\x2e\x36\x20\x39\x34\x2e\ \x32\x30\x31\x20\x32\x37\x2e\x34\x20\x39\x33\x2e\x32\x30\x31\x20\ \x33\x32\x43\x39\x32\x2e\x32\x30\x31\x20\x33\x36\x2e\x36\x20\x38\ \x38\x2e\x30\x30\x31\x20\x33\x37\x20\x38\x38\x2e\x30\x30\x31\x20\ \x33\x37\x43\x38\x36\x2e\x34\x30\x31\x20\x34\x34\x2e\x34\x20\x38\ \x35\x2e\x32\x20\x34\x31\x2e\x34\x20\x38\x35\x2e\x32\x20\x34\x31\ \x2e\x34\x43\x38\x35\x20\x33\x35\x2e\x38\x20\x37\x39\x20\x34\x31\ \x2e\x36\x20\x37\x39\x20\x34\x31\x2e\x36\x43\x37\x37\x2e\x38\x20\ \x34\x33\x2e\x36\x20\x37\x33\x2e\x32\x20\x34\x31\x2e\x34\x20\x37\ \x33\x2e\x32\x20\x34\x31\x2e\x34\x43\x36\x36\x2e\x34\x20\x33\x39\ \x2e\x34\x20\x36\x38\x2e\x38\x20\x33\x37\x2e\x34\x20\x36\x38\x2e\ \x38\x20\x33\x37\x2e\x34\x43\x37\x30\x2e\x36\x20\x33\x35\x2e\x32\ \x20\x38\x31\x2e\x38\x20\x33\x37\x2e\x34\x20\x38\x31\x2e\x38\x20\ \x33\x37\x2e\x34\x43\x38\x34\x20\x33\x35\x2e\x38\x20\x37\x36\x20\ \x33\x31\x2e\x38\x20\x37\x36\x20\x33\x31\x2e\x38\x43\x37\x35\x2e\ \x34\x20\x33\x30\x20\x37\x36\x2e\x34\x20\x32\x35\x2e\x36\x20\x37\ \x36\x2e\x34\x20\x32\x35\x2e\x36\x43\x37\x37\x2e\x36\x20\x32\x32\ \x2e\x34\x20\x38\x34\x2e\x34\x20\x31\x36\x2e\x38\x20\x38\x34\x2e\ \x34\x20\x31\x36\x2e\x38\x43\x39\x33\x2e\x38\x30\x31\x20\x31\x35\ \x2e\x36\x20\x39\x31\x2e\x30\x30\x31\x20\x31\x34\x20\x39\x31\x2e\ \x30\x30\x31\x20\x31\x34\x43\x38\x34\x2e\x38\x30\x31\x20\x38\x2e\ \x38\x20\x37\x39\x20\x31\x36\x2e\x34\x20\x37\x39\x20\x31\x36\x2e\ \x34\x43\x37\x36\x2e\x38\x20\x32\x32\x2e\x36\x20\x35\x39\x2e\x34\ \x20\x33\x37\x2e\x36\x20\x35\x39\x2e\x34\x20\x33\x37\x2e\x36\x43\ \x35\x34\x2e\x36\x20\x34\x31\x20\x35\x37\x2e\x32\x20\x33\x34\x2e\ \x32\x20\x35\x33\x2e\x32\x20\x33\x37\x2e\x36\x43\x34\x39\x2e\x32\ \x20\x34\x31\x20\x32\x38\x2e\x36\x20\x33\x32\x20\x32\x38\x2e\x36\ \x20\x33\x32\x43\x31\x37\x2e\x30\x33\x38\x20\x33\x30\x2e\x38\x30\ \x37\x20\x31\x34\x2e\x33\x30\x36\x20\x34\x36\x2e\x35\x34\x39\x20\ \x31\x30\x2e\x37\x37\x37\x20\x34\x33\x2e\x34\x32\x39\x43\x31\x30\ \x2e\x37\x37\x37\x20\x34\x33\x2e\x34\x32\x39\x20\x31\x36\x2e\x31\ \x39\x35\x20\x35\x31\x2e\x39\x34\x39\x20\x31\x34\x2e\x35\x39\x35\ \x20\x34\x36\x2e\x33\x34\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\ \x39\x2e\x34\x30\x31\x20\x2d\x31\x32\x30\x43\x32\x30\x39\x2e\x34\ \x30\x31\x20\x2d\x31\x32\x30\x20\x31\x38\x33\x2e\x38\x30\x31\x20\ \x2d\x31\x31\x32\x20\x31\x38\x31\x2e\x30\x30\x31\x20\x2d\x39\x33\ \x2e\x32\x43\x31\x38\x31\x2e\x30\x30\x31\x20\x2d\x39\x33\x2e\x32\ \x20\x31\x37\x38\x2e\x36\x30\x31\x20\x2d\x37\x30\x2e\x34\x20\x31\ \x39\x39\x2e\x30\x30\x31\x20\x2d\x35\x32\x2e\x38\x43\x31\x39\x39\ \x2e\x30\x30\x31\x20\x2d\x35\x32\x2e\x38\x20\x31\x39\x39\x2e\x34\ \x30\x31\x20\x2d\x34\x36\x2e\x34\x20\x32\x30\x31\x2e\x34\x30\x31\ \x20\x2d\x34\x33\x2e\x32\x43\x32\x30\x31\x2e\x34\x30\x31\x20\x2d\ \x34\x33\x2e\x32\x20\x31\x39\x39\x2e\x38\x30\x31\x20\x2d\x33\x38\ \x2e\x34\x20\x32\x31\x38\x2e\x36\x30\x31\x20\x2d\x34\x36\x4c\x32\ \x34\x35\x2e\x38\x30\x31\x20\x2d\x35\x34\x2e\x34\x43\x32\x34\x35\ \x2e\x38\x30\x31\x20\x2d\x35\x34\x2e\x34\x20\x32\x35\x32\x2e\x32\ \x30\x31\x20\x2d\x35\x36\x2e\x38\x20\x32\x35\x37\x2e\x34\x30\x31\ \x20\x2d\x36\x35\x2e\x36\x43\x32\x36\x32\x2e\x36\x30\x31\x20\x2d\ \x37\x34\x2e\x34\x20\x32\x37\x37\x2e\x38\x30\x31\x20\x2d\x39\x33\ \x2e\x32\x20\x32\x37\x34\x2e\x32\x30\x31\x20\x2d\x31\x31\x38\x2e\ \x34\x43\x32\x37\x34\x2e\x32\x30\x31\x20\x2d\x31\x31\x38\x2e\x34\ \x20\x32\x37\x35\x2e\x34\x30\x31\x20\x2d\x31\x32\x39\x2e\x36\x20\ \x32\x36\x39\x2e\x34\x30\x31\x20\x2d\x31\x33\x30\x43\x32\x36\x39\ \x2e\x34\x30\x31\x20\x2d\x31\x33\x30\x20\x32\x36\x31\x2e\x30\x30\ \x31\x20\x2d\x31\x33\x31\x2e\x36\x20\x32\x35\x33\x2e\x38\x30\x31\ \x20\x2d\x31\x32\x34\x43\x32\x35\x33\x2e\x38\x30\x31\x20\x2d\x31\ \x32\x34\x20\x32\x34\x37\x2e\x30\x30\x31\x20\x2d\x31\x32\x30\x2e\ \x38\x20\x32\x34\x34\x2e\x36\x30\x31\x20\x2d\x31\x32\x31\x2e\x32\ \x4c\x32\x30\x39\x2e\x34\x30\x31\x20\x2d\x31\x32\x30\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x32\x36\x34\x2e\x30\x32\x32\x20\x2d\x31\x32\x30\ \x2e\x39\x39\x43\x32\x36\x34\x2e\x30\x32\x32\x20\x2d\x31\x32\x30\ \x2e\x39\x39\x20\x32\x36\x36\x2e\x31\x32\x32\x20\x2d\x31\x32\x39\ \x2e\x39\x32\x20\x32\x36\x31\x2e\x32\x38\x32\x20\x2d\x31\x32\x35\ \x2e\x30\x38\x43\x32\x36\x31\x2e\x32\x38\x32\x20\x2d\x31\x32\x35\ \x2e\x30\x38\x20\x32\x35\x34\x2e\x32\x34\x32\x20\x2d\x31\x31\x39\ \x2e\x33\x36\x20\x32\x34\x36\x2e\x37\x36\x31\x20\x2d\x31\x31\x39\ \x2e\x33\x36\x43\x32\x34\x36\x2e\x37\x36\x31\x20\x2d\x31\x31\x39\ \x2e\x33\x36\x20\x32\x33\x32\x2e\x32\x34\x31\x20\x2d\x31\x31\x37\ \x2e\x31\x36\x20\x32\x32\x37\x2e\x38\x34\x31\x20\x2d\x31\x30\x33\ \x2e\x39\x36\x43\x32\x32\x37\x2e\x38\x34\x31\x20\x2d\x31\x30\x33\ \x2e\x39\x36\x20\x32\x32\x33\x2e\x38\x38\x31\x20\x2d\x37\x37\x2e\ \x31\x32\x20\x32\x33\x31\x2e\x38\x30\x31\x20\x2d\x37\x31\x2e\x34\ \x43\x32\x33\x31\x2e\x38\x30\x31\x20\x2d\x37\x31\x2e\x34\x20\x32\ \x33\x36\x2e\x36\x34\x31\x20\x2d\x36\x33\x2e\x39\x32\x20\x32\x34\ \x33\x2e\x36\x38\x31\x20\x2d\x37\x30\x2e\x35\x32\x43\x32\x35\x30\ \x2e\x37\x32\x32\x20\x2d\x37\x37\x2e\x31\x32\x20\x32\x36\x36\x2e\ \x32\x32\x32\x20\x2d\x31\x30\x37\x2e\x33\x35\x20\x32\x36\x34\x2e\ \x30\x32\x32\x20\x2d\x31\x32\x30\x2e\x39\x39\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x33\x32\ \x33\x32\x33\x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x32\x36\x33\x2e\x36\x34\x38\x20\x2d\x31\x32\x30\x2e\x36\ \x33\x32\x43\x32\x36\x33\x2e\x36\x34\x38\x20\x2d\x31\x32\x30\x2e\ \x36\x33\x32\x20\x32\x36\x35\x2e\x37\x33\x38\x20\x2d\x31\x32\x39\ \x2e\x33\x37\x36\x20\x32\x36\x30\x2e\x39\x38\x36\x20\x2d\x31\x32\ \x34\x2e\x36\x32\x34\x43\x32\x36\x30\x2e\x39\x38\x36\x20\x2d\x31\ \x32\x34\x2e\x36\x32\x34\x20\x32\x35\x34\x2e\x30\x37\x34\x20\x2d\ \x31\x31\x39\x2e\x30\x30\x38\x20\x32\x34\x36\x2e\x37\x32\x39\x20\ \x2d\x31\x31\x39\x2e\x30\x30\x38\x43\x32\x34\x36\x2e\x37\x32\x39\ \x20\x2d\x31\x31\x39\x2e\x30\x30\x38\x20\x32\x33\x32\x2e\x34\x37\ \x33\x20\x2d\x31\x31\x36\x2e\x38\x34\x38\x20\x32\x32\x38\x2e\x31\ \x35\x33\x20\x2d\x31\x30\x33\x2e\x38\x38\x38\x43\x32\x32\x38\x2e\ \x31\x35\x33\x20\x2d\x31\x30\x33\x2e\x38\x38\x38\x20\x32\x32\x34\ \x2e\x32\x36\x35\x20\x2d\x37\x37\x2e\x35\x33\x36\x20\x32\x33\x32\ \x2e\x30\x34\x31\x20\x2d\x37\x31\x2e\x39\x32\x43\x32\x33\x32\x2e\ \x30\x34\x31\x20\x2d\x37\x31\x2e\x39\x32\x20\x32\x33\x36\x2e\x37\ \x39\x33\x20\x2d\x36\x34\x2e\x35\x37\x36\x20\x32\x34\x33\x2e\x37\ \x30\x35\x20\x2d\x37\x31\x2e\x30\x35\x36\x43\x32\x35\x30\x2e\x36\ \x31\x38\x20\x2d\x37\x37\x2e\x35\x33\x36\x20\x32\x36\x35\x2e\x38\ \x30\x38\x20\x2d\x31\x30\x37\x2e\x32\x34\x20\x32\x36\x33\x2e\x36\ \x34\x38\x20\x2d\x31\x32\x30\x2e\x36\x33\x32\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x36\x36\ \x36\x36\x36\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x32\x36\x33\x2e\x32\x37\x34\x20\x2d\x31\x32\x30\x2e\x32\ \x37\x34\x43\x32\x36\x33\x2e\x32\x37\x34\x20\x2d\x31\x32\x30\x2e\ \x32\x37\x34\x20\x32\x36\x35\x2e\x33\x35\x34\x20\x2d\x31\x32\x38\ \x2e\x38\x33\x32\x20\x32\x36\x30\x2e\x36\x39\x20\x2d\x31\x32\x34\ \x2e\x31\x36\x38\x43\x32\x36\x30\x2e\x36\x39\x20\x2d\x31\x32\x34\ \x2e\x31\x36\x38\x20\x32\x35\x33\x2e\x39\x30\x36\x20\x2d\x31\x31\ \x38\x2e\x36\x35\x36\x20\x32\x34\x36\x2e\x36\x39\x37\x20\x2d\x31\ \x31\x38\x2e\x36\x35\x36\x43\x32\x34\x36\x2e\x36\x39\x37\x20\x2d\ \x31\x31\x38\x2e\x36\x35\x36\x20\x32\x33\x32\x2e\x37\x30\x35\x20\ \x2d\x31\x31\x36\x2e\x35\x33\x36\x20\x32\x32\x38\x2e\x34\x36\x35\ \x20\x2d\x31\x30\x33\x2e\x38\x31\x36\x43\x32\x32\x38\x2e\x34\x36\ \x35\x20\x2d\x31\x30\x33\x2e\x38\x31\x36\x20\x32\x32\x34\x2e\x36\ \x34\x39\x20\x2d\x37\x37\x2e\x39\x35\x32\x20\x32\x33\x32\x2e\x32\ \x38\x31\x20\x2d\x37\x32\x2e\x34\x34\x43\x32\x33\x32\x2e\x32\x38\ \x31\x20\x2d\x37\x32\x2e\x34\x34\x20\x32\x33\x36\x2e\x39\x34\x35\ \x20\x2d\x36\x35\x2e\x32\x33\x32\x20\x32\x34\x33\x2e\x37\x32\x39\ \x20\x2d\x37\x31\x2e\x35\x39\x32\x43\x32\x35\x30\x2e\x35\x31\x34\ \x20\x2d\x37\x37\x2e\x39\x35\x32\x20\x32\x36\x35\x2e\x33\x39\x34\ \x20\x2d\x31\x30\x37\x2e\x31\x33\x20\x32\x36\x33\x2e\x32\x37\x34\ \x20\x2d\x31\x32\x30\x2e\x32\x37\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\x39\x39\ \x39\x39\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x32\x36\x32\x2e\x39\x20\x2d\x31\x31\x39\x2e\x39\x31\x36\x43\x32\ \x36\x32\x2e\x39\x20\x2d\x31\x31\x39\x2e\x39\x31\x36\x20\x32\x36\ \x34\x2e\x39\x37\x20\x2d\x31\x32\x38\x2e\x32\x38\x38\x20\x32\x36\ \x30\x2e\x33\x39\x34\x20\x2d\x31\x32\x33\x2e\x37\x31\x32\x43\x32\ \x36\x30\x2e\x33\x39\x34\x20\x2d\x31\x32\x33\x2e\x37\x31\x32\x20\ \x32\x35\x33\x2e\x37\x33\x38\x20\x2d\x31\x31\x38\x2e\x33\x30\x34\ \x20\x32\x34\x36\x2e\x36\x36\x35\x20\x2d\x31\x31\x38\x2e\x33\x30\ \x34\x43\x32\x34\x36\x2e\x36\x36\x35\x20\x2d\x31\x31\x38\x2e\x33\ \x30\x34\x20\x32\x33\x32\x2e\x39\x33\x37\x20\x2d\x31\x31\x36\x2e\ \x32\x32\x34\x20\x32\x32\x38\x2e\x37\x37\x37\x20\x2d\x31\x30\x33\ \x2e\x37\x34\x34\x43\x32\x32\x38\x2e\x37\x37\x37\x20\x2d\x31\x30\ \x33\x2e\x37\x34\x34\x20\x32\x32\x35\x2e\x30\x33\x33\x20\x2d\x37\ \x38\x2e\x33\x36\x38\x20\x32\x33\x32\x2e\x35\x32\x31\x20\x2d\x37\ \x32\x2e\x39\x36\x43\x32\x33\x32\x2e\x35\x32\x31\x20\x2d\x37\x32\ \x2e\x39\x36\x20\x32\x33\x37\x2e\x30\x39\x37\x20\x2d\x36\x35\x2e\ \x38\x38\x38\x20\x32\x34\x33\x2e\x37\x35\x33\x20\x2d\x37\x32\x2e\ \x31\x32\x38\x43\x32\x35\x30\x2e\x34\x31\x20\x2d\x37\x38\x2e\x33\ \x36\x38\x20\x32\x36\x34\x2e\x39\x38\x20\x2d\x31\x30\x37\x2e\x30\ \x32\x20\x32\x36\x32\x2e\x39\x20\x2d\x31\x31\x39\x2e\x39\x31\x36\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x32\x36\x32\x2e\x35\x32\x36\x20\x2d\ \x31\x31\x39\x2e\x35\x35\x38\x43\x32\x36\x32\x2e\x35\x32\x36\x20\ \x2d\x31\x31\x39\x2e\x35\x35\x38\x20\x32\x36\x34\x2e\x35\x38\x36\ \x20\x2d\x31\x32\x37\x2e\x37\x34\x34\x20\x32\x36\x30\x2e\x30\x39\ \x38\x20\x2d\x31\x32\x33\x2e\x32\x35\x36\x43\x32\x36\x30\x2e\x30\ \x39\x38\x20\x2d\x31\x32\x33\x2e\x32\x35\x36\x20\x32\x35\x33\x2e\ \x35\x36\x39\x20\x2d\x31\x31\x37\x2e\x39\x35\x32\x20\x32\x34\x36\ \x2e\x36\x33\x33\x20\x2d\x31\x31\x37\x2e\x39\x35\x32\x43\x32\x34\ \x36\x2e\x36\x33\x33\x20\x2d\x31\x31\x37\x2e\x39\x35\x32\x20\x32\ \x33\x33\x2e\x31\x36\x39\x20\x2d\x31\x31\x35\x2e\x39\x31\x32\x20\ \x32\x32\x39\x2e\x30\x38\x39\x20\x2d\x31\x30\x33\x2e\x36\x37\x32\ \x43\x32\x32\x39\x2e\x30\x38\x39\x20\x2d\x31\x30\x33\x2e\x36\x37\ \x32\x20\x32\x32\x35\x2e\x34\x31\x37\x20\x2d\x37\x38\x2e\x37\x38\ \x34\x20\x32\x33\x32\x2e\x37\x36\x31\x20\x2d\x37\x33\x2e\x34\x38\ \x43\x32\x33\x32\x2e\x37\x36\x31\x20\x2d\x37\x33\x2e\x34\x38\x20\ \x32\x33\x37\x2e\x32\x34\x39\x20\x2d\x36\x36\x2e\x35\x34\x34\x20\ \x32\x34\x33\x2e\x37\x37\x37\x20\x2d\x37\x32\x2e\x36\x36\x34\x43\ \x32\x35\x30\x2e\x33\x30\x35\x20\x2d\x37\x38\x2e\x37\x38\x34\x20\ \x32\x36\x34\x2e\x35\x36\x36\x20\x2d\x31\x30\x36\x2e\x39\x31\x20\ \x32\x36\x32\x2e\x35\x32\x36\x20\x2d\x31\x31\x39\x2e\x35\x35\x38\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x32\x36\x32\x2e\x31\x35\x31\x20\x2d\ \x31\x31\x39\x2e\x32\x43\x32\x36\x32\x2e\x31\x35\x31\x20\x2d\x31\ \x31\x39\x2e\x32\x20\x32\x36\x34\x2e\x32\x30\x31\x20\x2d\x31\x32\ \x37\x2e\x32\x20\x32\x35\x39\x2e\x38\x30\x31\x20\x2d\x31\x32\x32\ \x2e\x38\x43\x32\x35\x39\x2e\x38\x30\x31\x20\x2d\x31\x32\x32\x2e\ \x38\x20\x32\x35\x33\x2e\x34\x30\x31\x20\x2d\x31\x31\x37\x2e\x36\ \x20\x32\x34\x36\x2e\x36\x30\x31\x20\x2d\x31\x31\x37\x2e\x36\x43\ \x32\x34\x36\x2e\x36\x30\x31\x20\x2d\x31\x31\x37\x2e\x36\x20\x32\ \x33\x33\x2e\x34\x30\x31\x20\x2d\x31\x31\x35\x2e\x36\x20\x32\x32\ \x39\x2e\x34\x30\x31\x20\x2d\x31\x30\x33\x2e\x36\x43\x32\x32\x39\ \x2e\x34\x30\x31\x20\x2d\x31\x30\x33\x2e\x36\x20\x32\x32\x35\x2e\ \x38\x30\x31\x20\x2d\x37\x39\x2e\x32\x20\x32\x33\x33\x2e\x30\x30\ \x31\x20\x2d\x37\x34\x43\x32\x33\x33\x2e\x30\x30\x31\x20\x2d\x37\ \x34\x20\x32\x33\x37\x2e\x34\x30\x31\x20\x2d\x36\x37\x2e\x32\x20\ \x32\x34\x33\x2e\x38\x30\x31\x20\x2d\x37\x33\x2e\x32\x43\x32\x35\ \x30\x2e\x32\x30\x31\x20\x2d\x37\x39\x2e\x32\x20\x32\x36\x34\x2e\ \x31\x35\x31\x20\x2d\x31\x30\x36\x2e\x38\x20\x32\x36\x32\x2e\x31\ \x35\x31\x20\x2d\x31\x31\x39\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\x32\x36\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x35\x30\x2e\x36\x20\x38\x34\x43\x35\x30\x2e\x36\x20\x38\x34\x20\ \x33\x30\x2e\x32\x20\x36\x34\x2e\x38\x20\x32\x32\x2e\x32\x20\x36\ \x34\x43\x32\x32\x2e\x32\x20\x36\x34\x20\x2d\x31\x32\x2e\x32\x20\ \x36\x30\x20\x2d\x32\x37\x20\x37\x38\x43\x2d\x32\x37\x20\x37\x38\ \x20\x2d\x39\x2e\x34\x20\x35\x37\x2e\x36\x20\x31\x38\x2e\x32\x20\ \x36\x33\x2e\x32\x43\x31\x38\x2e\x32\x20\x36\x33\x2e\x32\x20\x2d\ \x33\x2e\x34\x20\x35\x38\x2e\x38\x20\x2d\x31\x35\x2e\x38\x20\x36\ \x32\x43\x2d\x31\x35\x2e\x38\x20\x36\x32\x20\x2d\x33\x32\x2e\x36\ \x20\x36\x32\x20\x2d\x34\x32\x2e\x32\x20\x37\x36\x4c\x2d\x34\x35\ \x20\x38\x30\x2e\x38\x43\x2d\x34\x35\x20\x38\x30\x2e\x38\x20\x2d\ \x34\x31\x20\x36\x36\x20\x2d\x32\x32\x2e\x36\x20\x36\x30\x43\x2d\ \x32\x32\x2e\x36\x20\x36\x30\x20\x30\x2e\x32\x20\x35\x35\x2e\x32\ \x20\x31\x31\x20\x36\x30\x43\x31\x31\x20\x36\x30\x20\x2d\x31\x30\ \x2e\x36\x20\x35\x33\x2e\x32\x20\x2d\x32\x30\x2e\x36\x20\x35\x35\ \x2e\x32\x43\x2d\x32\x30\x2e\x36\x20\x35\x35\x2e\x32\x20\x2d\x35\ \x31\x20\x35\x32\x2e\x38\x20\x2d\x36\x33\x2e\x38\x20\x37\x39\x2e\ \x32\x43\x2d\x36\x33\x2e\x38\x20\x37\x39\x2e\x32\x20\x2d\x35\x39\ \x2e\x38\x20\x36\x34\x2e\x38\x20\x2d\x34\x35\x20\x35\x37\x2e\x36\ \x43\x2d\x34\x35\x20\x35\x37\x2e\x36\x20\x2d\x33\x31\x2e\x34\x20\ \x34\x38\x2e\x38\x20\x2d\x31\x31\x20\x35\x31\x2e\x36\x43\x2d\x31\ \x31\x20\x35\x31\x2e\x36\x20\x33\x2e\x34\x20\x35\x34\x2e\x38\x20\ \x38\x2e\x36\x20\x35\x37\x2e\x32\x43\x31\x33\x2e\x38\x20\x35\x39\ \x2e\x36\x20\x31\x32\x2e\x36\x20\x35\x36\x2e\x38\x20\x34\x2e\x32\ \x20\x35\x32\x43\x34\x2e\x32\x20\x35\x32\x20\x2d\x31\x2e\x34\x20\ \x34\x32\x20\x2d\x31\x35\x2e\x34\x20\x34\x32\x2e\x34\x43\x2d\x31\ \x35\x2e\x34\x20\x34\x32\x2e\x34\x20\x2d\x35\x38\x2e\x32\x20\x34\ \x36\x20\x2d\x36\x38\x2e\x36\x20\x35\x38\x43\x2d\x36\x38\x2e\x36\ \x20\x35\x38\x20\x2d\x35\x35\x20\x34\x36\x2e\x38\x20\x2d\x34\x34\ \x2e\x36\x20\x34\x34\x43\x2d\x34\x34\x2e\x36\x20\x34\x34\x20\x2d\ \x32\x32\x2e\x32\x20\x33\x36\x20\x2d\x31\x33\x2e\x38\x20\x33\x36\ \x2e\x38\x43\x2d\x31\x33\x2e\x38\x20\x33\x36\x2e\x38\x20\x31\x31\ \x20\x33\x37\x2e\x38\x20\x31\x38\x2e\x36\x20\x33\x33\x2e\x38\x43\ \x31\x38\x2e\x36\x20\x33\x33\x2e\x38\x20\x37\x2e\x34\x20\x33\x38\ \x2e\x38\x20\x31\x30\x2e\x36\x20\x34\x32\x43\x31\x33\x2e\x38\x20\ \x34\x35\x2e\x32\x20\x32\x30\x2e\x36\x20\x35\x32\x2e\x38\x20\x32\ \x30\x2e\x36\x20\x35\x34\x43\x32\x30\x2e\x36\x20\x35\x35\x2e\x32\ \x20\x34\x34\x2e\x38\x20\x37\x37\x2e\x33\x20\x34\x38\x2e\x34\x20\ \x38\x31\x2e\x37\x4c\x35\x30\x2e\x36\x20\x38\x34\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x31\x38\x39\x20\x32\x37\x38\x43\x31\x38\x39\x20\x32\ \x37\x38\x20\x31\x37\x33\x2e\x35\x20\x32\x34\x31\x2e\x35\x20\x31\ \x36\x31\x20\x32\x33\x32\x43\x31\x36\x31\x20\x32\x33\x32\x20\x31\ \x38\x37\x20\x32\x34\x38\x20\x31\x39\x30\x2e\x35\x20\x32\x36\x36\ \x43\x31\x39\x30\x2e\x35\x20\x32\x36\x36\x20\x31\x39\x30\x2e\x35\ \x20\x32\x37\x36\x20\x31\x38\x39\x20\x32\x37\x38\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x32\x33\x36\x20\x32\x38\x35\x2e\x35\x43\x32\x33\x36\ \x20\x32\x38\x35\x2e\x35\x20\x32\x30\x39\x2e\x35\x20\x32\x33\x30\ \x2e\x35\x20\x31\x39\x31\x20\x32\x30\x36\x2e\x35\x43\x31\x39\x31\ \x20\x32\x30\x36\x2e\x35\x20\x32\x33\x34\x2e\x35\x20\x32\x34\x34\ \x20\x32\x33\x39\x2e\x35\x20\x32\x37\x30\x2e\x35\x4c\x32\x34\x30\ \x20\x32\x37\x36\x4c\x32\x33\x37\x20\x32\x37\x33\x2e\x35\x43\x32\ \x33\x37\x20\x32\x37\x33\x2e\x35\x20\x32\x33\x36\x2e\x35\x20\x32\ \x38\x32\x2e\x35\x20\x32\x33\x36\x20\x32\x38\x35\x2e\x35\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x32\x39\x32\x2e\x35\x20\x32\x33\x37\x43\x32\ \x39\x32\x2e\x35\x20\x32\x33\x37\x20\x32\x33\x30\x20\x31\x37\x37\ \x2e\x35\x20\x32\x32\x38\x2e\x35\x20\x31\x37\x35\x43\x32\x32\x38\ \x2e\x35\x20\x31\x37\x35\x20\x32\x38\x39\x20\x32\x34\x31\x20\x32\ \x39\x32\x20\x32\x34\x38\x2e\x35\x43\x32\x39\x32\x20\x32\x34\x38\ \x2e\x35\x20\x32\x39\x30\x20\x32\x33\x39\x2e\x35\x20\x32\x39\x32\ \x2e\x35\x20\x32\x33\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x30\x34\ \x20\x32\x38\x30\x2e\x35\x43\x31\x30\x34\x20\x32\x38\x30\x2e\x35\ \x20\x31\x32\x33\x2e\x35\x20\x32\x32\x38\x2e\x35\x20\x31\x34\x32\ \x2e\x35\x20\x32\x35\x31\x43\x31\x34\x32\x2e\x35\x20\x32\x35\x31\ \x20\x31\x35\x37\x2e\x35\x20\x32\x36\x31\x20\x31\x35\x37\x20\x32\ \x36\x34\x43\x31\x35\x37\x20\x32\x36\x34\x20\x31\x35\x33\x20\x32\ \x35\x37\x2e\x35\x20\x31\x33\x35\x20\x32\x35\x38\x43\x31\x33\x35\ \x20\x32\x35\x38\x20\x31\x31\x36\x20\x32\x35\x35\x20\x31\x30\x34\ \x20\x32\x38\x30\x2e\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x39\x34\ \x2e\x35\x20\x31\x35\x33\x43\x32\x39\x34\x2e\x35\x20\x31\x35\x33\ \x20\x32\x34\x39\x2e\x35\x20\x31\x32\x34\x2e\x35\x20\x32\x34\x32\ \x20\x31\x32\x33\x43\x32\x33\x30\x2e\x31\x39\x33\x20\x31\x32\x30\ \x2e\x36\x33\x39\x20\x32\x39\x31\x2e\x35\x20\x31\x35\x32\x20\x32\ \x39\x36\x2e\x35\x20\x31\x36\x32\x2e\x35\x43\x32\x39\x36\x2e\x35\ \x20\x31\x36\x32\x2e\x35\x20\x32\x39\x38\x2e\x35\x20\x31\x36\x30\ \x20\x32\x39\x34\x2e\x35\x20\x31\x35\x33\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x31\x34\x33\x2e\x38\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\ \x43\x31\x34\x33\x2e\x38\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\ \x20\x31\x36\x34\x2e\x32\x30\x31\x20\x32\x35\x37\x2e\x36\x30\x31\ \x20\x31\x37\x31\x2e\x30\x30\x31\x20\x32\x35\x30\x2e\x38\x30\x31\ \x4c\x31\x37\x35\x2e\x34\x30\x31\x20\x32\x35\x34\x2e\x34\x30\x31\ \x4c\x31\x39\x33\x2e\x30\x30\x31\x20\x32\x31\x36\x2e\x30\x30\x31\ \x4c\x31\x39\x36\x2e\x36\x30\x31\x20\x32\x32\x31\x2e\x32\x30\x31\ \x43\x31\x39\x36\x2e\x36\x30\x31\x20\x32\x32\x31\x2e\x32\x30\x31\ \x20\x32\x31\x31\x2e\x30\x30\x31\x20\x32\x30\x36\x2e\x34\x30\x31\ \x20\x32\x31\x30\x2e\x32\x30\x31\x20\x31\x39\x38\x2e\x34\x30\x31\ \x43\x32\x30\x39\x2e\x34\x30\x31\x20\x31\x39\x30\x2e\x34\x30\x31\ \x20\x32\x32\x33\x2e\x30\x30\x31\x20\x32\x30\x34\x2e\x34\x30\x31\ \x20\x32\x32\x33\x2e\x30\x30\x31\x20\x32\x30\x34\x2e\x34\x30\x31\ \x43\x32\x32\x33\x2e\x30\x30\x31\x20\x32\x30\x34\x2e\x34\x30\x31\ \x20\x32\x32\x32\x2e\x32\x30\x31\x20\x31\x39\x32\x2e\x38\x30\x31\ \x20\x32\x32\x39\x2e\x34\x30\x31\x20\x31\x39\x39\x2e\x36\x30\x31\ \x43\x32\x32\x39\x2e\x34\x30\x31\x20\x31\x39\x39\x2e\x36\x30\x31\ \x20\x32\x32\x37\x2e\x30\x30\x31\x20\x31\x38\x34\x2e\x30\x30\x31\ \x20\x32\x33\x35\x2e\x34\x30\x31\x20\x31\x39\x32\x2e\x30\x30\x31\ \x43\x32\x33\x35\x2e\x34\x30\x31\x20\x31\x39\x32\x2e\x30\x30\x31\ \x20\x32\x32\x34\x2e\x38\x36\x34\x20\x31\x36\x31\x2e\x38\x34\x34\ \x20\x32\x34\x37\x2e\x34\x30\x31\x20\x31\x38\x37\x2e\x36\x30\x31\ \x43\x32\x35\x33\x2e\x30\x30\x31\x20\x31\x39\x34\x2e\x30\x30\x31\ \x20\x32\x34\x38\x2e\x36\x30\x31\x20\x31\x38\x37\x2e\x32\x30\x31\ \x20\x32\x34\x38\x2e\x36\x30\x31\x20\x31\x38\x37\x2e\x32\x30\x31\ \x43\x32\x34\x38\x2e\x36\x30\x31\x20\x31\x38\x37\x2e\x32\x30\x31\ \x20\x32\x32\x32\x2e\x36\x30\x31\x20\x31\x33\x39\x2e\x32\x30\x31\ \x20\x32\x34\x34\x2e\x32\x30\x31\x20\x31\x35\x33\x2e\x36\x30\x31\ \x43\x32\x34\x34\x2e\x32\x30\x31\x20\x31\x35\x33\x2e\x36\x30\x31\ \x20\x32\x34\x36\x2e\x32\x30\x31\x20\x31\x33\x30\x2e\x38\x30\x31\ \x20\x32\x34\x35\x2e\x30\x30\x31\x20\x31\x32\x36\x2e\x34\x30\x31\ \x43\x32\x34\x33\x2e\x38\x30\x31\x20\x31\x32\x32\x2e\x30\x30\x31\ \x20\x32\x34\x31\x2e\x38\x30\x31\x20\x39\x39\x2e\x36\x20\x32\x33\ \x37\x2e\x30\x30\x31\x20\x39\x34\x2e\x34\x43\x32\x33\x32\x2e\x32\ \x30\x31\x20\x38\x39\x2e\x32\x20\x32\x33\x37\x2e\x34\x30\x31\x20\ \x38\x37\x2e\x36\x20\x32\x34\x33\x2e\x30\x30\x31\x20\x39\x32\x2e\ \x38\x43\x32\x34\x33\x2e\x30\x30\x31\x20\x39\x32\x2e\x38\x20\x32\ \x33\x31\x2e\x38\x30\x31\x20\x36\x38\x2e\x38\x20\x32\x34\x35\x2e\ \x30\x30\x31\x20\x38\x30\x2e\x38\x43\x32\x34\x35\x2e\x30\x30\x31\ \x20\x38\x30\x2e\x38\x20\x32\x34\x31\x2e\x34\x30\x31\x20\x36\x35\ \x2e\x36\x20\x32\x33\x37\x2e\x30\x30\x31\x20\x36\x32\x2e\x38\x43\ \x32\x33\x37\x2e\x30\x30\x31\x20\x36\x32\x2e\x38\x20\x32\x33\x31\ \x2e\x34\x30\x31\x20\x34\x35\x2e\x36\x20\x32\x34\x36\x2e\x36\x30\ \x31\x20\x35\x36\x2e\x34\x43\x32\x34\x36\x2e\x36\x30\x31\x20\x35\ \x36\x2e\x34\x20\x32\x34\x32\x2e\x32\x30\x31\x20\x34\x34\x20\x32\ \x33\x39\x2e\x30\x30\x31\x20\x34\x30\x2e\x38\x43\x32\x33\x39\x2e\ \x30\x30\x31\x20\x34\x30\x2e\x38\x20\x32\x32\x37\x2e\x34\x30\x31\ \x20\x31\x33\x2e\x32\x20\x32\x33\x34\x2e\x36\x30\x31\x20\x31\x38\ \x4c\x32\x33\x39\x2e\x30\x30\x31\x20\x32\x31\x2e\x36\x43\x32\x33\ \x39\x2e\x30\x30\x31\x20\x32\x31\x2e\x36\x20\x32\x33\x32\x2e\x32\ \x30\x31\x20\x37\x2e\x36\x20\x32\x33\x38\x2e\x36\x30\x31\x20\x31\ \x32\x43\x32\x34\x35\x2e\x30\x30\x31\x20\x31\x36\x2e\x34\x20\x32\ \x34\x35\x2e\x30\x30\x31\x20\x31\x36\x20\x32\x34\x35\x2e\x30\x30\ \x31\x20\x31\x36\x43\x32\x34\x35\x2e\x30\x30\x31\x20\x31\x36\x20\ \x32\x32\x33\x2e\x38\x30\x31\x20\x2d\x31\x37\x2e\x32\x20\x32\x34\ \x34\x2e\x32\x30\x31\x20\x30\x2e\x34\x43\x32\x34\x34\x2e\x32\x30\ \x31\x20\x30\x2e\x34\x20\x32\x33\x36\x2e\x30\x34\x32\x20\x2d\x31\ \x33\x2e\x35\x31\x38\x20\x32\x33\x32\x2e\x36\x30\x31\x20\x2d\x32\ \x30\x2e\x34\x43\x32\x33\x32\x2e\x36\x30\x31\x20\x2d\x32\x30\x2e\ \x34\x20\x32\x31\x33\x2e\x38\x30\x31\x20\x2d\x34\x30\x2e\x38\x20\ \x32\x32\x38\x2e\x32\x30\x31\x20\x2d\x33\x34\x2e\x34\x4c\x32\x33\ \x33\x2e\x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x43\x32\x33\x33\x2e\ \x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x20\x32\x32\x34\x2e\x32\x30\ \x31\x20\x2d\x34\x32\x2e\x38\x20\x32\x31\x36\x2e\x32\x30\x31\x20\ \x2d\x34\x34\x2e\x34\x43\x32\x30\x38\x2e\x32\x30\x31\x20\x2d\x34\ \x36\x20\x32\x31\x38\x2e\x36\x30\x31\x20\x2d\x35\x32\x2e\x34\x20\ \x32\x32\x35\x2e\x30\x30\x31\x20\x2d\x35\x30\x2e\x34\x43\x32\x33\ \x31\x2e\x34\x30\x31\x20\x2d\x34\x38\x2e\x34\x20\x32\x34\x37\x2e\ \x30\x30\x31\x20\x2d\x34\x30\x2e\x38\x20\x32\x34\x37\x2e\x30\x30\ \x31\x20\x2d\x34\x30\x2e\x38\x43\x32\x34\x37\x2e\x30\x30\x31\x20\ \x2d\x34\x30\x2e\x38\x20\x32\x35\x39\x2e\x38\x30\x31\x20\x2d\x32\ \x32\x20\x32\x36\x33\x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x36\x43\ \x32\x36\x33\x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x36\x20\x32\x34\ \x33\x2e\x38\x30\x31\x20\x2d\x32\x39\x2e\x32\x20\x32\x34\x39\x2e\ \x38\x30\x31\x20\x2d\x32\x31\x2e\x32\x43\x32\x34\x39\x2e\x38\x30\ \x31\x20\x2d\x32\x31\x2e\x32\x20\x32\x36\x34\x2e\x32\x30\x31\x20\ \x2d\x37\x2e\x32\x20\x32\x35\x37\x2e\x30\x30\x31\x20\x2d\x37\x2e\ \x36\x43\x32\x35\x37\x2e\x30\x30\x31\x20\x2d\x37\x2e\x36\x20\x32\ \x35\x31\x2e\x30\x30\x31\x20\x2d\x30\x2e\x34\x20\x32\x35\x35\x2e\ \x38\x30\x31\x20\x38\x2e\x34\x43\x32\x35\x35\x2e\x38\x30\x31\x20\ \x38\x2e\x34\x20\x32\x33\x37\x2e\x33\x34\x32\x20\x2d\x39\x2e\x39\ \x39\x31\x20\x32\x35\x32\x2e\x32\x30\x31\x20\x31\x35\x2e\x36\x4c\ \x32\x35\x39\x2e\x30\x30\x31\x20\x33\x32\x43\x32\x35\x39\x2e\x30\ \x30\x31\x20\x33\x32\x20\x32\x33\x34\x2e\x36\x30\x31\x20\x37\x2e\ \x32\x20\x32\x34\x35\x2e\x38\x30\x31\x20\x32\x39\x2e\x32\x43\x32\ \x34\x35\x2e\x38\x30\x31\x20\x32\x39\x2e\x32\x20\x32\x36\x33\x2e\ \x30\x30\x31\x20\x35\x32\x2e\x38\x20\x32\x36\x35\x2e\x30\x30\x31\ \x20\x35\x33\x2e\x32\x43\x32\x36\x37\x2e\x30\x30\x31\x20\x35\x33\ \x2e\x36\x20\x32\x37\x31\x2e\x34\x30\x31\x20\x36\x32\x2e\x34\x20\ \x32\x37\x31\x2e\x34\x30\x31\x20\x36\x32\x2e\x34\x4c\x32\x36\x37\ \x2e\x30\x30\x31\x20\x36\x30\x2e\x34\x4c\x32\x37\x32\x2e\x32\x30\ \x31\x20\x36\x39\x2e\x32\x43\x32\x37\x32\x2e\x32\x30\x31\x20\x36\ \x39\x2e\x32\x20\x32\x36\x31\x2e\x30\x30\x31\x20\x35\x37\x2e\x32\ \x20\x32\x36\x37\x2e\x30\x30\x31\x20\x37\x30\x2e\x34\x4c\x32\x37\ \x32\x2e\x36\x30\x31\x20\x38\x34\x2e\x38\x43\x32\x37\x32\x2e\x36\ \x30\x31\x20\x38\x34\x2e\x38\x20\x32\x35\x32\x2e\x32\x30\x31\x20\ \x36\x32\x2e\x38\x20\x32\x36\x35\x2e\x38\x30\x31\x20\x39\x32\x2e\ \x34\x43\x32\x36\x35\x2e\x38\x30\x31\x20\x39\x32\x2e\x34\x20\x32\ \x34\x39\x2e\x34\x30\x31\x20\x38\x37\x2e\x32\x20\x32\x35\x38\x2e\ \x32\x30\x31\x20\x31\x30\x34\x2e\x34\x43\x32\x35\x38\x2e\x32\x30\ \x31\x20\x31\x30\x34\x2e\x34\x20\x32\x35\x36\x2e\x36\x30\x31\x20\ \x31\x32\x30\x2e\x34\x30\x31\x20\x32\x35\x37\x2e\x30\x30\x31\x20\ \x31\x32\x35\x2e\x36\x30\x31\x43\x32\x35\x37\x2e\x34\x30\x31\x20\ \x31\x33\x30\x2e\x38\x30\x31\x20\x32\x35\x38\x2e\x36\x30\x31\x20\ \x31\x35\x39\x2e\x32\x30\x31\x20\x32\x35\x34\x2e\x32\x30\x31\x20\ \x31\x36\x37\x2e\x32\x30\x31\x43\x32\x34\x39\x2e\x38\x30\x31\x20\ \x31\x37\x35\x2e\x32\x30\x31\x20\x32\x36\x30\x2e\x32\x30\x31\x20\ \x31\x39\x34\x2e\x34\x30\x31\x20\x32\x36\x32\x2e\x32\x30\x31\x20\ \x31\x39\x38\x2e\x34\x30\x31\x43\x32\x36\x34\x2e\x32\x30\x31\x20\ \x32\x30\x32\x2e\x34\x30\x31\x20\x32\x36\x37\x2e\x38\x30\x31\x20\ \x32\x31\x33\x2e\x32\x30\x31\x20\x32\x35\x39\x2e\x30\x30\x31\x20\ \x32\x30\x34\x2e\x30\x30\x31\x43\x32\x35\x30\x2e\x32\x30\x31\x20\ \x31\x39\x34\x2e\x38\x30\x31\x20\x32\x35\x34\x2e\x36\x30\x31\x20\ \x32\x30\x30\x2e\x34\x30\x31\x20\x32\x35\x36\x2e\x36\x30\x31\x20\ \x32\x30\x39\x2e\x32\x30\x31\x43\x32\x35\x38\x2e\x36\x30\x31\x20\ \x32\x31\x38\x2e\x30\x30\x31\x20\x32\x36\x34\x2e\x36\x30\x31\x20\ \x32\x33\x33\x2e\x36\x30\x31\x20\x32\x36\x33\x2e\x38\x30\x31\x20\ \x32\x33\x39\x2e\x32\x30\x31\x43\x32\x36\x33\x2e\x38\x30\x31\x20\ \x32\x33\x39\x2e\x32\x30\x31\x20\x32\x36\x32\x2e\x36\x30\x31\x20\ \x32\x34\x30\x2e\x34\x30\x31\x20\x32\x35\x39\x2e\x34\x30\x31\x20\ \x32\x33\x36\x2e\x38\x30\x31\x43\x32\x35\x39\x2e\x34\x30\x31\x20\ \x32\x33\x36\x2e\x38\x30\x31\x20\x32\x34\x34\x2e\x36\x30\x31\x20\ \x32\x31\x34\x2e\x30\x30\x31\x20\x32\x34\x36\x2e\x32\x30\x31\x20\ \x32\x32\x38\x2e\x34\x30\x31\x43\x32\x34\x36\x2e\x32\x30\x31\x20\ \x32\x32\x38\x2e\x34\x30\x31\x20\x32\x34\x35\x2e\x30\x30\x31\x20\ \x32\x33\x36\x2e\x34\x30\x31\x20\x32\x34\x31\x2e\x38\x30\x31\x20\ \x32\x34\x35\x2e\x32\x30\x31\x43\x32\x34\x31\x2e\x38\x30\x31\x20\ \x32\x34\x35\x2e\x32\x30\x31\x20\x32\x33\x38\x2e\x36\x30\x31\x20\ \x32\x35\x36\x2e\x30\x30\x31\x20\x32\x33\x38\x2e\x36\x30\x31\x20\ \x32\x34\x37\x2e\x32\x30\x31\x43\x32\x33\x38\x2e\x36\x30\x31\x20\ \x32\x34\x37\x2e\x32\x30\x31\x20\x32\x33\x35\x2e\x34\x30\x31\x20\ \x32\x33\x30\x2e\x34\x30\x31\x20\x32\x33\x32\x2e\x36\x30\x31\x20\ \x32\x33\x38\x2e\x30\x30\x31\x43\x32\x32\x39\x2e\x38\x30\x31\x20\ \x32\x34\x35\x2e\x36\x30\x31\x20\x32\x32\x36\x2e\x32\x30\x31\x20\ \x32\x35\x31\x2e\x36\x30\x31\x20\x32\x32\x33\x2e\x34\x30\x31\x20\ \x32\x35\x34\x2e\x30\x30\x31\x43\x32\x32\x30\x2e\x36\x30\x31\x20\ \x32\x35\x36\x2e\x34\x30\x31\x20\x32\x31\x35\x2e\x34\x30\x31\x20\ \x32\x33\x33\x2e\x36\x30\x31\x20\x32\x31\x34\x2e\x32\x30\x31\x20\ \x32\x34\x34\x2e\x30\x30\x31\x43\x32\x31\x34\x2e\x32\x30\x31\x20\ \x32\x34\x34\x2e\x30\x30\x31\x20\x32\x30\x32\x2e\x32\x30\x31\x20\ \x32\x33\x31\x2e\x36\x30\x31\x20\x31\x39\x37\x2e\x34\x30\x31\x20\ \x32\x34\x38\x2e\x30\x30\x31\x4c\x31\x38\x35\x2e\x38\x30\x31\x20\ \x32\x36\x34\x2e\x34\x30\x31\x43\x31\x38\x35\x2e\x38\x30\x31\x20\ \x32\x36\x34\x2e\x34\x30\x31\x20\x31\x38\x35\x2e\x34\x30\x31\x20\ \x32\x35\x32\x2e\x30\x30\x31\x20\x31\x38\x34\x2e\x32\x30\x31\x20\ \x32\x35\x38\x2e\x30\x30\x31\x43\x31\x38\x34\x2e\x32\x30\x31\x20\ \x32\x35\x38\x2e\x30\x30\x31\x20\x31\x35\x34\x2e\x32\x30\x31\x20\ \x32\x36\x34\x2e\x30\x30\x31\x20\x31\x34\x33\x2e\x38\x30\x31\x20\ \x32\x35\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x30\ \x39\x2e\x34\x30\x31\x20\x2d\x39\x37\x2e\x32\x43\x31\x30\x39\x2e\ \x34\x30\x31\x20\x2d\x39\x37\x2e\x32\x20\x39\x37\x2e\x38\x30\x31\ \x20\x2d\x31\x30\x35\x2e\x32\x20\x39\x33\x2e\x38\x30\x31\x20\x2d\ \x31\x30\x34\x2e\x38\x43\x38\x39\x2e\x38\x30\x31\x20\x2d\x31\x30\ \x34\x2e\x34\x20\x31\x32\x31\x2e\x34\x30\x31\x20\x2d\x31\x31\x33\ \x2e\x36\x20\x31\x36\x32\x2e\x36\x30\x31\x20\x2d\x38\x36\x43\x31\ \x36\x32\x2e\x36\x30\x31\x20\x2d\x38\x36\x20\x31\x36\x37\x2e\x34\ \x30\x31\x20\x2d\x38\x33\x2e\x32\x20\x31\x37\x31\x2e\x30\x30\x31\ \x20\x2d\x38\x33\x2e\x36\x43\x31\x37\x31\x2e\x30\x30\x31\x20\x2d\ \x38\x33\x2e\x36\x20\x31\x37\x34\x2e\x32\x30\x31\x20\x2d\x38\x31\ \x2e\x32\x20\x31\x37\x31\x2e\x34\x30\x31\x20\x2d\x37\x37\x2e\x36\ \x43\x31\x37\x31\x2e\x34\x30\x31\x20\x2d\x37\x37\x2e\x36\x20\x31\ \x36\x32\x2e\x36\x30\x31\x20\x2d\x36\x38\x20\x31\x37\x33\x2e\x38\ \x30\x31\x20\x2d\x35\x36\x2e\x38\x43\x31\x37\x33\x2e\x38\x30\x31\ \x20\x2d\x35\x36\x2e\x38\x20\x31\x39\x32\x2e\x32\x30\x31\x20\x2d\ \x35\x30\x20\x31\x38\x36\x2e\x36\x30\x31\x20\x2d\x35\x38\x2e\x38\ \x43\x31\x38\x36\x2e\x36\x30\x31\x20\x2d\x35\x38\x2e\x38\x20\x31\ \x39\x37\x2e\x34\x30\x31\x20\x2d\x35\x34\x2e\x38\x20\x31\x39\x39\ \x2e\x38\x30\x31\x20\x2d\x35\x30\x2e\x38\x43\x32\x30\x32\x2e\x32\ \x30\x31\x20\x2d\x34\x36\x2e\x38\x20\x32\x30\x31\x2e\x30\x30\x31\ \x20\x2d\x35\x30\x2e\x38\x20\x32\x30\x31\x2e\x30\x30\x31\x20\x2d\ \x35\x30\x2e\x38\x43\x32\x30\x31\x2e\x30\x30\x31\x20\x2d\x35\x30\ \x2e\x38\x20\x31\x39\x34\x2e\x36\x30\x31\x20\x2d\x35\x38\x20\x31\ \x38\x38\x2e\x36\x30\x31\x20\x2d\x36\x33\x2e\x32\x43\x31\x38\x38\ \x2e\x36\x30\x31\x20\x2d\x36\x33\x2e\x32\x20\x31\x38\x33\x2e\x34\ \x30\x31\x20\x2d\x36\x35\x2e\x32\x20\x31\x38\x30\x2e\x36\x30\x31\ \x20\x2d\x37\x33\x2e\x36\x43\x31\x37\x37\x2e\x38\x30\x31\x20\x2d\ \x38\x32\x20\x31\x37\x35\x2e\x34\x30\x31\x20\x2d\x39\x32\x20\x31\ \x37\x39\x2e\x38\x30\x31\x20\x2d\x39\x35\x2e\x32\x43\x31\x37\x39\ \x2e\x38\x30\x31\x20\x2d\x39\x35\x2e\x32\x20\x31\x37\x35\x2e\x38\ \x30\x31\x20\x2d\x39\x30\x2e\x38\x20\x31\x37\x36\x2e\x36\x30\x31\ \x20\x2d\x39\x34\x2e\x38\x43\x31\x37\x37\x2e\x34\x30\x31\x20\x2d\ \x39\x38\x2e\x38\x20\x31\x38\x31\x2e\x30\x30\x31\x20\x2d\x31\x30\ \x32\x2e\x34\x20\x31\x38\x32\x2e\x36\x30\x31\x20\x2d\x31\x30\x32\ \x2e\x38\x43\x31\x38\x34\x2e\x32\x30\x31\x20\x2d\x31\x30\x33\x2e\ \x32\x20\x32\x30\x30\x2e\x36\x30\x31\x20\x2d\x31\x31\x39\x20\x32\ \x30\x37\x2e\x34\x30\x31\x20\x2d\x31\x31\x39\x2e\x34\x43\x32\x30\ \x37\x2e\x34\x30\x31\x20\x2d\x31\x31\x39\x2e\x34\x20\x31\x39\x38\ \x2e\x32\x30\x31\x20\x2d\x31\x31\x38\x20\x31\x39\x35\x2e\x32\x30\ \x31\x20\x2d\x31\x31\x39\x43\x31\x39\x32\x2e\x32\x30\x31\x20\x2d\ \x31\x32\x30\x20\x31\x36\x35\x2e\x36\x30\x31\x20\x2d\x31\x33\x31\ \x2e\x34\x20\x31\x35\x39\x2e\x36\x30\x31\x20\x2d\x31\x33\x32\x2e\ \x36\x43\x31\x35\x39\x2e\x36\x30\x31\x20\x2d\x31\x33\x32\x2e\x36\ \x20\x31\x34\x32\x2e\x38\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x20\ \x31\x35\x34\x2e\x38\x30\x31\x20\x2d\x31\x33\x37\x2e\x32\x43\x31\ \x35\x34\x2e\x38\x30\x31\x20\x2d\x31\x33\x37\x2e\x32\x20\x31\x39\ \x30\x2e\x36\x30\x31\x20\x2d\x31\x33\x33\x2e\x34\x20\x32\x30\x38\ \x2e\x38\x30\x31\x20\x2d\x31\x32\x30\x2e\x32\x43\x32\x30\x38\x2e\ \x38\x30\x31\x20\x2d\x31\x32\x30\x2e\x32\x20\x32\x30\x31\x2e\x36\ \x30\x31\x20\x2d\x31\x32\x38\x2e\x36\x20\x31\x38\x33\x2e\x32\x30\ \x31\x20\x2d\x31\x33\x35\x2e\x36\x43\x31\x38\x33\x2e\x32\x30\x31\ \x20\x2d\x31\x33\x35\x2e\x36\x20\x31\x36\x31\x2e\x30\x30\x31\x20\ \x2d\x31\x34\x38\x2e\x32\x20\x31\x32\x35\x2e\x38\x30\x31\x20\x2d\ \x31\x34\x33\x2e\x32\x43\x31\x32\x35\x2e\x38\x30\x31\x20\x2d\x31\ \x34\x33\x2e\x32\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x2d\x31\x34\ \x30\x20\x31\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x33\x38\x2e\x32\ \x43\x31\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x33\x38\x2e\x32\x20\ \x39\x37\x2e\x36\x30\x31\x20\x2d\x31\x33\x38\x2e\x38\x20\x39\x37\ \x2e\x30\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x43\x39\x36\x2e\x34\ \x30\x31\x20\x2d\x31\x33\x39\x2e\x36\x20\x38\x34\x2e\x36\x20\x2d\ \x31\x34\x38\x2e\x36\x20\x35\x37\x20\x2d\x31\x34\x31\x2e\x36\x43\ \x35\x37\x20\x2d\x31\x34\x31\x2e\x36\x20\x34\x30\x20\x2d\x31\x33\ \x37\x20\x33\x31\x2e\x34\x20\x2d\x31\x33\x32\x2e\x32\x43\x33\x31\ \x2e\x34\x20\x2d\x31\x33\x32\x2e\x32\x20\x31\x36\x2e\x32\x20\x2d\ \x31\x33\x31\x20\x31\x32\x2e\x36\x20\x2d\x31\x32\x37\x2e\x38\x43\ \x31\x32\x2e\x36\x20\x2d\x31\x32\x37\x2e\x38\x20\x2d\x36\x20\x2d\ \x31\x31\x33\x2e\x32\x20\x2d\x38\x20\x2d\x31\x31\x32\x2e\x34\x43\ \x2d\x31\x30\x20\x2d\x31\x31\x31\x2e\x36\x20\x2d\x32\x31\x2e\x34\ \x20\x2d\x31\x30\x34\x20\x2d\x32\x32\x2e\x32\x20\x2d\x31\x30\x33\ \x2e\x36\x43\x2d\x32\x32\x2e\x32\x20\x2d\x31\x30\x33\x2e\x36\x20\ \x32\x2e\x34\x20\x2d\x31\x31\x30\x2e\x32\x20\x34\x2e\x38\x20\x2d\ \x31\x31\x32\x2e\x36\x43\x37\x2e\x32\x20\x2d\x31\x31\x35\x20\x32\ \x34\x2e\x36\x20\x2d\x31\x31\x37\x2e\x36\x20\x32\x37\x20\x2d\x31\ \x31\x36\x2e\x32\x43\x32\x39\x2e\x34\x20\x2d\x31\x31\x34\x2e\x38\ \x20\x33\x37\x2e\x38\x20\x2d\x31\x31\x35\x2e\x34\x20\x32\x38\x2e\ \x32\x20\x2d\x31\x31\x34\x2e\x38\x43\x32\x38\x2e\x32\x20\x2d\x31\ \x31\x34\x2e\x38\x20\x31\x30\x33\x2e\x38\x30\x31\x20\x2d\x31\x30\ \x30\x20\x31\x30\x34\x2e\x36\x30\x31\x20\x2d\x39\x38\x43\x31\x30\ \x35\x2e\x34\x30\x31\x20\x2d\x39\x36\x20\x31\x30\x39\x2e\x34\x30\ \x31\x20\x2d\x39\x37\x2e\x32\x20\x31\x30\x39\x2e\x34\x30\x31\x20\ \x2d\x39\x37\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x38\x30\x2e\ \x38\x30\x31\x20\x2d\x31\x30\x36\x2e\x34\x43\x31\x38\x30\x2e\x38\ \x30\x31\x20\x2d\x31\x30\x36\x2e\x34\x20\x31\x37\x30\x2e\x36\x30\ \x31\x20\x2d\x31\x31\x33\x2e\x38\x20\x31\x36\x38\x2e\x36\x30\x31\ \x20\x2d\x31\x31\x33\x2e\x38\x43\x31\x36\x36\x2e\x36\x30\x31\x20\ \x2d\x31\x31\x33\x2e\x38\x20\x31\x35\x34\x2e\x32\x30\x31\x20\x2d\ \x31\x32\x34\x20\x31\x35\x30\x2e\x30\x30\x31\x20\x2d\x31\x32\x33\ \x2e\x36\x43\x31\x34\x35\x2e\x38\x30\x31\x20\x2d\x31\x32\x33\x2e\ \x32\x20\x31\x33\x33\x2e\x36\x30\x31\x20\x2d\x31\x33\x33\x2e\x32\ \x20\x31\x30\x36\x2e\x32\x30\x31\x20\x2d\x31\x32\x35\x43\x31\x30\ \x36\x2e\x32\x30\x31\x20\x2d\x31\x32\x35\x20\x31\x30\x35\x2e\x36\ \x30\x31\x20\x2d\x31\x32\x37\x20\x31\x30\x39\x2e\x32\x30\x31\x20\ \x2d\x31\x32\x37\x2e\x38\x43\x31\x30\x39\x2e\x32\x30\x31\x20\x2d\ \x31\x32\x37\x2e\x38\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x2d\x31\ \x33\x30\x20\x31\x31\x36\x2e\x30\x30\x31\x20\x2d\x31\x33\x30\x2e\ \x36\x43\x31\x31\x36\x2e\x30\x30\x31\x20\x2d\x31\x33\x30\x2e\x36\ \x20\x31\x33\x36\x2e\x32\x30\x31\x20\x2d\x31\x33\x34\x2e\x38\x20\ \x31\x34\x33\x2e\x34\x30\x31\x20\x2d\x31\x33\x31\x2e\x32\x43\x31\ \x34\x33\x2e\x34\x30\x31\x20\x2d\x31\x33\x31\x2e\x32\x20\x31\x35\ \x32\x2e\x36\x30\x31\x20\x2d\x31\x32\x38\x2e\x36\x20\x31\x35\x38\ \x2e\x38\x30\x31\x20\x2d\x31\x32\x32\x2e\x34\x43\x31\x35\x38\x2e\ \x38\x30\x31\x20\x2d\x31\x32\x32\x2e\x34\x20\x31\x37\x30\x2e\x30\ \x30\x31\x20\x2d\x31\x31\x39\x2e\x32\x20\x31\x37\x33\x2e\x32\x30\ \x31\x20\x2d\x31\x32\x30\x2e\x32\x43\x31\x37\x33\x2e\x32\x30\x31\ \x20\x2d\x31\x32\x30\x2e\x32\x20\x31\x38\x32\x2e\x30\x30\x31\x20\ \x2d\x31\x31\x38\x20\x31\x38\x32\x2e\x34\x30\x31\x20\x2d\x31\x31\ \x36\x2e\x32\x43\x31\x38\x32\x2e\x34\x30\x31\x20\x2d\x31\x31\x36\ \x2e\x32\x20\x31\x38\x38\x2e\x32\x30\x31\x20\x2d\x31\x31\x33\x2e\ \x32\x20\x31\x38\x36\x2e\x34\x30\x31\x20\x2d\x31\x31\x30\x2e\x36\ \x43\x31\x38\x36\x2e\x34\x30\x31\x20\x2d\x31\x31\x30\x2e\x36\x20\ \x31\x38\x36\x2e\x38\x30\x31\x20\x2d\x31\x30\x39\x20\x31\x38\x30\ \x2e\x38\x30\x31\x20\x2d\x31\x30\x36\x2e\x34\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\ \x37\x32\x32\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x31\x36\x38\x2e\x33\x33\x20\x2d\x31\x30\x38\x2e\x35\x30\ \x39\x43\x31\x36\x39\x2e\x31\x33\x37\x20\x2d\x31\x30\x37\x2e\x38\ \x37\x37\x20\x31\x37\x30\x2e\x31\x35\x36\x20\x2d\x31\x30\x37\x2e\ \x37\x37\x39\x20\x31\x37\x30\x2e\x37\x36\x31\x20\x2d\x31\x30\x36\ \x2e\x39\x37\x43\x31\x37\x30\x2e\x39\x39\x35\x20\x2d\x31\x30\x36\ \x2e\x36\x35\x36\x20\x31\x37\x30\x2e\x37\x30\x36\x20\x2d\x31\x30\ \x36\x2e\x33\x33\x20\x31\x37\x30\x2e\x33\x39\x31\x20\x2d\x31\x30\ \x36\x2e\x32\x33\x33\x43\x31\x36\x39\x2e\x33\x34\x38\x20\x2d\x31\ \x30\x35\x2e\x39\x31\x36\x20\x31\x36\x38\x2e\x32\x39\x32\x20\x2d\ \x31\x30\x36\x2e\x34\x38\x36\x20\x31\x36\x37\x2e\x31\x35\x20\x2d\ \x31\x30\x35\x2e\x38\x39\x38\x43\x31\x36\x36\x2e\x37\x34\x38\x20\ \x2d\x31\x30\x35\x2e\x36\x39\x31\x20\x31\x36\x36\x2e\x31\x30\x36\ \x20\x2d\x31\x30\x35\x2e\x38\x37\x33\x20\x31\x36\x35\x2e\x35\x35\ \x33\x20\x2d\x31\x30\x36\x2e\x30\x32\x32\x43\x31\x36\x33\x2e\x39\ \x32\x31\x20\x2d\x31\x30\x36\x2e\x34\x36\x33\x20\x31\x36\x32\x2e\ \x30\x39\x32\x20\x2d\x31\x30\x36\x2e\x34\x38\x38\x20\x31\x36\x30\ \x2e\x34\x30\x31\x20\x2d\x31\x30\x35\x2e\x38\x43\x31\x35\x38\x2e\ \x34\x31\x36\x20\x2d\x31\x30\x36\x2e\x39\x32\x39\x20\x31\x35\x36\ \x2e\x30\x35\x36\x20\x2d\x31\x30\x36\x2e\x33\x34\x35\x20\x31\x35\ \x33\x2e\x39\x37\x35\x20\x2d\x31\x30\x37\x2e\x33\x34\x36\x43\x31\ \x35\x33\x2e\x39\x31\x37\x20\x2d\x31\x30\x37\x2e\x33\x37\x33\x20\ \x31\x35\x33\x2e\x36\x39\x35\x20\x2d\x31\x30\x37\x2e\x30\x32\x37\ \x20\x31\x35\x33\x2e\x36\x32\x31\x20\x2d\x31\x30\x37\x2e\x30\x35\ \x34\x43\x31\x35\x30\x2e\x35\x37\x35\x20\x2d\x31\x30\x38\x2e\x31\ \x39\x39\x20\x31\x34\x36\x2e\x38\x33\x32\x20\x2d\x31\x30\x37\x2e\ \x39\x31\x36\x20\x31\x34\x34\x2e\x34\x30\x31\x20\x2d\x31\x31\x30\ \x2e\x32\x43\x31\x34\x31\x2e\x39\x37\x33\x20\x2d\x31\x31\x30\x2e\ \x36\x31\x32\x20\x31\x33\x39\x2e\x36\x31\x36\x20\x2d\x31\x31\x31\ \x2e\x30\x37\x34\x20\x31\x33\x37\x2e\x31\x38\x38\x20\x2d\x31\x31\ \x31\x2e\x37\x35\x34\x43\x31\x33\x35\x2e\x33\x37\x20\x2d\x31\x31\ \x32\x2e\x32\x36\x33\x20\x31\x33\x33\x2e\x39\x36\x31\x20\x2d\x31\ \x31\x33\x2e\x32\x35\x32\x20\x31\x33\x32\x2e\x33\x34\x31\x20\x2d\ \x31\x31\x34\x2e\x30\x38\x34\x43\x31\x33\x30\x2e\x39\x36\x34\x20\ \x2d\x31\x31\x34\x2e\x37\x39\x32\x20\x31\x32\x39\x2e\x35\x30\x37\ \x20\x2d\x31\x31\x35\x2e\x33\x31\x34\x20\x31\x32\x37\x2e\x39\x37\ \x33\x20\x2d\x31\x31\x35\x2e\x36\x38\x36\x43\x31\x32\x36\x2e\x31\ \x31\x20\x2d\x31\x31\x36\x2e\x31\x33\x38\x20\x31\x32\x34\x2e\x32\ \x37\x39\x20\x2d\x31\x31\x36\x2e\x30\x32\x36\x20\x31\x32\x32\x2e\ \x33\x38\x36\x20\x2d\x31\x31\x36\x2e\x35\x34\x36\x43\x31\x32\x32\ \x2e\x32\x39\x33\x20\x2d\x31\x31\x36\x2e\x35\x37\x31\x20\x31\x32\ \x32\x2e\x31\x30\x31\x20\x2d\x31\x31\x36\x2e\x32\x32\x37\x20\x31\ \x32\x32\x2e\x30\x31\x39\x20\x2d\x31\x31\x36\x2e\x32\x35\x34\x43\ \x31\x32\x31\x2e\x36\x39\x35\x20\x2d\x31\x31\x36\x2e\x33\x36\x32\ \x20\x31\x32\x31\x2e\x34\x30\x35\x20\x2d\x31\x31\x36\x2e\x39\x34\ \x35\x20\x31\x32\x31\x2e\x32\x33\x34\x20\x2d\x31\x31\x36\x2e\x38\ \x39\x32\x43\x31\x31\x39\x2e\x35\x35\x33\x20\x2d\x31\x31\x36\x2e\ \x33\x37\x20\x31\x31\x38\x2e\x30\x36\x35\x20\x2d\x31\x31\x37\x2e\ \x33\x34\x32\x20\x31\x31\x36\x2e\x34\x30\x31\x20\x2d\x31\x31\x37\ \x43\x31\x31\x35\x2e\x32\x32\x33\x20\x2d\x31\x31\x38\x2e\x32\x32\ \x34\x20\x31\x31\x33\x2e\x34\x39\x35\x20\x2d\x31\x31\x37\x2e\x39\ \x37\x39\x20\x31\x31\x31\x2e\x39\x34\x39\x20\x2d\x31\x31\x38\x2e\ \x34\x32\x31\x43\x31\x30\x38\x2e\x39\x38\x35\x20\x2d\x31\x31\x39\ \x2e\x32\x36\x39\x20\x31\x30\x35\x2e\x38\x33\x31\x20\x2d\x31\x31\ \x37\x2e\x39\x39\x39\x20\x31\x30\x32\x2e\x38\x30\x31\x20\x2d\x31\ \x31\x39\x43\x31\x30\x36\x2e\x39\x31\x34\x20\x2d\x31\x32\x30\x2e\ \x38\x34\x32\x20\x31\x31\x31\x2e\x36\x30\x31\x20\x2d\x31\x31\x39\ \x2e\x36\x31\x20\x31\x31\x35\x2e\x36\x36\x33\x20\x2d\x31\x32\x31\ \x2e\x36\x37\x39\x43\x31\x31\x37\x2e\x39\x39\x31\x20\x2d\x31\x32\ \x32\x2e\x38\x36\x35\x20\x31\x32\x30\x2e\x36\x35\x33\x20\x2d\x31\ \x32\x31\x2e\x37\x36\x33\x20\x31\x32\x33\x2e\x32\x32\x33\x20\x2d\ \x31\x32\x32\x2e\x35\x32\x33\x43\x31\x32\x33\x2e\x37\x31\x20\x2d\ \x31\x32\x32\x2e\x36\x36\x37\x20\x31\x32\x34\x2e\x34\x30\x31\x20\ \x2d\x31\x32\x32\x2e\x38\x36\x39\x20\x31\x32\x34\x2e\x38\x30\x31\ \x20\x2d\x31\x32\x32\x2e\x32\x43\x31\x32\x34\x2e\x39\x33\x35\x20\ \x2d\x31\x32\x32\x2e\x33\x33\x35\x20\x31\x32\x35\x2e\x31\x31\x37\ \x20\x2d\x31\x32\x32\x2e\x35\x37\x34\x20\x31\x32\x35\x2e\x31\x37\ \x35\x20\x2d\x31\x32\x32\x2e\x35\x34\x36\x43\x31\x32\x37\x2e\x36\ \x32\x35\x20\x2d\x31\x32\x31\x2e\x33\x38\x39\x20\x31\x32\x39\x2e\ \x39\x34\x20\x2d\x31\x32\x30\x2e\x31\x31\x35\x20\x31\x33\x32\x2e\ \x34\x32\x32\x20\x2d\x31\x31\x39\x2e\x30\x34\x39\x43\x31\x33\x32\ \x2e\x37\x36\x33\x20\x2d\x31\x31\x38\x2e\x39\x30\x33\x20\x31\x33\ \x33\x2e\x32\x39\x35\x20\x2d\x31\x31\x39\x2e\x31\x33\x35\x20\x31\ \x33\x33\x2e\x35\x34\x37\x20\x2d\x31\x31\x38\x2e\x39\x33\x33\x43\ \x31\x33\x35\x2e\x30\x36\x37\x20\x2d\x31\x31\x37\x2e\x37\x31\x37\ \x20\x31\x33\x37\x2e\x30\x31\x20\x2d\x31\x31\x37\x2e\x38\x32\x20\ \x31\x33\x38\x2e\x34\x30\x31\x20\x2d\x31\x31\x36\x2e\x36\x43\x31\ \x34\x30\x2e\x30\x39\x39\x20\x2d\x31\x31\x37\x2e\x31\x30\x32\x20\ \x31\x34\x31\x2e\x38\x39\x32\x20\x2d\x31\x31\x36\x2e\x37\x32\x32\ \x20\x31\x34\x33\x2e\x36\x32\x31\x20\x2d\x31\x31\x37\x2e\x33\x34\ \x36\x43\x31\x34\x33\x2e\x36\x39\x38\x20\x2d\x31\x31\x37\x2e\x33\ \x37\x33\x20\x31\x34\x33\x2e\x39\x33\x32\x20\x2d\x31\x31\x37\x2e\ \x30\x33\x32\x20\x31\x34\x33\x2e\x39\x36\x35\x20\x2d\x31\x31\x37\ \x2e\x30\x35\x34\x43\x31\x34\x35\x2e\x30\x39\x35\x20\x2d\x31\x31\ \x37\x2e\x38\x30\x32\x20\x31\x34\x36\x2e\x32\x35\x20\x2d\x31\x31\ \x37\x2e\x35\x33\x31\x20\x31\x34\x37\x2e\x31\x34\x32\x20\x2d\x31\ \x31\x37\x2e\x32\x32\x37\x43\x31\x34\x37\x2e\x34\x38\x20\x2d\x31\ \x31\x37\x2e\x31\x31\x32\x20\x31\x34\x38\x2e\x31\x34\x33\x20\x2d\ \x31\x31\x36\x2e\x38\x36\x35\x20\x31\x34\x38\x2e\x34\x34\x38\x20\ \x2d\x31\x31\x36\x2e\x37\x39\x31\x43\x31\x34\x39\x2e\x35\x37\x34\ \x20\x2d\x31\x31\x36\x2e\x35\x31\x35\x20\x31\x35\x30\x2e\x34\x33\ \x20\x2d\x31\x31\x36\x2e\x30\x33\x35\x20\x31\x35\x31\x2e\x36\x30\ \x39\x20\x2d\x31\x31\x35\x2e\x38\x35\x32\x43\x31\x35\x31\x2e\x37\ \x32\x33\x20\x2d\x31\x31\x35\x2e\x38\x33\x34\x20\x31\x35\x31\x2e\ \x39\x30\x38\x20\x2d\x31\x31\x36\x2e\x31\x37\x34\x20\x31\x35\x31\ \x2e\x39\x38\x20\x2d\x31\x31\x36\x2e\x31\x34\x36\x43\x31\x35\x33\ \x2e\x31\x30\x33\x20\x2d\x31\x31\x35\x2e\x37\x30\x38\x20\x31\x35\ \x34\x2e\x31\x34\x35\x20\x2d\x31\x31\x35\x2e\x37\x36\x34\x20\x31\ \x35\x34\x2e\x38\x30\x31\x20\x2d\x31\x31\x34\x2e\x36\x43\x31\x35\ \x34\x2e\x39\x33\x36\x20\x2d\x31\x31\x34\x2e\x37\x33\x35\x20\x31\ \x35\x35\x2e\x31\x30\x31\x20\x2d\x31\x31\x34\x2e\x39\x37\x33\x20\ \x31\x35\x35\x2e\x31\x38\x33\x20\x2d\x31\x31\x34\x2e\x39\x34\x36\ \x43\x31\x35\x36\x2e\x32\x31\x20\x2d\x31\x31\x34\x2e\x36\x30\x38\ \x20\x31\x35\x36\x2e\x38\x35\x39\x20\x2d\x31\x31\x33\x2e\x38\x35\ \x33\x20\x31\x35\x37\x2e\x39\x36\x20\x2d\x31\x31\x33\x2e\x36\x31\ \x32\x43\x31\x35\x38\x2e\x34\x34\x35\x20\x2d\x31\x31\x33\x2e\x35\ \x30\x36\x20\x31\x35\x39\x2e\x30\x35\x37\x20\x2d\x31\x31\x32\x2e\ \x38\x38\x20\x31\x35\x39\x2e\x36\x33\x33\x20\x2d\x31\x31\x32\x2e\ \x37\x30\x34\x43\x31\x36\x32\x2e\x30\x32\x35\x20\x2d\x31\x31\x31\ \x2e\x39\x37\x33\x20\x31\x36\x33\x2e\x38\x36\x38\x20\x2d\x31\x31\ \x30\x2e\x34\x34\x34\x20\x31\x36\x36\x2e\x30\x36\x32\x20\x2d\x31\ \x30\x39\x2e\x35\x34\x39\x43\x31\x36\x36\x2e\x38\x32\x31\x20\x2d\ \x31\x30\x39\x2e\x32\x33\x39\x20\x31\x36\x37\x2e\x36\x39\x37\x20\ \x2d\x31\x30\x39\x2e\x30\x30\x35\x20\x31\x36\x38\x2e\x33\x33\x20\ \x2d\x31\x30\x38\x2e\x35\x30\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\ \x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\ \x31\x2e\x36\x39\x36\x20\x2d\x31\x32\x32\x2e\x37\x33\x39\x43\x38\ \x39\x2e\x31\x37\x38\x20\x2d\x31\x32\x34\x2e\x34\x36\x34\x20\x38\ \x36\x2e\x38\x31\x20\x2d\x31\x32\x35\x2e\x35\x37\x20\x38\x34\x2e\ \x33\x36\x38\x20\x2d\x31\x32\x37\x2e\x33\x35\x36\x43\x38\x34\x2e\ \x31\x38\x37\x20\x2d\x31\x32\x37\x2e\x34\x38\x39\x20\x38\x33\x2e\ \x38\x32\x37\x20\x2d\x31\x32\x37\x2e\x33\x31\x39\x20\x38\x33\x2e\ \x36\x32\x35\x20\x2d\x31\x32\x37\x2e\x34\x34\x31\x43\x38\x32\x2e\ \x36\x31\x38\x20\x2d\x31\x32\x38\x2e\x30\x35\x20\x38\x31\x2e\x37\ \x33\x20\x2d\x31\x32\x38\x2e\x36\x33\x31\x20\x38\x30\x2e\x37\x34\ \x38\x20\x2d\x31\x32\x39\x2e\x33\x32\x37\x43\x38\x30\x2e\x32\x30\ \x39\x20\x2d\x31\x32\x39\x2e\x37\x30\x39\x20\x37\x39\x2e\x33\x38\ \x38\x20\x2d\x31\x32\x39\x2e\x36\x39\x38\x20\x37\x38\x2e\x38\x38\ \x20\x2d\x31\x32\x39\x2e\x39\x35\x36\x43\x37\x36\x2e\x33\x33\x36\ \x20\x2d\x31\x33\x31\x2e\x32\x34\x38\x20\x37\x33\x2e\x37\x30\x37\ \x20\x2d\x31\x33\x31\x2e\x38\x30\x36\x20\x37\x31\x2e\x32\x20\x2d\ \x31\x33\x33\x43\x37\x31\x2e\x38\x38\x32\x20\x2d\x31\x33\x33\x2e\ \x36\x33\x38\x20\x37\x33\x2e\x30\x30\x34\x20\x2d\x31\x33\x33\x2e\ \x33\x39\x34\x20\x37\x33\x2e\x36\x20\x2d\x31\x33\x34\x2e\x32\x43\ \x37\x33\x2e\x37\x39\x35\x20\x2d\x31\x33\x33\x2e\x39\x32\x20\x37\ \x34\x2e\x30\x33\x33\x20\x2d\x31\x33\x33\x2e\x36\x33\x36\x20\x37\ \x34\x2e\x33\x38\x36\x20\x2d\x31\x33\x33\x2e\x38\x32\x37\x43\x37\ \x36\x2e\x30\x36\x34\x20\x2d\x31\x33\x34\x2e\x37\x33\x31\x20\x37\ \x37\x2e\x39\x31\x34\x20\x2d\x31\x33\x34\x2e\x38\x38\x34\x20\x37\ \x39\x2e\x35\x39\x20\x2d\x31\x33\x34\x2e\x37\x39\x34\x43\x38\x31\ \x2e\x32\x39\x34\x20\x2d\x31\x33\x34\x2e\x37\x30\x32\x20\x38\x33\ \x2e\x30\x31\x34\x20\x2d\x31\x33\x34\x2e\x33\x39\x37\x20\x38\x34\ \x2e\x37\x38\x39\x20\x2d\x31\x33\x34\x2e\x31\x32\x35\x43\x38\x35\ \x2e\x30\x39\x36\x20\x2d\x31\x33\x34\x2e\x30\x37\x38\x20\x38\x35\ \x2e\x32\x39\x35\x20\x2d\x31\x33\x33\x2e\x35\x35\x35\x20\x38\x35\ \x2e\x36\x31\x38\x20\x2d\x31\x33\x33\x2e\x34\x35\x38\x43\x38\x37\ \x2e\x38\x34\x36\x20\x2d\x31\x33\x32\x2e\x37\x39\x35\x20\x39\x30\ \x2e\x32\x33\x35\x20\x2d\x31\x33\x33\x2e\x33\x32\x20\x39\x32\x2e\ \x33\x35\x34\x20\x2d\x31\x33\x32\x2e\x34\x38\x32\x43\x39\x33\x2e\ \x39\x34\x35\x20\x2d\x31\x33\x31\x2e\x38\x35\x33\x20\x39\x35\x2e\ \x35\x31\x35\x20\x2d\x31\x33\x31\x2e\x30\x33\x20\x39\x36\x2e\x37\ \x35\x34\x20\x2d\x31\x32\x39\x2e\x37\x35\x35\x43\x39\x37\x2e\x30\ \x30\x36\x20\x2d\x31\x32\x39\x2e\x34\x39\x35\x20\x39\x36\x2e\x36\ \x38\x31\x20\x2d\x31\x32\x39\x2e\x31\x39\x34\x20\x39\x36\x2e\x34\ \x30\x31\x20\x2d\x31\x32\x39\x43\x39\x36\x2e\x37\x38\x39\x20\x2d\ \x31\x32\x39\x2e\x31\x30\x39\x20\x39\x37\x2e\x30\x36\x32\x20\x2d\ \x31\x32\x38\x2e\x39\x30\x33\x20\x39\x37\x2e\x31\x37\x33\x20\x2d\ \x31\x32\x38\x2e\x35\x39\x43\x39\x37\x2e\x32\x35\x37\x20\x2d\x31\ \x32\x38\x2e\x33\x35\x31\x20\x39\x37\x2e\x32\x35\x37\x20\x2d\x31\ \x32\x38\x2e\x30\x34\x39\x20\x39\x37\x2e\x31\x37\x33\x20\x2d\x31\ \x32\x37\x2e\x38\x31\x43\x39\x37\x2e\x30\x36\x31\x20\x2d\x31\x32\ \x37\x2e\x34\x39\x38\x20\x39\x36\x2e\x37\x38\x32\x20\x2d\x31\x32\ \x37\x2e\x33\x39\x37\x20\x39\x36\x2e\x34\x30\x38\x20\x2d\x31\x32\ \x37\x2e\x33\x34\x36\x43\x39\x35\x2e\x30\x30\x31\x20\x2d\x31\x32\ \x37\x2e\x31\x35\x36\x20\x39\x36\x2e\x37\x37\x33\x20\x2d\x31\x32\ \x38\x2e\x35\x33\x36\x20\x39\x36\x2e\x30\x37\x33\x20\x2d\x31\x32\ \x38\x2e\x30\x38\x38\x43\x39\x34\x2e\x38\x20\x2d\x31\x32\x37\x2e\ \x32\x37\x34\x20\x39\x35\x2e\x35\x34\x36\x20\x2d\x31\x32\x35\x2e\ \x38\x36\x38\x20\x39\x34\x2e\x38\x30\x31\x20\x2d\x31\x32\x34\x2e\ \x36\x43\x39\x34\x2e\x35\x32\x31\x20\x2d\x31\x32\x34\x2e\x37\x39\ \x34\x20\x39\x34\x2e\x32\x39\x31\x20\x2d\x31\x32\x35\x2e\x30\x31\ \x32\x20\x39\x34\x2e\x34\x30\x31\x20\x2d\x31\x32\x35\x2e\x34\x43\ \x39\x34\x2e\x36\x33\x35\x20\x2d\x31\x32\x34\x2e\x38\x37\x38\x20\ \x39\x34\x2e\x30\x33\x33\x20\x2d\x31\x32\x34\x2e\x35\x38\x38\x20\ \x39\x33\x2e\x38\x36\x35\x20\x2d\x31\x32\x34\x2e\x32\x37\x32\x43\ \x39\x33\x2e\x34\x38\x20\x2d\x31\x32\x33\x2e\x35\x34\x37\x20\x39\ \x32\x2e\x35\x38\x31\x20\x2d\x31\x32\x32\x2e\x31\x33\x32\x20\x39\ \x31\x2e\x36\x39\x36\x20\x2d\x31\x32\x32\x2e\x37\x33\x39\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x35\x39\x2e\x31\x39\x38\x20\x2d\x31\x31\x35\ \x2e\x33\x39\x31\x43\x35\x36\x2e\x30\x34\x34\x20\x2d\x31\x31\x36\ \x2e\x31\x38\x35\x20\x35\x32\x2e\x39\x39\x34\x20\x2d\x31\x31\x36\ \x2e\x30\x37\x20\x34\x39\x2e\x39\x37\x38\x20\x2d\x31\x31\x37\x2e\ \x33\x34\x36\x43\x34\x39\x2e\x39\x31\x31\x20\x2d\x31\x31\x37\x2e\ \x33\x37\x34\x20\x34\x39\x2e\x36\x38\x38\x20\x2d\x31\x31\x37\x2e\ \x30\x32\x37\x20\x34\x39\x2e\x36\x32\x34\x20\x2d\x31\x31\x37\x2e\ \x30\x35\x34\x43\x34\x38\x2e\x32\x35\x38\x20\x2d\x31\x31\x37\x2e\ \x36\x34\x38\x20\x34\x37\x2e\x33\x34\x20\x2d\x31\x31\x38\x2e\x36\ \x31\x34\x20\x34\x36\x2e\x32\x36\x34\x20\x2d\x31\x31\x39\x2e\x36\ \x36\x43\x34\x35\x2e\x33\x35\x31\x20\x2d\x31\x32\x30\x2e\x35\x34\ \x38\x20\x34\x33\x2e\x36\x39\x33\x20\x2d\x31\x32\x30\x2e\x31\x36\ \x31\x20\x34\x32\x2e\x34\x31\x39\x20\x2d\x31\x32\x30\x2e\x36\x34\ \x38\x43\x34\x32\x2e\x30\x39\x35\x20\x2d\x31\x32\x30\x2e\x37\x37\ \x32\x20\x34\x31\x2e\x38\x39\x32\x20\x2d\x31\x32\x31\x2e\x32\x38\ \x34\x20\x34\x31\x2e\x35\x39\x31\x20\x2d\x31\x32\x31\x2e\x33\x32\ \x33\x43\x34\x30\x2e\x33\x37\x32\x20\x2d\x31\x32\x31\x2e\x34\x38\ \x20\x33\x39\x2e\x34\x34\x35\x20\x2d\x31\x32\x32\x2e\x34\x32\x39\ \x20\x33\x38\x2e\x34\x20\x2d\x31\x32\x33\x43\x34\x30\x2e\x37\x33\ \x36\x20\x2d\x31\x32\x33\x2e\x37\x39\x35\x20\x34\x33\x2e\x31\x34\ \x37\x20\x2d\x31\x32\x33\x2e\x37\x36\x34\x20\x34\x35\x2e\x36\x30\ \x39\x20\x2d\x31\x32\x34\x2e\x31\x34\x38\x43\x34\x35\x2e\x37\x32\ \x32\x20\x2d\x31\x32\x34\x2e\x31\x36\x36\x20\x34\x35\x2e\x38\x36\ \x37\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\x34\x36\x20\x2d\x31\ \x32\x33\x2e\x38\x34\x35\x43\x34\x36\x2e\x31\x33\x36\x20\x2d\x31\ \x32\x33\x2e\x38\x34\x35\x20\x34\x36\x2e\x32\x36\x36\x20\x2d\x31\ \x32\x34\x2e\x30\x36\x36\x20\x34\x36\x2e\x34\x20\x2d\x31\x32\x34\ \x2e\x32\x43\x34\x36\x2e\x35\x39\x35\x20\x2d\x31\x32\x33\x2e\x39\ \x32\x20\x34\x36\x2e\x38\x39\x37\x20\x2d\x31\x32\x33\x2e\x35\x39\ \x34\x20\x34\x37\x2e\x31\x35\x34\x20\x2d\x31\x32\x33\x2e\x38\x34\ \x38\x43\x34\x37\x2e\x37\x30\x32\x20\x2d\x31\x32\x34\x2e\x33\x38\ \x38\x20\x34\x38\x2e\x32\x35\x38\x20\x2d\x31\x32\x34\x2e\x31\x39\ \x38\x20\x34\x38\x2e\x37\x39\x38\x20\x2d\x31\x32\x34\x2e\x31\x35\ \x38\x43\x34\x38\x2e\x39\x34\x32\x20\x2d\x31\x32\x34\x2e\x31\x34\ \x38\x20\x34\x39\x2e\x30\x36\x37\x20\x2d\x31\x32\x33\x2e\x38\x34\ \x35\x20\x34\x39\x2e\x32\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x43\ \x34\x39\x2e\x33\x33\x36\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\ \x34\x39\x2e\x34\x36\x37\x20\x2d\x31\x32\x34\x2e\x31\x35\x36\x20\ \x34\x39\x2e\x36\x20\x2d\x31\x32\x34\x2e\x31\x35\x36\x43\x34\x39\ \x2e\x37\x33\x36\x20\x2d\x31\x32\x34\x2e\x31\x35\x35\x20\x34\x39\ \x2e\x38\x36\x37\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\x35\x30\ \x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x43\x35\x30\x2e\x31\x33\x36\ \x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\x35\x30\x2e\x32\x36\x36\ \x20\x2d\x31\x32\x34\x2e\x30\x36\x36\x20\x35\x30\x2e\x34\x20\x2d\ \x31\x32\x34\x2e\x32\x43\x35\x31\x2e\x30\x39\x32\x20\x2d\x31\x32\ \x33\x2e\x34\x31\x38\x20\x35\x31\x2e\x39\x37\x37\x20\x2d\x31\x32\ \x33\x2e\x39\x37\x32\x20\x35\x32\x2e\x37\x39\x39\x20\x2d\x31\x32\ \x33\x2e\x37\x39\x33\x43\x35\x33\x2e\x38\x33\x37\x20\x2d\x31\x32\ \x33\x2e\x35\x36\x36\x20\x35\x34\x2e\x31\x30\x34\x20\x2d\x31\x32\ \x32\x2e\x34\x31\x38\x20\x35\x35\x2e\x31\x37\x38\x20\x2d\x31\x32\ \x32\x2e\x31\x32\x43\x35\x39\x2e\x38\x39\x33\x20\x2d\x31\x32\x30\ \x2e\x38\x31\x36\x20\x36\x34\x2e\x30\x33\x20\x2d\x31\x31\x38\x2e\ \x36\x37\x31\x20\x36\x38\x2e\x33\x39\x33\x20\x2d\x31\x31\x36\x2e\ \x35\x38\x34\x43\x36\x38\x2e\x37\x20\x2d\x31\x31\x36\x2e\x34\x33\ \x37\x20\x36\x38\x2e\x39\x31\x20\x2d\x31\x31\x36\x2e\x31\x38\x39\ \x20\x36\x38\x2e\x38\x20\x2d\x31\x31\x35\x2e\x38\x43\x36\x39\x2e\ \x30\x36\x37\x20\x2d\x31\x31\x35\x2e\x38\x20\x36\x39\x2e\x33\x38\ \x20\x2d\x31\x31\x35\x2e\x38\x38\x38\x20\x36\x39\x2e\x35\x37\x20\ \x2d\x31\x31\x35\x2e\x37\x35\x36\x43\x37\x30\x2e\x36\x32\x38\x20\ \x2d\x31\x31\x35\x2e\x30\x32\x34\x20\x37\x31\x2e\x36\x36\x39\x20\ \x2d\x31\x31\x34\x2e\x34\x37\x36\x20\x37\x32\x2e\x33\x36\x36\x20\ \x2d\x31\x31\x33\x2e\x33\x37\x38\x43\x37\x32\x2e\x35\x38\x32\x20\ \x2d\x31\x31\x33\x2e\x30\x33\x39\x20\x37\x32\x2e\x32\x35\x33\x20\ \x2d\x31\x31\x32\x2e\x36\x33\x32\x20\x37\x32\x2e\x30\x32\x20\x2d\ \x31\x31\x32\x2e\x36\x38\x34\x43\x36\x37\x2e\x35\x39\x31\x20\x2d\ \x31\x31\x33\x2e\x36\x37\x39\x20\x36\x33\x2e\x35\x38\x35\x20\x2d\ \x31\x31\x34\x2e\x32\x38\x37\x20\x35\x39\x2e\x31\x39\x38\x20\x2d\ \x31\x31\x35\x2e\x33\x39\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\ \x2e\x33\x33\x38\x20\x2d\x37\x31\x2e\x31\x37\x39\x43\x34\x33\x2e\ \x37\x34\x36\x20\x2d\x37\x32\x2e\x33\x39\x38\x20\x34\x33\x2e\x31\ \x36\x32\x20\x2d\x37\x34\x2e\x34\x32\x39\x20\x34\x32\x2e\x30\x33\ \x34\x20\x2d\x37\x36\x2e\x32\x32\x31\x43\x34\x31\x2e\x38\x32\x20\ \x2d\x37\x36\x2e\x35\x36\x31\x20\x34\x32\x2e\x30\x39\x34\x20\x2d\ \x37\x36\x2e\x38\x37\x35\x20\x34\x32\x2e\x34\x31\x31\x20\x2d\x37\ \x36\x2e\x39\x36\x34\x43\x34\x32\x2e\x39\x37\x31\x20\x2d\x37\x37\ \x2e\x31\x32\x33\x20\x34\x33\x2e\x35\x31\x34\x20\x2d\x37\x36\x2e\ \x36\x34\x35\x20\x34\x33\x2e\x39\x32\x33\x20\x2d\x37\x36\x2e\x34\ \x34\x33\x43\x34\x35\x2e\x36\x36\x38\x20\x2d\x37\x35\x2e\x35\x38\ \x31\x20\x34\x37\x2e\x32\x30\x33\x20\x2d\x37\x34\x2e\x33\x33\x39\ \x20\x34\x39\x2e\x32\x20\x2d\x37\x34\x2e\x32\x43\x35\x31\x2e\x31\ \x39\x20\x2d\x37\x31\x2e\x39\x36\x36\x20\x35\x35\x2e\x34\x35\x20\ \x2d\x37\x31\x2e\x35\x38\x31\x20\x35\x35\x2e\x34\x35\x37\x20\x2d\ \x36\x38\x2e\x32\x43\x35\x35\x2e\x34\x35\x38\x20\x2d\x36\x37\x2e\ \x33\x34\x31\x20\x35\x34\x2e\x30\x33\x20\x2d\x36\x38\x2e\x32\x35\ \x39\x20\x35\x33\x2e\x36\x20\x2d\x36\x37\x2e\x34\x43\x35\x31\x2e\ \x31\x34\x39\x20\x2d\x36\x38\x2e\x34\x30\x33\x20\x34\x38\x2e\x37\ \x36\x20\x2d\x36\x38\x2e\x33\x20\x34\x36\x2e\x33\x38\x20\x2d\x36\ \x39\x2e\x37\x36\x37\x43\x34\x35\x2e\x37\x36\x33\x20\x2d\x37\x30\ \x2e\x31\x34\x38\x20\x34\x36\x2e\x30\x39\x33\x20\x2d\x37\x30\x2e\ \x36\x30\x31\x20\x34\x35\x2e\x33\x33\x38\x20\x2d\x37\x31\x2e\x31\ \x37\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x37\x2e\x38\x20\x2d\x31\ \x32\x33\x2e\x37\x35\x36\x43\x31\x37\x2e\x39\x33\x35\x20\x2d\x31\ \x32\x33\x2e\x37\x35\x35\x20\x32\x34\x2e\x39\x36\x36\x20\x2d\x31\ \x32\x33\x2e\x35\x32\x32\x20\x32\x34\x2e\x39\x34\x39\x20\x2d\x31\ \x32\x33\x2e\x34\x30\x38\x43\x32\x34\x2e\x39\x30\x34\x20\x2d\x31\ \x32\x33\x2e\x30\x39\x39\x20\x31\x37\x2e\x31\x37\x34\x20\x2d\x31\ \x32\x32\x2e\x30\x35\x20\x31\x36\x2e\x38\x31\x20\x2d\x31\x32\x32\ \x2e\x32\x32\x43\x31\x36\x2e\x36\x34\x36\x20\x2d\x31\x32\x32\x2e\ \x32\x39\x36\x20\x39\x2e\x31\x33\x34\x20\x2d\x31\x31\x39\x2e\x38\ \x36\x36\x20\x39\x20\x2d\x31\x32\x30\x43\x39\x2e\x32\x36\x38\x20\ \x2d\x31\x32\x30\x2e\x31\x33\x35\x20\x31\x37\x2e\x35\x33\x34\x20\ \x2d\x31\x32\x33\x2e\x37\x35\x36\x20\x31\x37\x2e\x38\x20\x2d\x31\ \x32\x33\x2e\x37\x35\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x33\x2e\ \x32\x20\x2d\x31\x31\x34\x43\x33\x33\x2e\x32\x20\x2d\x31\x31\x34\ \x20\x31\x38\x2e\x34\x20\x2d\x31\x31\x32\x2e\x32\x20\x31\x34\x20\ \x2d\x31\x31\x31\x43\x39\x2e\x36\x20\x2d\x31\x30\x39\x2e\x38\x20\ \x2d\x39\x20\x2d\x31\x30\x32\x2e\x32\x20\x2d\x31\x32\x20\x2d\x31\ \x30\x30\x2e\x32\x43\x2d\x31\x32\x20\x2d\x31\x30\x30\x2e\x32\x20\ \x2d\x32\x35\x2e\x34\x20\x2d\x39\x34\x2e\x38\x20\x2d\x34\x32\x2e\ \x34\x20\x2d\x37\x34\x2e\x38\x43\x2d\x34\x32\x2e\x34\x20\x2d\x37\ \x34\x2e\x38\x20\x2d\x33\x34\x2e\x38\x20\x2d\x37\x38\x2e\x32\x20\ \x2d\x33\x32\x2e\x36\x20\x2d\x38\x31\x43\x2d\x33\x32\x2e\x36\x20\ \x2d\x38\x31\x20\x2d\x31\x39\x20\x2d\x39\x33\x2e\x36\x20\x2d\x31\ \x39\x2e\x32\x20\x2d\x39\x31\x43\x2d\x31\x39\x2e\x32\x20\x2d\x39\ \x31\x20\x2d\x37\x20\x2d\x39\x39\x2e\x36\x20\x2d\x37\x2e\x36\x20\ \x2d\x39\x37\x2e\x34\x43\x2d\x37\x2e\x36\x20\x2d\x39\x37\x2e\x34\ \x20\x31\x36\x2e\x38\x20\x2d\x31\x30\x38\x2e\x36\x20\x31\x34\x2e\ \x38\x20\x2d\x31\x30\x35\x2e\x34\x43\x31\x34\x2e\x38\x20\x2d\x31\ \x30\x35\x2e\x34\x20\x33\x36\x2e\x34\x20\x2d\x31\x31\x30\x20\x33\ \x35\x2e\x34\x20\x2d\x31\x30\x38\x43\x33\x35\x2e\x34\x20\x2d\x31\ \x30\x38\x20\x35\x34\x2e\x32\x20\x2d\x31\x30\x33\x2e\x36\x20\x35\ \x31\x2e\x34\x20\x2d\x31\x30\x33\x2e\x34\x43\x35\x31\x2e\x34\x20\ \x2d\x31\x30\x33\x2e\x34\x20\x34\x35\x2e\x36\x20\x2d\x31\x30\x32\ \x2e\x32\x20\x35\x32\x20\x2d\x39\x38\x2e\x36\x43\x35\x32\x20\x2d\ \x39\x38\x2e\x36\x20\x34\x38\x2e\x36\x20\x2d\x39\x34\x2e\x32\x20\ \x34\x33\x2e\x32\x20\x2d\x39\x38\x2e\x32\x43\x33\x37\x2e\x38\x20\ \x2d\x31\x30\x32\x2e\x32\x20\x34\x30\x2e\x38\x20\x2d\x31\x30\x30\ \x20\x33\x35\x2e\x38\x20\x2d\x39\x39\x43\x33\x35\x2e\x38\x20\x2d\ \x39\x39\x20\x33\x33\x2e\x32\x20\x2d\x39\x38\x2e\x32\x20\x32\x38\ \x2e\x36\x20\x2d\x31\x30\x32\x2e\x32\x43\x32\x38\x2e\x36\x20\x2d\ \x31\x30\x32\x2e\x32\x20\x32\x33\x20\x2d\x31\x30\x36\x2e\x38\x20\ \x31\x34\x2e\x32\x20\x2d\x31\x30\x33\x2e\x32\x43\x31\x34\x2e\x32\ \x20\x2d\x31\x30\x33\x2e\x32\x20\x2d\x31\x36\x2e\x34\x20\x2d\x39\ \x30\x2e\x36\x20\x2d\x31\x38\x2e\x34\x20\x2d\x39\x30\x43\x2d\x31\ \x38\x2e\x34\x20\x2d\x39\x30\x20\x2d\x32\x32\x20\x2d\x38\x37\x2e\ \x32\x20\x2d\x32\x34\x2e\x34\x20\x2d\x38\x33\x2e\x36\x43\x2d\x32\ \x34\x2e\x34\x20\x2d\x38\x33\x2e\x36\x20\x2d\x33\x30\x2e\x32\x20\ \x2d\x37\x39\x2e\x32\x20\x2d\x33\x33\x2e\x32\x20\x2d\x37\x37\x2e\ \x38\x43\x2d\x33\x33\x2e\x32\x20\x2d\x37\x37\x2e\x38\x20\x2d\x34\ \x36\x20\x2d\x36\x36\x2e\x32\x20\x2d\x34\x37\x2e\x32\x20\x2d\x36\ \x34\x2e\x38\x43\x2d\x34\x37\x2e\x32\x20\x2d\x36\x34\x2e\x38\x20\ \x2d\x35\x30\x2e\x36\x20\x2d\x35\x39\x2e\x36\x20\x2d\x35\x31\x2e\ \x34\x20\x2d\x35\x39\x2e\x32\x43\x2d\x35\x31\x2e\x34\x20\x2d\x35\ \x39\x2e\x32\x20\x2d\x34\x35\x20\x2d\x36\x33\x20\x2d\x34\x33\x20\ \x2d\x36\x35\x43\x2d\x34\x33\x20\x2d\x36\x35\x20\x2d\x32\x39\x20\ \x2d\x37\x35\x20\x2d\x32\x33\x2e\x36\x20\x2d\x37\x35\x2e\x38\x43\ \x2d\x32\x33\x2e\x36\x20\x2d\x37\x35\x2e\x38\x20\x2d\x31\x39\x2e\ \x32\x20\x2d\x37\x38\x2e\x38\x20\x2d\x31\x38\x2e\x34\x20\x2d\x38\ \x30\x2e\x32\x43\x2d\x31\x38\x2e\x34\x20\x2d\x38\x30\x2e\x32\x20\ \x2d\x34\x20\x2d\x38\x39\x2e\x34\x20\x30\x2e\x32\x20\x2d\x38\x39\ \x2e\x34\x43\x30\x2e\x32\x20\x2d\x38\x39\x2e\x34\x20\x39\x2e\x34\ \x20\x2d\x38\x34\x2e\x32\x20\x31\x31\x2e\x38\x20\x2d\x39\x31\x2e\ \x32\x43\x31\x31\x2e\x38\x20\x2d\x39\x31\x2e\x32\x20\x31\x37\x2e\ \x36\x20\x2d\x39\x33\x20\x32\x33\x2e\x32\x20\x2d\x39\x31\x2e\x38\ \x43\x32\x33\x2e\x32\x20\x2d\x39\x31\x2e\x38\x20\x32\x36\x2e\x34\ \x20\x2d\x39\x34\x2e\x34\x20\x32\x35\x2e\x36\x20\x2d\x39\x36\x2e\ \x36\x43\x32\x35\x2e\x36\x20\x2d\x39\x36\x2e\x36\x20\x32\x37\x2e\ \x32\x20\x2d\x39\x38\x2e\x34\x20\x32\x38\x2e\x32\x20\x2d\x39\x34\ \x2e\x36\x43\x32\x38\x2e\x32\x20\x2d\x39\x34\x2e\x36\x20\x33\x31\ \x2e\x36\x20\x2d\x39\x31\x20\x33\x36\x2e\x34\x20\x2d\x39\x33\x43\ \x33\x36\x2e\x34\x20\x2d\x39\x33\x20\x34\x30\x2e\x34\x20\x2d\x39\ \x33\x2e\x32\x20\x33\x38\x2e\x34\x20\x2d\x39\x30\x2e\x38\x43\x33\ \x38\x2e\x34\x20\x2d\x39\x30\x2e\x38\x20\x33\x34\x20\x2d\x38\x37\ \x20\x32\x32\x2e\x32\x20\x2d\x38\x36\x2e\x38\x43\x32\x32\x2e\x32\ \x20\x2d\x38\x36\x2e\x38\x20\x39\x2e\x38\x20\x2d\x38\x36\x2e\x32\ \x20\x2d\x36\x2e\x36\x20\x2d\x37\x38\x2e\x36\x43\x2d\x36\x2e\x36\ \x20\x2d\x37\x38\x2e\x36\x20\x2d\x33\x36\x2e\x34\x20\x2d\x36\x38\ \x2e\x32\x20\x2d\x34\x35\x2e\x36\x20\x2d\x35\x37\x2e\x38\x43\x2d\ \x34\x35\x2e\x36\x20\x2d\x35\x37\x2e\x38\x20\x2d\x35\x32\x20\x2d\ \x34\x39\x20\x2d\x35\x37\x2e\x34\x20\x2d\x34\x37\x2e\x38\x43\x2d\ \x35\x37\x2e\x34\x20\x2d\x34\x37\x2e\x38\x20\x2d\x36\x33\x2e\x32\ \x20\x2d\x34\x37\x20\x2d\x36\x39\x2e\x32\x20\x2d\x33\x39\x2e\x36\ \x43\x2d\x36\x39\x2e\x32\x20\x2d\x33\x39\x2e\x36\x20\x2d\x35\x39\ \x2e\x34\x20\x2d\x34\x35\x2e\x34\x20\x2d\x35\x30\x2e\x34\x20\x2d\ \x34\x35\x2e\x34\x43\x2d\x35\x30\x2e\x34\x20\x2d\x34\x35\x2e\x34\ \x20\x2d\x34\x36\x2e\x34\x20\x2d\x34\x37\x2e\x38\x20\x2d\x35\x30\ \x2e\x32\x20\x2d\x34\x34\x2e\x32\x43\x2d\x35\x30\x2e\x32\x20\x2d\ \x34\x34\x2e\x32\x20\x2d\x35\x33\x2e\x38\x20\x2d\x33\x36\x2e\x36\ \x20\x2d\x35\x32\x2e\x32\x20\x2d\x33\x31\x2e\x32\x43\x2d\x35\x32\ \x2e\x32\x20\x2d\x33\x31\x2e\x32\x20\x2d\x35\x32\x2e\x38\x20\x2d\ \x32\x36\x20\x2d\x35\x33\x2e\x36\x20\x2d\x32\x34\x2e\x34\x43\x2d\ \x35\x33\x2e\x36\x20\x2d\x32\x34\x2e\x34\x20\x2d\x36\x31\x2e\x34\ \x20\x2d\x31\x31\x2e\x36\x20\x2d\x36\x31\x2e\x34\x20\x2d\x39\x2e\ \x32\x43\x2d\x36\x31\x2e\x34\x20\x2d\x36\x2e\x38\x20\x2d\x36\x30\ \x2e\x32\x20\x33\x20\x2d\x35\x39\x2e\x38\x20\x33\x2e\x36\x43\x2d\ \x35\x39\x2e\x34\x20\x34\x2e\x32\x20\x2d\x36\x30\x2e\x38\x20\x32\ \x20\x2d\x35\x37\x20\x34\x2e\x34\x43\x2d\x35\x33\x2e\x32\x20\x36\ \x2e\x38\x20\x2d\x35\x30\x2e\x34\x20\x38\x2e\x34\x20\x2d\x34\x39\ \x2e\x36\x20\x31\x31\x2e\x32\x43\x2d\x34\x38\x2e\x38\x20\x31\x34\ \x20\x2d\x35\x31\x2e\x36\x20\x35\x2e\x38\x20\x2d\x35\x31\x2e\x38\ \x20\x34\x43\x2d\x35\x32\x20\x32\x2e\x32\x20\x2d\x35\x36\x2e\x32\ \x20\x2d\x35\x20\x2d\x35\x35\x2e\x34\x20\x2d\x37\x2e\x34\x43\x2d\ \x35\x35\x2e\x34\x20\x2d\x37\x2e\x34\x20\x2d\x35\x34\x2e\x34\x20\ \x2d\x36\x2e\x34\x20\x2d\x35\x33\x2e\x36\x20\x2d\x35\x43\x2d\x35\ \x33\x2e\x36\x20\x2d\x35\x20\x2d\x35\x34\x2e\x32\x20\x2d\x35\x2e\ \x36\x20\x2d\x35\x33\x2e\x36\x20\x2d\x39\x2e\x32\x43\x2d\x35\x33\ \x2e\x36\x20\x2d\x39\x2e\x32\x20\x2d\x35\x32\x2e\x38\x20\x2d\x31\ \x34\x2e\x34\x20\x2d\x35\x31\x2e\x34\x20\x2d\x31\x37\x2e\x36\x43\ \x2d\x35\x30\x20\x2d\x32\x30\x2e\x38\x20\x2d\x34\x38\x20\x2d\x32\ \x34\x2e\x36\x20\x2d\x34\x37\x2e\x36\x20\x2d\x32\x35\x2e\x34\x43\ \x2d\x34\x37\x2e\x32\x20\x2d\x32\x36\x2e\x32\x20\x2d\x34\x37\x2e\ \x32\x20\x2d\x33\x32\x20\x2d\x34\x35\x2e\x38\x20\x2d\x32\x39\x2e\ \x34\x4c\x2d\x34\x32\x2e\x34\x20\x2d\x32\x36\x2e\x38\x43\x2d\x34\ \x32\x2e\x34\x20\x2d\x32\x36\x2e\x38\x20\x2d\x34\x35\x2e\x32\x20\ \x2d\x32\x39\x2e\x34\x20\x2d\x34\x33\x20\x2d\x33\x31\x2e\x36\x43\ \x2d\x34\x33\x20\x2d\x33\x31\x2e\x36\x20\x2d\x34\x34\x20\x2d\x33\ \x37\x2e\x32\x20\x2d\x34\x32\x2e\x32\x20\x2d\x33\x39\x2e\x38\x43\ \x2d\x34\x32\x2e\x32\x20\x2d\x33\x39\x2e\x38\x20\x2d\x33\x35\x2e\ \x32\x20\x2d\x34\x38\x2e\x32\x20\x2d\x33\x33\x2e\x36\x20\x2d\x34\ \x39\x2e\x32\x43\x2d\x33\x32\x20\x2d\x35\x30\x2e\x32\x20\x2d\x33\ \x33\x2e\x34\x20\x2d\x34\x39\x2e\x38\x20\x2d\x33\x33\x2e\x34\x20\ \x2d\x34\x39\x2e\x38\x43\x2d\x33\x33\x2e\x34\x20\x2d\x34\x39\x2e\ \x38\x20\x2d\x32\x37\x2e\x34\x20\x2d\x35\x34\x20\x2d\x33\x33\x2e\ \x32\x20\x2d\x35\x32\x2e\x34\x43\x2d\x33\x33\x2e\x32\x20\x2d\x35\ \x32\x2e\x34\x20\x2d\x33\x37\x2e\x32\x20\x2d\x35\x30\x2e\x38\x20\ \x2d\x34\x30\x2e\x32\x20\x2d\x35\x30\x2e\x38\x43\x2d\x34\x30\x2e\ \x32\x20\x2d\x35\x30\x2e\x38\x20\x2d\x34\x37\x2e\x38\x20\x2d\x34\ \x38\x2e\x38\x20\x2d\x34\x33\x2e\x38\x20\x2d\x35\x33\x43\x2d\x33\ \x39\x2e\x38\x20\x2d\x35\x37\x2e\x32\x20\x2d\x32\x39\x2e\x38\x20\ \x2d\x36\x32\x2e\x36\x20\x2d\x32\x36\x20\x2d\x36\x32\x2e\x34\x4c\ \x2d\x32\x35\x2e\x32\x20\x2d\x36\x30\x2e\x38\x4c\x2d\x31\x34\x20\ \x2d\x36\x33\x2e\x32\x4c\x2d\x31\x35\x2e\x32\x20\x2d\x36\x32\x2e\ \x34\x43\x2d\x31\x35\x2e\x32\x20\x2d\x36\x32\x2e\x34\x20\x2d\x31\ \x35\x2e\x34\x20\x2d\x36\x32\x2e\x36\x20\x2d\x31\x31\x2e\x32\x20\ \x2d\x36\x33\x43\x2d\x37\x20\x2d\x36\x33\x2e\x34\x20\x2d\x31\x2e\ \x32\x20\x2d\x36\x32\x20\x30\x2e\x32\x20\x2d\x36\x33\x2e\x38\x43\ \x31\x2e\x36\x20\x2d\x36\x35\x2e\x36\x20\x35\x20\x2d\x36\x36\x2e\ \x36\x20\x34\x2e\x36\x20\x2d\x36\x35\x2e\x32\x43\x34\x2e\x32\x20\ \x2d\x36\x33\x2e\x38\x20\x34\x20\x2d\x36\x31\x2e\x38\x20\x34\x20\ \x2d\x36\x31\x2e\x38\x43\x34\x20\x2d\x36\x31\x2e\x38\x20\x39\x20\ \x2d\x36\x37\x2e\x36\x20\x38\x2e\x34\x20\x2d\x36\x35\x2e\x34\x43\ \x37\x2e\x38\x20\x2d\x36\x33\x2e\x32\x20\x2d\x30\x2e\x34\x20\x2d\ \x35\x38\x20\x2d\x31\x2e\x38\x20\x2d\x35\x31\x2e\x38\x4c\x38\x2e\ \x36\x20\x2d\x36\x30\x4c\x31\x32\x2e\x32\x20\x2d\x36\x33\x43\x31\ \x32\x2e\x32\x20\x2d\x36\x33\x20\x31\x35\x2e\x38\x20\x2d\x36\x30\ \x2e\x38\x20\x31\x36\x20\x2d\x36\x32\x2e\x34\x43\x31\x36\x2e\x32\ \x20\x2d\x36\x34\x20\x32\x30\x2e\x38\x20\x2d\x36\x39\x2e\x38\x20\ \x32\x32\x20\x2d\x36\x39\x2e\x36\x43\x32\x33\x2e\x32\x20\x2d\x36\ \x39\x2e\x34\x20\x32\x35\x2e\x32\x20\x2d\x37\x32\x2e\x32\x20\x32\ \x35\x20\x2d\x36\x39\x2e\x36\x43\x32\x34\x2e\x38\x20\x2d\x36\x37\ \x20\x33\x32\x2e\x34\x20\x2d\x36\x31\x2e\x36\x20\x33\x32\x2e\x34\ \x20\x2d\x36\x31\x2e\x36\x43\x33\x32\x2e\x34\x20\x2d\x36\x31\x2e\ \x36\x20\x33\x35\x2e\x36\x20\x2d\x36\x33\x2e\x34\x20\x33\x37\x20\ \x2d\x36\x32\x43\x33\x38\x2e\x34\x20\x2d\x36\x30\x2e\x36\x20\x34\ \x32\x2e\x36\x20\x2d\x38\x31\x2e\x38\x20\x34\x32\x2e\x36\x20\x2d\ \x38\x31\x2e\x38\x4c\x36\x37\x2e\x36\x20\x2d\x39\x32\x2e\x34\x4c\ \x31\x31\x31\x2e\x32\x30\x31\x20\x2d\x39\x35\x2e\x38\x4c\x39\x34\ \x2e\x32\x30\x31\x20\x2d\x31\x30\x32\x2e\x36\x4c\x33\x33\x2e\x32\ \x20\x2d\x31\x31\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x34\x63\x30\x30\x30\x30\x22\ \x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x35\x31\x2e\x34\x20\x38\x35\x43\ \x35\x31\x2e\x34\x20\x38\x35\x20\x33\x36\x2e\x34\x20\x36\x38\x2e\ \x32\x20\x32\x38\x20\x36\x35\x2e\x36\x43\x32\x38\x20\x36\x35\x2e\ \x36\x20\x31\x34\x2e\x36\x20\x35\x38\x2e\x38\x20\x2d\x31\x30\x20\ \x36\x36\x2e\x36\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x32\x34\x2e\x38\x20\x36\x34\x2e\x32\x43\ \x32\x34\x2e\x38\x20\x36\x34\x2e\x32\x20\x2d\x30\x2e\x34\x20\x35\ \x36\x2e\x32\x20\x2d\x31\x35\x2e\x38\x20\x36\x30\x2e\x34\x43\x2d\ \x31\x35\x2e\x38\x20\x36\x30\x2e\x34\x20\x2d\x33\x34\x2e\x32\x20\ \x36\x32\x2e\x34\x20\x2d\x34\x32\x2e\x36\x20\x37\x36\x2e\x32\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x32\x31\x2e\x32\x20\x36\x33\x43\x32\x31\x2e\x32\x20\x36\x33\ \x20\x34\x2e\x32\x20\x35\x35\x2e\x38\x20\x2d\x31\x30\x2e\x36\x20\ \x35\x33\x2e\x36\x43\x2d\x31\x30\x2e\x36\x20\x35\x33\x2e\x36\x20\ \x2d\x32\x37\x2e\x32\x20\x35\x31\x20\x2d\x34\x33\x2e\x38\x20\x35\ \x38\x2e\x32\x43\x2d\x34\x33\x2e\x38\x20\x35\x38\x2e\x32\x20\x2d\ \x35\x36\x20\x36\x34\x2e\x32\x20\x2d\x36\x31\x2e\x34\x20\x37\x34\ \x2e\x34\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x32\x32\x2e\x32\x20\x36\x33\x2e\x34\x43\x32\x32\ \x2e\x32\x20\x36\x33\x2e\x34\x20\x36\x2e\x38\x20\x35\x32\x2e\x34\ \x20\x35\x2e\x38\x20\x35\x31\x43\x35\x2e\x38\x20\x35\x31\x20\x2d\ \x31\x2e\x32\x20\x34\x30\x20\x2d\x31\x34\x2e\x32\x20\x33\x39\x2e\ \x36\x43\x2d\x31\x34\x2e\x32\x20\x33\x39\x2e\x36\x20\x2d\x33\x35\ \x2e\x36\x20\x34\x30\x2e\x34\x20\x2d\x35\x32\x2e\x38\x20\x34\x38\ \x2e\x34\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\x2e\x38\x39\x35\x20\x35\ \x34\x2e\x34\x30\x37\x43\x32\x32\x2e\x34\x33\x37\x20\x35\x35\x2e\ \x38\x37\x20\x34\x39\x2e\x34\x20\x38\x34\x2e\x38\x20\x34\x39\x2e\ \x34\x20\x38\x34\x2e\x38\x43\x38\x34\x2e\x36\x20\x31\x32\x31\x2e\ \x34\x30\x31\x20\x35\x36\x2e\x36\x20\x38\x37\x2e\x32\x20\x35\x36\ \x2e\x36\x20\x38\x37\x2e\x32\x43\x34\x39\x20\x38\x32\x2e\x34\x20\ \x33\x39\x2e\x38\x20\x36\x33\x2e\x36\x20\x33\x39\x2e\x38\x20\x36\ \x33\x2e\x36\x43\x33\x38\x2e\x36\x20\x36\x30\x2e\x38\x20\x35\x33\ \x2e\x38\x20\x37\x30\x2e\x38\x20\x35\x33\x2e\x38\x20\x37\x30\x2e\ \x38\x43\x35\x37\x2e\x38\x20\x37\x31\x2e\x36\x20\x37\x31\x2e\x34\ \x20\x39\x30\x2e\x38\x20\x37\x31\x2e\x34\x20\x39\x30\x2e\x38\x43\ \x36\x34\x2e\x36\x20\x38\x38\x2e\x34\x20\x36\x39\x2e\x34\x20\x39\ \x35\x2e\x36\x20\x36\x39\x2e\x34\x20\x39\x35\x2e\x36\x43\x37\x32\ \x2e\x32\x20\x39\x37\x2e\x36\x20\x39\x32\x2e\x36\x30\x31\x20\x31\ \x31\x33\x2e\x32\x30\x31\x20\x39\x32\x2e\x36\x30\x31\x20\x31\x31\ \x33\x2e\x32\x30\x31\x43\x39\x36\x2e\x32\x30\x31\x20\x31\x31\x37\ \x2e\x32\x30\x31\x20\x31\x30\x30\x2e\x32\x30\x31\x20\x31\x31\x38\ \x2e\x38\x30\x31\x20\x31\x30\x30\x2e\x32\x30\x31\x20\x31\x31\x38\ \x2e\x38\x30\x31\x43\x31\x31\x34\x2e\x32\x30\x31\x20\x31\x31\x33\ \x2e\x36\x30\x31\x20\x31\x30\x37\x2e\x38\x30\x31\x20\x31\x32\x36\ \x2e\x38\x30\x31\x20\x31\x30\x37\x2e\x38\x30\x31\x20\x31\x32\x36\ \x2e\x38\x30\x31\x43\x31\x31\x30\x2e\x32\x30\x31\x20\x31\x33\x33\ \x2e\x36\x30\x31\x20\x31\x31\x35\x2e\x38\x30\x31\x20\x31\x32\x32\ \x2e\x30\x30\x31\x20\x31\x31\x35\x2e\x38\x30\x31\x20\x31\x32\x32\ \x2e\x30\x30\x31\x43\x31\x32\x37\x2e\x30\x30\x31\x20\x31\x30\x35\ \x2e\x32\x20\x31\x31\x30\x2e\x36\x30\x31\x20\x31\x30\x37\x2e\x36\ \x30\x31\x20\x31\x31\x30\x2e\x36\x30\x31\x20\x31\x30\x37\x2e\x36\ \x30\x31\x43\x38\x30\x2e\x36\x20\x31\x31\x30\x2e\x34\x30\x31\x20\ \x37\x33\x2e\x38\x20\x39\x34\x2e\x34\x20\x37\x33\x2e\x38\x20\x39\ \x34\x2e\x34\x43\x37\x31\x2e\x34\x20\x39\x32\x20\x38\x30\x2e\x32\ \x20\x39\x34\x2e\x34\x20\x38\x30\x2e\x32\x20\x39\x34\x2e\x34\x43\ \x38\x38\x2e\x36\x30\x31\x20\x39\x36\x2e\x34\x20\x37\x33\x20\x38\ \x32\x20\x37\x33\x20\x38\x32\x43\x37\x35\x2e\x34\x20\x38\x32\x20\ \x38\x34\x2e\x36\x20\x38\x38\x2e\x38\x20\x38\x34\x2e\x36\x20\x38\ \x38\x2e\x38\x43\x39\x35\x2e\x30\x30\x31\x20\x39\x38\x20\x39\x37\ \x2e\x30\x30\x31\x20\x39\x36\x20\x39\x37\x2e\x30\x30\x31\x20\x39\ \x36\x43\x31\x31\x35\x2e\x30\x30\x31\x20\x38\x37\x2e\x32\x20\x31\ \x32\x35\x2e\x34\x30\x31\x20\x39\x34\x2e\x38\x20\x31\x32\x35\x2e\ \x34\x30\x31\x20\x39\x34\x2e\x38\x43\x31\x32\x37\x2e\x34\x30\x31\ \x20\x39\x36\x2e\x34\x20\x31\x32\x31\x2e\x38\x30\x31\x20\x31\x30\ \x33\x2e\x32\x20\x31\x32\x33\x2e\x34\x30\x31\x20\x31\x30\x38\x2e\ \x34\x30\x31\x43\x31\x32\x35\x2e\x30\x30\x31\x20\x31\x31\x33\x2e\ \x36\x30\x31\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x31\x32\x36\x2e\ \x30\x30\x31\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x31\x32\x36\x2e\ \x30\x30\x31\x43\x31\x32\x37\x2e\x34\x30\x31\x20\x31\x32\x37\x2e\ \x36\x30\x31\x20\x31\x32\x37\x2e\x38\x30\x31\x20\x31\x33\x38\x2e\ \x34\x30\x31\x20\x31\x32\x37\x2e\x38\x30\x31\x20\x31\x33\x38\x2e\ \x34\x30\x31\x43\x31\x34\x34\x2e\x36\x30\x31\x20\x31\x36\x31\x2e\ \x36\x30\x31\x20\x31\x33\x35\x2e\x30\x30\x31\x20\x31\x35\x39\x2e\ \x36\x30\x31\x20\x31\x33\x35\x2e\x30\x30\x31\x20\x31\x35\x39\x2e\ \x36\x30\x31\x43\x31\x31\x39\x2e\x34\x30\x31\x20\x31\x35\x39\x2e\ \x32\x30\x31\x20\x31\x33\x34\x2e\x32\x30\x31\x20\x31\x36\x36\x2e\ \x38\x30\x31\x20\x31\x33\x34\x2e\x32\x30\x31\x20\x31\x36\x36\x2e\ \x38\x30\x31\x43\x31\x33\x37\x2e\x34\x30\x31\x20\x31\x36\x38\x2e\ \x38\x30\x31\x20\x31\x34\x36\x2e\x32\x30\x31\x20\x31\x37\x36\x2e\ \x30\x30\x31\x20\x31\x34\x36\x2e\x32\x30\x31\x20\x31\x37\x36\x2e\ \x30\x30\x31\x43\x31\x34\x33\x2e\x34\x30\x31\x20\x31\x37\x34\x2e\ \x38\x30\x31\x20\x31\x34\x31\x2e\x38\x30\x31\x20\x31\x38\x30\x2e\ \x30\x30\x31\x20\x31\x34\x31\x2e\x38\x30\x31\x20\x31\x38\x30\x2e\ \x30\x30\x31\x43\x31\x34\x36\x2e\x36\x30\x31\x20\x31\x38\x34\x2e\ \x30\x30\x31\x20\x31\x34\x33\x2e\x38\x30\x31\x20\x31\x38\x38\x2e\ \x38\x30\x31\x20\x31\x34\x33\x2e\x38\x30\x31\x20\x31\x38\x38\x2e\ \x38\x30\x31\x43\x31\x33\x37\x2e\x38\x30\x31\x20\x31\x39\x30\x2e\ \x30\x30\x31\x20\x31\x33\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\ \x30\x30\x31\x20\x31\x33\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\ \x30\x30\x31\x43\x31\x34\x33\x2e\x34\x30\x31\x20\x32\x30\x32\x2e\ \x30\x30\x31\x20\x31\x33\x33\x2e\x34\x30\x31\x20\x32\x30\x32\x2e\ \x34\x30\x31\x20\x31\x33\x33\x2e\x34\x30\x31\x20\x32\x30\x32\x2e\ \x34\x30\x31\x43\x31\x33\x37\x2e\x30\x30\x31\x20\x32\x30\x36\x2e\ \x38\x30\x31\x20\x31\x33\x32\x2e\x32\x30\x31\x20\x32\x31\x38\x2e\ \x38\x30\x31\x20\x31\x33\x32\x2e\x32\x30\x31\x20\x32\x31\x38\x2e\ \x38\x30\x31\x43\x31\x32\x37\x2e\x34\x30\x31\x20\x32\x31\x38\x2e\ \x38\x30\x31\x20\x31\x32\x31\x2e\x30\x30\x31\x20\x32\x32\x34\x2e\ \x34\x30\x31\x20\x31\x32\x31\x2e\x30\x30\x31\x20\x32\x32\x34\x2e\ \x34\x30\x31\x43\x31\x32\x33\x2e\x34\x30\x31\x20\x32\x32\x39\x2e\ \x32\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x32\x33\x34\x2e\ \x38\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x32\x33\x34\x2e\ \x38\x30\x31\x43\x31\x30\x34\x2e\x36\x30\x31\x20\x32\x33\x36\x2e\ \x34\x30\x31\x20\x31\x30\x37\x2e\x34\x30\x31\x20\x32\x34\x33\x2e\ \x32\x30\x31\x20\x31\x30\x37\x2e\x34\x30\x31\x20\x32\x34\x33\x2e\ \x32\x30\x31\x43\x39\x39\x2e\x34\x30\x31\x20\x32\x34\x39\x2e\x32\ \x30\x31\x20\x39\x37\x2e\x30\x30\x31\x20\x32\x36\x35\x2e\x32\x30\ \x31\x20\x39\x37\x2e\x30\x30\x31\x20\x32\x36\x35\x2e\x32\x30\x31\ \x43\x39\x36\x2e\x32\x30\x31\x20\x32\x37\x35\x2e\x36\x30\x31\x20\ \x39\x33\x2e\x38\x30\x31\x20\x32\x37\x38\x2e\x38\x30\x31\x20\x39\ \x39\x2e\x30\x30\x31\x20\x32\x37\x36\x2e\x38\x30\x31\x43\x31\x30\ \x34\x2e\x32\x30\x31\x20\x32\x37\x34\x2e\x38\x30\x31\x20\x31\x30\ \x33\x2e\x34\x30\x31\x20\x32\x36\x32\x2e\x34\x30\x31\x20\x31\x30\ \x33\x2e\x34\x30\x31\x20\x32\x36\x32\x2e\x34\x30\x31\x43\x39\x38\ \x2e\x36\x30\x31\x20\x32\x34\x36\x2e\x38\x30\x31\x20\x31\x34\x31\ \x2e\x34\x30\x31\x20\x32\x33\x30\x2e\x38\x30\x31\x20\x31\x34\x31\ \x2e\x34\x30\x31\x20\x32\x33\x30\x2e\x38\x30\x31\x43\x31\x34\x35\ \x2e\x34\x30\x31\x20\x32\x32\x39\x2e\x32\x30\x31\x20\x31\x34\x36\ \x2e\x32\x30\x31\x20\x32\x32\x34\x2e\x30\x30\x31\x20\x31\x34\x36\ \x2e\x32\x30\x31\x20\x32\x32\x34\x2e\x30\x30\x31\x43\x31\x34\x38\ \x2e\x32\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x20\x31\x35\x37\ \x2e\x30\x30\x31\x20\x32\x33\x32\x2e\x30\x30\x31\x20\x31\x35\x37\ \x2e\x30\x30\x31\x20\x32\x33\x32\x2e\x30\x30\x31\x43\x31\x36\x34\ \x2e\x36\x30\x31\x20\x32\x34\x33\x2e\x32\x30\x31\x20\x31\x36\x35\ \x2e\x30\x30\x31\x20\x32\x33\x34\x2e\x30\x30\x31\x20\x31\x36\x35\ \x2e\x30\x30\x31\x20\x32\x33\x34\x2e\x30\x30\x31\x43\x31\x36\x36\ \x2e\x32\x30\x31\x20\x32\x33\x30\x2e\x34\x30\x31\x20\x31\x36\x34\ \x2e\x36\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x20\x31\x36\x34\ \x2e\x36\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x43\x31\x37\x30\ \x2e\x36\x30\x31\x20\x32\x30\x32\x2e\x38\x30\x31\x20\x31\x35\x36\ \x2e\x36\x30\x31\x20\x31\x39\x36\x2e\x34\x30\x31\x20\x31\x35\x36\ \x2e\x36\x30\x31\x20\x31\x39\x36\x2e\x34\x30\x31\x43\x31\x34\x36\ \x2e\x36\x30\x31\x20\x31\x36\x32\x2e\x38\x30\x31\x20\x31\x36\x30\ \x2e\x36\x30\x31\x20\x31\x37\x31\x2e\x32\x30\x31\x20\x31\x36\x30\ \x2e\x36\x30\x31\x20\x31\x37\x31\x2e\x32\x30\x31\x43\x31\x36\x33\ \x2e\x34\x30\x31\x20\x31\x37\x36\x2e\x38\x30\x31\x20\x31\x37\x34\ \x2e\x32\x30\x31\x20\x31\x38\x32\x2e\x30\x30\x31\x20\x31\x37\x34\ \x2e\x32\x30\x31\x20\x31\x38\x32\x2e\x30\x30\x31\x4c\x31\x37\x37\ \x2e\x38\x30\x31\x20\x31\x37\x39\x2e\x36\x30\x31\x43\x31\x37\x36\ \x2e\x32\x30\x31\x20\x31\x37\x34\x2e\x38\x30\x31\x20\x31\x38\x34\ \x2e\x36\x30\x31\x20\x31\x36\x38\x2e\x38\x30\x31\x20\x31\x38\x34\ \x2e\x36\x30\x31\x20\x31\x36\x38\x2e\x38\x30\x31\x43\x31\x38\x37\ \x2e\x34\x30\x31\x20\x31\x37\x35\x2e\x32\x30\x31\x20\x31\x39\x33\ \x2e\x34\x30\x31\x20\x31\x36\x37\x2e\x32\x30\x31\x20\x31\x39\x33\ \x2e\x34\x30\x31\x20\x31\x36\x37\x2e\x32\x30\x31\x43\x31\x39\x37\ \x2e\x30\x30\x31\x20\x31\x34\x32\x2e\x38\x30\x31\x20\x32\x30\x39\ \x2e\x34\x30\x31\x20\x31\x35\x37\x2e\x32\x30\x31\x20\x32\x30\x39\ \x2e\x34\x30\x31\x20\x31\x35\x37\x2e\x32\x30\x31\x43\x32\x31\x33\ \x2e\x34\x30\x31\x20\x31\x35\x38\x2e\x34\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x35\x31\x2e\x36\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x35\x31\x2e\x36\x30\x31\x43\x32\x31\x38\ \x2e\x32\x30\x31\x20\x31\x34\x31\x2e\x32\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x32\x37\x2e\x36\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x32\x37\x2e\x36\x30\x31\x43\x32\x31\x38\ \x2e\x32\x30\x31\x20\x31\x32\x37\x2e\x32\x30\x31\x20\x32\x32\x37\ \x2e\x38\x30\x31\x20\x31\x33\x33\x2e\x32\x30\x31\x20\x32\x32\x37\ \x2e\x38\x30\x31\x20\x31\x33\x33\x2e\x32\x30\x31\x43\x32\x33\x30\ \x2e\x36\x30\x31\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x32\x32\x31\ \x2e\x34\x30\x31\x20\x31\x31\x32\x2e\x38\x30\x31\x20\x32\x32\x35\ \x2e\x34\x30\x31\x20\x31\x31\x35\x2e\x32\x30\x31\x43\x32\x32\x39\ \x2e\x34\x30\x31\x20\x31\x31\x37\x2e\x36\x30\x31\x20\x32\x33\x33\ \x2e\x38\x30\x31\x20\x31\x31\x39\x2e\x32\x30\x31\x20\x32\x33\x33\ \x2e\x38\x30\x31\x20\x31\x31\x39\x2e\x32\x30\x31\x43\x32\x33\x34\ \x2e\x36\x30\x31\x20\x31\x31\x37\x2e\x32\x30\x31\x20\x32\x32\x34\ \x2e\x36\x30\x31\x20\x31\x30\x34\x2e\x38\x30\x31\x20\x32\x32\x34\ \x2e\x36\x30\x31\x20\x31\x30\x34\x2e\x38\x30\x31\x43\x32\x32\x30\ \x2e\x32\x30\x31\x20\x31\x30\x32\x20\x32\x31\x35\x2e\x30\x30\x31\ \x20\x38\x31\x2e\x36\x20\x32\x31\x35\x2e\x30\x30\x31\x20\x38\x31\ \x2e\x36\x43\x32\x32\x32\x2e\x32\x30\x31\x20\x38\x35\x2e\x32\x20\ \x32\x31\x32\x2e\x32\x30\x31\x20\x37\x30\x20\x32\x31\x32\x2e\x32\ \x30\x31\x20\x37\x30\x43\x32\x31\x32\x2e\x32\x30\x31\x20\x36\x36\ \x2e\x38\x20\x32\x31\x38\x2e\x32\x30\x31\x20\x35\x35\x2e\x36\x20\ \x32\x31\x38\x2e\x32\x30\x31\x20\x35\x35\x2e\x36\x43\x32\x31\x37\ \x2e\x34\x30\x31\x20\x34\x38\x2e\x38\x20\x32\x31\x38\x2e\x32\x30\ \x31\x20\x34\x39\x2e\x32\x20\x32\x31\x38\x2e\x32\x30\x31\x20\x34\ \x39\x2e\x32\x43\x32\x32\x31\x2e\x30\x30\x31\x20\x35\x30\x2e\x34\ \x20\x32\x32\x39\x2e\x30\x30\x31\x20\x35\x32\x20\x32\x32\x32\x2e\ \x32\x30\x31\x20\x34\x35\x2e\x36\x43\x32\x31\x35\x2e\x34\x30\x31\ \x20\x33\x39\x2e\x32\x20\x32\x32\x33\x2e\x30\x30\x31\x20\x33\x34\ \x2e\x34\x20\x32\x32\x33\x2e\x30\x30\x31\x20\x33\x34\x2e\x34\x43\ \x32\x32\x37\x2e\x34\x30\x31\x20\x33\x31\x2e\x36\x20\x32\x31\x33\ \x2e\x38\x30\x31\x20\x33\x32\x20\x32\x31\x33\x2e\x38\x30\x31\x20\ \x33\x32\x43\x32\x30\x38\x2e\x36\x30\x31\x20\x32\x37\x2e\x36\x20\ \x32\x30\x39\x2e\x30\x30\x31\x20\x32\x33\x2e\x36\x20\x32\x30\x39\ \x2e\x30\x30\x31\x20\x32\x33\x2e\x36\x43\x32\x31\x37\x2e\x30\x30\ \x31\x20\x32\x35\x2e\x36\x20\x32\x30\x32\x2e\x36\x30\x31\x20\x31\ \x31\x2e\x32\x20\x32\x30\x30\x2e\x32\x30\x31\x20\x37\x2e\x36\x43\ \x31\x39\x37\x2e\x38\x30\x31\x20\x34\x20\x32\x30\x37\x2e\x34\x30\ \x31\x20\x2d\x31\x2e\x32\x20\x32\x30\x37\x2e\x34\x30\x31\x20\x2d\ \x31\x2e\x32\x43\x32\x32\x30\x2e\x36\x30\x31\x20\x2d\x34\x2e\x38\ \x20\x32\x30\x39\x2e\x30\x30\x31\x20\x2d\x38\x20\x32\x30\x39\x2e\ \x30\x30\x31\x20\x2d\x38\x43\x31\x38\x39\x2e\x34\x30\x31\x20\x2d\ \x37\x2e\x36\x20\x32\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x38\x2e\ \x34\x20\x32\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x38\x2e\x34\x43\ \x32\x30\x36\x2e\x32\x30\x31\x20\x2d\x31\x38\x20\x32\x30\x34\x2e\ \x36\x30\x31\x20\x2d\x32\x30\x2e\x34\x20\x32\x30\x34\x2e\x36\x30\ \x31\x20\x2d\x32\x30\x2e\x34\x43\x31\x39\x39\x2e\x34\x30\x31\x20\ \x2d\x32\x31\x2e\x36\x20\x31\x38\x39\x2e\x38\x30\x31\x20\x2d\x32\ \x38\x20\x31\x38\x39\x2e\x38\x30\x31\x20\x2d\x32\x38\x43\x31\x38\ \x35\x2e\x38\x30\x31\x20\x2d\x33\x31\x2e\x36\x20\x31\x38\x39\x2e\ \x34\x30\x31\x20\x2d\x33\x30\x2e\x38\x20\x31\x38\x39\x2e\x34\x30\ \x31\x20\x2d\x33\x30\x2e\x38\x43\x32\x30\x36\x2e\x32\x30\x31\x20\ \x2d\x32\x39\x2e\x36\x20\x31\x37\x37\x2e\x34\x30\x31\x20\x2d\x34\ \x30\x2e\x38\x20\x31\x37\x37\x2e\x34\x30\x31\x20\x2d\x34\x30\x2e\ \x38\x43\x31\x38\x35\x2e\x34\x30\x31\x20\x2d\x34\x30\x2e\x38\x20\ \x31\x36\x37\x2e\x34\x30\x31\x20\x2d\x35\x31\x2e\x32\x20\x31\x36\ \x37\x2e\x34\x30\x31\x20\x2d\x35\x31\x2e\x32\x43\x31\x36\x35\x2e\ \x34\x30\x31\x20\x2d\x35\x32\x2e\x38\x20\x31\x36\x32\x2e\x32\x30\ \x31\x20\x2d\x36\x30\x2e\x34\x20\x31\x36\x32\x2e\x32\x30\x31\x20\ \x2d\x36\x30\x2e\x34\x43\x31\x35\x36\x2e\x32\x30\x31\x20\x2d\x36\ \x35\x2e\x36\x20\x31\x35\x31\x2e\x34\x30\x31\x20\x2d\x37\x32\x2e\ \x34\x20\x31\x35\x31\x2e\x34\x30\x31\x20\x2d\x37\x32\x2e\x34\x43\ \x31\x35\x31\x2e\x30\x30\x31\x20\x2d\x37\x36\x2e\x38\x20\x31\x34\ \x36\x2e\x32\x30\x31\x20\x2d\x38\x31\x2e\x36\x20\x31\x34\x36\x2e\ \x32\x30\x31\x20\x2d\x38\x31\x2e\x36\x43\x31\x33\x34\x2e\x36\x30\ \x31\x20\x2d\x39\x35\x2e\x32\x20\x31\x32\x39\x2e\x30\x30\x31\x20\ \x2d\x39\x34\x2e\x38\x20\x31\x32\x39\x2e\x30\x30\x31\x20\x2d\x39\ \x34\x2e\x38\x43\x31\x31\x34\x2e\x32\x30\x31\x20\x2d\x39\x38\x2e\ \x34\x20\x31\x30\x39\x2e\x30\x30\x31\x20\x2d\x39\x37\x2e\x36\x20\ \x31\x30\x39\x2e\x30\x30\x31\x20\x2d\x39\x37\x2e\x36\x4c\x35\x36\ \x2e\x32\x20\x2d\x39\x33\x2e\x32\x43\x32\x39\x2e\x38\x20\x2d\x38\ \x30\x2e\x34\x20\x33\x37\x2e\x36\x20\x2d\x35\x39\x2e\x34\x20\x33\ \x37\x2e\x36\x20\x2d\x35\x39\x2e\x34\x43\x34\x34\x20\x2d\x35\x31\ \x20\x35\x33\x2e\x32\x20\x2d\x35\x34\x2e\x38\x20\x35\x33\x2e\x32\ \x20\x2d\x35\x34\x2e\x38\x43\x35\x37\x2e\x38\x20\x2d\x36\x31\x20\ \x36\x39\x2e\x34\x20\x2d\x35\x38\x2e\x38\x20\x36\x39\x2e\x34\x20\ \x2d\x35\x38\x2e\x38\x43\x38\x39\x2e\x38\x30\x31\x20\x2d\x35\x35\ \x2e\x36\x20\x38\x37\x2e\x32\x30\x31\x20\x2d\x35\x39\x2e\x32\x20\ \x38\x37\x2e\x32\x30\x31\x20\x2d\x35\x39\x2e\x32\x43\x38\x34\x2e\ \x38\x30\x31\x20\x2d\x36\x33\x2e\x38\x20\x36\x38\x2e\x36\x20\x2d\ \x37\x30\x20\x36\x38\x2e\x34\x20\x2d\x37\x30\x2e\x36\x43\x36\x38\ \x2e\x32\x20\x2d\x37\x31\x2e\x32\x20\x35\x39\x2e\x34\x20\x2d\x37\ \x34\x2e\x36\x20\x35\x39\x2e\x34\x20\x2d\x37\x34\x2e\x36\x43\x35\ \x36\x2e\x34\x20\x2d\x37\x35\x2e\x38\x20\x35\x32\x20\x2d\x38\x35\ \x20\x35\x32\x20\x2d\x38\x35\x43\x34\x38\x2e\x38\x20\x2d\x38\x38\ \x2e\x34\x20\x36\x34\x2e\x36\x20\x2d\x38\x32\x2e\x36\x20\x36\x34\ \x2e\x36\x20\x2d\x38\x32\x2e\x36\x43\x36\x33\x2e\x34\x20\x2d\x38\ \x31\x2e\x36\x20\x37\x30\x2e\x38\x20\x2d\x37\x37\x2e\x36\x20\x37\ \x30\x2e\x38\x20\x2d\x37\x37\x2e\x36\x43\x38\x38\x2e\x32\x30\x31\ \x20\x2d\x37\x38\x2e\x36\x20\x39\x38\x2e\x38\x30\x31\x20\x2d\x36\ \x37\x2e\x38\x20\x39\x38\x2e\x38\x30\x31\x20\x2d\x36\x37\x2e\x38\ \x43\x31\x30\x39\x2e\x36\x30\x31\x20\x2d\x35\x31\x2e\x32\x20\x31\ \x30\x39\x2e\x38\x30\x31\x20\x2d\x35\x39\x2e\x34\x20\x31\x30\x39\ \x2e\x38\x30\x31\x20\x2d\x35\x39\x2e\x34\x43\x31\x31\x32\x2e\x36\ \x30\x31\x20\x2d\x36\x38\x2e\x38\x20\x31\x30\x30\x2e\x38\x30\x31\ \x20\x2d\x39\x30\x20\x31\x30\x30\x2e\x38\x30\x31\x20\x2d\x39\x30\ \x43\x31\x30\x31\x2e\x32\x30\x31\x20\x2d\x39\x32\x20\x31\x30\x39\ \x2e\x34\x30\x31\x20\x2d\x38\x35\x2e\x34\x20\x31\x30\x39\x2e\x34\ \x30\x31\x20\x2d\x38\x35\x2e\x34\x43\x31\x31\x30\x2e\x38\x30\x31\ \x20\x2d\x38\x37\x2e\x34\x20\x31\x31\x31\x2e\x36\x30\x31\x20\x2d\ \x38\x31\x2e\x36\x20\x31\x31\x31\x2e\x36\x30\x31\x20\x2d\x38\x31\ \x2e\x36\x43\x31\x31\x31\x2e\x38\x30\x31\x20\x2d\x37\x39\x2e\x32\ \x20\x31\x31\x35\x2e\x36\x30\x31\x20\x2d\x37\x31\x2e\x32\x20\x31\ \x31\x35\x2e\x36\x30\x31\x20\x2d\x37\x31\x2e\x32\x43\x31\x31\x38\ \x2e\x34\x30\x31\x20\x2d\x35\x38\x2e\x32\x20\x31\x32\x32\x2e\x30\ \x30\x31\x20\x2d\x36\x35\x2e\x36\x20\x31\x32\x32\x2e\x30\x30\x31\ \x20\x2d\x36\x35\x2e\x36\x4c\x31\x32\x36\x2e\x36\x30\x31\x20\x2d\ \x35\x36\x2e\x32\x43\x31\x32\x38\x2e\x30\x30\x31\x20\x2d\x35\x33\ \x2e\x36\x20\x31\x32\x32\x2e\x30\x30\x31\x20\x2d\x34\x36\x20\x31\ \x32\x32\x2e\x30\x30\x31\x20\x2d\x34\x36\x43\x31\x32\x31\x2e\x38\ \x30\x31\x20\x2d\x34\x33\x2e\x32\x20\x31\x32\x32\x2e\x36\x30\x31\ \x20\x2d\x34\x33\x2e\x34\x20\x31\x31\x37\x2e\x30\x30\x31\x20\x2d\ \x33\x35\x2e\x38\x43\x31\x31\x31\x2e\x34\x30\x31\x20\x2d\x32\x38\ \x2e\x32\x20\x31\x31\x34\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\x38\ \x20\x31\x31\x34\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\x38\x43\x31\ \x31\x33\x2e\x34\x30\x31\x20\x2d\x31\x37\x2e\x32\x20\x31\x32\x32\ \x2e\x32\x30\x31\x20\x2d\x31\x37\x2e\x36\x20\x31\x32\x32\x2e\x32\ \x30\x31\x20\x2d\x31\x37\x2e\x36\x43\x31\x32\x34\x2e\x38\x30\x31\ \x20\x2d\x31\x35\x2e\x34\x20\x31\x32\x38\x2e\x32\x30\x31\x20\x2d\ \x31\x35\x2e\x34\x20\x31\x32\x38\x2e\x32\x30\x31\x20\x2d\x31\x35\ \x2e\x34\x43\x31\x33\x30\x2e\x30\x30\x31\x20\x2d\x31\x33\x2e\x34\ \x20\x31\x33\x32\x2e\x34\x30\x31\x20\x2d\x31\x34\x20\x31\x33\x32\ \x2e\x34\x30\x31\x20\x2d\x31\x34\x43\x31\x33\x34\x2e\x30\x30\x31\ \x20\x2d\x31\x37\x2e\x38\x20\x31\x34\x30\x2e\x32\x30\x31\x20\x2d\ \x31\x35\x2e\x38\x20\x31\x34\x30\x2e\x32\x30\x31\x20\x2d\x31\x35\ \x2e\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x20\x2d\x31\x38\x2e\x32\ \x20\x31\x34\x39\x2e\x38\x30\x31\x20\x2d\x31\x38\x2e\x36\x20\x31\ \x34\x39\x2e\x38\x30\x31\x20\x2d\x31\x38\x2e\x36\x43\x31\x35\x30\ \x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x32\x20\x31\x35\x31\x2e\x32\ \x30\x31\x20\x2d\x32\x32\x2e\x38\x20\x31\x35\x34\x2e\x36\x30\x31\ \x20\x2d\x32\x33\x2e\x34\x43\x31\x35\x38\x2e\x30\x30\x31\x20\x2d\ \x32\x34\x20\x31\x33\x33\x2e\x34\x30\x31\x20\x2d\x36\x37\x20\x31\ \x33\x33\x2e\x34\x30\x31\x20\x2d\x36\x37\x43\x31\x33\x39\x2e\x38\ \x30\x31\x20\x2d\x36\x37\x2e\x38\x20\x31\x33\x31\x2e\x36\x30\x31\ \x20\x2d\x38\x30\x2e\x32\x20\x31\x33\x31\x2e\x36\x30\x31\x20\x2d\ \x38\x30\x2e\x32\x43\x31\x32\x39\x2e\x34\x30\x31\x20\x2d\x38\x36\ \x2e\x38\x20\x31\x34\x30\x2e\x38\x30\x31\x20\x2d\x37\x32\x2e\x32\ \x20\x31\x34\x33\x2e\x30\x30\x31\x20\x2d\x37\x30\x2e\x38\x43\x31\ \x34\x35\x2e\x32\x30\x31\x20\x2d\x36\x39\x2e\x34\x20\x31\x34\x36\ \x2e\x32\x30\x31\x20\x2d\x36\x37\x2e\x32\x20\x31\x34\x34\x2e\x36\ \x30\x31\x20\x2d\x36\x37\x2e\x34\x43\x31\x34\x33\x2e\x30\x30\x31\ \x20\x2d\x36\x37\x2e\x36\x20\x31\x34\x31\x2e\x32\x30\x31\x20\x2d\ \x36\x35\x2e\x34\x20\x31\x34\x32\x2e\x36\x30\x31\x20\x2d\x36\x35\ \x2e\x32\x43\x31\x34\x34\x2e\x30\x30\x31\x20\x2d\x36\x35\x20\x31\ \x35\x37\x2e\x30\x30\x31\x20\x2d\x35\x30\x20\x31\x36\x30\x2e\x34\ \x30\x31\x20\x2d\x33\x39\x2e\x38\x43\x31\x36\x33\x2e\x38\x30\x31\ \x20\x2d\x32\x39\x2e\x36\x20\x31\x36\x39\x2e\x38\x30\x31\x20\x2d\ \x32\x35\x2e\x36\x20\x31\x37\x36\x2e\x30\x30\x31\x20\x2d\x31\x39\ \x2e\x36\x43\x31\x38\x32\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x36\ \x20\x31\x38\x31\x2e\x34\x30\x31\x20\x31\x30\x2e\x36\x20\x31\x38\ \x31\x2e\x34\x30\x31\x20\x31\x30\x2e\x36\x43\x31\x38\x31\x2e\x30\ \x30\x31\x20\x31\x39\x2e\x34\x20\x31\x38\x37\x2e\x30\x30\x31\x20\ \x33\x30\x20\x31\x38\x37\x2e\x30\x30\x31\x20\x33\x30\x43\x31\x38\ \x39\x2e\x30\x30\x31\x20\x33\x33\x2e\x38\x20\x31\x38\x34\x2e\x38\ \x30\x31\x20\x35\x32\x20\x31\x38\x34\x2e\x38\x30\x31\x20\x35\x32\ \x43\x31\x38\x32\x2e\x38\x30\x31\x20\x35\x34\x2e\x32\x20\x31\x38\ \x34\x2e\x32\x30\x31\x20\x35\x35\x20\x31\x38\x34\x2e\x32\x30\x31\ \x20\x35\x35\x43\x31\x38\x35\x2e\x32\x30\x31\x20\x35\x36\x2e\x32\ \x20\x31\x39\x32\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\x20\x31\x39\ \x32\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\x43\x31\x39\x30\x2e\x32\ \x30\x31\x20\x36\x39\x2e\x32\x20\x31\x39\x33\x2e\x38\x30\x31\x20\ \x37\x32\x2e\x38\x20\x31\x39\x33\x2e\x38\x30\x31\x20\x37\x32\x2e\ \x38\x43\x31\x39\x39\x2e\x30\x30\x31\x20\x37\x38\x2e\x38\x20\x31\ \x39\x32\x2e\x36\x30\x31\x20\x37\x35\x2e\x38\x20\x31\x39\x32\x2e\ \x36\x30\x31\x20\x37\x35\x2e\x38\x43\x31\x38\x36\x2e\x36\x30\x31\ \x20\x37\x34\x2e\x32\x20\x31\x39\x33\x2e\x36\x30\x31\x20\x38\x34\ \x20\x31\x39\x33\x2e\x36\x30\x31\x20\x38\x34\x43\x31\x39\x34\x2e\ \x38\x30\x31\x20\x38\x35\x2e\x38\x20\x31\x38\x35\x2e\x38\x30\x31\ \x20\x38\x31\x2e\x32\x20\x31\x38\x35\x2e\x38\x30\x31\x20\x38\x31\ \x2e\x32\x43\x31\x37\x36\x2e\x36\x30\x31\x20\x38\x30\x2e\x36\x20\ \x31\x38\x38\x2e\x32\x30\x31\x20\x38\x37\x2e\x38\x20\x31\x38\x38\ \x2e\x32\x30\x31\x20\x38\x37\x2e\x38\x43\x31\x39\x36\x2e\x38\x30\ \x31\x20\x39\x35\x20\x31\x38\x35\x2e\x34\x30\x31\x20\x39\x30\x2e\ \x36\x20\x31\x38\x35\x2e\x34\x30\x31\x20\x39\x30\x2e\x36\x43\x31\ \x38\x30\x2e\x38\x30\x31\x20\x38\x38\x2e\x38\x20\x31\x38\x34\x2e\ \x30\x30\x31\x20\x39\x35\x2e\x36\x20\x31\x38\x34\x2e\x30\x30\x31\ \x20\x39\x35\x2e\x36\x43\x31\x38\x37\x2e\x32\x30\x31\x20\x39\x37\ \x2e\x32\x20\x32\x30\x34\x2e\x34\x30\x31\x20\x31\x30\x34\x2e\x32\ \x20\x32\x30\x34\x2e\x34\x30\x31\x20\x31\x30\x34\x2e\x32\x43\x32\ \x30\x34\x2e\x38\x30\x31\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x32\ \x30\x31\x2e\x38\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x32\ \x30\x31\x2e\x38\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x43\x32\ \x30\x32\x2e\x32\x30\x31\x20\x31\x31\x37\x2e\x30\x30\x31\x20\x32\ \x30\x30\x2e\x30\x30\x31\x20\x31\x32\x30\x2e\x34\x30\x31\x20\x32\ \x30\x30\x2e\x30\x30\x31\x20\x31\x32\x30\x2e\x34\x30\x31\x43\x31\ \x39\x38\x2e\x38\x30\x31\x20\x31\x32\x38\x2e\x36\x30\x31\x20\x31\ \x39\x38\x2e\x32\x30\x31\x20\x31\x32\x39\x2e\x34\x30\x31\x20\x31\ \x39\x38\x2e\x32\x30\x31\x20\x31\x32\x39\x2e\x34\x30\x31\x43\x31\ \x39\x34\x2e\x30\x30\x31\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x31\ \x38\x36\x2e\x36\x30\x31\x20\x31\x34\x33\x2e\x34\x30\x31\x20\x31\ \x38\x36\x2e\x36\x30\x31\x20\x31\x34\x33\x2e\x34\x30\x31\x43\x31\ \x38\x34\x2e\x38\x30\x31\x20\x31\x34\x36\x2e\x30\x30\x31\x20\x31\ \x37\x34\x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x20\x31\ \x37\x34\x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x43\x31\ \x37\x32\x2e\x36\x30\x31\x20\x31\x36\x35\x2e\x30\x30\x31\x20\x31\ \x35\x34\x2e\x36\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x20\x31\ \x35\x34\x2e\x36\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x43\x31\ \x34\x38\x2e\x30\x30\x31\x20\x31\x36\x31\x2e\x32\x30\x31\x20\x31\ \x35\x30\x2e\x30\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x20\x31\ \x35\x30\x2e\x30\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x43\x31\ \x34\x39\x2e\x36\x30\x31\x20\x31\x35\x35\x2e\x36\x30\x31\x20\x31\ \x35\x34\x2e\x34\x30\x31\x20\x31\x34\x39\x2e\x36\x30\x31\x20\x31\ \x35\x34\x2e\x34\x30\x31\x20\x31\x34\x39\x2e\x36\x30\x31\x43\x31\ \x36\x31\x2e\x34\x30\x31\x20\x31\x34\x37\x2e\x30\x30\x31\x20\x31\ \x35\x38\x2e\x38\x30\x31\x20\x31\x33\x36\x2e\x32\x30\x31\x20\x31\ \x35\x38\x2e\x38\x30\x31\x20\x31\x33\x36\x2e\x32\x30\x31\x43\x31\ \x36\x32\x2e\x38\x30\x31\x20\x31\x33\x34\x2e\x38\x30\x31\x20\x31\ \x35\x31\x2e\x36\x30\x31\x20\x31\x33\x32\x2e\x30\x30\x31\x20\x31\ \x35\x31\x2e\x38\x30\x31\x20\x31\x33\x30\x2e\x38\x30\x31\x43\x31\ \x35\x32\x2e\x30\x30\x31\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x31\ \x35\x37\x2e\x38\x30\x31\x20\x31\x32\x38\x2e\x32\x30\x31\x20\x31\ \x35\x37\x2e\x38\x30\x31\x20\x31\x32\x38\x2e\x32\x30\x31\x43\x31\ \x36\x35\x2e\x38\x30\x31\x20\x31\x32\x36\x2e\x32\x30\x31\x20\x31\ \x36\x31\x2e\x34\x30\x31\x20\x31\x32\x33\x2e\x38\x30\x31\x20\x31\ \x36\x31\x2e\x34\x30\x31\x20\x31\x32\x33\x2e\x38\x30\x31\x43\x31\ \x36\x30\x2e\x38\x30\x31\x20\x31\x31\x39\x2e\x38\x30\x31\x20\x31\ \x36\x33\x2e\x38\x30\x31\x20\x31\x31\x34\x2e\x32\x30\x31\x20\x31\ \x36\x33\x2e\x38\x30\x31\x20\x31\x31\x34\x2e\x32\x30\x31\x43\x31\ \x37\x35\x2e\x34\x30\x31\x20\x31\x31\x33\x2e\x34\x30\x31\x20\x31\ \x36\x33\x2e\x38\x30\x31\x20\x39\x37\x2e\x32\x20\x31\x36\x33\x2e\ \x38\x30\x31\x20\x39\x37\x2e\x32\x43\x31\x35\x33\x2e\x30\x30\x31\ \x20\x38\x39\x2e\x36\x20\x31\x35\x32\x2e\x30\x30\x31\x20\x38\x33\ \x2e\x38\x20\x31\x35\x32\x2e\x30\x30\x31\x20\x38\x33\x2e\x38\x43\ \x31\x36\x34\x2e\x36\x30\x31\x20\x37\x35\x2e\x36\x20\x31\x35\x36\ \x2e\x34\x30\x31\x20\x36\x33\x2e\x32\x20\x31\x35\x36\x2e\x36\x30\ \x31\x20\x35\x39\x2e\x36\x43\x31\x35\x36\x2e\x38\x30\x31\x20\x35\ \x36\x20\x31\x35\x38\x2e\x30\x30\x31\x20\x33\x34\x2e\x34\x20\x31\ \x35\x38\x2e\x30\x30\x31\x20\x33\x34\x2e\x34\x43\x31\x35\x36\x2e\ \x30\x30\x31\x20\x32\x38\x2e\x32\x20\x31\x35\x33\x2e\x30\x30\x31\ \x20\x31\x34\x2e\x36\x20\x31\x35\x33\x2e\x30\x30\x31\x20\x31\x34\ \x2e\x36\x43\x31\x35\x35\x2e\x32\x30\x31\x20\x39\x2e\x34\x20\x31\ \x36\x32\x2e\x36\x30\x31\x20\x2d\x33\x2e\x32\x20\x31\x36\x32\x2e\ \x36\x30\x31\x20\x2d\x33\x2e\x32\x43\x31\x36\x35\x2e\x34\x30\x31\ \x20\x2d\x37\x2e\x34\x20\x31\x37\x34\x2e\x32\x30\x31\x20\x2d\x31\ \x32\x2e\x32\x20\x31\x37\x32\x2e\x30\x30\x31\x20\x2d\x31\x35\x2e\ \x32\x43\x31\x36\x39\x2e\x38\x30\x31\x20\x2d\x31\x38\x2e\x32\x20\ \x31\x36\x32\x2e\x30\x30\x31\x20\x2d\x31\x36\x2e\x34\x20\x31\x36\ \x32\x2e\x30\x30\x31\x20\x2d\x31\x36\x2e\x34\x43\x31\x35\x34\x2e\ \x32\x30\x31\x20\x2d\x31\x37\x2e\x38\x20\x31\x35\x34\x2e\x38\x30\ \x31\x20\x2d\x31\x32\x2e\x36\x20\x31\x35\x34\x2e\x38\x30\x31\x20\ \x2d\x31\x32\x2e\x36\x43\x31\x35\x33\x2e\x32\x30\x31\x20\x2d\x31\ \x31\x2e\x36\x20\x31\x35\x32\x2e\x34\x30\x31\x20\x2d\x36\x2e\x36\ \x20\x31\x35\x32\x2e\x34\x30\x31\x20\x2d\x36\x2e\x36\x43\x31\x35\ \x31\x2e\x36\x38\x20\x31\x2e\x33\x33\x33\x20\x31\x34\x32\x2e\x38\ \x30\x31\x20\x37\x2e\x36\x20\x31\x34\x32\x2e\x38\x30\x31\x20\x37\ \x2e\x36\x43\x31\x33\x31\x2e\x36\x30\x31\x20\x31\x33\x2e\x38\x20\ \x31\x34\x30\x2e\x38\x30\x31\x20\x31\x37\x2e\x38\x20\x31\x34\x30\ \x2e\x38\x30\x31\x20\x31\x37\x2e\x38\x43\x31\x34\x36\x2e\x38\x30\ \x31\x20\x32\x34\x2e\x34\x20\x31\x33\x37\x2e\x30\x30\x31\x20\x32\ \x34\x2e\x36\x20\x31\x33\x37\x2e\x30\x30\x31\x20\x32\x34\x2e\x36\ \x43\x31\x32\x36\x2e\x30\x30\x31\x20\x32\x32\x2e\x38\x20\x31\x33\ \x34\x2e\x32\x30\x31\x20\x33\x33\x20\x31\x33\x34\x2e\x32\x30\x31\ \x20\x33\x33\x43\x31\x34\x35\x2e\x30\x30\x31\x20\x34\x35\x2e\x38\ \x20\x31\x34\x32\x2e\x30\x30\x31\x20\x34\x38\x2e\x36\x20\x31\x34\ \x32\x2e\x30\x30\x31\x20\x34\x38\x2e\x36\x43\x31\x33\x31\x2e\x38\ \x30\x31\x20\x34\x39\x2e\x36\x20\x31\x34\x34\x2e\x34\x30\x31\x20\ \x35\x38\x2e\x38\x20\x31\x34\x34\x2e\x34\x30\x31\x20\x35\x38\x2e\ \x38\x43\x31\x34\x34\x2e\x34\x30\x31\x20\x35\x38\x2e\x38\x20\x31\ \x34\x33\x2e\x36\x30\x31\x20\x35\x36\x2e\x38\x20\x31\x34\x33\x2e\ \x38\x30\x31\x20\x35\x38\x2e\x36\x43\x31\x34\x34\x2e\x30\x30\x31\ \x20\x36\x30\x2e\x34\x20\x31\x34\x37\x2e\x30\x30\x31\x20\x36\x34\ \x2e\x36\x20\x31\x34\x37\x2e\x38\x30\x31\x20\x36\x36\x2e\x36\x43\ \x31\x34\x38\x2e\x36\x30\x31\x20\x36\x38\x2e\x36\x20\x31\x34\x34\ \x2e\x36\x30\x31\x20\x36\x38\x2e\x38\x20\x31\x34\x34\x2e\x36\x30\ \x31\x20\x36\x38\x2e\x38\x43\x31\x34\x35\x2e\x32\x30\x31\x20\x37\ \x38\x2e\x34\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x37\x34\x2e\x32\ \x20\x31\x32\x39\x2e\x38\x30\x31\x20\x37\x34\x2e\x32\x43\x31\x32\ \x39\x2e\x38\x30\x31\x20\x37\x34\x2e\x32\x20\x31\x32\x39\x2e\x38\ \x30\x31\x20\x37\x34\x2e\x32\x20\x31\x32\x38\x2e\x32\x30\x31\x20\ \x37\x34\x2e\x34\x43\x31\x32\x36\x2e\x36\x30\x31\x20\x37\x34\x2e\ \x36\x20\x31\x31\x35\x2e\x34\x30\x31\x20\x37\x33\x2e\x38\x20\x31\ \x30\x39\x2e\x36\x30\x31\x20\x37\x31\x2e\x36\x43\x31\x30\x33\x2e\ \x38\x30\x31\x20\x36\x39\x2e\x34\x20\x39\x37\x2e\x30\x30\x31\x20\ \x36\x39\x2e\x34\x20\x39\x37\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\ \x43\x39\x37\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\x20\x39\x33\x2e\ \x30\x30\x31\x20\x37\x31\x2e\x32\x20\x38\x35\x2e\x34\x20\x37\x31\ \x43\x37\x37\x2e\x38\x20\x37\x30\x2e\x38\x20\x36\x39\x2e\x38\x20\ \x37\x33\x2e\x36\x20\x36\x39\x2e\x38\x20\x37\x33\x2e\x36\x43\x36\ \x35\x2e\x34\x20\x37\x33\x2e\x32\x20\x37\x34\x20\x36\x38\x2e\x38\ \x20\x37\x34\x2e\x32\x20\x36\x39\x43\x37\x34\x2e\x34\x20\x36\x39\ \x2e\x32\x20\x38\x30\x20\x36\x33\x2e\x36\x20\x37\x32\x20\x36\x34\ \x2e\x32\x43\x35\x30\x2e\x32\x30\x33\x20\x36\x35\x2e\x38\x33\x35\ \x20\x33\x39\x2e\x34\x20\x35\x35\x2e\x36\x20\x33\x39\x2e\x34\x20\ \x35\x35\x2e\x36\x43\x33\x37\x2e\x34\x20\x35\x34\x2e\x32\x20\x33\ \x34\x2e\x38\x20\x35\x31\x2e\x34\x20\x33\x34\x2e\x38\x20\x35\x31\ \x2e\x34\x43\x32\x34\x2e\x38\x20\x34\x39\x2e\x34\x20\x33\x36\x2e\ \x32\x20\x36\x33\x2e\x38\x20\x33\x36\x2e\x32\x20\x36\x33\x2e\x38\ \x43\x33\x37\x2e\x34\x20\x36\x35\x2e\x32\x20\x33\x36\x20\x36\x36\ \x2e\x32\x20\x33\x36\x20\x36\x36\x2e\x32\x43\x33\x35\x2e\x32\x20\ \x36\x34\x2e\x36\x20\x32\x37\x2e\x34\x20\x35\x39\x2e\x32\x20\x32\ \x37\x2e\x34\x20\x35\x39\x2e\x32\x43\x32\x34\x2e\x35\x38\x39\x20\ \x35\x38\x2e\x32\x32\x37\x20\x32\x33\x2e\x32\x32\x36\x20\x35\x36\ \x2e\x38\x39\x33\x20\x32\x30\x2e\x38\x39\x35\x20\x35\x34\x2e\x34\ \x30\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x20\x34\x32\x2e\x38\ \x43\x2d\x33\x20\x34\x32\x2e\x38\x20\x38\x2e\x36\x20\x34\x38\x2e\ \x34\x20\x31\x31\x2e\x32\x20\x35\x31\x2e\x32\x43\x31\x33\x2e\x38\ \x20\x35\x34\x20\x32\x37\x2e\x38\x20\x36\x35\x2e\x34\x20\x32\x37\ \x2e\x38\x20\x36\x35\x2e\x34\x43\x32\x37\x2e\x38\x20\x36\x35\x2e\ \x34\x20\x32\x32\x2e\x34\x20\x36\x33\x2e\x34\x20\x31\x39\x2e\x38\ \x20\x36\x31\x2e\x36\x43\x31\x37\x2e\x32\x20\x35\x39\x2e\x38\x20\ \x36\x2e\x34\x20\x35\x31\x2e\x36\x20\x36\x2e\x34\x20\x35\x31\x2e\ \x36\x43\x36\x2e\x34\x20\x35\x31\x2e\x36\x20\x32\x2e\x36\x20\x34\ \x35\x2e\x36\x20\x2d\x33\x20\x34\x32\x2e\x38\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\ \x63\x63\x33\x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x36\x31\x2e\x30\x30\x39\x20\x31\x31\x2e\x36\x30\x33\ \x43\x2d\x36\x30\x2e\x36\x37\x32\x20\x31\x31\x2e\x34\x35\x35\x20\ \x2d\x36\x31\x2e\x31\x39\x36\x20\x38\x2e\x37\x34\x33\x20\x2d\x36\ \x31\x2e\x34\x20\x38\x2e\x32\x43\x2d\x36\x32\x2e\x34\x32\x32\x20\ \x35\x2e\x34\x37\x34\x20\x2d\x37\x31\x2e\x34\x20\x34\x20\x2d\x37\ \x31\x2e\x34\x20\x34\x43\x2d\x37\x31\x2e\x36\x32\x37\x20\x35\x2e\ \x33\x36\x35\x20\x2d\x37\x31\x2e\x36\x38\x32\x20\x36\x2e\x39\x36\ \x31\x20\x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\x35\x39\x39\x43\ \x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\x35\x39\x39\x20\x2d\x36\ \x36\x2e\x37\x30\x38\x20\x31\x34\x2e\x31\x31\x38\x20\x2d\x36\x31\ \x2e\x30\x30\x39\x20\x31\x31\x2e\x36\x30\x33\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x36\x35\ \x39\x39\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x36\x31\x2e\x30\x30\x39\x20\x31\x31\x2e\x34\x30\x33\ \x43\x2d\x36\x31\x2e\x34\x35\x38\x20\x31\x31\x2e\x35\x36\x31\x20\ \x2d\x36\x31\x2e\x30\x32\x34\x20\x38\x2e\x36\x36\x39\x20\x2d\x36\ \x31\x2e\x32\x20\x38\x2e\x32\x43\x2d\x36\x32\x2e\x32\x32\x32\x20\ \x35\x2e\x34\x37\x34\x20\x2d\x37\x31\x2e\x34\x20\x33\x2e\x39\x20\ \x2d\x37\x31\x2e\x34\x20\x33\x2e\x39\x43\x2d\x37\x31\x2e\x36\x32\ \x37\x20\x35\x2e\x32\x36\x35\x20\x2d\x37\x31\x2e\x36\x38\x32\x20\ \x36\x2e\x38\x36\x31\x20\x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\ \x34\x39\x39\x43\x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\x34\x39\ \x39\x20\x2d\x36\x37\x2e\x33\x30\x38\x20\x31\x33\x2e\x36\x31\x38\ \x20\x2d\x36\x31\x2e\x30\x30\x39\x20\x31\x31\x2e\x34\x30\x33\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x36\x35\x2e\x34\x20\x31\x31\x2e\x35\ \x34\x36\x43\x2d\x36\x36\x2e\x30\x32\x35\x20\x31\x31\x2e\x35\x34\ \x36\x20\x2d\x36\x36\x2e\x35\x33\x31\x20\x31\x30\x2e\x34\x30\x36\ \x20\x2d\x36\x36\x2e\x35\x33\x31\x20\x39\x43\x2d\x36\x36\x2e\x35\ \x33\x31\x20\x37\x2e\x35\x39\x35\x20\x2d\x36\x36\x2e\x30\x32\x35\ \x20\x36\x2e\x34\x35\x35\x20\x2d\x36\x35\x2e\x34\x20\x36\x2e\x34\ \x35\x35\x43\x2d\x36\x34\x2e\x37\x37\x35\x20\x36\x2e\x34\x35\x35\ \x20\x2d\x36\x34\x2e\x32\x36\x38\x20\x37\x2e\x35\x39\x35\x20\x2d\ \x36\x34\x2e\x32\x36\x38\x20\x39\x43\x2d\x36\x34\x2e\x32\x36\x38\ \x20\x31\x30\x2e\x34\x30\x36\x20\x2d\x36\x34\x2e\x37\x37\x35\x20\ \x31\x31\x2e\x35\x34\x36\x20\x2d\x36\x35\x2e\x34\x20\x31\x31\x2e\ \x35\x34\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x35\x2e\x34\x20\ \x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x31\x20\x31\x30\x39\ \x2e\x36\x30\x31\x43\x2d\x31\x31\x31\x20\x31\x30\x39\x2e\x36\x30\ \x31\x20\x2d\x31\x31\x36\x2e\x36\x20\x31\x31\x39\x2e\x36\x30\x31\ \x20\x2d\x39\x31\x2e\x38\x20\x31\x31\x33\x2e\x36\x30\x31\x43\x2d\ \x39\x31\x2e\x38\x20\x31\x31\x33\x2e\x36\x30\x31\x20\x2d\x37\x37\ \x2e\x38\x20\x31\x31\x32\x2e\x34\x30\x31\x20\x2d\x37\x35\x2e\x34\ \x20\x31\x31\x30\x2e\x30\x30\x31\x43\x2d\x37\x34\x2e\x32\x20\x31\ \x31\x30\x2e\x38\x30\x31\x20\x2d\x36\x35\x2e\x38\x33\x34\x20\x31\ \x31\x33\x2e\x37\x33\x34\x20\x2d\x36\x33\x20\x31\x31\x34\x2e\x34\ \x30\x31\x43\x2d\x35\x36\x2e\x32\x20\x31\x31\x36\x2e\x30\x30\x31\ \x20\x2d\x34\x37\x2e\x38\x20\x31\x30\x36\x20\x2d\x34\x37\x2e\x38\ \x20\x31\x30\x36\x43\x2d\x34\x37\x2e\x38\x20\x31\x30\x36\x20\x2d\ \x34\x33\x2e\x32\x20\x39\x35\x2e\x35\x20\x2d\x34\x30\x2e\x34\x20\ \x39\x35\x2e\x35\x43\x2d\x33\x37\x2e\x36\x20\x39\x35\x2e\x35\x20\ \x2d\x34\x30\x2e\x38\x20\x39\x37\x2e\x31\x20\x2d\x34\x30\x2e\x38\ \x20\x39\x37\x2e\x31\x43\x2d\x34\x30\x2e\x38\x20\x39\x37\x2e\x31\ \x20\x2d\x34\x37\x2e\x34\x20\x31\x30\x37\x2e\x32\x30\x31\x20\x2d\ \x34\x37\x20\x31\x30\x38\x2e\x38\x30\x31\x43\x2d\x34\x37\x20\x31\ \x30\x38\x2e\x38\x30\x31\x20\x2d\x35\x32\x2e\x32\x20\x31\x32\x38\ \x2e\x38\x30\x31\x20\x2d\x36\x38\x2e\x32\x20\x31\x32\x39\x2e\x36\ \x30\x31\x43\x2d\x36\x38\x2e\x32\x20\x31\x32\x39\x2e\x36\x30\x31\ \x20\x2d\x38\x34\x2e\x33\x35\x20\x31\x33\x30\x2e\x35\x35\x31\x20\ \x2d\x38\x33\x20\x31\x33\x36\x2e\x34\x30\x31\x43\x2d\x38\x33\x20\ \x31\x33\x36\x2e\x34\x30\x31\x20\x2d\x37\x34\x2e\x32\x20\x31\x33\ \x34\x2e\x30\x30\x31\x20\x2d\x37\x31\x2e\x38\x20\x31\x33\x36\x2e\ \x34\x30\x31\x43\x2d\x37\x31\x2e\x38\x20\x31\x33\x36\x2e\x34\x30\ \x31\x20\x2d\x36\x31\x20\x31\x33\x36\x2e\x30\x30\x31\x20\x2d\x36\ \x39\x20\x31\x34\x32\x2e\x34\x30\x31\x4c\x2d\x37\x35\x2e\x38\x20\ \x31\x35\x34\x2e\x30\x30\x31\x43\x2d\x37\x35\x2e\x38\x20\x31\x35\ \x34\x2e\x30\x30\x31\x20\x2d\x37\x35\x2e\x36\x36\x20\x31\x35\x37\ \x2e\x39\x31\x39\x20\x2d\x38\x35\x2e\x38\x20\x31\x35\x34\x2e\x34\ \x30\x31\x43\x2d\x39\x35\x2e\x36\x20\x31\x35\x31\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x35\x2e\x39\x20\x31\x33\x38\x2e\x31\x30\x31\x20\ \x2d\x31\x30\x35\x2e\x39\x20\x31\x33\x38\x2e\x31\x30\x31\x43\x2d\ \x31\x30\x35\x2e\x39\x20\x31\x33\x38\x2e\x31\x30\x31\x20\x2d\x31\ \x32\x31\x2e\x38\x35\x20\x31\x32\x33\x2e\x35\x35\x31\x20\x2d\x31\ \x31\x31\x20\x31\x30\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x35\x39\ \x39\x39\x39\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x43\ \x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x20\x2d\ \x31\x31\x34\x2e\x32\x20\x31\x32\x33\x2e\x32\x30\x31\x20\x2d\x37\ \x37\x2e\x34\x20\x31\x31\x32\x2e\x38\x30\x31\x43\x2d\x37\x37\x2e\ \x34\x20\x31\x31\x32\x2e\x38\x30\x31\x20\x2d\x37\x33\x20\x31\x31\ \x32\x2e\x38\x30\x31\x20\x2d\x37\x30\x2e\x36\x20\x31\x31\x33\x2e\ \x36\x30\x31\x43\x2d\x36\x38\x2e\x32\x20\x31\x31\x34\x2e\x34\x30\ \x31\x20\x2d\x35\x36\x2e\x32\x20\x31\x31\x37\x2e\x32\x30\x31\x20\ \x2d\x35\x34\x2e\x32\x20\x31\x31\x36\x2e\x30\x30\x31\x43\x2d\x35\ \x34\x2e\x32\x20\x31\x31\x36\x2e\x30\x30\x31\x20\x2d\x36\x31\x2e\ \x34\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x2d\x37\x33\x20\x31\x32\ \x38\x2e\x30\x30\x31\x43\x2d\x37\x33\x20\x31\x32\x38\x2e\x30\x30\ \x31\x20\x2d\x38\x36\x2e\x32\x20\x31\x32\x39\x2e\x36\x30\x31\x20\ \x2d\x38\x35\x2e\x38\x20\x31\x33\x34\x2e\x34\x30\x31\x43\x2d\x38\ \x35\x2e\x38\x20\x31\x33\x34\x2e\x34\x30\x31\x20\x2d\x38\x31\x2e\ \x38\x20\x31\x34\x31\x2e\x36\x30\x31\x20\x2d\x37\x37\x20\x31\x34\ \x34\x2e\x30\x30\x31\x43\x2d\x37\x37\x20\x31\x34\x34\x2e\x30\x30\ \x31\x20\x2d\x37\x34\x2e\x32\x20\x31\x34\x36\x2e\x34\x30\x31\x20\ \x2d\x37\x34\x2e\x36\x20\x31\x34\x39\x2e\x36\x30\x31\x43\x2d\x37\ \x35\x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x37\x37\x2e\x38\x20\ \x31\x35\x34\x2e\x34\x30\x31\x20\x2d\x37\x39\x2e\x38\x20\x31\x35\ \x35\x2e\x32\x30\x31\x43\x2d\x38\x31\x2e\x38\x20\x31\x35\x36\x2e\ \x30\x30\x31\x20\x2d\x38\x35\x20\x31\x35\x32\x2e\x38\x30\x31\x20\ \x2d\x38\x36\x2e\x36\x20\x31\x35\x32\x2e\x38\x30\x31\x43\x2d\x38\ \x38\x2e\x32\x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x39\x36\x2e\ \x36\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x31\x30\x31\x20\x31\ \x34\x31\x2e\x36\x30\x31\x43\x2d\x31\x30\x35\x2e\x34\x20\x31\x33\ \x36\x2e\x38\x30\x31\x20\x2d\x31\x31\x33\x2e\x38\x20\x31\x32\x34\ \x2e\x38\x30\x31\x20\x2d\x31\x31\x33\x2e\x34\x20\x31\x32\x32\x2e\ \x30\x30\x31\x43\x2d\x31\x31\x33\x20\x31\x31\x39\x2e\x32\x30\x31\ \x20\x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x20\ \x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x62\x32\x36\x35\x36\x35\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x31\x30\x39\x20\x31\x33\x31\x2e\x30\x35\ \x31\x43\x2d\x31\x30\x36\x2e\x34\x20\x31\x33\x35\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x33\x2e\x32\x20\x31\x33\x39\x2e\x32\x30\x31\x20\ \x2d\x31\x30\x31\x20\x31\x34\x31\x2e\x36\x30\x31\x43\x2d\x39\x36\ \x2e\x36\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x38\x38\x2e\x32\ \x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x38\x36\x2e\x36\x20\x31\ \x35\x32\x2e\x38\x30\x31\x43\x2d\x38\x35\x20\x31\x35\x32\x2e\x38\ \x30\x31\x20\x2d\x38\x31\x2e\x38\x20\x31\x35\x36\x2e\x30\x30\x31\ \x20\x2d\x37\x39\x2e\x38\x20\x31\x35\x35\x2e\x32\x30\x31\x43\x2d\ \x37\x37\x2e\x38\x20\x31\x35\x34\x2e\x34\x30\x31\x20\x2d\x37\x35\ \x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x37\x34\x2e\x36\x20\x31\ \x34\x39\x2e\x36\x30\x31\x43\x2d\x37\x34\x2e\x32\x20\x31\x34\x36\ \x2e\x34\x30\x31\x20\x2d\x37\x37\x20\x31\x34\x34\x2e\x30\x30\x31\ \x20\x2d\x37\x37\x20\x31\x34\x34\x2e\x30\x30\x31\x43\x2d\x38\x30\ \x2e\x30\x36\x36\x20\x31\x34\x32\x2e\x34\x36\x38\x20\x2d\x38\x32\ \x2e\x38\x30\x36\x20\x31\x33\x38\x2e\x39\x37\x36\x20\x2d\x38\x34\ \x2e\x33\x38\x35\x20\x31\x33\x36\x2e\x36\x35\x33\x43\x2d\x38\x34\ \x2e\x33\x38\x35\x20\x31\x33\x36\x2e\x36\x35\x33\x20\x2d\x38\x34\ \x2e\x32\x20\x31\x33\x39\x2e\x32\x30\x31\x20\x2d\x38\x39\x2e\x34\ \x20\x31\x33\x38\x2e\x34\x30\x31\x43\x2d\x39\x34\x2e\x36\x20\x31\ \x33\x37\x2e\x36\x30\x31\x20\x2d\x39\x39\x2e\x38\x20\x31\x33\x34\ \x2e\x38\x30\x31\x20\x2d\x31\x30\x31\x2e\x34\x20\x31\x33\x31\x2e\ \x36\x30\x31\x43\x2d\x31\x30\x33\x20\x31\x32\x38\x2e\x34\x30\x31\ \x20\x2d\x31\x30\x35\x2e\x34\x20\x31\x32\x36\x2e\x30\x30\x31\x20\ \x2d\x31\x30\x33\x2e\x38\x20\x31\x32\x39\x2e\x36\x30\x31\x43\x2d\ \x31\x30\x32\x2e\x32\x20\x31\x33\x33\x2e\x32\x30\x31\x20\x2d\x39\ \x39\x2e\x38\x20\x31\x33\x36\x2e\x38\x30\x31\x20\x2d\x39\x38\x2e\ \x32\x20\x31\x33\x37\x2e\x32\x30\x31\x43\x2d\x39\x36\x2e\x36\x20\ \x31\x33\x37\x2e\x36\x30\x31\x20\x2d\x39\x37\x20\x31\x33\x38\x2e\ \x38\x30\x31\x20\x2d\x39\x39\x2e\x34\x20\x31\x33\x38\x2e\x34\x30\ \x31\x43\x2d\x31\x30\x31\x2e\x38\x20\x31\x33\x38\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x34\x2e\x36\x20\x31\x33\x37\x2e\x36\x30\x31\x20\ \x2d\x31\x30\x39\x20\x31\x33\x32\x2e\x34\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\ \x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x31\x31\x31\x2e\x36\x20\x31\x31\x30\x2e\x30\x30\ \x31\x43\x2d\x31\x31\x31\x2e\x36\x20\x31\x31\x30\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x39\x2e\x38\x20\x39\x36\x2e\x34\x20\x2d\x31\x30\ \x38\x2e\x36\x20\x39\x32\x2e\x34\x43\x2d\x31\x30\x38\x2e\x36\x20\ \x39\x32\x2e\x34\x20\x2d\x31\x30\x39\x2e\x34\x20\x38\x35\x2e\x36\ \x20\x2d\x31\x30\x37\x20\x38\x31\x2e\x34\x43\x2d\x31\x30\x34\x2e\ \x36\x20\x37\x37\x2e\x32\x20\x2d\x31\x30\x32\x2e\x36\x20\x37\x31\ \x20\x2d\x39\x39\x2e\x36\x20\x36\x35\x2e\x36\x43\x2d\x39\x36\x2e\ \x36\x20\x36\x30\x2e\x32\x20\x2d\x39\x36\x2e\x34\x20\x35\x36\x2e\ \x32\x20\x2d\x39\x32\x2e\x34\x20\x35\x34\x2e\x36\x43\x2d\x38\x38\ \x2e\x34\x20\x35\x33\x20\x2d\x38\x32\x2e\x34\x20\x34\x34\x2e\x34\ \x20\x2d\x37\x39\x2e\x36\x20\x34\x33\x2e\x34\x43\x2d\x37\x36\x2e\ \x38\x20\x34\x32\x2e\x34\x20\x2d\x37\x37\x20\x34\x33\x2e\x32\x20\ \x2d\x37\x37\x20\x34\x33\x2e\x32\x43\x2d\x37\x37\x20\x34\x33\x2e\ \x32\x20\x2d\x37\x30\x2e\x32\x20\x32\x38\x2e\x34\x20\x2d\x35\x36\ \x2e\x36\x20\x33\x32\x2e\x34\x43\x2d\x35\x36\x2e\x36\x20\x33\x32\ \x2e\x34\x20\x2d\x37\x32\x2e\x38\x20\x32\x39\x2e\x36\x20\x2d\x35\ \x37\x20\x32\x30\x2e\x32\x43\x2d\x35\x37\x20\x32\x30\x2e\x32\x20\ \x2d\x36\x31\x2e\x38\x20\x32\x31\x2e\x33\x20\x2d\x35\x38\x2e\x35\ \x20\x31\x34\x2e\x33\x43\x2d\x35\x36\x2e\x32\x39\x39\x20\x39\x2e\ \x36\x33\x32\x20\x2d\x35\x36\x2e\x38\x20\x31\x36\x2e\x34\x20\x2d\ \x36\x37\x2e\x38\x20\x32\x38\x2e\x32\x43\x2d\x36\x37\x2e\x38\x20\ \x32\x38\x2e\x32\x20\x2d\x37\x32\x2e\x38\x20\x33\x36\x2e\x38\x20\ \x2d\x37\x38\x20\x33\x39\x2e\x38\x43\x2d\x38\x33\x2e\x32\x20\x34\ \x32\x2e\x38\x20\x2d\x39\x35\x2e\x32\x20\x34\x39\x2e\x38\x20\x2d\ \x39\x36\x2e\x34\x20\x35\x33\x2e\x36\x43\x2d\x39\x37\x2e\x36\x20\ \x35\x37\x2e\x34\x20\x2d\x31\x30\x30\x2e\x38\x20\x36\x33\x2e\x32\ \x20\x2d\x31\x30\x32\x2e\x38\x20\x36\x34\x2e\x38\x43\x2d\x31\x30\ \x34\x2e\x38\x20\x36\x36\x2e\x34\x20\x2d\x31\x30\x37\x2e\x36\x20\ \x37\x30\x2e\x36\x20\x2d\x31\x30\x38\x20\x37\x34\x43\x2d\x31\x30\ \x38\x20\x37\x34\x20\x2d\x31\x30\x39\x2e\x32\x20\x37\x38\x20\x2d\ \x31\x31\x30\x2e\x36\x20\x37\x39\x2e\x32\x43\x2d\x31\x31\x32\x20\ \x38\x30\x2e\x34\x20\x2d\x31\x31\x32\x2e\x32\x20\x38\x33\x2e\x36\ \x20\x2d\x31\x31\x32\x2e\x32\x20\x38\x35\x2e\x36\x43\x2d\x31\x31\ \x32\x2e\x32\x20\x38\x37\x2e\x36\x20\x2d\x31\x31\x34\x2e\x32\x20\ \x39\x30\x2e\x34\x20\x2d\x31\x31\x34\x20\x39\x32\x2e\x38\x43\x2d\ \x31\x31\x34\x20\x39\x32\x2e\x38\x20\x2d\x31\x31\x33\x2e\x32\x20\ \x31\x31\x31\x2e\x38\x30\x31\x20\x2d\x31\x31\x33\x2e\x36\x20\x31\ \x31\x33\x2e\x38\x30\x31\x4c\x2d\x31\x31\x31\x2e\x36\x20\x31\x31\ \x30\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x30\ \x2e\x32\x20\x31\x31\x34\x2e\x36\x30\x31\x43\x2d\x31\x32\x30\x2e\ \x32\x20\x31\x31\x34\x2e\x36\x30\x31\x20\x2d\x31\x32\x32\x2e\x32\ \x20\x31\x31\x33\x2e\x32\x30\x31\x20\x2d\x31\x32\x36\x2e\x36\x20\ \x31\x31\x39\x2e\x32\x30\x31\x43\x2d\x31\x32\x36\x2e\x36\x20\x31\ \x31\x39\x2e\x32\x30\x31\x20\x2d\x31\x31\x39\x2e\x33\x20\x31\x35\ \x32\x2e\x32\x30\x31\x20\x2d\x31\x31\x39\x2e\x33\x20\x31\x35\x33\ \x2e\x36\x30\x31\x43\x2d\x31\x31\x39\x2e\x33\x20\x31\x35\x33\x2e\ \x36\x30\x31\x20\x2d\x31\x31\x38\x2e\x32\x20\x31\x35\x31\x2e\x35\ \x30\x31\x20\x2d\x31\x31\x39\x2e\x35\x20\x31\x34\x34\x2e\x33\x30\ \x31\x43\x2d\x31\x32\x30\x2e\x38\x20\x31\x33\x37\x2e\x31\x30\x31\ \x20\x2d\x31\x32\x31\x2e\x37\x20\x31\x32\x34\x2e\x34\x30\x31\x20\ \x2d\x31\x32\x31\x2e\x37\x20\x31\x32\x34\x2e\x34\x30\x31\x4c\x2d\ \x31\x32\x30\x2e\x32\x20\x31\x31\x34\x2e\x36\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x39\x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x39\x38\x2e\x36\x20\x35\x34\x43\x2d\x39\x38\ \x2e\x36\x20\x35\x34\x20\x2d\x31\x31\x36\x2e\x32\x20\x35\x37\x2e\ \x32\x20\x2d\x31\x31\x35\x2e\x38\x20\x38\x36\x2e\x34\x4c\x2d\x31\ \x31\x36\x2e\x36\x20\x31\x31\x31\x2e\x32\x30\x31\x43\x2d\x31\x31\ \x36\x2e\x36\x20\x31\x31\x31\x2e\x32\x30\x31\x20\x2d\x31\x31\x37\ \x2e\x38\x20\x38\x35\x2e\x36\x20\x2d\x31\x31\x39\x20\x38\x34\x43\ \x2d\x31\x32\x30\x2e\x32\x20\x38\x32\x2e\x34\x20\x2d\x31\x31\x36\ \x2e\x32\x20\x37\x31\x2e\x32\x20\x2d\x31\x31\x39\x2e\x34\x20\x37\ \x37\x2e\x32\x43\x2d\x31\x31\x39\x2e\x34\x20\x37\x37\x2e\x32\x20\ \x2d\x31\x33\x33\x2e\x34\x20\x39\x31\x2e\x32\x20\x2d\x31\x32\x35\ \x2e\x34\x20\x31\x31\x32\x2e\x34\x30\x31\x43\x2d\x31\x32\x35\x2e\ \x34\x20\x31\x31\x32\x2e\x34\x30\x31\x20\x2d\x31\x32\x33\x2e\x39\ \x20\x31\x31\x35\x2e\x37\x30\x31\x20\x2d\x31\x32\x36\x2e\x39\x20\ \x31\x31\x31\x2e\x31\x30\x31\x43\x2d\x31\x32\x36\x2e\x39\x20\x31\ \x31\x31\x2e\x31\x30\x31\x20\x2d\x31\x33\x31\x2e\x35\x20\x39\x38\ \x2e\x35\x20\x2d\x31\x33\x30\x2e\x34\x20\x39\x32\x2e\x31\x43\x2d\ \x31\x33\x30\x2e\x34\x20\x39\x32\x2e\x31\x20\x2d\x31\x33\x30\x2e\ \x32\x20\x38\x39\x2e\x39\x20\x2d\x31\x32\x38\x2e\x33\x20\x38\x37\ \x2e\x31\x43\x2d\x31\x32\x38\x2e\x33\x20\x38\x37\x2e\x31\x20\x2d\ \x31\x31\x39\x2e\x37\x20\x37\x35\x2e\x34\x20\x2d\x31\x31\x37\x20\ \x37\x33\x2e\x31\x43\x2d\x31\x31\x37\x20\x37\x33\x2e\x31\x20\x2d\ \x31\x31\x35\x2e\x32\x20\x35\x38\x2e\x37\x20\x2d\x39\x39\x2e\x38\ \x20\x35\x33\x2e\x35\x43\x2d\x39\x39\x2e\x38\x20\x35\x33\x2e\x35\ \x20\x2d\x39\x34\x2e\x31\x20\x35\x31\x2e\x32\x20\x2d\x39\x38\x2e\ \x36\x20\x35\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x30\x2e\x38\x20\ \x2d\x31\x32\x2e\x32\x43\x34\x31\x2e\x34\x36\x20\x2d\x31\x32\x2e\ \x35\x35\x34\x20\x34\x31\x2e\x34\x35\x31\x20\x2d\x31\x33\x2e\x35\ \x32\x34\x20\x34\x32\x2e\x30\x33\x31\x20\x2d\x31\x33\x2e\x36\x39\ \x37\x43\x34\x33\x2e\x31\x38\x20\x2d\x31\x34\x2e\x30\x34\x31\x20\ \x34\x33\x2e\x33\x34\x34\x20\x2d\x31\x35\x2e\x31\x30\x38\x20\x34\ \x33\x2e\x38\x36\x32\x20\x2d\x31\x35\x2e\x38\x39\x32\x43\x34\x34\ \x2e\x37\x33\x35\x20\x2d\x31\x37\x2e\x32\x31\x31\x20\x34\x34\x2e\ \x39\x32\x38\x20\x2d\x31\x38\x2e\x37\x34\x34\x20\x34\x35\x2e\x35\ \x31\x20\x2d\x32\x30\x2e\x32\x33\x35\x43\x34\x35\x2e\x37\x38\x32\ \x20\x2d\x32\x30\x2e\x39\x33\x35\x20\x34\x35\x2e\x38\x30\x39\x20\ \x2d\x32\x31\x2e\x38\x39\x20\x34\x35\x2e\x34\x39\x36\x20\x2d\x32\ \x32\x2e\x35\x35\x43\x34\x34\x2e\x33\x32\x32\x20\x2d\x32\x35\x2e\ \x30\x33\x31\x20\x34\x33\x2e\x36\x32\x20\x2d\x32\x37\x2e\x34\x38\ \x20\x34\x32\x2e\x31\x37\x38\x20\x2d\x32\x39\x2e\x39\x30\x36\x43\ \x34\x31\x2e\x39\x31\x20\x2d\x33\x30\x2e\x33\x35\x36\x20\x34\x31\ \x2e\x36\x34\x38\x20\x2d\x33\x31\x2e\x31\x35\x20\x34\x31\x2e\x34\ \x34\x37\x20\x2d\x33\x31\x2e\x37\x34\x38\x43\x34\x30\x2e\x39\x38\ \x34\x20\x2d\x33\x33\x2e\x31\x33\x32\x20\x33\x39\x2e\x37\x32\x37\ \x20\x2d\x33\x34\x2e\x31\x32\x33\x20\x33\x38\x2e\x38\x36\x37\x20\ \x2d\x33\x35\x2e\x34\x34\x33\x43\x33\x38\x2e\x35\x37\x39\x20\x2d\ \x33\x35\x2e\x38\x38\x34\x20\x33\x39\x2e\x31\x30\x34\x20\x2d\x33\ \x36\x2e\x38\x30\x39\x20\x33\x38\x2e\x33\x38\x38\x20\x2d\x33\x36\ \x2e\x38\x39\x33\x43\x33\x37\x2e\x34\x39\x31\x20\x2d\x33\x36\x2e\ \x39\x39\x38\x20\x33\x36\x2e\x30\x34\x32\x20\x2d\x33\x37\x2e\x35\ \x37\x38\x20\x33\x35\x2e\x38\x30\x39\x20\x2d\x33\x36\x2e\x35\x35\ \x32\x43\x33\x35\x2e\x32\x32\x31\x20\x2d\x33\x33\x2e\x39\x36\x35\ \x20\x33\x36\x2e\x32\x33\x32\x20\x2d\x33\x31\x2e\x34\x34\x32\x20\ \x33\x37\x2e\x32\x20\x2d\x32\x39\x43\x33\x36\x2e\x34\x31\x38\x20\ \x2d\x32\x38\x2e\x33\x30\x38\x20\x33\x36\x2e\x37\x35\x32\x20\x2d\ \x32\x37\x2e\x33\x38\x37\x20\x33\x36\x2e\x39\x30\x34\x20\x2d\x32\ \x36\x2e\x36\x32\x43\x33\x37\x2e\x36\x31\x34\x20\x2d\x32\x33\x2e\ \x30\x31\x34\x20\x33\x36\x2e\x34\x31\x36\x20\x2d\x31\x39\x2e\x36\ \x36\x32\x20\x33\x35\x2e\x36\x35\x35\x20\x2d\x31\x36\x2e\x31\x38\ \x38\x43\x33\x35\x2e\x36\x33\x32\x20\x2d\x31\x36\x2e\x30\x38\x34\ \x20\x33\x35\x2e\x39\x37\x34\x20\x2d\x31\x35\x2e\x38\x38\x36\x20\ \x33\x35\x2e\x39\x34\x36\x20\x2d\x31\x35\x2e\x38\x32\x34\x43\x33\ \x34\x2e\x37\x32\x34\x20\x2d\x31\x33\x2e\x31\x33\x38\x20\x33\x33\ \x2e\x32\x37\x32\x20\x2d\x31\x30\x2e\x36\x39\x33\x20\x33\x31\x2e\ \x34\x35\x33\x20\x2d\x38\x2e\x33\x31\x32\x43\x33\x30\x2e\x36\x39\ \x35\x20\x2d\x37\x2e\x33\x32\x20\x32\x39\x2e\x38\x32\x33\x20\x2d\ \x36\x2e\x34\x30\x34\x20\x32\x39\x2e\x33\x32\x36\x20\x2d\x35\x2e\ \x33\x34\x31\x43\x32\x38\x2e\x39\x35\x38\x20\x2d\x34\x2e\x35\x35\ \x34\x20\x32\x38\x2e\x35\x35\x20\x2d\x33\x2e\x35\x38\x38\x20\x32\ \x38\x2e\x38\x20\x2d\x32\x2e\x36\x43\x32\x35\x2e\x33\x36\x35\x20\ \x30\x2e\x31\x38\x20\x32\x33\x2e\x31\x31\x35\x20\x34\x2e\x30\x32\ \x35\x20\x32\x30\x2e\x35\x30\x34\x20\x37\x2e\x38\x37\x31\x43\x32\ \x30\x2e\x30\x34\x32\x20\x38\x2e\x35\x35\x31\x20\x32\x30\x2e\x33\ \x33\x33\x20\x39\x2e\x37\x36\x20\x32\x30\x2e\x38\x38\x34\x20\x31\ \x30\x2e\x30\x32\x39\x43\x32\x31\x2e\x36\x39\x37\x20\x31\x30\x2e\ \x34\x32\x37\x20\x32\x32\x2e\x36\x35\x33\x20\x39\x2e\x34\x30\x33\ \x20\x32\x33\x2e\x31\x32\x33\x20\x38\x2e\x35\x35\x37\x43\x32\x33\ \x2e\x35\x31\x32\x20\x37\x2e\x38\x35\x39\x20\x32\x33\x2e\x38\x36\ \x35\x20\x37\x2e\x32\x30\x39\x20\x32\x34\x2e\x33\x35\x36\x20\x36\ \x2e\x35\x36\x36\x43\x32\x34\x2e\x34\x38\x39\x20\x36\x2e\x33\x39\ \x31\x20\x32\x34\x2e\x33\x31\x20\x35\x2e\x39\x37\x32\x20\x32\x34\ \x2e\x34\x34\x35\x20\x35\x2e\x38\x35\x31\x43\x32\x37\x2e\x30\x37\ \x38\x20\x33\x2e\x35\x30\x34\x20\x32\x38\x2e\x37\x34\x37\x20\x30\ \x2e\x35\x36\x38\x20\x33\x31\x2e\x32\x20\x2d\x31\x2e\x38\x43\x33\ \x33\x2e\x31\x35\x20\x2d\x32\x2e\x31\x32\x39\x20\x33\x34\x2e\x36\ \x38\x37\x20\x2d\x33\x2e\x31\x32\x37\x20\x33\x36\x2e\x34\x33\x35\ \x20\x2d\x34\x2e\x31\x34\x43\x33\x36\x2e\x37\x34\x33\x20\x2d\x34\ \x2e\x33\x31\x39\x20\x33\x37\x2e\x32\x36\x37\x20\x2d\x34\x2e\x30\ \x37\x20\x33\x37\x2e\x35\x35\x37\x20\x2d\x34\x2e\x32\x36\x35\x43\ \x33\x39\x2e\x33\x31\x20\x2d\x35\x2e\x34\x34\x32\x20\x33\x39\x2e\ \x33\x30\x38\x20\x2d\x37\x2e\x34\x37\x38\x20\x33\x39\x2e\x34\x31\ \x34\x20\x2d\x39\x2e\x33\x38\x38\x43\x33\x39\x2e\x34\x36\x34\x20\ \x2d\x31\x30\x2e\x32\x37\x32\x20\x33\x39\x2e\x36\x36\x20\x2d\x31\ \x31\x2e\x35\x38\x39\x20\x34\x30\x2e\x38\x20\x2d\x31\x32\x2e\x32\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x33\x31\x2e\x39\x35\x39\x20\x2d\x31\ \x36\x2e\x36\x36\x36\x43\x33\x32\x2e\x30\x38\x33\x20\x2d\x31\x36\ \x2e\x37\x34\x33\x20\x33\x31\x2e\x39\x32\x38\x20\x2d\x31\x37\x2e\ \x31\x36\x36\x20\x33\x32\x2e\x30\x33\x37\x20\x2d\x31\x37\x2e\x33\ \x38\x32\x43\x33\x32\x2e\x31\x39\x39\x20\x2d\x31\x37\x2e\x37\x30\ \x36\x20\x33\x32\x2e\x36\x30\x32\x20\x2d\x31\x37\x2e\x38\x39\x34\ \x20\x33\x32\x2e\x37\x36\x34\x20\x2d\x31\x38\x2e\x32\x31\x38\x43\ \x33\x32\x2e\x38\x37\x33\x20\x2d\x31\x38\x2e\x34\x33\x34\x20\x33\ \x32\x2e\x37\x31\x20\x2d\x31\x38\x2e\x38\x31\x34\x20\x33\x32\x2e\ \x38\x34\x36\x20\x2d\x31\x38\x2e\x39\x35\x36\x43\x33\x35\x2e\x31\ \x37\x39\x20\x2d\x32\x31\x2e\x34\x30\x33\x20\x33\x35\x2e\x34\x33\ \x36\x20\x2d\x32\x34\x2e\x34\x32\x37\x20\x33\x34\x2e\x34\x20\x2d\ \x32\x37\x2e\x34\x43\x33\x35\x2e\x34\x32\x34\x20\x2d\x32\x38\x2e\ \x30\x32\x20\x33\x35\x2e\x34\x38\x35\x20\x2d\x32\x39\x2e\x32\x38\ \x32\x20\x33\x35\x2e\x30\x36\x20\x2d\x33\x30\x2e\x31\x32\x39\x43\ \x33\x34\x2e\x32\x30\x37\x20\x2d\x33\x31\x2e\x38\x32\x39\x20\x33\ \x34\x2e\x30\x31\x34\x20\x2d\x33\x33\x2e\x37\x35\x35\x20\x33\x33\ \x2e\x30\x33\x39\x20\x2d\x33\x35\x2e\x32\x39\x38\x43\x33\x32\x2e\ \x32\x33\x37\x20\x2d\x33\x36\x2e\x35\x36\x37\x20\x33\x30\x2e\x36\ \x35\x39\x20\x2d\x33\x37\x2e\x38\x31\x31\x20\x32\x39\x2e\x32\x38\ \x38\x20\x2d\x33\x36\x2e\x35\x30\x38\x43\x32\x38\x2e\x38\x36\x37\ \x20\x2d\x33\x36\x2e\x31\x30\x38\x20\x32\x38\x2e\x35\x34\x36\x20\ \x2d\x33\x35\x2e\x33\x32\x31\x20\x32\x38\x2e\x38\x32\x34\x20\x2d\ \x33\x34\x2e\x36\x30\x39\x43\x32\x38\x2e\x38\x38\x38\x20\x2d\x33\ \x34\x2e\x34\x34\x36\x20\x32\x39\x2e\x31\x37\x33\x20\x2d\x33\x34\ \x2e\x33\x20\x32\x39\x2e\x31\x34\x36\x20\x2d\x33\x34\x2e\x32\x31\ \x38\x43\x32\x39\x2e\x30\x33\x39\x20\x2d\x33\x33\x2e\x38\x39\x34\ \x20\x32\x38\x2e\x34\x39\x33\x20\x2d\x33\x33\x2e\x36\x37\x20\x32\ \x38\x2e\x34\x38\x37\x20\x2d\x33\x33\x2e\x33\x39\x38\x43\x32\x38\ \x2e\x34\x35\x37\x20\x2d\x33\x31\x2e\x39\x30\x32\x20\x32\x37\x2e\ \x35\x30\x33\x20\x2d\x33\x30\x2e\x33\x39\x31\x20\x32\x38\x2e\x31\ \x33\x33\x20\x2d\x32\x39\x2e\x30\x36\x32\x43\x32\x38\x2e\x39\x30\ \x35\x20\x2d\x32\x37\x2e\x34\x33\x33\x20\x32\x39\x2e\x37\x32\x34\ \x20\x2d\x32\x35\x2e\x35\x37\x36\x20\x33\x30\x2e\x34\x20\x2d\x32\ \x33\x2e\x38\x43\x32\x39\x2e\x31\x36\x36\x20\x2d\x32\x31\x2e\x36\ \x38\x34\x20\x33\x30\x2e\x31\x39\x39\x20\x2d\x31\x39\x2e\x32\x33\ \x35\x20\x32\x38\x2e\x34\x34\x36\x20\x2d\x31\x37\x2e\x33\x35\x38\ \x43\x32\x38\x2e\x33\x31\x20\x2d\x31\x37\x2e\x32\x31\x32\x20\x32\ \x38\x2e\x33\x31\x39\x20\x2d\x31\x36\x2e\x38\x32\x36\x20\x32\x38\ \x2e\x34\x34\x31\x20\x2d\x31\x36\x2e\x36\x32\x34\x43\x32\x38\x2e\ \x37\x33\x33\x20\x2d\x31\x36\x2e\x31\x33\x38\x20\x32\x39\x2e\x31\ \x33\x39\x20\x2d\x31\x35\x2e\x37\x33\x32\x20\x32\x39\x2e\x36\x32\ \x35\x20\x2d\x31\x35\x2e\x34\x34\x43\x32\x39\x2e\x38\x32\x37\x20\ \x2d\x31\x35\x2e\x33\x31\x39\x20\x33\x30\x2e\x31\x37\x35\x20\x2d\ \x31\x35\x2e\x33\x31\x37\x20\x33\x30\x2e\x33\x37\x35\x20\x2d\x31\ \x35\x2e\x34\x34\x31\x43\x33\x30\x2e\x39\x35\x33\x20\x2d\x31\x35\ \x2e\x38\x30\x33\x20\x33\x31\x2e\x33\x35\x31\x20\x2d\x31\x36\x2e\ \x32\x39\x20\x33\x31\x2e\x39\x35\x39\x20\x2d\x31\x36\x2e\x36\x36\ \x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x34\x2e\x37\x37\x31\x20\x2d\ \x32\x36\x2e\x39\x37\x37\x43\x39\x36\x2e\x31\x36\x20\x2d\x32\x35\ \x2e\x31\x38\x35\x20\x39\x36\x2e\x34\x35\x20\x2d\x32\x32\x2e\x33\ \x39\x20\x39\x34\x2e\x34\x30\x31\x20\x2d\x32\x31\x43\x39\x34\x2e\ \x39\x35\x31\x20\x2d\x31\x37\x2e\x36\x39\x31\x20\x39\x38\x2e\x33\ \x30\x32\x20\x2d\x31\x39\x2e\x36\x37\x20\x31\x30\x30\x2e\x34\x30\ \x31\x20\x2d\x32\x30\x2e\x32\x43\x31\x30\x30\x2e\x32\x39\x32\x20\ \x2d\x32\x30\x2e\x35\x38\x38\x20\x31\x30\x30\x2e\x35\x31\x39\x20\ \x2d\x32\x30\x2e\x39\x33\x32\x20\x31\x30\x30\x2e\x38\x30\x32\x20\ \x2d\x32\x30\x2e\x39\x33\x37\x43\x31\x30\x31\x2e\x38\x35\x39\x20\ \x2d\x32\x30\x2e\x39\x35\x32\x20\x31\x30\x32\x2e\x35\x33\x39\x20\ \x2d\x32\x31\x2e\x39\x38\x34\x20\x31\x30\x33\x2e\x36\x30\x31\x20\ \x2d\x32\x31\x2e\x38\x43\x31\x30\x34\x2e\x30\x33\x35\x20\x2d\x32\ \x33\x2e\x33\x35\x37\x20\x31\x30\x35\x2e\x36\x37\x33\x20\x2d\x32\ \x34\x2e\x30\x35\x39\x20\x31\x30\x36\x2e\x33\x31\x37\x20\x2d\x32\ \x35\x2e\x34\x33\x39\x43\x31\x30\x38\x2e\x30\x34\x33\x20\x2d\x32\ \x39\x2e\x31\x33\x34\x20\x31\x30\x37\x2e\x34\x35\x32\x20\x2d\x33\ \x33\x2e\x34\x30\x37\x20\x31\x30\x34\x2e\x38\x36\x38\x20\x2d\x33\ \x36\x2e\x36\x35\x33\x43\x31\x30\x34\x2e\x36\x36\x36\x20\x2d\x33\ \x36\x2e\x39\x30\x37\x20\x31\x30\x34\x2e\x38\x38\x33\x20\x2d\x33\ \x37\x2e\x34\x32\x34\x20\x31\x30\x34\x2e\x37\x35\x39\x20\x2d\x33\ \x37\x2e\x37\x38\x36\x43\x31\x30\x34\x2e\x30\x30\x33\x20\x2d\x33\ \x39\x2e\x39\x39\x37\x20\x31\x30\x31\x2e\x39\x33\x35\x20\x2d\x34\ \x30\x2e\x33\x31\x32\x20\x31\x30\x30\x2e\x30\x30\x31\x20\x2d\x34\ \x31\x43\x39\x38\x2e\x38\x32\x34\x20\x2d\x34\x34\x2e\x38\x37\x35\ \x20\x39\x38\x2e\x31\x36\x33\x20\x2d\x34\x38\x2e\x39\x30\x36\x20\ \x39\x36\x2e\x34\x30\x31\x20\x2d\x35\x32\x2e\x36\x43\x39\x34\x2e\ \x37\x38\x37\x20\x2d\x35\x32\x2e\x38\x35\x20\x39\x34\x2e\x30\x38\ \x39\x20\x2d\x35\x34\x2e\x35\x38\x39\x20\x39\x32\x2e\x37\x35\x32\ \x20\x2d\x35\x35\x2e\x33\x30\x39\x43\x39\x31\x2e\x34\x31\x39\x20\ \x2d\x35\x36\x2e\x30\x32\x38\x20\x39\x30\x2e\x38\x35\x31\x20\x2d\ \x35\x34\x2e\x34\x34\x39\x20\x39\x30\x2e\x38\x39\x32\x20\x2d\x35\ \x33\x2e\x34\x30\x33\x43\x39\x30\x2e\x38\x39\x39\x20\x2d\x35\x33\ \x2e\x31\x39\x38\x20\x39\x31\x2e\x33\x35\x31\x20\x2d\x35\x32\x2e\ \x39\x37\x34\x20\x39\x31\x2e\x31\x38\x31\x20\x2d\x35\x32\x2e\x36\ \x30\x39\x43\x39\x31\x2e\x31\x30\x35\x20\x2d\x35\x32\x2e\x34\x34\ \x35\x20\x39\x30\x2e\x38\x34\x35\x20\x2d\x35\x32\x2e\x33\x33\x34\ \x20\x39\x30\x2e\x38\x34\x35\x20\x2d\x35\x32\x2e\x32\x43\x39\x30\ \x2e\x38\x34\x36\x20\x2d\x35\x32\x2e\x30\x36\x35\x20\x39\x31\x2e\ \x30\x36\x37\x20\x2d\x35\x31\x2e\x39\x33\x34\x20\x39\x31\x2e\x32\ \x30\x31\x20\x2d\x35\x31\x2e\x38\x43\x39\x30\x2e\x32\x38\x33\x20\ \x2d\x35\x30\x2e\x39\x38\x20\x38\x38\x2e\x38\x36\x20\x2d\x35\x30\ \x2e\x35\x30\x33\x20\x38\x38\x2e\x35\x36\x35\x20\x2d\x34\x39\x2e\ \x33\x35\x38\x43\x38\x37\x2e\x36\x31\x31\x20\x2d\x34\x35\x2e\x36\ \x34\x38\x20\x39\x30\x2e\x31\x38\x34\x20\x2d\x34\x32\x2e\x35\x32\ \x33\x20\x39\x31\x2e\x38\x35\x32\x20\x2d\x33\x39\x2e\x33\x32\x32\ \x43\x39\x32\x2e\x34\x34\x33\x20\x2d\x33\x38\x2e\x31\x38\x37\x20\ \x39\x31\x2e\x37\x30\x37\x20\x2d\x33\x36\x2e\x39\x31\x36\x20\x39\ \x30\x2e\x39\x34\x37\x20\x2d\x33\x35\x2e\x37\x30\x38\x43\x39\x30\ \x2e\x35\x30\x39\x20\x2d\x33\x35\x2e\x30\x31\x33\x20\x39\x30\x2e\ \x36\x31\x37\x20\x2d\x33\x33\x2e\x38\x38\x36\x20\x39\x30\x2e\x38\ \x39\x33\x20\x2d\x33\x33\x2e\x30\x33\x43\x39\x31\x2e\x36\x34\x35\ \x20\x2d\x33\x30\x2e\x36\x39\x39\x20\x39\x33\x2e\x32\x33\x36\x20\ \x2d\x32\x38\x2e\x39\x36\x20\x39\x34\x2e\x37\x37\x31\x20\x2d\x32\ \x36\x2e\x39\x37\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x35\x37\x2e\x36\ \x31\x31\x20\x2d\x38\x2e\x35\x39\x31\x43\x35\x36\x2e\x31\x32\x34\ \x20\x2d\x36\x2e\x37\x34\x20\x35\x32\x2e\x37\x31\x32\x20\x2d\x34\ \x2e\x31\x37\x31\x20\x35\x35\x2e\x36\x32\x39\x20\x2d\x32\x2e\x32\ \x34\x33\x43\x35\x35\x2e\x38\x32\x33\x20\x2d\x32\x2e\x31\x31\x34\ \x20\x35\x36\x2e\x31\x39\x33\x20\x2d\x32\x2e\x31\x31\x20\x35\x36\ \x2e\x33\x36\x36\x20\x2d\x32\x2e\x32\x34\x34\x43\x35\x38\x2e\x33\ \x38\x37\x20\x2d\x33\x2e\x38\x30\x39\x20\x36\x30\x2e\x33\x39\x20\ \x2d\x34\x2e\x37\x31\x32\x20\x36\x32\x2e\x38\x32\x36\x20\x2d\x35\ \x2e\x32\x39\x34\x43\x36\x32\x2e\x39\x35\x20\x2d\x35\x2e\x33\x32\ \x33\x20\x36\x33\x2e\x32\x32\x34\x20\x2d\x34\x2e\x38\x35\x36\x20\ \x36\x33\x2e\x35\x39\x33\x20\x2d\x35\x2e\x30\x31\x37\x43\x36\x35\ \x2e\x32\x30\x36\x20\x2d\x35\x2e\x37\x32\x20\x36\x37\x2e\x32\x31\ \x36\x20\x2d\x35\x2e\x36\x36\x32\x20\x36\x38\x2e\x34\x20\x2d\x37\ \x43\x37\x32\x2e\x31\x36\x37\x20\x2d\x36\x2e\x37\x37\x36\x20\x37\ \x35\x2e\x37\x33\x32\x20\x2d\x37\x2e\x38\x39\x32\x20\x37\x39\x2e\ \x31\x32\x33\x20\x2d\x39\x2e\x32\x43\x38\x30\x2e\x32\x38\x34\x20\ \x2d\x39\x2e\x36\x34\x38\x20\x38\x31\x2e\x35\x35\x34\x20\x2d\x31\ \x30\x2e\x32\x30\x37\x20\x38\x32\x2e\x37\x35\x35\x20\x2d\x31\x30\ \x2e\x37\x30\x39\x43\x38\x34\x2e\x31\x33\x31\x20\x2d\x31\x31\x2e\ \x32\x38\x35\x20\x38\x35\x2e\x33\x33\x35\x20\x2d\x31\x32\x2e\x32\ \x31\x33\x20\x38\x36\x2e\x34\x34\x37\x20\x2d\x31\x33\x2e\x33\x35\ \x34\x43\x38\x36\x2e\x35\x38\x20\x2d\x31\x33\x2e\x34\x39\x20\x38\ \x36\x2e\x39\x33\x34\x20\x2d\x31\x33\x2e\x34\x20\x38\x37\x2e\x32\ \x30\x31\x20\x2d\x31\x33\x2e\x34\x43\x38\x37\x2e\x31\x36\x31\x20\ \x2d\x31\x34\x2e\x32\x36\x33\x20\x38\x38\x2e\x31\x32\x33\x20\x2d\ \x31\x34\x2e\x33\x39\x20\x38\x38\x2e\x33\x37\x20\x2d\x31\x35\x2e\ \x30\x31\x32\x43\x38\x38\x2e\x34\x36\x32\x20\x2d\x31\x35\x2e\x32\ \x34\x34\x20\x38\x38\x2e\x33\x31\x32\x20\x2d\x31\x35\x2e\x36\x34\ \x20\x38\x38\x2e\x34\x34\x35\x20\x2d\x31\x35\x2e\x37\x34\x32\x43\ \x39\x30\x2e\x35\x38\x33\x20\x2d\x31\x37\x2e\x33\x37\x32\x20\x39\ \x31\x2e\x35\x30\x33\x20\x2d\x31\x39\x2e\x33\x39\x20\x39\x30\x2e\ \x33\x33\x34\x20\x2d\x32\x31\x2e\x37\x36\x37\x43\x39\x30\x2e\x30\ \x34\x39\x20\x2d\x32\x32\x2e\x33\x34\x35\x20\x38\x39\x2e\x38\x20\ \x2d\x32\x32\x2e\x39\x36\x33\x20\x38\x39\x2e\x32\x33\x34\x20\x2d\ \x32\x33\x2e\x34\x33\x39\x43\x38\x38\x2e\x31\x34\x39\x20\x2d\x32\ \x34\x2e\x33\x35\x20\x38\x37\x2e\x30\x34\x37\x20\x2d\x32\x33\x2e\ \x34\x39\x36\x20\x38\x36\x20\x2d\x32\x33\x2e\x38\x43\x38\x35\x2e\ \x38\x34\x31\x20\x2d\x32\x33\x2e\x31\x37\x32\x20\x38\x35\x2e\x31\ \x31\x32\x20\x2d\x32\x33\x2e\x33\x34\x34\x20\x38\x34\x2e\x37\x32\ \x36\x20\x2d\x32\x33\x2e\x31\x34\x36\x43\x38\x33\x2e\x38\x36\x37\ \x20\x2d\x32\x32\x2e\x37\x30\x37\x20\x38\x32\x2e\x35\x33\x34\x20\ \x2d\x32\x33\x2e\x32\x39\x32\x20\x38\x31\x2e\x36\x37\x35\x20\x2d\ \x32\x32\x2e\x38\x35\x34\x43\x38\x30\x2e\x33\x31\x33\x20\x2d\x32\ \x32\x2e\x31\x35\x39\x20\x37\x39\x2e\x30\x37\x32\x20\x2d\x32\x31\ \x2e\x39\x39\x20\x37\x37\x2e\x36\x35\x20\x2d\x32\x31\x2e\x36\x31\ \x33\x43\x37\x37\x2e\x33\x33\x38\x20\x2d\x32\x31\x2e\x35\x33\x31\ \x20\x37\x36\x2e\x35\x36\x20\x2d\x32\x31\x2e\x36\x32\x37\x20\x37\ \x36\x2e\x34\x20\x2d\x32\x31\x43\x37\x36\x2e\x32\x36\x36\x20\x2d\ \x32\x31\x2e\x31\x33\x34\x20\x37\x36\x2e\x31\x31\x38\x20\x2d\x32\ \x31\x2e\x33\x36\x38\x20\x37\x36\x2e\x30\x31\x32\x20\x2d\x32\x31\ \x2e\x33\x34\x36\x43\x37\x34\x2e\x31\x30\x34\x20\x2d\x32\x30\x2e\ \x39\x35\x20\x37\x32\x2e\x38\x34\x34\x20\x2d\x32\x30\x2e\x37\x33\ \x36\x20\x37\x31\x2e\x35\x34\x33\x20\x2d\x31\x39\x2e\x30\x34\x34\ \x43\x37\x31\x2e\x34\x34\x20\x2d\x31\x38\x2e\x39\x31\x31\x20\x37\ \x30\x2e\x39\x39\x38\x20\x2d\x31\x39\x2e\x30\x39\x20\x37\x30\x2e\ \x38\x33\x39\x20\x2d\x31\x38\x2e\x39\x35\x35\x43\x36\x39\x2e\x38\ \x38\x32\x20\x2d\x31\x38\x2e\x31\x34\x37\x20\x36\x39\x2e\x34\x37\ \x37\x20\x2d\x31\x36\x2e\x39\x31\x33\x20\x36\x38\x2e\x33\x37\x36\ \x20\x2d\x31\x36\x2e\x32\x34\x31\x43\x36\x38\x2e\x31\x37\x35\x20\ \x2d\x31\x36\x2e\x31\x31\x38\x20\x36\x37\x2e\x38\x32\x33\x20\x2d\ \x31\x36\x2e\x32\x38\x36\x20\x36\x37\x2e\x36\x32\x39\x20\x2d\x31\ \x36\x2e\x31\x35\x37\x43\x36\x36\x2e\x39\x38\x33\x20\x2d\x31\x35\ \x2e\x37\x32\x36\x20\x36\x36\x2e\x36\x31\x36\x20\x2d\x31\x35\x2e\ \x30\x38\x35\x20\x36\x35\x2e\x39\x37\x34\x20\x2d\x31\x34\x2e\x36\ \x33\x38\x43\x36\x35\x2e\x36\x34\x35\x20\x2d\x31\x34\x2e\x34\x30\ \x39\x20\x36\x35\x2e\x32\x34\x35\x20\x2d\x31\x34\x2e\x37\x33\x34\ \x20\x36\x35\x2e\x32\x37\x37\x20\x2d\x31\x34\x2e\x39\x39\x43\x36\ \x35\x2e\x35\x32\x32\x20\x2d\x31\x36\x2e\x39\x33\x37\x20\x36\x36\ \x2e\x31\x37\x35\x20\x2d\x31\x38\x2e\x37\x32\x34\x20\x36\x35\x2e\ \x36\x20\x2d\x32\x30\x2e\x36\x43\x36\x37\x2e\x36\x37\x37\x20\x2d\ \x32\x33\x2e\x31\x32\x20\x37\x30\x2e\x31\x39\x34\x20\x2d\x32\x35\ \x2e\x30\x36\x39\x20\x37\x32\x20\x2d\x32\x37\x2e\x38\x43\x37\x32\ \x2e\x30\x31\x35\x20\x2d\x32\x39\x2e\x39\x36\x36\x20\x37\x32\x2e\ \x37\x30\x37\x20\x2d\x33\x32\x2e\x31\x31\x32\x20\x37\x32\x2e\x35\ \x39\x34\x20\x2d\x33\x34\x2e\x31\x38\x39\x43\x37\x32\x2e\x35\x38\ \x34\x20\x2d\x33\x34\x2e\x33\x38\x32\x20\x37\x32\x2e\x32\x39\x36\ \x20\x2d\x33\x35\x2e\x31\x31\x35\x20\x37\x32\x2e\x31\x37\x20\x2d\ \x33\x35\x2e\x34\x36\x32\x43\x37\x31\x2e\x38\x35\x38\x20\x2d\x33\ \x36\x2e\x33\x31\x36\x20\x37\x32\x2e\x37\x36\x34\x20\x2d\x33\x37\ \x2e\x33\x38\x32\x20\x37\x31\x2e\x39\x32\x20\x2d\x33\x38\x2e\x31\ \x30\x36\x43\x37\x30\x2e\x35\x31\x36\x20\x2d\x33\x39\x2e\x33\x30\ \x39\x20\x36\x39\x2e\x32\x32\x34\x20\x2d\x33\x38\x2e\x34\x33\x33\ \x20\x36\x38\x2e\x34\x20\x2d\x33\x37\x43\x36\x36\x2e\x35\x36\x32\ \x20\x2d\x33\x36\x2e\x36\x31\x20\x36\x34\x2e\x34\x39\x36\x20\x2d\ \x33\x35\x2e\x39\x31\x37\x20\x36\x32\x2e\x39\x31\x38\x20\x2d\x33\ \x37\x2e\x31\x35\x31\x43\x36\x31\x2e\x39\x31\x31\x20\x2d\x33\x37\ \x2e\x39\x33\x38\x20\x36\x31\x2e\x33\x33\x33\x20\x2d\x33\x38\x2e\ \x38\x34\x34\x20\x36\x30\x2e\x35\x33\x34\x20\x2d\x33\x39\x2e\x39\ \x43\x35\x39\x2e\x35\x34\x39\x20\x2d\x34\x31\x2e\x32\x30\x32\x20\ \x35\x39\x2e\x38\x38\x34\x20\x2d\x34\x32\x2e\x36\x33\x38\x20\x35\ \x39\x2e\x39\x35\x34\x20\x2d\x34\x34\x2e\x32\x30\x32\x43\x35\x39\ \x2e\x39\x36\x20\x2d\x34\x34\x2e\x33\x33\x20\x35\x39\x2e\x36\x34\ \x35\x20\x2d\x34\x34\x2e\x34\x36\x36\x20\x35\x39\x2e\x36\x34\x35\ \x20\x2d\x34\x34\x2e\x36\x43\x35\x39\x2e\x36\x34\x36\x20\x2d\x34\ \x34\x2e\x37\x33\x35\x20\x35\x39\x2e\x38\x36\x36\x20\x2d\x34\x34\ \x2e\x38\x36\x36\x20\x36\x30\x20\x2d\x34\x35\x43\x35\x39\x2e\x32\ \x39\x34\x20\x2d\x34\x35\x2e\x36\x32\x36\x20\x35\x39\x2e\x30\x31\ \x39\x20\x2d\x34\x36\x2e\x36\x38\x34\x20\x35\x38\x20\x2d\x34\x37\ \x43\x35\x38\x2e\x33\x30\x35\x20\x2d\x34\x38\x2e\x30\x39\x32\x20\ \x35\x37\x2e\x36\x32\x39\x20\x2d\x34\x38\x2e\x39\x37\x36\x20\x35\ \x36\x2e\x37\x35\x38\x20\x2d\x34\x39\x2e\x32\x37\x38\x43\x35\x34\ \x2e\x37\x36\x33\x20\x2d\x34\x39\x2e\x39\x36\x39\x20\x35\x33\x2e\ \x30\x38\x36\x20\x2d\x34\x38\x2e\x30\x35\x37\x20\x35\x31\x2e\x31\ \x39\x34\x20\x2d\x34\x37\x2e\x39\x38\x34\x43\x35\x30\x2e\x36\x38\ \x20\x2d\x34\x37\x2e\x39\x36\x35\x20\x35\x30\x2e\x32\x31\x33\x20\ \x2d\x34\x39\x2e\x30\x30\x33\x20\x34\x39\x2e\x35\x36\x34\x20\x2d\ \x34\x39\x2e\x33\x32\x38\x43\x34\x39\x2e\x31\x33\x32\x20\x2d\x34\ \x39\x2e\x35\x34\x34\x20\x34\x38\x2e\x34\x32\x38\x20\x2d\x34\x39\ \x2e\x35\x37\x37\x20\x34\x38\x2e\x30\x36\x36\x20\x2d\x34\x39\x2e\ \x33\x31\x31\x43\x34\x37\x2e\x33\x37\x38\x20\x2d\x34\x38\x2e\x38\ \x30\x37\x20\x34\x36\x2e\x37\x38\x39\x20\x2d\x34\x38\x2e\x36\x39\ \x33\x20\x34\x36\x2e\x30\x33\x31\x20\x2d\x34\x38\x2e\x34\x38\x38\ \x43\x34\x34\x2e\x34\x31\x34\x20\x2d\x34\x38\x2e\x30\x35\x32\x20\ \x34\x33\x2e\x31\x33\x36\x20\x2d\x34\x36\x2e\x39\x35\x38\x20\x34\ \x31\x2e\x36\x35\x36\x20\x2d\x34\x36\x2e\x31\x30\x33\x43\x34\x30\ \x2e\x31\x37\x31\x20\x2d\x34\x35\x2e\x32\x34\x36\x20\x33\x39\x2e\ \x32\x31\x36\x20\x2d\x34\x33\x2e\x38\x30\x39\x20\x33\x38\x2e\x31\ \x33\x36\x20\x2d\x34\x32\x2e\x34\x38\x39\x43\x33\x37\x2e\x31\x39\ \x35\x20\x2d\x34\x31\x2e\x33\x33\x37\x20\x33\x37\x2e\x30\x35\x39\ \x20\x2d\x33\x38\x2e\x39\x32\x33\x20\x33\x38\x2e\x34\x37\x39\x20\ \x2d\x33\x38\x2e\x34\x32\x33\x43\x34\x30\x2e\x33\x32\x32\x20\x2d\ \x33\x37\x2e\x37\x37\x33\x20\x34\x31\x2e\x36\x32\x36\x20\x2d\x34\ \x30\x2e\x34\x37\x36\x20\x34\x33\x2e\x35\x39\x32\x20\x2d\x34\x30\ \x2e\x31\x35\x43\x34\x33\x2e\x39\x30\x34\x20\x2d\x34\x30\x2e\x30\ \x39\x39\x20\x34\x34\x2e\x31\x31\x20\x2d\x33\x39\x2e\x37\x38\x38\ \x20\x34\x34\x20\x2d\x33\x39\x2e\x34\x43\x34\x34\x2e\x33\x38\x39\ \x20\x2d\x33\x39\x2e\x32\x39\x31\x20\x34\x34\x2e\x36\x30\x37\x20\ \x2d\x33\x39\x2e\x35\x32\x20\x34\x34\x2e\x38\x20\x2d\x33\x39\x2e\ \x38\x43\x34\x35\x2e\x36\x35\x38\x20\x2d\x33\x38\x2e\x37\x38\x31\ \x20\x34\x36\x2e\x38\x32\x32\x20\x2d\x33\x38\x2e\x34\x34\x34\x20\ \x34\x37\x2e\x37\x36\x20\x2d\x33\x37\x2e\x35\x37\x31\x43\x34\x38\ \x2e\x37\x33\x20\x2d\x33\x36\x2e\x36\x36\x37\x20\x35\x30\x2e\x34\ \x37\x36\x20\x2d\x33\x37\x2e\x30\x38\x35\x20\x35\x31\x2e\x34\x39\ \x31\x20\x2d\x33\x36\x2e\x30\x38\x38\x43\x35\x33\x2e\x30\x32\x20\ \x2d\x33\x34\x2e\x35\x38\x36\x20\x35\x32\x2e\x34\x36\x31\x20\x2d\ \x33\x31\x2e\x39\x30\x35\x20\x35\x34\x2e\x34\x20\x2d\x33\x30\x2e\ \x36\x43\x35\x33\x2e\x38\x31\x34\x20\x2d\x32\x39\x2e\x32\x38\x37\ \x20\x35\x33\x2e\x32\x30\x37\x20\x2d\x32\x38\x2e\x30\x31\x20\x35\ \x32\x2e\x38\x37\x32\x20\x2d\x32\x36\x2e\x35\x38\x33\x43\x35\x32\ \x2e\x35\x39\x20\x2d\x32\x35\x2e\x33\x37\x37\x20\x35\x33\x2e\x35\ \x38\x34\x20\x2d\x32\x34\x2e\x31\x38\x20\x35\x34\x2e\x37\x39\x35\ \x20\x2d\x32\x34\x2e\x32\x37\x31\x43\x35\x36\x2e\x30\x35\x33\x20\ \x2d\x32\x34\x2e\x33\x36\x35\x20\x35\x36\x2e\x33\x31\x35\x20\x2d\ \x32\x35\x2e\x31\x32\x34\x20\x35\x36\x2e\x38\x20\x2d\x32\x36\x2e\ \x32\x43\x35\x37\x2e\x30\x36\x37\x20\x2d\x32\x35\x2e\x39\x33\x33\ \x20\x35\x37\x2e\x35\x33\x36\x20\x2d\x32\x35\x2e\x36\x33\x36\x20\ \x35\x37\x2e\x34\x39\x35\x20\x2d\x32\x35\x2e\x34\x32\x43\x35\x37\ \x2e\x30\x33\x38\x20\x2d\x32\x33\x2e\x30\x33\x33\x20\x35\x36\x2e\ \x30\x31\x31\x20\x2d\x32\x31\x2e\x30\x34\x20\x35\x35\x2e\x35\x35\ \x33\x20\x2d\x31\x38\x2e\x36\x30\x39\x43\x35\x35\x2e\x34\x39\x34\ \x20\x2d\x31\x38\x2e\x32\x39\x32\x20\x35\x35\x2e\x31\x38\x39\x20\ \x2d\x31\x38\x2e\x30\x39\x20\x35\x34\x2e\x38\x20\x2d\x31\x38\x2e\ \x32\x43\x35\x34\x2e\x33\x33\x32\x20\x2d\x31\x34\x2e\x30\x35\x31\ \x20\x35\x30\x2e\x32\x38\x20\x2d\x31\x31\x2e\x36\x35\x37\x20\x34\ \x37\x2e\x37\x33\x35\x20\x2d\x38\x2e\x34\x39\x32\x43\x34\x37\x2e\ \x33\x33\x32\x20\x2d\x37\x2e\x39\x39\x20\x34\x37\x2e\x33\x32\x38\ \x20\x2d\x36\x2e\x37\x34\x31\x20\x34\x37\x2e\x37\x33\x37\x20\x2d\ \x36\x2e\x33\x33\x38\x43\x34\x39\x2e\x31\x34\x20\x2d\x34\x2e\x39\ \x35\x31\x20\x35\x31\x2e\x31\x20\x2d\x36\x2e\x34\x39\x37\x20\x35\ \x32\x2e\x38\x20\x2d\x37\x43\x35\x33\x2e\x30\x31\x33\x20\x2d\x38\ \x2e\x32\x30\x36\x20\x35\x33\x2e\x38\x37\x32\x20\x2d\x39\x2e\x31\ \x34\x38\x20\x35\x35\x2e\x32\x30\x34\x20\x2d\x39\x2e\x30\x39\x32\ \x43\x35\x35\x2e\x34\x36\x20\x2d\x39\x2e\x30\x38\x32\x20\x35\x35\ \x2e\x36\x39\x35\x20\x2d\x39\x2e\x36\x32\x34\x20\x35\x36\x2e\x30\ \x31\x39\x20\x2d\x39\x2e\x37\x35\x34\x43\x35\x36\x2e\x33\x36\x37\ \x20\x2d\x39\x2e\x38\x39\x32\x20\x35\x36\x2e\x38\x36\x39\x20\x2d\ \x39\x2e\x36\x36\x38\x20\x35\x37\x2e\x31\x35\x35\x20\x2d\x39\x2e\ \x38\x36\x36\x43\x35\x38\x2e\x38\x38\x34\x20\x2d\x31\x31\x2e\x30\ \x36\x31\x20\x36\x30\x2e\x32\x39\x32\x20\x2d\x31\x32\x2e\x31\x36\ \x37\x20\x36\x32\x2e\x30\x33\x20\x2d\x31\x33\x2e\x33\x35\x36\x43\ \x36\x32\x2e\x32\x32\x32\x20\x2d\x31\x33\x2e\x34\x38\x37\x20\x36\ \x32\x2e\x35\x36\x36\x20\x2d\x31\x33\x2e\x33\x32\x38\x20\x36\x32\ \x2e\x37\x38\x32\x20\x2d\x31\x33\x2e\x34\x33\x36\x43\x36\x33\x2e\ \x31\x30\x37\x20\x2d\x31\x33\x2e\x35\x39\x38\x20\x36\x33\x2e\x32\ \x39\x34\x20\x2d\x31\x33\x2e\x39\x38\x35\x20\x36\x33\x2e\x36\x31\ \x37\x20\x2d\x31\x34\x2e\x31\x37\x43\x36\x33\x2e\x39\x36\x35\x20\ \x2d\x31\x34\x2e\x33\x37\x20\x36\x34\x2e\x32\x30\x37\x20\x2d\x31\ \x34\x2e\x30\x38\x20\x36\x34\x2e\x34\x20\x2d\x31\x33\x2e\x38\x43\ \x36\x33\x2e\x37\x35\x34\x20\x2d\x31\x33\x2e\x34\x35\x31\x20\x36\ \x33\x2e\x37\x35\x20\x2d\x31\x32\x2e\x34\x39\x34\x20\x36\x33\x2e\ \x31\x36\x38\x20\x2d\x31\x32\x2e\x32\x39\x32\x43\x36\x32\x2e\x33\ \x39\x33\x20\x2d\x31\x32\x2e\x30\x32\x34\x20\x36\x31\x2e\x38\x33\ \x32\x20\x2d\x31\x31\x2e\x35\x31\x31\x20\x36\x31\x2e\x31\x35\x38\ \x20\x2d\x31\x31\x2e\x30\x36\x34\x43\x36\x30\x2e\x38\x36\x36\x20\ \x2d\x31\x30\x2e\x38\x37\x31\x20\x36\x30\x2e\x32\x30\x37\x20\x2d\ \x31\x31\x2e\x31\x31\x39\x20\x36\x30\x2e\x31\x30\x33\x20\x2d\x31\ \x30\x2e\x39\x34\x43\x35\x39\x2e\x35\x30\x35\x20\x2d\x39\x2e\x39\ \x31\x32\x20\x35\x38\x2e\x33\x32\x31\x20\x2d\x39\x2e\x34\x37\x34\ \x20\x35\x37\x2e\x36\x31\x31\x20\x2d\x38\x2e\x35\x39\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x32\x2e\x32\x20\x2d\x35\x38\x43\x32\x2e\x32\ \x20\x2d\x35\x38\x20\x2d\x37\x2e\x30\x33\x38\x20\x2d\x36\x30\x2e\ \x38\x37\x32\x20\x2d\x31\x38\x2e\x32\x20\x2d\x33\x35\x2e\x32\x43\ \x2d\x31\x38\x2e\x32\x20\x2d\x33\x35\x2e\x32\x20\x2d\x32\x30\x2e\ \x36\x20\x2d\x33\x30\x20\x2d\x32\x33\x20\x2d\x32\x38\x43\x2d\x32\ \x35\x2e\x34\x20\x2d\x32\x36\x20\x2d\x33\x36\x2e\x36\x20\x2d\x32\ \x32\x2e\x34\x20\x2d\x33\x38\x2e\x36\x20\x2d\x31\x38\x2e\x34\x4c\ \x2d\x34\x39\x20\x2d\x32\x2e\x34\x43\x2d\x34\x39\x20\x2d\x32\x2e\ \x34\x20\x2d\x33\x34\x2e\x32\x20\x2d\x31\x38\x2e\x34\x20\x2d\x33\ \x31\x20\x2d\x32\x30\x2e\x38\x43\x2d\x33\x31\x20\x2d\x32\x30\x2e\ \x38\x20\x2d\x32\x33\x20\x2d\x32\x39\x2e\x32\x20\x2d\x32\x36\x2e\ \x32\x20\x2d\x32\x32\x2e\x34\x43\x2d\x32\x36\x2e\x32\x20\x2d\x32\ \x32\x2e\x34\x20\x2d\x34\x30\x2e\x32\x20\x2d\x31\x31\x2e\x36\x20\ \x2d\x33\x39\x20\x2d\x32\x2e\x34\x43\x2d\x33\x39\x20\x2d\x32\x2e\ \x34\x20\x2d\x34\x34\x2e\x36\x20\x31\x32\x20\x2d\x34\x35\x2e\x34\ \x20\x31\x34\x43\x2d\x34\x35\x2e\x34\x20\x31\x34\x20\x2d\x32\x39\ \x2e\x34\x20\x2d\x31\x38\x20\x2d\x32\x37\x20\x2d\x31\x39\x2e\x32\ \x43\x2d\x32\x34\x2e\x36\x20\x2d\x32\x30\x2e\x34\x20\x2d\x32\x33\ \x2e\x34\x20\x2d\x32\x30\x2e\x34\x20\x2d\x32\x34\x2e\x36\x20\x2d\ \x31\x36\x2e\x38\x43\x2d\x32\x35\x2e\x38\x20\x2d\x31\x33\x2e\x32\ \x20\x2d\x32\x36\x2e\x32\x20\x33\x2e\x32\x20\x2d\x32\x39\x20\x35\ \x2e\x32\x43\x2d\x32\x39\x20\x35\x2e\x32\x20\x2d\x32\x31\x20\x2d\ \x31\x35\x2e\x32\x20\x2d\x32\x31\x2e\x38\x20\x2d\x31\x38\x2e\x34\ \x43\x2d\x32\x31\x2e\x38\x20\x2d\x31\x38\x2e\x34\x20\x2d\x31\x38\ \x2e\x36\x20\x2d\x32\x32\x20\x2d\x31\x36\x2e\x32\x20\x2d\x31\x36\ \x2e\x38\x4c\x2d\x31\x37\x2e\x34\x20\x2d\x30\x2e\x38\x4c\x2d\x31\ \x33\x20\x31\x31\x2e\x32\x43\x2d\x31\x33\x20\x31\x31\x2e\x32\x20\ \x2d\x31\x35\x2e\x34\x20\x30\x20\x2d\x31\x33\x2e\x38\x20\x2d\x31\ \x35\x2e\x36\x43\x2d\x31\x33\x2e\x38\x20\x2d\x31\x35\x2e\x36\x20\ \x2d\x31\x35\x2e\x38\x20\x2d\x32\x36\x20\x2d\x31\x31\x2e\x38\x20\ \x2d\x32\x30\x2e\x34\x43\x2d\x37\x2e\x38\x20\x2d\x31\x34\x2e\x38\ \x20\x31\x2e\x38\x20\x2d\x38\x2e\x38\x20\x31\x2e\x38\x20\x2d\x34\ \x43\x31\x2e\x38\x20\x2d\x34\x20\x2d\x33\x2e\x34\x20\x2d\x32\x31\ \x2e\x36\x20\x2d\x31\x32\x2e\x36\x20\x2d\x32\x36\x2e\x34\x4c\x2d\ \x31\x36\x2e\x36\x20\x2d\x32\x30\x2e\x34\x4c\x2d\x31\x37\x2e\x38\ \x20\x2d\x32\x32\x2e\x34\x43\x2d\x31\x37\x2e\x38\x20\x2d\x32\x32\ \x2e\x34\x20\x2d\x32\x31\x2e\x34\x20\x2d\x32\x33\x2e\x32\x20\x2d\ \x31\x37\x20\x2d\x33\x30\x43\x2d\x31\x32\x2e\x36\x20\x2d\x33\x36\ \x2e\x38\x20\x2d\x31\x33\x20\x2d\x33\x37\x2e\x36\x20\x2d\x31\x33\ \x20\x2d\x33\x37\x2e\x36\x43\x2d\x31\x33\x20\x2d\x33\x37\x2e\x36\ \x20\x2d\x36\x2e\x36\x20\x2d\x33\x30\x2e\x34\x20\x2d\x35\x20\x2d\ \x33\x30\x2e\x34\x43\x2d\x35\x20\x2d\x33\x30\x2e\x34\x20\x38\x2e\ \x32\x20\x2d\x33\x38\x20\x39\x2e\x34\x20\x2d\x31\x33\x2e\x36\x43\ \x39\x2e\x34\x20\x2d\x31\x33\x2e\x36\x20\x31\x36\x2e\x32\x20\x2d\ \x32\x38\x20\x37\x20\x2d\x33\x34\x2e\x38\x43\x37\x20\x2d\x33\x34\ \x2e\x38\x20\x2d\x37\x2e\x38\x20\x2d\x33\x36\x2e\x38\x20\x2d\x36\ \x2e\x36\x20\x2d\x34\x32\x4c\x30\x2e\x36\x20\x2d\x35\x34\x2e\x34\ \x43\x34\x2e\x32\x20\x2d\x35\x39\x2e\x36\x20\x32\x2e\x36\x20\x2d\ \x35\x36\x2e\x38\x20\x32\x2e\x36\x20\x2d\x35\x36\x2e\x38\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x31\x37\x2e\x38\x20\x2d\x34\x31\x2e\x36\ \x43\x2d\x31\x37\x2e\x38\x20\x2d\x34\x31\x2e\x36\x20\x2d\x33\x30\ \x2e\x36\x20\x2d\x34\x31\x2e\x36\x20\x2d\x33\x33\x2e\x38\x20\x2d\ \x33\x36\x2e\x34\x4c\x2d\x34\x31\x20\x2d\x32\x36\x2e\x38\x43\x2d\ \x34\x31\x20\x2d\x32\x36\x2e\x38\x20\x2d\x32\x33\x2e\x38\x20\x2d\ \x33\x36\x2e\x38\x20\x2d\x31\x39\x2e\x38\x20\x2d\x33\x38\x43\x2d\ \x31\x35\x2e\x38\x20\x2d\x33\x39\x2e\x32\x20\x2d\x31\x37\x2e\x38\ \x20\x2d\x34\x31\x2e\x36\x20\x2d\x31\x37\x2e\x38\x20\x2d\x34\x31\ \x2e\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x37\x2e\x38\x20\x2d\ \x33\x35\x2e\x32\x43\x2d\x35\x37\x2e\x38\x20\x2d\x33\x35\x2e\x32\ \x20\x2d\x35\x39\x2e\x38\x20\x2d\x33\x34\x20\x2d\x36\x30\x2e\x32\ \x20\x2d\x33\x31\x2e\x32\x43\x2d\x36\x30\x2e\x36\x20\x2d\x32\x38\ \x2e\x34\x20\x2d\x36\x33\x20\x2d\x32\x38\x20\x2d\x36\x32\x2e\x32\ \x20\x2d\x32\x35\x2e\x32\x43\x2d\x36\x31\x2e\x34\x20\x2d\x32\x32\ \x2e\x34\x20\x2d\x35\x39\x2e\x34\x20\x2d\x32\x30\x20\x2d\x35\x39\ \x2e\x34\x20\x2d\x32\x34\x43\x2d\x35\x39\x2e\x34\x20\x2d\x32\x38\ \x20\x2d\x35\x37\x2e\x38\x20\x2d\x33\x30\x20\x2d\x35\x37\x20\x2d\ \x33\x31\x2e\x32\x43\x2d\x35\x36\x2e\x32\x20\x2d\x33\x32\x2e\x34\ \x20\x2d\x35\x34\x2e\x36\x20\x2d\x33\x36\x2e\x38\x20\x2d\x35\x37\ \x2e\x38\x20\x2d\x33\x35\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x36\x36\x2e\x36\x20\x32\x36\x43\x2d\x36\x36\x2e\x36\x20\x32\x36\ \x20\x2d\x37\x35\x20\x32\x32\x20\x2d\x37\x38\x2e\x32\x20\x31\x38\ \x2e\x34\x43\x2d\x38\x31\x2e\x34\x20\x31\x34\x2e\x38\x20\x2d\x38\ \x30\x2e\x39\x34\x38\x20\x31\x39\x2e\x39\x36\x36\x20\x2d\x38\x35\ \x2e\x38\x20\x31\x39\x2e\x36\x43\x2d\x39\x31\x2e\x36\x34\x37\x20\ \x31\x39\x2e\x31\x35\x39\x20\x2d\x39\x30\x2e\x36\x20\x33\x2e\x32\ \x20\x2d\x39\x30\x2e\x36\x20\x33\x2e\x32\x4c\x2d\x39\x34\x2e\x36\ \x20\x31\x30\x2e\x38\x43\x2d\x39\x34\x2e\x36\x20\x31\x30\x2e\x38\ \x20\x2d\x39\x35\x2e\x38\x20\x32\x35\x2e\x32\x20\x2d\x38\x37\x2e\ \x38\x20\x32\x32\x2e\x38\x43\x2d\x38\x33\x2e\x38\x39\x33\x20\x32\ \x31\x2e\x36\x32\x38\x20\x2d\x38\x32\x2e\x36\x20\x32\x33\x2e\x32\ \x20\x2d\x38\x34\x2e\x32\x20\x32\x34\x43\x2d\x38\x35\x2e\x38\x20\ \x32\x34\x2e\x38\x20\x2d\x37\x38\x2e\x36\x20\x32\x35\x2e\x32\x20\ \x2d\x38\x31\x2e\x34\x20\x32\x36\x2e\x38\x43\x2d\x38\x34\x2e\x32\ \x20\x32\x38\x2e\x34\x20\x2d\x36\x39\x2e\x38\x20\x32\x33\x2e\x32\ \x20\x2d\x37\x32\x2e\x32\x20\x33\x33\x2e\x36\x4c\x2d\x36\x36\x2e\ \x36\x20\x32\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x39\x2e\x32\ \x20\x34\x30\x2e\x34\x43\x2d\x37\x39\x2e\x32\x20\x34\x30\x2e\x34\ \x20\x2d\x39\x34\x2e\x36\x20\x34\x34\x2e\x38\x20\x2d\x39\x38\x2e\ \x32\x20\x33\x35\x2e\x32\x43\x2d\x39\x38\x2e\x32\x20\x33\x35\x2e\ \x32\x20\x2d\x31\x30\x33\x20\x33\x37\x2e\x36\x20\x2d\x31\x30\x30\ \x2e\x38\x20\x34\x30\x2e\x36\x43\x2d\x39\x38\x2e\x36\x20\x34\x33\ \x2e\x36\x20\x2d\x39\x37\x2e\x34\x20\x34\x34\x20\x2d\x39\x37\x2e\ \x34\x20\x34\x34\x43\x2d\x39\x37\x2e\x34\x20\x34\x34\x20\x2d\x39\ \x32\x20\x34\x35\x2e\x32\x20\x2d\x39\x32\x2e\x36\x20\x34\x36\x43\ \x2d\x39\x33\x2e\x32\x20\x34\x36\x2e\x38\x20\x2d\x39\x35\x2e\x36\ \x20\x35\x30\x2e\x32\x20\x2d\x39\x35\x2e\x36\x20\x35\x30\x2e\x32\ \x43\x2d\x39\x35\x2e\x36\x20\x35\x30\x2e\x32\x20\x2d\x38\x35\x2e\ \x34\x20\x34\x34\x2e\x32\x20\x2d\x37\x39\x2e\x32\x20\x34\x30\x2e\ \x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x39\x2e\x32\x30\x31\x20\ \x31\x31\x38\x2e\x36\x30\x31\x43\x31\x34\x38\x2e\x37\x37\x34\x20\ \x31\x32\x30\x2e\x37\x33\x35\x20\x31\x34\x37\x2e\x31\x30\x33\x20\ \x31\x32\x31\x2e\x35\x33\x36\x20\x31\x34\x35\x2e\x32\x30\x31\x20\ \x31\x32\x32\x2e\x32\x30\x31\x43\x31\x34\x33\x2e\x32\x38\x34\x20\ \x31\x32\x31\x2e\x32\x34\x33\x20\x31\x34\x30\x2e\x36\x38\x36\x20\ \x31\x31\x38\x2e\x31\x33\x37\x20\x31\x33\x38\x2e\x38\x30\x31\x20\ \x31\x32\x30\x2e\x32\x30\x31\x43\x31\x33\x38\x2e\x33\x32\x37\x20\ \x31\x31\x39\x2e\x37\x32\x31\x20\x31\x33\x37\x2e\x35\x34\x38\x20\ \x31\x31\x39\x2e\x36\x36\x31\x20\x31\x33\x37\x2e\x32\x30\x34\x20\ \x31\x31\x38\x2e\x39\x39\x39\x43\x31\x33\x36\x2e\x37\x33\x39\x20\ \x31\x31\x38\x2e\x31\x30\x31\x20\x31\x33\x37\x2e\x30\x31\x31\x20\ \x31\x31\x37\x2e\x30\x35\x35\x20\x31\x33\x36\x2e\x36\x36\x39\x20\ \x31\x31\x36\x2e\x32\x35\x37\x43\x31\x33\x36\x2e\x31\x32\x34\x20\ \x31\x31\x34\x2e\x39\x38\x35\x20\x31\x33\x35\x2e\x34\x31\x35\x20\ \x31\x31\x33\x2e\x36\x31\x39\x20\x31\x33\x35\x2e\x36\x30\x31\x20\ \x31\x31\x32\x2e\x32\x30\x31\x43\x31\x33\x37\x2e\x34\x30\x37\x20\ \x31\x31\x31\x2e\x34\x38\x39\x20\x31\x33\x38\x2e\x30\x30\x32\x20\ \x31\x30\x39\x2e\x35\x38\x33\x20\x31\x33\x37\x2e\x35\x32\x38\x20\ \x31\x30\x37\x2e\x38\x32\x43\x31\x33\x37\x2e\x34\x35\x39\x20\x31\ \x30\x37\x2e\x35\x36\x33\x20\x31\x33\x37\x2e\x30\x33\x20\x31\x30\ \x37\x2e\x33\x36\x36\x20\x31\x33\x37\x2e\x32\x33\x20\x31\x30\x37\ \x2e\x30\x31\x37\x43\x31\x33\x37\x2e\x34\x31\x36\x20\x31\x30\x36\ \x2e\x36\x39\x34\x20\x31\x33\x37\x2e\x37\x33\x34\x20\x31\x30\x36\ \x2e\x34\x36\x37\x20\x31\x33\x38\x2e\x30\x30\x31\x20\x31\x30\x36\ \x2e\x32\x43\x31\x33\x37\x2e\x38\x36\x36\x20\x31\x30\x36\x2e\x33\ \x33\x35\x20\x31\x33\x37\x2e\x37\x32\x31\x20\x31\x30\x36\x2e\x35\ \x36\x38\x20\x31\x33\x37\x2e\x36\x31\x20\x31\x30\x36\x2e\x35\x34\ \x38\x43\x31\x33\x37\x20\x31\x30\x36\x2e\x34\x34\x32\x20\x31\x33\ \x37\x2e\x31\x32\x34\x20\x31\x30\x35\x2e\x38\x30\x35\x20\x31\x33\ \x37\x2e\x32\x35\x34\x20\x31\x30\x35\x2e\x34\x31\x38\x43\x31\x33\ \x37\x2e\x38\x33\x39\x20\x31\x30\x33\x2e\x36\x37\x32\x20\x31\x33\ \x39\x2e\x38\x35\x33\x20\x31\x30\x33\x2e\x34\x30\x38\x20\x31\x34\ \x31\x2e\x32\x30\x31\x20\x31\x30\x34\x2e\x36\x43\x31\x34\x31\x2e\ \x34\x35\x37\x20\x31\x30\x34\x2e\x30\x33\x35\x20\x31\x34\x31\x2e\ \x39\x36\x36\x20\x31\x30\x34\x2e\x32\x32\x39\x20\x31\x34\x32\x2e\ \x34\x30\x31\x20\x31\x30\x34\x2e\x32\x43\x31\x34\x32\x2e\x33\x35\ \x31\x20\x31\x30\x33\x2e\x36\x32\x31\x20\x31\x34\x32\x2e\x37\x35\ \x39\x20\x31\x30\x33\x2e\x30\x39\x34\x20\x31\x34\x32\x2e\x39\x35\ \x37\x20\x31\x30\x32\x2e\x36\x37\x34\x43\x31\x34\x33\x2e\x34\x37\ \x35\x20\x31\x30\x31\x2e\x35\x37\x36\x20\x31\x34\x35\x2e\x31\x30\ \x34\x20\x31\x30\x32\x2e\x36\x38\x32\x20\x31\x34\x35\x2e\x39\x30\ \x31\x20\x31\x30\x32\x2e\x30\x37\x43\x31\x34\x36\x2e\x39\x37\x37\ \x20\x31\x30\x31\x2e\x32\x34\x35\x20\x31\x34\x38\x2e\x30\x34\x20\ \x31\x30\x30\x2e\x35\x34\x36\x20\x31\x34\x39\x2e\x31\x31\x38\x20\ \x31\x30\x31\x2e\x31\x34\x39\x43\x31\x35\x30\x2e\x39\x32\x37\x20\ \x31\x30\x32\x2e\x31\x36\x32\x20\x31\x35\x32\x2e\x36\x33\x36\x20\ \x31\x30\x33\x2e\x33\x37\x34\x20\x31\x35\x33\x2e\x38\x33\x35\x20\ \x31\x30\x35\x2e\x31\x31\x35\x43\x31\x35\x34\x2e\x34\x31\x20\x31\ \x30\x35\x2e\x39\x34\x39\x20\x31\x35\x34\x2e\x36\x35\x20\x31\x30\ \x37\x2e\x32\x33\x20\x31\x35\x34\x2e\x35\x39\x32\x20\x31\x30\x38\ \x2e\x31\x38\x38\x43\x31\x35\x34\x2e\x35\x35\x34\x20\x31\x30\x38\ \x2e\x38\x33\x35\x20\x31\x35\x33\x2e\x31\x37\x33\x20\x31\x30\x38\ \x2e\x34\x38\x33\x20\x31\x35\x32\x2e\x38\x33\x20\x31\x30\x39\x2e\ \x34\x31\x32\x43\x31\x35\x32\x2e\x31\x38\x35\x20\x31\x31\x31\x2e\ \x31\x36\x20\x31\x35\x34\x2e\x30\x31\x36\x20\x31\x31\x31\x2e\x36\ \x37\x39\x20\x31\x35\x34\x2e\x37\x37\x32\x20\x31\x31\x33\x2e\x30\ \x31\x37\x43\x31\x35\x34\x2e\x39\x37\x20\x31\x31\x33\x2e\x33\x36\ \x36\x20\x31\x35\x34\x2e\x37\x30\x36\x20\x31\x31\x33\x2e\x36\x37\ \x20\x31\x35\x34\x2e\x33\x39\x31\x20\x31\x31\x33\x2e\x37\x36\x38\ \x43\x31\x35\x33\x2e\x39\x38\x20\x31\x31\x33\x2e\x38\x39\x36\x20\ \x31\x35\x33\x2e\x31\x39\x36\x20\x31\x31\x33\x2e\x37\x30\x37\x20\ \x31\x35\x33\x2e\x33\x33\x34\x20\x31\x31\x34\x2e\x31\x36\x43\x31\ \x35\x34\x2e\x33\x30\x36\x20\x31\x31\x37\x2e\x33\x35\x33\x20\x31\ \x35\x31\x2e\x35\x35\x20\x31\x31\x38\x2e\x30\x33\x31\x20\x31\x34\ \x39\x2e\x32\x30\x31\x20\x31\x31\x38\x2e\x36\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x31\x33\x39\x2e\x36\x20\x31\x33\x38\x2e\x32\x30\ \x31\x43\x31\x33\x39\x2e\x35\x39\x33\x20\x31\x33\x36\x2e\x34\x36\ \x33\x20\x31\x33\x37\x2e\x39\x39\x32\x20\x31\x33\x34\x2e\x37\x30\ \x37\x20\x31\x33\x39\x2e\x32\x30\x31\x20\x31\x33\x33\x2e\x30\x30\ \x31\x43\x31\x33\x39\x2e\x33\x33\x36\x20\x31\x33\x33\x2e\x31\x33\ \x35\x20\x31\x33\x39\x2e\x34\x36\x37\x20\x31\x33\x33\x2e\x33\x35\ \x36\x20\x31\x33\x39\x2e\x36\x30\x31\x20\x31\x33\x33\x2e\x33\x35\ \x36\x43\x31\x33\x39\x2e\x37\x33\x36\x20\x31\x33\x33\x2e\x33\x35\ \x36\x20\x31\x33\x39\x2e\x38\x36\x37\x20\x31\x33\x33\x2e\x31\x33\ \x35\x20\x31\x34\x30\x2e\x30\x30\x31\x20\x31\x33\x33\x2e\x30\x30\ \x31\x43\x31\x34\x31\x2e\x34\x39\x36\x20\x31\x33\x35\x2e\x32\x31\ \x37\x20\x31\x34\x35\x2e\x31\x34\x38\x20\x31\x33\x36\x2e\x31\x34\ \x35\x20\x31\x34\x35\x2e\x30\x30\x36\x20\x31\x33\x38\x2e\x39\x39\ \x31\x43\x31\x34\x34\x2e\x39\x38\x34\x20\x31\x33\x39\x2e\x34\x33\ \x38\x20\x31\x34\x33\x2e\x38\x39\x37\x20\x31\x34\x30\x2e\x33\x35\ \x36\x20\x31\x34\x34\x2e\x38\x30\x31\x20\x31\x34\x31\x2e\x30\x30\ \x31\x43\x31\x34\x32\x2e\x39\x38\x38\x20\x31\x34\x32\x2e\x33\x34\ \x39\x20\x31\x34\x32\x2e\x39\x33\x33\x20\x31\x34\x34\x2e\x37\x31\ \x39\x20\x31\x34\x32\x2e\x30\x30\x31\x20\x31\x34\x36\x2e\x36\x30\ \x31\x43\x31\x34\x30\x2e\x37\x36\x33\x20\x31\x34\x36\x2e\x33\x31\ \x35\x20\x31\x33\x39\x2e\x35\x35\x31\x20\x31\x34\x35\x2e\x39\x35\ \x32\x20\x31\x33\x38\x2e\x34\x30\x31\x20\x31\x34\x35\x2e\x34\x30\ \x31\x43\x31\x33\x38\x2e\x37\x35\x33\x20\x31\x34\x33\x2e\x39\x31\ \x35\x20\x31\x33\x38\x2e\x36\x33\x36\x20\x31\x34\x32\x2e\x32\x33\ \x31\x20\x31\x33\x39\x2e\x34\x35\x36\x20\x31\x34\x30\x2e\x39\x31\ \x31\x43\x31\x33\x39\x2e\x38\x39\x20\x31\x34\x30\x2e\x32\x31\x33\ \x20\x31\x33\x39\x2e\x36\x30\x33\x20\x31\x33\x39\x2e\x31\x33\x34\ \x20\x31\x33\x39\x2e\x36\x20\x31\x33\x38\x2e\x32\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x32\x36\x2e\x36\x20\x31\x32\x39\x2e\x32\ \x30\x31\x43\x2d\x32\x36\x2e\x36\x20\x31\x32\x39\x2e\x32\x30\x31\ \x20\x2d\x34\x33\x2e\x34\x35\x38\x20\x31\x33\x39\x2e\x33\x33\x37\ \x20\x2d\x32\x39\x2e\x34\x20\x31\x32\x34\x2e\x30\x30\x31\x43\x2d\ \x32\x30\x2e\x36\x20\x31\x31\x34\x2e\x34\x30\x31\x20\x2d\x31\x30\ \x2e\x36\x20\x31\x30\x38\x2e\x38\x30\x31\x20\x2d\x31\x30\x2e\x36\ \x20\x31\x30\x38\x2e\x38\x30\x31\x43\x2d\x31\x30\x2e\x36\x20\x31\ \x30\x38\x2e\x38\x30\x31\x20\x2d\x30\x2e\x32\x20\x31\x30\x34\x2e\ \x34\x20\x33\x2e\x34\x20\x31\x30\x33\x2e\x32\x43\x37\x20\x31\x30\ \x32\x20\x32\x32\x2e\x32\x20\x39\x36\x2e\x38\x20\x32\x35\x2e\x34\ \x20\x39\x36\x2e\x34\x43\x32\x38\x2e\x36\x20\x39\x36\x20\x33\x38\ \x2e\x32\x20\x39\x32\x20\x34\x35\x20\x39\x36\x43\x35\x31\x2e\x38\ \x20\x31\x30\x30\x20\x35\x39\x2e\x38\x20\x31\x30\x34\x2e\x34\x20\ \x35\x39\x2e\x38\x20\x31\x30\x34\x2e\x34\x43\x35\x39\x2e\x38\x20\ \x31\x30\x34\x2e\x34\x20\x34\x33\x2e\x34\x20\x39\x36\x20\x33\x39\ \x2e\x38\x20\x39\x38\x2e\x34\x43\x33\x36\x2e\x32\x20\x31\x30\x30\ \x2e\x38\x20\x32\x39\x20\x31\x30\x30\x2e\x34\x20\x32\x33\x20\x31\ \x30\x33\x2e\x36\x43\x32\x33\x20\x31\x30\x33\x2e\x36\x20\x38\x2e\ \x32\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x35\x20\x31\x31\x30\x2e\ \x30\x30\x31\x43\x31\x2e\x38\x20\x31\x31\x32\x2e\x30\x30\x31\x20\ \x2d\x38\x2e\x36\x20\x31\x32\x33\x2e\x36\x30\x31\x20\x2d\x31\x30\ \x2e\x32\x20\x31\x32\x32\x2e\x38\x30\x31\x43\x2d\x31\x31\x2e\x38\ \x20\x31\x32\x32\x2e\x30\x30\x31\x20\x2d\x39\x2e\x38\x20\x31\x32\ \x31\x2e\x36\x30\x31\x20\x2d\x38\x2e\x36\x20\x31\x31\x38\x2e\x38\ \x30\x31\x43\x2d\x37\x2e\x34\x20\x31\x31\x36\x2e\x30\x30\x31\x20\ \x2d\x39\x2e\x34\x20\x31\x31\x34\x2e\x34\x30\x31\x20\x2d\x31\x37\ \x2e\x34\x20\x31\x32\x30\x2e\x38\x30\x31\x43\x2d\x32\x35\x2e\x34\ \x20\x31\x32\x37\x2e\x32\x30\x31\x20\x2d\x32\x36\x2e\x36\x20\x31\ \x32\x39\x2e\x32\x30\x31\x20\x2d\x32\x36\x2e\x36\x20\x31\x32\x39\ \x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x39\x2e\x31\ \x39\x35\x20\x31\x32\x33\x2e\x32\x33\x34\x43\x2d\x31\x39\x2e\x31\ \x39\x35\x20\x31\x32\x33\x2e\x32\x33\x34\x20\x2d\x31\x37\x2e\x37\ \x38\x35\x20\x31\x31\x30\x2e\x31\x39\x34\x20\x2d\x39\x2e\x33\x30\ \x37\x20\x31\x31\x31\x2e\x38\x35\x39\x43\x2d\x39\x2e\x33\x30\x37\ \x20\x31\x31\x31\x2e\x38\x35\x39\x20\x2d\x31\x2e\x30\x38\x31\x20\ \x31\x30\x37\x2e\x36\x38\x39\x20\x31\x2e\x36\x34\x31\x20\x31\x30\ \x35\x2e\x37\x32\x31\x43\x31\x2e\x36\x34\x31\x20\x31\x30\x35\x2e\ \x37\x32\x31\x20\x39\x2e\x37\x38\x20\x31\x30\x34\x2e\x30\x31\x39\ \x20\x31\x31\x2e\x30\x39\x20\x31\x30\x33\x2e\x34\x30\x32\x43\x32\ \x39\x2e\x35\x36\x39\x20\x39\x34\x2e\x37\x30\x32\x20\x34\x34\x2e\ \x32\x38\x38\x20\x39\x39\x2e\x32\x32\x31\x20\x34\x34\x2e\x38\x33\ \x35\x20\x39\x38\x2e\x31\x30\x31\x43\x34\x35\x2e\x33\x38\x31\x20\ \x39\x36\x2e\x39\x38\x32\x20\x36\x35\x2e\x30\x30\x36\x20\x31\x30\ \x34\x2e\x30\x39\x39\x20\x36\x38\x2e\x36\x31\x35\x20\x31\x30\x38\ \x2e\x31\x38\x35\x43\x36\x39\x2e\x30\x30\x36\x20\x31\x30\x38\x2e\ \x36\x32\x38\x20\x35\x38\x2e\x33\x38\x34\x20\x31\x30\x32\x2e\x35\ \x38\x38\x20\x34\x38\x2e\x36\x38\x36\x20\x31\x30\x30\x2e\x36\x39\ \x37\x43\x34\x30\x2e\x34\x31\x33\x20\x39\x39\x2e\x30\x38\x33\x20\ \x31\x38\x2e\x38\x31\x31\x20\x31\x30\x30\x2e\x39\x34\x34\x20\x37\ \x2e\x39\x30\x35\x20\x31\x30\x36\x2e\x34\x38\x43\x34\x2e\x39\x33\ \x32\x20\x31\x30\x37\x2e\x39\x38\x39\x20\x2d\x34\x2e\x30\x31\x33\ \x20\x31\x31\x33\x2e\x37\x37\x33\x20\x2d\x36\x2e\x35\x34\x34\x20\ \x31\x31\x33\x2e\x36\x36\x32\x43\x2d\x39\x2e\x30\x37\x35\x20\x31\ \x31\x33\x2e\x35\x35\x20\x2d\x31\x39\x2e\x31\x39\x35\x20\x31\x32\ \x33\x2e\x32\x33\x34\x20\x2d\x31\x39\x2e\x31\x39\x35\x20\x31\x32\ \x33\x2e\x32\x33\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x33\x20\ \x31\x34\x38\x2e\x38\x30\x31\x43\x2d\x32\x33\x20\x31\x34\x38\x2e\ \x38\x30\x31\x20\x2d\x33\x38\x2e\x32\x20\x31\x34\x36\x2e\x34\x30\ \x31\x20\x2d\x32\x31\x2e\x34\x20\x31\x34\x34\x2e\x38\x30\x31\x43\ \x2d\x32\x31\x2e\x34\x20\x31\x34\x34\x2e\x38\x30\x31\x20\x2d\x33\ \x2e\x34\x20\x31\x34\x32\x2e\x38\x30\x31\x20\x30\x2e\x36\x20\x31\ \x33\x37\x2e\x36\x30\x31\x43\x30\x2e\x36\x20\x31\x33\x37\x2e\x36\ \x30\x31\x20\x31\x34\x2e\x32\x20\x31\x32\x38\x2e\x34\x30\x31\x20\ \x31\x37\x20\x31\x32\x38\x2e\x30\x30\x31\x43\x31\x39\x2e\x38\x20\ \x31\x32\x37\x2e\x36\x30\x31\x20\x34\x39\x2e\x38\x20\x31\x32\x30\ \x2e\x34\x30\x31\x20\x35\x30\x2e\x32\x20\x31\x31\x38\x2e\x30\x30\ \x31\x43\x35\x30\x2e\x36\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x35\ \x36\x2e\x32\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x35\x37\x2e\x38\ \x20\x31\x31\x36\x2e\x34\x30\x31\x43\x35\x39\x2e\x34\x20\x31\x31\ \x37\x2e\x32\x30\x31\x20\x35\x38\x2e\x36\x20\x31\x31\x38\x2e\x34\ \x30\x31\x20\x35\x35\x2e\x38\x20\x31\x31\x39\x2e\x32\x30\x31\x43\ \x35\x33\x20\x31\x32\x30\x2e\x30\x30\x31\x20\x32\x31\x2e\x38\x20\ \x31\x33\x36\x2e\x34\x30\x31\x20\x31\x35\x2e\x34\x20\x31\x33\x37\ \x2e\x36\x30\x31\x43\x39\x20\x31\x33\x38\x2e\x38\x30\x31\x20\x2d\ \x32\x2e\x36\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x37\x2e\x34\ \x20\x31\x34\x37\x2e\x36\x30\x31\x43\x2d\x31\x32\x2e\x32\x20\x31\ \x34\x38\x2e\x38\x30\x31\x20\x2d\x32\x33\x20\x31\x34\x38\x2e\x38\ \x30\x31\x20\x2d\x32\x33\x20\x31\x34\x38\x2e\x38\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x33\x2e\x34\x38\x20\x31\x34\x31\x2e\x34\ \x30\x33\x43\x2d\x33\x2e\x34\x38\x20\x31\x34\x31\x2e\x34\x30\x33\ \x20\x2d\x31\x32\x2e\x30\x36\x32\x20\x31\x34\x30\x2e\x35\x37\x34\ \x20\x2d\x33\x2e\x34\x36\x31\x20\x31\x33\x39\x2e\x37\x35\x35\x43\ \x2d\x33\x2e\x34\x36\x31\x20\x31\x33\x39\x2e\x37\x35\x35\x20\x35\ \x2e\x33\x35\x35\x20\x31\x33\x36\x2e\x33\x33\x31\x20\x37\x2e\x34\ \x30\x33\x20\x31\x33\x33\x2e\x36\x36\x38\x43\x37\x2e\x34\x30\x33\ \x20\x31\x33\x33\x2e\x36\x36\x38\x20\x31\x34\x2e\x33\x36\x37\x20\ \x31\x32\x38\x2e\x39\x35\x37\x20\x31\x35\x2e\x38\x20\x31\x32\x38\ \x2e\x37\x35\x33\x43\x31\x37\x2e\x32\x33\x34\x20\x31\x32\x38\x2e\ \x35\x34\x38\x20\x33\x31\x2e\x31\x39\x34\x20\x31\x32\x34\x2e\x38\ \x36\x31\x20\x33\x31\x2e\x33\x39\x39\x20\x31\x32\x33\x2e\x36\x33\ \x33\x43\x33\x31\x2e\x36\x30\x34\x20\x31\x32\x32\x2e\x34\x30\x34\ \x20\x36\x35\x2e\x36\x37\x20\x31\x30\x39\x2e\x38\x32\x33\x20\x37\ \x30\x2e\x30\x39\x20\x31\x31\x33\x2e\x30\x31\x33\x43\x37\x33\x2e\ \x30\x30\x31\x20\x31\x31\x35\x2e\x31\x31\x34\x20\x36\x33\x2e\x31\ \x20\x31\x31\x33\x2e\x34\x33\x37\x20\x35\x33\x2e\x34\x36\x36\x20\ \x31\x31\x37\x2e\x38\x34\x37\x43\x35\x32\x2e\x31\x31\x31\x20\x31\ \x31\x38\x2e\x34\x36\x37\x20\x31\x38\x2e\x32\x35\x38\x20\x31\x33\ \x33\x2e\x30\x35\x34\x20\x31\x34\x2e\x39\x38\x31\x20\x31\x33\x33\ \x2e\x36\x36\x38\x43\x31\x31\x2e\x37\x30\x34\x20\x31\x33\x34\x2e\ \x32\x38\x33\x20\x35\x2e\x37\x36\x35\x20\x31\x33\x38\x2e\x31\x37\ \x34\x20\x33\x2e\x33\x30\x37\x20\x31\x33\x38\x2e\x37\x38\x38\x43\ \x30\x2e\x38\x35\x20\x31\x33\x39\x2e\x34\x30\x33\x20\x2d\x33\x2e\ \x34\x38\x20\x31\x34\x31\x2e\x34\x30\x33\x20\x2d\x33\x2e\x34\x38\ \x20\x31\x34\x31\x2e\x34\x30\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x31\x31\x2e\x34\x20\x31\x34\x33\x2e\x36\x30\x31\x43\x2d\x31\x31\ \x2e\x34\x20\x31\x34\x33\x2e\x36\x30\x31\x20\x2d\x36\x2e\x32\x20\ \x31\x34\x33\x2e\x32\x30\x31\x20\x2d\x37\x2e\x34\x20\x31\x34\x34\ \x2e\x38\x30\x31\x43\x2d\x38\x2e\x36\x20\x31\x34\x36\x2e\x34\x30\ \x31\x20\x2d\x31\x31\x20\x31\x34\x35\x2e\x36\x30\x31\x20\x2d\x31\ \x31\x20\x31\x34\x35\x2e\x36\x30\x31\x4c\x2d\x31\x31\x2e\x34\x20\ \x31\x34\x33\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\ \x38\x2e\x36\x20\x31\x34\x35\x2e\x32\x30\x31\x43\x2d\x31\x38\x2e\ \x36\x20\x31\x34\x35\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x34\x20\ \x31\x34\x34\x2e\x38\x30\x31\x20\x2d\x31\x34\x2e\x36\x20\x31\x34\ \x36\x2e\x34\x30\x31\x43\x2d\x31\x35\x2e\x38\x20\x31\x34\x38\x2e\ \x30\x30\x31\x20\x2d\x31\x38\x2e\x32\x20\x31\x34\x37\x2e\x32\x30\ \x31\x20\x2d\x31\x38\x2e\x32\x20\x31\x34\x37\x2e\x32\x30\x31\x4c\ \x2d\x31\x38\x2e\x36\x20\x31\x34\x35\x2e\x32\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x32\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x43\ \x2d\x32\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\ \x38\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x32\x35\x20\x31\x34\ \x38\x2e\x30\x30\x31\x43\x2d\x32\x36\x2e\x32\x20\x31\x34\x39\x2e\ \x36\x30\x31\x20\x2d\x32\x38\x2e\x36\x20\x31\x34\x38\x2e\x38\x30\ \x31\x20\x2d\x32\x38\x2e\x36\x20\x31\x34\x38\x2e\x38\x30\x31\x4c\ \x2d\x32\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x33\x36\x2e\x36\x20\x31\x34\x37\x2e\x36\x30\x31\x43\ \x2d\x33\x36\x2e\x36\x20\x31\x34\x37\x2e\x36\x30\x31\x20\x2d\x33\ \x31\x2e\x34\x20\x31\x34\x37\x2e\x32\x30\x31\x20\x2d\x33\x32\x2e\ \x36\x20\x31\x34\x38\x2e\x38\x30\x31\x43\x2d\x33\x33\x2e\x38\x20\ \x31\x35\x30\x2e\x34\x30\x31\x20\x2d\x33\x36\x2e\x32\x20\x31\x34\ \x39\x2e\x36\x30\x31\x20\x2d\x33\x36\x2e\x32\x20\x31\x34\x39\x2e\ \x36\x30\x31\x4c\x2d\x33\x36\x2e\x36\x20\x31\x34\x37\x2e\x36\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x38\x20\x31\x30\x38\x2e\ \x30\x30\x31\x43\x31\x2e\x38\x20\x31\x30\x38\x2e\x30\x30\x31\x20\ \x36\x2e\x32\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x35\x20\x31\x30\ \x39\x2e\x36\x30\x31\x43\x33\x2e\x38\x20\x31\x31\x31\x2e\x32\x30\ \x31\x20\x30\x2e\x36\x20\x31\x31\x30\x2e\x38\x30\x31\x20\x30\x2e\ \x36\x20\x31\x31\x30\x2e\x38\x30\x31\x4c\x31\x2e\x38\x20\x31\x30\ \x38\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x38\x2e\x32\ \x20\x31\x31\x33\x2e\x36\x30\x31\x43\x2d\x38\x2e\x32\x20\x31\x31\ \x33\x2e\x36\x30\x31\x20\x2d\x31\x2e\x36\x39\x34\x20\x31\x31\x31\ \x2e\x34\x36\x20\x2d\x34\x2e\x32\x20\x31\x31\x34\x2e\x38\x30\x31\ \x43\x2d\x35\x2e\x34\x20\x31\x31\x36\x2e\x34\x30\x31\x20\x2d\x37\ \x2e\x38\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x2d\x37\x2e\x38\x20\ \x31\x31\x35\x2e\x36\x30\x31\x4c\x2d\x38\x2e\x32\x20\x31\x31\x33\ \x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x39\x2e\x34\ \x20\x31\x31\x38\x2e\x34\x30\x31\x43\x2d\x31\x39\x2e\x34\x20\x31\ \x31\x38\x2e\x34\x30\x31\x20\x2d\x31\x34\x2e\x32\x20\x31\x31\x38\ \x2e\x30\x30\x31\x20\x2d\x31\x35\x2e\x34\x20\x31\x31\x39\x2e\x36\ \x30\x31\x43\x2d\x31\x36\x2e\x36\x20\x31\x32\x31\x2e\x32\x30\x31\ \x20\x2d\x31\x39\x20\x31\x32\x30\x2e\x34\x30\x31\x20\x2d\x31\x39\ \x20\x31\x32\x30\x2e\x34\x30\x31\x4c\x2d\x31\x39\x2e\x34\x20\x31\ \x31\x38\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x37\ \x20\x31\x32\x34\x2e\x34\x30\x31\x43\x2d\x32\x37\x20\x31\x32\x34\ \x2e\x34\x30\x31\x20\x2d\x32\x31\x2e\x38\x20\x31\x32\x34\x2e\x30\ \x30\x31\x20\x2d\x32\x33\x20\x31\x32\x35\x2e\x36\x30\x31\x43\x2d\ \x32\x34\x2e\x32\x20\x31\x32\x37\x2e\x32\x30\x31\x20\x2d\x32\x36\ \x2e\x36\x20\x31\x32\x36\x2e\x34\x30\x31\x20\x2d\x32\x36\x2e\x36\ \x20\x31\x32\x36\x2e\x34\x30\x31\x4c\x2d\x32\x37\x20\x31\x32\x34\ \x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x33\x2e\x38\ \x20\x31\x32\x39\x2e\x32\x30\x31\x43\x2d\x33\x33\x2e\x38\x20\x31\ \x32\x39\x2e\x32\x30\x31\x20\x2d\x32\x38\x2e\x36\x20\x31\x32\x38\ \x2e\x38\x30\x31\x20\x2d\x32\x39\x2e\x38\x20\x31\x33\x30\x2e\x34\ \x30\x31\x43\x2d\x33\x31\x20\x31\x33\x32\x2e\x30\x30\x31\x20\x2d\ \x33\x33\x2e\x34\x20\x31\x33\x31\x2e\x32\x30\x31\x20\x2d\x33\x33\ \x2e\x34\x20\x31\x33\x31\x2e\x32\x30\x31\x4c\x2d\x33\x33\x2e\x38\ \x20\x31\x32\x39\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x35\ \x2e\x32\x38\x32\x20\x31\x33\x35\x2e\x35\x39\x38\x43\x35\x2e\x32\ \x38\x32\x20\x31\x33\x35\x2e\x35\x39\x38\x20\x31\x32\x2e\x32\x30\ \x33\x20\x31\x33\x35\x2e\x30\x36\x36\x20\x31\x30\x2e\x36\x30\x36\ \x20\x31\x33\x37\x2e\x31\x39\x35\x43\x39\x2e\x30\x30\x39\x20\x31\ \x33\x39\x2e\x33\x32\x35\x20\x35\x2e\x38\x31\x34\x20\x31\x33\x38\ \x2e\x32\x36\x20\x35\x2e\x38\x31\x34\x20\x31\x33\x38\x2e\x32\x36\ \x4c\x35\x2e\x32\x38\x32\x20\x31\x33\x35\x2e\x35\x39\x38\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x31\x35\x2e\x36\x38\x32\x20\x31\x33\x30\x2e\ \x37\x39\x38\x43\x31\x35\x2e\x36\x38\x32\x20\x31\x33\x30\x2e\x37\ \x39\x38\x20\x32\x32\x2e\x36\x30\x33\x20\x31\x33\x30\x2e\x32\x36\ \x36\x20\x32\x31\x2e\x30\x30\x36\x20\x31\x33\x32\x2e\x33\x39\x35\ \x43\x31\x39\x2e\x34\x30\x39\x20\x31\x33\x34\x2e\x35\x32\x35\x20\ \x31\x36\x2e\x32\x31\x34\x20\x31\x33\x33\x2e\x34\x36\x20\x31\x36\ \x2e\x32\x31\x34\x20\x31\x33\x33\x2e\x34\x36\x4c\x31\x35\x2e\x36\ \x38\x32\x20\x31\x33\x30\x2e\x37\x39\x38\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x32\x36\x2e\x34\x38\x32\x20\x31\x32\x36\x2e\x33\x39\x38\x43\ \x32\x36\x2e\x34\x38\x32\x20\x31\x32\x36\x2e\x33\x39\x38\x20\x33\ \x33\x2e\x34\x30\x33\x20\x31\x32\x35\x2e\x38\x36\x36\x20\x33\x31\ \x2e\x38\x30\x36\x20\x31\x32\x37\x2e\x39\x39\x35\x43\x33\x30\x2e\ \x32\x30\x39\x20\x31\x33\x30\x2e\x31\x32\x35\x20\x32\x37\x2e\x30\ \x31\x34\x20\x31\x32\x39\x2e\x30\x36\x20\x32\x37\x2e\x30\x31\x34\ \x20\x31\x32\x39\x2e\x30\x36\x4c\x32\x36\x2e\x34\x38\x32\x20\x31\ \x32\x36\x2e\x33\x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x36\x2e\ \x38\x38\x32\x20\x31\x32\x31\x2e\x35\x39\x38\x43\x33\x36\x2e\x38\ \x38\x32\x20\x31\x32\x31\x2e\x35\x39\x38\x20\x34\x33\x2e\x38\x30\ \x33\x20\x31\x32\x31\x2e\x30\x36\x36\x20\x34\x32\x2e\x32\x30\x36\ \x20\x31\x32\x33\x2e\x31\x39\x35\x43\x34\x30\x2e\x36\x30\x39\x20\ \x31\x32\x35\x2e\x33\x32\x35\x20\x33\x37\x2e\x34\x31\x34\x20\x31\ \x32\x34\x2e\x32\x36\x20\x33\x37\x2e\x34\x31\x34\x20\x31\x32\x34\ \x2e\x32\x36\x4c\x33\x36\x2e\x38\x38\x32\x20\x31\x32\x31\x2e\x35\ \x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x2e\x32\x38\x32\x20\x31\ \x30\x33\x2e\x35\x39\x38\x43\x39\x2e\x32\x38\x32\x20\x31\x30\x33\ \x2e\x35\x39\x38\x20\x31\x36\x2e\x32\x30\x33\x20\x31\x30\x33\x2e\ \x30\x36\x36\x20\x31\x34\x2e\x36\x30\x36\x20\x31\x30\x35\x2e\x31\ \x39\x35\x43\x31\x33\x2e\x30\x30\x39\x20\x31\x30\x37\x2e\x33\x32\ \x35\x20\x39\x2e\x30\x31\x34\x20\x31\x30\x37\x2e\x30\x36\x20\x39\ \x2e\x30\x31\x34\x20\x31\x30\x37\x2e\x30\x36\x4c\x39\x2e\x32\x38\ \x32\x20\x31\x30\x33\x2e\x35\x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x31\x39\x2e\x32\x38\x32\x20\x31\x30\x30\x2e\x33\x39\x38\x43\x31\ \x39\x2e\x32\x38\x32\x20\x31\x30\x30\x2e\x33\x39\x38\x20\x32\x36\ \x2e\x32\x30\x33\x20\x39\x39\x2e\x38\x36\x36\x20\x32\x34\x2e\x36\ \x30\x36\x20\x31\x30\x31\x2e\x39\x39\x35\x43\x32\x33\x2e\x30\x30\ \x39\x20\x31\x30\x34\x2e\x31\x32\x35\x20\x31\x38\x2e\x36\x31\x34\ \x20\x31\x30\x33\x2e\x38\x36\x20\x31\x38\x2e\x36\x31\x34\x20\x31\ \x30\x33\x2e\x38\x36\x4c\x31\x39\x2e\x32\x38\x32\x20\x31\x30\x30\ \x2e\x33\x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x2e\x34\x20\ \x31\x34\x30\x2e\x34\x30\x31\x43\x2d\x33\x2e\x34\x20\x31\x34\x30\ \x2e\x34\x30\x31\x20\x31\x2e\x38\x20\x31\x34\x30\x2e\x30\x30\x31\ \x20\x30\x2e\x36\x20\x31\x34\x31\x2e\x36\x30\x31\x43\x2d\x30\x2e\ \x36\x20\x31\x34\x33\x2e\x32\x30\x31\x20\x2d\x33\x20\x31\x34\x32\ \x2e\x34\x30\x31\x20\x2d\x33\x20\x31\x34\x32\x2e\x34\x30\x31\x4c\ \x2d\x33\x2e\x34\x20\x31\x34\x30\x2e\x34\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\ \x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x37\x36\x2e\x36\x20\x34\x31\x2e\x32\x43\x2d\x37\ \x36\x2e\x36\x20\x34\x31\x2e\x32\x20\x2d\x38\x31\x20\x35\x30\x20\ \x2d\x38\x31\x2e\x34\x20\x35\x33\x2e\x32\x43\x2d\x38\x31\x2e\x34\ \x20\x35\x33\x2e\x32\x20\x2d\x38\x30\x2e\x36\x20\x34\x34\x2e\x34\ \x20\x2d\x37\x39\x2e\x34\x20\x34\x32\x2e\x34\x43\x2d\x37\x38\x2e\ \x32\x20\x34\x30\x2e\x34\x20\x2d\x37\x36\x2e\x36\x20\x34\x31\x2e\ \x32\x20\x2d\x37\x36\x2e\x36\x20\x34\x31\x2e\x32\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\ \x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x39\x35\x20\x35\x35\x2e\x32\x43\x2d\x39\x35\x20\ \x35\x35\x2e\x32\x20\x2d\x39\x38\x2e\x32\x20\x36\x39\x2e\x36\x20\ \x2d\x39\x37\x2e\x38\x20\x37\x32\x2e\x34\x43\x2d\x39\x37\x2e\x38\ \x20\x37\x32\x2e\x34\x20\x2d\x39\x39\x20\x36\x30\x2e\x38\x20\x2d\ \x39\x38\x2e\x36\x20\x35\x39\x2e\x36\x43\x2d\x39\x38\x2e\x32\x20\ \x35\x38\x2e\x34\x20\x2d\x39\x35\x20\x35\x35\x2e\x32\x20\x2d\x39\ \x35\x20\x35\x35\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x34\ \x2e\x32\x20\x2d\x31\x39\x2e\x34\x4c\x2d\x37\x34\x2e\x34\x20\x2d\ \x31\x36\x2e\x32\x4c\x2d\x37\x36\x2e\x36\x20\x2d\x31\x36\x43\x2d\ \x37\x36\x2e\x36\x20\x2d\x31\x36\x20\x2d\x36\x32\x2e\x34\x20\x2d\ \x33\x2e\x34\x20\x2d\x36\x31\x2e\x38\x20\x34\x2e\x32\x43\x2d\x36\ \x31\x2e\x38\x20\x34\x2e\x32\x20\x2d\x36\x31\x20\x2d\x34\x20\x2d\ \x37\x34\x2e\x32\x20\x2d\x31\x39\x2e\x34\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x37\x30\x2e\x32\x31\x36\x20\x2d\x31\x38\x2e\x31\x33\x35\ \x43\x2d\x37\x30\x2e\x36\x34\x37\x20\x2d\x31\x38\x2e\x35\x35\x31\ \x20\x2d\x37\x30\x2e\x34\x32\x38\x20\x2d\x31\x39\x2e\x32\x39\x36\ \x20\x2d\x37\x30\x2e\x38\x33\x36\x20\x2d\x31\x39\x2e\x35\x35\x36\ \x43\x2d\x37\x31\x2e\x36\x34\x35\x20\x2d\x32\x30\x2e\x30\x37\x32\ \x20\x2d\x36\x39\x2e\x35\x33\x38\x20\x2d\x32\x30\x2e\x31\x32\x39\ \x20\x2d\x36\x39\x2e\x37\x36\x36\x20\x2d\x32\x30\x2e\x38\x34\x35\ \x43\x2d\x37\x30\x2e\x31\x34\x39\x20\x2d\x32\x32\x2e\x30\x35\x31\ \x20\x2d\x36\x39\x2e\x39\x36\x32\x20\x2d\x32\x32\x2e\x30\x37\x32\ \x20\x2d\x37\x30\x2e\x30\x38\x34\x20\x2d\x32\x33\x2e\x33\x34\x38\ \x43\x2d\x37\x30\x2e\x31\x34\x31\x20\x2d\x32\x33\x2e\x39\x34\x36\ \x20\x2d\x36\x39\x2e\x35\x35\x33\x20\x2d\x32\x35\x2e\x34\x38\x36\ \x20\x2d\x36\x39\x2e\x31\x36\x38\x20\x2d\x32\x35\x2e\x39\x32\x36\ \x43\x2d\x36\x37\x2e\x37\x32\x32\x20\x2d\x32\x37\x2e\x35\x37\x38\ \x20\x2d\x36\x39\x2e\x30\x34\x36\x20\x2d\x33\x30\x2e\x35\x31\x20\ \x2d\x36\x37\x2e\x34\x30\x36\x20\x2d\x33\x32\x2e\x30\x36\x31\x43\ \x2d\x36\x37\x2e\x31\x30\x32\x20\x2d\x33\x32\x2e\x33\x35\x20\x2d\ \x36\x36\x2e\x37\x32\x36\x20\x2d\x33\x32\x2e\x39\x30\x32\x20\x2d\ \x36\x36\x2e\x34\x34\x31\x20\x2d\x33\x33\x2e\x33\x32\x43\x2d\x36\ \x35\x2e\x37\x38\x32\x20\x2d\x33\x34\x2e\x32\x38\x33\x20\x2d\x36\ \x34\x2e\x35\x39\x38\x20\x2d\x33\x34\x2e\x37\x37\x31\x20\x2d\x36\ \x33\x2e\x36\x34\x38\x20\x2d\x33\x35\x2e\x35\x39\x39\x43\x2d\x36\ \x33\x2e\x33\x33\x20\x2d\x33\x35\x2e\x38\x37\x35\x20\x2d\x36\x33\ \x2e\x35\x33\x31\x20\x2d\x33\x36\x2e\x37\x30\x32\x20\x2d\x36\x32\ \x2e\x39\x36\x32\x20\x2d\x33\x36\x2e\x36\x31\x43\x2d\x36\x32\x2e\ \x32\x34\x38\x20\x2d\x33\x36\x2e\x34\x39\x35\x20\x2d\x36\x31\x2e\ \x30\x30\x37\x20\x2d\x33\x36\x2e\x36\x32\x35\x20\x2d\x36\x31\x2e\ \x30\x35\x32\x20\x2d\x33\x35\x2e\x37\x38\x34\x43\x2d\x36\x31\x2e\ \x31\x36\x35\x20\x2d\x33\x33\x2e\x36\x36\x34\x20\x2d\x36\x32\x2e\ \x34\x39\x34\x20\x2d\x33\x31\x2e\x39\x34\x34\x20\x2d\x36\x33\x2e\ \x37\x37\x34\x20\x2d\x33\x30\x2e\x32\x37\x36\x43\x2d\x36\x33\x2e\ \x33\x32\x33\x20\x2d\x32\x39\x2e\x35\x37\x32\x20\x2d\x36\x33\x2e\ \x37\x38\x31\x20\x2d\x32\x38\x2e\x39\x33\x37\x20\x2d\x36\x34\x2e\ \x30\x36\x35\x20\x2d\x32\x38\x2e\x33\x38\x43\x2d\x36\x35\x2e\x34\ \x20\x2d\x32\x35\x2e\x37\x36\x20\x2d\x36\x35\x2e\x32\x31\x31\x20\ \x2d\x32\x32\x2e\x39\x31\x39\x20\x2d\x36\x35\x2e\x33\x38\x35\x20\ \x2d\x32\x30\x2e\x30\x37\x39\x43\x2d\x36\x35\x2e\x33\x39\x20\x2d\ \x31\x39\x2e\x39\x39\x34\x20\x2d\x36\x35\x2e\x36\x39\x37\x20\x2d\ \x31\x39\x2e\x39\x31\x36\x20\x2d\x36\x35\x2e\x36\x38\x39\x20\x2d\ \x31\x39\x2e\x38\x36\x33\x43\x2d\x36\x35\x2e\x33\x33\x36\x20\x2d\ \x31\x37\x2e\x35\x32\x38\x20\x2d\x36\x34\x2e\x37\x35\x32\x20\x2d\ \x31\x35\x2e\x33\x32\x39\x20\x2d\x36\x33\x2e\x38\x37\x33\x20\x2d\ \x31\x33\x2e\x31\x43\x2d\x36\x33\x2e\x35\x30\x37\x20\x2d\x31\x32\ \x2e\x31\x37\x20\x2d\x36\x33\x2e\x30\x33\x36\x20\x2d\x31\x31\x2e\ \x32\x37\x35\x20\x2d\x36\x32\x2e\x38\x38\x36\x20\x2d\x31\x30\x2e\ \x33\x34\x38\x43\x2d\x36\x32\x2e\x37\x37\x35\x20\x2d\x39\x2e\x36\ \x36\x32\x20\x2d\x36\x32\x2e\x36\x37\x32\x20\x2d\x38\x2e\x38\x32\ \x39\x20\x2d\x36\x33\x2e\x30\x38\x20\x2d\x38\x2e\x31\x32\x34\x43\ \x2d\x36\x31\x2e\x30\x34\x35\x20\x2d\x35\x2e\x32\x33\x34\x20\x2d\ \x36\x32\x2e\x33\x35\x34\x20\x2d\x32\x2e\x35\x38\x33\x20\x2d\x36\ \x31\x2e\x31\x38\x35\x20\x30\x2e\x39\x34\x38\x43\x2d\x36\x30\x2e\ \x39\x37\x38\x20\x31\x2e\x35\x37\x33\x20\x2d\x35\x39\x2e\x32\x38\ \x36\x20\x33\x2e\x34\x38\x37\x20\x2d\x35\x39\x2e\x37\x34\x39\x20\ \x33\x2e\x33\x32\x36\x43\x2d\x36\x32\x2e\x32\x36\x32\x20\x32\x2e\ \x34\x35\x35\x20\x2d\x36\x32\x2e\x33\x37\x34\x20\x32\x2e\x30\x35\ \x37\x20\x2d\x36\x32\x2e\x35\x35\x31\x20\x31\x2e\x33\x30\x34\x43\ \x2d\x36\x32\x2e\x36\x39\x37\x20\x30\x2e\x36\x38\x31\x20\x2d\x36\ \x33\x2e\x30\x32\x37\x20\x2d\x30\x2e\x36\x39\x36\x20\x2d\x36\x33\ \x2e\x32\x36\x34\x20\x2d\x31\x2e\x32\x39\x38\x43\x2d\x36\x33\x2e\ \x33\x32\x38\x20\x2d\x31\x2e\x34\x36\x32\x20\x2d\x36\x33\x2e\x34\ \x39\x39\x20\x2d\x33\x2e\x33\x34\x36\x20\x2d\x36\x33\x2e\x35\x37\ \x37\x20\x2d\x33\x2e\x34\x36\x38\x43\x2d\x36\x35\x2e\x30\x39\x20\ \x2d\x35\x2e\x38\x35\x20\x2d\x36\x33\x2e\x37\x33\x32\x20\x2d\x35\ \x2e\x36\x37\x34\x20\x2d\x36\x35\x2e\x31\x30\x32\x20\x2d\x38\x2e\ \x30\x33\x32\x43\x2d\x36\x36\x2e\x35\x33\x20\x2d\x38\x2e\x37\x31\ \x32\x20\x2d\x36\x37\x2e\x34\x39\x36\x20\x2d\x39\x2e\x38\x31\x36\ \x20\x2d\x36\x38\x2e\x36\x31\x39\x20\x2d\x31\x30\x2e\x39\x37\x38\ \x43\x2d\x36\x38\x2e\x38\x31\x37\x20\x2d\x31\x31\x2e\x31\x38\x32\ \x20\x2d\x36\x37\x2e\x36\x37\x34\x20\x2d\x31\x31\x2e\x39\x30\x36\ \x20\x2d\x36\x37\x2e\x38\x35\x35\x20\x2d\x31\x32\x2e\x31\x31\x39\ \x43\x2d\x36\x38\x2e\x39\x34\x37\x20\x2d\x31\x33\x2e\x34\x30\x38\ \x20\x2d\x37\x30\x2e\x31\x20\x2d\x31\x34\x2e\x31\x37\x35\x20\x2d\ \x36\x39\x2e\x37\x36\x34\x20\x2d\x31\x35\x2e\x36\x36\x38\x43\x2d\ \x36\x39\x2e\x36\x30\x39\x20\x2d\x31\x36\x2e\x33\x35\x38\x20\x2d\ \x36\x39\x2e\x34\x37\x32\x20\x2d\x31\x37\x2e\x34\x31\x35\x20\x2d\ \x37\x30\x2e\x32\x31\x36\x20\x2d\x31\x38\x2e\x31\x33\x35\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x37\x33\x2e\x38\x20\x2d\x31\x36\x2e\x34\ \x43\x2d\x37\x33\x2e\x38\x20\x2d\x31\x36\x2e\x34\x20\x2d\x37\x33\ \x2e\x34\x20\x2d\x39\x2e\x36\x20\x2d\x37\x31\x20\x2d\x38\x43\x2d\ \x36\x38\x2e\x36\x20\x2d\x36\x2e\x34\x20\x2d\x36\x39\x2e\x38\x20\ \x2d\x37\x2e\x32\x20\x2d\x37\x33\x20\x2d\x38\x2e\x34\x43\x2d\x37\ \x36\x2e\x32\x20\x2d\x39\x2e\x36\x20\x2d\x37\x35\x20\x2d\x31\x30\ \x2e\x34\x20\x2d\x37\x35\x20\x2d\x31\x30\x2e\x34\x43\x2d\x37\x35\ \x20\x2d\x31\x30\x2e\x34\x20\x2d\x37\x37\x2e\x38\x20\x2d\x31\x30\ \x20\x2d\x37\x35\x2e\x34\x20\x2d\x38\x43\x2d\x37\x33\x20\x2d\x36\ \x20\x2d\x36\x39\x2e\x34\x20\x2d\x33\x2e\x36\x20\x2d\x37\x31\x20\ \x2d\x33\x2e\x36\x43\x2d\x37\x32\x2e\x36\x20\x2d\x33\x2e\x36\x20\ \x2d\x38\x30\x2e\x32\x20\x2d\x37\x2e\x36\x20\x2d\x38\x30\x2e\x32\ \x20\x2d\x31\x30\x2e\x34\x43\x2d\x38\x30\x2e\x32\x20\x2d\x31\x33\ \x2e\x32\x20\x2d\x38\x31\x2e\x32\x20\x2d\x31\x37\x2e\x33\x20\x2d\ \x38\x31\x2e\x32\x20\x2d\x31\x37\x2e\x33\x43\x2d\x38\x31\x2e\x32\ \x20\x2d\x31\x37\x2e\x33\x20\x2d\x38\x30\x2e\x31\x20\x2d\x31\x38\ \x2e\x31\x20\x2d\x37\x35\x2e\x33\x20\x2d\x31\x38\x43\x2d\x37\x35\ \x2e\x33\x20\x2d\x31\x38\x20\x2d\x37\x33\x2e\x39\x20\x2d\x31\x37\ \x2e\x33\x20\x2d\x37\x33\x2e\x38\x20\x2d\x31\x36\x2e\x34\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x37\x34\x2e\x36\x20\x32\x2e\x32\x43\ \x2d\x37\x34\x2e\x36\x20\x32\x2e\x32\x20\x2d\x38\x33\x2e\x31\x32\ \x20\x2d\x30\x2e\x35\x39\x31\x20\x2d\x31\x30\x31\x2e\x36\x20\x32\ \x2e\x38\x43\x2d\x31\x30\x31\x2e\x36\x20\x32\x2e\x38\x20\x2d\x39\ \x32\x2e\x35\x36\x39\x20\x30\x2e\x37\x32\x32\x20\x2d\x37\x33\x2e\ \x38\x20\x33\x43\x2d\x36\x33\x2e\x35\x20\x34\x2e\x32\x35\x20\x2d\ \x37\x34\x2e\x36\x20\x32\x2e\x32\x20\x2d\x37\x34\x2e\x36\x20\x32\ \x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x32\x2e\x35\x30\ \x32\x20\x32\x2e\x31\x32\x39\x43\x2d\x37\x32\x2e\x35\x30\x32\x20\ \x32\x2e\x31\x32\x39\x20\x2d\x38\x30\x2e\x37\x34\x38\x20\x2d\x31\ \x2e\x33\x38\x39\x20\x2d\x39\x39\x2e\x34\x35\x33\x20\x30\x2e\x33\ \x39\x32\x43\x2d\x39\x39\x2e\x34\x35\x33\x20\x30\x2e\x33\x39\x32\ \x20\x2d\x39\x30\x2e\x32\x37\x35\x20\x2d\x30\x2e\x38\x39\x37\x20\ \x2d\x37\x31\x2e\x37\x37\x34\x20\x32\x2e\x39\x39\x35\x43\x2d\x36\ \x31\x2e\x36\x32\x20\x35\x2e\x31\x33\x31\x20\x2d\x37\x32\x2e\x35\ \x30\x32\x20\x32\x2e\x31\x32\x39\x20\x2d\x37\x32\x2e\x35\x30\x32\ \x20\x32\x2e\x31\x32\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\ \x30\x2e\x37\x31\x34\x20\x32\x2e\x32\x32\x32\x43\x2d\x37\x30\x2e\ \x37\x31\x34\x20\x32\x2e\x32\x32\x32\x20\x2d\x37\x38\x2e\x36\x37\ \x36\x20\x2d\x31\x2e\x38\x39\x39\x20\x2d\x39\x37\x2e\x34\x36\x31\ \x20\x2d\x31\x2e\x35\x31\x34\x43\x2d\x39\x37\x2e\x34\x36\x31\x20\ \x2d\x31\x2e\x35\x31\x34\x20\x2d\x38\x38\x2e\x32\x31\x33\x20\x2d\ \x32\x2e\x31\x31\x38\x20\x2d\x37\x30\x2e\x30\x35\x32\x20\x33\x2e\ \x31\x34\x43\x2d\x36\x30\x2e\x30\x38\x36\x20\x36\x2e\x30\x32\x35\ \x20\x2d\x37\x30\x2e\x37\x31\x34\x20\x32\x2e\x32\x32\x32\x20\x2d\ \x37\x30\x2e\x37\x31\x34\x20\x32\x2e\x32\x32\x32\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\x34\ \x35\x43\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\x34\x35\x20\ \x2d\x37\x36\x2e\x32\x36\x38\x20\x2d\x31\x2e\x38\x36\x32\x20\x2d\ \x39\x33\x2e\x31\x34\x32\x20\x2d\x32\x2e\x39\x36\x43\x2d\x39\x33\ \x2e\x31\x34\x32\x20\x2d\x32\x2e\x39\x36\x20\x2d\x38\x34\x2e\x38\ \x30\x33\x20\x2d\x32\x2e\x37\x39\x20\x2d\x36\x38\x2e\x39\x32\x32\ \x20\x33\x2e\x33\x31\x39\x43\x2d\x36\x30\x2e\x32\x30\x36\x20\x36\ \x2e\x36\x37\x32\x20\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\ \x34\x35\x20\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\x34\x35\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\x2e\x38\x34\x20\x31\x32\ \x2e\x39\x36\x31\x43\x34\x35\x2e\x38\x34\x20\x31\x32\x2e\x39\x36\ \x31\x20\x34\x34\x2e\x39\x31\x20\x31\x33\x2e\x36\x30\x35\x20\x34\ \x35\x2e\x31\x32\x34\x20\x31\x32\x2e\x34\x32\x34\x43\x34\x35\x2e\ \x33\x33\x39\x20\x31\x31\x2e\x32\x34\x33\x20\x37\x33\x2e\x35\x34\ \x37\x20\x2d\x31\x2e\x39\x32\x37\x20\x37\x37\x2e\x31\x36\x31\x20\ \x2d\x31\x2e\x36\x37\x37\x43\x37\x37\x2e\x31\x36\x31\x20\x2d\x31\ \x2e\x36\x37\x37\x20\x34\x36\x2e\x39\x31\x33\x20\x31\x31\x2e\x35\ \x32\x39\x20\x34\x35\x2e\x38\x34\x20\x31\x32\x2e\x39\x36\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x34\x32\x2e\x34\x34\x36\x20\x31\x33\ \x2e\x36\x43\x34\x32\x2e\x34\x34\x36\x20\x31\x33\x2e\x36\x20\x34\ \x31\x2e\x35\x37\x20\x31\x34\x2e\x33\x31\x35\x20\x34\x31\x2e\x36\ \x39\x31\x20\x31\x33\x2e\x31\x32\x31\x43\x34\x31\x2e\x38\x31\x32\ \x20\x31\x31\x2e\x39\x32\x37\x20\x36\x38\x2e\x38\x39\x39\x20\x2d\ \x33\x2e\x34\x31\x38\x20\x37\x32\x2e\x35\x32\x31\x20\x2d\x33\x2e\ \x34\x35\x32\x43\x37\x32\x2e\x35\x32\x31\x20\x2d\x33\x2e\x34\x35\ \x32\x20\x34\x33\x2e\x34\x30\x34\x20\x31\x32\x2e\x30\x38\x39\x20\ \x34\x32\x2e\x34\x34\x36\x20\x31\x33\x2e\x36\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x33\x39\x2e\x31\x36\x20\x31\x34\x2e\x39\x37\x35\x43\ \x33\x39\x2e\x31\x36\x20\x31\x34\x2e\x39\x37\x35\x20\x33\x38\x2e\ \x33\x33\x32\x20\x31\x35\x2e\x37\x34\x37\x20\x33\x38\x2e\x33\x37\ \x34\x20\x31\x34\x2e\x35\x34\x37\x43\x33\x38\x2e\x34\x31\x36\x20\ \x31\x33\x2e\x33\x34\x38\x20\x35\x38\x2e\x32\x33\x33\x20\x2d\x32\ \x2e\x31\x34\x39\x20\x36\x38\x2e\x30\x34\x35\x20\x2d\x34\x2e\x30\ \x32\x33\x43\x36\x38\x2e\x30\x34\x35\x20\x2d\x34\x2e\x30\x32\x33\ \x20\x35\x30\x2e\x30\x31\x35\x20\x34\x2e\x31\x30\x34\x20\x33\x39\ \x2e\x31\x36\x20\x31\x34\x2e\x39\x37\x35\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x33\x36\x2e\x32\x38\x34\x20\x31\x36\x2e\x38\x33\x38\x43\ \x33\x36\x2e\x32\x38\x34\x20\x31\x36\x2e\x38\x33\x38\x20\x33\x35\ \x2e\x35\x33\x39\x20\x31\x37\x2e\x35\x33\x32\x20\x33\x35\x2e\x35\ \x37\x37\x20\x31\x36\x2e\x34\x35\x33\x43\x33\x35\x2e\x36\x31\x35\ \x20\x31\x35\x2e\x33\x37\x33\x20\x35\x33\x2e\x34\x34\x39\x20\x31\ \x2e\x34\x32\x36\x20\x36\x32\x2e\x32\x38\x20\x2d\x30\x2e\x32\x36\ \x43\x36\x32\x2e\x32\x38\x20\x2d\x30\x2e\x32\x36\x20\x34\x36\x2e\ \x30\x35\x34\x20\x37\x2e\x30\x35\x34\x20\x33\x36\x2e\x32\x38\x34\ \x20\x31\x36\x2e\x38\x33\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x2e\ \x36\x20\x31\x36\x34\x2e\x38\x30\x31\x43\x34\x2e\x36\x20\x31\x36\ \x34\x2e\x38\x30\x31\x20\x2d\x31\x30\x2e\x36\x20\x31\x36\x32\x2e\ \x34\x30\x31\x20\x36\x2e\x32\x20\x31\x36\x30\x2e\x38\x30\x31\x43\ \x36\x2e\x32\x20\x31\x36\x30\x2e\x38\x30\x31\x20\x32\x34\x2e\x32\ \x20\x31\x35\x38\x2e\x38\x30\x31\x20\x32\x38\x2e\x32\x20\x31\x35\ \x33\x2e\x36\x30\x31\x43\x32\x38\x2e\x32\x20\x31\x35\x33\x2e\x36\ \x30\x31\x20\x34\x31\x2e\x38\x20\x31\x34\x34\x2e\x34\x30\x31\x20\ \x34\x34\x2e\x36\x20\x31\x34\x34\x2e\x30\x30\x31\x43\x34\x37\x2e\ \x34\x20\x31\x34\x33\x2e\x36\x30\x31\x20\x36\x33\x2e\x38\x20\x31\ \x34\x30\x2e\x30\x30\x31\x20\x36\x34\x2e\x32\x20\x31\x33\x37\x2e\ \x36\x30\x31\x43\x36\x34\x2e\x36\x20\x31\x33\x35\x2e\x32\x30\x31\ \x20\x37\x30\x2e\x36\x20\x31\x33\x32\x2e\x38\x30\x31\x20\x37\x32\ \x2e\x32\x20\x31\x33\x33\x2e\x36\x30\x31\x43\x37\x33\x2e\x38\x20\ \x31\x33\x34\x2e\x34\x30\x31\x20\x37\x33\x2e\x38\x20\x31\x34\x33\ \x2e\x36\x30\x31\x20\x37\x31\x20\x31\x34\x34\x2e\x34\x30\x31\x43\ \x36\x38\x2e\x32\x20\x31\x34\x35\x2e\x32\x30\x31\x20\x34\x39\x2e\ \x34\x20\x31\x35\x32\x2e\x34\x30\x31\x20\x34\x33\x20\x31\x35\x33\ \x2e\x36\x30\x31\x43\x33\x36\x2e\x36\x20\x31\x35\x34\x2e\x38\x30\ \x31\x20\x32\x35\x20\x31\x36\x32\x2e\x34\x30\x31\x20\x32\x30\x2e\ \x32\x20\x31\x36\x33\x2e\x36\x30\x31\x43\x31\x35\x2e\x34\x20\x31\ \x36\x34\x2e\x38\x30\x31\x20\x34\x2e\x36\x20\x31\x36\x34\x2e\x38\ \x30\x31\x20\x34\x2e\x36\x20\x31\x36\x34\x2e\x38\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x37\x37\x2e\x36\x20\x31\x32\x37\x2e\x34\x30\ \x31\x43\x37\x37\x2e\x36\x20\x31\x32\x37\x2e\x34\x30\x31\x20\x37\ \x34\x2e\x36\x20\x31\x32\x39\x2e\x30\x30\x31\x20\x37\x33\x2e\x34\ \x20\x31\x33\x31\x2e\x36\x30\x31\x43\x37\x33\x2e\x34\x20\x31\x33\ \x31\x2e\x36\x30\x31\x20\x36\x37\x20\x31\x34\x32\x2e\x32\x30\x31\ \x20\x35\x32\x2e\x38\x20\x31\x34\x35\x2e\x34\x30\x31\x43\x35\x32\ \x2e\x38\x20\x31\x34\x35\x2e\x34\x30\x31\x20\x32\x39\x2e\x38\x20\ \x31\x35\x34\x2e\x34\x30\x31\x20\x32\x32\x20\x31\x35\x36\x2e\x34\ \x30\x31\x43\x32\x32\x20\x31\x35\x36\x2e\x34\x30\x31\x20\x38\x2e\ \x36\x20\x31\x36\x31\x2e\x34\x30\x31\x20\x31\x2e\x32\x20\x31\x36\ \x30\x2e\x36\x30\x31\x43\x31\x2e\x32\x20\x31\x36\x30\x2e\x36\x30\ \x31\x20\x2d\x35\x2e\x38\x20\x31\x36\x30\x2e\x38\x30\x31\x20\x30\ \x2e\x34\x20\x31\x36\x32\x2e\x34\x30\x31\x43\x30\x2e\x34\x20\x31\ \x36\x32\x2e\x34\x30\x31\x20\x32\x30\x2e\x36\x20\x31\x36\x30\x2e\ \x34\x30\x31\x20\x32\x34\x20\x31\x35\x38\x2e\x36\x30\x31\x43\x32\ \x34\x20\x31\x35\x38\x2e\x36\x30\x31\x20\x33\x39\x2e\x36\x20\x31\ \x35\x33\x2e\x34\x30\x31\x20\x34\x32\x2e\x36\x20\x31\x35\x30\x2e\ \x38\x30\x31\x43\x34\x35\x2e\x36\x20\x31\x34\x38\x2e\x32\x30\x31\ \x20\x36\x33\x2e\x38\x20\x31\x34\x33\x2e\x32\x30\x31\x20\x36\x36\ \x20\x31\x34\x31\x2e\x32\x30\x31\x43\x36\x38\x2e\x32\x20\x31\x33\ \x39\x2e\x32\x30\x31\x20\x37\x38\x20\x31\x33\x30\x2e\x38\x30\x31\ \x20\x37\x37\x2e\x36\x20\x31\x32\x37\x2e\x34\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x31\x38\x2e\x38\x38\x32\x20\x31\x35\x38\x2e\x39\ \x31\x31\x43\x31\x38\x2e\x38\x38\x32\x20\x31\x35\x38\x2e\x39\x31\ \x31\x20\x32\x34\x2e\x31\x31\x31\x20\x31\x35\x38\x2e\x36\x38\x35\ \x20\x32\x32\x2e\x39\x35\x38\x20\x31\x36\x30\x2e\x32\x33\x34\x43\ \x32\x31\x2e\x38\x30\x35\x20\x31\x36\x31\x2e\x37\x38\x34\x20\x31\ \x39\x2e\x33\x35\x37\x20\x31\x36\x30\x2e\x39\x31\x20\x31\x39\x2e\ \x33\x35\x37\x20\x31\x36\x30\x2e\x39\x31\x4c\x31\x38\x2e\x38\x38\ \x32\x20\x31\x35\x38\x2e\x39\x31\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x31\x31\x2e\x36\x38\x20\x31\x36\x30\x2e\x32\x36\x33\x43\x31\x31\ \x2e\x36\x38\x20\x31\x36\x30\x2e\x32\x36\x33\x20\x31\x36\x2e\x39\ \x30\x38\x20\x31\x36\x30\x2e\x30\x33\x37\x20\x31\x35\x2e\x37\x35\ \x36\x20\x31\x36\x31\x2e\x35\x38\x36\x43\x31\x34\x2e\x36\x30\x33\ \x20\x31\x36\x33\x2e\x31\x33\x36\x20\x31\x32\x2e\x31\x35\x35\x20\ \x31\x36\x32\x2e\x32\x36\x33\x20\x31\x32\x2e\x31\x35\x35\x20\x31\ \x36\x32\x2e\x32\x36\x33\x4c\x31\x31\x2e\x36\x38\x20\x31\x36\x30\ \x2e\x32\x36\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x32\x35\x31\ \x20\x31\x36\x31\x2e\x35\x31\x31\x43\x31\x2e\x32\x35\x31\x20\x31\ \x36\x31\x2e\x35\x31\x31\x20\x36\x2e\x34\x38\x20\x31\x36\x31\x2e\ \x32\x38\x34\x20\x35\x2e\x33\x32\x37\x20\x31\x36\x32\x2e\x38\x33\ \x34\x43\x34\x2e\x31\x37\x34\x20\x31\x36\x34\x2e\x33\x38\x33\x20\ \x31\x2e\x37\x32\x36\x20\x31\x36\x33\x2e\x35\x31\x20\x31\x2e\x37\ \x32\x36\x20\x31\x36\x33\x2e\x35\x31\x4c\x31\x2e\x32\x35\x31\x20\ \x31\x36\x31\x2e\x35\x31\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\ \x2e\x33\x38\x33\x20\x31\x36\x32\x2e\x30\x35\x35\x43\x2d\x36\x2e\ \x33\x38\x33\x20\x31\x36\x32\x2e\x30\x35\x35\x20\x2d\x31\x2e\x31\ \x35\x34\x20\x31\x36\x31\x2e\x38\x32\x39\x20\x2d\x32\x2e\x33\x30\ \x37\x20\x31\x36\x33\x2e\x33\x37\x38\x43\x2d\x33\x2e\x34\x36\x20\ \x31\x36\x34\x2e\x39\x32\x38\x20\x2d\x35\x2e\x39\x30\x38\x20\x31\ \x36\x34\x2e\x30\x35\x34\x20\x2d\x35\x2e\x39\x30\x38\x20\x31\x36\ \x34\x2e\x30\x35\x34\x4c\x2d\x36\x2e\x33\x38\x33\x20\x31\x36\x32\ \x2e\x30\x35\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x35\x2e\x34\x31\ \x35\x20\x31\x35\x31\x2e\x35\x31\x33\x43\x33\x35\x2e\x34\x31\x35\ \x20\x31\x35\x31\x2e\x35\x31\x33\x20\x34\x32\x2e\x33\x37\x35\x20\ \x31\x35\x31\x2e\x32\x31\x32\x20\x34\x30\x2e\x38\x34\x20\x31\x35\ \x33\x2e\x32\x37\x34\x43\x33\x39\x2e\x33\x30\x36\x20\x31\x35\x35\ \x2e\x33\x33\x36\x20\x33\x36\x2e\x30\x34\x37\x20\x31\x35\x34\x2e\ \x31\x37\x34\x20\x33\x36\x2e\x30\x34\x37\x20\x31\x35\x34\x2e\x31\ \x37\x34\x4c\x33\x35\x2e\x34\x31\x35\x20\x31\x35\x31\x2e\x35\x31\ \x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\x2e\x37\x33\x20\x31\x34\ \x37\x2e\x30\x38\x38\x43\x34\x35\x2e\x37\x33\x20\x31\x34\x37\x2e\ \x30\x38\x38\x20\x35\x31\x2e\x36\x38\x39\x20\x31\x34\x33\x2e\x37\ \x38\x37\x20\x35\x31\x2e\x31\x35\x35\x20\x31\x34\x38\x2e\x38\x34\ \x39\x43\x35\x30\x2e\x38\x38\x35\x20\x31\x35\x31\x2e\x34\x30\x35\ \x20\x34\x36\x2e\x33\x36\x32\x20\x31\x34\x39\x2e\x37\x34\x39\x20\ \x34\x36\x2e\x33\x36\x32\x20\x31\x34\x39\x2e\x37\x34\x39\x4c\x34\ \x35\x2e\x37\x33\x20\x31\x34\x37\x2e\x30\x38\x38\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x35\x34\x2e\x38\x36\x32\x20\x31\x34\x34\x2e\x32\x37\ \x34\x43\x35\x34\x2e\x38\x36\x32\x20\x31\x34\x34\x2e\x32\x37\x34\ \x20\x36\x32\x2e\x30\x32\x31\x20\x31\x34\x30\x2e\x35\x37\x33\x20\ \x36\x30\x2e\x32\x38\x37\x20\x31\x34\x36\x2e\x30\x33\x35\x43\x35\ \x39\x2e\x35\x30\x39\x20\x31\x34\x38\x2e\x34\x38\x35\x20\x35\x35\ \x2e\x34\x39\x33\x20\x31\x34\x36\x2e\x39\x33\x35\x20\x35\x35\x2e\ \x34\x39\x33\x20\x31\x34\x36\x2e\x39\x33\x35\x4c\x35\x34\x2e\x38\ \x36\x32\x20\x31\x34\x34\x2e\x32\x37\x34\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x36\x34\x2e\x33\x37\x36\x20\x31\x33\x39\x2e\x34\x34\x39\x43\ \x36\x34\x2e\x33\x37\x36\x20\x31\x33\x39\x2e\x34\x34\x39\x20\x36\ \x38\x2e\x37\x33\x35\x20\x31\x33\x34\x2e\x35\x34\x38\x20\x36\x39\ \x2e\x38\x30\x31\x20\x31\x34\x31\x2e\x32\x31\x43\x37\x30\x2e\x32\ \x30\x37\x20\x31\x34\x33\x2e\x37\x34\x38\x20\x36\x35\x2e\x30\x30\ \x38\x20\x31\x34\x32\x2e\x31\x31\x20\x36\x35\x2e\x30\x30\x38\x20\ \x31\x34\x32\x2e\x31\x31\x4c\x36\x34\x2e\x33\x37\x36\x20\x31\x33\ \x39\x2e\x34\x34\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x36\x2e\x38\ \x33\x34\x20\x31\x35\x35\x2e\x39\x39\x37\x43\x32\x36\x2e\x38\x33\ \x34\x20\x31\x35\x35\x2e\x39\x39\x37\x20\x33\x32\x2e\x30\x36\x32\ \x20\x31\x35\x35\x2e\x37\x37\x20\x33\x30\x2e\x39\x31\x20\x31\x35\ \x37\x2e\x33\x32\x43\x32\x39\x2e\x37\x35\x37\x20\x31\x35\x38\x2e\ \x38\x36\x39\x20\x32\x37\x2e\x33\x30\x38\x20\x31\x35\x37\x2e\x39\ \x39\x36\x20\x32\x37\x2e\x33\x30\x38\x20\x31\x35\x37\x2e\x39\x39\ \x36\x4c\x32\x36\x2e\x38\x33\x34\x20\x31\x35\x35\x2e\x39\x39\x37\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x32\x2e\x34\x33\x34\x20\x33\ \x34\x2e\x36\x30\x33\x43\x36\x32\x2e\x34\x33\x34\x20\x33\x34\x2e\ \x36\x30\x33\x20\x36\x31\x2e\x37\x30\x38\x20\x33\x35\x2e\x32\x36\ \x38\x20\x36\x31\x2e\x37\x30\x37\x20\x33\x34\x2e\x31\x39\x37\x43\ \x36\x31\x2e\x37\x30\x37\x20\x33\x33\x2e\x31\x32\x37\x20\x37\x39\ \x2e\x31\x39\x31\x20\x31\x39\x2e\x38\x36\x33\x20\x38\x38\x2e\x30\ \x33\x34\x20\x31\x38\x2e\x34\x37\x39\x43\x38\x38\x2e\x30\x33\x34\ \x20\x31\x38\x2e\x34\x37\x39\x20\x37\x31\x2e\x39\x33\x35\x20\x32\ \x35\x2e\x32\x30\x38\x20\x36\x32\x2e\x34\x33\x34\x20\x33\x34\x2e\ \x36\x30\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x35\x2e\x34\x20\x39\ \x38\x2e\x34\x43\x36\x35\x2e\x34\x20\x39\x38\x2e\x34\x20\x38\x37\ \x2e\x34\x30\x31\x20\x31\x32\x30\x2e\x38\x30\x31\x20\x39\x36\x2e\ \x36\x30\x31\x20\x31\x32\x34\x2e\x34\x30\x31\x43\x39\x36\x2e\x36\ \x30\x31\x20\x31\x32\x34\x2e\x34\x30\x31\x20\x31\x30\x35\x2e\x38\ \x30\x31\x20\x31\x33\x35\x2e\x36\x30\x31\x20\x31\x30\x31\x2e\x38\ \x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\x43\x31\x30\x31\x2e\x38\ \x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\x20\x39\x38\x2e\x36\x30\ \x31\x20\x31\x36\x39\x2e\x32\x30\x31\x20\x39\x35\x2e\x34\x30\x31\ \x20\x31\x34\x38\x2e\x34\x30\x31\x43\x39\x35\x2e\x34\x30\x31\x20\ \x31\x34\x38\x2e\x34\x30\x31\x20\x39\x38\x2e\x36\x30\x31\x20\x31\ \x32\x33\x2e\x32\x30\x31\x20\x38\x37\x2e\x34\x30\x31\x20\x31\x33\ \x39\x2e\x32\x30\x31\x43\x38\x37\x2e\x34\x30\x31\x20\x31\x33\x39\ \x2e\x32\x30\x31\x20\x37\x39\x20\x31\x32\x39\x2e\x33\x30\x31\x20\ \x38\x35\x2e\x34\x20\x31\x32\x39\x2e\x36\x30\x31\x43\x38\x35\x2e\ \x34\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x38\x38\x2e\x36\x30\x31\ \x20\x31\x33\x31\x2e\x36\x30\x31\x20\x38\x39\x2e\x30\x30\x31\x20\ \x31\x33\x30\x2e\x30\x30\x31\x43\x38\x39\x2e\x34\x30\x31\x20\x31\ \x32\x38\x2e\x34\x30\x31\x20\x38\x31\x2e\x34\x20\x31\x31\x34\x2e\ \x38\x30\x31\x20\x36\x34\x2e\x32\x20\x31\x30\x30\x2e\x34\x43\x34\ \x37\x20\x38\x36\x20\x36\x35\x2e\x34\x20\x39\x38\x2e\x34\x20\x36\ \x35\x2e\x34\x20\x39\x38\x2e\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\ \x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x37\x20\x31\x33\x37\x2e\x32\x30\x31\x43\x37\x20\x31\x33\x37\x2e\ \x32\x30\x31\x20\x36\x2e\x38\x20\x31\x33\x35\x2e\x34\x30\x31\x20\ \x38\x2e\x36\x20\x31\x33\x36\x2e\x32\x30\x31\x43\x31\x30\x2e\x34\ \x20\x31\x33\x37\x2e\x30\x30\x31\x20\x31\x30\x34\x2e\x36\x30\x31\ \x20\x31\x34\x33\x2e\x32\x30\x31\x20\x31\x33\x36\x2e\x32\x30\x31\ \x20\x31\x36\x37\x2e\x32\x30\x31\x43\x31\x33\x36\x2e\x32\x30\x31\ \x20\x31\x36\x37\x2e\x32\x30\x31\x20\x39\x31\x2e\x30\x30\x31\x20\ \x31\x34\x34\x2e\x30\x30\x31\x20\x37\x20\x31\x33\x37\x2e\x32\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x37\x2e\x34\x20\x31\x33\ \x32\x2e\x38\x30\x31\x43\x31\x37\x2e\x34\x20\x31\x33\x32\x2e\x38\ \x30\x31\x20\x31\x37\x2e\x32\x20\x31\x33\x31\x2e\x30\x30\x31\x20\ \x31\x39\x20\x31\x33\x31\x2e\x38\x30\x31\x43\x32\x30\x2e\x38\x20\ \x31\x33\x32\x2e\x36\x30\x31\x20\x31\x35\x37\x2e\x34\x30\x31\x20\ \x31\x33\x31\x2e\x36\x30\x31\x20\x31\x38\x31\x2e\x30\x30\x31\x20\ \x31\x36\x34\x2e\x30\x30\x31\x43\x31\x38\x31\x2e\x30\x30\x31\x20\ \x31\x36\x34\x2e\x30\x30\x31\x20\x31\x35\x39\x2e\x30\x30\x31\x20\ \x31\x33\x38\x2e\x38\x30\x31\x20\x31\x37\x2e\x34\x20\x31\x33\x32\ \x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x39\x20\x31\ \x32\x38\x2e\x38\x30\x31\x43\x32\x39\x20\x31\x32\x38\x2e\x38\x30\ \x31\x20\x32\x38\x2e\x38\x20\x31\x32\x37\x2e\x30\x30\x31\x20\x33\ \x30\x2e\x36\x20\x31\x32\x37\x2e\x38\x30\x31\x43\x33\x32\x2e\x34\ \x20\x31\x32\x38\x2e\x36\x30\x31\x20\x32\x30\x35\x2e\x38\x30\x31\ \x20\x31\x31\x35\x2e\x36\x30\x31\x20\x32\x32\x39\x2e\x34\x30\x31\ \x20\x31\x34\x38\x2e\x30\x30\x31\x43\x32\x32\x39\x2e\x34\x30\x31\ \x20\x31\x34\x38\x2e\x30\x30\x31\x20\x32\x31\x39\x2e\x38\x30\x31\ \x20\x31\x32\x32\x2e\x34\x30\x31\x20\x32\x39\x20\x31\x32\x38\x2e\ \x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x39\x20\x31\x32\ \x34\x2e\x30\x30\x31\x43\x33\x39\x20\x31\x32\x34\x2e\x30\x30\x31\ \x20\x33\x38\x2e\x38\x20\x31\x32\x32\x2e\x32\x30\x31\x20\x34\x30\ \x2e\x36\x20\x31\x32\x33\x2e\x30\x30\x31\x43\x34\x32\x2e\x34\x20\ \x31\x32\x33\x2e\x38\x30\x31\x20\x31\x36\x34\x2e\x36\x30\x31\x20\ \x38\x35\x2e\x32\x20\x31\x38\x38\x2e\x32\x30\x31\x20\x31\x31\x37\ \x2e\x36\x30\x31\x43\x31\x38\x38\x2e\x32\x30\x31\x20\x31\x31\x37\ \x2e\x36\x30\x31\x20\x31\x37\x34\x2e\x38\x30\x31\x20\x39\x33\x20\ \x33\x39\x20\x31\x32\x34\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x31\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x43\x2d\x31\ \x39\x20\x31\x34\x36\x2e\x38\x30\x31\x20\x2d\x31\x39\x2e\x32\x20\ \x31\x34\x35\x2e\x30\x30\x31\x20\x2d\x31\x37\x2e\x34\x20\x31\x34\ \x35\x2e\x38\x30\x31\x43\x2d\x31\x35\x2e\x36\x20\x31\x34\x36\x2e\ \x36\x30\x31\x20\x32\x2e\x32\x20\x31\x34\x38\x2e\x38\x30\x31\x20\ \x34\x2e\x32\x20\x31\x38\x37\x2e\x36\x30\x31\x43\x34\x2e\x32\x20\ \x31\x38\x37\x2e\x36\x30\x31\x20\x2d\x33\x20\x31\x34\x35\x2e\x36\ \x30\x31\x20\x2d\x31\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x32\x37\x2e\x38\x20\x31\x34\x38\x2e\ \x34\x30\x31\x43\x2d\x32\x37\x2e\x38\x20\x31\x34\x38\x2e\x34\x30\ \x31\x20\x2d\x32\x38\x20\x31\x34\x36\x2e\x36\x30\x31\x20\x2d\x32\ \x36\x2e\x32\x20\x31\x34\x37\x2e\x34\x30\x31\x43\x2d\x32\x34\x2e\ \x34\x20\x31\x34\x38\x2e\x32\x30\x31\x20\x2d\x31\x30\x2e\x32\x20\ \x31\x34\x33\x2e\x36\x30\x31\x20\x2d\x31\x33\x20\x31\x38\x32\x2e\ \x34\x30\x31\x43\x2d\x31\x33\x20\x31\x38\x32\x2e\x34\x30\x31\x20\ \x2d\x31\x31\x2e\x38\x20\x31\x34\x37\x2e\x32\x30\x31\x20\x2d\x32\ \x37\x2e\x38\x20\x31\x34\x38\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x35\x2e\x38\x20\x31\x34\x38\x2e\x38\x30\x31\ \x43\x2d\x33\x35\x2e\x38\x20\x31\x34\x38\x2e\x38\x30\x31\x20\x2d\ \x33\x36\x20\x31\x34\x37\x2e\x30\x30\x31\x20\x2d\x33\x34\x2e\x32\ \x20\x31\x34\x37\x2e\x38\x30\x31\x43\x2d\x33\x32\x2e\x34\x20\x31\ \x34\x38\x2e\x36\x30\x31\x20\x2d\x31\x37\x20\x31\x34\x39\x2e\x32\ \x30\x31\x20\x2d\x32\x39\x2e\x34\x20\x31\x37\x31\x2e\x36\x30\x31\ \x43\x2d\x32\x39\x2e\x34\x20\x31\x37\x31\x2e\x36\x30\x31\x20\x2d\ \x31\x39\x2e\x38\x20\x31\x34\x37\x2e\x36\x30\x31\x20\x2d\x33\x35\ \x2e\x38\x20\x31\x34\x38\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x31\x31\x2e\x35\x32\x36\x20\x31\x30\x34\x2e\x34\x36\x35\ \x43\x31\x31\x2e\x35\x32\x36\x20\x31\x30\x34\x2e\x34\x36\x35\x20\ \x31\x31\x2e\x30\x38\x32\x20\x31\x30\x36\x2e\x34\x36\x34\x20\x31\ \x32\x2e\x36\x33\x31\x20\x31\x30\x35\x2e\x32\x34\x37\x43\x32\x38\ \x2e\x36\x39\x39\x20\x39\x32\x2e\x36\x32\x32\x20\x36\x31\x2e\x31\ \x34\x31\x20\x33\x33\x2e\x37\x32\x20\x31\x31\x36\x2e\x38\x32\x36\ \x20\x32\x38\x2e\x30\x38\x36\x43\x31\x31\x36\x2e\x38\x32\x36\x20\ \x32\x38\x2e\x30\x38\x36\x20\x37\x38\x2e\x35\x31\x38\x20\x31\x35\ \x2e\x39\x37\x36\x20\x31\x31\x2e\x35\x32\x36\x20\x31\x30\x34\x2e\ \x34\x36\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x32\x2e\x37\x32\ \x36\x20\x31\x30\x32\x2e\x36\x36\x35\x43\x32\x32\x2e\x37\x32\x36\ \x20\x31\x30\x32\x2e\x36\x36\x35\x20\x32\x31\x2e\x33\x36\x33\x20\ \x31\x30\x31\x2e\x34\x37\x32\x20\x32\x33\x2e\x32\x33\x31\x20\x31\ \x30\x30\x2e\x38\x34\x37\x43\x32\x35\x2e\x30\x39\x39\x20\x31\x30\ \x30\x2e\x32\x32\x32\x20\x31\x33\x37\x2e\x35\x34\x31\x20\x32\x37\ \x2e\x37\x32\x20\x31\x37\x36\x2e\x38\x32\x36\x20\x33\x35\x2e\x36\ \x38\x36\x43\x31\x37\x36\x2e\x38\x32\x36\x20\x33\x35\x2e\x36\x38\ \x36\x20\x31\x34\x39\x2e\x37\x31\x39\x20\x32\x38\x2e\x31\x37\x36\ \x20\x32\x32\x2e\x37\x32\x36\x20\x31\x30\x32\x2e\x36\x36\x35\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x38\x38\x35\x20\x31\x30\x38\ \x2e\x37\x36\x37\x43\x31\x2e\x38\x38\x35\x20\x31\x30\x38\x2e\x37\ \x36\x37\x20\x31\x2e\x33\x37\x36\x20\x31\x31\x30\x2e\x33\x36\x36\ \x20\x33\x2e\x30\x38\x37\x20\x31\x30\x39\x2e\x33\x39\x43\x31\x32\ \x2e\x30\x36\x32\x20\x31\x30\x34\x2e\x32\x37\x20\x31\x35\x2e\x36\ \x37\x37\x20\x34\x37\x2e\x30\x35\x39\x20\x35\x39\x2e\x32\x35\x34\ \x20\x34\x35\x2e\x38\x30\x34\x43\x35\x39\x2e\x32\x35\x34\x20\x34\ \x35\x2e\x38\x30\x34\x20\x32\x36\x2e\x38\x34\x33\x20\x33\x31\x2e\ \x30\x39\x20\x31\x2e\x38\x38\x35\x20\x31\x30\x38\x2e\x37\x36\x37\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x38\x2e\x30\x33\x38\x20\ \x31\x31\x39\x2e\x37\x39\x33\x43\x2d\x31\x38\x2e\x30\x33\x38\x20\ \x31\x31\x39\x2e\x37\x39\x33\x20\x2d\x31\x39\x2e\x31\x31\x35\x20\ \x31\x32\x31\x2e\x30\x37\x39\x20\x2d\x31\x37\x2e\x31\x36\x32\x20\ \x31\x32\x30\x2e\x38\x32\x35\x43\x2d\x36\x2e\x39\x31\x36\x20\x31\ \x31\x39\x2e\x34\x39\x33\x20\x31\x34\x2e\x34\x38\x39\x20\x37\x38\ \x2e\x32\x32\x32\x20\x35\x38\x2e\x39\x32\x38\x20\x38\x33\x2e\x33\ \x30\x31\x43\x35\x38\x2e\x39\x32\x38\x20\x38\x33\x2e\x33\x30\x31\ \x20\x32\x36\x2e\x39\x36\x32\x20\x36\x38\x2e\x39\x35\x35\x20\x2d\ \x31\x38\x2e\x30\x33\x38\x20\x31\x31\x39\x2e\x37\x39\x33\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x36\x2e\x38\x20\x31\x31\x33\x2e\x36\ \x36\x37\x43\x2d\x36\x2e\x38\x20\x31\x31\x33\x2e\x36\x36\x37\x20\ \x2d\x37\x2e\x36\x31\x31\x20\x31\x31\x35\x2e\x31\x33\x36\x20\x2d\ \x35\x2e\x37\x34\x32\x20\x31\x31\x34\x2e\x35\x31\x31\x43\x34\x2e\ \x30\x35\x37\x20\x31\x31\x31\x2e\x32\x33\x37\x20\x31\x37\x2e\x31\ \x34\x31\x20\x36\x36\x2e\x36\x32\x35\x20\x36\x31\x2e\x37\x32\x39\ \x20\x36\x33\x2e\x30\x37\x38\x43\x36\x31\x2e\x37\x32\x39\x20\x36\ \x33\x2e\x30\x37\x38\x20\x32\x37\x2e\x36\x30\x33\x20\x35\x35\x2e\ \x31\x33\x35\x20\x2d\x36\x2e\x38\x20\x31\x31\x33\x2e\x36\x36\x37\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x35\x2e\x30\x37\x38\x20\ \x31\x32\x34\x2e\x39\x31\x32\x43\x2d\x32\x35\x2e\x30\x37\x38\x20\ \x31\x32\x34\x2e\x39\x31\x32\x20\x2d\x32\x35\x2e\x39\x35\x31\x20\ \x31\x32\x35\x2e\x39\x35\x34\x20\x2d\x32\x34\x2e\x33\x36\x39\x20\ \x31\x32\x35\x2e\x37\x34\x38\x43\x2d\x31\x36\x2e\x30\x37\x20\x31\ \x32\x34\x2e\x36\x36\x39\x20\x31\x2e\x32\x36\x38\x20\x39\x31\x2e\ \x32\x34\x20\x33\x37\x2e\x32\x36\x34\x20\x39\x35\x2e\x33\x35\x34\ \x43\x33\x37\x2e\x32\x36\x34\x20\x39\x35\x2e\x33\x35\x34\x20\x31\ \x31\x2e\x33\x37\x31\x20\x38\x33\x2e\x37\x33\x34\x20\x2d\x32\x35\ \x2e\x30\x37\x38\x20\x31\x32\x34\x2e\x39\x31\x32\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x33\x32\x2e\x36\x37\x37\x20\x31\x33\x30\x2e\ \x38\x32\x31\x43\x2d\x33\x32\x2e\x36\x37\x37\x20\x31\x33\x30\x2e\ \x38\x32\x31\x20\x2d\x33\x33\x2e\x36\x38\x32\x20\x31\x33\x31\x2e\ \x38\x36\x36\x20\x2d\x33\x32\x2e\x30\x39\x31\x20\x31\x33\x31\x2e\ \x37\x34\x38\x43\x2d\x32\x37\x2e\x39\x32\x33\x20\x31\x33\x31\x2e\ \x34\x33\x39\x20\x32\x2e\x37\x31\x35\x20\x39\x38\x2e\x33\x36\x20\ \x32\x31\x2e\x31\x38\x33\x20\x31\x31\x33\x2e\x38\x36\x32\x43\x32\ \x31\x2e\x31\x38\x33\x20\x31\x31\x33\x2e\x38\x36\x32\x20\x39\x2e\ \x31\x36\x38\x20\x39\x35\x2e\x31\x33\x39\x20\x2d\x33\x32\x2e\x36\ \x37\x37\x20\x31\x33\x30\x2e\x38\x32\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x33\x36\x2e\x38\x35\x35\x20\x39\x38\x2e\x38\x39\x38\x43\ \x33\x36\x2e\x38\x35\x35\x20\x39\x38\x2e\x38\x39\x38\x20\x33\x35\ \x2e\x36\x35\x34\x20\x39\x37\x2e\x35\x34\x33\x20\x33\x37\x2e\x35\ \x38\x36\x20\x39\x37\x2e\x31\x35\x38\x43\x33\x39\x2e\x35\x31\x38\ \x20\x39\x36\x2e\x37\x37\x34\x20\x31\x36\x30\x2e\x32\x32\x31\x20\ \x33\x39\x2e\x30\x36\x31\x20\x31\x39\x38\x2e\x31\x38\x34\x20\x35\ \x31\x2e\x39\x32\x37\x43\x31\x39\x38\x2e\x31\x38\x34\x20\x35\x31\ \x2e\x39\x32\x37\x20\x31\x37\x32\x2e\x32\x34\x33\x20\x34\x31\x2e\ \x30\x35\x33\x20\x33\x36\x2e\x38\x35\x35\x20\x39\x38\x2e\x38\x39\ \x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x2e\x34\x20\x31\x36\x33\ \x2e\x32\x30\x31\x43\x33\x2e\x34\x20\x31\x36\x33\x2e\x32\x30\x31\ \x20\x33\x2e\x32\x20\x31\x36\x31\x2e\x34\x30\x31\x20\x35\x20\x31\ \x36\x32\x2e\x32\x30\x31\x43\x36\x2e\x38\x20\x31\x36\x33\x2e\x30\ \x30\x31\x20\x32\x32\x2e\x32\x20\x31\x36\x33\x2e\x36\x30\x31\x20\ \x39\x2e\x38\x20\x31\x38\x36\x2e\x30\x30\x31\x43\x39\x2e\x38\x20\ \x31\x38\x36\x2e\x30\x30\x31\x20\x31\x39\x2e\x34\x20\x31\x36\x32\ \x2e\x30\x30\x31\x20\x33\x2e\x34\x20\x31\x36\x33\x2e\x32\x30\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x2e\x38\x20\x31\x36\x31\ \x2e\x36\x30\x31\x43\x31\x33\x2e\x38\x20\x31\x36\x31\x2e\x36\x30\ \x31\x20\x31\x33\x2e\x36\x20\x31\x35\x39\x2e\x38\x30\x31\x20\x31\ \x35\x2e\x34\x20\x31\x36\x30\x2e\x36\x30\x31\x43\x31\x37\x2e\x32\ \x20\x31\x36\x31\x2e\x34\x30\x31\x20\x33\x35\x20\x31\x36\x33\x2e\ \x36\x30\x31\x20\x33\x37\x20\x32\x30\x32\x2e\x34\x30\x31\x43\x33\ \x37\x20\x32\x30\x32\x2e\x34\x30\x31\x20\x32\x39\x2e\x38\x20\x31\ \x36\x30\x2e\x34\x30\x31\x20\x31\x33\x2e\x38\x20\x31\x36\x31\x2e\ \x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\x2e\x36\x20\ \x31\x36\x30\x2e\x30\x30\x31\x43\x32\x30\x2e\x36\x20\x31\x36\x30\ \x2e\x30\x30\x31\x20\x32\x30\x2e\x34\x20\x31\x35\x38\x2e\x32\x30\ \x31\x20\x32\x32\x2e\x32\x20\x31\x35\x39\x2e\x30\x30\x31\x43\x32\ \x34\x20\x31\x35\x39\x2e\x38\x30\x31\x20\x34\x38\x2e\x36\x20\x31\ \x36\x33\x2e\x32\x30\x31\x20\x37\x32\x2e\x32\x20\x31\x39\x35\x2e\ \x36\x30\x31\x43\x37\x32\x2e\x32\x20\x31\x39\x35\x2e\x36\x30\x31\ \x20\x33\x36\x2e\x36\x20\x31\x35\x38\x2e\x38\x30\x31\x20\x32\x30\ \x2e\x36\x20\x31\x36\x30\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x32\x38\x2e\x32\x32\x35\x20\x31\x35\x37\x2e\x39\x37\x32\ \x43\x32\x38\x2e\x32\x32\x35\x20\x31\x35\x37\x2e\x39\x37\x32\x20\ \x32\x37\x2e\x37\x38\x38\x20\x31\x35\x36\x2e\x32\x31\x34\x20\x32\ \x39\x2e\x36\x37\x38\x20\x31\x35\x36\x2e\x37\x36\x38\x43\x33\x31\ \x2e\x35\x36\x38\x20\x31\x35\x37\x2e\x33\x32\x32\x20\x35\x32\x2e\ \x30\x30\x32\x20\x31\x35\x35\x2e\x34\x32\x33\x20\x39\x30\x2e\x30\ \x39\x39\x20\x31\x38\x39\x2e\x35\x39\x39\x43\x39\x30\x2e\x30\x39\ \x39\x20\x31\x38\x39\x2e\x35\x39\x39\x20\x34\x33\x2e\x39\x32\x34\ \x20\x31\x35\x34\x2e\x36\x35\x36\x20\x32\x38\x2e\x32\x32\x35\x20\ \x31\x35\x37\x2e\x39\x37\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\ \x38\x2e\x36\x32\x35\x20\x31\x35\x33\x2e\x35\x37\x32\x43\x33\x38\ \x2e\x36\x32\x35\x20\x31\x35\x33\x2e\x35\x37\x32\x20\x33\x38\x2e\ \x31\x38\x38\x20\x31\x35\x31\x2e\x38\x31\x34\x20\x34\x30\x2e\x30\ \x37\x38\x20\x31\x35\x32\x2e\x33\x36\x38\x43\x34\x31\x2e\x39\x36\ \x38\x20\x31\x35\x32\x2e\x39\x32\x32\x20\x37\x36\x2e\x38\x30\x32\ \x20\x31\x35\x37\x2e\x34\x32\x33\x20\x31\x32\x38\x2e\x34\x39\x39\ \x20\x31\x39\x32\x2e\x33\x39\x39\x43\x31\x32\x38\x2e\x34\x39\x39\ \x20\x31\x39\x32\x2e\x33\x39\x39\x20\x35\x34\x2e\x33\x32\x34\x20\ \x31\x35\x30\x2e\x32\x35\x36\x20\x33\x38\x2e\x36\x32\x35\x20\x31\ \x35\x33\x2e\x35\x37\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\ \x2e\x38\x20\x31\x34\x32\x2e\x30\x30\x31\x43\x2d\x31\x2e\x38\x20\ \x31\x34\x32\x2e\x30\x30\x31\x20\x2d\x32\x20\x31\x34\x30\x2e\x32\ \x30\x31\x20\x2d\x30\x2e\x32\x20\x31\x34\x31\x2e\x30\x30\x31\x43\ \x31\x2e\x36\x20\x31\x34\x31\x2e\x38\x30\x31\x20\x35\x35\x20\x31\ \x34\x34\x2e\x34\x30\x31\x20\x38\x35\x2e\x34\x20\x31\x37\x31\x2e\ \x32\x30\x31\x43\x38\x35\x2e\x34\x20\x31\x37\x31\x2e\x32\x30\x31\ \x20\x35\x30\x2e\x34\x39\x39\x20\x31\x34\x36\x2e\x34\x32\x36\x20\ \x2d\x31\x2e\x38\x20\x31\x34\x32\x2e\x30\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x31\x31\x2e\x38\x20\x31\x34\x36\x2e\x30\x30\ \x31\x43\x2d\x31\x31\x2e\x38\x20\x31\x34\x36\x2e\x30\x30\x31\x20\ \x2d\x31\x32\x20\x31\x34\x34\x2e\x32\x30\x31\x20\x2d\x31\x30\x2e\ \x32\x20\x31\x34\x35\x2e\x30\x30\x31\x43\x2d\x38\x2e\x34\x20\x31\ \x34\x35\x2e\x38\x30\x31\x20\x31\x36\x2e\x32\x20\x31\x34\x39\x2e\ \x32\x30\x31\x20\x33\x39\x2e\x38\x20\x31\x38\x31\x2e\x36\x30\x31\ \x43\x33\x39\x2e\x38\x20\x31\x38\x31\x2e\x36\x30\x31\x20\x34\x2e\ \x32\x20\x31\x34\x34\x2e\x38\x30\x31\x20\x2d\x31\x31\x2e\x38\x20\ \x31\x34\x36\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\ \x39\x2e\x35\x30\x33\x20\x31\x34\x38\x2e\x39\x36\x32\x43\x34\x39\ \x2e\x35\x30\x33\x20\x31\x34\x38\x2e\x39\x36\x32\x20\x34\x38\x2e\ \x39\x33\x38\x20\x31\x34\x37\x2e\x32\x34\x31\x20\x35\x30\x2e\x38\ \x36\x34\x20\x31\x34\x37\x2e\x36\x35\x35\x43\x35\x32\x2e\x37\x39\ \x20\x31\x34\x38\x2e\x30\x36\x38\x20\x38\x37\x2e\x38\x36\x20\x31\ \x35\x30\x2e\x30\x30\x34\x20\x31\x34\x31\x2e\x39\x38\x31\x20\x31\ \x38\x31\x2e\x30\x39\x38\x43\x31\x34\x31\x2e\x39\x38\x31\x20\x31\ \x38\x31\x2e\x30\x39\x38\x20\x36\x34\x2e\x33\x31\x37\x20\x31\x34\ \x36\x2e\x37\x30\x34\x20\x34\x39\x2e\x35\x30\x33\x20\x31\x34\x38\ \x2e\x39\x36\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x35\x37\x2e\x39\ \x30\x33\x20\x31\x34\x36\x2e\x35\x36\x32\x43\x35\x37\x2e\x39\x30\ \x33\x20\x31\x34\x36\x2e\x35\x36\x32\x20\x35\x37\x2e\x33\x33\x38\ \x20\x31\x34\x34\x2e\x38\x34\x31\x20\x35\x39\x2e\x32\x36\x34\x20\ \x31\x34\x35\x2e\x32\x35\x35\x43\x36\x31\x2e\x31\x39\x20\x31\x34\ \x35\x2e\x36\x36\x38\x20\x39\x36\x2e\x32\x36\x20\x31\x34\x37\x2e\ \x36\x30\x34\x20\x31\x35\x30\x2e\x33\x38\x31\x20\x31\x37\x38\x2e\ \x36\x39\x38\x43\x31\x35\x30\x2e\x33\x38\x31\x20\x31\x37\x38\x2e\ \x36\x39\x38\x20\x37\x33\x2e\x33\x31\x37\x20\x31\x34\x33\x2e\x39\ \x30\x34\x20\x35\x37\x2e\x39\x30\x33\x20\x31\x34\x36\x2e\x35\x36\ \x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x37\x2e\x35\x30\x33\x20\ \x31\x34\x31\x2e\x35\x36\x32\x43\x36\x37\x2e\x35\x30\x33\x20\x31\ \x34\x31\x2e\x35\x36\x32\x20\x36\x36\x2e\x39\x33\x38\x20\x31\x33\ \x39\x2e\x38\x34\x31\x20\x36\x38\x2e\x38\x36\x34\x20\x31\x34\x30\ \x2e\x32\x35\x35\x43\x37\x30\x2e\x37\x39\x20\x31\x34\x30\x2e\x36\ \x36\x38\x20\x31\x31\x33\x2e\x38\x36\x20\x31\x34\x35\x2e\x30\x30\ \x34\x20\x32\x30\x33\x2e\x35\x38\x32\x20\x31\x37\x39\x2e\x32\x39\ \x38\x43\x32\x30\x33\x2e\x35\x38\x32\x20\x31\x37\x39\x2e\x32\x39\ \x38\x20\x38\x32\x2e\x39\x31\x37\x20\x31\x33\x38\x2e\x39\x30\x34\ \x20\x36\x37\x2e\x35\x30\x33\x20\x31\x34\x31\x2e\x35\x36\x32\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x34\x33\x2e\x38\x20\x31\x34\x38\x2e\ \x34\x30\x31\x43\x2d\x34\x33\x2e\x38\x20\x31\x34\x38\x2e\x34\x30\ \x31\x20\x2d\x33\x38\x2e\x36\x20\x31\x34\x38\x2e\x30\x30\x31\x20\ \x2d\x33\x39\x2e\x38\x20\x31\x34\x39\x2e\x36\x30\x31\x43\x2d\x34\ \x31\x20\x31\x35\x31\x2e\x32\x30\x31\x20\x2d\x34\x33\x2e\x34\x20\ \x31\x35\x30\x2e\x34\x30\x31\x20\x2d\x34\x33\x2e\x34\x20\x31\x35\ \x30\x2e\x34\x30\x31\x4c\x2d\x34\x33\x2e\x38\x20\x31\x34\x38\x2e\ \x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x33\x20\x31\x36\ \x32\x2e\x34\x30\x31\x43\x2d\x31\x33\x20\x31\x36\x32\x2e\x34\x30\ \x31\x20\x2d\x37\x2e\x38\x20\x31\x36\x32\x2e\x30\x30\x31\x20\x2d\ \x39\x20\x31\x36\x33\x2e\x36\x30\x31\x43\x2d\x31\x30\x2e\x32\x20\ \x31\x36\x35\x2e\x32\x30\x31\x20\x2d\x31\x32\x2e\x36\x20\x31\x36\ \x34\x2e\x34\x30\x31\x20\x2d\x31\x32\x2e\x36\x20\x31\x36\x34\x2e\ \x34\x30\x31\x4c\x2d\x31\x33\x20\x31\x36\x32\x2e\x34\x30\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x32\x31\x2e\x38\x20\x31\x36\x32\x2e\ \x30\x30\x31\x43\x2d\x32\x31\x2e\x38\x20\x31\x36\x32\x2e\x30\x30\ \x31\x20\x2d\x31\x36\x2e\x36\x20\x31\x36\x31\x2e\x36\x30\x31\x20\ \x2d\x31\x37\x2e\x38\x20\x31\x36\x33\x2e\x32\x30\x31\x43\x2d\x31\ \x39\x20\x31\x36\x34\x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\ \x31\x36\x34\x2e\x30\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\x31\x36\ \x34\x2e\x30\x30\x31\x4c\x2d\x32\x31\x2e\x38\x20\x31\x36\x32\x2e\ \x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x37\x2e\x31\ \x36\x39\x20\x31\x35\x30\x2e\x31\x38\x32\x43\x2d\x31\x31\x37\x2e\ \x31\x36\x39\x20\x31\x35\x30\x2e\x31\x38\x32\x20\x2d\x31\x31\x32\ \x2e\x31\x32\x34\x20\x31\x35\x31\x2e\x35\x30\x35\x20\x2d\x31\x31\ \x33\x2e\x37\x38\x32\x20\x31\x35\x32\x2e\x36\x32\x34\x43\x2d\x31\ \x31\x35\x2e\x34\x33\x39\x20\x31\x35\x33\x2e\x37\x34\x34\x20\x2d\ \x31\x31\x37\x2e\x34\x34\x36\x20\x31\x35\x32\x2e\x32\x30\x32\x20\ \x2d\x31\x31\x37\x2e\x34\x34\x36\x20\x31\x35\x32\x2e\x32\x30\x32\ \x4c\x2d\x31\x31\x37\x2e\x31\x36\x39\x20\x31\x35\x30\x2e\x31\x38\ \x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x35\x2e\x31\x36\x39\ \x20\x31\x34\x30\x2e\x35\x38\x32\x43\x2d\x31\x31\x35\x2e\x31\x36\ \x39\x20\x31\x34\x30\x2e\x35\x38\x32\x20\x2d\x31\x31\x30\x2e\x31\ \x32\x34\x20\x31\x34\x31\x2e\x39\x30\x35\x20\x2d\x31\x31\x31\x2e\ \x37\x38\x32\x20\x31\x34\x33\x2e\x30\x32\x34\x43\x2d\x31\x31\x33\ \x2e\x34\x33\x39\x20\x31\x34\x34\x2e\x31\x34\x34\x20\x2d\x31\x31\ \x35\x2e\x34\x34\x36\x20\x31\x34\x32\x2e\x36\x30\x32\x20\x2d\x31\ \x31\x35\x2e\x34\x34\x36\x20\x31\x34\x32\x2e\x36\x30\x32\x4c\x2d\ \x31\x31\x35\x2e\x31\x36\x39\x20\x31\x34\x30\x2e\x35\x38\x32\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x32\x2e\x33\x36\x39\x20\x31\ \x33\x36\x2e\x31\x38\x32\x43\x2d\x31\x32\x32\x2e\x33\x36\x39\x20\ \x31\x33\x36\x2e\x31\x38\x32\x20\x2d\x31\x31\x37\x2e\x33\x32\x34\ \x20\x31\x33\x37\x2e\x35\x30\x35\x20\x2d\x31\x31\x38\x2e\x39\x38\ \x32\x20\x31\x33\x38\x2e\x36\x32\x34\x43\x2d\x31\x32\x30\x2e\x36\ \x33\x39\x20\x31\x33\x39\x2e\x37\x34\x34\x20\x2d\x31\x32\x32\x2e\ \x36\x34\x36\x20\x31\x33\x38\x2e\x32\x30\x32\x20\x2d\x31\x32\x32\ \x2e\x36\x34\x36\x20\x31\x33\x38\x2e\x32\x30\x32\x4c\x2d\x31\x32\ \x32\x2e\x33\x36\x39\x20\x31\x33\x36\x2e\x31\x38\x32\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x34\x32\x2e\x36\x20\x32\x31\x31\x2e\x32\x30\ \x31\x43\x2d\x34\x32\x2e\x36\x20\x32\x31\x31\x2e\x32\x30\x31\x20\ \x2d\x34\x34\x2e\x32\x20\x32\x31\x31\x2e\x32\x30\x31\x20\x2d\x34\ \x38\x2e\x32\x20\x32\x31\x33\x2e\x32\x30\x31\x43\x2d\x35\x30\x2e\ \x32\x20\x32\x31\x33\x2e\x32\x30\x31\x20\x2d\x36\x31\x2e\x34\x20\ \x32\x31\x36\x2e\x38\x30\x31\x20\x2d\x36\x37\x20\x32\x32\x36\x2e\ \x38\x30\x31\x43\x2d\x36\x37\x20\x32\x32\x36\x2e\x38\x30\x31\x20\ \x2d\x35\x34\x2e\x36\x20\x32\x31\x37\x2e\x32\x30\x31\x20\x2d\x34\ \x32\x2e\x36\x20\x32\x31\x31\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\ \x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x34\x35\x2e\x31\x31\x36\x20\x33\x30\x33\x2e\x38\x34\x37\ \x43\x34\x35\x2e\x32\x35\x37\x20\x33\x30\x34\x2e\x31\x30\x35\x20\ \x34\x35\x2e\x33\x31\x32\x20\x33\x30\x34\x2e\x35\x32\x35\x20\x34\ \x35\x2e\x36\x30\x34\x20\x33\x30\x34\x2e\x35\x34\x32\x43\x34\x36\ \x2e\x32\x36\x32\x20\x33\x30\x34\x2e\x35\x38\x32\x20\x34\x37\x2e\ \x34\x39\x35\x20\x33\x30\x34\x2e\x38\x38\x33\x20\x34\x37\x2e\x33\ \x37\x20\x33\x30\x34\x2e\x32\x34\x37\x43\x34\x36\x2e\x35\x32\x32\ \x20\x32\x39\x39\x2e\x39\x34\x31\x20\x34\x35\x2e\x36\x34\x38\x20\ \x32\x39\x35\x2e\x30\x30\x34\x20\x34\x31\x2e\x35\x31\x35\x20\x32\ \x39\x33\x2e\x31\x39\x37\x43\x34\x30\x2e\x38\x37\x36\x20\x32\x39\ \x32\x2e\x39\x31\x38\x20\x33\x39\x2e\x34\x33\x34\x20\x32\x39\x33\ \x2e\x33\x33\x31\x20\x33\x39\x2e\x33\x36\x20\x32\x39\x34\x2e\x32\ \x31\x35\x43\x33\x39\x2e\x32\x33\x33\x20\x32\x39\x35\x2e\x37\x33\ \x39\x20\x33\x39\x2e\x31\x31\x36\x20\x32\x39\x37\x2e\x30\x38\x38\ \x20\x33\x39\x2e\x34\x32\x35\x20\x32\x39\x38\x2e\x35\x35\x34\x43\ \x33\x39\x2e\x37\x32\x35\x20\x32\x39\x39\x2e\x39\x37\x35\x20\x34\ \x31\x2e\x38\x38\x33\x20\x32\x39\x39\x2e\x39\x38\x35\x20\x34\x32\ \x2e\x38\x20\x32\x39\x38\x2e\x36\x30\x31\x43\x34\x33\x2e\x37\x33\ \x36\x20\x33\x30\x30\x2e\x32\x37\x33\x20\x34\x34\x2e\x31\x36\x38\ \x20\x33\x30\x32\x2e\x31\x31\x36\x20\x34\x35\x2e\x31\x31\x36\x20\ \x33\x30\x33\x2e\x38\x34\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x34\ \x2e\x30\x33\x38\x20\x33\x30\x38\x2e\x35\x38\x31\x43\x33\x34\x2e\ \x37\x38\x36\x20\x33\x30\x39\x2e\x39\x39\x34\x20\x33\x34\x2e\x36\ \x35\x39\x20\x33\x31\x31\x2e\x38\x35\x33\x20\x33\x36\x2e\x30\x37\ \x34\x20\x33\x31\x32\x2e\x34\x31\x36\x43\x33\x36\x2e\x38\x31\x34\ \x20\x33\x31\x32\x2e\x37\x31\x20\x33\x38\x2e\x36\x36\x34\x20\x33\ \x31\x31\x2e\x37\x33\x35\x20\x33\x38\x2e\x32\x34\x36\x20\x33\x31\ \x30\x2e\x36\x36\x31\x43\x33\x37\x2e\x34\x34\x34\x20\x33\x30\x38\ \x2e\x36\x20\x33\x37\x2e\x30\x35\x36\x20\x33\x30\x36\x2e\x33\x36\ \x31\x20\x33\x35\x2e\x36\x36\x37\x20\x33\x30\x34\x2e\x35\x35\x43\ \x33\x35\x2e\x34\x36\x37\x20\x33\x30\x34\x2e\x32\x38\x38\x20\x33\ \x35\x2e\x37\x30\x37\x20\x33\x30\x33\x2e\x37\x35\x35\x20\x33\x35\ \x2e\x35\x34\x37\x20\x33\x30\x33\x2e\x34\x32\x37\x43\x33\x34\x2e\ \x39\x35\x33\x20\x33\x30\x32\x2e\x32\x30\x37\x20\x33\x33\x2e\x38\ \x30\x38\x20\x33\x30\x31\x2e\x34\x37\x32\x20\x33\x32\x2e\x34\x20\ \x33\x30\x31\x2e\x38\x30\x31\x43\x33\x31\x2e\x32\x38\x35\x20\x33\ \x30\x34\x2e\x30\x30\x34\x20\x33\x32\x2e\x34\x33\x33\x20\x33\x30\ \x36\x2e\x31\x33\x33\x20\x33\x33\x2e\x39\x35\x35\x20\x33\x30\x37\ \x2e\x38\x34\x32\x43\x33\x34\x2e\x30\x39\x31\x20\x33\x30\x37\x2e\ \x39\x39\x34\x20\x33\x33\x2e\x39\x32\x35\x20\x33\x30\x38\x2e\x33\ \x37\x20\x33\x34\x2e\x30\x33\x38\x20\x33\x30\x38\x2e\x35\x38\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x2e\x35\x36\x34\x20\x33\x30\ \x33\x2e\x33\x39\x31\x43\x2d\x35\x2e\x36\x37\x32\x20\x33\x30\x33\ \x2e\x30\x31\x34\x20\x2d\x35\x2e\x37\x31\x20\x33\x30\x32\x2e\x35\ \x35\x31\x20\x2d\x35\x2e\x35\x34\x35\x20\x33\x30\x32\x2e\x32\x33\ \x43\x2d\x35\x2e\x30\x31\x34\x20\x33\x30\x31\x2e\x31\x39\x37\x20\ \x2d\x34\x2e\x32\x32\x31\x20\x33\x30\x30\x2e\x30\x37\x35\x20\x2d\ \x34\x2e\x35\x35\x38\x20\x32\x39\x39\x2e\x30\x35\x33\x43\x2d\x34\ \x2e\x39\x30\x36\x20\x32\x39\x37\x2e\x39\x39\x37\x20\x2d\x36\x2e\ \x30\x32\x32\x20\x32\x39\x38\x2e\x31\x37\x39\x20\x2d\x36\x2e\x36\ \x37\x32\x20\x32\x39\x38\x2e\x37\x34\x38\x43\x2d\x37\x2e\x38\x30\ \x37\x20\x32\x39\x39\x2e\x37\x34\x32\x20\x2d\x37\x2e\x38\x35\x36\ \x20\x33\x30\x31\x2e\x35\x36\x38\x20\x2d\x38\x2e\x35\x34\x37\x20\ \x33\x30\x32\x2e\x39\x32\x37\x43\x2d\x38\x2e\x37\x34\x33\x20\x33\ \x30\x33\x2e\x33\x31\x33\x20\x2d\x38\x2e\x36\x39\x32\x20\x33\x30\ \x33\x2e\x38\x38\x36\x20\x2d\x39\x2e\x31\x33\x33\x20\x33\x30\x34\ \x2e\x32\x37\x37\x43\x2d\x39\x2e\x36\x30\x37\x20\x33\x30\x34\x2e\ \x36\x39\x38\x20\x2d\x31\x30\x2e\x30\x34\x37\x20\x33\x30\x36\x2e\ \x32\x32\x32\x20\x2d\x39\x2e\x39\x35\x31\x20\x33\x30\x36\x2e\x37\ \x39\x33\x43\x2d\x39\x2e\x38\x39\x38\x20\x33\x30\x37\x2e\x31\x30\ \x36\x20\x2d\x31\x30\x2e\x30\x38\x31\x20\x33\x31\x37\x2e\x30\x31\ \x34\x20\x2d\x39\x2e\x38\x35\x39\x20\x33\x31\x36\x2e\x37\x35\x31\ \x43\x2d\x39\x2e\x32\x34\x20\x33\x31\x36\x2e\x30\x31\x38\x20\x2d\ \x36\x2e\x31\x39\x20\x33\x30\x36\x2e\x32\x38\x34\x20\x2d\x36\x2e\ \x31\x32\x31\x20\x33\x30\x35\x2e\x33\x39\x32\x43\x2d\x36\x2e\x30\ \x36\x34\x20\x33\x30\x34\x2e\x36\x36\x31\x20\x2d\x35\x2e\x33\x33\ \x32\x20\x33\x30\x34\x2e\x31\x39\x36\x20\x2d\x35\x2e\x35\x36\x34\ \x20\x33\x30\x33\x2e\x33\x39\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\ \x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x33\x31\x2e\x32\x30\x32\x20\x32\x39\x36\x2e\x35\x39\x39\x43\x2d\ \x32\x38\x2e\x35\x36\x38\x20\x32\x39\x34\x2e\x31\x20\x2d\x32\x35\ \x2e\x37\x37\x38\x20\x32\x39\x31\x2e\x31\x33\x39\x20\x2d\x32\x36\ \x2e\x32\x32\x20\x32\x38\x37\x2e\x34\x32\x37\x43\x2d\x32\x36\x2e\ \x33\x33\x36\x20\x32\x38\x36\x2e\x34\x35\x31\x20\x2d\x32\x38\x2e\ \x31\x31\x31\x20\x32\x38\x36\x2e\x39\x37\x38\x20\x2d\x32\x38\x2e\ \x32\x39\x38\x20\x32\x38\x37\x2e\x38\x32\x34\x43\x2d\x32\x39\x2e\ \x31\x20\x32\x39\x31\x2e\x34\x34\x39\x20\x2d\x33\x31\x2e\x31\x33\ \x39\x20\x32\x39\x34\x2e\x31\x31\x20\x2d\x33\x33\x2e\x37\x30\x37\ \x20\x32\x39\x36\x2e\x35\x30\x32\x43\x2d\x33\x35\x2e\x39\x30\x33\ \x20\x32\x39\x38\x2e\x35\x34\x39\x20\x2d\x33\x37\x2e\x37\x36\x35\ \x20\x33\x30\x34\x2e\x38\x39\x33\x20\x2d\x33\x38\x20\x33\x30\x35\ \x2e\x34\x30\x31\x43\x2d\x33\x34\x2e\x33\x30\x33\x20\x33\x30\x30\ \x2e\x31\x34\x35\x20\x2d\x33\x32\x2e\x30\x34\x36\x20\x32\x39\x37\ \x2e\x33\x39\x39\x20\x2d\x33\x31\x2e\x32\x30\x32\x20\x32\x39\x36\ \x2e\x35\x39\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x34\x34\x2e\x37\ \x37\x36\x20\x32\x39\x30\x2e\x36\x33\x35\x43\x2d\x34\x34\x2e\x32\ \x35\x33\x20\x32\x39\x30\x2e\x32\x36\x35\x20\x2d\x34\x34\x2e\x35\ \x35\x35\x20\x32\x38\x39\x2e\x37\x37\x34\x20\x2d\x34\x34\x2e\x33\ \x33\x38\x20\x32\x38\x39\x2e\x34\x34\x32\x43\x2d\x34\x33\x2e\x33\ \x38\x35\x20\x32\x38\x37\x2e\x39\x38\x34\x20\x2d\x34\x32\x2e\x30\ \x38\x34\x20\x32\x38\x36\x2e\x37\x33\x38\x20\x2d\x34\x32\x2e\x30\ \x36\x36\x20\x32\x38\x35\x43\x2d\x34\x32\x2e\x30\x36\x33\x20\x32\ \x38\x34\x2e\x37\x32\x33\x20\x2d\x34\x32\x2e\x34\x34\x31\x20\x32\ \x38\x34\x2e\x34\x31\x34\x20\x2d\x34\x32\x2e\x37\x37\x36\x20\x32\ \x38\x34\x2e\x36\x33\x38\x43\x2d\x34\x33\x2e\x30\x35\x33\x20\x32\ \x38\x34\x2e\x38\x32\x32\x20\x2d\x34\x33\x2e\x33\x39\x35\x20\x32\ \x38\x34\x2e\x39\x35\x32\x20\x2d\x34\x33\x2e\x35\x30\x33\x20\x32\ \x38\x35\x2e\x30\x38\x32\x43\x2d\x34\x35\x2e\x35\x33\x33\x20\x32\ \x38\x37\x2e\x35\x33\x31\x20\x2d\x34\x36\x2e\x39\x33\x33\x20\x32\ \x39\x30\x2e\x32\x30\x32\x20\x2d\x34\x38\x2e\x33\x37\x36\x20\x32\ \x39\x33\x2e\x30\x31\x34\x43\x2d\x34\x38\x2e\x35\x35\x39\x20\x32\ \x39\x33\x2e\x33\x37\x31\x20\x2d\x34\x39\x2e\x37\x30\x33\x20\x32\ \x39\x37\x2e\x38\x36\x32\x20\x2d\x34\x39\x2e\x33\x39\x20\x32\x39\ \x37\x2e\x39\x37\x33\x43\x2d\x34\x39\x2e\x31\x35\x31\x20\x32\x39\ \x38\x2e\x30\x35\x38\x20\x2d\x34\x37\x2e\x34\x33\x31\x20\x32\x39\ \x33\x2e\x38\x37\x37\x20\x2d\x34\x37\x2e\x32\x32\x31\x20\x32\x39\ \x33\x2e\x37\x36\x33\x43\x2d\x34\x35\x2e\x39\x35\x38\x20\x32\x39\ \x33\x2e\x30\x37\x37\x20\x2d\x34\x35\x2e\x39\x34\x36\x20\x32\x39\ \x31\x2e\x34\x36\x32\x20\x2d\x34\x34\x2e\x37\x37\x36\x20\x32\x39\ \x30\x2e\x36\x33\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x38\x2e\ \x30\x34\x33\x20\x33\x31\x30\x2e\x31\x37\x39\x43\x2d\x32\x37\x2e\ \x35\x39\x39\x20\x33\x30\x39\x2e\x33\x31\x20\x2d\x32\x36\x2e\x30\ \x32\x33\x20\x33\x30\x38\x2e\x31\x30\x38\x20\x2d\x32\x36\x2e\x31\ \x33\x36\x20\x33\x30\x37\x2e\x32\x31\x39\x43\x2d\x32\x36\x2e\x32\ \x35\x34\x20\x33\x30\x36\x2e\x32\x39\x31\x20\x2d\x32\x35\x2e\x37\ \x38\x36\x20\x33\x30\x34\x2e\x38\x34\x38\x20\x2d\x32\x36\x2e\x36\ \x39\x38\x20\x33\x30\x35\x2e\x35\x33\x36\x43\x2d\x32\x37\x2e\x39\ \x35\x35\x20\x33\x30\x36\x2e\x34\x38\x34\x20\x2d\x33\x31\x2e\x34\ \x30\x34\x20\x33\x30\x37\x2e\x38\x33\x33\x20\x2d\x33\x31\x2e\x36\ \x37\x34\x20\x33\x31\x33\x2e\x36\x34\x31\x43\x2d\x33\x31\x2e\x37\ \x20\x33\x31\x34\x2e\x32\x31\x32\x20\x2d\x32\x38\x2e\x37\x32\x36\ \x20\x33\x31\x31\x2e\x35\x31\x39\x20\x2d\x32\x38\x2e\x30\x34\x33\ \x20\x33\x31\x30\x2e\x31\x37\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\ \x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x31\x33\x2e\x36\x20\x32\x39\x33\x2e\x30\x30\x31\x43\x2d\x31\x33\ \x2e\x32\x20\x32\x39\x32\x2e\x33\x33\x33\x20\x2d\x31\x32\x2e\x34\ \x39\x32\x20\x32\x39\x32\x2e\x38\x30\x36\x20\x2d\x31\x32\x2e\x30\ \x33\x33\x20\x32\x39\x32\x2e\x35\x34\x33\x43\x2d\x31\x31\x2e\x33\ \x38\x35\x20\x32\x39\x32\x2e\x31\x37\x31\x20\x2d\x31\x30\x2e\x37\ \x37\x34\x20\x32\x39\x31\x2e\x36\x31\x33\x20\x2d\x31\x30\x2e\x34\ \x38\x32\x20\x32\x39\x30\x2e\x39\x36\x34\x43\x2d\x39\x2e\x35\x31\ \x32\x20\x32\x38\x38\x2e\x38\x31\x35\x20\x2d\x37\x2e\x37\x34\x33\ \x20\x32\x38\x36\x2e\x39\x39\x35\x20\x2d\x37\x2e\x36\x20\x32\x38\ \x34\x2e\x36\x30\x31\x43\x2d\x39\x2e\x30\x39\x31\x20\x32\x38\x33\ \x2e\x31\x39\x36\x20\x2d\x39\x2e\x37\x37\x20\x32\x38\x35\x2e\x32\ \x33\x36\x20\x2d\x31\x30\x2e\x34\x20\x32\x38\x36\x2e\x32\x30\x31\ \x43\x2d\x31\x31\x2e\x37\x32\x33\x20\x32\x38\x34\x2e\x35\x35\x34\ \x20\x2d\x31\x32\x2e\x37\x32\x32\x20\x32\x38\x36\x2e\x34\x32\x38\ \x20\x2d\x31\x34\x2e\x30\x32\x32\x20\x32\x38\x36\x2e\x39\x34\x37\ \x43\x2d\x31\x34\x2e\x30\x39\x32\x20\x32\x38\x36\x2e\x39\x37\x35\ \x20\x2d\x31\x34\x2e\x33\x30\x35\x20\x32\x38\x36\x2e\x36\x32\x38\ \x20\x2d\x31\x34\x2e\x33\x38\x20\x32\x38\x36\x2e\x36\x35\x35\x43\ \x2d\x31\x35\x2e\x35\x35\x37\x20\x32\x38\x37\x2e\x30\x39\x35\x20\ \x2d\x31\x36\x2e\x32\x33\x37\x20\x32\x38\x38\x2e\x31\x37\x36\x20\ \x2d\x31\x37\x2e\x32\x33\x35\x20\x32\x38\x38\x2e\x39\x35\x37\x43\ \x2d\x31\x37\x2e\x34\x30\x36\x20\x32\x38\x39\x2e\x30\x39\x31\x20\ \x2d\x31\x37\x2e\x38\x31\x31\x20\x32\x38\x38\x2e\x39\x31\x31\x20\ \x2d\x31\x37\x2e\x39\x35\x38\x20\x32\x38\x39\x2e\x30\x34\x37\x43\ \x2d\x31\x38\x2e\x36\x31\x20\x32\x38\x39\x2e\x36\x35\x20\x2d\x31\ \x39\x2e\x35\x38\x33\x20\x32\x38\x39\x2e\x39\x37\x35\x20\x2d\x31\ \x39\x2e\x38\x36\x33\x20\x32\x39\x30\x2e\x36\x35\x37\x43\x2d\x32\ \x30\x2e\x39\x37\x33\x20\x32\x39\x33\x2e\x33\x36\x34\x20\x2d\x32\ \x34\x2e\x31\x31\x33\x20\x32\x39\x35\x2e\x34\x35\x39\x20\x2d\x32\ \x36\x20\x33\x30\x33\x2e\x30\x30\x31\x43\x2d\x32\x35\x2e\x36\x31\ \x39\x20\x33\x30\x33\x2e\x39\x31\x20\x2d\x32\x31\x2e\x34\x38\x38\ \x20\x32\x39\x36\x2e\x33\x35\x39\x20\x2d\x32\x31\x2e\x30\x30\x31\ \x20\x32\x39\x35\x2e\x36\x36\x31\x43\x2d\x32\x30\x2e\x31\x36\x35\ \x20\x32\x39\x34\x2e\x34\x36\x35\x20\x2d\x32\x30\x2e\x30\x34\x37\ \x20\x32\x39\x37\x2e\x33\x32\x32\x20\x2d\x31\x38\x2e\x37\x37\x31\ \x20\x32\x39\x36\x2e\x36\x35\x36\x43\x2d\x31\x38\x2e\x37\x32\x20\ \x32\x39\x36\x2e\x36\x32\x39\x20\x2d\x31\x38\x2e\x35\x33\x34\x20\ \x32\x39\x36\x2e\x38\x36\x37\x20\x2d\x31\x38\x2e\x34\x20\x32\x39\ \x37\x2e\x30\x30\x31\x43\x2d\x31\x38\x2e\x32\x30\x36\x20\x32\x39\ \x36\x2e\x37\x32\x31\x20\x2d\x31\x37\x2e\x39\x38\x38\x20\x32\x39\ \x36\x2e\x34\x39\x32\x20\x2d\x31\x37\x2e\x36\x20\x32\x39\x36\x2e\ \x36\x30\x31\x43\x2d\x31\x37\x2e\x36\x20\x32\x39\x36\x2e\x32\x30\ \x31\x20\x2d\x31\x37\x2e\x37\x33\x34\x20\x32\x39\x35\x2e\x36\x34\ \x35\x20\x2d\x31\x37\x2e\x35\x33\x33\x20\x32\x39\x35\x2e\x34\x38\ \x36\x43\x2d\x31\x36\x2e\x32\x39\x36\x20\x32\x39\x34\x2e\x35\x30\ \x39\x20\x2d\x31\x36\x2e\x33\x38\x20\x32\x39\x33\x2e\x34\x34\x31\ \x20\x2d\x31\x35\x2e\x36\x20\x32\x39\x32\x2e\x32\x30\x31\x43\x2d\ \x31\x35\x2e\x31\x34\x32\x20\x32\x39\x32\x2e\x39\x39\x20\x2d\x31\ \x34\x2e\x30\x38\x31\x20\x32\x39\x32\x2e\x32\x37\x31\x20\x2d\x31\ \x33\x2e\x36\x20\x32\x39\x33\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\ \x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x34\x36\x2e\x32\x20\x33\x34\x37\x2e\x34\x30\x31\x43\x34\ \x36\x2e\x32\x20\x33\x34\x37\x2e\x34\x30\x31\x20\x35\x33\x2e\x36\ \x20\x33\x32\x37\x2e\x30\x30\x31\x20\x34\x39\x2e\x32\x20\x33\x31\ \x35\x2e\x38\x30\x31\x43\x34\x39\x2e\x32\x20\x33\x31\x35\x2e\x38\ \x30\x31\x20\x36\x30\x2e\x36\x20\x33\x33\x37\x2e\x34\x30\x31\x20\ \x35\x36\x20\x33\x34\x38\x2e\x36\x30\x31\x43\x35\x36\x20\x33\x34\ \x38\x2e\x36\x30\x31\x20\x35\x35\x2e\x36\x20\x33\x33\x38\x2e\x32\ \x30\x31\x20\x35\x31\x2e\x36\x20\x33\x33\x33\x2e\x32\x30\x31\x43\ \x35\x31\x2e\x36\x20\x33\x33\x33\x2e\x32\x30\x31\x20\x34\x37\x2e\ \x36\x20\x33\x34\x36\x2e\x30\x30\x31\x20\x34\x36\x2e\x32\x20\x33\ \x34\x37\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x31\x2e\ \x34\x20\x33\x34\x34\x2e\x38\x30\x31\x43\x33\x31\x2e\x34\x20\x33\ \x34\x34\x2e\x38\x30\x31\x20\x33\x36\x2e\x38\x20\x33\x33\x36\x2e\ \x30\x30\x31\x20\x32\x38\x2e\x38\x20\x33\x31\x37\x2e\x36\x30\x31\ \x43\x32\x38\x2e\x38\x20\x33\x31\x37\x2e\x36\x30\x31\x20\x32\x38\ \x20\x33\x33\x38\x2e\x30\x30\x31\x20\x32\x31\x2e\x32\x20\x33\x34\ \x39\x2e\x30\x30\x31\x43\x32\x31\x2e\x32\x20\x33\x34\x39\x2e\x30\ \x30\x31\x20\x33\x35\x2e\x34\x20\x33\x32\x38\x2e\x38\x30\x31\x20\ \x33\x31\x2e\x34\x20\x33\x34\x34\x2e\x38\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x32\x31\x2e\x34\x20\x33\x34\x32\x2e\x38\x30\x31\x43\ \x32\x31\x2e\x34\x20\x33\x34\x32\x2e\x38\x30\x31\x20\x32\x31\x2e\ \x32\x20\x33\x32\x32\x2e\x38\x30\x31\x20\x32\x31\x2e\x36\x20\x33\ \x31\x39\x2e\x38\x30\x31\x43\x32\x31\x2e\x36\x20\x33\x31\x39\x2e\ \x38\x30\x31\x20\x31\x37\x2e\x38\x20\x33\x33\x36\x2e\x34\x30\x31\ \x20\x37\x2e\x36\x20\x33\x34\x36\x2e\x30\x30\x31\x43\x37\x2e\x36\ \x20\x33\x34\x36\x2e\x30\x30\x31\x20\x32\x32\x20\x33\x33\x34\x2e\ \x30\x30\x31\x20\x32\x31\x2e\x34\x20\x33\x34\x32\x2e\x38\x30\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x31\x2e\x38\x20\x33\x31\x30\x2e\ \x38\x30\x31\x43\x31\x31\x2e\x38\x20\x33\x31\x30\x2e\x38\x30\x31\ \x20\x31\x37\x2e\x38\x20\x33\x32\x34\x2e\x34\x30\x31\x20\x37\x2e\ \x38\x20\x33\x34\x32\x2e\x38\x30\x31\x43\x37\x2e\x38\x20\x33\x34\ \x32\x2e\x38\x30\x31\x20\x31\x34\x2e\x32\x20\x33\x33\x30\x2e\x36\ \x30\x31\x20\x39\x2e\x34\x20\x33\x32\x33\x2e\x36\x30\x31\x43\x39\ \x2e\x34\x20\x33\x32\x33\x2e\x36\x30\x31\x20\x31\x32\x20\x33\x32\ \x30\x2e\x32\x30\x31\x20\x31\x31\x2e\x38\x20\x33\x31\x30\x2e\x38\ \x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x2e\x34\x20\x33\x34\ \x32\x2e\x34\x30\x31\x43\x2d\x37\x2e\x34\x20\x33\x34\x32\x2e\x34\ \x30\x31\x20\x2d\x38\x2e\x34\x20\x33\x32\x36\x2e\x38\x30\x31\x20\ \x2d\x36\x2e\x36\x20\x33\x32\x34\x2e\x36\x30\x31\x43\x2d\x36\x2e\ \x36\x20\x33\x32\x34\x2e\x36\x30\x31\x20\x2d\x36\x2e\x34\x20\x33\ \x31\x38\x2e\x32\x30\x31\x20\x2d\x36\x2e\x38\x20\x33\x31\x37\x2e\ \x32\x30\x31\x43\x2d\x36\x2e\x38\x20\x33\x31\x37\x2e\x32\x30\x31\ \x20\x2d\x32\x2e\x38\x20\x33\x31\x31\x2e\x30\x30\x31\x20\x2d\x32\ \x2e\x36\x20\x33\x31\x38\x2e\x34\x30\x31\x43\x2d\x32\x2e\x36\x20\ \x33\x31\x38\x2e\x34\x30\x31\x20\x2d\x31\x2e\x32\x20\x33\x32\x36\ \x2e\x32\x30\x31\x20\x31\x2e\x36\x20\x33\x33\x30\x2e\x38\x30\x31\ \x43\x31\x2e\x36\x20\x33\x33\x30\x2e\x38\x30\x31\x20\x35\x2e\x32\ \x20\x33\x33\x36\x2e\x32\x30\x31\x20\x35\x20\x33\x34\x32\x2e\x36\ \x30\x31\x43\x35\x20\x33\x34\x32\x2e\x36\x30\x31\x20\x2d\x35\x20\ \x33\x31\x32\x2e\x34\x30\x31\x20\x2d\x37\x2e\x34\x20\x33\x34\x32\ \x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x20\x33\ \x31\x34\x2e\x38\x30\x31\x43\x2d\x31\x31\x20\x33\x31\x34\x2e\x38\ \x30\x31\x20\x2d\x31\x37\x2e\x36\x20\x33\x32\x35\x2e\x36\x30\x31\ \x20\x2d\x31\x39\x2e\x34\x20\x33\x34\x34\x2e\x36\x30\x31\x43\x2d\ \x31\x39\x2e\x34\x20\x33\x34\x34\x2e\x36\x30\x31\x20\x2d\x32\x30\ \x2e\x38\x20\x33\x33\x38\x2e\x34\x30\x31\x20\x2d\x31\x37\x20\x33\ \x32\x34\x2e\x30\x30\x31\x43\x2d\x31\x37\x20\x33\x32\x34\x2e\x30\ \x30\x31\x20\x2d\x31\x32\x2e\x38\x20\x33\x30\x38\x2e\x36\x30\x31\ \x20\x2d\x31\x31\x20\x33\x31\x34\x2e\x38\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x32\x2e\x38\x20\x33\x33\x34\x2e\x36\x30\x31\ \x43\x2d\x33\x32\x2e\x38\x20\x33\x33\x34\x2e\x36\x30\x31\x20\x2d\ \x32\x37\x2e\x38\x20\x33\x32\x39\x2e\x32\x30\x31\x20\x2d\x32\x36\ \x2e\x34\x20\x33\x32\x34\x2e\x32\x30\x31\x43\x2d\x32\x36\x2e\x34\ \x20\x33\x32\x34\x2e\x32\x30\x31\x20\x2d\x32\x32\x2e\x38\x20\x33\ \x30\x38\x2e\x34\x30\x31\x20\x2d\x32\x39\x2e\x32\x20\x33\x31\x37\ \x2e\x30\x30\x31\x43\x2d\x32\x39\x2e\x32\x20\x33\x31\x37\x2e\x30\ \x30\x31\x20\x2d\x32\x39\x20\x33\x32\x35\x2e\x30\x30\x31\x20\x2d\ \x33\x37\x2e\x32\x20\x33\x33\x32\x2e\x34\x30\x31\x43\x2d\x33\x37\ \x2e\x32\x20\x33\x33\x32\x2e\x34\x30\x31\x20\x2d\x33\x32\x2e\x34\ \x20\x33\x33\x30\x2e\x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x20\x33\ \x33\x34\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x38\ \x2e\x36\x20\x33\x32\x39\x2e\x36\x30\x31\x43\x2d\x33\x38\x2e\x36\ \x20\x33\x32\x39\x2e\x36\x30\x31\x20\x2d\x33\x35\x2e\x32\x20\x33\ \x31\x32\x2e\x32\x30\x31\x20\x2d\x33\x34\x2e\x34\x20\x33\x31\x31\ \x2e\x34\x30\x31\x43\x2d\x33\x34\x2e\x34\x20\x33\x31\x31\x2e\x34\ \x30\x31\x20\x2d\x33\x32\x2e\x36\x20\x33\x30\x38\x2e\x30\x30\x31\ \x20\x2d\x33\x35\x2e\x34\x20\x33\x31\x31\x2e\x32\x30\x31\x43\x2d\ \x33\x35\x2e\x34\x20\x33\x31\x31\x2e\x32\x30\x31\x20\x2d\x34\x34\ \x2e\x32\x20\x33\x33\x30\x2e\x34\x30\x31\x20\x2d\x34\x38\x2e\x32\ \x20\x33\x33\x37\x2e\x30\x30\x31\x43\x2d\x34\x38\x2e\x32\x20\x33\ \x33\x37\x2e\x30\x30\x31\x20\x2d\x34\x30\x2e\x32\x20\x33\x32\x37\ \x2e\x38\x30\x31\x20\x2d\x33\x38\x2e\x36\x20\x33\x32\x39\x2e\x36\ \x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x34\x34\x2e\x34\x20\x33\ \x31\x33\x2e\x30\x30\x31\x43\x2d\x34\x34\x2e\x34\x20\x33\x31\x33\ \x2e\x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x20\x32\x39\x30\x2e\x36\ \x30\x31\x20\x2d\x35\x34\x2e\x36\x20\x33\x31\x36\x2e\x34\x30\x31\ \x43\x2d\x35\x34\x2e\x36\x20\x33\x31\x36\x2e\x34\x30\x31\x20\x2d\ \x34\x33\x2e\x36\x20\x33\x30\x36\x2e\x36\x30\x31\x20\x2d\x34\x34\ \x2e\x34\x20\x33\x31\x33\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\ \x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x35\x39\x2e\x38\x20\x32\x39\x38\x2e\x34\x30\x31\x43\x2d\ \x35\x39\x2e\x38\x20\x32\x39\x38\x2e\x34\x30\x31\x20\x2d\x35\x35\ \x20\x32\x37\x39\x2e\x36\x30\x31\x20\x2d\x35\x32\x2e\x34\x20\x32\ \x37\x39\x2e\x38\x30\x31\x43\x2d\x35\x32\x2e\x34\x20\x32\x37\x39\ \x2e\x38\x30\x31\x20\x2d\x34\x34\x2e\x32\x20\x32\x37\x30\x2e\x38\ \x30\x31\x20\x2d\x35\x30\x2e\x38\x20\x32\x38\x31\x2e\x34\x30\x31\ \x43\x2d\x35\x30\x2e\x38\x20\x32\x38\x31\x2e\x34\x30\x31\x20\x2d\ \x35\x36\x2e\x38\x20\x32\x39\x31\x2e\x30\x30\x31\x20\x2d\x35\x36\ \x2e\x32\x20\x33\x30\x30\x2e\x38\x30\x31\x43\x2d\x35\x36\x2e\x32\ \x20\x33\x30\x30\x2e\x38\x30\x31\x20\x2d\x35\x36\x2e\x38\x20\x32\ \x39\x31\x2e\x32\x30\x31\x20\x2d\x35\x39\x2e\x38\x20\x32\x39\x38\ \x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x37\x30\x2e\x35\ \x20\x32\x38\x37\x43\x32\x37\x30\x2e\x35\x20\x32\x38\x37\x20\x32\ \x35\x38\x2e\x35\x20\x32\x37\x37\x20\x32\x35\x36\x20\x32\x37\x33\ \x2e\x35\x43\x32\x35\x36\x20\x32\x37\x33\x2e\x35\x20\x32\x36\x39\ \x2e\x35\x20\x32\x39\x32\x20\x32\x36\x39\x2e\x35\x20\x32\x39\x39\ \x43\x32\x36\x39\x2e\x35\x20\x32\x39\x39\x20\x32\x37\x32\x20\x32\ \x39\x31\x2e\x35\x20\x32\x37\x30\x2e\x35\x20\x32\x38\x37\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x32\x37\x36\x20\x32\x36\x35\x43\x32\x37\x36\ \x20\x32\x36\x35\x20\x32\x35\x35\x20\x32\x35\x30\x20\x32\x35\x31\ \x2e\x35\x20\x32\x34\x32\x2e\x35\x43\x32\x35\x31\x2e\x35\x20\x32\ \x34\x32\x2e\x35\x20\x32\x37\x38\x20\x32\x37\x32\x20\x32\x37\x38\ \x20\x32\x37\x36\x2e\x35\x43\x32\x37\x38\x20\x32\x37\x36\x2e\x35\ \x20\x32\x37\x38\x2e\x35\x20\x32\x36\x37\x2e\x35\x20\x32\x37\x36\ \x20\x32\x36\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x39\x33\x20\x31\ \x31\x31\x43\x32\x39\x33\x20\x31\x31\x31\x20\x32\x38\x31\x20\x31\ \x30\x33\x20\x32\x37\x39\x2e\x35\x20\x31\x30\x35\x43\x32\x37\x39\ \x2e\x35\x20\x31\x30\x35\x20\x32\x39\x30\x20\x31\x31\x31\x2e\x35\ \x20\x32\x39\x32\x2e\x35\x20\x31\x32\x30\x43\x32\x39\x32\x2e\x35\ \x20\x31\x32\x30\x20\x32\x39\x31\x20\x31\x31\x31\x20\x32\x39\x33\ \x20\x31\x31\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x30\x31\x2e\x35\ \x20\x31\x39\x31\x2e\x35\x4c\x32\x38\x34\x20\x31\x37\x39\x2e\x35\ \x43\x32\x38\x34\x20\x31\x37\x39\x2e\x35\x20\x33\x30\x33\x20\x31\ \x39\x36\x2e\x35\x20\x33\x30\x33\x2e\x35\x20\x32\x30\x30\x2e\x35\ \x4c\x33\x30\x31\x2e\x35\x20\x31\x39\x31\x2e\x35\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x38\x39\x2e\x32\x35\x20\x31\x36\x39\x4c\x2d\ \x36\x37\x2e\x32\x35\x20\x31\x37\x33\x2e\x37\x35\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x39\x20\x33\x33\x31\x43\x2d\x33\x39\x20\x33\ \x33\x31\x20\x2d\x33\x39\x2e\x35\x20\x33\x32\x37\x2e\x35\x20\x2d\ \x34\x38\x2e\x35\x20\x33\x33\x38\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x33\x33\x2e\x35\x20\x33\x33\x36\x43\x2d\x33\x33\x2e\x35\x20\x33\ \x33\x36\x20\x2d\x33\x31\x2e\x35\x20\x33\x32\x39\x2e\x35\x20\x2d\ \x33\x38\x20\x33\x33\x34\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\x2e\ \x35\x20\x33\x34\x34\x2e\x35\x43\x32\x30\x2e\x35\x20\x33\x34\x34\ \x2e\x35\x20\x32\x32\x20\x33\x33\x33\x2e\x35\x20\x31\x30\x2e\x35\ \x20\x33\x34\x36\x2e\x35\x22\x7d\x0a\x5d\x3b\ \x00\x00\x13\xc7\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x53\x6d\x69\x6c\x65\x20\x77\x69\x74\ \x68\x20\x61\x72\x63\x73\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\ \x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\ \x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x38\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\ \x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\ \x69\x6e\x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\ \x22\x67\x72\x65\x65\x6e\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\ \x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x79\x65\x6c\x6c\x6f\ \x77\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\ \x68\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\ \x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\ \x6b\x65\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\ \x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x58\ \x20\x3a\x20\x73\x63\x61\x6c\x65\x58\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x59\ \x20\x3a\x20\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\x74\x61\x74\x65\ \x20\x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x4c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\x3a\ \x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\ \x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\x43\x68\x61\ \x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\ \x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x53\ \x63\x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\ \x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x6e\x53\x63\x61\x6c\x65\x59\x43\x68\x61\ \x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\ \x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x52\ \x6f\x74\x61\x74\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\ \x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\ \x6e\x20\x73\x63\x61\x6c\x65\x58\x20\x7b\x20\x53\x70\x72\x69\x6e\ \x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\ \x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\ \x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x20\x7d\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x59\x20\x7b\x20\ \x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\ \x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\ \x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\ \x69\x74\x65\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\ \x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x72\x6f\x74\x61\x74\ \x65\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\ \x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\ \x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\ \x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\ \x6e\x66\x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x76\x61\x72\x20\x63\x74\x78\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\ \x28\x27\x32\x64\x27\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x65\x61\ \x72\x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\ \x70\x68\x61\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\ \x68\x61\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x20\x3d\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\ \x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\ \x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\ \x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x63\x61\x6c\x65\x28\ \x63\x61\x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x58\x2c\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x59\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x6f\x74\ \x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x72\x6f\x74\x61\x74\ \x65\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\ \x65\x54\x6f\x28\x37\x35\x20\x2b\x20\x35\x30\x20\x20\x2a\x20\x4d\ \x61\x74\x68\x2e\x63\x6f\x73\x28\x30\x29\x2c\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x37\x35\x20\x2d\x20\x35\x30\x20\x20\x2a\x20\x4d\x61\x74\x68\ \x2e\x73\x69\x6e\x28\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x61\x72\x63\x28\x37\x35\x2c\x37\x35\x2c\x35\x30\x2c\x30\x2c\x4d\ \x61\x74\x68\x2e\x50\x49\x2a\x32\x2c\x74\x72\x75\x65\x29\x3b\x20\ \x2f\x2f\x20\x4f\x75\x74\x65\x72\x20\x63\x69\x72\x63\x6c\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\ \x76\x65\x54\x6f\x28\x37\x35\x2c\x37\x30\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x61\x72\x63\x28\x37\ \x35\x2c\x37\x30\x2c\x33\x35\x2c\x30\x2c\x4d\x61\x74\x68\x2e\x50\ \x49\x2c\x66\x61\x6c\x73\x65\x29\x3b\x20\x20\x20\x2f\x2f\x20\x4d\ \x6f\x75\x74\x68\x20\x28\x63\x6c\x6f\x63\x6b\x77\x69\x73\x65\x29\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\ \x6f\x76\x65\x54\x6f\x28\x36\x30\x2c\x36\x35\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x61\x72\x63\x28\ \x36\x30\x2c\x36\x35\x2c\x35\x2c\x30\x2c\x4d\x61\x74\x68\x2e\x50\ \x49\x2a\x32\x2c\x74\x72\x75\x65\x29\x3b\x20\x20\x2f\x2f\x20\x4c\ \x65\x66\x74\x20\x65\x79\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x39\x30\x20\ \x2b\x20\x35\x20\x20\x2a\x20\x4d\x61\x74\x68\x2e\x63\x6f\x73\x28\ \x30\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x36\x35\x20\x2d\x20\x35\x20\ \x20\x2a\x20\x4d\x61\x74\x68\x2e\x73\x69\x6e\x28\x4d\x61\x74\x68\ \x2e\x50\x49\x2a\x32\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x39\x30\ \x2c\x36\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x61\x72\x63\x28\x39\x30\x2c\x36\x35\x2c\x35\x2c\ \x30\x2c\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x2c\x74\x72\x75\x65\ \x29\x3b\x20\x20\x2f\x2f\x20\x52\x69\x67\x68\x74\x20\x65\x79\x65\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\ \x6c\x6f\x73\x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\ \x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\ \x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\ \x72\x6f\x6b\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\ \x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\ \x74\x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x68\x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\ \x20\x7b\x69\x64\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\ \x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\x3b\ \x20\x6e\x61\x6d\x65\x3a\x22\x4c\x69\x6e\x65\x20\x77\x69\x64\x74\ \x68\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\ \x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x58\x43\ \x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\ \x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\ \x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\x58\ \x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\ \x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x59\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x2e\ \x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\x59\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x72\x6f\x74\x61\x74\x65\x43\x74\x72\ \x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\ \x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\ \x6d\x61\x78\x3a\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x3b\x20\x69\ \x6e\x69\x74\x3a\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x52\x6f\x74\ \x61\x74\x65\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\ \x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\ \x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\ \x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x03\x03\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xd4\x00\x00\x00\x15\x04\x03\x00\x00\x00\xcc\x44\xdd\x3a\ \x00\x00\x00\x30\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x50\x50\ \x50\xcc\xcc\xcc\x30\x30\x30\x40\x40\x40\xb6\xb6\xb6\x74\x74\x74\ \x62\x62\x62\x8a\x8a\x8a\x22\x22\x22\x16\x16\x16\xe6\xe6\xe6\x9e\ \x9e\x9e\x0c\x0c\x0c\x04\x04\x04\xa7\x93\x44\x89\x00\x00\x02\x8e\ \x49\x44\x41\x54\x48\x0d\x9d\x54\x3d\x88\x13\x41\x14\xfe\xf2\xe3\ \x6d\x2e\xb7\xb9\x04\xc1\x43\x21\x07\x0b\x36\x87\xd5\xca\x9d\x8d\ \x85\x06\x56\xb1\x50\x44\x50\xb0\x38\x8b\x04\x14\xdb\x08\x11\x53\ \x89\x82\x07\x87\x36\xb1\x3f\xb8\x05\x4b\x9b\xa0\x28\x4a\x9a\x28\ \x72\x57\x1a\x0b\x11\xad\xae\x92\x6b\xec\x3d\x44\xf0\xcd\xce\x4c\ \xde\x9b\x64\x37\x1c\x3e\xd8\x99\x37\xef\xfb\xde\xfb\xe6\xcd\x0c\ \x0b\x64\x9b\xff\xf4\xdb\x46\x36\xea\x22\x87\xe1\x9e\x74\x53\x78\ \x95\x0f\xbd\xc5\x5e\x8e\xd7\xca\xcb\x87\xee\xda\xae\xd2\xb8\x30\ \x95\xf3\xa1\xdd\x46\x64\xe9\x93\x73\x31\xc4\x67\x9c\x77\xa3\x14\ \x9b\xb2\xb3\xc7\x80\x34\x2e\x4c\xe5\xe2\x78\xcb\xb3\xa4\x7e\x60\ \xe2\x00\xd3\xa4\x70\x22\x91\x9a\xe2\xb2\x94\xdd\xf2\x2c\xa9\x15\ \xbc\x6d\xeb\x2e\x86\x7a\x4a\x93\x9a\xab\x27\x52\xcc\xb5\x7d\x8f\ \xbb\x82\xd9\xc6\x2c\xa9\x17\xb8\x34\xd2\x89\x71\xb6\x54\x69\x2f\ \x91\x62\xae\xa6\x42\x74\x65\xb6\x31\x4b\xca\x26\x01\xb1\x76\xd3\ \xba\x2a\x5f\x4b\xa4\x98\x6b\x3d\xee\xca\x6c\x83\x02\x77\x37\x4a\ \x1d\x8b\xeb\xf9\x6b\xf7\xbb\xba\x6a\xb6\x58\xbb\xc5\x70\xae\x33\ \xc2\x4d\x8e\x93\x57\xdd\xec\x0c\x1d\xae\x45\x23\xcc\x3f\xf1\x3a\ \x4d\xc6\x22\x14\x7a\xe5\xf8\x9e\xac\x0b\xaf\x5f\x38\x9a\x21\x55\ \xca\x37\x70\x60\x8b\x25\x73\x2b\xf0\x1a\x5c\x6e\x7d\xa0\x2c\x56\ \x48\x84\xdd\xea\x95\xd3\x6d\xc6\x22\x94\xb0\x10\xec\x24\x59\x76\ \x68\x85\x58\xce\x90\xda\x5a\x6c\xab\x77\x20\xec\x21\x2a\x35\x2e\ \x27\x80\x08\x5b\x1f\x46\x15\x51\x47\x9d\x68\xae\xa9\x18\x85\x55\ \x65\x43\xf2\x5e\x52\xb6\xa0\x50\x24\xa6\x8f\x8c\x4a\xb6\x86\xea\ \x1d\x08\xf2\x45\x78\x59\x52\xd8\xd6\x39\x34\x2a\x53\x52\x5f\x12\ \x6f\xed\x82\xb2\x47\xe4\x1f\x47\xa9\x2f\xa4\x2e\x0f\x06\x7f\xf4\ \xa1\x90\xd4\x29\xa8\x77\x00\x26\x1f\xa0\xb8\x97\xd1\x15\x6e\x10\ \x93\x31\x25\xf5\x8c\x3e\x61\x85\x25\x94\x03\x41\x21\x28\xd6\x30\ \xa5\xbd\x43\xae\x27\xb8\xf0\xeb\xa8\x06\x5c\x6e\x5d\x5d\x95\xbd\ \x2b\xec\x13\x93\xb1\x08\x15\xbc\xc2\xae\xcc\x2e\xd4\x91\x1b\x89\ \xeb\x24\x2c\xd6\x38\xa5\xfd\xa5\x23\xd4\x0b\x3d\xfa\x35\x6c\x0f\ \xb9\x9c\x80\x22\xf8\x4b\xb4\x64\x2c\xc2\xf3\xd5\x7d\x04\x82\x02\ \xfc\xc4\xe3\x9d\x11\x53\x08\x8b\x35\x4e\xb1\xf7\xb8\xea\x70\xf1\ \xda\xff\x25\xca\x09\x8c\x9a\xa8\xd1\xd2\xd4\xf1\x7f\xd3\x5d\xad\ \x3d\xf8\xd4\x75\xde\x3a\xee\x74\x3f\xae\x58\x8a\xce\x8d\xf5\x44\ \x69\xb7\xbb\x6f\xb4\x6f\xc7\x33\xf7\x9b\x2e\xd7\x02\x11\xbc\x06\ \xf9\x52\xca\x42\x13\xb3\xa1\xe8\x68\xac\xa7\x24\xb6\x3c\x41\xa4\ \xa5\xc3\xb5\xb0\x7a\x05\x64\x8c\x99\x80\x0e\xcb\x91\x29\x14\x6d\ \x68\xa4\x18\x2e\x04\x5e\x5f\xb2\x6c\x7c\x3a\x26\xfe\x81\x06\x3c\ \x9c\x94\x21\x93\x54\xf3\x9c\x7b\xd8\x09\xe2\x6c\xcb\xaa\xfe\x67\ \x57\x63\xa9\xf9\xcd\x5b\xb6\x94\x98\x0f\x27\x75\x5d\x64\x38\xee\ \x91\x94\xdd\xa7\xc5\x54\x52\x6a\xdc\x54\x1e\x63\xff\x00\xe5\x5b\ \x8c\x44\xbf\xe2\x5a\x9c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x15\x03\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x53\x71\x75\x69\x72\x63\x6c\x65\x73\ \x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\x61\x72\x65\ \x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x7d\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\ \x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\ \x73\x6f\x75\x72\x63\x65\x3a\x22\x73\x71\x75\x69\x72\x63\x6c\x65\ \x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x32\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x68\x65\ \x69\x67\x68\x74\x3a\x32\x35\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x35\ \x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\ \x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\ \x74\x72\x69\x6e\x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\ \x65\x3a\x22\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\ \x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x73\x74\x65\x65\ \x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\ \x57\x69\x64\x74\x68\x3a\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6e\x53\x69\ \x7a\x65\x3a\x6e\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x72\x65\x61\x6c\x20\x72\x61\x64\x69\x75\x73\x3a\x72\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\ \x6c\x6c\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\ \x72\x6f\x6b\x65\x3a\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\ \x20\x70\x78\x3a\x78\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x72\x65\x61\x6c\x20\x70\x79\x3a\x79\x43\x74\x72\x6c\x2e\x76\ \x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\x70\x68\x61\ \x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\ \x61\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x52\x61\x64\x69\x75\x73\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x4c\x69\x6e\x65\x57\ \x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\ \x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x4e\x53\x69\x7a\x65\x43\x68\x61\x6e\x67\ \x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\ \x6c\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x78\x43\x68\x61\ \x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\ \x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\ \x79\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x73\x71\x75\x63\ \x69\x72\x6c\x65\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x71\x75\x63\x69\x72\ \x6c\x65\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x76\x61\x72\x20\x63\x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\x22\x32\x64\ \x22\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\ \x72\x20\x4e\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x6e\x53\x69\ \x7a\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\ \x72\x20\x52\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x72\x61\x64\ \x69\x75\x73\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x4e\x3d\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4e\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x4d\x3d\x4e\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\ \x4e\x3e\x31\x30\x30\x29\x20\x4d\x3d\x31\x30\x30\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x4e\x3c\x30\x2e\ \x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\x29\x20\x4d\x3d\x30\ \x2e\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\x3b\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\ \x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\ \x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\ \x53\x74\x79\x6c\x65\x20\x3d\x20\x22\x67\x72\x61\x79\x22\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\ \x6c\x6c\x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\ \x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\ \x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\ \x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\ \x6c\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x20\ \x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x6c\x69\x6e\x65\x57\x69\x64\ \x74\x68\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x69\x20\ \x3d\x20\x30\x2c\x20\x78\x2c\x20\x79\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x69\x3d\x30\x3b\x20\x69\ \x3c\x28\x32\x2a\x52\x2b\x31\x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x20\x3d\ \x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x69\x2d\x52\x29\ \x20\x2b\x20\x63\x61\x6e\x76\x61\x73\x2e\x70\x78\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\x20\x4d\ \x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x4d\x61\x74\x68\x2e\x70\ \x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4d\x61\x74\x68\ \x2e\x70\x6f\x77\x28\x52\x2c\x4d\x29\x2d\x4d\x61\x74\x68\x2e\x70\ \x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x69\x2d\x52\x29\ \x2c\x4d\x29\x29\x2c\x31\x2f\x4d\x29\x29\x20\x2b\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x70\x79\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x20\x3d\x3d\x20\x30\ \x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x78\x2c\x20\x79\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x65\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x78\ \x2c\x20\x79\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\ \x20\x28\x69\x3d\x28\x32\x2a\x52\x29\x3b\x20\x69\x3c\x28\x34\x2a\ \x52\x2b\x31\x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x78\x20\x3d\x4d\x61\x74\x68\x2e\ \x72\x6f\x75\x6e\x64\x28\x33\x2a\x52\x2d\x69\x29\x2b\x63\x61\x6e\ \x76\x61\x73\x2e\x70\x78\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x79\x20\x3d\x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\ \x6e\x64\x28\x2d\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\ \x68\x2e\x61\x62\x73\x28\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x52\ \x2c\x4d\x29\x2d\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\ \x68\x2e\x61\x62\x73\x28\x33\x2a\x52\x2d\x69\x29\x2c\x4d\x29\x29\ \x2c\x31\x2f\x4d\x29\x29\x20\x2b\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x70\x79\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x78\x2c\x20\x79\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x6f\x73\ \x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\ \x72\x6f\x6b\x65\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\ \x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x29\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x66\x69\x6c\x6c\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\x20\x22\ \x79\x65\x6c\x6c\x6f\x77\x22\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x66\x6f\x6e\x74\x20\x3d\x20\x22\x48\ \x65\x6c\x76\x65\x74\x69\x63\x61\x20\x20\x31\x36\x70\x78\x22\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\ \x69\x6c\x6c\x54\x65\x78\x74\x28\x22\x7c\x58\x2d\x22\x20\x2b\x20\ \x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x70\x78\x29\x20\x2b\x20\x22\x7c\x5e\x22\x20\x2b\x20\x4e\ \x20\x2b\x20\x22\x20\x2b\x20\x7c\x59\x2d\x22\x2b\x4d\x61\x74\x68\ \x2e\x72\x6f\x75\x6e\x64\x28\x63\x61\x6e\x76\x61\x73\x2e\x70\x79\ \x29\x2b\x22\x7c\x5e\x22\x20\x2b\x20\x4e\x20\x2b\x20\x22\x20\x3d\ \x20\x7c\x22\x20\x2b\x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\ \x28\x52\x29\x20\x2b\x20\x22\x7c\x5e\x22\x20\x2b\x20\x4e\x2c\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x70\x78\x20\x2d\x20\x31\x32\x35\x2c\ \x20\x63\x61\x6e\x76\x61\x73\x2e\x70\x79\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x65\x73\x74\x6f\ \x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\ \x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\ \x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x6e\x43\x74\x72\x6c\x3b\ \x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\ \x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x34\x3b\x20\x6e\x61\ \x6d\x65\x3a\x22\x4e\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x72\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x33\x30\ \x3b\x20\x6d\x61\x78\x3a\x31\x38\x30\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x30\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x52\x61\x64\x69\x75\ \x73\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\ \x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x78\x43\x74\x72\x6c\x3b\x20\ \x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x35\x30\x3b\x20\x6d\x61\ \x78\x3a\x33\x30\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x38\x30\x3b\ \x20\x6e\x61\x6d\x65\x3a\x22\x58\x22\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\ \x79\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\ \x3a\x33\x30\x3b\x20\x6d\x61\x78\x3a\x33\x30\x30\x3b\x20\x69\x6e\ \x69\x74\x3a\x32\x32\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x59\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\ \x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\ \x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\ \x61\x78\x3a\x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\ \x6d\x65\x3a\x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\ \x7d\x0a\ \x00\x00\x0a\x04\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x74\x6f\x6f\ \x6c\x62\x61\x72\x0a\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x76\x61\x72\x69\x61\x6e\x74\x20\x6c\x61\x62\x65\x6c\ \x73\x0a\x20\x20\x20\x20\x73\x69\x67\x6e\x61\x6c\x20\x62\x75\x74\ \x74\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x28\x69\x6e\x74\x20\x69\ \x6e\x64\x65\x78\x29\x0a\x0a\x20\x20\x20\x20\x42\x6f\x72\x64\x65\ \x72\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\ \x2f\x74\x69\x74\x6c\x65\x62\x61\x72\x2e\x73\x63\x69\x22\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x2e\x68\x65\x69\x67\x68\x74\x20\x2b\x20\x31\x34\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x79\x3a\x20\x2d\x37\x0a\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x52\x6f\x77\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x79\x3a\x20\x33\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\x72\x69\x7a\x6f\ \x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x70\x65\ \x61\x74\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x6d\x6f\x64\x65\x6c\x3a\x20\x74\x6f\x6f\x6c\x62\x61\ \x72\x2e\x6c\x61\x62\x65\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x42\ \x75\x74\x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\ \x3a\x20\x6d\x6f\x64\x65\x6c\x44\x61\x74\x61\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\x74\x6f\x6f\x6c\x62\ \x61\x72\x2e\x62\x75\x74\x74\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\ \x28\x6d\x6f\x64\x65\x6c\x2e\x69\x6e\x64\x65\x78\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\ \x0a\x7d\x0a\ \x00\x00\x0b\xd2\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x72\x0a\x0a\x20\x20\x20\x20\x73\x69\x67\x6e\ \x61\x6c\x20\x63\x6c\x69\x63\x6b\x65\x64\x0a\x0a\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\ \x74\x65\x78\x74\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ \x62\x75\x74\x74\x6f\x6e\x54\x65\x78\x74\x2e\x77\x69\x64\x74\x68\ \x20\x2b\x20\x32\x38\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x62\x75\x74\x74\x6f\x6e\x54\x65\x78\x74\x2e\x68\x65\x69\ \x67\x68\x74\x20\x2b\x20\x31\x34\x0a\x0a\x20\x20\x20\x20\x42\x6f\ \x72\x64\x65\x72\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x64\x3a\x20\x62\x75\x74\x74\x6f\x6e\x49\x6d\ \x61\x67\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\ \x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x74\x6f\x6f\x6c\ \x62\x75\x74\x74\x6f\x6e\x2e\x73\x63\x69\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x63\x6f\x6e\x74\x61\ \x69\x6e\x65\x72\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x31\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x68\x65\x69\x67\x68\x74\ \x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x42\x6f\x72\x64\x65\ \x72\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x70\x72\x65\x73\x73\x65\x64\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\ \x22\x69\x6d\x61\x67\x65\x73\x2f\x74\x6f\x6f\x6c\x62\x75\x74\x74\ \x6f\x6e\x2e\x73\x63\x69\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x77\x69\x64\x74\x68\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\ \x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x31\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x63\x6f\x6e\x74\ \x61\x69\x6e\x65\x72\x2e\x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\ \x6f\x75\x73\x65\x52\x65\x67\x69\x6f\x6e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x62\x75\x74\x74\x6f\x6e\x49\x6d\x61\x67\x65\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\ \x7b\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\x6c\x69\x63\ \x6b\x65\x64\x28\x29\x3b\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x64\x3a\x20\x62\x75\x74\x74\x6f\x6e\x54\x65\x78\x74\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x63\x65\x6e\x74\x65\x72\x49\x6e\ \x3a\x20\x62\x75\x74\x74\x6f\x6e\x49\x6d\x61\x67\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\ \x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x20\x31\x35\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x3a\x20\x63\ \x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\x74\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3a\x20\x54\x65\x78\ \x74\x2e\x52\x61\x69\x73\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x62\x6c\ \x61\x63\x6b\x22\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x73\ \x74\x61\x74\x65\x73\x3a\x20\x5b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x53\x74\x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x50\x72\x65\x73\ \x73\x65\x64\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x77\x68\x65\x6e\x3a\x20\x6d\x6f\x75\x73\x65\x52\x65\x67\x69\ \x6f\x6e\x2e\x70\x72\x65\x73\x73\x65\x64\x20\x3d\x3d\x20\x74\x72\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\ \x72\x6f\x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\x73\x20\x7b\ \x20\x74\x61\x72\x67\x65\x74\x3a\x20\x70\x72\x65\x73\x73\x65\x64\ \x3b\x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x31\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x5d\x0a\x7d\ \x0a\ \x00\x00\x0f\x4b\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x51\x75\x69\x63\x6b\x20\ \x6d\x6f\x64\x75\x6c\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\ \x20\x54\x6f\x6f\x6c\x6b\x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\ \x24\x51\x54\x5f\x42\x45\x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\ \x45\x3a\x4c\x47\x50\x4c\x24\x0a\x2a\x2a\x20\x43\x6f\x6d\x6d\x65\ \x72\x63\x69\x61\x6c\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\ \x61\x67\x65\x0a\x2a\x2a\x20\x4c\x69\x63\x65\x6e\x73\x65\x65\x73\ \x20\x68\x6f\x6c\x64\x69\x6e\x67\x20\x76\x61\x6c\x69\x64\x20\x63\ \x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x51\x74\x20\x6c\x69\x63\ \x65\x6e\x73\x65\x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\ \x69\x73\x20\x66\x69\x6c\x65\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x63\ \x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x20\x63\x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x6c\x69\x63\ \x65\x6e\x73\x65\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x70\ \x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\ \x0a\x2a\x2a\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x20\x6f\x72\x2c\ \x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\ \x69\x6e\x20\x61\x63\x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\ \x74\x68\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x64\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x20\x77\ \x72\x69\x74\x74\x65\x6e\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\ \x20\x62\x65\x74\x77\x65\x65\x6e\x20\x79\x6f\x75\x20\x61\x6e\x64\ \x20\x44\x69\x67\x69\x61\x2e\x20\x20\x46\x6f\x72\x20\x6c\x69\x63\ \x65\x6e\x73\x69\x6e\x67\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\ \x0a\x2a\x2a\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x73\ \x65\x65\x20\x68\x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\x64\x69\x67\ \x69\x61\x2e\x63\x6f\x6d\x2f\x6c\x69\x63\x65\x6e\x73\x69\x6e\x67\ \x2e\x20\x20\x46\x6f\x72\x20\x66\x75\x72\x74\x68\x65\x72\x20\x69\ \x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x75\x73\ \x65\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x61\x63\x74\x20\x66\x6f\ \x72\x6d\x20\x61\x74\x20\x68\x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\ \x64\x69\x67\x69\x61\x2e\x63\x6f\x6d\x2f\x63\x6f\x6e\x74\x61\x63\ \x74\x2d\x75\x73\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\ \x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\ \x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\ \x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\ \x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\ \x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\x64\x65\ \x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\ \x68\x65\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x0a\x2a\x2a\ \x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\ \x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\ \x32\x2e\x31\x20\x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\ \x20\x62\x79\x20\x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\ \x74\x77\x61\x72\x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\ \x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\ \x67\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\ \x43\x45\x4e\x53\x45\x2e\x4c\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\ \x64\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\ \x63\x6b\x61\x67\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\ \x66\x69\x6c\x65\x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\ \x76\x69\x65\x77\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\ \x6e\x67\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\ \x6f\x0a\x2a\x2a\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\ \x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\ \x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\ \x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\x72\x65\ \x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x0a\x2a\x2a\x20\x77\x69\ \x6c\x6c\x20\x62\x65\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\x6c\x69\ \x63\x65\x6e\x73\x65\x73\x2f\x6f\x6c\x64\x2d\x6c\x69\x63\x65\x6e\ \x73\x65\x73\x2f\x6c\x67\x70\x6c\x2d\x32\x2e\x31\x2e\x68\x74\x6d\ \x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x49\x6e\x20\x61\x64\x64\x69\ \x74\x69\x6f\x6e\x2c\x20\x61\x73\x20\x61\x20\x73\x70\x65\x63\x69\ \x61\x6c\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\x44\x69\ \x67\x69\x61\x20\x67\x69\x76\x65\x73\x20\x79\x6f\x75\x20\x63\x65\ \x72\x74\x61\x69\x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\ \x0a\x2a\x2a\x20\x72\x69\x67\x68\x74\x73\x2e\x20\x20\x54\x68\x65\ \x73\x65\x20\x72\x69\x67\x68\x74\x73\x20\x61\x72\x65\x20\x64\x65\ \x73\x63\x72\x69\x62\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x44\ \x69\x67\x69\x61\x20\x51\x74\x20\x4c\x47\x50\x4c\x20\x45\x78\x63\ \x65\x70\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x76\x65\x72\x73\x69\x6f\ \x6e\x20\x31\x2e\x31\x2c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\ \x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x47\x50\x4c\ \x5f\x45\x58\x43\x45\x50\x54\x49\x4f\x4e\x2e\x74\x78\x74\x20\x69\ \x6e\x20\x74\x68\x69\x73\x20\x70\x61\x63\x6b\x61\x67\x65\x2e\x0a\ \x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\x72\x61\ \x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\ \x20\x55\x73\x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\ \x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\ \x6c\x65\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\ \x6e\x64\x65\x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\ \x66\x20\x74\x68\x65\x20\x47\x4e\x55\x0a\x2a\x2a\x20\x47\x65\x6e\ \x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\ \x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\x30\x20\ \x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\x79\x20\ \x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\x61\x72\ \x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x20\ \x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\ \x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\x4e\x53\ \x45\x2e\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\ \x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\x67\x69\ \x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x2e\ \x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\x77\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x69\x6e\ \x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\x2a\x20\ \x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\x20\x47\ \x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\ \x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\ \x30\x20\x72\x65\x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x20\x77\ \x69\x6c\x6c\x20\x62\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\x20\x68\ \x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\ \x67\x2f\x63\x6f\x70\x79\x6c\x65\x66\x74\x2f\x67\x70\x6c\x2e\x68\ \x74\x6d\x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\ \x54\x5f\x45\x4e\x44\x5f\x4c\x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\ \x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\ \x0a\x69\x6d\x70\x6f\x72\x74\x20\x51\x74\x51\x75\x69\x63\x6b\x20\ \x32\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\ \x69\x64\x3a\x73\x6c\x69\x64\x65\x72\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x6d\x69\x6e\x3a\ \x30\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\ \x65\x61\x6c\x20\x6d\x61\x78\x3a\x31\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x76\x61\x6c\x75\ \x65\x3a\x20\x6d\x69\x6e\x20\x2b\x20\x28\x6d\x61\x78\x20\x2d\x20\ \x6d\x69\x6e\x29\x20\x2a\x20\x28\x62\x61\x72\x2e\x78\x20\x2f\x20\ \x28\x66\x6f\x6f\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x62\x61\x72\ \x2e\x77\x69\x64\x74\x68\x29\x29\x0a\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x69\x6e\x69\x74\x3a\ \x6d\x69\x6e\x2b\x28\x6d\x61\x78\x2d\x6d\x69\x6e\x29\x2f\x32\x0a\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\ \x69\x6e\x67\x20\x6e\x61\x6d\x65\x3a\x22\x53\x6c\x69\x64\x65\x72\ \x22\x0a\x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\ \x2e\x6f\x6e\x43\x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x73\x65\ \x74\x56\x61\x6c\x75\x65\x28\x69\x6e\x69\x74\x29\x0a\x20\x20\x20\ \x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x65\x74\x56\x61\x6c\ \x75\x65\x28\x76\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ \x66\x20\x28\x6d\x69\x6e\x20\x3c\x20\x6d\x61\x78\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x62\x61\x72\x2e\x78\x20\x3d\x20\ \x76\x2f\x28\x6d\x61\x78\x20\x2d\x20\x6d\x69\x6e\x29\x20\x2a\x20\ \x28\x66\x6f\x6f\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x62\x61\x72\ \x2e\x77\x69\x64\x74\x68\x29\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x73\x6c\x69\x64\x65\x72\ \x4e\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\x70\x61\x72\x65\x6e\x74\ \x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\ \x69\x67\x68\x74\x3a\x20\x63\x68\x69\x6c\x64\x72\x65\x6e\x52\x65\ \x63\x74\x2e\x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x63\x68\x69\x6c\x64\x72\x65\x6e\ \x52\x65\x63\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\ \x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\x61\x72\x65\x6e\x74\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x3a\x73\ \x6c\x69\x64\x65\x72\x2e\x6e\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x70\x6f\x69\x6e\x74\ \x53\x69\x7a\x65\x3a\x31\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x66\x6f\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x36\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x77\x69\x64\x74\ \x68\x20\x2d\x20\x34\x20\x2d\x20\x73\x6c\x69\x64\x65\x72\x4e\x61\ \x6d\x65\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\x61\ \x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x76\ \x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\ \x66\x74\x3a\x73\x6c\x69\x64\x65\x72\x4e\x61\x6d\x65\x2e\x72\x69\ \x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x35\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\ \x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x3a\x20\x62\x61\x72\x2e\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x33\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x6c\x65\x66\x74\x3a\x20\x62\x61\x72\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\ \x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x67\x72\x61\x79\x22\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\ \x3a\x20\x33\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x6f\x6c\x6f\x72\x3a\x20\x22\x74\x72\x61\x6e\x73\x70\x61\x72\x65\ \x6e\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x72\x61\x64\x69\x75\x73\x3a\x20\x33\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\ \x74\x68\x3a\x20\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x62\x6c\x61\x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\ \x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x20\x62\x61\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x79\x3a\x20\x2d\x37\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ \x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x32\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x31\x35\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\ \x69\x64\x74\x68\x3a\x20\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x62\x6c\x61\x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x64\x72\x61\x67\x2e\x74\x61\x72\x67\ \x65\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x72\x61\x67\x2e\ \x61\x78\x69\x73\x3a\x20\x44\x72\x61\x67\x2e\x58\x41\x78\x69\x73\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x64\x72\x61\x67\x2e\x6d\x69\x6e\x69\x6d\x75\x6d\x58\x3a\x20\ \x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x64\x72\x61\x67\x2e\x6d\x61\x78\x69\x6d\x75\x6d\x58\x3a\ \x20\x66\x6f\x6f\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0b\x0a\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x74\x69\x74\ \x6c\x65\x42\x61\x72\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x69\x74\x6c\x65\x3a\ \x20\x22\x22\x0a\x0a\x20\x20\x20\x20\x42\x6f\x72\x64\x65\x72\x49\ \x6d\x61\x67\x65\x20\x7b\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\ \x69\x6d\x61\x67\x65\x73\x2f\x74\x69\x74\x6c\x65\x62\x61\x72\x2e\ \x73\x63\x69\x22\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\x74\ \x20\x2b\x20\x31\x34\x3b\x20\x79\x3a\x20\x2d\x37\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x64\x3a\x20\x71\x75\x69\x74\x42\x75\x74\x74\ \x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x6c\x65\x66\x74\x2f\x2f\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\ \x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\ \x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x71\x75\x69\x74\ \x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x6f\ \x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\ \x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\ \x3a\x20\x51\x74\x2e\x71\x75\x69\x74\x28\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x63\x61\x74\x65\x67\x6f\x72\x79\x54\x65\x78\x74\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\ \x65\x66\x74\x3a\x20\x71\x75\x69\x74\x42\x75\x74\x74\x6f\x6e\x2e\ \x72\x69\x67\x68\x74\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x2f\x2f\x6c\x65\ \x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\x3b\x20\x72\x69\ \x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x65\x72\x74\x69\x63\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x65\x6c\x69\x64\x65\x3a\x20\x54\x65\x78\x74\x2e\x45\x6c\ \x69\x64\x65\x4c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x74\x69\x74\x6c\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\x20\x74\ \x72\x75\x65\x3b\x20\x66\x6f\x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\ \x69\x7a\x65\x3a\x20\x32\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x57\x68\x69\x74\x65\x22\x3b\x20\x73\x74\x79\x6c\x65\x3a\x20\ \x54\x65\x78\x74\x2e\x52\x61\x69\x73\x65\x64\x3b\x20\x73\x74\x79\ \x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x42\x6c\x61\x63\x6b\x22\ \x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x5b\xdf\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xfa\x00\x00\x00\xfa\x08\x06\x00\x00\x00\x88\xec\x5a\x3d\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x5b\x81\x49\x44\x41\x54\x78\xda\xec\ \xbd\x09\xb8\x1c\x57\x75\x27\x7e\x4e\xef\x6f\x5f\xb4\xcb\xda\x2c\ \x4b\xf2\xbe\xaf\x60\xc0\xd8\xc6\x66\x0b\x90\x00\x21\x26\x99\x24\ \x40\x18\x26\xdf\x4c\x20\x93\x49\xbe\xcc\x7c\x59\x26\x5f\x32\x90\ \xc9\x42\x02\x61\x48\x32\xff\x10\xf8\x87\x40\x02\x81\xb0\x24\x61\ \x09\x8b\x01\x2f\xd8\x80\xc1\xbb\x25\x59\xfb\xae\x27\xe9\xe9\xe9\ \xe9\xed\xbd\x9e\xb9\xb7\xaa\x5f\x77\xd5\xad\x73\x6e\xd5\x7b\xaf\ \x5a\x96\xcd\xbd\x9f\x4a\xdd\xaf\xbb\xba\xfa\xf6\xad\x7b\xb6\xdf\ \xd9\x90\x88\xc0\x0d\x37\xdc\x78\x61\x8f\x8c\x5b\x02\x37\xdc\x70\ \x84\xee\x86\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\ \x1b\x8e\xd0\xdd\x70\xc3\x0d\x47\xe8\x6e\xb8\xe1\x46\x4a\x23\x17\ \x77\x02\xfe\xd2\x56\xcb\x9b\x08\x10\xf4\xce\x21\x73\x0e\x05\xde\ \xf3\x5c\x79\xd8\x7c\xee\x3d\xcd\xab\xc7\x82\x7a\x96\x55\xcf\x97\ \xa9\xc7\x3e\x75\x0c\x43\x8d\x7a\xa1\x41\x83\x90\xcb\x0c\xac\x1c\ \x2e\xf4\xae\x18\xc8\xaf\xdc\xb6\xae\xd4\xb3\x75\x5d\x69\x79\x6f\ \x77\xa6\xaf\x41\x30\xa4\x2e\xd0\xf0\x27\x00\x33\xea\x38\xa1\xfe\ \xde\xa7\x1e\xf7\xfa\x07\xea\xc7\x53\xea\x98\x0b\x4f\x04\x17\xbf\ \x52\x41\x37\x24\x62\xe8\xf5\xe9\x39\x82\xee\x12\xaa\x97\x31\xf0\ \x9b\xc9\x3b\xaf\x5a\x6d\x40\x3e\xd7\xfc\xcd\x81\xef\xd7\xa7\xce\ \xce\x35\xa0\x58\xc8\x84\x2e\xe7\x7d\x4f\xeb\x3a\x14\xf8\x08\x06\ \x7e\x83\xf0\x5b\x5a\xe7\x23\x44\x6e\x4c\xe8\x5a\x81\xb9\x50\xe0\ \x06\xa1\x7c\x33\x1b\x6a\xb5\xa7\x66\xea\x30\xd0\x97\x05\x0a\x7e\ \xa6\x39\xdf\x4a\xa5\x01\xd9\x2c\x7a\x47\x70\x2e\xd9\x0c\xc2\xc8\ \xe9\x1a\x14\xf2\x08\x43\xfd\x59\x68\xd4\x29\xf0\x13\x90\x59\xe3\ \xf9\xb5\xa2\xf6\xf5\x83\xbf\x07\x31\xbc\x46\xc1\xb5\x50\xaf\xff\ \xde\x4b\xbf\xe5\xa8\x7a\x31\x84\x9e\xd2\x28\xa9\x63\x9b\x3a\x6e\ \x52\xc7\x65\xea\xd8\xa0\x8e\x15\xea\x1e\x0d\xaa\xc7\x21\x75\x9f\ \x7a\xd5\x63\x41\x11\x78\x5e\x3f\x0e\x0f\xe5\xe1\x92\x8d\xdd\x70\ \xd9\x86\x2e\x58\x39\x94\x83\xee\x62\x16\x32\x19\x82\x5a\x5d\x6d\ \x38\x62\x18\x09\x86\x37\x9d\x7a\x9c\x52\x7f\x8e\xa8\x3f\x76\xaa\ \x37\x76\x37\x8f\x1d\xea\xd8\xa3\x8e\x71\x75\x4c\xb9\x5b\xef\x86\ \x23\xf4\xf4\xc6\xcd\x8a\xe0\xde\xa4\x88\xf1\x55\xea\x50\x04\x8e\ \xd9\x90\x94\x9f\x1f\x9a\xcb\x2b\x89\xb1\x7a\x55\x09\x5e\x7c\x45\ \x2f\x5c\xaa\x08\xbc\xaf\x3b\x03\x75\xf5\x5a\x5d\xbd\x57\x57\x04\ \x5c\xab\x92\x21\x01\x30\x2a\x78\x10\xe7\x25\xa9\x62\x1c\xb4\x45\ \xfd\xb1\xc5\x90\x7e\x5a\xc2\x1f\x69\x12\xbc\xd6\x00\x34\x23\xd8\ \xde\xd4\x04\xc6\xd4\x31\xe1\xb6\x84\x1b\x8e\xd0\x93\x8f\xd7\xab\ \xe3\x57\x15\x8d\xdd\x2e\xea\xcb\xf3\xda\x98\x52\x6d\x7b\xfa\xf2\ \x70\xc7\x75\x03\x70\xed\xb6\x6e\xe8\x56\xaa\x6c\x45\x11\xf7\x5c\ \x85\xc2\xaa\x2c\x1a\x6a\xed\x3c\xc7\x08\xa9\x80\x9c\x4a\x8b\xc1\ \xc7\x92\x4f\xfc\xde\x11\xbc\x4e\x59\xbd\x7f\x48\x3d\x39\xa8\x9e\ \x1f\x50\xcf\x35\xf1\x3f\xa5\x0e\xfd\xda\xc9\xa6\x16\xe0\x86\x1b\ \x8e\xd0\x9b\xe3\x0a\x75\xbc\x57\xd1\xdb\x1b\x58\x53\x2f\x68\x6e\ \x69\x1d\xbc\xa6\xf4\xf8\x8b\x7a\xe1\xee\x9b\x07\x61\xf5\x70\x1e\ \x2a\x8a\xe8\xe7\xd4\x11\x25\xd6\xa0\xed\x16\xbc\xd0\xfc\xc5\x82\ \x7f\x5b\x0d\x6d\x61\x42\x50\x54\xc7\xd6\xe6\x11\x7c\xbd\xd2\x24\ \x76\x7d\x1c\x56\xc7\xd3\xea\x78\xa6\xf9\xfc\x58\x53\x0b\x00\x17\ \x44\xec\xc6\x8f\x13\xa1\xff\x8a\xda\xf1\xef\x55\x8f\x03\x21\x2c\ \x88\xc3\x77\x1a\x3e\x21\xbd\xf4\xa6\x01\xb8\xeb\xda\x7e\x65\x7f\ \x2b\x9d\xba\xdc\x88\x00\x56\x6d\xf0\xc5\x42\xc3\x68\x12\x7b\x10\ \x94\x22\x41\xba\x07\x40\x28\x0c\x7e\xce\xbc\x26\x16\x5a\x1a\x40\ \x48\x6b\xf0\x18\xc0\x51\x75\x1c\x57\x1f\xdd\x95\xcb\xe2\xb3\x4d\ \x0c\xe0\x70\x93\x29\x8c\xba\xad\xe5\xc6\x0b\x8d\xd0\xbb\xd5\xf1\ \x21\xb5\xe1\x7f\xa9\x45\x07\x36\x11\xa7\x88\x5c\x11\x06\xfc\xc4\ \xad\xcb\xe0\xe6\xcb\x7a\xa0\x5a\xf3\x41\x36\x9e\x90\xe7\x25\xb9\ \x49\xe9\x28\x13\x30\xc4\xa9\xf2\xe6\xc7\xd0\x50\x08\x9a\x44\x4e\ \x68\x30\x8b\x90\x09\xa0\x19\xc0\x85\xfe\x81\x2f\xee\x2a\xb6\xf8\ \x46\x55\x1d\x23\xea\xaf\x91\xa6\xfd\xff\x74\xd3\xfe\xd7\xc4\xbf\ \xdf\x31\x00\x37\x9e\xaf\x84\xae\x89\xfc\x53\x6a\xef\xbf\x3e\xec\ \x46\x03\xd6\xc3\xa3\x01\x37\x4d\x40\xaf\x7f\xe9\x72\x8f\xc8\xb5\ \x14\xa7\x96\xdd\x4d\x0c\xd1\x62\xf8\x31\x62\xa3\x1b\x84\xd8\x42\ \xdd\x21\xaa\x1d\x98\xae\xaa\xe0\x75\x90\xe1\x00\x08\xcc\x0f\xe1\ \x19\x07\xb5\x5c\x40\xa0\xbd\x06\xeb\xd5\xd3\xf5\xea\xef\x1b\xbd\ \x05\xf6\x5d\x6b\x8a\x01\xe0\xa8\xcf\x04\x3c\xc9\xff\x4c\x93\x01\ \x1c\x80\x36\x10\xd8\x70\xdb\xd1\x8d\xf3\x91\xd0\xbb\x5a\x44\x6e\ \xa3\xcf\x20\x8d\xd4\x09\xee\xbc\x79\x18\x6e\xbc\xa4\xdb\x27\xf2\ \xb0\x9a\x6c\xa8\x03\x98\xd0\xce\x0e\x7c\x6e\x9e\x78\x91\x04\x29\ \x4f\x82\xfd\x6f\x10\x39\x91\xa1\x19\x00\xef\xf7\x9d\x07\x03\x25\ \x2c\x42\x3d\xf1\x3f\x82\x9a\x01\xac\x51\x7f\xaf\x51\x2f\x5d\xab\ \x5f\xd4\x5f\x51\x2c\x60\x4d\x3d\x3b\xab\xde\x3f\xda\xd4\x00\xf4\ \xa1\x3d\x02\xbb\x9a\x0c\x60\xa2\x69\x26\xb8\xe1\x46\xa7\x09\x5d\ \x54\x7d\xff\x52\x6d\xda\xd7\x47\xe8\x0d\x18\x69\xee\x29\xb5\x04\ \x57\x5d\xdc\x0b\x77\x5c\xdb\x07\x15\xa5\xae\x13\xfb\x1d\x68\x21\ \x68\x62\xec\x75\x12\x08\x10\x85\xf7\x51\xf8\x4c\x50\x63\x30\x83\ \x4e\x6c\x20\x1f\x07\x10\x52\x20\xa8\xc3\x98\x8b\x81\x39\x20\xa2\ \x5a\x7f\xd2\x81\x42\xfa\xb8\xaa\xfd\x3e\x69\x63\x66\x52\x9d\xa3\ \x55\xfe\xdd\x01\xe2\xdf\xde\x34\x01\x14\x73\x08\x06\x03\xb9\xe1\ \x46\x67\x24\xfa\xbb\xd5\xf1\xf6\xd0\x1e\xb6\xd9\xe5\x4a\x92\x0f\ \x2d\x2b\xc0\x6b\x5f\x34\x04\x9a\xc4\x5b\x81\x55\x56\x55\xdc\x24\ \x76\xc3\xee\x0e\xba\xdd\x22\x00\x9b\xf0\x7e\x90\x18\x5b\xdf\x8d\ \x8c\xc2\x80\xf2\xd7\xb7\xa6\x68\x9a\x1c\x10\x65\x4a\x12\xc3\x44\ \xe3\x37\x98\x6a\x01\x42\xd6\x0f\x26\x42\x75\xd0\x55\xc6\x24\x26\ \x9a\x2a\xff\xbe\xe6\xe3\x8e\x26\x03\x98\x07\x01\x67\xdc\xb6\x76\ \x23\x0d\x42\xbf\x5a\x1d\x7f\x64\x3d\x83\xd1\x86\xef\xbe\x61\x10\ \xfa\x7b\x32\x50\xb6\xb9\xcf\x42\x2a\xb3\xe0\x0a\x6b\x05\xc5\x30\ \x5f\x18\x04\xe1\x10\x65\xa9\x8f\x02\xd3\x88\x08\x6c\x49\xc3\xa0\ \xa8\x96\x10\x41\xee\x8d\xcf\x84\x42\x5b\x9b\xc4\x1e\xbc\x06\x05\ \xcd\x0f\x4e\x3d\x6a\x5d\xa7\x5f\x9d\x73\x55\x4b\x03\x68\x01\x87\ \x34\xad\x4e\xd9\x1f\x60\x02\xcf\x36\xc1\x40\x6d\x16\x9c\x00\x17\ \x0d\xe8\x08\x7d\x01\x43\x27\xc1\xfc\xa9\xda\x50\xdd\xac\xfb\x9a\ \x73\xa5\x55\x1a\x70\xc9\x45\xbd\x70\xe5\xe6\x2e\xcf\x4f\x1e\x26\ \xcc\x20\x21\x92\x21\xb4\xd1\x2e\xd1\x43\xcf\x63\x00\x33\xd6\xd5\ \x16\x20\x22\xe4\x08\xdb\x62\xc2\xd8\xce\xc3\x00\xd1\x06\x09\x3c\ \x18\xf0\xc3\x79\x05\xcc\xd7\xd8\xbc\x01\x41\x53\xf0\x5f\xea\x51\ \x4f\x74\x1c\xc3\x15\x06\xb7\xd1\x04\x7e\x58\x3d\x3d\xd2\x24\xfe\ \x67\x9a\xa6\xc0\x91\x26\x13\x98\x74\x64\xe0\x08\xdd\xdc\x70\x3f\ \xa5\xf6\xd0\x5d\x40\x82\x04\x37\xe9\x4d\x6d\xcc\x4c\x3e\x03\x2f\ \xb9\xb2\xaf\x69\x9a\x9a\x52\xd6\x04\xca\x24\x95\x00\x2c\x51\x71\ \x14\x66\x0c\xa6\x0d\x0f\xc0\x73\x22\xe2\xa4\x27\x58\x98\x89\x04\ \x0a\x32\x89\x26\x11\x26\x45\xc6\x5a\x92\xc0\xcc\x24\x24\x33\x60\ \x96\x50\xf0\x5a\x28\x98\x13\xa1\x75\xee\x55\x7f\x5e\xaa\x5e\x53\ \x07\xdd\xd5\xd6\x60\x94\x06\xe0\x07\xfd\x1c\x6b\xaa\xff\x4f\x35\ \xf1\x80\xe3\x4d\x33\xc0\x85\x03\xff\x58\x11\x7a\x7b\xaf\x69\xdf\ \xf1\xff\x88\x80\x6f\x36\x57\xb5\xb2\xcd\x37\x6f\xec\x86\x4d\xab\ \x0b\x50\xab\x19\xe2\x1e\xe3\xb2\xc9\x82\xea\xac\x00\xb8\x21\x19\ \x34\x2a\x80\x63\x1c\x81\x4a\x28\xbc\x99\x3d\x16\x61\x76\xa6\x16\ \x81\x0c\xa1\x05\xfe\x96\x00\x4d\xd1\xbe\x87\xa8\xaa\x24\x9a\x34\ \x9c\x46\xc0\x68\x2c\xac\x99\x42\x4a\x03\x80\xad\xea\xb9\x8e\x06\ \xbc\x2d\x70\xfe\x8c\x3a\xf5\x84\x7a\x7a\xac\x69\xfb\x07\x5d\x81\ \x8e\x01\xfc\x18\x48\xf4\x3b\xd4\x06\xb8\xc1\x26\x74\xa3\x66\x25\ \xc2\x35\xdb\x7a\xbc\x00\x99\x5a\x83\x62\xd0\x2d\x26\x35\x13\x39\ \xb5\xc2\x40\xc3\x51\x92\xc4\x16\xe2\x8c\x20\xe2\x82\x6d\x8f\x36\ \x29\xce\xa8\xf3\xc4\xd8\xf7\x44\x76\xf0\x22\x62\x72\x18\x04\x19\ \xf2\xff\x53\x0c\x37\x66\x6c\x7b\x14\x18\x4d\x14\x5d\x9c\x5f\xa3\ \x6e\xf5\xf7\x85\xfe\x81\xb7\xb6\x6c\xb6\x0c\xcc\xf4\x76\x67\xc7\ \xd4\x74\x8e\x36\x89\x7f\x47\x13\x0b\x98\x4f\x10\x9a\x06\x17\x0d\ \xfc\x82\x90\xe8\x6f\x8f\xec\x11\x69\x0f\x37\x63\xd9\x7b\xfb\xf2\ \xb0\x75\x6d\xd1\x4b\x52\x09\x7d\x50\x02\xbf\x4c\xb4\x3a\xa2\x79\ \x93\x00\xa4\xc5\xd0\xb9\x4d\xe3\x8e\x7c\xd9\xfc\x75\x85\x88\x3c\ \xc9\x53\xc0\x05\xe9\xb4\xe8\x4d\x40\xf8\x59\x06\x85\x61\x5b\x9f\ \x63\x18\x68\x73\xfb\x49\x6e\x43\x80\x50\xa0\x10\x19\x58\x40\x50\ \x23\xe1\x31\x88\x6e\x45\xec\x3a\x40\x6a\x9d\x5a\x9b\x9b\xfd\x39\ \x78\xe7\x6b\x37\xdf\x78\x36\x03\x07\xd5\xc7\x76\x35\x71\x80\x3d\ \xcd\x47\xad\x05\x4c\x92\x9f\x80\xe8\xc6\xf3\x00\x8c\x5b\xe9\x49\ \x74\x41\x68\x48\x6a\xfb\x96\xb5\x25\xe8\xeb\xce\x7a\x7e\xf3\x30\ \x31\x4b\x94\xcc\x81\x68\x01\x62\xe6\xd4\x5d\xe4\xd4\xf6\xf9\xcf\ \x81\x50\x88\x21\xe6\xb5\x79\x22\x20\x86\xc9\xa0\xf0\x39\x8c\xc3\ \x00\x28\xe6\xbb\x63\x98\x5e\x28\x86\x80\x84\xf5\xe3\x70\x0d\x13\ \x20\xc4\x30\xf0\x19\x99\xbf\xe9\x01\x31\xb1\x80\x08\x00\x5a\x52\ \x8f\xab\xb3\x59\x5c\xad\x5e\xba\x39\x60\xb2\xe8\x70\xe0\xb3\x8a\ \xdf\xef\xe9\xed\xce\xec\x51\x8c\x60\xbf\xfa\xe8\x3c\x18\xa8\xb5\ \x82\xf1\xe6\x39\x6e\x9c\x47\x84\x7e\x9b\xba\x89\xcb\x6d\xc0\x75\ \x54\xb3\x46\xd8\xb0\xba\xe8\x25\xac\x44\x24\xd7\x7c\x60\x8a\x75\ \x9f\x0a\x15\x5d\x80\x01\xa1\xac\xda\x01\x86\xcf\x0b\x6d\x68\xee\ \xcb\x51\x30\x19\xb8\xef\xa7\xb0\x2d\x2e\xa1\xf1\x68\x86\xe2\x26\ \x8c\xfe\x0b\xf9\xd9\x6d\xae\x0d\x10\xc0\x3f\x8c\xc1\x04\xc8\xb2\ \x8e\x1c\xb8\x19\x64\x1a\x18\x66\xd0\x18\x60\xe2\xfe\xb5\x74\x34\ \xe0\x72\x75\xea\xf2\x9e\xae\xcc\x2d\x3e\xff\xf4\xde\xd7\xd9\x4b\ \x67\xd4\x1a\xcc\xab\xfd\x7b\x9b\xd2\x7f\x67\x13\x08\xd4\x95\x81\ \x5c\x34\xe0\x73\x60\xa3\xeb\x5b\x77\x37\xab\xfa\x4a\x76\xba\x46\ \xdb\x0b\x19\xd8\xb8\xa2\x00\xb5\x3a\xe3\x87\xb3\xda\xc1\x12\x91\ \x31\x3e\xe9\x50\x96\x1a\xda\x55\x62\x04\xc6\xb6\x0f\x20\xf7\xa2\ \xcd\x0a\xd1\x39\x47\x6c\x73\xc1\x6f\xcf\xa9\xf9\xb6\x52\x48\x12\ \xf7\x34\x81\x3e\x76\xae\x86\x09\xd1\xfa\x5d\x12\x16\x60\x82\x93\ \xe6\x14\x24\xcf\x83\x14\xa3\x20\xdb\x4d\x6d\xb5\xdd\xd3\x4a\x32\ \xcd\xb2\x61\xea\xa0\x1b\x8d\xb5\x3c\xa3\xde\xdf\xdf\x04\xfd\xb4\ \x19\xf0\x54\xf3\x51\xd7\x04\xd0\x79\x02\x2e\x1a\xb0\x83\x12\x7d\ \xad\x5a\xfc\x2b\x01\x2d\x04\xce\x84\xab\xf7\xf7\xe4\xa0\xbf\x37\ \xeb\xd5\x1a\x8b\x4a\x23\x4b\x90\x4a\x9c\xb1\x1d\xdc\x58\x88\x36\ \x24\x90\xb9\x54\x82\x0d\xce\xfe\x28\x06\xd0\x33\xed\xe9\x90\x7a\ \x2f\x30\x87\xa0\xfa\x1f\x22\x44\x81\xc1\x20\x46\xa5\x71\x44\x7d\ \x5f\x48\xec\x3e\xd8\xb5\x02\xf3\x9e\x44\x80\xc0\x84\xda\x0f\x5a\ \x98\x74\xc4\xa3\x10\x62\x2a\x43\xea\xb9\x0e\x9f\xbc\xce\xf8\x2a\ \xa5\x01\x78\x29\xc0\x87\x9b\x20\xa0\x0e\x04\x9a\x77\x05\x1e\x77\ \x0c\x20\x1d\x42\xdf\x08\xba\xde\x1b\x25\x00\xec\xe6\x1f\x95\x61\ \xb6\xbc\x2f\x07\x85\x1c\x36\xf7\x18\x13\x59\x13\x1b\x9c\x42\x56\ \xac\x2a\xba\x31\xd1\x2e\xb1\xa4\x8d\x66\x55\xa1\x2d\xf3\x33\x8b\ \x2d\x12\x73\x1d\x1b\x33\x43\xc9\x9e\x97\x18\x4d\x12\xe4\x1c\x8d\ \xc4\x1e\x53\x6d\xe7\x08\xd0\xb0\xc9\x43\x44\xcc\x31\x04\x14\xb4\ \xa0\x38\xf3\xc3\xd0\xe0\x5a\x4c\x8f\x04\xa6\x17\x62\x76\x43\xea\ \x89\x3a\xbc\x68\xc0\xd7\x06\xd6\x74\xac\x29\xe9\x8f\x34\x6d\xff\ \xaf\x35\x0f\x37\x16\x41\xe8\x3a\xef\x7a\xd0\x6a\x93\x33\x4c\xbb\ \xaf\x27\xe3\x55\x3f\xad\xd4\x1a\x16\xa2\x84\x64\xa0\x52\x24\x8b\ \x4c\x48\x66\x31\xcb\x4a\x11\x30\x2a\x26\x42\x62\x37\x5c\x44\x1a\ \x52\xd8\xd6\x0f\xfa\xb7\x51\x08\xce\x11\x89\x1d\x19\x2e\x29\xe4\ \xf8\x06\xaf\x81\x5c\xf1\x0c\xb4\xfc\x06\x48\x08\xfc\x41\x0c\x33\ \x0c\xda\xfe\x82\x66\x11\x44\xf7\xe7\xf3\xf9\xa5\x0c\x40\x44\x01\ \xc8\xc4\x18\x2d\x22\x34\x86\xd5\xfb\xea\x20\x5d\x8f\xf0\x6e\x75\ \xcd\x55\x8e\xd0\xf9\x11\x5f\xd7\x9d\x60\x53\x6b\xb5\x2d\x39\x1c\ \xa6\x90\x28\x15\x33\xcd\xd2\xbf\x86\xbb\x48\x44\xf4\x38\x0e\x82\ \xf2\x97\x62\x50\x0a\x19\xc4\x18\x92\x08\x10\x6f\x03\x9b\xd7\x27\ \x29\x10\x05\xf9\x69\x8b\x6a\x2d\x63\x1a\x10\x19\xd2\x13\xc3\x52\ \x2e\xa2\x21\xd8\xfc\xf9\xe6\x3a\x30\xd7\xb1\x62\x1e\xc1\x9f\x1e\ \xa7\xe1\x70\x38\x8b\x69\xbb\x07\x19\x07\x59\xa6\x40\x16\xcd\xd0\ \x06\x36\x4a\x9b\x2e\x54\xfc\xd3\x8d\x45\x11\x3a\xc0\x72\xab\xe9\ \xcc\xd1\x8b\xda\x04\x5d\x85\x60\xfd\x6f\x13\x05\xa7\xf0\xa6\x37\ \x37\x5b\x88\x18\x88\x91\xee\x08\x32\xe3\x11\x40\x23\x8e\x10\xc8\ \x90\x9a\x04\x82\x84\x04\x0b\x61\xa1\x45\x4a\x43\xf4\xf7\x07\x5d\ \x74\xa1\xfa\xe8\xc0\x30\xa8\xf9\x79\x0a\x4c\x12\x0d\x75\x9a\xab\ \x8b\x2e\xa2\xa7\x18\x50\xf5\x83\xef\x07\xd6\xbd\x75\x1f\x24\x60\ \x8e\x7b\x44\xde\xf6\xb7\x12\x2a\x77\xad\xe0\x77\x53\xe0\xf7\xc5\ \x5d\xc7\x8d\xc5\x12\xfa\xa0\xc8\x99\x45\xef\x13\x41\x2e\x83\xd1\ \x30\x50\x4e\x7a\x20\x63\x9f\x45\xa4\x28\xca\x80\x80\x88\xe7\x71\ \xf1\xe7\x20\x13\x0a\xa2\x10\xcd\x86\xbc\xf6\x60\x53\x6d\x09\xe3\ \x25\x69\x44\x03\x01\xc6\xf5\x67\xea\xc9\x18\x05\xd8\x4c\x26\xc2\ \x9d\x2b\xad\x23\x49\xf8\x43\xf0\x23\x68\x98\x40\x68\x30\x00\x86\ \xc9\x91\x61\x36\x20\x0a\x73\x32\x88\xd9\xac\xff\x17\xfc\x5c\x64\ \xb9\x31\x6a\x9e\x39\xa2\x5f\x12\xa1\x37\x22\x7b\x2e\xd6\xf4\x43\ \x2f\xef\xbc\x2d\x71\x91\x51\xdd\xb8\x0d\x00\x16\xe4\xd6\xdc\x9c\ \x31\xaa\xa6\x14\xe2\x6a\x6a\x05\x60\x91\x94\x24\xf8\xfa\x51\x62\ \x3c\x41\x20\x2c\xce\x35\x21\x04\x07\xb5\xa4\xb3\xa1\x45\x20\x84\ \xb5\x00\x34\xba\x97\x00\xa3\x15\x01\x47\x04\x46\xe0\x0c\x31\x8c\ \x0b\x25\xc6\x10\x30\x25\x22\xda\x54\x92\x28\x2a\xd3\x34\x42\x3b\ \x90\xc9\xda\x49\xc8\x83\x8f\x6e\x2c\x99\xd0\x63\x6b\x31\x82\x85\ \x5e\x45\x35\x98\x6c\xba\xbf\xb9\x41\x19\xd7\x12\x51\xbc\xaa\x1c\ \x34\x11\xc4\x24\x17\x1b\xe8\x64\x84\x8b\xc6\xb9\xfd\xb8\x6b\x12\ \x63\x83\x12\x58\x54\xdd\x98\x44\x17\x94\x00\x3d\x26\xd3\x4d\xbc\ \x56\x9c\x2b\x0c\x64\x93\xcb\xd4\x82\x28\x8e\xc0\x19\xd0\xd1\x0c\ \xe4\x41\x01\xdf\x08\x4a\xfb\x58\x89\x8d\x4e\xa0\x2f\x99\xd0\x49\ \x00\x71\xd1\x86\xdb\x70\x36\x1a\xf2\x6a\x73\x44\x1d\xa3\x98\x4d\ \x89\x96\x1c\x73\x46\x62\xb0\x40\x0f\x25\x20\x04\x02\x1e\x15\x67\ \x00\xaa\xa0\xda\x1d\x54\x6d\xd1\xd4\x60\x84\xf9\x12\x09\xbc\xc7\ \xc4\x31\x92\x30\x66\xb4\xa4\xe0\x1a\x52\xdd\xca\x28\x6c\xb6\x11\ \xa3\xfd\x44\x18\x03\x83\x71\x40\x92\xac\x3d\x06\x8f\x61\x99\x69\ \x12\x2d\xd0\x8d\x85\x4b\x74\x1b\x61\x93\x45\x7b\x43\xc6\xdd\xc3\ \x01\x62\xa1\x9b\x69\x84\x97\xb2\x1b\x06\x63\x24\xab\x69\xbf\x1a\ \x92\x96\xe2\xc0\x9c\xa0\x8b\x28\x26\x72\x2e\xa8\x82\xa2\xcd\x8f\ \xcf\x30\x29\xc4\xd8\xe8\xb2\x70\xe8\x29\x13\x0d\xc7\x69\x48\x2d\ \x06\x21\xb9\x15\xc9\x8e\x25\x44\x18\x90\xc5\xfd\x07\xe6\xf7\x80\ \x8c\xab\x98\x0c\x9d\x28\x66\x53\xa1\xb0\xae\xb1\x37\xdf\x8d\xc4\ \x84\x1e\x67\x72\x51\x32\xdc\x29\xb2\x41\xcc\xe4\x0c\xc9\x25\x44\ \x28\xa8\x65\x02\x92\x8e\x64\xd9\x60\xa6\x76\x1d\x97\x86\x07\x16\ \x55\x46\x60\x0a\x11\xe6\x66\x8b\x51\x4f\xa0\x5a\x03\x17\x69\x67\ \x44\xe7\x85\xf8\x90\x94\x7c\x20\x31\x9e\x18\x0c\x23\x08\x90\x91\ \x8d\x11\x99\xf7\x8d\xd1\x98\x08\xa2\x9a\x4b\x50\x13\x20\xcb\x85\ \x89\x93\x26\x71\x36\xa6\x1b\x8b\xb7\xd1\x69\x91\xef\x49\x46\xbd\ \x29\x2d\x11\xa3\xa0\x1d\x97\xae\x49\x5c\xf5\x96\x60\x5b\xe6\x24\ \x51\x65\x64\x31\x19\x18\x89\x49\xd2\x0f\x36\xd3\x70\x03\x1b\x93\ \x48\x90\xc4\x46\x61\x09\xb2\xe4\xba\x13\xa7\xf9\x48\xb5\xf0\x2d\ \xf9\xed\x71\x1a\x89\x29\x4d\xcd\x75\x44\x01\x59\x47\xae\x48\x06\ \x03\xde\x44\xf8\x5e\xc0\xdb\x41\xc8\x14\xca\xc4\x18\x0d\xca\x21\ \xed\xe9\x11\xba\x84\x83\x24\x66\x9e\x64\x17\xfb\x24\x00\x5f\x14\ \xd8\x04\x5c\xa0\x05\x0a\x29\xae\xa6\xd4\xa1\x38\xe9\x09\x82\x4d\ \xc8\x45\xba\x71\x84\x69\x30\x8d\x48\x91\xc7\xe0\x6f\xb3\x49\x43\ \x4b\x96\x5a\xa4\xce\x1c\xf0\x4d\x27\x4c\x02\x09\x6a\x2d\x56\x0d\ \x43\x42\x55\xd1\xce\x70\x38\xdf\x76\xc4\xec\x67\x54\xf0\x90\xa6\ \x60\x32\x75\xc9\xc5\xc9\x61\x36\x92\xc6\xe5\xc6\xe2\x54\xf7\x38\ \x20\x35\xf2\x3a\x43\x84\x14\x03\xe6\x44\xd0\x75\xe2\xed\xf2\xb8\ \xb4\x4d\x34\x91\x5d\x8a\xb7\xfd\x42\xc4\x4a\x3c\x13\x0a\x9d\x8a\ \x76\x42\x43\x09\xd5\x96\x6c\x52\x0c\xb7\x87\x22\x92\x6d\xe6\x88\ \xfd\xcd\xb9\xce\x38\xe6\x03\x42\xf0\x8b\x04\x50\x9a\xf9\xef\x18\ \x7d\x3d\xe4\x67\x27\x8b\xa9\xc3\x71\x00\x81\x31\xa2\x74\x3e\x32\ \xc0\xa4\x14\xb8\xe3\xc6\xe2\x24\x3a\x5a\x4c\x5e\x2e\x69\x0c\x31\ \x6a\xd3\xa1\x25\xfa\x4a\x34\x1f\x99\x40\x15\xb2\x64\x42\x71\x80\ \x50\xa4\xec\x32\x87\x1d\x18\xea\x22\x49\x21\xb5\x0c\x40\x65\x2e\ \x06\x92\x4c\xd0\xb6\x52\xd5\x10\xc0\x18\xd0\xe6\xee\x33\x7c\xd9\ \x80\xbc\x47\x21\x54\x3b\xdf\xe4\x65\x04\xd1\x10\x63\xce\xb7\xcf\ \x61\x1b\x64\x68\x28\xc4\x7b\x08\x58\x10\x93\xc3\x35\x90\x67\x4a\ \x48\xe1\x79\x52\x40\xda\x23\x09\x8c\xca\x8d\xa5\xd9\xe8\x52\x17\ \x24\x0b\xf8\x1d\x01\xa7\x88\x18\x3a\x37\xcb\x1a\x71\x65\x9b\x8c\ \x89\xa0\x0d\x20\x20\x86\xfe\x98\x09\xa2\xa0\x9e\x46\x92\x44\x62\ \x0a\x5e\xb0\xaa\x3d\x0a\xa1\xb4\x4b\xdd\x9b\xb6\x68\x41\x46\x75\ \x47\x8b\xfa\x85\x9c\x79\x62\xb8\x43\x39\x8c\x03\x39\xd5\x19\xa2\ \xbf\xdb\xd4\x88\x42\x8c\x9a\x33\x61\x04\x20\x2e\x52\xa7\x9f\x2c\ \x9a\x14\x08\x18\x8b\x1b\x7a\x24\x2b\x0e\x99\xa4\x1a\xb2\x14\x8f\ \x22\x6d\x2e\x36\x35\x93\x6b\x78\x60\x8b\x30\x93\xa4\x3a\x2c\xa0\ \xda\x4b\x32\x04\x17\x8d\xcf\x93\xa9\x52\x7b\xfd\xd4\xa8\x49\x63\ \xc4\x30\x2c\x21\x77\x9d\x53\x75\x23\x19\x6f\x36\x9f\x74\x0c\x63\ \x62\x89\x33\x58\x2a\x4b\xba\xa6\x00\x4a\xda\x0a\x66\x98\xcc\x05\ \x99\xcd\x82\x42\x11\x8c\x48\xfa\xb1\x65\x2f\x9a\x95\x76\xd1\xa9\ \xed\x4b\x27\x74\x49\x45\x8f\xed\x64\x4c\xd6\x10\x59\x3e\xc5\x11\ \x13\x70\x1a\x8a\x4a\x56\xb4\x65\xdb\x60\x02\x4e\xd6\x26\x62\x1d\ \xa2\x9f\xcd\xe8\xaa\xa7\x7e\x2e\xbd\x2e\x9c\xa1\x0b\xd8\x36\xbc\ \x0a\x87\x0d\xa8\xd6\x6a\x50\xad\x57\xbd\x4f\x65\x31\xa3\xce\x53\ \x87\x7a\x44\xf5\xd9\x6c\x26\xeb\xfd\x8e\x3a\x34\x80\x1a\xba\xf5\ \x54\x03\x1a\x7e\x0b\x59\x75\x6e\x4e\x9d\x97\xf3\x0a\xf6\x20\xa2\ \x85\x90\x8d\x66\x0f\xdc\x5c\x63\x8b\x76\x80\x50\xdc\x92\x12\xd8\ \xb4\xb6\x7c\x7e\xdb\x8d\x0f\xa2\xfb\x49\x8a\x8a\x08\x60\xa6\x35\ \xe5\x36\xb8\x36\x60\x71\x29\xba\xb1\x78\x42\x07\x0b\x00\x97\x74\ \x8d\x23\x35\xd0\xd0\x0e\xfa\x85\xee\xb7\x19\x70\x83\x86\x3d\x6b\ \xa8\x14\x84\xbc\x8d\x19\x9c\x47\xf3\xb3\x59\x45\xd4\xb9\xac\x4f\ \xd4\x33\xe5\x06\x9c\x3a\x53\x83\x53\x13\x55\x18\x1b\xaf\xc0\xc8\ \x99\x32\x8c\x4e\xcd\xa8\xcf\xe4\x60\xa0\xd8\x0f\x97\xac\xdc\x00\ \x5b\xd6\x6c\x81\x0b\x87\x56\xc2\xea\xfe\x65\x30\xd0\xdd\x0f\x43\ \xbd\x43\xd0\x53\xec\x81\x35\xc3\x6b\xa0\x56\xaf\xc0\x74\x75\x1c\ \xca\xb5\x29\x98\x2c\x9f\x86\xb3\x95\x93\x70\xb6\x3c\x02\x63\xb3\ \x47\xe1\xf4\xdc\x51\xf5\xfa\x34\x54\xd4\x39\x19\xcc\xaa\xef\xcd\ \x2b\xdb\x29\x13\x95\x84\x64\x03\xb3\x80\x37\x33\x42\xd5\x70\x91\ \x97\x72\x66\x73\x0b\x0e\xed\x67\x9b\x58\x1a\x00\xa7\x8d\x09\x21\ \x67\xdb\x41\x0c\xa2\x8b\xc2\x1e\xb1\x20\xe9\x6c\x4d\x0c\x27\xd5\ \x97\x46\xe8\x49\x3c\x54\xa6\x2d\x4d\x86\x64\x22\x92\x03\x3e\x58\ \x7b\xdb\x02\x0e\x44\x4a\x2b\x33\xc5\x14\xd1\xc2\x35\x9a\xf3\xc8\ \x67\xbd\x8e\xa6\x30\x3e\x55\x83\x5d\x87\xcb\xb0\xff\xe8\x1c\x1c\ \x38\x55\x86\xb3\x53\x15\x80\xc9\x69\xc5\x01\x72\xb0\x69\xed\x45\ \xf0\x96\xab\x6e\x83\xbb\x2e\xbd\x05\xae\xdf\x7c\x0d\xac\xe8\x1d\ \x84\xae\x52\xd7\x82\x17\xba\xd6\xd0\x0c\xe0\x0c\x9c\x98\xda\x0f\ \x87\x26\x9e\x84\x03\xe3\x8f\xc3\xc8\xcc\x1e\x98\xa9\x4d\x7a\x44\ \x9f\x53\x44\x8f\x20\x15\x73\x14\x9a\x44\xb0\xb8\x84\x24\xc9\xd1\ \x2e\x89\x41\x68\x12\x81\x4c\xad\xf9\x44\x9b\x45\x30\xbb\x5a\xc5\ \x31\x91\x61\x4a\xc4\x77\xbe\x0d\x4d\x97\xeb\x56\x6b\x66\xcc\xb9\ \xb1\x70\x42\x97\xe2\x17\x6c\xde\x2b\x0e\x88\x43\x1b\x82\x17\x53\ \x20\x91\x4d\x4f\x24\xbe\xeb\x29\x07\xd0\x18\x6a\xb2\xae\x7c\xa3\ \x51\xc8\x03\x27\x2b\xf0\xc8\x8e\x29\xd8\x75\x68\x16\xa6\x14\xb1\ \x43\xbd\xae\x28\x72\x16\xf2\x7d\x03\xf0\x93\x2f\x7d\x03\xbc\xed\ \x25\x6f\x84\xdb\x2f\x7f\x29\x74\x15\xba\x96\xbe\xd0\x99\x82\xd2\ \x08\x56\x79\xc7\xb6\x65\xb7\x78\x6a\xfd\xe8\xcc\x21\x78\x76\xec\ \x21\xd8\x3e\x7a\x1f\x1c\x99\xdc\x01\x35\x9a\x85\x42\xb6\x4b\x4d\ \x37\x13\xc3\x70\x49\xb0\x87\x41\x70\xcd\x21\x2f\xc1\xcd\xeb\x84\ \x2a\xd4\x9a\x52\x9e\x04\x80\x2f\xae\xc8\xa5\x45\xbb\x9b\x67\x24\ \x1e\x3d\x93\x6f\xd2\x98\x8c\x09\x39\x14\x93\x09\x2e\x72\x74\x9e\ \x32\x18\x97\x30\x1f\x41\xee\x5d\xce\x31\x80\x18\x15\xd3\x2c\x53\ \x64\x82\x74\x28\x55\x3d\x09\x7f\x7f\x46\x6d\xd6\x42\x3e\x03\x47\ \x47\xab\x70\xdf\x13\x93\xf0\xd4\xbe\x69\xa0\x72\x5d\x1b\xdb\x4a\ \x6f\x2f\x03\x2a\xfd\xfd\x9e\x5b\xdf\x04\xbf\xf9\xea\xff\x04\xd7\ \x6c\xba\xb2\xa3\x0b\xaf\x89\x79\x45\xcf\x26\xef\xb8\x75\xdd\x3d\ \xb0\xf7\xcc\x0f\xe1\x91\x63\x5f\x84\x67\xcf\x3c\x04\x95\x86\x26\ \xf8\x92\x81\x41\x98\xf8\x86\x80\x8c\x26\xaa\xaa\x1b\x20\x7c\x32\ \x4a\x35\x03\x53\x5d\x17\x31\x86\x7e\xc9\x82\xd4\x72\x26\x44\x50\ \xeb\xf0\xf7\x00\x4a\x09\x48\xa6\x84\x47\x83\xb0\x91\x0c\xf3\xce\ \x8d\xc5\x4b\x74\x14\x00\x39\x6b\x6c\xbb\x01\x9c\x70\x52\x3c\xd4\ \x18\xd1\x06\xc4\x09\xd5\x49\xd9\xb2\xc9\xbc\xd3\xdf\x6b\x0b\x55\ \x43\xb8\xf7\x87\x13\xf0\xe0\x13\x67\x61\x76\xb6\xae\xc5\xac\x3a\ \xd4\xf9\xe5\x69\xb8\x66\xf3\x55\xf0\x27\x3f\xfd\xdf\xe1\xae\xab\ \x6e\x3f\xe7\x37\x41\x13\xfd\x96\xe1\x9b\xbc\xe3\xc0\xf8\x63\x70\ \xff\xa1\x4f\xc2\xae\x33\x0f\x37\xed\xf8\x02\x8f\x46\x73\x6a\x34\ \x09\xe8\x75\xa4\x91\x85\xd9\xab\x1d\x40\x2e\x6d\xcd\x80\x68\x64\ \x12\x1a\xda\x19\x4a\xf8\xc7\xc6\xa4\xfd\x2e\x00\x45\x4f\x54\x36\ \xdc\x8d\xe4\x12\x9d\xa1\x3b\x11\xa0\x65\x55\x33\x62\x54\x47\x90\ \x61\x7c\x8c\x4b\xcc\x30\x91\x7b\x0c\x4b\x26\x83\xa9\x14\x15\x31\ \x9f\x38\x53\x85\x2f\x3e\x78\x06\x0e\x1c\x9e\xf1\x25\x78\x41\x11\ \x79\xad\xaa\x24\x79\x0d\x7e\xe5\x95\xef\x80\xf7\xbd\xf9\x37\xa1\ \xbf\xbb\xff\x39\xbf\x21\x9b\x06\xaf\x85\x4d\x03\xd7\xc0\xa3\x23\ \x5f\x81\x6f\x1f\xfc\x28\x8c\x95\x8f\x7b\xea\x3c\x9f\x34\x43\x51\ \x40\x93\xd0\x80\x3d\xa4\x86\x96\x0c\x43\x24\x01\x1b\xb0\xfa\x57\ \x25\x80\xce\x52\x60\x92\xad\xa9\xcf\x15\xb5\xe4\x50\x7a\x02\xb1\ \x80\x87\xf3\xa3\xa7\x64\xa3\xc7\xa9\xf5\x12\x87\x98\x27\x76\xae\ \x45\x12\x71\x21\xa7\x12\x1a\x1c\x54\x39\x29\x5a\x3f\x8e\x01\xac\ \x8a\x79\x84\x9d\x87\xe7\xe0\xf3\xdf\x39\x0d\x93\x93\x35\x9f\xc0\ \xf5\xa8\x56\xa0\x27\x5f\x80\x0f\xfe\x87\xf7\xc2\x3b\x5f\xfe\x73\ \xe7\xd7\x5d\x51\x73\xbf\x6e\xcd\x6b\xe1\xa2\xa1\x1b\xe1\x2b\x7b\ \x3e\x08\x4f\x9f\xfe\x36\xe4\x33\x45\xf5\x72\x36\xde\x06\x16\x6b\ \xb7\x0b\x5d\x60\x9b\xaa\xba\x57\xc8\x93\xe9\xc2\x52\xa9\x55\xbc\ \xf3\xb5\x7b\x91\x9a\xae\x42\x7d\x46\xc6\x73\x13\x66\xd5\x63\xd6\ \xc7\x14\x50\x8c\x3c\x60\x78\x84\xc1\x4c\x88\x78\x1c\x26\xe2\x46\ \x95\xf0\x01\x27\xce\xd3\x41\xdd\x01\x16\x9e\xd4\xc2\xe6\xa4\x83\ \xdd\x0e\xb3\xd5\xfd\x37\x83\x42\x50\xb0\x0b\x03\xa1\xb6\x25\x45\ \xd4\x8f\xee\x9e\x55\x44\x3e\xaa\xd4\x76\xb5\x49\xf3\xd8\x22\xf2\ \xbe\x62\x17\x7c\xe6\xbf\xfc\x1f\x78\xd5\xd5\xaf\x38\x6f\x6f\xce\ \x40\x69\x25\xfc\xcc\xe5\xff\x0b\xd6\x1e\xfc\x04\xdc\x7b\xe8\x63\ \xea\x27\x35\x3c\x97\x9c\x8c\x77\x70\xb8\x87\x10\x9d\x16\x58\xeb\ \x9c\x32\x61\xfe\xed\xa1\x33\x70\xf8\xd8\x9c\x6f\xca\x34\xaf\x47\ \xd5\x59\xf8\xe3\x7b\x7e\x07\x6e\xbf\xec\x46\x18\x9d\x3e\x02\x53\ \x95\x31\x98\xa8\x9c\x82\xc9\xea\x18\xcc\x54\xce\xc2\x4c\x55\x99\ \x40\xb5\x09\x98\xa9\x9d\x85\x3a\xd5\x7c\x06\x80\xb9\xa8\x74\x10\ \x3b\xe4\x52\x14\x1b\x68\xdd\x43\x2e\x28\x28\xae\x15\xb6\x93\xe8\ \x4b\x23\xf4\x24\x65\x9e\xcd\xf3\x6c\x25\xb9\x23\xa1\xa6\x52\x9f\ \x72\x88\x57\x19\x23\xcf\xfd\x6b\x97\xf2\x19\xf8\xd1\xee\x19\xf8\ \xdc\xb7\x47\xa1\xa1\xdb\x42\x65\x9b\xe7\x28\x09\xd5\x5f\xea\x86\ \xcf\xfc\xe7\x0f\xc3\x2b\xaf\xbe\xe3\xbc\xbf\x41\xda\x4e\xbf\x6d\ \xd3\xdb\x14\xd1\xaf\x86\x7f\xdd\xf3\x7e\xa8\x36\xe6\x20\xa7\xa4\ \x3b\xab\x2e\x13\xc4\xac\x61\x94\xa1\xea\x00\xa1\x99\xd9\x3a\x6c\ \x3f\x30\x0b\x93\xe3\x15\x7f\x9d\x3c\xfa\xab\x2b\x29\x9f\x83\x6b\ \x57\xbf\x18\xd6\xf5\x5d\xa2\x8e\x28\x38\x59\xa9\xcf\xb6\x8e\xc9\ \xf2\x18\xec\x3a\xfd\x20\x3c\x70\xf4\x53\x5e\x70\x10\x5b\x63\xcf\ \x9c\x0f\x26\x89\x66\xa4\x68\x6e\x02\x72\xed\xaf\x93\xb4\xd2\xfd\ \xf1\x1d\x99\x05\x7f\xc2\xe6\x4d\x91\x4a\x2f\x73\xc9\x1d\xd2\x4d\ \x0d\xdd\x74\xa1\x5b\x84\x94\x54\xd2\x74\xed\x15\x15\x91\xcf\xab\ \xeb\x0d\xdd\xc9\x75\xbe\x22\x6d\xbd\xae\x34\xf7\x2c\x7c\xea\x97\ \xff\xe2\x79\x41\xe4\xc1\x71\xcd\xea\x57\xc1\x3d\x97\xfe\x3e\x14\ \x95\xbd\x5e\x6b\x54\xf9\x0e\x28\x92\x64\x24\x99\x5b\xeb\x28\xc0\ \x53\x13\x75\x8f\xd8\x3d\x8d\x47\x13\xba\x27\xd5\xeb\xb0\x65\xed\ \x46\xd8\xb2\x66\xa3\x38\x27\x8d\x1d\xf4\x16\x86\x61\xb8\xeb\x02\ \xd8\x38\x78\x25\x6c\x1a\xba\xd6\x73\x1b\x92\x64\xcf\xc5\xb6\x8e\ \xb6\x80\xc1\x66\x33\x08\xae\x26\x9f\x1b\x4b\x20\x74\x5b\x81\x12\ \xb2\xe9\xf9\xc1\xaa\x24\x49\x00\x00\x4b\x24\x14\x71\x29\x8d\x60\ \xa4\x6a\xfa\x43\x07\xc1\x9c\x3c\x53\x83\xcf\x29\x22\xaf\x57\x1a\ \xfe\xc6\x9d\x07\x7f\xaa\x73\xf0\xa7\x3f\xf3\x5b\xf0\x9a\x6b\xef\ \x7a\x5e\xde\xac\x6d\xcb\x6e\x85\x37\x6d\xfb\x1d\x2f\xe4\xb6\xae\ \x24\x6e\x2c\x78\x4a\x86\x04\x64\x34\x1f\xed\xbb\x1e\x19\xad\xf8\ \x6b\x95\x09\xbc\xdf\xa8\xc3\xb5\x17\x6c\x55\xe6\x4f\xf2\x18\x02\ \x1d\x14\x14\x2e\xdb\x05\x4c\xb6\x1f\x30\xf8\x8c\xd9\x4c\x42\x68\ \x05\x95\x58\x0b\x70\x63\xe9\x12\x3d\x86\x01\x47\x2a\x8b\x20\x26\ \xd3\xa8\x42\xb5\xcd\x6c\x78\x80\x54\x26\x19\xbc\x16\xcd\x55\xb5\ \xff\x3f\xff\xc0\x18\x4c\x4e\x54\x7d\xc9\x34\x7f\xfa\xdc\x34\xbc\ \xfd\xe5\xf7\xc0\x7b\x5e\xf9\x4b\xcf\xeb\x1b\x76\xe9\x8a\xdb\xe0\ \x75\x17\xfd\x1a\x34\x14\xa1\x6b\xe9\xd9\x5e\x04\x23\xc5\x76\x1e\ \xc7\x98\x4f\x4b\x25\xd3\x65\xd2\x66\xae\x07\x4f\x96\xa3\xc1\x8a\ \x8a\xd0\x5f\x7e\xe9\x8b\x17\xb7\x31\xcc\x42\x91\x18\xe7\x9f\x45\ \x26\x4d\xde\x00\x66\x49\xea\xfc\x92\x34\xa7\xc1\x11\x7a\x32\x82\ \x4e\x9a\x1b\x41\x0b\xd9\x08\x71\x35\xc8\x21\xac\x3e\x58\x3d\x44\ \xe4\x45\xbc\x7d\xfb\xd1\x09\x38\x78\x68\x46\x89\xf6\x40\x0c\x79\ \xa5\x0c\x17\x6f\xb8\x04\xfe\xec\x9e\xdf\x7e\x41\xdc\xb4\x1b\xd6\ \xbe\x01\x6e\xbd\xe0\x2d\x9e\x6d\x6c\xaf\x5e\x6d\x32\x5a\x34\xac\ \x23\x84\xd9\x72\x03\x46\x4e\x57\xc2\x6b\xdb\x68\x40\xb6\xd4\x03\ \xd7\xae\xbb\x78\x89\x33\x8d\x89\x94\xe3\x5a\x51\x01\xa7\xa6\x0b\ \xe7\x01\x3a\x02\x4f\x55\x75\x97\xb4\x29\x5b\xdc\x43\xa8\xf0\x9f\ \x19\xae\x28\x75\x01\x25\x39\x0a\x2f\xe4\xbf\x37\x42\x69\xd5\xbf\ \x7c\x2e\x03\xfb\x8f\x95\xe1\xc1\xa7\x26\xda\xe8\xba\x77\x6e\x03\ \x50\x89\xfa\xbf\xfc\xd9\xdf\x83\xa1\xde\xe1\x17\xcc\x8d\xbb\xeb\ \xc2\xff\x04\x17\x0d\xde\xe0\x45\xd1\x85\x08\x41\x6a\xaa\xc0\x30\ \x63\x6d\x9f\x8f\x4f\xd5\xe1\xcc\x64\xdd\x57\xdb\xe7\xe9\xa6\x5e\ \x83\x0b\x86\xd7\xc0\xa5\xeb\x2e\x59\x9c\xa6\x67\xde\x5f\x8a\x29\ \xb3\xcd\x7a\x64\x20\x19\xf1\xbb\x91\xb2\xea\x2e\x35\x69\x90\x4c\ \x6b\x02\x7b\x83\x42\xab\x39\x80\x4c\x3e\x0b\x0a\x95\x57\xc8\x7b\ \xb9\x56\x23\xf8\xea\x23\x67\xc3\xb6\xa6\x7e\x7b\x6e\x06\xde\xf1\ \xd2\x37\xc3\x9d\x57\xde\xf6\x82\xba\x71\xb9\x6c\x11\x7e\x62\xcb\ \xaf\x41\x77\xae\x4f\xa9\xf1\x35\xd6\x94\x61\x6f\x4c\xe0\x1e\xea\ \x54\xdc\xe3\xca\x3e\xaf\xea\x30\xe0\xa0\x66\xdf\xa8\xc1\xd5\x6b\ \xb7\x40\x5f\x57\xdf\x12\xcd\xb9\x00\x13\x0f\xb5\xcf\x36\x99\x00\ \xc9\xc8\x7c\x70\xe2\x44\x8c\x3d\x9f\x58\x95\xfc\xb1\x1e\x8b\x0b\ \x81\xb5\x81\x75\x20\xd5\x32\x13\x88\x9d\x4b\x4b\xb6\x15\x84\x60\ \xb2\xe0\x74\x1f\xf6\x1f\x6c\x9f\x82\xc3\x47\x67\xfc\xb0\xd6\xf9\ \x51\xaf\xc2\xb2\xa1\x95\xf0\x3f\xdf\xf0\x9e\x73\xb2\x98\x3b\x47\ \x9e\x81\xbf\xbf\xef\x5f\xe0\x99\x23\xfb\xa0\x01\x55\x25\x31\x33\ \xb0\x5e\x49\xc6\x9b\xb6\xde\x00\x2f\xdf\x76\x23\xac\x5f\xbe\x3e\ \xd5\xef\x5b\xd5\x7b\x11\xbc\x7c\xc3\xdb\xe0\xcb\xfb\xfe\x02\x8a\ \xd9\x9c\x5c\xf7\x5c\x28\xe2\xa1\x5f\xd1\x89\x3d\x91\x5b\xa3\x24\ \xfa\xad\x6a\xbe\x8b\xd6\xd4\x89\x69\xc3\x2c\xb9\x52\x11\x44\xcc\ \x25\x1a\x40\x15\x04\xe5\x20\x81\x6a\xef\x46\x72\x42\xe7\x08\xdc\ \x9a\xb6\x6a\xc9\x13\xe7\xc2\x24\x11\xa3\xfd\xc4\xd8\x2a\x24\x66\ \x4b\x22\xff\xef\x8c\x3a\x77\x7a\xb6\x01\xf7\x3d\x39\x11\xe8\x5b\ \xde\xb6\xcd\xdf\x73\xe7\x2f\xc0\x86\x94\x09\xcc\x1c\x27\xa7\xf7\ \xc1\x03\x87\xff\x01\x1e\x1f\xf9\x0e\x6c\x9f\x39\x05\x0f\x1f\x9f\ \x85\x53\x47\x67\xfd\xb9\x64\xd4\x64\xbe\xfe\x77\xb0\x7c\x68\x35\ \xbc\xed\xc5\x6f\x80\xff\xf6\xea\x77\xc1\x9a\xa1\x35\xa9\x7d\xf7\ \xcd\x17\xbc\x11\x9e\x19\xfd\x36\x1c\x9a\x7c\x06\xf2\x99\x12\x23\ \x05\x81\x2d\xd0\xa0\x9f\x95\x2b\x04\xc7\x4f\x1b\x40\x9c\x36\x75\ \xf2\x25\xb8\x7e\xe3\xa5\x4b\x34\xcd\x17\xa2\xcd\x19\x11\x90\x41\ \x10\x8f\x88\xc9\x9e\x8b\xc9\x76\x74\x63\x09\xaa\xbb\x8d\xc0\x6d\ \xbd\xd7\xd8\x0a\xae\xc6\x45\x82\x6a\x79\xf0\xe6\x86\x6e\x20\x5f\ \xf1\x53\x03\x70\x8f\xed\x9e\x86\xb1\xb1\x40\xb0\x87\x27\x95\x2a\ \xb0\x76\xe5\x7a\x78\xcf\x5d\x6f\xef\xe8\x02\x3e\x75\xe2\x9b\xf0\ \xb7\x4f\xfc\x0a\xfc\x70\xe4\x4b\x90\xcd\xd5\xe1\xe6\xcb\x56\xc1\ \xaf\xbe\x71\x23\xbc\xea\xf6\x0b\x20\xdb\xdd\xa3\x26\xd8\x0d\xd0\ \xd5\x0b\xa3\x53\x67\xe0\xfd\xff\xf6\x57\x70\xdb\x1f\xbe\x05\xbe\ \xfb\xec\xf7\xd2\xe3\xd4\x99\x22\xdc\xbe\xf1\x1d\x9a\xe5\xf1\xfe\ \x6b\x64\x9a\x2b\xea\x8a\x37\xda\x3e\x9f\xae\xc3\xe8\x78\xad\xbd\ \x0b\x9a\x68\xfb\xf0\xe0\x0a\xb8\x66\xe3\x55\x8b\xb7\xcf\x69\x11\ \x1b\x28\xa8\x96\xc7\xf6\x66\x13\xec\x7d\x67\xc3\xa7\x44\xe8\x10\ \x03\x94\x91\x69\x7b\x71\xad\x7b\x6c\x2d\x95\xb8\x88\x39\x46\x95\ \x6b\x7e\x99\x76\xa7\xcd\xce\x35\xe0\x91\x9d\xd3\xd1\x4b\x29\x69\ \xfe\x4b\xca\x36\x1f\xec\x1d\xea\xd8\xe2\x3d\x36\xf2\x65\xf8\xec\ \xb3\xbf\x0f\xb3\xb5\x29\x28\xe5\x7a\x3d\x62\xab\x54\x1a\xd0\x68\ \x34\xe0\xf6\x6b\xfa\xe0\x4d\x2f\x5f\x06\x19\xcd\x7c\xbc\xc8\xbc\ \x3c\x40\xf7\x00\xec\x1e\x39\x00\xaf\xfd\xb3\xb7\xc1\xd7\x9f\xfc\ \x56\x6a\xf3\xd8\x3a\x7c\x0b\x5c\x32\x7c\xab\x8f\xc2\x73\xeb\x1c\ \x6a\xcd\xd4\xd4\x84\x94\x7d\xae\x89\xbc\x3c\x57\x0f\x23\xf3\x4a\ \x6d\xbf\x7c\xd5\x46\x58\xde\xbf\x6c\x91\xfb\x82\x64\x34\x9d\x2d\ \x35\xcd\x85\xbd\x72\x9b\xcc\x6c\xa7\xc5\x24\xde\x38\xd5\x7d\x09\ \x84\xbe\xa8\xae\x42\x66\xf2\x04\xf1\x1c\x97\x2c\x36\x01\x67\xa3\ \x1b\xfe\xf4\xbc\x22\xa2\x1d\x07\xe7\xe0\xe4\x68\xd9\x87\x90\x5b\ \x52\xa9\x06\xfd\x4a\x2a\xbd\xf3\x65\xf7\x74\x6c\xe1\x0e\x9d\x7d\ \x0a\xfe\x6d\xf7\x9f\x7b\x5f\x98\xc3\x5c\x68\x1f\x2b\xe5\x17\x66\ \x95\x5a\x7c\xfd\xb6\x6e\x78\xcd\x8b\x87\xc3\xf3\x2f\x76\xc1\xd9\ \xb9\x19\xf8\x85\x8f\xfc\x06\xec\x3c\xba\x2b\xb5\xf9\xbc\x64\xdd\ \x5b\xa1\xa0\xa4\x7b\xdb\xb7\x1e\x20\x26\x26\xd1\x45\xe3\x95\x07\ \x4f\x94\xa3\xe1\xe3\xb5\x2a\xbc\xe4\xe2\x9b\x97\xa0\xb2\x83\xdc\ \xa8\xc2\x5a\x87\x9d\x2b\x93\x6d\x11\x04\x91\xc8\x49\x27\xcd\x97\ \x2e\xd1\x6d\x71\xee\xb6\x92\x4d\x12\xd2\x2a\xa9\x5a\x24\xd4\x17\ \x8f\x7c\x14\x5b\x48\xfb\x0f\x77\x4f\x41\xc4\xc7\x5e\x99\x83\x9f\ \xba\xf6\x15\xb0\x61\x45\x67\x6c\x73\x5d\xf7\xed\x4b\x7b\xfe\x1c\ \xca\x8d\xd9\x66\x5c\x37\xb2\xf8\xc3\x9c\x22\xf6\x17\x5f\xda\x0b\ \xd7\x5d\xd2\xa7\x26\x1b\xf8\xdd\xca\x06\x3e\x31\x36\x02\xff\xf1\ \xe3\xbf\x05\x95\x6a\x39\x95\x39\x6d\x1c\xbc\x1a\x2e\x1a\xbc\xc9\ \x8b\x85\x0f\x83\x95\x66\xeb\x2b\xbf\xc4\x83\x0e\x2c\xf2\xec\xf3\ \x60\x69\x2e\xfd\x1b\xf2\x05\xb8\x71\xfd\x52\xec\x73\xa3\x89\x86\ \xd8\xc2\x59\x28\x9d\x8d\x68\xb8\x66\x6d\x9b\x10\x2c\x82\xc0\x8d\ \x85\x11\x3a\x25\x90\xf2\x68\xb9\xe1\x14\x73\xe1\x60\x88\x24\xdb\ \xdb\xcb\x6c\xf7\xe3\x9f\xaf\xc1\xf5\x63\xa7\xab\x70\xf0\xf8\x9c\ \x2f\xcd\xe7\xe7\xa1\x2b\x3c\xe6\x8b\xf0\x8b\x2f\xfe\xa9\x8e\x2d\ \xda\xf7\x8f\x7d\x01\x0e\x4f\x6e\xf7\xab\xc0\x20\xd7\xa0\x62\xfe\ \x57\xe8\xc4\x4e\x82\x57\x5c\x3f\x00\xbd\xfd\x39\x5f\x85\x9f\x1f\ \xa5\x1e\x78\xf0\x99\x87\xe0\xa3\xf7\x7d\x3a\xb5\x79\xdd\xb0\xfa\ \x75\x5e\xda\x28\x89\xc5\xe3\xfd\xd7\xb4\xda\x3e\x35\x53\x87\x91\ \xb1\x6a\x3b\xd9\x87\xfc\xb5\xeb\xed\x1d\x84\xeb\x36\x5f\xbd\x78\ \x73\xae\xd5\x73\xce\x64\xe6\x28\x84\xc3\x22\x93\x7e\x0a\x31\xb5\ \xe7\x09\xec\xbd\xd8\xdd\x48\xcf\x46\x8f\xc3\x5a\xb8\xa2\x7e\x12\ \x57\x10\x6d\x72\x86\xe3\x37\x87\xae\xdc\xfa\xf4\x81\x59\x68\x68\ \xbf\x79\xf0\x92\x4a\xf5\xbc\x7c\xdd\x36\xa5\x7e\xde\xd2\x91\x05\ \x9b\xac\x8c\xc1\x0f\x8e\x7d\x1e\xf2\x5e\xe5\x17\x13\x83\x80\x08\ \x06\xa1\xb5\x8e\xe1\xfe\x2c\xdc\x74\x59\x9f\x4f\xe8\x41\x02\xc8\ \x15\xe0\x7d\x5f\xfe\x6b\x18\x3d\x7b\x2a\x95\xb9\xe9\x0a\x35\xab\ \x7a\x36\x43\x5d\xc7\x9c\x5b\x92\x47\xb4\xda\x7e\xea\x6c\xcd\x23\ \x76\xd3\x3e\xbf\x74\xe5\x06\x2f\x58\x66\x49\x9b\xc0\x8c\xa1\x10\ \x99\x39\x59\xcc\x37\x8b\x14\xa1\x98\xf7\xdd\x58\xa4\x8d\x2e\x71\ \x6f\xa9\x55\x93\xd9\xff\xdb\x96\x23\x2d\x45\x45\x21\x19\x15\x52\ \x82\x1f\x41\x98\x51\x6a\xf1\xb3\x87\x66\xdb\x11\x5d\xf3\x9f\xad\ \x57\xe1\x4d\x4a\x6d\xcf\xe7\xf2\x1d\x59\xb0\x67\x4e\x7e\x0b\xc6\ \xe6\x8e\x2a\x41\x98\xe0\xfa\xcd\xdf\x5d\x55\xc4\x7e\xd3\xb6\x1e\ \xe8\x1b\x2a\xf8\x45\xe2\xe7\x87\x22\xf4\xa3\x27\x0f\xc2\x27\x1f\ \xfe\x42\x2a\x73\xcb\x67\x8b\x70\xc5\xf2\x3b\xfc\xec\x36\x4b\x4f\ \xb5\x6c\x16\xe0\x90\xf6\x9f\xd7\x8c\xe0\x93\x5a\x05\xae\xbd\xf0\ \x6a\xc5\x44\x73\x8b\xa6\x71\xb1\xac\x93\x84\x9e\xb3\xc0\x9d\x59\ \x09\x96\x78\xb0\x0f\x98\xa6\x20\x6e\xa4\xa0\xba\xdb\x7a\xb0\x45\ \x18\x03\x86\x5b\xe3\x5a\x81\x16\xc6\xb5\x12\x6a\xdd\x13\x6e\xdd\ \xa4\xeb\xbf\x1d\x55\x1b\xf5\xd4\x19\xed\x52\x0b\x6f\xb2\x5c\xa9\ \x1b\xde\x70\xdd\xdd\x1d\x59\x2c\xa2\x3a\x3c\x75\xea\x5e\xa5\xfa\ \xe6\xa2\xdd\x42\x22\x73\x6f\x2f\x4e\x5d\x29\x1d\x83\xbd\x59\xb8\ \xfa\xc2\x1e\x5f\xaa\x07\x7f\x7a\xb6\x00\x1f\xfb\xee\x17\xa0\x9c\ \x92\xad\x7e\xd9\xf2\x97\x41\x77\xae\x5f\xf1\x93\x46\x98\x23\x53\ \x1b\xdb\xd0\xf3\x39\x76\xaa\x1c\x05\xea\x32\x59\xb8\x65\xd3\xe5\ \x69\xae\x98\xb1\x2e\xc4\xac\x57\x5c\x79\x6e\x14\x6a\xd1\x2f\x30\ \xea\xd2\x11\xfa\x02\xd5\x72\x5b\x5b\x32\x34\xd4\x2a\x64\xec\x29\ \xb1\x08\xa4\xe1\x3e\x41\x0c\x34\xda\x0b\x7f\xa7\x56\xdb\xf7\x28\ \xdb\x9c\xaa\x81\x4d\x4c\xbe\x44\xba\x64\xcd\x45\x9e\xea\xde\x89\ \x71\x6a\xe6\x10\x9c\x98\xde\xeb\x4b\x73\x12\xaa\xa3\xb0\xfe\x60\ \xf2\x84\xe7\x95\x9b\xbb\x14\x5d\xeb\x4e\x11\x01\x06\x91\x2f\xc0\ \xd3\x87\x77\xc0\x43\xbb\x7e\x90\xca\x1c\x57\xf6\x6e\x86\x0d\xfd\ \x57\x29\x9a\xad\x42\x57\x31\x03\x5d\xea\xfb\xbc\xc7\x92\xff\x48\ \x58\x86\x53\x13\x93\xb0\x7b\x64\xd2\x8b\x35\xd0\xd5\x76\xbc\xda\ \x79\xfa\x28\x76\xc1\x8b\xb6\xdc\xb0\x44\xf3\xcd\x68\xfa\x48\x46\ \x9b\x29\xa9\xb1\x44\x04\x94\x35\xf7\x4e\xc0\x45\x28\xf5\xb1\x77\ \x7e\x74\x71\x2c\xbe\x94\x14\x97\xd0\x42\x36\x9d\x3f\x86\x03\x13\ \xd7\x40\x20\x40\xec\xcd\x0d\xe2\x45\x74\x55\x1b\xb0\xf7\xe8\x5c\ \x94\xb9\xa8\xcd\x7a\xe7\x25\xb7\x40\x31\xdf\xd5\x91\xc5\x3a\x78\ \xf6\x49\x98\xae\x9d\xf5\x7c\xe6\x91\x84\x1d\xb6\x2a\x6d\xfb\xf7\ \xd6\x15\xa5\xaf\x1e\xce\xc3\x9a\x65\x05\x38\x72\xa2\x59\xb2\xa9\ \x59\xc8\x91\x14\xb1\x7d\xfe\x47\x5f\xf3\x6a\xc8\xa7\x31\xb6\x0d\ \xdf\x08\x9f\x7d\xe4\x1b\x30\x3e\x3e\x1b\x00\xdb\xfc\xfe\x52\x6f\ \xbd\xe5\x95\x70\xd9\xea\xd5\xf0\xf8\xba\xef\xc2\xd9\x65\xd3\x70\ \x6a\x6e\xda\xd3\x26\x66\x67\x26\x60\xcb\xaa\x0d\xb0\x69\xf9\xba\ \x25\xc8\x6f\xbf\x0d\x15\xa9\x7b\x86\x66\x1b\x27\xb6\xce\x7f\x90\ \x39\x34\x6b\xca\x13\x93\x80\x63\x96\x1a\xe3\xba\xdc\x7a\x97\x75\ \xaa\xfb\xd2\x09\x3d\x8e\xf8\xad\xfe\xf4\x38\xe3\x9e\xeb\x29\xce\ \x77\x69\xd1\x88\xf1\xd8\x44\x0d\x4e\x6a\xc4\x38\x63\x30\x9c\x6c\ \x0e\x6e\xbf\xe4\x96\x8e\x2d\xd6\x81\xb3\x8f\x7b\x45\x1f\xc2\x73\ \x34\xec\x5c\x2e\x60\x04\xfd\xb6\x8b\xba\x50\xe5\x45\xeb\x4a\x70\ \xe4\xd8\x6c\x18\xed\xce\xe6\xe1\x81\x3d\x8f\x41\xb9\x32\x07\xc5\ \x42\x69\xc9\xf3\xbc\x78\xd9\xcd\xb0\xe7\x50\x16\x9e\x7d\x76\x0c\ \xa0\x90\x6b\x9b\x12\x8a\xa0\xdf\x7d\xcb\xad\xf0\xd3\x57\xbd\x5e\ \x1d\xbf\x06\xd4\xa8\x43\x55\x11\xff\xd4\xdc\x14\x8c\x4e\x9c\x52\ \x26\x51\x0e\x4a\xc5\xee\x25\xa8\x87\x59\x8f\x56\xeb\x8d\x1a\x54\ \xa8\xea\x13\x7b\x8b\x46\xe7\x5d\x7b\xfe\xbd\x46\xf2\x7b\xd0\xe9\ \x52\x59\x18\x44\xde\x51\x02\x6a\x21\xb2\x17\x92\xc2\x49\x6e\x2c\ \x95\xd0\xad\x44\x1e\x8c\x7c\xb2\xf5\x5c\x26\x8b\x44\x37\x6f\xbe\ \x6f\x9f\x1f\x38\x51\x86\x8a\x8e\xe8\xca\x05\x5c\x78\x6a\xd3\x2e\ \xeb\x5f\x06\x37\x6d\xbe\xa6\x23\x0b\x55\xad\xcf\x29\xb5\x7d\x9f\ \xb7\x31\x79\xc4\x97\xa9\xe4\x62\x94\x59\xd6\x7f\xad\x5f\x59\x04\ \xcc\x65\xc2\x81\x6a\xb9\x02\xec\x1a\xd9\x07\x07\x4f\x1f\x81\x6d\ \x6b\xb6\x2c\x79\xae\xc3\x5d\xeb\x61\x75\xef\x7a\x78\x36\x3f\xd6\ \xae\x7a\xab\xd7\x37\x9b\x51\x56\x43\xa5\x7d\x27\x94\x4d\xae\x4b\ \x6b\x0d\xf7\x0e\x79\xc7\x52\xc7\x85\x83\xd7\xc2\x3b\xaf\xf9\x2b\ \xc5\x3c\xca\x50\x6e\xcc\x78\x05\x24\xe7\x6a\x53\x30\x53\x1d\xf7\ \xa2\xf6\x66\x6a\x13\xea\xef\x49\x98\xab\xcf\xa8\xbf\x67\x3c\x86\ \x30\x55\x1d\x83\x3a\x55\xc3\x31\xee\x6c\xc5\x57\xe0\xf7\x91\xa8\ \x45\xb9\x91\x0e\xa1\x4b\x45\x43\xa4\x0e\x1b\x62\x33\x3f\xb3\x2e\ \xb9\x3d\x79\x41\xbf\x3d\x32\x5a\x8d\xaa\x7f\x4a\x6d\xbf\x78\xed\ \x16\x58\x35\xb8\xa2\x23\x0b\x35\x51\x3e\x05\x93\x95\xd1\x66\x95\ \x53\x63\xde\x66\x76\x98\xd0\x81\x46\xbb\xda\xd6\x0e\xe7\x94\x29\ \x9c\x81\x39\xcd\xa8\x02\x99\x58\xb3\xb3\x53\xf0\x83\xbd\x8f\xa5\ \x42\xe8\xfa\xb6\x5e\xba\xf2\x0a\xb8\xaf\xfe\x88\x9a\x4b\xf1\x9c\ \x6d\xa6\x62\xae\xc7\x0b\xdc\x49\x32\x34\xe1\x6b\x37\xe0\x97\x76\ \x7f\x00\x9e\x18\xfd\x86\x57\xce\x5a\x96\xe2\x52\x97\x56\xb4\x17\ \x9b\x74\x63\x01\x60\x1c\xca\xcc\x34\x5e\x67\x32\x91\x69\x2e\xf6\ \xdd\x70\xba\xdb\x52\xa9\x75\x34\x5c\x9d\xe0\xd0\xa9\x8a\x81\x7a\ \x83\x57\xb5\xf4\x86\xf5\x97\xfa\x88\x78\x07\xc6\x99\xf2\x88\xd7\ \x25\xd5\x53\xdd\x4d\xb0\x08\x99\x3e\x60\x8c\xcb\x47\xdb\xb0\x3d\ \x5d\x4a\x82\xf6\xe5\x7d\x40\xae\x65\xdd\xa0\xa7\x91\x3c\x7e\x78\ \x47\x6a\xf3\xd5\x69\xb1\xe0\xb9\x18\x29\x46\xf3\x7a\x6e\x86\x2e\ \x2c\xd9\x95\x1f\xf0\xf0\x0e\x22\xa9\xd9\x83\x71\xf3\x31\x49\x16\ \x9c\x1b\x8b\x23\x74\x5a\xc0\x1a\xa2\x41\xdc\x44\x32\x87\x6e\x55\ \x0c\x41\xc3\x46\xe7\x9a\x0c\xb4\x2f\x33\x31\xad\x2b\xa2\xd4\xda\ \xf6\x79\xe0\x9a\x2f\xb9\xf8\xc6\x8e\x2d\xd4\xe8\xf4\xa1\x76\x1c\ \x79\x2b\x44\xd3\xe6\xe6\x41\x46\xf0\xfb\x0d\x1e\x2f\x58\x96\x0f\ \x47\xc9\x79\x97\xca\xc0\x13\x47\x77\xa7\xe6\x0b\xbe\x65\xeb\x8d\ \x50\xd2\x85\x23\xce\x73\x80\x8a\xa0\x61\x98\x7a\xa6\xd9\x27\x6d\ \x46\x47\xd4\x9d\x97\xe8\xb6\xaa\x32\x41\x09\x2e\xa6\xad\x46\xab\ \xb7\x26\x69\xbc\xae\x23\x5d\x4f\x4f\xd4\xbc\x8c\xb5\x30\xf3\x68\ \x40\xa9\xd4\x03\x57\x5e\x70\x71\xc7\x16\xea\xf4\xec\xc1\x68\x2d\ \x36\x49\xad\x89\x44\x6e\x05\x92\x49\xd4\x6f\x58\x3e\x98\x8f\xf2\ \x33\x25\x7d\x0f\x9d\x3a\x0c\x93\xb3\x93\xa9\xcc\x57\xf7\x6e\xdf\ \xb6\x62\x9d\x17\x40\x74\xfe\x8f\x24\x11\x6e\x8c\x66\x42\x74\xde\ \x6a\x2c\xcf\x3f\x42\x97\xee\x85\x10\xef\x12\xae\x2f\x0e\x42\xdd\ \x38\xe0\xab\xa1\x90\xad\x96\x18\x79\x45\x26\x74\xe8\x26\xe9\x8c\ \x8c\x4c\x60\x0e\xf5\x3a\xac\x1e\x5c\x09\xab\x16\x9b\x5a\x99\x50\ \x75\x6f\x0b\x1a\x4a\xb0\x08\xc4\xbe\xdf\x68\x90\xaf\xba\xeb\x60\ \xfd\x46\xe0\xd4\x4c\x16\x8e\x8c\x9f\x82\x33\x29\x11\x7a\xb1\xd0\ \x05\x97\xeb\xe4\x14\xed\x1f\x7f\x5e\x98\xae\x06\x7e\x13\x29\x50\ \x64\x54\xab\x21\x88\x96\x95\x76\x36\x7a\x0a\xaa\xbb\x4d\xda\x83\ \xb4\xdf\x91\x69\xda\x47\x61\xa9\x4e\x82\x8b\x8d\x28\x92\xf9\xa4\ \xa3\x47\x3d\xb7\x9a\x69\x9f\xab\xcd\xbc\x71\xc5\x7a\x18\xea\xeb\ \x0c\xa1\x37\x1a\x35\xcf\x3e\xd7\x45\x26\xf9\x1f\x6a\x98\x1c\x6c\ \x85\x15\x6c\xfd\x86\x81\x9e\xac\xdf\xeb\xcc\x60\x6a\x33\x95\x59\ \x38\x70\xea\x50\x6a\xf3\xbe\x5e\x07\x0e\x05\x31\x05\x3c\x8f\x69\ \x3c\xd2\x89\x37\x98\x05\xc7\x25\xb6\x00\x13\x9c\xe4\x44\xfa\xd2\ \x54\x77\xc9\xcb\x21\x61\x28\x41\xd4\x5c\xec\xde\x82\xd1\x62\xff\ \xd6\x62\xf1\xe8\x23\xee\xe3\x15\xe6\x54\x82\x4b\x57\xac\xeb\xd8\ \x22\x95\xeb\xd3\x30\x57\x9d\xf4\xfc\xc4\xd1\xee\xcf\xc1\x46\x15\ \xc6\xfc\x19\xfb\x58\x13\x7a\x5f\x4f\x06\x0a\x79\xa6\xea\x6d\xbd\ \x06\x07\x53\x24\xf4\x2b\x37\x28\x89\x9e\xcd\x9e\xff\xaa\x2d\x0b\ \x75\x08\xc4\x2d\x99\x82\xe7\x35\x27\x7b\xbe\x48\x74\xb2\x10\x7d\ \xac\x36\x26\x65\xac\xc5\xa8\x08\x46\x5e\xb2\xfe\x73\xae\xdc\x68\ \x66\x5c\x99\x73\x21\xd8\xb6\xe6\xa2\x8e\x2d\xd2\x5c\x6d\xda\xab\ \x22\xe3\x75\x0d\x05\xae\x53\x08\xf2\x31\xd8\x66\x72\x4f\xd3\x9c\ \xd1\xc5\x2c\xfb\xba\x73\x6d\xe4\x7d\xfe\x3d\x65\x82\x8c\x8c\x9f\ \x4c\x6d\xde\x5b\x57\x6d\x86\x2e\x1d\x00\xf3\xbc\x88\x18\xc3\x18\ \x09\xc3\x98\x77\x98\x54\xf5\x74\x23\x93\xf8\x1e\x24\x6d\x99\xc5\ \x76\xcd\x04\x19\xb5\x13\x37\x61\x58\xdd\xd4\x5a\xf3\xd4\x4c\x03\ \x66\xcb\xd4\x9e\x75\x4b\xa3\x40\xd8\xb6\x76\x5b\xc7\x16\xa9\x5c\ \x9f\x81\xb9\xfa\x94\x57\x2a\x2a\xb4\x20\xb4\xd0\xcd\xeb\x67\x8a\ \xeb\xa0\x9f\xde\x52\x36\xfa\xdb\xa9\x0e\xc7\xa6\xcf\xa6\x36\xef\ \xe1\xee\x7e\xb8\x60\x70\xa5\xa7\x29\x9c\xd7\xa6\xb9\x50\x2a\x2c\ \xfc\x5a\xb0\xa6\x20\xb3\xd9\x1c\x9d\xa7\xa0\xba\x9b\x00\x49\x5c\ \x29\xb0\x08\x78\x47\x0b\x30\xf2\x39\x8e\x41\x5e\x3f\xee\xc9\xb9\ \xba\x27\xd5\x43\xb3\x6e\x34\x20\x5f\xea\x81\xb5\xfd\x9d\xab\x0d\ \x37\xa7\x54\xf7\x9a\x0e\xe9\x44\xae\x38\x02\x31\x78\x03\x85\x5f\ \x37\xb4\x23\x6d\x9f\xf7\x94\x32\xd1\x9f\x9b\xc9\xc2\xe1\xb1\xe3\ \xa9\xcd\xbb\x5f\x11\xfa\x9a\xe1\xb5\x3a\x52\xa7\xe5\xe5\x28\xe4\ \x0a\xe7\xb7\x91\x4e\x46\x73\x3f\xd6\xb4\xe3\x8a\x60\x3a\xb5\xdd\ \x36\x16\x56\xd7\x5d\x0a\x66\xb1\x06\xcc\x34\x78\xb5\x8c\xc8\x00\ \xeb\xb8\xf2\xd0\xed\x5c\x74\x7d\xda\xe4\x4c\x13\x71\x2f\x84\x2b\ \xca\x0c\x76\x0f\xc2\xb2\x0e\x76\x61\x99\xae\x8c\x85\x7f\x74\xc4\ \x24\x41\xc6\x44\xc1\x68\xcf\xf2\x66\xcc\xbb\x06\xdc\x7b\xba\x32\ \x61\xd5\xdd\xfb\x78\x16\xc6\x26\x46\x3d\x7f\x3d\xe2\xd2\x6b\x82\ \xe8\x10\xd7\x8b\xd7\xac\x87\xef\x6e\xf7\xb5\x20\xca\xe4\x60\xfb\ \x91\x67\x61\xd3\xf2\x47\x7d\x89\xdf\x3b\xe4\x7d\x4f\xaf\x62\x94\ \xcb\xfa\x96\x05\x18\xd9\x73\xa4\xba\x23\xc8\x99\x69\x41\xb5\x12\ \x9d\x3d\x9e\x3e\xa1\x43\x0c\x71\x73\x5e\x25\x02\x9b\x78\x87\x48\ \x1e\x34\x71\xf6\xec\xfc\xf5\xda\x37\x77\x62\xaa\x11\xbe\xd9\xcd\ \x56\xc8\x03\x3d\x03\x8b\xaf\x5a\x9a\x60\xe8\x98\xed\xb0\x77\x80\ \xa2\x84\x1c\x5a\x17\x63\x43\x46\x0a\x67\x00\x94\x8a\x19\x36\x81\ \x63\x72\x76\x4a\x09\xe0\x2a\xe4\xf3\xe9\x84\xae\xfe\xf4\xad\x17\ \x43\x71\xf9\x3a\x28\xe6\x4a\x5e\x95\xad\x7f\xfe\xe1\x3f\xc2\x7b\ \xbf\xf4\x11\xaf\x37\x5d\x57\xbe\xcb\x9b\x4b\x41\xbd\xf1\xbe\x37\ \xff\x06\xbc\xf3\x8e\x9f\x5f\xd2\x77\x8d\x4d\x9d\x81\xc3\xa3\x47\ \xbd\x12\xd4\x6b\x86\xd7\x40\x43\xdd\xbb\xac\xfa\x82\x9c\xb2\xbb\ \xb4\x6b\x34\x9f\xcd\x7b\xdf\xa7\x1b\x5b\x64\x9a\x18\xa1\x9f\x3b\ \xc0\x25\x34\x19\xc4\x1c\x74\x9f\xb9\xc2\x32\x1d\x24\x74\xb9\xf3\ \x6e\xf8\x7d\x09\x84\x6a\x11\x35\x86\xfd\xec\x6c\x4f\x2d\xa6\x7a\ \xac\x7a\x3a\xa5\x7b\x78\x07\x53\x19\xbd\x53\x1a\xb0\x52\x49\xa6\ \xee\x62\x4f\xc7\x16\x49\xc7\x65\x93\x55\x5d\x24\x23\x5a\x4e\x04\ \x2c\x7c\x3b\x5d\xcd\xbf\x4b\x6b\x25\x68\x00\x77\x8a\x00\xc6\x67\ \x26\xa0\x5c\xab\xa4\x46\xe8\x2b\xfb\xd6\xc0\xb2\x81\x3c\x14\x14\ \x91\x69\x10\xb0\xa7\x07\xa1\x52\xad\x7a\x56\x5b\xa5\xd2\xf4\x60\ \x94\xa7\x61\x6c\x7a\x7c\xc9\xdf\xb5\xeb\xd4\x0f\xe1\xc3\x0f\xff\ \x2e\xd4\xea\x45\x75\x3f\xba\x61\xa6\xda\x80\x6e\x28\xc0\x60\xa9\ \x04\xd3\xb3\x00\x83\x5d\x03\x9e\xd6\xd0\x5b\xea\x85\xc1\x9e\x7e\ \x9d\xa2\x04\x73\xb9\xdd\x1e\x03\xb0\xa3\xec\xf3\xcc\xd2\xec\xd9\ \x6d\xb6\x77\x72\x04\xbd\x78\x42\x47\xe0\x7b\xa2\xdb\x6a\xf5\x11\ \xb7\xc9\x89\x89\x79\x17\x52\x10\xc9\x28\x23\xd5\x24\xa0\xb3\x33\ \x75\x88\x44\xa0\xa9\x63\x95\x92\xe8\x9d\x1c\x3a\xeb\x8a\x9d\xaf\ \x19\xe2\x8b\x5c\x4d\xad\x28\xf1\x6b\xbd\xa4\xbb\x98\x8d\xe6\x59\ \xab\x27\x53\x95\x39\xa8\xa6\x08\x9e\xf5\x17\x57\x79\x15\x65\x6a\ \xcd\x5a\x71\xe4\x31\xc9\xac\x8f\x6e\xb6\xd2\x7b\xf3\x4a\xea\x66\ \x97\xfc\x5d\x83\xfd\x45\xb8\x68\x43\x56\x5d\x4b\x5f\x78\xb6\xa9\ \x90\x95\x95\x64\x3f\x0b\xbd\x75\x52\xf3\x38\xe6\xaf\xa7\x62\xce\ \x53\xcd\x92\x5a\xf9\x7a\x01\x72\x98\x4f\x1e\x18\x87\x01\xbb\x3d\ \xb2\xfe\x4e\xcc\x2f\x5d\xa2\xdb\x00\x38\x16\x47\x63\x38\xac\xd9\ \xa6\x09\x85\xb0\x57\x8c\x66\xd0\xe8\x33\xa7\x75\x33\xc0\xc8\x7c\ \x1a\xca\x3e\xef\x2c\xa1\xfb\xc5\x16\x19\xd4\x91\xad\x77\xc7\xcc\ \x9f\x8c\x14\x56\xf5\xb7\xae\x49\xcf\xa9\xee\xe3\x9a\xd0\x43\xb5\ \xd9\x97\x36\x7a\xf2\x43\x5e\x66\x98\x1f\xa7\x9f\x8d\x9a\x5d\x01\ \xe5\x6a\xc9\x90\x5a\x43\x43\x26\x19\xa8\x7b\xd0\x69\x90\x21\x67\ \x7c\x15\x3e\xdb\x2a\x11\x01\x7e\x6e\xba\xbe\xaf\x36\xaf\x8c\x99\ \xf6\x6b\x46\x57\x1a\xe7\xb8\xc2\x13\xe2\x58\x5a\x64\x9c\x15\x90\ \x0b\x80\x2b\x44\xe1\xa2\xfe\xd6\x30\x52\xe6\xb9\xba\xc1\x75\x25\ \x11\xca\xe5\x06\x1b\xb0\xb2\x6a\x60\x65\x47\x17\x49\xbb\xd6\x88\ \xa9\xf0\xca\xcf\x95\x59\x24\xc3\xd5\xa8\xaf\xd5\x55\xc4\x68\x62\ \x8e\x4e\x62\x53\xd4\x32\xa7\x88\x3d\xad\x51\xc8\x94\xa0\x98\xe9\ \xf2\x93\x47\xce\x05\x1d\x90\x5c\x6a\x9a\xe6\xdf\xa7\xf9\xbf\x83\ \xb5\xe4\xa4\xcd\x64\x4a\x6b\x8b\x69\xe4\x24\xfa\x12\x08\x5d\x92\ \xd8\x5c\x5d\x77\x6e\xff\xcf\x23\xeb\x18\x70\x39\xa1\xc9\x8d\xcd\ \x0b\x87\xd5\x05\xfd\xf1\x8a\x32\x2b\xab\x66\xd5\xd2\xe6\x29\xda\ \x8d\xd4\x51\x42\x6f\xcc\x80\x9c\xc1\x63\x6e\x34\xb3\x69\x01\x46\ \x55\x7d\xf0\x7b\xc6\x45\x03\x90\x10\xaa\xd5\x0a\x1c\x1b\x3b\x96\ \x1e\xa1\x67\x15\xa1\x67\x7b\xfc\x54\x50\x4b\xb1\x96\x54\x48\x04\ \x81\xef\xbd\x16\x74\x91\x21\x13\xea\x2c\x09\x0a\xd3\x2e\xa4\x24\ \xd2\xc7\x8d\xc5\x11\xba\x94\x89\xc9\x09\xdf\x90\x9f\x3d\x49\x81\ \x7d\x29\x8b\x2d\xcc\xe9\xb5\xc9\x57\xad\x35\x14\xb1\x53\x94\x91\ \x34\x1a\xb0\x76\xf8\x82\x8e\x2e\x12\x86\x22\x74\x6c\xfd\xe0\x4c\ \xc9\x26\xa9\xa5\xe8\x15\xb8\x94\xc2\x0c\xd2\x74\x73\xe5\xb3\x5d\ \x5e\xee\x37\x05\xba\xa8\xca\xda\x47\x6a\x0b\x66\xdc\x63\x29\x00\ \x03\x84\xf6\x4a\xe6\x5e\xb0\x70\xa3\x40\x08\xb2\xab\x19\x97\xa6\ \x44\x27\x46\x6b\x92\x32\x36\x51\xb2\xb7\x50\x60\x14\xc4\x4b\x08\ \xf0\x4b\x14\xd7\x1b\x14\x65\x3e\xea\xfd\x4e\x07\x81\xe8\x16\x4c\ \x9e\x5f\x9b\xe5\x5d\x66\x25\x1d\x88\x26\xdd\x84\x54\x78\x54\xea\ \x39\x41\x77\x57\xc6\xab\x7f\x17\xb5\x73\xeb\x30\x91\x52\x06\x9b\ \x07\xc2\x64\x0a\x5e\xbd\x77\x10\x60\x93\xd4\x85\x23\x99\xf6\xb2\ \x94\xcf\x80\x31\xd7\xe0\xd4\x74\xe6\xf5\x80\x06\xe1\x34\xf7\xa5\ \x12\x3a\xe7\x46\x8b\xad\x01\xc0\xa0\xee\xac\xdb\x04\xa3\xb6\x2c\ \x45\x33\xc3\xb4\x44\xaf\xce\xd7\x44\x0f\x6a\x0d\xf9\x02\x0c\x97\ \xba\x3a\xb7\x42\x6a\x2e\xba\x5e\x1c\x06\x55\x4e\x32\x23\xb9\x88\ \x27\x76\x4c\x4a\x18\x41\x23\xbd\x0e\x67\xa7\x27\xd2\xbb\xc1\x98\ \x85\x62\xae\x57\x31\x97\xba\xbd\x4a\x50\x6a\xd2\x1c\x85\x72\xcd\ \x9c\x54\x10\xda\x27\xb3\x31\xec\x31\x4d\x1a\x5c\xf2\x5a\x87\x24\ \x7a\x1c\x5d\xa3\xa1\xde\x12\x0a\x92\xd0\xb0\xe1\x18\x55\xc1\xb3\ \xd1\x15\x91\x57\x6a\xbc\x3a\x9c\xe9\xf0\x22\x21\x32\x29\xa7\x64\ \x04\xee\x58\xc1\x45\xbe\x81\x7c\x18\xe0\x6b\x3f\xcd\xa4\x2c\x9a\ \x82\x51\x76\x6c\x88\x03\x76\x88\xe0\x21\xa6\x15\x32\x31\xcc\x00\ \x39\x9f\x2d\xf1\x00\x10\x85\xe3\x2c\x5c\x10\xcd\x52\x08\x3d\xae\ \xc9\xa2\xc4\xa4\x83\x76\x59\x24\x57\x58\xe2\xce\x1c\x7a\xda\x8c\ \x75\x47\x8c\xda\xae\xea\xf3\x59\x1d\x08\x92\xef\x70\x01\x44\x56\ \x30\x19\x1b\x0d\x25\xe0\x82\x97\xe0\xda\x46\x2f\x16\x78\x97\x10\ \xa6\xbc\x63\x7b\x72\x03\xe1\x59\xd9\x84\xea\x52\xd7\x89\x75\x3b\ \x5a\x4a\x3f\x11\x80\x98\xe7\x6c\x35\x95\x8c\xeb\x3b\xbd\x3d\x25\ \x89\x8e\x60\x2f\x34\x81\x12\xd2\x63\x89\x7a\x43\x8c\x82\x35\xcc\ \xa6\xd0\x1b\x5f\x4b\xf4\x46\xbd\x11\x16\x8e\xea\xdc\x82\x52\xdd\ \xfb\x4a\x3d\x9d\x5d\xa5\x50\x0d\x77\x06\x8c\x20\x32\x28\x88\xf8\ \xdf\xdd\xdc\x90\xfa\x41\xc7\xab\x14\x72\x7c\x90\x4a\xad\x51\x4f\ \x75\xfa\x79\x2c\xf0\x38\x19\x76\x42\xe5\x45\x46\xe2\xda\xb4\x1e\ \x8b\x19\x83\x28\xaf\x63\xd0\xec\x43\x8c\xb7\xfb\x1d\xa1\x2f\x52\ \xaa\xc5\xaa\x4a\x14\xef\x67\x07\x53\xcd\x47\x36\x1c\xd6\xeb\x17\ \xa6\x6c\x74\xaa\x11\x13\x9c\x46\x1d\x0d\x94\xf0\x1a\x1f\x53\x33\ \x22\x2f\xa8\xad\x04\xa3\xfc\x82\xc9\x39\x6c\x6f\xc3\xe0\xc6\xa4\ \xf0\xdc\xcd\xb5\xa9\xd7\x60\x6c\xfa\x4c\xaa\xbf\xa1\xd1\xee\x01\ \x15\xc1\x07\x53\xc5\xe4\x10\xc2\x5d\x73\x91\xaf\xcd\x1f\xd6\x84\ \x90\x07\x7a\x6c\x7e\x75\x27\xbd\x3b\x6c\xa3\x4b\x52\x9d\xcd\x22\ \xc4\x84\x12\x3e\xae\x9a\x05\xf2\x80\xcb\x39\x2a\x2a\x52\xa9\xcf\ \x79\xd5\x65\x3c\x3b\x17\x03\xcc\x28\xb4\x16\x1c\xc2\x4c\x01\x15\ \x1f\x6c\x1c\x2f\x9c\x5f\xed\x75\x4e\x4a\x97\x71\x79\x21\xa6\xcd\ \xef\x45\xe1\xbb\x31\x5d\xee\xc8\x00\x72\x28\x84\xaa\x72\xa5\xc4\ \x48\xc8\x64\xb3\x00\x72\xce\xb5\xb6\x44\x42\x8f\xab\xfe\x9a\x84\ \xf0\x63\x0d\x7f\xa1\x80\xa4\x4d\xce\x20\x9c\x33\x4d\x8d\x50\x52\ \x6b\x92\x70\x45\x8c\x36\x9b\xc4\x05\xac\x79\x1a\x36\x7a\x7e\x88\ \x5f\xd1\x8e\x81\x70\xa6\xe6\x93\x50\xd5\x37\xd7\x0e\x13\xf4\x4a\ \x77\x23\x65\x30\x0e\x2d\x34\x4a\x36\x61\x4c\xac\xbb\x2c\xb6\xea\ \x64\x70\x93\x10\xc9\x74\x7f\xce\x18\xb9\x89\x22\xa3\x05\xd0\x22\ \x01\x70\x12\x7e\x77\xa4\x2d\x70\x07\xa6\x2e\xc0\x24\xe9\x73\x45\ \x53\x2d\x67\xa4\x31\x91\xdd\x2c\x14\x25\x8b\xc0\x28\x89\x1c\x0f\ \x48\xd5\x46\x97\x34\x70\x94\x3e\x60\x96\xfd\x21\xe1\xc6\x62\x60\ \x03\x04\x43\x25\x19\x29\x61\x30\x97\x73\x62\xae\x49\x2a\x24\x0a\ \xed\x92\x23\x51\x73\xe1\x38\x7f\x3c\xd7\xcc\x8a\x3a\xab\x31\xc4\ \x33\x19\x26\xbc\x32\xd4\x4e\xd9\x58\xcb\x88\x40\x90\x62\xae\x9d\ \xba\x9e\xd8\x7c\x5b\xf4\xa6\x21\x8b\x70\x26\x4e\x95\x93\x62\x66\ \xb9\x5a\x60\x82\xe4\x67\x98\xcb\xb9\x33\xcd\x28\xba\x51\x83\xb9\ \xf4\x44\xd1\x49\xb5\xca\x15\xf3\x93\x8d\x40\x18\x74\x0e\x6b\x9f\ \x75\x02\xe3\x08\xe6\x36\xb4\x0a\x8a\x08\xf1\x13\xc4\x30\x71\xb3\ \xe8\x04\x31\xae\xd9\x48\x31\x22\x79\x7d\xdd\x58\x0c\xa1\xa3\xc5\ \x3e\x67\x43\x60\x31\x80\xc3\x04\x75\x45\x92\x4b\x01\x89\x3d\xb4\ \x51\xa4\xff\x73\x22\x9c\xd0\x12\xf4\x61\x02\x4d\x64\x89\xc7\x6c\ \xbe\x16\xc7\xcf\x3a\xae\xba\x27\xc2\x51\xd2\xd0\x7e\x98\x9a\xfe\ \x92\x8a\x4e\x0c\xb1\x73\xdd\x70\x22\x4d\x15\x03\xb5\xf9\x9c\xfa\ \xbe\x44\xd5\x1d\x2d\xc4\x6d\xc5\xa7\x98\xce\xa8\x64\x21\x4f\xa2\ \xa8\x34\x4c\x6a\x32\x9f\xb3\x41\x46\x27\x58\x29\xe2\x8f\x62\xa5\ \xe9\x79\x91\x8c\x95\xe6\x1a\x86\x42\x98\x0d\x2c\x83\x0c\x09\x8f\ \x46\xcc\x41\x80\x51\x12\xc5\xdd\x68\x09\xb8\x73\x94\xbe\x78\x42\ \x37\x09\x3a\xa9\x7b\x0b\x83\xc4\x6a\xa4\x29\xb2\xdc\xdf\x14\xd1\ \x06\x47\x11\xd3\xd6\x3b\x7b\x83\x75\x3e\xb7\xd7\xf1\x53\x6c\x27\ \xb5\x00\x9d\x38\x50\xa3\x7e\x41\xd2\x77\xc9\x42\xb6\x11\xbd\x7c\ \x42\xe7\xc6\xa2\xb4\x1f\x29\x9a\x39\x62\xca\xf0\xda\x1a\x5a\x01\ \x06\x5b\x56\xa0\x53\xdd\xd3\x97\xe8\x89\x6d\x3d\x29\xb2\x89\x51\ \xcd\x30\x98\xd9\xd6\x7e\xbd\xe1\x35\x3d\xc8\x40\x26\x9f\x89\xa8\ \x9d\xe4\x49\x80\x46\xc7\x16\x48\xfb\xcf\xfd\x9e\xe8\x06\x65\x10\ \x02\x5f\x97\x1e\x63\x4d\x00\xbb\x29\x99\x7e\xba\xe5\x54\xf5\x0c\ \x4f\x36\x1d\xa1\x0d\x8a\xb1\x15\x20\x86\x61\x9a\xf9\xea\x60\x09\ \x9e\x31\x37\xa0\x93\xe8\x8b\x27\x74\x4a\xc0\xfd\xe3\x00\x39\x6e\ \x1f\x90\xa5\xae\x1a\x46\x6f\xb2\x4e\xe9\xcc\xa0\xe1\x76\xcb\x64\ \xa0\x5c\x9d\x83\xf1\x14\xd3\x3a\xad\xea\x3a\x84\xb5\x4d\x39\xc1\ \xc7\x12\x0f\x60\x0b\x03\xf5\xf6\x6a\x06\xba\x0a\xe9\x66\xe3\x45\ \x18\x21\x41\x02\xaf\xc9\x12\x69\x5d\x6a\x3a\x19\x49\x49\xa6\x45\ \x02\x69\xe4\xc0\xb7\x05\x8c\x85\x57\x81\x5d\x34\xa0\x13\xb4\xd1\ \x88\xdf\x18\x68\x74\xc6\x0c\x85\x4d\x42\x58\xd2\xb5\x30\x18\xdd\ \xa1\xb4\xd1\xe1\x65\x12\x5c\x7d\x26\xa8\x18\x2c\x6a\x19\xfa\x4d\ \x0c\x4a\x6f\xaa\xb6\xf3\x9f\xcf\x64\x61\xb0\xa7\xaf\xb3\x68\xdc\ \x39\x01\xff\x4c\x13\x0d\x23\x75\x04\xe4\x29\x52\x94\x69\x92\x09\ \xe2\xa2\xdc\xee\xcb\x8d\x25\xa8\xee\x49\xb2\x30\x93\xd8\x6f\xc1\ \xe7\x04\x06\x01\xf0\x50\x3a\x79\x1d\x46\x7c\xf5\x3d\x3a\x07\xe2\ \x4b\x31\xa7\x2a\xa0\xb8\xfc\x6a\x29\x36\x1b\x2d\xd9\x54\xd8\xfa\ \xe9\x3a\xb7\x7e\x76\xbe\x06\x5e\x7c\x6f\xc6\x25\x8d\x3a\x55\xc3\ \x33\x48\xd4\x7c\x63\xb1\x92\x1c\x18\x49\x1d\x28\x04\x4a\x66\x4e\ \xbf\x90\x06\xc9\xa6\xf0\xa2\xdc\xe0\xc1\x49\xf7\x14\x08\x3d\x89\ \x8a\x4e\x0b\xe5\x16\x14\x2e\xdd\xcb\x01\x70\x81\xef\xc8\x65\x33\ \x5e\xcf\xb2\x88\x8f\xbe\x52\x86\xd3\x73\x33\x1d\x94\x4e\x08\x05\ \xaf\x8a\xaa\x19\xb8\x61\x04\x71\x88\xee\x34\x32\x82\x6a\xda\xd4\ \xec\xc7\xb4\x63\x67\xc1\x31\x6d\xa3\xd7\xc6\x19\x13\xa1\x03\x92\ \xbd\x15\x0b\x40\x3c\x91\x46\xb4\x18\x0b\x92\x8b\xc8\x33\x50\xc9\ \x16\x74\x82\x3d\x25\x42\xb7\xe5\xa4\x58\x89\xdf\x52\xa9\xc2\xf6\ \x3e\xb5\x6f\xec\x7c\x5a\x67\x26\xc3\x13\x42\xad\xd1\xd9\x26\x82\ \x85\x5c\x8f\x61\xe7\x32\x36\x77\x30\x0c\xd3\x74\x29\x62\x4c\xc6\ \x55\xa4\xed\x77\xda\xa6\x08\x59\x85\x6e\x6a\xc4\xde\x8a\x99\x08\ \x5c\x94\xab\xca\x13\xda\x38\x64\x07\x86\x82\x81\x54\x66\x95\x9f\ \xd0\xc7\x1d\xa5\x2f\x9d\xd0\x93\x80\x71\x92\xc4\x88\x35\xea\x25\ \x87\x3c\x85\x02\x4c\x8a\x39\x84\x62\x1e\x19\x6d\x2f\x03\x47\x47\ \x8f\x76\x5e\x75\x47\x4e\xaf\xa6\x70\x46\x5b\x50\x55\xb5\x9a\xca\ \xc8\x27\x70\xe9\x47\x65\xa3\xf7\x76\xf5\xa6\x36\x77\x5d\x42\xaa\ \x5c\x9d\x6a\x55\xad\x39\x77\x01\x46\x12\xa8\x43\x86\x94\xe6\xec\ \x40\x53\x6d\x67\x0a\x59\xb8\xa6\x0d\x29\x13\x7a\xe2\x0e\x1a\x49\ \xb9\x05\x19\x6a\x1c\x85\x39\x03\x17\x59\x46\x7e\xab\xe1\x5c\x0e\ \xa3\xa8\xb7\x7a\x9c\x2a\x4f\x75\x74\x91\x4a\x99\x6e\xe0\x1b\xfc\ \x61\x42\x7b\x35\xfc\xbb\x51\x49\xbd\x99\xd9\x46\x38\x1d\xb5\xa9\ \xdd\xa0\x07\xc6\x0d\xa6\xc7\xa4\x14\xa1\xd7\x3c\x1b\x1d\x93\x9b\ \xd7\xe9\x89\x77\x88\x56\x19\xe2\xa2\xdb\x18\x9c\x83\xd3\x98\xcc\ \xcf\x98\x91\x94\xce\x4e\x5f\x02\xa1\x73\x6e\x25\xb0\x00\x73\x91\ \xbf\x31\x46\xf7\x0f\x5c\xdc\x04\xb1\xa8\x5d\x2c\x21\xa7\xa4\x79\ \x3e\x8f\x0c\x83\x41\x18\x9d\x38\xdd\x59\x42\xcf\xf6\x00\x2e\xc8\ \x90\xe6\xc2\x7c\x31\xf4\xac\x56\x27\x51\xf8\xd7\x53\xac\x30\xa3\ \xfb\xc6\xe9\x03\x01\xad\x94\x9d\x9e\x5c\xb4\xdc\x67\xd1\xe5\x2a\ \xc4\xc5\x87\x88\x1a\x23\x18\x07\x9f\x53\xe1\xc6\xe2\x55\x77\x26\ \x43\x93\x15\xd2\x68\xd1\xf7\x49\x4a\x57\x35\x99\x88\xc1\xb9\x03\ \x37\xd7\xeb\x57\xc6\xa8\x83\xe3\x29\x56\x4d\xe5\x86\x2e\x99\xcc\ \xce\x59\xdc\xe7\x92\xfd\xd9\xd6\x56\x24\xe1\x93\xcd\xe4\x60\xa8\ \x37\x3d\x89\x5e\xad\x97\x9b\x55\x6c\x33\xc0\xba\xd9\x52\x55\xd9\ \x41\x50\xd7\x11\xac\x69\xca\x52\x4a\xab\x29\x65\x4c\xaf\x0d\x4a\ \xcd\xff\xdc\x48\xc7\x46\xa7\x84\x52\xdd\x6a\x9e\x1b\x95\x45\xa4\ \xd8\xf1\x26\xf7\xd6\xaf\xf6\x96\xb2\xac\xea\x77\x62\x6a\xbc\xa3\ \x8b\xd4\x95\xef\x8f\xfe\xd0\x16\x13\xb2\x95\x54\xe5\x37\xa2\x7e\ \x75\x6a\xb6\xd1\xec\x8f\x1e\x5e\xdc\x6c\x2e\x07\xcb\xfb\x96\xa7\ \x27\xd1\x1b\xb3\x50\xae\xcf\x34\x09\x9d\xc9\xeb\xc7\x94\x09\x84\ \x2c\x1b\x00\x25\xd5\xcf\xac\x17\xc8\x68\x05\xb1\x21\x7d\xae\xc4\ \x54\x3a\x12\xdd\x52\xf3\x90\xbf\xc1\xc1\x28\xa8\x40\xa5\x15\xb4\ \x21\x78\x12\x20\xe7\x9f\xdb\xdf\x95\x65\x30\x1b\x45\xe8\x4a\xa2\ \x37\x3a\x18\x06\x5b\xc8\x76\x0b\x2a\x8d\xc5\x14\x21\x80\xa8\x7f\ \x17\x03\xbc\x8b\x0c\x02\xf0\x19\x5a\x29\x9b\x4d\x55\xd0\x96\xeb\ \x9a\xd0\xa7\xc3\xaa\x7b\x88\xff\xa4\x4c\x1c\xa1\x7e\x7b\x06\xc8\ \x4a\x01\xe9\x4e\x8c\xba\x88\x68\xf8\xd9\x03\xea\x62\xc4\x55\x69\ \x02\x44\xce\x46\x4f\x57\xa2\x27\x01\xec\x22\xaa\xbc\xd0\x6b\x99\ \xab\x2b\x16\x69\xb3\xdc\x96\x3a\x7d\xdd\x19\x46\x22\x65\xe1\xec\ \xcc\x19\x38\x33\x39\xd6\xb1\x45\xea\xce\xf7\x33\xc4\x97\xa0\xea\ \x85\x99\xe5\xd6\xdc\xfc\xfa\x63\xd3\x73\x0d\x3f\x88\x3f\xc4\x2c\ \x09\x86\x8a\xdd\x50\xcc\xe6\x52\x9b\xfb\x54\x65\xac\xc9\x04\x85\ \x38\xfb\x4e\x84\xbf\xa2\x51\x18\x32\x02\xbe\x02\xf0\x93\x09\x68\ \x18\x71\x4d\x15\x31\x09\xc3\x75\x63\xe1\x12\x9d\xa3\x59\x69\x7d\ \x43\x1e\x33\xe2\x4b\xff\x50\x5c\x90\x43\x54\x15\xeb\xed\xce\x44\ \x0b\x8d\x64\x32\x30\x31\x33\x09\xa7\x3b\x4a\xe8\x83\x61\xbb\x92\ \x24\xd5\x86\x29\x74\x68\x02\x46\xe8\xcb\xd6\x72\xbd\xc1\x94\xe9\ \x22\x65\x26\x94\x94\x9d\x9e\x4d\x6d\xee\x93\xe5\xd1\x50\xe4\xa0\ \x35\xb5\x3e\x15\x89\x1e\x57\x3c\xc3\x28\xb0\x49\x02\x96\xc1\x16\ \x98\x14\x40\x39\x07\xc8\xa5\x40\xe8\x28\x98\xa0\x5c\x45\x1f\xee\ \x6f\x2e\x60\x02\x51\x70\x53\x91\xa8\x06\x6b\x55\xb7\xbb\x94\x03\ \x2c\x64\xc2\x37\x57\x11\xfa\xd4\xec\x74\x47\x13\x5b\xba\x72\xbd\ \x90\xcb\xe4\xda\x05\x93\x31\xa1\xcf\xd1\x0c\xed\x9d\xc7\x1b\xd4\ \x6b\x5e\xf8\x2b\x45\x63\x5f\xfb\x4a\xdd\x50\xc8\xa5\x27\xd1\xcf\ \x96\x47\x80\xcf\x2d\xe8\x90\x30\x24\xb2\x0b\x08\x56\x25\x67\x36\ \x59\xa0\x76\x7f\xe8\x62\x91\x34\x69\x57\x56\x2a\x1d\x42\x97\xfa\ \xac\xd9\x5a\xaa\x89\xaa\x3f\xf2\x20\x4c\xdc\x2e\x44\xf4\xb4\x5c\ \x0d\xc6\x75\x17\x32\xc6\xa9\x08\xf5\xca\x2c\x1c\x9d\x18\xed\xd8\ \x22\x15\x95\x8d\x5e\xca\xf5\xf9\x11\x6b\x24\x81\x41\x01\x0d\xc6\ \x2c\x6e\x09\xe1\x64\x1d\xdd\x64\xd1\xeb\xf5\x0e\x60\x94\xb0\x6e\ \xc0\x40\xcf\xa0\xd7\x7d\x26\xad\x31\x5e\x3e\xd9\xc4\x03\x28\x7a\ \x2b\x3a\x12\x06\x2b\xd4\x86\x43\xc3\x86\x4f\xaa\x4a\x9a\x8c\x00\ \xb9\x38\x0b\x72\xc4\x9e\xba\xea\x6e\x2b\x01\x67\x6e\xa2\x60\x06\ \x17\x4a\x3b\xca\x4c\x53\xe5\x39\xb4\x0e\x2e\xe9\xe9\x42\x28\x15\ \x33\x3e\x5a\x6d\x20\xef\x3b\x0e\xef\xec\x28\x18\xa7\x83\x66\x08\ \x1a\x21\x06\xc3\x6e\xf2\x56\x71\x05\x60\xca\x3c\xfb\x11\x71\xf5\ \x3a\xc0\xcc\x1c\x45\x89\xac\x51\x87\xa1\xde\xa1\x50\xaf\xb4\xa5\ \x4a\xd7\x89\xca\xa8\xba\x5e\x16\xc4\x34\xe0\xb4\x07\x51\x14\x18\ \x23\x8a\x61\xfa\x8c\x64\x21\x2e\x81\x88\x58\x93\xce\xa9\xec\x69\ \x83\x71\x71\xdc\x3f\x88\x84\xb6\xfa\x2a\x62\x38\x6a\x89\x38\x60\ \x4e\x02\x5e\xc2\x92\xa8\xa8\xa4\xf9\x40\x4f\x36\x10\x60\xd1\x3e\ \xf7\xc0\xa9\xc3\x9d\x93\xe8\xb9\x1e\xaf\x23\xa9\x27\xd1\xc5\xbe\ \x62\x71\x71\xc0\xed\x85\xab\x37\x1a\xbe\xea\x9e\x31\x7e\xb6\x7a\ \xfd\x82\xa1\xd5\xa9\xcd\x5b\xa3\xed\x53\xe5\xd3\x5e\x47\xd5\xa8\ \x0a\xdd\x61\x21\x18\x0c\x74\x31\xd5\xeb\x24\x25\x76\x30\x6e\x7f\ \x38\xdf\x79\xe7\x6c\x74\x93\x3e\xad\x1f\xa0\xb6\x4b\x87\xcb\x5e\ \x0a\x01\x73\x20\x14\x50\x0b\x87\xc5\xea\xbf\x56\xf4\x17\xd8\xfb\ \xbb\x7b\xec\x78\xc7\x16\x49\x07\xcc\x74\x17\x06\xdb\x2e\xbc\x48\ \xab\xe7\x84\x1d\x19\x9a\xf1\x00\x35\x25\xd1\x27\x66\xeb\x86\xdd\ \xe9\x67\xee\xac\x4c\x31\xce\x7d\xa6\x36\xe9\x49\xf4\x16\xa1\x93\ \xa0\x40\xa5\x25\x10\xc9\x54\x17\x38\x33\x2c\x4e\x1d\x64\x37\x89\ \xf0\x19\x5c\xc8\xc6\x74\x84\x1e\x7b\xf3\x30\xa1\x34\x40\xe3\x86\ \x9b\xb5\xda\x25\xc4\x2e\x02\xbc\x10\x23\x1d\xd0\xcb\x5e\x5b\x3e\ \x94\x8d\xce\x4d\xd9\xb4\x87\x46\x8f\xc0\xd9\xa9\x33\x1d\x5b\xa8\ \x81\xc2\x0a\x88\xa6\x9c\x22\xff\x7b\x88\xdb\xcc\xed\x35\xa8\x36\ \x74\xc0\x4c\x2d\xba\x2f\xb3\x39\x58\x35\x90\x5e\xb0\xcc\xf8\xec\ \x71\x25\xd5\xdb\x09\x2d\x21\xaf\x54\xa7\x24\x3a\x42\xb8\x24\x18\ \xe7\x4f\x0f\x11\xaf\xad\xad\x32\x09\x0c\x04\x18\xff\xbf\x93\xee\ \x4b\x57\xdd\xa5\xf5\x8c\xf3\x9f\xb3\x92\xcf\xb8\xc1\x11\x17\x0b\ \x8a\x52\x41\x3f\x1b\xee\xcf\xeb\x38\xd1\x90\x89\x00\xd9\x2c\x8c\ \x8c\x9f\x84\x13\x1d\x04\xe4\x86\x4a\x6b\x04\xbb\x90\x29\xe9\x8a\ \x42\x84\x1c\xea\x72\x58\x4a\xd2\xce\xd4\xa1\xca\x34\x8c\xd4\x99\ \x6b\x6b\x87\xd7\xa4\x36\xe7\x93\xd3\xfb\xa1\xde\x0a\x24\xa2\x64\ \xf7\x74\xa9\x44\x4e\x64\xe9\xd6\x82\x82\x59\x13\x33\x09\x14\x84\ \x03\x5b\xae\xca\x8d\x74\x08\x1d\x44\x41\x25\x48\x79\x34\xba\x8a\ \x32\xa0\x0b\x0a\x9d\x54\x29\x0c\x0b\xd7\xeb\x04\xcb\xfa\xb2\x50\ \x2a\x65\xc3\xdf\xad\x44\xfd\xcc\xcc\x14\xec\x1c\xd9\xdf\xb1\x85\ \x5a\xde\xbd\xb1\x99\xae\x2a\xf8\x14\x43\xbf\x13\x98\x0e\x2e\xed\ \xda\x77\x67\xa7\xea\x5e\x52\x8b\xc9\xec\xb2\xf9\x22\x6c\x5e\x75\ \x61\x7a\x84\x3e\xbb\xbf\xd9\x09\x96\xe1\xca\x21\xb0\xb0\x43\xf6\ \x79\x88\xbe\x31\x62\xc6\xb0\x19\x8d\x84\xbc\x2d\x1f\x6a\x4d\xdd\ \x49\x6e\xe5\xc0\xb8\x45\x48\x7d\xa6\x84\x33\xc1\x02\xb8\x79\x58\ \xf5\xd7\x2e\xb6\x01\x45\xe8\xbd\xbd\x59\x68\x75\x02\x6e\xed\x8b\ \x06\x3c\xba\xff\xf1\x8e\x2d\xd4\x60\x69\x15\x14\x33\x5d\x4d\x17\ \x9b\xe0\xef\x47\xb2\x6c\x72\x9c\xe7\x49\x30\x3e\xa3\xd4\x76\x53\ \xa2\x37\x1a\xb0\xb6\x77\x10\x96\x75\xf7\xa7\x32\x5f\x9d\x87\xae\ \x25\x7a\x26\x93\x0d\x61\x01\x14\x6b\x0f\xa7\x24\xd5\x83\x89\x4c\ \x64\xda\x7b\x5c\x2f\x3d\x12\x80\xcd\x60\xd3\x0f\xb0\xd8\x8a\xce\ \x46\xef\x9c\x44\xc7\x24\x6b\x6c\xe4\x20\x63\x60\xc7\x85\xee\x29\ \x63\xc7\x19\x2e\x2a\xed\x0f\xce\x2b\xb5\x7d\xdd\x70\x21\x1a\x3e\ \xaa\x4e\xfc\xd1\xe1\x67\x3b\xc6\xd9\xfb\x95\x8d\xde\x5b\x18\xf6\ \x7b\x8d\x9b\xde\x04\x2e\x52\x0e\x05\x4c\x42\x3d\x8c\x4d\xd4\xda\ \xf3\x6f\x51\x66\x0d\x2e\x58\xb6\x06\x06\x52\x22\xf4\xd9\xea\x04\ \x9c\x9e\x3d\x0a\x59\xcc\xf3\x34\xdd\x09\xd0\x9a\x92\x98\x78\x5c\ \x8d\xff\x60\xb4\x1c\xca\x20\x1f\x13\x7c\x14\xf2\xe5\xba\x58\xf7\ \x25\x12\x3a\x47\xc8\x09\x4b\x77\x0b\xe1\x72\xc2\xa6\x33\x6b\x2a\ \x01\x98\xa9\xac\xba\x3e\xe4\x05\x2b\xf3\xd1\x4d\x9a\xcb\xc3\x53\ \x47\x9e\x85\xf1\x0e\x01\x72\xbd\x85\x65\x30\x50\x5c\xad\x04\x6f\ \xcd\xc0\x1d\xa4\x05\xc0\x88\xe4\x42\xf5\xa4\xa2\x54\xf6\x53\xe3\ \xb5\xf0\xca\xeb\xf7\xeb\x35\xd8\xba\x6a\x73\x6a\xc1\x32\x27\xa6\ \xf7\xc1\x74\xed\x8c\x86\x30\x65\x93\x2b\x41\xfd\x8c\x45\x71\x7f\ \x34\x0e\xd6\x74\x90\x4a\x62\x13\x3f\x51\xae\x28\x85\xf3\x9f\xa7\ \x48\xe8\xb6\xd4\x6a\x62\x84\xf1\x82\x5a\x25\x59\x7c\xad\xec\xa9\ \x08\xda\xb4\x5d\x33\x54\x80\x4c\xd1\xa8\x08\x9b\xc9\xc1\xe1\xb1\ \xe3\xb0\xa7\x43\xfe\x74\x1d\xb6\xba\xaa\xfb\x42\x5f\xa2\x87\x92\ \x2b\x4c\x49\x63\x76\x8c\xa5\x76\x59\x62\x75\x9e\x06\xe1\x4e\x8c\ \x57\xd8\xa0\x8f\x2b\x56\x6f\x4a\x6d\xbe\xc7\x26\x77\x42\xb5\x51\ \x6e\x7e\x0d\xa3\x29\x19\x2f\xa5\x27\x0b\x99\x80\x99\x48\xc5\x98\ \x84\x4d\x00\x88\x29\xbe\x69\xc6\x63\xd0\x02\xfa\xce\x3b\x42\x5f\ \xa0\x7d\x8e\xf1\x42\x2c\xbe\xe7\x35\xc3\xc5\x83\xee\x35\x22\xa6\ \xf3\x26\x79\x80\xdc\xaa\xa1\x1c\xf4\xf6\xe4\xc2\xea\xaf\x0e\x2d\ \xad\xcc\xc1\x83\x3b\xbf\xd7\xb1\xc5\x5a\xd7\x7f\xb9\x45\x3d\x0c\ \x6a\x1e\xc4\x86\x97\x6a\x67\xc1\x99\xb3\x75\x98\x9c\xae\x87\x83\ \x65\xd0\x67\x54\xd7\x6d\xbe\x26\xb5\xb9\x1e\x9c\x78\xaa\x29\xcd\ \xcf\x65\x93\x3a\x12\x4a\x8b\x31\x4c\x10\x98\x10\x61\xd3\x97\x8b\ \x8c\x3a\x8e\x86\xb7\xc6\xd6\xde\xc9\x8d\x05\x4a\x74\x4e\x85\x8f\ \xdd\x3b\x09\x32\x27\x10\x19\x9b\x8d\x51\xed\x03\x80\x96\xa6\xed\ \xee\x52\x16\x36\xad\x2c\x82\x27\xde\x0d\xef\xca\xb7\x77\xfd\xa8\ \x63\x8b\xb5\xb6\xf7\x62\x2f\x65\xb5\x85\x64\x53\x0c\x17\x34\x7a\ \xc3\xeb\xba\x77\xc7\xce\x54\xa0\x56\xae\x87\x1b\x54\xd4\xeb\xb0\ \x72\x70\x39\x5c\x75\xc1\xc5\xa9\xcc\x73\xba\x3a\x0e\x47\xa7\x76\ \x28\x33\x27\x6f\x85\x4d\x42\x38\x62\x1a\x9b\x09\x73\x61\xe6\x12\ \x01\xe3\x02\x1a\x50\x04\x9f\xb1\x25\xb7\xc4\x68\x7b\xf3\xa9\xb1\ \xce\x44\x4f\x01\x8c\x93\x82\x95\x92\x54\x95\x89\x2d\xf3\x6b\x0b\ \xa4\x88\x02\x5d\xd9\x2c\xc0\x85\x6b\x8a\xd1\x22\x81\x85\x12\x3c\ \xb4\xe7\x47\x70\xaa\x43\xfe\xf4\xe5\xdd\xeb\x61\x59\x69\x1d\xd4\ \xc5\xf2\xd2\x46\x33\x0a\xa3\x32\xac\x6e\x28\x73\x70\xa4\x12\xd5\ \x7a\xaa\x65\xb8\x72\xdd\xa5\xb0\xa2\x3f\x9d\x60\x99\xa3\x13\xdb\ \x61\xb2\x32\xd6\x8c\x71\x67\xd6\x98\xe9\x82\x95\x06\x8d\x68\x26\ \xe8\x31\x17\xa2\x28\x61\x2f\xd4\x2d\x16\x69\xd9\x65\xba\x0c\x30\ \xda\xb4\x11\x1d\xa5\x2f\x4d\x75\x47\x81\x0e\x6d\x80\x4e\x88\xc3\ \x62\xf4\xc3\xc4\xb5\x7f\x91\xfe\x0e\x3f\xd7\x76\xee\x85\x6b\x4a\ \x8a\xae\xb3\x61\x86\x93\xc9\xc0\xe8\xd9\x53\xf0\xd0\xae\x1f\x74\ \x64\xb1\xb2\x6a\x13\x6f\x1e\xbc\xde\xaf\xaa\x2a\xaa\x8a\x66\x40\ \x10\xb6\x92\x59\x66\xca\x0d\xd8\x77\x7c\x16\xbc\xa8\x99\x10\xd1\ \x35\xe0\x55\x97\xbf\x18\x30\x93\x4e\x32\xcb\xee\xb1\xef\x2b\x65\ \xa7\x12\xa8\x2a\x23\x78\x05\x52\xf6\x4a\xf5\x14\x86\x94\xd6\x52\ \x68\x27\xff\xa0\x40\xcc\x91\x4e\x36\xa6\xbf\xdc\x8c\x57\x90\x26\ \x89\xe0\x8a\x4f\xa4\x29\xd1\x6d\x35\xf6\xa5\x2a\xb1\x66\xc1\x09\ \x8a\x23\x62\x12\x54\xdf\x68\x01\x07\xad\xbe\x0f\x0f\x64\x61\xdd\ \x8a\x82\xaf\xbe\x07\x6f\x74\xbd\x06\x5f\x7c\xec\x9b\x1d\x5b\xb0\ \x4b\x96\xbd\xc4\x6b\xa5\x4c\x2d\x90\xcd\xb6\xf1\xda\x13\xcf\xe7\ \x10\x0e\x9d\xa8\xc0\xf8\x59\xa5\x0d\x64\x03\x61\xbf\x4a\xcc\x97\ \xba\xfb\xe0\x35\x57\xdf\x91\xca\xfc\x6a\x8d\x2a\xec\x1b\x7f\x4c\ \x7d\x45\x01\xd8\xa8\x31\x1b\xa8\xba\xc4\x31\x50\x5c\x05\xdd\xb9\ \x01\x2f\x0d\x37\x22\x7d\x83\x5f\x8e\x46\xef\x74\x30\xf6\x0c\x0a\ \x1b\xd0\xa9\xe7\xe7\x40\x75\xa7\x04\x66\x37\x02\x2f\xc5\xd9\x92\ \x41\x42\xb6\x4c\x10\x90\x43\xc6\x95\x42\x7e\x99\xe4\x82\x22\x9c\ \x4b\x36\x74\x47\xf9\x43\xbe\x08\xdf\xd8\xfe\x10\x8c\x4f\x77\xa6\ \x60\xe4\xfa\xfe\x2b\x94\xad\xbe\xb5\x59\x2b\x5d\xe2\x88\xbc\x2f\ \xf8\xf1\x3d\x33\x40\xb5\x46\x78\xdf\x57\xe6\xe0\x25\xdb\x6e\x84\ \x4b\xd6\x6e\x4d\x07\x84\x3b\xfb\x38\x9c\x9a\x3d\xa0\x08\x3d\xc7\ \x77\xc2\x11\x04\x63\x26\x05\x69\xa8\x35\x9e\x75\x7d\x97\x29\x66\ \x53\x0e\xdd\x3b\xed\x12\xd5\xf7\xcb\xab\xcd\x9f\x05\xef\xc8\x7a\ \xca\x58\x1d\xe6\x6a\xb3\x5e\x70\x0f\xbf\x27\xcc\x7d\x61\x32\x57\ \x47\xf5\x49\xc7\x02\x4a\x99\x04\x02\x5f\x92\x14\x9b\x60\x35\x2a\ \x26\x75\x8a\xcc\xe2\xfe\x18\xff\xfd\x5a\x72\x29\xf5\xfd\xe2\x0d\ \x25\xb8\xb7\x3b\x0b\xe5\x4a\xa0\x30\x64\x36\xe7\x75\x6e\xf9\xe6\ \xd3\xf7\xc3\x9b\x6f\x7e\x7d\xfa\x9c\x31\x93\x85\xab\x57\xbe\xd2\ \x43\xb5\x21\x53\x34\x1a\x4e\x20\x6b\x67\xea\x82\x31\xc7\x46\xab\ \xb0\xf3\xe0\x8c\xfa\x03\x23\xeb\xf7\xcb\xb7\xfd\x4c\x33\x82\x6d\ \xe9\x63\xfb\xa9\xfb\x14\x13\x2a\x43\x31\xd3\x1b\x61\x3e\xda\x62\ \x28\x79\x15\x7a\x4c\xf3\x97\xe0\x74\x4a\xf1\x07\xd7\xae\x7e\x35\ \x3c\x71\xea\xeb\xea\xda\x55\x28\xe6\x0a\x5e\xee\xfd\xc8\x99\x2a\ \x3c\xb5\x77\x06\x76\x1d\x99\xf1\x6a\xd6\xcf\xd5\x2a\x90\x55\xdf\ \xb9\x7e\x68\x05\xbc\xf9\xfa\xd7\xc0\xf2\x55\x23\x30\x52\xde\xe1\ \xf7\xa1\x8f\xab\xef\x1e\xb4\xd7\x23\x25\xa2\x9d\xea\x9e\x02\xa1\ \x0b\xa5\x7c\x20\x06\x53\x13\x6b\x7a\x73\xbe\xe7\xc0\xeb\x08\x42\ \x57\x52\xff\x6f\x5d\x72\x6d\xb9\x52\xdf\x2f\xbc\xa0\x04\x3b\xf7\ \x4c\x2b\x49\x1e\x88\x95\x56\xea\xf0\x3f\x7e\xff\x4b\x1d\x21\x74\ \x3d\xae\x5c\x79\x17\x7c\xf7\xe8\x3f\xc1\x78\xf9\x44\x13\xd9\x46\ \x10\xa1\x6c\xd2\x9a\x3a\xc2\x43\xdb\x27\xa1\xa2\x33\xd6\xf2\x01\ \x25\xaa\x3c\x03\x37\x6e\xbb\x01\x5e\x77\xed\xdd\xa9\xcc\x6b\xa6\ \x7a\x16\x9e\x1d\x7b\x48\xcd\xa9\x18\x5e\xaf\xe6\x3a\xea\xa5\x2c\ \x16\x31\x4a\x17\x9a\xd0\xe7\xd2\xe9\x76\x73\xd1\xd0\x8d\xf0\xba\ \x2d\xbf\x06\x9f\xfc\xd1\x87\xe0\xf1\xfd\x47\xe0\xd9\x43\x73\x70\ \xf2\x84\x92\xf0\x15\xf5\x65\x85\x02\xf4\xf7\x0d\xc3\xcd\x9b\x6e\ \x82\xd7\x5c\xf1\x32\x78\xdd\x75\x77\xc3\x45\xab\x37\xc0\xe7\x77\ \xbe\x17\x8e\x9c\x78\x12\x0a\xba\x28\x26\x5a\xaa\xea\x22\xf2\x78\ \x8f\x23\xf2\x34\x09\x1d\x92\x27\x08\x85\x24\x86\x4c\xac\x6d\x0d\ \x61\xbe\x0a\x4d\x10\x5d\xc5\x70\xcb\x26\x06\x25\xd6\x41\x2c\xd7\ \x6d\xe9\x81\x9d\xfb\xa6\xc3\xf3\x2a\x94\xe0\xab\x4f\x3f\x00\xbb\ \x8e\xed\x86\x6d\x29\xa9\xc4\x61\xd0\x69\x10\x6e\xbd\xe0\x67\xe0\ \x5f\xf7\xbc\x3f\xe0\xc2\xc2\x76\x93\xc1\xc0\x5c\x0b\x8a\xb0\x0f\ \x2a\xdb\xfc\xa9\xdd\xd3\xbe\x34\x6f\x01\x0d\x0d\x0f\x7c\xfb\x83\ \x37\xbc\x47\x9d\x53\x4c\x49\x9a\x7f\x07\xce\xcc\x1d\x53\x6a\x72\ \x37\xbb\xdc\x1a\xdb\xe8\xeb\xca\x85\xe7\xd1\xf4\x12\x1c\x3c\x73\ \x22\x35\x82\xb9\x69\xed\x9b\x80\xa6\xd7\x43\xdf\xec\xfd\x70\xf5\ \xd0\x1c\xf4\x94\x0a\xb0\x69\x70\x39\x6c\x5b\x73\x11\x5c\xb1\xfe\ \x32\x58\x39\xb0\x22\x74\x7e\xd8\x8b\x61\x60\x09\xad\x84\x27\x2e\ \x01\x26\xc0\x50\x9d\x1a\xbf\x44\x42\xe7\x04\xb2\xa9\x2d\x91\xa0\ \x99\x73\x88\x2a\xe7\x13\x35\xe3\xc2\xd1\x80\xf6\x29\xd0\x30\x21\ \x70\xae\xee\x31\xbe\x6d\x5d\x09\xd6\x2c\x2f\xc2\xf1\x53\xe5\x36\ \xc8\xa5\xd4\xe0\x39\xa5\x8a\x7e\xec\xfe\xcf\xc0\x1f\xdd\xf3\xdb\ \x1d\x59\xb8\x1b\xd6\xfe\x24\x3c\x35\xfa\x2d\xd8\xaf\x6c\xe2\x62\ \xb6\x3b\x30\xef\x36\xf3\xca\xaa\xf9\x54\xaa\x04\x5f\xf9\xfe\x38\ \x54\xb5\x79\x91\x0b\xb8\x03\x67\xa6\xe0\x9d\x77\xff\x22\xbc\x2a\ \x25\x10\x4e\x17\xc5\x78\x74\xe4\xab\xed\xb2\x51\x4c\xf5\xdd\x3a\ \xe9\xec\xbf\x1c\x64\xd4\x3c\x1a\xc1\xec\xb9\x6c\x1e\x8e\x8c\x1e\ \x86\xb9\xf2\x2c\x94\x8a\xdd\xa9\xcc\xe7\xe6\xad\x37\x79\xc7\x82\ \x46\x50\x1d\x47\x69\x23\xba\xe6\x8a\x9d\x03\xe3\x4c\x6d\x49\xaa\ \xa9\x20\x55\x54\x22\x2e\x03\x29\x98\x96\x08\x4c\xd1\x09\x9b\x9d\ \xd6\xae\x51\x5e\x2c\x20\xdc\x78\x49\x6f\xd4\xa4\x28\x74\xc1\xc7\ \x1f\xfe\x22\x8c\x4e\x9c\xea\x0c\x87\x54\x92\xfc\xf5\x5b\x7e\x03\ \xfa\xf2\xc3\x3e\xf8\x64\x98\x35\x3a\x1d\x35\xab\x8e\x2f\x2b\x22\ \x3f\x74\x64\xd6\x27\xf2\xf9\xe9\xcf\x4c\xc2\xf5\x5b\xaf\x87\x3f\ \xfe\xe9\xff\x91\xda\x7c\x76\x9d\x7e\x18\x0e\x4f\x3d\x03\xb9\x6c\ \xd1\x58\x8b\x76\x88\x9e\x6e\xe9\x36\xd4\x9f\x55\x6b\x96\x0d\xdf\ \x86\x4c\x0e\xf6\x8c\x1e\x85\x13\x1d\x2c\x99\x9d\x68\x7f\x21\x19\ \x9b\x8c\xa2\xea\x3b\x41\x42\xdb\xd1\x8d\x85\x11\x3a\x57\x0f\x22\ \xce\x36\x0f\xc5\x7b\x13\x63\x5b\x05\x1e\xd1\x04\xe1\xe2\x80\x98\ \xf0\xd0\x3e\xf5\xab\x95\xfa\xbe\x62\x59\xd1\x37\xdc\xe7\x4f\x55\ \x52\x6a\x64\xf4\x08\x7c\xe4\x3b\x9f\xea\xd8\xe2\xad\xea\xbd\x08\ \xde\x7c\xc9\xff\xf4\x9a\x30\x56\xea\x73\x2d\xa6\x96\xcf\x81\x47\ \xe4\xff\xf6\xbd\x71\x78\xe4\xa9\x09\x1f\x3f\x98\x67\x78\xb3\x13\ \x70\xcd\x85\x57\xc2\x17\xde\xf3\x7f\xbd\x42\x90\x69\x49\xf3\xef\ \x1e\xf9\xb4\x87\x5e\x63\x24\x9a\xac\x4d\x4d\xfa\xeb\xbb\x8b\x19\ \x58\xab\xb3\xff\x6a\x81\x7b\xa4\xe6\x3a\xab\x98\xcf\xe3\x07\x9e\ \x7c\x6e\x76\x61\xc4\x15\x87\x51\x4d\x10\xa4\x02\xa3\xb6\x4a\x28\ \x6e\x24\x27\x74\xae\xec\x90\xad\xa0\x6b\xd0\xf6\x66\x4f\x40\x23\ \xbd\x10\x79\xce\xcd\x12\x76\x94\x61\x34\xbc\x7a\xef\x08\x2f\xba\ \x5c\x49\xf5\x86\xf1\xa5\xca\xf6\xfd\xf0\xb7\x3e\x09\x27\xcf\x9e\ \xec\xd8\x02\x6e\x1d\xbe\x19\x7e\xf6\xb2\x3f\xf4\x12\x5e\x74\x8f\ \xb3\x6c\x8e\xe0\xcc\x54\x1d\x3e\xf3\xad\xd3\xf0\xf0\x63\x67\x7d\ \x73\x42\xe7\xb0\x97\x67\xbc\xe3\x27\x6f\xfe\x09\xf8\xf7\xdf\xfc\ \x24\xac\x5f\xbe\x3e\xb5\x39\xec\x1c\x7d\x40\x99\x10\x8f\x41\x3e\ \x53\x32\xc0\xc0\xf0\xda\xea\x67\xda\xcd\xb5\x7e\x75\x31\x4a\x5c\ \xf5\x1a\x7c\x63\xc7\xc3\xcf\xf1\x76\xc4\x68\xdd\xf7\x10\xb1\x3b\ \x95\xbd\xf3\xaa\x3b\x81\xdc\x18\xd3\xd6\xf7\x9e\xe3\xbc\x68\xc9\ \x79\x6d\xd9\x69\x5c\xb1\xba\xa0\xfd\xd0\xd6\x00\x2a\x4a\x3a\x5d\ \xb3\xb5\x1b\xd6\xac\x2a\xb6\x0b\x3a\xe8\x23\x57\x80\x63\x27\x0f\ \xc3\x1f\x7e\xe9\x2f\x3b\xba\x88\x17\x0e\x5d\x0f\xef\xbc\xe6\x2f\ \xe1\xee\x8d\xef\x82\xc7\xb7\x37\xe0\x03\x9f\x39\x00\x4f\x3c\xa5\ \x98\x8b\x96\xf2\xd5\x59\xe8\xce\xe5\xe1\xf6\xcb\x6f\x85\x4f\xfd\ \xe7\xff\x03\x9f\x7f\xf7\xff\x07\xab\x06\x56\xa6\xf6\xdd\xba\x5b\ \xea\x7d\x87\x3e\x6e\x24\x00\x1a\x80\x55\xa0\xbc\x53\xad\x41\x70\ \xd9\xfa\x12\x64\x4a\x86\x3b\x4f\xad\xd5\x57\x9f\xba\x1f\xa6\xe7\ \xa6\x9e\x63\x5a\x67\x36\x12\x22\x6f\xb3\x47\x02\x73\x9c\xea\xbe\ \x78\x30\x2e\x69\x83\x06\x33\xdc\xd1\xe4\xc0\x14\x50\xd3\x83\xc0\ \x9c\x01\xb0\xf1\xc0\x00\x32\x60\x5e\x90\xd9\x93\xe7\x1f\xbe\xf3\ \xfa\x01\xf8\x87\xaf\x9d\x02\x0a\x66\x92\x96\xba\x95\xfa\xfe\x4f\ \xf0\xf6\x97\xbc\x19\xae\xde\x78\x65\xc7\x16\xb2\x3b\x3f\x00\x2f\ \xdf\xf4\x0e\x58\xff\x9a\x57\xc0\x2f\x5d\xbf\x17\x0e\x8c\x1e\xf0\ \x5e\xdf\xb0\x6c\x1d\x6c\x5b\xbd\x19\xb6\xae\xb9\xa8\x23\xdf\xfb\ \xfd\xa3\x9f\x85\xc3\x93\x3b\xa0\x98\xeb\x02\x6b\x5d\x2f\x6c\xbb\ \x25\xd7\xae\x28\xc0\xe6\xb5\x25\xd8\xb3\x7f\x5a\x89\xf8\xcc\x7c\ \x03\x7a\xd8\x77\x7c\x2f\xfc\xf3\x23\x5f\x81\x5f\x7c\xe9\x5b\x9e\ \x1b\x1b\x9d\x6b\x9a\x88\x28\x84\xc4\x52\xb8\x77\x00\x39\x69\xbf\ \x34\x42\x67\xcc\x6a\x56\x7d\x27\x46\xfc\x87\x52\x36\x85\xe4\x04\ \xe4\x7c\xcf\x14\x6d\xa3\x1c\x41\x91\xc3\x3e\x54\x2d\xd5\x2f\xdb\ \xd8\x05\x57\x5f\xdc\xab\xa4\xea\x44\xdb\x5f\x9d\xc9\xc2\xcc\xec\ \x14\xfc\xfa\xa7\xff\x10\xbe\xfa\xeb\x1f\x57\xf6\x73\xa1\xa3\x0b\ \x7a\xd1\x9a\x0d\xde\x71\x2e\xc6\xc9\xa9\x7d\x70\xff\xe1\x7f\x80\ \x7c\xb6\xc8\x63\x1a\xa1\x26\x8f\xf3\xf6\xbc\xbf\x34\xb7\x28\x53\ \x67\xcf\xa1\x99\xb0\xfd\x8b\x19\x78\xff\xd7\x3f\x06\x6f\xbd\xe5\ \x0d\xa9\xb9\xfc\x16\x66\xa3\x73\x9a\x5d\x8c\x3d\x6e\x78\x3a\xdc\ \x58\x8a\xea\x2e\x99\xc9\xb0\x08\x1c\x24\xd2\x6d\x13\xf8\x22\x05\ \x04\x72\x1f\xaf\xe0\xe7\x02\xf6\x7c\x5d\xed\xe2\xbb\x95\x54\x1f\ \x18\x0c\xc4\xc0\x7b\x9d\x1f\xba\xe1\xde\x27\xef\x83\x0f\x7e\xed\ \x6f\x5f\x30\x37\xae\xde\xa8\xc2\x97\xf7\x7e\x10\xa6\x6b\xe3\xe1\ \x06\x0d\x56\x49\xe9\xd7\x95\xd7\x2e\xbf\x4b\x37\x28\xa6\xb8\xad\ \x4f\xfd\x11\x90\x8c\xf9\x12\x3c\xbd\xef\x49\xf8\xb3\x7f\xff\x9b\ \x73\xbb\x09\x31\x1b\xae\x1e\x1b\x51\xee\x12\x76\xf4\x74\x12\x7d\ \x89\x60\x1c\x67\x87\xc7\xd6\x05\xa7\x68\x6b\x26\xe0\x08\x9c\x69\ \xc7\x84\xc8\x97\x0a\x26\x06\xb0\x0b\x6c\x02\x4d\xdb\xda\x7d\xf4\ \x9a\x17\x0d\x79\xc1\x34\xe1\x20\x9a\x2e\xf8\x83\x7f\xf9\x10\x3c\ \xbc\xfb\x91\x17\xc4\x8d\xbb\xf7\xc0\x47\x61\xf7\x99\x1f\x40\x21\ \xdb\x05\x6c\x76\x18\xbb\x6e\xed\xa1\x53\x66\x5f\x7d\xd3\x00\x2c\ \x5b\x59\x6a\x13\xbb\xb7\x4e\x25\xf8\xfd\x2f\x7e\x08\xbe\xf1\xe4\ \xb7\xcf\xc9\xef\x98\xa9\x8c\xfb\x6d\xa3\x74\x08\x30\x22\xb3\x27\ \x8c\x62\x24\x80\xb2\x70\x70\x23\x05\x89\x4e\x02\x08\x07\x02\x10\ \x17\x57\x90\x2c\x54\xe6\x79\x21\x6a\x5e\x40\x55\x0b\xe6\x7b\x37\ \x6f\x7c\x59\x49\xab\xab\x36\x77\xc1\xcb\xaf\x1f\x6c\x4b\x75\xaf\ \xc9\x43\x16\xa6\x66\x67\xe0\x6d\x7f\xfb\x1b\x70\x72\xfc\xe4\xf3\ \xfa\xa6\x3d\x31\xf2\xef\xf0\xc0\x91\x7f\x68\x12\x39\x32\x26\x8e\ \x71\x63\x18\x0c\x44\x6b\x3f\x7d\x3d\x59\xf8\xf9\xbb\x96\xc3\x8a\ \xe5\x4a\x03\x9a\x6f\xfa\x98\xcd\x41\xb9\x56\x85\x9f\xfd\xeb\x5f\ \x85\x6f\x3c\xfd\x9d\x0e\x69\x23\x35\x38\x32\xf1\x0c\x7c\x65\xcf\ \x87\xe0\xaf\x1e\x7d\x07\x1c\x98\x78\x42\x99\x13\x85\x18\x03\x9e\ \x2b\x46\xe2\x88\x3d\x3d\x42\x27\x61\x3d\x29\x6e\x7d\x4d\x20\xc8\ \x50\x07\xb8\xd6\x4c\x91\xe7\x4c\x38\xa4\x64\xb7\x05\xea\xaa\x6b\ \xdf\xfa\x1d\xd7\xf5\xc1\x15\xca\x5e\xf7\xda\xa2\xcc\xff\x06\x25\ \xad\x76\x1d\xdd\x03\x3f\xff\x91\xff\x0a\x33\xe5\xe9\xe7\xe5\x0d\ \xdb\x33\xf6\x03\xf8\x97\xdd\xef\xf7\x1a\x31\x26\x6b\xc6\x88\x22\ \xa0\xa2\xd7\x69\xc5\x60\x16\xde\xfe\xda\x95\x70\xd5\xc5\x4a\x8d\ \xd7\x49\x64\x7a\xbd\xb2\x05\x18\x9d\x99\x80\xd7\x7d\xf0\x5d\xf0\ \xde\x2f\x7e\x00\x66\xe6\x96\xbe\x56\xb5\x46\x05\x8e\x4f\xee\x82\ \xfb\x0f\xfe\x3d\x7c\xf4\xf1\xff\x02\x1f\x7d\xe2\xdd\xf0\xe0\x91\ \x7f\x84\x89\xaa\xee\x0d\x97\x89\x86\xbc\x72\xea\x22\xa1\xf0\xbb\ \x5c\x1f\xb6\xa5\x83\x71\x68\x51\xd5\x59\x70\x8e\x8c\xd2\x3e\x04\ \xd6\x38\x5a\xb3\xad\x6e\x48\x55\x03\xa3\xe4\xb3\x09\xcc\x51\x98\ \xbb\xe3\x7c\xfd\x77\xf2\x12\x49\xde\xf4\xd2\x61\x28\xcf\x35\x60\ \xf7\x3c\xba\xac\x47\xb1\x07\xbe\xfe\xd8\xb7\xe1\x9d\x1f\xfb\xef\ \xf0\xf7\xef\xfa\x00\xe4\x52\x6c\x51\xdc\xe9\x71\x60\xfc\x09\xf8\ \xec\xce\x3f\x80\x2a\xcd\xf9\x89\x2b\x9c\x6f\x19\xa3\x40\xa5\x8d\ \x8b\x57\xab\x00\xfd\x5d\x19\x78\xcb\x9d\xcb\xe0\xea\xad\x3d\xf0\ \xe8\xce\x29\xd8\x3f\x32\x07\x33\x33\x79\xb5\x76\x35\xf8\xdd\x4f\ \xfd\x29\x7c\xe2\xe1\xaf\xc2\xdb\x5e\xf4\x06\x78\xed\x35\x77\x7a\ \xe9\xb4\x85\x42\x7c\xa6\xdd\x5c\x75\x12\xce\x96\x4f\xc2\xa9\x99\ \x83\x9e\x8f\xff\xc8\xe4\x76\x38\x39\x73\x00\x2a\xf5\x19\x2f\x4c\ \x37\x87\x79\x3f\x74\x38\x14\xf2\xda\xec\xcc\x89\x64\xb8\x59\x0d\ \x89\x4e\x5c\xea\xad\xeb\xd4\xb2\x34\x42\x07\x0b\xfe\x21\xbd\x89\ \xc4\x14\x14\x40\x8b\xfa\x1e\xd8\x98\x64\xdc\x38\x4a\xd2\xc8\x30\ \xda\x0c\x42\x17\x91\xd4\xc5\x1e\xde\x72\xfb\x32\xf8\x8c\xfa\x7b\ \xf7\x81\xe9\x36\x12\xdf\xd5\x07\x9f\x7a\xe0\x73\x8a\x58\xb2\xf0\ \x91\x77\xfc\x31\x14\xf3\xa5\xf3\xfe\x46\xe9\x84\x95\x2f\xec\xfa\ \x23\x98\xab\x4f\x85\xb3\xd3\xd8\xa8\x41\x7b\x0b\xea\x70\x3b\x6b\ \xdf\xb7\xae\xcf\xbc\x64\x63\x09\x2e\x5e\x5f\x84\xb1\xc9\x3a\x1c\ \x3d\x55\x81\x93\x67\x6a\x30\x36\x55\x55\xc7\x21\xf8\xf0\xc3\x7f\ \x0e\xff\xf4\xd4\xc7\xe0\xd2\x0b\xb6\xc0\xa5\x2b\x36\xc0\xfa\xe1\ \xd5\xb0\xbc\x7f\x39\xac\x19\x5a\x03\x03\x3d\x03\x30\x31\x77\x0a\ \xa6\x2a\x63\x70\x76\x6e\x04\xce\x54\x8e\xab\xc7\x93\x1e\xa1\xcf\ \xd5\xa7\xbd\xef\xca\x40\xd6\xcb\x57\x2f\x78\x79\x01\xc1\x3e\x75\ \x86\x87\x25\xc2\x9f\x4c\x17\x6c\x30\x5d\x99\x92\x99\x89\x6e\x24\ \xf4\xa3\x03\x24\x8f\x90\x43\x03\x8c\xe3\xfa\xad\xc5\xa2\xa9\x66\ \x9e\x3a\x2c\x80\x83\xb7\x5f\xd7\x39\xeb\x5d\x25\x84\xb7\x2a\x3b\ \xf4\x0b\x0f\x64\xe0\xa9\x9d\x93\x7e\x15\x04\x7d\x4a\x57\x2f\x7c\ \xe2\xfe\xcf\xa8\x4d\x3c\x0e\x7f\xf7\x1f\xff\xcc\xdb\xb4\xe7\xeb\ \x78\xf8\xc8\x67\xe1\x6b\xfb\xff\xca\x0b\x71\xf5\x89\x9c\xf8\xe2\ \x8a\x64\xd4\xa9\x43\x4b\xfa\x6c\xeb\x63\xf3\x6d\xa9\xc9\xef\x07\ \xa7\xde\x1c\xea\xcb\xc2\xf2\xc1\xee\xc8\x9d\xa9\x35\x1a\x50\xa9\ \x1d\x81\x0a\x1d\x86\x3d\x35\x6d\x46\xa8\x17\xc7\xc8\xf8\x86\x66\ \x47\x1a\xd4\x84\x9d\x6b\x83\x85\xd6\xe2\xb9\x5c\xc2\x8a\x14\x60\ \x15\xcc\x64\x33\x7e\x97\x13\xe8\x29\x80\x71\xe6\xba\xa2\xc0\x50\ \x43\x79\xe8\x10\xb6\x9f\x63\x0b\xc4\x23\x93\xbd\x64\xd8\x6c\xa1\ \x92\xd0\x92\x2b\xa0\xfd\x11\xdd\xa2\x38\xaf\x34\xcd\x9f\xbe\x6d\ \x18\xee\xbc\x69\xd8\x7f\xb9\xd6\x24\x82\x52\x1f\x7c\xf9\xd1\x6f\ \xc0\x2b\xff\xe4\x67\xe1\x07\x7b\x1f\x3d\xef\x6e\xce\x64\x79\x14\ \x3e\xb7\xe3\x7f\xc1\x97\xf6\x7e\xc0\x23\xc4\xac\x97\x12\x4b\x06\ \x81\x40\x94\x40\x42\xa6\x0d\xca\xb6\x56\xab\xe3\x8c\x01\x96\x29\ \x6d\x48\xbb\xe0\xf4\x51\x0e\x1c\x75\x5d\x05\x0b\x8a\x90\xc7\x92\ \x57\x4e\x4b\x13\xb1\x96\xd0\x5a\x05\x2f\xb4\x8e\x2e\xef\xd0\xad\ \xa6\x91\x90\x01\x4f\xa5\xee\x11\xb6\x16\x5d\x5c\x77\x16\x46\x12\ \x39\xf7\x5a\x4a\x84\x2e\x75\x40\x16\x19\x82\x69\x53\x4b\x85\x03\ \x92\x38\xe6\xa5\xe4\x17\xb3\x41\x5f\x74\xe3\xd7\x9b\x80\xf2\x5d\ \x37\xf6\xc3\xcf\xbd\x6a\x25\xac\x18\x6a\xa2\xcc\x3a\x7a\x44\x49\ \xf6\x47\x0f\xee\x80\x3b\xff\xe4\x3f\xc0\x07\xbe\xf2\xd7\x6a\x93\ \x57\xcf\x8b\x1b\xf3\xc4\xc8\xd7\xe0\xa3\x4f\xfc\x0a\xfc\xe8\xc4\ \x97\x15\xa3\x2a\x05\x7c\xe5\x08\x7c\xbb\x66\x73\x8d\x90\xe9\x79\ \x86\x7c\x02\x12\x0a\x15\x7f\x38\x5b\x38\xe8\xfa\x8c\x0b\x50\x89\ \x10\x37\x41\xb4\x7d\x52\xb0\xe1\x03\x31\xed\xa8\x03\xf3\xb2\x01\ \xbe\x04\x2e\x60\x66\xc9\x36\xba\xe4\x3f\xb7\x99\x87\x60\xb4\xcf\ \x65\xeb\x78\x5b\xec\x78\xc9\xae\x0f\xa9\x78\xc6\x06\x42\x02\xd6\ \xe7\x47\x7e\x5d\xd2\x39\x45\xc3\x97\x6f\xec\x82\xf5\xcb\xf3\xf0\ \xc0\x93\x93\xf0\xfd\xed\x93\x50\x9d\x53\x22\x3f\xd7\xa5\xec\xcb\ \x39\xf8\x6f\xff\xf8\x5e\xf8\xe2\x63\xf7\xc2\xef\xfd\xe4\x7b\xe0\ \x8e\xcb\x5f\xf6\x9c\xdc\x90\xdd\x63\xdf\x83\x87\x94\xaa\xbe\xfb\ \xcc\xf7\xbc\x58\x80\x62\xae\xc7\xbe\x4e\xa1\x35\x91\x54\x5e\xa3\ \x73\xab\x64\xbb\x73\x26\x80\xf8\xbd\x94\x60\x5e\x82\xd4\x26\x46\ \x18\x48\x15\x63\xcd\xdf\x22\x55\x8f\x45\xa7\xba\x2f\x8d\xd0\x6d\ \xc0\x9b\xcd\x7e\x37\x2b\xc4\x58\xaa\xc5\x84\xab\x84\x30\xa5\xa4\ \xcc\x8e\x1c\x5c\x97\x8e\x44\x7d\xdf\xb4\x9f\xbd\x0e\xdd\xa5\x0c\ \xbc\xf6\x45\x83\x70\xed\xd6\x1e\xf8\xde\x33\x53\xf0\xe4\xbe\x69\ \x28\xcf\x28\xe5\x46\xa9\x9c\xf7\x6f\xff\x1e\xdc\xb5\xf7\x31\x78\ \xcb\x0d\xaf\x84\x77\xdd\xf6\x56\xb8\xfd\xb2\x5b\xbd\xd0\xd0\x4e\ \x0e\x5d\x02\x6a\xd7\xd8\xc3\xf0\xf8\xc8\xbf\xc3\xbe\x89\x47\x3d\ \x3f\xb3\x96\xe2\xc8\xf9\xc6\x31\x86\xb8\xad\x9c\x99\x5b\x73\x64\ \x08\x8e\x89\x2f\xe7\x92\x4a\xd8\xe8\x35\x1b\xc1\x9a\x36\x78\x5c\ \x3f\x35\x4e\x9a\x58\x70\x1d\x47\xe9\x29\x80\x71\x0b\x65\x02\x2c\ \xb1\x05\x7b\x89\x33\x2a\x63\xe8\x74\x4b\x33\x3d\xa9\x4d\x8f\x95\ \xe0\xdb\x1b\x45\xab\xf2\xf5\x46\x03\x56\x0d\xe7\xe1\xa7\x5e\x36\ \x04\x2f\xba\xb2\x17\xb6\xef\x9f\x85\x67\x0e\xce\xc0\x89\xd3\x59\ \x68\x94\xab\xf0\xe9\xfb\xbe\x08\x9f\x7e\xe4\xdf\xe1\x65\x5b\x6f\ \x80\x7b\x6e\x7c\x35\xbc\xfa\xea\x3b\x60\xd3\xca\x8d\xa9\xdf\x80\ \x4a\x7d\x16\xfe\xf1\xe9\xdf\x82\xbd\x67\x7f\xe8\xa9\xe7\x3a\x6e\ \x3d\xd2\x68\xd1\x2c\xd8\x61\xc6\x81\x07\x13\x86\xcc\xe4\xa1\x44\ \x80\x0b\x08\x4c\x00\x0c\xad\x2c\xce\x7b\x62\xde\x04\x53\x43\x8b\ \xfb\x7e\x29\x22\x4b\x32\xd5\x5c\xd8\x6b\x8a\xaa\x3b\xf1\xf5\xb4\ \x11\x12\x84\xc1\x4a\x37\xd9\xb2\xb1\x4c\xa9\x2d\x75\xe1\x24\x41\ \xbd\x33\xb3\xe1\x42\x85\x2f\xc2\x9b\xb0\x56\xf7\xa5\xca\xca\xc1\ \x1c\xac\xb9\xbe\x1f\x5e\x72\x55\x1f\x1c\x3f\x5d\x85\xc3\x23\x65\ \x78\xf6\xc8\x1c\xec\x3d\x3a\x0d\xf7\xef\x78\x58\x49\xf9\xef\xc2\ \x40\xff\x32\xb8\x76\xe3\xe5\x70\xeb\x85\x57\xc2\x2f\xdf\xf9\x8b\ \xb0\x6e\xd9\x05\xa9\xdc\x80\x7c\xa6\xe8\x55\xab\xd1\x44\x5e\x50\ \x52\x3c\x4c\xb4\xc4\xa0\xd2\xc4\x36\x68\x94\x83\x46\xe2\x2a\xa5\ \x5a\x7c\xee\x26\xf3\x45\x09\xb0\x11\x40\x36\xb2\x08\x60\x89\x2b\ \xb7\xfc\xe8\x64\x29\xff\x6c\xe2\x35\xae\x38\x64\x0a\x60\x1c\x2e\ \x5c\xd2\xb3\xf6\x55\x8c\xfd\x4d\xc6\x7b\x56\xe6\x80\xd1\x0d\x6c\ \x2b\xbb\x1c\xf9\xa2\xb0\xe4\xd0\xc8\xbc\x46\x95\xf5\x47\x37\xac\ \x2a\xc0\xcb\xae\xed\x83\x9f\xbb\x6b\x19\x0c\xf4\x16\x14\x2b\x2c\ \x79\x41\x36\x67\xe7\xa6\xe1\x3b\x4f\x3f\x08\xef\xfb\xcc\x9f\xc0\ \xe7\x1f\xf9\x72\x6a\x37\x40\x47\xb7\x6d\x1a\xb8\xda\x6f\x08\x11\ \x01\xc9\x38\x62\x14\x18\x69\xb0\xc7\xb8\x15\x25\x25\x0b\xb1\x72\ \xb6\x2f\x08\x1d\x77\x80\x01\x55\x25\x65\x8e\x12\x99\x55\x51\x9c\ \x05\x12\x30\x2f\x70\x44\x9e\x0a\xa1\x27\x09\xb0\x8a\x5d\x67\x03\ \x55\x8d\xa4\x14\x06\x36\x68\xa8\x6f\x19\xca\x1d\x59\x31\xd0\xc0\ \x2f\xc8\x24\xe2\xd0\x59\x4b\xce\x36\x35\xc3\x67\x35\xd1\xe7\xb3\ \x19\x58\xa3\x54\xfb\x76\xbc\x7c\x56\x11\x7c\x97\x97\x09\xf7\xc3\ \x43\x3b\x52\xbd\x09\x9b\x87\x6f\xf4\x22\xc5\xa8\x95\xd9\x27\x2d\ \x2a\xca\x04\x25\xfd\x6e\x5a\x48\xd9\x5e\x8a\xf6\x4d\x03\xae\xa5\ \x35\xd3\xde\xc9\xd6\x46\xd7\x16\xd6\x0a\x0b\xa9\xcd\xce\xb5\x07\ \x5a\x8c\xe4\x71\x84\x6e\xdd\x03\x10\xd3\x5b\x81\x2f\x12\xc9\x11\ \x34\x18\x99\x4a\x16\x62\x44\xb2\xdb\xe6\xa1\xec\x3a\x46\x2a\x71\ \x80\x93\xd8\x5d\xb0\x19\x3c\xa2\xeb\xbe\xe5\x11\x56\xaf\x28\x44\ \xa7\x94\x2f\xc0\x0f\xf6\x3d\x01\x95\x6a\x39\xb5\x9b\xb0\xa6\x67\ \x0b\xac\xea\xde\xec\xf5\x4b\x0b\x71\x57\x32\x88\xdb\x96\x0f\x20\ \x49\x4e\xae\xca\x0f\x59\xe2\x98\x23\x42\x9f\x2c\x08\x6c\x70\x7e\ \x42\x9b\xa5\xe0\x77\x92\x21\xc9\x89\x12\x68\x1c\x71\xa6\x42\xf0\ \x6d\x27\xd9\x97\xa0\xba\x2f\x40\xb2\x93\xa4\xee\xa1\xbd\xfb\x06\ \x49\x69\x89\x8c\x1a\x29\x72\x15\xce\xfd\x22\xa5\x35\x72\xf6\x6d\ \xf8\xbb\x74\x76\xd7\xe6\x55\x25\x3f\x92\x2e\x28\x4c\x74\xc5\xd4\ \xd3\x47\x61\xe7\xb1\x5d\xa9\xdd\x04\x8d\xb0\x5f\xb9\xe2\x4e\xaf\ \x6f\x5a\x94\x29\x06\xa4\x18\x02\x13\xdf\x8e\x61\xa6\x67\xc3\x49\ \x4c\x66\x2b\xdd\x3c\x0c\x10\x22\x62\xf4\xf3\xc4\xf5\xb3\x17\xee\ \x2b\x19\x18\x0d\x31\xe7\x73\xd2\xa4\x75\x5b\x38\x26\x4d\x8b\xd6\ \x2d\x1d\xa1\x27\x1d\x52\x8c\x0b\x25\xfd\x30\xc5\xd8\x6a\x18\xdd\ \x70\xb1\x9b\xd7\x72\xdf\xc9\x28\x49\x14\x34\x21\x42\xfd\xbb\xc3\ \x9f\xd3\x75\xcf\x57\x0c\xe7\xa0\xb7\x37\x07\xf3\xcd\x41\xfd\xdf\ \x9d\x81\xfa\xf4\x04\x3c\xb8\x27\xdd\x48\xba\xeb\xd7\xbc\x0e\x96\ \x95\x2e\xf0\xb2\xbc\xd8\xb5\x22\x86\x48\x89\x4b\x2d\x34\xfa\x91\ \xc7\xda\x5c\x5c\x2b\x29\x86\x39\x23\x44\x99\x29\xa2\xc5\x4c\x20\ \xa3\xae\x00\x86\xb5\x33\x36\x13\x11\x63\x18\x92\xc5\x04\xf3\x99\ \x60\xd9\x91\xf4\x52\x08\x5d\xea\x70\x6c\xdd\x47\xc4\x23\xaa\x84\ \x81\x3d\x4c\x0b\xe4\xc3\xb8\x00\xdb\xcf\xdc\x50\xc1\x92\x56\x5c\ \x81\x8b\xf0\xe7\xb5\x69\x3e\xd0\x9d\x85\x4d\x5e\xc7\xd6\x86\xb1\ \x6a\x19\xf8\xe6\x33\x0f\xa6\x7a\x23\x74\xf7\x97\xdb\x36\xfc\xbc\ \x47\xe8\x7e\x78\x0f\x0a\x1a\x11\x45\x25\x2c\x1b\x39\x96\x74\xad\ \x18\x35\x0c\x89\x6f\xd0\x68\x03\xd6\x42\xd1\x72\x24\x33\x22\xb4\ \x01\x79\x14\xc3\xc8\x84\xdf\xd6\x0e\xb3\x3d\xe9\x48\x7a\x29\x84\ \x6e\xeb\x78\x9c\x18\xa1\xa3\x40\x81\x7e\x88\x02\x4e\xc4\x01\x49\ \x02\x17\x20\x26\x2a\x6b\x41\x73\xe2\x12\x66\xa2\x48\xaf\x3e\x65\ \xdb\xfa\xae\xa8\x5a\x9c\x2b\xc2\x03\x7b\x1e\x4b\xbd\x80\x85\xee\ \xfe\x72\xcb\x9a\x37\xc2\x5c\x6d\x4a\xf1\x96\x0a\x43\xc0\x86\xed\ \x14\x24\x2c\x14\x0a\x34\x48\xea\x7b\x28\xdc\xd4\x6c\xa9\x2c\x01\ \x82\x64\x29\x01\x06\xd1\xd8\x08\xd6\x42\x40\xc6\xbe\x87\xb0\x7d\ \x1f\x6a\xf8\x11\x13\x73\x1d\x06\x77\x47\x1c\x49\x2f\x55\xa2\x73\ \x1a\x5f\xa2\x7c\x7f\x23\xa6\x9d\xab\x17\xc7\x02\x29\xc8\x00\x49\ \x42\x6d\x6f\xce\x3e\xa5\x04\x9d\x3c\xc8\x54\x39\x03\x73\x55\xaf\ \x69\x3f\xfb\x85\x6b\x8b\xd0\xdd\x93\xf3\xe3\xe2\xe7\x47\x36\x0b\ \xa3\x63\x23\x70\xef\xf6\x74\xa5\xba\x8e\x84\x7b\xdd\xd6\x5f\x87\ \xd7\x6e\x7e\x0f\xf4\x17\x56\x78\xb9\xdb\x95\xc6\x2c\x94\x6b\xd3\ \xea\x98\x69\x1e\xd3\x6a\x2a\x35\xb9\xc7\x78\xa2\xee\x97\xa6\x6a\ \x8c\x16\xcd\x4a\xea\xe0\x61\x0b\x56\x41\x1e\x4b\x21\x9b\x94\x08\ \x68\x13\x88\x76\x75\x91\x88\xc3\x2a\x34\x67\xdc\xe7\x48\x9a\x1f\ \x8b\xcb\x47\xa7\x04\x60\x1d\x26\xbc\x00\x5b\x27\x8c\x91\x10\x6c\ \xac\x07\xc5\x24\xd6\x48\xe8\x21\x86\xa5\xba\x10\x77\xa1\x35\xf6\ \xe1\xbe\x1c\x6c\x5a\x53\x84\xed\x3a\x2f\xd3\x88\xcf\xfe\xf4\x0f\ \xbe\x0c\x6f\x7d\xf1\x1b\xd3\xe5\xbc\x99\x1c\xbc\x54\xa9\xf0\xd7\ \xae\x7e\x2d\x1c\x18\x7f\x1c\x0e\x4d\x3c\x03\xc7\xce\x8c\x78\x29\ \xa2\x7a\x94\x94\x36\x31\x03\x07\x61\x64\x7a\xaf\x9f\xcd\x16\x89\ \x60\xe3\x7e\x37\x0a\x12\xd2\xc6\x04\x49\x6e\x05\x8d\xc1\x9e\x78\ \x8c\xed\x1e\x49\x31\x46\x88\x96\xb5\x8a\xf9\x9e\xd0\xfd\x8d\xab\ \x04\xec\x31\xfa\x83\xea\xbf\xc3\x8e\xa4\x97\x4a\xe8\x4c\x59\x6d\ \x6b\x48\x35\xd9\x3e\x2c\xb9\x47\x2c\xc4\x8a\x92\x1a\xc9\x55\x9e\ \x31\x36\x22\x49\x58\x80\xa0\x0a\x07\x5c\x75\x3a\xcc\xfd\xaa\x8b\ \x7a\x60\xfb\x5e\xa3\x9c\x52\xbe\x08\xf7\xee\xfc\x1e\xec\x3e\xbe\ \x07\xb6\xae\xd9\x92\xfa\x8d\xe9\x2d\x0c\xc3\x15\x2b\xef\xf0\x0e\ \x73\x7c\x65\xcf\x5f\x78\x15\x5b\xb2\xc1\x4e\xae\x56\x42\x5e\xa0\ \x6f\x94\x2c\x9f\x63\x03\xeb\xcc\xe4\x22\xe1\x03\x5c\x20\x14\x17\ \x0e\x1d\xc2\x15\x24\x61\x12\x31\xb5\xb6\xab\xd7\xf6\x3b\x92\x4e\ \xc3\x46\x8f\x25\x4a\xe6\xa6\x90\x64\x2b\x4a\x45\x28\x78\x6d\x5d\ \xb6\x0b\x31\x0a\x38\x99\x6a\x9d\x09\xc2\x59\xed\xbd\xb0\x59\xa1\ \x03\x68\xb6\xae\x2b\xc1\x8a\xe5\x45\x1f\xa1\x9b\x7f\x3b\x93\x85\ \xe9\x89\x31\xf8\xf8\x77\x3f\x7f\xce\x6f\x5a\x5d\xab\xee\x22\x01\ \x1a\x40\x18\x51\x32\xf5\xde\x54\x87\xd1\xa6\xc2\x93\x01\x74\x1a\ \x6d\x8c\x6d\x6b\x0c\xa6\xb9\x04\x42\x5a\x2c\x17\x27\x60\x55\x17\ \x1f\x51\x27\xcc\x3a\x92\x5e\xaa\x8d\x9e\x10\x00\x8d\x10\x28\x82\ \x6c\xa3\x71\xdd\x5c\x88\x09\x67\x35\xa3\xea\x4c\x29\x46\x46\x53\ \x47\x96\x21\x70\x1b\xdc\x16\x96\xeb\xff\xed\x37\x26\x44\xb8\x61\ \x5b\x8f\x5f\x3c\x31\x38\x0a\x45\xf8\xff\xbf\xfb\x05\x38\x3d\x79\ \xfa\x39\xb8\x75\xd2\xcd\x30\xa4\x3b\xa2\x85\x11\x70\x12\xd4\x02\ \x94\x81\xb1\xd6\xe6\xf5\x5a\x99\x6f\x46\xcd\x81\xd0\xfd\x33\x22\ \x20\x43\x04\x8e\x4c\xb8\xad\xd0\xe0\x23\xfa\xbb\xef\x75\x6e\xf4\ \xb4\x24\x3a\x0a\x0c\x57\xb2\xcf\xcd\x84\x0c\xb4\x04\xcf\x04\x6f\ \xa4\xe9\xbf\x45\x8e\xeb\x70\xc4\x4e\xe1\xe2\x08\x5c\x61\xc1\x24\ \xea\x8a\x81\xe2\x57\x6b\x0d\xb8\xfa\xa2\x6e\x18\x9c\x0f\x89\x6d\ \x75\x6c\x2d\xc0\xb1\x13\x07\xe0\x6f\x3a\xd8\xb1\x55\xb4\xa2\x30\ \x89\x4a\x65\xe1\xbe\xa6\xbb\x2e\x92\x18\x43\x4c\xf4\x5d\xd0\x26\ \xa6\x18\x20\xcf\x78\x9f\x8d\xb6\x33\x18\x0b\x42\x4c\x24\x24\x48\ \x66\xdc\x2e\x75\xee\x13\xae\xf0\xc4\x52\x08\x3d\x61\x85\x1f\xb0\ \x01\xaa\x12\x95\xb1\x85\x26\xa4\xc4\x0b\xb4\x17\x5c\x88\x84\xc0\ \x12\xd8\x53\x21\xcd\x8d\x8a\x06\x76\xd4\x36\x01\x34\x0e\x36\xd0\ \x9b\xf5\xb2\xdb\x3c\xa9\x1e\x3c\xaf\x50\x82\x0f\x7d\xf3\xef\xe1\ \xe8\xd8\xb1\x73\x27\xcb\xc9\x54\xcd\x29\x81\xca\x2c\x55\xa6\xb1\ \x48\x6d\x6e\xdd\x30\xee\x3b\x18\xc0\xcd\x6c\xc8\x81\x36\x97\xa9\ \x91\xb2\x1c\xeb\x3a\xf5\xde\xff\x57\x75\xcd\x59\x17\x02\xbb\x14\ \x42\x8f\x53\xd7\x31\x4e\xa0\x10\x63\x9b\x31\xea\x35\x4a\x3e\x75\ \xb4\xa8\x16\xc2\x66\xa3\x45\xe6\x63\xa3\x19\x4e\xdb\x9e\xa3\xee\ \xed\x76\xc3\xc5\xbd\xb0\x71\x5d\x57\xbb\x63\x6b\xb3\x39\xa1\xee\ \xc3\xfe\x7b\x5f\xf8\xf3\x73\x27\xd1\xcd\xaa\xa9\xb1\x1c\x39\x81\ \x5d\x6e\x95\x9c\xb6\x56\x3d\x12\xf6\x62\x61\x1a\xa6\xa6\x80\x96\ \x84\x97\x20\x5e\x10\x64\x70\x6d\x57\x68\x55\x9d\xf3\x49\x47\xca\ \x69\xa8\xee\x49\x98\x01\x25\x7c\x2d\x68\x2f\x4b\x31\xd7\x62\x59\ \xa1\x60\xab\x5c\xb2\x83\x7b\x22\x60\x80\xf6\xc9\x12\x45\xed\xd7\ \xa6\xad\xae\xcb\x47\xbf\xe6\x96\x41\x28\xea\x96\xc3\xa1\xde\x6e\ \x3d\xf0\x77\xf7\x7f\x16\x3e\xf7\xc8\x97\x9e\x03\xeb\x1c\x21\x91\ \x6d\x4a\x0c\x56\x21\x85\xa1\x26\x4a\x55\xc4\x64\x8a\x1b\x02\x24\ \x2a\x5c\x10\xa9\x56\x93\x58\x0d\xff\x9a\x3a\x9e\x74\xa4\xdc\x09\ \x42\xb7\x55\x31\xe2\xa4\x6f\x04\x05\x37\x22\xa0\xc4\xf0\x4d\xae\ \x57\x76\x10\xd8\x63\xb4\x81\x48\xf4\x56\x48\xdf\x85\x58\x17\x42\ \x08\x71\x0e\x5f\x4b\x23\xf0\x3a\x5f\xfd\x95\x37\x0f\x86\x81\xbf\ \x0c\x42\x5d\x9d\xf7\xee\x4f\xfc\x1e\xec\x38\xb2\xf3\x1c\x1a\xea\ \xcc\x7a\x8b\xc9\x3b\xf2\x92\x2e\x38\xc5\x93\x24\x33\xc8\x9c\x87\ \xd9\x30\x53\x52\xdd\x39\xcf\x00\x5a\x4c\x87\x96\x86\xa1\x83\x0b\ \xde\x0f\x2e\x47\xb5\x83\x12\xdd\x52\x6f\x20\x02\x80\xa1\xe0\x1b\ \x45\xae\x86\x18\x57\x90\x42\xa8\x46\x2a\x6d\x6a\x53\x6a\x51\x64\ \x83\x08\x48\x22\xca\x00\x52\xf3\x0f\x5d\x02\xf9\x96\xcb\x7a\xe0\ \xf6\x9b\x86\xfc\x64\x97\xf9\x73\x72\x45\x38\x3e\x76\x02\xee\xf9\ \xbf\xef\x81\x63\x1d\xb6\xd7\x51\xb2\x6d\x83\x68\x3b\xc5\xd8\xed\ \xc4\x68\x32\x91\x9b\x4b\xbc\xd6\x13\x97\x6c\x14\x09\xc9\xc5\x04\ \x8d\x26\x2c\xd5\x67\x59\x86\xee\x5d\xeb\xcb\xea\xb8\xcf\xb5\x65\ \xea\x14\xa1\xc7\x6a\x76\x14\x6f\x37\x8a\x71\xd0\x96\x2f\xa4\xb8\ \x94\x54\x4e\xb5\x94\xaa\x97\xc6\x25\x6c\x10\x9b\xdf\xde\xf0\x24\ \x3b\xc0\xdd\xd7\xf5\xc3\x1d\x37\x0f\xfb\x97\xa9\x35\x37\x67\xb1\ \x1b\x9e\x3c\xb0\x1d\x5e\xf9\xfe\x5f\x80\x27\x0f\x3e\x7d\x6e\xf4\ \x77\xb3\x9c\x92\xb5\x87\x99\x99\x11\x87\x51\xa0\x93\xab\x9b\xce\ \x01\x62\x91\x14\x52\x94\x99\x48\x12\xcd\x81\x20\x46\x72\x44\x4c\ \x06\xed\x33\xff\x5d\x47\xc2\x69\x11\x3a\xc6\xa8\xee\xe6\xb9\x24\ \xa9\x5d\x66\x66\x93\x79\x63\x2d\x69\xa9\x44\xd1\x02\x84\x44\x72\ \x76\x93\xd8\xae\x87\x20\x92\x0a\x69\x9a\x17\x12\xd3\x69\xbe\x8f\ \xba\x74\xb4\x3a\x2a\xca\x46\x7f\xc5\xb5\x7d\x70\xcf\x5d\x2b\x60\ \xb0\x3f\xaf\x44\x7d\xb3\x4e\x7c\xa9\x1b\x9e\x3e\xf4\x2c\xbc\xe2\ \x8f\x7f\x16\x3e\xf2\xad\xbf\xef\x88\x94\x21\x5b\xcc\x38\x97\x8e\ \x6b\xba\x24\x39\xe9\x6a\xe2\x26\x66\xd1\x0b\x2e\xbf\x80\x84\x4d\ \x21\xa2\xea\xb6\x8a\x41\xe6\x77\x09\x1a\x45\xfb\x3e\xfd\xa1\x3a\ \xf1\x89\x68\x5f\x6f\x37\xd2\x91\xe8\xb6\x5e\x0b\x64\x03\xc1\x38\ \xc0\x05\xa3\xc4\x1c\xe9\xba\x8a\xbc\x2f\xdd\xea\x47\xe6\xea\x8e\ \xc5\x01\x76\x1c\xd3\x32\x03\x3d\xfc\x79\x63\x13\x9c\x9b\xf7\xaf\ \xbf\xeb\x0d\xab\xe0\xb6\x1b\x06\xa1\xb7\x3b\xeb\x13\x7c\xb6\x04\ \xa7\x26\x27\xe0\x5d\x1f\xfd\x2d\xb8\xeb\x4f\x7e\x0e\xbe\xf2\xd8\ \xd7\x53\xad\x48\xa3\x5b\x1d\x51\x44\x03\x61\xe2\xc1\x89\x03\xd9\ \x88\x61\x88\x14\x05\x37\xd9\x52\xce\x68\x51\xed\x39\xb7\x9d\x60\ \xa6\x11\xc7\x64\x38\x1c\x45\xaa\x18\x04\xf7\xa9\x73\xdf\x1f\xae\ \x29\x40\xae\x81\x83\x65\x2c\x3e\xd6\xdd\xa6\x8d\x91\xb9\xb1\x88\ \xd7\xae\x43\x82\xc0\xe6\xb3\x43\x19\x38\xb3\xaa\x1a\x42\x96\x0d\ \xa7\xca\x87\x92\x67\x02\x01\x3e\x6c\x82\x86\xbf\x29\x49\xbd\x5e\ \xae\x36\xa0\xaf\x2b\x03\xaf\xba\x65\x10\x6e\xba\xac\x0f\xb6\x1f\ \x9c\x81\x9d\x07\x67\xe1\xc4\x58\x0e\xa6\x66\x6a\xf0\xcd\x47\xef\ \x83\x6f\x3e\xfe\x20\x5c\xb9\xe9\x72\x78\xfd\x35\x77\xc0\x5d\x57\ \xbc\x0c\xb6\xac\xdc\x08\xab\x07\x57\x41\x36\x97\x4c\x02\xcd\xd5\ \x26\xbd\xd4\x55\x5d\xff\xfd\xcc\xec\x71\x38\x31\xbd\xd7\xab\x1c\ \x6b\x6d\xb2\x80\x49\x18\x1b\x32\xbf\x9f\x8b\x61\x10\x34\x20\x2e\ \x81\x26\x51\x41\x56\xf3\x3e\x9a\x4a\x17\xf7\xbb\x5a\x27\x1e\x22\ \xa2\x5f\xd4\xcb\xe2\xc8\xb7\x13\x84\x4e\x96\xfb\x25\xed\x07\xb3\ \x1b\x6a\xa4\xa0\x41\x5c\x7d\xaa\x04\xbb\xc6\xd6\x8c\xb1\x35\x07\ \xce\xe6\x86\x18\x69\x24\xb5\x80\x8a\xda\xc6\x7e\x9d\x78\x80\xfe\ \x9e\x2c\xbc\xe4\xca\x7e\x78\x91\x22\xf8\xf1\xa9\x3a\x9c\x38\x5b\ \x85\xb3\x93\x35\x18\x9b\xa8\xc1\x99\xa9\x43\xf0\xf1\xc7\xff\x06\ \x3e\xb7\xe3\x13\xb0\x61\x70\x39\x5c\xb8\xf2\x42\xd8\x38\xbc\x1a\ \x56\xf4\x0c\xc0\xb2\xbe\x61\xd8\xb8\x62\x1d\x74\x15\xba\x60\xa6\ \x32\x01\xb3\x8a\xb0\xa7\xaa\x63\xde\x31\x31\x37\x0a\xd3\xb5\x31\ \xaf\x53\xe9\x6c\x6d\x5a\x7f\x9b\x52\xc3\x72\x81\x8e\xaa\x1c\x9a\ \x1d\xd3\x73\xcd\xd6\x05\x07\x0d\x13\xc7\x0c\x39\x4e\x52\xb8\x86\ \x0d\x97\xe4\x2a\xd9\x32\x20\x28\x32\x66\x5a\x7b\xae\xa7\xd4\x71\ \x8f\x3a\x0e\x3a\xd2\x4d\x9b\xd0\x29\x81\x76\x8c\x20\x57\x24\x46\ \x99\x40\x16\x56\x80\x5f\xd8\x34\x18\xa7\x72\x40\xcc\x77\x18\x2a\ \x2f\x22\x6f\xb3\xc6\x6e\x68\xbf\xce\x5c\x5d\x53\xbc\xfa\xcc\x40\ \x6f\x06\x86\xfb\x4b\x01\x9d\x66\x40\x7d\x05\x7a\x65\x9d\x6b\xf5\ \x1a\x54\xeb\x3b\x60\xa2\xf1\x0c\x4c\xd6\x10\xf6\x9d\x41\xf8\xd1\ \x38\x06\xae\x4a\xad\xff\x33\xea\x0a\x99\x4c\x56\xfd\x9f\x53\x2a\ \xbb\x32\x0d\x28\xbb\xc0\xa5\x32\x19\x21\xe3\x7e\x44\x61\x4d\xb8\ \xe2\x1c\xc8\xdd\x0b\xf3\xa3\x31\xeb\x1d\x1b\xcb\x64\xd4\xee\xf7\ \xb5\x93\x51\xf5\xdf\x4f\xa9\xdf\xf3\xb0\x23\xdb\x4e\x49\xf4\xb8\ \xe2\x9c\xb1\x02\x98\xd1\xd9\xc9\xa2\x16\x10\x08\xe1\xb0\xcc\xc4\ \x88\x2c\x8a\x01\xca\x14\xc0\xf9\xf6\xd9\x00\xfe\x24\x9d\x41\xa2\ \xa9\x98\xf3\x52\x3e\x64\xb6\xb4\xcc\x4c\xdd\x4e\x58\x11\x6c\x16\ \x17\xc0\xd4\x4c\x22\x8d\x0b\x53\x0d\x6a\x24\xc1\x35\xe5\x62\xc9\ \x17\x82\xb8\x9a\x9c\xdd\x96\x05\xc8\x78\x04\x90\x2c\x8c\x59\xf4\ \xcc\xec\x50\xef\xfd\xbc\x7a\xfc\x91\x23\xd9\x4e\x82\x71\xb6\xf2\ \xd9\xb6\xe6\x9e\xec\x85\x84\x2a\xa6\x9c\xcd\xd6\x22\x12\x94\x41\ \x35\x0c\x72\x7d\x09\xa2\xe6\x32\xe6\x0c\x10\x90\x0c\x44\x1e\x05\ \xe0\x28\x42\x20\x5c\xcb\x66\xc6\x27\x6f\xad\x8d\x2e\x95\xbd\x36\ \x10\xf1\x44\x48\x28\x87\x40\x0b\xdd\x4f\xd1\x16\xa6\x1a\x41\xca\ \x20\x92\x69\xc6\xae\xb5\xa5\x0e\x7c\xb0\x6d\x94\x35\x86\x3d\xc8\ \x44\xf0\xe3\xea\xbf\xdb\x1d\x91\x9f\x2b\x1b\x9d\xdb\xa3\x71\x26\ \x18\x27\xf1\x82\x76\x1f\xc6\x6d\xdc\xc0\x06\x21\x88\xf7\x9b\x73\ \x15\x67\x42\x15\x4a\x24\x00\x8e\x78\x02\x36\xbf\x13\x2d\x5d\x4d\ \xcc\x9e\x67\x5c\xe7\x98\x60\x8c\x37\x57\x6f\x9e\xb8\x6c\xbb\x00\ \xb6\x81\x49\xd0\x51\x46\xb2\xb6\xcc\x12\x09\x6b\x08\x97\xd0\x8a\ \x68\x38\xd2\x3d\x23\xa9\xf8\x87\x14\x13\x8f\x42\x0f\x36\x56\x3b\ \x78\x44\x1d\xff\x5b\x1d\x5f\x70\x64\x7a\xae\x09\x3d\x0e\x9c\x13\ \xb5\x66\x12\xa4\xb5\x51\xd5\x04\x4d\x17\x91\x2d\x6c\x52\x28\x8c\ \x18\x45\x69\xc3\x2a\x23\xb7\x51\x51\x68\xe7\x8b\x36\xf0\x8f\xf9\ \x7d\x1c\x62\x2f\xae\x0d\x67\xff\x32\xaa\xb5\x2d\xe3\x2b\xa2\x55\ \x08\xa1\xc0\xd8\xd4\x8a\x92\xfc\x1e\xb6\xe1\x85\xd4\x05\xd7\x72\ \x8f\x38\xbc\x35\x12\x0b\x11\x5a\x0b\x0d\x6e\x68\xb0\xed\x5e\x75\ \xde\xe7\xd4\xe3\xbf\xaa\xa3\xe6\x32\xd2\xce\x15\xa1\xc7\xd5\x6f\ \x67\xf7\x58\xb0\x82\xab\xc9\xd1\x19\x26\x40\xc0\xa0\xac\x1c\xa4\ \x6f\x22\xbf\x8c\x5f\x98\x93\x18\x28\x00\x49\x68\xaa\xea\x36\xc4\ \xd1\x06\xce\x09\x15\x59\x24\x66\x45\xd4\x66\x3c\xac\xa4\x16\x42\ \x4d\x89\x84\x6c\x35\x8b\x3b\x91\xc8\xd2\xdc\x81\xec\xf1\x08\x11\ \x1c\xc3\x2c\x19\xc5\x31\x5b\x46\xf2\x47\x93\x94\xce\xaa\xa7\xa7\ \xd5\x39\xcf\x80\x57\x02\x0a\xf6\xa8\x93\x9e\x55\x8f\x3a\x9c\xf0\ \x8c\x23\xcb\xe7\x82\xd0\x29\x86\xd8\x59\x75\x9d\x89\x72\x23\x10\ \x22\xdf\xa4\x1a\x63\xc8\x70\x7d\x53\x44\x08\x92\x4f\x94\xba\x08\ \x6c\x94\x18\x67\x77\x06\xb5\x0a\x6b\xbb\x1f\x49\x6d\x8d\xc3\x15\ \xb8\xce\xa8\x71\xa6\x83\x45\x6b\x91\x34\x1a\xab\xb9\x63\xbb\xa1\ \x4c\xb5\x5e\xce\xcf\x1d\x24\xf6\x20\x73\xf7\xbf\x7f\x5c\x3d\x3f\ \xa9\x1e\x0f\xaa\xc7\x67\xd4\x6b\xba\x69\xdd\xbe\xe6\xa1\x0b\x39\ \x56\x1d\x09\x9e\x4f\xaa\xbb\xa5\xe2\x2f\xcb\x10\x42\x71\x32\x81\ \x82\x81\x41\x9b\x31\x82\x12\x73\xd0\xb9\x69\x27\x0a\xd5\x46\x91\ \x78\x55\x9c\xe3\x54\x41\xc6\xc1\x9e\x0f\x7c\x59\x29\xa9\x02\x29\ \x1b\x93\x83\x31\x9c\xd0\xd6\xcf\xdd\x64\x70\xb6\xd2\xba\x71\xbe\ \x70\xb0\xaf\xa9\x78\x3d\xe6\x5e\xa0\x25\x48\x06\x71\xca\x23\x5c\ \x84\x23\xbe\x84\xc6\xa7\xd4\x39\xfb\xd5\x71\x08\x7c\x9f\xb7\x23\ \xe8\xe7\x2d\x18\x17\x27\xe9\x81\x51\x85\x31\xb0\x11\x83\x6a\x61\ \x50\x95\xb5\x01\x4c\xa6\x7f\xd8\x66\x66\x44\x5c\x3c\x42\xc4\x18\ \xd9\xfa\x8d\x0b\xfe\x64\x32\xec\xdf\x85\x00\x16\x2c\xb0\x25\x11\ \xa3\xd4\x3e\x9a\x53\xe7\x05\x22\xb5\x01\xa6\xb1\xd5\x62\x22\xbf\ \x75\xd6\x23\x68\x52\x04\x8d\xb0\x1b\xbc\x3c\x70\x52\x2a\x37\x1e\ \x55\xcf\x0f\x80\x8b\x56\x7b\x9e\x13\xba\x69\x2a\xc7\xd6\x11\x48\ \x98\xf7\x2d\xc6\x4a\x07\x7c\xae\x12\x18\x15\x11\x5a\x24\xd8\xfc\ \x00\x7c\xa4\x96\x8d\xd0\xe2\xd6\xc3\x2c\x77\x04\x7c\x74\x5e\x84\ \x08\xb9\x1a\xf2\x52\x17\x59\x93\x91\x08\x36\xb0\x99\xda\x69\xeb\ \xa4\x62\x03\xb6\xc2\x80\x59\xd9\x97\xc6\x78\x40\x3d\xd7\x6a\x76\ \xd3\x96\xd6\x75\xd3\x69\x44\xbd\x36\xe1\x48\xe7\x85\x2a\xd1\x39\ \x20\x96\xd3\x04\x89\x01\xb4\x44\x00\x0e\xa2\x1d\x3b\x93\x20\xc5\ \x26\xb3\x40\x5b\xe9\x63\x09\xb4\x02\x8b\x4a\x4c\x16\xbb\xd6\x04\ \xa2\x4c\x42\x03\x81\x99\x19\xe0\x1b\xa2\x5d\xfd\x16\xb1\x08\x4e\ \xa5\x32\xc3\x8b\xe3\xba\xa5\xb6\xde\xd7\x75\xa3\x95\x34\xa6\x3d\ \xea\xe5\xfd\xea\x94\x67\xd5\x7b\xba\x7b\xa4\xae\x8f\xae\x4b\xdb\ \x3a\x82\xfe\xb1\x21\x74\x8c\x51\xdf\x01\xe2\xdb\x33\x71\xd2\x2e\ \x88\xe4\xb2\xc8\xb0\x25\xfc\x94\x8b\xc1\x86\x80\xdd\x2d\x99\x0f\ \x5c\xfb\x5e\xf1\x3b\x80\x37\x27\x42\xf4\x65\xd3\x50\x48\x52\x7f\ \xa3\x0b\x49\xc4\x37\x51\x64\x19\x98\xc5\xbe\x37\x7d\xe2\xed\xcf\ \xcf\x79\x84\xeb\x11\xb2\xa7\x72\xef\x55\xd7\xdf\xae\xde\xd7\x48\ \xf7\x68\x13\x34\x73\xd4\xe0\xc0\x38\xcb\x6b\x62\x03\x46\x21\xf2\ \x8d\xc0\x40\xc6\xd1\xde\x46\x28\xb6\xc1\x7d\x92\x10\x55\x81\xa8\ \x6d\x2e\x2e\xa9\x6e\x1d\x32\xde\x00\xd3\xad\x67\xa2\xef\x71\xa5\ \x90\x39\x9b\x04\x39\xc9\x8e\x32\x8e\xe0\x6b\x3f\x73\x3e\xd1\x6a\ \x77\x95\xa7\x6e\xeb\x32\xc8\xbb\xd4\xb9\xbb\xd4\xeb\xc7\xd5\x49\ \x93\x6e\xcb\x3b\x42\x8f\x07\xe0\x38\x93\xd2\x1a\x11\x67\x4a\x43\ \xe2\x89\x9d\x62\xdc\x4c\xac\x86\x20\x11\x94\x25\x76\x9a\x05\xe0\ \x6c\xae\x38\x86\x18\x43\x34\x27\x14\x62\x43\x09\x18\x33\xfb\x96\ \x19\xf1\xe8\x52\xd3\x82\xe8\x04\x66\xd5\xe3\xe9\xa6\xcd\xac\xfd\ \xd0\x3b\x3d\x29\x0d\xb8\xc7\x47\xbb\x3d\x14\xdc\x0d\x37\x16\x24\ \xd1\xb3\xec\x7e\x43\x88\xf1\xa7\x93\x45\x85\x47\x19\x38\x32\x93\ \x59\x50\x08\xb2\x89\xa4\x90\xda\x08\x5c\x02\xca\x62\xe2\xcf\xb9\ \x3e\x5f\x28\x9c\xc7\xd9\xf1\x11\x8d\x82\x17\xce\x61\x53\x24\xc4\ \x18\x74\x29\xe3\x11\xf5\x78\xb4\xe9\x83\x7e\xc6\x27\x66\x38\xa0\ \x4e\xdb\xaf\x84\xf8\x84\x8b\x1b\x73\x23\x2d\x42\x9f\x8a\x55\xe7\ \x63\x04\x70\x3c\x0e\x20\x35\x72\x90\x24\x2e\xf2\x80\x55\x2b\xa8\ \x03\x99\xc2\x0b\x16\xb4\x5d\x6c\xdb\x9c\xd0\x2c\x40\x30\x80\x30\ \x8c\x6a\x32\xa6\x8d\x1e\xfc\x4e\xc4\xba\x7a\xe1\xb8\x3a\xef\xb8\ \x7a\xae\x6d\x68\x1d\x21\xb6\x43\x3d\x3f\x0c\xbe\xdb\xea\xb4\xdb\ \xaa\x6e\x74\x9a\xd0\xdf\xa7\x0e\x5d\xe5\xe0\x9d\x56\x42\x36\x25\ \x54\x24\xb9\x03\x04\xb5\x54\xaa\x67\x06\x06\x58\xc5\x00\x51\xc4\ \x94\x9c\x02\x4a\xde\xb2\x59\x92\xcc\x28\x31\x07\x9b\x7f\x3f\x26\ \x4e\xbd\x0d\xee\x1d\x51\x4f\xe6\x03\x49\xb4\x1d\xfd\x94\x3a\x0e\ \xa9\xf7\x75\xe9\xd8\x93\x6e\x4b\xba\xf1\x5c\x11\xba\x92\x32\xf0\ \x2e\xb5\x11\xe7\xd4\xf1\x2b\x89\xd4\x76\x44\x59\xf5\x8d\x48\x52\ \x0e\x00\x48\x1a\xc0\x61\x89\x3a\x0b\xa9\xc4\xc1\x00\x14\x46\xda\ \x23\x44\x41\xb3\x60\x82\x4a\xac\x9a\x1f\x78\xbd\xcd\xd8\x74\x82\ \xc6\x3e\xf5\x82\xee\xdb\xbd\x4b\x5d\xeb\x09\xf5\xf7\xb3\x1e\x31\ \x13\x9c\x70\x5b\xcf\x8d\xf3\x8d\xd0\xfd\x5d\x8c\xf0\x6e\xf5\xff\ \x59\xf5\xfc\xb7\x63\x55\x75\xb2\xd8\xb3\x1c\x30\xc6\x69\x04\x68\ \xf3\x23\xdb\xae\x27\xe1\x68\xc8\xcc\xc9\x90\xe2\xc1\xef\xe5\x7c\ \xfb\x91\x48\x35\x9d\x71\xe5\x25\x61\xec\x6b\xda\xce\x7b\xd5\x7b\ \xdb\xd5\x39\xda\x9e\x1e\x01\xdf\x75\x55\x73\xdb\xcc\x8d\xe7\x0b\ \xa1\xcf\xef\xf3\xdf\x51\x34\x70\x46\x3d\xbe\x3f\x94\xab\x41\x36\ \x6a\x33\xa5\x22\x31\x69\xa3\x5c\x81\x02\x88\x06\x97\x98\x8c\xc3\ \xac\x6d\x4e\x52\x89\x67\xc9\x55\x60\x9e\x2e\xd5\xc6\x22\x65\x43\ \xe3\xa4\xa7\x6e\x6b\x50\x8c\x60\xa7\x9a\xa3\xb2\xa5\x71\xbb\x7a\ \x4f\xc7\x77\x6b\x06\x58\x5d\x70\x84\x9d\x1b\x6e\x9c\x97\x84\xee\ \xd3\xc0\x9f\xa9\xff\xcb\xea\xf1\x2f\x40\xaa\x50\x63\x0b\x90\x09\ \x75\x70\x01\xc1\xee\x95\x8a\x1d\x32\x7e\x76\xb3\xbe\x98\x15\x3c\ \x00\x8b\x76\xe0\x8d\x7a\x93\x68\x8f\xab\xeb\x6d\x6f\xaa\xda\xda\ \x6d\xb5\x53\x7d\x40\x3f\xea\xf7\x2a\x6e\xdb\xb8\xf1\xc2\x27\x74\ \x9f\xee\x3e\xac\xfe\xd7\x76\xe6\x27\xc0\x07\xea\xa2\x12\x1d\x31\ \x01\x02\x2f\xc4\xc3\x4b\xaa\x7b\x88\xe8\x89\x67\x1e\x41\x95\xdc\ \x16\x0a\x8b\x5e\xa4\xd8\x88\x92\xcc\x5a\xcd\xd6\xea\xb6\x56\xbd\ \xf7\xa8\x6b\x2a\x82\xf6\x50\xee\xba\x8b\x16\x73\xe3\xc7\x9b\xd0\ \xfd\xf1\x59\xd0\xa1\x95\x08\x1f\x57\xf4\x30\x24\x4b\x4c\x1b\x30\ \x27\xb8\xae\x6c\x95\x58\xe7\xe3\xdf\x13\x55\x3b\xf1\x2e\x30\xea\ \x33\x25\x1d\x48\xa2\xdd\x56\xa8\x09\xfb\x80\xfa\x4e\xfd\xf7\x11\ \x70\xd4\xec\x86\x23\xf4\xd8\xf1\x6f\x8a\x4c\xde\xa8\x68\xeb\x9f\ \xd5\xf3\x65\xe1\xc0\x11\x34\x02\x49\xb8\x0a\xab\x31\x89\x1d\x91\ \x92\x4b\x28\x54\x91\xf1\xde\xd7\x52\x58\xa7\x4b\x1e\x56\x6f\x3e\ \xe3\x13\xb5\x97\x9c\x71\xb8\x79\x34\xdc\xed\x76\xc3\x11\xfa\xe2\ \xc7\x77\x14\x9d\xdd\xad\x1e\x75\x9d\xaf\x4d\xb2\x6d\x6f\x21\x6e\ \x64\xa4\x3a\x81\x94\xe1\x35\xa1\xfe\xd4\x29\x94\x5a\x1a\xef\xf4\ \x08\x9a\xbc\xe0\x92\xa3\xea\x1a\xc7\xd4\x7b\xae\xc8\x81\x1b\x6e\ \x74\x80\xd0\xf5\x78\x54\x11\xd8\xeb\xd5\xe3\x67\xd4\x71\x89\x9c\ \xca\x86\x31\xaa\x76\xc0\x6e\x47\x9c\x06\x3f\xa8\x64\xaf\xa7\x66\ \xfb\xf5\xc5\xd4\xa1\x88\x19\x50\xe3\x03\x33\xee\xf6\xb9\xe1\xc6\ \xb9\x25\x74\x3d\x74\x84\xd7\x2b\x15\x9d\xfe\x8b\xb2\xa3\xaf\x89\ \xef\xc8\xd1\xb2\xdb\x75\x91\x03\xad\x6e\xeb\xd0\xcf\xdd\xbe\x74\ \xf6\xd4\x6e\x4d\xe4\x63\x8a\xc8\xa7\xdd\x6d\x72\xc3\x8d\xf3\x87\ \xd0\xf5\xd0\xa1\x9d\x3f\xa1\x8e\x4f\x2a\x1a\x7e\xb9\x21\xd4\x15\ \xc1\xd2\x09\xaf\xda\x27\xd1\x6e\x25\xa1\x75\xa6\x95\xee\xc0\xb1\ \x4b\x9d\x37\xa6\x88\xdb\x65\x5c\xb9\xe1\xc6\xf3\x84\xd0\xf5\xd0\ \x99\x56\x3f\x59\xc8\xe2\x1f\x93\x5f\x14\x50\xa3\xdc\x7b\xbc\xbc\ \x68\x8d\x7e\xfb\x75\xc7\xdc\x70\xc3\x8d\x73\x38\x90\x5c\x4f\x69\ \x37\xdc\x78\xc1\x8f\x8c\x5b\x02\x37\xdc\x70\x84\xee\x86\x1b\x6e\ \x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\x1b\x8e\xd0\xdd\x70\ \xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\xdc\x70\xc3\x11\xba\ \x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\x1c\xa1\xbb\xe1\x86\x1b\x8e\xd0\ \xdd\x70\xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\xdc\x70\xc3\ \x11\xba\x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\xdc\x70\x84\xee\x86\x1b\ \x6e\x38\x42\x77\xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\xdc\ \x70\xc3\x11\xba\x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\xdc\x70\x84\xee\ \x86\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\x1b\x8e\ \xd0\xdd\x70\xc3\x11\xba\x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\xdc\x70\ \x84\xee\x86\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\ \x1b\x8e\xd0\xdd\x70\xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\ \xdc\x70\xc3\x11\xba\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\ \xe1\x86\x1b\xcf\xab\xf1\xff\x04\x18\x00\x0f\x62\x62\xc5\x0e\x9e\ \x8d\xff\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0d\x3f\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x4d\x6f\x62\x69\x6c\ \x69\x74\x79\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x2e\x0a\ \x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\x47\x49\x4e\x5f\ \x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\x0a\x2a\x2a\x20\ \x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\x69\x73\ \x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\ \x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x42\x53\x44\ \x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\x66\x6f\x6c\x6c\ \x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x75\ \x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\x20\x61\x6e\x64\ \x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\x73\x2c\x20\x77\ \x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\x75\x74\x0a\x2a\ \x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x2c\x20\ \x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x20\x70\x72\ \x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\ \x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\x6e\x64\x69\x74\ \x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\ \x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\ \x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\x6f\x75\x72\x63\ \x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\x72\x65\x74\x61\ \x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\x6f\x70\ \x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6e\x6f\ \x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\x74\x20\ \x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x6e\ \x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\ \x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\x2a\x2a\x20\x20\ \x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\ \x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\ \x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\x64\x75\x63\x65\ \x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\x6f\x70\x79\x72\ \x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6e\x6f\x74\x69\ \x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\x74\x20\x6f\x66\ \x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x6e\x64\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x64\x69\ \x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\x2a\x2a\x20\x20\ \x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x61\ \x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\x6f\x74\x68\x65\ \x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\x70\x72\x6f\x76\ \x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x2a\x2a\ \x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\ \x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\x69\x74\x68\x65\ \x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x44\x69\ \x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\x69\x74\x73\x20\ \x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\ \x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x73\x0a\x2a\ \x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\x20\x63\x6f\x6e\ \x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\x79\x20\x62\x65\ \x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\x6f\x72\x73\x65\ \x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\x70\x72\x6f\x64\ \x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\x0a\x2a\x2a\x20\ \x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\x73\x20\x73\x6f\ \x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\x75\x74\x20\x73\ \x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\x72\x20\x77\x72\ \x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\ \x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\x48\x49\x53\x20\ \x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\x50\x52\x4f\x56\ \x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\x43\x4f\x50\x59\ \x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\x53\x20\x41\x4e\ \x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\x53\x0a\x2a\ \x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\x44\x20\x41\x4e\ \x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\x20\x49\x4d\x50\ \x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x2c\ \x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\x54\x20\ \x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\x20\x54\ \x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\ \x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\x20\x4d\x45\x52\ \x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\x20\x41\x4e\x44\ \x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\x0a\x2a\x2a\x20\ \x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\x20\x50\x55\x52\ \x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\x43\x4c\x41\x49\ \x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\x56\x45\x4e\x54\ \x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\x4f\x50\x59\x52\ \x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\x52\x20\x4f\x52\ \x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\x53\x20\x42\x45\ \x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\x41\x4e\x59\x20\ \x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\x52\x45\x43\x54\ \x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\x2c\x0a\x2a\x2a\ \x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\x45\x4d\x50\x4c\ \x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\x45\x51\x55\x45\ \x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\x53\x20\x28\x49\ \x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\x54\x20\x4e\x4f\ \x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\x20\x54\x4f\x2c\ \x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\x20\x4f\x46\x20\ \x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\x4f\x4f\x44\x53\ \x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\x3b\x20\x4c\x4f\ \x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\x2a\x20\x44\x41\ \x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\x54\x53\x3b\x20\ \x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\x49\x4e\x54\x45\ \x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\x57\x45\x56\x45\ \x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\x20\x4f\x4e\x20\ \x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\x59\x20\x4f\x46\ \x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\x57\x48\x45\x54\ \x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\x41\x43\x54\x2c\ \x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\ \x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\x2a\x20\x28\x49\ \x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\x4c\x49\x47\x45\ \x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\x57\x49\x53\x45\ \x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\x20\x41\x4e\x59\ \x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\x54\x48\x45\x20\ \x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\x49\x53\x20\x53\ \x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\x4e\x20\x49\x46\ \x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\x54\x48\x45\x20\ \x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\x4f\x46\x20\x53\ \x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\x49\x43\x45\x4e\ \x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\x20\x51\x74\x51\ \x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\x7b\ \x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x73\x63\x72\x6f\x6c\x6c\x42\ \x61\x72\x0a\x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x20\x70\x72\ \x6f\x70\x65\x72\x74\x69\x65\x73\x20\x74\x68\x61\x74\x20\x64\x65\ \x66\x69\x6e\x65\x20\x74\x68\x65\x20\x73\x63\x72\x6f\x6c\x6c\x62\ \x61\x72\x27\x73\x20\x73\x74\x61\x74\x65\x2e\x0a\x20\x20\x20\x20\ \x2f\x2f\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\ \x70\x61\x67\x65\x53\x69\x7a\x65\x20\x61\x72\x65\x20\x69\x6e\x20\ \x74\x68\x65\x20\x72\x61\x6e\x67\x65\x20\x30\x2e\x30\x20\x2d\x20\ \x31\x2e\x30\x2e\x20\x20\x54\x68\x65\x79\x20\x61\x72\x65\x20\x72\ \x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20\x74\x68\x65\x0a\x20\ \x20\x20\x20\x2f\x2f\x20\x68\x65\x69\x67\x68\x74\x20\x6f\x66\x20\ \x74\x68\x65\x20\x70\x61\x67\x65\x2c\x20\x69\x2e\x65\x2e\x20\x61\ \x20\x70\x61\x67\x65\x53\x69\x7a\x65\x20\x6f\x66\x20\x30\x2e\x35\ \x20\x6d\x65\x61\x6e\x73\x20\x74\x68\x61\x74\x20\x79\x6f\x75\x20\ \x63\x61\x6e\x20\x73\x65\x65\x20\x35\x30\x25\x0a\x20\x20\x20\x20\ \x2f\x2f\x20\x6f\x66\x20\x74\x68\x65\x20\x68\x65\x69\x67\x68\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x76\x69\x65\x77\x2e\x0a\x20\x20\ \x20\x20\x2f\x2f\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\ \x20\x63\x61\x6e\x20\x62\x65\x20\x65\x69\x74\x68\x65\x72\x20\x27\ \x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x6f\x72\x20\x27\x48\x6f\ \x72\x69\x7a\x6f\x6e\x74\x61\x6c\x27\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\ \x79\x20\x72\x65\x61\x6c\x20\x70\x61\x67\x65\x53\x69\x7a\x65\x0a\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\ \x69\x6e\x67\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\ \x3a\x20\x22\x56\x65\x72\x74\x69\x63\x61\x6c\x22\x0a\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\x20\ \x62\x67\x43\x6f\x6c\x6f\x72\x3a\x20\x62\x61\x63\x6b\x67\x72\x6f\ \x75\x6e\x64\x2e\x63\x6f\x6c\x6f\x72\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\x20\x66\x67\x43\ \x6f\x6c\x6f\x72\x3a\x20\x74\x68\x75\x6d\x62\x2e\x63\x6f\x6c\x6f\ \x72\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x41\x20\x6c\x69\x67\x68\ \x74\x2c\x20\x73\x65\x6d\x69\x2d\x74\x72\x61\x6e\x73\x70\x61\x72\ \x65\x6e\x74\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x0a\x20\ \x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x61\x63\x6b\x67\ \x72\x6f\x75\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\ \x64\x69\x75\x73\x3a\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\ \x6e\x20\x3d\x3d\x20\x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\ \x3f\x20\x28\x77\x69\x64\x74\x68\x2f\x32\x20\x2d\x20\x31\x29\x20\ \x3a\x20\x28\x68\x65\x69\x67\x68\x74\x2f\x32\x20\x2d\x20\x31\x29\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x77\x68\x69\x74\x65\x22\x3b\x20\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x20\x30\x2e\x33\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x2f\x2f\x20\ \x53\x69\x7a\x65\x20\x74\x68\x65\x20\x62\x61\x72\x20\x74\x6f\x20\ \x74\x68\x65\x20\x72\x65\x71\x75\x69\x72\x65\x64\x20\x73\x69\x7a\ \x65\x2c\x20\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x75\x70\x6f\ \x6e\x20\x74\x68\x65\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\ \x6e\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x74\ \x68\x75\x6d\x62\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x70\x61\ \x63\x69\x74\x79\x3a\x20\x30\x2e\x37\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x62\x6c\x61\x63\x6b\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\ \x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\ \x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x3f\x20\x28\x77\x69\ \x64\x74\x68\x2f\x32\x20\x2d\x20\x31\x29\x20\x3a\x20\x28\x68\x65\ \x69\x67\x68\x74\x2f\x32\x20\x2d\x20\x31\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x78\x3a\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\ \x6f\x6e\x20\x3d\x3d\x20\x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\ \x20\x3f\x20\x31\x20\x3a\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\ \x72\x2e\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x2a\x20\x28\x73\x63\ \x72\x6f\x6c\x6c\x42\x61\x72\x2e\x77\x69\x64\x74\x68\x2d\x32\x29\ \x20\x2b\x20\x31\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\ \x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x3f\x20\x28\x73\x63\ \x72\x6f\x6c\x6c\x42\x61\x72\x2e\x70\x6f\x73\x69\x74\x69\x6f\x6e\ \x20\x2a\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\x2e\x68\x65\ \x69\x67\x68\x74\x2d\x32\x29\x20\x2b\x20\x31\x29\x20\x3a\x20\x31\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ \x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\x27\ \x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x3f\x20\x28\x70\x61\x72\ \x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x2d\x32\x29\x20\x3a\x20\x28\ \x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\x2e\x70\x61\x67\x65\x53\x69\ \x7a\x65\x20\x2a\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\x2e\ \x77\x69\x64\x74\x68\x2d\x32\x29\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x6f\x72\x69\x65\x6e\x74\ \x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\x27\x56\x65\x72\x74\x69\x63\ \x61\x6c\x27\x20\x3f\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\ \x2e\x70\x61\x67\x65\x53\x69\x7a\x65\x20\x2a\x20\x28\x73\x63\x72\ \x6f\x6c\x6c\x42\x61\x72\x2e\x68\x65\x69\x67\x68\x74\x2d\x32\x29\ \x29\x20\x3a\x20\x28\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\ \x68\x74\x2d\x32\x29\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x01\x01\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x08\x00\x00\x00\x08\x08\x06\x00\x00\x00\xc4\x0f\xbe\x8b\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x15\ \x01\x1e\x17\xf8\x02\xdb\x04\x00\x00\x00\x81\x49\x44\x41\x54\x18\ \xd3\x9d\xcd\xb1\x0d\xc2\x30\x14\x45\xd1\x1b\xf1\xf5\x95\xca\x8e\ \x15\xb9\x77\x91\x21\x68\x90\xd2\x31\x12\x6b\xb0\x8d\x33\x02\x3d\ \xec\x81\x2b\xe4\x02\x7f\x68\x40\x22\x52\x2a\x5e\x7b\xf4\x74\x77\ \x71\x1c\x1f\xcf\xd6\x0e\xad\xb5\x0b\x70\xe7\xb3\x94\x52\x6f\x66\ \x09\x15\x59\x44\x64\x06\xfa\x5f\x1c\x86\x61\xf6\xde\x2f\x00\xd3\ \x16\x3a\xe7\x16\x55\xbd\x75\x40\x07\xbc\xbe\x58\x4a\xd9\x9b\xd9\ \xa9\xd6\x8a\x99\x9d\xd9\x78\x66\x55\xcd\xab\xec\xff\x08\x10\x63\ \x9c\x42\x08\x59\x55\xaf\x22\x72\x5c\x21\xf0\x06\x78\x82\x2b\x9e\ \x02\x46\xc4\xbc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x02\x3b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x5e\x00\x00\x00\x18\x08\x04\x00\x00\x00\xd9\xda\x82\x94\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0f\x12\x00\x00\x0f\x12\x01\x21\x9b\xf2\x33\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x12\x16\x2e\x21\x1b\ \x90\xc4\x33\x00\x00\x00\x19\x74\x45\x58\x74\x43\x6f\x6d\x6d\x65\ \x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\ \x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x01\x9a\x49\x44\x41\x54\ \x58\xc3\xd5\xd7\xbd\x6e\xd4\x50\x10\x05\xe0\x6f\xee\xde\xec\x26\ \xab\x68\x05\xa1\xe1\x4d\x22\xc4\x1b\x90\x16\xf1\x98\xa9\x68\x42\ \x81\x68\x79\x01\x7a\x24\x0a\x42\xc1\xcf\x06\x6d\xb2\x7f\xbe\x14\ \xeb\xfd\xb3\x12\x44\x12\x0a\x7b\x2a\x5b\x77\x46\x3e\xe7\xf8\x8c\ \x67\x1c\x97\x8a\x2b\x3f\xfd\x36\x53\x29\xba\x10\x3d\x7d\x27\x9e\ \xc8\xfc\x30\x2b\x23\xcf\xc5\xce\x71\x5b\x49\x04\x8a\xb1\x2f\xbe\ \x06\xf9\x46\x55\x9e\x39\xf7\xc1\x75\x03\x74\x1b\x09\x24\x1c\x79\ \xe9\x8d\x4f\xe5\x7b\xe4\x99\x63\xe7\xde\x9a\x5a\xaa\x6a\x6e\xed\ \x8e\x89\x0b\x9c\xf9\x2c\xd3\xf7\xce\xc4\xd4\xb2\xf5\xa6\x59\x45\ \xb6\x70\xe1\xb5\x4a\x86\x2b\x53\x4b\x8b\x96\x82\x6d\x4a\xb9\x40\ \x36\x97\x24\x58\xb6\x18\x7a\xd3\xc8\x21\x2c\xcd\xeb\x77\xd0\x7a\ \x9b\xdc\xdd\x87\x49\x47\x23\xba\x0c\xbe\xb6\x4d\x18\x28\xb5\x8b\ \xba\x11\x07\x0e\xb6\x9e\x1f\xae\x2f\x3a\xa3\xf8\xa1\x58\x63\xee\ \xab\x5a\xfc\xb5\xb9\x0d\x7c\x7f\x6b\x9b\xbe\xd2\x29\xf3\x67\x03\ \x69\xad\x7c\xbb\x3b\xb7\xfa\x5b\xc3\x92\x44\x0d\x3e\x3a\x41\x20\ \x76\xc1\x93\x76\x06\x55\xec\x0d\xe6\xe6\xa2\xfc\xaf\xa7\xf7\xab\ \xde\xbd\x6b\xd6\xf5\x14\x49\xb5\x47\x21\xb6\x0d\x1b\x9b\xf4\xd4\ \x5a\xd5\x7b\xb5\xbc\x55\xd3\x36\xab\x4d\xad\x39\x76\xe3\x96\xb5\ \xe8\xa1\xb6\x2a\xf7\xaa\x5d\x65\x97\x1a\xe8\x4a\xf5\x22\x36\x04\ \xd6\x28\x33\xc5\xd0\x78\x07\x76\xec\x3d\x26\x36\x05\x8f\xe9\x87\ \x78\x40\x76\x48\x8a\xa2\x92\xa8\x7f\x51\x43\x52\x09\x61\x20\xcb\ \xcc\x9d\x7a\x5f\xb3\xdc\x02\x8f\x47\xab\xfd\x3f\x96\xe1\xd8\x28\ \xbf\xab\x7f\xf2\xc2\xc4\xb1\xdc\x37\x77\x26\xfb\xe8\x57\x0b\xe0\ \xde\xb5\xcb\xaf\x80\x17\x2c\x9d\x38\xf5\xca\x37\x23\x71\x69\x4c\ \x39\xd2\xeb\xcc\x98\xaa\xcc\x4c\x88\xa7\x32\x23\x37\x71\xdd\xb1\ \x7d\x72\xe8\x10\x7f\x00\x8d\x5e\x7a\xab\x47\xd7\x46\x98\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x9c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x31\x00\x00\x00\x2c\x08\x06\x00\x00\x00\xcc\xd4\x50\x59\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x18\ \x02\x2f\x2b\xe1\x1c\xc6\xb5\x00\x00\x00\x19\x74\x45\x58\x74\x43\ \x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\ \x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x04\xf7\ \x49\x44\x41\x54\x68\xde\xd5\x9a\xbf\x6e\x1b\x47\x10\xc6\x7f\xb3\ \xb7\xa4\xe8\x08\x56\xd2\xda\x30\x14\x03\x2e\x92\x00\x2e\xdc\x06\ \x70\x5e\xc1\xcf\x92\x22\x6d\x9a\x3c\x5d\x6a\x37\x56\xe3\xc2\x08\ \xdc\x18\x10\x04\x39\x81\x4d\xde\xed\xce\xa4\xd8\xdd\xbb\xbd\xe3\ \x91\x92\x9c\xc0\xa4\x16\x58\xdc\x81\x77\xfb\xe7\x9b\xef\x9b\x99\ \x25\x87\x02\x2c\x00\x99\xe9\xa5\xd5\xf7\x87\x6a\x36\xb9\x1f\x75\ \x0f\x34\x80\xab\x3a\xd5\x55\x8e\x00\xc8\x2e\x00\x5a\xae\x1e\x58\ \xe6\x4d\xd7\x60\xa4\xba\x1e\x0b\x88\x7a\xe3\x06\xc4\xdc\x7b\x10\ \x3e\xcb\xaa\xa9\xba\x3b\x02\x59\x4d\x59\xd0\x6a\xf3\x11\x08\x40\ \xf0\xc0\x83\x0c\x64\x99\x81\xec\x92\xd8\x21\x41\xe8\xc4\xfa\x01\ \xe8\x80\x16\xe8\x3c\x70\x0a\xac\x80\x93\xdc\x97\x15\x90\xa6\x02\ \x70\x28\x10\x05\x48\x0d\xa0\xcd\x7d\x0d\xac\x0b\x88\x6f\x72\x7f\ \x90\x81\x2c\x72\x77\x07\xf4\x8d\xa9\x2f\x68\x05\x60\x93\x01\x7c\ \x02\xbc\x07\xce\x56\xab\x93\x57\xe7\xe7\xdf\xff\xfa\xec\xd9\x33\ \x4e\x4f\x4f\x71\xce\xa1\x9a\xc3\x94\xbb\xdd\x8a\x5a\xc9\xd7\x65\ \xac\x26\x69\xe5\x12\xee\x24\xbf\x22\x96\x9e\x95\x77\x98\x3c\x1b\ \x21\x11\x10\x19\xdb\xee\xe3\xc7\x8f\xbc\x7d\xfb\x96\x77\xef\xde\ \xfd\x16\x42\xb8\x90\xd5\xea\xe4\x8f\x97\x2f\x7f\xf9\xfd\xc9\x93\ \x27\x84\x10\xb8\xba\xba\x22\x84\x40\xd7\x75\x80\xc3\x39\x30\x33\ \xcc\xc6\xb3\x8b\x48\x9a\x5c\x6d\x0b\xc4\x6d\x36\x59\x3e\x2f\xe3\ \xea\xe7\x7e\x62\x39\x11\x41\xab\x35\xcf\xbe\xfb\x96\xb3\xb3\x33\ \x2e\x2e\x2e\x78\xf3\xe6\xcd\x9f\xf2\xe2\xc5\x0b\x7b\xfe\xfc\x39\ \x1f\x3e\x7c\xe0\xfa\xfa\x1a\xe7\x1c\x4d\x93\x5c\x21\xc6\x48\x23\ \x6e\x2f\x08\xef\x5c\xe6\x7a\x78\xde\x18\xa3\xcf\x8a\x25\xc5\x12\ \x23\x9a\x63\x85\x09\x68\x9e\x57\x2a\x20\x2e\xf3\xa7\x35\x23\xf9\ \x3d\xe7\x1c\x5d\xd7\xf1\xf0\xe1\x43\x1e\x3d\x7a\xc4\xeb\xd7\xaf\ \xf1\xe7\xe7\xe7\x5c\x5d\x5d\x71\x79\x79\xc9\x6a\xb5\x02\xa0\x6d\ \x5b\x16\x8b\x05\x22\xb2\xb5\x79\x26\x13\x87\x10\xb6\x40\x40\xb2\ \x9c\x99\x81\x93\x5e\x62\xa3\x50\x63\xd6\xb3\x51\x84\x5f\x40\xa8\ \xb3\x09\x0b\x86\x9a\x66\x43\x18\xce\x39\xae\xaf\xaf\x39\x39\x39\ \xe1\xe9\xd3\xa7\xf8\xd5\xf2\x01\xef\xdf\xff\x45\x23\x8e\xd8\x05\ \x54\x15\xef\x7d\xba\xb7\x80\xf4\x01\x6a\xbe\x39\xe7\xb7\x02\x7a\ \x24\x81\x57\x80\x68\xc9\x18\x92\x36\x99\x00\x74\x3d\x13\x66\x36\ \x62\x0a\x40\xd5\x7a\x90\x2e\x4b\x4b\xb3\x93\x8a\x08\x5d\x1b\x58\ \x2c\x16\x5c\x5e\x5e\xf2\xf8\xf1\x63\x7c\x8c\x91\xcd\xa6\xc3\xfb\ \x44\xd3\x62\xb1\x40\x55\xd9\xb4\x9f\x59\x2e\x97\x3d\xdd\xbb\xd9\ \xc8\xd4\xdb\x94\x09\x43\x35\xf1\x23\x22\x43\x78\xb3\x24\x97\x58\ \x31\x51\x83\x68\xb2\x4c\x4d\x2d\x8d\x51\x4d\x6c\xaa\xf5\xf1\xd1\ \xf9\x86\x68\xca\x66\xbd\xc1\xf9\x06\x6f\x66\xc4\x18\x71\x6e\xd0\ \x7e\x88\x83\x9c\x34\xea\x48\x93\x35\xcd\xa3\xe8\x64\x86\xe6\x8f\ \x1a\xe7\xd3\x5c\x0c\x41\x41\x44\xc0\x2c\x5b\x3b\x24\x00\x56\x18\ \xcc\x20\x45\x30\x03\x67\x0b\x2c\x56\x72\x8c\x69\x9c\x99\x21\x4e\ \x08\x99\xb2\xa6\x59\x24\x02\xba\x6e\x83\x59\xa4\x6d\x23\xd2\x38\ \x36\x5d\x9b\x37\xa5\x88\xd8\x60\x81\xca\x0f\x6a\x09\x98\x85\xd1\ \xb9\x44\x44\xe8\x24\xee\x3c\xab\x18\x10\xb2\xa5\x8b\x31\x8a\x7d\ \x0a\xab\x66\xeb\xc1\x50\x16\xab\xb1\x49\x8f\x25\xa8\x68\x88\x10\ \x3a\x7c\x08\x81\x18\x63\x5e\x70\xbc\xc1\x51\xe8\x9b\x58\xbe\x30\ \x53\xae\x03\x28\xdb\x1b\x0c\xea\xf0\x3a\x1d\xdb\xb3\xaa\xba\xc5\ \xf8\x9c\x12\x34\x46\x62\x8c\xc9\x27\x62\x8c\x19\xdd\xe0\x68\xfd\ \x35\xea\xd6\x22\xfb\x26\xbf\x55\x2a\xbe\x01\xc4\xbe\xf9\x8b\x91\ \x52\x42\x56\xba\x18\x13\x13\xaa\x9a\x7c\x42\x75\xcb\x9a\x22\x92\ \x68\xdc\xf6\xe8\xe2\x0c\x3b\x37\x72\xe3\x79\xa2\x32\xd8\x08\x80\ \x31\xbf\x66\x25\x2b\x55\xed\x43\x7c\x0f\xa2\x56\xf0\x54\xf7\x83\ \x76\xb7\x27\x16\xe3\x8b\x99\x98\x82\xef\xad\x7c\xc3\x11\x4d\x44\ \x50\x31\xa2\x46\xda\xd0\x25\x39\x95\xc1\xa6\x83\x65\x54\x93\x8c\ \xca\x75\xce\xda\x52\x39\xe8\x5d\x5a\x9d\xc9\xe7\x40\x14\x63\xee\ \xf2\x43\xe7\x1c\x5a\x22\xa9\xc6\xc1\xb1\xa7\x19\xb4\xde\xfc\x1c\ \xed\xfd\x02\x33\xec\xdc\xc5\xb1\xe7\x40\xd4\xc3\xe7\x7c\x43\x55\ \x53\x1e\x22\xcb\xa9\x6d\x5b\xba\xae\x4b\xe8\x18\x33\x51\x72\xc7\ \x2e\xbd\x8b\x48\x1f\xbf\xef\x02\xa2\x1c\x45\x76\x1d\x65\xc4\xd8\ \x62\xbf\x8e\x86\xe5\x04\x10\x4d\x59\xb7\x2d\x7e\xdd\x6e\x58\xb7\ \x1b\x9c\x73\xb3\xd6\xfe\x92\xe8\xf3\x35\x5a\x91\x7a\xf7\x79\x8d\ \x2b\xc8\xe6\xf4\x7e\xac\x6d\x2a\x41\x3f\x97\x44\x66\xb5\x7f\xa4\ \x4d\x55\x71\x25\xd1\xed\x43\x7b\xf4\x20\xea\x14\x7f\x5f\xda\x28\ \x11\x9b\x25\x26\x6e\x7a\xf9\x5e\x32\x71\xec\x9b\xaf\xa5\xae\xaa\ \x29\x3a\xdd\x27\xcb\xcf\x25\x41\x37\x77\xac\xa8\x93\xdc\xec\x79\ \xe9\x3f\x9c\x60\xff\x4f\x19\xf5\x3e\x71\x17\xe4\xf5\xf7\xdd\x7d\ \x99\xfc\x6b\x3b\xf9\x8d\x20\x9a\xa6\xe9\x8f\xbc\xfd\x97\xa7\x0c\ \xc8\x39\x77\x14\xd2\xf2\xb7\x41\x2a\x22\x34\x4d\xd3\x67\xf6\x72\ \xb6\x2a\x5f\x4e\x0e\xed\xdc\x37\x82\x88\x31\xf6\x00\x54\x75\xf4\ \xd3\x49\xf1\x9d\x43\xcb\xc9\x37\xe2\x68\x9a\x3d\xd6\x6c\x6a\x69\ \xb9\xa3\x8c\x54\xfe\x87\x9f\x7e\xe4\xbe\x37\x01\x7e\xae\x7e\xd6\ \x5f\x31\x14\x5b\xea\x6a\xd1\xa1\xeb\x13\x75\x95\xa8\xab\x6a\x13\ \x9f\x81\x4f\x1e\xf8\x3b\x3f\xd8\x30\x14\x58\x4a\x91\x45\x38\x6c\ \xdd\xce\x26\x60\xfa\x12\x17\x93\x22\xcb\x3f\x19\xc4\x9a\x71\xdd\ \xee\xd0\x2c\xec\x63\xa3\x30\xd2\x01\x1b\x9f\x29\x09\xd9\xfa\xd3\ \x2a\x2a\x07\x64\x61\xca\x46\xf9\x41\xbd\x00\x29\x95\xa3\xce\x67\ \x06\xba\x89\xf5\x8f\xa5\xfc\x3b\x27\x2b\x9d\xb2\xe2\x33\x80\xc8\ \x71\x16\xe2\xe7\x40\x14\x46\x7a\x66\x7c\xa6\xe4\x98\xff\x12\x31\ \x27\xab\xd1\xdf\x22\xfe\x05\x87\x94\x8c\x6a\x16\x44\xdd\xd8\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\x34\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x5e\x00\x00\x00\x18\x08\x04\x00\x00\x00\xd9\xda\x82\x94\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0f\x12\x00\x00\x0f\x12\x01\x21\x9b\xf2\x33\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x12\x05\x2d\x12\x91\ \x0d\xeb\xcf\x00\x00\x00\x19\x74\x45\x58\x74\x43\x6f\x6d\x6d\x65\ \x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\ \x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x01\x93\x49\x44\x41\x54\ \x58\xc3\xd5\x96\xbb\x4e\xc3\x30\x14\x86\x3f\x27\x4e\x7a\x91\x90\ \x80\x89\x37\x61\x40\x62\x04\x09\x31\x31\xf0\xa4\x2c\x30\x20\x36\ \xd4\x17\x60\x61\x65\x29\x12\x88\x96\x2a\x4d\x42\xed\xc3\x90\x4b\ \x93\xa6\xad\x14\x21\x21\xfb\x78\xf0\xe5\xd8\xd2\xe7\x93\x3f\xc7\ \x47\x4d\x81\x94\x1c\xbf\x2c\x66\x08\x68\x98\x83\x8c\x08\x09\x3c\ \x01\xb7\xe4\x24\x24\xea\x08\x9d\x12\xca\x98\x7b\x26\xcc\x6a\xb7\ \x72\x06\x54\x6a\x60\x10\x04\x30\x1c\x73\xca\x15\xef\x32\x53\xea\ \x95\xa1\x3c\xf0\xc8\x4f\x89\xad\x1c\xba\x80\x94\xc8\xb6\x71\x01\ \x80\x90\x73\xae\xf9\x50\x01\x44\x4c\x30\x58\x2c\x16\xc1\x96\x1b\ \xa4\x6e\xb6\xf6\xfd\x77\x6b\xa3\x57\x2b\x06\xcb\x33\x63\x16\x68\ \x50\x24\x0d\x3d\x01\xa5\xfa\x55\xeb\xc3\x15\x23\xf5\x87\x18\xaa\ \x9e\xbb\x2b\xec\x66\xcc\xa5\x16\x50\xc6\x0a\x5d\xb8\x57\x2d\x6c\ \xeb\xd8\x0f\xda\x04\xb7\x40\x58\xae\xeb\xb5\xb6\x00\x4c\x2b\x42\ \x9b\xf1\x92\x1e\xde\x7e\xa7\x9b\xb3\xee\x39\x29\xa1\x37\x83\xaa\ \xdb\xb7\x53\x2d\xa1\xd0\x99\xf5\xf3\xf6\x3b\x2d\x3b\xc6\x66\x0b\ \x76\x71\x21\x5d\xa1\x5b\x87\xf3\xfa\xae\x04\x5a\xcb\xc6\x5d\xf8\ \xdd\xa6\x41\xc8\xc9\x58\x79\x04\x5d\xe9\x5f\x03\xe4\xa4\x5e\xc1\ \xeb\x66\x9f\x90\x96\x2f\xac\x1f\x16\x61\xaa\x1f\x56\xc8\x3c\x8b\ \xbc\x29\xfb\x00\x8f\xcd\x5b\xf8\x3a\xcf\x2b\x0f\x40\xb7\x95\xeb\ \xba\x28\x31\x43\x70\x56\xf5\xdd\x77\x38\x24\x5a\xc3\x1f\x60\xc8\ \xf6\x3c\xea\xae\x25\xca\x98\x01\x51\x51\x98\xe5\x5c\x70\x47\x88\ \xc1\x7a\x20\x21\xd0\x0c\xb8\x64\x49\x80\x8e\x59\x70\x03\x3c\xb1\ \xdc\x53\x1c\xb9\x94\x5f\x46\x9c\x71\xcb\x0b\x31\x6a\xca\x27\xb9\ \x0c\x19\x77\xca\x57\x17\xad\xa8\x7a\xe7\xbc\x81\x3a\x41\x4d\x11\ \xbe\xf9\x62\x41\x5e\x17\xc6\xae\x5b\x48\xcc\x31\x87\xfc\x02\xe8\ \xd1\xec\xea\x42\xfb\xcf\xc2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x00\x57\ \x62\ \x6f\x72\x64\x65\x72\x2e\x6c\x65\x66\x74\x3a\x20\x31\x35\x0a\x62\ \x6f\x72\x64\x65\x72\x2e\x74\x6f\x70\x3a\x20\x34\x0a\x62\x6f\x72\ \x64\x65\x72\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x34\x0a\x62\x6f\ \x72\x64\x65\x72\x2e\x72\x69\x67\x68\x74\x3a\x20\x31\x35\x0a\x73\ \x6f\x75\x72\x63\x65\x3a\x20\x74\x6f\x6f\x6c\x62\x75\x74\x74\x6f\ \x6e\x2e\x70\x6e\x67\x0a\ \x00\x00\x00\x57\ \x62\ \x6f\x72\x64\x65\x72\x2e\x6c\x65\x66\x74\x3a\x20\x31\x30\x0a\x62\ \x6f\x72\x64\x65\x72\x2e\x74\x6f\x70\x3a\x20\x31\x30\x0a\x62\x6f\ \x72\x64\x65\x72\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x30\x0a\ \x62\x6f\x72\x64\x65\x72\x2e\x72\x69\x67\x68\x74\x3a\x20\x31\x30\ \x0a\x73\x6f\x75\x72\x63\x65\x3a\x20\x6c\x69\x6e\x65\x65\x64\x69\ \x74\x2e\x70\x6e\x67\x0a\ \x00\x00\x04\xd4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4f\x00\x00\x00\x4f\x08\x06\x00\x00\x00\xaa\x34\x98\x86\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\ \x42\x28\x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x15\ \x04\x1c\x13\xcb\x92\xbf\x74\x00\x00\x04\x54\x49\x44\x41\x54\x78\ \xda\xed\x5c\xd9\x52\x1b\x31\x10\x6c\xad\x97\x60\xcc\x6d\xe3\x04\ \x08\xb9\xf8\xff\x2f\xcb\x47\x78\xf2\xe0\x71\x50\x09\xad\x56\xc7\ \xe8\x58\x90\xaa\x28\x5c\xae\x95\xbd\x6a\x4d\xf7\xf4\xcc\x0a\x14\ \x11\x3d\xe1\x38\x48\xfb\x81\xf1\x7b\xea\x75\x89\x79\x50\x4a\xa1\ \xc5\x31\x02\xd0\xef\x4c\x19\x37\x6f\x7b\x4f\x19\x8b\x53\x13\xf3\ \xcc\x6b\x63\xe7\x81\x88\xa8\x45\x00\x47\x00\xc3\xcc\xa2\x48\x03\ \xd8\x06\x06\x79\x80\x81\xc0\x0d\x7a\xf7\x1e\x11\x35\x17\x89\xe3\ \x04\x30\x14\x11\x89\x53\xd7\xa8\x09\x4a\x2a\x47\xc4\x39\x37\x84\ \x18\xc9\xda\x20\xea\x91\xe7\x43\x39\xd7\xa2\x94\x05\x2c\x1f\xaa\ \xfa\x82\x68\xa5\x73\x4d\x10\x47\xed\xa6\xa6\x16\x12\x1c\x19\xda\ \xb5\x07\x87\x0c\x84\x80\xef\xa4\xf8\x89\xd2\xa5\x41\x3c\x45\x1e\ \x2c\x34\x4b\x5e\x94\xf1\xd9\x21\xf3\x42\x75\x92\x00\xa8\xd2\x91\ \x68\x66\xdb\x50\x61\x9f\xa3\x5c\xca\xbc\x58\x19\x28\x16\x89\x66\ \xb6\xd5\x6f\x58\x92\x72\xa9\x54\x45\x0a\x9d\x73\x45\xe3\xe8\xd0\ \xad\x14\xca\xa9\x02\x54\x9d\x03\x3f\xbb\x57\xf4\x31\xc9\x2e\xb3\ \x3b\xb7\xd0\xc3\x94\xf1\x8d\x00\xc3\x37\x49\x4d\x6e\x88\x34\x9d\ \x75\xda\x86\x46\x8b\xcf\x42\x87\x19\xdd\x2a\x19\xc1\x90\xa6\xb3\ \x2d\x61\x48\xec\x7a\xcb\xc9\x46\xcc\x2b\x9a\x9a\x27\xe1\xef\xa4\ \xc1\xf0\x31\xd7\x31\x74\x4e\xd6\x44\x5b\x79\x96\xea\xef\x54\x24\ \x55\x53\x33\x36\x05\x6e\xda\x3b\x10\x43\xe9\x6c\x96\x67\x4a\x48\ \xef\x52\x93\x0d\x32\x68\x70\x10\xb0\x3e\x74\x1e\x3d\x01\xa3\xc8\ \x12\x2e\xa7\xde\xc5\xb6\xc3\xe0\x68\x60\x04\xd5\xcf\x2e\x93\x4c\ \x8e\x0e\x49\xa9\x48\x94\x68\x87\x29\x81\x4d\xb3\xda\x9c\x31\x82\ \xaa\xc8\x70\xc3\x59\x2b\x8d\x84\x79\xce\xfa\xd9\x65\x92\x69\xa2\ \xee\x8d\xd5\x91\x9c\x0b\x4d\xd5\xd2\xa8\xfa\xd9\xa4\x6d\x8e\x66\ \x66\x8e\xa4\x21\xde\xd6\x8a\xf9\x3e\xd3\xaa\x00\xb2\x86\xb4\x56\ \xe6\x2d\x32\xcf\xb4\x2a\x3e\xd1\xb2\xa4\x4a\x23\xc7\xa6\xfd\xc7\ \xc0\x65\x92\x6b\xe9\xd6\x1c\x75\x42\x74\x2b\x56\xef\x7c\x9c\x05\ \xd9\xca\xb3\x52\xbb\x1e\x1b\xc1\x53\x8b\xca\x31\xcf\x29\x57\x53\ \xd9\x36\xf4\xe1\x4d\x69\x8b\x91\xd2\x0e\x13\x7b\xd6\x3c\x02\xf8\ \x0b\x60\xef\x01\x62\x8d\xa6\x40\x2c\xe5\xe6\xda\x61\x22\xb2\xa3\ \x88\x48\x31\x78\x3f\x01\x9c\x1b\x17\x1c\x8c\x6e\x72\xea\x71\x0b\ \xfd\xb3\x25\xe7\xcd\xdd\x53\xe8\xf7\x79\xbd\x56\x5a\xe9\x71\x01\ \xe0\x37\x80\xad\xe5\xc3\x11\xb1\xd0\x1c\x67\x5d\x72\x81\x1f\x35\ \x4f\x19\xb5\xdb\x29\x0a\x7f\x69\x51\x98\x6b\xd7\x4b\x1f\x18\x12\ \x07\x51\x4d\xf4\xf9\xd7\x0c\xe0\x03\xec\xc7\x30\x4a\x50\x27\x57\ \xe4\x8b\x31\x46\x39\x1e\x96\x0c\x00\xee\x59\x0b\xaf\x1a\xd6\xad\ \x6a\x91\xef\x6c\x97\x72\x14\xae\x00\x3c\x01\xf8\x0e\xe0\x4b\x01\ \xca\x51\x64\x92\xa2\x84\xe4\x76\x70\x00\x3d\x39\xcf\xab\x69\xaf\ \x25\x94\x1f\xac\x89\x43\x03\x7a\x17\x4b\x4b\xb1\xef\x0b\x7a\xe2\ \xc1\xb6\xe6\x96\x41\xbc\x5b\x68\x06\x15\xdb\xec\xe0\xe7\x6d\x5a\ \x56\xbe\x67\x10\xaf\x1d\x6d\xab\x5a\x99\x37\x57\x72\x0b\xa7\xed\ \x8c\x1e\x6e\x01\x3c\x03\xb8\x69\xd8\x62\x64\x89\x44\x91\x73\x07\ \x44\xb4\x62\x5b\xf3\x02\x60\x53\x89\x72\xc5\x93\x8d\xd8\xc9\x17\ \x8e\xc4\x01\xc0\x57\x8e\xc4\x8d\x07\x9d\x51\x3a\x5a\x24\xe7\x89\ \x9f\xbb\x62\x10\x47\xd6\xc4\x67\x4d\x13\x73\x2c\x2a\x26\x82\xc5\ \x74\x39\xdb\xe9\x3f\x4d\x13\x6f\x19\xc4\xbb\x99\x48\x6c\x85\xe2\ \xde\x20\x16\x39\x7f\xca\x40\x5e\xb2\xd9\xde\x72\xdd\xdc\x02\x55\ \x93\xc0\x2f\x7a\x02\x9a\x41\x3c\x67\xa3\xbd\x67\x40\x55\x21\x30\ \xc4\xfd\x64\x95\x33\xf8\x9a\x2e\x5e\x03\x78\x64\x7d\x5c\x15\xea\ \xac\xd4\x33\xc9\x99\x80\x5c\x73\x24\x3e\x70\x19\x38\x34\x5a\x07\ \xcb\x98\xe4\x4c\x40\x0e\x6c\xb6\x77\x9a\x36\xd6\x6c\x82\xd6\xc9\ \xb6\x02\xd1\x78\xc6\x99\x7a\xcf\x99\x7a\x68\xad\x7e\x6e\xf3\x6f\ \x31\xed\xb4\xde\xf1\xcf\xa5\x85\xd6\x55\x2a\x94\xe6\xc1\xb3\xd0\ \xfa\x8a\xb5\x51\xa7\x75\x15\xfb\xb2\x28\xf0\x2c\xb4\xde\x72\xb6\ \xde\x38\xaa\x98\x6c\x1d\xef\x45\x82\x67\xe9\x31\x5e\x03\xf8\xc6\ \xda\x78\x56\xa8\xd2\xc0\xe2\xc1\x33\x40\x5c\x6b\x06\xfc\x5c\xd8\ \x5c\xe7\x69\x49\x35\x48\xe9\x2f\x9c\x5c\x1e\x19\x50\x85\x0c\x7d\ \xbf\x0f\x07\x9e\x25\xc1\x3c\x30\x88\x66\x29\x58\xaf\x93\xbc\x30\ \x10\xf5\x16\xd9\xa5\x14\x9d\x3f\x05\x78\x46\x8b\x6c\x8b\x63\xc7\ \xfb\xe2\xc3\x9b\xe4\x8c\x91\xb8\xe7\x16\xd9\x3a\xd6\x5c\x7f\x4a\ \xf0\x8c\xc4\xf2\xc8\x20\xae\x42\x23\xf1\xd3\x82\x67\x80\xb8\x61\ \x2a\xef\x0c\xb3\x8d\x0f\x6d\x92\x85\x7d\xe2\x1d\xde\xce\xe6\xcc\ \x9a\xeb\x0e\x9e\xbd\xec\x3b\x9d\xcd\x19\xd0\x5a\x27\x79\x21\x20\ \xde\xe0\x78\xd8\xf3\x66\x2a\xf3\x76\xf0\xdc\x20\x9e\x4e\x88\xbd\ \xe0\xed\x1f\xf8\xf4\xc8\x0b\x8c\xc2\x2b\x00\x7f\x70\x6c\xce\xa2\ \x83\x17\x67\xb0\x5f\x58\x0b\x57\x9d\xb6\x71\x20\xee\x00\xbc\x02\ \x58\x77\xf0\xe2\x7d\xe1\x6b\x07\x2f\x1e\xc0\x8e\x5d\x1f\x7d\xf4\ \xd1\x47\x1f\x7d\xf4\xd1\x47\x1f\x7d\xf4\xd1\x47\x1b\xe3\x1f\xe0\ \x81\xec\x5e\x51\xd2\x2e\xc1\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x09\xf6\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x2a\x08\x06\x00\x00\x00\x03\x06\x5d\xe2\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\ \x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd9\x0a\x0d\x01\x0d\x15\x98\x8e\xd7\xaa\x00\x00\x00\x19\x74\x45\ \x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\ \x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\ \x00\x09\x5e\x49\x44\x41\x54\x68\xde\x9d\x5a\xcb\x6e\x64\x49\x11\ \x3d\x11\x79\xab\xca\xed\xf6\x8c\xba\x57\xb4\x64\x46\xf4\x16\x50\ \xef\x50\x6f\x40\xf2\x7c\x00\x42\xc0\x07\xb0\x9d\x0f\xe0\x03\xe0\ \x03\x46\xac\xe1\x0f\xd8\xb2\x64\x56\xb3\x69\x66\x37\x4c\xaf\x5b\ \x6a\xc9\x12\xcd\x2c\x2c\x0f\x66\xdc\x6e\xbb\x5c\x99\x11\x2c\xf2\ \x66\xde\xc8\x57\x95\x85\x25\xcb\xae\xba\xb7\xf2\x66\x9e\x3c\x71\ \xe2\x44\x64\x11\xcc\xcf\xc7\x27\x1f\x7d\xe6\xbd\xff\xf3\x6a\xb5\ \xb2\x6f\x43\x55\xa1\xaa\x20\x72\xc5\x7b\x42\xf1\x7f\x82\x80\x68\ \x7e\x01\x01\xa5\xeb\x1a\xdf\x23\xa2\x7c\x5d\x55\xf3\x7b\x1a\x04\ \xcc\x6c\x9e\xc4\xc5\x7d\x5e\xe3\xb8\x4c\x6a\x3e\xa7\x79\x7c\x15\ \xea\x8e\x9d\x7e\xbc\x04\x10\x11\x1e\x6d\x8e\xb0\xdb\xed\x10\x42\ \x80\x5b\x4d\x5f\xae\x36\xeb\x3f\xad\x56\xab\x2f\x21\x7a\x9a\x66\ \x8d\xd5\x6a\xf5\xc7\x9f\xfe\xf8\x27\x7f\x38\x3b\x3b\xc3\xd3\xa7\ \x4f\x71\x74\x74\x54\x2c\xd6\x4e\x32\x83\x42\xe9\x9a\x80\x31\x9e\ \x48\x9a\x64\xfd\xbe\xc8\x02\xdc\x02\x60\x39\x7e\x5a\x34\x44\xcd\ \x3d\x25\x90\xf5\x66\xe5\x67\xba\x09\x44\x84\xbb\x0f\xb7\x58\xaf\ \xd7\xb8\xbc\xbc\xc4\x3f\x5f\x7f\x83\x7f\x7c\xf5\x15\x8e\x8f\x8f\ \xbf\x76\x8c\x9f\x11\x00\x9c\x9c\x9c\xfc\xfe\xc5\x8b\x17\x9f\xff\ \xf6\xd7\xbf\xc1\xc5\xc5\x05\xae\xae\xae\xb0\xff\x87\x67\x46\xb4\ \x0b\xb5\x93\x70\xcd\xe2\x4a\x70\xc2\x70\x11\xb4\x77\xfc\x11\x78\ \x76\x6c\x22\x42\x98\x5f\xae\xa7\x15\x42\x08\x38\x3e\x3e\xc6\xe9\ \x27\x3f\xc4\xab\x57\xaf\xf0\xf7\x2f\xbe\xc0\xc7\x1f\x3d\xfe\xdd\ \x04\x00\x9b\xcd\xe6\xf3\xb3\xb3\x33\x9c\x9f\x9f\xe3\xfa\xfa\x1a\ \xeb\xf5\x1a\x21\x84\xe1\xf2\x7b\xe8\xc7\xff\xb9\xd8\x69\x51\xdf\ \xfd\x7c\x9e\x30\xb9\xf9\xde\x30\x60\x5b\x0b\x7c\x1a\x3f\x31\x6f\ \x04\x2e\x11\x01\xec\x40\x0a\xdc\xee\x6e\xa1\xaa\xb8\xbb\xbb\xc3\ \xfb\xf7\xef\xf1\xf2\xe5\x4b\x7c\xf3\xfa\x35\xbe\xbb\xbc\xf8\xf9\ \x04\x00\x4f\x9e\x3c\xc1\x66\xb3\xc1\x7f\x76\xdf\xc5\xd8\xf3\xfe\ \x41\x8b\x6f\x43\x43\x21\x50\x7b\x73\x9f\x9a\x69\x92\xd0\x79\x31\ \x91\xe6\xcb\xc2\x30\x0c\x0d\x81\x02\x04\x28\x00\xd2\xfd\x80\x89\ \x78\x68\x10\x4c\xd3\x04\x52\x00\xec\x70\x73\x73\x8d\xdb\xdb\x1b\ \xfc\xe8\xf9\x27\xf8\xf6\xdf\xff\xfa\x6c\x02\x80\xf5\x7a\x9d\x63\ \xe4\xe4\xe4\x04\xde\xfb\x2c\x4e\xcb\x03\x38\x3e\x3e\x0b\x22\xe5\ \xbf\x60\x02\xb0\x4c\x5e\xe7\x9d\xa2\xc1\xce\xe6\xc5\xa9\x54\x0b\ \x2e\xc7\xcf\xda\x41\xc8\xe3\x13\x51\x16\x57\xd6\x31\x4b\x89\x08\ \xde\x7b\xac\xd7\x6b\xdc\xdf\xdf\x63\xe5\x1c\x76\xdb\x2d\x9c\x73\ \xf0\xde\x63\x9a\x26\x30\x33\x26\x00\xd8\x6e\xb7\x50\x55\x30\x33\ \x44\x04\x22\x52\xa8\x3f\x00\xf0\xbc\xc8\x7c\x0d\x01\x50\x86\x52\ \xdc\x09\x40\x21\x79\x91\x33\x10\x2a\x5d\xf6\xe4\x49\x9a\xd7\x11\ \x70\xc3\x02\x12\x48\x88\xe0\x26\xb0\xa5\xd8\x8c\xc8\x87\x7d\x00\ \xb3\x03\x76\x7e\x0b\x12\x85\xd7\x00\xe7\x18\x5b\x7f\x8f\xdd\x6e\ \x0b\x47\x40\x08\x21\x02\x30\x4d\x13\xbc\xf7\x10\x11\xec\x76\xbb\ \x39\x85\x98\x5d\x50\x81\x97\x5d\xdc\x01\x4d\x34\x8e\x60\xa5\x39\ \xe4\xd8\xa4\x22\x62\x1b\x20\x8b\xac\xc0\xcb\x8e\x7b\x1f\x9f\x97\ \xb2\x89\x0a\x21\x84\x00\x12\xcb\x82\x72\xa1\x82\x25\x0c\x7b\x00\ \xa8\x60\x61\x13\x00\xd9\x79\x88\x28\x54\x09\x22\x80\x73\x2e\x02\ \xa0\xaa\x08\x21\x94\xbb\x4f\xbc\x7c\x58\x05\x61\xde\xcd\x0c\xc0\ \x40\x7c\x96\xd4\x08\x28\x68\xa8\x1d\xf1\x6f\x79\x6d\xd1\x83\x32\ \xa5\x96\x29\xb7\x2b\x31\x5d\x6d\xb2\x9b\xa1\xaa\x79\x7d\x22\x4b\ \xe8\x4d\x00\x70\x71\x71\x81\x10\x42\x34\x0a\xce\xcd\x0f\x34\x88\ \xaa\x00\x4c\x25\x03\xa8\xbf\xbb\x76\xa7\x2c\x00\xbd\x2c\x20\x68\ \x73\x7b\x6f\xfc\x2c\x7e\xf5\x38\x8a\x03\x59\xa6\x15\xf0\xb4\xce\ \x04\xc2\x94\x73\xb2\x61\x80\x15\xb9\x39\xba\xa3\x66\xcf\x13\x2c\ \x28\xdf\xa4\x9e\xe5\x73\x41\xa4\xc9\xf1\x85\x4a\x43\xdb\xc5\x8a\ \x0e\x19\xd0\xe4\x7d\xd1\xff\x0b\x80\x86\x01\xc9\x58\x24\x9a\x64\ \x75\xc7\xe2\xf4\x12\x00\x90\x52\xa5\xeb\xb4\x95\x26\x95\xc0\xb2\ \x63\xd5\x74\xdd\x07\x40\x7d\x6f\x02\xc0\x02\xcf\x03\x86\xe5\x8d\ \xe1\xf6\xb9\x36\xcc\x0b\x00\x7a\x0c\x30\x1f\x85\xce\x0b\x87\x5d\ \x60\x4d\x5f\xa2\x4c\x55\x0b\x52\xcf\x0f\xd4\xa9\x34\x33\x49\xb4\ \xcb\x1a\xad\x3e\x0b\x00\x5a\xd4\x11\x9d\x4c\x13\x5a\xbf\x32\x64\ \x40\xba\x10\x42\x88\xe8\xaa\x42\x79\x29\x70\x32\xb5\x65\xd9\x71\ \x8b\x64\xad\x01\x3d\xfb\xfa\x10\x1f\xdf\x8b\xeb\x61\x16\x98\x9f\ \x3f\x62\x58\xef\x9a\x5d\x23\x11\x95\x00\x84\x10\xc0\x1c\xd5\x1f\ \x33\xf3\x95\x09\x44\x0a\x09\x91\x1d\x49\xa4\x46\x45\x8f\x8d\xd5\ \xde\xf5\xbd\x3b\xb6\x58\x88\xc2\xef\x5b\x00\x0a\xaf\x1f\x42\xc7\ \x8e\x1f\x06\xc0\x5e\x2f\x34\x60\x17\x3c\xc0\x04\xe6\x09\xca\x69\ \xc1\xd1\x77\x16\x82\xa7\x0c\x82\x03\x71\x00\xe9\x62\x4b\x54\xe6\ \x52\x78\xb0\x63\x29\xcf\x2f\xc5\x10\xcf\x52\x2e\xd0\xec\xea\xd8\ \xf8\x7e\x40\xa1\x40\x90\xd2\xfa\xcc\xe6\xa8\x57\x10\x51\x8c\x95\ \xac\x01\x16\xc4\xf4\x7f\xb2\xfa\x05\x03\xb2\xda\x6a\x72\x7b\xd2\ \xe4\xd6\x62\x31\x20\x40\x23\x00\xda\xa8\x3b\xba\x79\xdb\x9a\xa3\ \x79\xe0\xe8\x28\x21\x85\xab\x2b\x47\x5a\xd2\x5d\xcc\x06\x94\xbd\ \x42\x2a\xd8\x2c\x08\x45\x7d\xa0\xd4\x08\xb6\x15\xfa\x86\x01\xc9\ \x07\xa4\x1a\xdc\x0a\x54\x9d\x19\x14\x1e\xd0\x18\x12\xd2\x31\xa7\ \x4a\x83\x58\xb6\xa6\x07\x01\x20\xbb\x78\xa9\xee\xd7\x26\xdd\x49\ \xe5\x36\x9b\x30\x2a\xd8\x4a\xdd\x4d\x4c\x7a\x37\x14\xc1\x24\x00\ \xb5\xd2\x2f\x00\x98\xee\xcf\xfc\xc0\x1c\x06\x83\x1c\x6c\x29\xba\ \xa4\xc1\xb2\x93\x94\xa5\x1b\x80\xaa\x5f\xf4\x48\xca\xf1\x95\xc6\ \x06\x88\x0c\x00\x3c\x97\xdb\x76\x1d\xd6\x08\x35\x00\x58\x27\x68\ \x19\x10\x07\x77\x73\x36\x93\x32\xed\xcd\x13\x94\x5a\xb1\xb5\xaf\ \xf8\x05\x45\xd9\xb5\x3e\xc2\x54\x78\x99\xaa\x62\x9d\x26\xe5\xfc\ \x5e\x67\xa1\x3a\x04\xc4\x2f\x6c\x4b\x60\x7a\xef\xe1\xbd\xef\xa7\ \x41\xef\xfd\x0c\x00\x81\xe7\xca\x6f\x31\x2a\x5a\xee\x14\x09\x90\ \x1a\x1a\xb5\x23\xe3\x71\x93\xc2\xc6\x33\x72\x0c\xbb\x26\xee\x41\ \x82\xbc\xef\xa2\xf9\xe9\x4a\x04\x95\x7e\x1a\x6e\x00\x08\x6d\x36\ \x48\xbd\xc1\x83\x00\x40\x42\x15\x3f\x86\xf6\x3c\x3f\x80\x38\xa6\ \xc5\x6a\xb7\xc1\x64\xca\xe4\xb1\x08\x2e\x0b\xe0\x59\xf5\x93\xcf\ \xf6\xf3\xba\x29\x7f\x86\x2b\x81\x6d\xfc\x03\x51\x53\x81\xa6\x8d\ \xb0\xd7\xbd\xf7\x45\xb7\xab\x09\x81\x48\x3b\xca\xfd\xbc\x9e\x80\ \x59\x81\xaa\x55\x38\x8a\xdb\xd8\x94\x94\x61\xb5\xf4\x86\x96\x5f\ \xa3\x0b\xb9\xf4\x5e\xba\x48\xa8\xb2\x51\x0d\xc2\xe8\x9a\xb5\xc2\ \x5d\x1f\x40\x44\x98\xd8\xc1\x11\x83\x38\x5a\x5a\xaa\xbc\x76\x7c\ \xbd\xd0\x95\x44\x9a\xce\x91\x63\x67\x54\x7e\x01\x23\x87\x92\x2d\ \x51\x1d\xb5\xd4\x07\xa0\xe9\x19\x12\x8d\x59\xd2\x1a\x11\x01\x13\ \x61\x35\x3f\x23\x98\x86\x8b\xed\x20\xd9\x4d\x75\xce\x15\x69\x30\ \x85\x4e\x32\x51\x93\x5d\xa0\xbd\x99\x70\xf8\x67\x9a\xa6\x22\xbd\ \x58\xaf\xa0\xaa\x39\xa5\xf6\xac\xaf\xcd\x1c\xc3\xb6\x96\x73\x0b\ \x00\x33\xd8\x36\xac\x98\xf9\x41\x4d\x5b\x0b\x0c\x11\xe5\x31\x0b\ \x06\x24\x00\xd2\xa0\x5c\x87\x40\xaf\xf9\xc0\x5c\x16\x3d\x46\xe5\ \x7b\xb6\xd7\xfa\x88\xc4\x86\x51\xb9\x9c\x94\xdb\xce\xad\xae\x45\ \xf4\xc0\x2e\xa5\xc5\xf6\xc2\xa3\x11\xc1\x84\x68\xba\xd1\x1e\x74\ \xa4\x30\x6d\x52\x56\xe7\xb3\x75\xb1\xd4\x00\xf4\x00\xbf\x1e\x7b\ \x82\xd4\x58\x59\x9b\x8d\x52\xff\xb2\x5b\x6b\xd0\x22\x82\x35\xf5\ \xad\x2d\x6e\x9c\x60\x11\x02\x07\x0e\x35\x54\x15\xec\xb8\xa8\xc8\ \x88\x08\x56\x02\x6d\x08\xd4\x42\xb9\x2f\x34\xf2\x3d\xf3\x0e\x96\ \x34\xd6\x62\x77\xf7\xed\xbe\x4d\xc7\x54\x8d\xd5\x30\x20\x51\xae\ \x29\x2e\x3a\x4d\x8f\x3c\x51\x73\x7f\x7e\x50\x8f\xb6\x83\x6c\x90\ \x00\x1a\x29\x36\xb9\xa9\x55\x75\xb2\x00\xf7\x2b\xca\xfc\xda\xcc\ \xcd\x86\x42\x76\x98\x23\x00\x2c\x6d\x7a\xdd\xde\x94\xb8\xea\x38\ \x5d\xda\xe7\x63\x1d\x28\x45\x8e\x7b\xc1\x9f\xc7\x07\xa8\xc9\x32\ \x44\x76\xbe\x07\x00\x98\x7b\x18\xcc\x5c\xb4\xfc\x97\x82\x6f\xa0\ \x01\xcc\x9c\xd3\x84\x8d\xab\x91\xc8\x14\x27\xc8\x68\x5b\x65\x3d\ \xa0\x12\x83\xf6\x1f\x87\x51\x13\xb3\xae\x78\x5e\x18\x9c\x22\xa1\ \x69\x89\xd5\x62\x98\xcc\xd0\xd4\x5b\x3c\x11\x81\x27\xb7\xc4\x21\ \x71\xb4\xa3\x54\xaa\xaf\xd3\x85\xe2\x42\xa1\x14\x47\x4b\xb5\x4e\ \x63\x84\xe7\xe3\xf1\x42\x4d\xd9\x00\x4a\x00\xc3\x99\x94\x9a\x4c\ \x96\xe4\x0d\xa1\xea\x38\xbd\x00\x41\x63\xff\xdf\xee\x3e\x11\xe6\ \x13\xa1\x29\xdb\xef\x26\x04\x6c\x1a\x2c\xce\xf3\x98\x9a\xd6\x74\ \xef\xb0\xe3\x21\xc7\xe2\x79\xc7\x2a\x06\xd8\x30\x23\x5d\x58\x17\ \xef\xef\x67\x92\x51\xf7\x29\x6a\xc4\x54\xcc\xa3\x0e\xf1\x61\x16\ \xb0\xf1\x53\x6a\x4f\x39\x51\x36\x56\x46\x3b\x39\xbd\xb6\xbe\x2d\ \x08\x5a\x7c\x17\x80\x06\x21\x70\xa8\xad\x36\xd2\x01\x9b\x2a\x6d\ \x08\x5a\x20\xa7\x5e\xff\xcd\xf6\xf6\xd4\x88\x12\x77\x3d\x7c\x59\ \x01\x8e\x58\xd1\x6d\x84\xd2\xf2\x59\xea\x2c\x50\x95\x1e\xdc\x54\ \xed\xa5\xd2\x9e\xf3\xdb\x2b\x82\xce\xb9\x0c\x84\x56\x3d\xfb\x9e\ \x0e\xda\x94\xa7\x24\x43\x7a\x0e\x1b\xa2\x8c\xbd\xae\x53\x8a\xe7\ \x53\x97\x59\x3d\x86\xd5\x47\xea\x49\x8b\xea\x90\xc9\x0c\x78\xf4\ \xe8\x11\xec\x21\x69\x12\xa9\x83\x2d\x67\x3b\xa9\x43\x3d\xfa\xde\ \xd7\x1d\x7a\x99\xc1\xc6\x3e\x4a\x00\xf6\x7d\x1d\xa6\x1f\x72\xdc\ \xbc\x5f\x1b\xa2\x29\xd5\xc8\xbb\xdd\x2e\x56\x83\xc9\xbd\x0d\xda\ \xdb\x65\x53\xb3\x65\xc0\xc8\xee\x1e\xf2\xec\x4b\xe3\xc3\x18\x1d\ \x76\xfb\x8f\xbe\x8a\xe3\x7b\x6e\x40\x11\x29\x41\xb6\xa1\xb0\xdb\ \xed\x16\x00\xb6\xdb\x2d\xb6\xdb\x2d\xa6\x47\xc7\xcb\x07\x98\xba\ \x07\x10\xb6\x28\x22\x72\x7b\x0f\x2f\xf7\x59\xd5\x54\xce\xda\xb3\ \xc6\xba\x38\x22\x63\xa5\xbb\x1d\x66\xe3\xe8\x7a\x61\xc0\x5c\xfa\ \x14\xbb\xf8\x9b\x9b\x1b\x00\xf8\x8b\x9b\xbf\x21\xf2\xa9\x88\x3c\ \x7f\xf6\x83\x67\xa6\x6e\xaf\x68\x33\xb7\x25\x12\x85\x98\x19\x4a\ \x0a\xe2\x48\x84\xf4\x9e\x15\xd2\x89\x1d\x08\x31\x9c\x78\x4e\xa5\ \xf6\xba\xab\xee\x27\x8e\xbf\xec\x18\xec\x1c\x54\x65\x76\x7e\xda\ \x88\x59\x7a\x5e\xed\x5f\x1c\x31\x98\x22\x4f\x79\xb6\xe2\xab\xd5\ \x2a\xff\x3d\x3a\x3a\xc2\xf9\xf9\x39\xde\xbd\x7b\xf7\xf5\xf7\xdf\ \xff\xf7\x57\x6e\xfe\x8e\xd0\x5f\x2f\x2f\x2f\x7f\xf1\xfe\xfa\xfa\ \xf9\xe3\xc7\x8f\xb1\xd9\x6c\x72\x4c\xe7\x0a\x71\xfe\x6e\x4e\xfc\ \x25\xe8\x1e\x3a\x2f\x85\xd1\x5c\x99\xcd\xc4\x1e\x89\x55\x01\x42\ \x95\x39\xea\xc2\xec\x50\x55\x59\x9e\x68\x12\xa6\x69\xca\x0c\xba\ \xbb\xbb\xc3\x9b\x37\x6f\xf0\xf6\xed\x5b\xac\xd7\xeb\x5f\xde\xde\ \x7e\xf8\x96\x00\xe0\xf4\xf4\xf4\xd9\x76\xbb\xfd\x70\x7f\xb7\xfd\ \x9b\x73\xee\x53\xe7\x1c\x78\x72\xdd\xb3\xbf\x07\xc5\x72\x7d\x36\ \x90\x4a\x64\xad\xbe\xea\x06\xdd\xab\x15\xc3\x13\xe8\x3d\x06\x88\ \xcd\x59\x40\x2a\xa7\xd3\x26\xa6\xb6\xdf\xd5\xd5\x55\x9e\xc4\xff\ \x00\x5c\x02\x19\x87\x64\x82\xd5\x44\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x08\xa9\ \x00\ \x00\x1d\x22\x78\x9c\xc5\x58\x59\x6f\xdb\x48\x12\x7e\xcf\xaf\x20\ \x94\x97\x04\x2b\x51\x7d\x1f\x86\xe5\x41\xd6\x83\x19\xcc\x42\xb3\ \x0b\x24\x13\xec\x33\x4d\xb5\x6c\x4e\x64\x52\x43\x52\xb1\x95\x5f\ \xbf\x55\xdd\x3c\x75\x38\x76\xb2\x83\x18\x48\xc4\xee\xae\xf3\xab\ \xea\xea\xea\xbe\xfc\xe9\xf1\x7e\x13\x7d\x76\x65\x95\x15\xf9\x62\ \x42\x63\x32\x89\x5c\x9e\x16\xab\x2c\xbf\x5d\x4c\x3e\xfe\xf1\xcb\ \xcc\x4c\xa2\xaa\x4e\xf2\x55\xb2\x29\x72\xb7\x98\xe4\xc5\xe4\xa7\ \xab\x57\x97\xd5\xe7\xdb\x08\x38\xf3\xea\x62\x95\x2e\x26\x77\x75\ \xbd\xbd\x98\xcf\xb7\xbb\x72\x13\x17\xe5\xed\x7c\x95\xce\xdd\xc6\ \xdd\xbb\xbc\xae\xe6\x34\xa6\xf3\x49\x43\x9b\xf6\xb4\x69\xe9\x92\ \x3a\xfb\xec\xd2\xe2\xfe\xbe\xc8\x2b\xcf\x96\x57\xaf\x5b\xca\x72\ \xb5\xee\x48\x1f\x1e\x1e\xe2\x07\xee\x29\xa8\xb5\x76\x4e\xd8\x9c\ \xb1\x19\x50\xcc\xaa\x7d\x5e\x27\x8f\xb3\x01\x1f\xd8\x75\x8a\x8f\ \x11\x42\xe6\xb0\xd6\x90\x3d\x83\xe4\xe2\x71\x93\xe5\x9f\xce\xda\ \xe0\x57\x27\xd1\x43\xb6\xaa\xef\x16\x13\x61\xb6\x8f\x93\xe8\xce\ \x65\xb7\x77\x75\x3b\xca\x56\x8b\x09\x88\xa3\x9c\xa8\xc9\xd5\xab\ \x28\xba\x5c\xb9\x75\xe5\x67\xf1\x03\xa6\x8d\x9f\x86\x05\x10\xe5\ \x92\xf2\xd7\x32\x59\x65\x80\x98\x27\x19\x4f\x09\x62\x78\x43\x0c\ \xe4\x55\x5d\x6c\x83\x74\xf8\x80\x25\x39\x89\x8a\xf5\xba\x72\xa0\ \x99\x60\xac\x8a\xed\x2c\x2d\x36\x45\xb9\x98\xbc\x5e\xfb\xbf\x66\ \xb2\xd8\x26\x69\x56\xef\x91\x6a\x3e\x16\xd6\xb1\xc7\x5a\x4e\x86\ \xa2\xed\xb7\xc9\x1b\x48\xd0\xbd\x71\xf4\x59\xc2\x68\x2b\xec\x72\ \x3e\x06\xe1\xf9\x60\x71\x76\x16\x2c\x2e\x9e\x04\x4b\xa7\xec\xc8\ \xb9\x58\x71\xc3\xac\x36\xea\x3c\x6a\xd2\x72\x2b\x28\xb7\x43\xec\ \xb8\x3a\x14\x9f\x26\x6b\xee\x8e\xc5\x53\xc3\x85\x51\x4c\x9c\x07\ \x91\x9b\x81\xd1\xb1\xe1\x46\x12\x29\x8f\xd0\x3c\x23\x5e\x12\x21\ \x8d\xa6\xfa\xbc\x78\x41\x9e\x88\xd1\x49\xa9\xff\x87\x18\x31\x75\ \x36\x46\xcc\x3c\x19\x23\x9b\xaa\xb3\xf6\x9c\x08\x8d\xa0\x0a\xfe\ \x46\xa1\x11\xec\x58\x2a\x33\xe9\x57\xa5\x0e\x22\xf2\x14\x64\x6b\ \x97\xe0\x9e\xfc\x2e\xc8\x7c\x79\xb9\xb8\x2b\x1d\x54\xc1\xd7\x27\ \xb0\x3b\x81\x29\xa7\x0a\x80\xbb\x6d\x46\x1f\xf3\xac\x86\x32\xb7\ \xab\x5c\xf9\x01\x6c\x70\xff\xc9\x3f\x56\x10\xc7\x47\xba\x98\xcc\ \x98\x89\xad\x32\x56\x80\x91\x7b\x3f\x96\x31\x67\xca\x50\x18\x3f\ \x32\x18\x73\x1d\x53\xab\x2c\x48\xdb\xe3\xd0\xc6\x52\x5a\x22\x49\ \xb7\x01\x2e\x51\x47\xb2\x79\x9e\xb1\xb0\x19\xbd\xb1\x63\x1e\x70\ \x02\x20\x4c\x1f\x51\x1b\x8f\x25\xb5\x44\x73\x18\xef\xd1\x1a\x16\ \x53\xca\x61\xc7\x4d\xa2\xf5\xc1\xfa\xfa\x60\x1d\xe0\x06\xe3\xbe\ \xea\x74\xbb\xfc\x47\x99\xe4\xd5\xba\x28\xef\x17\x93\xfb\xa4\x2e\ \xb3\xc7\x37\x24\x16\x46\x6b\x6e\xa7\x34\x66\x96\x81\x51\xd3\x19\ \x1c\x57\x00\xb0\x9e\xc2\x92\xd5\x4c\xc0\x8c\xa0\x31\xd2\xf0\x29\ \x67\xb1\xa0\xc2\xb2\xb7\xdf\x04\x04\x94\xf0\x93\x40\x18\x1a\x80\ \x60\x3c\xb6\xf8\x17\x60\x80\x11\x87\x88\x00\xe8\x1e\x85\x7e\x71\ \x3d\x5e\x04\x08\xa8\x8d\xa9\xa0\x16\xe5\x9c\xf7\x14\x0e\x76\xa2\ \x34\xa1\x53\x16\x33\x2e\x21\xdc\x6e\x46\xd5\x74\x86\x23\x4d\xa5\ \x1f\x20\x89\x96\x0c\x3c\x86\xa2\xa4\xc0\x2e\x85\x20\x30\x48\x04\ \xfa\xf6\x6b\x18\x7b\x40\x2e\xe7\x78\xb2\xe1\x17\x0e\xee\x5d\x9d\ \xac\x92\x3a\xf1\x4e\xb7\x03\xca\x29\x6d\x8f\x3d\x38\xc0\x2f\xde\ \xff\xfc\x4b\xb7\xc7\xd2\xf4\xe2\xbf\x45\xf9\x29\xc2\xf9\xe4\xa6\ \xd8\xc1\xde\xea\x6a\x04\x1e\x9f\xe9\x05\x7a\x94\xd4\x57\xd9\x7d\ \x72\xeb\xf0\xa8\xfe\x07\x9c\xd4\xa0\xb4\x5b\x18\x11\xd7\xfb\xad\ \xf3\xb2\x4a\x57\x15\xbb\x32\x75\x27\xdb\x94\x55\x7a\x9f\x21\xe5\ \xfc\x43\x9d\x6d\x36\xbf\xa1\xe4\x7e\xdb\x37\x82\xb2\x7a\xe3\xae\ \x1e\xa0\x5d\xb9\x73\xe5\x2c\xdd\x40\x54\xbd\xd2\x30\x3f\x22\x05\ \x17\xdd\xd5\xbf\x92\x7c\x97\x94\xfb\x08\x1a\x0a\xe5\x09\xfd\xec\ \x88\xce\x37\x3f\x45\xd9\x4f\x06\xf7\xdf\xdd\x76\x05\xe1\xd8\x80\ \xf7\xfb\x24\x8f\xae\x8b\xcd\x26\x73\x65\xf4\x66\x5b\xb9\xdd\xaa\ \x78\x7b\xca\x10\x0c\xc4\xb1\x30\x4f\x79\xa4\x17\xc5\x6f\x77\x37\ \x9b\xac\x02\xdf\x5e\x64\xce\xa0\x2f\x82\xee\xf0\xb6\x98\x6d\xcb\ \xe2\x4f\x97\xd6\x08\xec\x0b\xad\x3a\x61\x00\xea\x09\x51\x1b\x2a\ \x0a\x4e\x43\x73\xea\x3a\x2d\x0d\xd1\x98\x71\x77\x83\x96\x8c\x74\ \x63\x22\xfc\x33\xb9\x3d\xf0\x06\x67\x37\x59\x1b\xdb\xcb\x79\x33\ \x3e\x49\x94\x6c\xb7\x1b\x57\x3f\x4d\x93\x17\x75\xb6\xce\x52\x68\ \x6c\x8b\xfc\x14\x65\x98\x1b\xd9\x11\xbc\x38\xb4\x18\xe1\xdf\x64\ \xa9\xcb\xab\x33\x39\x7c\xaa\x7d\x6e\x18\xaa\xf9\xcd\x7e\x56\x25\ \x73\x16\x93\xf9\x61\x2e\xa7\x45\x0e\xe5\xe0\x66\xf7\xd2\xe4\xfb\ \x35\x29\x4b\x57\xd7\xd1\xd2\x7d\x80\x1d\xf2\xd2\xac\x3b\x56\xea\ \x69\x71\xb7\x0f\x77\xff\x72\xe0\x70\x53\x00\x5e\xe8\xed\x18\xc0\ \xad\x2b\x61\x73\x57\xa7\x01\x7c\x70\x37\x71\x3b\xe9\xe5\xa5\xe9\ \xfc\xbd\x83\x24\x5e\xed\x52\x0c\xdf\x08\xb9\x6f\x11\xf6\x73\x56\ \x05\xaf\x4f\x08\x2b\xdd\x5f\xbb\x0c\x18\x9e\x2f\xed\xdf\x90\x59\ \xa9\xfb\x7e\x39\xef\xea\xb3\x46\xbd\xdc\x43\x57\x66\x9f\x7d\x5c\ \x30\x92\xd5\xf7\x1b\xf7\xe1\x2e\x29\xdd\xbb\x4d\xf6\x69\xe0\xa8\ \xcf\x94\x26\x33\xda\x0e\x6a\x70\x72\x5c\xce\xdb\xa3\xc5\x8f\x6e\ \x43\x63\x94\xec\x5d\xd9\x9d\x33\xdd\x66\x83\xd5\x41\x63\xac\x87\ \xd9\xb2\x85\x02\x10\x01\xe7\xef\x11\x13\x11\x8b\x65\xb4\x8c\x18\ \x8d\x15\x93\x11\x1c\xae\x46\xcb\xe8\x3a\x82\xbe\x83\x5b\x0b\x37\ \x08\x98\x22\x0a\xda\x7d\x6a\x22\x38\x88\xa9\xa5\x82\xa8\xc8\x22\ \xa3\x45\x32\x11\x1b\xb8\x93\x59\x1c\x41\x63\xa5\x08\xb1\x4a\x75\ \x2c\x3a\x62\x2a\xe6\xba\x13\xbb\x6c\xf5\x7d\x89\x7e\x8f\x4c\x6c\ \x28\x68\x34\xb1\xf6\xbf\xcb\x88\xd2\xd8\x08\xa4\xa6\x32\x66\x8d\ \x19\x94\x41\x37\xe2\xcd\xa0\xd0\x13\x30\x23\x95\x1d\x7e\xf5\xab\ \x2d\x4b\x27\x64\x79\xa8\x00\x75\x72\xdb\x90\xf5\x5a\xa1\xcd\x09\ \x9f\x1d\xe7\x75\xc4\x45\x4c\x34\x15\x9c\x0e\x34\x70\xd0\xc0\xbc\ \x77\xbd\x7e\xae\x62\x2a\x11\xb6\x4e\xfd\xf2\x58\x05\xea\x6d\xfc\ \x07\x90\xe1\xf2\x14\x80\x00\x14\xb0\xcd\x51\x81\xab\x25\x00\xb8\ \x1a\x1b\x10\x43\xcd\xb9\xe6\x88\xab\xd4\x56\x32\x8f\x7a\xac\xe1\ \x72\x46\x79\x88\xc0\x35\xfe\x40\x50\x0c\x09\xb1\x23\xd0\xc7\x18\ \x69\x7c\xf0\xb4\x96\x9a\x1e\x29\xf6\x20\x34\xc0\x34\x21\xbf\xc6\ \x09\xcb\xa5\x51\x66\x10\x75\x6e\x07\xe1\xe6\x8d\x36\xff\xdb\x06\ \x7c\xc0\xd5\x05\xbe\x13\x1d\xc2\xbe\x8c\x84\x44\x3f\x05\xe2\x32\ \xd6\x8a\x86\x74\x88\x77\x31\xe8\x82\xc6\xbb\x8c\xe9\xa0\xed\xc0\ \xbe\x1e\x46\xa0\x8f\x4a\x1f\xa9\x3e\x7a\x47\x0a\xbc\xff\xad\xa0\ \x6e\xf6\x3a\xc8\x01\x64\xad\xe7\x96\x96\x29\xff\x61\xb4\x82\x24\ \x86\x45\x6a\x85\xb6\x16\x39\x82\x79\x20\x82\x8d\xa2\xdd\x1b\x7c\ \x2c\x1e\x95\x36\x6e\xb7\x28\xf8\x9d\xe0\xc1\x59\xb6\x60\xb5\x4b\ \xd7\x63\x3c\x5b\x8c\x7b\xdc\x7d\x30\xb8\xdf\x7d\xa3\x08\xf5\xb1\ \xeb\xb9\xc6\x5a\xbf\x44\xd0\x51\x43\xe3\xe7\xaf\xba\xce\x8a\x75\ \x18\x0e\xef\x6d\x70\x91\x2b\x8b\x4f\x6e\x74\x19\xc6\x89\x59\xf3\ \xf6\x03\x95\x04\x72\x92\x19\x2b\xbb\x15\x6c\xfd\xd3\x64\x0b\xb7\ \xc5\xbf\xa0\x13\x74\xa3\xf9\x3f\x8b\x2c\x87\x7e\x38\xab\x5d\xd9\ \xcd\xfb\xd1\x26\x83\x9f\xc5\x44\x74\xb3\xab\xa4\x82\x7a\x58\x26\ \x7b\x7c\x74\xcb\x7b\x29\xa7\x2e\xa8\x87\x25\x0c\x82\xe7\x81\x64\ \xb1\x92\xed\x4e\x08\x48\xf2\x98\x58\x03\x7f\x38\xc5\x38\x15\x46\ \xe1\x9c\x14\x1a\x82\x35\xaa\x62\x42\xb2\x76\x5b\xc5\x96\x50\x4a\ \xd9\x90\x45\x36\xdb\xb2\x11\xbc\xec\x94\xfa\x34\x26\x6d\x05\xc1\ \x17\x25\x4c\x59\xdc\xdc\x54\xc4\x61\x23\x43\xb2\x42\x3a\x4a\x6e\ \xf0\x4b\x59\x7c\x67\xc2\x2f\xb8\x6d\x11\xe2\xcb\x1a\xe1\x46\x0b\ \xcf\x20\xbc\x74\x60\x17\x4d\x59\x38\x10\xed\xb3\x57\xc7\x03\x55\ \x70\x5d\x1c\xb1\xf8\xda\xc5\x89\x50\x58\x0a\xbd\x68\x1a\x72\xda\ \x2a\x6a\x28\x0d\x26\xc0\x85\x48\x62\x52\x4b\xee\x45\x8b\x66\xaf\ \x0e\x25\x87\xa2\xe5\xcd\x41\x54\xbd\xcf\xe0\x70\xd8\xc1\xc3\xb2\ \x15\x48\x00\x9f\x90\xba\x88\x99\x80\x2b\x94\xcf\x57\x43\xa8\x08\ \x67\x45\x2c\x04\x23\xb0\x21\x87\x55\x4b\x72\xe5\x8f\x12\xe0\xa0\ \x4c\x73\x2f\x97\xe0\x16\x36\x07\x9a\x9b\x9a\xe5\xeb\x57\x17\xe2\ \x50\xb5\xb4\x32\x92\x0e\xa2\x1c\xaa\x56\x13\xde\x71\xd5\x6a\x02\ \x3c\xe0\xea\x02\xdd\x09\x6f\xc3\x0c\x75\x0b\xf6\x6e\xa8\x9c\x4d\ \xed\x1a\x6b\xf7\x26\xb5\x00\xe2\x95\xdd\x76\x07\x87\x95\x86\x59\ \x8e\x5f\x0c\x8a\xb6\x08\xf1\xb0\xd6\xc8\xb0\xa8\xb9\xe2\x6d\xd4\ \x3a\x09\x2d\xf6\xe1\xff\xe5\x09\xd1\x3e\xcf\x30\xad\x1a\xd6\x41\ \x6a\x20\x53\x5b\x2b\x43\x28\x91\x3d\x24\x9e\x26\x60\x0b\xf3\x9a\ \xa1\x20\x98\x90\x6e\x70\x34\x53\x5f\xde\xa0\xe0\x11\x28\x12\x43\ \xb9\xbe\x54\xb5\x5e\xb6\x6e\x87\x62\xd5\x22\xb2\xec\x71\x6a\x09\ \xae\x0f\xc0\xec\x00\x6e\x41\x1f\x95\xac\x41\x78\xfa\xc0\xf5\x5c\ \x87\xda\xfb\xa2\x15\xea\xc2\xd9\x8a\x05\xf7\xdc\x37\xaf\x8f\xdf\ \x1b\xde\x1e\x97\x30\x23\x94\x50\x90\xa7\x3f\xb0\x84\x5d\xce\x07\ \x8d\xda\xa0\xae\x8d\xee\x6c\xa1\xca\xd5\x27\x1e\x72\xb4\xc6\x33\ \x1f\xdf\x6f\x88\xa2\x70\x14\x4e\x9b\x0f\x7c\xc9\x69\xd6\x94\x8e\ \x05\xb6\x0d\x53\x88\x2c\x34\x63\x4c\x00\x10\xbe\x60\xe2\x9b\x92\ \x8c\x66\x54\xc3\xff\xef\x60\xaf\x49\xff\x8f\x44\x50\x1d\xa2\x08\ \xdf\x7f\xe4\xf4\xdc\xe2\x80\xf3\x4b\x7f\x94\xac\x9d\x93\xe2\x9b\ \x8e\x12\x69\x2d\xa5\xda\xfc\xd0\xa3\xe4\x3c\xcc\x34\x66\x50\xb7\ \xa4\x0e\x4f\x44\x5a\x13\x44\x97\x51\xa5\x04\xc3\x27\x34\x49\x8d\ \x10\x08\xb3\xa2\x4a\x98\xa9\x20\xb1\x64\xfa\x6f\x02\xf9\x64\x6e\ \x33\xf2\xf6\x09\xd4\x47\xae\x37\x90\x43\x96\x50\x38\xbf\x8d\xf8\ \xb1\xa7\xf7\x93\x99\x4d\xa1\xd9\xa5\x08\x39\x14\x04\x2e\xec\x34\ \x7c\xc8\x69\xb3\x04\x89\x0d\x8d\x19\x1c\x9d\x62\x0a\x07\x12\x1c\ \x66\xe2\xef\x4a\xec\xe7\x94\x9b\xe3\x47\xe9\x53\xe5\x86\x29\x82\ \x0d\xe4\x8f\xed\x98\x06\x05\xa7\xfd\x6c\x3e\xfc\xcf\x25\x3e\x31\ \x5e\xbd\xfa\x1f\x0e\x0e\xd3\xe3\ \x00\x00\x00\x57\ \x62\ \x6f\x72\x64\x65\x72\x2e\x6c\x65\x66\x74\x3a\x20\x31\x30\x0a\x62\ \x6f\x72\x64\x65\x72\x2e\x74\x6f\x70\x3a\x20\x31\x32\x0a\x62\x6f\ \x72\x64\x65\x72\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x32\x0a\ \x62\x6f\x72\x64\x65\x72\x2e\x72\x69\x67\x68\x74\x3a\x20\x31\x30\ \x0a\x73\x6f\x75\x72\x63\x65\x3a\x20\x74\x69\x74\x6c\x65\x62\x61\ \x72\x2e\x70\x6e\x67\x0a\ \x00\x00\x09\x41\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2a\x08\x06\x00\x00\x00\xc5\xc3\xc9\x5b\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xda\x04\x1b\ \x04\x2f\x1f\x95\xf4\x7e\xf3\x00\x00\x00\x19\x74\x45\x58\x74\x43\ \x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\ \x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x08\x9c\ \x49\x44\x41\x54\x58\xc3\xed\xd8\xcb\x6b\x1c\xc9\x1d\x07\xf0\x6f\ \xf5\x68\x66\xa4\xe9\xe9\xd7\x8c\x34\xef\x87\xde\xb6\x25\x3f\xd6\ \x22\x78\x2f\x59\x08\x59\x58\x91\xc3\xc2\x9c\x96\x60\x12\x1c\xc8\ \x3f\x60\xcc\x1e\xb2\xe7\xdc\x42\x62\x72\x0e\x39\x38\xe0\x40\x72\ \x32\xe4\x92\xd3\x1e\xf6\x12\x23\x2c\xaf\xac\x40\x62\x58\xad\xa4\ \xd1\x8c\xe7\xa9\x79\xb5\xa6\xbb\xa7\xbb\xa7\xbb\x2a\x87\x1e\x8d\ \xed\xc5\xd6\xc3\xab\xe4\x10\x5c\xd0\x8c\x98\x47\xd5\x87\x5f\xfd\ \xea\xf7\x2b\x04\xbc\x1f\xef\xc7\xfb\xf1\x3f\x1f\x04\x80\x74\x81\ \xf3\x45\x00\x70\x17\x8e\x5c\x58\x5c\xfc\x3c\x93\xcd\xb2\xb5\xb5\ \x1f\xdc\xb9\x80\xf9\x62\x89\x44\xc2\x9a\x9b\x9b\xfb\x62\x14\x80\ \x53\x87\xef\x2c\xc8\xa5\xc5\xa5\xbb\x93\xc1\xc9\xdf\x5d\xb9\x72\ \x05\xd5\x6a\xb5\x90\xcf\xe7\x8a\xf5\x7a\x7d\xfb\x5d\x91\xb3\xf9\ \xfc\xd7\xab\xab\xab\x8a\x69\x9a\x1f\x4b\x92\xac\x76\x3a\x9d\x8d\ \xef\x0b\x25\x8b\x0b\x0b\x77\x83\xc1\xc0\xfd\x6b\x57\x57\x11\x89\ \x46\x11\x89\x28\x38\x38\x38\x28\x64\xb3\xd9\x62\xa3\xd1\x38\x17\ \x56\x10\x84\x54\x2a\x91\xdc\xbc\x76\xed\x6a\x3a\x37\x3b\x0b\x51\ \x94\xd0\x6e\xb7\xd7\x25\x49\x3a\x15\xeb\x3b\x71\xbb\xe7\xe7\xef\ \x06\x83\xc1\xfb\xab\xab\x57\x11\x0a\xf1\xd0\x34\x0d\x93\x53\x93\ \x88\x44\xa3\x28\x95\x4a\x85\x6c\x26\x5b\x6c\x34\xcf\x86\x5d\x5d\ \x5d\xbd\xee\xf3\xf9\x1e\xaf\x5c\xb9\x92\x48\xa6\x52\xe8\x1f\x69\ \x98\x9a\x9a\x84\x2c\xcb\x68\xb5\xdb\xeb\xa2\x28\xaa\xdd\x6e\x77\ \xe3\xbc\x50\x32\x3f\x37\x77\x37\x10\x08\xde\x5f\x59\x59\x05\xcf\ \x87\xa0\xf5\xfb\xa0\x8c\xc2\xb6\x6d\xf0\xa1\x10\xa2\x91\x08\x4a\ \xa5\x52\x21\x93\xc9\x14\x9b\xcd\xe6\x89\xd8\x95\x95\x95\xeb\xba\ \xae\x7f\x75\x79\xf9\x52\x24\x95\x4e\xa3\x7f\xd4\x87\xeb\x3a\xb0\ \x2d\x1b\x21\x3e\x04\x49\x92\xd1\xe9\x74\xd6\x05\x41\x50\x7b\xbd\ \xde\xc6\x59\xa1\x5c\x36\x93\xfd\xd5\xe4\xe4\xe4\x6f\xae\x5e\x5d\ \x05\xcf\xf3\xe8\x1f\xf5\xc1\x18\x03\xc0\xc0\x18\x7b\x89\x8d\x4e\ \xa3\x5c\x3e\x19\xbb\xb6\xb6\xf6\x43\x55\x55\xbf\x5c\x5e\x5e\x96\ \xd2\xe9\x34\x54\x55\x85\xe3\xb8\x60\x8c\x81\x52\x0a\xdb\xb2\xc0\ \x0b\x61\x48\x92\x84\x6e\xb7\xbb\xce\xf3\xbc\xa6\xaa\xea\xe3\xb3\ \x40\x15\x9f\xcf\xf7\x97\xc5\x85\x85\xa9\x6c\x2e\x87\x5e\x4f\x85\ \xeb\xb8\x20\x60\xa0\x23\xe8\x78\x81\x70\x18\xd3\xd1\x28\x4a\xe5\ \x72\x21\x9d\x4e\x17\x0f\x0f\x0f\x5f\xc3\x7e\xf8\xe1\x87\x9f\x1e\ \x1e\x1e\xfe\x6d\x69\x69\x89\xcf\x64\x32\x50\xbb\x5d\xb8\x8e\x0b\ \xc6\x00\xc6\xd8\xf8\x75\x38\xb4\xa1\x28\x0a\x08\x21\x28\x95\x4a\ \x37\x0d\xc3\xf8\x03\x00\xeb\x34\xe8\xc0\x34\xcd\x07\xc3\xe1\xf0\ \xb6\x8f\x70\x62\x2c\x36\x03\xd3\x34\xe1\xba\x2e\x28\xf5\x90\x8c\ \x31\x50\x60\x8c\x8d\x46\xa3\x28\x97\xcb\x85\x64\x32\x59\x6c\xb5\ \x5a\xdb\x00\x70\xeb\xd6\xad\x42\xa3\xd1\x78\xb4\xb0\xb0\x10\xc8\ \x66\xb3\xe8\x74\x3a\x70\x1c\x07\x60\x0c\x8c\xd1\x11\xd4\x7b\xc2\ \xa2\x80\x7e\xbf\x8f\x67\xcf\x9e\x55\x1a\x8d\xc6\xc7\x00\x5e\xbc\ \xa9\x88\xbf\xb5\x8c\xa4\x92\xc9\xaf\x97\x96\x96\xd3\xf9\x7c\x1e\ \xdd\x76\x1b\x43\xea\x82\x10\x02\x42\x08\x28\xa5\xe3\x2f\xca\xb2\ \x0c\xc3\x30\xb0\xbd\xbd\x8d\xa9\xa9\xa9\x5f\x84\xc3\x61\xf5\xf0\ \xf0\xf0\xd1\xfc\xfc\x3c\x72\xb9\x1c\x3a\x9d\x0e\x5c\xd7\x05\xc6\ \x3f\xf1\x80\x20\x80\x2c\x2b\x30\x06\x06\x9e\x3c\x79\x52\xa9\x56\ \xab\x9f\x00\xf8\xf7\xdb\xba\x0d\x4e\xc3\x5e\x5a\x5a\x4e\xe7\xf2\ \x39\xb4\xdb\x6d\x6f\xeb\x38\xef\x67\xc7\x58\x42\x08\x64\x59\xc6\ \x60\x30\xc0\xd3\xa7\x4f\x41\x29\xc5\xf2\xf2\x65\xe4\xf3\x39\xb4\ \xdb\x2d\x38\xce\x10\x00\x03\x18\x19\x2d\x49\x40\x08\x20\xcb\x12\ \x0c\xdd\xc0\x93\xcd\xcd\x4a\xad\x5e\x7b\x2b\xf2\x2c\x75\x54\xef\ \x6b\xda\x43\xcb\xb2\x6e\xfb\x38\x4e\x4c\xa6\x52\x18\x0c\x06\x70\ \x5c\x77\x9c\x02\xc7\x8f\x69\x9a\x08\xf3\x61\x0c\xcc\x01\x9c\xa1\ \x83\xd5\x95\x55\xb4\x3b\x1d\x0c\x87\x43\x50\xea\x8e\xb6\x1b\xa3\ \x43\x49\x20\xcb\x12\x34\xc3\xc0\xe6\xe6\x66\xa5\x5e\xaf\x9f\x88\ \xc4\x59\xdb\x17\x80\x58\x32\x9e\xf8\x7a\x61\x71\x21\x3d\x37\x37\ \x87\x46\xb3\xe9\xe5\xdb\xab\x13\x11\x02\xc2\x00\x59\x51\xe0\xf7\ \x4f\xa0\xd5\xea\xc2\xa5\x14\xde\x7e\xb3\xd1\xe3\xa5\x8d\xa2\x44\ \x30\x18\x18\x78\xfa\xf4\x69\x43\x55\xd5\x9f\x0c\x06\x83\xad\x8b\ \x68\xa1\x00\xa0\x6b\xba\xf6\xd0\xb2\xec\xdb\x60\x44\x4c\x67\xd2\ \x30\x0c\x03\xae\xeb\x8e\x23\xea\xa5\x1e\x83\x61\x18\x30\x0c\x03\ \x8e\xe3\x82\x8e\xde\x3f\x3e\x3c\x00\x81\xa2\x28\x30\x0c\x1d\x5b\ \x5b\x5b\x3d\xd3\x34\x3f\xd5\x34\x6d\xf3\xa2\x7a\xfd\x18\xab\xeb\ \xfa\x43\xcb\xb2\x6e\x03\x10\xb3\xd9\x2c\x34\x4d\xf3\x0e\x09\x46\ \xe5\x66\x54\x15\x28\xa5\xe3\x73\x73\x5c\x86\x00\x0e\x91\x88\x02\ \xc3\x30\xb0\xb5\xb5\xd5\x07\xf0\x59\xab\xd5\xfa\xea\xac\x8b\xfb\ \xce\x79\xa1\xd0\x75\xc3\xc3\x52\x4a\xc5\x4c\x26\x03\x5d\xd7\xe1\ \x38\x8e\x17\x3d\xea\x95\x1e\x4a\x19\x18\xa5\x60\xcc\x05\xa3\x0c\ \xcc\xa5\x50\x14\xef\xb0\x6d\x3f\xdb\xb6\x27\x7c\xbe\x9f\xd6\x6a\ \xb5\xbf\x9f\xf7\x8e\x79\xee\x21\x08\x42\xd6\xef\xf7\x17\x05\x41\ \xe0\x3e\xfa\xe8\x23\xec\xed\xed\x61\xe8\x38\xe0\xd8\xcb\xef\x1c\ \x77\x32\x80\x43\x24\x1a\x41\xad\x56\x43\xa5\x52\x45\x28\x34\xf9\ \xf3\x52\xb9\xfc\xf0\xbc\x6b\xbe\xd3\xc5\x55\x92\xe5\x1f\x13\x42\ \x38\x49\x92\xd0\x6c\x36\x61\x59\x16\x28\xa5\x70\x29\x7d\xad\x98\ \x53\x0a\xf8\x26\x26\x30\x3d\x3d\x83\x6e\xa7\x07\x97\xba\xc3\x6e\ \xb7\xfb\xd5\xbb\xac\x79\xee\x88\xe6\x73\xb9\x3b\x03\xd3\x7c\x70\ \xed\xea\x35\x04\x83\x41\x34\x1a\x0d\x70\xa3\x26\x70\x3c\x1d\x01\ \xc0\x38\x2f\x9e\x00\xe0\xf7\xfb\x91\xc9\x64\xf0\xed\xce\x0e\x0e\ \x4a\x07\x75\xcb\xb2\x6f\x69\xfd\x7e\xf9\x3c\xeb\x9e\x2b\x47\x73\ \xd9\xdc\x1d\xcb\xf2\x90\xe1\x30\x8f\x76\xab\x05\x8e\x70\xe0\x38\ \x02\x42\x7c\xe3\xae\x45\xc8\x88\x3b\xfa\x9b\x52\x0a\x5d\xd7\x31\ \x3f\x37\x0f\xd7\xa5\x61\xad\xdf\xff\x6c\x30\x18\x3c\x04\xa0\x5f\ \x38\x34\x9f\xcf\xdf\xb1\x2d\xeb\xc1\xf5\x6b\x37\xc0\x87\x79\xb4\ \x0e\x5b\xaf\xec\x09\x01\xc7\x79\xb5\x34\x10\x08\x78\x1d\x6b\x8c\ \xf6\x1e\x46\x19\x74\x5d\xc7\xdc\xec\x2c\x18\x63\xa2\x6d\xdb\xb7\ \x0d\xc3\x38\x33\xf6\x4c\xd0\xd9\xd9\xd9\x9f\x59\xb6\xf5\xe0\xc6\ \xf5\x1b\x84\x0f\xf3\x68\xb7\xda\xe3\xda\xe9\x41\x38\x00\x04\x81\ \x80\x1f\xf9\xd9\x59\x98\x96\x09\xc7\x76\xc0\x71\x5e\xb4\x39\xe2\ \x3d\x60\x0c\x86\x6e\x20\xff\x0e\x58\xdf\x99\x90\x96\xf5\xa7\x1b\ \xd7\x6f\x70\xa1\xd0\xcb\x48\x12\x42\xc0\x71\xdc\xf8\x35\x10\x0c\ \x20\x99\x4c\xe2\xf1\xe3\x7f\x80\x52\x8a\x54\x2a\x05\xcb\xb4\x46\ \x9f\x8f\xa0\x20\xa0\x94\x61\x60\x18\xc8\xe7\x67\xc1\x70\x76\xec\ \x89\xd0\x4c\x26\xf3\xa9\x6d\xdb\x7f\xfe\xe0\x83\x0f\x26\x78\x9e\ \x47\xa7\xd5\x06\xc0\x40\x08\xe0\xf3\xf9\xc6\x11\xf3\xfb\xfd\x48\ \xa6\x52\xd8\xdf\xdb\x47\xbd\xde\xa0\xba\xa6\x93\x78\x2c\x06\x59\ \x91\x61\x59\xe6\x6b\x29\x40\x08\x01\x63\x2e\x0c\xd3\x44\x3e\x9f\ \x07\x63\x10\x87\x43\xfb\xb6\xae\xeb\x27\x62\xdf\x0a\x4d\x26\x93\ \x9f\x50\x4a\xff\x7a\xf3\xe6\xcd\x10\xcf\xf3\xe8\x76\xbb\x20\x78\ \x35\x8a\x5e\x84\xfc\x7e\x3f\xe2\xc9\x04\xf6\xf7\x76\xb1\xbb\xb7\ \x57\x39\x6c\x1d\x2e\xc7\x63\xf1\x7f\x55\x6b\xd5\x42\x34\x1a\x85\ \x24\x49\x30\x2d\x0b\x20\x04\xe0\x08\x08\xe7\xa5\x0a\x03\x30\x18\ \x98\xc8\xe5\xb2\xe0\x38\x4e\xb4\xed\x93\xb1\x6f\x84\xc6\x62\xb1\ \x1f\x71\x1c\xf7\x68\x6d\x6d\x4d\xe0\x79\x1e\xbd\x5e\x0f\x8c\x31\ \x10\xc2\xc1\xc7\xbd\xcc\x49\xbf\xdf\x8f\x78\x22\x8e\xe2\xfe\x3e\ \x76\xf7\xf6\x2a\xcd\x66\x73\x0d\x40\xb3\xdb\xeb\x6e\xc7\xe3\xf1\ \xe2\x8b\x6a\xa5\x10\x8d\x46\x21\x4a\x12\x2c\xcb\xfa\x4e\xf5\xf6\ \x4a\xb8\x69\x9a\xc8\x64\xd2\x20\x64\x62\x84\xd5\xde\x88\x7d\x13\ \x54\x9a\x9c\x9c\xdc\xbc\x74\xe9\xb2\x90\x4e\xa7\xd1\x69\xf7\x40\ \xd9\xf1\xbd\xf3\x65\xd9\x09\x04\x03\x88\xc5\x63\x1e\x72\x77\xaf\ \xd2\x68\x34\xd6\x00\x34\x8f\x27\xe9\x74\x3a\xdb\x89\x58\xa2\x58\ \x79\xf1\xa2\x10\x89\x46\x21\x8a\x22\x86\xc3\x21\x38\x8e\x03\x38\ \x02\x1f\x37\x31\x4a\x03\x06\xcb\xb2\xb0\xb8\x38\x0f\xdb\xb6\xc5\ \x7e\xbf\xff\x4b\xcb\xb2\xfe\x08\x60\x70\x1a\xd4\x56\x22\x8a\x3d\ \x30\x06\x9f\xf0\x53\x21\x48\xb2\x04\xcb\x34\x47\x3e\x2f\xc7\xfc\ \x7e\x3f\x66\x66\x66\x70\x70\x70\x80\x9d\x6f\xbf\xad\xd4\x1b\xf5\ \xd7\x90\xaf\x62\xe3\xf1\x44\xb1\xf2\xa2\x52\x88\x4e\x47\x21\x08\ \x02\x2c\xcb\x1a\x55\x34\x6f\x2e\x9f\xcf\x07\x59\x96\xd0\x6e\xb7\ \x51\x2c\x16\x41\x08\xf9\xb5\xa6\x69\x5f\xe2\x65\xbf\x78\xfb\xd6\ \xf7\xfb\xfd\xc7\x61\x3e\xac\x76\xba\xdd\x75\x51\x94\xa0\x28\x32\ \x6c\xdb\x1e\x77\x99\xe9\xe9\x69\x94\x4a\x25\xec\xec\xec\x54\xea\ \xf5\x37\x23\x5f\xc5\x26\x13\x89\xe2\x8b\xca\x28\x0d\x44\x11\xb6\ \x6d\x83\xc0\x43\x46\x22\x0a\xfa\xfd\x3e\x9e\x3f\x7f\x0e\xc7\x71\ \xee\x55\x2a\x95\xdf\x7e\x17\x79\xe2\x61\x3a\x3a\x3a\xda\x08\x0b\ \x82\xda\xed\x76\xd7\x25\x59\x82\x2c\xcb\x70\x5d\x17\x51\xef\x9f\ \x0f\xf8\xe6\x9b\x6f\x2a\xb5\x5a\xed\x44\xe4\xf1\x68\x77\xda\xdb\ \x89\x44\x62\xb7\x52\xa9\x14\xa6\xa7\xa7\x89\x28\x8a\x70\x1c\x17\ \x8a\x22\x43\xd3\x34\x3c\x7f\xfe\x1c\xc3\xa1\x7d\xaf\x5c\x2e\xff\ \xfe\x4d\xc8\x53\xcb\xd3\xd1\x91\xba\x21\x84\x05\xb5\xdb\xed\xac\ \xcb\xb2\x8c\x44\x22\x81\xfd\xfd\xfd\x73\x21\xc7\xd8\x76\xfb\x9f\ \x8a\xa2\x6c\x56\xab\xd5\xc2\xcc\xf4\x4c\x20\x3a\x1d\x85\xaa\x1e\ \x8d\x90\xc3\x7b\xe5\x72\xe9\xad\xc8\x33\x15\x7c\xf5\x48\xdd\x10\ \x04\x41\xed\x74\x3a\xeb\x96\x65\x61\x67\x67\xa7\x52\xad\x56\xcf\ \x85\x3c\x1e\xbd\x5e\x6f\x47\x14\x84\x8d\x7a\xbd\x56\x98\x98\xf0\ \x07\x77\x77\x77\x31\x1c\x0e\xef\x95\x4a\x07\x27\x22\xcf\x75\xcb\ \xca\x64\x32\x5f\x28\x8a\xd2\x06\x10\xfb\xbe\x93\x65\xd2\xe9\x8f\ \x67\x66\x66\xd4\x5c\x2e\xf7\xf9\xbb\xde\x89\x4f\xbb\xbb\x46\x2e\ \x70\x3e\xe9\xbf\x81\x7c\x3f\xfe\xef\xc6\x7f\x00\xba\x0e\x9f\x79\ \x33\xcd\x2d\x45\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x05\x87\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2c\x00\x00\x00\x26\x08\x06\x00\x00\x00\xbf\x1f\x79\x67\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x18\ \x05\x1c\x2a\x67\x3f\x85\x96\x00\x00\x00\x19\x74\x45\x58\x74\x43\ \x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\ \x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x04\xe2\ \x49\x44\x41\x54\x58\xc3\xed\x99\xdb\x6b\x5c\x55\x18\xc5\x7f\xfb\ \x72\xce\x4c\x26\x93\xdb\x34\x33\x49\x26\x8d\xf6\x06\xf5\x52\xaa\ \xf6\xa2\xa2\x2f\xa3\x0f\xfa\x24\x42\x11\x45\x10\x7d\x53\x9f\x8b\ \xe0\x93\x54\xff\x05\xfd\x07\xc4\x17\x95\xa2\x2f\x82\x97\x2a\x18\ \x14\xfa\x50\x83\xa0\xb4\x5a\x2f\xb5\xb5\x6a\xad\x69\xd2\xc6\x34\ \xe9\xe4\xcc\x39\xfb\xfb\x7c\x98\x4c\x4c\x6c\x35\x49\x49\x9a\x14\ \xfb\xc1\xe6\xc0\xcc\x3e\x67\xd6\x5e\x7b\xed\xb5\xcf\x5e\x63\x98\ \x57\x03\x5b\x07\x5e\xae\x6c\xab\x1c\x28\xdf\xda\x47\xbe\x3f\x87\ \x69\xb3\x18\x07\x9a\x0a\xd7\xba\x5c\x12\x73\xfe\xf4\x38\x67\x8f\ \xfe\x4e\xb1\xbf\x7d\x78\xf0\x9e\xc1\xc7\xb1\x8c\x19\x80\x6a\xf7\ \x40\xc9\x6e\x72\xef\xec\x7a\x7a\x57\xad\x74\x4b\x09\x11\x41\x32\ \xa1\x91\x65\xa4\x2e\xc5\xa9\xc3\x5a\xbb\xac\x1f\x34\xc6\xfc\xe7\ \xf7\xaa\x3a\xf7\x4c\x11\x59\x70\x4f\x08\x81\x28\x8a\xc8\x05\x83\ \x51\xc3\x99\x91\x73\x9c\x3a\x72\x92\x1d\xcf\xee\xac\x9a\xbe\x72\ \x5f\x7f\xe7\xc6\xee\x37\xef\x79\x69\x6f\xcd\xc7\x96\x7a\x92\x12\ \x12\xa5\x73\xaa\x40\x57\x57\x17\x91\xe6\x50\x03\xce\xb9\x15\x67\ \x71\x3e\x60\x55\xc5\x18\x83\xaa\x22\x22\x8c\x5d\x1a\x65\x34\x3b\ \x47\xcf\x40\x0f\x05\x5f\xe0\x8f\x63\x67\xf9\xf5\xfd\x5f\x86\xbd\ \x2d\xda\x47\xb7\x3e\xb1\xb9\xe6\xbd\x65\xf2\xec\x04\x4c\xc5\x3c\ \x7d\xdf\x33\xec\x1d\xdc\x45\xb9\xaf\x8c\xb7\x7e\x51\xb6\x56\xba\ \x44\x84\x9f\xc6\x4e\xf2\xf1\x57\x87\xf8\xe0\xdb\x8f\x91\x9b\x61\ \xe0\xf6\x0a\xe3\xc7\xcf\xd5\xdc\xc6\x9d\x43\x23\xdb\xf7\x6d\x27\ \x6b\x18\x64\xcc\x72\xe0\xb1\x97\xb8\x7f\xf3\xbd\x74\x74\x14\x91\ \x46\x00\xcb\xb2\xe5\xb0\x54\x50\x2d\x19\xb4\xd8\x9d\x5f\x5d\xbe\ \x9d\x3d\x9b\xf6\x50\x8a\x37\xf0\xd9\x57\xc3\x84\x28\xa3\x7b\xa8\ \x8c\xad\x6c\x29\x63\xd4\xf1\xe7\x85\x49\xf6\xdd\xbd\x8f\xdb\xaa\ \xb7\x11\x7c\x40\x8c\x40\xac\x60\xb4\xa9\xb9\x20\x2b\xda\x8c\x02\ \xa2\x68\x90\xb9\x6b\xab\x21\x8a\x44\x60\x62\xc3\x83\x3b\x1f\x60\ \xf7\xe0\x5e\x92\xc9\x19\xa2\x1e\x8f\x2f\x54\xda\x49\xd2\x3a\x7e\ \xcc\xb0\xbb\x7f\x27\xa8\x10\xbb\xdc\xec\x38\xa3\xbf\x17\x91\xb3\ \xab\x2a\x83\x7f\xb2\x1c\x69\x4c\x08\x29\xb9\x5c\x4c\x6d\x4b\x8d\ \x4f\x3f\xfa\x84\xf6\xfe\x4e\xbc\x14\x94\xac\x21\x74\x16\xba\xb9\ \x69\x68\x13\xce\xfa\x05\x0f\x4a\xb3\x19\xbc\xcb\x2d\x5b\xc7\xaa\ \xba\x64\x17\x69\xf5\x5d\x70\x8f\x28\x9a\x00\x1e\x86\xba\xaa\x38\ \xf5\x44\x2e\x87\xcf\x48\x11\x11\xea\xd3\xd3\xe4\x7d\xae\x69\x67\ \x9a\x90\x8f\xda\x08\x49\x4a\x94\xcb\x2f\x09\xc0\xd5\xd8\x5a\xab\ \xdf\x95\xfa\x06\x32\x5c\xce\x92\x25\x33\xc4\xc5\x18\xa7\x79\xc0\ \xe2\xbd\xc4\x20\x60\xc5\x36\xa7\xc5\x19\xf2\xa6\xad\x69\xde\xb9\ \x68\xc9\x00\x96\x5b\x8b\x3d\xcf\xb9\x08\x55\xc5\x7b\x8f\x55\x43\ \x72\x71\xaa\x69\x85\x8b\x4e\xad\x84\x65\xb3\xbb\x9a\x65\x57\x82\ \x8d\x35\x05\xbc\x9e\xc0\x5d\x15\xc3\xc6\xba\xeb\x0b\xf0\xba\xd7\ \xf0\x3f\xc1\x19\xeb\xd6\xb7\x86\xd7\x3d\xc3\xc6\x18\x04\x01\x6b\ \x16\xbc\x8c\xcc\xa3\x78\x4d\x80\xcd\xdf\xaa\x5b\x57\x55\xc5\x72\ \x9d\xd5\x0d\xc0\x37\x00\xff\x2f\x00\x5f\x57\x3e\xbc\xee\x18\x36\ \xc6\xe2\x89\x17\x78\xdd\x7a\x60\xd7\x18\xd3\x3c\xe3\xa9\x12\x10\ \xe2\x38\xd7\x02\x0c\x21\xa4\x64\x59\x63\xde\xee\xc6\x5c\xa0\xb1\ \x56\xbb\x9c\xaa\x82\x35\x28\x82\x33\x8e\x34\x0d\x58\x6b\xb1\x22\ \xcd\x53\xaa\xc5\xce\x1d\x57\xac\x9b\x65\x1b\x59\xb3\xa9\x57\x99\ \x3d\x3e\x61\xb1\x58\x9c\x1a\x2c\xcc\x02\xb6\xe6\xb2\x2d\x39\x4d\ \x53\xdc\x1a\x84\x28\xf3\xdf\x08\x54\x15\x45\xc8\xb2\x0c\xef\x63\ \x32\x11\xac\x9f\x7d\xdf\x15\x11\x8c\x31\x73\x32\x88\xa2\x68\x4d\ \xdd\x61\xc1\x9a\xb2\xd0\x90\x04\x69\x02\xf6\xf8\x38\x46\x1d\x04\ \x15\xac\xb5\xa8\xcc\x8e\x4e\x15\x09\x3a\x97\xd2\x5c\xf3\x12\xc5\ \x1a\x47\x3d\xcc\xa0\x4e\x89\x7d\x8c\x4d\xea\x0d\x4c\xa4\xd4\x93\ \x3a\x3f\x9c\xf8\x7e\x76\x78\x4d\xb0\x21\x04\xcc\x2a\x45\x55\x4b\ \x59\x74\x2d\xa2\x8e\x9d\xf8\x86\xa8\xa3\x99\x8d\xd8\xe9\xe9\x69\ \xac\xb7\x4c\x4c\x4d\x30\xf2\xe5\x08\xa9\x34\x9a\x7a\x46\x9a\x89\ \xa5\xac\x91\x4b\xd0\x34\x83\x46\x9a\x70\xe4\xcb\x23\x98\x08\x1a\ \x8d\x06\x76\xea\x8b\x09\x62\x9f\xa7\xbc\xb5\xc2\xeb\x87\xdf\xe0\ \xc8\xb1\x11\x10\x20\x18\x82\x86\xab\x76\x8a\x96\xa4\xfe\xab\x89\ \x08\x21\x04\x42\x08\x73\x91\x6b\xeb\x33\x6b\x1c\x58\xc3\xc1\x8f\ \x0e\x32\xfc\xe3\x30\x85\x6a\x9e\xf4\x42\x82\x73\xde\xbd\xd7\xb3\ \xb9\xf4\x5c\x79\x73\x85\xd1\xe9\x3f\x38\xfc\xf9\x61\x48\x1d\xbd\ \xa5\x0a\xdd\x1d\x5d\x08\x82\xc1\xac\xca\x02\x34\xc6\x34\xbd\xd5\ \xda\xcb\xa2\xab\x9f\x7f\xfb\x95\xd7\xde\x7d\x95\xb7\x3e\x7c\x9b\ \xd2\x8e\x5e\xfa\x37\x56\x39\x7d\xe8\x14\x66\x43\x79\xc3\x23\x6d\ \x03\xd1\xfe\xda\xfe\x87\x6a\x49\x7b\xc2\x85\xef\xc6\x19\x3f\x31\ \x4e\x6f\xa9\x97\xa2\x2d\x52\xa4\x03\x1b\x5b\x74\x99\x78\x17\x0b\ \xc0\xb3\x2c\xbb\x2c\xa6\x6a\xb1\xac\x0a\x63\x97\xce\x33\xee\xc6\ \xe8\xbd\xa9\x44\x79\x6b\x99\xf1\xa3\x67\x99\xfc\xa2\xfe\x82\xa9\ \x0e\x0c\x9a\x34\x0d\x0f\x77\x6c\x2b\xbe\x78\xd7\x93\xbb\x6a\x6d\ \x43\x05\x34\x18\x46\xcf\x8c\xd2\x98\x9a\x41\x26\x53\x1a\x64\x78\ \xef\x57\x34\x8a\x0a\x9a\xfd\xeb\x7d\xc6\x40\x57\x5f\x0f\x85\xee\ \x1c\xf9\x42\x91\xf3\x5f\x5f\xe0\xf8\xa1\xa3\xaf\x14\xfa\x0b\x2f\ \x37\xff\xe3\xa8\x56\x73\x72\x49\x7a\x28\xf2\x7c\xf9\x8e\xca\x81\ \xce\xa1\x22\x6d\xa5\x3c\xb9\xae\x36\xea\x49\x83\xbc\xcf\xb3\x5c\ \x45\xc8\x22\x8b\x55\x35\x5c\x31\x18\x6c\x49\x64\xe6\xe2\x25\x2e\ \x9e\x9a\xa2\x31\x16\x3e\x29\xdd\x59\x7a\xca\x17\xfc\xb8\x71\x46\ \xfe\x02\x18\x0f\xa2\x8d\xe6\x63\xa5\x8b\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x13\xce\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x52\x6f\x75\x6e\x64\x65\x64\x20\x72\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x22\x3b\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x20\x20\x20\ \x20\x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x38\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\ \x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\ \x74\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x72\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x72\x65\x63\x74\x78\ \x3a\x20\x72\x78\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x69\x6e\x74\x20\x72\x65\x63\x74\x79\x3a\x20\x72\x79\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x72\x65\x63\ \x74\x57\x69\x64\x74\x68\x3a\x20\x77\x69\x64\x74\x68\x20\x2d\x20\ \x32\x2a\x72\x65\x63\x74\x78\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x72\x65\x63\ \x74\x48\x65\x69\x67\x68\x74\x3a\x20\x68\x65\x69\x67\x68\x74\x20\ \x2d\x20\x32\x2a\x72\x65\x63\x74\x79\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\ \x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x62\ \x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x66\x69\x6c\ \x6c\x53\x74\x79\x6c\x65\x3a\x22\x73\x74\x65\x65\x6c\x62\x6c\x75\ \x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\ \x68\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\ \x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\ \x6b\x65\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\ \x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x4c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\x3a\ \x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\ \x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x52\x61\x64\x69\x75\x73\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x52\x65\x63\x74\x78\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\ \x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x6e\x52\x65\x63\x74\x79\x43\x68\x61\x6e\ \x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\ \x70\x68\x61\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\ \x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x63\ \x74\x78\x20\x3d\x20\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\ \x22\x32\x64\x22\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\ \x6c\x65\x61\x72\x52\x65\x63\x74\x28\x30\x2c\x30\x2c\x63\x61\x6e\ \x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\ \x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\ \x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\ \x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\ \x6c\x53\x74\x79\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\ \x68\x61\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\x68\ \x61\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\ \x6f\x76\x65\x54\x6f\x28\x72\x65\x63\x74\x78\x2b\x72\x61\x64\x69\ \x75\x73\x2c\x72\x65\x63\x74\x79\x29\x3b\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x74\x6f\ \x70\x20\x73\x69\x64\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\ \x63\x74\x78\x2b\x72\x65\x63\x74\x57\x69\x64\x74\x68\x2d\x72\x61\ \x64\x69\x75\x73\x2c\x72\x65\x63\x74\x79\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x64\x72\x61\x77\ \x20\x74\x6f\x70\x20\x72\x69\x67\x68\x74\x20\x63\x6f\x72\x6e\x65\ \x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x61\x72\x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2b\x72\x65\ \x63\x74\x57\x69\x64\x74\x68\x2c\x72\x65\x63\x74\x79\x2c\x72\x65\ \x63\x74\x78\x2b\x72\x65\x63\x74\x57\x69\x64\x74\x68\x2c\x72\x65\ \x63\x74\x79\x2b\x72\x61\x64\x69\x75\x73\x2c\x72\x61\x64\x69\x75\ \x73\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\x63\x74\x78\ \x2b\x72\x65\x63\x74\x57\x69\x64\x74\x68\x2c\x72\x65\x63\x74\x79\ \x2b\x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x2d\x72\x61\x64\x69\ \x75\x73\x29\x3b\x20\x20\x20\x20\x2f\x2f\x20\x72\x69\x67\x68\x74\ \x20\x73\x69\x64\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x2f\x2f\x20\x64\x72\x61\x77\x20\x62\x6f\x74\x74\x6f\x6d\ \x20\x72\x69\x67\x68\x74\x20\x63\x6f\x72\x6e\x65\x72\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x61\x72\ \x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2b\x72\x65\x63\x74\x57\x69\ \x64\x74\x68\x2c\x72\x65\x63\x74\x79\x2b\x72\x65\x63\x74\x48\x65\ \x69\x67\x68\x74\x2c\x72\x65\x63\x74\x78\x2b\x72\x65\x63\x74\x57\ \x69\x64\x74\x68\x2d\x72\x61\x64\x69\x75\x73\x2c\x72\x65\x63\x74\ \x79\x2b\x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x2c\x72\x61\x64\ \x69\x75\x73\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\x63\ \x74\x78\x2b\x72\x61\x64\x69\x75\x73\x2c\x72\x65\x63\x74\x79\x2b\ \x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x29\x3b\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x62\x6f\x74\ \x74\x6f\x6d\x20\x73\x69\x64\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x64\x72\x61\x77\x20\x62\x6f\x74\ \x74\x6f\x6d\x20\x6c\x65\x66\x74\x20\x63\x6f\x72\x6e\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x61\x72\x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2c\x72\x65\x63\x74\ \x79\x2b\x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x2c\x72\x65\x63\ \x74\x78\x2c\x72\x65\x63\x74\x79\x2b\x72\x65\x63\x74\x48\x65\x69\ \x67\x68\x74\x2d\x72\x61\x64\x69\x75\x73\x2c\x72\x61\x64\x69\x75\ \x73\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\x63\x74\x78\ \x2c\x72\x65\x63\x74\x79\x2b\x72\x61\x64\x69\x75\x73\x29\x3b\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x20\x6c\x65\x66\x74\x20\x73\x69\x64\x65\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x64\x72\x61\x77\ \x20\x74\x6f\x70\x20\x6c\x65\x66\x74\x20\x63\x6f\x72\x6e\x65\x72\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x61\x72\x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2c\x72\x65\x63\ \x74\x79\x2c\x72\x65\x63\x74\x78\x2b\x72\x61\x64\x69\x75\x73\x2c\ \x72\x65\x63\x74\x79\x2c\x72\x61\x64\x69\x75\x73\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\ \x6c\x6f\x73\x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\ \x61\x73\x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\ \x6c\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\ \x6b\x65\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\ \x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\ \x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\ \x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x3b\x20\ \x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\x78\ \x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\x3b\x20\x6e\x61\x6d\ \x65\x3a\x22\x4c\x69\x6e\x65\x20\x77\x69\x64\x74\x68\x22\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\ \x20\x7b\x69\x64\x3a\x72\x78\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x35\x3b\x20\x6d\x61\x78\x3a\x33\x30\ \x3b\x20\x69\x6e\x69\x74\x3a\x31\x30\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x72\x65\x63\x74\x78\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x72\x79\ \x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\ \x35\x3b\x20\x6d\x61\x78\x3a\x33\x30\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x72\x65\x63\x74\x79\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x72\x43\x74\x72\x6c\x3b\x20\x77\x69\ \x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x30\x30\x3b\x20\x69\x6e\x69\x74\x3a\x34\x30\x3b\x20\x6e\x61\ \x6d\x65\x3a\x22\x52\x61\x64\x69\x75\x73\x22\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\ \x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\ \x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\ \x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\xad\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x4d\x61\x6b\x65\x73\x20\x73\x71\x75\ \x69\x72\x63\x6c\x65\x20\x69\x63\x6f\x6e\x20\x77\x69\x74\x68\x20\ \x63\x6c\x69\x70\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\ \x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\ \x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\ \x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\ \x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\ \x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x38\x30\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x73\x74\x72\ \x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x62\x6c\x75\x65\x22\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\ \x74\x72\x69\x6e\x67\x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\ \x22\x73\x74\x65\x65\x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x3a\x32\x0a\x20\x20\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6e\x53\ \x69\x7a\x65\x3a\x6e\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\ \x65\x61\x6c\x20\x72\x61\x64\x69\x75\x73\x3a\x72\x43\x74\x72\x6c\ \x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\x65\x3a\ \x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x70\x78\x3a\x78\x43\x74\ \x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x70\x79\x3a\ \x79\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\ \x61\x6c\x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x69\x6d\x61\x67\ \x65\x66\x69\x6c\x65\x3a\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\ \x74\x73\x2f\x71\x74\x2d\x6c\x6f\x67\x6f\x2e\x70\x6e\x67\x22\x0a\ \x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\x73\x69\ \x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x43\ \x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\x6f\x6d\x70\x6c\ \x65\x74\x65\x64\x3a\x6c\x6f\x61\x64\x49\x6d\x61\x67\x65\x28\x63\ \x61\x6e\x76\x61\x73\x2e\x69\x6d\x61\x67\x65\x66\x69\x6c\x65\x29\ \x3b\x0a\x0a\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x52\x61\x64\x69\ \x75\x73\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x4c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x6f\x6e\x4e\x53\x69\x7a\x65\x43\x68\x61\x6e\ \x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x53\x74\x72\x6f\ \x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x50\x78\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x50\x79\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x0a\x20\ \x20\x20\x20\x6f\x6e\x49\x6d\x61\x67\x65\x4c\x6f\x61\x64\x65\x64\ \x20\x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\ \x29\x3b\x0a\x0a\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\ \x20\x73\x71\x75\x63\x69\x72\x6c\x65\x28\x29\x3b\x0a\x0a\x20\x20\ \x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x71\x75\x63\x69\ \x72\x6c\x65\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x76\x61\ \x72\x20\x63\x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x67\ \x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\x22\x32\x64\x22\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x4e\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x6e\x53\x69\x7a\x65\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x76\x61\x72\x20\x52\x20\x3d\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x72\x61\x64\x69\x75\x73\x3b\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x4e\x3d\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4e\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x4d\x3d\x4e\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x69\x66\x20\x28\x4e\x3e\x31\x30\x30\x29\x20\ \x4d\x3d\x31\x30\x30\x3b\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\ \x28\x4e\x3c\x30\x2e\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\ \x29\x20\x4d\x3d\x30\x2e\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\ \x31\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\ \x76\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\x63\x61\x6e\ \x76\x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\ \x20\x22\x67\x72\x61\x79\x22\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x66\x69\x6c\x6c\x52\x65\x63\x74\x28\x30\x2c\x20\x30\ \x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\ \x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\ \x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\x74\ \x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3b\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\ \x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x69\ \x20\x3d\x20\x30\x2c\x20\x78\x2c\x20\x79\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x66\x6f\x72\x20\x28\x69\x3d\x30\x3b\x20\x69\x3c\x28\x32\ \x2a\x52\x2b\x31\x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x78\x20\x3d\x20\x4d\x61\x74\x68\x2e\x72\ \x6f\x75\x6e\x64\x28\x69\x2d\x52\x29\x20\x2b\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x70\x78\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x79\x20\x3d\x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x4d\ \x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\ \x28\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x52\x2c\x4d\x29\x2d\x4d\ \x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\ \x28\x69\x2d\x52\x29\x2c\x4d\x29\x29\x2c\x31\x2f\x4d\x29\x29\x20\ \x2b\x20\x63\x61\x6e\x76\x61\x73\x2e\x70\x79\x3b\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x20\x3d\x3d\x20\ \x30\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x78\x2c\x20\x79\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\ \x65\x54\x6f\x28\x78\x2c\x20\x79\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x69\ \x3d\x28\x32\x2a\x52\x29\x3b\x20\x69\x3c\x28\x34\x2a\x52\x2b\x31\ \x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x78\x20\x3d\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x33\ \x2a\x52\x2d\x69\x29\x2b\x63\x61\x6e\x76\x61\x73\x2e\x70\x78\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\x20\x4d\x61\x74\ \x68\x2e\x72\x6f\x75\x6e\x64\x28\x2d\x4d\x61\x74\x68\x2e\x70\x6f\ \x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4d\x61\x74\x68\x2e\ \x70\x6f\x77\x28\x52\x2c\x4d\x29\x2d\x4d\x61\x74\x68\x2e\x70\x6f\ \x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x33\x2a\x52\x2d\x69\ \x29\x2c\x4d\x29\x29\x2c\x31\x2f\x4d\x29\x29\x20\x2b\x20\x63\x61\ \x6e\x76\x61\x73\x2e\x70\x79\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x78\x2c\x20\x79\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x63\x6c\x6f\x73\x65\x50\x61\x74\x68\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\ \x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\ \x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x66\ \x69\x6c\x6c\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\ \x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x69\ \x70\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x64\x72\x61\x77\x49\x6d\x61\x67\x65\x28\x63\x61\x6e\x76\x61\x73\ \x2e\x69\x6d\x61\x67\x65\x66\x69\x6c\x65\x2c\x20\x30\x2c\x20\x30\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\ \x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x65\x73\x74\x6f\ \x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\ \x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\ \x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\ \x7b\x69\x64\x3a\x6e\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\ \x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\ \x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\ \x69\x6e\x69\x74\x3a\x34\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x4e\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x72\x43\x74\x72\x6c\x3b\x20\x77\x69\ \x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x32\x30\x3b\x20\x6d\x69\x6e\x3a\x33\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x38\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x30\x30\x3b\x20\x6e\ \x61\x6d\x65\x3a\x22\x52\x61\x64\x69\x75\x73\x22\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\ \x69\x64\x3a\x78\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\ \x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\ \x6d\x69\x6e\x3a\x35\x30\x3b\x20\x6d\x61\x78\x3a\x33\x30\x30\x3b\ \x20\x69\x6e\x69\x74\x3a\x31\x38\x30\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x58\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x79\x43\x74\x72\x6c\x3b\ \x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x33\x30\x3b\x20\x6d\ \x61\x78\x3a\x33\x30\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\x32\x30\ \x3b\x20\x6e\x61\x6d\x65\x3a\x22\x59\x22\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\ \x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\ \x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\ \x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\x20\ \x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\x6c\ \x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x12\x78\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x42\x65\x7a\x69\x65\x72\x20\x43\x75\ \x72\x76\x65\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\ \x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\ \x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\ \x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\ \x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x38\x30\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x73\x74\x72\ \x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x72\x65\x64\x22\x0a\x20\ \x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\ \x72\x69\x6e\x67\x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\ \x72\x65\x64\x22\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\ \x68\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\x74\ \x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\x65\x3a\x74\ \x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\x70\x68\x61\x3a\x61\x6c\ \x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\ \x6c\x20\x73\x63\x61\x6c\x65\x58\x20\x3a\x20\x73\x63\x61\x6c\x65\ \x58\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\ \x73\x63\x61\x6c\x65\x59\x20\x3a\x20\x73\x63\x61\x6c\x65\x59\x43\ \x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\ \x74\x61\x74\x65\x20\x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x61\x6e\ \x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\ \x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x58\x20\x7b\x20\x53\x70\x72\ \x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\ \x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\ \x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\ \x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x59\x20\x7b\x20\ \x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\ \x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\ \x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\ \x69\x74\x65\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x42\x65\x68\ \x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x72\x6f\x74\x61\x74\x65\x20\ \x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\ \x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\ \x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\ \x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\ \x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x0a\x20\x20\x20\x20\x6f\x6e\ \x4c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\x61\x6e\x67\ \x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\ \x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\ \x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\ \x68\x61\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x53\x63\x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\ \x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x6f\x6e\x53\x63\x61\x6c\x65\x59\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x6f\x6e\x52\x6f\x74\x61\x74\x65\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\ \x6e\x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\ \x63\x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x67\x65\x74\ \x43\x6f\x6e\x74\x65\x78\x74\x28\x27\x32\x64\x27\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x65\x61\x72\ \x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\ \x20\x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\ \x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\ \x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\ \x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\ \x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\ \x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x73\x63\x61\x6c\x65\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x73\x63\x61\x6c\x65\x58\x2c\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x73\x63\x61\x6c\x65\x59\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x72\x6f\x74\x61\x74\x65\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x72\x6f\x74\x61\x74\x65\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\ \x28\x37\x35\x2c\x34\x30\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x62\x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\ \x28\x37\x35\x2c\x33\x37\x2c\x37\x30\x2c\x32\x35\x2c\x35\x30\x2c\ \x32\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\ \x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x32\x30\x2c\ \x32\x35\x2c\x32\x30\x2c\x36\x32\x2e\x35\x2c\x32\x30\x2c\x36\x32\ \x2e\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\ \x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x32\x30\x2c\ \x38\x30\x2c\x34\x30\x2c\x31\x30\x32\x2c\x37\x35\x2c\x31\x32\x30\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\x65\x7a\ \x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x31\x31\x30\x2c\x31\ \x30\x32\x2c\x31\x33\x30\x2c\x38\x30\x2c\x31\x33\x30\x2c\x36\x32\ \x2e\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\ \x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x31\x33\x30\ \x2c\x36\x32\x2e\x35\x2c\x31\x33\x30\x2c\x32\x35\x2c\x31\x30\x30\ \x2c\x32\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x62\x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x38\x35\ \x2c\x32\x35\x2c\x37\x35\x2c\x33\x37\x2c\x37\x35\x2c\x34\x30\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x6f\x73\ \x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\ \x28\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\ \x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x65\x73\ \x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\ \x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x68\x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\ \x72\x20\x7b\x69\x64\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\ \x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\ \x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\ \x3b\x20\x6e\x61\x6d\x65\x3a\x22\x4c\x69\x6e\x65\x20\x77\x69\x64\ \x74\x68\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x58\ \x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\ \x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\ \x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\ \x58\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\ \x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x59\x43\ \x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\ \x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\ \x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\x59\ \x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\ \x64\x65\x72\x20\x7b\x69\x64\x3a\x72\x6f\x74\x61\x74\x65\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\ \x20\x6d\x61\x78\x3a\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x3b\x20\ \x69\x6e\x69\x74\x3a\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x52\x6f\ \x74\x61\x74\x65\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x61\x6c\x70\x68\ \x61\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\ \x3a\x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\x6c\x70\x68\x61\x22\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\x80\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x51\x75\x61\x64\x72\x61\x74\x69\x63\ \x20\x43\x75\x72\x76\x65\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\ \x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\ \x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x77\ \x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x38\x30\x0a\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\ \x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x73\x74\x65\ \x65\x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x66\x69\ \x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x79\x65\x6c\x6c\x6f\x77\x22\ \x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3a\x6c\x69\ \x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\ \x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\x74\x72\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\ \x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\x65\x3a\x74\x72\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\ \x65\x61\x6c\x20\x61\x6c\x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\ \x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\ \x61\x6c\x65\x58\x20\x3a\x20\x73\x63\x61\x6c\x65\x58\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\ \x65\x59\x20\x3a\x20\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\x74\x61\x74\x65\ \x20\x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\ \x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x4c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\ \x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\ \x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\ \x69\x6c\x6c\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\ \x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x53\x63\ \x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\ \x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x6f\x6e\x53\x63\x61\x6c\x65\x59\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x52\x6f\x74\x61\x74\x65\ \x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\ \x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x42\x65\ \x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x58\ \x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\ \x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\ \x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\ \x66\x69\x6e\x69\x74\x65\x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\ \x6c\x65\x59\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\ \x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\ \x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\ \x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x72\ \x6f\x74\x61\x74\x65\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\ \x3a\x20\x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\ \x32\x3b\x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x63\ \x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\ \x6f\x6e\x74\x65\x78\x74\x28\x27\x32\x64\x27\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x63\x6c\x65\x61\x72\x52\x65\x63\x74\x28\x30\x2c\x20\x30\ \x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x67\x6c\ \x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\ \x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\x72\ \x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\ \x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\ \x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x73\x63\x61\x6c\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x73\x63\x61\ \x6c\x65\x58\x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\ \x65\x59\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x72\x6f\x74\x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\ \x2e\x72\x6f\x74\x61\x74\x65\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\x65\x67\x69\x6e\x50\ \x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x37\x35\x2c\x32\ \x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\ \x54\x6f\x28\x32\x35\x2c\x32\x35\x2c\x32\x35\x2c\x36\x32\x2e\x35\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\ \x6f\x28\x32\x35\x2c\x31\x30\x30\x2c\x35\x30\x2c\x31\x30\x30\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\ \x28\x35\x30\x2c\x31\x32\x30\x2c\x33\x30\x2c\x31\x32\x35\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x71\ \x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x28\ \x36\x30\x2c\x31\x32\x30\x2c\x36\x35\x2c\x31\x30\x30\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x71\x75\ \x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x28\x31\ \x32\x35\x2c\x31\x30\x30\x2c\x31\x32\x35\x2c\x36\x32\x2e\x35\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\ \x28\x31\x32\x35\x2c\x32\x35\x2c\x37\x35\x2c\x32\x35\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\ \x6f\x73\x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\ \x61\x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\ \x74\x72\x6f\x6b\x65\x28\x29\x3b\x0a\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\x31\x5d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\ \x74\x79\x6c\x65\x3d\x22\x67\x72\x65\x65\x6e\x22\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x6f\x6e\x74\ \x20\x3d\x20\x22\x42\x6f\x6c\x64\x20\x31\x35\x70\x78\x22\x3b\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\ \x69\x6c\x6c\x54\x65\x78\x74\x28\x22\x51\x4d\x4c\xe9\x85\xb7\xe6\ \xaf\x99\xe4\xba\x86\x22\x2c\x20\x33\x30\x2c\x20\x36\x30\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\ \x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\ \x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x75\ \x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ \x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x6c\x69\ \x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\ \x3b\x20\x69\x6e\x69\x74\x3a\x32\x3b\x20\x6e\x61\x6d\x65\x3a\x22\ \x4c\x69\x6e\x65\x20\x77\x69\x64\x74\x68\x22\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\ \x64\x3a\x73\x63\x61\x6c\x65\x58\x43\x74\x72\x6c\x3b\x20\x77\x69\ \x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\ \x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\ \x65\x3a\x22\x53\x63\x61\x6c\x65\x58\x22\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\ \x3a\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\ \x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\ \x3a\x22\x53\x63\x61\x6c\x65\x59\x22\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\ \x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\ \x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\ \x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x4d\x61\x74\ \x68\x2e\x50\x49\x2a\x32\x3b\x20\x69\x6e\x69\x74\x3a\x30\x3b\x20\ \x6e\x61\x6d\x65\x3a\x22\x52\x6f\x74\x61\x74\x65\x22\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\ \x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\ \x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ " qt_resource_name = b"\ \x00\x06\ \x06\x98\x5c\x83\ \x00\x63\ \x00\x61\x00\x6e\x00\x76\x00\x61\x00\x73\ \x00\x10\ \x0d\xc6\xb9\xaf\ \x00\x71\ \x00\x75\x00\x61\x00\x64\x00\x72\x00\x61\x00\x74\x00\x69\x00\x63\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x54\x00\x6f\ \x00\x0b\ \x0c\xbb\x68\x25\ \x00\x62\ \x00\x65\x00\x7a\x00\x69\x00\x65\x00\x72\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\ \x00\x04\ \x00\x06\xa3\x00\ \x00\x63\ \x00\x6c\x00\x69\x00\x70\ \x00\x0b\ \x0a\x49\x53\x24\ \x00\x72\ \x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x65\x00\x64\x00\x72\x00\x65\x00\x63\x00\x74\ \x00\x08\ \x06\x5a\xc8\xf3\ \x00\x63\ \x00\x6f\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x74\x00\x73\ \x00\x08\ \x08\xc0\x89\x65\ \x00\x73\ \x00\x71\x00\x75\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\ \x00\x05\ \x00\x7a\x40\x25\ \x00\x73\ \x00\x6d\x00\x69\x00\x6c\x00\x65\ \x00\x0a\ \x0c\x8b\x68\x9c\ \x00\x63\ \x00\x61\x00\x6e\x00\x76\x00\x61\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x05\ \x00\x7a\xfd\xc2\ \x00\x74\ \x00\x69\x00\x67\x00\x65\x00\x72\ \x00\x09\ \x0d\xc5\xa5\xdc\ \x00\x74\ \x00\x69\x00\x67\x00\x65\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x0f\xdc\x5a\x53\ \x00\x74\ \x00\x69\x00\x67\x00\x65\x00\x72\x00\x2e\x00\x6a\x00\x73\ \x00\x09\ \x00\x28\xa4\xbc\ \x00\x73\ \x00\x6d\x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x09\x79\xd6\x47\ \x00\x73\ \x00\x71\x00\x75\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x09\x79\xd9\x3c\ \x00\x73\ \x00\x71\x00\x75\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0b\ \x08\x33\x9c\x3c\ \x00\x54\ \x00\x6f\x00\x6f\x00\x6c\x00\x42\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x0b\x68\x71\x5c\ \x00\x42\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x0a\xce\x15\xdc\ \x00\x53\ \x00\x6c\x00\x69\x00\x64\x00\x65\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x03\xe4\x35\x1c\ \x00\x54\ \x00\x69\x00\x74\x00\x6c\x00\x65\x00\x42\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0d\ \x0b\xd7\x93\x5c\ \x00\x53\ \x00\x63\x00\x72\x00\x6f\x00\x6c\x00\x6c\x00\x42\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0b\ \x06\x33\x25\x47\ \x00\x73\ \x00\x74\x00\x72\x00\x69\x00\x70\x00\x65\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x12\ \x01\x4a\xa3\xa7\ \x00\x62\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\ \x00\x67\ \x00\x0c\ \x07\xe4\x32\x27\ \x00\x74\ \x00\x69\x00\x74\x00\x6c\x00\x65\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0b\x6c\x6e\x27\ \x00\x62\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x07\xa4\x7e\x39\ \x00\x74\ \x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x63\x00\x69\ \x00\x0c\ \x05\x67\xce\xf9\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x63\x00\x69\ \x00\x09\ \x06\xa6\x8b\x27\ \x00\x67\ \x00\x6c\x00\x6f\x00\x73\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x07\xa4\x70\xe7\ \x00\x74\ \x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0c\xe2\x23\xc7\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x07\xe4\x3c\xf9\ \x00\x74\ \x00\x69\x00\x74\x00\x6c\x00\x65\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x73\x00\x63\x00\x69\ \x00\x08\ \x0c\x07\x58\x47\ \x00\x71\ \x00\x75\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x67\xc0\x27\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x03\x33\xc6\x9c\ \x00\x72\ \x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x65\x00\x64\x00\x72\x00\x65\x00\x63\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x03\x03\x5d\x7c\ \x00\x63\ \x00\x6c\x00\x69\x00\x70\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0f\ \x08\x41\x22\xfc\ \x00\x62\ \x00\x65\x00\x7a\x00\x69\x00\x65\x00\x72\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x14\ \x09\xad\xdd\x5c\ \x00\x71\ \x00\x75\x00\x61\x00\x64\x00\x72\x00\x61\x00\x74\x00\x69\x00\x63\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x54\x00\x6f\x00\x2e\ \x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\ \x00\x00\x00\x54\x00\x02\x00\x00\x00\x01\x00\x00\x00\x26\ \x00\x00\x00\xaa\x00\x02\x00\x00\x00\x01\x00\x00\x00\x25\ \x00\x00\x00\xd4\x00\x02\x00\x00\x00\x02\x00\x00\x00\x23\ \x00\x00\x00\x7e\x00\x02\x00\x00\x00\x07\x00\x00\x00\x10\ \x00\x00\x00\x94\x00\x02\x00\x00\x00\x02\x00\x00\x00\x0e\ \x00\x00\x00\x62\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ \x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x38\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0c\ \x00\x00\x00\x12\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0b\ \x00\x00\x03\xe6\x00\x00\x00\x00\x00\x01\x00\x02\xbe\xaa\ \x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x02\xac\x2e\ \x00\x00\x03\x88\x00\x00\x00\x00\x00\x01\x00\x02\x84\xab\ \x00\x00\x01\x2a\x00\x00\x00\x00\x00\x01\x00\x01\xa0\xc0\ \x00\x00\x01\x48\x00\x00\x00\x00\x00\x01\x00\x01\xa3\xc7\ \x00\x00\x01\xb6\x00\x00\x00\x00\x00\x01\x00\x01\xdd\xfb\ \x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x01\xe9\x09\ \x00\x00\x01\xf0\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x17\ \x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x01\xb8\xce\ \x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00\x01\xce\xac\ \x00\x00\x01\x82\x00\x00\x00\x00\x00\x01\x00\x01\xc2\xd6\ \x00\x00\x02\x02\x00\x00\x00\x00\x00\x01\x00\x02\x44\xec\ \x00\x00\x02\x3e\x00\x00\x00\x00\x00\x01\x00\x02\x53\x34\ \x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x02\x7f\x20\ \x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x02\x5d\xa6\ \x00\x00\x02\x22\x00\x00\x00\x00\x00\x01\x00\x02\x52\x2f\ \x00\x00\x02\xe0\x00\x00\x00\x00\x00\x01\x00\x02\x5e\x01\ \x00\x00\x02\xf8\x00\x00\x00\x00\x00\x01\x00\x02\x62\xd9\ \x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x02\x5d\x4b\ \x00\x00\x02\x68\x00\x00\x00\x00\x00\x01\x00\x02\x55\x73\ \x00\x00\x03\x36\x00\x00\x00\x00\x00\x01\x00\x02\x75\x80\ \x00\x00\x02\x86\x00\x00\x00\x00\x00\x01\x00\x02\x5b\x13\ \x00\x00\x03\x54\x00\x00\x00\x00\x00\x01\x00\x02\x75\xdb\ \x00\x00\x03\x1a\x00\x01\x00\x00\x00\x01\x00\x02\x6c\xd3\ \x00\x00\x00\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x01\ \x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x05\ \x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x01\x8c\xf5\ \x00\x00\x03\xac\x00\x00\x00\x00\x00\x01\x00\x02\x98\x7d\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/canvas/clip/0000755000076500000240000000000012613140041020402 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/clip/clip.qml0000644000076500000240000001165512613140041022054 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Makes squircle icon with clip"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"blue" property string fillStyle:"steelblue" property int lineWidth:2 property int nSize:nCtrl.value property real radius:rCtrl.value property bool fill:true property bool stroke:false property real px:xCtrl.value property real py:yCtrl.value property real alpha:alphaCtrl.value property string imagefile:"../contents/qt-logo.png" antialiasing: true Component.onCompleted:loadImage(canvas.imagefile); onAlphaChanged:requestPaint(); onRadiusChanged:requestPaint(); onLineWidthChanged:requestPaint(); onNSizeChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onPxChanged:requestPaint(); onPyChanged:requestPaint(); onImageLoaded : requestPaint(); onPaint: squcirle(); function squcirle() { var ctx = canvas.getContext("2d"); var N = canvas.nSize; var R = canvas.radius; N=Math.abs(N); var M=N; if (N>100) M=100; if (N<0.00000000001) M=0.00000000001; ctx.save(); ctx.globalAlpha =canvas.alpha; ctx.fillStyle = "gray"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.beginPath(); var i = 0, x, y; for (i=0; i<(2*R+1); i++){ x = Math.round(i-R) + canvas.px; y = Math.round(Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(i-R),M)),1/M)) + canvas.py; if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } for (i=(2*R); i<(4*R+1); i++){ x =Math.round(3*R-i)+canvas.px; y = Math.round(-Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(3*R-i),M)),1/M)) + canvas.py; ctx.lineTo(x, y); } ctx.closePath(); if (canvas.stroke) { ctx.stroke(); } if (canvas.fill) { ctx.fill(); } //! [0] ctx.clip(); ctx.drawImage(canvas.imagefile, 0, 0); //! [0] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:nCtrl; width:300; height:20; min:1; max:10; init:4; name:"N"} Slider {id:rCtrl; width:300; height:20; min:30; max:180; init:100; name:"Radius"} Slider {id:xCtrl; width:300; height:20; min:50; max:300; init:180; name:"X"} Slider {id:yCtrl; width:300; height:20; min:30; max:300; init:220; name:"Y"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/canvas/contents/0000755000076500000240000000000012613140041021310 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/contents/Button.qml0000644000076500000240000000572212613140041023304 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 Item { id: container signal clicked property string text width: buttonText.width + 28 height: buttonText.height + 14 BorderImage { id: buttonImage source: "images/toolbutton.sci" width: container.width - 10 height: container.height } BorderImage { id: pressed opacity: 0 source: "images/toolbutton.sci" width: container.width - 10 height: container.height } MouseArea { id: mouseRegion anchors.fill: buttonImage onClicked: { container.clicked(); } } Text { id: buttonText color: "white" anchors.centerIn: buttonImage font.bold: true font.pointSize: 15 text: container.text style: Text.Raised styleColor: "black" } states: [ State { name: "Pressed" when: mouseRegion.pressed == true PropertyChanges { target: pressed; opacity: 1 } } ] } PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/0000755000076500000240000000000012613140041022555 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/button-pressed.png0000644000076500000240000000107312613140041026242 0ustar philstaff00000000000000‰PNG  IHDR^ÙÚ‚”sRGB®ÎébKGDÿ‡Ì¿ pHYs!›ò3tIMEÙ.!Ä3tEXtCommentCreated with GIMPWšIDATXÃÕ×½nÔPàoîÞì&«h¡áM"Äñ˜©hBhyz$ BÁÏm²¾ëý³D {*[wF>çøŒg—Š+?ý6S)º=}'žÈü0+#ÏÅÎq[Iб/¾ùFUž9÷Áut $yéOå{ä™cçÞšZªjn펉 œù,Ó÷ÎÄÔ²õ¦YE¶páµJ†+SK‹–‚mJ¹@6—$X¶zÓÈ!,ÍëwÐz›Ü݇IG#º ¾¶M(µ‹º¶ž®/:£ø¡Xcî«Züµ¹ |k›¾Ò)ógi­|»;·ú[Ã’D >:A vÁ“vUì ææ¢ü¯§÷«Þ½kÖõIµG!¶ ›ôÔZÕ{µ¼UÓ6«M­9v㖵衶*÷ª]e—èJõ"6Ö(3ÅÐxvì=&6é‡x@vHŠ¢’¨QCR a ËÌz_³ÜG«ý?–áØ(¿«òÂıÜ7w&ûèW à޵˯€,8õÊ7#qiL9Òë̘ªÌLˆ§2#7qݱ}rè^z«G×F˜IEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/button.png0000644000076500000240000000106412613140041024577 0ustar philstaff00000000000000‰PNG  IHDR^ÙÚ‚”sRGB®ÎébKGDÿ‡Ì¿ pHYs!›ò3tIMEÙ-‘ ëÏtEXtCommentCreated with GIMPW“IDATXÃÕ–»NÃ0†?'Nz‘€‰7a@b 11ð¤,0 6Ô`ae)ˆ–*MBíÃK“¦­!!ûxðåØÒç“?ÇGM”¿,fh˜ƒŒ <·ä$$êʘ{&Ìj·rTj`0sÊï2Sê•¡<ðÈO‰­º€”ȶq€s®ùPDL0X,Á–¤n¶öýwk£W+Ë3chP$ =¥úUëÃ#õ‡ªž»+ìfÌ¥PÆ ]¸W-lëØÚ·@X®ëµ¶L+B›ñ’Þ~§›³î9)¡7ƒªÛ·S-¡Ð™õóö;-;Æf vq!]¡[‡óú®ZËÆ]øÝ¦AÈÉXy]é_ä¤^ÁëfŸ–/¬aªVÈ<‹¼)ûÍ[ø:Ï+@·•ëº(1CpVõÝw8$ZÃ`Èö<ê®%ʘQQ˜å\pGˆÁz !Ð ¸dI€ŽYp<±ÜS¹”_FœqË 1jÊ'¹ wÊW­¨zç¼:AM¾ùbA^Æ®[HÌ1‡üèÑìêBûÏÂIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/default.svg0000644000076500000240000001644212613140041024731 0ustar philstaff00000000000000 image/svg+xml weather-clear January 2006 Ryan Collier (pseudo) http://www.tango-project.org http://www.pseudocode.org weather applet notification Garrett LeSage PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/gloss.png0000644000076500000240000000232412613140041024413 0ustar philstaff00000000000000‰PNG  IHDROOª4˜†sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÙË’¿tTIDATxÚí\ÙR1l­—`Ìmã¹øÿ/ËGxòàqP ­VÇèXª(\®•½jM÷ôÌ =á8Hûñ{êu‰yPJ¡Å1ÐïL7o{O‹SóÌkc爨EGÃÌ¢HØy€À z÷5‰ã0‰Sר J*GÄ97„ÉÚ ê‘çC9×¢”,ªú‚h¥sMGí¦¦Úµ‡ „€ï¤ø‰Ò¥At=£È.§ÞŶÃàh`ÕÏ.“LŽI©H”h‡)M³Úœ1‚ªÈpÃY+„yÎúÙe’i¢îÕ‘œ MÕÒ¨úÙ¤mŽffޤ!ÞÖŠù>Óª²†´Væ-2Ï´*>Ѳ¤J#ǦýÇÀe’kéÖuBt+Vï|œÙʳR»ÁS‹Ê1Ï)WSÙ6ôáMi‹‘Ò{Ö<ø `ïb¦@,åæÚa"²£ˆH1x?œŒnrêq ý³%çÍÝSè÷y½VZéqà7€­åñÐg]r5OµÛ) iQ˜k×KQMôù× àìÇ0JP'Wä‹1F9– îY ¯Ö­j‘ïl—r®<øàKÊQd’¢„ävp=9Ï«i¯%”¬‰CzKK±ï zâÁ¶æ–A¼[hÛìàçmZV¾g¯m«Z™7Wr §íŒn<¸iØbd‰D‘sD´b[ó`S‰rÅ“ØÉŽÄÀWŽÄQ:Z$牟»bGÖÄgMs,*&‚Åt9Ûé?MoÄ»™Hl…âÞ 9Ê@^²ÙÞrÝÜU“À/zšAp84Z˘äL@l¶wš6Öl‚ÖɶÑxÆ™zÏ™zh­~nóo1í´ÞñÏ¥…ÖU*”æÁ³ÐúеQ§uû²(ð,´Þr¶Þ8ª˜lïE‚gé1^øÆÚxV¨ÒÀâÁ3@\kü\Ø\çiI5Hé/œ\P… }¿ž%Á<0ˆf)X¯“¼0õÙ¥?xF‹l‹cÇûâÛ䌑¸çÙ:Ö\JðŒÄòÈ ®B#ñÓ‚g€¸a*ï ³m’…}âÞÎæÌšëž½ì;ÍÐZ'y! ÞàxØóf*óvðÜ žNˆ½àíøôÈ ŒÂ+pl΢ƒg°_X W¶q î¼Xwðâ}ák/ÀŽ]}ôÑG}ôÑG}ôÑGãàì^QÒ.ÁIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/lineedit.png0000644000076500000240000000260712613140041025065 0ustar philstaff00000000000000‰PNG  IHDR,&¿ygsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ*g?…–tEXtCommentCreated with GIMPWâIDATXÃí™Ûk\UÅûrÎL&“Û43I&öõRªö¢¢/£ú$BE}SŸ‹à“TÿýÄ•¢/‚—*úPƒ ´Z/µµj­iÒÆ4éäÌ9ûû|˜LLl5IIšûÁæÀÌ>gÖ^{íµÏ^c˜W[^®l«(ßÚG¾?‡i³š ׺\sþô8gþN±¿}xðžÁDZŒ€j÷@ÉnrïìzzW­tK A2¡‘e¤.Å©ÃZ»¬4Æüç÷ª:÷LYpO(ŠÈƒQÙ‘sœ:r’Ï¾r_çÆî7ïyioÍÇ–z’¥sª@WW‘æPιgq>`UŃª""Œ]e4;GÏ@_àcgùõý_†½-ÚG·>±¹æ½eòìLÅ<}ß3ìÜE¹¯Œ·~Q¶VºD„ŸÆNòñW‡øàÛ‘›aàö ãÇÏÕÜÆC#Û÷m'kdÌrà±—¸ó½tt‘F˲å°TP-´Ø_]¾=›öPŠ7ðÙWÄ(£{¨Œ­l)cÔñç…Iöݽ۪·|@Œ@¬`´©¹ +ÚŒ¢h¹k«!ŠD`bÃ;`÷à^’É¢/TÚIÒ:~̰»'¨»Üì8£¿‘³«*ƒ²iL)¹\LmKO?ú„öþN¼”¬!tº¹ihÎúJ³¼Ë-[Ǫºdiõ]p(š†ºª8õD.‡ÏHêÓÓä}®igšÚIJ”Ë/ ÀÕØZ«ß•ú2\Î’%3ÄŧyÀâ½Ä `Å6§Åò¦­iÞ¹hÉ–[‹=ϹUÅ{UCrqªi…‹N­„e³»šeW‚5¼žÀ]ÃÆºë ðº×ð?ÁëÖ·†×=ÃÆk¼ŒÌ£xM€Íߪ[WUÅrÕ À7ÿ/_W>¼î6Æâ‰xÝz`×Ó<ã©â8× !¤dYcÞîÆ\ ±V»œª‚5(‚3Ž4 Xk±"ÍSªÅÎW¬›eY³©W™=>a±Xœ,̶æ²-9MSÜ„(óßTEȲ ïc2¬Ÿ}ߌ1s2ˆ¢hMÝaÁš²Ðiöø8F¬µ¨ÌŽN :—Ò\óÅG=Ì N‰}ŒMê L¤Ô“:?œø~vxM°!Ì*EUKYt-¢Žø†¨£™Øééi¬·LLM0òå©4šzFš‰¥¬‘KÐ4ƒFšpäË#˜vê‹ bŸ§¼µÂë‡ßàȱ ‚†«vŠ–¤þ«‰!Bs‘kë3kXÃÁ2üã0…jžôB‚s޽׳¹ô\ys…Ñé?8üùaH½¥ Ý]‚Á¬Ê4Æ4½ÕÚË¢«Ÿû•×Þ}•·>|›ÒŽ^ú7V9}èfCyÃ#mÑþÚþ‡jI{Â…ïÆ?1No©—¢-R¤™x À³,»,¦j±¬ c—Î3îÆè½©Dyk™ñ£g™ü¢þ‚© š4 wl+¾xד»jmC4FόҘšA&SdxïW4Š šýë}Æ@W_…îùB‘ó__àø¡£¯ú /7ÿã¨VsrIz(ò|ùŽÊΡ"m¥<¹®6êIƒ¼Ï³\EÈ"‹U5\1lIdæâ%.žš¢1>)ÝYzÊü¸qFþ¢æc¥‹IEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/lineedit.sci0000644000076500000240000000012712613140041025052 0ustar philstaff00000000000000border.left: 10 border.top: 10 border.bottom: 10 border.right: 10 source: lineedit.png PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/quit.png0000644000076500000240000000450112613140041024245 0ustar philstaff00000000000000‰PNG  IHDR**ÅÃÉ[sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ/•ô~ótEXtCommentCreated with GIMPWœIDATXÃíØËkÉðoõhf¤éé׌4ï‡Þ¶%?Ö"x/YYX‘Ü–`È?`̲çÜBbr98à@r2ä’Óö#,¯¬@bX­¤ÑŒç©yµ¦»§»§»*‡íÅÖëä\ÐŒ˜GÕ‡_ýê÷+¼ïÇûñ?€tóEpŽ\X\ü<“Ͳµµܹ€ùb‰Dš››ûb€S‡ï,ȥť»“ÁÉß]¹rÕjµÏçŠõz}û]‘³ùü׫««ŠišK’¬v:ï %‹ wƒÁÀýkWW‰F‰(888(d³Ùb£Ñ8V„T*‘ܼvíj:7; Q”Ðn·×%I:ë;q»ççïƒÁû««W ñÐ4 “S“ˆD£(•J…l&[l4φ]]]½îóù¯\¹’H¦Rèi˜šš„,ËhµÛë¢(ªÝnwã¼P2?7w7Þ_YYχ õû ŒÂ¶m𡢑J¥R!“É›Íæ‰Ø•••뺮uyùR$•N£Ô‡ë:°-!>I’ÑétÖAP{½ÞÆY¡\6“ýÕäääo®^]ÏóèõÁÀÀ{‰N£\>»¶¶öCUU¿\^^–Òé4TU…ã¸`ŒR Û²À aH’„n·»Î󼦪êã³@ŸÏ÷—Å……©l.‡^O…ë¸ ` #èxpÓÑ(Jår!N_Ã~øá‡Ÿþmii‰Ïd2P»]¸Ž ÆÆØøu8´¡( !(•J7 Ãøë4èÀ4ÍÃáð¶pb,6Ó4áº.(õŒ1P`ŒF£(—Ë…d2YlµZÛpëÖ­B£Ñx´°°Èf³èt:p` ŒÑÔ{¢€~¿gÏžUÆÇ^¼©ˆ¿µŒ¤’ɯ—––Óù|ÝvCê‚B(¥ã/ʲ Ã0°½½©©©_„ÃaõðððÑüü<¢(0 [[[=Ó4?Õ4mó¢zý«ëúC˲n³Ù,4Mó FåfT(¥ãss\†‘ˆÃ0°µµÕðY«ÕúꬋûÎy¡ÐuÃÃRJÅL&]×á8Ž=ê•J¥`Ì£ Ì¥Pï°m?Û¶'|¾ŸÖjµ¿Ÿ÷Žyî!BÖï÷Aà>úè#ìííaè8àØËïw2€C$A­VC¥RE(4ùóR¹üð¼k¾ÓÅU’åB8I’Ðl6aY(¥p)}­˜S ø&&0==ƒn§—ºÃn·ûÕ»¬yîˆæs¹;Ó|píê5ƒA4 p£&p<À8/žà÷û‘ÉdðíÎJu˲oiý~ù<ëž+GsÙÜËòá0v«Žpà8B|ã®EȈ;ú›R ]×1?7×¥a­ßÿl0< _84ŸÏß±-ëÁõk7À‡y´[¯ì Çyµ4xkŒöFt]ÇÜì,c¢mÛ· Ã83öLÐÙÙÙŸY¶õàÆõ„óh·ÚãÚéA8€ùÙY˜– ÇvÀq^´9â=` †n ÿXß™–õ§×op¡ÐËHBÀqÜø5 ™Lâñã€RŠT*Ë´FŸ   ”a`ÈçgÁpvì‰ÐL&ó©mÛþàƒ&xžG§ÕÀ@àóùÆóûýH¦RØßÛG½Þ º¦“x,Y‘aYæk)@c. ÓD>Ÿc‡Cû¶®ë'bß M&“ŸPJÿzóæÍÏóèv» x5Š^„ü~?âÉö÷v±»·W9l.ÇcñUkÕB4…$I0- àç¥ 0˜Èå²à8N´í“±o„Æb±q÷hmmMày½^Œ1ÂÁǽÌI¿ßx"Žâþ>v÷ö*Ífs @³ÛënÇãñâ‹j¥F!J,ËúNõöJ¸išÈdÒ db„ÕÞˆ}TšœœÜ¼té²N§Ñi÷@Ùñ½óeÙ ˆÅcrw¯Òh4Ö4'ét:Û‰X¢Xyñ¢‰F!Š"†Ã!8Ž871J˲°¸8Û¶Å~¿ÿK˲þ`pÔV"Š=0ŸðS!H²Ë4G>/Çü~?fffppp€o¿­ÔõׯbãñD±ò¢RˆNG!,ËU4o.ŸÏY–Ðn·Q,Aùµ¦i_âe¿xûÖ÷ûýÇa>¬vºÝuQ” (2lÛw™ééi”J%ìììTêõ7#_Å&‰â‹Ê( D¶mƒÀCF" úý>ž?ÇqîU*•ß~yâa:::Ú ‚Úív×%Y‚,Ëp]QïŸøæ›o*µZíDäñhwÚÛ‰Db·R©¦§§‰(ŠpŠ"CÓ4<þá}¯\.ÿþMÈSËÓÑ‘º!„µÛí¬Ë²ŒD"ýýýs!ÇØvûŸŠ¢lV«ÕÂÌôL :…ªÃ{åré­È3|õHÝAít:ë–eagg§R­VÏ…<½^oG„z½V˜˜ðwww1ï•J'"ÏuËÊd2_(ŠÒû¾“eÒégffÔ\.÷ù»Þ‰O»»F.p>é¿|?þïÆºŸy3Í-EIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/stripes.png0000644000076500000240000000040112613140041024747 0ustar philstaff00000000000000‰PNG  IHDRľ‹sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙøÛIDATÓͱ Â0EÑñõ•ÊŽ¹w‘!hÒ1k°3=ì+äh@"R*^{ôtwqÏÖ­µ pç³”Rof YDdú_†aöÞ/Ó:çU½u@¼¾XJÙ›Ù©ÖŠ™ÙxfUÍ«ìÿcœBYU¯"r\!ðx‚+žFļIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/titlebar.png0000644000076500000240000000263412613140041025076 0ustar philstaff00000000000000‰PNG  IHDR1,ÌÔPYsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ/+áƵtEXtCommentCreated with GIMPW÷IDAThÞÕš¿nGƳ·¤èVÒÚ0.’.Üp^ÁÏ’"mš<]j7VãÂÜ9MÞíΤØÝ»½ã‘’œÀ¤XÜwûç›ï›™%‡,™é¥Õ÷‡j6¹u4€«:ÕUŽÈ.Z®XæM×`¤º ˆzãÄÜ{>˪©º;YMYÐjó@ðÀƒ d™ì’Ø!AèÄúè€è

      /ãêç~b9A«5Ͼû–³³3...xóæÍŸòâÅ {þü9>|àúúçM“\!ÆH#n/ï\æzxޣϊ%Å#šc… hžW* .ó§5#ù=ç]×ñðáC=zÄëׯñççç\]]qyyÉjµ m[‹"²µy&‡¶@@²œ™“^b£PcÖ³Q„_@¨³ †šfCÎ9®¯¯999áéÓ§øÕòïßÿE#ŽØTï}º·€ôj¾9ç·z$W€hÉ’6™t=f6b @Õz.KK³“Š]X,\^^òøñc|Œ‘ͦÃûDÓb±@UÙ´ŸY.—=Ý»ÙÈÔÛ” C5ñ#"Cx³$—X1Qƒh²LM-QMlªõñÑù†hÊf½ÁùofÄqnÐ~ˆƒœ4êH“5Í£èd†æçÓ\ AADÀ,[;$VÌ E0g ,VrŒiœ™!N™²¦Y$ºnƒY¤m#Ò86]›7¥ˆØ`Êj ˜…ѹDDè$î<«²¥‹1Š} «fëÁP«±I%¨hˆ:|c^p¼ÁQè›X¾0S®(Û êð:Û³ªºÅøœ4FbŒÉ'bŒÝàhý5êÖ"û&¿U*¾ľù‹‘RBVºªš|BuËš"’hÜöèâ ;7rãy¢2Ø€1¿f%+UíC|¢VðT÷ƒv·'ã‹™˜‚ï­|ÃMDP1¢FÚÐ%9•Á¦ƒeT“ŒÊuÎÚR9è]ZÉç@cîòCçZ"©ÆÁ±§´Þüíý3ìÜűç@ÔÃç|CUS"Ë©m[º®Kè3QrÇ.½‹H¿ï¢EveÄØb¿Ž†åMY·-~ÝnX·œs³Öþ’èó5Z‘z÷y+Èæô~¬m*A?—Dfµ¤MUq%ÑíC{ô ê_Ú(›%&nzù^2q웯¥®ª):Ý'ËÏ%A7w¬¨“Üìyé?œ`ÿOõ>qäõ÷Ý}™ük;ù š¦é¼ý—§ È9wÒò·A*"4MÓgör¶*_NíÜ7‚ˆ1öTuôÓIñCËÉ7âhš=Ölji¹£ŒTþ‡Ÿ~ä¾7~®~Ö_1[êjÑ¡ëu•¨«jŸOø;?Ø0XJ‘E8lÝÎ&`ú“"Ë?ÄšqÝîÐ,ìc£0ÒŸ) ÙúÓ**daÊFùA½)•£Îgº‰õ¥ü;'+²â3€Èqâç@Fzf|¦ä˜ÿ1'«Ñß"þ‡”ŒjDÝØIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/titlebar.sci0000644000076500000240000000012712613140041025063 0ustar philstaff00000000000000border.left: 10 border.top: 12 border.bottom: 12 border.right: 10 source: titlebar.png PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/toolbutton.png0000644000076500000240000000476612613140041025511 0ustar philstaff00000000000000‰PNG  IHDR@*]âbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  ˜Ž×ªtEXtCommentCreated with GIMPW ^IDAThÞZËndI=y«ÊíöŒºW´dFôPïPo@ò|BÀ°ààF¬áزdV³if7L¯[jÉÍ,,fÜn»\™,òfÞÈW•…%Ë®º·òfž§y|êŽ~¼mްÛíB€[M_®6ë?­V«/!zšfÕjõÇŸþø'8;;ÃÓ§OqttT,ÖN2ƒB隀1žHšdý¾ÈÜ`9~Z4DÍ=%õfågº D„»·X¯×¸¼¼Ä?_ƒ|õŽ¿vŒŸœœœüþÅ‹Ÿÿö׿ÁÅÅ®®®°ÿ‡gF´ µ“pÍâJpÂp´wüxvl"B˜_®§B8>>Æé'?Ä«W¯ð÷/¾ÀÇ=þÝ›Íæó³³3œŸŸãúúëõ!„áò{èÇÿ¹ØiQßý|ž0¹ùÞ0`[ |?1o.ì@ Üîn¡ª¸»»Ãû÷ïñòåK|óú5¾»¼øùOž<Áf³ÁvßÅØóþA‹oCC!P{sŸši’Ðy1‘æËÂ0 (Òý€‰xhLÓRìpssÛÛüèù'øößÿúl€õzcäääÞû,NË8>> "å¿`°L^ç¢ÁÎæÅ©T .ÇÏÚAÈãQWÖ1K‰Þ{¬×kÜßßcåvÛ-œsðÞcš&03&Øn·PU03D"R¨?ð¼È| P†RÜ @!y‘3*]öäIš×pÃHˆà&°¥ØŒÈ‡}³v~ …×ç[Ýn G@!0M¼÷ìv»9…˜]P—]ÜM4Ž`¥9䨤"b ‹¬ÀËŽ{Ÿ—²‰ !„Ë‚r¡‚% {¨`aÙyˆ(T "€s. ª!”»O¼|XaÞÍ À@|–Ô(h¨ñoymу2¥–)·+1]m²›¡ªy}"KèMpqqB4 ÎÍ4ˆªL%¨¿»v§,½, hs{oü,~õ8ŠY¦ð´Î”s²a€¹9º£fÏ,(ߤžåsA¤Éñ…JCÛÅŠÐä}Ñÿ €†ÉX$šduÇâôR¥ë´•&•À²cÕtÝ@}oÀφåáö¹6Ì z 0…Î ‡]`M_¢LU RÏÔ©43I´Ë­> ZÔLZ¿2d@ºBˆèªBy)p2µeÙq‹d­=ûúß‹ëa˜Ÿ?bXïš]#•„ÀÕ3ó• D ‘I¤FEÕÞõ½;¶XˆÂï[ ¯BÇŽÀ^/4`<Àæ ÊiÁÑw‚§ ‚qébKTæRx°c)Ï/ÅÏR.ÐìêØø~@¡@ÒúÌæ¨WQŒ•¬Äô²ú²Újr{ÒäÖb1 @#Ú¨;ºyÛš£yàè(!…«+GZÒ]Ì”½B*Ø,E} Ô¶ú†É¤Ü TÐÒ1§JƒX¶¦ »x©î×&ÝIå6›0*ØJÝMLz7Á$µÒ/˜îÏüÀƒl)º¤Á²“”¥€ª_ôHÊñ•ƈ <—ÛvÖ5X'hws6“2íÍ”Z±µ¯øEÙµ>ÂTx™ªb&åü^g¡:Ä/lK`zïá½ï§Aïý çÊo1*Zî µ#ãq“ÂÆ3r »&îA‚¼ï¢ùéJ•~nm6H½Áƒ@B?†öæ¡)Ûï&l,Îó˜šÖtï°ã!ÇâyÇ*Ø0#]Xïïg’Q÷)jÄTÌ£ña°ñSjO9Q6VF;9½¶¾-Z|€!p¨­6Ò›*mZ §^ÿÍööÔˆw=|YŽXÑm„ÒòYê,P•ÜTí¥ÒžóÛ+‚ι „V=ûžÚ”§$Cz¢Œ½®SŠçS—Y=†ÕGêI‹êÉ xôèì!i©ƒ-g;©C=úÞ×z™ÁÆ>Jö}¦rܼ_¢)ÕÈ»Ý.VƒÉ½ ÚÛeS³eÀÈîòìKãÃvû¾Šã{n@)A¶¡°Ûí¶Û-¶Û-¦GǢº¶("r{/÷YÕTÎڳƺ8"c¥»fãèzaÀ\ú»ø››ø‹›¿!ò©ˆ<öƒg¦n¯h3·%…˜J âH„ôžÒ‰1œxN¥öº«î'Ž¿ììTev~ÚˆYz^í_1˜"Oy¶â«Õ*ÿ=::Âùù9Þ½{÷õ÷ßÿ÷WnþŽÐ_///ñþúúùãDZÙlrLç qþnNü%è:/…Ñ\™ÍĉUB•9êÂìPUYžh¦iÊ º»»Ã›7oðöí[¬×ë_ÞÞ~ø–àôôôÙv»ýp·ý›sîSçxrݳ¿År}6Jd­¾êÝ«Ãè=ˆÍY@*§Ó&¦¶ßÕÕUžÄÿ\‡d‚ÕDIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/images/toolbutton.sci0000644000076500000240000000012712613140041025466 0ustar philstaff00000000000000border.left: 15 border.top: 4 border.bottom: 4 border.right: 15 source: toolbutton.png PyQt-gpl-5.5.1/examples/quick/canvas/contents/qt-logo.png0000644000076500000240000005573712613140041023421 0ustar philstaff00000000000000‰PNG  IHDRúúˆìZ=tEXtSoftwareAdobe ImageReadyqÉe<[IDATxÚì½ ¸Wu'~Nïo_´ËÚ,Kò¾¯`ÀØÆf !&™$@&ßL “I¾Ì|Y&_2ÉBaH2ÿø‡@°$a ‹/Ø€Á»%Yû®'ééééí½ž¹·ª_wÕ­snÕ{¯Z–ͽŸJݯ»ºúö­{¶ßÙˆÀ 7ÜxaŒ[7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸áFJ#wþÒVË›ôÎ!sÞó\yØ|î=ͫǂz–UÏ—©Ç>u Cz¡AƒË ¬.ô®ȯܶ®Ô³u]iyow¦¯A0¤.Ðð'3ê8¡þÞ§÷úêÇSê˜ O¿RA7$bèõé9‚1ð›É;¯Zm@>×üÍï×§ÎÎ5 XÈ„.ç}Oë:ø~ƒð[Zç#DnLèZ¹Pà¡|3jµ§fê0З ~¦9ßJ¥Ù,zGp.Ù ÂÈéòCýYhÔ)ðYãùµ¢öõƒ¿1¼FÁµP¯ÿÞK¿å¨z1„žÒ(©c›:nRÇeêØ Žê ªÇ!uŸzÕcAx^?åá’ÝpÙ†.X9”ƒîb2‚Z]m8b †7zœRލ?vª7v7êØ£ŽquL¹[ï†#ôôÆÍŠàÞ¤ˆñUêPŽÙ”ŸšË+‰±zU ^|E/\ª¼¯;uõZ]½WW\«’!0*xç%©b´Eý±Å~ZÂi¼Ö4#ØÞÔÆÔ1á¶„ŽÐ“׫ãWÝ.êËóÚ˜Rm{úòpÇupí¶nèVªlE÷\…ª,jí<Ç©€œJ‹ÁÇ’OüÞ¼NY½H=9¨žPÏ5ñ?¥ýÚɦà†ŽÐ›ã u¼WÑÛXS/hni¼¦ôø‹záî›aõp*ŠèçÔ%Ö í¼ÐüÅ‚[ maBPTÇÖæ|½Ò$v}VÇÓêx¦ùüXS DìÆ¡ÿŠÚñïU!,ˆÃw>!½ô¦¸ëÚ~e+ºÜˆVmðÅBÃh{”"Aº@( ~μ&Z@HkðÀQuWÝ•Ëâ³M àp“)Œº­åÆ Ð»Õñ!µá©E6§ˆ\üÄ­ËàæËz ZóA6žç%¹Ié(0Ä©òæÇÐPšDNh0‹  À…þ/î*¶øFU#ꯑ¦ýÿtÓþ×Ä¿ß17ž¯„®‰üSjï¿>ìFÖã7M@¯érȵ§–ÝM Ñbø1b£„ØBÝ!ª˜®ªàuáÌáµ\@ ½ëÕÓõêï½ö]kŠà¨Ï<ÉÿL“€6ØpÛÑó‘лZDn£Ï Ô î¼yn¼¤Û'ò°šl¨˜ÐÎ|nžx‘)O‚ýo9‘¡ï÷%,B=ñ?‚š¬Q¯Q/]«_Ô_Q,`M=;«Þ?ÚÔô¡=»š `¢i&¸áF§ ]T}ÿRmÚ×Gè iî)µW]Ü w\Û¥®ûh!hbìu…÷QøLPc0ƒNl R ¨Ã˜‹9 ¢ZÒBú¸ªý>icfR£UþÝâßÞ4s¹áFg$ú»ÕñöжÙåJ’-+Àk_4šÄ[UVUÜ$vÃîºÝ"›ð~[ߌ€ò×·¦hšeJÃDã7˜jBÖ&BuÐUÆ$&š*ÿ¾æãŽ&˜gܶv# B¿Zd=ƒÑ†ï¾aú{2P¶¹ÏB*³à kÅ0_áe©ÓˆlIਖAîÏ„B[›Ä¼ÍN=j]§_sUKh‡4­NÙ`Ï6Á@mœ è}C'Áü©ÚPݬûšs¥UpÉE½påæ.ÏO&Ì !’!´Ñ.ÑCÏc3ÖÕ "äÛbÂØÎÃÑ <ðÃyÌר¼ASð_êQOt÷Ñ~X==Ò$þgš¦À‘&˜tdàÝÜp?¥öÐ]@‚7éMmÌL>/¹²¯iššRÖÊ$•,Qqf ¦ Às"â¤'X˜‰ 2‰&&EÆZ’ÀÌ$$3`–PðZ(˜¡uîU^ª^SÝÕÖ`”àýkªÿO5ñ€ãM3À…ÿXz{¯ißñÿˆ€o6Wµ²Í7oì†M« P«âã²É‚ꬸ!4*€cJ(¼™=av¦ ¡þ–MѾ‡¨ª$š4œFÀh,¬™BJ€­ê¹Ž¼-pþŒ:õ„zz¬iû]ŽüHô;Ô¸Á&t£f%Â5Ûz¼™ZƒbÐ-&59µÂ@ÃQ’Ä⌠â‚m6)ΨóÄØ÷Dvð"bròÿS 7fl{M]œ_£nõ÷…þ·¶l¶ ÌôvgÇÔtŽ6‰G ˜Oš ü‚èoìi7cÙ{ûò°umÑKR }P¿L´:¢y“¤ÅйMãŽ|Ùüu…ˆ<ÉSÀé´èM@øY…a[ŸchsûInC€P X@P#á1ˆnEì:@jZ››ý9xçk7ßx6ÕÇv5q€=ÍG­L’Ÿ€èÆóŒ[éItAhHjû–µ%èëÎz~ó01K”ÌhbæÔ]äÔöùÏPˆ!æµy" †É ð9ŒÃ(æ»c˜^(†€„õãp  Ä0ð™¿é1±€ZR«³Y\­^º9`²èpೊßïéíÎìQŒ`¿úè<¨µ‚ñæ9nœG„~›º‰ËmÀuT³Fذºè%¬D$×|`ŠuŸ ]€¡¬Ú†Ï mhîËQ0¸ï§°-.¡ñh†â&Œþ ùÙm® À?ŒÁȲޏdfÐ`âþµt4àruêòž®Ì->ÿôÞ×ÙKgÔÌ«ý{›ÒgÔ•\4às`£ë[w7«úJvºFÛ ظ¢µ:ㇳÚÁ‘1>éP–ÚUbƶ ÷¢Í Ñ9GlsÁoÏ©ù¶RH÷4>v®† Ñú]`‚“æ$σ£ ÛMmµÝÓJ2Ͳaê µ<£Þßßý´ðTóQ×Ðy.°ƒ}­Zü+-΄«÷÷ä ¿7ëÕ‹J#KJœ±ÜXˆ6$¹T‚ Îþ(Ð3íéz/0‡ ú"DÁ F¥qD}_Hì>صóžD€À„ÚZ˜tÄ£b*C깟¼Îø*¥x)À‡›  šww BߺÞ%ìæ•a¶¼/…6÷YœBV¬*º1Ñ.±¤fU¡-ó3‹-s3CÉž—MäÄSmçаÉCDÌ1´ 8óÃÐàZL¦bvCê‰:¼hÀ×Öt¬)é4mÿ¯57Aè:ïzÐj“3L»¯'ãU?­Ô¢„d R$‹LHf1ËJ0*&Bb7\DRØÖú·QΉ.)äø¯\ñ ´üHüA 3 Úþ‚fD÷çóù¥ @DÈÄ-"4†Õûê ]ðnuÍUŽÐù_×`Skµ-9¦(3ÍÒ¿†»HDô8‚ò—bP Ä’o›×')ùi‹j-cÒÃR.¢!Øüùæ:0×±bÁŸ§áp8‹i»Y¦@ÍÐ6J›.TüÓE:Àr«éÌÑ‹Ú]…`ýo§ð¦77[ˆˆ‘î2ã@#ŽÈš‚„ a¡EJCô÷]t¡úèÀ0¨ùy L uš«‹.¢§PõƒïÖ½u$`Ž{DÞö·*w­àwSà÷Å]ÇÅú È™EïA.ƒÑ0PNz cŸE¤(Ê€€ˆçqñç  ¢͆¼ö`Sm ã%iDÆõgêÉØL&Â+­#IøCð#h˜@h0†É‘a6 s2ˆÙ¬ÿü\d¹1jž9¢_¡7"{.ÖôC/ï¼-q‘Qݸ äÖÜœ1ª¦âjj`‘”$øúQb2À¤¸ãÆâ$:ZL^.i 1jÓ¡%úJ4™@²dBq€P¤ì2‡ê"I!µ @e.’LжRÕÀÐæî3|Ù€¼G!T;ßäeÑcηÏadh(Ä{X“Ã5gJHáyR@Ú# ŒÊ¥ÙèR$ ø§ˆ:7Ëqe›Œ‰  †þ˜ ¢ žF’Db ^°ª= ¡´KÝ›¶hAFuG‹ú…œyb¸C9Œ9Õ¢¿ÛÔˆBŒš3a .R§Ÿ,š‹z$+™¤²"m.65“kx`‹0“¤:, ÚK2Ï“©R{ýÔ¨IcÄ0,!wSu#o6Ÿt cb‰3X*Kº¦JÚ f˜Ì™Í‚BŒHú±e/š•vÑ©íK'tIEídLÖY>ÅpŠJV´eÛ`NÖ&b¢ŸÍ誧~.½.œ¡ Ø6¼ ‡ ¨ÖjP­W½Oe1£ÎS‡zDõÙl&ëýŽ:4€ºõT~ YunN—ó ö ¢…fÜ\c‹v€PÜ’Ø´¶|~Û¢ûIŠŠ`¦5å6¸6`q)º±xB —t#5ÐÐú…î·pƒ†=k¨„¼œGó³YEÔ¹¬OÔ3åœ:SƒSU¯ÀÈ™2ŒNͨÏä` Ø—¬Ü[Öl ‡VÂêþe0ÐÝC½CÐSì5Ãk V¯Àtuʵ)˜,Ÿ†³•“p¶<c³GáôÜQõú4TÔ9̪ïÍ+Û)•„d³€73BÕp‘—rfs íg›X§ !gÛA ¢‹Â± élM 'Õ—FèIX{ÛDJ+3ÅÑÂ5šóÈg½Ž¦0>Uƒ]‡Ë°ÿè8U†³S€ÉiÅr°iíEð–«nƒ».½®ß| ¬è„®RׂºÖÐ à œ˜Ú‡&ž„ãÃÈ̘©MzDŸSD sšD°¸„$ÉÑ.‰AhL­ùD›E0»ZÅ1‘aJÄw¾ M—ëVkf̹±pB—âlÞ+ˆC‚S ‘MO$¾ë)Ðj²®|£QÈ'+ðÈŽ)Øuh¦±C½®(rò}ð“/}¼í%o„Û/)tº–¾Ð™‚ÒVyǶe·xjýèÌ!xvì!Ø>z™Ü5š…B¶KM7ÃpI°‡ApÍ!/ÁÍë„*ÔšRž€/®È¥E»›g$=“oÒ˜Œ 9“ .rtž2—0Aî]Î1€Ó,Sd‚t(U= FmÖB>GG«pß“ðÔ¾i r]ÛJo/*ýýž[ß¿ùêÿ×lº²£ ¯‰yEÏ&ï¸uÝ=°÷Ìá‘c_„gÏ<•†&ø’A˜ø†€Œ&ªª |2J5S]1†~É‚Ôr&DPëð÷J H¦„Gƒ°‘ óÎÅKt9kl»œpR<ÔÑÄ ÕIٲɼÓßk UC¸÷‡ðàgav¶®Å¬:Ôùåi¸fóUð'?ýß᮫n?ç7Aý–᛼ãÀøcpÿ¡O®37íøFsj4 èu¤‘…Ù«@.mÍ€hdÚJøÇƤý.EOT6Üä¡; eU3bTGa|ŒKÌ0‘{ K&ƒ©1Ÿ8S…/>xžñ%xAy­ª$y ~å•ï€÷½ù7¡¿»ÿ9¿!›¯…M×À£#_oü(Œ•{ê<Ÿ4CQ@“Ѐ=¤†– C$°úW%€ÎR`’­©ÏµäPz±€‡ó£§d£Ç©õ‡˜'v®Eq!§T9)Z?ެŠy„‡çàóß9 ““5ŸÀõ¨V '_€þ‡÷Â;_þsç×]Qs¿nÍkᢡá+{>OŸþ6ä3Eõr6Þk· ]`›ªºWÈ“éÂR©U¼óµ{‘š®B}FÆsfÕcÖÇPŒ<`x„ÁLˆx&âF•ð'ÎÓAÝžÔÂæ¤ƒÝ³Õý7ƒBP° ¡¶%EÔîžUD>ªÔvµIóØ"ò¾b|æ¿üxÕÕ¯8ooÎ@i%üÌåÿ ÖüÜ{ècê'5<—œŒwp¸‡Xëœ2aþí¡3pøØœoÊ4¯GÕYøã{~n¿ìF>S•1˜¨œ‚ÉêÌTÎÂLU™@µ ˜©…:Õ|€¹¨t;äRhÝC.((®¶“èK#ô$ežÍól%¹#¡¦RŸrˆW#Ïýk—òøÑîøÜ·G¡¡ÛBe›ç( Õ_ê†ÏüçÃ+¯¾ã¼¿AÚN¿mÓÛѯ†Ýó~¨6æ §¤;«.Ĭa”¡ê¡™Ù:l?0 “ã<ú«+)ŸƒkW¿Öõ]¢Ž(8Y©Ï¶ŽÉòì:ý •½^kTù(’d$™[ë(ÀSuØ=Gº'Õë°eíFزf£8'ô†a¸ëØ8x%lºÖs’dÏŶ޶€Áf3®&ŸK t[²éùÁª$IK$q)`¤júCÁœX=DäE¼}ûÑ 8xhF‰ö@ y¥ o¸þìžß~AÜ´Ö¾n½à-žml¯^m2Z4¬#„ÙrFNWÂkÛh@¶Ô×®»x‰3‰”ãZQ§¦ ç:OUu—´)[ÜC¨ðŸ®(u%9 /ä¿7BiÕ¿|.û•áÁ§&ÚèºwnP‰ú¿üÙ߃¡ÞáÌ»ëÂÿ ÞàEÑ…AjªÀ0cmŸOÕáÌdÝWÛçé¦^ƒ †×À¥ë.Yœ¦gÞ_Š)³Ízd ñ»‘²ê.5iLk{ƒB«9€L> •WÈ{¹V#øê#gö¦~{nÞñÒ7ÃWÞö‚ºq¹l~b˯Aw®O©ñ5Ö”aoLàêTÜãÊ>¯ê0à fߨÁÕk·@_Wß͹µÏ6™ÉÈ|pâDŒ=ŸX•ü±‹ µu Õ2ˆKK¶„`²àtölŸ‚ÃGgü°ÖùQ¯Â²¡•ð?ßðžs²˜;Gž¿¿ï_à™#û U%13°^IÆ›¶Þ/ßv#¬_¾>Õï[Õ{¼|ÃÛàËûþŠÙœ\÷\(â¡_щ=‘[£$ú­j¾‹ÖÔ‰iÃ,¹RDÌ%@å jïFrBçÜš¶jÉçÂ$£ýÄØ*$fK"ÿïŒ:wz¶÷=9è[Þ¶Íßsç/À†” Ì'§÷Á‡ÿùlŸ9Ÿ…SGgý¹dÔd¾þw°|h5¼íÅo€ÿöêwÁš¡5©}÷ͼžý6š|ò™#-РŸ•+ÇO@œ6uò%¸~ã¥K4Í¢ÍAˆÉž‹Évtc ª»Àm½×Ø ®ÆE‚jyðæ†n _ñSp힆±±@°‡'•*°våzxÏ]oïè>uâ›ð·Oü üpäKÍÕáæËVÁ¯¾q#¼êö ÛÝ£&Ø ÐÕ £SgàýÿöWpÛ¾¾ûì÷ÒãÔ™"ܾñšåñþkdš+êŠ7Ú>Ÿ®Ãèx­½ šhûðà ¸fãU‹·Ïi(¨–Çöfì}gçD蔑i{q­{l-•¸ˆ9F•k~™v§ÍÎ5à‘ÓÑK)iþKÊ6ìêØâ=6òeøì³¿³µ)(åz=b«TÐh4àökúàM/_Í|¼È¼<@÷ì9¯ý³·ÁןüVjóØ:| \2|«ÂsëjÍÔÔ„”}®‰¼16ÿñã¿•j9•9m¼.¼É‹…ƒ•fë+¿Äƒ,òìó`i.ýò¸qýRìs£‰†ØÂY(h¸fm›,‚À…:%òh¹ásá`ˆ$ÛÛËl÷㟯Áõc§«pðøœ/Íçç¡+<æ‹ð‹/þ©Ž-Ú÷}On÷«À × bþWèÄN‚W\?½ý9_…Ÿ¥xð™‡à£÷}:µyݰúu^Ú(‰Åãý×´Ú>5S‡‘±j;Ù‡üµëí„ë6_½xs®ÕsÎdæ(„Ã"“~ 1µç ì½ØÝHÏFÃZ¸¢~Wmr†ã7‡®ÜúôYhh¿yð’Jõ¼|Ý6¥~ÞÒ‘›¬ŒÁŽ}ò^僀¡µŽáþ,ÜtYŸOèAÈà}_þk={*•¹é 5«z6C]Çœ[’G´Ú~êlÍ#vÓ>¿tå/XfI›ÀŒ¡™9YÌ7‹¡˜÷ÝX¤.qo©U“ÙÿÛ–#-EE!R‚A˜Qjñ³‡fÛ]óŸ­WáMJmÏçòY°gN~ ÆæŽ*A˜àúÍß]UÄ~Ó¶è*øEâç‡"ô£'Â'þB*sËg‹pÅò;üì6KOµlàöŸ×Œà“Z®½ðjÅDs‹¦q±¬“„ž³ÀY –x°˜¦ n¤ ºÛz°E†[ãZƵjÝnݤë¿UõÔíR o²\©ÞpÝÝY,¢:A 4Ú §VÛ÷(ÛœªML¾DºdÍEžêÞ‰qj朘ÞëKsª£°þ`ò„ç•›»]ëN‘/ÀÓ‡wÀC»~ÊWön† ýW)š­BW1]êû¼Ç’ÿHX†S“°{dÒ‹5ÐÕv¼Úyú(vÁ‹¶Ü°DóÍhúHF›)©±D”5÷NÀE(õ±w~tq,¾”—ÐB6?†×@ @ìÍ âEtU°÷è\”¹¨Ízç%·@1ßÕ‘Å:xöI˜®õ|æ‘„¶*mû÷Ö¥¯ÎÚe8r¢Y²©YÈ‘±}þG_ójȧ1¶ ߟ}ä0>>ÛüþRo½å•pÙêÕðøºïÂÙeÓpjnÚÓ&fg&`˪ °iùº%Èo¿ ©{†f'¶Î94kÊ“€c–ãºÜz—uªûÒ =Žø­þô8ãžë)ÎwiшñØD NjÄ8c0œln¿ä–Ž-Ö³{EÂs4ì\.`ý¶‹ºPåEëJpäØlíÎæá=A¹2ÅBiÉó¼xÙͰçPž}v  k›Š ß}Ë­ðÓW½^¿Ô¨CUÿÔÜŒNœR&QJÅî%¨‡YVëT¨ê{‹Fç]{þ½Fò{ÐéRYDÞQj!²’ÂIn,•ЭDŒ|²õ\&‹D7o¾oŸ8Q†ŠŽèÊ\xjÓ.ë_7m¾¦# U­Ï)µ}Ÿ·1yÄ—©äb”YÖ­_YÌeÂj¹ìÙOmk¶,y®Ã]ëauïzx6?Ö®z«×7›QVC¥}'”M®Kk ÷yÇRÇ…ƒ×Â;¯ù+Å<ÊPnÌx$çjS0S÷¢öfjêïI˜«Ï¨¿g<†0Uƒ:UÃ1îlÅWà÷‘¨E¹‘¡KEC¤b3?³.¹=yA¿=2ZªJm¿xíX5¸¢# 5Q>“•Ñf•ScÞfv˜ÐF»ÚÖç”)œ9ͨ™X³³Sðƒ½¥Bèú¶^ºò ¸¯þˆšKñœm¦b®Ç ÜI24ák7à—vžý†WÎZ–âR—V´›tc`ÊÌ4^g2‘i.öÝpºÛR©u4\àЩŠzƒWµô†õ—úˆxÆ™òˆ×%ÕSÝM°™>`ŒËGÛ°=]J‚öå}@®eÝ §‘<~xGjóÕi±à¹)Fózn†.,Ù•ðð"©Ùƒqó1Iœ‹#tZÀ¢AÜD2‡nU AÃFçš ´/31­+¢ÔÚöyàš/¹øÆŽ-Ôèô¡vy+DÓææAFðû /X–GÉy—ÊÀGw§æ ¾eëPÒ…#Îs€Š a˜z¦Ù'mFGԗ趪2A .¦­F«·&i¼®#]OOÔ¼Œµ0óh@©ÔW^pqÇêôìÁh-6I­‰Dn’IÔoX>˜ò3%}: “³“©ÌW÷nß¶b@tþ$nŒfBtÞj,Ï?B—î…ï®/BÝ8à«¡­–yE&tè&錌L`õ:¬\ «›Z™Puo J°ľßh¯ºë`ýFàÔLŽŒŸ‚3)z±Ð—ëäí^˜®~)PdT«!ˆ–•v6z ª»MÚƒ´ß‘iÚGa©N‚‹(’ù¤£G=·šiŸ«Í¼qÅzêë ¡75Ï>×E&ùj˜l…lý†ž¬ßëÌ`j3•Y8pêPjó¾^1¡C qs^%›x‡H4qöìüõÚ7wbª¾ÙÍVÈ=‹¯Zš`è˜í°w€¢„ZcCF g”Š6crvJ à*äóé„®þô­Cqù:(æJ^•­þá?Â{¿ô¯7]W¾Ë›KA½ñ¾7ÿ¼óŽŸ_ÒwMãG½Ôk†×@CÝ»¬ú‚œ²»´k4ŸÍ{ß§š¡Ÿ;À%4ÄtŸ¹Â2$t¹ónø} „j5†ýìlO-¦z¬z:¥{xS½S°RI¦îbOÇIÇe“U]$#ZN,|;]Í¿Kk%hwŠÆg& \«¤Fè+ûÖÀ²<‘i°§¡R­zV[¥Òô`”§alz|ÉßµëÔáÃÿ.ÔêEu?ºa¦Ú€n(À`©Ó³ƒ]žÖÐ[ê…Áž~¢s¹Ý°£ìóÌÒìÙm¶wr½xBGà{¢Ûjõ·É‰‰yRÉ(#Õ$ ³3uˆD ©c•’è:늯â‹\M­(ñk½¤»˜æY«'S•9¨¦žõWyejÍZqä1ɬn¶Ò{óJêf—ü]ƒýE¸hCV]K_x¶©••d? ½uRó8毧bÎSÍ’Zùzr˜O‡»=²þNÌ/]¢Û8Gc8¬Ù¦ …°WŒfÐè3§u3ÀÈ|Ê>ï,¡ûÅÔ‘­wÇÌŸŒVõ·®IÏ©îãšÐCµÙ—6zòC^f˜§Ÿš]åjÉZCC&¨{Ði!g|>Û*~nº¾¯6¯Œ™ökFWç¸ÂâXZdœ €+Dá¢þÖ0R湺Áu%Êå°²j`eGI»Öˆ©ðÊÏ•Y$ÃÕ¨¯ÕUÄhbŽNbSÔ2§ˆ=­QÈ” ˜éò“GÎ\jšæß§ù¿ƒµä¤ÍdJk‹iä$ú]’Ø\]wnÿÏ#ëp9¡ÉÍ ‡ÕýñŠ2+«fÕÒæ)ÚÔQBoÌ€œÁcn4³iFU}ð{ÆEªÕ ;–¡g¡g{üTPK±–THï½t‘!ê, Ó.¤$ÒÇź”‰É ߟ=I})‹-ÌéµÉW­5±S”‘4°vø‚Ž.†"tlýàLÉ&©¥è¸” Òtså³]^î7º¨ÊÚGj fÜc)„öJæ^°p£@²«—¦D'Fk’26Q²·P`ÄKðK×e>êýNèLž_›å]f%ˆ&Ý„TxTê9AwWÆ«µsë0‘R›Âd ^½w`“Ô…#™ö²”Ï€1×àÔtæõ€á4÷¥:çF‹­À î¬Û£¶,E3ôD¯Î×Dj ù —º:·Bj.º^UN2#¹ˆ'vLJA#½g§'Ò»Á˜…b®W1—º½JPjÒ…rÍœTÚ'³1ì1M\òZ‡$z]£¡Þ ’аáUÁ³Ñ‘Wj¼:œéð"!2)§dîXÁE¾|àk?ͤ,š‚Qvlˆvˆà!¦21Ì9Ÿ-ñ…ã,\ÍR=®É¢Ä¤ƒvY$WXâÎzÚŒuGŒÚ®êóY’ïpDV0 %à‚—àÚF/x—¦¼c{ráYÙ„êR׉u;ZJ?€˜çl5•Œë;½=%‰Ž`/4Òc‰zCŒ‚5̦Ð_KôF½ŽêÜ‚RÝûJ=]¥P wŒ 2(ˆøßÝÜúAÇ«r|J­QOuúy,ð8vBåEFâÚ´‹ƒ(¯cÐìCŒ·û¡/RªÅªJïgSÍG6Öë¦ltªœF ”ðS3"/¨­£ü‚É9loÃàÆ¤ðÜ͵©×`lúLª¿¡ÑîÁSÅäÂ]s‘¯ÍÖ„zl~u'½;l£KRÍ"Ä„>®šò€Ë9**R©ÏyÕe<;Ì(´ÂLl/œ_íuNJ—qy!¦ÍïEá»1]îÈr(„ªr¥ÄHÈd³rε¶DB«þš„ðc ¡€¤MÎ œ3MPRk’pEŒ6›Ä¬y6z~ˆ_ÑŽp¦æ“PÕ7×ôJw#e0-4J6aL¬»,¶êdp“Étι‰"£Ð"p~w¤-p¦.À$ésES-g¤1‘Ý,%‹À(‰HÕF—4p”>`–ý!áÆb`C%)a0—sb®I*$ í’#Qsá8<×ÌŠ:«1Ä3&¼2ÔNÙXˈ@b®ºžØ|[ô¦!‹p&N•“bf¹Z`‚äg˜Ë¹3Í(ºQƒ¹ôDÑIµÊó“@tkŸuãæ6´ ŠñÄ0q³è1®ÙH1"y}ÝX ¡£Å>gC`1€ÃuE’K‰=´Q¤ÿs"œÐôaMd‰Çl¾ÇÏ:®º'ÂQÒÐ~˜šþ’ŠN ±sÝp"Mµùœú¾DÕ-Ämŧ˜Î¨d!O¢¨4Lj2Ÿ³AF'X)âb¥éy‘Œ•æ†B˜ ,ƒ FÌA€QÅÝh ¸s”¾xB7 :©{ ƒÄj¤)²ÜßÑGÓÖ;{ƒu>·×ñSl'µ8P£~AÒwÉB¶½|BçÆ¢´)š9bÊðÚZ[V SÝÓ—è‰m=)²‰QÍ0˜ÙÖ~½á5=È@&Ÿ‰¨äI€FÇHûÏýžèe_—cM»)™~ºåTõ O6¡ б †ašùê` ž17 “è‹'tJÀýã9n¥®Fo²NéÌ ávËd \ƒñÓ:­ê:„µM9ÁÇ` õöjº éfãE!A¯Éi]j:II¦EiäÀ·Œ…W]4 ´ÑˆßhtÆ …MBXÒµ0Ý¡´Ñáe\}&¨,júM Joª¶óŸÏda°§¯³hÜ9ÿL #uä)R”i’ â¢ÜîË%¨îI²0“ØoÁçðP:yF|õ=:âK1§* ¸üj)6-ÙTØúé:·~v¾^|oÆ%:UÃ3HÔ|c±’I(JfN¿ɦð¢ÜàÁI÷=‰ŠN å.ÝËpïÈe3^ϲˆ¾R†Ós3”N¯Šª¸aqˆî42‚jÚÔìÇ´cgÁ1m£×Æ¡’½ @<‘F´ ’‹È3PÉt‚=%B·å¤X‰ßR©Âö>µoì|Zg&ÃB­ÑÙ&‚…\aç26w0 Ót)bLÆU¤íwÚ¦Y…njÄÞŠ™\”«ÊÚ8d†‚Tf•ŸÐÇ¥/Г€q’Ĉ5ê%‡<…LŠ9„bm/GGv^uGN¯¦pF[PUµšÊÈ'péGe£÷võ¦6w]Bª\jU­9wF¨C†”æì@Smg Y¸¦ )zâI¹j…9YF~«á\£¨·zœ*Out‘J™nàüaB{5ü»QI½™ÙF8µ©Ý Æ ¦Ç¤¡×<“›×é‰wˆVâ¢ÛœƒÓ˜ÌϘ‘”ÎN_¡sn%°s‘¿1F÷\ܱ¨],!§¤y> ƒA8ÝYBÏö.ÈæÂ|1ô¬V'Qø×S¬0£ûÆé­”ž\´ÜgÑå*ÄŇˆ#ŸSáÆâUw&C“ÒhÑ÷IJW5™ˆÁ¹7×ëWƨƒã)VMå†.™ÌÎYÜç’ýÙÖV$á“Íä`¨7=‰^­—›Ul3ÀºÙRUÙAP׬iÊRJ«)eL¯ JÍÿÜHÇF§„RÝjž•E¤Øñ&÷Ö¯ö–²¬êwbj¼£‹Ô•ïþв•Tå7¢~uj¶Ñì^Ül.Ëû–§'ѳP®Ï4 ÉëÇ” „,%ÕϬÈh±!}®ÄT:ÝRó¿ÁÁ(¨@¥´!x çŸÛß•e0EèJ¢7:[Èv *Å!€¨¼‹ ðZ)›MUЖëšÐ§Ãª{ˆÿ¤L¡~{ÈJéNŒºˆhøÙêbÄUiDÎFOW¢'ì"ª¼Ðk™«+i³Ü–:}ÝF"eáìÌ839Ö±EêÎ÷3Ä— ê…™åÖÜüúcÓs ?ˆ?Ä, †ŠÝPÌæR›ûTe¬É…8ûN„¿¢Q2¾ð“ hqM1 Ãucá£Yi}C3âKÿP\CTëíÎD d2013 §;Jèƒa»’$Õ†)thFèËÖr½Á”é"e&””žMmî“åÑPä 5µ>‰W<Ã(°I–Á˜@9È¥@è(˜ \Eîo.`QpS‘¨kU·»”,dÂ7WúÔìtG[ºr½ËäÚ“1¡ÏÑ íÇÔk^ø+Ec_ûJÝPÈ¥'ÑÏ–G€Ï-è0$² V%g6Y vèb‘4iWV*B—ú¬ÙZª‰ª?ò LÜ.Dô´\ Æu2Æ©õÊ,íØ"•^Êõùk$A Æ,n ádÝdÑëõ`”°nÀ@Ï ×}&­1^>ÙÄ(z+:+Ô†CÆOªJšŒ¹8 rÄžºên+gn¢`J;ÊLSå9´.ééB(3>Zm ï;ïì(§ƒf!ÃnòVq`Ê<ûqõ:ÀÌE‰¬Q‡¡Þ¡P¯´¥J׉ʨº^Ä4à´Q#ŠaúŒd!.ˆX“ΩìiƒqqÜ?ˆ„¶ú*b8j‰8`N^Â’¨¨¤ù@O6`Ñ>÷À©Ã“蹯#©'ÑžbqqÀí…«7¾êž1~¶zý‚¡Õ©Í[£íSåÓ^GÕ¨ Ýa! t1Õë$%v0n8ßyçlt“>­ ¶K‡Ë^ s P ‡Åê¿VôØû»{ìxÇIÌtÛ.¼H«ç„šñ5%Ñ'fë†Ýégî¬L1Î}¦6éIô¡“ @¥%ÉT83,Nd7‰ð\ÈÆt„{ó0¡4@㆛µÚ%Ä.¼#ÐË^[>”ÎMÙ´‡FÀÙ©3[¨Â ˆ¦œ"ÿ{ˆÛÌí5¨6tÀL-º/³9X5^°Ìøìq%ÕÛ -!¯T§$:B¸$çO¯­­2 ÿ¿“îKWÝ¥õŒóŸ³’ϸÁ ŠRA?îÏë8щÙ,ŒŒŸ„ä†Jk»)éŠB„êrXJÒÎÔ¡Ê4ŒÔ™kk‡×¤6ç“Óû¡Þ $¢d÷t©DNdéÖ‚‚Y3 „[®ÊtDA%Hy4ºŠ2  T) ×ëËú²P*eÃß­DýÌÌìÙß±…ZÞ½±™®*øC¿˜.íÚwg§ê^R‹Éì²ù"l^uaz„>»¿Ù –áÊ!°°Cöyˆ¾1bư„¼-jMÝInåÀ¸EH}¦„3Á¸yXõ×.¶Eè½½Yhuní‹<ºÿñŽ-Ô`i3]M›àïG²lrœçI0>£ÔvS¢7°¶w–u÷§2_‡®%z&“ ak§$Õƒ‰LdÚ{\/=€Í`Ó°ØŠÎFïœDÇ$klä c`Ç…î)cÇ.*íÎ+µ}Ýp!>ªNüÑág;ÆÙû•Þ[ö{›Þ.RLB=ŒMÔÚóoQf .X¶R"ôÙꜞ= YÌó4Ý Ðš’˜x\ÿ`´Ê |òåºX÷%:GÈ Kw ár¦3k*˜©¬º>ä+óÑMšËÃSGž…ñr½…e0P\­oÍÀ¤ÀˆäBõ¤¢TöSãµðÊë÷ë5غjsjÁ2'¦÷Át팆0e“+AýŒEq4ÖtJb?Q®(…óŸ§Hè¶Ôjb„ñ‚Z%Y|­ì©Ú´]3T€LѨ›ÉÁá±ã°§Cþt¶ºªûB_¢‡’+LIcvŒ¥vYbužáNŒWØ +VoJm¾Ç&wBµQn~ £)/¥' ™€™HŘ„Mˆ)¾iÆcÐúÎ;B_ }ŽñB,¾ç5ÃŃî5"¦ó&y€Üª¡ôöäÂê¯-­ÌÁƒ;¿×±ÅZ×¹E= jĆ—jgÁ™³u˜œ®‡ƒeÐgT×m¾&µ¹œxª)ÍÏe“:J‹1L˜aÓ—‹Œ:ކ·ÆÖÞÉJtN…Ý; 2'›Q퀖¦íîR6­,‚'Þ ïÊ·wý¨c‹µ¶÷b/eµ…dS 4zÃëºwÇÎT V®‡TÔë°rp9\uÁÅ©Ìsº:G§v(3'o…MB8b› saæãPŸ±%·Äh{ó©±ÎDOŒ“‚•’T•‰-ók ¤ˆ]Ù,À…kŠÑ"…<´çGpªCþôåÝëaYiÔÅòÒF3 £2¬n(sp¤Õzªe¸rÝ¥°¢?`™£Ûa²2ÖŒqg֘邕h&è1¢(a/Ô-iÙeº 0Ú´¥/MuGm€NˆÃbôÃĵ‘þ?×vî…kJŠ®³a†“ÉÀèÙSðЮtd±²jo¼Þ¯ª*ªŠf@¶’YfÊ Øw|¼¨™Ñ5àU—¿0“N2Ëî±ï+e§¨*#xRöJõ†”ÖRh'ÿ @Ì‘N6¦¿ÜŒW&‰àŠO¤)Ñm5ö¥*±fÁ Š#bTßh­¾daÝŠ‚¯¾ot½_|ì›[°K–½Äk¥L-ͶñÚÏç¨ÀøY¥ da¿JÌ—ºûà5Wß‘Êüj*ìL}Eب1¨ºÄ1P\ݹ/ 7"}ƒ_ŽFït0ö Щçç@u§f7/ÅÙ’AB¶LCÆ•B~™ä‚"œK6tGùC¾ߨþŒOw¦`äúþ+”­¾µY+]∼/øñ=3@µFxßWæà%Ûn„KÖnM„;û8œš= =ÇwÂc&i¨5žu}—)fSÝ;íÕ÷˫͟ïÈzÊXæj³^p¿'Ì}a2WGõIÇJ™_’›`5*&uŠÌâþÿýZr)õýâ %¸·; åJ 0d6çunùæÓ÷Ûo~}úœ1“…«W¾ÒCµ!S4N kgê‚1ÇF«°óàŒú#ë÷Ë·ýL3‚mécû©û*C1Óa>Úb(yzLó—àtJñ×®~5ød˜5:5«Ž/+"?tdÖ'òùéÏLÂõ[¯‡?þéÿ‘Ú|v~O=¹lÑX‹vˆžné6ÔŸUk– ߆LöŒ…,™h!›Œ¢ê;ABÛÑ…:W"Î6Å{c[Ñá‘ðÐ>õ«•ú¾bYÑ7ÜçOURjdô|ä;ŸêØâ­ê½Þ|Éÿôš0Vês-¦–ÏGäÿö½qxä© ?˜gx³pÍ…WÂÞó½BiIóïù´‡^c$š¬MMú뻋X«³ÿj{¤æ:«˜Ïãž|nvaćQM¤£¶J(n$'t®ì­ kÐöfO@#½yÎÍv”a4¼zï/º\Iõ†ñ¥Êöýð·> 'ÏžìØn¾~ö²?ô^t³lŽàÌT>ó­Óððcg}sBç°—g¼ã'oþ ø÷ßü$¬_¾>µ9ì}@™A>S2ÀÀðÚêgÚ͵~u1J\õ|cÇÃÏñvÄhÝ÷±;•½óª;ÜÓÖ÷žã¼hÉymÙi\±º ýÐÖ*J:]³µÖ¬*¶ :è#W€c'Ã~é/;ºˆ]ï¼æ/áîï‚Ç·7àŸ9O<¥˜‹–òÕYèÎåáöËo…OýçÿŸ÷ÿ«V¦öݺ[ê}‡>n$€U ¼S­ApÙúdJ†;O­ÕWŸº¦ç¦žcZg6"o³Gsœê¾x0.iƒ3ÜÑäÀPÓƒÀœ°ñÀ2`^Ù“ç¾óúø‡¯ f’–º•úþOðö—¼®ÞxeDz;?/ßôXÿšWÀ/]¿Œð^ß°ll[½¶®¹¨#ßûý£Ÿ…Ó; ˜ëk]/l»%×®(Àæµ%سZ‰øÌ|zØw|/üó#__|é[žkšˆ(„ÄR¸w9i¿4BgÌjV}'Fü‡R6…ää|Ïm£A‘Ã>T-Õ/ÛØW_Ü«¤êDÛ_ÉÂÌìüú§ÿ¾úëWös¡£ zÑš Þq.ÆÉ©}pÿá€|¶Èc¡&óö¼¿4·(SgÏ¡™°ý‹xÿ×?o½å ©¹üf£sš]Œ=nx:ÜXŠê.™É°$Òmø"r¯àçö|]í⻕T ÄÀ{ºáÞ'ïƒ~ío_07®Þ¨Â—÷~¦kãá VIéו×.¿K7(¦¸­OýŒù<½ïIø³ÿ›s» 1®Qîvôt}‰`g‡ÇÖ§hk&àœiDŽȗ &° lMÛÚ}ôš yÁ4á š.øƒù<¼û‘Ä»÷ÀGa÷™@!Ûlv»ní¡Sf_}Ó,[Yj»·N%øý/~¾ñä·ÏÉŒûm£t0"³'Œb$€²pp#‰NW,Tæy!j^@U æ{7o|YI««6wÁ˯lKu¯ÉC¦fgàmûprüäóú¦=1òïðÀ‘h92&Žqc Dk?}=Yøù»–ÊåJšoú˜ÍA¹V…Ÿýë_…o<ýi#582ñ |eχà¯}˜xB™…ž+Fâˆ==B'a=)n}M ÈP¸ÖL‘çL8¤d·êªkßú×õÁÊ^÷Ú¢Ìÿ%­vÝ?ÿ‘ÿ 3åéçå Û3öø—Ýï÷1&kƈ" ¢×iÅ`ÞþÚ•pÕÅJ×Idz½²™€×}ð]ðÞ/~fæ–¾VµFŽOî‚ûþ=|ôñÿ}âÝðà‘„‰ªî —‰†¼rê"¡ð»\¶¥ƒqhQÕYpŽŒÒ>Ö8Z³­nHU£ä³ ÌQ˜»ã|ýwòIÞôÒa(Ï5`÷<º¬G±¾þØ·áûïð÷ïúäRlQÜéq`ü øìÎ?€*Íù‰+œo£@¥‹W«ý]xËËàê­=ðèÎ)Ø?233yµv5øÝOý)|âá¯ÂÛ^ôxí5wzé´…B|¦Ý\uΖO©™ƒžÿÈäv89s*õ/L7‡y?t8òÚì̉d¸Y ‰N\ê­ëÔ²4B þ!½‰Ä@‹úؘdÜ8JÒÈ0Ú B‘ÔÅÞrû2øŒú{÷é6ßÕŸzàsŠX²ð‘wü1ó¥óþFé„•/ìú#˜«O…³ÓبA{ êp;kß·®Ï¼dc .^_„±É:=U“gj06UUÇ!øðÃÿôÔÇàÒ ¶À¥+6ÀúáÕ°¼9¬Z=01w ¦*cpvnÎTŽ«Ç“¡ÏÕ§½ïÊ@ÖËW/xyÁ>u†‡%ŸLl0]™’™‰n$ô£$CŒãú­Å¢©fž:,€ƒ·_×9ë]%„·*;ô dà©“~}JW/|âþϨM<÷ÿÌÛ´çëxøÈgákûÿÊ qõ‰œøâŠdÔ©CKúlëcóm©Éï§ÞêËÂòÁîÈ©5P© †=5mF¨ÇÈø†fGÔ„kƒ…Öâ¹\Š`Ìd3~—è)€q溢ÀPCyè¶Ÿc Ä#“½dØl¡’Ð’+ ýÝ¢8¯4ÍŸ¾mî¼iعÖ$‚R|ùÑoÀ+ÿägá{=ïnÎdy>·ãÁ—ö~À#Ĭ—K@”@B¦ ʶV«ãŒ–)mH»àôQu] ŠÇ’WNK±–ÐZ/´Ž.ïЭ¦‘O¥î¶]\wF9÷ZJ„.u@‚iSK…’8æ¥ä³A_tã×›€ò]7öÃϽj%¬j¢Ì:zDIöGî€;ÿä?À¾ò×j“WÏ‹óÄÈ×à£Oü üèÄ—£*|å|»fséy†| 8[8èúŒ P‰7A´}R°á1í¨ó²¾.`fÉ6ºä?·™‡`´Ïeëx[ìxÉ®©xÆBÖçG~]Ò9E×oì‚õËóðÀ““ðýí“PS"?×¥ìË9øoÿø^øâc÷Âïýä{àŽË_öœÜÝc߃‡”ª¾ûÌ÷¼X€b®Ç¾N¡5‘T^£s«d»s&€ø½”`^‚Ô&FHcÍß"UE§º/ÐmÀ›Í~7+ÄXªÅ„«„0¥¤ÌŽ\—ŽD}ß´Ÿ½Ý¥ ¼öEƒpíÖøÞ3Sðä¾i(Ï(åF©œ÷oÿܵ÷1xË ¯„wÝöV¸ý²[½ÐÐN]jרÃðøÈ¿Ã¾‰G=?³–âÈùÆ1†¸­œ™[sdމ/ç’JØè5Áš6x\?5NšXpGé)€q e,±{‰3*cètK3=©M•àÛE«òõFV çá§^6/º²¶ïŸ…gÎÀ‰ÓYh”«ðéû¾Ÿ~äßáe[o€{n|5¼úê;`Óʩ߀J}þñéß‚½gè©ç:n=ÒhÑ,ØaƆÌä¡D€ L ­,Î{bÞSC‹û~)"K2Õ\ØkŠª;ñõ´„ÁJ7Ù²±L©-uá$A½3³áB…/›°V÷¥ÊÊÁ¬¹¾^rU?]…Ã#exöÈì=: ÷ïxXIùïÂ@ÿ2¸vãåpë…WÂ/ßù‹°nÙ©Ü€|¦èU«ÑD^PRÐ…M^ÇÖ†±jøæ3¦z#t÷—Û6ü¼Gè~x E%,9–t­5 ‰oÐhÖBÑr$3"´yÃÈ„ßÖ³=éHz)„nëxœ¡£@~ˆNÄI &*kAsâf¢H¯>eÛú®¨Zœ+Â{K½€…îþrËš7Â\mJñ– CÀ†í$, 4Hê{(ÜÔl©,‚d)ÑØÖB@ƾ‡°}jøswGI/U¢s_¢|#¦«Ç)ÈIBmoÎ>¥<ÈT9sU¯i?û…k‹ÐÝ“óãâçG6 £c#pïöt¥ºŽ„{ÝÖ_‡×n~ôVx¹Û•Æ,”kÓê˜iÓj*5¹Çx¢î—¦jŒÍJêàa VAK!›”hˆvu‘ˆÃ*4gÜçHš‹ËG§`&¼['Œ‘l¬Å$ÖHè!†¥ºw¡5öá¾lZS„í:/ÓˆÏþô¾ o}ñÓå¼™¼T©ð×®~-M<ÇÎŒx)¢z””61adz¯ŸÍ‰`ã~7 ÒÆInÁžxŒíI1Fˆ–µŠùžÐý«ì1úƒê¿Ãޤ—JèLYmkH5Ù>,¹G,ÄŠ’ÉUž16"IX€  \u:Ìýª‹z`û^£œR¾÷îüì>¾¶®Ù’úé- Ã+ïðs|eÏ_x[²ÁN®VB^ o”,ŸcëÌä"á\ Â$a1µ¶«×ö;’NÃF%Jæ¦d+JE(xm]¶ 1 8™j ÂYí½°Y¡h¶®+ÁŠåE¡›;“…é‰1øøw?ÎoZ]«î"@Q2õÞT‡Ñ¦Â“tmŒmk ¦¹BZ,'`UQ'Ì:’^ªž(‚l£qÝ\ˆ g5£êL)FFSG–!pÜ–ëÿí7&D¸a[_<18 Eøÿ¿û8=yú9¸uÒÍ0¤;¢…pÔ”±ÖæõZ™oFÍÐý3" CŽL¸­Ðà#ú»ïunô´$: W²ÏÍ„ ´Ïo¤é¿EŽëpÄNáâ\aÁ$êŠâWk ¸ú¢nœ‰mul-À±ào:رU´¢0‰Jeᾦ».’CLô]Ð&¦ ÏxŸ¶3 BL$$HfÜ.uî®ðÄR=a…°ª•±…&¤Ä ´\ˆ„ÀØS!ÍŠvÔ646Лõ²Û<©<¯P‚}óïáèØ±s'ËÉTÍ)Ê,U¦±HmnÝ0î;ÀÍlÈ6—©‘²ë:õÞÿWuÍY»BS×1N c›1ê5J>u´¨Âf£Eæc£NÛž£îívÃŽ°q]W»ck³9¡îÃþ{_øós'Ñͪ©±9]n•œ¶V=öba¦¦€–„— ^dpmWhUóIGÊi¨îI˜%|-h/K1×bY¡`«\²ƒ{"`€öÉEíצ­®ËG¿æ–A(ê–áÞn=ðw÷>÷È—žë!‘mJ V!…¡&JUÄdŠ$*\©V“X ÿš:žt¤Ü B·U1â¤o7" ÄðM®WvØc´HôVHß…XBq_K#ð:_ý•7†¿ B]÷îOüì8²óêÌz‹É;ò’.8Å“$3Èœ‡Ù0SRÝ9ÏZL‡–†¡ƒ Þ.GµƒÝRo €¡àE®†WB¨F*mjSjQdƒH"ÊRó]ù–Ëzàö›†üd—ùsrE8>vîù¿ïc¶×Q²mƒh;ÅØíÄh2‘›K¼Ö—l ÉÅ&,ÕgY†î]ëËê¸Ïµeê¡Çjvo7ŠqЖ/¤¸”TNµ”ª—Æ%l›ßÞð$;ÀÝ×õÃ7û—©57g±ž<°^ùþ_€'>}nôw³œ’µ‡™™‡Q “«›Îb‘R”™HÍ FrDLí3ÿ]GÂi:Æ¨îæ¹$©]ff“yc-i©DÑ„Drv“Ø®‡ ’ išÓi¾ºt´:*ÊFŵ}pÏ]+`°?¯D}³N|©ž>ô,¼â>ò­¿ïˆ”![Ì8—Žkº$9éjâ&fÑ .¿€„M!¢ê¶ŠAæw Eû>ý¡:ñ‰h_o7Ò‘è¶^ dÁ8À£Ä麊¼/ÝêGæêŽÅvÓ2=üycœ›÷¯¿ë «à¶¡·;ë|¶§&'à]ý-¸ëO~¾òØ×S­H£[QDaâÁ‰Ùˆaˆ7ÙRÎhQí9·`¦Çd8Eª÷©sß®)@®ƒe,>Öݦ‘¹±ˆ×®C‚Àæ³C8³ªB– §Ê‡’g>l‚†¿)I½^®6 ¯+¯ºenº¬¶œgáÄX¦fjðÍGïƒo>þ \¹érxý5wÀ]W¼ ¶¬Ü«WA6—LÍÕ&½ÔU]ÿýÌìq81½×«km²€I2¿Ÿ‹a4 .&QAVó>šJ÷»Z'"¢_ÔËâÈ·„N–û%í³j¤ A\}ª»ÆÖŒ±5Îæ†i$µ€ŠÚÆ~x€þž,¼äÊ~x‘"øñ©:œ8[…³“5›¨Á™©CðñÇÿ>·ã°ap9\¸òBØ8¼Vô À²¾aظbtº`¦2³Š°§ªcÞ117 Óµ1¯SélmZ›RÃrŽªšÓsÍÖ Ç 9NR¸† —ä*Ù2 (2fZ{®§Ôq::ÒM›Ð)vŒ W$F™@V€_Ø4§r@Ìw*/"o³Ænh¿Î\]S¼úÌ@o†ûKf@}zekõTë;`¢ñ LÖöAøÑ8®J­ÿ3ê ™LVýŸS*»2 (»À¥2!ã~DaM¸âÈÝ ó£1ëËdÔî÷µ“QõßO©ßó°#ÛNIô¸âœ±˜ÑÙÉ¢á°ÌĈ,ŠÊÀùöÙþ$A¢©˜óR>d¶´ÌLÝNXlÀÔL" S j$Á5åbÉ‚¸šœÝ–Èx,ŒYôÌìPïý¼zü‘#ÙN‚q¶òÙ¶æžì…„*¦œÍÖ"”A5 r} ¢æ2æ  Dà(B \ËfÆ'o­.•½6ñDH(‡@ ÝOѦAÊ ’iÆ®µ¥|°m”5†=ÈDðãê¿Û‘Ÿ+Û£q&'ñ‚vÆmÜÀ!ˆ÷›sgBJ$Žx6¿-]MÌžg\ç˜`Œ7Wož¸l»¶IÐQF²¶Ì k—Њh8Ò=#©ø‡B6V;xDÿ[_pdz® =œµf¤µQÕM‘-lR(ŒEiÃ*#·QQhç‹6ðù}b/® gÿ2ªµ-ã+¢U¡ÀØÔŠ’ü¶á…Ô×r8¼5 Z nh°í^uÞçÔ㿪£æ2ÒΡÇÕog÷X°‚«ÉÑ&@À ¬¤o"¿Œ_˜“(Ihªê6ÄÑÎ Y$fEÔf<¬¤BM‰„l5‹;‘ÈÒÜìñÃ,Å1[FòG“”Ϊ§§Õ9Ï€W ö¨“žU:œðŒ#Ëç‚Ð)†ØYu‰r#"ߤcÈp}SD’O”ºl”gwµ k»ImøΨq¦ƒEk‘4«¹c»¡Lµ^ÎÏ$ö s÷¿\=?©ªÇgÔkºiÝ¾æ¡ 9V žOª»¥â/ËBq2‚A›1‚sйi' ÕF‘xUœãTAÆÁž|Y)©)“ƒ1œÐÖÏÝdp¶Òºq¾p°¯©x=æ^ %HqÊ#\„#¾„ƧÔ9ûÕq|Ÿ·#èç-'éQ…1°ƒjaP•µL¦ØffD\šSç"µ¦±Õb"¿uÖ#hR°¼Ñjw•§në2ȻԹ»ÔëÇÕI“nË;Bà8“ÒgJCâ‰bÜL¬† ”%všàl®8†C4'bC 3û–ñèRÓ‚èfÕãé¦Í¬ýÐ;=) ¸ÇG»=Ü 7$ѳì~Cˆñ§“E…G82“YP²‰¤Ú\ÊbâϹ>_(œÇÙñ‚ÎaS$Ät)ãõx´éƒ~Æ'f8 NÛ¯„ø„‹s#-BŸŠUçcp< 5r$.ò€U+¨™Â ´]lÛœÐ,@0€0Œj2¦üNĺzá¸:ï¸z®mh!¶C=? ¾Ûê´ÛªntšÐß§]åàVB6%T$¹µTªgXÅQÄ”œJÞ²Y’Ì(1›?&N½ îQOæI´ý”:©÷u験nKºñ\º’2ð.µçÔñ+‰ÔvDYõHRHÀa‰: ©ÄÁFÚ#DA³`‚J¬šx½ÍØt‚Æ>õ‚îÛ½K]ë õ÷³1œp[ÏóÐý]ŒðnõÿYõü·cUu²Ø³0Æihó#Û®'áhÈÌÉâÁïå|û‘H5qå%aìkÚÎ{Õ{ÛÕ9ÚžßuUsÛÌç ¡ÏïóßQ4pF=¾?”«A6j3¥"1i£\ˆ—˜ŒÃ¬mNR‰gÉU`ž.ÕÆ"eC㤧nkPŒ`§š£²¥q»zOÇwkX]p„nœ—„îÓÀŸ©ÿËêñ/@ªPc upÁ2~v³¾˜<‹vàz“h«ëmoªÚÚmµS}@?ê÷*nÛ¸ñÂ'tŸî>¬þ×væ'Àê¢1/ÄÃKª{ˆè‰gA•Ü ‹^¤Øˆ’ÌZÍÖê¶V½÷¨k*‚öPsãÇ›ÐýñYС•Wô0$KL0'¸®l•XçãßU;ñ.0ê3%H¢ÝV¨ û€úNý÷pÔì†#ôØñoŠLÞ¨hëŸÕóeáÀ4I¸ «1‰‘’K(T‘ñÞ×RX§KVo>ãµ—œq¸y4ÜívÃúâÇwÝ­u¯M²mo!nd¤:”á5¡þÔ)”Zïôš¼à’£êÇÔ{®Ènt€ÐõxTØëÕãgÔq‰œÊ†1ªvÀnGœ?¨d¯§fûõÅÔ¡ˆPã3îö¹áƹ%t=t„×+þ‹²£¯‰ïÈѲÛu‘­nëÐÏݾtöÔnMäcŠÈ§ÝmrÃó‡ÐõС?¡ŽO*~¹!ÔÁÒ ¯Ú'Ñn%¡u¦•îÀ±K7¦ˆÛe\¹áÆó„ÐõЙV?YÈâ“_P£Ü{¼¼h~ûuÇÜpÃs8\Oi7ÜxÁŒ[7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún¸áÝ 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún¸áÝ 7Üp„î†n8Bwà Gèn¸á†#t7Üpún¸áÝ 7Üp„î†n8Bwà 7¡»á†ŽÐÝpún¸áÝ 7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún8Bwà 7¡»á†Ï«ñÿbbÅžÿIEND®B`‚PyQt-gpl-5.5.1/examples/quick/canvas/contents/ScrollBar.qml0000644000076500000240000000647712613140041023724 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Mobility Components. ** ** $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 Digia Plc and its Subsidiary(-ies) 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 Item { id: scrollBar // The properties that define the scrollbar's state. // position and pageSize are in the range 0.0 - 1.0. They are relative to the // height of the page, i.e. a pageSize of 0.5 means that you can see 50% // of the height of the view. // orientation can be either 'Vertical' or 'Horizontal' property real position property real pageSize property string orientation : "Vertical" property alias bgColor: background.color property alias fgColor: thumb.color // A light, semi-transparent background Rectangle { id: background radius: orientation == 'Vertical' ? (width/2 - 1) : (height/2 - 1) color: "white"; opacity: 0.3 anchors.fill: parent } // Size the bar to the required size, depending upon the orientation. Rectangle { id: thumb opacity: 0.7 color: "black" radius: orientation == 'Vertical' ? (width/2 - 1) : (height/2 - 1) x: orientation == 'Vertical' ? 1 : (scrollBar.position * (scrollBar.width-2) + 1) y: orientation == 'Vertical' ? (scrollBar.position * (scrollBar.height-2) + 1) : 1 width: orientation == 'Vertical' ? (parent.width-2) : (scrollBar.pageSize * (scrollBar.width-2)) height: orientation == 'Vertical' ? (scrollBar.pageSize * (scrollBar.height-2)) : (parent.height-2) } } PyQt-gpl-5.5.1/examples/quick/canvas/contents/Slider.qml0000644000076500000240000000751312613140041023253 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtQuick module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id:slider property real min:0 property real max:1 property real value: min + (max - min) * (bar.x / (foo.width - bar.width)) property real init:min+(max-min)/2 property string name:"Slider" Component.onCompleted: setValue(init) function setValue(v) { if (min < max) bar.x = v/(max - min) * (foo.width - bar.width); } Rectangle { id:sliderName anchors.left:parent.left height: childrenRect.height width:childrenRect.width anchors.verticalCenter:parent.verticalCenter Text { text:slider.name font.pointSize:12 } } Item { id: foo height: 6 width: parent.width - 4 - sliderName.width anchors.verticalCenter:parent.verticalCenter anchors.left:sliderName.right anchors.leftMargin:5 Rectangle { height: parent.height anchors.left: parent.left anchors.right: bar.horizontalCenter color: "blue" radius: 3 } Rectangle { height: parent.height anchors.left: bar.horizontalCenter anchors.right: parent.right color: "gray" radius: 3 } Rectangle { anchors.fill: parent color: "transparent" radius: 3 border.width: 2 border.color: "black" } Rectangle { id: bar y: -7 width: 20 height: 20 radius: 15 color: "white" border.width: 2 border.color: "black" MouseArea { anchors.fill: parent drag.target: parent drag.axis: Drag.XAxis drag.minimumX: 0 drag.maximumX: foo.width - parent.width } } } } PyQt-gpl-5.5.1/examples/quick/canvas/contents/TitleBar.qml0000644000076500000240000000541212613140041023533 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 Item { id: titleBar property string title: "" BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } Image { id: quitButton anchors.left: parent.left//; anchors.leftMargin: 0 anchors.verticalCenter: parent.verticalCenter source: "images/quit.png" MouseArea { anchors.fill: parent onClicked: Qt.quit() } } Text { id: categoryText anchors { left: quitButton.right; right: parent.right; //leftMargin: 10; rightMargin: 10 verticalCenter: parent.verticalCenter } elide: Text.ElideLeft text: title font.bold: true; font.pointSize: 20; color: "White"; style: Text.Raised; styleColor: "Black" } } PyQt-gpl-5.5.1/examples/quick/canvas/contents/ToolBar.qml0000644000076500000240000000500412613140041023364 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 Item { id: toolbar property variant labels signal buttonClicked(int index) BorderImage { source: "images/titlebar.sci" width: parent.width height: parent.height + 14 y: -7 } Row { y: 3 anchors.horizontalCenter: parent.horizontalCenter Repeater { model: toolbar.labels delegate: Button { text: modelData onClicked: toolbar.buttonClicked(model.index) } } } } PyQt-gpl-5.5.1/examples/quick/canvas/quadraticCurveTo/0000755000076500000240000000000012613140041022740 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/quadraticCurveTo/quadraticCurveTo.qml0000644000076500000240000001160012613140041026736 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Quadratic Curve"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"steelblue" property string fillStyle:"yellow" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value antialiasing: true onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); // ![0] ctx.beginPath(); ctx.moveTo(75,25); ctx.quadraticCurveTo(25,25,25,62.5); ctx.quadraticCurveTo(25,100,50,100); ctx.quadraticCurveTo(50,120,30,125); ctx.quadraticCurveTo(60,120,65,100); ctx.quadraticCurveTo(125,100,125,62.5); ctx.quadraticCurveTo(125,25,75,25); ctx.closePath(); // ![0] if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); // ![1] ctx.fillStyle="green"; ctx.font = "Bold 15px"; ctx.fillText("QML酷毙了", 30, 60); // ![1] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/canvas/roundedrect/0000755000076500000240000000000012613140041021771 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/roundedrect/roundedrect.qml0000644000076500000240000001171612613140041025030 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Rounded rectangle"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property int radius: rCtrl.value property int rectx: rxCtrl.value property int recty: ryCtrl.value property int rectWidth: width - 2*rectx property int rectHeight: height - 2*recty property string strokeStyle:"blue" property string fillStyle:"steelblue" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onRadiusChanged:requestPaint(); onRectxChanged:requestPaint(); onRectyChanged:requestPaint(); onAlphaChanged:requestPaint(); onPaint: { var ctx = getContext("2d"); ctx.save(); ctx.clearRect(0,0,canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.lineWidth = canvas.lineWidth ctx.fillStyle = canvas.fillStyle ctx.globalAlpha = canvas.alpha ctx.beginPath(); ctx.moveTo(rectx+radius,recty); // top side ctx.lineTo(rectx+rectWidth-radius,recty); // draw top right corner ctx.arcTo(rectx+rectWidth,recty,rectx+rectWidth,recty+radius,radius); ctx.lineTo(rectx+rectWidth,recty+rectHeight-radius); // right side // draw bottom right corner ctx.arcTo(rectx+rectWidth,recty+rectHeight,rectx+rectWidth-radius,recty+rectHeight,radius); ctx.lineTo(rectx+radius,recty+rectHeight); // bottom side // draw bottom left corner ctx.arcTo(rectx,recty+rectHeight,rectx,recty+rectHeight-radius,radius); ctx.lineTo(rectx,recty+radius); // left side // draw top left corner ctx.arcTo(rectx,recty,rectx+radius,recty,radius); ctx.closePath(); if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:rxCtrl; width:300; height:20; min:5; max:30; init:10; name:"rectx"} Slider {id:ryCtrl; width:300; height:20; min:5; max:30; init:10; name:"recty"} Slider {id:rCtrl; width:300; height:20; min:10; max:100; init:40; name:"Radius"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/canvas/smile/0000755000076500000240000000000012613140041020564 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/smile/smile.qml0000644000076500000240000001170712613140041022416 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Smile with arcs"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property string strokeStyle:"green" property string fillStyle:"yellow" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); ctx.beginPath(); ctx.moveTo(75 + 50 * Math.cos(0), 75 - 50 * Math.sin(Math.PI*2)); ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle ctx.moveTo(75,70); ctx.arc(75,70,35,0,Math.PI,false); // Mouth (clockwise) ctx.moveTo(60,65); ctx.arc(60,65,5,0,Math.PI*2,true); // Left eye ctx.moveTo(90 + 5 * Math.cos(0), 65 - 5 * Math.sin(Math.PI*2)); ctx.moveTo(90,65); ctx.arc(90,65,5,0,Math.PI*2,true); // Right eye ctx.closePath(); if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/canvas/squircle/0000755000076500000240000000000012613140041021302 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/squircle/squircle.png0000644000076500000240000000140312613140041023635 0ustar philstaff00000000000000‰PNG  IHDRÔÌDÝ:0PLTEÿÿÿPPPÌÌÌ000@@@¶¶¶tttbbbŠŠŠ"""æææžžž §“D‰ŽIDATH T=ˆAþòãm.·¹ÁC! 6‡ÕÊ…V±PDP°8‹ÛS‰‚‡6±?¸K› (Jš(rW ­®’kì=DðÍÎLÞ›d7>Ø™7ïûÞûæÍ d›ÿôÛF6ê"‡ážtSx•½Å^Ž×ÊˇîÚ®Ò¸0•ó¡ÝFdé“s1Ägœw£›²³Ç€4.Låâx˳¤~`âÓ¤p"‘šâ²”Ýò,©¼më.†zJ“š«'R̵}»‚ÙÆ,©¸4Ò‰q¶Ti/‘b®¦Bte¶1KÊ&±vÓº*_K¤˜k=îÊlƒw7J‹ëùk÷»ºj¶X»Åp®3ÂMŽ“WÝì ®E#Ì?ñ:MÆ"zåøž¬ ¯_8š!UÊ7p`‹%s+ð\n} ,VH„Ýê•ÓmÆ"”°ì$Yvh…XÎÚZl«w ì!*5.'€[FQGh®©…UeCò^R¶ P$¦ŒJ¶†êòExYRØÖ94*SR_o킲GäG©/¤.ô¡Ô)¨w& ¸—Ñn“1%õŒ>a…%”A!(Ö0¥½C®'¸ðë¨\n]]•½+쓱¼Â®Ì.Ô‘‰ë$,Ö8¥ý¥#Ô =ú5l¹œ€"øK´d,ÂóÕ}‚üÄãS‹5N±÷¸êpñÚÿ%Ê Œš¨ÑÒÔñÓ]­=øÔuÞ:ît?®XŠÎõDi·»o´oÇ3÷›.×¼ùRÊB³¡èh¬§$¶100) M=100; if (N<0.00000000001) M=0.00000000001; ctx.save(); ctx.globalAlpha =canvas.alpha; ctx.fillStyle = "gray"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.beginPath(); var i = 0, x, y; for (i=0; i<(2*R+1); i++){ x = Math.round(i-R) + canvas.px; y = Math.round(Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(i-R),M)),1/M)) + canvas.py; if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } for (i=(2*R); i<(4*R+1); i++){ x =Math.round(3*R-i)+canvas.px; y = Math.round(-Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(3*R-i),M)),1/M)) + canvas.py; ctx.lineTo(x, y); } ctx.closePath(); if (canvas.stroke) { ctx.stroke(); } if (canvas.fill) { ctx.fill(); } ctx.fillStyle = "yellow"; ctx.font = "Helvetica 16px"; ctx.fillText("|X-" + Math.round(canvas.px) + "|^" + N + " + |Y-"+Math.round(canvas.py)+"|^" + N + " = |" + Math.round(R) + "|^" + N, canvas.px - 125, canvas.py); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:nCtrl; width:300; height:20; min:1; max:10; init:4; name:"N"} Slider {id:rCtrl; width:300; height:20; min:30; max:180; init:100; name:"Radius"} Slider {id:xCtrl; width:300; height:20; min:50; max:300; init:180; name:"X"} Slider {id:yCtrl; width:300; height:20; min:30; max:300; init:220; name:"Y"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/canvas/tiger/0000755000076500000240000000000012613140041020565 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/canvas/tiger/tiger.js0000644000076500000240000026675412613140041022261 0ustar philstaff00000000000000var tiger = [ {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-122.304 84.285C-122.304 84.285 -122.203 86.179 -123.027 86.16C-123.851 86.141 -140.305 38.066 -160.833 40.309C-160.833 40.309 -143.05 32.956 -122.304 84.285z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-118.774 81.262C-118.774 81.262 -119.323 83.078 -120.092 82.779C-120.86 82.481 -119.977 31.675 -140.043 26.801C-140.043 26.801 -120.82 25.937 -118.774 81.262z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-91.284 123.59C-91.284 123.59 -89.648 124.55 -90.118 125.227C-90.589 125.904 -139.763 113.102 -149.218 131.459C-149.218 131.459 -145.539 112.572 -91.284 123.59z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-94.093 133.801C-94.093 133.801 -92.237 134.197 -92.471 134.988C-92.704 135.779 -143.407 139.121 -146.597 159.522C-146.597 159.522 -149.055 140.437 -94.093 133.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-98.304 128.276C-98.304 128.276 -96.526 128.939 -96.872 129.687C-97.218 130.435 -147.866 126.346 -153.998 146.064C-153.998 146.064 -153.646 126.825 -98.304 128.276z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-109.009 110.072C-109.009 110.072 -107.701 111.446 -108.34 111.967C-108.979 112.488 -152.722 86.634 -166.869 101.676C-166.869 101.676 -158.128 84.533 -109.009 110.072z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-116.554 114.263C-116.554 114.263 -115.098 115.48 -115.674 116.071C-116.25 116.661 -162.638 95.922 -174.992 112.469C-174.992 112.469 -168.247 94.447 -116.554 114.263z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-119.154 118.335C-119.154 118.335 -117.546 119.343 -118.036 120.006C-118.526 120.669 -167.308 106.446 -177.291 124.522C-177.291 124.522 -173.066 105.749 -119.154 118.335z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-108.42 118.949C-108.42 118.949 -107.298 120.48 -107.999 120.915C-108.7 121.35 -148.769 90.102 -164.727 103.207C-164.727 103.207 -153.862 87.326 -108.42 118.949z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-128.2 90C-128.2 90 -127.6 91.8 -128.4 92C-129.2 92.2 -157.8 50.2 -177.001 57.8C-177.001 57.8 -161.8 46 -128.2 90z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-127.505 96.979C-127.505 96.979 -126.53 98.608 -127.269 98.975C-128.007 99.343 -164.992 64.499 -182.101 76.061C-182.101 76.061 -169.804 61.261 -127.505 96.979z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-127.62 101.349C-127.62 101.349 -126.498 102.88 -127.199 103.315C-127.9 103.749 -167.969 72.502 -183.927 85.607C-183.927 85.607 -173.062 69.726 -127.62 101.349z"} , {"fill": "#ffffff", "stroke":"#000000", "path":"M-129.83 103.065C-129.327 109.113 -128.339 115.682 -126.6 118.801C-126.6 118.801 -130.2 131.201 -121.4 144.401C-121.4 144.401 -121.8 151.601 -120.2 154.801C-120.2 154.801 -116.2 163.201 -111.4 164.001C-107.516 164.648 -98.793 167.717 -88.932 169.121C-88.932 169.121 -71.8 183.201 -75 196.001C-75 196.001 -75.4 212.401 -79 214.001C-79 214.001 -67.4 202.801 -77 219.601L-81.4 238.401C-81.4 238.401 -55.8 216.801 -71.4 235.201L-81.4 261.201C-81.4 261.201 -61.8 242.801 -69 251.201L-72.2 260.001C-72.2 260.001 -29 232.801 -59.8 262.401C-59.8 262.401 -51.8 258.801 -47.4 261.601C-47.4 261.601 -40.6 260.401 -41.4 262.001C-41.4 262.001 -62.2 272.401 -65.8 290.801C-65.8 290.801 -57.4 280.801 -60.6 291.601L-60.2 303.201C-60.2 303.201 -56.2 281.601 -56.6 319.201C-56.6 319.201 -37.4 301.201 -49 322.001L-49 338.801C-49 338.801 -33.8 322.401 -40.2 335.201C-40.2 335.201 -30.2 326.401 -34.2 341.601C-34.2 341.601 -35 352.001 -30.6 340.801C-30.6 340.801 -14.6 310.201 -20.6 336.401C-20.6 336.401 -21.4 355.601 -16.6 340.801C-16.6 340.801 -16.2 351.201 -7 358.401C-7 358.401 -8.2 307.601 4.6 343.601L8.6 360.001C8.6 360.001 11.4 350.801 11 345.601C11 345.601 25.8 329.201 19 353.601C19 353.601 34.2 330.801 31 344.001C31 344.001 23.4 360.001 25 364.801C25 364.801 41.8 330.001 43 328.401C43 328.401 41 370.802 51.8 334.801C51.8 334.801 57.4 346.801 54.6 351.201C54.6 351.201 62.6 343.201 61.8 340.001C61.8 340.001 66.4 331.801 69.2 345.401C69.2 345.401 71 354.801 72.6 351.601C72.6 351.601 76.6 375.602 77.8 352.801C77.8 352.801 79.4 339.201 72.2 327.601C72.2 327.601 73 324.401 70.2 320.401C70.2 320.401 83.8 342.001 76.6 313.201C76.6 313.201 87.801 321.201 89.001 321.201C89.001 321.201 75.4 298.001 84.2 302.801C84.2 302.801 79 292.401 97.001 304.401C97.001 304.401 81 288.401 98.601 298.001C98.601 298.001 106.601 304.401 99.001 294.401C99.001 294.401 84.6 278.401 106.601 296.401C106.601 296.401 118.201 312.801 119.001 315.601C119.001 315.601 109.001 286.401 104.601 283.601C104.601 283.601 113.001 247.201 154.201 262.801C154.201 262.801 161.001 280.001 165.401 261.601C165.401 261.601 178.201 255.201 189.401 282.801C189.401 282.801 193.401 269.201 192.601 266.401C192.601 266.401 199.401 267.601 198.601 266.401C198.601 266.401 211.801 270.801 213.001 270.001C213.001 270.001 219.801 276.801 220.201 273.201C220.201 273.201 229.401 276.001 227.401 272.401C227.401 272.401 236.201 288.001 236.601 291.601L239.001 277.601L241.001 280.401C241.001 280.401 242.601 272.801 241.801 271.601C241.001 270.401 261.801 278.401 266.601 299.201L268.601 307.601C268.601 307.601 274.601 292.801 273.001 288.801C273.001 288.801 278.201 289.601 278.601 294.001C278.601 294.001 282.601 270.801 277.801 264.801C277.801 264.801 282.201 264.001 283.401 267.601L283.401 260.401C283.401 260.401 290.601 261.201 290.601 258.801C290.601 258.801 295.001 254.801 297.001 259.601C297.001 259.601 284.601 224.401 303.001 243.601C303.001 243.601 310.201 254.401 306.601 235.601C303.001 216.801 299.001 215.201 303.801 214.801C303.801 214.801 304.601 211.201 302.601 209.601C300.601 208.001 303.801 209.601 303.801 209.601C303.801 209.601 308.601 213.601 303.401 191.601C303.401 191.601 309.801 193.201 297.801 164.001C297.801 164.001 300.601 161.601 296.601 153.201C296.601 153.201 304.601 157.601 307.401 156.001C307.401 156.001 307.001 154.401 303.801 150.401C303.801 150.401 282.201 95.6 302.601 117.601C302.601 117.601 314.451 131.151 308.051 108.351C308.051 108.351 298.94 84.341 299.717 80.045L-129.83 103.065z"} , {"fill": "#cc7226", "stroke":"#000000", "path":"M299.717 80.245C300.345 80.426 302.551 81.55 303.801 83.2C303.801 83.2 310.601 94 305.401 75.6C305.401 75.6 296.201 46.8 305.001 58C305.001 58 311.001 65.2 307.801 51.6C303.936 35.173 301.401 28.8 301.401 28.8C301.401 28.8 313.001 33.6 286.201 -6L295.001 -2.4C295.001 -2.4 275.401 -42 253.801 -47.2L245.801 -53.2C245.801 -53.2 284.201 -91.2 271.401 -128C271.401 -128 264.601 -133.2 255.001 -124C255.001 -124 248.601 -119.2 242.601 -120.8C242.601 -120.8 211.801 -119.6 209.801 -119.6C207.801 -119.6 173.001 -156.8 107.401 -139.2C107.401 -139.2 102.201 -137.2 97.801 -138.4C97.801 -138.4 79.4 -154.4 30.6 -131.6C30.6 -131.6 20.6 -129.6 19 -129.6C17.4 -129.6 14.6 -129.6 6.6 -123.2C-1.4 -116.8 -1.8 -116 -3.8 -114.4C-3.8 -114.4 -20.2 -103.2 -25 -102.4C-25 -102.4 -36.6 -96 -41 -86L-44.6 -84.8C-44.6 -84.8 -46.2 -77.6 -46.6 -76.4C-46.6 -76.4 -51.4 -72.8 -52.2 -67.2C-52.2 -67.2 -61 -61.2 -60.6 -56.8C-60.6 -56.8 -62.2 -51.6 -63 -46.8C-63 -46.8 -70.2 -42 -69.4 -39.2C-69.4 -39.2 -77 -25.2 -75.8 -18.4C-75.8 -18.4 -82.2 -18.8 -85 -16.4C-85 -16.4 -85.8 -11.6 -87.4 -11.2C-87.4 -11.2 -90.2 -10 -87.8 -6C-87.8 -6 -89.4 -3.2 -89.8 -1.6C-89.8 -1.6 -89 1.2 -93.4 6.8C-93.4 6.8 -99.8 25.6 -97.8 30.8C-97.8 30.8 -97.4 35.6 -100.2 37.2C-100.2 37.2 -103.8 36.8 -95.4 48.8C-95.4 48.8 -94.6 50 -97.8 52.4C-97.8 52.4 -115 56 -117.4 72.4C-117.4 72.4 -131 87.2 -131 92.4C-131 94.705 -130.729 97.852 -130.03 102.465C-130.03 102.465 -130.6 110.801 -103 111.601C-75.4 112.401 299.717 80.245 299.717 80.245z"} , {"fill": "#cc7226", "path":"M-115.6 102.6C-140.6 63.2 -126.2 119.601 -126.2 119.601C-117.4 154.001 12.2 116.401 12.2 116.401C12.2 116.401 181.001 86 192.201 82C203.401 78 298.601 84.4 298.601 84.4L293.001 67.6C228.201 21.2 209.001 44.4 195.401 40.4C181.801 36.4 184.201 46 181.001 46.8C177.801 47.6 138.601 22.8 132.201 23.6C125.801 24.4 100.459 0.649 115.401 32.4C131.401 66.4 57 71.6 40.2 60.4C23.4 49.2 47.4 78.8 47.4 78.8C65.8 98.8 31.4 82 31.4 82C-3 69.2 -27 94.8 -30.2 95.6C-33.4 96.4 -38.2 99.6 -39 93.2C-39.8 86.8 -47.31 70.099 -79 96.4C-99 113.001 -112.8 91 -112.8 91L-115.6 102.6z"} , {"fill": "#e87f3a", "path":"M133.51 25.346C127.11 26.146 101.743 2.407 116.71 34.146C133.31 69.346 58.31 73.346 41.51 62.146C24.709 50.946 48.71 80.546 48.71 80.546C67.11 100.546 32.709 83.746 32.709 83.746C-1.691 70.946 -25.691 96.546 -28.891 97.346C-32.091 98.146 -36.891 101.346 -37.691 94.946C-38.491 88.546 -45.87 72.012 -77.691 98.146C-98.927 115.492 -112.418 94.037 -112.418 94.037L-115.618 104.146C-140.618 64.346 -125.546 122.655 -125.546 122.655C-116.745 157.056 13.509 118.146 13.509 118.146C13.509 118.146 182.31 87.746 193.51 83.746C204.71 79.746 299.038 86.073 299.038 86.073L293.51 68.764C228.71 22.364 210.31 46.146 196.71 42.146C183.11 38.146 185.51 47.746 182.31 48.546C179.11 49.346 139.91 24.546 133.51 25.346z"} , {"fill": "#ea8c4d", "path":"M134.819 27.091C128.419 27.891 103.685 3.862 118.019 35.891C134.219 72.092 59.619 75.092 42.819 63.892C26.019 52.692 50.019 82.292 50.019 82.292C68.419 102.292 34.019 85.492 34.019 85.492C-0.381 72.692 -24.382 98.292 -27.582 99.092C-30.782 99.892 -35.582 103.092 -36.382 96.692C-37.182 90.292 -44.43 73.925 -76.382 99.892C-98.855 117.983 -112.036 97.074 -112.036 97.074L-115.636 105.692C-139.436 66.692 -124.891 125.71 -124.891 125.71C-116.091 160.11 14.819 119.892 14.819 119.892C14.819 119.892 183.619 89.492 194.819 85.492C206.019 81.492 299.474 87.746 299.474 87.746L294.02 69.928C229.219 23.528 211.619 47.891 198.019 43.891C184.419 39.891 186.819 49.491 183.619 50.292C180.419 51.092 141.219 26.291 134.819 27.091z"} , {"fill": "#ec9961", "path":"M136.128 28.837C129.728 29.637 104.999 5.605 119.328 37.637C136.128 75.193 60.394 76.482 44.128 65.637C27.328 54.437 51.328 84.037 51.328 84.037C69.728 104.037 35.328 87.237 35.328 87.237C0.928 74.437 -23.072 100.037 -26.272 100.837C-29.472 101.637 -34.272 104.837 -35.072 98.437C-35.872 92.037 -42.989 75.839 -75.073 101.637C-98.782 120.474 -111.655 100.11 -111.655 100.11L-115.655 107.237C-137.455 70.437 -124.236 128.765 -124.236 128.765C-115.436 163.165 16.128 121.637 16.128 121.637C16.128 121.637 184.928 91.237 196.129 87.237C207.329 83.237 299.911 89.419 299.911 89.419L294.529 71.092C229.729 24.691 212.929 49.637 199.329 45.637C185.728 41.637 188.128 51.237 184.928 52.037C181.728 52.837 142.528 28.037 136.128 28.837z"} , {"fill": "#eea575", "path":"M137.438 30.583C131.037 31.383 106.814 7.129 120.637 39.383C137.438 78.583 62.237 78.583 45.437 67.383C28.637 56.183 52.637 85.783 52.637 85.783C71.037 105.783 36.637 88.983 36.637 88.983C2.237 76.183 -21.763 101.783 -24.963 102.583C-28.163 103.383 -32.963 106.583 -33.763 100.183C-34.563 93.783 -41.548 77.752 -73.763 103.383C-98.709 122.965 -111.273 103.146 -111.273 103.146L-115.673 108.783C-135.473 73.982 -123.582 131.819 -123.582 131.819C-114.782 166.22 17.437 123.383 17.437 123.383C17.437 123.383 186.238 92.983 197.438 88.983C208.638 84.983 300.347 91.092 300.347 91.092L295.038 72.255C230.238 25.855 214.238 51.383 200.638 47.383C187.038 43.383 189.438 52.983 186.238 53.783C183.038 54.583 143.838 29.783 137.438 30.583z"} , {"fill": "#f1b288", "path":"M138.747 32.328C132.347 33.128 106.383 9.677 121.947 41.128C141.147 79.928 63.546 80.328 46.746 69.128C29.946 57.928 53.946 87.528 53.946 87.528C72.346 107.528 37.946 90.728 37.946 90.728C3.546 77.928 -20.454 103.528 -23.654 104.328C-26.854 105.128 -31.654 108.328 -32.454 101.928C-33.254 95.528 -40.108 79.665 -72.454 105.128C-98.636 125.456 -110.891 106.183 -110.891 106.183L-115.691 110.328C-133.691 77.128 -122.927 134.874 -122.927 134.874C-114.127 169.274 18.746 125.128 18.746 125.128C18.746 125.128 187.547 94.728 198.747 90.728C209.947 86.728 300.783 92.764 300.783 92.764L295.547 73.419C230.747 27.019 215.547 53.128 201.947 49.128C188.347 45.128 190.747 54.728 187.547 55.528C184.347 56.328 145.147 31.528 138.747 32.328z"} , {"fill": "#f3bf9c", "path":"M140.056 34.073C133.655 34.873 107.313 11.613 123.255 42.873C143.656 82.874 64.855 82.074 48.055 70.874C31.255 59.674 55.255 89.274 55.255 89.274C73.655 109.274 39.255 92.474 39.255 92.474C4.855 79.674 -19.145 105.274 -22.345 106.074C-25.545 106.874 -30.345 110.074 -31.145 103.674C-31.945 97.274 -38.668 81.578 -71.145 106.874C-98.564 127.947 -110.509 109.219 -110.509 109.219L-115.709 111.874C-131.709 81.674 -122.273 137.929 -122.273 137.929C-113.473 172.329 20.055 126.874 20.055 126.874C20.055 126.874 188.856 96.474 200.056 92.474C211.256 88.474 301.22 94.437 301.22 94.437L296.056 74.583C231.256 28.183 216.856 54.874 203.256 50.874C189.656 46.873 192.056 56.474 188.856 57.274C185.656 58.074 146.456 33.273 140.056 34.073z"} , {"fill": "#f5ccb0", "path":"M141.365 35.819C134.965 36.619 107.523 13.944 124.565 44.619C146.565 84.219 66.164 83.819 49.364 72.619C32.564 61.419 56.564 91.019 56.564 91.019C74.964 111.019 40.564 94.219 40.564 94.219C6.164 81.419 -17.836 107.019 -21.036 107.819C-24.236 108.619 -29.036 111.819 -29.836 105.419C-30.636 99.019 -37.227 83.492 -69.836 108.619C-98.491 130.438 -110.127 112.256 -110.127 112.256L-115.727 113.419C-130.128 85.019 -121.618 140.983 -121.618 140.983C-112.818 175.384 21.364 128.619 21.364 128.619C21.364 128.619 190.165 98.219 201.365 94.219C212.565 90.219 301.656 96.11 301.656 96.11L296.565 75.746C231.765 29.346 218.165 56.619 204.565 52.619C190.965 48.619 193.365 58.219 190.165 59.019C186.965 59.819 147.765 35.019 141.365 35.819z"} , {"fill": "#f8d8c4", "path":"M142.674 37.565C136.274 38.365 108.832 15.689 125.874 46.365C147.874 85.965 67.474 85.565 50.674 74.365C33.874 63.165 57.874 92.765 57.874 92.765C76.274 112.765 41.874 95.965 41.874 95.965C7.473 83.165 -16.527 108.765 -19.727 109.565C-22.927 110.365 -27.727 113.565 -28.527 107.165C-29.327 100.765 -35.786 85.405 -68.527 110.365C-98.418 132.929 -109.745 115.293 -109.745 115.293L-115.745 114.965C-129.346 88.564 -120.963 144.038 -120.963 144.038C-112.163 178.438 22.673 130.365 22.673 130.365C22.673 130.365 191.474 99.965 202.674 95.965C213.874 91.965 302.093 97.783 302.093 97.783L297.075 76.91C232.274 30.51 219.474 58.365 205.874 54.365C192.274 50.365 194.674 59.965 191.474 60.765C188.274 61.565 149.074 36.765 142.674 37.565z"} , {"fill": "#fae5d7", "path":"M143.983 39.31C137.583 40.11 110.529 17.223 127.183 48.11C149.183 88.91 68.783 87.31 51.983 76.11C35.183 64.91 59.183 94.51 59.183 94.51C77.583 114.51 43.183 97.71 43.183 97.71C8.783 84.91 -15.217 110.51 -18.417 111.31C-21.618 112.11 -26.418 115.31 -27.218 108.91C-28.018 102.51 -34.346 87.318 -67.218 112.11C-98.345 135.42 -109.363 118.329 -109.363 118.329L-115.764 116.51C-128.764 92.51 -120.309 147.093 -120.309 147.093C-111.509 181.493 23.983 132.11 23.983 132.11C23.983 132.11 192.783 101.71 203.983 97.71C215.183 93.71 302.529 99.456 302.529 99.456L297.583 78.074C232.783 31.673 220.783 60.11 207.183 56.11C193.583 52.11 195.983 61.71 192.783 62.51C189.583 63.31 150.383 38.51 143.983 39.31z"} , {"fill": "#fcf2eb", "path":"M145.292 41.055C138.892 41.855 112.917 18.411 128.492 49.855C149.692 92.656 70.092 89.056 53.292 77.856C36.492 66.656 60.492 96.256 60.492 96.256C78.892 116.256 44.492 99.456 44.492 99.456C10.092 86.656 -13.908 112.256 -17.108 113.056C-20.308 113.856 -25.108 117.056 -25.908 110.656C-26.708 104.256 -32.905 89.232 -65.908 113.856C-98.273 137.911 -108.982 121.365 -108.982 121.365L-115.782 118.056C-128.582 94.856 -119.654 150.147 -119.654 150.147C-110.854 184.547 25.292 133.856 25.292 133.856C25.292 133.856 194.093 103.456 205.293 99.456C216.493 95.456 302.965 101.128 302.965 101.128L298.093 79.237C233.292 32.837 222.093 61.856 208.493 57.856C194.893 53.855 197.293 63.456 194.093 64.256C190.892 65.056 151.692 40.255 145.292 41.055z"} , {"fill": "#ffffff", "path":"M-115.8 119.601C-128.6 97.6 -119 153.201 -119 153.201C-110.2 187.601 26.6 135.601 26.6 135.601C26.6 135.601 195.401 105.2 206.601 101.2C217.801 97.2 303.401 102.8 303.401 102.8L298.601 80.4C233.801 34 223.401 63.6 209.801 59.6C196.201 55.6 198.601 65.2 195.401 66C192.201 66.8 153.001 42 146.601 42.8C140.201 43.6 114.981 19.793 129.801 51.6C152.028 99.307 69.041 89.227 54.6 79.6C37.8 68.4 61.8 98 61.8 98C80.2 118.001 45.8 101.2 45.8 101.2C11.4 88.4 -12.6 114.001 -15.8 114.801C-19 115.601 -23.8 118.801 -24.6 112.401C-25.4 106 -31.465 91.144 -64.6 115.601C-98.2 140.401 -108.6 124.401 -108.6 124.401L-115.8 119.601z"} , {"fill": "#000000", "path":"M-74.2 149.601C-74.2 149.601 -81.4 161.201 -60.6 174.401C-60.6 174.401 -59.2 175.801 -77.2 171.601C-77.2 171.601 -83.4 169.601 -85 159.201C-85 159.201 -89.8 154.801 -94.6 149.201C-99.4 143.601 -74.2 149.601 -74.2 149.601z"} , {"fill": "#cccccc", "path":"M65.8 102C65.8 102 83.498 128.821 82.9 133.601C81.6 144.001 81.4 153.601 84.6 157.601C87.801 161.601 96.601 194.801 96.601 194.801C96.601 194.801 96.201 196.001 108.601 158.001C108.601 158.001 120.201 142.001 100.201 123.601C100.201 123.601 65 94.8 65.8 102z"} , {"fill": "#000000", "path":"M-54.2 176.401C-54.2 176.401 -43 183.601 -57.4 214.801L-51 212.401C-51 212.401 -51.8 223.601 -55 226.001L-47.8 222.801C-47.8 222.801 -43 230.801 -47 235.601C-47 235.601 -30.2 243.601 -31 250.001C-31 250.001 -24.6 242.001 -28.6 235.601C-32.6 229.201 -39.8 233.201 -39 214.801L-47.8 218.001C-47.8 218.001 -42.2 209.201 -42.2 202.801L-50.2 205.201C-50.2 205.201 -34.731 178.623 -45.4 177.201C-51.4 176.401 -54.2 176.401 -54.2 176.401z"} , {"fill": "#cccccc", "path":"M-21.8 193.201C-21.8 193.201 -19 188.801 -21.8 189.601C-24.6 190.401 -55.8 205.201 -61.8 214.801C-61.8 214.801 -27.4 190.401 -21.8 193.201z"} , {"fill": "#cccccc", "path":"M-11.4 201.201C-11.4 201.201 -8.6 196.801 -11.4 197.601C-14.2 198.401 -45.4 213.201 -51.4 222.801C-51.4 222.801 -17 198.401 -11.4 201.201z"} , {"fill": "#cccccc", "path":"M1.8 186.001C1.8 186.001 4.6 181.601 1.8 182.401C-1 183.201 -32.2 198.001 -38.2 207.601C-38.2 207.601 -3.8 183.201 1.8 186.001z"} , {"fill": "#cccccc", "path":"M-21.4 229.601C-21.4 229.601 -21.4 223.601 -24.2 224.401C-27 225.201 -63 242.801 -69 252.401C-69 252.401 -27 226.801 -21.4 229.601z"} , {"fill": "#cccccc", "path":"M-20.2 218.801C-20.2 218.801 -19 214.001 -21.8 214.801C-23.8 214.801 -50.2 226.401 -56.2 236.001C-56.2 236.001 -26.6 214.401 -20.2 218.801z"} , {"fill": "#cccccc", "path":"M-34.6 266.401L-44.6 274.001C-44.6 274.001 -34.2 266.401 -30.6 267.601C-30.6 267.601 -37.4 278.801 -38.2 284.001C-38.2 284.001 -27.8 271.201 -22.2 271.601C-22.2 271.601 -14.6 272.001 -14.6 282.801C-14.6 282.801 -9 272.401 -5.8 272.801C-5.8 272.801 -4.6 279.201 -5.8 286.001C-5.8 286.001 -1.8 278.401 2.2 280.001C2.2 280.001 8.6 278.001 7.8 289.601C7.8 289.601 7.8 300.001 7 302.801C7 302.801 12.6 276.401 15 276.001C15 276.001 23 274.801 27.8 283.601C27.8 283.601 23.8 276.001 28.6 278.001C28.6 278.001 39.4 279.601 42.6 286.401C42.6 286.401 35.8 274.401 41.4 277.601C41.4 277.601 48.2 277.601 49.4 284.001C49.4 284.001 57.8 305.201 59.8 306.801C59.8 306.801 52.2 285.201 53.8 285.201C53.8 285.201 51.8 273.201 57 288.001C57 288.001 53.8 274.001 59.4 274.801C65 275.601 69.4 285.601 77.8 283.201C77.8 283.201 87.401 288.801 89.401 219.601L-34.6 266.401z"} , {"fill": "#000000", "path":"M-29.8 173.601C-29.8 173.601 -15 167.601 25 173.601C25 173.601 32.2 174.001 39 165.201C45.8 156.401 72.6 149.201 79 151.201L88.601 157.601L89.401 158.801C89.401 158.801 101.801 169.201 102.201 176.801C102.601 184.401 87.801 232.401 78.2 248.401C68.6 264.401 59 276.801 39.8 274.401C39.8 274.401 19 270.401 -6.6 274.401C-6.6 274.401 -35.8 272.801 -38.6 264.801C-41.4 256.801 -27.4 241.601 -27.4 241.601C-27.4 241.601 -23 233.201 -24.2 218.801C-25.4 204.401 -25 176.401 -29.8 173.601z"} , {"fill": "#e5668c", "path":"M-7.8 175.601C0.6 194.001 -29 259.201 -29 259.201C-31 260.801 -16.34 266.846 -6.2 264.401C4.746 261.763 45 266.001 45 266.001C68.6 250.401 81.4 206.001 81.4 206.001C81.4 206.001 91.801 182.001 74.2 178.801C56.6 175.601 -7.8 175.601 -7.8 175.601z"} , {"fill": "#b23259", "path":"M-9.831 206.497C-6.505 193.707 -4.921 181.906 -7.8 175.601C-7.8 175.601 54.6 182.001 65.8 161.201C70.041 153.326 84.801 184.001 84.4 193.601C84.4 193.601 21.4 208.001 6.6 196.801L-9.831 206.497z"} , {"fill": "#a5264c", "path":"M-5.4 222.801C-5.4 222.801 -3.4 230.001 -5.8 234.001C-5.8 234.001 -7.4 234.801 -8.6 235.201C-8.6 235.201 -7.4 238.801 -1.4 240.401C-1.4 240.401 0.6 244.801 3 245.201C5.4 245.601 10.2 251.201 14.2 250.001C18.2 248.801 29.4 244.801 29.4 244.801C29.4 244.801 35 241.601 43.8 245.201C43.8 245.201 46.175 244.399 46.6 240.401C47.1 235.701 50.2 232.001 52.2 230.001C54.2 228.001 63.8 215.201 62.6 214.801C61.4 214.401 -5.4 222.801 -5.4 222.801z"} , {"fill": "#ff727f", "stroke":"#000000", "path":"M-9.8 174.401C-9.8 174.401 -12.6 196.801 -9.4 205.201C-6.2 213.601 -7 215.601 -7.8 219.601C-8.6 223.601 -4.2 233.601 1.4 239.601L13.4 241.201C13.4 241.201 28.6 237.601 37.8 240.401C37.8 240.401 46.794 241.744 50.2 226.801C50.2 226.801 55 220.401 62.2 217.601C69.4 214.801 76.6 173.201 72.6 165.201C68.6 157.201 54.2 152.801 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-8.2 249.201C-8.2 249.201 -9 247.201 -13.4 246.801C-13.4 246.801 -35.8 243.201 -44.2 230.801C-44.2 230.801 -51 225.201 -46.6 236.801C-46.6 236.801 -36.2 257.201 -29.4 260.001C-29.4 260.001 -13 264.001 -8.2 249.201z"} , {"fill": "#cc3f4c", "path":"M71.742 185.229C72.401 177.323 74.354 168.709 72.6 165.201C66.154 152.307 49.181 157.695 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401C-9.8 174.401 -11.545 188.364 -10.705 198.376C-10.705 198.376 26.6 186.801 27.4 192.401C27.4 192.401 29 189.201 38.2 189.201C47.4 189.201 70.142 188.029 71.742 185.229z"} , {"stroke":"#a51926", "width":2, "path":"M28.6 175.201C28.6 175.201 33.4 180.001 29.8 189.601C29.8 189.601 15.4 205.601 17.4 219.601"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-19.4 260.001C-19.4 260.001 -23.8 247.201 -15 254.001C-15 254.001 -10.2 256.001 -11.4 257.601C-12.6 259.201 -18.2 263.201 -19.4 260.001z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-14.36 261.201C-14.36 261.201 -17.88 250.961 -10.84 256.401C-10.84 256.401 -6.419 258.849 -7.96 259.281C-12.52 260.561 -7.96 263.121 -14.36 261.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-9.56 261.201C-9.56 261.201 -13.08 250.961 -6.04 256.401C-6.04 256.401 -1.665 258.711 -3.16 259.281C-6.52 260.561 -3.16 263.121 -9.56 261.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-2.96 261.401C-2.96 261.401 -6.48 251.161 0.56 256.601C0.56 256.601 4.943 258.933 3.441 259.481C0.48 260.561 3.441 263.321 -2.96 261.401z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M3.52 261.321C3.52 261.321 0 251.081 7.041 256.521C7.041 256.521 10.881 258.121 9.921 259.401C8.961 260.681 9.921 263.241 3.52 261.321z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M10.2 262.001C10.2 262.001 5.4 249.601 14.6 256.001C14.6 256.001 19.4 258.001 18.2 259.601C17 261.201 18.2 264.401 10.2 262.001z"} , {"stroke":"#a5264c", "width":2, "path":"M-18.2 244.801C-18.2 244.801 -5 242.001 1 245.201C1 245.201 7 246.401 8.2 246.001C9.4 245.601 12.6 245.201 12.6 245.201"} , {"stroke":"#a5264c", "width":2, "path":"M15.8 253.601C15.8 253.601 27.8 240.001 39.8 244.401C46.816 246.974 45.8 243.601 46.6 240.801C47.4 238.001 47.6 233.801 52.6 230.801"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M33 237.601C33 237.601 29 226.801 26.2 239.601C23.4 252.401 20.2 256.001 18.6 258.801C18.6 258.801 18.6 264.001 27 263.601C27 263.601 37.8 263.201 38.2 260.401C38.6 257.601 37 246.001 33 237.601z"} , {"stroke":"#a5264c", "width":2, "path":"M47 244.801C47 244.801 50.6 242.401 53 243.601"} , {"stroke":"#a5264c", "width":2, "path":"M53.5 228.401C53.5 228.401 56.4 223.501 61.2 222.701"} , {"fill": "#b2b2b2", "path":"M-25.8 265.201C-25.8 265.201 -7.8 268.401 -3.4 266.801C-3.4 266.801 5.4 266.801 -3 268.801C-3 268.801 -15.8 268.801 -23.8 267.601C-23.8 267.601 -35.4 262.001 -25.8 265.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-11.8 172.001C-11.8 172.001 5.8 172.001 7.8 172.801C7.8 172.801 15 203.601 11.4 211.201C11.4 211.201 10.2 214.001 7.4 208.401C7.4 208.401 -11 175.601 -14.2 173.601C-17.4 171.601 -13 172.001 -11.8 172.001z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-88.9 169.301C-88.9 169.301 -80 171.001 -67.4 173.601C-67.4 173.601 -62.6 196.001 -59.4 200.801C-56.2 205.601 -59.8 205.601 -63.4 202.801C-67 200.001 -81.8 186.001 -83.8 181.601C-85.8 177.201 -88.9 169.301 -88.9 169.301z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-67.039 173.818C-67.039 173.818 -61.239 175.366 -60.23 177.581C-59.222 179.795 -61.432 183.092 -61.432 183.092C-61.432 183.092 -62.432 186.397 -63.634 184.235C-64.836 182.072 -67.708 174.412 -67.039 173.818z"} , {"fill": "#000000", "path":"M-67 173.601C-67 173.601 -63.4 178.801 -59.8 178.801C-56.2 178.801 -55.818 178.388 -53 179.001C-48.4 180.001 -48.8 178.001 -42.2 179.201C-39.56 179.681 -37 178.801 -34.2 180.001C-31.4 181.201 -28.2 180.401 -27 178.401C-25.8 176.401 -21 172.201 -21 172.201C-21 172.201 -33.8 174.001 -36.6 174.801C-36.6 174.801 -59 176.001 -67 173.601z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-22.4 173.801C-22.4 173.801 -28.85 177.301 -29.25 179.701C-29.65 182.101 -24 185.801 -24 185.801C-24 185.801 -21.25 190.401 -20.65 188.001C-20.05 185.601 -21.6 174.201 -22.4 173.801z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-59.885 179.265C-59.885 179.265 -52.878 190.453 -52.661 179.242C-52.661 179.242 -52.104 177.984 -53.864 177.962C-59.939 177.886 -58.418 173.784 -59.885 179.265z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-52.707 179.514C-52.707 179.514 -44.786 190.701 -45.422 179.421C-45.422 179.421 -45.415 179.089 -47.168 178.936C-51.915 178.522 -51.57 174.004 -52.707 179.514z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-45.494 179.522C-45.494 179.522 -37.534 190.15 -38.203 180.484C-38.203 180.484 -38.084 179.251 -39.738 178.95C-43.63 178.244 -43.841 174.995 -45.494 179.522z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-38.618 179.602C-38.618 179.602 -30.718 191.163 -30.37 181.382C-30.37 181.382 -28.726 180.004 -30.472 179.782C-36.29 179.042 -35.492 174.588 -38.618 179.602z"} , {"fill": "#e5e5b2", "path":"M-74.792 183.132L-82.45 181.601C-85.05 176.601 -87.15 170.451 -87.15 170.451C-87.15 170.451 -80.8 171.451 -68.3 174.251C-68.3 174.251 -67.424 177.569 -65.952 183.364L-74.792 183.132z"} , {"fill": "#e5e5b2", "path":"M-9.724 178.47C-11.39 175.964 -12.707 174.206 -13.357 173.8C-16.37 171.917 -12.227 172.294 -11.098 172.294C-11.098 172.294 5.473 172.294 7.356 173.047C7.356 173.047 7.88 175.289 8.564 178.68C8.564 178.68 -1.524 176.67 -9.724 178.47z"} , {"fill": "#cc7226", "path":"M43.88 40.321C71.601 44.281 97.121 8.641 98.881 -1.04C100.641 -10.72 90.521 -22.6 90.521 -22.6C91.841 -25.68 87.001 -39.76 81.721 -49C76.441 -58.24 60.54 -57.266 43 -58.24C27.16 -59.12 8.68 -35.8 7.36 -34.04C6.04 -32.28 12.2 6.001 13.52 11.721C14.84 17.441 12.2 43.841 12.2 43.841C46.44 34.741 16.16 36.361 43.88 40.321z"} , {"fill": "#ea8e51", "path":"M8.088 -33.392C6.792 -31.664 12.84 5.921 14.136 11.537C15.432 17.153 12.84 43.073 12.84 43.073C45.512 34.193 16.728 35.729 43.944 39.617C71.161 43.505 96.217 8.513 97.945 -0.992C99.673 -10.496 89.737 -22.16 89.737 -22.16C91.033 -25.184 86.281 -39.008 81.097 -48.08C75.913 -57.152 60.302 -56.195 43.08 -57.152C27.528 -58.016 9.384 -35.12 8.088 -33.392z"} , {"fill": "#efaa7c", "path":"M8.816 -32.744C7.544 -31.048 13.48 5.841 14.752 11.353C16.024 16.865 13.48 42.305 13.48 42.305C44.884 33.145 17.296 35.097 44.008 38.913C70.721 42.729 95.313 8.385 97.009 -0.944C98.705 -10.272 88.953 -21.72 88.953 -21.72C90.225 -24.688 85.561 -38.256 80.473 -47.16C75.385 -56.064 60.063 -55.125 43.16 -56.064C27.896 -56.912 10.088 -34.44 8.816 -32.744z"} , {"fill": "#f4c6a8", "path":"M9.544 -32.096C8.296 -30.432 14.12 5.761 15.368 11.169C16.616 16.577 14.12 41.537 14.12 41.537C43.556 32.497 17.864 34.465 44.072 38.209C70.281 41.953 94.409 8.257 96.073 -0.895C97.737 -10.048 88.169 -21.28 88.169 -21.28C89.417 -24.192 84.841 -37.504 79.849 -46.24C74.857 -54.976 59.824 -54.055 43.24 -54.976C28.264 -55.808 10.792 -33.76 9.544 -32.096z"} , {"fill": "#f9e2d3", "path":"M10.272 -31.448C9.048 -29.816 14.76 5.681 15.984 10.985C17.208 16.289 14.76 40.769 14.76 40.769C42.628 31.849 18.432 33.833 44.136 37.505C69.841 41.177 93.505 8.129 95.137 -0.848C96.769 -9.824 87.385 -20.84 87.385 -20.84C88.609 -23.696 84.121 -36.752 79.225 -45.32C74.329 -53.888 59.585 -52.985 43.32 -53.888C28.632 -54.704 11.496 -33.08 10.272 -31.448z"} , {"fill": "#ffffff", "path":"M44.2 36.8C69.4 40.4 92.601 8 94.201 -0.8C95.801 -9.6 86.601 -20.4 86.601 -20.4C87.801 -23.2 83.4 -36 78.6 -44.4C73.8 -52.8 59.346 -51.914 43.4 -52.8C29 -53.6 12.2 -32.4 11 -30.8C9.8 -29.2 15.4 5.6 16.6 10.8C17.8 16 15.4 40 15.4 40C40.9 31.4 19 33.2 44.2 36.8z"} , {"fill": "#cccccc", "path":"M90.601 2.8C90.601 2.8 62.8 10.4 51.2 8.8C51.2 8.8 35.4 2.2 26.6 24C26.6 24 23 31.2 21 33.2C19 35.2 90.601 2.8 90.601 2.8z"} , {"fill": "#000000", "path":"M94.401 0.6C94.401 0.6 65.4 12.8 55.4 12.4C55.4 12.4 39 7.8 30.6 22.4C30.6 22.4 22.2 31.6 19 33.2C19 33.2 18.6 34.8 25 30.8L35.4 36C35.4 36 50.2 45.6 59.8 29.6C59.8 29.6 63.8 18.4 63.8 16.4C63.8 14.4 85 8.8 86.601 8.4C88.201 8 94.801 3.8 94.401 0.6z"} , {"fill": "#99cc32", "path":"M47 36.514C40.128 36.514 31.755 32.649 31.755 26.4C31.755 20.152 40.128 13.887 47 13.887C53.874 13.887 59.446 18.952 59.446 25.2C59.446 31.449 53.874 36.514 47 36.514z"} , {"fill": "#659900", "path":"M43.377 19.83C38.531 20.552 33.442 22.055 33.514 21.839C35.054 17.22 41.415 13.887 47 13.887C51.296 13.887 55.084 15.865 57.32 18.875C57.32 18.875 52.004 18.545 43.377 19.83z"} , {"fill": "#ffffff", "path":"M55.4 19.6C55.4 19.6 51 16.4 51 18.6C51 18.6 54.6 23 55.4 19.6z"} , {"fill": "#000000", "path":"M45.4 27.726C42.901 27.726 40.875 25.7 40.875 23.2C40.875 20.701 42.901 18.675 45.4 18.675C47.9 18.675 49.926 20.701 49.926 23.2C49.926 25.7 47.9 27.726 45.4 27.726z"} , {"fill": "#cc7226", "path":"M-58.6 14.4C-58.6 14.4 -61.8 -6.8 -59.4 -11.2C-59.4 -11.2 -48.6 -21.2 -49 -24.8C-49 -24.8 -49.4 -42.8 -50.6 -43.6C-51.8 -44.4 -59.4 -50.4 -65.4 -44C-65.4 -44 -75.8 -26 -75 -19.6L-75 -17.6C-75 -17.6 -82.6 -18 -84.2 -16C-84.2 -16 -85.4 -10.8 -86.6 -10.4C-86.6 -10.4 -89.4 -8 -87.4 -5.2C-87.4 -5.2 -89.4 -2.8 -89 1.2L-81.4 5.2C-81.4 5.2 -79.4 19.6 -68.6 24.8C-63.764 27.129 -60.6 20.4 -58.6 14.4z"} , {"fill": "#ffffff", "path":"M-59.6 12.56C-59.6 12.56 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.48 -40.36 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.96 -59.6 12.56z"} , {"fill": "#eb955c", "path":"M-51.05 -42.61C-52.14 -43.47 -59.63 -49.24 -65.48 -43C-65.48 -43 -75.62 -25.45 -74.84 -19.21L-74.84 -17.26C-74.84 -17.26 -82.25 -17.65 -83.81 -15.7C-83.81 -15.7 -84.98 -10.63 -86.15 -10.24C-86.15 -10.24 -88.88 -7.9 -86.93 -5.17C-86.93 -5.17 -88.88 -2.83 -88.49 1.07L-81.08 4.97C-81.08 4.97 -79.13 19.01 -68.6 24.08C-63.886 26.35 -60.8 19.79 -58.85 13.94C-58.85 13.94 -61.97 -6.73 -59.63 -11.02C-59.63 -11.02 -49.1 -20.77 -49.49 -24.28C-49.49 -24.28 -49.88 -41.83 -51.05 -42.61z"} , {"fill": "#f2b892", "path":"M-51.5 -41.62C-52.48 -42.54 -59.86 -48.08 -65.56 -42C-65.56 -42 -75.44 -24.9 -74.68 -18.82L-74.68 -16.92C-74.68 -16.92 -81.9 -17.3 -83.42 -15.4C-83.42 -15.4 -84.56 -10.46 -85.7 -10.08C-85.7 -10.08 -88.36 -7.8 -86.46 -5.14C-86.46 -5.14 -88.36 -2.86 -87.98 0.94L-80.76 4.74C-80.76 4.74 -78.86 18.42 -68.6 23.36C-64.006 25.572 -61 19.18 -59.1 13.48C-59.1 13.48 -62.14 -6.66 -59.86 -10.84C-59.86 -10.84 -49.6 -20.34 -49.98 -23.76C-49.98 -23.76 -50.36 -40.86 -51.5 -41.62z"} , {"fill": "#f8dcc8", "path":"M-51.95 -40.63C-52.82 -41.61 -60.09 -46.92 -65.64 -41C-65.64 -41 -75.26 -24.35 -74.52 -18.43L-74.52 -16.58C-74.52 -16.58 -81.55 -16.95 -83.03 -15.1C-83.03 -15.1 -84.14 -10.29 -85.25 -9.92C-85.25 -9.92 -87.84 -7.7 -85.99 -5.11C-85.99 -5.11 -87.84 -2.89 -87.47 0.81L-80.44 4.51C-80.44 4.51 -78.59 17.83 -68.6 22.64C-64.127 24.794 -61.2 18.57 -59.35 13.02C-59.35 13.02 -62.31 -6.59 -60.09 -10.66C-60.09 -10.66 -50.1 -19.91 -50.47 -23.24C-50.47 -23.24 -50.84 -39.89 -51.95 -40.63z"} , {"fill": "#ffffff", "path":"M-59.6 12.46C-59.6 12.46 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.16 -40.68 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.86 -59.6 12.46z"} , {"fill": "#cccccc", "path":"M-62.7 6.2C-62.7 6.2 -84.3 -4 -85.2 -4.8C-85.2 -4.8 -76.1 3.4 -75.3 3.4C-74.5 3.4 -62.7 6.2 -62.7 6.2z"} , {"fill": "#000000", "path":"M-79.8 0C-79.8 0 -61.4 3.6 -61.4 8C-61.4 10.912 -61.643 24.331 -67 22.8C-75.4 20.4 -71.8 6 -79.8 0z"} , {"fill": "#99cc32", "path":"M-71.4 3.8C-71.4 3.8 -62.422 5.274 -61.4 8C-60.8 9.6 -60.137 17.908 -65.6 19C-70.152 19.911 -72.382 9.69 -71.4 3.8z"} , {"fill": "#000000", "path":"M14.595 46.349C14.098 44.607 15.409 44.738 17.2 44.2C19.2 43.6 31.4 39.8 32.2 37.2C33 34.6 46.2 39 46.2 39C48 39.8 52.4 42.4 52.4 42.4C57.2 43.6 63.8 44 63.8 44C66.2 45 69.6 47.8 69.6 47.8C84.2 58 96.601 50.8 96.601 50.8C116.601 44.2 110.601 27 110.601 27C107.601 18 110.801 14.6 110.801 14.6C111.001 10.8 118.201 17.2 118.201 17.2C120.801 21.4 121.601 26.4 121.601 26.4C129.601 37.6 126.201 19.8 126.201 19.8C126.401 18.8 123.601 15.2 123.601 14C123.601 12.8 121.801 9.4 121.801 9.4C118.801 6 121.201 -1 121.201 -1C123.001 -14.8 120.801 -13 120.801 -13C119.601 -14.8 110.401 -4.8 110.401 -4.8C108.201 -1.4 102.201 0.2 102.201 0.2C99.401 2 96.001 0.6 96.001 0.6C93.401 0.2 87.801 7.2 87.801 7.2C90.601 7 93.001 11.4 95.401 11.6C97.801 11.8 99.601 9.2 101.201 8.6C102.801 8 105.601 13.8 105.601 13.8C106.001 16.4 100.401 21.2 100.401 21.2C100.001 25.8 98.401 24.2 98.401 24.2C95.401 23.6 94.201 27.4 93.201 32C92.201 36.6 88.001 37 88.001 37C86.401 44.4 85.2 41.4 85.2 41.4C85 35.8 79 41.6 79 41.6C77.8 43.6 73.2 41.4 73.2 41.4C66.4 39.4 68.8 37.4 68.8 37.4C70.6 35.2 81.8 37.4 81.8 37.4C84 35.8 76 31.8 76 31.8C75.4 30 76.4 25.6 76.4 25.6C77.6 22.4 84.4 16.8 84.4 16.8C93.801 15.6 91.001 14 91.001 14C84.801 8.8 79 16.4 79 16.4C76.8 22.6 59.4 37.6 59.4 37.6C54.6 41 57.2 34.2 53.2 37.6C49.2 41 28.6 32 28.6 32C17.038 30.807 14.306 46.549 10.777 43.429C10.777 43.429 16.195 51.949 14.595 46.349z"} , {"fill": "#000000", "path":"M209.401 -120C209.401 -120 183.801 -112 181.001 -93.2C181.001 -93.2 178.601 -70.4 199.001 -52.8C199.001 -52.8 199.401 -46.4 201.401 -43.2C201.401 -43.2 199.801 -38.4 218.601 -46L245.801 -54.4C245.801 -54.4 252.201 -56.8 257.401 -65.6C262.601 -74.4 277.801 -93.2 274.201 -118.4C274.201 -118.4 275.401 -129.6 269.401 -130C269.401 -130 261.001 -131.6 253.801 -124C253.801 -124 247.001 -120.8 244.601 -121.2L209.401 -120z"} , {"fill": "#000000", "path":"M264.022 -120.99C264.022 -120.99 266.122 -129.92 261.282 -125.08C261.282 -125.08 254.242 -119.36 246.761 -119.36C246.761 -119.36 232.241 -117.16 227.841 -103.96C227.841 -103.96 223.881 -77.12 231.801 -71.4C231.801 -71.4 236.641 -63.92 243.681 -70.52C250.722 -77.12 266.222 -107.35 264.022 -120.99z"} , {"fill": "#323232", "path":"M263.648 -120.632C263.648 -120.632 265.738 -129.376 260.986 -124.624C260.986 -124.624 254.074 -119.008 246.729 -119.008C246.729 -119.008 232.473 -116.848 228.153 -103.888C228.153 -103.888 224.265 -77.536 232.041 -71.92C232.041 -71.92 236.793 -64.576 243.705 -71.056C250.618 -77.536 265.808 -107.24 263.648 -120.632z"} , {"fill": "#666666", "path":"M263.274 -120.274C263.274 -120.274 265.354 -128.832 260.69 -124.168C260.69 -124.168 253.906 -118.656 246.697 -118.656C246.697 -118.656 232.705 -116.536 228.465 -103.816C228.465 -103.816 224.649 -77.952 232.281 -72.44C232.281 -72.44 236.945 -65.232 243.729 -71.592C250.514 -77.952 265.394 -107.13 263.274 -120.274z"} , {"fill": "#999999", "path":"M262.9 -119.916C262.9 -119.916 264.97 -128.288 260.394 -123.712C260.394 -123.712 253.738 -118.304 246.665 -118.304C246.665 -118.304 232.937 -116.224 228.777 -103.744C228.777 -103.744 225.033 -78.368 232.521 -72.96C232.521 -72.96 237.097 -65.888 243.753 -72.128C250.41 -78.368 264.98 -107.02 262.9 -119.916z"} , {"fill": "#cccccc", "path":"M262.526 -119.558C262.526 -119.558 264.586 -127.744 260.098 -123.256C260.098 -123.256 253.569 -117.952 246.633 -117.952C246.633 -117.952 233.169 -115.912 229.089 -103.672C229.089 -103.672 225.417 -78.784 232.761 -73.48C232.761 -73.48 237.249 -66.544 243.777 -72.664C250.305 -78.784 264.566 -106.91 262.526 -119.558z"} , {"fill": "#ffffff", "path":"M262.151 -119.2C262.151 -119.2 264.201 -127.2 259.801 -122.8C259.801 -122.8 253.401 -117.6 246.601 -117.6C246.601 -117.6 233.401 -115.6 229.401 -103.6C229.401 -103.6 225.801 -79.2 233.001 -74C233.001 -74 237.401 -67.2 243.801 -73.2C250.201 -79.2 264.151 -106.8 262.151 -119.2z"} , {"fill": "#992600", "path":"M50.6 84C50.6 84 30.2 64.8 22.2 64C22.2 64 -12.2 60 -27 78C-27 78 -9.4 57.6 18.2 63.2C18.2 63.2 -3.4 58.8 -15.8 62C-15.8 62 -32.6 62 -42.2 76L-45 80.8C-45 80.8 -41 66 -22.6 60C-22.6 60 0.2 55.2 11 60C11 60 -10.6 53.2 -20.6 55.2C-20.6 55.2 -51 52.8 -63.8 79.2C-63.8 79.2 -59.8 64.8 -45 57.6C-45 57.6 -31.4 48.8 -11 51.6C-11 51.6 3.4 54.8 8.6 57.2C13.8 59.6 12.6 56.8 4.2 52C4.2 52 -1.4 42 -15.4 42.4C-15.4 42.4 -58.2 46 -68.6 58C-68.6 58 -55 46.8 -44.6 44C-44.6 44 -22.2 36 -13.8 36.8C-13.8 36.8 11 37.8 18.6 33.8C18.6 33.8 7.4 38.8 10.6 42C13.8 45.2 20.6 52.8 20.6 54C20.6 55.2 44.8 77.3 48.4 81.7L50.6 84z"} , {"fill": "#cccccc", "path":"M189 278C189 278 173.5 241.5 161 232C161 232 187 248 190.5 266C190.5 266 190.5 276 189 278z"} , {"fill": "#cccccc", "path":"M236 285.5C236 285.5 209.5 230.5 191 206.5C191 206.5 234.5 244 239.5 270.5L240 276L237 273.5C237 273.5 236.5 282.5 236 285.5z"} , {"fill": "#cccccc", "path":"M292.5 237C292.5 237 230 177.5 228.5 175C228.5 175 289 241 292 248.5C292 248.5 290 239.5 292.5 237z"} , {"fill": "#cccccc", "path":"M104 280.5C104 280.5 123.5 228.5 142.5 251C142.5 251 157.5 261 157 264C157 264 153 257.5 135 258C135 258 116 255 104 280.5z"} , {"fill": "#cccccc", "path":"M294.5 153C294.5 153 249.5 124.5 242 123C230.193 120.639 291.5 152 296.5 162.5C296.5 162.5 298.5 160 294.5 153z"} , {"fill": "#000000", "path":"M143.801 259.601C143.801 259.601 164.201 257.601 171.001 250.801L175.401 254.401L193.001 216.001L196.601 221.201C196.601 221.201 211.001 206.401 210.201 198.401C209.401 190.401 223.001 204.401 223.001 204.401C223.001 204.401 222.201 192.801 229.401 199.601C229.401 199.601 227.001 184.001 235.401 192.001C235.401 192.001 224.864 161.844 247.401 187.601C253.001 194.001 248.601 187.201 248.601 187.201C248.601 187.201 222.601 139.201 244.201 153.601C244.201 153.601 246.201 130.801 245.001 126.401C243.801 122.001 241.801 99.6 237.001 94.4C232.201 89.2 237.401 87.6 243.001 92.8C243.001 92.8 231.801 68.8 245.001 80.8C245.001 80.8 241.401 65.6 237.001 62.8C237.001 62.8 231.401 45.6 246.601 56.4C246.601 56.4 242.201 44 239.001 40.8C239.001 40.8 227.401 13.2 234.601 18L239.001 21.6C239.001 21.6 232.201 7.6 238.601 12C245.001 16.4 245.001 16 245.001 16C245.001 16 223.801 -17.2 244.201 0.4C244.201 0.4 236.042 -13.518 232.601 -20.4C232.601 -20.4 213.801 -40.8 228.201 -34.4L233.001 -32.8C233.001 -32.8 224.201 -42.8 216.201 -44.4C208.201 -46 218.601 -52.4 225.001 -50.4C231.401 -48.4 247.001 -40.8 247.001 -40.8C247.001 -40.8 259.801 -22 263.801 -21.6C263.801 -21.6 243.801 -29.2 249.801 -21.2C249.801 -21.2 264.201 -7.2 257.001 -7.6C257.001 -7.6 251.001 -0.4 255.801 8.4C255.801 8.4 237.342 -9.991 252.201 15.6L259.001 32C259.001 32 234.601 7.2 245.801 29.2C245.801 29.2 263.001 52.8 265.001 53.2C267.001 53.6 271.401 62.4 271.401 62.4L267.001 60.4L272.201 69.2C272.201 69.2 261.001 57.2 267.001 70.4L272.601 84.8C272.601 84.8 252.201 62.8 265.801 92.4C265.801 92.4 249.401 87.2 258.201 104.4C258.201 104.4 256.601 120.401 257.001 125.601C257.401 130.801 258.601 159.201 254.201 167.201C249.801 175.201 260.201 194.401 262.201 198.401C264.201 202.401 267.801 213.201 259.001 204.001C250.201 194.801 254.601 200.401 256.601 209.201C258.601 218.001 264.601 233.601 263.801 239.201C263.801 239.201 262.601 240.401 259.401 236.801C259.401 236.801 244.601 214.001 246.201 228.401C246.201 228.401 245.001 236.401 241.801 245.201C241.801 245.201 238.601 256.001 238.601 247.201C238.601 247.201 235.401 230.401 232.601 238.001C229.801 245.601 226.201 251.601 223.401 254.001C220.601 256.401 215.401 233.601 214.201 244.001C214.201 244.001 202.201 231.601 197.401 248.001L185.801 264.401C185.801 264.401 185.401 252.001 184.201 258.001C184.201 258.001 154.201 264.001 143.801 259.601z"} , {"fill": "#000000", "path":"M109.401 -97.2C109.401 -97.2 97.801 -105.2 93.801 -104.8C89.801 -104.4 121.401 -113.6 162.601 -86C162.601 -86 167.401 -83.2 171.001 -83.6C171.001 -83.6 174.201 -81.2 171.401 -77.6C171.401 -77.6 162.601 -68 173.801 -56.8C173.801 -56.8 192.201 -50 186.601 -58.8C186.601 -58.8 197.401 -54.8 199.801 -50.8C202.201 -46.8 201.001 -50.8 201.001 -50.8C201.001 -50.8 194.601 -58 188.601 -63.2C188.601 -63.2 183.401 -65.2 180.601 -73.6C177.801 -82 175.401 -92 179.801 -95.2C179.801 -95.2 175.801 -90.8 176.601 -94.8C177.401 -98.8 181.001 -102.4 182.601 -102.8C184.201 -103.2 200.601 -119 207.401 -119.4C207.401 -119.4 198.201 -118 195.201 -119C192.201 -120 165.601 -131.4 159.601 -132.6C159.601 -132.6 142.801 -139.2 154.801 -137.2C154.801 -137.2 190.601 -133.4 208.801 -120.2C208.801 -120.2 201.601 -128.6 183.201 -135.6C183.201 -135.6 161.001 -148.2 125.801 -143.2C125.801 -143.2 108.001 -140 100.201 -138.2C100.201 -138.2 97.601 -138.8 97.001 -139.2C96.401 -139.6 84.6 -148.6 57 -141.6C57 -141.6 40 -137 31.4 -132.2C31.4 -132.2 16.2 -131 12.6 -127.8C12.6 -127.8 -6 -113.2 -8 -112.4C-10 -111.6 -21.4 -104 -22.2 -103.6C-22.2 -103.6 2.4 -110.2 4.8 -112.6C7.2 -115 24.6 -117.6 27 -116.2C29.4 -114.8 37.8 -115.4 28.2 -114.8C28.2 -114.8 103.801 -100 104.601 -98C105.401 -96 109.401 -97.2 109.401 -97.2z"} , {"fill": "#cc7226", "path":"M180.801 -106.4C180.801 -106.4 170.601 -113.8 168.601 -113.8C166.601 -113.8 154.201 -124 150.001 -123.6C145.801 -123.2 133.601 -133.2 106.201 -125C106.201 -125 105.601 -127 109.201 -127.8C109.201 -127.8 115.601 -130 116.001 -130.6C116.001 -130.6 136.201 -134.8 143.401 -131.2C143.401 -131.2 152.601 -128.6 158.801 -122.4C158.801 -122.4 170.001 -119.2 173.201 -120.2C173.201 -120.2 182.001 -118 182.401 -116.2C182.401 -116.2 188.201 -113.2 186.401 -110.6C186.401 -110.6 186.801 -109 180.801 -106.4z"} , {"fill": "#cc7226", "path":"M168.33 -108.509C169.137 -107.877 170.156 -107.779 170.761 -106.97C170.995 -106.656 170.706 -106.33 170.391 -106.233C169.348 -105.916 168.292 -106.486 167.15 -105.898C166.748 -105.691 166.106 -105.873 165.553 -106.022C163.921 -106.463 162.092 -106.488 160.401 -105.8C158.416 -106.929 156.056 -106.345 153.975 -107.346C153.917 -107.373 153.695 -107.027 153.621 -107.054C150.575 -108.199 146.832 -107.916 144.401 -110.2C141.973 -110.612 139.616 -111.074 137.188 -111.754C135.37 -112.263 133.961 -113.252 132.341 -114.084C130.964 -114.792 129.507 -115.314 127.973 -115.686C126.11 -116.138 124.279 -116.026 122.386 -116.546C122.293 -116.571 122.101 -116.227 122.019 -116.254C121.695 -116.362 121.405 -116.945 121.234 -116.892C119.553 -116.37 118.065 -117.342 116.401 -117C115.223 -118.224 113.495 -117.979 111.949 -118.421C108.985 -119.269 105.831 -117.999 102.801 -119C106.914 -120.842 111.601 -119.61 115.663 -121.679C117.991 -122.865 120.653 -121.763 123.223 -122.523C123.71 -122.667 124.401 -122.869 124.801 -122.2C124.935 -122.335 125.117 -122.574 125.175 -122.546C127.625 -121.389 129.94 -120.115 132.422 -119.049C132.763 -118.903 133.295 -119.135 133.547 -118.933C135.067 -117.717 137.01 -117.82 138.401 -116.6C140.099 -117.102 141.892 -116.722 143.621 -117.346C143.698 -117.373 143.932 -117.032 143.965 -117.054C145.095 -117.802 146.25 -117.531 147.142 -117.227C147.48 -117.112 148.143 -116.865 148.448 -116.791C149.574 -116.515 150.43 -116.035 151.609 -115.852C151.723 -115.834 151.908 -116.174 151.98 -116.146C153.103 -115.708 154.145 -115.764 154.801 -114.6C154.936 -114.735 155.101 -114.973 155.183 -114.946C156.21 -114.608 156.859 -113.853 157.96 -113.612C158.445 -113.506 159.057 -112.88 159.633 -112.704C162.025 -111.973 163.868 -110.444 166.062 -109.549C166.821 -109.239 167.697 -109.005 168.33 -108.509z"} , {"fill": "#cc7226", "path":"M91.696 -122.739C89.178 -124.464 86.81 -125.57 84.368 -127.356C84.187 -127.489 83.827 -127.319 83.625 -127.441C82.618 -128.05 81.73 -128.631 80.748 -129.327C80.209 -129.709 79.388 -129.698 78.88 -129.956C76.336 -131.248 73.707 -131.806 71.2 -133C71.882 -133.638 73.004 -133.394 73.6 -134.2C73.795 -133.92 74.033 -133.636 74.386 -133.827C76.064 -134.731 77.914 -134.884 79.59 -134.794C81.294 -134.702 83.014 -134.397 84.789 -134.125C85.096 -134.078 85.295 -133.555 85.618 -133.458C87.846 -132.795 90.235 -133.32 92.354 -132.482C93.945 -131.853 95.515 -131.03 96.754 -129.755C97.006 -129.495 96.681 -129.194 96.401 -129C96.789 -129.109 97.062 -128.903 97.173 -128.59C97.257 -128.351 97.257 -128.049 97.173 -127.81C97.061 -127.498 96.782 -127.397 96.408 -127.346C95.001 -127.156 96.773 -128.536 96.073 -128.088C94.8 -127.274 95.546 -125.868 94.801 -124.6C94.521 -124.794 94.291 -125.012 94.401 -125.4C94.635 -124.878 94.033 -124.588 93.865 -124.272C93.48 -123.547 92.581 -122.132 91.696 -122.739z"} , {"fill": "#cc7226", "path":"M59.198 -115.391C56.044 -116.185 52.994 -116.07 49.978 -117.346C49.911 -117.374 49.688 -117.027 49.624 -117.054C48.258 -117.648 47.34 -118.614 46.264 -119.66C45.351 -120.548 43.693 -120.161 42.419 -120.648C42.095 -120.772 41.892 -121.284 41.591 -121.323C40.372 -121.48 39.445 -122.429 38.4 -123C40.736 -123.795 43.147 -123.764 45.609 -124.148C45.722 -124.166 45.867 -123.845 46 -123.845C46.136 -123.845 46.266 -124.066 46.4 -124.2C46.595 -123.92 46.897 -123.594 47.154 -123.848C47.702 -124.388 48.258 -124.198 48.798 -124.158C48.942 -124.148 49.067 -123.845 49.2 -123.845C49.336 -123.845 49.467 -124.156 49.6 -124.156C49.736 -124.155 49.867 -123.845 50 -123.845C50.136 -123.845 50.266 -124.066 50.4 -124.2C51.092 -123.418 51.977 -123.972 52.799 -123.793C53.837 -123.566 54.104 -122.418 55.178 -122.12C59.893 -120.816 64.03 -118.671 68.393 -116.584C68.7 -116.437 68.91 -116.189 68.8 -115.8C69.067 -115.8 69.38 -115.888 69.57 -115.756C70.628 -115.024 71.669 -114.476 72.366 -113.378C72.582 -113.039 72.253 -112.632 72.02 -112.684C67.591 -113.679 63.585 -114.287 59.198 -115.391z"} , {"fill": "#cc7226", "path":"M45.338 -71.179C43.746 -72.398 43.162 -74.429 42.034 -76.221C41.82 -76.561 42.094 -76.875 42.411 -76.964C42.971 -77.123 43.514 -76.645 43.923 -76.443C45.668 -75.581 47.203 -74.339 49.2 -74.2C51.19 -71.966 55.45 -71.581 55.457 -68.2C55.458 -67.341 54.03 -68.259 53.6 -67.4C51.149 -68.403 48.76 -68.3 46.38 -69.767C45.763 -70.148 46.093 -70.601 45.338 -71.179z"} , {"fill": "#cc7226", "path":"M17.8 -123.756C17.935 -123.755 24.966 -123.522 24.949 -123.408C24.904 -123.099 17.174 -122.05 16.81 -122.22C16.646 -122.296 9.134 -119.866 9 -120C9.268 -120.135 17.534 -123.756 17.8 -123.756z"} , {"fill": "#000000", "path":"M33.2 -114C33.2 -114 18.4 -112.2 14 -111C9.6 -109.8 -9 -102.2 -12 -100.2C-12 -100.2 -25.4 -94.8 -42.4 -74.8C-42.4 -74.8 -34.8 -78.2 -32.6 -81C-32.6 -81 -19 -93.6 -19.2 -91C-19.2 -91 -7 -99.6 -7.6 -97.4C-7.6 -97.4 16.8 -108.6 14.8 -105.4C14.8 -105.4 36.4 -110 35.4 -108C35.4 -108 54.2 -103.6 51.4 -103.4C51.4 -103.4 45.6 -102.2 52 -98.6C52 -98.6 48.6 -94.2 43.2 -98.2C37.8 -102.2 40.8 -100 35.8 -99C35.8 -99 33.2 -98.2 28.6 -102.2C28.6 -102.2 23 -106.8 14.2 -103.2C14.2 -103.2 -16.4 -90.6 -18.4 -90C-18.4 -90 -22 -87.2 -24.4 -83.6C-24.4 -83.6 -30.2 -79.2 -33.2 -77.8C-33.2 -77.8 -46 -66.2 -47.2 -64.8C-47.2 -64.8 -50.6 -59.6 -51.4 -59.2C-51.4 -59.2 -45 -63 -43 -65C-43 -65 -29 -75 -23.6 -75.8C-23.6 -75.8 -19.2 -78.8 -18.4 -80.2C-18.4 -80.2 -4 -89.4 0.2 -89.4C0.2 -89.4 9.4 -84.2 11.8 -91.2C11.8 -91.2 17.6 -93 23.2 -91.8C23.2 -91.8 26.4 -94.4 25.6 -96.6C25.6 -96.6 27.2 -98.4 28.2 -94.6C28.2 -94.6 31.6 -91 36.4 -93C36.4 -93 40.4 -93.2 38.4 -90.8C38.4 -90.8 34 -87 22.2 -86.8C22.2 -86.8 9.8 -86.2 -6.6 -78.6C-6.6 -78.6 -36.4 -68.2 -45.6 -57.8C-45.6 -57.8 -52 -49 -57.4 -47.8C-57.4 -47.8 -63.2 -47 -69.2 -39.6C-69.2 -39.6 -59.4 -45.4 -50.4 -45.4C-50.4 -45.4 -46.4 -47.8 -50.2 -44.2C-50.2 -44.2 -53.8 -36.6 -52.2 -31.2C-52.2 -31.2 -52.8 -26 -53.6 -24.4C-53.6 -24.4 -61.4 -11.6 -61.4 -9.2C-61.4 -6.8 -60.2 3 -59.8 3.6C-59.4 4.2 -60.8 2 -57 4.4C-53.2 6.8 -50.4 8.4 -49.6 11.2C-48.8 14 -51.6 5.8 -51.8 4C-52 2.2 -56.2 -5 -55.4 -7.4C-55.4 -7.4 -54.4 -6.4 -53.6 -5C-53.6 -5 -54.2 -5.6 -53.6 -9.2C-53.6 -9.2 -52.8 -14.4 -51.4 -17.6C-50 -20.8 -48 -24.6 -47.6 -25.4C-47.2 -26.2 -47.2 -32 -45.8 -29.4L-42.4 -26.8C-42.4 -26.8 -45.2 -29.4 -43 -31.6C-43 -31.6 -44 -37.2 -42.2 -39.8C-42.2 -39.8 -35.2 -48.2 -33.6 -49.2C-32 -50.2 -33.4 -49.8 -33.4 -49.8C-33.4 -49.8 -27.4 -54 -33.2 -52.4C-33.2 -52.4 -37.2 -50.8 -40.2 -50.8C-40.2 -50.8 -47.8 -48.8 -43.8 -53C-39.8 -57.2 -29.8 -62.6 -26 -62.4L-25.2 -60.8L-14 -63.2L-15.2 -62.4C-15.2 -62.4 -15.4 -62.6 -11.2 -63C-7 -63.4 -1.2 -62 0.2 -63.8C1.6 -65.6 5 -66.6 4.6 -65.2C4.2 -63.8 4 -61.8 4 -61.8C4 -61.8 9 -67.6 8.4 -65.4C7.8 -63.2 -0.4 -58 -1.8 -51.8L8.6 -60L12.2 -63C12.2 -63 15.8 -60.8 16 -62.4C16.2 -64 20.8 -69.8 22 -69.6C23.2 -69.4 25.2 -72.2 25 -69.6C24.8 -67 32.4 -61.6 32.4 -61.6C32.4 -61.6 35.6 -63.4 37 -62C38.4 -60.6 42.6 -81.8 42.6 -81.8L67.6 -92.4L111.201 -95.8L94.201 -102.6L33.2 -114z"} , {"stroke":"#4c0000", "width":2, "path":"M51.4 85C51.4 85 36.4 68.2 28 65.6C28 65.6 14.6 58.8 -10 66.6"} , {"stroke":"#4c0000", "width":2, "path":"M24.8 64.2C24.8 64.2 -0.4 56.2 -15.8 60.4C-15.8 60.4 -34.2 62.4 -42.6 76.2"} , {"stroke":"#4c0000", "width":2, "path":"M21.2 63C21.2 63 4.2 55.8 -10.6 53.6C-10.6 53.6 -27.2 51 -43.8 58.2C-43.8 58.2 -56 64.2 -61.4 74.4"} , {"stroke":"#4c0000", "width":2, "path":"M22.2 63.4C22.2 63.4 6.8 52.4 5.8 51C5.8 51 -1.2 40 -14.2 39.6C-14.2 39.6 -35.6 40.4 -52.8 48.4"} , {"fill": "#000000", "path":"M20.895 54.407C22.437 55.87 49.4 84.8 49.4 84.8C84.6 121.401 56.6 87.2 56.6 87.2C49 82.4 39.8 63.6 39.8 63.6C38.6 60.8 53.8 70.8 53.8 70.8C57.8 71.6 71.4 90.8 71.4 90.8C64.6 88.4 69.4 95.6 69.4 95.6C72.2 97.6 92.601 113.201 92.601 113.201C96.201 117.201 100.201 118.801 100.201 118.801C114.201 113.601 107.801 126.801 107.801 126.801C110.201 133.601 115.801 122.001 115.801 122.001C127.001 105.2 110.601 107.601 110.601 107.601C80.6 110.401 73.8 94.4 73.8 94.4C71.4 92 80.2 94.4 80.2 94.4C88.601 96.4 73 82 73 82C75.4 82 84.6 88.8 84.6 88.8C95.001 98 97.001 96 97.001 96C115.001 87.2 125.401 94.8 125.401 94.8C127.401 96.4 121.801 103.2 123.401 108.401C125.001 113.601 129.801 126.001 129.801 126.001C127.401 127.601 127.801 138.401 127.801 138.401C144.601 161.601 135.001 159.601 135.001 159.601C119.401 159.201 134.201 166.801 134.201 166.801C137.401 168.801 146.201 176.001 146.201 176.001C143.401 174.801 141.801 180.001 141.801 180.001C146.601 184.001 143.801 188.801 143.801 188.801C137.801 190.001 136.601 194.001 136.601 194.001C143.401 202.001 133.401 202.401 133.401 202.401C137.001 206.801 132.201 218.801 132.201 218.801C127.401 218.801 121.001 224.401 121.001 224.401C123.401 229.201 113.001 234.801 113.001 234.801C104.601 236.401 107.401 243.201 107.401 243.201C99.401 249.201 97.001 265.201 97.001 265.201C96.201 275.601 93.801 278.801 99.001 276.801C104.201 274.801 103.401 262.401 103.401 262.401C98.601 246.801 141.401 230.801 141.401 230.801C145.401 229.201 146.201 224.001 146.201 224.001C148.201 224.401 157.001 232.001 157.001 232.001C164.601 243.201 165.001 234.001 165.001 234.001C166.201 230.401 164.601 224.401 164.601 224.401C170.601 202.801 156.601 196.401 156.601 196.401C146.601 162.801 160.601 171.201 160.601 171.201C163.401 176.801 174.201 182.001 174.201 182.001L177.801 179.601C176.201 174.801 184.601 168.801 184.601 168.801C187.401 175.201 193.401 167.201 193.401 167.201C197.001 142.801 209.401 157.201 209.401 157.201C213.401 158.401 214.601 151.601 214.601 151.601C218.201 141.201 214.601 127.601 214.601 127.601C218.201 127.201 227.801 133.201 227.801 133.201C230.601 129.601 221.401 112.801 225.401 115.201C229.401 117.601 233.801 119.201 233.801 119.201C234.601 117.201 224.601 104.801 224.601 104.801C220.201 102 215.001 81.6 215.001 81.6C222.201 85.2 212.201 70 212.201 70C212.201 66.8 218.201 55.6 218.201 55.6C217.401 48.8 218.201 49.2 218.201 49.2C221.001 50.4 229.001 52 222.201 45.6C215.401 39.2 223.001 34.4 223.001 34.4C227.401 31.6 213.801 32 213.801 32C208.601 27.6 209.001 23.6 209.001 23.6C217.001 25.6 202.601 11.2 200.201 7.6C197.801 4 207.401 -1.2 207.401 -1.2C220.601 -4.8 209.001 -8 209.001 -8C189.401 -7.6 200.201 -18.4 200.201 -18.4C206.201 -18 204.601 -20.4 204.601 -20.4C199.401 -21.6 189.801 -28 189.801 -28C185.801 -31.6 189.401 -30.8 189.401 -30.8C206.201 -29.6 177.401 -40.8 177.401 -40.8C185.401 -40.8 167.401 -51.2 167.401 -51.2C165.401 -52.8 162.201 -60.4 162.201 -60.4C156.201 -65.6 151.401 -72.4 151.401 -72.4C151.001 -76.8 146.201 -81.6 146.201 -81.6C134.601 -95.2 129.001 -94.8 129.001 -94.8C114.201 -98.4 109.001 -97.6 109.001 -97.6L56.2 -93.2C29.8 -80.4 37.6 -59.4 37.6 -59.4C44 -51 53.2 -54.8 53.2 -54.8C57.8 -61 69.4 -58.8 69.4 -58.8C89.801 -55.6 87.201 -59.2 87.201 -59.2C84.801 -63.8 68.6 -70 68.4 -70.6C68.2 -71.2 59.4 -74.6 59.4 -74.6C56.4 -75.8 52 -85 52 -85C48.8 -88.4 64.6 -82.6 64.6 -82.6C63.4 -81.6 70.8 -77.6 70.8 -77.6C88.201 -78.6 98.801 -67.8 98.801 -67.8C109.601 -51.2 109.801 -59.4 109.801 -59.4C112.601 -68.8 100.801 -90 100.801 -90C101.201 -92 109.401 -85.4 109.401 -85.4C110.801 -87.4 111.601 -81.6 111.601 -81.6C111.801 -79.2 115.601 -71.2 115.601 -71.2C118.401 -58.2 122.001 -65.6 122.001 -65.6L126.601 -56.2C128.001 -53.6 122.001 -46 122.001 -46C121.801 -43.2 122.601 -43.4 117.001 -35.8C111.401 -28.2 114.801 -23.8 114.801 -23.8C113.401 -17.2 122.201 -17.6 122.201 -17.6C124.801 -15.4 128.201 -15.4 128.201 -15.4C130.001 -13.4 132.401 -14 132.401 -14C134.001 -17.8 140.201 -15.8 140.201 -15.8C141.601 -18.2 149.801 -18.6 149.801 -18.6C150.801 -21.2 151.201 -22.8 154.601 -23.4C158.001 -24 133.401 -67 133.401 -67C139.801 -67.8 131.601 -80.2 131.601 -80.2C129.401 -86.8 140.801 -72.2 143.001 -70.8C145.201 -69.4 146.201 -67.2 144.601 -67.4C143.001 -67.6 141.201 -65.4 142.601 -65.2C144.001 -65 157.001 -50 160.401 -39.8C163.801 -29.6 169.801 -25.6 176.001 -19.6C182.201 -13.6 181.401 10.6 181.401 10.6C181.001 19.4 187.001 30 187.001 30C189.001 33.8 184.801 52 184.801 52C182.801 54.2 184.201 55 184.201 55C185.201 56.2 192.001 69.4 192.001 69.4C190.201 69.2 193.801 72.8 193.801 72.8C199.001 78.8 192.601 75.8 192.601 75.8C186.601 74.2 193.601 84 193.601 84C194.801 85.8 185.801 81.2 185.801 81.2C176.601 80.6 188.201 87.8 188.201 87.8C196.801 95 185.401 90.6 185.401 90.6C180.801 88.8 184.001 95.6 184.001 95.6C187.201 97.2 204.401 104.2 204.401 104.2C204.801 108.001 201.801 113.001 201.801 113.001C202.201 117.001 200.001 120.401 200.001 120.401C198.801 128.601 198.201 129.401 198.201 129.401C194.001 129.601 186.601 143.401 186.601 143.401C184.801 146.001 174.601 158.001 174.601 158.001C172.601 165.001 154.601 157.801 154.601 157.801C148.001 161.201 150.001 157.801 150.001 157.801C149.601 155.601 154.401 149.601 154.401 149.601C161.401 147.001 158.801 136.201 158.801 136.201C162.801 134.801 151.601 132.001 151.801 130.801C152.001 129.601 157.801 128.201 157.801 128.201C165.801 126.201 161.401 123.801 161.401 123.801C160.801 119.801 163.801 114.201 163.801 114.201C175.401 113.401 163.801 97.2 163.801 97.2C153.001 89.6 152.001 83.8 152.001 83.8C164.601 75.6 156.401 63.2 156.601 59.6C156.801 56 158.001 34.4 158.001 34.4C156.001 28.2 153.001 14.6 153.001 14.6C155.201 9.4 162.601 -3.2 162.601 -3.2C165.401 -7.4 174.201 -12.2 172.001 -15.2C169.801 -18.2 162.001 -16.4 162.001 -16.4C154.201 -17.8 154.801 -12.6 154.801 -12.6C153.201 -11.6 152.401 -6.6 152.401 -6.6C151.68 1.333 142.801 7.6 142.801 7.6C131.601 13.8 140.801 17.8 140.801 17.8C146.801 24.4 137.001 24.6 137.001 24.6C126.001 22.8 134.201 33 134.201 33C145.001 45.8 142.001 48.6 142.001 48.6C131.801 49.6 144.401 58.8 144.401 58.8C144.401 58.8 143.601 56.8 143.801 58.6C144.001 60.4 147.001 64.6 147.801 66.6C148.601 68.6 144.601 68.8 144.601 68.8C145.201 78.4 129.801 74.2 129.801 74.2C129.801 74.2 129.801 74.2 128.201 74.4C126.601 74.6 115.401 73.8 109.601 71.6C103.801 69.4 97.001 69.4 97.001 69.4C97.001 69.4 93.001 71.2 85.4 71C77.8 70.8 69.8 73.6 69.8 73.6C65.4 73.2 74 68.8 74.2 69C74.4 69.2 80 63.6 72 64.2C50.203 65.835 39.4 55.6 39.4 55.6C37.4 54.2 34.8 51.4 34.8 51.4C24.8 49.4 36.2 63.8 36.2 63.8C37.4 65.2 36 66.2 36 66.2C35.2 64.6 27.4 59.2 27.4 59.2C24.589 58.227 23.226 56.893 20.895 54.407z"} , {"fill": "#4c0000", "path":"M-3 42.8C-3 42.8 8.6 48.4 11.2 51.2C13.8 54 27.8 65.4 27.8 65.4C27.8 65.4 22.4 63.4 19.8 61.6C17.2 59.8 6.4 51.6 6.4 51.6C6.4 51.6 2.6 45.6 -3 42.8z"} , {"fill": "#99cc32", "path":"M-61.009 11.603C-60.672 11.455 -61.196 8.743 -61.4 8.2C-62.422 5.474 -71.4 4 -71.4 4C-71.627 5.365 -71.682 6.961 -71.576 8.599C-71.576 8.599 -66.708 14.118 -61.009 11.603z"} , {"fill": "#659900", "path":"M-61.009 11.403C-61.458 11.561 -61.024 8.669 -61.2 8.2C-62.222 5.474 -71.4 3.9 -71.4 3.9C-71.627 5.265 -71.682 6.861 -71.576 8.499C-71.576 8.499 -67.308 13.618 -61.009 11.403z"} , {"fill": "#000000", "path":"M-65.4 11.546C-66.025 11.546 -66.531 10.406 -66.531 9C-66.531 7.595 -66.025 6.455 -65.4 6.455C-64.775 6.455 -64.268 7.595 -64.268 9C-64.268 10.406 -64.775 11.546 -65.4 11.546z"} , {"fill": "#000000", "path":"M-65.4 9z"} , {"fill": "#000000", "path":"M-111 109.601C-111 109.601 -116.6 119.601 -91.8 113.601C-91.8 113.601 -77.8 112.401 -75.4 110.001C-74.2 110.801 -65.834 113.734 -63 114.401C-56.2 116.001 -47.8 106 -47.8 106C-47.8 106 -43.2 95.5 -40.4 95.5C-37.6 95.5 -40.8 97.1 -40.8 97.1C-40.8 97.1 -47.4 107.201 -47 108.801C-47 108.801 -52.2 128.801 -68.2 129.601C-68.2 129.601 -84.35 130.551 -83 136.401C-83 136.401 -74.2 134.001 -71.8 136.401C-71.8 136.401 -61 136.001 -69 142.401L-75.8 154.001C-75.8 154.001 -75.66 157.919 -85.8 154.401C-95.6 151.001 -105.9 138.101 -105.9 138.101C-105.9 138.101 -121.85 123.551 -111 109.601z"} , {"fill": "#e59999", "path":"M-112.2 113.601C-112.2 113.601 -114.2 123.201 -77.4 112.801C-77.4 112.801 -73 112.801 -70.6 113.601C-68.2 114.401 -56.2 117.201 -54.2 116.001C-54.2 116.001 -61.4 129.601 -73 128.001C-73 128.001 -86.2 129.601 -85.8 134.401C-85.8 134.401 -81.8 141.601 -77 144.001C-77 144.001 -74.2 146.401 -74.6 149.601C-75 152.801 -77.8 154.401 -79.8 155.201C-81.8 156.001 -85 152.801 -86.6 152.801C-88.2 152.801 -96.6 146.401 -101 141.601C-105.4 136.801 -113.8 124.801 -113.4 122.001C-113 119.201 -112.2 113.601 -112.2 113.601z"} , {"fill": "#b26565", "path":"M-109 131.051C-106.4 135.001 -103.2 139.201 -101 141.601C-96.6 146.401 -88.2 152.801 -86.6 152.801C-85 152.801 -81.8 156.001 -79.8 155.201C-77.8 154.401 -75 152.801 -74.6 149.601C-74.2 146.401 -77 144.001 -77 144.001C-80.066 142.468 -82.806 138.976 -84.385 136.653C-84.385 136.653 -84.2 139.201 -89.4 138.401C-94.6 137.601 -99.8 134.801 -101.4 131.601C-103 128.401 -105.4 126.001 -103.8 129.601C-102.2 133.201 -99.8 136.801 -98.2 137.201C-96.6 137.601 -97 138.801 -99.4 138.401C-101.8 138.001 -104.6 137.601 -109 132.401z"} , {"fill": "#992600", "path":"M-111.6 110.001C-111.6 110.001 -109.8 96.4 -108.6 92.4C-108.6 92.4 -109.4 85.6 -107 81.4C-104.6 77.2 -102.6 71 -99.6 65.6C-96.6 60.2 -96.4 56.2 -92.4 54.6C-88.4 53 -82.4 44.4 -79.6 43.4C-76.8 42.4 -77 43.2 -77 43.2C-77 43.2 -70.2 28.4 -56.6 32.4C-56.6 32.4 -72.8 29.6 -57 20.2C-57 20.2 -61.8 21.3 -58.5 14.3C-56.299 9.632 -56.8 16.4 -67.8 28.2C-67.8 28.2 -72.8 36.8 -78 39.8C-83.2 42.8 -95.2 49.8 -96.4 53.6C-97.6 57.4 -100.8 63.2 -102.8 64.8C-104.8 66.4 -107.6 70.6 -108 74C-108 74 -109.2 78 -110.6 79.2C-112 80.4 -112.2 83.6 -112.2 85.6C-112.2 87.6 -114.2 90.4 -114 92.8C-114 92.8 -113.2 111.801 -113.6 113.801L-111.6 110.001z"} , {"fill": "#ffffff", "path":"M-120.2 114.601C-120.2 114.601 -122.2 113.201 -126.6 119.201C-126.6 119.201 -119.3 152.201 -119.3 153.601C-119.3 153.601 -118.2 151.501 -119.5 144.301C-120.8 137.101 -121.7 124.401 -121.7 124.401L-120.2 114.601z"} , {"fill": "#992600", "path":"M-98.6 54C-98.6 54 -116.2 57.2 -115.8 86.4L-116.6 111.201C-116.6 111.201 -117.8 85.6 -119 84C-120.2 82.4 -116.2 71.2 -119.4 77.2C-119.4 77.2 -133.4 91.2 -125.4 112.401C-125.4 112.401 -123.9 115.701 -126.9 111.101C-126.9 111.101 -131.5 98.5 -130.4 92.1C-130.4 92.1 -130.2 89.9 -128.3 87.1C-128.3 87.1 -119.7 75.4 -117 73.1C-117 73.1 -115.2 58.7 -99.8 53.5C-99.8 53.5 -94.1 51.2 -98.6 54z"} , {"fill": "#000000", "path":"M40.8 -12.2C41.46 -12.554 41.451 -13.524 42.031 -13.697C43.18 -14.041 43.344 -15.108 43.862 -15.892C44.735 -17.211 44.928 -18.744 45.51 -20.235C45.782 -20.935 45.809 -21.89 45.496 -22.55C44.322 -25.031 43.62 -27.48 42.178 -29.906C41.91 -30.356 41.648 -31.15 41.447 -31.748C40.984 -33.132 39.727 -34.123 38.867 -35.443C38.579 -35.884 39.104 -36.809 38.388 -36.893C37.491 -36.998 36.042 -37.578 35.809 -36.552C35.221 -33.965 36.232 -31.442 37.2 -29C36.418 -28.308 36.752 -27.387 36.904 -26.62C37.614 -23.014 36.416 -19.662 35.655 -16.188C35.632 -16.084 35.974 -15.886 35.946 -15.824C34.724 -13.138 33.272 -10.693 31.453 -8.312C30.695 -7.32 29.823 -6.404 29.326 -5.341C28.958 -4.554 28.55 -3.588 28.8 -2.6C25.365 0.18 23.115 4.025 20.504 7.871C20.042 8.551 20.333 9.76 20.884 10.029C21.697 10.427 22.653 9.403 23.123 8.557C23.512 7.859 23.865 7.209 24.356 6.566C24.489 6.391 24.31 5.972 24.445 5.851C27.078 3.504 28.747 0.568 31.2 -1.8C33.15 -2.129 34.687 -3.127 36.435 -4.14C36.743 -4.319 37.267 -4.07 37.557 -4.265C39.31 -5.442 39.308 -7.478 39.414 -9.388C39.464 -10.272 39.66 -11.589 40.8 -12.2z"} , {"fill": "#000000", "path":"M31.959 -16.666C32.083 -16.743 31.928 -17.166 32.037 -17.382C32.199 -17.706 32.602 -17.894 32.764 -18.218C32.873 -18.434 32.71 -18.814 32.846 -18.956C35.179 -21.403 35.436 -24.427 34.4 -27.4C35.424 -28.02 35.485 -29.282 35.06 -30.129C34.207 -31.829 34.014 -33.755 33.039 -35.298C32.237 -36.567 30.659 -37.811 29.288 -36.508C28.867 -36.108 28.546 -35.321 28.824 -34.609C28.888 -34.446 29.173 -34.3 29.146 -34.218C29.039 -33.894 28.493 -33.67 28.487 -33.398C28.457 -31.902 27.503 -30.391 28.133 -29.062C28.905 -27.433 29.724 -25.576 30.4 -23.8C29.166 -21.684 30.199 -19.235 28.446 -17.358C28.31 -17.212 28.319 -16.826 28.441 -16.624C28.733 -16.138 29.139 -15.732 29.625 -15.44C29.827 -15.319 30.175 -15.317 30.375 -15.441C30.953 -15.803 31.351 -16.29 31.959 -16.666z"} , {"fill": "#000000", "path":"M94.771 -26.977C96.16 -25.185 96.45 -22.39 94.401 -21C94.951 -17.691 98.302 -19.67 100.401 -20.2C100.292 -20.588 100.519 -20.932 100.802 -20.937C101.859 -20.952 102.539 -21.984 103.601 -21.8C104.035 -23.357 105.673 -24.059 106.317 -25.439C108.043 -29.134 107.452 -33.407 104.868 -36.653C104.666 -36.907 104.883 -37.424 104.759 -37.786C104.003 -39.997 101.935 -40.312 100.001 -41C98.824 -44.875 98.163 -48.906 96.401 -52.6C94.787 -52.85 94.089 -54.589 92.752 -55.309C91.419 -56.028 90.851 -54.449 90.892 -53.403C90.899 -53.198 91.351 -52.974 91.181 -52.609C91.105 -52.445 90.845 -52.334 90.845 -52.2C90.846 -52.065 91.067 -51.934 91.201 -51.8C90.283 -50.98 88.86 -50.503 88.565 -49.358C87.611 -45.648 90.184 -42.523 91.852 -39.322C92.443 -38.187 91.707 -36.916 90.947 -35.708C90.509 -35.013 90.617 -33.886 90.893 -33.03C91.645 -30.699 93.236 -28.96 94.771 -26.977z"} , {"fill": "#000000", "path":"M57.611 -8.591C56.124 -6.74 52.712 -4.171 55.629 -2.243C55.823 -2.114 56.193 -2.11 56.366 -2.244C58.387 -3.809 60.39 -4.712 62.826 -5.294C62.95 -5.323 63.224 -4.856 63.593 -5.017C65.206 -5.72 67.216 -5.662 68.4 -7C72.167 -6.776 75.732 -7.892 79.123 -9.2C80.284 -9.648 81.554 -10.207 82.755 -10.709C84.131 -11.285 85.335 -12.213 86.447 -13.354C86.58 -13.49 86.934 -13.4 87.201 -13.4C87.161 -14.263 88.123 -14.39 88.37 -15.012C88.462 -15.244 88.312 -15.64 88.445 -15.742C90.583 -17.372 91.503 -19.39 90.334 -21.767C90.049 -22.345 89.8 -22.963 89.234 -23.439C88.149 -24.35 87.047 -23.496 86 -23.8C85.841 -23.172 85.112 -23.344 84.726 -23.146C83.867 -22.707 82.534 -23.292 81.675 -22.854C80.313 -22.159 79.072 -21.99 77.65 -21.613C77.338 -21.531 76.56 -21.627 76.4 -21C76.266 -21.134 76.118 -21.368 76.012 -21.346C74.104 -20.95 72.844 -20.736 71.543 -19.044C71.44 -18.911 70.998 -19.09 70.839 -18.955C69.882 -18.147 69.477 -16.913 68.376 -16.241C68.175 -16.118 67.823 -16.286 67.629 -16.157C66.983 -15.726 66.616 -15.085 65.974 -14.638C65.645 -14.409 65.245 -14.734 65.277 -14.99C65.522 -16.937 66.175 -18.724 65.6 -20.6C67.677 -23.12 70.194 -25.069 72 -27.8C72.015 -29.966 72.707 -32.112 72.594 -34.189C72.584 -34.382 72.296 -35.115 72.17 -35.462C71.858 -36.316 72.764 -37.382 71.92 -38.106C70.516 -39.309 69.224 -38.433 68.4 -37C66.562 -36.61 64.496 -35.917 62.918 -37.151C61.911 -37.938 61.333 -38.844 60.534 -39.9C59.549 -41.202 59.884 -42.638 59.954 -44.202C59.96 -44.33 59.645 -44.466 59.645 -44.6C59.646 -44.735 59.866 -44.866 60 -45C59.294 -45.626 59.019 -46.684 58 -47C58.305 -48.092 57.629 -48.976 56.758 -49.278C54.763 -49.969 53.086 -48.057 51.194 -47.984C50.68 -47.965 50.213 -49.003 49.564 -49.328C49.132 -49.544 48.428 -49.577 48.066 -49.311C47.378 -48.807 46.789 -48.693 46.031 -48.488C44.414 -48.052 43.136 -46.958 41.656 -46.103C40.171 -45.246 39.216 -43.809 38.136 -42.489C37.195 -41.337 37.059 -38.923 38.479 -38.423C40.322 -37.773 41.626 -40.476 43.592 -40.15C43.904 -40.099 44.11 -39.788 44 -39.4C44.389 -39.291 44.607 -39.52 44.8 -39.8C45.658 -38.781 46.822 -38.444 47.76 -37.571C48.73 -36.667 50.476 -37.085 51.491 -36.088C53.02 -34.586 52.461 -31.905 54.4 -30.6C53.814 -29.287 53.207 -28.01 52.872 -26.583C52.59 -25.377 53.584 -24.18 54.795 -24.271C56.053 -24.365 56.315 -25.124 56.8 -26.2C57.067 -25.933 57.536 -25.636 57.495 -25.42C57.038 -23.033 56.011 -21.04 55.553 -18.609C55.494 -18.292 55.189 -18.09 54.8 -18.2C54.332 -14.051 50.28 -11.657 47.735 -8.492C47.332 -7.99 47.328 -6.741 47.737 -6.338C49.14 -4.951 51.1 -6.497 52.8 -7C53.013 -8.206 53.872 -9.148 55.204 -9.092C55.46 -9.082 55.695 -9.624 56.019 -9.754C56.367 -9.892 56.869 -9.668 57.155 -9.866C58.884 -11.061 60.292 -12.167 62.03 -13.356C62.222 -13.487 62.566 -13.328 62.782 -13.436C63.107 -13.598 63.294 -13.985 63.617 -14.17C63.965 -14.37 64.207 -14.08 64.4 -13.8C63.754 -13.451 63.75 -12.494 63.168 -12.292C62.393 -12.024 61.832 -11.511 61.158 -11.064C60.866 -10.871 60.207 -11.119 60.103 -10.94C59.505 -9.912 58.321 -9.474 57.611 -8.591z"} , {"fill": "#000000", "path":"M2.2 -58C2.2 -58 -7.038 -60.872 -18.2 -35.2C-18.2 -35.2 -20.6 -30 -23 -28C-25.4 -26 -36.6 -22.4 -38.6 -18.4L-49 -2.4C-49 -2.4 -34.2 -18.4 -31 -20.8C-31 -20.8 -23 -29.2 -26.2 -22.4C-26.2 -22.4 -40.2 -11.6 -39 -2.4C-39 -2.4 -44.6 12 -45.4 14C-45.4 14 -29.4 -18 -27 -19.2C-24.6 -20.4 -23.4 -20.4 -24.6 -16.8C-25.8 -13.2 -26.2 3.2 -29 5.2C-29 5.2 -21 -15.2 -21.8 -18.4C-21.8 -18.4 -18.6 -22 -16.2 -16.8L-17.4 -0.8L-13 11.2C-13 11.2 -15.4 0 -13.8 -15.6C-13.8 -15.6 -15.8 -26 -11.8 -20.4C-7.8 -14.8 1.8 -8.8 1.8 -4C1.8 -4 -3.4 -21.6 -12.6 -26.4L-16.6 -20.4L-17.8 -22.4C-17.8 -22.4 -21.4 -23.2 -17 -30C-12.6 -36.8 -13 -37.6 -13 -37.6C-13 -37.6 -6.6 -30.4 -5 -30.4C-5 -30.4 8.2 -38 9.4 -13.6C9.4 -13.6 16.2 -28 7 -34.8C7 -34.8 -7.8 -36.8 -6.6 -42L0.6 -54.4C4.2 -59.6 2.6 -56.8 2.6 -56.8z"} , {"fill": "#000000", "path":"M-17.8 -41.6C-17.8 -41.6 -30.6 -41.6 -33.8 -36.4L-41 -26.8C-41 -26.8 -23.8 -36.8 -19.8 -38C-15.8 -39.2 -17.8 -41.6 -17.8 -41.6z"} , {"fill": "#000000", "path":"M-57.8 -35.2C-57.8 -35.2 -59.8 -34 -60.2 -31.2C-60.6 -28.4 -63 -28 -62.2 -25.2C-61.4 -22.4 -59.4 -20 -59.4 -24C-59.4 -28 -57.8 -30 -57 -31.2C-56.2 -32.4 -54.6 -36.8 -57.8 -35.2z"} , {"fill": "#000000", "path":"M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 -85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 33.6L-66.6 26z"} , {"fill": "#000000", "path":"M-79.2 40.4C-79.2 40.4 -94.6 44.8 -98.2 35.2C-98.2 35.2 -103 37.6 -100.8 40.6C-98.6 43.6 -97.4 44 -97.4 44C-97.4 44 -92 45.2 -92.6 46C-93.2 46.8 -95.6 50.2 -95.6 50.2C-95.6 50.2 -85.4 44.2 -79.2 40.4z"} , {"fill": "#ffffff", "path":"M149.201 118.601C148.774 120.735 147.103 121.536 145.201 122.201C143.284 121.243 140.686 118.137 138.801 120.201C138.327 119.721 137.548 119.661 137.204 118.999C136.739 118.101 137.011 117.055 136.669 116.257C136.124 114.985 135.415 113.619 135.601 112.201C137.407 111.489 138.002 109.583 137.528 107.82C137.459 107.563 137.03 107.366 137.23 107.017C137.416 106.694 137.734 106.467 138.001 106.2C137.866 106.335 137.721 106.568 137.61 106.548C137 106.442 137.124 105.805 137.254 105.418C137.839 103.672 139.853 103.408 141.201 104.6C141.457 104.035 141.966 104.229 142.401 104.2C142.351 103.621 142.759 103.094 142.957 102.674C143.475 101.576 145.104 102.682 145.901 102.07C146.977 101.245 148.04 100.546 149.118 101.149C150.927 102.162 152.636 103.374 153.835 105.115C154.41 105.949 154.65 107.23 154.592 108.188C154.554 108.835 153.173 108.483 152.83 109.412C152.185 111.16 154.016 111.679 154.772 113.017C154.97 113.366 154.706 113.67 154.391 113.768C153.98 113.896 153.196 113.707 153.334 114.16C154.306 117.353 151.55 118.031 149.201 118.601z"} , {"fill": "#ffffff", "path":"M139.6 138.201C139.593 136.463 137.992 134.707 139.201 133.001C139.336 133.135 139.467 133.356 139.601 133.356C139.736 133.356 139.867 133.135 140.001 133.001C141.496 135.217 145.148 136.145 145.006 138.991C144.984 139.438 143.897 140.356 144.801 141.001C142.988 142.349 142.933 144.719 142.001 146.601C140.763 146.315 139.551 145.952 138.401 145.401C138.753 143.915 138.636 142.231 139.456 140.911C139.89 140.213 139.603 139.134 139.6 138.201z"} , {"fill": "#cccccc", "path":"M-26.6 129.201C-26.6 129.201 -43.458 139.337 -29.4 124.001C-20.6 114.401 -10.6 108.801 -10.6 108.801C-10.6 108.801 -0.2 104.4 3.4 103.2C7 102 22.2 96.8 25.4 96.4C28.6 96 38.2 92 45 96C51.8 100 59.8 104.4 59.8 104.4C59.8 104.4 43.4 96 39.8 98.4C36.2 100.8 29 100.4 23 103.6C23 103.6 8.2 108.001 5 110.001C1.8 112.001 -8.6 123.601 -10.2 122.801C-11.8 122.001 -9.8 121.601 -8.6 118.801C-7.4 116.001 -9.4 114.401 -17.4 120.801C-25.4 127.201 -26.6 129.201 -26.6 129.201z"} , {"fill": "#000000", "path":"M-19.195 123.234C-19.195 123.234 -17.785 110.194 -9.307 111.859C-9.307 111.859 -1.081 107.689 1.641 105.721C1.641 105.721 9.78 104.019 11.09 103.402C29.569 94.702 44.288 99.221 44.835 98.101C45.381 96.982 65.006 104.099 68.615 108.185C69.006 108.628 58.384 102.588 48.686 100.697C40.413 99.083 18.811 100.944 7.905 106.48C4.932 107.989 -4.013 113.773 -6.544 113.662C-9.075 113.55 -19.195 123.234 -19.195 123.234z"} , {"fill": "#cccccc", "path":"M-23 148.801C-23 148.801 -38.2 146.401 -21.4 144.801C-21.4 144.801 -3.4 142.801 0.6 137.601C0.6 137.601 14.2 128.401 17 128.001C19.8 127.601 49.8 120.401 50.2 118.001C50.6 115.601 56.2 115.601 57.8 116.401C59.4 117.201 58.6 118.401 55.8 119.201C53 120.001 21.8 136.401 15.4 137.601C9 138.801 -2.6 146.401 -7.4 147.601C-12.2 148.801 -23 148.801 -23 148.801z"} , {"fill": "#000000", "path":"M-3.48 141.403C-3.48 141.403 -12.062 140.574 -3.461 139.755C-3.461 139.755 5.355 136.331 7.403 133.668C7.403 133.668 14.367 128.957 15.8 128.753C17.234 128.548 31.194 124.861 31.399 123.633C31.604 122.404 65.67 109.823 70.09 113.013C73.001 115.114 63.1 113.437 53.466 117.847C52.111 118.467 18.258 133.054 14.981 133.668C11.704 134.283 5.765 138.174 3.307 138.788C0.85 139.403 -3.48 141.403 -3.48 141.403z"} , {"fill": "#000000", "path":"M-11.4 143.601C-11.4 143.601 -6.2 143.201 -7.4 144.801C-8.6 146.401 -11 145.601 -11 145.601L-11.4 143.601z"} , {"fill": "#000000", "path":"M-18.6 145.201C-18.6 145.201 -13.4 144.801 -14.6 146.401C-15.8 148.001 -18.2 147.201 -18.2 147.201L-18.6 145.201z"} , {"fill": "#000000", "path":"M-29 146.801C-29 146.801 -23.8 146.401 -25 148.001C-26.2 149.601 -28.6 148.801 -28.6 148.801L-29 146.801z"} , {"fill": "#000000", "path":"M-36.6 147.601C-36.6 147.601 -31.4 147.201 -32.6 148.801C-33.8 150.401 -36.2 149.601 -36.2 149.601L-36.6 147.601z"} , {"fill": "#000000", "path":"M1.8 108.001C1.8 108.001 6.2 108.001 5 109.601C3.8 111.201 0.6 110.801 0.6 110.801L1.8 108.001z"} , {"fill": "#000000", "path":"M-8.2 113.601C-8.2 113.601 -1.694 111.46 -4.2 114.801C-5.4 116.401 -7.8 115.601 -7.8 115.601L-8.2 113.601z"} , {"fill": "#000000", "path":"M-19.4 118.401C-19.4 118.401 -14.2 118.001 -15.4 119.601C-16.6 121.201 -19 120.401 -19 120.401L-19.4 118.401z"} , {"fill": "#000000", "path":"M-27 124.401C-27 124.401 -21.8 124.001 -23 125.601C-24.2 127.201 -26.6 126.401 -26.6 126.401L-27 124.401z"} , {"fill": "#000000", "path":"M-33.8 129.201C-33.8 129.201 -28.6 128.801 -29.8 130.401C-31 132.001 -33.4 131.201 -33.4 131.201L-33.8 129.201z"} , {"fill": "#000000", "path":"M5.282 135.598C5.282 135.598 12.203 135.066 10.606 137.195C9.009 139.325 5.814 138.26 5.814 138.26L5.282 135.598z"} , {"fill": "#000000", "path":"M15.682 130.798C15.682 130.798 22.603 130.266 21.006 132.395C19.409 134.525 16.214 133.46 16.214 133.46L15.682 130.798z"} , {"fill": "#000000", "path":"M26.482 126.398C26.482 126.398 33.403 125.866 31.806 127.995C30.209 130.125 27.014 129.06 27.014 129.06L26.482 126.398z"} , {"fill": "#000000", "path":"M36.882 121.598C36.882 121.598 43.803 121.066 42.206 123.195C40.609 125.325 37.414 124.26 37.414 124.26L36.882 121.598z"} , {"fill": "#000000", "path":"M9.282 103.598C9.282 103.598 16.203 103.066 14.606 105.195C13.009 107.325 9.014 107.06 9.014 107.06L9.282 103.598z"} , {"fill": "#000000", "path":"M19.282 100.398C19.282 100.398 26.203 99.866 24.606 101.995C23.009 104.125 18.614 103.86 18.614 103.86L19.282 100.398z"} , {"fill": "#000000", "path":"M-3.4 140.401C-3.4 140.401 1.8 140.001 0.6 141.601C-0.6 143.201 -3 142.401 -3 142.401L-3.4 140.401z"} , {"fill": "#992600", "path":"M-76.6 41.2C-76.6 41.2 -81 50 -81.4 53.2C-81.4 53.2 -80.6 44.4 -79.4 42.4C-78.2 40.4 -76.6 41.2 -76.6 41.2z"} , {"fill": "#992600", "path":"M-95 55.2C-95 55.2 -98.2 69.6 -97.8 72.4C-97.8 72.4 -99 60.8 -98.6 59.6C-98.2 58.4 -95 55.2 -95 55.2z"} , {"fill": "#cccccc", "path":"M-74.2 -19.4L-74.4 -16.2L-76.6 -16C-76.6 -16 -62.4 -3.4 -61.8 4.2C-61.8 4.2 -61 -4 -74.2 -19.4z"} , {"fill": "#000000", "path":"M-70.216 -18.135C-70.647 -18.551 -70.428 -19.296 -70.836 -19.556C-71.645 -20.072 -69.538 -20.129 -69.766 -20.845C-70.149 -22.051 -69.962 -22.072 -70.084 -23.348C-70.141 -23.946 -69.553 -25.486 -69.168 -25.926C-67.722 -27.578 -69.046 -30.51 -67.406 -32.061C-67.102 -32.35 -66.726 -32.902 -66.441 -33.32C-65.782 -34.283 -64.598 -34.771 -63.648 -35.599C-63.33 -35.875 -63.531 -36.702 -62.962 -36.61C-62.248 -36.495 -61.007 -36.625 -61.052 -35.784C-61.165 -33.664 -62.494 -31.944 -63.774 -30.276C-63.323 -29.572 -63.781 -28.937 -64.065 -28.38C-65.4 -25.76 -65.211 -22.919 -65.385 -20.079C-65.39 -19.994 -65.697 -19.916 -65.689 -19.863C-65.336 -17.528 -64.752 -15.329 -63.873 -13.1C-63.507 -12.17 -63.036 -11.275 -62.886 -10.348C-62.775 -9.662 -62.672 -8.829 -63.08 -8.124C-61.045 -5.234 -62.354 -2.583 -61.185 0.948C-60.978 1.573 -59.286 3.487 -59.749 3.326C-62.262 2.455 -62.374 2.057 -62.551 1.304C-62.697 0.681 -63.027 -0.696 -63.264 -1.298C-63.328 -1.462 -63.499 -3.346 -63.577 -3.468C-65.09 -5.85 -63.732 -5.674 -65.102 -8.032C-66.53 -8.712 -67.496 -9.816 -68.619 -10.978C-68.817 -11.182 -67.674 -11.906 -67.855 -12.119C-68.947 -13.408 -70.1 -14.175 -69.764 -15.668C-69.609 -16.358 -69.472 -17.415 -70.216 -18.135z"} , {"fill": "#000000", "path":"M-73.8 -16.4C-73.8 -16.4 -73.4 -9.6 -71 -8C-68.6 -6.4 -69.8 -7.2 -73 -8.4C-76.2 -9.6 -75 -10.4 -75 -10.4C-75 -10.4 -77.8 -10 -75.4 -8C-73 -6 -69.4 -3.6 -71 -3.6C-72.6 -3.6 -80.2 -7.6 -80.2 -10.4C-80.2 -13.2 -81.2 -17.3 -81.2 -17.3C-81.2 -17.3 -80.1 -18.1 -75.3 -18C-75.3 -18 -73.9 -17.3 -73.8 -16.4z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-74.6 2.2C-74.6 2.2 -83.12 -0.591 -101.6 2.8C-101.6 2.8 -92.569 0.722 -73.8 3C-63.5 4.25 -74.6 2.2 -74.6 2.2z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-72.502 2.129C-72.502 2.129 -80.748 -1.389 -99.453 0.392C-99.453 0.392 -90.275 -0.897 -71.774 2.995C-61.62 5.131 -72.502 2.129 -72.502 2.129z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-70.714 2.222C-70.714 2.222 -78.676 -1.899 -97.461 -1.514C-97.461 -1.514 -88.213 -2.118 -70.052 3.14C-60.086 6.025 -70.714 2.222 -70.714 2.222z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-69.444 2.445C-69.444 2.445 -76.268 -1.862 -93.142 -2.96C-93.142 -2.96 -84.803 -2.79 -68.922 3.319C-60.206 6.672 -69.444 2.445 -69.444 2.445z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M45.84 12.961C45.84 12.961 44.91 13.605 45.124 12.424C45.339 11.243 73.547 -1.927 77.161 -1.677C77.161 -1.677 46.913 11.529 45.84 12.961z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M42.446 13.6C42.446 13.6 41.57 14.315 41.691 13.121C41.812 11.927 68.899 -3.418 72.521 -3.452C72.521 -3.452 43.404 12.089 42.446 13.6z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M39.16 14.975C39.16 14.975 38.332 15.747 38.374 14.547C38.416 13.348 58.233 -2.149 68.045 -4.023C68.045 -4.023 50.015 4.104 39.16 14.975z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M36.284 16.838C36.284 16.838 35.539 17.532 35.577 16.453C35.615 15.373 53.449 1.426 62.28 -0.26C62.28 -0.26 46.054 7.054 36.284 16.838z"} , {"fill": "#cccccc", "path":"M4.6 164.801C4.6 164.801 -10.6 162.401 6.2 160.801C6.2 160.801 24.2 158.801 28.2 153.601C28.2 153.601 41.8 144.401 44.6 144.001C47.4 143.601 63.8 140.001 64.2 137.601C64.6 135.201 70.6 132.801 72.2 133.601C73.8 134.401 73.8 143.601 71 144.401C68.2 145.201 49.4 152.401 43 153.601C36.6 154.801 25 162.401 20.2 163.601C15.4 164.801 4.6 164.801 4.6 164.801z"} , {"fill": "#000000", "path":"M77.6 127.401C77.6 127.401 74.6 129.001 73.4 131.601C73.4 131.601 67 142.201 52.8 145.401C52.8 145.401 29.8 154.401 22 156.401C22 156.401 8.6 161.401 1.2 160.601C1.2 160.601 -5.8 160.801 0.4 162.401C0.4 162.401 20.6 160.401 24 158.601C24 158.601 39.6 153.401 42.6 150.801C45.6 148.201 63.8 143.201 66 141.201C68.2 139.201 78 130.801 77.6 127.401z"} , {"fill": "#000000", "path":"M18.882 158.911C18.882 158.911 24.111 158.685 22.958 160.234C21.805 161.784 19.357 160.91 19.357 160.91L18.882 158.911z"} , {"fill": "#000000", "path":"M11.68 160.263C11.68 160.263 16.908 160.037 15.756 161.586C14.603 163.136 12.155 162.263 12.155 162.263L11.68 160.263z"} , {"fill": "#000000", "path":"M1.251 161.511C1.251 161.511 6.48 161.284 5.327 162.834C4.174 164.383 1.726 163.51 1.726 163.51L1.251 161.511z"} , {"fill": "#000000", "path":"M-6.383 162.055C-6.383 162.055 -1.154 161.829 -2.307 163.378C-3.46 164.928 -5.908 164.054 -5.908 164.054L-6.383 162.055z"} , {"fill": "#000000", "path":"M35.415 151.513C35.415 151.513 42.375 151.212 40.84 153.274C39.306 155.336 36.047 154.174 36.047 154.174L35.415 151.513z"} , {"fill": "#000000", "path":"M45.73 147.088C45.73 147.088 51.689 143.787 51.155 148.849C50.885 151.405 46.362 149.749 46.362 149.749L45.73 147.088z"} , {"fill": "#000000", "path":"M54.862 144.274C54.862 144.274 62.021 140.573 60.287 146.035C59.509 148.485 55.493 146.935 55.493 146.935L54.862 144.274z"} , {"fill": "#000000", "path":"M64.376 139.449C64.376 139.449 68.735 134.548 69.801 141.21C70.207 143.748 65.008 142.11 65.008 142.11L64.376 139.449z"} , {"fill": "#000000", "path":"M26.834 155.997C26.834 155.997 32.062 155.77 30.91 157.32C29.757 158.869 27.308 157.996 27.308 157.996L26.834 155.997z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M62.434 34.603C62.434 34.603 61.708 35.268 61.707 34.197C61.707 33.127 79.191 19.863 88.034 18.479C88.034 18.479 71.935 25.208 62.434 34.603z"} , {"fill": "#000000", "path":"M65.4 98.4C65.4 98.4 87.401 120.801 96.601 124.401C96.601 124.401 105.801 135.601 101.801 161.601C101.801 161.601 98.601 169.201 95.401 148.401C95.401 148.401 98.601 123.201 87.401 139.201C87.401 139.201 79 129.301 85.4 129.601C85.4 129.601 88.601 131.601 89.001 130.001C89.401 128.401 81.4 114.801 64.2 100.4C47 86 65.4 98.4 65.4 98.4z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M7 137.201C7 137.201 6.8 135.401 8.6 136.201C10.4 137.001 104.601 143.201 136.201 167.201C136.201 167.201 91.001 144.001 7 137.201z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M17.4 132.801C17.4 132.801 17.2 131.001 19 131.801C20.8 132.601 157.401 131.601 181.001 164.001C181.001 164.001 159.001 138.801 17.4 132.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M29 128.801C29 128.801 28.8 127.001 30.6 127.801C32.4 128.601 205.801 115.601 229.401 148.001C229.401 148.001 219.801 122.401 29 128.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M39 124.001C39 124.001 38.8 122.201 40.6 123.001C42.4 123.801 164.601 85.2 188.201 117.601C188.201 117.601 174.801 93 39 124.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-19 146.801C-19 146.801 -19.2 145.001 -17.4 145.801C-15.6 146.601 2.2 148.801 4.2 187.601C4.2 187.601 -3 145.601 -19 146.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-27.8 148.401C-27.8 148.401 -28 146.601 -26.2 147.401C-24.4 148.201 -10.2 143.601 -13 182.401C-13 182.401 -11.8 147.201 -27.8 148.401z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-35.8 148.801C-35.8 148.801 -36 147.001 -34.2 147.801C-32.4 148.601 -17 149.201 -29.4 171.601C-29.4 171.601 -19.8 147.601 -35.8 148.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M11.526 104.465C11.526 104.465 11.082 106.464 12.631 105.247C28.699 92.622 61.141 33.72 116.826 28.086C116.826 28.086 78.518 15.976 11.526 104.465z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M22.726 102.665C22.726 102.665 21.363 101.472 23.231 100.847C25.099 100.222 137.541 27.72 176.826 35.686C176.826 35.686 149.719 28.176 22.726 102.665z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M1.885 108.767C1.885 108.767 1.376 110.366 3.087 109.39C12.062 104.27 15.677 47.059 59.254 45.804C59.254 45.804 26.843 31.09 1.885 108.767z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-18.038 119.793C-18.038 119.793 -19.115 121.079 -17.162 120.825C-6.916 119.493 14.489 78.222 58.928 83.301C58.928 83.301 26.962 68.955 -18.038 119.793z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-6.8 113.667C-6.8 113.667 -7.611 115.136 -5.742 114.511C4.057 111.237 17.141 66.625 61.729 63.078C61.729 63.078 27.603 55.135 -6.8 113.667z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-25.078 124.912C-25.078 124.912 -25.951 125.954 -24.369 125.748C-16.07 124.669 1.268 91.24 37.264 95.354C37.264 95.354 11.371 83.734 -25.078 124.912z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-32.677 130.821C-32.677 130.821 -33.682 131.866 -32.091 131.748C-27.923 131.439 2.715 98.36 21.183 113.862C21.183 113.862 9.168 95.139 -32.677 130.821z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M36.855 98.898C36.855 98.898 35.654 97.543 37.586 97.158C39.518 96.774 160.221 39.061 198.184 51.927C198.184 51.927 172.243 41.053 36.855 98.898z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M3.4 163.201C3.4 163.201 3.2 161.401 5 162.201C6.8 163.001 22.2 163.601 9.8 186.001C9.8 186.001 19.4 162.001 3.4 163.201z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M13.8 161.601C13.8 161.601 13.6 159.801 15.4 160.601C17.2 161.401 35 163.601 37 202.401C37 202.401 29.8 160.401 13.8 161.601z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M20.6 160.001C20.6 160.001 20.4 158.201 22.2 159.001C24 159.801 48.6 163.201 72.2 195.601C72.2 195.601 36.6 158.801 20.6 160.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M28.225 157.972C28.225 157.972 27.788 156.214 29.678 156.768C31.568 157.322 52.002 155.423 90.099 189.599C90.099 189.599 43.924 154.656 28.225 157.972z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M38.625 153.572C38.625 153.572 38.188 151.814 40.078 152.368C41.968 152.922 76.802 157.423 128.499 192.399C128.499 192.399 54.324 150.256 38.625 153.572z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-1.8 142.001C-1.8 142.001 -2 140.201 -0.2 141.001C1.6 141.801 55 144.401 85.4 171.201C85.4 171.201 50.499 146.426 -1.8 142.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-11.8 146.001C-11.8 146.001 -12 144.201 -10.2 145.001C-8.4 145.801 16.2 149.201 39.8 181.601C39.8 181.601 4.2 144.801 -11.8 146.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M49.503 148.962C49.503 148.962 48.938 147.241 50.864 147.655C52.79 148.068 87.86 150.004 141.981 181.098C141.981 181.098 64.317 146.704 49.503 148.962z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M57.903 146.562C57.903 146.562 57.338 144.841 59.264 145.255C61.19 145.668 96.26 147.604 150.381 178.698C150.381 178.698 73.317 143.904 57.903 146.562z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M67.503 141.562C67.503 141.562 66.938 139.841 68.864 140.255C70.79 140.668 113.86 145.004 203.582 179.298C203.582 179.298 82.917 138.904 67.503 141.562z"} , {"fill": "#000000", "path":"M-43.8 148.401C-43.8 148.401 -38.6 148.001 -39.8 149.601C-41 151.201 -43.4 150.401 -43.4 150.401L-43.8 148.401z"} , {"fill": "#000000", "path":"M-13 162.401C-13 162.401 -7.8 162.001 -9 163.601C-10.2 165.201 -12.6 164.401 -12.6 164.401L-13 162.401z"} , {"fill": "#000000", "path":"M-21.8 162.001C-21.8 162.001 -16.6 161.601 -17.8 163.201C-19 164.801 -21.4 164.001 -21.4 164.001L-21.8 162.001z"} , {"fill": "#000000", "path":"M-117.169 150.182C-117.169 150.182 -112.124 151.505 -113.782 152.624C-115.439 153.744 -117.446 152.202 -117.446 152.202L-117.169 150.182z"} , {"fill": "#000000", "path":"M-115.169 140.582C-115.169 140.582 -110.124 141.905 -111.782 143.024C-113.439 144.144 -115.446 142.602 -115.446 142.602L-115.169 140.582z"} , {"fill": "#000000", "path":"M-122.369 136.182C-122.369 136.182 -117.324 137.505 -118.982 138.624C-120.639 139.744 -122.646 138.202 -122.646 138.202L-122.369 136.182z"} , {"fill": "#cccccc", "path":"M-42.6 211.201C-42.6 211.201 -44.2 211.201 -48.2 213.201C-50.2 213.201 -61.4 216.801 -67 226.801C-67 226.801 -54.6 217.201 -42.6 211.201z"} , {"fill": "#cccccc", "path":"M45.116 303.847C45.257 304.105 45.312 304.525 45.604 304.542C46.262 304.582 47.495 304.883 47.37 304.247C46.522 299.941 45.648 295.004 41.515 293.197C40.876 292.918 39.434 293.331 39.36 294.215C39.233 295.739 39.116 297.088 39.425 298.554C39.725 299.975 41.883 299.985 42.8 298.601C43.736 300.273 44.168 302.116 45.116 303.847z"} , {"fill": "#cccccc", "path":"M34.038 308.581C34.786 309.994 34.659 311.853 36.074 312.416C36.814 312.71 38.664 311.735 38.246 310.661C37.444 308.6 37.056 306.361 35.667 304.55C35.467 304.288 35.707 303.755 35.547 303.427C34.953 302.207 33.808 301.472 32.4 301.801C31.285 304.004 32.433 306.133 33.955 307.842C34.091 307.994 33.925 308.37 34.038 308.581z"} , {"fill": "#cccccc", "path":"M-5.564 303.391C-5.672 303.014 -5.71 302.551 -5.545 302.23C-5.014 301.197 -4.221 300.075 -4.558 299.053C-4.906 297.997 -6.022 298.179 -6.672 298.748C-7.807 299.742 -7.856 301.568 -8.547 302.927C-8.743 303.313 -8.692 303.886 -9.133 304.277C-9.607 304.698 -10.047 306.222 -9.951 306.793C-9.898 307.106 -10.081 317.014 -9.859 316.751C-9.24 316.018 -6.19 306.284 -6.121 305.392C-6.064 304.661 -5.332 304.196 -5.564 303.391z"} , {"fill": "#cccccc", "path":"M-31.202 296.599C-28.568 294.1 -25.778 291.139 -26.22 287.427C-26.336 286.451 -28.111 286.978 -28.298 287.824C-29.1 291.449 -31.139 294.11 -33.707 296.502C-35.903 298.549 -37.765 304.893 -38 305.401C-34.303 300.145 -32.046 297.399 -31.202 296.599z"} , {"fill": "#cccccc", "path":"M-44.776 290.635C-44.253 290.265 -44.555 289.774 -44.338 289.442C-43.385 287.984 -42.084 286.738 -42.066 285C-42.063 284.723 -42.441 284.414 -42.776 284.638C-43.053 284.822 -43.395 284.952 -43.503 285.082C-45.533 287.531 -46.933 290.202 -48.376 293.014C-48.559 293.371 -49.703 297.862 -49.39 297.973C-49.151 298.058 -47.431 293.877 -47.221 293.763C-45.958 293.077 -45.946 291.462 -44.776 290.635z"} , {"fill": "#cccccc", "path":"M-28.043 310.179C-27.599 309.31 -26.023 308.108 -26.136 307.219C-26.254 306.291 -25.786 304.848 -26.698 305.536C-27.955 306.484 -31.404 307.833 -31.674 313.641C-31.7 314.212 -28.726 311.519 -28.043 310.179z"} , {"fill": "#cccccc", "path":"M-13.6 293.001C-13.2 292.333 -12.492 292.806 -12.033 292.543C-11.385 292.171 -10.774 291.613 -10.482 290.964C-9.512 288.815 -7.743 286.995 -7.6 284.601C-9.091 283.196 -9.77 285.236 -10.4 286.201C-11.723 284.554 -12.722 286.428 -14.022 286.947C-14.092 286.975 -14.305 286.628 -14.38 286.655C-15.557 287.095 -16.237 288.176 -17.235 288.957C-17.406 289.091 -17.811 288.911 -17.958 289.047C-18.61 289.65 -19.583 289.975 -19.863 290.657C-20.973 293.364 -24.113 295.459 -26 303.001C-25.619 303.91 -21.488 296.359 -21.001 295.661C-20.165 294.465 -20.047 297.322 -18.771 296.656C-18.72 296.629 -18.534 296.867 -18.4 297.001C-18.206 296.721 -17.988 296.492 -17.6 296.601C-17.6 296.201 -17.734 295.645 -17.533 295.486C-16.296 294.509 -16.38 293.441 -15.6 292.201C-15.142 292.99 -14.081 292.271 -13.6 293.001z"} , {"fill": "#cccccc", "path":"M46.2 347.401C46.2 347.401 53.6 327.001 49.2 315.801C49.2 315.801 60.6 337.401 56 348.601C56 348.601 55.6 338.201 51.6 333.201C51.6 333.201 47.6 346.001 46.2 347.401z"} , {"fill": "#cccccc", "path":"M31.4 344.801C31.4 344.801 36.8 336.001 28.8 317.601C28.8 317.601 28 338.001 21.2 349.001C21.2 349.001 35.4 328.801 31.4 344.801z"} , {"fill": "#cccccc", "path":"M21.4 342.801C21.4 342.801 21.2 322.801 21.6 319.801C21.6 319.801 17.8 336.401 7.6 346.001C7.6 346.001 22 334.001 21.4 342.801z"} , {"fill": "#cccccc", "path":"M11.8 310.801C11.8 310.801 17.8 324.401 7.8 342.801C7.8 342.801 14.2 330.601 9.4 323.601C9.4 323.601 12 320.201 11.8 310.801z"} , {"fill": "#cccccc", "path":"M-7.4 342.401C-7.4 342.401 -8.4 326.801 -6.6 324.601C-6.6 324.601 -6.4 318.201 -6.8 317.201C-6.8 317.201 -2.8 311.001 -2.6 318.401C-2.6 318.401 -1.2 326.201 1.6 330.801C1.6 330.801 5.2 336.201 5 342.601C5 342.601 -5 312.401 -7.4 342.401z"} , {"fill": "#cccccc", "path":"M-11 314.801C-11 314.801 -17.6 325.601 -19.4 344.601C-19.4 344.601 -20.8 338.401 -17 324.001C-17 324.001 -12.8 308.601 -11 314.801z"} , {"fill": "#cccccc", "path":"M-32.8 334.601C-32.8 334.601 -27.8 329.201 -26.4 324.201C-26.4 324.201 -22.8 308.401 -29.2 317.001C-29.2 317.001 -29 325.001 -37.2 332.401C-37.2 332.401 -32.4 330.001 -32.8 334.601z"} , {"fill": "#cccccc", "path":"M-38.6 329.601C-38.6 329.601 -35.2 312.201 -34.4 311.401C-34.4 311.401 -32.6 308.001 -35.4 311.201C-35.4 311.201 -44.2 330.401 -48.2 337.001C-48.2 337.001 -40.2 327.801 -38.6 329.601z"} , {"fill": "#cccccc", "path":"M-44.4 313.001C-44.4 313.001 -32.8 290.601 -54.6 316.401C-54.6 316.401 -43.6 306.601 -44.4 313.001z"} , {"fill": "#cccccc", "path":"M-59.8 298.401C-59.8 298.401 -55 279.601 -52.4 279.801C-52.4 279.801 -44.2 270.801 -50.8 281.401C-50.8 281.401 -56.8 291.001 -56.2 300.801C-56.2 300.801 -56.8 291.201 -59.8 298.401z"} , {"fill": "#cccccc", "path":"M270.5 287C270.5 287 258.5 277 256 273.5C256 273.5 269.5 292 269.5 299C269.5 299 272 291.5 270.5 287z"} , {"fill": "#cccccc", "path":"M276 265C276 265 255 250 251.5 242.5C251.5 242.5 278 272 278 276.5C278 276.5 278.5 267.5 276 265z"} , {"fill": "#cccccc", "path":"M293 111C293 111 281 103 279.5 105C279.5 105 290 111.5 292.5 120C292.5 120 291 111 293 111z"} , {"fill": "#cccccc", "path":"M301.5 191.5L284 179.5C284 179.5 303 196.5 303.5 200.5L301.5 191.5z"} , {"stroke":"#000000", "path":"M-89.25 169L-67.25 173.75"} , {"stroke":"#000000", "path":"M-39 331C-39 331 -39.5 327.5 -48.5 338"} , {"stroke":"#000000", "path":"M-33.5 336C-33.5 336 -31.5 329.5 -38 334"} , {"stroke":"#000000", "path":"M20.5 344.5C20.5 344.5 22 333.5 10.5 346.5"} ];PyQt-gpl-5.5.1/examples/quick/canvas/tiger/tiger.qml0000644000076500000240000001140012613140041022406 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 "../contents" import "tiger.js" as Tiger Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Tiger with SVG path"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property string strokeStyle:"steelblue" property string fillStyle:"yellow" property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value property int frame:0 onFillChanged: requestPaint(); onStrokeChanged: requestPaint(); onAlphaChanged: requestPaint(); onScaleXChanged: requestPaint(); onScaleYChanged: requestPaint(); onRotateChanged: requestPaint(); onPainted : { canvas.frame++; if (canvas.frame < Tiger.tiger.length) requestPaint(); } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); ctx.globalCompositeOperation = "source-over"; ctx.translate(canvas.width/2, canvas.height/2); ctx.strokeStyle = Qt.rgba(.3, .3, .3,1); ctx.lineWidth = 1; //! [0] for (var i = 0; i < canvas.frame && i < Tiger.tiger.length; i++) { if (Tiger.tiger[i].width != undefined) ctx.lineWidth = Tiger.tiger[i].width; if (Tiger.tiger[i].path != undefined) ctx.path = Tiger.tiger[i].path; if (Tiger.tiger[i].fill != undefined) { ctx.fillStyle = Tiger.tiger[i].fill; ctx.fill(); } if (Tiger.tiger[i].stroke != undefined) { ctx.strokeStyle = Tiger.tiger[i].stroke; ctx.stroke(); } } //! [0] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:0.5; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:0.5; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt-gpl-5.5.1/examples/quick/models/0000755000076500000240000000000012613140041017463 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/models/abstractitemmodel/0000755000076500000240000000000012613140041023166 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/models/abstractitemmodel/abstractitemmodel.py0000644000076500000240000000734212613140041027251 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import QAbstractListModel, QModelIndex, Qt, QUrl, QVariant from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView import abstractitemmodel_rc class Animal(object): def __init__(self, type, size): self._type = type self._size = size def type(self): return self._type def size(self): return self._size class AnimalModel(QAbstractListModel): TypeRole = Qt.UserRole + 1 SizeRole = Qt.UserRole + 2 _roles = {TypeRole: "type", SizeRole: "size"} def __init__(self, parent=None): super(AnimalModel, self).__init__(parent) self._animals = [] def addAnimal(self, animal): self.beginInsertRows(QModelIndex(), self.rowCount(), self.rowCount()) self._animals.append(animal) self.endInsertRows() def rowCount(self, parent=QModelIndex()): return len(self._animals) def data(self, index, role=Qt.DisplayRole): try: animal = self._animals[index.row()] except IndexError: return QVariant() if role == self.TypeRole: return animal.type() if role == self.SizeRole: return animal.size() return QVariant() def roleNames(self): return self._roles if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) model = AnimalModel() model.addAnimal(Animal("Wolf", "Medium")) model.addAnimal(Animal("Polar bear", "Large")) model.addAnimal(Animal("Quoll", "Small")) view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) ctxt = view.rootContext() ctxt.setContextProperty('myModel', model) view.setSource(QUrl('qrc:view.qml')) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/models/abstractitemmodel/abstractitemmodel.qrc0000644000076500000240000000013512613140041027377 0ustar philstaff00000000000000 view.qml PyQt-gpl-5.5.1/examples/quick/models/abstractitemmodel/abstractitemmodel_rc.py0000644000076500000240000002270412613140041027734 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue Jul 23 11:31:33 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\x67\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x69\x6d\x70\x6f\x72\x74\x20\ \x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x2f\x2f\x21\ \x5b\x30\x5d\x0a\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x32\x35\x30\x0a\x0a\x20\x20\x20\x20\ \x6d\x6f\x64\x65\x6c\x3a\x20\x6d\x79\x4d\x6f\x64\x65\x6c\x0a\x20\ \x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x20\x54\x65\x78\ \x74\x20\x7b\x20\x74\x65\x78\x74\x3a\x20\x22\x41\x6e\x69\x6d\x61\ \x6c\x3a\x20\x22\x20\x2b\x20\x74\x79\x70\x65\x20\x2b\x20\x22\x2c\ \x20\x22\x20\x2b\x20\x73\x69\x7a\x65\x20\x7d\x0a\x7d\x0a\x2f\x2f\ \x21\x5b\x30\x5d\x0a\x0a\ " qt_resource_name = b"\ \x00\x08\ \x0f\xca\x5b\xbc\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/models/abstractitemmodel/view.qml0000644000076500000240000000414712613140041024661 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 //![0] ListView { width: 200; height: 250 model: myModel delegate: Text { text: "Animal: " + type + ", " + size } } //![0] PyQt-gpl-5.5.1/examples/quick/models/objectlistmodel/0000755000076500000240000000000012613140041022646 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/models/objectlistmodel/objectlistmodel.py0000644000076500000240000000654012613140041026410 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView import objectlistmodel_rc class DataObject(QObject): nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() colorChanged = pyqtSignal() @pyqtProperty(str, notify=colorChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.colorChanged.emit() def __init__(self, name='', color='', parent=None): super(DataObject, self).__init__(parent) self._name = name self._color = color if __name__ == '__main__': import sys 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) ctxt = view.rootContext() ctxt.setContextProperty('myModel', dataList) view.setSource(QUrl('qrc:view.qml')) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/models/objectlistmodel/objectlistmodel.qrc0000644000076500000240000000013412613140041026536 0ustar philstaff00000000000000 view.qml PyQt-gpl-5.5.1/examples/quick/models/objectlistmodel/objectlistmodel_rc.py0000644000076500000240000002336612613140041027101 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Mon Jul 22 22:27:26 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\xb1\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x2f\x2f\ \x21\x5b\x30\x5d\x0a\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x31\x30\x30\x0a\x0a\x20\x20\x20\ \x20\x6d\x6f\x64\x65\x6c\x3a\x20\x6d\x79\x4d\x6f\x64\x65\x6c\x0a\ \x20\x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x20\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x35\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x6d\ \x6f\x64\x65\x6c\x2e\x6d\x6f\x64\x65\x6c\x44\x61\x74\x61\x2e\x63\ \x6f\x6c\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\ \x74\x20\x7b\x20\x74\x65\x78\x74\x3a\x20\x6e\x61\x6d\x65\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\x2f\x2f\x21\x5b\x30\x5d\x0a\ \ " qt_resource_name = b"\ \x00\x08\ \x0f\xca\x5b\xbc\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/models/objectlistmodel/view.qml0000644000076500000240000000426112613140041024336 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 //![0] ListView { width: 100; height: 100 model: myModel delegate: Rectangle { height: 25 width: 100 color: model.modelData.color Text { text: name } } } //![0] PyQt-gpl-5.5.1/examples/quick/models/stringlistmodel/0000755000076500000240000000000012613140041022706 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/models/stringlistmodel/stringlistmodel.py0000644000076500000240000000455412613140041026513 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView import stringlistmodel_rc app = QGuiApplication(sys.argv) dataList = ["Item 1", "Item 2", "Item 3", "Item 4"] view = QQuickView() ctxt = view.rootContext() ctxt.setContextProperty('myModel', dataList) view.setSource(QUrl('qrc:view.qml')) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/models/stringlistmodel/stringlistmodel.qrc0000644000076500000240000000013412613140041026636 0ustar philstaff00000000000000 view.qml PyQt-gpl-5.5.1/examples/quick/models/stringlistmodel/stringlistmodel_rc.py0000644000076500000240000002316212613140041027173 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Mon Jul 22 22:20:10 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\x91\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x2f\x2f\x21\ \x5b\x30\x5d\x0a\x0a\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x31\x30\x30\x0a\x0a\x20\x20\x20\ \x20\x6d\x6f\x64\x65\x6c\x3a\x20\x6d\x79\x4d\x6f\x64\x65\x6c\x0a\ \x20\x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x20\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x35\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x74\ \x65\x78\x74\x3a\x20\x6d\x6f\x64\x65\x6c\x44\x61\x74\x61\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\x2f\x2f\x21\x5b\x30\x5d\x0a\ \ " qt_resource_name = b"\ \x00\x08\ \x0f\xca\x5b\xbc\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/models/stringlistmodel/view.qml0000644000076500000240000000422112613140041024372 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 //![0] ListView { width: 100; height: 100 model: myModel delegate: Rectangle { height: 25 width: 100 Text { text: modelData } } } //![0] PyQt-gpl-5.5.1/examples/quick/README0000644000076500000240000000124512613140041017062 0ustar philstaff00000000000000PyQt's QtQuick module provides the framework to execute programs written in QML. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/quick/scenegraph/0000755000076500000240000000000012613140041020317 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/scenegraph/customgeometry/0000755000076500000240000000000012613140041023405 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/scenegraph/customgeometry/customgeometry.py0000644000076500000240000001342712613140041027054 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, pyqtSignal, QPointF, QUrl from PyQt5.QtGui import QColor, QGuiApplication from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import (QQuickItem, QQuickView, QSGFlatColorMaterial, QSGGeometry, QSGGeometryNode, QSGNode) import customgeometry_rc class BezierCurve(QQuickItem): p1Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p1Changed) def p1(self): return self._p1 @p1.setter def p1(self, p): if self._p1 != p: self._p1 = QPointF(p) self.p1Changed.emit(p) self.update() p2Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p2Changed) def p2(self): return self._p2 @p2.setter def p2(self, p): if self._p2 != p: self._p2 = QPointF(p) self.p2Changed.emit(p) self.update() p3Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p3Changed) def p3(self): return self._p3 @p3.setter def p3(self, p): if self._p3 != p: self._p3 = QPointF(p) self.p3Changed.emit(p) self.update() p4Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p4Changed) def p4(self): return self._p4 @p4.setter def p4(self, p): if self._p4 != p: self._p4 = QPointF(p) self.p4Changed.emit(p) self.update() segmentCountChanged = pyqtSignal(int) @pyqtProperty(int, notify=segmentCountChanged) def segmentCount(self): return self._segmentCount @segmentCount.setter def segmentCount(self, count): if self._segmentCount != count: self._segmentCount = count self.segmentCountChanged.emit(count) self.update() def __init__(self, parent=None): super(BezierCurve, self).__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._root_node = None self.setFlag(QQuickItem.ItemHasContents, True) def updatePaintNode(self, oldNode, nodeData): if self._root_node is None: self._root_node = QSGGeometryNode() geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), self._segmentCount) geometry.setLineWidth(2) geometry.setDrawingMode(QSGGeometry.GL_LINE_STRIP) self._root_node.setGeometry(geometry) self._root_node.setFlag(QSGNode.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(255, 0, 0)) self._root_node.setMaterial(material) self._root_node.setFlag(QSGNode.OwnsMaterial) else: geometry = self._root_node.geometry() geometry.allocate(self._segmentCount) w = self.width() h = self.height() vertices = geometry.vertexDataAsPoint2D() for i in range(self._segmentCount): t = i / float(self._segmentCount - 1) invt = 1 - t pos = invt * invt * invt * self._p1 \ + 3 * invt * invt * t * self._p2 \ + 3 * invt * t * t * self._p3 \ + t * t * t * self._p4 vertices[i].set(pos.x() * w, pos.y() * h) self._root_node.markDirty(QSGNode.DirtyGeometry) return self._root_node if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) qmlRegisterType(BezierCurve, "CustomGeometry", 1, 0, "BezierCurve") view = QQuickView() format = view.format() format.setSamples(16) view.setFormat(format) view.setSource(QUrl('qrc:///scenegraph/customgeometry/main.qml')) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/scenegraph/customgeometry/customgeometry.qrc0000644000076500000240000000016012613140041027177 0ustar philstaff00000000000000 main.qml PyQt-gpl-5.5.1/examples/quick/scenegraph/customgeometry/customgeometry_rc.py0000644000076500000240000003022412613140041027532 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue Jul 23 17:08:56 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0a\xac\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x64\x65\x6d\x6f\x6e\x73\x74\x72\ \x61\x74\x69\x6f\x6e\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\ \x6e\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\ \x6c\x6b\x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\ \x42\x45\x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x4c\x47\ \x50\x4c\x24\x0a\x2a\x2a\x20\x43\x6f\x6d\x6d\x65\x72\x63\x69\x61\ \x6c\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\x61\x67\x65\x0a\ \x2a\x2a\x20\x4c\x69\x63\x65\x6e\x73\x65\x65\x73\x20\x68\x6f\x6c\ \x64\x69\x6e\x67\x20\x76\x61\x6c\x69\x64\x20\x63\x6f\x6d\x6d\x65\ \x72\x63\x69\x61\x6c\x20\x51\x74\x20\x6c\x69\x63\x65\x6e\x73\x65\ \x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x66\ \x69\x6c\x65\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x63\x63\x6f\x72\x64\ \x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x63\x6f\ \x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x6c\x69\x63\x65\x6e\x73\x65\ \x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x70\x72\x6f\x76\x69\ \x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x2a\x2a\x20\ \x53\x6f\x66\x74\x77\x61\x72\x65\x20\x6f\x72\x2c\x20\x61\x6c\x74\ \x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x69\x6e\x20\x61\ \x63\x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\ \x68\x65\x20\x74\x65\x72\x6d\x73\x20\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x64\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x20\x77\x72\x69\x74\x74\ \x65\x6e\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x62\x65\x74\ \x77\x65\x65\x6e\x20\x79\x6f\x75\x20\x61\x6e\x64\x20\x44\x69\x67\ \x69\x61\x2e\x20\x20\x46\x6f\x72\x20\x6c\x69\x63\x65\x6e\x73\x69\ \x6e\x67\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\x0a\x2a\x2a\x20\ \x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x73\x65\x65\x20\x68\ \x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\x64\x69\x67\x69\x61\x2e\x63\ \x6f\x6d\x2f\x6c\x69\x63\x65\x6e\x73\x69\x6e\x67\x2e\x20\x20\x46\ \x6f\x72\x20\x66\x75\x72\x74\x68\x65\x72\x20\x69\x6e\x66\x6f\x72\ \x6d\x61\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x75\x73\x65\x20\x74\x68\ \x65\x20\x63\x6f\x6e\x74\x61\x63\x74\x20\x66\x6f\x72\x6d\x20\x61\ \x74\x20\x68\x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\x64\x69\x67\x69\ \x61\x2e\x63\x6f\x6d\x2f\x63\x6f\x6e\x74\x61\x63\x74\x2d\x75\x73\ \x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\ \x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\ \x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\x61\x67\x65\x0a\ \x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\ \x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x6d\x61\x79\x20\ \x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\ \x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x47\ \x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x0a\x2a\x2a\x20\x47\x65\x6e\ \x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\ \x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\ \x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\x79\x20\ \x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\x61\x72\ \x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x20\ \x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\ \x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\x4e\x53\ \x45\x2e\x4c\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\ \x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\x67\ \x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\ \x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\x77\ \x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x69\ \x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\x2a\ \x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\x20\ \x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\ \x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\ \x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\x72\x65\x71\x75\x69\x72\ \x65\x6d\x65\x6e\x74\x73\x0a\x2a\x2a\x20\x77\x69\x6c\x6c\x20\x62\ \x65\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\ \x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\x6c\x69\x63\x65\x6e\x73\ \x65\x73\x2f\x6f\x6c\x64\x2d\x6c\x69\x63\x65\x6e\x73\x65\x73\x2f\ \x6c\x67\x70\x6c\x2d\x32\x2e\x31\x2e\x68\x74\x6d\x6c\x2e\x0a\x2a\ \x2a\x0a\x2a\x2a\x20\x49\x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\ \x2c\x20\x61\x73\x20\x61\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x65\ \x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\x44\x69\x67\x69\x61\x20\ \x67\x69\x76\x65\x73\x20\x79\x6f\x75\x20\x63\x65\x72\x74\x61\x69\ \x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x0a\x2a\x2a\x20\ \x72\x69\x67\x68\x74\x73\x2e\x20\x20\x54\x68\x65\x73\x65\x20\x72\ \x69\x67\x68\x74\x73\x20\x61\x72\x65\x20\x64\x65\x73\x63\x72\x69\ \x62\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x44\x69\x67\x69\x61\ \x20\x51\x74\x20\x4c\x47\x50\x4c\x20\x45\x78\x63\x65\x70\x74\x69\ \x6f\x6e\x0a\x2a\x2a\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x31\x2e\ \x31\x2c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\ \x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x47\x50\x4c\x5f\x45\x58\x43\ \x45\x50\x54\x49\x4f\x4e\x2e\x74\x78\x74\x20\x69\x6e\x20\x74\x68\ \x69\x73\x20\x70\x61\x63\x6b\x61\x67\x65\x2e\x0a\x2a\x2a\x0a\x2a\ \x2a\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\ \x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\x61\ \x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\ \x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x6d\ \x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\x64\x65\x72\ \x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\ \x65\x20\x47\x4e\x55\x0a\x2a\x2a\x20\x47\x65\x6e\x65\x72\x61\x6c\ \x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\ \x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\x30\x20\x61\x73\x20\x70\ \x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\ \x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x0a\x2a\x2a\ \x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\ \x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\ \x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\x4e\x53\x45\x2e\x47\x50\ \x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\x67\x69\x6e\x67\x20\x6f\ \x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x2e\x20\x20\x50\x6c\ \x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\x77\x20\x74\x68\x65\x20\ \x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x69\x6e\x66\x6f\x72\x6d\ \x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\x2a\x20\x65\x6e\x73\x75\ \x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\x72\ \x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\ \x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\x30\x20\x72\x65\ \x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x20\x77\x69\x6c\x6c\x20\ \x62\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\x63\x6f\ \x70\x79\x6c\x65\x66\x74\x2f\x67\x70\x6c\x2e\x68\x74\x6d\x6c\x2e\ \x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\ \x44\x5f\x4c\x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\ \x69\x6d\x70\x6f\x72\x74\x20\x43\x75\x73\x74\x6f\x6d\x47\x65\x6f\ \x6d\x65\x74\x72\x79\x20\x31\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\ \x7b\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\x30\x30\ \x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x30\x30\ \x0a\x0a\x20\x20\x20\x20\x42\x65\x7a\x69\x65\x72\x43\x75\x72\x76\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x6c\x69\x6e\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x6d\x61\x72\x67\x69\x6e\x73\x3a\x20\x32\x30\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x72\x65\x61\x6c\x20\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x65\x71\x75\x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x6f\x6e\x20\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x6f\x3a\x20\x31\x3b\x20\x64\ \x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\x30\x30\x3b\x20\x65\ \x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\ \x6e\x67\x2e\x49\x6e\x4f\x75\x74\x51\x75\x61\x64\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\ \x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x6f\x3a\ \x20\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\ \x30\x30\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\ \x20\x45\x61\x73\x69\x6e\x67\x2e\x49\x6e\x4f\x75\x74\x51\x75\x61\ \x64\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\ \x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x32\x3a\ \x20\x51\x74\x2e\x70\x6f\x69\x6e\x74\x28\x74\x2c\x20\x31\x20\x2d\ \x20\x74\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x33\x3a\x20\ \x51\x74\x2e\x70\x6f\x69\x6e\x74\x28\x31\x20\x2d\x20\x74\x2c\x20\ \x74\x29\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x54\x65\ \x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x6c\x69\x6e\ \x65\x2e\x62\x6f\x74\x74\x6f\x6d\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x78\x3a\x20\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x77\x69\ \x64\x74\x68\x20\x2d\x20\x34\x30\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x77\x72\x61\x70\x4d\x6f\x64\x65\x3a\x20\x54\x65\x78\x74\x2e\ \x57\x6f\x72\x64\x57\x72\x61\x70\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x74\x65\x78\x74\x3a\x20\x22\x54\x68\x69\x73\x20\x63\x75\ \x72\x76\x65\x20\x69\x73\x20\x61\x20\x63\x75\x73\x74\x6f\x6d\x20\ \x73\x63\x65\x6e\x65\x20\x67\x72\x61\x70\x68\x20\x69\x74\x65\x6d\ \x2c\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x20\x75\x73\ \x69\x6e\x67\x20\x47\x4c\x5f\x4c\x49\x4e\x45\x5f\x53\x54\x52\x49\ \x50\x22\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ " qt_resource_name = b"\ \x00\x0a\ \x04\xb1\xbb\xe8\ \x00\x73\ \x00\x63\x00\x65\x00\x6e\x00\x65\x00\x67\x00\x72\x00\x61\x00\x70\x00\x68\ \x00\x0e\ \x05\x35\x16\x99\ \x00\x63\ \x00\x75\x00\x73\x00\x74\x00\x6f\x00\x6d\x00\x67\x00\x65\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\x79\ \x00\x08\ \x08\x01\x5a\x5c\ \x00\x6d\ \x00\x61\x00\x69\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x1a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ \x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/scenegraph/customgeometry/main.qml0000644000076500000240000000525412613140041025052 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the demonstration applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import CustomGeometry 1.0 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" } } PyQt-gpl-5.5.1/examples/quick/shared/0000755000076500000240000000000012613140041017446 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/shared/Button.qml0000644000076500000240000000633312613140041021441 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 Item { id: container property string text: "Button" property string subText: "" signal clicked property alias containsMouse: mouseArea.containsMouse property alias pressed: mouseArea.pressed implicitHeight: col.height height: implicitHeight width: buttonLabel.width + 20 MouseArea { id: mouseArea anchors.fill: parent onClicked: container.clicked() hoverEnabled: true } 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.text 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.subText wrapMode: Text.WrapAtWordBoundaryOrAnywhere color: "#666" font.pixelSize: 12 } } } PyQt-gpl-5.5.1/examples/quick/shared/images/0000755000076500000240000000000012613140041020713 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/shared/images/back.png0000644000076500000240000000306612613140041022326 0ustar philstaff00000000000000‰PNG  IHDR ЦÅtEXtSoftwareAdobe ImageReadyqÉe<$iTXtXML:com.adobe.xmp — =بIDATxÚŒ”_HSQÇϽ»×;·ÝÝQ¾ b›“ÔõÁ ôÅ)Ø)FdÔCêKäCBö˜´µ­=ÈèÉõô’Ò–Eë!Y–Ŕ”²ùHí¡‡67Áýóö=×ML—zàËÝïÜ}8¿óýžsY–ÉAÃjµp÷˜Èr¡P,Þ`‚ÚZ[ïiuº1µ r¹Lrëë1n?Àf³¹ ÃQ¯'u Ù ßÀÍIDATxÚ¬•;KA…7™4ÚF1>@ňAŒ,*b#XZ £­…` m,5ˆ‰Ø(B4>@Bˆ"b:ÿ† X]Ï•+„eæî®fàìÌî¾yì½3‘¥tºÙ²¬hzƒ2‡¹\Ö XÂÐ4E (´øú_@ãšï[€e‚‚ }›€mû)Û¶PO@½šþIô7½T«%/Pˆ¼á—ДÁ·­á'8ÆÑ#Ö0ò©03úÞÏ5¼f 6 h¼cLÕ¿0ì M[€µÃs¯c1ìÓ6 Åá9¯‡)Ýzë`q(©±$Ý0eú +xÀúá)’7ä ,-,E(¥¼@4uZš1Þw¡}Œ)?áϰ+4;¡Ý2Ãò2Ê1¦+ï!?ìS+ª24d°¬¨@V‘ƒ»ÊÒª$Í„ bÒ…êJ¬Ù ©@}šî/h}1×éá=1A9³J‡{¨[€‹çC*tîR£›ñ„$ÁË1AR€ÄÃA^NL€\xÅ]Š´q-š¾h[?Ñ1$!Af)¹ Ÿÿ ùÑõÄï¯ÐtPÈÏé8ŽÕˆò-Àªú®G|9mIEND®B`‚PyQt-gpl-5.5.1/examples/quick/shared/LauncherList.qml0000644000076500000240000001206612613140041022563 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 { //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 hideExample() { ei.visible = false; } ListView { clip: true delegate: SimpleLauncherDelegate{exampleItem: ei} model: ListModel {id:myModel} anchors.fill: parent } Item { id: ei visible: false clip: true property url exampleUrl onExampleUrlChanged: visible = (exampleUrl == '' ? false : true); //Setting exampleUrl automatically shows example anchors.fill: parent anchors.bottomMargin: 40 Rectangle { id: bg anchors.fill: parent color: "white" } MouseArea{ anchors.fill: parent enabled: ei.visible //Eats mouse events } Loader{ focus: true source: ei.exampleUrl anchors.fill: parent } } Rectangle { id: bar visible: ei.visible anchors.bottom: parent.bottom width: parent.width height: 40 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" } } MouseArea{ anchors.fill: parent enabled: ei.visible //Eats mouse events } Image { id: back source: "images/back.png" anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: 2 anchors.left: parent.left anchors.leftMargin: 16 MouseArea { id: mouse hoverEnabled: true anchors.centerIn: parent width: 38 height: 31 anchors.verticalCenterOffset: -1 onClicked: ei.exampleUrl = "" Rectangle { anchors.fill: parent opacity: mouse.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 } } } } } PyQt-gpl-5.5.1/examples/quick/shared/shared.qrc0000644000076500000240000000037712613140041021432 0ustar philstaff00000000000000 LauncherList.qml SimpleLauncherDelegate.qml Button.qml images/back.png images/next.png PyQt-gpl-5.5.1/examples/quick/shared/shared_rc.py0000644000076500000240000017234012613140041021761 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Mon Jul 22 19:07:45 2013 # by: The Resource Compiler for PyQt (Qt v5.1.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0c\xdb\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x72\x0a\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x65\x78\x74\ \x3a\x20\x22\x42\x75\x74\x74\x6f\x6e\x22\x0a\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x73\ \x75\x62\x54\x65\x78\x74\x3a\x20\x22\x22\x0a\x20\x20\x20\x20\x73\ \x69\x67\x6e\x61\x6c\x20\x63\x6c\x69\x63\x6b\x65\x64\x0a\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x4d\x6f\x75\x73\x65\x3a\x20\ \x6d\x6f\x75\x73\x65\x41\x72\x65\x61\x2e\x63\x6f\x6e\x74\x61\x69\ \x6e\x73\x4d\x6f\x75\x73\x65\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\x20\x70\x72\x65\x73\x73\ \x65\x64\x3a\x20\x6d\x6f\x75\x73\x65\x41\x72\x65\x61\x2e\x70\x72\ \x65\x73\x73\x65\x64\x0a\x20\x20\x20\x20\x69\x6d\x70\x6c\x69\x63\ \x69\x74\x48\x65\x69\x67\x68\x74\x3a\x20\x63\x6f\x6c\x2e\x68\x65\ \x69\x67\x68\x74\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\ \x20\x69\x6d\x70\x6c\x69\x63\x69\x74\x48\x65\x69\x67\x68\x74\x0a\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x62\x75\x74\x74\x6f\ \x6e\x4c\x61\x62\x65\x6c\x2e\x77\x69\x64\x74\x68\x20\x2b\x20\x32\ \x30\x0a\x0a\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\ \x6f\x75\x73\x65\x41\x72\x65\x61\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x2e\x63\x6c\x69\x63\x6b\x65\x64\x28\x29\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x68\x6f\x76\x65\x72\x45\x6e\x61\x62\x6c\x65\ \x64\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\ \x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x20\x32\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x63\x6f\x6c\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\ \x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\ \x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x77\x69\x64\x74\x68\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x62\x75\x74\x74\x6f\x6e\x4c\x61\x62\x65\x6c\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x31\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x72\x69\x67\x68\x74\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\ \x74\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\ \x6c\x6f\x72\x3a\x20\x22\x62\x6c\x61\x63\x6b\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x70\x69\ \x78\x65\x6c\x53\x69\x7a\x65\x3a\x20\x32\x32\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x77\x72\x61\x70\x4d\x6f\x64\x65\ \x3a\x20\x54\x65\x78\x74\x2e\x57\x72\x61\x70\x41\x74\x57\x6f\x72\ \x64\x42\x6f\x75\x6e\x64\x61\x72\x79\x4f\x72\x41\x6e\x79\x77\x68\ \x65\x72\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x73\x74\x79\x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x77\x68\x69\ \x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x73\x74\x79\x6c\x65\x3a\x20\x54\x65\x78\x74\x2e\x52\x61\x69\x73\ \x65\x64\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x75\x74\ \x74\x6f\x6e\x4c\x61\x62\x65\x6c\x32\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\ \x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\ \x31\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\ \x65\x78\x74\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x73\ \x75\x62\x54\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x72\x61\x70\x4d\x6f\x64\x65\x3a\x20\x54\x65\x78\ \x74\x2e\x57\x72\x61\x70\x41\x74\x57\x6f\x72\x64\x42\x6f\x75\x6e\ \x64\x61\x72\x79\x4f\x72\x41\x6e\x79\x77\x68\x65\x72\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x23\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x70\x69\x78\x65\x6c\x53\ \x69\x7a\x65\x3a\x20\x31\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x14\x36\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x69\x6d\x70\x6f\x72\x74\x20\ \x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\x63\ \x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x2f\x2f\x6d\ \x6f\x64\x65\x6c\x20\x69\x73\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\ \x66\x20\x7b\x22\x6e\x61\x6d\x65\x22\x3a\x22\x73\x6f\x6d\x65\x6e\ \x61\x6d\x65\x22\x2c\x20\x22\x75\x72\x6c\x22\x3a\x22\x66\x69\x6c\ \x65\x3a\x2f\x2f\x2f\x73\x6f\x6d\x65\x2f\x75\x72\x6c\x2f\x6d\x61\ \x69\x6e\x66\x69\x6c\x65\x2e\x71\x6d\x6c\x22\x7d\x0a\x20\x20\x20\ \x20\x2f\x2f\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x75\x73\x65\x64\ \x20\x74\x6f\x20\x61\x64\x64\x20\x74\x6f\x20\x6d\x6f\x64\x65\x6c\ \x20\x41\x29\x20\x74\x6f\x20\x65\x6e\x66\x6f\x72\x63\x65\x20\x73\ \x63\x68\x65\x6d\x65\x20\x42\x29\x20\x74\x6f\x20\x61\x6c\x6c\x6f\ \x77\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x55\x72\x6c\x20\ \x69\x6e\x20\x75\x72\x6c\x20\x61\x73\x73\x69\x67\x6e\x6d\x65\x6e\ \x74\x73\x0a\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x23\x65\x65\x65\x22\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\ \x6f\x6e\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x6e\x61\ \x6d\x65\x2c\x20\x64\x65\x73\x63\x2c\x20\x75\x72\x6c\x29\x0a\x20\ \x20\x20\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x79\x4d\ \x6f\x64\x65\x6c\x2e\x61\x70\x70\x65\x6e\x64\x28\x7b\x22\x6e\x61\ \x6d\x65\x22\x3a\x6e\x61\x6d\x65\x2c\x20\x22\x64\x65\x73\x63\x72\ \x69\x70\x74\x69\x6f\x6e\x22\x3a\x64\x65\x73\x63\x2c\x20\x22\x75\ \x72\x6c\x22\x3a\x75\x72\x6c\x7d\x29\x0a\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x68\x69\x64\ \x65\x45\x78\x61\x6d\x70\x6c\x65\x28\x29\x0a\x20\x20\x20\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x69\x2e\x76\x69\x73\x69\ \x62\x6c\x65\x20\x3d\x20\x66\x61\x6c\x73\x65\x3b\x0a\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x4c\x69\x73\x74\x56\x69\x65\x77\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6c\x69\x70\x3a\ \x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\ \x6c\x65\x67\x61\x74\x65\x3a\x20\x53\x69\x6d\x70\x6c\x65\x4c\x61\ \x75\x6e\x63\x68\x65\x72\x44\x65\x6c\x65\x67\x61\x74\x65\x7b\x65\ \x78\x61\x6d\x70\x6c\x65\x49\x74\x65\x6d\x3a\x20\x65\x69\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x6c\x3a\x20\x4c\ \x69\x73\x74\x4d\x6f\x64\x65\x6c\x20\x7b\x69\x64\x3a\x6d\x79\x4d\ \x6f\x64\x65\x6c\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x65\x69\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x76\x69\x73\x69\ \x62\x6c\x65\x3a\x20\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6c\x69\x70\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x75\ \x72\x6c\x20\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x45\x78\x61\x6d\x70\x6c\x65\x55\ \x72\x6c\x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x76\x69\x73\x69\x62\ \x6c\x65\x20\x3d\x20\x28\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\ \x20\x3d\x3d\x20\x27\x27\x20\x3f\x20\x66\x61\x6c\x73\x65\x20\x3a\ \x20\x74\x72\x75\x65\x29\x3b\x20\x2f\x2f\x53\x65\x74\x74\x69\x6e\ \x67\x20\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x20\x61\x75\x74\ \x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x73\x68\x6f\x77\x73\ \x20\x65\x78\x61\x6d\x70\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\x6d\x4d\x61\x72\x67\ \x69\x6e\x3a\x20\x34\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x67\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\ \x65\x41\x72\x65\x61\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x65\x6e\x61\x62\x6c\x65\x64\x3a\x20\x65\x69\x2e\ \x76\x69\x73\x69\x62\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x2f\x2f\x45\x61\x74\x73\x20\x6d\x6f\x75\x73\x65\ \x20\x65\x76\x65\x6e\x74\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x6f\x61\x64\x65\x72\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\ \x63\x75\x73\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x65\x69\ \x2e\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x61\x72\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x76\x69\x73\x69\x62\x6c\x65\x3a\x20\x65\x69\ \x2e\x76\x69\x73\x69\x62\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x30\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x63\x63\ \x63\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\ \x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x66\ \x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x4d\ \x61\x72\x67\x69\x6e\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x72\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\ \x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\ \x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\ \x6f\x6e\x3a\x20\x30\x20\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x23\x65\x65\x65\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\ \x20\x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\x31\x20\x3b\ \x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x63\x63\x63\x22\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x61\x62\ \x6c\x65\x64\x3a\x20\x65\x69\x2e\x76\x69\x73\x69\x62\x6c\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x45\x61\ \x74\x73\x20\x6d\x6f\x75\x73\x65\x20\x65\x76\x65\x6e\x74\x73\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x61\x63\x6b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\ \x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x62\x61\x63\x6b\ \x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\ \x65\x72\x4f\x66\x66\x73\x65\x74\x3a\x20\x32\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x31\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x6d\x6f\x75\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x68\x6f\x76\x65\x72\x45\x6e\x61\ \x62\x6c\x65\x64\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x63\x65\x6e\x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\x38\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\ \x69\x67\x68\x74\x3a\x20\x33\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x4f\ \x66\x66\x73\x65\x74\x3a\x20\x2d\x31\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\ \x6b\x65\x64\x3a\x20\x65\x69\x2e\x65\x78\x61\x6d\x70\x6c\x65\x55\ \x72\x6c\x20\x3d\x20\x22\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x6d\x6f\x75\x73\x65\x2e\ \x70\x72\x65\x73\x73\x65\x64\x20\x3f\x20\x31\x20\x3a\x20\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\ \x6f\x70\x61\x63\x69\x74\x79\x20\x7b\x20\x4e\x75\x6d\x62\x65\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x7b\x20\x64\x75\x72\x61\x74\ \x69\x6f\x6e\x3a\x20\x31\x30\x30\x20\x7d\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x67\x72\x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\ \x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\ \x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x3a\x20\x30\x20\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x23\x32\x32\x30\x30\x30\x30\x30\x30\x22\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\ \x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\ \x30\x2e\x32\x20\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x31\ \x31\x30\x30\x30\x30\x30\x30\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x64\x61\x72\x6b\x67\x72\x61\x79\x22\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\ \x20\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x7d\x0a\x7d\x0a\ \x00\x00\x0c\xd7\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x69\x6d\x70\x6f\x72\x74\x20\ \x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\x63\ \x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x49\x74\x65\x6d\x20\x65\x78\x61\ \x6d\x70\x6c\x65\x49\x74\x65\x6d\x0a\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x4c\x69\x73\x74\x56\x69\x65\x77\x2e\x76\x69\x65\ \x77\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x62\x75\x74\x74\x6f\x6e\x2e\x69\x6d\x70\x6c\x69\ \x63\x69\x74\x48\x65\x69\x67\x68\x74\x20\x2b\x20\x32\x32\x0a\x0a\ \x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\ \x61\x64\x69\x65\x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x3a\x20\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\ \x63\x6f\x6c\x6f\x72\x20\x7b\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x31\x30\x30\x20\x7d\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x62\x75\x74\x74\ \x6f\x6e\x2e\x70\x72\x65\x73\x73\x65\x64\x20\x3f\x20\x22\x23\x65\ \x30\x65\x30\x65\x30\x22\x20\x3a\x20\x22\x23\x66\x66\x66\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\ \x69\x74\x69\x6f\x6e\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\ \x20\x63\x6f\x6c\x6f\x72\x20\x7b\x43\x6f\x6c\x6f\x72\x41\x6e\x69\ \x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\ \x6e\x3a\x20\x31\x30\x30\x20\x7d\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x62\x75\x74\ \x74\x6f\x6e\x2e\x70\x72\x65\x73\x73\x65\x64\x20\x3f\x20\x22\x23\ \x65\x30\x65\x30\x65\x30\x22\x20\x3a\x20\x62\x75\x74\x74\x6f\x6e\ \x2e\x63\x6f\x6e\x74\x61\x69\x6e\x73\x4d\x6f\x75\x73\x65\x20\x3f\ \x20\x22\x23\x66\x35\x66\x35\x66\x35\x22\x20\x3a\x20\x22\x23\x65\ \x65\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x69\x6d\x61\ \x67\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x20\x30\x2e\x37\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x6f\x70\x61\x63\ \x69\x74\x79\x20\x7b\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\ \x74\x69\x6f\x6e\x20\x7b\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\ \x31\x30\x30\x7d\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\ \x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x6e\x65\ \x78\x74\x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x76\ \x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x72\x69\ \x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x72\x69\x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\ \x36\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x42\x75\x74\ \x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x62\x75\x74\x74\x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\ \x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x3a\x69\x6d\x61\x67\x65\x2e\x6c\x65\x66\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x3a\x20\ \x6e\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x75\x62\ \x54\x65\x78\x74\x3a\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\ \x6b\x65\x64\x3a\x20\x65\x78\x61\x6d\x70\x6c\x65\x49\x74\x65\x6d\ \x2e\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x20\x3d\x20\x75\x72\ \x6c\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x31\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x63\x63\x63\ \x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x62\x6f\x74\x74\x6f\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x72\x69\x67\x68\x74\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x0a\x20\x20\ \x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x05\x5b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x12\x00\x00\x00\x1f\x08\x06\x00\x00\x00\xea\x50\x9d\x89\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x24\x69\x54\x58\x74\x58\x4d\x4c\ \x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ \x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ \x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ \x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ \x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ \x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ \x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ \x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ \x43\x6f\x72\x65\x20\x35\x2e\x33\x2d\x63\x30\x31\x31\x20\x36\x36\ \x2e\x31\x34\x35\x36\x36\x31\x2c\x20\x32\x30\x31\x32\x2f\x30\x32\ \x2f\x30\x36\x2d\x31\x34\x3a\x35\x36\x3a\x32\x37\x20\x20\x20\x20\ \x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ \x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ \x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ \x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ \x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ \x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ \x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ \x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\ \x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\x68\x74\x74\ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\x20\x78\x6d\ \x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\ \x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\ \x6f\x75\x72\x63\x65\x52\x65\x66\x23\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x53\x36\x20\ \x28\x4d\x61\x63\x69\x6e\x74\x6f\x73\x68\x29\x22\x20\x78\x6d\x70\ \x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\ \x6d\x70\x2e\x69\x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x35\x35\ \x37\x34\x38\x31\x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\ \x32\x37\x30\x34\x37\x44\x42\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\ \x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x36\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x3e\x20\x3c\x78\x6d\x70\x4d\x4d\x3a\x44\x65\x72\ \x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\x52\x65\x66\x3a\x69\ \x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x33\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x20\x73\x74\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x44\ \x43\x45\x38\x32\x37\x36\x34\x35\x37\x34\x38\x31\x31\x45\x32\x42\ \x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\x37\x44\x42\x22\ \x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\ \x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\ \x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\ \x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\ \x3e\xd9\x0c\xdf\xc0\x00\x00\x01\xcd\x49\x44\x41\x54\x78\xda\xac\ \x95\x3b\x4b\x03\x41\x14\x85\x37\x99\x34\xda\x46\x31\x3e\x40\xc5\ \x88\x41\x8c\x2c\x2a\x16\x62\x23\x58\x5a\x08\x06\x04\x0b\xa3\xad\ \x85\x9d\x60\x13\x0b\x1b\x6d\x2c\x35\x8d\x88\x89\xd8\x28\x42\x34\ \x3e\x40\x42\x88\x16\x16\x22\x62\x3a\xff\x86\x20\x58\x04\x5d\xcf\ \x95\x2b\x84\x65\xe6\xee\xae\x66\xe0\xec\xcc\xee\x1c\xbe\x79\xec\ \xbd\x33\x91\xa5\x74\xba\xd9\xb2\xac\x03\x68\x0e\x7a\x83\x32\x87\ \xb9\x5c\xd6\x0a\x58\xc2\xd0\x06\x34\x0f\x45\xa0\x28\xb4\x07\xf8\ \xfa\x5f\x40\xe3\x9a\xef\x5b\x80\x65\x82\x82\x1e\x0d\x7d\x9b\x80\ \x6d\xfb\x05\x29\xdb\xb6\x1f\x50\x4f\x40\xbd\x9a\xfe\x49\xf4\x37\ \xbd\x54\xab\x25\x2f\x50\x88\x1e\xbc\xe1\x97\xd0\x94\xc1\xb7\x03\ \xad\xe1\x27\x38\xc6\x19\xd1\x03\x23\xd6\x30\xf2\xa9\x30\x33\xfa\ \xde\x06\xcf\x35\xbc\x66\x90\x0b\x36\x0c\x0d\x68\xbc\x63\x12\x4c\ \xd5\xbf\x30\xec\x0c\x4d\x5b\x80\xb5\xc3\x73\x03\xaf\x63\x04\x31\ \xec\xd3\x03\x36\x0a\xc5\xe1\x39\xaf\x87\x29\xdd\x7a\xeb\x60\x71\ \x28\xa9\xb1\x24\xdd\x30\x65\xfa\x0b\x0c\x2b\x78\xc0\xfa\xe1\x29\ \x92\x37\xe4\x15\x1f\x08\x0d\x1a\x2c\x0f\x2d\x18\x2c\x45\x28\xa5\ \xbc\x40\x34\x75\x5a\x02\x9a\x31\xde\x1f\x77\xa1\x7d\x8c\x29\x3f\ \xe1\xcf\xb0\x2b\x34\x3b\xa1\x11\xdd\x32\xc3\x01\xf2\x32\xca\x31\ \xa6\x2b\xef\x21\x3f\x04\xec\x53\x2b\xaa\x32\x34\x64\xb0\xac\xa8\ \x06\x40\x56\x91\x83\xbb\xca\x03\xd2\x81\xaa\x24\xcd\x84\x20\x62\ \x1c\x01\xd2\x85\xea\x0e\x4a\x08\x90\xac\x18\xd9\x0c\xa9\x40\x7d\ \x9a\xee\x2f\x68\x19\x90\x7d\x31\xd7\x00\xe9\xe1\x3d\x31\x41\x16\ \x01\x39\x12\xb3\x1f\x10\x4a\x87\x7b\xa8\x5b\x80\x1c\x8b\xe7\x11\ \x43\x2a\x1c\x74\xee\x52\xa3\x9b\x06\x90\x13\xf1\x84\x04\x24\xc1\ \xcb\x31\x41\x52\x80\x14\xc4\xc3\x1f\x90\x41\x5e\x4e\x4c\x80\x5c\ \x78\xc5\x1b\x5d\x8a\xb4\x71\x2d\x9a\xbe\x0f\x68\x16\x90\x5b\x3f\ \xd1\x1f\x31\x24\x21\x41\x66\x00\x29\x07\xb9\x20\x9f\xff\x0b\xf9\ \x05\xd1\x81\xf5\xc4\xef\xaf\xd0\x74\x50\xc8\xcf\x05\xe9\x38\x8e\ \xd5\x88\xf2\x2d\xc0\x00\xaa\xfa\xae\x1f\x47\x7c\x39\x6d\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x36\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x17\x08\x06\x00\x00\x00\xd0\xa6\xc5\x81\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x24\x69\x54\x58\x74\x58\x4d\x4c\ \x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ \x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ \x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ \x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ \x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ \x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ \x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ \x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ \x43\x6f\x72\x65\x20\x35\x2e\x33\x2d\x63\x30\x31\x31\x20\x36\x36\ \x2e\x31\x34\x35\x36\x36\x31\x2c\x20\x32\x30\x31\x32\x2f\x30\x32\ \x2f\x30\x36\x2d\x31\x34\x3a\x35\x36\x3a\x32\x37\x20\x20\x20\x20\ \x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ \x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ \x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ \x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ \x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ \x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ \x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ \x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\ \x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\x68\x74\x74\ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\x20\x78\x6d\ \x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\ \x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\ \x6f\x75\x72\x63\x65\x52\x65\x66\x23\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x53\x36\x20\ \x28\x4d\x61\x63\x69\x6e\x74\x6f\x73\x68\x29\x22\x20\x78\x6d\x70\ \x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\ \x6d\x70\x2e\x69\x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x39\x35\ \x37\x34\x38\x31\x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\ \x32\x37\x30\x34\x37\x44\x42\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\ \x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x41\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x3e\x20\x3c\x78\x6d\x70\x4d\x4d\x3a\x44\x65\x72\ \x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\x52\x65\x66\x3a\x69\ \x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x37\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x20\x73\x74\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x44\ \x43\x45\x38\x32\x37\x36\x38\x35\x37\x34\x38\x31\x31\x45\x32\x42\ \x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\x37\x44\x42\x22\ \x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\ \x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\ \x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\ \x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\ \x3e\x97\xa0\x3d\xd8\x00\x00\x02\xa8\x49\x44\x41\x54\x78\xda\x8c\ \x94\x5f\x48\x53\x51\x1c\xc7\xcf\xbd\xbb\xd7\x3b\xb7\xdd\xdd\x51\ \x90\xbe\x0c\x62\x9b\x93\xd4\xf5\x10\xc1\x0a\xf4\xc5\x29\xd8\x1f\ \x29\x46\x64\xd4\x43\xea\x4b\xe4\x43\x42\xf6\x98\xb4\xb5\xad\x3d\ \xc8\xe8\xc9\xf5\x1e\xf4\x92\xd2\x96\x45\xeb\x21\x59\x96\xc5\x94\ \xc2\x94\x05\xb2\xf9\x10\x48\xed\xa1\x87\x36\x37\xc1\xfd\xf3\xf6\ \x3d\xd7\x4d\x4c\x97\x7a\xe0\xcb\xdd\xef\xdc\x7d\x38\xbf\xf3\xfd\ \x9e\x73\x19\x59\x96\xc9\x41\xc3\x6a\xb5\x0e\x70\x1c\xf7\x98\xc8\ \x72\xa1\x50\x2c\xde\x60\x0e\x82\xda\x5a\x5b\xef\x69\x75\xba\x31\ \xb5\x20\x90\x72\xb9\x4c\x72\xeb\xeb\x31\x6e\x3f\xc0\x66\xb3\xb9\ \x0c\x06\xc3\x03\x51\xaf\x27\x75\x3c\x4f\x0a\x85\x02\x11\x45\x71\ \xb5\x26\x64\x36\x99\x18\xad\x56\x3b\x06\x60\x44\x02\xa0\xd1\x68\ \x94\xf9\x63\x0d\x0d\x3f\xfc\x7e\xff\xcc\x1e\xc8\x6c\x36\xab\x74\ \x3a\xdd\xb8\x24\x49\xb7\x20\x52\x5f\x5f\x4f\x18\x86\x21\x8d\x8d\ \x8d\x09\xaf\xcf\x37\xb1\x67\x25\xcb\x16\xf0\xd4\x20\x49\xd7\xf5\ \x55\x00\xf3\x46\xa3\xf1\xbb\xc7\xeb\x0d\xa1\x5e\x41\xf9\x76\x1b\ \xb2\x58\x2c\x75\x3a\x51\x9c\x04\xd0\xab\x47\x4b\xea\x0a\x60\x32\ \x99\xbe\x3d\xf4\x78\xa6\x78\x9e\x5f\x46\x39\x09\x15\xb9\x0a\xa0\ \xc1\xb2\x2f\x01\x74\x29\x80\x5a\x4d\xa8\xa7\xd6\xe6\xe6\x79\xb7\ \xdb\x1d\x61\x59\x36\x8e\x32\x04\x95\xe9\xff\x19\xb4\x24\x01\x78\ \x2d\x19\x0c\xed\x7a\x51\xdc\x06\x4e\xda\x6c\xb3\xf7\x47\x47\xa7\ \xf1\x73\x01\x7a\x05\x6d\x56\xbb\xe2\x90\xc1\x73\x6c\xb8\x5d\xaa\ \xae\x80\xdc\xce\xd8\xed\xd3\x77\x47\x46\x66\xf1\x7e\x1e\x8a\x40\ \xff\x84\xc9\xc1\xda\x4e\xec\x45\xb1\x95\xba\x84\xf6\x56\xef\x0c\ \x0f\x7f\xc2\x3b\x0a\xbd\xab\x15\x09\xdb\xda\xd2\xf2\x91\xe7\x38\ \x82\xbe\x95\x89\x54\x2a\x65\xbc\xd6\xd7\x77\x16\x27\xe1\xfd\xff\ \x42\x67\xc7\x83\xc1\x0f\x38\x5b\x0b\xa5\x52\x49\x99\x50\xa9\x54\ \x24\x9d\x4e\x77\xd7\x09\xc2\x0b\xea\x68\x4d\x08\x56\x7e\x79\xe4\ \xf7\x4f\xc1\xa9\x39\x0a\xa2\x26\x68\x99\x60\x8f\xbd\x30\x28\xd2\ \x04\x67\x77\x43\xf4\xc0\xd2\xbe\x2e\x42\xa7\x7c\x5e\x6f\xe7\xe2\ \xd2\x52\x07\xcd\x27\x9f\xcf\x93\xcc\xda\x1a\xc9\xa4\xd3\x9f\xb3\ \xb9\xdc\xf9\x64\x32\x99\xd9\x09\x29\x4f\xa8\x07\xb2\x07\x02\x81\ \xf6\xb9\x58\xcc\x41\xf7\xb8\xb1\xb1\x41\xd6\x00\xa6\x33\x99\xaf\ \xb9\x5c\xee\x5c\x22\x91\xf8\xbd\x13\xaa\x0e\x07\xd4\xf1\x24\x18\ \x3c\x1d\x8d\x46\x2f\x28\x20\x56\xcc\x66\xb3\x74\x9f\x71\x3c\x7b\ \x00\xfe\xdc\x7d\x60\x69\x98\xf9\xdb\x43\x43\x34\xb3\xe2\x9b\x48\ \xe4\x12\xee\x11\xc3\x6c\xb5\xd2\x06\xcd\xc0\x34\x47\xad\xab\x41\ \xf3\xc9\x0f\x0c\x0e\x52\xb0\x10\x0e\x87\xaf\x08\x82\xc0\xd2\x0c\ \xd1\x93\x79\x53\x96\x43\x2a\x97\xcb\x55\xcb\xd5\x5f\xd0\x1f\x5c\ \xc2\xa3\x88\x20\x15\x8f\xc7\x4f\xe0\xc9\x22\x7d\xb2\x59\x2e\x1f\ \x61\xf7\xb9\xb8\x8b\xd0\x84\xd3\xe9\x5c\xbe\xd9\xdf\xff\x0c\xdf\ \x88\x0c\x96\x2b\x75\x75\x77\x87\x99\x43\x7c\x58\x9a\xa0\xab\x10\ \x5f\xa9\x4b\x87\x81\xe8\x38\x0e\x5d\x86\xb4\xf4\x3c\xfe\x15\x60\ \x00\x07\x7f\xeb\x18\x9a\x66\x83\x5f\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x9e\x88\xb4\ \x00\x73\ \x00\x68\x00\x61\x00\x72\x00\x65\x00\x64\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x0b\x68\x71\x5c\ \x00\x42\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x10\ \x09\x8e\x7d\x5c\ \x00\x4c\ \x00\x61\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x72\x00\x4c\x00\x69\x00\x73\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x1a\ \x04\x27\x53\xdc\ \x00\x53\ \x00\x69\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x4c\x00\x61\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x72\x00\x44\x00\x65\x00\x6c\ \x00\x65\x00\x67\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x0c\xf7\x59\xc7\ \x00\x6e\ \x00\x65\x00\x78\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x07\x9e\x5a\x47\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x21\x19\ \x00\x00\x00\x12\x00\x02\x00\x00\x00\x02\x00\x00\x00\x06\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xdf\ \x00\x00\x00\x24\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x33\x53\ \x00\x00\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xf4\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/quick/shared/SimpleLauncherDelegate.qml0000644000076500000240000000632712613140041024537 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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: container property Item exampleItem width: ListView.view.width height: button.implicitHeight + 22 gradient: Gradient { GradientStop { position: 0 Behavior on color {ColorAnimation { duration: 100 }} color: button.pressed ? "#e0e0e0" : "#fff" } GradientStop { position: 1 Behavior on color {ColorAnimation { duration: 100 }} color: button.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 } Button { id: button anchors.top: parent.top anchors.left: parent.left anchors.bottom: parent.bottom anchors.right:image.left text: name subText: description onClicked: exampleItem.exampleUrl = url; } Rectangle { height: 1 color: "#ccc" anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right } } PyQt-gpl-5.5.1/examples/quick/tutorials/0000755000076500000240000000000012613140041020226 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/0000755000076500000240000000000012613140041022213 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter1-basics/0000755000076500000240000000000012613140041025164 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter1-basics/app.qml0000644000076500000240000000452112613140041026461 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 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 } } PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter1-basics/chapter1-basics.py0000644000076500000240000000645212613140041030516 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QRectF, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(__file__),'app.qml'))) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter2-methods/0000755000076500000240000000000012613140041025364 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter2-methods/app.qml0000644000076500000240000000474412613140041026670 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 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" } } PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter2-methods/chapter2-methods.py0000644000076500000240000000676412613140041031124 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, Qt, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): chartCleared = pyqtSignal() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) @pyqtSlot() def clearChart(self): self.color = QColor(Qt.transparent) self.update() self.chartCleared.emit() if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(__file__),'app.qml'))) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter3-bindings/0000755000076500000240000000000012613140041025517 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter3-bindings/app.qml0000644000076500000240000000513212613140041027013 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 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" } } PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter3-bindings/chapter3-bindings.py0000644000076500000240000000711312613140041031377 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, Qt, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name colorChanged = pyqtSignal() @pyqtProperty(QColor, notify=colorChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = QColor(color) self.update() self.colorChanged.emit() def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) @pyqtSlot() def clearChart(self): self.color = QColor(Qt.transparent) self.update() if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(__file__),'app.qml'))) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/0000755000076500000240000000000012613140041030027 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/app.qml0000644000076500000240000000447112613140041031330 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 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) } ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyPyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/chapter4-customProper0000644000076500000240000000732412613140041034172 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QRectF, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickItem, QQuickPaintedItem, QQuickView class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super(PieSlice, self).__init__(parent) self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) class PieChart(QQuickItem): @pyqtProperty(PieSlice) def pieSlice(self): return self._pieSlice @pieSlice.setter def pieSlice(self, pieSlice): self._pieSlice = pieSlice pieSlice.setParentItem(self) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._pieSlice = None self._name = '' if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(__file__),'app.qml'))) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter5-listproperties/0000755000076500000240000000000012613140041027014 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter5-listproperties/app.qml0000644000076500000240000000512312613140041030310 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 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 } ] } } PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter5-listproperties/chapter5-listproperties.py0000644000076500000240000001013412613140041034166 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QRectF, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType, QQmlListProperty from PyQt5.QtQuick import QQuickItem, QQuickPaintedItem, QQuickView class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) @pyqtProperty(int) def fromAngle(self): return self._fromAngle @fromAngle.setter def fromAngle(self, fromAngle): self._fromAngle = fromAngle @pyqtProperty(int) def angleSpan(self): return self._angleSpan @angleSpan.setter def angleSpan(self, angleSpan): self._angleSpan = angleSpan def __init__(self, parent=None): super(PieSlice, self).__init__(parent) self._color = QColor() self._fromAngle = 0 self._angleSpan = 0 def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, self._fromAngle * 16, self._angleSpan * 16) class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(__file__),'app.qml'))) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/0000755000076500000240000000000012613140041025406 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/app.qml0000644000076500000240000000512312613140041026702 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the 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 Digia Plc and its Subsidiary(-ies) 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 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 } ] } } PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/0000755000076500000240000000000012613140041026632 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/chartsplugin.py0000644000076500000240000000441212613140041031710 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtQml import qmlRegisterType, QQmlExtensionPlugin from piechart import PieChart from pieslice import PieSlice class ChartsPlugin(QQmlExtensionPlugin): def registerTypes(self, uri): qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/piechart.py0000644000076500000240000000505012613140041031003 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty from PyQt5.QtQml import QQmlListProperty from PyQt5.QtQuick import QQuickItem from pieslice import PieSlice class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/pieslice.py0000644000076500000240000000610012613140041030776 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $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 Digia Plc and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtProperty, QRectF from PyQt5.QtGui import QColor, QPainter, QPen from PyQt5.QtQuick import QQuickPaintedItem class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) @pyqtProperty(int) def fromAngle(self): return self._fromAngle @fromAngle.setter def fromAngle(self, fromAngle): self._fromAngle = fromAngle @pyqtProperty(int) def angleSpan(self): return self._angleSpan @angleSpan.setter def angleSpan(self, angleSpan): self._angleSpan = angleSpan def __init__(self, parent=None): super(PieSlice, self).__init__(parent) self._color = QColor() self._fromAngle = 0 self._angleSpan = 0 def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, self._fromAngle * 16, self._angleSpan * 16) PyQt-gpl-5.5.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir0000644000076500000240000000004412613140041030043 0ustar philstaff00000000000000module Charts plugin pyqt5qmlplugin PyQt-gpl-5.5.1/examples/README0000644000076500000240000000170612613140041015750 0ustar philstaff00000000000000PyQt is supplied with a number of example applications and demonstrations that have been written to provide developers with examples of the Qt API in use, highlight good programming practise, and showcase features found in each of Qt's core technologies. The example and demo launcher can be used to explore the different categories available. It provides an overview of each example, lets you view the documentation in Qt Assistant, and is able to launch examples and demos. Documentation for these examples can be found in the Tutorial and Examples section of the Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/richtext/0000755000076500000240000000000012613140041016716 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/calendar.py0000755000076500000240000001563712613140041021060 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDate, Qt from PyQt5.QtGui import (QColor, QFont, QTextCharFormat, QTextLength, QTextTableFormat) from PyQt5.QtWidgets import (QApplication, QComboBox, QDateTimeEdit, QHBoxLayout, QLabel, QMainWindow, QSpinBox, QTextBrowser, QVBoxLayout, QWidget) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.selectedDate = QDate.currentDate() self.fontSize = 10 centralWidget = QWidget() dateLabel = QLabel("Date:") monthCombo = QComboBox() for month in range(1, 13): monthCombo.addItem(QDate.longMonthName(month)) yearEdit = QDateTimeEdit() yearEdit.setDisplayFormat('yyyy') yearEdit.setDateRange(QDate(1753, 1, 1), QDate(8000, 1, 1)) monthCombo.setCurrentIndex(self.selectedDate.month() - 1) yearEdit.setDate(self.selectedDate) self.fontSizeLabel = QLabel("Font size:") self.fontSizeSpinBox = QSpinBox() self.fontSizeSpinBox.setRange(1, 64) self.fontSizeSpinBox.setValue(10) self.editor = QTextBrowser() self.insertCalendar() monthCombo.activated.connect(self.setMonth) yearEdit.dateChanged.connect(self.setYear) self.fontSizeSpinBox.valueChanged.connect(self.setfontSize) controlsLayout = QHBoxLayout() controlsLayout.addWidget(dateLabel) controlsLayout.addWidget(monthCombo) controlsLayout.addWidget(yearEdit) controlsLayout.addSpacing(24) controlsLayout.addWidget(self.fontSizeLabel) controlsLayout.addWidget(self.fontSizeSpinBox) controlsLayout.addStretch(1) centralLayout = QVBoxLayout() centralLayout.addLayout(controlsLayout) centralLayout.addWidget(self.editor, 1) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget) def insertCalendar(self): self.editor.clear() cursor = self.editor.textCursor() cursor.beginEditBlock() date = QDate(self.selectedDate.year(), self.selectedDate.month(), 1) tableFormat = QTextTableFormat() tableFormat.setAlignment(Qt.AlignHCenter) tableFormat.setBackground(QColor('#e0e0e0')) tableFormat.setCellPadding(2) tableFormat.setCellSpacing(4) constraints = [QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14)] tableFormat.setColumnWidthConstraints(constraints) table = cursor.insertTable(1, 7, tableFormat) frame = cursor.currentFrame() frameFormat = frame.frameFormat() frameFormat.setBorder(1) frame.setFrameFormat(frameFormat) format = cursor.charFormat() format.setFontPointSize(self.fontSize) boldFormat = QTextCharFormat(format) boldFormat.setFontWeight(QFont.Bold) highlightedFormat = QTextCharFormat(boldFormat) highlightedFormat.setBackground(Qt.yellow) for weekDay in range(1, 8): cell = table.cellAt(0, weekDay-1) cellCursor = cell.firstCursorPosition() cellCursor.insertText(QDate.longDayName(weekDay), boldFormat) table.insertRows(table.rows(), 1) while date.month() == self.selectedDate.month(): weekDay = date.dayOfWeek() cell = table.cellAt(table.rows()-1, weekDay-1) cellCursor = cell.firstCursorPosition() if date == QDate.currentDate(): cellCursor.insertText(str(date.day()), highlightedFormat) else: cellCursor.insertText(str(date.day()), format) date = date.addDays(1) if weekDay == 7 and date.month() == self.selectedDate.month(): table.insertRows(table.rows(), 1) cursor.endEditBlock() self.setWindowTitle("Calendar for %s %d" % (QDate.longMonthName(self.selectedDate.month()), self.selectedDate.year())) def setfontSize(self, size): self.fontSize = size self.insertCalendar() def setMonth(self, month): self.selectedDate = QDate(self.selectedDate.year(), month + 1, self.selectedDate.day()) self.insertCalendar() def setYear(self, date): self.selectedDate = QDate(date.year(), self.selectedDate.month(), self.selectedDate.day()) self.insertCalendar() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 256) window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/richtext/orderform.py0000755000076500000240000002547512613140041021307 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDate, Qt from PyQt5.QtGui import (QFont, QTextCharFormat, QTextCursor, QTextFrameFormat, QTextLength, QTextTableFormat) from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMainWindow, QMessageBox, QMenu, QTableWidget, QTableWidgetItem, QTabWidget, QTextEdit) from PyQt5.QtPrintSupport import QAbstractPrintDialog, QPrintDialog, QPrinter class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() fileMenu = QMenu("&File", self) newAction = fileMenu.addAction("&New...") newAction.setShortcut("Ctrl+N") self.printAction = fileMenu.addAction("&Print...", self.printFile) self.printAction.setShortcut("Ctrl+P") self.printAction.setEnabled(False) quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") self.menuBar().addMenu(fileMenu) self.letters = QTabWidget() newAction.triggered.connect(self.openDialog) quitAction.triggered.connect(self.close) self.setCentralWidget(self.letters) self.setWindowTitle("Order Form") def createLetter(self, name, address, orderItems, sendOffers): editor = QTextEdit() tabIndex = self.letters.addTab(editor, name) self.letters.setCurrentIndex(tabIndex) cursor = editor.textCursor() cursor.movePosition(QTextCursor.Start) topFrame = cursor.currentFrame() topFrameFormat = topFrame.frameFormat() topFrameFormat.setPadding(16) topFrame.setFrameFormat(topFrameFormat) textFormat = QTextCharFormat() boldFormat = QTextCharFormat() boldFormat.setFontWeight(QFont.Bold) referenceFrameFormat = QTextFrameFormat() referenceFrameFormat.setBorder(1) referenceFrameFormat.setPadding(8) referenceFrameFormat.setPosition(QTextFrameFormat.FloatRight) referenceFrameFormat.setWidth(QTextLength(QTextLength.PercentageLength, 40)) cursor.insertFrame(referenceFrameFormat) cursor.insertText("A company", boldFormat) cursor.insertBlock() cursor.insertText("321 City Street") cursor.insertBlock() cursor.insertText("Industry Park") cursor.insertBlock() cursor.insertText("Another country") cursor.setPosition(topFrame.lastPosition()) cursor.insertText(name, textFormat) for line in address.split("\n"): cursor.insertBlock() cursor.insertText(line) cursor.insertBlock() cursor.insertBlock() date = QDate.currentDate() cursor.insertText("Date: %s" % date.toString('d MMMM yyyy'), textFormat) cursor.insertBlock() bodyFrameFormat = QTextFrameFormat() bodyFrameFormat.setWidth(QTextLength(QTextLength.PercentageLength, 100)) cursor.insertFrame(bodyFrameFormat) cursor.insertText("I would like to place an order for the following " "items:", textFormat) cursor.insertBlock() cursor.insertBlock() orderTableFormat = QTextTableFormat() orderTableFormat.setAlignment(Qt.AlignHCenter) orderTable = cursor.insertTable(1, 2, orderTableFormat) orderFrameFormat = cursor.currentFrame().frameFormat() orderFrameFormat.setBorder(1) cursor.currentFrame().setFrameFormat(orderFrameFormat) cursor = orderTable.cellAt(0, 0).firstCursorPosition() cursor.insertText("Product", boldFormat) cursor = orderTable.cellAt(0, 1).firstCursorPosition() cursor.insertText("Quantity", boldFormat) for text, quantity in orderItems: row = orderTable.rows() orderTable.insertRows(row, 1) cursor = orderTable.cellAt(row, 0).firstCursorPosition() cursor.insertText(text, textFormat) cursor = orderTable.cellAt(row, 1).firstCursorPosition() cursor.insertText(str(quantity), textFormat) cursor.setPosition(topFrame.lastPosition()) cursor.insertBlock() cursor.insertText("Please update my records to take account of the " "following privacy information:") cursor.insertBlock() offersTable = cursor.insertTable(2, 2) cursor = offersTable.cellAt(0, 1).firstCursorPosition() cursor.insertText("I want to receive more information about your " "company's products and special offers.", textFormat) cursor = offersTable.cellAt(1, 1).firstCursorPosition() cursor.insertText("I do not want to receive any promotional " "information from your company.", textFormat) if sendOffers: cursor = offersTable.cellAt(0, 0).firstCursorPosition() else: cursor = offersTable.cellAt(1, 0).firstCursorPosition() cursor.insertText('X', boldFormat) cursor.setPosition(topFrame.lastPosition()) cursor.insertBlock() cursor.insertText("Sincerely,", textFormat) cursor.insertBlock() cursor.insertBlock() cursor.insertBlock() cursor.insertText(name) self.printAction.setEnabled(True) def createSample(self): dialog = DetailsDialog('Dialog with default values', self) self.createLetter('Mr Smith', '12 High Street\nSmall Town\nThis country', dialog.orderItems(), True) def openDialog(self): dialog = DetailsDialog("Enter Customer Details", self) if dialog.exec_() == QDialog.Accepted: self.createLetter(dialog.senderName(), dialog.senderAddress(), dialog.orderItems(), dialog.sendOffers()) def printFile(self): editor = self.letters.currentWidget() printer = QPrinter() dialog = QPrintDialog(printer, self) dialog.setWindowTitle("Print Document") if editor.textCursor().hasSelection(): dialog.addEnabledOption(QAbstractPrintDialog.PrintSelection) if dialog.exec_() != QDialog.Accepted: return editor.print_(printer) class DetailsDialog(QDialog): def __init__(self, title, parent): super(DetailsDialog, self).__init__(parent) self.items = ("T-shirt", "Badge", "Reference book", "Coffee cup") nameLabel = QLabel("Name:") addressLabel = QLabel("Address:") addressLabel.setAlignment(Qt.AlignLeft | Qt.AlignTop) self.nameEdit = QLineEdit() self.addressEdit = QTextEdit() self.offersCheckBox = QCheckBox( "Send information about products and special offers:") self.setupItemsTable() buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.verify) buttonBox.rejected.connect(self.reject) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameEdit, 0, 1) mainLayout.addWidget(addressLabel, 1, 0) mainLayout.addWidget(self.addressEdit, 1, 1) mainLayout.addWidget(self.itemsTable, 0, 2, 2, 1) mainLayout.addWidget(self.offersCheckBox, 2, 1, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 3) self.setLayout(mainLayout) self.setWindowTitle(title) def setupItemsTable(self): self.itemsTable = QTableWidget(len(self.items), 2) for row, item in enumerate(self.items): name = QTableWidgetItem(item) name.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) self.itemsTable.setItem(row, 0, name) quantity = QTableWidgetItem('1') self.itemsTable.setItem(row, 1, quantity) def orderItems(self): orderList = [] for row in range(len(self.items)): text = self.itemsTable.item(row, 0).text() quantity = int(self.itemsTable.item(row, 1).data(Qt.DisplayRole)) orderList.append((text, max(0, quantity))) return orderList def senderName(self): return self.nameEdit.text() def senderAddress(self): return self.addressEdit.toPlainText() def sendOffers(self): return self.offersCheckBox.isChecked() def verify(self): if self.nameEdit.text() and self.addressEdit.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) if answer == QMessageBox.Yes: self.reject() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 480) window.show() window.createSample() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/richtext/README0000644000076500000240000000167212613140041017604 0ustar philstaff00000000000000PyQt provides powerful document-oriented rich text engine that supports Unicode and right-to-left scripts. Documents can be manipulated using a cursor-based API, and their contents can be imported and exported as both HTML and in a custom XML format. Text is rendered using anti-aliased outline fonts to provide the best possible on-screen representation. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/richtext/syntaxhighlighter.py0000755000076500000240000001716712613140041023054 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QRegExp, Qt from PyQt5.QtGui import QFont, QSyntaxHighlighter, QTextCharFormat from PyQt5.QtWidgets import (QApplication, QFileDialog, QMainWindow, QMenu, QMessageBox, QTextEdit) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupFileMenu() self.setupHelpMenu() self.setupEditor() self.setCentralWidget(self.editor) self.setWindowTitle("Syntax Highlighter") def about(self): QMessageBox.about(self, "About Syntax Highlighter", "

      The Syntax Highlighter example shows how to " \ "perform simple syntax highlighting by subclassing the " \ "QSyntaxHighlighter class and describing highlighting " \ "rules using regular expressions.

      ") def newFile(self): self.editor.clear() def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open File", '', "C++ Files (*.cpp *.h)") if path: inFile = QFile(path) if inFile.open(QFile.ReadOnly | QFile.Text): text = inFile.readAll() try: # Python v3. text = str(text, encoding='ascii') except TypeError: # Python v2. text = str(text) self.editor.setPlainText(text) def setupEditor(self): font = QFont() font.setFamily('Courier') font.setFixedPitch(True) font.setPointSize(10) self.editor = QTextEdit() self.editor.setFont(font) self.highlighter = Highlighter(self.editor.document()) def setupFileMenu(self): fileMenu = QMenu("&File", self) self.menuBar().addMenu(fileMenu) fileMenu.addAction("&New...", self.newFile, "Ctrl+N") fileMenu.addAction("&Open...", self.openFile, "Ctrl+O") fileMenu.addAction("E&xit", QApplication.instance().quit, "Ctrl+Q") def setupHelpMenu(self): helpMenu = QMenu("&Help", self) self.menuBar().addMenu(helpMenu) helpMenu.addAction("&About", self.about) helpMenu.addAction("About &Qt", QApplication.instance().aboutQt) class Highlighter(QSyntaxHighlighter): def __init__(self, parent=None): super(Highlighter, self).__init__(parent) keywordFormat = QTextCharFormat() keywordFormat.setForeground(Qt.darkBlue) keywordFormat.setFontWeight(QFont.Bold) keywordPatterns = ["\\bchar\\b", "\\bclass\\b", "\\bconst\\b", "\\bdouble\\b", "\\benum\\b", "\\bexplicit\\b", "\\bfriend\\b", "\\binline\\b", "\\bint\\b", "\\blong\\b", "\\bnamespace\\b", "\\boperator\\b", "\\bprivate\\b", "\\bprotected\\b", "\\bpublic\\b", "\\bshort\\b", "\\bsignals\\b", "\\bsigned\\b", "\\bslots\\b", "\\bstatic\\b", "\\bstruct\\b", "\\btemplate\\b", "\\btypedef\\b", "\\btypename\\b", "\\bunion\\b", "\\bunsigned\\b", "\\bvirtual\\b", "\\bvoid\\b", "\\bvolatile\\b"] self.highlightingRules = [(QRegExp(pattern), keywordFormat) for pattern in keywordPatterns] classFormat = QTextCharFormat() classFormat.setFontWeight(QFont.Bold) classFormat.setForeground(Qt.darkMagenta) self.highlightingRules.append((QRegExp("\\bQ[A-Za-z]+\\b"), classFormat)) singleLineCommentFormat = QTextCharFormat() singleLineCommentFormat.setForeground(Qt.red) self.highlightingRules.append((QRegExp("//[^\n]*"), singleLineCommentFormat)) self.multiLineCommentFormat = QTextCharFormat() self.multiLineCommentFormat.setForeground(Qt.red) quotationFormat = QTextCharFormat() quotationFormat.setForeground(Qt.darkGreen) self.highlightingRules.append((QRegExp("\".*\""), quotationFormat)) functionFormat = QTextCharFormat() functionFormat.setFontItalic(True) functionFormat.setForeground(Qt.blue) self.highlightingRules.append((QRegExp("\\b[A-Za-z0-9_]+(?=\\()"), functionFormat)) self.commentStartExpression = QRegExp("/\\*") self.commentEndExpression = QRegExp("\\*/") def highlightBlock(self, text): for pattern, format in self.highlightingRules: expression = QRegExp(pattern) index = expression.indexIn(text) while index >= 0: length = expression.matchedLength() self.setFormat(index, length, format) index = expression.indexIn(text, index + length) self.setCurrentBlockState(0) startIndex = 0 if self.previousBlockState() != 1: startIndex = self.commentStartExpression.indexIn(text) while startIndex >= 0: endIndex = self.commentEndExpression.indexIn(text, startIndex) if endIndex == -1: self.setCurrentBlockState(1) commentLength = len(text) - startIndex else: commentLength = endIndex - startIndex + self.commentEndExpression.matchedLength() self.setFormat(startIndex, commentLength, self.multiLineCommentFormat) startIndex = self.commentStartExpression.indexIn(text, startIndex + commentLength); if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 512) window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/richtext/textedit/0000755000076500000240000000000012613140041020550 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/textedit/example.html0000644000076500000240000003403512613140041023076 0ustar philstaff00000000000000QTextEdit Demonstration

      QTextEdit

      The QTextEdit widget is an advanced editor that supports formatted rich text. It can be used to display HTML and other rich document formats. Internally, QTextEdit uses the QTextDocument class to describe both the high-level structure of each document and the low-level formatting of paragraphs.

      If you are viewing this document in the textedit demo, you can edit this document to explore Qt's rich text editing features. We have included some comments in each of the following sections to encourage you to experiment.

      Font and Paragraph Styles

      QTextEdit supports bold, italic, and underlined font styles, and can display multicolored text. Font families such as Times New Roman and Courier can also be used directly. If you place the cursor in a region of styled text, the controls in the tool bars will change to reflect the current style.

      Paragraphs can be formatted so that the text is left-aligned, right-aligned, centered, or fully justified.

      Try changing the alignment of some text and resize the editor to see how the text layout changes.

      Lists

      Different kinds of lists can be included in rich text documents. Standard bullet lists can be nested, using different symbols for each level of the list:

      • Disc symbols are typically used for top-level list items.
      • Circle symbols can be used to distinguish between items in lower-level lists.
      • Square symbols provide a reasonable alternative to discs and circles.

      Ordered lists can be created that can be used for tables of contents. Different characters can be used to enumerate items, and we can use both Roman and Arabic numerals in the same list structure:

      1. Introduction
      2. Qt Tools
      1. Qt Assistant
      2. Qt Designer
        1. Form Editor
        2. Component Architecture
      3. Qt Linguist

      The list will automatically be renumbered if you add or remove items. Try adding new sections to the above list or removing existing item to see the numbers change.

      Images

      Inline images are treated like ordinary ranges of characters in the text editor, so they flow with the surrounding text. Images can also be selected in the same way as text, making it easy to cut, copy, and paste them.

      Try to select this image by clicking and dragging over it with the mouse, or use the text cursor to select it by holding down Shift and using the arrow keys. You can then cut or copy it, and paste it into different parts of this document.

      Tables

      QTextEdit can arrange and format tables, supporting features such as row and column spans, text formatting within cells, and size constraints for columns.

      Development Tools

      Programming Techniques

      Graphical User Interfaces

      9:00 - 11:00

      Introduction to Qt

      11:00 - 13:00

      Using qmake

      Object-oriented Programming

      Layouts in Qt

      13:00 - 15:00

      Qt Designer Tutorial

      Extreme Programming

      Writing Custom Styles

      15:00 - 17:00

      Qt Linguist and Internationalization

      Try adding text to the cells in the table and experiment with the alignment of the paragraphs.

      Hyperlinks

      QTextEdit is designed to support hyperlinks between documents, and this feature is used extensively in Qt Assistant. Hyperlinks are automatically created when an HTML file is imported into an editor. Since the rich text framework supports hyperlinks natively, they can also be created programatically.

      Undo and Redo

      Full support for undo and redo operations is built into QTextEdit and the underlying rich text framework. Operations on a document can be packaged together to make editing a more comfortable experience for the user.

      Try making changes to this document and press Ctrl+Z to undo them. You can always recover the original contents of the document.

      PyQt-gpl-5.5.1/examples/richtext/textedit/images/0000755000076500000240000000000012613140041022015 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/textedit/images/logo.png0000644000076500000240000000117012613140041023462 0ustar philstaff00000000000000‰PNG  IHDR D¤ŠÆsRGB®ÎéEPLTE  & +59E GXVj d| qŒ}›†¦± ’¶ •¹˜¾ ™¿ ›¿œÃ ¢Ê ªÕ E¹TŒbKGDˆH pHYs  šœtIMEÚ  7ªú²tEXtCommentCreated with GIMPW‡IDAT8Ë•“RÄ „)-…טðþêJõtt”¹ŸøØd“`êïëiþ]?ÌÒ¾r§g¢@1Ÿ"uê¼M ˆdï¬Á².<„Ë+P¤„Õ̵lqP䨗qvý…ç €û»n¯žb¤ÝšÅ,~h €%èÅ=«‡&iW‚äCA’fçkc˜anOÕ[³L€«×s‰…\n§ÃFÀ§ò€í¢Åˆ‹!éN.(BÈIõóñ3‚Ø,ð¥ëk1,±n™xþÂ…4Ù5JÕH†¾ÜCHß ‘Z%­Ð „®ÇH¡å^Á¥— ©hBZG·™‡MD°ÔÃ8ÚºÍÚj7…º4B~#ýªñŒ”,a$n«ÔR_³ï->ZC³4>.tf§{[H9E¿õ±ØÒ‡‚æéÆ X»Ì¹R7 ŸÀç®Íz\ͺ48î#»eݼ¸ãn÷{μñQñ6Íyúäé«Á‡»¢Žä+p=½1ïã÷+ðmýx?À3½/ÙIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/logo32.png0000644000076500000240000000260212613140041023630 0ustar philstaff00000000000000‰PNG  IHDR@ •C޶ÀPLTEqŒ¥¥¤ ———¢Ê ìììûûüŒŒ‹ÊÊÊxxwÔÔÔ³³³Vj ººº::7VVUòòòõõõÅÅÅhigIJH%'" @A?ØØØ451qrpœÃ øøøÏÏÏïïïááá-.*ÞÞÞççèÿÿÿäää9E d| ± ˜¾ ‚‚+5ÛÛÛ]^YGXªÕ & ™¿ ¿¿¿}›aa`’¶ †¦›¿•¹ØÚÑÆÈ¿bcXÒÔË3î¢.}IDATx^•å²#7„G0ÌÌŒfö… ¼ÿ[åH³¾»›T%é?®»?µŒ…û¿ëÛÙ9Pj†…-KÓ>‹p’`’öEßã)"ÿ (…"ÃPuK+ì¸èq’…YcšÈß{¦_%¥ü\ZVㄆ±ói`ID¦ég@U‰\ÕÏHY~“®» ƒäֵ쵃~j¬ÒQ²i"?{p¿ æÅÜ>ßEñþÊñ‰ú)櫓ˇÖu™ßõZ¹n­··|ö¢øÜÜ"Šn—±Úü®Ÿ†ü´è†‘Bªß ú8C ŠJáåß_0yiJ·/ÂçŸÝ2JË¢«u’(Jâ>sŠbùJ˜M<Áêß§Õûýãòm%|þ6JZT-!$JMÓ‚sVØ fMà~þ‘ÙðÆÜnÍcľÙ@è$wQÑ9!8CÒÌåŽ'K± ùJP‰vðñ)‚®¢pdS\¯Ð<蹇âd† ^™ÉóÆNÒé ¬z›ûµ‚fTÕõ˃Ÿ"aÌKkó\×àƨÒÒI@V@uß0%î÷Ƽ=¯ï7°\P½s7ä‹©îºÒ2zµd… †'Ó@üÀ„¤;qφa; lÁw{¯öàuâ4²UŒ LÖ:¯•Ðû1BUÁôÀ›á8ŽSŒõ|àfüêÖ ¸o+òü˜ýܬØ#Ö+dJe”*È›gm²3ÅŽHOi‘›õ8ð³Ÿã­xg7!&°öyefyË<¶ó\fC7[…c$Dö/ðó\Xø0eÖâ[ê°Œ², ¥¹S Z¤™†2òã Âõç¿¢ùý »ì4{^×¹®<×Ã"»Nøh½åqpÔ¢ý«ˆ`¼\Ÿ¯,+ %@Yv‡¥õꙩ–ÔN ›êmí¹unX%&kŸ¼ì‘ɯq3SÞÆ{µûC%דåZn‡f¬O6ô¥•eWU´pZÐ4>7Wê·‚Q6"Ø(Ï@xn§7‹«Ú“ct’4<;ŒÉ XK™¢ø|µ”Â( Vüæ4ÂBºƒïç’‘žªAƒÐ.¢ ª6|…w×+,»?/׊–¯ õËj$”$ 5…í„=;èµÎ»ó¤á)l7)-¤Oj†Õ cÛ¶¾eœä&KRõ©í81T`ð:ÞÖÑŒ"qñ.T;ü† _FOBE¯ó‚›&(øFqÀšaΗð‘-Ó[&ì ãÑ ‹+k8=£76«AprUǯp‰Õöˆ×ø(@/n»u3øz·H9 ú”¥L4ÍXr_+{òëk½zš—Íæ²ý¸‹beÂrp@¬ „(P`~5L¢Ô~;”¥®>šîÀ?T‰  ÌO~ÀŽ8ŠÑ,ÝÒ ‡ý¯…¡c+¾•ËèŸm\œö0Åoj[o\dosØ÷qŸ$EÑKžàß]ÐfïÔÊ:Œ”ïÄI J [)cBþ€à€!uhÔ&W’B;OS%”„ü,ƒÜôùñ¾IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/0000755000076500000240000000000012613140041022555 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/editcopy.png0000644000076500000240000000267412613140041025114 0ustar philstaff00000000000000‰PNG  IHDR szzôƒIDATx^µWKlTÕþî;[héP†:ØHµJxˆ !ÔG\(DCĉº‘¸qå#>7$®Ü¸Ò°Ð• ÿä¿ +*h•J ´Lé“–N;ÓΫó¸ÏsïçwrO2ÉdŠ“Œ¿äËyLæ|ßïq~gFªV«hÅž;ýéKãñ6àöÿ}^@SZ$Ç·G_ýþ« ªEI7@@„O£ãó7Îvé ?¡‰ÉhͶ98°ÃE@µÀd€ëŽ °<`N ÌAIc84øÔ˼óæ»5᯵KÆÀL{R|¯%a¨T*(òÅ Þ:~øìë/îƒR×R Þþèò¡º%Ÿ÷õõG—Rëƒ×þœó¸vDB žŒãé'£V,•`KèêÞ†ÂzŸœ?ý^&_6k"îÕê¡ÔL€ ¦“ν°7~NìíˆuÓÈl¦èº¶e`çvD»Tä*læáÇŸ81´ûž‰Œ1Ë3Af¶@×uõìÉ¡Ãw'÷øãq8uîäÁ÷OèÇfYŠÅ"úz{pæ•~ŒÜ_FOW½=$ ¦a€,PÍVÉdä]š¦q/62ÇqèÐA»vöbOßfÜJ¬ •-C¨˜Ÿºƒ¯/~ŒKß\DrqšjGÚ ZõÃ÷RQ<»'ŽÀÜnO®àøÑ~9:„Á½ûàUetvvbµ²Pm«!BئM›p`W/îLM`9gâ‰Þ>Äj ÛbÛ ¡PÊk«Y–y†‡‡©øº££¦®aœÜ°©^¨W´©„B!Äãqž†r¹L5ÃSáT%è&`;0@z˜ ´5T|$€òK‘ µmÛ˜H'áVy‡„épr˜\D›#@W-cëÖ­ˆÅbˆF£<0˜ÄêN7ì¶ h,B¯êÁó<0bP4x ¸mSÛn³"£ëº ñ¹Çù)ü~ð¨h6ðŸ\Cy.Ö²,A³€€Í#À½÷xM´1Â{"#íñ7Àö8¡Å€¼ÆSÁç&ks(ìD, ’æt ]WFA\èÙÌ=G8ØÆk(ÂN¤4Ò£$ñtT]D‚@¼ÜÒE 3DQªÒ´vA&BN÷ŸDƒAzÄø5¬XÀìí rwgs`–&y Ô„ËtœfUi5ç"Ô|hM"(~êŽ$Ž:c9·ˆ_ÆÇy”$Ù´ä–$è8þ½Vˆi¤žOsÓ4‰”PC¢‘ïÍŽ]ÃÈ•‡È–ôE%¤N1DY5¸ÈÌÔøÌï "˜W٨ȈŒLä\´\êÿº®CUUÄ?3t·bæ8ÅåŠú۲ǭ|zAË/¥ ɉ¬ïu' €!|Tšy.D¯ép‘kBÏo©TbÉ{©5¯›·~»þðÞõž.[Ô/È‘ÑhD*rÌQ(ˆ€<¦_¼$ö¨÷“÷$Ž£\.1Óu™òC­úˆÔ> úBd¡¦©òš"‰D¨ÊÉsÚãO2™ä{sssƒ')öjF²+…Õ¬…> ˆ-ÓD0ªÄ ÷˜|0‰ùùy¤2EÃòBe+Í›VÊù•›ùô\Ê¿jž€H毽&(Ü<§Œ1òD"ÑÑQNšÎ•57˺áø: ï˜5´ÂTjöîÈüØp¸D,ŠpCº®aii œxzzù2«xj|òˆ‡XåܯËSý¹œ ûêêø`MÌÌÌà÷+—°–×+‘m»ÓÁîcÙà¶® ‡Ù×J¹å‘«ß^¤’@ƒ€æBh^Ïþ8`ÀU7øòLZª™ ò‰Ñ„¼^„Ե⫂ÂRdÍIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/editcut.png0000644000076500000240000000275012613140041024730 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<zIDATXÃÅ– LÔuÇ.±À8oaš$W !©¼Ô(–-“6'E¹ÊˆJÙ`3)PG€¼¸°@@NŽW‰àpŠ2r‘Ó9`— ,%…‰/ÍݹàéyÎßûëLŽºí3Žßÿÿçû¼ÿáÿÄ´›‰b#D¸Î™ú¸= °' àì€ÞOZ‚1îs! *@—O·Êa1‹vÒuËÙ° ²þÎF9|ö@ù̶€ìí'èûó\,B&*jÖpŽWì˸•êäÔÎ…(Î7åâ2ÄÂXàl 0zÏÞjüüô"çÜ › ¼¼®Ï…w®x®|µ§§¾"4ÔÀ‘`j7l@)-&XÆ)­lkj ¸òBŠ¯Ù¨vëV#ßEG›\ôñ K<ߨø‹~tô¯¡îî?ù™&"ñ0ŽD±rrƒȵAç>ÈpHHHâ9­¶_¯×#364„'“’®I§#À–k à¦|¼ pˆC+»Ï’ %þTSÓ?22‚Ì(ÑÓØxû•ªT¤ÁmZ$¸&Øð©˜íïǬ€€VÑž ˆµa¾¾™§ÊËûQâJO~›Ð'ŠØwÚ»àÞT´þf09—›ËùÜâãy"?ÿj_o/öÊ8[U¥Y¹’½“ o¦lƒƒƒÇÇÇ‘¹yõ*–¤¦Þ¨®®ÆÖÖVììì4rþôi,‰‹»Èâ¯mÃ{°7§kj® £Z­Æääd¬­­ÅââbÔjµx¼ ÿÖk…× f¼Žeí±ÂÁa÷„„ëeeeÆûûû£  àñ†L‰ŽîžÎ¦œÊ¨(°w¹øv;;ÿ|$7w²¢¢³³³1//+++±¾¾/]ºdä²NgP©Òö)ÐÇ“½à÷žvûÆŒmgf†VV¨IKÃÃùù“»bc{“ãâ†JÓÓ§œOvtt N§Ã?†‡'Ó¶m«ç®0Y€ÔF¬ž¬««ÃË==Ñ‘‘dÖÝ%€ —ûøà‹{eÆŸ"¢?øQíæ†G""’>À^‰¶|œgº þ1áB8¯,µ³ËÊ‹¿¡ÑhP×ގɱ± òéõŠW-¿ë­º$lïn€>öœ¯å)zo€·…0á%‹yF†Jœsa® –Ïonñó;V˜‘1qL­6ÐÿoÈS°–ó¯ñòšÈHdƒ¼jιdœæmcxVÿ  ˆöf1¹œ²îNÈÝÿ#JÑ)Š©&¡‚˜Gxuçkk›ÂÏyðîQF À†öhvWUeŽ«!IOOáp˜»)•JaL Ô9ÝuK´tÍU¨’ÿ€¸9ØGÅH³·\þqò$3‹cÙHÀ4Mr¹ù|Û¶©­­¥">E¢BÃv¹/%õHpÆ à¿þ†™™CÃEˆè.º&ð q[²,b pÁ¨<õÂϾþÒ/»6Q hA‰Ïwÿ`}_Y€#GŽ]×5©9 `Õªø2:’RJÏ Ô‡ƒ €Oc<+¸>1É¿'ÇnÚ¹gë¶m{*Â!–Ötª+uêÂ~¢U~zF’íÇ>› ûKæw¥x‹¬‰V’µ,ÛÅ•Mü†FЧ“u‰h o¼ù>KP …QÙ+“*WuµŸÆÚF&çö½ôÖç>°aÿ]ÐAh ë׳á $W 4¡î+ßJ9|õéÍDëêUo”‘ê—d2I0TÍüýíÍØö"DöîÝ+;::\C|øu ÃÐÑغ‹+Q†¦04õŒ™Íª >Ÿr²,‹D"AMMìjÿî©›û:Þ¼pþW/o iª P"¥Lq®\”">|¡¥ª­ôñ@ØÏÙ+gYÿÈnBAƒ¬gÛ–ž] ]P&( ‰,f‡»f@Y¨qžÎÌ08k±£ã-zf£èÁ ®‚Û–ÏÐP»t]$%’æÐ4Pfžú§R¼ú^ý·Òˆj“æú ²¦Cδ1½qÓêΜ(_`ññ¿Y(UkS˜×w¯g(a£7¬fͺ¯¨Î.ˆ3#ÐÖÖ¶0€\¬(Áã­µ|me„O{'ñ?²Ž»^T]^¢EX0ÊšAQ®e’OMcÍÍ`gâäf$†•)ÙÑâR` 7¡P–ÒÁ1“äç¼ ©i @$Äs08+Y:çÞ€Dbá dƺŠAMÉhBr-æ2–’æ`¾.ñíª÷ à8Ž2 ¿†–3YIÿŒçi—‰9iN¥eÿlVöÇeϺ-íë«›ZŸ),xzzšÑÑQ&ÒA`Y¼,Àäœä⸋„›I¿='ûÆçdÏí´œÆ oXÞÖ¤~H§ÓêDWW7GѪWiÞ ï”ýtعÑ=%ÇÇS²Ëƒ&q øZyÓp§€ú™˜˜P?ËÝÝÝÄÒ:†µT­Þ†æýÞÒŒ·½¯ãsåºþØåüˆ€ „J ÀMÞ×DEÃfüu‘³®tÞ¾vîOýÝn{ÀnÙ·À›èB\4 Pœt@NaN÷ùƒ¶D03;ËÄø¸ :04JÊ®B¯nA4=:f¥œûèƒK§ßïæ“Ì—,#À)€_B±‘[S\ýì/Lgø£ÍÛföØÔ­Þcÿüó+g ÈYÀ\@. = !Ü ‹¬¬^ÐÎôëßDŸ{mI ù»»+s™™äô‰ ÿöã®Oâ…5NÁVѸ²¤aþ ªÓé¯p50#IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/editredo.png0000644000076500000240000000333012613140041025061 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<jIDATXÃíUiL”WUÔV[c´ÕhµZµZq©%uP‘Ò TedÑj+‹S48,e7Q`@¨âRYD¤T-Žà‚6.5.£Æšj'…©†ˆ1¥É$$§çoZKE±µ±?:ÉÉ—oy÷ž{î¹wºèò"Ñåÿ)¦xID¡D&±„°ûW 0QªZ­5$dê[3¦Ä,£)5çæ½øÌ³·«K¯ó}$gû\ 0àP·° Ýšœ;­¡ÑÀ¬P`F0àª<>¬"S5ùæ¶u[ô-ÁÑEz©ŽËó"Ÿ¡kö_L˜ Œr%Ü€±ÞÀxÀ.p#±p 8ˆÝdn5š>‰µ¨ò‰u±iæ¶©~À› 5ÜL\(HJLfr{ª1p‰ãHd3µÃh ^aQD-”ü[„üË)ñûó€‘^À¸V¬f{DŒô†¦äN«_¸¦¾3-’6îÔ·¨4 –D}”Ÿ§ Y9Ú-*AD½©êFõ“yû÷@ÂA`ávzd#0“¾ñ&‰ÏGSfn[o™uû¤b—XwŠåÆ/BS¯ÙÏŠ(¡z/P©#‘5–ÃÝ€|â±$CWñÝÍ{U Ë:îŠr ` àF?x±a¼f•1iZã¾°&/(~¨°5 :s—®9ý …DÊÙÿŒ]uBúޤã;{±ªS µ†škæ¶‚s$O£*wP…M½¤$‰u;ià­ºfkÅâšKÅOž„ÿ¬Á†º/ÎЕ̹֙t~1ƒí=qóžHð´Š>/N(Ò×êMæÝT.™ÞXÊ ògK½Ó¸¼ˆ8ŽjB¶¥âªT}K&•ÖÖ=BÀ*«rU‘¾òœ¹m=pÚÓuf÷[[RsõNk[’vXVÁIabß,`•^GRj“Ù‡;dY2Û¬mGÀZMb®ÖpìpòG ìÈÃ>ufœÄØy’DñQ}KÕuú‚ûcyBƒúp2fÓ Nü¯qäv cÄ}5!`õC²Fk¸ô3ÐpXgYµ>$aéq I|Mi§=²‹$8®ÎÉØRNIÕqIàq? ‰<­¡áp‚²Š¿j{¨|ÕM¢{èæè7Þ) )%³üì­¢zz‚íˆ %w†/}áÅä*¶æàéÇèJ؈@N‰ña±Ûô æ6Mù™ÛÓýãÃù¼ñ ñjïzÙ{ªÞû`~â¶ìãFS Àj—sBsÆñž#{øâ_ ØÈ*^"z½æªWúGå4¿|ç×ä¼êF…{Ä>H ’xCÂz?pŒýœI¾«Ò‹jîVÜ ¸¾7q¬×Ó_pB⸸r¹iO]û3‘¼‡¬°ñº 8Änæ’¥Óçªd—žjVÆÞxk¢ó,>KØã$lå³w&»ElØU}¡¥þ.P÷ pˆ^:ð{NS—sBʹÆþÔ7þA «¬\$ï++.‚»~‡»¼;C™6x´"÷Ž„“°J;8 ~[±@³ÅpDרzôrck-¯µ—›ÔêšÔ\jzpøRÓ}í…¦û‡Ïï:g4‰µn­þeY¹¨z$1‘˜"¹³ w‹ð&|‰¹í žy˜äš¨p‹ÐZàY­ðˆ:8ÅSU5uNô>Ÿ˜²é~q»ç%ì Ç¶Ñ¬"¶ÅÕ¢çý„äRJ{bá&úó ¡@B„¶Cˆ|(¿õ“gÝd,{{ˆÌÕSæ~ñžk ä7îòŒ«Œ1EÆ)sô‘9m:eBBAL%ždBùÎA~«g'ÈXÃeì¾2Ww™ûÉcH #F£ˆÑ2X‡c(¿%Ï “1ɘ}dŽÖꟸˆäѯ׈þÄ€§-"ùMy¦ŸŒÑ[Æ|Iæ°±þü³¤žkã4úIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/editundo.png0000644000076500000240000000332212613140041025076 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<dIDATXÃíV L•eF´’r.Sgnê2MRÌKNAB¤48 wá˜\1à€\½ÞAD@Io‰y /(jq’#áDcÐÜŽÒv6¶§ç?|xAEr6·ÖÙžqÎÿÿï÷>ïó>ïû£@çUBçÿYŸÊãf¾D ‘!CØükx¸HRîšWšXݵ­ñntŠJ½q§JŸ¦ìM(mâý<Âá¥àaR…òµÙJE’²c}‚¦ËS8‹|sw`¡'ಈJr Ú;­½“k3î¥$ö É«KR©}¢&ï Ì^Lw¦:“íIÖü.,=€-{€ÙµmŒ ~ÑÄã…TqåõŠ¬ÖŸ¬`b&ŸãG¬"Hf¶?0Õë»mŽ€7ÕÉ/ÑtI­z‘ä«­–'×Ç×¶ùodkÓ•€1å5]O"1”š2{ìÜwNÉ”ŸÊ‘àT¶b‰ÈC€cßRþqÕ¾… ë“5]N<ä3jÈ¿¬È.ðËb¿ÒÎ_U™ßñE€/¯[‘¬!ŸŸC•–F@ à™WßßäÖRÕ µm+âh¬uìsPwâÅLì›lf¢#—€Ó—Têäœòæ€Myõñ9Õ­Égåû€ÑŒ fâ­À©r€çÖôKr‡•©·Â¶µwº’¹90 cE[(s:ΊT@éU•Ú-(õ–˜y¹Ø1É'8~ÇÇm€ý&N ŸùQxà‘Ù5xJr…”¤é² erÊn 8ïŽÛ/Åu@e½Z¾³°A$¶èu†YPRaÃJî™Áê÷’0¿gæ+;¤¼Ò1ûr»ôèé÷ÊèÒ¦U”XÆŠÍÃišVÍ~n8ä\ªîEUwm|µ3íþ¬è—WŸrX—ÇÌÊjiÔ5Z¥ ¤jÊh˜=9IHC’Ùïx&gb :ÛžUûå‰4X«¾zGÓµy¿v«I«Ö¨Êc3Ë›w– t~Á%`ï1íPh7¡D ý°‘cš¨%Q¯ìðd­¥ùÞ ¸¦kO»*Ø»_KjOd¶RòG?<”’^Üx7ƒ±Ç˜üü5µFæÓ½ˆ’ÌÁ£sL\j#+–Ñí¶IÀ2JBÉ÷K§ä•·Û;û’¼÷»a MyêgVNÙ+”š.¯0-ñ±Z!\f>Ý[ÌŒ._Û-¹WAüT«€“åÊÛîäýߘƒ¥ÊŽ ·Ù²ß€˜TmËSMK@ÁÝlι6"Ì™Üíð:Ìä¥@ÖuJþ;WçÅÇÚŸÝá‘­¼ÉØ›$›¦M®xâÿ‰@ìn2JnÉ~;¦29Í¶Ž†Ù^Í1ã|ï+¨n5s‹‰3u‰øHGGg 1èî 4² )½r/þÔÞY×ú0¹ÎÓ>DlçÓ…‹Åç( Çä±\£éì[n•J=ß5:ËÈ6èc>®G¼I¼õ H÷ôæ¹lXz¼êkMš®åáYJ3·è ‚œ.1à Ùº7Zp!·×fÇr7¥?ô g–ò(¯ûÓÄ1,éC#»™ E¼+0Z ç÷(CYÀÒØ´âæ²í¹î®3qR|ÉëCˆÁÄëB)ÝÇTÔsDj˜IsÆ¿á¨nεWÚ€&5_.Å5s¬2™˜BS¤ïSÞŸnþ¹ghFî¼Ê¶yNŠ¢Y‹|ýx}¬ 7œ*T|í i}–\V©‰{%W[î}w½åÞ™ë-÷ÏÖ7ZÑÜ)á\ms§ghzÓ˜I†Kf&…ö‚tÍtŒ¾¡|ÆÏ­ÃF·àïYÄ4Az¼PëmAb¶4—%{”eº$òà<çˆÃ&¡Gí‚óçÚÚž6”­)6´(•0a¦e4ƒì G©ŽńŒ°",±¹Ätb¢PCRâŠþ rIò kq¨3áJȉ/w£ÜÅ=¹xÖYÄZ‹³ŒÄÙcE®Á"÷«' +ä*ä™(äš+ä³rÊ„¼/½„!ô„AF ÃL’ŒdH&’Ñú2¡xÆXÄ<ß„â£+FCO°.˜Jr½GL > ôûCqO_<;AÄö=†|t«×E†ˆ©_ï#ˆ‘Ï[Dâ™"f˜8ã‰EÔó.ø• [&Ð7IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/exportpdf.png0000644000076500000240000000227712613140041025306 0ustar philstaff00000000000000‰PNG  IHDR szzô†IDATx^í—Kh\UÆç>æÎLÛt¦Qb1µ>ªVmKÅ E\ˆB×ED]˜MWÒºD\ˆ¥ÒEIQZܹŠbt@%bl¨$éËušU+’úþpû /ëlnA{†¡Q !†Ð…/Ípõz¶ ¡áX„{LKÐ( ”JELý£„:©ÂÔOÅVÈT^B¡¼Uû·K`è/LŽ1==E¡çNäºm¬[·tÇ]·²F@HÉï¿Ãüü<ù|žJ¥²в¬%lÛÖ­ ­ÃúFV.——øìóãÚS¡Ç¨ ŒÆU¸:•¦¦úúú8|ø0‡ÒÇ·!í¥<ú*‹ Pß„®ëRÓÈÈ©TŠt:­&JRJêB{ÕNLD_†µeHY/L$úÉXbÝF¨a°^R혪 CÔMê›'4¿ý«C‚D>ä¢î„ ª€ UòO¿ ”Ë%MÓð¼2¥R‰R±¨wvË$!·cfæ27æf›ÏÀÍ…›Ìg³8Nœɶð¹0>ÆØù³´%Ü 0¸l€B©ÀÕ«3x¾§d¾û‘d2ÉÎç_lxŽOMÏÐ\‰ÄW>³³7PߌŽþBÚÄ׬7S G!R£š«¿X,N—†‡‡©¹µ#j->|НË6M@…>M‹PKËäL"‘ ê kÉá#©H¤$ðô)qu:cƒAêëïþß‘H$B×j“¦ %žO _£ÛwêGÝ–H4J…[h4E 1<:pph4ÁP”nþõ7]½ú]¨¬¤ªª‹ôgÍuÚ¸£ì¡Åbykˆ bƒcÄšMÐ#›ƒ*/^¢Óg~¡³ç~§Ú[w(ÿ˃÷MˆKH\1P_(N®n?uº<äæ±o ?÷Lˆqµ¡nuTHçë“b|ü OüˆŠU1ó@D_Ãë3M@“U÷i"Œ«N¨uH›&æÊzÃbcŒ¾òõ@¬áX¸Æ4 WßÓ¯‡cÆ@ˆàœ×"àÖºûˆº"Jkkjîòóí0Y›"8{Å1¤0þãÕ瀮1U¡Øc‡Gˆ ÐÑ«ws%ç×Lð†ÅÆ@µ0 ;‚5[É]A½:»èq·A(d”>Ã=!!€7áxoÔP BÖÖ%Âp¬PÇPr÷C ¯â)L3éY2) ô²@«[` W2UãXuàß‚&|—y‡™jII'¢ Ü"D…·<BUáNÙþûN~øš¢âCͼÇûÌf–AG&½P@¶k²µ¤¼ílê$zàA†À1>û—»à䇰Ã+ªwz‚C_—ÖðË™%Ì|&]J¤©.Œ'€V¥AÀá׫n°ëíovŠ–#4)ÙRøæû㎂¯Öæ|¾óGÞ#—ùˆY&%ÞcÞV]x‘ÀÜÇ'ýz»Û¹ÅuvŠõ{6oüدվ’½޼ÍjV¯ÝubþÒÜ]|íZÆÊ0Ÿ0ÙÌ"&ƒ™öR¨îWÝÉpñ÷¼¡¿UûŠ÷VØš¿í§Œy˶óù˜õÌ:³’· Ä?­ 6_ìø¹k=%û~îÈßò]õ*ëŽCs2³¶ð9…L‘Bº†ùt"· ùm++Cø?ܪ7}»?sE6^É|(7ÎaVÈ‘ë¨8ë•BƒDšlÙLÙ¾¹ÌCm›ÎÌ2Øp¶¬*Ã@º\Ÿ%Û=î‹è?a>àaoN0IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/fileopen.png0000644000076500000240000000417012613140041025066 0ustar philstaff00000000000000‰PNG  IHDR szzô?IDATXíW P“÷®Úm¶·ëm]·ÛçyûºµÛÚ«¶ÚÞvçz7»³nÓÞ©Ô­Ûê´îægÕÚ"ˆB,ÑÈ—Ñ"Š„@$@ù’@BÂWÂ7(ˆ¥gžýþ¯(Úvç{÷\rÇËÿùýžçùýÞ7xìQ‚®oV¢  ?~èýøqÂo—-_!6{:ûì×Whä:/â«ìo„Cüó‘_¿&ìÖÔ›\Ö±pXúJG/Á1VYô’%KÄ11ÇýšÊÊ0/â‘]¿ üídršÊ1öémýPdïA‰É •Å[ïöìÙל{1êÄèèØ4Ý¿ýQ >oܲUÚ:xcÊ0 (ÜÃ(1·¡Äè@ÎŒ„Ìdeç‚_Ÿ¸)ÀíöôÑÿýá‹=Kx•û;ÇgùlÔ]“™Ú ¤®¯Ö4!5¿¢¤Ó°¶ØïÏ ??¿–Ÿùù¤•æÔ2_™¿„×fû\œ†¬¹¥fdudk“ ¦R;‡tüÆ$Æ®O`tüV¬X!¦3?Œø{„¿0Oí$­qÐÆÑ20q[guúí£s}–×ÛWQ#ñb\.ÝGÌH‡GÇÑ?8ŒîÞ¾):{Ç=Ó0£ì1ažZÁa—uŒBióC×ÖƒZOô¾A”»Bw|6Øq¹Úˆ¸4)Ò3³æø<‡x`ˆˆƒèðùQ«×w±t“+t+¾f”]=SÀê:›Óo ‡+{¦Pl Ä UÎ.Tµ ¶v@ajÅÕkH¹$GŒ(^:xv×Lꑱë¼ã Üí^Xl-(’— ¸L嚸5ÝspÓŽ°ŽLƒ/+኶…–*»ÄÚV?46ï]Ÿ3åj|}ƒa^¹‡GÑ ³–«4H:}Z] |“@h 0ÒÄ(½cP›­þÙ D7R¢óªL¨vu W´øPÖÔ†"½Uðùýc"(ËUóŒ 6ø»zàhuQF$$&"¯°ÞáIø&€–ï$¤¦NÔù‡Ø>8­ÿ_µT:üPYÛïø\e@tR ròòçø<#÷ŒÏ]=}p¹ÛajlBnÞ%ÄÆŸ„­«í7€N"W>Áe×(Òõt®³/¼÷pdq®ŸþhÓðmdkô(mt¡°¶Ùe:ˆÄ’û|žéz`hD»ÝÛ‰f« ¥¥å8v<õVÚÈc Y¤=H¬°ãBs.½PÔ4°ðíºwü¢ú?A–²WªMÈ’k°÷¨ Ó¼rûàówÁîp¢ŠüŸ– ïJoÊ’6Dy¢ö3 ~œ®v!½Þ‡ ê¾Îb£øá;÷p´¶w)¥8'SA”~k#¶Ì+w »Î6 ¦F¤gœCj–îž~¸¨ëF ˜Üw猤Զ#MïÅ™kn¤Öz  éß|k³”¸ÖÌ·€Ži½CH8ñçr±+ò8~yw¬˜Ü=}!x:|h²XQ(“#>!&›J7mc¨úÂ8ÛÐ)tˈÅÚVœªr"¹Æ¬z7.*TÍÄóïmÀزÖnÄ$Kñþ‰SxkÛN¤ÍÆjFî{+´U:¸PQŠñi @«Š;§3M]w»ŽU˜ï¥F´Ÿ½&<õ D²F}$ÁŽƒ‘xõ7«ÐÔlÒÍän0š!9“ iÎE« ¡ë¦‘;r_jÆIM‹ ;#MPÛp´¨A@’ÆŠ²¶¾ðÒ——‹ùê]ð âój­Ø%–íÿÁÊU¯ ]³e"+¢§›èlzi‹ùùXå9†ð±%(¤œ-NÙ(ÈκO(oÆÙ'4®îéû]¥ówò½¿èAE$J5õضÿC¬Ûü6vï}Í+”øÇ;ÛhCzá¡™¾Öä¶ @¢kC¶5$x.R×ѲzÄ–qNïÜÞÎ×èÚèÜžúoqùŸà…ÜWĩԢ lݹ¯¯Y'Œ•¢´ ;Þ}â|⊄p±nÙ'óúx‰I(„_nä>Oa+3Ûƒ/,]–‚Íçý%Âù“ö넯Þ[@rR^1Öÿ}žé!åGŽDá½èX$–›C~2¢ÔºAf.æ{ûTY¬µ¡®#8µsÿA9Ë'g›îeÂ+„e„Ÿžáï÷—u Þô6^[õ{¤¤¦aý¦Í8£6á@ŽF[*¬ó¨Û¨B=â¤@¥ Å-þÛYWK¬tÆ –%Â;õ‘ŠòÈT/Q*Â%¼$ *B}")Pµjœ®o*Ž×—µ×{Ë×ß93ë&$µp˜õú›ùvæ;çüÎïüÎ7Šö9æææfßyç§?¯ÕÖ£ÏÊ?Òøð_ªxÎìýŠscT¥RÑ.\x÷üùó¿þ*ö~¸®[š™yú¥ ( CÒZ‰F£ÈhCZiã9ä{àY–EÙlö¯ûÙØ×,Òîv»´±±! ö`ƒ*6®0o0¯yĵ֑q­ }m¨Lív»¹Ÿ ½/œ˜}Ó²-²m [¥FT–¥ÈÒ˜ãhùšÈ[1*‰ÜàwÏ<óì÷*•±±;066–ªŒŒ|Û„ŒDÁâöÐÈï!>ÊŠoް§€,þM!eÝ®GO>räÀììì„­V»åÞXån½G3üÅ‘U‹­÷”ˆvwwÏ3þ£¤8ŸÁ}Qrd{UÐ?,+vÉbhb§4…x&ºÝÉGd9ç(1÷Üô¯Œù•þÂV é CŸ”¯ÌØÜœo`Á^ˆE$ý€ÔÀ 9$èËhï/h¬>haÏô¶÷-Ãdž††¦ûK¢Ô‘‘‘t"a Âoô¨G6›Ó…ÂзŽ;VFuè(c–Fy./,,|">ž>ª†‡‡õÊÒõÀ Ý )ŸÏOe2™¢ x3/½|zòõ³g)áºÒI¹\Ž–——YÅèøñJ&8M”J¥XžÉÅèXV,ËÌt#R%~®Ýî@:tëÖ¿èìÙ×Ì™3g”çyT¯×Á¯MšŸŸ/øáß·ñ`~½¶6ô›K¿¥Ô@JeizjŠ>úôSúàƒ¿Â@é5´i‚ÐÖ{²¬DC ßgG<Œy^GœºuëßtèÐcjvvVU«Uêtz(¨¥¥üŠ B¸ÿù|Õv–äÌv\ÚªoÒÇBµ»› LÆl1f³A›Ïµ0œ¹ X˜L?÷Ô½ï{£Å_»v¦§§éÆ4:z˜VWï“ϧlðÎmµ[Vo»GÉD’ɵšM*•*ô£ÿ‘„¢éqsUt-ºÇú£”%ÚÏ_%j!#Õ缎GƒÙAºxñ"«+ݹ3OM¤ç›/¾È(&gkkKã b;A(¶i}}ƒš­šŒ5˜¸#rÎmŽç–b. ²ôÊ9§ÇÜÆùþ±¯Q»Ó¦,È W©˜OÒÆæ:çØ€Âéø²áç×E²‘„c“[,‰±06Nl h¨©¡(p-ްa·ežc'º^—JC¥XÑ‘J ‚èȑà )CQ[)-Ž”àñóÕ&4ÀHƒ‘Z§¨îYbù#hP_¾”Å~e¤S„ÂcܪL¹Ié¨â@§Û"k'êë\ŠL˜Û·oS:‰4^…ôÆ}ŠI÷ß7p´è¨´PýŒÞxó'Rž¼·°·tY|˜„¡çùfg§éÄÛ-CPªB.ĢáÚÄÝbx-îx}õ“mb+a´=ãÜ6[Yu€+ÍñQRhFhC<¸¦Ó)a¶ƒ¼3!_›£Þü=â9j4‘1Çç¤A©(^ç]DÊ$å/ î_‚úMNN#¸Aùâ½¢#‚¶ººÚã*è Å€‚¢Ænƒ&ÆÑÒB• `’ Fƒó™H¸"6&î ÑÎÀP¾X'y ¾£M¦EA'&&hy±JYÔ¾ŠÑsAxÎ>§ Lº^2™$ßÃÆ$q¡VÛ;u:qâ:wîœ À›S–YŽŠáó$ˆÄ{Þj«ÙÞ"7w”%ýï7oÒ•?\¡ÖÔm˜re'@“ØEÔ-\äº~Í;­.ÓñgŸ‹Øìƒ¯Ø¢EÓ”‰ÊÍ‹£tŒMŒ \É dDóÅ¢çã33tåB*îzJÙ²Ç,—Ë ßº uÚ†ÕS§NlÕ·@›vu àa.—‘E:½Ž0¸fj(!›•`T8eìêjsܨøw&o× …">}FÐcö»®C‹‹ËÍ•••.ÃàòåË¿¸zõêGA´¹4^à…¯¼üê+ßyý»óGS*•a°°hüâÁ uB+ÞÀ9éÜÛ.ÂÁd2±õÞ{¿ú]«Õò”–îõZ·TMt;“÷1¼o ÿÜ~Ž%,..Q±˜£õµMÉÈsàTW˜ÑL6¦×7ëHC^Öi4ww¥¤ßBElý¯oFN­¶–«TÊñ®ÛÒ°aŽ–‘ZDyÙ ;bÎdóypŧµµ5QɾùlM¨1€h݃¼šÙ;]!æcjj’îÛsàˆÔ°Ù©Õjæ tÖkwß]¨.<„AJGÛžû„VÝûªüà;¥Š4‚B¤§W­Îÿ絇:¸óöm‡ÁæâÃ…Í›Ì"²mE{/îä£jaÞXöfä ¼æ¹Á¶lcIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/filesave.png0000644000076500000240000000226612613140041025067 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<HIDATXÃåWÏoEþfwíõn¶$±$ mD?  4BäPHˆ¿‚SþŽH¨âÀ… \¸rá‡"%@!P‘¤-NKLÚÊu×öz×Ã{3»›Ô?ÓÖÐ#½Ìlæù½o¾÷æÍŒRâA6¸Yñ`~~þ]êNÿG~—¾¼;ä±ÎÌ<Ó4±ú“µå:öªá}yòÆMœ<íàÙWÓÃW®\Åkås4Õß|›Gae ÙìQÜܰðÞû¯d¹Ÿ}ú=n6,þG67…“OÍt‡€[ÊJab"‹ÜÑ)8¦ƒL&3ÓO< w¼®Æ>zæ·´ã¸p]¶9†K—ÖIƒTRiÀ¶D:ªOÓw:­çƒð}’&ÐhÍFÔÓwËÇdî!˜¶‰^|ë¥Ëý¦Ab‘˜ü3g^²¶P [±è7®K·Këüù5eSÛý´Ã6Iˆ0 i:¬/uR%U/uÏ?ä)5¦¹¨¬´+‰€l™d·­D@FÃv¨…@‹hŠmŠ›Mt;$;§Sœ8D3‡ E”Sê’º¯¿›-e –¶Û–ȶD[ 1!Û˜›{ix†±A¦_…€›ìVY)”!Ø&Ùf}hB¥6JbsâEME‚ÿ E4’.¢Ÿíô<ÇBêql/±ß€Ð"´üR,CZDÚÒt3õq8lÞZ9Q,) ¢¡)WBcIa~ØKì÷ ßÞD g_{þpw ƒòÜžÓ–¥])öqôe@å\ÇOÑS#)Dl«TÚUv;t0 `Ðþ7 ×qðó…UŒñT}¸—ÆÛºº»§l†¡D `ðê ¡¯]¯`ë¯jÈýô9ø-¢CWt÷ÓºI•Ñdçl{ JÁˆÐšêTE3É–`f…1$†r¼qµ„ÍÍ2êõÚ}9wœ1;v¹©‡½z¦‹+ÖÇ}€Ôj5´Z­ EÕ1NTî4Ï©ØSÑñépŠåó/¾R6YØÇ8 LfsÉÿ±´´¤pš¥*9whØ–ˆr “£@œ„enÜŠÅ"åtOÈå” …!ÕYv„ÁI&ÄB¤Ã Ô©7—ŽY>cŠã¾_ëZ¥Ò—=wÉ BÈ 9˜<Üßõ¬Œ¹•ð@Ùî‰÷Þß-ø.àÓ‰¥/AàSÑhÒª¡2{d–¿»·‹Jåný½ÝÀí½ÛØ©V•’!Føb’!6ÖK(]¾H‡©•çwAÏÔ›ulmUèt pÄCþ»áyξùN×9^Þ¬ JCÒ¦ÛÙÙÞ¾ÅשּׁüF—¨Tþ™§Ÿü„ò=\ßü¿_\UI÷5… 3›ïzáRß®Bº5OOOçOzN9§WQ­€å·ßzãÜ¿ùët®¸úß¿ŽÿŒ®¬"B!©IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/textbold.png0000644000076500000240000000311312613140041025106 0ustar philstaff00000000000000‰PNG  IHDR szzôIDATXÃÅWklUžÇÓÝ¥Ó.îBa·¥ÑZ|Ô´@%Æ¡Jxù¡ òH‰Á¨ˆÑ€ñØ 1>€Äb ‘4¼Ä†Ê+<"PR´Û-­´tívgvggïŒçìÜ…q»»lËor2;wî½ç»ç|籬aÌÿ9l© W}\e)Óm !Ë»2=Íy!ºöÜÉýÛÚF•oyÍjë„¿«WQ”I¾;v¾¸¸È‘ºQQ¢ÄßÕ£üuõV.ò;L 'F 1&Mò8m‚ÈÇ4†ñx|R\7çY6ñ #ÀNïèÅxœa4ÒÒ2ׂ5ÞîñàÑd'€ØI›Ê‹ ʧN))Z¾lñäüC™ŠP©]d˜–––î_›NôâXç˜9£LšŠ£*ÃäTòMþöö›þâ§œ¤€©Ÿ8Ñýé¦M* ÜœʃýЗ_}·–l†ƒeX‡|¨Ÿ7÷Ùµõ¯/yRŽ˜`íy0KBê[¾h†uõétpÙü›šzzúULŽ0uŠ•å|—é³ ä³Ó­—Zî÷)覸C‰‚%ò$€UÈE#`hVBL¨ Ã8v­íF¿#g?è:Çvc¼#"¡u R]7E z–ÔÁ&׃Þ\Ÿ-Óäd¸ñPyÒ †Wr¹D4œEw…•(Â5ƒ*ÇPC"¦ã-øØ Ù“¼%ùhzŒZŒÆPÉÙ?/Ñ=£v*×Ч„J|˜òjx,zùµº*NÄ(oŒ >ÔÜ+{€¤¡QH˜ŸÞ>¤ÂX‡Q Š/àÊYåҌʙ®ÉOU¸‡d“¤,¯’ßšš;Ïž¹´'["Ê™„3 Ä*pû¤­Û·UÙíf&D@²‚¾6× @ž8rpÿmEVöÀöŸ™Ç%!I ¦¢Q•º¡®Î@Èr·;Æ@̃Ù1g¸'ø¤56V¾ôj݇αŽS˜Ð˨#0Άûäýß'2¡uT×,œë~nN­/¦‰|4.òÓž®ñ–•—»Ž4Þ ¼é\‘3 ã4´0lƒL¸>…Œë/ž¿¼öíõ+՘ȇ‡Ç±tõ›Sløv|¿‘Z¹‘DQ·¤â4©{· Œ¿|þº#„í‡ ‰ü’õ%iúŒÜ ‰…Ù2!‚8}²µ_Ì3Ý…õ`0Ì0c]> ø0¬ <RhI7<º‹;×ס¿pO@(P!‹KK0Y•Ê N-Arh# šÂÑjI1FŠ K$$\`@¡³0x‹pIÁ[: >yÂQ ž^ük%Þ¦pÇÚ¦šB-} hÜý El“ø•A½À&ð —Й?ˆr8Ó>´Ö)‘Ô<®ehÅé‡&e¡^SzÁÔs½hÉiäC~]pÒ²g]Š9Þ:­¨Ö78W)Ê-‘–ŒI,œ]´äµnƒ2 ÃóÙEÒÄXZv&V”M FâVm¶2£Æ}ªáœOŒ;ª`Èq5óî†B«s¿. Õ öpL’î¬Èc¢o»zùj½Ú±ß­ØÝŽí– hÉ¥€VsÝ Ÿµcßÿ‚…?‰J(8E$Þ0º×ì iU]°YXRZ?³l=ÿÐ1¡uE<³M~ÉÔþat?Û>2³®7‚ÿ 4kQ&À_„óŠÒD8H鉢O!aw½g²øÙ›z̶‡ãÍ.[ãù§Ïÿcõ¸Ú É(:Æq»`ôßþ˜ØU±Z¾a;!ëä®w@í È¢¯»âWíwõ$@¢Fêù.Y`,¶WäÑﻚÍ,Îø †ãíòóHìIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/textitalic.png0000644000076500000240000000221412613140041025434 0ustar philstaff00000000000000‰PNG  IHDR szzôSIDATx^Å–]hUÇÏÌìÎdf?’˜æc?fÍÖE³V$bIª5H„Dl­QŒ…"ê›BßJû >4à‹¾åEA‚Ò>Ø”J}¨(E!Z›T“Í&»kC[²»³³3{w<—9°ƒ„M›vâ—»ì=÷?çãÞ+8Žÿ§à>lüÄG1¦‘,´l ¹î™'¤g>÷ýW^z`Äô»o=­ëŸðà†ÉrkCܽûº•žž.ÈÎ~<ˇ‡$€ˆÇ{CAI‘L ÑÐõL7ˆ"ŠÐcé@ ù[DJ ˆ¹/¾<ÈÏ %§¦^IÉJT±P@0ˆí:;é‡üw®lRjæ íª©Þ;v쥳£‡Æ5@’4c}q~õÂü•Ìûçp&Âî-«'c×Ï@àæ›­Íý0’JéQ›0 ¡§|>Ï;âg|@áÏf2©ÀBäùo¢=ŠEƒòîË9à%›N'5‹ºÀÜX]Ýh ð9C±D,T·lFŽ$€……%ÿS@Œ&õTÄä®—Je«^©9,À-ßR@ùOôìÛ/«Q¥|‡çß .—+ÀO¾ÞDv0­kõ:€eñ©ÛùB'‹{" ‘Œk<üs]¹víF+>×ÀH\4jÖlÛ]ÀX•Š›·0ÿë¾  üGCaí©pW¯V³ÜH ð𯵪ßç ¦S¡ZÍÍ¿CøO±@ýï¿€l"×jÔ~Ü€¥ëíYFãz:Âo?‹ú?(¬,ç ÌÿžD`¤«7É ãíÇÃO_oBcÓ§ŸÜÿxF3LÞ‚ Ü×ÏúÍ¿ËN“]Å¿y£é à íZmL€ˆÓC=‘‰r–EO¯ @~u½f™ÆŸ€ÓÖæ.¸¦¹“±Íæ ”9¸ú@gÏ€Ûü¤ hñ·?ª?~ûéï8U‘B¡uAò#pÛ^@ûÍD}vòý—Cáðd¨;1jîÌϩƘ½üH,3Qz€†‘¢‘™üí,€TŠH`ôÕ&^xóÔgco974|pæèñƒuK‘˜ã¾ÿ¸©á~ulbòðÃÇçž{íä ŽÐIDHˆB‘ÉÛ8O¿øŽžLg>92=¥÷ÅúÕ&(Rµ À¿¾ å5™û  ÛáçÇûÆŒ÷å–WÏ}ýÍÁÍõÅ“¥•… °<þÒ@¨&Ú¡åÎM 8à¥BÑäkLÃlòëu*3PTUêÇ•-ü¥|Û]hT ¨Þ-5(ô"Òôï¹ ~™Ÿ½á8pfyiñul± 8M©Ñ°M³zg G@¢5E¤(wno^®Ü-z8ûõâìe¯"ª7ˆD£ðŸ5M Ä"ìVøwî‡`H1 RF¶îƒ2­«"5oþÛFÀA£Ã£-²éôåÈöðF¶‡æv‡Ñ¿Ù¨Í@¹… IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/textjustify.png0000644000076500000240000000235112613140041025666 0ustar philstaff00000000000000‰PNG  IHDR szzô°IDATx^µ—A‹]5Ç'É}ïMëFð“L¿€~Û…íBŠÒ…Š ¨ y¾º± jw ºpcÖÏP]XA«P´j§:cÛ©éLÛ™wïMŽ!YÂõN©øsroÎ#¹9¿wN"ªÊAí©  ØA)d{ዹrpCT5Or|ñpŒá&#ïut1Ã:áÜü]GiÇÎ|0?²sBïÅ÷ÇÞ+ÎD¢µBÛ*t]`21´}€bßa qŒdU³ŒQf3xëµÓi†Ò’³³€À¥ëphfãä–Kk‚ˆ°lßü¬iò”oײoãLôà}Zì×W:zð!$Ÿ¶ëX™ÂÅ_•‰•ñ ÄYŠÊópüѪ¯Õx‚Â@ ›ÉÂÑ“lq€) €è€6[ú"BRsšö²¨¡ÝþêPí@±c~xv~dkWézÏc+Žeç“ ë¼"äØ7Žèb$Å}:q¨Âþ²g6uÉLJü[k¢ø& Ñ^}e1a‚̉2\¼ê™6–•™py+ô½çÇ ¡ëk„ï®y…þg ³iì¯ s<ÃO‘ÿ>úX£ÔæØ+5„µLe‡ •­ Ã!Îï6©@7Íb–-“¤jÈ¢Íb ìgU ôDUlP^¯v`ðË+Q8¾e€BŽ~tv¾º¿H΄McPа½Óá¬Mï!gÁÉD’Á5Òà…eÛ1Zú>gIØÝ]òÄãS^zyB±¨Ò¶WnÀÞ^‹—¯ö¯4üq× >§è«›B蕉“è¯tË€ ü²© Hß+kÛgÁøíŽ*Ÿ<þ¶ ¼  Úró!Õ3ev¾D8“’–Aý l³ Â(À–D„ºûÅf8묘2b aÙK¿ná`Ë BøÙÇóÕû€ÆæòÚ8ƒ>(ÆÞ+"$(wïuÌf ´>`ERÌÙÒb-BŒ•©pòÔB‡ ¤íÓÆ`€ë[phjP ü~›ø^”k·‘(`cÇá½ÇXß2X#qËz \ÛTfÁeíoJiÕ|uêÅwäÿË¥ eÂ÷ó;ì „Y“ÛÞ0„¾*ÍŒAH ÝHIfôëKŸƒ |úóOæ«!ÀréqÎTÖnîä‰7vURY_ßÖTÊQ¸u¬ðÙÕ)过`¤UG² HUŽ›R‚¹÷u9ŽY0TÐg³Ø+*é·ªý£“ü"¼í,w)Ö^IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/textleft.png0000644000076500000240000000232312613140041025122 0ustar philstaff00000000000000‰PNG  IHDR szzôšIDATx^­—MoE†ßêî¯ Žø„¿—ü ÈÉœ@â­6A á2'àÀ…\€Ü‡H(HK‚B@A `G‰½ŽcïÌt½5-µÔš™UJzÝížšîÚ­g«fHD°ÈNŸ™€ 5B¿ âxå˱`±Aˆ‡|Á3}~ë2L¾ºriü>8${îâ‡ãÕéÀ xÏ`|ÃxjÅÁ{sDa´„ªD€ºf½¹, ª†õæ²t0f~ :Š´2F0gß9€A2uv×7€•‘ ‡[\ÿ‹@D˜UŒ«ˆÎ,a½õ-œÑ9{§C°?Ü®Ñ4 ÏŒ_ÂzU×-×þ–¦ Ï3%¥ÿ{ò/Ù\²ëƒ)¸ ¹¸¹‰rI(‚Ê8:õI pPTUql’Àª Î<€ ø¹ƒvŠ2]ßFϧæ4Çeæ›"ìHAd~´>^½(hšËe‡Yíõ\ç(¬I»# Ô ` Á{¥Ò)d'³&äÚ)žçé àÔz€ðøDÝ´…¨»h>kXkuh«`Y’ú\ଭMÀÇ]ÁAHFãTUßw€ããJï¼¹ÁaÎXY.ð÷ø¶DßÙ#p#(áöŽ ž±ú}cy0NlíÖÚ[“íè€ló˜)ø.óÉ›—‚?ÑÍÿÄ ~á½TùPF2ƒP›6TÂëb"s%ëú<Áµ…?¿4Ï;*¡Ž™¾áBg%üü“ñ³Ó#Ö…Âj{ÕN§»³ÄÊ' –JÂáÃË£Ô×Ò.È"(œ…µ ™aˆ°2"¼úæ.tAˆªæ@±ÑÅÀÊ’ãî=hU#H˜ ˆ‚lMïµoî `yd±yËw÷£b~M‚ÿp¸õÆÚy…ðÉëÀp :È ´ÝªÊ« U‚±Šò©5Gë‡PÍ,®†Ñúo@±#¤àÔŸŽW™ÙÌÃ9«0¢ "­ÎÍG躵Ԏs‚¶r"RxÏ•/¿>áØ’‘aò*á}KûÖ¾®þ»[Ø3îˆfV°}€¹þï=|gJiÛóî‘$N0 áo!Ò¬ý_)¸¬c_ b5ìhÇ*mÁOÐŽ› :¯‚‹ÛqÞTÂ4WKãé—&Oŧ.}6^­ÀÀ+X„ªb}é¨AáH‹•µ±:2+/c%R0^éµöäȇ>î μÖób¢î"úúàéÖRL×öOŒn)ÌØ;TP¸Ýi{°Ý ƒvþH?P ó€Ì@%|ñ•Évž‚å&}êz1ÉÞŒ²·àüå$Aé¢lþb’*ªÎ*_ö0šÌdtæ0qÚ4uœ”Êoôk†Oöªz¯ºˆ#1IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/textright.png0000644000076500000240000000257612613140041025317 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<IDATXí—ËU‡¿snUÏ0 #OqI|`ݸ‘…îŒñ‘Ø‘øˆ… ¨ ¦e£ DcÀ…1Ýø'˜1.|"Fã‹A@‰À »ªî=.ªjzª»XÉÉ­ª¾Ýý«ßùêœ{ÅÌèulÚÒ@ŠKé2uêÇll´Þû‡™°iscðx§y]î[1Ußš­?Ð.ààÞ7woüôçÀ†åÙ³b¾;#‹ªpð¸²nIF9¾>bܳ b§|~8áÞ•J9¾ÿK¸ïvH3øêÀúeP«)‡NÀÝ‹=Š0wHyõ¥ÆøØh}é 7vml&Š÷È)ª¹à$ „ˆ#G !|ÒÔS‹#ZIÊà@Ìå¦g`–ãÂdÊÐ`L+5úkB+ÙðZåH›Íí HË­íÜ*SR•‚6Ø´ˆ¨1P+ƨø|Šd@ $Ř•"ac£uÛ´¥Q­7¦;põÏsÆà‘i÷ªÝ¨zêPáÈÕ±ÂéOï0¾Üºc÷ú•CB08tÌö8§üzJÎg{$cýrADùõ”pÇ¢ŒZñÃß°fi@Q7F–xœ*CƒÊËÛª¸*À¾xëíúú “žZì¸Üò`F_-€$õDNɲ€sJC³è‹f†àœà½áœÐleÌŒpÊLmö»"¯tHv0T¤Àf¤£=\ º¾"ú‹±VĨS€%E´€f1¶JPú" Ø=6Zß3S€±x´ 6í¡T¼‚ÖÉß¾¸§¾á–<¯?3F– ©÷üvRX·B ~‡5Ë¡Ùô>¥l¸Mh¶?ý ko¢Høñ¬Ä5å—qX5?P«)*íÛ÷V2 ßìÛWß0yѰ`¨ST ŸA’e¨*‘SB0âZ^&/]J˜;TãrÓÀÀEx‘€Ašæ"²$0wHyö…„÷oÞ3eåÔ»ÿØ•ëéi¸Þ„¶ër8 <86Z·éL¯~S°õ·AØWêJ…È µÚ l–à,WÅ]UvÐñ,ð@É‘ö#\„W¨‚°—€Oö¿S_=y9ðçiáÎ%B’ŽžV,0T„¿Î +æC濟2îv´Z)Ç&+æ{â(bV¿ðÌ öðþ»õÕi©CÒÔˆ¢Ü, øœ‘¦H>' 8U è«ÁÓÏߘ€r n´\s \ûK-¹ ¤¯ B-Ê4ŒmÀC]ª!]Zq××°S/˜î€ñÙ‡ûëk[-81·-‚VbüsAX:¼œ˜0–/PÌŒñsÂðP ŠãçáÖù`Gÿ ,›'8œ3¶>÷zÇn¨¥fTÃøìƒ÷v¯KCDPÒ,;½—ª`NÁ§‚¹‘S’4Ÿ;Ð/lyªw;Η`y þRн ­hÇq©ßh;Î*Úñ®™kÂÍ«b©è ×ê@ùœÞlnüø@}ã‰3Æ’yy®Ï\TÎ6Dá䄱l’f³—”…ƒ`Á8}QX4Ç„Î7ÏQ8=),ÌÙ9yÎX|“à"O<ÙacòÑúFï 3ÉOrŠUsý>@J€j>W„W¿ H³\€ùÄqg;:¤ StÚ˜t^ ^ÇÆ¤ª2Æ¥"å*6&¾ÔrÓ¶Êw…‹ö]³´oÏ;ˆp!%V¢¼]ÿà?´>3îYJÎIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/textunder.png0000644000076500000240000000223712613140041025311 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<1IDATXÃÅ—mLSWÇ+êâfÆ2c¶lݦË&Q7£!™šM S–l:'CŒsY6@^MF0¾G—½2¬Ê‡QQ7@“¡-`G¡/XyGTÓ„%$ÿî5µ–ÒÞûÁ¿Ü{Ï9Ï9¿óœs{OD¤x–<ñµqÏLð=h(¹^ˆu|¿Ò+> ¨…ú2¯¸2¡œëÃ&Øò[±¾¯û!SÛîtWZ® ³Ãu\µ:\bßsÇ^ñês×lC\o¶»F¸?s9×s;¿Ø”žc;œ_Ù£kqº›ˆL"Ë"ë‘Ñ_!øMf~‹¿ ˆñ5mNwÇ}¢L„Ÿ¹Üo<:R‚Xhì#ª»ETßKt0¯²å‰`¿uãY´ë‘0p,—ûÝ>:j4aæ5]ãé‡Ïu li Œã;]D| húê : &A }X¦€KPÕeè!J• Ð*WÀ€ xµH‡‚h¾/S 3/o&ªî$J‘ `»'S@‡™_¶! X†íƒ°Þ•)p °ÔJTÑ*MÀ<$Sà f~Á„,`’%48e üÓNt¶¨Ët xúA™—[ˆŠþ%ºˆeH” p}@¦@)R_p3Ñwjûe üu“èD-Ñitñ­Ý2þÆhôȂ߂Ën¡,:ÀÁ•q©9¶ò®‘QÜWIÈ=^åpij…:¢ì}ŸˆNƒpaÝÓç†`¶ì)Ô÷åaö9ZHhn>%( þé’mˆãýIOÖIèêmG,šFFÇ2ä‰Ö§Œ}Û×M·ŽÛUØ·WJ:KÌBêOá-Ðàm8†,@ʪŠß«P(¦zÂD&dÅŒIîÅ ý| øPúD…B1…; ÿäëÐÈ„Ì]ûÏNß :e!:Y7èNþ¡ôvdB¶YŸuœÁÀš¨Ù¦í(/¬t3¼\v½Î}% > <ž_¤ÚüND\FvÒÑ’î"ËðÿñëX‚cÚ¥ndEÛû@£µÁÏÌÞ3ÆO¿:Ò„˜8¡Ÿ‰$ü >¼fWÀk¬NN‰ˆSWnÚy¢3#¯ºÿçòöáÜêÞ‡ ßsYLÒ/­ÆìÜ?/ü³÷óxLg‰I„Á§ ƒsð«à-ð.˜‚EsßÿøË%«¶f-[“R°ü‹ôóËצ/û<õðèmjå¼¥QhÞœþ—‰i¾²à-"4œùQÌŽ}ª »mXÛ˜u ÒÙʬXŸÑ6b›ñöêfŽWÅg6aXxùÊ‚/NW(ŠB:‡¥#öÁ6h¾dŒçB­€Î>þ¬ïíu|õ(ã«apœ`žé´ Áb°ÄƒÅB9ïü’7ád¯!P‚7Á0׃9‚è ,>;×ðÃMUTÀIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/zoomin.png0000644000076500000240000000324012613140041024575 0ustar philstaff00000000000000‰PNG  IHDR szzôgIDATXÃÅW P•UþüïáV„Xn( ¨”Êfˆ b¨¸ƒK²¨¥ ¨áhZ*Æ–’(‹ È"È"©‘ 3À ˆ ˆ8¸å0ÓÔ¸ ££ït>º3™=,ëÍ|s8ç|çÜsÏ]þ‹DDÒÿ‰ç;%IÁËpdx2>dlÒSØáWü«ˆÇ0-Y²$1!!á,ÿÚ[[[ïvtt¨!¡Ã?x‚¯øÇðO‹aåààœ””TÙÒÒrAǧàà` è–Ða‡<ð‡ø.@ >ÅÍÍ-¶¸¸¸­¹¹™RRRè=ŸUW­æ/-å¼6ûŽÃÐa‡<ð‡ø¾ñ§õ¶³³ ),,lkhh !¡Ó¯9¥ï•¦ç—?î“ü¯&n-J‚„;üà8Ä÷e_ô.@fxÄÆÆV555QLܾN›U[ó¤•)1C6Ü;ó@CüÆ’k9ág:ŽBB‡~ðÀGâ‘ù4.@ÌÞÔÕÕõPUUÕý’’ZöôAæ^iSEجŒ[Ñ©wO¼».Ž|wd$tØá|Ä!yO“.ô Í˜^Q__O{â⯎\—’üúŽªH«´ÎÉ-]þE}Ù'²–|ân$tØá|Ä!yy5-@ÅX••u½ººš#Π½s3;bBk¥7ÿLÍè¶Ë×Èe?$tØá|Ä!yy5- ?cKiié½òòrZ¸-%{RT]ôöŠ;’éïAök hÚö²ÙIÝ:ìðƒ>â<ȇ¼š0€~úôiuee% :rÐ:¾5:úüÃ\É)ŸTËIÍu2ê¢1ŸQ·„;üà8Ä#ò!¯¦ dlåÖÝ«««#Ϙo2,Ú¿ ­}œ.y\ É—I«ï÷tØÙøˆC<ò òö¥룢¢nbÅæžúvè®æç¢»#ÎSZâEªÉl£iù}’|8€%tØá|Ä!y¯/Àðð÷÷ÿž•UV_™°«&zxâOÁ6GÕ!³ó¨tc5K‹ÚIòä–Ða‡<ð‡xäwAÿ¾œ‚·­­­³’““»)¶°²H ¿ºU:ðp£I*%ÏÉ£Ji/Ç2` vøÁqˆGäëË)À=ðÃ×ËË«žïuª;áv`ö¹$)ò‡O‡'? µÎR§»£³ Ò9Hè°Ãøˆóôôl@‘O»/7!–ÁÆØØ8Ž[x½¬¬Œ/6ÿ˜|¦©`RâµH´Ùúȃ0‡ÂÇÐa‡ÿBÓÅÛàûùùuÕpžŒ‘ß„½¾º gSSÓ ooïë¹¹¹téÒ%jhikÍ©l- (¸œh%:ìðƒÇü.wwwòññ¹£««›e6Lë0,}ýb/è3\ ØÛÛ7p7ºøX>4ííítãÆn vø™×ÈüZ Î:m˜7áQº›ÎÓÅå’¿+âYïQ„#ÀÐаÀÌ̬ÖÖÖö–££ã}'''5$tØá±†gž³jÆøG‘3•”°@E™î:O½Í察WÄ_½ˆTb9 sĽދe7c?#бMl¶¹ŒÑ “aý™“eõ¶©JÚýŽ’.TQ–‡Î“2–cÖ³öÄóÞ„²Ø˜ØÍCÅ xhŒ# |Cp1˜é)N|ÄEÛ(i£’’œU”ÍEøXÈb2Z"¿BÓW±¶ènËWzb‰†9XØôÄßnVúм@3Yýù4%í¥ê."g±Î“•–r¦øLË¿¢Ñ«åŽôc¼"Â̇‹ã6ŠaÈ0ð²¬(2—Õ!¶JŠž­¢C.*Ê]ªó”——Ô†²» ׃ëöZñêy‹1™aΰè_‹ÁŠâ Yf§¤Ø9*JuUQþ2õ K9[!kR€–˜ý@1kc1¨%c*cc:c†89=€¾ÁR_qb“¥¬Ÿ®¤}N*J[¤CG¹-¼ ‡iZ€R¬ÿÆñþ·á¿£Ù 'q"zà$6]QºÙJVGØÿVÄzke9öJwWÿƒpü>æ"Nn™"«—™jãÕì%NP¿—½ÓE¡6 ÿQ©â;a"&¤z™›Ð\Ø'2ÞdŒ!Žì6á C#¡­! "&1 çþ Ñû‚þAÉnIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/mac/zoomout.png0000644000076500000240000000317612613140041025006 0ustar philstaff00000000000000‰PNG  IHDR szzôEIDATXÃÅWyPÕUþ=x‹[‘ˤ ¨!æ‚!²H¡Ršâ@¸Å&% ¥è((5(bF¬ï¹ ‚Ê¢ Ãj! 0ˆ!»:˜Ø`ŽÓ-Ȩ…ït¾ß\Œ™Ê–õf¾¹œs¾sîw×ßE""éÿÄヒ¤`Lf¸1|¢õ~ÄÿªÑñ$ÆÒåË—HKK;Ï¿ÎŽŽŽŸ»»»õhaÃ8x‚¯øÇøgİsuuJOO¯ikkëaЙ3g(**ŠBCCå6üˆƒ>òÿÄDç³<==µÅÅÅW[[[)33“Vù^·[¸¢rÂâ÷NŽðŠ>Š6üˆƒ>ò?Xo''§˜¢¢¢«{ÇyYP™‰OB–䟡•Öä$Këòå–mø|ä!0ûb %Ã[«ÕÖ677SªnχÀÈiufª´áô'RÄ…X)º%Jн²CnaÃÏqðÀGòQõ  Foåááq¸¶¶önII ½½eç9éÝìdikõα©]1+‹ÐE]¸wdó¯haÃ8xà#ù¨ƒz†ÌB¿cÆÂ¸¸¸ê††JÒí¿>6äð!¹xü­Êîët-ú¼ÔÊélø—E2yÈGÔC]C¨krssoÔÕÕÑ–ø´ Lï´´›»Ãªï§Ÿ¿EU•·¨º¢›¾ìlø|ä!uPu 0”ñAiiiOUU½¹=3k¼©üÇÃ’UY.ÙE.:šã›B>)r ~Äeó‘‡|ÔA=Ô5TÀ0F\yy¹¾¦¦†&‡8ˆ–Ôpï„ä~’Ô+›ht`+™®k£Iï·Ë-lø—yÌGòQõP×PÑ>>¨#êæ&Ä28XXXèx oTVVRSKëwÍ…–{¿Ù-/‡®g«´ï~¸Ü² ?â—›[nƒÜknn~‘ë0^4ø&ð-0a,¶²²:æççw#??ŸÚÛÛ©±íjÇñšŽS¡…WØì¿6üˆƒÇü^///ò÷÷ÿÉÄÄ$×zœÑQÚAEIn*J_¬¦š£¢äy*ÊX¢¦Ë4}«m•Ùâ3­|$Ä WËï32„ñŒè#A· 3†¹€/‹( ³QêcU”2_M™j*X¡yÈËKjC%‹0°scѹɀå˜"^=/3f0l3`­í(Eq¸­R¿ÓIEÚjÊb'Whôþ¶Ê˜¥Ô¯šjŒW³¯8ACžö8 ¡Œ ÃYâ;1E Hý47¡ðOgLcXŠ™/Žì0ƒ6áCsaOS=^#1¬ÿþ£¿k\nq. IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/0000755000076500000240000000000012613140041022612 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/editcopy.png0000644000076500000240000000245512613140041025146 0ustar philstaff00000000000000‰PNG  IHDRàw=øôIDATx^¥–Kl\WÆçÜÇxfüšÄ¯Gj"îûòÃ(LfBl*h€Òá£åCüòûŸ=ûƒgç/ "üê,׬Mä?'V66·ÄŠHucU^ùñ ¹vñ[²6û’ÔVßêÒk27ý¢´[ÛR½ý‘¬ÝxUÞ{錼ñÔŸ4€8ŒK;€€D 0Ùuܪ²¶²H% å¡ï\¢2ü ÿxçw´Ûqæb{»ÁÖÖC£'‘Þ<ðØ(äI äF ƒÀÅ`šà¢lA§½Guc8ò™SŒÝÿMV?z›­ZƒÔ´Ö\¿ÀÏ~rŽÙÿBœFXk”RM`»\£;±¾A+ÿÎÕ«oòÞ»¢^ß ŠÍ¹‹³Žþ2_9ý9¾öÕ“ŒŽ "b°N >9H ¨<G†3žat¸L­z‹Íõ:Þ‘£ŽÞ‡³BÅ$i‚Ö02<9 {Š”úÓWô5àí°`[`wA—@pm|àØØ•¾S¤VQ(ô¢} ¬uXk3Î9@UÈîpP@Y¸]¨ˆ!ð-} è^ ˜È"Ö’$1Ƭ±Xk<ß`] ¨ƒ/Z¶ØÆ€ÎER H„ Ì">¢È Ž£˜4M»Ë=´&Þ«ÓìXÐä }ÐØ-p»@pÝȰ]Q³(Ä9ÄH¶8Š"€,¢$IH“q È°û:0`¶»±(Ì:Ø6þ¡¬L‚¤AP LU’9è)±"ˆ"WÀ"Š8NñýüЊb¹ŸÊÐzûð´Vy.9€¹Î?^?`ÉH—»âá)…ö4…b™ÞÁŠw¦çHÔÀÖYš_fr¦y r;²É,àç.zº‘Äs Êà•ºQ‰A« ìatä8e•мù!Õ’¶ëL~¸6SÛµ3ÆW~4}P·á´&A…y7K ´6HÜdåýßâ6¼~mùò¥ö»·6¢é…õxh-iïë ÒÊOФà}`J w¡8„§ìÔ;Íç/]¦Õ±¿¯ïÙ täà‡ˆƒf‚1ˆ!µÅ~ Þjq3£tîJ@{¬Ç­=Áqæ§®Ôçÿú‡ÆîíYsþ¢{n©Æ°Ôóâ,wM.†üæ×çÏö ŸX`aê_LÜÜäýfÂPÏŠû”ømQJU€ÐÙâÿ“OÂ0ì$õr•%IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/editcut.png0000644000076500000240000000355012613140041024764 0ustar philstaff00000000000000‰PNG  IHDR szzô/IDATXÃÍ— TTeÇŸ€ˆ  (›l² 3,n ÀèĨ„l¹ df¹æZ–)‰ZJ§R:™Qƒê ŒÀ@£CÀ`%!«1 ÛÌ»Ý7=;í‚É©wÎï çûî{÷~÷û¾ÿ½@ü—LÈÈÝÝéæævÜÕÕ•ëââòÖüùóý ‚ÐFÔêàß>èØ+$$äVaA~}]­übfæÀöíÛÚ™Lf¶½½ý4ÑEÔ‰©z0€÷D¥é2hÝÐèðý.€þ¨­z{{ßÑÖÖ@3ƒ) Ó_Í+¡†KÀ†¼J€ðf·q$Ä277¿€fÎÈô) €Íf.áÀK`*LLLĦ:…k8†£PE@EÎf…Í7hÆAž˜ŠÕ?µatèÆ"²˜©°´´ãð«®,ûÚÖ\S –¶¶¶Í8…OÅþ'7\O†j]èªÝ ^žKî£Ã+xËZ Ÿ"oòÉyóæµ¢éVÄü±àää~d›ÑH~÷„Ðq»˜ÌÏùh¤@pNÞýõvȈ³TšššÞ@ÓÓ ,È:Ô,눵µ5 ‡f<ìÝÝëõ¢£tîÛ>ƒì®ZwëâTtU®ƒÊ Ž?$A»Èœpü|XXXiÝ7U²ñ±²ï~—ÂÎÎXÔý6CVr|æÜÈ'`¬Œ#e& ,ÕYÅbÀ,uáü–¿Êå844´´®¶bhddT Ë Iü¥·®M‚&²È“FFF+"gvgá,¡)Ó};#d8÷Ú8P{xxèRŽQ¼ÊnT— õ÷÷Ã/ À½n)ùÚ+‘rŸÅsîêëëg¡}ÄdŽ„öB7«¸·^š©„"t~kòÛ ølÛ8jAá¬Y³‚ðÊX¿6¬©B˜?ÔÑÑèê¸׋.(|—ºÈØN†ÔM:‹l£.Úd˜Fís°¿I‘T£££*zoç’(É­áa«ÚE×#R©(Z¥­ªßI¹wø0ËÉD:×XK€ßˆE‘ù´ŒOêÑ066öåp8ƒƒƒ b .ó’”™™™PYY õõõ*n6Ô@î¥ÄqgG›NW§'kñÝDú¬x"&¬œ¸ZGGÇ¿ª¼:ÞÓÓ\.bbb€ÏçCrr2r òÉ7Êíç™6kjjRRý*uºŠN{QZH•ä¾éܸ±´´4UŠ===AOOÚÚÚ  à*¼¿oå¹ÍÚ _{¡*&aÐzRNÍHþ®->· RŸÌ»œéé阘gÏž9Ù9ÐÜܬ¢³½‰ Zé÷nU}ÊmhÁ™øª±£ÓOW¯\ܘ’ÐÓym™„–0–£ ‚ÓÚÎ= ¼Ï“áØ—'ŽîWfeœQ6ÔWáÞ×ø¦~¸'íÄ»žŒŸ³œÐʱÛa ãÝHùɃKlÈõ‘ƒÈ:ÓfÿMNïP'û.YÀÝrÌÀß×M†2Ü€pmîܹÕ!«¼ú+Š>!E"Ptuþ_^½0ŠŠ—Æ`0Üþ1 ¸Ú?_qJü¢Y9“„âÙPƒú»Y }JÈËÑ„mØÝ¶åîÕ<ÒRwÛЦ''ä æ‰<ýíBùÛõ¯#OÝúe"•h“ñXYqû¼¼â“ítuu`;ëVBåßò;cc¨ú±ÝÝûdæeÏŸ­]»?QssÕÚ;–©ïþ×'úù#4ÉéoÊsòâ‹/ÈêÕߑڇ—É=Õ5²pѽòT’ÄØ\ޏ$’c—²†Ÿ-Šîx”™ºŒB¥ŒaNe%ÇŽÕóQË1"'èm!àoÃç ‚$AÀôƒé%>6@ÿ…N¼”Àâ3\‹åJ)˜è2(æUä1šÐŒŒØØ¶…BQ^âÂñI` RA”"f ¯t€¼ü©8ŽPñuEpn¹$ ,[1¥ÈÇÝ‹K‰]LðRh­Èɱ9Ñìd즀h ÄC)CÒ‹ÓÜô^:ZN.!Úq. äe;PŽÆïj´íðk@°-…ßg¥s ËÑ€ÛIÑØ–¤Ï@RãÄc)¯ˆØ8°²@+l[a”Òyã ¯mel,FWë¿ ¯@iCaAûkîdÁ¯`ëù¡å¥“‰{>‚¡é\<À|Öhõ)•£‰´pðè8oþ §:ƒÌÆ2.®æ–^àÕ×À‚E_Äv…à$Ÿ[€QA|9Óð» ™%`[ÖÄÏÈ 8xñQúG‡iè*ä£ÖÉ$úÀ‡MK‚tvžFA<\;…cJ/¸¹é˜¬æÚ€#`\ä‰u3xý™[¸-ç:ÐWàyCssÀL€Èr°µžÊþ¢0ÜWÌ´²¢Ñ!ζõ0»b=nâr@– "™ÊiŠd"d  ”zpëÝÖ”ÙŸã¹ý?a¸ç8E%³(»}-ÑûVòæð\È› öàhŒÁ¤ ƘÌÍ ¹\èîmÿ;×W×R²½‘žž$ížCc/D»Á燻>7üóOx¾YÌ)/£õbŒ`Ä i™˜ "ïÆÞ|¾ówË+ Ù…R1†ò|ðÕÂ8Ÿá¦w–óñogàí'ˆE™ÿåJÄKaR)D$ãHö¥Vd5ùK7ÐwxÏxëÀq_ÚL͉í¬kßGÕÇÏÒsh%GëÒÐpˆmO­àµ_=ÃÒêù$“ ÊEÙA,w à`i4 ²š÷Pö” G÷Føó¿àƒ¡%ÇAƒ·æNHáØ¥å%Ô¥/PPˆƒåLBÛyXnˆähÜt·½ßó<¿ß{¯€è¿„è ÿS‡kÛàcÛàTã i†ã$Ƀ¬üôFL*‰¾!¾úä s™ÚKmMüæšy;Xv©B*+QJcJ”aqW+%‘ÙÝf¯+5?/däºCœŒ¹¤ÑDôO\¦ö 4,Ý£ ÅßWºÍF¹f.€…; ž8Í|‹•uáò¼J{ï„Û$²³¯™‡3—G4ýLRI,·Ìn k hZ£^6€Ž ç y’˜7àÅQ+¯W¹ÍZsÏ@ì›Ùg˜›ëg¡ôǃ¢^Ô¶4ÌÎc€žÞÀ@’8ÐçæTÃ0÷ƒId9½úz•ÝŒø»zSRºöµÈrÍ?ÙšQn‘…~”x€=ÐÍÐvåûV ¹ßÖ=pæ§Mm‘&s?*2‹÷BiM2w¢ÒÜ9¼„Dd,ÙŽPk4OÉÆþ‘À z¯Eï YØ.˜·HÌ6Vç²=Àœ4’!!ËÅÀ°yÌ ÉŒ f’\|š²njЦ²>fî©u‡6Z ;ée©Ni (µÕ 0Ø– ,I9På17¡2Dž¡L?R\½«æne8I„Ïg.F‘Œs8°8§Na7uMX¾uƒj°ïÏ,Ýô¢Ö6„þÒ[÷$ é°rûÙ—ÝŒ¾ÖúgÍÌNÚ¦zu){.|¬8V\½#Ÿþ¼©ˆ]< P‘´G¨1‡ÙˆßXZ-öˆ¼Ë5‰Ü¢ÃßIpÖhó¥÷3ŸdðªYÏ^.[}á™ÿ ‹|SÅ9]ó¼†ÎA>äKXVZÆr¦þ¢ÏÂõOwç=ª]wf똑¥ÀHæÆ†$¦³Ž|³²ÎÅoUŸßĵD³W›sÐ%¥<Ö1u¿Ó ƒÅzrô­»¸)% Üì¸À¢ •m:öHrJ´'~"ºC»³a¸ãüi‡ ^f±Ùœ `âJ`4ó`M;<ù½‘5(*ô-½õæêÅÉ¿¶ <ç$0xìì;¬e/¨Ò¢ÿH¯¤ˆ”“Ï¢wÒCQÐÿЄ e'í!û„ ‰–*›ªz¾Õèq>»õéBeݪ3$Ï º¯§ ì1mq‰`˜™•…‰¾4°ò¿âšÿ$–/¹Ÿ„ Ä~XgŽP´‰¦Þ¨.á%›?ªM`òÓX,uAµ¶±ýEÞ­Þ‰ŽšJ•Á½ßâ迬lÁ£ÚT*ÆlLÝL;i©»k<‰L$&HžÖõf„Qáýœ/bßr®—¾)Øœíâà÷`û)eÝVfàÄ ¾C×îWíP•‡ï¶ÔWÄ·‚$!7w’ÞÏ<_Z£ %ì”i´Òiõk5FÒc¶·ÑtZËÙ±ýàû„âm)éÊÙ¶ò#W€œ"`Ý®sUZ†¶9¼7Hu}èÔèØs u„…“ô^2פ“ÄÎ_ZêÊذSÌÂ^Ï/4ãèûÞR+‘)*òn…wŸØònýFÊU*¨}„„zM}/æ)_q¦´:ù"B¯g2Sîl×ñ´Äš›ûsrfžø07…4Ø¿[$ÑŠŠÂ;@eíg1ù÷ïÛtÇ{?~dº kÛjÙÍ'‰ ñÙ¥ÕQlÓù|[?†s2‡›ÛZ¶-»åÀùú W3¢“@ÂÁgYÙ¹?”u1ë=ï¡o¥xÕ·"Ñ×õ 5Ãq mæ.MÞ—ÿDQ ¬âäŒcGErœ/`8ƒ938äŽ_ù8·$tL&®±š´øá¡³¥5Kì–(Á¦úŽ^áhß°7·ìR] 죻¯ÓsæI§‚ôðUàÒ­† ¼!¡ÑC_,ãO²ËÑk³*ýâªwé;™ß·y× ë=<ƒS®eå•Ô~Áª¶Þ“%ÉÇD3É›~ ›Ò—ÄÜ{,Ü|9`ùáÛ¡Ñ«+®¨˯¨£Î<)vßlç—o`1]Æ#Ÿï¾âÅ–$M™47Y‘Pv7 ŒÜI$L¦†“=)ÐÛèfKŒúÙÒ9À‚ð"u¯ÁrÆàõ‰ëŠI¾Éª•I¼p ,äÀPVlL dƒ¼ ’é{=]€Nc] `ˆ¥~6ÐVVÉpN¯E>|bˆÜÆ#ª,<¾¤*<˜º„ûfs‰ù”[ØG“©ÆÔ8&Æ÷qßP_ ï «`ä Ì¥EæNwÒ÷µª–-Ùq5&]SëM’ñô–¤#ü›’’p~:°|/°¾ØT$üøo¥ì+¨íÃ^Ì^ð]Æä¼ã«Zñ ä '¡êÈÄ’ªˆu$ cÕ$E¿m"Ùl ôt{È*¶TÕ„ÄîQ{,ˆ{¹.O³½„’gP ^kLkFÑ*E,í#¿ÇðKþކ1¿øˆÐz^rϘ ±i75óéµS`I™­Y±4±bå`W)°­@U3Æ#ôA_Ó‰W;ôZ¬Ó®ûN6Ú±µ»J4‰ù´$‘}TcUšú™‘µçí:òÄÔ²ß -gmêÒßb¼¸(´˜Xð ÿÔŠØ-šZ/%½åA+úi¿ ðHa9@Ê1 ûôZYè†Gñ—ôóyv9áEŒc<ßÈôß2O>©Lšq|ãȤOº9ÏküJ 0«u§é›»e陹ȹÁ¶ùEä\Wn¦Ño;ÊnËw—$@ž ¬,ö”iûËžŽpö¿ß¡·I ƒ­!< s¢3ñYÿî^!)×wýH¶S1ZŸEÝBh·ê¸›×¸ V–Ë€+ù£—â”Úxœï…ð¤ëz붔˄rÛ ]ý-ƒ°ÁÖòÊÕÏ)·p–í+>oßc_—‰ÑõùUkâ°hÚ² ûÍd„‘XùžtøqW+¡ú0ÂX°àÜ®\`N(;Ûp\T]ëBRb»UJÉfmBéu*+É-»S;Q®¬îÔoD)Ä3‰!D놫U¸d¼XΤã8iïÔš;ùßo¡Ý:“?»mëعŸ¾r¦M¼SŽ‹UX}Õ“Öž”n);<“’眺Q#J~’‡•„ƒXu â†÷©<æBñe6({`çQõ3G/eµx6˜0$>¨K` f+ëgz$•°g‡O¡ÿ>”,’3AòµY'žŒ$y»nð`$1–hߨ Ehîô¼²»…* ÿ0/r‹ZTMHÜ–ø¢nâ„rŠÙÜlvLÂ’OåxyÓ³öFòVpìF ´R»•nޏ<¬ˆ6‘ »ÃÃ?YUþ pú*÷ÄÒ­DßW^H\H ïÇŠÝí¾˜Á¥1—ÍLU¢8fk êÉÛwTÈË ÖŠÙ¿¼r§ &°óPéMMy%É£¶>É…~/œ(¢Dq\AœíÅl¶e\£ÑìܵÜl™—¸R³N>î=dÂQ¶Ý<Åì} `¼9qE·J*4µÎ²÷ºZ—‹#êLt$š7k_ ÷1Ñ*íWyîk&&ÑFl°¿C›&žjµê–‹DÒ’xï%Iþû¯·ÿŒÞ&ÐþÆm_Qª–$IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/exportpdf.png0000644000076500000240000000204312613140041025332 0ustar philstaff00000000000000‰PNG  IHDRàw=øsBIT|dˆtEXtSoftwarewww.inkscape.org›î<µIDATHǵ–ML\UÇo¾‡¦ƒ ´` %ND V£M´5RÆ`ýXƒ,HŒ1vá®nMw.ºkº¨Ä˜6³nXØ&e#¦¸€¨i-¥ª|ÚóÁ›÷î½Çņ@‰ÜÅ{÷Þ—{~÷œÿ9÷>KDØËæc[`­óâ§çûö§ö}]D˜}ðt²”Ý™ñK‰ÊWß8_,Ú…¦?<3^8Ð8óÍço·ß™Î’»:ÅËwßÕNiÿ„ºW;Ÿª ûþã{àx „ÿœ^áîÌ Ë¿Þ¤yôÚ®¿Y/ÐØÆhM<Jýÿ­ÑÚ [i°¹ÅZZxwlŒâì,.P×ÙIñchÛæçîn^ÏdðG£ä''¹ÑÓƒˆ µAk½&Ì“sCCŒ>Ík—/S˜šb¤·—x[‡ûûé룴´Tv@0F{Ùaš6uuñÆà ÷.^¬Ì§§ ××Ðyö,‡Nª„H)Rzë4Ý΃==ìäIé4õGòèÖ-êŽa¤¯cÛž}‘ @‚;‘›Ë1ýze¼8ÓJ.WD‹)¼oÆD Z{BƒÄX‚r J)„Ѐ ;º}sœÚæ£ãñY‚ƒ1¥4Fk”Ö(W1ÿh•Ûsµ©zü=C$ÆuÕÖ•,åbÑÚ¥&¥9)¼”®ã‡¹úÓ5Dà˯¾àùŽvÇÁ))š~Æ ‡53óﮫp]UUhÍ™`ŒxçŠ1Øv‰¹¹yîMÜàáòC ù<ŽãP*•°íZG+áõîö…&Æ`´ñÊ^lÛ.§]9[ìUòù<¶]¶mlÛÆèpy­T<ØxKÖ»V4ìC¯ÔµÑ ·µòV×›cˆÅbd³+ã««6Ú¤Ö+ÙuQ®ªöÀ², °:>ø®tô¯ÁýM©D! 4,amnOíàÔÔÑéØJ!«"Ä"•FSµ%ä«òÞðgÆ| ¥ïY|á@€0éoéì¾±³µ¶ÞÔÖsÊó•t½Ú“­µÇêÏD,S²¸ÖÛ<ø‰«~† ”Ús?¹s^­´~.;T½í<ª‚ôúc© @b:¡™9ûPÝêáAÀŠÌ÷=/sòP¤€$`.ÒÝÆÙIпN¼û\‡Ýz¡ƒë ÀàÑhCCOYYÙæÂå+¬'}€v`Ž¢|\.ä¶Móé´œm µµŽŽŽ!ììeÍ"PH@¡a3Ä¥®‹€D9µÐty$‹>⨠ ÔÍVI–_6…Ò’™(ÐЬÃò(€¼EB#D¶ËùüÛEÒY¼*øD”cQZ[‘•̘”‘ôˈ‚$ FÎ&•Ë„,Ç"Gw¯™ËB~I'· _%'ÙÕ³(*‰ÂÐî€q$‹Œ@Ε¥BêX TS®È¾`”£«H"ðAŽë8ÇêêFé!0ÐL-Øxl-Œ1ûa‚Ñ‘÷þ³Á¯ó?7™Ñƒ.yh@ĪŒ@£’ ¤–Œ¿¸Í›Ñqèõò·©5&à ðXÔq8@cP°ÄÈÀc†î;ã“rab‘wZ0LËͰ·Aÿ*ºšÅµä7ç·ùcÃ(0Ì¿ö«Ë]zA?™=-Dú½æü~€ÂýûÆ“‚2,ÌIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/fileopen.png0000644000076500000240000000317612613140041025130 0ustar philstaff00000000000000‰PNG  IHDRàw=øEIDATH‰•{l•wÇ?¿sÞsëåœ^à@i»²^(åEcƒÉÇ`[48cf"ScD75&ÆfH4&j6]0dqÈ(Ä®`iY¡á:*ÔõµÐÓ;½žë{ù½ïûó4¨˜Ì=ÉóïçóäûÇóJ)>ɼýCQ\QÚ>»lÉ÷•ëè#±ÎW¶»m_ÝÄÒ´Åà¦WÕ8€öÿ‚ÿð#*)`ë²úµß©¨{n]Qq-®'HvòÙŸoy²¸/Sðä Ádã~!Ä×”Ròc „âøÖÕVE_™¿bÇ3Ñyk|"yÌÝè¼ÅŒû¿¸<¿þÅ啵ŸæÆáó@†€‡ :ÞŠÀê]*Ðøš¨<óFñ7ËnúVÙ‚ó½Ù>ìá&FÆ§éŸ #‹ÊYõì.‘rêw†­.Àû_ýä+Â÷Ä"žˆÎ_¾Só‡ š~&öù|bVͪ­¯”Õl©Êõù±îµŸ™äƤsÖ2oÅç¨^°\‰âwÙ­—œ ”R!ı×X8+:{wŲ/Íž·:(¬â‰a݈h‘H‰OM_ef¢Á)A_ºŠê•/PZµ„p®]×QÊ‹+¼t¿»f|øïWýÂТò¢õ—b¥Ç^[Q÷ôž’Û#Ak•º‰GÓ EÙ:úÌwFR fJ ”mfyýB¹!\ÛBJ‰ëzI&'éÚÑ{P.\¿CËVˆ ïìŠi‘¢’×£n®dÁ¶ oE9:o)%¶cb2ÉµÑ ž9Û¨{l3%%Q¤e`Y¤í`w{šéî8FmÅÖïØëó㤧S("³4×Wå÷y‚é¡vBž›‹aZ$Ò:×Ò9Q½þÊÊ+ñ #›ÆQË´è¢ãôï@ùøÌÓ[©®Š “íLܼð½7iÊu=BÙ8.Xʃ--îŒô§Ê©XñVÖ,!à÷"-CJlW#>ÕÏÕÓûéaéŠÇÙ°¾ך"k$ž=‘õË-ƒï_á= ÀU`I…aY Œ&¹ë>ÅÆçv’Ò¶ÄÐM,ÛÁ4,®w¼ÃZ)-«á¥—¿M$4ÄÌÐqFFÞÁðb®´LïkËüêò-º5Wm;R’Œgh»<ʆ/Š‚pl&ƒã€aZ õ]àêÙø}A>»y ÕµÅècçè¿ôl^üy•LuÈßzn´]¾ÅI`R³mKÚ$“&}ýSdÄ\ò ¢˜¦Ä²=L uÑy±øø]V?¾™5õ•ÙÇHw™¬Ä´$Ž# †ËHÞKÐð—¶ž½-ütM: ô‰§LzoßC›³„pd‰øçÿHìú9©x„Ï}7Áa‡‰ÇduÛ–d2)ü¡B„˜ËЕ·õ½'õߘ’»@R)¥4i) COÄî,]TPïø1Ÿ`Ûö—)-ÏAnb,6B:c‘H&@¹h¾ ¾ÜrrrKé?w‚3WcG“:íÀ”RÊÐLé’Ñ%“Óo 9¥5œjÚǾ^v÷”äõ0ÔÙM6›A Û–X†7'J~þ£ˆ‰1šßû}æPûôÉ‹·ù5p0ÿù~4ÝR]25caÆ6¦é¸ô›žZÅè­#dÃùHÛÁ4M\WÇ£å]ŽÏÒÓÖèì?ÖÛû×eMZ€~ ¥(Í0\TV’Ò]$~®œo`Au1³‚#DÂa’É8®ò —ãŒv~¨ÚÚ/¾ÙlÉÒ ÜÆîèfX ×8ÊO*™ ¶j. +yADZqE0RŽ…˜£œiiHý¶9uêÖzïƒgC=¤5G«ÊLSVh±¬®€ˆá’6 ¯¨st”Á®F÷÷:NߤÁ’\†€)@ÿÏ«ÿMð{ÉÉÑ( ,]Y›î!/ZŽí™G "v¶…#ÍWœuަLŽ1`H+¥äÿÿKŸœì–Ùî•u«Ÿ/4¬ëDŠJæÔ’ˆõÒrâÔô»ç³­Ý®Ý#˜‹ã¡‚·šÜ?W‹‹ís+7NÒÑtÐzýÈÀ¹ÎšLÉY`˜¾‡ûqÀÎü¹E<ÿÖ÷ò®7þt‘úÒº`W®Ÿ=ÀF (4¥Ÿdÿ8¤n_UI‚ùIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/fileprint.png0000644000076500000240000000266012613140041025320 0ustar philstaff00000000000000‰PNG  IHDRàw=øwIDATHÇ•U{LSwþ -}ð”gy­a !ñ1Ü&á$NÄ-‹ÑG2—˜-fΗ‘hØöÇþqL·¸d™dfYŒÉŒÿ L÷À)ãý¨´´½mo{wÎ :us'=ùÝ{{ï÷óïw¯JQ”–í…_öi²s >ŽzB‘Ÿ›|Wòø‹dÙ'[̉¯ì[¡ Ñê½nÕÔÖª— &gú†ð¸Á6ìGYÙ»ØRµÿ¤òñÕ‰…Ký_€šRŧªúc—ƒrÚµ”V÷<—ÒdZùÍãâÍ/L | _QwkpÓ‰MZÊ»N`Lš¿sSÕë•´¤?6ArÂS0%d#Þ¸}×Z¿ÿý×9¸|€Ë 8¡ªT?w´_¶ÎÑ¡ƒÔsx—rŽH&ü@VA!=¥}N¯‹^‹ÊÊJ>|²,/H¾Ü1žY»Qüá'™ÈšÏ~Û±ñ­’]2 ûãan:Ÿ$ª?<üÉ‚0ý8ÒÌðRq î÷û „ê¡Võcë‹H¯¤4Ýøt§j'íÀðpk ø™/ëýÚž–$i·Çãy$øb|ÝïW’eù®šõ_ªF%X‡uˆ0æDÀ@U난T‘ jºñ…·_…,ýñ鉆“1DòÉ;Å•(p­¥å"‘x“NŸf†À5gCϵ.H#^Øe7‚x&’„  -nÝŽ€Å’ãÇ×NOO×¶µµÝ$¢ÕôàÌC0æ;TÙÜü"ÃCA ³³’Û cl<" Ñj`0hàqû±jõjáœññqddddFDDL:t¨€ ¯ÝG@ÀEÙÙÙ_íÚõF–Ëå„Ãá€äñ¢»÷:,™Y($װΡ¡¡ˆ‰‰¡æ·ÍfUOÃWaddÛ¶mc²Îúúú¸@'‚À`0|X]]•‘aÁðð04 t:rrrÐßßøøxqcrrV«Ut7;; §ÓIŽ ‡ÙlFZZÊË˃›šš>Ÿ˜˜ØºH@0¸>fÞ™™™hmm…ÑhvT«ÕÂ1TË"ŽN$§×{®ãÎí;ü|>A¹ A066¦Ð°@] 55QQQ íëõz’6AL:ƒ­9::ŠÞÞ^Øív:ÃðЦ¬3ˆ‹‰C0Ô´ƒ ãzü•——WÄrœ9sFfee!%%E0wÃ:³4ÕœfAîÊ\\Œ<{·>·ƒ·¨_¸ÝîÉÉÉ())3 »‡5-..FWWÄðY&­V‹0rTnn.–/_ŽèÈh8=¨œ¯Á™¬B“rî~›G²±±±¨©©Áàà º»»ÑÐÐ *‹‹i2™ÀÅ0ëÏ]ôôü‚S §ðRIâ’°K6ÿBŠ &Ο?5kÖ,2§§§ ¾ÖÜÜB2i)æ0==‰«W¯ ¹Ü¼GÈU¯T"11Q¸oÙ2‹‘æ"LÛŒ}Më:Ò¼±®®.‘‡Ø€lÇ .itº9ò Ü%†’’Š„„Däç磢¢‚•€_ñ#/7ÏÞ××÷‘IEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/filesave.png0000644000076500000240000000226512613140041025123 0ustar philstaff00000000000000‰PNG  IHDRàw=ø|IDATx^µ”ÝkÕÆ?çefg_ònÒ´iÁ7ê âMôÎK¡ˆ‚HAè•z!½ôÇïðFôRðÒK[-ŠŠB¬(ÁhmÚ›”&mš¶I7Mšînvgwgwfgæ8=„°¡€àÏÎ~™™çó=ß93ÂÃ)ÍŽ¦§O¿æ 0GAòï$IVâ¸ûË•+g"̛ͮï}ô¿“zø‘üŹY¹ð׌èvšB"„ý)D߉v]¦žx–'_<Áøäaægç^šûì‹ãÀ%à^€ãÎð˜÷kY鯿<Çï¾ÊãG'‘Rb#R$ÂÖ¤RØÚ)pæÒ&ß.kô?hà04vƘf¥ê§76óÔ·}=EÁôâ‰DkYÙôziš Rç*¢ÅŸñ^c Œ“$éE@Pš>I EGÚ€Òà…b‘8ŽÉî°¡JÙpëîñ__ÿû<°t÷î"­*‘e7çÚ]bßd¥®«³0;g‚ 4õzÀýû jµëë•öÊÒ¹jué"pØÂ~€t]!·ÊË$þZMóö;oÑjvM»ÝãêÕM®©V[a¥RókµÚ¦ï×Ö}ÿÞjµZ^]\¼|ǘ´ÜÊ@Ëdê˜Öü…+͹ó3Åòê¦ù°|6*òa‡ÕV«±áû•r¥²¾V.__«VïÖ€.Ђ>·€&˜L{¶iw¾úäý7!tÃÞveùêìÆööê]cÒèô9°µÐësLf¼«>À™ï€?@6xçq˜ÉÈ,þÑOˆ–xÿQIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/textbold.png0000644000076500000240000000215612613140041025151 0ustar philstaff00000000000000‰PNG  IHDRàw=ø5IDATHǵ•L”uǯZ­åŠ-gšþQ6ÄĤ, EK׬.ÅÊj+•QÔ(D eœüˆ@eÒ‰œ`Ê“pHü~àP~(äá‘G‡6®¨£Ñ®vÛýáöîýÝu ƒs«?Þ{öìûy>¯ÏÏç« ø?5áeå†ý TÏmHC½G͘@£À݇´¦ëBׯã(p•ø 0ý ýá<¢~°mVû§dKèú½å¡ë’"¦Ì{sW¾!O+[ćW~:. ]|~Ä™PUÇà˜€÷ÂN¦ýk›3{^Ùæ§P(îp[¢À°í„Åì~ã£jU™li§óæï)ŸgºG|ƒÖž_¨<æÿR´6)O2÷ <ëù 8Ù`}öÕ*îu ta°tõ/ÆÔš:nM´›ì“²eaàëE<QÎYùieíe«½ÅÄ ™ 3}áÙ<·€ñý=ßV(—-¾Á‘¹tð°Y•’¬ÖF¯õ âÒÏÀ†¸|Ã\oÿUãËä°3CkjeúµýÌ‚Qvr\ÚTê‡muF'@ÃqsydâEžPwM ØA@S—ú¹ džøÀse£m1;Ïij ª{dQPDÏ{”AlºÖTÇô+{€³½@Z‰lqÍÿ'¹’ùt§Õ^Íìj8Þ08æ·bc£×¬G¶Òùlz°€¦_vÒ èXNK›ÙÎéѱ,g¾ãèJƒcËÖ&v.Y_LçS÷xˆ9 5U€’v ´(ª¶¥kdKÆ §ÎöÙR¿òM¿ãf|Žd O}òùw½<l#à4ë_ÔJ³Ø_,[¼—¾\±è¹ðÑ‹ð›SK b§.±TÌH¬Üs€YÜ=-`+åü°°‰5¾gÂ9?öž9×g!š£ öb=3e–:NÛšM™½?ö´·«Ñn¦iMšnÖ¸R¿š8¦B¡ë’ßß§–-Ge§]ùe`×aÉL»hWnѨ¹ª8Ò|V: þ¤)|Ù dÕ2Ó. Ž€Ï„ÅÓîþ)[Rµ¦B:N¯ft,Ó¾’[fqвÎsOt€†%}'Qmä6o¡ÝS”1™’9«Hù8ÄèŽMX´âîÎŽ°|é5@N£ØAÊ=zÚ¬týônyáĪ$sv՞Ψ’ HY4Ú›™•kÙö2£RÖ<›åɡʮ ôñ_£þ{îœtálú\k:ÇœÄÕWsƒó8¢*6/·…æ{%7ûÜu§*¸xÇ (¡ŠÚ¬váü‰eQUt¼šòš4¦â‰ؑoHbÓnGo'¨¼GZçû­*¤cñ'åŠÞí…³$ô­ QoO4gþS±tøå#;Þ¹Û ‡zP4ÓCͤîû·ã)7ù¿Ô_dù”yo³ØIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/textcenter.png0000644000076500000240000000116312613140041025506 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<IDATHÇÝTÝNQæÑ| e/5јxebÂX½áR´j©](©öÅ`i»ýÙ-Ûn‰P¹rwÎçÌœ£¬)ë…“3ÿßÙovÎÒ­Ûw<SxK¢¼K€r‹ð¢•ã¡T{ξ_!¼íõxPÖBö· wË„×m‹Õý ÷*`4_j%ÿùþ7,o¤·4W\€7]‹õ¡K’³Ì >Ÿ«lK¬Ú#½@mÀ¹‹—Ÿ2¼:p¿^‚méy P,E •ŸŒúï:óô#°ÁüúÌõãM§W;9–<£³E¯…„µv†G¾UçTjZåýZ€Ý#idÑàoô-6‡¬Ç˜«ßs‰¯ÖÍÔ~?’šRû'€b)*dÈÿd“wSÂÎØŠ+M`o ‡„gÆéflñ„7s+bžS¨ßŒ¡5%ñs¼X¥À¢™JŒ7;ü±h&OïŸé—0Ý™6x;ÿ³ç·ó¼—‰ˆþ§æ¼!êXN:Iç„ÒèK1Y%œyô70ò øð°:4ø ú°3&‰DîB[Ïg)ŒÅu¼E;òÓ®ÿ ôŒ:ôö‹Äu›lì|Gôérø ŽhW\šdç W÷$¦«Uºñ `ÒY€ã²ƒ$*¥EW¾|…W|赘ä™|CÓ5lŸÔ ü0ðTc²1s:K$m"­&- ˜Žê\¦Â¨ý ¨?f ”ë ?RC¦›I‹\î¢)€´@É[x2n:G€Œbμ!pß2_7¯6ä*)’ÖA É@€OÀ¡³yz75Éð\@5GV½^‘ÚMöɽIò^2Ÿ)w¡ƒæÁ~m;ÅóòÐØTµ™lAѧTd¾m¶üÄ\/äÌMF î è òjy‹8$¾ŒÌýbU\*zÑ7V¯j{("*rêݺ!_q˜|¦¾w[Öb²ÕöOº¨ÈTèXŠÌÝÓ‡õÿÊ…´5ôÛ'Ëy ¢¨éŸ‰½¨!óPÒ’yØ€I3ÆgÏCµP̬'êÉÜ®;Þªâ- Ц¨`ïì³h£™› ™¯gùp´-[û*ZSŠ\a\ë'¹Bo—Ó0I—K ÷”}cTÜü×@.h¨EŸ¬Ïäéi»ÞŒ8š)v k¥¥ÆÔ@S¥Sö¥@¥Öq6¬»_c»h™à'È®ä-ÓÊ™Rö_JËçÌ[‚ãdð p‹—¥nä¾ÂûàWݧi$=/åžcMµôÔ¢¼0~Ï•œoð=j—ð`¼ðd‡·8¹¡)¼øí#ÕÒüUíîI ®.ð2ÆA$Š‘ðuÂÖføR¯â@œƒ¤çM’ÄžB‚Ï»)àx¬·"¯!ra8Ü{š;Ìq·Ùž˜FaL܈[ Èt¹_j–ëkKÞé)S#½ùu©ÿƒp®D.N4šs¼wRîy¾Íøp: Glø\ y—„m…9½Â?ó|cŸN€Ó‘µwŽÒùVäuDnL5ŠC…ê9Œ¯P ‰Ëü³H\i»—6_b|6ðqÚ_˜\e"y›“º*÷ïÍîˆÜ¾"Ùˆg€·ß•1ÏBÕÆ5‡yÿkr€à5¯_~/Êòb|‰HU£aê•9/­?Ûs½ŽÈ£¿@óB¡Í½y—Úú©xãÖT¡3Ó«œ`Rß$ÞI­ºíaøþÕoòàZ›¢lÇ q®k‰?≸iÌ/cšmÛú.MâÞÌærü×®ïIäÿû'ê÷±DIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/textleft.png0000644000076500000240000000124112613140041025155 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<3IDATHÇÕUËnA̧ñ|ŠO!ˆBpàâRx„l Ø$ñcm’àøí]{ý¶;FïÎÕ3ˆdöàCkzªkºv»5=[7nÞNÐܘ,±%ÎaØ©¯Ë Ûå/O–pšš˜Â^ Hz©ˆ» òªŠÜÐ쓞=+ø»úO_#ÝÕÜF 7²Á»o•9à4î'-ñMEáq›\ãž¼:]"Õnm/‰QŒœßqÉ“àJ ÞˆÕþç$Ö ¸9ÖË©E8èï›MãSfK²Î)_™Uö»Õ{à£'±Ù¾mèZâH’)<ü!€€'À>æÔCSäi>‚ÛU8/JLÞÓÈ Ï‹ú ßiü›@¼%Ú¤›¼òÏLZ3òH¡~³ÖØ<ñ«müÊXß›Çýú¥a„/ƒÐÄjS‰Û³Âë,~õÆ_™lÌqÀQíÍ€Ú„c¡nýÆ™†Ãù/˜O½º&4Ïéó½¨Ê‡M-Þ2|…Üàº@¼%Ú´&'V^´ñ7À?W.€Î\Ûu&«õÛ3…îB›˜ðº–ïï-„«0¼\}éŒÀðRRµ–ÄÅŒ/øGD0×F4ÏQ!¾ˆ9b§“õ±–è;1Í6å-ÓIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/textright.png0000644000076500000240000000124512613140041025344 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<7IDATHÇÝT]oAíOógøSö±&ŸšýV_úh µˆPhi] ÆX °,lù°¬°3ÇsgÕú&ðP&÷ιwÎÙ½wî¬Ý¹»nq9+ZÖš8ûmõXˆ—ÇS¼=¥€XYáuUá~Ø>žÑ׸Sˆ{S&€L&ÿA\™üDãúìan#öâ5`§–D9(ûW'3ìºÉf„'’«):Eª%d!öh·?LÝeL8²? ¬¶DVºþ–üGÖ<g³¤‘a=3¬ûFŠ5­Î¬+<9ÒÍše?ÜÐìï)öFü=m|§÷­óŠ! ‘óå`ˆdm†,oLÖ‹ö™–6V°úéSmb™fdß@áëö5y…WÕúQ÷‡Ã J¬Ýs[Ãæ ä¼›¶ÂљĀPd<× ñ,ÏF¥~„Û…÷ô·J0ùÅžºî8î<à0ñˆd¥žF¡«I6C¾š˜í“„²$&#¸ìÅÿŽú¿XÿÏ$/ùÚZ#àxŸ€rŸ¯(Ÿì{U(à~Œð“î½ øòò©® 4š“ƒ6OÀ¿š$®‘°qN‘‘F•"å^DuÁÎQt¨Mž÷Öíkò¯­µ°îý+Àgm¾˜gŸYÓ Z'ÂZ#E\+û§>`Ÿº¼ ùV„—zq$лÒðÇ ‰Fw"ÊX!iÓ÷ÇŒO¢%ä¿ûÃ/¸Q`i%ú +…5~ü~JíIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/textunder.png0000644000076500000240000000171312613140041025344 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]IDATHǵ•]H“QÇW”–Rš¨)™’åW™šß¡”Úù±YYM]Œ”¤"ç4%ÃÈ›D»qXŠ7¡™ŠR~…Sgêt¶t:5§M ÊÂ{ñÂéyôéÜÜvÑàïÎùŸó?ÏsÎy‹ÂúŸ¬D^+tr€/høô|¦MŸçqÔ5ÈÕ÷©§þ‚Œ/¢øMÈäòÚù"EG$?ig±XVŒ¾Û´z­Áy‚¯>Ì­Å¦ÂØÂ|\A†‘ª iêWi®g—ÊÂÙÂ.¿¨´0Èþ_mØ×"UiÆ`1Ue?q¼_Tz…ƒ«O4h÷mÎ8ºûž÷ŽàäwöLSôÀB2òDrg r苎i#`ôVÞ‘·R2òEòáŠKôØ:yB{à°)‚`ø}*Š–.¬8ºâƒØØ¡« çä{¢fh ØB1hBË-›¬kÐ ƒó„ÜY ƒöÐGÍ€š¢1 ;©÷éˆ!E}"ž ¨‘Ì™iÐ1EÑb!éBã¨éž5Ó UIÑ3„¤™`€šÏ3f4+(ºu rM3hÿn¦AÓE·L’j‚j>M™iÐ4* áš`€šf¥ye•]*͇ Bî—Ô)=ü/=ØxÁt´ 9¯[¦ß€>àbf-è/kÿ…ú!œй™b` 7´ú­dq¥ö"1«TvöJ¶nª“NõÍÌ|Y§¬ÖPq¼âAkûx0°3j€%!,)7&©ì]Xy&Ϫ%óPÜúµÄòŠ¥Ø†}7"¹gp®Þkc™Ðk¿Àn`O@ܽÛÁñê…¢Ž¹òö™å:HÙ{ü~Z%™I/ò ¿Å08¨[¯ôMn ì‡mì\NÃEgbøáì<Ù:œ¼a¯ˆ”èç3“;aõ4ø¢¡3°+41§ò?ù4}ä¡ G/g)ü/ÜðN›ôJ]Å/š§„“3š(/H.ÛX p_(@±d:Ú1øà5è†2-ÚfÖhghÛ13ƘÞÁKõm+Ø€÷ÄhŠ l2nœ àŠpg8 œ™§O.Pw“ÿn8üã IÛIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/images/win/zoomin.png0000644000076500000240000000227012613140041024634 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<JIDATHÇÅVaL[eýl2Ói e$K7VZгÒN¥BqCÀµ”æBªc£ccÙY·¦£ˆa )²Í)fº„ÚŠ‰Ô)C3 ¥P×jWJ#ÄlQY”1»øÃn»Þ»¼EÔ3µÉÉK_ß½çûÎ=ç}eÀþM°ÿ?1…J¥2(Š#<ïeü¾QŒP"â¼D€ŸR©´²®®îãþþþKçF0¼5>>~Õf³ùL&“]"‘9¢û—"º[óô²²²w‡?€Óé„¶¶60›ÍÐÑÑàõzÁb± ;ñùÄÊH$[95ýÞívƒé•Úßò÷¯4 kß¶ÂÖº7C»Í?wZ? ãnÀj³]Ñh4¬ËŒDò'ÍIZ95/=\sõéC¯O¥4wYL°ØÍÀVg‚¬Ù2ó‰®éö¾³ “““P__?#ê°^Lr-E  ÍIZ95—ýÀ©>Õçyv[%<_V Ï óÌàÌ£m_–xÖ7<>îîî†ÜÜÜA¬ÏGDýu‹ ìv»—4×TüQÔðþhq§ã+ã9Ÿ÷Å}G`»¡JM'áÀÈÌEyÿ³d«{àÔ¹ñHª’’’ ÖW!b+"ìEiæi JCý4‹QÂÆ¬rx®¨¶è^ƒ¬—!§¼2t À⠭ɃÃn¯ÏçƒŠŠŠkXÿB€àG"0¡o’[äµo¹Yl¬L*†˜”ݰ>Û¢¬Ûb„(Å^`IÛ%ê`kï×秦¦ˆà&ÖGD"Øçr¹æÉŠªWÍÓ4P–PlÃN„þ<†Òu'ÔŒ/øý~Ðjµ´ƒ£ˆă‘Š)DäóЦֹ¤c=CÂ÷¾Ú~c"\±‰$zÛCʱ_zžšûÔêùö29 ÓN3¨^nJJ(…ˆ|^|Òz1þ„˵öôåI¶5’,z}M™·ÇfÝž©@¸¥¥d2ÙÖïXnqJ(9£½opAßõ¹?±ýÂ,.ØzÝí]$;æÔ¼×íûuxxÔjõBttô¬ß¼œ‹x´ Š?%”¶N>'+’[h ¤9ÉâñÂÔ\¿k×­ôôôëX׋ °É#æ€#¡WÅŸJ!¢ÝÉ-4P"&Yð™¥RJMM…ü4áõƒÛ6\ÁÚ”è¥xÜ;%“âO ¥‘ÏÉŠä(i޲œæóùάÇãoÔä%Â;{R V'»Dn\Lr··é1ÿ*.DÇ9+Vs͸±ÑMkW…*7­ƒ¦")tT¥AãŽ'f“D:xœ\QÜàœ¸«€»/G’óÙ¢GBÆl!˜K’¡ëP:4韼M²ì‘É­ ë‘¿)DÜ•ÏݧßÅHÒ¯®ú®Z-‚ÖR9ìш}x_{ÏÎdޤ[#~x6/y55/G߬Íf»a0Ü%%%ÆØØX Ktï|Dwj.U©T›L&×ë…¨««ƒššÐét088.— ššš|999 x}:bq(’¿Ý95·X­ß1 %o–ÿš¹C3]y8¨øPYÚ÷¯ì¯™lÐÄi@o0\—ËåMX—ŠäOš“,tçÔ|Ë޲Ͽ5œt°Á·©ÞôËæV3([-³ ›F_8Ú8RßqÖïp8 ¢¢b”Çãi±^HrÍG &ÍIºsj.:ðÉ€ìx‡ScrLTž»8SØé˜N9Ý=º²®ë|~óY·Ù6liiŒŒŒn¬ÏD„ÿuйÙF£ÑEšË vÿ ¨EVLÛW3²òØ—=œGåÀnÎ*õx§†$ó¤±Ìâòx< P(h‚ˆhÄý¡ò(Däó‚êC4ÿÄÅ~¾áÇ~Á™€UаDŸ œfqÿOm4Þyù9 ÓN;(]h %”BD>Ïû@)ê¨Ýyꚃ÷©ˆ×<à .>X“,SFMÿãökkk!!!¡ë·.´ƒeJ(9£¾£Û¯nüÚS?t.J7n‹l˜tZ§¬ñ¦ 5ogÜ?›ÍfÉdþˆˆˆÓX¿v!qi Š?%”F'Ÿ“É-´PÒœdqz¼Aj®Þ¶mV*•Î`];‚Â& ™–„\éJ(…ˆ¦!+’[h¡DL²à5~‰DHNN†Ì5ü™]›V]ÇÚ”èù¸ì3%…âO ¥‘ÏÉŠäZ(i޲œ H}2êfÙÆøh{”¿”0NnœKr§§ém!ÿ"6DGX+–² ]w‡c]¹$Pøìr¨Î]ÑØ¿5ql.I¨÷—•+œ]µ`4{ä±çEHÒ·>ú¡€f=ÞSÆCc±ªÕOýN²à+“%ZDÖ#SˆØc{ž~"IgÉÕR™mÁv¹ÐçwíÌ’´È…ŽmŒ„šç#¸«/}vg¤½âvóÿä_Åo&MîðÃuIEND®B`‚PyQt-gpl-5.5.1/examples/richtext/textedit/textedit.py0000755000076500000240000005770212613140041022772 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import QFile, QFileInfo, Qt, QTextCodec from PyQt5.QtGui import (QFont, QFontDatabase, QFontInfo, QIcon, QKeySequence, QPixmap, QTextBlockFormat, QTextCharFormat, QTextCursor, QTextDocumentWriter, QTextListFormat) from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QColorDialog, QComboBox, QFileDialog, QFontComboBox, QMainWindow, QMenu, QMessageBox, QTextEdit, QToolBar) from PyQt5.QtPrintSupport import QPrintDialog, QPrinter, QPrintPreviewDialog import textedit_rc if sys.platform.startswith('darwin'): rsrcPath = ":/images/mac" else: rsrcPath = ":/images/win" class TextEdit(QMainWindow): def __init__(self, fileName=None, parent=None): super(TextEdit, self).__init__(parent) self.setWindowIcon(QIcon(':/images/logo.png')) self.setToolButtonStyle(Qt.ToolButtonFollowStyle) self.setupFileActions() self.setupEditActions() self.setupTextActions() helpMenu = QMenu("Help", self) self.menuBar().addMenu(helpMenu) helpMenu.addAction("About", self.about) helpMenu.addAction("About &Qt", QApplication.instance().aboutQt) self.textEdit = QTextEdit(self) self.textEdit.currentCharFormatChanged.connect( self.currentCharFormatChanged) self.textEdit.cursorPositionChanged.connect(self.cursorPositionChanged) self.setCentralWidget(self.textEdit) self.textEdit.setFocus() self.setCurrentFileName() self.fontChanged(self.textEdit.font()) self.colorChanged(self.textEdit.textColor()) self.alignmentChanged(self.textEdit.alignment()) self.textEdit.document().modificationChanged.connect( self.actionSave.setEnabled) self.textEdit.document().modificationChanged.connect( self.setWindowModified) self.textEdit.document().undoAvailable.connect( self.actionUndo.setEnabled) self.textEdit.document().redoAvailable.connect( self.actionRedo.setEnabled) self.setWindowModified(self.textEdit.document().isModified()) self.actionSave.setEnabled(self.textEdit.document().isModified()) self.actionUndo.setEnabled(self.textEdit.document().isUndoAvailable()) self.actionRedo.setEnabled(self.textEdit.document().isRedoAvailable()) self.actionUndo.triggered.connect(self.textEdit.undo) self.actionRedo.triggered.connect(self.textEdit.redo) self.actionCut.setEnabled(False) self.actionCopy.setEnabled(False) self.actionCut.triggered.connect(self.textEdit.cut) self.actionCopy.triggered.connect(self.textEdit.copy) self.actionPaste.triggered.connect(self.textEdit.paste) self.textEdit.copyAvailable.connect(self.actionCut.setEnabled) self.textEdit.copyAvailable.connect(self.actionCopy.setEnabled) QApplication.clipboard().dataChanged.connect(self.clipboardDataChanged) if fileName is None: fileName = ':/example.html' if not self.load(fileName): self.fileNew() def closeEvent(self, e): if self.maybeSave(): e.accept() else: e.ignore() def setupFileActions(self): tb = QToolBar(self) tb.setWindowTitle("File Actions") self.addToolBar(tb) menu = QMenu("&File", self) self.menuBar().addMenu(menu) self.actionNew = QAction( QIcon.fromTheme('document-new', QIcon(rsrcPath + '/filenew.png')), "&New", self, priority=QAction.LowPriority, shortcut=QKeySequence.New, triggered=self.fileNew) tb.addAction(self.actionNew) menu.addAction(self.actionNew) self.actionOpen = QAction( QIcon.fromTheme('document-open', QIcon(rsrcPath + '/fileopen.png')), "&Open...", self, shortcut=QKeySequence.Open, triggered=self.fileOpen) tb.addAction(self.actionOpen) menu.addAction(self.actionOpen) menu.addSeparator() self.actionSave = QAction( QIcon.fromTheme('document-save', QIcon(rsrcPath + '/filesave.png')), "&Save", self, shortcut=QKeySequence.Save, triggered=self.fileSave, enabled=False) tb.addAction(self.actionSave) menu.addAction(self.actionSave) self.actionSaveAs = QAction("Save &As...", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.SHIFT + Qt.Key_S, triggered=self.fileSaveAs) menu.addAction(self.actionSaveAs) menu.addSeparator() self.actionPrint = QAction( QIcon.fromTheme('document-print', QIcon(rsrcPath + '/fileprint.png')), "&Print...", self, priority=QAction.LowPriority, shortcut=QKeySequence.Print, triggered=self.filePrint) tb.addAction(self.actionPrint) menu.addAction(self.actionPrint) self.actionPrintPreview = QAction( QIcon.fromTheme('fileprint', QIcon(rsrcPath + '/fileprint.png')), "Print Preview...", self, shortcut=Qt.CTRL + Qt.SHIFT + Qt.Key_P, triggered=self.filePrintPreview) menu.addAction(self.actionPrintPreview) self.actionPrintPdf = QAction( QIcon.fromTheme('exportpdf', QIcon(rsrcPath + '/exportpdf.png')), "&Export PDF...", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_D, triggered=self.filePrintPdf) tb.addAction(self.actionPrintPdf) menu.addAction(self.actionPrintPdf) menu.addSeparator() self.actionQuit = QAction("&Quit", self, shortcut=QKeySequence.Quit, triggered=self.close) menu.addAction(self.actionQuit) def setupEditActions(self): tb = QToolBar(self) tb.setWindowTitle("Edit Actions") self.addToolBar(tb) menu = QMenu("&Edit", self) self.menuBar().addMenu(menu) self.actionUndo = QAction( QIcon.fromTheme('edit-undo', QIcon(rsrcPath + '/editundo.png')), "&Undo", self, shortcut=QKeySequence.Undo) tb.addAction(self.actionUndo) menu.addAction(self.actionUndo) self.actionRedo = QAction( QIcon.fromTheme('edit-redo', QIcon(rsrcPath + '/editredo.png')), "&Redo", self, priority=QAction.LowPriority, shortcut=QKeySequence.Redo) tb.addAction(self.actionRedo) menu.addAction(self.actionRedo) menu.addSeparator() self.actionCut = QAction( QIcon.fromTheme('edit-cut', QIcon(rsrcPath + '/editcut.png')), "Cu&t", self, priority=QAction.LowPriority, shortcut=QKeySequence.Cut) tb.addAction(self.actionCut) menu.addAction(self.actionCut) self.actionCopy = QAction( QIcon.fromTheme('edit-copy', QIcon(rsrcPath + '/editcopy.png')), "&Copy", self, priority=QAction.LowPriority, shortcut=QKeySequence.Copy) tb.addAction(self.actionCopy) menu.addAction(self.actionCopy) self.actionPaste = QAction( QIcon.fromTheme('edit-paste', QIcon(rsrcPath + '/editpaste.png')), "&Paste", self, priority=QAction.LowPriority, shortcut=QKeySequence.Paste, enabled=(len(QApplication.clipboard().text()) != 0)) tb.addAction(self.actionPaste) menu.addAction(self.actionPaste) def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction( QIcon.fromTheme('format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction( QIcon.fromTheme('format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction( QIcon.fromTheme('format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText( "%s" % (QApplication.font().pointSize()))) def load(self, f): if not QFile.exists(f): return False fh = QFile(f) if not fh.open(QFile.ReadOnly): return False data = fh.readAll() codec = QTextCodec.codecForHtml(data) unistr = codec.toUnicode(data) if Qt.mightBeRichText(unistr): self.textEdit.setHtml(unistr) else: self.textEdit.setPlainText(unistr) self.setCurrentFileName(f) return True def maybeSave(self): if not self.textEdit.document().isModified(): return True if self.fileName.startswith(':/'): return True ret = QMessageBox.warning(self, "Application", "The document has been modified.\n" "Do you want to save your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.fileSave() if ret == QMessageBox.Cancel: return False return True def setCurrentFileName(self, fileName=''): self.fileName = fileName self.textEdit.document().setModified(False) if not fileName: shownName = 'untitled.txt' else: shownName = QFileInfo(fileName).fileName() self.setWindowTitle(self.tr("%s[*] - %s" % (shownName, "Rich Text"))) self.setWindowModified(False) def fileNew(self): if self.maybeSave(): self.textEdit.clear() self.setCurrentFileName() def fileOpen(self): fn, _ = QFileDialog.getOpenFileName(self, "Open File...", None, "HTML-Files (*.htm *.html);;All Files (*)") if fn: self.load(fn) def fileSave(self): if not self.fileName: return self.fileSaveAs() writer = QTextDocumentWriter(self.fileName) success = writer.write(self.textEdit.document()) if success: self.textEdit.document().setModified(False) return success def fileSaveAs(self): fn, _ = QFileDialog.getSaveFileName(self, "Save as...", None, "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)") if not fn: return False lfn = fn.lower() if not lfn.endswith(('.odt', '.htm', '.html')): # The default. fn += '.odt' self.setCurrentFileName(fn) return self.fileSave() def filePrint(self): printer = QPrinter(QPrinter.HighResolution) dlg = QPrintDialog(printer, self) if self.textEdit.textCursor().hasSelection(): dlg.addEnabledOption(QPrintDialog.PrintSelection) dlg.setWindowTitle("Print Document") if dlg.exec_() == QPrintDialog.Accepted: self.textEdit.print_(printer) del dlg def filePrintPreview(self): printer = QPrinter(QPrinter.HighResolution) preview = QPrintPreviewDialog(printer, self) preview.paintRequested.connect(self.printPreview) preview.exec_() def printPreview(self, printer): self.textEdit.print_(printer) def filePrintPdf(self): fn, _ = QFileDialog.getSaveFileName(self, "Export PDF", None, "PDF files (*.pdf);;All Files (*)") if fn: if QFileInfo(fn).suffix().isEmpty(): fn += '.pdf' printer = QPrinter(QPrinter.HighResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(fn) self.textEdit.document().print_(printer) def textBold(self): fmt = QTextCharFormat() fmt.setFontWeight(self.actionTextBold.isChecked() and QFont.Bold or QFont.Normal) self.mergeFormatOnWordOrSelection(fmt) def textUnderline(self): fmt = QTextCharFormat() fmt.setFontUnderline(self.actionTextUnderline.isChecked()) self.mergeFormatOnWordOrSelection(fmt) def textItalic(self): fmt = QTextCharFormat() fmt.setFontItalic(self.actionTextItalic.isChecked()) self.mergeFormatOnWordOrSelection(fmt) def textFamily(self, family): fmt = QTextCharFormat() fmt.setFontFamily(family) self.mergeFormatOnWordOrSelection(fmt) def textSize(self, pointSize): pointSize = float(pointSize) if pointSize > 0: fmt = QTextCharFormat() fmt.setFontPointSize(pointSize) self.mergeFormatOnWordOrSelection(fmt) def textStyle(self, styleIndex): cursor = self.textEdit.textCursor() if styleIndex: styleDict = { 1: QTextListFormat.ListDisc, 2: QTextListFormat.ListCircle, 3: QTextListFormat.ListSquare, 4: QTextListFormat.ListDecimal, 5: QTextListFormat.ListLowerAlpha, 6: QTextListFormat.ListUpperAlpha, 7: QTextListFormat.ListLowerRoman, 8: QTextListFormat.ListUpperRoman, } style = styleDict.get(styleIndex, QTextListFormat.ListDisc) cursor.beginEditBlock() blockFmt = cursor.blockFormat() listFmt = QTextListFormat() if cursor.currentList(): listFmt = cursor.currentList().format() else: listFmt.setIndent(blockFmt.indent() + 1) blockFmt.setIndent(0) cursor.setBlockFormat(blockFmt) listFmt.setStyle(style) cursor.createList(listFmt) cursor.endEditBlock() else: bfmt = QTextBlockFormat() bfmt.setObjectIndex(-1) cursor.mergeBlockFormat(bfmt) def textColor(self): col = QColorDialog.getColor(self.textEdit.textColor(), self) if not col.isValid(): return fmt = QTextCharFormat() fmt.setForeground(col) self.mergeFormatOnWordOrSelection(fmt) self.colorChanged(col) def textAlign(self, action): if action == self.actionAlignLeft: self.textEdit.setAlignment(Qt.AlignLeft | Qt.AlignAbsolute) elif action == self.actionAlignCenter: self.textEdit.setAlignment(Qt.AlignHCenter) elif action == self.actionAlignRight: self.textEdit.setAlignment(Qt.AlignRight | Qt.AlignAbsolute) elif action == self.actionAlignJustify: self.textEdit.setAlignment(Qt.AlignJustify) def currentCharFormatChanged(self, format): self.fontChanged(format.font()) self.colorChanged(format.foreground().color()) def cursorPositionChanged(self): self.alignmentChanged(self.textEdit.alignment()) def clipboardDataChanged(self): self.actionPaste.setEnabled(len(QApplication.clipboard().text()) != 0) def about(self): QMessageBox.about(self, "About", "This example demonstrates Qt's rich text editing facilities " "in action, providing an example document for you to " "experiment with.") def mergeFormatOnWordOrSelection(self, format): cursor = self.textEdit.textCursor() if not cursor.hasSelection(): cursor.select(QTextCursor.WordUnderCursor) cursor.mergeCharFormat(format) self.textEdit.mergeCurrentCharFormat(format) def fontChanged(self, font): self.comboFont.setCurrentIndex( self.comboFont.findText(QFontInfo(font).family())) self.comboSize.setCurrentIndex( self.comboSize.findText("%s" % font.pointSize())) self.actionTextBold.setChecked(font.bold()) self.actionTextItalic.setChecked(font.italic()) self.actionTextUnderline.setChecked(font.underline()) def colorChanged(self, color): pix = QPixmap(16, 16) pix.fill(color) self.actionTextColor.setIcon(QIcon(pix)) def alignmentChanged(self, alignment): if alignment & Qt.AlignLeft: self.actionAlignLeft.setChecked(True) elif alignment & Qt.AlignHCenter: self.actionAlignCenter.setChecked(True) elif alignment & Qt.AlignRight: self.actionAlignRight.setChecked(True) elif alignment & Qt.AlignJustify: self.actionAlignJustify.setChecked(True) if __name__ == '__main__': app = QApplication(sys.argv) mainWindows = [] for fn in sys.argv[1:] or [None]: textEdit = TextEdit(fn) textEdit.resize(700, 800) textEdit.show() mainWindows.append(textEdit) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/richtext/textedit/textedit.qrc0000644000076500000240000000320112613140041023105 0ustar philstaff00000000000000 images/logo.png images/logo32.png images/mac/editcopy.png images/mac/editcut.png images/mac/editpaste.png images/mac/editredo.png images/mac/editundo.png images/mac/exportpdf.png images/mac/filenew.png images/mac/fileopen.png images/mac/fileprint.png images/mac/filesave.png images/mac/textbold.png images/mac/textcenter.png images/mac/textitalic.png images/mac/textjustify.png images/mac/textleft.png images/mac/textright.png images/mac/textunder.png images/mac/zoomin.png images/mac/zoomout.png images/win/editcopy.png images/win/editcut.png images/win/editpaste.png images/win/editredo.png images/win/editundo.png images/win/exportpdf.png images/win/filenew.png images/win/fileopen.png images/win/fileprint.png images/win/filesave.png images/win/textbold.png images/win/textcenter.png images/win/textitalic.png images/win/textjustify.png images/win/textleft.png images/win/textright.png images/win/textunder.png images/win/zoomin.png images/win/zoomout.png example.html PyQt-gpl-5.5.1/examples/richtext/textedit/textedit_rc.py0000644000076500000240000072022612613140041023451 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 17:46:46 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0a\x15\ \x00\ \x00\x38\x1d\x78\x9c\xdd\x5b\x5b\x73\xdb\xb8\x15\x7e\xcf\xaf\xc0\ \xb0\xd3\xc9\x43\x2d\x59\xb6\xb3\xd9\x8d\x6c\x79\x26\x63\x27\xbb\ \x99\x49\x9b\xcd\x46\x99\x9d\xf6\x0d\x02\x21\x11\x6b\x90\xa0\x01\ \xd0\x0a\xb7\xd3\xff\xde\x73\x0e\x40\x52\xb2\xe4\x58\x49\x9d\x98\ \x6a\x1e\x1c\x89\xc2\xe5\x5c\x3e\x9c\x1b\x0e\xcf\x32\x9f\xeb\xf3\ \xb3\x4c\xf2\xf4\xfc\x2c\x97\x9e\xb3\x82\xe7\x72\x92\x5c\x5b\x25\ \x32\x2f\x3f\xf9\x84\x09\x53\x78\x59\xf8\x49\x72\x94\xb0\xc3\x38\ \x28\xf3\xbe\x1c\xc8\xeb\x4a\xdd\x4c\x92\x8b\xf0\xfb\x60\x5a\x97\ \x72\x65\x34\x4e\x3e\xc4\xd5\x4f\x99\xc8\xb8\x75\xd2\x4f\x3e\x4e\ \x5f\x0f\x7e\xa2\x45\xbc\xf2\x5a\x9e\xbf\x9f\xc2\x98\x57\xa9\xf2\ \xec\x52\xe6\xa6\x70\xde\x72\xaf\x4c\x71\x76\x18\x7e\x3e\x73\xbe\ \xd6\x92\x79\x58\x37\x2e\x27\x9c\x4b\xce\x9f\x94\x07\x4c\x2b\xf6\ \x6f\xb6\xcc\x94\x97\x03\x57\x72\x21\xc7\xac\xb4\x72\xb0\xb4\xbc\ \x3c\x65\xff\x79\x72\x76\x48\x33\xcf\xcf\x0e\x03\x5f\x33\x93\xd6\ \x8c\x1e\x4d\x12\x36\x07\x02\x07\x4e\xfd\x29\xc7\x2f\x4a\x7f\x1a\ \xbe\x2e\xa5\x5a\x64\x7e\xfc\x6c\x34\x8a\x0f\x68\xf0\xb8\x30\x36\ \xe7\x40\x3f\xee\x3d\x48\xa5\x30\x81\x3e\x78\x5e\xc8\x53\x20\xe4\ \xac\x64\x5c\xab\x45\x31\x49\x04\xb0\x2c\x6d\xd2\x6e\x92\x73\xbb\ \x50\xc5\xc0\x9b\x72\x7c\x74\x5c\x7e\x3a\x6d\x1e\xcc\x8c\xf7\x26\ \x5f\x7f\xa6\xe5\xdc\x8f\x47\x2b\x0f\x2c\x11\x43\x4f\x06\xd7\x7e\ \x30\xd3\x46\x5c\x0d\x54\x91\xc2\x1e\xe3\x51\xa4\xa6\xf9\x0a\x83\ \x12\x10\x54\xc9\x8b\x2d\x0c\x1e\x8f\x6e\x73\xf8\x1c\x38\x4c\x3a\ \xb9\x83\xa0\x60\x26\xc8\xa9\x5c\x65\xe6\x8f\xca\x79\x35\xaf\xfb\ \xc6\xcd\xd1\x11\x70\x93\x9c\x4f\x33\xc9\x3a\xe0\x2c\x55\xba\x90\ \x9e\x29\xc7\x60\x0e\x4f\x6f\x78\x21\x64\xca\x24\xfc\x64\x2c\xf3\ \x19\xf7\xcc\x55\x65\x69\xac\x77\xb0\x12\x68\xd3\x7b\xf8\x19\xb1\ \x4d\x1b\x0f\xd9\x1b\xcf\x04\xcc\x9c\x49\x56\x39\xf8\xc5\x1b\x96\ \x2a\x57\x6a\x5e\xb3\x5f\xa6\x7f\x7f\x0b\x8b\xa6\xcc\xf8\x4c\xda\ \x30\x27\x35\xa2\xca\x81\xd2\xb8\x96\x83\xf9\xa8\xf7\x82\x6b\x5d\ \x1f\xac\x50\x05\x6b\x39\xd8\x3d\x12\x7a\xd9\xcc\x12\x9a\x3b\x47\ \x7b\x48\x27\xac\x82\x4d\x41\x82\x19\x0d\xcc\x40\x4a\x20\xbb\x1b\ \xa9\x81\x73\x5b\x09\x5f\x59\xc9\xcc\x9c\x49\xbe\xba\x2d\x92\x83\ \xa3\xb5\x59\xc6\xc1\x91\x29\x55\x2c\x70\x74\xc9\x2d\x5f\xc0\x21\ \xc8\xdc\xb0\x87\xaa\xdd\xd4\xe5\x9b\x39\xab\x4d\xc5\x38\xf0\x7a\ \xa3\xe4\x12\xb9\xf0\x19\xe8\xb2\x65\x58\x15\xc4\xef\x36\x48\xd0\ \x09\x55\x1e\x18\x13\xb0\x12\xee\x25\x3b\x44\x83\x84\x73\x73\x40\ \x8b\xa3\x7a\xf1\x97\x5b\x2b\x83\x16\xe4\xa7\x52\x1b\xd8\xfa\xbd\ \x7f\xea\x3a\x4c\xd0\x60\xa4\x64\x2e\x39\x6a\x01\x94\xfc\x3b\xe8\ \x87\xdf\x48\xa0\x46\xe8\x2a\x05\x98\x38\x93\x4b\xb0\x74\x39\xae\ \xe4\x90\x48\x52\x13\x28\x00\x89\x9d\x1b\x0d\xfa\xc1\x15\x9c\x14\ \x68\x2f\x48\xe5\xb2\x10\xa6\x02\xed\x48\x22\x2a\xec\x2e\xad\xc2\ \x15\x86\x8c\x35\x6a\xda\xa6\x96\xe7\xdf\x51\x2d\x3f\x6d\x37\x18\ \x77\x1e\xc9\xe7\xa4\xc6\xd7\x26\x62\xf3\xd7\x06\x7f\xec\x03\x8e\ \x75\x3d\x04\xe1\xbd\xf6\xa5\x3b\xc5\xad\xe5\x68\xd8\xf8\xdc\xc4\ \x2d\x52\x9b\x19\x9d\xee\x32\x35\x39\x3f\xf8\x82\x2d\x6e\x01\x3f\ \x7c\xd8\x75\x1b\x54\xd2\x4e\x5b\xdd\x76\x79\xac\x02\x11\x5a\xad\ \xc8\xf1\xb5\x9f\x77\x64\x8f\x9e\x84\x9f\x5d\xa0\x01\x0f\x65\x63\ \x68\xbf\x4a\xba\x70\xfa\xe0\xec\x8e\xff\x32\x82\x7f\x3f\xce\x61\ \x8f\xbc\xd2\x5e\xd1\xc3\x9d\xa9\xfa\x9f\x36\xe6\x1c\xb7\x8e\x96\ \x67\xb7\x0d\x87\x8c\x0e\xca\x9c\xe7\x4a\x2b\x70\x10\xae\x02\xa3\ \xc1\x3f\x07\x2f\x1a\x5a\x8f\x9f\x4e\xc1\x4e\xb8\xa7\x1b\x06\x74\ \x0b\xe6\x68\x24\xfb\x87\x5c\xb2\xdf\x4c\xce\x8b\x1d\x25\xf1\x79\ \x58\x34\x54\x5c\x80\x01\x53\xd2\xee\x44\x47\x1c\xbb\xe3\xfe\x08\ \x07\xae\x9d\x69\xfd\x70\xaa\x2c\xd8\x4e\x5d\x0f\xbf\xfe\x60\x44\ \xdf\x02\x10\x13\x92\xec\xb2\xa8\xac\x83\xa0\x00\xac\x35\x67\x56\ \x2e\x00\xd5\x68\xb1\x69\x56\x4a\x78\x3f\x08\xc3\x60\x2d\x6b\xb4\ \x6b\x7c\x8f\x37\x46\xb3\x19\x04\xb0\x10\x6b\x68\x8d\xb1\x6c\xb1\ \xc0\xa7\xb0\xc6\x5c\x03\x91\xcd\xda\x56\x36\x18\xdf\x0f\xdf\xdb\ \xda\x6a\xd7\x44\x40\x5d\x80\x04\x9a\xa0\xd8\x89\xf8\x47\x9f\x08\ \x9e\x13\x29\x18\x10\x2b\x32\x3d\x60\xb4\x7d\xf7\x35\xc4\xbf\xf8\ \x09\x24\x3c\xaf\x20\x1c\x62\x81\x5d\x25\xd3\xe1\x2d\x39\x3c\x66\ \xac\xbc\x29\x86\xfb\x43\x8b\xa9\xad\x83\xd6\x43\x78\x22\x03\x1f\ \x14\x44\x20\x7e\x30\x14\x20\x19\xe1\x21\x82\x70\x01\xd6\xa6\x51\ \x4d\x0c\x6a\x20\x0c\x80\xf8\xc1\x2c\x3b\x69\x82\xd5\x33\x95\x8f\ \x50\x6a\x43\x35\xd6\x27\xbc\xdc\xe3\xf3\xb7\x9c\xf8\xb7\xca\xf9\ \x3e\x3a\xfc\x1d\x48\xdf\xdd\x03\x3c\xa3\xf1\x97\x6a\x3e\x97\x74\ \xde\xaf\x60\x23\x87\x30\xd0\xc8\x7d\x73\x90\xda\x38\x11\x4c\x48\ \x17\x57\x36\xa1\x27\x04\x94\x1f\x3c\x80\x85\xdb\x94\xcd\xe0\xa8\ \x40\xfa\xb2\x36\xbb\x90\xce\xe3\x49\xaa\x1c\x02\x2e\x6d\xf7\x72\ \x75\x3e\x43\xbb\x04\xc7\x34\xc4\x9b\x21\x03\x88\x51\x27\x2e\x31\ \x66\x6b\xf2\xaf\x74\xc3\x13\xca\x09\x07\x34\x72\x61\x47\xc8\x35\ \x24\xd1\x77\x99\xe4\x6d\x9a\x1a\x7d\x73\xc8\x5d\x2a\x27\x5a\x36\ \x31\x29\x80\xd4\x5f\x09\x4c\xae\x82\x57\x98\xd3\x79\x2a\x63\xea\ \x83\x0c\x31\xe5\x65\xee\xd0\x4b\x68\x05\x5c\x57\x3a\xb0\x4d\x25\ \x03\xa1\xac\xd0\xf2\x4e\x11\x1c\xf7\x52\x04\x17\x91\xe8\x28\x84\ \xcd\xdc\x14\x53\x93\x4a\xb9\x0c\x1e\xfb\xa5\x94\x45\x90\x00\x22\ \x0d\x92\x0e\x69\x57\x64\x83\x86\x65\x53\x2a\xee\xba\x42\xc9\xde\ \x25\x95\x93\x5e\x4a\xe5\x43\x24\x3a\x4a\xa5\xb4\xe6\x46\xa5\x92\ \xfc\x38\x77\xa6\xe0\x33\x8d\x56\x99\x32\x71\xaf\x6e\x64\x14\x95\ \x70\x21\xd6\x24\x91\xde\x02\xc9\xf6\x54\xeb\xfb\xbb\x9f\x77\x36\ \x45\xbf\xb9\x6e\x01\x04\xb0\x85\x6e\x98\x7c\xf0\x2a\x04\xe8\x00\ \x20\xb7\x64\x73\x62\xa9\x0d\x38\xeb\x0c\x12\x96\xda\xb8\x00\x49\ \x6c\x60\x47\x16\x60\x7d\x20\x9a\x97\x01\x31\x21\x0e\x5f\x4a\x1a\ \x06\x63\x42\x29\x82\x82\x46\xfa\xe5\xa5\xe5\x33\x25\x58\x98\xd4\ \x45\x43\x8e\xe7\xc1\xd6\x74\x65\x8a\x71\x74\x5c\xe6\x9b\x9b\x9b\ \xd1\x83\x82\xea\x0d\xc6\x79\x69\x25\x42\xc9\x11\xa0\xf1\xa4\x7f\ \xc0\x7f\xef\xd9\xd4\x20\xe4\x23\x76\x8d\x0e\x82\xa6\xa3\xcc\xbf\ \xb5\x6d\x7b\x58\x79\x03\x2f\x2f\x9d\x03\x32\x79\xe1\x1f\x4c\xde\ \x0f\x4e\xe2\x25\x44\x70\x10\xd3\xda\x48\x61\x23\xeb\x97\xdf\xda\ \x62\x3e\x2c\x23\xaf\x21\x94\x67\xaf\x28\x02\xed\xa9\xa8\x2f\x4c\ \x5e\x9a\x02\x4d\xd6\x4b\x2b\xb0\x90\x4f\xb6\x64\x15\xe6\x7d\x3c\ \x8c\x6f\x83\xf7\xf5\xab\x74\x96\xab\xd0\x68\x2b\xb0\x03\x84\xcd\ \x58\xe6\xa5\xaf\x4f\xbf\xa3\x60\xb7\x24\x38\x77\x97\x16\xbf\x3b\ \x2d\xd3\x18\xa8\x86\x54\x9a\x57\xb0\x23\x38\xec\x10\xe1\x81\xab\ \xb2\xe8\xa3\x66\xe4\x0f\x55\xac\x0c\xa7\x29\x66\x94\x56\xe6\xe6\ \x46\xb6\xc1\xde\x4e\x29\x1b\x4c\xc5\xf8\xb9\x90\xcb\xb5\x3a\x2c\ \x25\x70\x33\x5c\x8d\x08\x69\x16\xc7\xa1\xf2\x53\x08\xaf\x68\x9f\ \x26\x71\xc3\xf1\x81\x2a\x17\x13\xb6\x8d\x7c\xed\xff\x48\xfd\x8f\ \x90\x6c\x7f\x2e\x31\x7b\x93\xf3\xc5\x46\x15\xf9\x91\x39\x79\xa0\ \x1c\xf2\x4d\x81\x05\x54\xa6\x88\xc3\x90\xec\xc4\xa8\x4f\xab\x2b\ \x09\xb8\x04\xf4\x72\x80\xb1\xa5\x1a\x01\x85\x7b\x5d\x68\xd7\x94\ \xa6\x9a\xeb\x0a\x63\x0f\x42\xcd\x46\xd6\x6c\x0e\x79\x00\x9c\xaf\ \x78\xaf\xe4\x2a\x6b\x4d\x55\xd0\x51\x88\x37\x5e\x61\xc7\xd5\x92\ \x9b\x93\x58\xc8\x0a\xf9\x6a\x1b\xe4\x2d\x79\x8d\xc5\xc9\x50\x18\ \xcb\xf9\x55\x38\x18\x90\x79\xba\x1a\xcf\x86\xa8\xe0\xb1\x30\x65\ \x1d\x02\xc9\x92\x43\xd2\x8a\x93\xf3\x21\xeb\x79\x11\x20\x42\x51\ \xe5\x0b\xe6\xac\x98\x24\xe3\xc3\xa0\x84\x43\x6d\x16\xe6\xe4\x78\ \x58\x16\x0b\xba\xa3\xbe\xd7\xca\x30\x34\x33\x64\x26\x62\x1d\x50\ \xb9\xa0\x4f\x36\xab\x99\x80\x31\x24\x33\x94\x4e\x0a\x56\x81\xca\ \x47\x60\x77\x2c\xa3\x6b\xcb\xa8\x9f\xdc\x40\xec\x4d\x55\x33\x8c\ \xc1\x5b\xa5\xc6\x5a\x65\xb7\x38\xcc\x81\x45\x33\xa3\x49\x93\xa9\ \x59\x16\xec\x43\xa6\xe6\xa1\xea\x14\x2a\x05\x64\xd9\x40\xdb\x4b\ \x76\x25\x6b\x30\x93\xff\x8c\x97\x5f\xf0\xbc\x40\x75\xe1\x26\xa8\ \x30\x58\x6b\x55\x67\x0a\x6f\xd9\x28\x61\x6a\x72\x08\x30\x62\xde\ \x85\xba\xc2\xca\x8d\xd9\x7e\x54\x35\xbf\xd4\xc2\x4c\x29\x9b\xea\ \x39\x6b\x0f\x64\x72\xba\x9b\x2d\x3a\xfc\x96\x4c\x0b\x21\x21\x54\ \x7e\x63\x6a\x79\xd0\x5c\x7c\xad\x5e\x82\xb6\x97\x15\x88\x2f\xca\ \xaa\x8d\xae\x72\xd8\x1d\x48\x80\x19\x04\xda\x95\xbb\x68\xc4\x37\ \x18\x13\x21\xb5\x8e\x99\x26\xd5\x45\x45\x68\xf2\x50\x45\xb8\x8e\ \x8f\x8b\xb8\x0d\x93\xb1\x4f\x1e\xb5\xcf\x44\x92\x42\x21\xb3\xc7\ \x22\x03\xf5\xef\xdc\x2a\xc1\x2f\x55\xea\xb3\x49\xf2\x62\xf4\xd7\ \x24\xe8\xaa\xe4\x02\xd4\x37\x49\x46\xe1\x7b\x19\x82\xa8\x49\xf2\ \x0c\xbb\x5d\xbc\xc5\x3f\xe9\x23\x45\x93\x49\x08\xb8\xce\x0e\x89\ \x82\x47\x24\x63\xcb\xb1\x5b\x3b\x96\x97\x58\x81\x33\x25\x5d\x10\ \x34\xc9\x7b\x8b\xee\xfe\x93\xff\xab\x35\x00\xe5\x3c\xc7\x63\x3c\ \x95\x22\x2b\xd4\x75\x25\xf7\x8c\x87\x9f\xf1\x2c\x62\x5e\xc1\x3e\ \x3a\x70\xb8\xd4\xa4\x33\xe7\x62\x0b\x1b\xf0\xc7\xf6\x00\xda\xf7\ \x31\xf4\x62\x3c\x1a\xb1\x01\x3b\x3a\xc2\xff\xb7\xa9\x02\x4d\x29\ \x3e\x9d\x24\x27\xbb\x36\xa6\x7d\xd7\x02\x1b\x86\x32\xf7\x47\x54\ \x90\x61\xef\xa9\x82\x82\x66\x40\x43\x27\x77\x69\xe8\xd1\x48\xff\ \x48\xd1\xe1\xfd\xc2\xbf\x86\x20\x5f\xae\xe6\xb6\x8f\x4f\xfa\xbb\ \xd9\x1f\x10\xfc\x0e\x8c\x55\x08\xe3\x94\xad\xda\xa6\x7e\x50\xf8\ \x96\xae\x72\x29\x23\xdb\x05\xde\x1b\xe2\xdd\x17\x78\x9f\x44\x78\ \xff\xd0\x3b\x78\xef\x64\x55\xba\xaa\x6e\x90\xff\xb4\x82\x9c\x59\ \x81\x7f\x58\x37\xa2\x10\xdc\x06\x23\x7a\x9c\x3c\x1a\x3f\xaf\x3e\ \x79\x2b\x21\xff\xee\x1f\xd6\x7f\xb7\xa1\x31\xf2\x02\xf2\x22\x93\ \xc7\x16\xbf\xfd\x83\xf2\x0f\x11\xca\x3f\xee\x27\x94\xbb\x12\x74\ \x80\x32\x26\x57\xb1\x0b\x19\x1d\x2d\x0c\xfc\x93\x3e\xdc\x02\x4d\ \xa7\x22\xf8\x83\x69\xc1\xbe\xe4\x30\xfd\xb8\xa9\xbd\xaf\xcc\x4c\ \x09\x70\x2c\x2f\x53\x26\xd5\xd6\xe8\xc2\xe5\x34\x28\xa9\x6b\xf8\ \xed\xca\x3f\x6b\xad\x44\xf8\x60\xad\x83\xbb\x3f\xec\x7f\x79\x61\ \xe5\x17\x00\x11\xf6\x88\x5e\xed\x50\xbe\xed\x53\xd3\x2f\x56\xbc\ \x82\xb3\xa0\x5b\xf3\x58\x0a\x61\x59\xcb\x4e\xdb\x78\xd1\xf6\xf3\ \x1c\xc4\xbe\x7c\x98\x1a\xcb\x25\xb8\x0a\xdd\xbb\x63\x57\x7a\xe1\ \x14\x24\x84\x35\x85\x08\x5f\xdb\xcc\xb8\x7e\x77\xba\x5b\xb3\x69\ \xa7\x01\x2a\x2f\xaf\xdf\xb6\x34\x2d\x06\x4b\x2c\x0e\xc2\x3a\xf4\ \xb6\xc3\x5c\x69\x22\x5d\xe5\xc8\x33\xd5\x83\x41\x04\xb1\x7f\xde\ \xd8\x21\xfb\xa0\x8a\xd8\x4c\xd9\xb5\x35\xcd\xc1\x49\xc9\xa5\xb1\ \x57\x5d\xbf\xf4\x8a\xb0\x42\x43\x06\xbe\x1d\x41\xc5\xe9\xd5\xaa\ \x73\x43\x42\x19\x1c\x5d\x43\xda\xed\x3a\xe3\x7e\xc2\xff\x63\x91\ \x1a\x82\xc5\x6f\x32\x35\xbd\xe4\xe8\x75\xa5\x75\x0b\x6f\x2c\xc6\ \x55\x0d\xc9\x16\x48\x66\xa6\x94\xa1\xf5\xdb\x21\x22\x66\x95\xd2\ \xb1\x4e\xdc\x1d\x95\xe6\x6d\x94\xd0\x0e\x5e\xa3\x19\xdc\x02\x8b\ \x21\x7b\xd7\x2d\x65\xb0\xf9\xb6\x7d\x07\x23\x76\xa8\x94\x5c\x5c\ \xf1\x05\x9d\xb7\x85\xa4\x97\x6d\x60\x1b\x4c\x46\xda\x57\x31\x38\ \xcb\xf1\x45\x0d\x61\x72\x20\x34\x58\xd4\x60\x4d\x25\xe2\x91\xba\ \x62\x32\xea\x74\xb1\x7b\x60\x35\x37\x7d\x48\xbc\x5d\x89\xfd\xa0\ \xc1\x8d\xac\xbe\xab\x42\xc5\x7a\x2b\x9d\x63\x17\xde\xea\xbf\xfd\ \x0b\x47\x90\xb6\xc2\x7d\x4b\x53\xe8\xe7\x7a\xc9\x6b\x07\xea\x13\ \x74\xcd\x40\x32\x81\x28\x17\x18\x81\x40\xb7\x69\x16\x6a\x1c\xcd\ \xed\xb2\x7e\x0c\x17\xf0\x55\x39\x7c\x6f\x0e\xdf\x0a\x7c\xf2\x5f\ \x2d\x31\x7f\x54\ \x00\x00\x02\x78\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x03\x00\x00\x00\x44\xa4\x8a\xc6\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x45\x50\x4c\x54\x45\x00\x00\x00\x01\x01\x01\x05\x06\x04\x0c\x0d\ \x07\x12\x14\x0c\x1f\x26\x09\x2b\x35\x08\x39\x45\x0b\x47\x58\x08\ \x56\x6a\x09\x64\x7c\x0a\x71\x8c\x0e\x7d\x9b\x0e\x86\xa6\x0e\x8d\ \xb1\x0a\x92\xb6\x0b\x95\xb9\x0e\x98\xbe\x0c\x99\xbf\x0c\x9b\xbf\ \x14\x9c\xc3\x0c\xa2\xca\x0c\xaa\xd5\x0c\x45\xb9\x54\x8c\x00\x00\ \x00\x01\x62\x4b\x47\x44\x00\x88\x05\x1d\x48\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xda\x0b\x04\x00\x20\x37\xaa\ \xfa\xb2\x02\x00\x00\x00\x19\x74\x45\x58\x74\x43\x6f\x6d\x6d\x65\ \x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\ \x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x01\x87\x49\x44\x41\x54\ \x38\xcb\x95\x93\x8d\x52\xc4\x20\x0c\x84\x29\x2d\x85\x00\xd7\x1e\ \x98\xf0\xfe\x8f\xea\x06\x4a\xf5\x74\x74\x94\xb9\x9f\x19\xf8\xd8\ \x64\x93\x60\xea\xef\xeb\x69\xfe\x07\x14\x5d\x3f\x03\xcc\xd2\x17\ \x7f\xbe\x72\x03\x05\xa7\x67\xa2\x40\x31\x9f\x22\x75\xea\xbc\x4d\ \xa0\x88\x64\xef\xac\xc1\xb2\x2e\x3c\x84\xcb\x2b\x50\xa4\x84\xd5\ \xcc\xb5\x6c\x71\x12\x17\x50\xe4\xd8\x97\x71\x76\xfd\x85\xe7\x20\ \x06\x80\xfb\xbb\x6e\xaf\x9e\x62\xa4\xdd\x9a\xc5\x2c\x7e\x68\x0c\ \x80\x25\xe8\xc5\x3d\xab\x87\x26\x69\x57\x82\xe4\x43\x41\x92\x66\ \xe7\x6b\x63\x98\x61\x6e\x4f\xd5\x5b\xb3\x4c\x80\xab\xd7\x73\x16\ \x14\x89\x85\x5c\x6e\xa7\xc3\x46\x00\xc0\xa7\x02\xf2\x80\x81\xed\ \x90\xa2\xc5\x88\x8b\x01\x11\x21\xe9\x4e\x2e\x1d\x28\x42\xc8\x00\ \x49\xf5\xf3\x15\xf1\x1d\x33\x82\xd8\x2c\x13\x08\xf0\x15\xa5\xeb\ \x6b\x31\x2c\xb1\x6e\x99\x78\x03\xfe\xc2\x85\x34\xd9\x35\x4a\xd5\ \x48\x86\xbe\x00\xdc\x43\x01\x48\xdf\x00\x0d\x91\x5a\x25\xad\xd0\ \x20\x84\xae\x10\xc7\x48\x12\x07\xa1\xe5\x5e\xc1\xa5\x97\xa0\xa9\ \x68\x42\x5a\x47\xb7\x99\x87\x4d\x44\xb0\xd4\xc3\x38\xda\xba\xcd\ \xda\x15\x6a\x37\x85\xba\x34\x42\x7e\x23\x11\xfd\xaa\xf1\x01\x8c\ \x94\x2c\x61\x24\x6e\xab\x90\xd4\x52\x5f\x00\xb3\xef\x2d\x3e\x5a\ \x43\xb3\x34\x3e\x2e\x04\x74\x66\x02\x18\x07\xa7\x7b\x5b\x48\x39\ \x45\xbf\xf5\xb1\xd8\xd2\x87\x82\xe6\xe9\xc6\xa0\x58\xbb\xcc\xb9\ \x52\x17\x37\x00\x0d\x7f\x9f\xc0\xe7\xae\xcd\x7a\x5c\xcd\xba\x34\ \x38\xee\x23\xbb\x65\xdd\x13\xbc\xb8\xe3\x6e\xf7\x1c\x7b\xce\x14\ \xbc\x0f\xf1\x51\xf1\x36\x08\xcd\x79\x01\xfa\xe4\xe9\xab\xc1\x87\ \xbb\xa2\x8e\xe4\x2b\x70\x3d\xbd\x31\xef\xe3\xf7\x2b\xf0\x6d\xfd\ \x01\x78\x07\x3f\xc0\x33\x81\xbd\x2f\xd9\x1a\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x82\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x20\x08\x03\x00\x00\x00\x95\x43\x8e\xb6\ \x00\x00\x00\xc0\x50\x4c\x54\x45\x71\x8c\x0e\xa5\xa5\xa4\x0c\x0d\ \x07\x00\x00\x00\x97\x97\x97\xa2\xca\x0c\xec\xec\xec\xfb\xfb\xfc\ \x8c\x8c\x8b\xca\xca\xca\x78\x78\x77\xd4\xd4\xd4\xb3\xb3\xb3\x56\ \x6a\x09\xba\xba\xba\x3a\x3a\x37\x56\x56\x55\xf2\xf2\xf2\xf5\xf5\ \xf5\xc5\xc5\xc5\x68\x69\x67\x49\x4a\x48\x05\x06\x04\x25\x27\x22\ \x1c\x1d\x19\x12\x14\x0c\x40\x41\x3f\xd8\xd8\xd8\x34\x35\x31\x71\ \x72\x70\x9c\xc3\x0c\xf8\xf8\xf8\xcf\xcf\xcf\xef\xef\xef\xe1\xe1\ \xe1\x2d\x2e\x2a\xde\xde\xde\xe7\xe7\xe8\x01\x01\x01\xff\xff\xff\ \xe4\xe4\xe4\x39\x45\x0b\x64\x7c\x0a\x8d\xb1\x0a\x98\xbe\x0c\x82\ \x82\x81\x2b\x35\x08\xdb\xdb\xdb\x5d\x5e\x59\x47\x58\x08\xaa\xd5\ \x0c\x1f\x26\x09\x99\xbf\x0c\xbf\xbf\xbf\x7d\x9b\x0e\x61\x61\x60\ \x92\xb6\x0b\x86\xa6\x0e\x9b\xbf\x14\x95\xb9\x0e\xd8\xda\xd1\xc6\ \xc8\xbf\x62\x63\x58\xd2\xd4\xcb\x33\xee\xa2\x2e\x00\x00\x04\x7d\ \x49\x44\x41\x54\x78\x5e\x8d\x95\xe5\xb2\x23\x37\x14\x84\x47\x30\ \xcc\xcc\x8c\x66\xf6\x85\x0d\xbc\xff\x5b\xe5\x48\xb3\xbe\xbb\x9b\ \x54\x25\xe9\x3f\xae\x1a\xbb\x3f\xb5\x0e\x8c\x85\xfb\xbf\xeb\xdb\ \xd9\x39\x50\x6a\x18\x86\x85\x14\x2d\x4b\xd3\x3e\x8b\x70\x92\x60\ \x92\xf6\x45\xdf\xe3\x29\x22\xff\x0d\x28\x15\x85\x22\xc3\x50\x75\ \x4b\x2b\xec\xb8\xe8\x71\x92\x85\x59\x11\x63\x02\x9a\xc8\xdf\x00\ \x7b\xa6\x5f\x01\x25\xa5\x08\xfc\x8f\x5c\x5a\x1e\x56\xe3\x0f\x0f\ \x84\x86\xb1\xf3\x69\x60\x17\x49\x44\xa6\xe9\x67\x40\x55\x89\x5c\ \xd5\xcf\x48\x05\x59\x7e\x93\x8f\xae\xbb\x0c\x83\xe4\xd6\xb5\xec\ \xb5\x83\x7e\x6a\xac\xd2\x51\xb2\x69\x22\x3f\x00\x7b\x70\xbf\x0b\ \xe6\xc5\xdc\x3e\xdf\x45\xf1\xfe\xca\xf1\x89\x1e\xfa\x29\xef\xa4\ \xb1\xcb\x87\xd6\x75\x99\xdf\xf5\x5a\xb9\x6e\xad\xb7\xb7\x18\x02\ \x7c\x01\xf6\xa2\xf8\xdc\xdc\x22\x02\x8a\x6e\x97\x0f\xb1\xda\x7f\ \x07\xfc\xae\x9f\x86\xfc\xb4\xe8\x86\x91\x0f\x16\x42\xaa\xdf\x0c\ \xfa\x38\x43\x0c\x8a\x4a\x00\x10\xe1\xe5\xdf\x5f\x30\x79\x69\x4a\ \xb7\x2f\xc2\xe7\x9f\xdd\x32\x4a\xcb\xa2\xab\x16\x75\x92\x28\x4a\ \xe2\x3e\x73\x0e\x8a\x62\xf9\x4a\x98\x4d\x3c\xc1\xea\xdf\x1d\xa7\ \xd5\xfb\xfd\xe3\xf2\x6d\x25\x7c\xfe\x36\x4a\x10\x5a\x1a\x54\x2d\ \x21\x24\x0e\x4a\x4d\xd3\x82\x73\x56\xd8\x09\x66\x4d\xe0\x00\x7e\ \xfe\x91\xd9\xf0\xc6\xdc\x6e\xcd\x63\xc4\xbe\xd9\x40\x06\x0e\xe8\ \x24\x77\x51\xd1\x39\x21\x38\x43\xd2\xcc\xe5\x8e\x27\x4b\xb1\x09\ \xf9\x4a\x50\x89\x17\x76\xf0\xf1\x29\x82\xae\xa2\x70\x64\x04\x53\ \x5c\xaf\xd0\x3c\xe8\xb9\x87\xe2\x64\x86\x0c\x5e\x99\xc9\xf3\xc6\ \x4e\x0f\xd2\xe9\x0b\x20\x0a\xac\x7a\x9b\xfb\xb5\x82\x66\x54\xd5\ \xf5\x1b\xcb\x83\x9f\x22\x03\x04\x61\xcc\x4b\x6b\x8f\xf3\x5c\xd7\ \xe0\x06\xc6\xa8\xd2\xd2\x49\x00\x40\x56\x40\x75\xdf\x30\x7f\x25\ \xee\xf7\x10\xc6\xbc\x3d\xaf\xef\x37\xb0\x5c\x00\x50\xbd\x73\x37\ \xe4\x8b\xa9\xee\xba\xd2\x32\x7a\xb5\x64\x85\x09\x86\x27\xd3\x17\ \x40\xfc\xc0\x84\xa4\x3b\x71\xcf\x86\x61\x3b\x11\x20\x6c\xc1\x77\ \x7b\xaf\xf6\x00\xe0\x75\x8d\xe2\x34\xb2\x0f\x0f\x55\x1f\x8c\x20\ \x4c\xd6\x3a\xaf\x04\x81\x95\xd0\x04\x1e\x14\x8d\xfb\x31\x01\x42\ \x55\x1d\xc1\xf4\x14\x01\xc0\x9b\x1b\xe1\x38\x8e\x53\x12\x8c\xf5\ \x7c\xe0\x66\xfc\xea\xd6\x0a\xb8\x00\x6f\x2b\xf2\xfc\x98\xfd\xdc\ \xac\xd8\x23\x02\x8f\xd6\x2b\x64\x4a\x1a\x65\x94\x2a\xc8\x9b\x67\ \x6d\xb2\x33\xc5\x8e\x48\x11\x4f\x69\x91\x12\xc2\x01\x9b\xf5\x38\ \xf0\xb3\x9f\xe3\xad\x78\x67\x37\x21\x26\x07\xb0\xf6\x79\x65\x66\ \x79\xcb\x3c\xb6\xf3\x5c\x66\x43\x37\x5b\x85\x63\x04\x24\x44\xf6\ \x2f\x00\xf0\xf3\x5c\x58\xf8\x19\x30\x65\xd6\xe2\x5b\xea\xb0\x8c\ \xb2\x2c\x01\x20\x08\xa5\xb9\x53\x0d\x5a\xa4\x99\x86\x32\xf2\xe3\ \x0a\xc2\xf5\x0e\xe7\xbf\x08\xa2\xf9\xfd\x0a\xbb\xec\x34\x7b\x5e\ \xd7\xb9\xae\x3c\xd7\xc3\x22\xbb\x4e\xf8\x68\xbd\xe5\x71\x70\x0e\ \xd4\xa2\xfd\xab\x88\x60\xbc\x5c\x9f\x11\xaf\x2c\x1f\x81\x2b\x0b\ \x25\x40\x59\x76\x87\xa5\xf5\xea\x99\xa9\x96\xd4\x4e\x1e\x0a\x9b\ \xea\x6d\xed\xb9\x75\x6e\x58\x25\x26\x6b\x1b\x9f\xbc\x8d\xec\x06\ \x91\xc9\xaf\x71\x33\x53\xde\xc6\x7b\xb5\xfb\x43\x1d\x25\xd7\x93\ \xe5\x5a\x6e\x87\x66\xac\x4f\x36\x0e\xf4\xa5\x95\x65\x57\x55\xb4\ \x70\x5a\x01\xd0\x34\x3e\x37\x57\x13\xea\xb7\x16\x82\x51\x36\x22\ \x03\xd8\x28\xcf\x07\x40\x78\x6e\xa7\x37\x8b\xab\xda\x93\x63\x74\ \x92\x34\x3c\x14\x3b\x8c\xc9\x0a\x58\x4b\x16\x99\xa2\xf8\x7c\xb5\ \x12\x94\xc2\x28\x03\x20\x56\xfc\xe6\x34\xc2\x42\xba\x83\xef\xe7\ \x92\x91\x90\x9e\xaa\x8d\x41\x83\xd0\x2e\xa2\x17\xa0\xaa\x36\x7c\ \x85\x77\xd7\x2b\x2c\x13\xbb\x3f\x00\x2f\xd7\x8a\x03\x0e\x96\xaf\ \x03\xa0\xf5\x1a\xcb\x6a\x24\x94\x24\x09\x35\x0e\x85\xed\x84\x3d\ \x3b\xe8\xb5\xce\xbb\x1b\xf3\xa4\x17\xe1\x29\x6c\x37\x29\x7f\x2d\ \xa4\x02\x4f\x90\x6a\x86\xd5\x0c\x63\xdb\xb6\xbe\x65\x9c\xe4\x26\ \x4b\x52\x05\xf5\xa9\xed\x38\x31\x54\x60\x05\xf0\x3a\xde\xd6\xd1\ \x8c\x22\x00\x71\xf1\x2e\x54\x3b\xfc\x86\x0c\x5f\x1f\x46\x4f\x42\ \x07\x45\xaf\xf3\x82\x10\x9b\x16\x8f\x26\x28\xf8\x46\x71\xc0\x9a\ \x61\x03\xce\x97\xf0\x91\x2d\xd3\x07\x5b\x26\xec\x20\xe3\xd1\x0c\ \x8b\x2b\x6b\x38\x3d\xa3\x37\x36\xab\x41\x70\x72\x55\x1a\xc7\xaf\ \x1a\x70\x89\xd5\xf6\x88\xd7\x14\xf8\x28\x40\x2f\x6e\xbb\x75\x9d\ \x33\x00\xf8\x7a\xb7\x48\x39\x0d\xfa\x94\xa5\x4c\x34\xcd\x58\x72\ \x5f\x2b\x7b\xf2\xeb\x6b\xbd\x7a\x9a\x97\xcd\xe6\xb2\xfd\xb8\x8b\ \x62\x65\xc2\x72\x70\x40\xac\x20\x84\x28\x50\x60\x7e\x35\x4c\xa2\ \xd4\x7e\x3b\x94\xa5\xae\x3e\x9a\xee\xc0\x01\x3f\x54\x89\xa0\x0a\ \xcc\x15\x4f\x04\x7e\x06\xc0\x8e\x12\x38\x8a\xd1\x2c\xdd\xd2\x20\ \x87\xfd\xaf\x85\xa1\x63\x2b\xbe\x95\xcb\xe8\x9f\x7f\x6d\x5c\x9c\ \x06\xf6\x15\x30\xc5\x6f\x01\x6a\x5b\x6f\x5c\x64\x6f\x19\x8d\x73\ \xd8\xf7\x71\x9f\x24\x07\x45\xd1\x4b\x9e\xe0\xdf\x04\x00\x08\x5d\ \xd0\x06\x66\xef\xd4\xca\x3a\x8c\x94\xef\xc4\x49\x0a\x4a\x0a\x5b\ \x29\x63\x42\xfe\x07\x80\xe0\x80\x1a\x14\x21\x75\x68\xd4\x26\x57\ \x92\x42\x3b\x4f\x53\x12\x25\x81\x81\x94\x84\xfc\x05\x2c\x83\xdc\ \xf4\xf9\xf1\xbe\x01\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x06\xd8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x6a\x49\x44\x41\x54\x58\xc3\xed\ \x55\x69\x4c\x94\x57\x14\x55\xd4\x56\x5b\x63\xb4\xd5\x68\x13\xb5\ \x5a\xb5\x5a\x71\xa9\x25\x75\x50\x91\xd2\x0a\x54\x65\x13\x10\x14\ \x64\x19\xd1\x6a\x2b\x8b\x53\x34\x38\x2c\x65\x11\x37\x16\x51\x60\ \x40\xa8\xe2\x52\x59\x44\xa4\x54\x2d\x8e\xe0\x82\x36\x2e\x35\x2e\ \xa3\x18\xc6\x9a\x6a\x27\x85\xa9\x86\x88\x31\x19\xa5\xc9\x24\x24\ \xa7\xe7\x8d\x6f\x5a\x4b\x45\xb1\xb5\xb1\x3f\x3a\xc9\xc9\x97\x6f\ \x79\xf7\x9e\x7b\xee\xb9\x77\xba\x00\xe8\xf2\x22\xd1\xe5\x7f\x02\ \xff\x29\x02\x1f\x06\xa6\x78\x10\x49\x44\xa1\x44\x26\xb1\x84\xb0\ \xfb\x57\x09\x30\x81\x0f\x51\xaa\x5a\xad\x35\x24\x64\xea\x5b\x12\ \x33\x8d\xa6\xc4\x2c\xa3\x29\x35\xe7\xe6\xbd\xf8\xcc\xb3\xb7\x16\ \xab\x4b\xaf\xf3\x7d\x9d\x24\x67\xfb\x5c\x09\x30\xe0\x50\xb7\xb0\ \x0c\xdd\x9a\x9c\x3b\xad\xa1\xd1\xc0\xac\x50\x60\x46\x30\xe0\xaa\ \x04\x3c\x3e\x05\x16\xac\x04\x22\x53\x81\x35\xf9\xe6\xb6\x75\x5b\ \xf4\x2d\xc1\xd1\x45\x7a\xa9\x8e\xcb\xf3\x22\x10\x1d\x9f\xa1\x6b\ \xf6\x5f\x06\x4c\x98\x0d\x8c\x72\x25\xdc\x80\xb1\xde\xc0\x78\x7f\ \xc0\x2e\x08\x70\x08\x23\xb1\x70\x20\x38\x16\x88\xdd\x04\x64\x6e\ \x35\x9a\x3e\x89\xb5\xa8\xf2\x8f\x89\x08\x02\x75\xb1\x69\xe6\xb6\ \xa9\x7e\xc0\x9b\x0c\x35\xdc\x1d\x18\x13\x00\x4c\x5c\x08\x28\x48\ \x4a\x11\x01\x4c\x66\x72\x7b\xaa\x31\x8d\x70\x89\x04\x02\xe3\x48\ \x64\x33\x90\xb5\xc3\x68\x0a\x5e\x61\x51\x44\x2d\x94\xfc\x5b\x04\ \x84\xfc\xcb\x29\xf1\xfb\xf3\x80\x91\x5e\xc0\xb8\x10\x56\xac\x02\ \x3c\x57\x33\x11\xab\x55\xe6\x02\x41\xbc\x7a\x6f\x60\x5b\x12\x00\ \xc7\x15\xc4\x72\x2a\xf2\x39\xdf\x25\x01\xa9\x85\xc0\xda\x7c\x5d\ \xb3\xdb\xa2\x0c\x1d\x49\x84\x3f\x33\x01\x21\xa5\x6a\x3d\x30\x85\ \xbd\xb7\x65\xef\xa7\x31\xb0\x7f\x06\xb0\xaa\x14\xc8\x3b\x02\xec\ \x3c\x05\x6c\x3d\x09\xa4\x7d\x0b\xac\x28\x26\x19\x12\x9a\xbd\x06\ \xf8\x68\x15\xbd\x42\x32\x73\xd4\x40\x04\xc9\xe5\x94\x98\xdb\xa2\ \x56\x57\xdd\x78\x56\x35\x44\x0b\x2e\x24\xe4\x00\xce\x94\xd6\x9e\ \xfc\x3d\xd7\x02\xea\x32\x60\xef\x05\x60\x73\xe9\xd9\x5b\x91\xa9\ \xa5\xd7\xd3\x77\xd6\x35\x56\x9e\x32\x9a\xf6\x5f\x65\xa2\xe3\xc0\ \xca\x3d\x34\x67\x1e\x89\xf0\x5b\x67\xfa\x62\x16\xc9\x04\xa5\xd0\ \xa8\x5f\x02\xeb\x0b\x7e\x57\xc3\xa7\xd3\x1e\xc8\x2a\x36\xb7\xf9\ \x25\xb2\xbf\xec\xad\x32\x1f\xc8\x3f\xc6\xca\x0f\xe9\x5b\xe4\xd8\ \xd9\x11\x81\xc2\x70\xf3\x55\x9a\xfa\xaa\xb3\x46\x53\xe5\x15\x20\ \xbd\x16\x08\xa7\x22\xfe\xd9\x24\x40\x45\x3e\x66\x7b\x44\x8c\x15\ \xf4\x86\xa6\xe4\x4e\xab\x5f\xb8\xa6\xbe\x33\x2d\x11\x04\x92\x36\ \xee\xd4\xb7\xa8\x34\x0c\x96\x0e\x44\x7d\x05\x94\x9f\xa7\x0a\x59\ \x16\x39\x9d\xda\x2d\x2a\x17\x41\x44\xbd\xa9\xea\x46\xf5\x15\x93\ \x79\xfb\xf7\x40\xc2\x41\x60\xe1\x76\x7a\x64\x23\x30\x93\xbe\xf1\ \x26\x89\xcf\x18\x47\x53\x66\x6e\x5b\x12\x6f\x99\x14\x75\xfb\xa4\ \x62\x97\x58\x77\x8a\xe5\xc6\x2f\x42\x53\xaf\xd9\xcf\x8a\x28\xa1\ \x7a\x2f\x50\xa9\x23\x91\x35\x96\xc3\x8f\xdd\x80\x7c\x1e\xe2\xb1\ \x24\x43\x57\xf1\xdd\xcd\x7b\x55\x0d\x1c\xcb\x3a\xee\x8a\x72\x20\ \x60\x0b\xe0\x46\x3f\x78\xb1\x1d\x61\xbc\x66\x95\x00\x31\x69\x5a\ \xc3\xa3\xbe\xb0\x26\x2f\x28\x7e\xa8\xb0\x35\xa0\x3a\x73\x97\xae\ \x39\xfd\x1b\x20\x85\x44\xca\xd9\xff\x8c\x5d\x75\x8d\x42\xfa\x8e\ \xa4\xe3\x3b\x7b\xb1\xaa\x53\x0b\xb5\x86\x9a\x6b\xe6\xb6\x82\x73\ \x24\x4f\xa3\x2a\x77\x50\x85\x4d\x0f\xbd\xa4\x24\x89\x75\x3b\x69\ \xe0\xad\xba\x66\x6b\xc5\xe2\x9a\x4b\xc5\x4f\x9e\x01\x84\xff\xac\ \xc1\x86\xba\x2f\xce\xd0\x95\xd6\x99\xcc\xb9\x74\x7e\x31\x83\xed\ \x3d\x71\xf3\x9e\x48\xf0\xb4\x1e\x8a\x3e\x2f\x4e\x28\xd2\xd7\xea\ \x4d\xe6\xdd\x54\x2e\x99\xde\x58\xca\x09\xf2\x67\x4b\xbd\xd3\xb8\ \xbc\x88\x38\x8e\x6a\x42\xb6\xa5\xe2\x03\xaa\x54\x7d\x4b\x26\x95\ \xd6\xd6\x3d\x42\xc0\x2a\xab\x72\x55\x91\xbe\xf2\x9c\xb9\x6d\x0f\ \x3d\x70\xda\x00\x08\xd3\x75\x66\xf7\x5b\x5b\x52\x73\xf5\x4e\x6b\ \x05\x5b\x92\x76\x02\x58\x56\xc1\x49\x61\x62\xdf\x2c\x60\x1e\x95\ \x08\x5e\x47\x52\x6a\x93\xd9\x87\x3b\x64\x59\x32\xdb\xac\x6d\x47\ \xc0\x5a\x4d\x62\xae\xd6\x70\xec\x1a\x70\xf2\x47\xa0\xec\xc8\xc3\ \x3e\x75\x66\x9c\xc4\xd8\x79\x92\x44\xf1\x51\x7d\x4b\xd5\x75\xfa\ \x82\xfb\x63\x79\x15\x10\x42\x83\xfa\x70\x32\x66\xd3\xa0\x4e\xfc\ \xaf\x71\xe4\x76\x0d\x63\xc4\x7d\x35\x8f\x21\x60\xf5\x43\xb2\x46\ \x6b\xb8\xf4\x33\xd0\x70\x1b\x58\x14\x67\x59\xb5\x3e\x9d\x24\x61\ \xe9\x71\x09\x49\x7c\x4d\x12\x69\xa7\x01\x15\x3d\x15\xb2\x8b\x24\ \x38\xae\xce\xc9\x0f\x17\xd8\x52\x4e\x49\xd5\x71\x49\xe0\x71\x3f\ \x0b\x89\x3c\xad\xa1\xe1\x16\x70\x82\xb2\x8a\xbf\x6a\x7b\x8f\xa8\ \x01\x7c\xd5\x4d\xa2\x7b\x07\xe8\xe6\xe8\x1f\x37\xde\x29\x20\x29\ \x25\xb3\xfc\xec\xad\xa2\x7a\x7a\x82\xed\x88\x20\x09\x25\x77\x86\ \x2f\x7d\xe1\xc5\xe4\x2a\xb6\xe6\xe0\xe9\xc7\x13\xe8\x4a\xd8\x88\ \x40\x4e\x01\x89\xf1\x61\xb1\xdb\xf4\x17\x0d\xe6\x36\x4d\xf9\x99\ \xdb\xd3\xfd\xe3\xc3\xf9\xbc\x17\xf1\x0a\xf1\x6a\x07\x10\xef\x7a\ \xd9\x7b\xaa\xde\xfb\x60\x7e\xe2\xb6\xec\xe3\x46\x53\x1a\x0d\x9d\ \xc0\x6a\x97\x73\x42\x16\x73\xc3\x86\x16\xf1\x9e\x23\x7b\xf8\xe2\ \x5f\x09\xd8\xc8\x2a\x5e\x22\x7a\x12\xbd\x1d\xe6\xaa\x57\xfa\x47\ \xe5\x34\x1c\xbf\x7c\xe7\xd7\xe4\xbc\xea\x46\x85\x7b\xc4\x02\x3e\ \x1f\x48\x0c\x92\x78\x43\xc2\x7a\x3f\x70\x8c\xfd\x9c\x49\x0e\xbe\ \xab\xd2\x8b\x6a\x1b\xee\x56\xdc\x04\x0a\xb8\xbe\x37\x71\xac\xd7\ \xd3\x13\x5f\x70\x42\xe2\xb8\xb8\x72\xb9\x69\x4f\x5d\xfb\x33\x01\ \x91\xbc\x87\xac\xb0\x0f\xf1\xba\x0c\x38\xc4\x6e\xe6\x92\xa5\xd3\ \xe7\xaa\x0f\x64\x97\x9e\x6a\x56\xc6\x14\xde\x78\x6b\xa2\xf3\x2c\ \x3e\x1f\x4b\xd8\x12\xe3\x24\x6c\xe5\xb3\x77\x26\xbb\x45\x6c\xd8\ \x55\x7d\xa1\xa5\xfe\x2e\x50\xf7\x0b\x70\x88\x5e\x3a\xf0\x13\x7b\ \x4e\x53\x97\x73\x42\xca\xb9\xc6\x8f\xfe\x00\xd4\x37\xfe\x41\xa0\ \xab\xac\x5c\x24\xef\x2b\x2b\x1a\x2e\x82\x11\x13\x08\xbb\x7e\x03\ \x87\xbb\xbc\x3b\x43\x99\x36\x78\xb4\x22\x90\xf7\x8e\x84\x93\xb0\ \x4a\x3b\x38\x0d\x7e\x5b\xb1\x40\x19\xb3\xc5\x70\x44\xd7\xd8\x7a\ \xf4\x72\x63\x6b\x2d\xaf\xb5\x97\x9b\x1e\xd4\xea\x9a\x1e\xd4\x5c\ \x6a\x7a\x70\xf8\x52\xd3\x7d\xed\x85\xa6\xfb\x87\xcf\x1b\xef\x1f\ \x3a\x67\x34\x89\xb5\x6e\xad\xfe\x65\x59\xb9\xa8\x7a\x24\x31\x91\ \x98\x22\x13\xb9\x12\xb3\x09\x77\xc2\x8b\xf0\x26\x7c\x89\xb9\xed\ \x20\x9e\x79\x8f\x98\xe4\x9a\xa8\x70\x8b\xd0\x5a\xe0\x1e\x59\xad\ \xf0\x88\x3a\x38\xc5\x53\x55\x35\x75\x4e\xf4\x3e\x07\x9f\x98\xb2\ \xe9\x7e\x71\xbb\x1d\xe7\x25\xec\xa0\xc7\xb6\xd1\xac\x22\xb6\xc5\ \xd5\xa2\xe7\xfd\x84\xe4\x52\x4a\x7b\x62\x06\xe1\x26\x13\xfa\x11\ \xf3\x09\xa1\x40\x10\x11\x42\x84\xb6\x43\x88\x7c\x17\x28\xbf\xf5\ \x93\x67\xdd\x64\x2c\x7b\x19\x7b\x88\xcc\xd5\x53\xe6\x7e\xf1\x04\ \x9e\x6b\x0b\xe4\x37\xee\xf2\x8c\xab\x8c\x31\x45\xc6\x1c\x29\x73\ \xf4\x91\x39\x6d\x3a\x65\x42\x42\x41\x4c\x25\x1c\x9e\x64\x42\xf9\ \xce\x41\x7e\xab\x90\x67\x27\xc8\x58\xc3\x65\xec\xbe\x32\x57\x77\ \x99\xfb\xc9\x63\x48\x0c\x23\x46\x10\xa3\x88\xd1\x32\x58\x87\x63\ \x28\xbf\x19\x25\xcf\x0c\x93\x31\x06\xc9\x98\x7d\x64\x8e\x1e\xd6\ \xea\x9f\xb8\x88\xe4\x01\xd1\xaf\xd7\x88\xfe\xc4\x80\xa7\x2d\x22\ \xf9\x4d\x7f\x79\xa6\x9f\x8c\xd1\x5b\xc6\x7c\x49\xe6\xb0\xb1\xfe\ \x7f\xfc\x06\xb3\xa4\x19\x9e\x6b\xe3\x34\xfa\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x94\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x26\x49\x44\x41\x54\x58\x85\xc5\ \x96\x6d\x4c\x53\x57\x18\xc7\x3b\xc5\xa9\x73\x4e\x21\xc6\x45\x65\ \xbe\xc4\xf8\xc2\xc8\xc4\x84\x2d\x43\x08\x74\x33\x6a\xf4\x83\x73\ \xcb\x14\x4c\x8c\x89\xc9\x8c\xc9\xa2\x26\x66\x89\x19\x59\x50\xdc\ \xa7\xc5\x84\x7d\x33\xc6\x97\xf8\x61\x5b\xf4\x83\x13\xfc\x60\x8c\ \x41\x37\xd4\x11\xa7\x20\x82\x88\xa0\x85\xad\xa5\xb5\x40\x5b\x4a\ \x69\x7b\x5b\x5a\x28\xf2\xec\xf9\xf7\x9c\xb3\x7b\x21\x8a\x55\xae\ \x91\xe4\x97\x73\xee\xe9\xbd\xe7\xff\x7b\x9e\x7b\x7b\x8b\x85\x88\ \x2c\x6f\x92\x37\x1a\x9e\xb2\xc0\x67\xdb\x8f\xe4\x1a\xd8\x33\x86\ \x72\xe6\xa4\xa4\x82\xc9\x33\x55\x80\x37\x2c\x2d\x3d\x7a\xd6\xa6\ \x38\x7f\xf9\x76\xb7\x91\x9b\x75\x6d\xfe\xd6\x76\x57\xb8\xdd\xee\ \x8e\x34\xb7\x39\xc2\x5f\xec\x3e\xda\xc4\xd7\xac\x37\x53\xa0\x81\ \x47\x1a\x19\x21\x52\xa3\x9a\xab\xbf\x58\x2c\x4e\x1e\x8f\x97\x86\ \x87\x87\xa9\xb9\xb5\x23\x6a\x2d\x3e\x7c\x8a\xaf\xcb\x36\x4d\x40\ \x85\x3e\x0f\x4d\x8b\x50\x4b\xcb\xc3\xa4\x4c\x22\x91\xa0\xea\x1b\ \x0d\x01\x6b\xc9\xe1\x23\xa9\x48\xa4\x24\xf0\xf4\x29\x71\x75\x3a\ \x63\x8f\x83\x41\x8d\xea\xeb\xef\xfe\xdf\x91\x48\x24\x42\xd7\x6a\ \x1b\x93\x12\xa6\x09\x0c\x25\x9e\x4f\xa0\x5f\xa3\xdb\x77\xea\x47\ \xdd\x96\x48\x34\x4a\x85\x5b\x7f\x68\x34\x45\x20\x31\x3c\x3a\x70\ \x70\x68\x34\xc1\x50\x94\x6e\xfe\xf5\x37\x5d\xbd\xfa\x07\x5d\xa8\ \xac\xa4\xaa\xaa\x8b\xf4\x67\xcd\x75\xda\xb8\xa3\xec\xa1\xc5\x62\ \x79\x6b\xc2\x02\x08\x1d\x88\x0b\x62\x83\x02\x04\x63\xc4\x9a\x16\ \x4d\xd0\x23\x9b\x83\x2a\x2f\x5e\xa2\xd3\x67\x7e\xa1\xb3\xe7\x7e\ \xa7\xda\x5b\x77\x28\xff\xcb\x83\xf7\x4d\x11\x88\x4b\x81\x48\x5c\ \x17\x31\x12\x8d\x8d\x50\x5f\x28\x4e\xae\x6e\x3f\x75\xba\x3c\xe4\ \xe6\xb1\x8f\x6f\x0b\x3f\x03\xf7\x4c\x11\x88\x71\xb5\xa1\x01\x6e\ \x75\x54\x48\x18\xe7\x18\x81\x16\x13\xeb\x18\x93\x62\x7c\x8d\xfc\ \x0a\x4f\xfc\x19\x88\x0e\x8a\x8d\x55\x90\x31\x10\xf3\x40\x44\x5f\ \xc3\x1c\xeb\x90\x33\x4d\x40\x93\x55\xf7\x69\x22\x00\x8c\x9d\xab\ \x4e\xa8\x75\x48\x9b\x26\x10\xe6\xca\x7a\xc3\x62\x63\x8c\xbe\x90\ \x08\xf2\x04\xf5\x40\xac\xe1\x58\x8d\xb8\xc6\x34\x81\x20\x57\xdf\ \xd3\xaf\x87\x63\x04\xc6\x40\x88\xe0\x9c\xd7\x22\x10\xe0\xd6\xba\ \xfb\x88\xba\x02\x22\x04\x01\x4a\x06\x6b\x00\x6b\x6a\xee\xf2\xf3\ \xed\x18\x30\x59\x00\x9b\x22\x1c\x38\x7b\xc5\x31\xa4\x30\xfe\xe3\ \xd5\xe7\x10\x80\x18\xae\x31\x55\x00\xa1\xd8\x1c\x63\x87\x47\x88\ \x20\xd0\xd1\xab\x77\x07\x73\x25\xe7\xd7\x4c\x14\xf0\x86\xc5\xc6\ \x08\x40\xb5\x10\x30\x0a\x19\x3b\x82\x35\x5b\x8f\xc9\x02\x5d\x41\ \xbd\x3a\xbb\x8f\xe8\x71\xb7\x10\x41\x28\x64\x94\x18\x3e\xc3\x1c\ \x02\x3d\x21\x21\x80\x37\xe1\x78\x6f\xc3\x94\x04\x50\x0d\x42\x11\ \xd6\xd6\x25\xc2\x70\xac\x50\xc7\x10\x50\x1d\x72\xf7\x43\xa0\x1c\ \xaf\xe2\x29\x4c\x1a\x33\xe9\x59\x32\x29\x09\xf4\xb2\x40\xab\x5b\ \x60\x0c\x57\x32\x00\x55\xe3\x58\x75\x01\x1d\xe0\xdf\x82\x26\x0e\ \x7c\x97\x79\x87\x99\x6a\x14\x49\x49\x00\x27\xa2\x0a\xdc\x02\x04\ \x22\x44\x85\xb7\x3c\x11\x42\x08\x55\xe1\x4e\xd9\xfe\xfb\x4e\x7e\ \x16\xf8\x9a\xa2\xe2\x43\xcd\xbc\xc7\xfb\xcc\x1c\x66\x96\x14\x41\ \x47\x26\xbd\x50\x40\xb6\x6b\xb2\xb5\xa4\xbc\x11\xed\x6c\xea\x24\ \x7a\xe0\x12\x41\x08\x86\x00\xc0\x31\x3e\xfb\x97\xbb\xe0\xe4\x87\ \xb0\xc3\x2b\xaa\x77\x7a\x82\x43\x05\x5f\x97\xd6\xf0\x1e\xcb\x99\ \x25\xcc\x7c\x26\x5d\x4a\xa4\xa9\x2e\x8c\x27\x80\x56\xa5\x41\xc0\ \xe1\xd7\xab\x6e\xb0\xeb\xed\x6f\x76\x8a\x96\x23\x34\x29\xd9\xee\ \x8d\x9f\xbf\x52\x17\xf8\xe6\xfb\xe3\x8e\x82\xaf\x0e\xd6\xe6\x7c\ \xbe\xf3\x47\xde\x23\x97\xf9\x88\x59\x26\x25\xde\x63\xde\x56\x5d\ \x78\x91\xc0\x14\xdc\xc7\x27\xfd\x7a\xbb\xdb\xb9\xc5\x75\x76\x11\ \x8a\xf5\x7b\x36\x6f\xfc\xd8\xaf\xd5\xbe\x92\xbd\x15\x8e\xbc\xcd\ \x07\x6a\x56\xaf\xdd\x75\x62\xfe\xd2\xdc\x5d\x7c\xed\x5a\xc6\xca\ \x14\x30\x9f\x30\xd9\xcc\x22\x26\x83\x99\xf6\x52\x02\xa8\xee\x11\ \x57\xdd\xc9\x9d\x70\xf1\xf7\xbc\x11\xa1\xbf\x55\xfb\x8a\xf7\x56\ \xd8\x11\x9a\x9d\xbf\xed\xa7\x8c\x79\xcb\xb6\xf3\xf9\x1b\x98\xf5\ \xcc\x3a\xb3\x04\x92\xb7\x20\xc4\x3f\xad\x0d\x36\x5f\xec\xf8\xb9\ \x6b\x3d\x25\xfb\x7e\xee\xc8\xdf\xf2\x5d\xf5\x2a\xeb\x8e\x43\x73\ \x32\xb3\xb6\xf0\x39\x85\x4c\x91\x81\x42\x19\xba\x86\xf9\x74\x22\ \xb7\x20\xf9\x10\x16\x6d\x2b\x2b\x43\x17\xf8\x3f\xdc\xaa\x8f\x37\ \x7d\xbb\x3f\x73\x45\x1e\x36\x5e\xc9\x7c\x28\x37\xce\x61\x56\x1b\ \xc8\x91\xeb\xa8\x38\xeb\x95\x1f\x42\x83\x44\x9a\x6c\xd9\x4c\xd9\ \xbe\xb9\xcc\x3c\x66\x01\xf3\x81\x6c\xeb\x62\x03\x38\x5e\xc8\x64\ \xca\xd0\x57\xfb\x1a\x3e\x43\x02\x6d\x9b\xce\xcc\x90\x32\xd8\x70\ \xb6\xac\x2a\xc3\x40\xba\x5c\x9f\x25\xdb\x3d\xee\x8b\xe8\x3f\x61\ \x3e\xe0\x61\x6f\x4e\x8f\x30\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x06\xa0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x06\x67\x49\x44\x41\x54\x58\xc3\xc5\x57\x09\x50\x95\x55\ \x14\xfe\x1f\xfc\xef\xe1\x56\x84\x58\x6e\x28\xa0\xa8\x94\xca\x66\ \x88\x20\x62\xa8\xb8\x01\x06\x83\x4b\xb2\xa8\xa5\x0c\xa8\xe1\x14\ \x68\x5a\x2a\xc6\x96\x92\x28\x8b\x0a\x18\xc8\x22\x04\xc8\x22\x02\ \xa9\x91\x0b\x33\xc0\x10\x20\x88\x20\x88\x38\xb8\x0e\xe5\x30\xd3\ \xd4\xb8\xa0\xa3\xa3\xef\x74\x3e\xba\x14\x33\x99\x3d\x2c\xeb\xcd\ \x7c\x73\x38\xe7\x7c\xe7\xdc\x73\xcf\x5d\xfe\x8b\x44\x44\xd2\xff\ \x89\xe7\x3b\x25\x49\xc1\x18\xcb\x70\x64\x78\x32\x3e\x64\x6c\x16\ \xd2\x53\xd8\xe1\x57\xfc\xab\x05\x88\x81\xc7\x30\x16\x2d\x59\xb2\ \x24\x31\x21\x21\xe1\x2c\xff\xda\x5b\x5b\x5b\xef\x76\x74\x74\xa8\ \x21\xa1\xc3\x0e\x3f\x78\x82\xaf\xf8\xc7\x05\xf0\x4f\x8b\x61\xe5\ \xe0\xe0\x10\x9c\x94\x94\x54\xd9\xd2\xd2\x72\x8f\x41\xc7\x8f\x1f\ \xa7\xe0\xe0\x60\x0a\x08\x08\xe8\x96\xd0\x61\x87\x1f\x3c\xf0\x11\ \x87\xf8\x17\x2e\x40\x0c\x3e\xc5\xcd\xcd\x2d\xb6\xb8\xb8\xb8\xad\ \xb9\xb9\x99\x52\x52\x52\xe8\x3d\x9f\x55\x57\xad\xe6\x2f\x2d\x1b\ \xe5\xbc\x36\x7f\x90\xfb\x8e\xc3\x90\xd0\x61\x87\x1f\x3c\xf0\x11\ \x87\xf8\xbe\x14\xf1\xa7\xf5\xb6\xb3\xb3\x0b\x29\x2c\x2c\x6c\x6b\ \x68\x68\xa0\x1d\x21\xa1\x9d\xd3\x17\xaf\x39\xa5\xef\x1d\x95\xa6\ \xe7\x97\x1e\x3f\xee\x93\xfc\xaf\x26\x6e\x2d\x4a\x82\x84\x0e\x3b\ \xfc\xe0\x81\x8f\x38\xc4\xf7\x65\x5f\xf4\x2e\x40\x66\x78\xc4\xc6\ \xc6\x56\x35\x35\x35\x51\x4c\xdc\xbe\x4e\x9b\x55\x5b\xf3\xa4\x95\ \x29\x31\x43\x36\x9d\xdc\x3b\xf3\x40\x43\xfc\xc6\x92\x6b\x39\xe1\ \x67\x3a\x8e\x42\x42\x87\x1d\x7e\xf0\xc0\x47\x1c\xe2\x91\x07\xf9\ \x34\x2e\x40\xcc\xde\xd4\xd5\xd5\xf5\x50\x55\x55\xd5\xfd\x92\x92\ \x12\x5a\x1e\x18\xf6\x9d\xf4\x41\xe6\x5e\x69\x53\x45\xd8\xac\x8c\ \x5b\xd1\xa9\x8d\x77\x4f\xbc\xbb\x2e\x8e\x7c\x77\x64\x13\x24\x74\ \xd8\xe1\x07\x0f\x7c\xc4\x21\x1e\x79\x90\x4f\x93\x2e\xf4\x14\xa0\ \xcd\x98\x1f\x1e\x1e\x5e\x51\x5f\x5f\x4f\x7b\xe2\xe2\xaf\x8e\x5c\ \x97\x92\xfc\xfa\x8e\xaa\x48\xab\xb4\xce\x9d\xc9\x2d\x8f\x8f\x5d\ \xfe\x45\x7d\xd9\x27\xb2\x96\x7c\xe2\x6e\x12\x24\x74\xd8\xe1\x07\ \x0f\x7c\xc4\x21\x1e\x79\x90\x0f\x79\x35\x2d\x40\xc5\x58\x9d\x95\ \x95\x75\xbd\xba\xba\x9a\x02\x23\x13\xce\xa0\xbd\x73\x33\x3b\x62\ \x42\x6b\x1e\xa5\x37\xff\x4c\xcd\x9d\x0f\xe8\xb6\xcb\x17\xd7\xc8\ \x65\x3f\x11\x24\x74\xd8\xe1\x07\x0f\x7c\xc4\x21\x1e\x79\x90\x0f\ \x79\x35\x2d\xa0\x3f\x63\x4b\x69\x69\xe9\xbd\xf2\xf2\x72\x5a\xb8\ \x2d\x25\x7b\x52\x54\x5d\xf4\xf6\x8a\x3b\x19\x92\xe9\x1a\x1a\xef\ \x12\x41\xf6\x6b\x0b\x68\xda\xf6\x0e\xb2\xd9\x49\xdd\x12\x3a\xec\ \xf0\x83\x07\x3e\xe2\x10\x8f\x3c\xc8\x87\xbc\x9a\x16\x30\x80\x11\ \x7e\xfa\xf4\x69\x75\x65\x65\x25\x8d\x0d\x3a\x72\xd0\x3a\xbe\x35\ \x3a\xfa\xfc\xc3\x5c\xc9\x29\x9f\x54\xcb\x1a\x49\x7f\xcd\x75\x32\ \x08\xea\xa2\x31\x9f\x51\xb7\x84\x0e\x3b\xfc\xe0\x81\x8f\x38\xc4\ \x23\x0f\xf2\x21\xaf\xa6\x05\x0c\x64\x6c\xe5\xd6\xdd\xab\xab\xab\ \x23\xcf\x98\x6f\x32\x2c\x12\xda\xbf\x0c\xad\x7d\x9c\x2e\x79\x5c\ \x20\xc9\x97\x49\xab\x19\xef\xf7\x02\x74\xd8\xd9\x0f\x1e\xf8\x88\ \x43\x3c\xf2\x20\x1f\xf2\xf6\xa5\x03\xeb\xa3\xa2\xa2\x6e\x62\x13\ \xc5\xe6\x9e\xfa\x76\xe8\xae\xe6\x08\xe7\xa2\x07\xbb\x23\xce\x53\ \x5a\xe2\x45\xaa\xc9\x6c\xa3\x0e\x69\xf9\x7d\x92\x7c\x38\x80\x25\ \x74\xd8\xe1\x07\x0f\x7c\xc4\x21\x1e\x79\x90\xaf\x2f\x1d\xc0\x1e\ \xf0\xf0\xf7\xf7\xff\x9e\x8f\x11\x95\x55\x56\x5f\x99\xb0\xab\x26\ \x7a\x78\xe2\x4f\xc1\x36\x47\xd5\x21\xb3\xf3\xa8\x74\x63\x05\x35\ \x4b\x8b\xda\x49\xf2\xe4\x00\x96\xd0\x61\x87\x1f\x3c\xf0\x11\x87\ \x78\xe4\x11\x77\x41\xff\xbe\x9c\x82\xb7\xad\xad\xad\xb3\x92\x93\ \x93\xbb\x1a\x1b\x1b\x29\xb6\xb0\xb2\x48\x0a\xbf\xba\x55\x3a\xf0\ \x70\xa3\x49\x2a\x25\xcf\xc9\xa3\x4a\x69\x1e\x2f\xc7\x32\x0e\x60\ \x09\x1d\x76\xf8\xc1\x03\x1f\x71\x88\x47\x1e\xe4\xeb\xcb\x29\xc0\ \x3d\xf0\x1a\xc3\xd7\xcb\xcb\xab\x9e\xef\x75\xaa\x3b\x7f\xe1\x76\ \x60\xf6\xb9\x24\x29\xf2\x87\x4f\x87\x27\x3f\x0c\xb5\xce\x52\xa7\ \xbb\x1e\xa3\xb3\x0b\x8f\xd2\x39\x48\xe8\xb0\xc3\x0f\x1e\xf8\x88\ \xf3\xf4\xf4\x6c\x40\x1e\x91\x4f\xbb\x2f\x37\x21\x96\xc1\xc6\xd8\ \xd8\x38\x8e\x5b\x78\xbd\xac\xac\x8c\x1a\x2f\x36\xff\x98\x7c\xa6\ \xa9\x60\x52\xe2\xb5\x48\xb4\xd9\xfa\xc8\x83\x30\x87\xc2\xc7\x11\ \x90\xd0\x61\x87\xff\x42\xd3\xc5\xdb\xe0\xfb\xf9\xf9\x75\x19\x19\ \x19\xd5\x70\x9e\x15\x8c\x91\x1a\xdf\x84\xbd\xbe\x05\xba\x0c\x67\ \x53\x53\xd3\x0c\x6f\x6f\xef\xeb\xb9\xb9\xb9\x74\xe9\xd2\x25\x6a\ \x68\x69\x6b\xcd\xa9\x6c\x2d\x0a\x28\xb8\x9c\x68\x1e\x7f\x25\x12\ \x12\x3a\xec\xf0\x83\xc7\xfc\x2e\x77\x77\x77\xf2\xf1\xf1\xb9\xa3\ \xab\xab\x9b\x65\x36\x4c\xeb\x30\x1e\x2c\x7d\xfd\x1a\x62\x2f\xe8\ \x33\x5c\x0c\x0c\x0c\x0e\xd8\xdb\xdb\x37\x70\x37\xba\xf8\x58\x11\ \x3e\x34\xed\xed\xed\x74\xe3\xc6\x8d\x6e\x09\x1d\x76\xf8\x99\xd7\ \xc8\xfc\x5a\x0c\xce\x3a\x6d\x98\x37\xe1\x51\xba\x9b\xce\xd3\xc5\ \x13\xe5\x92\xbf\x2b\xe2\x59\xef\x01\x1d\x51\x84\x03\x23\xc0\xd0\ \xd0\xb0\xc0\xcc\xcc\xac\xd6\xd6\xd6\xf6\x96\xa3\xa3\xe3\x7d\x27\ \x27\x27\x35\x24\x74\xd8\xe1\x07\x8f\xb1\x86\x67\x9e\xb3\x6a\xc6\ \xf8\x47\x91\x33\x95\x94\xb0\x40\x45\x99\xee\x3a\x4f\xbd\xcd\xe5\ \xaf\x9f\x57\xc4\x5f\xbd\x88\x54\x62\x39\x0c\x18\x73\xc4\xbd\x8e\ \x8b\x65\x37\x63\x3f\x23\x8a\xb1\x4d\x6c\xb6\xb9\x8c\xd1\x0c\x93\ \x61\xfd\x15\x99\x01\x93\x65\xf5\xb6\xa9\x4a\xda\xfd\x8e\x92\x0e\ \x2e\x54\x51\x96\x87\xce\x93\x15\x16\x32\x96\x63\xd6\xb3\xf6\xc4\ \xf3\xde\x84\xb2\xd8\x98\xd8\xcd\x43\xc5\x20\x78\x68\x8c\x13\x18\ \x23\x0a\x7c\x43\x70\x06\x31\x16\x98\xe9\x29\x4e\x7c\xc4\x45\x04\ \xdb\x28\x69\x8f\xa3\x92\x92\x9c\x55\x94\xcd\x45\xf8\x58\xc8\x19\ \x62\x32\x5a\x22\xbf\x42\xd3\x57\xb1\xb6\xe8\x08\x6e\xcb\x57\x19\ \x7a\x62\x89\x86\x08\x39\x58\xd8\xf4\xc4\xdf\x6e\x56\xfa\x8a\xbc\ \x40\x33\x59\xfd\xf9\x34\x25\xed\x9d\xa5\xea\x2e\x22\x67\xb1\xce\ \x93\x95\x96\x72\xa6\xf8\x4c\xcb\xbf\x17\xa2\xd1\xab\xe5\x8f\x8e\ \xf4\x63\xbc\x22\x06\xc2\xcc\x87\x8b\xe3\x36\x8a\x61\xc8\x30\x12\ \xf0\xb2\x1a\xac\x28\x08\x32\x97\xd5\x21\xb6\x4a\x8a\x9e\xad\xa2\ \x43\x2e\x2a\xca\x5d\xaa\xf3\x94\x97\x03\x97\xd4\x02\x86\xb2\xbb\ \x08\x0d\x07\xd7\x16\x83\xeb\xf6\x5a\x0e\x13\xf1\xea\x79\x8b\x31\ \x99\x61\xce\xb0\xe8\x05\x5f\x8b\xc1\x8a\xe2\x20\x0b\x59\x1d\x66\ \xa7\xa4\xd8\x39\x2a\x4a\x75\x55\x51\xfe\x32\x1d\xf5\x0a\x4b\x39\ \x5b\x14\x21\x6b\x52\x80\x96\x98\xfd\x40\x31\x6b\x63\x31\xa8\x25\ \x63\x2a\x63\x1a\x63\x3a\x63\x86\x38\x39\x3d\x80\xbe\xc1\x52\x5f\ \x71\x62\x93\xa5\xac\x0e\x9f\xae\xa4\x7d\x4e\x2a\x4a\x5b\xa4\x43\ \x47\xb9\x08\x1b\x03\x2d\xbc\xa0\x87\x69\x5a\x80\x52\xac\xff\x08\ \xc6\x04\xf1\xfe\xb7\x15\x03\xe1\xbf\xa3\xd9\x0c\x27\x71\x22\x7a\ \xe0\x24\x36\x5d\x10\x17\x51\xba\xd9\x4a\x56\x47\xd8\xff\x56\xc4\ \x7a\x6b\x65\x39\xf6\x4a\x77\x57\xff\x83\x02\x70\xfc\x3e\xe6\x22\ \x4e\x6e\x99\x22\xab\x97\x99\x6a\xe3\xd5\xec\x25\x4e\x50\xbf\x97\ \xbd\x04\xd3\x45\xa1\x36\x0c\xff\x51\x03\x15\xa9\xe2\x3b\x61\x22\ \x26\xa4\x7a\x99\x9b\xd0\x5c\xd8\x27\x32\xde\x64\x8c\x17\x9d\x1b\ \x21\x8e\xec\x00\x8d\x36\xe1\x0b\x1e\x43\x23\xa1\x8f\x16\xad\x1e\ \x21\x0a\x1f\x22\x26\x31\xa0\xe7\x18\xfe\x0a\xd1\xfb\x82\xfe\x41\ \x1a\xc9\x6e\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x7e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x06\x45\x49\x44\x41\x54\x58\xc3\xc5\x57\x79\x50\xd5\x55\ \x14\xfe\x3d\x78\x8b\x5b\x91\xcb\xa4\x19\x0a\xa8\x21\xe6\x08\x82\ \x21\xb2\x48\xa1\x52\x9a\xe2\x40\xb8\xc5\x26\x25\x0a\xa5\xe8\x28\ \x28\x35\x28\x04\x62\x46\xac\xef\xb9\xa0\x82\x90\xca\xa2\x20\xc3\ \x08\x6a\x21\x20\x13\x30\x88\x06\x21\xbb\x3a\x98\xd8\x60\x8e\xd3\ \x1f\x2d\xc8\xa8\x85\xef\x74\xbe\xdf\x5c\x8c\x99\xca\x1e\x96\xf5\ \x66\xbe\xb9\x9c\x73\xbe\x73\xee\x77\xd7\xdf\x45\x22\x22\xe9\xff\ \xc4\xe3\x83\x92\xa4\x60\x4c\x66\xb8\x31\x7c\x18\x1b\x18\x11\xa2\ \xf5\x11\x7e\xc4\x15\xff\xaa\x00\xd1\xf1\x24\xc6\xd2\xe5\xcb\x97\ \x1f\x48\x4b\x4b\x3b\xcf\xbf\xce\x8e\x8e\x8e\x9f\xbb\xbb\xbb\xf5\ \x68\x61\xc3\x8f\x38\x78\x82\xaf\xf8\xc7\x02\xf8\x67\xc4\xb0\x73\ \x75\x75\x8d\x4a\x4f\x4f\xaf\x69\x6b\x6b\xeb\x61\xd0\x99\x33\x67\ \x28\x2a\x2a\x8a\x42\x43\x43\xe5\x16\x36\xfc\x88\x83\x07\x3e\xf2\ \x90\xff\xc4\x02\x44\xe7\xb3\x3c\x3d\x3d\xb5\xc5\xc5\xc5\x57\x5b\ \x5b\x5b\x29\x33\x33\x93\x56\xf9\x07\x5e\xb7\x5b\xb8\xa2\x72\xc2\ \xe2\xf7\x4e\x8e\xf0\x8a\x3e\x8a\x16\x36\xfc\x88\x83\x07\x3e\xf2\ \x90\x3f\x18\x11\x7f\x58\x6f\x27\x27\xa7\x98\xa2\xa2\xa2\xab\x8d\ \x8d\x8d\x14\x1d\x13\x7b\xc7\x79\x59\x50\x99\x89\x4f\x42\x96\xe4\ \x9f\xa1\x95\xd6\xe4\x24\x4b\xeb\xf2\x13\xe5\x96\x6d\xf8\x11\x07\ \x0f\x7c\xe4\x21\x7f\x30\xfb\x62\xa0\x00\x25\xc3\x5b\xab\xd5\xd6\ \x36\x37\x37\x53\xaa\x6e\xcf\x1d\x87\xc0\xc8\x02\x69\x75\x66\xaa\ \xb4\xe1\xf4\x27\x52\xc4\x85\x58\x29\xba\x25\x4a\x8a\xbd\xb2\x43\ \x6e\x61\xc3\xcf\x71\xf0\xc0\x47\x1e\xf2\x51\x07\xf5\x0c\x16\x20\ \x46\x6f\xe5\xe1\xe1\x71\xb8\xb6\xb6\xf6\x6e\x49\x49\x09\xbd\xbd\ \x65\xe7\x39\xe9\xdd\xec\x64\x69\x6b\xf5\xce\xb1\xa9\x5d\x31\x2b\ \x8b\x7f\xd0\x45\x5d\xb8\x77\x64\x7f\xf3\xaf\x05\x68\x61\xc3\x8f\ \x38\x78\xe0\x23\x0f\xf9\xa8\x83\x7a\x86\xcc\x42\xbf\x00\x63\xc6\ \xc2\xb8\xb8\xb8\xea\x86\x86\x06\x4a\xd2\xed\xbf\x3e\x36\xe4\xf0\ \x21\xb9\x78\xfc\xad\x0f\x03\xca\xee\xeb\x74\x2d\xfa\xbc\xd4\x16\ \xca\xe9\x07\x6c\xf8\x11\x97\x45\x32\x1f\x79\xc8\x47\x1d\xd4\x43\ \x5d\x43\x05\xa8\x19\x6b\x72\x73\x73\x6f\xd4\xd5\xd5\xd1\x96\xf8\ \xb4\x0a\x4c\xef\xb4\xb4\x9b\xbb\xc3\xaa\xef\xa7\x9f\xbf\x45\x55\ \x95\xb7\xa8\xba\xa2\x9b\xbe\xec\x07\x6c\xf8\x11\x07\x0f\x7c\xe4\ \x21\x1f\x75\x50\x0f\x75\x0d\x15\x30\x94\xf1\x41\x69\x69\x69\x4f\ \x55\x55\x15\xbd\xb9\x3d\x33\x0f\x6b\xbc\xa9\xfc\xc7\xc3\x92\x55\ \x10\x59\x2e\xd9\x45\x2e\x01\x3a\x9a\xe3\x9b\x42\x0e\x3e\x29\x72\ \x0b\x1b\x7e\xc4\x65\x1e\xf3\x91\x87\x7c\xd4\x41\x3d\xd4\x35\x54\ \xc0\x30\x46\x5c\x79\x79\xb9\xbe\xa6\xa6\x86\x26\x87\x9d\x38\x88\ \x8d\x96\xd4\x70\xef\x84\xe4\x7e\x92\xd4\x2b\x9b\x68\x74\x60\x2b\ \x99\xae\x6b\xa3\x49\xef\xb7\xcb\x2d\x6c\xf8\x11\x97\x79\xcc\x47\ \x1e\xf2\x51\x07\xf5\x50\xd7\x50\x01\xc3\x19\x91\x3c\x75\x3d\xf5\ \xf5\xf5\xe4\x93\x7a\xfa\x18\x76\x7b\x78\xcd\x2f\x87\x24\xef\xcb\ \x24\xad\x65\xd2\x1a\xc6\x3b\x03\x00\x1b\x7e\x8e\xcb\x3c\xe6\x23\ \x0f\xf9\xa8\x83\x7a\xa8\x3b\x98\x19\x58\x9f\x98\x98\x78\x13\x9b\ \x48\x9b\x5f\xf6\x05\x46\x34\x23\xfb\x6e\xec\xb6\x3a\x3a\x18\x56\ \x4d\xa7\x83\xca\xa8\x7c\x5d\x05\x9d\x0b\x66\xa0\x85\x0d\x3f\xe2\ \xe0\x81\x8f\x3c\xe4\xa3\x0e\xea\x0d\x66\x06\xb0\x07\xbc\x43\x42\ \x42\x2e\xf0\x31\xa2\xca\x9a\xba\x6b\x93\x3f\xbe\x98\x24\x25\x7f\ \x1f\x21\xa5\xf5\x85\x49\x09\x94\x29\x23\x91\x32\x1e\xa1\xdf\x87\ \x38\xf3\xc0\x47\x1e\xf2\x51\x47\xdc\x05\x43\x07\x73\x0a\x5e\xb1\ \xb7\xb7\xcf\xcd\xc8\xc8\xe8\x6d\x6a\x6a\x22\x6d\x51\xcd\x29\x29\ \xee\x7a\xa4\xb4\xef\x5e\xb8\x94\x42\xa9\x52\x3c\xe5\x49\x9f\x52\ \xce\x23\xc0\x86\x1f\x71\xe6\x81\x8f\x3c\xe4\xa3\x0e\xea\x0d\xe6\ \x14\xe0\x1e\x78\x8e\xb1\xd6\xd7\xd7\xb7\x81\xef\x75\xaa\xff\xfa\ \xf2\xed\x2d\x79\x5f\xa5\xcb\xe7\x5c\x77\x2f\x52\x4a\xd6\x27\xf3\ \x88\xb3\xb8\xe3\x7c\xb9\x85\x0d\x3f\xc7\xc1\x03\x1f\x79\x3e\x3e\ \x3e\x8d\xa8\x23\xea\x19\x0f\xe6\x26\xc4\x32\x38\x58\x58\x58\xe8\ \x78\x0a\x6f\x54\x56\x56\x52\x53\x4b\xeb\x77\x19\x15\xcd\x85\x96\ \x7b\xbf\xd9\x2d\x2f\x87\xae\x67\xab\xb4\xef\x7e\xb8\xdc\xb2\x0d\ \x3f\xe2\x97\x9b\x5b\x6e\x83\x1f\x1c\x1c\xdc\x6b\x6e\x6e\x7e\x91\ \xeb\x04\x30\x5e\x34\xf8\x26\x1c\xf0\x2d\x30\x61\x2c\xb6\xb2\xb2\ \x3a\xe6\xe7\xe7\x77\x23\x3f\x3f\x9f\xda\xdb\xdb\xa9\xb1\xed\x6a\ \xc7\xf1\x9a\x8e\x53\xa1\x85\x57\x0e\xd8\xec\xbf\x16\x8f\x16\x36\ \xfc\x88\x83\xc7\xfc\x5e\x2f\x2f\x2f\xf2\xf7\xf7\xff\xc9\xc4\xc4\ \x24\xd7\x7a\x9c\xd1\x51\x3c\x58\x06\xfb\x35\xc4\x5e\x18\xcd\x58\ \x62\x6a\x6a\xba\xcf\xc5\xc5\xa5\x91\x67\xa3\x97\x8f\x15\xe1\x43\ \xd3\xd9\xd9\x49\x5d\x5d\x5d\x72\x0b\x1b\x7e\xc4\x99\xd7\xc4\xfc\ \x4b\xe8\x9c\x6d\xda\xf8\xc6\xd4\x07\x47\xbc\x34\x0f\x97\x4d\x57\ \x96\xfc\x9d\x88\x3f\x7b\x0f\x68\x84\x08\x57\x46\xa8\x99\x99\x59\ \xa1\xb5\xb5\xf5\x25\x47\x47\xc7\x6f\xdd\xdc\xdc\xee\xba\xbb\xbb\ \xeb\xd1\xc2\x86\x1f\x71\xf0\x18\x41\x3c\xf2\xe3\x81\x73\x2d\x1f\ \xc4\xbf\xaa\xa2\x03\x8b\xd4\x94\xcd\x22\xfc\x6c\x94\x39\x8f\x13\ \xf1\x57\x2f\x22\xb5\x58\x0e\x53\xc6\x02\x71\xaf\xe3\x62\x49\x60\ \xec\x65\x24\x32\xb6\x8b\xcd\xf6\x3a\x63\x22\x63\xca\xb8\xa1\x8a\ \xec\xd0\x19\x4a\xfd\x8e\xd9\x2a\x4a\x78\x4d\x45\x07\x59\x44\xce\ \x5b\x9a\xbe\x80\x99\x4a\x2c\xc7\xbc\x3f\xdb\x13\x8f\x7b\x13\x2a\ \xc5\xc6\xc4\x6e\x1e\x2b\x3a\xc1\x43\xe3\x25\x81\x49\x42\xe0\xf3\ \x82\x33\x82\xb1\xc8\x7a\xa4\xe2\xec\x26\x6b\xa5\x3e\xda\x41\x45\ \x49\x6e\x2a\x4a\x5f\xac\xa6\x3c\x6f\x4d\x9f\xff\x4c\xe5\x31\x31\ \x18\x23\x51\x5f\x61\xe8\xab\xd8\x58\xcc\x08\x6e\xcb\x67\x19\x23\ \xc5\x12\x8d\x11\xed\x28\xe1\x1b\x29\xfe\xf6\xb4\x1b\xa5\x28\xd8\ \xcc\x22\x3e\x9a\xa3\xa2\xe4\x79\x2a\xca\x58\xa2\xa6\x13\xcb\x34\ \x7d\xab\x6d\x95\xd9\xe2\x33\xad\x7c\x24\xc4\xa0\x57\xcb\xef\x33\ \x32\x84\xf1\x8c\xe8\x08\x23\x7f\x41\x1c\xb7\x09\x0c\x33\x86\xb9\ \x80\x2f\x8b\x28\x0c\xb3\x51\xea\x63\x1c\x55\x94\x32\x5f\x4d\x99\ \x1e\x6a\x2a\x58\xa1\x79\xc8\xcb\x81\x4b\x6a\x11\x43\x25\x8b\x30\ \xb0\x73\x63\xd1\xb9\xc9\x80\xe5\x98\x22\x5e\x3d\x2f\x33\x66\x30\ \x6c\x18\x33\x07\x60\xad\xed\x28\x45\x71\xb8\xad\x52\xbf\xd3\x49\ \x45\xda\x05\x6a\xca\x62\x11\x27\x57\x68\xf4\xfe\xb6\xca\x3c\x21\ \x42\x69\x88\x00\x23\x31\xfa\xe1\x62\xd4\x16\xa2\x53\x5b\xc6\x6c\ \xc6\x1c\x86\x33\x63\xae\x38\x39\xfd\x80\xbd\xd1\x76\xb4\xe2\xec\ \x36\x16\xb1\xcb\x59\x45\x7b\xdc\xd5\xf4\xd9\x52\x0d\x15\xae\xd4\ \xe8\x1d\x4c\x8d\xf0\x82\x1e\x67\xa8\x00\x95\x58\xff\xf1\x8c\xa9\ \xe2\xfd\xef\x28\x3a\xc2\x7f\x47\xf3\x19\xee\xe2\x44\xf4\xc3\x5d\ \x6c\xba\x30\x16\x51\x1a\x61\xc7\x22\x5c\x54\xb4\x97\x45\xac\xb7\ \x57\x55\x61\xaf\xc8\xb3\xfa\x1f\x08\xc0\xf1\xdb\xcc\x22\x3e\x8f\ \x98\xa5\xd4\xaf\x9a\x6a\x8c\x57\xb3\xaf\x38\x41\x43\x9e\xf6\x12\ \x38\x0b\xa1\x0e\x8c\x90\x09\xc3\x15\x59\xe2\x3b\x31\x45\x0c\x48\ \xfd\x34\x37\xa1\x8d\xf0\x4f\x67\x4c\x63\x58\x8a\x99\x1b\x2f\x8e\ \xec\x30\x83\x36\xe1\x13\x1e\x43\x73\x61\x4f\x14\x53\x3d\x5e\x08\ \x1f\x23\x06\x31\xac\xff\x18\xfe\x06\xa3\xbf\x6b\x5c\x6e\x71\x2e\ \x0b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xbf\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x04\x86\x49\x44\x41\x54\x78\x5e\xed\x97\x4b\x68\x5c\x55\ \x1c\xc6\x7f\xe7\x3e\xe6\xce\x9d\x4c\xdb\x74\xa6\x51\x62\x1f\x31\ \xb5\x3e\xaa\x56\x14\x6d\x4b\xc5\xa0\x45\x5c\x88\x42\xd7\x45\x44\ \x5d\x98\x4d\x57\xd2\xba\x13\x44\x5c\x88\xa5\xd2\x45\x49\x17\x51\ \x5a\xdc\xb9\x11\x8a\x62\x17\x15\x74\x40\x25\x62\x6c\xa8\x24\xe9\ \xcb\x3c\x6c\x4c\x5b\xd3\x47\xd2\xc9\x64\x3a\xaf\x7b\xef\xf1\xe4\ \xdc\x99\x0c\x32\x99\x6b\x4b\x07\x5d\xe8\x07\x3f\xce\xdc\x33\x7f\ \xbe\xf3\xdd\x73\xce\x7d\xf1\x9f\x97\xa0\xaa\xde\xde\xde\x97\x80\ \xad\xfc\x33\x1a\xec\xef\xef\xff\x0a\xc0\xa2\xae\xad\x9d\x6b\x37\ \xbc\xbb\x71\x63\x37\xa6\x69\x72\xfa\xa7\x32\x67\x06\x0b\x2c\x64\ \x7d\xee\x44\xc9\x55\x26\x9b\xb7\xba\x3c\xbc\x2d\x86\xef\xfb\x4c\ \x4c\x4c\x72\xf9\xe2\xd4\x7b\x40\x43\x00\xbe\xf9\x36\xc3\xf0\xe8\ \x19\x52\xa9\x35\x5c\xb9\x60\xf1\xc6\xbe\x67\x68\x85\x8e\xf6\x7f\ \xcf\x95\xa2\xc7\xc0\x0f\x19\x52\xe9\x0e\x36\x3f\xb0\x11\x80\x86\ \x00\xb6\x65\xd3\xde\x9e\x22\xbd\xa6\x03\xd7\x74\x89\xc7\xe3\xb4\ \x42\x5d\xf7\xdd\x43\x62\x55\x41\x9f\x98\x1a\x03\x60\xf9\x00\x31\ \x27\x8e\xeb\x26\x48\x24\x92\x38\x66\x1b\xe7\xce\x8d\x83\x65\x81\ \x1d\x03\xc7\x41\x25\x02\x55\xa3\xdb\x98\xa3\x88\x85\xff\x7b\x1e\ \x94\xcb\x8a\x12\x14\x8b\x50\x52\xe8\xb6\x04\x95\x32\xab\xd3\x2b\ \x31\x1d\x93\xc7\x1e\x7f\x8a\xf1\xb1\xf3\xcd\x03\x18\xa6\xa1\xb0\ \x14\x26\xea\x80\xed\xdb\x9f\xc4\xda\xb5\x0b\xb9\x76\x2d\x48\x89\ \xc8\xe5\x08\x76\xec\x20\xd8\xb3\xa7\xde\xef\xfb\x3a\x9c\xbf\x77\ \x2f\x74\x75\xa9\xfe\xdd\x61\x3f\x84\xfd\x07\x0f\x72\xe2\xc4\x19\ \xed\x19\x7a\x8b\xe6\x01\x02\x3f\x50\xf8\xf8\x9e\x22\xf0\xf4\x12\ \xf8\xed\xed\x58\x47\x8e\x22\x90\xc8\xb9\x59\xfc\x37\x7b\x71\xf6\ \xed\xc3\x53\xfd\xf6\xd1\x23\x48\x40\x9e\x1c\xc2\xfc\xe8\x00\xc6\ \xc7\x9f\xe8\x7a\x5b\xd5\x4b\x01\x02\x00\x89\xa7\xbc\x4c\xe5\x1b\ \x68\x64\x44\x00\x29\xf1\x03\x3f\xc4\xf3\x19\x19\xf9\x8d\x4d\xd7\ \x66\xc9\xbf\xf2\x2a\xc2\x10\x04\x2a\xd0\xf5\xb7\xde\xe6\x66\x60\ \xd0\x2d\x04\x93\xc9\x95\x60\x5b\xf0\xec\x73\x74\xef\xdf\xcf\xa4\ \x34\xd8\x74\x23\x4b\xfe\xb5\xd7\x21\x08\xc8\x6d\xdb\xc1\xdc\x0b\ \x2f\x6b\x2f\xac\xd0\x37\x90\x11\x01\x64\x20\x09\x34\x01\x81\x0c\ \xe8\xe9\x79\x82\xb9\xbb\x3b\xe8\x3c\xfe\x25\x35\xdd\x4b\xa8\x39\ \xc3\xa0\xc7\x32\x41\x4a\x2a\x43\x27\x29\x74\x77\xd3\xb3\x7a\x25\ \x73\xe9\x14\x9d\x5f\x1c\xa3\x2e\x18\x1d\x9e\x42\x04\x81\xf6\x96\ \x41\x44\x00\x90\x21\x32\xc4\x71\x1c\x84\x10\x61\x0b\x48\x04\x08\ \x89\x40\x40\x36\xcb\xfc\xee\xdd\xba\xce\x48\xa7\x49\x7d\xb8\x1f\ \xb3\x5a\x1f\x77\xe2\x48\x21\x41\xa2\x6b\x6b\x7e\xa0\x89\x0a\x20\ \x42\x44\xc8\xc9\x91\x29\x64\xdf\xa7\x4c\x4f\xfc\x01\x31\x1b\xe5\ \x0c\x8e\xad\x88\xc1\xd0\x29\xb0\x6d\x85\x09\x9e\x8f\xac\x78\x88\ \x62\x19\x8e\x1d\x67\xfa\x5a\x0e\xd4\x6f\x59\xae\x20\xca\xde\x92\ \x1f\x68\x9a\x07\x10\xa2\x86\x20\xd9\x6e\xb3\xf3\xe9\x47\xb9\x25\ \x99\x66\x18\x2a\x99\x60\x39\x9d\x1a\x1c\xa2\x58\x14\x35\xff\xe6\ \x01\x10\x02\xa1\x31\x58\xbf\xbe\x03\xdb\xb6\x69\x81\xb4\xd7\xd8\ \x58\x4e\xfb\x22\x22\x67\x40\x60\x18\xa6\x42\x90\x70\x5d\x7e\x3e\ \x75\x9a\x55\x2b\x92\xfa\xfe\x70\xfb\x0a\x2f\xeb\x6c\x6e\x41\x7b\ \x19\x86\xa1\x11\x51\x01\x0c\x21\x10\x86\xd0\x85\x17\x2f\xcd\x70\ \xf5\x7a\xb6\x1a\x0c\x90\x20\xa1\xe1\x58\x84\x7b\x4c\x4b\xd0\x28\ \x09\x94\x4a\x45\x4c\xc3\x08\xbd\xa3\x02\x84\x05\x3a\xa9\xc2\xd4\ \x4f\xc5\x56\xc8\x54\x5e\x42\xa1\xbc\x55\xfb\xb7\x4b\x60\xe8\x81\ \x2f\x4c\x8e\x31\x3d\x3d\x45\xa1\x90\xe7\x4e\xe4\xba\x6d\xac\x5b\ \xb7\x81\x74\xc7\x5d\xb7\xb2\x04\x46\x18\x40\x11\x48\xc9\x07\xef\ \xbf\xc3\xfc\xfc\x3c\xf9\x7c\x9e\x4a\xa5\xb2\x14\xd0\xb2\xac\x25\ \x6c\xdb\xd6\xad\x0a\xad\xc3\x03\xfa\x46\x56\x2e\x97\x97\xf8\xec\ \xf3\xe3\xda\x53\xa1\xc7\xa8\x0b\x8c\xc6\x19\x10\x08\x55\xb8\x3a\ \x95\xa6\xa6\x81\x81\x01\xfa\xfa\xfa\x38\x7c\xf8\x30\x87\x0e\x1d\ \xd2\xc7\xb7\x21\xed\xa5\x3c\x15\xfa\x2a\x8b\x0a\x50\xdf\x84\xae\ \xeb\x52\xd3\xc8\xc8\x08\xa9\x54\x8a\x74\x3a\xad\x19\x1e\x1e\x26\ \x4a\x52\x4a\xea\x42\x7b\xd5\x4e\x4c\x44\x5f\x86\xb5\x65\x10\x48\ \x59\x2f\x4c\x24\x12\xfa\xc9\x58\x9d\x62\xdd\x46\xa8\x61\x90\xb0\ \x5e\x52\xed\x8d\x98\x01\xaa\x09\x17\x43\xd4\x4d\xea\x9b\x27\x34\ \xbf\xfd\xab\x43\x82\x44\x11\x3e\xe4\xa2\xee\x84\x20\xaa\x80\xa0\ \x55\xf2\x03\x4f\xbf\x0b\x94\xcb\x25\x4d\xd3\x19\xf0\xbc\x32\xa5\ \x52\x89\x52\xb1\xa8\x77\x76\xcb\x24\x21\xb7\x90\x63\x66\xe6\x32\ \x37\xe6\x66\x9b\xcf\xc0\xcd\x85\x9b\xcc\x67\xb3\x38\x4e\x9c\x15\ \xc9\xb6\x16\x06\xf0\xb9\x30\x3e\xc6\xd8\xf9\xb3\xb4\x25\xdc\x0c\ \x30\xb8\x6c\x80\x42\xa9\xc0\xd5\xab\x33\x78\xbe\xa7\x03\x64\xbe\ \xfb\x91\x64\x32\xc9\xce\xe7\x5f\x6c\x78\x8e\x4f\x4d\xcf\xd0\x5c\ \x02\x89\xc4\x57\x3e\xb3\xb3\x37\x50\xdf\x01\x8c\x8e\xfe\x42\x3c\ \x66\x67\x1e\x7a\xf0\xfe\x03\x40\x66\xd9\x00\x97\xa6\x7f\xe7\xd7\ \xb3\xa7\xf5\xa6\xfb\xda\xb2\xf4\x86\xbb\x13\x49\x19\xbe\x5d\xf9\ \x9e\x47\x57\x57\x57\x66\xcb\x96\x47\xf4\xe0\xea\xab\x28\xff\x6f\ \x7c\x9a\x0d\xd6\x07\xaf\xeb\x7f\xfd\x09\x8d\xfd\xd4\x8a\xd6\x19\ \x48\x3f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x08\x27\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x07\xee\x49\x44\x41\x54\x58\xc3\xa5\x57\xdb\x6f\x1c\x67\ \x15\x3f\xdf\x37\x33\x3b\xbb\xf6\xde\xf1\xae\xd7\x4d\x4c\xec\xc4\ \xbd\xd8\xc6\x4d\x2f\x69\xac\x06\xa9\xa1\x69\x65\x1a\x55\x20\xa1\ \x08\x81\x84\x90\x5a\xfe\x86\x3e\xf5\x91\x8a\x17\xf2\xc8\x1b\x54\ \x15\x2f\x51\x2a\x11\xc2\x25\xbc\x24\xa0\x2a\x42\x7d\x08\x22\x02\ \x29\x50\xb5\x6a\x9c\xae\x6f\x2a\x8e\xd7\x97\xb5\xd7\x7b\x9d\xcb\ \xd7\xdf\x39\x33\xeb\x26\x24\xb5\x70\x98\xf5\xfa\x9b\xf9\x76\xe6\ \x3b\xe7\xfc\xce\xef\xfc\xce\x37\x8a\xf6\x39\xe6\xe6\xe6\x66\xdf\ \x79\xe7\xa7\x3f\xaf\xd5\xd6\x15\x0e\xa3\x14\xcf\xca\x3f\xd2\xf8\ \xf0\x1f\x5f\xaa\x78\xce\xec\xfd\x8a\x73\x63\x54\xa5\x52\xd1\x17\ \x2e\x5c\x78\xf7\xfc\xf9\xf3\xbf\xfe\x2a\x1b\xf6\x7e\x0e\xb8\xae\ \x5b\x9a\x99\x79\xfa\xa5\x20\x08\x28\x0c\x43\xd2\x5a\x13\x1c\x89\ \x46\xa3\xc8\x68\x43\x5a\x69\x18\xe3\x39\x18\x8f\x1d\xe4\x7b\xe0\ \x00\x59\x96\x45\xd9\x6c\xf6\xaf\xfb\xd9\xd8\xd7\x01\x2c\xd2\xee\ \x76\xbb\xb4\xb1\xb1\x21\x0b\xf6\x1d\x60\x83\x2a\x36\xae\x30\x6f\ \x30\xaf\x79\xc4\xb5\xd6\x91\x71\xad\x0c\x7d\x6d\xa8\x4c\xed\x76\ \xbb\xb9\x9f\x0d\xbd\x1f\x00\x2f\x9c\x98\x7d\xd3\xb2\x2d\xb2\x6d\ \x1b\x0b\x5b\x12\xa5\x46\x54\x96\xa5\xc8\xd2\x98\xe3\x68\xf9\x9a\ \x1d\xc3\x88\x5b\x31\x2a\x89\xdc\xe0\x77\x1b\x13\xcf\x3c\xf3\xec\ \xf7\x2a\x95\xb1\xb1\x03\x3b\x30\x36\x36\x96\xaa\x8c\x8c\x7c\xdb\ \x84\x8c\x44\x18\xc1\x1b\xe2\xf6\xd0\xc8\xef\x21\x3e\xca\x8a\x6f\ \x8e\xb0\xa7\x80\x2c\xfe\x17\x4d\x21\x65\xdd\xae\x47\x13\x13\x4f\ \x3c\x3f\x3e\x3e\x72\xe4\xc0\x0e\xec\xec\xec\x84\xad\x56\xbb\x19\ \xe5\xde\x12\x58\xe5\x6e\xbd\x47\x33\xfc\xc5\x8f\x07\x91\x55\x8b\ \xad\xf7\x9d\x12\x94\x88\x76\x77\x77\x03\xcf\x33\xfe\xa3\xa4\x00\ \x06\x38\x9f\xc1\x7d\x51\x72\x64\x7b\x55\xd0\x3f\x2c\x2b\x76\xc9\ \x62\x68\x62\xa7\x34\x85\x78\x26\xba\xdd\x7f\x14\x0e\x14\xc9\x47\ \x64\x12\x39\x1b\xe7\x28\x31\x06\xf7\xdc\x11\xf4\xaf\x8c\xf9\x12\ \x95\xfe\xc2\x56\x20\xe9\x0a\x43\x9f\x94\xaf\xcc\x81\x1d\xd8\xdc\ \x9c\x6f\x60\xc1\x5e\x88\x45\x24\xfd\x80\xd4\xc0\x09\x39\x17\x24\ \xe8\xcb\x68\xef\x2f\x9d\x68\x08\xac\x3e\x68\x61\xcf\xf4\xb6\xf7\ \x2d\xc3\x81\x81\x81\xc7\x86\x86\x86\xa6\xfb\x4b\xa2\xd4\xc2\x91\ \x91\x91\x74\x22\x61\x0f\x16\x0a\x05\xc2\x6f\xf4\xa8\x47\x36\x9b\ \xd3\x85\xc2\xd0\xb7\x8e\x1d\x3b\x56\x46\x75\xe8\x28\x63\x96\x46\ \x79\x2e\x2f\x2c\x2c\x7c\x22\x3e\x9e\x3c\x79\xf2\x67\x47\x8f\x1e\ \x7d\x1b\x82\x13\xa0\x74\x8c\x6d\x3b\x1c\x88\xbe\x7e\xfd\xba\x7e\ \x6a\xf2\x49\x44\xab\xc8\x67\x32\x5a\x26\xe6\x45\xac\x01\xd0\x02\ \xf6\x58\x33\x19\xd5\xbd\x20\x44\x38\x25\x12\x09\xaa\x56\x97\xe9\ \xc9\xa7\x26\x4c\xb9\x54\xf2\x71\x28\x46\x51\xa3\xae\xb7\xb7\xb7\ \xff\x7c\xe9\xd2\xa5\xd7\x04\x81\xd1\x43\xa3\x4f\xa7\xd3\x69\xea\ \xf5\x7a\x64\x27\x5c\x55\xc8\x65\x45\x4a\x57\x56\x96\x89\xbf\xff\ \xef\x31\x3e\x3e\xaa\x86\x87\x87\xf5\xca\xd2\x12\xf5\xc0\x09\xdd\ \x0b\x29\x9f\xcf\x4f\x65\x32\x99\xa2\x0d\x78\x33\x2f\xbd\x7c\x7a\ \xf2\xf5\xb3\x67\x29\xe1\xba\x1a\xd2\x49\xb9\x5c\x8e\x96\x97\x97\ \x59\xc5\xe8\xf8\xf1\x19\x4a\x26\x07\x38\x4d\x94\x4a\xa5\x58\x9e\ \xc9\xc5\xe8\x58\x56\x2c\xcb\xcc\x74\x23\x52\x8d\x08\x25\x08\x7e\ \xae\xdd\xee\x40\x07\x3a\x74\xeb\xd6\xbf\xe8\xec\xd9\xd7\xcc\x99\ \x33\x67\x94\xe7\x79\x54\xaf\xd7\xc1\xaf\x4d\x9a\x9f\x9f\x2f\x7f\ \xf8\xe1\xdf\x1e\xb7\xf1\x60\x7e\xbd\xb6\x36\xf4\x9b\x4b\xbf\xa5\ \xd4\x40\x4a\x65\x06\x07\x69\x7a\x6a\x8a\x3e\xfa\xf4\x53\xfa\xe0\ \x83\xbf\x00\xc2\x05\x40\xe9\x90\x03\x35\xb4\x00\x69\x82\x15\xd0\ \xd6\x7b\xb2\xac\x44\x0f\x43\x0a\x90\x16\xdf\x67\x47\x3c\x8c\x01\ \x79\x5e\x47\x9c\xba\x75\xeb\xdf\x74\xe8\xd0\x63\x6a\x76\x76\x56\ \x55\xab\x55\xea\x74\x7a\x28\xa8\x0e\xa5\x06\x07\x1d\xa5\xfc\x8a\ \x0d\x42\xb8\xff\xf9\x7c\xd5\x76\x12\x96\xe4\xcc\x76\x5c\xda\xaa\ \x6f\xd2\xc7\x1f\x7f\x42\xb5\xbb\x9b\x20\x4c\x15\xc6\x6c\x31\x66\ \xb3\x41\x9b\xcf\xb5\x30\x9c\xb9\xa0\x58\x98\x4c\x3f\xf7\x81\xd4\ \xbd\xef\x7b\x18\xa3\x06\xc5\x11\x5f\xbb\x76\x8d\xa6\xa7\xa7\xe9\ \xc6\x8d\x1b\x34\x3a\x7a\x98\x56\x57\xef\x12\x93\x1b\xcf\xa7\x6c\ \xf0\xce\x6d\xb5\x5b\x56\x6f\xbb\x47\xc9\x44\x92\x12\xc9\x04\xb5\ \x9a\x4d\x2a\x95\x2a\xf4\xa3\x1f\xff\x10\x91\x84\xa2\xe9\x71\x73\ \x12\x55\x74\x1c\x2d\xba\xc7\xfa\xa3\x94\x25\xda\xcf\x5f\x25\x6a\ \x19\x21\x23\xd5\x04\xe7\xbc\x8e\x47\x83\xd9\x41\xba\x78\xf1\x22\ \xab\x2b\xdd\xb9\x33\x4f\x4d\xa4\xe7\x9b\x2f\xbe\xc8\x28\x26\x19\ \x01\x67\x6b\x6b\x4b\xe3\x0b\x0e\x00\x62\x3b\x41\x0e\x90\x28\x14\ \xb6\x69\x7d\x7d\x83\x9a\xad\x06\x9a\x8c\x13\x35\x98\xb8\x23\x72\ \xce\x6d\x8e\x1c\xe7\x96\x62\x2e\xa0\x13\xb2\xf4\xca\x39\xa7\xc7\ \x08\x12\xdc\xc6\xf9\xfe\xb1\xaf\x8f\x51\xbb\xd3\xa6\x2c\xc8\x0d\ \x57\xa9\x98\x4f\xd2\xc6\xe6\x3a\x07\xe7\xd8\x80\xc2\x01\xe9\xf8\ \x19\xb2\xe1\x00\xe7\xd7\x45\x19\xb2\x91\x84\x63\x93\x5b\x2c\x89\ \xb1\x30\x36\x4e\x6c\x00\x0a\x68\xa8\x1f\xa9\xa1\x28\x70\x2d\x8e\ \xb0\x61\x15\xb7\x65\x9e\x63\x27\xba\x5e\x97\x4a\x43\xa5\x58\xd1\ \x91\x4a\x09\x82\xe8\xc8\x91\xc3\x09\x29\x43\x07\x51\x5b\x29\x10\ \x2d\x8e\x94\x11\xe0\xf1\xf3\xd5\x26\x34\xc0\x48\x83\x91\x5a\xa7\ \xa8\xee\x59\x62\xf9\x23\x68\x50\x5f\xbe\x1e\x94\xc5\x7e\x65\xa4\ \x06\x53\x84\x1a\xc2\x63\xdc\xaa\x81\x1a\x02\x4c\xb9\x49\xe9\xa8\ \xe2\x40\xa7\xdb\x22\x03\x06\x6b\x27\xea\xeb\x5c\x8a\x4c\x98\xdb\ \xb7\x6f\x53\x3a\x9d\x89\x34\x5e\x7f\x85\xf4\xc6\x7d\x8a\x49\xf7\ \xdf\x37\x70\xb4\xe8\xa8\xb4\x50\xfd\x8c\xde\x78\xf3\x27\x52\x9e\ \xbc\xb7\xb0\x11\xb7\x74\x59\x7c\x98\x84\xa1\xe7\xf9\x66\x67\xa7\ \x81\x12\xe9\xc4\xdb\x2d\x43\x50\xaa\x18\x42\x2e\x1b\xc4\xcb\x98\ \xe1\xda\xc4\xdd\x90\x11\x62\x78\x2d\xee\x78\x7d\xf5\x93\x6d\x62\ \x18\x2b\x61\xb4\x3d\xe3\xdc\x36\x5b\x1d\x59\x8f\x75\x80\x2b\xcd\ \xf1\x1c\x51\x52\x68\x46\x68\x43\x14\x3c\xb8\x1a\xa6\xd3\x29\x61\ \xb6\x83\xbc\x33\x21\x5f\x9d\x9b\xa3\x7f\xde\xfc\x07\x3d\x7f\xe2\ \x39\x6a\x34\x1a\x91\x31\xc7\x11\xe7\xa4\x41\xa9\x28\x5e\x01\x06\ \xe7\x5d\x44\xca\x24\xe5\x2f\x0b\x16\x8f\x0e\xee\x5f\x82\xfa\x4d\ \x4e\x4e\x23\xb8\x16\x41\xf9\xe2\xbd\xa2\x23\x82\xb6\xba\xba\xda\ \xe3\x2a\xe8\x16\x0b\xc5\x80\x17\x14\x82\x00\xa2\xc6\x6e\x83\x26\ \xc6\x8f\xd1\xd2\x42\x95\xa0\x60\x92\x0a\x46\x83\xf3\x99\x48\xb8\ \x22\x36\x26\xee\x09\xd1\xce\xc0\x50\xbe\x58\x10\x27\x79\x0d\xbe\ \x8f\xa3\x4d\x0f\xa6\x45\x41\x27\x26\x26\x68\x79\xb1\x4a\x59\xd4\ \xbe\x8a\xd1\x73\x41\x78\xce\x3e\xa7\xa0\x9d\x4c\xba\x5e\x32\x99\ \x24\xdf\xc3\xc6\x01\x24\x71\xa1\x56\xdb\x3b\x75\x3a\x71\xe2\x05\ \x3a\x77\xee\x9c\x20\xc0\x9b\x53\x96\x59\x8e\x8a\x9d\xe1\xf3\x24\ \x88\xc4\x7b\x02\xde\x1d\x6a\x10\xab\xd9\xde\x15\x22\x37\x00\x77\ \x11\x1d\x94\x25\xfd\xef\x37\x6f\xd2\x95\x3f\x5c\xa1\x16\xd6\xd4\ \x8d\x6d\x04\x98\x90\x72\x65\x27\x11\x40\x93\x1d\xd8\x45\xd4\x2d\ \x5c\xe4\xba\x7e\x17\xcd\x3b\x14\xad\x1e\x1e\x2e\xd3\xf1\x67\x9f\ \x8b\xd8\xec\x83\xaf\xd8\x17\xa2\x45\xd3\x0e\x94\x8d\x89\xca\xcd\ \x8b\xa3\x74\x8c\x4d\x1d\x8c\x0a\x5c\xc9\x0c\x64\x44\x05\xf3\xc5\ \xa2\x18\xe7\xe3\x1b\x33\x33\x74\xe5\x8f\x7f\x42\x2a\xee\x08\x7a\ \x4a\xd9\xb2\xc7\x2c\x97\xcb\x0c\xdf\xba\x0d\x75\xda\x86\x03\xd5\ \x53\xa7\x4e\x8d\x6c\xd5\xb7\x40\x0e\x9b\x76\x1a\x75\x0a\xe0\x61\ \x2e\x97\x91\x45\x3a\xbd\x8e\x30\xb8\x66\x6a\x28\x21\x9b\x02\x90\ \x95\x11\x60\x54\x38\x65\xec\x08\xc3\xaa\x81\x6a\x13\x73\xdc\xa8\ \xf8\x77\x26\x1c\x6f\xd7\x0b\x85\x22\x9d\x3e\x7d\x46\xd0\x63\xf6\ \xbb\xae\x43\x8b\x8b\xcb\xcd\x95\x95\x95\x05\x2e\xc3\xe0\xf2\xe5\ \xcb\xbf\xb8\x7a\xf5\xea\x47\x41\xb4\xb9\x34\x5e\xe0\x85\xaf\xbc\ \xfc\xea\x2b\xdf\x79\xfd\xbb\x8f\xf3\x04\x47\x53\x2a\x95\x61\xb0\ \x05\x07\xb0\x68\xfc\xe2\xc1\x0b\x1a\x13\x75\x42\x2b\xde\x17\x0e\ \xc0\x39\x17\xe9\xdc\xdb\x2e\xc2\xc1\x64\x32\xb1\xf5\xde\x7b\xbf\ \xfa\x5d\xab\xd5\xf2\x94\x1c\x96\xee\xf5\x5a\xb7\x11\x54\x4d\x74\ \x00\x3b\x93\xf7\x31\xbc\x7f\x6f\x0d\x7f\xff\xdc\x0f\x7e\x8f\x8e\ \x25\x0e\x2c\x2e\x2e\x51\xb1\x98\xa3\xf5\xb5\x4d\xc9\x7f\x06\xc8\ \x14\x01\x73\xe0\x05\x54\x07\x57\x98\xd1\x4c\x36\x18\x10\xa6\xd7\ \x37\xeb\x48\x43\x5e\xd6\x69\x34\x77\x01\x77\xa5\x0e\xa4\xdf\x42\ \x45\x6c\xfd\xaf\x6f\x46\x4e\xad\xb6\x96\xab\x54\xca\xf1\xae\xdb\ \x17\xd2\xb0\x61\x8e\x96\x91\x5a\x44\x79\xd9\x0c\x3b\x1c\x62\xce\ \x64\xf3\x79\x70\xc5\xa7\xb5\xb5\x35\x51\xc9\xbe\x03\xf9\x6c\x0e\ \x4d\xa8\x31\x80\x68\xdd\x83\xbc\x9a\xd9\x3b\x8d\x5d\x8f\x21\xe6\ \x63\x6a\x6a\x92\xee\xdb\x73\x1d\xe0\x88\xd4\xb0\xd9\xa9\xd5\x6a\ \xe6\x20\x0e\x74\xd6\x6b\x77\xdf\x5d\xa8\x2e\x3c\x11\x84\x41\x4a\ \x47\xdb\x9e\xfb\x84\x56\xdd\xfb\xaa\xfc\xe0\x3b\xa5\x8a\x34\x82\ \x42\xa4\xa7\x57\xad\xce\xff\x12\xe7\xb5\x87\x3a\xb8\x8f\xf3\x16\ \xf6\x6d\x87\xc1\xe6\xe2\xc3\x1c\x85\x01\xcd\x9b\xcc\x07\x22\xb2\ \x6d\x45\x7b\x2f\xee\xe4\xa3\x12\x6a\x90\x61\xde\x58\xf6\x1e\x66\ \xe4\x0b\x0e\xbc\xe6\xb9\xc1\xb6\x6c\x63\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xd3\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x04\x9a\x49\x44\x41\x54\x78\x5e\xad\x97\x4d\x6f\x1c\x45\ \x10\x86\xdf\xea\xee\x19\xaf\x0d\x17\x8e\xf8\x1f\x84\xbf\x00\x97\ \xfc\x0b\xc8\x81\x13\x1f\x02\xc9\x9c\x40\xe2\x12\xad\x36\x41\x0a\ \xe1\x00\x32\x27\x90\xe0\xc0\x85\x5c\x80\xdc\x90\x10\x87\x48\x28\ \x48\x11\x90\x4b\x82\x42\x40\x41\x0a\x06\x7f\x60\x47\x89\xbd\x8e\ \x63\xef\xcc\x74\x15\xbd\x35\x2d\xb5\xd4\x9a\x99\x55\x14\x4a\x7a\ \xdd\xed\x9e\x9a\xee\xda\xad\x67\xab\x66\x48\x44\xb0\xc8\x4e\x9f\ \x99\x10\x80\x20\x35\x42\xbf\x09\xe2\x78\xe5\xcb\xb1\x60\xb1\x41\ \x03\x88\x87\x7c\x0f\xc1\x33\x7d\x7e\x03\xeb\x32\x14\x4c\x8f\xbe\ \xba\x72\x69\xfc\x3e\x00\x38\x24\x7b\xee\xe2\x87\xe3\xd5\xe9\x11\ \xc0\x0c\x78\xcf\x60\x08\x7c\xc3\x78\x6a\xc5\xc1\x7b\x81\x73\x06\ \x44\x61\xb4\x84\xaa\x06\x44\x80\xba\x66\xbd\xb9\x2c\x0d\xaa\x86\ \xf5\xe6\xb2\x74\x30\x66\x7e\x0d\x3a\x8a\xb4\x32\x46\x30\x1a\x01\ \x67\xdf\x39\x07\x00\x1a\x80\x41\x32\x75\x76\x16\x00\x01\xd7\x37\ \x80\x95\x91\x0d\x87\x5b\x5c\xff\x8b\x40\x44\x98\x55\x8c\xab\x7f\ \x88\x1e\xce\x2c\x61\xbd\xf5\x2d\x9c\xd1\x39\x7b\x8f\xa7\x43\xb0\ \x3f\xdc\xae\xd1\x34\x0c\xcf\x8c\x5f\xc2\x7a\x55\xd7\x18\x2d\x01\ \xd7\xfe\x14\x14\x96\x16\xa6\x20\xcf\x33\x25\xa5\xff\x7b\xf2\x2f\ \xd9\x5c\xb2\xeb\x83\x29\xb8\x0a\xc2\xb9\xb8\xb9\x89\x72\x49\x28\ \x82\xca\x38\x3a\xf5\x49\x0c\x70\x50\x13\x54\x07\x55\x71\x6c\x92\ \xc0\xaa\x0c\xce\x3c\x80\x17\x20\xf8\xb9\x83\x76\x8a\x32\x5d\xdf\ \x46\xcf\xa7\xe6\x34\xc7\x65\x90\xe6\x9b\x22\xec\x48\x41\x64\x10\ \x7e\xb4\x3e\x5e\xbd\x7f\x28\x68\x9a\x90\xcb\x65\x87\x59\xed\xf5\ \x5c\xe7\x28\xac\x49\xbb\x23\x0b\x0a\x07\xd4\x0d\x60\x0c\xc1\x7b\ \x8f\xa5\xd2\x29\x64\x27\xb3\x26\xe4\xda\x29\x1f\x9e\xe7\x3c\x58\ \xbc\xfb\xb6\x02\xf7\x41\x47\x4a\x90\x43\xa8\x90\x15\x86\xe0\x8c\ \xc1\xb5\x3b\x61\xe3\xc2\x62\x79\x44\xb8\xf9\x0f\x94\x7c\xdf\x78\ \xfc\xba\x45\xa8\x1b\x81\x35\x84\xeb\x77\x3d\x08\xa4\xdb\xde\x50\ \x1f\xa3\xb0\xdd\xd8\x24\x94\xce\x85\xfb\x09\x03\xdc\x24\x08\x63\ \xa1\xc9\x21\xcc\x65\xd2\xd8\x0b\x21\xf7\xa4\xe0\x22\x00\x9f\xd6\ \x13\x0b\x39\x84\xe7\x01\x58\x55\x82\x6e\x29\x6a\x14\xc7\x32\xca\ \x44\x71\x54\x15\x35\x0b\x3a\xd1\xb1\x55\x95\x71\x83\x21\x08\x7f\ \xd2\xd9\xf0\x27\x4f\x4a\x26\x99\xbe\x05\x61\xbd\xe7\x3e\xe9\x0b\ \xe0\xd4\x7a\x80\xf0\xf8\x44\xdd\xb4\x12\x16\x85\x81\xa8\xbb\x68\ \x3e\x0f\x0e\x6b\x58\x6b\x75\x1d\x68\xab\x60\x59\x92\xfa\x08\x13\ \x5c\x81\xe0\x07\xac\xad\x4d\x18\xc0\xc7\x5d\xc1\x0e\x41\x48\x46\ \xe3\x13\x54\x55\x8d\xdf\x77\x80\xe3\xe3\x4a\xef\xbc\xb9\xc1\x61\ \xce\x58\x59\x2e\xf0\xf7\x81\x81\xf8\xb6\x44\xdf\xd9\x23\x70\x23\ \x28\x1d\xe1\xf6\x8e\xa0\x9e\xb1\xfa\x0f\x7d\x63\x79\x30\x4e\x01\ \x6c\xed\xd6\xda\x5b\x93\xed\xe8\x80\x6c\x03\xf3\x98\x29\xf8\x2e\ \xf3\xc9\x9b\x97\x82\x3f\x07\xd1\xcd\xff\xc4\x20\x7e\x04\xe1\xbd\ \x54\xf9\x50\x46\x8d\x32\x08\x83\x14\x50\x9b\x36\x54\xc2\xeb\x04\ \x1e\x62\x22\x73\x25\xeb\xfa\x15\x3c\x0f\xc1\xb5\x85\x3f\xbf\x34\ \xcf\x8d\x3b\x2a\xa1\x8e\x99\xbe\x06\xe1\x42\x67\x25\xfc\xfc\x93\ \xf1\xb3\xd3\x23\xd6\x85\xc2\x6a\x7b\xd5\x4e\xa7\xbb\xb3\xc4\xca\ \x27\x20\x02\x96\x4a\xc2\xe1\xc3\x1a\xcb\xa3\x02\x00\xd4\xd7\x1a\ \xd2\x2e\xc8\x22\x28\x9c\x85\xb5\x00\x0b\x81\x99\x61\x88\xb0\x32\ \x22\xbc\xfa\xe6\x04\x00\x2e\x74\x41\x88\xaa\xe6\x40\xb1\xd1\xc5\ \x8d\x07\xc0\xca\x92\x81\x08\xe3\xee\x3d\x68\x55\x23\x48\x98\x0b\ \x88\x82\x00\x6c\x4d\x1d\x1a\xef\xb5\x8d\x6f\xee\x1b\x0d\x60\x79\ \x64\xb1\x79\x10\xcb\x03\x08\x77\xf7\x04\xa3\x62\x7e\x4d\x82\xff\ \x70\x1d\xb8\xf5\xc6\xda\x79\x85\xf0\xc9\xeb\xc0\x70\x0a\x3a\x03\ \xc8\x20\xb4\xdd\x10\xaa\xca\x01\x08\xab\xa0\x13\x55\x82\xb1\x8a\ \xf2\xa9\x35\x47\xeb\x87\x50\xcd\x2c\xae\x86\xd1\x16\x7f\xfa\x6f\ \x40\xb1\x23\x0e\xa4\xe0\xd4\x17\x9f\x8e\x57\x99\x81\xd9\xcc\xc3\ \x39\xab\x30\x19\xa2\x08\x20\x00\x22\xad\x90\xce\xcd\x47\xe8\xba\ \xb5\xd4\x8e\x73\x07\x82\xb6\x72\x22\x52\x78\x1b\xcf\x18\x95\x06\ \x2f\xbf\x3e\xe1\xd8\x92\x91\x07\x61\xf2\x2a\xe1\x7d\x4b\xfb\xd6\ \xbe\x1e\xae\xfe\xbb\x0f\x5b\x1c\xd8\x33\xee\x1d\x19\x88\x66\x56\ \xb0\x7d\x80\xb9\x8f\x1e\xfe\xef\x14\x10\x16\x3d\x7c\x67\x4a\x10\ \x69\xdb\xf3\xee\x91\x24\x4e\x30\x0c\xe1\x6f\x21\xd2\x9d\xac\x19\ \xfd\x5f\x29\xb8\xac\x63\x5f\x0a\x62\x35\xec\x68\xc7\x2a\x6d\xc1\ \x4f\xd0\x8e\x9b\xa0\x3a\xaf\x82\x8b\xdb\x71\xde\x54\x1e\x1f\xc2\ \x34\x57\x4b\xe3\xe9\x97\x26\x9d\x4f\xc5\xa7\x2e\x7d\x36\x5e\xad\ \x1b\xc0\x1a\xc0\x2b\x58\x84\xaa\x62\x7d\xe9\xa8\x1b\x41\xe1\x48\ \x8b\x95\xb5\xb1\x3a\x32\x2b\x2f\x14\x63\x25\x52\x30\x15\x5e\x02\ \xe9\xb5\xf6\xe4\xc8\x87\x3e\xee\x09\xce\xbc\xd6\xf3\x62\xa2\xee\ \x22\xfa\x00\xfa\xe0\x11\xe9\x9d\xd6\x52\x00\x4c\x0f\xd7\x03\xf6\ \x4f\x8c\x6e\x29\xcc\xd8\x3b\x54\x50\x15\xb8\xdd\x69\x7b\xb0\x04\ \xdd\x0f\xa0\x1a\x83\x76\xfe\x48\x3f\x50\x0b\xf3\x81\x80\xcc\x40\ \x25\x7c\xf1\x95\xc9\x76\x9e\x82\x01\xe5\x26\x7d\xea\x7a\x31\xc9\ \xde\x8c\xb2\xb7\xe0\xfc\xe5\x24\x41\xe9\xa2\x6c\xfe\x62\x92\x2a\ \x9d\xaa\xce\x2a\x5f\xf6\x30\x9a\xcc\x64\x74\xe6\x30\x71\xda\x34\ \x11\x1e\x75\x9c\x94\xca\x6f\xf4\x6b\x86\x0f\x4f\xf6\x1f\xaa\x7a\ \xaf\xba\x88\x23\x10\x31\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x06\xd2\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x64\x49\x44\x41\x54\x58\xc3\xed\ \x56\x0b\x4c\x95\x65\x18\x46\xb4\x92\x72\x2e\x53\x67\x6e\xea\x32\ \x4d\x52\xcc\x4b\x4e\x41\x42\xa4\x04\x34\x38\x20\x77\xe1\x98\x5c\ \x04\x01\x15\x11\x31\xe0\x80\x5c\xbd\x00\x02\xde\x41\x44\x40\x49\ \x11\x6f\x04\x89\x01\x79\x03\x0b\x02\x2f\x28\x6a\x71\x92\x05\x23\ \xe1\x44\x63\xd0\xdc\x8e\xd2\x76\x36\xb6\xa7\xe7\x3f\x7c\x78\x41\ \x45\x72\x36\xb7\xd6\xd9\x9e\x71\xce\xff\xff\xef\xf7\x3e\xef\xf3\ \x3e\xef\xfb\xa3\x03\x40\xe7\x55\x42\xe7\x7f\x02\xff\x59\x02\x9f\ \xca\xe3\x66\x11\xbe\x44\x0a\x91\x21\x10\x43\xd8\xfc\x6b\x04\x78\ \xb8\x81\x48\x52\xee\x15\x9a\x57\x1f\x9a\x58\xdd\x1a\xb5\xad\xf1\ \x6e\x74\x8a\x4a\xbd\x71\xa7\x4a\x1d\x9f\xa6\xec\x08\x4d\x28\x6d\ \xe2\xfd\x3c\xc2\xe1\xa5\x11\xe0\x61\x16\x52\x85\xf2\xb5\xd9\x4a\ \x45\x92\xb2\x63\x7d\x82\xa6\xcb\x53\x01\x38\x04\x00\x8b\x7c\x00\ \x73\x77\x60\xa1\x27\xe0\xb2\x1a\x88\x4a\x01\x72\x0b\xda\x3b\xad\ \xbd\x93\x6b\x19\x33\xee\xa5\x24\xf6\x0c\xc9\xab\x0f\x4b\x52\xa9\ \x7d\xa2\x00\x1b\x26\x9d\xef\x0d\xcc\x5e\x06\x4c\x77\x03\xa6\x3a\ \x03\x93\xed\x81\x49\xd6\xfc\x2e\x03\x2c\x3d\x80\x2d\x7b\x80\x1d\ \xd9\xb5\x6d\x8c\x0d\x7e\xd1\xc4\xe3\x08\x85\x54\x71\x18\xe5\xf5\ \x8a\x04\xac\xd6\x00\x9f\xac\x60\x62\x26\x9f\xe3\x47\xac\x22\x48\ \x66\xb6\x3f\x30\x8d\xd5\xeb\xbb\x02\x13\x6d\x81\x19\x8e\x80\x37\ \xd5\xc9\x2f\xd1\x74\x49\xad\x7a\x91\xe4\xab\xad\x96\x27\xd7\x06\ \xc7\xd7\xb6\xf9\x6f\x04\x64\x6b\x01\xd3\x95\x80\x31\xe5\x35\x5d\ \x4f\x22\x31\x94\x9a\x32\x7b\xec\x02\xdc\x77\x03\x4e\xc9\x94\x9f\ \xca\x18\x91\xe0\x54\xb6\x62\x06\x89\xc8\x43\x80\x63\xdf\x02\x52\ \x1b\xfe\x71\xd5\xbe\x11\x85\x0d\xeb\x93\x35\x5d\x4e\x3c\xe4\x33\ \x1e\x6a\x12\xc8\xbf\xac\xc8\x2e\x11\xf0\xcb\x04\x62\xbf\x06\xd2\ \xce\x03\x5f\x55\x02\x99\xdf\x03\xf1\x45\x80\x2f\xaf\x5b\x91\xac\ \x21\x9f\x9f\x43\x95\x96\x46\x90\x40\x09\xe0\x1f\x99\x57\xdf\xdf\ \xe4\x0e\xd6\x52\xd5\x09\xb5\x6d\x2b\xe2\x68\xac\x75\xec\x73\x50\ \x77\xe2\xc5\x4c\xec\x9b\x05\x6c\x66\xa2\x23\x97\x81\x1f\x1a\x80\ \xd3\x97\x54\xea\xe4\x9c\xf2\xe6\x80\x4d\x79\xf5\xf1\x39\xd5\xad\ \xc9\x67\x81\xe5\xfb\x80\x05\xd1\x8c\x09\x66\xe2\xad\xc0\xa9\x72\ \x80\xe7\xd6\xf4\x4b\x72\x87\x95\xa9\xb7\xc2\xb6\xb5\x77\xba\x92\ \xb9\x39\x0f\x30\x0b\x63\x45\x5b\x28\x73\x3a\x10\xce\x8a\x0f\x54\ \x01\x15\x8d\x40\xe9\x55\x95\xda\x2d\x28\xf5\x96\x98\x79\xb9\xd8\ \x05\x31\xc9\x27\x38\x7e\xc7\x01\xc7\x6d\x80\xfd\x26\x4e\x02\x09\ \x9f\xf9\x51\x78\xe0\x91\xd9\x35\x78\x4a\x72\x85\x07\x1d\x1e\x94\ \xa4\xe9\xb2\x0b\x65\x72\xca\x6e\x11\x0b\x38\xef\x00\x02\x8e\x00\ \xdb\x2f\x00\xc5\x75\x40\x65\xbd\x5a\x13\xbe\xb3\xb0\x41\x24\xb6\ \xe8\x75\x86\x59\x50\x52\x61\xc3\x16\x4a\xee\x99\xc1\xea\xf7\x92\ \x30\xbf\x67\xe6\x2b\x3b\xa4\xbc\xd2\x03\x31\xfb\x72\xbb\x7f\xf4\ \x90\xe8\xe9\xf7\xca\xe8\xd2\xa6\x55\x94\x58\xc6\x8a\xcd\xc3\x69\ \x9a\x04\x56\xcd\x7e\x6e\x38\x05\xe4\x5c\x01\xaa\xee\x00\x45\x55\ \x8d\x77\x6d\x7c\xb5\x33\xed\xfe\xac\x8d\xe8\x1f\x97\x57\x9f\x72\ \x0e\x58\x97\xc7\x11\xcc\x07\xca\x6a\x69\xd4\x35\x5a\xa5\x0c\xa4\ \x07\x6a\xca\x68\x98\x3d\x39\x0f\x49\x48\x7f\x43\x92\xd9\xef\x78\ \x26\x67\x62\x0b\x3a\xdb\x9e\x55\xfb\xe5\x02\x89\x34\x58\x01\xab\ \xbe\x7a\x47\xd3\xb5\x79\xbf\x76\xab\x49\xab\xd6\xa8\x8f\x16\xca\ \x63\x33\xcb\x9b\x77\x96\x01\x09\x74\x7e\xc1\x25\x60\xef\x31\xed\ \x0e\x50\x68\x37\xa1\x44\x20\xfd\x10\xb0\x91\x63\x13\x9a\xa8\x25\ \x51\x14\x18\xaf\xec\xf0\x64\x8f\xad\xa5\xf9\xde\x0c\xb8\xa6\x01\ \x6b\x4f\x02\xbb\x2a\xd8\xbb\x5f\x81\x4b\x8d\x6a\x8d\x4f\x64\xb6\ \x52\xf2\x47\x3f\x3c\x94\x92\x5e\xdc\x78\x37\x83\xb1\xc7\x98\xfc\ \xfc\x35\xb5\x46\xe6\xd3\xbd\x05\x1f\x10\x88\x92\xcc\xc1\xa3\x16\ \x73\x4c\x5c\x14\x6a\x8d\x23\x2b\x96\xd1\xed\xb6\x49\xc0\x32\x4a\ \x1e\x42\xc9\xf7\x4b\x0e\xa7\xe4\x95\xb7\xdb\x3b\xfb\x92\xbc\xf7\ \xbb\x61\x09\x4d\x79\xea\x67\x56\x4e\xd9\x2b\x94\x9a\x2e\xaf\x30\ \x2d\xf1\x07\xb1\x5a\x02\x21\x5c\x16\x66\x3e\xdd\x5b\xcc\x8c\x2e\ \x5f\x18\xdb\x2d\xb9\x57\x0e\x10\x41\xc3\x1c\xbc\x06\x54\xab\x80\ \x93\xe5\xca\x0e\xdb\xee\xe4\x0e\xfd\x1c\xdf\x98\x83\xa5\xca\x8e\ \x0b\xb7\xd9\xb2\xdf\x80\x98\x54\x6d\xcb\x1e\x53\x4d\x4b\x40\xc1\ \xdd\x6c\xce\xb9\x36\x22\xcc\x99\xdc\x81\xed\xf0\x3a\xcc\xe4\xa5\ \x40\xd6\x75\x4a\xfe\x3b\x57\xe7\xc5\xc7\x8d\xda\x9f\xdd\xe1\x1d\ \x91\xad\xbc\xc9\xd8\x9b\x24\x1f\x9b\xa6\x4d\xae\x78\xe2\xff\x01\ \x89\x40\xec\x01\x6e\x32\x4a\x6e\xc9\x7e\x3b\xa6\x32\x39\xcd\xb6\ \x8e\x86\xd9\x5e\xcd\x31\xe3\x7c\xef\x2b\xa8\x6e\x35\x73\x8b\x89\ \x33\x75\x89\xf8\x48\x47\x47\x67\x20\x31\xe8\x19\x90\xee\x0d\x34\ \xb2\x09\x1c\x29\xbd\x72\x2f\xfe\xd4\xde\x59\xd7\xfa\x30\xb9\xce\ \xd3\x3e\x12\x81\x44\x1a\x6c\x19\xe7\xd3\x85\x8b\xc5\xe7\x28\x0d\ \xc7\xe4\xb1\x5c\xa3\xe9\xec\x5b\x6e\x95\x4a\x3d\xdf\x35\x3a\xcb\ \xc8\x36\xe8\x63\x3e\xae\x47\xbc\x49\xbc\xf5\x0c\x48\xf7\xf4\xe6\ \xb9\x6c\x58\x9d\x7a\xbc\xea\x8f\x6b\x4d\x9a\xae\xe5\xe1\x59\x4a\ \x33\xb7\xe8\x0d\x82\x9c\x2e\x31\xe0\x09\x02\xd9\x17\xba\x37\x5a\ \x70\x21\xb7\x14\xd7\x66\x02\xc7\x72\x37\xa5\x3f\xf4\x0b\x67\x96\ \xf2\x9d\x28\xaf\xfb\xd3\xc4\x31\x2c\xe9\x43\x23\xbb\x99\x0c\x19\ \x45\xbc\x2b\x30\x5a\xa0\xe7\xf7\x28\x43\x59\xc0\xd2\xd8\xb4\xe2\ \xe6\xb2\x1b\xed\x7f\xb9\x04\xee\xae\x33\x71\x52\x7c\xc9\xeb\x43\ \x88\xc1\xc4\xeb\x42\x29\xdd\xc7\x08\x54\xd4\x73\x44\x6a\x98\x90\ \x49\x8f\x73\xc6\xbf\xe1\xa8\x9d\x6e\x02\xce\xb5\x00\x57\xda\x80\ \x26\x35\x5f\x2e\xc5\x35\x1d\x73\xac\x03\x12\x19\x32\x99\x98\x42\ \x18\x10\x53\x05\xa4\xef\x53\xde\x9f\x6e\xfe\xb9\x67\x68\x46\xc3\ \xae\xbc\xca\xb6\x79\x4e\x8a\xa2\x59\x8b\x7c\xfd\x78\x7d\xac\x20\ \x37\x9c\x18\x2a\x54\x7c\xed\x01\x09\x69\x7d\x96\x5c\x56\xa9\x89\ \x7b\x25\x57\x5b\xee\x7d\x77\xbd\xe5\xde\x99\xeb\x2d\xf7\xcf\xd6\ \x12\x37\x5a\xee\x9f\xbf\xd1\xdc\x29\xe1\x5c\x6d\x73\xa7\x67\x68\ \x7a\xd3\x98\x49\x86\x4b\x19\x66\x26\x85\xf6\x82\x74\xcd\x74\x8c\ \xbe\xa1\x7c\xc6\x02\xcf\xad\xc3\x46\x8d\xb7\xe0\xef\x59\xc4\x34\ \x41\x7a\xbc\x50\xeb\x6d\x41\x62\x90\xb6\x1d\x34\x97\x25\x7b\x94\ \x65\xba\x24\xf2\xe0\x3c\xe7\x88\xc3\x26\x0e\xa1\x47\x8d\xed\x82\ \xf3\xe7\xda\x06\x15\x1a\xda\x04\x9e\x36\x94\xad\x29\x36\xb4\x0e\ \x28\x95\x30\x61\xa6\x65\x34\x83\xec\x09\x47\xc2\xa9\x17\x1c\xc5\ \xbd\xc5\x84\x8c\xb0\x22\x2c\x05\xb1\xb9\xc4\x74\x62\xa2\x50\x43\ \x52\xe2\x8d\x1e\x15\x06\x8a\xfe\x0c\x13\x72\x49\xf2\x1a\x11\x0b\ \x08\x6b\x71\xa8\x33\xe1\x4a\xc8\x89\x2f\x08\x77\xc2\xa3\x17\xdc\ \xc5\x3d\xb9\x78\xd6\x59\xc4\x5a\x8b\xb3\x8c\xc4\xd9\x63\x45\xae\ \xc1\x22\xf7\xab\x27\xa0\x2b\xe4\x18\x2a\xe4\x99\x28\xe4\x9a\x2b\ \xe4\xb3\x14\x72\xca\x84\xbc\x2f\xbd\x05\x03\x84\x21\xf4\x84\x41\ \x46\x0b\xc3\x4c\x16\x06\x92\x8c\x64\x48\x18\x13\x26\x92\xd1\xfa\ \x32\xa1\x78\xc6\x58\xc4\x3c\xdf\x84\xe2\xa3\x2b\x46\x43\x4f\xb0\ \x1b\x2e\x98\x4a\x72\xbd\x47\x4c\x20\x3e\x20\xf4\xfb\x1a\x43\x71\ \x4f\x5f\x3c\x3b\x41\xc4\xf6\x3d\x86\x8f\x7c\x74\x05\xab\xd7\x45\ \x7f\x86\x88\x00\xa9\x5f\xef\x10\x23\x88\x91\xcf\x5b\x44\xe2\x99\ \x11\x22\x66\x98\x38\xe3\x89\x45\xd4\xf3\x2e\xf8\x1b\x95\x0d\x18\ \x5b\x26\xd0\x37\x16\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x04\xe9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x04\xb0\x49\x44\x41\x54\x78\x5e\xb5\x97\x41\x8b\x5d\x35\ \x14\xc7\x7f\x27\xc9\x7d\xef\x4d\xeb\x46\xf0\x93\x4c\xbf\x80\x7e\ \x05\xdb\x85\xed\x42\x10\x8a\xd2\x85\x8a\xa0\xa8\x0b\x79\xbe\xba\ \xb1\x0a\x6a\x77\x0a\xba\x70\x63\x17\xd6\xcf\x50\x10\x17\x5d\x58\ \x41\xab\x50\xb4\x6a\xa7\x3a\x63\xdb\xa9\x9d\xe9\x4c\xdb\x99\x77\ \xef\x4d\x8e\x21\x59\x04\xc2\xf5\x4e\xa9\x18\xf8\x73\x72\x6f\xce\ \x23\xb9\x39\xbf\x77\x4e\x22\xaa\xca\x41\xed\xa9\x13\x0b\x01\x04\ \xa0\xd8\x41\x29\x64\x7b\xe1\x8b\xb9\x72\x70\x43\x54\x35\x4f\x72\ \x7c\xf1\x06\x70\x8c\xe1\x26\x23\xef\x75\x74\x31\xc3\x3a\x7f\xe1\ \xdc\xfc\x5d\x00\x47\x69\xc7\xce\x7c\x30\x3f\xb2\x73\x1f\x42\x00\ \xef\x03\x01\xc5\xf7\x81\xc3\x87\x1c\xde\x2b\xce\x19\x44\xa2\xb5\ \x42\xdb\x81\x2a\x74\x5d\x00\x60\x32\x31\xb4\x7d\x80\x10\x62\xdf\ \x61\x0c\x71\x8c\x64\x55\xb3\x8c\x51\x66\x33\x78\xeb\xb5\xd3\x00\ \x69\x01\x86\xd2\x92\xb3\xb3\x80\xc0\xa5\xeb\x70\x68\x66\xe3\xe4\ \x96\x4b\x6b\x82\x88\xb0\x6c\x03\xdf\xfc\xac\x69\xf2\x10\x94\x6f\ \xd7\xb2\x6f\xe3\x4c\xf4\x81\xe0\x7d\x5a\xec\xd7\x57\x3a\x7a\x1f\ \xf0\x21\x24\x9f\xb6\xeb\x58\x99\xc2\xc5\x5f\x95\x89\x95\xf1\x10\ \x0c\xc4\x59\x8a\xca\xf3\x70\xfc\xd1\xaa\xaf\xd5\x78\x15\x82\xc2\ \x40\x0d\x9b\xc9\xc2\x15\xd1\x00\x93\x6c\x71\x80\x29\x0c\x10\x80\ \x1e\xe8\x80\x36\x5b\xfa\x22\x42\x52\x81\x73\x14\xc2\x9a\xf6\xb2\ \xa8\xa1\xdd\x18\xfe\xea\x50\xed\x40\xb1\x63\x10\x7e\x78\x76\x7e\ \x64\x6b\x57\xe9\x7a\xcf\x63\x2b\x8e\x65\xe7\x01\x93\xa0\xeb\xbc\ \x22\xe4\xd8\x37\x8e\xe8\x03\x62\x24\xc5\x7d\x3a\x71\xa8\xc2\xfe\ \xb2\x67\x36\x75\xc9\xc7\x87\xfc\x5b\x6b\xa2\x1c\xf8\x1e\x26\x0d\ \xd1\x17\x5e\x7d\x65\x31\x08\x61\x82\xcc\x19\x89\x32\x5c\xbc\xea\ \x99\x36\x96\x95\x99\x70\x79\x1d\x1a\x2b\xf4\xbd\xe7\xc7\x0d\xa1\ \xeb\x15\x6b\x84\xef\xae\x79\x04\x01\x85\x1f\xfe\x04\x67\x0d\xb3\ \x69\xec\xaf\x0b\x8d\x73\x11\x3c\xc3\x4f\x7f\x81\x91\x90\x00\xff\ \x3e\xfa\x58\xa3\xd4\x10\xe6\xd8\x2b\x35\x84\xb5\x4c\x65\x87\x20\ \x0c\x95\xad\x05\xa0\xc3\x21\x10\xce\x00\xef\x01\x36\xa9\x40\x37\ \xcd\x62\x96\x2d\x93\xa4\x02\x6a\xc8\xa2\xcd\x62\x09\xec\x67\x1b\ \x55\xa0\xf4\x44\x55\x6c\x14\x06\x50\x5e\xaf\x76\x60\xf0\xcb\x2b\ \x51\x03\x38\xbe\x13\x65\x07\x80\x1a\x42\x8e\x7e\x74\x76\xbe\xba\ \xbf\x0f\x48\xce\x84\x4d\x63\x50\x05\xd0\x08\x8f\xb0\xbd\xd3\xe1\ \xac\x4d\xef\x21\x67\xc1\xc9\x44\x92\x8f\x06\xc1\x35\x19\xd2\xe0\ \x85\x65\xdb\x31\x9d\x5a\xfa\x3e\x67\x49\x11\xd8\xdd\x5d\xf2\xc4\ \xe3\x53\x5e\x7a\x79\x18\x42\xb1\x02\xa8\xd2\xb6\x1d\x57\x6e\xc0\ \xde\x5e\x8b\x00\x97\xaf\x07\xf6\x1e\x04\x0e\xaf\x34\xfc\x71\xd7\ \xa0\x3e\xa7\xe8\xab\x9b\x42\xe8\x95\x89\x93\xe8\xaf\x74\xcb\x80\ \x20\xfc\xb2\xa9\x09\x48\xdf\x2b\x6b\xdb\x06\x67\xc1\x1a\xf8\xed\ \x8e\x03\x2a\x08\x9f\x3c\xfe\xb6\x00\xa0\xbc\x09\x1c\x05\x04\xa0\ \xda\x72\xf3\x08\x21\x08\xd5\x33\x65\x76\xbe\x44\x38\x13\x93\x92\ \x96\x7f\x41\x9d\xfd\x0a\x6c\xb3\x0a\xc2\x28\x1a\xc0\x96\x44\x84\ \x07\xba\x02\x1e\xfb\xc5\x66\x38\xeb\xac\x98\x32\x62\x0d\x61\xd9\ \x81\x11\x08\x4b\xbf\x6e\xe1\x60\x08\xcb\x0e\x0c\x42\xf8\xd9\xc7\ \xf3\xd5\x9d\xfb\x01\x80\xc6\xe6\xf2\xda\x38\x83\x00\x3e\x28\xc6\ \x08\xde\x2b\x22\x24\x28\x77\xef\x75\xcc\x66\x0d\x02\xb4\x3e\x60\ \x45\x52\x15\xcc\xd9\xd2\x62\x2d\x04\x15\x42\x08\x18\x11\x8c\x81\ \x95\xa9\x70\xf2\xd4\x42\x87\x20\xa4\xed\x02\xd3\xc6\x60\x80\xeb\ \x5b\x70\x68\x6a\x50\x0d\xfc\x7e\x9b\xf8\x5e\x10\x94\x6b\xb7\x15\ \x91\x28\x60\x63\xc7\xe1\xbd\xc7\x18\x58\xdf\x32\x58\x23\x71\x02\ \xcb\x7a\x04\x15\x02\x20\x5c\xdb\x54\x66\x8d\xc1\x1a\x65\xed\x6f\ \x08\x4a\x69\xd5\x0e\x7c\x75\xea\xc5\x77\x00\xe4\xff\xcb\x03\xa5\ \x18\x01\x0c\x65\xc2\xf7\xf3\x3b\xec\x20\x84\x59\x93\x11\x08\xdb\ \x04\xde\x30\x84\xbe\x2a\xcd\x8c\x41\x48\x0d\xdd\x48\x49\x66\xf4\ \xeb\x4b\x9f\x83\x20\x7c\xfa\xf3\x4f\xe6\xab\x21\xc0\x72\xe9\x71\ \xce\x12\x54\x13\x3c\x21\x01\x08\x88\xa4\x0c\xe9\x9c\x44\x0b\x1a\ \x14\x63\xf3\xb8\x35\x06\x84\x54\x31\x45\x24\xc1\x1b\x81\xc4\x88\ \x21\x68\x06\x57\x03\x34\x0d\x3c\x77\xea\xf4\x30\x84\x02\x78\x9f\ \x69\xdf\xd8\xce\x93\x83\x72\xf3\x5e\xc6\x21\xf8\xc0\xed\xfb\x06\ \x0d\x80\x2a\x1b\x77\x49\x3e\xd6\x18\x6e\xee\xe4\x05\x89\x08\x37\ \x76\x04\x55\x52\x59\x5f\xdf\xd6\x54\xca\x51\xb8\x75\x0f\xac\x19\ \x81\xf0\xd9\x17\x16\xd5\x29\xe8\xbf\x87\x60\xa4\x18\x55\x47\xb2\ \x13\x0b\x03\x48\x55\x8e\x9b\x52\x82\x1f\xb9\x1c\xf7\x75\x39\x8e\ \x59\x30\x3c\x4c\x39\xa6\x06\xef\xe1\x21\xac\xfb\x00\xc5\xc6\xf3\ \xe7\xe0\x99\xf0\xe8\xb9\x4f\xe7\xab\x5d\x9f\xe3\xe4\x13\x58\x42\ \xdb\x86\x54\x4e\xfb\x5e\xb1\x4e\x52\x09\xb6\x39\x90\x39\xc3\x19\ \x41\x00\x10\x44\x48\x40\x26\xe8\x90\x34\x06\xa0\x90\xf9\x48\xc7\ \x3d\xe5\xc4\xf3\xa7\xf9\x57\x08\x51\x4d\x65\x74\xeb\x41\x06\xc7\ \x5a\x89\x80\x69\x22\xdf\x08\x6c\xef\x1b\x04\x45\x43\x60\x73\x27\ \x83\xaa\x0a\xb7\x62\x5f\x35\xeb\x4e\x04\xd5\x18\x72\xff\x41\x06\ \x4f\x51\x6e\xdd\x55\x64\x04\xc2\xf3\xcf\x9c\x5c\x50\x87\x60\x44\ \x75\xd3\x11\x51\x6c\xc9\x84\x23\x17\x93\xea\x72\x52\xa0\x74\xe5\ \xb9\xba\x98\x94\x4c\x57\xa0\xab\x2e\x25\xf5\xc5\xa4\x0e\x01\x79\ \xb0\x3e\x54\xd0\x67\x15\xc2\xb3\xd8\x2b\x2a\xe9\xb7\xaa\xfd\xa3\ \x93\x03\xfc\x03\x22\xbc\xed\x2c\x77\x29\xd6\x5e\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x7c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x05\x0e\x49\x44\x41\x54\x58\xc3\xb5\ \x57\xdd\x6f\x15\x55\x10\xa7\xb4\x5a\xa8\x42\x48\x25\x14\x34\x90\ \xc2\x03\x36\xbe\x54\x1e\x0c\x0f\x04\x35\x10\xfd\x1b\xca\x9f\xe0\ \x93\x89\x4f\x05\x0d\xb9\x8d\x18\x13\xa2\x0d\x81\x04\x13\x31\x9a\ \xf2\x46\x62\x80\x68\x53\x6d\x29\x94\x7e\x72\xa5\xbd\xb7\xbd\xbd\ \xdb\xfb\xd5\xf6\x7e\xb5\xb7\xb4\x40\x6b\x8b\xf8\xd2\xdb\x3d\xe3\ \x6f\xce\xce\xd2\x75\xdd\xdd\x16\xc5\x87\x5f\xe6\xec\x9c\x99\x39\ \xbf\x3d\x67\x76\xe6\xec\x16\x22\xda\xb2\x11\xde\x3f\x15\xaa\x00\ \xb6\x0a\x2a\x03\x60\xdb\x54\x6c\x26\x2e\x63\x7d\x91\xa6\x50\x33\ \x30\xe2\x83\x88\x0f\xb2\x01\x73\x7e\xb1\x9a\xfd\x08\x8c\x0c\xcd\ \x12\x75\x24\x4c\x6a\x4f\xac\xd1\xf9\x1e\xa2\xee\x29\xeb\xf9\x8b\ \x2e\x93\x6e\x4f\x13\xf5\x15\x88\xbe\xec\x26\xfa\x35\xa5\xe8\x67\ \xa3\x4c\x1f\x5d\x8e\xd1\xad\x49\xd8\xa4\x4c\x6a\xe9\x30\x9f\xe9\ \xcf\x75\xb1\x8d\xa9\x7d\x39\x0e\xfb\xfe\x64\xac\xd2\xe5\xfb\x26\ \xf1\x3a\xbe\x04\x06\x41\xa0\x2b\x43\xd4\x9b\x27\xea\xcc\x28\xba\ \x9b\x83\x63\x7c\x55\xcb\x0e\x90\xea\xc9\x12\x16\x58\xd5\x36\x8c\ \xd6\x1f\xc7\xb5\x5d\xf7\x94\xa9\xc9\xde\xc1\x7c\x67\x5a\x51\xfb\ \x44\x99\x3a\x92\x96\x8e\xc1\xb6\xfc\xcc\xf1\x83\x08\x34\xfb\x6c\ \x79\x14\x18\x05\xc6\x04\x31\x60\x5c\x50\x70\x8c\x63\x0e\x9b\x51\ \xf1\xf3\x3a\x12\xef\x23\x70\x25\x5b\x15\xf0\x32\x50\x03\xec\x04\ \x6a\x81\x3a\x60\x3f\x70\x08\x38\x0c\x34\x00\x1f\x8b\x3c\x2c\xfa\ \xfd\x62\x57\x2b\x7e\x35\x12\xa7\xca\x2f\x39\xbd\x16\xaf\x04\xcb\ \x4f\xe5\x0d\x9c\x6f\xcf\x6f\x19\x07\x0c\x60\x42\x30\xeb\x18\x1b\ \x32\x3f\xee\xda\x85\xa8\x8e\xb7\xfe\x95\x54\x6c\x44\xa0\x8a\xb7\ \xac\x6d\x8c\xa8\x07\xe7\x77\x1b\xe7\x7b\xa1\xd7\x1a\x77\xa6\xca\ \x74\xa9\x1f\xe7\x8a\x73\xbf\x95\x5e\xa3\x4f\xae\x8c\x53\xcf\xb4\ \x35\x77\x51\xeb\x4d\xea\x4c\x96\xe9\xab\x3b\x4a\xeb\x7b\x91\x13\ \x6d\x63\x8a\xf4\x11\xf8\xec\x82\x17\x81\x97\x98\x75\x64\x9e\x03\ \x2b\xea\xcb\x89\xcc\x2a\xea\xcf\xf1\x22\x6b\x34\x50\x50\x5a\x77\ \xe9\x46\x9c\xee\x4e\x2b\xad\x63\x3b\x3d\x9f\x2e\xeb\xe7\xc1\x02\ \xfb\xad\x11\xc7\xd1\xbb\xc0\x71\xfd\x08\xfc\x6d\xfb\xf9\xcc\x9a\ \x42\x9f\x39\xb6\xde\x4e\x3a\x7b\xeb\x93\x40\x4a\x50\x72\x8c\x93\ \x8e\xa3\x70\x26\xe5\xa8\x8e\x67\x11\xf8\xc7\x31\x78\x13\x38\x15\ \xda\x2e\x49\xb4\x1b\x78\x43\x12\xec\x2d\xe0\x08\x70\x14\x38\x0e\ \xbc\x07\x84\x44\x1e\x17\xfd\x11\xb1\x3b\x24\x7e\xbb\x25\xce\x76\ \x89\x1b\x40\xa0\x29\x74\xda\xe7\xd3\xb3\x93\x8f\xdf\x2e\xe1\xd8\ \x81\x34\x30\x27\xd2\xde\x81\x84\xd8\x79\x25\xa3\x1d\xfb\xb4\x1f\ \x81\x91\x91\x92\x49\xf7\x51\x2c\x06\xb2\x26\x5d\x8d\x10\x8d\xcc\ \x11\xdd\xcb\x9b\xf4\xfd\x3d\x6b\x1c\x2e\x2a\xfa\x76\xd0\xd4\xba\ \xe8\x03\xa2\xb3\x57\x0d\xea\xcf\xae\xd1\x70\x89\xb4\x4d\xb8\x48\ \xda\xff\x0a\x6c\x58\x1f\x46\x1e\x7c\x37\xa4\xf4\x7c\xb8\x68\xd2\ \xcd\x94\x55\x88\xfc\x08\x44\x92\x8b\x58\x30\x67\x6a\xb0\xd3\x10\ \x4b\x04\xd4\x01\x90\x78\x3c\x0e\xe7\x95\x1e\xc7\x16\x88\xbe\xb9\ \x19\xd3\x73\xb6\x2d\xeb\x07\xb0\x70\xdf\xd4\xaa\xb6\x1b\x9e\x55\ \xf4\x5b\xd1\x8a\xc9\x73\xc6\x63\xb2\xbf\x88\x75\x02\x72\xfe\x4c\ \xe0\x8c\x63\xfb\xa3\x1e\x09\xe8\xde\xfe\x8c\x1c\x41\xc6\xe3\x18\ \xdc\x89\x18\x75\x1c\xc3\x19\x7b\x4d\x77\x12\x56\x4a\xa6\x72\xc2\ \xec\x00\x5e\x03\xf6\x01\x07\xa5\xda\xbd\x2d\x89\xf6\x2e\x70\x12\ \xf8\x10\x38\x27\xf2\xa4\xe8\x8f\x8a\x5d\x83\xf8\xed\x93\x38\x3b\ \x24\xae\xfd\x25\x78\x7e\x05\xfe\x04\x9a\x42\xad\xae\x1d\xc8\xb8\ \x76\x20\xe3\xda\x81\xd6\x17\x4d\xc0\x48\x3d\x56\x14\x47\x51\x69\ \x4f\x10\x8d\x95\x14\x45\x91\xb0\xe7\xaf\x19\x18\x9b\x94\x78\x44\ \x74\x23\xa6\x68\x14\xe3\xc9\x25\x7d\xce\xc6\x0b\x27\x50\x78\x42\ \x14\x9d\x29\x53\x0c\x8b\x4c\x20\x01\x19\x6d\xbf\x18\x94\x78\xa8\ \x30\xb6\xc8\x25\x41\x64\xfa\xf7\xff\x87\x40\xeb\x73\x26\xe1\xd7\ \xff\x95\xc0\xab\xd2\x52\xf7\x02\xf5\xc0\x9b\x40\xa3\xa3\x0a\x9e\ \x00\x3e\x00\x3e\x17\x79\xc2\x51\x0d\x1b\xc5\xbe\x5e\xfc\x6b\x25\ \xde\xa6\x08\x70\xc7\xda\xa6\x1d\x9a\x42\x2d\x01\x7d\x20\x68\x07\ \xdc\xfd\xa0\x45\x08\x6c\x93\xf8\x95\x41\xbd\xc0\x26\xf0\x0a\x97\ \xd0\x99\x3f\x88\x72\x38\xd3\x3e\xb4\xd6\x29\x14\x91\xd4\x3c\xae\ \x65\x68\xc5\xe9\x87\x26\x65\x1e\xa1\x1b\x5e\x8f\x53\x7a\xc1\xd4\ \x73\xbd\x68\xc9\x69\xe4\x43\x7e\x19\x5d\x70\xd2\xb2\x67\x7f\x5d\ \x8a\x39\xde\x3a\x81\xad\x1b\x11\xa8\xd6\x37\x19\x38\x16\x57\x14\ \x02\x29\xca\x2d\x91\x96\x8c\x49\x2c\x9c\x5d\xb4\xe4\xb5\x6e\x83\ \x32\x20\xc3\xf3\xd9\x45\xd2\xc4\x58\x5a\x76\x26\x15\x56\x94\x4d\ \xa0\x46\xe2\x56\x6d\xb6\x1b\x32\x81\x90\xa3\x1a\xc6\x7d\xaa\xe1\ \x9c\x4f\x15\x8c\x3b\xaa\x60\xc8\x71\x35\xf3\xee\x86\x42\xc2\xab\ \x1d\x73\x06\xbf\x2e\x09\xd5\x20\x09\xf6\x0e\x70\x4c\x92\xee\xac\ \xc8\x63\xa2\x6f\x14\xbb\x7a\xf9\x02\x6a\xbd\xda\xb1\xdf\xad\xd8\ \xdd\x8e\xed\x96\x1c\x0b\x68\xc9\xa5\x80\x56\x1c\x73\xdd\x0b\x9f\ \xb5\x63\xdf\xff\x82\x85\x3f\x89\x4a\x28\x38\x45\x24\xde\x30\xba\ \xd7\xec\x0a\x12\x69\x19\x55\x0f\x5d\xb0\x08\x59\x58\x52\x5a\x3f\ \xb3\x6c\x3d\xff\xd0\x31\xa1\x75\x45\x3c\xb3\x4d\x7e\xc9\xd4\xfe\ \x61\x74\x3f\xdb\x3e\x32\xb3\xae\x37\x16\x82\xff\x0b\x34\x01\x6b\ \x51\x26\x81\xc0\x08\x90\x5f\x84\xf3\x8a\xd2\x44\x38\x48\xe9\x89\ \xa2\x07\x4f\x21\x61\x77\xbd\x67\xc2\xb2\x03\xf8\xd9\x1a\x9b\x7a\ \xcc\xb6\x1c\x87\xe3\xcd\x2e\x5b\xe3\xf9\xa7\xcf\xff\x63\x12\xf5\ \xb8\x1b\xda\x09\xc9\x28\x3a\xc6\x71\x8f\xbb\x60\xf4\xdf\xfe\x98\ \xd8\x55\xb1\x5a\xbe\x61\x3b\x21\xeb\xe4\xae\x77\x40\x12\xed\xa0\ \xc8\x03\xa2\xaf\x13\xbb\x9d\xe2\x57\xed\x77\x19\xf5\x24\x10\x40\ \xa2\x46\xea\xf9\x2e\x59\x60\x8f\x2c\xb6\x57\xe4\x1e\xd1\xef\x12\ \xbb\x9a\xcd\x2c\xce\xf8\x0b\x15\x86\xe3\xed\xf2\xf3\x48\xec\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\xbc\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x05\x83\x49\x44\x41\x54\x78\x5e\xb5\x57\x4b\x6c\x54\xd5\ \x1f\xfe\xee\x9d\x3b\x8f\x5b\x68\xe9\x50\x86\x3a\xd8\x48\xb5\x04\ \x4a\x78\x88\x0a\x21\xd4\x47\x5c\x28\x44\x43\x02\xc4\x05\x89\x1b\ \x16\xba\x91\x90\xb8\x71\xe5\x23\x3e\x12\x37\x24\xae\xdc\xb8\xd2\ \xb0\xd0\x95\x09\xff\xe4\xbf\x20\x04\x2b\x2a\x68\x95\x4a\xa0\xb4\ \x4c\xe9\x93\x96\x4e\x3b\xd3\xce\xab\xf3\xb8\xcf\x73\xef\x1d\xe7\ \x77\x72\x4f\x32\xc9\x64\x8a\x93\x8c\xbf\xe4\xcb\x79\x4c\xe6\x7c\ \xdf\xef\x71\x7e\x67\x46\xaa\x56\xab\x68\xc5\x9e\x3b\xfd\xe9\x4b\ \x00\x0e\x01\x08\xe3\xf1\x36\x06\xe0\xf6\x9d\xff\x7d\x5e\x40\x13\ \x53\x5a\x24\x0f\xc7\xb7\x47\x5f\xfd\xfe\xab\x0b\x1f\xaa\x11\x45\ \x05\x00\x49\x02\x37\x7f\x40\x40\x06\x84\x4f\xa3\xe3\xf3\x37\xce\ \x7f\x76\xe9\x0b\x00\x3f\xa1\x89\xc9\x68\xcd\xb6\x1f\x39\x38\xb0\ \xc3\x45\x40\xb5\x1d\xc0\x64\x80\xeb\x01\x8e\x0b\xb0\x1a\x3c\x0f\ \x60\x4e\x0d\xcc\x41\x49\x63\x38\x34\xf8\xd4\xcb\x1f\xbc\xf3\xe6\ \xbb\x35\xe1\xaf\xb5\x4b\x00\x1c\xc6\xc0\x4c\x8d\x7b\x1e\x52\x7c\ \xaf\x25\x0e\x61\xa8\x54\x2a\x28\x19\x0e\xf2\xc5\x0a\xde\x3a\x7e\ \xf8\xec\xeb\x2f\xee\x7f\x83\x52\xd7\x52\x0a\xde\xfe\xe8\xf2\xa1\ \xba\x25\x9f\xf7\xf5\xf5\x47\x97\x52\xeb\x83\xd7\xfe\x9c\x05\xf3\ \xb8\x76\x44\x42\x0a\x9e\x1f\x8c\xe3\xe9\x27\xa3\x10\x56\x2c\x95\ \x60\x4b\x1d\xe8\xea\xde\x86\xc2\x7a\x0e\x9f\x9c\x3f\xfd\x5e\x26\ \x5f\x36\x6b\x22\xee\xd5\xea\xa1\xd4\x4c\x80\x20\xa6\x93\xce\xbd\ \xb0\x37\x7e\x4e\xec\xed\x1f\x88\x75\xd3\xc8\x6c\xa6\xe8\xba\xb6\ \x65\x60\xe7\x76\x44\xbb\x54\x04\xe4\x2a\x6c\xe6\xe1\xc7\x9f\x13\ \x38\x31\xb4\x1b\xfb\x9e\x89\x81\x8c\x31\x06\xcb\x33\x41\x66\x07\ \xb6\x40\xd7\x75\xf5\xec\xc9\xa1\xc3\x77\x27\x17\xf7\x03\xf8\xe3\ \x71\x11\x38\x75\xee\xe4\xc1\xf7\x4f\x1c\x1b\xe8\xc7\x06\x66\x59\ \x16\x8a\xc5\x22\xfa\x7a\x7b\x70\xe6\x95\x7e\x8c\xdc\x5f\x46\x4f\ \x57\x04\xbd\x3d\x9d\x90\x24\x09\xa6\x61\x80\x2c\x10\x50\x90\xcd\ \x56\x90\xc9\x64\xe4\x7f\x5d\x03\x9a\xa6\x71\x2f\x36\x32\xc7\x71\ \xe8\xd0\x1a\x41\x00\xbb\x76\xf6\x62\x4f\xdf\x66\xdc\x4a\xac\x20\ \x95\x2d\x43\x8d\xa8\x98\x9f\xba\x83\xaf\x2f\x7e\x8c\x4b\xdf\x5c\ \x44\x72\x71\x9a\x6a\x47\xda\xa0\x06\x5a\x07\xf5\x0f\xc3\xf7\x52\ \x51\x14\x3c\xbb\x27\x8e\xc0\xdc\x1a\x6e\x4f\xae\xe0\xf8\xd1\x7e\ \x1c\x39\x3a\x84\xc1\xbd\xfb\xe0\x55\x65\x74\x76\x76\x62\xb5\xb2\ \x50\x6d\xab\x00\x21\x42\xd8\xa6\x4d\x9b\x70\x60\x57\x2f\xee\x4c\ \x4d\x60\x39\x67\xe2\x89\xde\x3e\xc4\x6a\xa0\xdb\x62\xdb\x0c\xa1\ \x50\xca\x6b\xab\x00\x59\x96\x79\x1a\x86\x87\x87\xa9\x16\xf8\xba\ \xa3\xa3\x03\xa6\xae\x08\x61\x9c\xdc\xb0\xa9\x5e\xa8\x57\xb4\xa9\ \x0f\x08\x84\x42\x21\xc4\xe3\x71\x9e\x86\x72\xb9\x4c\x35\xc3\x53\ \xe1\x54\x25\xe8\x26\x60\x3b\x1c\x30\x18\x40\x7a\x98\x0b\xb4\x35\ \x02\x54\x7c\x24\x80\xf2\x4b\x91\xa0\xb5\x6d\xdb\x98\x48\x27\xe1\ \x56\x79\x87\x84\xe9\x70\x72\x98\x5c\x44\x9b\x23\x40\x57\x2d\x1c\ \x0e\x63\xeb\xd6\xad\x88\xc5\x62\x88\x46\xa3\x3c\x05\x90\x02\x30\ \x98\xc4\x05\x04\xea\x4e\x37\xec\xb6\x0a\x68\x2c\x42\xaf\xea\xc1\ \xf3\x3c\x30\x62\x06\x50\x34\x78\x0a\xb8\x6d\x0e\x53\xdb\x6e\xb3\ \x00\x22\x17\xa3\xeb\xba\x90\x20\xf1\xb9\xc7\xf9\x29\xfc\x7e\x1a\ \x18\xf0\xa8\x00\x68\x36\xf0\x9f\x5c\x43\x02\x79\x2e\xd6\xb2\x2c\ \x41\xb3\x80\x80\xcd\x23\xc0\xbd\xf7\x78\x4d\xb4\x31\x02\xc2\x7b\ \x22\x16\x23\xed\xf1\x37\xc0\xf6\x38\xa1\xc5\x80\xbc\xc6\x53\xc1\ \xe7\x26\x6b\x73\x04\x28\xec\x44\x2c\x0a\x92\xe6\x74\x0d\x5d\x57\ \x46\x41\x03\x5c\x05\xe8\xd9\xcc\x3d\x47\x38\xd8\xc6\x6b\x28\xc2\ \x4e\xa4\x34\xd2\xa3\x24\x04\xf1\x74\x54\x5d\x44\x82\x40\xbc\x1b\ \xdc\xd2\x45\xa0\x33\x44\x51\xaa\xd2\x17\x1a\x05\xb4\x1a\x76\x41\ \x26\x42\x4e\xf7\x9f\x44\x04\x83\x41\x7a\xc4\xf8\x35\xac\x58\xc0\ \xec\x1a\x10\xed\x20\x72\x17\x77\x67\x73\x60\x96\x26\x79\x1e\x0b\ \xd4\x84\xcb\x74\x9c\x7f\x66\x55\x69\x35\xe7\x22\x02\xd4\x7c\x68\ \x4d\x22\x28\x1a\x14\x7e\xea\x8e\x24\x8e\x3a\x63\x39\xb7\x88\x5f\ \xc6\xc7\x90\x79\x94\x00\x24\xd9\xb4\xe4\xee\x05\xa3\xb4\x96\x06\ \x10\x24\x1f\xe8\x38\xfe\xbd\x56\x88\x69\xa4\x9e\x4f\x73\xd3\x34\ \x89\x94\x04\x50\x43\xa2\x91\xef\xcd\x8e\x5d\xc3\xc8\x95\x87\xc8\ \x96\xf4\x45\x25\xa4\x4e\x31\x44\x16\x59\x35\xb8\xc8\xcc\xd4\xf8\ \xcc\x8d\xef\x0a\x00\x22\x00\x98\x0f\x57\xd9\xa8\xc8\x88\x8c\x4c\ \xe4\x5c\xb4\x5c\xea\xff\xba\xae\x43\x55\x55\x12\xc4\x3f\x33\x74\ \x9d\xb7\x62\xe6\x38\xc5\xe5\x8a\xfa\x7f\xdb\xb2\xc7\xad\x7c\x7a\ \x41\xcb\x2f\xa5\x0a\xc9\x89\xac\xef\x75\x27\x00\x0b\x80\x21\x7c\ \x54\x9a\x79\x2e\x44\x08\xaf\xe9\x70\x91\x6b\x12\x42\xcf\x6f\xa9\ \x54\x12\x62\xc9\x7b\x1a\xa9\x35\xaf\x9b\xb7\x7e\xbb\xfe\xf0\xde\ \xf5\x19\x00\x9e\x8f\x2e\x00\x0e\x00\x5b\xd4\x9d\x2f\xc8\x91\xd1\ \x68\x44\x2a\x72\xcc\x51\x28\x14\x88\x80\x3c\xa6\x5f\xbc\x24\x90\ \xf6\xa8\xf7\x93\xf7\x24\x8e\xa3\x5c\x2e\x81\x31\xd3\x75\x99\x15\ \xf2\x43\xad\xfa\x88\xd4\x81\x3e\x0b\xfa\x42\x64\xa1\xa6\xa9\x08\ \xf2\x9a\x22\x10\x89\x44\xa8\xca\xc9\x73\xda\xe3\x8f\x4f\x32\x99\ \xe4\x7b\x73\x73\x73\x18\x1b\x1b\x83\x27\x29\xf6\x6a\x46\xb2\x2b\ \x85\xd5\x02\x1a\xac\x85\x3e\x20\x88\x2d\xd3\x44\x30\x14\xaa\x17\ \xc4\x09\x13\xf7\x13\x98\x7c\x30\x89\xf9\xf9\x79\xa4\x32\x45\xc3\ \xf2\x42\x65\x2b\x10\xcd\x9b\x0e\x56\xca\xf9\x95\x9b\xf9\xf4\x5c\ \xca\xbf\x6a\x9e\x80\x48\x81\x0f\xe6\xaf\xbd\x26\x11\x90\x28\xdc\ \x3c\xa7\x8c\x31\x1e\xf2\x44\x22\x81\xd1\xd1\x51\x4e\x9a\xce\x95\ \x35\x37\x18\xcb\xba\xe1\xf8\x3a\x0b\xef\x98\x35\xb4\xc2\x54\x6a\ \xf6\xee\xc8\xfc\xd8\x70\x12\xc2\x1a\x05\xb8\x44\x2c\x8a\x70\x43\ \x01\xba\xae\x61\x69\x69\x09\x0b\x0b\x0b\x9c\x78\x7a\x7a\x1a\xf9\ \x32\xab\x78\x6a\x7c\x15\x1d\x07\xf2\x88\x87\x1f\x58\xe5\xdc\xaf\ \xcb\x53\x7f\xfd\x9d\x18\xb9\x9c\x05\x20\xfb\x90\xea\x05\x10\xea\ \x05\xf8\x60\x02\x4d\x05\xcc\xcc\xcc\xe0\xf7\x2b\x97\xb0\x96\xd7\ \x2b\x91\x6d\xbb\xd3\xc1\xee\x63\xd9\xe0\xb6\xae\x09\x87\xd9\xd7\ \x4a\xb9\xe5\x91\xab\xdf\x5e\x10\xa4\x02\x92\x40\x83\x80\xe6\x42\ \x68\x5e\x15\x7f\xcf\x1b\xfe\x19\x01\x38\x05\x60\x16\xc0\x55\x00\ \x37\x7f\xf8\xf2\x4c\x5a\xaa\x99\x20\xf2\x89\xd1\x84\xbc\x5e\x04\ \x1a\x84\xd4\xb5\xe2\x7f\x00\x12\xab\x82\xc2\x52\x64\x01\xcd\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xb6\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x48\x49\x44\x41\x54\x58\xc3\xe5\ \x57\xcf\x6f\x1b\x45\x14\xfe\x66\x77\xed\xf5\x6e\xb6\x24\xb1\x1b\ \x24\xa0\x6d\x44\x10\x3f\x0a\x14\x81\xa0\x34\x42\xe4\x50\x10\x48\ \x88\xbf\x82\x53\xfe\x01\x8e\x48\xa8\xe2\xc0\x85\x7f\x20\x5c\xb8\ \x72\xe1\x08\x87\x22\x81\x25\x40\x21\x04\x50\x91\x9d\xa4\x2d\x4e\ \x4b\x4c\xda\xca\x8d\x08\x75\x12\xd7\xf6\x7a\xd7\xc3\x7b\x33\xbb\ \x9b\xd4\x3f\xd3\xd6\xd0\x03\x23\xbd\xcc\x6c\xe6\xf9\xbd\x6f\xbe\ \xf7\xe6\xcd\x8c\x90\x52\xe2\x41\x36\x03\x0f\xb8\x59\xf1\x60\x7e\ \x7e\xfe\x5d\xea\x4e\xff\x47\x7e\x97\x17\x16\x16\xbe\xbc\x03\x00\ \x3b\x7f\xe4\xb1\x13\x1f\xce\xcc\x3c\x0e\xd3\x34\xb1\xfa\x93\x8f\ \xb5\xe5\x3a\xf6\xaa\xe1\x7d\x79\xf2\xc6\x4d\x9c\x3c\xed\xe0\xd9\ \x57\xd3\x08\xc3\x10\x57\xae\x5c\xc5\x8d\x6b\xe5\x73\x34\xd5\x05\ \x00\xdf\x7c\x9b\x47\x61\x65\x0d\xd9\xec\x51\xdc\xdc\xb0\xf0\xde\ \xfb\xaf\x8f\x64\xb9\x9f\x7d\xfa\x3d\x6e\x36\x02\x2c\xfe\x90\x47\ \x36\x37\x85\x93\x4f\xcd\x74\x87\x80\x5b\xca\x4a\x61\x62\x22\x8b\ \xdc\xd1\x29\x38\xa6\x83\x4c\x26\x33\x12\x00\xd3\x4f\x3c\x0a\x77\ \xbc\xae\x16\xc6\x3e\x7a\xe6\x00\xb7\xb4\x9d\x81\xe3\xb8\x70\x5d\ \x0f\xb6\x39\x86\x4b\x97\xd6\x49\x83\x54\x52\x69\xc0\xb6\x01\x06\ \x44\x3a\xaa\x4f\xd3\x77\x3a\xad\xe7\x83\x00\xf0\x7d\x92\x26\xd0\ \x68\x00\xcd\x46\xd4\xd3\x77\xcb\xc7\x64\xee\x21\x98\xb6\x89\x17\ \x5e\x7c\x05\xeb\xa5\xcb\xfd\x01\x18\xa6\x41\x62\x91\x98\xfc\x81\ \x33\x67\x5e\x1e\xb2\xb6\x50\x0b\x5b\xb1\xe8\x37\xae\x4b\x03\xb7\ \x4b\xeb\xfc\xf9\x35\x65\x53\xdb\x16\xfd\x01\xb4\xc3\x36\x49\x88\ \x30\x20\x69\x07\x3a\x04\xac\x2f\x05\x75\x52\x8d\x25\x8f\x55\x2f\ \x75\xcf\x3f\xe4\x29\x35\xa6\xb9\xa8\xac\x90\x1a\xb4\x2b\x89\x80\ \x6c\x99\x64\xb7\xad\x44\x0e\x00\x40\x46\xc3\x76\xa8\x85\x40\x14\ \x8b\x7f\x68\x8a\x6d\x8a\x9b\x4d\x74\x3b\x24\x19\x3b\x12\x1a\xa7\ \x53\x9c\x38\x44\x33\x87\xa0\x45\x94\x53\x18\xea\x1c\x06\x92\xba\ \xaf\xbf\x9b\x2d\x65\x0b\x96\xb6\xdb\x96\x03\x00\xc8\xb6\x44\x5b\ \x09\x31\x21\xdb\x98\x9b\x7b\x69\x78\x86\xb1\x41\xa6\x5f\x85\x80\ \x18\x9b\xec\x56\x59\x29\x94\x21\xd8\x26\xd9\x66\x1f\x7d\x01\x68\ \x42\xa5\x36\x4a\x62\x73\xe2\x45\x4d\x45\x82\xff\x0a\x45\x34\x92\ \x12\x2e\xa2\x9f\xed\x0f\xf4\x3c\xc7\x42\xea\x71\x6c\x2f\xb1\xdf\ \x1f\x80\xd0\x22\xb4\xfc\x52\x2c\x43\x5a\x06\x44\xda\xd2\x74\x33\ \xf5\x71\x38\x6c\xde\x1d\x1c\x02\x5a\x39\x51\x2c\x29\x0c\xa2\xa1\ \x29\x57\x42\x63\x49\x61\x11\x7e\x90\xd8\x4b\xec\xf7\x03\x20\x12\ \xdf\x02\xde\x44\x0a\x67\x5f\x7b\xfe\x70\x1b\x9d\x77\x0d\x83\xf2\ \xdc\x9e\xd3\x17\x96\x7f\xa5\x5d\x29\xf6\x71\xf4\x65\x40\x08\xe5\ \x5c\x08\x03\xc7\x8f\x4f\xd1\x02\x53\x23\x29\x44\x6c\xab\x54\xda\ \x55\x76\x3b\x11\x74\x30\x20\x60\xd0\xfe\x37\x0c\x01\xd7\x71\xf0\ \xf3\x85\x55\x8c\x1f\xf1\x54\x7d\xb8\x97\xc6\xdb\xba\xba\xbb\xa7\ \x6c\x19\x86\xa1\x44\x0c\x02\x60\xf0\xea\x0d\xa1\x14\xaf\x5d\xaf\ \x60\xeb\xaf\x6a\x12\x1a\xc8\xfd\xf4\x39\xf8\x2d\xa2\x1c\x43\x57\ \x74\xf7\xd3\xba\x49\x95\xd1\x64\xe7\x6c\x7b\x20\x03\x4a\xc1\x88\ \xd0\x9a\xea\x54\x1c\x45\x33\xc9\x96\x60\x66\x85\x06\x31\x24\x04\ \x86\x72\xbc\x71\xb5\x84\xcd\xcd\x32\xea\xf5\xda\x7d\x39\x77\x9c\ \x31\x1c\x3b\x76\x02\xb9\xa9\x87\x0f\x13\x02\xbd\x7a\xa6\x8b\x2b\ \xd6\xc7\x1f\x7d\x80\x9d\x9d\x1d\xd4\x6a\x35\xb4\x5a\xad\x04\xa0\ \x45\xd5\x31\x16\x4e\x54\xee\x19\x34\xcf\xa9\xd8\x53\xd1\xf1\xe9\ \x70\x8a\xe5\xf3\x2f\xbe\x52\x36\x59\xd8\xc7\x10\x06\x38\x0f\x0c\ \x4c\x66\x73\xc9\xff\x17\x17\x17\xb1\xb4\xb4\xa4\x1c\x70\x01\x9a\ \x9d\x9d\xa5\x2a\x39\x77\x68\x16\xd8\x96\x88\x72\xa0\x93\x01\xa3\ \x13\x40\x9c\x84\x0e\x65\x6e\xdc\x8a\xc5\x22\x9d\xe5\x74\x4f\xc8\ \xe5\x94\x14\x0a\x85\x21\xd5\x59\x76\x84\xc1\x49\x16\x26\xc4\x90\ \x42\xa4\xc3\x20\xd4\xa9\x17\x37\x97\x8e\x59\x3e\x19\x63\x8a\xe3\ \xbe\x5f\xeb\x5a\xa5\xd2\x97\x3d\x77\xc9\x9d\x0c\x20\x42\xc8\x20\ \x0e\x18\x39\x98\x3c\xdc\xdf\xf5\xee\x88\xb6\xac\x8c\x0e\xb9\x01\ \x95\xf0\x40\xd9\xee\x89\xf7\xde\x1a\xdf\x2d\xf8\x2e\xe0\xd3\x8d\ \x89\xa5\x2f\x03\x41\xe0\x53\xd1\x68\xd2\x8d\xaa\xa1\x32\x7b\x64\ \x8d\x96\xbf\xbb\xb7\x8b\x4a\xe5\x06\x6e\xfd\xbd\xdd\x1f\xc0\xed\ \xbd\xdb\xd8\xa9\x56\x95\x92\x21\x46\xf8\x62\x92\x21\x36\xd6\x4b\ \x28\x5d\xbe\x48\x87\xa9\x95\xe7\x77\x41\xcf\x10\xd4\x9b\x75\x6c\ \x6d\x55\xe8\x74\x0d\x70\xc4\x1b\x43\xfe\xbb\x1f\xe1\x79\x1e\xce\ \xbe\xf9\x4e\xd7\x39\x5e\xde\xac\x0c\x4a\x43\xd2\xa6\xdb\x15\xd9\ \xd9\xde\xbe\xc5\xef\x00\xac\xac\xfc\x46\x97\xa8\x54\xfe\x99\xa7\ \x9f\xfc\x84\x14\xf2\x3d\x01\x5c\xdf\xfc\x13\xbf\x5f\x5c\x55\x49\ \xf7\x35\x85\xa0\x33\x9b\xef\x7a\xe1\x52\xdf\xae\x42\xba\x35\x4f\ \x4f\x4f\xe7\x4f\x9d\x7a\x4e\x39\xa7\x57\x51\xad\x17\x80\xe5\xb7\ \xdf\x7a\xe3\xdc\xbf\xf9\x1c\xeb\x74\xae\xb8\xfa\xdf\xbf\x8e\xff\ \x01\x8c\xae\xac\x22\x42\x7f\x21\xa9\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x06\x4b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x06\x12\x49\x44\x41\x54\x58\xc3\xc5\x57\x6b\x6c\x14\x55\ \x14\x9e\xc7\x0e\xd3\xdd\xa5\xd3\x2e\xee\x42\x61\xb7\xa5\xd1\x02\ \x05\x5a\x7c\xd4\x14\x81\xb4\x40\x25\xc6\x07\xa1\x4a\x78\x04\xf9\ \xa1\x09\xf2\x03\x48\x08\x89\xc1\xa8\x18\x88\xd1\x80\xf1\x8f\x1a\ \x81\xd8\xa0\x31\x3e\x80\xc4\x90\x62\x09\x91\x34\xbc\xc4\x86\xca\ \x2b\x3c\x22\x50\x52\x08\xb4\xdb\x2d\xad\xb4\x74\xed\x76\x67\x76\ \x67\x67\xef\x8c\xe7\xec\xdc\x85\x71\xbb\xbb\x6c\xcb\x0f\x6f\x72\ \x32\x3b\x77\xee\xbd\xe7\xbb\xe7\x7c\xe7\xb1\xac\x61\x18\xcc\xff\ \x39\x6c\xa9\x13\x0b\x57\x7d\x5c\x07\x8f\x65\x29\xd3\x6d\x20\x21\ \xcb\xbb\x04\x32\x3d\xcd\x79\x21\xba\xf6\xdc\xc9\xfd\xdb\xda\x46\ \x05\x00\x95\x6f\x79\x7f\xcd\x6a\xeb\x84\xbf\xab\x57\x51\x94\x08\ \x49\xbe\x3b\x1d\x76\xbe\xb8\xb8\xc8\x91\xba\x51\x51\xa2\xc4\xdf\ \xd5\xa3\xfc\x75\xf5\x56\x08\x2e\xf2\x3b\x4c\x1d\x00\x20\x27\x46\ \x0a\x20\x31\x26\x4d\xf2\x38\x6d\x82\xc8\xc7\x34\x86\xf1\x78\x7c\ \x52\x5c\x37\xe7\x59\x16\x36\xf1\x0c\x23\xc0\x4e\x1b\x08\x07\xef\ \xe8\xc5\x78\x9c\x61\x34\x90\xd2\xd2\x32\xd7\x82\x05\x35\xde\xee\ \xee\x80\xb7\xf1\xe0\xd1\x05\x00\x64\x27\x80\xd8\x9d\x49\x0f\x9b\ \xca\x01\x8b\x0b\xca\xa7\x4e\x29\x29\x5a\xbe\x6c\xf1\xe4\xfc\x02\ \x8f\x43\x8d\x99\x8a\x50\xa9\x5d\x64\x98\x96\x96\x96\xee\x5f\x9b\ \x4e\xf4\xe2\x1e\x58\xe7\x98\x39\xa3\x4c\x9a\x0f\x8a\xa3\x2a\xc3\ \x10\x9d\x02\xe4\x54\xf2\x4d\xc3\xbe\xf6\xf6\x9b\xfe\x1d\x00\xe2\ \xa7\x9c\x00\xa4\x80\xa9\x9f\x38\xd1\xfd\xe9\xa6\x4d\x1b\x2a\xc2\ \x0a\xdc\x12\x9c\x90\x07\xca\x83\xfd\x81\xd0\x97\x5f\x7d\xb7\x17\ \x96\x6c\x86\x83\x65\x58\x87\x7c\xa8\x9f\x37\xf7\xd9\xb5\xf5\xaf\ \x2f\x79\x52\x8e\x98\x60\xed\x79\x30\x4b\x42\xea\x07\x5b\xbe\x68\ \x86\x75\xf5\xe9\x74\x70\xd9\xfc\x03\x9b\x9a\x7a\x7a\xfa\x55\x0e\ \x4c\x8e\x30\x75\x8a\x95\xe5\x1e\x7c\x97\xe9\xb3\x0d\xe4\xb3\xd3\ \xad\x97\x5a\x07\xee\xf7\x29\xe8\xa6\x18\xb8\x43\x89\x82\x25\xf2\ \x24\x11\x80\x55\x00\xc8\x45\x23\x06\x60\x1d\x68\x56\x42\x4c\x10\ \xa8\x20\xc3\x38\x76\xad\xed\x46\x10\xbf\x23\x67\x90\x3f\xe8\x3a\ \x8f\xc7\x05\x76\x63\xbc\x23\x22\xa1\x75\xa0\x52\x5d\x37\x0f\x45\ \x20\x7a\x96\xd4\xc1\x26\xd7\x83\x05\x18\xde\x5c\x9f\x2d\xd3\xe4\ \x64\x81\xb8\xf1\x50\x79\xd2\x0a\x19\x86\x57\x72\xb9\x44\x34\x7f\ \x9c\x02\x45\x77\x85\x95\x28\xc2\x19\x1a\x35\x00\x83\x2a\xc7\x50\ \x43\x22\xa6\xe3\x2d\xf8\xd8\x09\x8f\xd9\x93\xbc\x25\xf9\x68\x7a\ \x8c\x5a\x8c\x18\xc6\x50\xc9\xd9\x3f\x2f\x07\xd1\x3d\xa3\x76\x01\ \x2a\xd7\xd0\xa7\x84\x4a\x7c\x98\xf2\x6a\x78\x2c\x7a\xf9\xb5\xba\ \x2a\x4e\x90\xc4\x28\x90\x6f\x8c\x00\x09\x0b\x20\x1d\x3e\xd4\xdc\ \x19\x0e\x2b\x7b\x80\xa4\xa1\x51\x03\x48\x98\x9f\xde\x3e\x06\xa4\ \xc2\x58\x87\x51\x0d\x8a\x2f\xe0\x8f\xca\x59\xe5\xd2\x8c\xca\x99\ \xae\xc9\x4f\x55\xb8\x87\x64\x93\xa4\x2c\xaf\x92\xdf\x9a\x9a\x3b\ \xcf\x9e\xb9\xb4\x27\x5b\x22\xca\x99\x84\x08\x02\x33\x9d\x0a\xc4\ \x2a\x70\xfb\xa4\xad\xdb\xb7\x55\xd9\xed\x66\x26\x44\x40\xb2\x82\ \xbe\x36\xd7\x0c\x40\x9e\x38\x72\x70\xff\x6d\x45\x56\xf6\xc0\xf6\ \x9f\x99\xc7\x25\x21\x49\x02\x20\xa6\x15\xa2\x51\x95\x04\xba\x02\ \xa1\xae\xce\x40\xc8\x0f\x72\xb7\x3b\x10\x12\xc6\x40\xcc\x83\xd9\ \x31\x67\xb8\x27\xf8\xa4\x35\x1b\x36\x56\xbe\xf4\x6a\xdd\x87\xce\ \xb1\x8e\x53\x98\xd0\x1e\xcb\x02\xa8\x1c\x15\x23\x17\x30\xce\x86\ \x06\xfb\xe4\xfd\xdf\x27\x32\xa1\x75\x54\xd7\x2c\x9c\xeb\x7e\x6e\ \x4e\xad\x2f\xa6\x89\x7c\x34\x2e\xf2\xd3\x9e\xae\xf1\x96\x95\x97\ \xbb\x8e\x34\x1d\xde\x01\x20\xbc\xe9\x5c\x91\x33\x09\xe3\x34\xb4\ \x30\x00\x6c\xc2\x83\x4c\xb8\x3e\x85\x8c\xeb\x2f\x9e\xbf\xbc\xf6\ \xed\xf5\x1b\x2b\xd5\x98\xc8\x87\x81\x0f\x0e\x87\xc7\xb1\x74\xf5\ \x9b\x53\x7f\x6c\xf8\x76\x1d\x7c\xbf\x91\x5a\x1d\xb9\x91\x44\x01\ \x12\x51\xb7\xa4\xe2\x34\xa9\x7b\xb7\x0c\x8c\xbf\x7c\xfe\x8f\x00\ \xba\x23\x02\x84\xed\x87\x00\x0c\x0e\x89\xfc\x92\x15\xf5\x25\x69\ \xfa\x8c\xdc\x00\x20\x09\x89\x85\x03\xd9\x32\x21\x82\x38\x7d\xb2\ \xb5\x5f\xcc\x33\xdd\x85\xf5\x60\x30\xcc\x30\x63\x5d\x3e\x09\xf8\ \x30\x07\xac\x20\x8d\x3c\x13\x52\x0e\x68\x49\x37\x3c\xba\x8b\x3b\ \xd7\xd7\x1b\x08\xa1\xbf\x70\x4f\x04\x40\x28\x50\x21\x8b\x4b\x4b\ \x30\x59\x95\x8f\xca\x05\x08\x20\x4e\x2d\x41\x72\x68\x23\x0d\x9a\ \xc2\xd1\x6a\x49\x31\x46\x9d\x8a\x0d\x4b\x24\x24\x5c\x60\x40\x1f\ \xa1\xb3\x30\x78\x8b\x70\x49\xc1\x5b\x3a\x0b\x3c\x4e\x4c\x5a\xb8\ \x87\xa1\x35\x01\xf2\xc2\xb0\x9a\x90\x11\x00\x6b\x0e\xf8\x6e\xb0\ \x49\xdf\x27\xda\x2e\xfd\x41\x3d\xc0\xbd\x42\xaa\xcc\x5b\xfa\x5e\ \xb5\xaf\xb4\x78\x22\x86\x21\x92\x10\x49\xcb\xd9\x90\x0e\x2a\xe9\ \xba\xe3\xef\x4d\x6d\x56\x6d\x99\x94\x9b\xc5\x94\xe1\x40\x11\x8b\ \xc5\x45\xb3\xa4\x62\xec\x09\x0d\xa2\xa1\x42\x87\xc5\xe2\x09\xe1\ \x38\xdb\xca\x59\x2f\xd4\x14\x0d\xc2\x3d\x55\x0d\xdb\x32\x0c\x45\ \x86\xe9\xeb\xbe\x99\xb6\x20\x71\x59\x94\xdb\xe6\xd4\xbf\xbb\x14\ \x6e\xe3\x0c\x47\xcc\x02\x84\xb7\xc7\x5b\xf1\xf6\xf1\x0e\x87\x94\ \x3f\xfb\x99\xba\xb7\x5e\xa1\x2d\xba\x54\x51\xbb\xaa\x76\xee\x1b\ \x9b\xb7\x3f\x5f\x5b\xbb\x4c\x2c\x9c\x52\x98\xa8\x09\xf0\x21\x1f\ \xbe\x16\x8c\x55\x49\xeb\xf1\x53\xd8\x3f\x1e\xc8\xda\x13\xa2\xf2\ \xda\x15\x1f\xbd\x08\xb8\x96\x03\x8c\xe9\xde\xc9\x25\x45\x55\x75\ \x8b\x7d\x91\xf8\x04\x3b\xde\x08\xad\x80\x3d\x61\x21\x1c\xca\x6a\ \x9d\x72\xc7\xb5\x0b\xff\x5c\xbd\x70\x11\xab\x9c\x51\x36\xa3\xdc\ \x39\xbd\xaa\xda\xe5\x18\x37\x4d\x0a\x0e\xc2\x5a\x0d\xdb\x77\x48\ \xcb\x85\x2a\x39\xde\xb8\xf7\x56\xf7\x9d\x8e\x5d\xa7\x7e\xf9\x64\ \xa7\x91\xd2\x84\xa6\x02\xe0\xe6\xaf\xdc\xba\x6b\xd5\xba\x77\x56\ \xbb\x27\x8c\x77\xc4\x88\xc8\xa3\x62\x2c\x34\xe8\x7f\x5c\xca\xf3\ \x66\xa9\x45\xb3\x3a\xa1\x18\x89\xa2\xb9\x17\x5b\x2f\x45\x31\x43\ \x0e\xbb\xa7\x3c\xc8\x03\x5a\xc8\x1f\x6e\x3d\x76\xb4\xc7\x7f\xab\ \xbd\xe1\x74\xe3\xe7\x5f\x27\x02\xc3\x30\xf4\x47\x72\x00\x21\xdd\ \xeb\xfd\x3b\x02\x1a\x59\x0c\x3b\x35\x18\xd4\x42\xc1\x01\x0d\xdf\ \x13\x76\x85\x05\x85\x4f\x8c\x13\xb4\x71\x2e\xe1\x61\xb6\x82\x08\ \x81\x87\x16\x8d\x92\x7b\x77\xef\x46\x3b\xda\xdb\x65\x7f\xfb\xcd\ \x33\x4a\xf8\xfe\xa1\x2b\x27\x7e\x68\xce\x44\xf8\x61\x00\x74\x12\ \x6f\xdc\xb7\xab\x41\xd0\x09\xb1\xe9\x7a\x5c\x30\x74\x22\xc4\x55\ \x79\x40\x8d\xc8\x03\x06\xa3\x73\x09\x10\x10\x01\x42\x9e\xd3\x2d\ \x08\x79\x6e\x6a\x3a\x83\x36\x84\x86\xae\x13\x39\xa6\x84\x6f\x0f\ \xf6\x75\x5c\xe9\xbc\xde\x72\x1d\x66\xc3\xd9\x42\x7c\x98\x0b\x28\ \x52\x34\xac\x93\x8a\x9d\xbe\x0b\xf4\x1b\x4f\x9f\x6c\x8a\xd1\x74\ \x8b\x60\xbc\x83\x53\x18\x70\x08\x23\x53\x10\xd1\x5c\x5c\x90\x0c\ \x27\xb4\xa6\x4a\x95\x10\x7a\x98\x6d\x04\x00\x12\xde\xa0\x67\x44\ \x28\x20\x9d\x49\x93\x0c\x6d\xff\xcd\x78\x60\x5f\x96\x4d\xde\x80\ \x7a\x36\x71\x90\xcd\xa2\x98\xcb\x00\xc0\x48\x01\x90\x04\x91\x14\ \xdd\x48\xf3\x37\xec\x5f\x35\x1d\x2c\x65\x8c\x04\xaa\xe9\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x8c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x04\x53\x49\x44\x41\x54\x78\x5e\xc5\x96\x5d\x68\x1c\x55\ \x14\xc7\xcf\xcc\xec\xce\x64\x66\x3f\x92\x98\xe6\x63\x3f\x66\xcd\ \xd6\x45\xb3\x56\x24\x62\x49\xaa\x35\x48\x84\x44\x6c\xad\x51\x8c\ \x85\x22\xea\x9b\x8f\x42\xdf\x4a\xfb\x20\x3e\x14\x34\xe0\x8b\x0f\ \xbe\xe5\x45\x10\x41\x82\x0f\xd2\x3e\xd8\x94\x4a\x7d\xa8\x28\x45\ \x21\x5a\x9b\x54\x1b\x93\xcd\x26\xbb\x6b\x43\x5b\xb2\xbb\xb3\xb3\ \x33\x7b\x77\x3c\x97\x39\xb0\x83\x84\x4d\x9b\x76\xe2\x81\x1f\x97\ \xbb\xec\x3d\xf7\x3f\xe7\xe3\xde\x2b\x38\x8e\x03\xff\xa7\x05\xe0\ \x3e\x6c\xfc\xc4\x47\x31\x1c\xa6\x91\x2c\xb4\x6c\x0b\xb9\xee\x99\ \x27\x90\xa4\x67\x3e\xf7\xfd\x57\x1f\x5e\x7a\x60\x01\xc4\xf4\xbb\ \x6f\x1f\x3d\xad\xeb\x03\x1a\x9f\xf0\xe0\x19\x86\xc9\x72\x6b\x05\ \x43\x10\xdc\x05\xbd\xfb\xba\x95\x9e\x9e\x2e\x19\xc8\xce\x7e\x3c\ \xcb\x87\x87\x24\x80\x88\xc7\x7b\x43\x41\x49\x91\x4c\x1b\xa0\xd1\ \x00\xd0\xf5\x4c\x37\x88\x00\x22\x8a\x90\xd0\x63\x10\xe9\x40\x09\ \xf9\x8d\x5b\x06\x00\x44\x1e\x4a\x0a\x88\xb9\x2f\xbe\x3c\x0f\xc8\ \x1b\xcf\x0c\x0f\x25\xa7\xa6\x5e\x49\xc9\x4a\x54\xb1\x50\x08\x8f\ \x40\x30\x88\x0e\xed\x3a\x3b\x7f\xe9\x87\xfc\x77\x17\xae\x6c\x52\ \x6a\xe6\xa0\x8d\xed\xaa\x08\xa9\x1e\xde\x3b\x76\xec\xa5\xb3\xa3\ \x87\xc6\x12\x35\x13\x40\x92\x00\x34\x15\x63\x7d\x71\x7e\xf5\xc2\ \xfc\x95\x19\xcc\xfb\xe7\x70\x0f\x26\xc2\xee\x2d\xab\x27\x63\x1a\ \xd7\xcf\x01\x01\x40\x0e\x00\xe0\xe6\x9b\xad\xcd\xfd\x15\x30\x92\ \x4a\xe9\x51\x9b\x01\x30\x14\x20\xa1\xa7\x7c\x3e\xcf\x3b\xe2\x67\ \x04\x7c\x13\x40\xe1\xcf\x66\x32\xa9\x01\xc0\x42\xe4\xf9\x6f\xa2\ \x00\x01\x3d\x15\x8a\x45\x83\xf2\xee\xcb\x39\xe0\x25\x9b\x4e\x27\ \x35\x8b\xba\xc0\x11\xdc\x0e\x58\x5d\xdd\x68\x09\xf0\x39\x05\x43\ \xb1\x44\x2c\x54\xb7\x00\x6c\x46\x8e\x24\x80\x85\x85\x25\xff\x53\ \x40\x8c\x26\xf5\x54\xc4\xe4\x02\x1a\xae\x97\x4a\x65\xab\x5e\xa9\ \x18\x39\x2c\xc0\x2d\xdf\x52\x40\xf9\x4f\xf4\x0f\xec\xdb\x2f\xab\ \x51\xa5\x7c\x87\xe7\xdf\x0d\x7f\x2e\x97\x2b\x03\xc0\x4f\xbe\xde\ \x05\x44\x76\x30\xad\x6b\xf5\x3a\x80\x65\xf1\xa9\xdb\x01\x1b\xf9\ \x42\x15\x27\x8b\x7b\x22\x20\x91\x8c\x6b\x3c\xfc\x16\x73\x8f\x5d\ \x11\xb9\x76\xed\x46\x2b\x02\x3e\xd7\xc0\x48\x5c\x7f\x34\x6a\xd6\ \x01\x6c\xdb\x5d\xc0\x58\x9d\x95\x8a\x9b\xb7\x30\xff\xeb\xbe\x09\ \xa0\xfc\x47\x43\x61\xed\xa9\x70\x57\xaf\x56\xb3\xdc\x03\x48\x0c\ \xf0\xf0\xaf\xb5\xaa\xdf\xe7\x08\x0c\x0d\xa6\x53\xa1\x5a\xcd\xcd\ \xbf\x43\x05\xf8\x4f\xb1\x40\xfd\xef\xbf\x80\x6c\x22\x15\xd7\x6a\ \xd4\x7e\xdc\x02\x01\x80\xa5\xeb\x7f\xed\x59\x04\x46\xe3\x7a\x3a\ \xc2\x6f\x3f\x8b\xfa\x3f\x28\x03\xac\x2c\xe7\x0c\xcc\xff\x9e\x44\ \x60\xa4\xab\x37\xc9\x0b\x10\x18\xe3\xed\xc7\xc3\x4f\x17\x90\x5f\ \x6f\x42\x01\x8d\x8f\x63\xd3\xa7\x9f\xdc\xff\x78\x46\x33\x4c\x00\ \xde\x82\x0c\xdc\xd7\xcf\xfa\xcd\xbf\xcb\x4e\x93\x5d\xc5\xbf\x79\ \xa3\xe9\x20\xe0\xa0\xed\x5a\x00\x6d\x4c\x80\x88\xd3\x43\x8f\x3d\ \x91\x89\x72\x01\x96\x45\x4f\xaf\x20\x40\x7e\x75\xbd\x66\x99\xc6\ \x9f\x80\xd3\xd6\xe6\x2e\xb8\xa6\xb9\x93\x18\xb1\xcd\xe6\x12\x09\ \x94\x39\xb8\xfa\x40\x67\xcf\x80\xdb\x01\xfc\x06\xa4\x0b\x68\xf1\ \xb7\x3f\xaa\x3f\x7e\xfb\xe9\xef\x38\x55\x91\x0e\x42\xa1\x75\x41\ \xf2\x23\x70\xdb\x5e\x40\xfb\xcd\x15\x44\x7d\x76\xf2\xfd\x97\x43\ \xe1\xf0\x64\xa8\x3b\x15\x31\x6a\xee\x15\xcc\x18\xcf\x7f\xa9\xc6\ \x98\xbd\xfc\x48\x2c\x33\x00\x00\x51\x7a\x80\x86\x91\x10\xa2\x91\ \x18\x99\xfc\xed\x2c\x80\x54\x8a\x48\x60\xf4\xd5\x0f\x26\x5e\x78\ \xf3\xd4\x67\x63\x6f\x9d\x39\x37\x34\x7c\x70\xe6\xe8\xf1\x13\x83\ \x75\x4b\x91\x98\xe3\xbe\xff\xb8\xa9\xe1\x7e\x75\x6c\x62\xf2\xf0\ \x81\xc3\xc7\xe7\x9e\x7b\xed\xe4\x0c\x8e\x13\x00\xd0\x49\x44\x48\ \x88\x42\x91\x10\xc9\x7f\xdb\x1a\x10\x38\x4f\xbf\xf8\x8e\x9e\x4c\ \x67\x3e\x39\x32\x3d\xa5\xf7\xc5\xfa\xd5\x26\x28\x52\xb5\x0a\xc0\ \xbf\xbe\x0b\xe5\x35\x99\xfb\x02\x0a\xa0\xdb\xe1\xe7\xc7\xfb\xc6\ \x8f\x8c\xf7\xe5\x96\x57\x06\xcf\x7d\xfd\xcd\xc1\xcd\xf5\xc5\x93\ \xa5\x95\x85\x0d\x00\xb0\x3c\xfe\x19\xd2\x40\xa8\x26\xda\x17\xa1\ \x10\x90\xe5\xce\x0e\x4d\x0b\x38\xe0\x08\xa5\x42\xd1\xe4\x6b\x4c\ \xc3\x6c\x16\xf2\xeb\x75\x2a\x33\x50\x54\x55\xea\x8f\xc7\x95\x2d\ \xfc\xa5\x7c\xdb\x5d\x68\x54\x0c\xa8\xde\x2d\x35\x28\xf4\x22\xd2\ \xf4\x08\x11\xef\xb9\x0b\x7e\x99\x9f\xbd\xe1\x38\x70\x66\x79\x69\ \xf1\x75\x6c\xb1\x20\x38\x4d\xa9\xd1\xb0\x4d\xb3\x7a\x67\x0d\x1c\ \x47\x40\x01\xa2\x14\x90\x35\x45\x8d\xa4\x28\x77\x0e\x1f\x6e\x17\ \x6f\x5e\xae\xdc\x2d\x19\x0f\x7a\x0e\x38\x08\xfb\xf5\xe2\xec\x65\ \x1c\xaf\x22\xaa\x37\x8f\x88\x44\xa3\xf0\x9f\x35\x4d\x0f\x0d\xc4\ \x22\xec\x56\xf8\x77\xee\x02\x87\x60\x48\x1d\x31\x90\x0a\x52\x46\ \xb6\xee\x83\x32\xad\xab\x22\x35\x6f\xfe\xdb\x46\xc0\x41\xa3\xc3\ \xa3\x81\x00\x2d\xb2\xe9\x7f\xf4\xe5\xc8\xf6\x11\xf0\x46\x81\x11\ \xb6\x87\xe6\x76\x87\xd1\xbf\xd9\xa8\xcd\x40\xb9\x85\xa0\x1e\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x9f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x31\x49\x44\x41\x54\x58\xc3\xc5\ \x97\x6d\x4c\x53\x57\x18\xc7\x2b\xea\xe2\x66\xc6\x32\x63\xb6\x6c\ \xdd\xa6\xcb\x26\x51\x37\xa3\x21\x99\x9a\x4d\x0a\x53\x96\x6c\x3a\ \x27\x43\x04\x8d\x1f\x8c\x73\x59\x36\x40\x5e\x12\x4d\x46\x15\x30\ \xbe\x47\x97\xbd\x32\xac\xca\x00\x87\x51\x51\x37\x40\x93\x81\x18\ \xa1\x2d\x60\x47\xa1\x2f\x58\x79\x47\x81\x16\x07\x14\x8d\x54\xd3\ \x84\x25\x24\x8f\xff\x07\xee\x35\xb5\x96\xd2\xde\xfb\xc1\x0f\xbf\ \xdc\x7b\xcf\x39\xcf\x39\xbf\xf3\x9c\x73\x7b\x4f\x15\x44\xa4\x78\ \x96\x3c\xf1\x10\xb5\x71\xcf\x4c\xf0\x3d\x68\x14\x28\x02\xb9\x5e\ \x88\x75\x7c\xbf\xd2\x2b\x3e\x0c\xa8\x85\xfa\x32\xaf\xb8\x32\xa1\ \x9c\xeb\xc3\x26\x12\xd8\xf2\x5b\xb1\xbe\xaf\xfb\x21\x11\x53\xdb\ \xee\x74\x57\x5a\x1c\xae\x0a\xb3\xc3\x75\x05\x5c\xb5\x3a\x5c\x62\ \x1d\xdf\x73\xc7\x5e\xf1\xea\x73\xd7\x6c\x43\x5c\x6f\xb6\xbb\x46\ \xb8\x8d\x08\x3f\x73\x39\xd7\x73\x3b\xbf\x19\xd8\x94\x9e\x63\x3b\ \x9c\x5f\xd9\xa3\x6b\x71\xba\x9b\x06\x88\x4c\x0e\x22\xcb\x1d\x22\ \xeb\x9d\x91\xd1\x5f\x21\xf8\x4d\x66\x7e\x8b\xbf\x0c\x88\xf1\x35\ \x6d\x4e\x77\xc7\x7d\xa2\x1a\x4c\x84\x9f\xb9\xdc\x6f\x06\x3c\x3a\ \x52\x82\x58\x0e\x68\xec\x23\xaa\xbb\x45\x54\xdf\x4b\x74\x30\xaf\ \xb2\x07\xe5\x89\x60\x81\xbf\x75\x15\xe3\x59\xb4\xeb\x01\x91\x30\ \x70\x2c\x97\xfb\xdd\x03\x3e\x3a\x6a\x34\x61\xe6\x35\x5d\xe3\x02\ \xe9\x87\xcf\x75\xa0\x6c\x69\xa0\x1b\x8c\xe3\x3b\x5d\x44\x7c\x0d\ \x68\x13\xfa\xea\xa0\x11\x02\x3a\x08\x18\x20\x90\x26\x41\xa0\x7d\ \x58\xa6\x80\x11\x4b\x50\xd5\x81\x65\xe8\x21\x4a\x95\x20\xd0\x2a\ \x57\xc0\x80\x0d\x78\xb5\x8d\x48\x7f\x1b\x02\x87\x82\x17\x68\xbe\ \x2f\x53\xa0\x16\x33\x2f\x6f\x26\xaa\xee\x24\x4a\x91\x20\x60\xbb\ \x27\x53\x40\x87\x99\x5f\xb6\x21\x0b\x58\x86\xed\x07\x83\x17\xb0\ \xde\x95\x29\x70\x0d\x1b\xb0\xd4\x4a\x54\xd1\x2a\x4d\xc0\x3c\x24\ \x53\xe0\x0a\x66\x7e\xc1\x84\x2c\x60\x19\x92\x25\x08\x34\x38\x65\ \x0a\xfc\xd3\x4e\x74\xb6\x81\xa8\x04\xcb\x90\x74\x20\x78\x81\xfa\ \x41\x99\x02\x97\x5b\x88\x8a\xfe\x25\xba\x88\x65\x48\x94\x20\x70\ \x7d\x40\xa6\x40\x29\x52\x5f\x70\x1d\x1f\x11\x33\xd1\x77\x12\x04\ \x6a\xfb\x65\x0a\xfc\x75\x93\xe8\x44\x2d\xd1\x69\x74\xf1\xad\x04\ \x01\xdd\x7f\x32\x05\xfe\xc6\x12\x68\xf4\xc8\x82\x01\xdf\x82\x1f\ \xcb\x6e\xa1\x2c\x3a\xc0\xc1\x95\x71\xa9\x39\xb6\xf2\xae\x91\x51\ \xdc\x57\x49\x15\xc8\x3d\x5e\xe5\x70\x69\x6a\x90\x85\x3a\xa2\xec\ \x02\x7d\x1f\x9f\x19\x02\x14\x88\x4e\x83\x70\x61\xdd\xd3\xe7\x86\ \x60\x04\xb6\xec\x29\xd4\xf7\xe5\x61\xf6\x39\x5a\x48\x68\x9d\x6e\ \x3e\x25\x05\x28\xa0\xfe\xe9\x92\x6d\x88\xe3\xfd\x49\x4f\xd6\x49\ \xe8\xea\x6d\x47\x2c\x7f\x9a\x46\x46\x7f\xc7\x32\xe4\x1b\x89\xd6\ \xa7\x8c\x7d\xdb\xd7\x4d\x12\xb7\x8e\xdb\x55\xd8\x1f\xb7\x57\x4a\ \x12\x10\x3a\x4b\xcc\x42\xea\x4f\xe1\x2d\xd0\xe0\x6d\x38\x86\x2c\ \x40\xca\xaa\x8a\xdf\x1d\xab\x50\x28\xa6\x7a\x10\xc2\x44\x26\x64\ \xc5\x8c\x49\x1b\x9d\xee\x03\xc5\x0d\xfd\x7c\xc2\x0a\xf8\x50\xfa\ \x44\x85\x42\x31\x85\x3b\x0c\xff\xe4\xeb\xd0\xc8\x84\xcc\x5d\xfb\ \xcf\x1a\x07\x4e\xdf\x20\x3a\x65\x21\x3a\x59\x37\xe8\x4e\xfe\xa1\ \xf4\x76\x64\x42\xb6\x59\x15\x9f\x75\x9c\xc1\xc0\x9a\xa8\x8d\xd9\ \xa6\xed\x28\x2f\xac\x1f\x74\x33\xbc\x5c\x11\x1b\x76\xbd\xce\x7d\ \x05\x25\x20\x0c\x3e\x0d\x3c\x07\x9e\x5f\xa4\xda\xfc\x4e\x44\x5c\ \x46\x76\xd2\xd1\x92\xee\x22\xcb\xf0\xff\x17\xf1\xeb\x58\x82\x63\ \xda\xa5\x6e\x64\x45\xdb\xfb\x40\xa3\xb5\x8f\xc1\xcf\xcc\xde\x33\ \xc6\x81\x4f\xbf\x3a\xd2\x84\x98\x38\xa1\x9f\x90\x89\x24\xfc\x0d\ \x3e\x03\xbc\x08\x66\x81\x57\xc0\x6b\x1f\xac\x4e\x4e\x89\x88\x53\ \x57\x6e\xda\x79\xa2\x33\x23\xaf\xba\xff\xe7\xf2\xf6\xe1\xdc\xea\ \xde\x87\x0c\xdf\x73\x59\x4c\xd2\x2f\xad\x1f\xc6\xec\xdc\x3f\x2f\ \xfc\xb3\xf7\x10\xf3\x12\x78\x01\x4c\x67\x89\x49\x05\x84\xc1\xa7\ \x0a\x83\x73\xf0\xab\xe0\x2d\xf0\x2e\x98\x0f\x16\x82\x45\x73\xdf\ \xff\xf8\xcb\x25\xab\xb6\x66\x2d\x5b\x93\x52\xb0\xfc\x8b\xf4\xf3\ \xcb\xd7\xa6\x15\x2f\xfb\x3c\xf5\x8f\xf0\xe8\x6d\x6a\xe5\xbc\xa5\ \x51\x68\x13\x06\xde\x06\x9c\xfe\x97\x05\x89\x69\xbe\xb2\xe0\x2d\ \x10\x22\x34\x9c\xf9\x51\xcc\x8e\x7d\xaa\x0d\xbb\x6d\x58\xc3\x9b\ \x98\x75\x0b\xd2\xd9\xca\xac\x58\x9f\xd1\x36\x11\x62\x9b\xf1\xf6\ \xea\x66\x8e\x57\xc5\x67\x36\x61\x7f\x58\x78\x1f\xf9\xca\x82\x2f\ \x01\x4e\x57\x28\x07\x8a\x7f\x42\x3a\x87\xa5\x23\xf6\xc1\x1b\x36\ \x68\x01\x03\xbe\x64\x8c\x0e\xe7\x42\xad\x80\xce\x3e\xfe\xac\x13\ \xef\xed\x1e\x75\x7c\xf5\x28\xe3\xab\x61\x70\x9c\x60\x04\x9e\xe9\ \x12\x04\xb4\x09\xc1\x62\xb0\xc4\x83\xc5\x42\x39\xef\xfc\x05\x92\ \x37\xe1\x64\xaf\x21\x50\x82\x37\xc1\x1c\x30\xd7\x83\x39\x82\xe8\ \x1b\xc2\xa0\x2c\x3e\x3b\x90\xd7\xf0\x11\x90\xc3\x06\x4d\x55\x03\ \x54\xc0\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\xe8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x05\x7a\x49\x44\x41\x54\x58\xc3\xc5\ \x96\x0d\x4c\xd4\x75\x18\xc7\x1f\x2e\x01\xb1\xc0\x38\x1c\x6f\x81\ \x61\x9a\x24\x18\x57\x20\x21\xa9\xbc\x1b\xd4\x28\x96\x2d\x93\x36\ \x27\x45\xb9\xca\x88\x4a\xd9\x60\x33\x29\x50\x47\x80\xbc\xb8\xb0\ \x40\x40\x4e\x8e\x57\x89\xe0\x70\x8a\x32\x72\x91\x81\xd3\x39\x60\ \x97\x20\x06\x2c\x25\x85\x89\x16\x2f\xcd\xdd\xb9\xe0\xe9\x79\xce\ \xdf\x7f\xfb\xeb\x4c\x8e\x08\xba\xed\x33\x8e\xdf\xff\x7f\xff\xe7\ \xfb\xbc\xff\x01\x11\xe1\xff\xc4\xb4\x9b\x00\x1c\x89\x08\x62\x23\ \x11\x44\xb8\xce\x99\x00\xfa\xb8\x3d\x09\xb0\x27\x09\xe0\xec\x1e\ \x80\xde\x4f\x00\x5a\x82\x01\x0e\x08\x31\xee\x73\x21\x20\x2a\x19\ \x40\x97\x4f\xb7\xca\x61\x31\x8b\x00\x76\xd2\x75\xcb\xd9\x16\xb0\ \x9d\x0d\xb2\x08\xfe\xce\x46\x39\x1a\x7c\xf6\x16\x40\x1d\x9d\xf9\ \xcc\xb6\x80\x8d\xec\xed\x07\x00\x27\xe8\xfb\xf3\x5c\x0f\x2c\x42\ \x26\x2a\x6a\xd6\x04\x70\x8e\x57\x01\xec\xcb\x03\xb8\x95\xea\xe4\ \xd4\xce\x85\x28\xce\x37\x7f\xe5\xe2\x32\xc4\xc2\x58\xe0\x6c\x0a\ \x30\x7a\xcf\xde\x6a\xfc\xfc\xf4\x22\xe7\xdc\x0d\x9b\x0b\xbc\xbc\ \xae\xcf\x85\x00\x77\xae\x78\xae\x7c\xb5\xa7\xa7\xbe\x22\x34\xd4\ \xc0\x91\x60\x6a\x37\x6c\x40\x29\x2d\x26\x1b\x03\x58\xc6\x29\x13\ \xad\x6c\x6b\x6a\x0d\xb8\xf2\x0f\x42\x15\x8a\xaf\xd9\xa8\x76\xeb\ \x56\x23\xdf\x45\x47\x9b\x5c\x03\xf4\xf1\x0d\x0b\x0b\x4b\x3c\xdf\ \xd8\xf8\x8b\x7e\x74\xf4\xaf\xa1\xee\xee\x3f\xf9\x99\x26\x0f\x22\ \xf1\x90\x30\x8e\x44\xb1\x9d\x1d\x1e\x72\x72\xc2\x83\x16\x16\xc8\ \xb5\x41\xe7\x1f\x3e\xc8\x70\x48\x48\x48\xe2\x39\xad\xb6\x5f\xaf\ \xd7\x23\x33\x36\x34\x84\x27\x93\x92\xae\x49\xc2\xa7\x23\xc0\x96\ \x6b\x20\x07\xe0\xa6\x7c\x1e\xbc\x0c\x70\x88\x43\x2b\xbb\xcf\x92\ \x0d\x07\x05\x05\x25\xfe\x54\x53\xd3\x3f\x32\x32\x82\xcc\x28\xd1\ \xd3\xd8\x78\xfb\x1d\x95\xaa\x54\xa4\xc1\x6d\x5a\x02\x24\x8f\xb8\ \x26\xd8\xf0\xa9\x98\x18\x1c\xed\xef\xc7\xac\x80\x80\x56\xd1\x9e\ \x0b\x88\xb5\x61\xbe\xbe\x99\xa7\xca\xcb\xfb\x07\x07\x07\x51\xe2\ \x4a\x4f\x0f\x7e\x9b\x90\xd0\x27\x8a\xd8\x77\xda\xbb\xe0\xde\x54\ \xb4\x16\x16\xfe\x66\x30\x18\x90\x39\x97\x9b\xcb\xf9\xdc\x1c\xe2\ \xe3\x9d\x79\x22\x3f\xff\x6a\x5f\x6f\x2f\xf6\xca\x38\x5b\x55\xa5\ \x8f\x59\xb9\x92\xbd\x0e\x93\x0a\x6f\xa6\x02\x6c\x83\x83\x83\x13\ \xc7\xc7\xc7\x91\xb9\x79\xf5\x2a\x96\xa4\xa6\xde\xa8\xae\xae\xc6\ \xd6\xd6\x56\xec\xec\xec\x34\x72\xfe\xf4\x69\x2c\x89\x8b\xbb\xc8\ \xe2\x08\xaf\x19\x6d\xc3\x7b\x05\xb0\x37\xa7\x6b\x6a\xae\x0d\x0f\ \x0f\xa3\x5a\xad\xc6\xe4\xe4\x64\xac\xad\xad\xc5\xe2\xe2\x62\xd4\ \x6a\xb5\x78\xbc\x20\xff\xd6\x6b\x1e\x1e\x07\x85\xd7\x0b\x66\xbc\ \x8e\x65\xed\x18\xb1\xc2\xc1\x61\xf7\x81\x84\x84\xeb\x65\x65\x65\ \xc6\x10\xfb\xfb\xfb\xa3\x8d\x8d\x0d\x0e\x0c\x0c\xe0\xf1\x86\x06\ \x4c\x89\x8e\xee\x9e\xce\xa6\x9c\xca\xa8\x8d\x28\xb0\x77\xb9\xf8\ \x76\x3b\x3b\xff\x7c\x24\x37\x77\xb2\xa2\xa2\x02\xb3\xb3\xb3\x31\ \x2f\x2f\x0f\x2b\x2b\x2b\xb1\xbe\xbe\x1e\x2f\x5d\xba\x64\xe4\xb2\ \x4e\x67\x08\x50\xa9\xd2\x1f\x14\xf6\x29\x05\xd0\xc7\x93\xbd\xe0\ \xf7\x00\x9e\x76\xfb\x01\xc6\x8c\x6d\x67\x66\x86\x05\x56\x56\xa8\ \x49\x4b\xc3\xc3\xf9\xf9\x93\xbb\x62\x63\x7b\x93\xe3\xe2\x86\x4a\ \xd3\xd3\x7f\xa7\x9c\x4f\x76\x74\x74\xa0\x4e\xa7\xc3\x3f\x86\x87\ \x27\xd3\xb6\x6d\xab\xe7\xae\x30\x59\x80\xd4\x46\x3c\x58\x36\x01\ \x54\xee\x05\xe8\x67\xa3\xdf\x00\x4c\xf0\x5f\x7a\x03\x31\x94\x2c\ \x5e\x6c\xec\xfd\x02\x47\x47\xf4\x51\x2a\x33\xc5\xfd\x2c\x36\x68\ \xb5\x83\xc3\xbe\x86\x9c\x9c\xd1\xb6\xd6\x36\x6c\x6b\x6b\xc3\x6b\ \x57\x06\xb0\x49\xa3\xb9\x38\x55\x1d\x48\xc6\xbd\xb8\x47\xd9\x5b\ \x32\xa4\x97\x86\x0c\x7f\x4f\x00\x68\xa2\x61\xb3\x85\xd3\x50\xe4\ \xea\x6a\x28\xb4\xb6\x36\x5e\x7b\x1d\x60\x07\x9d\x3d\x24\xe3\x09\ \xe2\xd5\x9d\x51\x51\xdf\x37\x69\xb5\x93\xcd\xcd\xcd\xd8\xd5\xd5\ \x85\xdd\x67\xce\x8c\x89\x05\xe6\xf8\x0f\xd1\x06\x77\x36\x9e\x05\ \x70\x5d\x32\x9c\x0b\x30\xf2\x11\x40\xa1\x2f\x09\xa3\xeb\x66\xc4\ \xfa\xf7\x01\x4e\x56\x05\x06\x62\x81\xb9\x39\xee\x02\xa8\x15\x13\ \x6f\xfe\x7d\x08\x59\x6e\x6f\x9f\x56\x96\x92\x32\x76\xf4\xe8\x51\ \x6c\x69\x69\xc1\x5f\x2f\x5c\x30\xac\xf1\xf0\xc8\xa0\x6b\xaa\xfb\ \x09\xd8\xf8\x25\xc0\x80\x31\xb4\x36\x36\xb7\xdf\xa3\xfd\x2f\xa9\ \xa5\x8f\x92\x08\xa7\x92\xae\x2e\x75\x77\xc7\x32\x95\x0a\xbf\x00\ \x68\xa6\xb3\x85\xc4\xa3\xa2\x25\x95\x32\x6c\xc5\xf9\xd3\xc4\xa6\ \x4f\xc3\xc3\x7f\xa8\x3e\xac\x9e\xac\xab\xab\xc3\xcb\x3d\x3d\x13\ \xd1\x91\x91\x64\x06\xd6\xdd\x25\x80\x0b\x8d\x8d\x97\xfb\xf8\xe0\ \x8b\x00\x7b\x65\xc6\x9f\x22\xa2\x3f\x06\xf8\x51\xed\xe6\x86\x47\ \x22\x22\x90\x92\x3e\xc0\x5e\x10\x8f\x89\xb6\x7c\x9c\x67\xba\x0c\ \xfe\x7f\x31\xe1\x42\x38\x13\xaf\x2c\xb5\xb3\xcb\xca\x8b\x8f\xbf\ \xa1\xd1\x68\x50\xd7\xde\x8e\xc9\xb1\xb1\x0d\xf2\x16\x05\xe9\xf5\ \x8a\x57\x2d\xbf\xeb\xad\xba\x13\x81\x1d\x24\x6c\xef\x6e\x80\x3e\ \xf6\x9c\xaf\xe5\x29\x14\x7a\x6f\x80\xb7\x85\x30\x0f\xe1\x25\x8b\ \x79\x46\x86\x4a\x9c\x73\x61\xae\x20\x96\x13\xcf\x11\x6f\x6e\xf1\ \xf3\x3b\x56\x98\x91\x31\x71\x4c\xad\x36\xd0\xff\x6f\xc8\x53\xb0\ \x96\xf3\xaf\xf1\xf2\xc2\x9a\xc8\x48\x64\x83\xbc\x6a\x19\xce\xb9\ \x64\x9c\xe6\x00\x6d\x63\x78\x56\x3c\x70\x35\xb1\x86\xc3\x49\x04\ \xc8\x58\x27\xce\xfd\x09\x3f\x7e\x61\x15\x82\xc8\x1f\x78\x69\xa9\ \x52\x99\x11\xe5\xe9\x59\xc6\x4e\xdc\xd5\x05\x24\x75\x0d\xd5\x41\ \x57\x81\x42\x81\xbc\xef\x4b\x9c\x9d\x8d\x14\xd1\x84\xe3\x9d\x1f\ \x02\x10\x4f\x3f\xf2\x16\x0f\x66\x43\xa4\x07\x42\xb9\x38\x89\x17\ \x64\xac\x17\x6d\x47\x3f\x81\x40\x21\xc6\x57\x44\x84\xd3\xe3\x24\ \xd2\xa3\xb8\xef\x20\x8a\x21\xc5\xdb\x01\x3e\xff\x0c\xa0\x88\xf6\ \x66\x31\xb9\x9c\xb2\xee\x4e\xc8\xdd\xff\x23\x01\x4a\xd1\x29\x8a\ \xa9\x26\xa1\x82\x98\x47\x3c\x4c\xd8\x13\x4b\x44\xde\x67\x92\x02\ \x67\x31\xda\x2d\x4c\x11\x60\x26\x86\xcb\x7c\xd1\x72\x0e\xa2\xba\ \x97\xfd\x8b\x22\x5c\x22\x8c\xdb\x8a\x69\xcb\x8e\x99\x4d\xb9\x8c\ \x84\x88\x79\x42\x84\xb5\x08\x9f\xbd\xc8\xa3\xa9\x6d\xc8\xc2\x17\ \x09\x27\xd8\xb8\xb9\xdc\x7b\x53\xb6\xa1\x24\x82\xc3\x66\x25\x52\ \x62\x6d\xc2\x20\x5a\x28\xc2\xfd\x88\x30\x6c\x29\x9e\xa3\x90\x7b\ \xcf\xfc\x0d\xe3\x58\x91\xad\x93\x78\x02\x2d\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x07\x72\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x07\x39\x49\x44\x41\x54\x78\x5e\xa5\x97\x6b\x6c\x14\xd7\ \x19\x86\x9f\x33\x33\x7b\xf1\xda\xbb\x5e\xdb\xf1\x05\x1a\xb0\x21\ \xb8\x01\x43\x02\x85\xa6\x51\x29\x14\x2b\xa2\x49\x14\x89\x5f\x6d\ \x41\x55\xc9\x45\x28\x42\x02\xa7\x28\x4d\xaa\xfe\xea\x45\xe2\x47\ \xfe\x94\x44\x51\x4a\x93\x8a\xaa\x45\x4d\xa3\x46\x8a\x5a\x95\x48\ \x16\x69\x68\x43\x21\xad\x02\x82\x16\x62\x2e\x36\x36\xc6\x57\xf0\ \x8d\xb5\xbd\x17\xef\xee\xec\xce\xe5\x74\x38\x5a\x65\xd5\xf5\x62\ \x0b\xfa\x4a\xaf\xce\x68\xce\x1c\x7d\xcf\xf9\xbe\x6f\xce\xce\x0a\ \x29\x25\xe5\x24\x84\xd8\x0e\xac\x67\x71\x75\x49\x29\xff\xce\x7d\ \x4a\x01\x94\x04\x5e\xab\x69\x5a\xd4\x03\xfb\x9e\xe3\x38\x1d\x2c\ \x22\xef\xd9\x3f\x00\x9d\x05\x90\x5e\xee\x51\x5a\xe9\xae\x0f\x3c\ \xbd\xe9\xa7\xaf\xef\xdb\xf9\xf3\x27\x36\xae\x79\xf2\xe2\xc5\x8b\ \x0c\x0e\x0d\x31\x34\xe8\x79\xa8\xe0\xc1\x41\x35\x7a\xf7\xf1\xe6\ \xd9\xfd\xe4\xe6\x67\x3e\x78\x75\xe7\x6b\x6b\x9b\xc2\xcf\x79\xf0\ \x11\xee\x51\x46\x09\xc0\x86\xf6\x68\x76\x57\x55\x65\x8e\xab\x21\ \x49\x4f\x4f\x0f\xe1\x70\x98\xbb\x29\x95\x4a\x61\x4c\x0d\xd4\x39\ \xdd\x03\x75\x4b\xb4\x74\xcd\x55\xa8\x06\x92\xff\x0f\x80\xb8\x39\ \xd8\x47\xc5\x48\x1f\xb3\xb7\x5c\xfe\x71\xf2\x24\x19\x33\x8b\x63\ \xd9\x48\xc0\x34\x4d\x72\xb9\x1c\xf9\x7c\x1e\xdb\xb6\xa9\xad\xad\ \xa5\x22\x3e\x45\xa2\x42\xc3\x76\xb9\x2f\x19\x25\xf5\x14\x48\x70\ \x81\xc6\xa0\xe0\xc2\xbf\xfe\x86\x99\x99\x43\xc3\x45\x02\x02\x88\ \xe8\x2e\xba\x26\xf0\x09\x81\x71\x5b\xb2\x2c\x62\x20\x70\xc1\xa8\ \x08\x3c\xf5\xc2\xcf\xbe\xfe\xd2\x2f\xbb\x1e\x02\x36\x00\x51\xa0\ \x19\x68\x41\x89\xcf\x81\x77\x0e\xff\x60\x7d\x5f\x59\x80\x23\x47\ \x8e\x08\x5d\xd7\x35\xa9\x39\x0a\x60\xd5\xaa\x15\xf8\x32\x3a\x92\ \x10\x52\x4a\xcf\x20\x04\xd4\x87\x83\x04\x0c\x9d\x80\x4f\x63\x3c\ \x2b\xb8\x3e\x31\xc9\xbf\x27\xc7\x08\x6e\xda\xb9\x67\xeb\xb6\x6d\ \x7b\x2a\xc2\x21\x96\xd6\x06\x08\x05\x74\xaa\x2b\x75\xea\xc2\x7e\ \xa2\x55\x7e\x7a\x46\x92\xed\xc7\x3e\x9b\x0a\x00\xfb\x4b\x00\xe6\ \x77\xa5\x10\x78\x8b\x03\xac\x89\x56\x92\xb5\x1c\x2c\xdb\xc5\x95\ \x12\x4d\x08\xfc\x86\x46\xd0\xa7\x93\x75\x04\x89\x68\x0b\x6f\xbc\ \xf9\x3e\x8d\x4b\x1f\x04\x50\xa0\x85\x51\xd9\x2b\x93\x2a\x57\x75\ \xb5\x9f\xc6\xda\x06\x46\x26\xe7\xf6\xbd\xf4\xd6\xe7\x1c\x3e\xb0\ \x61\xff\x5d\x01\xd0\x41\x68\xa0\xeb\x02\xd7\xb3\xe1\x0a\x24\x02\ \x57\x0a\x34\xa1\xee\x2b\xdf\x4a\x39\x7c\xf5\xe9\xcd\x44\xeb\xea\ \x55\x6f\x94\x91\xea\x97\x64\x32\x49\x30\x18\x54\xcd\xfc\xfd\xed\ \xcd\xd8\xf6\x8d\x22\x44\x11\x00\xf6\xee\xdd\x2b\x3b\x3a\x3a\x5c\ \x43\x08\x7c\x1a\xf8\x75\x0d\xc3\xd0\xd1\x10\xd8\xba\x8b\x2b\x51\ \x00\x86\xa6\x11\x30\x34\xf5\x8c\x99\xcd\xaa\x20\x3e\x9f\x8f\x72\ \xb2\x2c\x8b\x44\x22\x41\x4d\x4d\x8d\x02\x08\x04\x02\xec\x6a\xff\ \x12\xee\xa9\x9b\xfb\x3a\xde\xbc\x70\xfe\x57\x2f\x6f\x3c\x6a\x50\ \x14\xae\xeb\x4a\xa1\xeb\x18\x06\xaa\xc6\x04\xee\x5c\x6b\xcc\xe5\ \x6c\xe2\xe9\x1c\xd9\xbc\x8d\xe5\x48\x42\x7e\x9d\xd9\x2c\xd4\x9a\ \x26\x0b\xc9\x71\x1c\x32\x99\x8c\x2a\x03\xc5\x46\x67\x63\x4b\x80\ \x4b\x03\xd9\xe7\x81\xa3\x1a\x45\x21\x3d\xe9\x1a\x18\x3a\xf8\x7d\ \x02\x5b\x4a\x06\x62\x29\xae\x26\x0d\x8c\x55\x5b\x78\xb0\xfd\x59\ \xbe\xbc\xe3\x65\xea\xb7\x3c\x4b\xcd\xc3\x5b\xb9\xd6\x3f\xc2\xe9\ \xd3\xa7\x89\xc5\x62\xaa\xe6\xa7\x4e\x9d\xe2\xf0\xe1\xc3\x6a\x2c\ \x9e\xb0\x70\xfc\xf8\x71\x0e\x1d\x3a\xc4\xc1\x83\x07\xe9\xec\xec\ \xa4\xff\xc6\x20\xb6\x9d\xd7\x84\xa7\xf9\x00\xba\x02\x60\x68\x36\ \xcb\xb9\x49\x87\xd6\x1d\x1d\x6c\xfb\xe1\x51\x2a\xb7\xbe\xc2\xf8\ \x03\x3b\xb8\xec\x3c\xc6\x65\xf9\x04\x99\xe5\x7b\x68\x79\x7c\x3f\ \x96\xa8\xe3\xd8\x87\x9d\xea\x54\x1c\x1e\x9d\xe4\x9b\x4f\xed\xe5\ \xca\x95\x2b\x0a\x40\xd7\x75\x42\xa1\x10\x95\x95\x95\xea\x3a\x12\ \x89\x60\x18\x06\xae\x6a\x52\xf7\x2e\x6f\x81\x10\x4c\x66\x25\xf1\ \xa5\xad\x7c\xe7\xc0\x2f\x48\xe9\xf5\x24\x52\x39\x84\x6e\x81\x26\ \x48\xe7\x5c\x62\x71\x93\x54\x2a\x4f\x77\xde\xe5\x72\x55\x80\x8d\ \xad\x5b\xb8\xd2\xdb\xc7\x58\xb6\x8d\x99\xb3\x13\x18\x2a\x80\xfc\ \x22\x68\x4b\x4b\x8b\x3a\xb4\x84\x10\x54\x55\x55\x31\x91\x04\x6f\ \x4e\x96\x05\x10\x1a\x0c\xa7\x24\xbb\x5e\xfc\x31\xe1\x25\xcb\x18\ \xe9\x7c\x97\xa9\xfe\xcb\x18\x81\x0a\x5a\x5b\x36\xb0\x7c\xd5\xa3\ \xf4\x4e\x84\xb9\x31\x9c\x22\x36\x63\x32\x3a\x95\x61\xcc\xb3\x21\ \x1a\x99\x8a\x25\x68\x7f\x2c\x48\x43\x11\x40\xed\xde\xdb\x35\x75\ \x75\x75\x00\x0a\x2a\xe5\xa4\xbd\xd1\x96\x77\x34\x3f\x03\x1a\xb4\ \x44\x05\x9f\xbc\xfb\x06\x12\x8d\x8a\xc4\x20\x0d\x91\x20\x8e\xeb\ \x72\xb3\xe7\x24\x31\xb7\x8a\x75\xdf\x7a\x9e\x68\xdb\x37\xb8\xd8\ \x13\x67\xcc\xce\x90\x4a\xe6\x49\xa7\x2d\xcf\x36\x08\x40\x16\xcf\ \x04\xef\x0d\x51\x00\x85\xa3\x5e\x81\xf9\x8c\x3c\x42\x97\x77\xcf\ \xc0\xb2\x88\x20\x6f\x0f\xe0\xaf\x8c\x50\xb7\xb2\x96\x82\x58\xd1\ \x50\x45\x3c\x63\xd1\x7f\xea\x6d\x92\xf5\xff\xe1\xa1\x87\x5f\x20\ \x99\xf6\x61\x59\x0e\xb6\xe3\x2a\x1b\x3e\x0d\x69\xaa\x0c\x50\x22\ \x05\xa5\x4c\x71\xae\x5c\x06\x94\x1b\x22\x3e\x7c\xa1\x00\xa5\xaa\ \xad\xf4\xf1\x40\xd8\xcf\xd9\x2b\x67\x59\xff\xc8\x6e\x42\x41\x83\ \xac\x67\xdb\x96\x9e\x5d\x0c\x5d\x03\x50\x8d\x26\x28\x0a\x09\x08\ \x89\x2c\x66\x87\xbb\x66\x40\x59\xa8\x71\x9e\xce\x0f\xcc\x30\x38\ \x6b\xb1\xa3\xe3\x2d\x7a\x66\xa3\xe8\x81\x14\xc1\xa0\xae\x82\xdb\ \x96\x81\xcf\xd0\x50\xbb\x74\x5d\x24\x25\x92\x14\xe6\x16\x01\xd0\ \x34\x81\x50\x66\x9e\xfa\xa7\x52\xbc\xfa\x5e\x17\xfd\xb7\xd2\x88\ \x6a\x93\xe6\xfa\x0a\xb2\xa6\x43\xce\xb4\x31\xbd\x71\xd3\xea\x1a\ \xce\x9c\x28\x5f\x02\x60\xf1\x12\x08\xf1\xbf\x59\x28\x55\x6b\x53\ \x98\xd7\x77\xaf\x67\x28\x61\xa3\x37\xac\x66\xcd\xba\xaf\xa8\xce\ \x2e\x88\x33\x23\xd0\xd6\xd6\xb6\x30\x80\x5c\xac\x07\x16\x28\xc1\ \xe3\xad\xb5\x7c\x6d\x65\x84\x4f\x7b\x27\xf1\x3f\xb2\x8e\x1d\xbb\ \x5e\x54\x5d\x5e\xa2\x45\x00\x58\x30\x03\xca\x9a\x00\x41\x51\xae\ \x65\x92\x4f\x4d\x63\xcd\xcd\x60\x67\xe2\xe4\x66\x24\x86\x95\x29\ \xd9\xd1\xe2\x52\x60\x0b\x37\xa1\x50\x96\xd2\xc1\x31\x93\xe4\xe7\ \xbc\xa0\xa9\x69\x05\xa0\x40\x24\xc4\x73\x30\x38\x2b\x59\x3a\xe7\ \xde\x17\x80\x44\x02\x62\xe1\x0c\x64\xc6\xba\x01\x8a\x41\x4d\xc9\ \x68\x42\x72\x2d\xe6\x32\x96\x92\xe6\x60\xbe\x2e\xf1\xed\xaa\x15\ \x8d\xf7\x0a\xe0\x38\x8e\x32\x18\x0b\xbf\x86\x96\x03\x33\x59\x49\ \xff\x8c\xe7\x69\x97\x89\x39\x69\x4e\xa5\x65\xff\x6c\x56\xf6\x0f\ \xc7\x65\xcf\xba\x2d\xed\xeb\xab\x9b\x5a\x9f\x29\x02\x2c\x1e\x78\ \x7a\x7a\x9a\xd1\xd1\x51\x26\xd2\x41\x60\x59\xbc\x2c\xc0\xe4\x9c\ \xe4\xe2\xb8\x8b\x17\x84\x9b\x49\x19\xbf\x3d\x27\xfb\xc6\xe7\x64\ \xcf\xed\xb4\x9c\x00\xc6\x0a\x1e\x6f\x58\xde\xd6\xa4\x1b\x7e\x16\ \x03\x48\xa7\xd3\xea\x7f\x44\x57\x57\x17\x37\x06\x47\xd1\xaa\x57\ \x12\x69\xde\x0c\x1a\xef\x94\x03\x18\xfd\x74\xd8\xb9\xd1\x3d\x25\ \xc7\xc7\x53\xb2\xcb\x83\x19\x02\x26\x81\x71\x20\x0d\xf8\x00\x1d\ \x08\x5a\x79\xd3\x70\x1d\xa7\x1c\x80\xfa\x00\x99\x98\x98\x50\x3f\ \xcb\xdd\xdd\xdd\xc4\xd2\x3a\x81\x86\xb5\x54\xad\xde\x86\xe6\x0f\ \xfd\xde\xd2\x8c\xb7\xbd\xaf\xe3\x73\xe5\x00\xba\xfe\xd8\xe5\xfc\ \x04\x88\x01\x03\x80\x09\x84\x81\x4a\x20\xc0\x3c\x49\x0a\x00\x2a\ \xc5\x33\x33\x33\x5c\xbf\x7e\x9d\x4b\x97\x2e\x31\x3a\x3e\x4d\xde\ \xd7\x44\x45\xc3\x66\xfc\x75\x91\xb3\xae\x74\xde\x1b\xbe\x76\xee\ \x4f\x7f\xfd\xdd\x8f\x6e\x7b\xc0\x6e\xd9\xb7\xc0\x9b\xe8\x15\x42\ \x5c\x07\x34\x20\x50\x08\x9c\x07\x74\x40\x02\x4e\x61\x4e\xf7\xf9\ \x83\xb6\x44\x30\x33\x3b\xcb\xc4\xf8\xb8\x0a\x3a\x30\x34\x4a\xca\ \xae\x42\xaf\x6e\x41\x34\x3d\x3a\x66\xa5\x13\x1f\x0e\x9c\xfb\xe8\ \x83\x4b\xa7\xdf\xef\x03\xe6\x00\x93\x12\x19\xcc\x97\x2c\x06\x23\ \x07\x08\xc0\x29\x80\x18\x5f\x00\x04\x42\xb1\x91\x5b\x53\x5c\xfd\ \xec\x2f\x4c\x67\x03\xf8\xa3\xcd\x18\x8d\xdb\x11\x66\xf6\xd8\xd4\ \xad\xde\x63\xff\xfc\xf3\x2b\x67\x00\x0b\xc8\x01\x59\xc0\x06\x5c\ \x40\x2e\x08\x20\x3d\x09\x21\xdc\xc2\x02\x0a\x8b\xac\x02\xac\x5e\ \x00\xd0\xce\x7f\xf4\xeb\xdf\x44\x9f\x7b\x6d\x49\xa0\xf9\xbb\xbb\ \x2b\x73\x99\x13\x99\xe4\xf4\x89\x0b\x1f\xff\xf6\xe3\x81\xae\x4f\ \xe2\x85\x35\x4e\xc1\x56\xd1\xb8\xb2\xa4\x61\xfe\x0b\xaa\xd3\xe9\ \xaf\x70\x35\x30\x23\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x08\x78\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x08\x3f\x49\x44\x41\x54\x58\xc3\xad\x57\x0d\x50\x93\xf7\ \x1d\xae\xda\x6d\xb6\xb7\xeb\x6d\x5d\xb7\xdb\xe7\x79\xfb\xba\xb5\ \xdb\xda\xab\xb6\xda\xde\x76\xe7\x7a\x37\xbb\x8f\xb3\x6e\xd3\xde\ \xa9\xd4\x8f\xad\xdb\xea\xb4\xee\xe6\x67\xd5\xda\x22\x88\x42\x2c\ \x08\xd1\xc8\x97\x08\xd1\x02\x22\x8a\x84\x40\x02\x24\x81\x40\x04\ \x02\xf9\x00\x92\x90\x90\x90\x40\x42\xc2\x57\xc2\x37\x28\x88\xa5\ \x67\x9e\xfd\xfe\xaf\x7f\x1c\x28\xda\x76\xe7\x7b\xf7\x5c\x72\xc7\ \xcb\xff\xf9\xfd\x9e\xe7\xf9\xfd\xde\x37\x8f\x01\x78\xec\x51\x82\ \xae\x6f\x10\x56\x13\xa2\x09\x1b\x09\x3f\x7e\xe8\xfd\x8f\x90\xf8\ \x71\xc2\x6f\x97\x2d\x5f\x21\x36\x7b\x3a\xfb\xec\xd7\x01\x57\x68\ \xe4\x3a\x2f\xe2\xab\xec\x6f\x84\x43\xfc\xf3\x91\x5f\xbf\x26\xec\ \xd6\xd4\x9b\x5c\xd6\xb1\x70\x58\x17\xfa\x14\x4a\x47\x2f\x1c\xc1\ \x31\x56\x59\xf4\x92\x25\x4b\xc4\x31\x31\xc7\xfd\x9a\xca\xca\x30\ \x2f\xe2\x91\x5d\xbf\x20\xfc\xed\x64\x72\x9a\xca\x31\xf6\xe9\x6d\ \xfd\x10\x50\x64\xef\x41\x89\xc9\x09\x95\xc5\x03\x5b\xef\x08\xf6\ \xec\xd9\xd7\x9c\x9d\x7b\x31\x1c\xea\x1f\xc4\xe8\xe8\xd8\x34\xdd\ \xbf\xfd\x51\x10\x0b\x3e\x6f\xdc\xb2\x55\xda\x3a\x78\x63\xca\x30\ \x0c\x28\xdc\xc3\x28\x31\xb7\xa1\xc4\xe8\x40\x81\xce\x8c\x84\xcc\ \x1c\x64\x65\xe7\x82\x11\x5f\x9f\xb8\x29\xc0\xed\xf6\xf4\xd1\xff\ \xfd\xe1\x8b\x10\x3d\x4b\x78\x95\xfb\x3b\xc7\x67\x13\xf9\x6c\x1e\ \x05\xd4\x5d\x93\x90\x99\xda\xa0\xa4\xae\xaf\xd6\x34\x21\x35\xbf\ \x18\xa2\xa4\xd3\xb0\xb6\xd8\xef\x12\xcf\x20\x3f\x3f\xbf\x96\x9f\ \xf9\xf9\xa4\x95\xe6\x17\xd4\x32\x5f\x99\xbf\x84\xd7\x66\xfb\x5c\ \x1d\x9c\x86\xac\xb9\x13\xa5\x66\x17\x64\x75\x16\x64\x15\x6b\x10\ \x93\x20\x81\xa6\x52\x3b\x87\x74\xfc\xc6\x24\xc6\xae\x4f\x60\x74\ \xfc\x06\x56\xac\x58\x21\xa6\x33\x16\x3f\x8c\xf8\x7b\x84\xbf\x30\ \x4f\xed\x24\xad\x71\x04\xd0\x05\xc6\xd1\x32\x30\x71\x5b\x67\x75\ \xfa\xed\xa3\x73\x7d\x96\xd7\xdb\x90\x57\x51\x8f\x23\xf1\x62\x5c\ \x2e\x90\xdd\x47\xcc\x48\x87\x47\xc7\xd1\x3f\x38\x8c\xee\xde\xbe\ \x29\x3a\x7b\xc7\x3d\xd3\x30\xa3\xec\x9d\x31\x61\x9e\x5a\x02\xc1\ \x61\x13\x11\x97\x75\x8c\x42\x69\xf3\x43\xd7\xd6\x83\x5a\x4f\x1f\ \xf4\xbe\x41\x94\xbb\x42\x77\x7c\x36\xd8\x71\xb9\xda\x88\xb8\x34\ \x29\xd2\x33\xb3\xe6\xf8\x3c\x87\x78\x60\x88\x88\x83\xe8\xf0\xf9\ \x51\xab\xd7\x77\xb1\x02\x74\x06\x93\x2b\x74\x2b\x1c\xbe\x66\x10\ \x94\x5d\x3d\x53\xc0\xea\x3a\x9b\xd3\x6f\x19\x0d\x87\x2b\x7b\xa6\ \x50\x6c\x0b\x08\xc4\x0c\x55\xce\x2e\x54\xb5\x06\xa0\xb6\x76\x40\ \x61\x6a\xc5\xd5\x6b\x8d\x48\xb9\x24\x47\x8c\x28\x1e\x5e\x3a\x78\ \x76\xd7\x4c\xea\x91\xb1\xeb\xbc\xe3\x20\xdc\xed\x5e\x58\x6c\x2d\ \x28\x92\x97\xa0\xb8\x4c\xe5\x1f\x9a\xb8\x35\xdd\x73\x13\x70\xd3\ \x8e\xb0\x8e\x4c\x83\x2f\x2b\xe1\x8a\xb6\x8d\x03\x85\x96\x00\x2a\ \x1c\x81\xbb\xc4\xda\x56\x3f\x34\x36\xef\x5d\x9f\x33\xe5\x6a\x7c\ \x18\x17\x0f\x7d\x83\x61\x5e\xb9\x07\x87\x47\xd1\x1b\x0c\x09\x1d\ \xb3\x10\x96\xab\x34\x48\x3a\x7d\x06\x5a\x5d\x0d\x7c\x93\x40\x68\ \x0a\x30\xd2\xc4\x28\xbd\x63\x50\x9b\xad\xfe\xd9\x0a\x44\x37\x52\ \xa2\xf3\xaa\x4c\xa8\x76\x75\x0b\x1d\x57\xb4\xf8\x50\xd6\xd4\x86\ \x22\xbd\x55\xf0\xf9\xfd\x63\x22\x28\xcb\x55\xf3\x12\x0f\x8d\x8c\ \x09\x36\xf8\xbb\x7a\xe0\x68\x75\x51\x81\x46\x24\x24\x26\x22\xaf\ \xb0\x08\xde\xe1\x49\xf8\x26\x80\x06\x96\x1d\xef\x24\xa4\xa6\x4e\ \xd4\xf9\x87\xd8\x3e\x38\xc2\xad\xff\x5f\x01\x17\xb5\x06\x54\x3a\ \xfc\x50\x59\xdb\xef\xf8\x5c\x65\x40\x74\x52\x0a\x72\xf2\xf2\xe7\ \xf8\x3c\x23\xf7\x8c\xcf\x5d\x3d\x7d\x70\xb9\xdb\x61\x6a\x6c\x42\ \x6e\xde\x25\xc4\xc6\x9f\x84\xad\xab\x1f\xed\x37\x80\x4e\x22\x57\ \x04\x3e\xc1\x65\xd7\x28\xd2\xf5\x74\xae\xb3\x2f\xbc\xf7\x70\x64\ \x01\x71\xae\x9f\x9d\xfe\x68\xd3\xf0\x6d\x64\x6b\xf4\x28\x6d\x74\ \xa1\xb0\xb6\x19\xd9\x65\x3a\x88\xc4\x92\xfb\x7c\x9e\xe9\x7a\x60\ \x68\x44\x90\xbb\xdd\xdb\x89\x66\xab\x0d\xa5\xa5\xe5\x38\x76\x3c\ \x16\xf5\x56\x07\xda\xc8\x63\x0b\x05\x59\x1d\x04\xa4\x8d\x3d\x48\ \xac\xb0\xe3\x42\x73\x1f\x2e\x18\xbd\x50\xd4\x34\xb0\xf0\xed\xba\ \x77\xfc\xa2\x1b\xfa\x3f\x41\x96\xb2\x1a\x57\xaa\x4d\xc8\x92\x6b\ \xb0\xf7\xa8\x08\x0d\x06\xd3\xbc\x72\x07\xfb\x07\xe0\xf3\x77\xc1\ \xee\x70\xa2\x8a\xfc\x15\x9f\x96\x20\xef\x4a\x01\x06\x6f\x01\x0e\ \xca\x92\x36\x44\x79\xa2\xf6\x33\x0c\x7e\x9c\xae\x76\x21\xbd\xde\ \x87\x0c\xea\xbe\xce\x17\x62\xa3\xf8\x01\xe1\x3b\xf7\x16\x70\xb4\ \xb6\x77\x02\x29\x05\xa5\x38\x27\x53\x41\x94\x7e\x01\x6b\x23\xb6\ \xcc\x2b\x77\xa0\xbb\x17\xce\x36\x0f\x0c\xa6\x46\xa4\x67\x9c\x43\ \x6a\x96\x14\xee\x9e\x7e\xb8\xa8\xeb\x46\x0a\x98\xdc\x77\x13\xe7\ \x8c\x01\xa4\xd4\xb6\x23\x4d\xef\xc5\x99\x6b\x6e\xa4\xd6\x7a\xa0\ \x20\xe9\xdf\x7c\x6b\xb3\x94\xb8\xd6\xcc\xb7\x80\x8e\x69\xbd\x43\ \x48\x38\x7f\x05\xf1\xe7\x72\xb1\x2b\xf2\x38\x0e\x7e\x10\x79\x77\ \xac\x98\xdc\x3d\x7d\x21\x78\x3a\x7c\x68\xb2\x58\x51\x28\x93\x23\ \x3e\x21\x11\x26\x9b\x03\x01\x4a\x37\x6d\x63\xa8\xfa\xc2\x38\xdb\ \xd0\x29\x74\xcb\x88\xc5\xda\x56\x9c\xaa\x72\x22\xb9\xc6\x8d\xac\ \x7a\x37\x2e\x2a\x54\xcd\xc4\xf3\xef\x07\x6d\xc0\xd8\xb2\xd6\x6e\ \xc4\x24\x4b\xf1\xfe\x89\x53\x78\x6b\xdb\x4e\xa4\x9d\xcd\x10\xc6\ \x6a\x46\xee\x16\x7b\x2b\xb4\x55\x3a\x81\xb8\x50\x51\x8a\xf1\x69\ \x20\x40\x01\xab\x1d\x00\x8a\x3b\xa7\x04\x8f\x33\x4d\x5d\x77\xbb\ \x8e\x55\x98\x05\xef\xa5\x46\x1f\x8d\xb4\x9f\xbd\x17\x1c\x26\x3c\ \xf5\xa0\x02\x44\xb2\x46\x0f\x0e\x7d\x24\xc1\x8e\x83\x91\x78\xf5\ \x37\xab\xd0\xd4\x6c\x15\xd2\xcd\xe4\x6e\x30\x9a\x21\x39\x93\x0c\ \x69\xce\x45\x1a\xab\x09\xa1\xeb\xa6\x91\x3b\x72\x5f\x6a\x1d\xc6\ \x49\x4d\x8b\x20\x3b\x23\x4d\x50\xdb\x70\xb4\xa8\x41\x40\x92\xc6\ \x8a\xb2\xb6\xbe\xf0\xd2\x97\x97\x8b\xf9\xea\x5d\xf0\xa0\x02\xe2\ \xf3\x6a\xad\xd8\x15\x25\xc2\x96\xed\xff\xc1\xca\x55\xaf\x0b\x5d\ \xb3\x65\x22\x2b\xa2\xa7\x9b\xe8\x04\x6c\x1e\x1f\x7a\x69\x8b\xf9\ \xf9\x58\xe5\x39\x86\xf0\xb1\x25\x28\xa4\x9c\x05\x2d\x4e\xd9\x28\ \xc8\xce\xba\x4f\x28\x6f\xc6\xd9\x1a\x27\x34\xae\xee\xe9\x9d\xfb\ \x0f\x5d\xa5\xf3\x77\xf2\xbd\xbf\xe8\x41\x45\x24\x4a\x35\xf5\xd8\ \xb6\xff\x43\xac\xdb\xfc\x36\x76\xef\x7d\x0f\x8d\xcd\x16\x14\x2b\ \x94\xf8\xc7\x3b\xdb\x68\x43\x7a\xe1\xa1\x99\xbe\xd6\x0f\xe4\xb6\ \x0c\x40\xa2\x6b\x43\xb6\x35\x24\x78\x2e\x10\x52\xd7\xd1\xb2\x7a\ \xc4\x96\x18\x71\x4e\xef\x81\xdc\xde\x1d\xce\xd7\xe8\xda\xe8\xdc\ \x18\x9e\xfa\x6f\x71\xf9\x9f\xe0\x85\xdc\x57\xc4\xa9\xd4\xa2\x0a\ \x6c\xdd\xb9\x17\xaf\xaf\x59\x27\x8c\x95\xa2\xb4\x0c\x3b\xde\x7d\ \x17\xe2\x7c\x05\xe2\x8a\x1b\x84\x70\xb1\x6e\xd9\x27\xf3\xfa\x78\ \x89\x49\x28\x84\x15\x11\x5f\x6e\x11\xe4\x3e\x4f\x61\x2b\x33\xdb\ \x83\x2f\x2c\x5d\x96\xc2\x82\xcd\xe7\xfd\x25\xc2\x0f\xf9\x93\xf6\ \xeb\x84\xaf\x10\x16\xde\x5b\x40\x72\x52\x5e\x31\xd6\xff\x7d\x07\ \x9e\x7f\xe9\x15\x21\xe5\x47\x8e\x44\xe1\xbd\xe8\x58\x24\x96\x9b\ \x11\x43\x7e\x32\xa2\xd4\xba\x0e\x41\x66\x16\x2e\xe6\x7b\x12\xfb\ \x54\x59\x90\xac\xb5\xa1\xae\x23\x38\xb5\x73\xff\x41\x39\xcb\x13\ \x27\x67\x9b\xee\x65\xc2\x2b\x84\x65\x84\x9f\x12\x9e\xe1\xef\x03\ \xf7\x15\x90\x1e\x97\x75\x09\x7f\xde\xf4\x36\x5e\x5b\xf5\x7b\xa4\ \xa4\xa6\x61\xfd\xa6\xcd\x38\xa3\x36\xe1\x40\x8e\x46\x08\x18\x5b\ \x2a\xac\xf3\x8f\xa8\xdb\xa8\x42\x3d\xe2\x14\xa4\x40\xa5\x0d\xc5\ \x2d\xfe\xdb\x59\x57\x4b\xac\x74\xc6\x09\x96\x25\xc2\x3b\x3c\x70\ \xbf\xe3\xaf\x5f\xec\xfb\x72\xc2\x8f\xb8\x02\x5f\x9e\xcf\x82\xcc\ \xa8\x94\xf3\x78\x63\xfd\x66\x44\x6c\xda\x82\x0d\x1b\x23\x90\x4c\ \x96\x1c\xcc\x51\x0b\x84\xac\x80\xe4\x1a\x8f\xa0\x82\x88\xc2\x96\ \x5e\xe7\x26\xb9\xdb\x50\xda\xd0\x14\x78\xfe\xc5\xa5\x69\x9c\xf8\ \x00\x7b\x99\xe1\x4f\xb8\xb5\xfc\x3b\x2b\xe0\x57\x84\x9f\xf1\x1c\ \x3c\xc1\x83\x78\xdf\x25\x8d\x94\x64\x62\x4d\xc4\x56\x6c\xd8\xb0\ \x11\xc7\x92\x33\x10\x27\xd7\x63\x7f\xb6\x5a\xe8\xfa\x44\x59\x33\ \x24\x94\x74\x49\x95\x03\x17\x9b\xfc\xd0\xba\xba\xa6\xd6\x6e\x88\ \xf8\x98\xcb\x1d\x45\xd8\xc4\xc9\x18\xf1\x9b\x84\x3f\x11\x56\xf1\ \xce\x7f\x42\xf8\x26\xe1\xc9\x87\x4d\x81\x34\x26\x3d\x5b\xc8\xc0\ \xf6\x43\x51\x10\xc9\x74\xd8\x23\x2d\x15\x36\x19\xf3\xfd\xa4\xda\ \x8a\x4c\xbd\x1b\x15\xed\xc1\xdb\x51\x09\x62\x35\x5b\xdd\xdc\xe7\ \x08\xfe\xae\xf8\x47\x4e\xfa\x06\x27\x66\x2f\xb2\x3f\x27\x7c\x9f\ \xf0\x35\xee\xfb\xa2\x87\xed\x81\x0c\x71\x9e\x1c\xff\x3a\x10\x89\ \x33\x65\x7a\x6c\x93\x5c\xc6\xe1\x7c\x1d\x75\xed\x84\x44\x6b\x47\ \xae\xd1\x13\x2e\x37\x5a\xfc\xbc\x5b\x36\x56\x7f\xe5\x04\x2f\x12\ \x56\x72\x9f\x57\xf2\x8e\x9f\xe5\xc4\x4f\xf3\xae\xbf\x34\x5f\xe8\ \xee\xbd\xf6\xe5\x16\x97\x4e\x66\x57\xd6\x63\xdf\x79\x25\xb6\xc4\ \x67\xe3\x84\xd2\x84\x1c\xb3\x17\x1a\xab\x67\x78\x5d\xc4\x26\x29\ \x5f\xa5\x3b\xf8\x48\x3d\xc5\x49\x9e\x23\xbc\x40\xf8\x25\x97\xfa\ \xbb\x3c\x68\xb3\x89\x17\x7c\x9e\xd7\x70\x16\x14\x89\x54\xef\xc4\ \x3f\x4f\x5f\xc2\x79\x43\x07\xb4\xee\xbe\xe9\x63\x49\x12\x15\xef\ \x78\x37\xbf\x67\x01\x5f\x24\x4f\xf2\x1f\x27\xdf\xe6\x78\x66\xd6\ \xa2\xf9\x42\xc4\x33\x17\x3b\xf0\x60\x86\xac\xdc\xad\x6c\xed\x0e\ \x17\x55\xeb\x5d\xfc\x95\xe9\x10\x0f\xd7\xec\x87\xc8\x42\x4e\xb2\ \x98\x13\x2e\xe6\xa3\xb5\xe8\xff\x21\x9e\x7d\x3d\xce\x65\x8e\xe2\ \x9f\x5b\x09\x3f\x78\xc0\xbd\x0b\x38\xd9\xc2\xcf\x22\xfd\xac\x5f\ \xd5\xff\x05\x42\x5a\xb5\xfc\x4a\x39\x80\xc8\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x7e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x05\x10\x49\x44\x41\x54\x58\xc3\xad\ \x97\xcb\x8f\x14\x55\x14\x87\xbf\x73\x6e\x55\xcf\x30\x0c\x23\x4f\ \x71\x00\x01\x49\x7c\x60\x06\x08\x10\xdd\xb8\x91\x85\xee\x8c\xf1\ \x91\x18\xd8\x91\xf8\x88\x8f\x85\x09\xa8\xa0\x81\xa6\x65\xa3\x0b\ \x13\x17\x44\x63\xc0\x85\x31\x19\xdd\xf8\x27\x98\x31\x2e\x7c\x22\ \x46\xe3\x8b\x18\x41\x40\x07\x89\xc0\x00\x19\xa0\xbb\xaa\xee\x3d\ \x2e\xaa\x06\x6a\x7a\xaa\xbb\x81\x58\xc9\xc9\xad\xaa\xbe\xdd\xfd\ \xab\xdf\xf9\xea\x9c\x7b\xc5\xcc\xe8\x75\x6c\xda\xd2\x10\x40\x8a\ \x4b\xe9\x32\x75\xea\xc7\x6c\x6c\xb4\xde\xfb\x87\x01\x99\x12\xb0\ \x69\x73\x63\x07\xf0\x78\xa7\x79\x5d\xee\x5b\x0f\x31\x55\xdf\x9a\ \x18\x1b\xad\x3f\xd0\x2e\xe0\xe0\xde\x37\x77\x6f\xfc\xf4\xe7\xc0\ \x86\xe5\x81\xd9\xb3\x62\xbe\x3b\x0e\x23\x8b\x03\xaa\x70\xf0\xb8\ \xb2\x6e\x49\x46\x1c\x39\xbe\x3e\x62\xdc\xb3\x0a\x62\xa7\x7c\x7e\ \x38\xe1\xde\x95\x4a\x1c\x39\xbe\xff\x4b\xb8\xef\x76\x48\x33\xf8\ \xea\x8f\xc0\xfa\x65\x50\xab\x29\x87\x4e\xc0\xdd\x8b\x3d\x8a\x30\ \x77\x48\x79\xf5\xa5\xc6\xf8\xd8\x68\x7d\xe9\x0c\x01\x8d\x37\x76\ \x6d\x6c\x26\x8a\xf7\x81\xc8\x29\xaa\xb9\xe0\x24\x0d\x84\x10\x88\ \x23\x47\x1c\x0b\x21\x00\x04\x7c\x10\xd2\xd4\x53\x8b\x23\x00\x5a\ \x49\xca\xe0\x40\xcc\xe5\xa6\x67\x60\x96\xe3\xc2\x64\xca\xd0\x60\ \x4c\x2b\x35\xfa\x6b\x42\x2b\x81\xd9\x03\xf0\x5a\x07\x01\xe5\x14\ \x48\x9b\xcd\xed\x0c\x48\x07\xcb\xad\xed\xdc\x2a\x53\x52\x95\x82\ \x36\xd8\xb4\x88\xa8\x14\x31\x50\x2b\xc6\xa8\xf8\x7c\x8a\x81\x00\ \x64\x40\x0a\x24\xc5\x98\x95\x22\x14\x61\x63\xa3\x75\xdb\xb4\xa5\ \x51\x1f\x1b\xad\x37\xa6\x3b\x70\xf5\xcf\x73\x01\xc6\x0e\xe0\x91\ \x69\xf7\xaa\xdd\xa8\x7a\xea\x50\xe1\xc8\xd5\xb1\x12\xc2\xe9\x4f\ \xef\x30\xbe\xdc\xba\x63\xf7\xfa\x95\x43\x42\x30\x38\x74\xcc\x18\ \x19\xf6\x38\xa7\xfc\x7a\x4a\x19\x19\xce\x67\x7f\x7b\x24\x63\xfd\ \x72\x41\x44\xf9\xf5\x94\x70\xc7\xa2\x8c\x5a\x14\xf1\xc3\xdf\xb0\ \x66\x69\x40\x51\x0e\x1d\x37\x46\x96\x78\x9c\x2a\x43\x83\xca\xcb\ \xdb\xaa\x18\xb8\x2a\xc0\x15\x02\xbe\x78\xeb\xed\xfa\xfa\x0b\x93\ \x9e\x5a\xec\xb8\xdc\xf2\x60\x46\x5f\x2d\xc2\x80\x24\xf5\x44\x4e\ \xc9\xb2\x80\x73\x4a\x1c\x43\xb3\x15\xe8\x8b\x1d\x66\x86\x0f\xe0\ \x9c\xe0\xbd\xe1\x9c\xd0\x6c\x65\xcc\x19\x8c\x70\xca\x4c\x01\x6d\ \xf6\xbb\x22\x05\xaf\x74\x48\x81\x76\x81\x30\x54\xa4\xc0\x66\xa4\ \xa3\x3d\x05\x15\x02\x5c\x09\xba\xbe\x22\xfa\x8b\xb1\x56\xc4\x14\ \xa8\x53\x80\x25\x45\xb4\x80\x66\x31\xb6\x4a\x50\xfa\x22\x0c\xd8\ \x3d\x36\x5a\xdf\x33\x53\x80\xb1\x13\x78\xb4\x0d\x36\xed\x00\xa1\ \x54\xbc\x82\xd6\xc3\x89\x1e\x0e\x18\xdf\xbe\xb8\xa7\xbe\xe1\x96\ \x81\x3c\xaf\x3f\x1c\x33\x46\x96\x0a\xa9\xf7\xfc\x76\x52\x58\xb7\ \x42\x09\x1e\x7e\x19\x87\x35\xcb\xa1\xd9\xf4\x1c\x3e\xa5\x6c\xb8\ \x4d\x68\xb6\x02\x3f\xfd\x0d\x6b\x6f\x15\xa2\x48\xf8\xf1\x18\xac\ \x1e\x0e\xc4\x35\xe5\x97\x71\x58\x35\x3f\x50\xab\x29\x2a\x81\xed\ \xdb\xf7\x56\x32\xa0\x18\xdf\xec\xdb\x57\xdf\x30\x79\xd1\xb0\x60\ \xa8\x53\x54\x0d\x9f\x41\x92\x65\xa8\x2a\x91\x53\x42\x30\xe2\x5a\ \x5e\x26\x2f\x5d\x4a\x98\x3b\x54\xe3\x72\xd3\xc0\xc0\x45\x05\x78\ \x91\x80\x41\x9a\xe6\x22\xb2\x24\x00\x30\x77\x48\x79\xf6\x85\x12\ \x84\xf7\x6f\xde\x33\x65\xe5\xd4\xbb\xff\xd8\x95\xeb\xe9\x69\xb8\ \xde\x14\x84\xb6\xeb\x72\x1d\x38\x0b\x3c\x38\x36\x5a\xb7\xe9\x0e\ \x4c\xaf\x7e\x53\xb0\xf5\xb7\x41\xd8\x57\x00\xea\x4a\x85\xc8\x17\ \xa0\xb5\xda\x20\x6c\x96\xe0\x2c\x57\xc5\x5d\x55\x10\x76\x13\xd0\ \x8f\xf1\x2c\xf0\x40\xc9\x91\xf6\x23\x5c\x03\x84\x57\x1c\xa8\x82\ \xb0\x97\x80\x4f\xf6\xbf\x53\x5f\x3d\x79\x39\xf0\xe7\x69\xe1\xce\ \x25\x42\x92\x04\x8e\x9e\x16\x56\x2c\x30\x54\x84\xbf\xce\x0b\x2b\ \xe6\x43\xe6\x03\xbf\x9f\x32\xee\x1a\x76\xb4\x5a\x29\xc7\x26\x1c\ \x2b\xe6\x7b\xe2\x28\x62\x56\xbf\xf0\xcc\x0b\x8d\x0e\x10\xf6\x10\ \xf0\xfe\xbb\xf5\xd5\x69\x06\xa9\x07\x15\x43\x04\xd2\xd4\x88\xa2\ \xdc\x90\x2c\x0b\xf8\x10\x18\x9c\x1d\x91\xa6\x06\x48\x3e\x27\x0b\ \x38\x55\x0c\xe8\xab\xc1\xd3\xcf\xdf\x98\x80\x72\x0a\x6e\xb4\x0e\ \x5c\x73\x0a\x5c\x07\x08\xfb\x4b\x2d\xb9\x0a\xc2\xa4\x00\xaf\x0a\ \x42\x7f\x2d\x10\xca\x34\x07\x8c\x6d\xc0\x43\x5d\xaa\x21\x5d\x5a\ \x71\xd7\xd7\xb0\x53\x2f\x98\xee\x80\xf1\xd9\x87\xfb\xeb\x6b\x5b\ \x2d\x38\x31\x01\xb7\x2d\x82\x56\x62\xfc\x73\x41\x58\x3a\x17\xbc\ \x0f\x9c\x98\x30\x96\x2f\x50\xcc\x8c\xf1\x73\xc2\xf0\x50\x20\x8a\ \x1c\xe3\xe7\xe1\xd6\xf9\x60\x06\x47\xff\x0d\x2c\x9b\x27\x38\x15\ \x9c\x33\xb6\x3e\xf7\x7a\xc7\x6e\xa8\xa5\x66\x54\xc3\xf8\xec\x83\ \xf7\x76\xaf\x4b\x12\x43\x44\x50\x15\xd2\x2c\x10\x3b\xbd\x02\x97\ \xaa\x60\x06\x4e\xc1\x07\x90\xc2\x17\xa7\x82\x0f\xb9\x01\x91\x53\ \x92\x34\x9f\x3b\xd0\x2f\x6c\x79\xaa\x77\x3b\xce\x97\x60\x79\x0a\ \x1e\xfe\x1f\x52\xd0\xbd\x19\x15\x0b\x12\xad\x68\xc7\x71\xa9\x05\ \xdf\x68\x3b\xce\x2a\xda\xf1\xae\x99\x6b\xc2\xcd\x8d\x9d\x15\xab\ \x62\xa9\xe8\x09\xd7\xea\x40\xf9\x9c\xde\x0e\x6c\x6e\x1c\xfc\xf8\ \x40\x7d\xe3\x89\x33\xc6\x92\x79\x79\xae\xcf\x5c\x54\x16\xce\x36\ \x44\xe1\xe4\x84\xb1\x6c\x81\x92\x66\x81\xb3\x97\x94\x85\x83\x60\ \xc1\x38\x7d\x51\x58\x34\xc7\x10\x84\x7f\xce\x1b\x37\xcf\x01\x51\ \x38\x3d\x29\x2c\x1a\xcc\xd9\x39\x79\xce\x58\x7c\x93\xe0\x14\x22\ \x07\x4f\x3c\xd9\x61\x63\xf2\xd1\x81\xfa\x46\xef\x0d\x33\xc9\x1f\ \x4f\x72\x8a\x55\x73\xfd\x3e\x04\x40\x4a\x80\x81\x6a\x3e\x57\x1d\ \x84\x90\x57\xbf\x10\x0c\x15\x48\xb3\x5c\x80\x08\xf9\x08\xc4\x71\ \x67\x01\x3b\x3a\xa4\xa0\x53\x74\xda\x98\x74\x5e\x0b\x5e\xc7\xc6\ \xa4\xaa\x32\xc6\xa5\x22\xe5\x2a\x36\x26\xbe\xd4\x72\xd3\xb6\xca\ \x77\x85\x8b\xf6\x5d\xb3\xb4\x6f\xcf\x3b\x88\x70\x15\x21\x25\x01\ \x56\xa2\xbc\x1c\x5d\xff\x1c\xe0\x3f\xb4\x3e\x33\xee\x59\x4a\xce\ \x0f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\xfb\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x8d\x49\x44\x41\x54\x58\xc3\xed\ \x57\x79\x54\x8d\x69\x1c\xbe\x46\xe6\x18\x63\x16\x63\x3b\x0d\x33\ \xd9\xc2\xd1\x62\x89\x44\x1b\x52\x88\x5b\x42\x8b\xf6\xb2\x84\xb4\ \x58\xba\x2a\x57\x8b\xa5\xba\x15\xe9\xa6\x28\x7b\x22\xd7\x70\x42\ \xf6\x90\xce\xb1\x4b\x24\x0d\x47\x0d\x31\xb2\x9e\x28\xe4\x4a\xcb\ \x33\xcf\xc7\xe5\xcc\x41\xca\x31\x73\x66\xfe\xf0\x9d\xf3\x9c\x7b\ \xce\xfd\xbe\xf7\xf7\x3e\xdf\xf3\x3c\xbf\xdf\x7b\xaf\x08\x80\xe8\ \xbf\x84\xe8\x0b\x81\xff\x15\x01\x53\x87\x10\x6b\x13\xdb\xe0\x08\ \x63\xdb\xe0\x54\xe3\x09\x81\x69\x86\xe3\x24\xc9\x83\xac\xfc\x03\ \xf4\x46\x4c\x19\x2a\x12\x89\xbe\x21\xbe\xfa\xe4\x0d\x1a\x73\x99\ \xda\x4b\x6d\x4d\x1d\x16\xfc\xe6\x13\x9a\x79\x3b\x58\x76\xa9\x42\ \x2a\x2b\x51\x4a\x63\x4a\x94\x61\x71\x57\x2b\x25\x91\xd9\x8f\xdd\ \x66\xaf\x2b\x35\x1a\x3f\x2f\x8f\x64\xe4\xba\x43\x9c\x8c\xb9\xa4\ \x05\xd1\x44\xf4\x4f\x5c\xa6\xf6\x0b\x34\x2c\xdd\xa3\x0a\x16\xc5\ \xdf\x57\xba\xcd\x06\x46\xb9\x01\x66\x2e\x80\x85\x3b\x20\x9e\x06\ \x38\xcd\x05\x7c\x16\x01\x8b\x12\x95\x75\xe1\xf2\xbc\x4a\x7b\xef\ \x84\xdb\x24\xb2\xb3\xaf\x99\x87\x33\x97\x7f\x47\x34\xfd\x4c\x02\ \x52\x49\x90\x2c\xb7\xcc\x6e\x06\xa0\x6b\x09\x68\x5a\x10\xa3\x81\ \x5e\x36\x80\x8e\x1d\xa0\xe7\x0c\x18\x79\x92\x98\x37\xe0\x12\x04\ \x04\xc5\x01\x51\x2b\xaf\x57\xb9\xcd\x5a\x73\xcf\x40\xec\x9b\xd9\ \x67\x98\x9b\xeb\x67\x11\xa1\xf4\xc7\x83\xa2\x5e\xd4\x0e\xb6\x05\ \x34\xcc\x81\xce\x63\x80\x9e\x13\x81\xde\x1e\xc0\x40\x92\x1a\x38\ \x13\xd0\xe7\xe6\x06\x54\xc3\x90\x30\xf7\x01\x1c\x83\x49\x64\x39\ \x10\xbd\xfa\x7a\x95\xdd\x8c\xf8\xbb\x7a\x16\x53\x52\xba\xf6\xb5\ \x18\xc8\x72\xcd\x3f\xd9\x9a\x51\x6e\x91\x85\x7e\x94\x78\x80\x3d\ \xd0\xcd\x1a\xd0\x76\xe5\x1b\xfb\x03\x56\x0b\xb9\x11\xdf\xd6\x3d\ \x01\x70\xe6\xa7\x4d\x14\x6d\x91\x02\x26\x73\x08\x3f\x2a\x32\x8b\ \xf7\x42\x69\x4d\x32\x10\x1a\x77\xa2\xd2\xdc\x39\xbc\x84\x44\x64\ \x2c\xd9\x8e\x50\x6b\x34\x01\x4f\xc9\xc6\x1b\xfe\x91\xc0\x20\x7a\ \xaf\x45\xef\x0d\x59\xd8\x2e\x06\x98\xb7\x05\x48\xcc\x02\x36\x1c\ \x07\x56\xe7\x00\xb2\x3d\xc0\x9c\x34\x92\x21\x21\xcb\xc5\xc0\xb0\ \x79\xcc\x0a\xc9\x8c\x0d\x04\x66\x92\x5c\x7c\x9a\xb2\x6e\x6a\xd0\ \xa6\xb2\x3e\x66\xee\xa9\x9d\x75\x87\x19\x36\x5a\x0d\x13\x3b\xe9\ \x65\xa9\x1c\x18\x4e\x69\x0d\x28\xb5\xd5\x12\x20\x30\x1d\xd8\x96\ \x0b\x2c\x49\x39\x50\xe5\x31\x37\xa1\x32\x44\x9e\xa1\x4c\x3f\x52\ \x5c\xbd\xab\x00\x90\x1f\x05\xe6\x6e\x65\x38\x13\x49\x84\xcf\x0e\ \x67\x2e\x46\x91\x8c\x73\x38\xb0\x38\x05\x08\x8f\xa7\x1a\x4e\x61\ \x37\x75\x4d\x9d\x02\x58\xbe\x75\x83\x6a\xb0\xef\xcf\x2c\xdd\xf4\ \xa2\xd6\x36\x84\xfe\xd2\x5b\xf7\x24\x20\xe9\x08\xb0\x72\xfb\xd9\ \x97\xdd\x07\x8c\xbe\xd6\xfa\x67\xcd\xcc\x4e\xda\xa6\x07\x7a\x0f\ \x75\x29\x14\x7b\x2e\x7c\xac\x38\x56\x5c\xbd\x23\x9f\xfe\x1f\x02\ \xbc\xa9\x88\x5d\x3c\x09\x50\x91\x11\xb4\x47\xa8\x31\x87\xd9\x88\ \xdf\x58\x5a\x2d\xf6\x88\xbc\xcb\x35\x89\xdc\xa2\xc3\xdf\x49\x70\ \xd6\x68\xf3\xa5\x17\xf7\x33\x9f\x64\xf0\xaa\x9d\x07\x59\xcf\x5e\ \x2e\x5b\x7d\xe1\x99\xff\x0a\x16\x8b\x06\x7c\x53\x01\xc5\x39\x16\ \x0f\x5d\xf3\xbc\x9d\x86\xce\x41\x3e\xe4\x4b\x58\x12\x56\x1a\x5a\ \xc6\x72\xa6\xfe\xa2\xcf\xc2\xf5\x4f\x77\xe7\x3d\xaa\x5d\x77\x1a\ \x90\x66\x02\x1e\xeb\x98\x91\xa5\xc0\x48\xe6\xc6\x86\x24\xa6\xb3\ \x8e\x7c\xb3\xb2\xce\xc5\x6f\x55\x19\x9f\xdf\xc4\xb5\x1a\x44\xb3\ \x57\x9b\x73\xd0\x25\xa5\x16\x3c\xd6\x1b\x31\x75\x03\xbf\xd3\x12\ \x09\x83\xc5\x7a\x72\xf4\xad\x15\xbb\xb8\x29\x25\x0c\xdc\x06\xec\ \xb8\xc0\xa2\x01\x09\x95\x6d\x3a\xf6\x48\x17\x72\x4a\xb4\x27\x7e\ \x22\xba\x10\x43\xbb\x0f\x18\xb3\x61\xb8\xe3\xfc\x07\x69\x87\x0a\ \x5e\x66\x14\x02\xb1\xd9\x9c\x15\x0a\x60\xe2\x4a\x60\x34\xf3\x60\ \x4d\x3b\x3c\xf9\x19\xbd\x91\x35\x17\x28\x2a\xf4\x2d\xbd\x8f\xf5\ \x1e\xe6\xea\xc5\xc9\x1a\x13\xbf\xb6\xa0\x3c\xe7\x24\x30\x78\xec\ \xec\x3b\xac\x65\x2f\xa8\xd2\xa2\xff\x48\xaf\xa4\x88\x94\x93\xcf\ \xa2\x77\xd2\x43\x12\x51\xd0\xff\xd0\x84\x0c\x65\x27\xed\x21\xfb\ \x84\x0d\x89\x96\x2a\x05\x9b\xaa\x7a\xbe\x1b\xd5\x90\xe8\x0e\x71\ \x3e\x11\x18\xbb\xf5\xe9\x81\x42\x65\xdd\xaa\x33\x24\xcf\xa0\xba\ \xaf\xa7\x0a\xec\x1a\x31\x6d\x71\x89\x60\x98\x99\x95\x85\x89\x7f\ \xbe\x34\xb0\xf2\xbf\xe2\x1d\x9a\xff\x24\x96\x2f\xb9\x9f\x84\x0d\ \xc4\x7e\x8f\x58\x67\x8e\x50\xb4\x89\xa6\xde\xa8\x01\x16\x2e\xe1\ \x25\x9b\x0e\x3f\xaa\x4d\x60\xf2\xd3\x58\x2c\x75\x7f\x41\xb5\xb6\ \xb1\xfd\x45\xde\x17\x13\xad\xde\x89\x8e\x9a\x4a\x95\xc1\xbd\x06\ \x8f\xdf\xe2\xe8\xbf\xac\x6c\x7f\xc1\xa3\xda\x54\x2a\x17\xc6\x6c\ \x4c\xdd\x4c\x3b\x69\xa9\x15\xbb\x6b\x3c\x89\x4c\x24\x26\x48\x9e\ \xd6\x8d\xf5\x05\x66\x84\x51\xe1\xfd\x9c\x2f\x62\xdf\x72\xae\x97\ \xbe\x29\xd8\x9c\xed\x13\xe2\xe0\x13\xf7\x60\xfb\x29\x65\xdd\x56\ \x66\xe0\xc4\x0d\xbe\x05\x43\xd7\xee\x57\xed\x50\x95\x87\xef\xb6\ \xd4\x57\xc4\xb7\x82\x1a\x24\x21\x37\x77\x92\xde\xcf\x3c\x5f\x5a\ \xa3\xa0\x25\x11\xec\x94\x69\xb4\xd2\x69\xf5\x6b\x35\x46\xd2\x12\ \x63\xb6\xb7\xd1\x74\x5a\xcb\xd9\xb1\xfd\xe0\xfb\x04\x84\xe2\x6d\ \x29\xe9\xca\x00\xd9\xb6\xf2\x23\x57\x80\x9c\x22\x60\xdd\xae\x73\ \x55\x5a\x86\xb6\x39\xbc\x37\x48\x75\x00\x7d\xe8\x12\xd4\xe8\xd8\ \x73\xa0\x75\x84\x85\x93\xf4\x5e\x32\xd7\xa4\x93\xc4\x12\xce\x0e\ \x5f\x5a\xea\xca\x1c\xd8\xb0\x53\xcc\xc2\x5e\xcf\x0e\x2f\x06\x34\ \xe3\xe8\xfb\x04\xde\x16\x12\x52\x2b\x91\x29\x2a\xf2\x6e\x02\x85\ \x77\x01\x07\x9f\xd8\xf2\x6e\xfd\x46\xca\x55\x2a\xa8\x7d\x84\x84\ \x7a\x07\x4d\x7d\x2f\xe6\x29\x5f\x71\xa6\xb4\x3a\xf9\x22\x10\x42\ \xaf\x67\x32\x53\xee\x6c\xd7\xf1\xb4\xc4\x9a\x9b\xfb\x73\x72\x66\ \x9e\xf8\x30\x81\x37\x85\x34\xd8\xbf\x5b\x24\xd1\x8a\x8a\xc2\x3b\ \x40\x16\x65\xed\x67\x31\xf9\xf7\xef\xdb\x74\x1c\xc7\x7b\x3f\x7e\ \x64\xba\x09\x6b\xdb\x6a\x19\xd9\xcd\x27\x89\x0b\xf1\xd9\xa5\xd5\ \x51\x6c\xd3\xf9\x7c\x5b\x3f\x86\x73\x32\x87\x9b\xdb\x5a\xb6\x2d\ \xbb\xe5\xc0\xf9\xfa\x09\x08\x57\x33\xa2\x93\x40\xc2\xc1\x67\x59\ \xd9\xb9\x3f\x94\x75\x31\xeb\x0f\x3d\xef\xa1\x6f\xa5\x78\xd5\xb7\ \x22\xd1\xd7\xf5\x0d\x35\xc3\x71\x01\x9d\x0d\x6d\xe6\x2e\x4d\xde\ \x97\xff\x44\x51\x0c\xac\xe2\xe4\x8c\x63\x47\x45\x72\x9c\x2f\x60\ \x38\x83\x39\x33\x12\x38\xe4\x8e\x5f\xf9\x38\x81\xb7\x24\x74\x4c\ \x26\xae\xb1\x9a\xb4\xf8\xe1\xa1\xb3\xa5\x35\x81\x4b\x15\x15\xec\ \x96\x28\xc1\xa6\xfa\x8e\x5e\xe1\x68\xdf\xb0\x37\xb7\xec\x52\x19\ \x90\x5d\x0a\xec\xa3\x8d\xbb\xaf\xd3\x73\xe6\x49\x08\xa7\x82\x13\ \xf4\xf0\x55\xe0\xd2\xad\x86\x09\xbc\x21\xa1\xd1\x43\x5f\x2c\xe3\ \x4f\xb2\xcb\xd1\x6b\xb3\x2a\x1d\xfd\xe2\x1e\xaa\x77\xe9\x3b\x99\ \xdf\xb7\x79\xd7\x0a\x1e\xeb\x3d\x3c\x83\x53\xae\x65\xe5\x95\x3c\ \x3f\x98\x7b\xbd\x6a\xef\xd9\xe2\xea\x3d\x67\x8a\x6a\xf6\x9c\x2e\ \xaa\xc9\x3c\x55\x54\xb3\x9b\xd8\x75\x9c\x9f\x44\x46\x4e\x51\x8d\ \xb6\xb1\x43\x09\x97\x49\x1a\x3a\xab\x04\x5f\x3b\xfc\xd0\xe6\x97\ \xb1\x4c\x79\x7a\xab\xf6\x9d\x85\x30\x3a\x09\xea\x7c\x40\x85\xa6\ \xbd\x87\xba\xba\x71\xc4\xe6\x08\xe7\x86\x8e\xa9\x63\x91\x8e\x89\ \x63\x71\x7d\x50\xef\xda\x6f\x0f\xd7\xb8\x37\xe6\xc4\x56\x53\x85\ \x4f\xf0\x7f\x08\xd1\xb7\x9e\x30\x36\x51\x9d\x7e\x46\x84\x0b\xe1\ \xd5\x00\x1c\x89\xfe\x8d\xfd\xd9\xd0\x44\x15\xbe\x96\x0d\x9c\xf3\ \x6f\x46\xb5\xba\x2a\x2b\x1f\x83\xba\xea\xd9\x7f\xf7\xfa\xf2\xcf\ \xe8\x0b\x81\x86\xf0\x17\xce\x95\x4e\x3d\xa5\x4e\x62\x58\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x00\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x92\x49\x44\x41\x54\x48\xc7\xb5\ \x96\x4d\x4b\x54\x51\x1c\xc6\x7f\xe7\xde\x99\x3b\xbe\x0c\x86\x12\ \x96\xa6\x34\x44\x8a\x94\x42\x90\xd9\x62\x10\xfb\x0e\x6d\x6c\x97\ \x50\xab\x56\x2d\xdc\xf6\x2d\xa2\x45\x50\x14\xb8\xa8\x90\x12\x37\ \x51\x1b\xb5\x30\x2b\x2a\xad\xc1\x34\x4c\x57\xa1\xf9\x92\xa2\xce\ \x78\xe7\xde\x7b\xee\x69\x31\x67\x5e\x1a\xbd\xea\x38\x74\xe0\x70\ \x0f\x33\xdc\xe7\x77\xfe\xcf\xff\x65\x46\x28\xa5\xf8\x9f\x2b\x14\ \xf4\xc5\xdd\x3e\x61\x6d\x6e\x12\x4f\xed\xe0\xd4\xd4\xd1\xe9\xd8\ \x18\x4a\x21\xab\x22\xc4\x22\x95\x46\x53\xb5\x25\xe4\xab\x8f\xf2\ \xde\xf0\x67\xc6\x7c\x20\xa5\xef\x59\x7c\xe1\x40\x80\x30\xe9\x6f\ \xe9\xec\xbe\xb1\xb3\xb5\xb6\xde\xd4\xd6\x73\xca\xf3\x95\x81\x74\ \xbd\xda\x93\xad\xb5\xc7\xea\xcf\x44\x2c\x53\xb2\xb8\xd6\xdb\x3c\ \xf8\x89\xab\x02\x7e\x07\x86\xa0\x94\xda\x73\x3f\xb9\x73\x5e\x05\ \xad\xb4\x7e\x2e\xcd\xbe\x54\xbd\xed\x3c\x07\xaa\x82\xf4\x02\x01\ \x8f\xfa\x63\xa9\x20\x40\x62\x3a\xa1\x1c\x99\x39\x7f\x7f\xfb\x50\ \xdd\xea\xe1\x41\x10\xc0\x08\x8a\xcc\xf7\x3d\x2f\x73\xf2\x50\xa4\ \x80\x24\x60\x03\x2e\xd2\xdd\xc6\xd9\x49\x01\xd0\x16\xbf\x4e\xbc\ \xfb\x5c\x1f\x10\x87\xdd\x7a\xa1\x83\xeb\x20\x8d\xc0\x03\x14\xe0\ \x01\x16\xd1\x68\x05\x43\x43\x4f\x59\x59\xd9\xe6\xc2\xe5\x2b\xac\ \x27\x7d\x80\x76\x60\x8e\xa2\x7c\x18\x07\x03\x5c\x14\x2e\xe4\xb6\ \x4d\xf3\xe9\x13\xb4\x9c\x6d\xa0\xb5\xb5\x8e\x8e\x8e\x18\x21\xec\ \xec\x65\xcd\x12\x22\x50\x05\x11\x48\x40\xa1\x10\x08\x14\x61\x33\ \xc4\xa5\xae\x8b\x80\x05\x44\x39\x16\xb5\xd0\x74\x79\x24\x8b\x14\ \x3e\xe2\x1f\xa8\x0b\x08\x20\x0d\xd4\x90\xcd\x56\x49\x8d\x96\x5f\ \x36\x02\x85\xd2\x92\x99\x28\xd0\xd0\xac\xc3\xf2\x28\x80\xbc\x45\ \x00\x42\x23\x44\xb6\x11\xcb\x1d\x15\xf9\xfc\xdb\x45\xd2\x59\xbc\ \x2a\xf8\x44\x94\x63\x51\x5a\x5b\x91\x95\xcc\x98\x94\x91\xf4\xcb\ \x01\x88\x82\x24\x0b\x04\x46\xce\x26\x95\xcb\x84\x2c\xc7\x22\x00\ \x47\x77\xaf\x99\xcb\x42\x7e\x49\x9d\x27\xb7\x20\x5f\x25\x27\xd9\ \xd5\x10\xb3\x28\x2a\x89\xc2\xd0\x1d\xee\x80\x71\x24\x8b\x8c\x1c\ \x40\x10\xce\x95\xa5\x42\xea\x58\x0c\x20\x0c\x54\x53\x11\xae\xc8\ \xbe\x60\x94\x18\x81\xa3\xab\x48\x22\xf0\x01\x1f\x41\x15\x10\x03\ \x8e\xeb\x01\x38\xc7\xea\xea\x46\xe9\x00\x21\x30\xd0\x16\x08\x4c\ \x2d\xd8\x06\x78\x6c\x2d\x8c\x31\xfb\x61\x82\xd1\x91\xf7\xfe\xb3\ \xc1\xaf\xf3\x3f\x37\x99\xd1\x83\x2e\x79\x68\x40\xc4\xaa\x8c\x40\ \xa3\x1e\x92\x0d\xa4\x96\x12\x8c\xbf\xb8\xcd\x9b\xd1\x71\x7f\xe8\ \xf5\xf2\xb7\xa9\x35\x26\x81\x19\xe0\x0b\xf0\x03\x58\xd4\x15\x71\ \x38\x40\x63\x9d\x50\xb0\xc4\xc8\xc0\x63\x86\x07\xee\x3b\xe3\x93\ \x72\x61\x62\x91\x77\x5a\x30\x01\x4c\x03\xcb\x05\xcd\xb0\xb7\x13\ \x41\xff\x2a\xba\x9a\xc5\xb5\xe4\x06\x37\xe7\xb7\xf9\x63\xc3\x28\ \x30\x05\xcc\x03\xbf\xf6\xab\xcb\x5d\x7a\x41\x3f\x99\x3d\x2d\x00\ \x44\x81\xfa\xbd\xe6\xfc\x7e\x80\xc2\xfd\x17\xfb\xc6\x93\x82\x32\ \x2c\x7f\xcc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xb8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x4a\x49\x44\x41\x54\x48\xc7\xc5\ \x56\x61\x4c\x5b\x65\x14\xfd\x6c\x32\xd3\x69\x20\x0e\x65\x24\x4b\ \x37\x56\x5a\x8a\xb3\xd2\x4e\xa5\x42\x71\x43\xc0\xb5\x94\x10\xe6\ \x02\x42\x13\xaa\x63\xa3\x63\x63\xd9\x18\x59\xb7\xa6\x01\xa3\x08\ \x88\x61\x0b\x29\xb2\xcd\x29\x66\xba\x81\x84\xda\x8a\x89\xd4\x00\ \x29\x43\x33\x1c\x20\xa5\x50\xd7\x6a\x57\x4a\x23\xc4\x6c\x51\x59\ \x94\x31\xbb\xf8\xc3\x6e\xbb\xde\xbb\xbc\x45\xd4\x15\x12\x33\xb5\ \xc9\xc9\x4b\x5f\xdf\xbd\xe7\xfb\xce\x3d\xe7\x7d\x65\x00\xc0\xfe\ \x4d\xb0\xff\x8d\x00\x3f\x31\x08\x85\x4a\xa5\x32\x28\x14\x8a\x23\ \x3c\x1e\xef\x65\xfc\xbe\x1f\x51\x8c\x50\x22\xe2\x10\xbc\x7f\x44\ \x80\x9f\x8d\x52\xa9\xb4\xb2\xae\xae\xee\xe3\xfe\xfe\xfe\x4b\x1e\ \x8f\xe7\x46\x30\x18\xbc\x35\x3e\x3e\x7e\xd5\x66\xb3\xf9\x4c\x26\ \x93\x5d\x22\x91\x18\x39\xa2\xfb\x97\x22\xba\x5b\xf3\xf4\xb2\xb2\ \xb2\x77\x1d\x0e\x87\x3f\x10\x08\x80\xd3\xe9\x84\xb6\xb6\x36\x30\ \x9b\xcd\xd0\xd1\xd1\x01\x13\x13\x13\xe0\xf5\x7a\xc1\x62\xb1\x04\ \x0b\x0b\x0b\x3b\xf1\xf9\x1c\xc4\xca\x48\x24\x7f\x5b\x39\x35\x1f\ \x19\x1d\xfd\xde\xed\x76\x83\xe9\x95\xda\xdf\xf2\xf7\x1b\xaf\x15\ \x34\x1c\x0b\x6b\xdf\xb6\xc2\xd6\xba\x37\x43\xbb\x1b\xcd\x3f\x77\ \x5a\x3f\x0a\xe3\x6e\xc0\x6a\xb3\x5d\xd1\x68\x34\x16\xac\xcb\x8c\ \x44\xf2\x27\xcd\x49\x16\x5a\x39\x35\x2f\x3d\x5c\x73\xf5\xe9\x43\ \xaf\x4f\xa5\x34\x77\x06\x59\x4c\x1a\xb0\xd8\xcd\xc0\x56\x67\x82\ \xac\xd9\x32\xf3\xc2\x89\xae\xe9\xf6\xbe\xb3\x0b\x93\x93\x93\x50\ \x5f\x5f\x3f\x23\x10\x08\xea\xb0\x5e\x4c\x72\x2d\x45\xa0\x20\xcd\ \x49\x16\x5a\x39\x35\x97\x1f\xfd\xc0\xa9\x3e\xd5\xe7\x79\x76\x5b\ \x25\x3c\x5f\x56\x0b\xcf\x14\x18\x20\xf3\xcc\xe0\xcc\xa3\x6d\x03\ \x5f\x96\x7f\x78\xd6\x37\x3c\x3e\x11\xee\xee\xee\x86\xdc\xdc\xdc\ \x41\xac\xcf\x47\x44\xfd\x75\x17\x8b\x09\x0a\xec\x76\xbb\x97\x34\ \xd7\x54\x1c\xfc\x51\xd4\xf0\xfe\x68\x71\xa7\xe3\x2b\xe3\x39\x9f\ \xf7\xc5\x7d\x47\x60\xbb\xa1\x15\x4a\x4d\x27\xe1\xc0\xc8\xcc\x45\ \x79\x8f\xff\xb3\x64\xab\x7b\xe0\xd4\xb9\xf1\x1f\x48\xaa\x92\x92\ \x92\x20\xd6\x57\x21\x62\x11\x2b\x22\x11\xec\x45\x69\xe6\x69\xa0\ \x4a\x43\xfd\x34\x8b\x51\xc2\xc6\xac\x72\x78\xae\xa8\x1a\xb6\xe8\ \x5e\x83\xac\x97\x1a\x21\xa7\xbc\x19\x32\x74\x0d\xc0\xe2\x0b\x81\ \xad\xc9\x83\xc3\x03\x6e\xaf\xcf\xe7\x83\x8a\x8a\x8a\x6b\x58\xff\ \x06\x42\x80\xe0\x47\x22\x30\xa1\x15\x6f\x92\x5b\xe4\xb5\x6f\xb9\ \x59\x6c\x06\xac\x4c\x2a\x86\x98\x94\xdd\xb0\x3e\xdb\x00\xa2\x1c\ \x13\xac\xdb\x62\x84\x28\xc5\x5e\x60\x49\xdb\x81\x25\xea\x60\x6b\ \xef\xd7\xe7\xa7\xa6\xa6\x88\xe0\x26\xd6\x1f\x47\x08\x11\x0f\x44\ \x22\xd8\xe7\x72\xb9\xe6\xc9\x8a\xaa\x57\xcd\xd3\x34\x50\x96\x50\ \x04\x6c\xc3\x4e\x84\xfe\x0f\x3c\x86\x90\xd2\x75\x27\xd4\x8c\x04\ \x2f\xf8\xfd\x7e\xd0\x6a\xb5\xb4\x83\xa3\x88\x04\xc4\x83\x91\x08\ \x8a\x29\x44\xe4\xf3\x8a\xa6\xd6\xb9\xa4\x63\x3d\x43\xc2\xf7\xbe\ \x19\x13\xda\x7e\x1a\x63\x22\x5c\xb1\x04\x89\x24\x7a\x10\xdb\x43\ \xc3\x8a\xb1\x5f\x7a\x9e\x1a\x9a\xfb\xd4\xea\xf9\xf6\x32\x39\x09\ \xd3\x4e\x33\xa8\x5e\x6e\x07\x4a\x4a\x28\x85\x88\x7c\x5e\x7c\xd2\ \x7a\x31\xfe\x84\xcb\xb5\xf6\xf4\xe5\x49\xb6\x06\x35\x17\x92\x2c\ \x7a\x10\x7d\x12\x1a\x4d\x19\x99\xb7\x1b\xc7\x66\xdd\x9e\xa9\x40\ \xb8\xa5\xa5\x05\x64\x32\xd9\x10\xd6\xef\x58\x6e\x06\x71\x14\x7f\ \x4a\x28\x39\xa3\xbd\x6f\x70\x41\xdf\xf5\xb9\x3f\xb1\xfd\xc2\x17\ \x2c\x2e\x0f\xd8\x7a\xdd\xed\x5d\x24\x3b\xe6\x1c\xd4\xbc\xd7\xed\ \xfb\x75\x78\x78\x18\xd4\x6a\xf5\x42\x74\x74\xf4\x19\xac\xdf\xbc\ \x9c\x8b\x78\xb4\x0b\x8a\x3f\x25\x94\xb6\x4e\x3e\x27\x2b\x92\x5b\ \x68\xa0\xa4\x39\xc9\xe2\xf1\x07\xc2\xd4\x5c\xbf\x6b\xd7\xad\xf4\ \xf4\xf4\xeb\x58\xd7\x8b\xa0\xb0\xc9\x23\xe6\x80\x23\xa1\x17\x57\ \x0e\xc5\x9f\x12\x4a\x21\xa2\xdd\x90\x15\xc9\x2d\x34\x50\x22\x26\ \x59\xf0\x99\x05\xa5\x52\x19\x4a\x4d\x4d\x85\xfc\x34\xe1\xf5\x83\ \xdb\x36\x5c\xc1\xda\x03\x94\xe8\xa5\x08\x78\xdc\x3b\x25\x93\xe2\ \x4f\x09\xa5\x10\x91\xcf\xc9\x8a\xe4\x16\x1a\x28\x69\x8e\xb2\x9c\ \xe6\xf3\xf9\xce\xac\xc7\xe3\x6f\xd4\xe4\x25\xc2\x3b\x7b\x52\xa0\ \x56\x27\xbb\x44\x6e\x5c\x4c\x72\xb7\xb7\xe9\x1d\x12\x31\x17\xff\ \x2a\x2e\x44\xc7\x39\x2b\x56\x73\x03\xcd\xb8\x8f\xb1\xd1\x4d\x6b\ \x57\x85\x2a\x37\xad\x83\xa6\x22\x29\x74\x54\xa5\x41\xe3\x8e\x27\ \x66\x17\x93\x44\x3a\x0f\x78\x9c\x5c\x51\xdc\xe0\x04\x9c\x05\x13\ \xb8\xab\x80\xbb\x2f\x47\x92\xf3\xd9\xa2\x47\x42\xc6\x6c\x21\x98\ \x4b\x92\xa1\xeb\x50\x3a\x34\xe9\x9f\xbc\x4d\xb2\xec\x91\xc9\x11\ \xad\x20\xeb\x91\xbf\x29\x44\xdc\x95\xcf\xdd\xa7\xdf\xc5\x48\xd2\ \xaf\x12\xae\xfa\xae\x5a\x2d\x82\xd6\x52\x39\xec\xd1\x88\x7d\x78\ \x5f\x7b\xcf\xce\x64\x8e\xa4\x5b\x23\x7e\x78\x36\x2f\x79\x35\x35\ \x2f\x47\x3c\x74\x4f\x0f\x7d\x6e\x66\xa4\xbd\xf6\x4e\xf3\xff\xe4\ \x5f\xc5\xef\x49\x57\xd6\xb7\x03\x79\xba\xe9\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xca\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x5c\x49\x44\x41\x54\x48\xc7\xc5\ \x56\x0b\x4c\x5b\x05\x14\xad\x4d\x66\x98\x06\xe2\xe6\x67\x31\x96\ \xb1\xd2\x82\x9b\x08\x1d\x4a\x65\x6d\xdc\x84\x39\x4a\xc9\x02\x59\ \x40\xa8\xa9\x33\x5b\xda\xe1\x30\x8e\xb1\x8d\x35\x08\xc6\x91\x82\ \x43\x9c\x13\xdc\x4f\xc5\xec\x47\x45\xa0\x15\x32\xa9\x02\x29\x43\ \x03\xa3\xed\xa0\xa5\x6f\xb4\xae\x2b\xa5\x19\x6c\xb2\xa8\x2c\xc2\ \x8a\x25\xc6\xd8\x8d\xeb\xbd\xe6\x2d\xa2\xae\x90\x98\xa9\x4d\x4e\ \x5e\xfa\xfa\xee\x3d\xef\x9e\x7b\xce\x7b\xe5\x00\x00\xe7\xdf\x04\ \xe7\x7f\x23\xc0\xcf\x52\x84\x38\x2d\x2d\x6d\x8f\x58\x2c\x7e\x87\ \xcb\xe5\xbe\x81\xdf\x77\x20\xf2\x10\x12\xc4\x32\x04\xf7\x1f\x11\ \xe0\x67\x75\x5c\x5c\x5c\xa1\x56\xab\x6d\xed\xec\xec\x1c\x77\x3a\ \x9d\x37\x7d\x3e\xdf\xac\xcd\x66\xbb\x61\x30\x18\xdc\x25\x25\x25\ \xc6\xd8\xd8\x58\x0d\x4b\x74\xef\x7c\x44\x77\x6a\x2e\x55\xa9\x54\ \x1f\x9b\x4c\x26\x8f\xd7\xeb\x85\x81\x81\x01\xa8\xab\xab\x83\x9a\ \x9a\x1a\xd0\xe9\x74\x30\x38\x38\x08\x2e\x97\x0b\x9a\x9a\x9a\x7c\ \x39\x39\x39\x0d\x78\x7d\x3a\x62\x71\x28\x92\xbf\xdd\x39\x35\xb7\ \x58\xad\xdf\x31\x0c\x03\x25\x6f\x96\xff\x9a\xb9\x43\x33\x9d\x5d\ \x79\x38\xa8\xf8\x50\x0f\x59\xda\xf7\x03\xaf\xec\xaf\x99\x6c\xd0\ \x7f\x16\xc4\x69\x40\x6f\x30\x5c\x97\xcb\xe5\x4d\x58\x97\x12\x8a\ \xe4\x4f\x9a\x93\x2c\x74\xe7\xd4\x7c\xcb\xde\xb2\x1b\xcf\x14\xbf\ \x35\x9c\x74\xb0\xc1\xb7\xa9\xde\xf4\xcb\xe6\x56\x33\x28\x5b\x2d\ \xb3\x09\x07\x9b\x46\x5f\x38\xda\x38\x52\xdf\x71\xd6\xef\x70\x38\ \xa0\xa2\xa2\x62\x94\xc7\xe3\x69\xb1\x5e\x48\x72\xcd\x47\x20\x26\ \xcd\x49\x16\xba\x73\x6a\x2e\x3a\xf0\xc9\x80\xec\x78\x87\x53\x63\ \x72\x4c\x54\x9e\xbb\x38\x53\xd8\xe9\x98\x4e\x39\xdd\x3d\xba\xb2\ \xae\xeb\x7c\x7e\xf3\x59\xb7\xd9\x36\x18\x6c\x69\x69\x81\x8c\x8c\ \x8c\x6e\xac\xcf\x44\x84\xff\x75\x8a\xb9\x04\xd9\x46\xa3\xd1\x45\ \x9a\xcb\x0b\x76\xff\x20\xa8\x3c\x69\xcd\x6b\x30\x5d\xd0\xf4\xb8\ \x5d\x6f\x33\xe3\x9e\x2a\xe6\xdb\xcb\x55\x8e\xab\x57\x76\x5a\x46\ \x2f\x89\xda\x3c\x5f\xc5\xeb\x99\xae\xe3\x3d\xb6\xef\x49\x2a\xa5\ \x52\xe9\xc3\xfa\x22\xc4\xc3\x88\x45\xa1\x08\x5e\x45\x69\xa6\x68\ \xa1\x92\x3d\x15\x23\x31\xef\x36\xf7\xad\x7e\x4e\x05\xcf\xe7\x96\ \xc2\x86\x17\xf7\x41\x6a\x6e\x19\xa4\x2b\xcb\x61\x5d\xf6\xeb\xc0\ \x79\x2c\x0b\x12\x4d\x57\x3a\xf6\x76\x31\x2e\xb7\xdb\x0d\x05\x05\ \x05\xd3\x58\x5f\x85\xe0\x21\xc2\x42\x11\x94\xa0\x15\x6f\x91\x5b\ \x44\xe5\xc7\x98\xc7\x0f\xb7\xf5\x2e\x5e\x91\x09\x4b\x13\x55\xb0\ \x22\x75\x37\x08\x36\x14\xc3\xf2\x94\x5d\x10\x9e\x98\x0f\x9c\xd8\ \x97\xe1\xe9\xde\x89\x2f\xb2\xda\xbf\xe9\x1b\x1e\x1e\x26\x82\x5b\ \x58\x7f\x04\xc1\x47\xdc\x17\x8a\xe0\x35\xbb\xdd\x3e\x45\x56\x4c\ \xdb\x57\x33\xb2\xf2\xd8\x97\x3d\x9c\x47\xe5\xc0\x11\x6e\x06\xce\ \x2a\xf5\x1f\x78\x02\x11\xa7\x86\x24\xf3\xa4\xb1\xcc\xe2\x1b\xf2\ \x78\x3c\xa0\x50\x28\x68\x82\x03\x88\x68\xc4\xfd\xa1\x08\xf2\x28\ \x44\xe4\xf3\x82\xea\x43\x13\x34\x01\xff\xc4\xc5\x7e\xbe\xe1\xc7\ \x7e\xc1\x99\x80\x55\xd0\x16\xb0\x44\x9f\x09\x9c\x17\x1a\x03\x66\ \x71\xff\x4f\x6d\x34\x81\xde\x79\xf9\x1a\x39\x09\xd3\x4e\x3b\x28\ \x5d\x68\x02\x09\x25\x94\x42\x44\x3e\xcf\xfb\x40\x7f\x29\xea\xa8\ \xdd\x1e\x79\xea\x9a\x83\xf7\xa9\x7f\x88\xd7\x3c\xc3\x20\x2e\x08\ \x3e\x0f\x58\x93\x2c\x53\x46\x4d\xff\x18\xe3\x1c\xf6\x06\x6b\x6b\ \x6b\x21\x21\x21\xa1\x17\xeb\xb7\x2e\xb4\x83\x65\x14\x7f\x4a\x28\ \x39\xa3\xbe\xa3\xdb\xaf\x6e\xfc\xda\x13\x53\x3f\x74\x2e\x4a\x37\ \x6e\x8b\x6c\x98\x74\x08\x5a\xa7\xac\xf1\xa6\x09\x13\x35\x6f\x67\ \xdc\x3f\x9b\xcd\x66\x90\xc9\x64\xfe\x88\x88\x88\xd3\x58\xbf\x76\ \x21\x17\x71\x69\x0a\x8a\x3f\x25\x94\x46\x27\x9f\x93\x15\xc9\x2d\ \xb4\x50\xd2\x9c\x64\x71\x7a\xbc\x41\x6a\xae\xde\xb6\x6d\x56\x2a\ \x95\xce\x60\x5d\x3b\x82\xc2\x26\x0a\x99\x03\x96\x84\x1e\x5c\xe9\ \x14\x7f\x4a\x28\x85\x88\xa6\x21\x2b\x92\x5b\x68\xa1\x44\x4c\xb2\ \xe0\x35\x7e\x89\x44\x12\x48\x4e\x4e\x86\xcc\x35\xfc\x99\x5d\x9b\ \x56\x5d\xc7\xda\x9d\x94\xe8\xf9\x08\xb8\xec\x33\x25\x85\xe2\x4f\ \x09\xa5\x10\x91\xcf\xc9\x8a\xe4\x16\x5a\x28\x69\x8e\xb2\x9c\x0a\ \x0b\x0b\x1b\x48\x7d\x32\xea\x66\xd9\xc6\x18\xf8\x68\x7b\x12\x94\ \xbf\x94\x30\x4e\x6e\x9c\x4b\x72\xa7\xa7\xe9\x6d\x12\x21\x1b\xff\ \x22\x36\x44\x47\x58\x2b\x96\xb2\x0b\x5d\x77\x0f\x87\x63\x5d\x1b\ \xb9\x24\x50\xf8\xec\x72\xa8\xce\x8d\x03\x5d\xd1\x1a\xd8\xbf\x35\ \x71\x6c\x2e\x49\xa8\xf7\x01\x97\x95\x2b\x9c\x5d\x1c\x8f\xb5\x60\ \x34\x7b\xe4\xb1\xe7\x45\x48\xd2\xb7\x3e\xfa\xa1\x80\x66\x3d\x1f\ \xde\x53\xc6\x43\x63\xb1\x14\xaa\xd5\x4f\xfd\x4e\xb2\xe0\x2b\x93\ \x25\x5a\x44\xd6\x23\x7f\x53\x88\xd8\x63\x18\x7b\x9e\x7e\x17\x22\ \x49\x67\x1a\x7f\xc9\xd5\x52\x99\x00\x0e\x6d\x11\xc1\x76\xb9\xd0\ \x8d\xe7\x15\x77\xed\x9d\xcc\x92\xb4\xc8\x85\x0f\x8e\x6d\x8c\x7f\ \x84\x9a\xe7\x23\x1e\xb8\xab\x2f\x7d\x76\x67\xa4\xbd\xe2\x76\xf3\ \xff\xe4\x5f\xc5\x6f\x26\x4d\xee\x1d\xf0\xc3\x08\x75\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x23\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x03\xb5\x49\x44\x41\x54\x48\xc7\xb5\ \x96\x4d\x4c\x5c\x55\x14\xc7\x7f\x6f\xbe\x87\x19\xa6\x83\x0c\xb4\ \x60\x1b\x09\x25\x4e\x44\x0c\x56\xa3\x4d\xb4\x8d\x35\x52\x8d\xc6\ \x60\xfd\x58\x10\x83\x2c\x48\x8c\x31\x76\xe1\xae\x6e\x4d\x77\x2e\ \xba\x6b\xba\xa8\xc4\x98\x36\xb3\x6e\x58\xd8\x26\x65\x23\xa6\xb8\ \x80\xa8\x69\x1b\x2d\xa5\x15\xaa\x7c\x07\xda\x0e\xf3\xc1\x9b\xf7\ \xee\xbd\xc7\xc5\x1b\x06\x86\x40\x03\x89\xdc\xc5\x7b\xf7\xde\x97\ \x7b\x7e\xf7\x9c\xff\x39\xf7\x3e\x4b\x44\xd8\xcb\xe6\x63\x8f\x5b\ \x60\xad\xf3\xe2\xa7\xe7\xfb\xf6\xa7\xf6\x7d\x5d\x13\x0e\x44\x98\ \x7d\xf0\x74\xb2\x94\xdd\x99\x05\xf1\x1e\x4b\x89\x03\xca\x57\xdf\ \x38\x5f\x2c\xda\x85\x7f\xa6\x17\x3f\x1b\x1f\x3c\x33\x5e\x05\x38\ \xd0\x90\x38\xf3\xcd\xe7\x6f\xb7\xdf\x99\xce\x92\xbb\x3a\xc5\xcb\ \x77\x7f\xdf\xd5\x4e\x7f\x69\xff\x84\xba\x57\x3b\x9f\xaa\x0d\xfb\ \x19\x1a\xfe\xe3\x7b\xe0\x78\x15\x20\x1a\x0e\x84\xff\x9c\x5e\xe1\ \xee\xcc\x0a\xcb\xbf\xde\xa4\x79\xf4\xda\xae\x00\xbf\x59\x2f\xd0\ \xd8\x90\xc6\x68\x4d\x3c\x12\x4a\xfd\xff\x1a\x08\x18\xad\xd1\xda\ \x20\x5b\x69\xb0\xb9\xc5\x5a\x5a\x78\x77\x6c\x8c\xe2\xec\x2c\x13\ \x17\x2e\x50\xd7\xd9\x49\xc3\xb1\x63\x68\xdb\xe6\xe7\xee\x6e\x5e\ \xcf\x64\xf0\x47\xa3\xe4\x27\x27\xb9\xd1\xd3\x83\x88\xa0\xb5\x41\ \x6b\xbd\x26\xcc\x93\x01\x00\x73\x43\x43\x8c\x9d\x3e\xcd\x6b\x97\ \x2f\x53\x98\x9a\x62\xa4\xb7\x97\x78\x5b\x1b\x87\xfb\xfb\x01\x18\ \xe9\xeb\xa3\xb4\xb4\x54\x76\x40\x30\x46\x7b\x00\xd9\x61\x9a\x36\ \x75\x75\xf1\xc6\xe0\x20\xf7\x2e\x5e\xac\xcc\x15\xa7\xa7\x09\xd7\ \xd7\x03\xd0\x79\xf6\x2c\x87\x4e\x9d\xaa\x84\x48\x29\x8d\x52\x7a\ \xeb\x34\xdd\xce\x83\x1b\x3d\x3d\x1e\xec\xe4\x49\x12\xe9\x34\xf5\ \x47\x8f\xf2\xe8\xd6\x2d\xea\x8e\x1c\x61\xa4\xaf\x0f\x63\xdb\x9e\ \x7d\x91\x0a\x40\x82\x3b\x08\x91\x9b\xcb\x31\x7f\xfd\x7a\x65\xbc\ \x38\x3c\x4c\xe3\x89\x13\xe4\x26\x26\x98\xbc\x74\x89\x50\x32\x89\ \x28\xb5\xae\xb1\x08\x5a\x69\xb4\xd2\x55\x56\xb7\x05\x38\xcb\xcb\ \xdc\x1f\x18\xa8\x8c\xa7\x32\x19\xa6\x32\x99\xca\xf8\xce\xb9\x73\ \xd5\x49\x54\x09\x91\x02\xac\xed\x01\x96\xcf\xc7\xe3\x78\x0a\xc7\ \x1f\xc2\x27\x66\x47\x19\xba\x1a\xaa\xc1\x0e\xd7\x60\x55\x34\x08\ \x3c\x01\x00\xa4\xde\xe9\xe6\x4a\x6b\x1a\xad\x3d\x80\x18\x83\x08\ \x88\xac\xbf\x8d\x08\x62\x04\x63\x04\xf1\xfb\x09\x36\x1d\x44\x29\ \xe5\x01\xc4\xbf\x35\x40\xc4\x5b\x10\x4d\xc4\x89\x3e\xd3\x4a\x2e\ \x57\x44\x8b\x29\x03\xbc\x6f\xc6\x18\x44\x0c\x5a\x7b\x42\x06\x83\ \x01\xc4\x08\x58\x82\x72\x0d\x4a\x29\x84\xd0\x16\x80\x0d\x3b\xba\ \x7d\x73\x9c\xda\x90\xe6\xa3\xe3\x07\xf1\x59\x82\x11\x83\x31\x06\ \xa5\x34\x46\x6b\x94\xd6\x28\x57\x31\xff\x68\x95\xdb\x73\x16\xb5\ \xa9\x7a\x1e\xfc\x3d\x43\x24\x1a\xc6\x75\xd5\xd6\x95\x2c\xe5\x62\ \xd1\xda\xa5\x26\x16\xa5\x39\x29\xbc\x94\xae\xe3\x87\x81\x1f\xb9\ \xfa\xd3\x35\x44\xe0\xcb\xaf\xbe\xe0\xf9\x8e\x76\x1c\xc7\xc1\x29\ \x29\x9a\x12\x7e\xc6\x17\x0c\x87\x0e\x35\x33\xf3\xef\x02\xae\xab\ \x70\x5d\x55\x55\x68\x81\xcd\x99\x60\x8c\x78\xe7\x8a\x31\xd8\x76\ \x89\xb9\xb9\x79\xee\x4d\xdc\x07\xe0\xe1\xf2\x43\x0a\xf9\x3c\x8e\ \xe3\x50\x2a\x95\xb0\xed\x12\x5a\x47\x2b\xe1\xf5\x00\xee\xf6\x85\ \x26\xc6\x60\xb4\xf1\xca\x5e\x1b\x6c\xdb\x2e\xa7\x5d\x39\x5b\xec\ \x55\xf2\xf9\x3c\xb6\x5d\xc2\xb6\x6d\x6c\xdb\xc6\xe8\x70\x79\xad\ \x54\x3c\xd8\x78\x4b\x06\xd6\x17\xbb\x56\x34\xec\x43\x1b\xaf\xd4\ \xb5\xd1\x14\x0b\x05\x0e\xb7\xb5\xf2\x56\xd7\x9b\x18\x63\x88\xc5\ \x62\x64\xb3\x2b\x15\xe3\xab\xab\x36\xda\xa4\xd6\x2b\xd9\x75\x51\ \xae\xaa\xf6\xc0\xb2\x2c\x0b\xb0\x3a\x3e\xf8\xae\x7f\x74\xf4\xaf\ \xc1\xfd\x4d\xa9\x44\x21\x16\x20\x12\x34\x2c\x3c\x76\x79\xb6\xe3\ \x15\x5a\xd2\x9d\xb8\x8e\x8b\xe3\xb8\x64\x6d\x07\xc7\x09\x52\x72\ \x0c\x8e\x82\x64\x3c\x4c\x50\x1c\x52\xc9\x08\xd1\x80\x66\x5f\x2c\ \xa4\x6a\x22\xc1\x49\xcb\xb2\xfc\x80\xb1\x80\x08\xd0\x0c\xc4\x1a\ \x9e\x7b\xaf\xe3\xfd\x0f\x3f\xee\x0d\x05\x03\xc1\x35\xa5\x84\xf5\ \xd3\x57\x36\x8a\xc5\xe6\x39\x6f\xda\x6f\xdc\xb9\x2b\x03\xdf\x9e\ \x5f\x5c\x9c\xc9\x02\xf3\x56\xf9\x44\x8d\x03\x21\xc0\xbf\xa1\xce\ \xad\xdd\x5f\x39\x55\x7d\x07\xc8\x59\x7b\xfd\xdb\xf2\x1f\x88\xe0\ \x23\xf6\xca\xd4\xed\xc7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x05\xb0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x05\x77\x49\x44\x41\x54\x48\xc7\x95\x55\x7b\x4c\x53\x77\ \x14\xfe\x0a\x2d\x7d\xf0\x1c\x94\x67\x79\xad\x16\x61\x20\x0c\x21\ \x19\xf1\x31\xdc\x26\x81\xe1\x24\x4e\xc4\x2d\x19\x8b\xd1\x18\x47\ \x32\x97\x98\x2d\x66\xce\x18\x97\x91\x68\xd8\xf6\xc7\xfe\x71\x4c\ \xb7\xb8\x64\x13\x1d\x99\x64\x66\x59\x8c\xc9\x04\x8c\x03\xff\x90\ \x81\x0a\x4c\x10\xf7\xc0\x29\xe3\xfd\xa8\xb4\xb4\xbd\x6d\x6f\x7b\ \x77\xce\x0f\x0a\x3a\x75\x73\x27\x3d\xf9\xdd\x7b\x7b\xef\xf7\x9d\ \xf3\x9d\xef\x77\xaf\x4a\x51\x14\x94\x96\xed\x85\x5f\xf6\x69\xb2\ \x73\x0a\x3e\x8e\x7a\x42\x1d\x91\x9f\x9b\x7c\x57\xf2\xf8\x8b\x64\ \xd9\x27\x5b\xcc\x89\x06\xaf\xec\x5b\xa1\x09\xd1\xea\xbd\x6e\xd5\ \xd4\xd6\xaa\x97\x0b\x26\x67\xfa\x86\xf0\xb8\xc1\x04\x1b\x36\xec\ \x47\x59\xd9\xbb\xd8\x52\xb5\xff\xa4\xf2\x1f\xf1\xd5\x89\x16\x85\ \x1e\x4b\xfd\x5f\x04\x80\x9a\x52\xc5\xa7\xaa\xfa\x63\x97\x05\x90\ \x83\x72\xda\xb5\x94\x56\xf7\x3c\x81\x97\xd2\x64\x5a\xf9\xcd\xe3\ \xe2\x07\xcd\x2f\x4c\xa0\x11\x7c\x0d\x5f\x7f\x51\x77\x6b\x06\x70\ \xd3\x89\x4d\x5a\xca\xbb\x4e\x60\x4c\x9a\xbf\x73\x53\xd5\xeb\x95\ \xb4\xa4\x3f\x36\x41\x72\xc2\x53\x30\x25\x64\x23\xde\xb8\x02\x7d\ \xd7\x5a\xbf\xff\xfd\xd7\x39\xb8\x7c\x80\xcb\x0b\x38\x3c\x4b\x69\ \x9d\x03\xe8\x87\xc2\x55\xeb\xb4\xb4\x14\xff\x13\x2c\x29\x29\x09\ \xd1\xd1\xd1\x0f\x12\x78\x65\x2f\x64\xaf\x17\x3e\x1f\xa1\xaa\x54\ \x3f\x77\xb4\x5f\xb6\xce\xd1\xa1\x83\xd4\x73\x78\x97\x72\x8e\x48\ \x26\xfc\x40\x56\x41\x21\x3d\xa5\x7d\x4e\xaf\x8b\x81\x5e\x1f\x8b\ \xca\xca\x4a\x1c\x3e\x7c\x18\xb2\x2c\x2f\x48\xbe\x14\xdc\x31\x9e\ \x59\xbb\x51\xfc\xe1\x27\x02\x99\xc8\x9a\xcf\x7e\xdb\xb1\xf1\xad\ \x92\x17\x5d\x32\x20\xfb\x02\xe3\x61\x6e\x3a\x9f\x05\x24\xaa\x3f\ \x3c\xfc\xc9\x82\x30\xfd\x38\xd2\xcc\x19\xf0\x52\x71\x0c\xee\xf7\ \xfb\x1f\x20\x10\x1d\x84\xea\x06\xa1\x56\xf5\x63\xeb\x16\x8b\x48\ \xaf\xa4\x34\xdd\xf8\x8d\x74\xa7\x6a\x27\xed\xc0\xf0\x14\x70\x6b\ \x0c\x18\xf8\x13\x18\x1a\x99\x2f\xeb\xfd\xda\x0f\x9e\x96\x24\x69\ \xb7\xc7\xe3\x79\x24\xf8\x62\x07\x7c\xdd\xef\x57\x81\x15\x92\x65\ \x7f\xf9\xae\x9a\xf5\x5f\xaa\x46\x25\x58\x87\x75\x88\x30\x00\xe6\ \x44\xc0\x40\x55\xeb\x82\x9c\x54\x91\x0b\x6a\xba\xf1\x85\xb7\x5f\ \x85\x2c\xfd\xf1\xe9\x89\x86\x93\x31\x44\xf2\x19\xc9\x3b\xc5\x04\ \x0f\x95\x28\x70\xad\xa5\xe5\x22\x91\x78\x93\x4e\x9f\x66\x17\x86\ \xc0\x35\x67\x43\xcf\xb5\x2e\x48\x23\x5e\xd8\x65\x37\x82\x78\x26\ \x92\x84\xa0\x20\x2d\x6e\xdd\x8e\x80\xc5\x92\x81\xe3\xc7\x8f\xd7\ \x4e\x4f\x4f\xd7\xb6\xb5\xb5\xdd\x24\xa2\xd5\xf4\xe0\xcc\x43\x08\ \x14\x1e\x30\x15\xe6\x3b\x90\x90\x90\x54\xd9\xdc\xfc\x13\x22\xc3\ \x43\x41\x12\xa0\xb3\xb3\x13\x92\xdb\x0d\x63\x6c\x3c\x22\xc2\xc2\ \xa0\xd1\x6a\x60\x30\x68\xe0\x71\xfb\xb1\x6a\xf5\x6a\xe1\x9c\xf1\ \xf1\x71\x64\x64\x64\x64\x46\x44\x44\x4c\x1f\x3a\x74\xa8\x80\x20\ \xaf\xdd\x47\x40\xc0\x45\xd9\xd9\xd9\x5f\xed\xda\xf5\x46\x96\xcb\ \xe5\x84\xc3\xe1\x80\xe4\xf1\xa2\xbb\xf7\x3a\x2c\x99\x59\x28\x24\ \xd7\xb0\xce\xa1\xa1\xa1\x88\x89\x89\xa1\x0e\xe6\xb7\x8f\xcd\x66\ \x07\x55\x4f\xc3\x57\x61\x64\x64\x04\xdb\xb6\x6d\x63\xb2\xce\xfa\ \xfa\xfa\xb8\x40\x27\x82\xc0\x60\x30\x7c\x58\x5d\x5d\x9d\x95\x91\ \x61\xc1\xf0\xf0\x30\x34\x1a\x0d\x74\x3a\x1d\x72\x72\x72\xd0\xdf\ \xdf\x8f\xf8\xf8\x78\x71\x8d\x63\x72\x72\x12\x56\xab\x55\x74\x37\ \x3b\x3b\x0b\xa7\xd3\x49\x8e\x0a\x87\xd9\x6c\x46\x5a\x5a\x1a\xca\ \xcb\xcb\x83\x9b\x9a\x9a\x3e\x9f\x98\x98\xd8\xba\x48\x40\x0e\x30\ \x04\x00\xb8\x1a\x3e\x66\x10\xde\x17\x99\x99\x99\x68\x6d\x6d\x85\ \xd1\x68\x14\x76\x54\xab\xd5\xc2\x31\x54\x14\xcb\x22\x8e\x9d\x4e\ \x17\x24\xa7\x1b\xd7\x7b\xae\xe3\xce\xed\x3b\xfc\x7c\x3e\x41\x19\ \xb9\x0b\x41\x30\x36\x36\xa6\xd0\xb0\x40\x5d\x20\x35\x35\x15\x51\ \x51\x51\x08\x09\x09\x11\xed\xeb\xf5\x7a\x14\x16\x16\x92\x1c\x36\ \x41\x4c\x3a\x83\xad\x39\x3a\x3a\x8a\xde\xde\x5e\xd8\xed\x76\x3a\ \x1e\xc3\xf0\xd0\x10\xa6\xac\x33\x88\x8b\x89\x43\x30\xd4\xb4\x83\ \xa0\xe3\x7a\x05\x01\x81\xfc\x95\x97\x97\x57\xc4\x72\x9c\x39\x73\ \x46\x00\x66\x65\x65\x21\x25\x25\x45\x00\x30\x19\x77\xc3\x3a\x0f\ \x11\x10\x13\xb3\x34\x81\xd5\x9c\x66\x41\xee\xca\x5c\x5c\x8c\x3c\ \x06\x7b\xb7\x0f\x3e\xb7\x10\x83\xb7\xa8\x5f\x10\xb8\xdd\xee\x1b\ \xc9\xc9\xc9\x28\x29\x29\x11\x1a\x33\x09\xbb\x87\x35\x2d\x2e\x2e\ \x46\x57\x57\x17\x06\x06\x06\xc4\xf0\x59\x26\xad\x56\x8b\x30\x72\ \x54\x6e\x6e\x2e\x96\x2f\x5f\x8e\xe8\xc8\x68\x38\x3d\x0e\xa8\x9c\ \xaf\xc1\x99\xac\x42\x93\x72\xee\x7e\x9b\x06\x07\x07\x47\xb2\x14\ \x1c\xb1\xb1\xb1\xa8\xa9\xa9\xc1\xe0\xe0\x20\xba\xbb\xbb\xd1\xd0\ \xd0\x20\x2a\x8f\x8b\x8b\x13\x69\x32\x99\xc0\xc5\x30\x01\xeb\xcf\ \x5d\xf4\xf4\xfc\x82\x53\x0d\xa7\xf0\x52\x49\x05\xe2\x92\x8d\xb0\ \x4b\x36\xff\x42\x07\x8a\x20\x20\x19\x26\xce\x9f\x3f\x8f\x35\x6b\ \xd6\x2c\x32\xa7\xa7\xa7\x0b\x20\xbe\xd6\xdc\xdc\x42\x32\x69\x10\ \x19\x19\x29\xe6\x30\x3d\x3d\x89\xab\x57\xaf\x0a\xb9\xdc\xbc\x47\ \xc8\x00\x55\xaf\x54\x22\x31\x31\x51\xb8\x6f\xd9\x32\x8b\x91\xe6\ \x13\x22\x4c\xc3\x9b\x8c\x7d\x4d\xeb\x3a\xd2\xbc\xb1\xae\xae\x2e\ \x91\x87\x1d\xd8\x80\x6c\xc7\x0b\x17\x2e\x08\x69\x74\xba\x10\x1c\ \x39\xf2\x09\x0d\xdc\x25\x86\x9d\x92\x92\x8a\x84\x84\x44\xe4\xe7\ \xe7\xa3\xa2\xa2\x82\x95\x80\x5f\xf1\x23\x2f\x37\xcf\xde\xd7\xd7\ \xf7\x3c\x41\xdc\x14\x20\x3c\xc4\x7b\x24\xab\x2d\x2a\x2a\x52\x5a\ \x5a\x5a\x16\x3f\x93\x34\x0f\xa5\xbd\xfd\xa2\xd2\xd6\x76\x45\xd9\ \xb3\xe7\x88\xb2\x73\xe7\x6e\x65\xdf\xbe\xbd\xca\xb9\x73\x67\x17\ \xef\xb9\x74\xe9\x92\x52\x5a\x5a\xca\xe3\xed\xa2\xfc\x88\x3f\x0f\ \x02\x8f\x09\xb8\x2d\xf6\xff\x3d\x91\x40\xf9\xc3\xe6\xcd\x9b\x15\ \xb2\xa3\xd2\xd1\xd1\xa1\x1c\x3c\x78\x40\x59\xbb\xf6\x59\x65\xc7\ \x8e\x5a\xe5\xe8\xd1\x2b\x8a\xcd\x36\x0f\xdc\xd8\xd8\xa8\x90\x19\ \xe8\x7b\x87\x1f\x29\xdf\xa1\x34\xdf\xf7\xb6\x0b\x10\x04\xb6\x7f\ \x20\xd8\x29\x14\xeb\xe9\xd5\x70\x83\x36\x1b\xbf\x0e\xad\x94\xdf\ \x51\xbe\x67\x32\xa5\xb7\x6f\xdf\xfe\xa6\x42\x3b\x98\x5f\x07\x8d\ \x94\xd5\x0b\x15\x3f\x18\x8f\x22\x60\x97\xdc\x13\x9b\x28\x4b\xb0\ \xf0\xe1\x5e\x88\xb2\x85\xd4\xe2\x5f\xe2\x6f\x80\x26\xfe\x87\xb0\ \x39\x3e\x91\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xa1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x33\x49\x44\x41\x54\x48\xc7\xd5\ \x55\xcb\x6e\x13\x41\x10\xcc\xa7\xf1\x19\x7c\x8a\x4f\x08\x21\x0e\ \x88\x13\x42\x70\xe0\x03\x10\xe2\x06\x52\x78\x84\x6c\x0c\xd8\x24\ \xf1\x63\x6d\x92\xe0\xf8\xed\x5d\x7b\xfd\xb6\x13\x3b\x46\x11\x07\ \xef\xce\x14\xd5\x33\x10\x88\x64\x03\x07\xf6\xe0\x43\x6b\x7a\xaa\ \x6b\xba\x76\xbb\x35\x3d\x5b\x37\x6e\xde\x4e\xd0\xdc\x98\x2c\xb1\ \x25\xce\x61\x1f\xd8\xa9\x01\xaf\xcb\x0a\xdb\xe5\x08\x2f\x4f\x96\ \x70\x9a\x9a\x98\xc2\x5e\x0b\x48\x7a\x1a\xa9\x0e\x88\x01\xbb\x0d\ \xf2\xaa\x8a\xdc\xd0\xec\x93\x9e\x3d\x2b\xf8\xbb\xfa\x4f\x5f\x23\ \xdd\xd5\x90\xdc\x46\x20\x37\xb2\xc1\xbb\x6f\x95\x39\xe0\x34\x15\ \xee\x27\x2d\xf1\x4d\x45\xe1\x0e\x71\x9b\x5c\xe3\x9e\x03\xbc\x3a\ \x5d\x22\xd5\x06\x6e\x6d\x2f\x89\x51\x8c\x9c\xdf\x71\xc9\x93\x1d\ \xe0\x4a\x20\xde\x12\x01\x88\xd5\xfe\xe7\x1f\x24\xd6\x09\xb8\x39\ \xd6\xcb\xa9\x45\x38\xe8\x02\xef\x9b\x11\x4d\xe3\x53\x07\x66\x15\ \x4b\xb2\xce\x29\x5f\x99\x55\xf6\xbb\xd5\x90\x7b\xe0\xa3\x27\xb1\ \x08\xd9\xbe\x6d\xe8\x5a\x81\xe2\x48\x92\x29\x3c\xfc\x10\x21\x13\ \x80\x07\x80\x27\x07\xc0\x3e\x1b\xe6\xd4\x43\x3c\x4a\x51\x88\x89\ \x52\x4c\xf8\x20\x19\x1a\x6e\x9e\x1f\xf5\x38\x0d\xa4\x29\x74\x32\ \xc1\x1f\x05\xe2\x2d\xd1\x26\x34\x39\xf1\x37\x01\xb7\x34\x05\x5c\ \xd6\x3d\xdb\x51\x28\xb2\xb6\x85\xbe\x98\x46\x89\xb5\xdd\xf7\x42\ \x64\xda\xea\x07\x06\x64\xc8\x39\x66\xcf\x8a\x03\xc6\xa7\xeb\x6b\ \x7f\x4d\xa0\x3c\xd5\xc8\xf8\x4b\x3c\x73\x15\x0e\xbd\x25\x3e\x53\ \xe4\x69\x3e\x82\xdb\x55\x38\x1a\x02\x2f\x4a\x4c\xde\xd3\xc8\x07\ \x0a\xcf\x8b\xfa\x0a\xdf\x69\xfc\x9b\x40\xbc\x25\xda\xa4\x9b\xbc\ \xf2\xcf\x4c\x0f\x5a\x33\x8d\xf2\x48\xa1\x7e\x06\xb3\xd6\xd8\x3c\ \xf1\xab\x13\x6d\xfc\xca\x58\x1b\xdf\x9b\x03\xc7\xfd\x10\x15\xfa\ \xa5\x61\x84\x2f\x83\xd0\xc4\x6a\x53\x89\xdb\xb3\xc2\xeb\x2c\x7e\ \xf5\xc6\x08\x04\x5f\x99\x6c\xcc\x71\xc0\x51\xed\xcd\x80\xda\x84\ \x63\xa1\x6e\xfd\xc6\x99\x86\xc3\xf9\x2f\x98\x4f\x81\xbd\xba\x26\ \x06\x34\xcf\xe9\xf3\xbd\xa8\xca\x87\x4d\x2d\xde\x32\x7c\x85\xdc\ \xe0\xba\x40\xbc\x25\xda\xb4\x26\x27\x56\x5e\xb4\xf1\x37\xc0\x3f\ \x57\x08\x2e\x80\xce\x5c\xdb\x75\x26\xab\xf5\xdb\x33\x85\xee\x42\ \x9b\x98\xf0\xba\x17\x96\xef\x13\xef\x2d\x84\xab\x30\xbc\x5c\x7d\ \xe9\x8c\xc0\xf0\x52\x1b\x52\x81\x0f\xb5\x1c\x96\xc4\xc5\x1e\x8c\ \x2f\xf8\x11\x47\x44\x30\xd7\x46\x34\xcf\x51\x21\xbe\x88\x16\x02\ \x8d\x1e\x39\x62\xa7\x93\xf5\x02\xb1\x96\xe8\x3b\x31\xcd\x36\x1d\ \xe5\x2d\x08\xd3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x06\xe8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x7a\x49\x44\x41\x54\x58\xc3\xed\ \x57\x09\x4c\x54\x57\x14\x1d\x6a\xed\xa6\x4d\x69\x69\xb5\x2e\x15\ \xf7\x1d\xb1\x20\x8a\x0a\x28\x2a\xb2\xa9\x88\xc0\x20\x28\x22\xae\ \xe0\x30\x08\x6e\x6c\x23\x42\x01\xc5\x71\x41\x76\x71\xa1\x0a\x28\ \xe2\x5a\xc0\x0a\x5a\x91\x60\xc0\x15\xad\x88\x68\xcd\x18\xd4\xaa\ \xd4\x5a\xb1\x2e\xe8\x8c\x0a\x9e\x9e\x0f\x3f\x8d\x52\x29\x9a\x9a\ \x36\x69\x9c\xe4\x64\x32\x33\xff\xdd\x73\xef\x39\xf7\xde\xff\x47\ \x02\x40\xf2\x5f\x42\xf2\x36\x81\xff\x65\x02\x66\x52\x85\x91\x99\ \x34\x58\x66\xea\x14\x14\x6f\xea\x18\x98\x66\xea\x18\x90\x3e\xd4\ \x7e\xc1\xaa\x81\xb6\xde\x93\x25\x12\xc9\xc7\x44\x33\xc9\x9b\x7e\ \x0d\x9b\x18\xd2\x97\xc4\x11\xc3\x9c\x17\x17\x7b\x2c\xdc\x7c\x39\ \x60\xf9\xe1\xdb\xa1\xd1\x17\xab\x15\x2b\xae\xa8\x15\xcb\xaf\xa8\ \x03\xa3\xce\x3c\x90\x29\x76\xdf\x1a\x6c\xe7\x97\x6f\x60\x31\x5d\ \xc6\x23\x9f\x10\xef\xbe\x01\xe2\xc5\x96\x24\x4d\x99\x34\x37\x59\ \x15\x91\x50\x76\x37\x3c\x41\x53\x2b\x0f\x07\x26\x2d\x00\xc6\x7a\ \x02\xa3\xa7\x02\x23\xdd\x00\x6b\x77\xc0\x7d\x1e\x10\x16\x5d\xf9\ \xc4\xc2\x75\xc9\xb5\xd6\xba\x7a\x52\x1e\xd7\xf9\xc7\xc4\xd3\x17\ \xa5\x56\x28\x93\xaf\x3e\x0c\x8c\x06\xdc\x02\x49\x24\x03\x4c\xa6\ \x01\x86\x93\x01\x3d\x29\xd0\xdb\x1e\xe8\x66\x4b\x8c\x06\xfa\xd9\ \x00\xd2\x39\xc0\x82\xf0\x22\x75\xaf\xc1\x13\x72\x18\xc6\xe0\xf5\ \x89\x9d\x17\xeb\x12\x8a\x49\xbe\xc9\xaa\x95\x1b\x49\xbc\x06\x70\ \x0d\x02\x2c\xe4\xc0\x50\x56\x6c\x4c\x0c\x64\x12\x83\xbc\x09\x92\ \xe9\x7b\x00\x3d\x5d\x80\x4e\x63\x00\x5d\x0b\x60\x88\x13\x10\x10\ \xa5\x7e\x36\xd0\x56\x56\xc9\x70\x4e\xaf\x45\x3e\x7c\x62\x88\xdc\ \xc6\x23\xaa\x2c\x3c\xbe\xa4\x2a\x3c\x19\x98\xba\x84\x15\xfb\x01\ \x66\x73\x89\xf9\x94\x5b\x01\xd8\x47\x01\x93\xa9\xc6\xd4\x38\x26\ \xc6\xf7\x71\xdf\x50\x11\x5f\xa0\xef\x14\xa0\xab\x1d\x60\xe4\x0c\ \xcc\xa5\x45\xe6\x4e\x01\x77\x19\xd2\xf7\xb5\xaa\x96\x2d\xd9\x71\ \x35\x26\x5d\x53\xeb\x4d\x92\xf1\x01\xf4\x96\xa4\x23\xfc\x01\x9b\ \x08\x92\x92\x70\x7e\x3a\xb0\x7c\x2f\xb0\xbe\x10\xd8\x54\x04\x24\ \xfc\x00\xf8\x6f\xa5\xec\x2b\xa8\x0e\x13\xed\xc3\x5e\x18\xcc\x5e\ \xf0\x5d\xc6\xe4\xbc\xe3\xab\x19\x5a\xf1\x0a\xe4\x0a\x27\xa1\xea\ \xc8\xc4\x92\xaa\x88\x75\x24\x0a\x63\xd5\x24\x1d\x45\xbf\x6d\x22\ \xd9\x6c\x09\xf4\x74\x1b\x10\x7b\x08\xc8\x2a\x03\xb6\x1e\x54\xd5\ \x84\xc4\xee\x51\x7b\x2c\x88\x7b\x18\xb9\x2e\x4f\xb3\xbd\x84\x92\ \x67\x50\x09\x5e\x6b\x4c\x6b\x46\xd1\x2a\x45\x2c\xed\x19\x23\xbf\ \xc7\xf0\x4b\xfe\x1c\x1f\x8e\x86\x31\xbf\xf8\x88\xd0\x7a\x5e\x72\ \x07\xcf\x98\x0b\xb1\x69\x37\x35\xf3\xe9\xb5\x53\x08\x60\x49\x99\ \xad\x59\xb1\x34\x06\x90\xb1\x62\xe5\x01\x60\x57\x29\xb0\xad\x40\ \x55\x33\xc6\x23\xf4\x41\x5f\xd3\x89\x57\x3b\xf4\x1a\x5a\xac\xd3\ \xae\xfb\x4e\x36\xda\xb1\xb5\xbb\x4a\x34\x89\xf9\xb4\x24\x91\x7d\ \x12\x54\x1f\x63\x55\x9a\xfa\x99\x91\xb5\xe7\xed\x3a\x05\x04\xf2\ \xc4\xd4\xb2\xdf\x0d\x2d\x67\x6d\xea\xd2\xdf\x62\xbc\xb8\x28\xb4\ \x98\x58\xf0\x0c\xff\xd4\x8a\xd8\x2d\x9a\x5a\x2f\x25\xbd\xe5\x41\ \x2b\xfa\x69\xbf\x0a\xf0\x48\x61\x15\x39\x40\xca\x31\x20\xfb\xf4\ \x9d\x5a\x59\xe8\x86\x47\x02\xf1\x97\x9d\xf4\xf3\x79\x76\x39\xe1\ \x45\x8c\x63\x3c\x7f\xdf\xc8\xf4\xdf\x32\x4f\x02\x3e\xa9\x4c\x9a\ \x71\x7c\xe3\x81\xc8\xa4\x13\x4f\xba\x1b\x8d\x39\xcf\x6b\xfc\x04\ \x05\x4a\x0b\x8f\x30\xab\x75\xa7\x1f\xe9\x9b\xbb\x65\xe9\x99\xb9\ \xc8\xb9\xc1\xb6\xf9\x45\xe4\x5c\x57\x6e\x06\xa6\xd1\x6f\x3b\xca\ \x6e\xcb\x77\x97\x24\x40\x9e\x09\xac\x2c\x00\xf6\x94\x03\x69\xfb\ \xcb\x9e\x8e\x70\xf6\xbf\xdf\xa1\xb7\x49\x09\x83\xad\x21\x3c\x09\ \x73\xa2\x33\xf1\x59\xff\x11\xee\x16\x5e\x21\x29\xd7\x77\xfd\x48\ \x1b\xb6\x53\x31\x5a\x18\x9f\x45\x05\xdd\x42\x1f\x68\xb7\xea\xb8\ \x9b\xd7\xb8\x08\x0d\x56\x96\xcb\x80\x2b\xf9\xa3\x97\xe2\x94\xda\ \x78\x9c\xef\x85\xf0\xa4\xeb\x1a\x7f\x7a\xeb\xb6\x94\xcb\x84\x72\ \xdb\x0b\x5d\xfd\x2d\x83\xb0\xc1\xd6\x1e\x07\xf2\xca\xd5\xcf\x16\ \x29\xb7\x70\x96\xed\x2b\x3e\x6f\xdf\x63\x5f\x9d\x97\x12\x89\x1d\ \xd1\xf5\xf9\x55\x6b\xe2\xb0\x68\xda\xb2\x0d\xfb\x7f\xcd\x64\x1f\ \x84\x91\x58\xf9\x1d\x10\x9e\x74\xf8\x71\x57\x03\x2b\xa1\xfa\x30\ \xc2\x58\xb0\xe0\xdc\xae\x5c\x60\x4e\x28\x3b\xdb\x07\x70\x5c\x54\ \x5d\xeb\x42\x52\x07\x62\x1c\xbb\x55\x4a\xc9\x66\x6d\x01\x42\xe9\ \x75\x2a\x2b\xc9\x2d\xbb\x53\x3b\x51\xae\xac\xee\xd4\x6f\x44\x29\ \x03\xc4\x10\x33\x89\x21\x44\xeb\x86\xab\x55\xb8\x17\x64\x1c\xbc\ \x58\x9d\xce\xa4\xe3\x38\x11\x69\x07\xef\xd4\x9a\x3b\xf9\xdf\x6f\ \xa1\xdd\x3a\x93\x3f\xbb\x12\x6d\xeb\x12\xd8\xb9\x9f\xbe\x72\xa6\ \x4d\xbc\x00\x53\x8e\x8b\x55\x58\x7d\xd5\x93\xd6\x03\x9e\x94\x6e\ \x29\x3b\x3c\x93\x92\xe7\x9c\xba\x51\x23\x4a\x7e\x92\x87\x95\x84\ \x83\x58\x75\x0b\xe2\x9d\x86\xf7\x06\xa9\x3c\xe6\x42\xf1\x65\x36\ \x28\x7b\x60\xe7\x51\xf5\x33\x47\x2f\x65\xb5\x78\x36\x98\x30\x24\ \x3e\xa8\x4b\x60\x0f\x09\x66\x2b\xeb\x67\x7a\x24\x95\xb0\x67\x87\ \x4f\xa1\xff\x3e\x94\x2c\x92\x33\x9d\x41\xf2\xb5\x59\x27\x9e\x8c\ \x24\x79\xbb\x6e\x03\x8f\xf0\x60\x24\x31\x96\x68\xdf\xd8\x0d\x45\ \x68\xee\xf4\xbc\xb2\xbb\x85\x2a\x20\xff\x02\x30\x2f\x72\x8b\x5a\ \x54\x4d\x48\xdc\x96\xf8\xa2\x6e\xe2\x84\x04\x72\x8a\xd9\x9d\xdc\ \x6c\x76\x4c\xc2\x81\x92\x4f\xe5\x78\x79\xd3\xb3\x10\xf6\x46\xf2\ \x19\x56\x70\xec\x46\x0d\x1b\xb4\x52\xbb\x95\x6e\x8e\xb8\x3c\xac\ \x88\x36\x8d\x91\x0b\xbb\xc3\xc3\x3f\x59\x55\xfe\x0b\x70\xfa\x2a\ \xf7\xc4\xd2\xad\x8f\x44\xdf\x57\x13\x13\x5e\x48\x5c\x48\x20\xef\ \x14\xc7\x8a\xdd\xed\xbe\x11\x98\xc1\xa5\x31\x97\xcd\x16\x4c\x55\ \xa2\x38\x66\x6b\x0a\xea\xc9\xdb\x77\x1f\x54\xc8\xcb\x17\x0a\xd6\ \x8a\xd9\xbf\xbc\x72\xa7\x20\x1d\x26\xb0\xf3\x50\xe9\x4d\x4d\x79\ \x25\xc9\xa3\xb6\x3e\x14\xc9\x85\x7e\x11\xee\x80\xba\x2f\x9c\x15\ \x12\x28\xa2\x44\x71\x5c\x16\x41\x9c\xed\xc5\x6c\xb6\x65\x5c\xa3\ \xd1\xec\xdc\xb5\xdc\x6c\x99\x97\xb8\x52\xb3\x4e\x3e\xee\x3d\x64\ \xc2\x51\x9d\xb6\xdd\x3c\xc5\xec\x1b\x7d\xa0\x60\xbc\x39\x71\x19\ \x45\xb7\x4a\x2a\x34\xb5\xce\xb2\x15\xf7\xba\x19\x5a\x97\x8b\x23\ \xea\x4c\x74\x24\x9a\x37\x3c\x70\xee\xec\xcf\xc0\xc1\x9f\x48\x56\ \x5a\xdf\x6c\x7b\xe8\x5b\x76\x05\xb0\x8f\xf2\x15\xdc\x00\xce\x56\ \x01\xeb\x76\x17\xa9\xfb\x98\x48\x77\xf0\x48\x1f\xe2\xfd\x46\x1e\ \x4a\xec\x42\x13\xf7\x5e\xcb\x3f\x7d\x53\x33\x76\x7a\xc4\xed\xce\ \xfa\xa3\x84\xfd\xb0\x52\xbc\xeb\xfd\x95\x5c\x9c\xd5\x8c\xec\xa2\ \xcb\x9a\xec\xe2\x4b\x4f\xb3\x8a\x54\x35\xd9\x47\x55\x35\x39\xc4\ \xde\x63\xc4\x71\x55\xcd\xf7\x44\xee\x09\x01\x97\x9e\xba\xfa\xae\ \xae\x6a\xa5\xab\xe7\x23\xfa\xaf\xd5\xe0\xf9\xa0\x87\x47\xc0\xfa\ \x8b\xab\xd3\x0a\xab\x0c\x2d\x67\x9e\xfb\xaa\xe7\xe0\x03\xfc\x3a\ \x82\xb0\x17\x65\x6f\xfe\x52\xc9\x0c\x46\xcf\x70\x19\x60\x35\xbb\ \xa0\xdf\xf0\xc9\xe7\xf5\xcc\x5c\x2f\x35\x8a\x61\xae\xaa\x36\x5d\ \x0c\x72\xc4\xb9\xef\xf2\x12\x1b\x9a\x75\x37\xb2\x35\xef\x3d\xd4\ \x71\xe3\x87\x2d\x3f\x8d\xe2\x67\x39\x31\x92\x68\xd7\xd4\xa3\x97\ \xb0\xb9\x06\x88\x8b\x61\x76\x13\x70\x13\x44\x13\x1f\xa5\xb4\x1a\ \xc4\x11\x3e\x6b\x13\x5f\x0b\xf7\x31\xd1\x2a\xed\x57\x79\xee\x6b\ \x26\x26\xd1\x46\x6c\xb0\xbf\x43\x9b\x26\x9e\x6a\xb5\xea\x96\x8b\ \x44\xd2\x92\x78\xef\x25\x49\xfe\xfb\xaf\xb7\xff\x8c\xde\x26\xd0\ \x14\xfe\x00\xc6\x8f\x6d\x5f\x51\xaa\x96\x24\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xb7\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x49\x49\x44\x41\x54\x48\xc7\xed\ \x55\xdb\x6e\x52\x51\x10\xe5\xd3\xfc\x0c\x3f\xa5\x4f\xc6\x44\x1f\ \xf4\xd5\xa8\xb1\x1f\xa0\xc6\x07\x8d\x26\x48\xbc\x00\x5a\x2e\xa5\ \x94\x03\xf4\x42\xb9\x73\xe0\x70\xbf\xb4\x54\x9a\xc6\x44\x38\x7b\ \x2f\xd7\xec\x4d\x69\x5f\x79\xa0\x4f\x3c\x4c\x66\xce\x9a\x99\x35\ \x27\xb3\x60\x4e\xe0\xc1\xc3\xc7\x3b\x34\x67\x43\xb6\x13\x90\x20\ \xd5\x03\xbe\x57\x80\x50\x51\x21\x58\xf4\xf1\xe5\x64\x8e\x70\x5d\ \x13\x53\x88\x34\x80\xa8\xab\x11\xf3\x40\xcc\x5a\xa8\xac\x58\xbb\ \x30\x71\xd4\xb5\xbd\x3f\x6b\xc0\x8f\xea\x4d\xac\x11\xef\x68\x08\ \xb7\x19\x70\x38\xb4\xc9\xa7\xdf\x94\x69\x08\xd7\x15\x9e\x47\x6d\ \x61\xa8\xa4\xf0\x84\xb8\x90\xc9\xb3\xe0\x5f\xcf\xe6\x88\xb5\x80\ \x47\xc1\x39\x31\x65\x6a\x9e\x85\x81\xe0\x12\x17\x9e\x74\x1f\xab\ \x01\x9b\x5d\x11\x80\x8d\x5a\xe0\x5e\x44\x3e\xe4\xbe\xc2\x15\x1f\ \xfb\x1d\xe0\x57\xdd\xa7\x69\x24\x3d\x18\x2f\x16\xe5\x9e\x63\x4d\ \xb5\xf4\xd4\xa2\xbc\x30\x7e\xcf\x95\x9c\x6f\xf0\x3d\x6a\x97\xf0\ \x60\xbc\xf0\x64\x87\xb7\x1a\x38\xb9\xa1\x90\x29\xbc\xf8\xed\x23\ \xd5\x06\xd2\xfc\x55\xed\xee\x03\x49\x0a\x16\xae\x2e\xf0\x32\xc6\ \x41\x24\x8a\x91\xf0\x75\xc2\xd6\x66\xf8\x52\xaf\xe2\x40\x9c\x83\ \xa4\xe7\x4d\x92\xc4\x9e\x42\x82\xcf\xbb\x29\xe0\x78\xac\xb7\x22\ \xaf\x21\x72\x61\x02\x38\xdc\x7b\x9a\x3b\xcc\x71\xb7\xd9\x9e\x98\ \x46\x61\x4c\x1d\xdc\x05\x0e\x88\x5b\x0c\xc8\x74\xb9\x5f\x6a\x96\ \xeb\x6b\x13\x4b\xde\xe9\x29\x53\x23\xbd\xf9\x01\x75\xa9\xff\x83\ \x70\xae\x44\x2e\x4e\x34\x0e\x9a\x73\xbc\x77\x14\x52\xee\x1c\x79\ \x16\xbe\xcd\xf8\x70\x3a\x0a\x47\x6c\xf8\x5c\x20\x79\x97\x84\x6d\ \x85\x0f\x39\xbd\xc2\x3f\x1e\x13\xf3\x7c\x63\x9f\x4e\x80\xd3\x91\ \xb5\x77\x8e\x8f\xd2\xf9\x56\xe4\x75\x44\x6e\x4c\x35\x8a\x43\x85\ \xea\x39\x8c\xaf\x50\x20\x89\xcb\xfc\xb3\x48\x5c\x1a\x69\x13\xbb\ \x97\x36\x5f\x62\x7c\x36\xf0\x71\xda\x5f\x98\x5c\x65\x22\x79\x9b\ \x93\xba\x2a\xf7\xef\xcd\xee\x88\xdc\xbe\x22\xd9\x88\x67\x80\xb7\ \xdf\x9d\x02\x95\x31\xcf\x42\xd5\xc6\x35\x16\x87\x79\xff\x05\x6b\ \x72\x80\xe0\x35\x0e\xaf\x5f\x00\x11\x7e\x2f\xca\xf2\x62\x7c\x89\ \x48\x55\xa3\x61\xea\x95\x39\x2f\xad\x3f\xdb\x73\xbd\x8e\xc8\xa3\ \xbf\x40\xf3\x42\xa1\xcd\xbd\x79\x97\xda\xfa\xa9\x78\x8d\x0e\xe3\ \xd6\x54\xa1\x33\xd3\xab\x9c\x60\x52\xdf\x24\xde\x9d\x49\xad\xba\ \xed\x61\x8d\xf8\xfe\xd5\x9d\x6f\xf2\xe0\x5a\x9b\xa2\x6c\xc7\x12\ \x0a\x71\xae\x6b\x89\x04\x3f\xe2\x89\xb8\x69\xcc\x2f\x63\x19\x9a\ \x6d\xdb\xfa\x2e\x4d\xe2\xde\xcc\xe6\x72\xfc\xd7\x0f\xae\xef\x49\ \xe4\xff\xfb\x02\x27\xea\xf7\xb1\x15\x44\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\x73\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x05\x49\x44\x41\x54\x48\xc7\xdd\ \x54\xdd\x4e\x13\x51\x10\xe6\xd1\x7c\x0c\x1f\x65\x2f\x35\xd1\x98\ \x78\x65\x62\xc2\x03\x58\xbd\xe1\x52\xb4\x6a\xa9\x5d\x28\xa9\x12\ \xf6\x08\xc5\x60\x69\xbb\xfd\xd9\x2d\xdb\x6e\x89\x50\x10\xb9\x72\ \x77\xce\xe7\xcc\x9c\x10\xa3\x12\xac\x29\xeb\x85\x17\x93\x33\xff\ \xdf\xd9\x6f\x76\xce\xd2\xad\xdb\x77\x3c\x16\x53\x90\x78\x4b\xa2\ \xbc\x4b\x80\x72\x8b\xf0\xa2\x95\xe3\xa1\x0f\x54\x7b\xce\xbe\x5f\ \x21\xbc\xed\x03\xf5\x18\x78\x50\x05\xd6\x42\xf6\xb7\x09\x77\xcb\ \x84\xd7\x6d\x8b\xd5\xfd\x0c\xf7\x2a\x60\x9d\x34\x5f\x6a\x25\xff\ \xf9\xfe\x37\x2c\x6f\x13\xa4\xb7\x02\x34\x12\x57\x5c\x8f\x80\x37\ \x5d\x8b\xf5\xa1\x4b\x92\xb3\xcc\xa0\x3e\x9f\xab\x6c\x4b\xac\xda\ \x23\xbd\x40\x6d\xc0\xb9\x1d\x8b\x97\x9f\x32\xbc\x3a\x70\x17\x11\ \xbf\x5e\x82\x6d\xe9\x79\x09\x50\x2c\x45\x00\x0a\x95\x9f\x8c\x1b\ \xfa\x1a\xef\x3a\x00\xf3\xf4\x23\xb0\xc1\xfc\xfa\xcc\xf5\xe3\x4d\ \xa7\x57\x3b\x39\x96\x1b\x3c\xa3\x81\xb3\x45\xaf\x85\x84\xb5\x76\ \x86\x47\xbe\x55\x7f\x9d\xe7\x54\x6a\x5a\xe5\xfd\x5a\x80\xdd\x23\ \x69\x64\xd1\xe0\x81\x6f\xf4\x2d\x36\x87\xac\xc7\x02\x98\xab\xdf\ \x0f\x73\x8d\x89\xaf\xd6\xcd\xd4\x7e\x3f\x92\x9a\x1c\x52\xfb\x27\ \x80\x62\x29\x2a\x64\xc8\xff\x64\x93\x77\x53\xc2\xce\x04\xd8\x8a\ \x08\x2b\x4d\x60\x6f\x0a\x04\x87\x84\x67\xc6\xe9\x66\x6c\xf1\x84\ \x37\x73\x2b\x62\x9e\x53\xa8\xdf\x8c\xa1\x35\x25\xf1\x0f\x73\x04\ \xbc\x58\xa5\xc0\xa2\x99\x4a\x8c\x37\x3b\xfc\xb1\x68\x26\x3c\x65\ \x27\x37\x14\xd9\xe3\x84\x60\x44\x9a\x28\xfa\xce\xd8\x15\x7d\x48\ \xac\xda\x97\x71\xf1\x6f\xc7\x39\x37\xcf\x34\xd6\x4c\x2d\xfb\x5c\ \x1f\x89\x75\x66\xff\xe5\x26\xff\x2a\x73\x7e\x9d\xb7\x08\x80\xe9\ \xcf\x98\xcf\xcf\xb2\x68\xc0\xc1\x11\xa1\xc7\xdc\x56\xf8\xa9\x6e\ \x4d\x09\xd1\x97\xdf\x17\xeb\xaf\x01\x26\x17\x40\x2b\xcd\xd1\x96\ \xe6\x27\x16\xbd\x63\x8b\x2e\x03\x0e\x18\x68\x74\xbe\x38\x40\xb1\ \x14\x15\x32\xe4\x05\x7f\x5b\x6f\x1e\x00\x33\x65\xde\xc7\xe7\xb2\ \x5c\xcc\xf3\x19\x30\x3c\x21\x04\xb1\xd5\x53\x6c\xc3\xaf\x67\xc4\ \xc3\x9f\x7c\xe5\xa5\x8b\x5d\x8e\xd4\x5c\x35\x8f\x2b\x01\xd2\x0b\ \xcb\x45\x56\x41\xe4\x54\x39\xb5\x88\x67\x84\x84\xff\x9c\xe4\x4c\ \x00\x48\xcf\x43\x8d\x11\xa4\x66\x5e\x80\x1b\xa5\xe8\x3b\x80\x6d\ \x3c\xea\x2d\x2a\x08\xd7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x05\x2d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x04\xf4\x49\x44\x41\x54\x78\x5e\xa5\x96\x4b\x6c\x5c\x57\ \x1d\xc6\x7f\xe7\xdc\xc7\x78\x66\xfc\x9a\xc4\xaf\x3c\x5a\x16\xa1\ \x20\x12\xa8\xda\x80\x84\x28\xdb\x2e\x4a\xbb\x0e\x2c\x50\x14\x60\ \xd7\x05\x48\x48\x25\x8b\xb2\x41\x95\x80\x45\x5a\x09\x51\xd4\x76\ \x55\x44\x53\x15\xd5\x55\x9b\x84\x2a\x02\x16\x55\xa8\x68\x4b\xb1\ \x23\x53\x5c\xda\x18\xbf\x82\xe3\x57\xec\xf1\x8c\x3d\x1e\xcf\xcc\ \x7d\x9c\x73\xfe\x8d\xee\x5c\x09\x5b\x42\x10\x95\xdf\xe6\x7f\x75\ \x75\xf5\xff\xf4\x7d\xdf\xb9\xba\x57\x89\x08\x77\xc3\xa5\x9f\x9e\ \x7e\xd8\x99\xf4\xbc\x73\xe6\x7e\x11\x69\x23\xe2\xf8\x37\xea\x0e\ \xbd\x9e\xef\xbf\x5e\x2a\x86\x4f\x3f\xf2\xa3\xa9\x45\x72\x7c\x72\ \x5e\xf8\x9e\x7a\xd4\x39\xfa\x10\x12\x81\x2f\x20\x00\x08\xc2\x31\ \x11\x06\x0b\x25\xbe\xf1\xf5\x6f\xff\xfc\xd0\xe7\x1f\x3a\x43\xda\ \xde\xc1\x3a\x4b\x86\x73\xa0\x35\x41\xa1\x8f\xcd\xc5\xc9\xc7\xa7\ \xdf\xbc\xf0\x38\xa0\x0e\x08\x3c\xff\x5d\x75\xee\x81\x47\x7f\xf8\ \x6c\xa1\x54\x71\x36\x8d\xd2\xa1\x7b\x4f\x17\x51\x28\x40\x4a\x83\ \xf7\x04\xa5\xca\xbd\x7e\x1a\xb5\xf4\x9f\x5f\x3e\x47\x6a\x22\xee\ \xfb\xf2\xc3\x28\x4c\x66\x42\x10\x6c\x2a\x68\x7f\x80\xd2\xe1\xa3\ \x04\xe5\x43\xfc\xf2\xfb\x9f\x3d\xfb\x83\x67\xe7\x2f\x02\x20\x22\ \xfc\xea\x2c\xd7\xac\x4d\xe4\x3f\x11\x27\x56\x36\x36\xb7\xc4\x8a\ \x48\x75\x63\x55\x5e\xf9\xf1\x09\xb9\x76\xf1\x5b\xb2\x36\xfb\x92\ \xd4\x56\xdf\x90\xea\xd2\x6b\x32\x37\xfd\xa2\xb4\x5b\xdb\x52\xbd\ \xfd\x91\xac\xdd\x78\x55\xde\x7b\xe9\x8c\xbc\xf1\xd4\x17\x9f\x10\ \x11\x34\x80\x38\x8c\x4b\x3b\x80\x80\x44\x20\x06\x30\xd9\x75\xdc\ \xaa\xb2\xb6\xb2\x48\x1c\x25\x0c\x8d\x1c\xe5\xa1\xef\x5c\xa2\x32\ \xfc\x20\xff\x78\xe7\x77\xb4\xdb\x71\xe6\x62\x7b\xbb\xc1\xd6\xd6\ \x16\x43\xa3\x27\x91\xde\x13\x3c\xf0\xd8\x13\x28\xe4\x49\x00\x0d\ \xe4\x46\x0c\x10\x83\x8d\xc0\xc5\x60\x9a\xe0\xa2\x6c\x41\xa7\xbd\ \x47\x75\x63\x1d\x11\x38\xf2\x99\x53\x8c\xdd\xff\x4d\x56\x3f\x7a\ \x9b\xad\x5a\x83\xd4\x18\xb4\xd6\x5c\x1e\xbf\xc0\xcf\x7e\x72\x8e\ \xd9\x8f\xff\x42\x9c\x46\x58\x6b\x07\x94\x52\x15\x4d\x0e\x08\x60\ \xbb\x0e\x5c\xa3\x3b\xb1\x04\xbe\x41\x2b\xc3\x07\x7f\xbf\xce\xd5\ \xab\x6f\xf2\xde\xbb\x7f\xa2\x5e\xdf\x20\x8a\xcd\x9d\xb9\x8b\xb3\ \x8e\x81\xfe\x32\x5f\x39\xfd\x39\xbe\xf6\xd5\x93\x8c\x8e\x0c\x22\ \x62\xb0\x4e\x00\x0a\x3e\x39\x48\x0c\xa8\x3c\x1e\x47\x86\x33\x04\ \x9e\x61\x74\xb8\x4c\xad\x7a\x8b\xcd\xf5\x3a\xde\x91\xa3\x14\x8e\ \xde\x87\xb3\x42\x14\xc5\x24\x69\x82\xd6\x30\x32\x3c\x90\x39\x09\ \x7b\x8a\x94\xfa\x0e\xd3\x57\xf4\x35\xe0\xed\x13\xb0\x60\x5b\x60\ \x77\x41\x97\x40\x12\x70\x6d\x7c\xe0\xd8\xd8\x00\x95\xbe\x53\xa4\ \x56\x51\x28\xf4\xa2\x7d\x0d\x1a\xac\x75\x58\x6b\x33\x17\xce\x39\ \x40\x10\x55\xc8\xee\x81\x70\x50\x40\x59\x90\x0e\xb8\x0e\x5d\x14\ \xa8\x02\x88\x21\xf0\x2d\x03\x7d\x09\xe8\x5e\x08\x0b\x98\xc8\x22\ \xd6\x92\x24\x31\xc6\x18\xac\xb1\x58\x6b\x10\x11\x3c\xdf\x60\x5d\ \x0a\xa8\x83\x2f\x5a\xb6\xd8\xc6\x80\xce\x45\x52\x20\x00\x0c\x48\ \x00\x84\x20\x0a\xcc\x1e\x22\x3e\xa2\xc8\x0a\x8e\xa3\x98\x34\x4d\ \xbb\xcb\x3d\x0f\xb4\x26\xde\xab\xd3\xec\x58\x01\xd0\xe4\xa0\x7d\ \xd0\x01\xd8\x2d\x70\xbb\x40\x01\x70\xdd\xc8\xb0\x5d\x51\xb3\x05\ \x28\xc4\x39\xc4\x48\xb6\x38\x8a\x22\x80\x2c\xa2\x24\x49\x48\x93\ \x04\x71\xa0\xc8\xb0\xfb\x3a\x30\x60\xb6\xbb\xb1\x28\x1f\xcc\x3a\ \xd8\x36\x19\xfe\xa1\xac\x0f\x4c\x13\x82\x10\xa4\x17\x41\x50\x0a\ \x4c\x16\x55\x92\x39\xe8\x29\x16\xb1\x22\x88\x22\x57\xc0\x1d\x3c\ \x45\x4a\x83\x6b\x81\x2e\xe6\x91\xd5\xc0\xab\x40\x34\x0f\xde\x20\ \x78\x7d\xf9\x73\x3e\x22\x8a\x38\x4e\xf1\xfd\x00\xfc\x1e\xd0\x8a\ \x62\xb9\x9f\xca\xd0\x11\x7a\xfb\x07\xf0\xb4\x56\x79\x2e\x39\x08\ \x90\x80\xb9\x05\xce\x81\x3f\x02\x5e\x3f\x60\xc9\x48\x97\xbb\xe2\ \xe1\x29\x04\x85\xf6\x34\x85\x62\x99\xde\xc1\x11\x8a\x77\xa6\xe7\ \x07\x48\xd4\xc0\xd6\x16\x59\x9a\x5f\x66\x72\xa6\x79\x0d\x10\x1f\ \x72\x3b\xb2\x07\xc9\x2c\xe0\xe7\x2e\x7a\xba\x91\xc4\x73\xa0\xca\ \xe0\x95\xba\x51\x89\x41\xab\x90\x20\xec\x61\x74\xe4\x38\x65\x95\ \xd0\xbc\xf9\x21\x8d\xd5\x7f\x92\xb6\xeb\x4c\x7e\xb8\x36\x53\xdb\ \xb5\x33\x17\xc6\x57\x7e\x01\x34\x7d\x0e\x50\x02\xb7\x03\xe1\x18\ \xb4\x26\x41\x85\x79\x37\x4b\x20\x15\x08\x8f\x81\x12\xb4\x36\x48\ \xdc\x64\xe5\xfd\xdf\xe2\x1d\x36\xbc\x7e\x6d\xf9\xf2\x8d\xa5\xf6\ \xbb\xb7\x36\xa2\xe9\x85\xf5\x78\x1e\x68\x02\x2d\x11\x69\xef\xeb\ \xa0\x03\xd2\xca\x4f\x8a\x0f\xa4\xe0\x0f\x01\x7d\x60\x02\x08\x4a\ \xa0\x77\xa1\x38\x84\x17\xa7\xec\xd4\x3b\xcd\xe7\x2f\x5d\x7f\xa6\ \xd5\xb1\xbf\xaf\xef\xd9\x15\xa0\x01\x74\xe4\xe0\x87\x88\x83\x02\ \x66\x07\x82\x31\x88\x17\x21\x1c\x05\xb5\x07\xc5\x13\x10\x7e\x09\ \x3c\x8f\x76\x75\x27\x59\x9b\xba\xd2\xd9\xab\xad\xf0\xc1\x12\x6f\ \x2d\x57\x93\x71\x11\xb9\xc1\x7f\xc1\x27\x07\xd5\x03\xe1\x30\xa4\ \x0d\x28\xdf\x03\x85\x61\x08\xfb\xe9\x54\x37\xd3\xb9\x89\x2b\xb5\ \xb5\x99\xa9\x56\x63\x63\xce\xfc\x71\x22\x99\x6e\xa7\xac\x8f\x4f\ \x32\x0e\xac\x00\xfc\x4f\x01\xa5\x08\x7c\xcf\x41\x78\x18\xda\xbd\ \xec\x35\xe3\x78\xf9\xfa\xdb\x8d\xd9\x77\xae\xee\x34\x6e\x2f\x9b\ \xcb\x93\x4c\x2e\x6c\xf2\xb7\xb5\x6d\x3e\xde\x6a\x71\x33\x8f\xa3\ \x05\x74\xee\x4a\x40\x7b\xac\xc7\xad\x1a\x3d\xc1\x71\xe6\xa7\xae\ \xd4\xe7\xff\xfa\x87\xc6\xee\xed\x59\x73\xfe\xa2\x7b\x6e\xa9\xc6\ \x04\xb0\x0e\xd4\xf3\xe2\x2c\x77\x4d\x2e\x10\x86\xfc\xe6\xd7\xe7\ \xcf\xf6\x20\x1c\x9f\x58\x60\x61\xea\x5f\x4c\xdc\xdc\xe4\xfd\x66\ \xc2\x1c\x50\xcf\x8a\xfb\x94\x1c\xf8\x6d\x51\x4a\x55\x80\x12\xd0\ \x06\x1a\xd9\xe2\xff\x93\x4f\x00\xc2\x30\xec\x24\xf5\x72\x95\x25\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xb5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x04\x7c\x49\x44\x41\x54\x78\x5e\xb5\x94\xdd\x6b\x1c\xd5\ \x1f\xc6\x3f\xe7\x65\x66\x67\x5f\xf2\x6e\xd2\xb4\x69\xc1\x37\xea\ \x0b\xe2\x4d\xf4\xce\x4b\xa1\x88\x82\x48\x41\xe8\x95\x7a\x21\xbd\ \xf4\xc7\xef\x0f\xf0\x46\xf4\x52\xf0\xd2\x4b\x11\x5b\x14\x2d\x8a\ \x8a\x42\xac\x28\xc1\x68\x6d\xda\x9b\x94\x26\x6d\x9a\xb6\x49\x37\ \x4d\x9a\xee\x6e\x76\x67\x77\x67\x77\x66\x67\xe6\x38\x3d\x84\xb0\ \xa1\x90\x80\xe0\x03\xcf\xce\x7e\x99\x99\xe7\xf3\x3d\xdf\x39\x33\ \xc2\x18\xc3\x7f\x29\xcd\x8e\xa6\xa7\x4f\xbf\x02\xe6\x0d\x30\x47\ \x8d\x41\xf2\xef\x24\x8d\x49\x56\xe2\xb8\xfb\xcb\x95\x2b\x67\x7f\ \x04\x22\xcd\xae\xcc\x9b\xef\x7d\xf4\xbf\x93\x7a\xf8\x91\xfc\xc5\ \xb9\x59\xb9\xf0\xd7\x8c\xe8\x76\x9a\x42\x22\x11\x02\x84\xfd\x01\ \x29\x44\xdf\x7f\x89\x76\x5d\xa6\x9e\x78\x96\x27\x5f\x3c\xc1\xf8\ \xe4\x61\xe6\x67\xe7\x5e\x9a\xfb\xec\x8b\xe3\xc0\x25\xe0\x5e\x1f\ \x80\xe3\xce\xf0\x98\xf7\x6b\x59\xe9\xaf\xbf\x3c\xc7\x07\xef\xbe\ \xca\xe3\x47\x27\x91\x52\x62\x00\x23\x52\x24\xc2\xd6\x02\x01\x18\ \xa4\x52\xd8\xda\x29\x70\xe6\xd2\x26\xdf\x2e\x6b\xf4\x1f\x3f\x68\ \xe0\x08\x30\x05\x34\x76\x01\xc6\x98\x66\xa5\xea\xa7\x37\x36\xf3\ \xd4\xb7\x7d\x06\x3d\x45\xc1\x15\xf4\xe2\x08\x00\x89\x44\x6b\x9d\ \x59\xd9\x15\xf4\x7a\x11\x69\x9a\x20\x52\x81\xe7\x2a\xa2\xc5\x9f\ \xf1\x07\x5e\x63\x20\x8c\x93\x24\xe9\x45\x40\x01\x50\x9a\x3e\x49\ \x09\x45\x47\xda\x80\xd2\xe0\x10\x85\x62\x91\x38\x8e\xc9\xee\xb0\ \xa1\x4a\xd9\x70\xeb\x9d\xee\xf1\x3c\x8f\x52\x69\x80\xe9\x97\x4f\ \x72\xfd\x5a\x1e\x29\x15\x20\x00\x0c\x40\x3f\xc0\x86\x68\x47\xa2\ \xa4\x60\x28\x03\x0c\x0f\x0f\x13\x86\x21\xbd\x5e\x6f\x17\xb2\x23\ \x5b\x67\xa6\xdd\x6e\x13\x85\x21\xc5\xe1\x49\xf2\xf9\x88\x68\xf7\ \x9a\x87\x01\x68\x21\xc8\x69\x89\x56\x92\x7a\xbd\xce\x60\xc1\xf2\ \x6d\xe7\xae\xeb\xda\x11\x29\xdb\xb9\x5d\xa5\xad\x9d\xcc\xf9\x42\ \x9e\xdb\xab\x0a\xcf\xa9\xd3\x13\x86\x7e\xed\x1d\x91\x10\xb8\x8e\ \x44\x1a\xc3\xc4\xe4\x04\x47\xa6\x0e\x13\xf7\x7a\x76\x4c\x3b\xb2\ \xe1\x80\x5d\x55\xa7\xd3\x21\x30\x86\x7a\x7d\x9b\x38\x1c\xa3\xe0\ \x28\xda\x42\xec\x03\x90\x90\xd7\x12\xc7\x73\x09\x3b\x1d\x3a\x41\ \x60\x3b\xf4\xbc\x1c\x8e\xe3\xe2\x68\x85\xd2\x1a\x21\xec\x18\x11\ \x52\x61\x57\xe7\x68\x5a\xb7\x23\xf2\x2b\x15\x84\xdc\x07\xa0\xa5\ \x24\xa7\x05\x03\x87\x9f\xe6\xa9\x67\x9e\xe3\xd8\xc4\x10\x08\x30\ \x69\x4a\x6a\xc8\x6c\x48\x52\xe8\x25\x86\x4e\x02\x61\x04\x51\x22\ \x41\xc0\x76\xd7\x90\x77\x25\x12\xf6\x01\x08\x70\x94\xe1\xd1\x17\ \x4e\x30\x73\x4b\xf0\x58\x60\xb2\x5a\xd2\x89\x15\x9d\x28\xa5\x19\ \x26\x04\x9d\x88\x7a\xab\x8b\xdf\x6c\x53\x6f\x36\x69\x36\x7c\x8c\ \x72\xd0\x03\x87\xc8\xe5\x73\x28\x79\xc0\x88\x72\x0a\x26\x8e\x4c\ \xf1\xe9\xf7\xf3\xe4\x13\x1f\x11\xb5\xe9\x76\x03\xa2\x4e\x40\x1a\ \x77\x51\x26\xc6\x73\x04\x43\xc5\x1c\x23\x25\x8f\xb1\x91\x12\x13\ \x13\x87\xa8\xb9\x63\x24\xba\x80\x14\xfb\xac\x40\x09\x41\x21\xe7\ \xd2\xb8\x35\xcf\xf3\x4e\x8d\x63\x53\xc3\x94\xbc\x7c\x16\x36\x42\ \x31\x27\x19\x1d\x2c\x32\x92\xb9\x54\x2c\xe0\xe5\x5c\x94\x94\x44\ \x71\x4c\xd0\x6a\x72\xd9\x77\xb9\x19\x68\x84\xdc\x6f\x44\x4a\x90\ \x73\x35\x7e\xf9\x1a\xa7\xff\xff\x3a\xbf\xcd\xfc\xc4\xd6\x5a\x85\ \xbb\x71\xc2\xa9\x53\xa7\x30\xc6\x90\xcb\x39\x28\x25\x31\x40\x62\ \xc0\xa4\x86\x14\x41\xc9\x53\x14\x13\xbd\xff\x33\x10\x02\x3c\x47\ \xe2\x3a\x8e\xdd\x2d\x8b\x4b\x4b\xf6\x65\x1b\x1f\x1f\x27\x4d\x53\ \x80\xec\x68\x76\x2d\xa5\xc1\x60\x65\x77\x58\xde\xd3\x64\x70\x91\ \x69\x97\xb3\x07\xa8\xa4\xc8\x00\x1a\x2f\xe7\xd0\x09\x7b\x94\x4a\ \x25\xc6\xc6\xc6\x18\x1d\x1d\xb5\x80\xfd\x94\x73\x14\x3d\x7f\x83\ \x34\x0a\x30\x26\x8d\x01\xf1\x10\x40\x4b\x81\xa3\x1e\x58\xee\x7c\ \x96\xad\x39\x50\x42\xa2\xe2\x36\xcb\xb3\xdf\x98\xca\x7a\x54\xad\ \xd7\x6f\xfd\x0e\x74\x81\x64\x0f\x40\x0a\x70\x1d\x81\x94\x80\x31\ \x1c\x20\x0b\xd7\x5a\xd9\xe7\x12\x6c\x5d\x63\xe5\xf2\xed\xee\x8d\ \xeb\x17\x3e\x5f\x5f\xff\xfb\x3c\xb0\x05\x74\xf7\xee\x22\xad\x18\ \x2a\x91\x8d\x65\x14\x37\xe7\xda\x0f\x5d\x16\x62\xdf\x64\xa5\x04\ \xae\xab\xb3\x30\x3b\x67\x82\x20\x34\xf5\x7a\xc0\xfd\xfb\x0d\x6a\ \xb5\x16\xeb\xeb\x95\xf6\xca\xd2\xc2\xb9\x6a\x75\xe9\x22\x70\x13\ \xd8\x00\xc2\x7e\x80\x74\x5d\x21\xb7\xca\xcb\x24\xfe\x1a\x5a\x4d\ \xf3\xf6\x3b\x6f\xd1\x6a\x76\x4d\xbb\xdd\xe3\xea\xd5\x4d\x1a\x8d\ \xae\xa9\x56\x5b\x61\xa5\x52\xf3\x6b\xb5\xda\xa6\xef\xd7\xd6\x7d\ \xff\xde\x6a\xb5\x5a\x5e\x5d\x5c\xbc\x7c\xc7\x98\xb4\x01\xdc\x01\ \xca\x40\xcb\x64\xea\x03\x98\xd6\xfc\x85\x2b\xcd\xb9\xf3\x33\xc5\ \xf2\xea\xa6\xf9\xb0\x7c\x36\x2a\x16\xf2\x61\x1c\x87\xd5\x56\xab\ \xb1\xe1\xfb\x95\x72\xa5\xb2\xbe\x56\x2e\x5f\x5f\xab\x56\xef\xd6\ \x80\x2e\xd0\x01\x82\x3e\xb7\x80\x26\x10\x98\x4c\x7b\xb6\x69\x1c\ \x77\xbe\xfa\xe4\xfd\x8f\x37\x21\x74\xc3\xde\x76\x65\xf9\xea\xec\ \xc6\xf6\xf6\xea\x5d\x63\xd2\x10\xe8\xf4\x39\xb0\xb5\x05\xd0\xeb\ \x73\x4c\x66\x1b\xbc\xab\x3e\xc0\xc2\xc2\x99\xef\x80\x3f\x81\x11\ \x40\x00\x36\x78\xe7\x18\x01\x71\x7f\x98\xc9\xc8\x1c\x2c\xfe\x01\ \xd1\x4f\x0f\x88\x96\x78\xff\x51\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x04\x6e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x04\x35\x49\x44\x41\x54\x48\xc7\xb5\x95\x7f\x4c\x94\x75\ \x1c\xc7\xaf\x5a\xad\xe5\x8a\x2d\x67\x9a\xfe\x51\x36\xc4\xc4\xa4\ \x2c\xa0\x00\x45\x4b\xd7\x0f\xac\x2e\x10\xc5\xca\x6a\x2b\x95\x14\ \x51\xd4\x28\x08\x44\x0b\x04\x65\x9c\xfc\x88\x40\x65\x1c\xd2\x89\ \x9c\x60\xca\x93\x70\x48\xfc\x7e\xe0\x50\x7e\x28\xe4\xe1\x91\x47\ \x87\x36\xae\xa8\xa3\xd1\xae\x76\xdb\xfd\xe1\xf6\xee\xfd\xdd\x75\ \x0b\xc2\x83\x73\xab\x3f\xde\x7b\xf6\xec\xfb\x79\x3e\xaf\xcf\xcf\ \xe7\xab\x00\xa0\xf8\x3f\x35\xe1\x65\xe5\x86\xfd\x09\x54\xcf\x6d\ \x48\x43\xbd\x47\xcd\x98\x16\x40\xa3\xc0\xdd\x87\xb4\xa6\xeb\x7f\ \x02\x42\xd7\xc6\x00\xe3\x28\x70\x95\x1a\xf8\x0d\x30\xfd\x0e\x0c\ \xfd\xe1\x3c\x1b\xa2\x7e\xb0\x01\x6d\x03\x56\xfb\x17\xa7\x64\x4b\ \xe8\xfa\xbd\xe5\xa1\xeb\x92\x22\xa6\x03\xcc\x7b\x73\x57\xbe\x21\ \x4f\x2b\x5b\xc4\x87\x57\x7e\x01\x3a\x7f\x04\x2e\x0c\x01\x5d\x7c\ \x1a\x7e\x05\xc4\x99\x50\x55\xc7\xe0\x98\x80\xf7\x8d\x00\xc2\x4e\ \xa6\xfd\x6b\x9b\x33\x7b\x03\x5e\xd9\xe6\xa7\x50\x28\xee\x70\x5b\ \xa2\xc0\xb0\xed\x8f\x06\x84\xc5\xec\x0e\x7e\xe3\xa3\x6a\x55\x99\ \x6c\x69\xa7\xf3\xe6\xef\x19\x29\x9f\x05\x67\xba\x47\x7c\x83\xd6\ \x9e\x5f\x18\xa8\x3c\xe6\xff\x52\xb4\x36\x29\x4f\x32\xf7\x0c\x03\ \x1d\x3c\xeb\xf9\x09\x38\xd9\x60\x18\x7d\xf6\xd5\x9d\x2a\x02\xee\ \x75\x0b\x10\x74\x61\xb0\x74\xf5\x07\x2f\xc6\x1d\xd4\x9a\x3a\x6e\ \x00\x4d\x04\xb4\x9b\x81\xec\x93\xb2\x65\x61\xe0\xeb\x45\x3c\x17\ \x51\xce\x59\x1e\xf9\x69\x65\xed\x65\xab\xbd\xc5\xc4\x0c\x06\x99\ \x09\x33\x14\x7d\xe1\xd9\x3c\xb7\x80\xf1\xfd\x10\x00\x3d\x01\xdf\ \x1a\x81\x56\x01\x28\x97\x2d\xbe\xc1\x91\xb9\x74\xf0\x90\xb0\x59\ \x11\x95\x92\xac\xd6\x19\x46\x1b\xaf\x01\xf5\x0c\xe2\xd2\xcf\xc0\ \x86\xb8\x7c\xc3\x5c\x6f\xff\x55\xe3\xcb\xe4\x16\xb0\x33\x43\x6b\ \x6a\x65\xfa\xb5\xfd\xcc\x82\x51\x1e\x76\x02\x72\x5c\x00\xda\x14\ \x54\xea\x87\x6d\x75\x46\x27\x40\x7f\xc3\x71\x73\x79\x64\xe2\x45\ \x9e\x07\x50\x77\x4d\x0b\xd8\x41\x40\x13\x53\x97\xfa\x08\xb9\x0a\ \x64\x9e\xf8\x07\xc0\x73\x65\x14\xa3\x6d\x31\x3b\xcf\xc4\xb3\xa0\ \xaa\x7b\x64\x51\x50\x44\x05\xcf\x17\x7b\x94\x41\x6c\xba\xd6\x54\ \xc7\xf4\x2b\x7b\x80\xb3\xbd\x40\x5a\x89\x6c\x71\xcd\xff\x27\xb9\ \x92\xf9\x74\xa7\xd5\x5e\xcd\xec\x6a\x08\x38\xde\x30\x38\xe6\xb7\ \x62\x63\xa3\xd7\xac\x47\xb6\xd2\xf9\x6c\x8f\x7a\xb0\x9d\x80\x1a\ \xa6\x5f\x76\x81\x13\xd2\x09\xe8\x06\x58\x06\x4e\x4b\x17\x9b\xd9\ \xce\xe9\xd1\xb1\x2c\x67\xbe\xe3\xe8\x4a\x83\x63\xcb\xd6\x26\x76\ \x2e\x0e\x59\x5f\x4c\xe7\x8f\x53\xf7\x78\x04\x88\x39\xa0\x35\x55\ \x19\x80\x92\x76\xa0\xb4\x03\x28\xaa\x1f\xb6\xa5\x6b\x64\x4b\xc6\ \x09\xa7\xce\xf6\xd9\x1c\x52\xbf\x13\xf2\x4d\xbf\xe3\x66\x7c\x8e\ \x64\x0e\x09\x8f\x4f\x7d\xf2\xf9\x77\xbd\x3c\x02\x6c\x23\xe0\x34\ \xeb\x5f\xd4\x4a\x00\xb3\xd8\x5f\x2c\x5b\xbc\x97\xbe\x5c\xb1\xe8\ \xb9\xf0\x02\xd1\x8b\x90\xf0\x8f\x9b\x53\x4b\x09\x62\x10\xa7\x2e\ \xb1\x54\xcc\x48\x04\x10\xac\xdc\x73\x80\x59\xdc\x3d\x2d\x60\x2b\ \x01\xe5\xfc\xb0\xb0\x89\x35\xbe\x08\x08\x67\xc2\x39\x3f\xf6\x15\ \x8d\x9e\x39\xd7\x67\x01\x21\x9a\xa3\x0d\xc3\xb6\x62\x3d\x33\x65\ \x96\x3a\x4e\xdb\x9a\x4d\x99\xbd\x0f\x3f\xf6\xb4\xb7\xab\xd1\x6e\ \x01\x1f\xa6\x69\x4d\x9a\x6e\xd6\xb8\x01\x10\x0e\x52\xbf\x9a\x38\ \xa6\x42\xa1\xeb\x92\xdf\xdf\xa7\x96\x2d\x47\x65\xa7\x5d\xf9\x65\ \x60\xd7\x61\xc9\x4c\xbb\x68\x57\x16\x6e\x01\xd1\x04\xa8\x19\xb9\ \xaa\x0e\x38\xd2\x06\x7c\x56\x3a\x19\x20\xfe\xa4\x29\x04\x7c\xd9\ \x0c\x64\xd5\x32\xd3\x2e\x20\x8e\x80\x05\xcf\x84\xc5\xd3\xee\xfe\ \x29\x01\x5b\x52\xb5\xa6\x42\x3a\x4e\xaf\x66\x74\x2c\xd3\xbe\x92\ \x5b\x02\x0e\x66\x71\x8a\xb2\xce\x73\x4f\x74\x80\x86\x25\x7d\x27\ \x51\x6d\xe4\x36\x6f\xa1\xdd\x03\x53\x01\x94\x31\x99\x92\x39\xab\ \x1e\x48\xf9\x1a\x38\xc4\xe8\x12\x8e\x4d\x58\xb4\x19\xe2\xee\x10\ \xce\x8e\xb0\x7c\xe9\x35\x40\x4e\xa3\x00\xd8\x1c\x41\xca\x3d\x7a\ \xda\xac\x74\xfd\xf4\x6e\x79\xe1\xc4\xaa\x24\x73\x76\x9d\xd5\x9e\ \xce\xa8\x92\x09\x48\x13\x59\x34\xda\x1c\x9b\x99\x95\x6b\xd9\xf6\ \x32\xa3\x52\xd6\x3c\x9b\xe5\xc9\xa1\xca\xae\x00\x1b\x09\xf4\xf1\ \x5f\xa3\xfe\x7b\x1f\xee\x9c\x74\xe1\x6c\xfa\x5c\x6b\x3a\xc7\x1f\ \x9c\xc4\xd5\x57\x73\x83\xf3\x38\xa2\x2a\x36\x2f\xb7\x85\x8d\xe6\ \x7b\x25\x37\xfb\xdc\x75\xa7\x2a\xb8\x78\xc7\x09\x28\xa1\x8a\xda\ \xac\x76\xe1\xfc\x89\x65\x51\x55\x74\xbc\x9a\xf2\x9a\x34\xa6\xe2\ \xc2\x89\xd8\x91\x6f\x48\x62\xd3\x6e\x47\x6f\x27\xa8\x8d\xbc\x47\ \x5a\xe7\xfb\xad\x2a\xa4\x63\xf1\x27\x9d\xe5\x8a\xde\xed\x85\xb3\ \x24\xf4\xad\x0c\x51\x6f\x4f\x34\x67\xfe\x53\xb1\x74\xf8\x02\xe5\ \x23\x1a\x3b\xde\xb9\xdb\x0b\x87\x7a\x50\x34\xd3\x43\xcd\xa4\xee\ \xfb\xb7\xe3\x29\x37\xf9\xbf\xd4\x5f\x64\xf9\x94\x79\x6f\xb3\xd8\ \x06\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x3d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xcf\x49\x44\x41\x54\x48\xc7\xb5\ \x95\x6b\x48\x53\x71\x18\xc6\x57\x14\x91\x96\x86\x99\x05\x21\x18\ \x5d\x66\x86\xcd\x20\x35\xad\xd4\x50\x22\x32\xc5\xc4\xb2\x28\x19\ \x5d\x21\xac\x6c\x50\xe1\x44\x53\xba\x9a\x20\x5e\x90\xca\xc4\x69\ \x5e\x98\x95\x25\xc7\x26\xa1\x32\x1d\xc7\xeb\x72\x35\x6c\x38\xcb\ \x39\x8d\x5a\x08\xae\x16\x15\xc2\x3e\x08\x4f\xef\x9f\xe9\x97\x30\ \xdd\x99\x36\x78\x18\x3b\xff\xb3\xe7\xb7\xf3\xbc\x97\x89\x00\x88\ \xfe\xa7\xe6\xbc\x21\xea\x58\x4e\x3a\x49\xe7\x84\xd2\x05\x03\xe8\ \x4b\x31\x59\x25\x9c\x79\xf4\x37\x30\xf2\x0b\xf8\xf0\x1d\x18\xb0\ \x3a\x34\xf8\x0d\x18\xfa\x01\xb0\x33\x26\x06\x11\x89\x44\xee\x42\ \x01\x5b\xcf\x67\x29\x8c\xc5\x75\xbc\x45\x3b\xf2\xd3\xae\xff\x0a\ \xf4\x8c\x3a\xf4\xf6\x8b\x03\xc4\x75\x9b\x6c\xec\x7c\x47\xf4\xe9\ \x72\x02\xf8\x0a\x8e\x68\x57\x5c\x9a\x64\xe7\x81\x0b\x57\xf7\x24\ \xa6\xab\x55\xba\xf1\x09\x8d\x09\x60\xd2\x59\x80\xe3\xb2\x12\x83\ \x24\x2a\xa5\x45\x1c\x1c\x57\xbe\x7c\x85\x57\x02\x01\x7c\x04\x03\ \xe8\xb5\x98\xe4\x16\x99\x7c\x43\xd3\x35\x6c\x9f\xd4\x0c\x01\xfc\ \x30\xf0\x54\x63\xb2\x31\x73\x3a\x4b\x24\x6d\x22\xad\x26\x2d\x15\ \x0c\x98\x8e\xea\x5c\xa6\xc2\xa8\xfd\x0c\xa8\x3f\x02\x1d\x66\xa0\ \x94\xeb\x1b\x0b\x08\x3f\x52\x43\xa6\x9b\x49\x8b\x5c\xee\xa2\x29\ \x80\xb4\x40\xc9\x5b\x78\x32\x6e\x1e\x00\x3a\x47\x80\x8c\x62\xce\ \xbc\x21\x70\xdf\x1d\x32\x5f\x37\xaf\x36\x9d\x02\xe4\x2a\x29\x92\ \xd6\x41\xa0\xc9\x40\x80\x4f\xc0\xa1\xb3\x79\x7a\x37\x8f\x35\xc9\ \x04\xf0\x5c\x08\x40\x35\x47\x05\x56\xbd\x07\x5e\x91\xda\x4d\xf6\ \xc9\xbd\x49\xf2\x5e\x32\x0f\x9f\x29\x77\xa1\x83\xe6\xc1\x7e\x6d\ \x3b\xc5\xf3\xf2\x1d\xd0\xd8\x0f\x54\xb5\x99\x6c\x41\xd1\xa7\x54\ \x64\xbe\x6d\xb6\xfc\x9d\x05\xc4\x5c\x2f\xe4\xcc\x4d\x46\xa0\xee\ \x0d\x01\xe8\x09\xf2\x6a\x79\x8b\x38\x24\xbe\x8c\xcc\xfd\x16\x62\ \x55\x5c\x2a\x7a\xd1\x37\x56\xaf\x07\x6a\x7b\x28\x22\x2a\x72\xea\ \xdd\xba\x21\x5f\x71\x98\x7c\xa6\xbe\x77\x05\x90\x5b\xd6\x62\xb2\ \xd5\xf6\x02\x4f\xba\xa8\xc8\x54\xe8\x58\x8a\xcc\xdd\xd3\x87\xf5\ \xff\xca\x85\x00\xb4\x35\xf4\xdb\x27\xcb\x79\xa0\xa2\x13\xa8\xe9\ \x1e\x9f\x08\x89\xbd\xa8\x21\xf3\x50\xd2\x92\x79\x01\xd8\x80\x49\ \x33\x14\xc6\x67\x14\xcf\x43\xb5\x03\x50\xcc\x19\xac\x81\x11\x27\ \xea\xc9\xdc\x7f\xae\x02\x3b\x03\x90\xde\xaa\xe2\x2d\x0a\x8a\xa6\ \xa8\x19\x60\xef\xec\xb3\x7f\x68\xc2\xa3\x99\x16\x9b\x20\x00\x99\ \xaf\x67\xf9\x17\x70\xb4\x2d\x5b\x81\xfb\x2a\x5a\x0f\x14\x53\x8a\ \x5c\x61\x5c\xeb\x27\xb9\x42\x00\x6f\x97\x00\xd3\x7f\x30\x49\x97\ \x4b\x0c\xf7\x94\x7d\x63\x15\x54\xdc\xfc\xd7\x40\x2e\x01\x1e\x68\ \xa8\x45\x9f\x1b\xac\x07\xcf\xe4\xe9\x69\xbb\xde\x8c\x38\x9a\x29\ \x76\x05\xa0\x6b\xa5\xa5\xc6\xd4\x40\x1d\x53\xa5\x03\x1e\x53\xf6\ \xa5\x1d\x40\xa5\xd6\x71\x8d\x9d\x15\x36\x1a\xac\xbb\x0f\x5f\x63\ \xbb\x68\x99\xe0\x27\xc8\xae\xe4\x2d\xd3\xca\x99\x52\xf6\x5f\x4a\ \xcb\xe7\xcc\x5b\x82\xe3\x64\x04\xf0\x12\x0a\x70\x0f\x8b\x97\xa5\ \x6e\x8f\x3c\x79\x3b\x20\x3c\xa9\xf0\x5f\xda\x18\xb4\x3f\x93\xcc\ \x83\x5d\x5a\x76\x6c\x81\x91\x56\xb1\x49\x9d\x45\xde\x6c\xd0\xe6\ \x9a\x05\xa7\xb6\xe9\x7c\xf4\x07\x31\x37\xf2\xb9\x28\x8c\xc6\xad\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\xcb\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x5d\x49\x44\x41\x54\x48\xc7\xb5\ \x95\x5d\x48\x93\x51\x18\xc7\x57\x94\x96\x52\x16\x9a\xa8\x29\x99\ \x92\x90\xe5\x57\x99\x9a\xdf\xa1\x94\xda\x07\xf9\xb1\x59\x59\x4d\ \x5d\x12\x8c\x94\xa4\x22\xe7\x34\x25\x02\xc3\xc8\x9b\x44\xbb\x71\ \x58\x17\x8a\x37\xa1\x99\x8a\x52\x7e\x85\x53\x67\xea\x74\xb6\x74\ \x3a\x35\xa7\x4d\x0d\xca\x19\xc2\x7b\xf1\xc2\xe9\x79\xf4\x9d\xe9\ \xdc\xdc\x76\xd1\xe0\x07\xef\xce\xf9\x9f\xf3\x3f\xcf\x73\xce\x79\ \x0e\x8b\x10\xc2\xfa\x9f\xac\x7f\x44\x5e\x2b\x74\x04\x72\x80\x2f\ \x06\x68\x05\xf8\x1b\xf4\x7c\xa6\x4d\x9f\x16\xe7\x71\xd4\x35\xc8\ \x14\xd5\xf7\xa9\xa7\xfe\x10\x82\x8c\x2f\x11\xa2\xf8\x4d\xc8\xe4\ \xf2\xda\x7f\xf9\x22\x45\x47\x24\x3f\x69\x67\xb1\x58\x56\x8c\xbe\ \x15\xdb\xb4\x7a\xad\x0e\xc1\x79\x82\xaf\x3e\xcc\x01\xad\xc5\xa6\ \x08\xc2\xd8\xc2\x7c\x5c\x41\x05\x08\x86\x17\x08\x91\xaa\x09\x69\ \xea\x57\x69\xae\x67\x97\xca\xc2\xd9\xc2\x2e\xbf\xa8\xb4\x17\x30\ \xc8\xfe\x5f\x04\x05\x6d\xd8\xd7\x22\x55\x69\xc6\x60\x31\x55\x1f\ \x65\x3f\x71\xbc\x5f\x54\x7a\x85\x83\xab\x4f\x34\x68\xf7\x6d\xce\ \x17\x38\xba\xfb\x9e\xf7\x8e\xe0\xe4\x77\xf6\x4c\x53\xf4\xc0\x0f\ \x42\x32\xf2\x44\x72\x67\x8f\xa0\x72\xe8\x8b\x05\x8e\x69\x23\x60\ \xf4\x56\xde\x91\xb7\x52\x32\xf2\x45\xf2\xe1\x05\x8a\x0e\x4b\x12\ \xf4\xd8\x3a\x79\x14\x42\x7b\x10\xe0\xb0\x29\x82\x8d\x60\xf8\x7d\ \x2a\x8a\x96\x2e\xac\x19\x38\xba\x9d\xe2\x83\xd8\x16\xd8\xa1\xab\ \x0d\xe7\xe4\x7b\xa2\x66\x68\x1e\x0c\xd8\x42\x31\x68\x42\x00\xcb\ \x2d\x9b\xac\x6b\xd0\x0b\x06\x83\xf3\x84\xdc\x59\x8d\x20\x90\x0b\ \x83\xf6\x1a\xd0\x1e\x47\xcd\x80\x9a\xa2\x31\x8d\xa0\x3b\xa9\xf7\ \x14\xe9\x1a\x88\x21\x45\x7d\x90\x22\x9e\x09\x06\xa8\x91\xcc\x99\ \x69\xd0\x31\x45\xd1\x62\x15\x21\xe9\x42\xe3\x06\xa8\xe9\x9e\x35\ \xd3\xa0\x55\x49\xd1\x9d\x33\x84\xa4\x99\x60\x80\x9a\xcf\x33\x66\ \x1a\x34\x2b\x28\xba\x75\x1a\x0c\x72\x4d\x33\x68\xff\x6e\xa6\x41\ \xd3\x18\x45\xb7\x4c\x12\x92\x6a\x82\x01\x6a\x3e\x4d\x99\x69\xd0\ \x00\x11\x34\x2a\x09\xe1\x9a\x60\x80\x9a\x66\xa5\x79\x06\x65\x95\ \x5d\x2a\xcd\x87\x09\x42\xee\x97\xd4\x29\x3d\xfc\x2f\x3d\xd8\x78\ \xc1\x74\xb4\x09\x39\xaf\x5b\xa6\xdf\x80\x3e\xe0\x62\x66\x2d\xe8\ \x3c\x4d\x31\xe0\x16\x54\x76\xce\x36\x4c\x11\x52\x54\xd3\xa7\xf6\ \x39\xc7\x7d\x05\x03\x0f\x18\xd0\x3e\x2f\x6b\x19\xff\x85\xfa\x13\ \x21\x9c\x12\xd0\xb9\x99\x62\x60\x0d\x37\xb4\xfa\xad\x64\x71\xa5\ \x16\xf6\x22\x31\xab\x54\x76\xf6\x4a\xb6\x10\x6e\xaa\x93\x4e\xf5\ \xcd\xcc\x7c\x59\xa7\xac\x19\xd6\x50\x71\xbc\xe2\x41\x6b\x1b\xfb\ \x78\x30\xb0\x33\x6a\x80\x25\x21\x2c\x29\x37\x11\x26\x1e\xa9\xec\ \x5d\x58\x79\x07\x26\xcf\xaa\x25\xf3\x50\xdc\xfa\xb5\xc4\xf2\x8a\ \xa5\xd8\x86\x7d\x37\x05\x22\xb9\x67\x70\x12\xae\xde\x6b\x63\x99\ \xd0\x6b\x00\xbf\x9d\xc0\x6e\x60\x4f\x40\xdc\xbd\xdb\xc1\xf1\x8f\ \xea\x85\xa2\x8e\xb9\xf2\xf6\x99\xe5\x3a\x48\xd9\x7b\x06\xfc\x7e\ \x5a\x25\x99\x8f\x49\x2f\x1e\xf2\x0a\xbf\x81\xc5\x30\x14\x38\xa8\ \x5b\xaf\xf4\x4d\x6e\x09\xec\x07\x0e\x01\x87\x6d\xec\x5c\x4e\xc3\ \x04\x45\x67\x62\xf8\x8d\xe1\xec\x3c\xd9\x3a\x9c\xbc\x61\xaf\x88\ \x94\x1a\xe8\xe7\x33\x93\x3b\x61\xf5\x34\xf8\xa2\xa1\x33\xb0\x2b\ \x34\x31\xa7\x10\xf2\x3f\x04\xf9\x1e\x81\x34\x7d\x05\xe4\xa1\x09\ \x8f\x47\x03\x2f\x67\x29\xfc\x2f\xdc\x9d\xf0\x8d\x4e\x9b\xf4\x8d\ \x4a\x5d\xc5\x2f\x9a\xa7\x84\x93\x33\x1a\x9a\x28\x18\x81\x12\x2f\ \x8d\x48\x2e\x18\x00\x04\xdb\x19\x58\xa0\x70\x12\x5f\x28\x40\xb1\ \x64\x3a\xda\x31\xf8\xe0\x18\x35\xe8\x86\x32\x2d\x06\xda\x66\xd6\ \x68\x67\x68\xdb\x06\x31\x33\xc6\x98\x81\xde\x14\xc1\x4b\xf5\x6d\ \x2b\xd8\x0e\x80\x0e\xf7\xc4\x68\x8a\x0c\x6c\x32\x6e\x9c\x0b\xe0\ \x8a\x17\x08\x70\x67\x38\x0a\x1c\x01\x9c\x99\xa7\x11\x4f\x8f\x15\ \x2e\x50\x77\x93\xff\x02\x6e\x02\x38\xfc\xe3\x20\x49\xdb\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x07\x68\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x07\x2f\x49\x44\x41\x54\x58\xc3\xcd\x97\x09\x54\x54\x65\ \x14\xc7\x9f\x80\x88\x20\x04\x0d\x28\x9b\x6c\x02\xb2\x0c\x33\x2c\ \x6e\xa0\xc0\x11\xe8\xc4\xa8\x84\x6c\xb9\xa0\x64\x66\xb9\xe6\x12\ \x5a\x96\x29\x89\x5a\x4a\x08\xa7\x52\x3a\x99\x51\x83\x10\x03\xea\ \x00\x03\x1a\x10\x20\x8c\xc0\x40\x12\x01\xa3\x43\xc0\x60\x25\x21\ \xab\x02\x31\x0c\xdb\xcc\xbb\xdd\x37\x3d\x3b\xed\x82\xc9\xa9\x77\ \xce\xef\x0c\xe7\xfb\xee\x7b\xf7\x7e\xf7\xfb\xbe\xff\xbd\x10\x00\ \x40\xfc\x97\x4c\xc8\xc8\xdd\xdd\x9d\xe9\xe6\xe6\x76\xdc\xd5\xd5\ \x95\xeb\xe2\xe2\xf2\xd6\xfc\xf9\xf3\xfd\x09\x82\xd0\x46\xd4\x1e\ \xea\xe0\xdf\x3e\xe8\xd8\x2b\x24\x24\xe4\x56\x61\x41\x7e\x7f\x7d\ \x5d\xad\xfc\x62\x66\xe6\xc0\xf6\xed\xdb\xda\x99\x4c\x66\xb6\xbd\ \xbd\xfd\x06\x34\xd1\x45\xd4\x89\xa9\x7a\x30\x80\xf7\x44\xa5\xe9\ \x32\x68\xdd\x08\xd0\xe8\x03\xf0\xfd\x2e\x80\xfe\x02\xa8\xad\x11\ \x8d\x7a\x7b\x7b\xdf\xd1\xd6\xd6\x0e\x40\x33\x83\x29\x0b\x00\xd3\ \x5f\x0f\xcd\x2b\xa1\x86\x4b\xc0\x86\x15\x04\xbc\x14\x4a\x80\xf0\ \x1c\x66\xb7\x71\x19\x24\xc4\x1d\x1e\x32\x37\x37\xbf\x80\x66\xce\ \xc8\xf4\x29\x09\x80\xcd\x66\x7f\x2e\xe1\x11\xc0\x4b\x60\x2a\x4c\ \x4c\x4c\xc4\x16\xa6\x3a\x85\x6b\x38\x86\xa3\x50\x45\x40\x45\xce\ \x66\x85\x8d\x8d\xcd\x37\x68\xc6\x41\x9e\x98\x8a\xd5\x3f\x1d\xb5\ \x61\x8d\x74\xe8\xc6\x22\xb2\x98\x17\xa9\xb0\xb4\xb4\x14\xe3\xf0\ \xab\xae\x2c\xfb\xda\xd6\x5c\x53\x10\x0b\x96\x90\xb6\xb6\xb6\xcd\ \x38\x16\x85\x18\x4f\xc5\xfe\x27\x37\x5c\x4f\x18\x86\x6a\x5d\xe8\ \xaa\xdd\x0d\x5e\x9e\x4b\xee\xa3\xc3\x2b\x78\x00\xcb\x5a\x0a\x9f\ \x22\x6f\xf2\x9d\xc9\x79\xf3\xe6\xb5\xa2\xe9\x56\xc4\xfc\xb1\x07\ \xe0\xe4\xe4\x14\x7e\x64\x9b\xd1\x48\x7e\x02\x01\xf7\x84\x1e\xd0\ \x71\xbb\x98\xcc\xcf\xf9\x68\xa4\x40\x70\x4e\xde\xfd\xf5\x76\xc8\ \x88\xb3\x54\x9a\x9a\x9a\xde\x40\xd3\x17\x10\xd3\x09\x2c\xc8\x8f\ \x3a\xd4\x2c\x16\xeb\x88\xb5\xb5\x35\x0b\x87\x66\x3c\xec\x1d\xdd\ \xdd\xeb\xf5\x12\xa2\xa3\x74\xee\x1c\xdb\x3e\x83\xec\xae\x5a\x0f\ \x77\xeb\xe2\x54\x74\x55\xae\x83\xca\x0c\x8e\x12\x3f\x24\x41\xbb\ \x8d\xc8\x9c\x7f\x70\xfc\x7c\x58\x58\x58\x69\xdd\x37\x55\xb2\xf1\ \xb1\x11\xb2\xef\x7e\x97\xc2\xce\xce\xee\x13\x9c\xb2\x7f\x58\x00\ \xd4\xfd\x36\x43\x56\x72\x7c\xe6\xdc\xc8\x8f\x27\x60\xac\x8c\x01\ \x23\x65\x26\xa0\x2c\xd5\x04\x59\xc5\x62\xc0\x2c\x75\xe1\xfc\x96\ \xbf\xca\x00\xe5\x38\x34\x34\xb4\xb4\xae\xb6\x62\x68\x64\x64\x04\ \x54\x0c\xcb\xa0\x49\xfc\xa5\x02\xb7\xae\x06\x4d\x82\x26\xb2\x13\ \x1a\xc8\x93\x46\x46\x46\x2b\x22\x02\x67\x0f\x76\x67\xe1\x15\x2c\ \xa1\x29\xd3\x81\x7d\x3b\x23\x64\x38\xf7\x11\xda\x38\x50\x01\x7b\ \x78\x78\xe8\x52\x8e\x51\xbc\xca\x6e\x54\x97\x0c\xf5\xf7\xf7\xc3\ \x2f\x0c\xc0\xbd\x6e\x29\xf9\xda\x2b\x91\x72\x9f\xc5\x73\xee\xea\ \xeb\xeb\x67\xa1\x7d\xc4\x64\x8e\x84\xf6\x42\x37\xab\xb8\xb7\x5e\ \x9a\xa9\x84\x22\x74\x7e\x6b\x13\x90\xf2\xdb\x20\xf8\x6c\xdb\x38\ \x6a\x41\xe1\xac\x59\xb3\x82\xf0\xca\x1e\x58\xbf\x36\xac\xa9\x42\ \x98\x3f\xd4\xd1\xd1\x01\x0f\xe8\xea\xb8\x03\xd7\x8b\x2e\x28\x7c\ \x97\xba\xc8\xd8\x4e\x86\xd4\x4d\x3a\x8b\x6c\xa3\x2e\xda\x64\x02\ \x98\x46\xed\x73\xb0\xbf\x49\x91\x54\x14\x0f\xa3\xa3\xa3\x2a\x7a\ \x6f\xe7\x92\x28\xc9\xad\xe1\x61\xab\xda\x45\xd7\x05\x23\x52\xa9\ \x14\x28\x5a\xa5\xad\xaa\xdf\x16\x49\x05\xb9\x7f\x77\xf8\x30\xcb\ \xc9\x44\x3a\xd7\x58\x4b\x80\xdf\x88\x45\xc2\x91\xf9\xb4\x8c\x4f\ \xea\xd1\x30\x36\x36\xf6\xe5\x70\x38\x8d\x83\x83\x83\xa0\x62\xa0\ \x1b\x2e\xf3\x92\x94\x99\x99\x99\x50\x59\x59\x09\xf5\xf5\xf5\x2a\ \x6e\x36\xd4\x40\xee\xa5\xc4\x71\x67\x47\x9b\x4e\x57\xa7\x27\x6b\ \xf1\xdd\x44\xfa\xac\x78\x22\x26\x8f\xac\x9c\xb8\x5a\x07\x47\x47\ \xc7\x0f\xbf\xaa\xbc\x3a\xde\xd3\xd3\x03\x5c\x2e\x17\x62\x62\x62\ \x80\xcf\xe7\x43\x72\x72\x32\x08\x72\x04\x20\x12\xf2\xc9\x17\x37\ \x05\xca\xed\xe7\x99\x36\x6b\x6a\x6a\x52\x52\xfd\x2a\x75\x90\x11\ \x1b\xba\x8a\x4e\x7b\x14\x51\x5a\x48\x95\xe4\x15\x81\xbe\x8d\xe9\ \xdc\xb8\xb1\xb4\xb4\x34\x55\x8a\x3d\x3d\x3d\x41\x4f\x4f\x0f\xda\ \xda\xda\xa0\xa0\xe0\x2a\xbc\x1f\xbf\x6f\x1c\xe5\xb9\xcd\xda\xc2\ \xa0\x1c\x5f\x7b\x17\xa1\x2a\x26\x1b\x61\xd0\x07\x7a\x52\x4e\xcd\ \x90\x1d\x48\xfe\xae\x2d\x3e\xb7\x0b\x52\x9f\x1d\xcc\xbb\x9c\x04\ \xe9\xe9\xe9\x90\x98\x98\x08\x67\xcf\x9e\x05\x1e\x8f\x07\x39\xd9\ \x39\xd0\xdc\xdc\xac\xa2\xb3\xbd\x89\x0c\x5a\xe9\xf7\x13\x6e\x55\ \x0e\x7d\xca\x6d\x68\xc1\x99\xf8\xaa\xb1\x06\x04\xa3\xd3\x4f\x57\ \xaf\x5c\xdc\x98\x92\x10\xd0\xd3\x79\x6d\x99\x02\x84\x96\x30\x96\ \xa3\x09\x82\xd3\xda\x90\xce\x3d\x09\xbc\xcf\x93\xe1\x9d\xd8\x97\ \x15\x27\x8e\xee\x57\x66\x65\x9c\x51\x36\xd4\x57\xe1\xde\xd7\x81\ \xf8\xa6\x18\x7e\x1a\xb8\x07\x27\x8f\xed\x1d\xc4\xbb\x9e\x8c\x9f\ \xb3\x9c\xd0\xca\xb1\xdb\x61\xa0\xe3\xdd\x48\xf9\xc9\x83\x4b\x7f\ \x6c\xc8\xf5\x91\x83\xc8\x01\x3a\xd3\x66\x02\xff\x4d\x02\x4e\xef\ \x50\x27\xfb\x2e\x59\xc0\xdd\x14\x02\x72\x12\xcc\xc0\xdf\xd7\x4d\ \x86\x32\xdc\x80\x1a\x70\x6d\xee\xdc\xb9\xd5\x21\xab\xbc\xfa\x2b\ \x8a\x3e\x21\x45\x22\x11\x50\x74\x75\xfe\x08\x5f\x5e\xbd\x30\x8a\ \x8a\x97\xc6\x60\x30\xdc\xfe\x31\x0b\xb8\xda\x08\x3f\x5f\x0f\x71\ \x4a\xfc\xa2\x1e\x59\x39\x93\x84\xe2\xd9\x50\x83\xfa\x1f\xbb\x59\ \x9d\x0c\x7d\x4a\x7f\xc8\xcb\x9d\xd1\x84\x6d\xd8\xdd\xb6\x3c\x77\ \x52\x91\xa5\x0b\xe7\xf6\x10\xe0\xb7\xc4\xf0\x0e\xbe\xfa\x01\x7d\ \xb2\x43\x9c\xec\x18\xf1\x58\xa8\xaa\x4e\x1d\x8d\x1a\x2e\x2b\xb9\ \x02\xc5\xc5\xc5\x20\x91\x48\xa0\xa5\xb1\x5a\x89\x41\xf0\x31\xc8\ \x55\x68\xa7\xf3\xa7\x20\xa8\x92\xeb\xe7\xeb\x2e\x6e\xcd\x73\x18\ \x85\xab\xb3\x40\xf8\x0e\x01\x3b\xc3\xa7\x2b\x23\x02\x0d\x7a\x2d\ \xcc\xf4\xae\xa3\xc9\x39\x2b\x2b\xab\x92\xf3\x6f\xb3\x06\xfb\x4a\ \x56\xc0\xc7\x7b\xa7\xc3\xce\xb5\x3a\x7d\x38\x9e\x82\x6c\x46\xec\ \xe8\x8e\xc8\x02\xf1\xc1\xda\x90\x1e\xb0\x7c\x51\x6f\x7e\xd6\xbb\ \xca\xbc\xbc\x3c\x10\x0a\x85\xd0\xfe\x83\x84\x5c\x1d\xe4\xdf\x8e\ \x5b\x72\x10\x6d\x8c\x7e\xb7\x25\xaa\x92\x9b\x61\x33\x0c\x97\xd5\ \xe0\xfc\x01\x03\x32\x24\xc0\xa0\x13\x55\xad\x10\xa7\xce\xe0\xef\ \x71\x2a\x85\x27\xa2\x99\x5d\xf2\x4a\x2f\x28\x4f\x62\xc3\xde\x0d\ \xda\x03\x38\x97\x81\xec\x43\x98\xbf\xa9\x68\xea\xb4\xb0\xd8\xe1\ \x01\x3c\x88\xd9\x10\x1d\x3f\x14\x26\xcf\xbe\x7c\x01\xb2\xb3\xb3\ \xa1\xbd\xad\x19\x9e\x8b\x0a\xef\xc5\xf1\x24\xba\x74\xff\x12\xc4\ \x6a\x0e\xbb\x11\xb2\xa7\x43\x4b\xaa\x07\x2c\x5b\x68\xd6\x8b\x4e\ \xaf\xe0\xf0\xeb\x98\xb2\x37\xb0\x03\xe6\xf3\xdf\xb7\xbd\x3f\x5c\ \xce\x86\xa6\x8c\x40\xd8\xb5\x76\xc6\x18\xce\x17\xe1\xfc\x1b\xc8\ \x02\x64\xe6\xdf\xd4\x0e\x4a\x68\x96\x51\xd9\xf0\xf7\x5d\xd0\x9b\ \xf9\xe9\x7e\x65\x6a\x6a\x2a\x48\x6e\xd5\x41\xec\xe1\x2d\x83\x28\ \xdd\x31\x74\x91\x53\x27\x96\x7b\xb3\x25\x43\xd8\xef\x75\x17\x46\ \x40\xee\x19\xf3\xb1\x35\x41\x0e\xf7\x51\xd3\xbf\x7b\xe6\x69\x66\ \x6b\xfd\x25\x33\xb9\xbc\x84\x0d\xdf\x5e\x0c\x85\x17\x83\x35\x48\ \x96\xa3\x81\x98\xbe\xdb\x7e\x0f\x91\x51\x35\x7a\xbf\x6d\x0d\x0d\ \x0d\xf7\xa0\x2e\x94\x46\xef\x08\x18\x4a\xe3\x9e\x06\x61\x51\x0a\ \x25\xdd\x54\x1b\xb7\x5c\xf5\x0d\x67\x67\xe7\x98\xfd\xeb\x66\x8c\ \xb7\x70\x59\xd0\xfb\x45\x10\xc8\x85\x2e\xa0\xfc\x4a\x1f\x94\xd5\ \x06\xd0\x97\xbf\xfc\x57\xe7\x5e\xee\x4f\x34\xe2\x0b\x49\xf4\xdd\ \x36\x99\xe0\xbd\xd6\xa0\xfb\x84\x25\xd8\xce\x9d\xc7\xb3\xd6\xb3\ \x39\x72\xa9\x0c\x6f\xc5\x17\x38\xf6\x2c\x62\x48\x19\x31\xdc\x98\ \x66\x89\x5b\x23\x66\xca\x0f\x45\xaa\x01\xef\x10\x03\x04\xb1\xa6\ \x2a\x92\xa3\xf5\xe0\x40\x94\x9a\x92\x76\xfe\x21\x12\x89\x58\x4d\ \x52\xd1\xa6\xd1\xf2\x6b\xad\xa5\xa5\x15\x81\xaa\x19\x87\x7f\x47\ \x23\xde\x0f\xb2\xa8\x41\x9f\xe0\xe0\xc5\x2c\x9d\xcf\x9e\x0b\xd6\ \x95\xec\x5a\xa7\xd3\x8e\x74\x6c\x0a\xd6\x91\x1a\x33\x88\x8b\x38\ \x77\x8a\x8e\xd8\x9a\x78\xf4\xf6\x5b\x83\x96\x63\xaa\x6f\x70\xa2\ \x57\xaf\xfe\xc7\x49\xea\x54\x73\xe8\x1e\x6f\x2f\xb2\x87\xd6\x72\ \x4f\x3a\x95\x8f\xa3\xf7\x57\xa7\xfd\x4d\xfb\xbb\x49\x5d\x7a\x8f\ \xad\x68\x19\x9d\x8d\x68\x3d\x52\x05\xfb\x3f\x3c\x8f\xe5\xbf\xe3\ \xa9\xe4\x67\x2f\x79\x73\x70\x22\x76\x00\x17\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\xca\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x05\x91\x49\x44\x41\x54\x78\x5e\x8d\x95\x0b\x6c\x54\xc7\ \x15\x86\xbf\x99\xfb\xd8\xf5\x9a\xf5\xda\x06\xf3\x30\x8e\x1d\x13\ \x48\xf3\xb0\xdc\xd0\x84\xf4\x21\x4a\xd4\x9a\x10\x48\x1c\xea\xa4\ \x69\xe2\x84\x20\x28\x88\x47\x53\x09\x0a\x69\x52\x29\xa9\x2a\x48\ \x48\xab\x4a\x81\x54\x51\xc5\x2b\x85\xd0\x16\xb7\x29\xb8\x51\x12\ \x90\x5c\x2b\x34\xcd\x8b\x50\x4a\x95\xb5\xe5\x26\xc6\x50\x82\xed\ \xae\xb7\x36\xf5\xf3\x81\xbd\x8f\xbb\x73\xba\x8a\x56\xb8\x1b\x5a\ \xe8\x2f\xfd\x73\x74\x66\xa4\xf3\xcf\x3f\x47\xa3\xa3\x44\x84\x0c\ \xd8\xb7\x4e\x2d\xfd\x43\x98\x79\x6d\x11\x66\x8e\xc7\xf1\x23\x28\ \x40\x50\x08\xa0\xf2\x72\x29\xbc\xa9\x94\xf8\xd7\x6e\x66\x27\x9a\ \xe6\x55\xbb\xa4\x9b\xab\x41\x44\x3e\xe5\xee\xd5\x3c\xd2\x52\x77\ \xdb\xd0\xa6\x07\x27\x27\xe4\x7f\x20\xe6\x89\x3c\xfd\xed\x42\xf9\ \xdb\x1e\xf5\xaf\x23\x4f\x13\xdd\xfa\x00\x65\x22\xc2\x95\x68\x93\ \x81\xf1\x58\x59\x71\xfb\xbc\xbc\xe2\x93\xed\x74\x75\x75\x60\x3b\ \x01\x3c\x2f\x89\xa0\xd0\xca\x22\x85\xe2\xa7\x5b\x36\x53\x22\xfd\ \x9c\xe9\x20\x77\x74\x90\x84\x5f\xb3\x65\xe7\x0a\xd5\xa5\xe1\x5a\ \x81\x5c\xdb\x66\xff\x9a\x7d\x72\x84\x09\xa0\xc9\x40\x0c\x53\xb1\ \x87\xc0\xeb\xa5\xb3\xa3\x9d\xa6\x70\x33\xe1\x70\x13\xcd\x69\x7e\ \x18\x0e\xf3\xde\xe1\x2d\xcc\xcd\x0f\x53\x3e\xeb\x56\x42\xe5\xdf\ \xf2\xcd\xbe\x63\x63\xa8\xfa\xb1\xdd\x0f\xdd\xfb\x64\xc3\xa6\x65\ \xcf\x9f\xad\x5d\xbb\x3f\x51\x73\x73\xd5\xda\x03\x3b\x96\xa9\xef\ \xfe\xd7\x27\xfa\xf9\x23\x34\xc9\xe9\x6f\xca\x73\x1b\x02\xf2\xe2\ \x8b\x2f\xc8\xea\xd5\xdf\x91\xda\x87\x97\xc9\x3d\xd5\x35\xb2\x70\ \xd1\xbd\xf2\x54\x8d\x92\xc4\xd8\x90\x5c\x8e\xb8\x24\x92\x63\x97\ \xb2\x86\x9f\x2d\x8a\xee\x78\x94\x8d\x99\xba\x13\x0e\x8c\x42\xa5\ \x8c\x61\x4e\x65\x25\xc7\x8e\xd5\xf3\x51\xcb\x31\x22\x1d\x27\x19\ \xe8\x6d\x21\xe0\x6f\xc3\xe7\x0a\x82\x07\x24\x41\x06\xc0\xf4\x83\ \xe9\x25\x3e\x36\x40\xff\x85\x4e\xbc\x94\x07\xc0\xe2\x8d\x8d\x33\ \x5c\x8b\xe5\x4a\x29\x07\x98\xe8\x81\x32\x08\x28\xe6\x55\xe4\x31\ \x9a\xd0\x8c\x8c\xd8\xd8\xb6\x85\x42\x51\x5e\x1e\xe2\xc2\xf1\x0e\ \x14\x49\x60\x0c\x52\x17\x41\x04\x94\x22\x11\x1b\x66\xa0\xaf\x1b\ \x74\x80\xbc\xfc\xa9\x38\x8e\x8f\x50\xf1\x75\x45\x70\x6e\x1a\x10\ \xb9\x24\x20\x1a\x2c\x5b\x31\xa5\xc8\xc7\xdd\x8b\x4b\x89\x5d\x4c\ \x90\xf0\x52\x68\xad\xc8\xc9\xb1\x39\xd1\xec\x64\xec\xa6\x80\x18\ \x68\x0b\xc4\x43\x29\x43\xd2\x8b\xd3\xdc\xf4\x5e\x3a\x5a\x14\x4e\ \x2e\x21\xda\x71\x2e\x09\xe4\x65\x3b\x50\x08\x8e\xc6\xef\x6a\xb4\ \xed\x10\xf0\x6b\x40\xb0\x2d\x85\xdf\x67\xa5\x73\x0b\xcb\xd1\x80\ \x02\xdb\x01\x49\x81\xd1\xd8\x96\xa4\xcf\x40\x52\xe3\xc4\x63\x1e\ \x29\xaf\x88\xd8\x38\x06\xb0\xb2\x04\x04\x40\x2b\x6c\x5b\x61\x05\ \x1c\x94\xd2\x1c\x79\xe3\x0c\xaf\x1d\x6d\x65\x6c\x2c\x46\x57\xeb\ \x10\xbf\x09\xaf\x40\x69\x43\x61\x41\x90\xfb\x6b\xee\x64\xc1\xc2\ \xaf\x60\xeb\x04\xf9\xa1\x00\xe5\xa5\x93\x89\x7b\x3e\x82\xa1\xe9\ \x04\x5c\x3c\xc0\x7c\xd6\x01\x68\xf5\x29\x95\xa3\x89\xb4\x0f\x70\ \xf0\xe8\x38\x0f\x6f\xfe\x0b\xa7\x3a\x83\xcc\x1c\x18\xc6\x32\x2e\ \xae\x11\xe6\x96\x5e\xe0\xd5\xd7\x7f\xc0\x82\x45\x5f\xc4\x76\x85\ \xe0\x24\x07\x9f\x5b\x80\x51\x41\x7c\x39\xd3\xf0\xbb\x18\x20\x99\ \x25\x60\x5b\x08\xd6\xc4\xcf\xc8\x0d\x38\x78\xf1\x51\xfa\x47\x87\ \x69\xe8\x2a\xe4\xa3\xd6\xc9\x24\xfa\xc0\x17\x87\x4d\x4b\x82\x74\ \x76\x9e\x07\x46\x41\x3c\x5c\x3b\x85\x63\x81\x4a\x2f\xb8\xb9\xe9\ \x1c\x03\x98\xac\x8f\xe6\xda\x80\x23\x60\x03\x16\x14\x5c\x13\xe4\ \x89\x75\x33\x78\xfd\x99\x5b\xb8\x2d\xe7\x14\x3a\x07\xd0\x10\x57\ \xe0\x79\x43\x04\x73\x73\xc0\x18\x90\x4c\x10\x00\x05\x80\x12\x00\ \xc8\x72\xb0\xb5\x9e\xca\xfe\xa2\x30\x0f\xdc\x57\xcc\xb4\xb2\x11\ \xa2\xd1\x21\xce\xb6\xf5\x30\xbb\x62\x01\x3d\x6e\x11\xe2\x07\x72\ \x40\x01\x96\x0d\x22\x99\xca\x69\x8a\x08\x00\x64\x22\x64\x0b\xa0\ \x94\x7a\x70\xeb\x81\xdd\xd6\x94\xd9\x9f\xe3\xb9\xfd\x3f\x61\xb8\ \xe7\x38\x45\x25\xb3\x28\xbb\x7d\x2d\xd1\xfb\x56\xf2\xe6\x19\xf0\ \x5c\xc8\x9b\x0a\xf6\x18\xe0\x68\x8c\x11\x10\xc1\xa4\x0c\xc6\x98\ \xcc\xcd\x0d\x1a\xb9\x5c\x00\xe8\xee\x6d\xff\x3b\xd7\x57\xd7\x52\ \xb2\xbd\x91\x9e\x9e\x24\xed\x9e\x43\x63\x2f\x44\xbb\xc1\xe7\x87\ \xbb\x3e\x0f\x37\xfc\xf3\x4f\x78\xbe\x59\xcc\x29\x2f\xa3\xf5\x62\ \x02\x8c\x60\xc4\x20\x69\x02\x99\x98\x0d\x0d\x20\x22\xef\xc6\xde\ \x7c\xbe\xf3\x77\xcb\x2b\x09\x1e\xd9\x85\x52\x31\x86\x05\xf2\x7c\ \xf0\xd5\xc2\x38\x8f\x15\x9f\xe1\xa6\x77\x96\xf3\xf1\x6f\x1f\x67\ \xe0\xed\x27\x88\x45\x1a\x99\xff\xe5\x4a\xc4\x4b\x61\x52\x29\x44\ \x24\xe3\x48\x01\xf6\xa5\x56\x64\x35\xf9\x4b\x37\xd0\x77\x78\xcf\ \x17\x78\xeb\xc0\x8f\x71\x5f\xda\x4c\xcd\x89\xed\xac\x6b\xdf\x47\ \xd5\xc7\xcf\xd2\x73\x68\x25\x47\xeb\x0e\xd2\xd0\x70\x88\x6d\x4f\ \xad\xe0\xb5\x5f\x3d\xc3\xd2\xea\xf9\x24\x93\x1e\x06\x0d\xca\x45\ \xd9\x41\x2c\x77\x0a\xe0\x60\x69\x34\xa0\xb2\x9a\x1c\xf7\x50\xf6\ \x94\x20\x47\xf7\x46\xf8\xf3\x07\xbf\xe0\x83\x0f\xa1\x25\x02\x17\ \xc7\x41\x83\xb7\xe6\x4e\x48\xe1\xd8\xa5\xe5\x25\xd4\xa5\x2f\x50\ \x50\x90\x8f\x88\x83\xe5\x4c\x42\xdb\x79\x58\x6e\x88\xe4\x68\xdc\ \x74\xb7\xbd\x3c\x7a\xea\x3c\x9f\x00\x5e\x96\x03\x01\x0b\xaf\x8d\ \x37\x1a\xe1\x9d\x26\xe8\x1f\x24\x31\x33\x48\xdf\xad\x33\xe8\x9c\ \x3f\x9d\x56\xe3\x31\x60\x8c\x83\x31\x2e\x05\x85\x25\x68\x67\x3a\ \x6e\x70\x0e\xda\x2e\x26\x7a\xba\x69\xe8\xc4\xc1\xc7\xff\xf1\xfb\ \x1f\x95\x9f\xdd\xb2\x79\xd5\x5b\x0d\xcd\xd4\x03\x83\xd9\x23\x73\ \x15\x07\xce\xfd\x11\xd9\xba\x8a\xc1\x9d\xeb\xf9\xa4\x6e\x03\xa7\ \xd7\x57\x51\x7f\xf7\x2d\x6c\xcb\xf7\xb3\x64\x7b\x2d\xef\x4b\x2a\ \x2e\x22\xa3\x22\xa6\x4f\x06\x23\x27\xc7\xff\x5a\xbf\x21\xf2\xea\ \x0f\x4b\xda\x7e\xbd\x9e\xd6\xaa\x1b\xd9\x9e\x6b\xf3\x0d\xe0\x46\ \xa0\x00\xd0\x22\x32\x21\xb0\x6f\x1d\x5f\xdf\xbb\x86\x43\xdf\xbf\ \x87\x5d\xf3\x66\xf1\x64\x51\x90\x25\xc0\x6c\x20\x5f\x44\x78\x79\ \x2d\xbf\x4c\x8c\x74\x49\xdf\xf9\xe3\xb1\xb7\xf7\x2c\xed\x78\xe5\ \x7b\x56\xdb\xe2\x0a\x5e\x2a\x2b\x60\x25\x30\x17\x98\x0e\xe4\x7c\ \x76\x26\x73\xd9\x06\x84\x80\x7c\xc0\xf9\xcf\xfd\x57\x36\xb0\x70\ \xef\x6a\xea\x9f\xbd\x9f\xc3\xf3\xe7\xb0\x2d\xe0\x50\x0d\x5c\x07\ \x4c\xba\xd2\xd0\x57\x99\xa2\xff\x37\x94\x52\x21\xc0\x01\x46\x44\ \x24\xce\x55\xf0\x6f\x03\xe2\xf6\xe2\xcc\x69\x65\x93\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x7e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x06\x45\x49\x44\x41\x54\x48\x89\x9d\x95\x7b\x6c\x95\x77\ \x19\xc7\x3f\xbf\x73\xde\x73\xeb\xe5\x9c\x5e\xe0\x40\x69\xbb\xb2\ \x5e\x28\xe5\x0e\x45\x1c\x63\x83\x11\xc9\x14\xc7\x60\x5b\x34\x38\ \x63\x66\x22\x53\x11\x63\x44\x37\x35\x26\xc6\x7f\x66\x48\x34\x26\ \x6a\x36\x5d\x30\x64\x71\x19\xc8\x28\x0e\xc4\xae\x60\x69\x59\xa1\ \xe1\x3a\x2a\xd4\xf5\xc2\xb5\xd0\xd3\x3b\xbd\x9d\x9e\xeb\x7b\xf9\ \xbd\xef\xfb\xf3\x1f\x34\xa8\x98\xcc\x3d\xc9\xf3\xef\xe7\xf3\xe4\ \xfb\xc7\xf3\x15\x4a\x29\x3e\xc9\xbc\xfd\x43\x51\x5c\x51\x1a\xda\ \x3e\xbb\x6c\xc9\xf7\x95\xeb\xe8\x23\xb1\xce\x57\x8f\xb6\xbb\x6d\ \x5f\xdd\xc4\xd2\xb4\xc5\xe0\xa6\x57\xd5\x38\x80\xf6\xff\x82\xff\ \xf0\x23\x11\x2a\x29\x60\xeb\xb2\xfa\xb5\xdf\xa9\xa8\x7b\x6e\x5d\ \x51\x71\x2d\xae\x27\x48\x76\xf2\xd9\x9f\x6f\x79\xb2\xb8\x2f\x53\ \xf0\xe4\x0b\xc1\x64\xe3\x7e\x21\xc4\xd7\x94\x52\xf2\x63\x0b\x84\ \x10\xe2\xf8\x1e\xd6\xd5\x56\x45\x5f\x99\xbf\x62\xc7\x33\xd1\x79\ \x6b\x7c\x22\x79\x8d\xcc\xdd\xc3\xa8\xbc\xc5\x8c\xfb\xbf\xb8\x3c\ \xbf\xfe\xc5\xe5\x95\xb5\x9f\xe6\xc6\xe1\x13\xf3\x40\x86\x80\x87\ \x0b\x3a\xde\x14\x1a\x8a\xc0\xea\x5d\x2a\x03\xd0\xf8\x9a\xa8\x3c\ \xf3\x46\xf1\x37\xcb\x17\x6e\xfa\x56\xd9\x82\x17\xf3\xbd\xd9\x3e\ \xec\xe1\x26\x46\xc6\xa7\xe9\x9f\x09\x23\x8b\xca\x59\xf5\xec\x2e\ \xc2\x91\x08\x72\xea\x12\x77\x86\xad\x2e\xc0\xfb\x5f\x11\xfd\xe4\ \x2b\xc2\xf7\xc4\x22\x9e\x88\xce\x5f\xbe\x53\xf3\x87\x0b\x9a\x7e\ \x26\xf6\xf9\x7c\x62\x56\xcd\xaa\xad\xaf\x94\xd5\x6c\xa9\xca\xf5\ \xf9\xb1\xee\xb5\x12\x9f\x99\xe4\xc6\x10\xa4\x73\xd6\x32\x6f\xc5\ \xe7\xa8\x5e\xb0\x08\x5c\x89\x02\xe2\x77\x0e\xd9\xad\x97\x9c\x0f\ \x00\x09\x20\x94\x52\x08\x21\xc4\xb1\xd7\x58\x38\x2b\x3a\x7b\x77\ \xc5\xb2\x1d\x2f\xcd\x9e\xb7\x3a\x28\xac\x19\xe2\x89\x61\xdd\x17\ \x88\x68\x91\x48\x89\x4f\x4d\x5f\x65\x66\xa2\x8f\xc1\x29\x41\x5f\ \xba\x8a\xea\x95\x2f\x50\x5a\xb5\x84\x70\xae\x1f\x5d\xd7\x51\xca\ \x8b\x2b\xbc\x74\xbf\xbb\x66\x7c\xf8\xef\x9d\x57\xfd\xc2\x17\xd0\ \xa2\xf2\x07\xa2\xf5\x97\x62\xa5\xc7\x17\x5e\x5b\x51\xf7\xf4\x9e\ \x92\x05\xdb\x23\x41\x6b\x18\x95\xba\x89\x47\xd3\x20\x10\x45\xd9\ \x3a\xfa\xcc\x00\x77\x46\x52\x0c\x66\x4a\x09\x94\x6d\x66\x79\xfd\ \x06\x42\xb9\x21\x5c\xdb\x42\x4a\x89\xeb\x7a\x49\x26\x27\x18\xe9\ \xda\x8f\xd1\x7b\x50\x2e\x5c\xbf\x43\xcb\x8f\x56\x88\x0b\xef\xec\ \x8a\x69\x91\xa2\x92\xd7\xa3\x8f\x6e\xae\x7f\x64\xc1\xb6\xa0\x1a\ \x6f\x45\x39\x3a\x1e\x6f\x00\x29\x25\xb6\x11\x63\x62\x32\xc9\xb5\ \xd1\x20\x9e\x39\xdb\xa8\x7b\x6c\x33\x25\x25\x51\xa4\x65\x60\x19\ \x59\xa4\xed\x60\x18\x16\x77\x7b\x9a\xe9\xee\x38\x46\x6d\xc5\x1c\ \xd6\xef\xd8\xeb\xf3\x05\xe3\xa4\xa7\x53\x28\x22\xb3\x34\x8f\xd7\ \x57\xe5\xf7\x79\x82\xe9\xa1\x76\x42\x9e\x14\xc2\x9b\x8b\x61\x5a\ \x24\xd2\x3a\xd7\x06\x1d\xd2\x39\x8f\x51\xbd\xfe\x19\xca\xca\x2b\ \xf1\x0a\x07\x23\x9b\xc6\x51\x02\xcb\xb4\x18\x1d\xe8\xa2\xe3\xf4\ \xef\x40\xf9\xf8\xcc\xd3\x5b\xa9\xae\x8a\x20\x93\xed\x4c\x8f\x19\ \xdc\xbc\xf0\x11\xbd\x03\x37\x0f\x69\xca\x75\x3d\x42\xd9\x38\x2e\ \x58\xca\x83\x2d\x2d\xee\x8c\x18\xf4\xa7\xca\xa9\x58\xf1\x05\x56\ \xd6\x2c\x21\xe0\xf7\x22\x2d\x13\x43\x4a\x6c\x57\x23\x3e\xd5\xcf\ \xd5\xd3\xfb\x18\x1f\xe9\x61\xe9\x8a\xc7\xd9\xb0\xbe\x1e\xd7\x9a\ \x22\x11\x6b\x24\x9e\x01\x3d\x91\xc3\xb5\xcb\x2d\x83\xef\x5f\xe1\ \x3d\x0d\xc0\x55\x60\x49\x85\x61\x59\x0c\x8c\x26\xb9\xeb\x3e\xc5\ \xc6\xe7\x76\x92\x17\xd2\x90\xb6\xc4\xd0\x4d\x2c\xdb\xc1\x34\x2c\ \xae\x77\xbc\xc3\x8d\x8f\x5a\x29\x2d\xab\xe1\xa5\x97\xbf\x4d\x24\ \x34\xc4\xcc\xd0\x71\x46\x46\x06\x11\xde\x10\xc1\xf0\x62\xae\xb4\ \x1d\x4c\xef\x6b\xcb\xfc\xea\xf2\x2d\xba\x35\x57\x81\x6d\x3b\x18\ \x52\x92\x8c\x67\x68\xbb\x3c\xca\x86\x2f\x7f\x8a\x82\x70\x90\x6c\ \x26\x83\xe3\x80\x61\x5a\x0c\xf5\x5d\xe0\xea\xd9\x03\xf8\x7d\x41\ \x3e\xbb\x79\x0b\xd5\xb5\xc5\xe8\x63\xe7\xe8\xbf\x13\xc3\xb4\x6c\ \x14\x5e\xfc\x79\x95\x4c\x75\x7f\xc8\xdf\x7a\x6e\xb4\x5d\xbe\xc5\ \x49\x60\x52\xb3\x6d\x17\x4b\xda\x24\x93\x26\x7d\xfd\x53\x64\xc4\ \x5c\xf2\x0b\xa2\x98\xa6\xc4\xb2\x3d\x4c\x0c\x75\xd1\x79\xb1\x81\ \xf8\xf8\x5d\x56\x3f\xbe\x99\x35\xf5\x95\x08\xd9\xc7\x48\x77\x03\ \x99\xac\xc4\xb4\x24\x8e\x23\x09\x86\xcb\x48\xde\x4b\xd0\xf0\x97\ \xb6\x9e\xbd\x2d\xfc\x02\x18\x05\x74\x4d\x3a\x0a\xc3\xb4\x89\xa7\ \x4c\x7a\x6f\xdf\x43\x9b\xb3\x84\x70\x64\x16\x89\xf8\x04\x9d\xe7\ \xff\x48\xec\xfa\x39\x1e\xa9\x78\x84\xcf\x7f\x7d\x37\x05\xc1\x61\ \x12\x03\x87\x89\xc7\x13\x64\x75\x13\xdb\x96\x64\x32\x29\xfc\xa1\ \x42\x84\x98\xcb\xd0\x95\xb7\xf5\xbd\x27\xf5\xdf\x98\x92\xbb\x40\ \x52\x29\xa5\x34\x69\x29\x0c\x43\x12\x4f\x1a\xc4\xee\x19\x2c\x5d\ \x54\x81\x50\x16\xef\x1f\xf8\x31\x01\x9f\x60\xdb\xf6\x97\x29\x2d\ \xcf\x41\x1f\x6e\x62\x2c\x36\x42\x3a\x63\x91\x48\x26\x40\xb9\x68\ \xbe\x20\xbe\xdc\x72\x72\x72\x4b\xe9\x3f\x77\x82\x33\x57\x63\x47\ \x93\x3a\xed\xc0\x94\x52\xca\x06\xd0\x4c\xe9\x92\xd1\x25\x93\xd3\ \x12\x6f\xa0\x90\x39\xa5\x35\x9c\x6a\xda\xc7\x9d\xbe\x5e\x76\x7f\ \xf7\x1b\x94\xe4\xf5\x30\xd4\xd9\x4d\x36\x9b\x41\x08\x0d\xdb\x96\ \x58\x86\x81\x37\x27\x4a\x7e\xfe\xa3\x88\x89\x31\x9a\xdf\xfb\x7d\ \xe6\x50\xfb\xf4\xc9\x8b\xb7\xf9\x35\x70\x0f\x30\xff\xf9\x7e\x34\ \xdd\x52\x08\x5d\x32\x35\x63\x61\x11\xc6\x36\xa6\xe9\xb8\xf4\x01\ \x9b\x9e\x5a\xc5\xe8\xad\x23\x64\xc3\xf9\x48\xdb\xc1\x34\x4d\x5c\ \x57\xc7\xa3\xe5\x90\x17\x5d\x8e\x13\xcf\xd2\xd3\xd6\xe8\xec\x3f\ \xd6\xdb\xfb\xd7\x1e\x0e\x65\x4d\x5a\x80\x7e\x20\xa5\x1e\x28\x19\ \xcd\x30\x5c\x54\x56\x92\xd2\x5d\x24\x7e\xae\x9c\x6f\x60\x41\x75\ \x31\xb3\x82\x23\x44\xc2\x61\x10\x1e\x92\xc9\x38\xae\xf2\x10\x0c\ \x97\xe3\x15\x05\x8c\x76\x7e\xa8\xda\xda\x2f\x8d\xbe\xd9\x6c\x1d\ \x9d\xc9\xd2\x0c\xdc\x06\xc6\xee\xc3\x9d\x07\x1f\xa8\x66\x58\x0a\ \xd7\x90\x38\xca\x4f\x2a\x99\xa0\xb6\x6a\x2e\x0b\x2b\x04\x79\x41\ \x17\xc7\xb1\x71\x1c\x45\x30\x52\x8e\x10\x85\x98\xa3\x03\x9c\x69\ \x69\x48\xfd\xb6\x39\x75\xea\xd6\x18\x7f\x02\x7a\xef\x83\x67\x00\ \x43\x3d\xa4\x1e\x35\x47\x81\xab\x04\xca\x4c\x53\x56\x68\xb1\xac\ \xae\x80\x90\x88\xe1\x0f\x14\x92\x36\x20\xaf\xa8\x0e\x73\x74\x94\ \xc1\xae\x46\xf7\x8d\xc3\xb7\x3a\x4e\xdf\xa4\xc1\x92\x5c\x04\x86\ \x80\x29\x40\xff\xcf\xab\xff\x4d\x10\xf0\x7b\xc9\xc9\xd1\x28\x0c\ \x1a\x2c\x5d\x59\x8d\x9b\xee\x21\x2f\x5a\x8e\xed\x99\x47\x20\x10\ \x22\x76\xb6\x85\x23\xcd\x57\x06\x0e\x9c\x75\x8e\xa6\x4c\x8e\x03\ \x31\x60\x1c\x48\x2b\xa5\xe4\xff\x02\xff\x4b\x10\x9f\x9c\xec\x96\ \xd9\xee\x95\x75\xab\x9f\x2f\x34\xac\xeb\x44\x8a\x4a\x08\xe6\xd4\ \x92\x88\xf5\xd2\x72\xe2\xd4\xf4\xbb\xe7\xb3\xad\xdd\x03\x1c\x05\ \xae\xdd\x8f\x23\x01\x98\x0f\x8b\xe3\xa1\x82\xb7\x9a\xdc\x3f\x57\ \x17\x8f\x8b\x9d\x8b\xed\x8d\x73\x2b\x37\x10\x4e\x0f\xd2\xd1\x74\ \xd0\x7a\xfd\xc8\xc0\xb9\xce\x01\x9a\x4c\xc9\x59\x60\x04\x98\xbe\ \x1f\x87\xfb\x71\xc0\x0f\xce\xfc\xb9\x45\x3c\xff\xd6\xf7\xf2\xae\ \x37\xfe\x74\x91\xfa\xd2\xba\x60\x57\xae\x9f\x3d\xc0\x46\xa0\x06\ \x28\x00\x34\xa5\x14\x9f\x64\xff\x01\x38\xa4\x6e\x5f\x55\x49\x82\ \xf9\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xa5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x37\x49\x44\x41\x54\x48\xc7\xdd\ \x54\x5d\x6f\x12\x41\x14\xed\x4f\xf3\x67\xf8\x53\xf6\xb1\x26\x1a\ \x13\x9f\x9a\x18\xfd\x01\x56\x5f\xfa\x68\x0d\xb5\x88\x50\x68\x69\ \x90\x5d\x0a\xc6\x16\x58\xa0\xb0\x2c\x6c\xf9\xb0\x14\xac\x8d\x0f\ \xb0\x33\xc7\x73\x67\xd5\xfa\x01\x8d\x26\xf0\x50\x1f\x26\xf7\xce\ \xb9\x77\xce\xd9\xbd\x77\xee\xac\xdd\xb9\xbb\x6e\x71\x39\x2b\x5a\ \xd6\x9a\x38\xfb\x6d\x8d\xf5\x58\x88\x97\xc7\x53\xbc\x3d\x05\x1e\ \xa5\x80\x58\x59\xe1\x75\x55\xe1\x7e\x1c\xd8\x3e\x9e\xd1\xd7\xb8\ \x17\x53\x88\x11\x7b\x53\x07\x1e\x26\x80\x4c\x1b\x26\xff\x41\x5c\ \x99\xfc\x44\xe3\xfa\xec\x61\x17\x10\x6e\x23\x90\xf6\x14\xe2\x35\ \x60\xa7\x12\x1d\x96\x44\x39\x28\xfb\x57\x27\x33\xec\xba\x1a\xc9\ \x66\x84\x27\x1a\x92\xab\x29\x3a\x45\xaa\x25\x64\x21\xf6\x68\xb7\ \x3f\x4c\x8d\xdd\x65\x4c\x38\xb2\x3f\x09\xac\xb6\x44\x00\x56\xba\ \xfe\x00\x96\xfc\x47\xd6\x3c\x01\x67\xb3\xa4\x91\x61\x3d\x33\xac\ \xfb\x46\x8a\x35\xad\xce\x90\xac\x2b\x3c\x39\x00\xd2\xcd\x08\x7f\ \x9a\x65\x3f\xdc\xd0\xec\x1f\xef\x03\x29\xf6\x46\xfc\x8d\x3d\x6d\ \x7c\xa7\xf7\xad\x07\xf3\x04\x8a\x03\x21\x09\x91\xf3\xe5\x60\x88\ \x64\x6d\x86\x2c\x6f\x4c\xd6\x8b\xf6\x99\x96\x36\x56\xb0\x03\xfa\ \xe9\x53\x6d\x62\x99\x66\x64\xdf\x05\x40\xe1\x06\x01\xeb\xf6\x35\ \x79\x85\x57\xd5\xfa\x51\xf7\x18\x87\xc3\x09\x14\x4a\xac\xdd\x73\ \x5b\xc3\xe6\xa0\xe4\xbc\x10\x9b\xb6\xc2\xd1\x99\xc4\x80\x17\x0e\ \x50\x64\x3c\xd7\x0a\xf1\x2c\xcf\x46\x06\x1a\xa5\x7e\x84\xdb\x1d\ \x85\xf7\xf4\xb7\x4a\x30\xf9\xc5\x9e\xba\xee\x81\x38\xee\x05\x03\ \x3c\xe0\x30\xf1\x88\x64\xa5\x9e\x46\xa1\xab\x49\x36\x43\xbe\x1d\ \x9a\x98\xed\x93\x84\x02\xb2\x24\x26\x1f\x23\xb8\xec\xc5\xff\x1e\ \x17\x8e\xfa\x18\xbf\x08\x58\xff\xcf\x24\x2f\xf9\xda\x5a\x7f\x23\ \xe0\x78\x9f\x80\x72\x9f\xaf\x28\x9f\xec\x06\x7b\x55\x19\x28\x0e\ \x1a\xe0\x7e\x8c\xf0\x9d\x93\x10\xee\x90\xbd\x09\xf8\xf2\xf2\xa9\ \xae\x0c\x34\x9a\x93\x05\x83\x36\x4f\xc0\xbf\x04\x9a\x24\xae\x91\ \xb0\x71\x4e\x91\x91\x46\x95\x22\xe5\x5e\x08\x8f\x44\x75\xc1\xce\ \x19\x1b\x51\x74\xa8\x4d\x9e\xf7\x0f\x02\xd6\xed\x6b\xf2\x12\xaf\ \xad\xb5\xb0\xee\xfd\x2b\xc0\x67\x1d\x6d\xbe\x98\x67\x9f\x59\xd3\ \x0b\x0e\x5a\x27\xc2\x5a\x23\x45\x5c\x1b\x2b\xfb\x02\xa7\x3e\x60\ \x9f\xba\xbc\x0c\xf9\x56\x84\x05\x97\x7a\x71\x0f\x24\xd0\xbb\xd2\ \xf0\xc7\x0a\x9d\x89\x46\x77\x22\x02\xca\x58\x21\x69\xd3\xf7\xc7\ \x8c\x4f\xa2\x25\xe4\xbf\xfb\xc3\x2f\xb8\x51\x60\x69\x25\xfa\x0a\ \x2b\x85\x35\x7e\xfc\x7e\x4a\xed\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x0c\ \x00\x19\xf2\x3c\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x05\xe2\x59\x27\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x03\ \x00\x00\x7d\xfe\ \x00\x77\ \x00\x69\x00\x6e\ \x00\x03\ \x00\x00\x73\x73\ \x00\x6d\ \x00\x61\x00\x63\ \x00\x0a\ \x02\x6b\x3c\x87\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x33\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x06\xc8\x40\x47\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x72\x00\x65\x00\x64\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x04\x14\x52\xc7\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x6e\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x04\x11\x7b\x87\ \x00\x7a\ \x00\x6f\x00\x6f\x00\x6d\x00\x69\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x07\xc5\x9b\xc7\ \x00\x7a\ \x00\x6f\x00\x6f\x00\x6d\x00\x6f\x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0f\x47\x85\x87\ \x00\x65\ \x00\x78\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x70\x00\x64\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x06\x52\xd9\xe7\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x70\x00\x72\x00\x69\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x04\x8e\xa1\x07\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x09\xc8\x40\xc7\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x75\x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\xba\x29\x27\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x6a\x00\x75\x00\x73\x00\x74\x00\x69\x00\x66\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x03\x30\x79\x47\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x63\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0b\x0e\x42\x07\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x63\x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x68\x0e\x67\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0d\x7e\xa2\x67\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x62\x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x0b\x04\x5d\xe7\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x69\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0f\x5a\x2e\x27\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x75\x00\x6e\x00\x64\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0a\x10\x36\x07\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x63\x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0d\xc9\x3b\xe7\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x70\x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0b\x21\x0f\x87\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x08\x68\x27\x47\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x1e\x00\x02\x00\x00\x00\x04\x00\x00\x00\x03\ \x00\x00\x00\x52\x00\x02\x00\x00\x00\x13\x00\x00\x00\x1a\ \x00\x00\x00\x46\x00\x02\x00\x00\x00\x13\x00\x00\x00\x07\ \x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x95\ \x00\x00\x00\x30\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x19\ \x00\x00\x01\x64\x00\x00\x00\x00\x00\x01\x00\x00\xaa\x12\ \x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\xac\xcd\ \x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x8d\x1c\ \x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x18\ \x00\x00\x01\x28\x00\x00\x00\x00\x00\x01\x00\x00\xa0\x81\ \x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00\xb4\x75\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x9a\xcd\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x83\x19\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x91\xd8\ \x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xd8\x6c\ \x00\x00\x01\x46\x00\x00\x00\x00\x00\x01\x00\x00\xa3\x26\ \x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\xc4\xb0\ \x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\xbd\xa0\ \x00\x00\x01\xaa\x00\x00\x00\x00\x00\x01\x00\x00\xaf\x44\ \x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00\xd1\xea\ \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x00\xb9\x2e\ \x00\x00\x02\x62\x00\x00\x00\x00\x00\x01\x00\x00\xcc\x1c\ \x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x96\xa6\ \x00\x00\x02\x26\x00\x00\x00\x00\x00\x01\x00\x00\xc0\xe1\ \x00\x00\x01\x64\x00\x00\x00\x00\x00\x01\x00\x00\x43\x50\ \x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x48\x3d\ \x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x8f\ \x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x18\xf7\ \x00\x00\x01\x28\x00\x00\x00\x00\x00\x01\x00\x00\x37\xa3\ \x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x53\x7d\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x78\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x12\x1b\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x24\x33\ \x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x7d\x97\ \x00\x00\x01\x46\x00\x00\x00\x00\x00\x01\x00\x00\x3c\x7a\ \x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\x67\xb9\ \x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x5e\x86\ \x00\x00\x01\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x4d\xbd\ \x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00\x75\x1b\ \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x58\x37\ \x00\x00\x02\x62\x00\x00\x00\x00\x00\x01\x00\x00\x6d\xa5\ \x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x2a\xb5\ \x00\x00\x02\x26\x00\x00\x00\x00\x00\x01\x00\x00\x63\x16\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/richtext/textobject/0000755000076500000240000000000012613140041021071 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/textobject/files/0000755000076500000240000000000012613140041022173 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/richtext/textobject/files/heart.svg0000644000076500000240000000744112613140041024025 0ustar philstaff00000000000000 Heart Left-Highlight This is a normal valentines day heart. holiday valentines valentine hash(0x8a091c0) hash(0x8a0916c) signs_and_symbols hash(0x8a091f0) day Jon Phillips Jon Phillips Jon Phillips image/svg+xml en PyQt-gpl-5.5.1/examples/richtext/textobject/textobject.py0000755000076500000240000001144212613140041023623 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QIODevice, QObject, QSizeF from PyQt5.QtGui import QTextCharFormat, QTextFormat, QTextObjectInterface from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) from PyQt5.QtSvg import QSvgRenderer class SvgTextObject(QObject, QTextObjectInterface): def intrinsicSize(self, doc, posInDocument, format): renderer = QSvgRenderer(format.property(Window.SvgData)) size = renderer.defaultSize() if size.height() > 25: size *= 25.0 / size.height() return QSizeF(size) def drawObject(self, painter, rect, doc, posInDocument, format): renderer = QSvgRenderer(format.property(Window.SvgData)) renderer.render(painter, rect) class Window(QWidget): SvgTextFormat = QTextFormat.UserObject + 1 SvgData = 1 def __init__(self): super(Window, self).__init__() self.setupGui() self.setupTextObject() self.setWindowTitle("Text Object Example") def insertTextObject(self): fileName = self.fileNameLineEdit.text() file = QFile(fileName) if not file.open(QIODevice.ReadOnly): QMessageBox.warning(self, "Error Opening File", "Could not open '%s'" % fileName) svgData = file.readAll() svgCharFormat = QTextCharFormat() svgCharFormat.setObjectType(Window.SvgTextFormat) svgCharFormat.setProperty(Window.SvgData, svgData) try: # Python v2. orc = unichr(0xfffc) except NameError: # Python v3. orc = chr(0xfffc) cursor = self.textEdit.textCursor() cursor.insertText(orc, svgCharFormat) self.textEdit.setTextCursor(cursor) def setupTextObject(self): svgInterface = SvgTextObject(self) self.textEdit.document().documentLayout().registerHandler(Window.SvgTextFormat, svgInterface) def setupGui(self): fileNameLabel = QLabel("Svg File Name:") self.fileNameLineEdit = QLineEdit() insertTextObjectButton = QPushButton("Insert Image") self.fileNameLineEdit.setText('./files/heart.svg') insertTextObjectButton.clicked.connect(self.insertTextObject) bottomLayout = QHBoxLayout() bottomLayout.addWidget(fileNameLabel) bottomLayout.addWidget(self.fileNameLineEdit) bottomLayout.addWidget(insertTextObjectButton) self.textEdit = QTextEdit() mainLayout = QVBoxLayout() mainLayout.addWidget(self.textEdit) mainLayout.addLayout(bottomLayout) self.setLayout(mainLayout) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/sql/0000755000076500000240000000000012613140041015663 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/sql/cachedtable.py0000755000076500000240000001013012613140041020452 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QHBoxLayout, QMessageBox, QPushButton, QTableView) from PyQt5.QtSql import QSqlTableModel import connection class TableEditor(QDialog): def __init__(self, tableName, parent=None): super(TableEditor, self).__init__(parent) self.model = QSqlTableModel(self) self.model.setTable(tableName) self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.model.select() self.model.setHeaderData(0, Qt.Horizontal, "ID") self.model.setHeaderData(1, Qt.Horizontal, "First name") self.model.setHeaderData(2, Qt.Horizontal, "Last name") view = QTableView() view.setModel(self.model) submitButton = QPushButton("Submit") submitButton.setDefault(True) revertButton = QPushButton("&Revert") quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox(Qt.Vertical) buttonBox.addButton(submitButton, QDialogButtonBox.ActionRole) buttonBox.addButton(revertButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) submitButton.clicked.connect(self.submit) revertButton.clicked.connect(self.model.revertAll) quitButton.clicked.connect(self.close) mainLayout = QHBoxLayout() mainLayout.addWidget(view) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Cached Table") def submit(self): self.model.database().transaction() if self.model.submitAll(): self.model.database().commit() else: self.model.database().rollback() QMessageBox.warning(self, "Cached Table", "The database reported an error: %s" % self.model.lastError().text()) if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) editor = TableEditor('person') editor.show() sys.exit(editor.exec_()) PyQt-gpl-5.5.1/examples/sql/connection.py0000644000076500000240000001357312613140041020405 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import QMessageBox from PyQt5.QtSql import QSqlDatabase, QSqlQuery def createConnection(): db = QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName(':memory:') if not db.open(): QMessageBox.critical(None, "Cannot open database", "Unable to establish a database connection.\n" "This example needs SQLite support. Please read the Qt SQL " "driver documentation for information how to build it.\n\n" "Click Cancel to exit.", QMessageBox.Cancel) return False query = QSqlQuery() query.exec_("create table person(id int primary key, " "firstname varchar(20), lastname varchar(20))") query.exec_("insert into person values(101, 'Danny', 'Young')") query.exec_("insert into person values(102, 'Christine', 'Holand')") query.exec_("insert into person values(103, 'Lars', 'Gordon')") query.exec_("insert into person values(104, 'Roberto', 'Robitaille')") query.exec_("insert into person values(105, 'Maria', 'Papadopoulos')") query.exec_("create table offices (id int primary key," "imagefile int," "location varchar(20)," "country varchar(20)," "description varchar(100))"); query.exec_("insert into offices " "values(0, 0, 'Oslo', 'Norway'," "'Oslo is home to more than 500 000 citizens and has a " "lot to offer.It has been called \"The city with the big " "heart\" and this is a nickname we are happy to live up to.')") query.exec_("insert into offices " "values(1, 1, 'Brisbane', 'Australia'," "'Brisbane is the capital of Queensland, the Sunshine State, " "where it is beautiful one day, perfect the next. " "Brisbane is Australia''s 3rd largest city, being home " "to almost 2 million people.')") query.exec_("insert into offices " "values(2, 2, 'Redwood City', 'US'," "'You find Redwood City in the heart of the Bay Area " "just north of Silicon Valley. The largest nearby city is " "San Jose which is the third largest city in California " "and the 10th largest in the US.')") query.exec_("insert into offices " "values(3, 3, 'Berlin', 'Germany'," "'Berlin, the capital of Germany is dynamic, cosmopolitan " "and creative, allowing for every kind of lifestyle. " "East meets West in the metropolis at the heart of a " "changing Europe.')") query.exec_("insert into offices " "values(4, 4, 'Munich', 'Germany'," "'Several technology companies are represented in Munich, " "and the city is often called the \"Bavarian Silicon Valley\". " "The exciting city is also filled with culture, " "art and music. ')") query.exec_("insert into offices " "values(5, 5, 'Beijing', 'China'," "'Beijing as a capital city has more than 3000 years of " "history. Today the city counts 12 million citizens, and " "is the political, economic and cultural centre of China.')") query.exec_("create table images (locationid int, file varchar(20))") query.exec_("insert into images values(0, 'images/oslo.png')") query.exec_("insert into images values(1, 'images/brisbane.png')") query.exec_("insert into images values(2, 'images/redwood.png')") query.exec_("insert into images values(3, 'images/berlin.png')") query.exec_("insert into images values(4, 'images/munich.png')") query.exec_("insert into images values(5, 'images/beijing.png')") return True PyQt-gpl-5.5.1/examples/sql/querymodel.py0000755000076500000240000001174412613140041020435 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtSql import QSqlQuery, QSqlQueryModel import connection class CustomSqlModel(QSqlQueryModel): def data(self, index, role): value = super(CustomSqlModel, self).data(index, role) if value is not None and role == Qt.DisplayRole: if index.column() == 0: return '#%d' % value elif index.column() == 2: return value.upper() if role == Qt.TextColorRole and index.column() == 1: return QColor(Qt.blue) return value class EditableSqlModel(QSqlQueryModel): def flags(self, index): flags = super(EditableSqlModel, self).flags(index) if index.column() in (1, 2): flags |= Qt.ItemIsEditable return flags def setData(self, index, value, role): if index.column() not in (1, 2): return False primaryKeyIndex = self.index(index.row(), 0) id = self.data(primaryKeyIndex) self.clear() if index.column() == 1: ok = self.setFirstName(id, value) else: ok = self.setLastName(id, value) self.refresh() return ok def refresh(self): self.setQuery('select * from person') self.setHeaderData(0, Qt.Horizontal, "ID") self.setHeaderData(1, Qt.Horizontal, "First name") self.setHeaderData(2, Qt.Horizontal, "Last name") def setFirstName(self, personId, firstName): query = QSqlQuery() query.prepare('update person set firstname = ? where id = ?') query.addBindValue(firstName) query.addBindValue(personId) return query.exec_() def setLastName(self, personId, lastName): query = QSqlQuery() query.prepare('update person set lastname = ? where id = ?') query.addBindValue(lastName) query.addBindValue(personId) return query.exec_() def initializeModel(model): model.setQuery('select * from person') model.setHeaderData(0, Qt.Horizontal, "ID") model.setHeaderData(1, Qt.Horizontal, "First name") model.setHeaderData(2, Qt.Horizontal, "Last name") offset = 0 views = [] def createView(title, model): global offset, views view = QTableView() views.append(view) view.setModel(model) view.setWindowTitle(title) view.move(100 + offset, 100 + offset) offset += 20 view.show() if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) plainModel = QSqlQueryModel() editableModel = EditableSqlModel() customModel = CustomSqlModel() initializeModel(plainModel) initializeModel(editableModel) initializeModel(customModel) createView("Plain Query Model", plainModel) createView("Editable Query Model", editableModel) createView("Custom Query Model", customModel) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/sql/README0000644000076500000240000000153512613140041016547 0ustar philstaff00000000000000PyQt provides extensive database interoperability, with support for products from both open source and proprietary vendors. SQL support is integrated with PyQt's model/view architecture, making it easier to provide GUI integration for your database applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/sql/relationaltablemodel.py0000755000076500000240000001001612613140041022421 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtSql import (QSqlQuery, QSqlRelation, QSqlRelationalDelegate, QSqlRelationalTableModel, QSqlTableModel) import connection def initializeModel(model): model.setTable('employee') model.setEditStrategy(QSqlTableModel.OnManualSubmit) model.setRelation(2, QSqlRelation('city', 'id', 'name')) model.setRelation(3, QSqlRelation('country', 'id', 'name')) model.setHeaderData(0, Qt.Horizontal, "ID") model.setHeaderData(1, Qt.Horizontal, "Name") model.setHeaderData(2, Qt.Horizontal, "City") model.setHeaderData(3, Qt.Horizontal, "Country") model.select() def createView(title, model): view = QTableView() view.setModel(model) view.setItemDelegate(QSqlRelationalDelegate(view)) view.setWindowTitle(title) return view def createRelationalTables(): query = QSqlQuery() query.exec_("create table employee(id int, 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, 41)") 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(41, 'USA')") query.exec_("insert into country values(47, 'Norway')") query.exec_("insert into country values(49, 'Germany')") if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) createRelationalTables() model = QSqlRelationalTableModel() initializeModel(model) view = createView("Relational Table Model", model) view.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/sql/tablemodel.py0000755000076500000240000000575112613140041020360 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtSql import QSqlTableModel import connection def initializeModel(model): model.setTable('person') model.setEditStrategy(QSqlTableModel.OnManualSubmit) model.select() model.setHeaderData(0, Qt.Horizontal, "ID") model.setHeaderData(1, Qt.Horizontal, "First name") model.setHeaderData(2, Qt.Horizontal, "Last name") def createView(title, model): view = QTableView() view.setModel(model) view.setWindowTitle(title) return view if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) model = QSqlTableModel() initializeModel(model) view1 = createView("Table Model (View 1)", model) view2 = createView("Table Model (View 2)", model) view1.show() view2.move(view1.x() + view1.width() + 20, view1.y()) view2.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/threads/0000755000076500000240000000000012613140041016516 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/threads/mandelbrot.py0000755000076500000240000002764112613140041021234 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (pyqtSignal, QMutex, QMutexLocker, QPoint, QSize, Qt, QThread, QWaitCondition) from PyQt5.QtGui import QColor, QImage, QPainter, QPixmap, qRgb from PyQt5.QtWidgets import QApplication, QWidget DefaultCenterX = -0.647011 DefaultCenterY = -0.0395159 DefaultScale = 0.00403897 ZoomInFactor = 0.8 ZoomOutFactor = 1 / ZoomInFactor ScrollStep = 20 class RenderThread(QThread): ColormapSize = 512 renderedImage = pyqtSignal(QImage, float) def __init__(self, parent=None): super(RenderThread, self).__init__(parent) self.mutex = QMutex() self.condition = QWaitCondition() self.centerX = 0.0 self.centerY = 0.0 self.scaleFactor = 0.0 self.resultSize = QSize() self.colormap = [] self.restart = False self.abort = False for i in range(RenderThread.ColormapSize): self.colormap.append(self.rgbFromWaveLength(380.0 + (i * 400.0 / RenderThread.ColormapSize))) def __del__(self): self.mutex.lock() self.abort = True self.condition.wakeOne() self.mutex.unlock() self.wait() def render(self, centerX, centerY, scaleFactor, resultSize): locker = QMutexLocker(self.mutex) self.centerX = centerX self.centerY = centerY self.scaleFactor = scaleFactor self.resultSize = resultSize if not self.isRunning(): self.start(QThread.LowPriority) else: self.restart = True self.condition.wakeOne() def run(self): while True: self.mutex.lock() resultSize = self.resultSize scaleFactor = self.scaleFactor centerX = self.centerX centerY = self.centerY self.mutex.unlock() halfWidth = resultSize.width() // 2 halfHeight = resultSize.height() // 2 image = QImage(resultSize, QImage.Format_RGB32) NumPasses = 8 curpass = 0 while curpass < NumPasses: MaxIterations = (1 << (2 * curpass + 6)) + 32 Limit = 4 allBlack = True for y in range(-halfHeight, halfHeight): if self.restart: break if self.abort: return ay = 1j * (centerY + (y * scaleFactor)) for x in range(-halfWidth, halfWidth): c0 = centerX + (x * scaleFactor) + ay c = c0 numIterations = 0 while numIterations < MaxIterations: numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break if numIterations < MaxIterations: image.setPixel(x + halfWidth, y + halfHeight, self.colormap[numIterations % RenderThread.ColormapSize]) allBlack = False else: image.setPixel(x + halfWidth, y + halfHeight, qRgb(0, 0, 0)) if allBlack and curpass == 0: curpass = 4 else: if not self.restart: self.renderedImage.emit(image, scaleFactor) curpass += 1 self.mutex.lock() if not self.restart: self.condition.wait(self.mutex) self.restart = False self.mutex.unlock() def rgbFromWaveLength(self, wave): r = 0.0 g = 0.0 b = 0.0 if wave >= 380.0 and wave <= 440.0: r = -1.0 * (wave - 440.0) / (440.0 - 380.0) b = 1.0 elif wave >= 440.0 and wave <= 490.0: g = (wave - 440.0) / (490.0 - 440.0) b = 1.0 elif wave >= 490.0 and wave <= 510.0: g = 1.0 b = -1.0 * (wave - 510.0) / (510.0 - 490.0) elif wave >= 510.0 and wave <= 580.0: r = (wave - 510.0) / (580.0 - 510.0) g = 1.0 elif wave >= 580.0 and wave <= 645.0: r = 1.0 g = -1.0 * (wave - 645.0) / (645.0 - 580.0) elif wave >= 645.0 and wave <= 780.0: r = 1.0 s = 1.0 if wave > 700.0: s = 0.3 + 0.7 * (780.0 - wave) / (780.0 - 700.0) elif wave < 420.0: s = 0.3 + 0.7 * (wave - 380.0) / (420.0 - 380.0) r = pow(r * s, 0.8) g = pow(g * s, 0.8) b = pow(b * s, 0.8) return qRgb(r*255, g*255, b*255) class MandelbrotWidget(QWidget): def __init__(self, parent=None): super(MandelbrotWidget, self).__init__(parent) self.thread = RenderThread() self.pixmap = QPixmap() self.pixmapOffset = QPoint() self.lastDragPos = QPoint() self.centerX = DefaultCenterX self.centerY = DefaultCenterY self.pixmapScale = DefaultScale self.curScale = DefaultScale self.thread.renderedImage.connect(self.updatePixmap) self.setWindowTitle("Mandelbrot") self.setCursor(Qt.CrossCursor) self.resize(550, 400) def paintEvent(self, event): painter = QPainter(self) 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.curScale == self.pixmapScale: painter.drawPixmap(self.pixmapOffset, self.pixmap) else: scaleFactor = self.pixmapScale / self.curScale newWidth = int(self.pixmap.width() * scaleFactor) newHeight = int(self.pixmap.height() * scaleFactor) newX = self.pixmapOffset.x() + (self.pixmap.width() - newWidth) / 2 newY = self.pixmapOffset.y() + (self.pixmap.height() - newHeight) / 2 painter.save() painter.translate(newX, newY) painter.scale(scaleFactor, scaleFactor) exposed, _ = painter.matrix().inverted() exposed = exposed.mapRect(self.rect()).adjusted(-1, -1, 1, 1) painter.drawPixmap(exposed, self.pixmap, exposed) painter.restore() text = "Use mouse wheel or the '+' and '-' keys to zoom. Press and " \ "hold left mouse button to scroll." metrics = painter.fontMetrics() textWidth = metrics.width(text) painter.setPen(Qt.NoPen) painter.setBrush(QColor(0, 0, 0, 127)) painter.drawRect((self.width() - textWidth) / 2 - 5, 0, textWidth + 10, metrics.lineSpacing() + 5) painter.setPen(Qt.white) painter.drawText((self.width() - textWidth) / 2, metrics.leading() + metrics.ascent(), text) def resizeEvent(self, event): self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) def keyPressEvent(self, event): if event.key() == Qt.Key_Plus: self.zoom(ZoomInFactor) elif event.key() == Qt.Key_Minus: self.zoom(ZoomOutFactor) elif event.key() == Qt.Key_Left: self.scroll(-ScrollStep, 0) elif event.key() == Qt.Key_Right: self.scroll(+ScrollStep, 0) elif event.key() == Qt.Key_Down: self.scroll(0, -ScrollStep) elif event.key() == Qt.Key_Up: self.scroll(0, +ScrollStep) else: super(MandelbrotWidget, self).keyPressEvent(event) def wheelEvent(self, event): numDegrees = event.angleDelta().y() / 8 numSteps = numDegrees / 15.0 self.zoom(pow(ZoomInFactor, numSteps)) def mousePressEvent(self, event): if event.buttons() == Qt.LeftButton: self.lastDragPos = QPoint(event.pos()) def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: self.pixmapOffset += event.pos() - self.lastDragPos self.lastDragPos = QPoint(event.pos()) self.update() def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton: self.pixmapOffset += event.pos() - self.lastDragPos self.lastDragPos = QPoint() deltaX = (self.width() - self.pixmap.width()) / 2 - self.pixmapOffset.x() deltaY = (self.height() - self.pixmap.height()) / 2 - self.pixmapOffset.y() self.scroll(deltaX, deltaY) def updatePixmap(self, image, scaleFactor): if not self.lastDragPos.isNull(): return self.pixmap = QPixmap.fromImage(image) self.pixmapOffset = QPoint() self.lastDragPosition = QPoint() self.pixmapScale = scaleFactor self.update() def zoom(self, zoomFactor): self.curScale *= zoomFactor self.update() self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) def scroll(self, deltaX, deltaY): self.centerX += deltaX * self.curScale self.centerY += deltaY * self.curScale self.update() self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) if __name__ == '__main__': import sys app = QApplication(sys.argv) widget = MandelbrotWidget() widget.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/threads/README0000644000076500000240000000155112613140041017400 0ustar philstaff00000000000000PyQt makes it easier than ever to write multithreaded applications. More classes have been made usable from non-GUI threads, and the signals and slots mechanism can now be used to communicate between threads. Additionally, it is now possible to move objects between threads. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/threads/semaphores.py0000755000076500000240000000554612613140041021253 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 import random from PyQt5.QtCore import QCoreApplication, QSemaphore, QThread DataSize = 100000 BufferSize = 8192 buffer = list(range(BufferSize)) freeBytes = QSemaphore(BufferSize) usedBytes = QSemaphore() class Producer(QThread): def run(self): for i in range(DataSize): freeBytes.acquire() buffer[i % BufferSize] = "ACGT"[random.randint(0, 3)] usedBytes.release() class Consumer(QThread): def run(self): for i in range(DataSize): usedBytes.acquire() sys.stderr.write(buffer[i % BufferSize]) freeBytes.release() sys.stderr.write("\n") if __name__ == '__main__': app = QCoreApplication(sys.argv) producer = Producer() consumer = Consumer() producer.start() consumer.start() producer.wait() consumer.wait() PyQt-gpl-5.5.1/examples/threads/waitconditions.py0000755000076500000240000000656412613140041022144 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 import random from PyQt5.QtCore import QCoreApplication, QMutex, QThread, QWaitCondition DataSize = 100000 BufferSize = 8192 buffer = list(range(BufferSize)) bufferNotEmpty = QWaitCondition() bufferNotFull = QWaitCondition() mutex = QMutex() numUsedBytes = 0 class Producer(QThread): def run(self): global numUsedBytes for i in range(DataSize): mutex.lock() if numUsedBytes == BufferSize: bufferNotFull.wait(mutex) mutex.unlock() buffer[i % BufferSize] = "ACGT"[random.randint(0, 3)] mutex.lock() numUsedBytes += 1 bufferNotEmpty.wakeAll() mutex.unlock() class Consumer(QThread): def run(self): global numUsedBytes for i in range(DataSize): mutex.lock() if numUsedBytes == 0: bufferNotEmpty.wait(mutex) mutex.unlock() sys.stderr.write(buffer[i % BufferSize]) mutex.lock() numUsedBytes -= 1 bufferNotFull.wakeAll() mutex.unlock() sys.stderr.write("\n") if __name__ == '__main__': app = QCoreApplication(sys.argv) producer = Producer() consumer = Consumer() producer.start() consumer.start() producer.wait() consumer.wait() PyQt-gpl-5.5.1/examples/tools/0000755000076500000240000000000012613140041016224 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/codecs/0000755000076500000240000000000012613140041017464 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/codecs/codecs.py0000755000076500000240000002073112613140041021304 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QRegExp, QTextCodec, QTextStream from PyQt5.QtWidgets import (QAction, QApplication, QComboBox, QDialog, QDialogButtonBox, QFileDialog, QGridLayout, QLabel, QMainWindow, QMenu, QMessageBox, QTextEdit) def codec_name(codec): try: # Python v3. name = str(codec.name(), encoding='ascii') except TypeError: # Python v2. name = str(codec.name()) return name class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.textEdit = QTextEdit() self.textEdit.setLineWrapMode(QTextEdit.NoWrap) self.setCentralWidget(self.textEdit) self.codecs = [] self.findCodecs() self.previewForm = PreviewForm(self) self.previewForm.setCodecList(self.codecs) self.saveAsActs = [] self.createActions() self.createMenus() self.setWindowTitle("Codecs") self.resize(500, 400) def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: inFile = QFile(fileName) if not inFile.open(QFile.ReadOnly): QMessageBox.warning(self, "Codecs", "Cannot read file %s:\n%s" % (fileName, inFile.errorString())) return data = inFile.readAll() self.previewForm.setEncodedData(data) if self.previewForm.exec_(): self.textEdit.setPlainText(self.previewForm.decodedString()) def save(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: outFile = QFile(fileName) if not outFile.open(QFile.WriteOnly|QFile.Text): QMessageBox.warning(self, "Codecs", "Cannot write file %s:\n%s" % (fileName, outFile.errorString())) return action = self.sender() codecName = action.data() out = QTextStream(outFile) out.setCodec(codecName) out << self.textEdit.toPlainText() def about(self): QMessageBox.about(self, "About Codecs", "The Codecs example demonstrates how to read and " "write files using various encodings.") def aboutToShowSaveAsMenu(self): currentText = self.textEdit.toPlainText() for action in self.saveAsActs: codecName = action.data() codec = QTextCodec.codecForName(codecName) action.setVisible(codec and codec.canEncode(currentText)) def findCodecs(self): codecMap = [] iso8859RegExp = QRegExp('ISO[- ]8859-([0-9]+).*') for mib in QTextCodec.availableMibs(): codec = QTextCodec.codecForMib(mib) sortKey = codec_name(codec).upper() rank = 0 if sortKey.startswith('UTF-8'): rank = 1 elif sortKey.startswith('UTF-16'): rank = 2 elif iso8859RegExp.exactMatch(sortKey): if len(iso8859RegExp.cap(1)) == 1: rank = 3 else: rank = 4 else: rank = 5 codecMap.append((str(rank) + sortKey, codec)) codecMap.sort() self.codecs = [item[-1] for item in codecMap] def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) for codec in self.codecs: name = codec_name(codec) action = QAction(name + '...', self, triggered=self.save) action.setData(name) self.saveAsActs.append(action) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.saveAsMenu = QMenu("&Save As", self) for action in self.saveAsActs: self.saveAsMenu.addAction(action) self.saveAsMenu.aboutToShow.connect(self.aboutToShowSaveAsMenu) self.fileMenu = QMenu("&File", self) self.fileMenu.addAction(self.openAct) self.fileMenu.addMenu(self.saveAsMenu) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.helpMenu = QMenu("&Help", self) self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) self.menuBar().addMenu(self.fileMenu) self.menuBar().addSeparator() self.menuBar().addMenu(self.helpMenu) class PreviewForm(QDialog): def __init__(self, parent): super(PreviewForm, self).__init__(parent) self.encodingComboBox = QComboBox() encodingLabel = QLabel("&Encoding:") encodingLabel.setBuddy(self.encodingComboBox) self.textEdit = QTextEdit() self.textEdit.setLineWrapMode(QTextEdit.NoWrap) self.textEdit.setReadOnly(True) buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.encodingComboBox.activated.connect(self.updateTextEdit) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QGridLayout() mainLayout.addWidget(encodingLabel, 0, 0) mainLayout.addWidget(self.encodingComboBox, 0, 1) mainLayout.addWidget(self.textEdit, 1, 0, 1, 2) mainLayout.addWidget(buttonBox, 2, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Choose Encoding") self.resize(400, 300) def setCodecList(self, codecs): self.encodingComboBox.clear() for codec in codecs: self.encodingComboBox.addItem(codec_name(codec), codec.mibEnum()) def setEncodedData(self, data): self.encodedData = data self.updateTextEdit() def decodedString(self): return self.decodedStr def updateTextEdit(self): mib = self.encodingComboBox.itemData(self.encodingComboBox.currentIndex()) codec = QTextCodec.codecForMib(mib) data = QTextStream(self.encodedData) data.setAutoDetectUnicode(False) data.setCodec(codec) self.decodedStr = data.readAll() self.textEdit.setPlainText(self.decodedStr) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/0000755000076500000240000000000012613140041022110 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/iso-8859-1.txt0000644000076500000240000000037412613140041024220 0ustar philstaff00000000000000Paulo Coelho: O Gênio e as Rosas Anna Hallström, Urban Östberg: Svår svenska Darrell Huff: How to Lie with Statistics Franz Kafka: Das Schloß Walter Moers: Die 13½ Leben des Käpt'n Blaubär Dag Solstad: Forsøk på å beskrive det ugjennomtrengelige PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/iso-8859-15.txt0000644000076500000240000000052112613140041024277 0ustar philstaff00000000000000Paulo Coelho: O Gênio e as Rosas Jean-Pierre Coffe: À table en famille avec 15 ¤ par jour Anna Hallström, Urban Östberg: Svår svenska Darrell Huff: How to Lie with Statistics Franz Kafka: Das Schloß Helena Lehecková: T¨ekkiä suomalaisille Arthur Rimbaud: ¼uvres complètes Dag Solstad: Forsøk på å beskrive det ugjennomtrengelige PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/utf-16.txt0000644000076500000240000000024212613140041023671 0ustar philstaff00000000000000ÿþSpråk: Norsk “»ÎÃñ: •»»·½¹º¬ /7K:: CAA:89 ¸Å´Å : \Õm­´Å ŠžŠ: åe,gžŠ Langage : Français PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/utf-16be.txt0000644000076500000240000000024012613140041024176 0ustar philstaff00000000000000Språk: Norsk “»ÎÃñ: •»»·½¹º¬ /7K::  CAA:89 ŸŴ : Õ\­mÅ´ ŠŠž: eåg,Šž Langage : Français PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/utf-16le.txt0000644000076500000240000000024012613140041024210 0ustar philstaff00000000000000Språk: Norsk “»ÎÃñ: •»»·½¹º¬ /7K:: CAA:89 ¸Å´Å : \Õm­´Å ŠžŠ: åe,gžŠ Langage : Français PyQt-gpl-5.5.1/examples/tools/codecs/encodedfiles/utf-8.txt0000644000076500000240000000017712613140041023621 0ustar philstaff00000000000000SprÃ¥k: Norsk Γλώσσα: Ελληνικά Язык: РуÑÑкий 언어 : 한국어 言語: 日本語 Langage : Français PyQt-gpl-5.5.1/examples/tools/customcompleter/0000755000076500000240000000000012613140041021451 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/customcompleter/customcompleter.py0000644000076500000240000001673312613140041025262 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2012 Digia Plc ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QStringListModel, Qt from PyQt5.QtGui import QCursor, QKeySequence, QTextCursor from PyQt5.QtWidgets import (QAction, QApplication, QCompleter, QMainWindow, QMessageBox, QTextEdit) import customcompleter_rc class TextEdit(QTextEdit): def __init__(self, parent=None): super(TextEdit, self).__init__(parent) self._completer = None self.setPlainText( "This TextEdit provides autocompletions for words that have " "more than 3 characters. You can trigger autocompletion " "using %s" % QKeySequence("Ctrl+E").toString( QKeySequence.NativeText)) def setCompleter(self, c): if self._completer is not None: self._completer.activated.disconnect() self._completer = c c.setWidget(self) c.setCompletionMode(QCompleter.PopupCompletion) c.setCaseSensitivity(Qt.CaseInsensitive) c.activated.connect(self.insertCompletion) def completer(self): return self._completer def insertCompletion(self, completion): if self._completer.widget() is not self: return tc = self.textCursor() extra = len(completion) - len(self._completer.completionPrefix()) tc.movePosition(QTextCursor.Left) tc.movePosition(QTextCursor.EndOfWord) tc.insertText(completion[-extra:]) self.setTextCursor(tc) def textUnderCursor(self): tc = self.textCursor() tc.select(QTextCursor.WordUnderCursor) return tc.selectedText() def focusInEvent(self, e): if self._completer is not None: self._completer.setWidget(self) super(TextEdit, self).focusInEvent(e) def keyPressEvent(self, e): if self._completer is not None and self._completer.popup().isVisible(): # The following keys are forwarded by the completer to the widget. if e.key() in (Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab, Qt.Key_Backtab): e.ignore() # Let the completer do default behavior. return isShortcut = ((e.modifiers() & Qt.ControlModifier) != 0 and e.key() == Qt.Key_E) if self._completer is None or not isShortcut: # Do not process the shortcut when we have a completer. super(TextEdit, self).keyPressEvent(e) ctrlOrShift = e.modifiers() & (Qt.ControlModifier | Qt.ShiftModifier) if self._completer is None or (ctrlOrShift and len(e.text()) == 0): return eow = "~!@#$%^&*()_+{}|:\"<>?,./;'[]\\-=" hasModifier = (e.modifiers() != Qt.NoModifier) and not ctrlOrShift completionPrefix = self.textUnderCursor() if not isShortcut and (hasModifier or len(e.text()) == 0 or len(completionPrefix) < 3 or e.text()[-1] in eow): self._completer.popup().hide() return if completionPrefix != self._completer.completionPrefix(): self._completer.setCompletionPrefix(completionPrefix) self._completer.popup().setCurrentIndex( self._completer.completionModel().index(0, 0)) cr = self.cursorRect() cr.setWidth(self._completer.popup().sizeHintForColumn(0) + self._completer.popup().verticalScrollBar().sizeHint().width()) self._completer.complete(cr) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.createMenu() self.completingTextEdit = TextEdit() self.completer = QCompleter(self) self.completer.setModel(self.modelFromFile(':/resources/wordlist.txt')) self.completer.setModelSorting(QCompleter.CaseInsensitivelySortedModel) self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setWrapAround(False) self.completingTextEdit.setCompleter(self.completer) self.setCentralWidget(self.completingTextEdit) self.resize(500, 300) self.setWindowTitle("Completer") def createMenu(self): exitAction = QAction("Exit", self) aboutAct = QAction("About", self) aboutQtAct = QAction("About Qt", self) exitAction.triggered.connect(QApplication.instance().quit) aboutAct.triggered.connect(self.about) aboutQtAct.triggered.connect(QApplication.instance().aboutQt) fileMenu = self.menuBar().addMenu("File") fileMenu.addAction(exitAction) helpMenu = self.menuBar().addMenu("About") helpMenu.addAction(aboutAct) helpMenu.addAction(aboutQtAct) def modelFromFile(self, fileName): f = QFile(fileName) if not f.open(QFile.ReadOnly): return QStringListModel(self.completer) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) words = [] while not f.atEnd(): line = f.readLine().trimmed() if line.length() != 0: try: line = str(line, encoding='ascii') except TypeError: line = str(line) words.append(line) QApplication.restoreOverrideCursor() return QStringListModel(words, self.completer) def about(self): QMessageBox.about(self, "About", "This example demonstrates the different features of the " "QCompleter class.") if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tools/customcompleter/customcompleter.qrc0000644000076500000240000000016412613140041025406 0ustar philstaff00000000000000 resources/wordlist.txt PyQt-gpl-5.5.1/examples/tools/customcompleter/customcompleter_rc.py0000644000076500000240000013322012613140041025735 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 15:36:48 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x2b\x52\ \x41\ \x34\x0a\x61\x62\x6c\x65\x0a\x61\x62\x6f\x75\x74\x0a\x61\x62\x6f\ \x76\x65\x0a\x61\x62\x73\x65\x6e\x63\x65\x0a\x61\x62\x73\x6f\x6c\ \x75\x74\x65\x6c\x79\x0a\x61\x62\x73\x74\x72\x61\x63\x74\x0a\x61\ \x63\x63\x65\x73\x73\x0a\x61\x63\x63\x6f\x72\x64\x69\x6e\x67\x0a\ \x61\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\x64\x0a\x61\x63\x68\x69\ \x65\x76\x65\x0a\x61\x63\x68\x69\x65\x76\x69\x6e\x67\x0a\x61\x63\ \x74\x69\x76\x69\x74\x79\x0a\x61\x63\x74\x73\x0a\x61\x63\x74\x75\ \x61\x6c\x0a\x61\x63\x74\x75\x61\x6c\x6c\x79\x0a\x61\x64\x64\x0a\ \x61\x64\x64\x65\x64\x0a\x61\x64\x64\x69\x6e\x67\x0a\x61\x64\x64\ \x69\x74\x69\x6f\x6e\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\ \x6c\x79\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x73\x0a\x61\x64\x64\ \x72\x65\x73\x73\x65\x73\x0a\x61\x64\x6a\x75\x73\x74\x0a\x61\x64\ \x6a\x75\x73\x74\x6d\x65\x6e\x74\x73\x0a\x61\x64\x76\x61\x6e\x63\ \x65\x64\x0a\x61\x64\x76\x69\x63\x65\x0a\x61\x66\x74\x65\x72\x0a\ \x61\x66\x74\x65\x72\x77\x61\x72\x64\x73\x0a\x61\x67\x61\x69\x6e\ \x0a\x61\x67\x65\x6e\x64\x61\x0a\x61\x69\x6d\x0a\x61\x6c\x67\x6f\ \x72\x69\x74\x68\x6d\x0a\x61\x6c\x6c\x0a\x61\x6c\x6c\x6f\x63\x61\ \x74\x65\x64\x0a\x61\x6c\x6c\x6f\x77\x0a\x61\x6c\x6c\x6f\x77\x65\ \x64\x0a\x61\x6c\x6c\x6f\x77\x69\x6e\x67\x0a\x61\x6c\x6c\x6f\x77\ \x73\x0a\x61\x6c\x6f\x6e\x67\x0a\x61\x6c\x70\x68\x61\x0a\x61\x6c\ \x72\x65\x61\x64\x79\x0a\x61\x6c\x73\x6f\x0a\x61\x6c\x74\x65\x72\ \x6e\x61\x74\x69\x76\x65\x0a\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\ \x76\x65\x6c\x79\x0a\x61\x6c\x74\x68\x6f\x75\x67\x68\x0a\x41\x6d\ \x65\x72\x69\x63\x61\x6e\x0a\x61\x6e\x0a\x61\x6e\x64\x0a\x61\x6e\ \x6e\x6f\x75\x6e\x63\x65\x64\x0a\x61\x6e\x6e\x6f\x79\x0a\x61\x6e\ \x6f\x74\x68\x65\x72\x0a\x61\x6e\x73\x77\x65\x72\x0a\x61\x6e\x73\ \x77\x65\x72\x73\x0a\x61\x6e\x79\x0a\x61\x6e\x79\x74\x68\x69\x6e\ \x67\x0a\x61\x6e\x79\x77\x61\x79\x0a\x61\x70\x61\x72\x74\x0a\x41\ \x50\x49\x0a\x61\x70\x70\x65\x61\x72\x0a\x61\x70\x70\x65\x61\x72\ \x73\x0a\x61\x70\x70\x65\x6e\x64\x69\x63\x65\x73\x0a\x61\x70\x70\ \x65\x6e\x64\x69\x78\x0a\x61\x70\x70\x65\x6e\x64\x73\x0a\x61\x70\ \x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0a\x61\x70\x70\x6c\x69\x63\ \x61\x74\x69\x6f\x6e\x73\x0a\x61\x70\x70\x6c\x79\x0a\x61\x70\x70\ \x72\x6f\x61\x63\x68\x0a\x61\x70\x70\x72\x6f\x61\x63\x68\x65\x73\ \x0a\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x0a\x41\x72\x61\ \x62\x69\x63\x0a\x61\x72\x62\x69\x74\x72\x61\x72\x79\x0a\x61\x72\ \x65\x0a\x61\x72\x65\x61\x73\x0a\x41\x52\x47\x42\x0a\x61\x72\x67\ \x75\x6d\x65\x6e\x74\x0a\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\ \x61\x72\x6f\x75\x6e\x64\x0a\x61\x72\x72\x61\x6e\x67\x65\x6d\x65\ \x6e\x74\x73\x0a\x61\x72\x72\x69\x76\x65\x0a\x61\x72\x72\x69\x76\ \x65\x64\x0a\x41\x72\x74\x68\x75\x72\x0a\x61\x72\x74\x69\x63\x6c\ \x65\x0a\x61\x72\x74\x69\x63\x6c\x65\x73\x0a\x61\x73\x0a\x61\x73\ \x6b\x65\x64\x0a\x61\x73\x70\x65\x63\x74\x73\x0a\x61\x73\x73\x75\ \x6d\x65\x0a\x61\x74\x0a\x61\x74\x74\x61\x63\x68\x6d\x65\x6e\x74\ \x0a\x61\x74\x74\x65\x6d\x70\x74\x0a\x61\x74\x74\x65\x6d\x70\x74\ \x69\x6e\x67\x0a\x61\x74\x74\x65\x6e\x64\x0a\x61\x74\x74\x65\x6e\ \x64\x65\x65\x73\x0a\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\ \x61\x75\x74\x68\x6f\x72\x73\x0a\x61\x76\x61\x69\x6c\x61\x62\x69\ \x6c\x69\x74\x79\x0a\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x0a\x61\ \x76\x6f\x69\x64\x0a\x61\x77\x61\x79\x0a\x62\x61\x63\x6b\x0a\x62\ \x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x0a\x62\x61\x63\x6b\x67\x72\ \x6f\x75\x6e\x64\x73\x0a\x62\x61\x6e\x64\x77\x69\x64\x74\x68\x0a\ \x62\x61\x6e\x64\x77\x69\x64\x74\x68\x73\x0a\x42\x61\x72\x63\x65\ \x6c\x6f\x6e\x61\x0a\x62\x61\x73\x65\x0a\x62\x61\x73\x65\x64\x0a\ \x62\x61\x73\x69\x63\x0a\x62\x61\x73\x69\x63\x61\x6c\x6c\x79\x0a\ \x62\x61\x73\x69\x63\x73\x0a\x62\x65\x0a\x62\x65\x63\x61\x75\x73\ \x65\x0a\x62\x65\x65\x6e\x0a\x62\x65\x66\x6f\x72\x65\x0a\x62\x65\ \x68\x61\x76\x65\x0a\x62\x65\x68\x61\x76\x69\x6f\x72\x0a\x62\x65\ \x68\x69\x6e\x64\x0a\x62\x65\x69\x6e\x67\x0a\x62\x65\x6c\x6f\x77\ \x0a\x62\x65\x6e\x65\x66\x69\x74\x73\x0a\x42\x65\x72\x6b\x65\x6c\ \x65\x79\x0a\x62\x65\x74\x77\x65\x65\x6e\x0a\x62\x69\x74\x0a\x62\ \x69\x74\x73\x0a\x62\x69\x74\x77\x69\x73\x65\x0a\x62\x6c\x61\x63\ \x6b\x0a\x62\x6c\x65\x6e\x64\x65\x64\x0a\x62\x6c\x65\x6e\x64\x69\ \x6e\x67\x0a\x62\x6c\x65\x6e\x64\x73\x0a\x62\x6c\x6f\x63\x6b\x0a\ \x62\x6c\x75\x65\x0a\x42\x4d\x50\x0a\x62\x6f\x64\x79\x0a\x62\x6f\ \x6c\x64\x0a\x62\x6f\x6f\x6b\x69\x6e\x67\x0a\x62\x6f\x6f\x6c\x0a\ \x42\x6f\x73\x74\x6f\x6e\x0a\x62\x6f\x74\x68\x0a\x62\x6f\x74\x74\ \x6f\x6d\x0a\x62\x6f\x78\x0a\x62\x6f\x78\x65\x73\x0a\x62\x72\x61\ \x63\x65\x73\x0a\x62\x72\x65\x61\x6b\x0a\x62\x72\x65\x61\x6b\x73\ \x0a\x62\x72\x6f\x61\x64\x0a\x62\x72\x6f\x77\x73\x65\x72\x73\x0a\ \x62\x75\x66\x66\x65\x72\x0a\x62\x75\x66\x66\x65\x72\x73\x0a\x62\ \x75\x69\x6c\x64\x0a\x62\x75\x69\x6c\x64\x73\x0a\x62\x75\x69\x6c\ \x74\x0a\x62\x75\x6e\x64\x6c\x65\x64\x0a\x62\x75\x72\x64\x65\x6e\ \x73\x0a\x62\x75\x73\x79\x0a\x62\x75\x74\x0a\x62\x79\x0a\x62\x79\ \x70\x61\x73\x73\x0a\x62\x79\x70\x61\x73\x73\x69\x6e\x67\x0a\x62\ \x79\x74\x65\x73\x0a\x63\x61\x6c\x65\x6e\x64\x61\x72\x0a\x63\x61\ \x6c\x6c\x0a\x63\x61\x6c\x6c\x65\x64\x0a\x63\x61\x6c\x6c\x69\x6e\ \x67\x0a\x63\x61\x6c\x6c\x73\x0a\x43\x61\x6d\x62\x72\x69\x64\x67\ \x65\x0a\x63\x61\x6e\x0a\x63\x61\x6e\x6f\x6e\x69\x63\x61\x6c\x0a\ \x63\x61\x6e\x6f\x6e\x69\x63\x61\x6c\x69\x73\x65\x64\x0a\x63\x61\ \x70\x0a\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73\x0a\x63\ \x61\x70\x61\x63\x69\x74\x79\x0a\x63\x61\x70\x74\x69\x6f\x6e\x0a\ \x63\x61\x72\x64\x0a\x63\x61\x72\x65\x0a\x63\x61\x73\x65\x0a\x63\ \x61\x73\x74\x0a\x63\x61\x74\x63\x68\x0a\x63\x61\x75\x73\x69\x6e\ \x67\x0a\x63\x65\x6e\x74\x72\x65\x0a\x63\x65\x72\x74\x61\x69\x6e\ \x0a\x63\x68\x61\x6c\x6c\x65\x6e\x67\x65\x73\x0a\x63\x68\x61\x6e\ \x63\x65\x0a\x63\x68\x61\x6e\x67\x65\x0a\x63\x68\x61\x6e\x67\x65\ \x73\x0a\x63\x68\x61\x6e\x67\x69\x6e\x67\x0a\x63\x68\x61\x6e\x6e\ \x65\x6c\x0a\x63\x68\x61\x6e\x6e\x65\x6c\x73\x0a\x63\x68\x61\x70\ \x74\x65\x72\x0a\x63\x68\x61\x72\x0a\x63\x68\x61\x72\x74\x0a\x63\ \x68\x61\x72\x74\x73\x0a\x63\x68\x65\x63\x6b\x0a\x63\x68\x65\x63\ \x6b\x73\x0a\x43\x68\x69\x63\x61\x67\x6f\x0a\x63\x68\x6f\x73\x65\ \x6e\x0a\x63\x68\x75\x6e\x6b\x0a\x63\x69\x72\x63\x6c\x65\x0a\x63\ \x69\x74\x61\x74\x69\x6f\x6e\x0a\x63\x69\x74\x79\x0a\x63\x6c\x61\ \x69\x6d\x0a\x63\x6c\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x65\x73\ \x0a\x63\x6c\x61\x75\x73\x65\x0a\x63\x6c\x61\x75\x73\x65\x73\x0a\ \x63\x6c\x65\x61\x72\x0a\x63\x6c\x65\x61\x72\x69\x6e\x67\x0a\x63\ \x6c\x69\x65\x6e\x74\x0a\x63\x6c\x69\x65\x6e\x74\x73\x0a\x63\x6c\ \x6f\x73\x65\x0a\x63\x6c\x6f\x73\x65\x64\x0a\x63\x6f\x64\x65\x0a\ \x63\x6f\x6c\x6f\x6e\x0a\x63\x6f\x6c\x6f\x72\x0a\x63\x6f\x6c\x6f\ \x72\x69\x7a\x65\x0a\x63\x6f\x6c\x6f\x72\x69\x7a\x65\x72\x0a\x63\ \x6f\x6c\x6f\x72\x73\x0a\x63\x6f\x6c\x6f\x75\x72\x0a\x63\x6f\x6c\ \x75\x6d\x6e\x0a\x63\x6f\x6c\x75\x6d\x6e\x73\x0a\x63\x6f\x6d\x62\ \x69\x6e\x65\x0a\x63\x6f\x6d\x62\x69\x6e\x65\x64\x0a\x63\x6f\x6d\ \x62\x69\x6e\x65\x73\x0a\x63\x6f\x6d\x62\x69\x6e\x69\x6e\x67\x0a\ \x63\x6f\x6d\x65\x73\x0a\x63\x6f\x6d\x6d\x61\x6e\x64\x0a\x63\x6f\ \x6d\x6d\x61\x6e\x64\x73\x0a\x63\x6f\x6d\x6d\x65\x6e\x74\x0a\x63\ \x6f\x6d\x6d\x6f\x6e\x0a\x63\x6f\x6d\x6d\x75\x6e\x69\x63\x61\x74\ \x65\x0a\x63\x6f\x6d\x6d\x75\x6e\x69\x74\x79\x0a\x63\x6f\x6d\x70\ \x69\x6c\x65\x64\x0a\x63\x6f\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x0a\ \x63\x6f\x6d\x70\x6c\x65\x74\x65\x0a\x63\x6f\x6d\x70\x6c\x65\x74\ \x65\x6c\x79\x0a\x63\x6f\x6d\x70\x6c\x65\x74\x65\x6e\x65\x73\x73\ \x0a\x63\x6f\x6d\x70\x6c\x65\x74\x65\x73\x0a\x63\x6f\x6d\x70\x6c\ \x65\x74\x69\x6f\x6e\x0a\x63\x6f\x6d\x70\x6c\x65\x78\x0a\x63\x6f\ \x6d\x70\x6c\x69\x61\x6e\x74\x0a\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\ \x74\x0a\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x0a\x63\x6f\x6d\ \x70\x6f\x73\x69\x74\x69\x6e\x67\x0a\x63\x6f\x6d\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x0a\x63\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e\ \x0a\x63\x6f\x6d\x70\x75\x74\x61\x74\x69\x6f\x6e\x0a\x63\x6f\x6d\ \x70\x75\x74\x65\x72\x0a\x63\x6f\x6e\x63\x65\x70\x74\x73\x0a\x63\ \x6f\x6e\x63\x6c\x75\x73\x69\x6f\x6e\x0a\x63\x6f\x6e\x63\x75\x72\ \x72\x65\x6e\x74\x0a\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x62\x6c\ \x65\x0a\x63\x6f\x6e\x67\x65\x73\x74\x65\x64\x0a\x63\x6f\x6e\x67\ \x65\x73\x74\x69\x6f\x6e\x0a\x63\x6f\x6e\x6e\x65\x63\x74\x0a\x63\ \x6f\x6e\x6e\x65\x63\x74\x65\x64\x0a\x63\x6f\x6e\x6e\x65\x63\x74\ \x69\x6f\x6e\x0a\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\x0a\ \x63\x6f\x6e\x73\x0a\x63\x6f\x6e\x73\x69\x64\x65\x72\x0a\x63\x6f\ \x6e\x73\x69\x73\x74\x69\x6e\x67\x0a\x63\x6f\x6e\x73\x69\x73\x74\ \x73\x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x0a\x63\x6f\x6e\x73\ \x74\x72\x75\x63\x74\x65\x64\x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\ \x74\x69\x6e\x67\x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\ \x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x73\x0a\x63\x6f\x6e\x73\ \x75\x6d\x65\x0a\x63\x6f\x6e\x74\x61\x63\x74\x0a\x63\x6f\x6e\x74\ \x61\x69\x6e\x0a\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x0a\x63\ \x6f\x6e\x74\x61\x69\x6e\x73\x0a\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x0a\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x63\x6f\x6e\x74\x69\x6e\ \x75\x65\x0a\x63\x6f\x6e\x74\x69\x6e\x75\x65\x64\x0a\x63\x6f\x6e\ \x74\x72\x69\x62\x75\x74\x6f\x72\x73\x0a\x63\x6f\x6e\x74\x72\x6f\ \x6c\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x65\x64\x0a\x63\x6f\x6e\ \x74\x72\x6f\x6c\x6c\x65\x72\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\ \x65\x72\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x69\x6e\x67\x0a\x63\ \x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\ \x0a\x63\x6f\x6e\x76\x65\x6e\x74\x69\x6f\x6e\x73\x0a\x63\x6f\x6f\ \x6b\x0a\x63\x6f\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x63\x6f\ \x70\x79\x0a\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x63\x6f\x72\ \x65\x0a\x63\x6f\x72\x65\x73\x0a\x63\x6f\x72\x6f\x6c\x6c\x61\x72\ \x79\x0a\x63\x6f\x72\x72\x65\x63\x74\x0a\x63\x6f\x72\x72\x65\x63\ \x74\x6c\x79\x0a\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x69\x6e\ \x67\x0a\x63\x6f\x75\x6c\x64\x0a\x63\x6f\x75\x70\x6c\x65\x0a\x63\ \x6f\x77\x6f\x72\x6b\x65\x72\x73\x0a\x43\x50\x55\x0a\x63\x72\x65\ \x61\x74\x65\x0a\x63\x72\x65\x61\x74\x65\x73\x0a\x63\x72\x65\x61\ \x74\x69\x6e\x67\x0a\x63\x72\x75\x63\x69\x61\x6c\x0a\x63\x75\x6c\ \x74\x75\x72\x65\x73\x0a\x63\x75\x72\x72\x65\x6e\x74\x0a\x63\x75\ \x72\x72\x65\x6e\x74\x6c\x79\x0a\x63\x75\x73\x74\x6f\x6d\x0a\x63\ \x75\x73\x74\x6f\x6d\x69\x7a\x65\x64\x0a\x63\x75\x74\x0a\x64\x61\ \x74\x61\x0a\x64\x61\x74\x61\x62\x61\x73\x65\x0a\x64\x61\x74\x61\ \x73\x65\x74\x73\x0a\x64\x61\x74\x75\x6d\x0a\x64\x61\x79\x0a\x64\ \x61\x79\x73\x0a\x64\x65\x61\x6c\x0a\x64\x65\x61\x6c\x69\x6e\x67\ \x0a\x64\x65\x63\x69\x64\x65\x0a\x64\x65\x63\x6f\x75\x70\x6c\x65\ \x0a\x64\x65\x63\x6f\x75\x70\x6c\x65\x64\x0a\x64\x65\x65\x70\x6c\ \x79\x0a\x64\x65\x66\x0a\x64\x65\x66\x61\x75\x6c\x74\x0a\x64\x65\ \x66\x69\x6e\x65\x0a\x64\x65\x66\x69\x6e\x65\x73\x0a\x64\x65\x66\ \x69\x6e\x69\x74\x69\x6f\x6e\x0a\x64\x65\x66\x69\x6e\x69\x74\x69\ \x6f\x6e\x73\x0a\x64\x65\x6c\x65\x67\x61\x74\x65\x0a\x64\x65\x6c\ \x65\x74\x65\x0a\x64\x65\x6d\x6f\x0a\x64\x65\x6d\x6f\x6e\x73\x74\ \x72\x61\x74\x65\x0a\x64\x65\x6d\x6f\x6e\x73\x74\x72\x61\x74\x69\ \x6f\x6e\x73\x0a\x64\x65\x70\x6c\x6f\x79\x65\x64\x0a\x64\x65\x73\ \x63\x72\x69\x62\x65\x0a\x64\x65\x73\x63\x72\x69\x62\x65\x73\x0a\ \x64\x65\x73\x69\x67\x6e\x0a\x64\x65\x73\x6b\x74\x6f\x70\x0a\x64\ \x65\x73\x6b\x74\x6f\x70\x73\x0a\x64\x65\x73\x74\x69\x6e\x61\x74\ \x69\x6f\x6e\x0a\x64\x65\x73\x74\x69\x6e\x61\x74\x69\x6f\x6e\x73\ \x0a\x64\x65\x73\x74\x72\x75\x63\x74\x6f\x72\x0a\x64\x65\x74\x61\ \x69\x6c\x73\x0a\x64\x65\x74\x65\x63\x74\x0a\x64\x65\x74\x65\x72\ \x6d\x69\x6e\x65\x0a\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x73\x0a\ \x64\x65\x76\x65\x6c\x6f\x70\x65\x72\x0a\x64\x65\x76\x65\x6c\x6f\ \x70\x65\x72\x73\x0a\x64\x65\x76\x65\x6c\x6f\x70\x6d\x65\x6e\x74\ \x0a\x64\x65\x76\x65\x6c\x6f\x70\x6d\x65\x6e\x74\x73\x0a\x64\x65\ \x76\x69\x63\x65\x0a\x64\x65\x76\x69\x63\x65\x73\x0a\x64\x69\x61\ \x67\x72\x61\x6d\x0a\x64\x69\x61\x6c\x6f\x67\x73\x0a\x64\x69\x63\ \x74\x69\x6f\x6e\x61\x72\x79\x0a\x64\x69\x64\x0a\x64\x69\x66\x66\ \x65\x72\x65\x6e\x63\x65\x0a\x64\x69\x66\x66\x65\x72\x65\x6e\x63\ \x65\x73\x0a\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x0a\x64\x69\x66\ \x66\x65\x72\x73\x0a\x64\x69\x67\x69\x74\x61\x6c\x0a\x64\x69\x72\ \x65\x63\x74\x0a\x64\x69\x72\x65\x63\x74\x0a\x64\x69\x72\x65\x63\ \x74\x69\x6f\x6e\x73\x0a\x64\x69\x72\x65\x63\x74\x6c\x79\x0a\x64\ \x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x64\x69\x73\x63\x75\x73\x73\ \x0a\x64\x69\x73\x70\x6c\x61\x79\x0a\x64\x69\x73\x70\x6c\x61\x79\ \x69\x6e\x67\x0a\x64\x69\x73\x70\x6c\x61\x79\x73\x0a\x64\x69\x73\ \x74\x72\x69\x62\x75\x74\x65\x0a\x64\x69\x73\x74\x72\x69\x62\x75\ \x74\x69\x6f\x6e\x0a\x64\x69\x73\x74\x75\x72\x62\x69\x6e\x67\x0a\ \x64\x69\x76\x69\x64\x65\x0a\x64\x6f\x0a\x64\x6f\x63\x75\x6d\x65\ \x6e\x74\x61\x74\x69\x6f\x6e\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\ \x73\x0a\x64\x6f\x65\x73\x0a\x64\x6f\x6e\x65\x0a\x64\x6f\x77\x6e\ \x0a\x64\x6f\x77\x6e\x4c\x69\x6d\x69\x74\x0a\x64\x6f\x77\x6e\x6c\ \x6f\x61\x64\x0a\x64\x6f\x77\x6e\x6c\x6f\x61\x64\x65\x64\x0a\x64\ \x6f\x77\x6e\x6c\x6f\x61\x64\x69\x6e\x67\x0a\x64\x72\x61\x77\x0a\ \x64\x72\x61\x77\x69\x6e\x67\x0a\x64\x72\x61\x77\x6e\x0a\x64\x72\ \x6f\x70\x0a\x44\x75\x66\x66\x0a\x64\x75\x72\x69\x6e\x67\x0a\x44\ \x56\x44\x0a\x64\x79\x6e\x61\x6d\x69\x63\x0a\x64\x79\x6e\x61\x6d\ \x69\x63\x61\x6c\x6c\x79\x0a\x64\x79\x6e\x61\x6d\x69\x63\x73\x0a\ \x65\x61\x63\x68\x0a\x65\x61\x72\x6c\x69\x65\x72\x0a\x65\x61\x73\ \x69\x6c\x79\x0a\x65\x64\x69\x74\x69\x6e\x67\x0a\x65\x64\x69\x74\ \x6f\x72\x73\x0a\x65\x64\x75\x63\x61\x74\x69\x6f\x6e\x0a\x65\x66\ \x66\x65\x63\x74\x0a\x65\x66\x66\x65\x63\x74\x69\x76\x65\x6c\x79\ \x0a\x65\x66\x66\x65\x63\x74\x73\x0a\x65\x69\x74\x68\x65\x72\x0a\ \x65\x6c\x6c\x69\x70\x73\x65\x0a\x65\x6c\x6c\x69\x70\x73\x65\x73\ \x0a\x65\x6c\x6c\x69\x70\x74\x69\x63\x61\x6c\x0a\x65\x6c\x73\x65\ \x0a\x65\x6d\x61\x69\x6c\x0a\x65\x6d\x62\x65\x64\x64\x65\x64\x0a\ \x65\x6d\x69\x74\x0a\x65\x6d\x69\x74\x73\x0a\x65\x6d\x70\x74\x79\ \x0a\x65\x6e\x61\x62\x6c\x65\x0a\x65\x6e\x61\x62\x6c\x65\x73\x0a\ \x65\x6e\x63\x61\x70\x73\x75\x6c\x61\x74\x65\x73\x0a\x65\x6e\x63\ \x6c\x6f\x73\x65\x0a\x65\x6e\x64\x0a\x65\x6e\x64\x6e\x6f\x74\x65\ \x0a\x65\x6e\x64\x6e\x6f\x74\x65\x73\x0a\x65\x6e\x67\x69\x6e\x65\ \x65\x72\x0a\x65\x6e\x67\x69\x6e\x65\x65\x72\x69\x6e\x67\x0a\x45\ \x6e\x67\x6c\x69\x73\x68\x0a\x65\x6e\x6a\x6f\x79\x73\x0a\x65\x6e\ \x6f\x75\x67\x68\x0a\x65\x6e\x73\x75\x72\x65\x0a\x65\x6e\x73\x75\ \x72\x65\x73\x0a\x65\x6e\x74\x61\x69\x6c\x73\x0a\x65\x6e\x74\x65\ \x72\x0a\x65\x6e\x74\x69\x72\x65\x0a\x65\x6e\x74\x69\x74\x6c\x65\ \x64\x0a\x65\x6e\x74\x72\x69\x65\x73\x0a\x65\x6e\x74\x72\x79\x0a\ \x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x0a\x65\x72\x61\x73\ \x65\x73\x0a\x65\x72\x72\x6f\x72\x0a\x65\x72\x72\x6f\x72\x73\x0a\ \x65\x73\x70\x65\x63\x69\x61\x6c\x6c\x79\x0a\x65\x73\x74\x61\x62\ \x6c\x69\x73\x68\x65\x64\x0a\x65\x74\x63\x2e\x0a\x45\x75\x72\x6f\ \x70\x65\x0a\x65\x76\x65\x6e\x0a\x65\x76\x65\x6e\x6c\x79\x0a\x65\ \x76\x65\x6e\x74\x0a\x65\x76\x65\x6e\x74\x73\x0a\x65\x76\x65\x6e\ \x74\x75\x61\x6c\x6c\x79\x0a\x65\x76\x65\x72\x79\x0a\x65\x76\x65\ \x72\x79\x6f\x6e\x65\x0a\x65\x78\x61\x6d\x70\x6c\x65\x0a\x65\x78\ \x61\x6d\x70\x6c\x65\x73\x0a\x65\x78\x63\x65\x70\x74\x0a\x65\x78\ \x63\x65\x70\x74\x69\x6f\x6e\x0a\x65\x78\x63\x65\x73\x73\x69\x76\ \x65\x0a\x65\x78\x63\x6c\x75\x73\x69\x76\x65\x0a\x65\x78\x69\x73\ \x74\x69\x6e\x67\x0a\x65\x78\x69\x73\x74\x73\x0a\x65\x78\x70\x61\ \x6e\x64\x0a\x65\x78\x70\x65\x63\x74\x65\x64\x0a\x65\x78\x70\x65\ \x6e\x73\x65\x0a\x65\x78\x70\x6f\x72\x74\x0a\x65\x78\x70\x6f\x73\ \x65\x73\x0a\x65\x78\x74\x65\x6e\x64\x0a\x65\x78\x74\x65\x6e\x64\ \x65\x64\x0a\x65\x78\x74\x65\x6e\x64\x69\x6e\x67\x0a\x65\x78\x74\ \x65\x6e\x73\x69\x62\x6c\x65\x0a\x65\x78\x74\x65\x6e\x73\x69\x6f\ \x6e\x0a\x65\x78\x74\x65\x72\x6e\x61\x6c\x0a\x65\x78\x74\x72\x61\ \x0a\x65\x78\x74\x72\x61\x63\x74\x0a\x66\x61\x63\x65\x73\x0a\x66\ \x61\x63\x69\x6c\x69\x74\x69\x65\x73\x0a\x66\x61\x63\x74\x6f\x72\ \x79\x0a\x66\x61\x64\x65\x0a\x66\x61\x69\x6c\x75\x72\x65\x0a\x66\ \x61\x69\x72\x6e\x65\x73\x73\x0a\x66\x61\x6c\x6c\x73\x0a\x66\x61\ \x6c\x73\x65\x0a\x66\x61\x6d\x69\x6c\x79\x0a\x66\x61\x73\x68\x69\ \x6f\x6e\x0a\x66\x61\x73\x74\x0a\x66\x61\x73\x74\x65\x72\x0a\x66\ \x65\x61\x74\x75\x72\x65\x73\x0a\x46\x65\x62\x72\x75\x61\x72\x79\ \x0a\x66\x65\x65\x64\x62\x61\x63\x6b\x0a\x66\x65\x65\x6c\x0a\x66\ \x65\x74\x63\x68\x0a\x66\x65\x74\x63\x68\x69\x6e\x67\x0a\x66\x65\ \x77\x0a\x66\x69\x65\x6c\x64\x73\x0a\x66\x69\x67\x75\x72\x65\x0a\ \x66\x69\x67\x75\x72\x65\x73\x0a\x66\x69\x6c\x65\x0a\x66\x69\x6c\ \x65\x20\x6e\x61\x6d\x65\x0a\x66\x69\x6c\x65\x73\x0a\x66\x69\x6c\ \x6c\x65\x64\x0a\x66\x69\x6c\x6c\x65\x72\x0a\x66\x69\x6e\x61\x6c\ \x0a\x66\x69\x6e\x61\x6c\x6c\x79\x0a\x66\x69\x6e\x64\x0a\x66\x69\ \x6e\x65\x0a\x66\x69\x6e\x69\x73\x68\x0a\x66\x69\x6e\x69\x73\x68\ \x65\x64\x0a\x66\x69\x72\x73\x74\x0a\x66\x6c\x6f\x77\x0a\x66\x6c\ \x79\x0a\x66\x6f\x63\x75\x73\x0a\x66\x6f\x6c\x6c\x6f\x77\x65\x64\ \x0a\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x0a\x66\x6f\x6e\x74\x0a\ \x66\x6f\x6f\x74\x0a\x66\x6f\x6f\x74\x6e\x6f\x74\x65\x0a\x66\x6f\ \x6f\x74\x6e\x6f\x74\x65\x73\x0a\x66\x6f\x72\x0a\x66\x6f\x72\x6d\ \x0a\x66\x6f\x72\x6d\x61\x74\x0a\x66\x6f\x72\x6d\x61\x74\x73\x0a\ \x66\x6f\x72\x6d\x73\x0a\x66\x6f\x72\x6d\x75\x6c\x61\x0a\x66\x6f\ \x72\x6d\x75\x6c\x61\x73\x0a\x66\x6f\x72\x75\x6d\x0a\x66\x6f\x75\ \x6e\x64\x0a\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x46\x72\x61\ \x6e\x63\x65\x0a\x66\x72\x6f\x6d\x0a\x66\x72\x6f\x6e\x74\x0a\x66\ \x75\x6c\x6c\x0a\x66\x75\x6c\x6c\x79\x0a\x66\x75\x6e\x63\x74\x69\ \x6f\x6e\x0a\x66\x75\x6e\x63\x74\x69\x6f\x6e\x61\x6c\x69\x74\x79\ \x0a\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x66\x75\x74\x75\x72\ \x65\x0a\x67\x61\x69\x6e\x0a\x67\x61\x6d\x65\x73\x0a\x67\x61\x70\ \x0a\x67\x65\x6e\x65\x72\x61\x6c\x0a\x67\x65\x6e\x65\x72\x69\x63\ \x0a\x47\x65\x72\x6d\x61\x6e\x79\x0a\x67\x65\x74\x0a\x67\x69\x6c\ \x6c\x0a\x67\x69\x76\x65\x0a\x67\x69\x76\x65\x6e\x0a\x67\x69\x76\ \x65\x73\x0a\x67\x69\x76\x69\x6e\x67\x0a\x67\x6c\x6f\x62\x61\x6c\ \x0a\x67\x6f\x0a\x67\x6f\x65\x73\x0a\x67\x6f\x74\x0a\x67\x72\x61\ \x64\x69\x65\x6e\x74\x0a\x67\x72\x61\x70\x68\x0a\x67\x72\x61\x70\ \x68\x69\x63\x61\x6c\x0a\x67\x72\x61\x70\x68\x69\x63\x73\x0a\x67\ \x72\x61\x79\x0a\x67\x72\x65\x61\x74\x0a\x67\x72\x65\x61\x74\x6c\ \x79\x0a\x67\x72\x65\x65\x6e\x0a\x67\x72\x65\x79\x0a\x67\x72\x6f\ \x75\x70\x0a\x67\x72\x6f\x77\x69\x6e\x67\x0a\x67\x75\x69\x0a\x47\ \x55\x49\x0a\x68\x61\x63\x6b\x0a\x68\x61\x64\x0a\x68\x61\x6c\x66\ \x0a\x48\x61\x6d\x62\x75\x72\x67\x0a\x68\x61\x6e\x64\x0a\x68\x61\ \x6e\x64\x69\x6e\x67\x0a\x68\x61\x6e\x64\x6c\x65\x0a\x68\x61\x6e\ \x64\x6c\x65\x72\x0a\x68\x61\x6e\x64\x6c\x65\x72\x73\x0a\x68\x61\ \x6e\x64\x6c\x65\x73\x0a\x68\x61\x6e\x64\x6c\x69\x6e\x67\x0a\x68\ \x61\x70\x70\x65\x6e\x73\x0a\x68\x61\x72\x64\x77\x61\x72\x65\x0a\ \x68\x61\x72\x6d\x6f\x6e\x69\x63\x61\x0a\x68\x61\x73\x0a\x68\x61\ \x76\x65\x0a\x68\x61\x76\x69\x6e\x67\x0a\x68\x65\x0a\x68\x65\x61\ \x64\x0a\x68\x65\x61\x64\x65\x72\x0a\x68\x65\x61\x64\x65\x72\x73\ \x0a\x68\x65\x61\x72\x0a\x68\x65\x69\x67\x68\x74\x0a\x68\x65\x6c\ \x70\x0a\x68\x65\x6c\x70\x65\x72\x0a\x68\x65\x72\x65\x0a\x68\x69\ \x67\x68\x0a\x68\x69\x67\x68\x6c\x69\x67\x68\x74\x0a\x68\x69\x67\ \x68\x6c\x79\x0a\x68\x69\x6e\x74\x73\x0a\x68\x69\x73\x0a\x68\x6f\ \x6c\x64\x0a\x68\x6f\x6c\x64\x65\x72\x0a\x68\x6f\x6c\x64\x69\x6e\ \x67\x0a\x68\x6f\x6c\x65\x0a\x68\x6f\x6d\x65\x0a\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x0a\x68\x6f\x73\x74\x0a\x68\x6f\x73\x74\ \x69\x6e\x67\x0a\x68\x6f\x75\x72\x73\x0a\x48\x6f\x75\x73\x74\x6f\ \x6e\x0a\x68\x6f\x77\x0a\x68\x6f\x77\x65\x76\x65\x72\x0a\x68\x75\ \x67\x65\x0a\x68\x79\x70\x68\x65\x6e\x0a\x49\x44\x0a\x69\x64\x65\ \x61\x0a\x69\x64\x65\x61\x6c\x6c\x79\x0a\x69\x66\x0a\x49\x6c\x6c\ \x69\x6e\x6f\x69\x73\x0a\x69\x6c\x6c\x75\x73\x74\x72\x61\x74\x65\ \x0a\x69\x6c\x6c\x75\x73\x74\x72\x61\x74\x65\x64\x0a\x69\x6c\x6c\ \x75\x73\x74\x72\x61\x74\x65\x73\x0a\x69\x6d\x61\x67\x65\x0a\x69\ \x6d\x61\x67\x65\x73\x0a\x69\x6d\x70\x61\x63\x74\x0a\x69\x6d\x70\ \x6c\x65\x6d\x65\x6e\x74\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\ \x61\x74\x69\x6f\x6e\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\ \x74\x69\x6f\x6e\x73\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\ \x64\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x69\x6e\x67\x0a\x69\ \x6d\x70\x6c\x65\x6d\x65\x6e\x74\x73\x0a\x69\x6d\x70\x6f\x72\x74\ \x0a\x69\x6d\x70\x6f\x72\x74\x61\x6e\x74\x0a\x69\x6d\x70\x72\x6f\ \x76\x65\x6d\x65\x6e\x74\x73\x0a\x69\x6e\x0a\x69\x6e\x63\x6c\x75\ \x64\x65\x0a\x69\x6e\x63\x6c\x75\x64\x65\x64\x0a\x69\x6e\x63\x6c\ \x75\x64\x65\x73\x0a\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x0a\x69\ \x6e\x63\x6c\x75\x73\x69\x6f\x6e\x0a\x69\x6e\x63\x6f\x6d\x69\x6e\ \x67\x0a\x69\x6e\x63\x6f\x6e\x76\x65\x6e\x69\x65\x6e\x74\x0a\x69\ \x6e\x64\x65\x6e\x74\x0a\x69\x6e\x64\x65\x78\x0a\x69\x6e\x64\x69\ \x63\x61\x74\x65\x0a\x69\x6e\x65\x78\x70\x65\x6e\x73\x69\x76\x65\ \x6c\x79\x0a\x69\x6e\x66\x6c\x75\x65\x6e\x63\x65\x0a\x69\x6e\x66\ \x6f\x0a\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x69\x6e\ \x67\x65\x6e\x69\x6f\x75\x73\x0a\x69\x6e\x68\x65\x72\x69\x74\x73\ \x0a\x69\x6e\x69\x74\x69\x61\x6c\x0a\x69\x6e\x69\x74\x69\x61\x6c\ \x6c\x79\x0a\x69\x6e\x6e\x65\x72\x0a\x69\x6e\x70\x75\x74\x0a\x69\ \x6e\x73\x70\x69\x72\x65\x64\x0a\x69\x6e\x73\x74\x61\x6c\x6c\x0a\ \x69\x6e\x73\x74\x61\x6c\x6c\x73\x0a\x69\x6e\x73\x74\x61\x6e\x63\ \x65\x0a\x69\x6e\x73\x74\x65\x61\x64\x0a\x69\x6e\x73\x74\x72\x75\ \x63\x74\x73\x0a\x69\x6e\x74\x65\x67\x65\x72\x0a\x69\x6e\x74\x65\ \x67\x65\x72\x73\x0a\x69\x6e\x74\x65\x67\x72\x61\x74\x69\x6f\x6e\ \x0a\x69\x6e\x74\x65\x6e\x64\x65\x64\x0a\x69\x6e\x74\x65\x6e\x73\ \x69\x76\x65\x0a\x69\x6e\x74\x65\x72\x65\x73\x74\x0a\x69\x6e\x74\ \x65\x72\x65\x73\x74\x73\x0a\x69\x6e\x74\x65\x72\x66\x61\x63\x65\ \x0a\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x73\x0a\x69\x6e\x74\x65\ \x72\x66\x65\x72\x65\x0a\x69\x6e\x74\x65\x72\x6e\x61\x6c\x0a\x69\ \x6e\x74\x65\x72\x76\x61\x6c\x0a\x69\x6e\x74\x6f\x0a\x69\x6e\x74\ \x72\x69\x67\x75\x69\x6e\x67\x0a\x69\x6e\x74\x72\x6f\x0a\x69\x6e\ \x74\x72\x6f\x64\x75\x63\x65\x0a\x69\x6e\x74\x72\x6f\x64\x75\x63\ \x65\x64\x0a\x69\x6e\x76\x61\x6c\x69\x64\x0a\x69\x6e\x76\x65\x6e\ \x74\x65\x64\x0a\x69\x6e\x76\x65\x72\x73\x65\x0a\x69\x6e\x76\x6f\ \x63\x61\x74\x69\x6f\x6e\x0a\x69\x6e\x76\x6f\x6c\x76\x65\x64\x0a\ \x49\x72\x69\x73\x68\x0a\x69\x72\x72\x65\x67\x75\x6c\x61\x72\x0a\ \x69\x73\x0a\x49\x53\x4f\x0a\x49\x53\x50\x73\x0a\x69\x73\x73\x75\ \x65\x0a\x69\x73\x73\x75\x65\x73\x0a\x69\x74\x0a\x69\x74\x65\x6d\ \x73\x0a\x69\x74\x65\x72\x61\x74\x65\x0a\x69\x74\x73\x0a\x69\x74\ \x73\x65\x6c\x66\x0a\x6a\x6f\x62\x0a\x6a\x6f\x69\x6e\x0a\x4a\x50\ \x45\x47\x0a\x6a\x75\x6e\x67\x6c\x65\x0a\x6a\x75\x73\x74\x0a\x4b\ \x61\x72\x61\x6f\x6b\x65\x0a\x6b\x65\x65\x70\x0a\x6b\x65\x65\x70\ \x69\x6e\x67\x0a\x6b\x65\x79\x0a\x6b\x69\x6e\x64\x0a\x6b\x69\x6e\ \x67\x0a\x6b\x6e\x6f\x77\x6e\x0a\x6c\x61\x62\x65\x6c\x0a\x6c\x61\ \x62\x65\x6c\x73\x0a\x6c\x61\x6e\x64\x73\x63\x61\x70\x65\x0a\x6c\ \x61\x6e\x67\x75\x61\x67\x65\x0a\x6c\x61\x72\x67\x65\x0a\x6c\x61\ \x73\x74\x0a\x6c\x61\x74\x65\x72\x0a\x6c\x61\x74\x65\x73\x74\x0a\ \x6c\x61\x77\x6e\x0a\x6c\x61\x79\x6f\x75\x74\x0a\x6c\x65\x61\x64\ \x0a\x6c\x65\x61\x64\x65\x72\x0a\x6c\x65\x61\x64\x65\x72\x73\x0a\ \x6c\x65\x61\x6e\x0a\x6c\x65\x61\x76\x65\x73\x0a\x6c\x65\x61\x76\ \x69\x6e\x67\x0a\x6c\x65\x66\x74\x0a\x6c\x65\x6d\x6d\x61\x0a\x6c\ \x65\x6e\x67\x74\x68\x0a\x6c\x65\x73\x73\x0a\x6c\x65\x74\x0a\x6c\ \x65\x76\x65\x6c\x0a\x6c\x65\x76\x65\x6c\x73\x0a\x6c\x69\x62\x72\ \x61\x72\x69\x65\x73\x0a\x6c\x69\x62\x72\x61\x72\x79\x0a\x6c\x69\ \x65\x73\x0a\x6c\x69\x6b\x65\x0a\x6c\x69\x6b\x65\x6c\x79\x0a\x6c\ \x69\x6d\x69\x74\x0a\x6c\x69\x6d\x69\x74\x69\x6e\x67\x0a\x6c\x69\ \x6d\x69\x74\x73\x0a\x6c\x69\x6e\x65\x0a\x6c\x69\x6e\x65\x61\x72\ \x0a\x6c\x69\x6e\x65\x73\x0a\x6c\x69\x6e\x65\x77\x69\x64\x74\x68\ \x0a\x6c\x69\x6e\x6b\x0a\x6c\x69\x6e\x6b\x65\x64\x0a\x6c\x69\x6e\ \x6b\x69\x6e\x67\x0a\x4c\x69\x6e\x75\x78\x0a\x6c\x69\x73\x74\x0a\ \x6c\x69\x73\x74\x73\x0a\x6c\x69\x74\x74\x6c\x65\x0a\x6c\x69\x76\ \x65\x73\x0a\x6c\x6f\x61\x64\x0a\x6c\x6f\x61\x64\x69\x6e\x67\x0a\ \x6c\x6f\x61\x64\x73\x0a\x6c\x6f\x63\x61\x74\x65\x64\x0a\x6c\x6f\ \x63\x61\x74\x69\x6f\x6e\x0a\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73\ \x0a\x6c\x6f\x67\x6f\x0a\x6c\x6f\x6e\x67\x0a\x6c\x6f\x6e\x67\x65\ \x72\x0a\x6c\x6f\x6f\x6b\x0a\x6c\x6f\x6f\x6b\x65\x64\x0a\x6c\x6f\ \x6f\x6b\x69\x6e\x67\x0a\x6c\x6f\x6f\x6b\x73\x0a\x6c\x6f\x6f\x6b\ \x75\x70\x0a\x6c\x6f\x6f\x6b\x75\x70\x73\x0a\x6c\x6f\x6f\x70\x0a\ \x6c\x6f\x75\x74\x0a\x6c\x6f\x77\x0a\x6d\x61\x63\x72\x6f\x0a\x6d\ \x61\x64\x65\x0a\x6d\x61\x67\x61\x7a\x69\x6e\x65\x0a\x6d\x61\x67\ \x69\x63\x0a\x6d\x61\x69\x6e\x0a\x6d\x61\x6a\x6f\x72\x0a\x6d\x61\ \x6b\x65\x0a\x6d\x61\x6b\x65\x73\x0a\x6d\x61\x6b\x69\x6e\x67\x0a\ \x6d\x61\x6e\x61\x67\x65\x0a\x6d\x61\x6e\x61\x67\x65\x64\x0a\x6d\ \x61\x6e\x61\x67\x69\x6e\x67\x0a\x6d\x61\x6e\x64\x61\x74\x6f\x72\ \x79\x0a\x6d\x61\x6e\x69\x70\x75\x6c\x61\x74\x65\x0a\x6d\x61\x6e\ \x69\x70\x75\x6c\x61\x74\x69\x6f\x6e\x0a\x6d\x61\x6e\x6e\x65\x72\ \x0a\x6d\x61\x6e\x79\x0a\x6d\x61\x70\x0a\x6d\x61\x70\x73\x0a\x4d\ \x61\x72\x63\x68\x0a\x6d\x61\x72\x67\x69\x6e\x0a\x6d\x61\x73\x6b\ \x0a\x6d\x61\x73\x6b\x69\x6e\x67\x0a\x4d\x61\x73\x73\x61\x63\x68\ \x75\x73\x65\x74\x74\x73\x0a\x6d\x61\x74\x63\x68\x0a\x6d\x61\x74\ \x68\x65\x6d\x61\x74\x69\x63\x61\x6c\x0a\x6d\x61\x78\x69\x6d\x75\ \x6d\x0a\x6d\x61\x79\x0a\x6d\x65\x61\x6e\x73\x0a\x6d\x65\x65\x74\ \x0a\x6d\x65\x6d\x62\x65\x72\x0a\x6d\x65\x6d\x62\x65\x72\x73\x0a\ \x6d\x65\x6d\x6f\x72\x79\x0a\x6d\x65\x72\x67\x65\x64\x0a\x6d\x65\ \x74\x68\x6f\x64\x0a\x6d\x69\x67\x68\x74\x0a\x6d\x69\x6c\x6c\x69\ \x73\x65\x63\x6f\x6e\x64\x73\x0a\x6d\x69\x6e\x69\x6d\x69\x7a\x65\ \x0a\x6d\x69\x6e\x69\x6d\x75\x6d\x0a\x6d\x69\x6e\x6f\x72\x0a\x6d\ \x69\x78\x0a\x4d\x4e\x47\x0a\x6d\x6f\x64\x65\x0a\x6d\x6f\x64\x65\ \x6c\x0a\x6d\x6f\x64\x65\x6c\x73\x0a\x6d\x6f\x64\x65\x73\x0a\x6d\ \x6f\x64\x69\x66\x69\x65\x64\x0a\x6d\x6f\x64\x75\x6c\x65\x0a\x6d\ \x6f\x6d\x65\x6e\x74\x73\x0a\x6d\x6f\x6e\x69\x74\x6f\x72\x65\x64\ \x0a\x6d\x6f\x6e\x74\x68\x6c\x79\x0a\x6d\x6f\x72\x65\x0a\x6d\x6f\ \x73\x74\x0a\x6d\x6f\x73\x74\x6c\x79\x0a\x6d\x6f\x76\x65\x0a\x6d\ \x75\x63\x68\x0a\x6d\x75\x6c\x74\x69\x74\x75\x64\x65\x0a\x4d\x75\ \x6e\x69\x63\x68\x0a\x6d\x75\x73\x74\x0a\x6e\x61\x6d\x65\x0a\x6e\ \x61\x6d\x65\x64\x0a\x6e\x61\x6d\x65\x73\x0a\x6e\x65\x63\x65\x73\ \x73\x61\x72\x79\x0a\x6e\x65\x65\x64\x0a\x6e\x65\x65\x64\x65\x64\ \x0a\x6e\x65\x65\x64\x73\x0a\x6e\x65\x74\x77\x6f\x72\x6b\x0a\x6e\ \x65\x77\x0a\x6e\x65\x77\x73\x0a\x6e\x65\x77\x73\x6c\x65\x74\x74\ \x65\x72\x0a\x6e\x65\x78\x74\x0a\x6e\x69\x63\x65\x6c\x79\x0a\x6e\ \x6f\x0a\x6e\x6f\x6e\x65\x0a\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x0a\ \x4e\x6f\x72\x77\x61\x79\x0a\x6e\x6f\x74\x0a\x6e\x6f\x74\x65\x0a\ \x6e\x6f\x74\x65\x73\x0a\x6e\x6f\x74\x68\x69\x6e\x67\x0a\x6e\x6f\ \x74\x69\x66\x69\x65\x73\x0a\x6e\x6f\x74\x69\x66\x79\x0a\x6e\x6f\ \x77\x0a\x6e\x75\x6c\x6c\x0a\x6e\x75\x6d\x62\x65\x72\x0a\x6e\x75\ \x6d\x62\x65\x72\x65\x64\x0a\x6e\x75\x6d\x62\x65\x72\x69\x6e\x67\ \x0a\x6e\x75\x6d\x62\x65\x72\x73\x0a\x4e\x79\x64\x61\x6c\x65\x6e\ \x0a\x6f\x62\x6a\x65\x63\x74\x0a\x6f\x62\x6a\x65\x63\x74\x73\x0a\ \x6f\x62\x74\x61\x69\x6e\x0a\x6f\x62\x74\x61\x69\x6e\x69\x6e\x67\ \x0a\x6f\x64\x64\x0a\x6f\x66\x0a\x6f\x66\x66\x0a\x6f\x66\x66\x69\ \x63\x65\x0a\x6f\x66\x66\x73\x65\x74\x0a\x6f\x66\x66\x73\x65\x74\ \x73\x0a\x6f\x66\x74\x65\x6e\x0a\x6f\x6c\x64\x0a\x6f\x6e\x0a\x6f\ \x6e\x63\x65\x0a\x6f\x6e\x65\x0a\x6f\x6e\x65\x73\x0a\x6f\x6e\x6c\ \x69\x6e\x65\x0a\x6f\x6e\x6c\x79\x0a\x6f\x6e\x74\x6f\x0a\x6f\x70\ \x61\x63\x69\x74\x79\x0a\x6f\x70\x61\x71\x75\x65\x0a\x6f\x70\x65\ \x6e\x0a\x6f\x70\x65\x6e\x73\x0a\x6f\x70\x65\x72\x61\x74\x65\x73\ \x0a\x6f\x70\x65\x72\x61\x74\x69\x6e\x67\x0a\x6f\x70\x65\x72\x61\ \x74\x69\x6f\x6e\x0a\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x0a\ \x6f\x70\x65\x72\x61\x74\x6f\x72\x0a\x6f\x70\x70\x6f\x72\x74\x75\ \x6e\x69\x74\x79\x0a\x6f\x70\x70\x6f\x73\x65\x64\x0a\x6f\x70\x74\ \x69\x6d\x69\x7a\x65\x0a\x6f\x70\x74\x69\x6f\x6e\x0a\x6f\x70\x74\ \x69\x6f\x6e\x61\x6c\x6c\x79\x0a\x6f\x70\x74\x69\x6f\x6e\x73\x0a\ \x6f\x72\x0a\x4f\x52\x0a\x6f\x72\x64\x65\x72\x0a\x6f\x72\x64\x69\ \x6e\x61\x72\x79\x0a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x0a\x6f\x72\ \x69\x67\x69\x6e\x61\x6c\x6c\x79\x0a\x4f\x73\x6c\x6f\x0a\x6f\x74\ \x68\x65\x72\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x0a\x6f\x75\ \x72\x0a\x6f\x75\x74\x0a\x6f\x75\x74\x65\x72\x0a\x6f\x75\x74\x67\ \x6f\x69\x6e\x67\x0a\x6f\x75\x74\x70\x75\x74\x0a\x6f\x75\x74\x73\ \x69\x64\x65\x0a\x6f\x76\x65\x72\x0a\x6f\x76\x65\x72\x63\x6f\x6d\ \x69\x6e\x67\x0a\x6f\x76\x65\x72\x72\x69\x64\x65\x73\x0a\x6f\x76\ \x65\x72\x76\x69\x65\x77\x0a\x6f\x77\x6e\x0a\x6f\x77\x6e\x65\x72\ \x0a\x6f\x77\x6e\x65\x72\x73\x0a\x70\x61\x63\x65\x0a\x50\x61\x63\ \x69\x66\x69\x63\x0a\x70\x61\x63\x6b\x61\x67\x65\x0a\x70\x61\x63\ \x6b\x61\x67\x65\x73\x0a\x70\x61\x63\x6b\x65\x74\x73\x0a\x70\x61\ \x67\x65\x0a\x70\x61\x67\x65\x73\x0a\x70\x61\x69\x6e\x74\x0a\x70\ \x61\x69\x6e\x74\x65\x64\x0a\x70\x61\x69\x6e\x74\x69\x6e\x67\x0a\ \x70\x61\x72\x61\x67\x72\x61\x70\x68\x0a\x70\x61\x72\x61\x67\x72\ \x61\x70\x68\x73\x0a\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x0a\ \x70\x61\x72\x65\x6e\x74\x0a\x50\x61\x72\x69\x73\x0a\x70\x61\x72\ \x73\x65\x0a\x70\x61\x72\x74\x0a\x70\x61\x72\x74\x69\x61\x6c\x0a\ \x70\x61\x72\x74\x69\x61\x6c\x6c\x79\x0a\x70\x61\x72\x74\x69\x63\ \x75\x6c\x61\x72\x0a\x70\x61\x72\x74\x6e\x65\x72\x73\x0a\x70\x61\ \x72\x74\x73\x0a\x70\x61\x72\x74\x79\x0a\x70\x61\x73\x73\x65\x64\ \x0a\x70\x61\x73\x73\x69\x6e\x67\x0a\x70\x61\x74\x63\x68\x65\x73\ \x0a\x70\x61\x74\x68\x0a\x70\x61\x74\x74\x65\x72\x6e\x0a\x70\x61\ \x74\x74\x65\x72\x6e\x73\x0a\x70\x61\x75\x73\x65\x0a\x50\x44\x46\ \x0a\x70\x65\x65\x6b\x0a\x70\x65\x6e\x64\x69\x6e\x67\x0a\x70\x65\ \x72\x66\x6f\x72\x6d\x0a\x70\x65\x72\x66\x6f\x72\x6d\x65\x64\x0a\ \x70\x65\x72\x66\x6f\x72\x6d\x73\x0a\x70\x65\x72\x6d\x69\x73\x73\ \x69\x6f\x6e\x0a\x70\x65\x72\x6d\x75\x74\x61\x74\x69\x6f\x6e\x73\ \x0a\x70\x65\x72\x73\x6f\x6e\x61\x6c\x0a\x70\x69\x63\x6b\x0a\x70\ \x69\x65\x0a\x70\x69\x70\x65\x0a\x70\x69\x78\x65\x6c\x0a\x70\x69\ \x78\x65\x6c\x73\x0a\x70\x6c\x61\x63\x65\x0a\x70\x6c\x61\x63\x65\ \x73\x0a\x70\x6c\x61\x6e\x6e\x69\x6e\x67\x0a\x70\x6c\x61\x74\x66\ \x6f\x72\x6d\x73\x0a\x70\x6c\x61\x79\x0a\x70\x6c\x61\x79\x65\x72\ \x73\x0a\x70\x6c\x61\x79\x69\x6e\x67\x0a\x70\x6c\x65\x61\x73\x65\ \x0a\x70\x6c\x65\x61\x73\x69\x6e\x67\x0a\x70\x6c\x75\x67\x69\x6e\ \x0a\x70\x6c\x75\x67\x69\x6e\x73\x0a\x70\x6c\x75\x73\x0a\x50\x4e\ \x47\x0a\x70\x6f\x69\x6e\x74\x65\x72\x0a\x70\x6f\x70\x0a\x70\x6f\ \x70\x75\x6c\x61\x72\x0a\x70\x6f\x70\x75\x6c\x61\x74\x65\x73\x0a\ \x70\x6f\x72\x74\x65\x72\x0a\x50\x6f\x72\x74\x65\x72\x0a\x70\x6f\ \x72\x74\x72\x61\x69\x74\x0a\x70\x6f\x73\x73\x69\x62\x69\x6c\x69\ \x74\x79\x0a\x70\x6f\x73\x73\x69\x62\x6c\x65\x0a\x70\x6f\x74\x65\ \x6e\x74\x69\x61\x6c\x0a\x70\x6f\x74\x65\x6e\x74\x69\x61\x6c\x6c\ \x79\x0a\x70\x6f\x77\x65\x72\x0a\x70\x6f\x77\x65\x72\x73\x0a\x70\ \x72\x65\x63\x65\x64\x65\x64\x0a\x70\x72\x65\x73\x65\x6e\x63\x65\ \x0a\x70\x72\x65\x73\x65\x6e\x74\x0a\x70\x72\x65\x76\x65\x6e\x74\ \x0a\x70\x72\x65\x76\x65\x6e\x74\x73\x0a\x70\x72\x65\x76\x69\x6f\ \x75\x73\x0a\x70\x72\x65\x76\x69\x6f\x75\x73\x6c\x79\x0a\x70\x72\ \x69\x6d\x61\x72\x69\x6c\x79\x0a\x70\x72\x69\x6d\x61\x72\x79\x0a\ \x70\x72\x69\x6d\x69\x74\x69\x76\x65\x73\x0a\x70\x72\x69\x6e\x74\ \x65\x64\x0a\x70\x72\x69\x6e\x74\x69\x6e\x67\x0a\x70\x72\x69\x6f\ \x72\x0a\x70\x72\x6f\x62\x61\x62\x6c\x79\x0a\x70\x72\x6f\x62\x6c\ \x65\x6d\x0a\x70\x72\x6f\x63\x65\x73\x73\x0a\x70\x72\x6f\x63\x65\ \x73\x73\x65\x73\x0a\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x0a\ \x70\x72\x6f\x64\x75\x63\x65\x0a\x70\x72\x6f\x64\x75\x63\x65\x64\ \x0a\x70\x72\x6f\x64\x75\x63\x65\x73\x0a\x70\x72\x6f\x64\x75\x63\ \x74\x73\x0a\x70\x72\x6f\x67\x72\x61\x6d\x6d\x69\x6e\x67\x0a\x70\ \x72\x6f\x67\x72\x61\x6d\x73\x0a\x70\x72\x6f\x6a\x65\x63\x74\x0a\ \x70\x72\x6f\x6a\x65\x63\x74\x73\x0a\x70\x72\x6f\x6f\x66\x0a\x70\ \x72\x6f\x70\x65\x72\x0a\x70\x72\x6f\x70\x65\x72\x6c\x79\x0a\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x0a\x70\x72\x6f\x70\x65\x72\ \x74\x79\x0a\x70\x72\x6f\x70\x6f\x73\x65\x64\x0a\x70\x72\x6f\x70\ \x6f\x73\x69\x74\x69\x6f\x6e\x0a\x70\x72\x6f\x73\x0a\x70\x72\x6f\ \x74\x6f\x63\x6f\x6c\x73\x0a\x70\x72\x6f\x75\x64\x0a\x70\x72\x6f\ \x76\x69\x64\x65\x0a\x70\x72\x6f\x76\x69\x64\x65\x64\x0a\x70\x72\ \x6f\x76\x69\x64\x65\x73\x0a\x70\x72\x6f\x76\x69\x73\x69\x6f\x6e\ \x0a\x70\x72\x6f\x78\x79\x0a\x70\x75\x62\x6c\x69\x63\x0a\x70\x75\ \x62\x6c\x69\x73\x68\x65\x64\x0a\x70\x75\x6e\x63\x68\x0a\x70\x75\ \x6e\x63\x68\x65\x73\x0a\x70\x75\x72\x73\x75\x69\x6e\x67\x0a\x70\ \x75\x74\x0a\x51\x74\x0a\x51\x74\x6f\x70\x69\x61\x0a\x71\x75\x61\ \x6c\x69\x74\x79\x0a\x71\x75\x61\x72\x74\x65\x72\x0a\x71\x75\x61\ \x72\x74\x65\x72\x6c\x79\x0a\x71\x75\x65\x72\x69\x65\x64\x0a\x71\ \x75\x65\x72\x69\x65\x73\x0a\x71\x75\x65\x72\x79\x0a\x71\x75\x65\ \x73\x74\x69\x6f\x6e\x0a\x71\x75\x65\x73\x74\x69\x6f\x6e\x73\x0a\ \x72\x61\x64\x69\x61\x6c\x0a\x72\x61\x67\x67\x65\x64\x0a\x72\x61\ \x6e\x67\x65\x0a\x72\x61\x74\x65\x0a\x72\x61\x74\x65\x73\x0a\x72\ \x61\x74\x68\x65\x72\x0a\x72\x61\x74\x69\x6f\x0a\x72\x61\x77\x0a\ \x72\x65\x61\x64\x0a\x72\x65\x61\x64\x65\x72\x0a\x72\x65\x61\x64\ \x69\x6e\x67\x0a\x72\x65\x61\x64\x73\x0a\x72\x65\x61\x64\x79\x0a\ \x72\x65\x61\x6c\x0a\x72\x65\x61\x6c\x69\x73\x74\x69\x63\x0a\x72\ \x65\x61\x6c\x6c\x79\x0a\x72\x65\x63\x65\x69\x76\x65\x64\x0a\x72\ \x65\x63\x65\x6e\x74\x0a\x72\x65\x63\x6f\x67\x6e\x69\x7a\x65\x64\ \x0a\x72\x65\x63\x6f\x6d\x6d\x65\x6e\x64\x65\x64\x0a\x72\x65\x63\ \x6f\x6d\x70\x69\x6c\x65\x0a\x72\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x0a\x72\x65\x63\x74\x61\x6e\x67\x75\x6c\x61\x72\x0a\x72\x65\x64\ \x0a\x72\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x65\x0a\x72\x65\ \x64\x75\x63\x69\x6e\x67\x0a\x72\x65\x66\x65\x72\x65\x6e\x63\x65\ \x0a\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x73\x0a\x72\x65\x66\x6c\ \x65\x63\x74\x0a\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x0a\x72\ \x65\x67\x69\x6f\x6e\x61\x6c\x0a\x72\x65\x67\x69\x73\x74\x65\x72\ \x0a\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x0a\x72\x65\x67\x69\ \x73\x74\x72\x61\x74\x69\x6f\x6e\x0a\x72\x65\x69\x6d\x70\x6c\x65\ \x6d\x65\x6e\x74\x0a\x72\x65\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\ \x61\x74\x69\x6f\x6e\x0a\x72\x65\x69\x6d\x70\x6c\x65\x6d\x65\x6e\ \x74\x65\x64\x0a\x72\x65\x6c\x65\x61\x73\x65\x0a\x72\x65\x6c\x65\ \x61\x73\x65\x64\x0a\x72\x65\x6c\x65\x61\x73\x65\x73\x0a\x72\x65\ \x6c\x69\x61\x62\x6c\x65\x0a\x72\x65\x6c\x79\x0a\x72\x65\x6d\x61\ \x69\x6e\x73\x0a\x72\x65\x6d\x65\x6d\x62\x65\x72\x0a\x72\x65\x6d\ \x6f\x76\x65\x64\x0a\x72\x65\x6d\x6f\x76\x65\x73\x0a\x72\x65\x70\ \x65\x61\x74\x65\x64\x6c\x79\x0a\x72\x65\x70\x6c\x61\x63\x65\x0a\ \x72\x65\x70\x6f\x72\x74\x0a\x72\x65\x70\x72\x65\x73\x65\x6e\x74\ \x0a\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x65\x64\x0a\x72\x65\x70\ \x72\x65\x73\x65\x6e\x74\x73\x0a\x72\x65\x70\x72\x6f\x64\x75\x63\ \x65\x64\x0a\x72\x65\x71\x75\x65\x73\x74\x65\x64\x0a\x72\x65\x71\ \x75\x69\x72\x65\x0a\x72\x65\x71\x75\x69\x72\x65\x64\x0a\x72\x65\ \x71\x75\x69\x72\x65\x73\x0a\x72\x65\x73\x65\x74\x74\x69\x6e\x67\ \x0a\x72\x65\x73\x69\x64\x65\x73\x0a\x72\x65\x73\x6f\x6c\x76\x65\ \x0a\x72\x65\x73\x70\x65\x63\x74\x69\x76\x65\x0a\x72\x65\x73\x70\ \x65\x63\x74\x69\x76\x65\x6c\x79\x0a\x72\x65\x73\x70\x6f\x6e\x73\ \x65\x0a\x72\x65\x73\x74\x0a\x72\x65\x73\x74\x61\x72\x74\x0a\x72\ \x65\x73\x75\x6c\x74\x0a\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x0a\ \x72\x65\x73\x75\x6d\x65\x0a\x72\x65\x74\x75\x72\x6e\x0a\x72\x65\ \x74\x75\x72\x6e\x69\x6e\x67\x0a\x72\x65\x74\x75\x72\x6e\x73\x0a\ \x72\x65\x75\x73\x65\x0a\x72\x65\x76\x65\x61\x6c\x69\x6e\x67\x0a\ \x72\x69\x63\x68\x0a\x72\x69\x63\x68\x65\x73\x0a\x72\x69\x67\x68\ \x74\x0a\x72\x6f\x61\x64\x73\x68\x6f\x77\x0a\x72\x6f\x6c\x65\x0a\ \x52\x6f\x6d\x61\x6e\x0a\x72\x6f\x75\x74\x65\x72\x0a\x72\x6f\x75\ \x74\x65\x72\x73\x0a\x72\x75\x6c\x65\x0a\x72\x75\x6e\x0a\x72\x75\ \x6e\x6e\x65\x72\x0a\x72\x75\x6e\x6e\x65\x72\x73\x0a\x72\x75\x6e\ \x6e\x69\x6e\x67\x0a\x72\x75\x6e\x73\x0a\x73\x61\x6b\x65\x0a\x73\ \x61\x6c\x65\x73\x0a\x73\x61\x6c\x65\x73\x70\x65\x6f\x70\x6c\x65\ \x0a\x73\x61\x6d\x65\x0a\x73\x61\x6d\x70\x6c\x65\x0a\x53\x61\x6e\ \x20\x4a\x6f\x73\x65\x0a\x73\x61\x76\x65\x0a\x73\x61\x76\x65\x64\ \x0a\x73\x61\x76\x65\x73\x0a\x73\x61\x79\x0a\x73\x63\x61\x6c\x61\ \x62\x6c\x65\x0a\x73\x63\x61\x6c\x65\x0a\x73\x63\x61\x6e\x6c\x69\ \x6e\x65\x0a\x73\x63\x65\x6e\x65\x0a\x73\x63\x65\x6e\x65\x73\x0a\ \x73\x63\x68\x65\x64\x75\x6c\x65\x0a\x73\x63\x68\x6f\x6f\x6c\x0a\ \x73\x63\x72\x69\x70\x74\x0a\x73\x65\x61\x6d\x0a\x73\x65\x61\x6d\ \x6c\x65\x73\x73\x0a\x73\x65\x61\x72\x63\x68\x0a\x73\x65\x61\x72\ \x63\x68\x65\x73\x0a\x73\x65\x61\x72\x63\x68\x69\x6e\x67\x0a\x73\ \x65\x63\x6f\x6e\x64\x0a\x73\x65\x63\x6f\x6e\x64\x73\x0a\x73\x65\ \x63\x74\x69\x6f\x6e\x0a\x73\x65\x63\x74\x69\x6f\x6e\x73\x0a\x73\ \x65\x63\x75\x72\x69\x74\x79\x0a\x73\x65\x65\x0a\x73\x65\x65\x6e\ \x0a\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x0a\x73\x65\x6d\x69\x6e\ \x61\x72\x0a\x73\x65\x6d\x69\x6e\x61\x72\x73\x0a\x73\x65\x6e\x64\ \x69\x6e\x67\x0a\x73\x65\x70\x61\x72\x61\x74\x65\x64\x0a\x73\x65\ \x70\x61\x72\x61\x74\x65\x73\x0a\x73\x65\x72\x69\x65\x73\x0a\x73\ \x65\x72\x76\x69\x63\x65\x0a\x73\x65\x72\x76\x69\x63\x65\x73\x0a\ \x73\x65\x74\x0a\x73\x65\x74\x74\x69\x6e\x67\x0a\x73\x65\x74\x75\ \x70\x0a\x73\x65\x76\x65\x6e\x0a\x73\x65\x76\x65\x6e\x74\x68\x0a\ \x73\x65\x76\x65\x72\x61\x6c\x0a\x73\x68\x61\x64\x65\x0a\x73\x68\ \x61\x64\x6f\x77\x0a\x73\x68\x61\x70\x65\x0a\x73\x68\x61\x72\x65\ \x73\x0a\x73\x68\x61\x76\x65\x73\x0a\x73\x68\x69\x6e\x65\x0a\x73\ \x68\x6f\x72\x74\x65\x72\x0a\x73\x68\x6f\x75\x6c\x64\x0a\x73\x68\ \x6f\x77\x0a\x73\x68\x6f\x77\x6e\x0a\x73\x68\x6f\x77\x73\x0a\x73\ \x69\x64\x65\x0a\x73\x69\x67\x6e\x61\x6c\x0a\x73\x69\x67\x6e\x61\ \x6c\x73\x0a\x73\x69\x67\x6e\x61\x74\x75\x72\x65\x0a\x73\x69\x67\ \x6e\x69\x66\x69\x63\x61\x6e\x74\x6c\x79\x0a\x73\x69\x6d\x69\x6c\ \x61\x72\x0a\x73\x69\x6d\x69\x6c\x61\x72\x69\x6c\x79\x0a\x73\x69\ \x6d\x69\x6c\x61\x72\x6c\x79\x0a\x73\x69\x6d\x70\x6c\x65\x0a\x73\ \x69\x6d\x70\x6c\x65\x73\x74\x0a\x73\x69\x6d\x70\x6c\x69\x66\x69\ \x65\x64\x0a\x73\x69\x6d\x70\x6c\x69\x66\x79\x69\x6e\x67\x0a\x73\ \x69\x6d\x70\x6c\x79\x0a\x73\x69\x6d\x75\x6c\x61\x74\x65\x0a\x73\ \x69\x6d\x75\x6c\x74\x61\x6e\x65\x6f\x75\x73\x0a\x73\x69\x6e\x63\ \x65\x0a\x73\x69\x6e\x67\x6c\x65\x0a\x73\x69\x7a\x65\x0a\x73\x69\ \x7a\x65\x73\x0a\x73\x6c\x69\x67\x68\x74\x6c\x79\x0a\x73\x6c\x6f\ \x70\x65\x0a\x73\x6c\x6f\x74\x0a\x73\x6c\x6f\x77\x69\x6e\x67\x0a\ \x73\x6d\x61\x6c\x6c\x0a\x73\x6d\x61\x6c\x6c\x65\x72\x0a\x73\x6f\ \x0a\x73\x6f\x63\x6b\x65\x74\x0a\x73\x6f\x63\x6b\x65\x74\x73\x0a\ \x73\x6f\x66\x74\x77\x61\x72\x65\x0a\x73\x6f\x6c\x75\x74\x69\x6f\ \x6e\x73\x0a\x73\x6f\x6c\x76\x65\x64\x0a\x73\x6f\x6d\x65\x0a\x73\ \x6f\x6f\x6e\x0a\x73\x6f\x72\x74\x0a\x73\x6f\x72\x74\x69\x6e\x67\ \x0a\x73\x6f\x75\x72\x63\x65\x0a\x73\x6f\x75\x72\x63\x65\x73\x0a\ \x73\x6f\x75\x74\x68\x0a\x73\x70\x61\x63\x65\x0a\x73\x70\x65\x63\ \x69\x61\x6c\x0a\x73\x70\x65\x63\x69\x61\x6c\x69\x7a\x65\x64\x0a\ \x73\x70\x65\x63\x69\x66\x69\x63\x0a\x73\x70\x65\x63\x69\x66\x69\ \x63\x61\x6c\x6c\x79\x0a\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\ \x69\x6f\x6e\x0a\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\ \x6e\x73\x0a\x73\x70\x65\x63\x69\x66\x69\x65\x64\x0a\x73\x70\x65\ \x63\x69\x66\x79\x0a\x73\x70\x65\x65\x64\x0a\x73\x70\x65\x6e\x64\ \x0a\x73\x70\x6c\x69\x74\x0a\x53\x51\x4c\x0a\x73\x74\x61\x6e\x64\ \x61\x72\x64\x0a\x73\x74\x61\x6e\x64\x61\x72\x64\x73\x0a\x73\x74\ \x61\x72\x74\x0a\x73\x74\x61\x72\x74\x73\x0a\x73\x74\x61\x72\x76\ \x65\x0a\x73\x74\x61\x74\x65\x0a\x73\x74\x61\x74\x65\x73\x0a\x73\ \x74\x61\x74\x69\x63\x0a\x73\x74\x65\x61\x64\x79\x0a\x73\x74\x65\ \x61\x6c\x69\x6e\x67\x0a\x73\x74\x65\x70\x0a\x73\x74\x69\x6c\x6c\ \x0a\x73\x74\x6f\x70\x0a\x73\x74\x6f\x70\x77\x61\x74\x63\x68\x0a\ \x73\x74\x6f\x72\x65\x0a\x73\x74\x6f\x72\x65\x64\x0a\x73\x74\x6f\ \x72\x65\x73\x0a\x73\x74\x72\x61\x69\x67\x68\x74\x66\x6f\x72\x77\ \x61\x72\x64\x0a\x73\x74\x72\x65\x61\x6d\x0a\x73\x74\x72\x69\x6e\ \x67\x0a\x73\x74\x72\x69\x6e\x67\x73\x0a\x73\x74\x72\x75\x63\x74\ \x75\x72\x65\x0a\x73\x74\x72\x75\x63\x74\x75\x72\x65\x64\x0a\x73\ \x74\x72\x75\x74\x0a\x73\x74\x79\x6c\x65\x0a\x73\x74\x79\x6c\x65\ \x73\x0a\x73\x74\x79\x6c\x69\x6e\x67\x0a\x73\x75\x62\x63\x6c\x61\ \x73\x73\x0a\x73\x75\x62\x63\x6c\x61\x73\x73\x69\x6e\x67\x0a\x73\ \x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x73\x75\x62\x73\ \x65\x63\x74\x69\x6f\x6e\x0a\x73\x75\x62\x73\x65\x63\x74\x69\x6f\ \x6e\x73\x0a\x73\x75\x63\x63\x65\x65\x64\x73\x0a\x73\x75\x63\x63\ \x65\x73\x73\x0a\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x0a\x73\ \x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x0a\x73\x75\x63\x68\ \x0a\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x0a\x73\x75\x67\x67\ \x65\x73\x74\x69\x6f\x6e\x73\x0a\x73\x75\x69\x74\x61\x62\x6c\x65\ \x0a\x73\x75\x70\x70\x6f\x72\x74\x0a\x73\x75\x70\x70\x6f\x72\x74\ \x65\x64\x0a\x73\x75\x70\x70\x6f\x72\x74\x73\x0a\x73\x75\x70\x70\ \x6f\x73\x65\x0a\x73\x75\x70\x70\x6f\x73\x65\x73\x0a\x73\x75\x72\ \x65\x0a\x73\x77\x69\x74\x63\x68\x0a\x73\x77\x69\x74\x63\x68\x65\ \x73\x0a\x73\x79\x6d\x62\x6f\x6c\x0a\x73\x79\x6d\x62\x6f\x6c\x73\ \x0a\x73\x79\x6e\x6f\x6e\x79\x6d\x73\x0a\x73\x79\x73\x74\x65\x6d\ \x0a\x73\x79\x73\x74\x65\x6d\x73\x0a\x74\x61\x62\x6c\x65\x0a\x74\ \x61\x62\x6c\x65\x73\x0a\x74\x61\x67\x73\x0a\x74\x61\x6b\x65\x0a\ \x74\x61\x6b\x65\x73\x0a\x74\x61\x70\x0a\x74\x61\x72\x67\x65\x74\ \x0a\x74\x61\x72\x67\x65\x74\x73\x0a\x54\x43\x50\x0a\x74\x65\x61\ \x6d\x0a\x74\x65\x63\x68\x6e\x69\x71\x75\x65\x0a\x74\x65\x63\x68\ \x6e\x6f\x6c\x6f\x67\x79\x0a\x74\x65\x6d\x70\x6c\x61\x74\x65\x0a\ \x74\x65\x6d\x70\x6c\x61\x74\x65\x73\x0a\x54\x65\x78\x61\x73\x0a\ \x74\x65\x78\x74\x0a\x74\x68\x61\x6e\x0a\x74\x68\x61\x74\x0a\x74\ \x68\x65\x0a\x74\x68\x65\x69\x72\x0a\x74\x68\x65\x6d\x0a\x74\x68\ \x65\x6e\x0a\x74\x68\x65\x6f\x72\x65\x6d\x0a\x74\x68\x65\x72\x65\ \x0a\x74\x68\x65\x73\x65\x0a\x74\x68\x65\x79\x0a\x74\x68\x69\x63\ \x6b\x6e\x65\x73\x73\x0a\x74\x68\x69\x6e\x0a\x74\x68\x69\x72\x64\ \x0a\x74\x68\x69\x73\x0a\x74\x68\x6f\x73\x65\x0a\x74\x68\x72\x65\ \x65\x0a\x74\x68\x72\x6f\x74\x74\x6c\x69\x6e\x67\x0a\x74\x68\x72\ \x6f\x75\x67\x68\x0a\x74\x69\x67\x68\x74\x6c\x79\x0a\x74\x69\x6d\ \x65\x0a\x74\x69\x6d\x65\x72\x0a\x74\x69\x6d\x65\x73\x0a\x74\x69\ \x6e\x79\x0a\x74\x69\x70\x73\x0a\x74\x69\x74\x6c\x65\x0a\x74\x69\ \x74\x6c\x65\x73\x0a\x74\x6f\x0a\x74\x6f\x67\x65\x74\x68\x65\x72\ \x0a\x74\x6f\x6f\x0a\x74\x6f\x70\x0a\x74\x6f\x72\x72\x65\x6e\x74\ \x0a\x74\x6f\x74\x61\x6c\x0a\x74\x6f\x75\x72\x0a\x74\x72\x61\x64\ \x65\x6d\x61\x72\x6b\x73\x0a\x74\x72\x61\x66\x66\x69\x63\x0a\x74\ \x72\x61\x69\x6e\x69\x6e\x67\x0a\x74\x72\x61\x6e\x73\x61\x63\x74\ \x69\x6f\x6e\x0a\x74\x72\x61\x6e\x73\x66\x65\x72\x0a\x74\x72\x61\ \x6e\x73\x66\x65\x72\x72\x65\x64\x0a\x74\x72\x61\x6e\x73\x66\x65\ \x72\x72\x69\x6e\x67\x0a\x74\x72\x61\x6e\x73\x66\x65\x72\x73\x0a\ \x74\x72\x61\x6e\x73\x6c\x75\x63\x65\x6e\x63\x79\x0a\x74\x72\x61\ \x6e\x73\x6c\x75\x63\x65\x6e\x74\x0a\x74\x72\x61\x6e\x73\x70\x61\ \x72\x65\x6e\x63\x79\x0a\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\ \x74\x0a\x74\x72\x61\x76\x65\x6c\x0a\x74\x72\x61\x76\x65\x6c\x65\ \x64\x0a\x74\x72\x75\x65\x0a\x74\x72\x79\x0a\x74\x75\x72\x6e\x0a\ \x74\x77\x69\x63\x65\x0a\x74\x77\x6f\x0a\x74\x79\x70\x65\x0a\x74\ \x79\x70\x65\x64\x0a\x74\x79\x70\x69\x63\x61\x6c\x0a\x74\x79\x70\ \x69\x63\x61\x6c\x6c\x79\x0a\x75\x6e\x61\x62\x6c\x65\x0a\x75\x6e\ \x64\x65\x72\x0a\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x0a\x75\ \x6e\x64\x65\x72\x73\x74\x61\x6e\x64\x69\x6e\x67\x0a\x75\x6e\x64\ \x6f\x65\x73\x0a\x75\x6e\x69\x71\x75\x65\x0a\x75\x6e\x69\x74\x65\ \x64\x0a\x75\x6e\x6c\x69\x6b\x65\x0a\x75\x6e\x70\x61\x63\x6b\x0a\ \x75\x6e\x73\x69\x67\x6e\x65\x64\x0a\x75\x6e\x74\x69\x6c\x0a\x75\ \x6e\x74\x6f\x75\x63\x68\x65\x64\x0a\x75\x70\x0a\x75\x70\x64\x61\ \x74\x65\x0a\x75\x70\x64\x61\x74\x65\x64\x0a\x75\x70\x64\x61\x74\ \x65\x73\x0a\x75\x70\x6c\x6f\x61\x64\x0a\x75\x70\x6c\x6f\x61\x64\ \x69\x6e\x67\x0a\x75\x70\x6c\x6f\x61\x64\x73\x0a\x75\x73\x0a\x75\ \x73\x65\x0a\x75\x73\x65\x64\x0a\x75\x73\x65\x66\x75\x6c\x0a\x75\ \x73\x65\x72\x0a\x75\x73\x65\x72\x73\x0a\x75\x73\x65\x73\x0a\x75\ \x73\x69\x6e\x67\x0a\x75\x73\x75\x61\x6c\x0a\x75\x73\x75\x61\x6c\ \x6c\x79\x0a\x76\x61\x6c\x69\x64\x0a\x76\x61\x6c\x75\x65\x0a\x76\ \x61\x6c\x75\x65\x73\x0a\x76\x61\x72\x69\x61\x62\x6c\x65\x0a\x76\ \x61\x72\x69\x61\x74\x69\x6f\x6e\x0a\x76\x61\x72\x69\x65\x74\x79\ \x0a\x76\x61\x72\x69\x6f\x75\x73\x0a\x76\x65\x63\x74\x6f\x72\x0a\ \x76\x65\x6e\x74\x75\x72\x69\x6e\x67\x0a\x76\x65\x72\x69\x66\x79\ \x69\x6e\x67\x0a\x76\x65\x72\x73\x61\x0a\x76\x65\x72\x73\x69\x6f\ \x6e\x0a\x76\x65\x72\x73\x69\x6f\x6e\x73\x0a\x76\x65\x72\x74\x69\ \x63\x61\x6c\x0a\x76\x65\x72\x79\x0a\x76\x69\x61\x0a\x76\x69\x63\ \x65\x0a\x76\x69\x72\x74\x75\x61\x6c\x0a\x76\x69\x73\x75\x61\x6c\ \x0a\x76\x6f\x69\x64\x0a\x56\x50\x0a\x77\x61\x69\x74\x69\x6e\x67\ \x0a\x57\x61\x6c\x65\x73\x0a\x77\x61\x6e\x74\x0a\x77\x61\x6e\x74\ \x73\x0a\x77\x61\x73\x0a\x77\x61\x79\x0a\x77\x61\x79\x73\x0a\x77\ \x65\x0a\x77\x65\x62\x0a\x77\x65\x62\x73\x69\x74\x65\x0a\x77\x65\ \x6c\x6c\x0a\x77\x65\x72\x65\x0a\x77\x68\x61\x74\x0a\x77\x68\x65\ \x6e\x0a\x77\x68\x65\x6e\x65\x76\x65\x72\x0a\x77\x68\x65\x72\x65\ \x0a\x77\x68\x65\x74\x68\x65\x72\x0a\x77\x68\x69\x63\x68\x0a\x77\ \x68\x69\x6c\x65\x0a\x77\x68\x69\x73\x74\x6c\x65\x0a\x77\x68\x69\ \x74\x65\x0a\x77\x68\x6f\x0a\x77\x68\x6f\x6c\x65\x0a\x77\x68\x79\ \x0a\x77\x69\x64\x67\x65\x74\x0a\x77\x69\x64\x67\x65\x74\x73\x0a\ \x77\x69\x64\x74\x68\x0a\x77\x69\x64\x74\x68\x73\x0a\x77\x69\x6c\ \x6c\x0a\x77\x69\x6e\x64\x6f\x77\x0a\x77\x69\x6e\x64\x6f\x77\x73\ \x0a\x77\x69\x73\x68\x0a\x77\x69\x74\x68\x0a\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x77\x6f\x72\x64\x0a\x77\x6f\x72\x64\x73\x0a\x77\x6f\ \x72\x6b\x0a\x77\x6f\x72\x6b\x69\x6e\x67\x0a\x77\x6f\x72\x6b\x73\ \x0a\x77\x6f\x75\x6c\x64\x0a\x77\x72\x61\x70\x0a\x77\x72\x61\x70\ \x70\x65\x72\x0a\x77\x72\x69\x74\x65\x0a\x77\x72\x69\x74\x65\x73\ \x0a\x77\x72\x69\x74\x69\x6e\x67\x0a\x77\x72\x69\x74\x69\x6e\x67\ \x73\x0a\x77\x72\x69\x74\x74\x65\x6e\x0a\x58\x0a\x58\x31\x31\x0a\ \x58\x4f\x52\x0a\x79\x65\x61\x72\x0a\x79\x65\x61\x72\x73\x0a\x79\ \x65\x73\x0a\x79\x6f\x75\x0a\x79\x6f\x75\x72\x0a\x7a\x65\x72\x6f\ \x0a\ " qt_resource_name = b"\ \x00\x09\ \x0a\x6c\x78\x43\ \x00\x72\ \x00\x65\x00\x73\x00\x6f\x00\x75\x00\x72\x00\x63\x00\x65\x00\x73\ \x00\x0c\ \x0f\x6a\x4d\x94\ \x00\x77\ \x00\x6f\x00\x72\x00\x64\x00\x6c\x00\x69\x00\x73\x00\x74\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/tools/customcompleter/resources/0000755000076500000240000000000012613140041023463 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/customcompleter/resources/wordlist.txt0000644000076500000240000002552212613140041026101 0ustar philstaff00000000000000A4 able about above absence absolutely abstract access according accumulated achieve achieving activity acts actual actually add added adding addition additionally additions addresses adjust adjustments advanced advice after afterwards again agenda aim algorithm all allocated allow allowed allowing allows along alpha already also alternative alternatively although American an and announced annoy another answer answers any anything anyway apart API appear appears appendices appendix appends application applications apply approach approaches appropriate Arabic arbitrary are areas ARGB argument arguments around arrangements arrive arrived Arthur article articles as asked aspects assume at attachment attempt attempting attend attendees attributes authors availability available avoid away back background backgrounds bandwidth bandwidths Barcelona base based basic basically basics be because been before behave behavior behind being below benefits Berkeley between bit bits bitwise black blended blending blends block blue BMP body bold booking bool Boston both bottom box boxes braces break breaks broad browsers buffer buffers build builds built bundled burdens busy but by bypass bypassing bytes calendar call called calling calls Cambridge can canonical canonicalised cap capabilities capacity caption card care case cast catch causing centre certain challenges chance change changes changing channel channels chapter char chart charts check checks Chicago chosen chunk circle citation city claim class classes clause clauses clear clearing client clients close closed code colon color colorize colorizer colors colour column columns combine combined combines combining comes command commands comment common communicate community compiled complement complete completely completeness completes completion complex compliant component components compositing composition compression computation computer concepts conclusion concurrent configurable congested congestion connect connected connection connections cons consider consisting consists construct constructed constructing constructor constructs consume contact contain containing contains contents contents continue continued contributors control controlled controller controller controlling controls controls conventions cook cooperation copy copyright core cores corollary correct correctly corresponding could couple coworkers CPU create creates creating crucial cultures current currently custom customized cut data database datasets datum day days deal dealing decide decouple decoupled deeply def default define defines definition definitions delegate delete demo demonstrate demonstrations deployed describe describes design desktop desktops destination destinations destructor details detect determine determines developer developers development developments device devices diagram dialogs dictionary did difference differences different differs digital direct direct directions directly directory discuss display displaying displays distribute distribution disturbing divide do documentation documents does done down downLimit download downloaded downloading draw drawing drawn drop Duff during DVD dynamic dynamically dynamics each earlier easily editing editors education effect effectively effects either ellipse ellipses elliptical else email embedded emit emits empty enable enables encapsulates enclose end endnote endnotes engineer engineering English enjoys enough ensure ensures entails enter entire entitled entries entry environment erases error errors especially established etc. Europe even evenly event events eventually every everyone example examples except exception excessive exclusive existing exists expand expected expense export exposes extend extended extending extensible extension external extra extract faces facilities factory fade failure fairness falls false family fashion fast faster features February feedback feel fetch fetching few fields figure figures file file name files filled filler final finally find fine finish finished first flow fly focus followed following font foot footnote footnotes for form format formats forms formula formulas forum found framework France from front full fully function functionality functions future gain games gap general generic Germany get gill give given gives giving global go goes got gradient graph graphical graphics gray great greatly green grey group growing gui GUI hack had half Hamburg hand handing handle handler handlers handles handling happens hardware harmonica has have having he head header headers hear height help helper here high highlight highly hints his hold holder holding hole home horizontal host hosting hours Houston how however huge hyphen ID idea ideally if Illinois illustrate illustrated illustrates image images impact implement implementation implementations implemented implementing implements import important improvements in include included includes including inclusion incoming inconvenient indent index indicate inexpensively influence info information ingenious inherits initial initially inner input inspired install installs instance instead instructs integer integers integration intended intensive interest interests interface interfaces interfere internal interval into intriguing intro introduce introduced invalid invented inverse invocation involved Irish irregular is ISO ISPs issue issues it items iterate its itself job join JPEG jungle just Karaoke keep keeping key kind king known label labels landscape language large last later latest lawn layout lead leader leaders lean leaves leaving left lemma length less let level levels libraries library lies like likely limit limiting limits line linear lines linewidth link linked linking Linux list lists little lives load loading loads located location locations logo long longer look looked looking looks lookup lookups loop lout low macro made magazine magic main major make makes making manage managed managing mandatory manipulate manipulation manner many map maps March margin mask masking Massachusetts match mathematical maximum may means meet member members memory merged method might milliseconds minimize minimum minor mix MNG mode model models modes modified module moments monitored monthly more most mostly move much multitude Munich must name named names necessary need needed needs network new news newsletter next nicely no none normally Norway not note notes nothing notifies notify now null number numbered numbering numbers Nydalen object objects obtain obtaining odd of off office offset offsets often old on once one ones online only onto opacity opaque open opens operates operating operation operations operator opportunity opposed optimize option optionally options or OR order ordinary original originally Oslo other otherwise our out outer outgoing output outside over overcoming overrides overview own owner owners pace Pacific package packages packets page pages paint painted painting paragraph paragraphs parameters parent Paris parse part partial partially particular partners parts party passed passing patches path pattern patterns pause PDF peek pending perform performed performs permission permutations personal pick pie pipe pixel pixels place places planning platforms play players playing please pleasing plugin plugins plus PNG pointer pop popular populates porter Porter portrait possibility possible potential potentially power powers preceded presence present prevent prevents previous previously primarily primary primitives printed printing prior probably problem process processes processing produce produced produces products programming programs project projects proof proper properly properties property proposed proposition pros protocols proud provide provided provides provision proxy public published punch punches pursuing put Qt Qtopia quality quarter quarterly queried queries query question questions radial ragged range rate rates rather ratio raw read reader reading reads ready real realistic really received recent recognized recommended recompile rectangle rectangular red redistribute reducing reference references reflect regardless regional register registered registration reimplement reimplementation reimplemented release released releases reliable rely remains remember removed removes repeatedly replace report represent represented represents reproduced requested require required requires resetting resides resolve respective respectively response rest restart result resulting resume return returning returns reuse revealing rich riches right roadshow role Roman router routers rule run runner runners running runs sake sales salespeople same sample San Jose save saved saves say scalable scale scanline scene scenes schedule school script seam seamless search searches searching second seconds section sections security see seen selection seminar seminars sending separated separates series service services set setting setup seven seventh several shade shadow shape shares shaves shine shorter should show shown shows side signal signals signature significantly similar similarily similarly simple simplest simplified simplifying simply simulate simultaneous since single size sizes slightly slope slot slowing small smaller so socket sockets software solutions solved some soon sort sorting source sources south space special specialized specific specifically specification specifications specified specify speed spend split SQL standard standards start starts starve state states static steady stealing step still stop stopwatch store stored stores straightforward stream string strings structure structured strut style styles styling subclass subclassing subdirectory subsection subsections succeeds success successful successfully such suggestion suggestions suitable support supported supports suppose supposes sure switch switches symbol symbols synonyms system systems table tables tags take takes tap target targets TCP team technique technology template templates Texas text than that the their them then theorem there these they thickness thin third this those three throttling through tightly time timer times tiny tips title titles to together too top torrent total tour trademarks traffic training transaction transfer transferred transferring transfers translucency translucent transparency transparent travel traveled true try turn twice two type typed typical typically unable under underlying understanding undoes unique united unlike unpack unsigned until untouched up update updated updates upload uploading uploads us use used useful user users uses using usual usually valid value values variable variation variety various vector venturing verifying versa version versions vertical very via vice virtual visual void VP waiting Wales want wants was way ways we web website well were what when whenever where whether which while whistle white who whole why widget widgets width widths will window windows wish with without word words work working works would wrap wrapper write writes writing writings written X X11 XOR year years yes you your zero PyQt-gpl-5.5.1/examples/tools/i18n/0000755000076500000240000000000012613140041017003 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/i18n/i18n.py0000755000076500000240000001731112613140041020142 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, QEvent, Qt, QT_TRANSLATE_NOOP, QTranslator from PyQt5.QtGui import QColor, QPalette from PyQt5.QtWidgets import (QAction, QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QGroupBox, QListWidget, QMainWindow, QRadioButton, QVBoxLayout, QWidget) import i18n_rc class LanguageChooser(QDialog): def __init__(self, parent=None): super(LanguageChooser, self).__init__(parent, Qt.WindowStaysOnTopHint) self.qmFileForCheckBoxMap = {} self.mainWindowForCheckBoxMap = {} groupBox = QGroupBox("Languages") groupBoxLayout = QGridLayout() qmFiles = self.findQmFiles() for i, qmf in enumerate(qmFiles): checkBox = QCheckBox(self.languageName(qmf)) self.qmFileForCheckBoxMap[checkBox] = qmf checkBox.toggled.connect(self.checkBoxToggled) groupBoxLayout.addWidget(checkBox, i / 2, i % 2) groupBox.setLayout(groupBoxLayout) buttonBox = QDialogButtonBox() showAllButton = buttonBox.addButton("Show All", QDialogButtonBox.ActionRole) hideAllButton = buttonBox.addButton("Hide All", QDialogButtonBox.ActionRole) showAllButton.clicked.connect(self.showAll) hideAllButton.clicked.connect(self.hideAll) mainLayout = QVBoxLayout() mainLayout.addWidget(groupBox) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("I18N") def eventFilter(self, object, event): if event.type() == QEvent.Close: if isinstance(object, MainWindow): window = object for checkBox, w in self.mainWindowForCheckBoxMap.items(): if w is window: break else: checkBox = None if checkBox: checkBox.setChecked(False) return QWidget.eventFilter(self, object, event) def closeEvent(self, event): QApplication.instance().quit() def checkBoxToggled(self): checkBox = self.sender() window = self.mainWindowForCheckBoxMap.get(checkBox) if not window: translator = QTranslator() translator.load(self.qmFileForCheckBoxMap[checkBox]) QApplication.installTranslator(translator) # Because we will be installing an event filter for the main window # it is important that this instance isn't garbage collected before # the main window when the program terminates. We ensure this by # making the main window a child of this one. window = MainWindow(self) window.setPalette(QPalette(self.colorForLanguage(checkBox.text()))) window.installEventFilter(self) self.mainWindowForCheckBoxMap[checkBox] = window window.setVisible(checkBox.isChecked()) def showAll(self): for checkBox in self.qmFileForCheckBoxMap.keys(): checkBox.setChecked(True) def hideAll(self): for checkBox in self.qmFileForCheckBoxMap.keys(): checkBox.setChecked(False) def findQmFiles(self): trans_dir = QDir(':/translations') fileNames = trans_dir.entryList(['*.qm'], QDir.Files, QDir.Name) return [trans_dir.filePath(fn) for fn in fileNames] def languageName(self, qmFile): translator = QTranslator() translator.load(qmFile) return translator.translate("MainWindow", "English") def colorForLanguage(self, language): hashValue = hash(language) red = 156 + (hashValue & 0x3F) green = 156 + ((hashValue >> 6) & 0x3F) blue = 156 + ((hashValue >> 12) & 0x3F) return QColor(red, green, blue) class MainWindow(QMainWindow): listEntries = [QT_TRANSLATE_NOOP("MainWindow", "First"), QT_TRANSLATE_NOOP("MainWindow", "Second"), QT_TRANSLATE_NOOP("MainWindow", "Third")] def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.createGroupBox() listWidget = QListWidget() for le in MainWindow.listEntries: listWidget.addItem(self.tr(le)) mainLayout = QVBoxLayout() mainLayout.addWidget(self.groupBox) mainLayout.addWidget(listWidget) self.centralWidget.setLayout(mainLayout) exitAction = QAction(self.tr("E&xit"), self, triggered=QApplication.instance().quit) fileMenu = self.menuBar().addMenu(self.tr("&File")) fileMenu.setPalette(QPalette(Qt.red)) fileMenu.addAction(exitAction) self.setWindowTitle(self.tr("Language: %s") % self.tr("English")) self.statusBar().showMessage(self.tr("Internationalization Example")) if self.tr("LTR") == "RTL": self.setLayoutDirection(Qt.RightToLeft) def createGroupBox(self): self.groupBox = QGroupBox(self.tr("View")) perspectiveRadioButton = QRadioButton(self.tr("Perspective")) isometricRadioButton = QRadioButton(self.tr("Isometric")) obliqueRadioButton = QRadioButton(self.tr("Oblique")) perspectiveRadioButton.setChecked(True) self.groupBoxLayout = QVBoxLayout() self.groupBoxLayout.addWidget(perspectiveRadioButton) self.groupBoxLayout.addWidget(isometricRadioButton) self.groupBoxLayout.addWidget(obliqueRadioButton) self.groupBox.setLayout(self.groupBoxLayout) if __name__ == "__main__": import sys app = QApplication(sys.argv) chooser = LanguageChooser() chooser.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tools/i18n/i18n.qrc0000644000076500000240000000120012613140041020262 0ustar philstaff00000000000000 translations/i18n_ar.qm translations/i18n_cs.qm translations/i18n_de.qm translations/i18n_el.qm translations/i18n_en.qm translations/i18n_eo.qm translations/i18n_fr.qm translations/i18n_it.qm translations/i18n_jp.qm translations/i18n_ko.qm translations/i18n_no.qm translations/i18n_ru.qm translations/i18n_sv.qm translations/i18n_zh.qm PyQt-gpl-5.5.1/examples/tools/i18n/i18n_rc.py0000644000076500000240000013724412613140041020633 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 15:44:15 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\x24\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x35\x00\x4d\x09\xa4\x00\x00\x00\x50\x00\x5a\xf0\x84\ \x00\x00\x00\x67\x02\xf0\x8c\x31\x00\x00\x00\x7e\x05\x93\x08\xe5\ \x00\x00\x00\x9b\x05\x9b\xa6\x44\x00\x00\x00\xb2\x06\x3c\xe8\x53\ \x00\x00\x00\xc7\x06\xec\x79\x65\x00\x00\x00\xe6\x0c\x4e\x30\xd8\ \x00\x00\x01\x05\x0e\x9f\xe7\x05\x00\x00\x01\x1a\x69\x00\x00\x01\ \x5f\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x00\x56\x00\x69\x00\x73\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x08\x00\x26\x00\x46\x00\x69\x00\x6c\ \x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x10\x00\x26\x00\x41\x00\ \x76\x00\x73\x00\x6c\x00\x75\x00\x74\x00\x74\x05\x00\x47\xdf\x04\ \x01\x03\x00\x00\x00\x0c\x00\x46\x00\xf8\x00\x72\x00\x73\x00\x74\ \x00\x65\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x0c\x00\x54\x00\ \x72\x00\x65\x00\x64\x00\x6a\x00\x65\x05\x00\x5a\xf0\x84\x01\x03\ \x00\x00\x00\x12\x00\x53\x00\x70\x00\x72\x00\xe5\x00\x6b\x00\x3a\ \x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\ \x0c\x00\x53\x00\x6b\x00\x6a\x00\x65\x00\x76\x00\x74\x05\x05\x93\ \x08\xe5\x01\x03\x00\x00\x00\x0a\x00\x41\x00\x6e\x00\x64\x00\x72\ \x00\x65\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x14\x00\x49\x00\ \x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\x69\x00\x73\x00\ \x6b\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x14\x00\x50\x00\x65\ \x00\x72\x00\x73\x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0a\x00\x4e\x00\x6f\x00\ \x72\x00\x73\x00\x6b\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x3a\ \x00\x49\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\x00\x61\x00\x73\ \x00\x6a\x00\x6f\x00\x6e\x00\x61\x00\x6c\x00\x69\x00\x73\x00\x65\ \x00\x72\x00\x69\x00\x6e\x00\x67\x00\x73\x00\x65\x00\x6b\x00\x73\ \x00\x65\x00\x6d\x00\x70\x00\x65\x00\x6c\x05\x0e\x9f\xe7\x05\x01\ \x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\ \x6f\x77\x00\ \x00\x00\x03\x26\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x2a\x00\x47\xdf\x04\ \x00\x00\x00\x45\x00\x4d\x09\xa4\x00\x00\x00\x5a\x00\x5a\xf0\x84\ \x00\x00\x00\x6d\x02\xf0\x8c\x31\x00\x00\x00\x80\x05\x93\x08\xe5\ \x00\x00\x00\x9f\x05\x9b\xa6\x44\x00\x00\x00\xb8\x06\x3c\xe8\x53\ \x00\x00\x00\xc9\x06\xec\x79\x65\x00\x00\x00\xe6\x0c\x4e\x30\xd8\ \x00\x00\x01\x07\x0e\x9f\xe7\x05\x00\x00\x01\x24\x69\x00\x00\x01\ \x61\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0e\x00\x41\x00\x73\x00\x70\x00\x65\x00\ \x6b\x00\x74\x00\x6f\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x10\ \x00\x26\x00\x44\x00\x6f\x00\x73\x00\x69\x00\x65\x00\x72\x00\x6f\ \x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0a\x00\x26\x00\x46\x00\ \x69\x00\x6e\x00\x69\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x08\ \x00\x55\x00\x6e\x00\x75\x00\x65\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x08\x00\x54\x00\x72\x00\x69\x00\x65\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x14\x00\x4c\x00\x69\x00\x6e\x00\x67\x00\x76\ \x00\x6f\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x0e\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x6b\x00\ \x76\x00\x61\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x06\x00\x44\ \x00\x75\x00\x65\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x12\x00\ \x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\x69\x00\ \x61\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x00\x50\x00\x65\ \x00\x72\x00\x73\x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\ \x00\x61\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x12\x00\x45\x00\ \x73\x00\x70\x00\x65\x00\x72\x00\x61\x00\x6e\x00\x74\x00\x6f\x05\ \x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x32\x00\x45\x00\x6b\x00\x7a\ \x00\x65\x00\x6d\x00\x70\x00\x6c\x00\x6f\x00\x20\x00\x70\x00\x72\ \x00\x69\x00\x20\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\ \x00\x61\x00\x63\x00\x69\x00\x69\x00\x67\x00\x6f\x05\x0e\x9f\xe7\ \x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\ \x6e\x64\x6f\x77\x00\ \x00\x00\x03\x4c\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x3d\x00\x4d\x09\xa4\x00\x00\x00\x58\x00\x5a\xf0\x84\ \x00\x00\x00\x71\x02\xf0\x8c\x31\x00\x00\x00\x8e\x05\x93\x08\xe5\ \x00\x00\x00\xaf\x05\x9b\xa6\x44\x00\x00\x00\xc8\x06\x3c\xe8\x53\ \x00\x00\x00\xe3\x06\xec\x79\x65\x00\x00\x01\x04\x0c\x4e\x30\xd8\ \x00\x00\x01\x25\x0e\x9f\xe7\x05\x00\x00\x01\x40\x69\x00\x00\x01\ \x87\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x00\x56\x00\x75\x00\x65\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x10\x00\x26\x00\x46\x00\x69\x00\x63\ \x00\x68\x00\x69\x00\x65\x00\x72\x05\x00\x2a\xd0\x25\x01\x03\x00\ \x00\x00\x10\x00\x26\x00\x51\x00\x75\x00\x69\x00\x74\x00\x74\x00\ \x65\x00\x72\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0e\x00\x50\ \x00\x72\x00\x65\x00\x6d\x00\x69\x00\x65\x00\x72\x05\x00\x4d\x09\ \xa4\x01\x03\x00\x00\x00\x12\x00\x54\x00\x72\x00\x6f\x00\x69\x00\ \x73\x00\x69\x00\xe8\x00\x6d\x00\x65\x05\x00\x5a\xf0\x84\x01\x03\ \x00\x00\x00\x16\x00\x4c\x00\x61\x00\x6e\x00\x67\x00\x75\x00\x65\ \x00\x20\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x0e\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\ \x75\x00\x65\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x10\x00\x44\ \x00\x65\x00\x75\x00\x78\x00\x69\x00\xe8\x00\x6d\x00\x65\x05\x05\ \x9b\xa6\x44\x01\x03\x00\x00\x00\x16\x00\x49\x00\x73\x00\x6f\x00\ \x6d\x00\xe9\x00\x74\x00\x72\x00\x69\x00\x71\x00\x75\x00\x65\x05\ \x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x00\x50\x00\x65\x00\x72\ \x00\x73\x00\x70\x00\x65\x00\x63\x00\x74\x00\x69\x00\x76\x00\x65\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x10\x00\x46\x00\x72\x00\ \x61\x00\x6e\x00\xe7\x00\x61\x00\x69\x00\x73\x05\x0c\x4e\x30\xd8\ \x01\x03\x00\x00\x00\x3c\x00\x45\x00\x78\x00\x65\x00\x6d\x00\x70\ \x00\x6c\x00\x65\x00\x20\x00\x64\x00\x27\x00\x69\x00\x6e\x00\x74\ \x00\x65\x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x61\x00\x6c\x00\x69\x00\x73\x00\x61\x00\x74\x00\x69\x00\x6f\ \x00\x6e\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\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\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\ \x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x1c\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x28\x00\x47\xdf\x04\ \x00\x00\x00\x41\x00\x4d\x09\xa4\x00\x00\x00\x58\x00\x5a\xf0\x84\ \x00\x00\x00\x6d\x02\xf0\x8c\x31\x00\x00\x00\x82\x05\x93\x08\xe5\ \x00\x00\x00\x9f\x05\x9b\xa6\x44\x00\x00\x00\xbc\x06\x3c\xe8\x53\ \x00\x00\x00\xd1\x06\xec\x79\x65\x00\x00\x00\xf2\x0c\x4e\x30\xd8\ \x00\x00\x01\x15\x0e\x9f\xe7\x05\x00\x00\x01\x2a\x69\x00\x00\x01\ \x57\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0c\x00\x50\x00\x6f\x00\x68\x00\x6c\x00\ \x65\x00\x64\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0e\x00\x26\ \x00\x53\x00\x6f\x00\x75\x00\x62\x00\x6f\x00\x72\x05\x00\x2a\xd0\ \x25\x01\x03\x00\x00\x00\x0c\x00\x26\x00\x4b\x00\x6f\x00\x6e\x00\ \x65\x00\x63\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0a\x00\x50\ \x00\x72\x00\x76\x00\x6e\x00\xed\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x0a\x00\x54\x01\x59\x00\x65\x00\x74\x00\xed\x05\x00\x5a\ \xf0\x84\x01\x03\x00\x00\x00\x12\x00\x4a\x00\x61\x00\x79\x00\x7a\ \x00\x6b\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x12\x00\x4e\x00\x61\x00\x6b\x00\x6c\x00\x6f\x00\ \x6e\x01\x1b\x00\x6e\x00\xfd\x05\x05\x93\x08\xe5\x01\x03\x00\x00\ \x00\x0a\x00\x44\x00\x72\x00\x75\x00\x68\x00\xfd\x05\x05\x9b\xa6\ \x44\x01\x03\x00\x00\x00\x16\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\ \x65\x00\x74\x00\x72\x00\x69\x00\x63\x00\x6b\x00\xfd\x05\x06\x3c\ \xe8\x53\x01\x03\x00\x00\x00\x18\x00\x50\x00\x65\x00\x72\x00\x73\ \x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\x00\x6e\x00\xed\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0a\x01\x0c\x00\x65\x00\ \x73\x00\x6b\x00\xfd\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x22\ \x00\x55\x00\x6b\x00\xe1\x00\x7a\x00\x6b\x00\x61\x00\x20\x00\x6c\ \x00\x6f\x00\x6b\x00\x61\x00\x6c\x00\x69\x00\x7a\x00\x61\x00\x63\ \x00\x65\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\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\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\ \x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x50\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x2a\x00\x47\xdf\x04\ \x00\x00\x00\x41\x00\x4d\x09\xa4\x00\x00\x00\x5c\x00\x5a\xf0\x84\ \x00\x00\x00\x75\x02\xf0\x8c\x31\x00\x00\x00\x90\x05\x93\x08\xe5\ \x00\x00\x00\xb1\x05\x9b\xa6\x44\x00\x00\x00\xc8\x06\x3c\xe8\x53\ \x00\x00\x00\xe3\x06\xec\x79\x65\x00\x00\x01\x04\x0c\x4e\x30\xd8\ \x00\x00\x01\x2b\x0e\x9f\xe7\x05\x00\x00\x01\x44\x69\x00\x00\x01\ \x8b\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0e\x00\x41\x00\x6e\x00\x73\x00\x69\x00\ \x63\x00\x68\x00\x74\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0c\ \x00\x26\x00\x44\x00\x61\x00\x74\x00\x65\x00\x69\x05\x00\x2a\xd0\ \x25\x01\x03\x00\x00\x00\x10\x00\x42\x00\x65\x00\x26\x00\x65\x00\ \x6e\x00\x64\x00\x65\x00\x6e\x05\x00\x47\xdf\x04\x01\x03\x00\x00\ \x00\x0e\x00\x45\x00\x72\x00\x73\x00\x74\x00\x65\x00\x6e\x00\x73\ \x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x10\x00\x44\x00\x72\x00\ \x69\x00\x74\x00\x74\x00\x65\x00\x6e\x00\x73\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x16\x00\x53\x00\x70\x00\x72\x00\x61\x00\x63\ \x00\x68\x00\x65\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\ \x31\x01\x03\x00\x00\x00\x0c\x00\x53\x00\x63\x00\x68\x00\x69\x00\ \x65\x00\x66\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x10\x00\x5a\ \x00\x77\x00\x65\x00\x69\x00\x74\x00\x65\x00\x6e\x00\x73\x05\x05\ \x9b\xa6\x44\x01\x03\x00\x00\x00\x16\x00\x49\x00\x73\x00\x6f\x00\ \x6d\x00\x65\x00\x74\x00\x72\x00\x69\x00\x73\x00\x63\x00\x68\x05\ \x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x1c\x00\x50\x00\x65\x00\x72\ \x00\x73\x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\x00\x69\ \x00\x73\x00\x63\x00\x68\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\ \x0e\x00\x44\x00\x65\x00\x75\x00\x74\x00\x73\x00\x63\x00\x68\x05\ \x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x3c\x00\x49\x00\x6e\x00\x74\ \x00\x65\x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x61\x00\x6c\x00\x69\x00\x73\x00\x69\x00\x65\x00\x72\x00\x75\ \x00\x6e\x00\x67\x00\x73\x00\x62\x00\x65\x00\x69\x00\x73\x00\x70\ \x00\x69\x00\x65\x00\x6c\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\ \x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\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\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x28\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x26\x00\x47\xdf\x04\ \x00\x00\x00\x3b\x00\x4d\x09\xa4\x00\x00\x00\x50\x00\x5a\xf0\x84\ \x00\x00\x00\x65\x02\xf0\x8c\x31\x00\x00\x00\x7a\x05\x93\x08\xe5\ \x00\x00\x00\x99\x05\x9b\xa6\x44\x00\x00\x00\xb2\x06\x3c\xe8\x53\ \x00\x00\x00\xcb\x06\xec\x79\x65\x00\x00\x00\xea\x0c\x4e\x30\xd8\ \x00\x00\x01\x0b\x0e\x9f\xe7\x05\x00\x00\x01\x26\x69\x00\x00\x01\ \x63\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0a\x00\x56\x00\x69\x00\x73\x00\x74\x00\ \x61\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0a\x00\x26\x00\x46\ \x00\x69\x00\x6c\x00\x65\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\ \x0a\x00\x26\x00\x45\x00\x73\x00\x63\x00\x69\x05\x00\x47\xdf\x04\ \x01\x03\x00\x00\x00\x0a\x00\x50\x00\x72\x00\x69\x00\x6d\x00\x6f\ \x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x0a\x00\x54\x00\x65\x00\ \x72\x00\x7a\x00\x6f\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x14\ \x00\x4c\x00\x69\x00\x6e\x00\x67\x00\x75\x00\x61\x00\x3a\x00\x20\ \x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\x0e\x00\ \x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x61\x05\x05\x93\ \x08\xe5\x01\x03\x00\x00\x00\x0e\x00\x53\x00\x65\x00\x63\x00\x6f\ \x00\x6e\x00\x64\x00\x6f\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\ \x14\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\ \x69\x00\x63\x00\x61\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\ \x00\x50\x00\x72\x00\x6f\x00\x73\x00\x70\x00\x65\x00\x74\x00\x74\ \x00\x69\x00\x63\x00\x61\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\ \x10\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x61\x00\x6e\x00\ \x6f\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x32\x00\x45\x00\x73\ \x00\x65\x00\x6d\x00\x70\x00\x69\x00\x6f\x00\x20\x00\x64\x00\x69\ \x00\x20\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x6c\x00\x69\x00\x7a\ \x00\x7a\x00\x61\x00\x7a\x00\x69\x00\x6f\x00\x6e\x00\x65\x05\x0e\ \x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\ \x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xe0\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x39\x00\x4d\x09\xa4\x00\x00\x00\x4c\x00\x5a\xf0\x84\ \x00\x00\x00\x5d\x02\xf0\x8c\x31\x00\x00\x00\x70\x05\x93\x08\xe5\ \x00\x00\x00\x8d\x05\x9b\xa6\x44\x00\x00\x00\xa0\x06\x3c\xe8\x53\ \x00\x00\x00\xb3\x06\xec\x79\x65\x00\x00\x00\xca\x0c\x4e\x30\xd8\ \x00\x00\x00\xdf\x0e\x9f\xe7\x05\x00\x00\x00\xf8\x69\x00\x00\x01\ \x1b\x03\x00\x00\x00\x06\x00\x52\x00\x54\x00\x4c\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x06\x45\x06\x31\x06\x26\x06\x49\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0a\x06\x27\x06\x44\x06\x45\ \x06\x44\x06\x41\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x08\x06\ \x23\x06\x2e\x06\x31\x06\x2c\x05\x00\x47\xdf\x04\x01\x03\x00\x00\ \x00\x06\x06\x23\x06\x48\x06\x44\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x08\x06\x2b\x06\x27\x06\x44\x06\x2b\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x12\x06\x27\x06\x44\x06\x44\x06\x3a\x06\x29\ \x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\ \x00\x00\x08\x06\x45\x06\x35\x06\x45\x06\x2a\x05\x05\x93\x08\xe5\ \x01\x03\x00\x00\x00\x08\x06\x2b\x06\x27\x06\x46\x06\x49\x05\x05\ \x9b\xa6\x44\x01\x03\x00\x00\x00\x0c\x06\x45\x06\x2a\x06\x45\x06\ \x27\x06\x2b\x06\x44\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x0a\ \x06\x45\x06\x46\x06\x38\x06\x48\x06\x31\x05\x06\xec\x79\x65\x01\ \x03\x00\x00\x00\x0e\x06\x27\x06\x44\x06\x39\x06\x31\x06\x28\x06\ \x4a\x06\x29\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x18\x06\x45\ \x06\x2b\x06\x27\x06\x44\x00\x20\x06\x27\x06\x44\x06\x2a\x06\x2f\ \x06\x48\x06\x4a\x06\x44\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\ \x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\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\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xbc\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x20\x00\x47\xdf\x04\ \x00\x00\x00\x37\x00\x4d\x09\xa4\x00\x00\x00\x4e\x00\x5a\xf0\x84\ \x00\x00\x00\x5f\x02\xf0\x8c\x31\x00\x00\x00\x70\x05\x93\x08\xe5\ \x00\x00\x00\x87\x05\x9b\xa6\x44\x00\x00\x00\x98\x06\x3c\xe8\x53\ \x00\x00\x00\xa9\x06\xec\x79\x65\x00\x00\x00\xbc\x0c\x4e\x30\xd8\ \x00\x00\x00\xcf\x0e\x9f\xe7\x05\x00\x00\x00\xe2\x69\x00\x00\x00\ \xf7\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x04\x89\xc6\x56\xfe\x05\x00\x05\xcf\xc7\ \x01\x03\x00\x00\x00\x0c\x65\x87\x4e\xf6\x00\x5b\x00\x26\x00\x46\ \x00\x5d\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0c\x90\x00\x51\ \xfa\x00\x5b\x00\x26\x00\x78\x00\x5d\x05\x00\x47\xdf\x04\x01\x03\ \x00\x00\x00\x06\x7b\x2c\x4e\x00\x4e\x2a\x05\x00\x4d\x09\xa4\x01\ \x03\x00\x00\x00\x06\x7b\x2c\x4e\x09\x4e\x2a\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x0c\x8b\xed\x8a\x00\x00\x3a\x00\x20\x00\x25\ \x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\x06\x65\x9c\x62\ \x95\x5f\x71\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x06\x7b\x2c\ \x4e\x8c\x4e\x2a\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x08\x7b\ \x49\x89\xd2\x62\x95\x5f\x71\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\ \x00\x08\x90\x0f\x89\xc6\x62\x95\x5f\x71\x05\x06\xec\x79\x65\x01\ \x03\x00\x00\x00\x08\x7b\x80\x4f\x53\x4e\x2d\x65\x87\x05\x0c\x4e\ \x30\xd8\x01\x03\x00\x00\x00\x0a\x56\xfd\x96\x45\x53\x16\x83\x03\ \x4f\x8b\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\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\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\ \x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xd2\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x3f\x00\x4d\x09\xa4\x00\x00\x00\x56\x00\x5a\xf0\x84\ \x00\x00\x00\x67\x02\xf0\x8c\x31\x00\x00\x00\x78\x05\x93\x08\xe5\ \x00\x00\x00\x8f\x05\x9b\xa6\x44\x00\x00\x00\xa4\x06\x3c\xe8\x53\ \x00\x00\x00\xb5\x06\xec\x79\x65\x00\x00\x00\xca\x0c\x4e\x30\xd8\ \x00\x00\x00\xdb\x0e\x9f\xe7\x05\x00\x00\x00\xec\x69\x00\x00\x01\ \x0d\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x88\x68\x79\x3a\x65\xb9\x5f\x0f\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x10\x30\xd5\x30\xa1\x30\xa4\ \x30\xeb\x00\x28\x00\x26\x00\x46\x00\x29\x05\x00\x2a\xd0\x25\x01\ \x03\x00\x00\x00\x0c\x7d\x42\x4e\x86\x00\x28\x00\x26\x00\x58\x00\ \x29\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x06\x7b\x2c\x4e\x00\ \x88\x4c\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x06\x7b\x2c\x4e\ \x09\x88\x4c\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x0c\x8a\x00\ \x8a\x9e\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x0a\x65\x9c\x30\x81\x62\x95\x5f\x71\x6c\xd5\x05\ \x05\x93\x08\xe5\x01\x03\x00\x00\x00\x06\x7b\x2c\x4e\x8c\x88\x4c\ \x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x0a\x7b\x49\x89\xd2\x62\ \x95\x5f\x71\x6c\xd5\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x06\ \x90\x60\x8f\xd1\x6c\xd5\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\ \x06\x65\xe5\x67\x2c\x8a\x9e\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\ \x00\x16\x56\xfd\x96\x9b\x53\x16\x00\x28\x00\x69\x00\x31\x00\x38\ \x00\x6e\x00\x29\x30\x6e\x4f\x8b\x05\x0e\x9f\xe7\x05\x01\x2f\x00\ \x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\ \x00\ \x00\x00\x03\x26\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x35\x00\x4d\x09\xa4\x00\x00\x00\x4a\x00\x5a\xf0\x84\ \x00\x00\x00\x61\x02\xf0\x8c\x31\x00\x00\x00\x78\x05\x93\x08\xe5\ \x00\x00\x00\x93\x05\x9b\xa6\x44\x00\x00\x00\xaa\x06\x3c\xe8\x53\ \x00\x00\x00\xc1\x06\xec\x79\x65\x00\x00\x00\xe8\x0c\x4e\x30\xd8\ \x00\x00\x01\x09\x0e\x9f\xe7\x05\x00\x00\x01\x22\x69\x00\x00\x01\ \x61\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x04\x12\x04\x38\x04\x34\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x08\x04\x24\x04\x30\x04\x39\x04\x3b\ \x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0a\x04\x12\x04\x4b\x04\ \x45\x04\x3e\x04\x34\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0c\ \x04\x1f\x04\x35\x04\x40\x04\x32\x04\x4b\x04\x39\x05\x00\x4d\x09\ \xa4\x01\x03\x00\x00\x00\x0c\x04\x22\x04\x40\x04\x35\x04\x42\x04\ \x38\x04\x39\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x10\x04\x2f\ \x04\x37\x04\x4b\x04\x3a\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\ \xf0\x8c\x31\x01\x03\x00\x00\x00\x0c\x04\x1a\x04\x43\x04\x40\x04\ \x41\x04\x38\x04\x32\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0c\ \x04\x12\x04\x42\x04\x3e\x04\x40\x04\x3e\x04\x39\x05\x05\x9b\xa6\ \x44\x01\x03\x00\x00\x00\x1c\x04\x18\x04\x37\x04\x3e\x04\x3c\x04\ \x35\x04\x42\x04\x40\x04\x38\x04\x47\x04\x35\x04\x41\x04\x3a\x04\ \x38\x04\x39\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x04\x1f\ \x04\x35\x04\x40\x04\x41\x04\x3f\x04\x35\x04\x3a\x04\x42\x04\x38\ \x04\x32\x04\x30\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0e\x04\ \x20\x04\x43\x04\x41\x04\x41\x04\x3a\x04\x38\x04\x39\x05\x0c\x4e\ \x30\xd8\x01\x03\x00\x00\x00\x34\x04\x1f\x04\x40\x04\x38\x04\x3c\ \x04\x35\x04\x40\x00\x20\x04\x38\x04\x3d\x04\x42\x04\x35\x04\x40\ \x04\x3d\x04\x30\x04\x46\x04\x38\x04\x3d\x04\x3e\x04\x30\x04\x3b\ \x04\x38\x04\x37\x04\x30\x04\x46\x04\x38\x04\x38\x05\x0e\x9f\xe7\ \x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\ \x6e\x64\x6f\x77\x00\ \x00\x00\x03\x2a\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x39\x00\x4d\x09\xa4\x00\x00\x00\x4e\x00\x5a\xf0\x84\ \x00\x00\x00\x63\x02\xf0\x8c\x31\x00\x00\x00\x78\x05\x93\x08\xe5\ \x00\x00\x00\x9b\x05\x9b\xa6\x44\x00\x00\x00\xb4\x06\x3c\xe8\x53\ \x00\x00\x00\xcb\x06\xec\x79\x65\x00\x00\x00\xe8\x0c\x4e\x30\xd8\ \x00\x00\x01\x09\x0e\x9f\xe7\x05\x00\x00\x01\x22\x69\x00\x00\x01\ \x65\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x00\x56\x00\x69\x00\x65\x00\x77\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0a\x00\x26\x00\x46\x00\x69\ \x00\x6c\x00\x65\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0a\x00\ \x45\x00\x26\x00\x78\x00\x69\x00\x74\x05\x00\x47\xdf\x04\x01\x03\ \x00\x00\x00\x0a\x00\x46\x00\x69\x00\x72\x00\x73\x00\x74\x05\x00\ \x4d\x09\xa4\x01\x03\x00\x00\x00\x0a\x00\x54\x00\x68\x00\x69\x00\ \x72\x00\x64\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x18\x00\x4c\ \x00\x61\x00\x6e\x00\x67\x00\x75\x00\x61\x00\x67\x00\x65\x00\x3a\ \x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\ \x0e\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x05\ \x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0c\x00\x53\x00\x65\x00\x63\ \x00\x6f\x00\x6e\x00\x64\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\ \x12\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\ \x69\x00\x63\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x00\x50\ \x00\x65\x00\x72\x00\x73\x00\x70\x00\x65\x00\x63\x00\x74\x00\x69\ \x00\x76\x00\x65\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0e\x00\ \x45\x00\x6e\x00\x67\x00\x6c\x00\x69\x00\x73\x00\x68\x05\x0c\x4e\ \x30\xd8\x01\x03\x00\x00\x00\x38\x00\x49\x00\x6e\x00\x74\x00\x65\ \x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\ \x00\x6c\x00\x69\x00\x7a\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x20\x00\x45\x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\ \x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \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\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\ \x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xb2\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x20\x00\x47\xdf\x04\ \x00\x00\x00\x33\x00\x4d\x09\xa4\x00\x00\x00\x46\x00\x5a\xf0\x84\ \x00\x00\x00\x57\x02\xf0\x8c\x31\x00\x00\x00\x68\x05\x93\x08\xe5\ \x00\x00\x00\x81\x05\x9b\xa6\x44\x00\x00\x00\x90\x06\x3c\xe8\x53\ \x00\x00\x00\xa1\x06\xec\x79\x65\x00\x00\x00\xb2\x0c\x4e\x30\xd8\ \x00\x00\x00\xc5\x0e\x9f\xe7\x05\x00\x00\x00\xd6\x69\x00\x00\x00\ \xed\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x04\xbc\xf4\xae\x30\x05\x00\x05\xcf\xc7\ \x01\x03\x00\x00\x00\x08\xd3\x0c\xc7\x7c\x00\x26\x00\x46\x05\x00\ \x2a\xd0\x25\x01\x03\x00\x00\x00\x08\xc8\x85\xb8\xcc\x00\x26\x00\ \x58\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x06\xcc\xab\xbc\x88\ \xc9\xf8\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x06\xc1\x38\xbc\ \x88\xc9\xf8\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x0e\xc5\xb8\ \xc5\xb4\x00\x20\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\ \x31\x01\x03\x00\x00\x00\x04\xbe\x57\xac\x01\x05\x05\x93\x08\xe5\ \x01\x03\x00\x00\x00\x06\xb4\x50\xbc\x88\xc9\xf8\x05\x05\x9b\xa6\ \x44\x01\x03\x00\x00\x00\x06\xb4\xf1\xce\x21\xb3\xc4\x05\x06\x3c\ \xe8\x53\x01\x03\x00\x00\x00\x08\xc6\xd0\xad\xfc\xd6\x54\xbc\x95\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x06\xd5\x5c\xad\x6d\xc5\ \xb4\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x0c\xad\x6d\xc8\x1c\ \xd6\x54\x00\x20\xc6\x08\xc8\x1c\x05\x0e\x9f\xe7\x05\x01\x2f\x00\ \x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\ \x00\ \x00\x00\x03\x2e\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x3b\x00\x4d\x09\xa4\x00\x00\x00\x56\x00\x5a\xf0\x84\ \x00\x00\x00\x6d\x02\xf0\x8c\x31\x00\x00\x00\x84\x05\x93\x08\xe5\ \x00\x00\x00\xa1\x05\x9b\xa6\x44\x00\x00\x00\xb6\x06\x3c\xe8\x53\ \x00\x00\x00\xcb\x06\xec\x79\x65\x00\x00\x00\xec\x0c\x4e\x30\xd8\ \x00\x00\x01\x0d\x0e\x9f\xe7\x05\x00\x00\x01\x26\x69\x00\x00\x01\ \x69\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x00\x56\x00\x69\x00\x73\x00\x61\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0c\x00\x26\x00\x41\x00\x72\ \x00\x6b\x00\x69\x00\x76\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\ \x10\x00\x26\x00\x41\x00\x76\x00\x73\x00\x6c\x00\x75\x00\x74\x00\ \x61\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0c\x00\x46\x00\xf6\ \x00\x72\x00\x73\x00\x74\x00\x61\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x0c\x00\x54\x00\x72\x00\x65\x00\x64\x00\x6a\x00\x65\x05\ \x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x12\x00\x53\x00\x70\x00\x72\ \x00\xe5\x00\x6b\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\ \x31\x01\x03\x00\x00\x00\x0a\x00\x53\x00\x6b\x00\x65\x00\x76\x00\ \x74\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0a\x00\x41\x00\x6e\ \x00\x64\x00\x72\x00\x61\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\ \x16\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\ \x69\x00\x73\x00\x6b\x00\x74\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\ \x00\x16\x00\x50\x00\x65\x00\x72\x00\x73\x00\x70\x00\x65\x00\x6b\ \x00\x74\x00\x69\x00\x76\x00\x74\x05\x06\xec\x79\x65\x01\x03\x00\ \x00\x00\x0e\x00\x53\x00\x76\x00\x65\x00\x6e\x00\x73\x00\x6b\x00\ \x61\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x38\x00\x49\x00\x6e\ \x00\x74\x00\x65\x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\ \x00\x6e\x00\x61\x00\x6c\x00\x69\x00\x73\x00\x65\x00\x72\x00\x69\ \x00\x6e\x00\x67\x00\x73\x00\x65\x00\x78\x00\x65\x00\x6d\x00\x70\ \x00\x65\x00\x6c\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\ \x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\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\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x24\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x3b\x00\x4d\x09\xa4\x00\x00\x00\x54\x00\x5a\xf0\x84\ \x00\x00\x00\x69\x02\xf0\x8c\x31\x00\x00\x00\x7e\x05\x93\x08\xe5\ \x00\x00\x00\x9d\x05\x9b\xa6\x44\x00\x00\x00\xb4\x06\x3c\xe8\x53\ \x00\x00\x00\xcd\x06\xec\x79\x65\x00\x00\x00\xec\x0c\x4e\x30\xd8\ \x00\x00\x01\x09\x0e\x9f\xe7\x05\x00\x00\x01\x24\x69\x00\x00\x01\ \x5f\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x03\x8c\x03\xc8\x03\xb7\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x0e\x00\x26\x03\x91\x03\xc1\x03\xc7\ \x03\xb5\x03\xaf\x03\xbf\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\ \x0e\x03\x88\x00\x26\x03\xbe\x03\xbf\x03\xb4\x03\xbf\x03\xc2\x05\ \x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0a\x03\xa0\x03\xc1\x03\xce\ \x03\xc4\x03\xbf\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x0a\x03\ \xa4\x03\xc1\x03\xaf\x03\xc4\x03\xbf\x05\x00\x5a\xf0\x84\x01\x03\ \x00\x00\x00\x14\x03\x93\x03\xbb\x03\xce\x03\xc3\x03\xc3\x03\xb1\ \x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\ \x00\x00\x0c\x03\xa0\x03\xbb\x03\xac\x03\xb3\x03\xb9\x03\xb1\x05\ \x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0e\x03\x94\x03\xb5\x03\xcd\ \x03\xc4\x03\xb5\x03\xc1\x03\xbf\x05\x05\x9b\xa6\x44\x01\x03\x00\ \x00\x00\x14\x03\x99\x03\xc3\x03\xbf\x03\xbc\x03\xb5\x03\xc4\x03\ \xc1\x03\xb9\x03\xba\x03\xae\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\ \x00\x12\x03\xa0\x03\xc1\x03\xbf\x03\xbf\x03\xc0\x03\xc4\x03\xb9\ \x03\xba\x03\xae\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x10\x03\ \x95\x03\xbb\x03\xbb\x03\xb7\x03\xbd\x03\xb9\x03\xba\x03\xac\x05\ \x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x30\x03\xa0\x03\xb1\x03\xc1\ \x03\xac\x03\xb4\x03\xb5\x03\xb9\x03\xb3\x03\xbc\x03\xb1\x00\x20\ \x03\xb4\x03\xb9\x03\xb5\x03\xb8\x03\xbd\x03\xbf\x03\xc0\x03\xbf\ \x03\xaf\x03\xb7\x03\xc3\x03\xb7\x03\xc2\x05\x0e\x9f\xe7\x05\x01\ \x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\ \x6f\x77\x00\ " qt_resource_name = b"\ \x00\x0c\ \x0d\xfc\x11\x13\ \x00\x74\ \x00\x72\x00\x61\x00\x6e\x00\x73\x00\x6c\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\ \x00\x0a\ \x04\x68\xac\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x6e\x00\x6f\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x59\xac\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x65\x00\x6f\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x50\xdc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x66\x00\x72\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x57\xec\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x63\x00\x73\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x58\x0c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x64\x00\x65\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x6d\xfc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x69\x00\x74\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x55\xdc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x7d\x3c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x7a\x00\x68\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x6c\xbc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x6a\x00\x70\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x65\x0c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x72\x00\x75\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x59\x9c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x65\x00\x6e\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x6f\xac\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x6b\x00\x6f\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x67\x1c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x73\x00\x76\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x56\x7c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x65\x00\x6c\x00\x2e\x00\x71\x00\x6d\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x02\ \x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x06\x52\ \x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x13\x42\ \x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x00\x27\xfc\ \x00\x00\x00\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x09\xa2\ \x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc2\ \x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xe6\ \x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x03\x28\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xbc\ \x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x00\x24\xca\ \x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x18\xe6\ \x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x10\x16\ \x00\x00\x01\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x22\x14\ \x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x16\x26\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/tools/i18n/translations/0000755000076500000240000000000012613140041021524 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_ar.qm0000644000076500000240000000134012613140041023322 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß9M ¤LZð„]ðŒ1p“囦D <èS³ìyeÊ N0ØßŸçøiRTLQ’E1&IÏÇ 'DEDA*Ð%#.1,Gß#HDM ¤+'D+Zð„'DD:): %1ðŒ1E5E*“å+'FI›¦D E*E'+D<èS EF8H1ìye'D91(J) N0ØE+'D 'D*/HJDŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_ar.ts0000644000076500000240000000273712613140041023346 0ustar philstaff00000000000000 MainWindow First أول Internationalization Example مثال التدويل Isometric متماثل Language: %1 اللغة: %1 English العربية Oblique مصمت Perspective منظور Second ثانى Third ثالث View مرئى E&xit أخرج &File المل٠LTR RTL PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_cs.qm0000644000076500000240000000143412613140041023331 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%(GßAM ¤XZð„mðŒ1‚“埛¦D¼<èSÑìyeò N0ØŸç*iWLTRQ’ PohledÏÇ&Soubor*Ð% &KonecGß PrvníM ¤ TYetíZð„Jayzk: %1ðŒ1Naklonný“å Druhý›¦DIsometrický<èSPerspektivníìye  eský N0Ø"Ukázka lokalizaceŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_cs.ts0000644000076500000240000000272212613140041023343 0ustar philstaff00000000000000 MainWindow View Pohled &File &Soubor E&xit &Konec First První Third TÅ™etí Language: %1 Jayzk: %1 English ÄŒeský Oblique NaklonÄ›ný Second Druhý Isometric Isometrický Perspective Perspektivní Internationalization Example Ukázka lokalizace LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_de.qm0000644000076500000240000000152012613140041023310 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%*GßAM ¤\Zð„uðŒ1“å±›¦DÈ<èSãìye N0Ø+ŸçDi‹LTRQ’AnsichtÏÇ &Datei*Ð%Be&endenGßErstensM ¤DrittensZð„Sprache: %1ðŒ1 Schief“åZweitens›¦DIsometrisch<èSPerspektivischìyeDeutsch N0Ø<InternationalisierungsbeispielŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_de.ts0000644000076500000240000000274112613140041023327 0ustar philstaff00000000000000 MainWindow View Ansicht &File &Datei E&xit Be&enden First Erstens Third Drittens English Deutsch Language: %1 Sprache: %1 Oblique Schief Second Zweitens Isometric Isometrisch Perspective Perspektivisch Internationalization Example Internationalisierungsbeispiel LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_el.qm0000644000076500000240000000144412613140041023325 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß;M ¤TZð„iðŒ1~“囦D´<èSÍìyeì N0Ø Ÿç$i_LTRQ’ŒÈ·ÏÇ&‘Áǵ¯¿*Ð%ˆ&¾¿´¿ÂGß  ÁÎÄ¿M ¤ ¤Á¯Ä¿Zð„“»ÎÃñ: %1ðŒ1  »¬³¹±“唵ÍĵÁ¿›¦D™Ã¿¼µÄÁ¹º®<èS Á¿¿ÀĹº®ìye•»»·½¹º¬ N0Ø0 ±Á¬´µ¹³¼± ´¹µ¸½¿À¿¯·Ã·ÂŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_el.ts0000644000076500000240000000305112613140041023332 0ustar philstaff00000000000000 MainWindow &File &ΑÏχείο E&xit Έ&ξοδος First ΠÏώτο Internationalization Example ΠαÏάδειγμα διεθνοποίησης Isometric ΙσομετÏική Language: %1 Γλώσσα: %1 English Ελληνικά Oblique Πλάγια Perspective ΠÏοοπτική Second ΔεÏτεÏο Third ΤÏίτο View Όψη LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_en.qm0000644000076500000240000000145212613140041023326 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß9M ¤NZð„cðŒ1x“å››¦D´<èSËìyeè N0Ø Ÿç"ieLTRQ’ViewÏÇ &File*Ð% E&xitGß FirstM ¤ ThirdZð„Language: %1ðŒ1Oblique“å Second›¦DIsometric<èSPerspectiveìyeEnglish N0Ø8Internationalization ExampleŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_en.ts0000644000076500000240000000271612613140041023343 0ustar philstaff00000000000000 MainWindow E&xit E&xit &File &File Internationalization Example Internationalization Example Language: %1 Language: %1 English English View View Perspective Perspective Isometric Isometric Oblique Oblique First First Second Second Third Third LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_eo.qm0000644000076500000240000000144612613140041023332 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%*GßEM ¤ZZð„mðŒ1€“埛¦D¸<èSÉìyeæ N0ØŸç$iaLTRQ’AspektoÏÇ&Dosiero*Ð% &FiniGßUnueM ¤TrieZð„Lingvo: %1ðŒ1Oblikva“åDue›¦DIsometria<èSPerspektivaìyeEsperanto N0Ø2Ekzemplo pri internaciigoŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_eo.ts0000644000076500000240000000271412613140041023342 0ustar philstaff00000000000000 MainWindow &File &Dosiero First Unue Internationalization Example Ekzemplo pri internaciigo Isometric Isometria Language: %1 Lingvo: %1 English Esperanto Oblique Oblikva Perspective Perspektiva Second Due Third Trie View Aspekto E&xit &Fini LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_fr.qm0000644000076500000240000000151412613140041023332 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß=M ¤XZð„qðŒ1ޓ坛¦DÈ<èSãìye N0Ø%Ÿç@i‡LTRQ’VueÏÇ&Fichier*Ð%&QuitterGßPremierM ¤TroisièmeZð„Langue : %1ðŒ1Oblique“åDeuxième›¦DIsométrique<èSPerspectiveìyeFrançais N0Ø<Exemple d'internationalisationŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_fr.ts0000644000076500000240000000275012613140041023346 0ustar philstaff00000000000000 MainWindow View Vue &File &Fichier E&xit &Quitter First Premier Third Troisième Language: %1 Langue : %1 English Français Oblique Oblique Second Deuxième Isometric Isométrique Perspective Perspective Internationalization Example Exemple d'internationalisation LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_it.qm0000644000076500000240000000145012613140041023336 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%&Gß;M ¤PZð„eðŒ1z“å™›¦D²<èSËìyeê N0Ø Ÿç&icLTRQ’ VistaÏÇ &File*Ð% &EsciGß PrimoM ¤ TerzoZð„Lingua: %1ðŒ1Obliqua“åSecondo›¦DIsometrica<èSProspetticaìyeItaliano N0Ø2Esempio di localizzazioneŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_it.ts0000644000076500000240000000271512613140041023354 0ustar philstaff00000000000000 MainWindow First Primo Internationalization Example Esempio di localizzazione Isometric Isometrica Language: %1 Lingua: %1 English Italiano Oblique Obliqua Perspective Prospettica Second Secondo Third Terzo View Vista E&xit &Esci &File &File LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_jp.qm0000644000076500000240000000132212613140041023331 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß?M ¤VZð„gðŒ1x“囦D¤<èSµìyeÊ N0ØÛŸçìi LTRQ’ˆhy:e¹_ÏÇ0Õ0¡0¤0ë(&F)*Ð% }BN†(&X)Gß{,NˆLM ¤{,N ˆLZð„ ŠŠž: %1ðŒ1 eœ0b•_qlÕ“å{,NŒˆL›¦D {I‰Òb•_qlÕ<èS`ÑlÕìyeeåg,Šž N0ØVý–›S(i18n)0nO‹Ÿç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_jp.ts0000644000076500000240000000276612613140041023357 0ustar philstaff00000000000000 MainWindow &File ファイル(&F) E&xit 終了(&X) First 第一行 Internationalization Example 国際化(i18n)ã®ä¾‹ Isometric 等角投影法 Language: %1 言語: %1 English 日本語 Oblique æ–œã‚æŠ•å½±æ³• Perspective é è¿‘法 Second 第二行 Third 第三行 View è¡¨ç¤ºæ–¹å¼ LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_ko.qm0000644000076500000240000000126212613140041023334 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð% Gß3M ¤FZð„WðŒ1h“囦D<èS¡ìye² N0ØÅŸçÖiíLTRQ’¼ô®0ÏÇÓ Ç|&F*Ð%È…¸Ì&XGßÌ«¼ˆÉøM ¤Á8¼ˆÉøZð„ŸŴ : %1ðŒ1¾W¬“å´P¼ˆÉø›¦D´ñÎ!³Ä<èSÆÐ­üÖT¼•ìyeÕ\­mÅ´ N0Ø ­mÈÖT ÆÈŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_ko.ts0000644000076500000240000000272612613140041023353 0ustar philstaff00000000000000 MainWindow &File 파ì¼&F E&xit 종료&X First 첫번째 Internationalization Example 국제화 예제 Isometric ë“±ì¸¡ë„ Language: %1 언어 : %1 English 한국어 Oblique ë¹—ê° Perspective ì›ê·¼í™”법 Second ë‘번째 Third 세번째 View 보기 LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_no.qm0000644000076500000240000000144412613140041023341 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß5M ¤PZð„gðŒ1~“å››¦D²<èSÇìyeæ N0ØŸçi_LTRQ’VisÏÇ&Fil*Ð%&AvsluttGß FørsteM ¤ TredjeZð„Språk: %1ðŒ1 Skjevt“å Andre›¦DIsometrisk<èSPerspektivìye Norsk N0Ø:InternasjonaliseringseksempelŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_no.ts0000644000076500000240000000271512613140041023354 0ustar philstaff00000000000000 MainWindow View Vis &File &Fil E&xit &Avslutt First Første Third Tredje Language: %1 SprÃ¥k: %1 English Norsk Oblique Skjevt Second Andre Isometric Isometrisk Perspective Perspektiv Internationalization Example Internasjonaliseringseksempel LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_pt.qm0000644000076500000240000000150612613140041023347 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%&GßAM ¤VZð„qðŒ1Œ“å«›¦DÄ<èSÝìyeü N0ØŸç:iLTRQ’ VisãoÏÇ&Arquivo*Ð% &SairGßPrimeiroM ¤TerceiroZð„Idioma: %1ðŒ1Oblíquo“åSegundo›¦DIsométrico<èSPerspectivaìyePortuguês N0Ø<Exemplo de InternacionalizaçãoŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_pt.ts0000644000076500000240000000274212613140041023363 0ustar philstaff00000000000000 MainWindow E&xit &Sair &File &Arquivo Internationalization Example Exemplo de Internacionalização Language: %1 Idioma: %1 English Português View Visão Perspective Perspectiva Isometric Isométrico Oblique Oblíquo First Primeiro Second Segundo Third Terceiro LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_ru.qm0000644000076500000240000000144612613140041023355 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß5M ¤JZð„aðŒ1x“å“›¦Dª<èSÁìyeè N0Ø Ÿç"iaLTRQ’84ÏÇ$09;*Ð% KE>4Gß 5@2K9M ¤ "@5B89Zð„/7K:: %1ðŒ1 C@A82“å B>@>9›¦D7><5B@8G5A:89<èS5@A?5:B820ìye CAA:89 N0Ø4@8<5@ 8=B5@=0F8=>0;870F88Ÿç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_ru.ts0000644000076500000240000000304512613140041023363 0ustar philstaff00000000000000 MainWindow View Вид &File Файл E&xit Выход First Первый Third Третий Language: %1 Язык: %1 English РуÑÑкий Oblique КурÑив Second Второй Isometric ИзометричеÑкий Perspective ПерÑпектива Internationalization Example Пример интернациноализации LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_sv.qm0000644000076500000240000000145612613140041023360 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß;M ¤VZð„mðŒ1„“å¡›¦D¶<èSËìyeì N0Ø Ÿç&iiLTRQ’VisaÏÇ &Arkiv*Ð%&AvslutaGß FörstaM ¤ TredjeZð„Språk: %1ðŒ1 Skevt“å Andra›¦DIsometriskt<èSPerspektivtìyeSvenska N0Ø8InternationaliseringsexempelŸç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_sv.ts0000644000076500000240000000272212613140041023366 0ustar philstaff00000000000000 MainWindow View Visa &File &Arkiv E&xit &Avsluta First Första Third Tredje Language: %1 SprÃ¥k: %1 English Svenska Oblique Skevt Second Andra Isometric Isometriskt Perspective Perspektivt Internationalization Example Internationaliseringsexempel LTR LTR PyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_zh.qm0000644000076500000240000000127412613140041023347 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð% Gß7M ¤NZð„_ðŒ1p“凛¦D˜<èS©ìye¼ N0ØÏŸçâi÷LTRQ’‰ÆVþÏÇ e‡Nö[&F]*Ð% Qú[&x]Gß{,NN*M ¤{,N N*Zð„ ‹íŠ: %1ðŒ1eœb•_q“å{,NŒN*›¦D{I‰Òb•_q<èS‰Æb•_qìye{€OSN-e‡ N0Ø Vý–ESƒO‹Ÿç/>— MainWindowPyQt-gpl-5.5.1/examples/tools/i18n/translations/i18n_zh.ts0000644000076500000240000000274112613140041023360 0ustar philstaff00000000000000 MainWindow View 视图 &File 文件[&F] E&xit 退出[&x] First 第一个 Third 第三个 Language: %1 语言: %1 English 简体中文 Oblique 斜投影 Second 第二个 Isometric 等角投影 Perspective é€è§†æŠ•å½± Internationalization Example 国际化范例 LTR LTR PyQt-gpl-5.5.1/examples/tools/README0000644000076500000240000000152012613140041017102 0ustar philstaff00000000000000PyQt is equipped with a range of capable tool classes, from containers and iterators to classes for string handling and manipulation. Other classes provide application infrastructure support, handling plugin loading and managing configuration files. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/tools/regexp.py0000755000076500000240000001723412613140041020102 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QRegExp, Qt from PyQt5.QtGui import QPalette from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QSizePolicy) class RegExpDialog(QDialog): MaxCaptures = 6 def __init__(self, parent=None): super(RegExpDialog, self).__init__(parent) self.patternComboBox = QComboBox() self.patternComboBox.setEditable(True) self.patternComboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) patternLabel = QLabel("&Pattern:") patternLabel.setBuddy(self.patternComboBox) self.escapedPatternLineEdit = QLineEdit() self.escapedPatternLineEdit.setReadOnly(True) palette = self.escapedPatternLineEdit.palette() palette.setBrush(QPalette.Base, palette.brush(QPalette.Disabled, QPalette.Base)) self.escapedPatternLineEdit.setPalette(palette) escapedPatternLabel = QLabel("&Escaped Pattern:") escapedPatternLabel.setBuddy(self.escapedPatternLineEdit) self.syntaxComboBox = QComboBox() self.syntaxComboBox.addItem("Regular expression v1", QRegExp.RegExp) self.syntaxComboBox.addItem("Regular expression v2", QRegExp.RegExp2) self.syntaxComboBox.addItem("Wildcard", QRegExp.Wildcard) self.syntaxComboBox.addItem("Fixed string", QRegExp.FixedString) syntaxLabel = QLabel("&Pattern Syntax:") syntaxLabel.setBuddy(self.syntaxComboBox) self.textComboBox = QComboBox() self.textComboBox.setEditable(True) self.textComboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) textLabel = QLabel("&Text:") textLabel.setBuddy(self.textComboBox) self.caseSensitiveCheckBox = QCheckBox("Case &Sensitive") self.caseSensitiveCheckBox.setChecked(True) self.minimalCheckBox = QCheckBox("&Minimal") indexLabel = QLabel("Index of Match:") self.indexEdit = QLineEdit() self.indexEdit.setReadOnly(True) matchedLengthLabel = QLabel("Matched Length:") self.matchedLengthEdit = QLineEdit() self.matchedLengthEdit.setReadOnly(True) self.captureLabels = [] self.captureEdits = [] for i in range(self.MaxCaptures): self.captureLabels.append(QLabel("Capture %d:" % i)) self.captureEdits.append(QLineEdit()) self.captureEdits[i].setReadOnly(True) self.captureLabels[0].setText("Match:") checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.caseSensitiveCheckBox) checkBoxLayout.addWidget(self.minimalCheckBox) checkBoxLayout.addStretch(1) mainLayout = QGridLayout() mainLayout.addWidget(patternLabel, 0, 0) mainLayout.addWidget(self.patternComboBox, 0, 1) mainLayout.addWidget(escapedPatternLabel, 1, 0) mainLayout.addWidget(self.escapedPatternLineEdit, 1, 1) mainLayout.addWidget(syntaxLabel, 2, 0) mainLayout.addWidget(self.syntaxComboBox, 2, 1) mainLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) mainLayout.addWidget(textLabel, 4, 0) mainLayout.addWidget(self.textComboBox, 4, 1) mainLayout.addWidget(indexLabel, 5, 0) mainLayout.addWidget(self.indexEdit, 5, 1) mainLayout.addWidget(matchedLengthLabel, 6, 0) mainLayout.addWidget(self.matchedLengthEdit, 6, 1) for i in range(self.MaxCaptures): mainLayout.addWidget(self.captureLabels[i], 7 + i, 0) mainLayout.addWidget(self.captureEdits[i], 7 + i, 1) self.setLayout(mainLayout) self.patternComboBox.editTextChanged.connect(self.refresh) self.textComboBox.editTextChanged.connect(self.refresh) self.caseSensitiveCheckBox.toggled.connect(self.refresh) self.minimalCheckBox.toggled.connect(self.refresh) self.syntaxComboBox.currentIndexChanged.connect(self.refresh) self.patternComboBox.addItem("[A-Za-z_]+([A-Za-z_0-9]*)") self.textComboBox.addItem("(10 + delta4)* 32") self.setWindowTitle("RegExp") self.setFixedHeight(self.sizeHint().height()) self.refresh() def refresh(self): self.setUpdatesEnabled(False) pattern = self.patternComboBox.currentText() text = self.textComboBox.currentText() escaped = str(pattern) escaped.replace('\\', '\\\\') escaped.replace('"', '\\"') self.escapedPatternLineEdit.setText('"' + escaped + '"') rx = QRegExp(pattern) cs = Qt.CaseSensitive if self.caseSensitiveCheckBox.isChecked() else Qt.CaseInsensitive rx.setCaseSensitivity(cs) rx.setMinimal(self.minimalCheckBox.isChecked()) syntax = self.syntaxComboBox.itemData(self.syntaxComboBox.currentIndex()) rx.setPatternSyntax(syntax) palette = self.patternComboBox.palette() if rx.isValid(): palette.setColor(QPalette.Text, self.textComboBox.palette().color(QPalette.Text)) else: palette.setColor(QPalette.Text, Qt.red) self.patternComboBox.setPalette(palette) self.indexEdit.setText(str(rx.indexIn(text))) self.matchedLengthEdit.setText(str(rx.matchedLength())) for i in range(self.MaxCaptures): self.captureLabels[i].setEnabled(i <= rx.captureCount()) self.captureEdits[i].setEnabled(i <= rx.captureCount()) self.captureEdits[i].setText(rx.cap(i)) self.setUpdatesEnabled(True) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = RegExpDialog() dialog.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tools/settingseditor/0000755000076500000240000000000012613140041021273 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/settingseditor/inifiles/0000755000076500000240000000000012613140041023075 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tools/settingseditor/inifiles/licensepage.ini0000644000076500000240000000141712613140041026060 0ustar philstaff00000000000000[Field%201] Bottom=89 Flags=MULTILINE|VSCROLL|READONLY Left=4 Right=296 State=No license agreement file found. Please contact support. Top=14 Type=Text [Field%202] Bottom=8 Left=4 Right=294 Text=Press Page Down to see the rest of the agreement. Top=0 Type=Label [Field%203] Bottom=111 Left=4 Right=297 Text=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install this software. Click Next to continue. Top=92 Type=Label [Field%204] Bottom=129 Flags=GROUP|NOTIFY Left=4 Right=299 Text=I &accept the terms in the License Agreement Top=120 Type=RadioButton [Field%205] Bottom=140 Flags=NOTIFY Left=4 Right=300 State=1 Text=I &do not accept the terms in the License Agreement Top=129 Type=RadioButton [Settings] NumFields=5 PyQt-gpl-5.5.1/examples/tools/settingseditor/inifiles/qsa.ini0000644000076500000240000000051312613140041024361 0ustar philstaff00000000000000[Field%201] Bottom=65 Left=0 Right=299 Text=QSA Build Options Top=9 Type=Groupbox [Field%202] Bottom=37 Left=20 Right=284 Text=Don't compile QSA Workbench into QSA. Top=27 Type=Checkbox [Field%203] Bottom=56 Left=20 Right=247 Text=Don't compile QSA Workbench nor QSA Editor into QSA. Top=45 Type=Checkbox [Settings] NumFields=3 PyQt-gpl-5.5.1/examples/tools/settingseditor/settingseditor.py0000755000076500000240000006444612613140041024735 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import (QByteArray, QDate, QDateTime, QEvent, QPoint, QRect, QRegExp, QSettings, QSize, Qt, QTime, QTimer) from PyQt5.QtGui import QColor, QIcon, QRegExpValidator, QValidator from PyQt5.QtWidgets import (QAbstractItemView, QAction, QApplication, QComboBox, QDialog, QDialogButtonBox, QFileDialog, QGridLayout, QGroupBox, QHeaderView, QInputDialog, QItemDelegate, QLabel, QLineEdit, QMainWindow, QMessageBox, QStyle, QStyleOptionViewItem, QTableWidget, QTableWidgetItem, QTreeWidget, QTreeWidgetItem, QVBoxLayout) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.settingsTree = SettingsTree() self.setCentralWidget(self.settingsTree) self.locationDialog = None self.createActions() self.createMenus() self.autoRefreshAct.setChecked(True) self.fallbacksAct.setChecked(True) self.setWindowTitle("Settings Editor") self.resize(500, 600) def openSettings(self): if self.locationDialog is None: self.locationDialog = LocationDialog(self) if self.locationDialog.exec_(): settings = QSettings(self.locationDialog.format(), self.locationDialog.scope(), self.locationDialog.organization(), self.locationDialog.application()) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(True) def openIniFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open INI File", '', "INI Files (*.ini *.conf)") if fileName: settings = QSettings(fileName, QSettings.IniFormat) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(False) def openPropertyList(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Property List", '', "Property List Files (*.plist)") if fileName: settings = QSettings(fileName, QSettings.NativeFormat) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(False) def openRegistryPath(self): path, ok = QInputDialog.getText(self, "Open Registry Path", "Enter the path in the Windows registry:", QLineEdit.Normal, 'HKEY_CURRENT_USER\\') if ok and path != '': settings = QSettings(path, QSettings.NativeFormat) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(False) def about(self): QMessageBox.about(self, "About Settings Editor", "The Settings Editor example shows how to access " "application settings using Qt.") def createActions(self): self.openSettingsAct = QAction("&Open Application Settings...", self, shortcut="Ctrl+O", triggered=self.openSettings) self.openIniFileAct = QAction("Open I&NI File...", self, shortcut="Ctrl+N", triggered=self.openIniFile) self.openPropertyListAct = QAction("Open Mac &Property List...", self, shortcut="Ctrl+P", triggered=self.openPropertyList) if sys.platform != 'darwin': self.openPropertyListAct.setEnabled(False) self.openRegistryPathAct = QAction("Open Windows &Registry Path...", self, shortcut="Ctrl+G", triggered=self.openRegistryPath) if sys.platform != 'win32': self.openRegistryPathAct.setEnabled(False) self.refreshAct = QAction("&Refresh", self, shortcut="Ctrl+R", enabled=False, triggered=self.settingsTree.refresh) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.autoRefreshAct = QAction("&Auto-Refresh", self, shortcut="Ctrl+A", checkable=True, enabled=False) self.autoRefreshAct.triggered.connect(self.settingsTree.setAutoRefresh) self.autoRefreshAct.triggered.connect(self.refreshAct.setDisabled) self.fallbacksAct = QAction("&Fallbacks", self, shortcut="Ctrl+F", checkable=True, enabled=False, triggered=self.settingsTree.setFallbacksEnabled) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.openSettingsAct) self.fileMenu.addAction(self.openIniFileAct) self.fileMenu.addAction(self.openPropertyListAct) self.fileMenu.addAction(self.openRegistryPathAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.refreshAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.optionsMenu = self.menuBar().addMenu("&Options") self.optionsMenu.addAction(self.autoRefreshAct) self.optionsMenu.addAction(self.fallbacksAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def setSettingsObject(self, settings): settings.setFallbacksEnabled(self.fallbacksAct.isChecked()) self.settingsTree.setSettingsObject(settings) self.refreshAct.setEnabled(True) self.autoRefreshAct.setEnabled(True) niceName = settings.fileName() niceName.replace('\\', '/') niceName = niceName.split('/')[-1] if not settings.isWritable(): niceName += " (read only)" self.setWindowTitle("%s - Settings Editor" % niceName) class LocationDialog(QDialog): def __init__(self, parent=None): super(LocationDialog, self).__init__(parent) self.formatComboBox = QComboBox() self.formatComboBox.addItem("Native") self.formatComboBox.addItem("INI") self.scopeComboBox = QComboBox() self.scopeComboBox.addItem("User") self.scopeComboBox.addItem("System") self.organizationComboBox = QComboBox() self.organizationComboBox.addItem("Trolltech") self.organizationComboBox.setEditable(True) self.applicationComboBox = QComboBox() self.applicationComboBox.addItem("Any") self.applicationComboBox.addItem("Application Example") self.applicationComboBox.addItem("Assistant") self.applicationComboBox.addItem("Designer") self.applicationComboBox.addItem("Linguist") self.applicationComboBox.setEditable(True) self.applicationComboBox.setCurrentIndex(3) formatLabel = QLabel("&Format:") formatLabel.setBuddy(self.formatComboBox) scopeLabel = QLabel("&Scope:") scopeLabel.setBuddy(self.scopeComboBox) organizationLabel = QLabel("&Organization:") organizationLabel.setBuddy(self.organizationComboBox) applicationLabel = QLabel("&Application:") applicationLabel.setBuddy(self.applicationComboBox) self.locationsGroupBox = QGroupBox("Setting Locations") self.locationsTable = QTableWidget() self.locationsTable.setSelectionMode(QAbstractItemView.SingleSelection) self.locationsTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.locationsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.locationsTable.setColumnCount(2) self.locationsTable.setHorizontalHeaderLabels(("Location", "Access")) self.locationsTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.locationsTable.horizontalHeader().resizeSection(1, 180) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.formatComboBox.activated.connect(self.updateLocationsTable) self.scopeComboBox.activated.connect(self.updateLocationsTable) self.organizationComboBox.lineEdit().editingFinished.connect(self.updateLocationsTable) self.applicationComboBox.lineEdit().editingFinished.connect(self.updateLocationsTable) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) locationsLayout = QVBoxLayout() locationsLayout.addWidget(self.locationsTable) self.locationsGroupBox.setLayout(locationsLayout) mainLayout = QGridLayout() mainLayout.addWidget(formatLabel, 0, 0) mainLayout.addWidget(self.formatComboBox, 0, 1) mainLayout.addWidget(scopeLabel, 1, 0) mainLayout.addWidget(self.scopeComboBox, 1, 1) mainLayout.addWidget(organizationLabel, 2, 0) mainLayout.addWidget(self.organizationComboBox, 2, 1) mainLayout.addWidget(applicationLabel, 3, 0) mainLayout.addWidget(self.applicationComboBox, 3, 1) mainLayout.addWidget(self.locationsGroupBox, 4, 0, 1, 2) mainLayout.addWidget(self.buttonBox, 5, 0, 1, 2) self.setLayout(mainLayout) self.updateLocationsTable() self.setWindowTitle("Open Application Settings") self.resize(650, 400) def format(self): if self.formatComboBox.currentIndex() == 0: return QSettings.NativeFormat else: return QSettings.IniFormat def scope(self): if self.scopeComboBox.currentIndex() == 0: return QSettings.UserScope else: return QSettings.SystemScope def organization(self): return self.organizationComboBox.currentText() def application(self): if self.applicationComboBox.currentText() == "Any": return '' return self.applicationComboBox.currentText() def updateLocationsTable(self): self.locationsTable.setUpdatesEnabled(False) self.locationsTable.setRowCount(0) for i in range(2): if i == 0: if self.scope() == QSettings.SystemScope: continue actualScope = QSettings.UserScope else: actualScope = QSettings.SystemScope for j in range(2): if j == 0: if not self.application(): continue actualApplication = self.application() else: actualApplication = '' settings = QSettings(self.format(), actualScope, self.organization(), actualApplication) row = self.locationsTable.rowCount() self.locationsTable.setRowCount(row + 1) item0 = QTableWidgetItem() item0.setText(settings.fileName()) item1 = QTableWidgetItem() disable = not (settings.childKeys() or settings.childGroups()) if row == 0: if settings.isWritable(): item1.setText("Read-write") disable = False else: item1.setText("Read-only") self.buttonBox.button(QDialogButtonBox.Ok).setDisabled(disable) else: item1.setText("Read-only fallback") if disable: item0.setFlags(item0.flags() & ~Qt.ItemIsEnabled) item1.setFlags(item1.flags() & ~Qt.ItemIsEnabled) self.locationsTable.setItem(row, 0, item0) self.locationsTable.setItem(row, 1, item1) self.locationsTable.setUpdatesEnabled(True) class SettingsTree(QTreeWidget): def __init__(self, parent=None): super(SettingsTree, self).__init__(parent) self.setItemDelegate(VariantDelegate(self)) self.setHeaderLabels(("Setting", "Type", "Value")) self.header().setSectionResizeMode(0, QHeaderView.Stretch) self.header().setSectionResizeMode(2, QHeaderView.Stretch) self.settings = None self.refreshTimer = QTimer() self.refreshTimer.setInterval(2000) self.autoRefresh = False self.groupIcon = QIcon() self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon), QIcon.Normal, QIcon.Off) self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirOpenIcon), QIcon.Normal, QIcon.On) self.keyIcon = QIcon() self.keyIcon.addPixmap(self.style().standardPixmap(QStyle.SP_FileIcon)) self.refreshTimer.timeout.connect(self.maybeRefresh) def setSettingsObject(self, settings): self.settings = settings self.clear() if self.settings is not None: self.settings.setParent(self) self.refresh() if self.autoRefresh: self.refreshTimer.start() else: self.refreshTimer.stop() def sizeHint(self): return QSize(800, 600) def setAutoRefresh(self, autoRefresh): self.autoRefresh = autoRefresh if self.settings is not None: if self.autoRefresh: self.maybeRefresh() self.refreshTimer.start() else: self.refreshTimer.stop() def setFallbacksEnabled(self, enabled): if self.settings is not None: self.settings.setFallbacksEnabled(enabled) self.refresh() def maybeRefresh(self): if self.state() != QAbstractItemView.EditingState: self.refresh() def refresh(self): if self.settings is None: return # The signal might not be connected. try: self.itemChanged.disconnect(self.updateSetting) except: pass self.settings.sync() self.updateChildItems(None) self.itemChanged.connect(self.updateSetting) def event(self, event): if event.type() == QEvent.WindowActivate: if self.isActiveWindow() and self.autoRefresh: self.maybeRefresh() return super(SettingsTree, self).event(event) def updateSetting(self, item): key = item.text(0) ancestor = item.parent() while ancestor: 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.autoRefresh: self.refresh() def updateChildItems(self, parent): dividerIndex = 0 for group in self.settings.childGroups(): childIndex = self.findChild(parent, group, dividerIndex) if childIndex != -1: child = self.childAt(parent, childIndex) child.setText(1, '') child.setText(2, '') child.setData(2, Qt.UserRole, None) self.moveItemForward(parent, childIndex, dividerIndex) else: child = self.createItem(group, parent, dividerIndex) child.setIcon(0, self.groupIcon) dividerIndex += 1 self.settings.beginGroup(group) self.updateChildItems(child) self.settings.endGroup() for key in self.settings.childKeys(): childIndex = self.findChild(parent, key, 0) if childIndex == -1 or childIndex >= dividerIndex: if childIndex != -1: child = self.childAt(parent, childIndex) for i in range(child.childCount()): self.deleteItem(child, i) self.moveItemForward(parent, childIndex, dividerIndex) else: child = self.createItem(key, parent, dividerIndex) child.setIcon(0, self.keyIcon) dividerIndex += 1 else: child = self.childAt(parent, childIndex) value = self.settings.value(key) if value is None: child.setText(1, 'Invalid') else: child.setText(1, value.__class__.__name__) child.setText(2, VariantDelegate.displayText(value)) child.setData(2, Qt.UserRole, value) while dividerIndex < self.childCount(parent): self.deleteItem(parent, dividerIndex) def createItem(self, text, parent, index): after = None if index != 0: after = self.childAt(parent, index - 1) if parent is not None: item = QTreeWidgetItem(parent, after) else: item = QTreeWidgetItem(self, after) item.setText(0, text) item.setFlags(item.flags() | Qt.ItemIsEditable) return item def deleteItem(self, parent, index): if parent is not None: item = parent.takeChild(index) else: item = self.takeTopLevelItem(index) del item def childAt(self, parent, index): if parent is not None: return parent.child(index) else: return self.topLevelItem(index) def childCount(self, parent): if parent is not None: return parent.childCount() else: return self.topLevelItemCount() def findChild(self, parent, text, startIndex): for i in range(self.childCount(parent)): if self.childAt(parent, i).text(0) == text: return i return -1 def moveItemForward(self, parent, oldIndex, newIndex): for int in range(oldIndex - newIndex): self.deleteItem(parent, newIndex) class VariantDelegate(QItemDelegate): def __init__(self, parent=None): super(VariantDelegate, self).__init__(parent) self.boolExp = QRegExp() self.boolExp.setPattern('true|false') self.boolExp.setCaseSensitivity(Qt.CaseInsensitive) self.byteArrayExp = QRegExp() self.byteArrayExp.setPattern('[\\x00-\\xff]*') self.charExp = QRegExp() self.charExp.setPattern('.') self.colorExp = QRegExp() self.colorExp.setPattern('\\(([0-9]*),([0-9]*),([0-9]*),([0-9]*)\\)') self.doubleExp = QRegExp() self.doubleExp.setPattern('') self.pointExp = QRegExp() self.pointExp.setPattern('\\((-?[0-9]*),(-?[0-9]*)\\)') self.rectExp = QRegExp() self.rectExp.setPattern('\\((-?[0-9]*),(-?[0-9]*),(-?[0-9]*),(-?[0-9]*)\\)') self.signedIntegerExp = QRegExp() self.signedIntegerExp.setPattern('-?[0-9]*') self.sizeExp = QRegExp(self.pointExp) self.unsignedIntegerExp = QRegExp() self.unsignedIntegerExp.setPattern('[0-9]*') self.dateExp = QRegExp() self.dateExp.setPattern('([0-9]{,4})-([0-9]{,2})-([0-9]{,2})') self.timeExp = QRegExp() self.timeExp.setPattern('([0-9]{,2}):([0-9]{,2}):([0-9]{,2})') self.dateTimeExp = QRegExp() self.dateTimeExp.setPattern(self.dateExp.pattern() + 'T' + self.timeExp.pattern()) def paint(self, painter, option, index): if index.column() == 2: value = index.model().data(index, Qt.UserRole) if not self.isSupportedType(value): myOption = QStyleOptionViewItem(option) myOption.state &= ~QStyle.State_Enabled super(VariantDelegate, self).paint(painter, myOption, index) return super(VariantDelegate, self).paint(painter, option, index) def createEditor(self, parent, option, index): if index.column() != 2: return None originalValue = index.model().data(index, Qt.UserRole) if not self.isSupportedType(originalValue): return None lineEdit = QLineEdit(parent) lineEdit.setFrame(False) if isinstance(originalValue, bool): regExp = self.boolExp elif isinstance(originalValue, float): regExp = self.doubleExp elif isinstance(originalValue, int): regExp = self.signedIntegerExp elif isinstance(originalValue, QByteArray): regExp = self.byteArrayExp elif isinstance(originalValue, QColor): regExp = self.colorExp elif isinstance(originalValue, QDate): regExp = self.dateExp elif isinstance(originalValue, QDateTime): regExp = self.dateTimeExp elif isinstance(originalValue, QTime): regExp = self.timeExp elif isinstance(originalValue, QPoint): regExp = self.pointExp elif isinstance(originalValue, QRect): regExp = self.rectExp elif isinstance(originalValue, QSize): regExp = self.sizeExp else: regExp = QRegExp() if not regExp.isEmpty(): validator = QRegExpValidator(regExp, lineEdit) lineEdit.setValidator(validator) return lineEdit def setEditorData(self, editor, index): value = index.model().data(index, Qt.UserRole) if editor is not None: editor.setText(self.displayText(value)) def setModelData(self, editor, model, index): if not editor.isModified(): return text = editor.text() validator = editor.validator() if validator is not None: state, text, _ = validator.validate(text, 0) if state != QValidator.Acceptable: return originalValue = index.model().data(index, Qt.UserRole) if isinstance(originalValue, QColor): self.colorExp.exactMatch(text) value = QColor(min(int(self.colorExp.cap(1)), 255), min(int(self.colorExp.cap(2)), 255), min(int(self.colorExp.cap(3)), 255), min(int(self.colorExp.cap(4)), 255)) elif isinstance(originalValue, QDate): value = QDate.fromString(text, Qt.ISODate) if not value.isValid(): return elif isinstance(originalValue, QDateTime): value = QDateTime.fromString(text, Qt.ISODate) if not value.isValid(): return elif isinstance(originalValue, QTime): value = QTime.fromString(text, Qt.ISODate) if not value.isValid(): return elif isinstance(originalValue, QPoint): self.pointExp.exactMatch(text) value = QPoint(int(self.pointExp.cap(1)), int(self.pointExp.cap(2))) elif isinstance(originalValue, QRect): self.rectExp.exactMatch(text) value = QRect(int(self.rectExp.cap(1)), int(self.rectExp.cap(2)), int(self.rectExp.cap(3)), int(self.rectExp.cap(4))) elif isinstance(originalValue, QSize): self.sizeExp.exactMatch(text) value = QSize(int(self.sizeExp.cap(1)), int(self.sizeExp.cap(2))) elif isinstance(originalValue, list): value = text.split(',') else: value = type(originalValue)(text) model.setData(index, self.displayText(value), Qt.DisplayRole) model.setData(index, value, Qt.UserRole) @staticmethod def isSupportedType(value): return isinstance(value, (bool, float, int, QByteArray, str, QColor, QDate, QDateTime, QTime, QPoint, QRect, QSize, list)) @staticmethod def displayText(value): if isinstance(value, (bool, int, QByteArray)): return str(value) if isinstance(value, str): return value elif isinstance(value, float): return '%g' % value elif isinstance(value, QColor): return '(%u,%u,%u,%u)' % (value.red(), value.green(), value.blue(), value.alpha()) elif isinstance(value, (QDate, QDateTime, QTime)): return value.toString(Qt.ISODate) elif isinstance(value, QPoint): return '(%d,%d)' % (value.x(), value.y()) elif isinstance(value, QRect): return '(%d,%d,%d,%d)' % (value.x(), value.y(), value.width(), value.height()) elif isinstance(value, QSize): return '(%d,%d)' % (value.width(), value.height()) elif isinstance(value, list): return ','.join(value) elif value is None: return '' return '<%s>' % value if __name__ == '__main__': app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/0000755000076500000240000000000012613140041017112 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tutorials/addressbook/0000755000076500000240000000000012613140041021412 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/tutorials/addressbook/part1.py0000755000076500000240000000564212613140041023025 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import QGridLayout, QLabel, QLineEdit, QTextEdit, QWidget class AddressBook(QWidget): def __init__(self, parent=None): super(AddressBook, self).__init__(parent) nameLabel = QLabel("Name:") self.nameLine = QLineEdit() addressLabel = QLabel("Address:") self.addressText = QTextEdit() mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/part2.py0000755000076500000240000001420212613140041023016 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.cancelButton.clicked.connect(self.cancel) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton, Qt.AlignTop) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or 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", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) self.submitButton.hide() self.cancelButton.hide() def cancel(self): self.nameLine.setText(self.oldName) self.nameLine.setReadOnly(True) self.addressText.setText(self.oldAddress) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) self.submitButton.hide() self.cancelButton.hide() if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/part3.py0000755000076500000240000002017112613140041023021 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton, Qt.AlignTop) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 3, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or 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", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number > 1) self.submitButton.hide() self.cancelButton.hide() def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number > 1) self.submitButton.hide() self.cancelButton.hide() def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/part4.py0000755000076500000240000002477412613140041023037 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 3, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/part5.py0000755000076500000240000003047312613140041023031 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.findButton = QPushButton("&Find") self.findButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.dialog = FindDialog() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.findButton.clicked.connect(self.findContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.findButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 2, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def findContact(self): self.dialog.show() if self.dialog.exec_() == QDialog.Accepted: contactName = self.dialog.getFindText() if contactName in self.contacts: self.nameLine.setText(contactName) self.addressText.setText(self.contacts[contactName]) else: QMessageBox.information(self, "Contact Not Found", "Sorry, \"%s\" is not in your address book." % contactName) return self.updateInterface(self.NavigationMode) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.findButton.setEnabled(number > 2) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) findLabel = QLabel("Enter the name of a contact:") self.lineEdit = QLineEdit() self.findButton = QPushButton("&Find") self.findText = '' layout = QHBoxLayout() layout.addWidget(findLabel) layout.addWidget(self.lineEdit) layout.addWidget(self.findButton) self.setLayout(layout) self.setWindowTitle("Find a Contact") self.findButton.clicked.connect(self.findClicked) self.findButton.clicked.connect(self.accept) def findClicked(self): text = self.lineEdit.text() if not text: QMessageBox.information(self, "Empty Field", "Please enter a name.") return else: self.findText = text self.lineEdit.clear() self.hide() def getFindText(self): return self.findText if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/part6.py0000755000076500000240000003462112613140041023031 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QDialog, QFileDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.findButton = QPushButton("&Find") self.findButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.loadButton = QPushButton("&Load...") self.loadButton.setToolTip("Load contacts from a file") self.saveButton = QPushButton("Sa&ve...") self.saveButton.setToolTip("Save contacts to a file") self.saveButton.setEnabled(False) self.dialog = FindDialog() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.findButton.clicked.connect(self.findContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) self.loadButton.clicked.connect(self.loadFromFile) self.saveButton.clicked.connect(self.saveToFile) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.findButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addWidget(self.loadButton) buttonLayout1.addWidget(self.saveButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 2, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def findContact(self): self.dialog.show() if self.dialog.exec_() == QDialog.Accepted: contactName = self.dialog.getFindText() if contactName in self.contacts: self.nameLine.setText(contactName) self.addressText.setText(self.contacts[contactName]) else: QMessageBox.information(self, "Contact Not Found", "Sorry, \"%s\" is not in your address book." % contactName) return self.updateInterface(self.NavigationMode) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() self.loadButton.setEnabled(False) self.saveButton.setEnabled(False) elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.findButton.setEnabled(number > 2) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() self.loadButton.setEnabled(True) self.saveButton.setEnabled(number >= 1) def saveToFile(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: out_file = open(str(fileName), 'wb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return pickle.dump(self.contacts, out_file) out_file.close() def loadFromFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: in_file = open(str(fileName), 'rb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return self.contacts = pickle.load(in_file) in_file.close() if len(self.contacts) == 0: QMessageBox.information(self, "No contacts in file", "The file you are attempting to open contains no " "contacts.") else: for name, address in self.contacts: self.nameLine.setText(name) self.addressText.setText(address) self.updateInterface(self.NavigationMode) class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) findLabel = QLabel("Enter the name of a contact:") self.lineEdit = QLineEdit() self.findButton = QPushButton("&Find") self.findText = '' layout = QHBoxLayout() layout.addWidget(findLabel) layout.addWidget(self.lineEdit) layout.addWidget(self.findButton) self.setLayout(layout) self.setWindowTitle("Find a Contact") self.findButton.clicked.connect(self.findClicked) self.findButton.clicked.connect(self.accept) def findClicked(self): text = self.lineEdit.text() if not text: QMessageBox.information(self, "Empty Field", "Please enter a name.") return self.findText = text self.lineEdit.clear() self.hide() def getFindText(self): return self.findText if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/part7.py0000755000076500000240000004002412613140041023024 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import QFile, QIODevice, Qt, QTextStream from PyQt5.QtWidgets import (QDialog, QFileDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.findButton = QPushButton("&Find") self.findButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.loadButton = QPushButton("&Load...") self.loadButton.setToolTip("Load contacts from a file") self.saveButton = QPushButton("Sa&ve...") self.saveButton.setToolTip("Save contacts to a file") self.saveButton.setEnabled(False) self.exportButton = QPushButton("Ex&port") self.exportButton.setToolTip("Export as vCard") self.exportButton.setEnabled(False) self.dialog = FindDialog() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.findButton.clicked.connect(self.findContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) self.loadButton.clicked.connect(self.loadFromFile) self.saveButton.clicked.connect(self.saveToFile) self.exportButton.clicked.connect(self.exportAsVCard) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.findButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addWidget(self.loadButton) buttonLayout1.addWidget(self.saveButton) buttonLayout1.addWidget(self.exportButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 2, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def findContact(self): self.dialog.show() if self.dialog.exec_() == QDialog.Accepted: contactName = self.dialog.getFindText() if contactName in self.contacts: self.nameLine.setText(contactName) self.addressText.setText(self.contacts[contactName]) else: QMessageBox.information(self, "Contact Not Found", "Sorry, \"%s\" is not in your address book." % contactName) return self.updateInterface(self.NavigationMode) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() self.loadButton.setEnabled(False) self.saveButton.setEnabled(False) self.exportButton.setEnabled(False) elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.findButton.setEnabled(number > 2) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() self.exportButton.setEnabled(number >= 1) self.loadButton.setEnabled(True) self.saveButton.setEnabled(number >= 1) def saveToFile(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: out_file = open(str(fileName), 'wb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return pickle.dump(self.contacts, out_file) out_file.close() def loadFromFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: in_file = open(str(fileName), 'rb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return self.contacts = pickle.load(in_file) in_file.close() if len(self.contacts) == 0: QMessageBox.information(self, "No contacts in file", "The file you are attempting to open contains no " "contacts.") else: for name, address in self.contacts: self.nameLine.setText(name) self.addressText.setText(address) self.updateInterface(self.NavigationMode) def exportAsVCard(self): name = str(self.nameLine.text()) address = self.addressText.toPlainText() nameList = name.split() if len(nameList) > 1: firstName = nameList[0] lastName = nameList[-1] else: firstName = name lastName = '' fileName, _ = QFileDialog.getSaveFileName(self, "Export Contact", '', "vCard Files (*.vcf);;All Files (*)") if not fileName: return out_file = QFile(fileName) if not out_file.open(QIODevice.WriteOnly): QMessageBox.information(self, "Unable to open file", out_file.errorString()) return out_s = QTextStream(out_file) out_s << 'BEGIN:VCARD' << '\n' out_s << 'VERSION:2.1' << '\n' out_s << 'N:' << lastName << ';' << firstName << '\n' out_s << 'FN:' << ' '.join(nameList) << '\n' address.replace(';', '\\;') address.replace('\n', ';') address.replace(',', ' ') out_s << 'ADR;HOME:;' << address << '\n' out_s << 'END:VCARD' << '\n' QMessageBox.information(self, "Export Successful", "\"%s\" has been exported as a vCard." % name) class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) findLabel = QLabel("Enter the name of a contact:") self.lineEdit = QLineEdit() self.findButton = QPushButton("&Find") self.findText = '' layout = QHBoxLayout() layout.addWidget(findLabel) layout.addWidget(self.lineEdit) layout.addWidget(self.findButton) self.setLayout(layout) self.setWindowTitle("Find a Contact") self.findButton.clicked.connect(self.findClicked) self.findButton.clicked.connect(self.accept) def findClicked(self): text = self.lineEdit.text() if not text: QMessageBox.information(self, "Empty Field", "Please enter a name.") return self.findText = text self.lineEdit.clear() self.hide() def getFindText(self): return self.findText if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/tutorials/addressbook/README0000644000076500000240000000125012613140041022270 0ustar philstaff00000000000000The Address Book Tutorial shows how to put together a simple yet fully-functioning GUI application. The tutorial chapters can be found in the Qt documentation, which can be viewed using Qt Assistant or a Web browser. The tutorial is also available online at http://doc.trolltech.com/tutorial.html Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/webkit/0000755000076500000240000000000012613140041016351 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/webkit/domtraversal/0000755000076500000240000000000012613140041021054 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/webkit/domtraversal/domtraversal.py0000755000076500000240000000641012613140041024135 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidgetItem from ui_window import Ui_Window class Window(QMainWindow, Ui_Window): def __init__(self, parent=None): super(Window, self).__init__(parent) self.setupUi(self) def setUrl(self, url): self.webView.setUrl(url) def on_webView_loadFinished(self): # Begin document inspection. self.treeWidget.clear() frame = self.webView.page().mainFrame() document = frame.documentElement() self.examineChildElements(document, self.treeWidget.invisibleRootItem()) def examineChildElements(self, parentElement, parentItem): # Traverse the document. element = parentElement.firstChild() while not element.isNull(): item = QTreeWidgetItem() item.setText(0, element.tagName()) parentItem.addChild(item) self.examineChildElements(element, item) element = element.nextSibling() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() window.setUrl(QUrl('http://qt-project.org/')) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/webkit/domtraversal/ui_window.py0000644000076500000240000000520312613140041023432 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'window.ui' # # Created: Fri Jul 26 06:50:59 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Window(object): def setupUi(self, Window): Window.setObjectName("Window") Window.resize(800, 600) self.centralwidget = QtWidgets.QWidget(Window) self.centralwidget.setObjectName("centralwidget") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout_2.setContentsMargins(-1, 4, -1, 4) self.verticalLayout_2.setObjectName("verticalLayout_2") self.webView = QtWebKitWidgets.QWebView(self.centralwidget) self.webView.setUrl(QtCore.QUrl("http://qt.nokia.com/")) self.webView.setObjectName("webView") self.verticalLayout_2.addWidget(self.webView) Window.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Window) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 27)) self.menubar.setObjectName("menubar") Window.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Window) self.statusbar.setObjectName("statusbar") Window.setStatusBar(self.statusbar) self.dockWidget = QtWidgets.QDockWidget(Window) self.dockWidget.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea) self.dockWidget.setObjectName("dockWidget") self.dockWidgetContents = QtWidgets.QWidget() self.dockWidgetContents.setObjectName("dockWidgetContents") self.verticalLayout = QtWidgets.QVBoxLayout(self.dockWidgetContents) self.verticalLayout.setContentsMargins(4, 4, 4, 4) self.verticalLayout.setObjectName("verticalLayout") self.treeWidget = QtWidgets.QTreeWidget(self.dockWidgetContents) self.treeWidget.setObjectName("treeWidget") self.treeWidget.headerItem().setText(0, "1") self.treeWidget.header().setVisible(False) self.verticalLayout.addWidget(self.treeWidget) self.dockWidget.setWidget(self.dockWidgetContents) Window.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget) self.retranslateUi(Window) QtCore.QMetaObject.connectSlotsByName(Window) def retranslateUi(self, Window): _translate = QtCore.QCoreApplication.translate Window.setWindowTitle(_translate("Window", "Web Element DOM Traversal")) self.dockWidget.setWindowTitle(_translate("Window", "Document Structure")) from PyQt5 import QtWebKitWidgets PyQt-gpl-5.5.1/examples/webkit/domtraversal/window.ui0000644000076500000240000000426612613140041022732 0ustar philstaff00000000000000 Window 0 0 800 600 Web Element DOM Traversal 4 4 http://qt.nokia.com/ 0 0 800 27 Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea Document Structure 1 4 false false 1 QWebView QWidget
      QtWebKit/QWebView
      PyQt-gpl-5.5.1/examples/webkit/fancybrowser/0000755000076500000240000000000012613140041021055 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/webkit/fancybrowser/fancybrowser.py0000755000076500000240000001736712613140041024154 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QIODevice, Qt, QTextStream, QUrl from PyQt5.QtWidgets import (QAction, QApplication, QLineEdit, QMainWindow, QSizePolicy, QStyle, QTextEdit) from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkRequest from PyQt5.QtWebKitWidgets import QWebPage, QWebView import jquery_rc class MainWindow(QMainWindow): def __init__(self, url): super(MainWindow, self).__init__() self.progress = 0 fd = QFile(":/jquery.min.js") if fd.open(QIODevice.ReadOnly | QFile.Text): self.jQuery = QTextStream(fd).readAll() fd.close() else: self.jQuery = '' QNetworkProxyFactory.setUseSystemConfiguration(True) self.view = QWebView(self) self.view.load(url) self.view.loadFinished.connect(self.adjustLocation) self.view.titleChanged.connect(self.adjustTitle) self.view.loadProgress.connect(self.setProgress) self.view.loadFinished.connect(self.finishLoading) self.locationEdit = QLineEdit(self) self.locationEdit.setSizePolicy(QSizePolicy.Expanding, self.locationEdit.sizePolicy().verticalPolicy()) self.locationEdit.returnPressed.connect(self.changeLocation) toolBar = self.addToolBar("Navigation") toolBar.addAction(self.view.pageAction(QWebPage.Back)) toolBar.addAction(self.view.pageAction(QWebPage.Forward)) toolBar.addAction(self.view.pageAction(QWebPage.Reload)) toolBar.addAction(self.view.pageAction(QWebPage.Stop)) toolBar.addWidget(self.locationEdit) viewMenu = self.menuBar().addMenu("&View") viewSourceAction = QAction("Page Source", self) viewSourceAction.triggered.connect(self.viewSource) viewMenu.addAction(viewSourceAction) effectMenu = self.menuBar().addMenu("&Effect") effectMenu.addAction("Highlight all links", self.highlightAllLinks) self.rotateAction = QAction( self.style().standardIcon(QStyle.SP_FileDialogDetailedView), "Turn images upside down", self, checkable=True, toggled=self.rotateImages) effectMenu.addAction(self.rotateAction) toolsMenu = self.menuBar().addMenu("&Tools") toolsMenu.addAction("Remove GIF images", self.removeGifImages) toolsMenu.addAction("Remove all inline frames", self.removeInlineFrames) toolsMenu.addAction("Remove all object elements", self.removeObjectElements) toolsMenu.addAction("Remove all embedded elements", self.removeEmbeddedElements) self.setCentralWidget(self.view) def viewSource(self): accessManager = self.view.page().networkAccessManager() request = QNetworkRequest(self.view.url()) reply = accessManager.get(request) reply.finished.connect(self.slotSourceDownloaded) def slotSourceDownloaded(self): reply = self.sender() self.textEdit = QTextEdit() self.textEdit.setAttribute(Qt.WA_DeleteOnClose) self.textEdit.show() self.textEdit.setPlainText(QTextStream(reply).readAll()) self.textEdit.resize(600, 400) reply.deleteLater() def adjustLocation(self): self.locationEdit.setText(self.view.url().toString()) def changeLocation(self): url = QUrl.fromUserInput(self.locationEdit.text()) self.view.load(url) self.view.setFocus() def adjustTitle(self): if 0 < self.progress < 100: self.setWindowTitle("%s (%s%%)" % (self.view.title(), self.progress)) else: self.setWindowTitle(self.view.title()) def setProgress(self, p): self.progress = p self.adjustTitle() def finishLoading(self): self.progress = 100 self.adjustTitle() self.view.page().mainFrame().evaluateJavaScript(self.jQuery) self.rotateImages(self.rotateAction.isChecked()) def highlightAllLinks(self): code = """$('a').each( function () { $(this).css('background-color', 'yellow') } )""" self.view.page().mainFrame().evaluateJavaScript(code) def rotateImages(self, invert): if invert: code = """ $('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(180deg)') } )""" else: code = """ $('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(0deg)') } )""" self.view.page().mainFrame().evaluateJavaScript(code) def removeGifImages(self): code = "$('[src*=gif]').remove()" self.view.page().mainFrame().evaluateJavaScript(code) def removeInlineFrames(self): code = "$('iframe').remove()" self.view.page().mainFrame().evaluateJavaScript(code) def removeObjectElements(self): code = "$('object').remove()" self.view.page().mainFrame().evaluateJavaScript(code) def removeEmbeddedElements(self): code = "$('embed').remove()" self.view.page().mainFrame().evaluateJavaScript(code) if __name__ == '__main__': import sys app = QApplication(sys.argv) if len(sys.argv) > 1: url = QUrl(sys.argv[1]) else: url = QUrl('http://www.google.com/ncr') browser = MainWindow(url) browser.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/webkit/fancybrowser/jquery.qrc0000644000076500000240000000013512613140041023102 0ustar philstaff00000000000000 jquery.min.js PyQt-gpl-5.5.1/examples/webkit/formextractor/0000755000076500000240000000000012613140041021250 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/webkit/formextractor/form.html0000644000076500000240000000177512613140041023113 0ustar philstaff00000000000000

      The Green People Book Club

      Welcome to The Green People Book Club. Please register to obtain a membership with us.

      First name:
      Last name:
      Gender: Male Female
      Check here if you would like to receive regular updates from us:
      PyQt-gpl-5.5.1/examples/webkit/formextractor/formextractor.py0000755000076500000240000001247512613140041024535 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSlot, QUrl from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QMainWindow, QMessageBox, QWidget) import formextractor_rc from ui_formextractor import Ui_Form class FormExtractor(QWidget): def __init__(self, parent=None): super(FormExtractor, self).__init__(parent) self.ui = Ui_Form() self.ui.setupUi(self) webView = self.ui.webView webView.setUrl(QUrl('qrc:/form.html')) webView.page().mainFrame().javaScriptWindowObjectCleared.connect( self.populateJavaScriptWindowObject) self.resize(300, 300) @pyqtSlot() def submit(self): frame = self.ui.webView.page().mainFrame() firstName = frame.findFirstElement('#firstname') lastName = frame.findFirstElement('#lastname') maleGender = frame.findFirstElement('#genderMale') femaleGender = frame.findFirstElement('#genderFemale') updates = frame.findFirstElement('#updates') self.ui.firstNameEdit.setText(firstName.evaluateJavaScript('this.value')) self.ui.lastNameEdit.setText(lastName.evaluateJavaScript('this.value')) if maleGender.evaluateJavaScript('this.checked'): self.ui.genderEdit.setText( maleGender.evaluateJavaScript('this.value')) elif femaleGender.evaluateJavaScript('this.checked'): self.ui.genderEdit.setText( femaleGender.evaluateJavaScript('this.value')) if updates.evaluateJavaScript('this.checked'): self.ui.updatesEdit.setText("Yes") else: self.ui.updatesEdit.setText("No") def populateJavaScriptWindowObject(self): self.ui.webView.page().mainFrame().addToJavaScriptWindowObject( 'formExtractor', self) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.centralWidget = FormExtractor(self) self.setCentralWidget(self.centralWidget) def createActions(self): self.exitAct = QAction("E&xit", self, statusTip="Exit the application", shortcut=QKeySequence.Quit, triggered=self.close) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): fileMenu = self.menuBar().addMenu("&File") fileMenu.addAction(self.exitAct) self.menuBar().addSeparator() helpMenu = self.menuBar().addMenu("&Help") helpMenu.addAction(self.aboutAct) helpMenu.addAction(self.aboutQtAct) def about(self): QMessageBox.about(self, "About Form Extractor", "The Form Extractor example demonstrates how to " "extract data from a web form using QtWebKit.") if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.setWindowTitle("Form Extractor") mainWindow.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/webkit/formextractor/formextractor.qrc0000644000076500000240000000014012613140041024651 0ustar philstaff00000000000000 form.html PyQt-gpl-5.5.1/examples/webkit/formextractor/formextractor.ui0000644000076500000240000001034312613140041024507 0ustar philstaff00000000000000 Form 0 0 680 218 Form Web Form 200 150 400 16777215 about:blank Qt::Horizontal 28 20 Extracted Data QFormLayout::FieldsStayAtSizeHint First Name true Last Name true Gender true Receive Updates true Qt::Vertical 20 24 QWebView QWidget
      QtWebKit/QWebView
      PyQt-gpl-5.5.1/examples/webkit/formextractor/formextractor_rc.py0000644000076500000240000001162612613140041025213 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 17:58:45 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\xfd\ \x3c\ \x68\x74\x6d\x6c\x3e\x3c\x62\x6f\x64\x79\x3e\x0a\x3c\x68\x31\x3e\ \x0a\x54\x68\x65\x20\x47\x72\x65\x65\x6e\x20\x50\x65\x6f\x70\x6c\ \x65\x20\x42\x6f\x6f\x6b\x20\x43\x6c\x75\x62\x0a\x3c\x2f\x68\x31\ \x3e\x0a\x0a\x3c\x70\x3e\x0a\x57\x65\x6c\x63\x6f\x6d\x65\x20\x74\ \x6f\x20\x54\x68\x65\x20\x47\x72\x65\x65\x6e\x20\x50\x65\x6f\x70\ \x6c\x65\x20\x42\x6f\x6f\x6b\x20\x43\x6c\x75\x62\x2e\x20\x50\x6c\ \x65\x61\x73\x65\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x74\x6f\ \x20\x6f\x62\x74\x61\x69\x6e\x20\x61\x20\x6d\x65\x6d\x62\x65\x72\ \x73\x68\x69\x70\x20\x77\x69\x74\x68\x20\x75\x73\x2e\x0a\x3c\x2f\ \x70\x3e\x0a\x20\x20\x20\x20\x3c\x66\x6f\x72\x6d\x20\x6f\x6e\x73\ \x75\x62\x6d\x69\x74\x3d\x22\x66\x6f\x72\x6d\x45\x78\x74\x72\x61\ \x63\x74\x6f\x72\x2e\x73\x75\x62\x6d\x69\x74\x28\x29\x22\x3e\x0a\ \x20\x20\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x20\x20\ \x3c\x74\x62\x6f\x64\x79\x3e\x3c\x74\x72\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x46\x69\x72\x73\x74\x20\x6e\x61\x6d\x65\x3a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\ \x22\x74\x65\x78\x74\x22\x20\x69\x64\x3d\x22\x66\x69\x72\x73\x74\ \x6e\x61\x6d\x65\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\ \x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x72\x3e\x0a\x20\ \x20\x20\x20\x3c\x74\x72\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x61\x73\ \x74\x20\x6e\x61\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x74\ \x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\ \x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\ \x22\x20\x69\x64\x3d\x22\x6c\x61\x73\x74\x6e\x61\x6d\x65\x22\x3e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\ \x20\x20\x20\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x47\x65\x6e\x64\x65\x72\x3a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x3c\x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\x22\x72\ \x61\x64\x69\x6f\x22\x20\x6e\x61\x6d\x65\x3d\x22\x67\x65\x6e\x64\ \x65\x72\x22\x20\x69\x64\x3d\x22\x67\x65\x6e\x64\x65\x72\x4d\x61\ \x6c\x65\x22\x20\x76\x61\x6c\x75\x65\x3d\x22\x4d\x61\x6c\x65\x22\ \x3e\x20\x4d\x61\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\ \x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\x22\x72\x61\x64\x69\ \x6f\x22\x20\x6e\x61\x6d\x65\x3d\x22\x67\x65\x6e\x64\x65\x72\x22\ \x20\x69\x64\x3d\x22\x67\x65\x6e\x64\x65\x72\x46\x65\x6d\x61\x6c\ \x65\x22\x20\x76\x61\x6c\x75\x65\x3d\x22\x46\x65\x6d\x61\x6c\x65\ \x22\x3e\x20\x46\x65\x6d\x61\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x72\ \x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x74\x64\x20\x63\x6f\x6c\x73\x70\x61\x6e\x3d\x22\ \x32\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x69\x6e\x70\ \x75\x74\x20\x74\x79\x70\x65\x3d\x22\x63\x68\x65\x63\x6b\x62\x6f\ \x78\x22\x20\x69\x64\x3d\x22\x75\x70\x64\x61\x74\x65\x73\x22\x20\ \x76\x61\x6c\x75\x65\x3d\x22\x72\x65\x63\x65\x69\x76\x65\x22\x3e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x68\x65\x63\x6b\x20\x68\ \x65\x72\x65\x20\x69\x66\x20\x79\x6f\x75\x20\x77\x6f\x75\x6c\x64\ \x20\x6c\x69\x6b\x65\x20\x74\x6f\x20\x72\x65\x63\x65\x69\x76\x65\ \x20\x72\x65\x67\x75\x6c\x61\x72\x20\x75\x70\x64\x61\x74\x65\x73\ \x20\x66\x72\x6f\x6d\x20\x75\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x72\ \x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x62\x6f\x64\x79\x3e\x3c\x2f\ \x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\x70\x75\ \x74\x20\x74\x79\x70\x65\x3d\x22\x73\x75\x62\x6d\x69\x74\x22\x20\ \x76\x61\x6c\x75\x65\x3d\x22\x53\x75\x62\x6d\x69\x74\x22\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x66\x6f\x72\x6d\x3e\x0a\x0a\x3c\x2f\x62\ \x6f\x64\x79\x3e\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\ " qt_resource_name = b"\ \x00\x09\ \x09\x04\x21\xfc\ \x00\x66\ \x00\x6f\x00\x72\x00\x6d\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ " 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\x01\x00\x00\x00\x00\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/webkit/formextractor/ui_formextractor.py0000644000076500000240000001131512613140041025217 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'formextractor.ui' # # Created: Tue May 14 17:59:08 2013 # by: PyQt5 UI code generator 5.0-snapshot-b0831183bf83 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(680, 218) self.horizontalLayout = QtWidgets.QHBoxLayout(Form) self.horizontalLayout.setObjectName("horizontalLayout") self.webFormGroupBox = QtWidgets.QGroupBox(Form) self.webFormGroupBox.setObjectName("webFormGroupBox") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.webFormGroupBox) self.verticalLayout_2.setObjectName("verticalLayout_2") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.webView = QtWebKitWidgets.QWebView(self.webFormGroupBox) self.webView.setMinimumSize(QtCore.QSize(200, 150)) self.webView.setMaximumSize(QtCore.QSize(400, 16777215)) self.webView.setUrl(QtCore.QUrl("about:blank")) self.webView.setObjectName("webView") self.verticalLayout.addWidget(self.webView) self.verticalLayout_2.addLayout(self.verticalLayout) self.horizontalLayout.addWidget(self.webFormGroupBox) spacerItem = QtWidgets.QSpacerItem(28, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.dataGroupBox = QtWidgets.QGroupBox(Form) self.dataGroupBox.setObjectName("dataGroupBox") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.dataGroupBox) self.verticalLayout_3.setObjectName("verticalLayout_3") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.FieldsStayAtSizeHint) self.formLayout.setObjectName("formLayout") self.firstNameLabel = QtWidgets.QLabel(self.dataGroupBox) self.firstNameLabel.setObjectName("firstNameLabel") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.firstNameLabel) self.firstNameEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.firstNameEdit.setReadOnly(True) self.firstNameEdit.setObjectName("firstNameEdit") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.firstNameEdit) self.lastNameLabel = QtWidgets.QLabel(self.dataGroupBox) self.lastNameLabel.setObjectName("lastNameLabel") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lastNameLabel) self.lastNameEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.lastNameEdit.setReadOnly(True) self.lastNameEdit.setObjectName("lastNameEdit") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lastNameEdit) self.genderLabel = QtWidgets.QLabel(self.dataGroupBox) self.genderLabel.setObjectName("genderLabel") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.genderLabel) self.genderEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.genderEdit.setReadOnly(True) self.genderEdit.setObjectName("genderEdit") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.genderEdit) self.updatesLabel = QtWidgets.QLabel(self.dataGroupBox) self.updatesLabel.setObjectName("updatesLabel") self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.updatesLabel) self.updatesEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.updatesEdit.setReadOnly(True) self.updatesEdit.setObjectName("updatesEdit") self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.updatesEdit) self.verticalLayout_3.addLayout(self.formLayout) spacerItem1 = QtWidgets.QSpacerItem(20, 24, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem1) self.horizontalLayout.addWidget(self.dataGroupBox) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.webFormGroupBox.setTitle(_translate("Form", "Web Form")) self.dataGroupBox.setTitle(_translate("Form", "Extracted Data")) self.firstNameLabel.setText(_translate("Form", "First Name")) self.lastNameLabel.setText(_translate("Form", "Last Name")) self.genderLabel.setText(_translate("Form", "Gender")) self.updatesLabel.setText(_translate("Form", "Receive Updates")) from PyQt5 import QtWebKitWidgets PyQt-gpl-5.5.1/examples/webkit/framecapture.py0000755000076500000240000001245312613140041021411 0ustar philstaff00000000000000#!/usr/bin/env python """ Capture a web page and save its internal frames in different images framecapture.py Notes: 'url' is the URL of the web page to be captured 'outputfile' is the prefix of the image files to be generated Example: framecapture qt.nokia.com trolltech.png Result: trolltech.png (full page) trolltech_frame1.png (...) trolltech_frameN.png ('N' number of internal frames) """ ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSignal, QObject, QSize, Qt, QUrl from PyQt5.QtGui import QImage, QPainter from PyQt5.QtWidgets import QApplication from PyQt5.QtWebKitWidgets import QWebPage def cout(s): sys.stdout.write(s) sys.stdout.flush() def cerr(s): sys.stderr.write(s) sys.stderr.flush() class FrameCapture(QObject): finished = pyqtSignal() def __init__(self): super(FrameCapture, self).__init__() self._percent = 0 self._page = QWebPage() self._page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self._page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self._page.loadProgress.connect(self.printProgress) self._page.loadFinished.connect(self.saveResult) def load(self, url, outputFileName): cout("Loading %s\n" % url.toString()) self._percent = 0 index = outputFileName.rfind('.') self._fileName = index == -1 and outputFileName + ".png" or outputFileName self._page.mainFrame().load(url) self._page.setViewportSize(QSize(1024, 768)) def printProgress(self, percent): if self._percent >= percent: return self._percent += 1 while self._percent < percent: self._percent += 1 cout("#") def saveResult(self, ok): cout("\n") # Crude error-checking. if not ok: cerr("Failed loading %s\n" % self._page.mainFrame().url().toString()) self.finished.emit() return # Save each frame in different image files. self._frameCounter = 0 self.saveFrame(self._page.mainFrame()) self.finished.emit() def saveFrame(self, frame): fileName = self._fileName if self._frameCounter: index = fileName.rfind('.') fileName = "%s_frame%s%s" % (fileName[:index], self._frameCounter, fileName[index:]) image = QImage(frame.contentsSize(), QImage.Format_ARGB32_Premultiplied) image.fill(Qt.transparent) painter = QPainter(image) painter.setRenderHint(QPainter.Antialiasing, True) painter.setRenderHint(QPainter.TextAntialiasing, True) painter.setRenderHint(QPainter.SmoothPixmapTransform, True) frame.documentElement().render(painter) painter.end() image.save(fileName) self._frameCounter += 1 for childFrame in frame.childFrames(): self.saveFrame(childFrame) if __name__ == '__main__': if len(sys.argv) != 3: cerr(__doc__) sys.exit(1) url = QUrl.fromUserInput(sys.argv[1]) fileName = sys.argv[2] app = QApplication(sys.argv) capture = FrameCapture() capture.finished.connect(app.quit) capture.load(url, fileName) app.exec_() PyQt-gpl-5.5.1/examples/webkit/previewer/0000755000076500000240000000000012613140041020361 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/webkit/previewer/previewer.py0000755000076500000240000001476212613140041022760 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFile, QIODevice, QTextStream, QUrl from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QInputDialog, QLineEdit, QMainWindow, QMessageBox, QWidget) from ui_previewer import Ui_Form class Previewer(QWidget, Ui_Form): def __init__(self, parent=None): super(Previewer, self).__init__(parent) self.setupUi(self) self.baseUrl = QUrl() def setBaseUrl(self, url): self.baseUrl = url def on_previewButton_clicked(self): # Update the contents in the web viewer. text = self.plainTextEdit.toPlainText() self.webView.setHtml(text, self.baseUrl) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.centralWidget = Previewer(self) self.setCentralWidget(self.centralWidget) self.centralWidget.webView.loadFinished.connect(self.updateTextEdit) self.setStartupText() def createActions(self): self.openAct = QAction("&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing HTML file", triggered=self.open) self.openUrlAct = QAction("&Open URL...", self, shortcut="Ctrl+U", statusTip="Open a URL", triggered=self.openUrl) self.saveAct = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the HTML file to disk", triggered=self.save) self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit, statusTip="Exit the application", triggered=self.close) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.openUrlAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def about(self): QMessageBox.about(self, "About Previewer", "The Previewer example demonstrates how to view HTML " "documents using a QtWebKitWidgets.QWebView.") def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: fd = QFile(fileName) if not fd.open(QIODevice.ReadOnly): QMessageBox.information(self, "Unable to open file", fd.errorString()) return output = QTextStream(fd).readAll() # Display contents. self.centralWidget.plainTextEdit.setPlainText(output) self.centralWidget.setBaseUrl(QUrl.fromLocalFile(fileName)) def openUrl(self): url, ok = QInputDialog.getText(self, "Enter a URL", "URL:", QLineEdit.Normal, "http://") if ok and url: url = QUrl(url) self.centralWidget.webView.setUrl(url) def save(self): content = self.centralWidget.plainTextEdit.toPlainText() fileName, _ = QFileDialog.getSaveFileName(self) if fileName: fd = QFile(fileName) if not fd.open(QIODevice.WriteOnly): QMessageBox.information(self, "Unable to open file", fd.errorString()) return QTextStream(fd) << content def updateTextEdit(self): mainFrame = self.centralWidget.webView.page().mainFrame() frameText = mainFrame.toHtml() self.centralWidget.plainTextEdit.setPlainText(frameText) def setStartupText(self): self.centralWidget.webView.setHtml("""

      HTML Previewer

      This example shows you how to use QtWebKitWidgets.QWebView to preview HTML data written in a QtWidgets.QPlainTextEdit.

      """) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/webkit/previewer/previewer.ui0000644000076500000240000000475212613140041022740 0ustar philstaff00000000000000 Form 0 0 911 688 Form Qt::Horizontal HTML Editor Clear Preview HTML Preview about:blank QWebView QWidget
      QtWebKit/QWebView
      clearButton clicked() plainTextEdit clear() 56 653 98 551
      PyQt-gpl-5.5.1/examples/webkit/previewer/ui_previewer.py0000644000076500000240000000570312613140041023445 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'previewer.ui' # # Created: Tue May 14 22:35:29 2013 # by: PyQt5 UI code generator 5.0-snapshot-3507ed3a4178 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(911, 688) self.horizontalLayout_4 = QtWidgets.QHBoxLayout(Form) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.splitter = QtWidgets.QSplitter(Form) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.editorBox = QtWidgets.QGroupBox(self.splitter) self.editorBox.setObjectName("editorBox") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.editorBox) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.plainTextEdit = QtWidgets.QPlainTextEdit(self.editorBox) self.plainTextEdit.setObjectName("plainTextEdit") self.verticalLayout_2.addWidget(self.plainTextEdit) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.clearButton = QtWidgets.QPushButton(self.editorBox) self.clearButton.setObjectName("clearButton") self.horizontalLayout.addWidget(self.clearButton) self.previewButton = QtWidgets.QPushButton(self.editorBox) self.previewButton.setObjectName("previewButton") self.horizontalLayout.addWidget(self.previewButton) self.verticalLayout_2.addLayout(self.horizontalLayout) self.horizontalLayout_2.addLayout(self.verticalLayout_2) self.previewerBox = QtWidgets.QGroupBox(self.splitter) self.previewerBox.setObjectName("previewerBox") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.previewerBox) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.webView = QtWebKitWidgets.QWebView(self.previewerBox) self.webView.setUrl(QtCore.QUrl("about:blank")) self.webView.setObjectName("webView") self.horizontalLayout_3.addWidget(self.webView) self.horizontalLayout_4.addWidget(self.splitter) self.retranslateUi(Form) self.clearButton.clicked.connect(self.plainTextEdit.clear) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.editorBox.setTitle(_translate("Form", "HTML Editor")) self.clearButton.setText(_translate("Form", "Clear")) self.previewButton.setText(_translate("Form", "Preview")) self.previewerBox.setTitle(_translate("Form", "HTML Preview")) from PyQt5 import QtWebKitWidgets PyQt-gpl-5.5.1/examples/webkit/README0000644000076500000240000000130312613140041017226 0ustar philstaff00000000000000PyQt provides the QtWebKit and QtWebKitWidgets modules that implement the WebKit browser and related classes. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/webkit/simpleselector/0000755000076500000240000000000012613140041021403 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/webkit/simpleselector/simpleselector.py0000755000076500000240000000600112613140041025007 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication, QWidget from ui_window import Ui_Window class SimpleSelector(QWidget, Ui_Window): def __init__(self, parent=None): super(SimpleSelector, self).__init__(parent) self.setupUi(self) def on_elementLineEdit_returnPressed(self): frame = self.webView.page().mainFrame() # Select elements. document = frame.documentElement() elements = document.findAll(self.elementLineEdit.text()) for element in elements: element.setAttribute('style', 'background-color: #f0f090') def on_highlightButton_clicked(self): self.on_elementLineEdit_returnPressed() def setUrl(self, url): self.webView.setUrl(url) if __name__ == '__main__': import sys app = QApplication(sys.argv) win = SimpleSelector() win.setUrl(QUrl('http://www.webkit.org')) win.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/webkit/simpleselector/ui_window.py0000644000076500000240000000444312613140041023766 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'window.ui' # # Created: Tue May 14 22:42:29 2013 # by: PyQt5 UI code generator 5.0-snapshot-3507ed3a4178 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Window(object): def setupUi(self, Window): Window.setObjectName("Window") Window.resize(640, 480) self.verticalLayout = QtWidgets.QVBoxLayout(Window) self.verticalLayout.setObjectName("verticalLayout") self.webView = QtWebKitWidgets.QWebView(Window) self.webView.setUrl(QtCore.QUrl("http://webkit.org/")) self.webView.setObjectName("webView") self.verticalLayout.addWidget(self.webView) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.ExpandingFieldsGrow) self.formLayout.setObjectName("formLayout") self.elementLabel = QtWidgets.QLabel(Window) self.elementLabel.setObjectName("elementLabel") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.elementLabel) self.elementLineEdit = QtWidgets.QLineEdit(Window) self.elementLineEdit.setObjectName("elementLineEdit") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.elementLineEdit) self.horizontalLayout.addLayout(self.formLayout) self.highlightButton = QtWidgets.QPushButton(Window) self.highlightButton.setObjectName("highlightButton") self.horizontalLayout.addWidget(self.highlightButton) self.verticalLayout.addLayout(self.horizontalLayout) self.elementLabel.setBuddy(self.elementLineEdit) self.retranslateUi(Window) QtCore.QMetaObject.connectSlotsByName(Window) def retranslateUi(self, Window): _translate = QtCore.QCoreApplication.translate Window.setWindowTitle(_translate("Window", "Web Element Selector")) self.elementLabel.setText(_translate("Window", "&Element:")) self.elementLineEdit.setText(_translate("Window", "li a")) self.highlightButton.setText(_translate("Window", "&Highlight")) from PyQt5 import QtWebKitWidgets PyQt-gpl-5.5.1/examples/webkit/simpleselector/window.ui0000644000076500000240000000344112613140041023253 0ustar philstaff00000000000000 Window 0 0 640 480 Web Element Selector http://webkit.org/ QFormLayout::ExpandingFieldsGrow &Element: elementLineEdit li a &Highlight QWebView QWidget
      QtWebKit/QWebView
      PyQt-gpl-5.5.1/examples/widgets/0000755000076500000240000000000012613140041016532 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/analogclock.py0000755000076500000240000001001512613140041021361 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QPoint, Qt, QTime, QTimer from PyQt5.QtGui import QColor, QPainter, QPolygon from PyQt5.QtWidgets import QApplication, QWidget class AnalogClock(QWidget): hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) hourColor = QColor(127, 0, 127) minuteColor = QColor(0, 127, 127, 191) def __init__(self, parent=None): super(AnalogClock, self).__init__(parent) timer = QTimer(self) timer.timeout.connect(self.update) timer.start(1000) self.setWindowTitle("Analog Clock") self.resize(200, 200) def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.hourColor) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(AnalogClock.hourHand) painter.restore() painter.setPen(AnalogClock.hourColor) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.minuteColor) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(AnalogClock.minuteHand) painter.restore() painter.setPen(AnalogClock.minuteColor) for j in range(60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = AnalogClock() clock.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/calculator.py0000755000076500000240000002762012613140041021247 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QGridLayout, QLayout, QLineEdit, QSizePolicy, QToolButton, QWidget) class Button(QToolButton): def __init__(self, text, parent=None): super(Button, self).__init__(parent) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self.setText(text) def sizeHint(self): size = super(Button, self).sizeHint() size.setHeight(size.height() + 20) size.setWidth(max(size.width(), size.height())) return size class Calculator(QWidget): NumDigitButtons = 10 def __init__(self, parent=None): super(Calculator, self).__init__(parent) self.pendingAdditiveOperator = '' self.pendingMultiplicativeOperator = '' self.sumInMemory = 0.0 self.sumSoFar = 0.0 self.factorSoFar = 0.0 self.waitingForOperand = True self.display = QLineEdit('0') self.display.setReadOnly(True) self.display.setAlignment(Qt.AlignRight) self.display.setMaxLength(15) font = self.display.font() font.setPointSize(font.pointSize() + 8) self.display.setFont(font) self.digitButtons = [] for i in range(Calculator.NumDigitButtons): self.digitButtons.append(self.createButton(str(i), self.digitClicked)) self.pointButton = self.createButton(".", self.pointClicked) self.changeSignButton = self.createButton(u"\N{PLUS-MINUS SIGN}", self.changeSignClicked) self.backspaceButton = self.createButton("Backspace", self.backspaceClicked) self.clearButton = self.createButton("Clear", self.clear) self.clearAllButton = self.createButton("Clear All", self.clearAll) self.clearMemoryButton = self.createButton("MC", self.clearMemory) self.readMemoryButton = self.createButton("MR", self.readMemory) self.setMemoryButton = self.createButton("MS", self.setMemory) self.addToMemoryButton = self.createButton("M+", self.addToMemory) self.divisionButton = self.createButton(u"\N{DIVISION SIGN}", self.multiplicativeOperatorClicked) self.timesButton = self.createButton(u"\N{MULTIPLICATION SIGN}", self.multiplicativeOperatorClicked) self.minusButton = self.createButton("-", self.additiveOperatorClicked) self.plusButton = self.createButton("+", self.additiveOperatorClicked) self.squareRootButton = self.createButton("Sqrt", self.unaryOperatorClicked) self.powerButton = self.createButton(u"x\N{SUPERSCRIPT TWO}", self.unaryOperatorClicked) self.reciprocalButton = self.createButton("1/x", self.unaryOperatorClicked) self.equalButton = self.createButton("=", self.equalClicked) mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addWidget(self.display, 0, 0, 1, 6) mainLayout.addWidget(self.backspaceButton, 1, 0, 1, 2) mainLayout.addWidget(self.clearButton, 1, 2, 1, 2) mainLayout.addWidget(self.clearAllButton, 1, 4, 1, 2) mainLayout.addWidget(self.clearMemoryButton, 2, 0) mainLayout.addWidget(self.readMemoryButton, 3, 0) mainLayout.addWidget(self.setMemoryButton, 4, 0) mainLayout.addWidget(self.addToMemoryButton, 5, 0) for i in range(1, Calculator.NumDigitButtons): row = ((9 - i) / 3) + 2 column = ((i - 1) % 3) + 1 mainLayout.addWidget(self.digitButtons[i], row, column) mainLayout.addWidget(self.digitButtons[0], 5, 1) mainLayout.addWidget(self.pointButton, 5, 2) mainLayout.addWidget(self.changeSignButton, 5, 3) mainLayout.addWidget(self.divisionButton, 2, 4) mainLayout.addWidget(self.timesButton, 3, 4) mainLayout.addWidget(self.minusButton, 4, 4) mainLayout.addWidget(self.plusButton, 5, 4) mainLayout.addWidget(self.squareRootButton, 2, 5) mainLayout.addWidget(self.powerButton, 3, 5) mainLayout.addWidget(self.reciprocalButton, 4, 5) mainLayout.addWidget(self.equalButton, 5, 5) self.setLayout(mainLayout) self.setWindowTitle("Calculator") def digitClicked(self): clickedButton = self.sender() digitValue = int(clickedButton.text()) if self.display.text() == '0' and digitValue == 0.0: return if self.waitingForOperand: self.display.clear() self.waitingForOperand = False self.display.setText(self.display.text() + str(digitValue)) def unaryOperatorClicked(self): clickedButton = self.sender() clickedOperator = clickedButton.text() operand = float(self.display.text()) if clickedOperator == "Sqrt": if operand < 0.0: self.abortOperation() return result = math.sqrt(operand) elif clickedOperator == u"x\N{SUPERSCRIPT TWO}": result = math.pow(operand, 2.0) elif clickedOperator == "1/x": if operand == 0.0: self.abortOperation() return result = 1.0 / operand self.display.setText(str(result)) self.waitingForOperand = True def additiveOperatorClicked(self): clickedButton = self.sender() clickedOperator = clickedButton.text() operand = float(self.display.text()) if self.pendingMultiplicativeOperator: if not self.calculate(operand, self.pendingMultiplicativeOperator): self.abortOperation() return self.display.setText(str(self.factorSoFar)) operand = self.factorSoFar self.factorSoFar = 0.0 self.pendingMultiplicativeOperator = '' if self.pendingAdditiveOperator: if not self.calculate(operand, self.pendingAdditiveOperator): self.abortOperation() return self.display.setText(str(self.sumSoFar)) else: self.sumSoFar = operand self.pendingAdditiveOperator = clickedOperator self.waitingForOperand = True def multiplicativeOperatorClicked(self): clickedButton = self.sender() clickedOperator = clickedButton.text() operand = float(self.display.text()) if self.pendingMultiplicativeOperator: if not self.calculate(operand, self.pendingMultiplicativeOperator): self.abortOperation() return self.display.setText(str(self.factorSoFar)) else: self.factorSoFar = operand self.pendingMultiplicativeOperator = clickedOperator self.waitingForOperand = True def equalClicked(self): operand = float(self.display.text()) if self.pendingMultiplicativeOperator: if not self.calculate(operand, self.pendingMultiplicativeOperator): self.abortOperation() return operand = self.factorSoFar self.factorSoFar = 0.0 self.pendingMultiplicativeOperator = '' if self.pendingAdditiveOperator: if not self.calculate(operand, self.pendingAdditiveOperator): self.abortOperation() return self.pendingAdditiveOperator = '' else: self.sumSoFar = operand self.display.setText(str(self.sumSoFar)) self.sumSoFar = 0.0 self.waitingForOperand = True def pointClicked(self): if self.waitingForOperand: self.display.setText('0') if "." not in self.display.text(): self.display.setText(self.display.text() + ".") self.waitingForOperand = False def changeSignClicked(self): text = self.display.text() value = float(text) if value > 0.0: text = "-" + text elif value < 0.0: text = text[1:] self.display.setText(text) def backspaceClicked(self): if self.waitingForOperand: return text = self.display.text()[:-1] if not text: text = '0' self.waitingForOperand = True self.display.setText(text) def clear(self): if self.waitingForOperand: return self.display.setText('0') self.waitingForOperand = True def clearAll(self): self.sumSoFar = 0.0 self.factorSoFar = 0.0 self.pendingAdditiveOperator = '' self.pendingMultiplicativeOperator = '' self.display.setText('0') self.waitingForOperand = True def clearMemory(self): self.sumInMemory = 0.0 def readMemory(self): self.display.setText(str(self.sumInMemory)) self.waitingForOperand = True def setMemory(self): self.equalClicked() self.sumInMemory = float(self.display.text()) def addToMemory(self): self.equalClicked() self.sumInMemory += float(self.display.text()) def createButton(self, text, member): button = Button(text) button.clicked.connect(member) return button def abortOperation(self): self.clearAll() self.display.setText("####") def calculate(self, rightOperand, pendingOperator): if pendingOperator == "+": self.sumSoFar += rightOperand elif pendingOperator == "-": self.sumSoFar -= rightOperand elif pendingOperator == u"\N{MULTIPLICATION SIGN}": self.factorSoFar *= rightOperand elif pendingOperator == u"\N{DIVISION SIGN}": if rightOperand == 0.0: return False self.factorSoFar /= rightOperand return True if __name__ == '__main__': import sys app = QApplication(sys.argv) calc = Calculator() calc.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/calendarwidget.py0000755000076500000240000004156112613140041022073 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDate, QLocale, Qt from PyQt5.QtGui import QFont, QTextCharFormat from PyQt5.QtWidgets import (QApplication, QCalendarWidget, QCheckBox, QComboBox, QDateEdit, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLayout, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.createPreviewGroupBox() self.createGeneralOptionsGroupBox() self.createDatesGroupBox() self.createTextFormatsGroupBox() layout = QGridLayout() layout.addWidget(self.previewGroupBox, 0, 0) layout.addWidget(self.generalOptionsGroupBox, 0, 1) layout.addWidget(self.datesGroupBox, 1, 0) layout.addWidget(self.textFormatsGroupBox, 1, 1) layout.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(layout) self.previewLayout.setRowMinimumHeight(0, self.calendar.sizeHint().height()) self.previewLayout.setColumnMinimumWidth(0, self.calendar.sizeHint().width()) self.setWindowTitle("Calendar Widget") def localeChanged(self, index): self.calendar.setLocale(self.localeCombo.itemData(index)) def firstDayChanged(self, index): self.calendar.setFirstDayOfWeek( Qt.DayOfWeek(self.firstDayCombo.itemData(index))) def selectionModeChanged(self, index): self.calendar.setSelectionMode( QCalendarWidget.SelectionMode( self.selectionModeCombo.itemData(index))) def horizontalHeaderChanged(self, index): self.calendar.setHorizontalHeaderFormat( QCalendarWidget.HorizontalHeaderFormat( self.horizontalHeaderCombo.itemData(index))) def verticalHeaderChanged(self, index): self.calendar.setVerticalHeaderFormat( QCalendarWidget.VerticalHeaderFormat( self.verticalHeaderCombo.itemData(index))) def selectedDateChanged(self): self.currentDateEdit.setDate(self.calendar.selectedDate()) def minimumDateChanged(self, date): self.calendar.setMinimumDate(date) self.maximumDateEdit.setDate(self.calendar.maximumDate()) def maximumDateChanged(self, date): self.calendar.setMaximumDate(date) self.minimumDateEdit.setDate(self.calendar.minimumDate()) def weekdayFormatChanged(self): format = QTextCharFormat() format.setForeground( Qt.GlobalColor( self.weekdayColorCombo.itemData( self.weekdayColorCombo.currentIndex()))) self.calendar.setWeekdayTextFormat(Qt.Monday, format) self.calendar.setWeekdayTextFormat(Qt.Tuesday, format) self.calendar.setWeekdayTextFormat(Qt.Wednesday, format) self.calendar.setWeekdayTextFormat(Qt.Thursday, format) self.calendar.setWeekdayTextFormat(Qt.Friday, format) def weekendFormatChanged(self): format = QTextCharFormat() format.setForeground( Qt.GlobalColor( self.weekendColorCombo.itemData( self.weekendColorCombo.currentIndex()))) self.calendar.setWeekdayTextFormat(Qt.Saturday, format) self.calendar.setWeekdayTextFormat(Qt.Sunday, format) def reformatHeaders(self): text = self.headerTextFormatCombo.currentText() format = QTextCharFormat() if text == "Bold": format.setFontWeight(QFont.Bold) elif text == "Italic": format.setFontItalic(True) elif text == "Green": format.setForeground(Qt.green) self.calendar.setHeaderTextFormat(format) def reformatCalendarPage(self): if self.firstFridayCheckBox.isChecked(): firstFriday = QDate(self.calendar.yearShown(), self.calendar.monthShown(), 1) while firstFriday.dayOfWeek() != Qt.Friday: firstFriday = firstFriday.addDays(1) firstFridayFormat = QTextCharFormat() firstFridayFormat.setForeground(Qt.blue) self.calendar.setDateTextFormat(firstFriday, firstFridayFormat) # May 1st in Red takes precedence. if self.mayFirstCheckBox.isChecked(): mayFirst = QDate(self.calendar.yearShown(), 5, 1) mayFirstFormat = QTextCharFormat() mayFirstFormat.setForeground(Qt.red) self.calendar.setDateTextFormat(mayFirst, mayFirstFormat) def createPreviewGroupBox(self): self.previewGroupBox = QGroupBox("Preview") self.calendar = QCalendarWidget() self.calendar.setMinimumDate(QDate(1900, 1, 1)) self.calendar.setMaximumDate(QDate(3000, 1, 1)) self.calendar.setGridVisible(True) self.calendar.currentPageChanged.connect(self.reformatCalendarPage) self.previewLayout = QGridLayout() self.previewLayout.addWidget(self.calendar, 0, 0, Qt.AlignCenter) self.previewGroupBox.setLayout(self.previewLayout) def createGeneralOptionsGroupBox(self): self.generalOptionsGroupBox = QGroupBox("General Options") self.localeCombo = QComboBox() curLocaleIndex = -1 index = 0 this_language = self.locale().nativeLanguageName() this_country = self.locale().nativeCountryName() for locale in QLocale.matchingLocales(QLocale.AnyLanguage, QLocale.AnyScript, QLocale.AnyCountry): language = locale.nativeLanguageName() country = locale.nativeCountryName() if language == this_language and country == this_country: curLocaleIndex = index self.localeCombo.addItem('%s/%s' % (language, country), locale) index += 1 if curLocaleIndex != -1: self.localeCombo.setCurrentIndex(curLocaleIndex) self.localeLabel = QLabel("&Locale") self.localeLabel.setBuddy(self.localeCombo) self.firstDayCombo = QComboBox() self.firstDayCombo.addItem("Sunday", Qt.Sunday) self.firstDayCombo.addItem("Monday", Qt.Monday) self.firstDayCombo.addItem("Tuesday", Qt.Tuesday) self.firstDayCombo.addItem("Wednesday", Qt.Wednesday) self.firstDayCombo.addItem("Thursday", Qt.Thursday) self.firstDayCombo.addItem("Friday", Qt.Friday) self.firstDayCombo.addItem("Saturday", Qt.Saturday) self.firstDayLabel = QLabel("Wee&k starts on:") self.firstDayLabel.setBuddy(self.firstDayCombo) self.selectionModeCombo = QComboBox() self.selectionModeCombo.addItem("Single selection", QCalendarWidget.SingleSelection) self.selectionModeCombo.addItem("None", QCalendarWidget.NoSelection) self.selectionModeLabel = QLabel("&Selection mode:") self.selectionModeLabel.setBuddy(self.selectionModeCombo) self.gridCheckBox = QCheckBox("&Grid") self.gridCheckBox.setChecked(self.calendar.isGridVisible()) self.navigationCheckBox = QCheckBox("&Navigation bar") self.navigationCheckBox.setChecked(True) self.horizontalHeaderCombo = QComboBox() self.horizontalHeaderCombo.addItem("Single letter day names", QCalendarWidget.SingleLetterDayNames) self.horizontalHeaderCombo.addItem("Short day names", QCalendarWidget.ShortDayNames) self.horizontalHeaderCombo.addItem("Long day names", QCalendarWidget.LongDayNames) self.horizontalHeaderCombo.addItem("None", QCalendarWidget.NoHorizontalHeader) self.horizontalHeaderCombo.setCurrentIndex(1) self.horizontalHeaderLabel = QLabel("&Horizontal header:") self.horizontalHeaderLabel.setBuddy(self.horizontalHeaderCombo) self.verticalHeaderCombo = QComboBox() self.verticalHeaderCombo.addItem("ISO week numbers", QCalendarWidget.ISOWeekNumbers) self.verticalHeaderCombo.addItem("None", QCalendarWidget.NoVerticalHeader) self.verticalHeaderLabel = QLabel("&Vertical header:") self.verticalHeaderLabel.setBuddy(self.verticalHeaderCombo) self.localeCombo.currentIndexChanged.connect(self.localeChanged) self.firstDayCombo.currentIndexChanged.connect(self.firstDayChanged) self.selectionModeCombo.currentIndexChanged.connect( self.selectionModeChanged) self.gridCheckBox.toggled.connect(self.calendar.setGridVisible) self.navigationCheckBox.toggled.connect( self.calendar.setNavigationBarVisible) self.horizontalHeaderCombo.currentIndexChanged.connect( self.horizontalHeaderChanged) self.verticalHeaderCombo.currentIndexChanged.connect( self.verticalHeaderChanged) checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.gridCheckBox) checkBoxLayout.addStretch() checkBoxLayout.addWidget(self.navigationCheckBox) outerLayout = QGridLayout() outerLayout.addWidget(self.localeLabel, 0, 0) outerLayout.addWidget(self.localeCombo, 0, 1) outerLayout.addWidget(self.firstDayLabel, 1, 0) outerLayout.addWidget(self.firstDayCombo, 1, 1) outerLayout.addWidget(self.selectionModeLabel, 2, 0) outerLayout.addWidget(self.selectionModeCombo, 2, 1) outerLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) outerLayout.addWidget(self.horizontalHeaderLabel, 4, 0) outerLayout.addWidget(self.horizontalHeaderCombo, 4, 1) outerLayout.addWidget(self.verticalHeaderLabel, 5, 0) outerLayout.addWidget(self.verticalHeaderCombo, 5, 1) self.generalOptionsGroupBox.setLayout(outerLayout) self.firstDayChanged(self.firstDayCombo.currentIndex()) self.selectionModeChanged(self.selectionModeCombo.currentIndex()) self.horizontalHeaderChanged(self.horizontalHeaderCombo.currentIndex()) self.verticalHeaderChanged(self.verticalHeaderCombo.currentIndex()) def createDatesGroupBox(self): self.datesGroupBox = QGroupBox(self.tr("Dates")) self.minimumDateEdit = QDateEdit() self.minimumDateEdit.setDisplayFormat('MMM d yyyy') self.minimumDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.minimumDateEdit.setDate(self.calendar.minimumDate()) self.minimumDateLabel = QLabel("&Minimum Date:") self.minimumDateLabel.setBuddy(self.minimumDateEdit) self.currentDateEdit = QDateEdit() self.currentDateEdit.setDisplayFormat('MMM d yyyy') self.currentDateEdit.setDate(self.calendar.selectedDate()) self.currentDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.currentDateLabel = QLabel("&Current Date:") self.currentDateLabel.setBuddy(self.currentDateEdit) self.maximumDateEdit = QDateEdit() self.maximumDateEdit.setDisplayFormat('MMM d yyyy') self.maximumDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.maximumDateEdit.setDate(self.calendar.maximumDate()) self.maximumDateLabel = QLabel("Ma&ximum Date:") self.maximumDateLabel.setBuddy(self.maximumDateEdit) self.currentDateEdit.dateChanged.connect(self.calendar.setSelectedDate) self.calendar.selectionChanged.connect(self.selectedDateChanged) self.minimumDateEdit.dateChanged.connect(self.minimumDateChanged) self.maximumDateEdit.dateChanged.connect(self.maximumDateChanged) dateBoxLayout = QGridLayout() dateBoxLayout.addWidget(self.currentDateLabel, 1, 0) dateBoxLayout.addWidget(self.currentDateEdit, 1, 1) dateBoxLayout.addWidget(self.minimumDateLabel, 0, 0) dateBoxLayout.addWidget(self.minimumDateEdit, 0, 1) dateBoxLayout.addWidget(self.maximumDateLabel, 2, 0) dateBoxLayout.addWidget(self.maximumDateEdit, 2, 1) dateBoxLayout.setRowStretch(3, 1) self.datesGroupBox.setLayout(dateBoxLayout) def createTextFormatsGroupBox(self): self.textFormatsGroupBox = QGroupBox("Text Formats") self.weekdayColorCombo = self.createColorComboBox() self.weekdayColorCombo.setCurrentIndex( self.weekdayColorCombo.findText("Black")) self.weekdayColorLabel = QLabel("&Weekday color:") self.weekdayColorLabel.setBuddy(self.weekdayColorCombo) self.weekendColorCombo = self.createColorComboBox() self.weekendColorCombo.setCurrentIndex( self.weekendColorCombo.findText("Red")) self.weekendColorLabel = QLabel("Week&end color:") self.weekendColorLabel.setBuddy(self.weekendColorCombo) self.headerTextFormatCombo = QComboBox() self.headerTextFormatCombo.addItem("Bold") self.headerTextFormatCombo.addItem("Italic") self.headerTextFormatCombo.addItem("Plain") self.headerTextFormatLabel = QLabel("&Header text:") self.headerTextFormatLabel.setBuddy(self.headerTextFormatCombo) self.firstFridayCheckBox = QCheckBox("&First Friday in blue") self.mayFirstCheckBox = QCheckBox("May &1 in red") self.weekdayColorCombo.currentIndexChanged.connect( self.weekdayFormatChanged) self.weekendColorCombo.currentIndexChanged.connect( self.weekendFormatChanged) self.headerTextFormatCombo.currentIndexChanged.connect( self.reformatHeaders) self.firstFridayCheckBox.toggled.connect(self.reformatCalendarPage) self.mayFirstCheckBox.toggled.connect(self.reformatCalendarPage) checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.firstFridayCheckBox) checkBoxLayout.addStretch() checkBoxLayout.addWidget(self.mayFirstCheckBox) outerLayout = QGridLayout() outerLayout.addWidget(self.weekdayColorLabel, 0, 0) outerLayout.addWidget(self.weekdayColorCombo, 0, 1) outerLayout.addWidget(self.weekendColorLabel, 1, 0) outerLayout.addWidget(self.weekendColorCombo, 1, 1) outerLayout.addWidget(self.headerTextFormatLabel, 2, 0) outerLayout.addWidget(self.headerTextFormatCombo, 2, 1) outerLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) self.textFormatsGroupBox.setLayout(outerLayout) self.weekdayFormatChanged() self.weekendFormatChanged() self.reformatHeaders() self.reformatCalendarPage() def createColorComboBox(self): comboBox = QComboBox() comboBox.addItem("Red", Qt.red) comboBox.addItem("Blue", Qt.blue) comboBox.addItem("Black", Qt.black) comboBox.addItem("Magenta", Qt.magenta) return comboBox if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/charactermap.py0000755000076500000240000002522112613140041021543 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 unicodedata from PyQt5.QtCore import pyqtSignal, QSize, Qt from PyQt5.QtGui import (QClipboard, QFont, QFontDatabase, QFontMetrics, QPainter) from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QFontComboBox, QHBoxLayout, QLabel, QLineEdit, QMainWindow, QPushButton, QScrollArea, QToolTip, QVBoxLayout, QWidget) class CharacterWidget(QWidget): characterSelected = pyqtSignal(str) def __init__(self, parent=None): super(CharacterWidget, self).__init__(parent) self.displayFont = QFont() self.squareSize = 24 self.columns = 16 self.lastKey = -1 self.setMouseTracking(True) def updateFont(self, fontFamily): self.displayFont.setFamily(fontFamily) self.squareSize = max(24, QFontMetrics(self.displayFont).xHeight() * 3) self.adjustSize() self.update() def updateSize(self, fontSize): fontSize, _ = fontSize.toInt() self.displayFont.setPointSize(fontSize) self.squareSize = max(24, QFontMetrics(self.displayFont).xHeight() * 3) self.adjustSize() self.update() def updateStyle(self, fontStyle): fontDatabase = QFontDatabase() oldStrategy = self.displayFont.styleStrategy() self.displayFont = fontDatabase.font(self.displayFont.family(), fontStyle, self.displayFont.pointSize()) self.displayFont.setStyleStrategy(oldStrategy) self.squareSize = max(24, QFontMetrics(self.displayFont).xHeight() * 3) self.adjustSize() self.update() def updateFontMerging(self, enable): if enable: self.displayFont.setStyleStrategy(QFont.PreferDefault) else: self.displayFont.setStyleStrategy(QFont.NoFontMerging) self.adjustSize() self.update() def sizeHint(self): return QSize(self.columns * self.squareSize, (65536 / self.columns) * self.squareSize) def mouseMoveEvent(self, event): widgetPosition = self.mapFromGlobal(event.globalPos()) key = (widgetPosition.y() // self.squareSize) * self.columns + widgetPosition.x() // self.squareSize text = '

      Character: %s

      Value: 0x%x' % (self.displayFont.family(), self._chr(key), key) QToolTip.showText(event.globalPos(), text, self) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.lastKey = (event.y() // self.squareSize) * self.columns + event.x() // self.squareSize key_ch = self._chr(self.lastKey) if unicodedata.category(key_ch) != 'Cn': self.characterSelected.emit(key_ch) self.update() else: super(CharacterWidget, self).mousePressEvent(event) def paintEvent(self, event): painter = QPainter(self) painter.fillRect(event.rect(), Qt.white) painter.setFont(self.displayFont) redrawRect = event.rect() beginRow = redrawRect.top() // self.squareSize endRow = redrawRect.bottom() // self.squareSize beginColumn = redrawRect.left() // self.squareSize endColumn = redrawRect.right() // self.squareSize painter.setPen(Qt.gray) for row in range(beginRow, endRow + 1): for column in range(beginColumn, endColumn + 1): painter.drawRect(column * self.squareSize, row * self.squareSize, self.squareSize, self.squareSize) fontMetrics = QFontMetrics(self.displayFont) painter.setPen(Qt.black) for row in range(beginRow, endRow + 1): for column in range(beginColumn, endColumn + 1): key = row * self.columns + column painter.setClipRect(column * self.squareSize, row * self.squareSize, self.squareSize, self.squareSize) if key == self.lastKey: painter.fillRect(column * self.squareSize + 1, row * self.squareSize + 1, self.squareSize, self.squareSize, Qt.red) key_ch = self._chr(key) painter.drawText(column * self.squareSize + (self.squareSize / 2) - fontMetrics.width(key_ch) / 2, row * self.squareSize + 4 + fontMetrics.ascent(), key_ch) @staticmethod def _chr(codepoint): try: # Python v2. return unichr(codepoint) except NameError: # Python v3. return chr(codepoint) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() centralWidget = QWidget() fontLabel = QLabel("Font:") self.fontCombo = QFontComboBox() sizeLabel = QLabel("Size:") self.sizeCombo = QComboBox() styleLabel = QLabel("Style:") self.styleCombo = QComboBox() fontMergingLabel = QLabel("Automatic Font Merging:") self.fontMerging = QCheckBox() self.fontMerging.setChecked(True) self.scrollArea = QScrollArea() self.characterWidget = CharacterWidget() self.scrollArea.setWidget(self.characterWidget) self.findStyles(self.fontCombo.currentFont()) self.findSizes(self.fontCombo.currentFont()) self.lineEdit = QLineEdit() clipboardButton = QPushButton("&To clipboard") self.clipboard = QApplication.clipboard() self.fontCombo.currentFontChanged.connect(self.findStyles) self.fontCombo.activated[str].connect(self.characterWidget.updateFont) self.styleCombo.activated[str].connect(self.characterWidget.updateStyle) self.sizeCombo.currentIndexChanged[str].connect(self.characterWidget.updateSize) self.characterWidget.characterSelected.connect(self.insertCharacter) clipboardButton.clicked.connect(self.updateClipboard) controlsLayout = QHBoxLayout() controlsLayout.addWidget(fontLabel) controlsLayout.addWidget(self.fontCombo, 1) controlsLayout.addWidget(sizeLabel) controlsLayout.addWidget(self.sizeCombo, 1) controlsLayout.addWidget(styleLabel) controlsLayout.addWidget(self.styleCombo, 1) controlsLayout.addWidget(fontMergingLabel) controlsLayout.addWidget(self.fontMerging, 1) controlsLayout.addStretch(1) lineLayout = QHBoxLayout() lineLayout.addWidget(self.lineEdit, 1) lineLayout.addSpacing(12) lineLayout.addWidget(clipboardButton) centralLayout = QVBoxLayout() centralLayout.addLayout(controlsLayout) centralLayout.addWidget(self.scrollArea, 1) centralLayout.addSpacing(4) centralLayout.addLayout(lineLayout) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget) self.setWindowTitle("Character Map") def findStyles(self, font): fontDatabase = QFontDatabase() currentItem = self.styleCombo.currentText() self.styleCombo.clear() for style in fontDatabase.styles(font.family()): self.styleCombo.addItem(style) styleIndex = self.styleCombo.findText(currentItem) if styleIndex == -1: self.styleCombo.setCurrentIndex(0) else: self.styleCombo.setCurrentIndex(styleIndex) def findSizes(self, font): fontDatabase = QFontDatabase() currentSize = self.sizeCombo.currentText() self.sizeCombo.blockSignals(True) self.sizeCombo.clear() if fontDatabase.isSmoothlyScalable(font.family(), fontDatabase.styleString(font)): for size in QFontDatabase.standardSizes(): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(True) else: for size in fontDatabase.smoothSizes(font.family(), fontDatabase.styleString(font)): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(False) self.sizeCombo.blockSignals(False) sizeIndex = self.sizeCombo.findText(currentSize) if sizeIndex == -1: self.sizeCombo.setCurrentIndex(max(0, self.sizeCombo.count() / 3)) else: self.sizeCombo.setCurrentIndex(sizeIndex) def insertCharacter(self, character): self.lineEdit.insert(character) def updateClipboard(self): self.clipboard.setText(self.lineEdit.text(), QClipboard.Clipboard) self.clipboard.setText(self.lineEdit.text(), QClipboard.Selection) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/digitalclock.py0000755000076500000240000000547712613140041021555 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QTime, QTimer from PyQt5.QtWidgets import QApplication, QLCDNumber class DigitalClock(QLCDNumber): def __init__(self, parent=None): super(DigitalClock, self).__init__(parent) self.setSegmentStyle(QLCDNumber.Filled) timer = QTimer(self) timer.timeout.connect(self.showTime) timer.start(1000) self.showTime() self.setWindowTitle("Digital Clock") self.resize(150, 60) def showTime(self): time = QTime.currentTime() text = time.toString('hh:mm') if (time.second() % 2) == 0: text = text[:2] + ' ' + text[3:] self.display(text) if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = DigitalClock() clock.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/groupbox.py0000755000076500000240000001327712613140041020766 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QMenu, QPushButton, QRadioButton, QVBoxLayout, QWidget) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) grid = QGridLayout() grid.addWidget(self.createFirstExclusiveGroup(), 0, 0) grid.addWidget(self.createSecondExclusiveGroup(), 1, 0) grid.addWidget(self.createNonExclusiveGroup(), 0, 1) grid.addWidget(self.createPushButtonGroup(), 1, 1) self.setLayout(grid) self.setWindowTitle("Group Box") self.resize(480, 320) def createFirstExclusiveGroup(self): groupBox = QGroupBox("Exclusive Radio Buttons") radio1 = QRadioButton("&Radio button 1") radio2 = QRadioButton("R&adio button 2") radio3 = QRadioButton("Ra&dio button 3") radio1.setChecked(True) vbox = QVBoxLayout() vbox.addWidget(radio1) vbox.addWidget(radio2) vbox.addWidget(radio3) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox def createSecondExclusiveGroup(self): groupBox = QGroupBox("E&xclusive Radio Buttons") groupBox.setCheckable(True) groupBox.setChecked(False) radio1 = QRadioButton("Rad&io button 1") radio2 = QRadioButton("Radi&o button 2") radio3 = QRadioButton("Radio &button 3") radio1.setChecked(True) checkBox = QCheckBox("Ind&ependent checkbox") checkBox.setChecked(True) vbox = QVBoxLayout() vbox.addWidget(radio1) vbox.addWidget(radio2) vbox.addWidget(radio3) vbox.addWidget(checkBox) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox def createNonExclusiveGroup(self): groupBox = QGroupBox("Non-Exclusive Checkboxes") groupBox.setFlat(True) checkBox1 = QCheckBox("&Checkbox 1") checkBox2 = QCheckBox("C&heckbox 2") checkBox2.setChecked(True) tristateBox = QCheckBox("Tri-&state button") tristateBox.setTristate(True) tristateBox.setCheckState(Qt.PartiallyChecked) vbox = QVBoxLayout() vbox.addWidget(checkBox1) vbox.addWidget(checkBox2) vbox.addWidget(tristateBox) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox def createPushButtonGroup(self): groupBox = QGroupBox("&Push Buttons") groupBox.setCheckable(True) groupBox.setChecked(True) pushButton = QPushButton("&Normal Button") toggleButton = QPushButton("&Toggle Button") toggleButton.setCheckable(True) toggleButton.setChecked(True) flatButton = QPushButton("&Flat Button") flatButton.setFlat(True) popupButton = QPushButton("Pop&up Button") menu = QMenu(self) menu.addAction("&First Item") menu.addAction("&Second Item") menu.addAction("&Third Item") menu.addAction("F&ourth Item") popupButton.setMenu(menu) newAction = menu.addAction("Submenu") subMenu = QMenu("Popup Submenu", self) subMenu.addAction("Item 1") subMenu.addAction("Item 2") subMenu.addAction("Item 3") newAction.setMenu(subMenu) vbox = QVBoxLayout() vbox.addWidget(pushButton) vbox.addWidget(toggleButton) vbox.addWidget(flatButton) vbox.addWidget(popupButton) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = Window() clock.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/icons/0000755000076500000240000000000012613140041017645 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/icons/icons.py0000755000076500000240000004224212613140041021341 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFileInfo, QRegExp, QSize, Qt from PyQt5.QtGui import QIcon, QImage, QPalette, QPixmap from PyQt5.QtWidgets import (QAbstractItemView, QAction, QActionGroup, QApplication, QComboBox, QFileDialog, QFrame, QGridLayout, QGroupBox, QHBoxLayout, QHeaderView, QItemDelegate, QLabel, QMainWindow, QMessageBox, QRadioButton, QSizePolicy, QSpinBox, QStyle, QStyleFactory, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget) class IconSizeSpinBox(QSpinBox): @staticmethod def valueFromText(text): regExp = QRegExp("(\\d+)(\\s*[xx]\\s*\\d+)?") if regExp.exactMatch(text): return int(regExp.cap(1)) else: return 0 @staticmethod def textFromValue(value): return "%d x %d" % (value, value) class ImageDelegate(QItemDelegate): def createEditor(self, parent, option, index): comboBox = QComboBox(parent) if index.column() == 1: comboBox.addItem("Normal") comboBox.addItem("Active") comboBox.addItem("Disabled") comboBox.addItem("Selected") elif index.column() == 2: comboBox.addItem("Off") comboBox.addItem("On") comboBox.activated.connect(self.emitCommitData) return comboBox def setEditorData(self, editor, index): comboBox = editor if not comboBox: return pos = comboBox.findText(index.model().data(index), Qt.MatchExactly) comboBox.setCurrentIndex(pos) def setModelData(self, editor, model, index): comboBox = editor if not comboBox: return model.setData(index, comboBox.currentText()) def emitCommitData(self): self.commitData.emit(self.sender()) class IconPreviewArea(QWidget): def __init__(self, parent=None): super(IconPreviewArea, self).__init__(parent) mainLayout = QGridLayout() self.setLayout(mainLayout) self.icon = QIcon() self.size = QSize() self.stateLabels = [] self.modeLabels = [] self.pixmapLabels = [] self.stateLabels.append(self.createHeaderLabel("Off")) self.stateLabels.append(self.createHeaderLabel("On")) self.modeLabels.append(self.createHeaderLabel("Normal")) self.modeLabels.append(self.createHeaderLabel("Active")) self.modeLabels.append(self.createHeaderLabel("Disabled")) self.modeLabels.append(self.createHeaderLabel("Selected")) for j, label in enumerate(self.stateLabels): mainLayout.addWidget(label, j + 1, 0) for i, label in enumerate(self.modeLabels): mainLayout.addWidget(label, 0, i + 1) self.pixmapLabels.append([]) for j in range(len(self.stateLabels)): self.pixmapLabels[i].append(self.createPixmapLabel()) mainLayout.addWidget(self.pixmapLabels[i][j], j + 1, i + 1) def setIcon(self, icon): self.icon = icon self.updatePixmapLabels() def setSize(self, size): if size != self.size: self.size = size self.updatePixmapLabels() def createHeaderLabel(self, text): label = QLabel("%s" % text) label.setAlignment(Qt.AlignCenter) return label def createPixmapLabel(self): label = QLabel() label.setEnabled(False) label.setAlignment(Qt.AlignCenter) label.setFrameShape(QFrame.Box) label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) label.setBackgroundRole(QPalette.Base) label.setAutoFillBackground(True) label.setMinimumSize(132, 132) return label def updatePixmapLabels(self): for i in range(len(self.modeLabels)): if i == 0: mode = QIcon.Normal elif i == 1: mode = QIcon.Active elif i == 2: mode = QIcon.Disabled else: mode = QIcon.Selected for j in range(len(self.stateLabels)): state = QIcon.Off if j == 0 else QIcon.On pixmap = self.icon.pixmap(self.size, mode, state) self.pixmapLabels[i][j].setPixmap(pixmap) self.pixmapLabels[i][j].setEnabled(not pixmap.isNull()) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.createPreviewGroupBox() self.createImagesGroupBox() self.createIconSizeGroupBox() self.createActions() self.createMenus() self.createContextMenu() mainLayout = QGridLayout() mainLayout.addWidget(self.previewGroupBox, 0, 0, 1, 2) mainLayout.addWidget(self.imagesGroupBox, 1, 0) mainLayout.addWidget(self.iconSizeGroupBox, 1, 1) self.centralWidget.setLayout(mainLayout) self.setWindowTitle("Icons") self.checkCurrentStyle() self.otherRadioButton.click() self.resize(self.minimumSizeHint()) def about(self): QMessageBox.about(self, "About Icons", "The Icons example illustrates how Qt renders an icon " "in different modes (active, normal, disabled and selected) " "and states (on and off) based on a set of images.") def changeStyle(self, checked): if not checked: return action = self.sender() style = QStyleFactory.create(action.data()) if not style: return QApplication.setStyle(style) self.setButtonText(self.smallRadioButton, "Small (%d x %d)", style, QStyle.PM_SmallIconSize) self.setButtonText(self.largeRadioButton, "Large (%d x %d)", style, QStyle.PM_LargeIconSize) self.setButtonText(self.toolBarRadioButton, "Toolbars (%d x %d)", style, QStyle.PM_ToolBarIconSize) self.setButtonText(self.listViewRadioButton, "List views (%d x %d)", style, QStyle.PM_ListViewIconSize) self.setButtonText(self.iconViewRadioButton, "Icon views (%d x %d)", style, QStyle.PM_IconViewIconSize) self.setButtonText(self.tabBarRadioButton, "Tab bars (%d x %d)", style, QStyle.PM_TabBarIconSize) self.changeSize() @staticmethod def setButtonText(button, label, style, metric): metric_value = style.pixelMetric(metric) button.setText(label % (metric_value, metric_value)) def changeSize(self, checked=True): if not checked: return if self.otherRadioButton.isChecked(): extent = self.otherSpinBox.value() else: if self.smallRadioButton.isChecked(): metric = QStyle.PM_SmallIconSize elif self.largeRadioButton.isChecked(): metric = QStyle.PM_LargeIconSize elif self.toolBarRadioButton.isChecked(): metric = QStyle.PM_ToolBarIconSize elif self.listViewRadioButton.isChecked(): metric = QStyle.PM_ListViewIconSize elif self.iconViewRadioButton.isChecked(): metric = QStyle.PM_IconViewIconSize else: metric = QStyle.PM_TabBarIconSize extent = QApplication.style().pixelMetric(metric) self.previewArea.setSize(QSize(extent, extent)) self.otherSpinBox.setEnabled(self.otherRadioButton.isChecked()) def changeIcon(self): icon = QIcon() for row in range(self.imagesTable.rowCount()): item0 = self.imagesTable.item(row, 0) item1 = self.imagesTable.item(row, 1) item2 = self.imagesTable.item(row, 2) if item0.checkState() == Qt.Checked: if item1.text() == "Normal": mode = QIcon.Normal elif item1.text() == "Active": mode = QIcon.Active elif item1.text() == "Disabled": mode = QIcon.Disabled else: mode = QIcon.Selected if item2.text() == "On": state = QIcon.On else: state = QIcon.Off fileName = item0.data(Qt.UserRole) image = QImage(fileName) if not image.isNull(): icon.addPixmap(QPixmap.fromImage(image), mode, state) self.previewArea.setIcon(icon) def addImage(self): fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Images", '', "Images (*.png *.xpm *.jpg);;All Files (*)") for fileName in fileNames: row = self.imagesTable.rowCount() self.imagesTable.setRowCount(row + 1) imageName = QFileInfo(fileName).baseName() item0 = QTableWidgetItem(imageName) item0.setData(Qt.UserRole, fileName) item0.setFlags(item0.flags() & ~Qt.ItemIsEditable) item1 = QTableWidgetItem("Normal") item2 = QTableWidgetItem("Off") if self.guessModeStateAct.isChecked(): if '_act' in fileName: item1.setText("Active") elif '_dis' in fileName: item1.setText("Disabled") elif '_sel' in fileName: item1.setText("Selected") if '_on' in fileName: item2.setText("On") self.imagesTable.setItem(row, 0, item0) self.imagesTable.setItem(row, 1, item1) self.imagesTable.setItem(row, 2, item2) self.imagesTable.openPersistentEditor(item1) self.imagesTable.openPersistentEditor(item2) item0.setCheckState(Qt.Checked) def removeAllImages(self): self.imagesTable.setRowCount(0) self.changeIcon() def createPreviewGroupBox(self): self.previewGroupBox = QGroupBox("Preview") self.previewArea = IconPreviewArea() layout = QVBoxLayout() layout.addWidget(self.previewArea) self.previewGroupBox.setLayout(layout) def createImagesGroupBox(self): self.imagesGroupBox = QGroupBox("Images") self.imagesTable = QTableWidget() self.imagesTable.setSelectionMode(QAbstractItemView.NoSelection) self.imagesTable.setItemDelegate(ImageDelegate(self)) self.imagesTable.horizontalHeader().setDefaultSectionSize(90) self.imagesTable.setColumnCount(3) self.imagesTable.setHorizontalHeaderLabels(("Image", "Mode", "State")) self.imagesTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.imagesTable.horizontalHeader().setSectionResizeMode(1, QHeaderView.Fixed) self.imagesTable.horizontalHeader().setSectionResizeMode(2, QHeaderView.Fixed) self.imagesTable.verticalHeader().hide() self.imagesTable.itemChanged.connect(self.changeIcon) layout = QVBoxLayout() layout.addWidget(self.imagesTable) self.imagesGroupBox.setLayout(layout) def createIconSizeGroupBox(self): self.iconSizeGroupBox = QGroupBox("Icon Size") self.smallRadioButton = QRadioButton() self.largeRadioButton = QRadioButton() self.toolBarRadioButton = QRadioButton() self.listViewRadioButton = QRadioButton() self.iconViewRadioButton = QRadioButton() self.tabBarRadioButton = QRadioButton() self.otherRadioButton = QRadioButton("Other:") self.otherSpinBox = IconSizeSpinBox() self.otherSpinBox.setRange(8, 128) self.otherSpinBox.setValue(64) self.smallRadioButton.toggled.connect(self.changeSize) self.largeRadioButton.toggled.connect(self.changeSize) self.toolBarRadioButton.toggled.connect(self.changeSize) self.listViewRadioButton.toggled.connect(self.changeSize) self.iconViewRadioButton.toggled.connect(self.changeSize) self.tabBarRadioButton.toggled.connect(self.changeSize) self.otherRadioButton.toggled.connect(self.changeSize) self.otherSpinBox.valueChanged.connect(self.changeSize) otherSizeLayout = QHBoxLayout() otherSizeLayout.addWidget(self.otherRadioButton) otherSizeLayout.addWidget(self.otherSpinBox) otherSizeLayout.addStretch() layout = QGridLayout() layout.addWidget(self.smallRadioButton, 0, 0) layout.addWidget(self.largeRadioButton, 1, 0) layout.addWidget(self.toolBarRadioButton, 2, 0) layout.addWidget(self.listViewRadioButton, 0, 1) layout.addWidget(self.iconViewRadioButton, 1, 1) layout.addWidget(self.tabBarRadioButton, 2, 1) layout.addLayout(otherSizeLayout, 3, 0, 1, 2) layout.setRowStretch(4, 1) self.iconSizeGroupBox.setLayout(layout) def createActions(self): self.addImagesAct = QAction("&Add Images...", self, shortcut="Ctrl+A", triggered=self.addImage) self.removeAllImagesAct = QAction("&Remove All Images", self, shortcut="Ctrl+R", triggered=self.removeAllImages) self.exitAct = QAction("&Quit", self, shortcut="Ctrl+Q", triggered=self.close) self.styleActionGroup = QActionGroup(self) for styleName in QStyleFactory.keys(): action = QAction(self.styleActionGroup, text="%s Style" % styleName, checkable=True, triggered=self.changeStyle) action.setData(styleName) self.guessModeStateAct = QAction("&Guess Image Mode/State", self, checkable=True, checked=True) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.addImagesAct) self.fileMenu.addAction(self.removeAllImagesAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.viewMenu = self.menuBar().addMenu("&View") for action in self.styleActionGroup.actions(): self.viewMenu.addAction(action) self.viewMenu.addSeparator() self.viewMenu.addAction(self.guessModeStateAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createContextMenu(self): self.imagesTable.setContextMenuPolicy(Qt.ActionsContextMenu) self.imagesTable.addAction(self.addImagesAct) self.imagesTable.addAction(self.removeAllImagesAct) def checkCurrentStyle(self): for action in self.styleActionGroup.actions(): styleName = action.data() candidate = QStyleFactory.create(styleName) if candidate is None: return if candidate.metaObject().className() == QApplication.style().metaObject().className(): action.trigger() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/icons/images/0000755000076500000240000000000012613140041021112 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/icons/images/designer.png0000644000076500000240000001015512613140041023422 0ustar philstaff00000000000000‰PNG  IHDR€€Ã>aËgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÿIDATxÚì]mpõöî ¹¼˜‹Æ@IÐ5mÚi¢#©ƒÉt´¶3"ÅqÚ‚èøÁVAÚñS…Ê82SÑ`Ç*R§ˆ˜iŠ$T u*G@à"”„ËË%—{Ûî³w»Ù»Û»ûïæör{ûÿÍ,¹Ëm’ã~¿çõÿư, Æ…‰~T†…ôÆÌÆ’Z¿ÙTË0L™ßçËc¦¿_oEwd•d–gÊý¨ÖnfÌà;>ßÙÜÕA?úÔ+`ZÊó-~ÿFŽðµÀ/}-'Ç K–äÀí·g©ýÛT©,KÓüfŽ 6îa~øk••YPW— ™™šD^ Ýà7õ˜€év«»­ù„ƒÒ•$˜.ÙÎYüF¹@ò—.ÍŸ‰÷êà„ÑM…¡±8òÛ8ò[SŒ|E†;¥W¡,kæ·rÏÛän´Ù2 ¥åf]ýç8a`NyF—gtPaÄ—ð•™¼Þr1ÑØXQ²|Ý CF±\qñ,N6#||ø01¦“~¿¿“Ñ?7ÙöÀr³þÑnZµª,˜mdO™¶Âà`^³`#°þíÑnZ¿~. –q„¡×^/SSé> Ùàî?á½ =4¹ ©ôF´ä¯º:êêò(¥ ÆÎ5][Rá ­¼¨Å½FÝ>£¢Œ¦ÁÏú7§Ê¢ìTTTTTTFƒ%UÞHo¯Ün? zÄïÕTÜùÙ¹PvK ”•ÂÀøUï/ àüùq°Û]ÐÓã _»òQh¨®ãǸgÎ ‡îkp²÷ÿœB'@†ÑQÿü‘ºÕ°íÉ-¼¥“"+#j‹—ñ×xõ(|vñ8taB* ]|g§C´xtïooÜÆ `:@1<\µVTü >9»‹EŠ Éooc<ºø¿ÿv—"«'ÂcÕÏ@¥m ¼sâ÷н¾?ŠVÜSÞ11÷˜ðŒÁåásT‰ ÿ³Wöò@ `X°eö/~C,|o½½“âóÊÂ%°rá£÷aÞñ꿦e  ÛÈGÒÛ6¼ªùJó*aÓ}oð^CCžçË~POû‰ÀéÓN1æ#0Ù‹—á'RHËP|Ù™ÀÐdX ë?~|4Ī0¶ªò"_wñ×É‹gý\ýüF>$ÄÀ¤á¬_óàØ±^0ãW L¾^?²öì„sçÆE }ú‘õ°aͯˆ~ÇÚÅ/ò±;Z>06æKR!G1 4óø¡ „ YµR·Š÷:~ W'Oò+’–- L\²÷_MonuÚD\¬\øxÌP lDQLRò¤Ö*­uç—χX-®DD€xçÐßàµß"ú}Ø#ˆ–JÝ?&§Ô$Øæ•ºT¥*vöäúý(œ©,`ë{ÛÀá!ò˜ÄKÿ5ºTiLUšø¡ÕÇêæá¾ü„^`eÅ㲉ª4ÔÈú5€ÔúJ[½ñwp".VCÁ¿öý^lå›*x‹.˜]ðºÌ@ñ_³*`º5õÙÁ¯âÞƒKÕËŤËC’03—}þØþù”·ÚÓ ­‹Ï‡€9V¾K˜.mᄠܥªè¹2|>î=<`ÊKtœ>F$€ð “>%q›KÏÞ·S¶b9tqt}ßnì µ~µ55‰e…/U'm “L Fa–þÖP&\á5umù '_nT%Ã)j –èéÊ`l%…Õ:Á°MLŠƒ•zI€´õ«¦¦Vâl6u)̃ ôÌxPkq)®’æeTÚTR량¦ IGPðLØLÂñ sS)/ˆE¥°}ýæ¸!ërÿÿàòõÐ|#—zuÙTƒƒÞiÿ%! ¼Tæ+8f $^$š0õÁ;ß= ÃC>ðxB·ØËÊ6A–Õd\DdÛ +Ätfõ’z¡lëí=­úoå˜i/h=í+'/}C|/vô(,€ð…« *€©z›Ë¬µ„Ú>¢ªðnʾÖкަXÑ@A@A@‘šPÒ˜¡˜6¸«6¥ t…*àϸÕïaîÂó.)‚®C@øÜ%H“$Z¹k„nõ[CmÒ §², &t"ùüñ>þ‘Qp<ÎÃGùÇAA‰ ¡ŒI§jS$‡|GøèÑÿ‚grËòñf™>E|þ5–…kÙ³`tvF¤ÕgX ²éA˜c»‰/и«ECdN+ Ô/{ž3 ¦ÀóôD¾^¦çb’?8tƒÏnä[alŠÀÇ_`1â¦Õe+È_sµ@øIãû}ª¸Œµ»'&Òígq’dõHó“D’`˜û\úÞƒyÞßÅ$_ÀðM¹àœ3‹·ü»š‚ìÂHò5ö¤"Àýü”†úÒÆ¨¯áþÃRîAˆÛ·H{jKVÜt–âûøàƒ>صë*|øþd÷?¤ùæ^70nlL;”1[c’/Àuk!Tÿ´‰#ß&K>_FjåÓ*+³B¬½€’íâРµ…[,Z¿TXþ‘–€G/óuÒÁ+Ü€úÛ¯ª*VWòá=<µÿš‘/VZL`¢‹þ£’Ÿ‘‘÷ß[9y¹QÉ×Tè°ö Ä •îˆtøžÿxî€Pÿ 'ŽfÿrîËV¡¢èVгxéçϨþl‚Vª"_|ßl;Œõ¹á<•ü¼8äkH7tD÷Š¡@i9ˆ{þcs]î¾}×E²pÑ :AºødïéíqÖN¯ò[¿Ó!_óõš`ÞägðCïÕäk.ÜÖUÚ"ÝÖ5\Ïßû˜u})TϽ‡OøÐê¿Úñ)qæÏŸ.ÖÛÅSÍã{Sš°Îù¬›áŸÎóM‰@)ù†å’sS)ËŠ¥–¬h±h¹Ò„ H0|àŽã±š?V„¡eÕñ×þ©úï=µÿÇI#_ŠþÙ«!oéûŠÈ×Ü1V* ÜÝ[K+“sýñ:¸¹0Љ+ÒmèIKL­Ég2ò¡ôþW“Ÿ^«ø'cÍ–}$;wbûº±Ñ&v01WYñÂcDï‘ß!ôÂxá`³ìaRÉ ?³á0ù5ŠÉOJˆæj1ƒÇ$N«M‘”h‰_¼…å+~usd`’YSq'?Ö°¬ºž'w2;;ð¿¥m¬¹©N~Ò€8rÄ!&"À|@í9BÑb>?Ó{öêüßpá, ’êy5GÇFsùξ9ã£}z!Æ íèáÙB³=V JÃBª¯7ògTáq÷̧êаûÄ֔ئ]oä'­ )ñT0µ ™*ÛÝ”|= @€t"‰’¶,ÎHÖ‚’t"?âH{Âññ”| |"‰’Á#£oZôdR=ÞÉO™$P œ`!TX^xKù߬ <¡ÕQïé@~ÊyAppY͸Ž âd ¦o¥ù)) Òåe/¿¿=¥Þ_:‘Ÿ’@òëë§&xb"Hz>0%? €À‰$ÒÑCœH2Ó;Ž¥#ù)+D]]®ØÀ’tx–’Ÿ&ÀP€cô˜âcÁ’ ?­\NÌ (Ó™ü”,å ,ÁÕ@89ÇpÇèñXšÀ˜}`I˜•sn0ðõÀ·oRòõ.êö (ùT3l…|„…RЦª'ù¯^W/øÆÓ›|êd¬_hÙ/Âpÿ/Òš|ê°²âqþëä踸 °D=÷æ7Ò’|# ÀÁÛÍ0 ~S ˜îu?Úê¨-^†ûíÃHßEñF×hP¶7ÒŽ|# ‚h¸ºÛšOÈö༓ã0q#tr)ŠÀäôA>»#­ÈO'(!Z8!OÞ€á«geo÷¯ÜÈìHòE0 ó˲m :6"·~ŸœßG½i8°A¤ù¢¼¿;£©Ôî<~dÆÀÝ¡ÑѰÿ•Äþx"Èé}]÷䇄ÏË™%Ë}&æp2E€Ds_ìfÆÜÃYÿxgs—=‰ŸA«`ý£×.ýŠÀŸË@îÀëº&?"p·_éÖJ)@t4lÆ0ñCÂe]¨‚"Ð#ù²I (†  S–FDË¡§lEMþHD7ü®.Éç…‹£²/´”ç3^ïá»—äÔÊêŒèh@O×€‰ß४~ÁìœB(()‹u®îÈY²û.98,ϰ0mÙ-‡Ú €žï¾«YÙg·¼¹U`™%N]Óù1=€€eoë©S_ÖÍ/Á³ëš ôV[Ì0™3 çÖ…m+•ØÍ]/Cpf=Á¨ƒAeÁì>úh?Œ»ÜðêÛàòµAy7É‘m+_ skVI­-þOÜUÎ]Oè‘|#{\l°±¯¯Ö¶®¿™5;3Ä`|Ï)ª€97…bD¿´z‡Þ?#z€|Áúßýë{¡õ}И¬EP´è>¸…»$äw-½b´Êæ¸Ëœà æ°ˆiêäù€1ÍN.¡ÀˆL²m~¸ÙëW 8±“ ¼™aþvxÃØÄWrü lä<û¡bÔ!Ìócºåu–Sµ‘ïÙ8b8d7–°‡žÅ¸²o'w£Ë?¨*ªÒÛ£*Öµoñ¿uLQÎIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/find_normal.png0000644000076500000240000000150612613140041024112 0ustar philstaff00000000000000‰PNG  IHDRójœ ÎPLTEÿÿÿÜÜÜÄÄÄfÌÿÑÑÑÈÈÈÔÔÔ%%%ÏÏÏ’’’Z³à=z™úúúMMMcccèè袢¢>?@ÌÌÌ‘‘‘ÕÕÕáááäääÐÐÐ÷÷÷rrrÆÆÆ´´´ËËËÍÍÍxxx3@R£ÌøøøÛÛÛØØØ!!!§§§¦¦¦ÅÊÌææænnnttt¨¨¨¹¹¹hhh­­­õüÿôûÿ’—™___···>>>+++LLLóûÿïúÿÕÜàôôôòòòëëëžžžWWWvvv•˜™íùÿ•••ZZZßßßîîîÝÝÝœœœìùÿ¼ÆÌ¬¬¬ÇÇÇNNN¥¥¥Œ•™:>?666G6 QQQõõõ××תªªVVV\\\J8¬0‚T ñúÿÎÎÎÓÓÓŸŸŸ¸¸¸£££zO[vJ oooŽ•™÷üÿ iC~Pb> ©©©;>@bbbššškkk V7F,eeeÁÁÁÉÉÉ———òûÿÀÀÀiii  BBB«««½½½”””ÂÂÂÒÜàààà KKK€€€‡‡‡ƒƒƒîùÿüüü…ÔǽtRNS@™àcñI× IDATx^ÑSwA€Ñ,’îÏÚvhÛ¶mÛ¶müÛÌfÏNŸ$oùïCU×éˆÿÂýâO!•.#î§•PtRk{ v‰T4iv{¿uP “ÃéW*Õ†ÚÒ2K¼ÚfK¹Ä b%ÑànhL(@í|»TIefeç”ÃÔJ½P_ÐeŠ —8u07/ŸeÙBÌÅNëçž­ é* ù¨Y®³ÔC3Éq\W6·lkÚ „1B@|`gWwO¯ˆÒñœ¡á‘ѱqÇäÃ0Óâ¥À<ó<7¿°¸äáH’ÆL«kë›[”Ñ»‹ÙK¡½ýƒÃ£ãêô ³Ç…..¯®onïëóÏ›´¾—×7­‰ÇŒûûGry”<_mÀ8³›ŠIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_off_128x128.png0000644000076500000240000001560512613140041025000 0ustar philstaff00000000000000‰PNG  IHDR€€Ã>aËLIDATxÚí]xמոQB„ ‚ (JCq Z´¸;Á‹»{p/¥EÚB½}-T€Ê£î}µWãU“óî¹;w3;Ù™Ygí~ßÿñ‘ݹsÏ™{ŽóÿðQƒ Ÿ`0Á$‚"‚­ëæŒ#@Љ Ñ¿\ž=´ýÖ„Ëœ‡› Ñg\g[¹ü ˜ ©àwÙçîfÚuº¥h„ë3Ú̺tá žÏO9ƒëù[‚ož#˜v¯ ‚Ù¿p–‡Y¡ð³Œ?÷éß:$j|ŽøˆcDÐM 7Ê¿¤‹Là?Z¸¦7 š»šø­…!45Ô¯“êÕ ˜4õ壑äP»ŸdÄúæz¡<ðŠ9¯§¸È_>Fü%¼¹V«É#»ÃµÓ«áï/.AéWWŒøùÎ9xdîp 2™0q,k¬óYâ3 ©©®Ëw&/“Z ¹Í²`ý¢ÑpéèrxüÐR8µ{>Œ*ì•£#¥ŽÚÞ.Ñ×)Õ*Ø#>½~Ø„èæðíí“Ó0Ãø[<}øÌy„ꯘ˜Y™ipû™]²kz™0EFõªâß–òtr¸`¹Mx£ð°`:%Â3àΕ™JàÛ[¿¹ u™÷úäÂߟ_²h]ÿùâ2¬ ;,îÂ"F8îH&˜$¼xjÕ8EîcçªIÆß?\[ë'¼í T©TpýÒ«ÖñêÅÍSQÌ+A|ÔãKØE«ÄW¢Û¹5“ûùΣFŸF$ß“~‚—ÁXDQÛõ¬fÃ1{ 2k$‹™à!{ˆÇ«(ôbÑQápçÅ}VOlÅœáÆ a0¥Ÿàæ1°z™@øÜÙµ61ÁWoƒ¤ÄÊBÀ—·…­ p™](0@ÏŸ[gõ„~ÿäqˆã·& —òZ˜´Áû º´oj n^Ý a!B&@CR¨µÄ/n%ëˆ*bËdv­.;û4ô¿ýJÀp2& ܺ¶Ëf&xêÄJaXbƒ5į(´D5ήYN¿·TB­‘VÅxöÛïRÕÊ&zWG ã ¦eé`N},n¬s™\9EtT“©¥É(‹ÉÿO¶wœÛ8PcX÷A½ÚÛ̈òÅVØ&–2ÀjöCN o>½Ã¦ œÙ»Ð8)Y:›]¨}É[!Šª)oT« )T -ãÔ0 ]KcòvÚ™7°0æ>˜¢Ì(5j¥ç Ó¨ £æ!j(ƒØãÖîRÕ h5øòc63Àïk7-Q +íûSG÷´yùyMè5*ª¬~CÆ’7 “3™×,",Æ ì[ ƒç-€g‹çÃÅ]3áÄú °væ@Ü­5ÔÏHHFs3fͨ§ƒâ¶ò÷¶¾BxŒì“/-‚Òw¼§Œ’wŽÀ;¯†ckÇÜQ„)’g![j‘·´'yKWås0îN­ã5PFôZ©ñðP϶ptÍ8øäê&‹îxïâضpôê”Cï‹÷DFXc#`d ’!G¨= €hÖ(CÈÏ)¹v¿a_YØÅæ›®]8ʘ‹oIî†áV[)¾Å3G<wß<`ñÂËáÛ—vÀáÕàn­ ¾rãbD”ÕÀ{¶mš ëfÂWÖ;ä¾È …­ÈVn &&°¶Ð:±®Î8Ï—/l´‹Îí+ïÍ%ôêÝyi¿Í7Í®]^ÏEKˆß$ưHͲ«ÃÍó+B)¼qnÌó !xmèI¶uÜ-~}}ŸÓî÷ås[a@׆Զ`55ý*ª„„Q˜ahÌà®v1À?_^†ZéIB8+ÅçØ— :6³ù†o?»Ûx3””•ˆŸÃ<9ãIø{s[¦@Xp &-б&= #BáOŸ°‹ ö¬"d€¿835 °Ú…±´Jñæ™6߬hj¡1}ûH;yOX‹XñÇöï@Îù#^͈·/¬‚jI1ô™1¡TŽP›`ô¸rl…] p÷ÃÇ 8(PÈÄ ð€Q¥Ñjá‡wÏØ.tðnß,Ë.~¯° ¥OŸe›&YÕ¨€8_&µ’¯Fêa·0ˆ»º€NŠ`/û°]Ël›o‚Œƒú+5dÔÐÊ:?BõjÈLK€¿nòâ3|ýÂ6ˆ­AQµ¬½‚µk&ÛÍûÖO2À¯¼Ðo·Ø‡k‹FÙ|“;ço²^&Ò·-¾];8Ïcˆv–œáuj$A½šUáÎ¥uf¿SJ°aö ª>þrC^°ÄgǨ”¥’aFgjÚÔç7ŽØÅè-ÔhLìmñ5œ ÿÉØ|“aý:<‡*Ù| ¾ùÍ<†øÝ*† @½qñ’â*–Óðkß¼Žñ;–<ßÒ‰½éw‡ÕÔJ…ØõvAÎÞ] NÍ!Œe *Ô?³ƒÓ’«œ¼é/ŒFgÇÏnqqpáÑB¸h|Oøï«»Æ•¢ÂMô鉃:™|¾xB/“ÏC‚e›Þ9 ) • .DMÏ|sëÅJÐôíÖÆnèžßR8ÇŒ:±?bðf ÑmÝb”¢~ð!#ȹײaM‡¿Eƒ²ècd¬+{f;…¦íR.úµSKégWÌo¯Ð½Cc‹®‹¦lüþ ‰*g,Z¨zj¢Ý 0{|_á/3ÈþhécÙuÖHœÿ(õâç›ævQ¶,jZ”0š¿y§Ãà·7öC2y[…÷ËÎH¦;Yl%Ó(]Ü->·p‡ûéúj@߇¹5™¡5áþtçœ] °Ã4á<ßg Ðý1=%Áæ‹/Ÿ=Œ^cÝ¥„š<ÂÍø _=¿Í!D‰!’´ÈïM±tRo§ìOìœQî^L¯FK_Ú=Óªë¢ »¹Eù]àìÚÏœYcß1W8×ôdL©kóÅ{ÞßÊÀDÒúl°rê¥;„èô1çšEÔ©^Åi²@Ÿüf²®é¹£»Y}ÍgΗ´œ¢kY£²_CCÞ2K8×;ÂÀOúGôÛzñ´äxz t¿šM‡"‚Æá=Û:„[EÛ¿Ž2Åøæ…íP!"Äì=Û4É€Þ>lõ5¾¾—_%Ö [ãõ1Ã8°aºp¾ï0h,kä² €2‚£‰aûtãQgø†¬ÙríÕÓûÓkl4óÍkPæü÷ ûl">æpŠæn$ÚHø Öäý!Md0$é8I K½âw~ë Cˆ±cÑpY8¼êa‡ÿÓ«› bd¨É=0Â(½j¬Éßj¥%À7‹­g€$€ÉOôˆ>n›©3¸óü‘¯Ëh2^a_ÀÜ~kváý >”V]ÅWÌ•e uñÿ¼U M³ÒM®^Ïç/ Á¡â]¡h\‡2†’±kïYg½Oà—÷…°P“ý"sAýMÎÐyY|ƒnš+Æ8š((y›ë÷ #oáA‡1À‘ÕãÊÝcÅ”¾’òÆ~zm³U÷XÃ3€Ti\–/` ]$rPà7ÇXÌéšÐÖýâùõÝà¾Ü†Æ"®b)APútË,§ ~ù¹Ù&Žžþµ *WŒ0ùÎÞe#­º25“·0Ï,mláÔB«ˆ¡x‰x¶ËE'üľŒaDO^ªx“–M nPLÌp%|øäú¶«[0nÇ/-r( Q)œßBQüŸ™ˆåãë&æÀÁó‡Zu¡Ýsi‚‹TR –Ò£N£±½-&þÕS«È¼ƒ…Äÿ L)7 »°â.(†$ý)˜Ø «º!šHÆ Œ¸ð;ŽvÙbT/šÙ|çŒêæõ¯„¼ñJƥ맗AA^#†níõ1L,!TúJäÝÂã†XDüÇ.½N+NkjizÖšùS¸u bÿ†é4çO|³ŒêIƦR0ØÁv!~¹±ÖÎ7Î,óÈ1€ÑžÀÆä’Í-äå€b²ýÕã«b'ÆDÑD_`€ŸÞÑÂèÎ×=U#+0cs ˜ê €íOK”J¡b™öøPµ±¢†¯‹üþ•]Сy]úüX_JÄq5OXxV2ÆhUÃÔÔÙ‚ |5ÕR DaUÕä•·˜F”lô$XÊìÇÌlo™äa1ÙÄY< èÁõj/ЧdQÔ<ò=‰Œ%g&ŠÂœÇógÚ”¡]üÄžêœSΑÖ)I#l/ÄyØx'Ÿ-í?X§‚ÔÄJp÷ý~ k¾¶Bƒ ¤YàLxÙö¿—óÀ1›ãûôìâcÝX‰4»ú‰n¦â / »›\ ¶ÿ\Od€$¦  çÏܨ†äøh—\z0<ŒãÃÃX ‚OÜ%ê×–ñ4>öücA –í'¶L€hZ}Qíä—p<ŒF!ÖøÀYŽãÜ'ÜúÑù“ìÉ  cA"¡Dø‹©î'²R)š5&¥hNq^0&p|ý^´|ù‰,—Ž-2@co`Œ`ý‘…YÝë.yç0ܹ¼Ž¶Å6nXµôôÆIprÃD8»y Ü8½ ¾yqû=›öä‰ÿ1çEƒf a$Ž+;†"a'îLSÃ*W ·8&5éɱ´28ö6¸qf¹ÓcY¾¬ËÓÞÄ9ªfÙ,3}xWJ<ÎΜ1‚ƒhÌ æÚRÜRðím/z`IRÚeÛY}ø<Ü]1èÓ‘ÀŠaxOgD2¥V©Œö“«ÞÄ GÀ‡ûÕîê]Før‘ÄZ í€Q>Žz®Zi ¨þ½àM @ëï\äûñ | ¥lÑfWã±<¬#2‰êÕªŠ×|Í› ..†_Ûë?Çc£i¬%V=Åž~ ¾`lwؽdõI\Ø1žé¨`¡Ç53P¡;~‰DY<¿­íd®^ aî›ÞÄX™’Z¹lö–]ßcÒN‘àj5tn]–OîCU;[ýXƒV&ɇ ½…„Š>«¹j¢–‹R“kÜö&àA¾±5ßÓ»,}ë»äfSuS©m«mÝCÁéM“È=ê›-P-–‘ÿð)ë…Ä´¤Ÿá¼l¸¨ƒ›{ø[çWJZõPÐó”Ô@p—âdª™ó%üçÅí˜3ˆVÀbÎK‡^­V× 3¥´\gî×÷“·#^’ø®p$9¶¹äaÈkVG’ °Eœø7ëf²ÏÛs^<0Æ ßaZ}kÿòÑ.íÿçª"™ÕÍ>S#rL˜0ÌíC’X¹”0ûWÞºý³Iò‡š©ñ%Ø‚•-@aA+³ 5ˆüÝ“#|>¸²¢D½z‰urÛÂaì³Qœ ,gç6.ÚçÅ‹”AÞžß¼ û ¢³HølóÆ”õLÀöv±Ñ%äÅø€sB}wDPÝ ЕÜ~l]„ßß:€~pãUOŽ£o·Äú¡ŠˆÖÊ´¤G€>¢†Å¢87.묑A˜ài %wy§ zû°ë&–úH謑ŒøË9Ãðá»¶màÔ+wÆ+bì!Ñû/¡¿Œóѱ™kæ–¾ë;)cè  ç¾ ?Uà|x`ë™ýÈ=îkbS×mOËGŠ ¦bª|w9Cǟȇ êÖH*}ÿò:¯%þv¢î‰}~rü¤7#ÉyøgXHPÉéM“½ŠðXkD¯v̲ù&ù·ªŸÜæGr.~‚7Xß׊G}ôÔFTkY¿ElÂì'³ü@¡è¼Á{O1»³P X{ãô:m)‘ö1ÊgªŸ´Ö±äHø…w£–Z匀åo–NìÍ Kx7ö%oõï»b`q¤‰äXø3%±rɉõÝÒP„QÀVNdºÝ«Uªœ›W÷ö4F˜@Þ&l†ŒÑ5¥ýïoNc˜Yõ^}GÈ•ß:û ”ÞxÚØ±7¯Ýø‡ƒZÌF\& ýgÈÊ)E{úö¢áð¾ üŸ]ÛL»}axžïüÛŽ:=rt"ÐúÉäšÁ¢ŒŽ’ág®,q³[ÂbÎÞºYáòžYð¹ ¥i°ñ$¶ÃÌ!ì&Ú¥M}ÌO0vO'÷ü›ü{ /禼|mgÀfÖóÎ’7ò}NÔêwЍˆÐ’¤¸Š%ÕK1 C·h×úæ7ƒûZÔ…µS¡j|tIh°A€ãLûþJþ½Â*¡Dû—ݽúÖ³ø7t or>Ãñ%‚›µúc‚ïÔjÕoäß/ÈßÞ xŠà8gˆÍ_@Ð Ý¿œþá•ãÿZãÆþ†Wq¢Ë 5&¬šd¥Då}\-æ›(6vZ°}GÖŒŒ3´X®ëª+xºÚMjƒ»ˆ· 5è¿g»þgXKÿÀ¥äŠÕ®ìÿSÝõ¾ü}ºó|˜Û ^V_W‹E?nû¿c~ÍÿyŽÿçgØþ?² üÿ¾)Ùÿ7TûÿßÓŸú×´üÿGç—ýŸ®ñ¿ÁQüÿ‡›þ¿»±îŸ½¥^CQzÈ.í³ËÿOÐþÿïúòÿÿo,ÿ¿mV9˜á‰Õñÿ»J£ÿ¿>>óÿ7±ÿÛç×þéÉJðÛÀêkwÄ™”bÿ]…XÃó#3þ»ÛèÁ ¨Jø_”è f/L6ý¿¨%l@ˆÝnyq¹Ø— ¥Nr¿×–{Á5]ÚÔ g¿øpßd0{~¬Þÿú›‰îWä¤Åäá1§Æ²gaŠ\Ó›³ÿÛ›iþÏq‡‹}¿¸èÿTw‘ÿÖ̳ZQ¢2D‰yæ,7Áÿ/M+…Èï{€ 3`ÏÔÜÿËœÙÿë 3%a¤+ ¦’É¡ÿ¿œ›×€Žß±ÙCî+7 ƒ ¶ôľ¶+õ+²sç·güß:³ ú³à†L+ ½3¯êÍ~øëÊ’ÿažÿÝmõÿ¯ìÏû?¥6ñB =8þ\]úiwö6œL©KìÈ‹õ@I0¼fRáÿ–‚°ÿ­…áå¸3’ž2Pólþ*ÐK[eD9eH “ó7M/]¾snåáý‹jÏm˜Z¼ØÖD#(Ç„®wsÂg·ªã´IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_off_32x32.png0000644000076500000240000000311112613140041024611 0ustar philstaff00000000000000‰PNG  IHDR szzôIDATXõW PSWÍOÈ"a @Â’D ¨²%„M@YŠV ²X)RAÐRDD­E(¢‚ZD­Zµ"jÖ±uŠ V…QQÇ­­´Õ±â†äöýI‰ …Dý37óóÞ÷œwß݉¤ûCaâm™ØF¾vÂÎûÚ”†e£q'Ò{~èì« ä›Kܨ½Õ2ì¡Ã®`:¬ð ÂG#)#BçÌéØäwŽlFÇüF›b]¤4:˜àd¦ÛSº­™X=ZF{'à,:áË£ÏBm¬8%š‘cF¹Ù¨hkÙ(4÷‘Øæ&Ÿ—,™£Š€¤/Àc?[ÂÑ0wSe`ófLÒ?\³„\eg-uyªñÊŒ("§»ráéƒ*(êzPôÍ'2Ÿ9ËøÚÞºÂå“\“åKÌà÷SÕj OÎog¸°¿TƒÀ©Äݳ’ £/JèKsàöÙø‰Ýe}8æÀTMGÙj'Ê‚=⑽ø‚>Lèü®B«©u‘¢x)A Æ‘¡X4?ú…½€×mÅfA˜L­éÕùsø‚äÖgjUªè@g›9¦øº@l˜7òüµƒÈ u L²¥t“1lÁUÕü] ¯ J‚L«Òºây@&“ ‡ÄÅW,ÒúÝ­ãU°LbJèò´$ß$ÏPª`åÞýÍFV ú´$š¿6€•CW«f8>k߯ð«u&Ò6PÑ_gj!:Ô0vF† ðuÁ|y0$M“AT;P(db.EÇý¿T#è5vµÎfMóÛ©TÐZ¿è4*\ºHN„á›;Å{†Æ²O€eÂs–\EiY™¾½]ëLÀ}œ}Z÷O5Šv”÷q`´ è¹°eÈ3ÿóçpòˆ²}çäp¬~és¾5{¬>í¹Az|h{é¢8ÂÜ=ç· Ûñðã ö'P“23RrRïKÉxG;÷¢Œ˜N}¼oÕ2“Â.ðylÁ[ÝŒDöÖãrçFu Öj¼K ¹Èe›Ú½“ëò62iÙÂYámÈ'ž|ù`yoNrdê ñeïåŠ,´á$È&:­™ìU›ØŒÌ|xf¤t«Ì]´v´€ƒ—t]ôý ýýïËö«‡cIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_off_64x64.png0000644000076500000240000000671512613140041024640 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞ ”IDATxÚÝ[ XS×ΞBØd ²¯TdAªm« àBQ‹E[­VT7T (* Z­¢(ŠZ[—V­íkíb­[´ÏåÙÖå¹´µÕ*‹$Ó9×’@B¢I¤½ß7_¶{î™™33ç?3íÙ\,¤¤HHLÚ¿ü’0è´õ<&í[6ƒö~B–,Z½ò=~ÿ—I;‰ïK‘ìÿ Bs‘Ò8LÚq|•Kmõ£|YÛ Ë£9°# »¹PÏ…â˜Ñ• #}XàiE¯£ãýíŽKú§ZG‹A»ÉgÑ»3å«{q(aõ%¢ S†JhD˸¬p“ÄÅFS_Š${Áƒ)ÛÏ5HpMÚÒ— }]˜ðyÐ*¦âóéYx\õ ÖzýüpöS ®IÓÑ=,Кðù$Ft꣩ÞéfÇoíÇ5ªðJz'ŽÞ"z#*á"Îgב„wDá‰p`4îL0ðJÚ†Êõ106œÅy…Axkþ¼TÌhxZ×—*1.Hôzœ÷3ÅNcžUF Cêªò™øÚÊÞ`*³×FoÇrÀÞ‚NbÂ>S M"nÒn:Þ¤,H¼,@šŒÀ¦‘ø¦9…WRYo0é4Â׋ ~Ç"f0èá{b!èÓàË…&˜L†|ÄÐ~P^8V.š¾ž9õ=nu“ƒYÏDx%¥û°äh…·‘Ÿ]„'›©/Ä!śŤøD9âkŠA~Í Ó¿!ƒgæ¤Â½‹ïüÆáfztíCps¶ƒ@1ã™ Oˆ Ig>½ q¤ î¯ìoæóÁå}P¶$Ü$ät\,”çe}„£ùœB­Áê‚5Á•´gÃ<ಙ`(º3D°(à䡲6ù½õ} ù»ËJÈlO5Dø5K'·ù0BR ${1;„ðJê+aÁ€ØîZy¾ýC „xÈ1,Q+~'‡–±é´>èØÞ`3TÖÅP Ò¦8.¬Á@Eà¬Áû=n©pŽŠlŽÓï쀖 —WêPÂ.XZÈð¾Ú6X¸òÇx<ŽìÚéíZ’:8z»´-üFdxt\møâa½‚:àþîç îöèíe ©þ|Êdk4Á¤lä'?G+ˆ”@\Wx.ÜâC=ÁßÉ Ò¤(ŒÒ®x©=fd§håPIþ«ÊlŒ¦üƒÉ³¦¤i|ó»Àa1a¡Î'«=!„.¶xkú¨û®àÇí­èÊÑ•°gÕT=0D|• #ÐÂÜDÐÍ«äO‚÷×N‡¦sU­Æ6ÕVQcûGúAwµâš ˜Ì‘%Ô]9 U†ºŸ ˆVÀ¸ŽòZ¨*à¨Hh)»é}­ƒçf‚‡¸µ©ôâÃÈ‘Ððý–6×FŸn™ •…ÙðàìfƒÆÝ»<Ä0¥+O’WóÙP¹j†N+¨*ËUZÁD•#,½.9)FçÀnî᫾ïÀÄÔ~ ` ªû¶#ý!+H}A¹1aHb”N9¯~–|Ùö(I4Rº0[ë ‚Á2,Á¬NT +ÈÏo3º€Ÿl΃kŸ–©}W»ÿ-µÏÄâ"ü%PÙÂÉ*٢Ȯҩ„ø˜P šŒ;ÊüÂ4¢€“‡Öhp¸z)ð9Ìæ4¡h7!œAslO˜Û_VÀ…CË R€H\~ü „ú<3ke¶UE“ÔîûéãUàí P Ä(œûlƒNä¿1Zé¾DU!åMˆð´ ˜;u$tslžlq¡ÞŽz ßÉVb+Kصòu½0fh,Å`lD ¼»z*³”Öî/juï¨0/¬%0wÆ8µ®èu 8²c™RDåd‚úŸjÐîÕâÿ9!XòZr»‚Ì8”Z2™Ÿ§³Þ øíëõà`kEã[p©×â™#Û¼÷›]‹!ÁGÔÌ[‚+ FáÙE—žQ(€‚ÇyäÕ[´°à²Õ´<,@G6ÎjWçc»)'+ƒvŠÍK&4ÓUk¬y„[d€s‹&±ÀËÕA§ªËg+Ÿ@S€ÔÊò6oþýÇ=ÔÍ«T°?5ÄÿÚÂ×Ý©Y{T€>1CI“F$6Mî©ó^âŽÛ ™|\(K ŽNçW>[JàO>ŒNNhóæ _n¢nV…¤]\E¸ojWˆ˜ð€f!H,øù“Õz ¿cÅPoy ÉûCoçjŸ'Ä”y ’ÈýôhS@LT0‰+$¯ÁWn…Û ÈOYÛêæ¯ö¯&âì•ý6ÚÃþÿùÚv)x=•Âè”  Oë³eþz|}³Ð«ò2aÙéÔ{WG[¨×‚2ûtiQÀº>  ÒغX¹(…jY]ÔHC€Og¸zj›Ú€}• )„¥ 8â}ĸE·+Lí"°µPF†xëµú2“•Ïx1Fáã[!Ø×•z†6· óu¢¦Ês¹÷ìGå­„ÿãÂ^ðñt‘#¸KŽþšçá$õ…QW¶£b‚‰Çƒ6•N7uØ™ä/‚ã;ê%Ж‰Ð3Ôþ÷Q©ÞþÿP?úa+|U½@ëýþÎÖjüñ9,8ZS¨&üÁª°[HŽÅéÚŽÄ¡¨„KDƒ6b¡<#%Æáñ8ÀA])B8´!×ì¸-ºþÙèá¡®!vcâæÒW›¡0RXÝñÊÖ§½¤ˆi9 )²(à`AW› Cʇ¨:‚v#ÀJ °TãˤƒÔÏM™!“$i‘æ P¯ä(R –±›T'ÈbÃÊÙOÌ41éO*ó bþ8øîý§:OŒ TŽèÕŠ€«M*HËz 1žªÒKŠª»9½Ô'Ø`f 4ŽÀ`ÈBXKà1ŸÇk!w¤êICŸ)ílK ­äm½b@r1V}À‡Â}Õó~.Ö3äãJù¢J¡™xˆ6—NK3èy¿ ®ˆÒð²8ŠgòŒ¥²]´Ê÷öÁùƒÅ1,ÂÕnKx…ŸR‡ Cž·qqdJ-ÔøšHkuF­¡ 4䇱5JÖ˜:2Á †«Kr¦r)“W^hÉŸ <6'÷íEé±< `«Í5ãöº0i_§y«gƒª17àÙÉÊàTØå#+ <, é~N3ò9ÜQ^ƒ»'Þ6,b¼ðÂùk4rƒ¤³k†Û]'\Œ=>š‰ÈQ|(ÕrL55}¼y$ùYµJŽ:ò©RØxc+ ?ZA«ú?Nb¾Á‰McPjB(äug·j¢ ?FzRc+À ,{KÅßHn¿ŸR±"sÞüðŸÊ9 ±±¤:Δ<ÍÄ44ÿ{&é%B 8Ÿé×½0'+院ÀKOHXóX I˜ÆjñAS5 ÌsÐ먂d$Vqzv(|¢f„¹ ©„­MñǘªaÂÏMDø(7+ª@Ñ@(Zê ãYÄüï«&9LÐHÛÛÝžÑ4 Ê¿ÃO¨,/$VÒO¸ÜÔ½BqlC¶fîËJ¤hB’® ØnÒ‹n/Þ?V•ÿDŒÞ?ý|ºu.¬™7²†÷ƒ4<e§'ÂÌWÃâ׆ÃúEY­’!úÐckÁÉÞúžYÚÅœÄ'O¿»DoæÂ+ÉþXÐvÐ<ã‚ÉÉpî@‘^s\¡£õU³( ³“Ý»§v´ËÔÅÃËaZæó¤YI/ÁÛ"’P%–B %í͇pÕ\P¡+F’+fÆb §•@$7øJJ_ü=>zg6µÂ_lŸbÊ{{qL3¨MK± aÃâñ:'.ln˜E¸*©ù9ÃjËÏõ õScž‰ŸûÞ2½ÝæÏ“©t8É«>+¡g0•%Ö¼¿dhWÌÕ5ê…EË[šLÜú¢$Ž6*¾LƒWSã©À÷¤ÑýgLƒ¿®¦„äþQ­ºHHо³“íÇfkv°Ý‘©0ñ×™MÐ]êÑ̤£½5¨xÓhÛÜþŠj±dì°85w؃d,½›S+Ð'Éä²sÛà¹^!ÍÌaŒ \ÁØ{ýÞ²iÀRQ¼IC[*Cw4ú˜M~ÙyHìo+ø~_¡ZfçŒ !2é)b(rŠ8?õÝ?,AÿŸ1ÿŸì¬+VÎ~¹‰ý¤íðƼ|°©ézå²ìs.CKËÍrßÖZHþ@%ê(ÿb8˜žp—l‰¦ž´ÎEvñ¾‹àjùÓ–»Lran?û®OHKøóæçåFœô `éìwì2©UÔú:ôÅÀÚ_š‡Äát×÷Û%3G5^>Rj°Ð¤hºznfc¯ëmV§L‘ê6ÇeƒàeþÃäºÈ©·äÖˆ¤ž¿æe¿ôW鬌¦¯Rýƒäë‚õëÝÝÿ6i<@l{瓌4í_t±­¹/(zô&¡b‘W¤4¤X$ws2ô7©™›•£Êç§IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_on_128x128.png0000644000076500000240000001537512613140041024646 0ustar philstaff00000000000000‰PNG  IHDR€€Ã>aËÄIDATxÚí]t×ÞÝì&DHpˆHBÁ%¸4¸;E‹»Üݽ‡-´HÚBíQ£T}uãU¨òÚB“ûþovîf²ìÌÚì²vÏù‡ÍîÜ™ûsåW&ÐÍZB{ ÂDBa+aaa,¡¡-!.0\ÞÝô„>„5„+„? ÌNüJ8'¥ AVÏna„n„ã„»JÂ%I²Â!ZV¶ –Å„iYd°VøÌ !þ+ÎM AáöœV’°–ð»¹Ð¢H°µŠëX$=›YÝÀ¶5f‡3BØÉV–‘Ý"„mjÌ&V5°NeƒXå":ª·H†o“EÒÚCj‰„„¿¤Â)ªe™ Ale½`YAÛƒc-CØÜšÖ"6ˆE´æDø‘0—P8 ÷µpÂnÂ}.VÚÆ±ô–«!t9œ L¢Ù¡ Í ö ØDêâqmëDø’¼A§a­K±­‚]*xKXV× ,/f{‡× i1©ßJNJߺÆÑAlW÷ ÞkÒƒYéˆ|KÃ?„éÙ@½V[úÖcÇšü°Ÿoi }°Jz–Ãx•Ÿsm°ô ß.>ˆÍñ(áK±¿Y«VTg~ZHˆÑþ¥Ë|>8ŠM«fðXÁ›o{•Ó3­ÖDlV{DjŸï0~l¸–mhì—bV  Ï[rEõs YiQ“' \UšNd„xð¥KB©°|ÄiË·`Â)>X8by³ð9vÒI%&< fDmyÍ’R:ÞìÙ Wãò“`\@äùÛ>8Õ‹éõ«¯_ºÄ摺‚¶±[/q“Ä*òi_ÛÉU(X+U§ú»ðkñs~ Rðìiì³ÂçXJ*ä`i)øœPÌ—Z€Ð—0’0šð¡³ŒZ4ŠkøpÎ_[ß÷…Ï1¡ŠAjC¸¨ñrg}&á:ŸÊ-à„lB=Éïð¿{šj×èL&kÉøŒ²0®!„£åó Ñôü=á6á%ÂÔ‡½„„f~ÓØîf…ÍÏRqÝ>käwÂŽÒF71Ò´øƒl¦¿cã˜Þ 4p·ð›H 4RéX*ɬvµ dnZ°åCIr°Eˆ_XONÉ~à5KVO;p^ct|uyN¸'í\¯b“Fte—ŸXÍî}å~{É„_oa+æ cá¡ùnNKëüVøƒ+ê¥ãòC¾—I§cMë§±õ G± G–±§.a'wÏc#t`%Š’[j{ºå¼.Q§eý»e°/®Ê'tKøþæ –^+Åô[¬þ.|n<Âñ×\˜i©Iìæ•]Šcz‘H‘R¾ŒùosE9©¾±Ü&í(²`˜pÖÏ™!-5Qøm‘ÿžú-9•èò¬‡¬WfSvÿ« 6ë?__dËi†Å,lF„cj’`¢ôâ‰e¢­²Ó;WM4ýþ±Êú€àÍÐ2Î(@­VË®_ØbרoœßÌbJ5'Ár5„s|¿hé˜âÂtnÏÍýzëIV¤PAá÷I´ó=ø€Œ{5oXÍn—Ù“,µBYs<êŒð£Å#Šp±bE"Ù­kû쾱峇™nΔ[Fÿòy—N¯uˆß¾s”ÅÇ•/oCG p‘_¨@H0{ùÌ:»oèÏÏŸfÑâÔw©€ å •(ÑVСe=‡Üxa'‹*.%Iö €t*YGGGnf×ê¼µ~­ÀÛo p'ã{÷.ïr˜Ï_)uK6Ø#ü¢RMTê8ßÛºC­TÚ´ö;oR fËë³±UôlajšÍ&׫E¤Op×¾1Yµ ÂFvtª^FYDÿ?ÑR=³q ã¸ìÑÒaÃûµ7×ÂÖµ•«ù ={çùÝÀ©½ L709Íà° µ7½f^5j I'¡c¢u¬_²^ðÉÛédÜÀ>"b »Î"•¢ èåïÁ¤e)…‡$ijv‡2Æ>(ˆ}óöQ‡ pç£Óæ'ƒ¶ KõûSFuwøÚgÔ®Q¼€Öî7d ½aÎäV³(Ò;Œí߆m?”½tp>{1{;¿k;¾~<[;£?Ô¹ «‘’À fça¨›=4¼Š³›+÷yœîq1Í&ˆ-Œ/˜_9ʺµ©Ë–MêŲWŽaW/`WèžÚ6•íY2‚õíØ€Ž 3}?„‘^RǶ8µÒóç^<}°S³4‡fdí`³L¿Áì»w9Ô1~Ç•X×l}xDçV}ë G†³½2ص#Y,÷Ã#Œ}d9f<½š];ŽÍ™I¤(kZ ¡l©DoiwzKW¥s€HÙ© ÅF†ä ½Rb {´{svdÍXöù ›lêøèü¶mÁPÖ£mºÐ/úV§ÛGxF N2´„:C ~í)^¶fڽͿ<‚tÎŽvºvÁHS,¾-±{pÃT©oñŒá°»ïÇwW·±RE£h#ªSÔWðå±rŲN`ßú)Rü.núMí=þǵY#îäøÎ9¦NÖ+xú6×·Ëæúð9ðìðúÁFY.fTªÞtšúêÍÃNÖ  |úf\øAIþ³ÇW8ÜÉÐ>m–ÃZEpœ4û£‹f¿½©®#é®M…¹ ¤ÒŒFczÚ,üN®¢˜†0éýB(h-6 «4ã.I+8&ÖL+oô&R0£¾£¶É^½ÒÚì‘U7wk]7ÎmŸ¦zp‹âD³ðØ!™6 ÿìE,Ø 7«gkxrÍü-e>”ûI•ˆ˜?óÎRÊÇ›Š:È=À •õRüöæ^¶vföæ©¥.sÞxýøb¶aö@v÷íýª_KMÁð¬^Iy$‰Yņöi£(øO^;`îÿÇ…ßÕ‘Lž¤+IÓß4š†¤¹¸#ˆRîŸ)iƳì3;§û½'9¾¸¼I›î‰òã×1%ǗϬeº·BùÍdö§èôëP‹Õ 8XL™I»ÿ,Òð¬UJ@r|ç÷€Ðó/ÆE+­ Wf¾zë0[Cúý$JÛ#s\ýΞi_©5³}æ*½Û+,H›.dÕ% tÃ–Ü (e\jTMŽÝqÑŬÕ>ždIÙãlK ,Ö "=Ðq†BæO9ô´B$o@èù‰â¡Êqfåéä𞘣¹;Š< ºd“¨A̵v Ž2äÒ‚bòBÏï €Òæ±Ê¹ù1Pæmß%šõZò Õ-¡³ö Ÿ½œ‡ ôÓë»Ø¢ñ=„(#½2«ÍÒ)µGÛzB4òÞ¥#Ê}=¹Õ°1¾Šr¼ ¤ÖÀ'¢2g¡ŠÆCŠTžAS&@ßdãQðÆS+ܺÁÂkKÎÝrÎÌÛ]È3à®ûƒ_ÔÙ»­d4‘T2Ÿê‰iã÷I$­äZRÇxØ@­à YN›ºN VÆ_þµÇ¥÷SsÅBÖÓèôL2àGO­Êu£¬¤…AfX½⊻ôØ KQC¶btŸ–.þ¿i´¦ÿ7§w=¶}nÍ"È1@LŒ|iï,—ò³týÂQáv ÊBä®+ïmË·¶[Ž:ʼnÈZ™\˜2è<[ÀÛaí$ßµã6d­O ¢!éRÜ1à°¹?·o6ÛµèQ6oLW6¸KSáM_?k ñÓ]ç~®þ…³’dY'$™”µ…' ¿Ñ ¬çÂ[Y/Ø”!ÌßôÿÈ@ŠgŸdCº¸Ñ©zi= "žL€RœÖôÚ5©L<²t·ϟÐ¥Ud[í$Œš‡s{rÌÄrQ®óÑN½w‡ú~åýëŸ-Ó?·<á ÈæYºmMŒÌ>:¿Ö/°eÞ`«iô8v7 –ÚFyLÁ%›*ï²iú«&fÅŽ+YDÕäKž Ä+\P˜ùº’@iÌ⒠`¢7åOs¬¥BEšö˜£ðáåoÉ"SتAUáù‘_î(ólÞÐx€Õ*ny{œÊ¢”!ó'Œ-(øà¯ž@8–Â…gU?œñ Æ4*Ï d£7` ×µ0½¥ÒÃ"ØD>‘,r¢1/@K3JîE-¢½7À”rf‚™›ó8qM›L ˜€ðóЋ²ƒ˜ÒÚÆIˡj¼¬}ˆ›¯.qÃÔfвD2¹"ºÆ›«cD¨±4wœ‰Ì›þ÷j¼°ÍÒˆuzv‰¾n´Ào €ƒ¢ð?ÓøP¢†à‰#÷à°4©çÇß±Y a0|E°H);¼g VBÔõç»–«¢ÂIVLëò¼/  „ŠàK{Ò²×®’äBÔ É÷lÈ&÷}±¼íy_"R’ U¶å¤,9jŽÐÆë§ti½bBNB ª¡?yÁ—PǸ —¨´<Èyë"|Ú…txuª–³øLU+ÄËþ®RR,ŽW}‰Bâ å÷?“.N!– >ƒ§7Oö:SoWòû“#5*œÉ&¨®Tßù—/ *î×Jƒöê±EÌ?¯] èsoÉ.†s][ˇ¥¡B:¾£”/Ìå7|‰ÈL)h¹¬æËÑO>pƒf”Xódá#~ËúUdŸ¡ttQvûªr‘‰ziÉ ÀM_"€†@nÛo©³ÿ##xzцñ4'ØS­’|‰™°!6%²LŠ/‰MàµËÆϱe s(&o€Ð Q>ž"|è8^Fî~uv»mf𨈰_QKÛ: „­ÊföéÐÀj'2 ³1;³e²KÜ̱?€d6"ã–Îêý”¢ô¹öV]9µÿ}U¶g##BsÙÀ}G¬Ôä8»²{ $2 /ñ—Näù¹ODBýA”y/Z(Âæþ±Q½ã@ZüvMªƒÈx³Rë…ÁÙ½x¸C¸GvèÐÍõê¶ Œ~uó´aÙ&2Æ@»ø*™^‘þ‹Ùõ'– 5ˆ¬Í–NêÅFÒô[„RÁ(K@ ›ƒ«ú/Œ(fZÀl¶`š:¨™šë”eÎÑíéMÑ8™JM`ù™0°SR” ¯×Rãà >nìéÎgßzëÔ2¡Ú&j=<ÁkØ#-j±NVÇR“W"—fœo}uúç­=äOcrÎF qvcú¶Nî·‘•/Íë-¢gX@ÌÊ ›¢§0`bءչ{›ðá˜Æè›?ŸÐ‡Î@óÉöD®2H'#IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_on_16x16.png0000644000076500000240000000125112613140041024462 0ustar philstaff00000000000000‰PNG  IHDRóÿapIDAT8Ëc`ÀÔø™´Ýd™ÛR5YvE«²¬0cjá`` ˜‰17˜°>ZãÆþ†Wq¢Ë 5&¬šd¥Då}\-æ›(6vZ°}GÖŒŒ3´X®ëª+xºÚMjƒ»ˆ· 5è¿g»þgXKÿÀ¥äŠÕ®ìÿSÝõ¾ü}ºó|˜Û ^V_W‹E?nû¿c~ÍÿyŽÿçgØþ?² üÿ¾)Ùÿ7TûÿßÓŸú×´üÿGç—ýŸ®ñ¿ÁQüÿ‡›þ¿»±îŸ½¥^CQzÈ.í³ËÿOÐþÿïúòÿÿo,ÿ¿mV9˜á]s«Àôëã3ÿOpû¿}~힬¿ ¡¾v‡@œI)öÿ×Uø€>?2ã¿»˜ýëÊ’ÿfz*pÃ&›þ_Ô’6 ÄÇn7ƒ¼Œ¸\lˆË…R'¹ßk˽à /mêÄÊž«÷¿>Ææ_b„û9i1yxLÄ©±ìY˜bWøæÄìÿöfšÿscÜábß/.ú?Õ]俵ól F”¨ Qbž9ËMðÿ‹CSÁŠAa1±:þÿ`à Ø35÷ÿ2göÿzÂLIiÁJ‚©dr¨Æÿ/çæÃ5 ãwÀ@löûÊÍ ƒ-=±¯íJýzdYVÍ ]ÞÜõZYè}œÉxUoöÕýùÿ]MÿFrɇÓsÿ¸˜üß:³üÿÒîìm8 ˜R—ØÒ°cNÅ_G£ÿ!îæÿm5€šMÿßÙ5lXkax9§ÌL@[`6ÿ¾ºÅ óÛ3¶*ʈrÊ, öù›¦—.ß9·òðþEµç6L-^lk¢ ”cBW “ÑÄÄËoIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_on_32x32.png0000644000076500000240000000305112613140041024456 0ustar philstaff00000000000000‰PNG  IHDR szzôðIDATXõW PSGÎËÁ‹„#@Â)©"((äJwP±•r(WE`d@)9¤ ‚ £Œ©€Z„ZEkÔqœŽ§hE˜*êX±­ÌTÇEòw÷!‘4¡Ô7ó3aßÛïûv÷¿–FSÿap˜´¨éb@‹8g®E|§«Ad¢q[ÚG~HDöÍ|ú ެ¡*‰4KI8âOB3 >›Áø º¢O‹>8³IxÎÔ%úv‹5d˜t<Ãb–[1L9D-š¦ñAȹ$äaÂxØô?Äÿµ"ÖkÃiD>®©p²±ß’;¹Ñ¨C>j[²5‰fuˆ ¾n>G“ýÒÁî“ûèw¥6q³Ñ_}òQ[mÃ|Œ|"ј¯wI`fø7WGëI²U‘3 yܶ’Í ÏÞô·‚ìA$†zÉòY²©’cÃ;7‹Ë:ÛT"ØOoµ€Øá±žN¶»®6'7;5âþÛ£Þ`™ƒ‰àïG›ÈÇþ_æNBaF$Œbýq\mŸ0èty´ðÌÍ ¾¼û£ü£ÒœØæ:°ß‹„d‰ÊRƒ¡./Š“ƒ 0Z b Èu×µbSÈ‹p†¢x_(M] •é!ìeåŽ\D ÐÞÜo•ãßýµŒøz}ˆ›NÓœFfìÚ–24úÛ"GKùгWH`øÆ!€ÞÃJÖsjÈzT¿;Z– [ýž˜àb ÝÇ‹¦, ak |íÉE ŠðÙDÖ¤ÔÛµæ¡Bsñàæ÷‚ÕRð6eô#X“I ˜Æ Ib|æ¼~_rl¿Ÿ.+žf—Ú}Yäbç' ¹rä$…¨EŠw[FtŸ,…—u0¶ Jm)QÒ ÖZ“C…ZNâäDàò÷©' S:ßfL×¹%j @ ‡GA ÒÃ(.ógÂí3ã’÷µW`2@ ꊓåéÛmõzµ8ÙY¥ ü²O6 ~jßzªãb޲_ÞÚÏáèî hØžcA*š,&Œù\h“ÎÔn˜òæN¥=g¦FtŽ]!>Ïê‚Dðs·&"Í„˜Ø×ÍöæÆÃ›îƒïŽÙÊ`Ñù)_Jì­ÍòÓÂzÇÛr\-Ÿ^®×Òc—\˜ð,Þëfdcej—Ò3^_¨Êp—¼BÚeÌÓ5ÿ ×3-M6ÏßÝ~ûº¸Àäك㣰ÊZÜz†<<í£\‘-ÍøÑ’…¶;ùV'„ù4¡m>µ2X|@âd³s¦…q.éêàý ™€õf^qIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/monkey_on_64x64.png0000644000076500000240000000662712613140041024504 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞ ^IDATxÚÝ[ \”ÕŸ}``˜6YÙ×ATD6•JŸ © (Š&iBdéÓÜPL%%AQQÈ0DE5[´”¬—¶˜¹e©=—gåò\*KS™9û9Ì Ì0£Ì@}¿ßù Ëwï=çÏ=÷ϹÃ`tÍÃA BŒ€ÂfüÃ)‹ÉØ`Æf|Ëe1~Ç߈‡Ñ@ÿŒÿ•ÏfßKQìþ FóQ2xlÆüTȬY ã|80§/VFòàíD>ìLâÃö>Gð`V.dzsÀÊYÏÄ÷y,F¶Kþ»zG8‡Å¸!à0Sܨеy”±ú $QÊ–#Mè—”ËäoñpÑÕ—¡È‡»³åÛø®)›ãøçÌ~ˆý=D¯˜Žý3»³ñî8ëçÅ*c¢_»[1åöÚäÍØ™3ILxߘF“ˆ‹²‹Éd6Ó„…—WQ^DbÓDÖ¦)§¥lØLÑ륾“P°XÌûDðgâ!£”¬ÓàÇ&Øl–bìÈx(/š«—䂇TAý·º{qºÄxZÆxsè…·PŸD'—éÃcQb€ËaSz¢ð3Í uÍb2¿!gç¥ÃÝ ï‚âúyxõ#pu²… «K'Bؤ“€ÙŒ<ÒR¢áÁåZô¼é}({-\¥=Lœ,´g‚>ÆKÐ}Ž#j°¶0OÍpZvW.>— †²;cIa(Çö—µ«ïÍïj!ÐÏM®abGÔã×-{±ÝΈȼ¥êÉîÆÓ'åÀà˜~Zu¾õ}-ù»+”1,I+'‡–Ickíèðžà²YTÖ¥P-JU,Öa "tÖàý·ÔJ£"Š›bõ;; çÂ¥#Õ:@Ø –ær|ïL»,œùÃff<ùÕÛ´v’žƒœÛ7~#*<ÞŸ.Ör·ƒ=ah„ô÷u7;Kä)†t?å²µ„‰pˆ©2. õ¯ƒDH!¶;<Õß‚=ÀÏÑ 2d–P®x™få¤iÕHIÁóôNö¬¦ý)äs§ehm|ãôàqذXƒç“ÙždÎ6–ðú̱Pºà‡mmäòÁÕ°{Ít?¤?Ø‹,µ„¬sqA_Ï?%Þ[?šÏnmÓ¶ùÌVªíÓa¾á&¢f\€i½¸`-²€úË{µÚPÿã^Ñ X×Ð^sUŠ„ò{ßÓÚx霉à.iëêC<9$ ¿ÛÜ®áÚä³Í  º(îŸÚdP»S{–‡£¦õ1SÓ…ä$.T¯™¥Ó ¶–Í¡½ WåˬOMŽÒÙ°¯¿dù¨ïû£ý-!7=Þ :Cê¿­†¤0?˜¨>!C]Ù0,)\§MW> ÙvÓ„DJçhmD¸"X®²K0«àŠs5&€ñ¸P?)†µêD²J6¸ ä×öë!!*ƒ&ë6_˜A8¶Ö¶/Ý’Æ"é*„“èŽ)zëË 8¿¥Þ†@mY¨°?~²¼ì-Õ1ZgUê àßãéeàCØŠRÑŒ O[ƒÓ3¡¯C«ñd‹ örÐËø6"XYÀÎÕ/ë@XX Ì i@^ï CZsOŒSo¬xY'uo/§È"”òÓðÓ>­ ¢C`´gëúÏ âÁk/¥v¨Ü‚ܑԌÁ|=œôšQ;k+ê}òùÓ§k:lóÍÎ¥è-jÑ-Ñ…ãðì¢ Âg”Pô8Ÿürùèf­ Ìù\5”Gù ¡nãÜ•ûWL_z °Gƒ:Ú)`Ÿb¡õ¾¹¶çu8ÆCÜ"ýZÈ ä€§‹½N¶—Ï£õJd(I¢²²Ý—ûa7õòîOH ™­Ž”óqsl€ÌhG1c킉Èë™-m²SãôZd9Ö(28Qæ<L¡ÇüÈ/ãSÛ}ùü—UÔ˪”´·‹÷懲êïßb ‰?}ºVçûï¬A­ºM~νˆ r:/AHiKH6¢Â{‘c2Ékè­°‘Wœ¨[ßæå¯>X läÙµ*ûm¤»þÿùú+|9âèÔ°±ê0²ßø¢œz¼/0DZJ_Ò €èÞ­¼ým”~ï–¥4ÀEjY]D¤Ñß»'\9^£ÖàýêÅÃR% ÞøáÃâ;³w؈-©It×ÇzÙvW?+Ó«Mˆ#•0¥Ï¤ý©ËÛÿûù=àíá¬@p‡ý5Ï£Iê ‘—¿]1ÉÄ£FU¥3ÁÕZv&û‰àÈŽÅz)·¹(ûÀÿ>.Õë}lxoØS6Coîàç$VÓOÀãÀÁÚ"5ã÷m-‰a€äXT,ʆÓï=Ñy"{X$¼ªrDß®Œ8Û¤‚´%…õD•^RìTÝÈAhDt/ƒ•%Ô8ƒ!V„ 숅ÜeX0fèŠÔÚ§¬§ e4­Ûå.€âÜYõoŠÄ©ç|Å+èíB­E•C‹˜!Û\6#àþ~F^®±þÉä(û4ë,ÈvÑ& <ÈCçö¤°g»=ã•ëžcP—N†‰2s5½!ÄšE}§Vˆp 4„p5JÖ<˜ž™hÂÛKò¦ò)—W5^haF1À ›‰¤Æõ†é±<< àU›«{×…Íø:ÃK=´s=¬ N…]ª[å“`X|øº;B^æS¸£¼w޾iX Åxá‰ã×jäÉͬnëì:á’^xÇG39.@¥³3»dûûdÓ|Höµj“uP¥°) ÀÓèmêÿ„v:J'6;CÒƒ!¿·Í% æ#¦'ël¬°cùë*ëäöã]Í = +2çLïÿ©žRk êÆ­Ól¼†î×(w‰ÐÎMômIž–0rr—²À‹OHXõ„dÌ cµxŸ±. ,t±dÖSÉ0¬â èTøhíqR [!—:ã?k¬ Nx6h&Ƈ»ZQŠî‘H™ L à÷¿§šä0Â%@Æž~v¬æÁá~ÝÆx"eùY µâ‘û„+}W(–ËaÉ×-˜Ð­8óÁëTÒUIÛú0í$Â{‡·¨)°ð…‘Pñj6U²2¶±ò³5PƒÙbÕ"ìõÃëÁÑN|×$×Åœì%ÇN¼óZËàŸ×´PÚ´Áá 7b©ìc!$Ѓ«~Òo@0lÅWL@OGÛwŽï*lü—#oPÇ[„WžK1ŠñlE‡¶f™õSCèWLåšé0R»§³¿D òFujÑ´ (ªE1æ4w!çÖ×MšŽ>ÐT²ø•Lµ^\¸Œ:¯?©ñ¬‚L’¶|ÉO“_l[¤ÈÐ.›êÖ¨gLhÀÍö”•¬ŸÇ…‚FÁŸ'« 6üÏUØ_ pñî_k8P9·ÝLrOG›OLvAØÞFt[~¶ýôÕ‡fƒ£½D r13e Ô½5OgÚëÁ·›¨k2“GÇS•$Õ>H í`ÕüvÛí^;”ÞŠM ÀªÊ¥Sš´rç›J‘ª5ûƒëžGDÃð„ˆ„`™»Z]P<XuyV¯okÜc6úcë.µ»¥Í h9ýîrÈ›¤3¦+E–×Êûëã¿•àú—œ4ý—lÅ«çMhÖ7Š“Ê螺±ÖÛ‹šÕöŒv°Á„g¢¡k‚w¿¥W¬âwSl ]ñ]3,d~ëRþ¸ôõ$ªñúܯG6<Ö¶¹xZÚ}\Ž»ôÛ"|n"¨©ù?Ö8ö‰Ç½ß™·µÈòZõòœFSN¨öœÉÃîÙˆ…ä T¢îò½!¡­D¸/gLâÇÙóõR.ÇrƒêÊ'-wåÁÜ~*Öõ¯MÍHüãÆçåf8¹f‹¥³ßœQÖúºõÃÂÃQ†»ÔþD·[%³Ç5]ª+5ØhR4Å£)ÐÇå–ƒø¸1Rݦx¬9öTü†ÉQ\"·e^Ò›c“ü‚wþ,›Õ¼±ðyêþ ùĺ`Ãóé ¿â)ï&^Ò¸ÜþÞN]D2ÒŒÐÃQ^Í®¼£÷³„|¢d Ä ¸™R¡¿¯}°Ôc4 ©IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/qt_extended_16x16.png0000644000076500000240000000150212613140041024767 0ustar philstaff00000000000000‰PNG  IHDRóÿagAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÔIDATxÚŒR]HQþî̬»;®mº®¶þ•)BeýSVh‰FÒÏK¡`½ØCad†TôóZDEú” ½ôо„%j`VVF¦¦¬­²®µºîÌîÌÎtïjbFÑoÎ9ßsîù¹¹IçvÄŸÎZ!j¡ 6  C€N5 H¯®ë£Ô–êöwêX ÄZ”6r¬Ô‘¤*a„0)ý€N£¬0òF„uE†NÆ9³„j ;jç'à8k*dxÜ@a攬¯‚I0# LhFÇ )´:ôÍ +àèmº` µöO¢tÕMìÈʇ<š€Šœ: ø°I<‰$k $eáäHÙ„äR”3ÍQ!U‚9¸ yë¶ãñ—[¨l< }ʆüäSØ»!' U‰Ì^¼æåóÖj¦Æä -i0˜è¤”bJ <šŸ4¢©³Ã>㪓‘r’sûî–(G`_:e:Œˆ =š®A Ëèéy‡ Å7`³ÛÙñÆYDä|eå¾HT”A€_¢T©Í ª,¦hÈ´5Ú7ÚÛÚqÿY¢ÌÑsà IÓ(Ù³»]4™1êǘ7€ôÅNµØl"ú—À㤼3-„ ˆMþŽëÍqéàU¬-;€–¯õpó¯àõȰ-Ú…åXš•=—`ÈÈ!8ÐŽ9¬dG¼Ÿ¹‡¨xpŽ8;zǺáHˆÃ7¥²,Ájâ' |Ìg¹Þ¸²¥mrq_kæ‹$ËtÈ@µ_P”QÛ©…IfLT|^CчãôÝ׸º}ïýS~\¾v^¯÷7Íx¶ð/aOöÈ¡ÃÕ;ðÒõº n÷è¼Ã±?Øm%23IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/qt_extended_32x32.png0000644000076500000240000000354412613140041024773 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<öIDATxÚ¬W lTUþî{óß)ÓiéRJi),Ýþ¸²k\ùsA$dw×ífÃB²!ŠY•]“5+º$’T²ˆ×(Ý• ‰+‘ʰۥBµ? Å)´Ì”ÎL™yÓ™÷ç¹w^§:––å&'7çÜsßýîù»ç1Ó4ÁVÎzLv°­ë6{Ê+\r2i€Fˆ¨Ã„ÙNs; Ð|‰¨÷¥ '5ܤÁ°¶ìaÄÔ6ý®Õ5y¥@˜Æüà‹ÿ#`ÿ¥ù˽šƒ7à®Ò€×o+ûã¶2Ä šz×I59 ÆØ9âO¨S×ÛdƒaºÜ.IÜÚ0²mRº%™hÝnsÃ)»r܂Ѳ馃»Ø„0ái¢Û¯@"JòƒÅËô’Äàò0ôÐÛ…ÏYŠbï,$RCÅ{¡ZúXÒc6 qmš¡Ž~ =®NÆl¶¬«€¹=&š>ý síë°«áiÔ•W‰µ¾Øy¼ÕöŽ^ø'Š=¥„žáZDCùŒJ„• a“#_Ó'@ú.ÃÝàΓðù©nä_^†÷žzuéÿé a¦w.^ÒˆuÕ[pÍèÇW¸Ò\‹çV¿%sîA$1 Ü1•ñ=²,AÓSøâx /ïØ“‘ïùb;ê-AãÁ~Ë¢¿ ¼d>o a~eE•„r©ß8cçù *¦ßŽ[ªÊ…,0Ô‰£`á.üéõ'F•{걪| vÜÿÁ.(]†µU›¡ë:³6uLX¸ÜswUÿ,£ŒõBK1ÔT΃ÌÂè»2(ä…ú-øýÒ1¯¬TðËçü/}GeNÒúâƒÐ¤=¡A5uó3²èpˆ2pȸœ&¡~ÌœQˆuknÊíë±üÖ¯Q2ÝCg^ÁÙþf¤Œ$l²#;#Ò—dìçÜXDg¨f㘔” ¿¿0#R-sÊÕ Ù@$>$x¿/ÑP±xLðb§q$°ŸÀê” öñ.¼ ¥åÔ. DŽ4¤4à5AbÒw|$Y¥†–u8<œ'¥«n+ ÞiLƒq¾í'ÄÝu.»=’`Ycc£˜Égh>‘Uì^SGƒÈ°Ò™I&3xœîô£@~V5 ßÝÖ‹5s°uûQKhÔ`/vå2ÃÎϯç9·m{ðo¶ì˜ÌsH¾+.ÙmYÆ3|y^Ë5ªx™$+Öz»‚X»öìÞ÷*Žý§ ²=·tUÅÒÛæcEý­«‰m²e+úíhïíÊð~÷ Š~F‘­Cf(Î/r%7€lY€]0DWXÂâU›àtçåLÄÑÕ}uÁà÷c€ûͤά(ÄÇÇNd6LÏ+…ÛåB0ÒE÷¢rv‰w…[„_lÖã”ÔˆÊrÕQQ»²m Ðs+“Ù4íÒØB”Jøáœ` ÒŠÎ —…¬4.–-Ãá÷®à×õ¿q9N^ú€G"F _•¿ªªÃëõÂítЫÉ(uÇ_ã:\w U3à´;P[ïBÃseäÛºol~ž~QðÇ{¡'zåÕ<ûÖßÓ@ fS`ªte„#rŽC\G³)ë1„7°âŽ*ó?ÂÏ>$xsà7+ï MݯãÅæÇàÒüøÅêùøÒ܃?Ø€cAMiÔ3HtÈÄÄuT+Ó¤lQ-ÂpBÂú5Õè/z ¾ß££'~"_ãÉ0¬Çà”òÉ.TÿÈîkŸ¡'Ü.nÅMï²ML\GÍeLîë&’Š„Eµµðúqðýw…|vA5Þ¾¿ ?)Y‰X2BIiå †¥û4º• »<¾éGˆëhêFzå°þžjì>þ<šÛ:„¼ÒOQ^PEmTbÌžTJv=p®;’†ãöÀ<+ ¼¸{£†'>¹w^¹þüiè¶bš³pŒ>·€ OürUP4‘òð°"ïtxçÅÑ9ãªIåØOÒÕOÍç7¤Âél %2;5CÝl—Òé6Ñà:£0ÑJó’qûvÆÓSo—ànõ9Üü Ó:ô"ý „3zôðh«T„zΡª¦†:êÜ…ˆ*×ICnåDÿ&ZÄÝ:àïïin¥Þþüd»nÖP ‡÷ýuRº"Í£—UŠÄW)x¨óªÂwï&:<•ÃÓ·Ó ( <óÌND"Cbæ|.×–3'ø›Ò/clݲyÿWPâJ&²½yQÀb1%Sì<^ÕûöíÔ†›8ÃÔOØáñxFK+uR<§ôŒ„æPtˆª¦š£#úÿÆ™ææÓMÑhtõd”}>_ßs3]à±²iÁdó–ì[%AÑKwbChIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/icons/images/qt_extended_48x48.png0000644000076500000240000000713012613140041025004 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡gAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe< êIDATxÚÄZ tUÕ™þιçu_yܼHHb‚„jQlÕbefÚñÑ:klµ•ÚêL§]Sgj]«ƒ}`Ûe×¢Xkmí¬ÎZÓ®Qq´V¡P(‚‘—@I`†››û>÷œùö¾‡›\Hb€Xlö=gŸ{ÏÿüþïßÅu]ˆC¹©a¹/„+õêk®Xµ“ Ýuä’¸áG'G‹ ·®ò&·+§EÁ™Cq.¹ùox—þáw ³üAWœ«P”¡_þ.äÐô›@9ŸCÚY^ZcâöÏÖÀïW‘Lä¼ÇÉ£‚ã Ž„ ùgʹq¼É±Ï›rtá/th4Ú]Ž‹åà?K¯+G èC|ІëŽëûB±EÞÈ[?¯Û;ü÷˜ðÇAonåh›p8¾‚ŒƒÒjõõ&-?náÇ:j¼qU!lòsŒã0Ç~Ž={½óû‚ á§ˆ*)Óàó)H§ßW‡9æ1oæQ¥;ÜBŠa=Çõê[þƸ­îÙ²à&Åû«\ŒbBã]xǧ9ˆ%cˆ§SòkŠ¢rr`úü°ô <¿@ER£À˜‡@IÓTÑa÷[=h®œ%º³ššaê*Ú£±çÔ´öµÀÒ‚ •“®ƒ©r9†Ï‚OÑ1z'"‰ÇÞo©Ø{¨›× à§_\ƒ{>õ÷nä…X†[g}¯u¾„'w=ˆDv= UU¥—Ú;1£þ2ü&zã'‘Ê&èMíbC®p¨c-¦‚ö®6ü× <÷­gqÏÍÅÂ?6܈•×=“ÈäRÐ =}Iüþ©¸oÞ¯ðkÿ77߃8„;q¨ Žóù<]ûÌaÜù·_Á²…‹‹Ö÷œØŠÏýðNünÓ‹…kµ¡&Üýá•2Åç ­#ŠÒš4ÖVæ ¢,76&RƒQ0hÁÖ£´VŸ…ïÞý¯EkGúö`Õ¶Ï¡M[‹Û¾qþwû†ÂÚ¢Æe˜9i.lu»[:1Ú¬¡LµHç’È:¸®ûþ) b_Äð®7»1köbÔUT­¿ðö“°iÈEW6£b^ xâ{Eë37`çö(®›ù)|þ†[†Œ¢ùQbU@W-ä\{B”1‰Eþe³9t·Çp÷mKÏYï8}~= ®h®Â–ö^ãûƒr½ÞúÞØèCnãóEß[zém¸öÒ[MöâÁ ŸF<¥RÖûã8ÉNÛX4cnÑZ‚ñ=È«ŠFh*+@ò4Žwñ·™MSÑ0©zddãŸ2¤MH.¨#'°Š W-\R3ù,µ3TÀ'øü&³]qpª¿w¨¬–”aÞ LûÒ_]o9¾k6>Œµ-OÁ&R©ªïýQ@„P<™eò£²¤¼h-m§‘_e :…0€†ÐðcjSoÛ†wcѵ¶Øn<{ôaüvÿJòÇ4|ª>ñ9pæ³6ÍëÓ øÏY^„dQ%è(6‚Ká]†oè~ÒH¨†‰¡Uô¶&=‘ÂÔ¾7bõÉ"ФŽãmŽÓcVâ,)6¡^Wö^üéL¦˜vš‘b‹2@ñ  `ËšN${¥tåU_¬FoO¸I AÄ´V8“ã]×/ñûýuV P×óÎ;»ˆ`7©€n0DHà.”·¤íä˜ë{ž>^Ö¸Û?>]Sm“ê§–•–G ËÒÂAòªP€aæ#R0܇‹²H:ÛÛë^ÝøÊoù3·i#3[wrH¥3‚…uG4g£‡ª .-V UømOv Þ»îù$2ÉÁÀñ9®»(L!“ÉÒ›Y&¹ÃÎ0I@ÑgU×- uS¦!ÚÝA‚¨¡qÊ¥·v´Ý4¢G  —ìúßEUùP"ª™G ©ˆ[@‘¸ß(ÆóL.3jïoKãÆåWbßÞ}(©šLK—’ª³#¬«C $‚pY•µU0YWJ+ªX0üBl‡~ö͇°£í0Ê««q¼£ý#* d8Dhaœ$ Îh˜ZX %’;Ž-ãÛÎRú,=*ö@,Í~_YÐ{º¯¬5+ŸX#PX8[‚x¶0 ¨ô?ä²¢b÷’6¢6é¸'`}í$ …’#*£û‚AU¢HKë\3ûªÂZÈ(E@ #šî‘ÂÇ'¹>T•F†¤Î &ù½ ÑM74 FŽ4˜ïà*Ca|͵IHoY¦TìÀþ}T2—SG !ÓòA¯´ðÊžs÷kªCÈæÒÐtݽ º« à މD+b¬ÖBá›s²tŠ#÷ƒü€ÌQÍ…¬í7’ühŽäæÑšM”Ë41½y&/7:OWÌŒà»þtÎÚ¬š¿’”BÓ²ïæ]v%,ÃB˜“[)s€¹âVmÃf9ŽìF*å²Á!œQnŒB‚ŠYV>×úûz¥7ÔÑr “q1› ¤zá÷Û_)Z¿þò;ÐTq9Öoñ)ühŃE믶¿€Hi©ÁÄ-n¼ÿ¾p-¦UÎA€‚¨"Ç!¼`9‚E*Aü–¼£« ±X|täl *°âÑb--„oìi,«ÿ6ýb;®™³¨°¶ùèÓ8Ò»µUÌ ‚×/_|¦ˆ%.¿êFø…¦Eª’O%¸Hl±‡p$´š„Ð a½²¦fì†Fx!•>ù‰&t%vãÎUïƒøk°ê¿%s®µŸ>ˆ_ïþ|aÖ@Ÿ¾å2<µm5~öÒ¯Ñë–DP4C=ñN¶«†¤BHUu½9?D. ÅRIƒyË»…k" ÈDÊÙÔ;¤º®â®»gâwÏ<†èC=xôËßE!¬ˆv0¡7·=ÿ~ëÖ…,›ú³˜TÂ-·ëX×ýlýÃY+L$™;Ýñv|†¬ò)¢‰)­+«¤LjÇq½¤Î3Ub%«²)bßÃÜ1›z™ YWfþçÁºu˜zï4|ãñ‡‹î{ýø:¬Üô²e„-è¢)â“Ê+`ȸ^ÑyMM7EJÄÒ´p–ÖΦÝ|=  „€o ;DyîÃá#GizB—^RÇCÔl2ÓLZÅÜæFLná±çÿ³è–ù“?Ž«›–Ka×-JL×Qh•!¥±•Ôå,7ÛéY…¡£ x×òÔE#÷:s.aŸI.†^ñ(‹ÃÐå&šÀu¼äLÈ•L8˜?{2’=G±é¡ú`²×}øãkñãëÿ(?gsÙ±!‘VÕ©ˆB OP‹±‰fR 1¼¦K% KÆ<­ä#nü ÈXgHÔTY˜²¸ŸýÞ¿ÀΜµ%žŒüûØœ F†iÀGJ!ÂDnY ‚–Š_!yÌÏÎâºÁ‚)¶6¥Å©h„Ï+ç¥@™,»¾ %S[qõCKñìk/ ëÝN6è§±¿ûuØ®ííÊõ;.¢ƒ1¸ªMK‹Ý? /„ŠáC؛ʏnr]Ó!ßñÁ}º*Ãi\{£çò¤¼"7,‚¾h~sø>ýù†i¾òúÎ×¾ô‡ÑÐÐ$|ݺõ’¡îùóNÌšý!ÄIØÚÛ;PBoÍœ= ϯ]Ë‚gáŠ9s …°Þj=x`Ó¢€®ë›vüyçƒôúä;'%»=ò}{qß½_•÷Ürûí¸zéRœThe Image Viewer example shows how to combine " "QLabel and QScrollArea to display an image. QLabel is " "typically used for displaying text, but it can also display " "an image. QScrollArea provides a scrolling view around " "another widget. If the child widget exceeds the size of the " "frame, QScrollArea automatically provides scroll bars.

      " "

      The example demonstrates how QLabel's ability to scale " "its contents (QLabel.scaledContents), and QScrollArea's " "ability to automatically resize its contents " "(QScrollArea.widgetResizable), can be used to implement " "zooming and scaling features.

      " "

      In addition the example shows how to use QPainter to " "print an image.

      ") def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) self.printAct = QAction("&Print...", self, shortcut="Ctrl+P", enabled=False, triggered=self.print_) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.zoomInAct = QAction("Zoom &In (25%)", self, shortcut="Ctrl++", enabled=False, triggered=self.zoomIn) self.zoomOutAct = QAction("Zoom &Out (25%)", self, shortcut="Ctrl+-", enabled=False, triggered=self.zoomOut) self.normalSizeAct = QAction("&Normal Size", self, shortcut="Ctrl+S", enabled=False, triggered=self.normalSize) self.fitToWindowAct = QAction("&Fit to Window", self, enabled=False, checkable=True, shortcut="Ctrl+F", triggered=self.fitToWindow) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = QMenu("&File", self) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.printAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.viewMenu = QMenu("&View", self) self.viewMenu.addAction(self.zoomInAct) self.viewMenu.addAction(self.zoomOutAct) self.viewMenu.addAction(self.normalSizeAct) self.viewMenu.addSeparator() self.viewMenu.addAction(self.fitToWindowAct) self.helpMenu = QMenu("&Help", self) self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) self.menuBar().addMenu(self.fileMenu) self.menuBar().addMenu(self.viewMenu) self.menuBar().addMenu(self.helpMenu) def updateActions(self): self.zoomInAct.setEnabled(not self.fitToWindowAct.isChecked()) self.zoomOutAct.setEnabled(not self.fitToWindowAct.isChecked()) self.normalSizeAct.setEnabled(not self.fitToWindowAct.isChecked()) def scaleImage(self, factor): self.scaleFactor *= factor self.imageLabel.resize(self.scaleFactor * self.imageLabel.pixmap().size()) self.adjustScrollBar(self.scrollArea.horizontalScrollBar(), factor) self.adjustScrollBar(self.scrollArea.verticalScrollBar(), factor) self.zoomInAct.setEnabled(self.scaleFactor < 3.0) self.zoomOutAct.setEnabled(self.scaleFactor > 0.333) def adjustScrollBar(self, scrollBar, factor): scrollBar.setValue(int(factor * scrollBar.value() + ((factor - 1) * scrollBar.pageStep()/2))) if __name__ == '__main__': import sys app = QApplication(sys.argv) imageViewer = ImageViewer() imageViewer.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/lineedits.py0000755000076500000240000001725512613140041021101 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtGui import QDoubleValidator, QIntValidator from PyQt5.QtWidgets import (QApplication, QComboBox, QGridLayout, QGroupBox, QLabel, QLineEdit, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() echoGroup = QGroupBox("Echo") echoLabel = QLabel("Mode:") echoComboBox = QComboBox() echoComboBox.addItem("Normal") echoComboBox.addItem("Password") echoComboBox.addItem("PasswordEchoOnEdit") echoComboBox.addItem("No Echo") self.echoLineEdit = QLineEdit() self.echoLineEdit.setFocus() validatorGroup = QGroupBox("Validator") validatorLabel = QLabel("Type:") validatorComboBox = QComboBox() validatorComboBox.addItem("No validator") validatorComboBox.addItem("Integer validator") validatorComboBox.addItem("Double validator") self.validatorLineEdit = QLineEdit() alignmentGroup = QGroupBox("Alignment") alignmentLabel = QLabel("Type:") alignmentComboBox = QComboBox() alignmentComboBox.addItem("Left") alignmentComboBox.addItem("Centered") alignmentComboBox.addItem("Right") self.alignmentLineEdit = QLineEdit() inputMaskGroup = QGroupBox("Input mask") inputMaskLabel = QLabel("Type:") inputMaskComboBox = QComboBox() inputMaskComboBox.addItem("No mask") inputMaskComboBox.addItem("Phone number") inputMaskComboBox.addItem("ISO date") inputMaskComboBox.addItem("License key") self.inputMaskLineEdit = QLineEdit() accessGroup = QGroupBox("Access") accessLabel = QLabel("Read-only:") accessComboBox = QComboBox() accessComboBox.addItem("False") accessComboBox.addItem("True") self.accessLineEdit = QLineEdit() echoComboBox.activated.connect(self.echoChanged) validatorComboBox.activated.connect(self.validatorChanged) alignmentComboBox.activated.connect(self.alignmentChanged) inputMaskComboBox.activated.connect(self.inputMaskChanged) accessComboBox.activated.connect(self.accessChanged) echoLayout = QGridLayout() echoLayout.addWidget(echoLabel, 0, 0) echoLayout.addWidget(echoComboBox, 0, 1) echoLayout.addWidget(self.echoLineEdit, 1, 0, 1, 2) echoGroup.setLayout(echoLayout) validatorLayout = QGridLayout() validatorLayout.addWidget(validatorLabel, 0, 0) validatorLayout.addWidget(validatorComboBox, 0, 1) validatorLayout.addWidget(self.validatorLineEdit, 1, 0, 1, 2) validatorGroup.setLayout(validatorLayout) alignmentLayout = QGridLayout() alignmentLayout.addWidget(alignmentLabel, 0, 0) alignmentLayout.addWidget(alignmentComboBox, 0, 1) alignmentLayout.addWidget(self.alignmentLineEdit, 1, 0, 1, 2) alignmentGroup. setLayout(alignmentLayout) inputMaskLayout = QGridLayout() inputMaskLayout.addWidget(inputMaskLabel, 0, 0) inputMaskLayout.addWidget(inputMaskComboBox, 0, 1) inputMaskLayout.addWidget(self.inputMaskLineEdit, 1, 0, 1, 2) inputMaskGroup.setLayout(inputMaskLayout) accessLayout = QGridLayout() accessLayout.addWidget(accessLabel, 0, 0) accessLayout.addWidget(accessComboBox, 0, 1) accessLayout.addWidget(self.accessLineEdit, 1, 0, 1, 2) accessGroup.setLayout(accessLayout) layout = QGridLayout() layout.addWidget(echoGroup, 0, 0) layout.addWidget(validatorGroup, 1, 0) layout.addWidget(alignmentGroup, 2, 0) layout.addWidget(inputMaskGroup, 0, 1) layout.addWidget(accessGroup, 1, 1) self.setLayout(layout) self.setWindowTitle("Line Edits") def echoChanged(self, index): if index == 0: self.echoLineEdit.setEchoMode(QLineEdit.Normal) elif index == 1: self.echoLineEdit.setEchoMode(QLineEdit.Password) elif index == 2: self.echoLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit) elif index == 3: self.echoLineEdit.setEchoMode(QLineEdit.NoEcho) def validatorChanged(self, index): if index == 0: self.validatorLineEdit.setValidator(0) elif index == 1: self.validatorLineEdit.setValidator(QIntValidator(self.validatorLineEdit)) elif index == 2: self.validatorLineEdit.setValidator(QDoubleValidator(-999.0, 999.0, 2, self.validatorLineEdit)) self.validatorLineEdit.clear() def alignmentChanged(self, index): if index == 0: self.alignmentLineEdit.setAlignment(Qt.AlignLeft) elif index == 1: self.alignmentLineEdit.setAlignment(Qt.AlignCenter) elif index == 2: self.alignmentLineEdit.setAlignment(Qt.AlignRight) def inputMaskChanged(self, index): if index == 0: self.inputMaskLineEdit.setInputMask('') elif index == 1: self.inputMaskLineEdit.setInputMask('+99 99 99 99 99;_') elif index == 2: self.inputMaskLineEdit.setInputMask('0000-00-00') self.inputMaskLineEdit.setText('00000000') self.inputMaskLineEdit.setCursorPosition(0) elif index == 3: self.inputMaskLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#') def accessChanged(self, index): if index == 0: self.accessLineEdit.setReadOnly(False) elif index == 1: self.accessLineEdit.setReadOnly(True) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/movie/0000755000076500000240000000000012613140041017651 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/movie/animation.mng0000644000076500000240000001253012613140041022334 0ustar philstaff00000000000000ŠMNG  MHDRddI~iË IHDRddpâ•TìIDATxÚíÑ1 àù7ÝÙฅR¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜ø+¬Ö´hQÊIEND®B`‚ IHDRddpâ•T IDATxÚíÚ± ! ±ßÖìð¬@:$[JK‘+Ã÷“"HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Äl™™+ƒ 9‚Äì9º´“o¿HAb‰$FAb‰$FAb‰$FAb‰$FAbÜÔc‰$ÆÏÅAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰Y<äp¸¿Î¶hIEND®B`‚ IHDRddpâ•TUIDATxÚíÚ±m1A÷_Û—Âl…Ü û À”ÁmHþü’"HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚ļ亮É$æ ·ŽvçÝO$HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1ÞÔc‰$ÆÏÅAb‰$FAb‰äåœóñ#ˆ Ïq 2ô¨; 2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A|”{¦3X¡3X/%HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HÌþÄ›1L¹7IEND®B`‚ IHDRddpâ•TTIDATxÚíÚ±m1Awü²'[¡C÷¾00ep’?¿¤#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1o¹®ë#Ar‰y'È­£Ýy÷ #HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ7õAb‰ñs1FAb‰$FAby9ç|ü"ÈsœÁÀ‚ ýêN‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAåžé dè äK #HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Äó' 5kÖ£IEND®B`‚ IHDRddpâ•TdIDATxÚíÚ1nÃ@Aþ˜çd‡ìž›@5p™ ¦Béú(X@b‰$X@b‰$X@b‰u}õ¡ë:ò$X߬°:Úæw¿1 ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Äò›z, ±€Ä²B, ±€Ä H, ±€ÄòÛ}ßÇ ïéÈ`‡Ú ÈàPj" ƒCMdp¨‰€ 5Á¡&28ÔD@‡šÈàP%@žçù·79ÔD@‡šÈàPå@Nda Ó÷€,da Ó÷€,da Ó÷€,da Ó÷€,da Ó÷€,da Ó÷î?¾½ær@€™èM÷¦ H, ±€Ä H, ±€Ä H¬£ §ß H¬uyu@b‰$X@b‰$X@b‰õI+"EWâ‚IEND®B`‚ IHDRddpâ•TeIDATxÚíÚ1ŽAÁý1?Ê? Kî5£\ — T˜ÜçG©€Ä H, ±€Ä H, ±€Ä H¬_|>Ÿ+O@r‰õ££üí7$X@b‰$X@b‰$X@b‰$X@b‰$XþS$X¾\Œ$X@b‰$X@þŽð<× ïé dØ¿¡ÎÎd8Ô" áµÈp¨E@†C-2jáP‹€ ‡Zd8Ô¢È÷ûýoo9Ô" áµ(r# º}ÈÁ€èö= r` Û÷€ Ènßr0 º}ÈÁ€èö½gðáÛk>”Èz 7Ý[$X@b‰$X@b‰$XWAn¿7$XÇAäÕ‰$X@b‰$X@b‰$ÖeÆÐÓVˆIEND®B`‚ IHDRddpâ•T£IDATxÚíÚ1NQAn¼õQ| °ˆz׳¨ZrúøšÊl>>5±€Œd, c ÈX@Æ2±€ŒäWÏç3ûœòx<.ù,ô €„ýŒù¶@Â1‹9u´3o_=fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqÈÝ©;ó6òd, cùM}, cË.Žd, c ÈX@Æ2ïŽã¸üÈ}:‚„½uf@Â¡Š€„C ‡*U$ªH8Tp¨" áPE@¡Š&@Žàk†úë oú”C ‡*š¹" Á#Ê€(<¢ Hðˆ2 Á#Ê€(<¢ Hðˆ2 Á#Ê€(<¢ìåïMß oø{u@Æ2±€Œd, c ÈX@Æ2Ö¥ Wî±€Œu:ˆ€Ü: c ÈX@Æ2±€Œd, cë uEB?¿¡IEND®B`‚ IHDRddpâ•TÔIDATxÚíš±qÃ@ľÿÚXŠz°8r¤»\ÊÀ Ó» “þ|Éà cd ƒŒa1 2†AÆ0Èà cä×ua_,Èëõª| \@ƒ€üʼm†A@™ÄŒw‚D¥%g·e3 Ê$f”IÌ0(“˜aP&1à  Lb†A@™Ä ƒ€2‰e3 Ê$f”IÌ0(“˜aP&1à Oÿ?„&9Û än 2†AÆ0Èþ§>†AÆ0Ⱦ\à cd ƒŒa1 2†AÆ0ü“û›ŸA ò .@°A@~!ÿ¥{ b= 2†AÆ0Èà cd ƒŒñ¯‚œsnûHQEE0¤A‚Úû Ä Aí} b€ ö>ƒ1H@P{ŸA‚$ ¨½Ï A ÔÞwßóPÎ 1-èIûhâW·µ÷Ñįn j_ÝÔÞG¿º-¨½&~u[P{Müê¶ ö>šøÕmAí}4ñ«Û‚ÚûhâW·µ÷Ñįn j_}€ˆé—‹Kį>€Xƒ€@¬Aä6 2†AÆ0Èà cd ƒŒa1 2†AÆ0Èߣúu9róÐIEND®B`‚ IHDRddpâ•T‘IDATxÚíÚ1nA ÅÐÜx.¾wˆS¤0RS2' ·à¿Òûõ]ª‘ˆ¬@d"+YÈ DV ²‘ˆ¬@þtÎÁ~"°ß1?v#pLâF à˜Ä@À1‰€c7Ç$nŽIÜ“¸8&q#pLâF à˜Ä@À1‰€c7Ç$nŽIܤÿCÜ"T ²‘ˆ¬@d"+YÈ DV ²‘ˆ¬@d"+ŸžçYÿÈ==ÀÀ€½5Y àPD€CE8Q àPD€CE8Q àPD |#;ýmm K?r(¢@À¡ˆt 20Ðö{ ÈÀ@Ûï2X m¿È` ´ý^ ƒ20Ðö{ ÈÀ@Ûï=À‡o×|(H ÐÝô] ²‘ˆ¬@d"+YÈ DV ²‘µ ²ý»±@d"k¤¹º@d"+YÈ DV ²‘ˆ¬@d"ëh!I[ 2çˆIEND®B`‚ IHDRddpâ•TMIDATxÚíÙ±Ã@ÁË?6æôrd½=¢šB5pî˜2yþ” H, ±€Ä H, ±€Ä H, ±€üäœÙ2è € {ùµ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸Äÿvgä‡ H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H¬ƒ\×õµ÷Ä€ÄëV;ºû{ë€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±n¹û=1 ±€Äú8ˆ€<: ±€Ä H, ±€Ä H, ±€Äz6wM€OÐQIEND®B`‚ IHDRddpâ•TMIDATxÚíÙ1nÃ@Aÿø>Î?؉"Ç#ª)T—.©?¿J$X@b‰$X@b‰$X@þuΙ= ƒÎȰט»d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@üiw@¾( ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Äz;Èu]{O H, ±n¹£»¿·H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€ÄëV»ß H¬·ƒÈ£ H, ±€Ä H, ±€Ä H¬?X|wTIEND®B`‚ IHDRddpâ•T;IDATxÚíÙ± AAòms {¤o¡jéÜ5¦Ì{½• H, ±€Ä H, ±€Ä H, ±€ütw³dÐ € ûŽùØ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Üâ?¤Ý €üQ@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b}‡´[ŽRØ$÷IEND®B`‚ IHDRddpâ•T;IDATxÚíÙ± AAòus {¤o¡jéÜ5¦Ì{½• H, ±€Ä H, ±€Ä H, ±€ütw³dÐ € ûŽùØ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Üâ?¤Ý €üQ@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b}(©ŽŽÚŸ‰IEND®B`‚ IHDRddpâ•TìIDATxÚíÑ1 àù7ÝÙฅR¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜ø+¬Ö´hQÊIEND®B`‚MEND! ÷ÕPyQt-gpl-5.5.1/examples/widgets/movie/movie.py0000755000076500000240000001762212613140041021355 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QFileInfo, QSize, Qt from PyQt5.QtGui import QMovie, QPalette from PyQt5.QtWidgets import (QApplication, QCheckBox, QFileDialog, QGridLayout, QHBoxLayout, QLabel, QSizePolicy, QSlider, QSpinBox, QStyle, QToolButton, QVBoxLayout, QWidget) class MoviePlayer(QWidget): def __init__(self, parent=None): super(MoviePlayer, self).__init__(parent) self.movie = QMovie(self) self.movie.setCacheMode(QMovie.CacheAll) self.movieLabel = QLabel("No movie loaded") self.movieLabel.setAlignment(Qt.AlignCenter) self.movieLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.movieLabel.setBackgroundRole(QPalette.Dark) self.movieLabel.setAutoFillBackground(True) self.currentMovieDirectory = '' self.createControls() self.createButtons() self.movie.frameChanged.connect(self.updateFrameSlider) self.movie.stateChanged.connect(self.updateButtons) self.fitCheckBox.clicked.connect(self.fitToWindow) self.frameSlider.valueChanged.connect(self.goToFrame) self.speedSpinBox.valueChanged.connect(self.movie.setSpeed) mainLayout = QVBoxLayout() mainLayout.addWidget(self.movieLabel) mainLayout.addLayout(self.controlsLayout) mainLayout.addLayout(self.buttonsLayout) self.setLayout(mainLayout) self.updateFrameSlider() self.updateButtons() self.setWindowTitle("Movie Player") self.resize(400, 400) def open(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open a Movie", self.currentMovieDirectory) if fileName: self.openFile(fileName) def openFile(self, fileName): self.currentMovieDirectory = QFileInfo(fileName).path() self.movie.stop() self.movieLabel.setMovie(self.movie) self.movie.setFileName(fileName) self.movie.start() self.updateFrameSlider(); self.updateButtons(); def goToFrame(self, frame): self.movie.jumpToFrame(frame) def fitToWindow(self): self.movieLabel.setScaledContents(self.fitCheckBox.isChecked()) def updateFrameSlider(self): hasFrames = (self.movie.currentFrameNumber() >= 0) if hasFrames: if self.movie.frameCount() > 0: self.frameSlider.setMaximum(self.movie.frameCount() - 1) elif self.movie.currentFrameNumber() > self.frameSlider.maximum(): self.frameSlider.setMaximum(self.movie.currentFrameNumber()) self.frameSlider.setValue(self.movie.currentFrameNumber()) else: self.frameSlider.setMaximum(0) self.frameLabel.setEnabled(hasFrames) self.frameSlider.setEnabled(hasFrames) def updateButtons(self): state = self.movie.state() self.playButton.setEnabled(self.movie.isValid() and self.movie.frameCount() != 1 and state == QMovie.NotRunning) self.pauseButton.setEnabled(state != QMovie.NotRunning) self.pauseButton.setChecked(state == QMovie.Paused) self.stopButton.setEnabled(state != QMovie.NotRunning) def createControls(self): self.fitCheckBox = QCheckBox("Fit to Window") self.frameLabel = QLabel("Current frame:") self.frameSlider = QSlider(Qt.Horizontal) self.frameSlider.setTickPosition(QSlider.TicksBelow) self.frameSlider.setTickInterval(10) speedLabel = QLabel("Speed:") self.speedSpinBox = QSpinBox() self.speedSpinBox.setRange(1, 9999) self.speedSpinBox.setValue(100) self.speedSpinBox.setSuffix("%") self.controlsLayout = QGridLayout() self.controlsLayout.addWidget(self.fitCheckBox, 0, 0, 1, 2) self.controlsLayout.addWidget(self.frameLabel, 1, 0) self.controlsLayout.addWidget(self.frameSlider, 1, 1, 1, 2) self.controlsLayout.addWidget(speedLabel, 2, 0) self.controlsLayout.addWidget(self.speedSpinBox, 2, 1) def createButtons(self): iconSize = QSize(36, 36) openButton = QToolButton() openButton.setIcon(self.style().standardIcon(QStyle.SP_DialogOpenButton)) openButton.setIconSize(iconSize) openButton.setToolTip("Open File") openButton.clicked.connect(self.open) self.playButton = QToolButton() self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.setIconSize(iconSize) self.playButton.setToolTip("Play") self.playButton.clicked.connect(self.movie.start) self.pauseButton = QToolButton() self.pauseButton.setCheckable(True) self.pauseButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPause)) self.pauseButton.setIconSize(iconSize) self.pauseButton.setToolTip("Pause") self.pauseButton.clicked.connect(self.movie.setPaused) self.stopButton = QToolButton() self.stopButton.setIcon(self.style().standardIcon(QStyle.SP_MediaStop)) self.stopButton.setIconSize(iconSize) self.stopButton.setToolTip("Stop") self.stopButton.clicked.connect(self.movie.stop) quitButton = QToolButton() quitButton.setIcon(self.style().standardIcon(QStyle.SP_DialogCloseButton)) quitButton.setIconSize(iconSize) quitButton.setToolTip("Quit") quitButton.clicked.connect(self.close) self.buttonsLayout = QHBoxLayout() self.buttonsLayout.addStretch() self.buttonsLayout.addWidget(openButton) self.buttonsLayout.addWidget(self.playButton) self.buttonsLayout.addWidget(self.pauseButton) self.buttonsLayout.addWidget(self.stopButton) self.buttonsLayout.addWidget(quitButton) self.buttonsLayout.addStretch() if __name__ == '__main__': import sys app = QApplication(sys.argv) player = MoviePlayer() player.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/README0000644000076500000240000000171712613140041017420 0ustar philstaff00000000000000PyQt comes with a large range of standard widgets that users of modern application have come to expect. You can also develop your own custom widgets and controls, and use them alongside standard widgets. It is even possible to provide custom styles and themes for widgets that can be used to change the appearance of standard widgets and appropriately written custom widgets. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/widgets/scribble.py0000755000076500000240000002634312613140041020704 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDir, QPoint, QRect, QSize, Qt from PyQt5.QtGui import QImage, QImageWriter, QPainter, QPen, qRgb from PyQt5.QtWidgets import (QAction, QApplication, QColorDialog, QFileDialog, QInputDialog, QMainWindow, QMenu, QMessageBox, QWidget) from PyQt5.QtPrintSupport import QPrintDialog, QPrinter class ScribbleArea(QWidget): def __init__(self, parent=None): super(ScribbleArea, self).__init__(parent) self.setAttribute(Qt.WA_StaticContents) self.modified = False self.scribbling = False self.myPenWidth = 1 self.myPenColor = Qt.blue self.image = QImage() self.lastPoint = QPoint() def openImage(self, fileName): loadedImage = QImage() if not loadedImage.load(fileName): return False newSize = loadedImage.size().expandedTo(self.size()) self.resizeImage(loadedImage, newSize) self.image = loadedImage self.modified = False self.update() return True def saveImage(self, fileName, fileFormat): visibleImage = self.image self.resizeImage(visibleImage, self.size()) if visibleImage.save(fileName, fileFormat): self.modified = False return True else: return False def setPenColor(self, newColor): self.myPenColor = newColor def setPenWidth(self, newWidth): self.myPenWidth = newWidth def clearImage(self): self.image.fill(qRgb(255, 255, 255)) self.modified = True self.update() def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.lastPoint = event.pos() self.scribbling = True def mouseMoveEvent(self, event): if (event.buttons() & Qt.LeftButton) and self.scribbling: self.drawLineTo(event.pos()) def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton and self.scribbling: self.drawLineTo(event.pos()) self.scribbling = False def paintEvent(self, event): painter = QPainter(self) dirtyRect = event.rect() painter.drawImage(dirtyRect, self.image, dirtyRect) def resizeEvent(self, event): if self.width() > self.image.width() or self.height() > self.image.height(): newWidth = max(self.width() + 128, self.image.width()) newHeight = max(self.height() + 128, self.image.height()) self.resizeImage(self.image, QSize(newWidth, newHeight)) self.update() super(ScribbleArea, self).resizeEvent(event) def drawLineTo(self, endPoint): painter = QPainter(self.image) painter.setPen(QPen(self.myPenColor, self.myPenWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(self.lastPoint, endPoint) self.modified = True rad = self.myPenWidth / 2 + 2 self.update(QRect(self.lastPoint, endPoint).normalized().adjusted(-rad, -rad, +rad, +rad)) self.lastPoint = QPoint(endPoint) def resizeImage(self, image, newSize): if image.size() == newSize: return newImage = QImage(newSize, QImage.Format_RGB32) newImage.fill(qRgb(255, 255, 255)) painter = QPainter(newImage) painter.drawImage(QPoint(0, 0), image) self.image = newImage def print_(self): printer = QPrinter(QPrinter.HighResolution) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QPrintDialog.Accepted: painter = QPainter(printer) rect = painter.viewport() size = self.image.size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.image.rect()) painter.drawImage(0, 0, self.image) painter.end() def isModified(self): return self.modified def penColor(self): return self.myPenColor def penWidth(self): return self.myPenWidth class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.saveAsActs = [] self.scribbleArea = ScribbleArea() self.setCentralWidget(self.scribbleArea) self.createActions() self.createMenus() self.setWindowTitle("Scribble") self.resize(500, 500) def closeEvent(self, event): if self.maybeSave(): event.accept() else: event.ignore() def open(self): if self.maybeSave(): fileName, _ = QFileDialog.getOpenFileName(self, "Open File", QDir.currentPath()) if fileName: self.scribbleArea.openImage(fileName) def save(self): action = self.sender() fileFormat = action.data() self.saveFile(fileFormat) def penColor(self): newColor = QColorDialog.getColor(self.scribbleArea.penColor()) if newColor.isValid(): self.scribbleArea.setPenColor(newColor) def penWidth(self): newWidth, ok = QInputDialog.getInt(self, "Scribble", "Select pen width:", self.scribbleArea.penWidth(), 1, 50, 1) if ok: self.scribbleArea.setPenWidth(newWidth) def about(self): QMessageBox.about(self, "About Scribble", "

      The Scribble example shows how to use " "QMainWindow as the base widget for an application, and how " "to reimplement some of QWidget's event handlers to receive " "the events generated for the application's widgets:

      " "

      We reimplement the mouse event handlers to facilitate " "drawing, the paint event handler to update the application " "and the resize event handler to optimize the application's " "appearance. In addition we reimplement the close event " "handler to intercept the close events before terminating " "the application.

      " "

      The example also demonstrates how to use QPainter to " "draw an image in real time, as well as to repaint " "widgets.

      ") def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) for format in QImageWriter.supportedImageFormats(): format = str(format) text = format.upper() + "..." action = QAction(text, self, triggered=self.save) action.setData(format) self.saveAsActs.append(action) self.printAct = QAction("&Print...", self, triggered=self.scribbleArea.print_) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.penColorAct = QAction("&Pen Color...", self, triggered=self.penColor) self.penWidthAct = QAction("Pen &Width...", self, triggered=self.penWidth) self.clearScreenAct = QAction("&Clear Screen", self, shortcut="Ctrl+L", triggered=self.scribbleArea.clearImage) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.saveAsMenu = QMenu("&Save As", self) for action in self.saveAsActs: self.saveAsMenu.addAction(action) fileMenu = QMenu("&File", self) fileMenu.addAction(self.openAct) fileMenu.addMenu(self.saveAsMenu) fileMenu.addAction(self.printAct) fileMenu.addSeparator() fileMenu.addAction(self.exitAct) optionMenu = QMenu("&Options", self) optionMenu.addAction(self.penColorAct) optionMenu.addAction(self.penWidthAct) optionMenu.addSeparator() optionMenu.addAction(self.clearScreenAct) helpMenu = QMenu("&Help", self) helpMenu.addAction(self.aboutAct) helpMenu.addAction(self.aboutQtAct) self.menuBar().addMenu(fileMenu) self.menuBar().addMenu(optionMenu) self.menuBar().addMenu(helpMenu) def maybeSave(self): if self.scribbleArea.isModified(): ret = QMessageBox.warning(self, "Scribble", "The image has been modified.\n" "Do you want to save your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.saveFile('png') elif ret == QMessageBox.Cancel: return False return True def saveFile(self, fileFormat): initialPath = QDir.currentPath() + '/untitled.' + fileFormat fileName, _ = QFileDialog.getSaveFileName(self, "Save As", initialPath, "%s Files (*.%s);;All Files (*)" % (fileFormat.upper(), fileFormat)) if fileName: return self.scribbleArea.saveImage(fileName, fileFormat) return False if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/shapedclock.py0000755000076500000240000001211212613140041021364 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QPoint, QSize, Qt, QTime, QTimer from PyQt5.QtGui import QColor, QPainter, QPolygon, QRegion from PyQt5.QtWidgets import QAction, QApplication, QWidget class ShapedClock(QWidget): hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) hourColor = QColor(127, 0, 127) minuteColor = QColor(0, 127, 127, 191) def __init__(self, parent=None): super(ShapedClock, self).__init__(parent, Qt.FramelessWindowHint | Qt.WindowSystemMenuHint) timer = QTimer(self) timer.timeout.connect(self.update) timer.start(1000) quitAction = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=QApplication.instance().quit) self.addAction(quitAction) self.setContextMenuPolicy(Qt.ActionsContextMenu) self.setToolTip("Drag the clock with the left mouse button.\n" "Use the right mouse button to open a context menu.") self.setWindowTitle(self.tr("Shaped Analog Clock")) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.dragPosition = event.globalPos() - self.frameGeometry().topLeft() event.accept() def mouseMoveEvent(self, event): if event.buttons() == Qt.LeftButton: self.move(event.globalPos() - self.dragPosition) event.accept() def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(ShapedClock.hourColor) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(ShapedClock.hourHand) painter.restore() painter.setPen(ShapedClock.hourColor) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(ShapedClock.minuteColor) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(ShapedClock.minuteHand) painter.restore() painter.setPen(ShapedClock.minuteColor) for j in range(60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) def resizeEvent(self, event): side = min(self.width(), self.height()) maskedRegion = QRegion(self.width()/2 - side/2, self.height()/2 - side/2, side, side, QRegion.Ellipse) self.setMask(maskedRegion) def sizeHint(self): return QSize(100, 100) if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = ShapedClock() clock.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/sliders.py0000755000076500000240000001707112613140041020562 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSignal, Qt from PyQt5.QtWidgets import (QApplication, QBoxLayout, QCheckBox, QComboBox, QDial, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QScrollBar, QSlider, QSpinBox, QStackedWidget, QWidget) class SlidersGroup(QGroupBox): valueChanged = pyqtSignal(int) def __init__(self, orientation, title, parent=None): super(SlidersGroup, self).__init__(title, parent) self.slider = QSlider(orientation) self.slider.setFocusPolicy(Qt.StrongFocus) self.slider.setTickPosition(QSlider.TicksBothSides) self.slider.setTickInterval(10) self.slider.setSingleStep(1) self.scrollBar = QScrollBar(orientation) self.scrollBar.setFocusPolicy(Qt.StrongFocus) self.dial = QDial() self.dial.setFocusPolicy(Qt.StrongFocus) self.slider.valueChanged.connect(self.scrollBar.setValue) self.scrollBar.valueChanged.connect(self.dial.setValue) self.dial.valueChanged.connect(self.slider.setValue) self.dial.valueChanged.connect(self.valueChanged) if orientation == Qt.Horizontal: direction = QBoxLayout.TopToBottom else: direction = QBoxLayout.LeftToRight slidersLayout = QBoxLayout(direction) slidersLayout.addWidget(self.slider) slidersLayout.addWidget(self.scrollBar) slidersLayout.addWidget(self.dial) self.setLayout(slidersLayout) def setValue(self, value): self.slider.setValue(value) def setMinimum(self, value): self.slider.setMinimum(value) self.scrollBar.setMinimum(value) self.dial.setMinimum(value) def setMaximum(self, value): self.slider.setMaximum(value) self.scrollBar.setMaximum(value) self.dial.setMaximum(value) def invertAppearance(self, invert): self.slider.setInvertedAppearance(invert) self.scrollBar.setInvertedAppearance(invert) self.dial.setInvertedAppearance(invert) def invertKeyBindings(self, invert): self.slider.setInvertedControls(invert) self.scrollBar.setInvertedControls(invert) self.dial.setInvertedControls(invert) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.horizontalSliders = SlidersGroup(Qt.Horizontal, "Horizontal") self.verticalSliders = SlidersGroup(Qt.Vertical, "Vertical") self.stackedWidget = QStackedWidget() self.stackedWidget.addWidget(self.horizontalSliders) self.stackedWidget.addWidget(self.verticalSliders) self.createControls("Controls") self.horizontalSliders.valueChanged.connect(self.verticalSliders.setValue) self.verticalSliders.valueChanged.connect(self.valueSpinBox.setValue) self.valueSpinBox.valueChanged.connect(self.horizontalSliders.setValue) layout = QHBoxLayout() layout.addWidget(self.controlsGroup) layout.addWidget(self.stackedWidget) self.setLayout(layout) self.minimumSpinBox.setValue(0) self.maximumSpinBox.setValue(20) self.valueSpinBox.setValue(5) self.setWindowTitle("Sliders") def createControls(self, title): self.controlsGroup = QGroupBox(title) minimumLabel = QLabel("Minimum value:") maximumLabel = QLabel("Maximum value:") valueLabel = QLabel("Current value:") invertedAppearance = QCheckBox("Inverted appearance") invertedKeyBindings = QCheckBox("Inverted key bindings") self.minimumSpinBox = QSpinBox() self.minimumSpinBox.setRange(-100, 100) self.minimumSpinBox.setSingleStep(1) self.maximumSpinBox = QSpinBox() self.maximumSpinBox.setRange(-100, 100) self.maximumSpinBox.setSingleStep(1) self.valueSpinBox = QSpinBox() self.valueSpinBox.setRange(-100, 100) self.valueSpinBox.setSingleStep(1) orientationCombo = QComboBox() orientationCombo.addItem("Horizontal slider-like widgets") orientationCombo.addItem("Vertical slider-like widgets") orientationCombo.activated.connect(self.stackedWidget.setCurrentIndex) self.minimumSpinBox.valueChanged.connect(self.horizontalSliders.setMinimum) self.minimumSpinBox.valueChanged.connect(self.verticalSliders.setMinimum) self.maximumSpinBox.valueChanged.connect(self.horizontalSliders.setMaximum) self.maximumSpinBox.valueChanged.connect(self.verticalSliders.setMaximum) invertedAppearance.toggled.connect(self.horizontalSliders.invertAppearance) invertedAppearance.toggled.connect(self.verticalSliders.invertAppearance) invertedKeyBindings.toggled.connect(self.horizontalSliders.invertKeyBindings) invertedKeyBindings.toggled.connect(self.verticalSliders.invertKeyBindings) controlsLayout = QGridLayout() controlsLayout.addWidget(minimumLabel, 0, 0) controlsLayout.addWidget(maximumLabel, 1, 0) controlsLayout.addWidget(valueLabel, 2, 0) controlsLayout.addWidget(self.minimumSpinBox, 0, 1) controlsLayout.addWidget(self.maximumSpinBox, 1, 1) controlsLayout.addWidget(self.valueSpinBox, 2, 1) controlsLayout.addWidget(invertedAppearance, 0, 2) controlsLayout.addWidget(invertedKeyBindings, 1, 2) controlsLayout.addWidget(orientationCombo, 3, 0, 1, 3) self.controlsGroup.setLayout(controlsLayout) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/spinboxes.py0000755000076500000240000002107012613140041021121 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDate, QDateTime, Qt, QTime from PyQt5.QtWidgets import (QApplication, QComboBox, QDateEdit, QDateTimeEdit, QDoubleSpinBox, QGroupBox, QHBoxLayout, QLabel, QSpinBox, QTimeEdit, QVBoxLayout, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.createSpinBoxes() self.createDateTimeEdits() self.createDoubleSpinBoxes() layout = QHBoxLayout() layout.addWidget(self.spinBoxesGroup) layout.addWidget(self.editsGroup) layout.addWidget(self.doubleSpinBoxesGroup) self.setLayout(layout) self.setWindowTitle("Spin Boxes") def createSpinBoxes(self): self.spinBoxesGroup = QGroupBox("Spinboxes") integerLabel = QLabel("Enter a value between %d and %d:" % (-20, 20)) integerSpinBox = QSpinBox() integerSpinBox.setRange(-20, 20) integerSpinBox.setSingleStep(1) integerSpinBox.setValue(0) zoomLabel = QLabel("Enter a zoom value between %d and %d:" % (0, 1000)) zoomSpinBox = QSpinBox() zoomSpinBox.setRange(0, 1000) zoomSpinBox.setSingleStep(10) zoomSpinBox.setSuffix('%') zoomSpinBox.setSpecialValueText("Automatic") zoomSpinBox.setValue(100) priceLabel = QLabel("Enter a price between %d and %d:" % (0, 999)) priceSpinBox = QSpinBox() priceSpinBox.setRange(0, 999) priceSpinBox.setSingleStep(1) priceSpinBox.setPrefix('$') priceSpinBox.setValue(99) spinBoxLayout = QVBoxLayout() spinBoxLayout.addWidget(integerLabel) spinBoxLayout.addWidget(integerSpinBox) spinBoxLayout.addWidget(zoomLabel) spinBoxLayout.addWidget(zoomSpinBox) spinBoxLayout.addWidget(priceLabel) spinBoxLayout.addWidget(priceSpinBox) self.spinBoxesGroup.setLayout(spinBoxLayout) def createDateTimeEdits(self): self.editsGroup = QGroupBox("Date and time spin boxes") dateLabel = QLabel() dateEdit = QDateEdit(QDate.currentDate()) dateEdit.setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31)) dateLabel.setText("Appointment date (between %s and %s):" % (dateEdit.minimumDate().toString(Qt.ISODate), dateEdit.maximumDate().toString(Qt.ISODate))) timeLabel = QLabel() timeEdit = QTimeEdit(QTime.currentTime()) timeEdit.setTimeRange(QTime(9, 0, 0, 0), QTime(16, 30, 0, 0)) timeLabel.setText("Appointment time (between %s and %s):" % (timeEdit.minimumTime().toString(Qt.ISODate), timeEdit.maximumTime().toString(Qt.ISODate))) self.meetingLabel = QLabel() self.meetingEdit = QDateTimeEdit(QDateTime.currentDateTime()) formatLabel = QLabel("Format string for the meeting date and time:") formatComboBox = QComboBox() formatComboBox.addItem('yyyy-MM-dd hh:mm:ss (zzz \'ms\')') formatComboBox.addItem('hh:mm:ss MM/dd/yyyy') formatComboBox.addItem('hh:mm:ss dd/MM/yyyy') formatComboBox.addItem('hh:mm:ss') formatComboBox.addItem('hh:mm ap') formatComboBox.activated[str].connect(self.setFormatString) self.setFormatString(formatComboBox.currentText()) editsLayout = QVBoxLayout() editsLayout.addWidget(dateLabel) editsLayout.addWidget(dateEdit) editsLayout.addWidget(timeLabel) editsLayout.addWidget(timeEdit) editsLayout.addWidget(self.meetingLabel) editsLayout.addWidget(self.meetingEdit) editsLayout.addWidget(formatLabel) editsLayout.addWidget(formatComboBox) self.editsGroup.setLayout(editsLayout) def setFormatString(self, formatString): self.meetingEdit.setDisplayFormat(formatString) if self.meetingEdit.displayedSections() & QDateTimeEdit.DateSections_Mask: self.meetingEdit.setDateRange(QDate(2004, 11, 1), QDate(2005, 11, 30)) self.meetingLabel.setText("Meeting date (between %s and %s):" % (self.meetingEdit.minimumDate().toString(Qt.ISODate), self.meetingEdit.maximumDate().toString(Qt.ISODate))) else: self.meetingEdit.setTimeRange(QTime(0, 7, 20, 0), QTime(21, 0, 0, 0)) self.meetingLabel.setText("Meeting time (between %s and %s):" % (self.meetingEdit.minimumTime().toString(Qt.ISODate), self.meetingEdit.maximumTime().toString(Qt.ISODate))) def createDoubleSpinBoxes(self): self.doubleSpinBoxesGroup = QGroupBox("Double precision spinboxes") precisionLabel = QLabel("Number of decimal places to show:") precisionSpinBox = QSpinBox() precisionSpinBox.setRange(0, 100) precisionSpinBox.setValue(2) doubleLabel = QLabel("Enter a value between %d and %d:" % (-20, 20)) self.doubleSpinBox = QDoubleSpinBox() self.doubleSpinBox.setRange(-20.0, 20.0) self.doubleSpinBox.setSingleStep(1.0) self.doubleSpinBox.setValue(0.0) scaleLabel = QLabel("Enter a scale factor between %d and %d:" % (0, 1000)) self.scaleSpinBox = QDoubleSpinBox() self.scaleSpinBox.setRange(0.0, 1000.0) self.scaleSpinBox.setSingleStep(10.0) self.scaleSpinBox.setSuffix('%') self.scaleSpinBox.setSpecialValueText("No scaling") self.scaleSpinBox.setValue(100.0) priceLabel = QLabel("Enter a price between %d and %d:" % (0, 1000)) self.priceSpinBox = QDoubleSpinBox() self.priceSpinBox.setRange(0.0, 1000.0) self.priceSpinBox.setSingleStep(1.0) self.priceSpinBox.setPrefix('$') self.priceSpinBox.setValue(99.99) precisionSpinBox.valueChanged.connect(self.changePrecision) spinBoxLayout = QVBoxLayout() spinBoxLayout.addWidget(precisionLabel) spinBoxLayout.addWidget(precisionSpinBox) spinBoxLayout.addWidget(doubleLabel) spinBoxLayout.addWidget(self.doubleSpinBox) spinBoxLayout.addWidget(scaleLabel) spinBoxLayout.addWidget(self.scaleSpinBox) spinBoxLayout.addWidget(priceLabel) spinBoxLayout.addWidget(self.priceSpinBox) self.doubleSpinBoxesGroup.setLayout(spinBoxLayout) def changePrecision(self, decimals): self.doubleSpinBox.setDecimals(decimals) self.scaleSpinBox.setDecimals(decimals) self.priceSpinBox.setDecimals(decimals) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/styles.py0000755000076500000240000002203512613140041020434 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QDateTime, Qt, QTimer from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, QDial, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QProgressBar, QPushButton, QRadioButton, QScrollBar, QSizePolicy, QSlider, QSpinBox, QStyleFactory, QTableWidget, QTabWidget, QTextEdit, QVBoxLayout, QWidget) class WidgetGallery(QDialog): def __init__(self, parent=None): super(WidgetGallery, self).__init__(parent) self.originalPalette = QApplication.palette() styleComboBox = QComboBox() styleComboBox.addItems(QStyleFactory.keys()) styleLabel = QLabel("&Style:") styleLabel.setBuddy(styleComboBox) self.useStylePaletteCheckBox = QCheckBox("&Use style's standard palette") self.useStylePaletteCheckBox.setChecked(True) disableWidgetsCheckBox = QCheckBox("&Disable widgets") self.createTopLeftGroupBox() self.createTopRightGroupBox() self.createBottomLeftTabWidget() self.createBottomRightGroupBox() self.createProgressBar() styleComboBox.activated[str].connect(self.changeStyle) self.useStylePaletteCheckBox.toggled.connect(self.changePalette) disableWidgetsCheckBox.toggled.connect(self.topLeftGroupBox.setDisabled) disableWidgetsCheckBox.toggled.connect(self.topRightGroupBox.setDisabled) disableWidgetsCheckBox.toggled.connect(self.bottomLeftTabWidget.setDisabled) disableWidgetsCheckBox.toggled.connect(self.bottomRightGroupBox.setDisabled) topLayout = QHBoxLayout() topLayout.addWidget(styleLabel) topLayout.addWidget(styleComboBox) topLayout.addStretch(1) topLayout.addWidget(self.useStylePaletteCheckBox) topLayout.addWidget(disableWidgetsCheckBox) mainLayout = QGridLayout() mainLayout.addLayout(topLayout, 0, 0, 1, 2) mainLayout.addWidget(self.topLeftGroupBox, 1, 0) mainLayout.addWidget(self.topRightGroupBox, 1, 1) mainLayout.addWidget(self.bottomLeftTabWidget, 2, 0) mainLayout.addWidget(self.bottomRightGroupBox, 2, 1) mainLayout.addWidget(self.progressBar, 3, 0, 1, 2) mainLayout.setRowStretch(1, 1) mainLayout.setRowStretch(2, 1) mainLayout.setColumnStretch(0, 1) mainLayout.setColumnStretch(1, 1) self.setLayout(mainLayout) self.setWindowTitle("Styles") self.changeStyle('Windows') def changeStyle(self, styleName): QApplication.setStyle(QStyleFactory.create(styleName)) self.changePalette() def changePalette(self): if (self.useStylePaletteCheckBox.isChecked()): QApplication.setPalette(QApplication.style().standardPalette()) else: QApplication.setPalette(self.originalPalette) def advanceProgressBar(self): curVal = self.progressBar.value() maxVal = self.progressBar.maximum() self.progressBar.setValue(curVal + (maxVal - curVal) / 100) def createTopLeftGroupBox(self): self.topLeftGroupBox = QGroupBox("Group 1") radioButton1 = QRadioButton("Radio button 1") radioButton2 = QRadioButton("Radio button 2") radioButton3 = QRadioButton("Radio button 3") radioButton1.setChecked(True) checkBox = QCheckBox("Tri-state check box") checkBox.setTristate(True) checkBox.setCheckState(Qt.PartiallyChecked) layout = QVBoxLayout() layout.addWidget(radioButton1) layout.addWidget(radioButton2) layout.addWidget(radioButton3) layout.addWidget(checkBox) layout.addStretch(1) self.topLeftGroupBox.setLayout(layout) def createTopRightGroupBox(self): self.topRightGroupBox = QGroupBox("Group 2") defaultPushButton = QPushButton("Default Push Button") defaultPushButton.setDefault(True) togglePushButton = QPushButton("Toggle Push Button") togglePushButton.setCheckable(True) togglePushButton.setChecked(True) flatPushButton = QPushButton("Flat Push Button") flatPushButton.setFlat(True) layout = QVBoxLayout() layout.addWidget(defaultPushButton) layout.addWidget(togglePushButton) layout.addWidget(flatPushButton) layout.addStretch(1) self.topRightGroupBox.setLayout(layout) def createBottomLeftTabWidget(self): self.bottomLeftTabWidget = QTabWidget() self.bottomLeftTabWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Ignored) tab1 = QWidget() tableWidget = QTableWidget(10, 10) tab1hbox = QHBoxLayout() tab1hbox.setContentsMargins(5, 5, 5, 5) tab1hbox.addWidget(tableWidget) tab1.setLayout(tab1hbox) tab2 = QWidget() textEdit = QTextEdit() textEdit.setPlainText("Twinkle, twinkle, little star,\n" "How I wonder what you are.\n" "Up above the world so high,\n" "Like a diamond in the sky.\n" "Twinkle, twinkle, little star,\n" "How I wonder what you are!\n") tab2hbox = QHBoxLayout() tab2hbox.setContentsMargins(5, 5, 5, 5) tab2hbox.addWidget(textEdit) tab2.setLayout(tab2hbox) self.bottomLeftTabWidget.addTab(tab1, "&Table") self.bottomLeftTabWidget.addTab(tab2, "Text &Edit") def createBottomRightGroupBox(self): self.bottomRightGroupBox = QGroupBox("Group 3") self.bottomRightGroupBox.setCheckable(True) self.bottomRightGroupBox.setChecked(True) lineEdit = QLineEdit('s3cRe7') lineEdit.setEchoMode(QLineEdit.Password) spinBox = QSpinBox(self.bottomRightGroupBox) spinBox.setValue(50) dateTimeEdit = QDateTimeEdit(self.bottomRightGroupBox) dateTimeEdit.setDateTime(QDateTime.currentDateTime()) slider = QSlider(Qt.Horizontal, self.bottomRightGroupBox) slider.setValue(40) scrollBar = QScrollBar(Qt.Horizontal, self.bottomRightGroupBox) scrollBar.setValue(60) dial = QDial(self.bottomRightGroupBox) dial.setValue(30) dial.setNotchesVisible(True) layout = QGridLayout() layout.addWidget(lineEdit, 0, 0, 1, 2) layout.addWidget(spinBox, 1, 0, 1, 2) layout.addWidget(dateTimeEdit, 2, 0, 1, 2) layout.addWidget(slider, 3, 0) layout.addWidget(scrollBar, 4, 0) layout.addWidget(dial, 3, 1, 2, 1) layout.setRowStretch(5, 1) self.bottomRightGroupBox.setLayout(layout) def createProgressBar(self): self.progressBar = QProgressBar() self.progressBar.setRange(0, 10000) self.progressBar.setValue(0) timer = QTimer(self) timer.timeout.connect(self.advanceProgressBar) timer.start(1000) if __name__ == '__main__': import sys app = QApplication(sys.argv) gallery = WidgetGallery() gallery.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/stylesheet/0000755000076500000240000000000012613140041020723 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/0000755000076500000240000000000012613140041022170 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/checkbox_checked.png0000644000076500000240000000040712613140041026133 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<›IDATÓch¬hüV04þÇÁR÷&¿ìA†÷&Ã¥>tüo€Ásó¦Ü=µ‹Ôíé­?ÿo܉$umP¢óÕÚžïÿ§Ü{Ó—Z¿»ñÿŠ{_OúÒø¿÷ÅÇöp©ã‹›þ6þïêèøø¼÷’Ô‡ŽM;@të›Ó@6¢HýoXxªíËéÇ IAüõ¼‹¿p…Î0•ÞøÐ`e9IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/checkbox_checked_hover.png0000644000076500000240000000041212613140041027332 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<žIDATÓc˜U1ëVXÁ0ë?.–z2ùm2|2.õ¹ã Þ›·óî…X¤žO_ÿsíÿÓ;‘¤žÎJt~\»åûÚÿ;ï½ï‚KÚ½öÿ±{?oÿ²öÿÖ_Û?wÀ¥n.^û(Ô±ñã»Þÿ HRŸ;ÎîXûíÿõ?žOÙˆ"õ¿áЩ _î.€8I â¯×½Xü…+4p†!Œà>dýIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/checkbox_checked_pressed.png0000644000076500000240000000065112613140041027661 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<;IDAT(‘c˜5kVÿ W0‰ÿ¤b¸¦µ«V-ݸnÝÔÍ6ôlÝ´©yûæÍU;·n-ܽm[ÆžíÛãvlÞ¡iÓ† €Šê÷ìØQz`×®ìÃ{÷&;p |×Ö­‘S&Mš¸yݺ@ MÛ6nlÛ»cGÉÝ»³€€ÂìÜÔÞÖv£±±ñ_oï M;¶l©jÈjˆj½zñbÒäI“n‚4ñ›¥‹y`hš?gÎŒ–––7ë×®]üþíÛ©‹-ºÕðuÞìÙ¾wïÖÆÐ4cÚ´… EÍÍÍ¿-Z³áÏÔÉ“nœ?/‹UÓþ]»b»:;@ÿ‡ú£ ¤§& `ðÁ]»Ü6=ièìè˜Ó€S0^"¡çºiÝ:×éS§&ƒÚÅí14‘š"HN{±=¾x WÐõIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/checkbox_unchecked.png0000644000076500000240000000023712613140041026477 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<3IDATÓch¬hüV04þÇÁR÷&¿ìA†÷&Ã¥>tüo@†:†á œaõùTÍßIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/checkbox_unchecked_hover.png0000644000076500000240000000023712613140041027702 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<3IDATÓc˜U1ëVXÁ0ë?.–z2ùm2|2.õ¹ã2üÜ1„¤ðø Whà C2XuEsÂIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/checkbox_unchecked_pressed.png0000644000076500000240000000050012613140041030215 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<ÒIDAT(Ï•’¿‚0ÆÛëÆÄ„Ä—Õw`râÁtèà  “þñŠP‹e€KŽ»¤ß¯×~ëº>3ÆJ¶>J¤OŶE…Sw*Š_Ð Éy¨œs¥µæ7)¯^ ,Ï»,{ !(_‡h}U]“6@H»¡í(œ>I"¾‹­ˆ¦ŒÐ9‡)D»b E€ïIrH  Z8™abûâI3!Ž=9gÿ=ÿAs#&À-ý¨©¾Ïµ1{º°5Ö:ÝÁGÿ~è.e³öIxè²õí}ÊÑbÇn.éˆIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/down_arrow.png0000644000076500000240000000025712613140041025063 0ustar philstaff00000000000000‰PNG  IHDR#“>SsBITUìFtEXtSoftwarewww.inkscape.org›î<CIDATcÈ[8ã: æÌbp’ëÚSsBITUìFtEXtSoftwarewww.inkscape.org›î<BIDAT×c¨_½æ Ö.aHVÚñèÄWÜt>\„á?Ck&ˆ³ïUÅ —qÁ†ã_ûrþ3€¹ÿRÕzgþ³³")îòET¥IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/frame.png0000644000076500000240000000037512613140041023775 0ustar philstaff00000000000000‰PNG  IHDRaakpF•pž(hmm}¶òAUwG÷`%¾øV¢9[À+èèèx¥±±Ñ¥5X ¾ÉÕ% ’†y[­V{&‹¿Û3vW² “Éô®N§ ööö®Ìy0–ø^’ ƒÁpÞh4FFGG™Vor÷ OK„¢×ë?4›ÍQ¿ßÏìöÎ¸Ùæ|šÛýNr ”ØGV«5Øààà®Zk´xƒ ×%B‘Ëå_Q¿ŒÏçc&“9dïñ–I„"“ÉZÆÆÆ…`\.×¶FoQ¦6.K ¤®®®P«Õ&&&R0Ô7ÃÃÃL«3 õöK$B©¯¯ÿ+±J0ããã)˜‘‘ÖÙÙ¹¬3uþ31»S$ t‰UH(JÁPߢ˜J­sôûb7$RRRrZîD",³`0ȸ¨ÔÌfË´ÉæªÈ{JMMÍ›}}}‹SSS.‚q»ÝI¥Z¯ -_ÉkJKKK1Ap.‚¡¾‚ô~{ï𼡳X,#±XŒE£Q699ÉöJÀëõ2‡Ã±¡Ò›ÆcÛEy ’¶Ø5™™™IÁPßì•Áx<¦T©]ÎÁЯy ‚U9 õúâñx fzz:Ã%@0Ô78Þ0¬`\k´ÿÃóÚÑ@(MMM¿ÌÏÏ3Êììlf?£ ö¡ÝÖ¶vóàØÜµ¼Áª<…É/--e`¨Ü“@?Óju!húnÞ€P Åí••F0 lnnŽ&‚¡ "H(ÚÔ d½(/@JKKÏ¡lB«««lyy9Ã%@0\Ã%@0Ø ‚ö¡N×èÍS¡h4šû›››lmm-³¸¸È¸3õ Y "XQª5Á™Ó©ªªº€•HÌúú:£Rã0ÙH€`œN'“+Úìnoä§S¡ eâM$lkk+“†Kdž§ÒiÁö&ö͉ƒPpYQ¹»»Ëvvv20Ô7†K€`¸ø³PÔ7ARà±úÒ‰ƒÔÖÖ~B“ç0ÛÛÛlccƒí•À£Ž5ZgJ¥2`¶»?QÚé1‰P’Éd F(‚ÉFC}C0Á¦L¡úw,ºùõ‰€Pp}TÇA8 õ ‡9Ѝozzz˜L®pv¹ý×OwÇWhòB ‡Mx¬9èÙF(²êZUú?C³É‹9)++{}Ø r˜²=ÖPß ª¬¹EfôŒN_ÊiXØ'ûÁEB£ •šJ¥ CÓ·š„ÒÕÕ¥9D(‚9Ž· ‰Æf¹l4¼rQt\€—rÑ„Çêš¼Íf[Æïqráu‡£½½ÝŽ•°AËÖ¶¶63^P™š››•÷îÝoªøëA¡¨ Eû5ü~Ù+üûÛ˜|—Vl°ÕX[(­ß"äòò"òò<ò\:ôÝc¢‚”——¿Cÿn6 ¬FuÅ{ *Ò§\EÞGžÉvlQAÐðç Ñ…GÁp9Á?/Gýß|‰¼Šœù¿c‹ BAIø36ŽÚ7ÀFÅ*Ÿ—Ž3®è °Š}?ô5o@J?#ï!w\ÑA `ÅÞ¦îîîáû2åcäi±ÆMûC`÷ÞD#»pvº%¸¼%ö¸¢ƒ S{ væ \¯~‘.ñ©Sì1s‚›•«XkuuõËôÿ< ñR˜ ˆœ€@ÁOÒó ÿŒÉ¿œ§M+W”ÿ r,±LÉÁ©IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/pushbutton.png0000644000076500000240000000102512613140041025107 0ustar philstaff00000000000000‰PNG  IHDR0Ö:ŽsBIT|dˆtEXtSoftwarewww.inkscape.org›î<§IDATHÇÕ—¿ŽRAÆ¿fÿh$\Ín®Æìjìl(hÄ팕‚!¾€¥7±£Ó'0ò$·pílp*-Hn@®˜s> XC|‚;_7ÝùåwÎÉCY–cÞcž¨ê-T7´ÖNUõ€7½^O\–e÷1_†k·Ûë4M—€÷>L&¯I>ðÂdY6h6›Ï:ÎçœpD²Ê ¥÷þ`0ÜðÜYk;­V µš5"!T<ççg«$IŠ<ÏŸ:kmrà\6›šªV¾ø«Ôë78›Ín; ª"šPUë¶BBˆ `7§fg€U¨Hløg€¢À>Ihˆ„X ¢!.èžl hˆ@ÿo¡È l—ÿU ‰t¨º” N7âÙBÅŸª:w¢úyúÝ?>­ES}>_.~/¯—eyéH¾ütqqyr39}pïîòÚñqeûH•&Ÿ/¿M}ä—~¿ÿÁì>4mcÌ{’#° !|F¯†Ãá/³ûw»Ý“¢(Òõz]«èàr<ÿôÞ¯¬H®þžÅMa¾vìIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/pushbutton_hover.png0000644000076500000240000000101512613140041026311 0ustar philstaff00000000000000‰PNG  IHDR0Ö:ŽsBIT|dˆtEXtSoftwarewww.inkscape.org›î<ŸIDATHÇÕWÍJÃ@ÜMÖZ*ýÁŸF…Z)ˆô L=©'Á^|”Jñ˜(æPz²—*^¥·ª‡ØTHLbò­ßÒØö²öËifgv)眴Z­¥ô×1¬’ä‚+Šò†oqÝl6#†äw‘øs>Ÿgº®š¦9 @†Ã¡Öëõ®ðàp<§(À¨T*§õz}ÄøsY¸’`x(bÉ0Œ-ÜŸ1JÉQ­V㌩*@"ùˆ$åòŽ_(\Û¶O/¤ÓéŸ(!ˆ$Èå²Ü²¬M6kD”ƒ4ü‘0!Xf…ýOÄ™ø P6S#>.‘±Ÿ¿ðƒÈ¡Sþ\dJ6þd^bŒ—9B’–x!A¤íÀ´Æ’E(v/rN†ªJU©"ä8®HÌ·pài4z?,mÄ_âf°¾Æ){2Éxž×gHúâÑ4ûÅâÆZuÏYÉdÂ䯍eSƒ—×,ò´Ûí{?htŒÒî«ð‹‘0Mó²Óé|ÒÅØ4u×uµ Ôd:Ày·ÛýÀ÷€££ÿ-j÷ę̂IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/pushbutton_pressed.png0000644000076500000240000000100112613140041026626 0ustar philstaff00000000000000‰PNG  IHDR0Ö:ŽsBIT|dˆtEXtSoftwarewww.inkscape.org›î<“IDATHÇÕ—ÍjZQ…×ö¼ÞÛúcH )8í¤ƒÚR:É(b¼@†9Й³ä JûT œ¡RÐJ¡ÄãÕ£¸W¹J}ƒ{ìùÚ¬õmÎ’°Ö¾‘Þ’|†âŠ%‘ŸJÞ¸n6›c­­ ÐO“Š©Ÿgq\ž×>ðo6«ý¾p à\¬µ_Ò¤òáýëÓqE’(²&Ó¿É×ïý€3àMýä8‹¢ˆ$EIAÁ8xþÔ?J“lž-Þ’O’¤2Þ(EU(M*¼›¹#J`£*E¯ÎTµd¶W!-KL7”@Hþ·Vw 0´r¯f×§ rœ®>L€ Ú&_!šóþ‡´Àÿ ̽÷‘ÀÊ{¨ê]ID¾ý™N%…@3s®œ-ér¹ì’ιÞ`0¨ÖjµyÇ›â‚KqΕG£ÑcUýÑjµ>Iþ¡y%"·$_Оõz½þÜét.Ûíödï×h4ªY–®V«¨  °Û펇áàIú{U:!䟠ŠIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/radiobutton_checked.png0000644000076500000240000000054312613140041026700 0ustar philstaff00000000000000‰PNG  IHDR E5N{PLTEÿÿÿ‹‹‹‹‹‹ŽŽŽ÷÷÷ôóóðððòññìììíííïííëèèÞÞÞÜÜÜãáááÝÝßÚÚÞÙÙÃÃÃÚÔÔÂÂÂÔÏÏÒËËÐÈÈ   ÉÂÂû»Á··Á¸¸Á··ŒŒŒÁ¸¸ŒŒŒÂ¸¸Â¹¹ÃººÕO})tRNS3‡Ÿ¦ÈÊËËÌÌÍÑÒÓÕØÚÚÛÝÞÞßâäæçìðòõö÷ùùúúúý>+ønIDAT[]ŽAÁ0·I3¢¥¡¤‚ Eñÿ:ô¢æ¾³#I¦lmi$I…Í]ã›.ÛB’íkêÞJ&WLTÙÈ%`µYÉ)ØÞ†ëBÔèáòþ<àGŧûkØCˆr ‡ónÚÍó¿¿–ßÎ/¿ Æ©£TøIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/radiobutton_checked_hover.png0000644000076500000240000000102412613140041030076 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<¦IDAT(S}RËNÂP4ò/ƘøWºÕ¸qåÒŸÐDkð¥”G€†(š¶*ÏL€XÑi\œ!bjb\œœžsgzÎ̽s“Édn‚ ,"¶qDõ;³^ôãfàbá„C![ŒFo²ÜŽK’szrrutxh|Ÿü¤AhI±Ø£šÏ¿™†1hÖëÝ+ËrË¥Ò8“Nß„‚Á20ëSËœ@BY×_\×µ=Ï3g1|~n\_^”lÖ±@ˆ¬—ÍX^Á’™ ±f ñ ç]ôu„8‡®ã|ññšÅsˆŸ–MTÜ1D·±_ƒ¸õ;÷€XÿÿíýD 2©NÞIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/radiobutton_unchecked.png0000644000076500000240000000036012613140041027240 0ustar philstaff00000000000000‰PNG  IHDR E5N¢(FÇO¸æVóÂÊ[åå=Ÿó~Ïñ?㇂ðIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/radiobutton_unchecked_hover.png0000644000076500000240000000075412613140041030452 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<~IDAT(S}’ËNÂ`…‰¼‹!&¾•n%nX¹ä%4Ñ,…R®ÊUÓäÖ&°h©¢[–x¦¡¤Ââ¤íßóufÎÔ·^¯}®† @a(u6Wzx}®Ù!ƒ‹Fu>‘eÒéIJŒ‡X¬u‰È›÷~/t~Ë0!™üJ¥E–-­×›µTÕlÔjËB>?Œ²lž 8¦ 4êõ/Ó4õÕj¥¸²‹þk³i‰Å¢°B~‚ÂÔU°LSó®>m»¯Ê²-ð|­^”Jòü­]€+CÓæ¨&s,{MP'›ÉLi†}Ðd<žVËåî=ÇeJHi@CïƒF†1“DñÐ¥3Ó#b¥”hè]À÷rÙë¶Ûf.Σ½“†S(VJ‰†þ t}^¯VU|\€÷h»'ÚÅJ)éýþü3 ÑU ðñxžÓ?w†Ã2b-? /Ij—D±†–r¨@À <[ÈûïÑ`¸ÁÀ9è ÷!œz}¿¢Nü¾%$ÎIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/radiobutton_unchecked_pressed.png0000644000076500000240000000105412613140041030766 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<¾IDAT(S]’;KA…g7›"L:16&ˆøÄÆBì ÑBÁBAí²[FÁX vÚh)úí;ƒ$&»$&ÙGvfi+d˜ÇÄIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/spinup.png0000644000076500000240000000043312613140041024214 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<­IDAT(ÏAJÄ@EßOþ¸ÈNtçqÔk¨xïlïá*‚+Ï#CFHºÛr!ÙOúAAý‚GQ¥a¾º®»áŸ[¿åˆmD¬ëzL)½ö}ÿæƒÝ==>$ÎC˲\NÓÇË8Ž4H*9sn¹mïïn—ƒýlASrf'aû•œöʨQk¡šÍ`@¥¤ 70u7C¨FŽŒP®xžçÓÕûôù½×O?×õ‹jf41íYIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/spinup_hover.png0000644000076500000240000000042512613140041025420 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<§IDAT(ÏA Â@ Eÿ³Ýy½†=@Áx‡v#xAp]מGÇÕ´˜¸Ù·}HŸÿ6MóŒ1nñÇIzéËì^Vð¾ïÓ0 纮/¢ª±ªÆÁœóªë§¶mÐÌ0¶TÕöû]VÕ£ n†)ÒEd)$höÅTB !¦;— HÚ±B`¦3 ˜y³Ã!$ésc§ôY_o÷×Tí;¥ÍÚf°ÉeóaIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/spinup_off.png0000644000076500000240000000042212613140041025044 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<¤IDAT(Ï!Â@EÿL&+†^ ÈžŠ p<ÇAt5X…BP0Mwg…„Ô°ÛçþO~^ò©mÛ‹sn‹ÿ˜™©ª¾TõÜ4ÍI˜y±¯kE”RZ…ŽÞ{“±ˆ(@«j×w×çApŠ 1&r£9æ˜i ‚û&!Œ2ÍÝoˆq`óÌÓëótŽÏasÌÍ4›A†¤ëÛ½{”n£êæ ›bU-ão¢IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/spinup_pressed.png0000644000076500000240000000042512613140041025742 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<§IDAT(Ï¥Ž1 ÂPDßd? v¢7lì,,=¹GHìïc¡‚•x ±I$É_ µ7ñÁÂlñ˜Qže‡~¿7á ü›Gzÿî^7Í£®›Ý:M÷ÁÌ«å¢â7TUõðr½m¶yN"¡èίgÁâ|6}šY@ItÚ¡Äͬø4·E’AÒE ÅHGYÝš'éÙ¨éâ:„¢,GÇÓùÞÖ-Šbü`Ò`ÅT¥»[IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/up_arrow.png0000644000076500000240000000030512613140041024532 0ustar philstaff00000000000000‰PNG  IHDR¾Dê9PLTEÿÿÿn]]n\\QDD #YJJ4,,^OO$G<u>|`„@Ín(IDATÁ‡ Ã0§eoøÿX$€˜³ _÷}˜ÙÚIÒû ··MäÇêIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/images/up_arrow_disabled.png0000644000076500000240000000025412613140041026364 0ustar philstaff00000000000000‰PNG  IHDR#“>SsBITUìFtEXtSoftwarewww.inkscape.org›î<@IDAT×cøÏ‚ë“•@4˜3%êÁ®U} Œ`nÁ•-v=ÚÕä† ^â<ÚufC’C]÷®0Ø8e'n=]IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/stylesheet/mainwindow.ui0000644000076500000240000002456512613140041023452 0ustar philstaff00000000000000 MainWindow 0 0 400 413 Style Sheet 9 6 QFrame::StyledPanel QFrame::Raised 9 6 Please read the LICENSE file before checking I accept the terms and &conditions Profession: Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing professionList &Name: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter nameCombo Check this if you are male &Male &Password: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter passwordEdit Specify country of origin Specify country of origin 6 Egypt France Germany India Italy Norway Pakistan &Age: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter ageSpinBox Country: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter countryCombo Gender: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Specify your password Specify your password Password QLineEdit::Password Check this if you are female &Female Specify your age Specify your age 12 22 Specify your name true Qt::Horizontal 40 20 Qt::Horizontal 61 20 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok Select your profession Specify your name here Specify your name here 0 Developer Student Fisherman 0 0 400 29 &File &Help &Exit About Qt Edit &Style... About PyQt-gpl-5.5.1/examples/widgets/stylesheet/qss/0000755000076500000240000000000012613140041021531 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/stylesheet/qss/coffee.qss0000644000076500000240000000430712613140041023514 0ustar philstaff00000000000000.QWidget { background-color: beige; } /* Nice Windows-XP-style password character. */ QLineEdit[echoMode="2"] { lineedit-password-character: 9679; } /* We provide a min-width and min-height for push buttons so that they look elegant regardless of the width of the text. */ QPushButton { background-color: palegoldenrod; border-width: 2px; border-color: darkkhaki; border-style: solid; border-radius: 5; padding: 3px; min-width: 9ex; min-height: 2.5ex; } QPushButton:hover { background-color: khaki; } /* Increase the padding, so the text is shifted when the button is pressed. */ QPushButton:pressed { padding-left: 5px; padding-top: 5px; background-color: #d0d67c; } QLabel, QAbstractButton { font: bold; } /* Mark mandatory fields with a brownish color. */ .mandatory { color: brown; } /* Bold text on status bar looks awful. */ QStatusBar QLabel { font: normal; } QStatusBar::item { border-width: 1; border-color: darkkhaki; border-style: solid; border-radius: 2; } QComboBox, QLineEdit, QSpinBox, QTextEdit, QListView { background-color: cornsilk; selection-color: #0a214c; selection-background-color: #C19A6B; } QListView { show-decoration-selected: 1; } QListView::item:hover { background-color: wheat; } /* We reserve 1 pixel space in padding. When we get the focus, we kill the padding and enlarge the border. This makes the items glow. */ QLineEdit, QFrame { border-width: 2px; padding: 1px; border-style: solid; border-color: darkkhaki; border-radius: 5px; } /* As mentioned above, eliminate the padding and increase the border. */ QLineEdit:focus, QFrame:focus { border-width: 3px; padding: 0px; } /* A QLabel is a QFrame ... */ QLabel { border: none; padding: 0; background: none; } /* A QToolTip is a QLabel ... */ QToolTip { border: 2px solid darkkhaki; padding: 5px; border-radius: 3px; opacity: 200; } /* Nice to have the background color change when hovered. */ QRadioButton:hover, QCheckBox:hover { background-color: wheat; } /* Force the dialog's buttons to follow the Windows guidelines. */ QDialogButtonBox { button-layout: 0; } PyQt-gpl-5.5.1/examples/widgets/stylesheet/qss/default.qss0000644000076500000240000000002712613140041023704 0ustar philstaff00000000000000/* empty stylesheet */ PyQt-gpl-5.5.1/examples/widgets/stylesheet/qss/pagefold.qss0000644000076500000240000001517112613140041024047 0ustar philstaff00000000000000/* Customize any plain widget that is a child of a QMainWindow. */ QMainWindow > .QWidget { background-color: gainsboro; background-image: url(:/images/pagefold.png); background-position: top right; background-repeat: no-repeat } /* Provide a padding for the layout inside the frame. The frame exists only to provide a padding for the top-right image, so we explicitly disable the border. */ #mainFrame { padding-right: 30px; border-style: none; border-image: none; /* since we set a border-image below */ } /* mainFrame won't have this border-image since we have explicitly set it to 'none' using a more specific selector. */ QFrame, QLineEdit, QComboBox[editable="true"], QSpinBox { border-image: url(:/images/frame.png) 4; border-width: 3; } QLabel { border: none; border-image: none; padding: 0; background: none; } /* Make text in message boxes selectable. */ QMessageBox { /* LinksAccessibleByMouse | TextSelectableByMouse */ messagebox-text-interaction-flags: 5; } /* Set the selection colors for all widgets. */ QWidget { selection-color: black; selection-background-color: Silver; color: black; } /* Make the entire row selected in item views. */ QAbstractItemView { show-decoration-selected: 1; } /* Nice WindowsXP-style password character for password line edits. */ QLineEdit[echoMode="2"] { lineedit-password-character: 9679; } /* Customize tooltips. */ QToolTip { background-color: rgb(200,200,255); border-color: darkslategray; border-width: 1px; border-style: solid; padding: 3px; font: bold; border-radius: 3px; opacity: 200; } /* Customize radio buttons. */ QRadioButton { spacing: 5px; } QRadioButton::indicator { width: 13px; height: 13px; } QRadioButton::indicator::unchecked { image: url(:/images/radiobutton_unchecked.png); } QRadioButton::indicator:unchecked:hover { image: url(:/images/radiobutton_unchecked_hover.png); } QRadioButton::indicator:unchecked:pressed { image: url(:/images/radiobutton_unchecked_pressed.png); } QRadioButton::indicator::checked { image: url(:/images/radiobutton_checked.png); } QRadioButton::indicator:checked:hover { image: url(:/images/radiobutton_checked_hover.png); } QRadioButton::indicator:checked:pressed { image: url(:/images/radiobutton_checked_pressed.png); } /* Customize arrows. */ *::down-arrow, *::menu-indicator { image: url(:/images/down_arrow.png); width: 7px; height: 7px; } *::down-arrow:disabled, *::down-arrow:off { image: url(:/images/down_arrow_disabled.png); } *::up-arrow { image: url(:/images/up_arrow.png); width: 7px; height: 7px; } *::up-arrow:disabled, *::up-arrow:off { image: url(:/images/up_arrow_disabled.png); } /* Customize push buttons and comboboxes. Our read-only combobox is very similar to a push button, so they share the same border image. */ QPushButton { min-width: 4em; } QPushButton, QComboBox[editable="false"], QComboBox[editable="true"]::drop-down { border-image: url(:/images/pushbutton.png) 5; border-width: 5; } QPushButton:hover, QComboBox[editable="false"]:hover, QComboBox[editable="true"]::drop-down:hover, QMenuBar::item:hover { border-image: url(:/images/pushbutton_hover.png) 5; border-width: 5; } QPushButton:pressed, QComboBox[editable="false"]:on, QComboBox[editable="true"]::drop-down:on, QMenuBar::item:on { border-image: url(:/images/pushbutton_pressed.png) 5; border-width: 5; } /* Customize read-only comboboxes. */ QComboBox[editable="false"] { padding-left: 3px; padding-right: 20px; /* space for the arrow */ } QComboBox[editable="false"]::drop-down { subcontrol-origin: padding; subcontrol-position: top right; width: 15px; border-left-style: solid; border-left-color: darkgray; border-left-width: 1px; } QComboBox[editable="false"]::down-arrow { subcontrol-origin: content; subcontrol-position: center; position: relative; left: 1px; /* 1 pixel dropdown border */ } /* The combobox arrow is on when the popup is open. */ QComboBox[editable="false"]::down-arrow:on { position: relative; top: 1px; left: 2px; } /* Customize editable comboboxes. */ QComboBox[editable="true"] { padding-right: 16px; } QComboBox[editable="true"]::drop-down { subcontrol-origin: border; subcontrol-position: top right; width: 13px; position: absolute; top: 2px; bottom: 2px; right: 2px; } QComboBox[editable="true"]::drop-down, QComboBox[editable="true"]::drop-down:hover, QComboBox[editable="true"]::drop-down:on { border-width: 0px; border-left-width: 3px; /* we need only left and center part */ } /* Shift the arrow when it's open. */ QComboBox[editable="true"]::down-arrow:on { position: relative; top: 1px; left: 1px; } /* Customize check boxes. */ QCheckBox { spacing: 5px; } QCheckBox::indicator { width: 13px; height: 13px; } QCheckBox::indicator:unchecked { image: url(:/images/checkbox_unchecked.png); } QCheckBox::indicator:unchecked:hover { image: url(:/images/checkbox_unchecked_hover.png); } QCheckBox::indicator:unchecked:pressed { image: url(:/images/checkbox_unchecked_pressed.png); } QCheckBox::indicator:checked { image: url(:/images/checkbox_checked.png); } QCheckBox::indicator:checked:hover { image: url(:/images/checkbox_checked_hover.png); } QCheckBox::indicator:checked:pressed { image: url(:/images/checkbox_checked_pressed.png); } /* Customize the size grip. */ QSizeGrip { image: url(:/images/sizegrip.png); width: 16px; height: 16px; } /* Customize the menu bar. */ QMenuBar { border-image: none; border-style: none; border-width: 1px; border-bottom-style: solid; border-bottom-color: darkslategray; padding: 2px; } /* Customize spin boxes. */ QSpinBox { padding-right: 15px; } QSpinBox::up-button { subcontrol-origin: border; subcontrol-position: top right; width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */ border-image: url(:/images/spinup.png) 1; border-width: 1px; } QSpinBox::up-button:hover { border-image: url(:/images/spinup_hover.png) 1; } QSpinBox::up-button:pressed { border-image: url(:/images/spinup_pressed.png) 1; } QSpinBox::down-button { subcontrol-origin: border; subcontrol-position: bottom right; width: 16px; border-image: url(:/images/spindown.png) 1; border-width: 1px; border-top-width: 0; } QSpinBox::down-button:hover { border-image: url(:/images/spindown_hover.png) 1; } QSpinBox::down-button:pressed { border-image: url(:/images/spindown_pressed.png) 1; } PyQt-gpl-5.5.1/examples/widgets/stylesheet/stylesheet.py0000755000076500000240000000673512613140041023504 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QMessageBox import stylesheet_rc from ui_mainwindow import Ui_MainWindow from stylesheeteditor import StyleSheetEditor class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.nameLabel.setProperty('class', 'mandatory QLabel') self.styleSheetEditor = StyleSheetEditor(self) self.statusBar().addWidget(QLabel("Ready")) self.ui.exitAction.triggered.connect(QApplication.instance().quit) self.ui.aboutQtAction.triggered.connect(QApplication.instance().aboutQt) def on_editStyleAction_triggered(self): self.styleSheetEditor.show() self.styleSheetEditor.activateWindow() def on_aboutAction_triggered(self): QMessageBox.about(self, "About Style sheet", "The Style Sheet example shows how widgets can be " "styled using " "
      Qt " "Style Sheets. Click File|Edit Style Sheet to pop " "up the style editor, and either choose an existing style " "sheet or design your own.") if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/stylesheet/stylesheet.qrc0000644000076500000240000000274312613140041023631 0ustar philstaff00000000000000 qss/coffee.qss qss/default.qss qss/pagefold.qss images/pagefold.png images/frame.png images/radiobutton_unchecked.png images/radiobutton_unchecked_pressed.png images/radiobutton_unchecked_hover.png images/radiobutton_checked.png images/radiobutton_checked_pressed.png images/radiobutton_checked_hover.png images/pushbutton.png images/pushbutton_hover.png images/pushbutton_pressed.png images/checkbox_unchecked.png images/checkbox_unchecked_pressed.png images/checkbox_unchecked_hover.png images/checkbox_checked.png images/checkbox_checked_pressed.png images/checkbox_checked_hover.png images/down_arrow.png images/down_arrow_disabled.png images/up_arrow.png images/up_arrow_disabled.png images/sizegrip.png images/spinup.png images/spinup_off.png images/spinup_hover.png images/spinup_pressed.png images/spindown.png images/spindown_off.png images/spindown_hover.png images/spindown_pressed.png PyQt-gpl-5.5.1/examples/widgets/stylesheet/stylesheet_rc.py0000644000076500000240000021151412613140041024156 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 13:03:40 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x02\x01\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x13\x08\x06\x00\x00\x00\xd6\x3a\x8e\x1f\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x93\x49\x44\x41\x54\x48\xc7\xd5\ \x97\xcd\x6a\x5a\x51\x14\x85\xd7\xf6\x1e\xbc\xde\xdb\x0e\xfa\x63\ \x48\x0c\x29\x38\xed\x13\xa4\x83\x0e\xda\x52\x3a\xc9\x28\x8f\x62\ \x90\xbc\x40\x86\x39\xd0\x99\xb3\xe4\x09\x4a\xfb\x00\x0e\x04\x07\ \x1d\x54\x0a\x15\x9c\x16\xa1\x52\xd0\x4a\xa1\xc4\xe3\xd5\xa3\xb8\ \x57\x06\xb9\x4a\x7d\x83\x7b\x16\xec\xf9\xda\xac\xf5\x6d\xce\x11\ \x92\xb0\xd6\xbe\x10\x91\x8f\x00\xde\x92\x7c\x86\xe2\x8a\x25\x91\ \x9f\x4a\xde\x00\xb8\x6e\x36\x9b\x1b\x63\xad\xad\x0b\xd0\x4f\x93\ \x8a\xa9\x9f\x1c\x67\x71\x5c\x9e\x14\xd7\x3e\xf0\x6f\x36\xab\x0e\ \x7f\xfd\xbe\x02\x70\x0a\xe0\x5c\xac\xb5\x5f\xd2\xa4\xf2\xe1\xfd\ \xeb\xd3\x71\x14\x45\x04\x00\x92\x28\xb2\x26\xd3\xbf\xc9\xd7\xef\ \xfd\x1a\x80\x33\x03\xe0\x4d\xfd\xe4\x38\x8b\xa2\x88\x24\x45\x49\ \x41\xc1\x17\x38\x78\xfe\xd4\x3f\x4a\x93\x6c\x9e\x2d\xde\x19\x92\ \x4f\x92\xa4\x32\xde\x28\x45\x55\x05\x81\x28\x4d\x2a\xbc\x9b\xb9\ \x23\x03\x00\x4a\x60\xa3\x2a\x45\xaf\xce\x1e\x0e\x04\x54\xb5\x64\ \xb6\x9d\x57\x12\x21\x2d\x90\x4b\x4c\x0e\x37\x94\x40\x48\xfe\xb7\ \x56\x77\x09\x30\xb4\x04\x72\xaf\x66\xd7\xa7\xa0\x13\x00\x72\x06\ \x10\x9c\x1e\xae\x90\x3e\x4c\x80\x0d\xda\x26\x90\x5f\x21\x04\x9a\ \x00\xf3\xfe\x87\xb4\xc0\xff\x0c\xcc\xbd\xf7\x91\x06\x06\xc0\xca\ \x7b\xa8\xea\x5d\x49\x44\xbe\xfd\x99\x4e\x13\x25\x85\x40\x10\x33\ \x73\xae\x9c\x2d\x16\xe9\x72\xb9\xec\x19\x92\x17\xce\xb9\xde\x60\ \x30\xa8\xd6\x6a\xb5\x79\x1c\xc7\x9b\xe2\x82\x4b\x71\xce\x95\x47\ \xa3\xd1\x63\x55\xfd\xd1\x6a\xb5\x3e\x49\xfe\xa1\x79\x25\x22\xb7\ \x24\x5f\x06\xd0\x9e\xf5\x7a\xbd\xfe\xdc\xe9\x74\x2e\xdb\xed\xf6\ \x64\xef\x01\xd7\x68\x34\xaa\x59\x96\x1d\xae\x56\xab\xa8\xa0\x09\ \xb0\xdb\xed\x8e\x87\xc3\xa1\x07\xe0\x49\xfa\x7b\x55\x3a\x21\x14\ \xe4\x9f\xa0\x8a\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x00\xfd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x61\x00\x00\x00\x15\x08\x03\x00\x00\x00\x61\x6b\x70\x46\ \x00\x00\x00\x3c\x50\x4c\x54\x45\xf7\xf7\xf7\xb0\xb0\xb0\xff\xff\ \xff\x8b\x8b\x8b\x8c\x8c\x8c\x9d\x9d\x9d\xae\xae\xae\x8b\x8b\x8b\ \x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xde\ \xde\xde\x97\x97\x97\x8b\x8b\x8b\xdf\xdf\xdf\x8b\x8b\x8b\x8b\x8b\ \x8b\x8b\x8b\x8b\x51\x5f\xc0\xbc\x00\x00\x00\x13\x74\x52\x4e\x53\ \xca\xea\x00\xf4\xfd\xf3\xeb\x52\x9d\xd6\xfc\x1e\x20\xd4\xf6\x9c\ \xd4\xda\xfe\x7e\x17\x61\x47\x00\x00\x00\x5d\x49\x44\x41\x54\x78\ \x5e\xed\xd5\xc7\x01\xc0\x20\x14\x02\x50\xfc\xcd\x6e\x8a\xfb\xef\ \x9a\x63\x26\xe0\xe6\x5b\x80\x13\x00\x91\x51\x6a\xdb\x0c\xad\x96\ \x21\x02\xc9\x6a\x1e\x89\x21\xdc\x34\x0b\xba\xae\x09\x96\xb9\xb4\ \xe3\xb2\x1b\x3c\xb7\x5d\x78\x1c\x4c\xfe\xe0\x0d\x30\xc5\x8b\x9d\ \xc0\x94\xf6\x49\xf8\x9d\x84\x93\xc0\xef\x34\x7f\x97\xf8\xdb\xca\ \xff\x07\xfe\xc7\xf1\x7f\xfa\x03\x24\xa3\x11\xb1\xa1\x0a\xfe\x19\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x9f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x33\x49\x44\x41\x54\x18\xd3\x63\x98\x55\ \x31\xeb\x07\x56\x58\xc1\x30\xeb\x3f\x2e\x08\x96\x7a\x32\xf9\x6d\ \x0f\x32\x7c\x32\x19\x2e\xf5\xb9\xe3\x7f\x03\x32\xfc\xdc\x31\x84\ \xa4\xf0\xf8\x0b\x57\x68\xe0\x0c\x43\x00\x32\x58\x02\x75\x45\x0f\ \x73\xc2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa6\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x31\x0e\x41\x51\x14\x44\xe7\x72\xa3\x7d\x91\x58\x1e\x6b\x60\ \x19\xba\xdf\x4a\x94\x2c\x41\xa5\xb0\x01\x85\xc4\x3a\xf0\x55\x12\ \xfe\xdc\x3b\x0a\x11\x0d\xc5\x33\xe5\x24\x27\x33\x39\xd6\x34\xcd\ \xa5\x94\x72\xc5\x8f\x98\xd9\xd7\xbe\x6d\xdb\x91\x97\x52\xce\x93\ \xc9\xd8\x50\x99\xd5\x6a\x7d\xf2\xcc\x54\x90\xd5\xb0\x24\xb8\x94\ \x0a\x76\xb5\x2c\x20\xc1\x95\xca\x20\xfb\xd5\x2c\x04\x4f\x49\x41\ \xfe\xb1\x0c\xb8\x94\x19\x51\x7f\x5b\x78\xdd\xfe\x6b\x39\x23\xc2\ \x25\x65\x2d\x1c\x99\x46\xf2\xee\x92\xaa\x6c\x3f\xba\xae\xb7\x3f\ \x1c\x07\x64\xcc\x9d\xc1\xdb\x66\xbb\x1b\x1a\x0c\x30\xe8\xa5\xe2\ \xad\x04\x32\x40\xfa\xb0\x22\xa3\x25\xb9\x98\xce\x66\xcb\x27\x2a\ \x8d\x77\x7e\xf9\xf5\x91\x67\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x00\xc5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x03\x00\x00\x00\xbe\x44\x06\xea\ \x00\x00\x00\x39\x50\x4c\x54\x45\xff\xff\xff\x6e\x5d\x5d\x6e\x5c\ \x5c\x51\x44\x44\x14\x11\x11\x05\x04\x04\x03\x02\x02\x20\x1a\x1a\ \x00\x00\x00\x1a\x16\x16\x23\x1d\x1d\x1c\x17\x17\x59\x4a\x4a\x34\ \x2c\x2c\x5e\x4f\x4f\x24\x1e\x1e\x47\x3c\x3c\x47\x3c\x3c\x49\x3d\ \x3d\x21\xaf\x18\x83\x00\x00\x00\x13\x74\x52\x4e\x53\x00\xa2\x7e\ \x5d\x32\x39\x16\x23\x01\x46\x3e\x0f\x75\x3e\x7c\x19\x7f\x60\x84\ \x40\x08\xcd\x6e\x00\x00\x00\x28\x49\x44\x41\x54\x08\x1d\x05\xc1\ \x87\x01\x00\x20\x0c\xc3\x30\xa7\x65\x6f\xf8\xff\x58\x24\x80\x98\ \x00\x08\xb3\x16\x20\x5f\xf7\x06\x7d\x98\xd9\xda\x1c\x49\xd2\xfb\ \x0b\xb7\x00\xb7\x4d\xe4\xc7\xea\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x01\x1b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xad\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x41\x4a\xc4\x40\x10\x45\xdf\x4f\xfe\xb8\xc8\x4e\x74\xe7\x71\ \xd4\x6b\xa8\x17\x08\x78\x03\xef\x90\x6c\x04\xef\xe1\x2a\x82\x2b\ \xcf\x23\x43\x46\x48\xba\xdb\x72\x21\xd9\x4f\xfa\x41\x41\xfd\x82\ \x47\x51\xa5\x61\x18\xbe\xba\xae\xbb\xe1\x9f\x90\x14\x5b\xbf\xe5\ \x88\x6d\x44\xac\xeb\x7a\x4c\x29\xbd\xf6\x7d\xff\xe6\x83\xdd\x3d\ \x3d\x3e\x24\xce\x43\xcb\xb2\x5c\x4e\xd3\xc7\xcb\x38\x8e\x34\x48\ \x2a\x39\x73\x6e\xb9\x6d\x7f\xef\xef\x6e\x97\x83\xfd\x6c\x41\x53\ \x72\x66\x27\x61\xfb\xc2\x08\x95\x9c\xf6\xca\xa8\x51\x6b\xa1\x9a\ \xcd\x10\x60\x40\xa5\xa4\x0a\x37\x30\x75\x37\x43\x04\x16\xa8\x46\ \x8e\x08\x8c\x50\xae\x78\x18\x01\x9e\xe7\xd3\xd5\xfb\xf4\xf9\xbd\ \xd7\x9d\x4f\x3f\xd7\x7f\xf5\x8b\x6a\x66\x34\x31\xed\x59\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xf0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x03\x00\x00\x00\x45\x35\x14\x4e\ \x00\x00\x00\x3c\x50\x4c\x54\x45\xf7\xf7\xf7\xff\xff\xff\x90\x90\ \x90\x8b\x8b\x8b\x8e\x8e\x8e\x8b\x8b\x8b\xec\xec\xec\x90\x90\x90\ \xc3\xc3\xc3\xde\xde\xde\xf0\xf0\xf0\xa0\xa0\xa0\xed\xed\xed\x90\ \x90\x90\xc2\xc2\xc2\x8f\x8f\x8f\xdc\xdc\xdc\x90\x90\x90\x8c\x8c\ \x8c\x8c\x8c\x8c\x20\x9b\x87\x59\x00\x00\x00\x14\x74\x52\x4e\x53\ \xc8\x00\xf0\x33\x87\x04\xcc\x9f\xde\xd2\xcb\xe7\xcc\xda\xdf\xa6\ \xd3\xdd\xf9\xfa\x54\x29\x6f\x66\x00\x00\x00\x4f\x49\x44\x41\x54\ \x78\x5e\x55\x8e\x59\x0a\x80\x30\x10\x43\x93\x99\x69\xab\xdd\xb5\ \xf7\xbf\xab\x88\x58\x98\xf7\x17\x42\x16\x90\xd4\xd4\xee\x96\x94\ \x24\x18\x4c\x8e\x33\x9f\x87\x58\x20\x68\xa5\xe2\xa5\x16\x23\x54\ \x22\x3e\xa2\x28\x46\xc7\x4f\x1f\xb8\xe6\x56\xf3\xc2\xca\x5b\xe5\ \xe5\x3d\x9f\xf3\x9d\x7e\xcf\x7f\xf1\x3f\x1f\x07\x1b\x02\xe3\x87\ \x82\x10\xf0\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\xec\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x7e\x49\x44\x41\x54\x28\x53\x7d\ \x92\xcb\x4e\xc2\x60\x10\x85\x89\xbc\x8b\x21\x26\xbe\x95\x6e\x25\ \x6e\x58\xb9\xe4\x25\x34\xd1\x1a\x2c\x15\x85\x52\xae\x01\x1b\xca\ \x55\xd3\x16\xe4\xd6\x16\x90\x08\x26\xb0\x68\xa9\xa2\x5b\x96\x78\ \xa6\xa1\xa4\x1a\xc2\xe2\xa4\xed\xdf\xf3\x75\x66\xce\xd4\xb7\x5e\ \xaf\x7d\xae\x18\x86\x09\x40\x61\x28\x05\x75\x36\x57\x7a\x0e\x78\ \x7d\xae\xd9\x0f\x05\x21\x83\x8b\x46\x75\x3e\x91\x18\x65\xd2\xe9\ \x49\x4a\x10\x8c\x87\x58\xac\x75\x17\x89\xc8\x9b\xf7\x7e\x2f\x74\ \x7e\xcb\x30\x03\x21\x99\xfc\x90\x4a\xa5\x1f\x45\x96\x2d\xad\xd7\ \x9b\xb5\x54\xd5\x6c\xd4\x6a\xcb\x42\x3e\x3f\x8c\xb2\x6c\x03\x9e\ \xa0\x03\x01\x38\xa6\x0a\x04\x34\xea\xf5\x2f\xd3\x34\xf5\xd5\x6a\ \xa5\xb8\xb2\x17\x8b\xfe\x6b\xb3\x69\x89\xc5\xa2\x0e\xb0\x42\x7e\ \x82\xc2\xd4\x12\x55\xb0\x4c\x53\xf3\x02\xae\x3e\x6d\xbb\xaf\xca\ \xb2\x2d\xf0\x7c\x05\xad\x5e\x10\x94\x4a\xf2\xfc\x1b\x0e\xad\x5d\ \x80\x2b\x43\xd3\xe6\xa8\x26\x73\x2c\x7b\x4d\x50\x27\x9b\xc9\x4c\ \x69\x86\x7d\xd0\x64\x3c\x9e\x56\xcb\xe5\xee\x3d\xc7\x65\x9d\x4a\ \x48\x69\x40\x43\xef\x83\x46\x86\x31\x93\x44\xf1\x19\xd0\xa5\x33\ \xd3\x23\x62\xa5\x94\x68\xe8\x5d\xc0\xf7\x72\xd9\xeb\xb6\xdb\x66\ \x2e\x9d\xce\xa3\xbd\x90\x93\x1e\x86\x53\x28\x56\x4a\x89\x86\xfe\ \x0f\x0c\x74\x7d\x5e\xaf\x56\x55\x7c\x5c\x80\xf7\x68\xbb\x27\xda\ \x03\xc5\x4a\x29\xe9\xfd\xfe\xfc\x1d\x33\x0c\xd1\x12\x55\x00\xa0\ \xf0\xf1\x78\x12\x9e\xd3\x3f\x7f\x04\x16\x77\x86\xc3\x32\x62\x2d\ \x3f\x15\x0a\x2f\x15\x49\x6a\x97\x44\xb1\x86\x96\x72\xa8\x40\xc0\ \x09\x3c\x07\x5b\xc8\xfb\xef\xd1\x1e\x60\xb8\xc1\xc0\x39\xe8\x0a\ \xf7\x21\x9c\x1d\x7a\x7d\xbf\xa2\x4e\xfc\xbe\x25\x1e\x24\xce\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x81\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x10\x00\x00\x00\x10\x01\x03\x00\x00\x00\x25\x3d\x6d\x22\ \x00\x00\x00\x06\x50\x4c\x54\x45\x00\x00\x00\xae\xae\xae\x77\x6b\ \xd6\x2d\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\ \x00\x00\x29\x49\x44\x41\x54\x78\x5e\x05\xc0\xb1\x0d\x00\x20\x08\ \x04\xc0\xc3\x58\xd8\xfe\x0a\xcc\xc2\x70\x8c\x6d\x28\x0e\x97\x47\ \x68\x86\x55\x71\xda\x1d\x6f\x25\xba\xcd\xd8\xfd\x35\x0a\x04\x1b\ \xd6\xd9\x1a\x92\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x01\xa9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x3b\x49\x44\x41\x54\x28\x91\x63\ \x98\x35\x6b\x56\x05\x10\xff\x20\x01\x57\x30\x00\x89\xff\xa4\x62\ \xb8\xa6\xb5\xab\x56\x2d\xdd\xb8\x6e\xdd\xd4\xcd\x1b\x36\xf4\x6c\ \xdd\xb4\xa9\x79\xfb\xe6\xcd\x55\x3b\xb7\x6e\x2d\xdc\xbd\x6d\x5b\ \xc6\x9e\xed\xdb\xe3\x76\x6c\xde\x1c\x8f\xa1\x69\xd3\x86\x0d\x13\ \x80\x8a\xea\xf7\xec\xd8\x51\x7a\x60\xd7\xae\xec\xc3\x7b\xf7\x26\ \x1e\x3b\x70\x20\x7c\xd7\xd6\xad\x91\x53\x26\x4d\x9a\xb8\x79\xdd\ \xba\x40\x0c\x4d\xdb\x36\x6e\x6c\xdb\xbb\x63\x47\xc9\x81\xdd\xbb\ \xb3\x80\x1a\x12\x80\x1a\xc2\x0e\xec\xdc\x19\xd4\xde\xd6\x76\xa3\ \xb1\xb1\xf1\x7f\x5f\x6f\xef\x14\x0c\x4d\x3b\xb6\x6c\xa9\x01\x6a\ \xc8\x04\x6a\x88\x07\x6a\x08\xbd\x7a\xf1\x62\xd2\xe4\x49\x93\x6e\ \x82\x34\x00\xf1\x9b\xa5\x8b\x16\x79\x60\x68\x9a\x3f\x67\xce\x8c\ \x96\x96\x96\x37\xeb\xd7\xae\x5d\xfc\xfe\xed\xdb\xa9\x8b\x17\x2d\ \xba\x05\xd5\xf0\x75\xde\xec\xd9\xbe\x07\x77\xef\xd6\xc6\xd0\x34\ \x63\xda\xb4\x85\x20\x45\xcd\xcd\xcd\xbf\x17\x2d\x5a\x04\xb3\xe1\ \xcf\xd4\xc9\x93\x13\x6e\x9c\x3f\x2f\x8b\x55\xd3\xfe\x5d\xbb\x62\ \xbb\x3a\x3b\x8f\x40\x15\xff\x87\xfa\xa3\x0c\xa4\x01\xa7\x26\xa0\ \x60\xf0\xc1\x5d\xbb\xdc\x81\x36\x3d\x00\x69\xe8\xec\xe8\x98\x00\ \xd3\x80\x53\x13\x30\x5e\x22\x81\xa1\xe7\xba\x69\xdd\x3a\xd7\xe9\ \x53\xa7\x26\x02\x83\xda\x08\x19\x03\xc5\xed\x31\x34\x91\x9a\x22\ \x48\x4e\x7b\x00\xb1\x3d\xbe\x78\xa0\x57\xd0\xf5\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x9f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x33\x49\x44\x41\x54\x18\xd3\x63\x68\xac\ \x68\xfc\x81\x15\x56\x30\x34\xfe\xc7\x05\xc1\x52\xf7\x26\xbf\xec\ \x41\x86\xf7\x26\xc3\xa5\x3e\x74\xfc\x6f\x40\x86\x1f\x3a\x86\x90\ \x14\x1e\x7f\xe1\x0a\x0d\x9c\x61\x08\x00\xf5\x8f\xf9\x54\xcd\x1d\ \xdf\x00\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x12\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa4\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x21\x0e\xc2\x40\x10\x45\xff\x4c\x26\x2b\x10\x90\x10\x04\x86\ \x5e\xa0\xc8\x9e\x8a\x0b\x70\x10\x3c\xc7\x41\x74\x35\x07\x58\x85\ \x42\x50\x30\x4d\x77\x67\x10\x85\x84\xd4\xb0\xdb\xe7\xfe\x4f\x7e\ \x5e\xf2\xa9\x6d\xdb\x8b\x73\x6e\x8b\xff\x98\x99\xa9\xaa\xbe\x54\ \xf5\xdc\x34\xcd\x49\x98\x79\xb1\xaf\x6b\x45\x1e\x94\x52\x5a\x85\ \x10\x8e\xde\x7b\x93\xb1\x88\x28\x40\xab\x6a\xd7\x77\xd7\xe7\x41\ \x00\x70\x8a\x03\x0a\x31\x26\x72\xa3\x39\xe6\x98\x69\x09\x82\xfb\ \x26\x11\x21\x01\x8c\x32\xcd\xdd\x6f\x88\x71\x60\x81\x81\xf3\xcc\ \xd3\xeb\x81\x12\xf3\x74\x8e\xcf\x61\x73\xcc\x06\x81\xcd\x34\x9b\ \x41\x86\xa4\xeb\xdb\xbd\x7b\x94\x6e\xa3\xea\xe6\x0d\x9b\x62\x55\ \x2d\xe3\x08\x6f\xa2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x02\x0d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x13\x08\x06\x00\x00\x00\xd6\x3a\x8e\x1f\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x9f\x49\x44\x41\x54\x48\xc7\xd5\ \x57\xcd\x4a\xc3\x40\x18\xdc\x4d\xd6\x5a\x2a\xfd\xc1\x9f\x46\x85\ \x5a\x29\x88\xf4\x09\x4c\x3d\xa9\x27\xc1\x5e\x7c\x94\x4a\xf1\x05\ \x3c\x5a\xf0\xd6\x9b\x3e\x81\x98\x07\x28\xe6\x50\x7a\xb2\x97\x2a\ \x5e\xa5\xb7\xaa\x87\xd8\x54\x48\x4c\x62\xf2\xad\xdf\xd2\xd8\xf6\ \x11\xb2\x13\x16\xf6\xcb\x69\x66\x67\x06\x76\x29\xe7\x9c\xb4\x5a\ \xad\x12\xa5\xf4\x06\xd7\x31\x00\xac\x92\xe4\x82\x2b\x8a\xf2\x86\ \x1c\x6f\x71\x7f\xdd\x6c\x36\x23\x86\xe4\x77\x91\xf8\x73\x3e\x9f\ \x67\xba\xae\x07\x9a\xa6\x39\x09\x16\x40\x86\xc3\xa1\xd6\xeb\xf5\ \xae\xf0\xe0\x0f\x70\x3c\xa7\x28\xc0\xa8\x54\x2a\xa7\xf5\x7a\x7d\ \xc4\x10\xf8\x73\x59\xb8\x92\x60\x78\x28\x62\xc9\x30\x8c\x2d\xdc\ \x9f\x31\x4a\xc9\x51\xad\x56\xe3\x8c\xa9\x2a\x40\x14\x22\xf9\x88\ \x24\x1c\xe5\xf2\x8e\x5f\x28\x14\x5c\xdb\xb6\x4f\x18\x00\x2f\xa4\ \xd3\xe9\x9f\x28\x02\x21\x00\x88\x24\xc8\xe5\xb2\xdc\xb2\xac\x4d\ \x36\x6b\x07\x44\x94\x83\x34\xfc\x91\x30\x21\x58\x66\x85\xfd\x4f\ \x1c\xc4\x02\x99\xf8\x0b\x50\x36\x53\x23\x3e\x2e\x91\x03\xb1\x04\ \x16\x9f\xbf\xf0\x83\xc8\x15\xa1\x05\x01\x53\xfe\x5c\x64\x4a\x36\ \xfe\x64\x5e\x62\x8c\x10\x97\x39\x42\x92\x96\x78\x1e\x21\x41\x1e\ \xa4\xed\xc0\xb4\xc6\x92\x45\x28\x76\x00\x2f\x72\x4e\x18\x86\xaa\ \x4a\x55\xa9\x22\xe4\x38\xae\x48\xcc\xb7\x70\xe0\x69\x34\x7a\x3f\ \x2c\x6d\x17\xc3\x84\x5f\xe2\x66\xb0\xbe\xc6\x29\x7b\x32\xc9\x78\ \x9e\xd7\x67\x48\xfa\xe2\xd1\x34\xfb\xc5\xe2\xc6\x5a\x75\x7f\xcf\ \x59\xc9\x64\xc2\xe4\xc6\x1e\xa8\x65\x8d\x53\x83\x97\xd7\x2c\xf2\ \x1e\xb4\xdb\xed\x7b\x1a\x3f\x68\x74\x8c\xd2\x1d\xee\xab\x12\x18\ \xf0\x8b\x91\x7f\x30\x4d\xf3\xb2\xd3\xe9\x7c\xd2\xc5\xd8\x34\x1a\ \x8d\x75\xd7\x75\xb5\x20\x08\xd4\x64\x3a\xc0\x79\xb7\xdb\xfd\xc0\ \xf7\x80\x8f\xa3\x8f\xa3\xff\x07\x2d\x6a\xf7\xea\xcc\x13\x18\xa8\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x15\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa7\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x41\x0a\xc2\x40\x0c\x45\xff\x1f\x13\x17\xb3\x13\xdd\x79\x1f\ \xbd\x86\x3d\x40\xc1\x1b\x78\x87\x76\x23\x78\x04\x41\x70\x5d\xd7\ \x9e\x47\xc7\xd5\xb4\x98\xb8\x90\xd9\xb7\x7d\x10\x48\x02\x9f\xff\ \x13\x36\x4d\xf3\x8c\x31\x6e\xf1\xc7\x49\x7a\xe9\xcb\xec\x5e\x56\ \xf0\xbe\xef\xd3\x30\x0c\xe7\xba\xae\x2f\xa2\xaa\xb1\xaa\x0e\x03\ \xc6\xc1\x9c\xf3\xaa\xeb\x1e\xa7\xb6\x6d\x11\x00\xd0\xcc\x30\xb6\ \x54\xd5\xf6\xfb\x5d\x56\xd5\xa3\x90\x0c\x6e\x86\x29\x04\xd2\x45\ \x64\x29\x24\x68\xf6\xc5\x54\x42\x08\x0b\x21\xa6\x3b\x97\x7f\x0a\ \x48\xda\x1c\xb1\x03\x42\x60\xa6\x33\x20\x98\x79\xb3\xc3\x21\x24\ \xe9\x73\x63\xa7\xf4\x59\x5f\x6f\xf7\xd7\x54\xed\x3b\xa5\xcd\x0f\ \xda\x7f\x66\xb0\xc9\x65\xf3\x61\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x00\xf9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\x8b\x49\x44\x41\x54\x28\x91\x9d\ \xd0\x31\x12\x82\x30\x14\x84\xe1\xe5\x15\xe6\x2e\xd2\xcb\x19\xed\ \x1d\xcf\x04\x1d\x27\xb0\xa6\x20\x38\x50\xe8\x4c\x12\xde\x6f\xa3\ \xbd\xa1\xf8\xca\x9d\xdd\x59\x1b\x86\x21\x8e\xe3\xf8\xa8\xd5\xf7\ \xfd\x66\x21\x9c\x96\xb6\x3d\x7b\xad\x10\xc2\x6c\x38\xec\xa5\xa8\ \x96\x24\x19\xe0\x7b\xc9\xaa\x05\xc8\xe0\x60\x33\xc8\x10\x7e\x24\ \x8c\x7e\xcd\x7b\x56\x2d\x21\x99\xd0\xa1\xd9\xe0\xfe\x3d\xac\x2e\ \x58\x72\x6e\xdc\x49\x86\xa0\xe6\xe5\x9c\x92\xcd\xcf\x35\x00\x77\ \x03\x5e\x53\xdc\xec\x0f\xcd\x14\x57\xa6\x65\x5b\xdf\x29\x5f\x2f\ \x5d\x77\xfb\x00\x6e\x37\xd5\xb0\x67\xb7\x7c\x1f\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x09\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x32\x00\x00\x00\x2d\x08\x06\x00\x00\x00\xec\xbf\x38\xff\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x05\x9b\x49\x44\x41\x54\x68\xde\xd5\ \x99\x4b\x4c\x63\x55\x18\xc7\x31\x63\x9c\x48\x4c\x34\xce\xca\xc4\ \xc4\x85\x0b\x17\x6a\x8c\xc6\xa8\x1b\x63\x62\x66\xa5\x9b\x89\x3b\ \x17\x46\x63\x8c\x2b\xc7\x07\xa3\xf3\xd0\x4c\xcc\x18\x1d\xc6\x30\ \x99\x90\xcc\x42\x98\x41\x23\x03\x03\x41\x79\xb6\x85\x96\xbe\x5f\ \xb4\x94\x47\x5b\xca\xa3\x40\x5b\x28\x2d\xa5\x14\x28\xef\x77\x29\ \xc7\xff\xd7\xf4\x34\x37\x04\x98\x0a\xb7\xd0\xbb\xf8\x2f\xda\x45\ \xcf\xf9\xf5\x7c\xdf\xef\x9c\x7b\x6e\x41\x75\x4d\xdd\x1d\xcf\x48\ \xf4\x72\x38\xce\x3e\x95\x70\x9e\x28\x68\x6d\x6d\x7d\xb6\xf2\x41\ \x55\x77\x47\xf7\x60\x25\xbe\xf8\x56\xa2\x39\x5b\xc0\x18\x2b\xe8\ \xe8\xe8\x78\xa5\xb1\xb1\xd1\xa5\x35\x58\x0d\xbe\xc9\xd5\x1f\x25\ \x0b\x92\x86\x79\x5b\xad\x56\x7b\x8d\x26\x8b\xbf\xdb\x33\x76\x57\ \xb2\x20\x14\x93\xc9\xf4\xae\x4e\xa7\x0b\xf6\xf6\xf6\xae\x1b\xcc\ \x0e\x79\x30\x96\xf8\x5e\x92\x20\x14\x83\xc1\x70\xde\x68\x34\x46\ \x46\x47\x47\x99\x56\x6f\x72\xf7\x0d\x4f\x15\x4b\x12\x84\xa2\xd7\ \xeb\x3f\x34\x9b\xcd\x51\xbf\xdf\xcf\xec\xf6\xce\xb8\xd9\xe6\x7c\ \x18\x9a\xdb\xfd\x4e\x72\x20\x14\x94\xd8\x47\x56\xab\x35\x16\x08\ \x04\xd8\xe0\xe0\xe0\xae\x5a\x6b\xb4\x78\x83\x0b\xd7\x25\x07\x42\ \x91\xcb\xe5\x5f\x51\xbf\x10\x8c\xcf\xe7\x63\x26\x93\x39\x64\xef\ \xf1\x96\x49\x0e\x84\x22\x93\xc9\x5a\xc6\xc6\xc6\x18\x85\x60\x5c\ \x2e\xd7\xb6\x46\x6f\x51\x05\xa6\x36\x2e\x4b\x0a\xa4\xae\xae\xae\ \x50\xab\xd5\x06\x26\x26\x26\x52\x30\xd4\x37\xc3\xc3\xc3\x4c\xab\ \x33\x0c\xf5\xf6\x07\x4b\x24\x03\x42\xa9\xaf\xaf\xff\x00\x2b\xb1\ \x4a\x30\xe3\xe3\xe3\x29\x98\x91\x91\x11\xd6\xd9\xd9\xb9\xac\x33\ \x75\xfe\x33\x31\xbb\x53\x24\x09\x90\x74\x89\x55\x10\x48\x28\x14\ \x4a\xc1\x50\xdf\x90\xa2\x07\x06\x06\x98\x4a\xad\x73\xf4\xfb\x62\ \x37\x24\x01\x52\x52\x52\x72\x06\x5a\xee\x8f\x44\x22\x2c\x1c\x0e\ \xb3\x60\x30\xc8\xb8\x04\xa8\xd4\xcc\x66\xcb\xb4\xc9\xe6\xaa\xc8\ \x7b\x10\x4a\x4d\x4d\xcd\x9b\x7d\x7d\x7d\x8b\x53\x53\x53\x19\x18\ \x2e\x01\x82\x71\xbb\xdd\x49\xa5\x5a\xaf\x1b\x09\x2d\x5f\xc9\x6b\ \x10\x4a\x4b\x4b\x4b\x31\x41\x70\x18\x2e\x01\x82\xa1\xbe\x19\x1a\ \x1a\x82\x08\xf4\x7e\x7b\xef\xf0\x9d\xbc\x06\xa1\x12\xb3\x58\x2c\ \x23\xb1\x58\x8c\x45\xa3\x51\x36\x39\x39\xc9\xf6\x4a\xc0\xeb\xf5\ \x32\x87\xc3\xb1\xa1\xd2\x18\x9b\xc6\x63\xdb\x45\x79\x09\x92\xb6\ \xd8\x35\x02\x99\x99\x99\x49\xc1\x50\xdf\xec\x95\x00\xc1\x78\x3c\ \x1e\xa6\x54\xa9\x5d\xce\xc1\xd0\xaf\x79\x09\x82\x55\x39\x0b\xf5\ \xfa\xe2\xf1\x78\x0a\x66\x7a\x7a\x3a\x03\xc3\x25\x40\x30\xd4\x37\ \x38\xde\x30\xac\x60\x5c\x6b\xb4\xff\x9d\xc3\xf3\xda\xd1\x40\x28\ \x4d\x4d\x4d\xbf\xcc\xcf\xcf\x33\xca\xec\xec\x6c\x06\x66\x3f\xa3\ \x11\x0c\xf6\xa1\xdd\xd6\xb6\x76\xf3\xe0\xd8\xdc\xb5\xbc\x02\xc1\ \xaa\x3c\x85\xc9\x8d\x2f\x2d\x2d\x65\x60\xa8\xdc\x0e\x93\x40\x7f\ \x7f\x3f\xd3\x6a\x75\x21\x68\xfa\x6e\xde\x80\x50\x14\x0a\xc5\xed\ \x95\x95\x15\x46\x30\x0b\x0b\x0b\x6c\x6e\x6e\x8e\x1d\x26\x01\x82\ \xa1\x0d\x14\x22\x48\x28\xda\xd4\x0a\x7f\x64\xbd\x28\x2f\x40\x4a\ \x4b\x4b\xcf\xa1\x6c\x42\xab\xab\xab\x6c\x79\x79\x39\x03\xc3\x25\ \x40\x30\x5c\x02\x04\xc3\x25\x40\x30\xd8\x8f\x20\x82\xf6\xa1\x4e\ \xd7\xe8\xcd\x53\x07\xa1\x68\x34\x9a\xfb\x9b\x9b\x9b\x6c\x6d\x6d\ \x2d\x05\xb3\xb8\xb8\xc8\xb8\x04\x0e\x33\x1a\xf5\x0d\x59\x0d\x22\ \x58\x51\xaa\x8d\x35\xc1\x99\x9d\xd3\x05\xa9\xaa\xaa\xba\x80\x95\ \x48\x12\xcc\xfa\xfa\x3a\xa3\x52\xe3\x30\xd9\x48\x80\x60\x9c\x4e\ \x27\x93\x2b\xda\xec\x6e\x6f\xe4\xa7\x53\x03\xa1\x0d\x12\x65\xe2\ \x4d\x24\x12\x6c\x6b\x6b\x2b\x03\x93\x8d\x04\x08\x86\x4b\x00\xc7\ \x1b\x86\xa7\xd2\x69\x8d\xc1\xf6\x07\x26\xf6\xcd\x89\x83\x50\x70\ \x59\x51\xb9\xbb\xbb\xcb\x76\x76\x76\x32\x30\xd4\x37\x1c\x86\x4b\ \x80\x60\xb8\x04\xf8\xb3\x8d\x50\x02\xd4\x37\x10\x41\x52\x06\x13\ \xe0\xb1\xfa\xd2\x89\x83\xd4\xd6\xd6\x7e\x42\x93\xe7\x30\xdb\xdb\ \xdb\x6c\x63\x63\x83\xed\x95\xc0\xa3\x8e\x35\x1c\x06\x5a\x67\x4a\ \xa5\x32\x60\xb6\xbb\x7f\x3f\x51\x10\xda\xe9\x31\x89\x00\x81\x50\ \x92\xc9\x64\x0a\x46\x28\x01\x82\xc9\x46\x02\x04\x43\x7d\x43\x30\ \x10\xc1\xa6\x4c\xa1\xfa\x77\x2c\xba\xf9\xf5\x89\x80\x50\x70\x7d\ \x54\xc7\x41\x38\x0c\xf5\x0d\x87\x39\x8a\x04\xa8\x6f\x7a\x7a\x7a\ \x98\x4c\xae\x70\x76\xb9\xfd\xd7\x4f\x04\x04\x77\xc7\x57\x68\xf2\ \x42\x18\x0a\x87\x11\x1a\x4d\x78\xac\x39\xe8\xd9\x46\x28\x01\xb2\ \x1a\x1e\xea\x16\x5a\x55\xfa\x3f\x43\xb3\xc9\x8b\x39\x05\x29\x2b\ \x2b\x7b\x1d\x7d\x90\xd8\x0b\x72\x98\x04\xb2\x3d\xd6\x50\xdf\x10\ \x0c\x0e\xaa\xac\xb9\x45\x66\xf4\x8c\x4e\x5f\xca\x19\x08\x69\x58\ \xd8\x27\xfb\xc1\x1c\x45\x02\x42\xa3\x11\x0c\x95\x9a\x4a\xa5\x0a\ \x43\xd3\xb7\x05\x9a\x16\x0f\x84\xd2\xd5\xd5\xa5\x39\x08\x44\x28\ \x01\x82\x39\x8e\x04\x08\x06\xb7\xa0\x89\xc6\x66\xb9\x6c\x34\xbc\ \x72\x51\x74\x10\x5c\x80\x97\x1d\x06\x72\x90\xd1\x84\xc7\x1a\xea\ \x1b\x9a\xbc\xcd\x66\x5b\xc6\xef\x05\x71\x04\x72\xe1\x75\x87\xa3\ \xbd\xbd\xdd\x8e\x95\xb0\x41\xcb\xd6\xb6\xb6\x36\x33\x5e\x50\x99\ \x9a\x9b\x9b\x95\xf7\xee\xdd\x6f\xaa\xf8\xeb\x41\xa1\xa8\x20\x0d\ \x0d\x0d\x45\xfb\x35\xfc\x7e\xd9\x2b\x01\xfc\xfb\xdb\x98\x7c\x10\ \x97\x81\x56\x6c\xb0\xd5\x58\x81\x5b\x28\xad\xdf\x90\x22\xe4\x02\ \xf2\x1a\xf2\x22\xf2\x02\xf2\x3c\xf2\x5c\x3a\xf4\xdd\x63\xa2\x82\ \x94\x97\x97\xbf\x43\xff\x6e\x36\x20\x14\xac\x46\x12\x75\x1f\xc5\ \x7b\x19\x07\x20\x2a\xd2\x13\xa7\x5c\x45\xde\x47\x9e\xc9\x76\x6c\ \x51\x41\xd0\xf0\xe7\xa0\xd1\x85\x47\x01\x90\xc1\x70\x39\x1e\xc1\ \x3f\x2f\x47\xfd\xdf\x14\x00\x7c\x89\xbc\x8a\x9c\xf9\xbf\x63\x8b\ \x0a\x42\x41\x49\xf8\x0f\x33\x17\x1a\x36\x8e\xda\x37\xc0\x46\xc5\ \x02\x00\x2a\x9f\x97\x8e\x33\xae\xe8\x20\xb0\x8a\x7d\x3f\x08\xf4\ \x00\x35\x6f\x17\x40\x4a\x04\x00\x3f\x23\xef\x21\x8f\x1f\x77\x5c\ \xd1\x41\xa0\x60\xc5\xde\xa6\xee\xee\xee\x0e\xe1\xfb\x32\x01\x00\ \xe5\x63\xe4\x69\xb1\xc6\x15\x1d\x04\x4d\xfb\x90\x43\x60\xf7\xde\ \x44\x23\xbb\x70\x76\xba\x25\x00\xb8\x81\xbc\x25\xf6\xb8\xa2\x83\ \xa0\x81\x53\x7b\x09\x76\xe6\x09\x5c\xaf\x7e\x91\x2e\x1f\x0e\xf1\ \x03\xa9\x53\xec\x31\x73\x02\x82\x9b\x95\xab\x58\x15\x6b\x75\x75\ \xf5\xcb\xf4\x19\x13\xff\x3c\x0d\xf1\x19\x52\x98\x0b\x88\x9c\x80\ \x40\xc1\x4f\xd2\xf3\x09\xff\x8c\xc9\xbf\x81\x9c\xa7\x4d\x2b\x57\ \x10\x94\xff\x00\x0c\x72\x2c\xb1\x4c\xc9\xc1\xa9\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x63\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x03\x00\x00\x00\x45\x35\x14\x4e\ \x00\x00\x00\x7b\x50\x4c\x54\x45\xff\xff\xff\x8b\x8b\x8b\x8b\x8b\ \x8b\x8e\x8e\x8e\x90\x90\x90\x8f\x8f\x8f\xf7\xf7\xf7\xf4\xf3\xf3\ \xf0\xf0\xf0\xf2\xf1\xf1\xec\xec\xec\xed\xed\xed\xef\xed\xed\xeb\ \xe8\xe8\xde\xde\xde\xdc\xdc\xdc\xe3\xe1\xe1\xe1\xdd\xdd\x90\x90\ \x90\xdf\xda\xda\xde\xd9\xd9\x90\x90\x90\xc3\xc3\xc3\xda\xd4\xd4\ \xc2\xc2\xc2\xd4\xcf\xcf\xd2\xcb\xcb\xd0\xc8\xc8\xa0\xa0\xa0\xc9\ \xc2\xc2\x90\x90\x90\xc3\xbb\xbb\xc1\xb7\xb7\xc1\xb8\xb8\xc1\xb7\ \xb7\x8c\x8c\x8c\xc1\xb8\xb8\x8c\x8c\x8c\xc2\xb8\xb8\xc2\xb9\xb9\ \xc3\xba\xba\xd5\x0f\x4f\x7d\x00\x00\x00\x29\x74\x52\x4e\x53\x00\ \x04\x33\x87\x9f\xa6\xc8\xca\xcb\xcb\xcc\xcc\xcd\xd1\xd2\xd3\xd5\ \xd8\xda\xda\xdb\xdd\xde\xde\xdf\xe2\xe4\xe6\xe7\xec\xf0\xf2\xf5\ \xf6\xf7\xf9\xf9\xfa\xfa\xfa\xfd\x3e\x2b\x06\xf8\x00\x00\x00\x6e\ \x49\x44\x41\x54\x08\x5b\x5d\x8e\x41\x02\xc1\x30\x00\x04\xb7\x49\ \x33\xa2\xa5\xa1\xa4\x82\x0a\x45\xf1\xff\x17\x3a\xf4\xa2\xe6\xbe\ \xb3\x23\x49\xa6\x6c\x1f\x6d\x69\x24\x49\x85\xcd\x5d\xe3\x9b\x2e\ \xdb\x42\x92\xed\x6b\x00\xea\xde\x4a\x26\x57\x4c\x54\xd9\xc8\x25\ \x60\xb5\x59\x02\xc9\x29\x06\xd8\xde\x86\xeb\x1a\x42\xd4\xe8\xe1\ \xf2\xfe\x3c\x8f\xe0\x47\xc5\x00\xa7\xfb\x6b\xd8\x43\x88\x72\x09\ \x16\x87\xf3\x6e\xda\xcd\x9d\xf3\xbf\xbf\x96\xdf\xce\x2f\xbf\x0b\ \x07\xc6\xa9\xa3\x54\xf8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x02\x15\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x13\x08\x06\x00\x00\x00\xd6\x3a\x8e\x1f\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xa7\x49\x44\x41\x54\x48\xc7\xd5\ \x97\xbf\x8e\x52\x41\x14\xc6\xbf\x19\x66\xff\x68\x24\x5c\xcd\x6e\ \xae\xc6\xec\x6a\xec\x6c\x28\x68\xc4\x0e\xed\x8c\x95\x8f\x82\x21\ \xbe\x80\xa5\x37\xb1\xa3\xd3\x27\x30\xf2\x00\x24\x14\x04\xb7\x70\ \x1b\xed\x6c\x70\x2a\x13\x2d\x48\x6e\x40\xae\x17\x98\x73\x3e\x0b\ \x58\x43\x7c\x82\x3b\x5f\x37\xdd\xf9\xe5\x77\xce\xc9\x19\x43\x12\ \x59\x96\x9d\x19\x63\xde\x1a\x63\x9e\xa8\xea\x2d\x54\x37\xb4\xd6\ \x4e\x55\xf5\x1d\x80\x37\xbd\x5e\x4f\x5c\x96\x65\xf7\x8d\x31\x5f\ \x1b\x8d\x86\x6b\xb7\xdb\xeb\x34\x4d\x97\x15\x06\x80\xf7\x3e\x9d\ \x4c\x26\xaf\x49\x3e\x02\xf0\xc2\x64\x59\x36\x68\x36\x9b\xcf\x3a\ \x9d\xce\x0f\xe7\x9c\x03\x70\x44\xb2\xca\x0c\xa5\xf7\xfe\x60\x30\ \x18\xdc\x01\xf0\xdc\x59\x6b\x3b\xad\x56\x0b\xb5\x9a\x35\x22\x21\ \x90\x14\x54\x3c\xe7\xe7\x67\xab\x24\x49\x8a\x3c\xcf\x9f\x3a\x6b\ \x6d\x72\xe0\x5c\x19\x36\x9b\x9a\xaa\x56\xbe\xf8\xab\xd4\xeb\x37\ \x38\x9b\xcd\x6e\x3b\x00\x20\x00\x15\x81\xaa\x22\x9a\x10\x50\x55\ \xeb\xb6\x0f\x42\x42\x88\x0a\x60\x37\xa7\x66\x67\x80\x10\x55\xa8\ \x48\x6c\x00\xf8\x67\x80\x1a\xa2\x02\xc0\x3e\x00\x49\x68\x10\x88\ \x84\x58\x0d\x00\xa2\x21\x2e\x00\xe8\x9e\x01\x6c\x0d\x68\x88\x08\ \x40\xff\x6f\xa1\xc8\x0c\x6c\x97\xff\x55\x0b\x81\x10\x89\x74\x06\ \xa8\xba\x94\x20\x4e\x37\x01\x1a\xe2\xd9\x42\xc5\x9f\x12\xaa\x3a\ \x77\xa2\xfa\x79\xfa\xdd\x3f\x3e\xad\x1f\x45\x53\x7d\x3e\x5f\x1c\ \x2e\x7e\x2f\xaf\x97\x65\x79\xe9\x48\xbe\xfc\x74\x71\x71\x79\x72\ \x33\x39\x7d\x70\xef\xee\xf2\xda\xf1\x71\x65\xfb\x48\x95\x26\x9f\ \x2f\x0e\xbf\x4d\x7d\x9d\xe4\x97\x7e\xbf\xff\xc1\xec\x3e\x34\x6d\ \x63\xcc\x7b\x92\x0f\x23\x10\xb0\x09\x21\x7c\x1c\x8d\x46\xaf\x86\ \xc3\xe1\x2f\xb3\x7f\xfb\x77\xbb\xdd\x93\xa2\x28\xd2\xf5\x7a\x5d\ \xab\xe8\xe0\x72\x3c\x1e\xff\xf4\xde\xaf\x00\xac\x48\xae\xfe\x02\ \x9e\xc5\x10\x4d\x61\xbe\x76\xec\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x02\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xa6\x49\x44\x41\x54\x28\x53\x7d\ \x52\xcb\x4e\xc2\x50\x14\x34\xf2\x2f\xc6\x98\xf8\x57\xba\xd5\xb8\ \x71\xe5\xd2\x9f\xd0\x44\x6b\x14\xf0\x01\xa5\x94\x47\x80\x86\x16\ \x28\x9a\xb6\x2a\xcf\x16\x1f\x11\x4c\x80\x58\x04\xd1\x9d\x69\x5c\ \x18\x9c\x21\x62\x6a\x62\x5c\x9c\x9c\x9e\x73\x67\x7a\xce\xcc\xbd\ \x73\x93\xc9\x64\x6e\x16\x82\x20\x2c\x22\xb6\x11\x71\x44\xf5\x3b\ \xb3\x5e\xf4\xe3\x66\xe0\x00\x62\x1d\xe1\x84\x43\x21\x5b\x8c\x46\ \x6f\x13\xb2\xdc\x8e\x4b\x92\x73\x7a\x72\x72\x75\x74\x78\x68\x7c\ \x9f\x07\xfc\xa4\x8d\x03\x41\x68\x49\xb1\xd8\xa3\x9a\xcf\xbf\x99\ \x86\x31\x68\xd6\xeb\xdd\x2b\xcb\x72\xcb\xa5\xd2\x38\x93\x4e\xdf\ \x84\x82\xc1\x32\x30\xeb\x53\x12\x08\xcb\x9c\x40\x42\x59\xd7\x5f\ \x5c\xd7\xb5\x3d\xcf\x33\x67\x31\x7c\x7e\x6e\x5c\x5f\x5e\x0e\x94\ \x6c\xd6\x06\xb1\x40\x3c\x49\xdb\x5c\x89\x13\x06\xae\xdb\x24\xf0\ \x75\x34\xaa\x75\x3b\x9d\x3b\x66\xd6\xa3\xe1\xb0\x61\x19\xc6\x50\ \x12\xc5\x02\x56\xdd\x22\x29\x1e\x13\xc5\x3b\x34\x07\x04\x3c\xf5\ \xfb\x8e\x9e\xcd\xbe\xeb\xb9\x9c\xc7\xcc\x9a\x7d\xa7\xd9\xec\x61\ \x9a\x11\x0e\x06\xf7\x48\xaa\x26\x13\x89\x0e\x35\xf0\xd0\xae\x56\ \xfb\x00\x7f\x94\x15\xe5\x93\x99\x35\xfb\xed\xfb\xfb\x4e\x51\xd3\ \x6a\xc7\xe1\x70\x72\x3a\x09\x2e\xb5\x28\xfa\xbf\x49\xb7\x8e\xd3\ \x55\x15\xe5\x1c\xa4\x9d\xa9\xa6\x33\xd8\x4a\x97\x28\xfa\x2f\x4d\ \xaf\xe3\x71\xbd\x56\xa9\xb8\x29\x59\x4e\x63\xbd\xcd\xa9\x7b\x10\ \x67\xd2\x56\xba\x44\xd1\x7e\xf7\x48\x68\xd9\x76\x4f\x2f\x16\x2d\ \xfc\x5c\x02\x76\xe9\xe7\x9e\x78\x0f\xb4\x95\x2e\xd9\x8d\x46\xef\ \x01\x1a\x6e\xb0\x12\x27\x80\x60\x8a\x91\x48\x0c\x98\xd5\x5f\x2f\ \x02\x17\xb7\x86\xa6\x06\x5b\xb5\x5c\x26\x73\x51\x50\xd5\x4a\x5e\ \x51\x4a\x58\x29\x85\x09\x24\xac\x00\x33\xff\x43\xf2\xbf\x3d\xde\ \x03\x00\xfb\x10\x9c\x42\xec\xe2\x7b\x13\xbd\x05\x3f\xee\x0b\x45\ \x97\xf5\xcf\x14\x60\x2f\x66\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x01\x15\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa7\x49\x44\x41\x54\x28\xcf\xa5\ \x8e\x31\x0a\xc2\x50\x10\x44\xdf\x64\x3f\x0a\x76\xa2\x9d\x37\x10\ \x6c\xec\x2c\x2c\x3d\x8f\xb9\x81\x47\x48\xec\x04\xef\x63\xa1\x82\ \x95\x78\x0d\xb1\x49\x24\xc9\x5f\x0b\xb5\x37\xf1\xc1\xc2\x6c\xf1\ \x98\x51\x9e\x65\x87\x7e\xbf\x37\xe1\x8d\x0b\xfc\x9b\x01\x47\x7a\ \xff\xee\x00\x5e\x37\xcd\xa3\xae\x9b\xdd\x3a\x4d\xf7\xc1\xcc\x06\ \xab\xe5\xa2\xe2\x37\x54\x55\xf5\xf0\x72\xbd\x6d\xb6\x79\x4e\x22\ \xa1\xe8\xce\xaf\x67\xc1\xe2\x7c\x36\x7d\x9a\x59\x1a\x40\x49\x74\ \xda\xa1\xc4\xcd\xac\x17\xf8\x34\xb7\x45\x92\x05\x41\xd2\x45\x06\ \x08\x20\xc5\x48\x47\x59\xdd\x9a\x1d\x27\x08\xe9\x8f\xd9\xa8\xe9\ \xe2\x3a\x84\xa2\x2c\x47\xc7\xd3\xf9\xde\xd6\x2d\x8a\x62\xfc\x02\ \x60\xd2\x60\xc5\x54\xa5\xbb\x5b\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x02\x57\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xe9\x49\x44\x41\x54\x28\x53\x4d\ \x92\x3f\x68\x14\x41\x14\xc6\x67\x77\x67\xf7\x92\xe5\x64\xd1\x2b\ \x0c\x18\x72\x9c\x57\xca\x59\x69\x61\x69\x63\x69\x61\x21\x28\x48\ \x8a\x80\x88\x11\x0b\x41\x6c\x2f\xa5\x82\xc4\xc2\x42\xc4\xc6\x2a\ \xa5\x82\x4d\x48\x25\xd8\x25\x75\x0c\x58\x5c\x4c\x10\x74\x2f\x38\ \x6b\xd8\xdb\x9d\xfd\x3b\xcf\xef\x9d\xbb\xe0\xc2\x63\x66\xd8\xef\ \xf7\xde\xf7\xe6\x8d\x24\x22\xd1\x7e\xcf\xc7\xe3\x4b\xae\xeb\xae\ \x3a\x8e\x73\xd5\x18\xd3\xb7\x6d\xfb\xa8\xae\xeb\xbd\xb2\x2c\xdf\ \x3f\x1b\x8f\xf7\x5b\x9d\x6c\xc4\xd0\x39\x4f\x7c\xdf\x5f\x1f\x0c\ \x06\x6e\x10\x04\x39\xf6\x55\x9a\xa6\x7d\xa5\xd4\xc5\xc3\xc9\xe4\ \xd6\x8b\x8d\x8d\x37\x28\xb0\x09\xb8\x9e\x43\x0c\xf4\x7a\xbd\xc7\ \xa3\xd1\x48\xa3\x52\xd6\x66\x5c\xf0\x3c\x75\xb6\xdb\x8d\x9c\x95\ \x95\x78\x72\x7c\x7c\x37\x2b\x0a\xb6\xf5\x52\xb2\x25\xae\xd0\x00\ \xa6\x05\x74\x92\x44\x7a\x36\xe3\x50\x79\x92\xa8\xc0\x75\xbf\x01\ \xba\x07\xfd\xb6\xf4\x3c\xef\xc1\x70\x38\x74\xdb\x0a\xa6\xae\xab\ \x34\x8e\x73\x40\x8b\x59\x9a\x2a\x1d\xc7\x53\x06\x33\x80\xb0\xf5\ \xb9\x14\x62\x55\x5a\x96\x75\x85\x7b\x60\xa0\x2c\x0a\x0d\x80\x20\ \x1e\x62\x6f\xe3\x02\x96\xcb\xaa\x2a\x90\xe0\xa0\x16\x22\xb2\x84\ \x88\x21\xbb\x23\xd1\xdc\x32\xec\xa5\xb9\xd6\x31\x67\x84\x60\xa9\ \xaa\x2a\x49\xc6\x78\x10\xd8\x8e\x94\x17\x2a\x21\xa6\x80\x14\xfd\ \x83\x9e\x72\xa5\x1f\xbf\x4f\x4e\x3a\x0e\x51\xc8\x3d\x64\x80\xf1\ \xf3\xbc\x20\x72\xc9\xb6\x35\x80\x3d\x86\xd0\xac\xc2\x1a\x08\xcb\ \x3a\x94\x98\xc3\xee\x34\x0c\xaf\x9d\xe9\x74\xe6\xde\x19\xac\x89\ \xbe\x7a\xbe\xbf\x84\x59\x1d\x44\x51\xf4\x85\xab\xb0\x3d\xb2\xac\ \xcb\xa8\xb4\x2f\x61\xe5\xed\xcf\x30\xbc\x61\xba\xdd\x3f\x65\x9a\ \x4e\xf3\xa2\x50\x9c\x35\xd1\x3a\x6a\xc4\x2d\xe0\x00\x78\x88\x78\ \x24\x79\xd2\xb8\xc6\x77\xbf\x4e\x4f\x6f\x2e\x12\x6d\x89\xc6\x7f\ \x2b\xe6\x04\x00\x16\x78\x3e\x88\x8f\xac\x97\xcd\x58\x5e\xc1\x92\ \x99\x09\xb1\x66\x0b\xf1\x09\xe7\x5d\xf4\x75\x84\x38\x87\x1e\xae\ \xe3\x7c\x1f\xf1\x01\xf1\x9a\xc5\x73\x88\x9f\x06\x96\x4d\x54\xdc\ \x31\x44\xb7\xb1\x5f\x83\xb8\x8f\xf5\x3b\xf7\x80\x58\xff\xff\xed\ \xfd\x05\x44\x20\x32\xa9\x4e\xde\x14\x18\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x0a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x9e\x49\x44\x41\x54\x18\xd3\x63\x98\x55\ \x31\xeb\x07\x56\x58\xc1\x30\xeb\x3f\x2e\x08\x96\x7a\x32\xf9\x6d\ \x0f\x32\x7c\x32\x19\x2e\xf5\xb9\xe3\x7f\x03\x0c\xde\x9b\xb7\xf3\ \xee\x9d\x85\x58\xa4\x9e\x4f\x5f\xff\x73\xed\xff\xd3\x3b\x91\xa4\ \x9e\xce\x00\x4a\x74\x7e\x5c\xbb\xe5\xfb\xda\xff\x3b\xef\xbd\xef\ \x82\x4b\x9d\xda\xbd\xf6\xff\xb1\x7b\x3f\x0e\x6f\xff\xb2\xf6\xff\ \xd6\x17\x5f\xdb\x3f\x77\xc0\xa5\x6e\x2e\x5e\xfb\x17\x28\x08\xd4\ \xb1\xf1\xe3\xbb\xde\xff\x0d\x48\x52\x9f\x3b\xce\xee\x58\xfb\x7f\ \xed\xff\xf5\x3f\x9e\x4f\x03\xd9\x88\x22\xf5\xbf\xe1\xd0\xa9\x0d\ \x5f\xee\x2e\x80\x38\x06\x49\x0a\xe2\xaf\xd7\xbd\x58\xfc\x85\x2b\ \x34\x70\x86\x21\x00\x8c\xe0\x06\x11\x3e\x64\x1f\xfd\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x08\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\x9a\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x3b\x0a\x02\x41\x10\x44\x6b\xb4\x11\x76\x35\x11\x3c\x8c\x81\ \x91\x37\xda\x5b\x98\x4c\x2e\x78\x16\x33\x03\x3f\x27\x70\xcf\xe0\ \x2f\x90\x05\x61\xba\xca\xc0\xdd\xdc\x99\x86\x86\x86\xe2\x51\x8f\ \xb6\x18\xe3\x63\x56\x57\x2f\x64\xce\xbb\xeb\x16\x36\xad\xab\xfb\ \x7a\xb5\x0c\xb9\xf0\xfe\x70\xbc\x99\x24\x51\xca\x86\x01\xc0\x24\ \x88\x02\xca\x60\x88\x94\xc6\xb9\xa0\x04\x18\x7e\xda\x28\xd5\x26\ \x59\xaa\x5d\xd8\x4c\xd2\x4d\x00\x73\x61\x92\xc1\xe9\x9f\xbe\xf9\ \x7f\x30\xa5\x34\xba\xb6\xed\xc4\x9d\x1b\x23\xd9\x9d\xce\x97\xf9\ \xf0\xc4\x7e\x11\xc2\x70\x07\x0d\x91\x04\xb9\xfb\xd3\xdd\xb7\x4d\ \xd3\xec\xbe\x3e\x15\x69\x2b\x64\x98\xc7\xc4\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x0c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\x9e\x49\x44\x41\x54\x28\xcf\x9d\ \x91\x31\x0a\x02\x41\x10\x04\x7b\x74\x30\x5d\x04\xdf\xe7\xfd\x40\ \xbf\x61\x76\xa9\x60\x74\x66\x82\xe0\x1f\x04\x7d\x8d\xba\x46\x82\ \xb7\xb3\xd3\x06\x87\x9a\x68\xb0\xdb\xe1\x40\x51\x14\x23\x6d\xdb\ \xde\x42\x08\x77\xfc\x99\x88\xfc\xbc\xc7\x18\x67\x1a\x42\xb8\x36\ \xcd\x5c\x50\xb8\xae\xdb\x5e\x94\x24\xdd\xbd\x18\x06\x00\x25\x9d\ \x74\xaf\x40\x09\x1d\xc4\x79\x5c\x8c\x12\x50\x3a\xeb\xcd\x4e\xba\ \xd7\xc0\x04\x94\xac\x33\x67\xf7\xfc\x6e\x2e\x03\x73\x16\x4b\xe9\ \x59\x6c\xee\xfb\x7e\x74\x3c\x9d\x27\x66\xb6\x52\x33\x7b\xec\xf6\ \x87\xe9\xa7\x44\xc0\xe1\xe9\xc2\xa1\x0c\xfc\x66\x92\x96\x2c\xa6\ \x94\xd6\x8b\xe5\x72\xf3\x02\x01\x4c\x73\x5c\x4d\x53\x9c\xcf\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x07\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x9b\x49\x44\x41\x54\x18\xd3\x63\x68\xac\ \x68\xfc\x81\x15\x56\x30\x34\xfe\xc7\x05\xc1\x52\xf7\x26\xbf\xec\ \x41\x86\xf7\x26\xc3\xa5\x3e\x74\xfc\x6f\x80\xc1\x73\xf3\xa6\xdc\ \x3d\xb5\x10\x8b\xd4\xed\xe9\xad\x3f\x1b\xff\x6f\xdc\x89\x24\x75\ \x6d\x06\x50\xa2\xf3\xd5\xda\x9e\xef\x8d\xff\xa7\xdc\x7b\xd3\x05\ \x97\x5a\xbf\xbb\xf1\xff\x8a\x7b\x5f\x0e\x4f\xfa\xd2\xf8\xbf\xf7\ \xc5\xc7\xf6\x0f\x1d\x70\xa9\xe3\x8b\x9b\xfe\x36\xfe\xef\x03\xea\ \xe8\xf8\xf8\xbc\xf7\x7f\x03\x92\xd4\x87\x8e\x4d\x3b\x40\x74\xeb\ \x8f\x9b\xd3\x40\x36\xa2\x48\xfd\x6f\x58\x78\xaa\xed\xcb\xe9\x05\ \x10\xc7\x20\x49\x41\xfc\xf5\xbc\x17\x8b\xbf\x70\x85\x06\xce\x30\ \x04\x00\x95\xde\xf8\xd0\x60\x7f\x65\x39\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xae\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x42\x49\x44\x41\x54\x08\xd7\x63\xa8\x5f\ \xbd\xe6\x15\x0c\xd6\x2e\x61\x48\x56\xda\xf1\xe8\xc4\x57\x10\xdc\ \x74\x3e\x5c\x84\xe1\x3f\x43\x6b\x26\x88\xb3\xef\x55\x8d\xc5\x7f\ \x06\x20\x97\x81\x71\xc1\x86\xe3\x5f\xfb\x72\xfe\x33\x80\xb9\xff\ \x19\x52\xd5\x7a\x67\xfe\x07\xb3\x00\xb3\x22\x29\xee\xf2\x45\x54\ \xa5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\x2c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xbe\x49\x44\x41\x54\x28\x53\x5d\ \x92\x3b\x4b\x03\x41\x14\x85\x67\x37\x9b\x18\x22\x12\x4c\x3a\x05\ \x31\x36\x16\x26\x88\x8d\xf8\x13\xc4\xc6\x42\xec\x14\x0b\xd1\x42\ \xc1\x42\x41\xed\xb2\x5b\x46\xc1\x07\x58\x09\x0a\x76\xda\x68\x29\ \xfa\x07\x14\xed\x04\x3b\x11\x05\x83\x24\x26\xbb\x24\x26\xd9\x47\ \x76\x66\x3c\x77\x49\x82\x3a\x70\xb8\x33\xc3\xf9\xe6\xde\x99\x3b\ \x9a\x94\x92\xb5\x47\x4e\xd7\x47\xc2\xe1\xf0\x82\xaa\xaa\x13\x42\ \x88\x41\xc4\x37\xce\xf9\xbd\xef\xfb\x67\x5b\xba\xfe\xdc\xf6\x69\ \x2d\x73\x08\x63\x3d\x16\x8b\xad\xa6\x52\xa9\x70\x3c\x1e\x77\x31\ \x77\x2a\x96\x95\xf8\x2a\x16\x27\xf3\x9f\x9f\xd3\x3b\xba\x7e\x8c\ \xe3\x0f\x00\xf3\x00\x22\x20\x99\x4c\xae\x65\x32\x19\x1b\x99\x1c\ \xda\xb3\xeb\x75\x4b\x11\xc2\xea\x89\x46\xcd\xfe\x44\xa2\x96\x2f\ \x95\x66\x9a\x42\x50\x59\x7b\x1a\x95\x44\x19\xd2\xe9\xb4\x03\x40\ \x08\xce\x7d\xbb\x56\xb3\x20\x33\x10\x60\x17\x31\xca\xf9\x4b\x93\ \xb1\x39\xf8\x6f\x34\x18\x97\xa8\xa4\x48\x24\xe2\x34\x3d\xcf\xfe\ \x03\xb4\xe6\x9e\xeb\x9a\xc8\x60\x85\x18\xbb\xe6\x52\xce\x6b\xb8\ \xec\x38\xee\xe0\xb9\xb6\xfd\xfd\xdf\x4c\x6a\xfa\xbe\xc5\x19\x33\ \x49\xa8\xed\x11\xf0\xa2\x86\x57\x1a\x50\xa4\xfc\xa8\x57\x2a\xa5\ \x06\x4c\x4e\x0b\xa0\x39\x4e\xed\x00\x02\x99\x00\xbc\x33\x45\x31\ \xe8\x21\xde\x4a\x85\x82\x1b\x92\xb2\xd8\xce\xe2\x34\x1a\x1d\x63\ \x1b\x82\x2c\xa1\x28\x7d\xe4\xd7\xd0\x87\x87\x72\xb9\x3c\xda\xad\ \xaa\x05\x02\x5c\xcf\x23\x73\x60\xfa\x0d\x6c\x1a\x46\x0d\x8f\x30\ \x05\xe8\x99\xca\x3b\x31\xab\xd5\x0b\x9f\xb1\x6f\x29\x44\xe1\xbf\ \x99\x0e\x00\xe0\x02\xe8\x05\xb0\x0c\xad\x68\xd4\xe9\x5c\x36\x7b\ \x5a\x65\x6c\xb2\x8b\x31\x6a\x20\x81\x9d\xd2\xb6\x0c\x43\x00\x88\ \xc3\xbc\x0b\x5d\x92\x3f\x68\x2e\x2e\x77\x28\xf0\x9f\x6c\xc6\x36\ \xb0\x3a\x87\xee\xb0\x97\x47\x1c\x06\x30\xd6\xca\x70\x05\x1d\x91\ \x3d\x80\xe8\x6b\x20\xec\xc3\x70\x8b\x38\x0b\x6d\x43\x43\xd0\x2b\ \xf4\x04\xad\xfe\xfe\x7b\x3f\x19\xc4\x49\xa6\x7a\x07\xda\xac\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x40\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xd2\x49\x44\x41\x54\x28\xcf\x95\ \x92\xbf\x0e\x82\x30\x10\xc6\xdb\xeb\x81\xc6\xc4\x84\xc4\x97\xd5\ \x8d\x8d\x77\x60\x72\xe2\xc1\x74\xe8\xe0\xa0\x0b\x05\x93\xfe\xf1\ \x8a\x50\x8b\x65\x80\x4b\x8e\xbb\xa4\xdf\xaf\xd7\x7e\x14\xeb\xba\ \x3e\x33\xc6\x4a\xb6\x3e\x4a\xa4\x4f\xc5\xb6\x45\x85\x53\x77\x2a\ \x8a\x06\x11\x5f\x00\xd0\x0d\xc9\x79\xa8\x9c\x73\xa5\xb5\xe6\x37\ \x29\xaf\x5e\x1b\xa0\x2c\xcf\x1f\xbb\x2c\x7b\x0a\x21\x14\x02\x28\ \x5f\x87\x04\x68\x7d\x55\x5d\x07\x93\x36\x40\x48\xbb\xa1\x10\xed\ \x28\x9c\x01\x3e\x49\x22\x12\x08\xbe\x8b\xad\x88\xa6\x8c\x13\x07\ \xd0\x39\x87\x29\x44\xbb\x62\x0c\x45\x80\xef\x49\x72\x48\xa0\x20\ \x5a\x38\x1a\x99\x61\x62\xfb\xe2\x49\x33\x21\x8e\x3d\x39\x67\xff\ \x3d\xff\x41\x73\x23\x26\xc0\x2d\xfd\xa8\x00\xa9\xbe\xcf\xb5\x31\ \x7b\xba\xb0\x35\xd6\x3a\x1e\xdd\xc1\x47\xff\x7e\x1f\x13\xe8\x2e\ \x65\xb3\xf6\x49\x78\xe8\xb2\xf5\xed\x7d\x00\xca\xd1\x62\xc7\x6e\ \x2e\xe9\x88\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xaf\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x43\x49\x44\x41\x54\x08\x1d\x63\xc8\x5b\ \x38\xe3\x3a\x0c\xe6\xcc\x62\x70\x92\xeb\xda\x3c\x73\x1f\x08\xb6\ \x2c\xb5\x14\x62\xf8\xcf\xe0\x1e\x50\x3f\xaf\x7e\x5e\xd9\x6c\x27\ \x9d\xff\x0c\x40\x2e\x03\xa3\x4b\x76\x4a\xbd\x85\xfb\x7f\x10\x1b\ \x44\x88\x4a\x29\x87\x81\xe8\xff\x0c\x00\x6d\x8c\x21\x57\xad\xbb\ \x24\x67\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xac\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x40\x49\x44\x41\x54\x08\xd7\x63\xf8\xcf\ \x00\x82\x13\xeb\x93\x95\x40\x34\x98\x33\x25\xea\xc1\xae\x55\x7d\ \x0c\x8c\x60\x6e\x9d\xc1\x95\x2d\x8f\x76\x3d\xda\xd5\x1e\x01\xe4\ \x86\x0a\x1d\x5e\x04\xe2\x3c\xda\x75\x66\x43\x92\x1c\x43\x5d\xf7\ \xae\x9d\x30\xd8\x38\x01\x00\x65\x08\x27\x8f\x6e\x3d\x5d\x1d\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x08\xc7\ \x2e\ \x51\x57\x69\x64\x67\x65\x74\x20\x7b\x0a\x20\x20\x20\x62\x61\x63\ \x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x62\ \x65\x69\x67\x65\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x4e\x69\x63\x65\ \x20\x57\x69\x6e\x64\x6f\x77\x73\x2d\x58\x50\x2d\x73\x74\x79\x6c\ \x65\x20\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x63\x68\x61\x72\x61\ \x63\x74\x65\x72\x2e\x20\x2a\x2f\x0a\x51\x4c\x69\x6e\x65\x45\x64\ \x69\x74\x5b\x65\x63\x68\x6f\x4d\x6f\x64\x65\x3d\x22\x32\x22\x5d\ \x20\x7b\x0a\x20\x20\x20\x20\x6c\x69\x6e\x65\x65\x64\x69\x74\x2d\ \x70\x61\x73\x73\x77\x6f\x72\x64\x2d\x63\x68\x61\x72\x61\x63\x74\ \x65\x72\x3a\x20\x39\x36\x37\x39\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\ \x57\x65\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x61\x20\x6d\x69\x6e\ \x2d\x77\x69\x64\x74\x68\x20\x61\x6e\x64\x20\x6d\x69\x6e\x2d\x68\ \x65\x69\x67\x68\x74\x20\x66\x6f\x72\x20\x70\x75\x73\x68\x20\x62\ \x75\x74\x74\x6f\x6e\x73\x0a\x20\x20\x20\x73\x6f\x20\x74\x68\x61\ \x74\x20\x74\x68\x65\x79\x20\x6c\x6f\x6f\x6b\x20\x65\x6c\x65\x67\ \x61\x6e\x74\x20\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x20\x6f\ \x66\x20\x74\x68\x65\x20\x77\x69\x64\x74\x68\x20\x6f\x66\x20\x74\ \x68\x65\x20\x74\x65\x78\x74\x2e\x20\x2a\x2f\x0a\x51\x50\x75\x73\ \x68\x42\x75\x74\x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\ \x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\ \x70\x61\x6c\x65\x67\x6f\x6c\x64\x65\x6e\x72\x6f\x64\x3b\x0a\x20\ \x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x77\x69\x64\x74\x68\x3a\ \x20\x32\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ \x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x64\x61\x72\x6b\x6b\x68\x61\x6b\ \x69\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x73\x74\ \x79\x6c\x65\x3a\x20\x73\x6f\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x2d\x72\x61\x64\x69\x75\x73\x3a\x20\x35\ \x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x33\ \x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\x69\x6e\x2d\x77\x69\x64\x74\ \x68\x3a\x20\x39\x65\x78\x3b\x0a\x20\x20\x20\x20\x6d\x69\x6e\x2d\ \x68\x65\x69\x67\x68\x74\x3a\x20\x32\x2e\x35\x65\x78\x3b\x0a\x7d\ \x0a\x0a\x51\x50\x75\x73\x68\x42\x75\x74\x74\x6f\x6e\x3a\x68\x6f\ \x76\x65\x72\x20\x7b\x0a\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\ \x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x6b\x68\x61\x6b\x69\ \x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x49\x6e\x63\x72\x65\x61\x73\x65\ \x20\x74\x68\x65\x20\x70\x61\x64\x64\x69\x6e\x67\x2c\x20\x73\x6f\ \x20\x74\x68\x65\x20\x74\x65\x78\x74\x20\x69\x73\x20\x73\x68\x69\ \x66\x74\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x62\x75\ \x74\x74\x6f\x6e\x20\x69\x73\x0a\x20\x20\x20\x70\x72\x65\x73\x73\ \x65\x64\x2e\x20\x2a\x2f\x0a\x51\x50\x75\x73\x68\x42\x75\x74\x74\ \x6f\x6e\x3a\x70\x72\x65\x73\x73\x65\x64\x20\x7b\x0a\x20\x20\x20\ \x20\x70\x61\x64\x64\x69\x6e\x67\x2d\x6c\x65\x66\x74\x3a\x20\x35\ \x70\x78\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x2d\ \x74\x6f\x70\x3a\x20\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x61\ \x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\ \x23\x64\x30\x64\x36\x37\x63\x3b\x0a\x7d\x0a\x0a\x51\x4c\x61\x62\ \x65\x6c\x2c\x20\x51\x41\x62\x73\x74\x72\x61\x63\x74\x42\x75\x74\ \x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x3a\x20\ \x62\x6f\x6c\x64\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x4d\x61\x72\x6b\ \x20\x6d\x61\x6e\x64\x61\x74\x6f\x72\x79\x20\x66\x69\x65\x6c\x64\ \x73\x20\x77\x69\x74\x68\x20\x61\x20\x62\x72\x6f\x77\x6e\x69\x73\ \x68\x20\x63\x6f\x6c\x6f\x72\x2e\x20\x2a\x2f\x0a\x2e\x6d\x61\x6e\ \x64\x61\x74\x6f\x72\x79\x20\x7b\x0a\x20\x20\x20\x20\x63\x6f\x6c\ \x6f\x72\x3a\x20\x62\x72\x6f\x77\x6e\x3b\x0a\x7d\x0a\x0a\x2f\x2a\ \x20\x42\x6f\x6c\x64\x20\x74\x65\x78\x74\x20\x6f\x6e\x20\x73\x74\ \x61\x74\x75\x73\x20\x62\x61\x72\x20\x6c\x6f\x6f\x6b\x73\x20\x61\ \x77\x66\x75\x6c\x2e\x20\x2a\x2f\x0a\x51\x53\x74\x61\x74\x75\x73\ \x42\x61\x72\x20\x51\x4c\x61\x62\x65\x6c\x20\x7b\x0a\x20\x20\x20\ \x66\x6f\x6e\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x7d\x0a\ \x0a\x51\x53\x74\x61\x74\x75\x73\x42\x61\x72\x3a\x3a\x69\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x77\ \x69\x64\x74\x68\x3a\x20\x31\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\ \x64\x65\x72\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x64\x61\x72\x6b\x6b\ \x68\x61\x6b\x69\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ \x2d\x73\x74\x79\x6c\x65\x3a\x20\x73\x6f\x6c\x69\x64\x3b\x0a\x20\ \x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\x61\x64\x69\x75\x73\ \x3a\x20\x32\x3b\x0a\x7d\x0a\x0a\x51\x43\x6f\x6d\x62\x6f\x42\x6f\ \x78\x2c\x20\x51\x4c\x69\x6e\x65\x45\x64\x69\x74\x2c\x20\x51\x53\ \x70\x69\x6e\x42\x6f\x78\x2c\x20\x51\x54\x65\x78\x74\x45\x64\x69\ \x74\x2c\x20\x51\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\x20\ \x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\ \x6c\x6f\x72\x3a\x20\x63\x6f\x72\x6e\x73\x69\x6c\x6b\x3b\x0a\x20\ \x20\x20\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x2d\x63\x6f\x6c\ \x6f\x72\x3a\x20\x23\x30\x61\x32\x31\x34\x63\x3b\x20\x0a\x20\x20\ \x20\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x2d\x62\x61\x63\x6b\ \x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x43\ \x31\x39\x41\x36\x42\x3b\x0a\x7d\x0a\x0a\x51\x4c\x69\x73\x74\x56\ \x69\x65\x77\x20\x7b\x0a\x20\x20\x20\x20\x73\x68\x6f\x77\x2d\x64\ \x65\x63\x6f\x72\x61\x74\x69\x6f\x6e\x2d\x73\x65\x6c\x65\x63\x74\ \x65\x64\x3a\x20\x31\x3b\x0a\x7d\x0a\x0a\x51\x4c\x69\x73\x74\x56\ \x69\x65\x77\x3a\x3a\x69\x74\x65\x6d\x3a\x68\x6f\x76\x65\x72\x20\ \x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ \x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x77\x68\x65\x61\x74\x3b\x0a\x7d\ \x0a\x0a\x2f\x2a\x20\x57\x65\x20\x72\x65\x73\x65\x72\x76\x65\x20\ \x31\x20\x70\x69\x78\x65\x6c\x20\x73\x70\x61\x63\x65\x20\x69\x6e\ \x20\x70\x61\x64\x64\x69\x6e\x67\x2e\x20\x57\x68\x65\x6e\x20\x77\ \x65\x20\x67\x65\x74\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\x2c\ \x0a\x20\x20\x20\x77\x65\x20\x6b\x69\x6c\x6c\x20\x74\x68\x65\x20\ \x70\x61\x64\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x65\x6e\x6c\x61\ \x72\x67\x65\x20\x74\x68\x65\x20\x62\x6f\x72\x64\x65\x72\x2e\x20\ \x54\x68\x69\x73\x20\x6d\x61\x6b\x65\x73\x20\x74\x68\x65\x20\x69\ \x74\x65\x6d\x73\x0a\x20\x20\x20\x67\x6c\x6f\x77\x2e\x20\x2a\x2f\ \x0a\x51\x4c\x69\x6e\x65\x45\x64\x69\x74\x2c\x20\x51\x46\x72\x61\ \x6d\x65\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\ \x77\x69\x64\x74\x68\x3a\x20\x32\x70\x78\x3b\x0a\x20\x20\x20\x20\ \x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x31\x70\x78\x3b\x0a\x20\x20\ \x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x73\x74\x79\x6c\x65\x3a\x20\ \x73\x6f\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\ \x72\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x64\x61\x72\x6b\x6b\x68\x61\ \x6b\x69\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\ \x61\x64\x69\x75\x73\x3a\x20\x35\x70\x78\x3b\x0a\x7d\x0a\x0a\x2f\ \x2a\x20\x41\x73\x20\x6d\x65\x6e\x74\x69\x6f\x6e\x65\x64\x20\x61\ \x62\x6f\x76\x65\x2c\x20\x65\x6c\x69\x6d\x69\x6e\x61\x74\x65\x20\ \x74\x68\x65\x20\x70\x61\x64\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\ \x69\x6e\x63\x72\x65\x61\x73\x65\x20\x74\x68\x65\x20\x62\x6f\x72\ \x64\x65\x72\x2e\x20\x2a\x2f\x0a\x51\x4c\x69\x6e\x65\x45\x64\x69\ \x74\x3a\x66\x6f\x63\x75\x73\x2c\x20\x51\x46\x72\x61\x6d\x65\x3a\ \x66\x6f\x63\x75\x73\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ \x65\x72\x2d\x77\x69\x64\x74\x68\x3a\x20\x33\x70\x78\x3b\x0a\x20\ \x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\x78\x3b\ \x0a\x7d\x0a\x0a\x2f\x2a\x20\x41\x20\x51\x4c\x61\x62\x65\x6c\x20\ \x69\x73\x20\x61\x20\x51\x46\x72\x61\x6d\x65\x20\x2e\x2e\x2e\x20\ \x2a\x2f\x0a\x51\x4c\x61\x62\x65\x6c\x20\x7b\x0a\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x3a\x20\x6e\x6f\x6e\x65\x3b\x0a\x20\x20\ \x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x3b\x0a\x20\x20\ \x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x20\x6e\x6f\ \x6e\x65\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x41\x20\x51\x54\x6f\x6f\ \x6c\x54\x69\x70\x20\x69\x73\x20\x61\x20\x51\x4c\x61\x62\x65\x6c\ \x20\x2e\x2e\x2e\x20\x2a\x2f\x0a\x51\x54\x6f\x6f\x6c\x54\x69\x70\ \x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x3a\x20\x32\ \x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x64\x61\x72\x6b\x6b\x68\x61\ \x6b\x69\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ \x20\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ \x2d\x72\x61\x64\x69\x75\x73\x3a\x20\x33\x70\x78\x3b\x0a\x20\x20\ \x20\x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x32\x30\x30\x3b\x0a\ \x7d\x0a\x0a\x2f\x2a\x20\x4e\x69\x63\x65\x20\x74\x6f\x20\x68\x61\ \x76\x65\x20\x74\x68\x65\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\ \x64\x20\x63\x6f\x6c\x6f\x72\x20\x63\x68\x61\x6e\x67\x65\x20\x77\ \x68\x65\x6e\x20\x68\x6f\x76\x65\x72\x65\x64\x2e\x20\x2a\x2f\x0a\ \x51\x52\x61\x64\x69\x6f\x42\x75\x74\x74\x6f\x6e\x3a\x68\x6f\x76\ \x65\x72\x2c\x20\x51\x43\x68\x65\x63\x6b\x42\x6f\x78\x3a\x68\x6f\ \x76\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\ \x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x77\x68\x65\x61\ \x74\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x46\x6f\x72\x63\x65\x20\x74\ \x68\x65\x20\x64\x69\x61\x6c\x6f\x67\x27\x73\x20\x62\x75\x74\x74\ \x6f\x6e\x73\x20\x74\x6f\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x74\x68\ \x65\x20\x57\x69\x6e\x64\x6f\x77\x73\x20\x67\x75\x69\x64\x65\x6c\ \x69\x6e\x65\x73\x2e\x20\x2a\x2f\x0a\x51\x44\x69\x61\x6c\x6f\x67\ \x42\x75\x74\x74\x6f\x6e\x42\x6f\x78\x20\x7b\x0a\x20\x20\x20\x20\ \x62\x75\x74\x74\x6f\x6e\x2d\x6c\x61\x79\x6f\x75\x74\x3a\x20\x30\ \x3b\x0a\x7d\x0a\x0a\x0a\ \x00\x00\x00\x17\ \x2f\ \x2a\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x79\x6c\x65\x73\x68\x65\ \x65\x74\x20\x2a\x2f\x0a\ \x00\x00\x06\xb0\ \x00\ \x00\x1a\x79\x78\x9c\xa5\x59\x6d\x6f\xdb\x36\x10\xfe\xee\x5f\x71\ \xe8\x3e\xa4\x4d\xe3\xbc\xb5\x4e\x51\x05\x1d\xd0\x14\x5b\x31\xa0\ \xd9\xea\x25\x58\x07\x14\x45\x40\x49\xb4\x4d\x44\x16\x05\x92\x8a\ \xe3\x6d\xfd\xef\xbb\xe3\x8b\x2c\x59\x92\x5f\xd2\x02\x2d\x2c\xea\ \x78\x2f\xcf\x3d\x3c\xde\xa9\x27\x87\xf0\xa1\xd4\x46\xce\xc5\x3f\ \x1c\x58\xbe\x84\x22\x63\x22\x87\x85\x48\xa7\xdc\x80\x99\x31\x03\ \x42\x03\x83\x64\x26\xb2\x14\xe4\x04\x7f\x8e\xaf\x51\xe2\x8b\xc8\ \x53\xb9\x38\x86\xc3\x93\x41\xed\x19\x7e\x86\xe3\xf1\x17\xb7\xf7\ \xdf\x01\xe0\x9f\x98\x25\xf7\x53\x25\xcb\x3c\x1d\x26\x32\x93\x2a\ \x82\x29\x4a\xeb\x58\x2a\x79\xb9\x2e\x20\xe6\x6c\xca\x23\x28\x55\ \xf6\x3c\x3a\xb1\x0f\xfa\xa4\xc0\x7f\x27\x32\x4b\x8f\x8b\x7c\xfa\ \xa2\xb5\xa3\x90\x5a\x18\x21\xf3\x08\x8c\x2c\x40\x89\xe9\xcc\xb4\ \x64\x14\x2f\x38\x33\x11\xe4\xd2\xff\x1c\x7c\x1f\x0c\x4e\x0e\xe1\ \xb3\x92\x0f\x22\xc5\xa0\xa1\x60\x69\x2a\xf2\x29\x4c\xa4\xc2\x88\ \x39\x64\x6c\x29\x4b\x8c\x3b\xd7\xf4\x9e\x56\x26\x8a\xcd\xf9\x31\ \xdc\x86\x9f\x64\x83\x3f\x0a\x6d\x34\xc8\x3c\x5b\xa2\x75\x28\x7a\ \xd5\xa1\x6b\x43\xeb\x1a\xd8\x98\x8e\x40\x4b\x58\x78\x15\x45\x26\ \x12\x61\x50\x43\x2a\x34\x8b\x33\x67\x0d\xc1\x49\xb9\xb2\xd8\xfe\ \x34\x47\xb4\x7e\x25\x93\x1e\x4f\xaf\xdc\x29\x8c\xe0\xd5\x69\xf1\ \xe8\x23\xb6\x9b\x86\xda\x2c\x33\x4e\xc1\xe6\xbc\xb1\xee\xb1\xb5\ \xeb\x80\xd1\x6b\x91\x27\x1c\xdd\x00\x8d\xa9\x62\x0d\x29\x88\x79\ \x86\xa9\x44\xeb\x0e\xa8\x95\x0b\x0b\x99\x1f\x18\x98\xb1\x07\xf2\ \x13\x69\xd1\xd8\x55\x69\xa4\xf7\x6b\xd1\x91\x11\x61\x08\xa6\x03\ \xf2\xe0\x00\x4a\x4d\x08\x31\x98\x4b\x85\x3b\x0b\x9e\x88\x89\x48\ \x50\x2c\xe3\x89\x91\x2e\xf4\xb1\xb5\x79\x04\xe3\x4f\x22\xe7\xbf\ \xa4\xc2\xe0\xcf\x0f\x72\x1e\xcb\x2b\xf9\xf8\x95\xe3\x33\xe1\xf5\ \xee\x99\x51\x25\x7f\xf6\x0d\xdf\xdd\x14\x22\xc7\x57\x81\x77\x8d\ \xb0\x1b\x94\x72\xc9\x24\x3e\xc1\xeb\x06\x46\x48\x7a\x33\x43\x4c\ \x2f\x29\xf0\xf1\x27\x86\x38\x34\xb4\x6d\x81\xb5\x9e\x9f\x08\x4e\ \xd7\x89\x18\xa4\x1c\xa8\xd7\xec\x1e\x41\xe4\x8f\x44\x33\x98\x73\ \xad\x2d\xf0\xf2\x91\x6b\x8f\x02\x45\xe7\x8f\x97\x7b\xbb\x8a\x0d\ \xb7\x23\x26\xf7\xfa\x7d\x92\xe0\x2b\x81\x82\x57\xcb\x6b\x59\x6a\ \x0e\xff\xc1\x2d\xaa\xbc\xa9\x14\x84\x75\x54\x43\x1b\xbd\x1d\x34\ \x33\x24\xd3\x43\x91\x1b\xae\x58\x42\x27\x68\x38\xc9\xd8\x54\x47\ \x30\x22\x07\x51\x94\x7c\xbc\xb1\x15\x80\x7b\x87\x50\x08\xec\x11\ \xd6\x96\xd9\x2c\xcb\x7c\x95\xd0\xce\xcd\xc6\xb1\xaf\xb6\x84\x53\ \x1f\x67\x08\xc4\xe5\xda\xbb\x76\x71\xb8\x11\xd9\x03\x57\x4e\xae\ \xb9\xb3\x0e\x1b\xfa\xc4\x73\x23\x90\x3a\x0a\x89\xea\xf4\xf1\x94\ \x90\x14\x86\xcf\xe1\x41\xf0\x85\x77\xea\x7d\xac\x0d\x45\xf8\x1b\ \xae\xff\x85\xcb\xc1\xbd\x99\x5c\x0c\x53\x9e\x48\xc5\xac\x23\x41\ \x45\x04\x67\xc1\xd2\xef\x02\xd9\xec\xaa\x9a\xfe\xfb\xb3\x3b\x57\ \x98\x5d\xad\x17\x98\x79\x2c\x87\x8c\xd4\x72\x65\xb1\xa8\x96\x33\ \xa4\x2a\x10\x37\xbd\xf9\x40\xdd\xaf\x3c\x99\xc9\x6b\x99\x22\x5f\ \xcf\x9f\x7d\xf3\x4e\x90\x30\xc9\x0e\xc3\xf6\x61\xa5\x35\x82\xb7\ \x17\x6f\xde\x06\x57\x56\x05\xda\x48\x99\x19\x51\x78\xed\xb7\xf8\ \x74\x2b\x8a\xde\x4a\xab\xa6\xf1\xf3\xf3\xd3\xd3\x23\xfb\x77\x34\ \x7a\xd1\x60\xae\x97\x49\x99\xba\xd7\x19\x33\x7c\xaa\xd8\xb2\xeb\ \x34\x9c\x75\x17\x18\x2d\x33\x91\xae\x51\xfe\x55\x10\x9d\xc8\x1c\ \x6b\x53\x8c\x65\xbb\xb1\x55\xb1\x54\x94\xba\x26\x27\x0b\x86\xf5\ \x61\x19\x01\x7a\xd8\x0e\x96\xc4\x25\xc4\xa5\x31\x32\x77\x11\x0f\ \xc6\x7f\xd2\xda\x95\x5d\x0a\xa9\x24\x1d\x64\x7d\x44\x5a\xbf\x37\ \x65\xa2\x08\x13\x28\x12\x86\x35\xc5\x8b\x87\xa8\x2a\x1f\x66\xdc\ \x55\x52\xb7\xd2\xbf\x3f\x8a\xca\x3c\x99\xf1\xe4\x1e\x89\xe6\x54\ \x75\xd5\x16\xeb\xb3\x73\xf9\xae\x92\xf7\x77\xd7\x06\xdd\x95\x68\ \x34\x93\xc8\xff\x7d\x0d\xdc\xd9\x5d\xfb\x98\x29\x14\x96\x82\xfd\ \x23\xb9\xf3\xfb\xb6\x9b\x8a\xf6\xc3\x6a\x67\xa4\x9e\x82\xd3\x9e\ \x28\x3d\x0d\xa3\x5e\x84\x1a\x9c\x66\x0a\x2b\x96\x27\xf3\x61\x14\ \x61\x71\xc9\x87\x76\xed\x08\xf0\x71\xce\xf3\x72\xb8\xce\xd8\x2e\ \xc3\xb4\xef\xce\xee\xab\xf5\x45\x9e\xda\x6f\xd6\x99\xfd\xc6\x13\ \xbb\x61\x2f\xf2\x0d\x47\x6a\x0d\xd7\xd6\xe5\x64\xe2\x0c\x6f\xb6\ \x7b\x17\xf6\xaf\x02\x45\x3d\x65\xe1\xb4\x6c\x70\xbd\x2c\x9e\xe2\ \x78\x50\xdc\x74\xbb\x5a\xdd\xe8\x74\xb0\xd8\xe1\x72\x23\x37\x45\ \xa9\x67\xa1\xdc\x60\x2b\x8c\x45\x9e\xba\x0d\x7b\x27\x1f\xc3\x1f\ \xa5\x02\xc5\x59\x3a\xb4\xfd\x5e\x78\x63\x4d\x6a\x40\x5a\x61\x8f\ \x23\xe6\x22\x63\x8a\x9a\x1c\x56\xd7\x65\xfb\x3d\xbc\xb2\x50\x02\ \xcb\xbb\xbb\xbd\x34\x75\x53\xae\x2a\x3a\x97\x7d\x79\xfb\x8c\xdb\ \x1a\xd5\x6d\x2e\xf2\x50\x88\x5f\xf3\xb9\xa3\xed\x4a\xa8\xbb\x23\ \x9a\xb0\x4c\x53\x4b\x34\xe8\x6f\x97\x30\xe3\x0a\xbb\x52\x4a\xe7\ \xf6\x7e\x89\x62\x71\xa1\xb8\xa6\x69\xd4\x75\x4d\x8c\xd6\x7d\x73\ \x27\x74\xa3\x87\x5e\x64\x37\x3f\x2b\x7d\xd7\x78\x48\xae\x18\x56\ \x18\xba\xeb\x1b\x75\x60\xa7\x18\x6a\x55\x60\xd7\x48\xfc\x91\xde\ \x1c\x0b\x66\x63\xc7\x40\x6c\xde\x9a\x51\xc8\xbd\xd2\xd0\xa8\x31\ \x9b\x82\x68\x5e\xa7\x2d\xf6\xf2\x70\xab\xf6\x87\xb5\x36\x75\x64\ \x7c\x62\x6a\xf7\xf7\xda\x30\x72\x4e\xc3\x88\x1d\x2e\xf0\x4e\xe6\ \xd5\xfc\xe3\x2a\x82\x1b\x27\x36\x21\xd8\xe2\xa4\x2e\xe3\x04\x3b\ \x09\x25\xb3\xa1\x44\x13\x02\xc7\x3c\x6f\xf1\x72\xfd\x7d\xef\x20\ \x18\xee\xfb\xd1\x5a\x1b\x43\x91\x74\xf4\x32\xf5\xb7\xb5\x0e\xa9\ \xd5\x1c\x59\x81\x7a\x87\xb4\x35\xb6\xaa\xc2\xf6\x07\x47\xcf\xd8\ \xd7\x6e\x08\x2e\xe1\xd4\xb1\x7b\xf0\xab\x55\xc5\xb1\x81\x13\x0f\ \x7e\x02\x71\x39\x3a\xf3\xa9\x38\x83\x42\x3c\xe2\x1c\x43\xd8\x5a\ \x68\x7d\xd5\xa9\xa6\x3b\x9a\x69\x03\x21\x7c\xaa\x04\x4d\xb5\xb0\ \x98\xf1\xdc\xe6\xaf\x90\x45\x59\xd8\xc5\x82\xe7\xae\xf3\xdc\x2d\ \xd2\x15\xad\xfb\x7c\xc5\x64\xd5\x3a\x4c\xe7\xf9\xb9\x87\xb3\x41\ \xde\x60\x67\x27\xee\xba\x23\xd7\x3d\x30\x9f\x5d\x6c\xc8\x56\x5f\ \x71\xec\xc8\x95\x83\x71\x7f\x1e\xae\xce\x4e\x25\xc9\x62\x24\x60\ \x69\xea\x90\x9c\xaf\xd8\x8a\x07\x7e\x5e\x5b\x08\x47\x6d\x9f\x28\ \xf6\xab\xb0\x3b\x57\xb1\x66\xc9\xf2\x01\xda\x12\x00\x7d\x47\xe5\ \x95\x67\xe5\x82\x03\xcd\x3e\xee\xe3\x09\x09\xb8\xfb\xd6\xb2\x1b\ \x33\xa6\xcc\x8a\x9f\x37\x33\x31\x31\xb5\x3a\x62\x69\x29\xcc\xc1\ \x16\x3a\x56\x0e\xff\x20\x1b\xcf\xba\xd8\x68\x7b\x3d\x58\xb1\x70\ \xfc\x81\x16\x56\x03\x7a\x7b\x26\x09\x02\x4f\x1a\x48\x3a\x36\xef\ \x34\x8c\x58\x09\xf4\xb2\x73\x12\xd9\xa8\x74\x6b\x7b\xdd\x56\xdd\ \xea\xae\x37\x1b\xd8\xde\x5c\x77\x98\x68\x4f\x1f\x5d\x46\xf6\x00\ \x66\x37\x58\xf6\x06\x65\x1f\x48\x9e\x00\xc8\x6e\xa3\x86\xed\x33\ \xe9\xc7\x54\x89\xc2\xd1\xf4\x06\x1f\x3f\xaa\xea\x8b\x41\x97\x11\ \xda\x61\x37\xb4\xda\x73\x57\x39\x1b\x0c\xbd\xe8\x3a\x1c\x64\x97\ \x06\x19\x88\x99\x0a\x1f\xb0\x6c\xaf\xd3\xd9\xe2\xb4\xbe\xa8\xf5\ \x7d\xc0\xec\xf9\x1c\xe1\x0a\x64\xff\x4d\xee\xdf\xf7\x7f\xed\xa8\ \xbe\x5e\x74\xde\x3b\xba\x10\x39\xd4\xaf\x9b\xea\x2b\x23\x74\xde\ \x2e\xd5\x81\xf7\x72\x76\x46\x89\x1b\xdf\x2b\x7e\xec\x2e\x69\x65\ \xc4\x5e\xf2\x17\xf0\x12\xce\x0f\x11\x9b\x06\x5a\xf0\xce\x3a\x54\ \x7d\x90\x7e\x49\xf5\x97\xca\x2b\xd6\xd9\x5a\x1f\xb0\xa5\xef\x24\ \x08\x4a\xc7\x07\xfa\x3a\xd6\x93\x92\xee\x98\x77\x6d\xcf\x9d\x8d\ \x7a\x6b\x7e\xd6\xab\xb2\x79\x50\xb6\x2b\x6d\x34\xcb\xeb\x6a\xed\ \xf5\xf0\xc3\xf9\x71\x24\xeb\x4d\xd1\x2e\x8e\x92\x23\xdb\x30\xae\ \x2d\xd3\xff\x29\x84\x1b\xb7\x3f\xa4\x7d\xe0\xb7\xa3\xfd\x86\x04\ \xd4\xd5\xee\x95\x02\xab\xb8\x9d\x84\xff\x01\xe3\xe9\xc7\xaf\ " qt_resource_name = b"\ \x00\x03\ \x00\x00\x78\xa3\ \x00\x71\ \x00\x73\x00\x73\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x16\ \x0b\x31\x44\x87\ \x00\x70\ \x00\x75\x00\x73\x00\x68\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\ \x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x08\x38\x8c\x47\ \x00\x66\ \x00\x72\x00\x61\x00\x6d\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1c\ \x0e\x3c\xde\x07\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\ \x00\x64\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x09\xaf\x5e\x27\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x06\xe6\xe6\x67\ \x00\x75\ \x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x05\xcc\x19\x47\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x19\ \x08\x11\x29\x47\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\ \x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1f\ \x0c\x85\x15\xa7\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\ \x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x06\x41\x40\x87\ \x00\x73\ \x00\x69\x00\x7a\x00\x65\x00\x67\x00\x72\x00\x69\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1c\ \x02\x75\x51\x87\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\ \x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x16\ \x01\x75\xcc\x87\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\ \x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x0b\xc2\xcd\x07\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x5f\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x09\x87\xa0\x87\ \x00\x70\ \x00\x75\x00\x73\x00\x68\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x07\x5f\x75\x87\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x0c\xba\x0b\x87\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0c\xe8\xe0\xe7\ \x00\x70\ \x00\x61\x00\x67\x00\x65\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x17\ \x04\xb5\xb5\xa7\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\ \x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x02\x9c\x73\xc7\ \x00\x70\ \x00\x75\x00\x73\x00\x68\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1d\ \x05\xbc\x2c\x47\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\ \x00\x65\x00\x64\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x12\ \x03\xe4\x59\x27\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\ \x00\x67\ \x00\x1f\ \x00\xbd\x9c\xe7\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\ \x00\x65\x00\x64\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1a\ \x03\x0e\xe4\x87\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\ \x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x05\x6a\xa8\xa7\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x12\ \x0f\x99\xfb\x67\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\ \x00\x67\ \x00\x14\ \x07\xec\xd1\xc7\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x17\ \x0c\xab\x51\x07\ \x00\x64\ \x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\ \x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x21\ \x09\x84\x6e\x87\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\ \x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \ \x00\x1e\ \x00\x4f\xcb\xe7\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\ \x00\x64\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x04\xa2\xfc\xa7\ \x00\x64\ \x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x15\ \x0f\xf3\xc0\x07\ \x00\x75\ \x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\ \x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0c\xbd\x13\x23\ \x00\x63\ \x00\x6f\x00\x66\x00\x66\x00\x65\x00\x65\x00\x2e\x00\x71\x00\x73\x00\x73\ \x00\x0b\ \x0c\xe2\x21\xa3\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x71\x00\x73\x00\x73\ \x00\x0c\ \x0c\xe8\xef\x03\ \x00\x70\ \x00\x61\x00\x67\x00\x65\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x71\x00\x73\x00\x73\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x21\ \x00\x00\x00\x0c\x00\x02\x00\x00\x00\x1e\x00\x00\x00\x03\ \x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x00\x27\xcf\ \x00\x00\x03\x80\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x5d\ \x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xbf\ \x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x12\ \x00\x00\x02\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x19\x13\ \x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x20\xb8\ \x00\x00\x03\x56\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x44\ \x00\x00\x05\x42\x00\x00\x00\x00\x00\x01\x00\x00\x29\x13\ \x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x17\xac\ \x00\x00\x03\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x21\xc6\ \x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x2c\ \x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x05\x8a\ \x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x09\x8d\ \x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x04\xc1\ \x00\x00\x02\x56\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x89\ \x00\x00\x04\x56\x00\x00\x00\x00\x00\x01\x00\x00\x23\xe2\ \x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x06\xa9\ \x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x02\x05\ \x00\x00\x04\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x25\x9f\ \x00\x00\x02\x28\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x78\ \x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x03\xa9\ \x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x62\ \x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x07\x9d\ \x00\x00\x04\x84\x00\x00\x00\x00\x00\x01\x00\x00\x24\xed\ \x00\x00\x02\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x10\xa2\ \x00\x00\x02\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x11\x9f\ \x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x03\x06\ \x00\x00\x04\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x22\xd2\ \x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x29\xc6\ \x00\x00\x05\x94\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x76\ \x00\x00\x05\xae\x00\x00\x00\x00\x00\x01\x00\x00\x33\x41\ \x00\x00\x05\xca\x00\x01\x00\x00\x00\x01\x00\x00\x33\x5c\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/widgets/stylesheet/stylesheeteditor.py0000644000076500000240000001071512613140041024701 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import pyqtSlot, QFile, QRegExp, Qt, QTextStream from PyQt5.QtWidgets import (QApplication, QDialog, QFileDialog, QMessageBox, QStyleFactory) from ui_stylesheeteditor import Ui_StyleSheetEditor class StyleSheetEditor(QDialog): def __init__(self, parent=None): super(StyleSheetEditor, self).__init__(parent) self.ui = Ui_StyleSheetEditor() self.ui.setupUi(self) regExp = QRegExp(r'.(.*)\+?Style') defaultStyle = QApplication.style().metaObject().className() if regExp.exactMatch(defaultStyle): defaultStyle = regExp.cap(1) self.ui.styleCombo.addItems(QStyleFactory.keys()) self.ui.styleCombo.setCurrentIndex( self.ui.styleCombo.findText(defaultStyle, Qt.MatchContains)) self.ui.styleSheetCombo.setCurrentIndex( self.ui.styleSheetCombo.findText('Coffee')) self.loadStyleSheet('Coffee') @pyqtSlot(str) def on_styleCombo_activated(self, styleName): QApplication.setStyle(styleName) self.ui.applyButton.setEnabled(False) @pyqtSlot(str) def on_styleSheetCombo_activated(self, sheetName): self.loadStyleSheet(sheetName) def on_styleTextEdit_textChanged(self): self.ui.applyButton.setEnabled(True) def on_applyButton_clicked(self): QApplication.instance().setStyleSheet( self.ui.styleTextEdit.toPlainText()) self.ui.applyButton.setEnabled(False) def on_saveButton_clicked(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: self.saveStyleSheet(fileName) def loadStyleSheet(self, sheetName): file = QFile(':/qss/%s.qss' % sheetName.lower()) file.open(QFile.ReadOnly) styleSheet = file.readAll() try: # Python v2. styleSheet = unicode(styleSheet, encoding='utf8') except NameError: # Python v3. styleSheet = str(styleSheet, encoding='utf8') self.ui.styleTextEdit.setPlainText(styleSheet) QApplication.instance().setStyleSheet(styleSheet) self.ui.applyButton.setEnabled(False) def saveStyleSheet(self, fileName): styleSheet = self.ui.styleTextEdit.toPlainText() file = QFile(fileName) if file.open(QFile.WriteOnly): QTextStream(file) << styleSheet else: QMessageBox.information(self, "Unable to open file", file.errorString()) PyQt-gpl-5.5.1/examples/widgets/stylesheet/stylesheeteditor.ui0000644000076500000240000001042312613140041024662 0ustar philstaff00000000000000 StyleSheetEditor 0 0 445 289 Style Editor 9 6 Qt::Horizontal QSizePolicy::MinimumExpanding 32 20 Qt::Horizontal QSizePolicy::MinimumExpanding 32 20 Default Coffee Pagefold Qt::Horizontal QSizePolicy::Fixed 10 16 0 0 0 0 Style: 6 0 Qt::Horizontal 321 20 true &Save false &Apply 0 0 Style Sheet: PyQt-gpl-5.5.1/examples/widgets/stylesheet/ui_mainwindow.py0000644000076500000240000002612412613140041024153 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created: Fri Jul 26 06:49:55 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(400, 413) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.vboxlayout = QtWidgets.QVBoxLayout(self.centralwidget) self.vboxlayout.setContentsMargins(9, 9, 9, 9) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.mainFrame = QtWidgets.QFrame(self.centralwidget) self.mainFrame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.mainFrame.setFrameShadow(QtWidgets.QFrame.Raised) self.mainFrame.setObjectName("mainFrame") self.gridlayout = QtWidgets.QGridLayout(self.mainFrame) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") self.agreeCheckBox = QtWidgets.QCheckBox(self.mainFrame) self.agreeCheckBox.setObjectName("agreeCheckBox") self.gridlayout.addWidget(self.agreeCheckBox, 6, 0, 1, 5) self.label = QtWidgets.QLabel(self.mainFrame) self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTop|QtCore.Qt.AlignTrailing) self.label.setObjectName("label") self.gridlayout.addWidget(self.label, 5, 0, 1, 1) self.nameLabel = QtWidgets.QLabel(self.mainFrame) self.nameLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.nameLabel.setObjectName("nameLabel") self.gridlayout.addWidget(self.nameLabel, 0, 0, 1, 1) self.maleRadioButton = QtWidgets.QRadioButton(self.mainFrame) self.maleRadioButton.setObjectName("maleRadioButton") self.gridlayout.addWidget(self.maleRadioButton, 1, 1, 1, 1) self.passwordLabel = QtWidgets.QLabel(self.mainFrame) self.passwordLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.passwordLabel.setObjectName("passwordLabel") self.gridlayout.addWidget(self.passwordLabel, 3, 0, 1, 1) self.countryCombo = QtWidgets.QComboBox(self.mainFrame) self.countryCombo.setObjectName("countryCombo") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.gridlayout.addWidget(self.countryCombo, 4, 1, 1, 4) self.ageLabel = QtWidgets.QLabel(self.mainFrame) self.ageLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.ageLabel.setObjectName("ageLabel") self.gridlayout.addWidget(self.ageLabel, 2, 0, 1, 1) self.countryLabel = QtWidgets.QLabel(self.mainFrame) self.countryLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.countryLabel.setObjectName("countryLabel") self.gridlayout.addWidget(self.countryLabel, 4, 0, 1, 1) self.genderLabel = QtWidgets.QLabel(self.mainFrame) self.genderLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.genderLabel.setObjectName("genderLabel") self.gridlayout.addWidget(self.genderLabel, 1, 0, 1, 1) self.passwordEdit = QtWidgets.QLineEdit(self.mainFrame) self.passwordEdit.setEchoMode(QtWidgets.QLineEdit.Password) self.passwordEdit.setObjectName("passwordEdit") self.gridlayout.addWidget(self.passwordEdit, 3, 1, 1, 4) self.femaleRadioButton = QtWidgets.QRadioButton(self.mainFrame) self.femaleRadioButton.setObjectName("femaleRadioButton") self.gridlayout.addWidget(self.femaleRadioButton, 1, 2, 1, 2) self.ageSpinBox = QtWidgets.QSpinBox(self.mainFrame) self.ageSpinBox.setMinimum(12) self.ageSpinBox.setProperty("value", 22) self.ageSpinBox.setObjectName("ageSpinBox") self.gridlayout.addWidget(self.ageSpinBox, 2, 1, 1, 2) self.nameCombo = QtWidgets.QComboBox(self.mainFrame) self.nameCombo.setEditable(True) self.nameCombo.setObjectName("nameCombo") self.gridlayout.addWidget(self.nameCombo, 0, 1, 1, 4) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem, 1, 4, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(61, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem1, 2, 3, 1, 2) self.buttonBox = QtWidgets.QDialogButtonBox(self.mainFrame) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.NoButton|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridlayout.addWidget(self.buttonBox, 7, 3, 1, 2) self.professionList = QtWidgets.QListWidget(self.mainFrame) self.professionList.setObjectName("professionList") item = QtWidgets.QListWidgetItem() self.professionList.addItem(item) item = QtWidgets.QListWidgetItem() self.professionList.addItem(item) item = QtWidgets.QListWidgetItem() self.professionList.addItem(item) self.gridlayout.addWidget(self.professionList, 5, 1, 1, 4) self.vboxlayout.addWidget(self.mainFrame) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 400, 29)) self.menubar.setObjectName("menubar") self.menu_File = QtWidgets.QMenu(self.menubar) self.menu_File.setObjectName("menu_File") self.menu_Help = QtWidgets.QMenu(self.menubar) self.menu_Help.setObjectName("menu_Help") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.exitAction = QtWidgets.QAction(MainWindow) self.exitAction.setObjectName("exitAction") self.aboutQtAction = QtWidgets.QAction(MainWindow) self.aboutQtAction.setObjectName("aboutQtAction") self.editStyleAction = QtWidgets.QAction(MainWindow) self.editStyleAction.setObjectName("editStyleAction") self.aboutAction = QtWidgets.QAction(MainWindow) self.aboutAction.setObjectName("aboutAction") self.menu_File.addAction(self.editStyleAction) self.menu_File.addSeparator() self.menu_File.addAction(self.exitAction) self.menu_Help.addAction(self.aboutAction) self.menu_Help.addAction(self.aboutQtAction) self.menubar.addAction(self.menu_File.menuAction()) self.menubar.addAction(self.menu_Help.menuAction()) self.label.setBuddy(self.professionList) self.nameLabel.setBuddy(self.nameCombo) self.passwordLabel.setBuddy(self.passwordEdit) self.ageLabel.setBuddy(self.ageSpinBox) self.countryLabel.setBuddy(self.countryCombo) self.retranslateUi(MainWindow) self.countryCombo.setCurrentIndex(6) self.professionList.setCurrentRow(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Style Sheet")) self.agreeCheckBox.setToolTip(_translate("MainWindow", "Please read the LICENSE file before checking")) self.agreeCheckBox.setText(_translate("MainWindow", "I accept the terms and &conditions")) self.label.setText(_translate("MainWindow", "Profession:")) self.nameLabel.setText(_translate("MainWindow", "&Name:")) self.maleRadioButton.setToolTip(_translate("MainWindow", "Check this if you are male")) self.maleRadioButton.setText(_translate("MainWindow", "&Male")) self.passwordLabel.setText(_translate("MainWindow", "&Password:")) self.countryCombo.setToolTip(_translate("MainWindow", "Specify country of origin")) self.countryCombo.setStatusTip(_translate("MainWindow", "Specify country of origin")) self.countryCombo.setItemText(0, _translate("MainWindow", "Egypt")) self.countryCombo.setItemText(1, _translate("MainWindow", "France")) self.countryCombo.setItemText(2, _translate("MainWindow", "Germany")) self.countryCombo.setItemText(3, _translate("MainWindow", "India")) self.countryCombo.setItemText(4, _translate("MainWindow", "Italy")) self.countryCombo.setItemText(5, _translate("MainWindow", "Norway")) self.countryCombo.setItemText(6, _translate("MainWindow", "Pakistan")) self.ageLabel.setText(_translate("MainWindow", "&Age:")) self.countryLabel.setText(_translate("MainWindow", "Country:")) self.genderLabel.setText(_translate("MainWindow", "Gender:")) self.passwordEdit.setToolTip(_translate("MainWindow", "Specify your password")) self.passwordEdit.setStatusTip(_translate("MainWindow", "Specify your password")) self.passwordEdit.setText(_translate("MainWindow", "Password")) self.femaleRadioButton.setToolTip(_translate("MainWindow", "Check this if you are female")) self.femaleRadioButton.setText(_translate("MainWindow", "&Female")) self.ageSpinBox.setToolTip(_translate("MainWindow", "Specify your age")) self.ageSpinBox.setStatusTip(_translate("MainWindow", "Specify your age")) self.nameCombo.setToolTip(_translate("MainWindow", "Specify your name")) self.professionList.setToolTip(_translate("MainWindow", "Select your profession")) self.professionList.setStatusTip(_translate("MainWindow", "Specify your name here")) self.professionList.setWhatsThis(_translate("MainWindow", "Specify your name here")) __sortingEnabled = self.professionList.isSortingEnabled() self.professionList.setSortingEnabled(False) item = self.professionList.item(0) item.setText(_translate("MainWindow", "Developer")) item = self.professionList.item(1) item.setText(_translate("MainWindow", "Student")) item = self.professionList.item(2) item.setText(_translate("MainWindow", "Fisherman")) self.professionList.setSortingEnabled(__sortingEnabled) self.menu_File.setTitle(_translate("MainWindow", "&File")) self.menu_Help.setTitle(_translate("MainWindow", "&Help")) self.exitAction.setText(_translate("MainWindow", "&Exit")) self.aboutQtAction.setText(_translate("MainWindow", "About Qt")) self.editStyleAction.setText(_translate("MainWindow", "Edit &Style...")) self.aboutAction.setText(_translate("MainWindow", "About")) PyQt-gpl-5.5.1/examples/widgets/stylesheet/ui_stylesheeteditor.py0000644000076500000240000001145512613140041025400 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'stylesheeteditor.ui' # # Created: Fri Jul 26 06:50:07 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_StyleSheetEditor(object): def setupUi(self, StyleSheetEditor): StyleSheetEditor.setObjectName("StyleSheetEditor") StyleSheetEditor.resize(445, 289) self.gridlayout = QtWidgets.QGridLayout(StyleSheetEditor) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") spacerItem = QtWidgets.QSpacerItem(32, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem, 0, 6, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(32, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem1, 0, 0, 1, 1) self.styleSheetCombo = QtWidgets.QComboBox(StyleSheetEditor) self.styleSheetCombo.setObjectName("styleSheetCombo") self.styleSheetCombo.addItem("") self.styleSheetCombo.addItem("") self.styleSheetCombo.addItem("") self.gridlayout.addWidget(self.styleSheetCombo, 0, 5, 1, 1) spacerItem2 = QtWidgets.QSpacerItem(10, 16, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem2, 0, 3, 1, 1) self.styleCombo = QtWidgets.QComboBox(StyleSheetEditor) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.styleCombo.sizePolicy().hasHeightForWidth()) self.styleCombo.setSizePolicy(sizePolicy) self.styleCombo.setObjectName("styleCombo") self.gridlayout.addWidget(self.styleCombo, 0, 2, 1, 1) self.label_7 = QtWidgets.QLabel(StyleSheetEditor) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth()) self.label_7.setSizePolicy(sizePolicy) self.label_7.setObjectName("label_7") self.gridlayout.addWidget(self.label_7, 0, 1, 1, 1) self.hboxlayout = QtWidgets.QHBoxLayout() self.hboxlayout.setSpacing(6) self.hboxlayout.setContentsMargins(0, 0, 0, 0) self.hboxlayout.setObjectName("hboxlayout") spacerItem3 = QtWidgets.QSpacerItem(321, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem3) self.saveButton = QtWidgets.QPushButton(StyleSheetEditor) self.saveButton.setEnabled(True) self.saveButton.setObjectName("saveButton") self.hboxlayout.addWidget(self.saveButton) self.applyButton = QtWidgets.QPushButton(StyleSheetEditor) self.applyButton.setEnabled(False) self.applyButton.setObjectName("applyButton") self.hboxlayout.addWidget(self.applyButton) self.gridlayout.addLayout(self.hboxlayout, 2, 0, 1, 7) self.styleTextEdit = QtWidgets.QTextEdit(StyleSheetEditor) self.styleTextEdit.setObjectName("styleTextEdit") self.gridlayout.addWidget(self.styleTextEdit, 1, 0, 1, 7) self.label_8 = QtWidgets.QLabel(StyleSheetEditor) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth()) self.label_8.setSizePolicy(sizePolicy) self.label_8.setObjectName("label_8") self.gridlayout.addWidget(self.label_8, 0, 4, 1, 1) self.retranslateUi(StyleSheetEditor) QtCore.QMetaObject.connectSlotsByName(StyleSheetEditor) def retranslateUi(self, StyleSheetEditor): _translate = QtCore.QCoreApplication.translate StyleSheetEditor.setWindowTitle(_translate("StyleSheetEditor", "Style Editor")) self.styleSheetCombo.setItemText(0, _translate("StyleSheetEditor", "Default")) self.styleSheetCombo.setItemText(1, _translate("StyleSheetEditor", "Coffee")) self.styleSheetCombo.setItemText(2, _translate("StyleSheetEditor", "Pagefold")) self.label_7.setText(_translate("StyleSheetEditor", "Style:")) self.saveButton.setText(_translate("StyleSheetEditor", "&Save")) self.applyButton.setText(_translate("StyleSheetEditor", "&Apply")) self.label_8.setText(_translate("StyleSheetEditor", "Style Sheet:")) PyQt-gpl-5.5.1/examples/widgets/tetrix.py0000755000076500000240000004034012613140041020427 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 copy import random from PyQt5.QtCore import pyqtSignal, QBasicTimer, QSize, Qt from PyQt5.QtGui import QColor, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel, QLCDNumber, QPushButton, QWidget) NoShape, ZShape, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape = range(8) class TetrixWindow(QWidget): def __init__(self): super(TetrixWindow, self).__init__() self.board = TetrixBoard() nextPieceLabel = QLabel() nextPieceLabel.setFrameStyle(QFrame.Box | QFrame.Raised) nextPieceLabel.setAlignment(Qt.AlignCenter) self.board.setNextPieceLabel(nextPieceLabel) scoreLcd = QLCDNumber(5) scoreLcd.setSegmentStyle(QLCDNumber.Filled) levelLcd = QLCDNumber(2) levelLcd.setSegmentStyle(QLCDNumber.Filled) linesLcd = QLCDNumber(5) linesLcd.setSegmentStyle(QLCDNumber.Filled) startButton = QPushButton("&Start") startButton.setFocusPolicy(Qt.NoFocus) quitButton = QPushButton("&Quit") quitButton.setFocusPolicy(Qt.NoFocus) pauseButton = QPushButton("&Pause") pauseButton.setFocusPolicy(Qt.NoFocus) startButton.clicked.connect(self.board.start) pauseButton.clicked.connect(self.board.pause) quitButton.clicked.connect(QApplication.instance().quit) self.board.scoreChanged.connect(scoreLcd.display) self.board.levelChanged.connect(levelLcd.display) self.board.linesRemovedChanged.connect(linesLcd.display) layout = QGridLayout() layout.addWidget(self.createLabel("NEXT"), 0, 0) layout.addWidget(nextPieceLabel, 1, 0) layout.addWidget(self.createLabel("LEVEL"), 2, 0) layout.addWidget(levelLcd, 3, 0) layout.addWidget(startButton, 4, 0) layout.addWidget(self.board, 0, 1, 6, 1) layout.addWidget(self.createLabel("SCORE"), 0, 2) layout.addWidget(scoreLcd, 1, 2) layout.addWidget(self.createLabel("LINES REMOVED"), 2, 2) layout.addWidget(linesLcd, 3, 2) layout.addWidget(quitButton, 4, 2) layout.addWidget(pauseButton, 5, 2) self.setLayout(layout) self.setWindowTitle("Tetrix") self.resize(550, 370) def createLabel(self, text): lbl = QLabel(text) lbl.setAlignment(Qt.AlignHCenter | Qt.AlignBottom) return lbl class TetrixBoard(QFrame): BoardWidth = 10 BoardHeight = 22 scoreChanged = pyqtSignal(int) levelChanged = pyqtSignal(int) linesRemovedChanged = pyqtSignal(int) def __init__(self, parent=None): super(TetrixBoard, self).__init__(parent) self.timer = QBasicTimer() self.nextPieceLabel = None self.isWaitingAfterLine = False self.curPiece = TetrixPiece() self.nextPiece = TetrixPiece() self.curX = 0 self.curY = 0 self.numLinesRemoved = 0 self.numPiecesDropped = 0 self.score = 0 self.level = 0 self.board = None self.setFrameStyle(QFrame.Panel | QFrame.Sunken) self.setFocusPolicy(Qt.StrongFocus) self.isStarted = False self.isPaused = False self.clearBoard() self.nextPiece.setRandomShape() def shapeAt(self, x, y): return self.board[(y * TetrixBoard.BoardWidth) + x] def setShapeAt(self, x, y, shape): self.board[(y * TetrixBoard.BoardWidth) + x] = shape def timeoutTime(self): return 1000 / (1 + self.level) def squareWidth(self): return self.contentsRect().width() / TetrixBoard.BoardWidth def squareHeight(self): return self.contentsRect().height() / TetrixBoard.BoardHeight def setNextPieceLabel(self, label): self.nextPieceLabel = label def sizeHint(self): return QSize(TetrixBoard.BoardWidth * 15 + self.frameWidth() * 2, TetrixBoard.BoardHeight * 15 + self.frameWidth() * 2) def minimumSizeHint(self): return QSize(TetrixBoard.BoardWidth * 5 + self.frameWidth() * 2, TetrixBoard.BoardHeight * 5 + self.frameWidth() * 2) def start(self): if self.isPaused: return self.isStarted = True self.isWaitingAfterLine = False self.numLinesRemoved = 0 self.numPiecesDropped = 0 self.score = 0 self.level = 1 self.clearBoard() self.linesRemovedChanged.emit(self.numLinesRemoved) self.scoreChanged.emit(self.score) self.levelChanged.emit(self.level) self.newPiece() self.timer.start(self.timeoutTime(), self) def pause(self): if not self.isStarted: return self.isPaused = not self.isPaused if self.isPaused: self.timer.stop() else: self.timer.start(self.timeoutTime(), self) self.update() def paintEvent(self, event): super(TetrixBoard, self).paintEvent(event) painter = QPainter(self) rect = self.contentsRect() if self.isPaused: painter.drawText(rect, Qt.AlignCenter, "Pause") return boardTop = rect.bottom() - TetrixBoard.BoardHeight * self.squareHeight() for i in range(TetrixBoard.BoardHeight): for j in range(TetrixBoard.BoardWidth): shape = self.shapeAt(j, TetrixBoard.BoardHeight - i - 1) if shape != NoShape: self.drawSquare(painter, rect.left() + j * self.squareWidth(), boardTop + i * self.squareHeight(), shape) if self.curPiece.shape() != NoShape: for i in range(4): x = self.curX + self.curPiece.x(i) y = self.curY - self.curPiece.y(i) self.drawSquare(painter, rect.left() + x * self.squareWidth(), boardTop + (TetrixBoard.BoardHeight - y - 1) * self.squareHeight(), self.curPiece.shape()) def keyPressEvent(self, event): if not self.isStarted or self.isPaused or self.curPiece.shape() == NoShape: super(TetrixBoard, self).keyPressEvent(event) return key = event.key() if key == Qt.Key_Left: self.tryMove(self.curPiece, self.curX - 1, self.curY) elif key == Qt.Key_Right: self.tryMove(self.curPiece, self.curX + 1, self.curY) elif key == Qt.Key_Down: self.tryMove(self.curPiece.rotatedRight(), self.curX, self.curY) elif key == Qt.Key_Up: self.tryMove(self.curPiece.rotatedLeft(), self.curX, self.curY) elif key == Qt.Key_Space: self.dropDown() elif key == Qt.Key_D: self.oneLineDown() else: super(TetrixBoard, self).keyPressEvent(event) def timerEvent(self, event): if event.timerId() == self.timer.timerId(): if self.isWaitingAfterLine: self.isWaitingAfterLine = False self.newPiece() self.timer.start(self.timeoutTime(), self) else: self.oneLineDown() else: super(TetrixBoard, self).timerEvent(event) def clearBoard(self): self.board = [NoShape for i in range(TetrixBoard.BoardHeight * TetrixBoard.BoardWidth)] def dropDown(self): dropHeight = 0 newY = self.curY while newY > 0: if not self.tryMove(self.curPiece, self.curX, newY - 1): break newY -= 1 dropHeight += 1 self.pieceDropped(dropHeight) def oneLineDown(self): if not self.tryMove(self.curPiece, self.curX, self.curY - 1): self.pieceDropped(0) def pieceDropped(self, dropHeight): for i in range(4): x = self.curX + self.curPiece.x(i) y = self.curY - self.curPiece.y(i) self.setShapeAt(x, y, self.curPiece.shape()) self.numPiecesDropped += 1 if self.numPiecesDropped % 25 == 0: self.level += 1 self.timer.start(self.timeoutTime(), self) self.levelChanged.emit(self.level) self.score += dropHeight + 7 self.scoreChanged.emit(self.score) self.removeFullLines() if not self.isWaitingAfterLine: self.newPiece() def removeFullLines(self): numFullLines = 0 for i in range(TetrixBoard.BoardHeight - 1, -1, -1): lineIsFull = True for j in range(TetrixBoard.BoardWidth): if self.shapeAt(j, i) == NoShape: lineIsFull = False break if lineIsFull: numFullLines += 1 for k in range(TetrixBoard.BoardHeight - 1): for j in range(TetrixBoard.BoardWidth): self.setShapeAt(j, k, self.shapeAt(j, k + 1)) for j in range(TetrixBoard.BoardWidth): self.setShapeAt(j, TetrixBoard.BoardHeight - 1, NoShape) if numFullLines > 0: self.numLinesRemoved += numFullLines self.score += 10 * numFullLines self.linesRemovedChanged.emit(self.numLinesRemoved) self.scoreChanged.emit(self.score) self.timer.start(500, self) self.isWaitingAfterLine = True self.curPiece.setShape(NoShape) self.update() def newPiece(self): self.curPiece = copy.deepcopy(self.nextPiece) self.nextPiece.setRandomShape() self.showNextPiece() self.curX = TetrixBoard.BoardWidth // 2 + 1 self.curY = TetrixBoard.BoardHeight - 1 + self.curPiece.minY() if not self.tryMove(self.curPiece, self.curX, self.curY): self.curPiece.setShape(NoShape) self.timer.stop() self.isStarted = False def showNextPiece(self): if self.nextPieceLabel is None: return dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1 dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1 pixmap = QPixmap(dx * self.squareWidth(), dy * self.squareHeight()) painter = QPainter(pixmap) painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().window()) for i in range(4): x = self.nextPiece.x(i) - self.nextPiece.minX() y = self.nextPiece.y(i) - self.nextPiece.minY() self.drawSquare(painter, x * self.squareWidth(), y * self.squareHeight(), self.nextPiece.shape()) painter.end() self.nextPieceLabel.setPixmap(pixmap) def tryMove(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.BoardWidth or y < 0 or y >= TetrixBoard.BoardHeight: return False if self.shapeAt(x, y) != NoShape: return False self.curPiece = newPiece self.curX = newX self.curY = newY self.update() return True def drawSquare(self, painter, x, y, shape): colorTable = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC, 0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00] color = QColor(colorTable[shape]) painter.fillRect(x + 1, y + 1, self.squareWidth() - 2, self.squareHeight() - 2, color) painter.setPen(color.lighter()) painter.drawLine(x, y + self.squareHeight() - 1, x, y) painter.drawLine(x, y, x + self.squareWidth() - 1, y) painter.setPen(color.darker()) painter.drawLine(x + 1, y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + self.squareHeight() - 1) painter.drawLine(x + self.squareWidth() - 1, y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + 1) class TetrixPiece(object): coordsTable = ( ((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.pieceShape = NoShape self.setShape(NoShape) def shape(self): return self.pieceShape def setShape(self, shape): table = TetrixPiece.coordsTable[shape] for i in range(4): for j in range(2): self.coords[i][j] = table[i][j] self.pieceShape = shape def setRandomShape(self): self.setShape(random.randint(1, 7)) def x(self, index): return self.coords[index][0] def y(self, index): return self.coords[index][1] def setX(self, index, x): self.coords[index][0] = x def setY(self, index, y): self.coords[index][1] = y def minX(self): m = self.coords[0][0] for i in range(4): m = min(m, self.coords[i][0]) return m def maxX(self): m = self.coords[0][0] for i in range(4): m = max(m, self.coords[i][0]) return m def minY(self): m = self.coords[0][1] for i in range(4): m = min(m, self.coords[i][1]) return m def maxY(self): m = self.coords[0][1] for i in range(4): m = max(m, self.coords[i][1]) return m def rotatedLeft(self): if self.pieceShape == SquareShape: return self result = TetrixPiece() result.pieceShape = self.pieceShape for i in range(4): result.setX(i, self.y(i)) result.setY(i, -self.x(i)) return result def rotatedRight(self): if self.pieceShape == SquareShape: return self result = TetrixPiece() result.pieceShape = self.pieceShape for i in range(4): result.setX(i, -self.y(i)) result.setY(i, self.x(i)) return result if __name__ == '__main__': import sys app = QApplication(sys.argv) window = TetrixWindow() window.show() random.seed(None) sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/tooltips/0000755000076500000240000000000012613140041020407 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/tooltips/images/0000755000076500000240000000000012613140041021654 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/widgets/tooltips/images/circle.png0000644000076500000240000000024512613140041023624 0ustar philstaff00000000000000‰PNG  IHDR szzôlIDATXÃí×[ DQË´D»dÕ1ß÷|Ѧôè©“‹æR‡YF Ü@bâ^ÄÑø.·" q "p%>Cü ¸ï!@=D}ÇÅLH1Sì›ÅnÝŽTó¡#ÛÕIEND®B`‚PyQt-gpl-5.5.1/examples/widgets/tooltips/images/square.png0000644000076500000240000000013612613140041023662 0ustar philstaff00000000000000‰PNG  IHDR I´è·PLTEX¨ÿŒ«IDAT×c`úÿÿÿ >MhkÏ¸Ž†IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/tooltips/images/triangle.png0000644000076500000240000000025212613140041024166 0ustar philstaff00000000000000‰PNG  IHDR szzôqIDATXÃíÎK €0ÑÓ#zË‚¸Pb’ùÕfz]¯µZÍ6¹ÏÄSú ħ(àÏD ãY0G#PÀr<±÷F uÜaŽ[(À-®E ÷ø",¾Š@áñ?DZ|„@éñ7Bàר]o—ˆ8©IEND®B`‚PyQt-gpl-5.5.1/examples/widgets/tooltips/tooltips.py0000755000076500000240000002276412613140041022654 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 random from PyQt5.QtCore import QEvent, QPoint, QPointF, QSize, Qt from PyQt5.QtGui import QColor, QIcon, QPainter, QPainterPath, QPalette from PyQt5.QtWidgets import (QApplication, QStyle, QToolButton, QToolTip, QWidget) import tooltips_rc class ShapeItem(object): def __init__(self): self.myPath = QPainterPath() self.myPosition = QPoint() self.myColor = QColor() self.myToolTip = '' def path(self): return self.myPath def position(self): return self.myPosition def color(self): return self.myColor def toolTip(self): return self.myToolTip def setPath(self, path): self.myPath = path def setToolTip(self, toolTip): self.myToolTip = toolTip def setPosition(self, position): self.myPosition = position def setColor(self, color): self.myColor = color class SortingBox(QWidget): circle_count = square_count = triangle_count = 1 def __init__(self): super(SortingBox, self).__init__() self.circlePath = QPainterPath() self.squarePath = QPainterPath() self.trianglePath = QPainterPath() self.shapeItems = [] self.previousPosition = QPoint() self.setMouseTracking(True) self.setBackgroundRole(QPalette.Base) self.itemInMotion = None self.newCircleButton = self.createToolButton("New Circle", QIcon(':/images/circle.png'), self.createNewCircle) self.newSquareButton = self.createToolButton("New Square", QIcon(':/images/square.png'), self.createNewSquare) self.newTriangleButton = self.createToolButton("New Triangle", QIcon(':/images/triangle.png'), self.createNewTriangle) self.circlePath.addEllipse(0, 0, 100, 100) self.squarePath.addRect(0, 0, 100, 100) x = self.trianglePath.currentPosition().x() y = self.trianglePath.currentPosition().y() self.trianglePath.moveTo(x + 120 / 2, y) self.trianglePath.lineTo(0, 100) self.trianglePath.lineTo(120, 100) self.trianglePath.lineTo(x + 120 / 2, y) self.setWindowTitle("Tooltips") self.resize(500, 300) self.createShapeItem(self.circlePath, "Circle", self.initialItemPosition(self.circlePath), self.initialItemColor()) self.createShapeItem(self.squarePath, "Square", self.initialItemPosition(self.squarePath), self.initialItemColor()) self.createShapeItem(self.trianglePath, "Triangle", self.initialItemPosition(self.trianglePath), self.initialItemColor()) def event(self, event): if event.type() == QEvent.ToolTip: helpEvent = event index = self.itemAt(helpEvent.pos()) if index != -1: QToolTip.showText(helpEvent.globalPos(), self.shapeItems[index].toolTip()) else: QToolTip.hideText() event.ignore() return True return super(SortingBox, self).event(event) def resizeEvent(self, event): margin = self.style().pixelMetric(QStyle.PM_DefaultTopLevelMargin) x = self.width() - margin y = self.height() - margin y = self.updateButtonGeometry(self.newCircleButton, x, y) y = self.updateButtonGeometry(self.newSquareButton, x, y) self.updateButtonGeometry(self.newTriangleButton, x, y) def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) for shapeItem in self.shapeItems: painter.translate(shapeItem.position()) painter.setBrush(shapeItem.color()) painter.drawPath(shapeItem.path()) painter.translate(-shapeItem.position()) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: index = self.itemAt(event.pos()) if index != -1: self.itemInMotion = self.shapeItems[index] self.previousPosition = event.pos() value = self.shapeItems[index] del self.shapeItems[index] self.shapeItems.insert(len(self.shapeItems) - 1, value) self.update() def mouseMoveEvent(self, event): if (event.buttons() & Qt.LeftButton) and self.itemInMotion: self.moveItemTo(event.pos()) def mouseReleaseEvent(self, event): if (event.button() == Qt.LeftButton) and self.itemInMotion: self.moveItemTo(event.pos()) self.itemInMotion = None def createNewCircle(self): SortingBox.circle_count += 1 self.createShapeItem(self.circlePath, "Circle <%d>" % SortingBox.circle_count, self.randomItemPosition(), self.randomItemColor()) def createNewSquare(self): SortingBox.square_count += 1 self.createShapeItem(self.squarePath, "Square <%d>" % SortingBox.square_count, self.randomItemPosition(), self.randomItemColor()) def createNewTriangle(self): SortingBox.triangle_count += 1 self.createShapeItem(self.trianglePath, "Triangle <%d>" % SortingBox.triangle_count, self.randomItemPosition(), self.randomItemColor()) def itemAt(self, pos): for i in range(len(self.shapeItems) - 1, -1, -1): item = self.shapeItems[i] if item.path().contains(QPointF(pos - item.position())): return i return -1 def moveItemTo(self, pos): offset = pos - self.previousPosition self.itemInMotion.setPosition(self.itemInMotion.position() + offset) self.previousPosition = QPoint(pos) self.update() def updateButtonGeometry(self, button, x, y): size = button.sizeHint() button.setGeometry(x - size.width(), y - size.height(), size.width(), size.height()) return y - size.height() - self.style().pixelMetric(QStyle.PM_DefaultLayoutSpacing) def createShapeItem(self, path, toolTip, pos, color): shapeItem = ShapeItem() shapeItem.setPath(path) shapeItem.setToolTip(toolTip) shapeItem.setPosition(pos) shapeItem.setColor(color) self.shapeItems.append(shapeItem) self.update() def createToolButton(self, toolTip, icon, member): button = QToolButton(self) button.setToolTip(toolTip) button.setIcon(icon) button.setIconSize(QSize(32, 32)) button.clicked.connect(member) return button def initialItemPosition(self, path): y = (self.height() - path.controlPointRect().height()) / 2 if len(self.shapeItems) == 0: x = ((3 * self.width()) / 2 - path.controlPointRect().width()) / 2 else: x = (self.width() / len(self.shapeItems) - path.controlPointRect().width()) / 2 return QPoint(x, y) def randomItemPosition(self): x = random.randint(0, self.width() - 120) y = random.randint(0, self.height() - 120) return QPoint(x, y) def initialItemColor(self): hue = ((len(self.shapeItems) + 1) * 85) % 256 return QColor.fromHsv(hue, 255, 190) def randomItemColor(self): return QColor.fromHsv(random.randint(0, 256), 255, 190) if __name__ == "__main__": import sys app = QApplication(sys.argv) sortingBox = SortingBox() sortingBox.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/tooltips/tooltips.qrc0000644000076500000240000000025212613140041022772 0ustar philstaff00000000000000 images/circle.png images/square.png images/triangle.png PyQt-gpl-5.5.1/examples/widgets/tooltips/tooltips_rc.py0000644000076500000240000000605412613140041023327 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 13:21:51 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\x5e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x01\x03\x00\x00\x00\x49\xb4\xe8\xb7\ \x00\x00\x00\x06\x50\x4c\x54\x45\x00\x00\x00\x58\xa8\xff\x8c\x14\ \x1f\xab\x00\x00\x00\x13\x49\x44\x41\x54\x08\xd7\x63\x60\x00\x81\ \xfa\xff\xff\xff\x0d\x3e\x02\x04\x00\x8d\x4d\x68\x6b\xcf\xb8\x8e\ \x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xaa\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x71\x49\x44\x41\x54\x58\xc3\xed\xce\x4b\x0a\x80\x30\ \x10\x04\xd1\x1c\xd3\x23\x7a\xcb\x11\x82\xb8\x50\x62\x92\xf9\xd5\ \x66\x1a\x7a\x5d\xaf\xb5\x5a\xcd\x36\xb9\xcf\xc4\x8f\x53\xfa\x09\ \xc4\x13\xa7\x10\x28\xe0\x13\xcf\x44\x0c\xe3\x59\x08\x14\x30\x8d\ \x47\x23\x50\xc0\x72\x3c\x02\xb1\x1d\xf7\x46\xa0\x00\x75\xdc\x03\ \x61\x8e\x5b\x11\x28\xc0\x2d\xae\x45\xa0\x00\xf7\xf8\x0e\x22\x2c\ \xbe\x8a\x40\x01\xe1\xf1\x3f\x44\x5a\x7c\x84\x40\x01\xe9\xf1\x37\ \x42\xe0\xd7\xd8\x5d\x0f\x6f\x97\x11\x88\x38\xa9\x1e\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xa5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ \x00\x00\x00\x6c\x49\x44\x41\x54\x58\xc3\xed\xd7\x5b\x0e\x00\x10\ \x0c\x44\x51\xcb\xb4\x44\xbb\x64\x03\x1e\xd5\x18\x1d\x31\x12\xdf\ \xf7\x7c\xd1\xa6\xf4\xe8\xa9\x93\x8b\x8f\xe6\x52\x87\x17\x81\x59\ \x46\x0d\x18\x7f\xdc\x13\x1e\x40\x62\xe2\x5e\xc4\xd1\xf8\x2e\x02\ \x12\xb7\x22\xa0\x71\x0b\x22\x14\x70\x25\x3e\x43\xfc\x0d\xb8\x1a\ \xef\x21\x04\x10\x40\x00\x3d\x44\x14\x00\x7d\xc7\x14\x13\x11\xc5\ \x4c\x48\x31\x15\x53\xec\x05\x14\x9b\x11\xc5\x6e\x08\xdd\x8e\x1b\ \x14\x54\x19\xf3\xa1\x23\xdb\xd5\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x08\x8b\x06\x27\ \x00\x73\ \x00\x71\x00\x75\x00\x61\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x59\xa7\xc7\ \x00\x74\ \x00\x72\x00\x69\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0a\x2d\x16\x47\ \x00\x63\ \x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x62\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x01\x10\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/widgets/wiggly.py0000755000076500000240000001024412613140041020412 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QBasicTimer from PyQt5.QtGui import QColor, QFontMetrics, QPainter, QPalette from PyQt5.QtWidgets import (QApplication, QDialog, QLineEdit, QVBoxLayout, QWidget) class WigglyWidget(QWidget): def __init__(self, parent=None): super(WigglyWidget, self).__init__(parent) self.setBackgroundRole(QPalette.Midlight) self.setAutoFillBackground(True) newFont = self.font() newFont.setPointSize(newFont.pointSize() + 20) self.setFont(newFont) self.timer = QBasicTimer() self.text = '' self.step = 0; self.timer.start(60, self) def paintEvent(self, event): sineTable = (0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38) metrics = QFontMetrics(self.font()) x = (self.width() - metrics.width(self.text)) / 2 y = (self.height() + metrics.ascent() - metrics.descent()) / 2 color = QColor() painter = QPainter(self) for i, ch in enumerate(self.text): index = (self.step + i) % 16 color.setHsv((15 - index) * 16, 255, 191) painter.setPen(color) painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), ch) x += metrics.width(ch) def setText(self, newText): self.text = newText def timerEvent(self, event): if event.timerId() == self.timer.timerId(): self.step += 1 self.update() else: super(WigglyWidget, self).timerEvent(event) class Dialog(QDialog): def __init__(self, parent=None): super(Dialog, self).__init__(parent) wigglyWidget = WigglyWidget() lineEdit = QLineEdit() layout = QVBoxLayout() layout.addWidget(wigglyWidget) layout.addWidget(lineEdit) self.setLayout(layout) lineEdit.textChanged.connect(wigglyWidget.setText) lineEdit.setText("Hello world!") self.setWindowTitle("Wiggly") self.resize(360, 145) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show(); sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/widgets/windowflags.py0000755000076500000240000002656512613140041021451 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QHBoxLayout, QPushButton, QRadioButton, QTextEdit, QVBoxLayout, QWidget) class PreviewWindow(QWidget): def __init__(self, parent=None): super(PreviewWindow, self).__init__(parent) self.textEdit = QTextEdit() self.textEdit.setReadOnly(True) self.textEdit.setLineWrapMode(QTextEdit.NoWrap) closeButton = QPushButton("&Close") closeButton.clicked.connect(self.close) layout = QVBoxLayout() layout.addWidget(self.textEdit) layout.addWidget(closeButton) self.setLayout(layout) self.setWindowTitle("Preview") def setWindowFlags(self, flags): super(PreviewWindow, self).setWindowFlags(flags) flag_type = (flags & Qt.WindowType_Mask) if flag_type == Qt.Window: text = "Qt.Window" elif flag_type == Qt.Dialog: text = "Qt.Dialog" elif flag_type == Qt.Sheet: text = "Qt.Sheet" elif flag_type == Qt.Drawer: text = "Qt.Drawer" elif flag_type == Qt.Popup: text = "Qt.Popup" elif flag_type == Qt.Tool: text = "Qt.Tool" elif flag_type == Qt.ToolTip: text = "Qt.ToolTip" elif flag_type == Qt.SplashScreen: text = "Qt.SplashScreen" else: text = "" if flags & Qt.MSWindowsFixedSizeDialogHint: text += "\n| Qt.MSWindowsFixedSizeDialogHint" if flags & Qt.X11BypassWindowManagerHint: text += "\n| Qt.X11BypassWindowManagerHint" if flags & Qt.FramelessWindowHint: text += "\n| Qt.FramelessWindowHint" if flags & Qt.WindowTitleHint: text += "\n| Qt.WindowTitleHint" if flags & Qt.WindowSystemMenuHint: text += "\n| Qt.WindowSystemMenuHint" if flags & Qt.WindowMinimizeButtonHint: text += "\n| Qt.WindowMinimizeButtonHint" if flags & Qt.WindowMaximizeButtonHint: text += "\n| Qt.WindowMaximizeButtonHint" if flags & Qt.WindowCloseButtonHint: text += "\n| Qt.WindowCloseButtonHint" if flags & Qt.WindowContextHelpButtonHint: text += "\n| Qt.WindowContextHelpButtonHint" if flags & Qt.WindowShadeButtonHint: text += "\n| Qt.WindowShadeButtonHint" if flags & Qt.WindowStaysOnTopHint: text += "\n| Qt.WindowStaysOnTopHint" if flags & Qt.WindowStaysOnBottomHint: text += "\n| Qt.WindowStaysOnBottomHint" if flags & Qt.CustomizeWindowHint: text += "\n| Qt.CustomizeWindowHint" self.textEdit.setPlainText(text) class ControllerWindow(QWidget): def __init__(self): super(ControllerWindow, self).__init__() self.previewWindow = PreviewWindow(self) self.createTypeGroupBox() self.createHintsGroupBox() quitButton = QPushButton("&Quit") quitButton.clicked.connect(self.close) bottomLayout = QHBoxLayout() bottomLayout.addStretch() bottomLayout.addWidget(quitButton) mainLayout = QVBoxLayout() mainLayout.addWidget(self.typeGroupBox) mainLayout.addWidget(self.hintsGroupBox) mainLayout.addLayout(bottomLayout) self.setLayout(mainLayout) self.setWindowTitle("Window Flags") self.updatePreview() def updatePreview(self): flags = Qt.WindowFlags() if self.windowRadioButton.isChecked(): flags = Qt.Window elif self.dialogRadioButton.isChecked(): flags = Qt.Dialog elif self.sheetRadioButton.isChecked(): flags = Qt.Sheet elif self.drawerRadioButton.isChecked(): flags = Qt.Drawer elif self.popupRadioButton.isChecked(): flags = Qt.Popup elif self.toolRadioButton.isChecked(): flags = Qt.Tool elif self.toolTipRadioButton.isChecked(): flags = Qt.ToolTip elif self.splashScreenRadioButton.isChecked(): flags = Qt.SplashScreen if self.msWindowsFixedSizeDialogCheckBox.isChecked(): flags |= Qt.MSWindowsFixedSizeDialogHint if self.x11BypassWindowManagerCheckBox.isChecked(): flags |= Qt.X11BypassWindowManagerHint if self.framelessWindowCheckBox.isChecked(): flags |= Qt.FramelessWindowHint if self.windowTitleCheckBox.isChecked(): flags |= Qt.WindowTitleHint if self.windowSystemMenuCheckBox.isChecked(): flags |= Qt.WindowSystemMenuHint if self.windowMinimizeButtonCheckBox.isChecked(): flags |= Qt.WindowMinimizeButtonHint if self.windowMaximizeButtonCheckBox.isChecked(): flags |= Qt.WindowMaximizeButtonHint if self.windowCloseButtonCheckBox.isChecked(): flags |= Qt.WindowCloseButtonHint if self.windowContextHelpButtonCheckBox.isChecked(): flags |= Qt.WindowContextHelpButtonHint if self.windowShadeButtonCheckBox.isChecked(): flags |= Qt.WindowShadeButtonHint if self.windowStaysOnTopCheckBox.isChecked(): flags |= Qt.WindowStaysOnTopHint if self.windowStaysOnBottomCheckBox.isChecked(): flags |= Qt.WindowStaysOnBottomHint if self.customizeWindowHintCheckBox.isChecked(): flags |= Qt.CustomizeWindowHint self.previewWindow.setWindowFlags(flags) pos = self.previewWindow.pos() if pos.x() < 0: pos.setX(0) if pos.y() < 0: pos.setY(0) self.previewWindow.move(pos) self.previewWindow.show() def createTypeGroupBox(self): self.typeGroupBox = QGroupBox("Type") self.windowRadioButton = self.createRadioButton("Window") self.dialogRadioButton = self.createRadioButton("Dialog") self.sheetRadioButton = self.createRadioButton("Sheet") self.drawerRadioButton = self.createRadioButton("Drawer") self.popupRadioButton = self.createRadioButton("Popup") self.toolRadioButton = self.createRadioButton("Tool") self.toolTipRadioButton = self.createRadioButton("Tooltip") self.splashScreenRadioButton = self.createRadioButton("Splash screen") self.windowRadioButton.setChecked(True) layout = QGridLayout() layout.addWidget(self.windowRadioButton, 0, 0) layout.addWidget(self.dialogRadioButton, 1, 0) layout.addWidget(self.sheetRadioButton, 2, 0) layout.addWidget(self.drawerRadioButton, 3, 0) layout.addWidget(self.popupRadioButton, 0, 1) layout.addWidget(self.toolRadioButton, 1, 1) layout.addWidget(self.toolTipRadioButton, 2, 1) layout.addWidget(self.splashScreenRadioButton, 3, 1) self.typeGroupBox.setLayout(layout) def createHintsGroupBox(self): self.hintsGroupBox = QGroupBox("Hints") self.msWindowsFixedSizeDialogCheckBox = self.createCheckBox("MS Windows fixed size dialog") self.x11BypassWindowManagerCheckBox = self.createCheckBox("X11 bypass window manager") self.framelessWindowCheckBox = self.createCheckBox("Frameless window") self.windowTitleCheckBox = self.createCheckBox("Window title") self.windowSystemMenuCheckBox = self.createCheckBox("Window system menu") self.windowMinimizeButtonCheckBox = self.createCheckBox("Window minimize button") self.windowMaximizeButtonCheckBox = self.createCheckBox("Window maximize button") self.windowCloseButtonCheckBox = self.createCheckBox("Window close button") self.windowContextHelpButtonCheckBox = self.createCheckBox("Window context help button") self.windowShadeButtonCheckBox = self.createCheckBox("Window shade button") self.windowStaysOnTopCheckBox = self.createCheckBox("Window stays on top") self.windowStaysOnBottomCheckBox = self.createCheckBox("Window stays on bottom") self.customizeWindowHintCheckBox = self.createCheckBox("Customize window") layout = QGridLayout() layout.addWidget(self.msWindowsFixedSizeDialogCheckBox, 0, 0) layout.addWidget(self.x11BypassWindowManagerCheckBox, 1, 0) layout.addWidget(self.framelessWindowCheckBox, 2, 0) layout.addWidget(self.windowTitleCheckBox, 3, 0) layout.addWidget(self.windowSystemMenuCheckBox, 4, 0) layout.addWidget(self.windowMinimizeButtonCheckBox, 0, 1) layout.addWidget(self.windowMaximizeButtonCheckBox, 1, 1) layout.addWidget(self.windowCloseButtonCheckBox, 2, 1) layout.addWidget(self.windowContextHelpButtonCheckBox, 3, 1) layout.addWidget(self.windowShadeButtonCheckBox, 4, 1) layout.addWidget(self.windowStaysOnTopCheckBox, 5, 1) layout.addWidget(self.windowStaysOnBottomCheckBox, 6, 1) layout.addWidget(self.customizeWindowHintCheckBox, 5, 0) self.hintsGroupBox.setLayout(layout) def createCheckBox(self, text): checkBox = QCheckBox(text) checkBox.clicked.connect(self.updatePreview) return checkBox def createRadioButton(self, text): button = QRadioButton(text) button.clicked.connect(self.updatePreview) return button if __name__ == '__main__': import sys app = QApplication(sys.argv) controller = ControllerWindow() controller.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/xmlpatterns/0000755000076500000240000000000012613140041017445 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/xmlpatterns/README0000644000076500000240000000137012613140041020326 0ustar philstaff00000000000000XQuery queries and XPath expressions can be used in PyQt with the QtXmlPatterns module. XQuery is a query language used to query XML in a concise and safe manner. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt-gpl-5.5.1/examples/xmlpatterns/schema/0000755000076500000240000000000012613140041020705 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/0000755000076500000240000000000012613140041022007 5ustar philstaff00000000000000PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/contact.xsd0000644000076500000240000000167312613140041024171 0ustar philstaff00000000000000 PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/invalid_contact.xml0000644000076500000240000000043512613140041025674 0ustar philstaff00000000000000 John Doe Prof. Sandakerveien 116 N-0550 Oslo Norway PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/invalid_order.xml0000644000076500000240000000045612613140041025357 0ustar philstaff00000000000000 234219
      21692 3
      24749 9
      2009-01-23 yes
      PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/invalid_recipe.xml0000644000076500000240000000112512613140041025505 0ustar philstaff00000000000000 Cheese on Toast PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/order.xsd0000644000076500000240000000154712613140041023651 0ustar philstaff00000000000000 PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/recipe.xsd0000644000076500000240000000300512613140041023774 0ustar philstaff00000000000000 PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/valid_contact.xml0000644000076500000240000000045212613140041025344 0ustar philstaff00000000000000 John Doe 1977-12-25 Sandakerveien 116 N-0550 Oslo Norway PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/valid_order.xml0000644000076500000240000000066612613140041025033 0ustar philstaff00000000000000 194223
      22242 5
      32372 12 without stripes
      23649 2
      2009-01-23 true
      PyQt-gpl-5.5.1/examples/xmlpatterns/schema/files/valid_recipe.xml0000644000076500000240000000104512613140041025157 0ustar philstaff00000000000000 Cheese on Toast PyQt-gpl-5.5.1/examples/xmlpatterns/schema/schema.py0000755000076500000240000002311612613140041022525 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $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 Nokia Corporation and its Subsidiary(-ies) 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 PyQt5.QtCore import QByteArray, QFile, QRegExp, Qt from PyQt5.QtGui import (QColor, QFont, QSyntaxHighlighter, QTextCharFormat, QTextCursor, QTextFormat) from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit from PyQt5.QtXmlPatterns import (QAbstractMessageHandler, QSourceLocation, QXmlSchema, QXmlSchemaValidator) import schema_rc from ui_schema import Ui_SchemaMainWindow def encode_utf8(ba): try: return unicode(ba, encoding='utf8') except NameError: return str(ba, encoding='utf8') def decode_utf8(qs): try: return QByteArray(qs.decode(encoding='utf8')) except AttributeError: return QByteArray(bytes(qs, encoding='utf8')) class XmlSyntaxHighlighter(QSyntaxHighlighter): def __init__(self, parent=None): super(XmlSyntaxHighlighter, self).__init__(parent) self.highlightingRules = [] # Tag format. format = QTextCharFormat() format.setForeground(Qt.darkBlue) format.setFontWeight(QFont.Bold) pattern = QRegExp("(<[a-zA-Z:]+\\b|<\\?[a-zA-Z:]+\\b|\\?>|>|/>|)") self.highlightingRules.append((pattern, format)) # Attribute format. format = QTextCharFormat() format.setForeground(Qt.darkGreen) pattern = QRegExp("[a-zA-Z:]+=") self.highlightingRules.append((pattern, format)) # Attribute content format. format = QTextCharFormat() format.setForeground(Qt.red) pattern = QRegExp("(\"[^\"]*\"|'[^']*')") self.highlightingRules.append((pattern, format)) # Comment format. self.commentFormat = QTextCharFormat() self.commentFormat.setForeground(Qt.lightGray) self.commentFormat.setFontItalic(True) self.commentStartExpression = QRegExp("") def highlightBlock(self, text): for pattern, format in self.highlightingRules: expression = QRegExp(pattern) index = expression.indexIn(text) while index >= 0: length = expression.matchedLength() self.setFormat(index, length, format) index = expression.indexIn(text, index + length) self.setCurrentBlockState(0) startIndex = 0 if self.previousBlockState() != 1: startIndex = self.commentStartExpression.indexIn(text) while startIndex >= 0: endIndex = self.commentEndExpression.indexIn(text, startIndex) if endIndex == -1: self.setCurrentBlockState(1) commentLength = text.length() - startIndex else: commentLength = endIndex - startIndex + self.commentEndExpression.matchedLength() self.setFormat(startIndex, commentLength, self.commentFormat) startIndex = self.commentStartExpression.indexIn(text, startIndex + commentLength) class MessageHandler(QAbstractMessageHandler): def __init__(self): super(MessageHandler, self).__init__() self.m_description = "" self.m_sourceLocation = QSourceLocation() def statusMessage(self): return self.m_description def line(self): return self.m_sourceLocation.line() def column(self): return self.m_sourceLocation.column() def handleMessage(self, type, description, identifier, sourceLocation): self.m_description = description self.m_sourceLocation = sourceLocation class MainWindow(QMainWindow, Ui_SchemaMainWindow): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) XmlSyntaxHighlighter(self.schemaView.document()) XmlSyntaxHighlighter(self.instanceEdit.document()) self.schemaSelection.addItem("Contact Schema") self.schemaSelection.addItem("Recipe Schema") self.schemaSelection.addItem("Order Schema") self.instanceSelection.addItem("Valid Contact Instance") self.instanceSelection.addItem("Invalid Contact Instance") self.schemaSelection.currentIndexChanged.connect(self.schemaSelected) self.instanceSelection.currentIndexChanged.connect(self.instanceSelected) self.validateButton.clicked.connect(self.validate) self.instanceEdit.textChanged.connect(self.textChanged) self.validationStatus.setAlignment(Qt.AlignCenter | Qt.AlignVCenter) self.schemaSelected(0) self.instanceSelected(0) def schemaSelected(self, index): self.instanceSelection.clear() if index == 0: self.instanceSelection.addItem("Valid Contact Instance") self.instanceSelection.addItem("Invalid Contact Instance") elif index == 1: self.instanceSelection.addItem("Valid Recipe Instance") self.instanceSelection.addItem("Invalid Recipe Instance") elif index == 2: self.instanceSelection.addItem("Valid Order Instance") self.instanceSelection.addItem("Invalid Order Instance") self.textChanged() schemaFile = QFile(':/schema_%d.xsd' % index) schemaFile.open(QFile.ReadOnly) schemaData = schemaFile.readAll() self.schemaView.setPlainText(encode_utf8(schemaData)) self.validate() def instanceSelected(self, index): index += 2 * self.schemaSelection.currentIndex() instanceFile = QFile(':/instance_%d.xml' % index) instanceFile.open(QFile.ReadOnly) instanceData = instanceFile.readAll() self.instanceEdit.setPlainText(encode_utf8(instanceData)) self.validate() def validate(self): schemaData = decode_utf8(self.schemaView.toPlainText()) instanceData = decode_utf8(self.instanceEdit.toPlainText()) messageHandler = MessageHandler() schema = QXmlSchema() schema.setMessageHandler(messageHandler) schema.load(schemaData) errorOccurred = False if not schema.isValid(): errorOccurred = True else: validator = QXmlSchemaValidator(schema) if not validator.validate(instanceData): errorOccurred = True if errorOccurred: self.validationStatus.setText(messageHandler.statusMessage()) self.moveCursor(messageHandler.line(), messageHandler.column()) background = Qt.red else: self.validationStatus.setText("validation successful") background = Qt.green styleSheet = 'QLabel {background: %s; padding: 3px}' % QColor(background).lighter(160).name() self.validationStatus.setStyleSheet(styleSheet) def textChanged(self): self.instanceEdit.setExtraSelections([]) def moveCursor(self, line, column): self.instanceEdit.moveCursor(QTextCursor.Start) for i in range(1, line): self.instanceEdit.moveCursor(QTextCursor.Down) for i in range(1, column): self.instanceEdit.moveCursor(QTextCursor.Right) extraSelections = [] selection = QTextEdit.ExtraSelection() lineColor = QColor(Qt.red).lighter(160) selection.format.setBackground(lineColor) selection.format.setProperty(QTextFormat.FullWidthSelection, True) selection.cursor = self.instanceEdit.textCursor() selection.cursor.clearSelection() extraSelections.append(selection) self.instanceEdit.setExtraSelections(extraSelections) self.instanceEdit.setFocus() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt-gpl-5.5.1/examples/xmlpatterns/schema/schema.qrc0000644000076500000240000000114712613140041022657 0ustar philstaff00000000000000 files/contact.xsd files/recipe.xsd files/order.xsd files/valid_contact.xml files/invalid_contact.xml files/valid_recipe.xml files/invalid_recipe.xml files/valid_order.xml files/invalid_order.xml PyQt-gpl-5.5.1/examples/xmlpatterns/schema/schema.ui0000644000076500000240000000375212613140041022513 0ustar philstaff00000000000000 SchemaMainWindow 0 0 417 594 XML Schema Validation XML Schema Document: XML Instance Document: Status: not validated Validate PyQt-gpl-5.5.1/examples/xmlpatterns/schema/schema_rc.py0000644000076500000240000005257412613140041023220 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 14:30:02 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x02\x55\ \x3c\ \x72\x65\x63\x69\x70\x65\x3e\x0a\x20\x20\x20\x20\x3c\x74\x69\x74\ \x6c\x65\x3e\x43\x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x54\x6f\x61\ \x73\x74\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\ \x69\x6e\x67\x72\x65\x64\x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\ \x22\x42\x72\x65\x61\x64\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\ \x3d\x22\x32\x22\x20\x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\ \x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\x67\x72\x65\x64\ \x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x43\x68\x65\x65\x73\ \x65\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\x3d\x22\x32\x22\x20\ \x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\x73\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x3c\x74\x69\x6d\x65\x20\x71\x75\x61\x6e\x74\x69\ \x74\x79\x3d\x22\x33\x22\x20\x75\x6e\x69\x74\x3d\x22\x64\x61\x79\ \x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x6d\x65\x74\x68\x6f\x64\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\ \x31\x2e\x20\x53\x6c\x69\x63\x65\x20\x74\x68\x65\x20\x62\x72\x65\ \x61\x64\x20\x61\x6e\x64\x20\x63\x68\x65\x65\x73\x65\x2e\x3c\x2f\ \x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\ \x74\x65\x70\x3e\x32\x2e\x20\x47\x72\x69\x6c\x6c\x20\x6f\x6e\x65\ \x20\x73\x69\x64\x65\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x73\x6c\ \x69\x63\x65\x20\x6f\x66\x20\x62\x72\x65\x61\x64\x2e\x3c\x2f\x73\ \x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\ \x65\x70\x3e\x33\x2e\x20\x54\x75\x72\x6e\x20\x6f\x76\x65\x72\x20\ \x74\x68\x65\x20\x62\x72\x65\x61\x64\x20\x61\x6e\x64\x20\x70\x6c\ \x61\x63\x65\x20\x61\x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x63\ \x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x65\x61\x63\x68\x20\x70\x69\ \x65\x63\x65\x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\x34\x2e\x20\x47\x72\x69\ \x6c\x6c\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x20\x63\x68\x65\ \x65\x73\x65\x20\x68\x61\x73\x20\x73\x74\x61\x72\x74\x65\x64\x20\ \x74\x6f\x20\x6d\x65\x6c\x74\x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\x35\x2e\ \x20\x53\x65\x72\x76\x65\x20\x61\x6e\x64\x20\x65\x6e\x6a\x6f\x79\ \x21\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6d\ \x65\x74\x68\x6f\x64\x3e\x0a\x20\x20\x20\x20\x3c\x63\x6f\x6d\x6d\ \x65\x6e\x74\x3e\x54\x65\x6c\x6c\x20\x79\x6f\x75\x72\x20\x66\x72\ \x69\x65\x6e\x64\x73\x20\x61\x62\x6f\x75\x74\x20\x69\x74\x21\x3c\ \x2f\x63\x6f\x6d\x6d\x65\x6e\x74\x3e\x0a\x3c\x2f\x72\x65\x63\x69\ \x70\x65\x3e\x0a\ \x00\x00\x03\x67\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x3f\x3e\x0a\x3c\x78\x73\x64\x3a\x73\x63\x68\x65\x6d\x61\ \x20\x78\x6d\x6c\x6e\x73\x3a\x78\x73\x64\x3d\x22\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ \x30\x31\x2f\x58\x4d\x4c\x53\x63\x68\x65\x6d\x61\x22\x3e\x0a\x0a\ \x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\ \x20\x6e\x61\x6d\x65\x3d\x22\x6f\x72\x64\x65\x72\x22\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\x6d\x70\ \x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\ \x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\ \x20\x6e\x61\x6d\x65\x3d\x22\x63\x75\x73\x74\x6f\x6d\x65\x72\x49\ \x64\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x70\x6f\x73\ \x69\x74\x69\x76\x65\x49\x6e\x74\x65\x67\x65\x72\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\ \x65\x3d\x22\x61\x72\x74\x69\x63\x6c\x65\x22\x20\x74\x79\x70\x65\ \x3d\x22\x61\x72\x74\x69\x63\x6c\x65\x54\x79\x70\x65\x22\x20\x6d\ \x61\x78\x4f\x63\x63\x75\x72\x73\x3d\x22\x75\x6e\x62\x6f\x75\x6e\ \x64\x65\x64\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\ \x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x64\x65\x6c\x69\x76\x65\ \x72\x79\x44\x61\x74\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\ \x64\x3a\x64\x61\x74\x65\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\ \x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x70\x61\x79\ \x65\x64\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x62\x6f\ \x6f\x6c\x65\x61\x6e\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\ \x6e\x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x78\ \x73\x64\x3a\x63\x6f\x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\ \x74\x3e\x0a\x0a\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\x6d\ \x70\x6c\x65\x78\x54\x79\x70\x65\x20\x6e\x61\x6d\x65\x3d\x22\x61\ \x72\x74\x69\x63\x6c\x65\x54\x79\x70\x65\x22\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\ \x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\ \x65\x3d\x22\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x22\x20\x74\x79\ \x70\x65\x3d\x22\x78\x73\x64\x3a\x70\x6f\x73\x69\x74\x69\x76\x65\ \x49\x6e\x74\x65\x67\x65\x72\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\ \x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x63\x6f\x75\x6e\x74\x22\ \x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x70\x6f\x73\x69\x74\ \x69\x76\x65\x49\x6e\x74\x65\x67\x65\x72\x22\x2f\x3e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\ \x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x63\x6f\x6d\ \x6d\x65\x6e\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\ \x73\x74\x72\x69\x6e\x67\x22\x20\x6d\x69\x6e\x4f\x63\x63\x75\x72\ \x73\x3d\x22\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\x63\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x63\x6f\x6d\x70\x6c\x65\ \x78\x54\x79\x70\x65\x3e\x0a\x0a\x3c\x2f\x78\x73\x64\x3a\x73\x63\ \x68\x65\x6d\x61\x3e\x0a\ \x00\x00\x02\x25\ \x3c\ \x72\x65\x63\x69\x70\x65\x3e\x0a\x20\x20\x20\x20\x3c\x74\x69\x74\ \x6c\x65\x3e\x43\x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x54\x6f\x61\ \x73\x74\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\ \x69\x6e\x67\x72\x65\x64\x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\ \x22\x42\x72\x65\x61\x64\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\ \x3d\x22\x32\x22\x20\x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\ \x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\x67\x72\x65\x64\ \x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x43\x68\x65\x65\x73\ \x65\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\x3d\x22\x32\x22\x20\ \x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\x73\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x3c\x74\x69\x6d\x65\x20\x71\x75\x61\x6e\x74\x69\ \x74\x79\x3d\x22\x33\x22\x20\x75\x6e\x69\x74\x3d\x22\x6d\x69\x6e\ \x75\x74\x65\x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x6d\x65\x74\ \x68\x6f\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\ \x65\x70\x3e\x31\x2e\x20\x53\x6c\x69\x63\x65\x20\x74\x68\x65\x20\ \x62\x72\x65\x61\x64\x20\x61\x6e\x64\x20\x63\x68\x65\x65\x73\x65\ \x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x73\x74\x65\x70\x3e\x32\x2e\x20\x47\x72\x69\x6c\x6c\x20\ \x6f\x6e\x65\x20\x73\x69\x64\x65\x20\x6f\x66\x20\x65\x61\x63\x68\ \x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x62\x72\x65\x61\x64\x2e\ \x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x73\x74\x65\x70\x3e\x33\x2e\x20\x54\x75\x72\x6e\x20\x6f\x76\ \x65\x72\x20\x74\x68\x65\x20\x62\x72\x65\x61\x64\x20\x61\x6e\x64\ \x20\x70\x6c\x61\x63\x65\x20\x61\x20\x73\x6c\x69\x63\x65\x20\x6f\ \x66\x20\x63\x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x65\x61\x63\x68\ \x20\x70\x69\x65\x63\x65\x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\x34\x2e\x20\ \x47\x72\x69\x6c\x6c\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x20\ \x63\x68\x65\x65\x73\x65\x20\x68\x61\x73\x20\x73\x74\x61\x72\x74\ \x65\x64\x20\x74\x6f\x20\x6d\x65\x6c\x74\x2e\x3c\x2f\x73\x74\x65\ \x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\ \x3e\x35\x2e\x20\x53\x65\x72\x76\x65\x20\x61\x6e\x64\x20\x65\x6e\ \x6a\x6f\x79\x21\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\ \x3c\x2f\x6d\x65\x74\x68\x6f\x64\x3e\x0a\x3c\x2f\x72\x65\x63\x69\ \x70\x65\x3e\x0a\ \x00\x00\x01\x81\ \x00\ \x00\x06\x05\x78\x9c\xbd\x54\xc1\x72\xc2\x20\x10\xbd\xfb\x15\x0c\ \x1f\x60\xb4\xbd\x39\x46\xcf\x9d\x69\xa7\x87\xf6\xd0\x2b\x92\x1d\ \xc3\x4c\x80\x08\x8b\x89\x7f\x5f\x82\x1a\x6d\x0c\x49\xbc\x94\x43\ \x26\xc3\xbe\xf7\xd8\x5d\x1e\xbb\xde\xd6\xb2\x20\x47\x30\x56\x68\ \x95\xd2\xe5\x7c\x41\xb7\x9b\xd9\xba\xb6\xd9\xca\xf2\x1c\x24\x23\ \x3e\xae\xec\xca\x6f\xa4\x34\x47\x2c\x57\x49\x52\x55\xd5\xbc\x7a\ \x9d\x6b\xb3\x4f\x5e\x16\x8b\x65\xf2\xf3\xf1\xfe\x15\xb0\x74\x33\ \x9b\x11\xbf\x02\x1d\x0a\x90\xa0\x90\x28\x26\x21\xa5\x06\xb8\x28\ \xc1\x03\xc8\x65\x05\x0c\xd7\xb2\x2c\xa0\xfe\x3e\x95\x70\x8b\xb4\ \x51\x0b\x07\x07\x8a\x77\x42\x91\x03\x50\x60\x01\x94\xa0\x97\x4a\ \x69\x60\xa3\x11\x6a\x4f\x93\x49\x6c\x8f\x34\x90\x09\xbf\x71\x95\ \xb8\xed\x34\xd9\x51\x22\x59\xfd\xc9\xb9\x33\x36\xa5\x4e\xed\xb4\ \x53\x19\x64\x13\xc5\x51\xc8\x36\xb3\xe6\x3f\x08\x4e\xa3\x4a\xc0\ \x5c\x67\xf4\x11\x3b\xde\xc2\x27\xda\x39\x92\x84\x45\x28\x7b\x3a\ \x3b\xb9\x25\xad\x74\x32\x9e\xc6\x19\x33\x58\xd4\x19\x72\x49\xb1\ \x63\x9b\xc8\x09\x11\xd5\x8e\xd2\xcd\xbb\x77\xc8\x07\x83\x84\xdb\ \xeb\xf8\x98\xa1\x6f\xc9\xce\xe1\x15\xdd\x7c\x87\xbd\xd8\x4b\x3b\ \x38\xa6\xbc\x8f\x4f\xf7\xd4\x52\x5b\x81\xe2\x08\x6f\x0a\x61\x0f\ \x66\x54\xc3\x29\x81\xf1\xa3\x7b\x1a\x31\x54\x75\xeb\xd6\xff\x4a\ \xbc\x6f\x0a\x88\x26\xab\x88\x15\x1a\x80\x81\xa6\x46\x8e\x7e\x80\ \x91\x1d\xb3\x7f\xeb\x1e\x78\x39\xa0\x9c\x04\xc3\x02\xef\xc8\x0a\ \xd7\x38\x1d\xb8\x56\x99\x8d\x99\x38\x46\x93\x42\xf9\x3a\x9e\xa6\ \xe5\xda\xbf\x9d\xde\x41\x90\x74\xea\xea\x75\x79\x4f\x5f\xce\x91\ \xb6\xb3\xf1\x3b\xbf\x48\x84\xa9\xbd\x99\xfd\x02\x2c\xd8\xc0\x1d\ \ \x00\x00\x01\x1d\ \x3c\ \x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\x20\x20\x20\x20\x3c\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x4a\x6f\x68\x6e\x3c\x2f\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x44\x6f\x65\x3c\x2f\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x74\ \x69\x74\x6c\x65\x3e\x50\x72\x6f\x66\x2e\x3c\x2f\x74\x69\x74\x6c\ \x65\x3e\x0a\x20\x20\x20\x20\x3c\x77\x6f\x72\x6b\x41\x64\x64\x72\ \x65\x73\x73\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\ \x72\x65\x65\x74\x3e\x53\x61\x6e\x64\x61\x6b\x65\x72\x76\x65\x69\ \x65\x6e\x20\x31\x31\x36\x3c\x2f\x73\x74\x72\x65\x65\x74\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x7a\x69\x70\x43\x6f\x64\x65\ \x3e\x4e\x2d\x30\x35\x35\x30\x3c\x2f\x7a\x69\x70\x43\x6f\x64\x65\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x63\x69\x74\x79\x3e\ \x4f\x73\x6c\x6f\x3c\x2f\x63\x69\x74\x79\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x72\x79\x3e\x4e\x6f\x72\ \x77\x61\x79\x3c\x2f\x63\x6f\x75\x6e\x74\x72\x79\x3e\x0a\x20\x20\ \x20\x20\x3c\x2f\x77\x6f\x72\x6b\x41\x64\x64\x72\x65\x73\x73\x3e\ \x0a\x3c\x2f\x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\ \x00\x00\x01\x2e\ \x3c\ \x6f\x72\x64\x65\x72\x3e\x0a\x20\x20\x20\x20\x3c\x63\x75\x73\x74\ \x6f\x6d\x65\x72\x49\x64\x3e\x32\x33\x34\x32\x31\x39\x3c\x2f\x63\ \x75\x73\x74\x6f\x6d\x65\x72\x49\x64\x3e\x0a\x20\x20\x20\x20\x3c\ \x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x32\x31\x36\x39\ \x32\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x33\x3c\x2f\ \x63\x6f\x75\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\x72\x74\ \x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x61\x72\x74\x69\x63\ \x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x61\x72\x74\ \x69\x63\x6c\x65\x49\x64\x3e\x32\x34\x37\x34\x39\x3c\x2f\x61\x72\ \x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x63\x6f\x75\x6e\x74\x3e\x39\x3c\x2f\x63\x6f\x75\x6e\x74\ \x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x3e\ \x0a\x20\x20\x20\x20\x3c\x64\x65\x6c\x69\x76\x65\x72\x79\x44\x61\ \x74\x65\x3e\x32\x30\x30\x39\x2d\x30\x31\x2d\x32\x33\x3c\x2f\x64\ \x65\x6c\x69\x76\x65\x72\x79\x44\x61\x74\x65\x3e\x0a\x20\x20\x20\ \x20\x3c\x70\x61\x79\x65\x64\x3e\x79\x65\x73\x3c\x2f\x70\x61\x79\ \x65\x64\x3e\x0a\x3c\x2f\x6f\x72\x64\x65\x72\x3e\x0a\ \x00\x00\x03\xbb\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x3f\x3e\x0a\x3c\x78\x73\x64\x3a\x73\x63\x68\x65\x6d\x61\ \x20\x78\x6d\x6c\x6e\x73\x3a\x78\x73\x64\x3d\x22\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ \x30\x31\x2f\x58\x4d\x4c\x53\x63\x68\x65\x6d\x61\x22\x3e\x0a\x0a\ \x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\ \x20\x6e\x61\x6d\x65\x3d\x22\x63\x6f\x6e\x74\x61\x63\x74\x22\x3e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\ \x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\ \x65\x6e\x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\ \x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x67\x69\x76\x65\x6e\x4e\x61\ \x6d\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x73\x74\ \x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\ \x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x66\x61\x6d\x69\x6c\ \x79\x4e\x61\x6d\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\ \x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\ \x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x62\x69\ \x72\x74\x68\x64\x61\x74\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\ \x73\x64\x3a\x64\x61\x74\x65\x22\x20\x6d\x69\x6e\x4f\x63\x63\x75\ \x72\x73\x3d\x22\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\ \x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x68\x6f\x6d\x65\ \x41\x64\x64\x72\x65\x73\x73\x22\x20\x74\x79\x70\x65\x3d\x22\x61\ \x64\x64\x72\x65\x73\x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\ \x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x77\x6f\x72\ \x6b\x41\x64\x64\x72\x65\x73\x73\x22\x20\x74\x79\x70\x65\x3d\x22\ \x61\x64\x64\x72\x65\x73\x73\x22\x20\x6d\x69\x6e\x4f\x63\x63\x75\ \x72\x73\x3d\x22\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\ \x6e\x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x78\ \x73\x64\x3a\x63\x6f\x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\ \x74\x3e\x0a\x0a\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\x6d\ \x70\x6c\x65\x78\x54\x79\x70\x65\x20\x6e\x61\x6d\x65\x3d\x22\x61\ \x64\x64\x72\x65\x73\x73\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\x63\x65\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\ \x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x73\ \x74\x72\x65\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\ \x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\ \x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x7a\x69\x70\x43\x6f\x64\ \x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x73\x74\x72\ \x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\ \x6e\x61\x6d\x65\x3d\x22\x63\x69\x74\x79\x22\x20\x74\x79\x70\x65\ \x3d\x22\x78\x73\x64\x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\ \x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x63\ \x6f\x75\x6e\x74\x72\x79\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\ \x64\x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\ \x63\x65\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x63\x6f\ \x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\x0a\x3c\x2f\x78\x73\ \x64\x3a\x73\x63\x68\x65\x6d\x61\x3e\x0a\ \x00\x00\x01\x2a\ \x3c\ \x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\x20\x20\x20\x20\x3c\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x4a\x6f\x68\x6e\x3c\x2f\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x44\x6f\x65\x3c\x2f\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x62\ \x69\x72\x74\x68\x64\x61\x74\x65\x3e\x31\x39\x37\x37\x2d\x31\x32\ \x2d\x32\x35\x3c\x2f\x62\x69\x72\x74\x68\x64\x61\x74\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x68\x6f\x6d\x65\x41\x64\x64\x72\x65\x73\x73\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x72\x65\x65\ \x74\x3e\x53\x61\x6e\x64\x61\x6b\x65\x72\x76\x65\x69\x65\x6e\x20\ \x31\x31\x36\x3c\x2f\x73\x74\x72\x65\x65\x74\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x7a\x69\x70\x43\x6f\x64\x65\x3e\x4e\x2d\ \x30\x35\x35\x30\x3c\x2f\x7a\x69\x70\x43\x6f\x64\x65\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x63\x69\x74\x79\x3e\x4f\x73\x6c\ \x6f\x3c\x2f\x63\x69\x74\x79\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x63\x6f\x75\x6e\x74\x72\x79\x3e\x4e\x6f\x72\x77\x61\x79\ \x3c\x2f\x63\x6f\x75\x6e\x74\x72\x79\x3e\x0a\x20\x20\x20\x20\x3c\ \x2f\x68\x6f\x6d\x65\x41\x64\x64\x72\x65\x73\x73\x3e\x0a\x3c\x2f\ \x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\ \x00\x00\x01\xb6\ \x3c\ \x6f\x72\x64\x65\x72\x3e\x0a\x20\x20\x20\x20\x3c\x63\x75\x73\x74\ \x6f\x6d\x65\x72\x49\x64\x3e\x31\x39\x34\x32\x32\x33\x3c\x2f\x63\ \x75\x73\x74\x6f\x6d\x65\x72\x49\x64\x3e\x0a\x20\x20\x20\x20\x3c\ \x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x32\x32\x32\x34\ \x32\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x35\x3c\x2f\ \x63\x6f\x75\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\x72\x74\ \x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x61\x72\x74\x69\x63\ \x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x61\x72\x74\ \x69\x63\x6c\x65\x49\x64\x3e\x33\x32\x33\x37\x32\x3c\x2f\x61\x72\ \x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x63\x6f\x75\x6e\x74\x3e\x31\x32\x3c\x2f\x63\x6f\x75\x6e\ \x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x6d\x6d\ \x65\x6e\x74\x3e\x77\x69\x74\x68\x6f\x75\x74\x20\x73\x74\x72\x69\ \x70\x65\x73\x3c\x2f\x63\x6f\x6d\x6d\x65\x6e\x74\x3e\x0a\x20\x20\ \x20\x20\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\ \x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x32\x33\ \x36\x34\x39\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x32\ \x3c\x2f\x63\x6f\x75\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\ \x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x64\x65\x6c\ \x69\x76\x65\x72\x79\x44\x61\x74\x65\x3e\x32\x30\x30\x39\x2d\x30\ \x31\x2d\x32\x33\x3c\x2f\x64\x65\x6c\x69\x76\x65\x72\x79\x44\x61\ \x74\x65\x3e\x0a\x20\x20\x20\x20\x3c\x70\x61\x79\x65\x64\x3e\x74\ \x72\x75\x65\x3c\x2f\x70\x61\x79\x65\x64\x3e\x0a\x3c\x2f\x6f\x72\ \x64\x65\x72\x3e\x0a\ " qt_resource_name = b"\ \x00\x0e\ \x00\x73\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x33\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x08\x16\x87\xf4\ \x00\x73\ \x00\x63\x00\x68\x00\x65\x00\x6d\x00\x61\x00\x5f\x00\x32\x00\x2e\x00\x78\x00\x73\x00\x64\ \x00\x0e\ \x00\x70\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x32\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x08\x13\x87\xf4\ \x00\x73\ \x00\x63\x00\x68\x00\x65\x00\x6d\x00\x61\x00\x5f\x00\x31\x00\x2e\x00\x78\x00\x73\x00\x64\ \x00\x0e\ \x00\x79\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x31\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0e\ \x00\x75\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x35\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x08\x10\x87\xf4\ \x00\x73\ \x00\x63\x00\x68\x00\x65\x00\x6d\x00\x61\x00\x5f\x00\x30\x00\x2e\x00\x78\x00\x73\x00\x64\ \x00\x0e\ \x00\x76\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x30\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0e\ \x00\x72\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x34\x00\x2e\x00\x78\x00\x6d\x00\x6c\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x01\ \x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x05\xc4\ \x00\x00\x01\x04\x00\x00\x00\x00\x00\x01\x00\x00\x10\xb2\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x93\ \x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x84\ \x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x09\x72\ \x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xc5\ \x00\x00\x00\x62\x00\x01\x00\x00\x00\x01\x00\x00\x07\xed\ \x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x02\x59\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt-gpl-5.5.1/examples/xmlpatterns/schema/ui_schema.py0000644000076500000240000000647112613140041023224 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'schema.ui' # # Created: Wed May 15 14:30:19 2013 # by: PyQt5 UI code generator 5.0-snapshot-3507ed3a4178 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_SchemaMainWindow(object): def setupUi(self, SchemaMainWindow): SchemaMainWindow.setObjectName("SchemaMainWindow") SchemaMainWindow.resize(417, 594) self.centralwidget = QtWidgets.QWidget(SchemaMainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.schemaLabel = QtWidgets.QLabel(self.centralwidget) self.schemaLabel.setObjectName("schemaLabel") self.gridLayout.addWidget(self.schemaLabel, 0, 0, 1, 2) self.schemaSelection = QtWidgets.QComboBox(self.centralwidget) self.schemaSelection.setObjectName("schemaSelection") self.gridLayout.addWidget(self.schemaSelection, 0, 2, 1, 2) self.schemaView = QtWidgets.QTextBrowser(self.centralwidget) self.schemaView.setObjectName("schemaView") self.gridLayout.addWidget(self.schemaView, 1, 0, 1, 4) self.instanceLabel = QtWidgets.QLabel(self.centralwidget) self.instanceLabel.setObjectName("instanceLabel") self.gridLayout.addWidget(self.instanceLabel, 2, 0, 1, 2) self.instanceSelection = QtWidgets.QComboBox(self.centralwidget) self.instanceSelection.setObjectName("instanceSelection") self.gridLayout.addWidget(self.instanceSelection, 2, 2, 1, 2) self.instanceEdit = QtWidgets.QTextEdit(self.centralwidget) self.instanceEdit.setObjectName("instanceEdit") self.gridLayout.addWidget(self.instanceEdit, 3, 0, 1, 4) self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 4, 0, 1, 1) self.validationStatus = QtWidgets.QLabel(self.centralwidget) self.validationStatus.setObjectName("validationStatus") self.gridLayout.addWidget(self.validationStatus, 4, 1, 1, 2) self.validateButton = QtWidgets.QPushButton(self.centralwidget) self.validateButton.setObjectName("validateButton") self.gridLayout.addWidget(self.validateButton, 4, 3, 1, 1) SchemaMainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(SchemaMainWindow) self.statusbar.setObjectName("statusbar") SchemaMainWindow.setStatusBar(self.statusbar) self.retranslateUi(SchemaMainWindow) QtCore.QMetaObject.connectSlotsByName(SchemaMainWindow) def retranslateUi(self, SchemaMainWindow): _translate = QtCore.QCoreApplication.translate SchemaMainWindow.setWindowTitle(_translate("SchemaMainWindow", "XML Schema Validation")) self.schemaLabel.setText(_translate("SchemaMainWindow", "XML Schema Document:")) self.instanceLabel.setText(_translate("SchemaMainWindow", "XML Instance Document:")) self.label.setText(_translate("SchemaMainWindow", "Status:")) self.validationStatus.setText(_translate("SchemaMainWindow", "not validated")) self.validateButton.setText(_translate("SchemaMainWindow", "Validate")) PyQt-gpl-5.5.1/LICENSE0000644000076500000240000010534312613140030014257 0ustar philstaff00000000000000 PyQt5 is Copyright (C) 2015 Riverbank Computing Limited You may use, distribute and copy PyQt5 under the terms of GNU General Public License version 3, which is displayed below. ------------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ------------------------------------------------------------------------- PyQt-gpl-5.5.1/NEWS0000644000076500000240000001115612613140030013747 0ustar philstaff00000000000000v5.5.1 25th October 2015 - Added support for Qt v5.5.1. - Added the --disable option to configure.py. - Implemented __matmul__ and __imatmul__ for QMatrix4x4 and QTransform. v5.5 17th July 2015 - Added full support for Qt v5.5.0. - Added the QtLocation module. - Added the QtNfc module. - Added Qt.NoOpaqueDetection amd Qt.NoFormatConversion to QtCore. - Added QMacToolBar and QMacToolBarItem to QtMacExtras. - Added QProxyStyle to QtWidgets. v5.4.2 11th June 2015 - Added support for Qt v5.4.2. - Added QWIDGETSIZE_MAX to QtWidgets. - Added the --no-python-dbus command line option to configure.py. v5.4.1 26th February 2015 - Added support for Qt v5.4.1. - Added the QMacCocoaViewContainer class. - All OpenGL examples use QOpenGLWidget and no longer require PyOpenGL. - Added initial implementations of _QOpenGLFunctions_2_1 and _QOpenGLFunctions_4_1_Core. - QEvent.None is now QEvent.None_. - Added missing QEvent.Type members that are now documented in Qt. - Added the --license-dir option to configure.py. - Installing into a virtual env should now work. - pyuic5 and pyrcc5 no longer include a timestamp in the generated code. v5.4 25th December 2014 - Added full support for Qt v5.4.0. - Added the QtWebChannel module. - Added the QtWebEngineWidgets module. - Added the QtXml module. v5.3.2 11th September 2014 - Added the Enginio module. - Added the QJsonDocument and QJsonValue classes. - QJsonObject is implemented as a Python dict. - QJsonArray is implemented as a Python list. - Added setUnifiedTitleAndToolBarOnMac() and unifiedTitleAndToolBarOnMac() to QWidget. - Added windowHandle() to QWidget. v5.3.1 4th July 2014 - Added support for Qt v5.3.1. - Added the -tr-function and -translate-function command line options to pylupdate5. v5.3 26th May 2014 - By default a Python slot is only invoked if the underlying C++ instance still exists. - Added the no_receiver_check argument to connect(). - Added support for Qt v5.3.0. - Added the QtQuickWidgets module. - Added the QtWebSockets module. - Added the --target-py-version, --sysroot and --no-tools option to configure.py. - Cross-compilation (specifically to iOS and Android) is now supported. v5.2.1 14th March 2014 - Added full support for Qt v5.2.1. - Properties, signals and slots can now be defined in mixins (i.e. non-QObject classes). - Added support for creating QSGGeometry.AttributeSet instances. - A fundamental value may now be given whenever a QJSValue is expected. - Building PyQt5 as static libraries now works. - Added support for building without OpenGL. v5.2 8th January 2014 - Added full support for Qt v5.2. - Added the QtBluetooth module. - Added the QtPositioning module. - Added the QtMacExtras module. - Added the QtWinExtras module. - Added the QtX11Extras module. - Improved the conversion of Python objects to Qt collection types (e.g. QList, QSet). Iterators (rather than just sequences) are accepted and failed conversions now raise much more informative exceptions. - QtCore.Q_ENUMS() and QtCore.Q_FLAGS() now populate the meta-object. - The QML debugger is automatically enabled when --debug is passed to configure.py. v5.1.1 16th October 2013 - This is a bug fix release. v5.1 2nd October 2013 - Added full support for Qt v5.1. - Added the QtSensors module. - Added the QtSerialPort module. - A (nearly) complete set of OpenGL v2.0 and OpenGL ES/2 bindings are included. - Cross-compilation is now supported. A configuration file for Python3 on the Raspberry Pi is included. v5.0.1 21st August 2013 - Added the QtQuick module including the ability to create Python Quick items from QML. - Added the QtQml module including the ability to create Python objects from QML. - Added the QtMultimediaWidgets module. - Completed the implementation of the QtMultimedia module including support for cameras and radios. - Added the remaining OpenGL classes to the QtGui module. - Added the 'revision' keyword argument to pyqtProperty(). - Added the 'revision' and 'arguments' keyword arguments to pyqtSignal(). - Added the 'revision' keyword argument to pyqtSlot(). - Added the 'pyqt5qmlplugin' plugin for qmlscene. - The DBus main loop module has been renamed to dbus.mainloop.pyqt5 from dbus.mainloop.qt. - Added the --no-qml-plugin and --qml-plugindir options to configure.py. - Added many QtMultimedia, QML and QtQuick related examples. - Classes now support co-operative multi-inheritance. (This may introduce incompatibilities with PyQt v5.0.) v5.0 16th June 2013 - The first release of PyQt5. PyQt-gpl-5.5.1/pylupdate/0000755000076500000240000000000012613140041015255 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pylupdate/fetchtr.cpp0000644000076500000240000010056112613140040017422 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2014 Riverbank Computing Limited ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include static const char MagicComment[] = "TRANSLATOR "; static QMap needs_Q_OBJECT; static QMap lacks_Q_OBJECT; /* The first part of this source file is the Python tokenizer. We skip most of Python; the only tokens that interest us are defined here. */ enum { Tok_Eof, Tok_class, Tok_return, Tok_tr, Tok_trUtf8, Tok_translate, Tok_Ident, Tok_Comment, Tok_Dot, Tok_String, Tok_LeftParen, Tok_RightParen, Tok_Comma, Tok_None, Tok_Integer}; // The names of function aliases passed on the command line. static const char *tr_function; static const char *translate_function; /* The tokenizer maintains the following global variables. The names should be self-explanatory. */ static QByteArray yyFileName; static int yyCh; static char yyIdent[128]; static size_t yyIdentLen; static char yyComment[65536]; static size_t yyCommentLen; static char yyString[65536]; static size_t yyStringLen; static qlonglong yyInteger; static QStack yySavedParenDepth; static int yyParenDepth; static int yyLineNo; static int yyCurLineNo; static int yyParenLineNo; static QTextCodec *yyCodecForTr = 0; static QTextCodec *yyCodecForSource = 0; // the file to read from (if reading from a file) static FILE *yyInFile; // the string to read from and current position in the string (otherwise) static QString yyInStr; static int yyInPos; // - 'rawbuf' is used to hold bytes before universal newline translation. // - 'buf' is its higher-level counterpart, where every end-of-line appears as // a single '\n' character, regardless of the end-of-line style used in input // files. static int buf, rawbuf; static int (*getChar)(); static int (*peekChar)(); static bool yyParsingUtf8; static int getTranslatedCharFromFile() { int c; if ( rawbuf < 0 ) // Empty raw buffer? c = getc( yyInFile ); else { c = rawbuf; rawbuf = -1; // Declare the raw buffer empty. } // Universal newline translation, similar to what Python does if ( c == '\r' ) { c = getc( yyInFile ); // Last byte of a \r\n sequence? if ( c != '\n') { rawbuf = c; // No, put it in 'rawbuf' for later processing. // Logical character that will be seen by higher-level functions c = '\n'; } // In all cases, c == '\n' here. } return c; } static int getCharFromFile() { int c; if ( buf < 0 ) { // Empty buffer? c = getTranslatedCharFromFile(); } else { c = buf; buf = -1; // Declare the buffer empty. } if ( c == '\n' ) // This is after universal newline translation yyCurLineNo++; // (i.e., a "logical" newline character). return c; } static int peekCharFromFile() { // Read a character, possibly performing universal newline translation, // and put it in 'buf' so that the next call to getCharFromFile() finds it // already available. buf = getCharFromFile(); return buf; } static void startTokenizer( const char *fileName, int (*getCharFunc)(), int (*peekCharFunc)(), QTextCodec *codecForTr, QTextCodec *codecForSource ) { yyInPos = 0; buf = rawbuf = -1; getChar = getCharFunc; peekChar = peekCharFunc; yyFileName = fileName; yyCh = getChar(); yySavedParenDepth.clear(); yyParenDepth = 0; yyCurLineNo = 1; yyParenLineNo = 1; yyCodecForTr = codecForTr; if (!yyCodecForTr) yyCodecForTr = QTextCodec::codecForName("ISO-8859-1"); Q_ASSERT(yyCodecForTr); yyCodecForSource = codecForSource; yyParsingUtf8 = false; } static int getToken() { const char tab[] = "abfnrtv"; const char backTab[] = "\a\b\f\n\r\t\v"; uint n; bool quiet; yyIdentLen = 0; yyCommentLen = 0; yyStringLen = 0; while ( yyCh != EOF ) { yyLineNo = yyCurLineNo; if ( isalpha(yyCh) || yyCh == '_' ) { do { if ( yyIdentLen < sizeof(yyIdent) - 1 ) yyIdent[yyIdentLen++] = (char) yyCh; yyCh = getChar(); } while ( isalnum(yyCh) || yyCh == '_' ); yyIdent[yyIdentLen] = '\0'; // Check for names passed on the command line. if (tr_function && strcmp(yyIdent, tr_function) == 0) return Tok_tr; if (translate_function && strcmp(yyIdent, translate_function) == 0) return Tok_translate; bool might_be_str = false; switch ( yyIdent[0] ) { case 'N': if ( strcmp(yyIdent + 1, "one") == 0 ) return Tok_None; break; case 'Q': if (strcmp(yyIdent + 1, "T_TR_NOOP") == 0) { yyParsingUtf8 = false; return Tok_tr; } else if (strcmp(yyIdent + 1, "T_TR_NOOP_UTF8") == 0) { yyParsingUtf8 = true; return Tok_trUtf8; } else if (strcmp(yyIdent + 1, "T_TRANSLATE_NOOP") == 0) { yyParsingUtf8 = false; return Tok_translate; } break; case 'c': if ( strcmp(yyIdent + 1, "lass") == 0 ) return Tok_class; break; case 'f': /* * QTranslator::findMessage() has the same parameters as * QApplication::translate(). */ if ( strcmp(yyIdent + 1, "indMessage") == 0 ) return Tok_translate; break; case 'r': if ( strcmp(yyIdent + 1, "eturn") == 0 ) return Tok_return; /* Drop through. */ case 'R': if (yyIdent[1] == '\0') might_be_str = true; break; case 'b': case 'B': case 'u': case 'U': if (yyIdent[1] == '\0') might_be_str = true; else if ((yyIdent[1] == 'r' || yyIdent[1] == 'R') && yyIdent[2] == '\0') might_be_str = true; break; case 't': if ( strcmp(yyIdent + 1, "r") == 0 ) { yyParsingUtf8 = false; return Tok_tr; } else if ( qstrcmp(yyIdent + 1, "rUtf8") == 0 ) { yyParsingUtf8 = true; return Tok_trUtf8; } else if ( qstrcmp(yyIdent + 1, "ranslate") == 0 ) { yyParsingUtf8 = false; return Tok_translate; } break; case '_': if ( strcmp(yyIdent + 1, "_tr") == 0 ) { yyParsingUtf8 = false; return Tok_tr; } else if ( strcmp(yyIdent + 1, "_trUtf8") == 0 ) { yyParsingUtf8 = true; return Tok_trUtf8; } else if ( qstrcmp(yyIdent + 1, "translate") == 0 ) { yyParsingUtf8 = false; return Tok_translate; } break; } /* * Handle the standard Python v2 and v3 string prefixes by simply * ignoring them. */ if (!might_be_str) return Tok_Ident; if (yyCh != '"' && yyCh != '\'') return Tok_Ident; } { switch ( yyCh ) { case '#': do { yyCh = getChar(); } while ( yyCh != EOF && yyCh != '\n' ); break; case '"': case '\'': int quoteChar; int trippelQuote, singleQuote; int in; quoteChar = yyCh; trippelQuote = 0; singleQuote = 1; in = 0; yyCh = getChar(); quiet = false; while ( yyCh != EOF ) { if ( singleQuote && (yyCh == '\n' || (in && yyCh == quoteChar)) ) break; if ( yyCh == quoteChar ) { if (peekChar() == quoteChar) { yyCh = getChar(); if (!trippelQuote) { trippelQuote = 1; singleQuote = 0; in = 1; yyCh = getChar(); } else { yyCh = getChar(); if (yyCh == quoteChar) { trippelQuote = 0; break; } } } else if (trippelQuote) { if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) yyCh; yyCh = getChar(); continue; } else break; } else in = 1; if ( yyCh == '\\' ) { yyCh = getChar(); if ( yyCh == 'x' ) { QByteArray hex = "0"; yyCh = getChar(); while ( isxdigit(yyCh) ) { hex += (char) yyCh; yyCh = getChar(); } #if defined(_MSC_VER) && _MSC_VER >= 1400 sscanf_s( hex, "%x", &n ); #else sscanf( hex, "%x", &n ); #endif if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) n; } else if ( yyCh >= '0' && yyCh < '8' ) { QByteArray oct = ""; int n = 0; do { oct += (char) yyCh; ++n; yyCh = getChar(); } while ( yyCh >= '0' && yyCh < '8' && n < 3 ); #if defined(_MSC_VER) && _MSC_VER >= 1400 sscanf_s( oct, "%o", &n ); #else sscanf( oct, "%o", &n ); #endif if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) n; } else if ( yyCh == '\n' ) { yyCh = getChar(); } else { const char *p = strchr( tab, yyCh ); if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = ( p == 0 ) ? (char) yyCh : backTab[p - tab]; yyCh = getChar(); } } else { if (!yyCodecForSource) { if ( yyParsingUtf8 && yyCh >= 0x80 && !quiet) { qWarning( "%s:%d: Non-ASCII character detected in trUtf8 string", (const char *) yyFileName, yyLineNo ); quiet = true; } // common case: optimized if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) yyCh; yyCh = getChar(); } else { QByteArray originalBytes; while ( yyCh != EOF && (trippelQuote || yyCh != '\n') && yyCh != quoteChar && yyCh != '\\' ) { if ( yyParsingUtf8 && yyCh >= 0x80 && !quiet) { qWarning( "%s:%d: Non-ASCII character detected in trUtf8 string", (const char *) yyFileName, yyLineNo ); quiet = true; } originalBytes += (char)yyCh; yyCh = getChar(); } QString unicodeStr = yyCodecForSource->toUnicode(originalBytes); QByteArray convertedBytes; if (!yyCodecForTr->canEncode(unicodeStr) && !quiet) { qWarning( "%s:%d: Cannot convert Python string from %s to %s", (const char *) yyFileName, yyLineNo, yyCodecForSource->name().constData(), yyCodecForTr->name().constData() ); quiet = true; } convertedBytes = yyCodecForTr->fromUnicode(unicodeStr); size_t len = qMin((size_t)convertedBytes.size(), sizeof(yyString) - yyStringLen - 1); memcpy(yyString + yyStringLen, convertedBytes.constData(), len); yyStringLen += len; } } } yyString[yyStringLen] = '\0'; if ( yyCh != quoteChar ) { if (trippelQuote) qWarning("%s:%d: Empty or unterminated triple quoted string", (const char *)yyFileName, yyLineNo); else qWarning("%s:%d: Unterminated string", (const char *)yyFileName, yyLineNo); } if ( yyCh == EOF ) { return Tok_Eof; } else { yyCh = getChar(); return Tok_String; } break; case '(': if (yyParenDepth == 0) yyParenLineNo = yyCurLineNo; yyParenDepth++; yyCh = getChar(); return Tok_LeftParen; case ')': if (yyParenDepth == 0) yyParenLineNo = yyCurLineNo; yyParenDepth--; yyCh = getChar(); return Tok_RightParen; case ',': yyCh = getChar(); return Tok_Comma; case '.': yyCh = getChar(); return Tok_Dot; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { QByteArray ba; ba+=yyCh; yyCh = getChar(); bool hex = yyCh == 'x'; if ( hex ) { ba+=yyCh; yyCh = getChar(); } while ( (hex ? isxdigit(yyCh) : isdigit(yyCh)) ) { ba+=yyCh; yyCh = getChar(); } bool ok; yyInteger = ba.toLongLong(&ok); if (ok) return Tok_Integer; break; } default: yyCh = getChar(); } } } return Tok_Eof; } /* The second part of this source file is the parser. It accomplishes a very easy task: It finds all strings inside a tr() or translate() call, and possibly finds out the context of the call. It supports three cases: (1) the context is specified, as in FunnyDialog.tr("Hello") or translate("FunnyDialog", "Hello"); (2) the call appears within an inlined function; (3) the call appears within a function defined outside the class definition. */ static int yyTok; static bool match( int t ) { bool matches = ( yyTok == t ); if ( matches ) yyTok = getToken(); return matches; } static bool matchString( QByteArray *s ) { bool matches = ( yyTok == Tok_String ); *s = ""; while ( yyTok == Tok_String ) { *s += yyString; yyTok = getToken(); } return matches; } static bool matchStringOrNone(QByteArray *s) { bool matches = matchString(s); if (!matches) matches = match(Tok_None); return matches; } /* * match any expression that can return a number, which can be * 1. Literal number (e.g. '11') * 2. simple identifier (e.g. 'm_count') * 3. simple function call (e.g. 'size()' ) * 4. function call on an object (e.g. 'list.size()') * * Other cases: * size(2,4) * list().size() * list(a,b).size(2,4) * etc... */ static bool matchExpression() { if (match(Tok_Integer)) { return true; } int parenlevel = 0; while (match(Tok_Ident) || parenlevel > 0) { if (yyTok == Tok_RightParen) { if (parenlevel == 0) break; --parenlevel; yyTok = getToken(); } else if (yyTok == Tok_LeftParen) { yyTok = getToken(); if (yyTok == Tok_RightParen) { yyTok = getToken(); } else { ++parenlevel; } } else if (yyTok == Tok_Ident) { continue; } else if (parenlevel == 0) { return false; } } return true; } static void parse( MetaTranslator *tor, const char *initialContext, const char *defaultContext ) { QMap qualifiedContexts; QByteArray context; QByteArray text; QByteArray com; QByteArray functionContext = initialContext; QByteArray prefix; bool utf8 = false; yyTok = getToken(); while ( yyTok != Tok_Eof ) { switch ( yyTok ) { case Tok_class: yyTok = getToken(); functionContext = yyIdent; yyTok = getToken(); break; case Tok_tr: case Tok_trUtf8: utf8 = (yyTok == Tok_trUtf8 || (yyCodecForTr && strcmp(yyCodecForTr->name(), "UTF-8") == 0)); yyTok = getToken(); if (match(Tok_LeftParen) && matchString(&text)) { com = ""; bool plural = false; // Note that this isn't as rigorous as the parsing of // translate() below. if (match(Tok_RightParen)) { // There is no comment or plural arguments. } else if (match(Tok_Comma) && matchStringOrNone(&com)) { // There is a comment argument. if (match(Tok_RightParen)) { // There is no plural argument. } else if (match(Tok_Comma)) { // There is a plural argument. plural = true; } } if (prefix.isNull()) context = defaultContext; else if (qstrcmp(prefix, "self") == 0) context = functionContext; else context = prefix; prefix = (const char *) 0; if (qualifiedContexts.contains(context)) context = qualifiedContexts[context]; if (!text.isEmpty()) { tor->insert(MetaTranslatorMessage(context, text, com, yyFileName, yyParenLineNo, QStringList(), utf8, MetaTranslatorMessage::Unfinished, plural)); } } break; case Tok_translate: yyTok = getToken(); if ( match(Tok_LeftParen) && matchString(&context) && match(Tok_Comma) && matchString(&text) ) { com = ""; bool plural = false; if (!match(Tok_RightParen)) { // look for comment if ( match(Tok_Comma) && matchStringOrNone(&com)) { if (!match(Tok_RightParen)) { // Look for n. if (match(Tok_Comma)) { if (matchExpression() && match(Tok_RightParen)) { plural = true; } else { break; } } else { break; } } } else { break; } } if (!text.isEmpty()) { tor->insert( MetaTranslatorMessage(context, text, com, yyFileName, yyParenLineNo, QStringList(), true, MetaTranslatorMessage::Unfinished, plural) ); } } break; case Tok_Ident: if ( !prefix.isNull() ) prefix += "."; prefix += yyIdent; yyTok = getToken(); if ( yyTok != Tok_Dot ) prefix = (const char *) 0; break; case Tok_Comment: com = yyComment; com = com.simplified(); if ( com.left(sizeof(MagicComment) - 1) == MagicComment ) { com.remove( 0, sizeof(MagicComment) - 1 ); int k = com.indexOf( ' ' ); if ( k == -1 ) { context = com; } else { context = com.left( k ); com.remove( 0, k + 1 ); tor->insert( MetaTranslatorMessage(context, "", com, yyFileName, yyParenLineNo, QStringList(), false) ); } } yyTok = getToken(); break; default: yyTok = getToken(); } } if ( yyParenDepth != 0 ) qWarning( "%s: Unbalanced parentheses in Python code", (const char *) yyFileName ); } void fetchtr_py(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist, const QByteArray &codecForSource, const char *tr_func, const char *translate_func) { tr_function = tr_func; translate_function = translate_func; #if defined(_MSC_VER) && _MSC_VER >= 1400 if (fopen_s(&yyInFile, fileName, "r")) { if ( mustExist ) { char buf[100]; strerror_s(buf, sizeof(buf), errno); fprintf( stderr, "pylupdate5 error: Cannot open Python source file '%s': %s\n", fileName, buf ); } #else yyInFile = fopen( fileName, "r" ); if ( yyInFile == 0 ) { if ( mustExist ) fprintf( stderr, "pylupdate5 error: Cannot open Python source file '%s': %s\n", fileName, strerror(errno) ); #endif return; } startTokenizer( fileName, getCharFromFile, peekCharFromFile, tor->codecForTr(), QTextCodec::codecForName(codecForSource) ); parse( tor, 0, defaultContext ); fclose( yyInFile ); } class UiHandler : public QXmlDefaultHandler { public: UiHandler( MetaTranslator *translator, const char *fileName ) : tor( translator ), fname( fileName ), comment( "" ) { } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); virtual void setDocumentLocator(QXmlLocator *locator) { m_locator = locator; } QXmlLocator *m_locator; private: void flush(); MetaTranslator *tor; QByteArray fname; QString context; QString source; QString comment; QString accum; int m_lineNumber; bool trString; }; bool UiHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString("item") ) { flush(); if ( !atts.value(QString("text")).isEmpty() ) source = atts.value( QString("text") ); } else if ( qName == QString("string") ) { flush(); if (atts.value(QString("notr")).isEmpty() || atts.value(QString("notr")) != QString("true")) { trString = true; comment = atts.value(QString("comment")); } else { trString = false; } } if (trString) m_lineNumber = m_locator->lineNumber(); accum.truncate( 0 ); return true; } bool UiHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { accum.replace( QRegExp(QString("\r\n")), "\n" ); if ( qName == QString("class") ) { if ( context.isEmpty() ) context = accum; } else if ( qName == QString("string") && trString ) { source = accum; } else if ( qName == QString("comment") ) { comment = accum; flush(); } else { flush(); } return true; } bool UiHandler::characters( const QString& ch ) { accum += ch; return true; } bool UiHandler::fatalError( const QXmlParseException& exception ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().toLatin1().data() ); fprintf( stderr, "XML error: %s\n", msg.toLatin1().data() ); return false; } void UiHandler::flush() { if ( !context.isEmpty() && !source.isEmpty() ) tor->insert( MetaTranslatorMessage(context.toUtf8(), source.toUtf8(), comment.toUtf8(), QString(fname), m_lineNumber, QStringList(), true) ); source.truncate( 0 ); comment.truncate( 0 ); } void fetchtr_ui( const char *fileName, MetaTranslator *tor, const char * /* defaultContext */, bool mustExist ) { QFile f( fileName ); if ( !f.open(QIODevice::ReadOnly) ) { if ( mustExist ) { #if defined(_MSC_VER) && _MSC_VER >= 1400 char buf[100]; strerror_s(buf, sizeof(buf), errno); fprintf( stderr, "pylupdate5 error: cannot open UI file '%s': %s\n", fileName, buf ); #else fprintf( stderr, "pylupdate5 error: cannot open UI file '%s': %s\n", fileName, strerror(errno) ); #endif } return; } QXmlInputSource in( &f ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", false ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", true ); reader.setFeature( "http://trolltech.com/xml/features/report-whitespace" "-only-CharData", false ); QXmlDefaultHandler *hand = new UiHandler( tor, fileName ); reader.setContentHandler( hand ); reader.setErrorHandler( hand ); if ( !reader.parse(in) ) fprintf( stderr, "%s: Parse error in UI file\n", fileName ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); delete hand; f.close(); } PyQt-gpl-5.5.1/pylupdate/main.cpp0000644000076500000240000002732312613140040016713 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include // defined in fetchtr.cpp extern void fetchtr_py(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist, const QByteArray &codecForSource, const char *tr_func, const char *translate_func); extern void fetchtr_ui( const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist ); // defined in merge.cpp extern void merge( const MetaTranslator *tor, const MetaTranslator *virginTor, MetaTranslator *out, bool verbose, bool noObsolete ); typedef QList TML; static void printUsage() { fprintf( stderr, "Usage:\n" " pylupdate5 [options] project-file\n" " pylupdate5 [options] source-files -ts ts-files\n" "Options:\n" " -help Display this information and exit\n" " -version\n" " Display the version of pylupdate5 and exit\n" " -verbose\n" " Explain what is being done\n" " -noobsolete\n" " Drop all obsolete strings\n" " -tr-function name\n" " name() may be used instead of tr()\n" " -translate-function name\n" " name() may be used instead of translate()\n"); } static void updateTsFiles( const MetaTranslator& fetchedTor, const QStringList& tsFileNames, const QString& codecForTr, bool noObsolete, bool verbose ) { QStringList::ConstIterator t = tsFileNames.begin(); QDir dir; while ( t != tsFileNames.end() ) { QString fn = dir.relativeFilePath(*t); MetaTranslator tor; MetaTranslator out; tor.load( *t ); if ( !codecForTr.isEmpty() ) tor.setCodec( codecForTr.toLatin1() ); if ( verbose ) fprintf( stderr, "Updating '%s'...\n", fn.toLatin1().constData() ); merge( &tor, &fetchedTor, &out, verbose, noObsolete ); if ( noObsolete ) out.stripObsoleteMessages(); out.stripEmptyContexts(); if ( !out.save(*t) ) { #if defined(_MSC_VER) && _MSC_VER >= 1400 char buf[100]; strerror_s(buf, sizeof(buf), errno); fprintf( stderr, "pylupdate5 error: Cannot save '%s': %s\n", fn.toLatin1().constData(), buf ); #else fprintf( stderr, "pylupdate5 error: Cannot save '%s': %s\n", fn.toLatin1().constData(), strerror(errno) ); #endif } ++t; } } int main( int argc, char **argv ) { QString defaultContext = "@default"; MetaTranslator fetchedTor; QByteArray codecForTr; QByteArray codecForSource; QStringList tsFileNames; QStringList uiFileNames; bool verbose = false; bool noObsolete = false; bool metSomething = false; int numFiles = 0; bool standardSyntax = true; bool metTsFlag = false; const char *tr_func = 0; const char *translate_func = 0; int i; for ( i = 1; i < argc; i++ ) { if ( qstrcmp(argv[i], "-ts") == 0 ) standardSyntax = false; } for ( i = 1; i < argc; i++ ) { if ( qstrcmp(argv[i], "-help") == 0 ) { printUsage(); return 0; } else if ( qstrcmp(argv[i], "-noobsolete") == 0 ) { noObsolete = true; continue; } else if ( qstrcmp(argv[i], "-verbose") == 0 ) { verbose = true; continue; } else if ( qstrcmp(argv[i], "-version") == 0 ) { fprintf( stderr, "pylupdate5 version %s\n", QT_VERSION_STR ); return 0; } else if ( qstrcmp(argv[i], "-ts") == 0 ) { metTsFlag = true; continue; } else if ( qstrcmp(argv[i], "-tr-function") == 0 ) { if (!argv[++i]) { fprintf(stderr, "pylupdate5 error: missing -tr-function name\n"); return 2; } tr_func = argv[i]; continue; } else if ( qstrcmp(argv[i], "-translate-function") == 0 ) { if (!argv[++i]) { fprintf(stderr, "pylupdate5 error: missing -translate-function name\n"); return 2; } translate_func = argv[i]; continue; } numFiles++; QString fullText; if ( !metTsFlag ) { QFile f( argv[i] ); if ( !f.open(QIODevice::ReadOnly) ) { #if defined(_MSC_VER) && _MSC_VER >= 1400 char buf[100]; strerror_s(buf, sizeof(buf), errno); fprintf( stderr, "pylupdate5 error: Cannot open file '%s': %s\n", argv[i], buf ); #else fprintf( stderr, "pylupdate5 error: Cannot open file '%s': %s\n", argv[i], strerror(errno) ); #endif return 1; } QTextStream t( &f ); fullText = t.readAll(); f.close(); } QString oldDir = QDir::currentPath(); QDir::setCurrent( QFileInfo(argv[i]).path() ); if ( standardSyntax ) { fetchedTor = MetaTranslator(); codecForTr.clear(); codecForSource.clear(); tsFileNames.clear(); uiFileNames.clear(); QMap tagMap = proFileTagMap( fullText ); QMap::Iterator it; for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { QStringList toks = it.value().split(' '); QStringList::Iterator t; for ( t = toks.begin(); t != toks.end(); ++t ) { if ( it.key() == "SOURCES" ) { QString abs = QDir::current().absoluteFilePath(*t); fetchtr_py(abs.toLatin1(), &fetchedTor, defaultContext.toLatin1(), true, codecForSource, tr_func, translate_func); metSomething = true; } else if ( it.key() == "TRANSLATIONS" ) { QString abs = QDir::current().absoluteFilePath(*t); tsFileNames.append(abs); metSomething = true; } else if ( it.key() == "CODEC" || it.key() == "DEFAULTCODEC" || it.key() == "CODECFORTR" ) { codecForTr = (*t).toLatin1(); fetchedTor.setCodecForTr(codecForTr); } else if ( it.key() == "CODECFORSRC" ) { codecForSource = (*t).toLatin1(); } else if ( it.key() == "FORMS" ) { QString abs = QDir::current().absoluteFilePath(*t); fetchtr_ui(abs.toLatin1(), &fetchedTor, defaultContext.toLatin1(), true); } } } updateTsFiles( fetchedTor, tsFileNames, codecForTr, noObsolete, verbose ); if ( !metSomething ) { fprintf( stderr, "pylupdate5 warning: File '%s' does not look like a" " project file\n", argv[i] ); } else if ( tsFileNames.isEmpty() ) { fprintf( stderr, "pylupdate5 warning: Met no 'TRANSLATIONS' entry in" " project file '%s'\n", argv[i] ); } } else { if ( metTsFlag ) { if ( QString(argv[i]).toLower().endsWith(".ts") ) { QFileInfo fi( argv[i] ); if ( !fi.exists() || fi.isWritable() ) { tsFileNames.append( argv[i] ); } else { fprintf( stderr, "pylupdate5 warning: For some reason, I cannot" " save '%s'\n", argv[i] ); } } else { fprintf( stderr, "pylupdate5 error: File '%s' lacks .ts extension\n", argv[i] ); } } else { QFileInfo fi(argv[i]); if ( fi.suffix() == "py" || fi.suffix() == "pyw" ) { fetchtr_py(fi.fileName().toLatin1(), &fetchedTor, defaultContext.toLatin1(), true, codecForSource, tr_func, translate_func); } else { fetchtr_ui( fi.fileName().toLatin1(), &fetchedTor, defaultContext.toLatin1(), true); } } } QDir::setCurrent( oldDir ); } if ( !standardSyntax ) updateTsFiles( fetchedTor, tsFileNames, codecForTr, noObsolete, verbose ); if ( numFiles == 0 ) { printUsage(); return 1; } return 0; } PyQt-gpl-5.5.1/pylupdate/merge.cpp0000644000076500000240000002237212613140040017065 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include "simtexth.h" #include // defined in numberh.cpp extern int applyNumberHeuristic( MetaTranslator *tor ); // defined in sametexth.cpp extern int applySameTextHeuristic( MetaTranslator *tor ); typedef QList TML; /* Merges two MetaTranslator objects into the first one. The first one is a set of source texts and translations for a previous version of the internationalized program; the second one is a set of fresh source texts newly extracted from the source code, without any translation yet. */ void merge( const MetaTranslator *tor, const MetaTranslator *virginTor, MetaTranslator *outTor, bool verbose, bool noObsolete ) { int known = 0; int neww = 0; int obsoleted = 0; int UntranslatedObsoleted = 0; int similarTextHeuristicCount = 0; TML all = tor->messages(); TML::Iterator it; outTor->setLanguageCode(tor->languageCode()); outTor->setSourceLanguageCode(tor->sourceLanguageCode()); /* The types of all the messages from the vernacular translator are updated according to the virgin translator. */ for ( it = all.begin(); it != all.end(); ++it ) { MetaTranslatorMessage::Type newType = MetaTranslatorMessage::Finished; MetaTranslatorMessage m = *it; // skip context comment if ( !QByteArray(m.sourceText()).isEmpty() ) { MetaTranslatorMessage mv = virginTor->find(m.context(), m.sourceText(), m.comment()); if ( mv.isNull() ) { mv = virginTor->find(m.context(), m.comment(), m.fileName(), m.lineNumber()); if ( mv.isNull() ) { // did not find it in the virgin, mark it as obsolete newType = MetaTranslatorMessage::Obsolete; if ( m.type() != MetaTranslatorMessage::Obsolete ) obsoleted++; } else { // Do not just accept it if its on the same line number, but different source text. // Also check if the texts are more or less similar before we consider them to represent the same message... // ### The QString() cast is evil if (getSimilarityScore(QString(m.sourceText()), mv.sourceText()) >= textSimilarityThreshold) { // It is just slightly modified, assume that it is the same string m = MetaTranslatorMessage(m.context(), mv.sourceText(), m.comment(), m.fileName(), m.lineNumber(), m.translations()); m.setPlural(mv.isPlural()); // Mark it as unfinished. (Since the source text was changed it might require re-translating...) newType = MetaTranslatorMessage::Unfinished; ++similarTextHeuristicCount; } else { // The virgin and vernacular sourceTexts are so different that we could not find it. newType = MetaTranslatorMessage::Obsolete; if ( m.type() != MetaTranslatorMessage::Obsolete ) obsoleted++; } neww++; } } else { switch ( m.type() ) { case MetaTranslatorMessage::Finished: default: if (m.isPlural() == mv.isPlural()) { newType = MetaTranslatorMessage::Finished; } else { newType = MetaTranslatorMessage::Unfinished; } known++; break; case MetaTranslatorMessage::Unfinished: newType = MetaTranslatorMessage::Unfinished; known++; break; case MetaTranslatorMessage::Obsolete: newType = MetaTranslatorMessage::Unfinished; neww++; } // Always get the filename and linenumber info from the virgin Translator, in case it has changed location. // This should also enable us to read a file that does not have the element. m.setFileName(mv.fileName()); m.setLineNumber(mv.lineNumber()); m.setPlural(mv.isPlural()); // ### why not use operator=? } if (newType == MetaTranslatorMessage::Obsolete && !m.isTranslated()) { ++UntranslatedObsoleted; } m.setType(newType); outTor->insert(m); } } /* Messages found only in the virgin translator are added to the vernacular translator. Among these are all the context comments. */ all = virginTor->messages(); for ( it = all.begin(); it != all.end(); ++it ) { MetaTranslatorMessage mv = *it; bool found = tor->contains(mv.context(), mv.sourceText(), mv.comment()); if (!found) { MetaTranslatorMessage m = tor->find(mv.context(), mv.comment(), mv.fileName(), mv.lineNumber()); if (!m.isNull()) { if (getSimilarityScore(QString(m.sourceText()), mv.sourceText()) >= textSimilarityThreshold) { found = true; } } else { found = false; } } if ( !found ) { outTor->insert( mv ); if ( !QByteArray(mv.sourceText()).isEmpty() ) neww++; } } /* The same-text heuristic handles cases where a message has an obsolete counterpart with a different context or comment. */ int sameTextHeuristicCount = applySameTextHeuristic( outTor ); /* The number heuristic handles cases where a message has an obsolete counterpart with mostly numbers differing in the source text. */ int sameNumberHeuristicCount = applyNumberHeuristic( outTor ); if ( verbose ) { int totalFound = neww + known; fprintf( stderr, " Found %d source text%s (%d new and %d already existing)\n", totalFound, totalFound == 1 ? "" : "s", neww, known); if (obsoleted) { if (noObsolete) { fprintf( stderr, " Removed %d obsolete entr%s\n", obsoleted, obsoleted == 1 ? "y" : "ies" ); } else { int total = obsoleted - UntranslatedObsoleted; fprintf( stderr, " Kept %d obsolete translation%s\n", total, total == 1 ? "" : "s" ); fprintf( stderr, " Removed %d obsolete untranslated entr%s\n", UntranslatedObsoleted, UntranslatedObsoleted == 1 ? "y" : "ies" ); } } if (sameNumberHeuristicCount) fprintf( stderr, " Number heuristic provided %d translation%s\n", sameNumberHeuristicCount, sameNumberHeuristicCount == 1 ? "" : "s" ); if (sameTextHeuristicCount) fprintf( stderr, " Same-text heuristic provided %d translation%s\n", sameTextHeuristicCount, sameTextHeuristicCount == 1 ? "" : "s" ); if (similarTextHeuristicCount) fprintf( stderr, " Similar-text heuristic provided %d translation%s\n", similarTextHeuristicCount, similarTextHeuristicCount == 1 ? "" : "s" ); } } PyQt-gpl-5.5.1/pylupdate/metatranslator.cpp0000644000076500000240000006565412613140041021041 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include #include #include #include #include #include #include static bool encodingIsUtf8( const QXmlAttributes& atts ) { for ( int i = 0; i < atts.length(); i++ ) { // utf8="true" is a pre-3.0 syntax if ( atts.qName(i) == QString("utf8") ) { return ( atts.value(i) == QString("true") ); } else if ( atts.qName(i) == QString("encoding") ) { return ( atts.value(i) == QString("UTF-8") ); } } return false; } class TsHandler : public QXmlDefaultHandler { public: TsHandler( MetaTranslator *translator ) : tor( translator ), type( MetaTranslatorMessage::Finished ), inMessage( false ), ferrorCount( 0 ), contextIsUtf8( false ), messageIsUtf8( false ), m_isPlural(false) { } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); QString language() const { return m_language; } QString sourceLanguage() const { return m_sourceLanguage; } private: MetaTranslator *tor; MetaTranslatorMessage::Type type; bool inMessage; QString m_language; QString m_sourceLanguage; QString context; QString source; QString comment; QStringList translations; QString m_fileName; int m_lineNumber; QString accum; int ferrorCount; bool contextIsUtf8; bool messageIsUtf8; bool m_isPlural; }; bool TsHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString("byte") ) { for ( int i = 0; i < atts.length(); i++ ) { if ( atts.qName(i) == QString("value") ) { QString value = atts.value( i ); int base = 10; if ( value.startsWith("x") ) { base = 16; value = value.mid( 1 ); } int n = value.toUInt( 0, base ); if ( n != 0 ) accum += QChar( n ); } } } else { if ( qName == QString("TS") ) { m_language = atts.value(QLatin1String("language")); m_sourceLanguage = atts.value(QLatin1String("sourcelanguage")); } else if ( qName == QString("context") ) { context.truncate( 0 ); source.truncate( 0 ); comment.truncate( 0 ); translations.clear(); contextIsUtf8 = encodingIsUtf8( atts ); } else if ( qName == QString("message") ) { inMessage = true; type = MetaTranslatorMessage::Finished; source.truncate( 0 ); comment.truncate( 0 ); translations.clear(); messageIsUtf8 = encodingIsUtf8( atts ); m_isPlural = atts.value(QLatin1String("numerus")).compare(QLatin1String("yes")) == 0; } else if (qName == QString("location") && inMessage) { bool bOK; int lineNo = atts.value(QString("line")).toInt(&bOK); if (!bOK) lineNo = -1; m_fileName = atts.value(QString("filename")); m_lineNumber = lineNo; } else if ( qName == QString("translation") ) { for ( int i = 0; i < atts.length(); i++ ) { if ( atts.qName(i) == QString("type") ) { if ( atts.value(i) == QString("unfinished") ) type = MetaTranslatorMessage::Unfinished; else if ( atts.value(i) == QString("obsolete") ) type = MetaTranslatorMessage::Obsolete; else type = MetaTranslatorMessage::Finished; } } } accum.truncate( 0 ); } return true; } bool TsHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { if ( qName == QString("codec") || qName == QString("defaultcodec") ) { // "codec" is a pre-3.0 syntax tor->setCodec( accum.toLatin1() ); } else if ( qName == QString("name") ) { context = accum; } else if ( qName == QString("source") ) { source = accum; } else if ( qName == QString("comment") ) { if ( inMessage ) { comment = accum; } else { if ( contextIsUtf8 ) tor->insert( MetaTranslatorMessage(context.toUtf8(), ContextComment, accum.toUtf8(), QString(), 0, QStringList(), true, MetaTranslatorMessage::Unfinished) ); else tor->insert( MetaTranslatorMessage(context.toLatin1(), ContextComment, accum.toLatin1(), QString(), 0, QStringList(), false, MetaTranslatorMessage::Unfinished) ); } } else if ( qName == QString("numerusform") ) { translations.append(accum); m_isPlural = true; } else if ( qName == QString("translation") ) { if (translations.isEmpty()) translations.append(accum); } else if ( qName == QString("message") ) { if ( messageIsUtf8 ) tor->insert( MetaTranslatorMessage(context.toUtf8(), source.toUtf8(), comment.toUtf8(), m_fileName, m_lineNumber, translations, true, type, m_isPlural) ); else tor->insert( MetaTranslatorMessage(context.toLatin1(), source.toLatin1(), comment.toLatin1(), m_fileName, m_lineNumber, translations, false, type, m_isPlural) ); inMessage = false; } return true; } bool TsHandler::characters( const QString& ch ) { QString t = ch; t.replace( "\r", "" ); accum += t; return true; } bool TsHandler::fatalError( const QXmlParseException& exception ) { if ( ferrorCount++ == 0 ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().toLatin1().data() ); fprintf( stderr, "XML error: %s\n", msg.toLatin1().data() ); } return false; } static QString numericEntity( int ch ) { return QString( ch <= 0x20 ? "" : "&#x%1;" ) .arg( ch, 0, 16 ); } static QString protect( const QByteArray& str ) { QString result; int len = (int) str.length(); for ( int k = 0; k < len; k++ ) { switch( str[k] ) { case '\"': result += QString( """ ); break; case '&': result += QString( "&" ); break; case '>': result += QString( ">" ); break; case '<': result += QString( "<" ); break; case '\'': result += QString( "'" ); break; default: if ( (uchar) str[k] < 0x20 && str[k] != '\n' ) result += numericEntity( (uchar) str[k] ); else result += str[k]; } } return result; } static QString evilBytes( const QByteArray& str, bool utf8 ) { if ( utf8 ) { return protect( str ); } else { QString result; QByteArray t = protect( str ).toLatin1(); int len = (int) t.length(); for ( int k = 0; k < len; k++ ) { if ( (uchar) t[k] >= 0x7f ) result += numericEntity( (uchar) t[k] ); else result += QChar( t[k] ); } return result; } } MetaTranslatorMessage::MetaTranslatorMessage() : utfeight( false ), ty( Unfinished ), m_plural(false) { } MetaTranslatorMessage::MetaTranslatorMessage( const char *context, const char *sourceText, const char *comment, const QString &fileName, int lineNumber, const QStringList& translations, bool utf8, Type type, bool plural ) : TranslatorMessage( context, sourceText, comment, fileName, lineNumber, translations ), utfeight( false ), ty( type ), m_plural(plural) { /* Don't use UTF-8 if it makes no difference. UTF-8 should be reserved for the real problematic case: non-ASCII (possibly non-Latin1) characters in .ui files. */ if ( utf8 ) { if ( sourceText != 0 ) { int i = 0; while ( sourceText[i] != '\0' ) { if ( (uchar) sourceText[i] >= 0x80 ) { utfeight = true; break; } i++; } } if ( !utfeight && comment != 0 ) { int i = 0; while ( comment[i] != '\0' ) { if ( (uchar) comment[i] >= 0x80 ) { utfeight = true; break; } i++; } } } } MetaTranslatorMessage::MetaTranslatorMessage( const MetaTranslatorMessage& m ) : TranslatorMessage( m ), utfeight( m.utfeight ), ty( m.ty ), m_plural(m.m_plural) { } MetaTranslatorMessage& MetaTranslatorMessage::operator=( const MetaTranslatorMessage& m ) { TranslatorMessage::operator=( m ); utfeight = m.utfeight; ty = m.ty; m_plural = m.m_plural; return *this; } bool MetaTranslatorMessage::operator==( const MetaTranslatorMessage& m ) const { return qstrcmp( context(), m.context() ) == 0 && qstrcmp( sourceText(), m.sourceText() ) == 0 && qstrcmp( comment(), m.comment() ) == 0; } bool MetaTranslatorMessage::operator<( const MetaTranslatorMessage& m ) const { int delta = qstrcmp( context(), m.context() ); if ( delta == 0 ) { delta = qstrcmp( sourceText(), m.sourceText() ); if ( delta == 0 ) delta = qstrcmp( comment(), m.comment() ); } return delta < 0; } MetaTranslator::MetaTranslator() { clear(); } MetaTranslator::MetaTranslator( const MetaTranslator& tor ) : mm( tor.mm ), codecName( tor.codecName ), codec( tor.codec ) { } MetaTranslator& MetaTranslator::operator=( const MetaTranslator& tor ) { mm = tor.mm; codecName = tor.codecName; codec = tor.codec; return *this; } void MetaTranslator::clear() { mm.clear(); codecName = "ISO-8859-1"; codec = 0; } bool MetaTranslator::load( const QString& filename ) { QFile f( filename ); if ( !f.open(QIODevice::ReadOnly) ) return false; QXmlInputSource in( &f ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", false ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", true ); TsHandler *hand = new TsHandler( this ); reader.setContentHandler( static_cast(hand) ); reader.setErrorHandler( static_cast(hand) ); bool ok = reader.parse( in ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); m_language = hand->language(); m_sourceLanguage = hand->sourceLanguage(); makeFileNamesAbsolute(QFileInfo(filename).absoluteDir()); delete hand; f.close(); return ok; } bool MetaTranslator::save( const QString& filename ) const { QFile f( filename ); if ( !f.open(QIODevice::WriteOnly) ) return false; QTextStream t( &f ); t.setCodec( QTextCodec::codecForName("ISO-8859-1") ); //### The xml prolog allows processors to easily detect the correct encoding t << "\n\n"; if ( codecName != "ISO-8859-1" ) t << "" << codecName << "\n"; TMM::ConstIterator m = mm.begin(); while ( m != mm.end() ) { TMMInv inv; TMMInv::Iterator i; bool contextIsUtf8 = m.key().utf8(); QByteArray context = m.key().context(); QByteArray comment = ""; do { if (QByteArray(m.key().sourceText()) == ContextComment) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) { contextIsUtf8 = m.key().utf8(); comment = QByteArray(m.key().comment()); } } else { inv.insert( *m, m.key() ); } } while ( ++m != mm.end() && QByteArray(m.key().context()) == context ); t << "\n"; t << " " << evilBytes( context, contextIsUtf8 ) << "\n"; if ( !comment.isEmpty() ) t << " " << evilBytes( comment, contextIsUtf8 ) << "\n"; for ( i = inv.begin(); i != inv.end(); ++i ) { MetaTranslatorMessage msg = *i; // no need for such noise if ( msg.type() == MetaTranslatorMessage::Obsolete && msg.translation().isEmpty() ) continue; t << " \n"; if (!msg.fileName().isEmpty() && msg.lineNumber() >= 0) { QDir tsPath = QFileInfo(filename).absoluteDir(); QString fn = tsPath.relativeFilePath(msg.fileName()).replace('\\','/'); t << " \n"; } t << " " << evilBytes( msg.sourceText(), msg.utf8() ) << "\n"; if ( !QByteArray(msg.comment()).isEmpty() ) t << " " << evilBytes( msg.comment(), msg.utf8() ) << "\n"; t << " "; if (msg.isPlural()) { t << "\n"; QLocale::Language l; QLocale::Country c; languageAndCountry(m_language, &l, &c); QStringList translns = normalizedTranslations(msg, l, c); for (int j = 0; j < qMax(1, translns.count()); ++j) t << " " << protect( translns.value(j).toUtf8() ) << "\n"; t << " "; } else { t << protect( msg.translation().toUtf8() ); } t << "\n"; t << " \n"; } t << "\n"; } t << "\n"; f.close(); return true; } void MetaTranslator::languageAndCountry(const QString &languageCode, QLocale::Language *lang, QLocale::Country *country) { QLocale locale(languageCode); if (lang) *lang = locale.language(); if (country) { if (languageCode.indexOf(QLatin1Char('_')) != -1) { *country = locale.country(); } else { *country = QLocale::AnyCountry; } } } bool MetaTranslator::release( const QString& filename, bool verbose, bool ignoreUnfinished, Translator::SaveMode mode ) const { Translator tor( 0 ); int finished = 0; int unfinished = 0; int untranslated = 0; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) { if ( m.key().translation().isEmpty() ) { untranslated++; } else { if ( m.key().type() == MetaTranslatorMessage::Unfinished ) unfinished++; else finished++; QByteArray context = m.key().context(); QByteArray sourceText = m.key().sourceText(); QByteArray comment = m.key().comment(); QStringList translations = m.key().translations(); if ( !ignoreUnfinished || m.key().type() != MetaTranslatorMessage::Unfinished ) { /* Drop the comment in (context, sourceText, comment), unless the context is empty, unless (context, sourceText, "") already exists or unless we already dropped the comment of (context, sourceText, comment0). */ if ( comment.isEmpty() || context.isEmpty() || contains(context, sourceText, "") || !tor.findMessage(context, sourceText, "").translation() .isNull() ) { tor.insert( m.key() ); } else { tor.insert( TranslatorMessage(context, sourceText, "", QString(), -1, translations) ); //filename and lineNumbers will be ignored from now. } } } } } bool saved = tor.save( filename, mode ); if ( saved && verbose ) fprintf( stderr, " %d finished, %d unfinished and %d untranslated messages\n", finished, unfinished, untranslated ); return saved; } QString MetaTranslator::languageCode() const { return m_language; } QString MetaTranslator::sourceLanguageCode() const { return m_sourceLanguage; } void MetaTranslator::setLanguageCode(const QString &languageCode) { m_language = languageCode; } void MetaTranslator::setSourceLanguageCode(const QString &languageCode) { m_sourceLanguage = languageCode; } bool MetaTranslator::contains( const char *context, const char *sourceText, const char *comment ) const { return mm.contains(MetaTranslatorMessage(context, sourceText, comment, QString(), 0)); } MetaTranslatorMessage MetaTranslator::find( const char *context, const char *sourceText, const char *comment ) const { QMap::const_iterator it = mm.constFind(MetaTranslatorMessage(context, sourceText, comment, QString(), 0)); return (it == mm.constEnd() ? MetaTranslatorMessage() : it.key()); } MetaTranslatorMessage MetaTranslator::find(const char *context, const char *comment, const QString &fileName, int lineNumber) const { if (lineNumber >= 0 && !fileName.isEmpty()) { MetaTranslatorMessage m; for (QMap::const_iterator it = mm.constBegin(); it != mm.constEnd(); ++it) { m = it.key(); int delta = qstrcmp(m.context(), context); if (delta == 0) { delta = qstrcmp(m.comment(), comment); if (delta == 0) { delta = QString::compare(m.fileName(), fileName); if (delta == 0) { delta = m.lineNumber() - lineNumber; if (delta == 0) return m; } } } } } return MetaTranslatorMessage(); } void MetaTranslator::insert( const MetaTranslatorMessage& m ) { int pos = mm.count(); if (mm.contains(m)) { pos = mm.value(m); mm.remove(m); } mm.insert(m, pos); } void MetaTranslator::stripObsoleteMessages() { TMM newmm; TMM::Iterator m = mm.begin(); while ( m != mm.end() ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) newmm.insert( m.key(), *m ); ++m; } mm = newmm; } void MetaTranslator::stripEmptyContexts() { TMM newmm; TMM::Iterator m = mm.begin(); while ( m != mm.end() ) { if ( QByteArray(m.key().sourceText()) == ContextComment ) { TMM::Iterator n = m; ++n; // the context comment is followed by other messages if ( n != newmm.end() && qstrcmp(m.key().context(), n.key().context()) == 0 ) newmm.insert( m.key(), *m ); } else { newmm.insert( m.key(), *m ); } ++m; } mm = newmm; } void MetaTranslator::makeFileNamesAbsolute(const QDir &oldPath) { TMM newmm; for (TMM::iterator m = mm.begin(); m != mm.end(); ++m) { MetaTranslatorMessage msg = m.key(); QString fileName = m.key().fileName(); QFileInfo fi (fileName); if (fi.isRelative()) { fileName = oldPath.absoluteFilePath(fileName); } msg.setFileName(fileName); newmm.insert(msg, m.value()); } mm = newmm; } void MetaTranslator::setCodec( const char *name ) { const int latin1 = 4; codecName = name; codec = QTextCodec::codecForName( name ); if ( codec == 0 || codec->mibEnum() == latin1 ) codec = 0; } QString MetaTranslator::toUnicode( const char *str, bool utf8 ) const { if ( utf8 ) return QString::fromUtf8( str ); else if ( codec == 0 ) return QString( str ); else return codec->toUnicode( str ); } QList MetaTranslator::messages() const { int n = mm.count(); TMM::ConstIterator *t = new TMM::ConstIterator[n + 1]; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) t[*m] = m; QList val; for ( int i = 0; i < n; i++ ) val.append( t[i].key() ); delete[] t; return val; } QList MetaTranslator::translatedMessages() const { QList val; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) { if ( m.key().type() == MetaTranslatorMessage::Finished ) val.append( m.key() ); } return val; } // the grammatical numerus is the number of plural forms + singular forms. // i.e english has two forms: singular og plural. // and polish has three forms: // 1. singular (1), // 2. plural form 1 (numbers that ends with 2,3,4 except 12,13,14) // 3. plural form 2 (all others) // Thus, english returns 2, polish returns 3 int MetaTranslator::grammaticalNumerus(QLocale::Language language, QLocale::Country country) { QStringList forms; getNumerusInfo(language, country, &forms); return forms.count(); } QStringList MetaTranslator::normalizedTranslations(const MetaTranslatorMessage& m, QLocale::Language language, QLocale::Country country) { QStringList translations = m.translations(); int numTranslations = 1; if (m.isPlural()) { numTranslations = grammaticalNumerus(language, country); } // make sure that the stringlist always have the size of the language's current numerus, or 1 if its not plural if (translations.count() > numTranslations) { for (int i = translations.count(); i > numTranslations; --i) translations.removeLast(); } else if (translations.count() < numTranslations) { for (int i = translations.count(); i < numTranslations; ++i) translations << QString(); } return translations; } PyQt-gpl-5.5.1/pylupdate/metatranslator.h0000644000076500000240000001631312613140041020472 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef METATRANSLATOR_H #define METATRANSLATOR_H #include #include #include #include #include #include #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif QT_BEGIN_NAMESPACE class QTextCodec; QT_END_NAMESPACE class MetaTranslatorMessage : public TranslatorMessage { public: enum Type { Unfinished, Finished, Obsolete }; MetaTranslatorMessage(); MetaTranslatorMessage( const char *context, const char *sourceText, const char *comment, const QString &fileName, int lineNumber, const QStringList& translations = QStringList(), bool utf8 = false, Type type = Unfinished, bool plural = false ); MetaTranslatorMessage( const MetaTranslatorMessage& m ); MetaTranslatorMessage& operator=( const MetaTranslatorMessage& m ); void setType( Type nt ) { ty = nt; } Type type() const { return ty; } bool utf8() const { return utfeight; } bool isPlural() const { return m_plural; } void setPlural(bool isplural) { m_plural = isplural; } bool operator==( const MetaTranslatorMessage& m ) const; bool operator!=( const MetaTranslatorMessage& m ) const { return !operator==( m ); } bool operator<( const MetaTranslatorMessage& m ) const; bool operator<=( const MetaTranslatorMessage& m ) { return !operator>( m ); } bool operator>( const MetaTranslatorMessage& m ) const { return this->operator<( m ); } bool operator>=( const MetaTranslatorMessage& m ) const { return !operator<( m ); } private: bool utfeight; Type ty; bool m_plural; }; class MetaTranslator { public: MetaTranslator(); MetaTranslator( const MetaTranslator& tor ); MetaTranslator& operator=( const MetaTranslator& tor ); void clear(); bool load( const QString& filename ); bool save( const QString& filename ) const; bool release( const QString& filename, bool verbose = false, bool ignoreUnfinished = false, Translator::SaveMode mode = Translator::Stripped ) const; bool contains( const char *context, const char *sourceText, const char *comment ) const; MetaTranslatorMessage find( const char *context, const char *sourceText, const char *comment ) const; MetaTranslatorMessage find(const char *context, const char *comment, const QString &fileName, int lineNumber) const; void insert( const MetaTranslatorMessage& m ); void stripObsoleteMessages(); void stripEmptyContexts(); void setCodec( const char *name ); // kill me void setCodecForTr( const char *name ) { setCodec(name); } QTextCodec *codecForTr() const { return codec; } QString toUnicode( const char *str, bool utf8 ) const; QString languageCode() const; QString sourceLanguageCode() const; static void languageAndCountry(const QString &languageCode, QLocale::Language *lang, QLocale::Country *country); void setLanguageCode(const QString &languageCode); void setSourceLanguageCode(const QString &languageCode); QList messages() const; QList translatedMessages() const; static int grammaticalNumerus(QLocale::Language language, QLocale::Country country); static QStringList normalizedTranslations(const MetaTranslatorMessage& m, QLocale::Language lang, QLocale::Country country); private: void makeFileNamesAbsolute(const QDir &oldPath); typedef QMap TMM; typedef QMap TMMInv; TMM mm; QByteArray codecName; QTextCodec *codec; QString m_language; // A string beginning with a 2 or 3 letter language code (ISO 639-1 or ISO-639-2), // followed by the optional country variant to distinguist between country-specific variations // of the language. The language code and country code are always separated by '_' // Note that the language part can also be a 3-letter ISO 639-2 code. // Legal examples: // 'pt' portuguese, assumes portuguese from portugal // 'pt_BR' Brazilian portuguese (ISO 639-1 language code) // 'por_BR' Brazilian portuguese (ISO 639-2 language code) QString m_sourceLanguage; }; /* This is a quick hack. The proper way to handle this would be to extend MetaTranslator's interface. */ #define ContextComment "QT_LINGUIST_INTERNAL_CONTEXT_COMMENT" #endif PyQt-gpl-5.5.1/pylupdate/numberh.cpp0000644000076500000240000002145012613140041017423 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include #include #include #include #include typedef QMap TMM; typedef QList TML; static bool isDigitFriendly( int c ) { return ispunct((uchar)c) || isspace((uchar)c); } static int numberLength( const char *s ) { int i = 0; if ( isdigit((uchar)s[0]) ) { do { i++; } while (isdigit((uchar)s[i]) || (isDigitFriendly(s[i]) && (isdigit((uchar)s[i + 1]) || (isDigitFriendly(s[i + 1]) && isdigit((uchar)s[i + 2]))))); } return i; } /* Returns a version of 'key' where all numbers have been replaced by zeroes. If there were none, returns "". */ static QByteArray zeroKey( const char *key ) { QByteArray zeroed; zeroed.resize( int(strlen(key)) + 1 ); char *z = zeroed.data(); int i = 0, j = 0; int len; bool metSomething = false; while ( key[i] != '\0' ) { len = numberLength( key + i ); if ( len > 0 ) { i += len; z[j++] = '0'; metSomething = true; } else { z[j++] = key[i++]; } } z[j] = '\0'; if ( metSomething ) return zeroed; else return ""; } static QString translationAttempt( const QString& oldTranslation, const char *oldSource, const char *newSource ) { int p = zeroKey( oldSource ).count( '0' ); int oldSourceLen = qstrlen( oldSource ); QString attempt; QStringList oldNumbers; QStringList newNumbers; QVector met( p ); QVector matchedYet( p ); int i, j; int k = 0, ell, best; int m, n; int pass; /* This algorithm is hard to follow, so we'll consider an example all along: oldTranslation is "XeT 3.0", oldSource is "TeX 3.0" and newSource is "XeT 3.1". First, we set up two tables: oldNumbers and newNumbers. In our example, oldNumber[0] is "3.0" and newNumber[0] is "3.1". */ for ( i = 0, j = 0; i < oldSourceLen; i++, j++ ) { m = numberLength( oldSource + i ); n = numberLength( newSource + j ); if ( m > 0 ) { oldNumbers.append( QByteArray(oldSource + i, m + 1) ); newNumbers.append( QByteArray(newSource + j, n + 1) ); i += m; j += n; met[k] = false; matchedYet[k] = 0; k++; } } /* We now go over the old translation, "XeT 3.0", one letter at a time, looking for numbers found in oldNumbers. Whenever such a number is met, it is replaced with its newNumber equivalent. In our example, the "3.0" of "XeT 3.0" becomes "3.1". */ for ( i = 0; i < (int) oldTranslation.length(); i++ ) { attempt += oldTranslation[i]; for ( k = 0; k < p; k++ ) { if ( oldTranslation[i] == oldNumbers[k][matchedYet[k]] ) matchedYet[k]++; else matchedYet[k] = 0; } /* Let's find out if the last character ended a match. We make two passes over the data. In the first pass, we try to match only numbers that weren't matched yet; if that fails, the second pass does the trick. This is useful in some suspicious cases, flagged below. */ for ( pass = 0; pass < 2; pass++ ) { best = p; // an impossible value for ( k = 0; k < p; k++ ) { if ( (!met[k] || pass > 0) && matchedYet[k] == (int) oldNumbers[k].length() && numberLength(oldTranslation.toLatin1().constData() + (i + 1) - matchedYet[k]) == matchedYet[k] ) { // the longer the better if ( best == p || matchedYet[k] > matchedYet[best] ) best = k; } } if ( best != p ) { attempt.truncate( attempt.length() - matchedYet[best] ); attempt += newNumbers[best]; met[best] = true; for ( k = 0; k < p; k++ ) matchedYet[k] = 0; break; } } } /* We flag two kinds of suspicious cases. They are identified as such with comments such as "{2000?}" at the end. Example of the first kind: old source text "TeX 3.0" translated as "XeT 2.0" is flagged "TeX 2.0 {3.0?}", no matter what the new text is. */ for ( k = 0; k < p; k++ ) { if ( !met[k] ) attempt += QString( " {" ) + newNumbers[k] + QString( "?}" ); } /* Example of the second kind: "1 of 1" translated as "1 af 1", with new source text "1 of 2", generates "1 af 2 {1 or 2?}" because it's not clear which of "1 af 2" and "2 af 1" is right. */ for ( k = 0; k < p; k++ ) { for ( ell = 0; ell < p; ell++ ) { if ( k != ell && oldNumbers[k] == oldNumbers[ell] && newNumbers[k] < newNumbers[ell] ) attempt += QString( " {" ) + newNumbers[k] + QString( " or " ) + newNumbers[ell] + QString( "?}" ); } } return attempt; } /* Augments a MetaTranslator with translations easily derived from similar existing (probably obsolete) translations. For example, if "TeX 3.0" is translated as "XeT 3.0" and "TeX 3.1" has no translation, "XeT 3.1" is added to the translator and is marked Unfinished. Returns the number of additional messages that this heuristic translated. */ int applyNumberHeuristic( MetaTranslator *tor ) { TMM translated, untranslated; TMM::Iterator t, u; TML all = tor->messages(); TML::Iterator it; int inserted = 0; for ( it = all.begin(); it != all.end(); ++it ) { bool hasTranslation = (*it).isTranslated(); if ( (*it).type() == MetaTranslatorMessage::Unfinished ) { if ( !hasTranslation ) untranslated.insert(QByteArray((*it).context()) + "\n" + (*it).sourceText() + "\n" + (*it).comment(), *it); } else if ( hasTranslation && (*it).translations().count() == 1 ) { translated.insert( zeroKey((*it).sourceText()), *it ); } } for ( u = untranslated.begin(); u != untranslated.end(); ++u ) { t = translated.find( zeroKey((*u).sourceText()) ); if ( t != translated.end() && !t.key().isEmpty() && qstrcmp((*t).sourceText(), (*u).sourceText()) != 0 ) { MetaTranslatorMessage m( *u ); m.setTranslation(translationAttempt((*t).translation(), (*t).sourceText(), (*u).sourceText())); tor->insert( m ); inserted++; } } return inserted; } PyQt-gpl-5.5.1/pylupdate/proparser.cpp0000644000076500000240000002061012613140041017775 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "proparser.h" #include #include #include #include #include #include #ifdef Q_OS_UNIX #include #endif #ifdef Q_OS_WIN32 #define QT_POPEN _popen #else #define QT_POPEN popen #endif QString loadFile( const QString &fileName ) { QFile file( fileName ); if ( !file.open(QIODevice::ReadOnly) ) { fprintf( stderr, "error: Cannot load '%s': %s\n", file.fileName().toLatin1().constData(), file.errorString().toLatin1().constData() ); return QString(); } QTextStream in( &file ); return in.readAll(); } QMap proFileTagMap( const QString& text ) { QString t = text; QMap tagMap; bool stillProcess = true; // If include() has a $$tag then we need to reprocess while (stillProcess) { /* Strip any commments before we try to include. We still need to do it after we include to make sure the included file does not have comments */ t.replace( QRegExp(QString("#[^\n]*\n")), QString(" ") ); /* Process include() commands. $$PWD is a special case so we have to change it while we know where the included file is. */ QRegExp callToInclude("include\\s*\\(\\s*([^()\\s]+)\\s*\\)"); int i = 0; while ( (i = callToInclude.indexIn(t, i)) != -1 ) { bool doneWithVar = false; QString fileName = callToInclude.cap(1); QString after = fileName.replace("$$PWD", QDir::currentPath()); if (!tagMap.isEmpty() && after.contains("$$")) { QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); int ii = 0; while ((ii = after.indexOf(var, ii)) != -1) { if (tagMap.contains(var.cap(1))) { after.replace(ii, var.cap(0).length(), tagMap[var.cap(1)]); } else { // Couldn't find it doneWithVar = true; break; } } } if (doneWithVar || !after.contains("$$")) { after = loadFile(after); QFileInfo fi(callToInclude.cap(1)); after.replace("$$PWD", fi.path()); t.replace( i, callToInclude.matchedLength(), after ); } i += after.length(); } /* Strip comments, merge lines ending with backslash, add spaces around '=' and '+=', replace '\n' with ';', and simplify white spaces. */ t.replace( QRegExp(QString("#[^\n]*\n")), QString(" ") ); t.replace( QRegExp(QString("\\\\[^\n\\S]*\n")), QString(" ") ); t.replace( "=", QString(" = ") ); t.replace( "+ =", QString(" += ") ); t.replace( "\n", QString(";") ); t.replace( "\r", QString("") ); // remove carriage return t = t.simplified(); /* Populate tagMap with 'key = value' entries. */ QStringList lines = t.split(';', QString::SkipEmptyParts); QStringList::Iterator line; for ( line = lines.begin(); line != lines.end(); ++line ) { QStringList toks = (*line).split(' ', QString::SkipEmptyParts); if ( toks.count() >= 3 && (toks[1] == QString("=") || toks[1] == QString("+=") || toks[1] == QString("*=")) ) { QString tag = toks.first(); int k = tag.lastIndexOf( QChar(':') ); // as in 'unix:' if ( k != -1 ) tag = tag.mid( k + 1 ); toks.erase( toks.begin() ); QString action = toks.first(); toks.erase( toks.begin() ); if ( tagMap.contains(tag) ) { if ( action == QString("=") ) tagMap.insert( tag, toks.join(" ") ); else tagMap[tag] += QChar( ' ' ) + toks.join( " " ); } else { tagMap[tag] = toks.join( " " ); } } } /* Expand $$variables within the 'value' part of a 'key = value' pair. */ QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); QMap::Iterator it; for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { int i = 0; while ( (i = var.indexIn((*it), i)) != -1 ) { int len = var.matchedLength(); QString invocation = var.cap(1); QString after; if ( invocation == "system" ) { // skip system(); it will be handled in the next pass ++i; } else { if ( tagMap.contains(invocation) ) after = tagMap[invocation]; else if (invocation.toLower() == "pwd") after = QDir::currentPath(); (*it).replace( i, len, after ); i += after.length(); } } } /* Execute system() calls. */ QRegExp callToSystem( "\\$\\$system\\s*\\(([^()]*)\\)" ); for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { int i = 0; while ( (i = callToSystem.indexIn((*it), i)) != -1 ) { /* This code is stolen from qmake's project.cpp file. Ideally we would use the same parser, so we wouldn't have this code duplication. */ QString after; char buff[256]; FILE *proc = QT_POPEN( callToSystem.cap(1).toLatin1().constData(), "r" ); while ( proc && !feof(proc) ) { int read_in = int(fread( buff, 1, 255, proc )); if ( !read_in ) break; for ( int i = 0; i < read_in; i++ ) { if ( buff[i] == '\n' || buff[i] == '\t' ) buff[i] = ' '; } buff[read_in] = '\0'; after += buff; } (*it).replace( i, callToSystem.matchedLength(), after ); i += after.length(); } } stillProcess = callToInclude.indexIn(t) != -1; } return tagMap; } PyQt-gpl-5.5.1/pylupdate/proparser.h0000644000076500000240000000411412613140041017443 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef PROPARSER_H #define PROPARSER_H #include #include QMap proFileTagMap( const QString& text ); #endif PyQt-gpl-5.5.1/pylupdate/sametexth.cpp0000644000076500000240000000756312613140041017776 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include #include typedef QMap TMM; typedef QList TML; /* Augments a MetaTranslator with trivially derived translations. For example, if "Enabled:" is consistendly translated as "Eingeschaltet:" no matter the context or the comment, "Eingeschaltet:" is added as the translation of any untranslated "Enabled:" text and is marked Unfinished. Returns the number of additional messages that this heuristic translated. */ int applySameTextHeuristic( MetaTranslator *tor ) { TMM translated; TMM avoid; TMM::Iterator t; TML untranslated; TML::Iterator u; TML all = tor->messages(); TML::Iterator it; int inserted = 0; for ( it = all.begin(); it != all.end(); ++it ) { if ( (*it).type() == MetaTranslatorMessage::Unfinished ) { if ( !(*it).isTranslated() ) untranslated.append( *it ); } else { QByteArray key = (*it).sourceText(); t = translated.find( key ); if ( t != translated.end() ) { /* The same source text is translated at least two different ways. Do nothing then. */ if ( (*t).translations() != (*it).translations() ) { translated.remove( key ); avoid.insert( key, *it ); } } else if ( !avoid.contains(key) && (*it).isTranslated() ) { translated.insert( key, *it ); } } } for ( u = untranslated.begin(); u != untranslated.end(); ++u ) { QByteArray key = (*u).sourceText(); t = translated.find( key ); if ( t != translated.end() ) { MetaTranslatorMessage m( *u ); m.setTranslations( (*t).translations() ); tor->insert( m ); inserted++; } } return inserted; } PyQt-gpl-5.5.1/pylupdate/simtexth.cpp0000644000076500000240000002361512613140041017635 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "simtexth.h" #include "metatranslator.h" #include #include #include typedef QList TML; /* How similar are two texts? The approach used here relies on co-occurrence matrices and is very efficient. Let's see with an example: how similar are "here" and "hither"? The co-occurrence matrix M for "here" is M[h,e] = 1, M[e,r] = 1, M[r,e] = 1, and 0 elsewhere; the matrix N for "hither" is N[h,i] = 1, N[i,t] = 1, ..., N[h,e] = 1, N[e,r] = 1, and 0 elsewhere. The union U of both matrices is the matrix U[i,j] = max { M[i,j], N[i,j] }, and the intersection V is V[i,j] = min { M[i,j], N[i,j] }. The score for a pair of texts is score = (sum of V[i,j] over all i, j) / (sum of U[i,j] over all i, j), a formula suggested by Arnt Gulbrandsen. Here we have score = 2 / 6, or one third. The implementation differs from this in a few details. Most importantly, repetitions are ignored; for input "xxx", M[x,x] equals 1, not 2. */ /* Every character is assigned to one of 20 buckets so that the co-occurrence matrix requires only 20 * 20 = 400 bits, not 256 * 256 = 65536 bits or even more if we want the whole Unicode. Which character falls in which bucket is arbitrary. The second half of the table is a replica of the first half, because of laziness. */ static const int indexOf[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ! " # $ % & ' ( ) * + , - . / 0, 2, 6, 7, 10, 12, 15, 19, 2, 6, 7, 10, 12, 15, 19, 0, // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 1, 3, 4, 5, 8, 9, 11, 13, 14, 16, 2, 6, 7, 10, 12, 15, // @ A B C D E F G H I J K L M N O 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, // P Q R S T U V W X Y Z [ \ ] ^ _ 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0, // ` a b c d e f g h i j k l m n o 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, // p q r s t u v w x y z { | } ~ 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 7, 10, 12, 15, 19, 2, 6, 7, 10, 12, 15, 19, 0, 1, 3, 4, 5, 8, 9, 11, 13, 14, 16, 2, 6, 7, 10, 12, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0 }; /* The entry bitCount[i] (for i between 0 and 255) is the number of bits used to represent i in binary. */ static const int bitCount[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 }; struct CoMatrix { /* The matrix has 20 * 20 = 400 entries. This requires 50 bytes, or 13 words. Some operations are performed on words for more efficiency. */ union { quint8 b[52]; quint32 w[13]; }; CoMatrix() { memset( b, 0, 52 ); } CoMatrix( const char *text ) { char c = '\0', d; memset( b, 0, 52 ); /* The Knuth books are not in the office only for show; they help make loops 30% faster and 20% as readable. */ while ( (d = *text) != '\0' ) { setCoocc( c, d ); if ( (c = *++text) != '\0' ) { setCoocc( d, c ); text++; } } } void setCoocc( char c, char d ) { int k = indexOf[(uchar) c] + 20 * indexOf[(uchar) d]; b[k >> 3] |= k & 0x7; } int worth() const { int w = 0; for ( int i = 0; i < 50; i++ ) w += bitCount[b[i]]; return w; } }; static inline CoMatrix reunion( const CoMatrix& m, const CoMatrix& n ) { CoMatrix p; for ( int i = 0; i < 13; i++ ) p.w[i] = m.w[i] | n.w[i]; return p; } static inline CoMatrix intersection( const CoMatrix& m, const CoMatrix& n ) { CoMatrix p; for ( int i = 0; i < 13; i++ ) p.w[i] = m.w[i] & n.w[i]; return p; } StringSimilarityMatcher::StringSimilarityMatcher(const QString &stringToMatch) { m_cm = new CoMatrix( stringToMatch.toLatin1().constData() ); m_length = stringToMatch.length(); } int StringSimilarityMatcher::getSimilarityScore(const QString &strCandidate) { CoMatrix cmTarget( strCandidate.toLatin1().constData() ); int targetLen = strCandidate.length(); int delta = qAbs( m_length - targetLen ); int score = ( (intersection(*m_cm, cmTarget).worth() + 1) << 10 ) / ( reunion(*m_cm, cmTarget).worth() + (delta << 1) + 1 ); return score; } StringSimilarityMatcher::~StringSimilarityMatcher() { delete m_cm; } /** * Checks how similar two strings are. * The return value is the score, and a higher score is more similar than one with a low score. * Linguist considers a score over 190 to be a good match. * \sa StringSimilarityMatcher */ int getSimilarityScore(const QString &str1, const char* str2) { CoMatrix cmTarget( str2 ); int targetLen = qstrlen( str2 ); CoMatrix cm( str1.toLatin1().constData() ); int delta = qAbs( (int) str1.length() - targetLen ); int score = ( (intersection(cm, cmTarget).worth() + 1) << 10 ) / ( reunion(cm, cmTarget).worth() + (delta << 1) + 1 ); return score; } CandidateList similarTextHeuristicCandidates( const MetaTranslator *tor, const char *text, int maxCandidates ) { QList scores; CandidateList candidates; TML all = tor->translatedMessages(); foreach ( MetaTranslatorMessage mtm, all ) { if ( mtm.type() == MetaTranslatorMessage::Unfinished || mtm.translation().isEmpty() ) continue; QString s = tor->toUnicode( mtm.sourceText(), mtm.utf8() ); int score = getSimilarityScore(s, text); if ( (int) candidates.count() == maxCandidates && score > scores[maxCandidates - 1] ) candidates.removeAt( candidates.size()-1 ); if ( (int) candidates.count() < maxCandidates && score >= textSimilarityThreshold ) { Candidate cand( s, mtm.translation() ); int i; for ( i = 0; i < (int) candidates.size(); i++ ) { if ( score >= scores.at(i) ) { if ( score == scores.at(i) ) { if ( candidates.at(i) == cand ) goto continue_outer_loop; } else { break; } } } scores.insert( i, score ); candidates.insert( i, cand ); } continue_outer_loop: ; } return candidates; } PyQt-gpl-5.5.1/pylupdate/simtexth.h0000644000076500000240000000641112613140041017275 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef SIMTEXTH_H #define SIMTEXTH_H const int textSimilarityThreshold = 190; #include #include class MetaTranslator; struct Candidate { QString source; QString target; Candidate() { } Candidate( const QString& source0, const QString& target0 ) : source( source0 ), target( target0 ) { } }; inline bool operator==( const Candidate& c, const Candidate& d ) { return c.target == d.target && c.source == d.source; } inline bool operator!=( const Candidate& c, const Candidate& d ) { return !operator==( c, d ); } typedef QList CandidateList; struct CoMatrix; /** * This class is more efficient for searching through a large array of candidate strings, since we only * have to construct the CoMatrix for the \a stringToMatch once, * after that we just call getSimilarityScore(strCandidate). * \sa getSimilarityScore */ class StringSimilarityMatcher { public: StringSimilarityMatcher(const QString &stringToMatch); ~StringSimilarityMatcher(); int getSimilarityScore(const QString &strCandidate); private: CoMatrix *m_cm; int m_length; }; int getSimilarityScore(const QString &str1, const char* str2); CandidateList similarTextHeuristicCandidates( const MetaTranslator *tor, const char *text, int maxCandidates ); #endif PyQt-gpl-5.5.1/pylupdate/translator.cpp0000644000076500000240000010667312613140041020167 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "translator.h" #ifndef QT_NO_TRANSLATION #include "qfileinfo.h" #include "qstring.h" #include "qcoreapplication.h" #include "qdatastream.h" #include "qfile.h" #include "qmap.h" #include "qalgorithms.h" #include "qhash.h" #include "qglobal.h" // most of the headers below are already included in qplatformdefs.h // also this lacks Large File support but that's probably irrelevant #if defined(QT_USE_MMAP) // for mmap #include #include #endif #include /* $ mcookie 3cb86418caef9c95cd211cbf60a1bddd $ */ // magic number for the file static const int MagicLength = 16; static const uchar magic[MagicLength] = { 0x3c, 0xb8, 0x64, 0x18, 0xca, 0xef, 0x9c, 0x95, 0xcd, 0x21, 0x1c, 0xbf, 0x60, 0xa1, 0xbd, 0xdd }; static uint elfHash(const char * name) { const uchar *k; uint h = 0; uint g; if (name) { k = (const uchar *) name; while (*k) { h = (h << 4) + *k++; if ((g = (h & 0xf0000000)) != 0) h ^= g >> 24; h &= ~g; } } if (!h) h = 1; return h; } extern bool qt_detectRTLLanguage(); class TranslatorPrivate { public: struct Offset { Offset() : h(0), o(0) { } Offset(const TranslatorMessage& m, int offset) : h(m.hash()), o(offset) { } bool operator<(const Offset &other) const { return (h != other.h) ? h < other.h : o < other.o; } bool operator==(const Offset &other) const { return h == other.h && o == other.o; } uint h; uint o; }; enum { Contexts = 0x2f, Hashes = 0x42, Messages = 0x69 }; TranslatorPrivate(Translator *qq) : q(qq), unmapPointer(0), unmapLength(0) {} // Translator must finalize this before deallocating it Translator *q; // for mmap'ed files, this is what needs to be unmapped. char *unmapPointer; unsigned int unmapLength; // for squeezed but non-file data, this is what needs to be deleted QByteArray messageArray; QByteArray offsetArray; QByteArray contextArray; #ifndef QT_NO_TRANSLATION_BUILDER QMap messages; #endif bool do_load(const uchar *data, int len); }; /*! \class Translator \brief The Translator class provides internationalization support for text output. \ingroup i18n \ingroup environment \mainclass An object of this class contains a set of TranslatorMessage objects, each of which specifies a translation from a source language to a target language. Translator provides functions to look up translations, add new ones, remove them, load and save them, etc. The most common use of Translator is to: load a translator file created with \l{Qt Linguist Manual}, install it using QCoreApplication::installTranslator(), and use it via QObject::tr(). For example: \code int main(int argc, char ** argv) { QCoreApplication app(argc, argv); Translator translator(0); translator.load("french.qm", "."); app.installTranslator(&translator); MyWidget m; app.setMainWidget(&m); m.show(); return app.exec(); } \endcode Note that the translator must be created \e before the application's main window. Most applications will never need to do anything else with this class. The other functions provided by this class are useful for applications that work on translator files. We call a translation a "messsage". For this reason, translation files are sometimes referred to as "message files". It is possible to lookup a translation using findMessage() (as tr() and QCoreApplication::translate() do) and contains(), to insert a new translation messsage using insert(), and to remove one using remove(). Translation tools often need more information than the bare source text and translation, for example, context information to help the translator. But end-user programs that are using translations usually only need lookup. To cater for these different needs, Translator can use stripped translator files that use the minimum of memory and which support little more functionality than findMessage(). Thus, load() may not load enough information to make anything more than findMessage() work. save() has an argument indicating whether to save just this minimum of information or to save everything. "Everything" means that for each translation item the following information is kept: \list \i The \e {translated text} - the return value from tr(). \i The input key: \list \i The \e {source text} - usually the argument to tr(). \i The \e context - usually the class name for the tr() caller. \i The \e comment - a comment that helps disambiguate different uses of the same text in the same context. \endlist \endlist The minimum for each item is just the information necessary for findMessage() to return the right text. This may include the source, context and comment, but usually it is just a hash value and the translated text. For example, the "Cancel" in a dialog might have "Anuluj" when the program runs in Polish (in this case the source text would be "Cancel"). The context would (normally) be the dialog's class name; there would normally be no comment, and the translated text would be "Anuluj". But it's not always so simple. The Spanish version of a printer dialog with settings for two-sided printing and binding would probably require both "Activado" and "Activada" as translations for "Enabled". In this case the source text would be "Enabled" in both cases, and the context would be the dialog's class name, but the two items would have disambiguating comments such as "two-sided printing" for one and "binding" for the other. The comment enables the translator to choose the appropriate gender for the Spanish version, and enables Qt to distinguish between translations. Note that when Translator loads a stripped file, most functions do not work. The functions that do work with stripped files are explicitly documented as such. \sa TranslatorMessage QCoreApplication::installTranslator() QCoreApplication::removeTranslator() QObject::tr() QCoreApplication::translate() */ /*! \enum Translator::SaveMode This enum type defines how Translator writes translation files. There are two modes: \value Everything files are saved with all available information \value Stripped files are saved with just enough information for end-user applications Note that when Translator loads a stripped file, most functions do not work. The functions that do work with stripped files are explicitly documented as such. */ /*! Constructs an empty message file object with parent \a parent that is not connected to any file. */ Translator::Translator(QObject * parent) : QTranslator(parent) { d = new TranslatorPrivate(this); } /*! Destroys the object and frees any allocated resources. */ Translator::~Translator() { if (QCoreApplication::instance()) QCoreApplication::instance()->removeTranslator(this); clear(); delete d; } /*! Loads \a filename + \a suffix (".qm" if the \a suffix is not specified), which may be an absolute file name or relative to \a directory. The previous contents of this translator object is discarded. If the file name does not exist, other file names are tried in the following order: \list 1 \i File name without \a suffix appended. \i File name with text after a character in \a search_delimiters stripped ("_." is the default for \a search_delimiters if it is an empty string) and \a suffix. \i File name stripped without \a suffix appended. \i File name stripped further, etc. \endlist For example, an application running in the fr_CA locale (French-speaking Canada) might call load("foo.fr_ca", "/opt/foolib"). load() would then try to open the first existing readable file from this list: \list 1 \i /opt/foolib/foo.fr_ca.qm \i /opt/foolib/foo.fr_ca \i /opt/foolib/foo.fr.qm \i /opt/foolib/foo.fr \i /opt/foolib/foo.qm \i /opt/foolib/foo \endlist \sa save() */ bool Translator::load(const QString & filename, const QString & directory, const QString & search_delimiters, const QString & suffix) { clear(); QString prefix; if (filename[0] == QLatin1Char('/') #ifdef Q_WS_WIN || (filename[0].isLetter() && filename[1] == QLatin1Char(':')) || filename[0] == QLatin1Char('\\') #endif ) prefix = QLatin1String(""); else prefix = directory; if (prefix.length()) { if (prefix[int(prefix.length()-1)] != QLatin1Char('/')) prefix += QLatin1Char('/'); } QString fname = filename; QString realname; QString delims; delims = search_delimiters.isNull() ? QString::fromLatin1("_.") : search_delimiters; for (;;) { QFileInfo fi; realname = prefix + fname + (suffix.isNull() ? QString::fromLatin1(".qm") : suffix); fi.setFile(realname); if (fi.isReadable()) break; realname = prefix + fname; fi.setFile(realname); if (fi.isReadable()) break; int rightmost = 0; for (int i = 0; i < (int)delims.length(); i++) { int k = fname.lastIndexOf(delims[i]); if (k > rightmost) rightmost = k; } // no truncations? fail if (rightmost == 0) return false; fname.truncate(rightmost); } // realname is now the fully qualified name of a readable file. bool ok = false; #ifdef QT_USE_MMAP #ifndef MAP_FILE #define MAP_FILE 0 #endif #ifndef MAP_FAILED #define MAP_FAILED -1 #endif int fd = -1; if (!realname.startsWith(QLatin1String(":"))) fd = QT_OPEN(QFile::encodeName(realname), O_RDONLY, #if defined(Q_OS_WIN) _S_IREAD | _S_IWRITE #else 0666 #endif ); if (fd >= 0) { struct stat st; if (!fstat(fd, &st)) { char *ptr; ptr = reinterpret_cast( mmap(0, st.st_size, // any address, whole file PROT_READ, // read-only memory MAP_FILE | MAP_PRIVATE, // swap-backed map from file fd, 0)); // from offset 0 of fd if (ptr && ptr != reinterpret_cast(MAP_FAILED)) { d->unmapPointer = ptr; d->unmapLength = st.st_size; ok = true; } } ::close(fd); } #endif // QT_USE_MMAP if (!ok) { QFile file(realname); if (!file.exists()) return false; d->unmapLength = file.size(); d->unmapPointer = new char[d->unmapLength]; if (file.open(QIODevice::ReadOnly)) ok = (d->unmapLength == (uint)file.read(d->unmapPointer, d->unmapLength)); if (!ok) { delete [] d->unmapPointer; d->unmapPointer = 0; d->unmapLength = 0; return false; } } return d->do_load(reinterpret_cast(d->unmapPointer), d->unmapLength); } /*! \overload \fn bool Translator::load(const uchar *data, int len) Loads the .qm file data \a data of length \a len into the translator. The data is not copied. The caller must be able to guarantee that \a data will not be deleted or modified. */ bool Translator::load(const uchar *data, int len) { clear(); return d->do_load(data, len); } bool TranslatorPrivate::do_load(const uchar *data, int len) { if (len < MagicLength || memcmp(data, magic, MagicLength) != 0) { q->clear(); return false; } QByteArray array = QByteArray::fromRawData((const char *) data, len); QDataStream s(&array, QIODevice::ReadOnly); bool ok = true; s.device()->seek(MagicLength); quint8 tag = 0; quint32 blockLen = 0; s >> tag >> blockLen; while (tag && blockLen) { if ((quint32) s.device()->pos() + blockLen > (quint32) len) { ok = false; break; } if (tag == TranslatorPrivate::Contexts) { contextArray = QByteArray(array.constData() + s.device()->pos(), blockLen); } else if (tag == TranslatorPrivate::Hashes) { offsetArray = QByteArray(array.constData() + s.device()->pos(), blockLen); } else if (tag == TranslatorPrivate::Messages) { messageArray = QByteArray(array.constData() + s.device()->pos(), blockLen); } if (!s.device()->seek(s.device()->pos() + blockLen)) { ok = false; break; } tag = 0; blockLen = 0; if (!s.atEnd()) s >> tag >> blockLen; } return ok; } #ifndef QT_NO_TRANSLATION_BUILDER /*! Saves this message file to \a filename, overwriting the previous contents of \a filename. If \a mode is \c Everything (the default), all the information is preserved. If \a mode is \c Stripped, any information that is not necessary for findMessage() is stripped away. \sa load() */ bool Translator::save(const QString & filename, SaveMode mode) { QFile file(filename); if (file.open(QIODevice::WriteOnly)) { squeeze(mode); QDataStream s(&file); s.writeRawData((const char *)magic, MagicLength); quint8 tag; if (!d->offsetArray.isEmpty()) { tag = (quint8)TranslatorPrivate::Hashes; quint32 oas = (quint32)d->offsetArray.size(); s << tag << oas; s.writeRawData(d->offsetArray, oas); } if (!d->messageArray.isEmpty()) { tag = (quint8)TranslatorPrivate::Messages; quint32 mas = (quint32)d->messageArray.size(); s << tag << mas; s.writeRawData(d->messageArray, mas); } if (!d->contextArray.isEmpty()) { tag = (quint8)TranslatorPrivate::Contexts; quint32 cas = (quint32)d->contextArray.size(); s << tag << cas; s.writeRawData(d->contextArray, cas); } return true; } return false; } #endif /*! Empties this translator of all contents. This function works with stripped translator files. */ void Translator::clear() { if (d->unmapPointer && d->unmapLength) { #if defined(QT_USE_MMAP) munmap(d->unmapPointer, d->unmapLength); #else delete [] d->unmapPointer; #endif d->unmapPointer = 0; d->unmapLength = 0; } d->messageArray.clear(); d->offsetArray.clear(); d->contextArray.clear(); #ifndef QT_NO_TRANSLATION_BUILDER d->messages.clear(); #endif QEvent ev(QEvent::LanguageChange); QCoreApplication::sendEvent(QCoreApplication::instance(), &ev); } #ifndef QT_NO_TRANSLATION_BUILDER /*! Converts this message file to the compact format used to store message files on disk. You should never need to call this directly; save() and other functions call it as necessary. \a mode is for internal use. \sa save() unsqueeze() */ void Translator::squeeze(SaveMode mode) { if (d->messages.isEmpty()) { if (mode == Stripped) unsqueeze(); else return; } QMap messages = d->messages; clear(); QMap offsets; QDataStream ms(&d->messageArray, QIODevice::WriteOnly); QMap::const_iterator it, next; int cpPrev = 0, cpNext = 0; for (it = messages.constBegin(); it != messages.constEnd(); ++it) { cpPrev = cpNext; next = it; ++next; if (next == messages.constEnd()) cpNext = 0; else cpNext = (int) it.key().commonPrefix(next.key()); offsets.insert(TranslatorPrivate::Offset(it.key(), ms.device()->pos()), (void *)0); it.key().write(ms, mode == Stripped, (TranslatorMessage::Prefix)qMax(cpPrev, cpNext + 1)); } QMap::Iterator offset; offset = offsets.begin(); QDataStream ds(&d->offsetArray, QIODevice::WriteOnly); while (offset != offsets.end()) { TranslatorPrivate::Offset k = offset.key(); ++offset; ds << (quint32)k.h << (quint32)k.o; } if (mode == Stripped) { QMap contextSet; for (it = messages.constBegin(); it != messages.constEnd(); ++it) ++contextSet[it.key().context()]; quint16 hTableSize; if (contextSet.size() < 200) hTableSize = (contextSet.size() < 60) ? 151 : 503; else if (contextSet.size() < 2500) hTableSize = (contextSet.size() < 750) ? 1511 : 5003; else hTableSize = (contextSet.size() < 10000) ? 15013 : 3 * contextSet.size() / 2; QMultiMap hashMap; QMap::const_iterator c; for (c = contextSet.constBegin(); c != contextSet.constEnd(); ++c) hashMap.insert(elfHash(c.key()) % hTableSize, c.key()); /* The contexts found in this translator are stored in a hash table to provide fast lookup. The context array has the following format: quint16 hTableSize; quint16 hTable[hTableSize]; quint8 contextPool[...]; The context pool stores the contexts as Pascal strings: quint8 len; quint8 data[len]; Let's consider the look-up of context "FunnyDialog". A hash value between 0 and hTableSize - 1 is computed, say h. If hTable[h] is 0, "FunnyDialog" is not covered by this translator. Else, we check in the contextPool at offset 2 * hTable[h] to see if "FunnyDialog" is one of the contexts stored there, until we find it or we meet the empty string. */ d->contextArray.resize(2 + (hTableSize << 1)); QDataStream t(&d->contextArray, QIODevice::WriteOnly); quint16 *hTable = new quint16[hTableSize]; memset(hTable, 0, hTableSize * sizeof(quint16)); t << hTableSize; t.device()->seek(2 + (hTableSize << 1)); t << (quint16)0; // the entry at offset 0 cannot be used uint upto = 2; QMap::const_iterator entry = hashMap.constBegin(); while (entry != hashMap.constEnd()) { int i = entry.key(); hTable[i] = (quint16)(upto >> 1); do { const char *con = entry.value(); uint len = (uint)qstrlen(con); len = qMin(len, 255u); t << (quint8)len; t.writeRawData(con, len); upto += 1 + len; ++entry; } while (entry != hashMap.constEnd() && entry.key() == i); do { t << (quint8) 0; // empty string ++upto; } while ((upto & 0x1) != 0); // offsets have to be even } t.device()->seek(2); for (int j = 0; j < hTableSize; j++) t << hTable[j]; delete [] hTable; if (upto > 131072) { qWarning("Translator::squeeze: Too many contexts"); d->contextArray.clear(); } } } /*! Converts this message file into an easily modifiable data structure, less compact than the format used in the files. You should never need to call this function; it is called by insert() and friends as necessary. \sa squeeze() */ void Translator::unsqueeze() { if (!d->messages.isEmpty() || d->messageArray.isEmpty()) return; qFatal("Cannot unsqueeze (bug in Linguist?)"); } /*! Returns true if this message file contains a message with the key (\a context, \a sourceText, \a comment); otherwise returns false. This function works with stripped translator files. (This is is a one-liner that calls findMessage().) */ bool Translator::contains(const char* context, const char* sourceText, const char* comment) const { return !findMessage(context, sourceText, comment).translation().isNull(); } bool Translator::contains(const char *context, const char *comment, const QString &fileName, int lineNumber) const { return !findMessage(context, 0, comment, fileName, lineNumber).isNull(); } /*! Inserts \a message into this message file. This function does \e not work with stripped translator files. It may appear to, but that is not dependable. \sa remove() */ void Translator::insert(const TranslatorMessage& message) { unsqueeze(); d->messages.remove(message); // safer d->messages.insert(message, (void *) 0); } /*! \fn void Translator::insert(const char *context, const char *sourceText, const QString &translation) \overload \obsolete Inserts the \a sourceText and \a translation into the translator with the given \a context. */ /*! Removes \a message from this translator. This function works with stripped translator files. \sa insert() */ void Translator::remove(const TranslatorMessage& message) { unsqueeze(); d->messages.remove(message); } /*! \fn void Translator::remove(const char *, const char *) \overload \obsolete Removes the translation associated to the key (\a context, \a sourceText, "") from this translator. */ #endif /*! Returns the TranslatorMessage for the key (\a context, \a sourceText, \a comment). If none is found, also tries (\a context, \a sourceText, ""). */ TranslatorMessage Translator::findMessage(const char *context, const char *sourceText, const char *comment, const QString &fileName, int lineNumber) const { if (context == 0) context = ""; if (sourceText == 0) sourceText = ""; if (comment == 0) comment = ""; QString myFilename = fileName; int myLineNumber = lineNumber; if (!d->messages.isEmpty()) { QMap::const_iterator it; // Either we want to find an item that matches context, sourcetext (and optionally comment) // Or we want to find an item that matches context, filename, linenumber (and optionally comment) it = d->messages.find(TranslatorMessage(context, sourceText, comment, myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); if (comment[0]) { it = d->messages.find(TranslatorMessage(context, sourceText, "", myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); } it = d->messages.find(TranslatorMessage(context, "", comment, myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); if (comment[0]) { it = d->messages.find(TranslatorMessage(context, "", "", myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); } return TranslatorMessage(); } return TranslatorMessage(); } /*! Returns true if this translator is empty, otherwise returns false. This function works with stripped and unstripped translation files. */ bool Translator::isEmpty() const { return !d->unmapPointer && !d->unmapLength && d->messageArray.isEmpty() && d->offsetArray.isEmpty() && d->contextArray.isEmpty() && d->messages.isEmpty(); } #ifndef QT_NO_TRANSLATION_BUILDER /*! Returns a list of the messages in the translator. This function is rather slow. Because it is seldom called, it's optimized for simplicity and small size, rather than speed. If you want to iterate over the list, you should iterate over a copy, e.g. \code QList list = myTranslator.messages(); QList::Iterator it = list.begin(); while (it != list.end()) { process_message(*it); ++it; } \endcode */ QList Translator::messages() const { ((Translator *) this)->unsqueeze(); return d->messages.keys(); } #endif /*! \class TranslatorMessage \brief The TranslatorMessage class contains a translator message and its properties. \ingroup i18n \ingroup environment This class is of no interest to most applications. It is useful for translation tools such as \l{Qt Linguist Manual}{Qt Linguist}. It is provided simply to make the API complete and regular. For a Translator object, a lookup key is a triple (\e context, \e {source text}, \e comment) that uniquely identifies a message. An extended key is a quadruple (\e hash, \e context, \e {source text}, \e comment), where \e hash is computed from the source text and the comment. Unless you plan to read and write messages yourself, you need not worry about the hash value. TranslatorMessage stores this triple or quadruple and the relevant translation if there is any. \sa Translator */ /*! Constructs a translator message with the extended key (0, 0, 0, 0) and an empty string as translation. */ TranslatorMessage::TranslatorMessage() : h(0), m_fileName(), m_lineNumber(-1) { } /*! Constructs an translator message with the extended key (\e h, \a context, \a sourceText, \a comment), where \e h is computed from \a sourceText and \a comment, and possibly with a \a translation. */ TranslatorMessage::TranslatorMessage(const char * context, const char * sourceText, const char * comment, const QString &fileName, int lineNumber, const QStringList& translations) : cx(context), st(sourceText), cm(comment), m_translations(translations), m_fileName(fileName), m_lineNumber(lineNumber) { // 0 means we don't know, "" means empty if (cx == (const char*)0) cx = ""; if (st == (const char*)0) st = ""; if (cm == (const char*)0) cm = ""; h = elfHash(st + cm); } /*! Constructs a copy of translator message \a m. */ TranslatorMessage::TranslatorMessage(const TranslatorMessage & m) : cx(m.cx), st(m.st), cm(m.cm), m_translations(m.m_translations), m_fileName(m.m_fileName), m_lineNumber(m.m_lineNumber) { h = m.h; } /*! Assigns message \a m to this translator message and returns a reference to this translator message. */ TranslatorMessage & TranslatorMessage::operator=( const TranslatorMessage & m) { h = m.h; cx = m.cx; st = m.st; cm = m.cm; m_translations = m.m_translations; m_fileName = m.m_fileName; m_lineNumber = m.m_lineNumber; return *this; } /*! \fn uint TranslatorMessage::hash() const Returns the hash value used internally to represent the lookup key. This value is zero only if this translator message was constructed from a stream containing invalid data. The hashing function is unspecified, but it will remain unchanged in future versions of Qt. */ /*! \fn const char *TranslatorMessage::context() const Returns the context for this message (e.g. "MyDialog"). */ /*! \fn const char *TranslatorMessage::sourceText() const Returns the source text of this message (e.g. "&Save"). */ /*! \fn const char *TranslatorMessage::comment() const Returns the comment for this message (e.g. "File|Save"). */ /*! \fn void TranslatorMessage::setTranslation(const QString & translation) Sets the translation of the source text to \a translation. \sa translation() */ /*! \fn QString TranslatorMessage::translation() const Returns the translation of the source text (e.g., "&Sauvegarder"). \sa setTranslation() */ /*! \enum TranslatorMessage::Prefix Let (\e h, \e c, \e s, \e m) be the extended key. The possible prefixes are \value NoPrefix no prefix \value Hash only (\e h) \value HashContext only (\e h, \e c) \value HashContextSourceText only (\e h, \e c, \e s) \value HashContextSourceTextComment the whole extended key, (\e h, \e c, \e s, \e m) \sa write() commonPrefix() */ /*! Writes this translator message to the \a stream. If \a strip is false (the default), all the information in the message is written. If \a strip is true, only the part of the extended key specified by \a prefix is written with the translation (\c HashContextSourceTextComment by default). \sa commonPrefix() */ void TranslatorMessage::write(QDataStream & stream, bool strip, Prefix prefix) const { for (int i = 0; i < m_translations.count(); ++i) stream << quint8(Tag_Translation) << m_translations.at(i); if (!strip) prefix = HashContextSourceTextComment; switch (prefix) { case HashContextSourceTextComment: stream << quint8(Tag_Comment) << cm; // fall through case HashContextSourceText: stream << quint8(Tag_SourceText) << st; // fall through case HashContext: stream << quint8(Tag_Context) << cx; default: ; } stream << quint8(Tag_End); } /*! Returns the widest lookup prefix that is common to this translator message and to message \a m. For example, if the extended key is for this message is (71, "PrintDialog", "Yes", "Print?") and that for \a m is (71, "PrintDialog", "No", "Print?"), this function returns \c HashContext. \sa write() */ TranslatorMessage::Prefix TranslatorMessage::commonPrefix( const TranslatorMessage& m) const { if (h != m.h) return NoPrefix; if (cx != m.cx) return Hash; if (st != m.st) return HashContext; if (cm != m.cm) return HashContextSourceText; return HashContextSourceTextComment; } /*! Returns true if the extended key of this object is equal to that of \a m; otherwise returns false. */ bool TranslatorMessage::operator==(const TranslatorMessage& m) const { bool isHashEq = (h == m.h ? true : false); bool isContextEq = (cx == m.cx ? true : false); bool isSourceEq = (st == m.st ? true : false); bool isCommentEq = (cm == m.cm ? true : false); bool isLocationEq = m_lineNumber == m.m_lineNumber && m_fileName == m.m_fileName; return (isHashEq && isContextEq && isSourceEq && isCommentEq) || // translation can be different, but treat the equal (st.isEmpty() && isContextEq && isCommentEq && isLocationEq); } /*! \fn bool TranslatorMessage::operator!=(const TranslatorMessage& m) const Returns true if the extended key of this object is different from that of \a m; otherwise returns false. */ /*! Returns true if the extended key of this object is lexicographically before than that of \a m; otherwise returns false. */ bool TranslatorMessage::operator<(const TranslatorMessage& m) const { return h != m.h ? h < m.h : (cx != m.cx ? cx < m.cx : (st != m.st ? st < m.st : cm < m.cm)); } /*! \fn bool TranslatorMessage::operator<=(const TranslatorMessage& m) const Returns true if the extended key of this object is lexicographically before that of \a m or if they are equal; otherwise returns false. */ /*! \fn bool TranslatorMessage::operator>(const TranslatorMessage& m) const Returns true if the extended key of this object is lexicographically after that of \a m; otherwise returns false. */ /*! \fn bool TranslatorMessage::operator>=(const TranslatorMessage& m) const Returns true if the extended key of this object is lexicographically after that of \a m or if they are equal; otherwise returns false. */ /*! \fn QString Translator::find(const char *context, const char *sourceText, const char * comment) const Use findMessage() instead. */ bool getNumerusInfo(QLocale::Language language, QLocale::Country country, QStringList *forms) { forever { for (int i = 0; i < NumerusTableSize; ++i) { const NumerusTableEntry &entry = numerusTable[i]; for (int j = 0; entry.languages[j] != EOL; ++j) { if (entry.languages[j] == language && ((!entry.countries && country == QLocale::AnyCountry) || (entry.countries && entry.countries[j] == country))) { if (forms) { forms->clear(); for (int k = 0; entry.forms[k]; ++k) forms->append(QLatin1String(entry.forms[k])); } return true; } } } if (country == QLocale::AnyCountry) break; country = QLocale::AnyCountry; } return false; } #endif // QT_NO_TRANSLATION PyQt-gpl-5.5.1/pylupdate/translator.h0000644000076500000240000003566212613140041017633 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef TRANSLATOR_H #define TRANSLATOR_H #include "QtCore/qobject.h" #include "QtCore/qbytearray.h" #include "QtCore/qstringlist.h" #include "QtCore/qlocale.h" #include class TranslatorPrivate; #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif QT_BEGIN_NAMESPACE template class QList; QT_END_NAMESPACE class TranslatorMessage { public: TranslatorMessage(); TranslatorMessage(const char * context, const char * sourceText, const char * comment, const QString &fileName, int lineNumber, const QStringList& translations = QStringList()); TranslatorMessage(const TranslatorMessage & m); TranslatorMessage & operator=(const TranslatorMessage & m); uint hash() const { return h; } const char *context() const { return cx.isNull() ? 0 : cx.constData(); } const char *sourceText() const { return st.isNull() ? 0 : st.constData(); } const char *comment() const { return cm.isNull() ? 0 : cm.constData(); } inline void setTranslations(const QStringList &translations); QStringList translations() const { return m_translations; } void setTranslation(const QString &translation) { m_translations = QStringList(translation); } QString translation() const { return m_translations.value(0); } bool isTranslated() const { return m_translations.count() > 1 || !m_translations.value(0).isEmpty(); } enum Prefix { NoPrefix, Hash, HashContext, HashContextSourceText, HashContextSourceTextComment }; void write(QDataStream & s, bool strip = false, Prefix prefix = HashContextSourceTextComment) const; Prefix commonPrefix(const TranslatorMessage&) const; bool operator==(const TranslatorMessage& m) const; bool operator!=(const TranslatorMessage& m) const { return !operator==(m); } bool operator<(const TranslatorMessage& m) const; bool operator<=(const TranslatorMessage& m) const { return !m.operator<(*this); } bool operator>(const TranslatorMessage& m) const { return m.operator<(*this); } bool operator>=(const TranslatorMessage& m) const { return !operator<(m); } QString fileName(void) const { return m_fileName; } void setFileName(const QString &fileName) { m_fileName = fileName; } int lineNumber(void) const { return m_lineNumber; } void setLineNumber(int lineNumber) { m_lineNumber = lineNumber; } bool isNull() const { return st.isNull() && m_lineNumber == -1 && m_translations.isEmpty(); } private: uint h; QByteArray cx; QByteArray st; QByteArray cm; QStringList m_translations; QString m_fileName; int m_lineNumber; enum Tag { Tag_End = 1, Tag_SourceText16, Tag_Translation, Tag_Context16, Tag_Hash, Tag_SourceText, Tag_Context, Tag_Comment, Tag_Obsolete1 }; }; Q_DECLARE_TYPEINFO(TranslatorMessage, Q_MOVABLE_TYPE); inline void TranslatorMessage::setTranslations(const QStringList &translations) { m_translations = translations; } class Translator : public QTranslator { Q_OBJECT public: explicit Translator(QObject *parent = 0); ~Translator(); virtual TranslatorMessage findMessage(const char *context, const char *sourceText, const char *comment = 0, const QString &fileName = 0, int lineNumber = -1) const; virtual QString translate(const char *context, const char *sourceText, const char *comment = 0, int = -1) const { return findMessage(context, sourceText, comment).translation(); } bool load(const QString & filename, const QString & directory = QString(), const QString & search_delimiters = QString(), const QString & suffix = QString()); bool load(const uchar *data, int len); void clear(); enum SaveMode { Everything, Stripped }; bool save(const QString & filename, SaveMode mode = Everything); void insert(const TranslatorMessage&); inline void insert(const char *context, const char *sourceText, const QString &fileName, int lineNo, const QStringList &translations) { insert(TranslatorMessage(context, sourceText, "", fileName, lineNo, translations)); } void remove(const TranslatorMessage&); inline void remove(const char *context, const char *sourceText) { remove(TranslatorMessage(context, sourceText, "", QLatin1String(""), -1)); } bool contains(const char *context, const char *sourceText, const char * comment = 0) const; bool contains(const char *context, const char *comment, const QString &fileName, int lineNumber) const; void squeeze(SaveMode = Everything); void unsqueeze(); QList messages() const; bool isEmpty() const; private: Q_DISABLE_COPY(Translator) TranslatorPrivate *d; }; static const char * const japaneseStyleForms[] = { "Unique Form", 0 }; static const char * const englishStyleForms[] = { "Singular", "Plural", 0 }; static const char * const frenchStyleForms[] = { "Singular", "Plural", 0 }; static const char * const latvianForms[] = { "Singular", "Plural", "Nullar", 0 }; static const char * const irishStyleForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const czechForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const slovakForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const macedonianForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const lithuanianForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const russianStyleForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const polishForms[] = { "Singular", "Paucal", "Plural", 0 }; static const char * const romanianForms[] = { "Singular", "Plural Form for 2 to 19", "Plural", 0 }; static const char * const slovenianForms[] = { "Singular", "Dual", "Trial", "Plural", 0 }; static const char * const malteseForms[] = { "Singular", "Plural Form for 2 to 10", "Plural Form for 11 to 19", "Plural", 0 }; static const char * const welshForms[] = { "Nullar", "Singular", "Dual", "Sexal", "Plural", 0 }; static const char * const arabicForms[] = { "Nullar", "Singular", "Dual", "Minority Plural", "Plural", "Plural Form for 100, 200, ...", 0 }; #define EOL QLocale::C static const QLocale::Language japaneseStyleLanguages[] = { QLocale::Afan, QLocale::Armenian, QLocale::Bhutani, QLocale::Bislama, QLocale::Burmese, QLocale::Chinese, #if QT_VERSION >= 0x050000 QLocale::Fijian, #else QLocale::FijiLanguage, #endif QLocale::Guarani, QLocale::Hungarian, QLocale::Indonesian, QLocale::Japanese, QLocale::Javanese, QLocale::Korean, QLocale::Malay, QLocale::NauruLanguage, QLocale::Persian, QLocale::Sundanese, QLocale::Thai, QLocale::Tibetan, QLocale::Vietnamese, QLocale::Yoruba, QLocale::Zhuang, EOL }; static const QLocale::Language englishStyleLanguages[] = { QLocale::Abkhazian, QLocale::Afar, QLocale::Afrikaans, QLocale::Albanian, QLocale::Amharic, QLocale::Assamese, QLocale::Aymara, QLocale::Azerbaijani, QLocale::Bashkir, QLocale::Basque, QLocale::Bengali, QLocale::Bihari, // Missing: Bokmal, QLocale::Bulgarian, QLocale::Cambodian, QLocale::Catalan, QLocale::Cornish, QLocale::Corsican, QLocale::Danish, QLocale::Dutch, QLocale::English, QLocale::Esperanto, QLocale::Estonian, QLocale::Faroese, QLocale::Finnish, // Missing: Friulian, QLocale::Frisian, QLocale::Galician, QLocale::Georgian, QLocale::German, QLocale::Greek, QLocale::Greenlandic, QLocale::Gujarati, QLocale::Hausa, QLocale::Hebrew, QLocale::Hindi, QLocale::Icelandic, QLocale::Interlingua, QLocale::Interlingue, QLocale::Italian, QLocale::Kannada, QLocale::Kashmiri, QLocale::Kazakh, QLocale::Kinyarwanda, QLocale::Kirghiz, QLocale::Kurdish, QLocale::Kurundi, #if QT_VERSION >= 0x050000 QLocale::Lao, #else QLocale::Laothian, #endif QLocale::Latin, // Missing: Letzeburgesch, QLocale::Lingala, QLocale::Malagasy, QLocale::Malayalam, QLocale::Marathi, QLocale::Mongolian, // Missing: Nahuatl, QLocale::Nepali, // Missing: Northern Sotho, QLocale::Norwegian, #if QT_VERSION >= 0x050000 QLocale::NorwegianNynorsk, #else QLocale::Nynorsk, #endif QLocale::Occitan, QLocale::Oriya, QLocale::Pashto, QLocale::Portuguese, QLocale::Punjabi, QLocale::Quechua, QLocale::RhaetoRomance, #if QT_VERSION >= 0x050000 QLocale::SouthernSotho, QLocale::Tswana, #else QLocale::Sesotho, QLocale::Setswana, #endif QLocale::Shona, QLocale::Sindhi, #if QT_VERSION >= 0x050000 QLocale::Sinhala, QLocale::Swati, #else QLocale::Singhalese, QLocale::Siswati, #endif QLocale::Somali, QLocale::Spanish, QLocale::Swahili, QLocale::Swedish, QLocale::Tagalog, QLocale::Tajik, QLocale::Tamil, QLocale::Tatar, QLocale::Telugu, #if QT_VERSION >= 0x050000 QLocale::Tongan, #else QLocale::TongaLanguage, #endif QLocale::Tsonga, QLocale::Turkish, QLocale::Turkmen, QLocale::Twi, QLocale::Uigur, QLocale::Uzbek, QLocale::Volapuk, QLocale::Wolof, QLocale::Xhosa, QLocale::Yiddish, QLocale::Zulu, EOL }; static const QLocale::Language frenchStyleLanguages[] = { // keep synchronized with frenchStyleCountries QLocale::Breton, QLocale::French, QLocale::Portuguese, // Missing: Filipino, QLocale::Tigrinya, // Missing: Walloon EOL }; static const QLocale::Language latvianLanguage[] = { QLocale::Latvian, EOL }; static const QLocale::Language irishStyleLanguages[] = { QLocale::Divehi, QLocale::Gaelic, QLocale::Inuktitut, QLocale::Inupiak, QLocale::Irish, QLocale::Manx, QLocale::Maori, // Missing: Sami, QLocale::Samoan, QLocale::Sanskrit, EOL }; static const QLocale::Language czechLanguage[] = { QLocale::Czech, EOL }; static const QLocale::Language slovakLanguage[] = { QLocale::Slovak, EOL }; static const QLocale::Language macedonianLanguage[] = { QLocale::Macedonian, EOL }; static const QLocale::Language lithuanianLanguage[] = { QLocale::Lithuanian, EOL }; static const QLocale::Language russianStyleLanguages[] = { QLocale::Bosnian, QLocale::Byelorussian, QLocale::Croatian, QLocale::Russian, QLocale::Serbian, QLocale::SerboCroatian, QLocale::Ukrainian, EOL }; static const QLocale::Language polishLanguage[] = { QLocale::Polish, EOL }; static const QLocale::Language romanianLanguages[] = { QLocale::Moldavian, QLocale::Romanian, EOL }; static const QLocale::Language slovenianLanguage[] = { QLocale::Slovenian, EOL }; static const QLocale::Language malteseLanguage[] = { QLocale::Maltese, EOL }; static const QLocale::Language welshLanguage[] = { QLocale::Welsh, EOL }; static const QLocale::Language arabicLanguage[] = { QLocale::Arabic, EOL }; static const QLocale::Country frenchStyleCountries[] = { // keep synchronized with frenchStyleLanguages QLocale::AnyCountry, QLocale::AnyCountry, QLocale::Brazil, QLocale::AnyCountry }; struct NumerusTableEntry { const char * const *forms; const QLocale::Language *languages; const QLocale::Country *countries; }; static const NumerusTableEntry numerusTable[] = { { japaneseStyleForms, japaneseStyleLanguages, 0 }, { englishStyleForms, englishStyleLanguages, 0 }, { frenchStyleForms, frenchStyleLanguages, frenchStyleCountries }, { latvianForms, latvianLanguage, 0 }, { irishStyleForms, irishStyleLanguages, 0 }, { czechForms, czechLanguage, 0 }, { slovakForms, slovakLanguage, 0 }, { macedonianForms, macedonianLanguage, 0 }, { lithuanianForms, lithuanianLanguage, 0 }, { russianStyleForms, russianStyleLanguages, 0 }, { polishForms, polishLanguage, 0 }, { romanianForms, romanianLanguages, 0 }, { slovenianForms, slovenianLanguage, 0 }, { malteseForms, malteseLanguage, 0 }, { welshForms, welshLanguage, 0 }, { arabicForms, arabicLanguage, 0 } }; static const int NumerusTableSize = sizeof(numerusTable) / sizeof(numerusTable[0]); bool getNumerusInfo(QLocale::Language language, QLocale::Country country, QStringList *forms); #endif // TRANSLATOR_H PyQt-gpl-5.5.1/PyQt5-Qt5.nsi0000644000076500000240000005456312613140030015425 0ustar philstaff00000000000000# PyQt5 NSIS installer script. # # Copyright (c) 2015 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # These will change with different releases. !define PYQT_VERSION "5.5.1" !define PYQT_INSTALLER "" #!define PYQT_INSTALLER "-2" !define PYQT_LICENSE "GPL" !define PYQT_LICENSE_LC "gpl" !define PYQT_PYTHON_MAJOR "3" !define PYQT_PYTHON_MINOR "4" !define PYQT_ARCH "64" !define PYQT_QT_VERS "5.5.1" !define PYQT_QT_DOC_VERS "5" # These are all derived from the above. !define PYQT_PYTHON_DIR "C:\Python${PYQT_PYTHON_MAJOR}${PYQT_PYTHON_MINOR}" !define PYQT_PYTHON_VERS "${PYQT_PYTHON_MAJOR}.${PYQT_PYTHON_MINOR}" !define PYQT_PYTHON_HK "Software\Python\PythonCore\${PYQT_PYTHON_VERS}\InstallPath" !define PYQT_PYTHON_HK_ARCH "Software\Python\PythonCore\${PYQT_PYTHON_VERS}-${PYQT_ARCH}\InstallPath" !define PYQT_NAME "PyQt ${PYQT_LICENSE} v${PYQT_VERSION} for Python v${PYQT_PYTHON_VERS} (x${PYQT_ARCH})" !define PYQT_HK_ROOT "Software\PyQt5\Py${PYQT_PYTHON_VERS}" !define PYQT_HK "${PYQT_HK_ROOT}\InstallPath" !define PYQT4_HK "Software\PyQt4\Py${PYQT_PYTHON_VERS}\InstallPath" !define QT_SRC_DIR "C:\Qt\${PYQT_QT_VERS}" !define ICU_SRC_DIR "C:\icu" !define OPENSSL_SRC_DIR "C:\OpenSSL" !define MYSQL_SRC_DIR "C:\MySQL" # Include the tools we use. !include MUI2.nsh !include LogicLib.nsh !include AddToPath.nsh !include StrSlash.nsh # Tweak some of the standard pages. !define MUI_WELCOMEPAGE_TEXT \ "This wizard will guide you through the installation of ${PYQT_NAME}.$\r$\n\ $\r$\n\ This copy of PyQt includes a subset of Qt v${PYQT_QT_VERS} Open Source \ Edition needed by PyQt. It also includes MySQL, ODBC, PostgreSQL and SQLite \ drivers and the required OpenSSL DLLs.$\r$\n\ $\r$\n\ Any code you write must be released under a license that is compatible with \ the GPL.$\r$\n\ $\r$\n\ Click Next to continue." !define MUI_FINISHPAGE_LINK "Get the latest news of PyQt here" !define MUI_FINISHPAGE_LINK_LOCATION "http://www.riverbankcomputing.com" # Define the product name and installer executable. Name "PyQt" Caption "${PYQT_NAME} Setup" OutFile "PyQt5-${PYQT_VERSION}-${PYQT_LICENSE_LC}-Py${PYQT_PYTHON_MAJOR}.${PYQT_PYTHON_MINOR}-Qt${PYQT_QT_VERS}-x${PYQT_ARCH}${PYQT_INSTALLER}.exe" # This is done (along with the use of SetShellVarContext) so that we can remove # the shortcuts when uninstalling under Vista and Windows 7. Note that we # don't actually check if it is successful. RequestExecutionLevel admin # The different installation types. "Full" is everything. "Minimal" is the # runtime environment. InstType "Full" InstType "Minimal" # Maximum compression. SetCompressor /SOLID lzma # We want the user to confirm they want to cancel. !define MUI_ABORTWARNING Function .onInit ${If} ${PYQT_ARCH} == "64" SetRegView 64 ${Endif} # Check if there is already a version of PyQt4 installed for this version # of Python. ReadRegStr $0 HKCU "${PYQT4_HK}" "" ${If} $0 == "" ReadRegStr $0 HKLM "${PYQT4_HK}" "" ${Endif} ${If} $0 != "" MessageBox MB_OK \ "A copy of PyQt4 for Python v${PYQT_PYTHON_VERS} is already installed in $0 \ and must be uninstalled first." Abort ${Endif} # Check if there is already a version of PyQt5 installed for this version # of Python. ReadRegStr $0 HKCU "${PYQT_HK}" "" ${If} $0 == "" ReadRegStr $0 HKLM "${PYQT_HK}" "" ${Endif} ${If} $0 != "" MessageBox MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION \ "A copy of PyQt5 for Python v${PYQT_PYTHON_VERS} is already installed in $0 \ and should be uninstalled first.$\r$\n \ $\r$\n\ Do you wish to uninstall it?" IDYES Uninstall Abort Uninstall: ExecWait '"$0\Lib\site-packages\PyQt5\Uninstall.exe" /S' ${Endif} # Check the right version of Python has been installed. Different versions # of Python use different formats for the version number. ReadRegStr $INSTDIR HKCU "${PYQT_PYTHON_HK}" "" ${If} $INSTDIR == "" ReadRegStr $INSTDIR HKCU "${PYQT_PYTHON_HK_ARCH}" "" ${If} $INSTDIR == "" ReadRegStr $INSTDIR HKLM "${PYQT_PYTHON_HK}" "" ${If} $INSTDIR == "" ReadRegStr $INSTDIR HKLM "${PYQT_PYTHON_HK_ARCH}" "" ${Endif} ${Endif} ${Endif} ${If} $INSTDIR == "" MessageBox MB_YESNO|MB_ICONQUESTION \ "This copy of PyQt has been built against Python v${PYQT_PYTHON_VERS} \ (x${PYQT_ARCH}) which doesn't seem to be installed.$\r$\n\ $\r$\n\ Do you wish to continue with the installation?" IDYES GotPython Abort GotPython: StrCpy $INSTDIR "${PYQT_PYTHON_DIR}" ${Endif} FunctionEnd # Define the different pages. !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE ".\LICENSE" !insertmacro MUI_PAGE_COMPONENTS !define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Python installation folder" !define MUI_DIRECTORYPAGE_TEXT_TOP \ "PyQt will be installed in the site-packages folder of your Python \ installation." !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES # Other settings. !insertmacro MUI_LANGUAGE "English" # Installer sections. Section "Extension modules" SecModules SectionIn 1 2 RO SetOverwrite on # We have to take the SIP files from where they should have been installed. SetOutPath $INSTDIR\Lib\site-packages File "${PYQT_PYTHON_DIR}\Lib\site-packages\sip.pyd" SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File .\LICENSE File .\__init__.py File /r .\pyuic\uic File .\build\Qt\Qt.pyd File .\build\QtCore\QtCore.pyd File .\build\QtDesigner\QtDesigner.pyd File .\build\QtGui\QtGui.pyd File .\build\QtHelp\QtHelp.pyd File .\build\QtLocation\QtLocation.pyd File .\build\QtMultimedia\QtMultimedia.pyd File .\build\QtMultimediaWidgets\QtMultimediaWidgets.pyd File .\build\QtNetwork\QtNetwork.pyd File .\build\QtOpenGL\QtOpenGL.pyd File .\build\QtPositioning\QtPositioning.pyd File .\build\QtPrintSupport\QtPrintSupport.pyd File .\build\QtQml\QtQml.pyd File .\build\QtQuick\QtQuick.pyd File .\build\QtQuickWidgets\QtQuickWidgets.pyd File .\build\QtSensors\QtSensors.pyd File .\build\QtSerialPort\QtSerialPort.pyd File .\build\QtSql\QtSql.pyd File .\build\QtSvg\QtSvg.pyd File .\build\QtTest\QtTest.pyd File .\build\QtWebChannel\QtWebChannel.pyd File .\build\QtWebKit\QtWebKit.pyd File .\build\QtWebKitWidgets\QtWebKitWidgets.pyd File .\build\QtWebSockets\QtWebSockets.pyd File .\build\QtWinExtras\QtWinExtras.pyd File .\build\QtWidgets\QtWidgets.pyd File .\build\QtXml\QtXml.pyd File .\build\QtXmlPatterns\QtXmlPatterns.pyd File .\build\QAxContainer\QAxContainer.pyd File .\build\Enginio\Enginio.pyd File .\build\_QOpenGLFunctions_2_0\_QOpenGLFunctions_2_0.pyd File .\build\_QOpenGLFunctions_2_1\_QOpenGLFunctions_2_1.pyd File .\build\_QOpenGLFunctions_4_1_Core\_QOpenGLFunctions_4_1_Core.pyd SectionEnd Section "QScintilla" SecQScintilla SectionIn 1 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File "${PYQT_PYTHON_DIR}\Lib\site-packages\PyQt5\Qsci.pyd" File /r "${QT_SRC_DIR}\qsci" SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File "${QT_SRC_DIR}\lib\qscintilla2.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\translations File "${QT_SRC_DIR}\translations\qscintilla*.qm" SectionEnd Section "Qt runtime" SecQt SectionIn 1 2 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\PyQt5 File .\build\qmlscene\release\pyqt5qmlplugin.dll SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File "${QT_SRC_DIR}\bin\Enginio.dll" File "${QT_SRC_DIR}\bin\qmlscene.exe" File "${QT_SRC_DIR}\bin\Qt5CLucene.dll" File "${QT_SRC_DIR}\bin\Qt5Core.dll" File "${QT_SRC_DIR}\bin\Qt5Designer.dll" File "${QT_SRC_DIR}\bin\Qt5DesignerComponents.dll" File "${QT_SRC_DIR}\bin\Qt5Gui.dll" File "${QT_SRC_DIR}\bin\Qt5Help.dll" File "${QT_SRC_DIR}\bin\Qt5Location.dll" File "${QT_SRC_DIR}\bin\Qt5Multimedia.dll" File "${QT_SRC_DIR}\bin\Qt5MultimediaQuick_p.dll" File "${QT_SRC_DIR}\bin\Qt5MultimediaWidgets.dll" File "${QT_SRC_DIR}\bin\Qt5Network.dll" File "${QT_SRC_DIR}\bin\Qt5OpenGL.dll" File "${QT_SRC_DIR}\bin\Qt5Positioning.dll" File "${QT_SRC_DIR}\bin\Qt5PrintSupport.dll" File "${QT_SRC_DIR}\bin\Qt5Qml.dll" File "${QT_SRC_DIR}\bin\Qt5Quick.dll" File "${QT_SRC_DIR}\bin\Qt5QuickParticles.dll" File "${QT_SRC_DIR}\bin\Qt5QuickWidgets.dll" File "${QT_SRC_DIR}\bin\Qt5Sensors.dll" File "${QT_SRC_DIR}\bin\Qt5SerialPort.dll" File "${QT_SRC_DIR}\bin\Qt5Sql.dll" File "${QT_SRC_DIR}\bin\Qt5Svg.dll" File "${QT_SRC_DIR}\bin\Qt5Test.dll" File "${QT_SRC_DIR}\bin\Qt5WebChannel.dll" File "${QT_SRC_DIR}\bin\Qt5WebKit.dll" File "${QT_SRC_DIR}\bin\Qt5WebKitWidgets.dll" File "${QT_SRC_DIR}\bin\Qt5WebSockets.dll" File "${QT_SRC_DIR}\bin\Qt5Widgets.dll" File "${QT_SRC_DIR}\bin\Qt5WinExtras.dll" File "${QT_SRC_DIR}\bin\Qt5Xml.dll" File "${QT_SRC_DIR}\bin\Qt5XmlPatterns.dll" File "${QT_SRC_DIR}\bin\QtWebProcess.exe" File "${QT_SRC_DIR}\bin\libEGL.dll" File "${QT_SRC_DIR}\bin\libGLESv2.dll" File "${ICU_SRC_DIR}\bin\icudt55.dll" File "${ICU_SRC_DIR}\bin\icuin55.dll" File "${ICU_SRC_DIR}\bin\icuuc55.dll" File "${OPENSSL_SRC_DIR}\bin\libeay32.dll" File "${OPENSSL_SRC_DIR}\bin\ssleay32.dll" File "${MYSQL_SRC_DIR}\lib\libmysql.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File /r "${QT_SRC_DIR}\qml" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\audio File "${QT_SRC_DIR}\plugins\audio\qtaudio_windows.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\bearer File "${QT_SRC_DIR}\plugins\bearer\qgenericbearer.dll" File "${QT_SRC_DIR}\plugins\bearer\qnativewifibearer.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\geoservices File "${QT_SRC_DIR}\plugins\geoservices\qtgeoservices_mapbox.dll" File "${QT_SRC_DIR}\plugins\geoservices\qtgeoservices_nokia.dll" File "${QT_SRC_DIR}\plugins\geoservices\qtgeoservices_osm.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\iconengines File "${QT_SRC_DIR}\plugins\iconengines\qsvgicon.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\imageformats File "${QT_SRC_DIR}\plugins\imageformats\qdds.dll" File "${QT_SRC_DIR}\plugins\imageformats\qgif.dll" File "${QT_SRC_DIR}\plugins\imageformats\qicns.dll" File "${QT_SRC_DIR}\plugins\imageformats\qico.dll" File "${QT_SRC_DIR}\plugins\imageformats\qjp2.dll" File "${QT_SRC_DIR}\plugins\imageformats\qjpeg.dll" File "${QT_SRC_DIR}\plugins\imageformats\qmng.dll" File "${QT_SRC_DIR}\plugins\imageformats\qsvg.dll" File "${QT_SRC_DIR}\plugins\imageformats\qtga.dll" File "${QT_SRC_DIR}\plugins\imageformats\qtiff.dll" File "${QT_SRC_DIR}\plugins\imageformats\qwbmp.dll" File "${QT_SRC_DIR}\plugins\imageformats\qwebp.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\mediaservice File "${QT_SRC_DIR}\plugins\mediaservice\dsengine.dll" File "${QT_SRC_DIR}\plugins\mediaservice\qtmedia_audioengine.dll" File "${QT_SRC_DIR}\plugins\mediaservice\wmfengine.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\platforms File "${QT_SRC_DIR}\plugins\platforms\qminimal.dll" File "${QT_SRC_DIR}\plugins\platforms\qoffscreen.dll" File "${QT_SRC_DIR}\plugins\platforms\qwindows.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\playlistformats File "${QT_SRC_DIR}\plugins\playlistformats\qtmultimedia_m3u.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\position File "${QT_SRC_DIR}\plugins\position\qtposition_positionpoll.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\printsupport File "${QT_SRC_DIR}\plugins\printsupport\windowsprintersupport.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\sensorgestures File "${QT_SRC_DIR}\plugins\sensorgestures\qtsensorgestures_plugin.dll" File "${QT_SRC_DIR}\plugins\sensorgestures\qtsensorgestures_shakeplugin.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\sensors File "${QT_SRC_DIR}\plugins\sensors\qtsensors_generic.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\sqldrivers File "${QT_SRC_DIR}\plugins\sqldrivers\qsqlite.dll" File "${QT_SRC_DIR}\plugins\sqldrivers\qsqlmysql.dll" File "${QT_SRC_DIR}\plugins\sqldrivers\qsqlodbc.dll" File "${QT_SRC_DIR}\plugins\sqldrivers\qsqlpsql.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\translations File "${QT_SRC_DIR}\translations\qt_*.qm" File "${QT_SRC_DIR}\translations\qtbase_*.qm" # Tell Python and the Qt tools where to find Qt. FileOpen $0 $INSTDIR\qt.conf w FileWrite $0 "[Paths]$\r$\n" FileWrite $0 "Prefix = Lib/site-packages/PyQt5$\r$\n" FileWrite $0 "Binaries = Lib/site-packages/PyQt5$\r$\n" FileClose $0 FileOpen $0 $INSTDIR\Lib\site-packages\PyQt5\qt.conf w FileWrite $0 "[Paths]$\r$\n" FileWrite $0 "Prefix = .$\r$\n" FileWrite $0 "Binaries = .$\r$\n" FileClose $0 SectionEnd Section "Developer tools" SecTools SectionIn 1 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File .\build\pylupdate\release\pylupdate5.exe File .\build\pyrcc\release\pyrcc5.exe FileOpen $0 $INSTDIR\Lib\site-packages\PyQt5\pyuic5.bat w FileWrite $0 "@$\"$INSTDIR\python$\" -m PyQt5.uic.pyuic %1 %2 %3 %4 %5 %6 %7 %8 %9$\r$\n" FileClose $0 SectionEnd Section "Qt developer tools" SecQtTools SectionIn 1 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File "${QT_SRC_DIR}\bin\assistant.exe" File "${QT_SRC_DIR}\bin\designer.exe" File "${QT_SRC_DIR}\bin\linguist.exe" File "${QT_SRC_DIR}\bin\lrelease.exe" File "${QT_SRC_DIR}\bin\qcollectiongenerator.exe" File "${QT_SRC_DIR}\bin\qhelpgenerator.exe" File "${QT_SRC_DIR}\bin\qmake.exe" File "${QT_SRC_DIR}\bin\xmlpatterns.exe" File /r "${QT_SRC_DIR}\mkspecs" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\plugins\designer File "${QT_SRC_DIR}\plugins\designer\qwebview.dll" File .\build\designer\release\pyqt5.dll File "${QT_SRC_DIR}\plugins\designer\qscintillaplugin.dll" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\translations File "${QT_SRC_DIR}\translations\assistant_*.qm" File "${QT_SRC_DIR}\translations\designer_*.qm" File "${QT_SRC_DIR}\translations\linguist_*.qm" SectionEnd Section "SIP developer tools" SecSIPTools SectionIn 1 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File /r "${PYQT_PYTHON_DIR}\Lib\site-packages\PyQt5\sip" SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File "${PYQT_PYTHON_DIR}\Lib\site-packages\PyQt5\sip.exe" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\include File "${PYQT_PYTHON_DIR}\Lib\site-packages\PyQt5\include\sip.h" SectionEnd Section "Documentation" SecDocumentation SectionIn 1 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File /r .\doc SectionEnd Section "Examples" SecExamples SectionIn 1 SetOverwrite on SetOutPath $INSTDIR\Lib\site-packages\PyQt5 File /r .\examples Rename $INSTDIR\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.py $INSTDIR\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.pyw # Tell the QtQuick plugins example to find the plugin. Push $INSTDIR Push "\" Call StrSlash Pop $R0 FileOpen $0 $INSTDIR\Lib\site-packages\PyQt5\examples\quick\tutorials\extending\chapter6-plugins\Charts\qmldir w FileWrite $0 "module Charts$\r$\n" FileWrite $0 "plugin pyqt5qmlplugin $R0/Lib/site-packages/PyQt5/plugins/PyQt5$\r$\n" FileClose $0 SectionEnd Section "Start Menu shortcuts" SecShortcuts SectionIn 1 SetShellVarContext all # Make sure this is clean and tidy. RMDir /r "$SMPROGRAMS\${PYQT_NAME}" CreateDirectory "$SMPROGRAMS\${PYQT_NAME}" IfFileExists "$INSTDIR\Lib\site-packages\PyQt5\assistant.exe" 0 +4 CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Assistant.lnk" "$INSTDIR\Lib\site-packages\PyQt5\assistant.exe" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Designer.lnk" "$INSTDIR\Lib\site-packages\PyQt5\designer.exe" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Linguist.lnk" "$INSTDIR\Lib\site-packages\PyQt5\linguist.exe" IfFileExists "$INSTDIR\Lib\site-packages\PyQt5\doc" 0 +5 CreateDirectory "$SMPROGRAMS\${PYQT_NAME}\Documentation" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Documentation\PyQt Reference Guide.lnk" "$INSTDIR\Lib\site-packages\PyQt5\doc\html\index.html" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Documentation\Qt Documentation.lnk" "http://qt-project.org/doc/qt-${PYQT_QT_DOC_VERS}/" IfFileExists "$INSTDIR\Lib\site-packages\PyQt5\examples" 0 +6 CreateDirectory "$SMPROGRAMS\${PYQT_NAME}\Examples" SetOutPath $INSTDIR\Lib\site-packages\PyQt5\examples\qtdemo CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Examples\PyQt Examples.lnk" "$INSTDIR\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.pyw" SetOutPath $INSTDIR CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Examples\PyQt Examples Source.lnk" "$INSTDIR\Lib\site-packages\PyQt5\examples" CreateDirectory "$SMPROGRAMS\${PYQT_NAME}\Links" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Links\PyQt Book.lnk" "http://www.qtrac.eu/pyqtbook.html" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Links\PyQt Homepage.lnk" "http://www.riverbankcomputing.com/software/pyqt/" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Links\Qt Homepage.lnk" "http://qt.digia.com" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Links\QScintilla Homepage.lnk" "http://www.riverbankcomputing.com/software/qscintilla/" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Links\eric Homepage.lnk" "http://eric-ide.python-projects.org/index.html" CreateShortCut "$SMPROGRAMS\${PYQT_NAME}\Uninstall PyQt.lnk" "$INSTDIR\Lib\site-packages\PyQt5\Uninstall.exe" SectionEnd Section -post # Add the bin directory to PATH. Push $INSTDIR\Lib\site-packages\PyQt5 Call AddToPath # Tell Windows about the package. WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PYQT_NAME}" "UninstallString" '"$INSTDIR\Lib\site-packages\PyQt5\Uninstall.exe"' WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PYQT_NAME}" "DisplayName" "${PYQT_NAME}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PYQT_NAME}" "DisplayVersion" "${PYQT_VERSION}${PYQT_INSTALLER}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PYQT_NAME}" "NoModify" "1" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PYQT_NAME}" "NoRepair" "1" # Save the installation directories for the uninstaller. ClearErrors WriteRegStr HKLM "${PYQT_HK}" "" $INSTDIR IfErrors 0 +2 WriteRegStr HKCU "${PYQT_HK}" "" $INSTDIR # Create the uninstaller. WriteUninstaller "$INSTDIR\Lib\site-packages\PyQt5\Uninstall.exe" SectionEnd # Section description text. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecModules} \ "The PyQt and sip extension modules." !insertmacro MUI_DESCRIPTION_TEXT ${SecQScintilla} \ "QScintilla and its extension module." !insertmacro MUI_DESCRIPTION_TEXT ${SecQt} \ "The Qt DLLs, plugins and translations." !insertmacro MUI_DESCRIPTION_TEXT ${SecQtTools} \ "The Qt developer tools: Assistant, Designer, Linguist etc." !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} \ "The PyQt developer tools: pyuic5, pyrcc5 and pylupdate5." !insertmacro MUI_DESCRIPTION_TEXT ${SecSIPTools} \ "The SIP developer tools and .sip files." !insertmacro MUI_DESCRIPTION_TEXT ${SecDocumentation} \ "The PyQt and related documentation." !insertmacro MUI_DESCRIPTION_TEXT ${SecExamples} \ "Ports to Python of the standard Qt v5 examples." !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} \ "This adds shortcuts to your Start Menu." !insertmacro MUI_FUNCTION_DESCRIPTION_END Function un.onInit ${If} ${PYQT_ARCH} == "64" SetRegView 64 ${Endif} # Get the PyQt installation directory. ReadRegStr $INSTDIR HKCU "${PYQT_HK}" "" ${If} $INSTDIR == "" ReadRegStr $INSTDIR HKLM "${PYQT_HK}" "" ${If} $INSTDIR == "" # Try where Python was installed. ReadRegStr $INSTDIR HKCU "${PYQT_PYTHON_HK}" "" ${If} $INSTDIR == "" ReadRegStr $INSTDIR HKCU "${PYQT_PYTHON_HK_ARCH}" "" ${If} $INSTDIR == "" ReadRegStr $INSTDIR HKLM "${PYQT_PYTHON_HK}" "" ${If} $INSTDIR != "" ReadRegStr $INSTDIR HKLM "${PYQT_PYTHON_HK_ARCH}" "" ${If} $INSTDIR != "" # Default to where Python should be installed (at # least prior to v3.5). StrCpy $INSTDIR "${PYQT_PYTHON_DIR}\" ${Endif} ${Endif} ${Endif} ${Endif} ${Endif} ${Endif} FunctionEnd Section "Uninstall" SetShellVarContext all # Remove the bin directory from PATH. Push $INSTDIR\Lib\site-packages\PyQt5 Call un.RemoveFromPath # The Qt path file. Delete $INSTDIR\qt.conf # The modules section. Delete $INSTDIR\Lib\site-packages\sip.pyd RMDir /r $INSTDIR\Lib\site-packages\PyQt5 # The shortcuts section. RMDir /r "$SMPROGRAMS\${PYQT_NAME}" # Clean the registry. DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PYQT_NAME}" DeleteRegKey HKLM "${PYQT_HK_ROOT}" DeleteRegKey HKCU "${PYQT_HK_ROOT}" SectionEnd PyQt-gpl-5.5.1/pyrcc/0000755000076500000240000000000012613140041014366 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyrcc/main.cpp0000644000076500000240000001640412613140041016023 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include #include #include "rcc.h" // Some static globals static QString initName; static bool verbose = false; static int compressLevel = CONSTANT_COMPRESSLEVEL_DEFAULT; static int compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT; static QString resourceRoot; bool processResourceFile(const QStringList &filenamesIn, const QString &filenameOut, bool list) { if (verbose) fprintf(stderr, "PyQt4 resource compiler\n"); //setup RCCResourceLibrary library; library.setInputFiles(filenamesIn); library.setInitName(initName); library.setVerbose(verbose); library.setCompressLevel(compressLevel); library.setCompressThreshold(compressThreshold); library.setResourceRoot(resourceRoot); if(!library.readFiles()) return false; //open output FILE *out_fd = stdout; if (!filenameOut.isEmpty() && filenameOut != QLatin1String("-")) { #if defined(_MSC_VER) && _MSC_VER >= 1400 if (fopen_s(&out_fd, filenameOut.toLocal8Bit().constData(), "w")) { #else out_fd = fopen(filenameOut.toLocal8Bit().constData(), "w"); if(!out_fd) { #endif fprintf(stderr, "Unable to open %s for writing\n", filenameOut.toLatin1().constData()); return false; } } //do the task bool ret = true; if(list) { const QStringList data = library.dataFiles(); for(int i = 0; i < data.size(); ++i) fprintf(out_fd, "%s\n", QDir::cleanPath(data.at(i)).toLatin1().constData()); } else { ret = library.output(out_fd); } if(out_fd != stdout) fclose(out_fd); //done return ret; } int showHelp(const char *argv0, const QString &error) { fprintf(stderr, "PyQt5 resource compiler\n"); if (!error.isEmpty()) fprintf(stderr, "%s: %s\n", argv0, error.toLatin1().constData()); fprintf(stderr, "Usage: %s [options] \n\n" "Options:\n" " -o file Write output to file rather than stdout\n" " -name name Create an external initialization function with name\n" " -threshold level Threshold to consider compressing files\n" " -compress level Compress input files by level\n" " -root path Prefix resource access path with root path\n" " -no-compress Disable all compression\n" " -version Display version\n" " -help Display this information\n", argv0); return 1; } int main(int argc, char *argv[]) { QString outFilename; bool helpRequested = false, list = false; QStringList files; //parse options QString errorMsg; for (int i = 1; i < argc && errorMsg.isEmpty(); i++) { if (argv[i][0] == '-') { // option QByteArray opt = argv[i] + 1; if (opt == "o") { if (!(i < argc-1)) { errorMsg = QLatin1String("Missing output name"); break; } outFilename = argv[++i]; } else if(opt == "name") { if (!(i < argc-1)) { errorMsg = QLatin1String("Missing target name"); break; } initName = argv[++i]; } else if(opt == "root") { if (!(i < argc-1)) { errorMsg = QLatin1String("Missing root path"); break; } resourceRoot = QDir::cleanPath(argv[++i]); if(resourceRoot.isEmpty() || resourceRoot[0] != '/') errorMsg = QLatin1String("Root must start with a /"); } else if(opt == "compress") { if (!(i < argc-1)) { errorMsg = QLatin1String("Missing compression level"); break; } compressLevel = QString(argv[++i]).toInt(); } else if(opt == "threshold") { if (!(i < argc-1)) { errorMsg = QLatin1String("Missing compression threshold"); break; } compressThreshold = QString(argv[++i]).toInt(); } else if(opt == "verbose") { verbose = true; } else if(opt == "list") { list = true; } else if(opt == "version") { fprintf(stderr, "Resource Compiler for Qt version %s\n", QT_VERSION_STR); return 1; } else if(opt == "help" || opt == "h") { helpRequested = true; } else if(opt == "no-compress") { compressLevel = -2; } else { errorMsg = QString(QLatin1String("Unknown option: '%1'")).arg(argv[i]); } } else { QString fname = QString::fromLocal8Bit(argv[i]); if(!QFile::exists(fname)) { qWarning("%s: File does not exist '%s'", argv[0], argv[i]); return 1; } files.append(fname); } } if (!files.size() || !errorMsg.isEmpty() || helpRequested) return showHelp(argv[0], errorMsg); return int(!processResourceFile(files, outFilename, list)); } PyQt-gpl-5.5.1/pyrcc/rcc.cpp0000644000076500000240000004402612613140041015647 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (c) 2015 Riverbank Computing Limited. All rights reserved. ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include "rcc.h" static bool qt_rcc_write_number(FILE *out, quint32 number, int width) { int dividend = 1; switch (width) { case 2: dividend = 256; break; case 3: dividend = 65536; break; case 4: dividend = 16777216; break; default: break; } // Write bytes while (dividend >= 1) { const quint8 tmp = number / dividend; fprintf(out, "\\x%02x", tmp); number -= tmp * dividend; dividend /= 256; } return true; } bool RCCFileInfo::writeDataInfo(FILE *out) { //pointer data if(flags & RCCFileInfo::Directory) { //name offset qt_rcc_write_number(out, nameOffset, 4); //flags qt_rcc_write_number(out, flags, 2); //child count qt_rcc_write_number(out, children.size(), 4); //first child offset qt_rcc_write_number(out, childOffset, 4); } else { //name offset qt_rcc_write_number(out, nameOffset, 4); //flags qt_rcc_write_number(out, flags, 2); //locale qt_rcc_write_number(out, locale.country(), 2); qt_rcc_write_number(out, locale.language(), 2); //data offset qt_rcc_write_number(out, dataOffset, 4); } fprintf(out, "\\\n"); return true; } qint64 RCCFileInfo::writeDataBlob(FILE *out, qint64 offset) { //capture the offset dataOffset = offset; //find the data to be written QFile file(fileInfo.absoluteFilePath()); if (!file.open(QFile::ReadOnly)) { fprintf(stderr, "Couldn't open %s\n", fileInfo.absoluteFilePath().toLatin1().constData()); return false; } QByteArray data = file.readAll(); #ifndef QT_NO_COMPRESS // Check if compression is useful for this file if (mCompressLevel != 0 && data.size() != 0) { QByteArray compressed = qCompress(reinterpret_cast(data.data()), data.size(), mCompressLevel); int compressRatio = int(100.0f * (float(data.size() - compressed.size()) / float(data.size()))); if (compressRatio >= mCompressThreshold) { data = compressed; flags |= Compressed; } } #endif // QT_NO_COMPRESS //write the length qt_rcc_write_number(out, data.size(), 4); fprintf(out, "\\\n"); offset += 4; //write the payload for (int i=0; iroot == 0) { fprintf(stderr, "No resources in resource description.\n"); return false; } return true; } bool RCCResourceLibrary::addFile(const QString &alias, const RCCFileInfo &file) { if (file.fileInfo.size() > 0xffffffff) { fprintf(stderr, "File too big: %s", file.fileInfo.absoluteFilePath().toLatin1().constData()); return false; } if(!root) root = new RCCFileInfo("", QFileInfo(), QLocale(), RCCFileInfo::Directory); RCCFileInfo *parent = root; const QStringList nodes = alias.split('/'); for(int i = 1; i < nodes.size()-1; ++i) { const QString node = nodes.at(i); if(!parent->children.contains(node)) { RCCFileInfo *s = new RCCFileInfo(node, QFileInfo(), QLocale(), RCCFileInfo::Directory); s->parent = parent; parent->children.insert(node, s); parent = s; } else { parent = parent->children[node]; } } const QString filename = nodes.at(nodes.size()-1); RCCFileInfo *s = new RCCFileInfo(file); s->parent = parent; parent->children.insertMulti(filename, s); return true; } bool RCCResourceLibrary::readFiles() { //read in data if (mVerbose) fprintf(stderr, "Processing %d files\n", mFileNames.size()); for (int i=0; i pending; if (!root) return ret; pending.push(root); while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); for(QHash::iterator it = file->children.begin(); it != file->children.end(); ++it) { RCCFileInfo *child = it.value(); if(child->flags & RCCFileInfo::Directory) pending.push(child); ret.append(child->fileInfo.filePath()); } } return ret; } bool RCCResourceLibrary::output(FILE *out) { //write out if (mVerbose) fprintf(stderr, "Outputting code\n"); if (!writeHeader(out)) { fprintf(stderr, "Couldn't write header\n"); return false; } if (!writeDataBlobs(out)) { fprintf(stderr, "Couldn't write data blob\n"); return false; } if (!writeDataNames(out)) { fprintf(stderr, "Couldn't write file names\n"); return false; } if (!writeDataStructure(out)) { fprintf(stderr, "Couldn't write data tree\n"); return false; } if (!writeInitializer(out)) { fprintf(stderr, "Couldn't write footer\n"); return false; } return true; } bool RCCResourceLibrary::writeHeader(FILE *out) { fprintf(out, "# -*- coding: utf-8 -*-\n\n"); fprintf(out, "# Resource object code\n"); fprintf(out, "#\n"); fprintf(out, "# Created by: The Resource Compiler for PyQt5 (Qt v%s)\n", QT_VERSION_STR); fprintf(out, "#\n"); fprintf(out, "# WARNING! All changes made in this file will be lost!\n"); fprintf(out, "\n"); fprintf(out, "from PyQt5 import QtCore\n\n"); return true; } bool RCCResourceLibrary::writeDataBlobs(FILE *out) { fprintf(out, "qt_resource_data = b\"\\\n"); QStack pending; if (!root) return false; pending.push(root); qint64 offset = 0; while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); for(QHash::iterator it = file->children.begin(); it != file->children.end(); ++it) { RCCFileInfo *child = it.value(); if(child->flags & RCCFileInfo::Directory) pending.push(child); else offset = child->writeDataBlob(out, offset); } } fprintf(out, "\"\n\n"); return true; } bool RCCResourceLibrary::writeDataNames(FILE *out) { fprintf(out, "qt_resource_name = b\"\\\n"); QHash names; QStack pending; if (!root) return false; pending.push(root); qint64 offset = 0; while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); for(QHash::iterator it = file->children.begin(); it != file->children.end(); ++it) { RCCFileInfo *child = it.value(); if(child->flags & RCCFileInfo::Directory) pending.push(child); if(names.contains(child->name)) { child->nameOffset = names.value(child->name); } else { names.insert(child->name, offset); offset = child->writeDataName(out, offset); } } } fprintf(out, "\"\n\n"); return true; } static bool qt_rcc_compare_hash(const RCCFileInfo *left, const RCCFileInfo *right) { return qt_hash(left->name) < qt_hash(right->name); } bool RCCResourceLibrary::writeDataStructure(FILE *out) { fprintf(out, "qt_resource_struct = b\"\\\n"); QStack pending; if (!root) return false; //calculate the child offsets (flat) pending.push(root); int offset = 1; while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); file->childOffset = offset; //sort by hash value for binary lookup QList children = file->children.values(); qSort(children.begin(), children.end(), qt_rcc_compare_hash); //write out the actual data now for(int i = 0; i < children.size(); ++i) { RCCFileInfo *child = children.at(i); ++offset; if(child->flags & RCCFileInfo::Directory) pending.push(child); } } //write out the structure (ie iterate again!) pending.push(root); root->writeDataInfo(out); while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); //sort by hash value for binary lookup QList children = file->children.values(); qSort(children.begin(), children.end(), qt_rcc_compare_hash); //write out the actual data now for(int i = 0; i < children.size(); ++i) { RCCFileInfo *child = children.at(i); child->writeDataInfo(out); if(child->flags & RCCFileInfo::Directory) pending.push(child); } } fprintf(out, "\"\n\n"); return true; } bool RCCResourceLibrary::writeInitializer(FILE *out) { fprintf(out, "def qInitResources():\n"); fprintf(out, " QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)\n"); fprintf(out, "\n"); fprintf(out, "def qCleanupResources():\n"); fprintf(out, " QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)\n"); fprintf(out, "\n"); fprintf(out, "qInitResources()\n"); return true; } PyQt-gpl-5.5.1/pyrcc/rcc.h0000644000076500000240000001304512613140041015311 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** 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 Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef RCC_H #define RCC_H #define TAG_RCC "RCC" #define TAG_RESOURCE "qresource" #define TAG_FILE "file" #define ATTRIBUTE_LANG "lang" #define ATTRIBUTE_PREFIX "prefix" #define ATTRIBUTE_ALIAS "alias" #define ATTRIBUTE_THRESHOLD "threshold" #define ATTRIBUTE_COMPRESS "compress" #define CONSTANT_HEADER_SIZE 8 #define CONSTANT_COMPRESSLEVEL_DEFAULT -1 #define CONSTANT_COMPRESSTHRESHOLD_DEFAULT 70 struct RCCFileInfo; class RCCResourceLibrary { public: inline RCCResourceLibrary(); ~RCCResourceLibrary(); bool output(FILE *out); bool readFiles(); inline void setInputFiles(QStringList files) { mFileNames = files; } inline QStringList inputFiles() const { return mFileNames; } QStringList dataFiles() const; inline void setVerbose(bool b) { mVerbose = b; } inline bool verbose() const { return mVerbose; } inline void setInitName(const QString &n) { mInitName = n; } inline QString initName() const { return mInitName; } inline void setCompressLevel(int c) { mCompressLevel = c; } inline int compressLevel() const { return mCompressLevel; } inline void setCompressThreshold(int t) { mCompressThreshold = t; } inline int compressThreshold() const { return mCompressThreshold; } inline void setResourceRoot(QString str) { mResourceRoot = str; } inline QString resourceRoot() const { return mResourceRoot; } private: RCCFileInfo *root; bool addFile(const QString &alias, const RCCFileInfo &file); bool interpretResourceFile(QIODevice *inputDevice, QString file, QString currentPath = QString()); bool writeHeader(FILE *out); bool writeDataBlobs(FILE *out); bool writeDataNames(FILE *out); bool writeDataStructure(FILE *out); bool writeInitializer(FILE *out); QStringList mFileNames; QString mResourceRoot, mInitName; bool mVerbose; int mCompressLevel; int mCompressThreshold; int mTreeOffset, mNamesOffset, mDataOffset; }; inline RCCResourceLibrary::RCCResourceLibrary() { root = 0; mVerbose = false; mCompressLevel = -1; mCompressThreshold = 70; mTreeOffset = mNamesOffset = mDataOffset = 0; } struct RCCFileInfo { enum Flags { NoFlags = 0x00, Compressed = 0x01, Directory = 0x02 }; inline RCCFileInfo(QString name = QString(), QFileInfo fileInfo = QFileInfo(), QLocale locale = QLocale(), uint flags = NoFlags, int compressLevel = CONSTANT_COMPRESSLEVEL_DEFAULT, int compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT); ~RCCFileInfo() { qDeleteAll(children); } inline QString resourceName() { QString resource = name; for(RCCFileInfo *p = parent; p; p = p->parent) resource = resource.prepend(p->name + "/"); return ":" + resource; } int flags; QString name; QLocale locale; QFileInfo fileInfo; RCCFileInfo *parent; QHash children; int mCompressLevel; int mCompressThreshold; qint64 nameOffset, dataOffset, childOffset; qint64 writeDataBlob(FILE *out, qint64 offset); qint64 writeDataName(FILE *out, qint64 offset); bool writeDataInfo(FILE *out); }; inline RCCFileInfo::RCCFileInfo(QString name, QFileInfo fileInfo, QLocale locale, uint flags, int compressLevel, int compressThreshold) { this->name = name; this->fileInfo = fileInfo; this->locale = locale; this->flags = flags; this->parent = 0; this->nameOffset = this->dataOffset = this->childOffset = 0; this->mCompressLevel = compressLevel; this->mCompressThreshold = compressThreshold; } #endif PyQt-gpl-5.5.1/pyuic/0000755000076500000240000000000012613140040014376 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/0000755000076500000240000000000012613140040015156 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/__init__.py0000644000076500000240000002074012613140040017272 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# __all__ = ("compileUi", "compileUiDir", "loadUiType", "loadUi", "widgetPluginPath") from .Compiler import indenter, compiler _header = """# -*- coding: utf-8 -*- # Form implementation generated from reading ui file '%s' # # Created by: PyQt5 UI code generator %s # # WARNING! All changes made in this file will be lost! """ _display_code = """ if __name__ == "__main__": \timport sys \tapp = QtWidgets.QApplication(sys.argv) \t%(widgetname)s = QtWidgets.%(baseclass)s() \tui = %(uiclass)s() \tui.setupUi(%(widgetname)s) \t%(widgetname)s.show() \tsys.exit(app.exec_()) """ def compileUiDir(dir, recurse=False, map=None, **compileUi_args): """compileUiDir(dir, recurse=False, map=None, **compileUi_args) Creates Python modules from Qt Designer .ui files in a directory or directory tree. dir is the name of the directory to scan for files whose name ends with '.ui'. By default the generated Python module is created in the same directory ending with '.py'. recurse is set if any sub-directories should be scanned. The default is False. map is an optional callable that is passed the name of the directory containing the '.ui' file and the name of the Python module that will be created. The callable should return a tuple of the name of the directory in which the Python module will be created and the (possibly modified) name of the module. The default is None. compileUi_args are any additional keyword arguments that are passed to the compileUi() function that is called to create each Python module. """ import os # Compile a single .ui file. def compile_ui(ui_dir, ui_file): # Ignore if it doesn't seem to be a .ui file. if ui_file.endswith('.ui'): py_dir = ui_dir py_file = ui_file[:-3] + '.py' # Allow the caller to change the name of the .py file or generate # it in a different directory. if map is not None: py_dir, py_file = map(py_dir, py_file) # Make sure the destination directory exists. try: os.makedirs(py_dir) except: pass ui_path = os.path.join(ui_dir, ui_file) py_path = os.path.join(py_dir, py_file) ui_file = open(ui_path, 'r') py_file = open(py_path, 'w') try: compileUi(ui_file, py_file, **compileUi_args) finally: ui_file.close() py_file.close() if recurse: for root, _, files in os.walk(dir): for ui in files: compile_ui(root, ui) else: for ui in os.listdir(dir): if os.path.isfile(os.path.join(dir, ui)): compile_ui(dir, ui) def compileUi(uifile, pyfile, execute=False, indent=4, from_imports=False, resource_suffix='_rc'): """compileUi(uifile, pyfile, execute=False, indent=4, from_imports=False, resource_suffix='_rc') Creates a Python module from a Qt Designer .ui file. uifile is a file name or file-like object containing the .ui file. pyfile is the file-like object to which the Python code will be written to. execute is optionally set to generate extra Python code that allows the code to be run as a standalone application. The default is False. indent is the optional indentation width using spaces. If it is 0 then a tab is used. The default is 4. from_imports is optionally set to generate import statements that are relative to '.'. resource_suffix is the suffix appended to the basename of any resource file specified in the .ui file to create the name of the Python module generated from the resource file by pyrcc4. The default is '_rc', i.e. if the .ui file specified a resource file called foo.qrc then the corresponding Python module is foo_rc. """ from PyQt5.QtCore import PYQT_VERSION_STR try: uifname = uifile.name except AttributeError: uifname = uifile indenter.indentwidth = indent pyfile.write(_header % (uifname, PYQT_VERSION_STR)) winfo = compiler.UICompiler().compileUi(uifile, pyfile, from_imports, resource_suffix) if execute: indenter.write_code(_display_code % winfo) def loadUiType(uifile, from_imports=False, resource_suffix='_rc'): """loadUiType(uifile, from_imports=False) -> (form class, base class) Load a Qt Designer .ui file and return the generated form class and the Qt base class. uifile is a file name or file-like object containing the .ui file. from_imports is optionally set to use import statements that are relative to '.'. resource_suffix is the suffix appended to the basename of any resource file specified in the .ui file to create the name of the Python module generated from the resource file by pyrcc4. The default is '_rc', i.e. if the .ui file specified a resource file called foo.qrc then the corresponding Python module is foo_rc. """ import sys from PyQt5 import QtWidgets if sys.hexversion >= 0x03000000: from .port_v3.string_io import StringIO else: from .port_v2.string_io import StringIO code_string = StringIO() winfo = compiler.UICompiler().compileUi(uifile, code_string, from_imports, resource_suffix) ui_globals = {} exec(code_string.getvalue(), ui_globals) return (ui_globals[winfo["uiclass"]], getattr(QtWidgets, winfo["baseclass"])) def loadUi(uifile, baseinstance=None, package='', resource_suffix='_rc'): """loadUi(uifile, baseinstance=None, package='') -> widget Load a Qt Designer .ui file and return an instance of the user interface. uifile is a file name or file-like object containing the .ui file. baseinstance is an optional instance of the Qt base class. If specified then the user interface is created in it. Otherwise a new instance of the base class is automatically created. package is the optional package which is used as the base for any relative imports of custom widgets. resource_suffix is the suffix appended to the basename of any resource file specified in the .ui file to create the name of the Python module generated from the resource file by pyrcc4. The default is '_rc', i.e. if the .ui file specified a resource file called foo.qrc then the corresponding Python module is foo_rc. """ from .Loader.loader import DynamicUILoader return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix) # The list of directories that are searched for widget plugins. from .objcreator import widgetPluginPath PyQt-gpl-5.5.1/pyuic/uic/Compiler/0000755000076500000240000000000012613140040016730 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/Compiler/__init__.py0000644000076500000240000000175412613140040021050 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt-gpl-5.5.1/pyuic/uic/Compiler/compiler.py0000644000076500000240000001074312613140040021121 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import sys from ..properties import Properties from ..uiparser import UIParser from . import qtproxies from .indenter import createCodeIndenter, getIndenter, write_code from .qobjectcreator import CompilerCreatorPolicy from .misc import write_import class UICompiler(UIParser): def __init__(self): UIParser.__init__(self, qtproxies.QtCore, qtproxies.QtGui, qtproxies.QtWidgets, CompilerCreatorPolicy()) def reset(self): qtproxies.i18n_strings = [] UIParser.reset(self) def setContext(self, context): qtproxies.i18n_context = context def createToplevelWidget(self, classname, widgetname): indenter = getIndenter() indenter.level = 0 indenter.write("from PyQt5 import QtCore, QtGui, QtWidgets") indenter.write("") indenter.write("class Ui_%s(object):" % self.uiname) indenter.indent() indenter.write("def setupUi(self, %s):" % widgetname) indenter.indent() w = self.factory.createQObject(classname, widgetname, (), is_attribute = False, no_instantiation = True) w.baseclass = classname w.uiclass = "Ui_%s" % self.uiname return w def setDelayedProps(self): write_code("") write_code("self.retranslateUi(%s)" % self.toplevelWidget) UIParser.setDelayedProps(self) def finalize(self): indenter = getIndenter() indenter.level = 1 indenter.write("") indenter.write("def retranslateUi(self, %s):" % self.toplevelWidget) indenter.indent() if qtproxies.i18n_strings: indenter.write("_translate = QtCore.QCoreApplication.translate") for s in qtproxies.i18n_strings: indenter.write(s) else: indenter.write("pass") indenter.dedent() indenter.dedent() # Keep a reference to the resource modules to import because the parser # will reset() before returning. self._resources = self.resources self._resources.sort() def compileUi(self, input_stream, output_stream, from_imports, resource_suffix): createCodeIndenter(output_stream) w = self.parse(input_stream, resource_suffix) indenter = getIndenter() indenter.write("") self.factory._cpolicy._writeOutImports() for res in self._resources: write_import(res, from_imports) return {"widgetname": str(w), "uiclass" : w.uiclass, "baseclass" : w.baseclass} PyQt-gpl-5.5.1/pyuic/uic/Compiler/indenter.py0000644000076500000240000000526612613140040021123 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# indentwidth = 4 _indenter = None class _IndentedCodeWriter(object): def __init__(self, output): self.level = 0 self.output = output def indent(self): self.level += 1 def dedent(self): self.level -= 1 def write(self, line): if line.strip(): if indentwidth > 0: indent = " " * indentwidth line = line.replace("\t", indent) else: indent = "\t" self.output.write("%s%s\n" % (indent * self.level, line)) else: self.output.write("\n") def createCodeIndenter(output): global _indenter _indenter = _IndentedCodeWriter(output) def getIndenter(): return _indenter def write_code(string): _indenter.write(string) PyQt-gpl-5.5.1/pyuic/uic/Compiler/misc.py0000644000076500000240000000503212613140040020235 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# from .indenter import write_code def write_import(module_name, from_imports): if from_imports: write_code("from . import %s" % module_name) else: write_code("import %s" % module_name) def moduleMember(module, name): if module: return "%s.%s" % (module, name) return name class Literal(object): """Literal(string) -> new literal string will not be quoted when put into an argument list""" def __init__(self, string): self.string = string def __str__(self): return self.string def __or__(self, r_op): return Literal("%s|%s" % (self, r_op)) PyQt-gpl-5.5.1/pyuic/uic/Compiler/proxy_metaclass.py0000644000076500000240000001034412613140040022521 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# from .misc import Literal, moduleMember class ProxyMetaclass(type): """ ProxyMetaclass is the meta-class for proxies. """ def __init__(*args): """ Initialise the meta-class. """ # Initialise as normal. type.__init__(*args) # The proxy type object we have created. proxy = args[0] # Go through the proxy's attributes looking for other proxies. for sub_proxy in proxy.__dict__.values(): if type(sub_proxy) is ProxyMetaclass: # Set the module name of the contained proxy to the name of the # container proxy. sub_proxy.module = proxy.__name__ # Attribute hierachies are created depth first so any proxies # contained in the sub-proxy whose module we have just set will # already exist and have an incomplete module name. We need to # revisit them and prepend the new name to their module names. # Note that this should be recursive but with current usage we # know there will be only one level to revisit. for sub_sub_proxy in sub_proxy.__dict__.values(): if type(sub_sub_proxy) is ProxyMetaclass: sub_sub_proxy.module = '%s.%s' % (proxy.__name__, sub_sub_proxy.module) # Makes sure there is a 'module' attribute. if not hasattr(proxy, 'module'): proxy.module = '' def __getattribute__(cls, name): try: return type.__getattribute__(cls, name) except AttributeError: # Make sure __init__()'s use of hasattr() works. if name == 'module': raise # Avoid a circular import. from .qtproxies import LiteralProxyClass return type(name, (LiteralProxyClass, ), {"module": moduleMember(type.__getattribute__(cls, "module"), type.__getattribute__(cls, "__name__"))}) def __str__(cls): return moduleMember(type.__getattribute__(cls, "module"), type.__getattribute__(cls, "__name__")) def __or__(self, r_op): return Literal("%s|%s" % (self, r_op)) def __eq__(self, other): return str(self) == str(other) PyQt-gpl-5.5.1/pyuic/uic/Compiler/qobjectcreator.py0000644000076500000240000001330412613140040022312 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import logging import sys from .indenter import write_code from .qtproxies import QtGui, QtWidgets, Literal, strict_getattr if sys.hexversion >= 0x03000000: from ..port_v3.as_string import as_string else: from ..port_v2.as_string import as_string logger = logging.getLogger(__name__) DEBUG = logger.debug class _QtWrapper(object): @classmethod def search(cls, name): try: return strict_getattr(cls.module, name) except AttributeError: return None class _QtGuiWrapper(_QtWrapper): module = QtGui class _QtWidgetsWrapper(_QtWrapper): module = QtWidgets class _ModuleWrapper(object): def __init__(self, name, classes): if "." in name: idx = name.rfind(".") self._package = name[:idx] self._module = name[idx + 1:] else: self._package = None self._module = name self._classes = classes self._used = False def search(self, cls): if cls in self._classes: self._used = True return type(cls, (QtWidgets.QWidget,), {"module": self._module}) else: return None def _writeImportCode(self): if self._used: if self._package is None: write_code("import %s" % self._module) else: write_code("from %s import %s" % (self._package, self._module)) class _CustomWidgetLoader(object): def __init__(self): self._widgets = {} self._usedWidgets = set() def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = (baseClass, module) def _resolveBaseclass(self, baseClass): try: for x in range(0, 10): try: return strict_getattr(QtWidgets, baseClass) except AttributeError: pass baseClass = self._widgets[baseClass][0] else: raise ValueError("baseclass resolve took too long, check custom widgets") except KeyError: raise ValueError("unknown baseclass %s" % baseClass) def search(self, cls): try: baseClass = self._resolveBaseclass(self._widgets[cls][0]) DEBUG("resolved baseclass of %s: %s" % (cls, baseClass)) except KeyError: return None self._usedWidgets.add(cls) return type(cls, (baseClass, ), {"module" : ""}) def _writeImportCode(self): imports = {} for widget in self._usedWidgets: _, module = self._widgets[widget] imports.setdefault(module, []).append(widget) for module, classes in sorted(imports.items()): write_code("from %s import %s" % (module, ", ".join(sorted(classes)))) class CompilerCreatorPolicy(object): def __init__(self): self._modules = [] def createQtGuiWidgetsWrappers(self): return [_QtGuiWrapper, _QtWidgetsWrapper] def createModuleWrapper(self, name, classes): mw = _ModuleWrapper(name, classes) self._modules.append(mw) return mw def createCustomWidgetLoader(self): cw = _CustomWidgetLoader() self._modules.append(cw) return cw def instantiate(self, clsObject, objectname, ctor_args, is_attribute=True, no_instantiation=False): return clsObject(objectname, is_attribute, ctor_args, no_instantiation) def invoke(self, rname, method, args): return method(rname, *args) def getSlot(self, object, slotname): return Literal("%s.%s" % (object, slotname)) def asString(self, s): return as_string(s) def _writeOutImports(self): for module in self._modules: module._writeImportCode() PyQt-gpl-5.5.1/pyuic/uic/Compiler/qtproxies.py0000644000076500000240000003731212613140040021346 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import sys import re from .indenter import write_code from .misc import Literal, moduleMember if sys.hexversion >= 0x03000000: from ..port_v3.proxy_base import ProxyBase from ..port_v3.as_string import as_string else: from ..port_v2.proxy_base import ProxyBase from ..port_v2.as_string import as_string i18n_strings = [] i18n_context = "" def i18n_print(string): i18n_strings.append(string) def i18n_void_func(name): def _printer(self, *args): i18n_print("%s.%s(%s)" % (self, name, ", ".join(map(as_string, args)))) return _printer def i18n_func(name): def _printer(self, rname, *args): i18n_print("%s = %s.%s(%s)" % (rname, self, name, ", ".join(map(as_string, args)))) return Literal(rname) return _printer def strict_getattr(module, clsname): cls = getattr(module, clsname) if issubclass(cls, LiteralProxyClass): raise AttributeError(cls) else: return cls class i18n_string(object): def __init__(self, string, disambig): self.string = string self.disambig = disambig def __str__(self): if self.disambig is None: return '_translate("%s", %s)' % (i18n_context, as_string(self.string)) return '_translate("%s", %s, %s)' % (i18n_context, as_string(self.string), as_string(self.disambig)) # Classes with this flag will be handled as literal values. If functions are # called on these classes, the literal value changes. # Example: # the code # >>> QSize(9,10).expandedTo(...) # will print just that code. AS_ARGUMENT = 0x02 # Classes with this flag may have members that are signals which themselves # will have a connect() member. AS_SIGNAL = 0x01 # ATTENTION: currently, classes can either be literal or normal. If a class # should need both kinds of behaviour, the code has to be changed. class ProxyClassMember(object): def __init__(self, proxy, function_name, flags): self.proxy = proxy self.function_name = function_name self.flags = flags def __str__(self): return "%s.%s" % (self.proxy, self.function_name) def __call__(self, *args): if self.function_name == 'setProperty': str_args = (as_string(args[0]), as_string(args[1])) else: str_args = map(as_string, args) func_call = "%s.%s(%s)" % (self.proxy, self.function_name, ", ".join(str_args)) if self.flags & AS_ARGUMENT: self.proxy._uic_name = func_call return self.proxy else: needs_translation = False for arg in args: if isinstance(arg, i18n_string): needs_translation = True if needs_translation: i18n_print(func_call) else: write_code(func_call) def __getattribute__(self, attribute): """ Reimplemented to create a proxy connect() if requested and this might be a proxy for a signal. """ try: return object.__getattribute__(self, attribute) except AttributeError: if attribute == 'connect' and self.flags & AS_SIGNAL: return ProxyClassMember(self, attribute, 0) raise def __getitem__(self, idx): """ Reimplemented to create a proxy member that should be a signal that passes arguments. We handle signals without arguments before we get here and never apply the index notation to them. """ return ProxySignalWithArguments(self.proxy, self.function_name, idx) class ProxySignalWithArguments(object): """ This is a proxy for (what should be) a signal that passes arguments. """ def __init__(self, sender, signal_name, signal_index): self._sender = sender self._signal_name = signal_name # Convert the signal index, which will be a single argument or a tuple # of arguments, to quoted strings. if isinstance(signal_index, tuple): self._signal_index = ','.join(["'%s'" % a for a in signal_index]) else: self._signal_index = "'%s'" % signal_index def connect(self, slot): write_code("%s.%s[%s].connect(%s)" % (self._sender, self._signal_name, self._signal_index, slot)) class ProxyClass(ProxyBase): flags = 0 def __init__(self, objectname, is_attribute, args=(), noInstantiation=False): if objectname: if is_attribute: objectname = "self." + objectname self._uic_name = objectname else: self._uic_name = "Unnamed" if not noInstantiation: funcall = "%s(%s)" % \ (moduleMember(self.module, self.__class__.__name__), ", ".join(map(str, args))) if objectname: funcall = "%s = %s" % (objectname, funcall) write_code(funcall) def __str__(self): return self._uic_name def __getattribute__(self, attribute): try: return object.__getattribute__(self, attribute) except AttributeError: return ProxyClassMember(self, attribute, self.flags) class LiteralProxyClass(ProxyClass): """LiteralObject(*args) -> new literal class a literal class can be used as argument in a function call >>> class Foo(LiteralProxyClass): pass >>> str(Foo(1,2,3)) == "Foo(1,2,3)" """ flags = AS_ARGUMENT def __init__(self, *args): self._uic_name = "%s(%s)" % \ (moduleMember(self.module, self.__class__.__name__), ", ".join(map(as_string, args))) class ProxyNamespace(ProxyBase): pass # These are all the Qt classes used by pyuic5 in their namespaces. If a class # is missing, the compiler will fail, normally with an AttributeError. # # For adding new classes: # - utility classes used as literal values do not need to be listed # because they are created on the fly as subclasses of LiteralProxyClass # - classes which are *not* QWidgets inherit from ProxyClass and they # have to be listed explicitly in the correct namespace. These classes # are created via a ProxyQObjectCreator # - new QWidget-derived classes have to inherit from qtproxies.QWidget # If the widget does not need any special methods, it can be listed # in _qwidgets class QtCore(ProxyNamespace): class Qt(ProxyNamespace): pass ## connectSlotsByName and connect have to be handled as class methods, ## otherwise they would be created as LiteralProxyClasses and never be ## printed class QMetaObject(ProxyClass): @classmethod def connectSlotsByName(cls, *args): ProxyClassMember(cls, "connectSlotsByName", 0)(*args) class QObject(ProxyClass): flags = AS_SIGNAL def metaObject(self): class _FakeMetaObject(object): def className(*args): return self.__class__.__name__ return _FakeMetaObject() def objectName(self): return self._uic_name.split(".")[-1] class QtGui(ProxyNamespace): class QIcon(ProxyClass): class fromTheme(ProxyClass): pass class QConicalGradient(ProxyClass): pass class QLinearGradient(ProxyClass): pass class QRadialGradient(ProxyClass): pass class QBrush(ProxyClass): pass class QPainter(ProxyClass): pass class QPalette(ProxyClass): pass class QFont(ProxyClass): pass # These sub-class QWidget but aren't themselves sub-classed. _qwidgets = ("QCalendarWidget", "QDialogButtonBox", "QDockWidget", "QGroupBox", "QLineEdit", "QMainWindow", "QMenuBar", "QOpenGLWidget", "QProgressBar", "QStatusBar", "QToolBar", "QWizardPage") class QtWidgets(ProxyNamespace): class QApplication(QtCore.QObject): @staticmethod def translate(uiname, text, disambig): return i18n_string(text or "", disambig) class QSpacerItem(ProxyClass): pass class QSizePolicy(ProxyClass): pass # QActions inherit from QObject for the meta-object stuff and the hierarchy # has to be correct since we have a isinstance(x, QtWidgets.QLayout) call # in the UI parser. class QAction(QtCore.QObject): pass class QActionGroup(QtCore.QObject): pass class QButtonGroup(QtCore.QObject): pass class QLayout(QtCore.QObject): pass class QGridLayout(QLayout): pass class QBoxLayout(QLayout): pass class QHBoxLayout(QBoxLayout): pass class QVBoxLayout(QBoxLayout): pass class QFormLayout(QLayout): pass class QWidget(QtCore.QObject): def font(self): return Literal("%s.font()" % self) def minimumSizeHint(self): return Literal("%s.minimumSizeHint()" % self) def sizePolicy(self): sp = LiteralProxyClass() sp._uic_name = "%s.sizePolicy()" % self return sp class QDialog(QWidget): pass class QColorDialog(QDialog): pass class QFileDialog(QDialog): pass class QFontDialog(QDialog): pass class QInputDialog(QDialog): pass class QMessageBox(QDialog): pass class QWizard(QDialog): pass class QAbstractSlider(QWidget): pass class QDial(QAbstractSlider): pass class QScrollBar(QAbstractSlider): pass class QSlider(QAbstractSlider): pass class QMenu(QWidget): def menuAction(self): return Literal("%s.menuAction()" % self) class QTabWidget(QWidget): def addTab(self, *args): text = args[-1] if isinstance(text, i18n_string): i18n_print("%s.setTabText(%s.indexOf(%s), %s)" % \ (self._uic_name, self._uic_name, args[0], text)) args = args[:-1] + ("", ) ProxyClassMember(self, "addTab", 0)(*args) def indexOf(self, page): return Literal("%s.indexOf(%s)" % (self, page)) class QComboBox(QWidget): pass class QFontComboBox(QComboBox): pass class QAbstractSpinBox(QWidget): pass class QDoubleSpinBox(QAbstractSpinBox): pass class QSpinBox(QAbstractSpinBox): pass class QDateTimeEdit(QAbstractSpinBox): pass class QDateEdit(QDateTimeEdit): pass class QTimeEdit(QDateTimeEdit): pass class QFrame(QWidget): pass class QLabel(QFrame): pass class QLCDNumber(QFrame): pass class QSplitter(QFrame): pass class QStackedWidget(QFrame): pass class QToolBox(QFrame): def addItem(self, *args): text = args[-1] if isinstance(text, i18n_string): i18n_print("%s.setItemText(%s.indexOf(%s), %s)" % \ (self._uic_name, self._uic_name, args[0], text)) args = args[:-1] + ("", ) ProxyClassMember(self, "addItem", 0)(*args) def indexOf(self, page): return Literal("%s.indexOf(%s)" % (self, page)) def layout(self): return QtWidgets.QLayout("%s.layout()" % self, False, (), noInstantiation=True) class QAbstractScrollArea(QFrame): def viewport(self): return QtWidgets.QWidget("%s.viewport()" % self, False, (), noInstantiation=True) class QGraphicsView(QAbstractScrollArea): pass class QMdiArea(QAbstractScrollArea): pass class QPlainTextEdit(QAbstractScrollArea): pass class QScrollArea(QAbstractScrollArea): pass class QTextEdit(QAbstractScrollArea): pass class QTextBrowser(QTextEdit): pass class QAbstractItemView(QAbstractScrollArea): pass class QColumnView(QAbstractItemView): pass class QHeaderView(QAbstractItemView): pass class QListView(QAbstractItemView): pass class QTableView(QAbstractItemView): def horizontalHeader(self): return QtWidgets.QHeaderView("%s.horizontalHeader()" % self, False, (), noInstantiation=True) def verticalHeader(self): return QtWidgets.QHeaderView("%s.verticalHeader()" % self, False, (), noInstantiation=True) class QTreeView(QAbstractItemView): def header(self): return QtWidgets.QHeaderView("%s.header()" % self, False, (), noInstantiation=True) class QListWidgetItem(ProxyClass): pass class QListWidget(QListView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") item = i18n_func("item") class QTableWidgetItem(ProxyClass): pass class QTableWidget(QTableView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") item = i18n_func("item") horizontalHeaderItem = i18n_func("horizontalHeaderItem") verticalHeaderItem = i18n_func("verticalHeaderItem") class QTreeWidgetItem(ProxyClass): def child(self, index): return QtWidgets.QTreeWidgetItem("%s.child(%i)" % (self, index), False, (), noInstantiation=True) class QTreeWidget(QTreeView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") def headerItem(self): return QtWidgets.QWidget("%s.headerItem()" % self, False, (), noInstantiation=True) def topLevelItem(self, index): return QtWidgets.QTreeWidgetItem("%s.topLevelItem(%i)" % (self, index), False, (), noInstantiation=True) class QAbstractButton(QWidget): pass class QCheckBox(QAbstractButton): pass class QRadioButton(QAbstractButton): pass class QToolButton(QAbstractButton): pass class QPushButton(QAbstractButton): pass class QCommandLinkButton(QPushButton): pass # Add all remaining classes. for _class in _qwidgets: if _class not in locals(): locals()[_class] = type(_class, (QWidget, ), {}) PyQt-gpl-5.5.1/pyuic/uic/driver.py0000644000076500000240000001024712613140040017027 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import sys import logging from . import compileUi, loadUi class Driver(object): """ This encapsulates access to the pyuic functionality so that it can be called by code that is Python v2/v3 specific. """ LOGGER_NAME = 'PyQt5.uic' def __init__(self, opts, ui_file): """ Initialise the object. opts is the parsed options. ui_file is the name of the .ui file. """ if opts.debug: logger = logging.getLogger(self.LOGGER_NAME) handler = logging.StreamHandler() handler.setFormatter(logging.Formatter("%(name)s: %(message)s")) logger.addHandler(handler) logger.setLevel(logging.DEBUG) self._opts = opts self._ui_file = ui_file def invoke(self): """ Invoke the action as specified by the parsed options. Returns 0 if there was no error. """ if self._opts.preview: return self._preview() self._generate() return 0 def _preview(self): """ Preview the .ui file. Return the exit status to be passed back to the parent process. """ from PyQt5 import QtWidgets app = QtWidgets.QApplication([self._ui_file]) widget = loadUi(self._ui_file) widget.show() return app.exec_() def _generate(self): """ Generate the Python code. """ needs_close = False if sys.hexversion >= 0x03000000: if self._opts.output == '-': from io import TextIOWrapper pyfile = TextIOWrapper(sys.stdout.buffer, encoding='utf8') else: pyfile = open(self._opts.output, 'wt', encoding='utf8') needs_close = True else: if self._opts.output == '-': pyfile = sys.stdout else: pyfile = open(self._opts.output, 'wt') needs_close = True compileUi(self._ui_file, pyfile, self._opts.execute, self._opts.indent, self._opts.from_imports, self._opts.resource_suffix) if needs_close: pyfile.close() def on_IOError(self, e): """ Handle an IOError exception. """ sys.stderr.write("Error: %s: \"%s\"\n" % (e.strerror, e.filename)) def on_SyntaxError(self, e): """ Handle a SyntaxError exception. """ sys.stderr.write("Error in input file: %s\n" % e) def on_NoSuchWidgetError(self, e): """ Handle a NoSuchWidgetError exception. """ sys.stderr.write(str(e) + "\n") def on_Exception(self, e): """ Handle a generic exception. """ if logging.getLogger(self.LOGGER_NAME).level == logging.DEBUG: import traceback traceback.print_exception(*sys.exc_info()) else: from PyQt5 import QtCore sys.stderr.write("""An unexpected error occurred. Check that you are using the latest version of PyQt5 and send an error report to support@riverbankcomputing.com, including the following information: * your version of PyQt (%s) * the UI file that caused this error * the debug output of pyuic5 (use the -d flag when calling pyuic5) """ % QtCore.PYQT_VERSION_STR) PyQt-gpl-5.5.1/pyuic/uic/exceptions.py0000644000076500000240000000416612613140040017720 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# class NoSuchWidgetError(Exception): def __str__(self): return "Unknown Qt widget: %s" % self.args[0] class UnsupportedPropertyError(Exception): pass class WidgetPluginError(Exception): pass PyQt-gpl-5.5.1/pyuic/uic/icon_cache.py0000644000076500000240000001163612613140040017612 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import os.path class IconCache(object): """Maintain a cache of icons. If an icon is used more than once by a GUI then ensure that only one copy is created. """ def __init__(self, object_factory, qtgui_module): """Initialise the cache.""" self._object_factory = object_factory self._qtgui_module = qtgui_module self._base_dir = '' self._cache = [] def set_base_dir(self, base_dir): """ Set the base directory to be used for all relative filenames. """ self._base_dir = base_dir def get_icon(self, iconset): """Return an icon described by the given iconset tag.""" # Handle a themed icon. theme = iconset.attrib.get('theme') if theme is not None: return self._object_factory.createQObject("QIcon.fromTheme", 'icon', (self._object_factory.asString(theme), ), is_attribute=False) # Handle an empty iconset property. if iconset.text is None: return None iset = _IconSet(iconset, self._base_dir) try: idx = self._cache.index(iset) except ValueError: idx = -1 if idx >= 0: # Return the icon from the cache. iset = self._cache[idx] else: # Follow uic's naming convention. name = 'icon' idx = len(self._cache) if idx > 0: name += str(idx) icon = self._object_factory.createQObject("QIcon", name, (), is_attribute=False) iset.set_icon(icon, self._qtgui_module) self._cache.append(iset) return iset.icon class _IconSet(object): """An icon set, ie. the mode and state and the pixmap used for each.""" def __init__(self, iconset, base_dir): """Initialise the icon set from an XML tag.""" # Set the pre-Qt v4.4 fallback (ie. with no roles). self._fallback = self._file_name(iconset.text, base_dir) self._use_fallback = True # Parse the icon set. self._roles = {} for i in iconset: file_name = i.text if file_name is not None: file_name = self._file_name(file_name, base_dir) self._roles[i.tag] = file_name self._use_fallback = False # There is no real icon yet. self.icon = None @staticmethod def _file_name(fname, base_dir): """ Convert a relative filename if we have a base directory. """ fname = fname.replace("\\", "\\\\") if base_dir != '' and fname[0] != ':' and not os.path.isabs(fname): fname = os.path.join(base_dir, fname) return fname def set_icon(self, icon, qtgui_module): """Save the icon and set its attributes.""" if self._use_fallback: icon.addFile(self._fallback) else: for role, pixmap in self._roles.items(): if role.endswith("off"): mode = role[:-3] state = qtgui_module.QIcon.Off elif role.endswith("on"): mode = role[:-2] state = qtgui_module.QIcon.On else: continue mode = getattr(qtgui_module.QIcon, mode.title()) if pixmap: icon.addPixmap(qtgui_module.QPixmap(pixmap), mode, state) else: icon.addPixmap(qtgui_module.QPixmap(), mode, state) self.icon = icon def __eq__(self, other): """Compare two icon sets for equality.""" if not isinstance(other, type(self)): return NotImplemented if self._use_fallback: if other._use_fallback: return self._fallback == other._fallback return False if other._use_fallback: return False return self._roles == other._roles PyQt-gpl-5.5.1/pyuic/uic/Loader/0000755000076500000240000000000012613140040016364 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/Loader/__init__.py0000644000076500000240000000175412613140040020504 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt-gpl-5.5.1/pyuic/uic/Loader/loader.py0000644000076500000240000000602512613140040020207 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import os.path from PyQt5 import QtCore, QtGui, QtWidgets from ..uiparser import UIParser from .qobjectcreator import LoaderCreatorPolicy class DynamicUILoader(UIParser): def __init__(self, package): UIParser.__init__(self, QtCore, QtGui, QtWidgets, LoaderCreatorPolicy(package)) def createToplevelWidget(self, classname, widgetname): if self.toplevelInst is not None: if not isinstance(self.toplevelInst, self.factory.findQObjectType(classname)): raise TypeError(("Wrong base class of toplevel widget", (type(self.toplevelInst), classname))) return self.toplevelInst else: return self.factory.createQObject(classname, widgetname, ()) def loadUi(self, filename, toplevelInst, resource_suffix): self.toplevelInst = toplevelInst if hasattr(filename, 'read'): basedir = '' else: # Allow the filename to be a QString. filename = str(filename) basedir = os.path.dirname(filename) return self.parse(filename, resource_suffix, basedir) PyQt-gpl-5.5.1/pyuic/uic/Loader/qobjectcreator.py0000644000076500000240000001174312613140040021753 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import sys from PyQt5 import QtGui, QtWidgets class _QtWrapper(object): @classmethod def search(cls, name): return getattr(cls.module, name, None) class _QtGuiWrapper(_QtWrapper): module = QtGui class _QtWidgetsWrapper(_QtWrapper): module = QtWidgets class _ModuleWrapper(object): def __init__(self, moduleName, classes): self._moduleName = moduleName self._module = None self._classes = classes def search(self, cls): if cls in self._classes: if self._module is None: self._module = __import__(self._moduleName, {}, {}, self._classes) # Allow for namespaces. obj = self._module for attr in cls.split('.'): obj = getattr(obj, attr) return obj else: return None class _CustomWidgetLoader(object): def __init__(self, package): # should it stay this way? if '.' not in sys.path: sys.path.append('.') self._widgets = {} self._modules = {} self._package = package def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = module def search(self, cls): module_name = self._widgets.get(cls) if module_name is None: return None module = self._modules.get(module_name) if module is None: if module_name.startswith('.'): if self._package == '': raise ImportError( "relative import of %s without base package specified" % module_name) if self._package.startswith('.'): raise ImportError( "base package %s is relative" % self._package) mname = self._package + module_name else: mname = module_name try: module = __import__(mname, {}, {}, (cls,)) except ValueError: # Raise a more helpful exception. raise ImportError("unable to import module %s" % mname) self._modules[module_name] = module return getattr(module, cls) class LoaderCreatorPolicy(object): def __init__(self, package): self._package = package def createQtGuiWidgetsWrappers(self): return [_QtGuiWrapper, _QtWidgetsWrapper] def createModuleWrapper(self, moduleName, classes): return _ModuleWrapper(moduleName, classes) def createCustomWidgetLoader(self): return _CustomWidgetLoader(self._package) def instantiate(self, clsObject, objectName, ctor_args, is_attribute=True): return clsObject(*ctor_args) def invoke(self, rname, method, args): return method(*args) def getSlot(self, object, slotname): # Rename slots that correspond to Python keyword arguments. if slotname == 'raise': slotname += '_' return getattr(object, slotname) def asString(self, s): return s PyQt-gpl-5.5.1/pyuic/uic/objcreator.py0000644000076500000240000001260412613140040017665 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import sys import os.path from .exceptions import NoSuchWidgetError, WidgetPluginError if sys.hexversion >= 0x03000000: from .port_v3.load_plugin import load_plugin else: from .port_v2.load_plugin import load_plugin # The list of directories that are searched for widget plugins. This is # exposed as part of the API. widgetPluginPath = [os.path.join(os.path.dirname(__file__), 'widget-plugins')] MATCH = True NO_MATCH = False MODULE = 0 CW_FILTER = 1 class QObjectCreator(object): def __init__(self, creatorPolicy): self._cpolicy = creatorPolicy self._cwFilters = [] self._modules = self._cpolicy.createQtGuiWidgetsWrappers() # Get the optional plugins. for plugindir in widgetPluginPath: try: plugins = os.listdir(plugindir) except: plugins = [] for filename in plugins: if not filename.endswith('.py'): continue filename = os.path.join(plugindir, filename) plugin_globals = { "MODULE": MODULE, "CW_FILTER": CW_FILTER, "MATCH": MATCH, "NO_MATCH": NO_MATCH} plugin_locals = {} if load_plugin(filename, plugin_globals, plugin_locals): pluginType = plugin_locals["pluginType"] if pluginType == MODULE: modinfo = plugin_locals["moduleInformation"]() self._modules.append(self._cpolicy.createModuleWrapper(*modinfo)) elif pluginType == CW_FILTER: self._cwFilters.append(plugin_locals["getFilter"]()) else: raise WidgetPluginError("Unknown plugin type of %s" % filename) self._customWidgets = self._cpolicy.createCustomWidgetLoader() self._modules.append(self._customWidgets) def createQObject(self, classname, *args, **kwargs): # Handle regular and custom widgets. factory = self.findQObjectType(classname) if factory is None: # Handle scoped names, typically static factory methods. parts = classname.split('.') if len(parts) > 1: factory = self.findQObjectType(parts[0]) if factory is not None: for part in parts[1:]: factory = getattr(factory, part, None) if factory is None: break if factory is None: raise NoSuchWidgetError(classname) return self._cpolicy.instantiate(factory, *args, **kwargs) def invoke(self, rname, method, args=()): return self._cpolicy.invoke(rname, method, args) def findQObjectType(self, classname): for module in self._modules: w = module.search(classname) if w is not None: return w return None def getSlot(self, obj, slotname): return self._cpolicy.getSlot(obj, slotname) def asString(self, s): return self._cpolicy.asString(s) def addCustomWidget(self, widgetClass, baseClass, module): for cwFilter in self._cwFilters: match, result = cwFilter(widgetClass, baseClass, module) if match: widgetClass, baseClass, module = result break self._customWidgets.addCustomWidget(widgetClass, baseClass, module) PyQt-gpl-5.5.1/pyuic/uic/port_v2/0000755000076500000240000000000012613140040016551 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/port_v2/__init__.py0000644000076500000240000000175412613140040020671 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt-gpl-5.5.1/pyuic/uic/port_v2/as_string.py0000644000076500000240000000263312613140040021120 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import re def as_string(obj): if isinstance(obj, basestring): return '"' + _escape(obj.encode('UTF-8')) + '"' return str(obj) _esc_regex = re.compile(r"(\"|\'|\\)") def _escape(text): # This escapes any escaped single or double quote or backslash. x = _esc_regex.sub(r"\\\1", text) # This replaces any '\n' with an escaped version and a real line break. return re.sub(r'\n', r'\\n"\n"', x) PyQt-gpl-5.5.1/pyuic/uic/port_v2/ascii_upper.py0000644000076500000240000000245512613140040021434 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import string # A translation table for converting ASCII lower case to upper case. _ascii_trans_table = string.maketrans(string.ascii_lowercase, string.ascii_uppercase) # Convert a string to ASCII upper case irrespective of the current locale. def ascii_upper(s): return s.translate(_ascii_trans_table) PyQt-gpl-5.5.1/pyuic/uic/port_v2/invoke.py0000644000076500000240000000277312613140040020427 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..exceptions import NoSuchWidgetError def invoke(driver): """ Invoke the given command line driver. Return the exit status to be passed back to the parent process. """ exit_status = 1 try: exit_status = driver.invoke() except IOError, e: driver.on_IOError(e) except SyntaxError, e: driver.on_SyntaxError(e) except NoSuchWidgetError, e: driver.on_NoSuchWidgetError(e) except Exception, e: driver.on_Exception(e) return exit_status PyQt-gpl-5.5.1/pyuic/uic/port_v2/load_plugin.py0000644000076500000240000000305612613140040021424 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..exceptions import WidgetPluginError def load_plugin(filename, plugin_globals, plugin_locals): """ Load the plugin from the given file. Return True if the plugin was loaded, or False if it wanted to be ignored. Raise an exception if there was an error. """ plugin = open(filename, 'rU') try: exec(plugin.read(), plugin_globals, plugin_locals) except ImportError: return False except Exception, e: raise WidgetPluginError("%s: %s" % (e.__class__, str(e))) finally: plugin.close() return True PyQt-gpl-5.5.1/pyuic/uic/port_v2/proxy_base.py0000644000076500000240000000230312613140040021274 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..Compiler.proxy_metaclass import ProxyMetaclass class ProxyBase(object): """ A base class for proxies using Python v2 syntax for setting the meta-class. """ __metaclass__ = ProxyMetaclass PyQt-gpl-5.5.1/pyuic/uic/port_v2/string_io.py0000644000076500000240000000215212613140040021120 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # Import the StringIO object. try: from cStringIO import StringIO except ImportError: from StringIO import StringIO PyQt-gpl-5.5.1/pyuic/uic/port_v3/0000755000076500000240000000000012613140040016552 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/port_v3/__init__.py0000644000076500000240000000175412613140040020672 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt-gpl-5.5.1/pyuic/uic/port_v3/as_string.py0000644000076500000240000000260412613140040021117 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import re def as_string(obj): if isinstance(obj, str): return '"' + _escape(obj) + '"' return str(obj) _esc_regex = re.compile(r"(\"|\'|\\)") def _escape(text): # This escapes any escaped single or double quote or backslash. x = _esc_regex.sub(r"\\\1", text) # This replaces any '\n' with an escaped version and a real line break. return re.sub(r'\n', r'\\n"\n"', x) PyQt-gpl-5.5.1/pyuic/uic/port_v3/ascii_upper.py0000644000076500000240000000245212613140040021432 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # A translation table for converting ASCII lower case to upper case. _ascii_trans_table = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ') # Convert a string to ASCII upper case irrespective of the current locale. def ascii_upper(s): return s.translate(_ascii_trans_table) PyQt-gpl-5.5.1/pyuic/uic/port_v3/invoke.py0000644000076500000240000000300312613140040020413 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..exceptions import NoSuchWidgetError def invoke(driver): """ Invoke the given command line driver. Return the exit status to be passed back to the parent process. """ exit_status = 1 try: exit_status = driver.invoke() except IOError as e: driver.on_IOError(e) except SyntaxError as e: driver.on_SyntaxError(e) except NoSuchWidgetError as e: driver.on_NoSuchWidgetError(e) except Exception as e: driver.on_Exception(e) return exit_status PyQt-gpl-5.5.1/pyuic/uic/port_v3/load_plugin.py0000644000076500000240000000305712613140040021426 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..exceptions import WidgetPluginError def load_plugin(filename, plugin_globals, plugin_locals): """ Load the plugin from the given file. Return True if the plugin was loaded, or False if it wanted to be ignored. Raise an exception if there was an error. """ plugin = open(filename, 'r') try: exec(plugin.read(), plugin_globals, plugin_locals) except ImportError: return False except Exception as e: raise WidgetPluginError("%s: %s" % (e.__class__, str(e))) finally: plugin.close() return True PyQt-gpl-5.5.1/pyuic/uic/port_v3/proxy_base.py0000644000076500000240000000226112613140040021300 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..Compiler.proxy_metaclass import ProxyMetaclass class ProxyBase(metaclass=ProxyMetaclass): """ A base class for proxies using Python v3 syntax for setting the meta-class. """ PyQt-gpl-5.5.1/pyuic/uic/port_v3/string_io.py0000644000076500000240000000204412613140040021121 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # Import the StringIO object. from io import StringIO PyQt-gpl-5.5.1/pyuic/uic/properties.py0000644000076500000240000004251712613140040017735 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import logging import os.path import sys from .exceptions import UnsupportedPropertyError from .icon_cache import IconCache if sys.hexversion >= 0x03000000: from .port_v3.ascii_upper import ascii_upper else: from .port_v2.ascii_upper import ascii_upper logger = logging.getLogger(__name__) DEBUG = logger.debug QtCore = None QtGui = None QtWidgets = None def int_list(prop): return [int(child.text) for child in prop] def float_list(prop): return [float(child.text) for child in prop] bool_ = lambda v: v == "true" def qfont_enum(v): return getattr(QtGui.QFont, v) def needsWidget(func): func.needsWidget = True return func class Properties(object): def __init__(self, factory, qtcore_module, qtgui_module, qtwidgets_module): self.factory = factory global QtCore, QtGui, QtWidgets QtCore = qtcore_module QtGui = qtgui_module QtWidgets = qtwidgets_module self._base_dir = '' self.reset() def set_base_dir(self, base_dir): """ Set the base directory to be used for all relative filenames. """ self._base_dir = base_dir self.icon_cache.set_base_dir(base_dir) def reset(self): self.buddies = [] self.delayed_props = [] self.icon_cache = IconCache(self.factory, QtGui) def _pyEnumMember(self, cpp_name): try: prefix, membername = cpp_name.split("::") except ValueError: prefix = 'Qt' membername = cpp_name if prefix == 'Qt': return getattr(QtCore.Qt, membername) scope = self.factory.findQObjectType(prefix) if scope is None: raise AttributeError("unknown enum %s" % cpp_name) return getattr(scope, membername) def _set(self, prop): expr = [self._pyEnumMember(v) for v in prop.text.split('|')] value = expr[0] for v in expr[1:]: value |= v return value def _enum(self, prop): return self._pyEnumMember(prop.text) def _number(self, prop): return int(prop.text) _uInt = _longLong = _uLongLong = _number def _double(self, prop): return float(prop.text) def _bool(self, prop): return prop.text == 'true' def _stringlist(self, prop): return [self._string(p, notr='true') for p in prop] def _string(self, prop, notr=None): text = prop.text if text is None: return "" if prop.get('notr', notr) == 'true': return text disambig = prop.get('comment') return QtWidgets.QApplication.translate(self.uiname, text, disambig) _char = _string def _cstring(self, prop): return str(prop.text) def _color(self, prop): args = int_list(prop) # Handle the optional alpha component. alpha = int(prop.get("alpha", "255")) if alpha != 255: args.append(alpha) return QtGui.QColor(*args) def _point(self, prop): return QtCore.QPoint(*int_list(prop)) def _pointf(self, prop): return QtCore.QPointF(*float_list(prop)) def _rect(self, prop): return QtCore.QRect(*int_list(prop)) def _rectf(self, prop): return QtCore.QRectF(*float_list(prop)) def _size(self, prop): return QtCore.QSize(*int_list(prop)) def _sizef(self, prop): return QtCore.QSizeF(*float_list(prop)) def _pixmap(self, prop): if prop.text: fname = prop.text.replace("\\", "\\\\") if self._base_dir != '' and fname[0] != ':' and not os.path.isabs(fname): fname = os.path.join(self._base_dir, fname) return QtGui.QPixmap(fname) # Don't bother to set the property if the pixmap is empty. return None def _iconset(self, prop): return self.icon_cache.get_icon(prop) def _url(self, prop): return QtCore.QUrl(prop[0].text) def _locale(self, prop): lang = getattr(QtCore.QLocale, prop.attrib['language']) country = getattr(QtCore.QLocale, prop.attrib['country']) return QtCore.QLocale(lang, country) def _date(self, prop): return QtCore.QDate(*int_list(prop)) def _datetime(self, prop): args = int_list(prop) return QtCore.QDateTime(QtCore.QDate(*args[-3:]), QtCore.QTime(*args[:-3])) def _time(self, prop): return QtCore.QTime(*int_list(prop)) def _gradient(self, prop): name = 'gradient' # Create the specific gradient. gtype = prop.get('type', '') if gtype == 'LinearGradient': startx = float(prop.get('startx')) starty = float(prop.get('starty')) endx = float(prop.get('endx')) endy = float(prop.get('endy')) gradient = self.factory.createQObject('QLinearGradient', name, (startx, starty, endx, endy), is_attribute=False) elif gtype == 'ConicalGradient': centralx = float(prop.get('centralx')) centraly = float(prop.get('centraly')) angle = float(prop.get('angle')) gradient = self.factory.createQObject('QConicalGradient', name, (centralx, centraly, angle), is_attribute=False) elif gtype == 'RadialGradient': centralx = float(prop.get('centralx')) centraly = float(prop.get('centraly')) radius = float(prop.get('radius')) focalx = float(prop.get('focalx')) focaly = float(prop.get('focaly')) gradient = self.factory.createQObject('QRadialGradient', name, (centralx, centraly, radius, focalx, focaly), is_attribute=False) else: raise UnsupportedPropertyError(prop.tag) # Set the common values. spread = prop.get('spread') if spread: gradient.setSpread(getattr(QtGui.QGradient, spread)) cmode = prop.get('coordinatemode') if cmode: gradient.setCoordinateMode(getattr(QtGui.QGradient, cmode)) # Get the gradient stops. for gstop in prop: if gstop.tag != 'gradientstop': raise UnsupportedPropertyError(gstop.tag) position = float(gstop.get('position')) color = self._color(gstop[0]) gradient.setColorAt(position, color) return name def _palette(self, prop): palette = self.factory.createQObject("QPalette", "palette", (), is_attribute=False) for palette_elem in prop: sub_palette = getattr(QtGui.QPalette, palette_elem.tag.title()) for role, color in enumerate(palette_elem): if color.tag == 'color': # Handle simple colour descriptions where the role is # implied by the colour's position. palette.setColor(sub_palette, QtGui.QPalette.ColorRole(role), self._color(color)) elif color.tag == 'colorrole': role = getattr(QtGui.QPalette, color.get('role')) brush = self._brush(color[0]) palette.setBrush(sub_palette, role, brush) else: raise UnsupportedPropertyError(color.tag) return palette def _brush(self, prop): brushstyle = prop.get('brushstyle') if brushstyle in ('LinearGradientPattern', 'ConicalGradientPattern', 'RadialGradientPattern'): gradient = self._gradient(prop[0]) brush = self.factory.createQObject("QBrush", "brush", (gradient, ), is_attribute=False) else: color = self._color(prop[0]) brush = self.factory.createQObject("QBrush", "brush", (color, ), is_attribute=False) brushstyle = getattr(QtCore.Qt, brushstyle) brush.setStyle(brushstyle) return brush #@needsWidget def _sizepolicy(self, prop, widget): values = [int(child.text) for child in prop] if len(values) == 2: # Qt v4.3.0 and later. horstretch, verstretch = values hsizetype = getattr(QtWidgets.QSizePolicy, prop.get('hsizetype')) vsizetype = getattr(QtWidgets.QSizePolicy, prop.get('vsizetype')) else: hsizetype, vsizetype, horstretch, verstretch = values hsizetype = QtWidgets.QSizePolicy.Policy(hsizetype) vsizetype = QtWidgets.QSizePolicy.Policy(vsizetype) sizePolicy = self.factory.createQObject('QSizePolicy', 'sizePolicy', (hsizetype, vsizetype), is_attribute=False) sizePolicy.setHorizontalStretch(horstretch) sizePolicy.setVerticalStretch(verstretch) sizePolicy.setHeightForWidth(widget.sizePolicy().hasHeightForWidth()) return sizePolicy _sizepolicy = needsWidget(_sizepolicy) # font needs special handling/conversion of all child elements. _font_attributes = (("Family", lambda s: s), ("PointSize", int), ("Bold", bool_), ("Italic", bool_), ("Underline", bool_), ("Weight", int), ("StrikeOut", bool_), ("Kerning", bool_), ("StyleStrategy", qfont_enum)) def _font(self, prop): newfont = self.factory.createQObject("QFont", "font", (), is_attribute = False) for attr, converter in self._font_attributes: v = prop.findtext("./%s" % (attr.lower(),)) if v is None: continue getattr(newfont, "set%s" % (attr,))(converter(v)) return newfont def _cursor(self, prop): return QtGui.QCursor(QtCore.Qt.CursorShape(int(prop.text))) def _cursorShape(self, prop): return QtGui.QCursor(getattr(QtCore.Qt, prop.text)) def convert(self, prop, widget=None): try: func = getattr(self, "_" + prop[0].tag) except AttributeError: raise UnsupportedPropertyError(prop[0].tag) else: args = {} if getattr(func, "needsWidget", False): assert widget is not None args["widget"] = widget return func(prop[0], **args) def _getChild(self, elem_tag, elem, name, default=None): for prop in elem.findall(elem_tag): if prop.attrib["name"] == name: return self.convert(prop) else: return default def getProperty(self, elem, name, default=None): return self._getChild("property", elem, name, default) def getAttribute(self, elem, name, default=None): return self._getChild("attribute", elem, name, default) def setProperties(self, widget, elem): # Lines are sunken unless the frame shadow is explicitly set. set_sunken = (elem.attrib.get('class') == 'Line') for prop in elem.findall('property'): prop_name = prop.attrib['name'] DEBUG("setting property %s" % (prop_name,)) if prop_name == 'frameShadow': set_sunken = False try: stdset = bool(int(prop.attrib['stdset'])) except KeyError: stdset = True if not stdset: self._setViaSetProperty(widget, prop) elif hasattr(self, prop_name): getattr(self, prop_name)(widget, prop) else: prop_value = self.convert(prop, widget) if prop_value is not None: getattr(widget, 'set%s%s' % (ascii_upper(prop_name[0]), prop_name[1:]))(prop_value) if set_sunken: widget.setFrameShadow(QtWidgets.QFrame.Sunken) # SPECIAL PROPERTIES # If a property has a well-known value type but needs special, # context-dependent handling, the default behaviour can be overridden here. # Delayed properties will be set after the whole widget tree has been # populated. def _delayed_property(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: prop_name = prop.attrib["name"] self.delayed_props.append((widget, False, 'set%s%s' % (ascii_upper(prop_name[0]), prop_name[1:]), prop_value)) # These properties will be set with a widget.setProperty call rather than # calling the set function. def _setViaSetProperty(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: prop_name = prop.attrib['name'] # This appears to be a Designer/uic hack where stdset=0 means that # the viewport should be used. if prop[0].tag == 'cursorShape': widget.viewport().setProperty(prop_name, prop_value) else: widget.setProperty(prop_name, prop_value) # Ignore the property. def _ignore(self, widget, prop): pass # Define properties that use the canned handlers. currentIndex = _delayed_property currentRow = _delayed_property showDropIndicator = _setViaSetProperty intValue = _setViaSetProperty value = _setViaSetProperty objectName = _ignore margin = _ignore leftMargin = _ignore topMargin = _ignore rightMargin = _ignore bottomMargin = _ignore spacing = _ignore horizontalSpacing = _ignore verticalSpacing = _ignore # tabSpacing is actually the spacing property of the widget's layout. def tabSpacing(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: self.delayed_props.append((widget, True, 'setSpacing', prop_value)) # buddy setting has to be done after the whole widget tree has been # populated. We can't use delay here because we cannot get the actual # buddy yet. def buddy(self, widget, prop): buddy_name = prop[0].text if buddy_name: self.buddies.append((widget, buddy_name)) # geometry is handled specially if set on the toplevel widget. def geometry(self, widget, prop): if widget.objectName() == self.uiname: geom = int_list(prop[0]) widget.resize(geom[2], geom[3]) else: widget.setGeometry(self._rect(prop[0])) def orientation(self, widget, prop): # If the class is a QFrame, it's a line. if widget.metaObject().className() == 'QFrame': widget.setFrameShape( {'Qt::Horizontal': QtWidgets.QFrame.HLine, 'Qt::Vertical' : QtWidgets.QFrame.VLine}[prop[0].text]) else: widget.setOrientation(self._enum(prop[0])) # The isWrapping attribute of QListView is named inconsistently, it should # be wrapping. def isWrapping(self, widget, prop): widget.setWrapping(self.convert(prop)) # This is a pseudo-property injected to deal with margins. def pyuicMargins(self, widget, prop): widget.setContentsMargins(*int_list(prop)) # This is a pseudo-property injected to deal with spacing. def pyuicSpacing(self, widget, prop): horiz, vert = int_list(prop) if horiz == vert: widget.setSpacing(horiz) else: if horiz >= 0: widget.setHorizontalSpacing(horiz) if vert >= 0: widget.setVerticalSpacing(vert) PyQt-gpl-5.5.1/pyuic/uic/pyuic.py0000644000076500000240000000537312613140040016671 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import sys import optparse from PyQt5 import QtCore from .driver import Driver Version = "Python User Interface Compiler %s for Qt version %s" % (QtCore.PYQT_VERSION_STR, QtCore.QT_VERSION_STR) if sys.hexversion >= 0x03000000: from .port_v3.invoke import invoke else: from .port_v2.invoke import invoke parser = optparse.OptionParser(usage="pyuic5 [options] ", version=Version) parser.add_option("-p", "--preview", dest="preview", action="store_true", default=False, help="show a preview of the UI instead of generating code") parser.add_option("-o", "--output", dest="output", default="-", metavar="FILE", help="write generated code to FILE instead of stdout") parser.add_option("-x", "--execute", dest="execute", action="store_true", default=False, help="generate extra code to test and display the class") parser.add_option("-d", "--debug", dest="debug", action="store_true", default=False, help="show debug output") parser.add_option("-i", "--indent", dest="indent", action="store", type="int", default=4, metavar="N", help="set indent width to N spaces, tab if N is 0 [default: 4]") g = optparse.OptionGroup(parser, title="Code generation options") g.add_option("--from-imports", dest="from_imports", action="store_true", default=False, help="generate imports relative to '.'") g.add_option("--resource-suffix", dest="resource_suffix", action="store", type="string", default="_rc", metavar="SUFFIX", help="append SUFFIX to the basename of resource files [default: _rc]") parser.add_option_group(g) opts, args = parser.parse_args() if len(args) != 1: sys.stderr.write("Error: one input ui-file must be specified\n") sys.exit(1) sys.exit(invoke(Driver(opts, args[0]))) PyQt-gpl-5.5.1/pyuic/uic/uiparser.py0000644000076500000240000010650412613140040017370 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# import sys import logging import os.path import re from xml.etree.ElementTree import parse, SubElement from .objcreator import QObjectCreator from .properties import Properties logger = logging.getLogger(__name__) DEBUG = logger.debug QtCore = None QtWidgets = None def _parse_alignment(alignment): """ Convert a C++ alignment to the corresponding flags. """ align_flags = None for qt_align in alignment.split('|'): _, qt_align = qt_align.split('::') align = getattr(QtCore.Qt, qt_align) if align_flags is None: align_flags = align else: align_flags |= align return align_flags def _layout_position(elem): """ Return either (), (0, alignment), (row, column, rowspan, colspan) or (row, column, rowspan, colspan, alignment) depending on the type of layout and its configuration. The result will be suitable to use as arguments to the layout. """ row = elem.attrib.get('row') column = elem.attrib.get('column') alignment = elem.attrib.get('alignment') # See if it is a box layout. if row is None or column is None: if alignment is None: return () return (0, _parse_alignment(alignment)) # It must be a grid or a form layout. row = int(row) column = int(column) rowspan = int(elem.attrib.get('rowspan', 1)) colspan = int(elem.attrib.get('colspan', 1)) if alignment is None: return (row, column, rowspan, colspan) return (row, column, rowspan, colspan, _parse_alignment(alignment)) class WidgetStack(list): topwidget = None def push(self, item): DEBUG("push %s %s" % (item.metaObject().className(), item.objectName())) self.append(item) if isinstance(item, QtWidgets.QWidget): self.topwidget = item def popLayout(self): layout = list.pop(self) DEBUG("pop layout %s %s" % (layout.metaObject().className(), layout.objectName())) return layout def popWidget(self): widget = list.pop(self) DEBUG("pop widget %s %s" % (widget.metaObject().className(), widget.objectName())) for item in reversed(self): if isinstance(item, QtWidgets.QWidget): self.topwidget = item break else: self.topwidget = None DEBUG("new topwidget %s" % (self.topwidget,)) return widget def peek(self): return self[-1] def topIsLayout(self): return isinstance(self[-1], QtWidgets.QLayout) class ButtonGroup(object): """ Encapsulate the configuration of a button group and its implementation. """ def __init__(self): """ Initialise the button group. """ self.exclusive = True self.object = None class UIParser(object): def __init__(self, qtcore_module, qtgui_module, qtwidgets_module, creatorPolicy): self.factory = QObjectCreator(creatorPolicy) self.wprops = Properties(self.factory, qtcore_module, qtgui_module, qtwidgets_module) global QtCore, QtWidgets QtCore = qtcore_module QtWidgets = qtwidgets_module self.reset() def uniqueName(self, name): """UIParser.uniqueName(string) -> string Create a unique name from a string. >>> p = UIParser(QtCore, QtGui, QtWidgets) >>> p.uniqueName("foo") 'foo' >>> p.uniqueName("foo") 'foo1' """ try: suffix = self.name_suffixes[name] except KeyError: self.name_suffixes[name] = 0 return name suffix += 1 self.name_suffixes[name] = suffix return "%s%i" % (name, suffix) def reset(self): try: self.wprops.reset() except AttributeError: pass self.toplevelWidget = None self.stack = WidgetStack() self.name_suffixes = {} self.defaults = {'spacing': -1, 'margin': -1} self.actions = [] self.currentActionGroup = None self.resources = [] self.button_groups = {} def setupObject(self, clsname, parent, branch, is_attribute=True): name = self.uniqueName(branch.attrib.get('name') or clsname[1:].lower()) if parent is None: args = () else: args = (parent, ) obj = self.factory.createQObject(clsname, name, args, is_attribute) self.wprops.setProperties(obj, branch) obj.setObjectName(name) if is_attribute: setattr(self.toplevelWidget, name, obj) return obj def getProperty(self, elem, name): for prop in elem.findall('property'): if prop.attrib['name'] == name: return prop return None def createWidget(self, elem): self.column_counter = 0 self.row_counter = 0 self.item_nr = 0 self.itemstack = [] self.sorting_enabled = None widget_class = elem.attrib['class'].replace('::', '.') if widget_class == 'Line': widget_class = 'QFrame' # Ignore the parent if it is a container. parent = self.stack.topwidget if isinstance(parent, (QtWidgets.QDockWidget, QtWidgets.QMdiArea, QtWidgets.QScrollArea, QtWidgets.QStackedWidget, QtWidgets.QToolBox, QtWidgets.QTabWidget, QtWidgets.QWizard)): parent = None self.stack.push(self.setupObject(widget_class, parent, elem)) if isinstance(self.stack.topwidget, QtWidgets.QTableWidget): if self.getProperty(elem, 'columnCount') is None: self.stack.topwidget.setColumnCount(len(elem.findall("column"))) if self.getProperty(elem, 'rowCount') is None: self.stack.topwidget.setRowCount(len(elem.findall("row"))) self.traverseWidgetTree(elem) widget = self.stack.popWidget() if isinstance(widget, QtWidgets.QTreeView): self.handleHeaderView(elem, "header", widget.header()) elif isinstance(widget, QtWidgets.QTableView): self.handleHeaderView(elem, "horizontalHeader", widget.horizontalHeader()) self.handleHeaderView(elem, "verticalHeader", widget.verticalHeader()) elif isinstance(widget, QtWidgets.QAbstractButton): bg_i18n = self.wprops.getAttribute(elem, "buttonGroup") if bg_i18n is not None: # This should be handled properly in case the problem arises # elsewhere as well. try: # We are compiling the .ui file. bg_name = bg_i18n.string except AttributeError: # We are loading the .ui file. bg_name = bg_i18n bg = self.button_groups[bg_name] if bg.object is None: bg.object = self.factory.createQObject("QButtonGroup", bg_name, (self.toplevelWidget, )) setattr(self.toplevelWidget, bg_name, bg.object) bg.object.setObjectName(bg_name) if not bg.exclusive: bg.object.setExclusive(False) bg.object.addButton(widget) if self.sorting_enabled is not None: widget.setSortingEnabled(self.sorting_enabled) self.sorting_enabled = None if self.stack.topIsLayout(): lay = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(lay, QtWidgets.QFormLayout): lay.setWidget(lp[0], self._form_layout_role(lp), widget) else: lay.addWidget(widget, *lp) topwidget = self.stack.topwidget if isinstance(topwidget, QtWidgets.QToolBox): icon = self.wprops.getAttribute(elem, "icon") if icon is not None: topwidget.addItem(widget, icon, self.wprops.getAttribute(elem, "label")) else: topwidget.addItem(widget, self.wprops.getAttribute(elem, "label")) tooltip = self.wprops.getAttribute(elem, "toolTip") if tooltip is not None: topwidget.setItemToolTip(topwidget.indexOf(widget), tooltip) elif isinstance(topwidget, QtWidgets.QTabWidget): icon = self.wprops.getAttribute(elem, "icon") if icon is not None: topwidget.addTab(widget, icon, self.wprops.getAttribute(elem, "title")) else: topwidget.addTab(widget, self.wprops.getAttribute(elem, "title")) tooltip = self.wprops.getAttribute(elem, "toolTip") if tooltip is not None: topwidget.setTabToolTip(topwidget.indexOf(widget), tooltip) elif isinstance(topwidget, QtWidgets.QWizard): topwidget.addPage(widget) elif isinstance(topwidget, QtWidgets.QStackedWidget): topwidget.addWidget(widget) elif isinstance(topwidget, (QtWidgets.QDockWidget, QtWidgets.QScrollArea)): topwidget.setWidget(widget) elif isinstance(topwidget, QtWidgets.QMainWindow): if type(widget) == QtWidgets.QWidget: topwidget.setCentralWidget(widget) elif isinstance(widget, QtWidgets.QToolBar): tbArea = self.wprops.getAttribute(elem, "toolBarArea") if tbArea is None: topwidget.addToolBar(widget) else: topwidget.addToolBar(tbArea, widget) tbBreak = self.wprops.getAttribute(elem, "toolBarBreak") if tbBreak: topwidget.insertToolBarBreak(widget) elif isinstance(widget, QtWidgets.QMenuBar): topwidget.setMenuBar(widget) elif isinstance(widget, QtWidgets.QStatusBar): topwidget.setStatusBar(widget) elif isinstance(widget, QtWidgets.QDockWidget): dwArea = self.wprops.getAttribute(elem, "dockWidgetArea") topwidget.addDockWidget(QtCore.Qt.DockWidgetArea(dwArea), widget) def handleHeaderView(self, elem, name, header): value = self.wprops.getAttribute(elem, name + "Visible") if value is not None: header.setVisible(value) value = self.wprops.getAttribute(elem, name + "CascadingSectionResizes") if value is not None: header.setCascadingSectionResizes(value) value = self.wprops.getAttribute(elem, name + "DefaultSectionSize") if value is not None: header.setDefaultSectionSize(value) value = self.wprops.getAttribute(elem, name + "HighlightSections") if value is not None: header.setHighlightSections(value) value = self.wprops.getAttribute(elem, name + "MinimumSectionSize") if value is not None: header.setMinimumSectionSize(value) value = self.wprops.getAttribute(elem, name + "ShowSortIndicator") if value is not None: header.setSortIndicatorShown(value) value = self.wprops.getAttribute(elem, name + "StretchLastSection") if value is not None: header.setStretchLastSection(value) def createSpacer(self, elem): width = elem.findtext("property/size/width") height = elem.findtext("property/size/height") if width is None or height is None: size_args = () else: size_args = (int(width), int(height)) sizeType = self.wprops.getProperty(elem, "sizeType", QtWidgets.QSizePolicy.Expanding) policy = (QtWidgets.QSizePolicy.Minimum, sizeType) if self.wprops.getProperty(elem, "orientation") == QtCore.Qt.Horizontal: policy = policy[1], policy[0] spacer = self.factory.createQObject("QSpacerItem", self.uniqueName("spacerItem"), size_args + policy, is_attribute=False) if self.stack.topIsLayout(): lay = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(lay, QtWidgets.QFormLayout): lay.setItem(lp[0], self._form_layout_role(lp), spacer) else: lay.addItem(spacer, *lp) def createLayout(self, elem): # We use an internal property to handle margins which will use separate # left, top, right and bottom margins if they are found to be # different. The following will select, in order of preference, # separate margins, the same margin in all directions, and the default # margin. margin = self.wprops.getProperty(elem, 'margin', self.defaults['margin']) left = self.wprops.getProperty(elem, 'leftMargin', margin) top = self.wprops.getProperty(elem, 'topMargin', margin) right = self.wprops.getProperty(elem, 'rightMargin', margin) bottom = self.wprops.getProperty(elem, 'bottomMargin', margin) if left >= 0 or top >= 0 or right >= 0 or bottom >= 0: # We inject the new internal property. cme = SubElement(elem, 'property', name='pyuicMargins') SubElement(cme, 'number').text = str(left) SubElement(cme, 'number').text = str(top) SubElement(cme, 'number').text = str(right) SubElement(cme, 'number').text = str(bottom) # We use an internal property to handle spacing which will use separate # horizontal and vertical spacing if they are found to be different. # The following will select, in order of preference, separate # horizontal and vertical spacing, the same spacing in both directions, # and the default spacing. spacing = self.wprops.getProperty(elem, 'spacing', self.defaults['spacing']) horiz = self.wprops.getProperty(elem, 'horizontalSpacing', spacing) vert = self.wprops.getProperty(elem, 'verticalSpacing', spacing) if horiz >= 0 or vert >= 0: # We inject the new internal property. cme = SubElement(elem, 'property', name='pyuicSpacing') SubElement(cme, 'number').text = str(horiz) SubElement(cme, 'number').text = str(vert) classname = elem.attrib["class"] if self.stack.topIsLayout(): parent = None else: parent = self.stack.topwidget if "name" not in elem.attrib: elem.attrib["name"] = classname[1:].lower() self.stack.push(self.setupObject(classname, parent, elem)) self.traverseWidgetTree(elem) layout = self.stack.popLayout() self.configureLayout(elem, layout) if self.stack.topIsLayout(): top_layout = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(top_layout, QtWidgets.QFormLayout): top_layout.setLayout(lp[0], self._form_layout_role(lp), layout) else: top_layout.addLayout(layout, *lp) def configureLayout(self, elem, layout): if isinstance(layout, QtWidgets.QGridLayout): self.setArray(elem, 'columnminimumwidth', layout.setColumnMinimumWidth) self.setArray(elem, 'rowminimumheight', layout.setRowMinimumHeight) self.setArray(elem, 'columnstretch', layout.setColumnStretch) self.setArray(elem, 'rowstretch', layout.setRowStretch) elif isinstance(layout, QtWidgets.QBoxLayout): self.setArray(elem, 'stretch', layout.setStretch) def setArray(self, elem, name, setter): array = elem.attrib.get(name) if array: for idx, value in enumerate(array.split(',')): value = int(value) if value > 0: setter(idx, value) def disableSorting(self, w): if self.item_nr == 0: self.sorting_enabled = self.factory.invoke("__sortingEnabled", w.isSortingEnabled) w.setSortingEnabled(False) def handleItem(self, elem): if self.stack.topIsLayout(): elem[0].attrib['layout-position'] = _layout_position(elem) self.traverseWidgetTree(elem) else: w = self.stack.topwidget if isinstance(w, QtWidgets.QComboBox): text = self.wprops.getProperty(elem, "text") icon = self.wprops.getProperty(elem, "icon") if icon: w.addItem(icon, '') else: w.addItem('') w.setItemText(self.item_nr, text) elif isinstance(w, QtWidgets.QListWidget): self.disableSorting(w) item = self.createWidgetItem('QListWidgetItem', elem, w.item, self.item_nr) w.addItem(item) elif isinstance(w, QtWidgets.QTreeWidget): if self.itemstack: parent, _ = self.itemstack[-1] _, nr_in_root = self.itemstack[0] else: parent = w nr_in_root = self.item_nr item = self.factory.createQObject("QTreeWidgetItem", "item_%d" % len(self.itemstack), (parent, ), False) if self.item_nr == 0 and not self.itemstack: self.sorting_enabled = self.factory.invoke("__sortingEnabled", w.isSortingEnabled) w.setSortingEnabled(False) self.itemstack.append((item, self.item_nr)) self.item_nr = 0 # We have to access the item via the tree when setting the # text. titm = w.topLevelItem(nr_in_root) for child, nr_in_parent in self.itemstack[1:]: titm = titm.child(nr_in_parent) column = -1 for prop in elem.findall('property'): c_prop = self.wprops.convert(prop) c_prop_name = prop.attrib['name'] if c_prop_name == 'text': column += 1 if c_prop: titm.setText(column, c_prop) elif c_prop_name == 'statusTip': item.setStatusTip(column, c_prop) elif c_prop_name == 'toolTip': item.setToolTip(column, c_prop) elif c_prop_name == 'whatsThis': item.setWhatsThis(column, c_prop) elif c_prop_name == 'font': item.setFont(column, c_prop) elif c_prop_name == 'icon': item.setIcon(column, c_prop) elif c_prop_name == 'background': item.setBackground(column, c_prop) elif c_prop_name == 'foreground': item.setForeground(column, c_prop) elif c_prop_name == 'flags': item.setFlags(c_prop) elif c_prop_name == 'checkState': item.setCheckState(column, c_prop) self.traverseWidgetTree(elem) _, self.item_nr = self.itemstack.pop() elif isinstance(w, QtWidgets.QTableWidget): row = int(elem.attrib['row']) col = int(elem.attrib['column']) self.disableSorting(w) item = self.createWidgetItem('QTableWidgetItem', elem, w.item, row, col) w.setItem(row, col, item) self.item_nr += 1 def addAction(self, elem): self.actions.append((self.stack.topwidget, elem.attrib["name"])) @staticmethod def any_i18n(*args): """ Return True if any argument appears to be an i18n string. """ for a in args: if a is not None and not isinstance(a, str): return True return False def createWidgetItem(self, item_type, elem, getter, *getter_args): """ Create a specific type of widget item. """ item = self.factory.createQObject(item_type, "item", (), False) props = self.wprops # Note that not all types of widget items support the full set of # properties. text = props.getProperty(elem, 'text') status_tip = props.getProperty(elem, 'statusTip') tool_tip = props.getProperty(elem, 'toolTip') whats_this = props.getProperty(elem, 'whatsThis') if self.any_i18n(text, status_tip, tool_tip, whats_this): self.factory.invoke("item", getter, getter_args) if text: item.setText(text) if status_tip: item.setStatusTip(status_tip) if tool_tip: item.setToolTip(tool_tip) if whats_this: item.setWhatsThis(whats_this) text_alignment = props.getProperty(elem, 'textAlignment') if text_alignment: item.setTextAlignment(text_alignment) font = props.getProperty(elem, 'font') if font: item.setFont(font) icon = props.getProperty(elem, 'icon') if icon: item.setIcon(icon) background = props.getProperty(elem, 'background') if background: item.setBackground(background) foreground = props.getProperty(elem, 'foreground') if foreground: item.setForeground(foreground) flags = props.getProperty(elem, 'flags') if flags: item.setFlags(flags) check_state = props.getProperty(elem, 'checkState') if check_state: item.setCheckState(check_state) return item def addHeader(self, elem): w = self.stack.topwidget if isinstance(w, QtWidgets.QTreeWidget): props = self.wprops col = self.column_counter text = props.getProperty(elem, 'text') if text: w.headerItem().setText(col, text) status_tip = props.getProperty(elem, 'statusTip') if status_tip: w.headerItem().setStatusTip(col, status_tip) tool_tip = props.getProperty(elem, 'toolTip') if tool_tip: w.headerItem().setToolTip(col, tool_tip) whats_this = props.getProperty(elem, 'whatsThis') if whats_this: w.headerItem().setWhatsThis(col, whats_this) text_alignment = props.getProperty(elem, 'textAlignment') if text_alignment: w.headerItem().setTextAlignment(col, text_alignment) font = props.getProperty(elem, 'font') if font: w.headerItem().setFont(col, font) icon = props.getProperty(elem, 'icon') if icon: w.headerItem().setIcon(col, icon) background = props.getProperty(elem, 'background') if background: w.headerItem().setBackground(col, background) foreground = props.getProperty(elem, 'foreground') if foreground: w.headerItem().setForeground(col, foreground) self.column_counter += 1 elif isinstance(w, QtWidgets.QTableWidget): if len(elem) != 0: if elem.tag == 'column': item = self.createWidgetItem('QTableWidgetItem', elem, w.horizontalHeaderItem, self.column_counter) w.setHorizontalHeaderItem(self.column_counter, item) self.column_counter += 1 elif elem.tag == 'row': item = self.createWidgetItem('QTableWidgetItem', elem, w.verticalHeaderItem, self.row_counter) w.setVerticalHeaderItem(self.row_counter, item) self.row_counter += 1 def setZOrder(self, elem): # Designer can generate empty zorder elements. if elem.text is None: return # Designer allows the z-order of spacer items to be specified even # though they can't be raised, so ignore any missing raise_() method. try: getattr(self.toplevelWidget, elem.text).raise_() except AttributeError: # Note that uic issues a warning message. pass def createAction(self, elem): self.setupObject("QAction", self.currentActionGroup or self.toplevelWidget, elem) def createActionGroup(self, elem): action_group = self.setupObject("QActionGroup", self.toplevelWidget, elem) self.currentActionGroup = action_group self.traverseWidgetTree(elem) self.currentActionGroup = None widgetTreeItemHandlers = { "widget" : createWidget, "addaction" : addAction, "layout" : createLayout, "spacer" : createSpacer, "item" : handleItem, "action" : createAction, "actiongroup": createActionGroup, "column" : addHeader, "row" : addHeader, "zorder" : setZOrder, } def traverseWidgetTree(self, elem): for child in iter(elem): try: handler = self.widgetTreeItemHandlers[child.tag] except KeyError: continue handler(self, child) def createUserInterface(self, elem): # Get the names of the class and widget. cname = elem.attrib["class"] wname = elem.attrib["name"] # If there was no widget name then derive it from the class name. if not wname: wname = cname if wname.startswith("Q"): wname = wname[1:] wname = wname[0].lower() + wname[1:] self.toplevelWidget = self.createToplevelWidget(cname, wname) self.toplevelWidget.setObjectName(wname) DEBUG("toplevel widget is %s", self.toplevelWidget.metaObject().className()) self.wprops.setProperties(self.toplevelWidget, elem) self.stack.push(self.toplevelWidget) self.traverseWidgetTree(elem) self.stack.popWidget() self.addActions() self.setBuddies() self.setDelayedProps() def addActions(self): for widget, action_name in self.actions: if action_name == "separator": widget.addSeparator() else: DEBUG("add action %s to %s", action_name, widget.objectName()) action_obj = getattr(self.toplevelWidget, action_name) if isinstance(action_obj, QtWidgets.QMenu): widget.addAction(action_obj.menuAction()) elif not isinstance(action_obj, QtWidgets.QActionGroup): widget.addAction(action_obj) def setDelayedProps(self): for widget, layout, setter, args in self.wprops.delayed_props: if layout: widget = widget.layout() setter = getattr(widget, setter) setter(args) def setBuddies(self): for widget, buddy in self.wprops.buddies: DEBUG("%s is buddy of %s", buddy, widget.objectName()) try: widget.setBuddy(getattr(self.toplevelWidget, buddy)) except AttributeError: DEBUG("ERROR in ui spec: %s (buddy of %s) does not exist", buddy, widget.objectName()) def classname(self, elem): DEBUG("uiname is %s", elem.text) name = elem.text if name is None: name = "" self.uiname = name self.wprops.uiname = name self.setContext(name) def setContext(self, context): """ Reimplemented by a sub-class if it needs to know the translation context. """ pass def readDefaults(self, elem): self.defaults['margin'] = int(elem.attrib['margin']) self.defaults['spacing'] = int(elem.attrib['spacing']) def setTaborder(self, elem): lastwidget = None for widget_elem in elem: widget = getattr(self.toplevelWidget, widget_elem.text) if lastwidget is not None: self.toplevelWidget.setTabOrder(lastwidget, widget) lastwidget = widget def readResources(self, elem): """ Read a "resources" tag and add the module to import to the parser's list of them. """ try: iterator = getattr(elem, 'iter') except AttributeError: iterator = getattr(elem, 'getiterator') for include in iterator("include"): loc = include.attrib.get("location") # Apply the convention for naming the Python files generated by # pyrcc5. if loc and loc.endswith('.qrc'): mname = os.path.basename(loc[:-4] + self._resource_suffix) if mname not in self.resources: self.resources.append(mname) def createConnections(self, elem): def name2object(obj): if obj == self.uiname: return self.toplevelWidget else: return getattr(self.toplevelWidget, obj) for conn in iter(elem): signal = conn.findtext('signal') signal_name, signal_args = signal.split('(') signal_args = signal_args[:-1].replace(' ', '') sender = name2object(conn.findtext('sender')) bound_signal = getattr(sender, signal_name) slot = self.factory.getSlot(name2object(conn.findtext('receiver')), conn.findtext('slot').split('(')[0]) if signal_args == '': bound_signal.connect(slot) else: signal_args = signal_args.split(',') if len(signal_args) == 1: bound_signal[signal_args[0]].connect(slot) else: bound_signal[tuple(signal_args)].connect(slot) QtCore.QMetaObject.connectSlotsByName(self.toplevelWidget) def customWidgets(self, elem): def header2module(header): """header2module(header) -> string Convert paths to C++ header files to according Python modules >>> header2module("foo/bar/baz.h") 'foo.bar.baz' """ if header.endswith(".h"): header = header[:-2] mpath = [] for part in header.split('/'): # Ignore any empty parts or those that refer to the current # directory. if part not in ('', '.'): if part == '..': # We should allow this for Python3. raise SyntaxError("custom widget header file name may not contain '..'.") mpath.append(part) return '.'.join(mpath) for custom_widget in iter(elem): classname = custom_widget.findtext("class") self.factory.addCustomWidget(classname, custom_widget.findtext("extends") or "QWidget", header2module(custom_widget.findtext("header"))) def createToplevelWidget(self, classname, widgetname): raise NotImplementedError def buttonGroups(self, elem): for button_group in iter(elem): if button_group.tag == 'buttongroup': bg_name = button_group.attrib['name'] bg = ButtonGroup() self.button_groups[bg_name] = bg prop = self.getProperty(button_group, 'exclusive') if prop is not None: if prop.findtext('bool') == 'false': bg.exclusive = False # finalize will be called after the whole tree has been parsed and can be # overridden. def finalize(self): pass def parse(self, filename, resource_suffix, base_dir=''): self.wprops.set_base_dir(base_dir) self._resource_suffix = resource_suffix # The order in which the different branches are handled is important. # The widget tree handler relies on all custom widgets being known, and # in order to create the connections, all widgets have to be populated. branchHandlers = ( ("layoutdefault", self.readDefaults), ("class", self.classname), ("buttongroups", self.buttonGroups), ("customwidgets", self.customWidgets), ("widget", self.createUserInterface), ("connections", self.createConnections), ("tabstops", self.setTaborder), ("resources", self.readResources), ) document = parse(filename) version = document.getroot().attrib["version"] DEBUG("UI version is %s" % (version,)) # Right now, only version 4.0 is supported. assert version in ("4.0",) for tagname, actor in branchHandlers: elem = document.find(tagname) if elem is not None: actor(elem) self.finalize() w = self.toplevelWidget self.reset() return w @staticmethod def _form_layout_role(layout_position): if layout_position[3] > 1: role = QtWidgets.QFormLayout.SpanningRole elif layout_position[1] == 1: role = QtWidgets.QFormLayout.FieldRole else: role = QtWidgets.QFormLayout.LabelRole return role PyQt-gpl-5.5.1/pyuic/uic/widget-plugins/0000755000076500000240000000000012613140040020120 5ustar philstaff00000000000000PyQt-gpl-5.5.1/pyuic/uic/widget-plugins/qaxcontainer.py0000644000076500000240000000302512613140040023166 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QAxContainer", ("QAxWidget", ) PyQt-gpl-5.5.1/pyuic/uic/widget-plugins/qscintilla.py0000644000076500000240000000302112613140040022631 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.Qsci", ("QsciScintilla", ) PyQt-gpl-5.5.1/pyuic/uic/widget-plugins/qtprintsupport.py0000644000076500000240000000306412613140040023633 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return 'PyQt5.QtPrintSupport', ('QAbstractPrintDialog', 'QPageSetupDialog') PyQt-gpl-5.5.1/pyuic/uic/widget-plugins/qtquickwidgets.py0000644000076500000240000000303212613140040023540 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2015 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QtQuickWidgets", ("QQuickWidget", ) PyQt-gpl-5.5.1/pyuic/uic/widget-plugins/qtwebkit.py0000644000076500000240000000471312613140040022331 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised 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 Riverbank Computing Limited 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." ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QtWebKitWidgets", ("QWebView", ) PyQt-gpl-5.5.1/qmlscene/0000755000076500000240000000000012613140041015055 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qmlscene/pluginloader.cpp0000644000076500000240000002405612613140041020255 0ustar philstaff00000000000000/* * This is the qmlscene plugin that collects all the Python plugins it can * find. * * Copyright (c) 2015 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include #include #include #include #include "pluginloader.h" // Construct the C++ plugin. PyQt5QmlPlugin::PyQt5QmlPlugin(QObject *parent) : QQmlExtensionPlugin(parent), py_plugin_obj(0), sip(0) { // Make sure the interpreter is initialised. if (!Py_IsInitialized()) { Py_Initialize(); getSipAPI(); #ifdef WITH_THREAD // Make sure we don't have the GIL. PyEval_InitThreads(); PyEval_SaveThread(); #endif } } // Destroy the C++ plugin. PyQt5QmlPlugin::~PyQt5QmlPlugin() { if (Py_IsInitialized()) { #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif Py_XDECREF(py_plugin_obj); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } } // Initialize the QML engine. void PyQt5QmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { if (!Py_IsInitialized() || !py_plugin_obj || !sip) return; #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif const sipTypeDef *td = sip->api_find_type("QQmlEngine"); if (!td) { PyErr_SetString(PyExc_AttributeError, "unable to find type for QQmlEngine"); } else { PyObject *engine_obj = sip->api_convert_from_type(engine, td, 0); if (!engine_obj) { td = 0; } else { PyObject *res_obj = PyObject_CallMethod(py_plugin_obj, const_cast("initializeEngine"), const_cast("Os"), engine_obj, uri); Py_DECREF(engine_obj); if (res_obj != Py_None) { if (res_obj) #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from initializeEngine(): %S", res_obj); #else { PyObject *res_s = PyObject_Str(res_obj); if (res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from initializeEngine(): %s", PyString_AsString(res_s)); Py_DECREF(res_s); } } #endif td = 0; } Py_XDECREF(res_obj); } } if (!td) PyErr_Print(); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } // Register the plugin's types. void PyQt5QmlPlugin::registerTypes(const char *uri) { // Construct the import path that the engine will have used by default. // Unfortunately we won't know about any directories added by qmlscene's -I // flag. QStringList import_path; import_path << QCoreApplication::applicationDirPath(); const char *env_path = getenv("QML2_IMPORT_PATH"); if (env_path) { #if defined(Q_OS_WIN) QLatin1Char sep(';'); #else QLatin1Char sep(':'); #endif QStringList env_dirs = QString::fromLatin1(env_path).split(sep, QString::SkipEmptyParts); foreach (QString dir_name, env_dirs) import_path << QDir(dir_name).canonicalPath(); } import_path << QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath); // Try and find the URI directory, check that it has a qmldir file and that // it has a file called *plugin.py. QString py_plugin; QString py_plugin_dir; foreach (QString dir_name, import_path) { dir_name.append('/'); dir_name.append(uri); QDir dir(dir_name); if (!dir.exists() || !dir.exists("qmldir")) continue; QStringList candidates = dir.entryList(QDir::Files|QDir::Readable); foreach (QString py_plugin_file, candidates) { QStringList parts = py_plugin_file.split('.'); if (parts.size() == 2 && parts.at(0).endsWith("plugin") && parts.at(1).startsWith("py")) { py_plugin = parts.at(0); break; } } if (!py_plugin.isEmpty()) { py_plugin_dir = QDir::toNativeSeparators(dir.absolutePath()); break; } } if (py_plugin.isEmpty()) return; #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif if (!addToSysPath(py_plugin_dir) || !callRegisterTypes(py_plugin, uri)) PyErr_Print(); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } // Call the registerTypes() function of a plugin. bool PyQt5QmlPlugin::callRegisterTypes(const QString &py_plugin, const char *uri) { // Import the plugin. PyObject *plugin_mod = PyImport_ImportModule(py_plugin.toLatin1().data()); if (!plugin_mod) return false; // Get QQmlExtensionPlugin. We do this after the import of the plugin to // allow it to fiddle with the context. PyObject *extension_plugin = getModuleAttr("PyQt5.QtQml", "QQmlExtensionPlugin"); if (!extension_plugin) { Py_DECREF(plugin_mod); return false; } // Go through the module looking for a type that implements // QQmlExtensionPlugin. PyObject *mod_dict = PyModule_GetDict(plugin_mod); PyObject *key, *value, *plugin_type = 0; Py_ssize_t pos = 0; while (PyDict_Next(mod_dict, &pos, &key, &value)) if (value != extension_plugin && PyType_Check(value) && PyType_IsSubtype((PyTypeObject *)value, (PyTypeObject *)extension_plugin)) { plugin_type = value; break; } Py_DECREF(extension_plugin); if (!plugin_type) { PyErr_Format(PyExc_AttributeError, "%s does not contain an implementation of QQmlExtensionPlugin", py_plugin.toLatin1().constData()); Py_DECREF(plugin_mod); return false; } // Create the plugin instance. PyObject *plugin_obj = PyObject_CallObject(plugin_type, NULL); Py_DECREF(plugin_mod); if (!plugin_obj) return false; // Call registerTypes(). PyObject *res_obj = PyObject_CallMethod(plugin_obj, const_cast("registerTypes"), const_cast("s"), uri); if (res_obj != Py_None) { Py_DECREF(plugin_obj); if (res_obj) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from registerTypes(): %S", res_obj); #else PyObject *res_s = PyObject_Str(res_obj); if (res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from registerTypes(): %s", PyString_AsString(res_s)); Py_DECREF(res_s); } #endif Py_DECREF(res_obj); } return false; } Py_DECREF(res_obj); py_plugin_obj = plugin_obj; return true; } // Add a directory to sys.path. bool PyQt5QmlPlugin::addToSysPath(const QString &py_plugin_dir) { PyObject *sys_path = getModuleAttr("sys", "path"); if (!sys_path) return false; #if PY_VERSION_HEX >= 0x03030000 PyObject *plugin_dir_obj = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, py_plugin_dir.constData(), py_plugin_dir.length()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } #elif PY_VERSION_HEX >= 0x03000000 #if defined(Py_UNICODE_WIDE) QVector ucs4 = py_plugin_dir.toUcs4(); PyObject *plugin_dir_obj = PyUnicode_FromUnicode(0, ucs4.size()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } memcpy(PyUnicode_AS_UNICODE(plugin_dir_obj), ucs4.constData(), ucs4.size() * sizeof (Py_UNICODE)); #else PyObject *plugin_dir_obj = PyUnicode_FromUnicode(0, py_plugin_dir.length()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } memcpy(PyUnicode_AS_UNICODE(plugin_dir_obj), py_plugin_dir.utf16(), py_plugin_dir.length() * sizeof (Py_UNICODE)); #endif #else PyObject *plugin_dir_obj = PyString_FromString( py_plugin_dir.toLatin1().constData()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } #endif int rc = PyList_Append(sys_path, plugin_dir_obj); Py_DECREF(plugin_dir_obj); Py_DECREF(sys_path); if (rc < 0) { return false; } return true; } // Return the named attribute object from the named module. PyObject *PyQt5QmlPlugin::getModuleAttr(const char *module, const char *attr) { PyObject *mod = PyImport_ImportModule(module); if (!mod) return 0; PyObject *obj = PyObject_GetAttrString(mod, attr); Py_DECREF(mod); return obj; } // Get the SIP API. void PyQt5QmlPlugin::getSipAPI() { #if defined(SIP_USE_PYCAPSULE) sip = (const sipAPIDef *)PyCapsule_Import("sip._C_API", 0); #else PyObject *c_api = getModuleAttr("sip", "_C_API"); if (c_api) { sip = (const sipAPIDef *)PyCObject_AsVoidPtr(c_api); Py_DECREF(c_api); } #endif if (!sip) PyErr_Print(); } PyQt-gpl-5.5.1/qmlscene/pluginloader.h0000644000076500000240000000320612613140041017714 0ustar philstaff00000000000000/* * This is the interface of the qmlscene plugin. * * Copyright (c) 2015 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PLUGINLOADER_H #define _PLUGINLOADER_H #include #include #include #include class PyQt5QmlPlugin : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") public: PyQt5QmlPlugin(QObject *parent = 0); virtual ~PyQt5QmlPlugin(); void initializeEngine(QQmlEngine *engine, const char *uri); void registerTypes(const char *uri); private: void getSipAPI(); static bool addToSysPath(const QString &py_plugin_dir); bool callRegisterTypes(const QString &py_plugin, const char *uri); static PyObject *getModuleAttr(const char *module, const char *attr); PyObject *py_plugin_obj; const sipAPIDef *sip; }; #endif PyQt-gpl-5.5.1/qmlscene/qmlscene.pro-in0000644000076500000240000000062712613140041020017 0ustar philstaff00000000000000CONFIG += plugin @QTCONFIG@ warn_on QT += qml # Work around QTBUG-39300. CONFIG -= android_install TARGET = pyqt5qmlplugin TEMPLATE = lib INCLUDEPATH += @PYINCDIR@ @SIPINCDIR@ LIBS += @PYLINK@ SOURCES = pluginloader.cpp HEADERS = pluginloader.h # Install. target.path = @QTPLUGINDIR@ python.path = @QTPLUGINDIR@ python.files = python INSTALLS += target python PyQt-gpl-5.5.1/qpy/0000755000076500000240000000000012613140040014056 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtBluetooth/0000755000076500000240000000000012613140040016330 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtCore/0000755000076500000240000000000012613140040015253 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtCore/qpycore_api.h0000644000076500000240000000704212613140040017742 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_API_H #define _QPYCORE_API_H #include #include #include #include "qpycore_namespace.h" #include "qpycore_public_api.h" QT_BEGIN_NAMESPACE class QAbstractEventDispatcher; class QObject; QT_END_NAMESPACE // Support for pyqtSlot(). PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds); // Support for pyqtConfigure(). PyObject *qpycore_pyqtconfigure(PyObject *self, PyObject *args, PyObject *kwds); // Support for the QObject %FinalisationCode. int qpycore_qobject_finalisation(PyObject *self, QObject *qobj, PyObject *kwds, PyObject **updated_kwds); // Support for converting between PyObject and QString. PyObject *qpycore_PyObject_FromQString(const QString &qstr); QString qpycore_PyObject_AsQString(PyObject *obj); // Support for converting between PyObject and QVariant. PyObject *qpycore_PyObject_FromQVariant(const QVariant &qvar); QVariant qpycore_PyObject_AsQVariant(PyObject *obj, int *is_err); // Support for Q_CLASSINFO(), Q_ENUMS() and Q_FLAGS(). PyObject *qpycore_ClassInfo(const char *name, const char *value); PyObject *qpycore_Enums(PyObject *args); PyObject *qpycore_Flags(PyObject *args); // Support for creating QGenericArgument and QGenericReturnArgument instances. PyObject *qpycore_ArgumentFactory(PyObject *type, PyObject *data); PyObject *qpycore_ReturnFactory(PyObject *type); PyObject *qpycore_ReturnValue(PyObject *gra); // Support for QObject.__getattr__(). PyObject *qpycore_qobject_getattr(const QObject *qobj, PyObject *py_qobj, const char *name); // Support for QObject.staticMetaObject %GetCode. PyObject *qpycore_qobject_staticmetaobject(PyObject *type_obj); // Support for QMetaObject.connectSlotsByName(). void qpycore_qmetaobject_connectslotsbyname(QObject *qobj, PyObject *qobj_wrapper); // Support for pyqt[Set]PickleProtocol(). extern PyObject *qpycore_pickle_protocol; // Support for qDebug() etc. int qpycore_current_context(const char **file, const char **function); // Support for QObject.disconnect(). PyObject *qpycore_qobject_disconnect(const QObject *q_obj); // Support for QObject's garbage collector code. int qpycore_clearSlotProxies(const QObject *transmitter); int qpycore_visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg); // Support for QJsonValue. int qpycore_canConvertTo_QJsonValue(PyObject *py); int qpycore_convertTo_QJsonValue(PyObject *py, PyObject *transferObj, QJsonValue **cpp, int *isErr); // Utilities. #if PY_MAJOR_VERSION >= 3 void qpycore_Unicode_ConcatAndDel(PyObject **string, PyObject *newpart); #endif // Initialisation. void qpycore_init(); void qpycore_post_init(PyObject *module_dict); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_chimera.cpp0000644000076500000240000013205412613140040021136 0ustar philstaff00000000000000// This is the implementation of the Chimera class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // The registered int types. QList Chimera::_registered_int_types; // The cache of previously parsed argument type lists. QHash > Chimera::_previously_parsed; // The registered QVariant to PyObject convertors. Chimera::FromQVariantConvertors Chimera::registeredFromQVariantConvertors; // The registered PyObject to QVariant convertors. Chimera::ToQVariantConvertors Chimera::registeredToQVariantConvertors; // The registered PyObject to QVariant data convertors. Chimera::ToQVariantDataConvertors Chimera::registeredToQVariantDataConvertors; const int UnknownType = QMetaType::UnknownType; // Construct an invalid type. Chimera::Chimera() : _type(0), _py_type(0), _metatype(UnknownType), _inexact(false), _is_flag(false) { } // Construct a copy. Chimera::Chimera(const Chimera &other) { _type = other._type; _py_type = other._py_type; Py_XINCREF((PyObject *)_py_type); _metatype = other._metatype; _inexact = other._inexact; _is_flag = other._is_flag; _name = other._name; } // Destroy the type. Chimera::~Chimera() { Py_XDECREF((PyObject *)_py_type); } // Register the type of an int type. void Chimera::registerIntType(PyObject *int_type) { if (!_registered_int_types.contains(int_type)) { Py_INCREF(int_type); _registered_int_types.append(int_type); } } // Parse an object as a type. const Chimera *Chimera::parse(PyObject *obj) { Chimera *ct = new Chimera; bool parse_ok; if (PyType_Check(obj)) { // Parse the type object. parse_ok = ct->parse_py_type((PyTypeObject *)obj); if (!parse_ok) raiseParseException(obj); } else { const char *cpp_type_name = sipString_AsASCIIString(&obj); if (cpp_type_name) { // Always use normalised type names so that we have a consistent // standard. QByteArray norm_name = QMetaObject::normalizedType(cpp_type_name); Py_DECREF(obj); // Parse the type name. parse_ok = ct->parse_cpp_type(norm_name); if (!parse_ok) raiseParseCppException(cpp_type_name); } else { parse_ok = false; } } if (!parse_ok) { delete ct; return 0; } return ct; } // Parse a C++ type name as a type. const Chimera *Chimera::parse(const QByteArray &name) { Chimera *ct = new Chimera; if (!ct->parse_cpp_type(name)) { delete ct; raiseParseCppException(name.constData()); return 0; } return ct; } // Parse a meta-property as a type. const Chimera *Chimera::parse(const QMetaProperty &mprop) { Chimera *ct = new Chimera; const char *type_name = mprop.typeName(); ct->_type = sipFindType(type_name); ct->_metatype = mprop.userType(); ct->_inexact = true; ct->_is_flag = mprop.isFlagType(); ct->_name = type_name; return ct; } // Parse a normalised C++ signature as a list of types. Chimera::Signature *Chimera::parse(const QByteArray &sig, const char *context) { // Extract the argument list. int start_idx = sig.indexOf('('); if (start_idx < 0) start_idx = 0; else ++start_idx; int end_idx = sig.lastIndexOf(')'); int len; if (end_idx < start_idx) len = -1; else len = end_idx - start_idx; // Parse each argument type. Chimera::Signature *parsed_sig = new Chimera::Signature(sig, true); if (len > 0) { QByteArray args_str = sig.mid(start_idx, len); // Check we haven't already done it. QList parsed_args = _previously_parsed.value(args_str); if (parsed_args.isEmpty()) { int i, arg_start, template_level; i = arg_start = template_level = 0; // Extract each argument allowing for commas in templates. for (;;) { char ch = (i < args_str.size() ? args_str.at(i) : '\0'); QByteArray arg; switch (ch) { case '<': ++template_level; break; case '>': --template_level; break; case '\0': arg = args_str.mid(arg_start, i - arg_start); break; case ',': if (template_level == 0) { arg = args_str.mid(arg_start, i - arg_start); arg_start = i + 1; } break; } if (!arg.isEmpty()) { Chimera *ct = new Chimera; if (!ct->parse_cpp_type(arg)) { delete ct; delete parsed_sig; qDeleteAll(parsed_args.constBegin(), parsed_args.constEnd()); raiseParseCppException(arg.constData(), context); return 0; } parsed_args.append(ct); if (ch == '\0') break; } ++i; } // Only parse once. _previously_parsed.insert(args_str, parsed_args); } parsed_sig->parsed_arguments = parsed_args; } return parsed_sig; } // Parses a C++ signature given as a Python tuple of types and an optional // name. Return 0 if there was an error. Chimera::Signature *Chimera::parse(PyObject *types, const char *name, const char *context) { if (!name) name = ""; Chimera::Signature *parsed_sig = new Chimera::Signature(name, false); parsed_sig->signature.append('('); parsed_sig->py_signature.append('['); for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(types); ++i) { PyObject *type = PyTuple_GET_ITEM(types, i); const Chimera *parsed_type = parse(type); if (!parsed_type) { delete parsed_sig; raiseParseException(type, context); return 0; } parsed_sig->parsed_arguments.append(parsed_type); if (i > 0) { parsed_sig->signature.append(','); parsed_sig->py_signature.append(", "); } parsed_sig->signature.append(parsed_type->name()); if (parsed_type->_py_type) parsed_sig->py_signature.append(parsed_type->_py_type->tp_name); else parsed_sig->py_signature.append(parsed_type->name()); } parsed_sig->signature.append(')'); parsed_sig->py_signature.append(']'); return parsed_sig; } // Raise an exception after parse() of a Python type has failed. void Chimera::raiseParseException(PyObject *type, const char *context) { if (PyType_Check(type)) { if (context) PyErr_Format(PyExc_TypeError, "Python type '%s' is not supported as %s type", ((PyTypeObject *)type)->tp_name, context); else PyErr_Format(PyExc_TypeError, "unknown Python type '%s'", ((PyTypeObject *)type)->tp_name); } else { const char *cpp_type_name = sipString_AsASCIIString(&type); if (cpp_type_name) { raiseParseCppException(cpp_type_name, context); Py_DECREF(type); } } } // Raise an exception after parse() of a C++ type has failed. void Chimera::raiseParseCppException(const char *type, const char *context) { if (context) PyErr_Format(PyExc_TypeError, "C++ type '%s' is not supported as %s type", type, context); else PyErr_Format(PyExc_TypeError, "unknown C++ type '%s'", type); } // Parse the given Python type object. bool Chimera::parse_py_type(PyTypeObject *type_obj) { const sipTypeDef *td = sipTypeFromPyTypeObject(type_obj); if (td) { if (sipTypeIsNamespace(td)) return false; _type = td; _name = sipTypeName(td); if (sipTypeIsClass(td)) set_flag(); if (sipTypeIsEnum(td) || isFlag()) { _metatype = QMetaType::Int; } else { // If there is no assignment helper then assume it is a // pointer-type. if (!get_assign_helper()) _name.append('*'); _metatype = QMetaType::type(_name.constData()); if (_metatype == 0) { // We need to handle QGraphicsItem differently, both because it // has its own class hierarchy and because we don't want // QGraphicsItemWidget to be seen as a QWidget or a QObject. // Without this reimplementations of QGraphicsItem.itemChange() // will have problems. static const char *norm_QGraphicsItem = "QGraphicsItem*"; static int QGraphicsItem_metatype = -1; if (QGraphicsItem_metatype < 0) QGraphicsItem_metatype = QMetaType::type( norm_QGraphicsItem); static const sipTypeDef *sipType_QGraphicsItem = 0; if (!sipType_QGraphicsItem) sipType_QGraphicsItem = sipFindType("QGraphicsItem"); if (QGraphicsItem_metatype >= 0 && sipType_QGraphicsItem) { PyTypeObject *py_QGraphicsItem = sipTypeAsPyTypeObject( sipType_QGraphicsItem); if (PyType_IsSubtype(type_obj, py_QGraphicsItem)) { _metatype = QGraphicsItem_metatype; _type = sipType_QGraphicsItem; _name = norm_QGraphicsItem; _py_type = py_QGraphicsItem; Py_INCREF((PyObject *)_py_type); return true; } } } // If it is a user type then it must be a type that SIP knows // about but was registered by Qt. if (_metatype < QMetaType::User) { if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject))) { _metatype = QMetaType::QObjectStar; } else if (!sipIsExactWrappedType((sipWrapperType *)type_obj)) { // It must be a (non-QObject, non-QWidget) Python sub-class // so make sure it gets wrapped in a PyQt_PyObject. _type = 0; _metatype = PyQt_PyObject::metatype; _name.clear(); } } } } else if (_registered_int_types.contains((PyObject *)type_obj)) { _metatype = QMetaType::Int; } #if PY_MAJOR_VERSION >= 3 else if (type_obj == &PyUnicode_Type) { _type = sipType_QString; _metatype = QMetaType::QString; } #else else if (type_obj == &PyString_Type || type_obj == &PyUnicode_Type) { // In this case we accept that the reverse conversion will result in an // object of a different type (i.e. a QString rather than a Python // string). _type = sipType_QString; _metatype = QMetaType::QString; } #endif else if (type_obj == &PyBool_Type) { _metatype = QMetaType::Bool; } #if PY_MAJOR_VERSION < 3 else if (type_obj == &PyInt_Type) { // We choose to map to a C++ int, even though a Python int is // potentially much larger, as it represents the most common usage in // Qt. However we will allow a larger type to be used if the context // is right. _metatype = QMetaType::Int; _inexact = true; } #endif else if (type_obj == &PyLong_Type) { // We choose to map to a C++ int for the same reasons as above and to // be consistent with Python3 where everything is a long object. If // this isn't appropriate the user can always use a string to specify // the exact C++ type they want. _metatype = QMetaType::Int; _inexact = true; } else if (type_obj == &PyFloat_Type) { _metatype = QMetaType::Double; } // Fallback to using a PyQt_PyObject. if (_metatype == UnknownType) _metatype = PyQt_PyObject::metatype; // If there is no name so far then use the meta-type name. if (_name.isEmpty()) _name = QMetaType::typeName(_metatype); _py_type = type_obj; Py_INCREF((PyObject *)_py_type); return true; } // Set the internal flag flag. void Chimera::set_flag() { if (qpycore_is_pyqt_class(_type)) _is_flag = ((pyqt5ClassTypeDef *)_type)->flags & 0x01; } // Update a C++ type so that any typedefs are resolved. QByteArray Chimera::resolve_types(const QByteArray &type) { // Split into a base type and a possible list of template arguments. QByteArray resolved = type.simplified(); // Get the raw type, ie. without any "const", "&" or "*". QByteArray raw_type; int original_raw_start; if (resolved.startsWith("const ")) original_raw_start = 6; else original_raw_start = 0; raw_type = resolved.mid(original_raw_start); while (raw_type.endsWith('&') || raw_type.endsWith('*') || raw_type.endsWith(' ')) raw_type.chop(1); int original_raw_len = raw_type.size(); if (original_raw_len == 0) return QByteArray(); // Get any template arguments. QList args; int tstart = raw_type.indexOf('<'); if (tstart >= 0) { // Make sure the template arguments are terminated. if (!raw_type.endsWith('>')) return QByteArray(); // Split the template arguments taking nested templates into account. int depth = 1, arg_start = tstart + 1; for (int i = arg_start; i < raw_type.size(); ++i) { int arg_end = -1; char ch = raw_type.at(i); if (ch == '<') { ++depth; } else if (ch == '>') { --depth; if (depth < 0) return QByteArray(); if (depth == 0) arg_end = i; } else if (ch == ',' && depth == 1) { arg_end = i; } if (arg_end >= 0) { QByteArray arg = resolve_types(raw_type.mid(arg_start, arg_end - arg_start)); if (arg.isEmpty()) return QByteArray(); args.append(arg); arg_start = arg_end + 1; } } if (depth != 0) return QByteArray(); // Remove the template arguments. raw_type.truncate(tstart); } // Expand any typedef. const char *base_type = sipResolveTypedef(raw_type.constData()); if (base_type) raw_type = base_type; // Add any (now resolved) template arguments. if (args.count() > 0) { raw_type.append('<'); for (QList::const_iterator it = args.begin();;) { raw_type.append(*it); if (++it == args.end()) break; raw_type.append(','); } if (raw_type.endsWith('>')) raw_type.append(' '); raw_type.append('>'); } // Replace the original raw type with the resolved one. resolved.replace(original_raw_start, original_raw_len, raw_type); return resolved; } // Parse the given C++ type name. bool Chimera::parse_cpp_type(const QByteArray &type) { _name = type; // Resolve any types. QByteArray resolved = resolve_types(type); if (resolved.isEmpty()) return false; // See if the type is known to Qt. _metatype = QMetaType::type(resolved.constData()); // If not then use the PyQt_PyObject wrapper. if (_metatype == UnknownType) _metatype = PyQt_PyObject::metatype; // See if the type (without a pointer) is known to SIP. bool is_ptr = resolved.endsWith('*'); if (is_ptr) { resolved.chop(1); if (resolved.endsWith('*')) return false; } _type = sipFindType(resolved.constData()); if (!_type) { // This is the only fundamental pointer type recognised by Qt. if (_metatype == QMetaType::VoidStar) return true; // This is 'int', 'bool', etc. if (_metatype != PyQt_PyObject::metatype && !is_ptr) return true; if ((resolved == "char" || resolved == "const char") && is_ptr) { // This is a special value meaning a (hopefully) '\0' terminated // string. _metatype = -1; return true; } // This is an explicit 'PyQt_PyObject'. if (resolved == "PyQt_PyObject" && !is_ptr) return true; return false; } if (sipTypeIsNamespace(_type)) return false; if (sipTypeIsClass(_type)) { set_flag(); if (is_ptr) { PyTypeObject *type_obj = sipTypeAsPyTypeObject(_type); if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject))) { _metatype = QMetaType::QObjectStar; } } } // We don't support pointers to enums. if (sipTypeIsEnum(_type) && is_ptr) _type = 0; if (sipTypeIsEnum(_type) || isFlag()) _metatype = QMetaType::Int; return true; } // Convert a Python object to C++ at a given address. This has a lot in common // with the method that converts to a QVariant. However, unlike that method, // we have no control over the size of the destination storage and so must // convert exactly as requested. bool Chimera::fromPyObject(PyObject *py, void *cpp) const { // Let any registered convertors have a go first. for (int i = 0; i < registeredToQVariantDataConvertors.count(); ++i) { bool ok; if (registeredToQVariantDataConvertors.at(i)(py, cpp, _metatype, &ok)) return ok; } int iserr = 0; PyErr_Clear(); switch (_metatype) { case QMetaType::Bool: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::Int: // Truncate it if necessary to fit into a C++ int. This will // automatically handle enums and flag types as Python knows how to // convert them to ints. #if PY_MAJOR_VERSION >= 3 *reinterpret_cast(cpp) = PyLong_AsLong(py); #else *reinterpret_cast(cpp) = PyInt_AsLong(py); #endif break; case QMetaType::UInt: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::Double: *reinterpret_cast(cpp) = PyFloat_AsDouble(py); break; case QMetaType::VoidStar: *reinterpret_cast(cpp) = sipConvertToVoidPtr(py); break; case QMetaType::Long: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::LongLong: *reinterpret_cast(cpp) = PyLong_AsLongLong(py); break; case QMetaType::Short: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::Char: if (SIPBytes_Check(py) && SIPBytes_GET_SIZE(py) == 1) *reinterpret_cast(cpp) = *SIPBytes_AS_STRING(py); else iserr = 1; break; case QMetaType::ULong: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::ULongLong: *reinterpret_cast(cpp) = static_cast(PyLong_AsUnsignedLongLong(py)); break; case QMetaType::UShort: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::UChar: if (SIPBytes_Check(py) && SIPBytes_GET_SIZE(py) == 1) *reinterpret_cast(cpp) = *SIPBytes_AS_STRING(py); else iserr = 1; break; case QMetaType::Float: *reinterpret_cast(cpp) = PyFloat_AsDouble(py); break; case QMetaType::QObjectStar: *reinterpret_cast(cpp) = sipForceConvertToType(py, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); break; case QMetaType::QVariantList: { QVariantList ql; if (to_QVariantList(py, ql)) *reinterpret_cast(cpp) = ql; else iserr = 1; break; } case QMetaType::QVariantMap: { QVariantMap qm; if (to_QVariantMap(py, qm)) *reinterpret_cast(cpp) = qm; else iserr = 1; break; } case QMetaType::QVariantHash: { QVariantHash qh; if (to_QVariantHash(py, qh)) *reinterpret_cast(cpp) = qh; else iserr = 1; break; } case -1: { char **ptr = reinterpret_cast(cpp); if (SIPBytes_Check(py)) *ptr = SIPBytes_AS_STRING(py); else if (py == Py_None) *ptr = 0; else iserr = 1; break; } default: if (_type) { if (_name.endsWith('*')) { // This must be a pointer-type. *reinterpret_cast(cpp) = sipForceConvertToType(py, _type, 0, SIP_NO_CONVERTORS, 0, &iserr); } else { // This must be a value-type. sipAssignFunc assign = get_assign_helper(); if (assign) { int state; void *value_class; value_class = sipForceConvertToType(py, _type, 0, SIP_NOT_NONE, &state, &iserr); if (!iserr) assign(cpp, 0, value_class); sipReleaseType(value_class, _type, state); } else { iserr = 1; } } } else { iserr = 1; } } if (iserr || PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "unable to convert a Python '%s' object to a C++ '%s' instance", Py_TYPE(py)->tp_name, _name.constData()); return false; } return true; } // Return the assignment helper for the type, if any. sipAssignFunc Chimera::get_assign_helper() const { if (sipTypeIsClass(_type)) return ((sipClassTypeDef *)_type)->ctd_assign; if (sipTypeIsMapped(_type)) return ((sipMappedTypeDef *)_type)->mtd_assign; return 0; } // Convert a Python object to a QVariant. Note: I think strict is now always // false. bool Chimera::fromPyObject(PyObject *py, QVariant *var, bool strict) const { // Deal with the simple case of wrapping the Python object rather than // converting it. if (_type != sipType_QVariant && _metatype == PyQt_PyObject::metatype) { // If the type was specified by a Python type (as opposed to // 'PyQt_PyObject') then check the object is an instance of it. if (_py_type && !PyObject_TypeCheck(py, _py_type)) return false; *var = keep_as_pyobject(py); return true; } // Let any registered convertors have a go first. for (int i = 0; i < registeredToQVariantConvertors.count(); ++i) { bool ok; if (registeredToQVariantConvertors.at(i)(py, *var, &ok)) return ok; } int iserr = 0, value_class_state; void *ptr_class, *value_class = 0; // Temporary storage for different types. union { bool tmp_bool; int tmp_int; unsigned int tmp_unsigned_int; double tmp_double; void *tmp_void_ptr; long tmp_long; qlonglong tmp_qlonglong; short tmp_short; char tmp_char; unsigned long tmp_unsigned_long; qulonglong tmp_qulonglong; unsigned short tmp_unsigned_short; unsigned char tmp_unsigned_char; float tmp_float; } tmp_storage; void *variant_data = &tmp_storage; PyErr_Clear(); QVariant variant; int metatype_used = _metatype; switch (_metatype) { case QMetaType::Bool: tmp_storage.tmp_bool = PyLong_AsLong(py); break; case QMetaType::Int: if (!_inexact || isEnum() || isFlag()) { // It must fit into a C++ int. #if PY_MAJOR_VERSION >= 3 tmp_storage.tmp_int = PyLong_AsLong(py); #else tmp_storage.tmp_int = PyInt_AsLong(py); #endif } else { // Fit it into the smallest C++ type we can. qlonglong qll = PyLong_AsLongLong(py); if (PyErr_Occurred()) { // Try again in case the value is unsigned and will fit with // the extra bit. PyErr_Clear(); qulonglong qull = static_cast(PyLong_AsUnsignedLongLong(py)); if (PyErr_Occurred()) { // It won't fit into any C++ type so pass it as a Python // object. PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = UnknownType; } else { tmp_storage.tmp_qulonglong = qull; metatype_used = QMetaType::ULongLong; } } else if ((qlonglong)(int)qll == qll) { // It fits in a C++ int. tmp_storage.tmp_int = qll; } else if ((qulonglong)(unsigned int)qll == (qulonglong)qll) { // The extra bit is enough for it to fit. tmp_storage.tmp_unsigned_int = qll; metatype_used = QMetaType::UInt; } else { // This fits. tmp_storage.tmp_qlonglong = qll; metatype_used = QMetaType::LongLong; } } break; case QMetaType::UInt: tmp_storage.tmp_unsigned_int = sipLong_AsUnsignedLong(py); break; case QMetaType::Double: tmp_storage.tmp_double = PyFloat_AsDouble(py); break; case QMetaType::VoidStar: tmp_storage.tmp_void_ptr = sipConvertToVoidPtr(py); break; case QMetaType::Long: tmp_storage.tmp_long = PyLong_AsLong(py); break; case QMetaType::LongLong: tmp_storage.tmp_qlonglong = PyLong_AsLongLong(py); break; case QMetaType::Short: tmp_storage.tmp_short = PyLong_AsLong(py); break; case QMetaType::Char: if (SIPBytes_Check(py) && SIPBytes_GET_SIZE(py) == 1) tmp_storage.tmp_char = *SIPBytes_AS_STRING(py); else iserr = 1; break; case QMetaType::ULong: tmp_storage.tmp_unsigned_long = sipLong_AsUnsignedLong(py); break; case QMetaType::ULongLong: tmp_storage.tmp_qulonglong = static_cast(PyLong_AsUnsignedLongLong(py)); break; case QMetaType::UShort: tmp_storage.tmp_unsigned_short = sipLong_AsUnsignedLong(py); break; case QMetaType::UChar: if (SIPBytes_Check(py) && SIPBytes_GET_SIZE(py) == 1) tmp_storage.tmp_unsigned_char = *SIPBytes_AS_STRING(py); else iserr = 1; break; case QMetaType::Float: tmp_storage.tmp_float = PyFloat_AsDouble(py); break; case QMetaType::QObjectStar: tmp_storage.tmp_void_ptr = sipForceConvertToType(py, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); break; case QMetaType::QVariantList: { QVariantList ql; if (to_QVariantList(py, ql)) { *var = QVariant(ql); metatype_used = UnknownType; } else { iserr = 1; } break; } case QMetaType::QVariantMap: { QVariantMap qm; if (to_QVariantMap(py, qm)) { *var = QVariant(qm); metatype_used = UnknownType; } else if (strict) { iserr = 1; } else { // Assume the failure is because the key was the wrong type. PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = UnknownType; } break; } case QMetaType::QVariantHash: { QVariantHash qh; if (to_QVariantHash(py, qh)) { *var = QVariant(qh); metatype_used = UnknownType; } else { iserr = 1; } break; } case -1: metatype_used = QMetaType::VoidStar; if (SIPBytes_Check(py)) tmp_storage.tmp_void_ptr = SIPBytes_AS_STRING(py); else if (py == Py_None) tmp_storage.tmp_void_ptr = 0; else iserr = 1; break; default: if (_type) { if (_name.endsWith('*')) { ptr_class = sipForceConvertToType(py, _type, 0, SIP_NO_CONVERTORS, 0, &iserr); variant_data = &ptr_class; } else { value_class = sipForceConvertToType(py, _type, 0, SIP_NOT_NONE, &value_class_state, &iserr); variant_data = value_class; } } else { // This is a class we don't recognise. iserr = 1; } } if (iserr || PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "unable to convert a Python '%s' object to a C++ '%s' instance", Py_TYPE(py)->tp_name, _name.constData()); iserr = 1; } else if (_type == sipType_QVariant) { *var = QVariant(*reinterpret_cast(variant_data)); } else if (metatype_used != UnknownType) { *var = QVariant(metatype_used, variant_data); } // Release any temporary value-class instance now that QVariant will have // made a copy. if (value_class) sipReleaseType(value_class, _type, value_class_state); return (iserr == 0); } // Convert a Python object to a QVariant based on the type of the object. QVariant Chimera::fromAnyPyObject(PyObject *py, int *is_err) { QVariant variant; if (py != Py_None) { Chimera ct; if (ct.parse_py_type(Py_TYPE(py))) { // If the type is a list or dict then try and convert it to a // QVariantList or QVariantMap respectively if possible. if (Py_TYPE(py) == &PyList_Type) ct._metatype = QMetaType::QVariantList; else if (Py_TYPE(py) == &PyDict_Type) ct._metatype = QMetaType::QVariantMap; // The conversion is non-strict in case the type was a dict and we // can't convert it to a QVariantMap. if (!ct.fromPyObject(py, &variant, false)) { *is_err = 1; } } else { *is_err = 1; } } return variant; } // Convert a QVariant to Python. PyObject *Chimera::toPyObject(const QVariant &var) const { if (_type != sipType_QVariant) { // For some reason (see qvariant_p.h) an invalid QVariant can be // returned when a QMetaType::Void is expected. if (!var.isValid() && _metatype == QMetaType::Void) { Py_INCREF(Py_None); return Py_None; } // A sanity check. if (_metatype != var.userType()) { PyErr_Format(PyExc_TypeError, "unable to convert a QVariant of type %d to a QMetaType of type %d", var.userType(), _metatype); return 0; } // Deal with the simple case of unwrapping a Python object rather than // converting it. if (_metatype == PyQt_PyObject::metatype) { PyQt_PyObject pyobj_wrapper = var.value(); if (!pyobj_wrapper.pyobject) { PyErr_SetString(PyExc_TypeError, "unable to convert a QVariant back to a Python object"); return 0; } Py_INCREF(pyobj_wrapper.pyobject); return pyobj_wrapper.pyobject; } } // Let any registered convertors have a go first. for (int i = 0; i < registeredFromQVariantConvertors.count(); ++i) { PyObject *py; if (registeredFromQVariantConvertors.at(i)(var, &py)) return py; } return toPyObject(const_cast(var.data())); } // Convert a C++ object at an arbitary address to Python. PyObject *Chimera::toPyObject(void *cpp) const { if (_metatype == PyQt_PyObject::metatype) { if (_type) { // SIP knows the type (therefore it isn't really wrapped in a // PyQt_PyObject) but it's not registered with Qt. if (_name.endsWith('*')) cpp = *reinterpret_cast(cpp); return sipConvertFromType(cpp, _type, 0); } else { // Otherwise unwrap the Python object. PyQt_PyObject *pyobj_wrapper = reinterpret_cast(cpp); if (!pyobj_wrapper->pyobject) { PyErr_SetString(PyExc_TypeError, "unable to convert a QVariant back to a Python object"); return 0; } Py_INCREF(pyobj_wrapper->pyobject); return pyobj_wrapper->pyobject; } } PyObject *py = 0; switch (_metatype) { case QMetaType::Bool: py = PyBool_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Int: if (isFlag()) { py = sipConvertFromType(cpp, _type, 0); } else if (isEnum()) { py = sipConvertFromEnum(*reinterpret_cast(cpp), _type); } else { py = SIPLong_FromLong(*reinterpret_cast(cpp)); } break; case QMetaType::UInt: { long ui = *reinterpret_cast(cpp); if (ui < 0) py = PyLong_FromUnsignedLong((unsigned long)ui); else py = SIPLong_FromLong(ui); break; } case QMetaType::Double: py = PyFloat_FromDouble(*reinterpret_cast(cpp)); break; case QMetaType::VoidStar: py = sipConvertFromVoidPtr(*reinterpret_cast(cpp)); break; case QMetaType::Long: py = SIPLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::LongLong: py = PyLong_FromLongLong(*reinterpret_cast(cpp)); break; case QMetaType::Short: py = SIPLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Char: case QMetaType::UChar: py = SIPBytes_FromStringAndSize(reinterpret_cast(cpp), 1); break; case QMetaType::ULong: py = PyLong_FromUnsignedLong(*reinterpret_cast(cpp)); break; case QMetaType::ULongLong: py = PyLong_FromUnsignedLongLong(*reinterpret_cast(cpp)); break; case QMetaType::UShort: py = SIPLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Float: py = PyFloat_FromDouble(*reinterpret_cast(cpp)); break; case QMetaType::QObjectStar: py = sipConvertFromType(*reinterpret_cast(cpp), sipType_QObject, 0); break; case QMetaType::QVariantList: { QVariantList *ql = reinterpret_cast(cpp); py = PyList_New(ql->size()); if (py) { for (int i = 0; i < ql->size(); ++i) { PyObject *val_obj = toAnyPyObject(ql->at(i)); if (!val_obj) { Py_DECREF(py); py = 0; break; } PyList_SET_ITEM(py, i, val_obj); } } break; } case QMetaType::QVariantMap: { py = PyDict_New(); if (py) { QVariantMap *qm = reinterpret_cast(cpp); for (QVariantMap::const_iterator it = qm->constBegin(); it != qm->constEnd(); ++it) if (!add_variant_to_dict(py, it.key(), it.value())) { Py_DECREF(py); py = 0; break; } } break; } case QMetaType::QVariantHash: { py = PyDict_New(); if (py) { QVariantHash *qh = reinterpret_cast(cpp); for (QVariantHash::const_iterator it = qh->constBegin(); it != qh->constEnd(); ++it) if (!add_variant_to_dict(py, it.key(), it.value())) { Py_DECREF(py); py = 0; break; } } break; } case -1: { char *s = *reinterpret_cast(cpp); if (s) { py = SIPBytes_FromString(s); } else { Py_INCREF(Py_None); py = Py_None; } break; } default: if (_type) { if (sipTypeIsEnum(_type)) { py = sipConvertFromEnum(*reinterpret_cast(cpp), _type); } else if (_name.endsWith('*')) { py = sipConvertFromType(*reinterpret_cast(cpp), _type, 0); } else { // Make a copy as it is a value type. void *copy = QMetaType::create(_metatype, cpp); py = sipConvertFromNewType(copy, _type, 0); if (!py) QMetaType::destroy(_metatype, copy); } } else if (_name.contains("_QMLTYPE_")) { // These correspond to objects defined in QML. We assume that they // are all sub-classes of QObject. If this proves not to be the // case then we will have to look at the first part of _name (and // possibly move this code the the QtQml module). py = sipConvertFromType(*reinterpret_cast(cpp), sipType_QObject, 0); } } if (!py) PyErr_Format(PyExc_TypeError, "unable to convert a C++ '%s' instance to a Python object", _name.constData()); return py; } // Add a QVariant to a Python dict with a QString key. bool Chimera::add_variant_to_dict(PyObject *dict, const QString &key_ref, const QVariant &val_ref) { QString *key = new QString(key_ref); PyObject *key_obj = sipConvertFromNewType(key, sipType_QString, 0); PyObject *val_obj = toAnyPyObject(val_ref); if (!key_obj || !val_obj || PyDict_SetItem(dict, key_obj, val_obj) < 0) { if (key_obj) Py_DECREF(key_obj); else delete key; Py_XDECREF(val_obj); return false; } Py_DECREF(key_obj); Py_DECREF(val_obj); return true; } // Convert a QVariant to a Python object based on the type of the object. PyObject *Chimera::toAnyPyObject(const QVariant &var) { if (!var.isValid()) { Py_INCREF(Py_None); return Py_None; } const char *type_name = var.typeName(); const sipTypeDef *td = sipFindType(type_name); Chimera *ct = new Chimera; ct->_type = td; ct->_name = type_name; ct->_metatype = var.userType(); if (td && sipTypeIsClass(td)) ct->set_flag(); PyObject *py = ct->toPyObject(var); delete ct; return py; } // Wrap a Python object in a QVariant without any conversion. QVariant Chimera::keep_as_pyobject(PyObject *py) { PyQt_PyObject pyobj_wrapper(py); return QVariant(PyQt_PyObject::metatype, &pyobj_wrapper); } // Convert a Python list object to a QVariantList and return true if there was // no error. bool Chimera::to_QVariantList(PyObject *py, QVariantList &cpp) const { Q_ASSERT(PyList_CheckExact(py)); for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(py); ++i) { PyObject *val_obj = PyList_GET_ITEM(py, i); if (!val_obj) return false; int val_state, iserr = 0; QVariant *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QVariant, 0, SIP_NOT_NONE, &val_state, &iserr)); if (iserr) return false; cpp.append(*val); sipReleaseType(val, sipType_QVariant, val_state); } return true; } // Convert a Python object to a QVariantMap and return true if there was no // error. bool Chimera::to_QVariantMap(PyObject *py, QVariantMap &cpp) const { Q_ASSERT(PyDict_CheckExact(py)); PyObject *key_obj, *val_obj; SIP_SSIZE_T i; i = 0; while (PyDict_Next(py, &i, &key_obj, &val_obj)) { int key_state, val_state, iserr = 0; QString *key = reinterpret_cast(sipForceConvertToType( key_obj, sipType_QString, NULL, SIP_NOT_NONE, &key_state, &iserr)); QVariant *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QVariant, NULL, SIP_NOT_NONE, &val_state, &iserr)); if (iserr) return false; cpp.insert(*key, *val); sipReleaseType(key, sipType_QString, key_state); sipReleaseType(val, sipType_QVariant, val_state); } return true; } // Convert a Python object to a QVariantHash and return true if there was no // error. bool Chimera::to_QVariantHash(PyObject *py, QVariantHash &cpp) const { Q_ASSERT(PyDict_CheckExact(py)); PyObject *key_obj, *val_obj; SIP_SSIZE_T i; i = 0; while (PyDict_Next(py, &i, &key_obj, &val_obj)) { int key_state, val_state, iserr = 0; QString *key = reinterpret_cast(sipForceConvertToType( key_obj, sipType_QString, NULL, SIP_NOT_NONE, &key_state, &iserr)); QVariant *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QVariant, NULL, SIP_NOT_NONE, &val_state, &iserr)); if (iserr) return false; cpp.insert(*key, *val); sipReleaseType(key, sipType_QString, key_state); sipReleaseType(val, sipType_QVariant, val_state); } return true; } // Convert a Python object to C++, allocating storage as necessary. Chimera::Storage *Chimera::fromPyObjectToStorage(PyObject *py) const { Chimera::Storage *st = new Chimera::Storage(this, py); if (!st->isValid()) { delete st; st = 0; } return st; } // Create the storage for a type. Chimera::Storage *Chimera::storageFactory() const { return new Chimera::Storage(this); } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_chimera.h0000644000076500000240000002272712613140040020610 0ustar philstaff00000000000000// This is the interface of the Chimera and related classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_CHIMERA_H #define _QPYCORE_CHIMERA_H #include #include #include #include #include #include #include "sipAPIQtCore.h" // This describes a type that can be understood by Python and C++ (specifically // Qt's meta-type system). The implementation assumes that the GIL is held. class Chimera { public: // Construct a copy. Chimera(const Chimera &other); // Destroy the type. ~Chimera(); // Parses a Python object as a type. Return 0 if there was an error. static const Chimera *parse(PyObject *obj); // Parses a Qt meta-property as a type. Return 0 if there was an error. static const Chimera *parse(const QMetaProperty &mprop); // Parses a C++ type name as a type. Return 0 if there was an error. static const Chimera *parse(const QByteArray &name); // The registered QVariant to PyObject convertors. typedef bool (*FromQVariantConvertorFn)(const QVariant &, PyObject **); typedef QList FromQVariantConvertors; static FromQVariantConvertors registeredFromQVariantConvertors; // Register a function for converting a Python object to a QVariant. typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); typedef QList ToQVariantConvertors; static ToQVariantConvertors registeredToQVariantConvertors; // Register a function for converting a Python object to QVariant data. typedef bool (*ToQVariantDataConvertorFn)(PyObject *, void *, int, bool *); typedef QList ToQVariantDataConvertors; static ToQVariantDataConvertors registeredToQVariantDataConvertors; class Signature { public: // Destroy the signature and any result type objects. ~Signature(); // The list of parsed argument types. QList parsed_arguments; // The optional parsed result type. const Chimera *result; // The original normalised signature (possibly including a method name // but excluding a return type). QByteArray signature; // The signature as declared by the user for use in exceptions. QByteArray py_signature; // The revision of a slot. Putting this here is an awful hack. int revision; // Return the parsed signature wrapped in a Python object. Ownership // of the signature is passed to the Python object. Return 0 if there // was an error. static PyObject *toPyObject(Signature *parsed_signature); // Return the parsed signature extracted from a Python object. static Signature *fromPyObject(PyObject *py); // Return the name from the signature. QByteArray name() const {return name(signature);} // Return the name from a signature. static QByteArray name(const QByteArray &signature); // Return the arguments from the signature. QByteArray arguments() const {return arguments(signature);} // Return the arguments from a signature. static QByteArray arguments(const QByteArray &signature); private: friend class Chimera; // Set if the parsed arguments are cached. bool _cached; Signature(const QByteArray &sig, bool cached) : result(0), signature(sig), py_signature(sig), _cached(cached) {} Signature(const Signature &); Signature &operator=(const Signature &); }; // Parses a normalised C++ signature. Return 0 if there was an error. static Signature *parse(const QByteArray &sig, const char *context); // Parses a C++ signature given as a Python tuple of types and an optional // name. Return 0 if there was an error. static Signature *parse(PyObject *types, const char *name, const char *context); // Raise an exception after parse() has failed. static void raiseParseException(PyObject *type, const char *context = 0); class Storage { public: // Destroy the type and any temporary data. ~Storage(); // Return the parsed type. const Chimera *type() const {return _parsed_type;} // Return the address of the stored value. void *address(); // Convert the stored value to a Python object. PyObject *toPyObject() const; private: friend class Chimera; // The parsed type. const Chimera *_parsed_type; // The storage for fundamental and value types. QVariant _value_storage; // The storage for pointer types. void *_ptr_storage; // The state of any temporary stored data. int _tmp_state; // Set if the value is valid. bool _valid; Storage(const Chimera *ct); Storage(const Chimera *ct, PyObject *py); // Return true if the value is valid. bool isValid() const {return _valid;} // Return true is the value is a pointer type. bool isPointerType() const; Storage(const Storage &); Storage &operator=(const Storage &); }; // Convert a Python object to C++, allocating storage as necessary. Return // 0 if there was an error. Storage *fromPyObjectToStorage(PyObject *py) const; // Create a storage instance for this type. Storage *storageFactory() const; // Convert a Python object to C++ at a given address. Return false if // there was an error. bool fromPyObject(PyObject *py, void *cpp) const; // Convert a Python object to a QVariant. Return false if there was an // error. bool fromPyObject(PyObject *py, QVariant *var, bool strict = true) const; // Convert a Python object to a QVariant based on the type of the object. static QVariant fromAnyPyObject(PyObject *py, int *is_err); // Convert a QVariant to a Python object. PyObject *toPyObject(const QVariant &var) const; // Convert a C++ object at an arbitary address to a Python object. PyObject *toPyObject(void *cpp) const; // Convert a QVariant to a Python object based on the type of the object. static PyObject *toAnyPyObject(const QVariant &var); // Returns the Qt meta-type id. It will be QMetaType::UnknownType if the // type isn't known to Qt's meta-type system. int metatype() const {return _metatype;} // Returns a borrowed reference to the Python type object that was used to // define the type (if any). PyObject *py_type() const {return (PyObject *)_py_type;} // Returns the C++ name of the type. const QByteArray &name() const {return _name;} // Returns true if the type is an enum. bool isEnum() const {return (_type && sipTypeIsEnum(_type));} // Returns true if the type is a flag. bool isFlag() const {return _is_flag;} // Returns the SIP generated type structure. const sipTypeDef *typeDef() const {return _type;} // Register a type as an int type. static void registerIntType(PyObject *int_type); private: // The generated type structure. This may be 0 if the type is known by Qt // but hasn't been wrapped. const sipTypeDef *_type; // The Python type object if a Python type (rather than a C++ type string) // was given. PyTypeObject *_py_type; // The Qt meta-type. This will always be valid but may refer to the // PyObject wrapper if the underlying type isn't known to Qt. int _metatype; // Set if the meta-type needn't be exact. bool _inexact; // Set if the the type is derived from QFlags. bool _is_flag; // The C++ name of the type. QByteArray _name; // The registered int types. static QList _registered_int_types; // The cache of previously parsed argument type lists. static QHash > _previously_parsed; Chimera(); bool parse_cpp_type(const QByteArray &type); bool parse_py_type(PyTypeObject *type_obj); sipAssignFunc get_assign_helper() const; void set_flag(); bool to_QVariantList(PyObject *py, QVariantList &cpp) const; bool to_QVariantMap(PyObject *py, QVariantMap &cpp) const; bool to_QVariantHash(PyObject *py, QVariantHash &cpp) const; static bool add_variant_to_dict(PyObject *dict, const QString &key_ref, const QVariant &val_ref); static void raiseParseCppException(const char *type, const char *context = 0); static QVariant keep_as_pyobject(PyObject *py); static int extract_raw_type(const QByteArray &type, QByteArray &raw_type); static QByteArray resolve_types(const QByteArray &type); Chimera &operator=(const Chimera &); }; #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_chimera_signature.cpp0000644000076500000240000000603612613140040023217 0ustar philstaff00000000000000// This is the implementation of the Chimera::Signature class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_chimera.h" // Forward declarations. #if defined(SIP_USE_PYCAPSULE) extern "C" {static void Signature_delete(PyObject *cap);} #else extern "C" {static void Signature_delete(void *sig);} #endif // Destroy the signature and any type objects. Chimera::Signature::~Signature() { if (!_cached) qDeleteAll(parsed_arguments.constBegin(), parsed_arguments.constEnd()); if (result) delete result; } // Return the parsed signature wrapped in a Python object. PyObject *Chimera::Signature::toPyObject(Chimera::Signature *parsed_signature) { #if defined(SIP_USE_PYCAPSULE) PyObject *py = PyCapsule_New(parsed_signature, NULL, Signature_delete); #else PyObject *py = PyCObject_FromVoidPtr(parsed_signature, Signature_delete); #endif if (!py) delete parsed_signature; return py; } // Return the parsed signature extracted from a Python object. Chimera::Signature *Chimera::Signature::fromPyObject(PyObject *py) { #if defined(SIP_USE_PYCAPSULE) return reinterpret_cast(PyCapsule_GetPointer(py, NULL)); #else return reinterpret_cast(PyCObject_AsVoidPtr(py)); #endif } // Return the name from a signature. QByteArray Chimera::Signature::name(const QByteArray &signature) { QByteArray nm = signature; int idx = signature.indexOf('('); if (idx >= 0) nm.truncate(idx); return nm; } // Return the arguments from a signature. QByteArray Chimera::Signature::arguments(const QByteArray &signature) { QByteArray args; int oparen = signature.indexOf('('); int cparen = signature.lastIndexOf(')'); if (oparen >= 0 && cparen >= 0) args = signature.mid(oparen, cparen - oparen + 1); return args; } #if defined(SIP_USE_PYCAPSULE) // The PyCapsule destructor for the Chimera::Signature type. static void Signature_delete(PyObject *cap) { delete reinterpret_cast( PyCapsule_GetPointer(cap, NULL)); } #else // The PyCObject destructor for the Chimera::Signature type. static void Signature_delete(void *sig) { delete reinterpret_cast(sig); } #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_chimera_storage.cpp0000644000076500000240000000642012613140040022657 0ustar philstaff00000000000000// This is the implementation of the Chimera::Storage class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtpyobject.h" #include "sipAPIQtCore.h" // Create a new storage instance containing a converted Python object. Chimera::Storage::Storage(const Chimera *ct, PyObject *py) : _parsed_type(ct), _ptr_storage(0), _tmp_state(0) { // We convert to a QVariant even for pointer types because this has the // side-effect of ensuring the object doesn't get garbage collected. _valid = _parsed_type->fromPyObject(py, &_value_storage); if (isPointerType()) { int is_err = 0; _ptr_storage = sipForceConvertToType(py, _parsed_type->typeDef(), 0, 0, &_tmp_state, &is_err); if (is_err) { _value_storage = QVariant(); _valid = false; } } } // Create a new storage instance. Chimera::Storage::Storage(const Chimera *ct) : _parsed_type(ct), _ptr_storage(0), _tmp_state(0), _valid(true) { if (!isPointerType()) { // Create a default fundamental or value type. _value_storage = QVariant(_parsed_type->metatype(), (const void *)0); } } // Destroy the storage and any temporary value. Chimera::Storage::~Storage() { if (_tmp_state) sipReleaseType(_ptr_storage, _parsed_type->typeDef(), _tmp_state); } // Return the address of the storage. void *Chimera::Storage::address() { if (isPointerType()) { if (_parsed_type->name().endsWith('*')) return &_ptr_storage; return _ptr_storage; } if (_parsed_type->typeDef() == sipType_QVariant) return &_value_storage; return _value_storage.data(); } // Return true if the value is a pointer type. bool Chimera::Storage::isPointerType() const { return (_parsed_type->metatype() == PyQt_PyObject::metatype && _parsed_type->typeDef()); } // Convert the stored value to a Python object. PyObject *Chimera::Storage::toPyObject() const { // Pointer-class and mapped types are not stored in the QVariant. if (isPointerType()) { if (!_ptr_storage) { Py_INCREF(Py_None); return Py_None; } return sipConvertFromType(_ptr_storage, _parsed_type->typeDef(), 0); } if (_parsed_type->typeDef() == sipType_QVariant) return Chimera::toAnyPyObject(_value_storage); return _parsed_type->toPyObject(_value_storage); } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_classinfo.cpp0000644000076500000240000000361112613140040021503 0ustar philstaff00000000000000// This contains the implementation of the Q_CLASSINFO support. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_api.h" #include "qpycore_classinfo.h" static QMultiHash class_info_hash; // Add the given name/value pair to the current class info hash. PyObject *qpycore_ClassInfo(const char *name, const char *value) { PyFrameObject *frame = PyEval_GetFrame(); // We need the frame we were called from, not the current one. if (frame) frame = frame->f_back; if (!frame) { PyErr_SetString(PyExc_RuntimeError, "no current frame"); return 0; } class_info_hash.insert(frame, ClassInfo(QByteArray(name), QByteArray(value))); Py_INCREF(Py_None); return Py_None; } // Return the current class info list. QList qpycore_get_class_info_list() { PyFrameObject *frame = PyEval_GetFrame(); QList class_info_list = class_info_hash.values(frame); class_info_hash.remove(frame); return class_info_list; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_classinfo.h0000644000076500000240000000215412613140040021151 0ustar philstaff00000000000000// This defines the interfaces to the Q_CLASSINFO support. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_CLASSINFO_H #define _QPYCORE_CLASSINFO_H #include #include #include typedef QPair ClassInfo; QList qpycore_get_class_info_list(); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_decorators.cpp0000644000076500000240000001057312613140040021674 0ustar philstaff00000000000000// This is the implementation of the pyqtSlot decorator. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" // Forward declarations. extern "C" {static PyObject *decorator(PyObject *self, PyObject *f);} // This implements the pyqtSlot decorator. PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds) { const char *name_str = 0; PyObject *res_obj = 0; int revision = 0; static const char *kwlist[] = {"name", "result", "revision", 0}; static PyObject *no_args = 0; if (!no_args) { no_args = PyTuple_New(0); if (!no_args) return 0; } if (!PyArg_ParseTupleAndKeywords(no_args, kwds, "|sOi:pyqtSlot", const_cast(kwlist), &name_str, &res_obj, &revision)) return 0; Chimera::Signature *parsed_sig = Chimera::parse(args, name_str, "a pyqtSlot type argument"); if (!parsed_sig) return 0; // Sticking the revision here is an awful hack, but it saves creating // another data structure wrapped in a capsule. parsed_sig->revision = revision; // Parse any result type. if (res_obj) { parsed_sig->result = Chimera::parse(res_obj); if (!parsed_sig->result) { Chimera::raiseParseException(res_obj, "a pyqtSlot result"); delete parsed_sig; return 0; } } // Wrap the parsed signature in a Python object. PyObject *sig_obj = Chimera::Signature::toPyObject(parsed_sig); if (!sig_obj) return 0; // Create the decorator function itself. We stash the arguments in "self". // This may be an abuse, but it seems to be Ok. static PyMethodDef deco_method = { SIP_MLNAME_CAST("_deco"), decorator, METH_O, 0 }; PyObject *obj = PyCFunction_New(&deco_method, sig_obj); Py_DECREF(sig_obj); return obj; } // This is the decorator function that saves the C++ signature as a function // attribute. static PyObject *decorator(PyObject *self, PyObject *f) { Chimera::Signature *parsed_sig = Chimera::Signature::fromPyObject(self); const QByteArray &sig = parsed_sig->signature; // Use the function name if there isn't already one. if (sig.startsWith('(')) { // Get the function's name. PyObject *nobj = PyObject_GetAttr(f, qpycore_dunder_name); if (!nobj) return 0; PyObject *ascii_obj = nobj; const char *ascii = sipString_AsASCIIString(&ascii_obj); Py_DECREF(nobj); if (!ascii) return 0; parsed_sig->signature.prepend(ascii); parsed_sig->py_signature.prepend(ascii); Py_DECREF(ascii_obj); } // See if the function has already been decorated. PyObject *decorations = PyObject_GetAttr(f, qpycore_dunder_pyqtsignature); int rc; if (decorations) { // Insert the new decoration at the head of the existing ones so that // the list order matches the order they appear in the script. rc = PyList_Insert(decorations, 0, self); } else { PyErr_Clear(); decorations = PyList_New(1); if (!decorations) return 0; Py_INCREF(self); PyList_SET_ITEM(decorations, 0, self); // Save the new decoration. rc = PyObject_SetAttr(f, qpycore_dunder_pyqtsignature, decorations); } Py_DECREF(decorations); if (rc < 0) return 0; // Return the function. Py_INCREF(f); return f; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_enums_flags.cpp0000644000076500000240000000713612613140040022033 0ustar philstaff00000000000000// This contains the implementation of the Q_ENUMS and Q_FLAGS support. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_chimera.h" #include "qpycore_enums_flags.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *parse_enums_flags(PyObject *args, bool flags); // The enums and flags defined in each frame. static QMultiHash enums_flags_hash; // Add the given Q_ENUMS() arguments to the current enums/flags hash. PyObject *qpycore_Enums(PyObject *args) { return parse_enums_flags(args, false); } // Add the given Q_FLAGS() arguments to the current enums/flags hash. PyObject *qpycore_Flags(PyObject *args) { return parse_enums_flags(args, true); } // Add the given Q_ENUMS() or Q_FLAGS() arguments to the current enums/flags // hash. static PyObject *parse_enums_flags(PyObject *args, bool flags) { PyFrameObject *frame = PyEval_GetFrame(); // We need the frame we were called from, not the current one. if (frame) frame = frame->f_back; if (!frame) { PyErr_SetString(PyExc_RuntimeError, "no current frame"); return 0; } // Each argument is a separate enum/flag. for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(args); ++i) { PyObject *arg = PyTuple_GET_ITEM(args, i); // Check the argument's type is type. if (!PyType_Check(arg)) { PyErr_Format(PyExc_TypeError, "arguments to %s() must be type objects", (flags ? "Q_FLAGS" : "Q_ENUMS")); return 0; } // Create the basic enum/flag. EnumsFlags enums_flags(((PyTypeObject *)arg)->tp_name, flags); // Go through the type dictionary looking for int attributes. SIP_SSIZE_T pos = 0; PyObject *key, *value; while (PyDict_Next(((PyTypeObject *)arg)->tp_dict, &pos, &key, &value)) { PyErr_Clear(); int i_value = SIPLong_AsLong(value); if (PyErr_Occurred()) continue; const char *s_key = sipString_AsASCIIString(&key); if (!s_key) continue; enums_flags.keys.insert(s_key, i_value); Py_DECREF(key); } enums_flags_hash.insert(frame, enums_flags); Chimera::registerIntType(arg); } // Make sure there are no exceptions left after failed value conversions. PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } // Return the current enums/flags list. QList qpycore_get_enums_flags_list() { PyFrameObject *frame = PyEval_GetFrame(); QList enums_flags_list = enums_flags_hash.values(frame); enums_flags_hash.remove(frame); return enums_flags_list; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_enums_flags.h0000644000076500000240000000240312613140040021470 0ustar philstaff00000000000000// This defines the interfaces to the Q_ENUMS and Q_FLAGS support. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_ENUMS_FLAGS_H #define _QPYCORE_ENUMS_FLAGS_H #include #include #include struct EnumsFlags { EnumsFlags(const char *name_, bool isFlag_) : name(name_), isFlag(isFlag_) { } QByteArray name; bool isFlag; QHash keys; }; QList qpycore_get_enums_flags_list(); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_init.cpp0000644000076500000240000000626612613140040020476 0ustar philstaff00000000000000// This is the initialisation support code for the QtCore module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_public_api.h" #include "qpycore_pyqtslotproxy.h" #include "qpycore_qobject_helpers.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // Perform any required initialisation. void qpycore_init() { // Initialise the meta-type. qpycore_pyqtWrapperType_Type.tp_base = sipWrapperType_Type; if (PyType_Ready(&qpycore_pyqtWrapperType_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtWrapperType type"); // Register the meta-type. if (sipRegisterPyType((PyTypeObject *)&qpycore_pyqtWrapperType_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to register pyqtWrapperType type"); // Export the private helpers, ie. those that should not be used by // external handwritten code. sipExportSymbol("qtcore_qt_metaobject", (void *)qpycore_qobject_metaobject); sipExportSymbol("qtcore_qt_metacall", (void *)qpycore_qobject_qt_metacall); sipExportSymbol("qtcore_qt_metacast", (void *)qpycore_qobject_qt_metacast); sipExportSymbol("qtcore_qobject_sender", (void *)PyQtSlotProxy::lastSender); // Export the public API. sipExportSymbol("pyqt5_err_print", (void *)pyqt5_err_print); sipExportSymbol("pyqt5_from_argv_list", (void *)pyqt5_from_argv_list); sipExportSymbol("pyqt5_from_qvariant_by_type", (void *)pyqt5_from_qvariant_by_type); sipExportSymbol("pyqt5_get_connection_parts", (void *)pyqt5_get_connection_parts); sipExportSymbol("pyqt5_get_pyqtsignal_parts", (void *)pyqt5_get_pyqtsignal_parts); sipExportSymbol("pyqt5_get_pyqtslot_parts", (void *)pyqt5_get_pyqtslot_parts); sipExportSymbol("pyqt5_get_qmetaobject", (void *)pyqt5_get_qmetaobject); sipExportSymbol("pyqt5_get_signal_signature", (void *)pyqt5_get_signal_signature); sipExportSymbol("pyqt5_register_from_qvariant_convertor", (void *)pyqt5_register_from_qvariant_convertor); sipExportSymbol("pyqt5_register_to_qvariant_convertor", (void *)pyqt5_register_to_qvariant_convertor); sipExportSymbol("pyqt5_register_to_qvariant_data_convertor", (void *)pyqt5_register_to_qvariant_data_convertor); sipExportSymbol("pyqt5_update_argv_list", (void *)pyqt5_update_argv_list); } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_misc.cpp0000644000076500000240000000324412613140040020457 0ustar philstaff00000000000000// This contains the implementation of various odds and ends. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_misc.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // Return true if the given type (which must be a class) was wrapped for PyQt5. bool qpycore_is_pyqt_class(const sipTypeDef *td) { return PyType_IsSubtype(Py_TYPE(sipTypeAsPyTypeObject(td)), &qpycore_pyqtWrapperType_Type); } #if PY_MAJOR_VERSION >= 3 // Python v3 doesn't have the Unicode equivalent of Python v2's // PyString_ConcatAndDel(). void qpycore_Unicode_ConcatAndDel(PyObject **string, PyObject *newpart) { PyObject *old = *string; if (old) { if (newpart) *string = PyUnicode_Concat(old, newpart); else *string = 0; Py_DECREF(old); } Py_XDECREF(newpart); } #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_misc.h0000644000076500000240000000204512613140040020122 0ustar philstaff00000000000000// This defines the interfaces to various odd and ends. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_MISC_H #define _QPYCORE_MISC_H #include #include "sipAPIQtCore.h" bool qpycore_is_pyqt_class(const sipTypeDef *td); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_namespace.h0000644000076500000240000000216012613140040021121 0ustar philstaff00000000000000// This ensures that the Qt namespace macros are defined irrespective of the // version of Qt being used. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_NAMESPACE_H #define _QPYCORE_NAMESPACE_H #include #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_objectified_strings.h0000644000076500000240000000215612613140040023212 0ustar philstaff00000000000000// This declares a number of objectified string objects. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_OBJECTIFIED_STRINGS_H #define _QPYCORE_OBJECTIFIED_STRINGS_H #include // __name__ extern PyObject *qpycore_dunder_name; // __pyqtSignature__ extern PyObject *qpycore_dunder_pyqtsignature; #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_post_init.cpp.in0000644000076500000240000001242512613140040022142 0ustar philstaff00000000000000// This is the post-initialisation support code for the QtCore module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtmethodproxy.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslotproxy.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // The objectified strings. PyObject *qpycore_dunder_name; PyObject *qpycore_dunder_pyqtsignature; // Perform any required post-initialisation. void qpycore_post_init(PyObject *module_dict) { // Disable the automatic destruction of C++ objects. sipSetDestroyOnExit(0); // Add the meta-type to the module dictionary. if (PyDict_SetItemString(module_dict, "pyqtWrapperType", (PyObject *)&qpycore_pyqtWrapperType_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtWrapperType type"); // Initialise the pyqtProperty type and add it to the module dictionary. if (PyType_Ready(&qpycore_pyqtProperty_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtProperty type"); if (PyDict_SetItemString(module_dict, "pyqtProperty", (PyObject *)&qpycore_pyqtProperty_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtProperty type"); // Initialise the pyqtSignal type and add it to the module dictionary. if (PyType_Ready(&qpycore_pyqtSignal_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtSignal type"); if (PyDict_SetItemString(module_dict, "pyqtSignal", (PyObject *)&qpycore_pyqtSignal_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtSignal type"); // Initialise the pyqtBoundSignal type and add it to the module dictionary. if (PyType_Ready(&qpycore_pyqtBoundSignal_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtBoundSignal type"); if (PyDict_SetItemString(module_dict, "pyqtBoundSignal", (PyObject *)&qpycore_pyqtBoundSignal_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtBoundSignal type"); // Initialise the private pyqtMethodProxy type. if (PyType_Ready(&qpycore_pyqtMethodProxy_Type) < 0) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtMethodProxy type"); // Register the C++ type that wraps Python objects. PyQt_PyObject::metatype = qRegisterMetaType("PyQt_PyObject"); qRegisterMetaTypeStreamOperators("PyQt_PyObject"); // Register the lazy attribute getter. if (sipRegisterAttributeGetter(sipType_QObject, qpycore_get_lazy_attr) < 0) Py_FatalError("PyQt5.QtCore: Failed to register attribute getter"); // Objectify some strings. #if PY_MAJOR_VERSION >= 3 qpycore_dunder_pyqtsignature = PyUnicode_FromString("__pyqtSignature__"); #else qpycore_dunder_pyqtsignature = PyString_FromString("__pyqtSignature__"); #endif if (!qpycore_dunder_pyqtsignature) Py_FatalError("PyQt5.QtCore: Failed to objectify '__pyqtSignature__'"); #if PY_MAJOR_VERSION >= 3 qpycore_dunder_name = PyUnicode_FromString("__name__"); #else qpycore_dunder_name = PyString_FromString("__name__"); #endif if (!qpycore_dunder_name) Py_FatalError("PyQt5.QtCore: Failed to objectify '__name__'"); // Embed the configuration. PyObject *config = PyDict_New(); if (!config) Py_FatalError("PyQt5.QtCore: Failed to create PYQT_CONFIGURATION dict"); #if PY_MAJOR_VERSION >= 3 PyObject *sip_flags = PyUnicode_FromString("@@PYQT_SIP_FLAGS@@"); #else PyObject *sip_flags = PyString_FromString("@@PYQT_SIP_FLAGS@@"); #endif if (!sip_flags) Py_FatalError("PyQt5.QtCore: Failed to create PYQT_CONFIGURATION.sip_flags"); if (PyDict_SetItemString(config, "sip_flags", sip_flags) < 0) Py_FatalError("PyQt5.QtCore: Failed to set PYQT_CONFIGURATION.sip_flags"); Py_DECREF(sip_flags); if (PyDict_SetItemString(module_dict, "PYQT_CONFIGURATION", config) < 0) Py_FatalError("PyQt5.QtCore: Failed to set PYQT_CONFIGURATION dict"); Py_DECREF(config); // Create the mutex that serialises access to the slot proxies. We don't // use a statically initialised one because Qt needs some things to be // initialised first (at least for Windows) and this is the only way to // guarantee things are done in the right order. PyQtSlotProxy::mutex = new QMutex(QMutex::Recursive); } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_public_api.cpp0000644000076500000240000002636512613140040021644 0ustar philstaff00000000000000// This implements the public API provided by PyQt to external packages. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_objectified_strings.h" #include "qpycore_public_api.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtsignal.h" #include "qpycore_types.h" // A replacement for PyErr_Print() that passes the exception to qFatal(). void pyqt5_err_print() { #if PY_MAJOR_VERSION >= 3 #define CONST_CAST(s) s #else #define CONST_CAST(s) const_cast(s) #endif // Save the exception in case of new exceptions raised here. PyObject *exception, *value, *traceback; PyErr_Fetch(&exception, &value, &traceback); // Get the standard exception hook. static PyObject *original_hook = 0; if (!original_hook) original_hook = PySys_GetObject(CONST_CAST("__excepthook__")); // See if the application has installed its own hook. PyObject *hook = PySys_GetObject(CONST_CAST("excepthook")); if (hook != original_hook) { // This will invoke the application's hook. PyErr_Restore(exception, value, traceback); PyErr_Print(); } else { // Make sure we have the StringIO ctor. static PyObject *stringio_ctor = 0; if (!stringio_ctor) { PyObject *io_module; #if PY_MAJOR_VERSION >= 3 io_module = PyImport_ImportModule("io"); #else PyErr_Clear(); io_module = PyImport_ImportModule("cStringIO"); if (!io_module) { PyErr_Clear(); io_module = PyImport_ImportModule("StringIO"); } #endif if (io_module) { stringio_ctor = PyObject_GetAttrString(io_module, "StringIO"); Py_DECREF(io_module); } } // Create a StringIO object and replace sys.stderr with it. PyObject *new_stderr = 0, *old_stderr; if (stringio_ctor) { old_stderr = PySys_GetObject(CONST_CAST("stderr")); if (old_stderr) { new_stderr = PyObject_CallObject(stringio_ctor, NULL); if (new_stderr) { if (PySys_SetObject(CONST_CAST("stderr"), new_stderr) < 0) { Py_DECREF(new_stderr); new_stderr = 0; } } } } // Restore the exception and print it. PyErr_Restore(exception, value, traceback); PyErr_Print(); // This will be passed to qFatal() if we can't get the detailed text. QByteArray message("Unhandled Python exception"); // Extract the detailed text if it was redirected. if (new_stderr) { // Restore sys.stderr. PySys_SetObject(CONST_CAST("stderr"), old_stderr); // Extract the text. PyObject *text = PyObject_CallMethod(new_stderr, CONST_CAST("getvalue"), NULL); if (text) { // Strip the text as qFatal() likes to add a newline. PyObject *stripped = PyObject_CallMethod(text, CONST_CAST("strip"), NULL); if (stripped) { Py_DECREF(text); text = stripped; } // Encode the text using the encoding of the original // sys.stderr. #if PY_MAJOR_VERSION >= 3 PyObject *encoding = PyObject_GetAttrString(old_stderr, "encoding"); if (encoding) { PyObject *encoding_bytes = PyUnicode_AsUTF8String( encoding); if (encoding_bytes) { Q_ASSERT(PyBytes_Check(encoding_bytes)); PyObject *bytes = PyUnicode_AsEncodedString(text, PyBytes_AS_STRING(encoding_bytes), "strict"); if (bytes) { Q_ASSERT(PyBytes_Check(bytes)); message = QByteArray(PyBytes_AS_STRING(bytes), PyBytes_GET_SIZE(bytes)); Py_DECREF(bytes); } Py_DECREF(encoding_bytes); } Py_DECREF(encoding); } #else char *buffer; SIP_SSIZE_T length; if (PyString_AsStringAndSize(text, &buffer, &length) == 0) message = QByteArray(buffer, length); #endif Py_DECREF(text); } Py_DECREF(new_stderr); } // qFatal() may not call abort. Py_BEGIN_ALLOW_THREADS qFatal("%s", message.data()); Py_END_ALLOW_THREADS } } // Convert a Python argv list to a conventional C argc count and argv array. char **pyqt5_from_argv_list(PyObject *argv_list, int &argc) { argc = PyList_GET_SIZE(argv_list); // Allocate space for two copies of the argument pointers, plus the // terminating NULL. char **argv = new char *[2 * (argc + 1)]; // Convert the list. for (int a = 0; a < argc; ++a) { PyObject *arg_obj = PyList_GET_ITEM(argv_list, a); char *arg; if (PyUnicode_Check(arg_obj)) { QByteArray ba_arg = qpycore_PyObject_AsQString(arg_obj).toLocal8Bit(); arg = qstrdup(ba_arg.constData()); } else if (SIPBytes_Check(arg_obj)) { arg = qstrdup(SIPBytes_AS_STRING(arg_obj)); } else { arg = const_cast("invalid"); } argv[a] = argv[a + argc + 1] = arg; } argv[argc + argc + 1] = argv[argc] = NULL; return argv; } // Get the receiver object and slot signature for a connection. sipErrorState pyqt5_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) { static QHash cache; QByteArray key(signal_signature); const Chimera::Signature *parsed_signal_signature = cache.value(key); if (!parsed_signal_signature) { parsed_signal_signature = Chimera::parse(key, "a signal argument"); if (!parsed_signal_signature) return sipErrorFail; cache.insert(key, parsed_signal_signature); } return qpycore_get_receiver_slot_signature(slot, transmitter, parsed_signal_signature, single_shot, receiver, slot_signature); } // Get the transmitter object and signal signature from a bound signal. sipErrorState pyqt5_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature) { if (PyObject_TypeCheck(signal, &qpycore_pyqtBoundSignal_Type)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)signal; *transmitter = bs->bound_qobject; signal_signature = bs->unbound_signal->parsed_signature->signature; return sipErrorNone; } return sipErrorContinue; } // Get the receiver object and slot signature from a decorated callable. sipErrorState pyqt5_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature) { // Get the QObject. PyObject *py_receiver = PyMethod_Self(slot); if (!py_receiver) return sipErrorContinue; void *qobj; int is_err = 0; qobj = sipForceConvertToType(py_receiver, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &is_err); if (is_err) return sipErrorContinue; *receiver = reinterpret_cast(qobj); // Get the decoration. PyObject *decorations = PyObject_GetAttr(slot, qpycore_dunder_pyqtsignature); if (!decorations) return sipErrorContinue; // Use the first one ignoring any others. Chimera::Signature *sig = Chimera::Signature::fromPyObject( PyList_GET_ITEM(decorations, 0)); Py_DECREF(decorations); slot_signature = sig->signature; slot_signature.prepend('1'); return sipErrorNone; } // Get the signature string for a bound or unbound signal. sipErrorState pyqt5_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature) { qpycore_pyqtSignal *ps; if (PyObject_TypeCheck(signal, &qpycore_pyqtBoundSignal_Type)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)signal; if (bs->bound_qobject != transmitter) { PyErr_SetString(PyExc_ValueError, "signal is bound to a different QObject"); return sipErrorFail; } ps = bs->unbound_signal; } else if (PyObject_TypeCheck(signal, &qpycore_pyqtSignal_Type)) { ps = (qpycore_pyqtSignal *)signal; } else { return sipErrorContinue; } signal_signature = ps->parsed_signature->signature; return sipErrorNone; } // Register a convertor function that converts a QVariant to a Python object. void pyqt5_register_from_qvariant_convertor( bool (*convertor)(const QVariant &, PyObject **)) { Chimera::registeredFromQVariantConvertors.append(convertor); } // Register a convertor function that converts a Python object to a QVariant. void pyqt5_register_to_qvariant_convertor( bool (*convertor)(PyObject *, QVariant &, bool *)) { Chimera::registeredToQVariantConvertors.append(convertor); } // Register a convertor function that converts a Python object to the // pre-allocated data of a QVariant with a specific meta-type. void pyqt5_register_to_qvariant_data_convertor( bool (*convertor)(PyObject *, void *, int, bool *)) { Chimera::registeredToQVariantDataConvertors.append(convertor); } // Remove arguments from the Python argv list that have been removed from the // C argv array. void pyqt5_update_argv_list(PyObject *argv_list, int argc, char **argv) { for (int a = 0, na = 0; a < argc; ++a) { // See if it was removed. if (argv[na] == argv[a + argc + 1]) ++na; else PyList_SetSlice(argv_list, na, na + 1, 0); } } // Get the QMetaObject instance for a Python type. const QMetaObject *pyqt5_get_qmetaobject(PyTypeObject *type) { return ((pyqtWrapperType *)type)->metaobject->mo; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_public_api.h0000644000076500000240000001114212613140040021274 0ustar philstaff00000000000000// This defines the public API provided by PyQt to external packages. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PUBLIC_API_H #define _QPYCORE_PUBLIC_API_H #include #include #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QByteArray; struct QMetaObject; class QObject; class QVariant; QT_END_NAMESPACE // A replacement for PyErr_Print(). In PyQt v5.4 it raises a deprecation // warning and calls PyErr_Print(). In PyQt v5.5 and later it passes the text // of the exception and traceback to qFatal(). void pyqt5_err_print(); // Convert a Python list to a standard C array of command line arguments and an // argument count. char **pyqt5_from_argv_list(PyObject *argv_list, int &argc); // Convert a QVariant to a Python object according to an optional Python type. PyObject *pyqt5_from_qvariant_by_type(QVariant &value, PyObject *type); // Get the receiver object and slot signature to allow a signal to be connected // to an optional transmitter. single_shot is true if the signal will only // ever be emitted once. Returns the error state. If this is sipErrorFail // then a Python exception will have been raised. sipErrorState pyqt5_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature); // Get the QMetaObject instance for a Python type. The Python type must be a // sub-type of QObject's Python type. const QMetaObject *pyqt5_get_qmetaobject(PyTypeObject *type); // Get the transmitter object and signal signature from a bound signal. // Returns the error state. If this is sipErrorFail then a Python exception // will have been raised. sipErrorState pyqt5_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature); // Get the receiver object and slot signature from a callable decorated with // pyqtSlot. Returns the error state. If this is sipErrorFail then a Python // exception will have been raised. sipErrorState pyqt5_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature); // Get the signature string for a bound or unbound signal. If the signal is // bound then it must be bound to the given transmitter. Returns the error // state. If this is sipErrorFail then a Python exception will have been // raised. sipErrorState pyqt5_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature); // Register a convertor function that converts a QVariant to a Python object. // The convertor will return true if the QVariant was handled, so that no other // convertor need be tried. If the Python object returned was 0 then there was // an error and a Python exception raised. void pyqt5_register_from_qvariant_convertor( bool (*convertor)(const QVariant &, PyObject **)); // Register a convertor function that converts a Python object to a QVariant. // The convertor will return true if the Python object was handled, so that no // other convertor need be tried. If the flag set was false then there was an // error and a Python exception raised. void pyqt5_register_to_qvariant_convertor( bool (*convertor)(PyObject *, QVariant &, bool *)); // Register a convertor function that converts a Python object to the // pre-allocated data of a QVariant with a specific meta-type. The convertor // will return true if the Python object was handled, so that no other // convertor need be tried. If the flag set was false then there was an error // and a Python exception raised. void pyqt5_register_to_qvariant_data_convertor( bool (*convertor)(PyObject *, void *, int, bool *)); // Update an Python list from a standard C array of command line arguments and // an argument count. void pyqt5_update_argv_list(PyObject *argv_list, int argc, char **argv); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtboundsignal.cpp0000644000076500000240000007173512613140040022761 0ustar philstaff00000000000000// This contains the implementation of the pyqtBoundSignal type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslotproxy.h" #include "sipAPIQtCore.h" // Forward declarations. extern "C" { static PyObject *pyqtBoundSignal_call(PyObject *self, PyObject *args, PyObject *kw); static void pyqtBoundSignal_dealloc(PyObject *self); static PyObject *pyqtBoundSignal_repr(PyObject *self); static PyObject *pyqtBoundSignal_get_doc(PyObject *self, void *); static PyObject *pyqtBoundSignal_get_signal(PyObject *self, void *); static PyObject *pyqtBoundSignal_connect(PyObject *self, PyObject *args, PyObject *kwd_args); static PyObject *pyqtBoundSignal_disconnect(PyObject *self, PyObject *args); static PyObject *pyqtBoundSignal_emit(PyObject *self, PyObject *args); static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self, PyObject *subscript); } static PyObject *disconnect(qpycore_pyqtBoundSignal *bs, QObject *qrx, const char *slot); static bool do_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, const char *docstring, PyObject *sigargs); static bool get_receiver(PyObject *slot, const Chimera::Signature *signal_signature, QObject **receiver, QByteArray &slot_signature); static QByteArray slot_signature_from_decorations( const Chimera::Signature *signal_signature, PyObject *decorations, int nr_args); static QByteArray slot_signature_from_metaobject( const Chimera::Signature *signal_signature, const QMetaObject *slot_mo, const QByteArray &slot_name, int nr_args); static QByteArray slot_signature(const Chimera::Signature *signal_signature, const QByteArray &slot_name, int nr_args); static sipErrorState get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature, bool unique_connection_check, int no_receiver_check); // Doc-strings. PyDoc_STRVAR(pyqtBoundSignal_connect_doc, "connect(slot, type=Qt.AutoConnection, no_receiver_check=False)\n" "\n" "slot is either a Python callable or another signal.\n" "type is a Qt.ConnectionType.\n" "no_receiver_check is True to disable the check that the receiver's C++\n" "instance still exists when the signal is emitted.\n"); PyDoc_STRVAR(pyqtBoundSignal_disconnect_doc, "disconnect([slot])\n" "\n" "slot is an optional Python callable or another signal. If it is omitted\n" "then the signal is disconnected from everything it is connected to."); PyDoc_STRVAR(pyqtBoundSignal_emit_doc, "emit(*args)\n" "\n" "*args are the values that will be passed as arguments to all connected\n" "slots."); PyDoc_STRVAR(pyqtBoundSignal_signal_doc, "The signature of the signal that would be returned by SIGNAL()"); // Define the methods. static PyMethodDef pyqtBoundSignal_methods[] = { {SIP_MLNAME_CAST("connect"), (PyCFunction)pyqtBoundSignal_connect, METH_VARARGS|METH_KEYWORDS, SIP_MLDOC_CAST(pyqtBoundSignal_connect_doc)}, {SIP_MLNAME_CAST("disconnect"), pyqtBoundSignal_disconnect, METH_VARARGS, SIP_MLDOC_CAST(pyqtBoundSignal_disconnect_doc)}, {SIP_MLNAME_CAST("emit"), pyqtBoundSignal_emit, METH_VARARGS, SIP_MLDOC_CAST(pyqtBoundSignal_emit_doc)}, {0, 0, 0, 0} }; // Define the mapping methods. static PyMappingMethods pyqtBoundSignal_as_mapping = { 0, /* mp_length */ pyqtBoundSignal_mp_subscript, /* mp_subscript */ 0, /* mp_ass_subscript */ }; // The getters/setters. static PyGetSetDef pyqtBoundSignal_getsets[] = { {(char *)"__doc__", pyqtBoundSignal_get_doc, NULL, NULL, NULL}, {(char *)"signal", pyqtBoundSignal_get_signal, NULL, (char *)pyqtBoundSignal_signal_doc, NULL}, {NULL, NULL, NULL, NULL, NULL} }; // The pyqtBoundSignal type object. PyTypeObject qpycore_pyqtBoundSignal_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtCore.pyqtBoundSignal"), /* tp_name */ sizeof (qpycore_pyqtBoundSignal), /* tp_basicsize */ 0, /* tp_itemsize */ pyqtBoundSignal_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ pyqtBoundSignal_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ &pyqtBoundSignal_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ pyqtBoundSignal_call, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ pyqtBoundSignal_methods, /* tp_methods */ 0, /* tp_members */ pyqtBoundSignal_getsets, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; // The __doc__ getter. static PyObject *pyqtBoundSignal_get_doc(PyObject *self, void *) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; const char *docstring = bs->unbound_signal->docstring; if (!docstring) { Py_INCREF(Py_None); return Py_None; } if (*docstring == '\1') ++docstring; return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromString #else PyString_FromString #endif (docstring); } // The __signal__ getter. static PyObject *pyqtBoundSignal_get_signal(PyObject *self, void *) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromString #else PyString_FromString #endif (bs->unbound_signal->parsed_signature->signature.constData()); } // The type repr slot. static PyObject *pyqtBoundSignal_repr(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; QByteArray name = bs->unbound_signal->parsed_signature->name(); return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("", name.constData() + 1, bs->bound_pyobject->ob_type->tp_name, bs->bound_pyobject); } // The type call slot. static PyObject *pyqtBoundSignal_call(PyObject *self, PyObject *args, PyObject *kw) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; return qpycore_call_signal_overload(bs->unbound_signal, bs->bound_pyobject, args, kw); } // The type dealloc slot. static void pyqtBoundSignal_dealloc(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; Py_XDECREF((PyObject *)bs->unbound_signal); Py_TYPE(self)->tp_free(self); } // Create a bound signal. PyObject *qpycore_pyqtBoundSignal_New(qpycore_pyqtSignal *unbound_signal, PyObject *bound_pyobject, QObject *bound_qobject) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)PyType_GenericNew(&qpycore_pyqtBoundSignal_Type, 0, 0); if (bs) { Py_INCREF((PyObject *)unbound_signal); bs->unbound_signal = unbound_signal; bs->bound_pyobject = bound_pyobject; bs->bound_qobject = bound_qobject; } return (PyObject *)bs; } // The mapping subscript slot. static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self, PyObject *subscript) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; qpycore_pyqtSignal *ps = qpycore_find_signal(bs->unbound_signal, subscript, "a bound signal type argument"); if (!ps) return 0; // Create a new bound signal. return qpycore_pyqtBoundSignal_New(ps, bs->bound_pyobject, bs->bound_qobject); } // Connect a signal. static PyObject *pyqtBoundSignal_connect(PyObject *self, PyObject *args, PyObject *kwd_args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; static const char *kwds[] = { "slot", "type", "no_receiver_check", 0 }; PyObject *py_slot, *py_type = 0; int no_receiver_check = 0; if (!PyArg_ParseTupleAndKeywords(args, kwd_args, #if PY_VERSION_HEX >= 0x03030000 "O|Op:connect", #else "O|Oi:connect", #endif const_cast(kwds), &py_slot, &py_type, &no_receiver_check)) return 0; Qt::ConnectionType q_type = Qt::AutoConnection; if (py_type) { if (!sipCanConvertToEnum(py_type, sipType_Qt_ConnectionType)) { PyErr_Format(PyExc_TypeError, "Qt.ConnectionType expected, not '%s'", Py_TYPE(py_slot)->tp_name); return 0; } q_type = (Qt::ConnectionType)SIPLong_AsLong(py_type); } QObject *q_tx = bs->bound_qobject, *q_rx; Chimera::Signature *signal_signature = bs->unbound_signal->parsed_signature; QByteArray slot_signature; sipErrorState estate = get_receiver_slot_signature(py_slot, q_tx, signal_signature, false, &q_rx, slot_signature, ((q_type & Qt::UniqueConnection) == Qt::UniqueConnection), no_receiver_check); if (estate != sipErrorNone) { if (estate == sipErrorContinue) sipBadCallableArg(0, py_slot); return 0; } // Connect the signal to the slot and handle any errors. bool ok; Py_BEGIN_ALLOW_THREADS ok = QObject::connect(q_tx, signal_signature->signature.constData(), q_rx, slot_signature.constData(), q_type); Py_END_ALLOW_THREADS if (!ok) { QByteArray slot_name = Chimera::Signature::name(slot_signature); PyErr_Format(PyExc_TypeError, "connect() failed between %s and %s()", signal_signature->py_signature.constData(), slot_name.constData() + 1); return 0; } Py_INCREF(Py_None); return Py_None; } // Get the receiver object and slot signature from a callable or signal. sipErrorState qpycore_get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) { return get_receiver_slot_signature(slot, transmitter, signal_signature, single_shot, receiver, slot_signature, false, 0); } // Get the receiver object and slot signature from a callable or signal. // Optionally disable the receiver check. static sipErrorState get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature, bool unique_connection_check, int no_receiver_check) { // See if the slot is a signal. if (PyObject_TypeCheck(slot, &qpycore_pyqtBoundSignal_Type)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)slot; *receiver = bs->bound_qobject; slot_signature = bs->unbound_signal->parsed_signature->signature; return sipErrorNone; } // Make sure the slot is callable. if (!PyCallable_Check(slot)) return sipErrorContinue; // See if the slot can be used directly (ie. it wraps a Qt slot) or if it // needs a proxy. if (!get_receiver(slot, signal_signature, receiver, slot_signature)) return sipErrorFail; if (slot_signature.isEmpty()) { slot_signature = PyQtSlotProxy::proxy_slot_signature; // Create a proxy for the slot. PyQtSlotProxy *proxy; if (unique_connection_check) { proxy = PyQtSlotProxy::findSlotProxy(transmitter, signal_signature->signature, slot); if (proxy) { // We give more information than we could if it was a Qt slot // but to be consistent we raise a TypeError even though it's // not the most appropriate for the type of error. PyErr_SetString(PyExc_TypeError, "connection is not unique"); return sipErrorFail; } } Py_BEGIN_ALLOW_THREADS proxy = new PyQtSlotProxy(slot, transmitter, signal_signature, single_shot); if (no_receiver_check) proxy->disableReceiverCheck(); if (proxy->metaObject()) { if (*receiver) proxy->moveToThread((*receiver)->thread()); *receiver = proxy; } else { delete proxy; proxy = 0; } Py_END_ALLOW_THREADS if (!proxy) return sipErrorFail; } return sipErrorNone; } // Disconnect all of a QObject's signals. PyObject *qpycore_qobject_disconnect(const QObject *q_obj) { PyObject *res_obj; bool ok; Py_BEGIN_ALLOW_THREADS ok = q_obj->disconnect(); Py_END_ALLOW_THREADS if (ok) { res_obj = Py_None; Py_INCREF(res_obj); } else { PyErr_SetString(PyExc_TypeError, "disconnect() of all signals failed"); res_obj = 0; } PyQtSlotProxy::deleteSlotProxies(q_obj, QByteArray()); return res_obj; } // Disconnect a signal. static PyObject *pyqtBoundSignal_disconnect(PyObject *self, PyObject *args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; PyObject *py_slot = 0, *res_obj; Chimera::Signature *signal_signature = bs->unbound_signal->parsed_signature; if (!PyArg_ParseTuple(args, "|O:disconnect", &py_slot)) return 0; // See if we are disconnecting everything from the overload. if (!py_slot) { res_obj = disconnect(bs, 0, 0); PyQtSlotProxy::deleteSlotProxies(bs->bound_qobject, signal_signature->signature); return res_obj; } // See if the slot is a signal. if (PyObject_TypeCheck(py_slot, &qpycore_pyqtBoundSignal_Type)) { qpycore_pyqtBoundSignal *slot_bs = (qpycore_pyqtBoundSignal *)py_slot; return disconnect(bs, slot_bs->bound_qobject, slot_bs->unbound_signal->parsed_signature->signature.constData()); } if (!PyCallable_Check(py_slot)) { sipBadCallableArg(0, py_slot); return 0; } // See if the slot has been used directly (ie. it wraps a Qt slot) or if it // has a proxy. QObject *q_rx; QByteArray slot_signature; if (!get_receiver(py_slot, signal_signature, &q_rx, slot_signature)) return 0; if (!slot_signature.isEmpty()) return disconnect(bs, q_rx, slot_signature.constData()); PyQtSlotProxy *proxy = PyQtSlotProxy::findSlotProxy(bs->bound_qobject, signal_signature->signature, py_slot); if (!proxy) { PyErr_Format(PyExc_TypeError, "'%s' object is not connected", Py_TYPE(py_slot)->tp_name); return 0; } res_obj = disconnect(bs, proxy, PyQtSlotProxy::proxy_slot_signature.constData()); proxy->disable(); return res_obj; } // Disonnect a signal from a slot and handle any errors. static PyObject *disconnect(qpycore_pyqtBoundSignal *bs, QObject *qrx, const char *slot) { Chimera::Signature *signature = bs->unbound_signal->parsed_signature; bool ok; Py_BEGIN_ALLOW_THREADS ok = QObject::disconnect(bs->bound_qobject, signature->signature.constData(), qrx, slot); Py_END_ALLOW_THREADS if (!ok) { QByteArray tx_name = signature->name(); if (slot) { QByteArray rx_name = Chimera::Signature::name(slot); PyErr_Format(PyExc_TypeError, "disconnect() failed between '%s' and '%s'", tx_name.constData() + 1, rx_name.constData() + 1); } else { PyErr_Format(PyExc_TypeError, "disconnect() failed between '%s' and all its connections", tx_name.constData() + 1); } return 0; } Py_INCREF(Py_None); return Py_None; } // Emit a signal. static PyObject *pyqtBoundSignal_emit(PyObject *self, PyObject *args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; if (!bs->bound_qobject->signalsBlocked()) { Q_ASSERT(PyTuple_Check(args)); qpycore_pyqtSignal *ps = bs->unbound_signal; // Use the emitter if there is one. if (ps->emitter) { if (ps->emitter(bs->bound_qobject, args) < 0) return 0; } else { Chimera::Signature *signature = ps->parsed_signature; int mo_index = bs->bound_qobject->metaObject()->indexOfSignal( signature->signature.constData() + 1); if (mo_index < 0) { PyErr_Format(PyExc_AttributeError, "'%s' does not have a signal with the signature %s", Py_TYPE(bs->bound_pyobject)->tp_name, signature->signature.constData() + 1); return 0; } // Use the docstring if there is one and it is auto-generated. const char *docstring = bs->unbound_signal->docstring; if (!docstring || *docstring != '\1') { docstring = signature->py_signature.constData(); } else { // Skip the auto-generated marker. ++docstring; } if (!do_emit(bs->bound_qobject, mo_index, signature, docstring, args)) return 0; } } Py_INCREF(Py_None); return Py_None; } // Emit a signal based on a parsed signature. static bool do_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, const char *docstring, PyObject *sigargs) { const QList &args = parsed_signature->parsed_arguments; if (args.size() != PyTuple_GET_SIZE(sigargs)) { PyErr_Format(PyExc_TypeError, "%s signal has %d argument(s) but %d provided", docstring, args.size(), (int)PyTuple_GET_SIZE(sigargs)); return false; } // Convert the arguments. QList values; void **argv = new void *[1 + args.size()]; argv[0] = 0; QList::const_iterator it = args.constBegin(); for (int a = 0; it != args.constEnd(); ++a) { PyObject *arg_obj = PyTuple_GET_ITEM(sigargs, a); Chimera::Storage *val = (*it)->fromPyObjectToStorage(arg_obj); if (!val) { // Mimic SIP's exception text. PyErr_Format(PyExc_TypeError, "%s.emit(): argument %d has unexpected type '%s'", docstring, a + 1, Py_TYPE(arg_obj)->tp_name); delete[] argv; qDeleteAll(values.constBegin(), values.constEnd()); return false; } argv[1 + a] = val->address(); values << val; ++it; } Py_BEGIN_ALLOW_THREADS QMetaObject::activate(qtx, signal_index, argv); Py_END_ALLOW_THREADS delete[] argv; qDeleteAll(values.constBegin(), values.constEnd()); return true; } // Get the receiver QObject from the slot (if there is one) and its signature // (if it wraps a Qt slot). Return true if there was no error. static bool get_receiver(PyObject *slot, const Chimera::Signature *signal_signature, QObject **receiver, QByteArray &slot_signature) { PyObject *rx_self = 0, *decorations = 0; QByteArray rx_name; bool try_qt_slot = false; // Assume there isn't a QObject receiver. *receiver = 0; if (PyMethod_Check(slot)) { rx_self = PyMethod_GET_SELF(slot); PyObject *f = PyMethod_GET_FUNCTION(slot); Q_ASSERT(PyFunction_Check(f)); PyObject *f_name_obj = ((PyFunctionObject *)f)->func_name; const char *f_name = sipString_AsASCIIString(&f_name_obj); Q_ASSERT(f_name); rx_name = f_name; Py_DECREF(f_name_obj); // See if this has been decorated. decorations = PyObject_GetAttr(f, qpycore_dunder_pyqtsignature); if (decorations) { try_qt_slot = true; // It's convenient to do this here as it's not going to disappear. Py_DECREF(decorations); } Py_XINCREF(rx_self); } else if (PyCFunction_Check(slot)) { rx_self = PyCFunction_GET_SELF(slot); rx_name = ((PyCFunctionObject *)slot)->m_ml->ml_name; // We actually want the C++ name which may (in theory) be completely // different. However this will cope with the exec_ case which is // probably good enough. if (rx_name.endsWith('_')) rx_name.chop(1); try_qt_slot = true; Py_XINCREF(rx_self); } else { static PyObject *partial = 0; // Get the functools.partial type object if we haven't already got it. if (!partial) { PyObject *functools = PyImport_ImportModule("functools"); if (functools) { partial = PyObject_GetAttrString(functools, "partial"); Py_DECREF(functools); } } // If we know about functools.partial then remove the outer partials to // get to the original function. if (partial && PyObject_IsInstance(slot, partial) > 0) { PyObject *func = slot; Py_INCREF(func); do { PyObject *subfunc = PyObject_GetAttrString(func, "func"); Py_DECREF(func); // This should never happen. if (!subfunc) return false; func = subfunc; } while (PyObject_IsInstance(func, partial) > 0); if (PyMethod_Check(func)) rx_self = PyMethod_GET_SELF(func); else if (PyCFunction_Check(func)) rx_self = PyCFunction_GET_SELF(func); Py_XINCREF(rx_self); Py_DECREF(func); } } if (!rx_self) return true; int iserr = 0; void *rx = sipForceConvertToType(rx_self, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); Py_DECREF(rx_self); PyErr_Clear(); if (iserr) return true; *receiver = reinterpret_cast(rx); // If there might be a Qt slot that can handle the arguments (or a subset // of them) then use it. Otherwise we will fallback to using a proxy. if (try_qt_slot) { for (int ol = signal_signature->parsed_arguments.count(); ol >= 0; --ol) { // If there are decorations then we compare the signal's signature // against them so that we distinguish between Python types that // are passed to Qt as PyQt_PyObject objects. Qt will not make the // distinction. If there are no decorations then let Qt determine // if a slot is available. if (decorations) slot_signature = slot_signature_from_decorations( signal_signature, decorations, ol); else slot_signature = slot_signature_from_metaobject( signal_signature, (*receiver)->metaObject(), rx_name, ol); if (!slot_signature.isEmpty()) { // Prepend the magic slot marker. slot_signature.prepend('1'); break; } } } return true; } // Return the full name and signature of a Qt slot that a signal can be // connected to, taking the slot decorators into account. static QByteArray slot_signature_from_decorations( const Chimera::Signature *signal, PyObject *decorations, int nr_args) { for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(decorations); ++i) { Chimera::Signature *slot = Chimera::Signature::fromPyObject( PyList_GET_ITEM(decorations, i)); if (slot->parsed_arguments.count() != nr_args) continue; int a; for (a = 0; a < nr_args; ++a) { const Chimera *sig_arg = signal->parsed_arguments.at(a); const Chimera *slot_arg = slot->parsed_arguments.at(a); // The same type names must be compatible. if (sig_arg->name() == slot_arg->name()) continue; enum Match { // The type is PyQt_PyObject because it was explicitly // specified as such as a string. MatchesAll, // The type is PyQt_PyObject because it was specified as a type // object that needed wrapping. MatchesPyType, // The type is something other than PyQt_PyObject. MatchesName }; Match sig_match, slot_match; if (sig_arg->name() != "PyQt_PyObject") sig_match = MatchesName; else sig_match = sig_arg->py_type() ? MatchesPyType : MatchesAll; if (slot_arg->name() != "PyQt_PyObject") slot_match = MatchesName; else slot_match = slot_arg->py_type() ? MatchesPyType : MatchesAll; // They are incompatible unless one is called PyQt_PyObject. if (sig_match == MatchesName || slot_match == MatchesName) break; // They are compatible if neither was a Python type. if (sig_match == MatchesAll || slot_match == MatchesAll) continue; // The signal type can be a sub-type of the slot type. if (!PyType_IsSubtype((PyTypeObject *)sig_arg->py_type(), (PyTypeObject *)slot_arg->py_type())) break; } if (a == nr_args) return slot_signature(signal, slot->name(), nr_args); } return QByteArray(); } // Return the full name and signature of a Qt slot that a signal can be // connected to, taking the Qt meta-object into account. static QByteArray slot_signature_from_metaobject( const Chimera::Signature *signal_signature, const QMetaObject *slot_mo, const QByteArray &slot_name, int nr_args) { QByteArray slot_sig = slot_signature(signal_signature, slot_name, nr_args); if (slot_mo->indexOfSlot(slot_sig.constData()) < 0) slot_sig.clear(); return slot_sig; } // Return the full name and signature of the Qt slot that a signal would be // connected to. static QByteArray slot_signature(const Chimera::Signature *signal_signature, const QByteArray &slot_name, int nr_args) { QByteArray slot_sig = slot_name; slot_sig.append('('); for (int a = 0; a < nr_args; ++a) { if (a != 0) slot_sig.append(','); slot_sig.append(signal_signature->parsed_arguments.at(a)->name()); } slot_sig.append(')'); return slot_sig; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtboundsignal.h0000644000076500000240000000364312613140040022417 0ustar philstaff00000000000000// This defines the interfaces for the pyqtBoundSignal type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTBOUNDSIGNAL_H #define _QPYCORE_PYQTBOUNDSIGNAL_H #include #include #include "qpycore_pyqtsignal.h" #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QByteArray; class QObject; QT_END_NAMESPACE extern "C" { // This defines the structure of a bound PyQt signal. typedef struct { PyObject_HEAD // The unbound signal. qpycore_pyqtSignal *unbound_signal; // A borrowed reference to the wrapped QObject that is bound to the signal. PyObject *bound_pyobject; // The QObject that is bound to the signal. QObject *bound_qobject; } qpycore_pyqtBoundSignal; extern PyTypeObject qpycore_pyqtBoundSignal_Type; } PyObject *qpycore_pyqtBoundSignal_New(qpycore_pyqtSignal *unbound_signal, PyObject *bound_pyobject, QObject *bound_qobject); sipErrorState qpycore_get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtconfigure.cpp0000644000076500000240000001531212613140040022422 0ustar philstaff00000000000000// This implements the helper for QObject.pyqtConfigure(). // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_pyqtboundsignal.h" #include "sipAPIQtCore.h" // The result of handling a keyword argument. enum ArgStatus { AsError, AsHandled, AsUnknown }; static ArgStatus handle_argument(PyObject *self, QObject *qobj, PyObject *name_obj, PyObject *value_obj); // This is the helper for QObject.pyqtConfigure(). PyObject *qpycore_pyqtconfigure(PyObject *self, PyObject *args, PyObject *kwds) { // Check there are no positional arguments. if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_TypeError, "QObject.pyqtConfigure() has no positional arguments"); return 0; } // Get the QObject self. QObject *qobj = reinterpret_cast( sipGetCppPtr((sipSimpleWrapper *)self, sipType_QObject)); if (!qobj) return 0; PyObject *name_obj, *value_obj; SIP_SSIZE_T pos = 0; while (PyDict_Next(kwds, &pos, &name_obj, &value_obj)) { ArgStatus as = handle_argument(self, qobj, name_obj, value_obj); if (as == AsError) return 0; if (as == AsUnknown) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_AttributeError, "'%S' is not the name of a Qt property or signal", name_obj); #else PyObject *name_s = PyObject_Str(name_obj); if (name_s != NULL) { PyErr_Format(PyExc_AttributeError, "'%s' is not the name of a Qt property or signal", PyString_AsString(name_s)); Py_DECREF(name_s); } #endif return 0; } } Py_INCREF(Py_None); return Py_None; } // This is the helper for the QObject %FinalisationCode. int qpycore_qobject_finalisation(PyObject *self, QObject *qobj, PyObject *kwds, PyObject **updated_kwds) { // Handle the trivial case. if (!kwds) return 0; // The dict we will be removing handled arguments from, 0 if it needs to be // created. PyObject *unused = (updated_kwds ? 0 : kwds); PyObject *name_obj, *value_obj; SIP_SSIZE_T pos = 0; while (PyDict_Next(kwds, &pos, &name_obj, &value_obj)) { ArgStatus as = handle_argument(self, qobj, name_obj, value_obj); if (as == AsError) return -1; if (as == AsHandled) { if (!unused) { unused = PyDict_Copy(kwds); if (!unused) return -1; *updated_kwds = unused; } if (PyDict_DelItem(unused, name_obj) < 0) { if (updated_kwds) Py_DECREF(unused); return -1; } } } return 0; } // Handle a single keyword argument. static ArgStatus handle_argument(PyObject *self, QObject *qobj, PyObject *name_obj, PyObject *value_obj) { const QMetaObject *mo = qobj->metaObject(); // Get the name encoded name. PyObject *enc_name_obj = name_obj; const char *name = sipString_AsASCIIString(&enc_name_obj); if (!name) return AsError; QByteArray enc_name(name); Py_DECREF(enc_name_obj); // See if it is a property. int idx = mo->indexOfProperty(enc_name.constData()); if (idx >= 0) { QMetaProperty prop = mo->property(idx); // A negative type means a QVariant property. if (prop.userType() >= 0) { const Chimera *ct = Chimera::parse(prop); if (!ct) { PyErr_Format(PyExc_TypeError, "'%s' keyword argument has an invalid type", enc_name.constData()); return AsError; } QVariant value; bool valid = ct->fromPyObject(value_obj, &value); delete ct; if (!valid) return AsError; qobj->setProperty(enc_name.constData(), value); } else { int value_state, iserr = 0; QVariant *value = reinterpret_cast( sipForceConvertToType(value_obj, sipType_QVariant, 0, SIP_NOT_NONE, &value_state, &iserr)); if (iserr) return AsError; qobj->setProperty(enc_name.constData(), *value); sipReleaseType(value, sipType_QVariant, value_state); } } else { bool unknown = true; // See if it is a signal. PyObject *sig = PyObject_GetAttr(self, name_obj); if (sig) { if (PyObject_TypeCheck(sig, &qpycore_pyqtBoundSignal_Type)) { static PyObject *connect_obj = NULL; if (!connect_obj) { #if PY_MAJOR_VERSION >= 3 connect_obj = PyUnicode_FromString("connect"); #else connect_obj = PyString_FromString("connect"); #endif if (!connect_obj) { Py_DECREF(sig); return AsError; } } // Connect the slot. PyObject *res = PyObject_CallMethodObjArgs(sig, connect_obj, value_obj, 0); if (!res) { Py_DECREF(sig); return AsError; } Py_DECREF(res); unknown = false; } Py_DECREF(sig); } if (unknown) { PyErr_Clear(); return AsUnknown; } } return AsHandled; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtmethodproxy.cpp0000644000076500000240000002115212613140040023022 0ustar philstaff00000000000000// This contains the implementation of the pyqtMethodProxy type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtmethodproxy.h" // Forward declarations. extern "C" { static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args, PyObject *kw_args); static void pyqtMethodProxy_dealloc(PyObject *self); } static void parse_arg(PyObject *args, int arg_nr, const QList &types, QGenericArgument &arg, Chimera::Storage **storage, bool &failed, const char *py_name); // The pyqtMethodProxy type object. PyTypeObject qpycore_pyqtMethodProxy_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtCore.pyqtMethodProxy"), /* tp_name */ sizeof (qpycore_pyqtMethodProxy), /* tp_basicsize */ 0, /* tp_itemsize */ pyqtMethodProxy_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ pyqtMethodProxy_call, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; // The type dealloc slot. static void pyqtMethodProxy_dealloc(PyObject *self) { qpycore_pyqtMethodProxy *mp = (qpycore_pyqtMethodProxy *)self; delete mp->py_name; Py_TYPE(self)->tp_free(self); } // The type call slot. static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args, PyObject *kw_args) { qpycore_pyqtMethodProxy *mp = (qpycore_pyqtMethodProxy *)self; const char *py_name = mp->py_name->constData(); // Check for keyword arguments. if (kw_args) { PyErr_Format(PyExc_TypeError, "%s() does not support keyword arguments", py_name); return 0; } QMetaMethod method = mp->qobject->metaObject()->method(mp->method_index); QList arg_types = method.parameterTypes(); if (PyTuple_Size(args) != arg_types.size()) { PyErr_Format(PyExc_TypeError, "%s() called with %zd arguments but %d expected", py_name, PyTuple_Size(args), arg_types.size()); return 0; } // Parse the return type and the arguments. QGenericReturnArgument ret; QGenericArgument a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; Chimera::Storage *return_storage, *storage[10]; QByteArray return_type(method.typeName()); bool failed = false; return_storage = 0; if (!return_type.isEmpty()) { const Chimera *ct = Chimera::parse(return_type); if (!ct) { PyErr_Format(PyExc_TypeError, "unable to convert return value of %s from '%s' to a Python object", py_name, return_type.constData()); return 0; } return_storage = ct->storageFactory(); ret = QGenericReturnArgument(return_type.constData(), return_storage->address()); } parse_arg(args, 0, arg_types, a0, storage, failed, py_name); parse_arg(args, 1, arg_types, a1, storage, failed, py_name); parse_arg(args, 2, arg_types, a2, storage, failed, py_name); parse_arg(args, 3, arg_types, a3, storage, failed, py_name); parse_arg(args, 4, arg_types, a4, storage, failed, py_name); parse_arg(args, 5, arg_types, a5, storage, failed, py_name); parse_arg(args, 6, arg_types, a6, storage, failed, py_name); parse_arg(args, 7, arg_types, a7, storage, failed, py_name); parse_arg(args, 8, arg_types, a8, storage, failed, py_name); parse_arg(args, 9, arg_types, a9, storage, failed, py_name); // Invoke the method. PyObject *result = 0; if (!failed) { failed = !method.invoke(mp->qobject, ret, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); if (failed) { PyErr_Format(PyExc_TypeError, "invocation of %s() failed", py_name); } else if (return_storage) { result = return_storage->toPyObject(); } else { result = Py_None; Py_INCREF(result); } } // Release any storage. if (return_storage) { delete return_storage->type(); delete return_storage; } for (int i = 0; i < 10; ++i) { Chimera::Storage *st = storage[i]; if (st) { delete st->type(); delete st; } } return result; } // Convert a Python object to a QGenericArgument. static void parse_arg(PyObject *args, int arg_nr, const QList &types, QGenericArgument &arg, Chimera::Storage **storage, bool &failed, const char *py_name) { // Initialise so that we can safely release later. storage[arg_nr] = 0; // If we have already failed then there is nothing to do. if (failed) return; // If we have run out of arguments then there is nothing to do. if (arg_nr >= types.size()) return; PyObject *py_arg = PyTuple_GET_ITEM(args, arg_nr); const QByteArray &cpp_type = types.at(arg_nr); const Chimera *ct = Chimera::parse(cpp_type); Chimera::Storage *st; if (ct) st = ct->fromPyObjectToStorage(py_arg); else st = 0; if (!st) { if (ct) delete ct; PyErr_Format(PyExc_TypeError, "unable to convert argument %d of %s from '%s' to '%s'", arg_nr, py_name, Py_TYPE(py_arg)->tp_name, cpp_type.constData()); failed = true; return; } storage[arg_nr] = st; arg = QGenericArgument(cpp_type.constData(), st->address()); } // Create a proxy for a bound introspected method. PyObject *qpycore_pyqtMethodProxy_New(QObject *qobject, int method_index, const QByteArray &py_name) { qpycore_pyqtMethodProxy *mp; mp = (qpycore_pyqtMethodProxy *)PyType_GenericAlloc( &qpycore_pyqtMethodProxy_Type, 0); if (!mp) return 0; mp->qobject = qobject; mp->method_index = method_index; mp->py_name = new QByteArray(py_name); return (PyObject *)mp; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtmethodproxy.h0000644000076500000240000000324212613140040022467 0ustar philstaff00000000000000// This defines the interfaces for the pyqtMethodProxy type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTMETHODPROXY_H #define _QPYCORE_PYQTMETHODPROXY_H #include #include #include #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QObject; QT_END_NAMESPACE extern "C" { // This defines the structure of a pyqtMethodProxy object. typedef struct _qpycore_pyqtMethodProxy { PyObject_HEAD // The QObject whose method being proxied. QObject *qobject; // The method index in the QObject's meta-object. int method_index; // The fully qualified Python name of the method. const QByteArray *py_name; } qpycore_pyqtMethodProxy; extern PyTypeObject qpycore_pyqtMethodProxy_Type; } PyObject *qpycore_pyqtMethodProxy_New(QObject *qobject, int method_index, const QByteArray &py_name); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtproperty.cpp0000644000076500000240000003531612613140040022333 0ustar philstaff00000000000000// This is the implementation of pyqtProperty. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtsignal.h" // Forward declarations. extern "C" { static PyObject *pyqtProperty_getter(PyObject *self, PyObject *getter); static PyObject *pyqtProperty_setter(PyObject *self, PyObject *setter); static PyObject *pyqtProperty_deleter(PyObject *self, PyObject *deleter); static PyObject *pyqtProperty_reset(PyObject *self, PyObject *reset); static PyObject *pyqtProperty_descr_get(PyObject *self, PyObject *obj, PyObject *); static int pyqtProperty_descr_set(PyObject *self, PyObject *obj, PyObject *value); static PyObject *pyqtProperty_call(PyObject *self, PyObject *args, PyObject *kwds); static void pyqtProperty_dealloc(PyObject *self); static int pyqtProperty_init(PyObject *self, PyObject *args, PyObject *kwds); static int pyqtProperty_traverse(PyObject *self, visitproc visit, void *arg); } static qpycore_pyqtProperty *clone(qpycore_pyqtProperty *orig); static PyObject *getter_docstring(PyObject *getter); // Doc-strings. PyDoc_STRVAR(pyqtProperty_doc, "pyqtProperty(type, fget=None, fset=None, freset=None, fdel=None, doc=None,\n" " designable=True, scriptable=True, stored=True, user=False,\n" " constant=False, final=False, notify=None,\n" " revision=0) -> property attribute\n" "\n" "type is the type of the property. It is either a type object or a string\n" "that is the name of a C++ type.\n" "freset is a function for resetting an attribute to its default value.\n" "designable sets the DESIGNABLE flag (the default is True for writable\n" "properties and False otherwise).\n" "scriptable sets the SCRIPTABLE flag.\n" "stored sets the STORED flag.\n" "user sets the USER flag.\n" "constant sets the CONSTANT flag.\n" "final sets the FINAL flag.\n" "notify is the NOTIFY signal.\n" "revision is the REVISION.\n" "The other parameters are the same as those required by the standard Python\n" "property type. Properties defined using pyqtProperty behave as both Python\n" "and Qt properties." "\n" "Decorators can be used to define new properties or to modify existing ones."); PyDoc_STRVAR(getter_doc, "Descriptor to change the getter on a property."); PyDoc_STRVAR(setter_doc, "Descriptor to change the setter on a property."); PyDoc_STRVAR(deleter_doc, "Descriptor to change the deleter on a property."); PyDoc_STRVAR(reset_doc, "Descriptor to change the reset on a property."); // Define the attributes. static PyMemberDef pyqtProperty_members[] = { {const_cast("type"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_type), READONLY, 0}, {const_cast("fget"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_get), READONLY, 0}, {const_cast("fset"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_set), READONLY, 0}, {const_cast("fdel"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_del), READONLY, 0}, {const_cast("freset"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_reset), READONLY, 0}, {const_cast("__doc__"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_doc), READONLY, 0}, {0, 0, 0, 0, 0} }; // Define the methods. static PyMethodDef pyqtProperty_methods[] = { {"getter", pyqtProperty_getter, METH_O, getter_doc}, {"read", pyqtProperty_getter, METH_O, getter_doc}, {"setter", pyqtProperty_setter, METH_O, setter_doc}, {"write", pyqtProperty_setter, METH_O, setter_doc}, {"deleter", pyqtProperty_deleter, METH_O, deleter_doc}, {"reset", pyqtProperty_reset, METH_O, reset_doc}, {0, 0, 0, 0} }; // This implements the PyQt version of the standard Python property type. PyTypeObject qpycore_pyqtProperty_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtCore.pyqtProperty"), sizeof (qpycore_pyqtProperty), 0, pyqtProperty_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, pyqtProperty_call, 0, PyObject_GenericGetAttr, 0, 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_BASETYPE, pyqtProperty_doc, pyqtProperty_traverse, 0, 0, 0, 0, 0, pyqtProperty_methods, pyqtProperty_members, 0, 0, 0, pyqtProperty_descr_get, pyqtProperty_descr_set, 0, pyqtProperty_init, PyType_GenericAlloc, PyType_GenericNew, PyObject_GC_Del, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x03040000 0, #endif }; // This is the sequence number to allocate to the next PyQt property to be // defined. This ensures that properties appear in the QMetaObject in the same // order that they are defined in Python. static uint pyqtprop_sequence_nr = 0; // The pyqtProperty dealloc function. static void pyqtProperty_dealloc(PyObject *self) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; PyObject_GC_UnTrack(self); Py_XDECREF(pp->pyqtprop_get); Py_XDECREF(pp->pyqtprop_set); Py_XDECREF(pp->pyqtprop_del); Py_XDECREF(pp->pyqtprop_doc); Py_XDECREF(pp->pyqtprop_reset); Py_XDECREF(pp->pyqtprop_notify); Py_XDECREF(pp->pyqtprop_type); delete pp->pyqtprop_parsed_type; Py_TYPE(self)->tp_free(self); } // The descriptor getter. static PyObject *pyqtProperty_descr_get(PyObject *self, PyObject *obj, PyObject *) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; if (!obj || obj == Py_None) { Py_INCREF(self); return self; } if (!pp->pyqtprop_get) { PyErr_SetString(PyExc_AttributeError, "unreadable attribute"); return 0; } return PyObject_CallFunction(pp->pyqtprop_get, const_cast("(O)"), obj); } // The descriptor setter. static int pyqtProperty_descr_set(PyObject *self, PyObject *obj, PyObject *value) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; PyObject *func, *res; func = (value ? pp->pyqtprop_set : pp->pyqtprop_del); if (!func) { PyErr_SetString(PyExc_AttributeError, (value ? "can't set attribute" : "can't delete attribute")); return -1; } if (value) res = PyObject_CallFunction(func, const_cast("(OO)"), obj, value); else res = PyObject_CallFunction(func, const_cast("(O)"), obj); if (!res) return -1; Py_DECREF(res); return 0; } // The pyqtProperty traverse function. static int pyqtProperty_traverse(PyObject *self, visitproc visit, void *arg) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; int vret; if (pp->pyqtprop_get) { vret = visit(pp->pyqtprop_get, arg); if (vret != 0) return vret; } if (pp->pyqtprop_set) { vret = visit(pp->pyqtprop_set, arg); if (vret != 0) return vret; } if (pp->pyqtprop_del) { vret = visit(pp->pyqtprop_del, arg); if (vret != 0) return vret; } if (pp->pyqtprop_doc) { vret = visit(pp->pyqtprop_doc, arg); if (vret != 0) return vret; } if (pp->pyqtprop_reset) { vret = visit(pp->pyqtprop_reset, arg); if (vret != 0) return vret; } if (pp->pyqtprop_notify) { vret = visit(pp->pyqtprop_notify, arg); if (vret != 0) return vret; } if (pp->pyqtprop_type) { vret = visit(pp->pyqtprop_type, arg); if (vret != 0) return vret; } return 0; } // The pyqtProperty init function. static int pyqtProperty_init(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *type, *get = 0, *set = 0, *reset = 0, *del = 0, *doc = 0, *notify = 0; int scriptable = 1, stored = 1, user = 0, constant = 0, final = 0; int designable = 1, revision = 0; static const char *kwlist[] = {"type", "fget", "fset", "freset", "fdel", "doc", "designable", "scriptable", "stored", "user", "constant", "final", "notify", "revision", 0}; qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp->pyqtprop_sequence = pyqtprop_sequence_nr++; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OOOOOiiiiiiO!i:pyqtProperty", const_cast(kwlist), &type, &get, &set, &reset, &del, &doc, &designable, &scriptable, &stored, &user, &constant, &final, &qpycore_pyqtSignal_Type, ¬ify, &revision)) return -1; if (get == Py_None) get = 0; if (set == Py_None) set = 0; if (del == Py_None) del = 0; if (reset == Py_None) reset = 0; if (notify == Py_None) notify = 0; // Parse the type. const Chimera *ptype = Chimera::parse(type); if (!ptype) { Chimera::raiseParseException(type, "a property"); return -1; } pp->pyqtprop_parsed_type = ptype; Py_XINCREF(get); Py_XINCREF(set); Py_XINCREF(del); Py_XINCREF(doc); Py_XINCREF(reset); Py_XINCREF(notify); Py_INCREF(type); // If no docstring was given try the getter. if (!doc || doc == Py_None) { PyObject *getter_doc = getter_docstring(get); if (getter_doc) { Py_XDECREF(doc); doc = getter_doc; } } pp->pyqtprop_get = get; pp->pyqtprop_set = set; pp->pyqtprop_del = del; pp->pyqtprop_doc = doc; pp->pyqtprop_reset = reset; pp->pyqtprop_notify = notify; pp->pyqtprop_type = type; // ResolveEditable is always set. unsigned flags = 0x00080000; if (designable) flags |= 0x00001000; if (scriptable) flags |= 0x00004000; if (stored) flags |= 0x00010000; if (user) flags |= 0x00100000; if (constant) flags |= 0x00000400; if (final) flags |= 0x00000800; pp->pyqtprop_flags = flags; pp->pyqtprop_revision = revision; return 0; } // Calling the property is a shorthand way of changing the getter. static PyObject *pyqtProperty_call(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *get; static const char *kwlist[] = {"fget", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:pyqtProperty", const_cast(kwlist), &get)) return 0; return pyqtProperty_getter(self, get); } // Return a copy of the property with a different getter. static PyObject *pyqtProperty_getter(PyObject *self, PyObject *getter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_get); if (getter == Py_None) getter = 0; else Py_INCREF(getter); pp->pyqtprop_get = getter; // Use the getter's docstring if it has one. PyObject *getter_doc = getter_docstring(getter); if (getter_doc) { Py_XDECREF(pp->pyqtprop_doc); pp->pyqtprop_doc = getter_doc; } } return (PyObject *)pp; } // Return a copy of the property with a different setter. static PyObject *pyqtProperty_setter(PyObject *self, PyObject *setter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_set); if (setter == Py_None) setter = 0; else Py_INCREF(setter); pp->pyqtprop_set = setter; } return (PyObject *)pp; } // Return a copy of the property with a different deleter. static PyObject *pyqtProperty_deleter(PyObject *self, PyObject *deleter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_del); if (deleter == Py_None) deleter = 0; else Py_INCREF(deleter); pp->pyqtprop_del = deleter; } return (PyObject *)pp; } // Return a copy of the property with a different reset. static PyObject *pyqtProperty_reset(PyObject *self, PyObject *reset) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_reset); if (reset == Py_None) reset = 0; else Py_INCREF(reset); pp->pyqtprop_reset = reset; } return (PyObject *)pp; } // Create a clone of a property. static qpycore_pyqtProperty *clone(qpycore_pyqtProperty *orig) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)PyType_GenericNew( Py_TYPE(orig), 0, 0); if (pp) { pp->pyqtprop_get = orig->pyqtprop_get; Py_XINCREF(pp->pyqtprop_get); pp->pyqtprop_set = orig->pyqtprop_set; Py_XINCREF(pp->pyqtprop_set); pp->pyqtprop_del = orig->pyqtprop_del; Py_XINCREF(pp->pyqtprop_del); pp->pyqtprop_doc = orig->pyqtprop_doc; Py_XINCREF(pp->pyqtprop_doc); pp->pyqtprop_reset = orig->pyqtprop_reset; Py_XINCREF(pp->pyqtprop_reset); pp->pyqtprop_notify = orig->pyqtprop_notify; Py_XINCREF(pp->pyqtprop_notify); pp->pyqtprop_type = orig->pyqtprop_type; Py_XINCREF(pp->pyqtprop_type); pp->pyqtprop_parsed_type = new Chimera(*orig->pyqtprop_parsed_type); pp->pyqtprop_flags = orig->pyqtprop_flags; pp->pyqtprop_revision = orig->pyqtprop_revision; pp->pyqtprop_sequence = orig->pyqtprop_sequence; } return pp; } // Return the docstring of an optional getter or 0 if it doesn't have one. static PyObject *getter_docstring(PyObject *getter) { // Handle the trivial case. if (!getter) return 0; PyObject *getter_doc = PyObject_GetAttrString(getter, "__doc__"); if (!getter_doc) { PyErr_Clear(); return 0; } if (getter_doc == Py_None) { Py_DECREF(getter_doc); return 0; } return getter_doc; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtproperty.h0000644000076500000240000000404212613140040021770 0ustar philstaff00000000000000// This contains the definitions for the implementation of pyqtProperty. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTPROPERTY_H #define _QPYCORE_PYQTPROPERTY_H #include class Chimera; extern "C" { // This defines the structure of a PyQt property. typedef struct { PyObject_HEAD // The fget/getter/read callable. PyObject *pyqtprop_get; // The fset/setter/write callable. PyObject *pyqtprop_set; // The fdel/deleter callable. PyObject *pyqtprop_del; // The docstring. PyObject *pyqtprop_doc; // The freset/reset callable. PyObject *pyqtprop_reset; // The notify signal. PyObject *pyqtprop_notify; // The property type. PyObject *pyqtprop_type; // The parsed type information. const Chimera *pyqtprop_parsed_type; // The DESIGNABLE, SCRIPTABLE, STORED, USER, CONSTANT and FINAL flags. unsigned pyqtprop_flags; // The REVISION. int pyqtprop_revision; // The property's sequence number that determines the position of the // property in the QMetaObject. uint pyqtprop_sequence; } qpycore_pyqtProperty; // This implements the PyQt version of the standard Python property type. extern PyTypeObject qpycore_pyqtProperty_Type; } #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtpyobject.cpp0000644000076500000240000001071612613140040022263 0ustar philstaff00000000000000// This contains the support for Python objects and Qt's metatype system. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_pyqtpyobject.h" #include "sipAPIQtCore.h" // The Qt metatype id. int PyQt_PyObject::metatype; // The current pickle protocol. PyObject *qpycore_pickle_protocol; // Wrap a Python object. PyQt_PyObject::PyQt_PyObject(PyObject *py) { pyobject = py; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS } // Create a new wrapper, with no Python object. This is called by Qt's // metatype system. PyQt_PyObject::PyQt_PyObject() { pyobject = 0; } // Create a copy of an existing wrapper. This is called by Qt's metatype // system. PyQt_PyObject::PyQt_PyObject(const PyQt_PyObject &other) { pyobject = other.pyobject; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS } // Destroy a wrapper. PyQt_PyObject::~PyQt_PyObject() { // Qt can still be tidying up after Python has gone so make sure that it // hasn't. if (Py_IsInitialized()) { SIP_BLOCK_THREADS Py_XDECREF(pyobject); SIP_UNBLOCK_THREADS } pyobject = 0; } // Assignment operator. PyQt_PyObject &PyQt_PyObject::operator=(const PyQt_PyObject &other) { pyobject = other.pyobject; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS return *this; } // Serialise operator. QDataStream &operator<<(QDataStream &out, const PyQt_PyObject &obj) { PyObject *ser_obj = 0; const char *ser = 0; uint len = 0; if (obj.pyobject) { static PyObject *dumps = 0; SIP_BLOCK_THREADS if (!dumps) { PyObject *pickle = PyImport_ImportModule("pickle"); if (pickle) { dumps = PyObject_GetAttrString(pickle, "dumps"); Py_DECREF(pickle); } } if (dumps) { if (!qpycore_pickle_protocol) { Py_INCREF(Py_None); qpycore_pickle_protocol = Py_None; } ser_obj = PyObject_CallFunctionObjArgs(dumps, obj.pyobject, qpycore_pickle_protocol, 0); if (ser_obj) { if (SIPBytes_Check(ser_obj)) { ser = SIPBytes_AS_STRING(ser_obj); len = SIPBytes_GET_SIZE(ser_obj); } else { Py_DECREF(ser_obj); ser_obj = 0; } } else { pyqt5_err_print(); } } SIP_UNBLOCK_THREADS } out.writeBytes(ser, len); if (ser_obj) { SIP_BLOCK_THREADS Py_DECREF(ser_obj); SIP_UNBLOCK_THREADS } return out; } // De-serialise operator. QDataStream &operator>>(QDataStream &in, PyQt_PyObject &obj) { char *ser; uint len; in.readBytes(ser, len); if (len) { static PyObject *loads = 0; SIP_BLOCK_THREADS if (!loads) { PyObject *pickle = PyImport_ImportModule("pickle"); if (pickle) { loads = PyObject_GetAttrString(pickle, "loads"); Py_DECREF(pickle); } } if (loads) { PyObject *ser_obj = SIPBytes_FromStringAndSize(ser, len); if (ser_obj) { obj.pyobject = PyObject_CallFunctionObjArgs(loads, ser_obj, 0); Py_DECREF(ser_obj); } } SIP_UNBLOCK_THREADS } delete[] ser; return in; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtpyobject.h0000644000076500000240000000327712613140040021734 0ustar philstaff00000000000000// This contains definitions related to the support for Python objects and Qt's // meta-type system. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTPYOBJECT_H #define _QPYCORE_PYQTPYOBJECT_H #include #include #include // This class is used to wrap a PyObject so it can be passed around Qt's // meta-type system while maintaining its reference count. class PyQt_PyObject { public: PyQt_PyObject(PyObject *py); PyQt_PyObject(); PyQt_PyObject(const PyQt_PyObject &other); ~PyQt_PyObject(); PyQt_PyObject &operator=(const PyQt_PyObject &other); // The Python object being wrapped. PyObject *pyobject; // The Qt meta-type id. static int metatype; }; QDataStream &operator<<(QDataStream &out, const PyQt_PyObject &obj); QDataStream &operator>>(QDataStream &in, PyQt_PyObject &obj); Q_DECLARE_METATYPE(PyQt_PyObject) #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtsignal.cpp0000644000076500000240000005110112613140040021712 0ustar philstaff00000000000000// This contains the implementation of the pyqtSignal type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtsignal.h" // Forward declarations. extern "C" { static PyObject *pyqtSignal_call(PyObject *self, PyObject *args, PyObject *kw); static void pyqtSignal_dealloc(PyObject *self); static PyObject *pyqtSignal_descr_get(PyObject *self, PyObject *obj, PyObject *type); static int pyqtSignal_init(PyObject *self, PyObject *args, PyObject *kwd_args); static PyObject *pyqtSignal_repr(PyObject *self); static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript); static PyObject *pyqtSignal_get_doc(PyObject *self, void *); } static int init_signal_from_types(qpycore_pyqtSignal *ps, const char *name, const QList *parameter_names, int revision, PyObject *types); static void append_overload(qpycore_pyqtSignal *ps); static bool is_signal_name(const char *sig, const QByteArray &name); // Define the mapping methods. static PyMappingMethods pyqtSignal_as_mapping = { 0, /* mp_length */ pyqtSignal_mp_subscript, /* mp_subscript */ 0, /* mp_ass_subscript */ }; // The getters/setters. static PyGetSetDef pyqtSignal_getsets[] = { {(char *)"__doc__", pyqtSignal_get_doc, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL} }; PyDoc_STRVAR(pyqtSignal_doc, "pyqtSignal(*types, name=str, revision=0, arguments=[]) -> signal\n" "\n" "types is normally a sequence of individual types. Each type is either a\n" "type object or a string that is the name of a C++ type. Alternatively\n" "each type could itself be a sequence of types each describing a different\n" "overloaded signal.\n" "name is the optional C++ name of the signal. If it is not specified then\n" "the name of the class attribute that is bound to the signal is used.\n" "revision is the optional revision of the signal that is exported to QML.\n" "arguments is the option sequence of the names of the signal's arguments.\n"); // The pyqtSignal type object. PyTypeObject qpycore_pyqtSignal_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtCore.pyqtSignal"), /* tp_name */ sizeof (qpycore_pyqtSignal), /* tp_basicsize */ 0, /* tp_itemsize */ pyqtSignal_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ pyqtSignal_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ &pyqtSignal_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ pyqtSignal_call, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ pyqtSignal_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ pyqtSignal_getsets, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ pyqtSignal_descr_get, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ pyqtSignal_init, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; // The __doc__ getter. static PyObject *pyqtSignal_get_doc(PyObject *self, void *) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Make sure we have the default signal. ps = ps->default_signal; QByteArray doc; // Get any docstrings from any non-signal overloads. if (ps->non_signals && ps->non_signals->ml_doc) { doc.append('\n'); doc.append(ps->non_signals->ml_doc); } // Get any docstrings from the signals. do { const char *docstring = ps->docstring; if (docstring) { if (*docstring == '\1') ++docstring; doc.append('\n'); doc.append(docstring); doc.append(" [signal]"); } ps = ps->next; } while (ps); if (doc.isEmpty()) { Py_INCREF(Py_None); return Py_None; } return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromString #else PyString_FromString #endif (doc.constData() + 1); } // The type repr slot. static PyObject *pyqtSignal_repr(PyObject *self) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("", ps->parsed_signature->name().constData() + 1); } // The type call slot. static PyObject *pyqtSignal_call(PyObject *self, PyObject *args, PyObject *kw) { return qpycore_call_signal_overload((qpycore_pyqtSignal *)self, 0, args, kw); } // The type dealloc slot. static void pyqtSignal_dealloc(PyObject *self) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; delete ps->parsed_signature; if (ps->parameter_names) delete ps->parameter_names; // If we are the default then we own the overloads references. if (ps == ps->default_signal) { qpycore_pyqtSignal *next = ps->next; while (next) { ps = next; next = ps->next; Py_DECREF((PyObject *)ps); } } Py_TYPE(self)->tp_free(self); } // The type descriptor get slot. static PyObject *pyqtSignal_descr_get(PyObject *self, PyObject *obj, PyObject *) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Return the unbound signal if there is nothing to bind it to. if (obj == NULL || obj == Py_None) { Py_INCREF(self); return self; } // Get the QObject. int is_err = 0; void *qobject = sipForceConvertToType(obj, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &is_err); if (is_err) return 0; // Return the bound signal. return qpycore_pyqtBoundSignal_New(ps, obj, reinterpret_cast(qobject)); } // The type init slot. static int pyqtSignal_init(PyObject *self, PyObject *args, PyObject *kwd_args) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Get the keyword arguments. PyObject *name_obj = 0; const char *name = 0; int revision = 0; QList *parameter_names = 0; if (kwd_args) { SIP_SSIZE_T pos = 0; PyObject *key, *value; while (PyDict_Next(kwd_args, &pos, &key, &value)) { #if PY_MAJOR_VERSION >= 3 if (PyUnicode_CompareWithASCIIString(key, "name") == 0) #else Q_ASSERT(PyString_Check(key)); if (qstrcmp(PyString_AS_STRING(key), "name") == 0) #endif { name_obj = value; name = sipString_AsASCIIString(&name_obj); if (!name) { PyErr_Format(PyExc_TypeError, "signal 'name' must be a str, not %s", Py_TYPE(value)->tp_name); return -1; } } #if PY_MAJOR_VERSION >= 3 else if (PyUnicode_CompareWithASCIIString(key, "revision") == 0) #else else if (qstrcmp(PyString_AS_STRING(key), "revision") == 0) #endif { PyErr_Clear(); revision = SIPLong_AsLong(value); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "signal 'revision' must be an int, not %s", Py_TYPE(value)->tp_name); Py_XDECREF(name_obj); return -1; } } #if PY_MAJOR_VERSION >= 3 else if (PyUnicode_CompareWithASCIIString(key, "arguments") == 0) #else else if (qstrcmp(PyString_AS_STRING(key), "arguments") == 0) #endif { bool ok = true; if (PySequence_Check(value)) { SIP_SSIZE_T len = PySequence_Size(value); parameter_names = new QList; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *py_attr = PySequence_ITEM(value, i); if (!py_attr) { ok = false; break; } PyObject *py_ascii_attr = py_attr; const char *attr = sipString_AsASCIIString( &py_ascii_attr); Py_DECREF(py_attr); if (!attr) { ok = false; break; } parameter_names->append(QByteArray(attr)); Py_DECREF(py_ascii_attr); } } else { ok = false; } if (!ok) { PyErr_Format(PyExc_TypeError, "signal 'attribute_names' must be a sequence of str, not %s", Py_TYPE(value)->tp_name); if (parameter_names) delete parameter_names; Py_XDECREF(name_obj); return -1; } } else { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "pyqtSignal() got an unexpected keyword argument '%U'", key); #else PyErr_Format(PyExc_TypeError, "pyqtSignal() got an unexpected keyword argument '%s'", PyString_AS_STRING(key)); #endif Py_XDECREF(name_obj); return -1; } } } // If there is at least one argument and it is a sequence then assume all // arguments are sequences. Unfortunately a string is also a sequence so // check for tuples and lists explicitly. if (PyTuple_GET_SIZE(args) > 0 && (PyTuple_Check(PyTuple_GET_ITEM(args, 0)) || PyList_Check(PyTuple_GET_ITEM(args, 0)))) { for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(args); ++i) { PyObject *types = PySequence_Tuple(PyTuple_GET_ITEM(args, i)); if (!types) { PyErr_SetString(PyExc_TypeError, "pyqtSignal() argument expected to be sequence of types"); if (name) { Py_DECREF(name_obj); } return -1; } int rc; if (i == 0) { // The first is the default. rc = init_signal_from_types(ps, name, parameter_names, revision, types); } else { qpycore_pyqtSignal *overload = (qpycore_pyqtSignal *)PyType_GenericNew(&qpycore_pyqtSignal_Type, 0, 0); if (!overload) { rc = -1; } else if ((rc = init_signal_from_types(overload, name, 0, revision, types)) < 0) { Py_DECREF((PyObject *)overload); } else { overload->default_signal = ps; append_overload(overload); } } Py_DECREF(types); if (rc < 0) { if (name) { Py_DECREF(name_obj); } return -1; } } } else if (init_signal_from_types(ps, name, parameter_names, revision, args) < 0) { if (name) { Py_DECREF(name_obj); } return -1; } if (name) { Py_DECREF(name_obj); } return 0; } // The mapping subscript slot. static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; PyObject *sig = (PyObject *)qpycore_find_signal(ps, subscript, "an unbound signal type argument"); Py_XINCREF(sig); return sig; } // Create a new signal instance. qpycore_pyqtSignal *qpycore_pyqtSignal_New(const char *signature, bool *fatal) { // Assume any error is fatal. if (fatal) *fatal = true; Chimera::Signature *parsed_signature = Chimera::parse(signature, "a signal argument"); // At first glance the parse should never fail because the signature // originates from the .sip file. However it might if it includes a type // that has been forward declared, but not yet defined. The only example // in PyQt is the declaration of QWidget by QSignalMapper. Therefore we // assume the error isn't fatal. if (!parsed_signature) { if (fatal) *fatal = false; return 0; } parsed_signature->signature.prepend('2'); // Create and initialise the signal. qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)PyType_GenericNew( &qpycore_pyqtSignal_Type, 0, 0); if (!ps) { delete parsed_signature; return 0; } ps->default_signal = ps; ps->next = 0; ps->docstring = 0; ps->parameter_names = 0; ps->revision = 0; ps->parsed_signature = parsed_signature; ps->emitter = 0; ps->non_signals = 0; return ps; } // Find an overload that matches a subscript. qpycore_pyqtSignal *qpycore_find_signal(qpycore_pyqtSignal *ps, PyObject *subscript, const char *context) { // Make sure the subscript is a tuple. PyObject *args; if (PyTuple_Check(subscript)) { args = subscript; } else { args = PyTuple_New(1); if (!args) return 0; PyTuple_SET_ITEM(args, 0, subscript); } Py_INCREF(subscript); // Parse the subscript as a tuple of types. Chimera::Signature *ss_signature = Chimera::parse(args, 0, context); Py_DECREF(args); if (!ss_signature) return 0; // Search for an overload with this signature. qpycore_pyqtSignal *overload = ps->default_signal; do { if (overload->parsed_signature->arguments() == ss_signature->signature) break; overload = overload->next; } while (overload); delete ss_signature; if (!overload) PyErr_SetString(PyExc_KeyError, "there is no matching overloaded signal"); return overload; } // Initialise a signal when given a tuple of types. static int init_signal_from_types(qpycore_pyqtSignal *ps, const char *name, const QList *parameter_names, int revision, PyObject *types) { Chimera::Signature *parsed_signature = Chimera::parse(types, name, "a pyqtSignal() type argument"); if (!parsed_signature) return -1; if (name) parsed_signature->signature.prepend('2'); ps->default_signal = ps; ps->next = 0; ps->docstring = 0; ps->parameter_names = parameter_names; ps->revision = revision; ps->parsed_signature = parsed_signature; ps->emitter = 0; ps->non_signals = 0; return 0; } // Append an overload to the default signal's list. static void append_overload(qpycore_pyqtSignal *ps) { // Append to the list of overloads. qpycore_pyqtSignal **tailp = &ps->default_signal->next; while (*tailp) tailp = &(*tailp)->next; *tailp = ps; } // Give a signal a name if it hasn't already got one. void qpycore_set_signal_name(qpycore_pyqtSignal *ps, const char *type_name, const char *name) { ps = ps->default_signal; // If the signature already has a name then they all have and there is // nothing more to do. if (!ps->parsed_signature->signature.startsWith('(')) return; do { QByteArray &sig = ps->parsed_signature->signature; sig.prepend(name); sig.prepend('2'); QByteArray &py_sig = ps->parsed_signature->py_signature; py_sig.prepend(name); py_sig.prepend('.'); py_sig.prepend(type_name); ps = ps->next; } while (ps); } // Handle the getting of a lazy attribute, ie. a native Qt signal. int qpycore_get_lazy_attr(const sipTypeDef *td, PyObject *dict) { pyqt5ClassTypeDef *ctd = (pyqt5ClassTypeDef *)td; const pyqt5QtSignal *sigs = ctd->qt_signals; // Handle the trvial case. if (!sigs) return 0; QByteArray default_name; qpycore_pyqtSignal *default_signal = 0; do { // See if we have come to the end of the current signal. if (default_signal && !is_signal_name(sigs->signature, default_name)) { if (PyDict_SetItemString(dict, default_name.constData(), (PyObject *)default_signal) < 0) return -1; default_signal = 0; } bool fatal; qpycore_pyqtSignal *sig = qpycore_pyqtSignal_New(sigs->signature, &fatal); if (!sig) { if (fatal) return -1; PyErr_Clear(); continue; } sig->docstring = sigs->docstring; sig->emitter = sigs->emitter; // See if this is a new default. if (default_signal) { sig->default_signal = default_signal; append_overload(sig); } else { sig->non_signals = sigs->non_signals; default_signal = sig->default_signal = sig; default_name = sigs->signature; default_name.truncate(default_name.indexOf('(')); } } while ((++sigs)->signature); // Save the last one, if any (in case of a non-fatal error). if (!default_signal) return 0; return PyDict_SetItemString(dict, default_name.constData(), (PyObject *)default_signal); } // Return true if a signal signatures has a particular name. static bool is_signal_name(const char *sig, const QByteArray &name) { return (qstrncmp(sig, name.constData(), name.size()) == 0 && sig[name.size()] == '('); } // Call a signal's overloaded method (if there is one). PyObject *qpycore_call_signal_overload(qpycore_pyqtSignal *ps, PyObject *bound, PyObject *args, PyObject *kw) { if (!ps->non_signals) { PyErr_SetString(PyExc_TypeError, "native Qt signal is not callable"); return 0; } PyObject *func = PyCFunction_New(ps->non_signals, bound); if (!func) return 0; PyObject *result = PyCFunction_Call(func, args, kw); Py_DECREF(func); return result; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtsignal.h0000644000076500000240000000465012613140040021366 0ustar philstaff00000000000000// This defines the interfaces for the pyqtSignal type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSIGNAL_H #define _QPYCORE_PYQTSIGNAL_H #include #include #include #include #include "qpycore_chimera.h" extern "C" { // This defines the structure of a PyQt signal. typedef struct _qpycore_pyqtSignal { PyObject_HEAD // The default signal. This is the head of the linked list of overloads // and holds references to rest of the list elements. struct _qpycore_pyqtSignal *default_signal; // The next overload in the list. struct _qpycore_pyqtSignal *next; // The docstring. const char *docstring; // The optional parameter names. const QList *parameter_names; // The revision. int revision; // The parsed signature, not set if there is an emitter. Chimera::Signature *parsed_signature; // An optional emitter. pyqt5EmitFunc emitter; // The non-signal overloads (if any). This is only set for the default. PyMethodDef *non_signals; } qpycore_pyqtSignal; extern PyTypeObject qpycore_pyqtSignal_Type; int qpycore_get_lazy_attr(const sipTypeDef *td, PyObject *dict); } qpycore_pyqtSignal *qpycore_pyqtSignal_New(const char *signature, bool *fatal = 0); qpycore_pyqtSignal *qpycore_find_signal(qpycore_pyqtSignal *ps, PyObject *subscript, const char *context); void qpycore_set_signal_name(qpycore_pyqtSignal *ps, const char *type_name, const char *name); PyObject *qpycore_call_signal_overload(qpycore_pyqtSignal *ps, PyObject *bound, PyObject *args, PyObject *kw); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtslot.cpp0000644000076500000240000002016712613140040021426 0ustar philstaff00000000000000// This contains the implementation of the PyQtSlot class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_chimera.h" #include "qpycore_pyqtslot.h" // Create the slot for an unbound method. PyQtSlot::PyQtSlot(PyObject *method, PyObject *type, const Chimera::Signature *slot_signature) : mfunc(method), mself(0), mself_wr(0), other(0), signature(slot_signature) { #if PY_MAJOR_VERSION < 3 mclass = type; #else Q_UNUSED(type) #endif } // Create the slot for a callable. PyQtSlot::PyQtSlot(PyObject *callable, const Chimera::Signature *slot_signature) : mfunc(0), mself_wr(0), other(0), signature(slot_signature) { if (PyMethod_Check(callable)) { // Save the component parts. mfunc = PyMethod_GET_FUNCTION(callable); mself = PyMethod_GET_SELF(callable); #if PY_MAJOR_VERSION < 3 mclass = PyMethod_GET_CLASS(callable); #endif // Try and create a weak reference to the instance object. mself_wr = PyWeakref_NewRef(mself, 0); } else { // Give the slot an extra reference to keep it alive. Py_INCREF(callable); other = callable; } } // Destroy the slot. PyQtSlot::~PyQtSlot() { Py_XDECREF(mself_wr); Py_XDECREF(other); } // Invoke the slot on behalf of C++. PyQtSlot::Result PyQtSlot::invoke(void **qargs, bool no_receiver_check) const { return invoke(qargs, 0, 0, no_receiver_check); } // Invoke the slot on behalf of C++. bool PyQtSlot::invoke(void **qargs, PyObject *self, void *result) const { return (invoke(qargs, self, result, false) != PyQtSlot::Failed); } // Invoke the slot on behalf of C++. PyQtSlot::Result PyQtSlot::invoke(void **qargs, PyObject *self, void *result, bool no_receiver_check) const { // Get the callable. PyObject *callable; if (other) { callable = other; Py_INCREF(callable); } else { // Use the value we have if one wasn't supplied. if (!self) self = instance(); // See if the instance has gone (which isn't an error). if (self == Py_None) return PyQtSlot::Ignored; // If the receiver wraps a C++ object then ignore the call if it no // longer exists. if (!no_receiver_check && PyObject_TypeCheck(self, sipSimpleWrapper_Type) && !sipGetAddress((sipSimpleWrapper *)self)) return PyQtSlot::Ignored; #if PY_MAJOR_VERSION < 3 callable = PyMethod_New(mfunc, self, mclass); #else callable = PyMethod_New(mfunc, self); #endif } // Convert the C++ arguments to Python objects. const QList &args = signature->parsed_arguments; PyObject *argtup = PyTuple_New(args.size()); if (!argtup) return PyQtSlot::Failed; QList::const_iterator it = args.constBegin(); for (int a = 0; it != args.constEnd(); ++a) { PyObject *arg = (*it)->toPyObject(*++qargs); if (!arg) { Py_DECREF(argtup); return PyQtSlot::Failed; } PyTuple_SET_ITEM(argtup, a, arg); ++it; } // Dispatch to the real slot. PyObject *res = call(callable, argtup); Py_DECREF(argtup); Py_DECREF(callable); if (!res) return PyQtSlot::Failed; // Handle any result if required. bool ok; if (result && signature->result) ok = signature->result->fromPyObject(res, result); else ok = true; Py_DECREF(res); return (ok ? PyQtSlot::Succeeded : PyQtSlot::Failed); } // See if this slot corresponds to the given callable. bool PyQtSlot::operator==(PyObject *callable) const { if (PyMethod_Check(callable)) { if (other) return false; return (mfunc == PyMethod_GET_FUNCTION(callable) && instance() == PyMethod_GET_SELF(callable) #if PY_MAJOR_VERSION < 3 && mclass == PyMethod_GET_CLASS(callable) #endif ); } if (!other) return false; return (other == callable); } // Get the instance object. PyObject *PyQtSlot::instance() const { // Use the weak reference if possible. if (mself_wr) return PyWeakref_GetObject(mself_wr); return mself; } // Call a single slot and return the result. PyObject *PyQtSlot::call(PyObject *callable, PyObject *args) const { PyObject *sa, *oxtype, *oxvalue, *oxtb; // Keep some compilers quiet. oxtype = oxvalue = oxtb = 0; // We make repeated attempts to call a slot. If we work out that it failed // because of an immediate type error we try again with one less argument. // We keep going until we run out of arguments to drop. This emulates the // Qt ability of the slot to accept fewer arguments than a signal provides. sa = args; Py_INCREF(sa); for (;;) { PyObject *nsa, *xtype, *xvalue, *xtb, *res; if ((res = PyEval_CallObject(callable, sa)) != NULL) { // Remove any previous exception. if (sa != args) { Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); PyErr_Clear(); } Py_DECREF(sa); return res; } // Get the exception. PyErr_Fetch(&xtype, &xvalue, &xtb); // See if it is unacceptable. An acceptable failure is a type error // with no traceback - so long as we can still reduce the number of // arguments and try again. if (!PyErr_GivenExceptionMatches(xtype, PyExc_TypeError) || xtb || PyTuple_GET_SIZE(sa) == 0) { // If there is a traceback then we must have called the slot and // the exception was later on - so report the exception as is. if (xtb) { if (sa != args) { Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); } PyErr_Restore(xtype,xvalue,xtb); } else if (sa == args) { PyErr_Restore(xtype, xvalue, xtb); } else { // Discard the latest exception and restore the original one. Py_XDECREF(xtype); Py_XDECREF(xvalue); Py_XDECREF(xtb); PyErr_Restore(oxtype, oxvalue, oxtb); } break; } // If this is the first attempt, save the exception. if (sa == args) { oxtype = xtype; oxvalue = xvalue; oxtb = xtb; } else { Py_XDECREF(xtype); Py_XDECREF(xvalue); Py_XDECREF(xtb); } // Create the new argument tuple. if ((nsa = PyTuple_GetSlice(sa, 0, PyTuple_GET_SIZE(sa) - 1)) == NULL) { // Tidy up. Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); break; } Py_DECREF(sa); sa = nsa; } Py_DECREF(sa); return 0; } // Clear the slot if it has an extra reference. void PyQtSlot::clearOther() { Py_CLEAR(other); } // Visit the slot if it has an extra reference. int PyQtSlot::visitOther(visitproc visit, void *arg) { Py_VISIT(other); return 0; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtslot.h0000644000076500000240000000454212613140040021072 0ustar philstaff00000000000000// This defines the definition of the PyQtSlot class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSLOT_H #define _QPYCORE_PYQTSLOT_H #include #include "qpycore_chimera.h" class PyQtSlot { public: enum Result { Succeeded, // The invocation was successful. Failed, // The invocation failed. Ignored // The invocation was ignore because the receiver has gone. }; PyQtSlot(PyObject *method, PyObject *type, const Chimera::Signature *slot_signature); PyQtSlot(PyObject *callable, const Chimera::Signature *slot_signature); ~PyQtSlot(); PyQtSlot::Result invoke(void **qargs, bool no_receiver_check) const; bool invoke(void **qargs, PyObject *self, void *result) const; const Chimera::Signature *slotSignature() const {return signature;} void clearOther(); int visitOther(visitproc visit, void *arg); bool operator==(PyObject *callable) const; private: PyQtSlot::Result invoke(void **qargs, PyObject *self, void *result, bool no_receiver_check) const; PyObject *call(PyObject *callable, PyObject *args) const; PyObject *instance() const; PyObject *mfunc; PyObject *mself; #if PY_MAJOR_VERSION < 3 PyObject *mclass; #endif PyObject *mself_wr; PyObject *other; const Chimera::Signature *signature; // By forcing the use of pointers we don't need to worry about managing the // reference counts of the component Python objects. PyQtSlot(const PyQtSlot &); PyQtSlot &operator=(const PyQtSlot &); }; #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtslotproxy.cpp0000644000076500000240000002405112613140040022524 0ustar philstaff00000000000000// This contains the implementation of the PyQtSlotProxy class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_qmetaobjectbuilder.h" #include "qpycore_pyqtslot.h" #include "qpycore_pyqtslotproxy.h" #include "sipAPIQtCore.h" // Proxy flags. #define PROXY_SINGLE_SHOT 0x01 // The slot will only be called once. #define PROXY_SLOT_INVOKED 0x02 // The proxied slot is executing. #define PROXY_SLOT_DISABLED 0x04 // The proxy deleteLater() has been called // or should be called after the slot has // finished executing. #define PROXY_NO_RCVR_CHECK 0x08 // The existence of the receiver C++ object // should not be checked. // The last QObject sender. QObject *PyQtSlotProxy::last_sender = 0; // Create a universal proxy used as a slot. Note that this will leak if there // is no transmitter and this is not a single shot slot. There will be no // meta-object if there was a problem creating the proxy. This is called // without the GIL. PyQtSlotProxy::PyQtSlotProxy(PyObject *slot, QObject *q_tx, const Chimera::Signature *slot_signature, bool single_shot) : QObject(), proxy_flags(single_shot ? PROXY_SINGLE_SHOT : 0), signature(slot_signature->signature), transmitter(q_tx) { SIP_BLOCK_THREADS real_slot = new PyQtSlot(slot, slot_signature); SIP_UNBLOCK_THREADS // Create a new meta-object on the heap so that it looks like it has a slot // of the right name and signature. QMetaObjectBuilder builder; builder.setClassName("PyQtSlotProxy"); builder.setSuperClass(&QObject::staticMetaObject); builder.addSlot("unislot()"); builder.addSlot("disable()"); meta_object = builder.toMetaObject(); // Detect when any transmitter is destroyed. (Note that we used to do this // by making the proxy a child of the transmitter. This doesn't work as // expected because QWidget destroys its children before emitting the // destroyed signal.) We use a queued connection in case the proxy is also // connected to the same signal and we want to make sure it has a chance to // invoke the slot before being destroyed. if (transmitter) { // Add this one to the global hash. mutex->lock(); proxy_slots.insert(transmitter, this); mutex->unlock(); connect(transmitter, SIGNAL(destroyed(QObject *)), SLOT(disable()), Qt::QueuedConnection); } } // Destroy a universal proxy. This is called without the GIL. PyQtSlotProxy::~PyQtSlotProxy() { Q_ASSERT((proxy_flags & PROXY_SLOT_INVOKED) == 0); if (transmitter) { mutex->lock(); ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { if (it.value() == this) it = proxy_slots.erase(it); else ++it; } mutex->unlock(); } // Qt can still be tidying up after Python has gone so make sure that it // hasn't. if (Py_IsInitialized()) { SIP_BLOCK_THREADS delete real_slot; SIP_UNBLOCK_THREADS } if (meta_object) { free(const_cast(meta_object)); } } // The static members of PyQtSlotProxy. const QByteArray PyQtSlotProxy::proxy_slot_signature(SLOT(unislot())); QMutex *PyQtSlotProxy::mutex; PyQtSlotProxy::ProxyHash PyQtSlotProxy::proxy_slots; const QMetaObject *PyQtSlotProxy::metaObject() const { return meta_object; } void *PyQtSlotProxy::qt_metacast(const char *_clname) { if (!_clname) return 0; if (qstrcmp(_clname, "PyQtSlotProxy") == 0) return static_cast(const_cast(this)); return QObject::qt_metacast(_clname); } int PyQtSlotProxy::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: unislot(_a); break; case 1: disable(); break; } _id -= 2; } return _id; } // This is the universal slot itself that dispatches to the real slot. void PyQtSlotProxy::unislot(void **qargs) { // If we are marked as disabled (possible if a queued signal has been // disconnected but there is still a signal in the event queue) then just // ignore the call. if (proxy_flags & PROXY_SLOT_DISABLED) return; // sender() must be called without the GIL to avoid possible deadlocks // between the GIL and Qt's internal thread data mutex. QObject *new_last_sender = sender(); SIP_BLOCK_THREADS QObject *saved_last_sender = last_sender; last_sender = new_last_sender; proxy_flags |= PROXY_SLOT_INVOKED; switch (real_slot->invoke(qargs, (proxy_flags & PROXY_NO_RCVR_CHECK))) { case PyQtSlot::Succeeded: break; case PyQtSlot::Failed: pyqt5_err_print(); break; case PyQtSlot::Ignored: proxy_flags |= PROXY_SLOT_DISABLED; break; } proxy_flags &= ~PROXY_SLOT_INVOKED; // Self destruct if we are a single shot or disabled. if (proxy_flags & (PROXY_SINGLE_SHOT|PROXY_SLOT_DISABLED)) { // See the comment in disable() for why we deleteLater(). deleteLater(); } last_sender = saved_last_sender; SIP_UNBLOCK_THREADS } // Disable the slot by destroying it if possible, or delaying its destruction // until the proxied slot returns. void PyQtSlotProxy::disable() { proxy_flags |= PROXY_SLOT_DISABLED; // Delete it if the slot isn't currently executing, otherwise it will be // done after the slot returns. Note that we don't rely on deleteLater() // providing the necessary delay because the slot could process the event // loop and the proxy would be deleted too soon. if ((proxy_flags & PROXY_SLOT_INVOKED) == 0) { // Despite what the Qt documentation suggests, if there are outstanding // queued signals then we may crash so we always delete later when the // event queue will have been flushed. deleteLater(); } } // Find a slot proxy connected to a transmitter. PyQtSlotProxy *PyQtSlotProxy::findSlotProxy(const QObject *transmitter, const QByteArray &signal_signature, PyObject *slot) { PyQtSlotProxy *proxy = 0; mutex->lock(); ProxyHash::const_iterator it(proxy_slots.find(transmitter)); ProxyHash::const_iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { PyQtSlotProxy *sp = it.value(); if (sp->signature == signal_signature && *(sp->real_slot) == slot) { proxy = sp; break; } ++it; } mutex->unlock(); return proxy; } // Delete any slot proxies for a particular transmitter and optional signal // signature. void PyQtSlotProxy::deleteSlotProxies(const QObject *transmitter, const QByteArray &signal_signature) { mutex->lock(); ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { PyQtSlotProxy *sp = it.value(); if (signal_signature.isEmpty() || signal_signature == sp->signature) { it = proxy_slots.erase(it); sp->disable(); } else { ++it; } } mutex->unlock(); } // Clear the extra references of any slots connected to a transmitter. This is // called with the GIL. int PyQtSlotProxy::clearSlotProxies(const QObject *transmitter) { ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { it.value()->real_slot->clearOther(); ++it; } return 0; } // A thing wrapper available to the generated code. int qpycore_clearSlotProxies(const QObject *transmitter) { return PyQtSlotProxy::clearSlotProxies(transmitter); } // Visit the extra references of any slots connected to a transmitter. This is // called with the GIL. int PyQtSlotProxy::visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg) { int vret = 0; ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { if ((vret = it.value()->real_slot->visitOther(visit, arg)) != 0) break; ++it; } return vret; } // A thing wrapper available to the generated code. int qpycore_visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg) { return PyQtSlotProxy::visitSlotProxies(transmitter, visit, arg); } // Get the last sender. QObject *PyQtSlotProxy::lastSender() { return last_sender; } // Disable the check that the receiver C++ object exists before invoking a // slot. void PyQtSlotProxy::disableReceiverCheck() { proxy_flags |= PROXY_NO_RCVR_CHECK; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_pyqtslotproxy.h0000644000076500000240000000646512613140040022202 0ustar philstaff00000000000000// This contains the definition of the PyQtSlotProxy class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSLOTPROXY_H #define _QPYCORE_PYQTSLOTPROXY_H #include #include #include #include #include #include "qpycore_namespace.h" #include "qpycore_chimera.h" QT_BEGIN_NAMESPACE class QMutex; QT_END_NAMESPACE class PyQtSlot; // This class is implements a slot on behalf of Python callables. It is // derived from QObject but is not run through moc. Instead the normal // moc-generated methods are handwritten in order to implement a universal // slot. This requires some knowledge of the internal structure of QObject but // it is likely that they will only change between major Qt versions. class PyQtSlotProxy : public QObject { public: PyQtSlotProxy(PyObject *slot, QObject *transmitter, const Chimera::Signature *slot_signature, bool single_shot); ~PyQtSlotProxy(); static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); void unislot(void **qargs); void disable(); static void deleteSlotProxies(const QObject *transmitter, const QByteArray &signal_signature); static PyQtSlotProxy *findSlotProxy(const QObject *transmitter, const QByteArray &signal_signature, PyObject *slot); void disableReceiverCheck(); static int clearSlotProxies(const QObject *transmitter); static int visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg); static QObject *lastSender(); // The signature of the slot that receives connections. static const QByteArray proxy_slot_signature; // The mutex around the proxies hash. static QMutex *mutex; private: // The last QObject sender. static QObject *last_sender; // The type of a proxy hash. typedef QMultiHash ProxyHash; // The hash of proxies. static ProxyHash proxy_slots; // The proxy flags. int proxy_flags; // The normalised signature. QByteArray signature; // The QObject transmitter the proxy will be connected to (if any). const QObject *transmitter; // The slot we are proxying for. PyQtSlot *real_slot; // The meta-object. const QMetaObject *meta_object; PyQtSlotProxy(const PyQtSlotProxy &); PyQtSlotProxy &operator=(const PyQtSlotProxy &); }; #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qjsonvalue.cpp0000644000076500000240000001032412613140040021710 0ustar philstaff00000000000000// This is the support for QJsonValue. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // See if a Python object can be converted to a QJsonValue. int qpycore_canConvertTo_QJsonValue(PyObject *py) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJsonValue_Type))) return 1; if (PyBool_Check(py)) return 1; if (PyLong_Check(py)) return 1; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) return 1; #endif if (PyFloat_Check(py)) return 1; if (sipCanConvertToType(py, sipType_QString, 0)) return 1; // We must check for QJsonObject before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonObject, 0)) return 1; if (sipCanConvertToType(py, sipType_QJsonArray, 0)) return 1; return sipCanConvertToType(py, sipType_QJsonValue, SIP_NO_CONVERTORS); } // Convert a Python object to a QJsonValue. int qpycore_convertTo_QJsonValue(PyObject *py, PyObject *transferObj, QJsonValue **cpp, int *isErr) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJsonValue_Type))) { *cpp = new QJsonValue((QJsonValue::Type)SIPLong_AsLong(py)); return sipGetState(transferObj); } if (PyBool_Check(py)) { *cpp = new QJsonValue(py == Py_True); return sipGetState(transferObj); } if (PyLong_Check(py)) { *cpp = new QJsonValue((qint64)PyLong_AsLong(py)); return sipGetState(transferObj); } #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) { *cpp = new QJsonValue((int)PyInt_AS_LONG(py)); return sipGetState(transferObj); } #endif if (PyFloat_Check(py)) { *cpp = new QJsonValue((double)PyFloat_AS_DOUBLE(py)); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QString, 0)) { int state; QString *q = reinterpret_cast(sipConvertToType(py, sipType_QString, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(q, sipType_QString, state); return 0; } *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QString, state); return sipGetState(transferObj); } // We must check for QJsonObject before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonObject, 0)) { int state; QJsonObject *q = reinterpret_cast(sipConvertToType(py, sipType_QJsonObject, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(q, sipType_QJsonObject, state); return 0; } *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QJsonObject, state); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QJsonArray, 0)) { int state; QJsonArray *q = reinterpret_cast(sipConvertToType(py, sipType_QJsonArray, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(q, sipType_QJsonArray, state); return 0; } *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QJsonArray, state); return sipGetState(transferObj); } *cpp = reinterpret_cast(sipConvertToType(py, sipType_QJsonValue, transferObj, SIP_NO_CONVERTORS, 0, isErr)); return 0; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qmessagelogger.cpp0000644000076500000240000000615512613140040022535 0ustar philstaff00000000000000// This is the support for QMessageLogger. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // Return the current Python context. This should be called with the GIL. int qpycore_current_context(const char **file, const char **function) { static PyObject *currentframe = 0; static PyObject *getframeinfo = 0; static PyObject *saved_file = 0; static PyObject *saved_function = 0; PyObject *frame, *info, *file_obj, *linenr_obj, *function_obj; int linenr; frame = info = NULL; // Make sure we have what we need from the inspect module. if (!currentframe || !getframeinfo) { PyObject *inspect = PyImport_ImportModule("inspect"); if (inspect) { if (!currentframe) currentframe = PyObject_GetAttrString(inspect, "currentframe"); if (!getframeinfo) getframeinfo = PyObject_GetAttrString(inspect, "getframeinfo"); Py_DECREF(inspect); } if (!currentframe || !getframeinfo) goto py_error; } // Get the current frame. if ((frame = PyObject_CallFunctionObjArgs(currentframe, NULL)) == NULL) goto py_error; // Get the frame details. if ((info = PyObject_CallFunctionObjArgs(getframeinfo, frame, NULL)) == NULL) goto py_error;; if ((file_obj = PyTuple_GetItem(info, 0)) == NULL) goto py_error; if ((linenr_obj = PyTuple_GetItem(info, 1)) == NULL) goto py_error; if ((function_obj = PyTuple_GetItem(info, 2)) == NULL) goto py_error; Py_XDECREF(saved_file); #if PY_MAJOR_VERSION >= 3 saved_file = PyUnicode_AsEncodedString(file_obj, "latin_1", "ignore"); #else saved_file = file_obj; Py_INCREF(saved_file); #endif *file = SIPBytes_AS_STRING(saved_file); linenr = SIPLong_AsLong(linenr_obj); Py_XDECREF(saved_function); #if PY_MAJOR_VERSION >= 3 saved_function = PyUnicode_AsEncodedString(function_obj, "latin_1", "ignore"); #else saved_function = function_obj; Py_INCREF(saved_function); #endif *function = SIPBytes_AS_STRING(saved_function); Py_DECREF(info); Py_DECREF(frame); return linenr; py_error: Py_XDECREF(info); Py_XDECREF(frame); pyqt5_err_print(); *file = *function = ""; return 0; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qmetaobject.cpp0000644000076500000240000001216012613140040022017 0ustar philstaff00000000000000// This is the support code for QMetaObject. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *ArgumentStorage_New(PyObject *type, PyObject *data); #if defined(SIP_USE_PYCAPSULE) extern "C" {static void ArgumentStorage_delete(PyObject *cap);} #else extern "C" {static void ArgumentStorage_delete(void *stv);} #endif // Return a wrapped QGenericArgument for the given type and Python object. PyObject *qpycore_ArgumentFactory(PyObject *type, PyObject *data) { PyObject *as_obj = ArgumentStorage_New(type, data); if (!as_obj) { Chimera::raiseParseException(type, "a Q_ARG()"); return 0; } #if defined(SIP_USE_PYCAPSULE) Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); #else Chimera::Storage *st = reinterpret_cast( PyCObject_AsVoidPtr(as_obj)); #endif QGenericArgument *arg = new QGenericArgument( st->type()->name().constData(), st->address()); PyObject *ga_obj = sipConvertFromNewType(arg, sipType_QGenericArgument, 0); if (ga_obj) { // Stash the storage in the user field so that everything will be // properly garbage collected. ((sipSimpleWrapper *)ga_obj)->user = as_obj; } else { delete arg; Py_DECREF(as_obj); } return ga_obj; } // Return a wrapped QGenericReturnArgument for the given type. PyObject *qpycore_ReturnFactory(PyObject *type) { PyObject *as_obj = ArgumentStorage_New(type, 0); if (!as_obj) { Chimera::raiseParseException(type, "a Q_RETURN_ARG()"); return 0; } #if defined(SIP_USE_PYCAPSULE) Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); #else Chimera::Storage *st = reinterpret_cast( PyCObject_AsVoidPtr(as_obj)); #endif QGenericReturnArgument *arg = new QGenericReturnArgument( st->type()->name().constData(), st->address()); PyObject *gra_obj = sipConvertFromNewType(arg, sipType_QGenericReturnArgument, 0); if (gra_obj) { // Stash the storage in the user field so that everything will be // properly garbage collected. ((sipSimpleWrapper *)gra_obj)->user = as_obj; } else { delete arg; Py_DECREF(as_obj); } return gra_obj; } // Return the Python result from a QGenericReturnArgument. PyObject *qpycore_ReturnValue(PyObject *gra_obj) { PyObject *as_obj = ((sipSimpleWrapper *)gra_obj)->user; #if defined(SIP_USE_PYCAPSULE) Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); #else Chimera::Storage *st = reinterpret_cast( PyCObject_AsVoidPtr(as_obj)); #endif return st->toPyObject(); } #if defined(SIP_USE_PYCAPSULE) // The PyCapsule destructor for the ArgumentStorage type. static void ArgumentStorage_delete(PyObject *cap) { Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(cap, NULL)); const Chimera *ct = st->type(); delete st; delete ct; } #else // The PyCObject destructor for the ArgumentStorage type. static void ArgumentStorage_delete(void *stv) { Chimera::Storage *st = reinterpret_cast(stv); const Chimera *ct = st->type(); delete st; delete ct; } #endif // Returns a Python object wrapping an ArgumentStorage instance. static PyObject *ArgumentStorage_New(PyObject *type, PyObject *data) { const Chimera *ct = Chimera::parse(type); if (!ct) return 0; Chimera::Storage *st; if (data) st = ct->fromPyObjectToStorage(data); else st = ct->storageFactory(); if (!st) { delete ct; return 0; } // Convert to a Python object. #if defined(SIP_USE_PYCAPSULE) PyObject *as_obj = PyCapsule_New(st, NULL, ArgumentStorage_delete); #else PyObject *as_obj = PyCObject_FromVoidPtr(st, ArgumentStorage_delete); #endif if (!as_obj) { delete st; delete ct; } return as_obj; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qmetaobject_helpers.cpp0000644000076500000240000001104212613140040023537 0ustar philstaff00000000000000// This implements the helpers for QMetaObject. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_public_api.h" #include "sipAPIQtCore.h" // Forward declarations. static void connect(QObject *qobj, PyObject *slot_obj, const QByteArray &slot_nm, const QByteArray &args); void qpycore_qmetaobject_connectslotsbyname(QObject *qobj, PyObject *qobj_wrapper) { // Get the class attributes. PyObject *dir = PyObject_Dir((PyObject *)Py_TYPE(qobj_wrapper)); if (!dir) return; PyObject *slot_obj = 0; for (SIP_SSIZE_T li = 0; li < PyList_GET_SIZE(dir); ++li) { PyObject *name_obj = PyList_GET_ITEM(dir, li); // Get the slot object. Py_XDECREF(slot_obj); slot_obj = PyObject_GetAttr(qobj_wrapper, name_obj); if (!slot_obj) continue; // Ignore it if it is not a callable. if (!PyCallable_Check(slot_obj)) continue; // Use the signature attribute instead of the name if there is one. PyObject *sigattr = PyObject_GetAttr(slot_obj, qpycore_dunder_pyqtsignature); if (sigattr) { for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(sigattr); ++i) { PyObject *decoration = PyList_GET_ITEM(sigattr, i); Chimera::Signature *sig = Chimera::Signature::fromPyObject(decoration); QByteArray args = sig->arguments(); if (!args.isEmpty()) connect(qobj, slot_obj, sig->name(), args); } Py_DECREF(sigattr); } else { const char *ascii_name = sipString_AsASCIIString(&name_obj); if (!ascii_name) continue; PyErr_Clear(); connect(qobj, slot_obj, QByteArray(ascii_name), QByteArray()); Py_DECREF(name_obj); } } Py_XDECREF(slot_obj); Py_DECREF(dir); } // Connect up a particular slot name, with optional arguments. static void connect(QObject *qobj, PyObject *slot_obj, const QByteArray &slot_nm, const QByteArray &args) { // Ignore if it's not an autoconnect slot. if (!slot_nm.startsWith("on_")) return; // Extract the names of the emitting object and the signal. int i; i = slot_nm.lastIndexOf('_'); if (i - 3 < 1 || i + 1 >= slot_nm.size()) return; QByteArray ename = slot_nm.mid(3, i - 3); QByteArray sname = slot_nm.mid(i + 1); // Find the emitting object and get its meta-object. QObject *eobj = qobj->findChild(ename); if (!eobj) return; const QMetaObject *mo = eobj->metaObject(); // Got through the methods looking for a matching signal. for (int m = 0; m < mo->methodCount(); ++m) { QMetaMethod mm = mo->method(m); if (mm.methodType() != QMetaMethod::Signal) continue; QByteArray sig(mm.methodSignature()); if (Chimera::Signature::name(sig) != sname) continue; // If we have slot arguments then they must match as well. if (!args.isEmpty() && Chimera::Signature::arguments(sig) != args) continue; QObject *receiver; QByteArray slot_sig; if (pyqt5_get_connection_parts(slot_obj, eobj, sig.constData(), false, &receiver, slot_sig) != sipErrorNone) continue; // Add the type character. sig.prepend('2'); // Connect the signal. QObject::connect(eobj, sig.constData(), receiver, slot_sig.constData()); } } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qmetaobjectbuilder.h0000644000076500000240000000651612613140040023043 0ustar philstaff00000000000000// This defines the subset of the interface to Qt5's internal // QMetaObjectBuilder class. The internal representation of a QMetaObject // changed in Qt5 (specifically revision 7) sufficiently to justify using this // internal code. The alternative would be to reverse engineer other internal // data structures which would be even more fragile. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_QMETAOBJECTBUILDER_H #define _QPYCORE_QMETAOBJECTBUILDER_H #include #include #include QT_BEGIN_NAMESPACE class QMetaEnumBuilder; class QMetaMethodBuilder; class QMetaPropertyBuilder; class Q_CORE_EXPORT QMetaObjectBuilder { public: QMetaObjectBuilder(); virtual ~QMetaObjectBuilder(); void setClassName(const QByteArray &name); void setSuperClass(const QMetaObject *meta); QMetaMethodBuilder addSlot(const QByteArray &signature); QMetaMethodBuilder addSignal(const QByteArray &signature); QMetaPropertyBuilder addProperty(const QByteArray &name, const QByteArray &type, int notifierId=-1); QMetaEnumBuilder addEnumerator(const QByteArray &name); int addClassInfo(const QByteArray &name, const QByteArray &value); int addRelatedMetaObject(const QMetaObject *meta); int indexOfSignal(const QByteArray &signature); QMetaObject *toMetaObject() const; private: Q_DISABLE_COPY(QMetaObjectBuilder) void *d; }; class Q_CORE_EXPORT QMetaMethodBuilder { public: QMetaMethodBuilder() : _mobj(0), _index(0) {} void setReturnType(const QByteArray &type); void setParameterNames(const QList ¶meter_names); void setRevision(int revision); private: const QMetaObjectBuilder *_mobj; int _index; }; class Q_CORE_EXPORT QMetaPropertyBuilder { public: QMetaPropertyBuilder() : _mobj(0), _index(0) {} void setReadable(bool value); void setWritable(bool value); void setResettable(bool value); void setDesignable(bool value); void setScriptable(bool value); void setStored(bool value); void setUser(bool value); void setStdCppSet(bool value); void setEnumOrFlag(bool value); void setConstant(bool value); void setFinal(bool value); void setRevision(int revision); private: const QMetaObjectBuilder *_mobj; int _index; }; class Q_CORE_EXPORT QMetaEnumBuilder { public: QMetaEnumBuilder() : _mobj(0), _index(0) {} void setIsFlag(bool value); int addKey(const QByteArray &name, int value); private: const QMetaObjectBuilder *_mobj; int _index; }; QT_END_NAMESPACE #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qobject_getattr.cpp0000644000076500000240000000771312613140040022712 0ustar philstaff00000000000000// This implements the helper for QObject.__getattr__(). // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtmethodproxy.h" #include "qpycore_pyqtsignal.h" // See if we can find an attribute in the Qt meta-type system. This is // primarily to support access to JavaScript (e.g. QQuickItem) so we don't // support overloads. PyObject *qpycore_qobject_getattr(const QObject *qobj, PyObject *py_qobj, const char *name) { const QMetaObject *mo = qobj->metaObject(); // Try and find a method with the name. QMetaMethod method; int method_index = -1; // Count down to allow overrides (assuming they are possible). for (int m = mo->methodCount() - 1; m >= 0; --m) { method = mo->method(m); if (method.methodType() == QMetaMethod::Constructor) continue; // Get the method name. QByteArray mname(method.methodSignature()); int idx = mname.indexOf('('); if (idx >= 0) mname.truncate(idx); if (mname == name) { method_index = m; break; } } if (method_index < 0) { // Replicate the standard Python exception. PyErr_Format(PyExc_AttributeError, "'%s' object has no attribute '%s'", Py_TYPE(py_qobj)->tp_name, name); return 0; } // Get the value to return. Note that this is recreated each time. We // could put a descriptor in the type dictionary to satisfy the request in // future but the typical use case is getting a value from a C++ proxy // (e.g. QDeclarativeItem) and we can't assume that what is being proxied // is the same each time. PyObject *value; if (method.methodType() == QMetaMethod::Signal) { // We need to keep explicit references to the unbound signals (because // we don't use the type dictionary to do so) because they own the // parsed signature which may be needed by a PyQtSlotProxy at some // point. typedef QHash SignalHash; static SignalHash *sig_hash = 0; // For crappy compilers. if (!sig_hash) sig_hash = new SignalHash; PyObject *sig_obj; QByteArray sig_str = method.methodSignature(); SignalHash::const_iterator it = sig_hash->find(sig_str); if (it == sig_hash->end()) { sig_obj = (PyObject *)qpycore_pyqtSignal_New(sig_str.constData()); if (!sig_obj) return 0; sig_hash->insert(sig_str, sig_obj); } else { sig_obj = it.value(); } value = qpycore_pyqtBoundSignal_New((qpycore_pyqtSignal *)sig_obj, py_qobj, const_cast(qobj)); } else { QByteArray py_name(Py_TYPE(py_qobj)->tp_name); py_name.append('.'); py_name.append(name); value = qpycore_pyqtMethodProxy_New(const_cast(qobj), method_index, py_name); } return value; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qobject_helpers.cpp0000644000076500000240000002152512613140040022677 0ustar philstaff00000000000000// This implements the helpers for QObject. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtslot.h" #include "qpycore_qobject_helpers.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // Forward declarations. static int qt_metacall_worker(sipSimpleWrapper *pySelf, PyTypeObject *pytype, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); // This is the helper for all implementations of QObject::metaObject(). const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base) { // Return the dynamic meta-object if there is one. if (pySelf && ((pyqtWrapperType *)Py_TYPE(pySelf))->metaobject) return ((pyqtWrapperType *)Py_TYPE(pySelf))->metaobject->mo; // Fall back to the static Qt meta-object. return reinterpret_cast(((pyqt5ClassTypeDef *)base)->static_metaobject); } // This is the helper for all implementations of QObject::qt_metacall(). int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a) { // Check if the Python object has gone. if (!pySelf) return -1; SIP_BLOCK_THREADS _id = qt_metacall_worker(pySelf, Py_TYPE(pySelf), base, _c, _id, _a); SIP_UNBLOCK_THREADS return _id; } // This does the real work for all implementations of QObject::qt_metacall(). static int qt_metacall_worker(sipSimpleWrapper *pySelf, PyTypeObject *pytype, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a) { // See if this is a wrapped C++ type rather than a Python sub-type. if (pytype == sipTypeAsPyTypeObject(base)) return _id; _id = qt_metacall_worker(pySelf, pytype->tp_base, base, _c, _id, _a); if (_id < 0) return _id; pyqtWrapperType *pyqt_wt = (pyqtWrapperType *)pytype; qpycore_metaobject *qo = pyqt_wt->metaobject; bool ok = true; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < qo->nr_signals + qo->pslots.count()) { if (_id < qo->nr_signals) { QObject *qthis = reinterpret_cast(sipGetCppPtr(pySelf, sipType_QObject)); Py_BEGIN_ALLOW_THREADS QMetaObject::activate(qthis, qo->mo, _id, _a); Py_END_ALLOW_THREADS } else { PyQtSlot *slot = qo->pslots.at(_id - qo->nr_signals); ok = slot->invoke(_a, (PyObject *)pySelf, _a[0]); } } _id -= qo->nr_signals + qo->pslots.count(); } else if (_c == QMetaObject::ReadProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_get) { PyObject *py = PyObject_CallFunction(prop->pyqtprop_get, const_cast("O"), pySelf); if (py) { ok = prop->pyqtprop_parsed_type->fromPyObject(py, _a[0]); Py_DECREF(py); } else { ok = false; } } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::WriteProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_set) { PyObject *py = prop->pyqtprop_parsed_type->toPyObject(_a[0]); if (py) { PyObject *res = PyObject_CallFunction(prop->pyqtprop_set, const_cast("OO"), pySelf, py); if (res) Py_DECREF(res); else ok = false; Py_DECREF(py); } else { ok = false; } } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::ResetProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_reset) { PyObject *py = PyObject_CallFunction(prop->pyqtprop_reset, const_cast("O"), pySelf); if (py) Py_DECREF(py); else ok = false; } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::QueryPropertyDesignable) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyScriptable) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyStored) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyEditable) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyUser) _id -= qo->pprops.count(); // Handle any Python errors. if (!ok) { pyqt5_err_print(); return -1; } return _id; } // This is the helper for all implementations of QObject::qt_metacast(). bool qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, const sipTypeDef *base, const char *_clname, void **sipCpp) { *sipCpp = 0; if (!_clname) return true; // Check if the Python object has gone. if (!pySelf) return true; bool is_py_class = false; SIP_BLOCK_THREADS PyTypeObject *base_pytype = sipTypeAsPyTypeObject(base); PyObject *mro = Py_TYPE(pySelf)->tp_mro; for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(mro); ++i) { PyTypeObject *pytype = (PyTypeObject *)PyTuple_GET_ITEM(mro, i); if (!PyObject_IsInstance((PyObject *)pytype, (PyObject *)&qpycore_pyqtWrapperType_Type)) continue; const sipTypeDef *td = ((sipWrapperType *)pytype)->type; if (qstrcmp(pytype->tp_name, _clname) == 0) { // The generated type definitions represent the C++ (rather than // Python) hierachy. If the C++ hierachy doesn't match then the // super-type must be provided by a mixin. if (PyType_IsSubtype(base_pytype, pytype)) *sipCpp = sipGetAddress(pySelf); else *sipCpp = sipGetMixinAddress(pySelf, td); is_py_class = true; break; } if (((pyqt5ClassTypeDef *)td)->qt_interface && qstrcmp(((pyqt5ClassTypeDef *)td)->qt_interface, _clname) == 0) { *sipCpp = sipGetMixinAddress(pySelf, td); is_py_class = true; break; } } SIP_UNBLOCK_THREADS return is_py_class; } // This is a helper for QObject.staticMetaObject %GetCode. PyObject *qpycore_qobject_staticmetaobject(PyObject *type_obj) { pyqtWrapperType *pyqt_wt = (pyqtWrapperType *)type_obj; const QMetaObject *mo; if (pyqt_wt->metaobject) { // It's a sub-type of a wrapped type. mo = pyqt_wt->metaobject->mo; } else { // It's a wrapped type. pyqt5ClassTypeDef *pyqt_ctd = (pyqt5ClassTypeDef *)((sipWrapperType *)pyqt_wt)->type; if (!pyqt_ctd) { /* * This is a side effect of a wrapped class not being fully ready * until sip's meta-class's __init__() has run (rather than after * its __new__() method as might be expected). */ PyErr_SetString(PyExc_AttributeError, "staticMetaObject isn't available until the meta-class's __init__ returns"); return 0; } mo = reinterpret_cast(pyqt_ctd->static_metaobject); } return sipConvertFromType(const_cast(mo), sipType_QMetaObject, 0); } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qobject_helpers.h0000644000076500000240000000260012613140040022335 0ustar philstaff00000000000000// This defines the interfaces of the helpers for QObject. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_QOBJECT_HELPERS_H #define _QPYCORE_QOBJECT_HELPERS_H #include #include #include "sipAPIQtCore.h" const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base); int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); bool qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, const sipTypeDef *base, const char *_clname, void **); #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qstring.cpp0000644000076500000240000001263412613140040021216 0ustar philstaff00000000000000// This is the support for QString. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_api.h" // Work out if we should enable PEP 393 support. This is complicated by the // broken LLVM that XCode v4 installs. #if PY_VERSION_HEX >= 0x03030000 #if defined(Q_OS_MAC) #if !defined(__llvm__) || defined(__clang__) // Python v3.3 on a Mac using either g++ or Clang, but not LLVM. #define PYQT_PEP_393 #endif #else // Python v3.3 on a non-Mac. #define PYQT_PEP_393 #endif #endif // Convert a QString to a Python Unicode object. PyObject *qpycore_PyObject_FromQString(const QString &qstr) { PyObject *obj; #if defined(PYQT_PEP_393) // We have to work out exactly which kind to use. We assume ASCII while we // are checking so that we only go through the string once is the most // common case. Note that we can't use PyUnicode_FromKindAndData() because // it doesn't handle surrogates in UCS2 strings. int qt_len = qstr.length(); if ((obj = PyUnicode_New(qt_len, 0x007f)) == NULL) return NULL; int kind = PyUnicode_KIND(obj); void *data = PyUnicode_DATA(obj); const QChar *qch = qstr.constData(); for (int qt_i = 0; qt_i < qt_len; ++qt_i) { ushort uch = qch->unicode(); if (uch > 0x007f) { // This is useless. Py_DECREF(obj); // Work out what kind we really need and what the Python length // should be. Py_UCS4 maxchar = 0x00ff; int py_len = qt_len; while (qt_i < qt_len) { uch = qch->unicode(); if (uch > 0x00ff) { if (maxchar == 0x00ff) maxchar = 0x00ffff; // See if this is a surrogate pair. Note that we cannot // trust that the QString is terminated by a null QChar. if (qch->isHighSurrogate() && qt_i + 1 < qt_len && (qch + 1)->isLowSurrogate()) { maxchar = 0x10ffff; --py_len; ++qch; ++qt_i; } } ++qch; ++qt_i; } // Create the correctly sized object. if ((obj = PyUnicode_New(py_len, maxchar)) == NULL) return NULL; kind = PyUnicode_KIND(obj); data = PyUnicode_DATA(obj); qch = qstr.constData(); int qt_i2 = 0; for (int py_i = 0; py_i < py_len; ++py_i) { Py_UCS4 py_ch; if (qch->isHighSurrogate() && qt_i2 + 1 < qt_len && (qch + 1)->isLowSurrogate()) { py_ch = QChar::surrogateToUcs4(*qch, *(qch + 1)); ++qt_i2; ++qch; } else { py_ch = qch->unicode(); } ++qt_i2; ++qch; PyUnicode_WRITE(kind, data, py_i, py_ch); } break; } ++qch; PyUnicode_WRITE(kind, data, qt_i, uch); } #elif defined(Py_UNICODE_WIDE) QVector ucs4 = qstr.toUcs4(); if ((obj = PyUnicode_FromUnicode(NULL, ucs4.size())) == NULL) return NULL; memcpy(PyUnicode_AS_UNICODE(obj), ucs4.constData(), ucs4.size() * sizeof (Py_UNICODE)); #else if ((obj = PyUnicode_FromUnicode(NULL, qstr.length())) == NULL) return NULL; memcpy(PyUnicode_AS_UNICODE(obj), qstr.utf16(), qstr.length() * sizeof (Py_UNICODE)); #endif return obj; } // Convert a Python Unicode object to a QString. QString qpycore_PyObject_AsQString(PyObject *obj) { #if defined(PYQT_PEP_393) if (PyUnicode_READY(obj) < 0) return QString(); SIP_SSIZE_T len = PyUnicode_GET_LENGTH(obj); switch (PyUnicode_KIND(obj)) { case PyUnicode_1BYTE_KIND: return QString::fromLatin1((char *)PyUnicode_1BYTE_DATA(obj), len); case PyUnicode_2BYTE_KIND: // The (QChar *) cast should be safe. return QString((QChar *)PyUnicode_2BYTE_DATA(obj), len); case PyUnicode_4BYTE_KIND: return QString::fromUcs4(PyUnicode_4BYTE_DATA(obj), len); } return QString(); #elif defined(Py_UNICODE_WIDE) return QString::fromUcs4((const uint *)PyUnicode_AS_UNICODE(obj), PyUnicode_GET_SIZE(obj)); #else return QString::fromUtf16((const ushort *)PyUnicode_AS_UNICODE(obj), PyUnicode_GET_SIZE(obj)); #endif } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qvariant.cpp0000644000076500000240000000313312613140040021346 0ustar philstaff00000000000000// This is the support for QVariant. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" // Return the Python object from the variant. PyObject *qpycore_PyObject_FromQVariant(const QVariant &qvar) { return Chimera::toAnyPyObject(qvar); } // Return a variant containing the Python object. It will be converted to a // C++ instance if possible (ie. if it is a fundamental type or a direct // wrapped type). Otherwise it is left as a Python object (with an increased // reference count). An exception is raised if there was a conversion error. // (The type of the object will never be the cause of an error.) QVariant qpycore_PyObject_AsQVariant(PyObject *obj, int *is_err) { return Chimera::fromAnyPyObject(obj, is_err); } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_qvariant_value.cpp0000644000076500000240000001424112613140040022544 0ustar philstaff00000000000000// This implements the conversion of a QVariant to a Python object and is part // of the public API. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *convert_hash(const Chimera *ct, const QVariantHash &value); static PyObject *convert_list(const Chimera *ct, const QVariantList &value); static PyObject *convert_map(const Chimera *ct, const QVariantMap &value); static PyObject *convert(const Chimera *ct, const QVariant &value); static int add_variant_to_dict(const Chimera *ct, PyObject *dict, const QString &key, const QVariant &value); // Convert a QVariant to a Python object according to an optional type. PyObject *pyqt5_from_qvariant_by_type(QVariant &value, PyObject *type) { PyObject *value_obj; if (type) { const Chimera *ct = Chimera::parse(type); if (!ct) return 0; QVariant::Type wanted = static_cast(ct->metatype()); // Get QVariant to do a conversion if there is one to do. if (value.isValid() && ct->metatype() < static_cast(QVariant::UserType)) { // If we have a QStringList but are not wanting one then convert it // to a QVariantList. if (wanted != QVariant::StringList && value.type() == QVariant::StringList) value.convert(QVariant::List); // If we have a container but are not wanting one then assume we // want a container with elements of the wanted type. if (wanted != QVariant::List && value.type() == QVariant::List) { // If we have a QVariantList but we wanted a QStringList then // assume each variant is a string. if (wanted == QVariant::StringList) value_obj = convert(ct, value); else value_obj = convert_list(ct, value.toList()); } else if (wanted != QVariant::Map && value.type() == QVariant::Map) { value_obj = convert_map(ct, value.toMap()); } else if (wanted != QVariant::Hash && value.type() == QVariant::Hash) { value_obj = convert_hash(ct, value.toHash()); } else { value_obj = convert(ct, value); } } else if (!value.isValid()) { // Convert an invalid value to the default value of the requested // type. if (ct->py_type()) value_obj = PyObject_CallObject(ct->py_type(), NULL); else value_obj = ct->toPyObject(QVariant(wanted)); } else { // This is likely to fail and the exception will say why. value_obj = ct->toPyObject(value); } delete ct; } else { QVariant *heap = new QVariant(value); value_obj = sipConvertFromNewType(heap, sipType_QVariant, 0); if (!value_obj) delete heap; } return value_obj; } // Convert a QVariantList to a list of Python objects. static PyObject *convert_list(const Chimera *ct, const QVariantList &value) { PyObject *list = PyList_New(value.size()); if (!list) return 0; for (int i = 0; i < value.size(); ++i) { PyObject *el = convert(ct, value.at(i)); if (!el) { Py_DECREF(list); return 0; } PyList_SET_ITEM(list, i, el); } return list; } // Convert a QVariantMap to a dict of Python objects. static PyObject *convert_map(const Chimera *ct, const QVariantMap &value) { PyObject *dict = PyDict_New(); if (!dict) return 0; for (QVariantMap::const_iterator it = value.constBegin(); it != value.constEnd(); ++it) { if (add_variant_to_dict(ct, dict, it.key(), it.value()) < 0) { Py_DECREF(dict); return 0; } } return dict; } // Convert a QVariantHash to a dict of Python objects. static PyObject *convert_hash(const Chimera *ct, const QVariantHash &value) { PyObject *dict = PyDict_New(); if (!dict) return 0; for (QVariantHash::const_iterator it = value.constBegin(); it != value.constEnd(); ++it) { if (add_variant_to_dict(ct, dict, it.key(), it.value()) < 0) { Py_DECREF(dict); return 0; } } return dict; } // Convert a QVariant to a Python object. static PyObject *convert(const Chimera *ct, const QVariant &value) { QVariant converted = value; if (!converted.convert(static_cast(ct->metatype()))) converted = value; return ct->toPyObject(converted); } // Add a QVariant to a Python dict with a QString key. static int add_variant_to_dict(const Chimera *ct, PyObject *dict, const QString &key, const QVariant &value) { QString *key_heap = new QString(key); PyObject *key_obj = sipConvertFromNewType(key_heap, sipType_QString, 0); if (!key_obj) { delete key_heap; return 0; } PyObject *value_obj = convert(ct, value); if (!value_obj) { Py_DECREF(key_obj); return 0; } int rc = PyDict_SetItem(dict, key_obj, value_obj); Py_DECREF(key_obj); Py_DECREF(value_obj); return rc; } PyQt-gpl-5.5.1/qpy/QtCore/qpycore_types.cpp0000644000076500000240000005236112613140040020674 0ustar philstaff00000000000000// This contains the meta-type used by PyQt. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include // Defining PYQT_QOBJECT_GUARD will enable code that tries to detect when a // QObject created by Qt (ie. where we don't have a generated virtual dtor) is // destroyed thus allowing us to raise an exception rather than crashing. // However, there are problems: // // 1. The obvious choice to implement this is QWeakPointer. However it cannot // be used across threads. The code checks to see if QObject is in the // current thread, but can't do anything about the QObject being moved to // another thread later on. // // 2. A QObject dtor may invoke a Python reimplementation that causes the // QObject to be wrapped. QWeakPointer will fail an assertion if it is // being created for a QObject that is being deleted (rather than the more // sensible behaviour of creating a null QWeakPointer). // // For the moment we disable the code until we have a better solution. (If you // connect the destroyed signal of a QObject then move the QObject to a // different thread, will the signal be delivered properly?) #if defined(PYQT_QOBJECT_GUARD) #include #include #endif #include "qpycore_chimera.h" #include "qpycore_classinfo.h" #include "qpycore_enums_flags.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslot.h" #include "qpycore_qmetaobjectbuilder.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // A tuple of the property name and definition. typedef QPair PropertyData; // Forward declarations. extern "C" { static int pyqtWrapperType_init(pyqtWrapperType *self, PyObject *args, PyObject *kwds); #if defined(PYQT_QOBJECT_GUARD) static PyObject *pyqtWrapperType_call(PyObject *type, PyObject *args, PyObject *kwds); static void *qpointer_access_func(sipSimpleWrapper *w, AccessFuncOp op); #endif } static int trawl_hierarchy(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops); static int trawl_type(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops); static int create_dynamic_metaobject(pyqtWrapperType *pyqt_wt); static const QMetaObject *get_scope_qmetaobject(const Chimera *ct); static const QMetaObject *get_qmetaobject(pyqtWrapperType *pyqt_wt); // The meta-type for PyQt classes. PyTypeObject qpycore_pyqtWrapperType_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtCore.pyqtWrapperType"), /* tp_name */ sizeof (pyqtWrapperType), /* tp_basicsize */ 0, /* tp_itemsize */ 0, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ #if defined(PYQT_QOBJECT_GUARD) pyqtWrapperType_call, /* tp_call */ #else 0, /* tp_call */ #endif 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ (initproc)pyqtWrapperType_init, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; // The type init slot. static int pyqtWrapperType_init(pyqtWrapperType *self, PyObject *args, PyObject *kwds) { // Let the super-type complete the basic initialisation. if (sipWrapperType_Type->tp_init((PyObject *)self, args, kwds) < 0) return -1; pyqt5ClassTypeDef *pyqt_td = (pyqt5ClassTypeDef *)((sipWrapperType *)self)->type; if (pyqt_td && !sipIsExactWrappedType((sipWrapperType *)self)) { // Create a dynamic meta-object as its base wrapped type has a static // Qt meta-object. if (pyqt_td->static_metaobject && create_dynamic_metaobject(self) < 0) return -1; } return 0; } // Create a dynamic meta-object for a Python type by introspecting its // attributes. Note that it leaks if the type is deleted. static int create_dynamic_metaobject(pyqtWrapperType *pyqt_wt) { PyTypeObject *pytype = (PyTypeObject *)pyqt_wt; qpycore_metaobject *qo = new qpycore_metaobject; QMetaObjectBuilder builder; // Get any class info. QList class_info_list = qpycore_get_class_info_list(); // Get any enums/flags. QList enums_flags_list = qpycore_get_enums_flags_list(); // Get the super-type's meta-object. builder.setSuperClass(get_qmetaobject((pyqtWrapperType *)pytype->tp_base)); // Get the name of the type. Dynamic types have simple names. builder.setClassName(pytype->tp_name); // Go through the class hierarchy getting all PyQt properties, slots and // signals. QList psigs; QMap pprops; if (trawl_hierarchy(pytype, qo, builder, psigs, pprops) < 0) return -1; qo->nr_signals = psigs.count(); // Initialise the header section of the data table. Note that Qt v4.5 // introduced revision 2 which added constructors. However the design is // broken in that the static meta-call function doesn't provide enough // information to determine which Python sub-class of a Qt class is to be // created. So we stick with revision 1 (and don't allow pyqtSlot() to // decorate __init__). // Set up any class information. for (int i = 0; i < class_info_list.count(); ++i) { const ClassInfo &ci = class_info_list.at(i); builder.addClassInfo(ci.first, ci.second); } // Set up any enums/flags. for (int i = 0; i < enums_flags_list.count(); ++i) { const EnumsFlags &ef = enums_flags_list.at(i); QByteArray scoped_name(pytype->tp_name); scoped_name.append("::"); scoped_name.append(ef.name); QMetaEnumBuilder enum_builder = builder.addEnumerator(scoped_name); enum_builder.setIsFlag(ef.isFlag); QHash::const_iterator it = ef.keys.constBegin(); while (it != ef.keys.constEnd()) { enum_builder.addKey(it.key(), it.value()); ++it; } } // Add the signals to the meta-object. for (int g = 0; g < qo->nr_signals; ++g) { const qpycore_pyqtSignal *ps = psigs.at(g); QMetaMethodBuilder signal_builder = builder.addSignal( ps->parsed_signature->signature.mid(1)); if (ps->parameter_names) signal_builder.setParameterNames(*ps->parameter_names); signal_builder.setRevision(ps->revision); } // Add the slots to the meta-object. for (int s = 0; s < qo->pslots.count(); ++s) { const Chimera::Signature *slot_signature = qo->pslots.at(s)->slotSignature(); const QByteArray &sig = slot_signature->signature; QMetaMethodBuilder slot_builder = builder.addSlot(sig); // Add any type. if (slot_signature->result) slot_builder.setReturnType(slot_signature->result->name()); slot_builder.setRevision(slot_signature->revision); } // Add the properties to the meta-object. QMapIterator it(pprops); for (int p = 0; it.hasNext(); ++p) { it.next(); const PropertyData &pprop = it.value(); const char *prop_name = SIPBytes_AS_STRING(pprop.first); qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)pprop.second; int notifier_id; if (pp->pyqtprop_notify) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)pp->pyqtprop_notify; const QByteArray &sig = ps->parsed_signature->signature; notifier_id = builder.indexOfSignal(sig.mid(1)); if (notifier_id < 0) { PyErr_Format(PyExc_TypeError, "the notify signal '%s' was not defined in this class", sig.constData() + 1); // Note that we leak the property name. return -1; } } else { notifier_id = -1; } // A Qt v5 revision 7 meta-object holds the QMetaType::Type of the type // or its name if it is unresolved (ie. not known to the type system). // In Qt v4 both are held. For QObject sub-classes Chimera will fall // back to the QMetaType::QObjectStar if there is no specific meta-type // for the sub-class. This means that, for Qt v4, // QMetaProperty::read() can handle the type. However, Qt v5 doesn't // know that the unresolved type is a QObject sub-class. Therefore we // have to tell it that the property is a QObject, rather than the // sub-class. This means that QMetaProperty.typeName() will always // return "QObject*". QByteArray prop_type; if (pp->pyqtprop_parsed_type->metatype() == QMetaType::QObjectStar) { // However, if the type is a Python sub-class of QObject then we // use the name of the Python type. This anticipates that the type // is one that will be proxied by QML at some point. if (pp->pyqtprop_parsed_type->typeDef() == sipType_QObject) { prop_type = ((PyTypeObject *)pp->pyqtprop_parsed_type->py_type())->tp_name; prop_type.append('*'); } else { prop_type = "QObject*"; } } else { prop_type = pp->pyqtprop_parsed_type->name(); } QMetaPropertyBuilder prop_builder = builder.addProperty(prop_name, prop_type, notifier_id); // Reset the defaults. prop_builder.setReadable(false); prop_builder.setWritable(false); // Enum or flag. if (pp->pyqtprop_parsed_type->isEnum() || pp->pyqtprop_parsed_type->isFlag()) { prop_builder.setEnumOrFlag(true); } if (pp->pyqtprop_get && PyCallable_Check(pp->pyqtprop_get)) { // Readable. prop_builder.setReadable(true); } if (pp->pyqtprop_set && PyCallable_Check(pp->pyqtprop_set)) { // Writable. prop_builder.setWritable(true); // See if the name of the setter follows the Designer convention. // If so tell the UI compilers not to use setProperty(). PyObject *setter_name_obj = PyObject_GetAttr(pp->pyqtprop_set, qpycore_dunder_name); if (setter_name_obj) { PyObject *ascii_obj = setter_name_obj; const char *ascii = sipString_AsASCIIString(&ascii_obj); Py_DECREF(setter_name_obj); if (ascii) { if (qstrlen(ascii) > 3 && ascii[0] == 's' && ascii[1] == 'e' && ascii[2] == 't' && ascii[3] == toupper(prop_name[0]) && qstrcmp(&ascii[4], &prop_name[1]) == 0) prop_builder.setStdCppSet(true); } Py_DECREF(ascii_obj); } PyErr_Clear(); } if (pp->pyqtprop_reset && PyCallable_Check(pp->pyqtprop_reset)) { // Resetable. prop_builder.setResettable(true); } // Add the property flags. Note that Qt4 always seems to have // ResolveEditable set but QMetaObjectBuilder doesn't provide an API // call to do it. prop_builder.setDesignable(pp->pyqtprop_flags & 0x00001000); prop_builder.setScriptable(pp->pyqtprop_flags & 0x00004000); prop_builder.setStored(pp->pyqtprop_flags & 0x00010000); prop_builder.setUser(pp->pyqtprop_flags & 0x00100000); prop_builder.setConstant(pp->pyqtprop_flags & 0x00000400); prop_builder.setFinal(pp->pyqtprop_flags & 0x00000800); prop_builder.setRevision(pp->pyqtprop_revision); // Save the property data for qt_metacall(). (We already have a // reference.) qo->pprops.append(pp); // We've finished with the property name. Py_DECREF(pprop.first); } // Initialise the rest of the meta-object. qo->mo = builder.toMetaObject(); // Save the meta-object. pyqt_wt->metaobject = qo; return 0; } // Trawl a type's hierarchy looking for any slots, signals or properties. static int trawl_hierarchy(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops) { if (trawl_type(pytype, qo, builder, psigs, pprops) < 0) return -1; if (!pytype->tp_bases) return 0; Q_ASSERT(PyTuple_Check(pytype->tp_bases)); for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(pytype->tp_bases); ++i) { PyTypeObject *sup = (PyTypeObject *)PyTuple_GET_ITEM(pytype->tp_bases, i); #if PY_MAJOR_VERSION < 3 /* Ignore classic classes as mixins. */ if (PyClass_Check((PyObject *)sup)) continue; #endif if (PyType_IsSubtype(sup, sipTypeAsPyTypeObject(sipType_QObject))) continue; if (trawl_hierarchy(sup, qo, builder, psigs, pprops) < 0) return -1; } return 0; } // Trawl a type's dict looking for any slots, signals or properties. static int trawl_type(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops) { SIP_SSIZE_T pos = 0; PyObject *key, *value; while (PyDict_Next(pytype->tp_dict, &pos, &key, &value)) { // See if it is a slot, ie. it has been decorated with pyqtSlot(). PyObject *sig_obj = PyObject_GetAttr(value, qpycore_dunder_pyqtsignature); if (sig_obj) { // Make sure it is a list and not some legitimate attribute that // happens to use our special name. if (PyList_Check(sig_obj)) { for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(sig_obj); ++i) { // Set up the skeleton slot. PyObject *decoration = PyList_GET_ITEM(sig_obj, i); Chimera::Signature *slot_signature = Chimera::Signature::fromPyObject(decoration); PyQtSlot *slot = new PyQtSlot(value, (PyObject *)pytype, slot_signature);; qo->pslots.append(slot); } } Py_DECREF(sig_obj); } else { PyErr_Clear(); // Make sure the key is an ASCII string. Delay the error checking // until we know we actually need it. const char *ascii_key = sipString_AsASCIIString(&key); // See if the value is of interest. if (PyObject_TypeCheck(value, &qpycore_pyqtProperty_Type)) { // It is a property. if (!ascii_key) return -1; Py_INCREF(value); qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)value; pprops.insert(pp->pyqtprop_sequence, PropertyData(key, value)); // See if the property has a scope. If so, collect all // QMetaObject pointers that are not in the super-class // hierarchy. const QMetaObject *mo = get_scope_qmetaobject(pp->pyqtprop_parsed_type); if (mo) builder.addRelatedMetaObject(mo); } else if (PyObject_TypeCheck(value, &qpycore_pyqtSignal_Type)) { // It is a signal. if (!ascii_key) return -1; qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)value; // Make sure the signal has a name. qpycore_set_signal_name(ps, pytype->tp_name, ascii_key); // Add all the overloads. do { psigs.append(ps); ps = ps->next; } while (ps); Py_DECREF(key); } else { PyErr_Clear(); } } } return 0; } // Return the QMetaObject for an enum type's scope. static const QMetaObject *get_scope_qmetaobject(const Chimera *ct) { // Check it is an enum. if (!ct->isEnum()) return 0; // Check it has a scope. const sipTypeDef *td = sipTypeScope(ct->typeDef()); if (!td) return 0; // Check the scope is wrapped by PyQt. if (!qpycore_is_pyqt_class(td)) return 0; return get_qmetaobject((pyqtWrapperType *)sipTypeAsPyTypeObject(td)); } // Return the QMetaObject for a type. static const QMetaObject *get_qmetaobject(pyqtWrapperType *pyqt_wt) { // See if it's a sub-type of a wrapped type. if (pyqt_wt->metaobject) return pyqt_wt->metaobject->mo; // It's a wrapped type. return reinterpret_cast(((pyqt5ClassTypeDef *)((sipWrapperType *)pyqt_wt)->type)->static_metaobject); } #if defined(PYQT_QOBJECT_GUARD) // Reimplemented to wrap any QObjects created internally by Qt so that we can // detect if they get destroyed. static PyObject *pyqtWrapperType_call(PyObject *type, PyObject *args, PyObject *kwds) { PyObject *self = sipWrapperType_Type->tp_call(type, args, kwds); // See if the object was created and it is a QObject sub-class. if (self && PyObject_TypeCheck(self, sipTypeAsPyTypeObject(sipType_QObject))) { sipSimpleWrapper *w = (sipSimpleWrapper *)self; // See if it is created internally by Qt and doesn't already have an // access function (e.g. qApp). if (!sipIsDerived(w) && !w->access_func) { QObject *qobj = reinterpret_cast(w->data); // We can only guard objects in the same thread. if (qobj->thread() == QThread::currentThread()) { QWeakPointer *guard = new QWeakPointer(qobj); w->data = guard; w->access_func = qpointer_access_func; } } } return self; } // The access function for guarded QObject pointers. static void *qpointer_access_func(sipSimpleWrapper *w, AccessFuncOp op) { QWeakPointer *guard = reinterpret_cast *>(w->data); void *addr; switch (op) { case UnguardedPointer: addr = guard->data(); break; case GuardedPointer: addr = guard->isNull() ? 0 : guard->data(); break; case ReleaseGuard: delete guard; addr = 0; break; } return addr; } #endif PyQt-gpl-5.5.1/qpy/QtCore/qpycore_types.h0000644000076500000240000000415512613140040020337 0ustar philstaff00000000000000// This defines the interfaces for the meta-type used by PyQt. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_TYPES_H #define _QPYCORE_TYPES_H #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtproperty.h" #include "sipAPIQtCore.h" class PyQtSlot; // This describes a slot. struct qpycore_slot { // The slot itself. sipSlot sip_slot; // The parsed signature. const Chimera::Signature *signature; }; // This describes a dynamic meta-object. struct qpycore_metaobject { // The meta-object built by QMetaObjectBuilder. QMetaObject *mo; // The list of properties. QList pprops; // The list of slots. QList pslots; // The number of signals. int nr_signals; }; extern "C" { /* * The meta-type of a PyQt wrapper type. */ typedef struct _pyqtWrapperType { /* * The super-meta-type. This must be first in the structure so that it can * be cast to a sipWrapperType *. */ sipWrapperType super; /* * The type's dynamic metaobject (for QObject sub-classes) created by * introspecting the Python type. */ qpycore_metaobject *metaobject; } pyqtWrapperType; extern PyTypeObject qpycore_pyqtWrapperType_Type; } #endif PyQt-gpl-5.5.1/qpy/QtDBus/0000755000076500000240000000000012613140040015220 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtDBus/qpydbus_api.h0000644000076500000240000000174712613140040017722 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUS_API_H #define _QPYDBUS_API_H // Initialisation. void qpydbus_post_init(); #endif PyQt-gpl-5.5.1/qpy/QtDBus/qpydbus_chimera_helpers.cpp0000644000076500000240000001315512613140040022632 0ustar philstaff00000000000000// This is the implementation of the various Chimera helpers. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpydbus_chimera_helpers.h" #include "sipAPIQtDBus.h" // Forward declarations. static PyObject *from_variant_type(const QDBusArgument &arg); static PyObject *from_array_type(const QDBusArgument &arg); static PyObject *from_structure_type(const QDBusArgument &arg); static PyObject *from_map_type(const QDBusArgument &arg); static PyObject *from_qstring(const QString &arg); static PyObject *from_qvariant(const QVariant &arg); // Convert a QVariant to a Python object. bool qpydbus_from_qvariant_convertor(const QVariant &var, PyObject **objp) { // Handle QDBusObjectPath. if (var.userType() == qMetaTypeId()) { *objp = from_qstring(var.value().path()); return true; } // Handle QDBusSignature. if (var.userType() == qMetaTypeId()) { *objp = from_qstring(var.value().signature()); return true; } // Handle QDBusVariant. if (var.userType() == qMetaTypeId()) { *objp = from_qvariant(var.value().variant()); return true; } // Anything else must be a QDBusArgument. if (var.userType() != qMetaTypeId()) return false; QDBusArgument arg = var.value(); switch (arg.currentType()) { case QDBusArgument::BasicType: *objp = from_qvariant(arg.asVariant()); break; case QDBusArgument::VariantType: *objp = from_variant_type(arg); break; case QDBusArgument::ArrayType: *objp = from_array_type(arg); break; case QDBusArgument::StructureType: *objp = from_structure_type(arg); break; case QDBusArgument::MapType: *objp = from_map_type(arg); break; default: PyErr_Format(PyExc_TypeError, "unsupported DBus argument type %d", (int)arg.currentType()); *objp = 0; } return true; } // Convert a QDBusArgument variant type to a Python object. static PyObject *from_variant_type(const QDBusArgument &arg) { QDBusVariant dbv; arg >> dbv; return from_qvariant(dbv.variant()); } // Convert a QDBusArgument array type to a Python object. static PyObject *from_array_type(const QDBusArgument &arg) { QVariantList vl; arg.beginArray(); while (!arg.atEnd()) vl.append(arg.asVariant()); arg.endArray(); PyObject *obj = PyList_New(vl.count()); if (!obj) return 0; for (int i = 0; i < vl.count(); ++i) { PyObject *itm = from_qvariant(vl.at(i)); if (!itm) { Py_DECREF(obj); return 0; } PyList_SET_ITEM(obj, i, itm); } return obj; } // Convert a QDBusArgument structure type to a Python object. static PyObject *from_structure_type(const QDBusArgument &arg) { QVariantList vl; arg.beginStructure(); while (!arg.atEnd()) vl.append(arg.asVariant()); arg.endStructure(); PyObject *obj = PyTuple_New(vl.count()); if (!obj) return 0; for (int i = 0; i < vl.count(); ++i) { PyObject *itm = from_qvariant(vl.at(i)); if (!itm) { Py_DECREF(obj); return 0; } PyTuple_SET_ITEM(obj, i, itm); } return obj; } // Convert a QDBusArgument map type to a Python object. static PyObject *from_map_type(const QDBusArgument &arg) { PyObject *obj = PyDict_New(); if (!obj) return 0; arg.beginMap(); while (!arg.atEnd()) { arg.beginMapEntry(); PyObject *key = from_qvariant(arg.asVariant()); PyObject *value = from_qvariant(arg.asVariant()); arg.endMapEntry(); if (!key || !value) { Py_XDECREF(key); Py_XDECREF(value); Py_DECREF(obj); return 0; } int rc = PyDict_SetItem(obj, key, value); Py_DECREF(key); Py_DECREF(value); if (rc < 0) { Py_DECREF(obj); return 0; } } arg.endMap(); return obj; } // Convert a QString to a Python object. static PyObject *from_qstring(const QString &arg) { QString *heap = new QString(arg); PyObject *obj = sipConvertFromNewType(heap, sipType_QString, 0); if (!obj) delete heap; return obj; } // Convert a QVariant to a Python object. static PyObject *from_qvariant(const QVariant &arg) { QVariant *heap = new QVariant(arg); PyObject *obj = sipConvertFromNewType(heap, sipType_QVariant, 0); if (!obj) delete heap; return obj; } PyQt-gpl-5.5.1/qpy/QtDBus/qpydbus_chimera_helpers.h0000644000076500000240000000232412613140040022273 0ustar philstaff00000000000000// This is the definition of the various Chimera helpers. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUS_CHIMERAHELPERS_H #define _QPYDBUS_CHIMERAHELPERS_H #include #include // Keep this in sync. with that defined in the public API. typedef bool (*FromQVariantConvertorFn)(const QVariant &, PyObject **); bool qpydbus_from_qvariant_convertor(const QVariant &var, PyObject **objp); #endif PyQt-gpl-5.5.1/qpy/QtDBus/qpydbus_post_init.cpp0000644000076500000240000000261712613140040021511 0ustar philstaff00000000000000// This is the initialisation support code for the QtDBus module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpydbus_api.h" #include "qpydbus_chimera_helpers.h" #include "sipAPIQtDBus.h" // Perform any required initialisation. void qpydbus_post_init() { // Get the Chimera helper registration function. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); register_from_qvariant_convertor = (void (*)(FromQVariantConvertorFn))sipImportSymbol("pyqt5_register_from_qvariant_convertor"); register_from_qvariant_convertor(qpydbus_from_qvariant_convertor); } PyQt-gpl-5.5.1/qpy/QtDBus/qpydbuspendingreply.cpp0000644000076500000240000000351112613140040022034 0ustar philstaff00000000000000// This is the implementation of the QPyDBusPendingReply class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpydbuspendingreply.h" #include "sipAPIQtDBus.h" // Default ctor. QPyDBusPendingReply::QPyDBusPendingReply() : QDBusPendingReply() { } // Copy a reply. QPyDBusPendingReply::QPyDBusPendingReply(const QPyDBusPendingReply &other) : QDBusPendingReply(other) { } // Extract a reply from another pending call. QPyDBusPendingReply::QPyDBusPendingReply(const QDBusPendingCall &call) : QDBusPendingReply(call) { } // Extract a reply from a message. QPyDBusPendingReply::QPyDBusPendingReply(const QDBusMessage &reply) : QDBusPendingReply(reply) { } // Return the value of the reply. The GIL should be held. PyObject *QPyDBusPendingReply::value(PyObject *type) const { QVariant val; // This will wait for the call to complete. Py_BEGIN_ALLOW_THREADS val = argumentAt(0); Py_END_ALLOW_THREADS return pyqt5_qtdbus_from_qvariant_by_type(val, type); } PyQt-gpl-5.5.1/qpy/QtDBus/qpydbuspendingreply.h0000644000076500000240000000247412613140040021510 0ustar philstaff00000000000000// This is the definition of the QPyDBusPendingReply class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUSPENDINGREPLY_H #define _QPYDBUSPENDINGREPLY_H #include #include class QPyDBusPendingReply : public QDBusPendingReply { public: QPyDBusPendingReply(); QPyDBusPendingReply(const QPyDBusPendingReply &other); QPyDBusPendingReply(const QDBusPendingCall &call); QPyDBusPendingReply(const QDBusMessage &reply); PyObject *value(PyObject *type) const; }; #endif PyQt-gpl-5.5.1/qpy/QtDBus/qpydbusreply.cpp0000644000076500000240000000677712613140040020510 0ustar philstaff00000000000000// This is the implementation of the QPyDBusReply class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpydbusreply.h" #include "sipAPIQtDBus.h" // Extract a reply from a message. The GIL should be held. QPyDBusReply::QPyDBusReply(const QDBusMessage &reply) { *this = reply; } // Extract a reply from a pending call. The GIL should be held. QPyDBusReply::QPyDBusReply(const QDBusPendingCall &call) { *this = call; } // Extract a reply from an error. QPyDBusReply::QPyDBusReply(const QDBusError &error) { _q_value = 0; _q_is_valid = !error.isValid(); _q_error = error; } // Copy a reply. The GIL should be held. QPyDBusReply::QPyDBusReply(const QPyDBusReply &other) { _q_value = other._q_value; Py_XINCREF(_q_value); _q_value_variant = other._q_value_variant; _q_is_valid = other._q_is_valid; _q_error = other._q_error; } // A reply created from a QDBusReply<> mapped type convertor. QPyDBusReply::QPyDBusReply(PyObject *q_value, bool q_is_valid, const QDBusError &q_error) : _q_value(q_value), _q_is_valid(q_is_valid), _q_error(q_error) { } // The dtor. The GIL should be held. QPyDBusReply::~QPyDBusReply() { Py_XDECREF(_q_value); } // Return the value of the reply. The GIL should be held. PyObject *QPyDBusReply::value(PyObject *type) const { if (!_q_is_valid) { PyErr_SetString(PyExc_ValueError, "QDBusReply value is invalid"); return 0; } // Return any explicit value. if (_q_value) { if (type) { PyErr_SetString(PyExc_ValueError, "'type' argument cannot be used with an explcitly typed reply"); return 0; } Py_INCREF(_q_value); return _q_value; } QVariant val(_q_value_variant); return pyqt5_qtdbus_from_qvariant_by_type(val, type); } // Extract a reply from a message. The GIL should be held. QPyDBusReply &QPyDBusReply::operator=(const QDBusMessage &reply) { _q_value = 0; _q_error = reply; _q_is_valid = !_q_error.isValid(); if (_q_is_valid) { QList results = reply.arguments(); if (results.count() == 0) { Py_INCREF(Py_None); _q_value = Py_None; } else { // Convert this later if requested. _q_value_variant = results.at(0); } } return *this; } // Extract a reply from a pending call. The GIL should be held. QPyDBusReply &QPyDBusReply::operator=(const QDBusPendingCall &call) { QDBusPendingCall other(call); Py_BEGIN_ALLOW_THREADS other.waitForFinished(); Py_END_ALLOW_THREADS return *this = other.reply(); } PyQt-gpl-5.5.1/qpy/QtDBus/qpydbusreply.h0000644000076500000240000000337412613140040020143 0ustar philstaff00000000000000// This is the definition of the QPyDBusReply class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUSREPLY_H #define _QPYDBUSREPLY_H #include #include #include class QDBusMessage; class QDBusPendingCall; class QPyDBusReply { public: QPyDBusReply(const QDBusMessage &reply); QPyDBusReply(const QDBusPendingCall &call); QPyDBusReply(const QDBusError &error = QDBusError()); QPyDBusReply(const QPyDBusReply &other); QPyDBusReply(PyObject *q_value, bool q_is_valid, const QDBusError &q_error); ~QPyDBusReply(); inline const QDBusError &error() const {return _q_error;} inline bool isValid() const {return _q_is_valid;} PyObject *value(PyObject *type) const; QPyDBusReply &operator=(const QDBusMessage &reply); QPyDBusReply &operator=(const QDBusPendingCall &call); private: PyObject *_q_value; QVariant _q_value_variant; bool _q_is_valid; QDBusError _q_error; }; #endif PyQt-gpl-5.5.1/qpy/QtDesigner/0000755000076500000240000000000012613140040016123 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtDesigner/qpydesignercontainerextension.h0000644000076500000240000000260212613140040024466 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerContainerExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCONTAINEREXTENSION_H #define _QPYDESIGNERCONTAINEREXTENSION_H #include #include class QPyDesignerContainerExtension : public QObject, public QDesignerContainerExtension { Q_OBJECT Q_INTERFACES(QDesignerContainerExtension) public: QPyDesignerContainerExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerContainerExtension(const QPyDesignerContainerExtension &); }; #endif PyQt-gpl-5.5.1/qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h0000644000076500000240000000272412613140040026565 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerCustomWidgetCollectionPlugin class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCUSTOMWIDGETCOLLECTIONPLUGIN_H #define _QPYDESIGNERCUSTOMWIDGETCOLLECTIONPLUGIN_H #include #include class QPyDesignerCustomWidgetCollectionPlugin : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: QPyDesignerCustomWidgetCollectionPlugin(QObject *parent = 0) : QObject(parent) {} private: QPyDesignerCustomWidgetCollectionPlugin(const QPyDesignerCustomWidgetCollectionPlugin &); }; #endif PyQt-gpl-5.5.1/qpy/QtDesigner/qpydesignercustomwidgetplugin.h0000644000076500000240000000257212613140040024512 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerCustomWidgetPlugin class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCUSTOMWIDGETPLUGIN_H #define _QPYDESIGNERCUSTOMWIDGETPLUGIN_H #include #include class QPyDesignerCustomWidgetPlugin : public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetInterface) public: QPyDesignerCustomWidgetPlugin(QObject *parent = 0) : QObject(parent) {} private: QPyDesignerCustomWidgetPlugin(const QPyDesignerCustomWidgetPlugin &); }; #endif PyQt-gpl-5.5.1/qpy/QtDesigner/qpydesignermembersheetextension.h0000644000076500000240000000262612613140040025012 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerMemberSheetExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERMEMBERSHEETEXTENSION_H #define _QPYDESIGNERMEMBERSHEETEXTENSION_H #include #include class QPyDesignerMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension { Q_OBJECT Q_INTERFACES(QDesignerMemberSheetExtension) public: QPyDesignerMemberSheetExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerMemberSheetExtension(const QPyDesignerMemberSheetExtension &); }; #endif PyQt-gpl-5.5.1/qpy/QtDesigner/qpydesignerpropertysheetextension.h0000644000076500000240000000265212613140040025426 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerPropertySheetExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERPROPERTYSHEETEXTENSION_H #define _QPYDESIGNERPROPERTYSHEETEXTENSION_H #include #include class QPyDesignerPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension { Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) public: QPyDesignerPropertySheetExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerPropertySheetExtension(const QPyDesignerPropertySheetExtension &); }; #endif PyQt-gpl-5.5.1/qpy/QtDesigner/qpydesignertaskmenuextension.h0000644000076500000240000000257012613140040024337 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerTaskMenuExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERTASKMENUEXTENSION_H #define _QPYDESIGNERTASKMENUEXTENSION_H #include #include class QPyDesignerTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: QPyDesignerTaskMenuExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerTaskMenuExtension(const QPyDesignerTaskMenuExtension &); }; #endif PyQt-gpl-5.5.1/qpy/QtGui/0000755000076500000240000000000012613140040015107 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_add_constants.cpp0000644000076500000240000063226712613140040022555 0ustar philstaff00000000000000/* * This implements a function to populate a Python object with the OpenGL * constants. This file is automatically generated. * * Copyright (c) 2015 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) struct OpenGLEnum_i { const char *name; int value; }; static OpenGLEnum_i openGLEnums_i[] = { {"GL_CURRENT_BIT", 0x00000001}, {"GL_POINT_BIT", 0x00000002}, {"GL_LINE_BIT", 0x00000004}, {"GL_POLYGON_BIT", 0x00000008}, {"GL_POLYGON_STIPPLE_BIT", 0x00000010}, {"GL_PIXEL_MODE_BIT", 0x00000020}, {"GL_LIGHTING_BIT", 0x00000040}, {"GL_FOG_BIT", 0x00000080}, {"GL_DEPTH_BUFFER_BIT", 0x00000100}, {"GL_ACCUM_BUFFER_BIT", 0x00000200}, {"GL_STENCIL_BUFFER_BIT", 0x00000400}, {"GL_VIEWPORT_BIT", 0x00000800}, {"GL_TRANSFORM_BIT", 0x00001000}, {"GL_ENABLE_BIT", 0x00002000}, {"GL_COLOR_BUFFER_BIT", 0x00004000}, {"GL_HINT_BIT", 0x00008000}, {"GL_EVAL_BIT", 0x00010000}, {"GL_LIST_BIT", 0x00020000}, {"GL_TEXTURE_BIT", 0x00040000}, {"GL_SCISSOR_BIT", 0x00080000}, {"GL_MULTISAMPLE_BIT", 0x20000000}, {"GL_MULTISAMPLE_BIT_ARB", 0x20000000}, {"GL_MULTISAMPLE_BIT_EXT", 0x20000000}, {"GL_MULTISAMPLE_BIT_3DFX", 0x20000000}, {"GL_ALL_ATTRIB_BITS", static_cast(0xFFFFFFFF)}, {"GL_COVERAGE_BUFFER_BIT_NV", 0x00008000}, {"GL_CLIENT_PIXEL_STORE_BIT", 0x00000001}, {"GL_CLIENT_VERTEX_ARRAY_BIT", 0x00000002}, {"GL_CLIENT_ALL_ATTRIB_BITS", static_cast(0xFFFFFFFF)}, {"GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT", 0x00000001}, {"GL_CONTEXT_FLAG_DEBUG_BIT", 0x00000002}, {"GL_CONTEXT_FLAG_DEBUG_BIT_KHR", 0x00000002}, {"GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB", 0x00000004}, {"GL_CONTEXT_CORE_PROFILE_BIT", 0x00000001}, {"GL_CONTEXT_COMPATIBILITY_PROFILE_BIT", 0x00000002}, {"GL_MAP_READ_BIT", 0x0001}, {"GL_MAP_READ_BIT_EXT", 0x0001}, {"GL_MAP_WRITE_BIT", 0x0002}, {"GL_MAP_WRITE_BIT_EXT", 0x0002}, {"GL_MAP_INVALIDATE_RANGE_BIT", 0x0004}, {"GL_MAP_INVALIDATE_RANGE_BIT_EXT", 0x0004}, {"GL_MAP_INVALIDATE_BUFFER_BIT", 0x0008}, {"GL_MAP_INVALIDATE_BUFFER_BIT_EXT", 0x0008}, {"GL_MAP_FLUSH_EXPLICIT_BIT", 0x0010}, {"GL_MAP_FLUSH_EXPLICIT_BIT_EXT", 0x0010}, {"GL_MAP_UNSYNCHRONIZED_BIT", 0x0020}, {"GL_MAP_UNSYNCHRONIZED_BIT_EXT", 0x0020}, {"GL_MAP_PERSISTENT_BIT", 0x0040}, {"GL_MAP_COHERENT_BIT", 0x0080}, {"GL_DYNAMIC_STORAGE_BIT", 0x0100}, {"GL_CLIENT_STORAGE_BIT", 0x0200}, {"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT", 0x00000001}, {"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT", 0x00000001}, {"GL_ELEMENT_ARRAY_BARRIER_BIT", 0x00000002}, {"GL_ELEMENT_ARRAY_BARRIER_BIT_EXT", 0x00000002}, {"GL_UNIFORM_BARRIER_BIT", 0x00000004}, {"GL_UNIFORM_BARRIER_BIT_EXT", 0x00000004}, {"GL_TEXTURE_FETCH_BARRIER_BIT", 0x00000008}, {"GL_TEXTURE_FETCH_BARRIER_BIT_EXT", 0x00000008}, {"GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV", 0x00000010}, {"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT", 0x00000020}, {"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT", 0x00000020}, {"GL_COMMAND_BARRIER_BIT", 0x00000040}, {"GL_COMMAND_BARRIER_BIT_EXT", 0x00000040}, {"GL_PIXEL_BUFFER_BARRIER_BIT", 0x00000080}, {"GL_PIXEL_BUFFER_BARRIER_BIT_EXT", 0x00000080}, {"GL_TEXTURE_UPDATE_BARRIER_BIT", 0x00000100}, {"GL_TEXTURE_UPDATE_BARRIER_BIT_EXT", 0x00000100}, {"GL_BUFFER_UPDATE_BARRIER_BIT", 0x00000200}, {"GL_BUFFER_UPDATE_BARRIER_BIT_EXT", 0x00000200}, {"GL_FRAMEBUFFER_BARRIER_BIT", 0x00000400}, {"GL_FRAMEBUFFER_BARRIER_BIT_EXT", 0x00000400}, {"GL_TRANSFORM_FEEDBACK_BARRIER_BIT", 0x00000800}, {"GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT", 0x00000800}, {"GL_ATOMIC_COUNTER_BARRIER_BIT", 0x00001000}, {"GL_ATOMIC_COUNTER_BARRIER_BIT_EXT", 0x00001000}, {"GL_SHADER_STORAGE_BARRIER_BIT", 0x00002000}, {"GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT", 0x00004000}, {"GL_QUERY_BUFFER_BARRIER_BIT", 0x00008000}, {"GL_ALL_BARRIER_BITS", static_cast(0xFFFFFFFF)}, {"GL_ALL_BARRIER_BITS_EXT", static_cast(0xFFFFFFFF)}, {"GL_SYNC_FLUSH_COMMANDS_BIT", 0x00000001}, {"GL_SYNC_FLUSH_COMMANDS_BIT_APPLE", 0x00000001}, {"GL_VERTEX_SHADER_BIT", 0x00000001}, {"GL_VERTEX_SHADER_BIT_EXT", 0x00000001}, {"GL_FRAGMENT_SHADER_BIT", 0x00000002}, {"GL_FRAGMENT_SHADER_BIT_EXT", 0x00000002}, {"GL_GEOMETRY_SHADER_BIT", 0x00000004}, {"GL_TESS_CONTROL_SHADER_BIT", 0x00000008}, {"GL_TESS_EVALUATION_SHADER_BIT", 0x00000010}, {"GL_COMPUTE_SHADER_BIT", 0x00000020}, {"GL_ALL_SHADER_BITS", static_cast(0xFFFFFFFF)}, {"GL_ALL_SHADER_BITS_EXT", static_cast(0xFFFFFFFF)}, {"GL_TEXTURE_STORAGE_SPARSE_BIT_AMD", 0x00000001}, {"GL_RED_BIT_ATI", 0x00000001}, {"GL_GREEN_BIT_ATI", 0x00000002}, {"GL_BLUE_BIT_ATI", 0x00000004}, {"GL_2X_BIT_ATI", 0x00000001}, {"GL_4X_BIT_ATI", 0x00000002}, {"GL_8X_BIT_ATI", 0x00000004}, {"GL_HALF_BIT_ATI", 0x00000008}, {"GL_QUARTER_BIT_ATI", 0x00000010}, {"GL_EIGHTH_BIT_ATI", 0x00000020}, {"GL_SATURATE_BIT_ATI", 0x00000040}, {"GL_COMP_BIT_ATI", 0x00000002}, {"GL_NEGATE_BIT_ATI", 0x00000004}, {"GL_BIAS_BIT_ATI", 0x00000008}, {"GL_TRACE_OPERATIONS_BIT_MESA", 0x0001}, {"GL_TRACE_PRIMITIVES_BIT_MESA", 0x0002}, {"GL_TRACE_ARRAYS_BIT_MESA", 0x0004}, {"GL_TRACE_TEXTURES_BIT_MESA", 0x0008}, {"GL_TRACE_PIXELS_BIT_MESA", 0x0010}, {"GL_TRACE_ERRORS_BIT_MESA", 0x0020}, {"GL_TRACE_ALL_BITS_MESA", 0xFFFF}, {"GL_BOLD_BIT_NV", 0x01}, {"GL_ITALIC_BIT_NV", 0x02}, {"GL_GLYPH_WIDTH_BIT_NV", 0x01}, {"GL_GLYPH_HEIGHT_BIT_NV", 0x02}, {"GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV", 0x04}, {"GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV", 0x08}, {"GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV", 0x10}, {"GL_GLYPH_VERTICAL_BEARING_X_BIT_NV", 0x20}, {"GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV", 0x40}, {"GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV", 0x80}, {"GL_GLYPH_HAS_KERNING_BIT_NV", 0x100}, {"GL_FONT_X_MIN_BOUNDS_BIT_NV", 0x00010000}, {"GL_FONT_Y_MIN_BOUNDS_BIT_NV", 0x00020000}, {"GL_FONT_X_MAX_BOUNDS_BIT_NV", 0x00040000}, {"GL_FONT_Y_MAX_BOUNDS_BIT_NV", 0x00080000}, {"GL_FONT_UNITS_PER_EM_BIT_NV", 0x00100000}, {"GL_FONT_ASCENDER_BIT_NV", 0x00200000}, {"GL_FONT_DESCENDER_BIT_NV", 0x00400000}, {"GL_FONT_HEIGHT_BIT_NV", 0x00800000}, {"GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV", 0x01000000}, {"GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV", 0x02000000}, {"GL_FONT_UNDERLINE_POSITION_BIT_NV", 0x04000000}, {"GL_FONT_UNDERLINE_THICKNESS_BIT_NV", 0x08000000}, {"GL_FONT_HAS_KERNING_BIT_NV", 0x10000000}, {"GL_VERTEX23_BIT_PGI", 0x00000004}, {"GL_VERTEX4_BIT_PGI", 0x00000008}, {"GL_COLOR3_BIT_PGI", 0x00010000}, {"GL_COLOR4_BIT_PGI", 0x00020000}, {"GL_EDGEFLAG_BIT_PGI", 0x00040000}, {"GL_INDEX_BIT_PGI", 0x00080000}, {"GL_MAT_AMBIENT_BIT_PGI", 0x00100000}, {"GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI", 0x00200000}, {"GL_MAT_DIFFUSE_BIT_PGI", 0x00400000}, {"GL_MAT_EMISSION_BIT_PGI", 0x00800000}, {"GL_MAT_COLOR_INDEXES_BIT_PGI", 0x01000000}, {"GL_MAT_SHININESS_BIT_PGI", 0x02000000}, {"GL_MAT_SPECULAR_BIT_PGI", 0x04000000}, {"GL_NORMAL_BIT_PGI", 0x08000000}, {"GL_TEXCOORD1_BIT_PGI", 0x10000000}, {"GL_TEXCOORD2_BIT_PGI", 0x20000000}, {"GL_TEXCOORD3_BIT_PGI", 0x40000000}, {"GL_TEXCOORD4_BIT_PGI", static_cast(0x80000000)}, {"GL_COLOR_BUFFER_BIT0_QCOM", 0x00000001}, {"GL_COLOR_BUFFER_BIT1_QCOM", 0x00000002}, {"GL_COLOR_BUFFER_BIT2_QCOM", 0x00000004}, {"GL_COLOR_BUFFER_BIT3_QCOM", 0x00000008}, {"GL_COLOR_BUFFER_BIT4_QCOM", 0x00000010}, {"GL_COLOR_BUFFER_BIT5_QCOM", 0x00000020}, {"GL_COLOR_BUFFER_BIT6_QCOM", 0x00000040}, {"GL_COLOR_BUFFER_BIT7_QCOM", 0x00000080}, {"GL_DEPTH_BUFFER_BIT0_QCOM", 0x00000100}, {"GL_DEPTH_BUFFER_BIT1_QCOM", 0x00000200}, {"GL_DEPTH_BUFFER_BIT2_QCOM", 0x00000400}, {"GL_DEPTH_BUFFER_BIT3_QCOM", 0x00000800}, {"GL_DEPTH_BUFFER_BIT4_QCOM", 0x00001000}, {"GL_DEPTH_BUFFER_BIT5_QCOM", 0x00002000}, {"GL_DEPTH_BUFFER_BIT6_QCOM", 0x00004000}, {"GL_DEPTH_BUFFER_BIT7_QCOM", 0x00008000}, {"GL_STENCIL_BUFFER_BIT0_QCOM", 0x00010000}, {"GL_STENCIL_BUFFER_BIT1_QCOM", 0x00020000}, {"GL_STENCIL_BUFFER_BIT2_QCOM", 0x00040000}, {"GL_STENCIL_BUFFER_BIT3_QCOM", 0x00080000}, {"GL_STENCIL_BUFFER_BIT4_QCOM", 0x00100000}, {"GL_STENCIL_BUFFER_BIT5_QCOM", 0x00200000}, {"GL_STENCIL_BUFFER_BIT6_QCOM", 0x00400000}, {"GL_STENCIL_BUFFER_BIT7_QCOM", 0x00800000}, {"GL_MULTISAMPLE_BUFFER_BIT0_QCOM", 0x01000000}, {"GL_MULTISAMPLE_BUFFER_BIT1_QCOM", 0x02000000}, {"GL_MULTISAMPLE_BUFFER_BIT2_QCOM", 0x04000000}, {"GL_MULTISAMPLE_BUFFER_BIT3_QCOM", 0x08000000}, {"GL_MULTISAMPLE_BUFFER_BIT4_QCOM", 0x10000000}, {"GL_MULTISAMPLE_BUFFER_BIT5_QCOM", 0x20000000}, {"GL_MULTISAMPLE_BUFFER_BIT6_QCOM", 0x40000000}, {"GL_MULTISAMPLE_BUFFER_BIT7_QCOM", static_cast(0x80000000)}, {"GL_TEXTURE_DEFORMATION_BIT_SGIX", 0x00000001}, {"GL_GEOMETRY_DEFORMATION_BIT_SGIX", 0x00000002}, {"GL_RESTART_SUN", 0x0001}, {"GL_REPLACE_MIDDLE_SUN", 0x0002}, {"GL_REPLACE_OLDEST_SUN", 0x0003}, {"GL_LAYOUT_DEFAULT_INTEL", 0}, {"GL_LAYOUT_LINEAR_INTEL", 1}, {"GL_LAYOUT_LINEAR_CPU_CACHED_INTEL", 2}, {"GL_NEXT_BUFFER_NV", -2}, {"GL_SKIP_COMPONENTS4_NV", -3}, {"GL_SKIP_COMPONENTS3_NV", -4}, {"GL_SKIP_COMPONENTS2_NV", -5}, {"GL_SKIP_COMPONENTS1_NV", -6}, {"GL_CLOSE_PATH_NV", 0x00}, {"GL_MOVE_TO_NV", 0x02}, {"GL_RELATIVE_MOVE_TO_NV", 0x03}, {"GL_LINE_TO_NV", 0x04}, {"GL_RELATIVE_LINE_TO_NV", 0x05}, {"GL_HORIZONTAL_LINE_TO_NV", 0x06}, {"GL_RELATIVE_HORIZONTAL_LINE_TO_NV", 0x07}, {"GL_VERTICAL_LINE_TO_NV", 0x08}, {"GL_RELATIVE_VERTICAL_LINE_TO_NV", 0x09}, {"GL_QUADRATIC_CURVE_TO_NV", 0x0A}, {"GL_RELATIVE_QUADRATIC_CURVE_TO_NV", 0x0B}, {"GL_CUBIC_CURVE_TO_NV", 0x0C}, {"GL_RELATIVE_CUBIC_CURVE_TO_NV", 0x0D}, {"GL_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0E}, {"GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0F}, {"GL_SMOOTH_CUBIC_CURVE_TO_NV", 0x10}, {"GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV", 0x11}, {"GL_SMALL_CCW_ARC_TO_NV", 0x12}, {"GL_RELATIVE_SMALL_CCW_ARC_TO_NV", 0x13}, {"GL_SMALL_CW_ARC_TO_NV", 0x14}, {"GL_RELATIVE_SMALL_CW_ARC_TO_NV", 0x15}, {"GL_LARGE_CCW_ARC_TO_NV", 0x16}, {"GL_RELATIVE_LARGE_CCW_ARC_TO_NV", 0x17}, {"GL_LARGE_CW_ARC_TO_NV", 0x18}, {"GL_RELATIVE_LARGE_CW_ARC_TO_NV", 0x19}, {"GL_RESTART_PATH_NV", 0xF0}, {"GL_DUP_FIRST_CUBIC_CURVE_TO_NV", 0xF2}, {"GL_DUP_LAST_CUBIC_CURVE_TO_NV", 0xF4}, {"GL_RECT_NV", 0xF6}, {"GL_CIRCULAR_CCW_ARC_TO_NV", 0xF8}, {"GL_CIRCULAR_CW_ARC_TO_NV", 0xFA}, {"GL_CIRCULAR_TANGENT_ARC_TO_NV", 0xFC}, {"GL_ARC_TO_NV", 0xFE}, {"GL_RELATIVE_ARC_TO_NV", 0xFF}, {"GL_FALSE", 0}, {"GL_NO_ERROR", 0}, {"GL_ZERO", 0}, {"GL_NONE", 0}, {"GL_NONE_OES", 0}, {"GL_TRUE", 1}, {"GL_ONE", 1}, {"GL_VERSION_ES_CL_1_0", 1}, {"GL_VERSION_ES_CM_1_1", 1}, {"GL_VERSION_ES_CL_1_1", 1}, {"GL_POINTS", 0x0000}, {"GL_LINES", 0x0001}, {"GL_LINE_LOOP", 0x0002}, {"GL_LINE_STRIP", 0x0003}, {"GL_TRIANGLES", 0x0004}, {"GL_TRIANGLE_STRIP", 0x0005}, {"GL_TRIANGLE_FAN", 0x0006}, {"GL_QUADS", 0x0007}, {"GL_QUAD_STRIP", 0x0008}, {"GL_POLYGON", 0x0009}, {"GL_LINES_ADJACENCY", 0x000A}, {"GL_LINES_ADJACENCY_ARB", 0x000A}, {"GL_LINES_ADJACENCY_EXT", 0x000A}, {"GL_LINE_STRIP_ADJACENCY", 0x000B}, {"GL_LINE_STRIP_ADJACENCY_ARB", 0x000B}, {"GL_LINE_STRIP_ADJACENCY_EXT", 0x000B}, {"GL_TRIANGLES_ADJACENCY", 0x000C}, {"GL_TRIANGLES_ADJACENCY_ARB", 0x000C}, {"GL_TRIANGLES_ADJACENCY_EXT", 0x000C}, {"GL_TRIANGLE_STRIP_ADJACENCY", 0x000D}, {"GL_TRIANGLE_STRIP_ADJACENCY_ARB", 0x000D}, {"GL_TRIANGLE_STRIP_ADJACENCY_EXT", 0x000D}, {"GL_PATCHES", 0x000E}, {"GL_ACCUM", 0x0100}, {"GL_LOAD", 0x0101}, {"GL_RETURN", 0x0102}, {"GL_MULT", 0x0103}, {"GL_ADD", 0x0104}, {"GL_NEVER", 0x0200}, {"GL_LESS", 0x0201}, {"GL_EQUAL", 0x0202}, {"GL_LEQUAL", 0x0203}, {"GL_GREATER", 0x0204}, {"GL_NOTEQUAL", 0x0205}, {"GL_GEQUAL", 0x0206}, {"GL_ALWAYS", 0x0207}, {"GL_SRC_COLOR", 0x0300}, {"GL_ONE_MINUS_SRC_COLOR", 0x0301}, {"GL_SRC_ALPHA", 0x0302}, {"GL_ONE_MINUS_SRC_ALPHA", 0x0303}, {"GL_DST_ALPHA", 0x0304}, {"GL_ONE_MINUS_DST_ALPHA", 0x0305}, {"GL_DST_COLOR", 0x0306}, {"GL_ONE_MINUS_DST_COLOR", 0x0307}, {"GL_SRC_ALPHA_SATURATE", 0x0308}, {"GL_FRONT_LEFT", 0x0400}, {"GL_FRONT_RIGHT", 0x0401}, {"GL_BACK_LEFT", 0x0402}, {"GL_BACK_RIGHT", 0x0403}, {"GL_FRONT", 0x0404}, {"GL_BACK", 0x0405}, {"GL_LEFT", 0x0406}, {"GL_RIGHT", 0x0407}, {"GL_FRONT_AND_BACK", 0x0408}, {"GL_AUX0", 0x0409}, {"GL_AUX1", 0x040A}, {"GL_AUX2", 0x040B}, {"GL_AUX3", 0x040C}, {"GL_INVALID_ENUM", 0x0500}, {"GL_INVALID_VALUE", 0x0501}, {"GL_INVALID_OPERATION", 0x0502}, {"GL_STACK_OVERFLOW", 0x0503}, {"GL_STACK_OVERFLOW_KHR", 0x0503}, {"GL_STACK_UNDERFLOW", 0x0504}, {"GL_STACK_UNDERFLOW_KHR", 0x0504}, {"GL_OUT_OF_MEMORY", 0x0505}, {"GL_INVALID_FRAMEBUFFER_OPERATION", 0x0506}, {"GL_INVALID_FRAMEBUFFER_OPERATION_EXT", 0x0506}, {"GL_INVALID_FRAMEBUFFER_OPERATION_OES", 0x0506}, {"GL_2D", 0x0600}, {"GL_3D", 0x0601}, {"GL_3D_COLOR", 0x0602}, {"GL_3D_COLOR_TEXTURE", 0x0603}, {"GL_4D_COLOR_TEXTURE", 0x0604}, {"GL_PASS_THROUGH_TOKEN", 0x0700}, {"GL_POINT_TOKEN", 0x0701}, {"GL_LINE_TOKEN", 0x0702}, {"GL_POLYGON_TOKEN", 0x0703}, {"GL_BITMAP_TOKEN", 0x0704}, {"GL_DRAW_PIXEL_TOKEN", 0x0705}, {"GL_COPY_PIXEL_TOKEN", 0x0706}, {"GL_LINE_RESET_TOKEN", 0x0707}, {"GL_EXP", 0x0800}, {"GL_EXP2", 0x0801}, {"GL_CW", 0x0900}, {"GL_CCW", 0x0901}, {"GL_COEFF", 0x0A00}, {"GL_ORDER", 0x0A01}, {"GL_DOMAIN", 0x0A02}, {"GL_CURRENT_COLOR", 0x0B00}, {"GL_CURRENT_INDEX", 0x0B01}, {"GL_CURRENT_NORMAL", 0x0B02}, {"GL_CURRENT_TEXTURE_COORDS", 0x0B03}, {"GL_CURRENT_RASTER_COLOR", 0x0B04}, {"GL_CURRENT_RASTER_INDEX", 0x0B05}, {"GL_CURRENT_RASTER_TEXTURE_COORDS", 0x0B06}, {"GL_CURRENT_RASTER_POSITION", 0x0B07}, {"GL_CURRENT_RASTER_POSITION_VALID", 0x0B08}, {"GL_CURRENT_RASTER_DISTANCE", 0x0B09}, {"GL_POINT_SMOOTH", 0x0B10}, {"GL_POINT_SIZE", 0x0B11}, {"GL_POINT_SIZE_RANGE", 0x0B12}, {"GL_SMOOTH_POINT_SIZE_RANGE", 0x0B12}, {"GL_POINT_SIZE_GRANULARITY", 0x0B13}, {"GL_SMOOTH_POINT_SIZE_GRANULARITY", 0x0B13}, {"GL_LINE_SMOOTH", 0x0B20}, {"GL_LINE_WIDTH", 0x0B21}, {"GL_LINE_WIDTH_RANGE", 0x0B22}, {"GL_SMOOTH_LINE_WIDTH_RANGE", 0x0B22}, {"GL_LINE_WIDTH_GRANULARITY", 0x0B23}, {"GL_SMOOTH_LINE_WIDTH_GRANULARITY", 0x0B23}, {"GL_LINE_STIPPLE", 0x0B24}, {"GL_LINE_STIPPLE_PATTERN", 0x0B25}, {"GL_LINE_STIPPLE_REPEAT", 0x0B26}, {"GL_LIST_MODE", 0x0B30}, {"GL_MAX_LIST_NESTING", 0x0B31}, {"GL_LIST_BASE", 0x0B32}, {"GL_LIST_INDEX", 0x0B33}, {"GL_POLYGON_MODE", 0x0B40}, {"GL_POLYGON_SMOOTH", 0x0B41}, {"GL_POLYGON_STIPPLE", 0x0B42}, {"GL_EDGE_FLAG", 0x0B43}, {"GL_CULL_FACE", 0x0B44}, {"GL_CULL_FACE_MODE", 0x0B45}, {"GL_FRONT_FACE", 0x0B46}, {"GL_LIGHTING", 0x0B50}, {"GL_LIGHT_MODEL_LOCAL_VIEWER", 0x0B51}, {"GL_LIGHT_MODEL_TWO_SIDE", 0x0B52}, {"GL_LIGHT_MODEL_AMBIENT", 0x0B53}, {"GL_SHADE_MODEL", 0x0B54}, {"GL_COLOR_MATERIAL_FACE", 0x0B55}, {"GL_COLOR_MATERIAL_PARAMETER", 0x0B56}, {"GL_COLOR_MATERIAL", 0x0B57}, {"GL_FOG", 0x0B60}, {"GL_FOG_INDEX", 0x0B61}, {"GL_FOG_DENSITY", 0x0B62}, {"GL_FOG_START", 0x0B63}, {"GL_FOG_END", 0x0B64}, {"GL_FOG_MODE", 0x0B65}, {"GL_FOG_COLOR", 0x0B66}, {"GL_DEPTH_RANGE", 0x0B70}, {"GL_DEPTH_TEST", 0x0B71}, {"GL_DEPTH_WRITEMASK", 0x0B72}, {"GL_DEPTH_CLEAR_VALUE", 0x0B73}, {"GL_DEPTH_FUNC", 0x0B74}, {"GL_ACCUM_CLEAR_VALUE", 0x0B80}, {"GL_STENCIL_TEST", 0x0B90}, {"GL_STENCIL_CLEAR_VALUE", 0x0B91}, {"GL_STENCIL_FUNC", 0x0B92}, {"GL_STENCIL_VALUE_MASK", 0x0B93}, {"GL_STENCIL_FAIL", 0x0B94}, {"GL_STENCIL_PASS_DEPTH_FAIL", 0x0B95}, {"GL_STENCIL_PASS_DEPTH_PASS", 0x0B96}, {"GL_STENCIL_REF", 0x0B97}, {"GL_STENCIL_WRITEMASK", 0x0B98}, {"GL_MATRIX_MODE", 0x0BA0}, {"GL_NORMALIZE", 0x0BA1}, {"GL_VIEWPORT", 0x0BA2}, {"GL_MODELVIEW_STACK_DEPTH", 0x0BA3}, {"GL_MODELVIEW0_STACK_DEPTH_EXT", 0x0BA3}, {"GL_PROJECTION_STACK_DEPTH", 0x0BA4}, {"GL_TEXTURE_STACK_DEPTH", 0x0BA5}, {"GL_MODELVIEW_MATRIX", 0x0BA6}, {"GL_MODELVIEW0_MATRIX_EXT", 0x0BA6}, {"GL_PROJECTION_MATRIX", 0x0BA7}, {"GL_TEXTURE_MATRIX", 0x0BA8}, {"GL_ATTRIB_STACK_DEPTH", 0x0BB0}, {"GL_CLIENT_ATTRIB_STACK_DEPTH", 0x0BB1}, {"GL_ALPHA_TEST", 0x0BC0}, {"GL_ALPHA_TEST_QCOM", 0x0BC0}, {"GL_ALPHA_TEST_FUNC", 0x0BC1}, {"GL_ALPHA_TEST_FUNC_QCOM", 0x0BC1}, {"GL_ALPHA_TEST_REF", 0x0BC2}, {"GL_ALPHA_TEST_REF_QCOM", 0x0BC2}, {"GL_DITHER", 0x0BD0}, {"GL_BLEND_DST", 0x0BE0}, {"GL_BLEND_SRC", 0x0BE1}, {"GL_BLEND", 0x0BE2}, {"GL_LOGIC_OP_MODE", 0x0BF0}, {"GL_INDEX_LOGIC_OP", 0x0BF1}, {"GL_LOGIC_OP", 0x0BF1}, {"GL_COLOR_LOGIC_OP", 0x0BF2}, {"GL_AUX_BUFFERS", 0x0C00}, {"GL_DRAW_BUFFER", 0x0C01}, {"GL_DRAW_BUFFER_EXT", 0x0C01}, {"GL_READ_BUFFER", 0x0C02}, {"GL_READ_BUFFER_EXT", 0x0C02}, {"GL_READ_BUFFER_NV", 0x0C02}, {"GL_SCISSOR_BOX", 0x0C10}, {"GL_SCISSOR_TEST", 0x0C11}, {"GL_INDEX_CLEAR_VALUE", 0x0C20}, {"GL_INDEX_WRITEMASK", 0x0C21}, {"GL_COLOR_CLEAR_VALUE", 0x0C22}, {"GL_COLOR_WRITEMASK", 0x0C23}, {"GL_INDEX_MODE", 0x0C30}, {"GL_RGBA_MODE", 0x0C31}, {"GL_DOUBLEBUFFER", 0x0C32}, {"GL_STEREO", 0x0C33}, {"GL_RENDER_MODE", 0x0C40}, {"GL_PERSPECTIVE_CORRECTION_HINT", 0x0C50}, {"GL_POINT_SMOOTH_HINT", 0x0C51}, {"GL_LINE_SMOOTH_HINT", 0x0C52}, {"GL_POLYGON_SMOOTH_HINT", 0x0C53}, {"GL_FOG_HINT", 0x0C54}, {"GL_TEXTURE_GEN_S", 0x0C60}, {"GL_TEXTURE_GEN_T", 0x0C61}, {"GL_TEXTURE_GEN_R", 0x0C62}, {"GL_TEXTURE_GEN_Q", 0x0C63}, {"GL_PIXEL_MAP_I_TO_I", 0x0C70}, {"GL_PIXEL_MAP_S_TO_S", 0x0C71}, {"GL_PIXEL_MAP_I_TO_R", 0x0C72}, {"GL_PIXEL_MAP_I_TO_G", 0x0C73}, {"GL_PIXEL_MAP_I_TO_B", 0x0C74}, {"GL_PIXEL_MAP_I_TO_A", 0x0C75}, {"GL_PIXEL_MAP_R_TO_R", 0x0C76}, {"GL_PIXEL_MAP_G_TO_G", 0x0C77}, {"GL_PIXEL_MAP_B_TO_B", 0x0C78}, {"GL_PIXEL_MAP_A_TO_A", 0x0C79}, {"GL_PIXEL_MAP_I_TO_I_SIZE", 0x0CB0}, {"GL_PIXEL_MAP_S_TO_S_SIZE", 0x0CB1}, {"GL_PIXEL_MAP_I_TO_R_SIZE", 0x0CB2}, {"GL_PIXEL_MAP_I_TO_G_SIZE", 0x0CB3}, {"GL_PIXEL_MAP_I_TO_B_SIZE", 0x0CB4}, {"GL_PIXEL_MAP_I_TO_A_SIZE", 0x0CB5}, {"GL_PIXEL_MAP_R_TO_R_SIZE", 0x0CB6}, {"GL_PIXEL_MAP_G_TO_G_SIZE", 0x0CB7}, {"GL_PIXEL_MAP_B_TO_B_SIZE", 0x0CB8}, {"GL_PIXEL_MAP_A_TO_A_SIZE", 0x0CB9}, {"GL_UNPACK_SWAP_BYTES", 0x0CF0}, {"GL_UNPACK_LSB_FIRST", 0x0CF1}, {"GL_UNPACK_ROW_LENGTH", 0x0CF2}, {"GL_UNPACK_ROW_LENGTH_EXT", 0x0CF2}, {"GL_UNPACK_SKIP_ROWS", 0x0CF3}, {"GL_UNPACK_SKIP_ROWS_EXT", 0x0CF3}, {"GL_UNPACK_SKIP_PIXELS", 0x0CF4}, {"GL_UNPACK_SKIP_PIXELS_EXT", 0x0CF4}, {"GL_UNPACK_ALIGNMENT", 0x0CF5}, {"GL_PACK_SWAP_BYTES", 0x0D00}, {"GL_PACK_LSB_FIRST", 0x0D01}, {"GL_PACK_ROW_LENGTH", 0x0D02}, {"GL_PACK_SKIP_ROWS", 0x0D03}, {"GL_PACK_SKIP_PIXELS", 0x0D04}, {"GL_PACK_ALIGNMENT", 0x0D05}, {"GL_MAP_COLOR", 0x0D10}, {"GL_MAP_STENCIL", 0x0D11}, {"GL_INDEX_SHIFT", 0x0D12}, {"GL_INDEX_OFFSET", 0x0D13}, {"GL_RED_SCALE", 0x0D14}, {"GL_RED_BIAS", 0x0D15}, {"GL_ZOOM_X", 0x0D16}, {"GL_ZOOM_Y", 0x0D17}, {"GL_GREEN_SCALE", 0x0D18}, {"GL_GREEN_BIAS", 0x0D19}, {"GL_BLUE_SCALE", 0x0D1A}, {"GL_BLUE_BIAS", 0x0D1B}, {"GL_ALPHA_SCALE", 0x0D1C}, {"GL_ALPHA_BIAS", 0x0D1D}, {"GL_DEPTH_SCALE", 0x0D1E}, {"GL_DEPTH_BIAS", 0x0D1F}, {"GL_MAX_EVAL_ORDER", 0x0D30}, {"GL_MAX_LIGHTS", 0x0D31}, {"GL_MAX_CLIP_PLANES", 0x0D32}, {"GL_MAX_CLIP_DISTANCES", 0x0D32}, {"GL_MAX_TEXTURE_SIZE", 0x0D33}, {"GL_MAX_PIXEL_MAP_TABLE", 0x0D34}, {"GL_MAX_ATTRIB_STACK_DEPTH", 0x0D35}, {"GL_MAX_MODELVIEW_STACK_DEPTH", 0x0D36}, {"GL_MAX_NAME_STACK_DEPTH", 0x0D37}, {"GL_MAX_PROJECTION_STACK_DEPTH", 0x0D38}, {"GL_MAX_TEXTURE_STACK_DEPTH", 0x0D39}, {"GL_MAX_VIEWPORT_DIMS", 0x0D3A}, {"GL_MAX_CLIENT_ATTRIB_STACK_DEPTH", 0x0D3B}, {"GL_SUBPIXEL_BITS", 0x0D50}, {"GL_INDEX_BITS", 0x0D51}, {"GL_RED_BITS", 0x0D52}, {"GL_GREEN_BITS", 0x0D53}, {"GL_BLUE_BITS", 0x0D54}, {"GL_ALPHA_BITS", 0x0D55}, {"GL_DEPTH_BITS", 0x0D56}, {"GL_STENCIL_BITS", 0x0D57}, {"GL_ACCUM_RED_BITS", 0x0D58}, {"GL_ACCUM_GREEN_BITS", 0x0D59}, {"GL_ACCUM_BLUE_BITS", 0x0D5A}, {"GL_ACCUM_ALPHA_BITS", 0x0D5B}, {"GL_NAME_STACK_DEPTH", 0x0D70}, {"GL_AUTO_NORMAL", 0x0D80}, {"GL_MAP1_COLOR_4", 0x0D90}, {"GL_MAP1_INDEX", 0x0D91}, {"GL_MAP1_NORMAL", 0x0D92}, {"GL_MAP1_TEXTURE_COORD_1", 0x0D93}, {"GL_MAP1_TEXTURE_COORD_2", 0x0D94}, {"GL_MAP1_TEXTURE_COORD_3", 0x0D95}, {"GL_MAP1_TEXTURE_COORD_4", 0x0D96}, {"GL_MAP1_VERTEX_3", 0x0D97}, {"GL_MAP1_VERTEX_4", 0x0D98}, {"GL_MAP2_COLOR_4", 0x0DB0}, {"GL_MAP2_INDEX", 0x0DB1}, {"GL_MAP2_NORMAL", 0x0DB2}, {"GL_MAP2_TEXTURE_COORD_1", 0x0DB3}, {"GL_MAP2_TEXTURE_COORD_2", 0x0DB4}, {"GL_MAP2_TEXTURE_COORD_3", 0x0DB5}, {"GL_MAP2_TEXTURE_COORD_4", 0x0DB6}, {"GL_MAP2_VERTEX_3", 0x0DB7}, {"GL_MAP2_VERTEX_4", 0x0DB8}, {"GL_MAP1_GRID_DOMAIN", 0x0DD0}, {"GL_MAP1_GRID_SEGMENTS", 0x0DD1}, {"GL_MAP2_GRID_DOMAIN", 0x0DD2}, {"GL_MAP2_GRID_SEGMENTS", 0x0DD3}, {"GL_TEXTURE_1D", 0x0DE0}, {"GL_TEXTURE_2D", 0x0DE1}, {"GL_FEEDBACK_BUFFER_POINTER", 0x0DF0}, {"GL_FEEDBACK_BUFFER_SIZE", 0x0DF1}, {"GL_FEEDBACK_BUFFER_TYPE", 0x0DF2}, {"GL_SELECTION_BUFFER_POINTER", 0x0DF3}, {"GL_SELECTION_BUFFER_SIZE", 0x0DF4}, {"GL_TEXTURE_WIDTH", 0x1000}, {"GL_TEXTURE_HEIGHT", 0x1001}, {"GL_TEXTURE_INTERNAL_FORMAT", 0x1003}, {"GL_TEXTURE_COMPONENTS", 0x1003}, {"GL_TEXTURE_BORDER_COLOR", 0x1004}, {"GL_TEXTURE_BORDER_COLOR_NV", 0x1004}, {"GL_TEXTURE_BORDER", 0x1005}, {"GL_DONT_CARE", 0x1100}, {"GL_FASTEST", 0x1101}, {"GL_NICEST", 0x1102}, {"GL_AMBIENT", 0x1200}, {"GL_DIFFUSE", 0x1201}, {"GL_SPECULAR", 0x1202}, {"GL_POSITION", 0x1203}, {"GL_SPOT_DIRECTION", 0x1204}, {"GL_SPOT_EXPONENT", 0x1205}, {"GL_SPOT_CUTOFF", 0x1206}, {"GL_CONSTANT_ATTENUATION", 0x1207}, {"GL_LINEAR_ATTENUATION", 0x1208}, {"GL_QUADRATIC_ATTENUATION", 0x1209}, {"GL_COMPILE", 0x1300}, {"GL_COMPILE_AND_EXECUTE", 0x1301}, {"GL_BYTE", 0x1400}, {"GL_UNSIGNED_BYTE", 0x1401}, {"GL_SHORT", 0x1402}, {"GL_UNSIGNED_SHORT", 0x1403}, {"GL_INT", 0x1404}, {"GL_UNSIGNED_INT", 0x1405}, {"GL_FLOAT", 0x1406}, {"GL_2_BYTES", 0x1407}, {"GL_3_BYTES", 0x1408}, {"GL_4_BYTES", 0x1409}, {"GL_DOUBLE", 0x140A}, {"GL_DOUBLE_EXT", 0x140A}, {"GL_HALF_FLOAT", 0x140B}, {"GL_HALF_FLOAT_ARB", 0x140B}, {"GL_HALF_FLOAT_NV", 0x140B}, {"GL_HALF_APPLE", 0x140B}, {"GL_FIXED", 0x140C}, {"GL_FIXED_OES", 0x140C}, {"GL_INT64_NV", 0x140E}, {"GL_UNSIGNED_INT64_ARB", 0x140F}, {"GL_UNSIGNED_INT64_NV", 0x140F}, {"GL_CLEAR", 0x1500}, {"GL_AND", 0x1501}, {"GL_AND_REVERSE", 0x1502}, {"GL_COPY", 0x1503}, {"GL_AND_INVERTED", 0x1504}, {"GL_NOOP", 0x1505}, {"GL_XOR", 0x1506}, {"GL_OR", 0x1507}, {"GL_NOR", 0x1508}, {"GL_EQUIV", 0x1509}, {"GL_INVERT", 0x150A}, {"GL_OR_REVERSE", 0x150B}, {"GL_COPY_INVERTED", 0x150C}, {"GL_OR_INVERTED", 0x150D}, {"GL_NAND", 0x150E}, {"GL_SET", 0x150F}, {"GL_EMISSION", 0x1600}, {"GL_SHININESS", 0x1601}, {"GL_AMBIENT_AND_DIFFUSE", 0x1602}, {"GL_COLOR_INDEXES", 0x1603}, {"GL_MODELVIEW", 0x1700}, {"GL_MODELVIEW0_ARB", 0x1700}, {"GL_MODELVIEW0_EXT", 0x1700}, {"GL_PROJECTION", 0x1701}, {"GL_TEXTURE", 0x1702}, {"GL_COLOR", 0x1800}, {"GL_COLOR_EXT", 0x1800}, {"GL_DEPTH", 0x1801}, {"GL_DEPTH_EXT", 0x1801}, {"GL_STENCIL", 0x1802}, {"GL_STENCIL_EXT", 0x1802}, {"GL_COLOR_INDEX", 0x1900}, {"GL_STENCIL_INDEX", 0x1901}, {"GL_DEPTH_COMPONENT", 0x1902}, {"GL_RED", 0x1903}, {"GL_RED_EXT", 0x1903}, {"GL_GREEN", 0x1904}, {"GL_BLUE", 0x1905}, {"GL_ALPHA", 0x1906}, {"GL_RGB", 0x1907}, {"GL_RGBA", 0x1908}, {"GL_LUMINANCE", 0x1909}, {"GL_LUMINANCE_ALPHA", 0x190A}, {"GL_BITMAP", 0x1A00}, {"GL_POINT", 0x1B00}, {"GL_LINE", 0x1B01}, {"GL_FILL", 0x1B02}, {"GL_RENDER", 0x1C00}, {"GL_FEEDBACK", 0x1C01}, {"GL_SELECT", 0x1C02}, {"GL_FLAT", 0x1D00}, {"GL_SMOOTH", 0x1D01}, {"GL_KEEP", 0x1E00}, {"GL_REPLACE", 0x1E01}, {"GL_INCR", 0x1E02}, {"GL_DECR", 0x1E03}, {"GL_VENDOR", 0x1F00}, {"GL_RENDERER", 0x1F01}, {"GL_VERSION", 0x1F02}, {"GL_EXTENSIONS", 0x1F03}, {"GL_S", 0x2000}, {"GL_T", 0x2001}, {"GL_R", 0x2002}, {"GL_Q", 0x2003}, {"GL_MODULATE", 0x2100}, {"GL_DECAL", 0x2101}, {"GL_TEXTURE_ENV_MODE", 0x2200}, {"GL_TEXTURE_ENV_COLOR", 0x2201}, {"GL_TEXTURE_ENV", 0x2300}, {"GL_EYE_LINEAR", 0x2400}, {"GL_OBJECT_LINEAR", 0x2401}, {"GL_SPHERE_MAP", 0x2402}, {"GL_TEXTURE_GEN_MODE", 0x2500}, {"GL_OBJECT_PLANE", 0x2501}, {"GL_EYE_PLANE", 0x2502}, {"GL_NEAREST", 0x2600}, {"GL_LINEAR", 0x2601}, {"GL_NEAREST_MIPMAP_NEAREST", 0x2700}, {"GL_LINEAR_MIPMAP_NEAREST", 0x2701}, {"GL_NEAREST_MIPMAP_LINEAR", 0x2702}, {"GL_LINEAR_MIPMAP_LINEAR", 0x2703}, {"GL_TEXTURE_MAG_FILTER", 0x2800}, {"GL_TEXTURE_MIN_FILTER", 0x2801}, {"GL_TEXTURE_WRAP_S", 0x2802}, {"GL_TEXTURE_WRAP_T", 0x2803}, {"GL_CLAMP", 0x2900}, {"GL_REPEAT", 0x2901}, {"GL_POLYGON_OFFSET_UNITS", 0x2A00}, {"GL_POLYGON_OFFSET_POINT", 0x2A01}, {"GL_POLYGON_OFFSET_LINE", 0x2A02}, {"GL_R3_G3_B2", 0x2A10}, {"GL_V2F", 0x2A20}, {"GL_V3F", 0x2A21}, {"GL_C4UB_V2F", 0x2A22}, {"GL_C4UB_V3F", 0x2A23}, {"GL_C3F_V3F", 0x2A24}, {"GL_N3F_V3F", 0x2A25}, {"GL_C4F_N3F_V3F", 0x2A26}, {"GL_T2F_V3F", 0x2A27}, {"GL_T4F_V4F", 0x2A28}, {"GL_T2F_C4UB_V3F", 0x2A29}, {"GL_T2F_C3F_V3F", 0x2A2A}, {"GL_T2F_N3F_V3F", 0x2A2B}, {"GL_T2F_C4F_N3F_V3F", 0x2A2C}, {"GL_T4F_C4F_N3F_V4F", 0x2A2D}, {"GL_CLIP_PLANE0", 0x3000}, {"GL_CLIP_DISTANCE0", 0x3000}, {"GL_CLIP_PLANE1", 0x3001}, {"GL_CLIP_DISTANCE1", 0x3001}, {"GL_CLIP_PLANE2", 0x3002}, {"GL_CLIP_DISTANCE2", 0x3002}, {"GL_CLIP_PLANE3", 0x3003}, {"GL_CLIP_DISTANCE3", 0x3003}, {"GL_CLIP_PLANE4", 0x3004}, {"GL_CLIP_DISTANCE4", 0x3004}, {"GL_CLIP_PLANE5", 0x3005}, {"GL_CLIP_DISTANCE5", 0x3005}, {"GL_CLIP_DISTANCE6", 0x3006}, {"GL_CLIP_DISTANCE7", 0x3007}, {"GL_LIGHT0", 0x4000}, {"GL_LIGHT1", 0x4001}, {"GL_LIGHT2", 0x4002}, {"GL_LIGHT3", 0x4003}, {"GL_LIGHT4", 0x4004}, {"GL_LIGHT5", 0x4005}, {"GL_LIGHT6", 0x4006}, {"GL_LIGHT7", 0x4007}, {"GL_ABGR_EXT", 0x8000}, {"GL_CONSTANT_COLOR", 0x8001}, {"GL_CONSTANT_COLOR_EXT", 0x8001}, {"GL_ONE_MINUS_CONSTANT_COLOR", 0x8002}, {"GL_ONE_MINUS_CONSTANT_COLOR_EXT", 0x8002}, {"GL_CONSTANT_ALPHA", 0x8003}, {"GL_CONSTANT_ALPHA_EXT", 0x8003}, {"GL_ONE_MINUS_CONSTANT_ALPHA", 0x8004}, {"GL_ONE_MINUS_CONSTANT_ALPHA_EXT", 0x8004}, {"GL_BLEND_COLOR", 0x8005}, {"GL_BLEND_COLOR_EXT", 0x8005}, {"GL_FUNC_ADD", 0x8006}, {"GL_FUNC_ADD_EXT", 0x8006}, {"GL_FUNC_ADD_OES", 0x8006}, {"GL_MIN", 0x8007}, {"GL_MIN_EXT", 0x8007}, {"GL_MAX", 0x8008}, {"GL_MAX_EXT", 0x8008}, {"GL_BLEND_EQUATION", 0x8009}, {"GL_BLEND_EQUATION_EXT", 0x8009}, {"GL_BLEND_EQUATION_OES", 0x8009}, {"GL_BLEND_EQUATION_RGB", 0x8009}, {"GL_BLEND_EQUATION_RGB_EXT", 0x8009}, {"GL_BLEND_EQUATION_RGB_OES", 0x8009}, {"GL_FUNC_SUBTRACT", 0x800A}, {"GL_FUNC_SUBTRACT_EXT", 0x800A}, {"GL_FUNC_SUBTRACT_OES", 0x800A}, {"GL_FUNC_REVERSE_SUBTRACT", 0x800B}, {"GL_FUNC_REVERSE_SUBTRACT_EXT", 0x800B}, {"GL_FUNC_REVERSE_SUBTRACT_OES", 0x800B}, {"GL_CMYK_EXT", 0x800C}, {"GL_CMYKA_EXT", 0x800D}, {"GL_PACK_CMYK_HINT_EXT", 0x800E}, {"GL_UNPACK_CMYK_HINT_EXT", 0x800F}, {"GL_CONVOLUTION_1D", 0x8010}, {"GL_CONVOLUTION_1D_EXT", 0x8010}, {"GL_CONVOLUTION_2D", 0x8011}, {"GL_CONVOLUTION_2D_EXT", 0x8011}, {"GL_SEPARABLE_2D", 0x8012}, {"GL_SEPARABLE_2D_EXT", 0x8012}, {"GL_CONVOLUTION_BORDER_MODE", 0x8013}, {"GL_CONVOLUTION_BORDER_MODE_EXT", 0x8013}, {"GL_CONVOLUTION_FILTER_SCALE", 0x8014}, {"GL_CONVOLUTION_FILTER_SCALE_EXT", 0x8014}, {"GL_CONVOLUTION_FILTER_BIAS", 0x8015}, {"GL_CONVOLUTION_FILTER_BIAS_EXT", 0x8015}, {"GL_REDUCE", 0x8016}, {"GL_REDUCE_EXT", 0x8016}, {"GL_CONVOLUTION_FORMAT", 0x8017}, {"GL_CONVOLUTION_FORMAT_EXT", 0x8017}, {"GL_CONVOLUTION_WIDTH", 0x8018}, {"GL_CONVOLUTION_WIDTH_EXT", 0x8018}, {"GL_CONVOLUTION_HEIGHT", 0x8019}, {"GL_CONVOLUTION_HEIGHT_EXT", 0x8019}, {"GL_MAX_CONVOLUTION_WIDTH", 0x801A}, {"GL_MAX_CONVOLUTION_WIDTH_EXT", 0x801A}, {"GL_MAX_CONVOLUTION_HEIGHT", 0x801B}, {"GL_MAX_CONVOLUTION_HEIGHT_EXT", 0x801B}, {"GL_POST_CONVOLUTION_RED_SCALE", 0x801C}, {"GL_POST_CONVOLUTION_RED_SCALE_EXT", 0x801C}, {"GL_POST_CONVOLUTION_GREEN_SCALE", 0x801D}, {"GL_POST_CONVOLUTION_GREEN_SCALE_EXT", 0x801D}, {"GL_POST_CONVOLUTION_BLUE_SCALE", 0x801E}, {"GL_POST_CONVOLUTION_BLUE_SCALE_EXT", 0x801E}, {"GL_POST_CONVOLUTION_ALPHA_SCALE", 0x801F}, {"GL_POST_CONVOLUTION_ALPHA_SCALE_EXT", 0x801F}, {"GL_POST_CONVOLUTION_RED_BIAS", 0x8020}, {"GL_POST_CONVOLUTION_RED_BIAS_EXT", 0x8020}, {"GL_POST_CONVOLUTION_GREEN_BIAS", 0x8021}, {"GL_POST_CONVOLUTION_GREEN_BIAS_EXT", 0x8021}, {"GL_POST_CONVOLUTION_BLUE_BIAS", 0x8022}, {"GL_POST_CONVOLUTION_BLUE_BIAS_EXT", 0x8022}, {"GL_POST_CONVOLUTION_ALPHA_BIAS", 0x8023}, {"GL_POST_CONVOLUTION_ALPHA_BIAS_EXT", 0x8023}, {"GL_HISTOGRAM", 0x8024}, {"GL_HISTOGRAM_EXT", 0x8024}, {"GL_PROXY_HISTOGRAM", 0x8025}, {"GL_PROXY_HISTOGRAM_EXT", 0x8025}, {"GL_HISTOGRAM_WIDTH", 0x8026}, {"GL_HISTOGRAM_WIDTH_EXT", 0x8026}, {"GL_HISTOGRAM_FORMAT", 0x8027}, {"GL_HISTOGRAM_FORMAT_EXT", 0x8027}, {"GL_HISTOGRAM_RED_SIZE", 0x8028}, {"GL_HISTOGRAM_RED_SIZE_EXT", 0x8028}, {"GL_HISTOGRAM_GREEN_SIZE", 0x8029}, {"GL_HISTOGRAM_GREEN_SIZE_EXT", 0x8029}, {"GL_HISTOGRAM_BLUE_SIZE", 0x802A}, {"GL_HISTOGRAM_BLUE_SIZE_EXT", 0x802A}, {"GL_HISTOGRAM_ALPHA_SIZE", 0x802B}, {"GL_HISTOGRAM_ALPHA_SIZE_EXT", 0x802B}, {"GL_HISTOGRAM_LUMINANCE_SIZE", 0x802C}, {"GL_HISTOGRAM_LUMINANCE_SIZE_EXT", 0x802C}, {"GL_HISTOGRAM_SINK", 0x802D}, {"GL_HISTOGRAM_SINK_EXT", 0x802D}, {"GL_MINMAX", 0x802E}, {"GL_MINMAX_EXT", 0x802E}, {"GL_MINMAX_FORMAT", 0x802F}, {"GL_MINMAX_FORMAT_EXT", 0x802F}, {"GL_MINMAX_SINK", 0x8030}, {"GL_MINMAX_SINK_EXT", 0x8030}, {"GL_TABLE_TOO_LARGE_EXT", 0x8031}, {"GL_TABLE_TOO_LARGE", 0x8031}, {"GL_UNSIGNED_BYTE_3_3_2", 0x8032}, {"GL_UNSIGNED_BYTE_3_3_2_EXT", 0x8032}, {"GL_UNSIGNED_SHORT_4_4_4_4", 0x8033}, {"GL_UNSIGNED_SHORT_4_4_4_4_EXT", 0x8033}, {"GL_UNSIGNED_SHORT_5_5_5_1", 0x8034}, {"GL_UNSIGNED_SHORT_5_5_5_1_EXT", 0x8034}, {"GL_UNSIGNED_INT_8_8_8_8", 0x8035}, {"GL_UNSIGNED_INT_8_8_8_8_EXT", 0x8035}, {"GL_UNSIGNED_INT_10_10_10_2", 0x8036}, {"GL_UNSIGNED_INT_10_10_10_2_EXT", 0x8036}, {"GL_POLYGON_OFFSET_EXT", 0x8037}, {"GL_POLYGON_OFFSET_FILL", 0x8037}, {"GL_POLYGON_OFFSET_FACTOR", 0x8038}, {"GL_POLYGON_OFFSET_FACTOR_EXT", 0x8038}, {"GL_POLYGON_OFFSET_BIAS_EXT", 0x8039}, {"GL_RESCALE_NORMAL", 0x803A}, {"GL_RESCALE_NORMAL_EXT", 0x803A}, {"GL_ALPHA4", 0x803B}, {"GL_ALPHA4_EXT", 0x803B}, {"GL_ALPHA8", 0x803C}, {"GL_ALPHA8_EXT", 0x803C}, {"GL_ALPHA12", 0x803D}, {"GL_ALPHA12_EXT", 0x803D}, {"GL_ALPHA16", 0x803E}, {"GL_ALPHA16_EXT", 0x803E}, {"GL_LUMINANCE4", 0x803F}, {"GL_LUMINANCE4_EXT", 0x803F}, {"GL_LUMINANCE8", 0x8040}, {"GL_LUMINANCE8_EXT", 0x8040}, {"GL_LUMINANCE12", 0x8041}, {"GL_LUMINANCE12_EXT", 0x8041}, {"GL_LUMINANCE16", 0x8042}, {"GL_LUMINANCE16_EXT", 0x8042}, {"GL_LUMINANCE4_ALPHA4", 0x8043}, {"GL_LUMINANCE4_ALPHA4_EXT", 0x8043}, {"GL_LUMINANCE6_ALPHA2", 0x8044}, {"GL_LUMINANCE6_ALPHA2_EXT", 0x8044}, {"GL_LUMINANCE8_ALPHA8", 0x8045}, {"GL_LUMINANCE8_ALPHA8_EXT", 0x8045}, {"GL_LUMINANCE12_ALPHA4", 0x8046}, {"GL_LUMINANCE12_ALPHA4_EXT", 0x8046}, {"GL_LUMINANCE12_ALPHA12", 0x8047}, {"GL_LUMINANCE12_ALPHA12_EXT", 0x8047}, {"GL_LUMINANCE16_ALPHA16", 0x8048}, {"GL_LUMINANCE16_ALPHA16_EXT", 0x8048}, {"GL_INTENSITY", 0x8049}, {"GL_INTENSITY_EXT", 0x8049}, {"GL_INTENSITY4", 0x804A}, {"GL_INTENSITY4_EXT", 0x804A}, {"GL_INTENSITY8", 0x804B}, {"GL_INTENSITY8_EXT", 0x804B}, {"GL_INTENSITY12", 0x804C}, {"GL_INTENSITY12_EXT", 0x804C}, {"GL_INTENSITY16", 0x804D}, {"GL_INTENSITY16_EXT", 0x804D}, {"GL_RGB2_EXT", 0x804E}, {"GL_RGB4", 0x804F}, {"GL_RGB4_EXT", 0x804F}, {"GL_RGB5", 0x8050}, {"GL_RGB5_EXT", 0x8050}, {"GL_RGB8", 0x8051}, {"GL_RGB8_EXT", 0x8051}, {"GL_RGB10", 0x8052}, {"GL_RGB10_EXT", 0x8052}, {"GL_RGB12", 0x8053}, {"GL_RGB12_EXT", 0x8053}, {"GL_RGB16", 0x8054}, {"GL_RGB16_EXT", 0x8054}, {"GL_RGBA2", 0x8055}, {"GL_RGBA2_EXT", 0x8055}, {"GL_RGBA4", 0x8056}, {"GL_RGBA4_EXT", 0x8056}, {"GL_RGBA4_OES", 0x8056}, {"GL_RGB5_A1", 0x8057}, {"GL_RGB5_A1_EXT", 0x8057}, {"GL_RGB5_A1_OES", 0x8057}, {"GL_RGBA8", 0x8058}, {"GL_RGBA8_EXT", 0x8058}, {"GL_RGBA8_OES", 0x8058}, {"GL_RGB10_A2", 0x8059}, {"GL_RGB10_A2_EXT", 0x8059}, {"GL_RGBA12", 0x805A}, {"GL_RGBA12_EXT", 0x805A}, {"GL_RGBA16", 0x805B}, {"GL_RGBA16_EXT", 0x805B}, {"GL_TEXTURE_RED_SIZE", 0x805C}, {"GL_TEXTURE_RED_SIZE_EXT", 0x805C}, {"GL_TEXTURE_GREEN_SIZE", 0x805D}, {"GL_TEXTURE_GREEN_SIZE_EXT", 0x805D}, {"GL_TEXTURE_BLUE_SIZE", 0x805E}, {"GL_TEXTURE_BLUE_SIZE_EXT", 0x805E}, {"GL_TEXTURE_ALPHA_SIZE", 0x805F}, {"GL_TEXTURE_ALPHA_SIZE_EXT", 0x805F}, {"GL_TEXTURE_LUMINANCE_SIZE", 0x8060}, {"GL_TEXTURE_LUMINANCE_SIZE_EXT", 0x8060}, {"GL_TEXTURE_INTENSITY_SIZE", 0x8061}, {"GL_TEXTURE_INTENSITY_SIZE_EXT", 0x8061}, {"GL_REPLACE_EXT", 0x8062}, {"GL_PROXY_TEXTURE_1D", 0x8063}, {"GL_PROXY_TEXTURE_1D_EXT", 0x8063}, {"GL_PROXY_TEXTURE_2D", 0x8064}, {"GL_PROXY_TEXTURE_2D_EXT", 0x8064}, {"GL_TEXTURE_TOO_LARGE_EXT", 0x8065}, {"GL_TEXTURE_PRIORITY", 0x8066}, {"GL_TEXTURE_PRIORITY_EXT", 0x8066}, {"GL_TEXTURE_RESIDENT", 0x8067}, {"GL_TEXTURE_RESIDENT_EXT", 0x8067}, {"GL_TEXTURE_1D_BINDING_EXT", 0x8068}, {"GL_TEXTURE_BINDING_1D", 0x8068}, {"GL_TEXTURE_2D_BINDING_EXT", 0x8069}, {"GL_TEXTURE_BINDING_2D", 0x8069}, {"GL_TEXTURE_3D_BINDING_EXT", 0x806A}, {"GL_TEXTURE_3D_BINDING_OES", 0x806A}, {"GL_TEXTURE_BINDING_3D", 0x806A}, {"GL_PACK_SKIP_IMAGES", 0x806B}, {"GL_PACK_SKIP_IMAGES_EXT", 0x806B}, {"GL_PACK_IMAGE_HEIGHT", 0x806C}, {"GL_PACK_IMAGE_HEIGHT_EXT", 0x806C}, {"GL_UNPACK_SKIP_IMAGES", 0x806D}, {"GL_UNPACK_SKIP_IMAGES_EXT", 0x806D}, {"GL_UNPACK_IMAGE_HEIGHT", 0x806E}, {"GL_UNPACK_IMAGE_HEIGHT_EXT", 0x806E}, {"GL_TEXTURE_3D", 0x806F}, {"GL_TEXTURE_3D_EXT", 0x806F}, {"GL_TEXTURE_3D_OES", 0x806F}, {"GL_PROXY_TEXTURE_3D", 0x8070}, {"GL_PROXY_TEXTURE_3D_EXT", 0x8070}, {"GL_TEXTURE_DEPTH", 0x8071}, {"GL_TEXTURE_DEPTH_EXT", 0x8071}, {"GL_TEXTURE_WRAP_R", 0x8072}, {"GL_TEXTURE_WRAP_R_EXT", 0x8072}, {"GL_TEXTURE_WRAP_R_OES", 0x8072}, {"GL_MAX_3D_TEXTURE_SIZE", 0x8073}, {"GL_MAX_3D_TEXTURE_SIZE_EXT", 0x8073}, {"GL_MAX_3D_TEXTURE_SIZE_OES", 0x8073}, {"GL_VERTEX_ARRAY", 0x8074}, {"GL_VERTEX_ARRAY_EXT", 0x8074}, {"GL_VERTEX_ARRAY_KHR", 0x8074}, {"GL_NORMAL_ARRAY", 0x8075}, {"GL_NORMAL_ARRAY_EXT", 0x8075}, {"GL_COLOR_ARRAY", 0x8076}, {"GL_COLOR_ARRAY_EXT", 0x8076}, {"GL_INDEX_ARRAY", 0x8077}, {"GL_INDEX_ARRAY_EXT", 0x8077}, {"GL_TEXTURE_COORD_ARRAY", 0x8078}, {"GL_TEXTURE_COORD_ARRAY_EXT", 0x8078}, {"GL_EDGE_FLAG_ARRAY", 0x8079}, {"GL_EDGE_FLAG_ARRAY_EXT", 0x8079}, {"GL_VERTEX_ARRAY_SIZE", 0x807A}, {"GL_VERTEX_ARRAY_SIZE_EXT", 0x807A}, {"GL_VERTEX_ARRAY_TYPE", 0x807B}, {"GL_VERTEX_ARRAY_TYPE_EXT", 0x807B}, {"GL_VERTEX_ARRAY_STRIDE", 0x807C}, {"GL_VERTEX_ARRAY_STRIDE_EXT", 0x807C}, {"GL_VERTEX_ARRAY_COUNT_EXT", 0x807D}, {"GL_NORMAL_ARRAY_TYPE", 0x807E}, {"GL_NORMAL_ARRAY_TYPE_EXT", 0x807E}, {"GL_NORMAL_ARRAY_STRIDE", 0x807F}, {"GL_NORMAL_ARRAY_STRIDE_EXT", 0x807F}, {"GL_NORMAL_ARRAY_COUNT_EXT", 0x8080}, {"GL_COLOR_ARRAY_SIZE", 0x8081}, {"GL_COLOR_ARRAY_SIZE_EXT", 0x8081}, {"GL_COLOR_ARRAY_TYPE", 0x8082}, {"GL_COLOR_ARRAY_TYPE_EXT", 0x8082}, {"GL_COLOR_ARRAY_STRIDE", 0x8083}, {"GL_COLOR_ARRAY_STRIDE_EXT", 0x8083}, {"GL_COLOR_ARRAY_COUNT_EXT", 0x8084}, {"GL_INDEX_ARRAY_TYPE", 0x8085}, {"GL_INDEX_ARRAY_TYPE_EXT", 0x8085}, {"GL_INDEX_ARRAY_STRIDE", 0x8086}, {"GL_INDEX_ARRAY_STRIDE_EXT", 0x8086}, {"GL_INDEX_ARRAY_COUNT_EXT", 0x8087}, {"GL_TEXTURE_COORD_ARRAY_SIZE", 0x8088}, {"GL_TEXTURE_COORD_ARRAY_SIZE_EXT", 0x8088}, {"GL_TEXTURE_COORD_ARRAY_TYPE", 0x8089}, {"GL_TEXTURE_COORD_ARRAY_TYPE_EXT", 0x8089}, {"GL_TEXTURE_COORD_ARRAY_STRIDE", 0x808A}, {"GL_TEXTURE_COORD_ARRAY_STRIDE_EXT", 0x808A}, {"GL_TEXTURE_COORD_ARRAY_COUNT_EXT", 0x808B}, {"GL_EDGE_FLAG_ARRAY_STRIDE", 0x808C}, {"GL_EDGE_FLAG_ARRAY_STRIDE_EXT", 0x808C}, {"GL_EDGE_FLAG_ARRAY_COUNT_EXT", 0x808D}, {"GL_VERTEX_ARRAY_POINTER", 0x808E}, {"GL_VERTEX_ARRAY_POINTER_EXT", 0x808E}, {"GL_NORMAL_ARRAY_POINTER", 0x808F}, {"GL_NORMAL_ARRAY_POINTER_EXT", 0x808F}, {"GL_COLOR_ARRAY_POINTER", 0x8090}, {"GL_COLOR_ARRAY_POINTER_EXT", 0x8090}, {"GL_INDEX_ARRAY_POINTER", 0x8091}, {"GL_INDEX_ARRAY_POINTER_EXT", 0x8091}, {"GL_TEXTURE_COORD_ARRAY_POINTER", 0x8092}, {"GL_TEXTURE_COORD_ARRAY_POINTER_EXT", 0x8092}, {"GL_EDGE_FLAG_ARRAY_POINTER", 0x8093}, {"GL_EDGE_FLAG_ARRAY_POINTER_EXT", 0x8093}, {"GL_INTERLACE_SGIX", 0x8094}, {"GL_DETAIL_TEXTURE_2D_SGIS", 0x8095}, {"GL_DETAIL_TEXTURE_2D_BINDING_SGIS", 0x8096}, {"GL_LINEAR_DETAIL_SGIS", 0x8097}, {"GL_LINEAR_DETAIL_ALPHA_SGIS", 0x8098}, {"GL_LINEAR_DETAIL_COLOR_SGIS", 0x8099}, {"GL_DETAIL_TEXTURE_LEVEL_SGIS", 0x809A}, {"GL_DETAIL_TEXTURE_MODE_SGIS", 0x809B}, {"GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS", 0x809C}, {"GL_MULTISAMPLE", 0x809D}, {"GL_MULTISAMPLE_ARB", 0x809D}, {"GL_MULTISAMPLE_EXT", 0x809D}, {"GL_MULTISAMPLE_SGIS", 0x809D}, {"GL_SAMPLE_ALPHA_TO_COVERAGE", 0x809E}, {"GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", 0x809E}, {"GL_SAMPLE_ALPHA_TO_MASK_EXT", 0x809E}, {"GL_SAMPLE_ALPHA_TO_MASK_SGIS", 0x809E}, {"GL_SAMPLE_ALPHA_TO_ONE", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_ARB", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_EXT", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_SGIS", 0x809F}, {"GL_SAMPLE_COVERAGE", 0x80A0}, {"GL_SAMPLE_COVERAGE_ARB", 0x80A0}, {"GL_SAMPLE_MASK_EXT", 0x80A0}, {"GL_SAMPLE_MASK_SGIS", 0x80A0}, {"GL_1PASS_EXT", 0x80A1}, {"GL_1PASS_SGIS", 0x80A1}, {"GL_2PASS_0_EXT", 0x80A2}, {"GL_2PASS_0_SGIS", 0x80A2}, {"GL_2PASS_1_EXT", 0x80A3}, {"GL_2PASS_1_SGIS", 0x80A3}, {"GL_4PASS_0_EXT", 0x80A4}, {"GL_4PASS_0_SGIS", 0x80A4}, {"GL_4PASS_1_EXT", 0x80A5}, {"GL_4PASS_1_SGIS", 0x80A5}, {"GL_4PASS_2_EXT", 0x80A6}, {"GL_4PASS_2_SGIS", 0x80A6}, {"GL_4PASS_3_EXT", 0x80A7}, {"GL_4PASS_3_SGIS", 0x80A7}, {"GL_SAMPLE_BUFFERS", 0x80A8}, {"GL_SAMPLE_BUFFERS_ARB", 0x80A8}, {"GL_SAMPLE_BUFFERS_EXT", 0x80A8}, {"GL_SAMPLE_BUFFERS_SGIS", 0x80A8}, {"GL_SAMPLES", 0x80A9}, {"GL_SAMPLES_ARB", 0x80A9}, {"GL_SAMPLES_EXT", 0x80A9}, {"GL_SAMPLES_SGIS", 0x80A9}, {"GL_SAMPLE_COVERAGE_VALUE", 0x80AA}, {"GL_SAMPLE_COVERAGE_VALUE_ARB", 0x80AA}, {"GL_SAMPLE_MASK_VALUE_EXT", 0x80AA}, {"GL_SAMPLE_MASK_VALUE_SGIS", 0x80AA}, {"GL_SAMPLE_COVERAGE_INVERT", 0x80AB}, {"GL_SAMPLE_COVERAGE_INVERT_ARB", 0x80AB}, {"GL_SAMPLE_MASK_INVERT_EXT", 0x80AB}, {"GL_SAMPLE_MASK_INVERT_SGIS", 0x80AB}, {"GL_SAMPLE_PATTERN_EXT", 0x80AC}, {"GL_SAMPLE_PATTERN_SGIS", 0x80AC}, {"GL_LINEAR_SHARPEN_SGIS", 0x80AD}, {"GL_LINEAR_SHARPEN_ALPHA_SGIS", 0x80AE}, {"GL_LINEAR_SHARPEN_COLOR_SGIS", 0x80AF}, {"GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS", 0x80B0}, {"GL_COLOR_MATRIX", 0x80B1}, {"GL_COLOR_MATRIX_SGI", 0x80B1}, {"GL_COLOR_MATRIX_STACK_DEPTH", 0x80B2}, {"GL_COLOR_MATRIX_STACK_DEPTH_SGI", 0x80B2}, {"GL_MAX_COLOR_MATRIX_STACK_DEPTH", 0x80B3}, {"GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI", 0x80B3}, {"GL_POST_COLOR_MATRIX_RED_SCALE", 0x80B4}, {"GL_POST_COLOR_MATRIX_RED_SCALE_SGI", 0x80B4}, {"GL_POST_COLOR_MATRIX_GREEN_SCALE", 0x80B5}, {"GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI", 0x80B5}, {"GL_POST_COLOR_MATRIX_BLUE_SCALE", 0x80B6}, {"GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI", 0x80B6}, {"GL_POST_COLOR_MATRIX_ALPHA_SCALE", 0x80B7}, {"GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI", 0x80B7}, {"GL_POST_COLOR_MATRIX_RED_BIAS", 0x80B8}, {"GL_POST_COLOR_MATRIX_RED_BIAS_SGI", 0x80B8}, {"GL_POST_COLOR_MATRIX_GREEN_BIAS", 0x80B9}, {"GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI", 0x80B9}, {"GL_POST_COLOR_MATRIX_BLUE_BIAS", 0x80BA}, {"GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI", 0x80BA}, {"GL_POST_COLOR_MATRIX_ALPHA_BIAS", 0x80BB}, {"GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI", 0x80BB}, {"GL_TEXTURE_COLOR_TABLE_SGI", 0x80BC}, {"GL_PROXY_TEXTURE_COLOR_TABLE_SGI", 0x80BD}, {"GL_TEXTURE_ENV_BIAS_SGIX", 0x80BE}, {"GL_SHADOW_AMBIENT_SGIX", 0x80BF}, {"GL_TEXTURE_COMPARE_FAIL_VALUE_ARB", 0x80BF}, {"GL_BLEND_DST_RGB", 0x80C8}, {"GL_BLEND_DST_RGB_EXT", 0x80C8}, {"GL_BLEND_DST_RGB_OES", 0x80C8}, {"GL_BLEND_SRC_RGB", 0x80C9}, {"GL_BLEND_SRC_RGB_EXT", 0x80C9}, {"GL_BLEND_SRC_RGB_OES", 0x80C9}, {"GL_BLEND_DST_ALPHA", 0x80CA}, {"GL_BLEND_DST_ALPHA_EXT", 0x80CA}, {"GL_BLEND_DST_ALPHA_OES", 0x80CA}, {"GL_BLEND_SRC_ALPHA", 0x80CB}, {"GL_BLEND_SRC_ALPHA_EXT", 0x80CB}, {"GL_BLEND_SRC_ALPHA_OES", 0x80CB}, {"GL_422_EXT", 0x80CC}, {"GL_422_REV_EXT", 0x80CD}, {"GL_422_AVERAGE_EXT", 0x80CE}, {"GL_422_REV_AVERAGE_EXT", 0x80CF}, {"GL_COLOR_TABLE", 0x80D0}, {"GL_COLOR_TABLE_SGI", 0x80D0}, {"GL_POST_CONVOLUTION_COLOR_TABLE", 0x80D1}, {"GL_POST_CONVOLUTION_COLOR_TABLE_SGI", 0x80D1}, {"GL_POST_COLOR_MATRIX_COLOR_TABLE", 0x80D2}, {"GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI", 0x80D2}, {"GL_PROXY_COLOR_TABLE", 0x80D3}, {"GL_PROXY_COLOR_TABLE_SGI", 0x80D3}, {"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE", 0x80D4}, {"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI", 0x80D4}, {"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE", 0x80D5}, {"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI", 0x80D5}, {"GL_COLOR_TABLE_SCALE", 0x80D6}, {"GL_COLOR_TABLE_SCALE_SGI", 0x80D6}, {"GL_COLOR_TABLE_BIAS", 0x80D7}, {"GL_COLOR_TABLE_BIAS_SGI", 0x80D7}, {"GL_COLOR_TABLE_FORMAT", 0x80D8}, {"GL_COLOR_TABLE_FORMAT_SGI", 0x80D8}, {"GL_COLOR_TABLE_WIDTH", 0x80D9}, {"GL_COLOR_TABLE_WIDTH_SGI", 0x80D9}, {"GL_COLOR_TABLE_RED_SIZE", 0x80DA}, {"GL_COLOR_TABLE_RED_SIZE_SGI", 0x80DA}, {"GL_COLOR_TABLE_GREEN_SIZE", 0x80DB}, {"GL_COLOR_TABLE_GREEN_SIZE_SGI", 0x80DB}, {"GL_COLOR_TABLE_BLUE_SIZE", 0x80DC}, {"GL_COLOR_TABLE_BLUE_SIZE_SGI", 0x80DC}, {"GL_COLOR_TABLE_ALPHA_SIZE", 0x80DD}, {"GL_COLOR_TABLE_ALPHA_SIZE_SGI", 0x80DD}, {"GL_COLOR_TABLE_LUMINANCE_SIZE", 0x80DE}, {"GL_COLOR_TABLE_LUMINANCE_SIZE_SGI", 0x80DE}, {"GL_COLOR_TABLE_INTENSITY_SIZE", 0x80DF}, {"GL_COLOR_TABLE_INTENSITY_SIZE_SGI", 0x80DF}, {"GL_BGR", 0x80E0}, {"GL_BGR_EXT", 0x80E0}, {"GL_BGRA", 0x80E1}, {"GL_BGRA_EXT", 0x80E1}, {"GL_COLOR_INDEX1_EXT", 0x80E2}, {"GL_COLOR_INDEX2_EXT", 0x80E3}, {"GL_COLOR_INDEX4_EXT", 0x80E4}, {"GL_COLOR_INDEX8_EXT", 0x80E5}, {"GL_COLOR_INDEX12_EXT", 0x80E6}, {"GL_COLOR_INDEX16_EXT", 0x80E7}, {"GL_MAX_ELEMENTS_VERTICES", 0x80E8}, {"GL_MAX_ELEMENTS_VERTICES_EXT", 0x80E8}, {"GL_MAX_ELEMENTS_INDICES", 0x80E9}, {"GL_MAX_ELEMENTS_INDICES_EXT", 0x80E9}, {"GL_PHONG_WIN", 0x80EA}, {"GL_PHONG_HINT_WIN", 0x80EB}, {"GL_FOG_SPECULAR_TEXTURE_WIN", 0x80EC}, {"GL_TEXTURE_INDEX_SIZE_EXT", 0x80ED}, {"GL_PARAMETER_BUFFER_ARB", 0x80EE}, {"GL_PARAMETER_BUFFER_BINDING_ARB", 0x80EF}, {"GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0}, {"GL_DUAL_ALPHA4_SGIS", 0x8110}, {"GL_DUAL_ALPHA8_SGIS", 0x8111}, {"GL_DUAL_ALPHA12_SGIS", 0x8112}, {"GL_DUAL_ALPHA16_SGIS", 0x8113}, {"GL_DUAL_LUMINANCE4_SGIS", 0x8114}, {"GL_DUAL_LUMINANCE8_SGIS", 0x8115}, {"GL_DUAL_LUMINANCE12_SGIS", 0x8116}, {"GL_DUAL_LUMINANCE16_SGIS", 0x8117}, {"GL_DUAL_INTENSITY4_SGIS", 0x8118}, {"GL_DUAL_INTENSITY8_SGIS", 0x8119}, {"GL_DUAL_INTENSITY12_SGIS", 0x811A}, {"GL_DUAL_INTENSITY16_SGIS", 0x811B}, {"GL_DUAL_LUMINANCE_ALPHA4_SGIS", 0x811C}, {"GL_DUAL_LUMINANCE_ALPHA8_SGIS", 0x811D}, {"GL_QUAD_ALPHA4_SGIS", 0x811E}, {"GL_QUAD_ALPHA8_SGIS", 0x811F}, {"GL_QUAD_LUMINANCE4_SGIS", 0x8120}, {"GL_QUAD_LUMINANCE8_SGIS", 0x8121}, {"GL_QUAD_INTENSITY4_SGIS", 0x8122}, {"GL_QUAD_INTENSITY8_SGIS", 0x8123}, {"GL_DUAL_TEXTURE_SELECT_SGIS", 0x8124}, {"GL_QUAD_TEXTURE_SELECT_SGIS", 0x8125}, {"GL_POINT_SIZE_MIN", 0x8126}, {"GL_POINT_SIZE_MIN_ARB", 0x8126}, {"GL_POINT_SIZE_MIN_EXT", 0x8126}, {"GL_POINT_SIZE_MIN_SGIS", 0x8126}, {"GL_POINT_SIZE_MAX", 0x8127}, {"GL_POINT_SIZE_MAX_ARB", 0x8127}, {"GL_POINT_SIZE_MAX_EXT", 0x8127}, {"GL_POINT_SIZE_MAX_SGIS", 0x8127}, {"GL_POINT_FADE_THRESHOLD_SIZE", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_ARB", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_EXT", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_SGIS", 0x8128}, {"GL_DISTANCE_ATTENUATION_EXT", 0x8129}, {"GL_DISTANCE_ATTENUATION_SGIS", 0x8129}, {"GL_POINT_DISTANCE_ATTENUATION", 0x8129}, {"GL_POINT_DISTANCE_ATTENUATION_ARB", 0x8129}, {"GL_FOG_FUNC_SGIS", 0x812A}, {"GL_FOG_FUNC_POINTS_SGIS", 0x812B}, {"GL_MAX_FOG_FUNC_POINTS_SGIS", 0x812C}, {"GL_CLAMP_TO_BORDER", 0x812D}, {"GL_CLAMP_TO_BORDER_ARB", 0x812D}, {"GL_CLAMP_TO_BORDER_NV", 0x812D}, {"GL_CLAMP_TO_BORDER_SGIS", 0x812D}, {"GL_TEXTURE_MULTI_BUFFER_HINT_SGIX", 0x812E}, {"GL_CLAMP_TO_EDGE", 0x812F}, {"GL_CLAMP_TO_EDGE_SGIS", 0x812F}, {"GL_PACK_SKIP_VOLUMES_SGIS", 0x8130}, {"GL_PACK_IMAGE_DEPTH_SGIS", 0x8131}, {"GL_UNPACK_SKIP_VOLUMES_SGIS", 0x8132}, {"GL_UNPACK_IMAGE_DEPTH_SGIS", 0x8133}, {"GL_TEXTURE_4D_SGIS", 0x8134}, {"GL_PROXY_TEXTURE_4D_SGIS", 0x8135}, {"GL_TEXTURE_4DSIZE_SGIS", 0x8136}, {"GL_TEXTURE_WRAP_Q_SGIS", 0x8137}, {"GL_MAX_4D_TEXTURE_SIZE_SGIS", 0x8138}, {"GL_PIXEL_TEX_GEN_SGIX", 0x8139}, {"GL_TEXTURE_MIN_LOD", 0x813A}, {"GL_TEXTURE_MIN_LOD_SGIS", 0x813A}, {"GL_TEXTURE_MAX_LOD", 0x813B}, {"GL_TEXTURE_MAX_LOD_SGIS", 0x813B}, {"GL_TEXTURE_BASE_LEVEL", 0x813C}, {"GL_TEXTURE_BASE_LEVEL_SGIS", 0x813C}, {"GL_TEXTURE_MAX_LEVEL", 0x813D}, {"GL_TEXTURE_MAX_LEVEL_SGIS", 0x813D}, {"GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX", 0x813E}, {"GL_PIXEL_TILE_CACHE_INCREMENT_SGIX", 0x813F}, {"GL_PIXEL_TILE_WIDTH_SGIX", 0x8140}, {"GL_PIXEL_TILE_HEIGHT_SGIX", 0x8141}, {"GL_PIXEL_TILE_GRID_WIDTH_SGIX", 0x8142}, {"GL_PIXEL_TILE_GRID_HEIGHT_SGIX", 0x8143}, {"GL_PIXEL_TILE_GRID_DEPTH_SGIX", 0x8144}, {"GL_PIXEL_TILE_CACHE_SIZE_SGIX", 0x8145}, {"GL_FILTER4_SGIS", 0x8146}, {"GL_TEXTURE_FILTER4_SIZE_SGIS", 0x8147}, {"GL_SPRITE_SGIX", 0x8148}, {"GL_SPRITE_MODE_SGIX", 0x8149}, {"GL_SPRITE_AXIS_SGIX", 0x814A}, {"GL_SPRITE_TRANSLATION_SGIX", 0x814B}, {"GL_SPRITE_AXIAL_SGIX", 0x814C}, {"GL_SPRITE_OBJECT_ALIGNED_SGIX", 0x814D}, {"GL_SPRITE_EYE_ALIGNED_SGIX", 0x814E}, {"GL_TEXTURE_4D_BINDING_SGIS", 0x814F}, {"GL_IGNORE_BORDER_HP", 0x8150}, {"GL_CONSTANT_BORDER", 0x8151}, {"GL_CONSTANT_BORDER_HP", 0x8151}, {"GL_REPLICATE_BORDER", 0x8153}, {"GL_REPLICATE_BORDER_HP", 0x8153}, {"GL_CONVOLUTION_BORDER_COLOR", 0x8154}, {"GL_CONVOLUTION_BORDER_COLOR_HP", 0x8154}, {"GL_IMAGE_SCALE_X_HP", 0x8155}, {"GL_IMAGE_SCALE_Y_HP", 0x8156}, {"GL_IMAGE_TRANSLATE_X_HP", 0x8157}, {"GL_IMAGE_TRANSLATE_Y_HP", 0x8158}, {"GL_IMAGE_ROTATE_ANGLE_HP", 0x8159}, {"GL_IMAGE_ROTATE_ORIGIN_X_HP", 0x815A}, {"GL_IMAGE_ROTATE_ORIGIN_Y_HP", 0x815B}, {"GL_IMAGE_MAG_FILTER_HP", 0x815C}, {"GL_IMAGE_MIN_FILTER_HP", 0x815D}, {"GL_IMAGE_CUBIC_WEIGHT_HP", 0x815E}, {"GL_CUBIC_HP", 0x815F}, {"GL_AVERAGE_HP", 0x8160}, {"GL_IMAGE_TRANSFORM_2D_HP", 0x8161}, {"GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP", 0x8162}, {"GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP", 0x8163}, {"GL_OCCLUSION_TEST_HP", 0x8165}, {"GL_OCCLUSION_TEST_RESULT_HP", 0x8166}, {"GL_TEXTURE_LIGHTING_MODE_HP", 0x8167}, {"GL_TEXTURE_POST_SPECULAR_HP", 0x8168}, {"GL_TEXTURE_PRE_SPECULAR_HP", 0x8169}, {"GL_LINEAR_CLIPMAP_LINEAR_SGIX", 0x8170}, {"GL_TEXTURE_CLIPMAP_CENTER_SGIX", 0x8171}, {"GL_TEXTURE_CLIPMAP_FRAME_SGIX", 0x8172}, {"GL_TEXTURE_CLIPMAP_OFFSET_SGIX", 0x8173}, {"GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX", 0x8174}, {"GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX", 0x8175}, {"GL_TEXTURE_CLIPMAP_DEPTH_SGIX", 0x8176}, {"GL_MAX_CLIPMAP_DEPTH_SGIX", 0x8177}, {"GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX", 0x8178}, {"GL_POST_TEXTURE_FILTER_BIAS_SGIX", 0x8179}, {"GL_POST_TEXTURE_FILTER_SCALE_SGIX", 0x817A}, {"GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX", 0x817B}, {"GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX", 0x817C}, {"GL_REFERENCE_PLANE_SGIX", 0x817D}, {"GL_REFERENCE_PLANE_EQUATION_SGIX", 0x817E}, {"GL_IR_INSTRUMENT1_SGIX", 0x817F}, {"GL_INSTRUMENT_BUFFER_POINTER_SGIX", 0x8180}, {"GL_INSTRUMENT_MEASUREMENTS_SGIX", 0x8181}, {"GL_LIST_PRIORITY_SGIX", 0x8182}, {"GL_CALLIGRAPHIC_FRAGMENT_SGIX", 0x8183}, {"GL_PIXEL_TEX_GEN_Q_CEILING_SGIX", 0x8184}, {"GL_PIXEL_TEX_GEN_Q_ROUND_SGIX", 0x8185}, {"GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX", 0x8186}, {"GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX", 0x8187}, {"GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX", 0x8188}, {"GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX", 0x8189}, {"GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX", 0x818A}, {"GL_FRAMEZOOM_SGIX", 0x818B}, {"GL_FRAMEZOOM_FACTOR_SGIX", 0x818C}, {"GL_MAX_FRAMEZOOM_FACTOR_SGIX", 0x818D}, {"GL_TEXTURE_LOD_BIAS_S_SGIX", 0x818E}, {"GL_TEXTURE_LOD_BIAS_T_SGIX", 0x818F}, {"GL_TEXTURE_LOD_BIAS_R_SGIX", 0x8190}, {"GL_GENERATE_MIPMAP", 0x8191}, {"GL_GENERATE_MIPMAP_SGIS", 0x8191}, {"GL_GENERATE_MIPMAP_HINT", 0x8192}, {"GL_GENERATE_MIPMAP_HINT_SGIS", 0x8192}, {"GL_GEOMETRY_DEFORMATION_SGIX", 0x8194}, {"GL_TEXTURE_DEFORMATION_SGIX", 0x8195}, {"GL_DEFORMATIONS_MASK_SGIX", 0x8196}, {"GL_MAX_DEFORMATION_ORDER_SGIX", 0x8197}, {"GL_FOG_OFFSET_SGIX", 0x8198}, {"GL_FOG_OFFSET_VALUE_SGIX", 0x8199}, {"GL_TEXTURE_COMPARE_SGIX", 0x819A}, {"GL_TEXTURE_COMPARE_OPERATOR_SGIX", 0x819B}, {"GL_TEXTURE_LEQUAL_R_SGIX", 0x819C}, {"GL_TEXTURE_GEQUAL_R_SGIX", 0x819D}, {"GL_DEPTH_COMPONENT16", 0x81A5}, {"GL_DEPTH_COMPONENT16_ARB", 0x81A5}, {"GL_DEPTH_COMPONENT16_OES", 0x81A5}, {"GL_DEPTH_COMPONENT16_SGIX", 0x81A5}, {"GL_DEPTH_COMPONENT24", 0x81A6}, {"GL_DEPTH_COMPONENT24_ARB", 0x81A6}, {"GL_DEPTH_COMPONENT24_OES", 0x81A6}, {"GL_DEPTH_COMPONENT24_SGIX", 0x81A6}, {"GL_DEPTH_COMPONENT32", 0x81A7}, {"GL_DEPTH_COMPONENT32_ARB", 0x81A7}, {"GL_DEPTH_COMPONENT32_OES", 0x81A7}, {"GL_DEPTH_COMPONENT32_SGIX", 0x81A7}, {"GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8}, {"GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9}, {"GL_CULL_VERTEX_EXT", 0x81AA}, {"GL_CULL_VERTEX_EYE_POSITION_EXT", 0x81AB}, {"GL_CULL_VERTEX_OBJECT_POSITION_EXT", 0x81AC}, {"GL_IUI_V2F_EXT", 0x81AD}, {"GL_IUI_V3F_EXT", 0x81AE}, {"GL_IUI_N3F_V2F_EXT", 0x81AF}, {"GL_IUI_N3F_V3F_EXT", 0x81B0}, {"GL_T2F_IUI_V2F_EXT", 0x81B1}, {"GL_T2F_IUI_V3F_EXT", 0x81B2}, {"GL_T2F_IUI_N3F_V2F_EXT", 0x81B3}, {"GL_T2F_IUI_N3F_V3F_EXT", 0x81B4}, {"GL_INDEX_TEST_EXT", 0x81B5}, {"GL_INDEX_TEST_FUNC_EXT", 0x81B6}, {"GL_INDEX_TEST_REF_EXT", 0x81B7}, {"GL_INDEX_MATERIAL_EXT", 0x81B8}, {"GL_INDEX_MATERIAL_PARAMETER_EXT", 0x81B9}, {"GL_INDEX_MATERIAL_FACE_EXT", 0x81BA}, {"GL_YCRCB_422_SGIX", 0x81BB}, {"GL_YCRCB_444_SGIX", 0x81BC}, {"GL_WRAP_BORDER_SUN", 0x81D4}, {"GL_UNPACK_CONSTANT_DATA_SUNX", 0x81D5}, {"GL_TEXTURE_CONSTANT_DATA_SUNX", 0x81D6}, {"GL_TRIANGLE_LIST_SUN", 0x81D7}, {"GL_REPLACEMENT_CODE_SUN", 0x81D8}, {"GL_GLOBAL_ALPHA_SUN", 0x81D9}, {"GL_GLOBAL_ALPHA_FACTOR_SUN", 0x81DA}, {"GL_TEXTURE_COLOR_WRITEMASK_SGIS", 0x81EF}, {"GL_EYE_DISTANCE_TO_POINT_SGIS", 0x81F0}, {"GL_OBJECT_DISTANCE_TO_POINT_SGIS", 0x81F1}, {"GL_EYE_DISTANCE_TO_LINE_SGIS", 0x81F2}, {"GL_OBJECT_DISTANCE_TO_LINE_SGIS", 0x81F3}, {"GL_EYE_POINT_SGIS", 0x81F4}, {"GL_OBJECT_POINT_SGIS", 0x81F5}, {"GL_EYE_LINE_SGIS", 0x81F6}, {"GL_OBJECT_LINE_SGIS", 0x81F7}, {"GL_LIGHT_MODEL_COLOR_CONTROL", 0x81F8}, {"GL_LIGHT_MODEL_COLOR_CONTROL_EXT", 0x81F8}, {"GL_SINGLE_COLOR", 0x81F9}, {"GL_SINGLE_COLOR_EXT", 0x81F9}, {"GL_SEPARATE_SPECULAR_COLOR", 0x81FA}, {"GL_SEPARATE_SPECULAR_COLOR_EXT", 0x81FA}, {"GL_SHARED_TEXTURE_PALETTE_EXT", 0x81FB}, {"GL_TEXT_FRAGMENT_SHADER_ATI", 0x8200}, {"GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", 0x8210}, {"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE", 0x8211}, {"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", 0x8211}, {"GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE", 0x8212}, {"GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", 0x8213}, {"GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE", 0x8214}, {"GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", 0x8215}, {"GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE", 0x8216}, {"GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", 0x8217}, {"GL_FRAMEBUFFER_DEFAULT", 0x8218}, {"GL_FRAMEBUFFER_UNDEFINED", 0x8219}, {"GL_FRAMEBUFFER_UNDEFINED_OES", 0x8219}, {"GL_DEPTH_STENCIL_ATTACHMENT", 0x821A}, {"GL_MAJOR_VERSION", 0x821B}, {"GL_MINOR_VERSION", 0x821C}, {"GL_NUM_EXTENSIONS", 0x821D}, {"GL_CONTEXT_FLAGS", 0x821E}, {"GL_BUFFER_IMMUTABLE_STORAGE", 0x821F}, {"GL_BUFFER_STORAGE_FLAGS", 0x8220}, {"GL_INDEX", 0x8222}, {"GL_COMPRESSED_RED", 0x8225}, {"GL_COMPRESSED_RG", 0x8226}, {"GL_RG", 0x8227}, {"GL_RG_EXT", 0x8227}, {"GL_RG_INTEGER", 0x8228}, {"GL_R8", 0x8229}, {"GL_R8_EXT", 0x8229}, {"GL_R16", 0x822A}, {"GL_RG8", 0x822B}, {"GL_RG8_EXT", 0x822B}, {"GL_RG16", 0x822C}, {"GL_R16F", 0x822D}, {"GL_R16F_EXT", 0x822D}, {"GL_R32F", 0x822E}, {"GL_RG16F", 0x822F}, {"GL_RG16F_EXT", 0x822F}, {"GL_RG32F", 0x8230}, {"GL_R8I", 0x8231}, {"GL_R8UI", 0x8232}, {"GL_R16I", 0x8233}, {"GL_R16UI", 0x8234}, {"GL_R32I", 0x8235}, {"GL_R32UI", 0x8236}, {"GL_RG8I", 0x8237}, {"GL_RG8UI", 0x8238}, {"GL_RG16I", 0x8239}, {"GL_RG16UI", 0x823A}, {"GL_RG32I", 0x823B}, {"GL_RG32UI", 0x823C}, {"GL_SYNC_CL_EVENT_ARB", 0x8240}, {"GL_SYNC_CL_EVENT_COMPLETE_ARB", 0x8241}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS", 0x8242}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB", 0x8242}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR", 0x8242}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", 0x8243}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB", 0x8243}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR", 0x8243}, {"GL_DEBUG_CALLBACK_FUNCTION", 0x8244}, {"GL_DEBUG_CALLBACK_FUNCTION_ARB", 0x8244}, {"GL_DEBUG_CALLBACK_FUNCTION_KHR", 0x8244}, {"GL_DEBUG_CALLBACK_USER_PARAM", 0x8245}, {"GL_DEBUG_CALLBACK_USER_PARAM_ARB", 0x8245}, {"GL_DEBUG_CALLBACK_USER_PARAM_KHR", 0x8245}, {"GL_DEBUG_SOURCE_API", 0x8246}, {"GL_DEBUG_SOURCE_API_ARB", 0x8246}, {"GL_DEBUG_SOURCE_API_KHR", 0x8246}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM", 0x8247}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB", 0x8247}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR", 0x8247}, {"GL_DEBUG_SOURCE_SHADER_COMPILER", 0x8248}, {"GL_DEBUG_SOURCE_SHADER_COMPILER_ARB", 0x8248}, {"GL_DEBUG_SOURCE_SHADER_COMPILER_KHR", 0x8248}, {"GL_DEBUG_SOURCE_THIRD_PARTY", 0x8249}, {"GL_DEBUG_SOURCE_THIRD_PARTY_ARB", 0x8249}, {"GL_DEBUG_SOURCE_THIRD_PARTY_KHR", 0x8249}, {"GL_DEBUG_SOURCE_APPLICATION", 0x824A}, {"GL_DEBUG_SOURCE_APPLICATION_ARB", 0x824A}, {"GL_DEBUG_SOURCE_APPLICATION_KHR", 0x824A}, {"GL_DEBUG_SOURCE_OTHER", 0x824B}, {"GL_DEBUG_SOURCE_OTHER_ARB", 0x824B}, {"GL_DEBUG_SOURCE_OTHER_KHR", 0x824B}, {"GL_DEBUG_TYPE_ERROR", 0x824C}, {"GL_DEBUG_TYPE_ERROR_ARB", 0x824C}, {"GL_DEBUG_TYPE_ERROR_KHR", 0x824C}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR", 0x824D}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB", 0x824D}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR", 0x824D}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR", 0x824E}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB", 0x824E}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR", 0x824E}, {"GL_DEBUG_TYPE_PORTABILITY", 0x824F}, {"GL_DEBUG_TYPE_PORTABILITY_ARB", 0x824F}, {"GL_DEBUG_TYPE_PORTABILITY_KHR", 0x824F}, {"GL_DEBUG_TYPE_PERFORMANCE", 0x8250}, {"GL_DEBUG_TYPE_PERFORMANCE_ARB", 0x8250}, {"GL_DEBUG_TYPE_PERFORMANCE_KHR", 0x8250}, {"GL_DEBUG_TYPE_OTHER", 0x8251}, {"GL_DEBUG_TYPE_OTHER_ARB", 0x8251}, {"GL_DEBUG_TYPE_OTHER_KHR", 0x8251}, {"GL_LOSE_CONTEXT_ON_RESET_ARB", 0x8252}, {"GL_GUILTY_CONTEXT_RESET_ARB", 0x8253}, {"GL_INNOCENT_CONTEXT_RESET_ARB", 0x8254}, {"GL_UNKNOWN_CONTEXT_RESET_ARB", 0x8255}, {"GL_RESET_NOTIFICATION_STRATEGY_ARB", 0x8256}, {"GL_PROGRAM_BINARY_RETRIEVABLE_HINT", 0x8257}, {"GL_PROGRAM_SEPARABLE", 0x8258}, {"GL_PROGRAM_SEPARABLE_EXT", 0x8258}, {"GL_ACTIVE_PROGRAM", 0x8259}, {"GL_ACTIVE_PROGRAM_EXT", 0x8259}, {"GL_PROGRAM_PIPELINE_BINDING", 0x825A}, {"GL_PROGRAM_PIPELINE_BINDING_EXT", 0x825A}, {"GL_MAX_VIEWPORTS", 0x825B}, {"GL_VIEWPORT_SUBPIXEL_BITS", 0x825C}, {"GL_VIEWPORT_BOUNDS_RANGE", 0x825D}, {"GL_LAYER_PROVOKING_VERTEX", 0x825E}, {"GL_VIEWPORT_INDEX_PROVOKING_VERTEX", 0x825F}, {"GL_UNDEFINED_VERTEX", 0x8260}, {"GL_NO_RESET_NOTIFICATION_ARB", 0x8261}, {"GL_MAX_COMPUTE_SHARED_MEMORY_SIZE", 0x8262}, {"GL_MAX_COMPUTE_UNIFORM_COMPONENTS", 0x8263}, {"GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", 0x8264}, {"GL_MAX_COMPUTE_ATOMIC_COUNTERS", 0x8265}, {"GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", 0x8266}, {"GL_COMPUTE_LOCAL_WORK_SIZE", 0x8267}, {"GL_DEBUG_TYPE_MARKER", 0x8268}, {"GL_DEBUG_TYPE_MARKER_KHR", 0x8268}, {"GL_DEBUG_TYPE_PUSH_GROUP", 0x8269}, {"GL_DEBUG_TYPE_PUSH_GROUP_KHR", 0x8269}, {"GL_DEBUG_TYPE_POP_GROUP", 0x826A}, {"GL_DEBUG_TYPE_POP_GROUP_KHR", 0x826A}, {"GL_DEBUG_SEVERITY_NOTIFICATION", 0x826B}, {"GL_DEBUG_SEVERITY_NOTIFICATION_KHR", 0x826B}, {"GL_MAX_DEBUG_GROUP_STACK_DEPTH", 0x826C}, {"GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826C}, {"GL_DEBUG_GROUP_STACK_DEPTH", 0x826D}, {"GL_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826D}, {"GL_MAX_UNIFORM_LOCATIONS", 0x826E}, {"GL_INTERNALFORMAT_SUPPORTED", 0x826F}, {"GL_INTERNALFORMAT_PREFERRED", 0x8270}, {"GL_INTERNALFORMAT_RED_SIZE", 0x8271}, {"GL_INTERNALFORMAT_GREEN_SIZE", 0x8272}, {"GL_INTERNALFORMAT_BLUE_SIZE", 0x8273}, {"GL_INTERNALFORMAT_ALPHA_SIZE", 0x8274}, {"GL_INTERNALFORMAT_DEPTH_SIZE", 0x8275}, {"GL_INTERNALFORMAT_STENCIL_SIZE", 0x8276}, {"GL_INTERNALFORMAT_SHARED_SIZE", 0x8277}, {"GL_INTERNALFORMAT_RED_TYPE", 0x8278}, {"GL_INTERNALFORMAT_GREEN_TYPE", 0x8279}, {"GL_INTERNALFORMAT_BLUE_TYPE", 0x827A}, {"GL_INTERNALFORMAT_ALPHA_TYPE", 0x827B}, {"GL_INTERNALFORMAT_DEPTH_TYPE", 0x827C}, {"GL_INTERNALFORMAT_STENCIL_TYPE", 0x827D}, {"GL_MAX_WIDTH", 0x827E}, {"GL_MAX_HEIGHT", 0x827F}, {"GL_MAX_DEPTH", 0x8280}, {"GL_MAX_LAYERS", 0x8281}, {"GL_MAX_COMBINED_DIMENSIONS", 0x8282}, {"GL_COLOR_COMPONENTS", 0x8283}, {"GL_DEPTH_COMPONENTS", 0x8284}, {"GL_STENCIL_COMPONENTS", 0x8285}, {"GL_COLOR_RENDERABLE", 0x8286}, {"GL_DEPTH_RENDERABLE", 0x8287}, {"GL_STENCIL_RENDERABLE", 0x8288}, {"GL_FRAMEBUFFER_RENDERABLE", 0x8289}, {"GL_FRAMEBUFFER_RENDERABLE_LAYERED", 0x828A}, {"GL_FRAMEBUFFER_BLEND", 0x828B}, {"GL_READ_PIXELS", 0x828C}, {"GL_READ_PIXELS_FORMAT", 0x828D}, {"GL_READ_PIXELS_TYPE", 0x828E}, {"GL_TEXTURE_IMAGE_FORMAT", 0x828F}, {"GL_TEXTURE_IMAGE_TYPE", 0x8290}, {"GL_GET_TEXTURE_IMAGE_FORMAT", 0x8291}, {"GL_GET_TEXTURE_IMAGE_TYPE", 0x8292}, {"GL_MIPMAP", 0x8293}, {"GL_MANUAL_GENERATE_MIPMAP", 0x8294}, {"GL_AUTO_GENERATE_MIPMAP", 0x8295}, {"GL_COLOR_ENCODING", 0x8296}, {"GL_SRGB_READ", 0x8297}, {"GL_SRGB_WRITE", 0x8298}, {"GL_SRGB_DECODE_ARB", 0x8299}, {"GL_FILTER", 0x829A}, {"GL_VERTEX_TEXTURE", 0x829B}, {"GL_TESS_CONTROL_TEXTURE", 0x829C}, {"GL_TESS_EVALUATION_TEXTURE", 0x829D}, {"GL_GEOMETRY_TEXTURE", 0x829E}, {"GL_FRAGMENT_TEXTURE", 0x829F}, {"GL_COMPUTE_TEXTURE", 0x82A0}, {"GL_TEXTURE_SHADOW", 0x82A1}, {"GL_TEXTURE_GATHER", 0x82A2}, {"GL_TEXTURE_GATHER_SHADOW", 0x82A3}, {"GL_SHADER_IMAGE_LOAD", 0x82A4}, {"GL_SHADER_IMAGE_STORE", 0x82A5}, {"GL_SHADER_IMAGE_ATOMIC", 0x82A6}, {"GL_IMAGE_TEXEL_SIZE", 0x82A7}, {"GL_IMAGE_COMPATIBILITY_CLASS", 0x82A8}, {"GL_IMAGE_PIXEL_FORMAT", 0x82A9}, {"GL_IMAGE_PIXEL_TYPE", 0x82AA}, {"GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST", 0x82AC}, {"GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST", 0x82AD}, {"GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE", 0x82AE}, {"GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE", 0x82AF}, {"GL_TEXTURE_COMPRESSED_BLOCK_WIDTH", 0x82B1}, {"GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT", 0x82B2}, {"GL_TEXTURE_COMPRESSED_BLOCK_SIZE", 0x82B3}, {"GL_CLEAR_BUFFER", 0x82B4}, {"GL_TEXTURE_VIEW", 0x82B5}, {"GL_VIEW_COMPATIBILITY_CLASS", 0x82B6}, {"GL_FULL_SUPPORT", 0x82B7}, {"GL_CAVEAT_SUPPORT", 0x82B8}, {"GL_IMAGE_CLASS_4_X_32", 0x82B9}, {"GL_IMAGE_CLASS_2_X_32", 0x82BA}, {"GL_IMAGE_CLASS_1_X_32", 0x82BB}, {"GL_IMAGE_CLASS_4_X_16", 0x82BC}, {"GL_IMAGE_CLASS_2_X_16", 0x82BD}, {"GL_IMAGE_CLASS_1_X_16", 0x82BE}, {"GL_IMAGE_CLASS_4_X_8", 0x82BF}, {"GL_IMAGE_CLASS_2_X_8", 0x82C0}, {"GL_IMAGE_CLASS_1_X_8", 0x82C1}, {"GL_IMAGE_CLASS_11_11_10", 0x82C2}, {"GL_IMAGE_CLASS_10_10_10_2", 0x82C3}, {"GL_VIEW_CLASS_128_BITS", 0x82C4}, {"GL_VIEW_CLASS_96_BITS", 0x82C5}, {"GL_VIEW_CLASS_64_BITS", 0x82C6}, {"GL_VIEW_CLASS_48_BITS", 0x82C7}, {"GL_VIEW_CLASS_32_BITS", 0x82C8}, {"GL_VIEW_CLASS_24_BITS", 0x82C9}, {"GL_VIEW_CLASS_16_BITS", 0x82CA}, {"GL_VIEW_CLASS_8_BITS", 0x82CB}, {"GL_VIEW_CLASS_S3TC_DXT1_RGB", 0x82CC}, {"GL_VIEW_CLASS_S3TC_DXT1_RGBA", 0x82CD}, {"GL_VIEW_CLASS_S3TC_DXT3_RGBA", 0x82CE}, {"GL_VIEW_CLASS_S3TC_DXT5_RGBA", 0x82CF}, {"GL_VIEW_CLASS_RGTC1_RED", 0x82D0}, {"GL_VIEW_CLASS_RGTC2_RG", 0x82D1}, {"GL_VIEW_CLASS_BPTC_UNORM", 0x82D2}, {"GL_VIEW_CLASS_BPTC_FLOAT", 0x82D3}, {"GL_VERTEX_ATTRIB_BINDING", 0x82D4}, {"GL_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D5}, {"GL_VERTEX_BINDING_DIVISOR", 0x82D6}, {"GL_VERTEX_BINDING_OFFSET", 0x82D7}, {"GL_VERTEX_BINDING_STRIDE", 0x82D8}, {"GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D9}, {"GL_MAX_VERTEX_ATTRIB_BINDINGS", 0x82DA}, {"GL_TEXTURE_VIEW_MIN_LEVEL", 0x82DB}, {"GL_TEXTURE_VIEW_NUM_LEVELS", 0x82DC}, {"GL_TEXTURE_VIEW_MIN_LAYER", 0x82DD}, {"GL_TEXTURE_VIEW_NUM_LAYERS", 0x82DE}, {"GL_TEXTURE_IMMUTABLE_LEVELS", 0x82DF}, {"GL_BUFFER", 0x82E0}, {"GL_BUFFER_KHR", 0x82E0}, {"GL_SHADER", 0x82E1}, {"GL_SHADER_KHR", 0x82E1}, {"GL_PROGRAM", 0x82E2}, {"GL_PROGRAM_KHR", 0x82E2}, {"GL_QUERY", 0x82E3}, {"GL_QUERY_KHR", 0x82E3}, {"GL_PROGRAM_PIPELINE", 0x82E4}, {"GL_MAX_VERTEX_ATTRIB_STRIDE", 0x82E5}, {"GL_SAMPLER", 0x82E6}, {"GL_SAMPLER_KHR", 0x82E6}, {"GL_DISPLAY_LIST", 0x82E7}, {"GL_MAX_LABEL_LENGTH", 0x82E8}, {"GL_MAX_LABEL_LENGTH_KHR", 0x82E8}, {"GL_NUM_SHADING_LANGUAGE_VERSIONS", 0x82E9}, {"GL_DEPTH_PASS_INSTRUMENT_SGIX", 0x8310}, {"GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX", 0x8311}, {"GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX", 0x8312}, {"GL_FRAGMENTS_INSTRUMENT_SGIX", 0x8313}, {"GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX", 0x8314}, {"GL_FRAGMENTS_INSTRUMENT_MAX_SGIX", 0x8315}, {"GL_CONVOLUTION_HINT_SGIX", 0x8316}, {"GL_YCRCB_SGIX", 0x8318}, {"GL_YCRCBA_SGIX", 0x8319}, {"GL_UNPACK_COMPRESSED_SIZE_SGIX", 0x831A}, {"GL_PACK_MAX_COMPRESSED_SIZE_SGIX", 0x831B}, {"GL_PACK_COMPRESSED_SIZE_SGIX", 0x831C}, {"GL_SLIM8U_SGIX", 0x831D}, {"GL_SLIM10U_SGIX", 0x831E}, {"GL_SLIM12S_SGIX", 0x831F}, {"GL_ALPHA_MIN_SGIX", 0x8320}, {"GL_ALPHA_MAX_SGIX", 0x8321}, {"GL_SCALEBIAS_HINT_SGIX", 0x8322}, {"GL_ASYNC_MARKER_SGIX", 0x8329}, {"GL_PIXEL_TEX_GEN_MODE_SGIX", 0x832B}, {"GL_ASYNC_HISTOGRAM_SGIX", 0x832C}, {"GL_MAX_ASYNC_HISTOGRAM_SGIX", 0x832D}, {"GL_PIXEL_TRANSFORM_2D_EXT", 0x8330}, {"GL_PIXEL_MAG_FILTER_EXT", 0x8331}, {"GL_PIXEL_MIN_FILTER_EXT", 0x8332}, {"GL_PIXEL_CUBIC_WEIGHT_EXT", 0x8333}, {"GL_CUBIC_EXT", 0x8334}, {"GL_AVERAGE_EXT", 0x8335}, {"GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT", 0x8336}, {"GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT", 0x8337}, {"GL_PIXEL_TRANSFORM_2D_MATRIX_EXT", 0x8338}, {"GL_FRAGMENT_MATERIAL_EXT", 0x8349}, {"GL_FRAGMENT_NORMAL_EXT", 0x834A}, {"GL_FRAGMENT_COLOR_EXT", 0x834C}, {"GL_ATTENUATION_EXT", 0x834D}, {"GL_SHADOW_ATTENUATION_EXT", 0x834E}, {"GL_TEXTURE_APPLICATION_MODE_EXT", 0x834F}, {"GL_TEXTURE_LIGHT_EXT", 0x8350}, {"GL_TEXTURE_MATERIAL_FACE_EXT", 0x8351}, {"GL_TEXTURE_MATERIAL_PARAMETER_EXT", 0x8352}, {"GL_PIXEL_TEXTURE_SGIS", 0x8353}, {"GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS", 0x8354}, {"GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS", 0x8355}, {"GL_PIXEL_GROUP_COLOR_SGIS", 0x8356}, {"GL_LINE_QUALITY_HINT_SGIX", 0x835B}, {"GL_ASYNC_TEX_IMAGE_SGIX", 0x835C}, {"GL_ASYNC_DRAW_PIXELS_SGIX", 0x835D}, {"GL_ASYNC_READ_PIXELS_SGIX", 0x835E}, {"GL_MAX_ASYNC_TEX_IMAGE_SGIX", 0x835F}, {"GL_MAX_ASYNC_DRAW_PIXELS_SGIX", 0x8360}, {"GL_MAX_ASYNC_READ_PIXELS_SGIX", 0x8361}, {"GL_UNSIGNED_BYTE_2_3_3_REV", 0x8362}, {"GL_UNSIGNED_BYTE_2_3_3_REV_EXT", 0x8362}, {"GL_UNSIGNED_SHORT_5_6_5", 0x8363}, {"GL_UNSIGNED_SHORT_5_6_5_EXT", 0x8363}, {"GL_UNSIGNED_SHORT_5_6_5_REV", 0x8364}, {"GL_UNSIGNED_SHORT_5_6_5_REV_EXT", 0x8364}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV", 0x8365}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT", 0x8365}, {"GL_UNSIGNED_SHORT_1_5_5_5_REV", 0x8366}, {"GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT", 0x8366}, {"GL_UNSIGNED_INT_8_8_8_8_REV", 0x8367}, {"GL_UNSIGNED_INT_8_8_8_8_REV_EXT", 0x8367}, {"GL_UNSIGNED_INT_2_10_10_10_REV", 0x8368}, {"GL_UNSIGNED_INT_2_10_10_10_REV_EXT", 0x8368}, {"GL_TEXTURE_MAX_CLAMP_S_SGIX", 0x8369}, {"GL_TEXTURE_MAX_CLAMP_T_SGIX", 0x836A}, {"GL_TEXTURE_MAX_CLAMP_R_SGIX", 0x836B}, {"GL_MIRRORED_REPEAT", 0x8370}, {"GL_MIRRORED_REPEAT_ARB", 0x8370}, {"GL_MIRRORED_REPEAT_IBM", 0x8370}, {"GL_MIRRORED_REPEAT_OES", 0x8370}, {"GL_RGB_S3TC", 0x83A0}, {"GL_RGB4_S3TC", 0x83A1}, {"GL_RGBA_S3TC", 0x83A2}, {"GL_RGBA4_S3TC", 0x83A3}, {"GL_RGBA_DXT5_S3TC", 0x83A4}, {"GL_RGBA4_DXT5_S3TC", 0x83A5}, {"GL_VERTEX_PRECLIP_SGIX", 0x83EE}, {"GL_VERTEX_PRECLIP_HINT_SGIX", 0x83EF}, {"GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0}, {"GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1}, {"GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE", 0x83F2}, {"GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2}, {"GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE", 0x83F3}, {"GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3}, {"GL_PARALLEL_ARRAYS_INTEL", 0x83F4}, {"GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F5}, {"GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F6}, {"GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F7}, {"GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F8}, {"GL_TEXTURE_MEMORY_LAYOUT_INTEL", 0x83FF}, {"GL_FRAGMENT_LIGHTING_SGIX", 0x8400}, {"GL_FRAGMENT_COLOR_MATERIAL_SGIX", 0x8401}, {"GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX", 0x8402}, {"GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX", 0x8403}, {"GL_MAX_FRAGMENT_LIGHTS_SGIX", 0x8404}, {"GL_MAX_ACTIVE_LIGHTS_SGIX", 0x8405}, {"GL_CURRENT_RASTER_NORMAL_SGIX", 0x8406}, {"GL_LIGHT_ENV_MODE_SGIX", 0x8407}, {"GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX", 0x8408}, {"GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX", 0x8409}, {"GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX", 0x840A}, {"GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX", 0x840B}, {"GL_FRAGMENT_LIGHT0_SGIX", 0x840C}, {"GL_FRAGMENT_LIGHT1_SGIX", 0x840D}, {"GL_FRAGMENT_LIGHT2_SGIX", 0x840E}, {"GL_FRAGMENT_LIGHT3_SGIX", 0x840F}, {"GL_FRAGMENT_LIGHT4_SGIX", 0x8410}, {"GL_FRAGMENT_LIGHT5_SGIX", 0x8411}, {"GL_FRAGMENT_LIGHT6_SGIX", 0x8412}, {"GL_FRAGMENT_LIGHT7_SGIX", 0x8413}, {"GL_PACK_RESAMPLE_SGIX", 0x842C}, {"GL_UNPACK_RESAMPLE_SGIX", 0x842D}, {"GL_RESAMPLE_REPLICATE_SGIX", 0x842E}, {"GL_RESAMPLE_ZERO_FILL_SGIX", 0x842F}, {"GL_RESAMPLE_DECIMATE_SGIX", 0x8430}, {"GL_TANGENT_ARRAY_EXT", 0x8439}, {"GL_BINORMAL_ARRAY_EXT", 0x843A}, {"GL_CURRENT_TANGENT_EXT", 0x843B}, {"GL_CURRENT_BINORMAL_EXT", 0x843C}, {"GL_TANGENT_ARRAY_TYPE_EXT", 0x843E}, {"GL_TANGENT_ARRAY_STRIDE_EXT", 0x843F}, {"GL_BINORMAL_ARRAY_TYPE_EXT", 0x8440}, {"GL_BINORMAL_ARRAY_STRIDE_EXT", 0x8441}, {"GL_TANGENT_ARRAY_POINTER_EXT", 0x8442}, {"GL_BINORMAL_ARRAY_POINTER_EXT", 0x8443}, {"GL_MAP1_TANGENT_EXT", 0x8444}, {"GL_MAP2_TANGENT_EXT", 0x8445}, {"GL_MAP1_BINORMAL_EXT", 0x8446}, {"GL_MAP2_BINORMAL_EXT", 0x8447}, {"GL_NEAREST_CLIPMAP_NEAREST_SGIX", 0x844D}, {"GL_NEAREST_CLIPMAP_LINEAR_SGIX", 0x844E}, {"GL_LINEAR_CLIPMAP_NEAREST_SGIX", 0x844F}, {"GL_FOG_COORDINATE_SOURCE", 0x8450}, {"GL_FOG_COORDINATE_SOURCE_EXT", 0x8450}, {"GL_FOG_COORD_SRC", 0x8450}, {"GL_FOG_COORDINATE", 0x8451}, {"GL_FOG_COORD", 0x8451}, {"GL_FOG_COORDINATE_EXT", 0x8451}, {"GL_FRAGMENT_DEPTH", 0x8452}, {"GL_FRAGMENT_DEPTH_EXT", 0x8452}, {"GL_CURRENT_FOG_COORDINATE", 0x8453}, {"GL_CURRENT_FOG_COORD", 0x8453}, {"GL_CURRENT_FOG_COORDINATE_EXT", 0x8453}, {"GL_FOG_COORDINATE_ARRAY_TYPE", 0x8454}, {"GL_FOG_COORDINATE_ARRAY_TYPE_EXT", 0x8454}, {"GL_FOG_COORD_ARRAY_TYPE", 0x8454}, {"GL_FOG_COORDINATE_ARRAY_STRIDE", 0x8455}, {"GL_FOG_COORDINATE_ARRAY_STRIDE_EXT", 0x8455}, {"GL_FOG_COORD_ARRAY_STRIDE", 0x8455}, {"GL_FOG_COORDINATE_ARRAY_POINTER", 0x8456}, {"GL_FOG_COORDINATE_ARRAY_POINTER_EXT", 0x8456}, {"GL_FOG_COORD_ARRAY_POINTER", 0x8456}, {"GL_FOG_COORDINATE_ARRAY", 0x8457}, {"GL_FOG_COORDINATE_ARRAY_EXT", 0x8457}, {"GL_FOG_COORD_ARRAY", 0x8457}, {"GL_COLOR_SUM", 0x8458}, {"GL_COLOR_SUM_ARB", 0x8458}, {"GL_COLOR_SUM_EXT", 0x8458}, {"GL_CURRENT_SECONDARY_COLOR", 0x8459}, {"GL_CURRENT_SECONDARY_COLOR_EXT", 0x8459}, {"GL_SECONDARY_COLOR_ARRAY_SIZE", 0x845A}, {"GL_SECONDARY_COLOR_ARRAY_SIZE_EXT", 0x845A}, {"GL_SECONDARY_COLOR_ARRAY_TYPE", 0x845B}, {"GL_SECONDARY_COLOR_ARRAY_TYPE_EXT", 0x845B}, {"GL_SECONDARY_COLOR_ARRAY_STRIDE", 0x845C}, {"GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT", 0x845C}, {"GL_SECONDARY_COLOR_ARRAY_POINTER", 0x845D}, {"GL_SECONDARY_COLOR_ARRAY_POINTER_EXT", 0x845D}, {"GL_SECONDARY_COLOR_ARRAY", 0x845E}, {"GL_SECONDARY_COLOR_ARRAY_EXT", 0x845E}, {"GL_CURRENT_RASTER_SECONDARY_COLOR", 0x845F}, {"GL_ALIASED_POINT_SIZE_RANGE", 0x846D}, {"GL_ALIASED_LINE_WIDTH_RANGE", 0x846E}, {"GL_SCREEN_COORDINATES_REND", 0x8490}, {"GL_INVERTED_SCREEN_W_REND", 0x8491}, {"GL_TEXTURE0", 0x84C0}, {"GL_TEXTURE0_ARB", 0x84C0}, {"GL_TEXTURE1", 0x84C1}, {"GL_TEXTURE1_ARB", 0x84C1}, {"GL_TEXTURE2", 0x84C2}, {"GL_TEXTURE2_ARB", 0x84C2}, {"GL_TEXTURE3", 0x84C3}, {"GL_TEXTURE3_ARB", 0x84C3}, {"GL_TEXTURE4", 0x84C4}, {"GL_TEXTURE4_ARB", 0x84C4}, {"GL_TEXTURE5", 0x84C5}, {"GL_TEXTURE5_ARB", 0x84C5}, {"GL_TEXTURE6", 0x84C6}, {"GL_TEXTURE6_ARB", 0x84C6}, {"GL_TEXTURE7", 0x84C7}, {"GL_TEXTURE7_ARB", 0x84C7}, {"GL_TEXTURE8", 0x84C8}, {"GL_TEXTURE8_ARB", 0x84C8}, {"GL_TEXTURE9", 0x84C9}, {"GL_TEXTURE9_ARB", 0x84C9}, {"GL_TEXTURE10", 0x84CA}, {"GL_TEXTURE10_ARB", 0x84CA}, {"GL_TEXTURE11", 0x84CB}, {"GL_TEXTURE11_ARB", 0x84CB}, {"GL_TEXTURE12", 0x84CC}, {"GL_TEXTURE12_ARB", 0x84CC}, {"GL_TEXTURE13", 0x84CD}, {"GL_TEXTURE13_ARB", 0x84CD}, {"GL_TEXTURE14", 0x84CE}, {"GL_TEXTURE14_ARB", 0x84CE}, {"GL_TEXTURE15", 0x84CF}, {"GL_TEXTURE15_ARB", 0x84CF}, {"GL_TEXTURE16", 0x84D0}, {"GL_TEXTURE16_ARB", 0x84D0}, {"GL_TEXTURE17", 0x84D1}, {"GL_TEXTURE17_ARB", 0x84D1}, {"GL_TEXTURE18", 0x84D2}, {"GL_TEXTURE18_ARB", 0x84D2}, {"GL_TEXTURE19", 0x84D3}, {"GL_TEXTURE19_ARB", 0x84D3}, {"GL_TEXTURE20", 0x84D4}, {"GL_TEXTURE20_ARB", 0x84D4}, {"GL_TEXTURE21", 0x84D5}, {"GL_TEXTURE21_ARB", 0x84D5}, {"GL_TEXTURE22", 0x84D6}, {"GL_TEXTURE22_ARB", 0x84D6}, {"GL_TEXTURE23", 0x84D7}, {"GL_TEXTURE23_ARB", 0x84D7}, {"GL_TEXTURE24", 0x84D8}, {"GL_TEXTURE24_ARB", 0x84D8}, {"GL_TEXTURE25", 0x84D9}, {"GL_TEXTURE25_ARB", 0x84D9}, {"GL_TEXTURE26", 0x84DA}, {"GL_TEXTURE26_ARB", 0x84DA}, {"GL_TEXTURE27", 0x84DB}, {"GL_TEXTURE27_ARB", 0x84DB}, {"GL_TEXTURE28", 0x84DC}, {"GL_TEXTURE28_ARB", 0x84DC}, {"GL_TEXTURE29", 0x84DD}, {"GL_TEXTURE29_ARB", 0x84DD}, {"GL_TEXTURE30", 0x84DE}, {"GL_TEXTURE30_ARB", 0x84DE}, {"GL_TEXTURE31", 0x84DF}, {"GL_TEXTURE31_ARB", 0x84DF}, {"GL_ACTIVE_TEXTURE", 0x84E0}, {"GL_ACTIVE_TEXTURE_ARB", 0x84E0}, {"GL_CLIENT_ACTIVE_TEXTURE", 0x84E1}, {"GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1}, {"GL_MAX_TEXTURE_UNITS", 0x84E2}, {"GL_MAX_TEXTURE_UNITS_ARB", 0x84E2}, {"GL_TRANSPOSE_MODELVIEW_MATRIX", 0x84E3}, {"GL_TRANSPOSE_MODELVIEW_MATRIX_ARB", 0x84E3}, {"GL_TRANSPOSE_PROJECTION_MATRIX", 0x84E4}, {"GL_TRANSPOSE_PROJECTION_MATRIX_ARB", 0x84E4}, {"GL_TRANSPOSE_TEXTURE_MATRIX", 0x84E5}, {"GL_TRANSPOSE_TEXTURE_MATRIX_ARB", 0x84E5}, {"GL_TRANSPOSE_COLOR_MATRIX", 0x84E6}, {"GL_TRANSPOSE_COLOR_MATRIX_ARB", 0x84E6}, {"GL_SUBTRACT", 0x84E7}, {"GL_SUBTRACT_ARB", 0x84E7}, {"GL_MAX_RENDERBUFFER_SIZE", 0x84E8}, {"GL_MAX_RENDERBUFFER_SIZE_EXT", 0x84E8}, {"GL_MAX_RENDERBUFFER_SIZE_OES", 0x84E8}, {"GL_COMPRESSED_ALPHA", 0x84E9}, {"GL_COMPRESSED_ALPHA_ARB", 0x84E9}, {"GL_COMPRESSED_LUMINANCE", 0x84EA}, {"GL_COMPRESSED_LUMINANCE_ARB", 0x84EA}, {"GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB}, {"GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB}, {"GL_COMPRESSED_INTENSITY", 0x84EC}, {"GL_COMPRESSED_INTENSITY_ARB", 0x84EC}, {"GL_COMPRESSED_RGB", 0x84ED}, {"GL_COMPRESSED_RGB_ARB", 0x84ED}, {"GL_COMPRESSED_RGBA", 0x84EE}, {"GL_COMPRESSED_RGBA_ARB", 0x84EE}, {"GL_TEXTURE_COMPRESSION_HINT", 0x84EF}, {"GL_TEXTURE_COMPRESSION_HINT_ARB", 0x84EF}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER", 0x84F0}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x84F1}, {"GL_ALL_COMPLETED_NV", 0x84F2}, {"GL_FENCE_STATUS_NV", 0x84F3}, {"GL_FENCE_CONDITION_NV", 0x84F4}, {"GL_TEXTURE_RECTANGLE", 0x84F5}, {"GL_TEXTURE_RECTANGLE_ARB", 0x84F5}, {"GL_TEXTURE_RECTANGLE_NV", 0x84F5}, {"GL_TEXTURE_BINDING_RECTANGLE", 0x84F6}, {"GL_TEXTURE_BINDING_RECTANGLE_ARB", 0x84F6}, {"GL_TEXTURE_BINDING_RECTANGLE_NV", 0x84F6}, {"GL_PROXY_TEXTURE_RECTANGLE", 0x84F7}, {"GL_PROXY_TEXTURE_RECTANGLE_ARB", 0x84F7}, {"GL_PROXY_TEXTURE_RECTANGLE_NV", 0x84F7}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE", 0x84F8}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB", 0x84F8}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", 0x84F8}, {"GL_DEPTH_STENCIL", 0x84F9}, {"GL_DEPTH_STENCIL_EXT", 0x84F9}, {"GL_DEPTH_STENCIL_NV", 0x84F9}, {"GL_DEPTH_STENCIL_OES", 0x84F9}, {"GL_UNSIGNED_INT_24_8", 0x84FA}, {"GL_UNSIGNED_INT_24_8_EXT", 0x84FA}, {"GL_UNSIGNED_INT_24_8_NV", 0x84FA}, {"GL_UNSIGNED_INT_24_8_OES", 0x84FA}, {"GL_MAX_TEXTURE_LOD_BIAS", 0x84FD}, {"GL_MAX_TEXTURE_LOD_BIAS_EXT", 0x84FD}, {"GL_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FE}, {"GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FF}, {"GL_TEXTURE_FILTER_CONTROL", 0x8500}, {"GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500}, {"GL_TEXTURE_LOD_BIAS", 0x8501}, {"GL_TEXTURE_LOD_BIAS_EXT", 0x8501}, {"GL_MODELVIEW1_STACK_DEPTH_EXT", 0x8502}, {"GL_COMBINE4_NV", 0x8503}, {"GL_MAX_SHININESS_NV", 0x8504}, {"GL_MAX_SPOT_EXPONENT_NV", 0x8505}, {"GL_MODELVIEW1_MATRIX_EXT", 0x8506}, {"GL_INCR_WRAP", 0x8507}, {"GL_INCR_WRAP_EXT", 0x8507}, {"GL_INCR_WRAP_OES", 0x8507}, {"GL_DECR_WRAP", 0x8508}, {"GL_DECR_WRAP_EXT", 0x8508}, {"GL_DECR_WRAP_OES", 0x8508}, {"GL_VERTEX_WEIGHTING_EXT", 0x8509}, {"GL_MODELVIEW1_ARB", 0x850A}, {"GL_MODELVIEW1_EXT", 0x850A}, {"GL_CURRENT_VERTEX_WEIGHT_EXT", 0x850B}, {"GL_VERTEX_WEIGHT_ARRAY_EXT", 0x850C}, {"GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT", 0x850D}, {"GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT", 0x850E}, {"GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT", 0x850F}, {"GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT", 0x8510}, {"GL_NORMAL_MAP", 0x8511}, {"GL_NORMAL_MAP_ARB", 0x8511}, {"GL_NORMAL_MAP_EXT", 0x8511}, {"GL_NORMAL_MAP_NV", 0x8511}, {"GL_NORMAL_MAP_OES", 0x8511}, {"GL_REFLECTION_MAP", 0x8512}, {"GL_REFLECTION_MAP_ARB", 0x8512}, {"GL_REFLECTION_MAP_EXT", 0x8512}, {"GL_REFLECTION_MAP_NV", 0x8512}, {"GL_REFLECTION_MAP_OES", 0x8512}, {"GL_TEXTURE_CUBE_MAP", 0x8513}, {"GL_TEXTURE_CUBE_MAP_ARB", 0x8513}, {"GL_TEXTURE_CUBE_MAP_EXT", 0x8513}, {"GL_TEXTURE_CUBE_MAP_OES", 0x8513}, {"GL_TEXTURE_BINDING_CUBE_MAP", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARB", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_EXT", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_OES", 0x8514}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES", 0x8515}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES", 0x8516}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES", 0x8517}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES", 0x8518}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES", 0x8519}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES", 0x851A}, {"GL_PROXY_TEXTURE_CUBE_MAP", 0x851B}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARB", 0x851B}, {"GL_PROXY_TEXTURE_CUBE_MAP_EXT", 0x851B}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES", 0x851C}, {"GL_VERTEX_ARRAY_RANGE_APPLE", 0x851D}, {"GL_VERTEX_ARRAY_RANGE_NV", 0x851D}, {"GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE", 0x851E}, {"GL_VERTEX_ARRAY_RANGE_LENGTH_NV", 0x851E}, {"GL_VERTEX_ARRAY_RANGE_VALID_NV", 0x851F}, {"GL_VERTEX_ARRAY_STORAGE_HINT_APPLE", 0x851F}, {"GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV", 0x8520}, {"GL_VERTEX_ARRAY_RANGE_POINTER_APPLE", 0x8521}, {"GL_VERTEX_ARRAY_RANGE_POINTER_NV", 0x8521}, {"GL_REGISTER_COMBINERS_NV", 0x8522}, {"GL_VARIABLE_A_NV", 0x8523}, {"GL_VARIABLE_B_NV", 0x8524}, {"GL_VARIABLE_C_NV", 0x8525}, {"GL_VARIABLE_D_NV", 0x8526}, {"GL_VARIABLE_E_NV", 0x8527}, {"GL_VARIABLE_F_NV", 0x8528}, {"GL_VARIABLE_G_NV", 0x8529}, {"GL_CONSTANT_COLOR0_NV", 0x852A}, {"GL_CONSTANT_COLOR1_NV", 0x852B}, {"GL_PRIMARY_COLOR_NV", 0x852C}, {"GL_SECONDARY_COLOR_NV", 0x852D}, {"GL_SPARE0_NV", 0x852E}, {"GL_SPARE1_NV", 0x852F}, {"GL_DISCARD_NV", 0x8530}, {"GL_E_TIMES_F_NV", 0x8531}, {"GL_SPARE0_PLUS_SECONDARY_COLOR_NV", 0x8532}, {"GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV", 0x8533}, {"GL_MULTISAMPLE_FILTER_HINT_NV", 0x8534}, {"GL_PER_STAGE_CONSTANTS_NV", 0x8535}, {"GL_UNSIGNED_IDENTITY_NV", 0x8536}, {"GL_UNSIGNED_INVERT_NV", 0x8537}, {"GL_EXPAND_NORMAL_NV", 0x8538}, {"GL_EXPAND_NEGATE_NV", 0x8539}, {"GL_HALF_BIAS_NORMAL_NV", 0x853A}, {"GL_HALF_BIAS_NEGATE_NV", 0x853B}, {"GL_SIGNED_IDENTITY_NV", 0x853C}, {"GL_SIGNED_NEGATE_NV", 0x853D}, {"GL_SCALE_BY_TWO_NV", 0x853E}, {"GL_SCALE_BY_FOUR_NV", 0x853F}, {"GL_SCALE_BY_ONE_HALF_NV", 0x8540}, {"GL_BIAS_BY_NEGATIVE_ONE_HALF_NV", 0x8541}, {"GL_COMBINER_INPUT_NV", 0x8542}, {"GL_COMBINER_MAPPING_NV", 0x8543}, {"GL_COMBINER_COMPONENT_USAGE_NV", 0x8544}, {"GL_COMBINER_AB_DOT_PRODUCT_NV", 0x8545}, {"GL_COMBINER_CD_DOT_PRODUCT_NV", 0x8546}, {"GL_COMBINER_MUX_SUM_NV", 0x8547}, {"GL_COMBINER_SCALE_NV", 0x8548}, {"GL_COMBINER_BIAS_NV", 0x8549}, {"GL_COMBINER_AB_OUTPUT_NV", 0x854A}, {"GL_COMBINER_CD_OUTPUT_NV", 0x854B}, {"GL_COMBINER_SUM_OUTPUT_NV", 0x854C}, {"GL_MAX_GENERAL_COMBINERS_NV", 0x854D}, {"GL_NUM_GENERAL_COMBINERS_NV", 0x854E}, {"GL_COLOR_SUM_CLAMP_NV", 0x854F}, {"GL_COMBINER0_NV", 0x8550}, {"GL_COMBINER1_NV", 0x8551}, {"GL_COMBINER2_NV", 0x8552}, {"GL_COMBINER3_NV", 0x8553}, {"GL_COMBINER4_NV", 0x8554}, {"GL_COMBINER5_NV", 0x8555}, {"GL_COMBINER6_NV", 0x8556}, {"GL_COMBINER7_NV", 0x8557}, {"GL_PRIMITIVE_RESTART_NV", 0x8558}, {"GL_PRIMITIVE_RESTART_INDEX_NV", 0x8559}, {"GL_FOG_DISTANCE_MODE_NV", 0x855A}, {"GL_EYE_RADIAL_NV", 0x855B}, {"GL_EYE_PLANE_ABSOLUTE_NV", 0x855C}, {"GL_EMBOSS_LIGHT_NV", 0x855D}, {"GL_EMBOSS_CONSTANT_NV", 0x855E}, {"GL_EMBOSS_MAP_NV", 0x855F}, {"GL_RED_MIN_CLAMP_INGR", 0x8560}, {"GL_GREEN_MIN_CLAMP_INGR", 0x8561}, {"GL_BLUE_MIN_CLAMP_INGR", 0x8562}, {"GL_ALPHA_MIN_CLAMP_INGR", 0x8563}, {"GL_RED_MAX_CLAMP_INGR", 0x8564}, {"GL_GREEN_MAX_CLAMP_INGR", 0x8565}, {"GL_BLUE_MAX_CLAMP_INGR", 0x8566}, {"GL_ALPHA_MAX_CLAMP_INGR", 0x8567}, {"GL_INTERLACE_READ_INGR", 0x8568}, {"GL_COMBINE", 0x8570}, {"GL_COMBINE_ARB", 0x8570}, {"GL_COMBINE_EXT", 0x8570}, {"GL_COMBINE_RGB", 0x8571}, {"GL_COMBINE_RGB_ARB", 0x8571}, {"GL_COMBINE_RGB_EXT", 0x8571}, {"GL_COMBINE_ALPHA", 0x8572}, {"GL_COMBINE_ALPHA_ARB", 0x8572}, {"GL_COMBINE_ALPHA_EXT", 0x8572}, {"GL_RGB_SCALE", 0x8573}, {"GL_RGB_SCALE_ARB", 0x8573}, {"GL_RGB_SCALE_EXT", 0x8573}, {"GL_ADD_SIGNED", 0x8574}, {"GL_ADD_SIGNED_ARB", 0x8574}, {"GL_ADD_SIGNED_EXT", 0x8574}, {"GL_INTERPOLATE", 0x8575}, {"GL_INTERPOLATE_ARB", 0x8575}, {"GL_INTERPOLATE_EXT", 0x8575}, {"GL_CONSTANT", 0x8576}, {"GL_CONSTANT_ARB", 0x8576}, {"GL_CONSTANT_EXT", 0x8576}, {"GL_PRIMARY_COLOR", 0x8577}, {"GL_PRIMARY_COLOR_ARB", 0x8577}, {"GL_PRIMARY_COLOR_EXT", 0x8577}, {"GL_PREVIOUS", 0x8578}, {"GL_PREVIOUS_ARB", 0x8578}, {"GL_PREVIOUS_EXT", 0x8578}, {"GL_SOURCE0_RGB", 0x8580}, {"GL_SOURCE0_RGB_ARB", 0x8580}, {"GL_SOURCE0_RGB_EXT", 0x8580}, {"GL_SRC0_RGB", 0x8580}, {"GL_SOURCE1_RGB", 0x8581}, {"GL_SOURCE1_RGB_ARB", 0x8581}, {"GL_SOURCE1_RGB_EXT", 0x8581}, {"GL_SRC1_RGB", 0x8581}, {"GL_SOURCE2_RGB", 0x8582}, {"GL_SOURCE2_RGB_ARB", 0x8582}, {"GL_SOURCE2_RGB_EXT", 0x8582}, {"GL_SRC2_RGB", 0x8582}, {"GL_SOURCE3_RGB_NV", 0x8583}, {"GL_SOURCE0_ALPHA", 0x8588}, {"GL_SOURCE0_ALPHA_ARB", 0x8588}, {"GL_SOURCE0_ALPHA_EXT", 0x8588}, {"GL_SRC0_ALPHA", 0x8588}, {"GL_SOURCE1_ALPHA", 0x8589}, {"GL_SOURCE1_ALPHA_ARB", 0x8589}, {"GL_SOURCE1_ALPHA_EXT", 0x8589}, {"GL_SRC1_ALPHA", 0x8589}, {"GL_SOURCE2_ALPHA", 0x858A}, {"GL_SOURCE2_ALPHA_ARB", 0x858A}, {"GL_SOURCE2_ALPHA_EXT", 0x858A}, {"GL_SRC2_ALPHA", 0x858A}, {"GL_SOURCE3_ALPHA_NV", 0x858B}, {"GL_OPERAND0_RGB", 0x8590}, {"GL_OPERAND0_RGB_ARB", 0x8590}, {"GL_OPERAND0_RGB_EXT", 0x8590}, {"GL_OPERAND1_RGB", 0x8591}, {"GL_OPERAND1_RGB_ARB", 0x8591}, {"GL_OPERAND1_RGB_EXT", 0x8591}, {"GL_OPERAND2_RGB", 0x8592}, {"GL_OPERAND2_RGB_ARB", 0x8592}, {"GL_OPERAND2_RGB_EXT", 0x8592}, {"GL_OPERAND3_RGB_NV", 0x8593}, {"GL_OPERAND0_ALPHA", 0x8598}, {"GL_OPERAND0_ALPHA_ARB", 0x8598}, {"GL_OPERAND0_ALPHA_EXT", 0x8598}, {"GL_OPERAND1_ALPHA", 0x8599}, {"GL_OPERAND1_ALPHA_ARB", 0x8599}, {"GL_OPERAND1_ALPHA_EXT", 0x8599}, {"GL_OPERAND2_ALPHA", 0x859A}, {"GL_OPERAND2_ALPHA_ARB", 0x859A}, {"GL_OPERAND2_ALPHA_EXT", 0x859A}, {"GL_OPERAND3_ALPHA_NV", 0x859B}, {"GL_PACK_SUBSAMPLE_RATE_SGIX", 0x85A0}, {"GL_UNPACK_SUBSAMPLE_RATE_SGIX", 0x85A1}, {"GL_PIXEL_SUBSAMPLE_4444_SGIX", 0x85A2}, {"GL_PIXEL_SUBSAMPLE_2424_SGIX", 0x85A3}, {"GL_PIXEL_SUBSAMPLE_4242_SGIX", 0x85A4}, {"GL_PERTURB_EXT", 0x85AE}, {"GL_TEXTURE_NORMAL_EXT", 0x85AF}, {"GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE", 0x85B0}, {"GL_TRANSFORM_HINT_APPLE", 0x85B1}, {"GL_UNPACK_CLIENT_STORAGE_APPLE", 0x85B2}, {"GL_BUFFER_OBJECT_APPLE", 0x85B3}, {"GL_STORAGE_CLIENT_APPLE", 0x85B4}, {"GL_VERTEX_ARRAY_BINDING", 0x85B5}, {"GL_VERTEX_ARRAY_BINDING_APPLE", 0x85B5}, {"GL_TEXTURE_RANGE_LENGTH_APPLE", 0x85B7}, {"GL_TEXTURE_RANGE_POINTER_APPLE", 0x85B8}, {"GL_YCBCR_422_APPLE", 0x85B9}, {"GL_UNSIGNED_SHORT_8_8_APPLE", 0x85BA}, {"GL_UNSIGNED_SHORT_8_8_MESA", 0x85BA}, {"GL_UNSIGNED_SHORT_8_8_REV_APPLE", 0x85BB}, {"GL_UNSIGNED_SHORT_8_8_REV_MESA", 0x85BB}, {"GL_TEXTURE_STORAGE_HINT_APPLE", 0x85BC}, {"GL_STORAGE_PRIVATE_APPLE", 0x85BD}, {"GL_STORAGE_CACHED_APPLE", 0x85BE}, {"GL_STORAGE_SHARED_APPLE", 0x85BF}, {"GL_REPLACEMENT_CODE_ARRAY_SUN", 0x85C0}, {"GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN", 0x85C1}, {"GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN", 0x85C2}, {"GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN", 0x85C3}, {"GL_R1UI_V3F_SUN", 0x85C4}, {"GL_R1UI_C4UB_V3F_SUN", 0x85C5}, {"GL_R1UI_C3F_V3F_SUN", 0x85C6}, {"GL_R1UI_N3F_V3F_SUN", 0x85C7}, {"GL_R1UI_C4F_N3F_V3F_SUN", 0x85C8}, {"GL_R1UI_T2F_V3F_SUN", 0x85C9}, {"GL_R1UI_T2F_N3F_V3F_SUN", 0x85CA}, {"GL_R1UI_T2F_C4F_N3F_V3F_SUN", 0x85CB}, {"GL_SLICE_ACCUM_SUN", 0x85CC}, {"GL_QUAD_MESH_SUN", 0x8614}, {"GL_TRIANGLE_MESH_SUN", 0x8615}, {"GL_VERTEX_PROGRAM_ARB", 0x8620}, {"GL_VERTEX_PROGRAM_NV", 0x8620}, {"GL_VERTEX_STATE_PROGRAM_NV", 0x8621}, {"GL_VERTEX_ATTRIB_ARRAY_ENABLED", 0x8622}, {"GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB", 0x8622}, {"GL_ATTRIB_ARRAY_SIZE_NV", 0x8623}, {"GL_VERTEX_ATTRIB_ARRAY_SIZE", 0x8623}, {"GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB", 0x8623}, {"GL_ATTRIB_ARRAY_STRIDE_NV", 0x8624}, {"GL_VERTEX_ATTRIB_ARRAY_STRIDE", 0x8624}, {"GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB", 0x8624}, {"GL_ATTRIB_ARRAY_TYPE_NV", 0x8625}, {"GL_VERTEX_ATTRIB_ARRAY_TYPE", 0x8625}, {"GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB", 0x8625}, {"GL_CURRENT_ATTRIB_NV", 0x8626}, {"GL_CURRENT_VERTEX_ATTRIB", 0x8626}, {"GL_CURRENT_VERTEX_ATTRIB_ARB", 0x8626}, {"GL_PROGRAM_LENGTH_ARB", 0x8627}, {"GL_PROGRAM_LENGTH_NV", 0x8627}, {"GL_PROGRAM_STRING_ARB", 0x8628}, {"GL_PROGRAM_STRING_NV", 0x8628}, {"GL_MODELVIEW_PROJECTION_NV", 0x8629}, {"GL_IDENTITY_NV", 0x862A}, {"GL_INVERSE_NV", 0x862B}, {"GL_TRANSPOSE_NV", 0x862C}, {"GL_INVERSE_TRANSPOSE_NV", 0x862D}, {"GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB", 0x862E}, {"GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV", 0x862E}, {"GL_MAX_PROGRAM_MATRICES_ARB", 0x862F}, {"GL_MAX_TRACK_MATRICES_NV", 0x862F}, {"GL_MATRIX0_NV", 0x8630}, {"GL_MATRIX1_NV", 0x8631}, {"GL_MATRIX2_NV", 0x8632}, {"GL_MATRIX3_NV", 0x8633}, {"GL_MATRIX4_NV", 0x8634}, {"GL_MATRIX5_NV", 0x8635}, {"GL_MATRIX6_NV", 0x8636}, {"GL_MATRIX7_NV", 0x8637}, {"GL_CURRENT_MATRIX_STACK_DEPTH_ARB", 0x8640}, {"GL_CURRENT_MATRIX_STACK_DEPTH_NV", 0x8640}, {"GL_CURRENT_MATRIX_ARB", 0x8641}, {"GL_CURRENT_MATRIX_NV", 0x8641}, {"GL_VERTEX_PROGRAM_POINT_SIZE", 0x8642}, {"GL_VERTEX_PROGRAM_POINT_SIZE_ARB", 0x8642}, {"GL_VERTEX_PROGRAM_POINT_SIZE_NV", 0x8642}, {"GL_PROGRAM_POINT_SIZE", 0x8642}, {"GL_PROGRAM_POINT_SIZE_ARB", 0x8642}, {"GL_PROGRAM_POINT_SIZE_EXT", 0x8642}, {"GL_VERTEX_PROGRAM_TWO_SIDE", 0x8643}, {"GL_VERTEX_PROGRAM_TWO_SIDE_ARB", 0x8643}, {"GL_VERTEX_PROGRAM_TWO_SIDE_NV", 0x8643}, {"GL_PROGRAM_PARAMETER_NV", 0x8644}, {"GL_ATTRIB_ARRAY_POINTER_NV", 0x8645}, {"GL_VERTEX_ATTRIB_ARRAY_POINTER", 0x8645}, {"GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB", 0x8645}, {"GL_PROGRAM_TARGET_NV", 0x8646}, {"GL_PROGRAM_RESIDENT_NV", 0x8647}, {"GL_TRACK_MATRIX_NV", 0x8648}, {"GL_TRACK_MATRIX_TRANSFORM_NV", 0x8649}, {"GL_VERTEX_PROGRAM_BINDING_NV", 0x864A}, {"GL_PROGRAM_ERROR_POSITION_ARB", 0x864B}, {"GL_PROGRAM_ERROR_POSITION_NV", 0x864B}, {"GL_OFFSET_TEXTURE_RECTANGLE_NV", 0x864C}, {"GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV", 0x864D}, {"GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV", 0x864E}, {"GL_DEPTH_CLAMP", 0x864F}, {"GL_DEPTH_CLAMP_NV", 0x864F}, {"GL_VERTEX_ATTRIB_ARRAY0_NV", 0x8650}, {"GL_VERTEX_ATTRIB_ARRAY1_NV", 0x8651}, {"GL_VERTEX_ATTRIB_ARRAY2_NV", 0x8652}, {"GL_VERTEX_ATTRIB_ARRAY3_NV", 0x8653}, {"GL_VERTEX_ATTRIB_ARRAY4_NV", 0x8654}, {"GL_VERTEX_ATTRIB_ARRAY5_NV", 0x8655}, {"GL_VERTEX_ATTRIB_ARRAY6_NV", 0x8656}, {"GL_VERTEX_ATTRIB_ARRAY7_NV", 0x8657}, {"GL_VERTEX_ATTRIB_ARRAY8_NV", 0x8658}, {"GL_VERTEX_ATTRIB_ARRAY9_NV", 0x8659}, {"GL_VERTEX_ATTRIB_ARRAY10_NV", 0x865A}, {"GL_VERTEX_ATTRIB_ARRAY11_NV", 0x865B}, {"GL_VERTEX_ATTRIB_ARRAY12_NV", 0x865C}, {"GL_VERTEX_ATTRIB_ARRAY13_NV", 0x865D}, {"GL_VERTEX_ATTRIB_ARRAY14_NV", 0x865E}, {"GL_VERTEX_ATTRIB_ARRAY15_NV", 0x865F}, {"GL_MAP1_VERTEX_ATTRIB0_4_NV", 0x8660}, {"GL_MAP1_VERTEX_ATTRIB1_4_NV", 0x8661}, {"GL_MAP1_VERTEX_ATTRIB2_4_NV", 0x8662}, {"GL_MAP1_VERTEX_ATTRIB3_4_NV", 0x8663}, {"GL_MAP1_VERTEX_ATTRIB4_4_NV", 0x8664}, {"GL_MAP1_VERTEX_ATTRIB5_4_NV", 0x8665}, {"GL_MAP1_VERTEX_ATTRIB6_4_NV", 0x8666}, {"GL_MAP1_VERTEX_ATTRIB7_4_NV", 0x8667}, {"GL_MAP1_VERTEX_ATTRIB8_4_NV", 0x8668}, {"GL_MAP1_VERTEX_ATTRIB9_4_NV", 0x8669}, {"GL_MAP1_VERTEX_ATTRIB10_4_NV", 0x866A}, {"GL_MAP1_VERTEX_ATTRIB11_4_NV", 0x866B}, {"GL_MAP1_VERTEX_ATTRIB12_4_NV", 0x866C}, {"GL_MAP1_VERTEX_ATTRIB13_4_NV", 0x866D}, {"GL_MAP1_VERTEX_ATTRIB14_4_NV", 0x866E}, {"GL_MAP1_VERTEX_ATTRIB15_4_NV", 0x866F}, {"GL_MAP2_VERTEX_ATTRIB0_4_NV", 0x8670}, {"GL_MAP2_VERTEX_ATTRIB1_4_NV", 0x8671}, {"GL_MAP2_VERTEX_ATTRIB2_4_NV", 0x8672}, {"GL_MAP2_VERTEX_ATTRIB3_4_NV", 0x8673}, {"GL_MAP2_VERTEX_ATTRIB4_4_NV", 0x8674}, {"GL_MAP2_VERTEX_ATTRIB5_4_NV", 0x8675}, {"GL_MAP2_VERTEX_ATTRIB6_4_NV", 0x8676}, {"GL_MAP2_VERTEX_ATTRIB7_4_NV", 0x8677}, {"GL_PROGRAM_BINDING_ARB", 0x8677}, {"GL_MAP2_VERTEX_ATTRIB8_4_NV", 0x8678}, {"GL_MAP2_VERTEX_ATTRIB9_4_NV", 0x8679}, {"GL_MAP2_VERTEX_ATTRIB10_4_NV", 0x867A}, {"GL_MAP2_VERTEX_ATTRIB11_4_NV", 0x867B}, {"GL_MAP2_VERTEX_ATTRIB12_4_NV", 0x867C}, {"GL_MAP2_VERTEX_ATTRIB13_4_NV", 0x867D}, {"GL_MAP2_VERTEX_ATTRIB14_4_NV", 0x867E}, {"GL_MAP2_VERTEX_ATTRIB15_4_NV", 0x867F}, {"GL_TEXTURE_COMPRESSED_IMAGE_SIZE", 0x86A0}, {"GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB", 0x86A0}, {"GL_TEXTURE_COMPRESSED", 0x86A1}, {"GL_TEXTURE_COMPRESSED_ARB", 0x86A1}, {"GL_NUM_COMPRESSED_TEXTURE_FORMATS", 0x86A2}, {"GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A2}, {"GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3}, {"GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3}, {"GL_MAX_VERTEX_UNITS_ARB", 0x86A4}, {"GL_MAX_VERTEX_UNITS_OES", 0x86A4}, {"GL_ACTIVE_VERTEX_UNITS_ARB", 0x86A5}, {"GL_WEIGHT_SUM_UNITY_ARB", 0x86A6}, {"GL_VERTEX_BLEND_ARB", 0x86A7}, {"GL_CURRENT_WEIGHT_ARB", 0x86A8}, {"GL_WEIGHT_ARRAY_TYPE_ARB", 0x86A9}, {"GL_WEIGHT_ARRAY_TYPE_OES", 0x86A9}, {"GL_WEIGHT_ARRAY_STRIDE_ARB", 0x86AA}, {"GL_WEIGHT_ARRAY_STRIDE_OES", 0x86AA}, {"GL_WEIGHT_ARRAY_SIZE_ARB", 0x86AB}, {"GL_WEIGHT_ARRAY_SIZE_OES", 0x86AB}, {"GL_WEIGHT_ARRAY_POINTER_ARB", 0x86AC}, {"GL_WEIGHT_ARRAY_POINTER_OES", 0x86AC}, {"GL_WEIGHT_ARRAY_ARB", 0x86AD}, {"GL_WEIGHT_ARRAY_OES", 0x86AD}, {"GL_DOT3_RGB", 0x86AE}, {"GL_DOT3_RGB_ARB", 0x86AE}, {"GL_DOT3_RGBA", 0x86AF}, {"GL_DOT3_RGBA_ARB", 0x86AF}, {"GL_DOT3_RGBA_IMG", 0x86AF}, {"GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0}, {"GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1}, {"GL_MULTISAMPLE_3DFX", 0x86B2}, {"GL_SAMPLE_BUFFERS_3DFX", 0x86B3}, {"GL_SAMPLES_3DFX", 0x86B4}, {"GL_EVAL_2D_NV", 0x86C0}, {"GL_EVAL_TRIANGULAR_2D_NV", 0x86C1}, {"GL_MAP_TESSELLATION_NV", 0x86C2}, {"GL_MAP_ATTRIB_U_ORDER_NV", 0x86C3}, {"GL_MAP_ATTRIB_V_ORDER_NV", 0x86C4}, {"GL_EVAL_FRACTIONAL_TESSELLATION_NV", 0x86C5}, {"GL_EVAL_VERTEX_ATTRIB0_NV", 0x86C6}, {"GL_EVAL_VERTEX_ATTRIB1_NV", 0x86C7}, {"GL_EVAL_VERTEX_ATTRIB2_NV", 0x86C8}, {"GL_EVAL_VERTEX_ATTRIB3_NV", 0x86C9}, {"GL_EVAL_VERTEX_ATTRIB4_NV", 0x86CA}, {"GL_EVAL_VERTEX_ATTRIB5_NV", 0x86CB}, {"GL_EVAL_VERTEX_ATTRIB6_NV", 0x86CC}, {"GL_EVAL_VERTEX_ATTRIB7_NV", 0x86CD}, {"GL_EVAL_VERTEX_ATTRIB8_NV", 0x86CE}, {"GL_EVAL_VERTEX_ATTRIB9_NV", 0x86CF}, {"GL_EVAL_VERTEX_ATTRIB10_NV", 0x86D0}, {"GL_EVAL_VERTEX_ATTRIB11_NV", 0x86D1}, {"GL_EVAL_VERTEX_ATTRIB12_NV", 0x86D2}, {"GL_EVAL_VERTEX_ATTRIB13_NV", 0x86D3}, {"GL_EVAL_VERTEX_ATTRIB14_NV", 0x86D4}, {"GL_EVAL_VERTEX_ATTRIB15_NV", 0x86D5}, {"GL_MAX_MAP_TESSELLATION_NV", 0x86D6}, {"GL_MAX_RATIONAL_EVAL_ORDER_NV", 0x86D7}, {"GL_MAX_PROGRAM_PATCH_ATTRIBS_NV", 0x86D8}, {"GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV", 0x86D9}, {"GL_UNSIGNED_INT_S8_S8_8_8_NV", 0x86DA}, {"GL_UNSIGNED_INT_8_8_S8_S8_REV_NV", 0x86DB}, {"GL_DSDT_MAG_INTENSITY_NV", 0x86DC}, {"GL_SHADER_CONSISTENT_NV", 0x86DD}, {"GL_TEXTURE_SHADER_NV", 0x86DE}, {"GL_SHADER_OPERATION_NV", 0x86DF}, {"GL_CULL_MODES_NV", 0x86E0}, {"GL_OFFSET_TEXTURE_MATRIX_NV", 0x86E1}, {"GL_OFFSET_TEXTURE_2D_MATRIX_NV", 0x86E1}, {"GL_OFFSET_TEXTURE_SCALE_NV", 0x86E2}, {"GL_OFFSET_TEXTURE_2D_SCALE_NV", 0x86E2}, {"GL_OFFSET_TEXTURE_BIAS_NV", 0x86E3}, {"GL_OFFSET_TEXTURE_2D_BIAS_NV", 0x86E3}, {"GL_PREVIOUS_TEXTURE_INPUT_NV", 0x86E4}, {"GL_CONST_EYE_NV", 0x86E5}, {"GL_PASS_THROUGH_NV", 0x86E6}, {"GL_CULL_FRAGMENT_NV", 0x86E7}, {"GL_OFFSET_TEXTURE_2D_NV", 0x86E8}, {"GL_DEPENDENT_AR_TEXTURE_2D_NV", 0x86E9}, {"GL_DEPENDENT_GB_TEXTURE_2D_NV", 0x86EA}, {"GL_SURFACE_STATE_NV", 0x86EB}, {"GL_DOT_PRODUCT_NV", 0x86EC}, {"GL_DOT_PRODUCT_DEPTH_REPLACE_NV", 0x86ED}, {"GL_DOT_PRODUCT_TEXTURE_2D_NV", 0x86EE}, {"GL_DOT_PRODUCT_TEXTURE_3D_NV", 0x86EF}, {"GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV", 0x86F0}, {"GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV", 0x86F1}, {"GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV", 0x86F2}, {"GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV", 0x86F3}, {"GL_HILO_NV", 0x86F4}, {"GL_DSDT_NV", 0x86F5}, {"GL_DSDT_MAG_NV", 0x86F6}, {"GL_DSDT_MAG_VIB_NV", 0x86F7}, {"GL_HILO16_NV", 0x86F8}, {"GL_SIGNED_HILO_NV", 0x86F9}, {"GL_SIGNED_HILO16_NV", 0x86FA}, {"GL_SIGNED_RGBA_NV", 0x86FB}, {"GL_SIGNED_RGBA8_NV", 0x86FC}, {"GL_SURFACE_REGISTERED_NV", 0x86FD}, {"GL_SIGNED_RGB_NV", 0x86FE}, {"GL_SIGNED_RGB8_NV", 0x86FF}, {"GL_SURFACE_MAPPED_NV", 0x8700}, {"GL_SIGNED_LUMINANCE_NV", 0x8701}, {"GL_SIGNED_LUMINANCE8_NV", 0x8702}, {"GL_SIGNED_LUMINANCE_ALPHA_NV", 0x8703}, {"GL_SIGNED_LUMINANCE8_ALPHA8_NV", 0x8704}, {"GL_SIGNED_ALPHA_NV", 0x8705}, {"GL_SIGNED_ALPHA8_NV", 0x8706}, {"GL_SIGNED_INTENSITY_NV", 0x8707}, {"GL_SIGNED_INTENSITY8_NV", 0x8708}, {"GL_DSDT8_NV", 0x8709}, {"GL_DSDT8_MAG8_NV", 0x870A}, {"GL_DSDT8_MAG8_INTENSITY8_NV", 0x870B}, {"GL_SIGNED_RGB_UNSIGNED_ALPHA_NV", 0x870C}, {"GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV", 0x870D}, {"GL_HI_SCALE_NV", 0x870E}, {"GL_LO_SCALE_NV", 0x870F}, {"GL_DS_SCALE_NV", 0x8710}, {"GL_DT_SCALE_NV", 0x8711}, {"GL_MAGNITUDE_SCALE_NV", 0x8712}, {"GL_VIBRANCE_SCALE_NV", 0x8713}, {"GL_HI_BIAS_NV", 0x8714}, {"GL_LO_BIAS_NV", 0x8715}, {"GL_DS_BIAS_NV", 0x8716}, {"GL_DT_BIAS_NV", 0x8717}, {"GL_MAGNITUDE_BIAS_NV", 0x8718}, {"GL_VIBRANCE_BIAS_NV", 0x8719}, {"GL_TEXTURE_BORDER_VALUES_NV", 0x871A}, {"GL_TEXTURE_HI_SIZE_NV", 0x871B}, {"GL_TEXTURE_LO_SIZE_NV", 0x871C}, {"GL_TEXTURE_DS_SIZE_NV", 0x871D}, {"GL_TEXTURE_DT_SIZE_NV", 0x871E}, {"GL_TEXTURE_MAG_SIZE_NV", 0x871F}, {"GL_MODELVIEW2_ARB", 0x8722}, {"GL_MODELVIEW3_ARB", 0x8723}, {"GL_MODELVIEW4_ARB", 0x8724}, {"GL_MODELVIEW5_ARB", 0x8725}, {"GL_MODELVIEW6_ARB", 0x8726}, {"GL_MODELVIEW7_ARB", 0x8727}, {"GL_MODELVIEW8_ARB", 0x8728}, {"GL_MODELVIEW9_ARB", 0x8729}, {"GL_MODELVIEW10_ARB", 0x872A}, {"GL_MODELVIEW11_ARB", 0x872B}, {"GL_MODELVIEW12_ARB", 0x872C}, {"GL_MODELVIEW13_ARB", 0x872D}, {"GL_MODELVIEW14_ARB", 0x872E}, {"GL_MODELVIEW15_ARB", 0x872F}, {"GL_MODELVIEW16_ARB", 0x8730}, {"GL_MODELVIEW17_ARB", 0x8731}, {"GL_MODELVIEW18_ARB", 0x8732}, {"GL_MODELVIEW19_ARB", 0x8733}, {"GL_MODELVIEW20_ARB", 0x8734}, {"GL_MODELVIEW21_ARB", 0x8735}, {"GL_MODELVIEW22_ARB", 0x8736}, {"GL_MODELVIEW23_ARB", 0x8737}, {"GL_MODELVIEW24_ARB", 0x8738}, {"GL_MODELVIEW25_ARB", 0x8739}, {"GL_MODELVIEW26_ARB", 0x873A}, {"GL_MODELVIEW27_ARB", 0x873B}, {"GL_MODELVIEW28_ARB", 0x873C}, {"GL_MODELVIEW29_ARB", 0x873D}, {"GL_MODELVIEW30_ARB", 0x873E}, {"GL_MODELVIEW31_ARB", 0x873F}, {"GL_DOT3_RGB_EXT", 0x8740}, {"GL_Z400_BINARY_AMD", 0x8740}, {"GL_DOT3_RGBA_EXT", 0x8741}, {"GL_PROGRAM_BINARY_LENGTH_OES", 0x8741}, {"GL_PROGRAM_BINARY_LENGTH", 0x8741}, {"GL_MIRROR_CLAMP_ATI", 0x8742}, {"GL_MIRROR_CLAMP_EXT", 0x8742}, {"GL_MIRROR_CLAMP_TO_EDGE", 0x8743}, {"GL_MIRROR_CLAMP_TO_EDGE_ATI", 0x8743}, {"GL_MIRROR_CLAMP_TO_EDGE_EXT", 0x8743}, {"GL_MODULATE_ADD_ATI", 0x8744}, {"GL_MODULATE_SIGNED_ADD_ATI", 0x8745}, {"GL_MODULATE_SUBTRACT_ATI", 0x8746}, {"GL_SET_AMD", 0x874A}, {"GL_REPLACE_VALUE_AMD", 0x874B}, {"GL_STENCIL_OP_VALUE_AMD", 0x874C}, {"GL_STENCIL_BACK_OP_VALUE_AMD", 0x874D}, {"GL_VERTEX_ATTRIB_ARRAY_LONG", 0x874E}, {"GL_DEPTH_STENCIL_MESA", 0x8750}, {"GL_UNSIGNED_INT_24_8_MESA", 0x8751}, {"GL_UNSIGNED_INT_8_24_REV_MESA", 0x8752}, {"GL_UNSIGNED_SHORT_15_1_MESA", 0x8753}, {"GL_UNSIGNED_SHORT_1_15_REV_MESA", 0x8754}, {"GL_TRACE_MASK_MESA", 0x8755}, {"GL_TRACE_NAME_MESA", 0x8756}, {"GL_YCBCR_MESA", 0x8757}, {"GL_PACK_INVERT_MESA", 0x8758}, {"GL_DEBUG_OBJECT_MESA", 0x8759}, {"GL_TEXTURE_1D_STACK_MESAX", 0x8759}, {"GL_DEBUG_PRINT_MESA", 0x875A}, {"GL_TEXTURE_2D_STACK_MESAX", 0x875A}, {"GL_DEBUG_ASSERT_MESA", 0x875B}, {"GL_PROXY_TEXTURE_1D_STACK_MESAX", 0x875B}, {"GL_PROXY_TEXTURE_2D_STACK_MESAX", 0x875C}, {"GL_TEXTURE_1D_STACK_BINDING_MESAX", 0x875D}, {"GL_TEXTURE_2D_STACK_BINDING_MESAX", 0x875E}, {"GL_STATIC_ATI", 0x8760}, {"GL_DYNAMIC_ATI", 0x8761}, {"GL_PRESERVE_ATI", 0x8762}, {"GL_DISCARD_ATI", 0x8763}, {"GL_BUFFER_SIZE", 0x8764}, {"GL_BUFFER_SIZE_ARB", 0x8764}, {"GL_OBJECT_BUFFER_SIZE_ATI", 0x8764}, {"GL_BUFFER_USAGE", 0x8765}, {"GL_BUFFER_USAGE_ARB", 0x8765}, {"GL_OBJECT_BUFFER_USAGE_ATI", 0x8765}, {"GL_ARRAY_OBJECT_BUFFER_ATI", 0x8766}, {"GL_ARRAY_OBJECT_OFFSET_ATI", 0x8767}, {"GL_ELEMENT_ARRAY_ATI", 0x8768}, {"GL_ELEMENT_ARRAY_TYPE_ATI", 0x8769}, {"GL_ELEMENT_ARRAY_POINTER_ATI", 0x876A}, {"GL_MAX_VERTEX_STREAMS_ATI", 0x876B}, {"GL_VERTEX_STREAM0_ATI", 0x876C}, {"GL_VERTEX_STREAM1_ATI", 0x876D}, {"GL_VERTEX_STREAM2_ATI", 0x876E}, {"GL_VERTEX_STREAM3_ATI", 0x876F}, {"GL_VERTEX_STREAM4_ATI", 0x8770}, {"GL_VERTEX_STREAM5_ATI", 0x8771}, {"GL_VERTEX_STREAM6_ATI", 0x8772}, {"GL_VERTEX_STREAM7_ATI", 0x8773}, {"GL_VERTEX_SOURCE_ATI", 0x8774}, {"GL_BUMP_ROT_MATRIX_ATI", 0x8775}, {"GL_BUMP_ROT_MATRIX_SIZE_ATI", 0x8776}, {"GL_BUMP_NUM_TEX_UNITS_ATI", 0x8777}, {"GL_BUMP_TEX_UNITS_ATI", 0x8778}, {"GL_DUDV_ATI", 0x8779}, {"GL_DU8DV8_ATI", 0x877A}, {"GL_BUMP_ENVMAP_ATI", 0x877B}, {"GL_BUMP_TARGET_ATI", 0x877C}, {"GL_VERTEX_SHADER_EXT", 0x8780}, {"GL_VERTEX_SHADER_BINDING_EXT", 0x8781}, {"GL_OP_INDEX_EXT", 0x8782}, {"GL_OP_NEGATE_EXT", 0x8783}, {"GL_OP_DOT3_EXT", 0x8784}, {"GL_OP_DOT4_EXT", 0x8785}, {"GL_OP_MUL_EXT", 0x8786}, {"GL_OP_ADD_EXT", 0x8787}, {"GL_OP_MADD_EXT", 0x8788}, {"GL_OP_FRAC_EXT", 0x8789}, {"GL_OP_MAX_EXT", 0x878A}, {"GL_OP_MIN_EXT", 0x878B}, {"GL_OP_SET_GE_EXT", 0x878C}, {"GL_OP_SET_LT_EXT", 0x878D}, {"GL_OP_CLAMP_EXT", 0x878E}, {"GL_OP_FLOOR_EXT", 0x878F}, {"GL_OP_ROUND_EXT", 0x8790}, {"GL_OP_EXP_BASE_2_EXT", 0x8791}, {"GL_OP_LOG_BASE_2_EXT", 0x8792}, {"GL_OP_POWER_EXT", 0x8793}, {"GL_OP_RECIP_EXT", 0x8794}, {"GL_OP_RECIP_SQRT_EXT", 0x8795}, {"GL_OP_SUB_EXT", 0x8796}, {"GL_OP_CROSS_PRODUCT_EXT", 0x8797}, {"GL_OP_MULTIPLY_MATRIX_EXT", 0x8798}, {"GL_OP_MOV_EXT", 0x8799}, {"GL_OUTPUT_VERTEX_EXT", 0x879A}, {"GL_OUTPUT_COLOR0_EXT", 0x879B}, {"GL_OUTPUT_COLOR1_EXT", 0x879C}, {"GL_OUTPUT_TEXTURE_COORD0_EXT", 0x879D}, {"GL_OUTPUT_TEXTURE_COORD1_EXT", 0x879E}, {"GL_OUTPUT_TEXTURE_COORD2_EXT", 0x879F}, {"GL_OUTPUT_TEXTURE_COORD3_EXT", 0x87A0}, {"GL_OUTPUT_TEXTURE_COORD4_EXT", 0x87A1}, {"GL_OUTPUT_TEXTURE_COORD5_EXT", 0x87A2}, {"GL_OUTPUT_TEXTURE_COORD6_EXT", 0x87A3}, {"GL_OUTPUT_TEXTURE_COORD7_EXT", 0x87A4}, {"GL_OUTPUT_TEXTURE_COORD8_EXT", 0x87A5}, {"GL_OUTPUT_TEXTURE_COORD9_EXT", 0x87A6}, {"GL_OUTPUT_TEXTURE_COORD10_EXT", 0x87A7}, {"GL_OUTPUT_TEXTURE_COORD11_EXT", 0x87A8}, {"GL_OUTPUT_TEXTURE_COORD12_EXT", 0x87A9}, {"GL_OUTPUT_TEXTURE_COORD13_EXT", 0x87AA}, {"GL_OUTPUT_TEXTURE_COORD14_EXT", 0x87AB}, {"GL_OUTPUT_TEXTURE_COORD15_EXT", 0x87AC}, {"GL_OUTPUT_TEXTURE_COORD16_EXT", 0x87AD}, {"GL_OUTPUT_TEXTURE_COORD17_EXT", 0x87AE}, {"GL_OUTPUT_TEXTURE_COORD18_EXT", 0x87AF}, {"GL_OUTPUT_TEXTURE_COORD19_EXT", 0x87B0}, {"GL_OUTPUT_TEXTURE_COORD20_EXT", 0x87B1}, {"GL_OUTPUT_TEXTURE_COORD21_EXT", 0x87B2}, {"GL_OUTPUT_TEXTURE_COORD22_EXT", 0x87B3}, {"GL_OUTPUT_TEXTURE_COORD23_EXT", 0x87B4}, {"GL_OUTPUT_TEXTURE_COORD24_EXT", 0x87B5}, {"GL_OUTPUT_TEXTURE_COORD25_EXT", 0x87B6}, {"GL_OUTPUT_TEXTURE_COORD26_EXT", 0x87B7}, {"GL_OUTPUT_TEXTURE_COORD27_EXT", 0x87B8}, {"GL_OUTPUT_TEXTURE_COORD28_EXT", 0x87B9}, {"GL_OUTPUT_TEXTURE_COORD29_EXT", 0x87BA}, {"GL_OUTPUT_TEXTURE_COORD30_EXT", 0x87BB}, {"GL_OUTPUT_TEXTURE_COORD31_EXT", 0x87BC}, {"GL_OUTPUT_FOG_EXT", 0x87BD}, {"GL_SCALAR_EXT", 0x87BE}, {"GL_VECTOR_EXT", 0x87BF}, {"GL_MATRIX_EXT", 0x87C0}, {"GL_VARIANT_EXT", 0x87C1}, {"GL_INVARIANT_EXT", 0x87C2}, {"GL_LOCAL_CONSTANT_EXT", 0x87C3}, {"GL_LOCAL_EXT", 0x87C4}, {"GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87C5}, {"GL_MAX_VERTEX_SHADER_VARIANTS_EXT", 0x87C6}, {"GL_MAX_VERTEX_SHADER_INVARIANTS_EXT", 0x87C7}, {"GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87C8}, {"GL_MAX_VERTEX_SHADER_LOCALS_EXT", 0x87C9}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87CA}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT", 0x87CB}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87CC}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT", 0x87CD}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT", 0x87CE}, {"GL_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87CF}, {"GL_VERTEX_SHADER_VARIANTS_EXT", 0x87D0}, {"GL_VERTEX_SHADER_INVARIANTS_EXT", 0x87D1}, {"GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87D2}, {"GL_VERTEX_SHADER_LOCALS_EXT", 0x87D3}, {"GL_VERTEX_SHADER_OPTIMIZED_EXT", 0x87D4}, {"GL_X_EXT", 0x87D5}, {"GL_Y_EXT", 0x87D6}, {"GL_Z_EXT", 0x87D7}, {"GL_W_EXT", 0x87D8}, {"GL_NEGATIVE_X_EXT", 0x87D9}, {"GL_NEGATIVE_Y_EXT", 0x87DA}, {"GL_NEGATIVE_Z_EXT", 0x87DB}, {"GL_NEGATIVE_W_EXT", 0x87DC}, {"GL_ZERO_EXT", 0x87DD}, {"GL_ONE_EXT", 0x87DE}, {"GL_NEGATIVE_ONE_EXT", 0x87DF}, {"GL_NORMALIZED_RANGE_EXT", 0x87E0}, {"GL_FULL_RANGE_EXT", 0x87E1}, {"GL_CURRENT_VERTEX_EXT", 0x87E2}, {"GL_MVP_MATRIX_EXT", 0x87E3}, {"GL_VARIANT_VALUE_EXT", 0x87E4}, {"GL_VARIANT_DATATYPE_EXT", 0x87E5}, {"GL_VARIANT_ARRAY_STRIDE_EXT", 0x87E6}, {"GL_VARIANT_ARRAY_TYPE_EXT", 0x87E7}, {"GL_VARIANT_ARRAY_EXT", 0x87E8}, {"GL_VARIANT_ARRAY_POINTER_EXT", 0x87E9}, {"GL_INVARIANT_VALUE_EXT", 0x87EA}, {"GL_INVARIANT_DATATYPE_EXT", 0x87EB}, {"GL_LOCAL_CONSTANT_VALUE_EXT", 0x87EC}, {"GL_LOCAL_CONSTANT_DATATYPE_EXT", 0x87ED}, {"GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD", 0x87EE}, {"GL_PN_TRIANGLES_ATI", 0x87F0}, {"GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI", 0x87F1}, {"GL_PN_TRIANGLES_POINT_MODE_ATI", 0x87F2}, {"GL_PN_TRIANGLES_NORMAL_MODE_ATI", 0x87F3}, {"GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI", 0x87F4}, {"GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI", 0x87F5}, {"GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI", 0x87F6}, {"GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI", 0x87F7}, {"GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI", 0x87F8}, {"GL_3DC_X_AMD", 0x87F9}, {"GL_3DC_XY_AMD", 0x87FA}, {"GL_VBO_FREE_MEMORY_ATI", 0x87FB}, {"GL_TEXTURE_FREE_MEMORY_ATI", 0x87FC}, {"GL_RENDERBUFFER_FREE_MEMORY_ATI", 0x87FD}, {"GL_NUM_PROGRAM_BINARY_FORMATS", 0x87FE}, {"GL_NUM_PROGRAM_BINARY_FORMATS_OES", 0x87FE}, {"GL_PROGRAM_BINARY_FORMATS", 0x87FF}, {"GL_PROGRAM_BINARY_FORMATS_OES", 0x87FF}, {"GL_STENCIL_BACK_FUNC", 0x8800}, {"GL_STENCIL_BACK_FUNC_ATI", 0x8800}, {"GL_STENCIL_BACK_FAIL", 0x8801}, {"GL_STENCIL_BACK_FAIL_ATI", 0x8801}, {"GL_STENCIL_BACK_PASS_DEPTH_FAIL", 0x8802}, {"GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI", 0x8802}, {"GL_STENCIL_BACK_PASS_DEPTH_PASS", 0x8803}, {"GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI", 0x8803}, {"GL_FRAGMENT_PROGRAM_ARB", 0x8804}, {"GL_PROGRAM_ALU_INSTRUCTIONS_ARB", 0x8805}, {"GL_PROGRAM_TEX_INSTRUCTIONS_ARB", 0x8806}, {"GL_PROGRAM_TEX_INDIRECTIONS_ARB", 0x8807}, {"GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB", 0x8808}, {"GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB", 0x8809}, {"GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB", 0x880A}, {"GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB", 0x880B}, {"GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB", 0x880C}, {"GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB", 0x880D}, {"GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB", 0x880E}, {"GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB", 0x880F}, {"GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB", 0x8810}, {"GL_RGBA32F", 0x8814}, {"GL_RGBA32F_ARB", 0x8814}, {"GL_RGBA_FLOAT32_APPLE", 0x8814}, {"GL_RGBA_FLOAT32_ATI", 0x8814}, {"GL_RGB32F", 0x8815}, {"GL_RGB32F_ARB", 0x8815}, {"GL_RGB_FLOAT32_APPLE", 0x8815}, {"GL_RGB_FLOAT32_ATI", 0x8815}, {"GL_ALPHA32F_ARB", 0x8816}, {"GL_ALPHA_FLOAT32_APPLE", 0x8816}, {"GL_ALPHA_FLOAT32_ATI", 0x8816}, {"GL_INTENSITY32F_ARB", 0x8817}, {"GL_INTENSITY_FLOAT32_APPLE", 0x8817}, {"GL_INTENSITY_FLOAT32_ATI", 0x8817}, {"GL_LUMINANCE32F_ARB", 0x8818}, {"GL_LUMINANCE_FLOAT32_APPLE", 0x8818}, {"GL_LUMINANCE_FLOAT32_ATI", 0x8818}, {"GL_LUMINANCE_ALPHA32F_ARB", 0x8819}, {"GL_LUMINANCE_ALPHA_FLOAT32_APPLE", 0x8819}, {"GL_LUMINANCE_ALPHA_FLOAT32_ATI", 0x8819}, {"GL_RGBA16F", 0x881A}, {"GL_RGBA16F_ARB", 0x881A}, {"GL_RGBA16F_EXT", 0x881A}, {"GL_RGBA_FLOAT16_APPLE", 0x881A}, {"GL_RGBA_FLOAT16_ATI", 0x881A}, {"GL_RGB16F", 0x881B}, {"GL_RGB16F_ARB", 0x881B}, {"GL_RGB16F_EXT", 0x881B}, {"GL_RGB_FLOAT16_APPLE", 0x881B}, {"GL_RGB_FLOAT16_ATI", 0x881B}, {"GL_ALPHA16F_ARB", 0x881C}, {"GL_ALPHA_FLOAT16_APPLE", 0x881C}, {"GL_ALPHA_FLOAT16_ATI", 0x881C}, {"GL_INTENSITY16F_ARB", 0x881D}, {"GL_INTENSITY_FLOAT16_APPLE", 0x881D}, {"GL_INTENSITY_FLOAT16_ATI", 0x881D}, {"GL_LUMINANCE16F_ARB", 0x881E}, {"GL_LUMINANCE_FLOAT16_APPLE", 0x881E}, {"GL_LUMINANCE_FLOAT16_ATI", 0x881E}, {"GL_LUMINANCE_ALPHA16F_ARB", 0x881F}, {"GL_LUMINANCE_ALPHA_FLOAT16_APPLE", 0x881F}, {"GL_LUMINANCE_ALPHA_FLOAT16_ATI", 0x881F}, {"GL_RGBA_FLOAT_MODE_ARB", 0x8820}, {"GL_RGBA_FLOAT_MODE_ATI", 0x8820}, {"GL_WRITEONLY_RENDERING_QCOM", 0x8823}, {"GL_MAX_DRAW_BUFFERS", 0x8824}, {"GL_MAX_DRAW_BUFFERS_ARB", 0x8824}, {"GL_MAX_DRAW_BUFFERS_ATI", 0x8824}, {"GL_MAX_DRAW_BUFFERS_EXT", 0x8824}, {"GL_MAX_DRAW_BUFFERS_NV", 0x8824}, {"GL_DRAW_BUFFER0", 0x8825}, {"GL_DRAW_BUFFER0_ARB", 0x8825}, {"GL_DRAW_BUFFER0_ATI", 0x8825}, {"GL_DRAW_BUFFER0_EXT", 0x8825}, {"GL_DRAW_BUFFER0_NV", 0x8825}, {"GL_DRAW_BUFFER1", 0x8826}, {"GL_DRAW_BUFFER1_ARB", 0x8826}, {"GL_DRAW_BUFFER1_ATI", 0x8826}, {"GL_DRAW_BUFFER1_EXT", 0x8826}, {"GL_DRAW_BUFFER1_NV", 0x8826}, {"GL_DRAW_BUFFER2", 0x8827}, {"GL_DRAW_BUFFER2_ARB", 0x8827}, {"GL_DRAW_BUFFER2_ATI", 0x8827}, {"GL_DRAW_BUFFER2_EXT", 0x8827}, {"GL_DRAW_BUFFER2_NV", 0x8827}, {"GL_DRAW_BUFFER3", 0x8828}, {"GL_DRAW_BUFFER3_ARB", 0x8828}, {"GL_DRAW_BUFFER3_ATI", 0x8828}, {"GL_DRAW_BUFFER3_EXT", 0x8828}, {"GL_DRAW_BUFFER3_NV", 0x8828}, {"GL_DRAW_BUFFER4", 0x8829}, {"GL_DRAW_BUFFER4_ARB", 0x8829}, {"GL_DRAW_BUFFER4_ATI", 0x8829}, {"GL_DRAW_BUFFER4_EXT", 0x8829}, {"GL_DRAW_BUFFER4_NV", 0x8829}, {"GL_DRAW_BUFFER5", 0x882A}, {"GL_DRAW_BUFFER5_ARB", 0x882A}, {"GL_DRAW_BUFFER5_ATI", 0x882A}, {"GL_DRAW_BUFFER5_EXT", 0x882A}, {"GL_DRAW_BUFFER5_NV", 0x882A}, {"GL_DRAW_BUFFER6", 0x882B}, {"GL_DRAW_BUFFER6_ARB", 0x882B}, {"GL_DRAW_BUFFER6_ATI", 0x882B}, {"GL_DRAW_BUFFER6_EXT", 0x882B}, {"GL_DRAW_BUFFER6_NV", 0x882B}, {"GL_DRAW_BUFFER7", 0x882C}, {"GL_DRAW_BUFFER7_ARB", 0x882C}, {"GL_DRAW_BUFFER7_ATI", 0x882C}, {"GL_DRAW_BUFFER7_EXT", 0x882C}, {"GL_DRAW_BUFFER7_NV", 0x882C}, {"GL_DRAW_BUFFER8", 0x882D}, {"GL_DRAW_BUFFER8_ARB", 0x882D}, {"GL_DRAW_BUFFER8_ATI", 0x882D}, {"GL_DRAW_BUFFER8_EXT", 0x882D}, {"GL_DRAW_BUFFER8_NV", 0x882D}, {"GL_DRAW_BUFFER9", 0x882E}, {"GL_DRAW_BUFFER9_ARB", 0x882E}, {"GL_DRAW_BUFFER9_ATI", 0x882E}, {"GL_DRAW_BUFFER9_EXT", 0x882E}, {"GL_DRAW_BUFFER9_NV", 0x882E}, {"GL_DRAW_BUFFER10", 0x882F}, {"GL_DRAW_BUFFER10_ARB", 0x882F}, {"GL_DRAW_BUFFER10_ATI", 0x882F}, {"GL_DRAW_BUFFER10_EXT", 0x882F}, {"GL_DRAW_BUFFER10_NV", 0x882F}, {"GL_DRAW_BUFFER11", 0x8830}, {"GL_DRAW_BUFFER11_ARB", 0x8830}, {"GL_DRAW_BUFFER11_ATI", 0x8830}, {"GL_DRAW_BUFFER11_EXT", 0x8830}, {"GL_DRAW_BUFFER11_NV", 0x8830}, {"GL_DRAW_BUFFER12", 0x8831}, {"GL_DRAW_BUFFER12_ARB", 0x8831}, {"GL_DRAW_BUFFER12_ATI", 0x8831}, {"GL_DRAW_BUFFER12_EXT", 0x8831}, {"GL_DRAW_BUFFER12_NV", 0x8831}, {"GL_DRAW_BUFFER13", 0x8832}, {"GL_DRAW_BUFFER13_ARB", 0x8832}, {"GL_DRAW_BUFFER13_ATI", 0x8832}, {"GL_DRAW_BUFFER13_EXT", 0x8832}, {"GL_DRAW_BUFFER13_NV", 0x8832}, {"GL_DRAW_BUFFER14", 0x8833}, {"GL_DRAW_BUFFER14_ARB", 0x8833}, {"GL_DRAW_BUFFER14_ATI", 0x8833}, {"GL_DRAW_BUFFER14_EXT", 0x8833}, {"GL_DRAW_BUFFER14_NV", 0x8833}, {"GL_DRAW_BUFFER15", 0x8834}, {"GL_DRAW_BUFFER15_ARB", 0x8834}, {"GL_DRAW_BUFFER15_ATI", 0x8834}, {"GL_DRAW_BUFFER15_EXT", 0x8834}, {"GL_DRAW_BUFFER15_NV", 0x8834}, {"GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI", 0x8835}, {"GL_BLEND_EQUATION_ALPHA", 0x883D}, {"GL_BLEND_EQUATION_ALPHA_EXT", 0x883D}, {"GL_BLEND_EQUATION_ALPHA_OES", 0x883D}, {"GL_SUBSAMPLE_DISTANCE_AMD", 0x883F}, {"GL_MATRIX_PALETTE_ARB", 0x8840}, {"GL_MATRIX_PALETTE_OES", 0x8840}, {"GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB", 0x8841}, {"GL_MAX_PALETTE_MATRICES_ARB", 0x8842}, {"GL_MAX_PALETTE_MATRICES_OES", 0x8842}, {"GL_CURRENT_PALETTE_MATRIX_ARB", 0x8843}, {"GL_CURRENT_PALETTE_MATRIX_OES", 0x8843}, {"GL_MATRIX_INDEX_ARRAY_ARB", 0x8844}, {"GL_MATRIX_INDEX_ARRAY_OES", 0x8844}, {"GL_CURRENT_MATRIX_INDEX_ARB", 0x8845}, {"GL_MATRIX_INDEX_ARRAY_SIZE_ARB", 0x8846}, {"GL_MATRIX_INDEX_ARRAY_SIZE_OES", 0x8846}, {"GL_MATRIX_INDEX_ARRAY_TYPE_ARB", 0x8847}, {"GL_MATRIX_INDEX_ARRAY_TYPE_OES", 0x8847}, {"GL_MATRIX_INDEX_ARRAY_STRIDE_ARB", 0x8848}, {"GL_MATRIX_INDEX_ARRAY_STRIDE_OES", 0x8848}, {"GL_MATRIX_INDEX_ARRAY_POINTER_ARB", 0x8849}, {"GL_MATRIX_INDEX_ARRAY_POINTER_OES", 0x8849}, {"GL_TEXTURE_DEPTH_SIZE", 0x884A}, {"GL_TEXTURE_DEPTH_SIZE_ARB", 0x884A}, {"GL_DEPTH_TEXTURE_MODE", 0x884B}, {"GL_DEPTH_TEXTURE_MODE_ARB", 0x884B}, {"GL_TEXTURE_COMPARE_MODE", 0x884C}, {"GL_TEXTURE_COMPARE_MODE_ARB", 0x884C}, {"GL_TEXTURE_COMPARE_MODE_EXT", 0x884C}, {"GL_TEXTURE_COMPARE_FUNC", 0x884D}, {"GL_TEXTURE_COMPARE_FUNC_ARB", 0x884D}, {"GL_TEXTURE_COMPARE_FUNC_EXT", 0x884D}, {"GL_COMPARE_R_TO_TEXTURE", 0x884E}, {"GL_COMPARE_R_TO_TEXTURE_ARB", 0x884E}, {"GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT", 0x884E}, {"GL_COMPARE_REF_TO_TEXTURE", 0x884E}, {"GL_COMPARE_REF_TO_TEXTURE_EXT", 0x884E}, {"GL_TEXTURE_CUBE_MAP_SEAMLESS", 0x884F}, {"GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV", 0x8850}, {"GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV", 0x8851}, {"GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV", 0x8852}, {"GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV", 0x8853}, {"GL_OFFSET_HILO_TEXTURE_2D_NV", 0x8854}, {"GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV", 0x8855}, {"GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV", 0x8856}, {"GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV", 0x8857}, {"GL_DEPENDENT_HILO_TEXTURE_2D_NV", 0x8858}, {"GL_DEPENDENT_RGB_TEXTURE_3D_NV", 0x8859}, {"GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV", 0x885A}, {"GL_DOT_PRODUCT_PASS_THROUGH_NV", 0x885B}, {"GL_DOT_PRODUCT_TEXTURE_1D_NV", 0x885C}, {"GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV", 0x885D}, {"GL_HILO8_NV", 0x885E}, {"GL_SIGNED_HILO8_NV", 0x885F}, {"GL_FORCE_BLUE_TO_ONE_NV", 0x8860}, {"GL_POINT_SPRITE", 0x8861}, {"GL_POINT_SPRITE_ARB", 0x8861}, {"GL_POINT_SPRITE_NV", 0x8861}, {"GL_POINT_SPRITE_OES", 0x8861}, {"GL_COORD_REPLACE", 0x8862}, {"GL_COORD_REPLACE_ARB", 0x8862}, {"GL_COORD_REPLACE_NV", 0x8862}, {"GL_COORD_REPLACE_OES", 0x8862}, {"GL_POINT_SPRITE_R_MODE_NV", 0x8863}, {"GL_PIXEL_COUNTER_BITS_NV", 0x8864}, {"GL_QUERY_COUNTER_BITS", 0x8864}, {"GL_QUERY_COUNTER_BITS_ARB", 0x8864}, {"GL_QUERY_COUNTER_BITS_EXT", 0x8864}, {"GL_CURRENT_OCCLUSION_QUERY_ID_NV", 0x8865}, {"GL_CURRENT_QUERY", 0x8865}, {"GL_CURRENT_QUERY_ARB", 0x8865}, {"GL_CURRENT_QUERY_EXT", 0x8865}, {"GL_PIXEL_COUNT_NV", 0x8866}, {"GL_QUERY_RESULT", 0x8866}, {"GL_QUERY_RESULT_ARB", 0x8866}, {"GL_QUERY_RESULT_EXT", 0x8866}, {"GL_PIXEL_COUNT_AVAILABLE_NV", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE_ARB", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE_EXT", 0x8867}, {"GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV", 0x8868}, {"GL_MAX_VERTEX_ATTRIBS", 0x8869}, {"GL_MAX_VERTEX_ATTRIBS_ARB", 0x8869}, {"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED", 0x886A}, {"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB", 0x886A}, {"GL_MAX_TESS_CONTROL_INPUT_COMPONENTS", 0x886C}, {"GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS", 0x886D}, {"GL_DEPTH_STENCIL_TO_RGBA_NV", 0x886E}, {"GL_DEPTH_STENCIL_TO_BGRA_NV", 0x886F}, {"GL_FRAGMENT_PROGRAM_NV", 0x8870}, {"GL_MAX_TEXTURE_COORDS", 0x8871}, {"GL_MAX_TEXTURE_COORDS_ARB", 0x8871}, {"GL_MAX_TEXTURE_COORDS_NV", 0x8871}, {"GL_MAX_TEXTURE_IMAGE_UNITS", 0x8872}, {"GL_MAX_TEXTURE_IMAGE_UNITS_ARB", 0x8872}, {"GL_MAX_TEXTURE_IMAGE_UNITS_NV", 0x8872}, {"GL_FRAGMENT_PROGRAM_BINDING_NV", 0x8873}, {"GL_PROGRAM_ERROR_STRING_ARB", 0x8874}, {"GL_PROGRAM_ERROR_STRING_NV", 0x8874}, {"GL_PROGRAM_FORMAT_ASCII_ARB", 0x8875}, {"GL_PROGRAM_FORMAT_ARB", 0x8876}, {"GL_WRITE_PIXEL_DATA_RANGE_NV", 0x8878}, {"GL_READ_PIXEL_DATA_RANGE_NV", 0x8879}, {"GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV", 0x887A}, {"GL_READ_PIXEL_DATA_RANGE_LENGTH_NV", 0x887B}, {"GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV", 0x887C}, {"GL_READ_PIXEL_DATA_RANGE_POINTER_NV", 0x887D}, {"GL_GEOMETRY_SHADER_INVOCATIONS", 0x887F}, {"GL_FLOAT_R_NV", 0x8880}, {"GL_FLOAT_RG_NV", 0x8881}, {"GL_FLOAT_RGB_NV", 0x8882}, {"GL_FLOAT_RGBA_NV", 0x8883}, {"GL_FLOAT_R16_NV", 0x8884}, {"GL_FLOAT_R32_NV", 0x8885}, {"GL_FLOAT_RG16_NV", 0x8886}, {"GL_FLOAT_RG32_NV", 0x8887}, {"GL_FLOAT_RGB16_NV", 0x8888}, {"GL_FLOAT_RGB32_NV", 0x8889}, {"GL_FLOAT_RGBA16_NV", 0x888A}, {"GL_FLOAT_RGBA32_NV", 0x888B}, {"GL_TEXTURE_FLOAT_COMPONENTS_NV", 0x888C}, {"GL_FLOAT_CLEAR_COLOR_VALUE_NV", 0x888D}, {"GL_FLOAT_RGBA_MODE_NV", 0x888E}, {"GL_TEXTURE_UNSIGNED_REMAP_MODE_NV", 0x888F}, {"GL_DEPTH_BOUNDS_TEST_EXT", 0x8890}, {"GL_DEPTH_BOUNDS_EXT", 0x8891}, {"GL_ARRAY_BUFFER", 0x8892}, {"GL_ARRAY_BUFFER_ARB", 0x8892}, {"GL_ELEMENT_ARRAY_BUFFER", 0x8893}, {"GL_ELEMENT_ARRAY_BUFFER_ARB", 0x8893}, {"GL_ARRAY_BUFFER_BINDING", 0x8894}, {"GL_ARRAY_BUFFER_BINDING_ARB", 0x8894}, {"GL_ELEMENT_ARRAY_BUFFER_BINDING", 0x8895}, {"GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", 0x8895}, {"GL_VERTEX_ARRAY_BUFFER_BINDING", 0x8896}, {"GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", 0x8896}, {"GL_NORMAL_ARRAY_BUFFER_BINDING", 0x8897}, {"GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", 0x8897}, {"GL_COLOR_ARRAY_BUFFER_BINDING", 0x8898}, {"GL_COLOR_ARRAY_BUFFER_BINDING_ARB", 0x8898}, {"GL_INDEX_ARRAY_BUFFER_BINDING", 0x8899}, {"GL_INDEX_ARRAY_BUFFER_BINDING_ARB", 0x8899}, {"GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING", 0x889A}, {"GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", 0x889A}, {"GL_EDGE_FLAG_ARRAY_BUFFER_BINDING", 0x889B}, {"GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB", 0x889B}, {"GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING", 0x889C}, {"GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB", 0x889C}, {"GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB", 0x889D}, {"GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING", 0x889D}, {"GL_FOG_COORD_ARRAY_BUFFER_BINDING", 0x889D}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING", 0x889E}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB", 0x889E}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING_OES", 0x889E}, {"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", 0x889F}, {"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB", 0x889F}, {"GL_PROGRAM_INSTRUCTIONS_ARB", 0x88A0}, {"GL_MAX_PROGRAM_INSTRUCTIONS_ARB", 0x88A1}, {"GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB", 0x88A2}, {"GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB", 0x88A3}, {"GL_PROGRAM_TEMPORARIES_ARB", 0x88A4}, {"GL_MAX_PROGRAM_TEMPORARIES_ARB", 0x88A5}, {"GL_PROGRAM_NATIVE_TEMPORARIES_ARB", 0x88A6}, {"GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB", 0x88A7}, {"GL_PROGRAM_PARAMETERS_ARB", 0x88A8}, {"GL_MAX_PROGRAM_PARAMETERS_ARB", 0x88A9}, {"GL_PROGRAM_NATIVE_PARAMETERS_ARB", 0x88AA}, {"GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB", 0x88AB}, {"GL_PROGRAM_ATTRIBS_ARB", 0x88AC}, {"GL_MAX_PROGRAM_ATTRIBS_ARB", 0x88AD}, {"GL_PROGRAM_NATIVE_ATTRIBS_ARB", 0x88AE}, {"GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB", 0x88AF}, {"GL_PROGRAM_ADDRESS_REGISTERS_ARB", 0x88B0}, {"GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB", 0x88B1}, {"GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB", 0x88B2}, {"GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB", 0x88B3}, {"GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB", 0x88B4}, {"GL_MAX_PROGRAM_ENV_PARAMETERS_ARB", 0x88B5}, {"GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB", 0x88B6}, {"GL_TRANSPOSE_CURRENT_MATRIX_ARB", 0x88B7}, {"GL_READ_ONLY", 0x88B8}, {"GL_READ_ONLY_ARB", 0x88B8}, {"GL_WRITE_ONLY", 0x88B9}, {"GL_WRITE_ONLY_ARB", 0x88B9}, {"GL_WRITE_ONLY_OES", 0x88B9}, {"GL_READ_WRITE", 0x88BA}, {"GL_READ_WRITE_ARB", 0x88BA}, {"GL_BUFFER_ACCESS", 0x88BB}, {"GL_BUFFER_ACCESS_ARB", 0x88BB}, {"GL_BUFFER_ACCESS_OES", 0x88BB}, {"GL_BUFFER_MAPPED", 0x88BC}, {"GL_BUFFER_MAPPED_ARB", 0x88BC}, {"GL_BUFFER_MAPPED_OES", 0x88BC}, {"GL_BUFFER_MAP_POINTER", 0x88BD}, {"GL_BUFFER_MAP_POINTER_ARB", 0x88BD}, {"GL_BUFFER_MAP_POINTER_OES", 0x88BD}, {"GL_WRITE_DISCARD_NV", 0x88BE}, {"GL_TIME_ELAPSED", 0x88BF}, {"GL_TIME_ELAPSED_EXT", 0x88BF}, {"GL_MATRIX0_ARB", 0x88C0}, {"GL_MATRIX1_ARB", 0x88C1}, {"GL_MATRIX2_ARB", 0x88C2}, {"GL_MATRIX3_ARB", 0x88C3}, {"GL_MATRIX4_ARB", 0x88C4}, {"GL_MATRIX5_ARB", 0x88C5}, {"GL_MATRIX6_ARB", 0x88C6}, {"GL_MATRIX7_ARB", 0x88C7}, {"GL_MATRIX8_ARB", 0x88C8}, {"GL_MATRIX9_ARB", 0x88C9}, {"GL_MATRIX10_ARB", 0x88CA}, {"GL_MATRIX11_ARB", 0x88CB}, {"GL_MATRIX12_ARB", 0x88CC}, {"GL_MATRIX13_ARB", 0x88CD}, {"GL_MATRIX14_ARB", 0x88CE}, {"GL_MATRIX15_ARB", 0x88CF}, {"GL_MATRIX16_ARB", 0x88D0}, {"GL_MATRIX17_ARB", 0x88D1}, {"GL_MATRIX18_ARB", 0x88D2}, {"GL_MATRIX19_ARB", 0x88D3}, {"GL_MATRIX20_ARB", 0x88D4}, {"GL_MATRIX21_ARB", 0x88D5}, {"GL_MATRIX22_ARB", 0x88D6}, {"GL_MATRIX23_ARB", 0x88D7}, {"GL_MATRIX24_ARB", 0x88D8}, {"GL_MATRIX25_ARB", 0x88D9}, {"GL_MATRIX26_ARB", 0x88DA}, {"GL_MATRIX27_ARB", 0x88DB}, {"GL_MATRIX28_ARB", 0x88DC}, {"GL_MATRIX29_ARB", 0x88DD}, {"GL_MATRIX30_ARB", 0x88DE}, {"GL_MATRIX31_ARB", 0x88DF}, {"GL_STREAM_DRAW", 0x88E0}, {"GL_STREAM_DRAW_ARB", 0x88E0}, {"GL_STREAM_READ", 0x88E1}, {"GL_STREAM_READ_ARB", 0x88E1}, {"GL_STREAM_COPY", 0x88E2}, {"GL_STREAM_COPY_ARB", 0x88E2}, {"GL_STATIC_DRAW", 0x88E4}, {"GL_STATIC_DRAW_ARB", 0x88E4}, {"GL_STATIC_READ", 0x88E5}, {"GL_STATIC_READ_ARB", 0x88E5}, {"GL_STATIC_COPY", 0x88E6}, {"GL_STATIC_COPY_ARB", 0x88E6}, {"GL_DYNAMIC_DRAW", 0x88E8}, {"GL_DYNAMIC_DRAW_ARB", 0x88E8}, {"GL_DYNAMIC_READ", 0x88E9}, {"GL_DYNAMIC_READ_ARB", 0x88E9}, {"GL_DYNAMIC_COPY", 0x88EA}, {"GL_DYNAMIC_COPY_ARB", 0x88EA}, {"GL_PIXEL_PACK_BUFFER", 0x88EB}, {"GL_PIXEL_PACK_BUFFER_ARB", 0x88EB}, {"GL_PIXEL_PACK_BUFFER_EXT", 0x88EB}, {"GL_PIXEL_UNPACK_BUFFER", 0x88EC}, {"GL_PIXEL_UNPACK_BUFFER_ARB", 0x88EC}, {"GL_PIXEL_UNPACK_BUFFER_EXT", 0x88EC}, {"GL_PIXEL_PACK_BUFFER_BINDING", 0x88ED}, {"GL_PIXEL_PACK_BUFFER_BINDING_ARB", 0x88ED}, {"GL_PIXEL_PACK_BUFFER_BINDING_EXT", 0x88ED}, {"GL_ETC1_SRGB8_NV", 0x88EE}, {"GL_PIXEL_UNPACK_BUFFER_BINDING", 0x88EF}, {"GL_PIXEL_UNPACK_BUFFER_BINDING_ARB", 0x88EF}, {"GL_PIXEL_UNPACK_BUFFER_BINDING_EXT", 0x88EF}, {"GL_DEPTH24_STENCIL8", 0x88F0}, {"GL_DEPTH24_STENCIL8_EXT", 0x88F0}, {"GL_DEPTH24_STENCIL8_OES", 0x88F0}, {"GL_TEXTURE_STENCIL_SIZE", 0x88F1}, {"GL_TEXTURE_STENCIL_SIZE_EXT", 0x88F1}, {"GL_STENCIL_TAG_BITS_EXT", 0x88F2}, {"GL_STENCIL_CLEAR_TAG_VALUE_EXT", 0x88F3}, {"GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV", 0x88F4}, {"GL_MAX_PROGRAM_CALL_DEPTH_NV", 0x88F5}, {"GL_MAX_PROGRAM_IF_DEPTH_NV", 0x88F6}, {"GL_MAX_PROGRAM_LOOP_DEPTH_NV", 0x88F7}, {"GL_MAX_PROGRAM_LOOP_COUNT_NV", 0x88F8}, {"GL_SRC1_COLOR", 0x88F9}, {"GL_ONE_MINUS_SRC1_COLOR", 0x88FA}, {"GL_ONE_MINUS_SRC1_ALPHA", 0x88FB}, {"GL_MAX_DUAL_SOURCE_DRAW_BUFFERS", 0x88FC}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV", 0x88FE}, {"GL_MAX_ARRAY_TEXTURE_LAYERS", 0x88FF}, {"GL_MAX_ARRAY_TEXTURE_LAYERS_EXT", 0x88FF}, {"GL_MIN_PROGRAM_TEXEL_OFFSET", 0x8904}, {"GL_MIN_PROGRAM_TEXEL_OFFSET_EXT", 0x8904}, {"GL_MIN_PROGRAM_TEXEL_OFFSET_NV", 0x8904}, {"GL_MAX_PROGRAM_TEXEL_OFFSET", 0x8905}, {"GL_MAX_PROGRAM_TEXEL_OFFSET_EXT", 0x8905}, {"GL_MAX_PROGRAM_TEXEL_OFFSET_NV", 0x8905}, {"GL_PROGRAM_ATTRIB_COMPONENTS_NV", 0x8906}, {"GL_PROGRAM_RESULT_COMPONENTS_NV", 0x8907}, {"GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV", 0x8908}, {"GL_MAX_PROGRAM_RESULT_COMPONENTS_NV", 0x8909}, {"GL_STENCIL_TEST_TWO_SIDE_EXT", 0x8910}, {"GL_ACTIVE_STENCIL_FACE_EXT", 0x8911}, {"GL_MIRROR_CLAMP_TO_BORDER_EXT", 0x8912}, {"GL_SAMPLES_PASSED", 0x8914}, {"GL_SAMPLES_PASSED_ARB", 0x8914}, {"GL_GEOMETRY_VERTICES_OUT", 0x8916}, {"GL_GEOMETRY_INPUT_TYPE", 0x8917}, {"GL_GEOMETRY_OUTPUT_TYPE", 0x8918}, {"GL_SAMPLER_BINDING", 0x8919}, {"GL_CLAMP_VERTEX_COLOR", 0x891A}, {"GL_CLAMP_VERTEX_COLOR_ARB", 0x891A}, {"GL_CLAMP_FRAGMENT_COLOR", 0x891B}, {"GL_CLAMP_FRAGMENT_COLOR_ARB", 0x891B}, {"GL_CLAMP_READ_COLOR", 0x891C}, {"GL_CLAMP_READ_COLOR_ARB", 0x891C}, {"GL_FIXED_ONLY", 0x891D}, {"GL_FIXED_ONLY_ARB", 0x891D}, {"GL_TESS_CONTROL_PROGRAM_NV", 0x891E}, {"GL_TESS_EVALUATION_PROGRAM_NV", 0x891F}, {"GL_FRAGMENT_SHADER_ATI", 0x8920}, {"GL_REG_0_ATI", 0x8921}, {"GL_REG_1_ATI", 0x8922}, {"GL_REG_2_ATI", 0x8923}, {"GL_REG_3_ATI", 0x8924}, {"GL_REG_4_ATI", 0x8925}, {"GL_REG_5_ATI", 0x8926}, {"GL_REG_6_ATI", 0x8927}, {"GL_REG_7_ATI", 0x8928}, {"GL_REG_8_ATI", 0x8929}, {"GL_REG_9_ATI", 0x892A}, {"GL_REG_10_ATI", 0x892B}, {"GL_REG_11_ATI", 0x892C}, {"GL_REG_12_ATI", 0x892D}, {"GL_REG_13_ATI", 0x892E}, {"GL_REG_14_ATI", 0x892F}, {"GL_REG_15_ATI", 0x8930}, {"GL_REG_16_ATI", 0x8931}, {"GL_REG_17_ATI", 0x8932}, {"GL_REG_18_ATI", 0x8933}, {"GL_REG_19_ATI", 0x8934}, {"GL_REG_20_ATI", 0x8935}, {"GL_REG_21_ATI", 0x8936}, {"GL_REG_22_ATI", 0x8937}, {"GL_REG_23_ATI", 0x8938}, {"GL_REG_24_ATI", 0x8939}, {"GL_REG_25_ATI", 0x893A}, {"GL_REG_26_ATI", 0x893B}, {"GL_REG_27_ATI", 0x893C}, {"GL_REG_28_ATI", 0x893D}, {"GL_REG_29_ATI", 0x893E}, {"GL_REG_30_ATI", 0x893F}, {"GL_REG_31_ATI", 0x8940}, {"GL_CON_0_ATI", 0x8941}, {"GL_CON_1_ATI", 0x8942}, {"GL_CON_2_ATI", 0x8943}, {"GL_CON_3_ATI", 0x8944}, {"GL_CON_4_ATI", 0x8945}, {"GL_CON_5_ATI", 0x8946}, {"GL_CON_6_ATI", 0x8947}, {"GL_CON_7_ATI", 0x8948}, {"GL_CON_8_ATI", 0x8949}, {"GL_CON_9_ATI", 0x894A}, {"GL_CON_10_ATI", 0x894B}, {"GL_CON_11_ATI", 0x894C}, {"GL_CON_12_ATI", 0x894D}, {"GL_CON_13_ATI", 0x894E}, {"GL_CON_14_ATI", 0x894F}, {"GL_CON_15_ATI", 0x8950}, {"GL_CON_16_ATI", 0x8951}, {"GL_CON_17_ATI", 0x8952}, {"GL_CON_18_ATI", 0x8953}, {"GL_CON_19_ATI", 0x8954}, {"GL_CON_20_ATI", 0x8955}, {"GL_CON_21_ATI", 0x8956}, {"GL_CON_22_ATI", 0x8957}, {"GL_CON_23_ATI", 0x8958}, {"GL_CON_24_ATI", 0x8959}, {"GL_CON_25_ATI", 0x895A}, {"GL_CON_26_ATI", 0x895B}, {"GL_CON_27_ATI", 0x895C}, {"GL_CON_28_ATI", 0x895D}, {"GL_CON_29_ATI", 0x895E}, {"GL_CON_30_ATI", 0x895F}, {"GL_CON_31_ATI", 0x8960}, {"GL_MOV_ATI", 0x8961}, {"GL_ADD_ATI", 0x8963}, {"GL_MUL_ATI", 0x8964}, {"GL_SUB_ATI", 0x8965}, {"GL_DOT3_ATI", 0x8966}, {"GL_DOT4_ATI", 0x8967}, {"GL_MAD_ATI", 0x8968}, {"GL_LERP_ATI", 0x8969}, {"GL_CND_ATI", 0x896A}, {"GL_CND0_ATI", 0x896B}, {"GL_DOT2_ADD_ATI", 0x896C}, {"GL_SECONDARY_INTERPOLATOR_ATI", 0x896D}, {"GL_NUM_FRAGMENT_REGISTERS_ATI", 0x896E}, {"GL_NUM_FRAGMENT_CONSTANTS_ATI", 0x896F}, {"GL_NUM_PASSES_ATI", 0x8970}, {"GL_NUM_INSTRUCTIONS_PER_PASS_ATI", 0x8971}, {"GL_NUM_INSTRUCTIONS_TOTAL_ATI", 0x8972}, {"GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI", 0x8973}, {"GL_NUM_LOOPBACK_COMPONENTS_ATI", 0x8974}, {"GL_COLOR_ALPHA_PAIRING_ATI", 0x8975}, {"GL_SWIZZLE_STR_ATI", 0x8976}, {"GL_SWIZZLE_STQ_ATI", 0x8977}, {"GL_SWIZZLE_STR_DR_ATI", 0x8978}, {"GL_SWIZZLE_STQ_DQ_ATI", 0x8979}, {"GL_SWIZZLE_STRQ_ATI", 0x897A}, {"GL_SWIZZLE_STRQ_DQ_ATI", 0x897B}, {"GL_INTERLACE_OML", 0x8980}, {"GL_INTERLACE_READ_OML", 0x8981}, {"GL_FORMAT_SUBSAMPLE_24_24_OML", 0x8982}, {"GL_FORMAT_SUBSAMPLE_244_244_OML", 0x8983}, {"GL_PACK_RESAMPLE_OML", 0x8984}, {"GL_UNPACK_RESAMPLE_OML", 0x8985}, {"GL_RESAMPLE_REPLICATE_OML", 0x8986}, {"GL_RESAMPLE_ZERO_FILL_OML", 0x8987}, {"GL_RESAMPLE_AVERAGE_OML", 0x8988}, {"GL_RESAMPLE_DECIMATE_OML", 0x8989}, {"GL_POINT_SIZE_ARRAY_TYPE_OES", 0x898A}, {"GL_POINT_SIZE_ARRAY_STRIDE_OES", 0x898B}, {"GL_POINT_SIZE_ARRAY_POINTER_OES", 0x898C}, {"GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898D}, {"GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898E}, {"GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898F}, {"GL_VERTEX_ATTRIB_MAP1_APPLE", 0x8A00}, {"GL_VERTEX_ATTRIB_MAP2_APPLE", 0x8A01}, {"GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE", 0x8A02}, {"GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE", 0x8A03}, {"GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE", 0x8A04}, {"GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE", 0x8A05}, {"GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE", 0x8A06}, {"GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE", 0x8A07}, {"GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE", 0x8A08}, {"GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE", 0x8A09}, {"GL_DRAW_PIXELS_APPLE", 0x8A0A}, {"GL_FENCE_APPLE", 0x8A0B}, {"GL_ELEMENT_ARRAY_APPLE", 0x8A0C}, {"GL_ELEMENT_ARRAY_TYPE_APPLE", 0x8A0D}, {"GL_ELEMENT_ARRAY_POINTER_APPLE", 0x8A0E}, {"GL_COLOR_FLOAT_APPLE", 0x8A0F}, {"GL_UNIFORM_BUFFER", 0x8A11}, {"GL_BUFFER_SERIALIZED_MODIFY_APPLE", 0x8A12}, {"GL_BUFFER_FLUSHING_UNMAP_APPLE", 0x8A13}, {"GL_AUX_DEPTH_STENCIL_APPLE", 0x8A14}, {"GL_PACK_ROW_BYTES_APPLE", 0x8A15}, {"GL_UNPACK_ROW_BYTES_APPLE", 0x8A16}, {"GL_RELEASED_APPLE", 0x8A19}, {"GL_VOLATILE_APPLE", 0x8A1A}, {"GL_RETAINED_APPLE", 0x8A1B}, {"GL_UNDEFINED_APPLE", 0x8A1C}, {"GL_PURGEABLE_APPLE", 0x8A1D}, {"GL_RGB_422_APPLE", 0x8A1F}, {"GL_UNIFORM_BUFFER_BINDING", 0x8A28}, {"GL_UNIFORM_BUFFER_START", 0x8A29}, {"GL_UNIFORM_BUFFER_SIZE", 0x8A2A}, {"GL_MAX_VERTEX_UNIFORM_BLOCKS", 0x8A2B}, {"GL_MAX_GEOMETRY_UNIFORM_BLOCKS", 0x8A2C}, {"GL_MAX_FRAGMENT_UNIFORM_BLOCKS", 0x8A2D}, {"GL_MAX_COMBINED_UNIFORM_BLOCKS", 0x8A2E}, {"GL_MAX_UNIFORM_BUFFER_BINDINGS", 0x8A2F}, {"GL_MAX_UNIFORM_BLOCK_SIZE", 0x8A30}, {"GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", 0x8A31}, {"GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", 0x8A32}, {"GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", 0x8A33}, {"GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT", 0x8A34}, {"GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH", 0x8A35}, {"GL_ACTIVE_UNIFORM_BLOCKS", 0x8A36}, {"GL_UNIFORM_TYPE", 0x8A37}, {"GL_UNIFORM_SIZE", 0x8A38}, {"GL_UNIFORM_NAME_LENGTH", 0x8A39}, {"GL_UNIFORM_BLOCK_INDEX", 0x8A3A}, {"GL_UNIFORM_OFFSET", 0x8A3B}, {"GL_UNIFORM_ARRAY_STRIDE", 0x8A3C}, {"GL_UNIFORM_MATRIX_STRIDE", 0x8A3D}, {"GL_UNIFORM_IS_ROW_MAJOR", 0x8A3E}, {"GL_UNIFORM_BLOCK_BINDING", 0x8A3F}, {"GL_UNIFORM_BLOCK_DATA_SIZE", 0x8A40}, {"GL_UNIFORM_BLOCK_NAME_LENGTH", 0x8A41}, {"GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS", 0x8A42}, {"GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES", 0x8A43}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", 0x8A44}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER", 0x8A45}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER", 0x8A46}, {"GL_TEXTURE_SRGB_DECODE_EXT", 0x8A48}, {"GL_DECODE_EXT", 0x8A49}, {"GL_SKIP_DECODE_EXT", 0x8A4A}, {"GL_PROGRAM_PIPELINE_OBJECT_EXT", 0x8A4F}, {"GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT", 0x8A52}, {"GL_SYNC_OBJECT_APPLE", 0x8A53}, {"GL_FRAGMENT_SHADER", 0x8B30}, {"GL_FRAGMENT_SHADER_ARB", 0x8B30}, {"GL_VERTEX_SHADER", 0x8B31}, {"GL_VERTEX_SHADER_ARB", 0x8B31}, {"GL_PROGRAM_OBJECT_ARB", 0x8B40}, {"GL_PROGRAM_OBJECT_EXT", 0x8B40}, {"GL_SHADER_OBJECT_ARB", 0x8B48}, {"GL_SHADER_OBJECT_EXT", 0x8B48}, {"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS", 0x8B49}, {"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", 0x8B49}, {"GL_MAX_VERTEX_UNIFORM_COMPONENTS", 0x8B4A}, {"GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", 0x8B4A}, {"GL_MAX_VARYING_FLOATS", 0x8B4B}, {"GL_MAX_VARYING_COMPONENTS", 0x8B4B}, {"GL_MAX_VARYING_COMPONENTS_EXT", 0x8B4B}, {"GL_MAX_VARYING_FLOATS_ARB", 0x8B4B}, {"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS", 0x8B4C}, {"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", 0x8B4C}, {"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS", 0x8B4D}, {"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", 0x8B4D}, {"GL_OBJECT_TYPE_ARB", 0x8B4E}, {"GL_SHADER_TYPE", 0x8B4F}, {"GL_OBJECT_SUBTYPE_ARB", 0x8B4F}, {"GL_FLOAT_VEC2", 0x8B50}, {"GL_FLOAT_VEC2_ARB", 0x8B50}, {"GL_FLOAT_VEC3", 0x8B51}, {"GL_FLOAT_VEC3_ARB", 0x8B51}, {"GL_FLOAT_VEC4", 0x8B52}, {"GL_FLOAT_VEC4_ARB", 0x8B52}, {"GL_INT_VEC2", 0x8B53}, {"GL_INT_VEC2_ARB", 0x8B53}, {"GL_INT_VEC3", 0x8B54}, {"GL_INT_VEC3_ARB", 0x8B54}, {"GL_INT_VEC4", 0x8B55}, {"GL_INT_VEC4_ARB", 0x8B55}, {"GL_BOOL", 0x8B56}, {"GL_BOOL_ARB", 0x8B56}, {"GL_BOOL_VEC2", 0x8B57}, {"GL_BOOL_VEC2_ARB", 0x8B57}, {"GL_BOOL_VEC3", 0x8B58}, {"GL_BOOL_VEC3_ARB", 0x8B58}, {"GL_BOOL_VEC4", 0x8B59}, {"GL_BOOL_VEC4_ARB", 0x8B59}, {"GL_FLOAT_MAT2", 0x8B5A}, {"GL_FLOAT_MAT2_ARB", 0x8B5A}, {"GL_FLOAT_MAT3", 0x8B5B}, {"GL_FLOAT_MAT3_ARB", 0x8B5B}, {"GL_FLOAT_MAT4", 0x8B5C}, {"GL_FLOAT_MAT4_ARB", 0x8B5C}, {"GL_SAMPLER_1D", 0x8B5D}, {"GL_SAMPLER_1D_ARB", 0x8B5D}, {"GL_SAMPLER_2D", 0x8B5E}, {"GL_SAMPLER_2D_ARB", 0x8B5E}, {"GL_SAMPLER_3D", 0x8B5F}, {"GL_SAMPLER_3D_ARB", 0x8B5F}, {"GL_SAMPLER_3D_OES", 0x8B5F}, {"GL_SAMPLER_CUBE", 0x8B60}, {"GL_SAMPLER_CUBE_ARB", 0x8B60}, {"GL_SAMPLER_1D_SHADOW", 0x8B61}, {"GL_SAMPLER_1D_SHADOW_ARB", 0x8B61}, {"GL_SAMPLER_2D_SHADOW", 0x8B62}, {"GL_SAMPLER_2D_SHADOW_ARB", 0x8B62}, {"GL_SAMPLER_2D_SHADOW_EXT", 0x8B62}, {"GL_SAMPLER_2D_RECT", 0x8B63}, {"GL_SAMPLER_2D_RECT_ARB", 0x8B63}, {"GL_SAMPLER_2D_RECT_SHADOW", 0x8B64}, {"GL_SAMPLER_2D_RECT_SHADOW_ARB", 0x8B64}, {"GL_FLOAT_MAT2x3", 0x8B65}, {"GL_FLOAT_MAT2x4", 0x8B66}, {"GL_FLOAT_MAT3x2", 0x8B67}, {"GL_FLOAT_MAT3x4", 0x8B68}, {"GL_FLOAT_MAT4x2", 0x8B69}, {"GL_FLOAT_MAT4x3", 0x8B6A}, {"GL_DELETE_STATUS", 0x8B80}, {"GL_OBJECT_DELETE_STATUS_ARB", 0x8B80}, {"GL_COMPILE_STATUS", 0x8B81}, {"GL_OBJECT_COMPILE_STATUS_ARB", 0x8B81}, {"GL_LINK_STATUS", 0x8B82}, {"GL_OBJECT_LINK_STATUS_ARB", 0x8B82}, {"GL_VALIDATE_STATUS", 0x8B83}, {"GL_OBJECT_VALIDATE_STATUS_ARB", 0x8B83}, {"GL_INFO_LOG_LENGTH", 0x8B84}, {"GL_OBJECT_INFO_LOG_LENGTH_ARB", 0x8B84}, {"GL_ATTACHED_SHADERS", 0x8B85}, {"GL_OBJECT_ATTACHED_OBJECTS_ARB", 0x8B85}, {"GL_ACTIVE_UNIFORMS", 0x8B86}, {"GL_OBJECT_ACTIVE_UNIFORMS_ARB", 0x8B86}, {"GL_ACTIVE_UNIFORM_MAX_LENGTH", 0x8B87}, {"GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB", 0x8B87}, {"GL_SHADER_SOURCE_LENGTH", 0x8B88}, {"GL_OBJECT_SHADER_SOURCE_LENGTH_ARB", 0x8B88}, {"GL_ACTIVE_ATTRIBUTES", 0x8B89}, {"GL_OBJECT_ACTIVE_ATTRIBUTES_ARB", 0x8B89}, {"GL_ACTIVE_ATTRIBUTE_MAX_LENGTH", 0x8B8A}, {"GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB", 0x8B8A}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT", 0x8B8B}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", 0x8B8B}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES", 0x8B8B}, {"GL_SHADING_LANGUAGE_VERSION", 0x8B8C}, {"GL_SHADING_LANGUAGE_VERSION_ARB", 0x8B8C}, {"GL_CURRENT_PROGRAM", 0x8B8D}, {"GL_ACTIVE_PROGRAM_EXT", 0x8B8D}, {"GL_PALETTE4_RGB8_OES", 0x8B90}, {"GL_PALETTE4_RGBA8_OES", 0x8B91}, {"GL_PALETTE4_R5_G6_B5_OES", 0x8B92}, {"GL_PALETTE4_RGBA4_OES", 0x8B93}, {"GL_PALETTE4_RGB5_A1_OES", 0x8B94}, {"GL_PALETTE8_RGB8_OES", 0x8B95}, {"GL_PALETTE8_RGBA8_OES", 0x8B96}, {"GL_PALETTE8_R5_G6_B5_OES", 0x8B97}, {"GL_PALETTE8_RGBA4_OES", 0x8B98}, {"GL_PALETTE8_RGB5_A1_OES", 0x8B99}, {"GL_IMPLEMENTATION_COLOR_READ_TYPE", 0x8B9A}, {"GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", 0x8B9A}, {"GL_IMPLEMENTATION_COLOR_READ_FORMAT", 0x8B9B}, {"GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", 0x8B9B}, {"GL_POINT_SIZE_ARRAY_OES", 0x8B9C}, {"GL_TEXTURE_CROP_RECT_OES", 0x8B9D}, {"GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES", 0x8B9E}, {"GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES", 0x8B9F}, {"GL_FRAGMENT_PROGRAM_POSITION_MESA", 0x8BB0}, {"GL_FRAGMENT_PROGRAM_CALLBACK_MESA", 0x8BB1}, {"GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA", 0x8BB2}, {"GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA", 0x8BB3}, {"GL_VERTEX_PROGRAM_CALLBACK_MESA", 0x8BB4}, {"GL_VERTEX_PROGRAM_POSITION_MESA", 0x8BB4}, {"GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA", 0x8BB6}, {"GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA", 0x8BB7}, {"GL_COUNTER_TYPE_AMD", 0x8BC0}, {"GL_COUNTER_RANGE_AMD", 0x8BC1}, {"GL_UNSIGNED_INT64_AMD", 0x8BC2}, {"GL_PERCENTAGE_AMD", 0x8BC3}, {"GL_PERFMON_RESULT_AVAILABLE_AMD", 0x8BC4}, {"GL_PERFMON_RESULT_SIZE_AMD", 0x8BC5}, {"GL_PERFMON_RESULT_AMD", 0x8BC6}, {"GL_TEXTURE_WIDTH_QCOM", 0x8BD2}, {"GL_TEXTURE_HEIGHT_QCOM", 0x8BD3}, {"GL_TEXTURE_DEPTH_QCOM", 0x8BD4}, {"GL_TEXTURE_INTERNAL_FORMAT_QCOM", 0x8BD5}, {"GL_TEXTURE_FORMAT_QCOM", 0x8BD6}, {"GL_TEXTURE_TYPE_QCOM", 0x8BD7}, {"GL_TEXTURE_IMAGE_VALID_QCOM", 0x8BD8}, {"GL_TEXTURE_NUM_LEVELS_QCOM", 0x8BD9}, {"GL_TEXTURE_TARGET_QCOM", 0x8BDA}, {"GL_TEXTURE_OBJECT_VALID_QCOM", 0x8BDB}, {"GL_STATE_RESTORE", 0x8BDC}, {"GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG", 0x8C00}, {"GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG", 0x8C01}, {"GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", 0x8C02}, {"GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", 0x8C03}, {"GL_MODULATE_COLOR_IMG", 0x8C04}, {"GL_RECIP_ADD_SIGNED_ALPHA_IMG", 0x8C05}, {"GL_TEXTURE_ALPHA_MODULATE_IMG", 0x8C06}, {"GL_FACTOR_ALPHA_MODULATE_IMG", 0x8C07}, {"GL_FRAGMENT_ALPHA_MODULATE_IMG", 0x8C08}, {"GL_ADD_BLEND_IMG", 0x8C09}, {"GL_SGX_BINARY_IMG", 0x8C0A}, {"GL_TEXTURE_RED_TYPE", 0x8C10}, {"GL_TEXTURE_RED_TYPE_ARB", 0x8C10}, {"GL_TEXTURE_GREEN_TYPE", 0x8C11}, {"GL_TEXTURE_GREEN_TYPE_ARB", 0x8C11}, {"GL_TEXTURE_BLUE_TYPE", 0x8C12}, {"GL_TEXTURE_BLUE_TYPE_ARB", 0x8C12}, {"GL_TEXTURE_ALPHA_TYPE", 0x8C13}, {"GL_TEXTURE_ALPHA_TYPE_ARB", 0x8C13}, {"GL_TEXTURE_LUMINANCE_TYPE", 0x8C14}, {"GL_TEXTURE_LUMINANCE_TYPE_ARB", 0x8C14}, {"GL_TEXTURE_INTENSITY_TYPE", 0x8C15}, {"GL_TEXTURE_INTENSITY_TYPE_ARB", 0x8C15}, {"GL_TEXTURE_DEPTH_TYPE", 0x8C16}, {"GL_TEXTURE_DEPTH_TYPE_ARB", 0x8C16}, {"GL_UNSIGNED_NORMALIZED", 0x8C17}, {"GL_UNSIGNED_NORMALIZED_ARB", 0x8C17}, {"GL_UNSIGNED_NORMALIZED_EXT", 0x8C17}, {"GL_TEXTURE_1D_ARRAY", 0x8C18}, {"GL_TEXTURE_1D_ARRAY_EXT", 0x8C18}, {"GL_PROXY_TEXTURE_1D_ARRAY", 0x8C19}, {"GL_PROXY_TEXTURE_1D_ARRAY_EXT", 0x8C19}, {"GL_TEXTURE_2D_ARRAY", 0x8C1A}, {"GL_TEXTURE_2D_ARRAY_EXT", 0x8C1A}, {"GL_PROXY_TEXTURE_2D_ARRAY", 0x8C1B}, {"GL_PROXY_TEXTURE_2D_ARRAY_EXT", 0x8C1B}, {"GL_TEXTURE_BINDING_1D_ARRAY", 0x8C1C}, {"GL_TEXTURE_BINDING_1D_ARRAY_EXT", 0x8C1C}, {"GL_TEXTURE_BINDING_2D_ARRAY", 0x8C1D}, {"GL_TEXTURE_BINDING_2D_ARRAY_EXT", 0x8C1D}, {"GL_GEOMETRY_PROGRAM_NV", 0x8C26}, {"GL_MAX_PROGRAM_OUTPUT_VERTICES_NV", 0x8C27}, {"GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV", 0x8C28}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS", 0x8C29}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB", 0x8C29}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT", 0x8C29}, {"GL_TEXTURE_BUFFER", 0x8C2A}, {"GL_TEXTURE_BUFFER_ARB", 0x8C2A}, {"GL_TEXTURE_BUFFER_EXT", 0x8C2A}, {"GL_MAX_TEXTURE_BUFFER_SIZE", 0x8C2B}, {"GL_MAX_TEXTURE_BUFFER_SIZE_ARB", 0x8C2B}, {"GL_MAX_TEXTURE_BUFFER_SIZE_EXT", 0x8C2B}, {"GL_TEXTURE_BINDING_BUFFER", 0x8C2C}, {"GL_TEXTURE_BINDING_BUFFER_ARB", 0x8C2C}, {"GL_TEXTURE_BINDING_BUFFER_EXT", 0x8C2C}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING", 0x8C2D}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", 0x8C2D}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT", 0x8C2D}, {"GL_TEXTURE_BUFFER_FORMAT_ARB", 0x8C2E}, {"GL_TEXTURE_BUFFER_FORMAT_EXT", 0x8C2E}, {"GL_ANY_SAMPLES_PASSED", 0x8C2F}, {"GL_ANY_SAMPLES_PASSED_EXT", 0x8C2F}, {"GL_SAMPLE_SHADING", 0x8C36}, {"GL_SAMPLE_SHADING_ARB", 0x8C36}, {"GL_MIN_SAMPLE_SHADING_VALUE", 0x8C37}, {"GL_MIN_SAMPLE_SHADING_VALUE_ARB", 0x8C37}, {"GL_R11F_G11F_B10F", 0x8C3A}, {"GL_R11F_G11F_B10F_EXT", 0x8C3A}, {"GL_UNSIGNED_INT_10F_11F_11F_REV", 0x8C3B}, {"GL_UNSIGNED_INT_10F_11F_11F_REV_EXT", 0x8C3B}, {"GL_RGBA_SIGNED_COMPONENTS_EXT", 0x8C3C}, {"GL_RGB9_E5", 0x8C3D}, {"GL_RGB9_E5_EXT", 0x8C3D}, {"GL_UNSIGNED_INT_5_9_9_9_REV", 0x8C3E}, {"GL_UNSIGNED_INT_5_9_9_9_REV_EXT", 0x8C3E}, {"GL_TEXTURE_SHARED_SIZE", 0x8C3F}, {"GL_TEXTURE_SHARED_SIZE_EXT", 0x8C3F}, {"GL_SRGB", 0x8C40}, {"GL_SRGB_EXT", 0x8C40}, {"GL_SRGB8", 0x8C41}, {"GL_SRGB8_EXT", 0x8C41}, {"GL_SRGB8_NV", 0x8C41}, {"GL_SRGB_ALPHA", 0x8C42}, {"GL_SRGB_ALPHA_EXT", 0x8C42}, {"GL_SRGB8_ALPHA8", 0x8C43}, {"GL_SRGB8_ALPHA8_EXT", 0x8C43}, {"GL_SLUMINANCE_ALPHA", 0x8C44}, {"GL_SLUMINANCE_ALPHA_EXT", 0x8C44}, {"GL_SLUMINANCE_ALPHA_NV", 0x8C44}, {"GL_SLUMINANCE8_ALPHA8", 0x8C45}, {"GL_SLUMINANCE8_ALPHA8_EXT", 0x8C45}, {"GL_SLUMINANCE8_ALPHA8_NV", 0x8C45}, {"GL_SLUMINANCE", 0x8C46}, {"GL_SLUMINANCE_EXT", 0x8C46}, {"GL_SLUMINANCE_NV", 0x8C46}, {"GL_SLUMINANCE8", 0x8C47}, {"GL_SLUMINANCE8_EXT", 0x8C47}, {"GL_SLUMINANCE8_NV", 0x8C47}, {"GL_COMPRESSED_SRGB", 0x8C48}, {"GL_COMPRESSED_SRGB_EXT", 0x8C48}, {"GL_COMPRESSED_SRGB_ALPHA", 0x8C49}, {"GL_COMPRESSED_SRGB_ALPHA_EXT", 0x8C49}, {"GL_COMPRESSED_SLUMINANCE", 0x8C4A}, {"GL_COMPRESSED_SLUMINANCE_EXT", 0x8C4A}, {"GL_COMPRESSED_SLUMINANCE_ALPHA", 0x8C4B}, {"GL_COMPRESSED_SLUMINANCE_ALPHA_EXT", 0x8C4B}, {"GL_COMPRESSED_SRGB_S3TC_DXT1_EXT", 0x8C4C}, {"GL_COMPRESSED_SRGB_S3TC_DXT1_NV", 0x8C4C}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", 0x8C4D}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV", 0x8C4D}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", 0x8C4E}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV", 0x8C4E}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", 0x8C4F}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV", 0x8C4F}, {"GL_COMPRESSED_LUMINANCE_LATC1_EXT", 0x8C70}, {"GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT", 0x8C71}, {"GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C72}, {"GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C73}, {"GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV", 0x8C74}, {"GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV", 0x8C75}, {"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH", 0x8C76}, {"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT", 0x8C76}, {"GL_BACK_PRIMARY_COLOR_NV", 0x8C77}, {"GL_BACK_SECONDARY_COLOR_NV", 0x8C78}, {"GL_TEXTURE_COORD_NV", 0x8C79}, {"GL_CLIP_DISTANCE_NV", 0x8C7A}, {"GL_VERTEX_ID_NV", 0x8C7B}, {"GL_PRIMITIVE_ID_NV", 0x8C7C}, {"GL_GENERIC_ATTRIB_NV", 0x8C7D}, {"GL_TRANSFORM_FEEDBACK_ATTRIBS_NV", 0x8C7E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE", 0x8C7F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT", 0x8C7F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV", 0x8C7F}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", 0x8C80}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT", 0x8C80}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV", 0x8C80}, {"GL_ACTIVE_VARYINGS_NV", 0x8C81}, {"GL_ACTIVE_VARYING_MAX_LENGTH_NV", 0x8C82}, {"GL_TRANSFORM_FEEDBACK_VARYINGS", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_VARYINGS_EXT", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_VARYINGS_NV", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START_NV", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_RECORD_NV", 0x8C86}, {"GL_PRIMITIVES_GENERATED", 0x8C87}, {"GL_PRIMITIVES_GENERATED_EXT", 0x8C87}, {"GL_PRIMITIVES_GENERATED_NV", 0x8C87}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN", 0x8C88}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT", 0x8C88}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV", 0x8C88}, {"GL_RASTERIZER_DISCARD", 0x8C89}, {"GL_RASTERIZER_DISCARD_EXT", 0x8C89}, {"GL_RASTERIZER_DISCARD_NV", 0x8C89}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", 0x8C8B}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT", 0x8C8B}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV", 0x8C8B}, {"GL_INTERLEAVED_ATTRIBS", 0x8C8C}, {"GL_INTERLEAVED_ATTRIBS_EXT", 0x8C8C}, {"GL_INTERLEAVED_ATTRIBS_NV", 0x8C8C}, {"GL_SEPARATE_ATTRIBS", 0x8C8D}, {"GL_SEPARATE_ATTRIBS_EXT", 0x8C8D}, {"GL_SEPARATE_ATTRIBS_NV", 0x8C8D}, {"GL_TRANSFORM_FEEDBACK_BUFFER", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_EXT", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_NV", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", 0x8C8F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT", 0x8C8F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV", 0x8C8F}, {"GL_ATC_RGB_AMD", 0x8C92}, {"GL_ATC_RGBA_EXPLICIT_ALPHA_AMD", 0x8C93}, {"GL_POINT_SPRITE_COORD_ORIGIN", 0x8CA0}, {"GL_LOWER_LEFT", 0x8CA1}, {"GL_UPPER_LEFT", 0x8CA2}, {"GL_STENCIL_BACK_REF", 0x8CA3}, {"GL_STENCIL_BACK_VALUE_MASK", 0x8CA4}, {"GL_STENCIL_BACK_WRITEMASK", 0x8CA5}, {"GL_DRAW_FRAMEBUFFER_BINDING", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_EXT", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_NV", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_EXT", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_OES", 0x8CA6}, {"GL_RENDERBUFFER_BINDING", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_ANGLE", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_EXT", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_OES", 0x8CA7}, {"GL_READ_FRAMEBUFFER", 0x8CA8}, {"GL_READ_FRAMEBUFFER_ANGLE", 0x8CA8}, {"GL_READ_FRAMEBUFFER_EXT", 0x8CA8}, {"GL_READ_FRAMEBUFFER_NV", 0x8CA8}, {"GL_DRAW_FRAMEBUFFER", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_ANGLE", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_EXT", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_NV", 0x8CA9}, {"GL_READ_FRAMEBUFFER_BINDING", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_EXT", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_NV", 0x8CAA}, {"GL_RENDERBUFFER_COVERAGE_SAMPLES_NV", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_ANGLE", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_EXT", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_NV", 0x8CAB}, {"GL_DEPTH_COMPONENT32F", 0x8CAC}, {"GL_DEPTH32F_STENCIL8", 0x8CAD}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT", 0x8CD4}, {"GL_FRAMEBUFFER_COMPLETE", 0x8CD5}, {"GL_FRAMEBUFFER_COMPLETE_EXT", 0x8CD5}, {"GL_FRAMEBUFFER_COMPLETE_OES", 0x8CD5}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT", 0x8CDA}, {"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES", 0x8CDA}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER", 0x8CDC}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT", 0x8CDC}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES", 0x8CDC}, {"GL_FRAMEBUFFER_UNSUPPORTED", 0x8CDD}, {"GL_FRAMEBUFFER_UNSUPPORTED_EXT", 0x8CDD}, {"GL_FRAMEBUFFER_UNSUPPORTED_OES", 0x8CDD}, {"GL_MAX_COLOR_ATTACHMENTS", 0x8CDF}, {"GL_MAX_COLOR_ATTACHMENTS_EXT", 0x8CDF}, {"GL_MAX_COLOR_ATTACHMENTS_NV", 0x8CDF}, {"GL_COLOR_ATTACHMENT0", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_EXT", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_NV", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_OES", 0x8CE0}, {"GL_COLOR_ATTACHMENT1", 0x8CE1}, {"GL_COLOR_ATTACHMENT1_EXT", 0x8CE1}, {"GL_COLOR_ATTACHMENT1_NV", 0x8CE1}, {"GL_COLOR_ATTACHMENT2", 0x8CE2}, {"GL_COLOR_ATTACHMENT2_EXT", 0x8CE2}, {"GL_COLOR_ATTACHMENT2_NV", 0x8CE2}, {"GL_COLOR_ATTACHMENT3", 0x8CE3}, {"GL_COLOR_ATTACHMENT3_EXT", 0x8CE3}, {"GL_COLOR_ATTACHMENT3_NV", 0x8CE3}, {"GL_COLOR_ATTACHMENT4", 0x8CE4}, {"GL_COLOR_ATTACHMENT4_EXT", 0x8CE4}, {"GL_COLOR_ATTACHMENT4_NV", 0x8CE4}, {"GL_COLOR_ATTACHMENT5", 0x8CE5}, {"GL_COLOR_ATTACHMENT5_EXT", 0x8CE5}, {"GL_COLOR_ATTACHMENT5_NV", 0x8CE5}, {"GL_COLOR_ATTACHMENT6", 0x8CE6}, {"GL_COLOR_ATTACHMENT6_EXT", 0x8CE6}, {"GL_COLOR_ATTACHMENT6_NV", 0x8CE6}, {"GL_COLOR_ATTACHMENT7", 0x8CE7}, {"GL_COLOR_ATTACHMENT7_EXT", 0x8CE7}, {"GL_COLOR_ATTACHMENT7_NV", 0x8CE7}, {"GL_COLOR_ATTACHMENT8", 0x8CE8}, {"GL_COLOR_ATTACHMENT8_EXT", 0x8CE8}, {"GL_COLOR_ATTACHMENT8_NV", 0x8CE8}, {"GL_COLOR_ATTACHMENT9", 0x8CE9}, {"GL_COLOR_ATTACHMENT9_EXT", 0x8CE9}, {"GL_COLOR_ATTACHMENT9_NV", 0x8CE9}, {"GL_COLOR_ATTACHMENT10", 0x8CEA}, {"GL_COLOR_ATTACHMENT10_EXT", 0x8CEA}, {"GL_COLOR_ATTACHMENT10_NV", 0x8CEA}, {"GL_COLOR_ATTACHMENT11", 0x8CEB}, {"GL_COLOR_ATTACHMENT11_EXT", 0x8CEB}, {"GL_COLOR_ATTACHMENT11_NV", 0x8CEB}, {"GL_COLOR_ATTACHMENT12", 0x8CEC}, {"GL_COLOR_ATTACHMENT12_EXT", 0x8CEC}, {"GL_COLOR_ATTACHMENT12_NV", 0x8CEC}, {"GL_COLOR_ATTACHMENT13", 0x8CED}, {"GL_COLOR_ATTACHMENT13_EXT", 0x8CED}, {"GL_COLOR_ATTACHMENT13_NV", 0x8CED}, {"GL_COLOR_ATTACHMENT14", 0x8CEE}, {"GL_COLOR_ATTACHMENT14_EXT", 0x8CEE}, {"GL_COLOR_ATTACHMENT14_NV", 0x8CEE}, {"GL_COLOR_ATTACHMENT15", 0x8CEF}, {"GL_COLOR_ATTACHMENT15_EXT", 0x8CEF}, {"GL_COLOR_ATTACHMENT15_NV", 0x8CEF}, {"GL_DEPTH_ATTACHMENT", 0x8D00}, {"GL_DEPTH_ATTACHMENT_EXT", 0x8D00}, {"GL_DEPTH_ATTACHMENT_OES", 0x8D00}, {"GL_STENCIL_ATTACHMENT", 0x8D20}, {"GL_STENCIL_ATTACHMENT_EXT", 0x8D20}, {"GL_STENCIL_ATTACHMENT_OES", 0x8D20}, {"GL_FRAMEBUFFER", 0x8D40}, {"GL_FRAMEBUFFER_EXT", 0x8D40}, {"GL_FRAMEBUFFER_OES", 0x8D40}, {"GL_RENDERBUFFER", 0x8D41}, {"GL_RENDERBUFFER_EXT", 0x8D41}, {"GL_RENDERBUFFER_OES", 0x8D41}, {"GL_RENDERBUFFER_WIDTH", 0x8D42}, {"GL_RENDERBUFFER_WIDTH_EXT", 0x8D42}, {"GL_RENDERBUFFER_WIDTH_OES", 0x8D42}, {"GL_RENDERBUFFER_HEIGHT", 0x8D43}, {"GL_RENDERBUFFER_HEIGHT_EXT", 0x8D43}, {"GL_RENDERBUFFER_HEIGHT_OES", 0x8D43}, {"GL_RENDERBUFFER_INTERNAL_FORMAT", 0x8D44}, {"GL_RENDERBUFFER_INTERNAL_FORMAT_EXT", 0x8D44}, {"GL_RENDERBUFFER_INTERNAL_FORMAT_OES", 0x8D44}, {"GL_STENCIL_INDEX1", 0x8D46}, {"GL_STENCIL_INDEX1_EXT", 0x8D46}, {"GL_STENCIL_INDEX1_OES", 0x8D46}, {"GL_STENCIL_INDEX4", 0x8D47}, {"GL_STENCIL_INDEX4_EXT", 0x8D47}, {"GL_STENCIL_INDEX4_OES", 0x8D47}, {"GL_STENCIL_INDEX8", 0x8D48}, {"GL_STENCIL_INDEX8_EXT", 0x8D48}, {"GL_STENCIL_INDEX8_OES", 0x8D48}, {"GL_STENCIL_INDEX16", 0x8D49}, {"GL_STENCIL_INDEX16_EXT", 0x8D49}, {"GL_RENDERBUFFER_RED_SIZE", 0x8D50}, {"GL_RENDERBUFFER_RED_SIZE_EXT", 0x8D50}, {"GL_RENDERBUFFER_RED_SIZE_OES", 0x8D50}, {"GL_RENDERBUFFER_GREEN_SIZE", 0x8D51}, {"GL_RENDERBUFFER_GREEN_SIZE_EXT", 0x8D51}, {"GL_RENDERBUFFER_GREEN_SIZE_OES", 0x8D51}, {"GL_RENDERBUFFER_BLUE_SIZE", 0x8D52}, {"GL_RENDERBUFFER_BLUE_SIZE_EXT", 0x8D52}, {"GL_RENDERBUFFER_BLUE_SIZE_OES", 0x8D52}, {"GL_RENDERBUFFER_ALPHA_SIZE", 0x8D53}, {"GL_RENDERBUFFER_ALPHA_SIZE_EXT", 0x8D53}, {"GL_RENDERBUFFER_ALPHA_SIZE_OES", 0x8D53}, {"GL_RENDERBUFFER_DEPTH_SIZE", 0x8D54}, {"GL_RENDERBUFFER_DEPTH_SIZE_EXT", 0x8D54}, {"GL_RENDERBUFFER_DEPTH_SIZE_OES", 0x8D54}, {"GL_RENDERBUFFER_STENCIL_SIZE", 0x8D55}, {"GL_RENDERBUFFER_STENCIL_SIZE_EXT", 0x8D55}, {"GL_RENDERBUFFER_STENCIL_SIZE_OES", 0x8D55}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV", 0x8D56}, {"GL_MAX_SAMPLES", 0x8D57}, {"GL_MAX_SAMPLES_ANGLE", 0x8D57}, {"GL_MAX_SAMPLES_EXT", 0x8D57}, {"GL_MAX_SAMPLES_NV", 0x8D57}, {"GL_TEXTURE_GEN_STR_OES", 0x8D60}, {"GL_HALF_FLOAT_OES", 0x8D61}, {"GL_RGB565_OES", 0x8D62}, {"GL_RGB565", 0x8D62}, {"GL_ETC1_RGB8_OES", 0x8D64}, {"GL_TEXTURE_EXTERNAL_OES", 0x8D65}, {"GL_SAMPLER_EXTERNAL_OES", 0x8D66}, {"GL_TEXTURE_BINDING_EXTERNAL_OES", 0x8D67}, {"GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES", 0x8D68}, {"GL_PRIMITIVE_RESTART_FIXED_INDEX", 0x8D69}, {"GL_ANY_SAMPLES_PASSED_CONSERVATIVE", 0x8D6A}, {"GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT", 0x8D6A}, {"GL_MAX_ELEMENT_INDEX", 0x8D6B}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT", 0x8D6C}, {"GL_RGBA32UI", 0x8D70}, {"GL_RGBA32UI_EXT", 0x8D70}, {"GL_RGB32UI", 0x8D71}, {"GL_RGB32UI_EXT", 0x8D71}, {"GL_ALPHA32UI_EXT", 0x8D72}, {"GL_INTENSITY32UI_EXT", 0x8D73}, {"GL_LUMINANCE32UI_EXT", 0x8D74}, {"GL_LUMINANCE_ALPHA32UI_EXT", 0x8D75}, {"GL_RGBA16UI", 0x8D76}, {"GL_RGBA16UI_EXT", 0x8D76}, {"GL_RGB16UI", 0x8D77}, {"GL_RGB16UI_EXT", 0x8D77}, {"GL_ALPHA16UI_EXT", 0x8D78}, {"GL_INTENSITY16UI_EXT", 0x8D79}, {"GL_LUMINANCE16UI_EXT", 0x8D7A}, {"GL_LUMINANCE_ALPHA16UI_EXT", 0x8D7B}, {"GL_RGBA8UI", 0x8D7C}, {"GL_RGBA8UI_EXT", 0x8D7C}, {"GL_RGB8UI", 0x8D7D}, {"GL_RGB8UI_EXT", 0x8D7D}, {"GL_ALPHA8UI_EXT", 0x8D7E}, {"GL_INTENSITY8UI_EXT", 0x8D7F}, {"GL_LUMINANCE8UI_EXT", 0x8D80}, {"GL_LUMINANCE_ALPHA8UI_EXT", 0x8D81}, {"GL_RGBA32I", 0x8D82}, {"GL_RGBA32I_EXT", 0x8D82}, {"GL_RGB32I", 0x8D83}, {"GL_RGB32I_EXT", 0x8D83}, {"GL_ALPHA32I_EXT", 0x8D84}, {"GL_INTENSITY32I_EXT", 0x8D85}, {"GL_LUMINANCE32I_EXT", 0x8D86}, {"GL_LUMINANCE_ALPHA32I_EXT", 0x8D87}, {"GL_RGBA16I", 0x8D88}, {"GL_RGBA16I_EXT", 0x8D88}, {"GL_RGB16I", 0x8D89}, {"GL_RGB16I_EXT", 0x8D89}, {"GL_ALPHA16I_EXT", 0x8D8A}, {"GL_INTENSITY16I_EXT", 0x8D8B}, {"GL_LUMINANCE16I_EXT", 0x8D8C}, {"GL_LUMINANCE_ALPHA16I_EXT", 0x8D8D}, {"GL_RGBA8I", 0x8D8E}, {"GL_RGBA8I_EXT", 0x8D8E}, {"GL_RGB8I", 0x8D8F}, {"GL_RGB8I_EXT", 0x8D8F}, {"GL_ALPHA8I_EXT", 0x8D90}, {"GL_INTENSITY8I_EXT", 0x8D91}, {"GL_LUMINANCE8I_EXT", 0x8D92}, {"GL_LUMINANCE_ALPHA8I_EXT", 0x8D93}, {"GL_RED_INTEGER", 0x8D94}, {"GL_RED_INTEGER_EXT", 0x8D94}, {"GL_GREEN_INTEGER", 0x8D95}, {"GL_GREEN_INTEGER_EXT", 0x8D95}, {"GL_BLUE_INTEGER", 0x8D96}, {"GL_BLUE_INTEGER_EXT", 0x8D96}, {"GL_ALPHA_INTEGER", 0x8D97}, {"GL_ALPHA_INTEGER_EXT", 0x8D97}, {"GL_RGB_INTEGER", 0x8D98}, {"GL_RGB_INTEGER_EXT", 0x8D98}, {"GL_RGBA_INTEGER", 0x8D99}, {"GL_RGBA_INTEGER_EXT", 0x8D99}, {"GL_BGR_INTEGER", 0x8D9A}, {"GL_BGR_INTEGER_EXT", 0x8D9A}, {"GL_BGRA_INTEGER", 0x8D9B}, {"GL_BGRA_INTEGER_EXT", 0x8D9B}, {"GL_LUMINANCE_INTEGER_EXT", 0x8D9C}, {"GL_LUMINANCE_ALPHA_INTEGER_EXT", 0x8D9D}, {"GL_RGBA_INTEGER_MODE_EXT", 0x8D9E}, {"GL_INT_2_10_10_10_REV", 0x8D9F}, {"GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV", 0x8DA0}, {"GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV", 0x8DA1}, {"GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA2}, {"GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA3}, {"GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA4}, {"GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV", 0x8DA5}, {"GL_MAX_PROGRAM_GENERIC_RESULTS_NV", 0x8DA6}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED", 0x8DA7}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB", 0x8DA7}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT", 0x8DA7}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB", 0x8DA9}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT", 0x8DA9}, {"GL_LAYER_NV", 0x8DAA}, {"GL_DEPTH_COMPONENT32F_NV", 0x8DAB}, {"GL_DEPTH32F_STENCIL8_NV", 0x8DAC}, {"GL_FLOAT_32_UNSIGNED_INT_24_8_REV", 0x8DAD}, {"GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV", 0x8DAD}, {"GL_SHADER_INCLUDE_ARB", 0x8DAE}, {"GL_DEPTH_BUFFER_FLOAT_MODE_NV", 0x8DAF}, {"GL_FRAMEBUFFER_SRGB", 0x8DB9}, {"GL_FRAMEBUFFER_SRGB_EXT", 0x8DB9}, {"GL_FRAMEBUFFER_SRGB_CAPABLE_EXT", 0x8DBA}, {"GL_COMPRESSED_RED_RGTC1", 0x8DBB}, {"GL_COMPRESSED_RED_RGTC1_EXT", 0x8DBB}, {"GL_COMPRESSED_SIGNED_RED_RGTC1", 0x8DBC}, {"GL_COMPRESSED_SIGNED_RED_RGTC1_EXT", 0x8DBC}, {"GL_COMPRESSED_RED_GREEN_RGTC2_EXT", 0x8DBD}, {"GL_COMPRESSED_RG_RGTC2", 0x8DBD}, {"GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT", 0x8DBE}, {"GL_COMPRESSED_SIGNED_RG_RGTC2", 0x8DBE}, {"GL_SAMPLER_1D_ARRAY", 0x8DC0}, {"GL_SAMPLER_1D_ARRAY_EXT", 0x8DC0}, {"GL_SAMPLER_2D_ARRAY", 0x8DC1}, {"GL_SAMPLER_2D_ARRAY_EXT", 0x8DC1}, {"GL_SAMPLER_BUFFER", 0x8DC2}, {"GL_SAMPLER_BUFFER_EXT", 0x8DC2}, {"GL_SAMPLER_1D_ARRAY_SHADOW", 0x8DC3}, {"GL_SAMPLER_1D_ARRAY_SHADOW_EXT", 0x8DC3}, {"GL_SAMPLER_2D_ARRAY_SHADOW", 0x8DC4}, {"GL_SAMPLER_2D_ARRAY_SHADOW_EXT", 0x8DC4}, {"GL_SAMPLER_2D_ARRAY_SHADOW_NV", 0x8DC4}, {"GL_SAMPLER_CUBE_SHADOW", 0x8DC5}, {"GL_SAMPLER_CUBE_SHADOW_EXT", 0x8DC5}, {"GL_SAMPLER_CUBE_SHADOW_NV", 0x8DC5}, {"GL_UNSIGNED_INT_VEC2", 0x8DC6}, {"GL_UNSIGNED_INT_VEC2_EXT", 0x8DC6}, {"GL_UNSIGNED_INT_VEC3", 0x8DC7}, {"GL_UNSIGNED_INT_VEC3_EXT", 0x8DC7}, {"GL_UNSIGNED_INT_VEC4", 0x8DC8}, {"GL_UNSIGNED_INT_VEC4_EXT", 0x8DC8}, {"GL_INT_SAMPLER_1D", 0x8DC9}, {"GL_INT_SAMPLER_1D_EXT", 0x8DC9}, {"GL_INT_SAMPLER_2D", 0x8DCA}, {"GL_INT_SAMPLER_2D_EXT", 0x8DCA}, {"GL_INT_SAMPLER_3D", 0x8DCB}, {"GL_INT_SAMPLER_3D_EXT", 0x8DCB}, {"GL_INT_SAMPLER_CUBE", 0x8DCC}, {"GL_INT_SAMPLER_CUBE_EXT", 0x8DCC}, {"GL_INT_SAMPLER_2D_RECT", 0x8DCD}, {"GL_INT_SAMPLER_2D_RECT_EXT", 0x8DCD}, {"GL_INT_SAMPLER_1D_ARRAY", 0x8DCE}, {"GL_INT_SAMPLER_1D_ARRAY_EXT", 0x8DCE}, {"GL_INT_SAMPLER_2D_ARRAY", 0x8DCF}, {"GL_INT_SAMPLER_2D_ARRAY_EXT", 0x8DCF}, {"GL_INT_SAMPLER_BUFFER", 0x8DD0}, {"GL_INT_SAMPLER_BUFFER_EXT", 0x8DD0}, {"GL_UNSIGNED_INT_SAMPLER_1D", 0x8DD1}, {"GL_UNSIGNED_INT_SAMPLER_1D_EXT", 0x8DD1}, {"GL_UNSIGNED_INT_SAMPLER_2D", 0x8DD2}, {"GL_UNSIGNED_INT_SAMPLER_2D_EXT", 0x8DD2}, {"GL_UNSIGNED_INT_SAMPLER_3D", 0x8DD3}, {"GL_UNSIGNED_INT_SAMPLER_3D_EXT", 0x8DD3}, {"GL_UNSIGNED_INT_SAMPLER_CUBE", 0x8DD4}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_EXT", 0x8DD4}, {"GL_UNSIGNED_INT_SAMPLER_2D_RECT", 0x8DD5}, {"GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT", 0x8DD5}, {"GL_UNSIGNED_INT_SAMPLER_1D_ARRAY", 0x8DD6}, {"GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT", 0x8DD6}, {"GL_UNSIGNED_INT_SAMPLER_2D_ARRAY", 0x8DD7}, {"GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT", 0x8DD7}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER", 0x8DD8}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT", 0x8DD8}, {"GL_GEOMETRY_SHADER", 0x8DD9}, {"GL_GEOMETRY_SHADER_ARB", 0x8DD9}, {"GL_GEOMETRY_SHADER_EXT", 0x8DD9}, {"GL_GEOMETRY_VERTICES_OUT_ARB", 0x8DDA}, {"GL_GEOMETRY_VERTICES_OUT_EXT", 0x8DDA}, {"GL_GEOMETRY_INPUT_TYPE_ARB", 0x8DDB}, {"GL_GEOMETRY_INPUT_TYPE_EXT", 0x8DDB}, {"GL_GEOMETRY_OUTPUT_TYPE_ARB", 0x8DDC}, {"GL_GEOMETRY_OUTPUT_TYPE_EXT", 0x8DDC}, {"GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB", 0x8DDD}, {"GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT", 0x8DDD}, {"GL_MAX_VERTEX_VARYING_COMPONENTS_ARB", 0x8DDE}, {"GL_MAX_VERTEX_VARYING_COMPONENTS_EXT", 0x8DDE}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS", 0x8DDF}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB", 0x8DDF}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT", 0x8DDF}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES", 0x8DE0}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB", 0x8DE0}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT", 0x8DE0}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", 0x8DE1}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB", 0x8DE1}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT", 0x8DE1}, {"GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT", 0x8DE2}, {"GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT", 0x8DE3}, {"GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT", 0x8DE4}, {"GL_ACTIVE_SUBROUTINES", 0x8DE5}, {"GL_ACTIVE_SUBROUTINE_UNIFORMS", 0x8DE6}, {"GL_MAX_SUBROUTINES", 0x8DE7}, {"GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS", 0x8DE8}, {"GL_NAMED_STRING_LENGTH_ARB", 0x8DE9}, {"GL_NAMED_STRING_TYPE_ARB", 0x8DEA}, {"GL_MAX_BINDABLE_UNIFORM_SIZE_EXT", 0x8DED}, {"GL_UNIFORM_BUFFER_EXT", 0x8DEE}, {"GL_UNIFORM_BUFFER_BINDING_EXT", 0x8DEF}, {"GL_LOW_FLOAT", 0x8DF0}, {"GL_MEDIUM_FLOAT", 0x8DF1}, {"GL_HIGH_FLOAT", 0x8DF2}, {"GL_LOW_INT", 0x8DF3}, {"GL_MEDIUM_INT", 0x8DF4}, {"GL_HIGH_INT", 0x8DF5}, {"GL_UNSIGNED_INT_10_10_10_2_OES", 0x8DF6}, {"GL_INT_10_10_10_2_OES", 0x8DF7}, {"GL_SHADER_BINARY_FORMATS", 0x8DF8}, {"GL_NUM_SHADER_BINARY_FORMATS", 0x8DF9}, {"GL_SHADER_COMPILER", 0x8DFA}, {"GL_MAX_VERTEX_UNIFORM_VECTORS", 0x8DFB}, {"GL_MAX_VARYING_VECTORS", 0x8DFC}, {"GL_MAX_FRAGMENT_UNIFORM_VECTORS", 0x8DFD}, {"GL_RENDERBUFFER_COLOR_SAMPLES_NV", 0x8E10}, {"GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV", 0x8E11}, {"GL_MULTISAMPLE_COVERAGE_MODES_NV", 0x8E12}, {"GL_QUERY_WAIT", 0x8E13}, {"GL_QUERY_WAIT_NV", 0x8E13}, {"GL_QUERY_NO_WAIT", 0x8E14}, {"GL_QUERY_NO_WAIT_NV", 0x8E14}, {"GL_QUERY_BY_REGION_WAIT", 0x8E15}, {"GL_QUERY_BY_REGION_WAIT_NV", 0x8E15}, {"GL_QUERY_BY_REGION_NO_WAIT", 0x8E16}, {"GL_QUERY_BY_REGION_NO_WAIT_NV", 0x8E16}, {"GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E1E}, {"GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E1F}, {"GL_COLOR_SAMPLES_NV", 0x8E20}, {"GL_TRANSFORM_FEEDBACK", 0x8E22}, {"GL_TRANSFORM_FEEDBACK_NV", 0x8E22}, {"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_PAUSED", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_ACTIVE", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_BINDING", 0x8E25}, {"GL_TRANSFORM_FEEDBACK_BINDING_NV", 0x8E25}, {"GL_FRAME_NV", 0x8E26}, {"GL_FIELDS_NV", 0x8E27}, {"GL_CURRENT_TIME_NV", 0x8E28}, {"GL_TIMESTAMP", 0x8E28}, {"GL_TIMESTAMP_EXT", 0x8E28}, {"GL_NUM_FILL_STREAMS_NV", 0x8E29}, {"GL_PRESENT_TIME_NV", 0x8E2A}, {"GL_PRESENT_DURATION_NV", 0x8E2B}, {"GL_DEPTH_COMPONENT16_NONLINEAR_NV", 0x8E2C}, {"GL_PROGRAM_MATRIX_EXT", 0x8E2D}, {"GL_TRANSPOSE_PROGRAM_MATRIX_EXT", 0x8E2E}, {"GL_PROGRAM_MATRIX_STACK_DEPTH_EXT", 0x8E2F}, {"GL_TEXTURE_SWIZZLE_R", 0x8E42}, {"GL_TEXTURE_SWIZZLE_R_EXT", 0x8E42}, {"GL_TEXTURE_SWIZZLE_G", 0x8E43}, {"GL_TEXTURE_SWIZZLE_G_EXT", 0x8E43}, {"GL_TEXTURE_SWIZZLE_B", 0x8E44}, {"GL_TEXTURE_SWIZZLE_B_EXT", 0x8E44}, {"GL_TEXTURE_SWIZZLE_A", 0x8E45}, {"GL_TEXTURE_SWIZZLE_A_EXT", 0x8E45}, {"GL_TEXTURE_SWIZZLE_RGBA", 0x8E46}, {"GL_TEXTURE_SWIZZLE_RGBA_EXT", 0x8E46}, {"GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS", 0x8E47}, {"GL_ACTIVE_SUBROUTINE_MAX_LENGTH", 0x8E48}, {"GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH", 0x8E49}, {"GL_NUM_COMPATIBLE_SUBROUTINES", 0x8E4A}, {"GL_COMPATIBLE_SUBROUTINES", 0x8E4B}, {"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION", 0x8E4C}, {"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", 0x8E4C}, {"GL_FIRST_VERTEX_CONVENTION", 0x8E4D}, {"GL_FIRST_VERTEX_CONVENTION_EXT", 0x8E4D}, {"GL_LAST_VERTEX_CONVENTION", 0x8E4E}, {"GL_LAST_VERTEX_CONVENTION_EXT", 0x8E4E}, {"GL_PROVOKING_VERTEX", 0x8E4F}, {"GL_PROVOKING_VERTEX_EXT", 0x8E4F}, {"GL_SAMPLE_POSITION", 0x8E50}, {"GL_SAMPLE_POSITION_NV", 0x8E50}, {"GL_SAMPLE_MASK", 0x8E51}, {"GL_SAMPLE_MASK_NV", 0x8E51}, {"GL_SAMPLE_MASK_VALUE", 0x8E52}, {"GL_SAMPLE_MASK_VALUE_NV", 0x8E52}, {"GL_TEXTURE_BINDING_RENDERBUFFER_NV", 0x8E53}, {"GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV", 0x8E54}, {"GL_TEXTURE_RENDERBUFFER_NV", 0x8E55}, {"GL_SAMPLER_RENDERBUFFER_NV", 0x8E56}, {"GL_INT_SAMPLER_RENDERBUFFER_NV", 0x8E57}, {"GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV", 0x8E58}, {"GL_MAX_SAMPLE_MASK_WORDS", 0x8E59}, {"GL_MAX_SAMPLE_MASK_WORDS_NV", 0x8E59}, {"GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV", 0x8E5A}, {"GL_MAX_GEOMETRY_SHADER_INVOCATIONS", 0x8E5A}, {"GL_MIN_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5B}, {"GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV", 0x8E5B}, {"GL_MAX_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5C}, {"GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV", 0x8E5C}, {"GL_FRAGMENT_INTERPOLATION_OFFSET_BITS", 0x8E5D}, {"GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV", 0x8E5D}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5E}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB", 0x8E5E}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV", 0x8E5E}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5F}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB", 0x8E5F}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV", 0x8E5F}, {"GL_MAX_TRANSFORM_FEEDBACK_BUFFERS", 0x8E70}, {"GL_MAX_VERTEX_STREAMS", 0x8E71}, {"GL_PATCH_VERTICES", 0x8E72}, {"GL_PATCH_DEFAULT_INNER_LEVEL", 0x8E73}, {"GL_PATCH_DEFAULT_OUTER_LEVEL", 0x8E74}, {"GL_TESS_CONTROL_OUTPUT_VERTICES", 0x8E75}, {"GL_TESS_GEN_MODE", 0x8E76}, {"GL_TESS_GEN_SPACING", 0x8E77}, {"GL_TESS_GEN_VERTEX_ORDER", 0x8E78}, {"GL_TESS_GEN_POINT_MODE", 0x8E79}, {"GL_ISOLINES", 0x8E7A}, {"GL_FRACTIONAL_ODD", 0x8E7B}, {"GL_FRACTIONAL_EVEN", 0x8E7C}, {"GL_MAX_PATCH_VERTICES", 0x8E7D}, {"GL_MAX_TESS_GEN_LEVEL", 0x8E7E}, {"GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E7F}, {"GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E80}, {"GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS", 0x8E81}, {"GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS", 0x8E82}, {"GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS", 0x8E83}, {"GL_MAX_TESS_PATCH_COMPONENTS", 0x8E84}, {"GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS", 0x8E85}, {"GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS", 0x8E86}, {"GL_TESS_EVALUATION_SHADER", 0x8E87}, {"GL_TESS_CONTROL_SHADER", 0x8E88}, {"GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS", 0x8E89}, {"GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS", 0x8E8A}, {"GL_COMPRESSED_RGBA_BPTC_UNORM_ARB", 0x8E8C}, {"GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB", 0x8E8D}, {"GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB", 0x8E8E}, {"GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB", 0x8E8F}, {"GL_COVERAGE_COMPONENT_NV", 0x8ED0}, {"GL_COVERAGE_COMPONENT4_NV", 0x8ED1}, {"GL_COVERAGE_ATTACHMENT_NV", 0x8ED2}, {"GL_COVERAGE_BUFFERS_NV", 0x8ED3}, {"GL_COVERAGE_SAMPLES_NV", 0x8ED4}, {"GL_COVERAGE_ALL_FRAGMENTS_NV", 0x8ED5}, {"GL_COVERAGE_EDGE_FRAGMENTS_NV", 0x8ED6}, {"GL_COVERAGE_AUTOMATIC_NV", 0x8ED7}, {"GL_BUFFER_GPU_ADDRESS_NV", 0x8F1D}, {"GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV", 0x8F1E}, {"GL_ELEMENT_ARRAY_UNIFIED_NV", 0x8F1F}, {"GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV", 0x8F20}, {"GL_VERTEX_ARRAY_ADDRESS_NV", 0x8F21}, {"GL_NORMAL_ARRAY_ADDRESS_NV", 0x8F22}, {"GL_COLOR_ARRAY_ADDRESS_NV", 0x8F23}, {"GL_INDEX_ARRAY_ADDRESS_NV", 0x8F24}, {"GL_TEXTURE_COORD_ARRAY_ADDRESS_NV", 0x8F25}, {"GL_EDGE_FLAG_ARRAY_ADDRESS_NV", 0x8F26}, {"GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV", 0x8F27}, {"GL_FOG_COORD_ARRAY_ADDRESS_NV", 0x8F28}, {"GL_ELEMENT_ARRAY_ADDRESS_NV", 0x8F29}, {"GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV", 0x8F2A}, {"GL_VERTEX_ARRAY_LENGTH_NV", 0x8F2B}, {"GL_NORMAL_ARRAY_LENGTH_NV", 0x8F2C}, {"GL_COLOR_ARRAY_LENGTH_NV", 0x8F2D}, {"GL_INDEX_ARRAY_LENGTH_NV", 0x8F2E}, {"GL_TEXTURE_COORD_ARRAY_LENGTH_NV", 0x8F2F}, {"GL_EDGE_FLAG_ARRAY_LENGTH_NV", 0x8F30}, {"GL_SECONDARY_COLOR_ARRAY_LENGTH_NV", 0x8F31}, {"GL_FOG_COORD_ARRAY_LENGTH_NV", 0x8F32}, {"GL_ELEMENT_ARRAY_LENGTH_NV", 0x8F33}, {"GL_GPU_ADDRESS_NV", 0x8F34}, {"GL_MAX_SHADER_BUFFER_ADDRESS_NV", 0x8F35}, {"GL_COPY_READ_BUFFER", 0x8F36}, {"GL_COPY_READ_BUFFER_BINDING", 0x8F36}, {"GL_COPY_WRITE_BUFFER", 0x8F37}, {"GL_COPY_WRITE_BUFFER_BINDING", 0x8F37}, {"GL_MAX_IMAGE_UNITS", 0x8F38}, {"GL_MAX_IMAGE_UNITS_EXT", 0x8F38}, {"GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS", 0x8F39}, {"GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT", 0x8F39}, {"GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES", 0x8F39}, {"GL_IMAGE_BINDING_NAME", 0x8F3A}, {"GL_IMAGE_BINDING_NAME_EXT", 0x8F3A}, {"GL_IMAGE_BINDING_LEVEL", 0x8F3B}, {"GL_IMAGE_BINDING_LEVEL_EXT", 0x8F3B}, {"GL_IMAGE_BINDING_LAYERED", 0x8F3C}, {"GL_IMAGE_BINDING_LAYERED_EXT", 0x8F3C}, {"GL_IMAGE_BINDING_LAYER", 0x8F3D}, {"GL_IMAGE_BINDING_LAYER_EXT", 0x8F3D}, {"GL_IMAGE_BINDING_ACCESS", 0x8F3E}, {"GL_IMAGE_BINDING_ACCESS_EXT", 0x8F3E}, {"GL_DRAW_INDIRECT_BUFFER", 0x8F3F}, {"GL_DRAW_INDIRECT_UNIFIED_NV", 0x8F40}, {"GL_DRAW_INDIRECT_ADDRESS_NV", 0x8F41}, {"GL_DRAW_INDIRECT_LENGTH_NV", 0x8F42}, {"GL_DRAW_INDIRECT_BUFFER_BINDING", 0x8F43}, {"GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV", 0x8F44}, {"GL_MAX_PROGRAM_SUBROUTINE_NUM_NV", 0x8F45}, {"GL_DOUBLE_MAT2", 0x8F46}, {"GL_DOUBLE_MAT2_EXT", 0x8F46}, {"GL_DOUBLE_MAT3", 0x8F47}, {"GL_DOUBLE_MAT3_EXT", 0x8F47}, {"GL_DOUBLE_MAT4", 0x8F48}, {"GL_DOUBLE_MAT4_EXT", 0x8F48}, {"GL_DOUBLE_MAT2x3", 0x8F49}, {"GL_DOUBLE_MAT2x3_EXT", 0x8F49}, {"GL_DOUBLE_MAT2x4", 0x8F4A}, {"GL_DOUBLE_MAT2x4_EXT", 0x8F4A}, {"GL_DOUBLE_MAT3x2", 0x8F4B}, {"GL_DOUBLE_MAT3x2_EXT", 0x8F4B}, {"GL_DOUBLE_MAT3x4", 0x8F4C}, {"GL_DOUBLE_MAT3x4_EXT", 0x8F4C}, {"GL_DOUBLE_MAT4x2", 0x8F4D}, {"GL_DOUBLE_MAT4x2_EXT", 0x8F4D}, {"GL_DOUBLE_MAT4x3", 0x8F4E}, {"GL_DOUBLE_MAT4x3_EXT", 0x8F4E}, {"GL_MALI_SHADER_BINARY_ARM", 0x8F60}, {"GL_MALI_PROGRAM_BINARY_ARM", 0x8F61}, {"GL_RED_SNORM", 0x8F90}, {"GL_RG_SNORM", 0x8F91}, {"GL_RGB_SNORM", 0x8F92}, {"GL_RGBA_SNORM", 0x8F93}, {"GL_R8_SNORM", 0x8F94}, {"GL_RG8_SNORM", 0x8F95}, {"GL_RGB8_SNORM", 0x8F96}, {"GL_RGBA8_SNORM", 0x8F97}, {"GL_R16_SNORM", 0x8F98}, {"GL_RG16_SNORM", 0x8F99}, {"GL_RGB16_SNORM", 0x8F9A}, {"GL_RGBA16_SNORM", 0x8F9B}, {"GL_SIGNED_NORMALIZED", 0x8F9C}, {"GL_PRIMITIVE_RESTART", 0x8F9D}, {"GL_PRIMITIVE_RESTART_INDEX", 0x8F9E}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB", 0x8F9F}, {"GL_PERFMON_GLOBAL_MODE_QCOM", 0x8FA0}, {"GL_BINNING_CONTROL_HINT_QCOM", 0x8FB0}, {"GL_CPU_OPTIMIZED_QCOM", 0x8FB1}, {"GL_GPU_OPTIMIZED_QCOM", 0x8FB2}, {"GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM", 0x8FB3}, {"GL_GPU_DISJOINT_EXT", 0x8FBB}, {"GL_SHADER_BINARY_VIV", 0x8FC4}, {"GL_INT8_NV", 0x8FE0}, {"GL_INT8_VEC2_NV", 0x8FE1}, {"GL_INT8_VEC3_NV", 0x8FE2}, {"GL_INT8_VEC4_NV", 0x8FE3}, {"GL_INT16_NV", 0x8FE4}, {"GL_INT16_VEC2_NV", 0x8FE5}, {"GL_INT16_VEC3_NV", 0x8FE6}, {"GL_INT16_VEC4_NV", 0x8FE7}, {"GL_INT64_VEC2_NV", 0x8FE9}, {"GL_INT64_VEC3_NV", 0x8FEA}, {"GL_INT64_VEC4_NV", 0x8FEB}, {"GL_UNSIGNED_INT8_NV", 0x8FEC}, {"GL_UNSIGNED_INT8_VEC2_NV", 0x8FED}, {"GL_UNSIGNED_INT8_VEC3_NV", 0x8FEE}, {"GL_UNSIGNED_INT8_VEC4_NV", 0x8FEF}, {"GL_UNSIGNED_INT16_NV", 0x8FF0}, {"GL_UNSIGNED_INT16_VEC2_NV", 0x8FF1}, {"GL_UNSIGNED_INT16_VEC3_NV", 0x8FF2}, {"GL_UNSIGNED_INT16_VEC4_NV", 0x8FF3}, {"GL_UNSIGNED_INT64_VEC2_NV", 0x8FF5}, {"GL_UNSIGNED_INT64_VEC3_NV", 0x8FF6}, {"GL_UNSIGNED_INT64_VEC4_NV", 0x8FF7}, {"GL_FLOAT16_NV", 0x8FF8}, {"GL_FLOAT16_VEC2_NV", 0x8FF9}, {"GL_FLOAT16_VEC3_NV", 0x8FFA}, {"GL_FLOAT16_VEC4_NV", 0x8FFB}, {"GL_DOUBLE_VEC2", 0x8FFC}, {"GL_DOUBLE_VEC2_EXT", 0x8FFC}, {"GL_DOUBLE_VEC3", 0x8FFD}, {"GL_DOUBLE_VEC3_EXT", 0x8FFD}, {"GL_DOUBLE_VEC4", 0x8FFE}, {"GL_DOUBLE_VEC4_EXT", 0x8FFE}, {"GL_SAMPLER_BUFFER_AMD", 0x9001}, {"GL_INT_SAMPLER_BUFFER_AMD", 0x9002}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD", 0x9003}, {"GL_TESSELLATION_MODE_AMD", 0x9004}, {"GL_TESSELLATION_FACTOR_AMD", 0x9005}, {"GL_DISCRETE_AMD", 0x9006}, {"GL_CONTINUOUS_AMD", 0x9007}, {"GL_TEXTURE_CUBE_MAP_ARRAY", 0x9009}, {"GL_TEXTURE_CUBE_MAP_ARRAY_ARB", 0x9009}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARRAY", 0x900A}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB", 0x900A}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARRAY", 0x900B}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB", 0x900B}, {"GL_SAMPLER_CUBE_MAP_ARRAY", 0x900C}, {"GL_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900C}, {"GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW", 0x900D}, {"GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB", 0x900D}, {"GL_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900E}, {"GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900E}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900F}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900F}, {"GL_ALPHA_SNORM", 0x9010}, {"GL_LUMINANCE_SNORM", 0x9011}, {"GL_LUMINANCE_ALPHA_SNORM", 0x9012}, {"GL_INTENSITY_SNORM", 0x9013}, {"GL_ALPHA8_SNORM", 0x9014}, {"GL_LUMINANCE8_SNORM", 0x9015}, {"GL_LUMINANCE8_ALPHA8_SNORM", 0x9016}, {"GL_INTENSITY8_SNORM", 0x9017}, {"GL_ALPHA16_SNORM", 0x9018}, {"GL_LUMINANCE16_SNORM", 0x9019}, {"GL_LUMINANCE16_ALPHA16_SNORM", 0x901A}, {"GL_INTENSITY16_SNORM", 0x901B}, {"GL_FACTOR_MIN_AMD", 0x901C}, {"GL_FACTOR_MAX_AMD", 0x901D}, {"GL_DEPTH_CLAMP_NEAR_AMD", 0x901E}, {"GL_DEPTH_CLAMP_FAR_AMD", 0x901F}, {"GL_VIDEO_BUFFER_NV", 0x9020}, {"GL_VIDEO_BUFFER_BINDING_NV", 0x9021}, {"GL_FIELD_UPPER_NV", 0x9022}, {"GL_FIELD_LOWER_NV", 0x9023}, {"GL_NUM_VIDEO_CAPTURE_STREAMS_NV", 0x9024}, {"GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV", 0x9025}, {"GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV", 0x9026}, {"GL_LAST_VIDEO_CAPTURE_STATUS_NV", 0x9027}, {"GL_VIDEO_BUFFER_PITCH_NV", 0x9028}, {"GL_VIDEO_COLOR_CONVERSION_MATRIX_NV", 0x9029}, {"GL_VIDEO_COLOR_CONVERSION_MAX_NV", 0x902A}, {"GL_VIDEO_COLOR_CONVERSION_MIN_NV", 0x902B}, {"GL_VIDEO_COLOR_CONVERSION_OFFSET_NV", 0x902C}, {"GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV", 0x902D}, {"GL_PARTIAL_SUCCESS_NV", 0x902E}, {"GL_SUCCESS_NV", 0x902F}, {"GL_FAILURE_NV", 0x9030}, {"GL_YCBYCR8_422_NV", 0x9031}, {"GL_YCBAYCR8A_4224_NV", 0x9032}, {"GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV", 0x9033}, {"GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV", 0x9034}, {"GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV", 0x9035}, {"GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV", 0x9036}, {"GL_Z4Y12Z4CB12Z4CR12_444_NV", 0x9037}, {"GL_VIDEO_CAPTURE_FRAME_WIDTH_NV", 0x9038}, {"GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV", 0x9039}, {"GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV", 0x903A}, {"GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV", 0x903B}, {"GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV", 0x903C}, {"GL_TEXTURE_COVERAGE_SAMPLES_NV", 0x9045}, {"GL_TEXTURE_COLOR_SAMPLES_NV", 0x9046}, {"GL_IMAGE_1D", 0x904C}, {"GL_IMAGE_1D_EXT", 0x904C}, {"GL_IMAGE_2D", 0x904D}, {"GL_IMAGE_2D_EXT", 0x904D}, {"GL_IMAGE_3D", 0x904E}, {"GL_IMAGE_3D_EXT", 0x904E}, {"GL_IMAGE_2D_RECT", 0x904F}, {"GL_IMAGE_2D_RECT_EXT", 0x904F}, {"GL_IMAGE_CUBE", 0x9050}, {"GL_IMAGE_CUBE_EXT", 0x9050}, {"GL_IMAGE_BUFFER", 0x9051}, {"GL_IMAGE_BUFFER_EXT", 0x9051}, {"GL_IMAGE_1D_ARRAY", 0x9052}, {"GL_IMAGE_1D_ARRAY_EXT", 0x9052}, {"GL_IMAGE_2D_ARRAY", 0x9053}, {"GL_IMAGE_2D_ARRAY_EXT", 0x9053}, {"GL_IMAGE_CUBE_MAP_ARRAY", 0x9054}, {"GL_IMAGE_CUBE_MAP_ARRAY_EXT", 0x9054}, {"GL_IMAGE_2D_MULTISAMPLE", 0x9055}, {"GL_IMAGE_2D_MULTISAMPLE_EXT", 0x9055}, {"GL_IMAGE_2D_MULTISAMPLE_ARRAY", 0x9056}, {"GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x9056}, {"GL_INT_IMAGE_1D", 0x9057}, {"GL_INT_IMAGE_1D_EXT", 0x9057}, {"GL_INT_IMAGE_2D", 0x9058}, {"GL_INT_IMAGE_2D_EXT", 0x9058}, {"GL_INT_IMAGE_3D", 0x9059}, {"GL_INT_IMAGE_3D_EXT", 0x9059}, {"GL_INT_IMAGE_2D_RECT", 0x905A}, {"GL_INT_IMAGE_2D_RECT_EXT", 0x905A}, {"GL_INT_IMAGE_CUBE", 0x905B}, {"GL_INT_IMAGE_CUBE_EXT", 0x905B}, {"GL_INT_IMAGE_BUFFER", 0x905C}, {"GL_INT_IMAGE_BUFFER_EXT", 0x905C}, {"GL_INT_IMAGE_1D_ARRAY", 0x905D}, {"GL_INT_IMAGE_1D_ARRAY_EXT", 0x905D}, {"GL_INT_IMAGE_2D_ARRAY", 0x905E}, {"GL_INT_IMAGE_2D_ARRAY_EXT", 0x905E}, {"GL_INT_IMAGE_CUBE_MAP_ARRAY", 0x905F}, {"GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x905F}, {"GL_INT_IMAGE_2D_MULTISAMPLE", 0x9060}, {"GL_INT_IMAGE_2D_MULTISAMPLE_EXT", 0x9060}, {"GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY", 0x9061}, {"GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x9061}, {"GL_UNSIGNED_INT_IMAGE_1D", 0x9062}, {"GL_UNSIGNED_INT_IMAGE_1D_EXT", 0x9062}, {"GL_UNSIGNED_INT_IMAGE_2D", 0x9063}, {"GL_UNSIGNED_INT_IMAGE_2D_EXT", 0x9063}, {"GL_UNSIGNED_INT_IMAGE_3D", 0x9064}, {"GL_UNSIGNED_INT_IMAGE_3D_EXT", 0x9064}, {"GL_UNSIGNED_INT_IMAGE_2D_RECT", 0x9065}, {"GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT", 0x9065}, {"GL_UNSIGNED_INT_IMAGE_CUBE", 0x9066}, {"GL_UNSIGNED_INT_IMAGE_CUBE_EXT", 0x9066}, {"GL_UNSIGNED_INT_IMAGE_BUFFER", 0x9067}, {"GL_UNSIGNED_INT_IMAGE_BUFFER_EXT", 0x9067}, {"GL_UNSIGNED_INT_IMAGE_1D_ARRAY", 0x9068}, {"GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT", 0x9068}, {"GL_UNSIGNED_INT_IMAGE_2D_ARRAY", 0x9069}, {"GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT", 0x9069}, {"GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY", 0x906A}, {"GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x906A}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE", 0x906B}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT", 0x906B}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY", 0x906C}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x906C}, {"GL_MAX_IMAGE_SAMPLES", 0x906D}, {"GL_MAX_IMAGE_SAMPLES_EXT", 0x906D}, {"GL_IMAGE_BINDING_FORMAT", 0x906E}, {"GL_IMAGE_BINDING_FORMAT_EXT", 0x906E}, {"GL_RGB10_A2UI", 0x906F}, {"GL_PATH_FORMAT_SVG_NV", 0x9070}, {"GL_PATH_FORMAT_PS_NV", 0x9071}, {"GL_STANDARD_FONT_NAME_NV", 0x9072}, {"GL_SYSTEM_FONT_NAME_NV", 0x9073}, {"GL_FILE_NAME_NV", 0x9074}, {"GL_PATH_STROKE_WIDTH_NV", 0x9075}, {"GL_PATH_END_CAPS_NV", 0x9076}, {"GL_PATH_INITIAL_END_CAP_NV", 0x9077}, {"GL_PATH_TERMINAL_END_CAP_NV", 0x9078}, {"GL_PATH_JOIN_STYLE_NV", 0x9079}, {"GL_PATH_MITER_LIMIT_NV", 0x907A}, {"GL_PATH_DASH_CAPS_NV", 0x907B}, {"GL_PATH_INITIAL_DASH_CAP_NV", 0x907C}, {"GL_PATH_TERMINAL_DASH_CAP_NV", 0x907D}, {"GL_PATH_DASH_OFFSET_NV", 0x907E}, {"GL_PATH_CLIENT_LENGTH_NV", 0x907F}, {"GL_PATH_FILL_MODE_NV", 0x9080}, {"GL_PATH_FILL_MASK_NV", 0x9081}, {"GL_PATH_FILL_COVER_MODE_NV", 0x9082}, {"GL_PATH_STROKE_COVER_MODE_NV", 0x9083}, {"GL_PATH_STROKE_MASK_NV", 0x9084}, {"GL_COUNT_UP_NV", 0x9088}, {"GL_COUNT_DOWN_NV", 0x9089}, {"GL_PATH_OBJECT_BOUNDING_BOX_NV", 0x908A}, {"GL_CONVEX_HULL_NV", 0x908B}, {"GL_BOUNDING_BOX_NV", 0x908D}, {"GL_TRANSLATE_X_NV", 0x908E}, {"GL_TRANSLATE_Y_NV", 0x908F}, {"GL_TRANSLATE_2D_NV", 0x9090}, {"GL_TRANSLATE_3D_NV", 0x9091}, {"GL_AFFINE_2D_NV", 0x9092}, {"GL_AFFINE_3D_NV", 0x9094}, {"GL_TRANSPOSE_AFFINE_2D_NV", 0x9096}, {"GL_TRANSPOSE_AFFINE_3D_NV", 0x9098}, {"GL_UTF8_NV", 0x909A}, {"GL_UTF16_NV", 0x909B}, {"GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV", 0x909C}, {"GL_PATH_COMMAND_COUNT_NV", 0x909D}, {"GL_PATH_COORD_COUNT_NV", 0x909E}, {"GL_PATH_DASH_ARRAY_COUNT_NV", 0x909F}, {"GL_PATH_COMPUTED_LENGTH_NV", 0x90A0}, {"GL_PATH_FILL_BOUNDING_BOX_NV", 0x90A1}, {"GL_PATH_STROKE_BOUNDING_BOX_NV", 0x90A2}, {"GL_SQUARE_NV", 0x90A3}, {"GL_ROUND_NV", 0x90A4}, {"GL_TRIANGULAR_NV", 0x90A5}, {"GL_BEVEL_NV", 0x90A6}, {"GL_MITER_REVERT_NV", 0x90A7}, {"GL_MITER_TRUNCATE_NV", 0x90A8}, {"GL_SKIP_MISSING_GLYPH_NV", 0x90A9}, {"GL_USE_MISSING_GLYPH_NV", 0x90AA}, {"GL_PATH_ERROR_POSITION_NV", 0x90AB}, {"GL_PATH_FOG_GEN_MODE_NV", 0x90AC}, {"GL_ACCUM_ADJACENT_PAIRS_NV", 0x90AD}, {"GL_ADJACENT_PAIRS_NV", 0x90AE}, {"GL_FIRST_TO_REST_NV", 0x90AF}, {"GL_PATH_GEN_MODE_NV", 0x90B0}, {"GL_PATH_GEN_COEFF_NV", 0x90B1}, {"GL_PATH_GEN_COLOR_FORMAT_NV", 0x90B2}, {"GL_PATH_GEN_COMPONENTS_NV", 0x90B3}, {"GL_PATH_DASH_OFFSET_RESET_NV", 0x90B4}, {"GL_MOVE_TO_RESETS_NV", 0x90B5}, {"GL_MOVE_TO_CONTINUES_NV", 0x90B6}, {"GL_PATH_STENCIL_FUNC_NV", 0x90B7}, {"GL_PATH_STENCIL_REF_NV", 0x90B8}, {"GL_PATH_STENCIL_VALUE_MASK_NV", 0x90B9}, {"GL_SCALED_RESOLVE_FASTEST_EXT", 0x90BA}, {"GL_SCALED_RESOLVE_NICEST_EXT", 0x90BB}, {"GL_MIN_MAP_BUFFER_ALIGNMENT", 0x90BC}, {"GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV", 0x90BD}, {"GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV", 0x90BE}, {"GL_PATH_COVER_DEPTH_FUNC_NV", 0x90BF}, {"GL_IMAGE_FORMAT_COMPATIBILITY_TYPE", 0x90C7}, {"GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE", 0x90C8}, {"GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS", 0x90C9}, {"GL_MAX_VERTEX_IMAGE_UNIFORMS", 0x90CA}, {"GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS", 0x90CB}, {"GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS", 0x90CC}, {"GL_MAX_GEOMETRY_IMAGE_UNIFORMS", 0x90CD}, {"GL_MAX_FRAGMENT_IMAGE_UNIFORMS", 0x90CE}, {"GL_MAX_COMBINED_IMAGE_UNIFORMS", 0x90CF}, {"GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV", 0x90D0}, {"GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV", 0x90D1}, {"GL_SHADER_STORAGE_BUFFER", 0x90D2}, {"GL_SHADER_STORAGE_BUFFER_BINDING", 0x90D3}, {"GL_SHADER_STORAGE_BUFFER_START", 0x90D4}, {"GL_SHADER_STORAGE_BUFFER_SIZE", 0x90D5}, {"GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS", 0x90D6}, {"GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS", 0x90D7}, {"GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", 0x90D8}, {"GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS", 0x90D9}, {"GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", 0x90DA}, {"GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS", 0x90DB}, {"GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS", 0x90DC}, {"GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS", 0x90DD}, {"GL_MAX_SHADER_STORAGE_BLOCK_SIZE", 0x90DE}, {"GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", 0x90DF}, {"GL_SYNC_X11_FENCE_EXT", 0x90E1}, {"GL_DEPTH_STENCIL_TEXTURE_MODE", 0x90EA}, {"GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB", 0x90EB}, {"GL_MAX_COMPUTE_LOCAL_INVOCATIONS", 0x90EB}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER", 0x90EC}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER", 0x90ED}, {"GL_DISPATCH_INDIRECT_BUFFER", 0x90EE}, {"GL_DISPATCH_INDIRECT_BUFFER_BINDING", 0x90EF}, {"GL_COLOR_ATTACHMENT_EXT", 0x90F0}, {"GL_MULTIVIEW_EXT", 0x90F1}, {"GL_MAX_MULTIVIEW_BUFFERS_EXT", 0x90F2}, {"GL_COMPUTE_PROGRAM_NV", 0x90FB}, {"GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV", 0x90FC}, {"GL_TEXTURE_2D_MULTISAMPLE", 0x9100}, {"GL_PROXY_TEXTURE_2D_MULTISAMPLE", 0x9101}, {"GL_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9102}, {"GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9103}, {"GL_TEXTURE_BINDING_2D_MULTISAMPLE", 0x9104}, {"GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", 0x9105}, {"GL_TEXTURE_SAMPLES", 0x9106}, {"GL_TEXTURE_FIXED_SAMPLE_LOCATIONS", 0x9107}, {"GL_SAMPLER_2D_MULTISAMPLE", 0x9108}, {"GL_INT_SAMPLER_2D_MULTISAMPLE", 0x9109}, {"GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE", 0x910A}, {"GL_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910B}, {"GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910C}, {"GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910D}, {"GL_MAX_COLOR_TEXTURE_SAMPLES", 0x910E}, {"GL_MAX_DEPTH_TEXTURE_SAMPLES", 0x910F}, {"GL_MAX_INTEGER_SAMPLES", 0x9110}, {"GL_MAX_SERVER_WAIT_TIMEOUT", 0x9111}, {"GL_MAX_SERVER_WAIT_TIMEOUT_APPLE", 0x9111}, {"GL_OBJECT_TYPE", 0x9112}, {"GL_OBJECT_TYPE_APPLE", 0x9112}, {"GL_SYNC_CONDITION", 0x9113}, {"GL_SYNC_CONDITION_APPLE", 0x9113}, {"GL_SYNC_STATUS", 0x9114}, {"GL_SYNC_STATUS_APPLE", 0x9114}, {"GL_SYNC_FLAGS", 0x9115}, {"GL_SYNC_FLAGS_APPLE", 0x9115}, {"GL_SYNC_FENCE", 0x9116}, {"GL_SYNC_FENCE_APPLE", 0x9116}, {"GL_SYNC_GPU_COMMANDS_COMPLETE", 0x9117}, {"GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE", 0x9117}, {"GL_UNSIGNALED", 0x9118}, {"GL_UNSIGNALED_APPLE", 0x9118}, {"GL_SIGNALED", 0x9119}, {"GL_SIGNALED_APPLE", 0x9119}, {"GL_ALREADY_SIGNALED", 0x911A}, {"GL_ALREADY_SIGNALED_APPLE", 0x911A}, {"GL_TIMEOUT_EXPIRED", 0x911B}, {"GL_TIMEOUT_EXPIRED_APPLE", 0x911B}, {"GL_CONDITION_SATISFIED", 0x911C}, {"GL_CONDITION_SATISFIED_APPLE", 0x911C}, {"GL_WAIT_FAILED", 0x911D}, {"GL_WAIT_FAILED_APPLE", 0x911D}, {"GL_BUFFER_ACCESS_FLAGS", 0x911F}, {"GL_BUFFER_MAP_LENGTH", 0x9120}, {"GL_BUFFER_MAP_OFFSET", 0x9121}, {"GL_MAX_VERTEX_OUTPUT_COMPONENTS", 0x9122}, {"GL_MAX_GEOMETRY_INPUT_COMPONENTS", 0x9123}, {"GL_MAX_GEOMETRY_OUTPUT_COMPONENTS", 0x9124}, {"GL_MAX_FRAGMENT_INPUT_COMPONENTS", 0x9125}, {"GL_CONTEXT_PROFILE_MASK", 0x9126}, {"GL_UNPACK_COMPRESSED_BLOCK_WIDTH", 0x9127}, {"GL_UNPACK_COMPRESSED_BLOCK_HEIGHT", 0x9128}, {"GL_UNPACK_COMPRESSED_BLOCK_DEPTH", 0x9129}, {"GL_UNPACK_COMPRESSED_BLOCK_SIZE", 0x912A}, {"GL_PACK_COMPRESSED_BLOCK_WIDTH", 0x912B}, {"GL_PACK_COMPRESSED_BLOCK_HEIGHT", 0x912C}, {"GL_PACK_COMPRESSED_BLOCK_DEPTH", 0x912D}, {"GL_PACK_COMPRESSED_BLOCK_SIZE", 0x912E}, {"GL_TEXTURE_IMMUTABLE_FORMAT", 0x912F}, {"GL_SGX_PROGRAM_BINARY_IMG", 0x9130}, {"GL_RENDERBUFFER_SAMPLES_IMG", 0x9133}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG", 0x9134}, {"GL_MAX_SAMPLES_IMG", 0x9135}, {"GL_TEXTURE_SAMPLES_IMG", 0x9136}, {"GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG", 0x9137}, {"GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG", 0x9138}, {"GL_MAX_DEBUG_MESSAGE_LENGTH", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_AMD", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_ARB", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_KHR", 0x9143}, {"GL_MAX_DEBUG_LOGGED_MESSAGES", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_AMD", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_ARB", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_KHR", 0x9144}, {"GL_DEBUG_LOGGED_MESSAGES", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_AMD", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_ARB", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_KHR", 0x9145}, {"GL_DEBUG_SEVERITY_HIGH", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_AMD", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_ARB", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_KHR", 0x9146}, {"GL_DEBUG_SEVERITY_MEDIUM", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_AMD", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_ARB", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_KHR", 0x9147}, {"GL_DEBUG_SEVERITY_LOW", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_AMD", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_ARB", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_KHR", 0x9148}, {"GL_DEBUG_CATEGORY_API_ERROR_AMD", 0x9149}, {"GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD", 0x914A}, {"GL_DEBUG_CATEGORY_DEPRECATION_AMD", 0x914B}, {"GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD", 0x914C}, {"GL_DEBUG_CATEGORY_PERFORMANCE_AMD", 0x914D}, {"GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD", 0x914E}, {"GL_DEBUG_CATEGORY_APPLICATION_AMD", 0x914F}, {"GL_DEBUG_CATEGORY_OTHER_AMD", 0x9150}, {"GL_BUFFER_OBJECT_EXT", 0x9151}, {"GL_DATA_BUFFER_AMD", 0x9151}, {"GL_PERFORMANCE_MONITOR_AMD", 0x9152}, {"GL_QUERY_OBJECT_AMD", 0x9153}, {"GL_QUERY_OBJECT_EXT", 0x9153}, {"GL_VERTEX_ARRAY_OBJECT_AMD", 0x9154}, {"GL_VERTEX_ARRAY_OBJECT_EXT", 0x9154}, {"GL_SAMPLER_OBJECT_AMD", 0x9155}, {"GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD", 0x9160}, {"GL_QUERY_BUFFER", 0x9192}, {"GL_QUERY_BUFFER_AMD", 0x9192}, {"GL_QUERY_BUFFER_BINDING", 0x9193}, {"GL_QUERY_BUFFER_BINDING_AMD", 0x9193}, {"GL_QUERY_RESULT_NO_WAIT", 0x9194}, {"GL_QUERY_RESULT_NO_WAIT_AMD", 0x9194}, {"GL_VIRTUAL_PAGE_SIZE_X_ARB", 0x9195}, {"GL_VIRTUAL_PAGE_SIZE_X_AMD", 0x9195}, {"GL_VIRTUAL_PAGE_SIZE_Y_ARB", 0x9196}, {"GL_VIRTUAL_PAGE_SIZE_Y_AMD", 0x9196}, {"GL_VIRTUAL_PAGE_SIZE_Z_ARB", 0x9197}, {"GL_VIRTUAL_PAGE_SIZE_Z_AMD", 0x9197}, {"GL_MAX_SPARSE_TEXTURE_SIZE_ARB", 0x9198}, {"GL_MAX_SPARSE_TEXTURE_SIZE_AMD", 0x9198}, {"GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB", 0x9199}, {"GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD", 0x9199}, {"GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB", 0x919A}, {"GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS", 0x919A}, {"GL_MIN_SPARSE_LEVEL_ARB", 0x919B}, {"GL_MIN_SPARSE_LEVEL_AMD", 0x919B}, {"GL_MIN_LOD_WARNING_AMD", 0x919C}, {"GL_TEXTURE_BUFFER_OFFSET", 0x919D}, {"GL_TEXTURE_BUFFER_SIZE", 0x919E}, {"GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT", 0x919F}, {"GL_VERTEX_ELEMENT_SWIZZLE_AMD", 0x91A4}, {"GL_VERTEX_ID_SWIZZLE_AMD", 0x91A5}, {"GL_TEXTURE_SPARSE_ARB", 0x91A6}, {"GL_VIRTUAL_PAGE_SIZE_INDEX_ARB", 0x91A7}, {"GL_NUM_VIRTUAL_PAGE_SIZES_ARB", 0x91A8}, {"GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB", 0x91A9}, {"GL_COMPUTE_SHADER", 0x91B9}, {"GL_MAX_COMPUTE_UNIFORM_BLOCKS", 0x91BB}, {"GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS", 0x91BC}, {"GL_MAX_COMPUTE_IMAGE_UNIFORMS", 0x91BD}, {"GL_MAX_COMPUTE_WORK_GROUP_COUNT", 0x91BE}, {"GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB", 0x91BF}, {"GL_MAX_COMPUTE_WORK_GROUP_SIZE", 0x91BF}, {"GL_UNPACK_FLIP_Y_WEBGL", 0x9240}, {"GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL", 0x9241}, {"GL_CONTEXT_LOST_WEBGL", 0x9242}, {"GL_UNPACK_COLORSPACE_CONVERSION_WEBGL", 0x9243}, {"GL_BROWSER_DEFAULT_WEBGL", 0x9244}, {"GL_SHADER_BINARY_DMP", 0x9250}, {"GL_GCCSO_SHADER_BINARY_FJ", 0x9260}, {"GL_COMPRESSED_R11_EAC", 0x9270}, {"GL_COMPRESSED_R11_EAC_OES", 0x9270}, {"GL_COMPRESSED_SIGNED_R11_EAC", 0x9271}, {"GL_COMPRESSED_SIGNED_R11_EAC_OES", 0x9271}, {"GL_COMPRESSED_RG11_EAC", 0x9272}, {"GL_COMPRESSED_RG11_EAC_OES", 0x9272}, {"GL_COMPRESSED_SIGNED_RG11_EAC", 0x9273}, {"GL_COMPRESSED_SIGNED_RG11_EAC_OES", 0x9273}, {"GL_COMPRESSED_RGB8_ETC2", 0x9274}, {"GL_COMPRESSED_RGB8_ETC2_OES", 0x9274}, {"GL_COMPRESSED_SRGB8_ETC2", 0x9275}, {"GL_COMPRESSED_SRGB8_ETC2_OES", 0x9275}, {"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9276}, {"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES", 0x9276}, {"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9277}, {"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES", 0x9277}, {"GL_COMPRESSED_RGBA8_ETC2_EAC", 0x9278}, {"GL_COMPRESSED_RGBA8_ETC2_EAC_OES", 0x9278}, {"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", 0x9279}, {"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES", 0x9279}, {"GL_BLEND_PREMULTIPLIED_SRC_NV", 0x9280}, {"GL_BLEND_OVERLAP_NV", 0x9281}, {"GL_UNCORRELATED_NV", 0x9282}, {"GL_DISJOINT_NV", 0x9283}, {"GL_CONJOINT_NV", 0x9284}, {"GL_BLEND_ADVANCED_COHERENT_NV", 0x9285}, {"GL_SRC_NV", 0x9286}, {"GL_DST_NV", 0x9287}, {"GL_SRC_OVER_NV", 0x9288}, {"GL_DST_OVER_NV", 0x9289}, {"GL_SRC_IN_NV", 0x928A}, {"GL_DST_IN_NV", 0x928B}, {"GL_SRC_OUT_NV", 0x928C}, {"GL_DST_OUT_NV", 0x928D}, {"GL_SRC_ATOP_NV", 0x928E}, {"GL_DST_ATOP_NV", 0x928F}, {"GL_PLUS_NV", 0x9291}, {"GL_PLUS_DARKER_NV", 0x9292}, {"GL_MULTIPLY_NV", 0x9294}, {"GL_SCREEN_NV", 0x9295}, {"GL_OVERLAY_NV", 0x9296}, {"GL_DARKEN_NV", 0x9297}, {"GL_LIGHTEN_NV", 0x9298}, {"GL_COLORDODGE_NV", 0x9299}, {"GL_COLORBURN_NV", 0x929A}, {"GL_HARDLIGHT_NV", 0x929B}, {"GL_SOFTLIGHT_NV", 0x929C}, {"GL_DIFFERENCE_NV", 0x929E}, {"GL_MINUS_NV", 0x929F}, {"GL_EXCLUSION_NV", 0x92A0}, {"GL_CONTRAST_NV", 0x92A1}, {"GL_INVERT_RGB_NV", 0x92A3}, {"GL_LINEARDODGE_NV", 0x92A4}, {"GL_LINEARBURN_NV", 0x92A5}, {"GL_VIVIDLIGHT_NV", 0x92A6}, {"GL_LINEARLIGHT_NV", 0x92A7}, {"GL_PINLIGHT_NV", 0x92A8}, {"GL_HARDMIX_NV", 0x92A9}, {"GL_HSL_HUE_NV", 0x92AD}, {"GL_HSL_SATURATION_NV", 0x92AE}, {"GL_HSL_COLOR_NV", 0x92AF}, {"GL_HSL_LUMINOSITY_NV", 0x92B0}, {"GL_PLUS_CLAMPED_NV", 0x92B1}, {"GL_PLUS_CLAMPED_ALPHA_NV", 0x92B2}, {"GL_MINUS_CLAMPED_NV", 0x92B3}, {"GL_INVERT_OVG_NV", 0x92B4}, {"GL_ATOMIC_COUNTER_BUFFER", 0x92C0}, {"GL_ATOMIC_COUNTER_BUFFER_BINDING", 0x92C1}, {"GL_ATOMIC_COUNTER_BUFFER_START", 0x92C2}, {"GL_ATOMIC_COUNTER_BUFFER_SIZE", 0x92C3}, {"GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE", 0x92C4}, {"GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS", 0x92C5}, {"GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES", 0x92C6}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER", 0x92C7}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER", 0x92C8}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x92C9}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER", 0x92CA}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER", 0x92CB}, {"GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS", 0x92CC}, {"GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS", 0x92CD}, {"GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS", 0x92CE}, {"GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", 0x92CF}, {"GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", 0x92D0}, {"GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", 0x92D1}, {"GL_MAX_VERTEX_ATOMIC_COUNTERS", 0x92D2}, {"GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS", 0x92D3}, {"GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS", 0x92D4}, {"GL_MAX_GEOMETRY_ATOMIC_COUNTERS", 0x92D5}, {"GL_MAX_FRAGMENT_ATOMIC_COUNTERS", 0x92D6}, {"GL_MAX_COMBINED_ATOMIC_COUNTERS", 0x92D7}, {"GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE", 0x92D8}, {"GL_ACTIVE_ATOMIC_COUNTER_BUFFERS", 0x92D9}, {"GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX", 0x92DA}, {"GL_UNSIGNED_INT_ATOMIC_COUNTER", 0x92DB}, {"GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS", 0x92DC}, {"GL_DEBUG_OUTPUT", 0x92E0}, {"GL_DEBUG_OUTPUT_KHR", 0x92E0}, {"GL_UNIFORM", 0x92E1}, {"GL_UNIFORM_BLOCK", 0x92E2}, {"GL_PROGRAM_INPUT", 0x92E3}, {"GL_PROGRAM_OUTPUT", 0x92E4}, {"GL_BUFFER_VARIABLE", 0x92E5}, {"GL_SHADER_STORAGE_BLOCK", 0x92E6}, {"GL_IS_PER_PATCH", 0x92E7}, {"GL_VERTEX_SUBROUTINE", 0x92E8}, {"GL_TESS_CONTROL_SUBROUTINE", 0x92E9}, {"GL_TESS_EVALUATION_SUBROUTINE", 0x92EA}, {"GL_GEOMETRY_SUBROUTINE", 0x92EB}, {"GL_FRAGMENT_SUBROUTINE", 0x92EC}, {"GL_COMPUTE_SUBROUTINE", 0x92ED}, {"GL_VERTEX_SUBROUTINE_UNIFORM", 0x92EE}, {"GL_TESS_CONTROL_SUBROUTINE_UNIFORM", 0x92EF}, {"GL_TESS_EVALUATION_SUBROUTINE_UNIFORM", 0x92F0}, {"GL_GEOMETRY_SUBROUTINE_UNIFORM", 0x92F1}, {"GL_FRAGMENT_SUBROUTINE_UNIFORM", 0x92F2}, {"GL_COMPUTE_SUBROUTINE_UNIFORM", 0x92F3}, {"GL_TRANSFORM_FEEDBACK_VARYING", 0x92F4}, {"GL_ACTIVE_RESOURCES", 0x92F5}, {"GL_MAX_NAME_LENGTH", 0x92F6}, {"GL_MAX_NUM_ACTIVE_VARIABLES", 0x92F7}, {"GL_MAX_NUM_COMPATIBLE_SUBROUTINES", 0x92F8}, {"GL_NAME_LENGTH", 0x92F9}, {"GL_TYPE", 0x92FA}, {"GL_ARRAY_SIZE", 0x92FB}, {"GL_OFFSET", 0x92FC}, {"GL_BLOCK_INDEX", 0x92FD}, {"GL_ARRAY_STRIDE", 0x92FE}, {"GL_MATRIX_STRIDE", 0x92FF}, {"GL_IS_ROW_MAJOR", 0x9300}, {"GL_ATOMIC_COUNTER_BUFFER_INDEX", 0x9301}, {"GL_BUFFER_BINDING", 0x9302}, {"GL_BUFFER_DATA_SIZE", 0x9303}, {"GL_NUM_ACTIVE_VARIABLES", 0x9304}, {"GL_ACTIVE_VARIABLES", 0x9305}, {"GL_REFERENCED_BY_VERTEX_SHADER", 0x9306}, {"GL_REFERENCED_BY_TESS_CONTROL_SHADER", 0x9307}, {"GL_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x9308}, {"GL_REFERENCED_BY_GEOMETRY_SHADER", 0x9309}, {"GL_REFERENCED_BY_FRAGMENT_SHADER", 0x930A}, {"GL_REFERENCED_BY_COMPUTE_SHADER", 0x930B}, {"GL_TOP_LEVEL_ARRAY_SIZE", 0x930C}, {"GL_TOP_LEVEL_ARRAY_STRIDE", 0x930D}, {"GL_LOCATION", 0x930E}, {"GL_LOCATION_INDEX", 0x930F}, {"GL_FRAMEBUFFER_DEFAULT_WIDTH", 0x9310}, {"GL_FRAMEBUFFER_DEFAULT_HEIGHT", 0x9311}, {"GL_FRAMEBUFFER_DEFAULT_LAYERS", 0x9312}, {"GL_FRAMEBUFFER_DEFAULT_SAMPLES", 0x9313}, {"GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS", 0x9314}, {"GL_MAX_FRAMEBUFFER_WIDTH", 0x9315}, {"GL_MAX_FRAMEBUFFER_HEIGHT", 0x9316}, {"GL_MAX_FRAMEBUFFER_LAYERS", 0x9317}, {"GL_MAX_FRAMEBUFFER_SAMPLES", 0x9318}, {"GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB", 0x9344}, {"GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB", 0x9345}, {"GL_LOCATION_COMPONENT", 0x934A}, {"GL_TRANSFORM_FEEDBACK_BUFFER_INDEX", 0x934B}, {"GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE", 0x934C}, {"GL_CLEAR_TEXTURE", 0x9365}, {"GL_NUM_SAMPLE_COUNTS", 0x9380}, {"GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE", 0x93A0}, {"GL_TEXTURE_USAGE_ANGLE", 0x93A2}, {"GL_FRAMEBUFFER_ATTACHMENT_ANGLE", 0x93A3}, {"GL_PACK_REVERSE_ROW_ORDER_ANGLE", 0x93A4}, {"GL_PROGRAM_BINARY_ANGLE", 0x93A6}, {"GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0}, {"GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1}, {"GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2}, {"GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3}, {"GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4}, {"GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5}, {"GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6}, {"GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7}, {"GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8}, {"GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9}, {"GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA}, {"GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB}, {"GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC}, {"GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD}, {"GL_RASTER_POSITION_UNCLIPPED_IBM", 0x19262}, {"GL_CULL_VERTEX_IBM", 103050}, {"GL_ALL_STATIC_DATA_IBM", 103060}, {"GL_STATIC_VERTEX_ARRAY_IBM", 103061}, {"GL_VERTEX_ARRAY_LIST_IBM", 103070}, {"GL_NORMAL_ARRAY_LIST_IBM", 103071}, {"GL_COLOR_ARRAY_LIST_IBM", 103072}, {"GL_INDEX_ARRAY_LIST_IBM", 103073}, {"GL_TEXTURE_COORD_ARRAY_LIST_IBM", 103074}, {"GL_EDGE_FLAG_ARRAY_LIST_IBM", 103075}, {"GL_FOG_COORDINATE_ARRAY_LIST_IBM", 103076}, {"GL_SECONDARY_COLOR_ARRAY_LIST_IBM", 103077}, {"GL_VERTEX_ARRAY_LIST_STRIDE_IBM", 103080}, {"GL_NORMAL_ARRAY_LIST_STRIDE_IBM", 103081}, {"GL_COLOR_ARRAY_LIST_STRIDE_IBM", 103082}, {"GL_INDEX_ARRAY_LIST_STRIDE_IBM", 103083}, {"GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM", 103084}, {"GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM", 103085}, {"GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM", 103086}, {"GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM", 103087}, {"GL_PREFER_DOUBLEBUFFER_HINT_PGI", 0x1A1F8}, {"GL_CONSERVE_MEMORY_HINT_PGI", 0x1A1FD}, {"GL_RECLAIM_MEMORY_HINT_PGI", 0x1A1FE}, {"GL_NATIVE_GRAPHICS_HANDLE_PGI", 0x1A202}, {"GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI", 0x1A203}, {"GL_NATIVE_GRAPHICS_END_HINT_PGI", 0x1A204}, {"GL_ALWAYS_FAST_HINT_PGI", 0x1A20C}, {"GL_ALWAYS_SOFT_HINT_PGI", 0x1A20D}, {"GL_ALLOW_DRAW_OBJ_HINT_PGI", 0x1A20E}, {"GL_ALLOW_DRAW_WIN_HINT_PGI", 0x1A20F}, {"GL_ALLOW_DRAW_FRG_HINT_PGI", 0x1A210}, {"GL_ALLOW_DRAW_MEM_HINT_PGI", 0x1A211}, {"GL_STRICT_DEPTHFUNC_HINT_PGI", 0x1A216}, {"GL_STRICT_LIGHTING_HINT_PGI", 0x1A217}, {"GL_STRICT_SCISSOR_HINT_PGI", 0x1A218}, {"GL_FULL_STIPPLE_HINT_PGI", 0x1A219}, {"GL_CLIP_NEAR_HINT_PGI", 0x1A220}, {"GL_CLIP_FAR_HINT_PGI", 0x1A221}, {"GL_WIDE_LINE_HINT_PGI", 0x1A222}, {"GL_BACK_NORMALS_HINT_PGI", 0x1A223}, {"GL_VERTEX_DATA_HINT_PGI", 0x1A22A}, {"GL_VERTEX_CONSISTENT_HINT_PGI", 0x1A22B}, {"GL_MATERIAL_SIDE_HINT_PGI", 0x1A22C}, {"GL_MAX_VERTEX_HINT_PGI", 0x1A22D}, {"GL_MAX_CLIP_PLANES_IMG", 0x0D32}, {"GL_TEXTURE_GEN_MODE_OES", 0x2500}, {"GL_CLIP_PLANE0_IMG", 0x3000}, {"GL_CLIP_PLANE1_IMG", 0x3001}, {"GL_CLIP_PLANE2_IMG", 0x3002}, {"GL_CLIP_PLANE3_IMG", 0x3003}, {"GL_CLIP_PLANE4_IMG", 0x3004}, {"GL_CLIP_PLANE5_IMG", 0x3005}, {"GL_ALPHA8_OES", 0x803C}, {"GL_LUMINANCE8_OES", 0x8040}, {"GL_LUMINANCE4_ALPHA4_OES", 0x8043}, {"GL_LUMINANCE8_ALPHA8_OES", 0x8045}, {"GL_RGB8_OES", 0x8051}, {"GL_TEXTURE_BINDING_3D_OES", 0x806A}, {"GL_BGRA_IMG", 0x80E1}, {"GL_TEXTURE_MAX_LEVEL_APPLE", 0x813D}, {"GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT", 0x8210}, {"GL_R32F_EXT", 0x822E}, {"GL_RG32F_EXT", 0x8230}, {"GL_LOSE_CONTEXT_ON_RESET_EXT", 0x8252}, {"GL_GUILTY_CONTEXT_RESET_EXT", 0x8253}, {"GL_INNOCENT_CONTEXT_RESET_EXT", 0x8254}, {"GL_UNKNOWN_CONTEXT_RESET_EXT", 0x8255}, {"GL_RESET_NOTIFICATION_STRATEGY_EXT", 0x8256}, {"GL_NO_RESET_NOTIFICATION_EXT", 0x8261}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG", 0x8365}, {"GL_VERTEX_ARRAY_BINDING_OES", 0x85B5}, {"GL_RGBA32F_EXT", 0x8814}, {"GL_RGB32F_EXT", 0x8815}, {"GL_ALPHA32F_EXT", 0x8816}, {"GL_LUMINANCE32F_EXT", 0x8818}, {"GL_LUMINANCE_ALPHA32F_EXT", 0x8819}, {"GL_ALPHA16F_EXT", 0x881C}, {"GL_LUMINANCE16F_EXT", 0x881E}, {"GL_LUMINANCE_ALPHA16F_EXT", 0x881F}, {"GL_DRAW_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_APPLE", 0x8CA6}, {"GL_READ_FRAMEBUFFER_APPLE", 0x8CA8}, {"GL_DRAW_FRAMEBUFFER_APPLE", 0x8CA9}, {"GL_READ_FRAMEBUFFER_BINDING_ANGLE", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_APPLE", 0x8CAA}, {"GL_RENDERBUFFER_SAMPLES_APPLE", 0x8CAB}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE", 0x8D56}, {"GL_MAX_SAMPLES_APPLE", 0x8D57}, {"GL_CONTEXT_ROBUST_ACCESS_EXT", 0x90F3}, {"GL_TEXTURE_IMMUTABLE_FORMAT_EXT", 0x912F}, {"GL_BGRA8_EXT", 0x93A1}, {0, 0} }; struct OpenGLEnum_u { const char *name; unsigned value; }; static OpenGLEnum_u openGLEnums_u[] = { {"GL_INVALID_INDEX", 0xFFFFFFFFu}, {0, 0} }; struct OpenGLEnum_ull { const char *name; unsigned long long value; }; static OpenGLEnum_ull openGLEnums_ull[] = { {"GL_TIMEOUT_IGNORED", 0xFFFFFFFFFFFFFFFFull}, {"GL_TIMEOUT_IGNORED_APPLE", 0xFFFFFFFFFFFFFFFFull}, {0, 0} }; /* * Add the OpenGL constants to a Python object. Return -1 and raise an * exception on error. */ int qpyopengl_add_constants(PyObject *obj) { int i, rc; PyObject *py_value; for (i = 0; openGLEnums_i[i].name; ++i) { #if PY_MAJOR_VERSION >= 3 py_value = PyLong_FromLong(openGLEnums_i[i].value); #else py_value = PyInt_FromLong(openGLEnums_i[i].value); #endif if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_i[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } for (i = 0; openGLEnums_u[i].name; ++i) { py_value = PyLong_FromUnsignedLong(openGLEnums_u[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_u[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } for (i = 0; openGLEnums_ull[i].name; ++i) { py_value = PyLong_FromUnsignedLongLong(openGLEnums_ull[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_ull[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } return 0; } #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_api.h0000644000076500000240000000516112613140040020132 0ustar philstaff00000000000000// This defines the OpenGL related API provided by this library. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_API_H #define _QPYOPENGL_API_H #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #if QT_VERSION >= 0x050100 #include #endif // Initialisation. void qpyopengl_init(); // Support for shader arrays. const GLfloat *qpyopengl_attribute_array(PyObject *values, PyObject *shader, PyObject *key, int *tsize, sipErrorState *estate); const void *qpyopengl_uniform_value_array(PyObject *values, PyObject *shader, PyObject *key, const sipTypeDef **array_type, int *array_len, int *tsize, sipErrorState *estate); #if QT_VERSION >= 0x050100 // Support for QOpenGLContext.versionFunctions(). PyObject *qpyopengl_version_functions(const QOpenGLContext *context, PyObject *py_context, const QOpenGLVersionProfile *version_profile); #endif #if QT_VERSION >= 0x050100 // Support for the OpenGL bindings. const GLvoid *qpyopengl_value_array(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings); const GLvoid *qpyopengl_value_array_cached(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings, const char *pkey, GLuint skey); PyObject *qpyopengl_from_GLint(int *eflag, const GLint *array, SIP_SSIZE_T len); PyObject *qpyopengl_from_GLuint(int *eflag, const GLuint *array, SIP_SSIZE_T len); PyObject *qpyopengl_from_GLboolean(int *eflag, const GLboolean *array, SIP_SSIZE_T len); PyObject *qpyopengl_from_GLfloat(int *eflag, const GLfloat *array, SIP_SSIZE_T len); #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) PyObject *qpyopengl_from_GLdouble(int *eflag, const GLdouble *array, SIP_SSIZE_T len); #endif #endif #endif #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_array_convertors.cpp0000644000076500000240000001004312613140040023311 0ustar philstaff00000000000000// This contains the support for converting QOpenGL arrays to Python objects. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_api.h" #if QT_VERSION >= 0x050100 // Convert a GLint array to a Python object. PyObject *qpyopengl_from_GLint(int *eflag, const GLint *array, SIP_SSIZE_T len) { if (len == 1) return SIPLong_FromLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = SIPLong_FromLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SET_ITEM(tuple, i, itm); } return tuple; } // Convert a GLuint array to a Python object. PyObject *qpyopengl_from_GLuint(int *eflag, const GLuint *array, SIP_SSIZE_T len) { if (len == 1) return PyLong_FromUnsignedLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PyLong_FromUnsignedLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SET_ITEM(tuple, i, itm); } return tuple; } // Convert a GLboolean array to a Python object. PyObject *qpyopengl_from_GLboolean(int *eflag, const GLboolean *array, SIP_SSIZE_T len) { if (len == 1) return PyBool_FromLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PyBool_FromLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SET_ITEM(tuple, i, itm); } return tuple; } // Convert a GLfloat array to a Python object. PyObject *qpyopengl_from_GLfloat(int *eflag, const GLfloat *array, SIP_SSIZE_T len) { if (len == 1) return PyFloat_FromDouble(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PyFloat_FromDouble(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SET_ITEM(tuple, i, itm); } return tuple; } #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) // Convert a GLdouble array to a Python object. PyObject *qpyopengl_from_GLdouble(int *eflag, const GLdouble *array, SIP_SSIZE_T len) { if (len == 1) return PyFloat_FromDouble(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PyFloat_FromDouble(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SET_ITEM(tuple, i, itm); } return tuple; } #endif #endif #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_attribute_array.cpp0000644000076500000240000001674512613140040023127 0ustar philstaff00000000000000// This contains the support for shader program attribute arrays. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #include #include #include #include "qpyopengl_api.h" // Forward declaratations. #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule); #else static void array_dtor(void *array); #endif // Parse a Python object as a sequence of either QVector[234]D instances or a // sequence of sequence of floats and return an array that can be passed to // QGLShaderProgram::setAttributeArray(). The array is destroyed only when the // shader is garbage collected or when replaced by another array. const GLfloat *qpyopengl_attribute_array(PyObject *values, PyObject *shader, PyObject *key, int *tsize, sipErrorState *estate) { // Check the key was created correctly. if (!key) { *estate = sipErrorFail; return 0; } // Get the dict that holds the converted arrays. PyObject *dict = ((sipSimpleWrapper *)shader)->user; if (!dict) { dict = PyDict_New(); if (!dict) { Py_DECREF(key); *estate = sipErrorFail; return 0; } ((sipSimpleWrapper *)shader)->user = dict; } // Check that values is a non-empty sequence. values = PySequence_Fast(values, "an attribute array must be a sequence"); if (!values) { Py_DECREF(key); *estate = sipErrorContinue; return 0; } SIP_SSIZE_T nr_items = PySequence_Fast_GET_SIZE(values); if (nr_items < 1) { PyErr_SetString(PyExc_TypeError, "an attribute array must have at least one element"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // The first element determines the type expected. PyObject *itm = PySequence_Fast_GET_ITEM(values, 0); const sipTypeDef *td; SIP_SSIZE_T nr_dim; if (sipCanConvertToType(itm, sipType_QVector2D, SIP_NOT_NONE)) { td = sipType_QVector2D; nr_dim = 2; } else if (sipCanConvertToType(itm, sipType_QVector3D, SIP_NOT_NONE)) { td = sipType_QVector3D; nr_dim = 3; } else if (sipCanConvertToType(itm, sipType_QVector4D, SIP_NOT_NONE)) { td = sipType_QVector4D; nr_dim = 4; } else if (PySequence_Check(itm) && (nr_dim = PySequence_Size(itm)) >= 1) { td = 0; } else { PyErr_SetString(PyExc_TypeError, "an attribute array must be a sequence of QVector2D, " "QVector3D, QVector4D, or a sequence of sequences of floats"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // Create the array that will be returned. GLfloat *array = new GLfloat[nr_items * nr_dim]; // Convert the values. GLfloat *ap = array; for (SIP_SSIZE_T i = 0; i < nr_items; ++i) { int iserr = 0; itm = PySequence_Fast_GET_ITEM(values, i); if (td) { void *cpp; cpp = sipForceConvertToType(itm, td, 0, SIP_NOT_NONE | SIP_NO_CONVERTORS, 0, &iserr); if (iserr) { PyErr_Format(PyExc_TypeError, "attribute array elements should all be '%s', not '%s'", sipTypeAsPyTypeObject(td)->tp_name, Py_TYPE(itm)->tp_name); } else if (td == sipType_QVector2D) { QVector2D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); } else if (td == sipType_QVector3D) { QVector3D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); *ap++ = v->z(); } else if (td == sipType_QVector4D) { QVector4D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); *ap++ = v->z(); *ap++ = v->w(); } } else { itm = PySequence_Fast(itm, "attribute array elements should all be sequences"); if (itm) { if (PySequence_Fast_GET_SIZE(itm) != nr_dim) { PyErr_Format(PyExc_TypeError, "attribute array elements should all be sequences " #if PY_VERSION_HEX >= 0x02050000 "of length %zd", #else "of length %d", #endif nr_dim); Py_DECREF(itm); iserr = 1; } else { PyErr_Clear(); for (SIP_SSIZE_T j = 0; j < nr_dim; ++j) *ap++ = PyFloat_AsDouble( PySequence_Fast_GET_ITEM(itm, j)); if (PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "attribute array elements should all be " "sequences of floats"); Py_DECREF(itm); iserr = 1; } } } else { iserr = 1; } } if (iserr) { Py_DECREF(key); Py_DECREF(values); delete[] array; *estate = sipErrorFail; return 0; } } Py_DECREF(values); *tsize = nr_dim; // Wrap the array in a Python object so that it won't leak. #if defined(SIP_USE_PYCAPSULE) PyObject *array_obj = PyCapsule_New(array, 0, array_dtor); #else PyObject *array_obj = PyCObject_FromVoidPtr(array, array_dtor); #endif if (!array_obj) { Py_DECREF(key); delete[] array; *estate = sipErrorFail; return 0; } int rc = PyDict_SetItem(dict, key, array_obj); Py_DECREF(key); Py_DECREF(array_obj); if (rc < 0) { *estate = sipErrorFail; return 0; } return array; } // The dtor for the saved attribute array. #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule) { delete[] reinterpret_cast(PyCapsule_GetPointer(capsule, 0)); } #else static void array_dtor(void *array) { delete[] reinterpret_cast(array); } #endif #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_data_cache.cpp0000644000076500000240000001207012613140040021745 0ustar philstaff00000000000000// This is the implementation of dataCache. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_data_cache.h" // Forward declarations. extern "C" { static int dataCache_clear(PyObject *self); static void dataCache_dealloc(PyObject *self); static int dataCache_traverse(PyObject *self, visitproc visit, void *arg); } // This implements the Python type of a data cache. PyTypeObject qpyopengl_dataCache_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtGui.dataCache"), sizeof (qpyopengl_dataCache), 0, dataCache_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC, 0, dataCache_traverse, dataCache_clear, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x03040000 0, #endif }; // The dataCache clear function. static int dataCache_clear(PyObject *self) { qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)self; Array *uncached = data_cache->uncached; if (uncached) { data_cache->uncached = 0; uncached->clear(); delete uncached; } PrimaryCache *pcache = data_cache->pcache; if (pcache) { data_cache->pcache = 0; PrimaryCache::const_iterator pit = pcache->constBegin(); while (pit != pcache->constEnd()) { delete *pit; ++pit; } delete pcache; } return 0; } // The dataCache dealloc function. static void dataCache_dealloc(PyObject *self) { PyObject_GC_UnTrack(self); dataCache_clear(self); Py_TYPE(self)->tp_free(self); } // The dataCache traverse function. static int dataCache_traverse(PyObject *self, visitproc visit, void *arg) { qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)self; int vret; Array *uncached = data_cache->uncached; if (uncached) { vret = uncached->traverse(visit, arg); if (vret != 0) return vret; } PrimaryCache *pcache = data_cache->pcache; if (pcache) { PrimaryCache::const_iterator pit = pcache->constBegin(); while (pit != pcache->constEnd()) { PrimaryCacheEntry *pce = *pit; vret = pce->skey_0.traverse(visit, arg); if (vret != 0) return vret; SecondaryCache *scache = pce->skey_n; if (scache) { SecondaryCache::const_iterator sit = scache->constBegin(); while (sit != scache->constEnd()) { vret = (*sit)->traverse(visit, arg); if (vret != 0) return vret; ++sit; } } ++pit; } } return 0; } // Create a new data cache. qpyopengl_dataCache *qpyopengl_dataCache_New() { return (qpyopengl_dataCache *)PyType_GenericAlloc( &qpyopengl_dataCache_Type, 0); } // PrimaryCacheEntry ctor. PrimaryCacheEntry::PrimaryCacheEntry() : skey_n(0) { } // PrimaryCacheEntry dtor. PrimaryCacheEntry::~PrimaryCacheEntry() { if (skey_n) { SecondaryCache::const_iterator sit = skey_n->constBegin(); while (sit != skey_n->constEnd()) { delete (*sit); ++sit; } delete skey_n; skey_n = 0; } } // Array ctor. Array::Array() : data(0) { #if PY_VERSION_HEX >= 0x02060300 buffer.obj = 0; #else buffer = 0; #endif } // Array dtor. Array::~Array() { clear(); } // Clear the array. void Array::clear() { if (data) { sipFree(data); data = 0; } #if PY_VERSION_HEX >= 0x02060300 else if (buffer.obj) { PyBuffer_Release(&buffer); } #else else if (buffer) { Py_DECREF(buffer); buffer = 0; } #endif } // Traverse the array. int Array::traverse(visitproc visit, void *arg) { PyObject *obj; #if PY_VERSION_HEX >= 0x02060300 obj = buffer.obj; #else obj = buffer; #endif return obj ? visit(obj, arg) : 0; } #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_data_cache.h0000644000076500000240000000504412613140040021415 0ustar philstaff00000000000000// This contains the definitions for the implementation of dataCache. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_DATACACHE_H #define _QPYOPENGL_DATACACHE_H #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include // The wrapper around the actual array memory. struct Array { Array(); ~Array(); // Clear the array. void clear(); // Traverse the array for the garbage collector. int traverse(visitproc visit, void *arg); // The data. If it is 0 then any data is provided by an object that // implements the buffer protocol. void *data; #if PY_VERSION_HEX >= 0x02060300 // The buffer view. The obj element is a reference to the object that // implements the buffer protocol. Py_buffer buffer; #else // A reference to the object that implements the buffer protocol. PyObject *buffer; #endif }; typedef QHash SecondaryCache; // The cache for all value arrays for a particular primary key. struct PrimaryCacheEntry { PrimaryCacheEntry(); ~PrimaryCacheEntry(); // The cache entry for a secondary key of zero. Array skey_0; // The cache entries for all non-zero secondary keys. SecondaryCache *skey_n; }; typedef QHash PrimaryCache; extern "C" { // This defines the structure of a data cache for OpenGL. typedef struct { PyObject_HEAD // The most recent uncached array, if any. Array *uncached; // The primary cache. PrimaryCache *pcache; } qpyopengl_dataCache; // This implements the Python type of a data cache. extern PyTypeObject qpyopengl_dataCache_Type; } // Create a new data cache. qpyopengl_dataCache *qpyopengl_dataCache_New(); #endif #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_init.cpp0000644000076500000240000000406512613140040020661 0ustar philstaff00000000000000// This is the initialisation support code for the QtGui module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_api.h" #include "qpyopengl_data_cache.h" // Perform any required initialisation. void qpyopengl_init() { // Initialise the OpenGL data cache type. if (PyType_Ready(&qpyopengl_dataCache_Type) < 0) Py_FatalError("PyQt5.QtGui: Failed to initialise dataCache type"); // Export the private helpers, ie. those that should not be used by // external handwritten code. #if QT_VERSION >= 0x050100 sipExportSymbol("qpyopengl_value_array", (void *)qpyopengl_value_array); sipExportSymbol("qpyopengl_value_array_cached", (void *)qpyopengl_value_array_cached); sipExportSymbol("qpyopengl_from_GLint", (void *)qpyopengl_from_GLint); sipExportSymbol("qpyopengl_from_GLuint", (void *)qpyopengl_from_GLuint); sipExportSymbol("qpyopengl_from_GLboolean", (void *)qpyopengl_from_GLboolean); sipExportSymbol("qpyopengl_from_GLfloat", (void *)qpyopengl_from_GLfloat); #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) sipExportSymbol("qpyopengl_from_GLdouble", (void *)qpyopengl_from_GLdouble); #endif #endif } #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_uniform_value_array.cpp0000644000076500000240000003160412613140040023766 0ustar philstaff00000000000000// This contains the support for shader program uniform value arrays. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #include #include #include #include #include #include #include #include #include #include #include #include #include "qpyopengl_api.h" // Forward declaratations. static void delete_array(void *array, const sipTypeDef *td); #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule); #else static void array_dtor(void *array, void *td); #endif // Parse a Python object as a sequence of either QVector[234]D or // QMatrix[234]x[234] instances, or a sequence of sequence of floats and return // an array that can be passed to QOpenGLShaderProgram::setUniformValueArray(). // The array is destroyed only when the shader is garbage collected or when // replaced by another array. const void *qpyopengl_uniform_value_array(PyObject *values, PyObject *shader, PyObject *key, const sipTypeDef **array_type, int *array_len, int *tsize, sipErrorState *estate) { // Check the key was created correctly. if (!key) { *estate = sipErrorFail; return 0; } // Get the dict that holds the converted arrays. PyObject *dict = ((sipSimpleWrapper *)shader)->user; if (!dict) { dict = PyDict_New(); if (!dict) { Py_DECREF(key); *estate = sipErrorFail; return 0; } ((sipSimpleWrapper *)shader)->user = dict; } // Check that values is a non-empty sequence. values = PySequence_Fast(values, "a uniform value array must be a sequence"); if (!values) { Py_DECREF(key); *estate = sipErrorContinue; return 0; } SIP_SSIZE_T nr_items = PySequence_Fast_GET_SIZE(values); if (nr_items < 1) { PyErr_SetString(PyExc_TypeError, "a uniform value array must have at least one element"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // The first element determines the type expected. PyObject *itm = PySequence_Fast_GET_ITEM(values, 0); const sipTypeDef *td; SIP_SSIZE_T nr_dim = 0; void *array; if (sipCanConvertToType(itm, sipType_QVector2D, SIP_NOT_NONE)) { td = sipType_QVector2D; array = new QVector2D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QVector3D, SIP_NOT_NONE)) { td = sipType_QVector3D; array = new QVector3D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QVector4D, SIP_NOT_NONE)) { td = sipType_QVector4D; array = new QVector4D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x2, SIP_NOT_NONE)) { td = sipType_QMatrix2x2; array = new QMatrix2x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x3, SIP_NOT_NONE)) { td = sipType_QMatrix2x3; array = new QMatrix2x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x4, SIP_NOT_NONE)) { td = sipType_QMatrix2x4; array = new QMatrix2x4[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x2, SIP_NOT_NONE)) { td = sipType_QMatrix3x2; array = new QMatrix3x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x3, SIP_NOT_NONE)) { td = sipType_QMatrix3x3; array = new QMatrix3x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x4, SIP_NOT_NONE)) { td = sipType_QMatrix3x4; array = new QMatrix3x4[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x2, SIP_NOT_NONE)) { td = sipType_QMatrix4x2; array = new QMatrix4x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x3, SIP_NOT_NONE)) { td = sipType_QMatrix4x3; array = new QMatrix4x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x4, SIP_NOT_NONE)) { td = sipType_QMatrix4x4; array = new QMatrix4x4[nr_items]; } else if (PySequence_Check(itm) && (nr_dim = PySequence_Size(itm)) >= 1) { td = 0; array = new GLfloat[nr_items * nr_dim]; } else { PyErr_SetString(PyExc_TypeError, "a uniform value array must be a sequence of QVector2D, " "QVector3D, QVector4D, QMatrix2x2, QMatrix2x3, QMatrix2x4, " "QMatrix3x2, QMatrix3x3, QMatrix3x4, QMatrix4x2, QMatrix4x3, " "QMatrix4x4, or a sequence of sequences of floats"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // Convert the values. for (SIP_SSIZE_T i = 0; i < nr_items; ++i) { int iserr = 0; itm = PySequence_Fast_GET_ITEM(values, i); if (td) { void *cpp; cpp = sipForceConvertToType(itm, td, 0, SIP_NOT_NONE | SIP_NO_CONVERTORS, 0, &iserr); if (iserr) { PyErr_Format(PyExc_TypeError, "uniform value array elements should all be '%s', not " "'%s'", sipTypeAsPyTypeObject(td)->tp_name, Py_TYPE(itm)->tp_name); } else if (td == sipType_QVector2D) { QVector2D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QVector3D) { QVector3D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QVector4D) { QVector4D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x2) { QMatrix2x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x3) { QMatrix2x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x4) { QMatrix2x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x2) { QMatrix3x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x3) { QMatrix3x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x4) { QMatrix3x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x2) { QMatrix4x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x3) { QMatrix4x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x4) { QMatrix4x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } } else { itm = PySequence_Fast(itm, "uniform value array elements should all be sequences"); if (itm) { if (PySequence_Fast_GET_SIZE(itm) != nr_dim) { PyErr_Format(PyExc_TypeError, "uniform value array elements should all be " "sequences of length " #if PY_VERSION_HEX >= 0x02050000 "%zd", #else "%d", #endif nr_dim); Py_DECREF(itm); iserr = 1; } else { GLfloat *ap = reinterpret_cast(array); PyErr_Clear(); for (SIP_SSIZE_T j = 0; j < nr_dim; ++j) *ap++ = PyFloat_AsDouble( PySequence_Fast_GET_ITEM(itm, j)); if (PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "uniform value array elements should all be " "sequences of floats"); Py_DECREF(itm); iserr = 1; } } } else { iserr = 1; } } if (iserr) { Py_DECREF(key); Py_DECREF(values); delete_array(array, td); *estate = sipErrorFail; return 0; } } Py_DECREF(values); // Wrap the array in a Python object so that it won't leak. #if defined(SIP_USE_PYCAPSULE) PyObject *array_obj = PyCapsule_New(array, 0, array_dtor); if (array_obj && PyCapsule_SetContext(array_obj, const_cast(td)) != 0) { Py_DECREF(array_obj); array_obj = 0; } #else PyObject *array_obj = PyCObject_FromVoidPtrAndDesc(array, const_cast(td), array_dtor); #endif if (!array_obj) { Py_DECREF(key); delete_array(array, td); *estate = sipErrorFail; return 0; } int rc = PyDict_SetItem(dict, key, array_obj); Py_DECREF(key); Py_DECREF(array_obj); if (rc < 0) { *estate = sipErrorFail; return 0; } *array_type = td; *array_len = nr_items; *tsize = nr_dim; return array; } // Do the actual work of deleting the array. static void delete_array(void *array, const sipTypeDef *td) { if (td == sipType_QVector2D) delete[] reinterpret_cast(array); else if (td == sipType_QVector3D) delete[] reinterpret_cast(array); else if (td == sipType_QVector4D) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x4) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x4) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x4) delete[] reinterpret_cast(array); else delete[] reinterpret_cast(array); } // The dtor for the saved array. #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule) { delete_array(PyCapsule_GetPointer(capsule, 0), reinterpret_cast( PyCapsule_GetContext(capsule))); } #else static void array_dtor(void *array, void *td) { delete_array(array, reinterpret_cast(td)); } #endif #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_value_array.cpp0000644000076500000240000002522112613140040022225 0ustar philstaff00000000000000// This contains the support for QOpenGL value arrays. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #if QT_VERSION >= 0x050100 #include "qpyopengl_api.h" #include "qpyopengl_data_cache.h" // Forward declarations. static qpyopengl_dataCache *get_cache(PyObject *bindings); static void *convert_values(Array *cache, PyObject *values, GLenum gl_type, sipErrorState *estate); static void convert_byte(PyObject *itm, void *array, SIP_SSIZE_T i); static void convert_ubyte(PyObject *itm, void *array, SIP_SSIZE_T i); static void convert_short(PyObject *itm, void *array, SIP_SSIZE_T i); static void convert_ushort(PyObject *itm, void *array, SIP_SSIZE_T i); static void convert_int(PyObject *itm, void *array, SIP_SSIZE_T i); static void convert_uint(PyObject *itm, void *array, SIP_SSIZE_T i); static void convert_float(PyObject *itm, void *array, SIP_SSIZE_T i); #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) static void convert_double(PyObject *itm, void *array, SIP_SSIZE_T i); #endif // Get an array of OpenGL fundamental types from a sequence or an object that // implements a compatible buffer. const GLvoid *qpyopengl_value_array(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings) { // Handle the trivial None case first. 0 has a special meaning to some // OpenGL calls so we allow it for all. If this becomes a problem then we // can add a new variant of this function that handles None differently. if (values == Py_None) return 0; qpyopengl_dataCache *data_cache = get_cache(bindings); if (!data_cache) { *estate = sipErrorFail; return 0; } // Get an empty wrapper for the array. if (data_cache->uncached) data_cache->uncached->clear(); else data_cache->uncached = new Array; return convert_values(data_cache->uncached, values, gl_type, estate); } // Get an array of OpenGL fundamental types from a sequence or an object that // implements a compatible buffer. Cache the array so that it persists until a // similar call. const GLvoid *qpyopengl_value_array_cached(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings, const char *pkey, GLuint skey) { // Handle the trivial byte offset case first. PyErr_Clear(); void *data = PyLong_AsVoidPtr(values); if (!PyErr_Occurred()) return data; qpyopengl_dataCache *data_cache = get_cache(bindings); if (!data_cache) { *estate = sipErrorFail; return 0; } if (!data_cache->pcache) data_cache->pcache = new PrimaryCache; // Get an empty wrapper for the array. PrimaryCacheEntry *pce = (*data_cache->pcache)[pkey]; if (!pce) { pce = new PrimaryCacheEntry; data_cache->pcache->insert(pkey, pce); } Array *array; if (skey == 0) { array = &pce->skey_0; } else { if (!pce->skey_n) pce->skey_n = new SecondaryCache; array = (*pce->skey_n)[skey]; if (!array) { array = new Array; pce->skey_n->insert(skey, array); } } array->clear(); return convert_values(array, values, gl_type, estate); } // Get the cache for a set of bindings. static qpyopengl_dataCache *get_cache(PyObject *bindings) { // Create the cache if it doesn't already exist. qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)((sipSimpleWrapper *)bindings)->user; if (!data_cache) { data_cache = qpyopengl_dataCache_New(); if (data_cache) ((sipSimpleWrapper *)bindings)->user = (PyObject *)data_cache; } return data_cache; } // Convert the Python values to a raw array. static void *convert_values(Array *array, PyObject *values, GLenum gl_type, sipErrorState *estate) { #if PY_VERSION_HEX >= 0x02060300 if (PyObject_GetBuffer(values, &array->buffer, PyBUF_FORMAT) != -1) { // Check the buffer is compatible with what we need. if (array->buffer.ndim != 1) { PyErr_SetString(PyExc_TypeError, "1-dimensional buffer required"); *estate = sipErrorFail; return 0; } GLenum array_type; switch (*array->buffer.format) { case 'b': array_type = GL_BYTE; break; case 'B': array_type = GL_UNSIGNED_BYTE; break; case 'h': array_type = GL_SHORT; break; case 'H': array_type = GL_UNSIGNED_SHORT; break; case 'i': array_type = GL_INT; break; case 'I': array_type = GL_UNSIGNED_INT; break; case 'f': array_type = GL_FLOAT; break; #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) case 'd': array_type = GL_DOUBLE; break; #endif default: PyErr_Format(PyExc_TypeError, "unsupported buffer type '%s'", array->buffer.format); *estate = sipErrorFail; return 0; } if (array_type != gl_type) { PyErr_SetString(PyExc_TypeError, "the buffer type is not the same as the array type"); *estate = sipErrorFail; return 0; } return array->buffer.buf; } #else PyBufferProcs *bf = Py_TYPE(values)->tp_as_buffer; if (bf && bf->bf_getreadbuffer && bf->bf_getsegcount) { if (bf->bf_getsegcount(values, 0) != 1) { PyErr_SetString(PyExc_TypeError, "single-segment buffer object expected"); *estate = sipErrorFail; return 0; } if (bf->bf_getreadbuffer(values, 0, reinterpret_cast(&array)) < 0) { *estate = sipErrorFail; return 0; } Py_INCREF(values); array->buffer = values; return array; } #endif PyObject *seq = PySequence_Fast(values, "array must be a sequence or a buffer"); if (!seq) { *estate = sipErrorContinue; return 0; } SIP_SSIZE_T nr_items = PySequence_Fast_GET_SIZE(seq); if (nr_items < 1) { Py_DECREF(seq); PyErr_SetString(PyExc_TypeError, "array must have at least one element"); *estate = sipErrorFail; return 0; } void (*convertor)(PyObject *, void *, SIP_SSIZE_T); size_t element_size; switch (gl_type) { case GL_BYTE: convertor = convert_byte; element_size = sizeof (GLbyte); break; case GL_UNSIGNED_BYTE: convertor = convert_ubyte; element_size = sizeof (GLubyte); break; case GL_SHORT: convertor = convert_short; element_size = sizeof (GLshort); break; case GL_UNSIGNED_SHORT: convertor = convert_ushort; element_size = sizeof (GLushort); break; case GL_INT: convertor = convert_int; element_size = sizeof (GLint); break; case GL_UNSIGNED_INT: convertor = convert_uint; element_size = sizeof (GLuint); break; case GL_FLOAT: convertor = convert_float; element_size = sizeof (GLfloat); break; #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) #if GL_DOUBLE != GL_FLOAT case GL_DOUBLE: convertor = convert_double; element_size = sizeof (GLdouble); break; #endif #endif default: Py_DECREF(seq); PyErr_SetString(PyExc_TypeError, "unsupported GL element type"); *estate = sipErrorFail; return 0; } void *data = sipMalloc(nr_items * element_size); if (!data) { Py_DECREF(seq); *estate = sipErrorFail; return 0; } for (SIP_SSIZE_T i = 0; i < nr_items; ++i) { PyErr_Clear(); convertor(PySequence_Fast_GET_ITEM(seq, i), data, i); if (PyErr_Occurred()) { sipFree(data); Py_DECREF(seq); *estate = sipErrorFail; return 0; } } Py_DECREF(seq); array->data = data; return data; } #if PY_MAJOR_VERSION >= 3 #define Long_AsUnsignedLong PyLong_AsUnsignedLongMask #else #define Long_AsUnsignedLong PyInt_AsUnsignedLongMask #endif // Convert a Python object to a GLbyte. static void convert_byte(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = SIPLong_AsLong(itm); } // Convert a Python object to a GLubyte. static void convert_ubyte(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = Long_AsUnsignedLong(itm); } // Convert a Python object to a GLshort. static void convert_short(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = SIPLong_AsLong(itm); } // Convert a Python object to a GLushort. static void convert_ushort(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = Long_AsUnsignedLong(itm); } // Convert a Python object to a GLint. static void convert_int(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = SIPLong_AsLong(itm); } // Convert a Python object to a GLuint. static void convert_uint(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = Long_AsUnsignedLong(itm); } // Convert a Python object to a GLfloat. static void convert_float(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = PyFloat_AsDouble(itm); } #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) // Convert a Python object to a GLdouble. static void convert_double(PyObject *itm, void *array, SIP_SSIZE_T i) { reinterpret_cast(array)[i] = PyFloat_AsDouble(itm); } #endif #endif #endif PyQt-gpl-5.5.1/qpy/QtGui/qpyopengl_version_functions.cpp0000644000076500000240000001002612613140040023465 0ustar philstaff00000000000000// This contains the support for QOpenGLContext.versionFunctions(). // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #if QT_VERSION >= 0x050100 #include #include "qpyopengl_api.h" // Forward declarations. int qpyopengl_add_constants(PyObject *obj); // The cache of type objects corresponding to each set of functions. static QList funcs_types; PyObject *qpyopengl_version_functions(const QOpenGLContext *context, PyObject *py_context, const QOpenGLVersionProfile *version_profile) { // Get a valid version profile. QOpenGLVersionProfile vp; if (version_profile && version_profile->isValid()) vp = *version_profile; else vp = QOpenGLVersionProfile(context->format()); // Create the functions. QAbstractOpenGLFunctions *funcs = context->versionFunctions(vp); if (!funcs) { Py_INCREF(Py_None); return Py_None; } // Qt doesn't allow us to introspect the functions to find which set we // have, so work out what it should be based on the version profile. #if defined(QT_OPENGL_ES_2) QByteArray name("QOpenGLFunctions_ES2"); #else QByteArray name("QOpenGLFunctions_"); QPair version = vp.version(); name.append(QByteArray::number(version.first)); name.append('_'); name.append(QByteArray::number(version.second)); if (vp.hasProfiles()) { switch (vp.profile()) { case QSurfaceFormat::CoreProfile: name.append("_Core"); break; case QSurfaceFormat::CompatibilityProfile: name.append("_Compatibility"); break; default: ; } } #endif // See if we already have the type object. PyTypeObject *funcs_type = 0; for (int i = 0; i < funcs_types.count(); ++i) { PyTypeObject *ft = funcs_types.at(i); if (name == ft->tp_name) { funcs_type = ft; break; } } if (!funcs_type) { // Get the type object. QByteArray module_name("PyQt5._"); module_name.append(name); PyObject *module = PyImport_ImportModule(module_name.constData()); if (!module) return 0; PyObject *obj = PyObject_GetAttrString(module, name.constData()); Py_DECREF(module); if (!obj) return 0; // Sanity check the type object. if (PyObject_IsSubclass(obj, (PyObject *)sipTypeAsPyTypeObject(sipType_QAbstractOpenGLFunctions)) <= 0) { Py_DECREF(obj); PyErr_Format(PyExc_TypeError, "%s.%s has an unexpected type", module_name.constData(), name.constData()); return 0; } // Populate the type with the OpenGL constants. if (qpyopengl_add_constants(obj) < 0) { Py_DECREF(obj); return 0; } // Cache the type object. funcs_type = (PyTypeObject *)obj; funcs_types.append(funcs_type); } // Ownership is with the context. return sipConvertFromNewType(funcs, sipTypeFromPyTypeObject(funcs_type), py_context); } #endif #endif PyQt-gpl-5.5.1/qpy/QtMultimedia/0000755000076500000240000000000012613140040016455 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtNetwork/0000755000076500000240000000000012613140040016014 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtPrintSupport/0000755000076500000240000000000012613140040017054 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtQml/0000755000076500000240000000000012613140040015114 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_api.h0000644000076500000240000000437512613140040017452 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQML_API_H #define _QPYQML_API_H #include #include #include #include #include // Support for qmlRegisterType(). int qpyqml_register_type(PyTypeObject *py_type, PyTypeObject *attached); int qpyqml_register_library_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, int revision, PyTypeObject *attached); int qpyqml_register_singleton_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *type_name, PyObject *factory); int qpyqml_register_uncreatable_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, const QString &reason, int revision); // Support for qmlAttachedPropertiesObject(). QObject *qpyqml_find_proxy_for(QObject *proxied); // Support for QJSValue. int qpyqml_canConvertTo_QJSValue(PyObject *py); int qpyqml_convertTo_QJSValue(PyObject *py, PyObject *transferObj, QJSValue **cpp, int *isErr); // Python exception handling. typedef void (*pyqt5_qtqml_err_print_t)(); extern pyqt5_qtqml_err_print_t pyqt5_qtqml_err_print; // Other imports from QtCore. typedef const QMetaObject *(*pyqt5_qtqml_get_qmetaobject_t)(PyTypeObject *); extern pyqt5_qtqml_get_qmetaobject_t pyqt5_qtqml_get_qmetaobject; // Initialisation. void qpyqml_post_init(PyObject *module_dict); #endif PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_listdata.cpp0000644000076500000240000000330512613140040021031 0ustar philstaff00000000000000// This is the implementation of the ListData class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqml_listdata.h" // Create a null instance. ListData::ListData(PyObject *py_type_, PyObject *py_obj_, PyObject *py_list_, PyObject *py_append_, PyObject *py_count_, PyObject *py_at_, PyObject *py_clear_, QObject *parent) : QObject(parent), py_type(py_type_), py_obj(py_obj_), py_list(py_list_), py_append(py_append_), py_count(py_count_), py_at(py_at_), py_clear(py_clear_) { Py_XINCREF(py_type); Py_XINCREF(py_obj); Py_XINCREF(py_list); Py_XINCREF(py_append); Py_XINCREF(py_count); Py_XINCREF(py_at); Py_XINCREF(py_clear); } // Destroy the data. ListData::~ListData() { Py_XDECREF(py_type); Py_XDECREF(py_obj); Py_XDECREF(py_list); Py_XDECREF(py_append); Py_XDECREF(py_count); Py_XDECREF(py_at); Py_XDECREF(py_clear); } PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_listdata.h0000644000076500000240000000262712613140040020504 0ustar philstaff00000000000000// This is the definition of the ListData class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQML_LISTDATA_H #define _QPYQML_LISTDATA_H #include #include class ListData : public QObject { Q_OBJECT public: ListData(PyObject *py_type, PyObject *py_obj, PyObject *py_list, PyObject *py_append, PyObject *py_count, PyObject *py_at, PyObject *py_clear, QObject *parent); ~ListData(); PyObject *py_type; PyObject *py_obj; PyObject *py_list; PyObject *py_append; PyObject *py_count; PyObject *py_at; PyObject *py_clear; }; #endif PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_post_init.cpp0000644000076500000240000000506412613140040021240 0ustar philstaff00000000000000// This is the initialisation support code for the QtQml module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_api.h" #include "qpyqmllistproperty.h" #include "qpyqmllistpropertywrapper.h" #include "qpyqmlobject.h" #include "sipAPIQtQml.h" // Imports from QtCore. pyqt5_qtqml_err_print_t pyqt5_qtqml_err_print; // Perform any required initialisation. void qpyqml_post_init(PyObject *module_dict) { // QtCore imports. pyqt5_qtqml_err_print = (pyqt5_qtqml_err_print_t)sipImportSymbol( "pyqt5_err_print"); // Initialise the QQmlListProperty type. #if PY_MAJOR_VERSION >= 3 qpyqml_QQmlListProperty_Type.tp_base = &PyUnicode_Type; #else qpyqml_QQmlListProperty_Type.tp_base = &PyString_Type; #endif if (PyType_Ready(&qpyqml_QQmlListProperty_Type) < 0) Py_FatalError("PyQt5.QtQml: Failed to initialise QQmlListProperty type"); // Create the only instance and add it to the module dictionary. PyObject *inst = PyObject_CallFunction( (PyObject *)&qpyqml_QQmlListProperty_Type, const_cast("s"), "QQmlListProperty"); if (!inst) Py_FatalError("PyQt5.QtQml: Failed to create QQmlListProperty instance"); if (PyDict_SetItemString(module_dict, "QQmlListProperty", inst) < 0) Py_FatalError("PyQt5.QtQml: Failed to set QQmlListProperty instance"); // Initialise the private QQmlListPropertyWrapper type. if (PyType_Ready(&qpyqml_QQmlListPropertyWrapper_Type) < 0) Py_FatalError("PyQt5.QtQml: Failed to initialise QQmlListPropertyWrapper type"); // Register the proxy resolver. if (sipRegisterProxyResolver(sipType_QObject, QPyQmlObjectProxy::resolveProxy) < 0) Py_FatalError("PyQt5.QtQml: Failed to register proxy resolver"); } PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_qjsvalue.cpp0000644000076500000240000000577612613140040021074 0ustar philstaff00000000000000// This is the support for QJSValue. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_api.h" #include "sipAPIQtQml.h" // See if a Python object can be converted to a QJSValue. int qpyqml_canConvertTo_QJSValue(PyObject *py) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJSValue_SpecialValue))) return 1; if (PyBool_Check(py)) return 1; if (PyLong_Check(py)) return 1; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) return 1; #endif if (PyFloat_Check(py)) return 1; if (sipCanConvertToType(py, sipType_QString, 0)) return 1; return sipCanConvertToType(py, sipType_QJSValue, SIP_NO_CONVERTORS); } // Convert a Python object to a QJSValue. int qpyqml_convertTo_QJSValue(PyObject *py, PyObject *transferObj, QJSValue **cpp, int *isErr) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJSValue_SpecialValue))) { *cpp = new QJSValue((QJSValue::SpecialValue)SIPLong_AsLong(py)); return sipGetState(transferObj); } if (PyBool_Check(py)) { *cpp = new QJSValue(py == Py_True); return sipGetState(transferObj); } if (PyLong_Check(py)) { *cpp = new QJSValue((int)PyLong_AsLong(py)); return sipGetState(transferObj); } #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) { *cpp = new QJSValue((int)PyInt_AS_LONG(py)); return sipGetState(transferObj); } #endif if (PyFloat_Check(py)) { *cpp = new QJSValue((double)PyFloat_AS_DOUBLE(py)); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QString, 0)) { int state; QString *qs = reinterpret_cast(sipConvertToType(py, sipType_QString, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(qs, sipType_QString, state); return 0; } *cpp = new QJSValue(*qs); sipReleaseType(qs, sipType_QString, state); return sipGetState(transferObj); } *cpp = reinterpret_cast(sipConvertToType(py, sipType_QJSValue, transferObj, SIP_NO_CONVERTORS, 0, isErr)); return 0; } PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_register_singleton_type.cpp0000644000076500000240000001214512613140040024175 0ustar philstaff00000000000000// This contains the main implementation of qmlRegisterSingletonType. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpyqml_api.h" #include "qpyqmlsingletonobject.h" #include "sipAPIQtQml.h" // Forward declarations. static QQmlPrivate::RegisterSingletonType *init_type(PyTypeObject *py_type, PyObject *factory); static int register_type(QQmlPrivate::RegisterSingletonType *rt); // The number of types that can be registered. const int NrOfTypes = 30; // The registration data for the proxy types. static QQmlPrivate::RegisterSingletonType proxy_types[NrOfTypes]; // Register a singleton Python type. int qpyqml_register_singleton_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *type_name, PyObject *factory) { // Initialise the registration data structure. QQmlPrivate::RegisterSingletonType *rt = init_type(py_type, factory); if (!rt) return -1; rt->uri = uri; rt->versionMajor = major; rt->versionMinor = minor; rt->typeName = type_name; return register_type(rt); } // Register the proxy type with QML. static int register_type(QQmlPrivate::RegisterSingletonType *rt) { int type_id = QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, rt); if (type_id < 0) { PyErr_SetString(PyExc_RuntimeError, "unable to register singleton type with QML"); return -1; } return type_id; } #define QPYQML_SINGLETON_TYPE_INIT(n) \ case n##U: \ QPyQmlSingletonObject##n::staticMetaObject = *mo; \ QPyQmlSingletonObject##n::factory = factory; \ rt->qobjectApi = QPyQmlSingletonObject##n::objectFactory; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name.constData()); \ rt->instanceMetaObject = mo; \ break // Return a pointer to the initialised registration structure for a type. static QQmlPrivate::RegisterSingletonType *init_type(PyTypeObject *py_type, PyObject *factory) { // Check the type is derived from QObject. if (!PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QObject))) { PyErr_SetString(PyExc_TypeError, "type being registered must be a sub-type of QObject"); return 0; } // Get the type's number and check there aren't too many. int type_nr = QPyQmlSingletonObjectProxy::addType(); if (type_nr >= NrOfTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d singleton types may be registered with QML", NrOfTypes); return 0; } QQmlPrivate::RegisterSingletonType *rt = &proxy_types[type_nr]; const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject(py_type); QByteArray ptr_name(py_type->tp_name); ptr_name.append('*'); // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_SINGLETON_TYPE_INIT(0); QPYQML_SINGLETON_TYPE_INIT(1); QPYQML_SINGLETON_TYPE_INIT(2); QPYQML_SINGLETON_TYPE_INIT(3); QPYQML_SINGLETON_TYPE_INIT(4); QPYQML_SINGLETON_TYPE_INIT(5); QPYQML_SINGLETON_TYPE_INIT(6); QPYQML_SINGLETON_TYPE_INIT(7); QPYQML_SINGLETON_TYPE_INIT(8); QPYQML_SINGLETON_TYPE_INIT(9); QPYQML_SINGLETON_TYPE_INIT(10); QPYQML_SINGLETON_TYPE_INIT(11); QPYQML_SINGLETON_TYPE_INIT(12); QPYQML_SINGLETON_TYPE_INIT(13); QPYQML_SINGLETON_TYPE_INIT(14); QPYQML_SINGLETON_TYPE_INIT(15); QPYQML_SINGLETON_TYPE_INIT(16); QPYQML_SINGLETON_TYPE_INIT(17); QPYQML_SINGLETON_TYPE_INIT(18); QPYQML_SINGLETON_TYPE_INIT(19); QPYQML_SINGLETON_TYPE_INIT(20); QPYQML_SINGLETON_TYPE_INIT(21); QPYQML_SINGLETON_TYPE_INIT(22); QPYQML_SINGLETON_TYPE_INIT(23); QPYQML_SINGLETON_TYPE_INIT(24); QPYQML_SINGLETON_TYPE_INIT(25); QPYQML_SINGLETON_TYPE_INIT(26); QPYQML_SINGLETON_TYPE_INIT(27); QPYQML_SINGLETON_TYPE_INIT(28); QPYQML_SINGLETON_TYPE_INIT(29); } // Initialise the remaining members. rt->version = 2; rt->uri = 0; rt->versionMajor = 0; rt->versionMinor = 0; rt->typeName = 0; rt->scriptApi = 0; rt->revision = 0; Py_INCREF(factory); return rt; } PyQt-gpl-5.5.1/qpy/QtQml/qpyqml_register_type.cpp0000644000076500000240000002670412613140040022121 0ustar philstaff00000000000000// This contains the main implementation of qmlRegisterType. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include #include "qpyqml_api.h" #include "qpyqmlobject.h" #include "sipAPIQtQml.h" class QQmlPropertyValueInterceptor; // Forward declarations. static QQmlPrivate::RegisterType *init_type(PyTypeObject *py_type, bool ctor, int revision, PyTypeObject *attached); static void complete_init(QQmlPrivate::RegisterType *rt, int revision); static int register_type(QQmlPrivate::RegisterType *rt); // The number of types that can be registered. const int NrOfTypes = 60; // The registration data for the proxy types. static QQmlPrivate::RegisterType proxy_types[NrOfTypes]; // Register a Python type. int qpyqml_register_type(PyTypeObject *py_type, PyTypeObject *attached) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, false, -1, attached); if (!rt) return -1; return register_type(rt); } // Register a library Python type. int qpyqml_register_library_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, int revision, PyTypeObject *attached) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, true, revision, attached); if (!rt) return -1; rt->uri = uri; rt->versionMajor = major; rt->versionMinor = minor; rt->elementName = qml_name; return register_type(rt); } // Register an uncreatable library Python type. int qpyqml_register_uncreatable_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, const QString &reason, int revision) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, false, revision, 0); if (!rt) return -1; rt->noCreationReason = reason; rt->uri = uri; rt->versionMajor = major; rt->versionMinor = minor; rt->elementName = qml_name; return register_type(rt); } // Register the proxy type with QML. static int register_type(QQmlPrivate::RegisterType *rt) { int type_id = QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, rt); if (type_id < 0) { PyErr_SetString(PyExc_RuntimeError, "unable to register type with QML"); return -1; } return type_id; } #define QPYQML_TYPE_INIT(n) \ case n##U: \ QPyQmlObject##n::staticMetaObject = *mo; \ QPyQmlObject##n::attachedPyType = attached; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name); \ rt->listId = qRegisterNormalizedMetaType >(list_name); \ rt->objectSize = ctor ? sizeof(QPyQmlObject##n) : 0; \ if (ctor) rt->create = QQmlPrivate::createInto; else rt->create = 0; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = attached_mo ? QPyQmlObject##n::attachedProperties : 0; \ rt->attachedPropertiesMetaObject = attached_mo; \ rt->parserStatusCast = is_parser_status ? QQmlPrivate::StaticCastSelector::cast() : -1; \ rt->valueSourceCast = is_value_source ? QQmlPrivate::StaticCastSelector::cast() : -1; \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // This is needed for GCC v4.6 and earlier. #define QPYQML_TYPE_IMPL(n) \ template void QQmlPrivate::createInto(void *) QPYQML_TYPE_IMPL(0); QPYQML_TYPE_IMPL(1); QPYQML_TYPE_IMPL(2); QPYQML_TYPE_IMPL(3); QPYQML_TYPE_IMPL(4); QPYQML_TYPE_IMPL(5); QPYQML_TYPE_IMPL(6); QPYQML_TYPE_IMPL(7); QPYQML_TYPE_IMPL(8); QPYQML_TYPE_IMPL(9); QPYQML_TYPE_IMPL(10); QPYQML_TYPE_IMPL(11); QPYQML_TYPE_IMPL(12); QPYQML_TYPE_IMPL(13); QPYQML_TYPE_IMPL(14); QPYQML_TYPE_IMPL(15); QPYQML_TYPE_IMPL(16); QPYQML_TYPE_IMPL(17); QPYQML_TYPE_IMPL(18); QPYQML_TYPE_IMPL(19); QPYQML_TYPE_IMPL(20); QPYQML_TYPE_IMPL(21); QPYQML_TYPE_IMPL(22); QPYQML_TYPE_IMPL(23); QPYQML_TYPE_IMPL(24); QPYQML_TYPE_IMPL(25); QPYQML_TYPE_IMPL(26); QPYQML_TYPE_IMPL(27); QPYQML_TYPE_IMPL(28); QPYQML_TYPE_IMPL(29); QPYQML_TYPE_IMPL(30); QPYQML_TYPE_IMPL(31); QPYQML_TYPE_IMPL(32); QPYQML_TYPE_IMPL(33); QPYQML_TYPE_IMPL(34); QPYQML_TYPE_IMPL(35); QPYQML_TYPE_IMPL(36); QPYQML_TYPE_IMPL(37); QPYQML_TYPE_IMPL(38); QPYQML_TYPE_IMPL(39); QPYQML_TYPE_IMPL(40); QPYQML_TYPE_IMPL(41); QPYQML_TYPE_IMPL(42); QPYQML_TYPE_IMPL(43); QPYQML_TYPE_IMPL(44); QPYQML_TYPE_IMPL(45); QPYQML_TYPE_IMPL(46); QPYQML_TYPE_IMPL(47); QPYQML_TYPE_IMPL(48); QPYQML_TYPE_IMPL(49); QPYQML_TYPE_IMPL(50); QPYQML_TYPE_IMPL(51); QPYQML_TYPE_IMPL(52); QPYQML_TYPE_IMPL(53); QPYQML_TYPE_IMPL(54); QPYQML_TYPE_IMPL(55); QPYQML_TYPE_IMPL(56); QPYQML_TYPE_IMPL(57); QPYQML_TYPE_IMPL(58); QPYQML_TYPE_IMPL(59); // Return a pointer to the initialised registration structure for a type. static QQmlPrivate::RegisterType *init_type(PyTypeObject *py_type, bool ctor, int revision, PyTypeObject *attached) { PyTypeObject *qobject_type = sipTypeAsPyTypeObject(sipType_QObject); // Check the type is derived from QObject and get its meta-object. if (!PyType_IsSubtype(py_type, qobject_type)) { PyErr_SetString(PyExc_TypeError, "type being registered must be a sub-type of QObject"); return 0; } const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject(py_type); // See if the type is a parser status. bool is_parser_status = PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQmlParserStatus)); // See if the type is a property value source. bool is_value_source = PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQmlPropertyValueSource)); // Check any attached type is derived from QObject and get its meta-object. const QMetaObject *attached_mo; if (attached) { if (!PyType_IsSubtype(attached, qobject_type)) { PyErr_SetString(PyExc_TypeError, "attached properties type must be a sub-type of QObject"); return 0; } attached_mo = pyqt5_qtqml_get_qmetaobject(attached); Py_INCREF((PyObject *)attached); } else { attached_mo = 0; } QByteArray ptr_name(py_type->tp_name); ptr_name.append('*'); QByteArray list_name(py_type->tp_name); list_name.prepend("QQmlListProperty<"); list_name.append('>'); QQmlPrivate::RegisterType *rt; // See if we have the QQuickItem registation helper from the QtQuick // module. Check each time because it could be imported at any point. typedef sipErrorState (*QQuickItemRegisterFn)(PyTypeObject *, const QMetaObject *, const QByteArray &, const QByteArray &, QQmlPrivate::RegisterType **); static QQuickItemRegisterFn qquickitem_register = 0; if (!qquickitem_register) qquickitem_register = (QQuickItemRegisterFn)sipImportSymbol( "qtquick_register_item"); if (qquickitem_register) { sipErrorState estate = qquickitem_register(py_type, mo, ptr_name, list_name, &rt); if (estate == sipErrorFail) return 0; if (estate == sipErrorNone) { complete_init(rt, revision); return rt; } } // Get the type's number and check there aren't too many. int type_nr = QPyQmlObjectProxy::addType(py_type); if (type_nr >= NrOfTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d types may be registered with QML", NrOfTypes); return 0; } rt = &proxy_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_TYPE_INIT(0); QPYQML_TYPE_INIT(1); QPYQML_TYPE_INIT(2); QPYQML_TYPE_INIT(3); QPYQML_TYPE_INIT(4); QPYQML_TYPE_INIT(5); QPYQML_TYPE_INIT(6); QPYQML_TYPE_INIT(7); QPYQML_TYPE_INIT(8); QPYQML_TYPE_INIT(9); QPYQML_TYPE_INIT(10); QPYQML_TYPE_INIT(11); QPYQML_TYPE_INIT(12); QPYQML_TYPE_INIT(13); QPYQML_TYPE_INIT(14); QPYQML_TYPE_INIT(15); QPYQML_TYPE_INIT(16); QPYQML_TYPE_INIT(17); QPYQML_TYPE_INIT(18); QPYQML_TYPE_INIT(19); QPYQML_TYPE_INIT(20); QPYQML_TYPE_INIT(21); QPYQML_TYPE_INIT(22); QPYQML_TYPE_INIT(23); QPYQML_TYPE_INIT(24); QPYQML_TYPE_INIT(25); QPYQML_TYPE_INIT(26); QPYQML_TYPE_INIT(27); QPYQML_TYPE_INIT(28); QPYQML_TYPE_INIT(29); QPYQML_TYPE_INIT(30); QPYQML_TYPE_INIT(31); QPYQML_TYPE_INIT(32); QPYQML_TYPE_INIT(33); QPYQML_TYPE_INIT(34); QPYQML_TYPE_INIT(35); QPYQML_TYPE_INIT(36); QPYQML_TYPE_INIT(37); QPYQML_TYPE_INIT(38); QPYQML_TYPE_INIT(39); QPYQML_TYPE_INIT(40); QPYQML_TYPE_INIT(41); QPYQML_TYPE_INIT(42); QPYQML_TYPE_INIT(43); QPYQML_TYPE_INIT(44); QPYQML_TYPE_INIT(45); QPYQML_TYPE_INIT(46); QPYQML_TYPE_INIT(47); QPYQML_TYPE_INIT(48); QPYQML_TYPE_INIT(49); QPYQML_TYPE_INIT(50); QPYQML_TYPE_INIT(51); QPYQML_TYPE_INIT(52); QPYQML_TYPE_INIT(53); QPYQML_TYPE_INIT(54); QPYQML_TYPE_INIT(55); QPYQML_TYPE_INIT(56); QPYQML_TYPE_INIT(57); QPYQML_TYPE_INIT(58); QPYQML_TYPE_INIT(59); } complete_init(rt, revision); return rt; } // Complete the initialisation of a type registration structure. static void complete_init(QQmlPrivate::RegisterType *rt, int revision) { if (revision < 0) { rt->version = 0; rt->revision = 0; } else { rt->version = 1; rt->revision = revision; } rt->uri = 0; rt->versionMajor = 0; rt->versionMinor = 0; rt->elementName = 0; rt->extensionObjectCreate = 0; rt->extensionMetaObject = 0; rt->customParser = 0; } // Return the proxy that created an object. This is called with the GIL. QObject *qpyqml_find_proxy_for(QObject *proxied) { QSetIterator it(QPyQmlObjectProxy::proxies); while (it.hasNext()) { QPyQmlObjectProxy *proxy = static_cast(it.next()); if (proxy->proxied.data() == proxied) return proxy; } PyErr_Format(PyExc_TypeError, "QObject instance at %p was not created from QML", proxied); return 0; } PyQt-gpl-5.5.1/qpy/QtQml/qpyqmllistproperty.cpp0000644000076500000240000002247412613140040021655 0ustar philstaff00000000000000// This is the implementation of the QQmlListProperty class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpyqmllistproperty.h" #include "qpyqmllistpropertywrapper.h" #include "qpyqml_listdata.h" #include "sipAPIQtQml.h" // Forward declarations. extern "C" { static PyObject *QQmlListProperty_call(PyObject *, PyObject *args, PyObject *kwds); } static void list_append(QQmlListProperty *p, QObject *el); static QObject *list_at(QQmlListProperty *p, int idx); static void list_clear(QQmlListProperty *p); static int list_count(QQmlListProperty *p); static void bad_result(PyObject *py_res, const char *context); // The type's doc-string. PyDoc_STRVAR(QQmlListProperty_doc, "QQmlListProperty(type, object, list)\n" "QQmlListProperty(type, object, append=None, count=None, at=None, clear=None)"); // This implements the QQmlListProperty Python type. It is a sub-type of the // standard string type that is callable. PyTypeObject qpyqml_QQmlListProperty_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtQml.QQmlListProperty"), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, QQmlListProperty_call, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE| #if PY_MAJOR_VERSION >= 3 Py_TPFLAGS_UNICODE_SUBCLASS, #else Py_TPFLAGS_STRING_SUBCLASS, #endif QQmlListProperty_doc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x03040000 0, #endif }; // The QQmlListProperty init function. static PyObject *QQmlListProperty_call(PyObject *, PyObject *args, PyObject *kwds) { PyObject *py_type, *py_obj, *py_list = 0, *py_append = 0, *py_count = 0, *py_at = 0, *py_clear = 0; static const char *kwlist[] = {"type", "object", "list", "append", "count", "at", "clear", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O!OOOO:QQmlListProperty", const_cast(kwlist), &py_type, &py_obj, &PyList_Type, &py_list, &py_append, &py_count, &py_at, &py_clear)) return 0; // Check the type object. if (!PyObject_TypeCheck(py_type, &PyType_Type)) { PyErr_Format(PyExc_TypeError, "type argument must be of type 'type', not '%s'", Py_TYPE(py_type)->tp_name); return 0; } // Get the C++ QObject. int iserr = 0; QObject *obj = reinterpret_cast(sipForceConvertToType(py_obj, sipType_QObject, 0, SIP_NOT_NONE|SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) { PyErr_Format(PyExc_TypeError, "object argument must be of type 'QObject', not '%s'", Py_TYPE(py_obj)->tp_name); return 0; } // If we have a list then check we have no callables. if (py_list && (py_append || py_count || py_at || py_clear)) { PyErr_SetString(PyExc_TypeError, "cannot specify a list and a list function"); return 0; } // Get a list wrapper with the C++ QObject as its parent. ListData *list_data = new ListData(py_type, py_obj, py_list, py_append, py_count, py_at, py_clear, obj); // Create the C++ QQmlListProperty with the list data as the data. // Note that we will create a new one each time the property getter is // called. Also note that the callables will not be reached by the garbage // collector. QQmlListProperty *prop = new QQmlListProperty(obj, list_data, ((py_list || py_append) ? list_append : 0), ((py_list || py_count) ? list_count : 0), ((py_list || py_at) ? list_at : 0), ((py_list || py_clear) ? list_clear : 0)); // Convert it to a Python object. PyObject *prop_obj = qpyqml_QQmlListPropertyWrapper_New(prop, py_list); if (!prop_obj) { delete prop; return 0; } return prop_obj; } // Append to the list. static void list_append(QQmlListProperty *p, QObject *el) { SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); bool ok = false; // Convert the element to a Python object and check the type. PyObject *py_el = sipConvertFromType(el, sipType_QObject, 0); if (py_el) { if (!PyObject_TypeCheck(py_el, (PyTypeObject *)ldata->py_type)) { PyErr_Format(PyExc_TypeError, "list element must be of type '%s', not '%s'", ((PyTypeObject *)ldata->py_type)->tp_name, Py_TYPE(py_el)->tp_name); } else if (ldata->py_list) { if (PyList_Append(ldata->py_list, py_el) == 0) ok = true; } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_append, ldata->py_obj, py_el, NULL); if (py_res) { if (py_res == Py_None) ok = true; else bad_result(py_res, "append"); Py_DECREF(py_res); } } Py_DECREF(py_el); } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Get the length of the list. static int list_count(QQmlListProperty *p) { int res = -1; SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); if (ldata->py_list) { res = PyList_Size(ldata->py_list); } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_count, ldata->py_obj, NULL); if (py_res) { PyErr_Clear(); res = SIPLong_AsLong(py_res); if (PyErr_Occurred()) { bad_result(py_res, "count"); res = -1; } Py_DECREF(py_res); } } if (res < 0) { pyqt5_qtqml_err_print(); res = 0; } SIP_UNBLOCK_THREADS return res; } // Get an item from the list. static QObject *list_at(QQmlListProperty *p, int idx) { QObject *qobj = 0; SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); if (ldata->py_list) { PyObject *py_el = PyList_GetItem(ldata->py_list, idx); if (py_el) { int iserr = 0; qobj = reinterpret_cast(sipForceConvertToType(py_el, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); } } else { // Call the function. PyObject *py_res = PyObject_CallFunction(ldata->py_at, const_cast("Ni"), ldata->py_obj, idx); if (py_res) { int iserr = 0; qobj = reinterpret_cast(sipForceConvertToType(py_res, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) bad_result(py_res, "at"); Py_DECREF(py_res); } } if (!qobj) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS return qobj; } // Clear the list. static void list_clear(QQmlListProperty *p) { SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); bool ok = false; if (ldata->py_list) { if (PyList_SetSlice(ldata->py_list, 0, PyList_Size(ldata->py_list), NULL) == 0) ok = true; } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_clear, ldata->py_obj, NULL); if (py_res) { if (py_res == Py_None) ok = true; else bad_result(py_res, "clear"); Py_DECREF(py_res); } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *py_res, const char *context) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from %s function: %S", context, py_res); #else PyObject *py_res_s = PyObject_Str(py_res); if (py_res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from %s function: %s", context, PyString_AsString(py_res_s)); Py_DECREF(py_res_s); } #endif } PyQt-gpl-5.5.1/qpy/QtQml/qpyqmllistproperty.h0000644000076500000240000000212612613140040021312 0ustar philstaff00000000000000// This is the definition of the QQmlListProperty class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLLISTPROPERTY_H #define _QPYQMLLISTPROPERTY_H #include extern "C" { // This implements the QQmlListProperty type. extern PyTypeObject qpyqml_QQmlListProperty_Type; } #endif PyQt-gpl-5.5.1/qpy/QtQml/qpyqmllistpropertywrapper.cpp0000644000076500000240000002117012613140040023246 0ustar philstaff00000000000000// This contains the implementation of the QQmlListPropertyWrapper type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyqmllistpropertywrapper.h" // Forward declarations. extern "C" { static void QQmlListPropertyWrapper_dealloc(PyObject *self); static SIP_SSIZE_T QQmlListPropertyWrapper_sq_length(PyObject *self); static PyObject *QQmlListPropertyWrapper_sq_concat(PyObject *self, PyObject *other); static PyObject *QQmlListPropertyWrapper_sq_repeat(PyObject *self, SIP_SSIZE_T count); static PyObject *QQmlListPropertyWrapper_sq_item(PyObject *self, SIP_SSIZE_T i); #if PY_MAJOR_VERSION < 3 static PyObject *QQmlListPropertyWrapper_sq_slice(PyObject *self, SIP_SSIZE_T i1, SIP_SSIZE_T i2); #endif static int QQmlListPropertyWrapper_sq_ass_item(PyObject *self, SIP_SSIZE_T i, PyObject *value); #if PY_MAJOR_VERSION < 3 static int QQmlListPropertyWrapper_sq_ass_slice(PyObject *self, SIP_SSIZE_T i1, SIP_SSIZE_T i2, PyObject *value); #endif static int QQmlListPropertyWrapper_sq_contains(PyObject *self, PyObject *value); static PyObject *QQmlListPropertyWrapper_sq_inplace_concat(PyObject *self, PyObject *other); static PyObject *QQmlListPropertyWrapper_sq_inplace_repeat(PyObject *self, SIP_SSIZE_T count); } static PyObject *get_list(PyObject *self); // The sequence methods. PySequenceMethods QQmlListPropertyWrapper_as_sequence = { QQmlListPropertyWrapper_sq_length, QQmlListPropertyWrapper_sq_concat, QQmlListPropertyWrapper_sq_repeat, QQmlListPropertyWrapper_sq_item, #if PY_MAJOR_VERSION < 3 QQmlListPropertyWrapper_sq_slice, #else 0, #endif QQmlListPropertyWrapper_sq_ass_item, #if PY_MAJOR_VERSION < 3 QQmlListPropertyWrapper_sq_ass_slice, #else 0, #endif QQmlListPropertyWrapper_sq_contains, QQmlListPropertyWrapper_sq_inplace_concat, QQmlListPropertyWrapper_sq_inplace_repeat, }; // The QQmlListPropertyWrapper type object. PyTypeObject qpyqml_QQmlListPropertyWrapper_Type = { PyVarObject_HEAD_INIT(NULL, 0) SIP_TPNAME_CAST("PyQt5.QtQml.QQmlListPropertyWrapper"), /* tp_name */ sizeof (qpyqml_QQmlListPropertyWrapper), /* tp_basicsize */ 0, /* tp_itemsize */ QQmlListPropertyWrapper_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ &QQmlListPropertyWrapper_as_sequence, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; // Create the wrapper object. PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty *prop, PyObject *list) { qpyqml_QQmlListPropertyWrapper *obj; obj = PyObject_NEW(qpyqml_QQmlListPropertyWrapper, &qpyqml_QQmlListPropertyWrapper_Type); if (!obj) return 0; obj->qml_list_property = prop; obj->py_list = list; return (PyObject *)obj; } // The type dealloc slot. static void QQmlListPropertyWrapper_dealloc(PyObject *self) { delete ((qpyqml_QQmlListPropertyWrapper *)self)->qml_list_property; PyObject_DEL(self); } // Return the underlying list. Return 0 and raise an exception if there wasn't // one. static PyObject *get_list(PyObject *self) { PyObject *list = ((qpyqml_QQmlListPropertyWrapper *)self)->py_list; if (!list) { PyErr_SetString(PyExc_TypeError, "there is no object bound to QQmlListProperty"); return 0; } // Make sure it has sequence methods. if (!list->ob_type->tp_as_sequence) { PyErr_SetString(PyExc_TypeError, "object bound to QQmlListProperty is not a sequence"); return 0; } return list; } // The proxy sequence methods. static SIP_SSIZE_T QQmlListPropertyWrapper_sq_length(PyObject *self) { PyObject *list = get_list(self); if (!list) return -1; return list->ob_type->tp_as_sequence->sq_length(list); } static PyObject *QQmlListPropertyWrapper_sq_concat(PyObject *self, PyObject *other) { PyObject *list = get_list(self); if (!list) return 0; return list->ob_type->tp_as_sequence->sq_concat(list, other); } static PyObject *QQmlListPropertyWrapper_sq_repeat(PyObject *self, SIP_SSIZE_T count) { PyObject *list = get_list(self); if (!list) return 0; return list->ob_type->tp_as_sequence->sq_repeat(list, count); } static PyObject *QQmlListPropertyWrapper_sq_item(PyObject *self, SIP_SSIZE_T i) { PyObject *list = get_list(self); if (!list) return 0; return list->ob_type->tp_as_sequence->sq_item(list, i); } #if PY_MAJOR_VERSION < 3 static PyObject *QQmlListPropertyWrapper_sq_slice(PyObject *self, SIP_SSIZE_T i1, SIP_SSIZE_T i2) { PyObject *list = get_list(self); if (!list) return 0; return list->ob_type->tp_as_sequence->sq_slice(list, i1, i2); } #endif static int QQmlListPropertyWrapper_sq_ass_item(PyObject *self, SIP_SSIZE_T i, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return list->ob_type->tp_as_sequence->sq_ass_item(list, i, value); } #if PY_MAJOR_VERSION < 3 static int QQmlListPropertyWrapper_sq_ass_slice(PyObject *self, SIP_SSIZE_T i1, SIP_SSIZE_T i2, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return list->ob_type->tp_as_sequence->sq_ass_slice(list, i1, i2, value); } #endif static int QQmlListPropertyWrapper_sq_contains(PyObject *self, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return list->ob_type->tp_as_sequence->sq_contains(list, value); } static PyObject *QQmlListPropertyWrapper_sq_inplace_concat(PyObject *self, PyObject *other) { PyObject *list = get_list(self); if (!list) return 0; return list->ob_type->tp_as_sequence->sq_inplace_concat(list, other); } static PyObject *QQmlListPropertyWrapper_sq_inplace_repeat(PyObject *self, SIP_SSIZE_T count) { PyObject *list = get_list(self); if (!list) return 0; return list->ob_type->tp_as_sequence->sq_inplace_repeat(list, count); } PyQt-gpl-5.5.1/qpy/QtQml/qpyqmllistpropertywrapper.h0000644000076500000240000000341712613140040022717 0ustar philstaff00000000000000// This defines the interfaces for the QQmlListPropertyWrapper type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLLISTPROPERTYWRAPPER_H #define _QPYQMLLISTPROPERTYWRAPPER_H #include #include #include extern "C" { // This defines the structure of a QQmlListPropertyWrapper object. This serves // two purposes. Firstly it wraps a pointer to a QQmlListProperty like a // capsule would. Secondly it acts as a proxy for the underlying Python list. typedef struct _qpyqml_QQmlListPropertyWrapper { PyObject_HEAD // The QML list property that is being wrapped. It is owned by the // wrapper. QQmlListProperty *qml_list_property; // A borrowed reference to the underlying Python list. PyObject *py_list; } qpyqml_QQmlListPropertyWrapper; extern PyTypeObject qpyqml_QQmlListPropertyWrapper_Type; } PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty *prop, PyObject *list); #endif PyQt-gpl-5.5.1/qpy/QtQml/qpyqmlobject.cpp0000644000076500000240000004303712613140040020341 0ustar philstaff00000000000000// This is the implementation of the QPyQmlObject classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlobject.h" #include "sipAPIQtQml.h" // Forward declarations. static void bad_result(PyObject *res, const char *context); // The list of registered Python types. QList QPyQmlObjectProxy::pyqt_types; // The set of proxies in existence. QSet QPyQmlObjectProxy::proxies; // The ctor. QPyQmlObjectProxy::QPyQmlObjectProxy(QObject *parent) : QAbstractItemModel(parent), proxied_model(0), py_proxied(0) { proxies.insert(this); } // The dtor. QPyQmlObjectProxy::~QPyQmlObjectProxy() { proxies.remove(this); SIP_BLOCK_THREADS Py_XDECREF(py_proxied); SIP_UNBLOCK_THREADS if (!proxied.isNull()) delete proxied.data(); } // Called when QML has connected to a signal of the proxied object. void QPyQmlObjectProxy::connectNotify(const QMetaMethod &sig) { QByteArray signal_sig = signalSignature(sig); // The signal has actually been connected to the proxy, so do the same from // the proxied object to the proxy. QObject::connect(proxied, signal_sig.constData(), this, signal_sig.constData()); } // Called when QML has disconnected to a signal of the proxied object. void QPyQmlObjectProxy::disconnectNotify(const QMetaMethod &sig) { QByteArray signal_sig = signalSignature(sig); // The signal has actually been disconnected from the proxy, so do the same // from the proxied object to the proxy. QObject::disconnect(proxied, signal_sig.constData(), this, signal_sig.constData()); } // Return what SIGNAL() would return for a method. QByteArray QPyQmlObjectProxy::signalSignature(const QMetaMethod &signal) { QByteArray signal_sig(signal.methodSignature()); signal_sig.prepend('2'); return signal_sig; } // Delegate to the real object. const QMetaObject *QPyQmlObjectProxy::metaObject() const { return !proxied.isNull() ? proxied->metaObject() : QObject::metaObject(); } // Delegate to the real object. void *QPyQmlObjectProxy::qt_metacast(const char *_clname) { return !proxied.isNull() ? proxied->qt_metacast(_clname) : 0; } // Delegate to the real object. int QPyQmlObjectProxy::qt_metacall(QMetaObject::Call call, int idx, void **args) { if (idx < 0) return idx; if (proxied.isNull()) return QObject::qt_metacall(call, idx, args); const QMetaObject *proxied_mo = proxied->metaObject(); // See if a signal defined in the proxied object might be being invoked. // Note that we used to use sender() but this proved unreliable. if (call == QMetaObject::InvokeMetaMethod && idx >= proxied_mo->methodOffset() && proxied_mo->method(idx).methodType() == QMetaMethod::Signal) { // Relay the signal to QML. QMetaObject::activate(this, proxied_mo, idx - proxied_mo->methodOffset(), args); return idx - (proxied_mo->methodCount() - proxied_mo->methodOffset()); } return proxied->qt_metacall(call, idx, args); } // Add a new Python type and return its number. int QPyQmlObjectProxy::addType(PyTypeObject *type) { pyqt_types.append(type); return pyqt_types.size() - 1; } // Create the Python instance. void QPyQmlObjectProxy::createPyObject(QObject *parent) { SIP_BLOCK_THREADS py_proxied = sipCallMethod(NULL, (PyObject *)pyqt_types.at(typeNr()), "D", parent, sipType_QObject, NULL); if (py_proxied) { proxied = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_proxied)); proxied_model = qobject_cast(proxied.data()); } else { pyqt5_qtqml_err_print(); } SIP_UNBLOCK_THREADS } // Resolve any proxy. void *QPyQmlObjectProxy::resolveProxy(void *proxy) { QObject *qobj = reinterpret_cast(proxy); // We have to search for proxy instances because we have subverted the // usual sub-class detection mechanism. if (proxies.contains(qobj)) return static_cast(qobj)->proxied.data(); // It's not a proxy. return proxy; } // Create an instance of the attached properties. QObject *QPyQmlObjectProxy::createAttachedProperties(PyTypeObject *py_type, QObject *parent) { QObject *qobj = 0; SIP_BLOCK_THREADS PyObject *obj = sipCallMethod(NULL, (PyObject *)py_type, "D", parent, sipType_QObject, NULL); if (obj) { qobj = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)obj)); // It should always have a parent, but just in case... if (parent) Py_DECREF(obj); } else { pyqt5_qtqml_err_print(); } SIP_UNBLOCK_THREADS return qobj; } // Invoked when a class parse begins. void QPyQmlObjectProxy::pyClassBegin() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) #if PY_MAJOR_VERSION >= 3 method_name = PyUnicode_FromString("classBegin"); #else method_name = PyString_FromString("classBegin"); #endif if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "classBegin()"); Py_DECREF(res); } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked when a component parse completes. void QPyQmlObjectProxy::pyComponentComplete() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) #if PY_MAJOR_VERSION >= 3 method_name = PyUnicode_FromString("componentComplete"); #else method_name = PyString_FromString("componentComplete"); #endif if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "componentComplete()"); Py_DECREF(res); } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked to set the target property of a property value source. void QPyQmlObjectProxy::pySetTarget(const QQmlProperty &target) { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) #if PY_MAJOR_VERSION >= 3 method_name = PyUnicode_FromString("setTarget"); #else method_name = PyString_FromString("setTarget"); #endif if (method_name) { QQmlProperty *target_heap = new QQmlProperty(target); PyObject *py_target = sipConvertFromNewType(target_heap, sipType_QQmlProperty, 0); if (!py_target) { delete target_heap; } else { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, py_target, NULL); Py_DECREF(py_target); if (res) { if (res == Py_None) ok = true; else bad_result(res, "setTarget()"); Py_DECREF(res); } } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *res, const char *context) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from %s: %S", context, res); #else PyObject *res_s = PyObject_Str(res); if (res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from %s: %s", context, PyString_AsString(res_s)); Py_DECREF(res_s); } #endif } // The proxy type implementations. #define QPYQML_PROXY_IMPL(n) \ QPyQmlObject##n::QPyQmlObject##n(QObject *parent) : QPyQmlObjectProxy(parent) \ { \ createPyObject(parent); \ } \ QObject *QPyQmlObject##n::attachedProperties(QObject *parent) \ { \ return createAttachedProperties(attachedPyType, parent); \ } \ void QPyQmlObject##n::classBegin() \ { \ pyClassBegin(); \ } \ void QPyQmlObject##n::componentComplete() \ { \ pyComponentComplete(); \ } \ void QPyQmlObject##n::setTarget(const QQmlProperty &target) \ { \ pySetTarget(target); \ } \ QMetaObject QPyQmlObject##n::staticMetaObject; \ PyTypeObject *QPyQmlObject##n::attachedPyType QPYQML_PROXY_IMPL(0); QPYQML_PROXY_IMPL(1); QPYQML_PROXY_IMPL(2); QPYQML_PROXY_IMPL(3); QPYQML_PROXY_IMPL(4); QPYQML_PROXY_IMPL(5); QPYQML_PROXY_IMPL(6); QPYQML_PROXY_IMPL(7); QPYQML_PROXY_IMPL(8); QPYQML_PROXY_IMPL(9); QPYQML_PROXY_IMPL(10); QPYQML_PROXY_IMPL(11); QPYQML_PROXY_IMPL(12); QPYQML_PROXY_IMPL(13); QPYQML_PROXY_IMPL(14); QPYQML_PROXY_IMPL(15); QPYQML_PROXY_IMPL(16); QPYQML_PROXY_IMPL(17); QPYQML_PROXY_IMPL(18); QPYQML_PROXY_IMPL(19); QPYQML_PROXY_IMPL(20); QPYQML_PROXY_IMPL(21); QPYQML_PROXY_IMPL(22); QPYQML_PROXY_IMPL(23); QPYQML_PROXY_IMPL(24); QPYQML_PROXY_IMPL(25); QPYQML_PROXY_IMPL(26); QPYQML_PROXY_IMPL(27); QPYQML_PROXY_IMPL(28); QPYQML_PROXY_IMPL(29); QPYQML_PROXY_IMPL(30); QPYQML_PROXY_IMPL(31); QPYQML_PROXY_IMPL(32); QPYQML_PROXY_IMPL(33); QPYQML_PROXY_IMPL(34); QPYQML_PROXY_IMPL(35); QPYQML_PROXY_IMPL(36); QPYQML_PROXY_IMPL(37); QPYQML_PROXY_IMPL(38); QPYQML_PROXY_IMPL(39); QPYQML_PROXY_IMPL(40); QPYQML_PROXY_IMPL(41); QPYQML_PROXY_IMPL(42); QPYQML_PROXY_IMPL(43); QPYQML_PROXY_IMPL(44); QPYQML_PROXY_IMPL(45); QPYQML_PROXY_IMPL(46); QPYQML_PROXY_IMPL(47); QPYQML_PROXY_IMPL(48); QPYQML_PROXY_IMPL(49); QPYQML_PROXY_IMPL(50); QPYQML_PROXY_IMPL(51); QPYQML_PROXY_IMPL(52); QPYQML_PROXY_IMPL(53); QPYQML_PROXY_IMPL(54); QPYQML_PROXY_IMPL(55); QPYQML_PROXY_IMPL(56); QPYQML_PROXY_IMPL(57); QPYQML_PROXY_IMPL(58); QPYQML_PROXY_IMPL(59); // The reimplementations of the QAbstractItemModel virtuals. QModelIndex QPyQmlObjectProxy::index(int row, int column, const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->index(row, column, parent); return QModelIndex(); } QModelIndex QPyQmlObjectProxy::parent(const QModelIndex &child) const { if (!proxied.isNull() && proxied_model) return proxied_model->parent(child); return QModelIndex(); } QModelIndex QPyQmlObjectProxy::sibling(int row, int column, const QModelIndex &idx) const { if (!proxied.isNull() && proxied_model) return proxied_model->sibling(row, column, idx); return QModelIndex(); } int QPyQmlObjectProxy::rowCount(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->rowCount(parent); return 0; } int QPyQmlObjectProxy::columnCount(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->columnCount(parent); return 0; } bool QPyQmlObjectProxy::hasChildren(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->hasChildren(parent); return false; } QVariant QPyQmlObjectProxy::data(const QModelIndex &index, int role) const { if (!proxied.isNull() && proxied_model) return proxied_model->data(index, role); return QVariant(); } bool QPyQmlObjectProxy::setData(const QModelIndex &index, const QVariant &value, int role) { if (!proxied.isNull() && proxied_model) return proxied_model->setData(index, value, role); return false; } QVariant QPyQmlObjectProxy::headerData(int section, Qt::Orientation orientation, int role) const { if (!proxied.isNull() && proxied_model) return proxied_model->headerData(section, orientation, role); return QVariant(); } bool QPyQmlObjectProxy::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) { if (!proxied.isNull() && proxied_model) return proxied_model->setHeaderData(section, orientation, value, role); return false; } QMap QPyQmlObjectProxy::itemData(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->itemData(index); return QMap(); } bool QPyQmlObjectProxy::setItemData(const QModelIndex &index, const QMap &roles) { if (!proxied.isNull() && proxied_model) return proxied_model->setItemData(index, roles); return false; } QStringList QPyQmlObjectProxy::mimeTypes() const { if (!proxied.isNull() && proxied_model) return proxied_model->mimeTypes(); return QStringList(); } QMimeData *QPyQmlObjectProxy::mimeData(const QModelIndexList &indexes) const { if (!proxied.isNull() && proxied_model) return proxied_model->mimeData(indexes); return 0; } bool QPyQmlObjectProxy::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->canDropMimeData(data, action, row, column, parent); return false; } bool QPyQmlObjectProxy::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->dropMimeData(data, action, row, column, parent); return false; } Qt::DropActions QPyQmlObjectProxy::supportedDropActions() const { if (!proxied.isNull() && proxied_model) return proxied_model->supportedDropActions(); return Qt::IgnoreAction; } Qt::DropActions QPyQmlObjectProxy::supportedDragActions() const { if (!proxied.isNull() && proxied_model) return proxied_model->supportedDragActions(); return Qt::IgnoreAction; } bool QPyQmlObjectProxy::insertRows(int row, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->insertRows(row, count, parent); return false; } bool QPyQmlObjectProxy::insertColumns(int column, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->insertColumns(column, count, parent); return false; } bool QPyQmlObjectProxy::removeRows(int row, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->removeRows(row, count, parent); return false; } bool QPyQmlObjectProxy::removeColumns(int column, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->removeColumns(column, count, parent); return false; } bool QPyQmlObjectProxy::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) { if (!proxied.isNull() && proxied_model) return proxied_model->moveRows(sourceParent, sourceRow, count, destinationParent, destinationChild); return false; } bool QPyQmlObjectProxy::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild) { if (!proxied.isNull() && proxied_model) return proxied_model->moveColumns(sourceParent, sourceColumn, count, destinationParent, destinationChild); return false; } void QPyQmlObjectProxy::fetchMore(const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) proxied_model->fetchMore(parent); } bool QPyQmlObjectProxy::canFetchMore(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->canFetchMore(parent); return false; } Qt::ItemFlags QPyQmlObjectProxy::flags(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->flags(index); return Qt::NoItemFlags; } void QPyQmlObjectProxy::sort(int column, Qt::SortOrder order) { if (!proxied.isNull() && proxied_model) proxied_model->sort(column, order); } QModelIndex QPyQmlObjectProxy::buddy(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->buddy(index); return QModelIndex(); } QModelIndexList QPyQmlObjectProxy::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const { if (!proxied.isNull() && proxied_model) return proxied_model->match(start, role, value, hits, flags); return QModelIndexList(); } QSize QPyQmlObjectProxy::span(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->span(index); return QSize(); } QHash QPyQmlObjectProxy::roleNames() const { if (!proxied.isNull() && proxied_model) return proxied_model->roleNames(); return QHash(); } PyQt-gpl-5.5.1/qpy/QtQml/qpyqmlobject.h0000644000076500000240000001670212613140040020005 0ustar philstaff00000000000000// This is the definition of the QPyQmlObject classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLOBJECT_H #define _QPYQMLOBJECT_H #include #include #include #include #include #include #include #include #include class QPyQmlObjectProxy : public QAbstractItemModel { public: QPyQmlObjectProxy(QObject *parent = 0); virtual ~QPyQmlObjectProxy(); virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *_clname); virtual int qt_metacall(QMetaObject::Call, int, void **); virtual int typeNr() const = 0; static int addType(PyTypeObject *type); void createPyObject(QObject *parent); static QObject *createAttachedProperties(PyTypeObject *py_type, QObject *parent); static void *resolveProxy(void *proxy); void pyClassBegin(); void pyComponentComplete(); void pySetTarget(const QQmlProperty &target); // The set of proxies in existence. static QSet proxies; // The real object. QPointer proxied; // The real object if it is an item model. QAbstractItemModel *proxied_model; // QAbstractItemModel virtuals. virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const; virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; virtual Qt::DropActions supportedDragActions() const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QModelIndex buddy(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const; virtual QSize span(const QModelIndex &index) const; virtual QHash roleNames() const; protected: void connectNotify(const QMetaMethod &signal); void disconnectNotify(const QMetaMethod &signal); private: // These can by cast to sipWrapperType and pyqtWrapperType. static QList pyqt_types; // The wrapped proxied object. PyObject *py_proxied; static QByteArray signalSignature(const QMetaMethod &signal); QPyQmlObjectProxy(const QPyQmlObjectProxy &); }; // The proxy type declarations. #define QPYQML_PROXY_DECL(n) \ class QPyQmlObject##n : public QPyQmlObjectProxy, public QQmlParserStatus, public QQmlPropertyValueSource \ { \ public: \ QPyQmlObject##n(QObject *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ static PyTypeObject *attachedPyType; \ static QObject *attachedProperties(QObject *parent); \ virtual void classBegin(); \ virtual void componentComplete(); \ virtual void setTarget(const QQmlProperty &target); \ private: \ QPyQmlObject##n(const QPyQmlObject##n &); \ } QPYQML_PROXY_DECL(0); QPYQML_PROXY_DECL(1); QPYQML_PROXY_DECL(2); QPYQML_PROXY_DECL(3); QPYQML_PROXY_DECL(4); QPYQML_PROXY_DECL(5); QPYQML_PROXY_DECL(6); QPYQML_PROXY_DECL(7); QPYQML_PROXY_DECL(8); QPYQML_PROXY_DECL(9); QPYQML_PROXY_DECL(10); QPYQML_PROXY_DECL(11); QPYQML_PROXY_DECL(12); QPYQML_PROXY_DECL(13); QPYQML_PROXY_DECL(14); QPYQML_PROXY_DECL(15); QPYQML_PROXY_DECL(16); QPYQML_PROXY_DECL(17); QPYQML_PROXY_DECL(18); QPYQML_PROXY_DECL(19); QPYQML_PROXY_DECL(20); QPYQML_PROXY_DECL(21); QPYQML_PROXY_DECL(22); QPYQML_PROXY_DECL(23); QPYQML_PROXY_DECL(24); QPYQML_PROXY_DECL(25); QPYQML_PROXY_DECL(26); QPYQML_PROXY_DECL(27); QPYQML_PROXY_DECL(28); QPYQML_PROXY_DECL(29); QPYQML_PROXY_DECL(30); QPYQML_PROXY_DECL(31); QPYQML_PROXY_DECL(32); QPYQML_PROXY_DECL(33); QPYQML_PROXY_DECL(34); QPYQML_PROXY_DECL(35); QPYQML_PROXY_DECL(36); QPYQML_PROXY_DECL(37); QPYQML_PROXY_DECL(38); QPYQML_PROXY_DECL(39); QPYQML_PROXY_DECL(40); QPYQML_PROXY_DECL(41); QPYQML_PROXY_DECL(42); QPYQML_PROXY_DECL(43); QPYQML_PROXY_DECL(44); QPYQML_PROXY_DECL(45); QPYQML_PROXY_DECL(46); QPYQML_PROXY_DECL(47); QPYQML_PROXY_DECL(48); QPYQML_PROXY_DECL(49); QPYQML_PROXY_DECL(50); QPYQML_PROXY_DECL(51); QPYQML_PROXY_DECL(52); QPYQML_PROXY_DECL(53); QPYQML_PROXY_DECL(54); QPYQML_PROXY_DECL(55); QPYQML_PROXY_DECL(56); QPYQML_PROXY_DECL(57); QPYQML_PROXY_DECL(58); QPYQML_PROXY_DECL(59); #endif PyQt-gpl-5.5.1/qpy/QtQml/qpyqmlsingletonobject.cpp0000644000076500000240000000620112613140040022254 0ustar philstaff00000000000000// This is the implementation of the QPyQmlSingletonObject classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlsingletonobject.h" #include "sipAPIQtQml.h" // The number of registered Python types. int QPyQmlSingletonObjectProxy::nr_types = 0; // Add a new Python type and return its number. int QPyQmlSingletonObjectProxy::addType() { return nr_types++; } // Create the QObject instance. QObject *QPyQmlSingletonObjectProxy::createObject(QQmlEngine *engine, QJSEngine *scriptEngine, PyObject *factory) { // This should never happen. if (!factory) return 0; QObject *qobject; SIP_BLOCK_THREADS PyObject *py_obj = sipCallMethod(NULL, factory, "DD", engine, sipType_QQmlEngine, NULL, scriptEngine, sipType_QJSEngine, NULL); if (py_obj) { qobject = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_obj)); // The engine will call the dtor and garbage collect the Python object. sipTransferTo(py_obj, Py_None); Py_DECREF(py_obj); } else { qobject = 0; pyqt5_qtqml_err_print(); } Py_DECREF(factory); SIP_UNBLOCK_THREADS return qobject; } // The proxy type implementations. #define QPYQML_SINGLETON_PROXY_IMPL(n) \ PyObject *QPyQmlSingletonObject##n::factory = 0; \ QMetaObject QPyQmlSingletonObject##n::staticMetaObject QPYQML_SINGLETON_PROXY_IMPL(0); QPYQML_SINGLETON_PROXY_IMPL(1); QPYQML_SINGLETON_PROXY_IMPL(2); QPYQML_SINGLETON_PROXY_IMPL(3); QPYQML_SINGLETON_PROXY_IMPL(4); QPYQML_SINGLETON_PROXY_IMPL(5); QPYQML_SINGLETON_PROXY_IMPL(6); QPYQML_SINGLETON_PROXY_IMPL(7); QPYQML_SINGLETON_PROXY_IMPL(8); QPYQML_SINGLETON_PROXY_IMPL(9); QPYQML_SINGLETON_PROXY_IMPL(10); QPYQML_SINGLETON_PROXY_IMPL(11); QPYQML_SINGLETON_PROXY_IMPL(12); QPYQML_SINGLETON_PROXY_IMPL(13); QPYQML_SINGLETON_PROXY_IMPL(14); QPYQML_SINGLETON_PROXY_IMPL(15); QPYQML_SINGLETON_PROXY_IMPL(16); QPYQML_SINGLETON_PROXY_IMPL(17); QPYQML_SINGLETON_PROXY_IMPL(18); QPYQML_SINGLETON_PROXY_IMPL(19); QPYQML_SINGLETON_PROXY_IMPL(20); QPYQML_SINGLETON_PROXY_IMPL(21); QPYQML_SINGLETON_PROXY_IMPL(22); QPYQML_SINGLETON_PROXY_IMPL(23); QPYQML_SINGLETON_PROXY_IMPL(24); QPYQML_SINGLETON_PROXY_IMPL(25); QPYQML_SINGLETON_PROXY_IMPL(26); QPYQML_SINGLETON_PROXY_IMPL(27); QPYQML_SINGLETON_PROXY_IMPL(28); QPYQML_SINGLETON_PROXY_IMPL(29); PyQt-gpl-5.5.1/qpy/QtQml/qpyqmlsingletonobject.h0000644000076500000240000000603112613140040021722 0ustar philstaff00000000000000// This is the definition of the QPyQmlSingletonObject classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLOBJECT_H #define _QPYQMLOBJECT_H #include #include #include #include // Note that these classes are never instantiated. They are used to give the // registration structure appropriate values (although whether or not those // values are actually used isn't clear). class QPyQmlSingletonObjectProxy : public QObject { public: static int addType(); static QObject *createObject(QQmlEngine *engine, QJSEngine *scriptEngine, PyObject *factory); private: // The number of registered types. static int nr_types; QPyQmlSingletonObjectProxy(const QPyQmlSingletonObjectProxy &); }; // The proxy type declarations. #define QPYQML_SINGLETON_PROXY_DECL(n) \ class QPyQmlSingletonObject##n : public QPyQmlSingletonObjectProxy \ { \ public: \ static QMetaObject staticMetaObject; \ static PyObject *factory; \ static QObject *objectFactory(QQmlEngine *engine, QJSEngine *scriptEngine) \ { \ QObject *qo = createObject(engine, scriptEngine, factory); \ factory = 0; \ return qo; \ } \ private: \ QPyQmlSingletonObject##n(const QPyQmlSingletonObject##n &); \ } QPYQML_SINGLETON_PROXY_DECL(0); QPYQML_SINGLETON_PROXY_DECL(1); QPYQML_SINGLETON_PROXY_DECL(2); QPYQML_SINGLETON_PROXY_DECL(3); QPYQML_SINGLETON_PROXY_DECL(4); QPYQML_SINGLETON_PROXY_DECL(5); QPYQML_SINGLETON_PROXY_DECL(6); QPYQML_SINGLETON_PROXY_DECL(7); QPYQML_SINGLETON_PROXY_DECL(8); QPYQML_SINGLETON_PROXY_DECL(9); QPYQML_SINGLETON_PROXY_DECL(10); QPYQML_SINGLETON_PROXY_DECL(11); QPYQML_SINGLETON_PROXY_DECL(12); QPYQML_SINGLETON_PROXY_DECL(13); QPYQML_SINGLETON_PROXY_DECL(14); QPYQML_SINGLETON_PROXY_DECL(15); QPYQML_SINGLETON_PROXY_DECL(16); QPYQML_SINGLETON_PROXY_DECL(17); QPYQML_SINGLETON_PROXY_DECL(18); QPYQML_SINGLETON_PROXY_DECL(19); QPYQML_SINGLETON_PROXY_DECL(20); QPYQML_SINGLETON_PROXY_DECL(21); QPYQML_SINGLETON_PROXY_DECL(22); QPYQML_SINGLETON_PROXY_DECL(23); QPYQML_SINGLETON_PROXY_DECL(24); QPYQML_SINGLETON_PROXY_DECL(25); QPYQML_SINGLETON_PROXY_DECL(26); QPYQML_SINGLETON_PROXY_DECL(27); QPYQML_SINGLETON_PROXY_DECL(28); QPYQML_SINGLETON_PROXY_DECL(29); #endif PyQt-gpl-5.5.1/qpy/QtQuick/0000755000076500000240000000000012613140040015437 5ustar philstaff00000000000000PyQt-gpl-5.5.1/qpy/QtQuick/qpyquick_api.h0000644000076500000240000000216012613140040020306 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_API_H #define _QPYQUICK_API_H // Python exception handling. typedef void (*pyqt5_qtquick_err_print_t)(); extern pyqt5_qtquick_err_print_t pyqt5_qtquick_err_print; // Initialisation. void qpyquick_post_init(); #endif PyQt-gpl-5.5.1/qpy/QtQuick/qpyquick_chimera_helpers.cpp0000644000076500000240000001004112613140040023217 0ustar philstaff00000000000000// This is the implementation of the various Chimera helpers. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpyquick_chimera_helpers.h" #include "sipAPIQtQuick.h" // Forward declarations. static int QList_QObject_metatype(); static bool to_QList_QObject(PyObject *obj, QList&cpp); // Convert a QVariant to a Python object. bool qpyquick_from_qvariant_convertor(const QVariant *varp, PyObject **objp) { // Check we handle the meta-type. if (varp->userType() != QList_QObject_metatype()) return false; const QList *cpp = reinterpret_cast *>(varp->data()); PyObject *obj = PyList_New(cpp->count()); if (obj) { for (int i = 0; i < cpp->count(); ++i) { PyObject *itm = sipConvertFromType(cpp->at(i), sipType_QObject, 0); if (!itm) { Py_DECREF(obj); obj = 0; break; } PyList_SET_ITEM(obj, i, itm); } } *objp = obj; return true; } // Convert a Python object to a QVariant. bool qpyquick_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp) { int metatype = QList_QObject_metatype(); // Check the meta-type has been defined. if (metatype == 0) return false; QList qlo; // A failure to convert isn't an error, just the wrong type of Python // object. if (!to_QList_QObject(obj, qlo)) return false; var = QVariant(metatype, &qlo); *okp = true; return true; } // Convert a Python object to QVariant data. bool qpyquick_to_qvariant_data_convertor(PyObject *obj, void *data, int metatype, bool *okp) { // Check we handle the meta-type. if (metatype != QList_QObject_metatype()) return false; QList qlo; // A failure to convert isn't an error, just the wrong type of Python // object. if (!to_QList_QObject(obj, qlo)) return false; *reinterpret_cast *>(data) = qlo; *okp = true; return true; } // Get the metatype for QList or 0 if it hasn't been registered. static int QList_QObject_metatype() { static int lo_metatype = 0; // We look each time until we find it rather than rely on any particular // behaviour from QtQuick. if (lo_metatype == 0) lo_metatype = QMetaType::type("QList"); return lo_metatype; } // Convert a Python list object to a QList and return true if the // conversion was successful. An empty list is never converted and left to the // QtCore module to handle. static bool to_QList_QObject(PyObject *obj, QList&cpp) { if (!PyList_CheckExact(obj) || PyList_GET_SIZE(obj) == 0) return false; for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(obj); ++i) { PyObject *val_obj = PyList_GET_ITEM(obj, i); if (!val_obj) return false; int iserr = 0; QObject *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) return false; cpp.append(val); } return true; } PyQt-gpl-5.5.1/qpy/QtQuick/qpyquick_chimera_helpers.h0000644000076500000240000000304112613140040022666 0ustar philstaff00000000000000// This is the definition of the various Chimera helpers. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_CHIMERAHELPERS_H #define _QPYQUICK_CHIMERAHELPERS_H #include #include // Keep these in sync. with those defined in the public API. typedef bool (*FromQVariantConvertorFn)(const QVariant *, PyObject **); typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); typedef bool (*ToQVariantDataConvertorFn)(PyObject *, void *, int, bool *); bool qpyquick_from_qvariant_convertor(const QVariant *varp, PyObject **objp); bool qpyquick_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp); bool qpyquick_to_qvariant_data_convertor(PyObject *obj, void *data, int metatype, bool *okp); #endif PyQt-gpl-5.5.1/qpy/QtQuick/qpyquick_post_init.cpp0000644000076500000240000000445012613140040022104 0ustar philstaff00000000000000// This is the initialisation support code for the QtQuick module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyquick_api.h" #include "qpyquick_chimera_helpers.h" #include "qpyquick_register_type.h" #include "sipAPIQtQuick.h" // Imports from QtCore. pyqt5_qtquick_err_print_t pyqt5_qtquick_err_print; // Perform any required initialisation. void qpyquick_post_init() { // Import the Chimera helper registration functions. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); register_from_qvariant_convertor = (void (*)(FromQVariantConvertorFn))sipImportSymbol("pyqt5_register_from_qvariant_convertor"); register_from_qvariant_convertor(qpyquick_from_qvariant_convertor); void (*register_to_qvariant_convertor)(ToQVariantConvertorFn); register_to_qvariant_convertor = (void (*)(ToQVariantConvertorFn))sipImportSymbol("pyqt5_register_to_qvariant_convertor"); register_to_qvariant_convertor(qpyquick_to_qvariant_convertor); void (*register_to_qvariant_data_convertor)(ToQVariantDataConvertorFn); register_to_qvariant_data_convertor = (void (*)(ToQVariantDataConvertorFn))sipImportSymbol("pyqt5_register_to_qvariant_data_convertor"); register_to_qvariant_data_convertor(qpyquick_to_qvariant_data_convertor); // Other QtCore imports. pyqt5_qtquick_err_print = (pyqt5_qtquick_err_print_t)sipImportSymbol( "pyqt5_err_print"); // Export the qml_register_type() helper. sipExportSymbol("qtquick_register_item", (void *)qpyquick_register_type); } PyQt-gpl-5.5.1/qpy/QtQuick/qpyquick_register_type.cpp0000644000076500000240000000370012613140040022756 0ustar philstaff00000000000000// This is the implementation of the qml_register_type() helper. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyquick_register_type.h" #include "qpyquickframebufferobject.h" #include "qpyquickitem.h" #include "qpyquickpainteditem.h" #include "sipAPIQtQuick.h" sipErrorState qpyquick_register_type(PyTypeObject *py_type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name, QQmlPrivate::RegisterType **rtp) { #if QT_VERSION >= 0x050200 if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickFramebufferObject))) return ((*rtp = QPyQuickFramebufferObject::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); #endif if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickPaintedItem))) return ((*rtp = QPyQuickPaintedItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickItem))) return ((*rtp = QPyQuickItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); // We don't recognise the type. return sipErrorContinue; } PyQt-gpl-5.5.1/qpy/QtQuick/qpyquick_register_type.h0000644000076500000240000000242112613140040022422 0ustar philstaff00000000000000// This is the declaration of the qml_register_type() helper. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_REGISTERTYPE_H #define _QPYQUICK_REGISTERTYPE_H #include #include #include #include #include "sipAPIQtQuick.h" sipErrorState qpyquick_register_type(PyTypeObject *py_type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name, QQmlPrivate::RegisterType **rtp); #endif PyQt-gpl-5.5.1/qpy/QtQuick/qpyquickframebufferobject.cpp0000644000076500000240000001460312613140040023411 0ustar philstaff00000000000000// This is the implementation of the QPyQuickFramebufferObject classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickframebufferobject.h" #include "sipAPIQtQuick.h" #if QT_VERSION >= 0x050200 // The maximum number of Python QQuickFramebufferObject types. const int NrOfQuickFramebufferObjectTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickFramebufferObjectTypes]; #define QPYQUICKFRAMEBUFFEROBJECT_INIT(n) \ case n##U: \ QPyQuickFramebufferObject##n::staticMetaObject = *mo; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name.constData()); \ rt->listId = qRegisterNormalizedMetaType >(list_name.constData()); \ rt->objectSize = sizeof(QPyQuickFramebufferObject##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickFramebufferObject::QPyQuickFramebufferObject(QQuickItem *parent) : sipQQuickFramebufferObject(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickFramebufferObject::addType( PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickFramebufferObjectTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickFramebufferObject types may be registered with QML", NrOfQuickFramebufferObjectTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKFRAMEBUFFEROBJECT_INIT(0); QPYQUICKFRAMEBUFFEROBJECT_INIT(1); QPYQUICKFRAMEBUFFEROBJECT_INIT(2); QPYQUICKFRAMEBUFFEROBJECT_INIT(3); QPYQUICKFRAMEBUFFEROBJECT_INIT(4); QPYQUICKFRAMEBUFFEROBJECT_INIT(5); QPYQUICKFRAMEBUFFEROBJECT_INIT(6); QPYQUICKFRAMEBUFFEROBJECT_INIT(7); QPYQUICKFRAMEBUFFEROBJECT_INIT(8); QPYQUICKFRAMEBUFFEROBJECT_INIT(9); QPYQUICKFRAMEBUFFEROBJECT_INIT(10); QPYQUICKFRAMEBUFFEROBJECT_INIT(11); QPYQUICKFRAMEBUFFEROBJECT_INIT(12); QPYQUICKFRAMEBUFFEROBJECT_INIT(13); QPYQUICKFRAMEBUFFEROBJECT_INIT(14); QPYQUICKFRAMEBUFFEROBJECT_INIT(15); QPYQUICKFRAMEBUFFEROBJECT_INIT(16); QPYQUICKFRAMEBUFFEROBJECT_INIT(17); QPYQUICKFRAMEBUFFEROBJECT_INIT(18); QPYQUICKFRAMEBUFFEROBJECT_INIT(19); QPYQUICKFRAMEBUFFEROBJECT_INIT(20); QPYQUICKFRAMEBUFFEROBJECT_INIT(21); QPYQUICKFRAMEBUFFEROBJECT_INIT(22); QPYQUICKFRAMEBUFFEROBJECT_INIT(23); QPYQUICKFRAMEBUFFEROBJECT_INIT(24); QPYQUICKFRAMEBUFFEROBJECT_INIT(25); QPYQUICKFRAMEBUFFEROBJECT_INIT(26); QPYQUICKFRAMEBUFFEROBJECT_INIT(27); QPYQUICKFRAMEBUFFEROBJECT_INIT(28); QPYQUICKFRAMEBUFFEROBJECT_INIT(29); } return rt; } // Create the Python instance. void QPyQuickFramebufferObject::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt5_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKFRAMEBUFFEROBJECT_IMPL(n) \ QPyQuickFramebufferObject##n::QPyQuickFramebufferObject##n(QQuickItem *parent) : QPyQuickFramebufferObject(parent) \ { \ createPyObject(parent); \ } \ QMetaObject QPyQuickFramebufferObject##n::staticMetaObject QPYQUICKFRAMEBUFFEROBJECT_IMPL(0); QPYQUICKFRAMEBUFFEROBJECT_IMPL(1); QPYQUICKFRAMEBUFFEROBJECT_IMPL(2); QPYQUICKFRAMEBUFFEROBJECT_IMPL(3); QPYQUICKFRAMEBUFFEROBJECT_IMPL(4); QPYQUICKFRAMEBUFFEROBJECT_IMPL(5); QPYQUICKFRAMEBUFFEROBJECT_IMPL(6); QPYQUICKFRAMEBUFFEROBJECT_IMPL(7); QPYQUICKFRAMEBUFFEROBJECT_IMPL(8); QPYQUICKFRAMEBUFFEROBJECT_IMPL(9); QPYQUICKFRAMEBUFFEROBJECT_IMPL(10); QPYQUICKFRAMEBUFFEROBJECT_IMPL(11); QPYQUICKFRAMEBUFFEROBJECT_IMPL(12); QPYQUICKFRAMEBUFFEROBJECT_IMPL(13); QPYQUICKFRAMEBUFFEROBJECT_IMPL(14); QPYQUICKFRAMEBUFFEROBJECT_IMPL(15); QPYQUICKFRAMEBUFFEROBJECT_IMPL(16); QPYQUICKFRAMEBUFFEROBJECT_IMPL(17); QPYQUICKFRAMEBUFFEROBJECT_IMPL(18); QPYQUICKFRAMEBUFFEROBJECT_IMPL(19); QPYQUICKFRAMEBUFFEROBJECT_IMPL(20); QPYQUICKFRAMEBUFFEROBJECT_IMPL(21); QPYQUICKFRAMEBUFFEROBJECT_IMPL(22); QPYQUICKFRAMEBUFFEROBJECT_IMPL(23); QPYQUICKFRAMEBUFFEROBJECT_IMPL(24); QPYQUICKFRAMEBUFFEROBJECT_IMPL(25); QPYQUICKFRAMEBUFFEROBJECT_IMPL(26); QPYQUICKFRAMEBUFFEROBJECT_IMPL(27); QPYQUICKFRAMEBUFFEROBJECT_IMPL(28); QPYQUICKFRAMEBUFFEROBJECT_IMPL(29); #endif PyQt-gpl-5.5.1/qpy/QtQuick/qpyquickframebufferobject.h0000644000076500000240000000606012613140040023054 0ustar philstaff00000000000000// This is the definition of the QPyQuickFramebufferObject classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKFRAMEBUFFEROBJECT_H #define _QPYQUICKFRAMEBUFFEROBJECT_H #include #include #include #include #include #include "sipAPIQtQuick.h" #if QT_VERSION >= 0x050200 class QPyQuickFramebufferObject : public sipQQuickFramebufferObject { public: QPyQuickFramebufferObject(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickFramebufferObject(const QPyQuickFramebufferObject &); }; // The canned type declarations. #define QPYQUICKFRAMEBUFFEROBJECT_DECL(n) \ class QPyQuickFramebufferObject##n : public QPyQuickFramebufferObject \ { \ public: \ QPyQuickFramebufferObject##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickFramebufferObject##n(const QPyQuickFramebufferObject##n &); \ } QPYQUICKFRAMEBUFFEROBJECT_DECL(0); QPYQUICKFRAMEBUFFEROBJECT_DECL(1); QPYQUICKFRAMEBUFFEROBJECT_DECL(2); QPYQUICKFRAMEBUFFEROBJECT_DECL(3); QPYQUICKFRAMEBUFFEROBJECT_DECL(4); QPYQUICKFRAMEBUFFEROBJECT_DECL(5); QPYQUICKFRAMEBUFFEROBJECT_DECL(6); QPYQUICKFRAMEBUFFEROBJECT_DECL(7); QPYQUICKFRAMEBUFFEROBJECT_DECL(8); QPYQUICKFRAMEBUFFEROBJECT_DECL(9); QPYQUICKFRAMEBUFFEROBJECT_DECL(10); QPYQUICKFRAMEBUFFEROBJECT_DECL(11); QPYQUICKFRAMEBUFFEROBJECT_DECL(12); QPYQUICKFRAMEBUFFEROBJECT_DECL(13); QPYQUICKFRAMEBUFFEROBJECT_DECL(14); QPYQUICKFRAMEBUFFEROBJECT_DECL(15); QPYQUICKFRAMEBUFFEROBJECT_DECL(16); QPYQUICKFRAMEBUFFEROBJECT_DECL(17); QPYQUICKFRAMEBUFFEROBJECT_DECL(18); QPYQUICKFRAMEBUFFEROBJECT_DECL(19); QPYQUICKFRAMEBUFFEROBJECT_DECL(20); QPYQUICKFRAMEBUFFEROBJECT_DECL(21); QPYQUICKFRAMEBUFFEROBJECT_DECL(22); QPYQUICKFRAMEBUFFEROBJECT_DECL(23); QPYQUICKFRAMEBUFFEROBJECT_DECL(24); QPYQUICKFRAMEBUFFEROBJECT_DECL(25); QPYQUICKFRAMEBUFFEROBJECT_DECL(26); QPYQUICKFRAMEBUFFEROBJECT_DECL(27); QPYQUICKFRAMEBUFFEROBJECT_DECL(28); QPYQUICKFRAMEBUFFEROBJECT_DECL(29); #endif #endif PyQt-gpl-5.5.1/qpy/QtQuick/qpyquickitem.cpp0000644000076500000240000001227112613140040020673 0ustar philstaff00000000000000// This is the implementation of the QPyQuickItem classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickitem.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickItem types. const int NrOfQuickItemTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickItemTypes]; #define QPYQUICKITEM_INIT(n) \ case n##U: \ QPyQuickItem##n::staticMetaObject = *mo; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name); \ rt->listId = qRegisterNormalizedMetaType >(list_name); \ rt->objectSize = sizeof(QPyQuickItem##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickItem::QPyQuickItem(QQuickItem *parent) : sipQQuickItem(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickItem::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickItemTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickItem types may be registered with QML", NrOfQuickItemTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKITEM_INIT(0); QPYQUICKITEM_INIT(1); QPYQUICKITEM_INIT(2); QPYQUICKITEM_INIT(3); QPYQUICKITEM_INIT(4); QPYQUICKITEM_INIT(5); QPYQUICKITEM_INIT(6); QPYQUICKITEM_INIT(7); QPYQUICKITEM_INIT(8); QPYQUICKITEM_INIT(9); QPYQUICKITEM_INIT(10); QPYQUICKITEM_INIT(11); QPYQUICKITEM_INIT(12); QPYQUICKITEM_INIT(13); QPYQUICKITEM_INIT(14); QPYQUICKITEM_INIT(15); QPYQUICKITEM_INIT(16); QPYQUICKITEM_INIT(17); QPYQUICKITEM_INIT(18); QPYQUICKITEM_INIT(19); QPYQUICKITEM_INIT(20); QPYQUICKITEM_INIT(21); QPYQUICKITEM_INIT(22); QPYQUICKITEM_INIT(23); QPYQUICKITEM_INIT(24); QPYQUICKITEM_INIT(25); QPYQUICKITEM_INIT(26); QPYQUICKITEM_INIT(27); QPYQUICKITEM_INIT(28); QPYQUICKITEM_INIT(29); } return rt; } // Create the Python instance. void QPyQuickItem::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt5_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKITEM_IMPL(n) \ QPyQuickItem##n::QPyQuickItem##n(QQuickItem *parent) : QPyQuickItem(parent) \ { \ createPyObject(parent); \ } \ QMetaObject QPyQuickItem##n::staticMetaObject QPYQUICKITEM_IMPL(0); QPYQUICKITEM_IMPL(1); QPYQUICKITEM_IMPL(2); QPYQUICKITEM_IMPL(3); QPYQUICKITEM_IMPL(4); QPYQUICKITEM_IMPL(5); QPYQUICKITEM_IMPL(6); QPYQUICKITEM_IMPL(7); QPYQUICKITEM_IMPL(8); QPYQUICKITEM_IMPL(9); QPYQUICKITEM_IMPL(10); QPYQUICKITEM_IMPL(11); QPYQUICKITEM_IMPL(12); QPYQUICKITEM_IMPL(13); QPYQUICKITEM_IMPL(14); QPYQUICKITEM_IMPL(15); QPYQUICKITEM_IMPL(16); QPYQUICKITEM_IMPL(17); QPYQUICKITEM_IMPL(18); QPYQUICKITEM_IMPL(19); QPYQUICKITEM_IMPL(20); QPYQUICKITEM_IMPL(21); QPYQUICKITEM_IMPL(22); QPYQUICKITEM_IMPL(23); QPYQUICKITEM_IMPL(24); QPYQUICKITEM_IMPL(25); QPYQUICKITEM_IMPL(26); QPYQUICKITEM_IMPL(27); QPYQUICKITEM_IMPL(28); QPYQUICKITEM_IMPL(29); PyQt-gpl-5.5.1/qpy/QtQuick/qpyquickitem.h0000644000076500000240000000472012613140040020340 0ustar philstaff00000000000000// This is the definition of the QPyQuickItem classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKITEM_H #define _QPYQUICKITEM_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickItem : public sipQQuickItem { public: QPyQuickItem(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickItem(const QPyQuickItem &); }; // The canned type declarations. #define QPYQUICKITEM_DECL(n) \ class QPyQuickItem##n : public QPyQuickItem \ { \ public: \ QPyQuickItem##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickItem##n(const QPyQuickItem##n &); \ } QPYQUICKITEM_DECL(0); QPYQUICKITEM_DECL(1); QPYQUICKITEM_DECL(2); QPYQUICKITEM_DECL(3); QPYQUICKITEM_DECL(4); QPYQUICKITEM_DECL(5); QPYQUICKITEM_DECL(6); QPYQUICKITEM_DECL(7); QPYQUICKITEM_DECL(8); QPYQUICKITEM_DECL(9); QPYQUICKITEM_DECL(10); QPYQUICKITEM_DECL(11); QPYQUICKITEM_DECL(12); QPYQUICKITEM_DECL(13); QPYQUICKITEM_DECL(14); QPYQUICKITEM_DECL(15); QPYQUICKITEM_DECL(16); QPYQUICKITEM_DECL(17); QPYQUICKITEM_DECL(18); QPYQUICKITEM_DECL(19); QPYQUICKITEM_DECL(20); QPYQUICKITEM_DECL(21); QPYQUICKITEM_DECL(22); QPYQUICKITEM_DECL(23); QPYQUICKITEM_DECL(24); QPYQUICKITEM_DECL(25); QPYQUICKITEM_DECL(26); QPYQUICKITEM_DECL(27); QPYQUICKITEM_DECL(28); QPYQUICKITEM_DECL(29); #endif PyQt-gpl-5.5.1/qpy/QtQuick/qpyquickpainteditem.cpp0000644000076500000240000001351012613140040022235 0ustar philstaff00000000000000// This is the implementation of the QPyQuickPaintedItem classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickpainteditem.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickPaintedItem types. const int NrOfQuickPaintedItemTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickPaintedItemTypes]; #define QPYQUICKPAINTEDITEM_INIT(n) \ case n##U: \ QPyQuickPaintedItem##n::staticMetaObject = *mo; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name.constData()); \ rt->listId = qRegisterNormalizedMetaType >(list_name.constData()); \ rt->objectSize = sizeof(QPyQuickPaintedItem##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickPaintedItem::QPyQuickPaintedItem(QQuickItem *parent) : sipQQuickPaintedItem(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickPaintedItem::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickPaintedItemTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickPaintedItem types may be registered with QML", NrOfQuickPaintedItemTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKPAINTEDITEM_INIT(0); QPYQUICKPAINTEDITEM_INIT(1); QPYQUICKPAINTEDITEM_INIT(2); QPYQUICKPAINTEDITEM_INIT(3); QPYQUICKPAINTEDITEM_INIT(4); QPYQUICKPAINTEDITEM_INIT(5); QPYQUICKPAINTEDITEM_INIT(6); QPYQUICKPAINTEDITEM_INIT(7); QPYQUICKPAINTEDITEM_INIT(8); QPYQUICKPAINTEDITEM_INIT(9); QPYQUICKPAINTEDITEM_INIT(10); QPYQUICKPAINTEDITEM_INIT(11); QPYQUICKPAINTEDITEM_INIT(12); QPYQUICKPAINTEDITEM_INIT(13); QPYQUICKPAINTEDITEM_INIT(14); QPYQUICKPAINTEDITEM_INIT(15); QPYQUICKPAINTEDITEM_INIT(16); QPYQUICKPAINTEDITEM_INIT(17); QPYQUICKPAINTEDITEM_INIT(18); QPYQUICKPAINTEDITEM_INIT(19); QPYQUICKPAINTEDITEM_INIT(20); QPYQUICKPAINTEDITEM_INIT(21); QPYQUICKPAINTEDITEM_INIT(22); QPYQUICKPAINTEDITEM_INIT(23); QPYQUICKPAINTEDITEM_INIT(24); QPYQUICKPAINTEDITEM_INIT(25); QPYQUICKPAINTEDITEM_INIT(26); QPYQUICKPAINTEDITEM_INIT(27); QPYQUICKPAINTEDITEM_INIT(28); QPYQUICKPAINTEDITEM_INIT(29); } return rt; } // Create the Python instance. void QPyQuickPaintedItem::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt5_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKPAINTEDITEM_IMPL(n) \ QPyQuickPaintedItem##n::QPyQuickPaintedItem##n(QQuickItem *parent) : QPyQuickPaintedItem(parent) \ { \ createPyObject(parent); \ } \ QMetaObject QPyQuickPaintedItem##n::staticMetaObject QPYQUICKPAINTEDITEM_IMPL(0); QPYQUICKPAINTEDITEM_IMPL(1); QPYQUICKPAINTEDITEM_IMPL(2); QPYQUICKPAINTEDITEM_IMPL(3); QPYQUICKPAINTEDITEM_IMPL(4); QPYQUICKPAINTEDITEM_IMPL(5); QPYQUICKPAINTEDITEM_IMPL(6); QPYQUICKPAINTEDITEM_IMPL(7); QPYQUICKPAINTEDITEM_IMPL(8); QPYQUICKPAINTEDITEM_IMPL(9); QPYQUICKPAINTEDITEM_IMPL(10); QPYQUICKPAINTEDITEM_IMPL(11); QPYQUICKPAINTEDITEM_IMPL(12); QPYQUICKPAINTEDITEM_IMPL(13); QPYQUICKPAINTEDITEM_IMPL(14); QPYQUICKPAINTEDITEM_IMPL(15); QPYQUICKPAINTEDITEM_IMPL(16); QPYQUICKPAINTEDITEM_IMPL(17); QPYQUICKPAINTEDITEM_IMPL(18); QPYQUICKPAINTEDITEM_IMPL(19); QPYQUICKPAINTEDITEM_IMPL(20); QPYQUICKPAINTEDITEM_IMPL(21); QPYQUICKPAINTEDITEM_IMPL(22); QPYQUICKPAINTEDITEM_IMPL(23); QPYQUICKPAINTEDITEM_IMPL(24); QPYQUICKPAINTEDITEM_IMPL(25); QPYQUICKPAINTEDITEM_IMPL(26); QPYQUICKPAINTEDITEM_IMPL(27); QPYQUICKPAINTEDITEM_IMPL(28); QPYQUICKPAINTEDITEM_IMPL(29); PyQt-gpl-5.5.1/qpy/QtQuick/qpyquickpainteditem.h0000644000076500000240000000540412613140040021705 0ustar philstaff00000000000000// This is the definition of the QPyQuickPaintedItem classes. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKPAINTEDITEM_H #define _QPYQUICKPAINTEDITEM_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickPaintedItem : public sipQQuickPaintedItem { public: QPyQuickPaintedItem(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickPaintedItem(const QPyQuickPaintedItem &); }; // The canned type declarations. #define QPYQUICKPAINTEDITEM_DECL(n) \ class QPyQuickPaintedItem##n : public QPyQuickPaintedItem \ { \ public: \ QPyQuickPaintedItem##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickPaintedItem##n(const QPyQuickPaintedItem##n &); \ } QPYQUICKPAINTEDITEM_DECL(0); QPYQUICKPAINTEDITEM_DECL(1); QPYQUICKPAINTEDITEM_DECL(2); QPYQUICKPAINTEDITEM_DECL(3); QPYQUICKPAINTEDITEM_DECL(4); QPYQUICKPAINTEDITEM_DECL(5); QPYQUICKPAINTEDITEM_DECL(6); QPYQUICKPAINTEDITEM_DECL(7); QPYQUICKPAINTEDITEM_DECL(8); QPYQUICKPAINTEDITEM_DECL(9); QPYQUICKPAINTEDITEM_DECL(10); QPYQUICKPAINTEDITEM_DECL(11); QPYQUICKPAINTEDITEM_DECL(12); QPYQUICKPAINTEDITEM_DECL(13); QPYQUICKPAINTEDITEM_DECL(14); QPYQUICKPAINTEDITEM_DECL(15); QPYQUICKPAINTEDITEM_DECL(16); QPYQUICKPAINTEDITEM_DECL(17); QPYQUICKPAINTEDITEM_DECL(18); QPYQUICKPAINTEDITEM_DECL(19); QPYQUICKPAINTEDITEM_DECL(20); QPYQUICKPAINTEDITEM_DECL(21); QPYQUICKPAINTEDITEM_DECL(22); QPYQUICKPAINTEDITEM_DECL(23); QPYQUICKPAINTEDITEM_DECL(24); QPYQUICKPAINTEDITEM_DECL(25); QPYQUICKPAINTEDITEM_DECL(26); QPYQUICKPAINTEDITEM_DECL(27); QPYQUICKPAINTEDITEM_DECL(28); QPYQUICKPAINTEDITEM_DECL(29); #endif PyQt-gpl-5.5.1/qpy/QtWidgets/0000755000076500000240000000000012613140040015771 5ustar philstaff00000000000000PyQt-gpl-5.5.1/README0000644000076500000240000000355612613140030014135 0ustar philstaff00000000000000 PyQt5 - Python Bindings for the Qt v5 Toolkit INTRODUCTION These are the Python bindings for Qt v5. Python v2.6 or later is required. You must also have the SIP Python bindings generator installed. PyQt4 is also available which supports earlier versions of Python, and Qt v4 and the compatible subset of Qt v5. The homepage is http://www.riverbankcomputing.com/software/pyqt/. The homepage of SIP is http://www.riverbankcomputing.com/software/sip/. COMMERCIAL VERSION If you have the Commercial version of PyQt5 then you should also have a license file that you downloaded separately. The license file must be copied to the "sip" directory before starting to build PyQt5. INSTALLATION Check for any other README files in this directory that relate to your particular platform. Feel free to contribute a README for your platform or to provide updates to any existing documentation. The first step is to configure PyQt5 by running the following command. python configure.py This assumes that the correct Python interpreter is on your path. Something like the following may be appropriate on Windows. c:\python33\python configure.py If you have multiple versions of Python installed then make sure you use the interpreter for which you wish to generate bindings for. The configure.py script takes many options. Use the "--help" command line option to display a full list of the available options. The next step is to build PyQt5 using your platform's make command. make The final step is to install PyQt5 by running the following command. (Depending on your system you may require root or administrator privileges.) make install THE REST OF THE DISTRIBUTION The "examples" directory contain some examples of Python scripts, including versions of the standard Qt tutorials and examples. The "doc" directory contains HTML documentation for the bindings. PyQt-gpl-5.5.1/sip/0000755000076500000240000000000012613140040014040 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_2_0/0000755000076500000240000000000012613140040017775 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_2_0/_QOpenGLFunctions_2_0mod.sip0000644000076500000240000000360212613140040025150 0ustar philstaff00000000000000// _QOpenGLFunctions_2_0mod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_0 Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_2_0, keyword_arguments="Optional") %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_2_0.sip PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_2_0/qopenglfunctions_2_0.sip0000644000076500000240000033772312613140040024567 0ustar philstaff00000000000000// qopenglfunctions_2_0.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_0 Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_2_0 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_2_0(); bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLdouble fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /DocType="bool-or-tuple"/); %MethodCode GLboolean fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="double-or-tuple"/); %MethodCode GLdouble params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[3]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /DocType="tuple-of-int"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SET_ITEM(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScalef(GLfloat x, GLfloat y, GLfloat z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); void glPushMatrix(); void glPopMatrix(); void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); void glMultMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixd(reinterpret_cast(array)); %End void glMultMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixf(reinterpret_cast(array)); %End void glMatrixMode(GLenum mode); void glLoadMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixd(reinterpret_cast(array)); %End void glLoadMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixf(reinterpret_cast(array)); %End void glLoadIdentity(); void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLboolean glIsList(GLuint list); void glGetTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGeniv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGenfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLdouble params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGendv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End void glGetTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnviv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnvfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetLightiv(GLenum light, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetLightfv(GLenum light, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetClipPlane(GLenum plane, SIP_PYOBJECT *equation /DocType="tuple"/); %MethodCode GLdouble params[4]; sipCpp->glGetClipPlane(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, 4); %End void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a4, a3, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawPixels(a0, a1, a2, a3, array); %End void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); void glPixelMapusv(GLenum map, GLint mapsize, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapusv(a0, a1, reinterpret_cast(array)); %End void glPixelMapuiv(GLenum map, GLint mapsize, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapuiv(a0, a1, reinterpret_cast(array)); %End void glPixelMapfv(GLenum map, GLint mapsize, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapfv(a0, a1, reinterpret_cast(array)); %End void glPixelTransferi(GLenum pname, GLint param); void glPixelTransferf(GLenum pname, GLfloat param); void glPixelZoom(GLfloat xfactor, GLfloat yfactor); void glAlphaFunc(GLenum func, GLfloat ref); void glEvalPoint2(GLint i, GLint j); void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); void glEvalPoint1(GLint i); void glEvalMesh1(GLenum mode, GLint i1, GLint i2); void glEvalCoord2fv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2fv(reinterpret_cast(array)); %End void glEvalCoord2f(GLfloat u, GLfloat v); void glEvalCoord2dv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2dv(reinterpret_cast(array)); %End void glEvalCoord2d(GLdouble u, GLdouble v); void glEvalCoord1fv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1fv(reinterpret_cast(array)); %End void glEvalCoord1f(GLfloat u); void glEvalCoord1dv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1dv(reinterpret_cast(array)); %End void glEvalCoord1d(GLdouble u); void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2f(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2d(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1f(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1d(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glPushAttrib(GLbitfield mask); void glPopAttrib(); void glAccum(GLenum op, GLfloat value); void glIndexMask(GLuint mask); void glClearIndex(GLfloat c); void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glPushName(GLuint name); void glPopName(); void glPassThrough(GLfloat token); void glLoadName(GLuint name); void glInitNames(); GLint glRenderMode(GLenum mode); void glTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGeniv(a0, a1, reinterpret_cast(array)); %End void glTexGeni(GLenum coord, GLenum pname, GLint param); void glTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGenfv(a0, a1, reinterpret_cast(array)); %End void glTexGenf(GLenum coord, GLenum pname, GLfloat param); void glTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGendv(a0, a1, reinterpret_cast(array)); %End void glTexGend(GLenum coord, GLenum pname, GLdouble param); void glTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnviv(a0, a1, reinterpret_cast(array)); %End void glTexEnvi(GLenum target, GLenum pname, GLint param); void glTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnvfv(a0, a1, reinterpret_cast(array)); %End void glTexEnvf(GLenum target, GLenum pname, GLfloat param); void glShadeModel(GLenum mode); void glPolygonStipple(SIP_PYOBJECT mask /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glPolygonStipple(reinterpret_cast(array)); %End void glMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialiv(a0, a1, reinterpret_cast(array)); %End void glMateriali(GLenum face, GLenum pname, GLint param); void glMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialfv(a0, a1, reinterpret_cast(array)); %End void glMaterialf(GLenum face, GLenum pname, GLfloat param); void glLineStipple(GLint factor, GLushort pattern); void glLightModeliv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModeliv(a0, reinterpret_cast(array)); %End void glLightModeli(GLenum pname, GLint param); void glLightModelfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModelfv(a0, reinterpret_cast(array)); %End void glLightModelf(GLenum pname, GLfloat param); void glLightiv(GLenum light, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightiv(a0, a1, reinterpret_cast(array)); %End void glLighti(GLenum light, GLenum pname, GLint param); void glLightfv(GLenum light, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightfv(a0, a1, reinterpret_cast(array)); %End void glLightf(GLenum light, GLenum pname, GLfloat param); void glFogiv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogiv(a0, reinterpret_cast(array)); %End void glFogi(GLenum pname, GLint param); void glFogfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogfv(a0, reinterpret_cast(array)); %End void glFogf(GLenum pname, GLfloat param); void glColorMaterial(GLenum face, GLenum mode); void glClipPlane(GLenum plane, SIP_PYOBJECT equation /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glClipPlane(a0, reinterpret_cast(array)); %End void glVertex4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4sv(reinterpret_cast(array)); %End void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); void glVertex4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4iv(reinterpret_cast(array)); %End void glVertex4i(GLint x, GLint y, GLint z, GLint w); void glVertex4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4fv(reinterpret_cast(array)); %End void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertex4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4dv(reinterpret_cast(array)); %End void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertex3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3sv(reinterpret_cast(array)); %End void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3iv(reinterpret_cast(array)); %End void glVertex3i(GLint x, GLint y, GLint z); void glVertex3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3fv(reinterpret_cast(array)); %End void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3dv(reinterpret_cast(array)); %End void glVertex3d(GLdouble x, GLdouble y, GLdouble z); void glVertex2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2sv(reinterpret_cast(array)); %End void glVertex2s(GLshort x, GLshort y); void glVertex2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2iv(reinterpret_cast(array)); %End void glVertex2i(GLint x, GLint y); void glVertex2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2fv(reinterpret_cast(array)); %End void glVertex2f(GLfloat x, GLfloat y); void glVertex2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2dv(reinterpret_cast(array)); %End void glVertex2d(GLdouble x, GLdouble y); void glTexCoord4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4sv(reinterpret_cast(array)); %End void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); void glTexCoord4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4iv(reinterpret_cast(array)); %End void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); void glTexCoord4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4fv(reinterpret_cast(array)); %End void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glTexCoord4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4dv(reinterpret_cast(array)); %End void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glTexCoord3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3sv(reinterpret_cast(array)); %End void glTexCoord3s(GLshort s, GLshort t, GLshort r); void glTexCoord3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3iv(reinterpret_cast(array)); %End void glTexCoord3i(GLint s, GLint t, GLint r); void glTexCoord3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3fv(reinterpret_cast(array)); %End void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); void glTexCoord3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3dv(reinterpret_cast(array)); %End void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); void glTexCoord2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2sv(reinterpret_cast(array)); %End void glTexCoord2s(GLshort s, GLshort t); void glTexCoord2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2iv(reinterpret_cast(array)); %End void glTexCoord2i(GLint s, GLint t); void glTexCoord2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2fv(reinterpret_cast(array)); %End void glTexCoord2f(GLfloat s, GLfloat t); void glTexCoord2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2dv(reinterpret_cast(array)); %End void glTexCoord2d(GLdouble s, GLdouble t); void glTexCoord1sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1sv(reinterpret_cast(array)); %End void glTexCoord1s(GLshort s); void glTexCoord1iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1iv(reinterpret_cast(array)); %End void glTexCoord1i(GLint s); void glTexCoord1fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1fv(reinterpret_cast(array)); %End void glTexCoord1f(GLfloat s); void glTexCoord1dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1dv(reinterpret_cast(array)); %End void glTexCoord1d(GLdouble s); void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); void glRasterPos4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4sv(reinterpret_cast(array)); %End void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); void glRasterPos4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4iv(reinterpret_cast(array)); %End void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); void glRasterPos4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4fv(reinterpret_cast(array)); %End void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glRasterPos4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4dv(reinterpret_cast(array)); %End void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glRasterPos3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3sv(reinterpret_cast(array)); %End void glRasterPos3s(GLshort x, GLshort y, GLshort z); void glRasterPos3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3iv(reinterpret_cast(array)); %End void glRasterPos3i(GLint x, GLint y, GLint z); void glRasterPos3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3fv(reinterpret_cast(array)); %End void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); void glRasterPos3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3dv(reinterpret_cast(array)); %End void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); void glRasterPos2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2sv(reinterpret_cast(array)); %End void glRasterPos2s(GLshort x, GLshort y); void glRasterPos2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2iv(reinterpret_cast(array)); %End void glRasterPos2i(GLint x, GLint y); void glRasterPos2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2fv(reinterpret_cast(array)); %End void glRasterPos2f(GLfloat x, GLfloat y); void glRasterPos2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2dv(reinterpret_cast(array)); %End void glRasterPos2d(GLdouble x, GLdouble y); void glNormal3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3sv(reinterpret_cast(array)); %End void glNormal3s(GLshort nx, GLshort ny, GLshort nz); void glNormal3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3iv(reinterpret_cast(array)); %End void glNormal3i(GLint nx, GLint ny, GLint nz); void glNormal3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3fv(reinterpret_cast(array)); %End void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3dv(reinterpret_cast(array)); %End void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); void glNormal3bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3bv(reinterpret_cast(array)); %End void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); void glIndexsv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexsv(reinterpret_cast(array)); %End void glIndexs(GLshort c); void glIndexiv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexiv(reinterpret_cast(array)); %End void glIndexi(GLint c); void glIndexfv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexfv(reinterpret_cast(array)); %End void glIndexf(GLfloat c); void glIndexdv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexdv(reinterpret_cast(array)); %End void glIndexd(GLdouble c); void glEnd(); void glEdgeFlagv(SIP_PYOBJECT flag /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEdgeFlagv(reinterpret_cast(array)); %End void glEdgeFlag(GLboolean flag); void glColor4usv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4usv(reinterpret_cast(array)); %End void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); void glColor4uiv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4uiv(reinterpret_cast(array)); %End void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); void glColor4ubv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4ubv(reinterpret_cast(array)); %End void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); void glColor4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4sv(reinterpret_cast(array)); %End void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); void glColor4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4iv(reinterpret_cast(array)); %End void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); void glColor4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4fv(reinterpret_cast(array)); %End void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glColor4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4dv(reinterpret_cast(array)); %End void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); void glColor4bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4bv(reinterpret_cast(array)); %End void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); void glColor3usv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3usv(reinterpret_cast(array)); %End void glColor3us(GLushort red, GLushort green, GLushort blue); void glColor3uiv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3uiv(reinterpret_cast(array)); %End void glColor3ui(GLuint red, GLuint green, GLuint blue); void glColor3ubv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3ubv(reinterpret_cast(array)); %End void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glColor3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3sv(reinterpret_cast(array)); %End void glColor3s(GLshort red, GLshort green, GLshort blue); void glColor3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3iv(reinterpret_cast(array)); %End void glColor3i(GLint red, GLint green, GLint blue); void glColor3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3fv(reinterpret_cast(array)); %End void glColor3f(GLfloat red, GLfloat green, GLfloat blue); void glColor3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3dv(reinterpret_cast(array)); %End void glColor3d(GLdouble red, GLdouble green, GLdouble blue); void glColor3bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3bv(reinterpret_cast(array)); %End void glColor3b(GLbyte red, GLbyte green, GLbyte blue); void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, SIP_PYOBJECT bitmap /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBitmap(a0, a1, a2, a3, a4, a5, reinterpret_cast(array)); %End void glBegin(GLenum mode); void glListBase(GLuint base); GLuint glGenLists(GLsizei range); void glDeleteLists(GLuint list, GLsizei range); void glCallList(GLuint list); void glEndList(); void glNewList(GLuint list, GLenum mode); void glPushClientAttrib(GLbitfield mask); void glPopClientAttrib(); void glVertexPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "VertexPointer", 0); if (sipError == sipErrorNone) sipCpp->glVertexPointer(a0, a1, a2, array); %End void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "TexCoordPointer", 0); if (sipError == sipErrorNone) sipCpp->glTexCoordPointer(a0, a1, a2, array); %End void glNormalPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "NormalPointer", 0); if (sipError == sipErrorNone) sipCpp->glNormalPointer(a0, a1, array); %End void glIndexPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "IndexPointer", 0); if (sipError == sipErrorNone) sipCpp->glIndexPointer(a0, a1, array); %End void glEnableClientState(GLenum array); void glEdgeFlagPointer(GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf, "EdgeFlagPointer", 0); if (sipError == sipErrorNone) sipCpp->glEdgeFlagPointer(a0, array); %End void glDisableClientState(GLenum array); void glColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "ColorPointer", 0); if (sipError == sipErrorNone) sipCpp->glColorPointer(a0, a1, a2, array); %End void glArrayElement(GLint i); void glResetMinmax(GLenum target); void glResetHistogram(GLenum target); void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); void glGetConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameteriv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); void glConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameterfv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT image /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter2D(a0, a1, a2, a3, a4, a5, array); %End void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT image /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter1D(a0, a1, a2, a3, a4, array); %End void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorSubTable(a0, a1, a2, a3, a4, array); %End void glGetColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameteriv(a0, a1, reinterpret_cast(array)); %End void glColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameterfv(a0, a1, reinterpret_cast(array)); %End void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT table /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTable(a0, a1, a2, a3, a4, array); %End void glMultTransposeMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixd(reinterpret_cast(array)); %End void glMultTransposeMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixf(reinterpret_cast(array)); %End void glLoadTransposeMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixd(reinterpret_cast(array)); %End void glLoadTransposeMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixf(reinterpret_cast(array)); %End void glMultiTexCoord4sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); void glMultiTexCoord4fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord3sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord2sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); void glMultiTexCoord2iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2i(GLenum target, GLint s, GLint t); void glMultiTexCoord2fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord1sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1s(GLenum target, GLshort s); void glMultiTexCoord1iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1i(GLenum target, GLint s); void glMultiTexCoord1fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1f(GLenum target, GLfloat s); void glMultiTexCoord1dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1d(GLenum target, GLdouble s); void glClientActiveTexture(GLenum texture); void glWindowPos3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3sv(reinterpret_cast(array)); %End void glWindowPos3s(GLshort x, GLshort y, GLshort z); void glWindowPos3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3iv(reinterpret_cast(array)); %End void glWindowPos3i(GLint x, GLint y, GLint z); void glWindowPos3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3fv(reinterpret_cast(array)); %End void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); void glWindowPos3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3dv(reinterpret_cast(array)); %End void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); void glWindowPos2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2sv(reinterpret_cast(array)); %End void glWindowPos2s(GLshort x, GLshort y); void glWindowPos2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2iv(reinterpret_cast(array)); %End void glWindowPos2i(GLint x, GLint y); void glWindowPos2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2fv(reinterpret_cast(array)); %End void glWindowPos2f(GLfloat x, GLfloat y); void glWindowPos2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2dv(reinterpret_cast(array)); %End void glWindowPos2d(GLdouble x, GLdouble y); void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a1, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColorPointer(a0, a1, a2, array); %End void glSecondaryColor3usv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3usv(reinterpret_cast(array)); %End void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); void glSecondaryColor3uiv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3uiv(reinterpret_cast(array)); %End void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); void glSecondaryColor3ubv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3ubv(reinterpret_cast(array)); %End void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3sv(SIP_PYBUFFER v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3sv(reinterpret_cast(array)); %End void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); void glSecondaryColor3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3iv(reinterpret_cast(array)); %End void glSecondaryColor3i(GLint red, GLint green, GLint blue); void glSecondaryColor3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3fv(reinterpret_cast(array)); %End void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3dv(reinterpret_cast(array)); %End void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3bv(reinterpret_cast(array)); %End void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); void glFogCoordPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, a0, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordPointer(a0, a1, array); %End void glFogCoorddv(SIP_PYOBJECT coord /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoorddv(reinterpret_cast(array)); %End void glFogCoordd(GLdouble coord); void glFogCoordfv(SIP_PYOBJECT coord /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordfv(reinterpret_cast(array)); %End void glFogCoordf(GLfloat coord); void glVertexAttrib4usv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4usv(a0, reinterpret_cast(array)); %End void glVertexAttrib4uiv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4uiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4ubv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4ubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4sv(a0, reinterpret_cast(array)); %End void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4iv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4iv(a0, reinterpret_cast(array)); %End void glVertexAttrib4fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4dv(a0, reinterpret_cast(array)); %End void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4bv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4bv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nusv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nusv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nuiv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nuiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nubv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nsv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nsv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Niv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Niv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nbv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nbv(a0, reinterpret_cast(array)); %End void glVertexAttrib3sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3sv(a0, reinterpret_cast(array)); %End void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3dv(a0, reinterpret_cast(array)); %End void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib2sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2sv(a0, reinterpret_cast(array)); %End void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); void glVertexAttrib2fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2dv(a0, reinterpret_cast(array)); %End void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib1sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1sv(a0, reinterpret_cast(array)); %End void glVertexAttrib1s(GLuint index, GLshort x); void glVertexAttrib1fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib1f(GLuint index, GLfloat x); void glVertexAttrib1dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1dv(a0, reinterpret_cast(array)); %End void glVertexAttrib1d(GLuint index, GLdouble x); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, SIP_SSIZE_T); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, SIP_SSIZE_T); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, SIP_SSIZE_T); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, SIP_SSIZE_T); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; typedef PyObject *(*qpyopengl_from_GLdouble_t)(int *, const GLdouble *, SIP_SSIZE_T); extern qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); qpyopengl_from_GLdouble = (qpyopengl_from_GLdouble_t)sipImportSymbol("qpyopengl_from_GLdouble"); %End PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_2_1/0000755000076500000240000000000012613140040017776 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_2_1/_QOpenGLFunctions_2_1mod.sip0000644000076500000240000000360212613140040025152 0ustar philstaff00000000000000// _QOpenGLFunctions_2_1mod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_1 Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_2_1, keyword_arguments="Optional") %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_2_1.sip PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_2_1/qopenglfunctions_2_1.sip0000644000076500000240000034000012613140040024547 0ustar philstaff00000000000000// qopenglfunctions_2_1.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_1 Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_2_1 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_2_1(); virtual ~QOpenGLFunctions_2_1(); virtual bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLdouble fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /DocType="bool-or-tuple"/); %MethodCode GLboolean fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="double-or-tuple"/); %MethodCode GLdouble params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[3]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /DocType="tuple-of-int"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SET_ITEM(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScalef(GLfloat x, GLfloat y, GLfloat z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); void glPushMatrix(); void glPopMatrix(); void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); void glMultMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixd(reinterpret_cast(array)); %End void glMultMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixf(reinterpret_cast(array)); %End void glMatrixMode(GLenum mode); void glLoadMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixd(reinterpret_cast(array)); %End void glLoadMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixf(reinterpret_cast(array)); %End void glLoadIdentity(); void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLboolean glIsList(GLuint list); void glGetTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGeniv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGenfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLdouble params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGendv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End void glGetTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnviv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnvfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetLightiv(GLenum light, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetLightfv(GLenum light, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetClipPlane(GLenum plane, SIP_PYOBJECT *equation /DocType="tuple"/); %MethodCode GLdouble params[4]; sipCpp->glGetClipPlane(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, 4); %End void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a4, a3, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawPixels(a0, a1, a2, a3, array); %End void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); void glPixelMapusv(GLenum map, GLint mapsize, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapusv(a0, a1, reinterpret_cast(array)); %End void glPixelMapuiv(GLenum map, GLint mapsize, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapuiv(a0, a1, reinterpret_cast(array)); %End void glPixelMapfv(GLenum map, GLint mapsize, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapfv(a0, a1, reinterpret_cast(array)); %End void glPixelTransferi(GLenum pname, GLint param); void glPixelTransferf(GLenum pname, GLfloat param); void glPixelZoom(GLfloat xfactor, GLfloat yfactor); void glAlphaFunc(GLenum func, GLfloat ref); void glEvalPoint2(GLint i, GLint j); void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); void glEvalPoint1(GLint i); void glEvalMesh1(GLenum mode, GLint i1, GLint i2); void glEvalCoord2fv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2fv(reinterpret_cast(array)); %End void glEvalCoord2f(GLfloat u, GLfloat v); void glEvalCoord2dv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2dv(reinterpret_cast(array)); %End void glEvalCoord2d(GLdouble u, GLdouble v); void glEvalCoord1fv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1fv(reinterpret_cast(array)); %End void glEvalCoord1f(GLfloat u); void glEvalCoord1dv(SIP_PYOBJECT u /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1dv(reinterpret_cast(array)); %End void glEvalCoord1d(GLdouble u); void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2f(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2d(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1f(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, SIP_PYOBJECT points /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1d(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glPushAttrib(GLbitfield mask); void glPopAttrib(); void glAccum(GLenum op, GLfloat value); void glIndexMask(GLuint mask); void glClearIndex(GLfloat c); void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glPushName(GLuint name); void glPopName(); void glPassThrough(GLfloat token); void glLoadName(GLuint name); void glInitNames(); GLint glRenderMode(GLenum mode); void glTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGeniv(a0, a1, reinterpret_cast(array)); %End void glTexGeni(GLenum coord, GLenum pname, GLint param); void glTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGenfv(a0, a1, reinterpret_cast(array)); %End void glTexGenf(GLenum coord, GLenum pname, GLfloat param); void glTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGendv(a0, a1, reinterpret_cast(array)); %End void glTexGend(GLenum coord, GLenum pname, GLdouble param); void glTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnviv(a0, a1, reinterpret_cast(array)); %End void glTexEnvi(GLenum target, GLenum pname, GLint param); void glTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnvfv(a0, a1, reinterpret_cast(array)); %End void glTexEnvf(GLenum target, GLenum pname, GLfloat param); void glShadeModel(GLenum mode); void glPolygonStipple(SIP_PYOBJECT mask /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glPolygonStipple(reinterpret_cast(array)); %End void glMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialiv(a0, a1, reinterpret_cast(array)); %End void glMateriali(GLenum face, GLenum pname, GLint param); void glMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialfv(a0, a1, reinterpret_cast(array)); %End void glMaterialf(GLenum face, GLenum pname, GLfloat param); void glLineStipple(GLint factor, GLushort pattern); void glLightModeliv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModeliv(a0, reinterpret_cast(array)); %End void glLightModeli(GLenum pname, GLint param); void glLightModelfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModelfv(a0, reinterpret_cast(array)); %End void glLightModelf(GLenum pname, GLfloat param); void glLightiv(GLenum light, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightiv(a0, a1, reinterpret_cast(array)); %End void glLighti(GLenum light, GLenum pname, GLint param); void glLightfv(GLenum light, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightfv(a0, a1, reinterpret_cast(array)); %End void glLightf(GLenum light, GLenum pname, GLfloat param); void glFogiv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogiv(a0, reinterpret_cast(array)); %End void glFogi(GLenum pname, GLint param); void glFogfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogfv(a0, reinterpret_cast(array)); %End void glFogf(GLenum pname, GLfloat param); void glColorMaterial(GLenum face, GLenum mode); void glClipPlane(GLenum plane, SIP_PYOBJECT equation /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glClipPlane(a0, reinterpret_cast(array)); %End void glVertex4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4sv(reinterpret_cast(array)); %End void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); void glVertex4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4iv(reinterpret_cast(array)); %End void glVertex4i(GLint x, GLint y, GLint z, GLint w); void glVertex4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4fv(reinterpret_cast(array)); %End void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertex4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4dv(reinterpret_cast(array)); %End void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertex3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3sv(reinterpret_cast(array)); %End void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3iv(reinterpret_cast(array)); %End void glVertex3i(GLint x, GLint y, GLint z); void glVertex3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3fv(reinterpret_cast(array)); %End void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3dv(reinterpret_cast(array)); %End void glVertex3d(GLdouble x, GLdouble y, GLdouble z); void glVertex2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2sv(reinterpret_cast(array)); %End void glVertex2s(GLshort x, GLshort y); void glVertex2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2iv(reinterpret_cast(array)); %End void glVertex2i(GLint x, GLint y); void glVertex2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2fv(reinterpret_cast(array)); %End void glVertex2f(GLfloat x, GLfloat y); void glVertex2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2dv(reinterpret_cast(array)); %End void glVertex2d(GLdouble x, GLdouble y); void glTexCoord4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4sv(reinterpret_cast(array)); %End void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); void glTexCoord4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4iv(reinterpret_cast(array)); %End void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); void glTexCoord4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4fv(reinterpret_cast(array)); %End void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glTexCoord4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4dv(reinterpret_cast(array)); %End void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glTexCoord3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3sv(reinterpret_cast(array)); %End void glTexCoord3s(GLshort s, GLshort t, GLshort r); void glTexCoord3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3iv(reinterpret_cast(array)); %End void glTexCoord3i(GLint s, GLint t, GLint r); void glTexCoord3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3fv(reinterpret_cast(array)); %End void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); void glTexCoord3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3dv(reinterpret_cast(array)); %End void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); void glTexCoord2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2sv(reinterpret_cast(array)); %End void glTexCoord2s(GLshort s, GLshort t); void glTexCoord2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2iv(reinterpret_cast(array)); %End void glTexCoord2i(GLint s, GLint t); void glTexCoord2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2fv(reinterpret_cast(array)); %End void glTexCoord2f(GLfloat s, GLfloat t); void glTexCoord2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2dv(reinterpret_cast(array)); %End void glTexCoord2d(GLdouble s, GLdouble t); void glTexCoord1sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1sv(reinterpret_cast(array)); %End void glTexCoord1s(GLshort s); void glTexCoord1iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1iv(reinterpret_cast(array)); %End void glTexCoord1i(GLint s); void glTexCoord1fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1fv(reinterpret_cast(array)); %End void glTexCoord1f(GLfloat s); void glTexCoord1dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1dv(reinterpret_cast(array)); %End void glTexCoord1d(GLdouble s); void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); void glRasterPos4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4sv(reinterpret_cast(array)); %End void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); void glRasterPos4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4iv(reinterpret_cast(array)); %End void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); void glRasterPos4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4fv(reinterpret_cast(array)); %End void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glRasterPos4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4dv(reinterpret_cast(array)); %End void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glRasterPos3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3sv(reinterpret_cast(array)); %End void glRasterPos3s(GLshort x, GLshort y, GLshort z); void glRasterPos3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3iv(reinterpret_cast(array)); %End void glRasterPos3i(GLint x, GLint y, GLint z); void glRasterPos3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3fv(reinterpret_cast(array)); %End void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); void glRasterPos3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3dv(reinterpret_cast(array)); %End void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); void glRasterPos2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2sv(reinterpret_cast(array)); %End void glRasterPos2s(GLshort x, GLshort y); void glRasterPos2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2iv(reinterpret_cast(array)); %End void glRasterPos2i(GLint x, GLint y); void glRasterPos2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2fv(reinterpret_cast(array)); %End void glRasterPos2f(GLfloat x, GLfloat y); void glRasterPos2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2dv(reinterpret_cast(array)); %End void glRasterPos2d(GLdouble x, GLdouble y); void glNormal3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3sv(reinterpret_cast(array)); %End void glNormal3s(GLshort nx, GLshort ny, GLshort nz); void glNormal3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3iv(reinterpret_cast(array)); %End void glNormal3i(GLint nx, GLint ny, GLint nz); void glNormal3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3fv(reinterpret_cast(array)); %End void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3dv(reinterpret_cast(array)); %End void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); void glNormal3bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3bv(reinterpret_cast(array)); %End void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); void glIndexsv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexsv(reinterpret_cast(array)); %End void glIndexs(GLshort c); void glIndexiv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexiv(reinterpret_cast(array)); %End void glIndexi(GLint c); void glIndexfv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexfv(reinterpret_cast(array)); %End void glIndexf(GLfloat c); void glIndexdv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexdv(reinterpret_cast(array)); %End void glIndexd(GLdouble c); void glEnd(); void glEdgeFlagv(SIP_PYOBJECT flag /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEdgeFlagv(reinterpret_cast(array)); %End void glEdgeFlag(GLboolean flag); void glColor4usv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4usv(reinterpret_cast(array)); %End void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); void glColor4uiv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4uiv(reinterpret_cast(array)); %End void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); void glColor4ubv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4ubv(reinterpret_cast(array)); %End void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); void glColor4sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4sv(reinterpret_cast(array)); %End void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); void glColor4iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4iv(reinterpret_cast(array)); %End void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); void glColor4fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4fv(reinterpret_cast(array)); %End void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glColor4dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4dv(reinterpret_cast(array)); %End void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); void glColor4bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4bv(reinterpret_cast(array)); %End void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); void glColor3usv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3usv(reinterpret_cast(array)); %End void glColor3us(GLushort red, GLushort green, GLushort blue); void glColor3uiv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3uiv(reinterpret_cast(array)); %End void glColor3ui(GLuint red, GLuint green, GLuint blue); void glColor3ubv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3ubv(reinterpret_cast(array)); %End void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glColor3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3sv(reinterpret_cast(array)); %End void glColor3s(GLshort red, GLshort green, GLshort blue); void glColor3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3iv(reinterpret_cast(array)); %End void glColor3i(GLint red, GLint green, GLint blue); void glColor3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3fv(reinterpret_cast(array)); %End void glColor3f(GLfloat red, GLfloat green, GLfloat blue); void glColor3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3dv(reinterpret_cast(array)); %End void glColor3d(GLdouble red, GLdouble green, GLdouble blue); void glColor3bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3bv(reinterpret_cast(array)); %End void glColor3b(GLbyte red, GLbyte green, GLbyte blue); void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, SIP_PYOBJECT bitmap /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBitmap(a0, a1, a2, a3, a4, a5, reinterpret_cast(array)); %End void glBegin(GLenum mode); void glListBase(GLuint base); GLuint glGenLists(GLsizei range); void glDeleteLists(GLuint list, GLsizei range); void glCallList(GLuint list); void glEndList(); void glNewList(GLuint list, GLenum mode); void glPushClientAttrib(GLbitfield mask); void glPopClientAttrib(); void glVertexPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "VertexPointer", 0); if (sipError == sipErrorNone) sipCpp->glVertexPointer(a0, a1, a2, array); %End void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "TexCoordPointer", 0); if (sipError == sipErrorNone) sipCpp->glTexCoordPointer(a0, a1, a2, array); %End void glNormalPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "NormalPointer", 0); if (sipError == sipErrorNone) sipCpp->glNormalPointer(a0, a1, array); %End void glIndexPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "IndexPointer", 0); if (sipError == sipErrorNone) sipCpp->glIndexPointer(a0, a1, array); %End void glEnableClientState(GLenum array); void glEdgeFlagPointer(GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf, "EdgeFlagPointer", 0); if (sipError == sipErrorNone) sipCpp->glEdgeFlagPointer(a0, array); %End void glDisableClientState(GLenum array); void glColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "ColorPointer", 0); if (sipError == sipErrorNone) sipCpp->glColorPointer(a0, a1, a2, array); %End void glArrayElement(GLint i); void glResetMinmax(GLenum target); void glResetHistogram(GLenum target); void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); void glGetConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameteriv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); void glConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameterfv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT image /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter2D(a0, a1, a2, a3, a4, a5, array); %End void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT image /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter1D(a0, a1, a2, a3, a4, array); %End void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorSubTable(a0, a1, a2, a3, a4, array); %End void glGetColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameteriv(a0, a1, reinterpret_cast(array)); %End void glColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameterfv(a0, a1, reinterpret_cast(array)); %End void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT table /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTable(a0, a1, a2, a3, a4, array); %End void glMultTransposeMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixd(reinterpret_cast(array)); %End void glMultTransposeMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixf(reinterpret_cast(array)); %End void glLoadTransposeMatrixd(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixd(reinterpret_cast(array)); %End void glLoadTransposeMatrixf(SIP_PYOBJECT m /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixf(reinterpret_cast(array)); %End void glMultiTexCoord4sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); void glMultiTexCoord4fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord3sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord2sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); void glMultiTexCoord2iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2i(GLenum target, GLint s, GLint t); void glMultiTexCoord2fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord1sv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1s(GLenum target, GLshort s); void glMultiTexCoord1iv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1i(GLenum target, GLint s); void glMultiTexCoord1fv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1f(GLenum target, GLfloat s); void glMultiTexCoord1dv(GLenum target, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1d(GLenum target, GLdouble s); void glClientActiveTexture(GLenum texture); void glWindowPos3sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3sv(reinterpret_cast(array)); %End void glWindowPos3s(GLshort x, GLshort y, GLshort z); void glWindowPos3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3iv(reinterpret_cast(array)); %End void glWindowPos3i(GLint x, GLint y, GLint z); void glWindowPos3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3fv(reinterpret_cast(array)); %End void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); void glWindowPos3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3dv(reinterpret_cast(array)); %End void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); void glWindowPos2sv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2sv(reinterpret_cast(array)); %End void glWindowPos2s(GLshort x, GLshort y); void glWindowPos2iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2iv(reinterpret_cast(array)); %End void glWindowPos2i(GLint x, GLint y); void glWindowPos2fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2fv(reinterpret_cast(array)); %End void glWindowPos2f(GLfloat x, GLfloat y); void glWindowPos2dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2dv(reinterpret_cast(array)); %End void glWindowPos2d(GLdouble x, GLdouble y); void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a1, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColorPointer(a0, a1, a2, array); %End void glSecondaryColor3usv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3usv(reinterpret_cast(array)); %End void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); void glSecondaryColor3uiv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3uiv(reinterpret_cast(array)); %End void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); void glSecondaryColor3ubv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3ubv(reinterpret_cast(array)); %End void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3sv(SIP_PYBUFFER v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3sv(reinterpret_cast(array)); %End void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); void glSecondaryColor3iv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3iv(reinterpret_cast(array)); %End void glSecondaryColor3i(GLint red, GLint green, GLint blue); void glSecondaryColor3fv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3fv(reinterpret_cast(array)); %End void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3dv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3dv(reinterpret_cast(array)); %End void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3bv(SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3bv(reinterpret_cast(array)); %End void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); void glFogCoordPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, a0, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordPointer(a0, a1, array); %End void glFogCoorddv(SIP_PYOBJECT coord /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoorddv(reinterpret_cast(array)); %End void glFogCoordd(GLdouble coord); void glFogCoordfv(SIP_PYOBJECT coord /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordfv(reinterpret_cast(array)); %End void glFogCoordf(GLfloat coord); void glVertexAttrib4usv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4usv(a0, reinterpret_cast(array)); %End void glVertexAttrib4uiv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4uiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4ubv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4ubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4sv(a0, reinterpret_cast(array)); %End void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4iv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4iv(a0, reinterpret_cast(array)); %End void glVertexAttrib4fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4dv(a0, reinterpret_cast(array)); %End void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4bv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4bv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nusv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nusv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nuiv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nuiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nubv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nsv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nsv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Niv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Niv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nbv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nbv(a0, reinterpret_cast(array)); %End void glVertexAttrib3sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3sv(a0, reinterpret_cast(array)); %End void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3dv(a0, reinterpret_cast(array)); %End void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib2sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2sv(a0, reinterpret_cast(array)); %End void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); void glVertexAttrib2fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2dv(a0, reinterpret_cast(array)); %End void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib1sv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1sv(a0, reinterpret_cast(array)); %End void glVertexAttrib1s(GLuint index, GLshort x); void glVertexAttrib1fv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib1f(GLuint index, GLfloat x); void glVertexAttrib1dv(GLuint index, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1dv(a0, reinterpret_cast(array)); %End void glVertexAttrib1d(GLuint index, GLdouble x); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, SIP_SSIZE_T); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, SIP_SSIZE_T); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, SIP_SSIZE_T); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, SIP_SSIZE_T); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; typedef PyObject *(*qpyopengl_from_GLdouble_t)(int *, const GLdouble *, SIP_SSIZE_T); extern qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); qpyopengl_from_GLdouble = (qpyopengl_from_GLdouble_t)sipImportSymbol("qpyopengl_from_GLdouble"); %End PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_4_1_Core/0000755000076500000240000000000012613140040020750 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_4_1_Core/_QOpenGLFunctions_4_1_Coremod.sip0000644000076500000240000000362612613140040027104 0ustar philstaff00000000000000// _QOpenGLFunctions_4_1_Coremod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_4_1_Core Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_4_1_Core, keyword_arguments="Optional") %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_4_1_core.sip PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_4_1_Core/qopenglfunctions_4_1_core.sip0000644000076500000240000013504212613140040026543 0ustar philstaff00000000000000// qopenglfunctions_4_1_core.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_4_1_Core Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_4_1_Core : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_4_1_Core(); virtual ~QOpenGLFunctions_4_1_Core(); virtual bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLdouble fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /DocType="bool-or-tuple"/); %MethodCode GLboolean fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="double-or-tuple"/); %MethodCode GLdouble params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[3]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /DocType="tuple-of-int"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SET_ITEM(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); GLboolean glIsVertexArray(GLuint array); void glBindVertexArray(GLuint array); void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); void glGenerateMipmap(GLenum target); void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLenum glCheckFramebufferStatus(GLenum target); void glBindFramebuffer(GLenum target, GLuint framebuffer); GLboolean glIsFramebuffer(GLuint framebuffer); void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); GLboolean glIsRenderbuffer(GLuint renderbuffer); void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); void glUniform2ui(GLint location, GLuint v0, GLuint v1); void glUniform1ui(GLint location, GLuint v0); void glEndConditionalRender(); void glBeginConditionalRender(GLuint id, GLenum mode); void glClampColor(GLenum target, GLenum clamp); void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); void glEndTransformFeedback(); void glBeginTransformFeedback(GLenum primitiveMode); GLboolean glIsEnabledi(GLenum target, GLuint index); void glDisablei(GLenum target, GLuint index); void glEnablei(GLenum target, GLuint index); void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); void glPrimitiveRestartIndex(GLuint index); void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); void glSampleMaski(GLuint index, GLbitfield mask); void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); void glProvokingVertex(GLenum mode); void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glSecondaryColorP3ui(GLenum type, GLuint color); void glColorP4ui(GLenum type, GLuint color); void glColorP3ui(GLenum type, GLuint color); void glNormalP3ui(GLenum type, GLuint coords); void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); void glTexCoordP4ui(GLenum type, GLuint coords); void glTexCoordP3ui(GLenum type, GLuint coords); void glTexCoordP2ui(GLenum type, GLuint coords); void glTexCoordP1ui(GLenum type, GLuint coords); void glVertexP4ui(GLenum type, GLuint value); void glVertexP3ui(GLenum type, GLuint value); void glVertexP2ui(GLenum type, GLuint value); void glQueryCounter(GLuint id, GLenum target); void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); void glBindSampler(GLuint unit, GLuint sampler); GLboolean glIsSampler(GLuint sampler); void glVertexAttribDivisor(GLuint index, GLuint divisor); void glEndQueryIndexed(GLenum target, GLuint index); void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); void glDrawTransformFeedback(GLenum mode, GLuint id); void glResumeTransformFeedback(); void glPauseTransformFeedback(); GLboolean glIsTransformFeedback(GLuint id); void glBindTransformFeedback(GLenum target, GLuint id); void glPatchParameteri(GLenum pname, GLint value); void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); void glUniform2d(GLint location, GLdouble x, GLdouble y); void glUniform1d(GLint location, GLdouble x); void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glBlendFunci(GLuint buf, GLenum src, GLenum dst); void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); void glBlendEquationi(GLuint buf, GLenum mode); void glMinSampleShading(GLfloat value); void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttribL1d(GLuint index, GLdouble x); void glValidateProgramPipeline(GLuint pipeline); void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); void glProgramUniform1i(GLuint program, GLint location, GLint v0); GLboolean glIsProgramPipeline(GLuint pipeline); void glBindProgramPipeline(GLuint pipeline); void glActiveShaderProgram(GLuint pipeline, GLuint program); void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); void glProgramParameteri(GLuint program, GLenum pname, GLint value); void glClearDepthf(GLfloat dd); void glDepthRangef(GLfloat n, GLfloat f); void glReleaseShaderCompiler(); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, SIP_SSIZE_T); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, SIP_SSIZE_T); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, SIP_SSIZE_T); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, SIP_SSIZE_T); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; typedef PyObject *(*qpyopengl_from_GLdouble_t)(int *, const GLdouble *, SIP_SSIZE_T); extern qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); qpyopengl_from_GLdouble = (qpyopengl_from_GLdouble_t)sipImportSymbol("qpyopengl_from_GLdouble"); %End PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_ES2/0000755000076500000240000000000012613140040020006 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_ES2/_QOpenGLFunctions_ES2mod.sip0000644000076500000240000000360212613140040025172 0ustar philstaff00000000000000// _QOpenGLFunctions_ES2mod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_ES2 Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_ES2, keyword_arguments="Optional") %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_es2.sip PyQt-gpl-5.5.1/sip/_QOpenGLFunctions_ES2/qopenglfunctions_es2.sip0000644000076500000240000010065012613140040024674 0ustar philstaff00000000000000// qopenglfunctions_es2.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_ES2 Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_ES2 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_ES2(); bool initializeOpenGLFunctions(); void glActiveTexture(GLenum texture); void glAttachShader(GLuint program, GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glBindBuffer(GLenum target, GLuint buffer); void glBindFramebuffer(GLenum target, GLuint framebuffer); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); void glBindTexture(GLenum target, GLuint texture); void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glBlendEquation(GLenum mode); void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End GLenum glCheckFramebufferStatus(GLenum target); void glClear(GLbitfield mask); void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glClearDepthf(GLclampf depth); void glClearStencil(GLint s); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glCompileShader(GLuint shader); void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLuint glCreateProgram(); GLuint glCreateShader(GLenum type); void glCullFace(GLenum mode); void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glDeleteFramebuffers(GLsizei n, SIP_PYOBJECT framebuffers); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteFramebuffers(a0, reinterpret_cast(array)); %End void glDeleteProgram(GLuint program); void glDeleteRenderbuffers(GLsizei n, SIP_PYOBJECT renderbuffers); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteRenderbuffers(a0, reinterpret_cast(array)); %End void glDeleteShader(GLuint shader); void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glDepthFunc(GLenum func); void glDepthMask(GLboolean flag); void glDepthRangef(GLclampf zNear, GLclampf zFar); void glDetachShader(GLuint program, GLuint shader); void glDisable(GLenum cap); void glDisableVertexAttribArray(GLuint index); void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glEnable(GLenum cap); void glEnableVertexAttribArray(GLuint index); void glFinish(); void glFlush(); void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glFrontFace(GLenum mode); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenerateMipmap(GLenum target); void glGenFramebuffers(GLsizei n, SIP_PYOBJECT framebuffers /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenFramebuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenRenderbuffers(GLsizei n, SIP_PYOBJECT *renderbuffers /DocType="int-ot-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenRenderbuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenTextures(GLsizei n, SIP_PYOBJECT textures /DocType="int-or-tuple"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /DocType="str, int, int"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetAttachedShaders(GLuint program) /DocType="tuple-of-int"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SET_ITEM(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End int glGetAttribLocation(GLuint program, const GLchar *name); void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /DocType="bool-or-tuple"/); %MethodCode GLboolean fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLenum glGetError(); void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint fixed_params[4], *params; GLint nr_params = 0; GLenum query; switch (a0) { case GL_COMPRESSED_TEXTURE_FORMATS: query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif case GL_BLEND_COLOR: case GL_COLOR_CLEAR_VALUE: case GL_COLOR_WRITEMASK: case GL_SCISSOR_BOX: case GL_VIEWPORT: nr_params = 4; break; case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: #if defined(GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif case GL_MAX_VIEWPORT_DIMS: #if defined(GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[3]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype) /DocType="(int, int), int"/; %MethodCode GLint range[2], precision; sipCpp->glGetShaderPrecisionFormat(a0, a1, range, &precision); sipRes = Py_BuildValue("(ii)i", (int)range[0], (int)range[1], (int)precision); if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetShaderSource(GLuint shader) /DocType="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End int glGetUniformLocation(GLuint program, const GLchar *name); void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="float-or-tuple"/); %MethodCode GLfloat params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /DocType="int-or-tuple"/); %MethodCode GLint params[4]; SIP_SSIZE_T nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glHint(GLenum target, GLenum mode); GLboolean glIsBuffer(GLuint buffer); GLboolean glIsEnabled(GLenum cap); GLboolean glIsFramebuffer(GLuint framebuffer); GLboolean glIsProgram(GLuint program); GLboolean glIsRenderbuffer(GLuint renderbuffer); GLboolean glIsShader(GLuint shader); GLboolean glIsTexture(GLuint texture); void glLineWidth(GLfloat width); void glLinkProgram(GLuint program); void glPixelStorei(GLenum pname, GLint param); void glPolygonOffset(GLfloat factor, GLfloat units); void glReleaseShaderCompiler(); void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void glSampleCoverage(GLclampf value, GLboolean invert); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilMask(GLuint mask); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glUniform1f(GLint location, GLfloat x); void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform1i(GLint location, GLint x); void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform2f(GLint location, GLfloat x, GLfloat y); void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform2i(GLint location, GLint x, GLint y); void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform3i(GLint location, GLint x, GLint y, GLint z); void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT v /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUseProgram(GLuint program); void glValidateProgram(GLuint program); void glVertexAttrib1f(GLuint indx, GLfloat x); void glVertexAttrib1fv(GLuint indx, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); void glVertexAttrib2fv(GLuint indx, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3fv(GLuint indx, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4fv(GLuint indx, SIP_PYOBJECT values /DocType="sequence-or-buffer"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT ptr /DocType="sequence-or-buffer-or-offset"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, SIP_SSIZE_T); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, SIP_SSIZE_T); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, SIP_SSIZE_T); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, SIP_SSIZE_T); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); %End PyQt-gpl-5.5.1/sip/Enginio/0000755000076500000240000000000012613140040015430 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/Enginio/enginio.sip0000644000076500000240000000325112613140040017576 0ustar philstaff00000000000000// enginio.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class Enginio /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum AuthenticationState { NotAuthenticated, Authenticating, Authenticated, AuthenticationFailure, }; enum Operation { ObjectOperation, AccessControlOperation, UserOperation, UsergroupOperation, UsergroupMembersOperation, FileOperation, }; enum Role { SyncedRole, CreatedAtRole, UpdatedAtRole, IdRole, ObjectTypeRole, CustomPropertyRole, %If (Qt_5_4_0 -) JsonObjectRole, %End }; enum ErrorType { NoError, NetworkError, BackendError, }; }; %End PyQt-gpl-5.5.1/sip/Enginio/enginioclient.sip0000644000076500000240000000566312613140040021006 0ustar philstaff00000000000000// enginioclient.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioClient : EnginioClientConnection { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_EnginioReply, &sipType_EnginioReply, -1, 1}, {sipName_EnginioModel, &sipType_EnginioModel, -1, 2}, {sipName_EnginioClientConnection, &sipType_EnginioClientConnection, 4, 3}, {sipName_EnginioIdentity, &sipType_EnginioIdentity, 5, -1}, {sipName_EnginioClient, &sipType_EnginioClient, -1, -1}, {sipName_EnginioOAuth2Authentication, &sipType_EnginioOAuth2Authentication, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit EnginioClient(QObject *parent /TransferThis/ = 0); virtual ~EnginioClient(); EnginioReply *fullTextSearch(const QJsonObject &query); EnginioReply *query(const QJsonObject &query, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *create(const QJsonObject &object, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *update(const QJsonObject &object, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *remove(const QJsonObject &object, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *uploadFile(const QJsonObject &associatedObject, const QUrl &file); EnginioReply *downloadUrl(const QJsonObject &object); signals: void sessionAuthenticated(EnginioReply *reply) const; void sessionAuthenticationError(EnginioReply *reply) const; void sessionTerminated() const; void finished(EnginioReply *reply); void error(EnginioReply *reply); }; %End PyQt-gpl-5.5.1/sip/Enginio/enginioclientconnection.sip0000644000076500000240000000344512613140040023062 0ustar philstaff00000000000000// enginioclientconnection.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioClientConnection : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~EnginioClientConnection(); QByteArray backendId() const; void setBackendId(const QByteArray &backendId); EnginioIdentity *identity() const; void setIdentity(EnginioIdentity *identity); Enginio::AuthenticationState authenticationState() const; QUrl serviceUrl() const; void setServiceUrl(const QUrl &serviceUrl); QNetworkAccessManager *networkManager() const; signals: void backendIdChanged(const QByteArray &backendId); void serviceUrlChanged(const QUrl &url); void authenticationStateChanged(Enginio::AuthenticationState state); void identityChanged(EnginioIdentity *identity); private: EnginioClientConnection(const EnginioClientConnection &); }; %End PyQt-gpl-5.5.1/sip/Enginio/enginioidentity.sip0000644000076500000240000000207312613140040021351 0ustar philstaff00000000000000// enginioidentity.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioIdentity : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End }; %End PyQt-gpl-5.5.1/sip/Enginio/Enginiomod.sip0000644000076500000240000000411712613140040020240 0ustar philstaff00000000000000// Enginiomod.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.Enginio, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include enginio.sip %Include enginioclient.sip %Include enginioclientconnection.sip %Include enginioidentity.sip %Include enginiomodel.sip %Include enginiooauth2authentication.sip %Include enginioreply.sip PyQt-gpl-5.5.1/sip/Enginio/enginiomodel.sip0000644000076500000240000000361412613140040020622 0ustar philstaff00000000000000// enginiomodel.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioModel : QAbstractListModel { %TypeHeaderCode #include %End public: explicit EnginioModel(QObject *parent /TransferThis/ = 0); virtual ~EnginioModel(); EnginioClient *client() const; void setClient(const EnginioClient *client); QJsonObject query(); void setQuery(const QJsonObject &query); Enginio::Operation operation() const; void setOperation(Enginio::Operation operation); EnginioReply *append(const QJsonObject &value); EnginioReply *remove(int row); EnginioReply *setData(int row, const QVariant &value, const QString &role); %If (Qt_5_4_0 -) EnginioReply *setData(int row, const QJsonObject &value); %End %If (Qt_5_4_0 -) EnginioReply *reload(); %End signals: void queryChanged(const QJsonObject &query); void clientChanged(EnginioClient *client); void operationChanged(Enginio::Operation operation); private: EnginioModel(const EnginioModel &); }; %End PyQt-gpl-5.5.1/sip/Enginio/enginiooauth2authentication.sip0000644000076500000240000000271712613140040023667 0ustar philstaff00000000000000// enginiooauth2authentication.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioOAuth2Authentication : EnginioIdentity { %TypeHeaderCode #include %End public: explicit EnginioOAuth2Authentication(QObject *parent /TransferThis/ = 0); virtual ~EnginioOAuth2Authentication(); QString user() const; QString password() const; void setUser(const QString &user); void setPassword(const QString &password); signals: void userChanged(const QString &user); void passwordChanged(const QString &password); }; %End PyQt-gpl-5.5.1/sip/Enginio/enginioreply.sip0000644000076500000240000000311412613140040020650 0ustar philstaff00000000000000// enginioreply.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioReply : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~EnginioReply(); QJsonObject data() const; // Methods from the hidden EnginioReplyState class. signals: void progress(qint64 bytesSent, qint64 bytesTotal); public: Enginio::ErrorType errorType() const; QNetworkReply::NetworkError networkError() const; QString errorString() const; int backendStatus() const; bool isError() const; bool isFinished() const; signals: void finished(EnginioReply *reply); void dataChanged(); private: EnginioReply(const EnginioReply &); }; %End PyQt-gpl-5.5.1/sip/pyqt-gpl.sip0000644000076500000240000000002612613140040016330 0ustar philstaff00000000000000%License /Type="gpl"/ PyQt-gpl-5.5.1/sip/QAxContainer/0000755000076500000240000000000012613140040016374 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QAxContainer/qaxbase.sip0000644000076500000240000001254712613140040020546 0ustar philstaff00000000000000// This is the SIP interface definition for QAxBase. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxBase /Abstract, PyQtNoQMetaObject/ { %TypeHeaderCode #include %End public: //QAxBase(IUnknown *iface = 0); virtual ~QAxBase(); QString control() const; //long queryInterface(const QUuid &, void **) const; // Note that the order of these overloads is significant. QVariant dynamicCall(const char *, QList & /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = new QVariant(sipCpp->dynamicCall(a0, *a1)); Py_END_ALLOW_THREADS // Update the input list with the (possibly) new values. for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(a1Wrapper); ++i) { QVariant *v = new QVariant(a1->at(i)); PyObject *v_obj = sipConvertFromNewType(v, sipType_QVariant, NULL); if (!v_obj) { delete v; sipIsErr = 1; break; } if (PyList_SetItem(a1Wrapper, i, v_obj) < 0) { Py_DECREF(v_obj); sipIsErr = 1; break; } } %End QVariant dynamicCall(const char *, const QVariant &value1 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value2 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value3 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value4 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value5 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value6 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value7 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value8 /DocValue="Py_v3:None"/ = QVariant()); // Note that the order of these overloads is significant. QAxObject *querySubObject(const char *, QList & /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->querySubObject(a0, *a1); Py_END_ALLOW_THREADS // Update the input list with the (possibly) new values. for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(a1Wrapper); ++i) { QVariant *v = new QVariant(a1->at(i)); PyObject *v_obj = sipConvertFromNewType(v, sipType_QVariant, NULL); if (!v_obj) { delete v; sipIsErr = 1; break; } if (PyList_SetItem(a1Wrapper, i, v_obj) < 0) { Py_DECREF(v_obj); sipIsErr = 1; break; } } %End QAxObject *querySubObject(const char *, const QVariant &value1 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value2 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value3 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value4 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value5 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value6 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value7 /DocValue="Py_v3:None"/ = QVariant(), const QVariant &value8 /DocValue="Py_v3:None"/ = QVariant()); // SIP has a bug triggered by a template definition being the subject of // multiple typedefs. It only really matters when building everything as // one big module (the code that implements the type is duplicated in // other cases). Until it is fixed we just avoid the problematic typedef. //typedef QMap PropertyBag; //PropertyBag propertyBag() const; //void setPropertyBag(const PropertyBag &); QVariantMap propertyBag() const; void setPropertyBag(const QVariantMap &); QString generateDocumentation(); virtual bool propertyWritable(const char *) const; virtual void setPropertyWritable(const char *, bool); bool isNull() const; QStringList verbs() const; QVariant asVariant() const; signals: void signal(const QString &, int, void *); void propertyChanged(const QString &); void exception(int, const QString &, const QString &, const QString &); public: virtual void clear(); bool setControl(const QString &); void disableMetaObject(); void disableClassInfo(); void disableEventSink(); protected: //virtual bool initialize(IUnknown** ptr); //bool initializeRemote(IUnknown** ptr); //bool initializeLicensed(IUnknown** ptr); //bool initializeActive(IUnknown** ptr); //bool initializeFromFile(IUnknown** ptr); }; PyQt-gpl-5.5.1/sip/QAxContainer/QAxContainermod.sip0000644000076500000240000000362412613140040022152 0ustar philstaff00000000000000// This is the SIP interface definition for the QAxContainer module of PyQt v5. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QAxContainer, keyword_arguments="Optional") %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qaxbase.sip %Include qaxobject.sip %Include qaxwidget.sip PyQt-gpl-5.5.1/sip/QAxContainer/qaxobject.sip0000644000076500000240000000354512613140040021100 0ustar philstaff00000000000000// This is the SIP interface definition for QAxObject. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxObject : QObject, QAxBase /PyQtNoQMetaObject/ { %TypeHeaderCode #include %End public: QAxObject(QObject *parent /TransferThis/ = 0); QAxObject(const QString &, QObject *parent /TransferThis/ = 0); //QAxObject(IUnknown *, QObject *parent /TransferThis/ = 0); ~QAxObject(); %ConvertToSubClassCode static struct class_graph { const char *name; sipWrapperType **type; int yes, no; } graph[] = { {sipName_QAxObject, &sipClass_QAxObject, 1, -1}, {sipName_QAxWidget, &sipClass_QAxWidget, -1, -1}, }; int i = 0; sipClass = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipClass = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End bool doVerb(const QString &); protected: void connectNotify(const QMetaMethod &); }; PyQt-gpl-5.5.1/sip/QAxContainer/qaxwidget.sip0000644000076500000240000000330612613140040021110 0ustar philstaff00000000000000// This is the SIP interface definition for QAxWidget. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxWidget : QWidget, QAxBase /PyQtNoQMetaObject/ { %TypeHeaderCode #include %End public: QAxWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QAxWidget(const QString &, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); //QAxWidget(IUnknown *, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); ~QAxWidget(); void clear(); bool doVerb(const QString &); QSize sizeHint() const; QSize minimumSizeHint() const; //virtual QaxAggregated *createAggregate(); protected: //bool initialize(IUnknown **); virtual bool createHostWindow(bool); void changeEvent(QEvent *); void resizeEvent(QResizeEvent *); virtual bool translateKeyEvent(int,int) const; void connectNotify(const QMetaMethod &); }; PyQt-gpl-5.5.1/sip/QtBluetooth/0000755000076500000240000000000012613140040016312 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetooth.sip0000644000076500000240000000256712613140040021227 0ustar philstaff00000000000000// qbluetooth.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) namespace QBluetooth { %TypeHeaderCode #include %End enum Security { NoSecurity, Authorization, Authentication, Encryption, Secure, }; typedef QFlags SecurityFlags; QFlags operator|(QBluetooth::Security f1, QFlags f2); }; %End %If (Qt_5_4_0 -) typedef quint16 QLowEnergyHandle; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothaddress.sip0000644000076500000240000000303512613140040022564 0ustar philstaff00000000000000// qbluetoothaddress.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothAddress { %TypeHeaderCode #include %End public: QBluetoothAddress(); explicit QBluetoothAddress(quint64 address); explicit QBluetoothAddress(const QString &address); QBluetoothAddress(const QBluetoothAddress &other); ~QBluetoothAddress(); bool isNull() const; void clear(); bool operator<(const QBluetoothAddress &other) const; bool operator==(const QBluetoothAddress &other) const; bool operator!=(const QBluetoothAddress &other) const; quint64 toUInt64() const; QString toString() const; }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothdevicediscoveryagent.sip0000644000076500000240000000426212613140040025350 0ustar philstaff00000000000000// qbluetoothdevicediscoveryagent.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothDeviceDiscoveryAgent : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InputOutputError, PoweredOffError, %If (Qt_5_3_0 -) InvalidBluetoothAdapterError, %End %If (Qt_5_5_0 -) UnsupportedPlatformError, %End UnknownError, }; enum InquiryType { GeneralUnlimitedInquiry, LimitedInquiry, }; QBluetoothDeviceDiscoveryAgent(QObject *parent /TransferThis/ = 0); QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothDeviceDiscoveryAgent(); QBluetoothDeviceDiscoveryAgent::InquiryType inquiryType() const; void setInquiryType(QBluetoothDeviceDiscoveryAgent::InquiryType type); bool isActive() const; QBluetoothDeviceDiscoveryAgent::Error error() const; QString errorString() const; QList discoveredDevices() const; public slots: void start(); void stop(); signals: void deviceDiscovered(const QBluetoothDeviceInfo &info); void finished(); void error(QBluetoothDeviceDiscoveryAgent::Error error); void canceled(); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothdeviceinfo.sip0000644000076500000240000001446112613140040023257 0ustar philstaff00000000000000// qbluetoothdeviceinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothDeviceInfo { %TypeHeaderCode #include %End public: enum MajorDeviceClass { MiscellaneousDevice, ComputerDevice, PhoneDevice, LANAccessDevice, AudioVideoDevice, PeripheralDevice, ImagingDevice, WearableDevice, ToyDevice, HealthDevice, UncategorizedDevice, }; enum MinorMiscellaneousClass { UncategorizedMiscellaneous, }; enum MinorComputerClass { UncategorizedComputer, DesktopComputer, ServerComputer, LaptopComputer, HandheldClamShellComputer, HandheldComputer, WearableComputer, }; enum MinorPhoneClass { UncategorizedPhone, CellularPhone, CordlessPhone, SmartPhone, WiredModemOrVoiceGatewayPhone, CommonIsdnAccessPhone, }; enum MinorNetworkClass { NetworkFullService, NetworkLoadFactorOne, NetworkLoadFactorTwo, NetworkLoadFactorThree, NetworkLoadFactorFour, NetworkLoadFactorFive, NetworkLoadFactorSix, NetworkNoService, }; enum MinorAudioVideoClass { UncategorizedAudioVideoDevice, WearableHeadsetDevice, HandsFreeDevice, Microphone, Loudspeaker, Headphones, PortableAudioDevice, CarAudio, SetTopBox, HiFiAudioDevice, Vcr, VideoCamera, Camcorder, VideoMonitor, VideoDisplayAndLoudspeaker, VideoConferencing, GamingDevice, }; enum MinorPeripheralClass { UncategorizedPeripheral, KeyboardPeripheral, PointingDevicePeripheral, KeyboardWithPointingDevicePeripheral, JoystickPeripheral, GamepadPeripheral, RemoteControlPeripheral, SensingDevicePeripheral, DigitizerTabletPeripheral, CardReaderPeripheral, }; enum MinorImagingClass { UncategorizedImagingDevice, ImageDisplay, ImageCamera, ImageScanner, ImagePrinter, }; enum MinorWearableClass { UncategorizedWearableDevice, WearableWristWatch, WearablePager, WearableJacket, WearableHelmet, WearableGlasses, }; enum MinorToyClass { UncategorizedToy, ToyRobot, ToyVehicle, ToyDoll, ToyController, ToyGame, }; enum MinorHealthClass { UncategorizedHealthDevice, HealthBloodPressureMonitor, HealthThermometer, HealthWeightScale, HealthGlucoseMeter, HealthPulseOximeter, HealthDataDisplay, HealthStepCounter, }; enum ServiceClass { NoService, PositioningService, NetworkingService, RenderingService, CapturingService, ObjectTransferService, AudioService, TelephonyService, InformationService, AllServices, }; typedef QFlags ServiceClasses; enum DataCompleteness { DataComplete, DataIncomplete, DataUnavailable, }; QBluetoothDeviceInfo(); QBluetoothDeviceInfo(const QBluetoothAddress &address, const QString &name, quint32 classOfDevice); %If (Qt_5_5_0 -) QBluetoothDeviceInfo(const QBluetoothUuid &uuid, const QString &name, quint32 classOfDevice); %End QBluetoothDeviceInfo(const QBluetoothDeviceInfo &other); ~QBluetoothDeviceInfo(); bool isValid() const; bool isCached() const; void setCached(bool cached); bool operator==(const QBluetoothDeviceInfo &other) const; bool operator!=(const QBluetoothDeviceInfo &other) const; QBluetoothAddress address() const; QString name() const; QFlags serviceClasses() const; QBluetoothDeviceInfo::MajorDeviceClass majorDeviceClass() const; quint8 minorDeviceClass() const; qint16 rssi() const; void setRssi(qint16 signal); void setServiceUuids(const QList &uuids, QBluetoothDeviceInfo::DataCompleteness completeness); QList serviceUuids(QBluetoothDeviceInfo::DataCompleteness *completeness /Out/ = 0) const; QBluetoothDeviceInfo::DataCompleteness serviceUuidsCompleteness() const; %If (Qt_5_4_0 -) enum CoreConfiguration { UnknownCoreConfiguration, LowEnergyCoreConfiguration, BaseRateCoreConfiguration, BaseRateAndLowEnergyCoreConfiguration, }; %End %If (Qt_5_4_0 -) typedef QFlags CoreConfigurations; %End %If (Qt_5_4_0 -) void setCoreConfigurations(QFlags coreConfigs); %End %If (Qt_5_4_0 -) QFlags coreConfigurations() const; %End %If (Qt_5_5_0 -) void setDeviceUuid(const QBluetoothUuid &uuid); %End %If (Qt_5_5_0 -) QBluetoothUuid deviceUuid() const; %End }; %End %If (Qt_5_5_0 -) QFlags operator|(QBluetoothDeviceInfo::CoreConfiguration f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QBluetoothDeviceInfo::ServiceClass f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothhostinfo.sip0000644000076500000240000000274712613140040023001 0ustar philstaff00000000000000// qbluetoothhostinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothHostInfo { %TypeHeaderCode #include %End public: QBluetoothHostInfo(); QBluetoothHostInfo(const QBluetoothHostInfo &other); ~QBluetoothHostInfo(); QBluetoothAddress address() const; void setAddress(const QBluetoothAddress &address); QString name() const; void setName(const QString &name); %If (Qt_5_5_0 -) bool operator==(const QBluetoothHostInfo &other) const; %End %If (Qt_5_5_0 -) bool operator!=(const QBluetoothHostInfo &other) const; %End }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothlocaldevice.sip0000644000076500000240000000534712613140040023421 0ustar philstaff00000000000000// qbluetoothlocaldevice.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothLocalDevice : QObject { %TypeHeaderCode #include %End public: enum Pairing { Unpaired, Paired, AuthorizedPaired, }; enum HostMode { HostPoweredOff, HostConnectable, HostDiscoverable, HostDiscoverableLimitedInquiry, }; enum Error { NoError, PairingError, UnknownError, }; QBluetoothLocalDevice(QObject *parent /TransferThis/ = 0); QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothLocalDevice(); bool isValid() const; void requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing); QBluetoothLocalDevice::Pairing pairingStatus(const QBluetoothAddress &address) const; void setHostMode(QBluetoothLocalDevice::HostMode mode); QBluetoothLocalDevice::HostMode hostMode() const; void powerOn(); QString name() const; QBluetoothAddress address() const; static QList allDevices(); %If (Qt_5_3_0 -) QList connectedDevices() const; %End public slots: void pairingConfirmation(bool confirmation); signals: void hostModeStateChanged(QBluetoothLocalDevice::HostMode state); void pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing); void pairingDisplayPinCode(const QBluetoothAddress &address, QString pin); void pairingDisplayConfirmation(const QBluetoothAddress &address, QString pin); void error(QBluetoothLocalDevice::Error error); %If (Qt_5_3_0 -) void deviceConnected(const QBluetoothAddress &address); %End %If (Qt_5_3_0 -) void deviceDisconnected(const QBluetoothAddress &address); %End }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothserver.sip0000644000076500000240000000705512613140040022453 0ustar philstaff00000000000000// qbluetoothserver.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothServer : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QBluetoothDeviceDiscoveryAgent, &sipType_QBluetoothDeviceDiscoveryAgent, -1, 1}, {sipName_QBluetoothServiceDiscoveryAgent, &sipType_QBluetoothServiceDiscoveryAgent, -1, 2}, #if QT_VERSION >= 0x050400 {sipName_QLowEnergyService, &sipType_QLowEnergyService, -1, 3}, #else {0, 0, -1, 3}, #endif {sipName_QBluetoothTransferReply, &sipType_QBluetoothTransferReply, -1, 4}, {sipName_QBluetoothTransferManager, &sipType_QBluetoothTransferManager, -1, 5}, {sipName_QBluetoothServer, &sipType_QBluetoothServer, -1, 6}, #if QT_VERSION >= 0x050400 {sipName_QLowEnergyController, &sipType_QLowEnergyController, -1, 7}, #else {0, 0, -1, 7}, #endif {sipName_QBluetoothSocket, &sipType_QBluetoothSocket, -1, 8}, {sipName_QBluetoothLocalDevice, &sipType_QBluetoothLocalDevice, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, UnknownError, PoweredOffError, InputOutputError, ServiceAlreadyRegisteredError, UnsupportedProtocolError, }; QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothServer(); void close() /ReleaseGIL/; bool listen(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0) /ReleaseGIL/; QBluetoothServiceInfo listen(const QBluetoothUuid &uuid, const QString &serviceName /DocValue="''"/ = QString()) /ReleaseGIL/; bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; bool hasPendingConnections() const; QBluetoothSocket *nextPendingConnection() /Factory/; QBluetoothAddress serverAddress() const; quint16 serverPort() const; void setSecurityFlags(QBluetooth::SecurityFlags security); QBluetooth::SecurityFlags securityFlags() const; QBluetoothServiceInfo::Protocol serverType() const; QBluetoothServer::Error error() const; signals: void newConnection(); void error(QBluetoothServer::Error); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothservicediscoveryagent.sip0000644000076500000240000000456112613140040025553 0ustar philstaff00000000000000// qbluetoothservicediscoveryagent.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothServiceDiscoveryAgent : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InputOutputError, PoweredOffError, %If (Qt_5_3_0 -) InvalidBluetoothAdapterError, %End UnknownError, }; enum DiscoveryMode { MinimalDiscovery, FullDiscovery, }; QBluetoothServiceDiscoveryAgent(QObject *parent /TransferThis/ = 0); QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothServiceDiscoveryAgent(); bool isActive() const; QBluetoothServiceDiscoveryAgent::Error error() const; QString errorString() const; QList discoveredServices() const; void setUuidFilter(const QList &uuids); void setUuidFilter(const QBluetoothUuid &uuid); QList uuidFilter() const; bool setRemoteAddress(const QBluetoothAddress &address); QBluetoothAddress remoteAddress() const; public slots: void start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = QBluetoothServiceDiscoveryAgent::MinimalDiscovery); void stop(); void clear(); signals: void serviceDiscovered(const QBluetoothServiceInfo &info); void finished(); void canceled(); void error(QBluetoothServiceDiscoveryAgent::Error error); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothserviceinfo.sip0000644000076500000240000000636512613140040023464 0ustar philstaff00000000000000// qbluetoothserviceinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothServiceInfo { %TypeHeaderCode #include %End public: enum AttributeId { ServiceRecordHandle, ServiceClassIds, ServiceRecordState, ServiceId, ProtocolDescriptorList, BrowseGroupList, LanguageBaseAttributeIdList, ServiceInfoTimeToLive, ServiceAvailability, BluetoothProfileDescriptorList, DocumentationUrl, ClientExecutableUrl, IconUrl, AdditionalProtocolDescriptorList, PrimaryLanguageBase, ServiceName, ServiceDescription, ServiceProvider, }; enum Protocol { UnknownProtocol, L2capProtocol, RfcommProtocol, }; QBluetoothServiceInfo(); QBluetoothServiceInfo(const QBluetoothServiceInfo &other); ~QBluetoothServiceInfo(); bool isValid() const; bool isComplete() const; void setDevice(const QBluetoothDeviceInfo &info); QBluetoothDeviceInfo device() const; QVariant attribute(quint16 attributeId) const; QList attributes() const; bool contains(quint16 attributeId) const; void removeAttribute(quint16 attributeId); QBluetoothServiceInfo::Protocol socketProtocol() const; int protocolServiceMultiplexer() const; int serverChannel() const; QBluetoothServiceInfo::Sequence protocolDescriptor(QBluetoothUuid::ProtocolUuid protocol) const; bool isRegistered() const; bool registerService(const QBluetoothAddress &localAdapter = QBluetoothAddress()); bool unregisterService(); void setAttribute(quint16 attributeId, const QBluetoothUuid &value); void setAttribute(quint16 attributeId, const QBluetoothServiceInfo::Sequence &value); void setAttribute(quint16 attributeId, const QVariant &value); void setServiceName(const QString &name); QString serviceName() const; void setServiceDescription(const QString &description); QString serviceDescription() const; void setServiceProvider(const QString &provider); QString serviceProvider() const; void setServiceAvailability(quint8 availability); quint8 serviceAvailability() const; void setServiceUuid(const QBluetoothUuid &uuid); QBluetoothUuid serviceUuid() const; QList serviceClassUuids() const; }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothsocket.sip0000644000076500000240000001122012613140040022422 0ustar philstaff00000000000000// qbluetoothsocket.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothSocket : QIODevice { %TypeHeaderCode #include %End public: enum SocketState { UnconnectedState, ServiceLookupState, ConnectingState, ConnectedState, BoundState, ClosingState, ListeningState, }; enum SocketError { NoSocketError, UnknownSocketError, HostNotFoundError, ServiceNotFoundError, NetworkError, UnsupportedProtocolError, %If (Qt_5_3_0 -) OperationError, %End }; QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent /TransferThis/ = 0); QBluetoothSocket(QObject *parent /TransferThis/ = 0); virtual ~QBluetoothSocket(); void abort(); virtual void close() /ReleaseGIL/; virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; void connectToService(const QBluetoothServiceInfo &service, QFlags mode = QIODevice::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, QFlags mode = QIODevice::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothAddress &address, quint16 port, QFlags mode = QIODevice::ReadWrite) /ReleaseGIL/; void disconnectFromService() /ReleaseGIL/; QString localName() const; QBluetoothAddress localAddress() const; quint16 localPort() const; QString peerName() const; QBluetoothAddress peerAddress() const; quint16 peerPort() const; bool setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, QBluetoothSocket::SocketState state = QBluetoothSocket::ConnectedState, QFlags mode = QIODevice::ReadWrite); int socketDescriptor() const; QBluetoothServiceInfo::Protocol socketType() const; QBluetoothSocket::SocketState state() const; QBluetoothSocket::SocketError error() const; QString errorString() const; signals: void connected(); void disconnected(); void error(QBluetoothSocket::SocketError error); void stateChanged(QBluetoothSocket::SocketState state); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QBluetoothSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 maxSize /ArraySize/) /ReleaseGIL/; void setSocketState(QBluetoothSocket::SocketState state); void setSocketError(QBluetoothSocket::SocketError error); void doDeviceDiscovery(const QBluetoothServiceInfo &service, QFlags openMode); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothtransfermanager.sip0000644000076500000240000000256012613140040024320 0ustar philstaff00000000000000// qbluetoothtransfermanager.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothTransferManager : QObject { %TypeHeaderCode #include %End public: explicit QBluetoothTransferManager(QObject *parent /TransferThis/ = 0); virtual ~QBluetoothTransferManager(); QBluetoothTransferReply *put(const QBluetoothTransferRequest &request, QIODevice *data) /Transfer/; signals: void finished(QBluetoothTransferReply *reply); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothtransferreply.sip0000644000076500000240000000423212613140040024037 0ustar philstaff00000000000000// qbluetoothtransferreply.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothTransferReply : QObject { %TypeHeaderCode #include %End public: enum TransferError { NoError, UnknownError, FileNotFoundError, HostNotFoundError, UserCanceledTransferError, %If (Qt_5_3_0 -) IODeviceNotReadableError, %End %If (Qt_5_3_0 -) ResourceBusyError, %End %If (Qt_5_4_0 -) SessionError, %End }; virtual ~QBluetoothTransferReply(); virtual bool isFinished() const = 0; virtual bool isRunning() const = 0; QBluetoothTransferManager *manager() const; virtual QBluetoothTransferReply::TransferError error() const = 0; virtual QString errorString() const = 0; QBluetoothTransferRequest request() const; public slots: void abort(); signals: void finished(QBluetoothTransferReply *); void transferProgress(qint64 bytesTransferred, qint64 bytesTotal); %If (Qt_5_4_0 -) void error(QBluetoothTransferReply::TransferError lastError); %End protected: explicit QBluetoothTransferReply(QObject *parent /TransferThis/ = 0); void setManager(QBluetoothTransferManager *manager); void setRequest(const QBluetoothTransferRequest &request); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothtransferrequest.sip0000644000076500000240000000345312613140040024400 0ustar philstaff00000000000000// qbluetoothtransferrequest.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothTransferRequest { %TypeHeaderCode #include %End public: enum Attribute { DescriptionAttribute, TimeAttribute, TypeAttribute, LengthAttribute, NameAttribute, }; explicit QBluetoothTransferRequest(const QBluetoothAddress &address = QBluetoothAddress()); QBluetoothTransferRequest(const QBluetoothTransferRequest &other); ~QBluetoothTransferRequest(); QVariant attribute(QBluetoothTransferRequest::Attribute code, const QVariant &defaultValue = QVariant()) const; void setAttribute(QBluetoothTransferRequest::Attribute code, const QVariant &value); QBluetoothAddress address() const; bool operator!=(const QBluetoothTransferRequest &other) const; bool operator==(const QBluetoothTransferRequest &other) const; }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qbluetoothuuid.sip0000644000076500000240000002545412613140040022116 0ustar philstaff00000000000000// qbluetoothuuid.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothUuid : QUuid { %TypeHeaderCode #include %End public: enum ProtocolUuid { Sdp, Udp, Rfcomm, Tcp, TcsBin, TcsAt, Att, Obex, Ip, Ftp, Http, Wsp, Bnep, Upnp, Hidp, HardcopyControlChannel, HardcopyDataChannel, HardcopyNotification, Avctp, Avdtp, Cmtp, UdiCPlain, McapControlChannel, McapDataChannel, L2cap, }; enum ServiceClassUuid { ServiceDiscoveryServer, BrowseGroupDescriptor, PublicBrowseGroup, SerialPort, LANAccessUsingPPP, DialupNetworking, IrMCSync, ObexObjectPush, OBEXFileTransfer, IrMCSyncCommand, Headset, AudioSource, AudioSink, AV_RemoteControlTarget, AdvancedAudioDistribution, AV_RemoteControl, AV_RemoteControlController, HeadsetAG, PANU, NAP, GN, DirectPrinting, ReferencePrinting, ImagingResponder, ImagingAutomaticArchive, ImagingReferenceObjects, Handsfree, HandsfreeAudioGateway, DirectPrintingReferenceObjectsService, ReflectedUI, BasicPrinting, PrintingStatus, HumanInterfaceDeviceService, HardcopyCableReplacement, HCRPrint, HCRScan, SIMAccess, PhonebookAccessPCE, PhonebookAccessPSE, PhonebookAccess, HeadsetHS, MessageAccessServer, MessageNotificationServer, MessageAccessProfile, PnPInformation, GenericNetworking, GenericFileTransfer, GenericAudio, GenericTelephony, VideoSource, VideoSink, VideoDistribution, HDP, HDPSource, HDPSink, %If (Qt_5_3_0 -) BasicImage, %End %If (Qt_5_3_0 -) GNSS, %End %If (Qt_5_3_0 -) GNSSServer, %End %If (Qt_5_3_0 -) Display3D, %End %If (Qt_5_3_0 -) Glasses3D, %End %If (Qt_5_3_0 -) Synchronization3D, %End %If (Qt_5_3_0 -) MPSProfile, %End %If (Qt_5_3_0 -) MPSService, %End %If (Qt_5_4_0 -) GenericAccess, %End %If (Qt_5_4_0 -) GenericAttribute, %End %If (Qt_5_4_0 -) ImmediateAlert, %End %If (Qt_5_4_0 -) LinkLoss, %End %If (Qt_5_4_0 -) TxPower, %End %If (Qt_5_4_0 -) CurrentTimeService, %End %If (Qt_5_4_0 -) ReferenceTimeUpdateService, %End %If (Qt_5_4_0 -) NextDSTChangeService, %End %If (Qt_5_4_0 -) Glucose, %End %If (Qt_5_4_0 -) HealthThermometer, %End %If (Qt_5_4_0 -) DeviceInformation, %End %If (Qt_5_4_0 -) HeartRate, %End %If (Qt_5_4_0 -) PhoneAlertStatusService, %End %If (Qt_5_4_0 -) BatteryService, %End %If (Qt_5_4_0 -) BloodPressure, %End %If (Qt_5_4_0 -) AlertNotificationService, %End %If (Qt_5_4_0 -) HumanInterfaceDevice, %End %If (Qt_5_4_0 -) ScanParameters, %End %If (Qt_5_4_0 -) RunningSpeedAndCadence, %End %If (Qt_5_4_0 -) CyclingSpeedAndCadence, %End %If (Qt_5_4_0 -) CyclingPower, %End %If (Qt_5_4_0 -) LocationAndNavigation, %End %If (Qt_5_5_0 -) EnvironmentalSensing, %End %If (Qt_5_5_0 -) BodyComposition, %End %If (Qt_5_5_0 -) UserData, %End %If (Qt_5_5_0 -) WeightScale, %End %If (Qt_5_5_0 -) BondManagement, %End %If (Qt_5_5_0 -) ContinuousGlucoseMonitoring, %End }; QBluetoothUuid(); explicit QBluetoothUuid(quint32 uuid); explicit QBluetoothUuid(quint128 uuid); explicit QBluetoothUuid(const QString &uuid); QBluetoothUuid(const QBluetoothUuid &uuid); QBluetoothUuid(const QUuid &uuid); ~QBluetoothUuid(); bool operator==(const QBluetoothUuid &other) const; int minimumSize() const; quint16 toUInt16(bool *ok = 0) const; quint32 toUInt32(bool *ok = 0) const; quint128 toUInt128() const; %If (Qt_5_4_0 -) enum CharacteristicType { DeviceName, Appearance, PeripheralPrivacyFlag, ReconnectionAddress, PeripheralPreferredConnectionParameters, ServiceChanged, AlertLevel, TxPowerLevel, DateTime, DayOfWeek, DayDateTime, ExactTime256, DSTOffset, TimeZone, LocalTimeInformation, TimeWithDST, TimeAccuracy, TimeSource, ReferenceTimeInformation, TimeUpdateControlPoint, TimeUpdateState, GlucoseMeasurement, BatteryLevel, TemperatureMeasurement, TemperatureType, IntermediateTemperature, MeasurementInterval, BootKeyboardInputReport, SystemID, ModelNumberString, SerialNumberString, FirmwareRevisionString, HardwareRevisionString, SoftwareRevisionString, ManufacturerNameString, IEEE1107320601RegulatoryCertificationDataList, CurrentTime, ScanRefresh, BootKeyboardOutputReport, BootMouseInputReport, GlucoseMeasurementContext, BloodPressureMeasurement, IntermediateCuffPressure, HeartRateMeasurement, BodySensorLocation, HeartRateControlPoint, AlertStatus, RingerControlPoint, RingerSetting, AlertCategoryIDBitMask, AlertCategoryID, AlertNotificationControlPoint, UnreadAlertStatus, NewAlert, SupportedNewAlertCategory, SupportedUnreadAlertCategory, BloodPressureFeature, HIDInformation, ReportMap, HIDControlPoint, Report, ProtocolMode, ScanIntervalWindow, PnPID, GlucoseFeature, RecordAccessControlPoint, RSCMeasurement, RSCFeature, SCControlPoint, CSCMeasurement, CSCFeature, SensorLocation, CyclingPowerMeasurement, CyclingPowerVector, CyclingPowerFeature, CyclingPowerControlPoint, LocationAndSpeed, Navigation, PositionQuality, LNFeature, LNControlPoint, %If (Qt_5_5_0 -) MagneticDeclination, %End %If (Qt_5_5_0 -) Elevation, %End %If (Qt_5_5_0 -) Pressure, %End %If (Qt_5_5_0 -) Temperature, %End %If (Qt_5_5_0 -) Humidity, %End %If (Qt_5_5_0 -) TrueWindSpeed, %End %If (Qt_5_5_0 -) TrueWindDirection, %End %If (Qt_5_5_0 -) ApparentWindSpeed, %End %If (Qt_5_5_0 -) ApparentWindDirection, %End %If (Qt_5_5_0 -) GustFactor, %End %If (Qt_5_5_0 -) PollenConcentration, %End %If (Qt_5_5_0 -) UVIndex, %End %If (Qt_5_5_0 -) Irradiance, %End %If (Qt_5_5_0 -) Rainfall, %End %If (Qt_5_5_0 -) WindChill, %End %If (Qt_5_5_0 -) HeatIndex, %End %If (Qt_5_5_0 -) DewPoint, %End %If (Qt_5_5_0 -) DescriptorValueChanged, %End %If (Qt_5_5_0 -) AerobicHeartRateLowerLimit, %End %If (Qt_5_5_0 -) AerobicThreshold, %End %If (Qt_5_5_0 -) Age, %End %If (Qt_5_5_0 -) AnaerobicHeartRateLowerLimit, %End %If (Qt_5_5_0 -) AnaerobicHeartRateUpperLimit, %End %If (Qt_5_5_0 -) AnaerobicThreshold, %End %If (Qt_5_5_0 -) AerobicHeartRateUpperLimit, %End %If (Qt_5_5_0 -) DateOfBirth, %End %If (Qt_5_5_0 -) DateOfThresholdAssessment, %End %If (Qt_5_5_0 -) EmailAddress, %End %If (Qt_5_5_0 -) FatBurnHeartRateLowerLimit, %End %If (Qt_5_5_0 -) FatBurnHeartRateUpperLimit, %End %If (Qt_5_5_0 -) FirstName, %End %If (Qt_5_5_0 -) FiveZoneHeartRateLimits, %End %If (Qt_5_5_0 -) Gender, %End %If (Qt_5_5_0 -) HeartRateMax, %End %If (Qt_5_5_0 -) Height, %End %If (Qt_5_5_0 -) HipCircumference, %End %If (Qt_5_5_0 -) LastName, %End %If (Qt_5_5_0 -) MaximumRecommendedHeartRate, %End %If (Qt_5_5_0 -) RestingHeartRate, %End %If (Qt_5_5_0 -) SportTypeForAerobicAnaerobicThresholds, %End %If (Qt_5_5_0 -) ThreeZoneHeartRateLimits, %End %If (Qt_5_5_0 -) TwoZoneHeartRateLimits, %End %If (Qt_5_5_0 -) VO2Max, %End %If (Qt_5_5_0 -) WaistCircumference, %End %If (Qt_5_5_0 -) Weight, %End %If (Qt_5_5_0 -) DatabaseChangeIncrement, %End %If (Qt_5_5_0 -) UserIndex, %End %If (Qt_5_5_0 -) BodyCompositionFeature, %End %If (Qt_5_5_0 -) BodyCompositionMeasurement, %End %If (Qt_5_5_0 -) WeightMeasurement, %End %If (Qt_5_5_0 -) WeightScaleFeature, %End %If (Qt_5_5_0 -) UserControlPoint, %End %If (Qt_5_5_0 -) MagneticFluxDensity2D, %End %If (Qt_5_5_0 -) MagneticFluxDensity3D, %End %If (Qt_5_5_0 -) Language, %End %If (Qt_5_5_0 -) BarometricPressureTrend, %End }; %End %If (Qt_5_4_0 -) enum DescriptorType { UnknownDescriptorType, CharacteristicExtendedProperties, CharacteristicUserDescription, ClientCharacteristicConfiguration, ServerCharacteristicConfiguration, CharacteristicPresentationFormat, CharacteristicAggregateFormat, ValidRange, ExternalReportReference, ReportReference, %If (Qt_5_5_0 -) EnvironmentalSensingConfiguration, %End %If (Qt_5_5_0 -) EnvironmentalSensingMeasurement, %End %If (Qt_5_5_0 -) EnvironmentalSensingTriggerSetting, %End }; %End %If (Qt_5_4_0 -) static QString serviceClassToString(QBluetoothUuid::ServiceClassUuid uuid); %End %If (Qt_5_4_0 -) static QString protocolToString(QBluetoothUuid::ProtocolUuid uuid); %End %If (Qt_5_4_0 -) static QString characteristicToString(QBluetoothUuid::CharacteristicType uuid); %End %If (Qt_5_4_0 -) static QString descriptorToString(QBluetoothUuid::DescriptorType uuid); %End }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qlowenergycharacteristic.sip0000644000076500000240000000416712613140040024144 0ustar philstaff00000000000000// qlowenergycharacteristic.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyCharacteristic { %TypeHeaderCode #include %End public: enum PropertyType { Unknown, Broadcasting, Read, WriteNoResponse, Write, Notify, Indicate, WriteSigned, ExtendedProperty, }; typedef QFlags PropertyTypes; QLowEnergyCharacteristic(); QLowEnergyCharacteristic(const QLowEnergyCharacteristic &other); ~QLowEnergyCharacteristic(); bool operator==(const QLowEnergyCharacteristic &other) const; bool operator!=(const QLowEnergyCharacteristic &other) const; QString name() const; QBluetoothUuid uuid() const; QByteArray value() const; QFlags properties() const; QLowEnergyHandle handle() const; QLowEnergyDescriptor descriptor(const QBluetoothUuid &uuid) const; QList descriptors() const; bool isValid() const; }; %End %If (Qt_5_4_0 -) QFlags operator|(QLowEnergyCharacteristic::PropertyType f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtBluetooth/qlowenergycontroller.sip0000644000076500000240000000556612613140040023343 0ustar philstaff00000000000000// qlowenergycontroller.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyController : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, InvalidBluetoothAdapterError, %If (Qt_5_5_0 -) ConnectionError, %End }; enum ControllerState { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, DiscoveredState, ClosingState, }; enum RemoteAddressType { PublicAddress, RandomAddress, }; %If (Qt_5_5_0 -) QLowEnergyController(const QBluetoothDeviceInfo &remoteDevice, QObject *parent /TransferThis/ = 0); %End QLowEnergyController(const QBluetoothAddress &remoteDevice, QObject *parent /TransferThis/ = 0); QLowEnergyController(const QBluetoothAddress &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent /TransferThis/ = 0); virtual ~QLowEnergyController(); QBluetoothAddress localAddress() const; QBluetoothAddress remoteAddress() const; QLowEnergyController::ControllerState state() const; QLowEnergyController::RemoteAddressType remoteAddressType() const; void setRemoteAddressType(QLowEnergyController::RemoteAddressType type); void connectToDevice(); void disconnectFromDevice(); void discoverServices(); QList services() const; QLowEnergyService *createServiceObject(const QBluetoothUuid &service, QObject *parent /TransferThis/ = 0) /Factory/; QLowEnergyController::Error error() const; QString errorString() const; %If (Qt_5_5_0 -) QString remoteName() const; %End signals: void connected(); void disconnected(); void stateChanged(QLowEnergyController::ControllerState state); void error(QLowEnergyController::Error newError); void serviceDiscovered(const QBluetoothUuid &newService); void discoveryFinished(); }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qlowenergydescriptor.sip0000644000076500000240000000276712613140040023336 0ustar philstaff00000000000000// qlowenergydescriptor.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyDescriptor { %TypeHeaderCode #include %End public: QLowEnergyDescriptor(); QLowEnergyDescriptor(const QLowEnergyDescriptor &other); ~QLowEnergyDescriptor(); bool operator==(const QLowEnergyDescriptor &other) const; bool operator!=(const QLowEnergyDescriptor &other) const; bool isValid() const; QByteArray value() const; QBluetoothUuid uuid() const; QLowEnergyHandle handle() const; QString name() const; QBluetoothUuid::DescriptorType type() const; }; %End PyQt-gpl-5.5.1/sip/QtBluetooth/qlowenergyservice.sip0000644000076500000240000000711012613140040022603 0ustar philstaff00000000000000// qlowenergyservice.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyService : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum ServiceType { PrimaryService, IncludedService, }; typedef QFlags ServiceTypes; enum ServiceError { NoError, OperationError, CharacteristicWriteError, DescriptorWriteError, %If (Qt_5_5_0 -) CharacteristicReadError, %End %If (Qt_5_5_0 -) DescriptorReadError, %End %If (Qt_5_5_0 -) UnknownError, %End }; enum ServiceState { InvalidService, DiscoveryRequired, DiscoveringServices, ServiceDiscovered, }; enum WriteMode { WriteWithResponse, WriteWithoutResponse, }; virtual ~QLowEnergyService(); QList includedServices() const; QFlags type() const; QLowEnergyService::ServiceState state() const; QLowEnergyCharacteristic characteristic(const QBluetoothUuid &uuid) const; QList characteristics() const; QBluetoothUuid serviceUuid() const; QString serviceName() const; void discoverDetails(); QLowEnergyService::ServiceError error() const; bool contains(const QLowEnergyCharacteristic &characteristic) const; bool contains(const QLowEnergyDescriptor &descriptor) const; void writeCharacteristic(const QLowEnergyCharacteristic &characteristic, const QByteArray &newValue, QLowEnergyService::WriteMode mode = QLowEnergyService::WriteWithResponse); void writeDescriptor(const QLowEnergyDescriptor &descriptor, const QByteArray &newValue); signals: void stateChanged(QLowEnergyService::ServiceState newState); void characteristicChanged(const QLowEnergyCharacteristic &info, const QByteArray &value); void characteristicWritten(const QLowEnergyCharacteristic &info, const QByteArray &value); void descriptorWritten(const QLowEnergyDescriptor &info, const QByteArray &value); void error(QLowEnergyService::ServiceError error); public: %If (Qt_5_5_0 -) void readCharacteristic(const QLowEnergyCharacteristic &characteristic); %End %If (Qt_5_5_0 -) void readDescriptor(const QLowEnergyDescriptor &descriptor); %End signals: %If (Qt_5_5_0 -) void characteristicRead(const QLowEnergyCharacteristic &info, const QByteArray &value); %End %If (Qt_5_5_0 -) void descriptorRead(const QLowEnergyDescriptor &info, const QByteArray &value); %End }; %End %If (Qt_5_5_0 -) QFlags operator|(QLowEnergyService::ServiceType f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtBluetooth/qpybluetooth_qlist.sip0000644000076500000240000001214012613140040023000 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtBluetooth module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /DocType="list-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLongLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *qv = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; // QBluetoothServiceInfo::Sequence is actually a sub-class of QList. // Note that QBluetoothServiceInfo::Alternative is identical and they are both // syntactic sugar. By ignoring methods using the latter then everything works // as expected. %MappedType QBluetoothServiceInfo::Sequence /DocType="list-of-object"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QVariant *t = new QVariant(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QVariant, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QBluetoothServiceInfo::Sequence *ql = new QBluetoothServiceInfo::Sequence; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QVariant *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QVariant, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtBluetooth/qpybluetooth_quint128.sip0000644000076500000240000000551012613140040023242 0ustar philstaff00000000000000// This is the SIP interface definition for the quint128 mapped type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType quint128 /DocType="16-tuple-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *t = PyTuple_New(16); if (!t) return 0; for (SIP_SSIZE_T i = 0; i < 16; ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->data[i]); if (!pobj) { Py_DECREF(t); return 0; } PyTuple_SET_ITEM(t, i, pobj); } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); SIP_SSIZE_T len = PySequence_Size(sipPy); if (len != 16) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has " SIP_SSIZE_T_FORMAT " elements but 16 elements are expected", len); *sipIsErr = 1; return 0; } quint128 *qv = new quint128; for (SIP_SSIZE_T i = 0; i < 16; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); if (!itm) { delete qv; *sipIsErr = 1; return 0; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "element " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; *sipIsErr = 1; return 0; } qv->data[i] = val; Py_DECREF(itm); } *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtBluetooth/QtBluetoothmod.sip0000644000076500000240000000476312613140040022013 0ustar philstaff00000000000000// QtBluetoothmod.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtBluetooth, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qbluetooth.sip %Include qbluetoothaddress.sip %Include qbluetoothdevicediscoveryagent.sip %Include qbluetoothdeviceinfo.sip %Include qbluetoothhostinfo.sip %Include qbluetoothlocaldevice.sip %Include qbluetoothserver.sip %Include qbluetoothservicediscoveryagent.sip %Include qbluetoothserviceinfo.sip %Include qbluetoothsocket.sip %Include qbluetoothtransfermanager.sip %Include qbluetoothtransferreply.sip %Include qbluetoothtransferrequest.sip %Include qbluetoothuuid.sip %Include qlowenergycharacteristic.sip %Include qlowenergycontroller.sip %Include qlowenergydescriptor.sip %Include qlowenergyservice.sip %Include qpybluetooth_qlist.sip %Include qpybluetooth_quint128.sip PyQt-gpl-5.5.1/sip/QtCore/0000755000076500000240000000000012613140040015235 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtCore/qabstractanimation.sip0000644000076500000240000000507312613140040021643 0ustar philstaff00000000000000// qabstractanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractAnimation : QObject { %TypeHeaderCode #include %End public: enum Direction { Forward, Backward, }; enum State { Stopped, Paused, Running, }; enum DeletionPolicy { KeepWhenStopped, DeleteWhenStopped, }; QAbstractAnimation(QObject *parent /TransferThis/ = 0); virtual ~QAbstractAnimation(); QAbstractAnimation::State state() const; QAnimationGroup *group() const; QAbstractAnimation::Direction direction() const; void setDirection(QAbstractAnimation::Direction direction); int currentTime() const; int currentLoopTime() const; int loopCount() const; void setLoopCount(int loopCount); int currentLoop() const; virtual int duration() const = 0; int totalDuration() const; signals: void finished(); void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); void currentLoopChanged(int currentLoop); void directionChanged(QAbstractAnimation::Direction); public slots: void start(QAbstractAnimation::DeletionPolicy policy = QAbstractAnimation::KeepWhenStopped); void pause(); void resume(); void setPaused(bool); void stop(); void setCurrentTime(int msecs); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int currentTime) = 0; virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); private: QAbstractAnimation(const QAbstractAnimation &); }; PyQt-gpl-5.5.1/sip/QtCore/qabstracteventdispatcher.sip0000644000076500000240000000543512613140040023056 0ustar philstaff00000000000000// qabstracteventdispatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractEventDispatcher : QObject { %TypeHeaderCode #include %End public: struct TimerInfo { %TypeHeaderCode #include %End int timerId; int interval; Qt::TimerType timerType; TimerInfo(int id, int i, Qt::TimerType t); }; explicit QAbstractEventDispatcher(QObject *parent /TransferThis/ = 0); virtual ~QAbstractEventDispatcher(); static QAbstractEventDispatcher *instance(QThread *thread = 0); virtual bool processEvents(QFlags flags) = 0 /ReleaseGIL/; virtual bool hasPendingEvents() = 0; virtual void registerSocketNotifier(QSocketNotifier *notifier) = 0; virtual void unregisterSocketNotifier(QSocketNotifier *notifier) = 0; int registerTimer(int interval, Qt::TimerType timerType /Constrained/, QObject *object); virtual void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) = 0; virtual bool unregisterTimer(int timerId) = 0; virtual bool unregisterTimers(QObject *object) = 0; virtual QList registeredTimers(QObject *object) const = 0; virtual void wakeUp() = 0; virtual void interrupt() = 0; virtual void flush() = 0; virtual void startingUp(); virtual void closingDown(); virtual int remainingTime(int timerId) = 0; void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); %If (WS_WIN) virtual bool registerEventNotifier(QWinEventNotifier *notifier) = 0; %End %If (WS_WIN) virtual void unregisterEventNotifier(QWinEventNotifier *notifier) = 0; %End bool filterNativeEvent(const QByteArray &eventType, void *message, long *result); signals: void aboutToBlock(); void awake(); }; PyQt-gpl-5.5.1/sip/QtCore/qabstractitemmodel.sip0000644000076500000240000003262712613140040021650 0ustar philstaff00000000000000// qabstractitemmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QModelIndex { %TypeHeaderCode #include %End public: QModelIndex(); QModelIndex child(int arow, int acolumn) const; int row() const; int column() const; QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; SIP_PYOBJECT internalPointer() const; %MethodCode sipRes = reinterpret_cast(sipCpp->internalPointer()); if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End SIP_PYOBJECT internalId() const /DocType="int"/; %MethodCode // Python needs to treat the result as an unsigned value (which may not happen // on 64 bit systems). Instead we get the real value as it is stored (as a // void *) and let Python convert that. sipRes = PyLong_FromVoidPtr(sipCpp->internalPointer()); %End const QAbstractItemModel *model() const; bool isValid() const; QModelIndex parent() const; QModelIndex sibling(int arow, int acolumn) const; bool operator==(const QModelIndex &other) const; bool operator<(const QModelIndex &other) const; bool operator!=(const QModelIndex &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; class QPersistentModelIndex { %TypeHeaderCode #include %End public: QPersistentModelIndex(); QPersistentModelIndex(const QModelIndex &index); QPersistentModelIndex(const QPersistentModelIndex &other); ~QPersistentModelIndex(); int row() const; int column() const; QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; QModelIndex parent() const; QModelIndex sibling(int row, int column) const; QModelIndex child(int row, int column) const; const QAbstractItemModel *model() const; bool isValid() const; void swap(QPersistentModelIndex &other); operator const QModelIndex &() const; bool operator<(const QPersistentModelIndex &other) const; bool operator==(const QPersistentModelIndex &other) const; bool operator==(const QModelIndex &other) const; bool operator!=(const QPersistentModelIndex &other) const; bool operator!=(const QModelIndex &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; typedef QList QModelIndexList; class QAbstractItemModel : QObject { %TypeHeaderCode #include %End public: enum LayoutChangeHint { NoLayoutChangeHint, VerticalSortHint, HorizontalSortHint, }; explicit QAbstractItemModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractItemModel(); bool hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const = 0; virtual QModelIndex parent(const QModelIndex &child) const = 0; QObject *parent() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const /DocType="dict-of-int-object"/; virtual bool setItemData(const QModelIndex &index, const QMap &roles /DocType="dict-of-int-object"/); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QModelIndex buddy(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchStartsWith|Qt::MatchWrap) const; virtual QSize span(const QModelIndex &index) const; signals: void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles /DocValue="list-of-int"/ = QVector()); void headerDataChanged(Qt::Orientation orientation, int first, int last); void layoutAboutToBeChanged(const QList &parents /DocType="list-of-QPersistentModelIndex"/ = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); void layoutChanged(const QList &parents /DocType="list-of-QPersistentModelIndex"/ = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last); void rowsInserted(const QModelIndex &parent, int first, int last); void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void rowsRemoved(const QModelIndex &parent, int first, int last); void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last); void columnsInserted(const QModelIndex &parent, int first, int last); void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void columnsRemoved(const QModelIndex &parent, int first, int last); void modelAboutToBeReset(); void modelReset(); public slots: virtual bool submit(); virtual void revert(); protected: void encodeData(const QModelIndexList &indexes, QDataStream &stream) const; bool decodeData(int row, int column, const QModelIndex &parent, QDataStream &stream); void beginInsertRows(const QModelIndex &parent, int first, int last); void endInsertRows(); void beginRemoveRows(const QModelIndex &parent, int first, int last); void endRemoveRows(); void beginInsertColumns(const QModelIndex &parent, int first, int last); void endInsertColumns(); void beginRemoveColumns(const QModelIndex &parent, int first, int last); void endRemoveColumns(); QModelIndexList persistentIndexList() const; void changePersistentIndex(const QModelIndex &from, const QModelIndex &to); void changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to); public: bool insertRow(int row, const QModelIndex &parent = QModelIndex()); bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); bool removeRow(int row, const QModelIndex &parent = QModelIndex()); bool removeColumn(int column, const QModelIndex &parent = QModelIndex()); virtual Qt::DropActions supportedDragActions() const; virtual QHash roleNames() const; protected: QModelIndex createIndex(int row, int column, SIP_PYOBJECT object = 0) const [QModelIndex (int row, int column, void *object = 0)]; %MethodCode // The Qt API is broken (and won't be fixed as it would break binary // compatibility) regarding the internal id of a model index on different // architectures (32 vs 64 bits). We choose to work around the breakage as it // is fairly subtle and continues to catch people out. Instead of letting Qt // convert betweed an integer id and a pointer id (the internal format used by // Qt) we let Python do it. void *ptr; if (a2) { // Try and convert it to a Python long and fallback to the object's // address if it fails. ptr = PyLong_AsVoidPtr(a2); if (PyErr_Occurred()) { PyErr_Clear(); ptr = a2; } } else { ptr = 0; } #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = new QModelIndex(sipCpp->createIndex(a0, a1, ptr)); #else sipRes = new QModelIndex(sipCpp->sipProtect_createIndex(a0, a1, ptr)); #endif %End signals: void rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow); void rowsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row); void columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn); void columnsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column); protected: bool beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationRow); void endMoveRows(); bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn); void endMoveColumns(); void beginResetModel(); void endResetModel(); protected slots: %If (Qt_5_1_0 -) void resetInternalData(); %End public: virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); bool moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild); bool moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild); private: QAbstractItemModel(const QAbstractItemModel &); }; class QAbstractTableModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractTableModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractTableModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); %If (Qt_5_1_0 -) virtual Qt::ItemFlags flags(const QModelIndex &index) const; %End %If (Qt_5_2_0 -) QObject *parent() const; %End %If (Qt_5_5_0 -) virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; %End private: QAbstractTableModel(const QAbstractTableModel &); virtual QModelIndex parent(const QModelIndex &child) const; virtual bool hasChildren(const QModelIndex &parent) const; }; class QAbstractListModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractListModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractListModel(); virtual QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); %If (Qt_5_1_0 -) virtual Qt::ItemFlags flags(const QModelIndex &index) const; %End %If (Qt_5_2_0 -) QObject *parent() const; %End %If (Qt_5_5_0 -) virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; %End private: QAbstractListModel(const QAbstractListModel &); virtual QModelIndex parent(const QModelIndex &child) const; virtual int columnCount(const QModelIndex &parent) const; virtual bool hasChildren(const QModelIndex &parent) const; }; PyQt-gpl-5.5.1/sip/QtCore/qabstractnativeeventfilter.sip0000644000076500000240000000245612613140040023424 0ustar philstaff00000000000000// qabstractnativeeventfilter.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractNativeEventFilter { %TypeHeaderCode #include %End public: QAbstractNativeEventFilter(); virtual ~QAbstractNativeEventFilter(); virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) = 0; private: QAbstractNativeEventFilter(const QAbstractNativeEventFilter &); }; PyQt-gpl-5.5.1/sip/QtCore/qabstractproxymodel.sip0000644000076500000240000000730212613140040022063 0ustar philstaff00000000000000// qabstractproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractProxyModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractProxyModel(); virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); QAbstractItemModel *sourceModel() const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const = 0; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const = 0; virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; virtual bool submit(); virtual void revert(); virtual QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); %If (Qt_5_5_0 -) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; %End %If (- Qt_5_5_0) virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; %End virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const /DocType="dict-of-int-object"/; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles /DocType="dict-of-int-object"/); virtual QModelIndex buddy(const QModelIndex &index) const; virtual bool canFetchMore(const QModelIndex &parent) const; virtual void fetchMore(const QModelIndex &parent); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QSize span(const QModelIndex &index) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; protected slots: %If (Qt_5_1_0 -) void resetInternalData(); %End signals: void sourceModelChanged(); public: %If (Qt_5_4_0 -) virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; %End %If (Qt_5_4_0 -) virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); %End %If (Qt_5_4_0 -) virtual Qt::DropActions supportedDragActions() const; %End private: QAbstractProxyModel(const QAbstractProxyModel &); }; PyQt-gpl-5.5.1/sip/QtCore/qabstractstate.sip0000644000076500000240000000301312613140040020774 0ustar philstaff00000000000000// qabstractstate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractState : QObject { %TypeHeaderCode #include %End public: virtual ~QAbstractState(); QState *parentState() const; QStateMachine *machine() const; %If (Qt_5_4_0 -) bool active() const; %End signals: %If (Qt_5_4_0 -) void activeChanged(bool active); %End void entered(); void exited(); protected: QAbstractState(QState *parent /TransferThis/ = 0); virtual void onEntry(QEvent *event) = 0; virtual void onExit(QEvent *event) = 0; virtual bool event(QEvent *e); private: QAbstractState(const QAbstractState &); }; PyQt-gpl-5.5.1/sip/QtCore/qabstracttransition.sip0000644000076500000240000000664312613140040022062 0ustar philstaff00000000000000// qabstracttransition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractTransition : QObject { %TypeHeaderCode #include %End public: QAbstractTransition(QState *sourceState /TransferThis/ = 0); virtual ~QAbstractTransition(); QState *sourceState() const; QAbstractState *targetState() const; void setTargetState(QAbstractState *target /KeepReference=0/); QList targetStates() const; void setTargetStates(const QList &targets /KeepReference=0/); QStateMachine *machine() const; void addAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // We want to keep a reference to the animation but this is in addition to the // existing ones and does not replace them - so we can't use /KeepReference/. sipCpp->addAnimation(a0); // Use the user object as a list of the references. PyObject *user = ((sipSimpleWrapper *)sipSelf)->user; if (!user) user = ((sipSimpleWrapper *)sipSelf)->user = PyList_New(0); if (user) PyList_Append(user, a0Wrapper); %End void removeAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // Discard the extra animation reference that we took in addAnimation(). sipCpp->removeAnimation(a0); // Use the user object as a list of the references. PyObject *user = ((sipSimpleWrapper *)sipSelf)->user; if (user) { Py_ssize_t i = 0; // Note that we deal with an object appearing in the list more than once. while (i < PyList_GET_SIZE(user)) if (PyList_GET_ITEM(user, i) == a0Wrapper) PyList_SetSlice(user, i, i + 1, NULL); else ++i; } %End QList animations() const; signals: void triggered(); %If (Qt_5_4_0 -) void targetStateChanged(); %End %If (Qt_5_4_0 -) void targetStatesChanged(); %End protected: virtual bool eventTest(QEvent *event) = 0; virtual void onTransition(QEvent *event) = 0; virtual bool event(QEvent *e); public: %If (Qt_5_5_0 -) enum TransitionType { ExternalTransition, InternalTransition, }; %End %If (Qt_5_5_0 -) QAbstractTransition::TransitionType transitionType() const; %End %If (Qt_5_5_0 -) void setTransitionType(QAbstractTransition::TransitionType type); %End private: QAbstractTransition(const QAbstractTransition &); }; PyQt-gpl-5.5.1/sip/QtCore/qanimationgroup.sip0000644000076500000240000000325112613140040021170 0ustar philstaff00000000000000// qanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAnimationGroup : QAbstractAnimation { %TypeHeaderCode #include %End public: QAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QAnimationGroup(); QAbstractAnimation *animationAt(int index) const; int animationCount() const; int indexOfAnimation(QAbstractAnimation *animation) const; void addAnimation(QAbstractAnimation *animation /Transfer/); void insertAnimation(int index, QAbstractAnimation *animation /Transfer/); void removeAnimation(QAbstractAnimation *animation /TransferBack/); QAbstractAnimation *takeAnimation(int index) /TransferBack/; void clear(); protected: virtual bool event(QEvent *event); private: QAnimationGroup(const QAnimationGroup &); }; PyQt-gpl-5.5.1/sip/QtCore/qbasictimer.sip0000644000076500000240000000233112613140040020254 0ustar philstaff00000000000000// qbasictimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBasicTimer { %TypeHeaderCode #include %End public: QBasicTimer(); ~QBasicTimer(); bool isActive() const; int timerId() const; void start(int msec, Qt::TimerType timerType, QObject *obj); void start(int msec, QObject *obj); void stop(); }; PyQt-gpl-5.5.1/sip/QtCore/qbitarray.sip0000644000076500000240000000516012613140040017752 0ustar philstaff00000000000000// qbitarray.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBitArray { %TypeHeaderCode #include %End %TypeCode // This is needed by __hash__(). #include %End public: QBitArray(); QBitArray(int size, bool value = false); QBitArray(const QBitArray &other); int size() const; int count() const /__len__/; bool isEmpty() const; bool isNull() const; void resize(int size); void detach(); bool isDetached() const; void clear(); QBitArray &operator&=(const QBitArray &); QBitArray &operator|=(const QBitArray &); QBitArray &operator^=(const QBitArray &); QBitArray operator~() const; bool operator==(const QBitArray &a) const; bool operator!=(const QBitArray &a) const; void fill(bool val, int first, int last); void truncate(int pos); bool fill(bool value, int size = -1); bool testBit(int i) const; void setBit(int i); void clearBit(int i); void setBit(int i, bool val); bool toggleBit(int i); bool operator[](int i) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((int)idx); %End bool at(int i) const; int count(bool on) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End void swap(QBitArray &other); }; QBitArray operator&(const QBitArray &, const QBitArray &); QBitArray operator|(const QBitArray &, const QBitArray &); QBitArray operator^(const QBitArray &, const QBitArray &); QDataStream &operator<<(QDataStream &, const QBitArray & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QBitArray & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtCore/qbuffer.sip0000644000076500000240000000573112613140040017412 0ustar philstaff00000000000000// qbuffer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBuffer : QIODevice { %TypeHeaderCode #include %End public: explicit QBuffer(QObject *parent /TransferThis/ = 0); QBuffer(QByteArray *byteArray, QObject *parent /TransferThis/ = 0); virtual ~QBuffer(); QByteArray &buffer(); const QByteArray &data() const; void setBuffer(QByteArray *a); void setData(const QByteArray &data); void setData(const char *adata /Array/, int alen /ArraySize/); virtual bool open(QFlags openMode); virtual void close(); virtual qint64 size() const; virtual qint64 pos() const; virtual bool seek(qint64 off); virtual bool atEnd() const; virtual bool canReadLine() const; protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QBuffer::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; virtual void connectNotify(const QMetaMethod &); virtual void disconnectNotify(const QMetaMethod &); private: QBuffer(const QBuffer &); }; PyQt-gpl-5.5.1/sip/QtCore/qbytearray.sip0000644000076500000240000003120212613140040020133 0ustar philstaff00000000000000// qbytearray.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End quint16 qChecksum(const char *s /Array/, uint len /ArraySize/); class QByteArray { %TypeHeaderCode #include %End %TypeCode // This is needed by __hash__(). #include // Convenience function for converting a QByteArray to a Python str object. static PyObject *QByteArrayToPyStr(QByteArray *ba) { char *data = ba->data(); if (data) // QByteArrays may have embedded '\0's so set the size explicitly. return SIPBytes_FromStringAndSize(data, ba->size()); return SIPBytes_FromString(""); } %End %ConvertToTypeCode // We have to be very careful about what we allow to be converted to a // QByteArray and to a QString as we need to take into account the v1 and v2 // APIs and Python v2.x and v3.x. // // QSvgRenderer() is a good example of what needs to work "naturally". This // has a ctor that takes a QString argument that is the name of the SVG file. // It has another ctor that takes a QByteArray argument that is the SVG data. // // In Python v2.x we want a str object to be interpreted as the name of the // file (as that is the historical behaviour). This has the following // implications. // // - The QString version of the ctor must appear before the QByteArray version // in the .sip file. This rule should be applied wherever a similar // situation arises. // - A QString must not automatically convert a QByteArray. // - QByteArray must also exist in the v2 API. // // In Python v3.x we want a bytes object to be used wherever a QByteArray is // expected. This means that a QString must not automatically convert a bytes // object. // // In PyQt v5.4 and earlier a QByteArray could be created from a Latin-1 // encoded string. This was a mistaken attempt to ease the porting of Python2 // code to Python3. if (sipIsErr == NULL) return (PyByteArray_Check(sipPy) || SIPBytes_Check(sipPy) || sipCanConvertToType(sipPy, sipType_QByteArray, SIP_NO_CONVERTORS)); if (PyByteArray_Check(sipPy)) { *sipCppPtr = new QByteArray(PyByteArray_AS_STRING(sipPy), PyByteArray_GET_SIZE(sipPy)); return sipGetState(sipTransferObj); } if (SIPBytes_Check(sipPy)) { *sipCppPtr = new QByteArray(SIPBytes_AS_STRING(sipPy), SIPBytes_GET_SIZE(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QByteArray, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %BIGetBufferCode sipRes = PyBuffer_FillInfo(sipBuffer, sipSelf, sipCpp->data(), sipCpp->size(), 0, sipFlags); %End %BIGetReadBufferCode if (sipSegment != 0) { PyErr_SetString(PyExc_SystemError, "accessing non-existent QByteArray segment"); sipRes = -1; } else { *sipPtrPtr = (void *)sipCpp->data(); sipRes = sipCpp->size(); } %End %BIGetSegCountCode if (sipLenPtr) *sipLenPtr = sipCpp->size(); sipRes = 1; %End %BIGetCharBufferCode if (sipSegment != 0) { PyErr_SetString(PyExc_SystemError, "accessing non-existent QByteArray segment"); sipRes = -1; } else { *sipPtrPtr = (void *)sipCpp->data(); sipRes = sipCpp->size(); } %End %PickleCode #if PY_MAJOR_VERSION >= 3 sipRes = Py_BuildValue((char *)"(y#)", sipCpp->data(), sipCpp->size()); #else sipRes = Py_BuildValue((char *)"(s#)", sipCpp->data(), sipCpp->size()); #endif %End public: QByteArray(); QByteArray(int size, char c); QByteArray(const QByteArray &a); ~QByteArray(); void resize(int size); QByteArray &fill(char ch, int size = -1); void clear(); int indexOf(const QByteArray &ba, int from = 0) const; int indexOf(const QString &str, int from = 0) const; int lastIndexOf(const QByteArray &ba, int from = -1) const; int lastIndexOf(const QString &str, int from = -1) const; int count(const QByteArray &a) const; QByteArray left(int len) const; QByteArray right(int len) const; QByteArray mid(int pos, int length = -1) const; bool startsWith(const QByteArray &a) const; bool endsWith(const QByteArray &a) const; void truncate(int pos); void chop(int n); QByteArray toLower() const; QByteArray toUpper() const; QByteArray trimmed() const; QByteArray simplified() const; QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray &prepend(const QByteArray &a); QByteArray &append(const QByteArray &a); QByteArray &append(const QString &s); QByteArray &insert(int i, const QByteArray &a); QByteArray &insert(int i, const QString &s); QByteArray &remove(int index, int len); QByteArray &replace(int index, int len, const QByteArray &s); QByteArray &replace(const QByteArray &before, const QByteArray &after); QByteArray &replace(const QString &before, const QByteArray &after); QList split(char sep) const; QByteArray &operator+=(const QByteArray &a); QByteArray &operator+=(const QString &s); bool operator==(const QString &s2) const; bool operator!=(const QString &s2) const; bool operator<(const QString &s2) const; bool operator>(const QString &s2) const; bool operator<=(const QString &s2) const; bool operator>=(const QString &s2) const; short toShort(bool *ok = 0, int base = 10) const; ushort toUShort(bool *ok = 0, int base = 10) const; int toInt(bool *ok = 0, int base = 10) const; uint toUInt(bool *ok = 0, int base = 10) const; long toLong(bool *ok = 0, int base = 10) const; ulong toULong(bool *ok = 0, int base = 10) const; qlonglong toLongLong(bool *ok = 0, int base = 10) const; qulonglong toULongLong(bool *ok = 0, int base = 10) const; float toFloat(bool *ok = 0) const; double toDouble(bool *ok = 0) const; QByteArray toBase64() const; QByteArray &setNum(int n /Constrained/, int base = 10); QByteArray &setNum(double n /Constrained/, char format = 'g', int precision = 6); QByteArray &setNum(qlonglong n, int base = 10); QByteArray &setNum(qulonglong n, int base = 10); static QByteArray number(int n /Constrained/, int base = 10); static QByteArray number(double n /Constrained/, char format = 'g', int precision = 6); static QByteArray number(qlonglong n, int base = 10); static QByteArray number(qulonglong n, int base = 10); static QByteArray fromBase64(const QByteArray &base64); static QByteArray fromRawData(const char * /Array/, int size /ArraySize/); static QByteArray fromHex(const QByteArray &hexEncoded); int count() const /__len__/; int length() const; bool isNull() const; int size() const; char at(int i) const; char operator[](int i) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((int)idx); %End QByteArray operator[](SIP_PYSLICE slice) const; %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->length(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QByteArray(); for (i = 0; i < slicelength; ++i) { sipRes -> append(sipCpp->at(start)); start += step; } } %End int __contains__(const QByteArray &a) const; %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __str__() const /DocType="str"/; %MethodCode sipRes = QByteArrayToPyStr(sipCpp); #if PY_MAJOR_VERSION >= 3 PyObject *repr = PyObject_Repr(sipRes); if (repr) { Py_DECREF(sipRes); sipRes = repr; } #endif %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QByteArray()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QByteArray()"); #endif } else { PyObject *str = QByteArrayToPyStr(sipCpp); if (str) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QByteArray(%R)", str); #else sipRes = PyString_FromString("PyQt5.QtCore.QByteArray("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(str)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(str); } } %End QByteArray operator*(int m) const; %MethodCode sipRes = new QByteArray(); while (a0-- > 0) *sipRes += *sipCpp; %End QByteArray &operator*=(int m); %MethodCode QByteArray orig(*sipCpp); sipCpp->clear(); while (a0-- > 0) *sipCpp += orig; %End bool isEmpty() const; SIP_PYOBJECT data() /DocType="Py_v3:bytes;str"/; %MethodCode // QByteArrays may contain embedded '\0's so set the size explicitly. char *res = sipCpp->data(); int len = sipCpp->size(); if (res) { if ((sipRes = SIPBytes_FromStringAndSize(res, len)) == NULL) sipIsErr = 1; } else { Py_INCREF(Py_None); sipRes = Py_None; } %End int capacity() const; void reserve(int size); void squeeze(); void push_back(const QByteArray &a); void push_front(const QByteArray &a); bool contains(const QByteArray &a) const; QByteArray toHex() const; QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray(), char percent = '%') const; static QByteArray fromPercentEncoding(const QByteArray &input, char percent = '%'); QByteArray repeated(int times) const; void swap(QByteArray &other); %If (Qt_5_2_0 -) enum Base64Option { Base64Encoding, Base64UrlEncoding, KeepTrailingEquals, OmitTrailingEquals, }; %End %If (Qt_5_2_0 -) typedef QFlags Base64Options; %End %If (Qt_5_2_0 -) QByteArray toBase64(QFlags options) const; %End %If (Qt_5_2_0 -) static QByteArray fromBase64(const QByteArray &base64, QFlags options); %End }; bool operator==(const QByteArray &a1, const QByteArray &a2); bool operator!=(const QByteArray &a1, const QByteArray &a2); bool operator<(const QByteArray &a1, const QByteArray &a2); bool operator<=(const QByteArray &a1, const QByteArray &a2); bool operator>(const QByteArray &a1, const QByteArray &a2); bool operator>=(const QByteArray &a1, const QByteArray &a2); const QByteArray operator+(const QByteArray &a1, const QByteArray &a2); QDataStream &operator<<(QDataStream &, const QByteArray & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QByteArray & /Constrained/) /ReleaseGIL/; QByteArray qCompress(const QByteArray &data, int compressionLevel = -1); QByteArray qUncompress(const QByteArray &data); %If (Qt_5_2_0 -) QFlags operator|(QByteArray::Base64Option f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtCore/qbytearraymatcher.sip0000644000076500000240000000250612613140040021504 0ustar philstaff00000000000000// qbytearraymatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QByteArrayMatcher { %TypeHeaderCode #include %End public: QByteArrayMatcher(); explicit QByteArrayMatcher(const QByteArray &pattern); QByteArrayMatcher(const QByteArrayMatcher &other); ~QByteArrayMatcher(); void setPattern(const QByteArray &pattern); int indexIn(const QByteArray &ba, int from = 0) const; QByteArray pattern() const; }; PyQt-gpl-5.5.1/sip/QtCore/qchar.sip0000644000076500000240000000354212613140040017054 0ustar philstaff00000000000000// qchar.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QChar mapped type. %MappedType QChar /DocType="str"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) #if PY_MAJOR_VERSION < 3 return (PyString_Check(sipPy) || PyUnicode_Check(sipPy)); #else return PyUnicode_Check(sipPy); #endif #if PY_MAJOR_VERSION < 3 if (PyString_Check(sipPy)) { if (PyString_GET_SIZE(sipPy) != 1) { PyErr_SetString(PyExc_ValueError, "string of length 1 expected"); *sipIsErr = 1; return 0; } *sipCppPtr = new QChar(*PyString_AS_STRING(sipPy)); return sipGetState(sipTransferObj); } #endif QString qs = qpycore_PyObject_AsQString(sipPy); if (qs.size() != 1) { PyErr_SetString(PyExc_ValueError, "string of length 1 expected"); *sipIsErr = 1; return 0; } *sipCppPtr = new QChar(qs.at(0)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(QString(*sipCpp)); %End }; PyQt-gpl-5.5.1/sip/QtCore/qcollator.sip0000644000076500000240000000375412613140040017763 0ustar philstaff00000000000000// qcollator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QCollatorSortKey { %TypeHeaderCode #include %End public: QCollatorSortKey(const QCollatorSortKey &other); ~QCollatorSortKey(); void swap(QCollatorSortKey &other); int compare(const QCollatorSortKey &key) const; private: QCollatorSortKey(); }; %End %If (Qt_5_2_0 -) bool operator<(const QCollatorSortKey &lhs, const QCollatorSortKey &rhs); %End %If (Qt_5_2_0 -) class QCollator { %TypeHeaderCode #include %End public: explicit QCollator(const QLocale &locale = QLocale()); QCollator(const QCollator &); ~QCollator(); void swap(QCollator &other); void setLocale(const QLocale &locale); QLocale locale() const; Qt::CaseSensitivity caseSensitivity() const; void setCaseSensitivity(Qt::CaseSensitivity cs); void setNumericMode(bool on); bool numericMode() const; void setIgnorePunctuation(bool on); bool ignorePunctuation() const; int compare(const QString &s1, const QString &s2) const; QCollatorSortKey sortKey(const QString &string) const; }; %End PyQt-gpl-5.5.1/sip/QtCore/qcommandlineoption.sip0000644000076500000240000000460112613140040021653 0ustar philstaff00000000000000// qcommandlineoption.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QCommandLineOption { %TypeHeaderCode #include %End public: %If (Qt_5_4_0 -) explicit QCommandLineOption(const QString &name); %End %If (Qt_5_4_0 -) explicit QCommandLineOption(const QStringList &names); %End %If (Qt_5_4_0 -) QCommandLineOption(const QString &name, const QString &description, const QString &valueName = QString(), const QString &defaultValue = QString()); %End %If (- Qt_5_4_0) QCommandLineOption(const QString &name, const QString &description = QString(), const QString &valueName = QString(), const QString &defaultValue = QString()); %End %If (Qt_5_4_0 -) QCommandLineOption(const QStringList &names, const QString &description, const QString &valueName = QString(), const QString &defaultValue = QString()); %End %If (- Qt_5_4_0) QCommandLineOption(const QStringList &names, const QString &description = QString(), const QString &valueName = QString(), const QString &defaultValue = QString()); %End QCommandLineOption(const QCommandLineOption &other); ~QCommandLineOption(); void swap(QCommandLineOption &other); QStringList names() const; void setValueName(const QString &name); QString valueName() const; void setDescription(const QString &description); QString description() const; void setDefaultValue(const QString &defaultValue); void setDefaultValues(const QStringList &defaultValues); QStringList defaultValues() const; }; %End PyQt-gpl-5.5.1/sip/QtCore/qcommandlineparser.sip0000644000076500000240000000514612613140040021644 0ustar philstaff00000000000000// qcommandlineparser.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QCommandLineParser { %TypeHeaderCode #include %End public: QCommandLineParser(); ~QCommandLineParser(); enum SingleDashWordOptionMode { ParseAsCompactedShortOptions, ParseAsLongOptions, }; void setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode parsingMode); bool addOption(const QCommandLineOption &commandLineOption); QCommandLineOption addVersionOption(); QCommandLineOption addHelpOption(); void setApplicationDescription(const QString &description); QString applicationDescription() const; void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()); void clearPositionalArguments(); void process(const QStringList &arguments) /ReleaseGIL/; void process(const QCoreApplication &app) /ReleaseGIL/; bool parse(const QStringList &arguments); QString errorText() const; bool isSet(const QString &name) const; QString value(const QString &name) const; QStringList values(const QString &name) const; bool isSet(const QCommandLineOption &option) const; QString value(const QCommandLineOption &option) const; QStringList values(const QCommandLineOption &option) const; QStringList positionalArguments() const; QStringList optionNames() const; QStringList unknownOptionNames() const; void showHelp(int exitCode = 0) /ReleaseGIL/; QString helpText() const; %If (Qt_5_4_0 -) bool addOptions(const QList &options); %End %If (Qt_5_4_0 -) void showVersion(); %End private: QCommandLineParser(const QCommandLineParser &); }; %End PyQt-gpl-5.5.1/sip/QtCore/qcoreapplication.sip0000644000076500000240000002227512613140040021317 0ustar philstaff00000000000000// qcoreapplication.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QCoreApplication : QObject { %TypeHeaderCode #include %End public: QCoreApplication(SIP_PYLIST argv /DocType="list-of-str"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt5_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQCoreApplication(nargc, argv); Py_END_ALLOW_THREADS // Now modify the original list. pyqt5_update_argv_list(a0, argc, argv); } %End virtual ~QCoreApplication() /ReleaseGIL/; static void setOrganizationDomain(const QString &orgDomain); static QString organizationDomain(); static void setOrganizationName(const QString &orgName); static QString organizationName(); static void setApplicationName(const QString &application); static QString applicationName(); static QStringList arguments(); static QCoreApplication *instance(); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End static void processEvents(QFlags flags = QEventLoop::AllEvents) /ReleaseGIL/; static void processEvents(QFlags flags, int maxtime) /ReleaseGIL/; static void exit(int returnCode = 0); static bool sendEvent(QObject *receiver, QEvent *event) /ReleaseGIL/; static void postEvent(QObject *receiver, QEvent *event /Transfer/, int priority = Qt::NormalEventPriority); static void sendPostedEvents(QObject *receiver = 0, int eventType = 0) /ReleaseGIL/; static void removePostedEvents(QObject *receiver, int eventType = 0); static bool hasPendingEvents(); virtual bool notify(QObject *, QEvent *) /ReleaseGIL/; static bool startingUp(); static bool closingDown(); static QString applicationDirPath(); static QString applicationFilePath(); static void setLibraryPaths(const QStringList &); static QStringList libraryPaths(); static void addLibraryPath(const QString &); static void removeLibraryPath(const QString &); static bool installTranslator(QTranslator *messageFile); static bool removeTranslator(QTranslator *messageFile); static QString translate(const char *context, const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1); static void flush() /ReleaseGIL/; static void setAttribute(Qt::ApplicationAttribute attribute, bool on = true); static bool testAttribute(Qt::ApplicationAttribute attribute); public slots: static void quit(); signals: void aboutToQuit(); protected: virtual bool event(QEvent *); public: static void setApplicationVersion(const QString &version); static QString applicationVersion(); static qint64 applicationPid(); static QAbstractEventDispatcher *eventDispatcher(); static void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher /Transfer/); static bool isQuitLockEnabled(); static void setQuitLockEnabled(bool enabled); void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); %If (Qt_5_3_0 -) static void setSetuidAllowed(bool allow); %End %If (Qt_5_3_0 -) static bool isSetuidAllowed(); %End private: QCoreApplication(const QCoreApplication &); }; void qAddPostRoutine(SIP_PYCALLABLE); %MethodCode // Add it to the list of post routines if it already exists. if (qtcore_PostRoutines != NULL) { // See if there is an empty slot. bool app = true; for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(qtcore_PostRoutines); ++i) if (PyList_GET_ITEM(qtcore_PostRoutines, i) == Py_None) { Py_DECREF(Py_None); Py_INCREF(a0); PyList_SET_ITEM(qtcore_PostRoutines, i, a0); app = false; break; } if (app && PyList_Append(qtcore_PostRoutines, a0) < 0) sipIsErr = 1; } else if ((qtcore_PostRoutines = PyList_New(1)) != NULL) { Py_INCREF(a0); PyList_SET_ITEM(qtcore_PostRoutines, 0, a0); qAddPostRoutine(qtcore_CallPostRoutines); } else { sipIsErr = 1; } %End void qRemovePostRoutine(SIP_PYCALLABLE); %MethodCode // Remove it from the list of post routines if it exists. if (qtcore_PostRoutines != NULL) for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(qtcore_PostRoutines); ++i) if (PyList_GET_ITEM(qtcore_PostRoutines, i) == a0) { Py_DECREF(a0); Py_INCREF(Py_None); PyList_SET_ITEM(qtcore_PostRoutines, i, Py_None); break; } %End %If (Qt_5_1_0 -) void qAddPreRoutine(SIP_PYCALLABLE); %MethodCode // Add it to the list of pre routines if it already exists. if (qtcore_PreRoutines != NULL) { if (PyList_Append(qtcore_PreRoutines, a0) < 0) sipIsErr = 1; } else if ((qtcore_PreRoutines = PyList_New(1)) != NULL) { Py_INCREF(a0); PyList_SET_ITEM(qtcore_PreRoutines, 0, a0); qAddPreRoutine(qtcore_CallPreRoutines); } else { sipIsErr = 1; } %End %End // Module code needed by qAddPreRoutine, qAddPostRoutine() and qRemovePostRoutine(). %ModuleCode #if QT_VERSION >= 0x050100 // The list of Python pre routines. static PyObject *qtcore_PreRoutines = NULL; // Call all of the registered Python pre routines. static void qtcore_CallPreRoutines() { for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(qtcore_PreRoutines); ++i) { PyObject *pr = PyList_GET_ITEM(qtcore_PreRoutines, i); if (pr != Py_None) { PyObject *res = PyObject_CallObject(pr, NULL); Py_XDECREF(res); } } } #endif // The list of Python post routines. static PyObject *qtcore_PostRoutines = NULL; // Call all of the registered Python post routines. static void qtcore_CallPostRoutines() { for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(qtcore_PostRoutines); ++i) { PyObject *pr = PyList_GET_ITEM(qtcore_PostRoutines, i); if (pr != Py_None) { PyObject *res = PyObject_CallObject(pr, NULL); Py_XDECREF(res); } } } %End void pyqtRemoveInputHook(); %MethodCode // Clear the Python input hook installed when the module was initialised. PyOS_InputHook = 0; %End void pyqtRestoreInputHook(); %MethodCode // Restore the input hook. PyOS_InputHook = qtcore_input_hook; %End %ModuleCode #include #include #if defined(Q_OS_WIN) #include #include #else #include #endif // This is the input hook that will process events while the interpreter is // waiting for interactive input. extern "C" {static int qtcore_input_hook();} static int qtcore_input_hook() { QCoreApplication *app = QCoreApplication::instance(); if (app && app->thread() == QThread::currentThread()) { #if defined(Q_OS_WIN) QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), app, SLOT(quit())); while (!_kbhit()) { // The delay is based on feedback from users. timer.start(35); QCoreApplication::exec(); timer.stop(); } QObject::disconnect(&timer, SIGNAL(timeout()), app, SLOT(quit())); #else QSocketNotifier notifier(0, QSocketNotifier::Read, 0); QObject::connect(¬ifier, SIGNAL(activated(int)), app, SLOT(quit())); QCoreApplication::exec(); QObject::disconnect(¬ifier, SIGNAL(activated(int)), app, SLOT(quit())); #endif } return 0; } %End %PostInitialisationCode // Process events from the input hook. PyOS_InputHook = qtcore_input_hook; %End PyQt-gpl-5.5.1/sip/QtCore/qcoreevent.sip0000644000076500000240000001435512613140040020135 0ustar philstaff00000000000000// qcoreevent.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEvent /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::Timer: sipType = sipType_QTimerEvent; break; case QEvent::ChildAdded: case QEvent::ChildPolished: case QEvent::ChildRemoved: sipType = sipType_QChildEvent; break; case QEvent::DynamicPropertyChange: sipType = sipType_QDynamicPropertyChangeEvent; break; case QEvent::StateMachineSignal: sipType = sipType_QStateMachine_SignalEvent; break; case QEvent::StateMachineWrapped: sipType = sipType_QStateMachine_WrappedEvent; break; default: sipType = 0; } %End public: enum Type { None /PyName=None_/, Timer, MouseButtonPress, MouseButtonRelease, MouseButtonDblClick, MouseMove, KeyPress, KeyRelease, FocusIn, FocusOut, Enter, Leave, Paint, Move, Resize, Show, Hide, Close, ParentChange, ParentAboutToChange, ThreadChange, WindowActivate, WindowDeactivate, ShowToParent, HideToParent, Wheel, WindowTitleChange, WindowIconChange, ApplicationWindowIconChange, ApplicationFontChange, ApplicationLayoutDirectionChange, ApplicationPaletteChange, PaletteChange, Clipboard, MetaCall, SockAct, WinEventAct, DeferredDelete, DragEnter, DragMove, DragLeave, Drop, ChildAdded, ChildPolished, ChildRemoved, PolishRequest, Polish, LayoutRequest, UpdateRequest, UpdateLater, ContextMenu, InputMethod, TabletMove, LocaleChange, LanguageChange, LayoutDirectionChange, TabletPress, TabletRelease, OkRequest, IconDrag, FontChange, EnabledChange, ActivationChange, StyleChange, IconTextChange, ModifiedChange, MouseTrackingChange, WindowBlocked, WindowUnblocked, WindowStateChange, ToolTip, WhatsThis, StatusTip, ActionChanged, ActionAdded, ActionRemoved, FileOpen, Shortcut, ShortcutOverride, WhatsThisClicked, ToolBarChange, ApplicationActivate, ApplicationActivated, ApplicationDeactivate, ApplicationDeactivated, QueryWhatsThis, EnterWhatsThisMode, LeaveWhatsThisMode, ZOrderChange, HoverEnter, HoverLeave, HoverMove, GraphicsSceneMouseMove, GraphicsSceneMousePress, GraphicsSceneMouseRelease, GraphicsSceneMouseDoubleClick, GraphicsSceneContextMenu, GraphicsSceneHoverEnter, GraphicsSceneHoverMove, GraphicsSceneHoverLeave, GraphicsSceneHelp, GraphicsSceneDragEnter, GraphicsSceneDragMove, GraphicsSceneDragLeave, GraphicsSceneDrop, GraphicsSceneWheel, GraphicsSceneResize, GraphicsSceneMove, KeyboardLayoutChange, DynamicPropertyChange, TabletEnterProximity, TabletLeaveProximity, NonClientAreaMouseMove, NonClientAreaMouseButtonPress, NonClientAreaMouseButtonRelease, NonClientAreaMouseButtonDblClick, MacSizeChange, ContentsRectChange, CursorChange, ToolTipChange, GrabMouse, UngrabMouse, GrabKeyboard, UngrabKeyboard, StateMachineSignal, StateMachineWrapped, TouchBegin, TouchUpdate, TouchEnd, RequestSoftwareInputPanel, CloseSoftwareInputPanel, WinIdChange, Gesture, GestureOverride, FocusAboutToChange, ScrollPrepare, Scroll, Expose, InputMethodQuery, OrientationChange, TouchCancel, PlatformPanel, %If (Qt_5_1_0 -) ApplicationStateChange, %End %If (Qt_5_4_0 -) ReadOnlyChange, %End %If (Qt_5_5_0 -) PlatformSurface, %End User, MaxUser, }; explicit QEvent(QEvent::Type type); QEvent(const QEvent &other); virtual ~QEvent(); QEvent::Type type() const; bool spontaneous() const; void setAccepted(bool accepted); bool isAccepted() const; void accept(); void ignore(); static int registerEventType(int hint = -1); }; class QTimerEvent : QEvent { %TypeHeaderCode #include %End public: explicit QTimerEvent(int timerId); virtual ~QTimerEvent(); int timerId() const; }; class QChildEvent : QEvent { %TypeHeaderCode #include %End public: QChildEvent(QEvent::Type type, QObject *child); virtual ~QChildEvent(); QObject *child() const; bool added() const; bool polished() const; bool removed() const; }; class QDynamicPropertyChangeEvent : QEvent { %TypeHeaderCode #include %End public: explicit QDynamicPropertyChangeEvent(const QByteArray &name); virtual ~QDynamicPropertyChangeEvent(); QByteArray propertyName() const; }; PyQt-gpl-5.5.1/sip/QtCore/qcryptographichash.sip0000644000076500000240000000340012613140040021652 0ustar philstaff00000000000000// qcryptographichash.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCryptographicHash { %TypeHeaderCode #include %End public: enum Algorithm { Md4, Md5, Sha1, Sha224, Sha256, Sha384, Sha512, %If (Qt_5_1_0 -) Sha3_224, %End %If (Qt_5_1_0 -) Sha3_256, %End %If (Qt_5_1_0 -) Sha3_384, %End %If (Qt_5_1_0 -) Sha3_512, %End }; explicit QCryptographicHash(QCryptographicHash::Algorithm method); ~QCryptographicHash(); void reset(); void addData(const char *data /Array/, int length /ArraySize/); void addData(const QByteArray &data); bool addData(QIODevice *device); QByteArray result() const; static QByteArray hash(const QByteArray &data, QCryptographicHash::Algorithm method); private: QCryptographicHash(const QCryptographicHash &); }; PyQt-gpl-5.5.1/sip/QtCore/qdatastream.sip0000644000076500000240000002163612613140040020270 0ustar philstaff00000000000000// qdatastream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDataStream { %TypeHeaderCode #include %End public: enum Version { Qt_1_0, Qt_2_0, Qt_2_1, Qt_3_0, Qt_3_1, Qt_3_3, Qt_4_0, Qt_4_1, Qt_4_2, Qt_4_3, Qt_4_4, Qt_4_5, Qt_4_6, Qt_4_7, Qt_4_8, Qt_4_9, Qt_5_0, %If (Qt_5_1_0 -) Qt_5_1, %End %If (Qt_5_2_0 -) Qt_5_2, %End %If (Qt_5_3_0 -) Qt_5_3, %End %If (Qt_5_4_0 -) Qt_5_4, %End %If (Qt_5_5_0 -) Qt_5_5, %End }; enum ByteOrder { BigEndian, LittleEndian, }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed, }; QDataStream(); explicit QDataStream(QIODevice *); QDataStream(QByteArray * /Constrained/, QFlags flags); QDataStream(const QByteArray & /Constrained/); ~QDataStream(); QIODevice *device() const; void setDevice(QIODevice *); bool atEnd() const; QDataStream::Status status() const; void setStatus(QDataStream::Status status); void resetStatus(); QDataStream::ByteOrder byteOrder() const; void setByteOrder(QDataStream::ByteOrder); int version() const; void setVersion(int v); int skipRawData(int len) /ReleaseGIL/; // Extra methods to give explicit control over the simple data types being read and written. int readInt() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint8 readInt8() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint8 readUInt8() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint16 readInt16() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint16 readUInt16() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint32 readInt32() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint32 readUInt32() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint64 readInt64() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint64 readUInt64() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End bool readBool() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End float readFloat() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End double readDouble() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End SIP_PYOBJECT readString() /ReleaseGIL,DocType="Py_v3:bytes;str"/; %MethodCode char *s; Py_BEGIN_ALLOW_THREADS *sipCpp >> s; Py_END_ALLOW_THREADS if (s) { sipRes = SIPBytes_FromString(s); delete[] s; } else { sipRes = Py_None; Py_INCREF(Py_None); } %End void writeInt(int i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt8(qint8 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt8(quint8 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt16(qint16 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt16(quint16 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt32(qint32 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt32(quint32 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt64(qint64 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt64(quint64 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeBool(bool i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeFloat(float f) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeDouble(double f) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeString(const char *str /Encoding="None"/) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End // Extra methods to support v2 of the QString and QVariant APIs. QString readQString() /ReleaseGIL/; %MethodCode sipRes = new QString; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQString(const QString &qstr) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QStringList readQStringList() /ReleaseGIL/; %MethodCode sipRes = new QStringList; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQStringList(const QStringList &qstrlst) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariant readQVariant() /ReleaseGIL/; %MethodCode sipRes = new QVariant; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariant(const QVariant &qvar) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantList readQVariantList() /ReleaseGIL/; %MethodCode sipRes = new QVariantList; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantList(const QVariantList &qvarlst) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantMap readQVariantMap() /ReleaseGIL/; %MethodCode sipRes = new QVariantMap; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantMap(const QVariantMap &qvarmap) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantHash readQVariantHash() /ReleaseGIL/; %MethodCode sipRes = new QVariantHash; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantHash(const QVariantHash &qvarhash) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End SIP_PYOBJECT readBytes() /DocType="Py_v3:bytes;str",ReleaseGIL/; %MethodCode char *s; uint l; Py_BEGIN_ALLOW_THREADS sipCpp->readBytes(s, l); Py_END_ALLOW_THREADS if ((sipRes = SIPBytes_FromStringAndSize(s, l)) == NULL) sipIsErr = 1; if (s) delete[] s; %End SIP_PYOBJECT readRawData(int len) /DocType="Py_v3:bytes;str",ReleaseGIL/; %MethodCode char *s = new char[a0]; Py_BEGIN_ALLOW_THREADS sipCpp->readRawData(s, a0); Py_END_ALLOW_THREADS sipRes = SIPBytes_FromStringAndSize(s, a0); if (!sipRes) sipIsErr = 1; delete[] s; %End QDataStream &writeBytes(const char * /Array/, uint len /ArraySize/) /ReleaseGIL/; int writeRawData(const char * /Array/, int len /ArraySize/) /ReleaseGIL/; enum FloatingPointPrecision { SinglePrecision, DoublePrecision, }; QDataStream::FloatingPointPrecision floatingPointPrecision() const; void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision); private: QDataStream(const QDataStream &); }; PyQt-gpl-5.5.1/sip/QtCore/qdatetime.sip0000644000076500000240000004176212613140040017741 0ustar philstaff00000000000000// qdatetime.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDate { %TypeHeaderCode #include %End %TypeCode #include #include %End %ConvertToTypeCode if (!PyDateTimeAPI) PyDateTime_IMPORT; // Allow a Python date object whenever a QDate is expected. if (sipIsErr == NULL) return (PyDate_Check(sipPy) || sipCanConvertToType(sipPy, sipType_QDate, SIP_NO_CONVERTORS)); if (PyDate_Check(sipPy)) { *sipCppPtr = new QDate(PyDateTime_GET_YEAR(sipPy), PyDateTime_GET_MONTH(sipPy), PyDateTime_GET_DAY(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDate, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue((char *)"iii", sipCpp->year(), sipCpp->month(), sipCpp->day()); %End public: QDate(); QDate(int y, int m, int d); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QDate()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QDate()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QDate(%i, %i, %i)", sipCpp->year(), sipCpp->month(), sipCpp->day()); } %End long __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDate() const /DocType="datetime.date"/; %MethodCode if (!PyDateTimeAPI) PyDateTime_IMPORT; // Convert to a Python date object. sipRes = PyDate_FromDate(sipCpp->year(), sipCpp->month(), sipCpp->day()); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int year() const; int month() const; int day() const; int dayOfWeek() const; int dayOfYear() const; int daysInMonth() const; int daysInYear() const; int weekNumber(int *yearNumber = 0) const; static QString shortMonthName(int month, QDate::MonthNameType type = QDate::DateFormat); static QString shortDayName(int weekday, QDate::MonthNameType type = QDate::DateFormat); static QString longMonthName(int month, QDate::MonthNameType type = QDate::DateFormat); static QString longDayName(int weekday, QDate::MonthNameType type = QDate::DateFormat); QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; QDate addDays(qint64 days) const; QDate addMonths(int months) const; QDate addYears(int years) const; qint64 daysTo(const QDate &) const; bool operator==(const QDate &other) const; bool operator!=(const QDate &other) const; bool operator<(const QDate &other) const; bool operator<=(const QDate &other) const; bool operator>(const QDate &other) const; bool operator>=(const QDate &other) const; static QDate currentDate(); static QDate fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QDate fromString(const QString &s, const QString &format); static bool isValid(int y, int m, int d); static bool isLeapYear(int year); static QDate fromJulianDay(qint64 jd); qint64 toJulianDay() const; bool setDate(int year, int month, int date); void getDate(int *year, int *month, int *day); enum MonthNameType { DateFormat, StandaloneFormat, }; }; class QTime { %TypeHeaderCode #include %End %TypeCode #include #include %End %ConvertToTypeCode if (!PyDateTimeAPI) PyDateTime_IMPORT; // Allow a Python time object whenever a QTime is expected. if (sipIsErr == NULL) return (PyTime_Check(sipPy) || sipCanConvertToType(sipPy, sipType_QTime, SIP_NO_CONVERTORS)); if (PyTime_Check(sipPy)) { *sipCppPtr = new QTime(PyDateTime_TIME_GET_HOUR(sipPy), PyDateTime_TIME_GET_MINUTE(sipPy), PyDateTime_TIME_GET_SECOND(sipPy), PyDateTime_TIME_GET_MICROSECOND(sipPy) / 1000); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->hour(), sipCpp->minute(), sipCpp->second(), sipCpp->msec()); %End public: QTime(); QTime(int h, int m, int second = 0, int msec = 0); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QTime()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QTime()"); #endif } else { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QTime(%i, %i", sipCpp->hour(), sipCpp->minute()); if (sipCpp->second() || sipCpp->msec()) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->second())); if (sipCpp->msec()) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->msec())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QTime(%i, %i", sipCpp->hour(), sipCpp->minute()); if (sipCpp->second() || sipCpp->msec()) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", sipCpp->second())); if (sipCpp->msec()) PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", sipCpp->msec())); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } %End long __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyTime() const /DocType="datetime.time"/; %MethodCode if (!PyDateTimeAPI) PyDateTime_IMPORT; // Convert to a Python time object. sipRes = PyTime_FromTime(sipCpp->hour(), sipCpp->minute(), sipCpp->second(), sipCpp->msec() * 1000); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int hour() const; int minute() const; int second() const; int msec() const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; bool setHMS(int h, int m, int s, int msec = 0); QTime addSecs(int secs) const; int secsTo(const QTime &) const; QTime addMSecs(int ms) const; int msecsTo(const QTime &) const; bool operator==(const QTime &other) const; bool operator!=(const QTime &other) const; bool operator<(const QTime &other) const; bool operator<=(const QTime &other) const; bool operator>(const QTime &other) const; bool operator>=(const QTime &other) const; static QTime currentTime(); static QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QTime fromString(const QString &s, const QString &format); static bool isValid(int h, int m, int s, int msec = 0); void start(); int restart(); int elapsed() const; %If (Qt_5_2_0 -) static QTime fromMSecsSinceStartOfDay(int msecs); %End %If (Qt_5_2_0 -) int msecsSinceStartOfDay() const; %End }; class QDateTime { %TypeHeaderCode #include %End %TypeCode #include #include %End %ConvertToTypeCode if (!PyDateTimeAPI) PyDateTime_IMPORT; // Allow a Python datetime object whenever a QDateTime is expected. if (sipIsErr == NULL) return (PyDateTime_Check(sipPy) || sipCanConvertToType(sipPy, sipType_QDateTime, SIP_NO_CONVERTORS)); if (PyDateTime_Check(sipPy)) { QDate qdate(PyDateTime_GET_YEAR(sipPy), PyDateTime_GET_MONTH(sipPy), PyDateTime_GET_DAY(sipPy)); QTime qtime(PyDateTime_DATE_GET_HOUR(sipPy), PyDateTime_DATE_GET_MINUTE(sipPy), PyDateTime_DATE_GET_SECOND(sipPy), PyDateTime_DATE_GET_MICROSECOND(sipPy) / 1000); QDateTime *qdt = new QDateTime(qdate, qtime); *sipCppPtr = qdt; return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDateTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = Py_BuildValue((char *)"iiiiiiii", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute(), qt.second(), qt.msec(), (int)sipCpp->timeSpec()); %End public: QDateTime(); QDateTime(const QDateTime &other); explicit QDateTime(const QDate &); QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec timeSpec = Qt::LocalTime); QDateTime(int y, int m, int d, int h, int m, int s = 0, int msec = 0, int timeSpec = 0) /NoDerived/; %MethodCode // This ctor is mainly supplied to allow pickling. QDate qd(a0, a1, a2); QTime qt(a3, a4, a5, a6); sipCpp = new QDateTime(qd, qt, (Qt::TimeSpec)a7); %End ~QDateTime(); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QDateTime()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QDateTime()"); #endif } else { QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QDateTime(%i, %i, %i, %i, %i", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute()); if (qt.second() || qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.second())); if (qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.msec())); if (sipCpp->timeSpec() != Qt::LocalTime) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", PyQt5.QtCore.Qt.TimeSpec(%i)", (int)sipCpp->timeSpec())); } } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QDateTime(%i, %i, %i, %i, %i", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute()); if (qt.second() || qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", qt.second())); if (qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", qt.msec())); if (sipCpp->timeSpec() != Qt::LocalTime) PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", PyQt5.QtCore.Qt.TimeSpec(%i)", (int)sipCpp->timeSpec())); } } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } %End long __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDateTime() const /DocType="datetime.datetime"/; %MethodCode if (!PyDateTimeAPI) PyDateTime_IMPORT; // Convert to a Python datetime object. QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = PyDateTime_FromDateAndTime(qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute(), qt.second(), qt.msec() * 1000); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; QDate date() const; QTime time() const; Qt::TimeSpec timeSpec() const; uint toTime_t() const; void setDate(const QDate &date); void setTime(const QTime &time); void setTimeSpec(Qt::TimeSpec spec); void setTime_t(uint secsSince1Jan1970UTC); QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; QDateTime addDays(qint64 days) const; QDateTime addMonths(int months) const; QDateTime addYears(int years) const; QDateTime addSecs(qint64 secs) const; QDateTime addMSecs(qint64 msecs) const; QDateTime toTimeSpec(Qt::TimeSpec spec) const; QDateTime toLocalTime() const; QDateTime toUTC() const; qint64 daysTo(const QDateTime &) const; qint64 secsTo(const QDateTime &) const; bool operator==(const QDateTime &other) const; bool operator!=(const QDateTime &other) const; bool operator<(const QDateTime &other) const; bool operator<=(const QDateTime &other) const; bool operator>(const QDateTime &other) const; bool operator>=(const QDateTime &other) const; static QDateTime currentDateTime(); static QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QDateTime fromString(const QString &s, const QString &format); static QDateTime fromTime_t(uint secsSince1Jan1970UTC); qint64 toMSecsSinceEpoch() const; void setMSecsSinceEpoch(qint64 msecs); qint64 msecsTo(const QDateTime &) const; static QDateTime currentDateTimeUtc(); static QDateTime fromMSecsSinceEpoch(qint64 msecs); static qint64 currentMSecsSinceEpoch(); void swap(QDateTime &other); %If (Qt_5_2_0 -) QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds); %End %If (Qt_5_2_0 -) QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone); %End %If (Qt_5_2_0 -) int offsetFromUtc() const; %End %If (Qt_5_2_0 -) QTimeZone timeZone() const; %End %If (Qt_5_2_0 -) QString timeZoneAbbreviation() const; %End %If (Qt_5_2_0 -) bool isDaylightTime() const; %End %If (Qt_5_2_0 -) void setOffsetFromUtc(int offsetSeconds); %End %If (Qt_5_2_0 -) void setTimeZone(const QTimeZone &toZone); %End %If (Qt_5_2_0 -) QDateTime toOffsetFromUtc(int offsetSeconds) const; %End %If (Qt_5_2_0 -) QDateTime toTimeZone(const QTimeZone &toZone) const; %End %If (Qt_5_2_0 -) static QDateTime fromTime_t(uint secsSince1Jan1970UTC, Qt::TimeSpec spec, int offsetSeconds = 0); %End %If (Qt_5_2_0 -) static QDateTime fromTime_t(uint secsSince1Jan1970UTC, const QTimeZone &timeZone); %End %If (Qt_5_2_0 -) static QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0); %End %If (Qt_5_2_0 -) static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone); %End }; QDataStream &operator<<(QDataStream &, const QDate & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDate & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QTime & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTime & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QDateTime & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDateTime & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtCore/qdir.sip0000644000076500000240000001413412613140040016714 0ustar philstaff00000000000000// qdir.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDir { %TypeHeaderCode #include %End public: enum Filter { Dirs, Files, Drives, NoSymLinks, AllEntries, TypeMask, Readable, Writable, Executable, PermissionMask, Modified, Hidden, System, AccessMask, AllDirs, CaseSensitive, NoDotAndDotDot, NoFilter, NoDot, NoDotDot, }; typedef QFlags Filters; enum SortFlag { Name, Time, Size, Unsorted, SortByMask, DirsFirst, Reversed, IgnoreCase, DirsLast, LocaleAware, Type, NoSort, }; typedef QFlags SortFlags; QDir(const QDir &); QDir(const QString &path /DocValue="''"/ = QString()); QDir(const QString &path, const QString &nameFilter, QFlags sort /DocValue="QDir.Name|QDir.IgnoreCase"/ = QDir::SortFlags(QDir::Name|QDir::IgnoreCase), QFlags filters = AllEntries); ~QDir(); void setPath(const QString &path); QString path() const; QString absolutePath() const; QString canonicalPath() const; QString dirName() const; QString filePath(const QString &fileName) const; QString absoluteFilePath(const QString &fileName) const; QString relativeFilePath(const QString &fileName) const; bool cd(const QString &dirName); bool cdUp(); QStringList nameFilters() const; void setNameFilters(const QStringList &nameFilters); QFlags filter() const; void setFilter(QFlags filter); QFlags sorting() const; void setSorting(QFlags sort); uint count() const /__len__/; QString operator[](int) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QString(sipCpp->operator[]((int)idx)); %End QStringList operator[](SIP_PYSLICE) const; %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QStringList(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QString &) const; %MethodCode sipRes = bool(sipCpp->entryList().contains(*a0)); %End static QStringList nameFiltersFromString(const QString &nameFilter); QStringList entryList(QFlags filters = NoFilter, QFlags sort = NoSort) const; QStringList entryList(const QStringList &nameFilters, QFlags filters = NoFilter, QFlags sort = NoSort) const; QFileInfoList entryInfoList(QFlags filters = NoFilter, QFlags sort = NoSort) const; QFileInfoList entryInfoList(const QStringList &nameFilters, QFlags filters = NoFilter, QFlags sort = NoSort) const; bool mkdir(const QString &dirName) const; bool rmdir(const QString &dirName) const; bool mkpath(const QString &dirPath) const; bool rmpath(const QString &dirPath) const; bool isReadable() const; bool exists() const; bool isRoot() const; static bool isRelativePath(const QString &path); static bool isAbsolutePath(const QString &path); bool isRelative() const; bool isAbsolute() const; bool makeAbsolute(); bool operator==(const QDir &dir) const; bool operator!=(const QDir &dir) const; bool remove(const QString &fileName); bool rename(const QString &oldName, const QString &newName); bool exists(const QString &name) const; void refresh() const; static QFileInfoList drives(); static QChar separator(); static bool setCurrent(const QString &path); static QDir current(); static QString currentPath(); static QDir home(); static QString homePath(); static QDir root(); static QString rootPath(); static QDir temp(); static QString tempPath(); static bool match(const QStringList &filters, const QString &fileName); static bool match(const QString &filter, const QString &fileName); static QString cleanPath(const QString &path); static QString toNativeSeparators(const QString &pathName); static QString fromNativeSeparators(const QString &pathName); static void setSearchPaths(const QString &prefix, const QStringList &searchPaths); static void addSearchPath(const QString &prefix, const QString &path); static QStringList searchPaths(const QString &prefix); bool removeRecursively(); void swap(QDir &other); }; QFlags operator|(QDir::Filter f1, QFlags f2); QFlags operator|(QDir::SortFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qdiriterator.sip0000644000076500000240000000400712613140040020464 0ustar philstaff00000000000000// qdiriterator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDirIterator { %TypeHeaderCode #include %End public: enum IteratorFlag { NoIteratorFlags, FollowSymlinks, Subdirectories, }; typedef QFlags IteratorFlags; QDirIterator(const QDir &dir, QFlags flags = NoIteratorFlags); QDirIterator(const QString &path, QFlags flags = NoIteratorFlags); QDirIterator(const QString &path, QFlags filters, QFlags flags = NoIteratorFlags); QDirIterator(const QString &path, const QStringList &nameFilters, QFlags filters = QDir::NoFilter, QFlags flags = NoIteratorFlags); ~QDirIterator(); QString next(); bool hasNext() const; QString fileName() const; QString filePath() const; QFileInfo fileInfo() const; QString path() const; private: QDirIterator(const QDirIterator &); }; QFlags operator|(QDirIterator::IteratorFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qeasingcurve.sip0000644000076500000240000001460012613140040020447 0ustar philstaff00000000000000// qeasingcurve.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEasingCurve { %TypeHeaderCode #include %End %TypeCode // The EasingFunction callback doesn't provide a context so we support a fixed // number of different functions. const int ec_nr_custom_types = 10; struct ec_custom_type { PyObject *py_func; QEasingCurve::EasingFunction func; }; static qreal ec_call(int ec, qreal v); static qreal ec_func_0(qreal v) { return ec_call(0, v); } static qreal ec_func_1(qreal v) { return ec_call(1, v); } static qreal ec_func_2(qreal v) { return ec_call(2, v); } static qreal ec_func_3(qreal v) { return ec_call(3, v); } static qreal ec_func_4(qreal v) { return ec_call(4, v); } static qreal ec_func_5(qreal v) { return ec_call(5, v); } static qreal ec_func_6(qreal v) { return ec_call(6, v); } static qreal ec_func_7(qreal v) { return ec_call(7, v); } static qreal ec_func_8(qreal v) { return ec_call(8, v); } static qreal ec_func_9(qreal v) { return ec_call(9, v); } static ec_custom_type ec_custom_types[ec_nr_custom_types] = { {0, ec_func_0}, {0, ec_func_1}, {0, ec_func_2}, {0, ec_func_3}, {0, ec_func_4}, {0, ec_func_5}, {0, ec_func_6}, {0, ec_func_7}, {0, ec_func_8}, {0, ec_func_9}, }; static qreal ec_call(int ec, qreal v) { PyObject *res_obj; qreal res = 0.0; SIP_BLOCK_THREADS res_obj = PyObject_CallFunction(ec_custom_types[ec].py_func, (char *)"(d)", (double)v); if (res_obj) { PyErr_Clear(); res = PyFloat_AsDouble(res_obj); Py_DECREF(res_obj); if (PyErr_Occurred()) res_obj = 0; } if (!res_obj) pyqt5_err_print(); SIP_UNBLOCK_THREADS return res; } %End %ConvertToTypeCode // Allow a QEasingCurve::Type whenever a QEasingCurve is expected. if (sipIsErr == NULL) { if (sipCanConvertToType(sipPy, sipType_QEasingCurve, SIP_NO_CONVERTORS)) return 1; if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QEasingCurve_Type))) return 1; return 0; } if (sipCanConvertToType(sipPy, sipType_QEasingCurve, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QEasingCurve, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } *sipCppPtr = new QEasingCurve((QEasingCurve::Type)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); %End public: enum Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, InCubic, OutCubic, InOutCubic, OutInCubic, InQuart, OutQuart, InOutQuart, OutInQuart, InQuint, OutQuint, InOutQuint, OutInQuint, InSine, OutSine, InOutSine, OutInSine, InExpo, OutExpo, InOutExpo, OutInExpo, InCirc, OutCirc, InOutCirc, OutInCirc, InElastic, OutElastic, InOutElastic, OutInElastic, InBack, OutBack, InOutBack, OutInBack, InBounce, OutBounce, InOutBounce, OutInBounce, InCurve, OutCurve, SineCurve, CosineCurve, BezierSpline, TCBSpline, Custom, }; QEasingCurve(QEasingCurve::Type type = QEasingCurve::Linear); QEasingCurve(const QEasingCurve &other); ~QEasingCurve(); bool operator==(const QEasingCurve &other) const; bool operator!=(const QEasingCurve &other) const; qreal amplitude() const; void setAmplitude(qreal amplitude); qreal period() const; void setPeriod(qreal period); qreal overshoot() const; void setOvershoot(qreal overshoot); QEasingCurve::Type type() const; void setType(QEasingCurve::Type type); void setCustomType(SIP_PYCALLABLE func); %MethodCode int i; ec_custom_type *ct; for (i = 0; i < ec_nr_custom_types; ++i) { ct = &ec_custom_types[i]; if (!ct->py_func || ct->py_func == a0) break; } if (i == ec_nr_custom_types) { PyErr_Format(PyExc_ValueError, "a maximum of %d different easing functions are supported", ec_nr_custom_types); sipError = sipErrorFail; } else { if (!ct->py_func) { ct->py_func = a0; Py_INCREF(a0); } sipCpp->setCustomType(ct->func); } %End SIP_PYCALLABLE customType() const; %MethodCode QEasingCurve::EasingFunction func = sipCpp->customType(); sipRes = Py_None; if (func) { for (int i = 0; i < ec_nr_custom_types; ++i) { if (ec_custom_types[i].func == func) { sipRes = ec_custom_types[i].py_func; break; } } } Py_INCREF(sipRes); %End qreal valueForProgress(qreal progress) const; void swap(QEasingCurve &other); void addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint); void addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b); QVector toCubicSpline() const; }; QDataStream &operator<<(QDataStream &, const QEasingCurve & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QEasingCurve & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtCore/qelapsedtimer.sip0000644000076500000240000000344312613140040020615 0ustar philstaff00000000000000// qelapsedtimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QElapsedTimer { %TypeHeaderCode #include %End public: %If (Qt_5_4_0 -) QElapsedTimer(); %End enum ClockType { SystemTime, MonotonicClock, TickCounter, MachAbsoluteTime, PerformanceCounter, }; static QElapsedTimer::ClockType clockType(); static bool isMonotonic(); void start(); qint64 restart(); void invalidate(); bool isValid() const; qint64 elapsed() const; bool hasExpired(qint64 timeout) const; qint64 msecsSinceReference() const; qint64 msecsTo(const QElapsedTimer &other) const; qint64 secsTo(const QElapsedTimer &other) const; bool operator==(const QElapsedTimer &other) const; bool operator!=(const QElapsedTimer &other) const; qint64 nsecsElapsed() const; }; bool operator<(const QElapsedTimer &v1, const QElapsedTimer &v2); PyQt-gpl-5.5.1/sip/QtCore/qeventloop.sip0000644000076500000240000000472012613140040020151 0ustar philstaff00000000000000// qeventloop.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEventLoop : QObject { %TypeHeaderCode #include %End public: explicit QEventLoop(QObject *parent /TransferThis/ = 0); virtual ~QEventLoop(); enum ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents, X11ExcludeTimers, }; typedef QFlags ProcessEventsFlags; bool processEvents(QFlags flags = AllEvents) /ReleaseGIL/; void processEvents(QFlags flags, int maximumTime) /ReleaseGIL/; int exec(QFlags flags = AllEvents) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) int exec(QFlags flags = AllEvents) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End void exit(int returnCode = 0); bool isRunning() const; void wakeUp(); public slots: void quit(); public: virtual bool event(QEvent *event); }; QFlags operator|(QEventLoop::ProcessEventsFlag f1, QFlags f2); class QEventLoopLocker { %TypeHeaderCode #include %End public: QEventLoopLocker() /ReleaseGIL/; explicit QEventLoopLocker(QEventLoop *loop) /ReleaseGIL/; explicit QEventLoopLocker(QThread *thread) /ReleaseGIL/; ~QEventLoopLocker(); private: QEventLoopLocker(const QEventLoopLocker &); }; PyQt-gpl-5.5.1/sip/QtCore/qeventtransition.sip0000644000076500000240000000315412613140040021372 0ustar philstaff00000000000000// qeventtransition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEventTransition : QAbstractTransition { %TypeHeaderCode #include %End public: QEventTransition(QState *sourceState /TransferThis/ = 0); QEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, QState *sourceState /TransferThis/ = 0); virtual ~QEventTransition(); QObject *eventSource() const; void setEventSource(QObject *object /KeepReference=10/); QEvent::Type eventType() const; void setEventType(QEvent::Type type); protected: virtual bool eventTest(QEvent *event); virtual void onTransition(QEvent *event); virtual bool event(QEvent *e); private: QEventTransition(const QEventTransition &); }; PyQt-gpl-5.5.1/sip/QtCore/qfile.sip0000644000076500000240000000547412613140040017064 0ustar philstaff00000000000000// qfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFile : QFileDevice { %TypeHeaderCode #include %End public: QFile(); QFile(const QString &name); explicit QFile(QObject *parent /TransferThis/); QFile(const QString &name, QObject *parent /TransferThis/); virtual ~QFile(); virtual QString fileName() const; void setFileName(const QString &name); static QByteArray encodeName(const QString &fileName); static QString decodeName(const QByteArray &localFileName); static QString decodeName(const char *localFileName /Encoding="ASCII"/); bool exists() const; static bool exists(const QString &fileName); QString symLinkTarget() const; static QString symLinkTarget(const QString &fileName); bool remove() /ReleaseGIL/; static bool remove(const QString &fileName) /ReleaseGIL/; bool rename(const QString &newName) /ReleaseGIL/; static bool rename(const QString &oldName, const QString &newName) /ReleaseGIL/; bool link(const QString &newName) /ReleaseGIL/; static bool link(const QString &oldname, const QString &newName) /ReleaseGIL/; bool copy(const QString &newName) /ReleaseGIL/; static bool copy(const QString &fileName, const QString &newName) /ReleaseGIL/; virtual bool open(QFlags flags) /ReleaseGIL/; bool open(int fd, QFlags ioFlags, QFlags handleFlags = QFileDevice::DontCloseHandle); virtual qint64 size() const; virtual bool resize(qint64 sz); static bool resize(const QString &filename, qint64 sz); virtual QFlags permissions() const; static QFlags permissions(const QString &filename); virtual bool setPermissions(QFlags permissionSpec); static bool setPermissions(const QString &filename, QFlags permissionSpec); private: QFile(const QFile &); }; PyQt-gpl-5.5.1/sip/QtCore/qfiledevice.sip0000644000076500000240000001241712613140040020237 0ustar philstaff00000000000000// qfiledevice.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileDevice : QIODevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum FileError { NoError, ReadError, WriteError, FatalError, ResourceError, OpenError, AbortError, TimeOutError, UnspecifiedError, RemoveError, RenameError, PositionError, ResizeError, PermissionsError, CopyError, }; enum Permission { ReadOwner, WriteOwner, ExeOwner, ReadUser, WriteUser, ExeUser, ReadGroup, WriteGroup, ExeGroup, ReadOther, WriteOther, ExeOther, }; typedef QFlags Permissions; enum FileHandleFlag { AutoCloseHandle, DontCloseHandle, }; typedef QFlags FileHandleFlags; virtual ~QFileDevice(); QFileDevice::FileError error() const; void unsetError(); virtual void close() /ReleaseGIL/; virtual bool isSequential() const; int handle() const; virtual QString fileName() const; virtual qint64 pos() const; virtual bool seek(qint64 offset) /ReleaseGIL/; virtual bool atEnd() const; bool flush() /ReleaseGIL/; virtual qint64 size() const; virtual bool resize(qint64 sz); virtual QFlags permissions() const; virtual bool setPermissions(QFlags permissionSpec); enum MemoryMapFlags { NoOptions, %If (Qt_5_4_0 -) MapPrivateOption, %End }; void *map(qint64 offset, qint64 size /ResultSize/, QFileDevice::MemoryMapFlags flags = QFileDevice::NoOptions) [uchar * (qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = QFileDevice::NoOptions)]; bool unmap(void *address) [bool (uchar *address)]; protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QFileDevice::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; virtual SIP_PYOBJECT readLineData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QFileDevice::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End private: QFileDevice(const QFileDevice &); }; QFlags operator|(QFileDevice::Permission f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qfileinfo.sip0000644000076500000240000000553112613140040017732 0ustar philstaff00000000000000// qfileinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileInfo { %TypeHeaderCode #include %End public: QFileInfo(); QFileInfo(const QString &file); QFileInfo(const QFile &file); QFileInfo(const QDir &dir, const QString &file); QFileInfo(const QFileInfo &fileinfo); ~QFileInfo(); bool operator==(const QFileInfo &fileinfo) const; bool operator!=(const QFileInfo &fileinfo) const; void setFile(const QString &file); void setFile(const QFile &file); void setFile(const QDir &dir, const QString &file); bool exists() const; void refresh(); QString filePath() const; QString absoluteFilePath() const; QString canonicalFilePath() const; QString fileName() const; QString baseName() const; QString completeBaseName() const; QString suffix() const; QString completeSuffix() const; QString path() const; QString absolutePath() const; QString canonicalPath() const; QDir dir() const; QDir absoluteDir() const; bool isReadable() const; bool isWritable() const; bool isExecutable() const; bool isHidden() const; bool isRelative() const; bool isAbsolute() const; bool makeAbsolute(); bool isFile() const; bool isDir() const; bool isSymLink() const; bool isRoot() const; QString owner() const; uint ownerId() const; QString group() const; uint groupId() const; bool permission(QFlags permissions) const; QFlags permissions() const; qint64 size() const; QDateTime created() const; QDateTime lastModified() const; QDateTime lastRead() const; bool caching() const; void setCaching(bool on); QString symLinkTarget() const; QString bundleName() const; bool isBundle() const; bool isNativePath() const; void swap(QFileInfo &other); %If (Qt_5_2_0 -) static bool exists(const QString &file); %End }; typedef QList QFileInfoList; PyQt-gpl-5.5.1/sip/QtCore/qfileselector.sip0000644000076500000240000000255512613140040020622 0ustar philstaff00000000000000// qfileselector.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QFileSelector : QObject { %TypeHeaderCode #include %End public: explicit QFileSelector(QObject *parent /TransferThis/ = 0); virtual ~QFileSelector(); QString select(const QString &filePath) const; QUrl select(const QUrl &filePath) const; QStringList extraSelectors() const; void setExtraSelectors(const QStringList &list); QStringList allSelectors() const; }; %End PyQt-gpl-5.5.1/sip/QtCore/qfilesystemwatcher.sip0000644000076500000240000000307512613140040021702 0ustar philstaff00000000000000// qfilesystemwatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSystemWatcher : QObject { %TypeHeaderCode #include %End public: QFileSystemWatcher(QObject *parent /TransferThis/ = 0); QFileSystemWatcher(const QStringList &paths, QObject *parent /TransferThis/ = 0); virtual ~QFileSystemWatcher(); bool addPath(const QString &file); QStringList addPaths(const QStringList &files); QStringList directories() const; QStringList files() const; bool removePath(const QString &file); QStringList removePaths(const QStringList &files); signals: void directoryChanged(const QString &path); void fileChanged(const QString &path); }; PyQt-gpl-5.5.1/sip/QtCore/qfinalstate.sip0000644000076500000240000000242512613140040020270 0ustar philstaff00000000000000// qfinalstate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFinalState : QAbstractState { %TypeHeaderCode #include %End public: QFinalState(QState *parent /TransferThis/ = 0); virtual ~QFinalState(); protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); private: QFinalState(const QFinalState &); }; PyQt-gpl-5.5.1/sip/QtCore/qglobal.sip0000644000076500000240000001472212613140040017401 0ustar philstaff00000000000000// qglobal.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End // PyQt version information. int PYQT_VERSION; const char *PYQT_VERSION_STR; %ModuleCode static int PYQT_VERSION = 0x050501; static const char *PYQT_VERSION_STR = "5.5.1"; %End const int QT_VERSION; const char *QT_VERSION_STR; typedef signed char qint8 /PyInt/; typedef unsigned char quint8 /PyInt/; typedef short qint16; typedef unsigned short quint16; typedef int qint32; typedef unsigned int quint32; typedef long long qint64; typedef unsigned long long quint64; typedef qint64 qlonglong; typedef quint64 qulonglong; %If (PyQt_qreal_double) typedef double qreal; %End %If (!PyQt_qreal_double) typedef float qreal; %End typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; double qAbs(const double &t); int qRound(qreal d); qint64 qRound64(qreal d); const char *qVersion(); bool qSharedBuild(); // Template definition for QFlags. template class QFlags /PyQtFlags=0x1/ { public: QFlags(const QFlags &); // This is handled by the %ConvertToTypeCode. //QFlags(ENUM); // This is a convenience, eg. to restore a set of flags from QSettings. QFlags(int); QFlags(); QFlags &operator&=(int mask); QFlags &operator|=(QFlags f); //QFlags &operator|=(ENUM f); QFlags &operator^=(QFlags f); //QFlags &operator^=(ENUM f); operator int() const; QFlags operator|(QFlags f) const; //QFlags operator|(ENUM f) const; QFlags operator^(QFlags f) const; //QFlags operator^(ENUM f) const; QFlags operator&(int mask) const; //QFlags operator&(ENUM f) const; QFlags operator~() const; // These are here to ensure consistency between, for example: // Qt.AlignLeft | Qt.AlignTop | Qt.TextWordWrap and // Qt.AlignLeft | Qt.TextWordWrap | Qt.AlignTop // In the first of the above Qt.TextWordWrap is ored with a // Qt.AlignmentFlag enum. In the second it is being ored with a // Qt.Alignment class. QFlags operator|(int f); %MethodCode sipRes = new QFlags(*a0 | a1); %End QFlags operator^(int f); %MethodCode sipRes = new QFlags(*a0 ^ a1); %End // These are necessary to prevent Python comparing object IDs. bool operator==(const QFlags &f) const; %MethodCode sipRes = (sipCpp->operator QFlags::Int() == a0->operator QFlags::Int()); %End bool operator!=(const QFlags &f) const; %MethodCode sipRes = (sipCpp->operator QFlags::Int() != a0->operator QFlags::Int()); %End int __bool__() const; %MethodCode sipRes = (sipCpp->operator QFlags::Int() != 0); %End %ConvertToTypeCode // Allow an instance of the base enum whenever a QFlags is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_ENUM)) || sipCanConvertToType(sipPy, sipType_QFlags, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_ENUM))) { *sipCppPtr = new QFlags(int(SIPLong_AsLong(sipPy))); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QFlags, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End }; // Hook's into Qt's resource system. %ModuleCode QT_BEGIN_NAMESPACE extern bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); extern bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); QT_END_NAMESPACE %End bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qFuzzyCompare(double p1, double p2); bool qIsNull(double d); void qsrand(uint seed); int qrand(); typedef void *QFunctionPointer; // Mapped type for qintptr. // Map qintptr onto sip.voidptr. This means either an address (on Windows) or // an integer file descriptor (on everything else) can be used. %MappedType qintptr /DocType="sip.voidptr"/ { %TypeHeaderCode #include %End %ConvertToTypeCode qintptr ptr = (qintptr)sipConvertToVoidPtr(sipPy); if (!sipIsErr) return !PyErr_Occurred(); // Mapped types deal with pointers, so create one on the heap. qintptr *heap = new qintptr; *heap = ptr; *sipCppPtr = heap; // Make sure the pointer doesn't leak. return SIP_TEMPORARY; %End %ConvertFromTypeCode return sipConvertFromVoidPtr((void *)*sipCpp); %End }; // Mapped type for quintptr. // Map quintptr onto sip.voidptr. This means either an address (on Windows) or // an integer file descriptor (on everything else) can be used. %MappedType quintptr /DocType="sip.voidptr"/ { %TypeHeaderCode #include %End %ConvertToTypeCode quintptr ptr = (quintptr)sipConvertToVoidPtr(sipPy); if (!sipIsErr) return !PyErr_Occurred(); // Mapped types deal with pointers, so create one on the heap. quintptr *heap = new quintptr; *heap = ptr; *sipCppPtr = heap; // Make sure the pointer doesn't leak. return SIP_TEMPORARY; %End %ConvertFromTypeCode return sipConvertFromVoidPtr((void *)*sipCpp); %End }; // Implementations of pyqt[Set]PickleProtocol(). void pyqtSetPickleProtocol(SIP_PYOBJECT /DocType="int-or-None"/); %MethodCode Py_XDECREF(qpycore_pickle_protocol); qpycore_pickle_protocol = a0; Py_INCREF(qpycore_pickle_protocol); %End SIP_PYOBJECT pyqtPickleProtocol() /DocType="int-or-None"/; %MethodCode sipRes = qpycore_pickle_protocol; if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End PyQt-gpl-5.5.1/sip/QtCore/qhistorystate.sip0000644000076500000240000000343012613140040020675 0ustar philstaff00000000000000// qhistorystate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHistoryState : QAbstractState { %TypeHeaderCode #include %End public: enum HistoryType { ShallowHistory, DeepHistory, }; QHistoryState(QState *parent /TransferThis/ = 0); QHistoryState(QHistoryState::HistoryType type, QState *parent /TransferThis/ = 0); virtual ~QHistoryState(); QAbstractState *defaultState() const; void setDefaultState(QAbstractState *state /KeepReference/); QHistoryState::HistoryType historyType() const; void setHistoryType(QHistoryState::HistoryType type); protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); signals: %If (Qt_5_4_0 -) void defaultStateChanged(); %End %If (Qt_5_4_0 -) void historyTypeChanged(); %End private: QHistoryState(const QHistoryState &); }; PyQt-gpl-5.5.1/sip/QtCore/qidentityproxymodel.sip0000644000076500000240000000564212613140040022116 0ustar philstaff00000000000000// qidentityproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIdentityProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QIdentityProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QIdentityProxyModel(); virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchStartsWith|Qt::MatchWrap) const; virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); %If (Qt_5_5_0 -) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; %End %If (- Qt_5_5_0) virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; %End virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; private: QIdentityProxyModel(const QIdentityProxyModel &); }; PyQt-gpl-5.5.1/sip/QtCore/qiodevice.sip0000644000076500000240000002126612613140040017731 0ustar philstaff00000000000000// qiodevice.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIODevice : QObject { %TypeHeaderCode #include %End public: enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, Append, Truncate, Text, Unbuffered, }; typedef QFlags OpenMode; QIODevice(); explicit QIODevice(QObject *parent /TransferThis/); virtual ~QIODevice(); QFlags openMode() const; void setTextModeEnabled(bool enabled); bool isTextModeEnabled() const; bool isOpen() const; bool isReadable() const; bool isWritable() const; virtual bool isSequential() const; virtual bool open(QFlags mode) /ReleaseGIL/; virtual void close() /ReleaseGIL/; virtual qint64 pos() const; virtual qint64 size() const; virtual bool seek(qint64 pos) /ReleaseGIL/; virtual bool atEnd() const; virtual bool reset(); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; SIP_PYOBJECT read(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->read(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End QByteArray readAll() /ReleaseGIL/; SIP_PYOBJECT readLine(qint64 maxlen=0) /DocType="Py_v3:bytes;str",ReleaseGIL/; %MethodCode // The two C++ overloads would have the same Python signature so we get most of // the combined functionality by treating an argument of 0 (the default) as // meaning return a QByteArray of any length. Otherwise it is treated as a // maximum buffer size and a Python string is returned. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else if (a0 == 0) { QByteArray *ba; Py_BEGIN_ALLOW_THREADS ba = new QByteArray(sipCpp->readLine(a0)); Py_END_ALLOW_THREADS sipRes = sipBuildResult(&sipIsErr, "N", ba, sipType_QByteArray, 0); } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readLine(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual bool canReadLine() const; QByteArray peek(qint64 maxlen) /ReleaseGIL/; qint64 write(const QByteArray &data) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs) /ReleaseGIL/; void ungetChar(char c); bool putChar(char c); bool getChar(char *c /Encoding="None",Out/); QString errorString() const; signals: void readyRead(); void bytesWritten(qint64 bytes); void aboutToClose(); void readChannelFinished(); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) = 0 /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipCpp->readData(s, a0); #else len = sipCpp->sipProtect_readData(s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr, sipMethod, result, "O", &buf); if (buf == Py_None) sipRes = -1L; else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0, SIPBytes_AS_STRING(buf), SIPBytes_GET_SIZE(buf)); sipRes = SIPBytes_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QIODevice::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr, sipMethod, result, "O", &buf); if (buf == Py_None) sipRes = -1L; else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0, SIPBytes_AS_STRING(buf), SIPBytes_GET_SIZE(buf)); sipRes = SIPBytes_GET_SIZE(buf); } Py_DECREF(buf); Py_DECREF(result); } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) = 0; void setOpenMode(QFlags openMode); void setErrorString(const QString &errorString); private: QIODevice(const QIODevice &); }; QFlags operator|(QIODevice::OpenModeFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qitemselectionmodel.sip0000644000076500000240000002333412613140040022025 0ustar philstaff00000000000000// qitemselectionmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemSelectionRange { %TypeHeaderCode #include %End public: QItemSelectionRange(); QItemSelectionRange(const QItemSelectionRange &other); QItemSelectionRange(const QModelIndex &atopLeft, const QModelIndex &abottomRight); explicit QItemSelectionRange(const QModelIndex &index); int top() const; int left() const; int bottom() const; int right() const; int width() const; int height() const; const QPersistentModelIndex &topLeft() const; const QPersistentModelIndex &bottomRight() const; QModelIndex parent() const; const QAbstractItemModel *model() const; bool contains(const QModelIndex &index) const; bool contains(int row, int column, const QModelIndex &parentIndex) const; bool intersects(const QItemSelectionRange &other) const; bool operator==(const QItemSelectionRange &other) const; bool operator!=(const QItemSelectionRange &other) const; bool isValid() const; QModelIndexList indexes() const; QItemSelectionRange intersected(const QItemSelectionRange &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool isEmpty() const; bool operator<(const QItemSelectionRange &other) const; }; class QItemSelectionModel : QObject { %TypeHeaderCode #include %End public: enum SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle, Current, Rows, Columns, SelectCurrent, ToggleCurrent, ClearAndSelect, }; typedef QFlags SelectionFlags; %If (Qt_5_5_0 -) explicit QItemSelectionModel(QAbstractItemModel *model /TransferThis/ = 0); %End %If (- Qt_5_5_0) explicit QItemSelectionModel(QAbstractItemModel *model /TransferThis/); %End QItemSelectionModel(QAbstractItemModel *model, QObject *parent /TransferThis/); virtual ~QItemSelectionModel(); QModelIndex currentIndex() const; bool isSelected(const QModelIndex &index) const; bool isRowSelected(int row, const QModelIndex &parent) const; bool isColumnSelected(int column, const QModelIndex &parent) const; bool rowIntersectsSelection(int row, const QModelIndex &parent) const; bool columnIntersectsSelection(int column, const QModelIndex &parent) const; QModelIndexList selectedIndexes() const; const QItemSelection selection() const; %If (Qt_5_5_0 -) QAbstractItemModel *model(); %End %If (- Qt_5_5_0) const QAbstractItemModel *model() const; %End public slots: virtual void clear(); void clearSelection(); virtual void reset(); virtual void select(const QModelIndex &index, QFlags command); virtual void select(const QItemSelection &selection, QFlags command); virtual void setCurrentIndex(const QModelIndex &index, QFlags command); virtual void clearCurrentIndex(); signals: void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); void currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous); void currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous); protected: void emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection); public: bool hasSelection() const; QModelIndexList selectedRows(int column = 0) const; QModelIndexList selectedColumns(int row = 0) const; %If (Qt_5_5_0 -) void setModel(QAbstractItemModel *model); %End signals: %If (Qt_5_5_0 -) void modelChanged(QAbstractItemModel *model); %End private: QItemSelectionModel(const QItemSelectionModel &); }; QFlags operator|(QItemSelectionModel::SelectionFlag f1, QFlags f2); class QItemSelection { %TypeHeaderCode #include %End public: QItemSelection(); QItemSelection(const QModelIndex &topLeft, const QModelIndex &bottomRight); void select(const QModelIndex &topLeft, const QModelIndex &bottomRight); bool contains(const QModelIndex &index) const; int __contains__(const QModelIndex &index); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End QModelIndexList indexes() const; void merge(const QItemSelection &other, QFlags command); static void split(const QItemSelectionRange &range, const QItemSelectionRange &other, QItemSelection *result); void __setitem__(int i, const QItemSelectionRange &range); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QItemSelection &list); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QItemSelection::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->removeAt(start); start += step - 1; } %End QItemSelectionRange operator[](int i); %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QItemSelectionRange(sipCpp->operator[]((int)idx)); %End QItemSelection operator[](SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QItemSelection(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End // Methods inherited from QList. bool operator!=(const QItemSelection &other) const; bool operator==(const QItemSelection &other) const; // Keep the following in sync with QStringList (except for mid()). void clear(); bool isEmpty() const; void append(const QItemSelectionRange &range); void prepend(const QItemSelectionRange &range); void insert(int i, const QItemSelectionRange &range); void replace(int i, const QItemSelectionRange &range); void removeAt(int i); int removeAll(const QItemSelectionRange &range); QItemSelectionRange takeAt(int i); QItemSelectionRange takeFirst(); QItemSelectionRange takeLast(); void move(int from, int to); void swap(int i, int j); int count(const QItemSelectionRange &range) const; int count() const /__len__/; QItemSelectionRange &first(); QItemSelectionRange &last(); int indexOf(const QItemSelectionRange &value, int from = 0) const; int lastIndexOf(const QItemSelectionRange &value, int from = -1) const; QItemSelection &operator+=(const QItemSelection &other); QItemSelection &operator+=(const QItemSelectionRange &value); }; PyQt-gpl-5.5.1/sip/QtCore/qjsonarray.sip0000644000076500000240000000623512613140040020151 0ustar philstaff00000000000000// This is the SIP interface definition for the QJsonArray mapped type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that we assume any iterable can be converted to a QJsonArray. However, // because QJsonObject is implemented as a dict (which is also an iterable), // then any overloads that handle both must be ordered so that QJsonObject is // checked first. %MappedType QJsonArray /DocType="list-of-QJsonValue"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QJsonValue *t = new QJsonValue(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QJsonValue, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QJsonArray *ql = new QJsonArray; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QJsonValue *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QJsonValue, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QJsonValue' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QJsonValue, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qjsondocument.sip0000644000076500000240000000571712613140040020655 0ustar philstaff00000000000000// qjsondocument.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QJsonParseError { %TypeHeaderCode #include %End enum ParseError { NoError, UnterminatedObject, MissingNameSeparator, UnterminatedArray, MissingValueSeparator, IllegalValue, TerminationByNumber, IllegalNumber, IllegalEscapeSequence, IllegalUTF8String, UnterminatedString, MissingObject, DeepNesting, DocumentTooLarge, %If (Qt_5_4_0 -) GarbageAtEnd, %End }; QString errorString() const; int offset; QJsonParseError::ParseError error; }; class QJsonDocument { %TypeHeaderCode #include %End public: QJsonDocument(); explicit QJsonDocument(const QJsonObject &object); explicit QJsonDocument(const QJsonArray &array); QJsonDocument(const QJsonDocument &other); ~QJsonDocument(); enum DataValidation { Validate, BypassValidation, }; static QJsonDocument fromRawData(const char *data /Encoding="None"/, int size, QJsonDocument::DataValidation validation = QJsonDocument::Validate); const char *rawData(int *size /Out/) const /Encoding="None"/; static QJsonDocument fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = QJsonDocument::Validate); QByteArray toBinaryData() const; static QJsonDocument fromVariant(const QVariant &variant); QVariant toVariant() const; enum JsonFormat { Indented, Compact, }; static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = 0); QByteArray toJson() const; QByteArray toJson(QJsonDocument::JsonFormat format) const; bool isEmpty() const; bool isArray() const; bool isObject() const; QJsonObject object() const; QJsonArray array() const; void setObject(const QJsonObject &object); void setArray(const QJsonArray &array); bool operator==(const QJsonDocument &other) const; bool operator!=(const QJsonDocument &other) const; bool isNull() const; }; PyQt-gpl-5.5.1/sip/QtCore/qjsonobject.sip0000644000076500000240000000660112613140040020276 0ustar philstaff00000000000000// This is the SIP interface definition for the QJsonObject mapped type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QJsonObject /DocType="dict-of-str-QJsonValue"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QJsonObject::const_iterator it = sipCpp->constBegin(); QJsonObject::const_iterator end = sipCpp->constEnd(); while (it != end) { QString *k = new QString(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType_QString, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } QJsonValue *v = new QJsonValue(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType_QJsonValue, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QJsonObject *jo = new QJsonObject; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; QString *k = reinterpret_cast( sipForceConvertToType(kobj, sipType_QString, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a key has type '%s' but 'str' is expected", Py_TYPE(kobj)->tp_name); delete jo; return 0; } int vstate; QJsonValue *v = reinterpret_cast( sipForceConvertToType(vobj, sipType_QJsonValue, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a value has type '%s' but 'QJsonValue' is expected", Py_TYPE(vobj)->tp_name); sipReleaseType(k, sipType_QString, kstate); delete jo; return 0; } jo->insert(*k, *v); sipReleaseType(v, sipType_QJsonValue, vstate); sipReleaseType(k, sipType_QString, kstate); } *sipCppPtr = jo; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qjsonvalue.sip0000644000076500000240000000436512613140040020151 0ustar philstaff00000000000000// qjsonvalue.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QJsonValue { %TypeHeaderCode #include %End %ConvertToTypeCode if (!sipIsErr) return qpycore_canConvertTo_QJsonValue(sipPy); return qpycore_convertTo_QJsonValue(sipPy, sipTransferObj, sipCppPtr, sipIsErr); %End public: enum Type { Null, Bool, Double, String, Array, Object, Undefined, }; QJsonValue(QJsonValue::Type type /Constrained/ = QJsonValue::Null); QJsonValue(const QJsonValue &other); ~QJsonValue(); static QJsonValue fromVariant(const QVariant &variant); QVariant toVariant() const; QJsonValue::Type type() const; bool isNull() const; bool isBool() const; bool isDouble() const; bool isString() const; bool isArray() const; bool isObject() const; bool isUndefined() const; bool toBool(bool defaultValue = false) const; int toInt(int defaultValue = 0) const; double toDouble(double defaultValue = 0) const; QString toString(const QString &defaultValue = QString()) const; QJsonArray toArray() const; QJsonArray toArray(const QJsonArray &defaultValue) const; QJsonObject toObject() const; QJsonObject toObject(const QJsonObject &defaultValue) const; bool operator==(const QJsonValue &other) const; bool operator!=(const QJsonValue &other) const; }; PyQt-gpl-5.5.1/sip/QtCore/qlibrary.sip0000644000076500000240000000474312613140040017607 0ustar philstaff00000000000000// qlibrary.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLibrary : QObject { %TypeHeaderCode #include %End public: enum LoadHint { ResolveAllSymbolsHint, ExportExternalSymbolsHint, LoadArchiveMemberHint, PreventUnloadHint, %If (Qt_5_5_0 -) DeepBindHint, %End }; typedef QFlags LoadHints; explicit QLibrary(QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, int verNum, QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, const QString &version, QObject *parent /TransferThis/ = 0); virtual ~QLibrary(); QString errorString() const; QString fileName() const; bool isLoaded() const; bool load(); QFlags loadHints() const; QFunctionPointer resolve(const char *symbol); static QFunctionPointer resolve(const QString &fileName, const char *symbol); static QFunctionPointer resolve(const QString &fileName, int verNum, const char *symbol); static QFunctionPointer resolve(const QString &fileName, const QString &version, const char *symbol); bool unload(); static bool isLibrary(const QString &fileName); void setFileName(const QString &fileName); void setFileNameAndVersion(const QString &fileName, int verNum); void setFileNameAndVersion(const QString &fileName, const QString &version); void setLoadHints(QFlags hints); }; QFlags operator|(QLibrary::LoadHint f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qlibraryinfo.sip0000644000076500000240000000314212613140040020453 0ustar philstaff00000000000000// qlibraryinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLibraryInfo { %TypeHeaderCode #include %End public: static QString licensee(); static QString licensedProducts(); enum LibraryLocation { PrefixPath, DocumentationPath, HeadersPath, LibrariesPath, BinariesPath, PluginsPath, DataPath, TranslationsPath, SettingsPath, ExamplesPath, ImportsPath, TestsPath, LibraryExecutablesPath, Qml2ImportsPath, ArchDataPath, }; static QString location(QLibraryInfo::LibraryLocation); static QDate buildDate(); static bool isDebugBuild(); private: QLibraryInfo(); }; PyQt-gpl-5.5.1/sip/QtCore/qline.sip0000644000076500000240000001404212613140040017063 0ustar philstaff00000000000000// qline.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLine { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); %End public: bool operator!=(const QLine &d) const; QLine(); QLine(const QPoint &pt1_, const QPoint &pt2_); QLine(int x1pos, int y1pos, int x2pos, int y2pos); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QLine()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QLine()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QLine(%i, %i, %i, %i)", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End int x1() const; int y1() const; int x2() const; int y2() const; QPoint p1() const; QPoint p2() const; int dx() const; int dy() const; void translate(const QPoint &point); void translate(int adx, int ady); bool operator==(const QLine &d) const; QLine translated(const QPoint &p) const; QLine translated(int adx, int ady) const; void setP1(const QPoint &aP1); void setP2(const QPoint &aP2); void setPoints(const QPoint &aP1, const QPoint &aP2); void setLine(int aX1, int aY1, int aX2, int aY2); }; QDataStream &operator<<(QDataStream &, const QLine & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLine & /Constrained/) /ReleaseGIL/; class QLineF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); %End public: enum IntersectType { NoIntersection, BoundedIntersection, UnboundedIntersection, }; QLineF(const QLine &line); bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End qreal length() const; QLineF unitVector() const; QLineF::IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const; bool operator!=(const QLineF &d) const; QLineF(); QLineF(const QPointF &apt1, const QPointF &apt2); QLineF(qreal x1pos, qreal y1pos, qreal x2pos, qreal y2pos); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QLineF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QLineF()"); #endif } else { PyObject *x1 = PyFloat_FromDouble(sipCpp->x1()); PyObject *y1 = PyFloat_FromDouble(sipCpp->y1()); PyObject *x2 = PyFloat_FromDouble(sipCpp->x2()); PyObject *y2 = PyFloat_FromDouble(sipCpp->y2()); if (x1 && y1 && x2 && y2) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QLineF(%R, %R, %R, %R)", x1, y1, x2, y2); #else sipRes = PyString_FromString("PyQt5.QtCore.QLineF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x1)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y1)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x2)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y2)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x1); Py_XDECREF(y1); Py_XDECREF(x2); Py_XDECREF(y2); } %End qreal x1() const; qreal y1() const; qreal x2() const; qreal y2() const; QPointF p1() const; QPointF p2() const; qreal dx() const; qreal dy() const; QLineF normalVector() const; void translate(const QPointF &point); void translate(qreal adx, qreal ady); void setLength(qreal len); QPointF pointAt(qreal t) const; QLine toLine() const; bool operator==(const QLineF &d) const; static QLineF fromPolar(qreal length, qreal angle); qreal angle() const; void setAngle(qreal angle); qreal angleTo(const QLineF &l) const; QLineF translated(const QPointF &p) const; QLineF translated(qreal adx, qreal ady) const; void setP1(const QPointF &aP1); void setP2(const QPointF &aP2); void setPoints(const QPointF &aP1, const QPointF &aP2); void setLine(qreal aX1, qreal aY1, qreal aX2, qreal aY2); }; QDataStream &operator<<(QDataStream &, const QLineF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLineF & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtCore/qlocale.sip0000644000076500000240000006101712613140040017377 0ustar philstaff00000000000000// qlocale.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocale { %TypeHeaderCode #include %End public: enum Language { C, Abkhazian, Afan, Afar, Afrikaans, Albanian, Amharic, Arabic, Armenian, Assamese, Aymara, Azerbaijani, Bashkir, Basque, Bengali, Bhutani, Bihari, Bislama, Breton, Bulgarian, Burmese, Byelorussian, Cambodian, Catalan, Chinese, Corsican, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Faroese, Finnish, French, Frisian, Gaelic, Galician, Georgian, German, Greek, Greenlandic, Guarani, Gujarati, Hausa, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Interlingua, Interlingue, Inuktitut, Inupiak, Irish, Italian, Japanese, Javanese, Kannada, Kashmiri, Kazakh, Kinyarwanda, Kirghiz, Korean, Kurdish, Kurundi, Latin, Latvian, Lingala, Lithuanian, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Moldavian, Mongolian, NauruLanguage, Nepali, Norwegian, Occitan, Oriya, Pashto, Persian, Polish, Portuguese, Punjabi, Quechua, RhaetoRomance, Romanian, Russian, Samoan, Sanskrit, Serbian, SerboCroatian, Shona, Sindhi, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tagalog, Tajik, Tamil, Tatar, Telugu, Thai, Tibetan, Tigrinya, Tsonga, Turkish, Turkmen, Twi, Uigur, Ukrainian, Urdu, Uzbek, Vietnamese, Volapuk, Welsh, Wolof, Xhosa, Yiddish, Yoruba, Zhuang, Zulu, Bosnian, Divehi, Manx, Cornish, LastLanguage, NorwegianBokmal, NorwegianNynorsk, Akan, Konkani, Ga, Igbo, Kamba, Syriac, Blin, Geez, Koro, Sidamo, Atsam, Tigre, Jju, Friulian, Venda, Ewe, Walamo, Hawaiian, Tyap, Chewa, Filipino, SwissGerman, SichuanYi, Kpelle, LowGerman, SouthNdebele, NorthernSotho, NorthernSami, Taroko, Gusii, Taita, Fulah, Kikuyu, Samburu, Sena, NorthNdebele, Rombo, Tachelhit, Kabyle, Nyankole, Bena, Vunjo, Bambara, Embu, Cherokee, Morisyen, Makonde, Langi, Ganda, Bemba, Kabuverdianu, Meru, Kalenjin, Nama, Machame, Colognian, Masai, Soga, Luyia, Asu, Teso, Saho, KoyraChiini, Rwa, Luo, Chiga, CentralMoroccoTamazight, KoyraboroSenni, Shambala, AnyLanguage, Rundi, Bodo, Aghem, Basaa, Zarma, Duala, JolaFonyi, Ewondo, Bafia, LubaKatanga, MakhuwaMeetto, Mundang, Kwasio, Nuer, Sakha, Sangu, CongoSwahili, Tasawaq, Vai, Walser, Yangben, Oromo, Dzongkha, Belarusian, Khmer, Fijian, WesternFrisian, Lao, Marshallese, Romansh, Sango, Ossetic, SouthernSotho, Tswana, Sinhala, Swati, Sardinian, Tongan, Tahitian, Nyanja, Avaric, Chamorro, Chechen, Church, Chuvash, Cree, Haitian, Herero, HiriMotu, Kanuri, Komi, Kongo, Kwanyama, Limburgish, Luxembourgish, Navaho, Ndonga, Ojibwa, Pali, Walloon, Avestan, Asturian, Ngomba, Kako, Meta, Ngiemboon, %If (Qt_5_1_0 -) Uighur, %End %If (Qt_5_1_0 -) Aragonese, %End %If (Qt_5_1_0 -) Akkadian, %End %If (Qt_5_1_0 -) AncientEgyptian, %End %If (Qt_5_1_0 -) AncientGreek, %End %If (Qt_5_1_0 -) Aramaic, %End %If (Qt_5_1_0 -) Balinese, %End %If (Qt_5_1_0 -) Bamun, %End %If (Qt_5_1_0 -) BatakToba, %End %If (Qt_5_1_0 -) Buginese, %End %If (Qt_5_1_0 -) Buhid, %End %If (Qt_5_1_0 -) Carian, %End %If (Qt_5_1_0 -) Chakma, %End %If (Qt_5_1_0 -) ClassicalMandaic, %End %If (Qt_5_1_0 -) Coptic, %End %If (Qt_5_1_0 -) Dogri, %End %If (Qt_5_1_0 -) EasternCham, %End %If (Qt_5_1_0 -) EasternKayah, %End %If (Qt_5_1_0 -) Etruscan, %End %If (Qt_5_1_0 -) Gothic, %End %If (Qt_5_1_0 -) Hanunoo, %End %If (Qt_5_1_0 -) Ingush, %End %If (Qt_5_1_0 -) LargeFloweryMiao, %End %If (Qt_5_1_0 -) Lepcha, %End %If (Qt_5_1_0 -) Limbu, %End %If (Qt_5_1_0 -) Lisu, %End %If (Qt_5_1_0 -) Lu, %End %If (Qt_5_1_0 -) Lycian, %End %If (Qt_5_1_0 -) Lydian, %End %If (Qt_5_1_0 -) Mandingo, %End %If (Qt_5_1_0 -) Manipuri, %End %If (Qt_5_1_0 -) Meroitic, %End %If (Qt_5_1_0 -) NorthernThai, %End %If (Qt_5_1_0 -) OldIrish, %End %If (Qt_5_1_0 -) OldNorse, %End %If (Qt_5_1_0 -) OldPersian, %End %If (Qt_5_1_0 -) OldTurkish, %End %If (Qt_5_1_0 -) Pahlavi, %End %If (Qt_5_1_0 -) Parthian, %End %If (Qt_5_1_0 -) Phoenician, %End %If (Qt_5_1_0 -) PrakritLanguage, %End %If (Qt_5_1_0 -) Rejang, %End %If (Qt_5_1_0 -) Sabaean, %End %If (Qt_5_1_0 -) Samaritan, %End %If (Qt_5_1_0 -) Santali, %End %If (Qt_5_1_0 -) Saurashtra, %End %If (Qt_5_1_0 -) Sora, %End %If (Qt_5_1_0 -) Sylheti, %End %If (Qt_5_1_0 -) Tagbanwa, %End %If (Qt_5_1_0 -) TaiDam, %End %If (Qt_5_1_0 -) TaiNua, %End %If (Qt_5_1_0 -) Ugaritic, %End %If (Qt_5_3_0 -) Akoose, %End %If (Qt_5_3_0 -) Lakota, %End %If (Qt_5_3_0 -) StandardMoroccanTamazight, %End %If (Qt_5_5_0 -) Mapuche, %End %If (Qt_5_5_0 -) CentralKurdish, %End %If (Qt_5_5_0 -) LowerSorbian, %End %If (Qt_5_5_0 -) UpperSorbian, %End %If (Qt_5_5_0 -) Kenyang, %End %If (Qt_5_5_0 -) Mohawk, %End %If (Qt_5_5_0 -) Nko, %End %If (Qt_5_5_0 -) Prussian, %End %If (Qt_5_5_0 -) Kiche, %End %If (Qt_5_5_0 -) SouthernSami, %End %If (Qt_5_5_0 -) LuleSami, %End %If (Qt_5_5_0 -) InariSami, %End %If (Qt_5_5_0 -) SkoltSami, %End %If (Qt_5_5_0 -) Warlpiri, %End %If (Qt_5_5_0 -) ManichaeanMiddlePersian, %End %If (Qt_5_5_0 -) Mende, %End %If (Qt_5_5_0 -) AncientNorthArabian, %End %If (Qt_5_5_0 -) LinearA, %End %If (Qt_5_5_0 -) HmongNjua, %End %If (Qt_5_5_0 -) Ho, %End %If (Qt_5_5_0 -) Lezghian, %End %If (Qt_5_5_0 -) Bassa, %End %If (Qt_5_5_0 -) Mono, %End %If (Qt_5_5_0 -) TedimChin, %End %If (Qt_5_5_0 -) Maithili, %End }; enum Country { AnyCountry, Afghanistan, Albania, Algeria, AmericanSamoa, Andorra, Angola, Anguilla, Antarctica, AntiguaAndBarbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, BosniaAndHerzegowina, Botswana, BouvetIsland, Brazil, BritishIndianOceanTerritory, Bulgaria, BurkinaFaso, Burundi, Cambodia, Cameroon, Canada, CapeVerde, CaymanIslands, CentralAfricanRepublic, Chad, Chile, China, ChristmasIsland, CocosIslands, Colombia, Comoros, DemocraticRepublicOfCongo, PeoplesRepublicOfCongo, CookIslands, CostaRica, IvoryCoast, Croatia, Cuba, Cyprus, CzechRepublic, Denmark, Djibouti, Dominica, DominicanRepublic, EastTimor, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Ethiopia, FalklandIslands, FaroeIslands, Finland, France, FrenchGuiana, FrenchPolynesia, FrenchSouthernTerritories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, HeardAndMcDonaldIslands, Honduras, HongKong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, DemocraticRepublicOfKorea, RepublicOfKorea, Kuwait, Kyrgyzstan, Latvia, Lebanon, Lesotho, Liberia, Liechtenstein, Lithuania, Luxembourg, Macau, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar, Namibia, NauruCountry, Nepal, Netherlands, NewCaledonia, NewZealand, Nicaragua, Niger, Nigeria, Niue, NorfolkIsland, NorthernMarianaIslands, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, PuertoRico, Qatar, Reunion, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthGeorgiaAndTheSouthSandwichIslands, Spain, SriLanka, Sudan, Suriname, SvalbardAndJanMayenIslands, Swaziland, Sweden, Switzerland, SyrianArabRepublic, Taiwan, Tajikistan, Tanzania, Thailand, Togo, Tokelau, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, TurksAndCaicosIslands, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdom, UnitedStates, UnitedStatesMinorOutlyingIslands, Uruguay, Uzbekistan, Vanuatu, VaticanCityState, Venezuela, BritishVirginIslands, WallisAndFutunaIslands, WesternSahara, Yemen, Zambia, Zimbabwe, Montenegro, Serbia, SaintBarthelemy, SaintMartin, LatinAmericaAndTheCaribbean, LastCountry, Brunei, CongoKinshasa, CongoBrazzaville, Fiji, Guernsey, NorthKorea, SouthKorea, Laos, Libya, CuraSao, PalestinianTerritories, Russia, SaintLucia, SaintVincentAndTheGrenadines, SaintHelena, SaintPierreAndMiquelon, Syria, Tonga, Vietnam, UnitedStatesVirginIslands, CanaryIslands, ClippertonIsland, AscensionIsland, AlandIslands, DiegoGarcia, CeutaAndMelilla, IsleOfMan, Jersey, TristanDaCunha, SouthSudan, Bonaire, SintMaarten, %If (Qt_5_2_0 -) Kosovo, %End }; enum NumberOption { OmitGroupSeparator, RejectGroupSeparator, }; typedef QFlags NumberOptions; QLocale(); QLocale(const QString &name); QLocale(QLocale::Language language, QLocale::Country country = QLocale::AnyCountry); QLocale(const QLocale &other); ~QLocale(); QLocale::Language language() const; QLocale::Country country() const; QString name() const; short toShort(const QString &s, bool *ok = 0) const; ushort toUShort(const QString &s, bool *ok = 0) const; int toInt(const QString &s, bool *ok = 0) const; uint toUInt(const QString &s, bool *ok = 0) const; qlonglong toLongLong(const QString &s, bool *ok = 0) const; qulonglong toULongLong(const QString &s, bool *ok = 0) const; float toFloat(const QString &s, bool *ok = 0) const; double toDouble(const QString &s, bool *ok = 0) const; QString toString(int i /Constrained/) const; QString toString(double i /Constrained/, char format = 'g', int precision = 6) const; QString toString(qlonglong i) const; QString toString(qulonglong i) const; bool operator==(const QLocale &other) const; bool operator!=(const QLocale &other) const; static QString languageToString(QLocale::Language language); static QString countryToString(QLocale::Country country); static void setDefault(const QLocale &locale); static QLocale c(); static QLocale system(); enum FormatType { LongFormat, ShortFormat, NarrowFormat, }; QString toString(const QDateTime &dateTime, const QString &format) const; QString toString(const QDateTime &dateTime, QLocale::FormatType format = QLocale::LongFormat) const; QString toString(const QDate &date, const QString &formatStr) const; QString toString(const QDate &date, QLocale::FormatType format = QLocale::LongFormat) const; QString toString(const QTime &time, const QString &formatStr) const; QString toString(const QTime &time, QLocale::FormatType format = QLocale::LongFormat) const; QString dateFormat(QLocale::FormatType format = QLocale::LongFormat) const; QString timeFormat(QLocale::FormatType format = QLocale::LongFormat) const; QString dateTimeFormat(QLocale::FormatType format = QLocale::LongFormat) const; QDate toDate(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QDate toDate(const QString &string, const QString &format) const; QTime toTime(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QTime toTime(const QString &string, const QString &format) const; QDateTime toDateTime(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QDateTime toDateTime(const QString &string, const QString &format) const; QChar decimalPoint() const; QChar groupSeparator() const; QChar percent() const; QChar zeroDigit() const; QChar negativeSign() const; QChar exponential() const; QString monthName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString dayName(int, QLocale::FormatType format = QLocale::LongFormat) const; void setNumberOptions(QFlags options); QFlags numberOptions() const; enum MeasurementSystem { MetricSystem, ImperialSystem, ImperialUSSystem, ImperialUKSystem, }; QLocale::MeasurementSystem measurementSystem() const; QChar positiveSign() const; QString standaloneMonthName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString standaloneDayName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString amText() const; QString pmText() const; Qt::LayoutDirection textDirection() const; enum Script { AnyScript, ArabicScript, CyrillicScript, DeseretScript, GurmukhiScript, SimplifiedHanScript, TraditionalHanScript, LatinScript, MongolianScript, TifinaghScript, SimplifiedChineseScript, TraditionalChineseScript, ArmenianScript, BengaliScript, CherokeeScript, DevanagariScript, EthiopicScript, GeorgianScript, GreekScript, GujaratiScript, HebrewScript, JapaneseScript, KhmerScript, KannadaScript, KoreanScript, LaoScript, MalayalamScript, MyanmarScript, OriyaScript, TamilScript, TeluguScript, ThaanaScript, ThaiScript, TibetanScript, SinhalaScript, SyriacScript, YiScript, VaiScript, %If (Qt_5_1_0 -) AvestanScript, %End %If (Qt_5_1_0 -) BalineseScript, %End %If (Qt_5_1_0 -) BamumScript, %End %If (Qt_5_1_0 -) BatakScript, %End %If (Qt_5_1_0 -) BopomofoScript, %End %If (Qt_5_1_0 -) BrahmiScript, %End %If (Qt_5_1_0 -) BugineseScript, %End %If (Qt_5_1_0 -) BuhidScript, %End %If (Qt_5_1_0 -) CanadianAboriginalScript, %End %If (Qt_5_1_0 -) CarianScript, %End %If (Qt_5_1_0 -) ChakmaScript, %End %If (Qt_5_1_0 -) ChamScript, %End %If (Qt_5_1_0 -) CopticScript, %End %If (Qt_5_1_0 -) CypriotScript, %End %If (Qt_5_1_0 -) EgyptianHieroglyphsScript, %End %If (Qt_5_1_0 -) FraserScript, %End %If (Qt_5_1_0 -) GlagoliticScript, %End %If (Qt_5_1_0 -) GothicScript, %End %If (Qt_5_1_0 -) HanScript, %End %If (Qt_5_1_0 -) HangulScript, %End %If (Qt_5_1_0 -) HanunooScript, %End %If (Qt_5_1_0 -) ImperialAramaicScript, %End %If (Qt_5_1_0 -) InscriptionalPahlaviScript, %End %If (Qt_5_1_0 -) InscriptionalParthianScript, %End %If (Qt_5_1_0 -) JavaneseScript, %End %If (Qt_5_1_0 -) KaithiScript, %End %If (Qt_5_1_0 -) KatakanaScript, %End %If (Qt_5_1_0 -) KayahLiScript, %End %If (Qt_5_1_0 -) KharoshthiScript, %End %If (Qt_5_1_0 -) LannaScript, %End %If (Qt_5_1_0 -) LepchaScript, %End %If (Qt_5_1_0 -) LimbuScript, %End %If (Qt_5_1_0 -) LinearBScript, %End %If (Qt_5_1_0 -) LycianScript, %End %If (Qt_5_1_0 -) LydianScript, %End %If (Qt_5_1_0 -) MandaeanScript, %End %If (Qt_5_1_0 -) MeiteiMayekScript, %End %If (Qt_5_1_0 -) MeroiticScript, %End %If (Qt_5_1_0 -) MeroiticCursiveScript, %End %If (Qt_5_1_0 -) NkoScript, %End %If (Qt_5_1_0 -) NewTaiLueScript, %End %If (Qt_5_1_0 -) OghamScript, %End %If (Qt_5_1_0 -) OlChikiScript, %End %If (Qt_5_1_0 -) OldItalicScript, %End %If (Qt_5_1_0 -) OldPersianScript, %End %If (Qt_5_1_0 -) OldSouthArabianScript, %End %If (Qt_5_1_0 -) OrkhonScript, %End %If (Qt_5_1_0 -) OsmanyaScript, %End %If (Qt_5_1_0 -) PhagsPaScript, %End %If (Qt_5_1_0 -) PhoenicianScript, %End %If (Qt_5_1_0 -) PollardPhoneticScript, %End %If (Qt_5_1_0 -) RejangScript, %End %If (Qt_5_1_0 -) RunicScript, %End %If (Qt_5_1_0 -) SamaritanScript, %End %If (Qt_5_1_0 -) SaurashtraScript, %End %If (Qt_5_1_0 -) SharadaScript, %End %If (Qt_5_1_0 -) ShavianScript, %End %If (Qt_5_1_0 -) SoraSompengScript, %End %If (Qt_5_1_0 -) CuneiformScript, %End %If (Qt_5_1_0 -) SundaneseScript, %End %If (Qt_5_1_0 -) SylotiNagriScript, %End %If (Qt_5_1_0 -) TagalogScript, %End %If (Qt_5_1_0 -) TagbanwaScript, %End %If (Qt_5_1_0 -) TaiLeScript, %End %If (Qt_5_1_0 -) TaiVietScript, %End %If (Qt_5_1_0 -) TakriScript, %End %If (Qt_5_1_0 -) UgariticScript, %End %If (Qt_5_1_0 -) BrailleScript, %End %If (Qt_5_1_0 -) HiraganaScript, %End %If (Qt_5_5_0 -) CaucasianAlbanianScript, %End %If (Qt_5_5_0 -) BassaVahScript, %End %If (Qt_5_5_0 -) DuployanScript, %End %If (Qt_5_5_0 -) ElbasanScript, %End %If (Qt_5_5_0 -) GranthaScript, %End %If (Qt_5_5_0 -) PahawhHmongScript, %End %If (Qt_5_5_0 -) KhojkiScript, %End %If (Qt_5_5_0 -) LinearAScript, %End %If (Qt_5_5_0 -) MahajaniScript, %End %If (Qt_5_5_0 -) ManichaeanScript, %End %If (Qt_5_5_0 -) MendeKikakuiScript, %End %If (Qt_5_5_0 -) ModiScript, %End %If (Qt_5_5_0 -) MroScript, %End %If (Qt_5_5_0 -) OldNorthArabianScript, %End %If (Qt_5_5_0 -) NabataeanScript, %End %If (Qt_5_5_0 -) PalmyreneScript, %End %If (Qt_5_5_0 -) PauCinHauScript, %End %If (Qt_5_5_0 -) OldPermicScript, %End %If (Qt_5_5_0 -) PsalterPahlaviScript, %End %If (Qt_5_5_0 -) SiddhamScript, %End %If (Qt_5_5_0 -) KhudawadiScript, %End %If (Qt_5_5_0 -) TirhutaScript, %End %If (Qt_5_5_0 -) VarangKshitiScript, %End }; enum CurrencySymbolFormat { CurrencyIsoCode, CurrencySymbol, CurrencyDisplayName, }; QLocale(QLocale::Language language, QLocale::Script script, QLocale::Country country); QLocale::Script script() const; QString bcp47Name() const; QString nativeLanguageName() const; QString nativeCountryName() const; Qt::DayOfWeek firstDayOfWeek() const; QList weekdays() const; QString toUpper(const QString &str) const; QString toLower(const QString &str) const; QString currencySymbol(QLocale::CurrencySymbolFormat format = QLocale::CurrencySymbol) const; QString toCurrencyString(int value /Constrained/, const QString &symbol /DocValue="''"/ = QString()) const; QString toCurrencyString(double value /Constrained/, const QString &symbol /DocValue="''"/ = QString()) const; QString toCurrencyString(qlonglong value, const QString &symbol /DocValue="''"/ = QString()) const; QString toCurrencyString(qulonglong value, const QString &symbol /DocValue="''"/ = QString()) const; QStringList uiLanguages() const; static QString scriptToString(QLocale::Script script); static QList matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country); enum QuotationStyle { StandardQuotation, AlternateQuotation, }; QString quoteString(const QString &str, QLocale::QuotationStyle style = QLocale::StandardQuotation) const; QString createSeparatedList(const QStringList &list) const; }; QDataStream &operator<<(QDataStream &, const QLocale & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLocale & /Constrained/) /ReleaseGIL/; QFlags operator|(QLocale::NumberOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qlockfile.sip0000644000076500000240000000320112613140040017717 0ustar philstaff00000000000000// qlockfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QLockFile { %TypeHeaderCode #include %End public: QLockFile(const QString &fileName); ~QLockFile(); bool lock() /ReleaseGIL/; bool tryLock(int timeout = 0) /ReleaseGIL/; void unlock() /ReleaseGIL/; void setStaleLockTime(int); int staleLockTime() const; bool isLocked() const /ReleaseGIL/; bool getLockInfo(qint64 *pid /Out/, QString *hostname /Out/, QString *appname /Out/) const; bool removeStaleLockFile() /ReleaseGIL/; enum LockError { NoError, LockFailedError, PermissionError, UnknownError, }; QLockFile::LockError error() const; private: QLockFile(const QLockFile &); }; %End PyQt-gpl-5.5.1/sip/QtCore/qlogging.sip0000644000076500000240000001267512613140040017574 0ustar philstaff00000000000000// qlogging.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg, %If (Qt_5_5_0 -) QtInfoMsg, %End }; class QMessageLogContext /NoDefaultCtors/ { %TypeHeaderCode #include %End QMessageLogContext(const QMessageLogContext &); public: int line; const char *file; const char *function; const char *category; }; class QMessageLogger { %TypeHeaderCode #include %End QMessageLogger(const QMessageLogger &); public: QMessageLogger(); QMessageLogger(const char *file, int line, const char *function); QMessageLogger(const char *file, int line, const char *function, const char *category); void debug(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->debug("%s", a0); Py_END_ALLOW_THREADS %End void warning(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->warning("%s", a0); Py_END_ALLOW_THREADS %End void critical(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->critical("%s", a0); Py_END_ALLOW_THREADS %End void fatal(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->fatal("%s", a0); Py_END_ALLOW_THREADS %End %If (Qt_5_5_0 -) void info(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->info("%s", a0); Py_END_ALLOW_THREADS %End %End }; void qCritical(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).critical("%s", a0); Py_END_ALLOW_THREADS %End void qDebug(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).debug("%s", a0); Py_END_ALLOW_THREADS %End void qErrnoWarning(int code, const char *msg) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS qErrnoWarning(a0, "%s", a1); Py_END_ALLOW_THREADS %End void qErrnoWarning(const char *msg) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS qErrnoWarning("%s", a0); Py_END_ALLOW_THREADS %End void qFatal(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).fatal("%s", a0); Py_END_ALLOW_THREADS %End void qWarning(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).warning("%s", a0); Py_END_ALLOW_THREADS %End SIP_PYCALLABLE qInstallMessageHandler(SIP_PYCALLABLE /AllowNone/); %MethodCode // Treat None as the default handler. QtMessageHandler old = qInstallMessageHandler((a0 != Py_None) ? qtcore_MessageHandler : 0); // If we recognise the old handler, then return it. Otherwise return // the default handler. This doesn't exactly mimic the Qt behaviour // but it is probably close enough for the way it will be used. sipRes = (old == qtcore_MessageHandler) ? qtcore_PyMessageHandler : Py_None; Py_INCREF(sipRes); // Save the new Python handler. Py_XDECREF(qtcore_PyMessageHandler); qtcore_PyMessageHandler = a0; Py_INCREF(qtcore_PyMessageHandler); %End // Module code needed by qInstallMessageHandler(). %ModuleCode // The user supplied Python handler. static PyObject *qtcore_PyMessageHandler = 0; // The C++ wrapper around the Python handler. static void qtcore_MessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { PyObject *res; SIP_BLOCK_THREADS res = sipCallMethod(0, qtcore_PyMessageHandler, "FDD", type, sipType_QtMsgType, &context, sipType_QMessageLogContext, NULL, &msg, sipType_QString, NULL); Py_XDECREF(res); if (res != NULL && res != Py_None) { PyErr_SetString(PyExc_TypeError, "invalid result type from PyQt message handler"); res = NULL; } if (res == NULL) pyqt5_err_print(); SIP_UNBLOCK_THREADS } %End void qSetMessagePattern(const QString &messagePattern); %If (Qt_5_4_0 -) QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, const QString &buf); %End PyQt-gpl-5.5.1/sip/QtCore/qmargins.sip0000644000076500000240000001176612613140040017606 0ustar philstaff00000000000000// qmargins.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMargins { %TypeHeaderCode #include %End public: QMargins(); QMargins(int aleft, int atop, int aright, int abottom); bool isNull() const; int left() const; int top() const; int right() const; int bottom() const; void setLeft(int aleft); void setTop(int atop); void setRight(int aright); void setBottom(int abottom); %If (Qt_5_1_0 -) QMargins &operator+=(const QMargins &margins); %End %If (Qt_5_1_0 -) QMargins &operator-=(const QMargins &margins); %End %If (Qt_5_1_0 -) QMargins &operator*=(int factor /Constrained/); %End %If (Qt_5_1_0 -) QMargins &operator/=(int divisor /Constrained/); %End %If (Qt_5_1_0 -) QMargins &operator*=(qreal factor); %End %If (Qt_5_1_0 -) QMargins &operator/=(qreal divisor); %End %If (Qt_5_2_0 -) QMargins &operator+=(int margin); %End %If (Qt_5_2_0 -) QMargins &operator-=(int margin); %End }; bool operator==(const QMargins &m1, const QMargins &m2); bool operator!=(const QMargins &m1, const QMargins &m2); QDataStream &operator<<(QDataStream &, const QMargins & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMargins & /Constrained/) /ReleaseGIL/; %If (Qt_5_1_0 - Qt_5_3_0) QRect operator+(const QRect &rectangle, const QMargins &margins); %End %If (Qt_5_1_0 - Qt_5_3_0) QRect operator+(const QMargins &margins, const QRect &rectangle); %End %If (Qt_5_1_0 -) QMargins operator+(const QMargins &m1, const QMargins &m2); %End %If (Qt_5_1_0 -) QMargins operator-(const QMargins &m1, const QMargins &m2); %End %If (Qt_5_1_0 -) QMargins operator*(const QMargins &margins, int factor /Constrained/); %End %If (Qt_5_1_0 -) QMargins operator*(const QMargins &margins, qreal factor); %End %If (Qt_5_1_0 -) QMargins operator/(const QMargins &margins, int divisor /Constrained/); %End %If (Qt_5_1_0 -) QMargins operator/(const QMargins &margins, qreal divisor); %End %If (Qt_5_1_0 -) QMargins operator-(const QMargins &margins); %End %If (Qt_5_3_0 -) QMargins operator+(const QMargins &lhs, int rhs); %End %If (Qt_5_3_0 -) QMargins operator+(int lhs, const QMargins &rhs); %End %If (Qt_5_3_0 -) QMargins operator-(const QMargins &lhs, int rhs); %End %If (Qt_5_3_0 -) QMargins operator+(const QMargins &margins); %End %If (Qt_5_3_0 -) class QMarginsF { %TypeHeaderCode #include %End public: QMarginsF(); QMarginsF(qreal aleft, qreal atop, qreal aright, qreal abottom); QMarginsF(const QMargins &margins); bool isNull() const; qreal left() const; qreal top() const; qreal right() const; qreal bottom() const; void setLeft(qreal aleft); void setTop(qreal atop); void setRight(qreal aright); void setBottom(qreal abottom); QMarginsF &operator+=(const QMarginsF &margins); QMarginsF &operator-=(const QMarginsF &margins); QMarginsF &operator+=(qreal addend); QMarginsF &operator-=(qreal subtrahend); QMarginsF &operator*=(qreal factor); QMarginsF &operator/=(qreal divisor); QMargins toMargins() const; }; %End %If (Qt_5_3_0 -) QDataStream &operator<<(QDataStream &, const QMarginsF & /Constrained/); %End %If (Qt_5_3_0 -) QDataStream &operator>>(QDataStream &, QMarginsF & /Constrained/); %End %If (Qt_5_3_0 -) bool operator==(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) bool operator!=(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator+(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator-(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator+(const QMarginsF &lhs, qreal rhs); %End %If (Qt_5_3_0 -) QMarginsF operator+(qreal lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator-(const QMarginsF &lhs, qreal rhs); %End %If (Qt_5_3_0 -) QMarginsF operator*(const QMarginsF &lhs, qreal rhs); %End %If (Qt_5_3_0 -) QMarginsF operator*(qreal lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator/(const QMarginsF &lhs, qreal divisor); %End %If (Qt_5_3_0 -) QMarginsF operator+(const QMarginsF &margins); %End %If (Qt_5_3_0 -) QMarginsF operator-(const QMarginsF &margins); %End PyQt-gpl-5.5.1/sip/QtCore/qmessageauthenticationcode.sip0000644000076500000240000000316212613140040023354 0ustar philstaff00000000000000// qmessageauthenticationcode.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QMessageAuthenticationCode { %TypeHeaderCode #include %End public: QMessageAuthenticationCode(QCryptographicHash::Algorithm method, const QByteArray &key = QByteArray()); ~QMessageAuthenticationCode(); void reset(); void setKey(const QByteArray &key); void addData(const char *data, int length); void addData(const QByteArray &data); bool addData(QIODevice *device); QByteArray result() const; static QByteArray hash(const QByteArray &message, const QByteArray &key, QCryptographicHash::Algorithm method); private: QMessageAuthenticationCode(const QMessageAuthenticationCode &); }; %End PyQt-gpl-5.5.1/sip/QtCore/qmetaobject.sip0000644000076500000240000001706412613140040020260 0ustar philstaff00000000000000// qmetaobject.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMetaMethod { %TypeHeaderCode #include %End %TypeCode // Raise an exception when QMetaMethod::invoke() returns false. static void qtcore_invoke_exception() { PyErr_SetString(PyExc_RuntimeError, "QMetaMethod.invoke() call failed"); } %End public: QMetaMethod(); const char *typeName() const; QList parameterTypes() const; QList parameterNames() const; const char *tag() const; enum Access { Private, Protected, Public, }; QMetaMethod::Access access() const; enum MethodType { Method, Signal, Slot, Constructor, }; QMetaMethod::MethodType methodType() const; SIP_PYOBJECT invoke(QObject *object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11, *a12); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a2Wrapper); else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, QGenericReturnArgument returnValue /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a1Wrapper); else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, Qt::ConnectionType connectionType, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invoke_exception(); %End int methodIndex() const; bool isValid() const; QByteArray methodSignature() const; QByteArray name() const; int returnType() const; int parameterCount() const; int parameterType(int index) const; }; class QMetaEnum { %TypeHeaderCode #include %End public: QMetaEnum(); const char *name() const; bool isFlag() const; int keyCount() const; const char *key(int index) const; int value(int index) const; const char *scope() const; int keyToValue(const char *key, bool *ok = 0) const; const char *valueToKey(int value) const; int keysToValue(const char *keys, bool *ok = 0) const; QByteArray valueToKeys(int value) const; bool isValid() const; }; class QMetaProperty { %TypeHeaderCode #include %End public: QMetaProperty(); const char *name() const; const char *typeName() const; QVariant::Type type() const; bool isReadable() const; bool isWritable() const; bool isDesignable(const QObject *object = 0) const; bool isScriptable(const QObject *object = 0) const; bool isStored(const QObject *object = 0) const; bool isFlagType() const; bool isEnumType() const; QMetaEnum enumerator() const; QVariant read(const QObject *obj) const; bool write(QObject *obj, const QVariant &value) const; bool reset(QObject *obj) const; bool hasStdCppSet() const; bool isValid() const; bool isResettable() const; bool isUser(const QObject *object = 0) const; int userType() const; bool hasNotifySignal() const; QMetaMethod notifySignal() const; int notifySignalIndex() const; int propertyIndex() const; bool isConstant() const; bool isFinal() const; }; class QMetaClassInfo { %TypeHeaderCode #include %End public: QMetaClassInfo(); const char *name() const; const char *value() const; }; bool operator==(const QMetaMethod &m1, const QMetaMethod &m2); bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2); PyQt-gpl-5.5.1/sip/QtCore/qmetatype.sip0000644000076500000240000000625712613140040017775 0ustar philstaff00000000000000// qmetatype.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMetaType { %TypeHeaderCode #include %End public: enum Type { UnknownType, Void, Bool, Int, UInt, LongLong, ULongLong, Double, QChar, QVariantMap, QVariantList, QVariantHash, QString, QStringList, QByteArray, QBitArray, QDate, QTime, QDateTime, QUrl, QLocale, QRect, QRectF, QSize, QSizeF, QLine, QLineF, QPoint, QPointF, QRegExp, LastCoreType, FirstGuiType, QFont, QPixmap, QBrush, QColor, QPalette, QIcon, QImage, QPolygon, QRegion, QBitmap, QCursor, QSizePolicy, QKeySequence, QPen, QTextLength, QTextFormat, QMatrix, QTransform, VoidStar, Long, Short, Char, ULong, UShort, UChar, Float, QObjectStar, QMatrix4x4, QVector2D, QVector3D, QVector4D, QQuaternion, QEasingCurve, QVariant, QUuid, QModelIndex, QPolygonF, SChar, QRegularExpression, QJsonValue, QJsonObject, QJsonArray, QJsonDocument, %If (Qt_5_4_0 -) QByteArrayList, %End %If (Qt_5_5_0 -) QPersistentModelIndex, %End User, }; static int type(const char *typeName); static const char *typeName(int type); static bool isRegistered(int type); explicit QMetaType(const int type); ~QMetaType(); enum TypeFlag { NeedsConstruction, NeedsDestruction, MovableType, %If (Qt_5_5_0 -) IsGadget, %End }; typedef QFlags TypeFlags; static QFlags typeFlags(int type); bool isValid() const; bool isRegistered() const; QFlags flags() const; static const QMetaObject *metaObjectForType(int type); private: QMetaType(const QMetaType &other); }; QFlags operator|(QMetaType::TypeFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qmimedata.sip0000644000076500000240000000372312613140040017721 0ustar philstaff00000000000000// qmimedata.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeData : QObject { %TypeHeaderCode #include %End public: QMimeData(); virtual ~QMimeData(); QList urls() const; void setUrls(const QList &urls); bool hasUrls() const; QString text() const; void setText(const QString &text); bool hasText() const; QString html() const; void setHtml(const QString &html); bool hasHtml() const; QVariant imageData() const; void setImageData(const QVariant &image); bool hasImage() const; QVariant colorData() const; void setColorData(const QVariant &color); bool hasColor() const; QByteArray data(const QString &mimetype) const; void setData(const QString &mimetype, const QByteArray &data); virtual bool hasFormat(const QString &mimetype) const; virtual QStringList formats() const; void clear(); void removeFormat(const QString &mimetype); protected: virtual QVariant retrieveData(const QString &mimetype, QVariant::Type preferredType) const; private: QMimeData(const QMimeData &); }; PyQt-gpl-5.5.1/sip/QtCore/qmimedatabase.sip0000644000076500000240000000404212613140040020547 0ustar philstaff00000000000000// qmimedatabase.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeDatabase { %TypeHeaderCode #include %End public: QMimeDatabase(); ~QMimeDatabase(); QMimeType mimeTypeForName(const QString &nameOrAlias) const; enum MatchMode { MatchDefault, MatchExtension, MatchContent, }; QMimeType mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = QMimeDatabase::MatchDefault) const; QMimeType mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = QMimeDatabase::MatchDefault) const; QList mimeTypesForFileName(const QString &fileName) const; QMimeType mimeTypeForData(const QByteArray &data) const; QMimeType mimeTypeForData(QIODevice *device) const; QMimeType mimeTypeForUrl(const QUrl &url) const; QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const; QMimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const; QString suffixForFileName(const QString &fileName) const; QList allMimeTypes() const; private: QMimeDatabase(const QMimeDatabase &); }; PyQt-gpl-5.5.1/sip/QtCore/qmimetype.sip0000644000076500000240000000326412613140040017771 0ustar philstaff00000000000000// qmimetype.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeType { %TypeHeaderCode #include %End public: QMimeType(); QMimeType(const QMimeType &other); ~QMimeType(); void swap(QMimeType &other); bool operator==(const QMimeType &other) const; bool operator!=(const QMimeType &other) const; bool isValid() const; bool isDefault() const; QString name() const; QString comment() const; QString genericIconName() const; QString iconName() const; QStringList globPatterns() const; QStringList parentMimeTypes() const; QStringList allAncestors() const; QStringList aliases() const; QStringList suffixes() const; QString preferredSuffix() const; bool inherits(const QString &mimeTypeName) const; QString filterString() const; }; PyQt-gpl-5.5.1/sip/QtCore/qmutex.sip0000644000076500000240000000361212613140040017277 0ustar philstaff00000000000000// qmutex.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMutexLocker { %TypeHeaderCode #include %End public: explicit QMutexLocker(QMutex *m) /ReleaseGIL/; ~QMutexLocker(); void unlock(); void relock() /ReleaseGIL/; QMutex *mutex() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QMutexLocker(const QMutexLocker &); }; class QMutex { %TypeHeaderCode #include %End public: enum RecursionMode { NonRecursive, Recursive, }; explicit QMutex(QMutex::RecursionMode mode = QMutex::NonRecursive); ~QMutex(); void lock() /ReleaseGIL/; bool tryLock(int timeout = 0) /ReleaseGIL/; void unlock() /ReleaseGIL/; // Methods implemented in QBasicMutex. bool isRecursive(); private: QMutex(const QMutex &); }; PyQt-gpl-5.5.1/sip/QtCore/qnamespace.sip0000644000076500000240000010172212613140040020072 0ustar philstaff00000000000000// qnamespace.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace Qt { %TypeHeaderCode #include %End enum GlobalColor { color0, color1, black, white, darkGray, gray, lightGray, red, green, blue, cyan, magenta, yellow, darkRed, darkGreen, darkBlue, darkCyan, darkMagenta, darkYellow, transparent, }; enum KeyboardModifier { NoModifier, ShiftModifier, ControlModifier, AltModifier, MetaModifier, KeypadModifier, GroupSwitchModifier, KeyboardModifierMask, }; typedef QFlags KeyboardModifiers; enum Modifier { META, SHIFT, CTRL, ALT, MODIFIER_MASK, UNICODE_ACCEL, }; enum MouseButton { NoButton, AllButtons, LeftButton, RightButton, MidButton, MiddleButton, XButton1, XButton2, BackButton, ExtraButton1, ForwardButton, ExtraButton2, TaskButton, ExtraButton3, ExtraButton4, ExtraButton5, ExtraButton6, ExtraButton7, ExtraButton8, ExtraButton9, ExtraButton10, ExtraButton11, ExtraButton12, ExtraButton13, ExtraButton14, ExtraButton15, ExtraButton16, ExtraButton17, ExtraButton18, ExtraButton19, ExtraButton20, ExtraButton21, ExtraButton22, ExtraButton23, ExtraButton24, }; typedef QFlags MouseButtons; enum Orientation { Horizontal, Vertical, }; typedef QFlags Orientations; enum FocusPolicy { NoFocus, TabFocus, ClickFocus, StrongFocus, WheelFocus, }; enum SortOrder { AscendingOrder, DescendingOrder, }; enum AlignmentFlag { AlignLeft, AlignLeading, AlignRight, AlignTrailing, AlignHCenter, AlignJustify, AlignAbsolute, AlignHorizontal_Mask, AlignTop, AlignBottom, AlignVCenter, AlignVertical_Mask, AlignCenter, %If (Qt_5_2_0 -) AlignBaseline, %End }; typedef QFlags Alignment; enum TextFlag { TextSingleLine, TextDontClip, TextExpandTabs, TextShowMnemonic, TextWordWrap, TextWrapAnywhere, TextDontPrint, TextIncludeTrailingSpaces, TextHideMnemonic, TextJustificationForced, }; enum TextElideMode { ElideLeft, ElideRight, ElideMiddle, ElideNone, }; enum WindowType { Widget, Window, Dialog, Sheet, Drawer, Popup, Tool, ToolTip, SplashScreen, Desktop, SubWindow, WindowType_Mask, MSWindowsFixedSizeDialogHint, MSWindowsOwnDC, X11BypassWindowManagerHint, FramelessWindowHint, CustomizeWindowHint, WindowTitleHint, WindowSystemMenuHint, WindowMinimizeButtonHint, WindowMaximizeButtonHint, WindowMinMaxButtonsHint, WindowContextHelpButtonHint, WindowShadeButtonHint, WindowStaysOnTopHint, WindowOkButtonHint, WindowCancelButtonHint, WindowStaysOnBottomHint, WindowCloseButtonHint, MacWindowToolBarButtonHint, BypassGraphicsProxyWidget, WindowTransparentForInput, WindowOverridesSystemGestures, WindowDoesNotAcceptFocus, NoDropShadowWindowHint, WindowFullscreenButtonHint, %If (Qt_5_1_0 -) ForeignWindow, %End %If (Qt_5_1_0 -) BypassWindowManagerHint, %End %If (Qt_5_2_0 -) CoverWindow, %End %If (Qt_5_5_0 -) MaximizeUsingFullscreenGeometryHint, %End }; typedef QFlags WindowFlags; enum WindowState { WindowNoState, WindowMinimized, WindowMaximized, WindowFullScreen, WindowActive, }; typedef QFlags WindowStates; enum WidgetAttribute { WA_Disabled, WA_UnderMouse, WA_MouseTracking, WA_OpaquePaintEvent, WA_StaticContents, WA_LaidOut, WA_PaintOnScreen, WA_NoSystemBackground, WA_UpdatesDisabled, WA_Mapped, WA_MacNoClickThrough, WA_InputMethodEnabled, WA_WState_Visible, WA_WState_Hidden, WA_ForceDisabled, WA_KeyCompression, WA_PendingMoveEvent, WA_PendingResizeEvent, WA_SetPalette, WA_SetFont, WA_SetCursor, WA_NoChildEventsFromChildren, WA_WindowModified, WA_Resized, WA_Moved, WA_PendingUpdate, WA_InvalidSize, WA_MacMetalStyle, WA_CustomWhatsThis, WA_LayoutOnEntireRect, WA_OutsideWSRange, WA_GrabbedShortcut, WA_TransparentForMouseEvents, WA_PaintUnclipped, WA_SetWindowIcon, WA_NoMouseReplay, WA_DeleteOnClose, WA_RightToLeft, WA_SetLayoutDirection, WA_NoChildEventsForParent, WA_ForceUpdatesDisabled, WA_WState_Created, WA_WState_CompressKeys, WA_WState_InPaintEvent, WA_WState_Reparented, WA_WState_ConfigPending, WA_WState_Polished, WA_WState_OwnSizePolicy, WA_WState_ExplicitShowHide, WA_MouseNoMask, WA_GroupLeader, WA_NoMousePropagation, WA_Hover, WA_InputMethodTransparent, WA_QuitOnClose, WA_KeyboardFocusChange, WA_AcceptDrops, WA_WindowPropagation, WA_NoX11EventCompression, WA_TintedBackground, WA_X11OpenGLOverlay, WA_AttributeCount, WA_AlwaysShowToolTips, WA_MacOpaqueSizeGrip, WA_SetStyle, WA_MacBrushedMetal, WA_SetLocale, WA_MacShowFocusRect, WA_MacNormalSize, WA_MacSmallSize, WA_MacMiniSize, WA_LayoutUsesWidgetRect, WA_StyledBackground, WA_MSWindowsUseDirect3D, WA_MacAlwaysShowToolWindow, WA_StyleSheet, WA_ShowWithoutActivating, WA_NativeWindow, WA_DontCreateNativeAncestors, WA_MacVariableSize, WA_X11NetWmWindowTypeDesktop, WA_X11NetWmWindowTypeDock, WA_X11NetWmWindowTypeToolBar, WA_X11NetWmWindowTypeMenu, WA_X11NetWmWindowTypeUtility, WA_X11NetWmWindowTypeSplash, WA_X11NetWmWindowTypeDialog, WA_X11NetWmWindowTypeDropDownMenu, WA_X11NetWmWindowTypePopupMenu, WA_X11NetWmWindowTypeToolTip, WA_X11NetWmWindowTypeNotification, WA_X11NetWmWindowTypeCombo, WA_X11NetWmWindowTypeDND, WA_MacFrameworkScaled, WA_TranslucentBackground, WA_AcceptTouchEvents, WA_TouchPadAcceptSingleTouchEvents, WA_X11DoNotAcceptFocus, WA_MacNoShadow, %If (Qt_5_4_0 -) WA_AlwaysStackOnTop, %End }; enum ImageConversionFlag { AutoColor, ColorOnly, MonoOnly, ThresholdAlphaDither, OrderedAlphaDither, DiffuseAlphaDither, DiffuseDither, OrderedDither, ThresholdDither, AutoDither, PreferDither, AvoidDither, NoOpaqueDetection, NoFormatConversion, }; typedef QFlags ImageConversionFlags; enum BGMode { TransparentMode, OpaqueMode, }; enum Key { Key_Escape, Key_Tab, Key_Backtab, Key_Backspace, Key_Return, Key_Enter, Key_Insert, Key_Delete, Key_Pause, Key_Print, Key_SysReq, Key_Clear, Key_Home, Key_End, Key_Left, Key_Up, Key_Right, Key_Down, Key_PageUp, Key_PageDown, Key_Shift, Key_Control, Key_Meta, Key_Alt, Key_CapsLock, Key_NumLock, Key_ScrollLock, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11, Key_F12, Key_F13, Key_F14, Key_F15, Key_F16, Key_F17, Key_F18, Key_F19, Key_F20, Key_F21, Key_F22, Key_F23, Key_F24, Key_F25, Key_F26, Key_F27, Key_F28, Key_F29, Key_F30, Key_F31, Key_F32, Key_F33, Key_F34, Key_F35, Key_Super_L, Key_Super_R, Key_Menu, Key_Hyper_L, Key_Hyper_R, Key_Help, Key_Direction_L, Key_Direction_R, Key_Space, Key_Any, Key_Exclam, Key_QuoteDbl, Key_NumberSign, Key_Dollar, Key_Percent, Key_Ampersand, Key_Apostrophe, Key_ParenLeft, Key_ParenRight, Key_Asterisk, Key_Plus, Key_Comma, Key_Minus, Key_Period, Key_Slash, Key_0, Key_1, Key_2, Key_3, Key_4, Key_5, Key_6, Key_7, Key_8, Key_9, Key_Colon, Key_Semicolon, Key_Less, Key_Equal, Key_Greater, Key_Question, Key_At, Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, Key_H, Key_I, Key_J, Key_K, Key_L, Key_M, Key_N, Key_O, Key_P, Key_Q, Key_R, Key_S, Key_T, Key_U, Key_V, Key_W, Key_X, Key_Y, Key_Z, Key_BracketLeft, Key_Backslash, Key_BracketRight, Key_AsciiCircum, Key_Underscore, Key_QuoteLeft, Key_BraceLeft, Key_Bar, Key_BraceRight, Key_AsciiTilde, Key_nobreakspace, Key_exclamdown, Key_cent, Key_sterling, Key_currency, Key_yen, Key_brokenbar, Key_section, Key_diaeresis, Key_copyright, Key_ordfeminine, Key_guillemotleft, Key_notsign, Key_hyphen, Key_registered, Key_macron, Key_degree, Key_plusminus, Key_twosuperior, Key_threesuperior, Key_acute, Key_mu, Key_paragraph, Key_periodcentered, Key_cedilla, Key_onesuperior, Key_masculine, Key_guillemotright, Key_onequarter, Key_onehalf, Key_threequarters, Key_questiondown, Key_Agrave, Key_Aacute, Key_Acircumflex, Key_Atilde, Key_Adiaeresis, Key_Aring, Key_AE, Key_Ccedilla, Key_Egrave, Key_Eacute, Key_Ecircumflex, Key_Ediaeresis, Key_Igrave, Key_Iacute, Key_Icircumflex, Key_Idiaeresis, Key_ETH, Key_Ntilde, Key_Ograve, Key_Oacute, Key_Ocircumflex, Key_Otilde, Key_Odiaeresis, Key_multiply, Key_Ooblique, Key_Ugrave, Key_Uacute, Key_Ucircumflex, Key_Udiaeresis, Key_Yacute, Key_THORN, Key_ssharp, Key_division, Key_ydiaeresis, Key_AltGr, Key_Multi_key, Key_Codeinput, Key_SingleCandidate, Key_MultipleCandidate, Key_PreviousCandidate, Key_Mode_switch, Key_Kanji, Key_Muhenkan, Key_Henkan, Key_Romaji, Key_Hiragana, Key_Katakana, Key_Hiragana_Katakana, Key_Zenkaku, Key_Hankaku, Key_Zenkaku_Hankaku, Key_Touroku, Key_Massyo, Key_Kana_Lock, Key_Kana_Shift, Key_Eisu_Shift, Key_Eisu_toggle, Key_Hangul, Key_Hangul_Start, Key_Hangul_End, Key_Hangul_Hanja, Key_Hangul_Jamo, Key_Hangul_Romaja, Key_Hangul_Jeonja, Key_Hangul_Banja, Key_Hangul_PreHanja, Key_Hangul_PostHanja, Key_Hangul_Special, Key_Dead_Grave, Key_Dead_Acute, Key_Dead_Circumflex, Key_Dead_Tilde, Key_Dead_Macron, Key_Dead_Breve, Key_Dead_Abovedot, Key_Dead_Diaeresis, Key_Dead_Abovering, Key_Dead_Doubleacute, Key_Dead_Caron, Key_Dead_Cedilla, Key_Dead_Ogonek, Key_Dead_Iota, Key_Dead_Voiced_Sound, Key_Dead_Semivoiced_Sound, Key_Dead_Belowdot, Key_Dead_Hook, Key_Dead_Horn, Key_Back, Key_Forward, Key_Stop, Key_Refresh, Key_VolumeDown, Key_VolumeMute, Key_VolumeUp, Key_BassBoost, Key_BassUp, Key_BassDown, Key_TrebleUp, Key_TrebleDown, Key_MediaPlay, Key_MediaStop, Key_MediaPrevious, Key_MediaNext, Key_MediaRecord, Key_HomePage, Key_Favorites, Key_Search, Key_Standby, Key_OpenUrl, Key_LaunchMail, Key_LaunchMedia, Key_Launch0, Key_Launch1, Key_Launch2, Key_Launch3, Key_Launch4, Key_Launch5, Key_Launch6, Key_Launch7, Key_Launch8, Key_Launch9, Key_LaunchA, Key_LaunchB, Key_LaunchC, Key_LaunchD, Key_LaunchE, Key_LaunchF, Key_MediaLast, Key_Select, Key_Yes, Key_No, Key_Context1, Key_Context2, Key_Context3, Key_Context4, Key_Call, Key_Hangup, Key_Flip, Key_unknown, Key_Execute, Key_Printer, Key_Play, Key_Sleep, Key_Zoom, Key_Cancel, Key_MonBrightnessUp, Key_MonBrightnessDown, Key_KeyboardLightOnOff, Key_KeyboardBrightnessUp, Key_KeyboardBrightnessDown, Key_PowerOff, Key_WakeUp, Key_Eject, Key_ScreenSaver, Key_WWW, Key_Memo, Key_LightBulb, Key_Shop, Key_History, Key_AddFavorite, Key_HotLinks, Key_BrightnessAdjust, Key_Finance, Key_Community, Key_AudioRewind, Key_BackForward, Key_ApplicationLeft, Key_ApplicationRight, Key_Book, Key_CD, Key_Calculator, Key_ToDoList, Key_ClearGrab, Key_Close, Key_Copy, Key_Cut, Key_Display, Key_DOS, Key_Documents, Key_Excel, Key_Explorer, Key_Game, Key_Go, Key_iTouch, Key_LogOff, Key_Market, Key_Meeting, Key_MenuKB, Key_MenuPB, Key_MySites, Key_News, Key_OfficeHome, Key_Option, Key_Paste, Key_Phone, Key_Calendar, Key_Reply, Key_Reload, Key_RotateWindows, Key_RotationPB, Key_RotationKB, Key_Save, Key_Send, Key_Spell, Key_SplitScreen, Key_Support, Key_TaskPane, Key_Terminal, Key_Tools, Key_Travel, Key_Video, Key_Word, Key_Xfer, Key_ZoomIn, Key_ZoomOut, Key_Away, Key_Messenger, Key_WebCam, Key_MailForward, Key_Pictures, Key_Music, Key_Battery, Key_Bluetooth, Key_WLAN, Key_UWB, Key_AudioForward, Key_AudioRepeat, Key_AudioRandomPlay, Key_Subtitle, Key_AudioCycleTrack, Key_Time, Key_Hibernate, Key_View, Key_TopMenu, Key_PowerDown, Key_Suspend, Key_ContrastAdjust, Key_MediaPause, Key_MediaTogglePlayPause, Key_LaunchG, Key_LaunchH, Key_ToggleCallHangup, Key_VoiceDial, Key_LastNumberRedial, Key_Camera, Key_CameraFocus, Key_TouchpadToggle, Key_TouchpadOn, Key_TouchpadOff, %If (Qt_5_1_0 -) Key_MicMute, %End %If (Qt_5_2_0 -) Key_Red, %End %If (Qt_5_2_0 -) Key_Green, %End %If (Qt_5_2_0 -) Key_Yellow, %End %If (Qt_5_2_0 -) Key_Blue, %End %If (Qt_5_2_0 -) Key_ChannelUp, %End %If (Qt_5_2_0 -) Key_ChannelDown, %End %If (Qt_5_3_0 -) Key_Guide, %End %If (Qt_5_3_0 -) Key_Info, %End %If (Qt_5_3_0 -) Key_Settings, %End %If (Qt_5_3_0 -) Key_Exit, %End %If (Qt_5_4_0 -) Key_MicVolumeUp, %End %If (Qt_5_4_0 -) Key_MicVolumeDown, %End %If (Qt_5_4_0 -) Key_New, %End %If (Qt_5_4_0 -) Key_Open, %End %If (Qt_5_4_0 -) Key_Find, %End %If (Qt_5_4_0 -) Key_Undo, %End %If (Qt_5_4_0 -) Key_Redo, %End }; enum ArrowType { NoArrow, UpArrow, DownArrow, LeftArrow, RightArrow, }; enum PenStyle { NoPen, SolidLine, DashLine, DotLine, DashDotLine, DashDotDotLine, CustomDashLine, MPenStyle, }; enum PenCapStyle { FlatCap, SquareCap, RoundCap, MPenCapStyle, }; enum PenJoinStyle { MiterJoin, BevelJoin, RoundJoin, MPenJoinStyle, SvgMiterJoin, }; enum BrushStyle { NoBrush, SolidPattern, Dense1Pattern, Dense2Pattern, Dense3Pattern, Dense4Pattern, Dense5Pattern, Dense6Pattern, Dense7Pattern, HorPattern, VerPattern, CrossPattern, BDiagPattern, FDiagPattern, DiagCrossPattern, LinearGradientPattern, RadialGradientPattern, ConicalGradientPattern, TexturePattern, }; enum UIEffect { UI_General, UI_AnimateMenu, UI_FadeMenu, UI_AnimateCombo, UI_AnimateTooltip, UI_FadeTooltip, UI_AnimateToolBox, }; enum CursorShape { ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor, SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor, PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, LastCursor, BitmapCursor, CustomCursor, DragCopyCursor, DragMoveCursor, DragLinkCursor, }; enum TextFormat { PlainText, RichText, AutoText, }; enum AspectRatioMode { IgnoreAspectRatio, KeepAspectRatio, KeepAspectRatioByExpanding, }; enum DockWidgetArea { LeftDockWidgetArea, RightDockWidgetArea, TopDockWidgetArea, BottomDockWidgetArea, DockWidgetArea_Mask, AllDockWidgetAreas, NoDockWidgetArea, }; typedef QFlags DockWidgetAreas; enum TimerType { PreciseTimer, CoarseTimer, VeryCoarseTimer, }; enum ToolBarArea { LeftToolBarArea, RightToolBarArea, TopToolBarArea, BottomToolBarArea, ToolBarArea_Mask, AllToolBarAreas, NoToolBarArea, }; typedef QFlags ToolBarAreas; enum DateFormat { TextDate, ISODate, LocalDate, SystemLocaleDate, LocaleDate, SystemLocaleShortDate, SystemLocaleLongDate, DefaultLocaleShortDate, DefaultLocaleLongDate, %If (Qt_5_2_0 -) RFC2822Date, %End }; enum TimeSpec { LocalTime, UTC, OffsetFromUTC, %If (Qt_5_2_0 -) TimeZone, %End }; enum DayOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, }; enum ScrollBarPolicy { ScrollBarAsNeeded, ScrollBarAlwaysOff, ScrollBarAlwaysOn, }; enum CaseSensitivity { CaseInsensitive, CaseSensitive, }; enum Corner { TopLeftCorner, TopRightCorner, BottomLeftCorner, BottomRightCorner, }; enum ConnectionType { AutoConnection, DirectConnection, QueuedConnection, BlockingQueuedConnection, UniqueConnection, }; enum ShortcutContext { WidgetShortcut, WindowShortcut, ApplicationShortcut, WidgetWithChildrenShortcut, }; enum FillRule { OddEvenFill, WindingFill, }; enum ClipOperation { NoClip, ReplaceClip, IntersectClip, }; enum TransformationMode { FastTransformation, SmoothTransformation, }; enum FocusReason { MouseFocusReason, TabFocusReason, BacktabFocusReason, ActiveWindowFocusReason, PopupFocusReason, ShortcutFocusReason, MenuBarFocusReason, OtherFocusReason, NoFocusReason, }; enum ContextMenuPolicy { NoContextMenu, PreventContextMenu, DefaultContextMenu, ActionsContextMenu, CustomContextMenu, }; enum InputMethodQuery { ImMicroFocus, ImFont, ImCursorPosition, ImSurroundingText, ImCurrentSelection, ImMaximumTextLength, ImAnchorPosition, ImEnabled, ImCursorRectangle, ImHints, ImPreferredLanguage, ImPlatformData, ImQueryInput, ImQueryAll, %If (Qt_5_3_0 -) ImAbsolutePosition, %End %If (Qt_5_3_0 -) ImTextBeforeCursor, %End %If (Qt_5_3_0 -) ImTextAfterCursor, %End }; typedef QFlags InputMethodQueries; enum ToolButtonStyle { ToolButtonIconOnly, ToolButtonTextOnly, ToolButtonTextBesideIcon, ToolButtonTextUnderIcon, ToolButtonFollowStyle, }; enum LayoutDirection { LeftToRight, RightToLeft, LayoutDirectionAuto, }; enum DropAction { CopyAction, MoveAction, LinkAction, ActionMask, TargetMoveAction, IgnoreAction, }; typedef QFlags DropActions; enum CheckState { Unchecked, PartiallyChecked, Checked, }; enum ItemDataRole { DisplayRole, DecorationRole, EditRole, ToolTipRole, StatusTipRole, WhatsThisRole, FontRole, TextAlignmentRole, BackgroundRole, BackgroundColorRole, ForegroundRole, TextColorRole, CheckStateRole, AccessibleTextRole, AccessibleDescriptionRole, SizeHintRole, InitialSortOrderRole, UserRole, }; enum ItemFlag { NoItemFlags, ItemIsSelectable, ItemIsEditable, ItemIsDragEnabled, ItemIsDropEnabled, ItemIsUserCheckable, ItemIsEnabled, ItemIsTristate, %If (Qt_5_1_0 -) ItemNeverHasChildren, %End %If (Qt_5_5_0 -) ItemIsUserTristate, %End }; typedef QFlags ItemFlags; enum MatchFlag { MatchExactly, MatchFixedString, MatchContains, MatchStartsWith, MatchEndsWith, MatchRegExp, MatchWildcard, MatchCaseSensitive, MatchWrap, MatchRecursive, }; typedef QFlags MatchFlags; typedef void *HANDLE; enum WindowModality { NonModal, WindowModal, ApplicationModal, }; enum ApplicationAttribute { AA_ImmediateWidgetCreation, AA_MSWindowsUseDirect3DByDefault, AA_DontShowIconsInMenus, AA_NativeWindows, AA_DontCreateNativeWidgetSiblings, AA_MacPluginApplication, AA_DontUseNativeMenuBar, AA_MacDontSwapCtrlAndMeta, AA_X11InitThreads, AA_Use96Dpi, AA_SynthesizeTouchForUnhandledMouseEvents, AA_SynthesizeMouseForUnhandledTouchEvents, %If (Qt_5_1_0 -) AA_UseHighDpiPixmaps, %End %If (Qt_5_3_0 -) AA_ForceRasterWidgets, %End %If (Qt_5_3_0 -) AA_UseDesktopOpenGL, %End %If (Qt_5_3_0 -) AA_UseOpenGLES, %End %If (Qt_5_4_0 -) AA_UseSoftwareOpenGL, %End %If (Qt_5_4_0 -) AA_ShareOpenGLContexts, %End %If (Qt_5_5_0 -) AA_SetPalette, %End }; enum ItemSelectionMode { ContainsItemShape, IntersectsItemShape, ContainsItemBoundingRect, IntersectsItemBoundingRect, }; enum TextInteractionFlag { NoTextInteraction, TextSelectableByMouse, TextSelectableByKeyboard, LinksAccessibleByMouse, LinksAccessibleByKeyboard, TextEditable, TextEditorInteraction, TextBrowserInteraction, }; typedef QFlags TextInteractionFlags; enum MaskMode { MaskInColor, MaskOutColor, }; enum Axis { XAxis, YAxis, ZAxis, }; enum EventPriority { HighEventPriority, NormalEventPriority, LowEventPriority, }; enum SizeMode { AbsoluteSize, RelativeSize, }; enum SizeHint { MinimumSize, PreferredSize, MaximumSize, MinimumDescent, }; enum WindowFrameSection { NoSection, LeftSection, TopLeftSection, TopSection, TopRightSection, RightSection, BottomRightSection, BottomSection, BottomLeftSection, TitleBarArea, }; enum TileRule { StretchTile, RepeatTile, RoundTile, }; enum InputMethodHint { ImhNone, ImhHiddenText, ImhNoAutoUppercase, ImhPreferNumbers, ImhPreferUppercase, ImhPreferLowercase, ImhNoPredictiveText, ImhDigitsOnly, ImhFormattedNumbersOnly, ImhUppercaseOnly, ImhLowercaseOnly, ImhDialableCharactersOnly, ImhEmailCharactersOnly, ImhUrlCharactersOnly, ImhExclusiveInputMask, ImhSensitiveData, ImhDate, ImhTime, ImhPreferLatin, ImhLatinOnly, %If (Qt_5_1_0 -) ImhMultiLine, %End }; typedef QFlags InputMethodHints; enum AnchorPoint { AnchorLeft, AnchorHorizontalCenter, AnchorRight, AnchorTop, AnchorVerticalCenter, AnchorBottom, }; enum CoordinateSystem { DeviceCoordinates, LogicalCoordinates, }; enum TouchPointState { TouchPointPressed, TouchPointMoved, TouchPointStationary, TouchPointReleased, }; typedef QFlags TouchPointStates; enum GestureState { GestureStarted, GestureUpdated, GestureFinished, GestureCanceled, }; enum GestureType { TapGesture, TapAndHoldGesture, PanGesture, PinchGesture, SwipeGesture, CustomGesture, }; enum GestureFlag { DontStartGestureOnChildren, ReceivePartialGestures, IgnoredGesturesPropagateToParent, }; typedef QFlags GestureFlags; enum NavigationMode { NavigationModeNone, NavigationModeKeypadTabOrder, NavigationModeKeypadDirectional, NavigationModeCursorAuto, NavigationModeCursorForceVisible, }; enum CursorMoveStyle { LogicalMoveStyle, VisualMoveStyle, }; enum ScreenOrientation { PrimaryOrientation, PortraitOrientation, LandscapeOrientation, InvertedPortraitOrientation, InvertedLandscapeOrientation, }; typedef QFlags ScreenOrientations; enum FindChildOption { FindDirectChildrenOnly, FindChildrenRecursively, }; typedef QFlags FindChildOptions; enum WhiteSpaceMode { WhiteSpaceNormal, WhiteSpacePre, WhiteSpaceNoWrap, WhiteSpaceModeUndefined, }; enum HitTestAccuracy { ExactHit, FuzzyHit, }; %If (Qt_5_1_0 -) enum ApplicationState { ApplicationSuspended, ApplicationHidden, ApplicationInactive, ApplicationActive, }; %End %If (Qt_5_1_0 -) typedef QFlags ApplicationStates; %End %If (Qt_5_1_0 -) enum Edge { TopEdge, LeftEdge, RightEdge, BottomEdge, }; %End %If (Qt_5_2_0 -) enum NativeGestureType { BeginNativeGesture, EndNativeGesture, PanNativeGesture, ZoomNativeGesture, SmartZoomNativeGesture, RotateNativeGesture, SwipeNativeGesture, }; %End %If (Qt_5_2_0 -) enum ScrollPhase { ScrollBegin, ScrollUpdate, ScrollEnd, }; %End %If (Qt_5_3_0 -) typedef QFlags Edges; %End %If (Qt_5_3_0 -) enum MouseEventSource { MouseEventNotSynthesized, MouseEventSynthesizedBySystem, MouseEventSynthesizedByQt, }; %End %If (Qt_5_3_0 -) enum MouseEventFlag { MouseEventCreatedDoubleClick, }; %End %If (Qt_5_3_0 -) typedef QFlags MouseEventFlags; %End %If (Qt_5_5_0 -) enum TabFocusBehavior { NoTabFocus, TabFocusTextControls, TabFocusListControls, TabFocusAllControls, }; %End %If (Qt_5_5_0 -) enum ItemSelectionOperation { ReplaceSelection, AddToSelection, }; %End }; QFlags operator|(Qt::MouseButton f1, QFlags f2); QFlags operator|(Qt::Orientation f1, QFlags f2); QFlags operator|(Qt::KeyboardModifier f1, QFlags f2); QFlags operator|(Qt::WindowType f1, QFlags f2); QFlags operator|(Qt::AlignmentFlag f1, QFlags f2); QFlags operator|(Qt::ImageConversionFlag f1, QFlags f2); QFlags operator|(Qt::DockWidgetArea f1, QFlags f2); QFlags operator|(Qt::ToolBarArea f1, QFlags f2); QFlags operator|(Qt::WindowState f1, QFlags f2); QFlags operator|(Qt::DropAction f1, QFlags f2); QFlags operator|(Qt::ItemFlag f1, QFlags f2); QFlags operator|(Qt::MatchFlag f1, QFlags f2); QFlags operator|(Qt::TextInteractionFlag f1, QFlags f2); QFlags operator|(Qt::InputMethodHint f1, QFlags f2); QFlags operator|(Qt::TouchPointState f1, QFlags f2); QFlags operator|(Qt::GestureFlag f1, QFlags f2); QFlags operator|(Qt::ScreenOrientation f1, QFlags f2); QFlags operator|(Qt::InputMethodQuery f1, QFlags f2); %If (Qt_5_3_0 -) QFlags operator|(Qt::Edge f1, QFlags f2); %End %If (Qt_5_3_0 -) QFlags operator|(Qt::MouseEventFlag f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtCore/qnumeric.sip0000644000076500000240000000222412613140040017575 0ustar philstaff00000000000000// qnumeric.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End bool qIsInf(double d); bool qIsFinite(double d); bool qIsNaN(double d); double qInf(); double qSNaN(); double qQNaN(); %If (Qt_5_3_0 -) quint64 qFloatDistance(double a, double b); %End PyQt-gpl-5.5.1/sip/QtCore/qobject.sip0000644000076500000240000005551612613140040017415 0ustar philstaff00000000000000// qobject.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QObjectList; class QObject /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %TypeCode // This is needed by the tr() handwritten implementation. #include // These are the helper functions for QObject::findChild() and // QObject::findChildren. // Wrap the given type in a 1-tuple. static PyObject *qtcore_type_to_tuple(PyObject *type) { PyObject *tuple = PyTuple_New(1); if (tuple) { Py_INCREF(type); PyTuple_SET_ITEM(tuple, 0, type); } return tuple; } // Check all elements of a given tuple are type objects and return a new // reference to the tuple if so. static PyObject *qtcore_check_tuple_types(PyObject *types) { for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(types); ++i) if (!PyObject_TypeCheck(PyTuple_GET_ITEM(types, i), &PyType_Type)) { PyErr_SetString(PyExc_TypeError, "all elements of the types argument must be type objects"); return 0; } Py_INCREF(types); return types; } // Do the main work of finding a child. static PyObject *qtcore_do_find_child(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return 0; // Allow for proxies. QObject *resolved = reinterpret_cast(sipGetAddress((sipSimpleWrapper *)pyo)); if (name.isNull() || resolved->objectName() == name) for (SIP_SSIZE_T t = 0; t < PyTuple_GET_SIZE(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GET_ITEM(types, t))) return pyo; Py_DECREF(pyo); } if (options == Qt::FindChildrenRecursively) for (i = 0; i < children.size(); ++i) { PyObject *pyo = qtcore_do_find_child(children.at(i), types, name, options); if (pyo != Py_None) return pyo; Py_DECREF(pyo); } Py_INCREF(Py_None); return Py_None; } // Find a child that is one of a number of types and with an optional name. static PyObject *qtcore_FindChild(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *child = qtcore_do_find_child(parent, types, name, options); Py_DECREF(types); return child; } // Do the main work of finding the children with a string name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; // Allow for proxies. QObject *resolved = reinterpret_cast(sipGetAddress((sipSimpleWrapper *)pyo)); if (name.isNull() || resolved->objectName() == name) for (SIP_SSIZE_T t = 0; t < PyTuple_GET_SIZE(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GET_ITEM(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, name, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional string // name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, name, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } // Do the main work of finding the children with a QRegExp name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QRegExp &re, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; if (re.indexIn(obj->objectName()) >= 0) for (SIP_SSIZE_T t = 0; t < PyTuple_GET_SIZE(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GET_ITEM(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, re, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional QRegExp // name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QRegExp &re, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, re, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } // Do the main work of finding the children with a QRegularExpression name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; QRegularExpressionMatch m = re.match(obj->objectName()); if (m.hasMatch()) for (SIP_SSIZE_T t = 0; t < PyTuple_GET_SIZE(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GET_ITEM(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, re, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional // QRegularExpression name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, re, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } %End %FinalisationCode return qpycore_qobject_finalisation(sipSelf, sipCpp, sipKwds, sipUnused); %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSettings, &sipType_QSettings, -1, 1}, {sipName_QAbstractAnimation, &sipType_QAbstractAnimation, 25, 2}, {sipName_QAbstractState, &sipType_QAbstractState, 31, 3}, #if QT_VERSION >= 0x050200 {sipName_QFileSelector, &sipType_QFileSelector, -1, 4}, #else {0, 0, -1, 4}, #endif {sipName_QTimer, &sipType_QTimer, -1, 5}, {sipName_QItemSelectionModel, &sipType_QItemSelectionModel, -1, 6}, {sipName_QSocketNotifier, &sipType_QSocketNotifier, -1, 7}, {sipName_QIODevice, &sipType_QIODevice, 35, 8}, {sipName_QObjectCleanupHandler, &sipType_QObjectCleanupHandler, -1, 9}, {sipName_QAbstractTransition, &sipType_QAbstractTransition, 41, 10}, {sipName_QThread, &sipType_QThread, -1, 11}, {sipName_QTranslator, &sipType_QTranslator, -1, 12}, {sipName_QPluginLoader, &sipType_QPluginLoader, -1, 13}, #if defined(Q_OS_WIN) {sipName_QWinEventNotifier, &sipType_QWinEventNotifier, -1, 14}, #else {0, 0, -1, 14}, #endif {sipName_QMimeData, &sipType_QMimeData, -1, 15}, {sipName_QSignalMapper, &sipType_QSignalMapper, -1, 16}, {sipName_QAbstractEventDispatcher, &sipType_QAbstractEventDispatcher, -1, 17}, {sipName_QThreadPool, &sipType_QThreadPool, -1, 18}, {sipName_QCoreApplication, &sipType_QCoreApplication, -1, 19}, {sipName_QFileSystemWatcher, &sipType_QFileSystemWatcher, -1, 20}, {sipName_QSharedMemory, &sipType_QSharedMemory, -1, 21}, {sipName_QAbstractItemModel, &sipType_QAbstractItemModel, 43, 22}, {sipName_QEventLoop, &sipType_QEventLoop, -1, 23}, {sipName_QLibrary, &sipType_QLibrary, -1, 24}, {sipName_QTimeLine, &sipType_QTimeLine, -1, -1}, {sipName_QPauseAnimation, &sipType_QPauseAnimation, -1, 26}, {sipName_QAnimationGroup, &sipType_QAnimationGroup, 28, 27}, {sipName_QVariantAnimation, &sipType_QVariantAnimation, 30, -1}, {sipName_QSequentialAnimationGroup, &sipType_QSequentialAnimationGroup, -1, 29}, {sipName_QParallelAnimationGroup, &sipType_QParallelAnimationGroup, -1, -1}, {sipName_QPropertyAnimation, &sipType_QPropertyAnimation, -1, -1}, {sipName_QHistoryState, &sipType_QHistoryState, -1, 32}, {sipName_QFinalState, &sipType_QFinalState, -1, 33}, {sipName_QState, &sipType_QState, 34, -1}, {sipName_QStateMachine, &sipType_QStateMachine, -1, -1}, {sipName_QBuffer, &sipType_QBuffer, -1, 36}, {sipName_QFileDevice, &sipType_QFileDevice, 38, 37}, #if !defined(QT_NO_PROCESS) {sipName_QProcess, &sipType_QProcess, -1, -1}, #else {0, 0, -1, -1}, #endif #if QT_VERSION >= 0x050100 {sipName_QSaveFile, &sipType_QSaveFile, -1, 39}, #else {0, 0, -1, 39}, #endif {sipName_QFile, &sipType_QFile, 40, -1}, {sipName_QTemporaryFile, &sipType_QTemporaryFile, -1, -1}, {sipName_QSignalTransition, &sipType_QSignalTransition, -1, 42}, {sipName_QEventTransition, &sipType_QEventTransition, -1, -1}, {sipName_QAbstractListModel, &sipType_QAbstractListModel, 46, 44}, {sipName_QAbstractProxyModel, &sipType_QAbstractProxyModel, 47, 45}, {sipName_QAbstractTableModel, &sipType_QAbstractTableModel, -1, -1}, {sipName_QStringListModel, &sipType_QStringListModel, -1, -1}, {sipName_QSortFilterProxyModel, &sipType_QSortFilterProxyModel, -1, 48}, {sipName_QIdentityProxyModel, &sipType_QIdentityProxyModel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End %GCTraverseCode // Traverse any saved slots we might be connected to. sipRes = qpycore_visitSlotProxies(sipCpp, sipVisit, sipArg); %End %GCClearCode // Clear any saved slots we might be connected to. sipRes = qpycore_clearSlotProxies(sipCpp); %End public: static const QMetaObject staticMetaObject { %GetCode sipPy = qpycore_qobject_staticmetaobject(sipPyType); %End }; const QMetaObject *metaObject() const; explicit QObject(QObject *parent /TransferThis/ = 0); virtual ~QObject(); void pyqtConfigure(SIP_PYOBJECT) /NoArgParser/; %Docstring QObject.pyqtConfigure(...) Each keyword argument is either the name of a Qt property or a Qt signal. For properties the property is set to the given value which should be of an appropriate type. For signals the signal is connected to the given value which should be a callable. %End %MethodCode return qpycore_pyqtconfigure(sipSelf, sipArgs, sipKwds); %End SIP_PYOBJECT __getattr__(const char *name) const; %MethodCode sipRes = qpycore_qobject_getattr(sipCpp, sipSelf, a0); %End virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); QString tr(const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1) const; %MethodCode // Note that tr() is really a static method. We pretend it isn't so we can use // self to get hold of the class name. sipRes = new QString(QCoreApplication::translate(Py_TYPE(sipSelf)->tp_name, a0, a1, a2)); %End SIP_PYOBJECT findChild(SIP_PYTYPE type, const QString &name /DocValue="''"/ = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="QObject"/; %MethodCode sipRes = qtcore_FindChild(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT findChild(SIP_PYTUPLE types /DocValue="tuple-of-types"/, const QString &name /DocValue="''"/ = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="QObject"/; %MethodCode sipRes = qtcore_FindChild(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type, const QString &name /DocValue="''"/ = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="list-of-QObject"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /DocValue="tuple-of-types"/, const QString &name /DocValue="''"/ = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="list-of-QObject"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type, const QRegExp ®Exp, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="list-of-QObject"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /DocValue="tuple-of-types"/, const QRegExp ®Exp, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="list-of-QObject"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="list-of-QObject"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /DocValue="tuple-of-types"/, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /DocType="list-of-QObject"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End QString objectName() const; void setObjectName(const QString &name); bool isWidgetType() const; bool isWindowType() const; bool signalsBlocked() const; bool blockSignals(bool b); QThread *thread() const; void moveToThread(QThread *thread); int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); void killTimer(int id); const QObjectList &children() const; void setParent(QObject * /TransferThis/); void installEventFilter(QObject *); void removeEventFilter(QObject *); void dumpObjectInfo(); void dumpObjectTree(); QList dynamicPropertyNames() const; bool setProperty(const char *name, const QVariant &value); QVariant property(const char *name) const; signals: void destroyed(QObject *object = 0); void objectNameChanged(const QString &objectName); public: QObject *parent() const; bool inherits(const char *classname) const; public slots: void deleteLater() /TransferThis/; protected: QObject *sender() const /ReleaseGIL/; %MethodCode // sender() must be called without the GIL to avoid possible deadlocks between // the GIL and Qt's internal thread data mutex. Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipCpp->sender(); #else sipRes = sipCpp->sipProtect_sender(); #endif Py_END_ALLOW_THREADS if (!sipRes) { typedef QObject *(*qtcore_qobject_sender_t)(); static qtcore_qobject_sender_t qtcore_qobject_sender = 0; if (!qtcore_qobject_sender) qtcore_qobject_sender = (qtcore_qobject_sender_t)sipImportSymbol("qtcore_qobject_sender"); if (qtcore_qobject_sender) sipRes = qtcore_qobject_sender(); } %End int receivers(SIP_PYOBJECT signal /DocType="signal"/) const [int (const char *signal)]; %MethodCode // We need to handle the signal object. Import the helper if it hasn't already // been done. typedef sipErrorState (*pyqt5_get_signal_signature_t)(PyObject *, const QObject *, const QByteArray &); static pyqt5_get_signal_signature_t pyqt5_get_signal_signature = 0; if (!pyqt5_get_signal_signature) pyqt5_get_signal_signature = (pyqt5_get_signal_signature_t)sipImportSymbol("pyqt5_get_signal_signature"); if (pyqt5_get_signal_signature) { QByteArray signal_signature; #if defined(SIP_PROTECTED_IS_PUBLIC) if ((sipError = pyqt5_get_signal_signature(a0, sipCpp, signal_signature)) == sipErrorNone) { sipRes = sipCpp->receivers(signal_signature.constData()); } #else if ((sipError = pyqt5_get_signal_signature(a0, static_cast(sipCpp), signal_signature)) == sipErrorNone) { sipRes = sipCpp->sipProtect_receivers(signal_signature.constData()); } #endif else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } } %End virtual void timerEvent(QTimerEvent *); virtual void childEvent(QChildEvent *); virtual void customEvent(QEvent *); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); int senderSignalIndex() const; bool isSignalConnected(const QMetaMethod &signal) const; public: SIP_PYOBJECT disconnect() const /DocType=""/; %MethodCode sipRes = qpycore_qobject_disconnect(sipCpp); %End private: QObject(const QObject &); }; SIP_PYOBJECT Q_CLASSINFO(const char *name, const char *value) /DocType=""/; %MethodCode sipRes = qpycore_ClassInfo(a0, a1); %End SIP_PYOBJECT Q_ENUMS(...) /DocType=""/; %MethodCode sipRes = qpycore_Enums(a0); %End SIP_PYOBJECT Q_FLAGS(...) /DocType=""/; %MethodCode sipRes = qpycore_Flags(a0); %End SIP_PYOBJECT QT_TR_NOOP(SIP_PYOBJECT /DocType="str"/) /DocType="str"/; %MethodCode Py_INCREF(a0); sipRes = a0; %End SIP_PYOBJECT QT_TR_NOOP_UTF8(SIP_PYOBJECT /DocType="str"/) /DocType="str"/; %MethodCode Py_INCREF(a0); sipRes = a0; %End SIP_PYOBJECT QT_TRANSLATE_NOOP(SIP_PYOBJECT /DocType="str"/, SIP_PYOBJECT /DocType="str"/) /DocType="str"/; %MethodCode Py_INCREF(a1); sipRes = a1; %End SIP_PYOBJECT pyqtSlot(const char *signature, const char *name = 0, const char *result = 0) /NoArgParser/; %Docstring @pyqtSlot(*types, str name=None, str result=None) This is a decorator applied to Python methods of a QObject that marks them as Qt slots. The non-keyword arguments are the types of the slot arguments and each may be a Python type object or a string specifying a C++ type. name is the name of the slot and defaults to the name of the method. result is type of the value returned by the slot. %End %MethodCode return qpycore_pyqtslot(sipArgs, sipKwds); %End %If (Qt_5_3_0 -) class QSignalBlocker { %TypeHeaderCode #include %End public: explicit QSignalBlocker(QObject *o); ~QSignalBlocker(); void reblock(); void unblock(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unblock(); %End private: QSignalBlocker(const QSignalBlocker &); }; %End %ModuleHeaderCode #include "qpycore_api.h" %End %ModuleCode // Disable the (supposedly) compulsory parts of the Qt support API. #define sipQtCreateUniversalSlot 0 #define sipQtDestroyUniversalSlot 0 #define sipQtFindSlot 0 #define sipQtConnect 0 #define sipQtDisconnect 0 #define sipQtSameSignalSlotName 0 #define sipQtFindSipslot 0 %End %InitialisationCode qpycore_init(); %End %PostInitialisationCode qpycore_post_init(sipModuleDict); %End PyQt-gpl-5.5.1/sip/QtCore/qobjectcleanuphandler.sip0000644000076500000240000000234012613140040022306 0ustar philstaff00000000000000// qobjectcleanuphandler.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QObjectCleanupHandler : QObject { %TypeHeaderCode #include %End public: QObjectCleanupHandler(); virtual ~QObjectCleanupHandler(); QObject *add(QObject *object); void remove(QObject *object); bool isEmpty() const; void clear(); }; PyQt-gpl-5.5.1/sip/QtCore/qobjectdefs.sip0000644000076500000240000001627512613140040020256 0ustar philstaff00000000000000// qobjectdefs.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QMetaObject { %TypeHeaderCode #include %End %TypeCode // Raise an exception when QMetaObject::invokeMethod() returns false. static void qtcore_invokeMethod_exception() { PyErr_SetString(PyExc_RuntimeError, "QMetaObject.invokeMethod() call failed"); } %End const char *className() const; const QMetaObject *superClass() const; QMetaProperty userProperty() const; int methodOffset() const; int enumeratorOffset() const; int propertyOffset() const; int classInfoOffset() const; int methodCount() const; int enumeratorCount() const; int propertyCount() const; int classInfoCount() const; int indexOfMethod(const char *method) const; int indexOfSignal(const char *signal) const; int indexOfSlot(const char *slot) const; int indexOfEnumerator(const char *name) const; int indexOfProperty(const char *name) const; int indexOfClassInfo(const char *name) const; QMetaMethod method(int index) const; QMetaEnum enumerator(int index) const; QMetaProperty property(int index) const; QMetaClassInfo classInfo(int index) const; static bool checkConnectArgs(const char *signal, const char *method); static void connectSlotsByName(QObject *o /GetWrapper/); %MethodCode qpycore_qmetaobject_connectslotsbyname(a0, a0Wrapper); %End static QByteArray normalizedSignature(const char *method); static QByteArray normalizedType(const char *type); static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericReturnArgument ret /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12,*a13); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a3Wrapper); else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, QGenericReturnArgument ret /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,*a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a2Wrapper); else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,*a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invokeMethod_exception(); %End int constructorCount() const; int indexOfConstructor(const char *constructor) const; QMetaMethod constructor(int index) const; static bool checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method); }; // The support for Q_ARG(), Q_RETURN_ARG() and supporting classes. class QGenericArgument /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QGenericArgument(); }; SIP_PYOBJECT Q_ARG(SIP_PYOBJECT type, SIP_PYOBJECT data) /DocType="QGenericArgument"/; %MethodCode sipRes = qpycore_ArgumentFactory(a0, a1); %End class QGenericReturnArgument /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QGenericReturnArgument(); }; SIP_PYOBJECT Q_RETURN_ARG(SIP_PYOBJECT type) /DocType="QGenericReturnArgument"/; %MethodCode sipRes = qpycore_ReturnFactory(a0); %End PyQt-gpl-5.5.1/sip/QtCore/qparallelanimationgroup.sip0000644000076500000240000000304612613140040022707 0ustar philstaff00000000000000// qparallelanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QParallelAnimationGroup : QAnimationGroup { %TypeHeaderCode #include %End public: QParallelAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QParallelAnimationGroup(); virtual int duration() const; protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int currentTime); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); private: QParallelAnimationGroup(const QParallelAnimationGroup &); }; PyQt-gpl-5.5.1/sip/QtCore/qpauseanimation.sip0000644000076500000240000000262512613140040021155 0ustar philstaff00000000000000// qpauseanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPauseAnimation : QAbstractAnimation { %TypeHeaderCode #include %End public: QPauseAnimation(QObject *parent /TransferThis/ = 0); QPauseAnimation(int msecs, QObject *parent /TransferThis/ = 0); virtual ~QPauseAnimation(); virtual int duration() const; void setDuration(int msecs); protected: virtual bool event(QEvent *e); virtual void updateCurrentTime(int); private: QPauseAnimation(const QPauseAnimation &); }; PyQt-gpl-5.5.1/sip/QtCore/qpluginloader.sip0000644000076500000240000000310712613140040020621 0ustar philstaff00000000000000// qpluginloader.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPluginLoader : QObject { %TypeHeaderCode #include %End public: explicit QPluginLoader(QObject *parent /TransferThis/ = 0); QPluginLoader(const QString &fileName, QObject *parent /TransferThis/ = 0); virtual ~QPluginLoader(); QObject *instance(); static QObjectList staticInstances(); bool load(); bool unload(); bool isLoaded() const; void setFileName(const QString &fileName); QString fileName() const; QString errorString() const; void setLoadHints(QLibrary::LoadHints loadHints); QLibrary::LoadHints loadHints() const; private: QPluginLoader(const QPluginLoader &); }; PyQt-gpl-5.5.1/sip/QtCore/qpoint.sip0000644000076500000240000001422312613140040017266 0ustar philstaff00000000000000// qpoint.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPoint { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ii", sipCpp->x(), sipCpp->y()); %End public: int manhattanLength() const; QPoint(); QPoint(int xpos, int ypos); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QPoint()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QPoint()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QPoint(%i, %i)", sipCpp->x(), sipCpp->y()); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End int x() const; int y() const; void setX(int xpos); void setY(int ypos); QPoint &operator+=(const QPoint &p); QPoint &operator-=(const QPoint &p); QPoint &operator*=(int c /Constrained/); QPoint &operator*=(double c); QPoint &operator/=(qreal c); %If (Qt_5_1_0 -) static int dotProduct(const QPoint &p1, const QPoint &p2); %End }; QDataStream &operator<<(QDataStream &, const QPoint & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPoint & /Constrained/) /ReleaseGIL/; bool operator==(const QPoint &p1, const QPoint &p2); bool operator!=(const QPoint &p1, const QPoint &p2); const QPoint operator+(const QPoint &p1, const QPoint &p2); const QPoint operator-(const QPoint &p1, const QPoint &p2); const QPoint operator*(const QPoint &p, int c /Constrained/); const QPoint operator*(int c /Constrained/, const QPoint &p); const QPoint operator*(const QPoint &p, double c); const QPoint operator*(double c, const QPoint &p); const QPoint operator-(const QPoint &p); const QPoint operator/(const QPoint &p, qreal c); class QPointF { %TypeHeaderCode #include %End %ConvertToTypeCode // Allow a QPoint whenever a QPointF is expected. This is mainly to help source // compatibility for Qt5. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QPointF, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QPoint, 0)); if (sipCanConvertToType(sipPy, sipType_QPointF, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QPointF, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; QPoint *pt = reinterpret_cast(sipConvertToType(sipPy, sipType_QPoint, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(pt, sipType_QPoint, state); return 0; } *sipCppPtr = new QPointF(*pt); sipReleaseType(pt, sipType_QPoint, state); return sipGetState(sipTransferObj); %End %PickleCode sipRes = Py_BuildValue((char *)"dd", sipCpp->x(), sipCpp->y()); %End public: QPointF(); QPointF(qreal xpos, qreal ypos); QPointF(const QPoint &p); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QPointF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QPointF()"); #endif } else { PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); if (x && y) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QPointF(%R, %R)", x, y); #else sipRes = PyString_FromString("PyQt5.QtCore.QPointF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End qreal x() const; qreal y() const; void setX(qreal xpos); void setY(qreal ypos); QPointF &operator+=(const QPointF &p); QPointF &operator-=(const QPointF &p); QPointF &operator*=(qreal c); QPointF &operator/=(qreal c); QPoint toPoint() const; qreal manhattanLength() const; %If (Qt_5_1_0 -) static qreal dotProduct(const QPointF &p1, const QPointF &p2); %End }; QDataStream &operator<<(QDataStream &, const QPointF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPointF & /Constrained/) /ReleaseGIL/; bool operator==(const QPointF &p1, const QPointF &p2); bool operator!=(const QPointF &p1, const QPointF &p2); const QPointF operator+(const QPointF &p1, const QPointF &p2); const QPointF operator-(const QPointF &p1, const QPointF &p2); const QPointF operator*(const QPointF &p, qreal c); const QPointF operator*(qreal c, const QPointF &p); const QPointF operator-(const QPointF &p); const QPointF operator/(const QPointF &p, qreal c); const QPoint operator+(const QPoint &p); const QPointF operator+(const QPointF &p); PyQt-gpl-5.5.1/sip/QtCore/qprocess.sip0000644000076500000240000001674012613140040017621 0ustar philstaff00000000000000// qprocess.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_WIN) %If (PyQt_Process) typedef void *Q_PID; %End %End %If (WS_X11 || WS_MACX) %If (PyQt_Process) typedef qint64 Q_PID; %End %End %If (PyQt_Process) class QProcess : QIODevice { %TypeHeaderCode #include %End public: enum ExitStatus { NormalExit, CrashExit, }; enum ProcessError { FailedToStart, Crashed, Timedout, ReadError, WriteError, UnknownError, }; enum ProcessState { NotRunning, Starting, Running, }; enum ProcessChannel { StandardOutput, StandardError, }; enum ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels, %If (Qt_5_2_0 -) ForwardedOutputChannel, %End %If (Qt_5_2_0 -) ForwardedErrorChannel, %End }; explicit QProcess(QObject *parent /TransferThis/ = 0); virtual ~QProcess(); void start(const QString &program, const QStringList &arguments, QFlags mode = QIODevice::ReadWrite) /HoldGIL/; void start(const QString &command, QFlags mode = QIODevice::ReadWrite) /HoldGIL/; %If (Qt_5_1_0 -) void start(QFlags mode = QIODevice::ReadWrite) /HoldGIL/; %End QProcess::ProcessChannel readChannel() const; void setReadChannel(QProcess::ProcessChannel channel); void closeReadChannel(QProcess::ProcessChannel channel); void closeWriteChannel(); QString workingDirectory() const; void setWorkingDirectory(const QString &dir); QProcess::ProcessError error() const; QProcess::ProcessState state() const; Q_PID pid() const; bool waitForStarted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForFinished(int msecs = 30000) /ReleaseGIL/; QByteArray readAllStandardOutput() /ReleaseGIL/; QByteArray readAllStandardError() /ReleaseGIL/; int exitCode() const; QProcess::ExitStatus exitStatus() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool isSequential() const; virtual bool canReadLine() const; virtual void close(); virtual bool atEnd() const; static int execute(const QString &program, const QStringList &arguments) /ReleaseGIL/; static int execute(const QString &program) /ReleaseGIL/; static bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid = 0); static bool startDetached(const QString &program, const QStringList &arguments); static bool startDetached(const QString &program); static QStringList systemEnvironment(); QProcess::ProcessChannelMode processChannelMode() const; void setProcessChannelMode(QProcess::ProcessChannelMode mode); void setStandardInputFile(const QString &fileName); void setStandardOutputFile(const QString &fileName, QFlags mode = QIODevice::Truncate); void setStandardErrorFile(const QString &fileName, QFlags mode = QIODevice::Truncate); void setStandardOutputProcess(QProcess *destination); public slots: void terminate(); void kill(); signals: void started(); void finished(int exitCode, QProcess::ExitStatus exitStatus); void error(QProcess::ProcessError error); void stateChanged(QProcess::ProcessState state); void readyReadStandardOutput(); void readyReadStandardError(); protected: void setProcessState(QProcess::ProcessState state); virtual void setupChildProcess(); virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QProcess::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; public: void setProcessEnvironment(const QProcessEnvironment &environment); QProcessEnvironment processEnvironment() const; QString program() const; %If (Qt_5_1_0 -) void setProgram(const QString &program); %End QStringList arguments() const; %If (Qt_5_1_0 -) void setArguments(const QStringList &arguments); %End %If (Qt_5_1_0 -) virtual bool open(QFlags mode = QIODevice::ReadWrite) /ReleaseGIL/; %End %If (Qt_5_2_0 -) enum InputChannelMode { ManagedInputChannel, ForwardedInputChannel, }; %End %If (Qt_5_2_0 -) QProcess::InputChannelMode inputChannelMode() const; %End %If (Qt_5_2_0 -) void setInputChannelMode(QProcess::InputChannelMode mode); %End %If (Qt_5_2_0 -) static QString nullDevice(); %End %If (Qt_5_3_0 -) qint64 processId() const; %End private: QProcess(const QProcess &); }; %End %If (PyQt_Process) class QProcessEnvironment { %TypeHeaderCode #include %End public: QProcessEnvironment(); QProcessEnvironment(const QProcessEnvironment &other); ~QProcessEnvironment(); bool operator==(const QProcessEnvironment &other) const; bool operator!=(const QProcessEnvironment &other) const; bool isEmpty() const; void clear(); bool contains(const QString &name) const; void insert(const QString &name, const QString &value); void insert(const QProcessEnvironment &e); void remove(const QString &name); QString value(const QString &name, const QString &defaultValue /DocValue="''"/ = QString()) const; QStringList toStringList() const; static QProcessEnvironment systemEnvironment(); QStringList keys() const; void swap(QProcessEnvironment &other); }; %End PyQt-gpl-5.5.1/sip/QtCore/qpropertyanimation.sip0000644000076500000240000000333512613140040021723 0ustar philstaff00000000000000// qpropertyanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPropertyAnimation : QVariantAnimation { %TypeHeaderCode #include %End public: QPropertyAnimation(QObject *parent /TransferThis/ = 0); QPropertyAnimation(QObject *target /KeepReference=0/, const QByteArray &propertyName, QObject *parent /TransferThis/ = 0); virtual ~QPropertyAnimation(); QObject *targetObject() const; void setTargetObject(QObject *target /KeepReference=0/); QByteArray propertyName() const; void setPropertyName(const QByteArray &propertyName); protected: virtual bool event(QEvent *event); virtual void updateCurrentValue(const QVariant &value); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); private: QPropertyAnimation(const QPropertyAnimation &); }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_qhash.sip0000644000076500000240000002031712613140040020623 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QHash based // mapped types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType QHash<_TYPE1_, _TYPE2_> /DocType="dict-of-_TYPE1_-_TYPE2_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QHash<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = new _TYPE2_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash<_TYPE1_, _TYPE2_> *qh = new QHash<_TYPE1_, _TYPE2_>; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", Py_TYPE(kobj)->tp_name); delete qh; return 0; } int vstate; _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", Py_TYPE(vobj)->tp_name); sipReleaseType(k, sipType__TYPE1_, kstate); delete qh; return 0; } qh->insert(*k, *v); sipReleaseType(v, sipType__TYPE2_, vstate); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; %If (Qt_5_4_0 -) // This is only needed for QtWebChannel but is sufficiently generic that we // include it here. template<_TYPE1_, _TYPE2_ *> %MappedType QHash<_TYPE1_, _TYPE2_ *> /DocType="dict-of-_TYPE1_-_TYPE2_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash<_TYPE1_, _TYPE2_ *>::const_iterator it = sipCpp->constBegin(); QHash<_TYPE1_, _TYPE2_ *>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = it.value(); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash<_TYPE1_, _TYPE2_ *> *qh = new QHash<_TYPE1_, _TYPE2_ *>; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", Py_TYPE(kobj)->tp_name); delete qh; return 0; } _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", Py_TYPE(vobj)->tp_name); sipReleaseType(k, sipType__TYPE1_, kstate); delete qh; return 0; } qh->insert(*k, v); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; %End template %MappedType QHash /DocType="dict-of-int-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = SIPLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { PyErr_Clear(); int k = SIPLong_AsLong(kobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", Py_TYPE(kobj)->tp_name); delete qh; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", Py_TYPE(vobj)->tp_name); delete qh; return 0; } qh->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_qlist.sip0000644000076500000240000004606012613140040020656 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QList based // mapped types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that when we test the type of an object to see if it can be converted // to a collection we only check if it is iterable. We do not check the // types of the contents - we assume we will be able to convert them when // requested. This allows us to raise exceptions specific to an individual // object. This approach doesn't work if there are overloads that can only be // distinguished by the types of the template arguments. Currently there are // no such cases in PyQt5. Note also that we don't consider strings to be // iterables. template<_TYPE_> %MappedType QList<_TYPE_> /DocType="list-of-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = new _TYPE_(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList<_TYPE_> *ql = new QList<_TYPE_>; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType QList<_TYPE_ *> /DocType="list-of-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = sipCpp->at(i); // The explicit (void *) cast allows _TYPE_ to be const. PyObject *tobj = sipConvertFromType((void *)t, sipType__TYPE_, sipTransferObj); if (!tobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList<_TYPE_ *> *ql = new QList<_TYPE_ *>; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(t); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template<_TYPE1_, _TYPE2_> %MappedType QList > /DocType="list-of-tuple-of-_TYPE1_-_TYPE2_"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const QPair<_TYPE1_, _TYPE2_> &p = sipCpp->at(i); _TYPE1_ *s1 = new _TYPE1_(p.first); _TYPE2_ *s2 = new _TYPE2_(p.second); PyObject *pobj = sipBuildResult(NULL, "(NN)", s1, sipType__TYPE1_, sipTransferObj, s2, sipType__TYPE2_, sipTransferObj); if (!pobj) { delete s1; delete s2; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *ql = new QList >; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } SIP_SSIZE_T sub_len; if (PySequence_Check(seq) #if PY_MAJOR_VERSION < 3 && !PyString_Check(seq) #endif && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but a 2 element non-string sequence is expected", i, Py_TYPE(seq)->tp_name); else PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " is a sequence of " SIP_SSIZE_T_FORMAT " sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_ITEM(seq, 0); if (!itm1) { Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state1; _TYPE1_ *s1 = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(itm1, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &state1, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first sub-element of index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE1_' is expected", i, Py_TYPE(itm1)->tp_name); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); return 0; } PyObject *itm2 = PySequence_ITEM(seq, 1); if (!itm2) { sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state2; _TYPE2_ *s2 = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(itm2, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second sub-element of index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE2_' is expected", i, Py_TYPE(itm2)->tp_name); Py_DECREF(itm2); sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); return 0; } ql->append(QPair<_TYPE1_, _TYPE2_>(*s1, *s2)); sipReleaseType(s2, sipType__TYPE2_, state2); Py_DECREF(itm2); sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %If (Qt_5_1_0 -) %MappedType QList > /DocType="list-of-tuple-of-int-int"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); PyObject *pobj = Py_BuildValue((char *)"ii", p.first, p.second); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *ql = new QList >; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } SIP_SSIZE_T sub_len; if (PySequence_Check(seq) #if PY_MAJOR_VERSION < 3 && !PyString_Check(seq) #endif && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but a 2 element non-string sequence is expected", i, Py_TYPE(seq)->tp_name); else PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " is a sequence of " SIP_SSIZE_T_FORMAT " sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_ITEM(seq, 0); if (!itm1) { Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyErr_Clear(); int first = SIPLong_AsLong(itm1); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first sub-element of index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm1)->tp_name); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm2 = PySequence_ITEM(seq, 1); if (!itm2) { Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyErr_Clear(); int second = SIPLong_AsLong(itm2); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second sub-element of index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm2)->tp_name); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(QPair(first, second)); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %MappedType QList /DocType="list-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = SIPLong_FromLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); long val = SIPLong_AsLong(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /DocType="list-of-float"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'float' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /DocType="list-of-Qt.DayOfWeek"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_Qt_DayOfWeek); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_Qt_DayOfWeek)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'Qt.DayOfWeek' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_qmap.sip0000644000076500000240000001754112613140040020462 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QMap and // QMultiMap based mapped types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType QMap<_TYPE1_, _TYPE2_> /DocType="dict-of-_TYPE1_-_TYPE2_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMap<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QMap<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = new _TYPE2_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QMap<_TYPE1_, _TYPE2_> *qm = new QMap<_TYPE1_, _TYPE2_>; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", Py_TYPE(kobj)->tp_name); delete qm; return 0; } int vstate; _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", Py_TYPE(vobj)->tp_name); sipReleaseType(k, sipType__TYPE1_, kstate); delete qm; return 0; } qm->insert(*k, *v); sipReleaseType(v, sipType__TYPE2_, vstate); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; template %MappedType QMap /DocType="dict-of-int-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMap::const_iterator it = sipCpp->constBegin(); QMap::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = SIPLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QMap *qm = new QMap; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { PyErr_Clear(); int k = SIPLong_AsLong(kobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", Py_TYPE(kobj)->tp_name); delete qm; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", Py_TYPE(vobj)->tp_name); delete qm; return 0; } qm->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; template<_TYPE1_, _TYPE2_> %MappedType QMultiMap<_TYPE1_, _TYPE2_> /DocType="dict-of-_TYPE1_-list-of-_TYPE2_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QList<_TYPE1_> keys = sipCpp->keys(); QList<_TYPE1_>::const_iterator kit = keys.constBegin(); QList<_TYPE1_>::const_iterator kit_end = keys.constEnd(); while (kit != kit_end) { _TYPE1_ *k = new _TYPE1_(*kit); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } // Create a Python list as the dictionary value. QList<_TYPE2_> values = sipCpp->values(*kit); PyObject *vobj = PyList_New(values.count()); if (!vobj) { Py_DECREF(kobj); Py_DECREF(d); return 0; } QList<_TYPE2_>::const_iterator vit = values.constBegin(); QList<_TYPE2_>::const_iterator vit_end = values.constEnd(); for (int i = 0; vit != vit_end; ++i) { _TYPE2_ *sv = new _TYPE2_(*vit); PyObject *svobj = sipConvertFromNewType(sv, sipType__TYPE2_, sipTransferObj); if (!svobj) { delete sv; Py_DECREF(vobj); Py_DECREF(kobj); Py_DECREF(d); return 0; } PyList_SET_ITEM(vobj, i, svobj); ++vit; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++kit; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); // Note that PyQt v5.1 contains an unused implementation that can be // restored if needed (although it will need updating to accept an iterable // rather than just a list of values). PyErr_SetString(PyExc_NotImplementedError, "converting to QMultiMap<_TYPE1_, _TYPE2_> is unsupported"); return 0; %End }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_qpair.sip0000644000076500000240000001221112613140040020625 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QPair based // mapped types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QPair<_TYPE_, int> /DocType="tuple-of-_TYPE_-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode _TYPE_ *first = new _TYPE_(sipCpp->first); PyObject *t = sipBuildResult(NULL, "(Ni)", first, sipType__TYPE_, sipTransferObj, sipCpp->second); if (!t) { delete first; return 0; } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); SIP_SSIZE_T len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has " SIP_SSIZE_T_FORMAT " elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_ITEM(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firststate; _TYPE_ *first = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(firstobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &firststate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but '_TYPE_' is expected", Py_TYPE(firstobj)->tp_name); return 0; } PyObject *secondobj = PySequence_ITEM(sipPy, 1); if (!secondobj) { sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } PyErr_Clear(); int second = SIPLong_AsLong(secondobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'int' is expected", Py_TYPE(secondobj)->tp_name); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair<_TYPE_, int>(*first, second);; Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %MappedType QPair /DocType="tuple-of-int-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ii)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); SIP_SSIZE_T len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has " SIP_SSIZE_T_FORMAT " elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_ITEM(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } PyErr_Clear(); int first = SIPLong_AsLong(firstobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'int' is expected", Py_TYPE(firstobj)->tp_name); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_ITEM(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } PyErr_Clear(); int second = SIPLong_AsLong(secondobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'int' is expected", Py_TYPE(secondobj)->tp_name); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair(first, second);; Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_qset.sip0000644000076500000240000001176412613140040020501 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QSet based // mapped types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QSet<_TYPE_> /DocType="set-of-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *s = PySet_New(0); if (!s) return 0; QSet<_TYPE_>::const_iterator it = sipCpp->constBegin(); QSet<_TYPE_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE_ *t = new _TYPE_(*it); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(s); return 0; } PySet_Add(s, tobj); ++it; } return s; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QSet<_TYPE_> *qs = new QSet<_TYPE_>; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qs; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qs; Py_DECREF(iter); return 0; } qs->insert(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qs; return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType QSet<_TYPE_ *> /DocType="set-of-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *s = PySet_New(0); if (!s) return 0; QSet<_TYPE_ *>::const_iterator it = sipCpp->constBegin(); QSet<_TYPE_ *>::const_iterator end = sipCpp->constEnd(); while (it != end) { // The explicit (void *) cast allows _TYPE_ to be const. PyObject *tobj = sipConvertFromType((void *)*it, sipType__TYPE_, sipTransferObj); if (!tobj) { Py_DECREF(s); return 0; } PySet_Add(s, tobj); ++it; } return s; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QSet<_TYPE_ *> *qs = new QSet<_TYPE_ *>; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qs; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qs; Py_DECREF(iter); return 0; } qs->insert(t); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qs; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_qvector.sip0000644000076500000240000002147512613140040021210 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QVector based // mapped types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QVector<_TYPE_> /DocType="list-of-_TYPE_"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = new _TYPE_(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector<_TYPE_> *qv = new QVector<_TYPE_>; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); return 0; } qv->append(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; template %MappedType QVector > /DocType="list-of-tuple-of-float-_TYPE_"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); _TYPE_ *s2 = new _TYPE_(p.second); PyObject *pobj = sipBuildResult(NULL, "(dN)", (double)p.first, s2, sipType__TYPE_, sipTransferObj); if (!pobj) { delete s2; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector > *qv = new QVector >; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } SIP_SSIZE_T sub_len; if (PySequence_Check(seq) #if PY_MAJOR_VERSION < 3 && !PyString_Check(seq) #endif && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but a 2 element non-string sequence is expected", i, Py_TYPE(seq)->tp_name); else PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " is a sequence of " SIP_SSIZE_T_FORMAT " sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_ITEM(seq, 0); if (!itm1) { Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyErr_Clear(); qreal s1 = PyFloat_AsDouble(itm1); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first sub-element of index " SIP_SSIZE_T_FORMAT " has type '%s' but 'float' is expected", i, Py_TYPE(itm1)->tp_name); Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm2 = PySequence_ITEM(seq, 1); if (!itm2) { Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state2; _TYPE_ *s2 = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm2, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second sub-element of index " SIP_SSIZE_T_FORMAT " has type '%s' but '_TYPE_' is expected", i, Py_TYPE(itm2)->tp_name); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); return 0; } qv->append(QPair(s1, *s2)); sipReleaseType(s2, sipType__TYPE_, state2); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %MappedType QVector /DocType="list-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = SIPLong_FromLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); long val = SIPLong_AsLong(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qpycore_virtual_error_handler.sip0000644000076500000240000000172012613140040024110 0ustar philstaff00000000000000// This is the implementation of the PyQt-specific virtual error handler. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %VirtualErrorHandler PyQt5 pyqt5_err_print(); %End PyQt-gpl-5.5.1/sip/QtCore/qreadwritelock.sip0000644000076500000240000000522212613140040020773 0ustar philstaff00000000000000// qreadwritelock.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QReadWriteLock { %TypeHeaderCode #include %End public: enum RecursionMode { NonRecursive, Recursive, }; explicit QReadWriteLock(QReadWriteLock::RecursionMode recursionMode = QReadWriteLock::NonRecursive); ~QReadWriteLock(); void lockForRead() /ReleaseGIL/; bool tryLockForRead(); bool tryLockForRead(int timeout) /ReleaseGIL/; void lockForWrite() /ReleaseGIL/; bool tryLockForWrite(); bool tryLockForWrite(int timeout) /ReleaseGIL/; void unlock(); private: QReadWriteLock(const QReadWriteLock &); }; class QReadLocker { %TypeHeaderCode #include %End public: QReadLocker(QReadWriteLock *areadWriteLock) /ReleaseGIL/; ~QReadLocker(); void unlock(); void relock() /ReleaseGIL/; QReadWriteLock *readWriteLock() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QReadLocker(const QReadLocker &); }; class QWriteLocker { %TypeHeaderCode #include %End public: QWriteLocker(QReadWriteLock *areadWriteLock) /ReleaseGIL/; ~QWriteLocker(); void unlock(); void relock() /ReleaseGIL/; QReadWriteLock *readWriteLock() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QWriteLocker(const QWriteLocker &); }; PyQt-gpl-5.5.1/sip/QtCore/qrect.sip0000644000076500000240000002514012613140040017072 0ustar philstaff00000000000000// qrect.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRect { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->x(), sipCpp->y(), sipCpp->width(), sipCpp->height()); %End public: QRect(); QRect normalized() const; void moveCenter(const QPoint &p); QRect operator|(const QRect &r) const; QRect operator&(const QRect &r) const; bool contains(const QPoint &point, bool proper = false) const; int __contains__(const QPoint &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRect &rectangle, bool proper = false) const; int __contains__(const QRect &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool intersects(const QRect &r) const; QRect(int aleft, int atop, int awidth, int aheight); QRect(const QPoint &atopLeft, const QPoint &abottomRight); QRect(const QPoint &atopLeft, const QSize &asize); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QRect()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QRect()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QRect(%i, %i, %i, %i)", sipCpp->left(), sipCpp->top(), sipCpp->width(), sipCpp->height()); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End int left() const; int top() const; int right() const; int bottom() const; int x() const; int y() const; void setLeft(int pos); void setTop(int pos); void setRight(int pos); void setBottom(int pos); void setTopLeft(const QPoint &p); void setBottomRight(const QPoint &p); void setTopRight(const QPoint &p); void setBottomLeft(const QPoint &p); void setX(int ax); void setY(int ay); QPoint topLeft() const; QPoint bottomRight() const; QPoint topRight() const; QPoint bottomLeft() const; QPoint center() const; int width() const; int height() const; QSize size() const; void translate(int dx, int dy); void translate(const QPoint &p); QRect translated(int dx, int dy) const; QRect translated(const QPoint &p) const; void moveTo(int ax, int ay); void moveTo(const QPoint &p); void moveLeft(int pos); void moveTop(int pos); void moveRight(int pos); void moveBottom(int pos); void moveTopLeft(const QPoint &p); void moveBottomRight(const QPoint &p); void moveTopRight(const QPoint &p); void moveBottomLeft(const QPoint &p); void getRect(int *ax, int *ay, int *aw, int *ah) const; void setRect(int ax, int ay, int aw, int ah); void getCoords(int *xp1, int *yp1, int *xp2, int *yp2) const; void setCoords(int xp1, int yp1, int xp2, int yp2); QRect adjusted(int xp1, int yp1, int xp2, int yp2) const; void adjust(int dx1, int dy1, int dx2, int dy2); void setWidth(int w); void setHeight(int h); void setSize(const QSize &s); bool contains(int ax, int ay, bool aproper) const; bool contains(int ax, int ay) const; QRect &operator|=(const QRect &r); QRect &operator&=(const QRect &r); QRect intersected(const QRect &other) const; QRect united(const QRect &r) const; %If (Qt_5_1_0 -) QRect marginsAdded(const QMargins &margins) const; %End %If (Qt_5_1_0 -) QRect marginsRemoved(const QMargins &margins) const; %End %If (Qt_5_1_0 -) QRect &operator+=(const QMargins &margins); %End %If (Qt_5_1_0 -) QRect &operator-=(const QMargins &margins); %End }; QDataStream &operator<<(QDataStream &, const QRect & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRect & /Constrained/) /ReleaseGIL/; bool operator==(const QRect &r1, const QRect &r2); bool operator!=(const QRect &r1, const QRect &r2); class QRectF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", sipCpp->x(), sipCpp->y(), sipCpp->width(), sipCpp->height()); %End public: QRectF(); QRectF(const QPointF &atopLeft, const QSizeF &asize); QRectF(const QPointF &atopLeft, const QPointF &abottomRight); QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight); QRectF(const QRect &r); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QRectF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QRectF()"); #endif } else { PyObject *l = PyFloat_FromDouble(sipCpp->left()); PyObject *t = PyFloat_FromDouble(sipCpp->top()); PyObject *w = PyFloat_FromDouble(sipCpp->width()); PyObject *h = PyFloat_FromDouble(sipCpp->height()); if (l && t && w && h) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QRectF(%R, %R, %R, %R)", l, t, w, h); #else sipRes = PyString_FromString("PyQt5.QtCore.QRectF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(l)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(t)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(w)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(h)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(l); Py_XDECREF(t); Py_XDECREF(w); Py_XDECREF(h); } %End QRectF normalized() const; qreal left() const; qreal top() const; qreal right() const; qreal bottom() const; void setX(qreal pos); void setY(qreal pos); QPointF topLeft() const; QPointF bottomRight() const; QPointF topRight() const; QPointF bottomLeft() const; QRectF operator|(const QRectF &r) const; QRectF operator&(const QRectF &r) const; bool contains(const QPointF &p) const; int __contains__(const QPointF &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRectF &r) const; int __contains__(const QRectF &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool intersects(const QRectF &r) const; bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End qreal x() const; qreal y() const; void setLeft(qreal pos); void setRight(qreal pos); void setTop(qreal pos); void setBottom(qreal pos); void setTopLeft(const QPointF &p); void setTopRight(const QPointF &p); void setBottomLeft(const QPointF &p); void setBottomRight(const QPointF &p); QPointF center() const; void moveLeft(qreal pos); void moveTop(qreal pos); void moveRight(qreal pos); void moveBottom(qreal pos); void moveTopLeft(const QPointF &p); void moveTopRight(const QPointF &p); void moveBottomLeft(const QPointF &p); void moveBottomRight(const QPointF &p); void moveCenter(const QPointF &p); qreal width() const; qreal height() const; QSizeF size() const; void translate(qreal dx, qreal dy); void translate(const QPointF &p); void moveTo(qreal ax, qreal ay); void moveTo(const QPointF &p); QRectF translated(qreal dx, qreal dy) const; QRectF translated(const QPointF &p) const; void getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah) const; void setRect(qreal ax, qreal ay, qreal aaw, qreal aah); void getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2) const; void setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2); void adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2); QRectF adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2) const; void setWidth(qreal aw); void setHeight(qreal ah); void setSize(const QSizeF &s); bool contains(qreal ax, qreal ay) const; QRectF &operator|=(const QRectF &r); QRectF &operator&=(const QRectF &r); QRectF intersected(const QRectF &r) const; QRectF united(const QRectF &r) const; QRect toAlignedRect() const; QRect toRect() const; %If (Qt_5_3_0 -) QRectF marginsAdded(const QMarginsF &margins) const; %End %If (Qt_5_3_0 -) QRectF marginsRemoved(const QMarginsF &margins) const; %End %If (Qt_5_3_0 -) QRectF &operator+=(const QMarginsF &margins); %End %If (Qt_5_3_0 -) QRectF &operator-=(const QMarginsF &margins); %End }; QDataStream &operator<<(QDataStream &, const QRectF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRectF & /Constrained/) /ReleaseGIL/; bool operator==(const QRectF &r1, const QRectF &r2); bool operator!=(const QRectF &r1, const QRectF &r2); %If (Qt_5_3_0 -) QRect operator+(const QRect &rectangle, const QMargins &margins); %End %If (Qt_5_3_0 -) QRect operator+(const QMargins &margins, const QRect &rectangle); %End %If (Qt_5_3_0 -) QRect operator-(const QRect &lhs, const QMargins &rhs); %End %If (Qt_5_3_0 -) QRectF operator+(const QRectF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QRectF operator+(const QMarginsF &lhs, const QRectF &rhs); %End %If (Qt_5_3_0 -) QRectF operator-(const QRectF &lhs, const QMarginsF &rhs); %End PyQt-gpl-5.5.1/sip/QtCore/qregexp.sip0000644000076500000240000001123412613140040017426 0ustar philstaff00000000000000// qregexp.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegExp { %TypeHeaderCode #include %End public: enum PatternSyntax { RegExp, RegExp2, Wildcard, FixedString, WildcardUnix, W3CXmlSchema11, }; enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch, }; QRegExp(); QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, QRegExp::PatternSyntax syntax = QRegExp::RegExp); QRegExp(const QRegExp &rx); ~QRegExp(); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->pattern()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QRegExp(%R", uni); if (sipCpp->caseSensitivity() != Qt::CaseSensitive || sipCpp->patternSyntax() != QRegExp::RegExp) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", PyQt5.QtCore.Qt.CaseSensitivity(%i)", (int)sipCpp->caseSensitivity())); if (sipCpp->patternSyntax() != QRegExp::RegExp) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat( ", PyQt5.QtCore.QRegExp.PatternSyntax(%i)", (int)sipCpp->patternSyntax())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromString("PyQt5.QtCore.QRegExp("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); if (sipCpp->caseSensitivity() != Qt::CaseSensitive || sipCpp->patternSyntax() != QRegExp::RegExp) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", PyQt5.QtCore.Qt.CaseSensitivity(%i)", (int)sipCpp->caseSensitivity())); if (sipCpp->patternSyntax() != QRegExp::RegExp) PyString_ConcatAndDel(&sipRes, PyString_FromFormat( ", PyQt5.QtCore.QRegExp.PatternSyntax(%i)", (int)sipCpp->patternSyntax())); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } else { sipRes = 0; } %End bool operator==(const QRegExp &rx) const; bool operator!=(const QRegExp &rx) const; bool isEmpty() const; bool isValid() const; QString pattern() const; void setPattern(const QString &pattern); Qt::CaseSensitivity caseSensitivity() const; void setCaseSensitivity(Qt::CaseSensitivity cs); QRegExp::PatternSyntax patternSyntax() const; void setPatternSyntax(QRegExp::PatternSyntax syntax); bool isMinimal() const; void setMinimal(bool minimal); bool exactMatch(const QString &str) const; int indexIn(const QString &str, int offset = 0, QRegExp::CaretMode caretMode = QRegExp::CaretAtZero) const; int lastIndexIn(const QString &str, int offset = -1, QRegExp::CaretMode caretMode = QRegExp::CaretAtZero) const; int matchedLength() const; QStringList capturedTexts(); QString cap(int nth = 0); int pos(int nth = 0); QString errorString(); static QString escape(const QString &str); int captureCount() const; void swap(QRegExp &other); }; QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QRegExp ®Exp /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtCore/qregularexpression.sip0000644000076500000240000001536612613140040021727 0ustar philstaff00000000000000// qregularexpression.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegularExpression { %TypeHeaderCode #include %End public: enum PatternOption { NoPatternOption, CaseInsensitiveOption, DotMatchesEverythingOption, MultilineOption, ExtendedPatternSyntaxOption, InvertedGreedinessOption, DontCaptureOption, UseUnicodePropertiesOption, %If (Qt_5_4_0 -) OptimizeOnFirstUsageOption, %End %If (Qt_5_4_0 -) DontAutomaticallyOptimizeOption, %End }; typedef QFlags PatternOptions; QFlags patternOptions() const; void setPatternOptions(QFlags options); QRegularExpression(); QRegularExpression(const QString &pattern, QFlags options = QRegularExpression::NoPatternOption); QRegularExpression(const QRegularExpression &re); ~QRegularExpression(); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->pattern()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QRegularExpression(%R", uni); if (sipCpp->patternOptions() != QRegularExpression::NoPatternOption) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat( ", PyQt5.QtCore.QRegularExpression.PatternOptions(%i)", (int)sipCpp->patternOptions())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromString("PyQt5.QtCore.QRegularExpression("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); if (sipCpp->patternOptions() != QRegularExpression::NoPatternOption) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat( ", PyQt5.QtCore.QRegularExpression.PatternOptions(%i)", (int)sipCpp->patternOptions())); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } else { sipRes = 0; } %End void swap(QRegularExpression &re); QString pattern() const; void setPattern(const QString &pattern); bool isValid() const; int patternErrorOffset() const; QString errorString() const; int captureCount() const; enum MatchType { NormalMatch, PartialPreferCompleteMatch, PartialPreferFirstMatch, %If (Qt_5_1_0 -) NoMatch, %End }; enum MatchOption { NoMatchOption, AnchoredMatchOption, %If (Qt_5_4_0 -) DontCheckSubjectStringMatchOption, %End }; typedef QFlags MatchOptions; QRegularExpressionMatch match(const QString &subject, int offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QFlags matchOptions = QRegularExpression::NoMatchOption) const; QRegularExpressionMatchIterator globalMatch(const QString &subject, int offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QFlags matchOptions = QRegularExpression::NoMatchOption) const; static QString escape(const QString &str); %If (Qt_5_1_0 -) QStringList namedCaptureGroups() const; %End bool operator==(const QRegularExpression &re) const; bool operator!=(const QRegularExpression &re) const; %If (Qt_5_4_0 -) void optimize() const; %End }; QFlags operator|(QRegularExpression::PatternOption f1, QFlags f2); QFlags operator|(QRegularExpression::MatchOption f1, QFlags f2); QDataStream &operator<<(QDataStream &out, const QRegularExpression &re /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QRegularExpression &re /Constrained/) /ReleaseGIL/; class QRegularExpressionMatch { %TypeHeaderCode #include %End public: %If (Qt_5_1_0 -) QRegularExpressionMatch(); %End ~QRegularExpressionMatch(); QRegularExpressionMatch(const QRegularExpressionMatch &match); void swap(QRegularExpressionMatch &match); QRegularExpression regularExpression() const; QRegularExpression::MatchType matchType() const; QFlags matchOptions() const; bool hasMatch() const; bool hasPartialMatch() const; bool isValid() const; int lastCapturedIndex() const; QString captured(int nth = 0) const; QString captured(const QString &name) const; QStringList capturedTexts() const; int capturedStart(int nth = 0) const; int capturedLength(int nth = 0) const; int capturedEnd(int nth = 0) const; int capturedStart(const QString &name) const; int capturedLength(const QString &name) const; int capturedEnd(const QString &name) const; }; class QRegularExpressionMatchIterator { %TypeHeaderCode #include %End public: %If (Qt_5_1_0 -) QRegularExpressionMatchIterator(); %End ~QRegularExpressionMatchIterator(); QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator); void swap(QRegularExpressionMatchIterator &iterator); bool isValid() const; bool hasNext() const; QRegularExpressionMatch next(); QRegularExpressionMatch peekNext() const; QRegularExpression regularExpression() const; QRegularExpression::MatchType matchType() const; QFlags matchOptions() const; }; PyQt-gpl-5.5.1/sip/QtCore/qresource.sip0000644000076500000240000000467512613140040017776 0ustar philstaff00000000000000// qresource.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QResource { %TypeHeaderCode #include %End public: QResource(const QString &fileName /DocValue="''"/ = QString(), const QLocale &locale = QLocale()); ~QResource(); QString absoluteFilePath() const; SIP_PYOBJECT data() const /DocType="Py_v3:bytes;str"/; %MethodCode // The data may contain embedded '\0's so set the size explicitly. if (sipCpp->data()) { if ((sipRes = SIPBytes_FromStringAndSize((char *)sipCpp->data(), sipCpp->size())) == NULL) sipIsErr = 1; } else { Py_INCREF(Py_None); sipRes = Py_None; } %End QString fileName() const; bool isCompressed() const; bool isValid() const; QLocale locale() const; void setFileName(const QString &file); void setLocale(const QLocale &locale); qint64 size() const; static bool registerResource(const QString &rccFileName, const QString &mapRoot /DocValue="''"/ = QString()); static bool registerResource(const uchar *rccData, const QString &mapRoot /DocValue="''"/ = QString()) /PyName=registerResourceData/; static bool unregisterResource(const QString &rccFileName, const QString &mapRoot /DocValue="''"/ = QString()); static bool unregisterResource(const uchar *rccData, const QString &mapRoot /DocValue="''"/ = QString()) /PyName=unregisterResourceData/; protected: QStringList children() const; bool isDir() const; bool isFile() const; private: QResource(const QResource &); }; PyQt-gpl-5.5.1/sip/QtCore/qrunnable.sip0000644000076500000240000000224412613140040017743 0ustar philstaff00000000000000// qrunnable.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRunnable /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QRunnable(); virtual ~QRunnable(); virtual void run() = 0; bool autoDelete() const; void setAutoDelete(bool _autoDelete); }; PyQt-gpl-5.5.1/sip/QtCore/qsavefile.sip0000644000076500000240000000326712613140040017741 0ustar philstaff00000000000000// qsavefile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QSaveFile : QFileDevice { %TypeHeaderCode #include %End public: explicit QSaveFile(const QString &name); explicit QSaveFile(QObject *parent /TransferThis/ = 0); QSaveFile(const QString &name, QObject *parent /TransferThis/); virtual ~QSaveFile(); virtual QString fileName() const; void setFileName(const QString &name); virtual bool open(QFlags mode) /ReleaseGIL/; bool commit(); void cancelWriting(); void setDirectWriteFallback(bool enabled); bool directWriteFallback() const; protected: virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; private: virtual void close(); QSaveFile(const QSaveFile &); }; %End PyQt-gpl-5.5.1/sip/QtCore/qsemaphore.sip0000644000076500000240000000243612613140040020123 0ustar philstaff00000000000000// qsemaphore.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSemaphore { %TypeHeaderCode #include %End public: explicit QSemaphore(int n = 0); ~QSemaphore(); void acquire(int n = 1) /ReleaseGIL/; bool tryAcquire(int n = 1); bool tryAcquire(int n, int timeout) /ReleaseGIL/; void release(int n = 1); int available() const; private: QSemaphore(const QSemaphore &); }; PyQt-gpl-5.5.1/sip/QtCore/qsequentialanimationgroup.sip0000644000076500000240000000340512613140040023264 0ustar philstaff00000000000000// qsequentialanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSequentialAnimationGroup : QAnimationGroup { %TypeHeaderCode #include %End public: QSequentialAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QSequentialAnimationGroup(); QPauseAnimation *addPause(int msecs); QPauseAnimation *insertPause(int index, int msecs); QAbstractAnimation *currentAnimation() const; virtual int duration() const; signals: void currentAnimationChanged(QAbstractAnimation *current); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); private: QSequentialAnimationGroup(const QSequentialAnimationGroup &); }; PyQt-gpl-5.5.1/sip/QtCore/qsettings.sip0000644000076500000240000000730112613140040017774 0ustar philstaff00000000000000// qsettings.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSettings : QObject { %TypeHeaderCode #include %End public: enum Status { NoError, AccessError, FormatError, }; enum Format { NativeFormat, IniFormat, InvalidFormat, }; enum Scope { UserScope, SystemScope, }; QSettings(const QString &organization, const QString &application /DocValue="''"/ = QString(), QObject *parent /TransferThis/ = 0); QSettings(QSettings::Scope scope, const QString &organization, const QString &application /DocValue="''"/ = QString(), QObject *parent /TransferThis/ = 0); QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application /DocValue="''"/ = QString(), QObject *parent /TransferThis/ = 0); QSettings(const QString &fileName, QSettings::Format format, QObject *parent /TransferThis/ = 0); explicit QSettings(QObject *parent /TransferThis/ = 0); virtual ~QSettings(); void clear(); void sync(); QSettings::Status status() const; void beginGroup(const QString &prefix); void endGroup(); QString group() const; int beginReadArray(const QString &prefix); void beginWriteArray(const QString &prefix, int size = -1); void endArray(); void setArrayIndex(int i); QStringList allKeys() const; QStringList childKeys() const; QStringList childGroups() const; bool isWritable() const; void setValue(const QString &key, const QVariant &value); SIP_PYOBJECT value(const QString &key, const QVariant &defaultValue /DocValue="None"/ = QVariant(), SIP_PYOBJECT type /DocValue="None"/ = 0) const /ReleaseGIL/; %MethodCode QVariant value; // QSettings has an internal mutex so release the GIL to avoid the possibility // of deadlocks. Py_BEGIN_ALLOW_THREADS value = sipCpp->value(*a0, *a1); Py_END_ALLOW_THREADS sipRes = pyqt5_from_qvariant_by_type(value, a2); sipIsErr = !sipRes; %End void remove(const QString &key); bool contains(const QString &key) const; void setFallbacksEnabled(bool b); bool fallbacksEnabled() const; QString fileName() const; static void setPath(QSettings::Format format, QSettings::Scope scope, const QString &path); QSettings::Format format() const; QSettings::Scope scope() const; QString organizationName() const; QString applicationName() const; static void setDefaultFormat(QSettings::Format format); static QSettings::Format defaultFormat(); void setIniCodec(QTextCodec *codec /KeepReference/); void setIniCodec(const char *codecName); QTextCodec *iniCodec() const; protected: virtual bool event(QEvent *event); private: QSettings(const QSettings &); }; PyQt-gpl-5.5.1/sip/QtCore/qsharedmemory.sip0000644000076500000240000000446612613140040020644 0ustar philstaff00000000000000// qsharedmemory.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSharedMemory : QObject { %TypeHeaderCode #include %End public: enum AccessMode { ReadOnly, ReadWrite, }; enum SharedMemoryError { NoError, PermissionDenied, InvalidSize, KeyError, AlreadyExists, NotFound, LockError, OutOfResources, UnknownError, }; QSharedMemory(QObject *parent /TransferThis/ = 0); QSharedMemory(const QString &key, QObject *parent /TransferThis/ = 0); virtual ~QSharedMemory(); void setKey(const QString &key); QString key() const; bool create(int size, QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite); int size() const; bool attach(QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite); bool isAttached() const; bool detach(); SIP_PYOBJECT data() /DocType="sip.voidptr"/; %MethodCode sipRes = sipConvertFromVoidPtrAndSize(sipCpp->data(), sipCpp->size()); %End SIP_PYOBJECT constData() const /DocType="sip.voidptr"/; %MethodCode sipRes = sipConvertFromConstVoidPtrAndSize(sipCpp->constData(), sipCpp->size()); %End bool lock(); bool unlock(); QSharedMemory::SharedMemoryError error() const; QString errorString() const; void setNativeKey(const QString &key); QString nativeKey() const; private: QSharedMemory(const QSharedMemory &); }; PyQt-gpl-5.5.1/sip/QtCore/qsignalmapper.sip0000644000076500000240000000345112613140040020620 0ustar philstaff00000000000000// qsignalmapper.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWidget /External/; class QSignalMapper : QObject { %TypeHeaderCode #include %End public: explicit QSignalMapper(QObject *parent /TransferThis/ = 0); virtual ~QSignalMapper(); void setMapping(QObject *sender, int id); void setMapping(QObject *sender, const QString &text); void setMapping(QObject *sender, QWidget *widget); void setMapping(QObject *sender, QObject *object); void removeMappings(QObject *sender); QObject *mapping(int id) const; QObject *mapping(const QString &text) const; QObject *mapping(QWidget *widget) const; QObject *mapping(QObject *object) const; signals: void mapped(int); void mapped(const QString &); void mapped(QWidget *); void mapped(QObject *); public slots: void map(); void map(QObject *sender); private: QSignalMapper(const QSignalMapper &); }; PyQt-gpl-5.5.1/sip/QtCore/qsignaltransition.sip0000644000076500000240000000425312613140040021527 0ustar philstaff00000000000000// qsignaltransition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSignalTransition : QAbstractTransition { %TypeHeaderCode #include %End public: QSignalTransition(QState *sourceState /TransferThis/ = 0); QSignalTransition(SIP_PYOBJECT signal /DocType="signal"/, QState *sourceState /TransferThis/ = 0) /NoDerived/; %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt5_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) { sipCpp = new sipQSignalTransition(a1); sipCpp->setSenderObject(sender); sipCpp->setSignal(signal_signature); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual ~QSignalTransition(); QObject *senderObject() const; void setSenderObject(const QObject *sender); QByteArray signal() const; void setSignal(const QByteArray &signal); protected: virtual bool eventTest(QEvent *event); virtual void onTransition(QEvent *event); virtual bool event(QEvent *e); signals: %If (Qt_5_4_0 -) void senderObjectChanged(); %End %If (Qt_5_4_0 -) void signalChanged(); %End private: QSignalTransition(const QSignalTransition &); }; PyQt-gpl-5.5.1/sip/QtCore/qsize.sip0000644000076500000240000001322312613140040017106 0ustar philstaff00000000000000// qsize.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSize { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ii", sipCpp->width(), sipCpp->height()); %End public: void transpose(); void scale(const QSize &s, Qt::AspectRatioMode mode); QSize(); QSize(int w, int h); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QSize()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QSize()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QSize(%i, %i)", sipCpp->width(), sipCpp->height()); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End int width() const; int height() const; void setWidth(int w); void setHeight(int h); void scale(int w, int h, Qt::AspectRatioMode mode); QSize &operator+=(const QSize &s); QSize &operator-=(const QSize &s); QSize &operator*=(qreal c); QSize &operator/=(qreal c); QSize expandedTo(const QSize &otherSize) const; QSize boundedTo(const QSize &otherSize) const; QSize scaled(const QSize &s, Qt::AspectRatioMode mode) const; QSize scaled(int w, int h, Qt::AspectRatioMode mode) const; QSize transposed() const; }; QDataStream &operator<<(QDataStream &, const QSize & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSize & /Constrained/) /ReleaseGIL/; bool operator==(const QSize &s1, const QSize &s2); bool operator!=(const QSize &s1, const QSize &s2); const QSize operator+(const QSize &s1, const QSize &s2); const QSize operator-(const QSize &s1, const QSize &s2); const QSize operator*(const QSize &s, qreal c); const QSize operator*(qreal c, const QSize &s); const QSize operator/(const QSize &s, qreal c); class QSizeF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dd", sipCpp->width(), sipCpp->height()); %End public: void transpose(); void scale(const QSizeF &s, Qt::AspectRatioMode mode); QSizeF(); QSizeF(const QSize &sz); QSizeF(qreal w, qreal h); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QSizeF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QSizeF()"); #endif } else { PyObject *w = PyFloat_FromDouble(sipCpp->width()); PyObject *h = PyFloat_FromDouble(sipCpp->height()); if (w && h) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QSizeF(%R, %R)", w, h); #else sipRes = PyString_FromString("PyQt5.QtCore.QSizeF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(w)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(h)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(w); Py_XDECREF(h); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End qreal width() const; qreal height() const; void setWidth(qreal w); void setHeight(qreal h); void scale(qreal w, qreal h, Qt::AspectRatioMode mode); QSizeF &operator+=(const QSizeF &s); QSizeF &operator-=(const QSizeF &s); QSizeF &operator*=(qreal c); QSizeF &operator/=(qreal c); QSizeF expandedTo(const QSizeF &otherSize) const; QSizeF boundedTo(const QSizeF &otherSize) const; QSize toSize() const; QSizeF scaled(const QSizeF &s, Qt::AspectRatioMode mode) const; QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode) const; QSizeF transposed() const; }; QDataStream &operator<<(QDataStream &, const QSizeF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSizeF & /Constrained/) /ReleaseGIL/; bool operator==(const QSizeF &s1, const QSizeF &s2); bool operator!=(const QSizeF &s1, const QSizeF &s2); const QSizeF operator+(const QSizeF &s1, const QSizeF &s2); const QSizeF operator-(const QSizeF &s1, const QSizeF &s2); const QSizeF operator*(const QSizeF &s, qreal c); const QSizeF operator*(qreal c, const QSizeF &s); const QSizeF operator/(const QSizeF &s, qreal c); PyQt-gpl-5.5.1/sip/QtCore/qsocketnotifier.sip0000644000076500000240000000300012613140040021154 0ustar philstaff00000000000000// qsocketnotifier.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSocketNotifier : QObject { %TypeHeaderCode #include %End public: enum Type { Read, Write, Exception, }; QSocketNotifier(qintptr socket, QSocketNotifier::Type, QObject *parent /TransferThis/ = 0); virtual ~QSocketNotifier(); qintptr socket() const; QSocketNotifier::Type type() const; bool isEnabled() const; public slots: void setEnabled(bool); signals: void activated(int socket); protected: virtual bool event(QEvent *); private: QSocketNotifier(const QSocketNotifier &); }; PyQt-gpl-5.5.1/sip/QtCore/qsortfilterproxymodel.sip0000644000076500000240000001222212613140040022452 0ustar philstaff00000000000000// qsortfilterproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSortFilterProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QSortFilterProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QSortFilterProxyModel(); virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const; virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const; QRegExp filterRegExp() const; void setFilterRegExp(const QRegExp ®Exp); int filterKeyColumn() const; void setFilterKeyColumn(int column); Qt::CaseSensitivity filterCaseSensitivity() const; void setFilterCaseSensitivity(Qt::CaseSensitivity cs); public slots: void setFilterRegExp(const QString &pattern); void setFilterWildcard(const QString &pattern); void setFilterFixedString(const QString &pattern); protected: virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const; virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; public: virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); %If (Qt_5_5_0 -) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; %End %If (- Qt_5_5_0) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::EditRole) const; %End virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QModelIndex buddy(const QModelIndex &index) const; virtual QSize span(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchStartsWith|Qt::MatchWrap) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); Qt::CaseSensitivity sortCaseSensitivity() const; void setSortCaseSensitivity(Qt::CaseSensitivity cs); bool dynamicSortFilter() const; void setDynamicSortFilter(bool enable); int sortRole() const; void setSortRole(int role); int sortColumn() const; Qt::SortOrder sortOrder() const; int filterRole() const; void setFilterRole(int role); virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; bool isSortLocaleAware() const; void setSortLocaleAware(bool on); virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; public slots: void invalidate(); protected: void invalidateFilter(); private: QSortFilterProxyModel(const QSortFilterProxyModel &); }; PyQt-gpl-5.5.1/sip/QtCore/qstandardpaths.sip0000644000076500000240000000522312613140040020775 0ustar philstaff00000000000000// qstandardpaths.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStandardPaths { %TypeHeaderCode #include %End public: enum StandardLocation { DesktopLocation, DocumentsLocation, FontsLocation, ApplicationsLocation, MusicLocation, MoviesLocation, PicturesLocation, TempLocation, HomeLocation, DataLocation, CacheLocation, GenericDataLocation, RuntimeLocation, ConfigLocation, DownloadLocation, GenericCacheLocation, %If (Qt_5_2_0 -) GenericConfigLocation, %End %If (Qt_5_4_0 -) AppDataLocation, %End %If (Qt_5_4_0 -) AppLocalDataLocation, %End %If (Qt_5_5_0 -) AppConfigLocation, %End }; static QString writableLocation(QStandardPaths::StandardLocation type); static QStringList standardLocations(QStandardPaths::StandardLocation type); enum LocateOption { LocateFile, LocateDirectory, }; typedef QFlags LocateOptions; static QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QFlags options = QStandardPaths::LocateFile); static QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QFlags options = QStandardPaths::LocateFile); %If (PyQt_NotBootstrapped) static QString displayName(QStandardPaths::StandardLocation type); %End static QString findExecutable(const QString &executableName, const QStringList &paths = QStringList()); static void enableTestMode(bool testMode); %If (Qt_5_2_0 -) static void setTestModeEnabled(bool testMode); %End private: QStandardPaths(); ~QStandardPaths(); }; PyQt-gpl-5.5.1/sip/QtCore/qstate.sip0000644000076500000240000000547712613140040017270 0ustar philstaff00000000000000// qstate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QState : QAbstractState { %TypeHeaderCode #include %End public: enum ChildMode { ExclusiveStates, ParallelStates, }; enum RestorePolicy { DontRestoreProperties, RestoreProperties, }; QState(QState *parent /TransferThis/ = 0); QState(QState::ChildMode childMode, QState *parent /TransferThis/ = 0); virtual ~QState(); QAbstractState *errorState() const; void setErrorState(QAbstractState *state /KeepReference/); void addTransition(QAbstractTransition *transition /Transfer/); QSignalTransition *addTransition(SIP_PYOBJECT signal /DocType="signal"/, QAbstractState *target); %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt5_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) { sipRes = sipCpp->addTransition(sender, signal_signature.constData(), a1); } else { sipError = sipBadCallableArg(0, a0); } %End QAbstractTransition *addTransition(QAbstractState *target /Transfer/); void removeTransition(QAbstractTransition *transition /TransferBack/); QList transitions() const; QAbstractState *initialState() const; void setInitialState(QAbstractState *state /KeepReference/); QState::ChildMode childMode() const; void setChildMode(QState::ChildMode mode); void assignProperty(QObject *object, const char *name, const QVariant &value); signals: void finished(); void propertiesAssigned(); protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); signals: %If (Qt_5_4_0 -) void childModeChanged(); %End %If (Qt_5_4_0 -) void initialStateChanged(); %End %If (Qt_5_4_0 -) void errorStateChanged(); %End private: QState(const QState &); }; PyQt-gpl-5.5.1/sip/QtCore/qstatemachine.sip0000644000076500000240000001064312613140040020604 0ustar philstaff00000000000000// qstatemachine.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStateMachine : QState { %TypeHeaderCode #include %End public: class SignalEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~SignalEvent(); QObject *sender() const; int signalIndex() const; QList arguments() const; }; class WrappedEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~WrappedEvent(); QObject *object() const; QEvent *event() const; }; enum EventPriority { NormalPriority, HighPriority, }; enum Error { NoError, NoInitialStateError, NoDefaultStateInHistoryStateError, NoCommonAncestorForTransitionError, }; explicit QStateMachine(QObject *parent /TransferThis/ = 0); QStateMachine(QState::ChildMode childMode, QObject *parent /TransferThis/ = 0); virtual ~QStateMachine(); void addState(QAbstractState *state /Transfer/); void removeState(QAbstractState *state /TransferBack/); QStateMachine::Error error() const; QString errorString() const; void clearError(); bool isRunning() const; bool isAnimated() const; void setAnimated(bool enabled); void addDefaultAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // We want to keep a reference to the animation but this is in addition to the // existing ones and does not replace them - so we can't use /KeepReference/. sipCpp->addDefaultAnimation(a0); // Use the user object as a list of the references. PyObject *user = ((sipSimpleWrapper *)sipSelf)->user; if (!user) user = ((sipSimpleWrapper *)sipSelf)->user = PyList_New(0); if (user) PyList_Append(user, a0Wrapper); %End QList defaultAnimations() const; void removeDefaultAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // Discard the extra animation reference that we took in addDefaultAnimation(). sipCpp->removeDefaultAnimation(a0); // Use the user object as a list of the references. PyObject *user = ((sipSimpleWrapper *)sipSelf)->user; if (user) { Py_ssize_t i = 0; // Note that we deal with an object appearing in the list more than once. while (i < PyList_GET_SIZE(user)) if (PyList_GET_ITEM(user, i) == a0Wrapper) PyList_SetSlice(user, i, i + 1, NULL); else ++i; } %End QState::RestorePolicy globalRestorePolicy() const; void setGlobalRestorePolicy(QState::RestorePolicy restorePolicy); void postEvent(QEvent *event /Transfer/, QStateMachine::EventPriority priority = QStateMachine::NormalPriority); int postDelayedEvent(QEvent *event /Transfer/, int delay); bool cancelDelayedEvent(int id); QSet configuration() const; virtual bool eventFilter(QObject *watched, QEvent *event); public slots: void start(); void stop(); %If (Qt_5_4_0 -) void setRunning(bool running); %End signals: void started(); void stopped(); %If (Qt_5_4_0 -) void runningChanged(bool running); %End protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); private: QStateMachine(const QStateMachine &); }; PyQt-gpl-5.5.1/sip/QtCore/qstorageinfo.sip0000644000076500000240000000364612613140040020464 0ustar philstaff00000000000000// qstorageinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QStorageInfo { %TypeHeaderCode #include %End public: QStorageInfo(); explicit QStorageInfo(const QString &path); explicit QStorageInfo(const QDir &dir); QStorageInfo(const QStorageInfo &other); ~QStorageInfo(); void swap(QStorageInfo &other); void setPath(const QString &path); QString rootPath() const; QByteArray device() const; QByteArray fileSystemType() const; QString name() const; QString displayName() const; qint64 bytesTotal() const; qint64 bytesFree() const; qint64 bytesAvailable() const; bool isReadOnly() const; bool isReady() const; bool isValid() const; void refresh(); static QList mountedVolumes(); static QStorageInfo root(); bool isRoot() const; }; %End %If (Qt_5_4_0 -) bool operator==(const QStorageInfo &first, const QStorageInfo &second); %End %If (Qt_5_4_0 -) bool operator!=(const QStorageInfo &first, const QStorageInfo &second); %End PyQt-gpl-5.5.1/sip/QtCore/qstring.sip0000644000076500000240000000406312613140040017444 0ustar philstaff00000000000000// qstring.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QString mapped type. %MappedType QString /AllowNone,DocType="str"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) #if PY_MAJOR_VERSION < 3 return (sipPy == Py_None || PyString_Check(sipPy) || PyUnicode_Check(sipPy)); #else return (sipPy == Py_None || PyUnicode_Check(sipPy)); #endif if (sipPy == Py_None) { // None is the only way to create a null (as opposed to empty) QString. *sipCppPtr = new QString(); return sipGetState(sipTransferObj); } #if PY_MAJOR_VERSION < 3 if (PyString_Check(sipPy)) { *sipCppPtr = new QString(PyString_AS_STRING(sipPy)); return sipGetState(sipTransferObj); } #endif *sipCppPtr = new QString(qpycore_PyObject_AsQString(sipPy)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(*sipCpp); %End }; // QStringRef mapped type. %MappedType QStringRef { %TypeHeaderCode #include %End %ConvertToTypeCode // Qt only ever returns a QStringRef so this conversion isn't needed. return 0; %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(sipCpp->toString()); %End }; PyQt-gpl-5.5.1/sip/QtCore/qstringlist.sip0000644000076500000240000000664612613140040020351 0ustar philstaff00000000000000// This is the SIP interface definition for the QStringList mapped type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that when we test the type of an object to see if it can be converted // to a collection we only check if it is iterable. We do not check the // types of the contents - we assume we will be able to convert them when // requested. This allows us to raise exceptions specific to an individual // object. This approach doesn't work if there are overloads that can only be // distinguished by the types of the template arguments. Currently there are // no such cases in PyQt5. Note also that we don't consider strings to be // iterables. %MappedType QStringList /DocType="list-of-str"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QString *t = new QString(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QString, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QStringList *ql = new QStringList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QString *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QString, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'str' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QString, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtCore/qstringlistmodel.sip0000644000076500000240000000403312613140040021356 0ustar philstaff00000000000000// qstringlistmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStringListModel : QAbstractListModel { %TypeHeaderCode #include %End public: explicit QStringListModel(QObject *parent /TransferThis/ = 0); QStringListModel(const QStringList &strings, QObject *parent /TransferThis/ = 0); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); QStringList stringList() const; void setStringList(const QStringList &strings); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual Qt::DropActions supportedDropActions() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; private: QStringListModel(const QStringListModel &); }; PyQt-gpl-5.5.1/sip/QtCore/qsysinfo.sip0000644000076500000240000000564012613140040017632 0ustar philstaff00000000000000// This is the SIP specification of the QSysInfo class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSysInfo { %TypeHeaderCode #include %End public: enum Sizes { WordSize, }; enum Endian { BigEndian, LittleEndian, ByteOrder, }; %If (WS_MACX) enum MacVersion { MV_Unknown, MV_9, MV_10_0, MV_10_1, MV_10_2, MV_10_3, MV_10_4, MV_10_5, MV_10_6, MV_10_7, MV_10_8, %If (Qt_5_1_0 -) MV_10_9, %End %If (Qt_5_4_0 -) MV_10_10, %End %If (Qt_5_5_0 -) MV_10_11, %End MV_CHEETAH, MV_PUMA, MV_JAGUAR, MV_PANTHER, MV_TIGER, MV_LEOPARD, MV_SNOWLEOPARD, MV_LION, MV_MOUNTAINLION, %If (Qt_5_1_0 -) MV_MAVERICKS, %End %If (Qt_5_4_0 -) MV_YOSEMITE, %End %If (Qt_5_5_0 -) MV_ELCAPITAN, %End %If (Qt_5_2_0 -) MV_IOS, MV_IOS_4_3, MV_IOS_5_0, MV_IOS_5_1, MV_IOS_6_0, MV_IOS_6_1, MV_IOS_7_0, MV_IOS_7_1, %End %If (Qt_5_4_0 -) MV_IOS_8_0, %End %If (Qt_5_5_0 -) MV_IOS_8_1, MV_IOS_8_2, MV_IOS_8_3, MV_IOS_8_4, MV_IOS_9_0, %End }; static const QSysInfo::MacVersion MacintoshVersion; static QSysInfo::MacVersion macVersion(); %End %If (WS_WIN) enum WinVersion { WV_32s, WV_95, WV_98, WV_Me, WV_DOS_based, WV_NT, WV_2000, WV_XP, WV_2003, WV_VISTA, WV_WINDOWS7, WV_WINDOWS8, %If (Qt_5_2_0 -) WV_WINDOWS8_1, %End %If (Qt_5_5_0 -) WV_WINDOWS10, %End WV_NT_based, WV_4_0, WV_5_0, WV_5_1, WV_5_2, WV_6_0, WV_6_1, WV_6_2, %If (Qt_5_2_0 -) WV_6_3, %End %If (Qt_5_5_0 -) WV_10_0, %End WV_CE, WV_CENET, WV_CE_5, WV_CE_6, WV_CE_based }; static const QSysInfo::WinVersion WindowsVersion; static QSysInfo::WinVersion windowsVersion(); %End }; PyQt-gpl-5.5.1/sip/QtCore/qsystemsemaphore.sip0000644000076500000240000000337612613140040021374 0ustar philstaff00000000000000// qsystemsemaphore.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSystemSemaphore { %TypeHeaderCode #include %End public: enum AccessMode { Open, Create, }; enum SystemSemaphoreError { NoError, PermissionDenied, KeyError, AlreadyExists, NotFound, OutOfResources, UnknownError, }; QSystemSemaphore(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); ~QSystemSemaphore(); void setKey(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); QString key() const; bool acquire(); bool release(int n = 1); QSystemSemaphore::SystemSemaphoreError error() const; QString errorString() const; private: QSystemSemaphore(const QSystemSemaphore &); }; PyQt-gpl-5.5.1/sip/QtCore/QtCoremod.sip0000644000076500000240000001407412613140040017655 0ustar philstaff00000000000000// QtCoremod.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", version=1) %Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1} %Platforms {WS_X11 WS_WIN WS_MACX} %Feature PyQt_Accessibility %Feature PyQt_SessionManager %Feature PyQt_SSL %Feature PyQt_qreal_double %Feature Py_v3 %Feature PyQt_PrintDialog %Feature PyQt_Printer %Feature PyQt_PrintPreviewWidget %Feature PyQt_PrintPreviewDialog %Feature PyQt_RawFont %Feature PyQt_OpenGL %Feature PyQt_Desktop_OpenGL %Feature PyQt_NotBootstrapped %Feature PyQt_Process %Feature PyQt_MacCocoaViewContainer %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Plugin PyQt5 %If (Py_v3) %DefaultEncoding "ASCII" %End %If (!Py_v3) // Hook into the VendorID package if it is enabled. %Feature VendorID %If (VendorID) %ModuleCode #include %End %PreInitialisationCode if (!vendorid_check()) { PyErr_SetString(PyExc_RuntimeError, "PyQt cannot be used with this Python interpreter"); return; } %End %End %End %Include(name=pyqt-internal.sip5, optional=True) %Include(name=pyqt-gpl.sip5, optional=True) %Include(name=pyqt-commercial.sip5, optional=True) %DefaultMetatype PyQt5.QtCore.pyqtWrapperType %DefaultSupertype sip.simplewrapper %Include qglobal.sip %Include qnamespace.sip %Include qabstractanimation.sip %Include qabstracteventdispatcher.sip %Include qabstractitemmodel.sip %Include qabstractnativeeventfilter.sip %Include qabstractproxymodel.sip %Include qabstractstate.sip %Include qabstracttransition.sip %Include qanimationgroup.sip %Include qbasictimer.sip %Include qbitarray.sip %Include qbuffer.sip %Include qbytearray.sip %Include qbytearraymatcher.sip %Include qchar.sip %Include qcollator.sip %Include qcommandlineoption.sip %Include qcommandlineparser.sip %Include qcoreapplication.sip %Include qcoreevent.sip %Include qcryptographichash.sip %Include qdatastream.sip %Include qdatetime.sip %Include qdir.sip %Include qdiriterator.sip %Include qeasingcurve.sip %Include qelapsedtimer.sip %Include qeventloop.sip %Include qeventtransition.sip %Include qfile.sip %Include qfiledevice.sip %Include qfileinfo.sip %Include qfileselector.sip %Include qfilesystemwatcher.sip %Include qfinalstate.sip %Include qhistorystate.sip %Include qidentityproxymodel.sip %Include qiodevice.sip %Include qitemselectionmodel.sip %Include qjsondocument.sip %Include qjsonvalue.sip %Include qlibrary.sip %Include qlibraryinfo.sip %Include qline.sip %Include qlocale.sip %Include qlockfile.sip %Include qlogging.sip %Include qmargins.sip %Include qmessageauthenticationcode.sip %Include qmetaobject.sip %Include qmetatype.sip %Include qmimedata.sip %Include qmimedatabase.sip %Include qmimetype.sip %Include qmutex.sip %Include qnumeric.sip %Include qobject.sip %Include qobjectcleanuphandler.sip %Include qobjectdefs.sip %Include qparallelanimationgroup.sip %Include qpauseanimation.sip %Include qpropertyanimation.sip %Include qpluginloader.sip %Include qpoint.sip %Include qprocess.sip %Include qreadwritelock.sip %Include qrect.sip %Include qregexp.sip %Include qregularexpression.sip %Include qresource.sip %Include qrunnable.sip %Include qsavefile.sip %Include qsemaphore.sip %Include qsequentialanimationgroup.sip %Include qsettings.sip %Include qsharedmemory.sip %Include qsignalmapper.sip %Include qsignaltransition.sip %Include qsize.sip %Include qsocketnotifier.sip %Include qsortfilterproxymodel.sip %Include qstandardpaths.sip %Include qstate.sip %Include qstatemachine.sip %Include qstorageinfo.sip %Include qstring.sip %Include qstringlistmodel.sip %Include qsystemsemaphore.sip %Include qtemporarydir.sip %Include qtemporaryfile.sip %Include qtextboundaryfinder.sip %Include qtextcodec.sip %Include qtextstream.sip %Include qthread.sip %Include qthreadpool.sip %Include qtimeline.sip %Include qtimer.sip %Include qtimezone.sip %Include qtranslator.sip %Include qurl.sip %Include qurlquery.sip %Include quuid.sip %Include qvariant.sip %Include qvariantanimation.sip %Include qwaitcondition.sip %Include qxmlstream.sip %Include qjsonarray.sip %Include qjsonobject.sip %Include qpycore_qhash.sip %Include qpycore_qlist.sip %Include qpycore_qmap.sip %Include qpycore_qpair.sip %Include qpycore_qset.sip %Include qpycore_qvector.sip %Include qpycore_virtual_error_handler.sip %Include qstringlist.sip %Include qsysinfo.sip %Include qwineventnotifier.sip PyQt-gpl-5.5.1/sip/QtCore/qtemporarydir.sip0000644000076500000240000000244612613140040020662 0ustar philstaff00000000000000// qtemporarydir.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTemporaryDir { %TypeHeaderCode #include %End public: QTemporaryDir(); explicit QTemporaryDir(const QString &templateName); ~QTemporaryDir(); bool isValid() const; bool autoRemove() const; void setAutoRemove(bool b); bool remove(); QString path() const; private: QTemporaryDir(const QTemporaryDir &); }; PyQt-gpl-5.5.1/sip/QtCore/qtemporaryfile.sip0000644000076500000240000000343212613140040021017 0ustar philstaff00000000000000// qtemporaryfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTemporaryFile : QFile { %TypeHeaderCode #include %End public: QTemporaryFile(); explicit QTemporaryFile(const QString &templateName); explicit QTemporaryFile(QObject *parent /TransferThis/); QTemporaryFile(const QString &templateName, QObject *parent /TransferThis/); virtual ~QTemporaryFile(); bool autoRemove() const; void setAutoRemove(bool b); bool open() /ReleaseGIL/; virtual QString fileName() const; QString fileTemplate() const; void setFileTemplate(const QString &name); static QTemporaryFile *createNativeFile(const QString &fileName) /Factory,ReleaseGIL/; static QTemporaryFile *createNativeFile(QFile &file) /Factory,ReleaseGIL/; protected: virtual bool open(QFlags mode) /ReleaseGIL/; private: QTemporaryFile(const QTemporaryFile &); }; PyQt-gpl-5.5.1/sip/QtCore/qtextboundaryfinder.sip0000644000076500000240000000407512613140040022061 0ustar philstaff00000000000000// qtextboundaryfinder.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextBoundaryFinder { %TypeHeaderCode #include %End public: enum BoundaryReason { NotAtBoundary, SoftHyphen, BreakOpportunity, StartOfItem, EndOfItem, MandatoryBreak, }; typedef QFlags BoundaryReasons; enum BoundaryType { Grapheme, Word, Line, Sentence, }; QTextBoundaryFinder(); QTextBoundaryFinder(const QTextBoundaryFinder &other); QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QString &string); ~QTextBoundaryFinder(); bool isValid() const; QTextBoundaryFinder::BoundaryType type() const; QString string() const; void toStart(); void toEnd(); int position() const; void setPosition(int position); int toNextBoundary(); int toPreviousBoundary(); bool isAtBoundary() const; QFlags boundaryReasons() const; }; QFlags operator|(QTextBoundaryFinder::BoundaryReason f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtCore/qtextcodec.sip0000644000076500000240000000766112613140040020127 0ustar philstaff00000000000000// qtextcodec.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextCodec /Abstract,Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: static QTextCodec *codecForName(const QByteArray &name); static QTextCodec *codecForName(const char *name); static QTextCodec *codecForMib(int mib); static QTextCodec *codecForHtml(const QByteArray &ba); static QTextCodec *codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec); static QTextCodec *codecForUtfText(const QByteArray &ba); static QTextCodec *codecForUtfText(const QByteArray &ba, QTextCodec *defaultCodec); static QList availableCodecs(); static QList availableMibs(); static QTextCodec *codecForLocale(); static void setCodecForLocale(QTextCodec *c /KeepReference/); QTextDecoder *makeDecoder(QFlags flags = QTextCodec::DefaultConversion) const /Factory/; QTextEncoder *makeEncoder(QFlags flags = QTextCodec::DefaultConversion) const /Factory/; bool canEncode(const QString &) const; QString toUnicode(const QByteArray &) const; QString toUnicode(const char *chars /Encoding="None"/) const; QByteArray fromUnicode(const QString &uc) const; enum ConversionFlag { DefaultConversion, ConvertInvalidToNull, IgnoreHeader, }; typedef QFlags ConversionFlags; struct ConverterState { %TypeHeaderCode #include %End ConverterState(QFlags flags = QTextCodec::DefaultConversion); ~ConverterState(); private: ConverterState(const QTextCodec::ConverterState &); }; QString toUnicode(const char *in /Array/, int length /ArraySize/, QTextCodec::ConverterState *state = 0) const; virtual QByteArray name() const = 0; virtual QList aliases() const; virtual int mibEnum() const = 0; protected: virtual QString convertToUnicode(const char *in /Array/, int length /ArraySize/, QTextCodec::ConverterState *state) const = 0; QTextCodec() /Transfer/; virtual ~QTextCodec(); private: QTextCodec(const QTextCodec &); }; QFlags operator|(QTextCodec::ConversionFlag f1, QFlags f2); class QTextEncoder /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QTextEncoder(const QTextCodec *codec); QTextEncoder(const QTextCodec *codec, QFlags flags); ~QTextEncoder(); QByteArray fromUnicode(const QString &str); private: QTextEncoder(const QTextEncoder &); }; class QTextDecoder /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QTextDecoder(const QTextCodec *codec); QTextDecoder(const QTextCodec *codec, QFlags flags); ~QTextDecoder(); QString toUnicode(const char *chars /Array/, int len /ArraySize/); QString toUnicode(const QByteArray &ba); private: QTextDecoder(const QTextDecoder &); }; PyQt-gpl-5.5.1/sip/QtCore/qtextstream.sip0000644000076500000240000001166212613140040020341 0ustar philstaff00000000000000// qtextstream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QTextStream { %TypeHeaderCode #include %End public: enum RealNumberNotation { SmartNotation, FixedNotation, ScientificNotation, }; enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle, }; enum NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits, }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed, }; typedef QFlags NumberFlags; QTextStream(); explicit QTextStream(QIODevice *device); QTextStream(QByteArray *array /Constrained/, QFlags mode = QIODevice::ReadWrite); virtual ~QTextStream(); void setCodec(QTextCodec *codec /KeepReference/); void setCodec(const char *codecName); QTextCodec *codec() const; void setAutoDetectUnicode(bool enabled); bool autoDetectUnicode() const; void setGenerateByteOrderMark(bool generate); bool generateByteOrderMark() const; void setDevice(QIODevice *device); QIODevice *device() const; bool atEnd() const; void reset(); void flush() /ReleaseGIL/; bool seek(qint64 pos); void skipWhiteSpace(); QString read(qint64 maxlen) /ReleaseGIL/; QString readLine(qint64 maxLength = 0) /ReleaseGIL/; QString readAll() /ReleaseGIL/; void setFieldAlignment(QTextStream::FieldAlignment alignment); QTextStream::FieldAlignment fieldAlignment() const; void setPadChar(QChar ch); QChar padChar() const; void setFieldWidth(int width); int fieldWidth() const; void setNumberFlags(QFlags flags); QFlags numberFlags() const; void setIntegerBase(int base); int integerBase() const; void setRealNumberNotation(QTextStream::RealNumberNotation notation); QTextStream::RealNumberNotation realNumberNotation() const; void setRealNumberPrecision(int precision); int realNumberPrecision() const; QTextStream::Status status() const; void setStatus(QTextStream::Status status); void resetStatus(); qint64 pos() const; QTextStream &operator>>(QByteArray &array /Constrained/); QTextStream &operator<<(double f /Constrained/); QTextStream &operator<<(int i /Constrained/); QTextStream &operator<<(qlonglong i); QTextStream &operator<<(qulonglong i); QTextStream &operator<<(const QString &s); QTextStream &operator<<(const QByteArray &array); void setLocale(const QLocale &locale); QLocale locale() const; private: QTextStream(const QTextStream &); }; QFlags operator|(QTextStream::NumberFlag f1, QFlags f2); class QTextStreamManipulator; QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m); QTextStream &bin(QTextStream &s) /PyName=bin_/; QTextStream &oct(QTextStream &s) /PyName=oct_/; QTextStream &dec(QTextStream &s); QTextStream &hex(QTextStream &s) /PyName=hex_/; QTextStream &showbase(QTextStream &s); QTextStream &forcesign(QTextStream &s); QTextStream &forcepoint(QTextStream &s); QTextStream &noshowbase(QTextStream &s); QTextStream &noforcesign(QTextStream &s); QTextStream &noforcepoint(QTextStream &s); QTextStream &uppercasebase(QTextStream &s); QTextStream &uppercasedigits(QTextStream &s); QTextStream &lowercasebase(QTextStream &s); QTextStream &lowercasedigits(QTextStream &s); QTextStream &fixed(QTextStream &s); QTextStream &scientific(QTextStream &s); QTextStream &left(QTextStream &s); QTextStream &right(QTextStream &s); QTextStream ¢er(QTextStream &s); QTextStream &endl(QTextStream &s); QTextStream &flush(QTextStream &s); QTextStream &reset(QTextStream &s); QTextStream &bom(QTextStream &s); QTextStream &ws(QTextStream &s); QTextStreamManipulator qSetFieldWidth(int width); QTextStreamManipulator qSetPadChar(QChar ch); QTextStreamManipulator qSetRealNumberPrecision(int precision); PyQt-gpl-5.5.1/sip/QtCore/qthread.sip0000644000076500000240000000524312613140040017406 0ustar philstaff00000000000000// qthread.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QThread : QObject { %TypeHeaderCode #include %End public: static QThread *currentThread(); static Qt::HANDLE currentThreadId(); static int idealThreadCount(); static void yieldCurrentThread() /ReleaseGIL/; explicit QThread(QObject *parent /TransferThis/ = 0); virtual ~QThread(); enum Priority { IdlePriority, LowestPriority, LowPriority, NormalPriority, HighPriority, HighestPriority, TimeCriticalPriority, InheritPriority, }; bool isFinished() const; bool isRunning() const; void setPriority(QThread::Priority priority); QThread::Priority priority() const; void setStackSize(uint stackSize); uint stackSize() const; void exit(int returnCode = 0) /ReleaseGIL/; public slots: void start(QThread::Priority priority = QThread::InheritPriority) /ReleaseGIL/; void terminate(); void quit(); public: bool wait(unsigned long msecs = ULONG_MAX) /ReleaseGIL/; signals: void started(); void finished(); protected: virtual void run() /NewThread/; int exec() /PyName=exec_,ReleaseGIL/; %If (Py_v3) int exec() /ReleaseGIL/; %End static void setTerminationEnabled(bool enabled = true); public: virtual bool event(QEvent *event); static void sleep(unsigned long) /ReleaseGIL/; static void msleep(unsigned long) /ReleaseGIL/; static void usleep(unsigned long) /ReleaseGIL/; QAbstractEventDispatcher *eventDispatcher() const; void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher /Transfer/); %If (Qt_5_2_0 -) void requestInterruption(); %End %If (Qt_5_2_0 -) bool isInterruptionRequested() const; %End %If (Qt_5_5_0 -) int loopLevel() const; %End }; PyQt-gpl-5.5.1/sip/QtCore/qthreadpool.sip0000644000076500000240000000427512613140040020304 0ustar philstaff00000000000000// qthreadpool.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QThreadPool : QObject { %TypeHeaderCode #include %End public: QThreadPool(QObject *parent /TransferThis/ = 0); virtual ~QThreadPool(); static QThreadPool *globalInstance() /KeepReference/; void start(QRunnable *runnable /GetWrapper/, int priority = 0) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipCpp->start(a0, a1); Py_END_ALLOW_THREADS %End bool tryStart(QRunnable *runnable /GetWrapper/) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->tryStart(a0); Py_END_ALLOW_THREADS %End int expiryTimeout() const; void setExpiryTimeout(int expiryTimeout); int maxThreadCount() const; void setMaxThreadCount(int maxThreadCount); int activeThreadCount() const; void reserveThread(); void releaseThread(); bool waitForDone(int msecs = -1) /ReleaseGIL/; %If (Qt_5_2_0 -) void clear(); %End %If (Qt_5_5_0 -) void cancel(QRunnable *runnable); %End }; PyQt-gpl-5.5.1/sip/QtCore/qtimeline.sip0000644000076500000240000000526012613140040017744 0ustar philstaff00000000000000// qtimeline.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimeLine : QObject { %TypeHeaderCode #include %End public: enum CurveShape { EaseInCurve, EaseOutCurve, EaseInOutCurve, LinearCurve, SineCurve, CosineCurve, }; enum Direction { Forward, Backward, }; enum State { NotRunning, Paused, Running, }; QTimeLine(int duration = 1000, QObject *parent /TransferThis/ = 0); virtual ~QTimeLine(); QTimeLine::State state() const; int loopCount() const; void setLoopCount(int count); QTimeLine::Direction direction() const; void setDirection(QTimeLine::Direction direction); int duration() const; void setDuration(int duration); int startFrame() const; void setStartFrame(int frame); int endFrame() const; void setEndFrame(int frame); void setFrameRange(int startFrame, int endFrame); int updateInterval() const; void setUpdateInterval(int interval); QTimeLine::CurveShape curveShape() const; void setCurveShape(QTimeLine::CurveShape shape); int currentTime() const; int currentFrame() const; qreal currentValue() const; int frameForTime(int msec) const; virtual qreal valueForTime(int msec) const; public slots: void resume(); void setCurrentTime(int msec); void setPaused(bool paused); void start(); void stop(); void toggleDirection(); signals: void finished(); void frameChanged(int); void stateChanged(QTimeLine::State newState); void valueChanged(qreal x); protected: virtual void timerEvent(QTimerEvent *event); public: QEasingCurve easingCurve() const; void setEasingCurve(const QEasingCurve &curve); private: QTimeLine(const QTimeLine &); }; PyQt-gpl-5.5.1/sip/QtCore/qtimer.sip0000644000076500000240000000511712613140040017257 0ustar philstaff00000000000000// qtimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimer : QObject { %TypeHeaderCode #include %End public: explicit QTimer(QObject *parent /TransferThis/ = 0); virtual ~QTimer(); bool isActive() const; int timerId() const; void setInterval(int msec); int interval() const; bool isSingleShot() const; void setSingleShot(bool asingleShot); static void singleShot(int msec, SIP_PYOBJECT slot /DocType="callable-or-signal"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_get_connection_parts(a1, 0, "()", true, &receiver, slot_signature)) == sipErrorNone) { QTimer::singleShot(a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End static void singleShot(int msec, Qt::TimerType timerType, SIP_PYOBJECT slot /DocType="callable-or-signal"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_get_connection_parts(a2, 0, "()", true, &receiver, slot_signature)) == sipErrorNone) { QTimer::singleShot(a0, a1, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End public slots: void start(int msec); void start(); void stop(); signals: void timeout(); protected: virtual void timerEvent(QTimerEvent *); public: void setTimerType(Qt::TimerType atype); Qt::TimerType timerType() const; int remainingTime() const; private: QTimer(const QTimer &); }; PyQt-gpl-5.5.1/sip/QtCore/qtimezone.sip0000644000076500000240000001024412613140040017766 0ustar philstaff00000000000000// qtimezone.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QTimeZone { %TypeHeaderCode #include %End public: enum TimeType { StandardTime, DaylightTime, GenericTime, }; enum NameType { DefaultName, LongName, ShortName, OffsetName, }; struct OffsetData { %TypeHeaderCode #include %End QString abbreviation; QDateTime atUtc; int offsetFromUtc; int standardTimeOffset; int daylightTimeOffset; }; typedef QVector OffsetDataList; QTimeZone(); explicit QTimeZone(const QByteArray &ianaId); explicit QTimeZone(int offsetSeconds); QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Country country = QLocale::AnyCountry, const QString &comment = QString()); QTimeZone(const QTimeZone &other); ~QTimeZone(); void swap(QTimeZone &other); bool operator==(const QTimeZone &other) const; bool operator!=(const QTimeZone &other) const; bool isValid() const; QByteArray id() const; QLocale::Country country() const; QString comment() const; QString displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const; QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const; QString abbreviation(const QDateTime &atDateTime) const; int offsetFromUtc(const QDateTime &atDateTime) const; int standardTimeOffset(const QDateTime &atDateTime) const; int daylightTimeOffset(const QDateTime &atDateTime) const; bool hasDaylightTime() const; bool isDaylightTime(const QDateTime &atDateTime) const; QTimeZone::OffsetData offsetData(const QDateTime &forDateTime) const; bool hasTransitions() const; QTimeZone::OffsetData nextTransition(const QDateTime &afterDateTime) const; QTimeZone::OffsetData previousTransition(const QDateTime &beforeDateTime) const; QVector transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const; static QByteArray systemTimeZoneId(); static bool isTimeZoneIdAvailable(const QByteArray &ianaId); static QList availableTimeZoneIds(); static QList availableTimeZoneIds(QLocale::Country country /Constrained/); static QList availableTimeZoneIds(int offsetSeconds); static QByteArray ianaIdToWindowsId(const QByteArray &ianaId); static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId); static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Country country); static QList windowsIdToIanaIds(const QByteArray &windowsId); static QList windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Country country); %If (Qt_5_5_0 -) static QTimeZone systemTimeZone(); %End %If (Qt_5_5_0 -) static QTimeZone utc(); %End }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz /Constrained/) /ReleaseGIL/; %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &ds, QTimeZone &tz /Constrained/) /ReleaseGIL/; %End PyQt-gpl-5.5.1/sip/QtCore/qtranslator.sip0000644000076500000240000000360112613140040020324 0ustar philstaff00000000000000// qtranslator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTranslator : QObject { %TypeHeaderCode #include %End public: explicit QTranslator(QObject *parent /TransferThis/ = 0); virtual ~QTranslator(); virtual QString translate(const char *context, const char *sourceText, const char *disambiguation = 0, int n = -1) const; virtual bool isEmpty() const; bool load(const QString &fileName, const QString &directory /DocValue="''"/ = QString(), const QString &searchDelimiters /DocValue="''"/ = QString(), const QString &suffix /DocValue="''"/ = QString()) /ReleaseGIL/; bool load(const QLocale &locale, const QString &fileName, const QString &prefix /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &suffix /DocValue="''"/ = QString()) /ReleaseGIL/; bool load(const uchar *data /Array/, int len /ArraySize/, const QString &directory = QString()) /PyName=loadFromData,ReleaseGIL/; private: QTranslator(const QTranslator &); }; PyQt-gpl-5.5.1/sip/QtCore/qurl.sip0000644000076500000240000002642312613140040016744 0ustar philstaff00000000000000// qurl.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Template definition for QUrlTwoFlags. template class QUrlTwoFlags /PyQtFlags=0x1/ { // These are handled by the %ConvertToTypeCode. //QUrlTwoFlags(E1); //QUrlTwoFlags(E2); QUrlTwoFlags(); QUrlTwoFlags &operator&=(int mask); //QUrlTwoFlags &operator&=(uint mask); QUrlTwoFlags &operator|=(QUrlTwoFlags f); //QUrlTwoFlags &operator|=(E1 f); //QUrlTwoFlags &operator|=(E2 f); QUrlTwoFlags &operator^=(QUrlTwoFlags f); //QUrlTwoFlags &operator^=(E1 f); //QUrlTwoFlags &operator^=(E2 f); operator int() const; QUrlTwoFlags operator|(QUrlTwoFlags f) const; //QUrlTwoFlags operator|(E1 f) const; //QUrlTwoFlags operator|(E2 f) const; QUrlTwoFlags operator^(QUrlTwoFlags f) const; //QUrlTwoFlags operator^(E1 f) const; //QUrlTwoFlags operator^(E2 f) const; QUrlTwoFlags operator&(int mask) const; //QUrlTwoFlags operator&(uint mask) const; //QUrlTwoFlags operator&(E1 f) const; //QUrlTwoFlags operator&(E2 f) const; QUrlTwoFlags operator~() const; // These are necessary to prevent Python comparing object IDs. bool operator==(const QUrlTwoFlags &f) const; %MethodCode sipRes = (sipCpp->operator int() == a0->operator int()); %End bool operator!=(const QUrlTwoFlags &f) const; %MethodCode sipRes = (sipCpp->operator int() != a0->operator int()); %End int __bool__() const; %MethodCode sipRes = (sipCpp->operator int() != 0); %End %ConvertToTypeCode // Allow an instance of the base enums whenever a QUrlTwoFlags is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E1)) || PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E2)) || sipCanConvertToType(sipPy, sipType_QUrlTwoFlags, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E1)) || PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E2))) { *sipCppPtr = new QUrlTwoFlags(int(SIPLong_AsLong(sipPy))); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QUrlTwoFlags, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End }; class QUrl { %TypeHeaderCode #include %End %TypeCode #include %End public: enum ParsingMode { TolerantMode, StrictMode, DecodedMode, }; QUrl(); QUrl(const QString &url, QUrl::ParsingMode mode = QUrl::TolerantMode); QUrl(const QUrl ©); ~QUrl(); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->toString()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QUrl(%R)", uni); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QUrl("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } %End enum UrlFormattingOption { None, RemoveScheme, RemovePassword, RemoveUserInfo, RemovePort, RemoveAuthority, RemovePath, RemoveQuery, RemoveFragment, PreferLocalFile, StripTrailingSlash, %If (Qt_5_2_0 -) RemoveFilename, %End %If (Qt_5_2_0 -) NormalizePathSegments, %End }; typedef QUrlTwoFlags FormattingOptions; enum ComponentFormattingOption { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, EncodeReserved, DecodeReserved, FullyEncoded, FullyDecoded, }; typedef QFlags ComponentFormattingOptions; QString url(QUrlTwoFlags options = QUrl::PrettyDecoded) const; void setUrl(const QString &url, QUrl::ParsingMode mode = QUrl::TolerantMode); bool isValid() const; bool isEmpty() const; void clear(); void setScheme(const QString &scheme); QString scheme() const; void setAuthority(const QString &authority, QUrl::ParsingMode mode = QUrl::TolerantMode); QString authority(QFlags options = QUrl::PrettyDecoded) const; void setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = QUrl::TolerantMode); QString userInfo(QFlags options = QUrl::PrettyDecoded) const; %If (Qt_5_2_0 -) void setUserName(const QString &userName, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setUserName(const QString &userName, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString userName(QFlags options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString userName(QFlags options = QUrl::PrettyDecoded) const; %End %If (Qt_5_2_0 -) void setPassword(const QString &password, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setPassword(const QString &password, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString password(QFlags options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString password(QFlags options = QUrl::PrettyDecoded) const; %End %If (Qt_5_2_0 -) void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString host(QFlags options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString host(QFlags options = QUrl::PrettyDecoded) const; %End void setPort(int port); int port(int defaultPort = -1) const; %If (Qt_5_2_0 -) void setPath(const QString &path, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setPath(const QString &path, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString path(QFlags options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString path(QFlags options = QUrl::PrettyDecoded) const; %End void setFragment(const QString &fragment, QUrl::ParsingMode mode = QUrl::TolerantMode); QString fragment(QFlags options = QUrl::PrettyDecoded) const; QUrl resolved(const QUrl &relative) const; bool isRelative() const; bool isParentOf(const QUrl &url) const; static QUrl fromLocalFile(const QString &localfile); QString toLocalFile() const; QString toString(QUrlTwoFlags options = QUrl::PrettyDecoded) const; QByteArray toEncoded(QUrlTwoFlags options = QUrl::FullyEncoded) const; static QUrl fromEncoded(const QByteArray &u, QUrl::ParsingMode mode = QUrl::TolerantMode); void detach(); bool isDetached() const; bool operator<(const QUrl &url) const; bool operator==(const QUrl &url) const; bool operator!=(const QUrl &url) const; static QString fromPercentEncoding(const QByteArray &); static QByteArray toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray()); bool hasQuery() const; bool hasFragment() const; QString errorString() const; static QString fromAce(const QByteArray &); static QByteArray toAce(const QString &); static QStringList idnWhitelist(); static void setIdnWhitelist(const QStringList &); static QUrl fromUserInput(const QString &userInput); void swap(QUrl &other); %If (Qt_5_2_0 -) QString topLevelDomain(QFlags options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString topLevelDomain(QFlags options = QUrl::PrettyDecoded) const; %End bool isLocalFile() const; QString toDisplayString(QUrlTwoFlags options = QUrl::PrettyDecoded) const; void setQuery(const QString &query, QUrl::ParsingMode mode = QUrl::TolerantMode); void setQuery(const QUrlQuery &query); QString query(QFlags options = QUrl::PrettyDecoded) const; %If (Qt_5_1_0 -) static QStringList toStringList(const QList &uris, QUrlTwoFlags options = QUrl::PrettyDecoded); %End %If (Qt_5_1_0 -) static QList fromStringList(const QStringList &uris, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QUrl adjusted(QUrlTwoFlags options) const; %End %If (Qt_5_2_0 -) QString fileName(QFlags options = QUrl::FullyDecoded) const; %End %If (Qt_5_2_0 -) bool matches(const QUrl &url, QUrlTwoFlags options) const; %End %If (Qt_5_4_0 -) enum UserInputResolutionOption { DefaultResolution, AssumeLocalFile, }; %End %If (Qt_5_4_0 -) typedef QFlags UserInputResolutionOptions; %End %If (Qt_5_4_0 -) static QUrl fromUserInput(const QString &userInput, const QString &workingDirectory, QFlags options = QUrl::DefaultResolution); %End }; QFlags operator|(QUrl::ComponentFormattingOption f1, QFlags f2); QDataStream &operator<<(QDataStream &, const QUrl & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QUrl & /Constrained/) /ReleaseGIL/; QUrlTwoFlags operator|(QUrl::UrlFormattingOption f1, QUrlTwoFlags f2); QUrlTwoFlags operator|(QUrl::ComponentFormattingOption f, QUrlTwoFlags i); PyQt-gpl-5.5.1/sip/QtCore/qurlquery.sip0000644000076500000240000000475612613140040020037 0ustar philstaff00000000000000// qurlquery.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUrlQuery { %TypeHeaderCode #include %End public: QUrlQuery(); explicit QUrlQuery(const QUrl &url); explicit QUrlQuery(const QString &queryString); QUrlQuery(const QUrlQuery &other); ~QUrlQuery(); bool operator==(const QUrlQuery &other) const; bool operator!=(const QUrlQuery &other) const; void swap(QUrlQuery &other); bool isEmpty() const; bool isDetached() const; void clear(); QString query(QFlags options = QUrl::PrettyDecoded) const; void setQuery(const QString &queryString); QString toString(QFlags options = QUrl::PrettyDecoded) const; void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter); QChar queryValueDelimiter() const; QChar queryPairDelimiter() const; void setQueryItems(const QList> &query); QList> queryItems(QFlags options = QUrl::PrettyDecoded) const; bool hasQueryItem(const QString &key) const; void addQueryItem(const QString &key, const QString &value); void removeQueryItem(const QString &key); QString queryItemValue(const QString &key, QFlags options = QUrl::PrettyDecoded) const; QStringList allQueryItemValues(const QString &key, QFlags options = QUrl::PrettyDecoded) const; void removeAllQueryItems(const QString &key); static QChar defaultQueryValueDelimiter(); static QChar defaultQueryPairDelimiter(); }; PyQt-gpl-5.5.1/sip/QtCore/quuid.sip0000644000076500000240000000624312613140040017106 0ustar philstaff00000000000000// quuid.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUuid { %TypeHeaderCode #include %End public: enum Variant { VarUnknown, NCS, DCE, Microsoft, Reserved, }; enum Version { VerUnknown, Time, EmbeddedPOSIX, Md5, Name, Random, Sha1, }; QUuid(); QUuid(uint l, ushort w1, ushort w2, uchar b1 /PyInt/, uchar b2 /PyInt/, uchar b3 /PyInt/, uchar b4 /PyInt/, uchar b5 /PyInt/, uchar b6 /PyInt/, uchar b7 /PyInt/, uchar b8 /PyInt/); QUuid(const QString &); QUuid(const QByteArray &); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->toString()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QUuid(%R)", uni); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QUuid("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } %End QString toString() const; bool isNull() const; bool operator==(const QUuid &orig) const; bool operator!=(const QUuid &orig) const; bool operator<(const QUuid &other) const; bool operator>(const QUuid &other) const; static QUuid createUuid(); static QUuid createUuidV3(const QUuid &ns, const QByteArray &baseData); static QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData); static QUuid createUuidV3(const QUuid &ns, const QString &baseData); static QUuid createUuidV5(const QUuid &ns, const QString &baseData); QUuid::Variant variant() const; QUuid::Version version() const; QByteArray toByteArray() const; QByteArray toRfc4122() const; static QUuid fromRfc4122(const QByteArray &); }; QDataStream &operator<<(QDataStream &, const QUuid & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QUuid & /Constrained/) /ReleaseGIL/; %If (Qt_5_5_0 -) bool operator<=(const QUuid &lhs, const QUuid &rhs); %End %If (Qt_5_5_0 -) bool operator>=(const QUuid &lhs, const QUuid &rhs); %End PyQt-gpl-5.5.1/sip/QtCore/qvariant.sip0000644000076500000240000001077212613140040017606 0ustar philstaff00000000000000// qvariant.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVariant /AllowNone/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) // We can convert everything to a QVariant. return 1; // If it is already a QVariant then just return it. if (Py_TYPE(sipPy) == sipTypeAsPyTypeObject(sipType_QVariant)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QVariant, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } // Convert it to a QVariant. QVariant var = qpycore_PyObject_AsQVariant(sipPy, sipIsErr); if (*sipIsErr) return 0; *sipCppPtr = new QVariant(var); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQVariant(*sipCpp); %End public: enum Type { Invalid, Bool, Int, UInt, LongLong, ULongLong, Double, Char, Map, List, String, StringList, ByteArray, BitArray, Date, Time, DateTime, Url, Locale, Rect, RectF, Size, SizeF, Line, LineF, Point, PointF, RegExp, Font, Pixmap, Brush, Color, Palette, Icon, Image, Polygon, Region, Bitmap, Cursor, SizePolicy, KeySequence, Pen, TextLength, TextFormat, Matrix, Transform, Hash, Matrix4x4, Vector2D, Vector3D, Vector4D, Quaternion, EasingCurve, Uuid, ModelIndex, PolygonF, RegularExpression, %If (Qt_5_5_0 -) PersistentModelIndex, %End UserType, }; QVariant(); QVariant(QVariant::Type type /Constrained/); QVariant(SIP_PYOBJECT); %MethodCode int is_err = 0; QVariant var = qpycore_PyObject_AsQVariant(a0, &is_err); if (is_err) sipCpp = 0; else sipCpp = new QVariant(var); %End QVariant(const QVariant &other); ~QVariant(); SIP_PYOBJECT value() const; %MethodCode sipRes = qpycore_PyObject_FromQVariant(*sipCpp); %End QVariant::Type type() const; int userType() const; const char *typeName() const; bool canConvert(int targetTypeId) const; bool convert(int targetTypeId); bool isValid() const; bool isNull() const; void clear(); void load(QDataStream &ds) /ReleaseGIL/; void save(QDataStream &ds) const /ReleaseGIL/; static const char *typeToName(int typeId); static QVariant::Type nameToType(const char *name); bool operator==(const QVariant &v) const; bool operator!=(const QVariant &v) const; void swap(QVariant &other); %If (Qt_5_2_0 -) bool operator<(const QVariant &v) const; %End %If (Qt_5_2_0 -) bool operator<=(const QVariant &v) const; %End %If (Qt_5_2_0 -) bool operator>(const QVariant &v) const; %End %If (Qt_5_2_0 -) bool operator>=(const QVariant &v) const; %End }; typedef QList QVariantList /DocType="list-of-object"/; typedef QHash QVariantHash /DocType="dict-of-str-object"/; typedef QMap QVariantMap /DocType="dict-of-str-object"/; QDataStream &operator>>(QDataStream &s, QVariant &p /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &s, const QVariant &p /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &s, QVariant::Type &p /Constrained,In/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &s, const QVariant::Type p /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtCore/qvariantanimation.sip0000644000076500000240000000425112613140040021501 0ustar philstaff00000000000000// qvariantanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVariantAnimation : QAbstractAnimation { %TypeHeaderCode #include %End typedef QVector> KeyValues; public: QVariantAnimation(QObject *parent /TransferThis/ = 0); virtual ~QVariantAnimation(); QVariant startValue() const; void setStartValue(const QVariant &value); QVariant endValue() const; void setEndValue(const QVariant &value); QVariant keyValueAt(qreal step) const; void setKeyValueAt(qreal step, const QVariant &value); KeyValues keyValues() const; void setKeyValues(const KeyValues &values); QVariant currentValue() const; virtual int duration() const; void setDuration(int msecs); QEasingCurve easingCurve() const; void setEasingCurve(const QEasingCurve &easing); signals: void valueChanged(const QVariant &value); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateCurrentValue(const QVariant &value); virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const; private: QVariantAnimation(const QVariantAnimation &); }; PyQt-gpl-5.5.1/sip/QtCore/qwaitcondition.sip0000644000076500000240000000250012613140040021003 0ustar philstaff00000000000000// qwaitcondition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWaitCondition { %TypeHeaderCode #include %End public: QWaitCondition(); ~QWaitCondition(); bool wait(QMutex *mutex, unsigned long msecs = ULONG_MAX) /ReleaseGIL/; bool wait(QReadWriteLock *readWriteLock, unsigned long msecs = ULONG_MAX) /ReleaseGIL/; void wakeOne(); void wakeAll(); private: QWaitCondition(const QWaitCondition &); }; PyQt-gpl-5.5.1/sip/QtCore/qwineventnotifier.sip0000644000076500000240000000274412613140040021541 0ustar philstaff00000000000000// This is the SIP specification of the QWinEventNotifier class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_WIN) class QWinEventNotifier: QObject { %TypeHeaderCode #include %End public: explicit QWinEventNotifier(QObject *parent /TransferThis/ = 0); explicit QWinEventNotifier(Qt::HANDLE hEvent, QObject *parent /TransferThis/ = 0); ~QWinEventNotifier(); Qt::HANDLE handle() const; bool isEnabled() const; void setHandle(Qt::HANDLE hEvent); public slots: void setEnabled(bool enable); signals: void activated(Qt::HANDLE hEvent); protected: bool event(QEvent *e); private: QWinEventNotifier(const QWinEventNotifier &); }; %End PyQt-gpl-5.5.1/sip/QtCore/qxmlstream.sip0000644000076500000240000003410012613140040020145 0ustar philstaff00000000000000// qxmlstream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlStreamAttribute { %TypeHeaderCode #include %End public: QXmlStreamAttribute(); QXmlStreamAttribute(const QString &qualifiedName, const QString &value); QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value); QXmlStreamAttribute(const QXmlStreamAttribute &); ~QXmlStreamAttribute(); QStringRef namespaceUri() const; QStringRef name() const; QStringRef qualifiedName() const; QStringRef prefix() const; QStringRef value() const; bool isDefault() const; bool operator==(const QXmlStreamAttribute &other) const; bool operator!=(const QXmlStreamAttribute &other) const; }; class QXmlStreamAttributes { %TypeHeaderCode #include %End public: QXmlStreamAttributes(); QStringRef value(const QString &namespaceUri, const QString &name) const; QStringRef value(const QString &qualifiedName) const; void append(const QString &namespaceUri, const QString &name, const QString &value); void append(const QString &qualifiedName, const QString &value); void append(const QXmlStreamAttribute &attribute); bool hasAttribute(const QString &qualifiedName) const; bool hasAttribute(const QString &namespaceUri, const QString &name) const; // Methods inherited from QVector and Python special methods. // Keep in sync with QPolygon and QPolygonF. // This is picked up with "using" by QXmlStreamAttributes. //void append(const QXmlStreamAttribute &value); const QXmlStreamAttribute &at(int i) const; void clear(); bool contains(const QXmlStreamAttribute &value) const; int count(const QXmlStreamAttribute &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QXmlStreamAttribute &value, int size = -1); QXmlStreamAttribute &first(); int indexOf(const QXmlStreamAttribute &value, int from = 0) const; void insert(int i, const QXmlStreamAttribute &value); bool isEmpty() const; QXmlStreamAttribute &last(); int lastIndexOf(const QXmlStreamAttribute &value, int from = -1) const; // Note the Qt return type is QVector. We can't do the // usual trick because there is no QXmlStreamAttributes ctor that takes a // QVector argument. We could use handwritten code but we // don't bother. //QXmlStreamAttributes mid(int pos, int length = -1) const; void prepend(const QXmlStreamAttribute &value); void remove(int i); void remove(int i, int count); void replace(int i, const QXmlStreamAttribute &value); int size() const; // These are hidden by other implementations in QXmlStreamAttributes. //QXmlStreamAttribute value(int i) const; //QXmlStreamAttribute value(int i, const QXmlStreamAttribute &defaultValue) const; bool operator!=(const QXmlStreamAttributes &other) const; // Note the Qt return type is QVector. We can't do the // usual trick because there is no QXmlStreamAttributes ctor that takes a // QVector argument. We could use handwritten code but we // don't bother. //QXmlStreamAttributes operator+(const QXmlStreamAttributes &other) const; QXmlStreamAttributes &operator+=(const QXmlStreamAttributes &other); QXmlStreamAttributes &operator+=(const QXmlStreamAttribute &value); bool operator==(const QXmlStreamAttributes &other) const; QXmlStreamAttribute &operator[](int i); %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QXmlStreamAttribute(sipCpp->operator[]((int)idx)); %End // Some additional Python special methods. void __setitem__(int i, const QXmlStreamAttribute &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QXmlStreamAttributes &list); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QVector::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } %End QXmlStreamAttributes &operator[](SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QXmlStreamAttributes(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QXmlStreamAttribute &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End }; class QXmlStreamNamespaceDeclaration { %TypeHeaderCode #include %End public: QXmlStreamNamespaceDeclaration(); QXmlStreamNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &); QXmlStreamNamespaceDeclaration(const QString &prefix, const QString &namespaceUri); ~QXmlStreamNamespaceDeclaration(); QStringRef prefix() const; QStringRef namespaceUri() const; bool operator==(const QXmlStreamNamespaceDeclaration &other) const; bool operator!=(const QXmlStreamNamespaceDeclaration &other) const; }; typedef QVector QXmlStreamNamespaceDeclarations; class QXmlStreamNotationDeclaration { %TypeHeaderCode #include %End public: QXmlStreamNotationDeclaration(); QXmlStreamNotationDeclaration(const QXmlStreamNotationDeclaration &); ~QXmlStreamNotationDeclaration(); QStringRef name() const; QStringRef systemId() const; QStringRef publicId() const; bool operator==(const QXmlStreamNotationDeclaration &other) const; bool operator!=(const QXmlStreamNotationDeclaration &other) const; }; typedef QVector QXmlStreamNotationDeclarations; class QXmlStreamEntityDeclaration { %TypeHeaderCode #include %End public: QXmlStreamEntityDeclaration(); QXmlStreamEntityDeclaration(const QXmlStreamEntityDeclaration &); ~QXmlStreamEntityDeclaration(); QStringRef name() const; QStringRef notationName() const; QStringRef systemId() const; QStringRef publicId() const; QStringRef value() const; bool operator==(const QXmlStreamEntityDeclaration &other) const; bool operator!=(const QXmlStreamEntityDeclaration &other) const; }; typedef QVector QXmlStreamEntityDeclarations; class QXmlStreamEntityResolver { %TypeHeaderCode #include %End public: virtual ~QXmlStreamEntityResolver(); virtual QString resolveUndeclaredEntity(const QString &name); }; class QXmlStreamReader { %TypeHeaderCode #include %End public: enum TokenType { NoToken, Invalid, StartDocument, EndDocument, StartElement, EndElement, Characters, Comment, DTD, EntityReference, ProcessingInstruction, }; QXmlStreamReader(); explicit QXmlStreamReader(QIODevice *device); explicit QXmlStreamReader(const QByteArray &data); explicit QXmlStreamReader(const QString &data); ~QXmlStreamReader(); void setDevice(QIODevice *device); QIODevice *device() const; void addData(const QByteArray &data); void addData(const QString &data); void clear(); bool atEnd() const; QXmlStreamReader::TokenType readNext(); QXmlStreamReader::TokenType tokenType() const; QString tokenString() const; void setNamespaceProcessing(bool); bool namespaceProcessing() const; bool isStartDocument() const; bool isEndDocument() const; bool isStartElement() const; bool isEndElement() const; bool isCharacters() const; bool isWhitespace() const; bool isCDATA() const; bool isComment() const; bool isDTD() const; bool isEntityReference() const; bool isProcessingInstruction() const; bool isStandaloneDocument() const; QStringRef documentVersion() const; QStringRef documentEncoding() const; qint64 lineNumber() const; qint64 columnNumber() const; qint64 characterOffset() const; QXmlStreamAttributes attributes() const; enum ReadElementTextBehaviour { ErrorOnUnexpectedElement, IncludeChildElements, SkipChildElements, }; QString readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = QXmlStreamReader::ErrorOnUnexpectedElement); QStringRef name() const; QStringRef namespaceUri() const; QStringRef qualifiedName() const; QStringRef prefix() const; QStringRef processingInstructionTarget() const; QStringRef processingInstructionData() const; QStringRef text() const; QXmlStreamNamespaceDeclarations namespaceDeclarations() const; void addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaraction); void addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclaractions); QXmlStreamNotationDeclarations notationDeclarations() const; QXmlStreamEntityDeclarations entityDeclarations() const; QStringRef dtdName() const; QStringRef dtdPublicId() const; QStringRef dtdSystemId() const; enum Error { NoError, UnexpectedElementError, CustomError, NotWellFormedError, PrematureEndOfDocumentError, }; void raiseError(const QString &message /DocValue="''"/ = QString()); QString errorString() const; QXmlStreamReader::Error error() const; bool hasError() const; void setEntityResolver(QXmlStreamEntityResolver *resolver /KeepReference/); QXmlStreamEntityResolver *entityResolver() const; bool readNextStartElement(); void skipCurrentElement(); private: QXmlStreamReader(const QXmlStreamReader &); }; class QXmlStreamWriter { %TypeHeaderCode #include %End public: QXmlStreamWriter(); explicit QXmlStreamWriter(QIODevice *device); explicit QXmlStreamWriter(QByteArray *array); ~QXmlStreamWriter(); void setDevice(QIODevice *device); QIODevice *device() const; void setCodec(QTextCodec *codec /KeepReference/); void setCodec(const char *codecName); QTextCodec *codec() const; void setAutoFormatting(bool); bool autoFormatting() const; void setAutoFormattingIndent(int spaces); int autoFormattingIndent() const; void writeAttribute(const QString &qualifiedName, const QString &value); void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value); void writeAttribute(const QXmlStreamAttribute &attribute); void writeAttributes(const QXmlStreamAttributes &attributes); void writeCDATA(const QString &text); void writeCharacters(const QString &text); void writeComment(const QString &text); void writeDTD(const QString &dtd); void writeEmptyElement(const QString &qualifiedName); void writeEmptyElement(const QString &namespaceUri, const QString &name); void writeTextElement(const QString &qualifiedName, const QString &text); void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text); void writeEndDocument(); void writeEndElement(); void writeEntityReference(const QString &name); void writeNamespace(const QString &namespaceUri, const QString &prefix /DocValue="''"/ = QString()); void writeDefaultNamespace(const QString &namespaceUri); void writeProcessingInstruction(const QString &target, const QString &data /DocValue="''"/ = QString()); void writeStartDocument(); void writeStartDocument(const QString &version); void writeStartDocument(const QString &version, bool standalone); void writeStartElement(const QString &qualifiedName); void writeStartElement(const QString &namespaceUri, const QString &name); void writeCurrentToken(const QXmlStreamReader &reader); bool hasError() const; private: QXmlStreamWriter(const QXmlStreamWriter &); }; PyQt-gpl-5.5.1/sip/QtDBus/0000755000076500000240000000000012613140040015202 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtDBus/qdbusabstractadaptor.sip0000644000076500000240000000236712613140040022144 0ustar philstaff00000000000000// qdbusabstractadaptor.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusAbstractAdaptor : QObject { %TypeHeaderCode #include %End protected: explicit QDBusAbstractAdaptor(QObject *parent /TransferThis/); public: virtual ~QDBusAbstractAdaptor(); protected: void setAutoRelaySignals(bool enable); bool autoRelaySignals() const; }; PyQt-gpl-5.5.1/sip/QtDBus/qdbusabstractinterface.sip0000644000076500000240000001466112613140040022452 0ustar philstaff00000000000000// qdbusabstractinterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusAbstractInterface : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QDBusPendingCallWatcher, &sipType_QDBusPendingCallWatcher, -1, 1}, {sipName_QDBusAbstractAdaptor, &sipType_QDBusAbstractAdaptor, -1, 2}, {sipName_QDBusAbstractInterface, &sipType_QDBusAbstractInterface, 4, 3}, {sipName_QDBusServiceWatcher, &sipType_QDBusServiceWatcher, -1, -1}, {sipName_QDBusConnectionInterface, &sipType_QDBusConnectionInterface, -1, 5}, {sipName_QDBusInterface, &sipType_QDBusInterface, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: virtual ~QDBusAbstractInterface(); bool isValid() const; QDBusConnection connection() const; QString service() const; QString path() const; QString interface() const; QDBusError lastError() const; void setTimeout(int timeout); int timeout() const; QDBusMessage call(const QString &method, const QVariant &arg1 = QVariant(), const QVariant &arg2 = QVariant(), const QVariant &arg3 = QVariant(), const QVariant &arg4 = QVariant(), const QVariant &arg5 = QVariant(), const QVariant &arg6 = QVariant(), const QVariant &arg7 = QVariant(), const QVariant &arg8 = QVariant()) /ReleaseGIL/; QDBusMessage call(QDBus::CallMode mode, const QString &method, const QVariant &arg1 = QVariant(), const QVariant &arg2 = QVariant(), const QVariant &arg3 = QVariant(), const QVariant &arg4 = QVariant(), const QVariant &arg5 = QVariant(), const QVariant &arg6 = QVariant(), const QVariant &arg7 = QVariant(), const QVariant &arg8 = QVariant()) /ReleaseGIL/; QDBusMessage callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList &args) /ReleaseGIL/; bool callWithCallback(const QString &method, const QList &args, SIP_PYOBJECT returnMethod /DocType="slot"/, SIP_PYOBJECT errorMethod /DocType="slot"/); %MethodCode QObject *receiver; QByteArray return_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a2, &receiver, return_slot)) == sipErrorNone) { QObject *error_receiver; QByteArray error_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a3, &error_receiver, error_slot)) == sipErrorNone) { if (receiver == error_receiver) { sipRes = sipCpp->callWithCallback(*a0, *a1, receiver, return_slot.constData(), error_slot.constData()); } else { PyErr_SetString(PyExc_ValueError, "the return and error methods must be bound to the same QObject instance"); sipError = sipErrorFail; } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(3, a3); } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End bool callWithCallback(const QString &method, QList &args, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a2, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->callWithCallback(*a0, *a1, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QDBusPendingCall asyncCall(const QString &method, const QVariant &arg1 = QVariant(), const QVariant &arg2 = QVariant(), const QVariant &arg3 = QVariant(), const QVariant &arg4 = QVariant(), const QVariant &arg5 = QVariant(), const QVariant &arg6 = QVariant(), const QVariant &arg7 = QVariant(), const QVariant &arg8 = QVariant()); QDBusPendingCall asyncCallWithArgumentList(const QString &method, const QList &args); protected: QDBusAbstractInterface(const QString &service, const QString &path, const char *interface, const QDBusConnection &connection, QObject *parent /TransferThis/); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); }; %ModuleHeaderCode #include "qpydbus_api.h" // Imports from QtCore. typedef PyObject *(*pyqt5_qtdbus_from_qvariant_by_type_t)(QVariant &, PyObject *); extern pyqt5_qtdbus_from_qvariant_by_type_t pyqt5_qtdbus_from_qvariant_by_type; typedef sipErrorState (*pyqt5_qtdbus_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qtdbus_get_pyqtslot_parts_t pyqt5_qtdbus_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtdbus_from_qvariant_by_type_t pyqt5_qtdbus_from_qvariant_by_type; pyqt5_qtdbus_get_pyqtslot_parts_t pyqt5_qtdbus_get_pyqtslot_parts; %End %PostInitialisationCode qpydbus_post_init(); // Imports from QtCore. pyqt5_qtdbus_from_qvariant_by_type = (pyqt5_qtdbus_from_qvariant_by_type_t)sipImportSymbol("pyqt5_from_qvariant_by_type"); pyqt5_qtdbus_get_pyqtslot_parts = (pyqt5_qtdbus_get_pyqtslot_parts_t)sipImportSymbol("pyqt5_get_pyqtslot_parts"); %End PyQt-gpl-5.5.1/sip/QtDBus/qdbusargument.sip0000644000076500000240000001156212613140040020605 0ustar philstaff00000000000000// qdbusargument.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusArgument { %TypeHeaderCode #include %End %TypeCode #include static PyObject *qdbusargument_add(QDBusArgument *arg, PyObject *obj, int mtype) { int iserr = 0; if (PyLong_CheckExact(obj) #if PY_MAJOR_VERSION < 3 || PyInt_CheckExact(obj) #endif ) { if (mtype == QMetaType::UChar || mtype == QMetaType::UShort || mtype == QMetaType::UInt || mtype == QMetaType::ULongLong) { // Handle the unsigned values. #if defined(HAVE_LONG_LONG) unsigned PY_LONG_LONG v = PyLong_AsUnsignedLongLongMask(obj); #else unsigned long v = PyLong_AsUnsignedLongMask(obj); #endif switch (mtype) { case QMetaType::UChar: *arg << (uchar)v; break; case QMetaType::UShort: *arg << (ushort)v; break; case QMetaType::UInt: *arg << (uint)v; break; case QMetaType::ULongLong: *arg << (qulonglong)v; break; } } else if (mtype == QMetaType::Short || mtype == QMetaType::Int || mtype == QMetaType::LongLong) { // Handle the signed values. #if defined(HAVE_LONG_LONG) PY_LONG_LONG v = PyLong_AsLongLong(obj); #else long v = PyLong_AsLong(obj); #endif switch (mtype) { case QMetaType::Short: *arg << (short)v; break; case QMetaType::Int: *arg << (int)v; break; case QMetaType::LongLong: *arg << (qlonglong)v; break; } } else { PyErr_Format(PyExc_ValueError, "%d is an invalid QMetaType::Type for an interger object", mtype); iserr = 1; } } else if (mtype == QMetaType::QStringList) { // A QStringList has to be handled explicitly to prevent it being seen // as a vialiant list. int value_state; QStringList *qsl = reinterpret_cast( sipForceConvertToType(obj, sipType_QStringList, 0, SIP_NOT_NONE, &value_state, &iserr)); if (!iserr) { arg->beginArray(QMetaType::QString); for (int i = 0; i < qsl->count(); ++i) *arg << qsl->at(i); arg->endArray(); sipReleaseType(qsl, sipType_QStringList, value_state); } } else { int value_state; QVariant *qv = reinterpret_cast( sipForceConvertToType(obj, sipType_QVariant, 0, SIP_NOT_NONE, &value_state, &iserr)); if (!iserr) { // This is an internal method. If it proves to be a problem then we // will have to handle each type explicitly. arg->appendVariant(*qv); sipReleaseType(qv, sipType_QVariant, value_state); } } if (iserr) return 0; Py_INCREF(Py_None); return Py_None; } %End public: QDBusArgument(); QDBusArgument(const QDBusArgument &other); QDBusArgument(SIP_PYOBJECT arg, int id = QMetaType::Int); %MethodCode sipCpp = new QDBusArgument(); PyObject *res = qdbusargument_add(sipCpp, a0, a1); if (res) { Py_DECREF(res); } else { delete sipCpp; sipCpp = 0; } %End ~QDBusArgument(); SIP_PYOBJECT add(SIP_PYOBJECT arg, int id = QMetaType::Int) /DocType=""/; %MethodCode sipRes = qdbusargument_add(sipCpp, a0, a1); %End void beginStructure(); void endStructure(); void beginArray(int id); void endArray(); void beginMap(int kid, int vid); void endMap(); void beginMapEntry(); void endMapEntry(); }; PyQt-gpl-5.5.1/sip/QtDBus/qdbusconnection.sip0000644000076500000240000002165112613140040021122 0ustar philstaff00000000000000// qdbusconnection.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QDBus { %TypeHeaderCode #include %End enum CallMode { NoBlock, Block, BlockWithGui, AutoDetect, }; }; class QDBusConnection { %TypeHeaderCode #include %End public: enum BusType { SessionBus, SystemBus, ActivationBus, }; enum RegisterOption { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ExportScriptableInvokables, ExportScriptableContents, ExportNonScriptableSlots, ExportNonScriptableSignals, ExportNonScriptableProperties, ExportNonScriptableInvokables, ExportNonScriptableContents, ExportAllSlots, ExportAllSignals, ExportAllProperties, ExportAllInvokables, ExportAllContents, ExportAllSignal, ExportChildObjects, }; enum UnregisterMode { UnregisterNode, UnregisterTree, }; typedef QFlags RegisterOptions; enum ConnectionCapability { UnixFileDescriptorPassing, }; typedef QFlags ConnectionCapabilities; explicit QDBusConnection(const QString &name); QDBusConnection(const QDBusConnection &other); ~QDBusConnection(); bool isConnected() const; QString baseService() const; QDBusError lastError() const; QString name() const; QFlags connectionCapabilities() const; bool send(const QDBusMessage &message) const; bool callWithCallback(const QDBusMessage &message, SIP_PYOBJECT returnMethod /DocType="slot"/, SIP_PYOBJECT errorMethod /DocType="slot"/, int timeout = -1) const; %MethodCode QObject *receiver; QByteArray return_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a1, &receiver, return_slot)) == sipErrorNone) { QObject *error_receiver; QByteArray error_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a2, &error_receiver, error_slot)) == sipErrorNone) { if (receiver == error_receiver) { sipRes = sipCpp->callWithCallback(*a0, receiver, return_slot.constData(), error_slot.constData(), a3); } else { PyErr_SetString(PyExc_ValueError, "the return and error methods must be bound to the same QObject instance"); sipError = sipErrorFail; } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const /ReleaseGIL/; QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const; bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a4, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(4, a4); } %End bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a5, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, *a4, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(5, a5); } %End bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a6, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, *a4, *a5, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(6, a6); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a4, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(4, a4); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a5, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, *a4, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(5, a5); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a6, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, *a4, *a5, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(6, a6); } %End bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = QDBusConnection::ExportAdaptors); %If (Qt_5_5_0 -) bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = QDBusConnection::ExportAdaptors); %End void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = QDBusConnection::UnregisterNode); QObject *objectRegisteredAt(const QString &path) const; bool registerService(const QString &serviceName); bool unregisterService(const QString &serviceName); QDBusConnectionInterface *interface() const; static QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name) /ReleaseGIL/; static QDBusConnection connectToBus(const QString &address, const QString &name) /ReleaseGIL/; static QDBusConnection connectToPeer(const QString &address, const QString &name) /ReleaseGIL/; static void disconnectFromBus(const QString &name) /ReleaseGIL/; static void disconnectFromPeer(const QString &name) /ReleaseGIL/; static QByteArray localMachineId(); static QDBusConnection sessionBus(); static QDBusConnection systemBus(); static QDBusConnection sender(); }; QFlags operator|(QDBusConnection::RegisterOption f1, QFlags f2); QFlags operator|(QDBusConnection::RegisterOption f1, QDBusConnection::RegisterOption f2); PyQt-gpl-5.5.1/sip/QtDBus/qdbusconnectioninterface.sip0000644000076500000240000000536112613140040023003 0ustar philstaff00000000000000// qdbusconnectioninterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusConnectionInterface : QDBusAbstractInterface { %TypeHeaderCode #include %End QDBusConnectionInterface(const QDBusConnection &connection, QObject *parent /TransferThis/); virtual ~QDBusConnectionInterface(); public: enum ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService, }; enum ServiceReplacementOptions { DontAllowReplacement, AllowReplacement, }; enum RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued, }; QDBusReply registeredServiceNames() const /ReleaseGIL/; QDBusReply isServiceRegistered(const QString &serviceName) const /ReleaseGIL/; QDBusReply serviceOwner(const QString &name) const /ReleaseGIL/; QDBusReply unregisterService(const QString &serviceName) /ReleaseGIL/; QDBusReply registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = QDBusConnectionInterface::DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = QDBusConnectionInterface::DontAllowReplacement) /ReleaseGIL/; QDBusReply servicePid(const QString &serviceName) const /ReleaseGIL/; QDBusReply serviceUid(const QString &serviceName) const /ReleaseGIL/; QDBusReply startService(const QString &name) /ReleaseGIL/; signals: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); void callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call); protected: virtual void connectNotify(const QMetaMethod &); virtual void disconnectNotify(const QMetaMethod &); }; PyQt-gpl-5.5.1/sip/QtDBus/qdbuserror.sip0000644000076500000240000000353512613140040020115 0ustar philstaff00000000000000// qdbuserror.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusError { %TypeHeaderCode #include %End public: enum ErrorType { NoError, Other, Failed, NoMemory, ServiceUnknown, NoReply, BadAddress, NotSupported, LimitsExceeded, AccessDenied, NoServer, Timeout, NoNetwork, AddressInUse, Disconnected, InvalidArgs, UnknownMethod, TimedOut, InvalidSignature, UnknownInterface, InternalError, UnknownObject, InvalidService, InvalidObjectPath, InvalidInterface, InvalidMember, UnknownProperty, PropertyReadOnly, }; QDBusError(const QDBusError &other); QDBusError::ErrorType type() const; QString name() const; QString message() const; bool isValid() const; static QString errorString(QDBusError::ErrorType error); }; PyQt-gpl-5.5.1/sip/QtDBus/qdbusextratypes.sip0000644000076500000240000000444412613140040021174 0ustar philstaff00000000000000// qdbusextratypes.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusObjectPath { %TypeHeaderCode #include %End public: QDBusObjectPath(); explicit QDBusObjectPath(const QString &objectPath); QString path() const; void setPath(const QString &objectPath); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp, 0); %End }; bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); bool operator!=(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); bool operator<(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); class QDBusSignature { %TypeHeaderCode #include %End public: QDBusSignature(); explicit QDBusSignature(const QString &dBusSignature); QString signature() const; void setSignature(const QString &dBusSignature); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp, 0); %End }; bool operator==(const QDBusSignature &lhs, const QDBusSignature &rhs); bool operator!=(const QDBusSignature &lhs, const QDBusSignature &rhs); bool operator<(const QDBusSignature &lhs, const QDBusSignature &rhs); class QDBusVariant { %TypeHeaderCode #include %End public: QDBusVariant(); explicit QDBusVariant(const QVariant &dBusVariant); QVariant variant() const; void setVariant(const QVariant &dBusVariant); }; bool operator==(const QDBusVariant &v1, const QDBusVariant &v2); PyQt-gpl-5.5.1/sip/QtDBus/qdbusinterface.sip0000644000076500000240000000242312613140040020717 0ustar philstaff00000000000000// qdbusinterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusInterface : QDBusAbstractInterface { %TypeHeaderCode #include %End public: QDBusInterface(const QString &service, const QString &path, const QString &interface = QString(), const QDBusConnection &connection = QDBusConnection::sessionBus(), QObject *parent /TransferThis/ = 0); virtual ~QDBusInterface(); }; PyQt-gpl-5.5.1/sip/QtDBus/qdbusmessage.sip0000644000076500000240000000523412613140040020406 0ustar philstaff00000000000000// qdbusmessage.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusMessage { %TypeHeaderCode #include %End public: enum MessageType { InvalidMessage, MethodCallMessage, ReplyMessage, ErrorMessage, SignalMessage, }; QDBusMessage(); QDBusMessage(const QDBusMessage &other); ~QDBusMessage(); static QDBusMessage createSignal(const QString &path, const QString &interface, const QString &name); static QDBusMessage createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method); static QDBusMessage createError(const QString &name, const QString &msg); static QDBusMessage createError(const QDBusError &error); static QDBusMessage createError(QDBusError::ErrorType type, const QString &msg); QDBusMessage createReply(const QList &arguments = QList()) const; QDBusMessage createReply(const QVariant &argument) const; QDBusMessage createErrorReply(const QString name, const QString &msg) const; QDBusMessage createErrorReply(const QDBusError &error) const; QDBusMessage createErrorReply(QDBusError::ErrorType type, const QString &msg) const; QString service() const; QString path() const; QString interface() const; QString member() const; QString errorName() const; QString errorMessage() const; QDBusMessage::MessageType type() const; QString signature() const; bool isReplyRequired() const; void setDelayedReply(bool enable) const; bool isDelayedReply() const; void setAutoStartService(bool enable); bool autoStartService() const; void setArguments(const QList &arguments); QList arguments() const; QDBusMessage &operator<<(const QVariant &arg); }; PyQt-gpl-5.5.1/sip/QtDBus/qdbuspendingcall.sip0000644000076500000240000000327412613140040021244 0ustar philstaff00000000000000// qdbuspendingcall.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusPendingCall { %TypeHeaderCode #include %End public: QDBusPendingCall(const QDBusPendingCall &other); ~QDBusPendingCall(); static QDBusPendingCall fromError(const QDBusError &error); static QDBusPendingCall fromCompletedCall(const QDBusMessage &message); void swap(QDBusPendingCall &other); private: QDBusPendingCall(); }; class QDBusPendingCallWatcher : QObject, QDBusPendingCall { %TypeHeaderCode #include %End public: QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent /TransferThis/ = 0); virtual ~QDBusPendingCallWatcher(); bool isFinished() const; void waitForFinished() /ReleaseGIL/; signals: void finished(QDBusPendingCallWatcher *self); }; PyQt-gpl-5.5.1/sip/QtDBus/qdbusservicewatcher.sip0000644000076500000240000000501212613140040021772 0ustar philstaff00000000000000// qdbusservicewatcher.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusServiceWatcher : QObject { %TypeHeaderCode #include %End public: enum WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange, }; typedef QFlags WatchMode; explicit QDBusServiceWatcher(QObject *parent /TransferThis/ = 0); QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = QDBusServiceWatcher::WatchForOwnerChange, QObject *parent /TransferThis/ = 0); virtual ~QDBusServiceWatcher(); QStringList watchedServices() const; void setWatchedServices(const QStringList &services); void addWatchedService(const QString &newService); bool removeWatchedService(const QString &service); QFlags watchMode() const; void setWatchMode(QFlags mode); QDBusConnection connection() const; void setConnection(const QDBusConnection &connection); signals: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); void serviceOwnerChanged(const QString &service, const QString &oldOwner, const QString &newOwner); private: QDBusServiceWatcher(const QDBusServiceWatcher &); }; QFlags operator|(QDBusServiceWatcher::WatchModeFlag f1, QFlags f2); QFlags operator|(QDBusServiceWatcher::WatchModeFlag f1, QDBusServiceWatcher::WatchModeFlag f2); PyQt-gpl-5.5.1/sip/QtDBus/qdbusunixfiledescriptor.sip0000644000076500000240000000263412613140040022705 0ustar philstaff00000000000000// qdbusunixfiledescriptor.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusUnixFileDescriptor { %TypeHeaderCode #include %End public: QDBusUnixFileDescriptor(); explicit QDBusUnixFileDescriptor(int fileDescriptor); QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other); ~QDBusUnixFileDescriptor(); bool isValid() const; int fileDescriptor() const; void setFileDescriptor(int fileDescriptor); static bool isSupported(); void swap(QDBusUnixFileDescriptor &other); }; PyQt-gpl-5.5.1/sip/QtDBus/qpydbuspendingreply.sip0000644000076500000240000000330612613140040022031 0ustar philstaff00000000000000// This is the SIP specification of the QPyDBusPendingReply class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDBusPendingReply : QDBusPendingCall /PyName=QDBusPendingReply/ { %TypeHeaderCode #include %End public: QPyDBusPendingReply(); QPyDBusPendingReply(const QPyDBusPendingReply &other); QPyDBusPendingReply(const QDBusPendingCall &call); QPyDBusPendingReply(const QDBusMessage &reply); // The /ReleaseGIL/ annotation is needed because QDBusPendingCall has an // internal mutex. QVariant argumentAt(int index) const /ReleaseGIL/; QDBusError error() const /ReleaseGIL/; bool isError() const /ReleaseGIL/; bool isFinished() const /ReleaseGIL/; bool isValid() const /ReleaseGIL/; QDBusMessage reply() const /ReleaseGIL/; void waitForFinished() /ReleaseGIL/; SIP_PYOBJECT value(SIP_PYOBJECT type /DocValue="None"/ = 0) const /HoldGIL/; }; PyQt-gpl-5.5.1/sip/QtDBus/qpydbusreply.sip0000644000076500000240000001224112613140040020462 0ustar philstaff00000000000000// This is the SIP specification of the QPyDBusReply class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDBusReply /PyName=QDBusReply/ { %TypeHeaderCode #include %End public: QPyDBusReply(const QDBusMessage &reply) /HoldGIL/; QPyDBusReply(const QDBusPendingCall &call) /HoldGIL/; QPyDBusReply(const QDBusError &error); QPyDBusReply(const QPyDBusReply &other) /HoldGIL/; ~QPyDBusReply() /HoldGIL/; const QDBusError &error() const /HoldGIL/; bool isValid() const /HoldGIL/; SIP_PYOBJECT value(SIP_PYOBJECT type /DocValue="None"/ = 0) const /HoldGIL/; }; template %MappedType QDBusReply /DocType="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { // Convert the value to a Python object. TYPE *value = new TYPE(sipCpp->value()); if ((value_obj = sipConvertFromNewType(value, sipType_TYPE, NULL)) == NULL) { delete value; return NULL; } } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /DocType="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode Py_INCREF(Py_None); QPyDBusReply *reply = new QPyDBusReply(Py_None, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /DocType="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = PyBool_FromLong(sipCpp->value())) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /DocType="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = PyLong_FromUnsignedLong(sipCpp->value())) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /DocType="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = sipConvertFromEnum(sipCpp->value(), sipType_QDBusConnectionInterface_RegisterServiceReply)) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; PyQt-gpl-5.5.1/sip/QtDBus/QtDBusmod.sip0000644000076500000240000000441012613140040017560 0ustar philstaff00000000000000// QtDBusmod.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtDBus, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qdbusabstractadaptor.sip %Include qdbusabstractinterface.sip %Include qdbusargument.sip %Include qdbusconnection.sip %Include qdbusconnectioninterface.sip %Include qdbuserror.sip %Include qdbusextratypes.sip %Include qdbusinterface.sip %Include qdbusmessage.sip %Include qdbuspendingcall.sip %Include qdbusservicewatcher.sip %Include qdbusunixfiledescriptor.sip %Include qpydbuspendingreply.sip %Include qpydbusreply.sip PyQt-gpl-5.5.1/sip/QtDesigner/0000755000076500000240000000000012613140040016105 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtDesigner/abstractactioneditor.sip0000644000076500000240000000272412613140040023037 0ustar philstaff00000000000000// abstractactioneditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerActionEditorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerActionEditorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = 0); virtual ~QDesignerActionEditorInterface(); virtual QDesignerFormEditorInterface *core() const; virtual void manageAction(QAction *action) = 0; virtual void unmanageAction(QAction *action) = 0; public slots: virtual void setFormWindow(QDesignerFormWindowInterface *formWindow /KeepReference/) = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractformbuilder.sip0000644000076500000240000000266612613140040022672 0ustar philstaff00000000000000// abstractformbuilder.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractFormBuilder { %TypeHeaderCode #include %End public: QAbstractFormBuilder(); virtual ~QAbstractFormBuilder(); virtual QWidget *load(QIODevice *device, QWidget *parent /TransferThis/ = 0) /Factory/; virtual void save(QIODevice *dev, QWidget *widget); void setWorkingDirectory(const QDir &directory); QDir workingDirectory() const; QString errorString() const; private: QAbstractFormBuilder(const QAbstractFormBuilder &other); }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractformeditor.sip0000644000076500000240000000374112613140040022525 0ustar philstaff00000000000000// abstractformeditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormEditorInterface : QObject { %TypeHeaderCode #include %End public: QDesignerFormEditorInterface(QObject *parent /TransferThis/ = 0); virtual ~QDesignerFormEditorInterface(); QExtensionManager *extensionManager() const; QWidget *topLevel() const; QDesignerWidgetBoxInterface *widgetBox() const; QDesignerPropertyEditorInterface *propertyEditor() const; QDesignerObjectInspectorInterface *objectInspector() const; QDesignerFormWindowManagerInterface *formWindowManager() const; QDesignerActionEditorInterface *actionEditor() const; void setWidgetBox(QDesignerWidgetBoxInterface *widgetBox /KeepReference/); void setPropertyEditor(QDesignerPropertyEditorInterface *propertyEditor /KeepReference/); void setObjectInspector(QDesignerObjectInspectorInterface *objectInspector /KeepReference/); void setActionEditor(QDesignerActionEditorInterface *actionEditor /KeepReference/); private: QDesignerFormEditorInterface(const QDesignerFormEditorInterface &other); }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractformwindow.sip0000644000076500000240000001121512613140040022541 0ustar philstaff00000000000000// abstractformwindow.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowInterface : QWidget /Abstract/ { %TypeHeaderCode #include %End public: enum FeatureFlag { EditFeature, GridFeature, TabOrderFeature, DefaultFeature, }; typedef QFlags Feature; QDesignerFormWindowInterface(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QDesignerFormWindowInterface(); virtual QString fileName() const = 0; virtual QDir absoluteDir() const = 0; virtual QString contents() const = 0; virtual bool setContents(QIODevice *dev, QString *errorMessage = 0) = 0; virtual QFlags features() const = 0; virtual bool hasFeature(QFlags f) const = 0; virtual QString author() const = 0; virtual void setAuthor(const QString &author) = 0; virtual QString comment() const = 0; virtual void setComment(const QString &comment) = 0; virtual void layoutDefault(int *margin, int *spacing) = 0; virtual void setLayoutDefault(int margin, int spacing) = 0; virtual void layoutFunction(QString *margin /Out/, QString *spacing /Out/) = 0; virtual void setLayoutFunction(const QString &margin, const QString &spacing) = 0; virtual QString pixmapFunction() const = 0; virtual void setPixmapFunction(const QString &pixmapFunction) = 0; virtual QString exportMacro() const = 0; virtual void setExportMacro(const QString &exportMacro) = 0; virtual QStringList includeHints() const = 0; virtual void setIncludeHints(const QStringList &includeHints) = 0; virtual QDesignerFormEditorInterface *core() const; virtual QDesignerFormWindowCursorInterface *cursor() const = 0; virtual QPoint grid() const = 0; virtual QWidget *mainContainer() const = 0; virtual void setMainContainer(QWidget *mainContainer /KeepReference/) = 0; virtual bool isManaged(QWidget *widget) const = 0; virtual bool isDirty() const = 0; static QDesignerFormWindowInterface *findFormWindow(QWidget *w); static QDesignerFormWindowInterface *findFormWindow(QObject *obj); virtual void emitSelectionChanged() = 0; virtual QStringList resourceFiles() const = 0; virtual void addResourceFile(const QString &path) = 0; virtual void removeResourceFile(const QString &path) = 0; public slots: virtual void manageWidget(QWidget *widget) = 0; virtual void unmanageWidget(QWidget *widget) = 0; virtual void setFeatures(QFlags f) = 0; virtual void setDirty(bool dirty) = 0; virtual void clearSelection(bool update = true) = 0; virtual void selectWidget(QWidget *widget, bool select = true) = 0; virtual void setGrid(const QPoint &grid) = 0; virtual void setFileName(const QString &fileName) = 0; virtual bool setContents(const QString &contents) = 0; signals: void mainContainerChanged(QWidget *mainContainer); void fileNameChanged(const QString &fileName); void featureChanged(QFlags f); void selectionChanged(); void geometryChanged(); void resourceFilesChanged(); void widgetManaged(QWidget *widget); void widgetUnmanaged(QWidget *widget); void aboutToUnmanageWidget(QWidget *widget); void activated(QWidget *widget); void changed(); void widgetRemoved(QWidget *w); void objectRemoved(QObject *o); public: virtual QStringList checkContents() const = 0; QStringList activeResourceFilePaths() const; virtual QWidget *formContainer() const = 0; void activateResourceFilePaths(const QStringList &paths, int *errorCount = 0, QString *errorMessages /Out/ = 0); }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractformwindowcursor.sip0000644000076500000240000000453412613140040024005 0ustar philstaff00000000000000// abstractformwindowcursor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowCursorInterface { %TypeHeaderCode #include %End public: enum MoveOperation { NoMove, Start, End, Next, Prev, Left, Right, Up, Down, }; enum MoveMode { MoveAnchor, KeepAnchor, }; virtual ~QDesignerFormWindowCursorInterface(); virtual QDesignerFormWindowInterface *formWindow() const = 0; virtual bool movePosition(QDesignerFormWindowCursorInterface::MoveOperation op, QDesignerFormWindowCursorInterface::MoveMode mode = QDesignerFormWindowCursorInterface::MoveAnchor) = 0; virtual int position() const = 0; virtual void setPosition(int pos, QDesignerFormWindowCursorInterface::MoveMode mode = QDesignerFormWindowCursorInterface::MoveAnchor) = 0; virtual QWidget *current() const = 0; virtual int widgetCount() const = 0; virtual QWidget *widget(int index) const = 0; virtual bool hasSelection() const = 0; virtual int selectedWidgetCount() const = 0; virtual QWidget *selectedWidget(int index) const = 0; virtual void setProperty(const QString &name, const QVariant &value) = 0; virtual void setWidgetProperty(QWidget *widget, const QString &name, const QVariant &value) = 0; virtual void resetWidgetProperty(QWidget *widget, const QString &name) = 0; bool isWidgetSelected(QWidget *widget) const; }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractformwindowmanager.sip0000644000076500000240000000630612613140040024101 0ustar philstaff00000000000000// abstractformwindowmanager.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowManagerInterface : QObject /Abstract/ { %TypeHeaderCode #include %End public: explicit QDesignerFormWindowManagerInterface(QObject *parent /TransferThis/ = 0); virtual ~QDesignerFormWindowManagerInterface(); QAction *actionFormLayout() const /Transfer/; QAction *actionSimplifyLayout() const /Transfer/; virtual QDesignerFormWindowInterface *activeFormWindow() const = 0; virtual int formWindowCount() const = 0; virtual QDesignerFormWindowInterface *formWindow(int index) const = 0 /Transfer/; virtual QDesignerFormWindowInterface *createFormWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0) = 0; virtual QDesignerFormEditorInterface *core() const = 0; signals: void formWindowAdded(QDesignerFormWindowInterface *formWindow); void formWindowRemoved(QDesignerFormWindowInterface *formWindow); void activeFormWindowChanged(QDesignerFormWindowInterface *formWindow); void formWindowSettingsChanged(QDesignerFormWindowInterface *fw); public slots: virtual void addFormWindow(QDesignerFormWindowInterface *formWindow) = 0; virtual void removeFormWindow(QDesignerFormWindowInterface *formWindow) = 0; virtual void setActiveFormWindow(QDesignerFormWindowInterface *formWindow) = 0; public: enum Action { CutAction, CopyAction, PasteAction, DeleteAction, SelectAllAction, LowerAction, RaiseAction, UndoAction, RedoAction, HorizontalLayoutAction, VerticalLayoutAction, SplitHorizontalAction, SplitVerticalAction, GridLayoutAction, FormLayoutAction, BreakLayoutAction, AdjustSizeAction, SimplifyLayoutAction, DefaultPreviewAction, FormWindowSettingsDialogAction, }; enum ActionGroup { StyledPreviewActionGroup, }; virtual QAction *action(QDesignerFormWindowManagerInterface::Action action) const = 0 /Transfer/; virtual QActionGroup *actionGroup(QDesignerFormWindowManagerInterface::ActionGroup actionGroup) const = 0 /Transfer/; public slots: virtual void showPreview() = 0; virtual void closeAllPreviews() = 0; virtual void showPluginDialog() = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractobjectinspector.sip0000644000076500000240000000257112613140040023550 0ustar philstaff00000000000000// abstractobjectinspector.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerObjectInspectorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerObjectInspectorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = 0); virtual ~QDesignerObjectInspectorInterface(); virtual QDesignerFormEditorInterface *core() const; public slots: virtual void setFormWindow(QDesignerFormWindowInterface *formWindow /KeepReference/) = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractpropertyeditor.sip0000644000076500000240000000330712613140040023444 0ustar philstaff00000000000000// abstractpropertyeditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerPropertyEditorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerPropertyEditorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = 0); virtual ~QDesignerPropertyEditorInterface(); virtual QDesignerFormEditorInterface *core() const; virtual bool isReadOnly() const = 0; virtual QObject *object() const = 0; virtual QString currentPropertyName() const = 0; signals: void propertyChanged(const QString &name, const QVariant &value); public slots: virtual void setObject(QObject *object /KeepReference/) = 0; virtual void setPropertyValue(const QString &name, const QVariant &value, bool changed = true) = 0; virtual void setReadOnly(bool readOnly) = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/abstractwidgetbox.sip0000644000076500000240000000254512613140040022350 0ustar philstaff00000000000000// abstractwidgetbox.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerWidgetBoxInterface : QWidget /Abstract/ { %TypeHeaderCode #include %End public: QDesignerWidgetBoxInterface(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QDesignerWidgetBoxInterface(); virtual void setFileName(const QString &file_name) = 0; virtual QString fileName() const = 0; virtual bool load() = 0; virtual bool save() = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/container.sip0000644000076500000240000000274612613140040020615 0ustar philstaff00000000000000// container.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerContainerExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerContainerExtension(); virtual int count() const = 0 /__len__/; virtual QWidget *widget(int index) const = 0; virtual int currentIndex() const = 0; virtual void setCurrentIndex(int index) = 0; virtual void addWidget(QWidget *widget) = 0; virtual void insertWidget(int index, QWidget *widget) = 0; virtual void remove(int index) = 0; virtual bool canAddWidget() const; virtual bool canRemove(int index) const; }; PyQt-gpl-5.5.1/sip/QtDesigner/customwidget.sip0000644000076500000240000000353412613140040021345 0ustar philstaff00000000000000// customwidget.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerCustomWidgetInterface { %TypeHeaderCode #include %End public: virtual ~QDesignerCustomWidgetInterface(); virtual QString name() const = 0; virtual QString group() const = 0; virtual QString toolTip() const = 0; virtual QString whatsThis() const = 0; virtual QString includeFile() const = 0; virtual QIcon icon() const = 0; virtual bool isContainer() const = 0; virtual QWidget *createWidget(QWidget *parent /TransferThis/) = 0 /Factory/; virtual bool isInitialized() const; virtual void initialize(QDesignerFormEditorInterface *core); virtual QString domXml() const; virtual QString codeTemplate() const; }; class QDesignerCustomWidgetCollectionInterface { %TypeHeaderCode #include %End public: virtual ~QDesignerCustomWidgetCollectionInterface(); virtual QList customWidgets() const = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/default_extensionfactory.sip0000644000076500000240000000262512613140040023737 0ustar philstaff00000000000000// default_extensionfactory.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QExtensionFactory : QObject, QAbstractExtensionFactory { %TypeHeaderCode #include %End public: QExtensionFactory(QExtensionManager *parent /TransferThis/ = 0); virtual QObject *extension(QObject *object, const QString &iid) const; QExtensionManager *extensionManager() const; protected: virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent /TransferThis/) const /Factory/; }; PyQt-gpl-5.5.1/sip/QtDesigner/extension.sip0000644000076500000240000000304312613140040020636 0ustar philstaff00000000000000// extension.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractExtensionFactory { %TypeHeaderCode #include %End public: virtual ~QAbstractExtensionFactory(); virtual QObject *extension(QObject *object, const QString &iid) const = 0; }; class QAbstractExtensionManager { %TypeHeaderCode #include %End public: virtual ~QAbstractExtensionManager(); virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; virtual QObject *extension(QObject *object, const QString &iid) const = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/formbuilder.sip0000644000076500000240000000250012613140040021131 0ustar philstaff00000000000000// formbuilder.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFormBuilder : QAbstractFormBuilder { %TypeHeaderCode #include %End public: QFormBuilder(); virtual ~QFormBuilder(); QStringList pluginPaths() const; void clearPluginPaths(); void addPluginPath(const QString &pluginPath); void setPluginPath(const QStringList &pluginPaths); QList customWidgets() const; }; PyQt-gpl-5.5.1/sip/QtDesigner/membersheet.sip0000644000076500000240000000352012613140040021122 0ustar philstaff00000000000000// membersheet.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerMemberSheetExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerMemberSheetExtension(); virtual int count() const = 0 /__len__/; virtual int indexOf(const QString &name) const = 0; virtual QString memberName(int index) const = 0; virtual QString memberGroup(int index) const = 0; virtual void setMemberGroup(int index, const QString &group) = 0; virtual bool isVisible(int index) const = 0; virtual void setVisible(int index, bool b) = 0; virtual bool isSignal(int index) const = 0; virtual bool isSlot(int index) const = 0; virtual bool inheritedFromWidget(int index) const = 0; virtual QString declaredInClass(int index) const = 0; virtual QString signature(int index) const = 0; virtual QList parameterTypes(int index) const = 0; virtual QList parameterNames(int index) const = 0; }; PyQt-gpl-5.5.1/sip/QtDesigner/propertysheet.sip0000644000076500000240000000364112613140040021543 0ustar philstaff00000000000000// propertysheet.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerPropertySheetExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerPropertySheetExtension(); virtual int count() const = 0 /__len__/; virtual int indexOf(const QString &name) const = 0; virtual QString propertyName(int index) const = 0; virtual QString propertyGroup(int index) const = 0; virtual void setPropertyGroup(int index, const QString &group) = 0; virtual bool hasReset(int index) const = 0; virtual bool reset(int index) = 0; virtual bool isVisible(int index) const = 0; virtual void setVisible(int index, bool b) = 0; virtual bool isAttribute(int index) const = 0; virtual void setAttribute(int index, bool b) = 0; virtual QVariant property(int index) const = 0; virtual void setProperty(int index, const QVariant &value) = 0; virtual bool isChanged(int index) const = 0; virtual void setChanged(int index, bool changed) = 0; virtual bool isEnabled(int index) const; }; PyQt-gpl-5.5.1/sip/QtDesigner/qextensionmanager.sip0000644000076500000240000000653412613140040022362 0ustar philstaff00000000000000// qextensionmanager.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QExtensionManager : QObject, QAbstractExtensionManager { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QPyDesignerCustomWidgetPlugin, &sipType_QPyDesignerCustomWidgetPlugin, -1, 1}, {sipName_QExtensionFactory, &sipType_QExtensionFactory, -1, 2}, {sipName_QPyDesignerMemberSheetExtension, &sipType_QPyDesignerMemberSheetExtension, -1, 3}, {sipName_QDesignerFormEditorInterface, &sipType_QDesignerFormEditorInterface, -1, 4}, {sipName_QDesignerWidgetBoxInterface, &sipType_QDesignerWidgetBoxInterface, -1, 5}, {sipName_QDesignerFormWindowInterface, &sipType_QDesignerFormWindowInterface, -1, 6}, {sipName_QDesignerActionEditorInterface, &sipType_QDesignerActionEditorInterface, -1, 7}, {sipName_QPyDesignerContainerExtension, &sipType_QPyDesignerContainerExtension, -1, 8}, {sipName_QDesignerPropertyEditorInterface, &sipType_QDesignerPropertyEditorInterface, -1, 9}, {sipName_QDesignerFormWindowManagerInterface, &sipType_QDesignerFormWindowManagerInterface, -1, 10}, {sipName_QPyDesignerTaskMenuExtension, &sipType_QPyDesignerTaskMenuExtension, -1, 11}, {sipName_QPyDesignerPropertySheetExtension, &sipType_QPyDesignerPropertySheetExtension, -1, 12}, {sipName_QDesignerObjectInspectorInterface, &sipType_QDesignerObjectInspectorInterface, -1, 13}, {sipName_QPyDesignerCustomWidgetCollectionPlugin, &sipType_QPyDesignerCustomWidgetCollectionPlugin, -1, 14}, {sipName_QExtensionManager, &sipType_QExtensionManager, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QExtensionManager(QObject *parent /TransferThis/ = 0); virtual ~QExtensionManager(); virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid /DocValue="''"/ = QString()); virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid /DocValue="''"/ = QString()); virtual QObject *extension(QObject *object, const QString &iid) const; }; PyQt-gpl-5.5.1/sip/QtDesigner/qpydesignercontainerextension.sip0000644000076500000240000000231412613140040025014 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerContainerExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerContainerExtension : QObject, QDesignerContainerExtension { %TypeHeaderCode #include %End public: QPyDesignerContainerExtension(QObject *parent /TransferThis/); private: QPyDesignerContainerExtension(const QPyDesignerContainerExtension &); }; PyQt-gpl-5.5.1/sip/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip0000644000076500000240000000243412613140040027111 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerCustomWidgetCollectionPlugin // class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerCustomWidgetCollectionPlugin : QObject, QDesignerCustomWidgetCollectionInterface { %TypeHeaderCode #include %End public: QPyDesignerCustomWidgetCollectionPlugin(QObject *parent /TransferThis/ = 0); private: QPyDesignerCustomWidgetCollectionPlugin(const QPyDesignerCustomWidgetCollectionPlugin &); }; PyQt-gpl-5.5.1/sip/QtDesigner/qpydesignercustomwidgetplugin.sip0000644000076500000240000000232312613140040025032 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerCustomWidgetPlugin class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerCustomWidgetPlugin : QObject, QDesignerCustomWidgetInterface { %TypeHeaderCode #include %End public: QPyDesignerCustomWidgetPlugin(QObject *parent /TransferThis/ = 0); private: QPyDesignerCustomWidgetPlugin(const QPyDesignerCustomWidgetPlugin &); }; PyQt-gpl-5.5.1/sip/QtDesigner/qpydesignermembersheetextension.sip0000644000076500000240000000233212613140040025332 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerMemberSheetExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerMemberSheetExtension : QObject, QDesignerMemberSheetExtension { %TypeHeaderCode #include %End public: QPyDesignerMemberSheetExtension(QObject *parent /TransferThis/); private: QPyDesignerMemberSheetExtension(const QPyDesignerMemberSheetExtension &); }; PyQt-gpl-5.5.1/sip/QtDesigner/qpydesignerpropertysheetextension.sip0000644000076500000240000000235312613140040025752 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerPropertySheetExtension // class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerPropertySheetExtension : QObject, QDesignerPropertySheetExtension { %TypeHeaderCode #include %End public: QPyDesignerPropertySheetExtension(QObject *parent /TransferThis/); private: QPyDesignerPropertySheetExtension(const QPyDesignerPropertySheetExtension &); }; PyQt-gpl-5.5.1/sip/QtDesigner/qpydesignertaskmenuextension.sip0000644000076500000240000000230512613140040024661 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerTaskMenuExtension class. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerTaskMenuExtension : QObject, QDesignerTaskMenuExtension { %TypeHeaderCode #include %End public: QPyDesignerTaskMenuExtension(QObject *parent /TransferThis/); private: QPyDesignerTaskMenuExtension(const QPyDesignerTaskMenuExtension &); }; PyQt-gpl-5.5.1/sip/QtDesigner/QtDesignermod.sip0000644000076500000240000000530212613140040021367 0ustar philstaff00000000000000// QtDesignermod.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtDesigner, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include abstractactioneditor.sip %Include abstractformbuilder.sip %Include abstractformeditor.sip %Include abstractformwindow.sip %Include abstractformwindowcursor.sip %Include abstractformwindowmanager.sip %Include abstractobjectinspector.sip %Include abstractpropertyeditor.sip %Include abstractwidgetbox.sip %Include container.sip %Include customwidget.sip %Include default_extensionfactory.sip %Include extension.sip %Include formbuilder.sip %Include membersheet.sip %Include propertysheet.sip %Include qextensionmanager.sip %Include taskmenu.sip %Include qpydesignercontainerextension.sip %Include qpydesignercustomwidgetcollectionplugin.sip %Include qpydesignercustomwidgetplugin.sip %Include qpydesignermembersheetextension.sip %Include qpydesignerpropertysheetextension.sip %Include qpydesignertaskmenuextension.sip PyQt-gpl-5.5.1/sip/QtDesigner/taskmenu.sip0000644000076500000240000000224312613140040020452 0ustar philstaff00000000000000// taskmenu.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerTaskMenuExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerTaskMenuExtension(); virtual QList taskActions() const = 0; virtual QAction *preferredEditAction() const; }; PyQt-gpl-5.5.1/sip/QtGui/0000755000076500000240000000000012613140040015071 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtGui/opengl_types.sip0000644000076500000240000000257712613140040020331 0ustar philstaff00000000000000// This implements the typedefs for the OpenGL data types. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) typedef char GLchar; typedef qint8 GLbyte; typedef quint8 GLubyte; typedef quint8 GLboolean; typedef qint16 GLshort; typedef quint16 GLushort; typedef qint32 GLint; typedef qint32 GLsizei; typedef quint32 GLuint; typedef quint32 GLenum; typedef quint32 GLbitfield; %If (PyQt_Desktop_OpenGL) typedef quint64 GLuint64; // This is in OpenGL ES v3. typedef double GLdouble; %End typedef float GLfloat; typedef float GLclampf; typedef long GLintptr; typedef long GLsizeiptr; %End PyQt-gpl-5.5.1/sip/QtGui/qabstracttextdocumentlayout.sip0000644000076500000240000000700012613140040023471 0ustar philstaff00000000000000// qabstracttextdocumentlayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractTextDocumentLayout : QObject { %TypeHeaderCode #include %End public: explicit QAbstractTextDocumentLayout(QTextDocument *doc); virtual ~QAbstractTextDocumentLayout(); struct Selection { %TypeHeaderCode #include %End QTextCursor cursor; QTextCharFormat format; }; struct PaintContext { %TypeHeaderCode #include %End PaintContext(); int cursorPosition; QPalette palette; QRectF clip; QVector selections; }; virtual void draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0; virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0; QString anchorAt(const QPointF &pos) const; virtual int pageCount() const = 0; virtual QSizeF documentSize() const = 0; virtual QRectF frameBoundingRect(QTextFrame *frame) const = 0; virtual QRectF blockBoundingRect(const QTextBlock &block) const = 0; void setPaintDevice(QPaintDevice *device); QPaintDevice *paintDevice() const; QTextDocument *document() const; void registerHandler(int objectType, QObject *component); %If (Qt_5_2_0 -) void unregisterHandler(int objectType, QObject *component = 0); %End QTextObjectInterface *handlerForObject(int objectType) const; signals: void update(const QRectF &rect = QRectF(0.0, 0.0, 1.0e+9, 1.0e+9)); void documentSizeChanged(const QSizeF &newSize); void pageCountChanged(int newPages); void updateBlock(const QTextBlock &block); protected: virtual void documentChanged(int from, int charsRemoved, int charsAdded) = 0; virtual void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); virtual void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); virtual void drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format); QTextCharFormat format(int pos); }; class QTextObjectInterface /Mixin,PyQtInterface="org.qt-project.Qt.QTextObjectInterface"/ { %TypeHeaderCode #include %End public: virtual ~QTextObjectInterface(); virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; }; PyQt-gpl-5.5.1/sip/QtGui/qbackingstore.sip0000644000076500000240000000304012613140040020437 0ustar philstaff00000000000000// qbackingstore.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBackingStore /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QBackingStore(QWindow *window); ~QBackingStore(); QWindow *window() const; QPaintDevice *paintDevice(); void flush(const QRegion ®ion, QWindow *window = 0, const QPoint &offset = QPoint()); void resize(const QSize &size); QSize size() const; bool scroll(const QRegion &area, int dx, int dy); void beginPaint(const QRegion &); void endPaint(); void setStaticContents(const QRegion ®ion); QRegion staticContents() const; bool hasStaticContents() const; }; PyQt-gpl-5.5.1/sip/QtGui/qbitmap.sip0000644000076500000240000000337412613140040017252 0ustar philstaff00000000000000// qbitmap.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBitmap : QPixmap { %TypeHeaderCode #include %End public: QBitmap(); QBitmap(const QPixmap &); QBitmap(int w, int h); explicit QBitmap(const QSize &); QBitmap(const QString &fileName, const char *format = 0); QBitmap(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQBitmap(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QBitmap(); void clear(); static QBitmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); static QBitmap fromData(const QSize &size, const uchar *bits, QImage::Format format = QImage::Format_MonoLSB); QBitmap transformed(const QTransform &matrix) const; void swap(QBitmap &other); }; PyQt-gpl-5.5.1/sip/QtGui/qbrush.sip0000644000076500000240000001522012613140040017112 0ustar philstaff00000000000000// qbrush.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBrush { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QColor or a QGradient to be used whenever a QBrush is expected. Note that // SIP must process QColor before QBrush so that the former's QVariant cast // operator is applied before the latter's. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QBrush, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QColor, 0) || sipCanConvertToType(sipPy, sipType_QGradient, 0)); if (sipCanConvertToType(sipPy, sipType_QBrush, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QBrush, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; if (sipCanConvertToType(sipPy, sipType_QColor, 0)) { QColor *c = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(c, sipType_QColor, state); return 0; } *sipCppPtr = new QBrush(*c); sipReleaseType(c, sipType_QColor, state); return sipGetState(sipTransferObj); } QGradient *g = reinterpret_cast(sipConvertToType(sipPy, sipType_QGradient, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(g, sipType_QGradient, state); return 0; } *sipCppPtr = new QBrush(*g); sipReleaseType(g, sipType_QGradient, state); return sipGetState(sipTransferObj); %End public: QBrush(); QBrush(Qt::BrushStyle bs); QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern); QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern); QBrush(const QColor &color, const QPixmap &pixmap); QBrush(Qt::GlobalColor color, const QPixmap &pixmap); QBrush(const QPixmap &pixmap); QBrush(const QImage &image); QBrush(const QGradient &gradient); QBrush(const QBrush &brush); QBrush(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QBrush(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QBrush(); void setStyle(Qt::BrushStyle); QPixmap texture() const; void setTexture(const QPixmap &pixmap); void setColor(const QColor &color); const QGradient *gradient() const; bool isOpaque() const; bool operator==(const QBrush &b) const; bool operator!=(const QBrush &b) const; void setColor(Qt::GlobalColor acolor); Qt::BrushStyle style() const; const QColor &color() const; void setTextureImage(const QImage &image); QImage textureImage() const; void setTransform(const QTransform &); QTransform transform() const; void swap(QBrush &other); }; QDataStream &operator>>(QDataStream &, QBrush & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QBrush & /Constrained/) /ReleaseGIL/; typedef QVector> QGradientStops; class QGradient { %TypeHeaderCode #include %End public: enum CoordinateMode { LogicalMode, StretchToDeviceMode, ObjectBoundingMode, }; enum Type { LinearGradient, RadialGradient, ConicalGradient, NoGradient, }; enum Spread { PadSpread, ReflectSpread, RepeatSpread, }; QGradient(); QGradient::Type type() const; QGradient::Spread spread() const; void setColorAt(qreal pos, const QColor &color); void setStops(const QGradientStops &stops); QGradientStops stops() const; bool operator==(const QGradient &gradient) const; bool operator!=(const QGradient &other) const; void setSpread(QGradient::Spread aspread); QGradient::CoordinateMode coordinateMode() const; void setCoordinateMode(QGradient::CoordinateMode mode); }; class QLinearGradient : QGradient { %TypeHeaderCode #include %End public: QLinearGradient(); QLinearGradient(const QPointF &start, const QPointF &finalStop); QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop); QPointF start() const; QPointF finalStop() const; void setStart(const QPointF &start); void setStart(qreal x, qreal y); void setFinalStop(const QPointF &stop); void setFinalStop(qreal x, qreal y); }; class QRadialGradient : QGradient { %TypeHeaderCode #include %End public: QRadialGradient(); QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint); QRadialGradient(const QPointF ¢er, qreal centerRadius, const QPointF &focalPoint, qreal focalRadius); QRadialGradient(const QPointF ¢er, qreal radius); QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx, qreal fy); QRadialGradient(qreal cx, qreal cy, qreal centerRadius, qreal fx, qreal fy, qreal focalRadius); QRadialGradient(qreal cx, qreal cy, qreal radius); QPointF center() const; QPointF focalPoint() const; qreal radius() const; void setCenter(const QPointF ¢er); void setCenter(qreal x, qreal y); void setFocalPoint(const QPointF &focalPoint); void setFocalPoint(qreal x, qreal y); void setRadius(qreal radius); qreal centerRadius() const; void setCenterRadius(qreal radius); qreal focalRadius() const; void setFocalRadius(qreal radius); }; class QConicalGradient : QGradient { %TypeHeaderCode #include %End public: QConicalGradient(); QConicalGradient(const QPointF ¢er, qreal startAngle); QConicalGradient(qreal cx, qreal cy, qreal startAngle); QPointF center() const; qreal angle() const; void setCenter(const QPointF ¢er); void setCenter(qreal x, qreal y); void setAngle(qreal angle); }; PyQt-gpl-5.5.1/sip/QtGui/qclipboard.sip0000644000076500000240000000670412613140040017735 0ustar philstaff00000000000000// qclipboard.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QClipboard : QObject { %TypeHeaderCode #include %End explicit QClipboard(QObject *parent /TransferThis/); virtual ~QClipboard(); public: enum Mode { Clipboard, Selection, FindBuffer, }; void clear(QClipboard::Mode mode = QClipboard::Clipboard); bool supportsFindBuffer() const; bool supportsSelection() const; bool ownsClipboard() const; bool ownsFindBuffer() const; bool ownsSelection() const; QString text(QClipboard::Mode mode = QClipboard::Clipboard) const; SIP_PYTUPLE text(const QString &subtype, QClipboard::Mode mode = QClipboard::Clipboard) const /DocType="(str, str)"/; %MethodCode QString *text; QString *subtype = new QString(*a0); Py_BEGIN_ALLOW_THREADS text = new QString(sipCpp->text(*subtype, a1)); Py_END_ALLOW_THREADS PyObject *text_obj = sipConvertFromNewType(text, sipType_QString, NULL); PyObject *subtype_obj = sipConvertFromNewType(subtype, sipType_QString, NULL); if (text_obj && subtype_obj) sipRes = PyTuple_Pack(2, text_obj, subtype_obj); Py_XDECREF(text_obj); Py_XDECREF(subtype_obj); %End void setText(const QString &, QClipboard::Mode mode = QClipboard::Clipboard); const QMimeData *mimeData(QClipboard::Mode mode = QClipboard::Clipboard) const; void setMimeData(QMimeData *data /GetWrapper/, QClipboard::Mode mode = QClipboard::Clipboard); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setMimeData(a0, a1); Py_END_ALLOW_THREADS // Transfer ownership to C++ and make sure the Python object stays alive by // giving it a reference to itself. The cycle will be broken by QMimeData's // virtual dtor. The reason we don't do the obvious and just use /Transfer/ is // that the QClipboard Python object we would transfer ownership to is likely // to be garbage collected immediately afterwards. sipTransferTo(a0Wrapper, a0Wrapper); %End QImage image(QClipboard::Mode mode = QClipboard::Clipboard) const; QPixmap pixmap(QClipboard::Mode mode = QClipboard::Clipboard) const; void setImage(const QImage &, QClipboard::Mode mode = QClipboard::Clipboard); void setPixmap(const QPixmap &, QClipboard::Mode mode = QClipboard::Clipboard); signals: void changed(QClipboard::Mode mode); void dataChanged(); void findBufferChanged(); void selectionChanged(); private: QClipboard(const QClipboard &); }; PyQt-gpl-5.5.1/sip/QtGui/qcolor.sip0000644000076500000240000001415712613140040017115 0ustar philstaff00000000000000// qcolor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColor { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // Qt::GlobalColor to be used whenever a QColor is expected. Note that SIP // must process QColor before QBrush so that the former's QVariant cast // operator is applied before the latter's. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_GlobalColor)) || sipCanConvertToType(sipPy, sipType_QColor, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_GlobalColor))) { *sipCppPtr = new QColor((Qt::GlobalColor)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->red(), sipCpp->green(), sipCpp->blue(), sipCpp->alpha()); %End public: enum Spec { Invalid, Rgb, Hsv, Cmyk, Hsl, }; QColor(Qt::GlobalColor color /Constrained/); QColor(QRgb rgb); QColor(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QColor(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End QString name() const; void setNamedColor(const QString &name); static QStringList colorNames(); QColor::Spec spec() const; int alpha() const; void setAlpha(int alpha); qreal alphaF() const; void setAlphaF(qreal alpha); int red() const; int green() const; int blue() const; void setRed(int red); void setGreen(int green); void setBlue(int blue); qreal redF() const; qreal greenF() const; qreal blueF() const; void setRedF(qreal red); void setGreenF(qreal green); void setBlueF(qreal blue); void getRgb(int *r, int *g, int *b, int *alpha = 0) const; void setRgb(int r, int g, int b, int alpha = 255); void getRgbF(qreal *r, qreal *g, qreal *b, qreal *alpha = 0) const; void setRgbF(qreal r, qreal g, qreal b, qreal alpha = 1.0e+0); QRgb rgba() const; void setRgba(QRgb rgba); QRgb rgb() const; void setRgb(QRgb rgb); int hue() const; int saturation() const; int value() const; qreal hueF() const; qreal saturationF() const; qreal valueF() const; void getHsv(int *h, int *s, int *v, int *alpha = 0) const; void setHsv(int h, int s, int v, int alpha = 255); void getHsvF(qreal *h, qreal *s, qreal *v, qreal *alpha = 0) const; void setHsvF(qreal h, qreal s, qreal v, qreal alpha = 1.0e+0); int cyan() const; int magenta() const; int yellow() const; int black() const; qreal cyanF() const; qreal magentaF() const; qreal yellowF() const; qreal blackF() const; void getCmyk(int *c, int *m, int *y, int *k, int *alpha = 0); void setCmyk(int c, int m, int y, int k, int alpha = 255); void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *alpha = 0); void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal alpha = 1.0e+0); QColor toRgb() const; QColor toHsv() const; QColor toCmyk() const; QColor convertTo(QColor::Spec colorSpec) const; static QColor fromRgb(QRgb rgb); static QColor fromRgba(QRgb rgba); static QColor fromRgb(int r, int g, int b, int alpha = 255); static QColor fromRgbF(qreal r, qreal g, qreal b, qreal alpha = 1.0e+0); static QColor fromHsv(int h, int s, int v, int alpha = 255); static QColor fromHsvF(qreal h, qreal s, qreal v, qreal alpha = 1.0e+0); static QColor fromCmyk(int c, int m, int y, int k, int alpha = 255); static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal alpha = 1.0e+0); bool operator==(const QColor &c) const; bool operator!=(const QColor &c) const; QColor(); QColor(int r, int g, int b, int alpha = 255); QColor(const QString &aname); QColor(const QColor &acolor); bool isValid() const; QColor lighter(int factor = 150) const; QColor darker(int factor = 200) const; int hsvHue() const; int hsvSaturation() const; qreal hsvHueF() const; qreal hsvSaturationF() const; int hslHue() const; int hslSaturation() const; int lightness() const; qreal hslHueF() const; qreal hslSaturationF() const; qreal lightnessF() const; void getHsl(int *h, int *s, int *l, int *alpha = 0) const; void setHsl(int h, int s, int l, int alpha = 255); void getHslF(qreal *h, qreal *s, qreal *l, qreal *alpha = 0) const; void setHslF(qreal h, qreal s, qreal l, qreal alpha = 1.0e+0); QColor toHsl() const; static QColor fromHsl(int h, int s, int l, int alpha = 255); static QColor fromHslF(qreal h, qreal s, qreal l, qreal alpha = 1.0e+0); static bool isValidColor(const QString &name); %If (Qt_5_2_0 -) enum NameFormat { HexRgb, HexArgb, }; %End %If (Qt_5_2_0 -) QString name(QColor::NameFormat format) const; %End }; QDataStream &operator<<(QDataStream &, const QColor & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QColor & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qcursor.sip0000644000076500000240000000520512613140040017306 0ustar philstaff00000000000000// qcursor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCursor { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // Qt::CursorShape to be used whenever a QCursor is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_CursorShape)) || sipCanConvertToType(sipPy, sipType_QCursor, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_CursorShape))) { *sipCppPtr = new QCursor((Qt::CursorShape)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QCursor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: QCursor(); QCursor(Qt::CursorShape shape); QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1); QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1); QCursor(const QCursor &cursor); QCursor(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QCursor(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QCursor(); Qt::CursorShape shape() const; void setShape(Qt::CursorShape newShape); const QBitmap *bitmap() const; const QBitmap *mask() const; QPixmap pixmap() const; QPoint hotSpot() const; static QPoint pos(); static void setPos(int x, int y); static void setPos(const QPoint &p); }; QDataStream &operator<<(QDataStream &outS, const QCursor &cursor /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &inS, QCursor &cursor /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qdesktopservices.sip0000644000076500000240000000431412613140040021206 0ustar philstaff00000000000000// qdesktopservices.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesktopServices { %TypeHeaderCode #include %End public: static bool openUrl(const QUrl &url) /ReleaseGIL/; static void setUrlHandler(const QString &scheme, QObject *receiver, const char *method); static void setUrlHandler(const QString &scheme, SIP_PYCALLABLE method); %MethodCode // Allow a callable that must be a slot of a QObject, although we never tell // the user if it isn't. if (PyMethod_Check(a1)) { PyObject *self = PyMethod_GET_SELF(a1); PyObject *func = PyMethod_GET_FUNCTION(a1); int iserr = 0; QObject *receiver = reinterpret_cast(sipForceConvertToType( self, sipType_QObject, NULL, SIP_NOT_NONE, NULL, &iserr)); if (!iserr && PyFunction_Check(func)) { PyObject *ascii_obj = ((PyFunctionObject *)func)->func_name; const char *ascii = sipString_AsASCIIString(&ascii_obj); if (ascii) { QDesktopServices::setUrlHandler(*a0, receiver, ascii); Py_DECREF(ascii_obj); } } } %End static void unsetUrlHandler(const QString &scheme); }; PyQt-gpl-5.5.1/sip/QtGui/qdrag.sip0000644000076500000240000000416512613140040016712 0ustar philstaff00000000000000// qdrag.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDrag : QObject { %TypeHeaderCode #include %End public: explicit QDrag(QObject *dragSource /TransferThis/); virtual ~QDrag(); Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction) /PyName=exec_,ReleaseGIL/; %If (Py_v3) Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction) /ReleaseGIL/; %End Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction) /PyName=exec_,ReleaseGIL/; Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction) /ReleaseGIL/; void setMimeData(QMimeData *data /Transfer/); QMimeData *mimeData() const; void setPixmap(const QPixmap &); QPixmap pixmap() const; void setHotSpot(const QPoint &hotspot); QPoint hotSpot() const; QObject *source() const; QObject *target() const; void setDragCursor(const QPixmap &cursor, Qt::DropAction action); signals: void actionChanged(Qt::DropAction action); void targetChanged(QObject *newTarget); public: QPixmap dragCursor(Qt::DropAction action) const; Qt::DropActions supportedActions() const; Qt::DropAction defaultAction() const; private: QDrag(const QDrag &); }; PyQt-gpl-5.5.1/sip/QtGui/qevent.sip0000644000076500000240000005223412613140040017116 0ustar philstaff00000000000000// qevent.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::ActionAdded: case QEvent::ActionChanged: case QEvent::ActionRemoved: sipType = sipType_QActionEvent; break; case QEvent::Close: sipType = sipType_QCloseEvent; break; case QEvent::ContextMenu: sipType = sipType_QContextMenuEvent; break; case QEvent::DragEnter: sipType = sipType_QDragEnterEvent; break; case QEvent::DragLeave: sipType = sipType_QDragLeaveEvent; break; case QEvent::DragMove: sipType = sipType_QDragMoveEvent; break; case QEvent::Drop: sipType = sipType_QDropEvent; break; case QEvent::Enter: sipType = sipType_QEnterEvent; break; case QEvent::FileOpen: sipType = sipType_QFileOpenEvent; break; case QEvent::FocusIn: case QEvent::FocusOut: sipType = sipType_QFocusEvent; break; case QEvent::Hide: sipType = sipType_QHideEvent; break; case QEvent::HoverEnter: case QEvent::HoverLeave: case QEvent::HoverMove: sipType = sipType_QHoverEvent; break; case QEvent::IconDrag: sipType = sipType_QIconDragEvent; break; case QEvent::InputMethod: sipType = sipType_QInputMethodEvent; break; case QEvent::KeyPress: case QEvent::KeyRelease: case QEvent::ShortcutOverride: sipType = sipType_QKeyEvent; break; case QEvent::MouseButtonDblClick: case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: case QEvent::MouseMove: sipType = sipType_QMouseEvent; break; case QEvent::Move: sipType = sipType_QMoveEvent; break; case QEvent::Paint: sipType = sipType_QPaintEvent; break; case QEvent::Resize: sipType = sipType_QResizeEvent; break; case QEvent::Shortcut: sipType = sipType_QShortcutEvent; break; case QEvent::Show: sipType = sipType_QShowEvent; break; case QEvent::StatusTip: sipType = sipType_QStatusTipEvent; break; case QEvent::TabletMove: case QEvent::TabletPress: case QEvent::TabletRelease: case QEvent::TabletEnterProximity: case QEvent::TabletLeaveProximity: sipType = sipType_QTabletEvent; break; case QEvent::ToolTip: case QEvent::WhatsThis: sipType = sipType_QHelpEvent; break; case QEvent::WhatsThisClicked: sipType = sipType_QWhatsThisClickedEvent; break; case QEvent::Wheel: sipType = sipType_QWheelEvent; break; case QEvent::WindowStateChange: sipType = sipType_QWindowStateChangeEvent; break; case QEvent::TouchBegin: case QEvent::TouchUpdate: case QEvent::TouchEnd: sipType = sipType_QTouchEvent; break; case QEvent::InputMethodQuery: sipType = sipType_QInputMethodQueryEvent; break; case QEvent::Expose: sipType = sipType_QExposeEvent; break; case QEvent::ScrollPrepare: sipType = sipType_QScrollPrepareEvent; break; case QEvent::Scroll: sipType = sipType_QScrollEvent; break; #if QT_VERSION >= 0x050200 case QEvent::NativeGesture: sipType = sipType_QNativeGestureEvent; break; #endif #if QT_VERSION >= 0x050500 case QEvent::PlatformSurface: sipType = sipType_QPlatformSurfaceEvent; break; #endif default: sipType = 0; } %End public: virtual ~QInputEvent(); Qt::KeyboardModifiers modifiers() const; ulong timestamp() const; void setTimestamp(ulong atimestamp); }; class QMouseEvent : QInputEvent { %TypeHeaderCode #include %End public: QMouseEvent(QEvent::Type type, const QPointF &pos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(QEvent::Type type, const QPointF &pos, const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(QEvent::Type type, const QPointF &pos, const QPointF &windowPos, const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); virtual ~QMouseEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; Qt::MouseButton button() const; Qt::MouseButtons buttons() const; const QPointF &localPos() const; const QPointF &windowPos() const; const QPointF &screenPos() const; %If (Qt_5_3_0 -) Qt::MouseEventSource source() const; %End %If (Qt_5_3_0 -) Qt::MouseEventFlags flags() const; %End }; class QHoverEvent : QInputEvent { %TypeHeaderCode #include %End public: QHoverEvent(QEvent::Type type, const QPointF &pos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier); virtual ~QHoverEvent(); QPoint pos() const; QPoint oldPos() const; const QPointF &posF() const; const QPointF &oldPosF() const; }; class QWheelEvent : QInputEvent { %TypeHeaderCode #include %End public: QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); %If (Qt_5_2_0 -) QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase); %End %If (Qt_5_5_0 -) QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source); %End virtual ~QWheelEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; Qt::MouseButtons buttons() const; QPoint pixelDelta() const; QPoint angleDelta() const; const QPointF &posF() const; const QPointF &globalPosF() const; %If (Qt_5_2_0 -) Qt::ScrollPhase phase() const; %End %If (Qt_5_5_0 -) Qt::MouseEventSource source() const; %End }; class QTabletEvent : QInputEvent { %TypeHeaderCode #include %End public: enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, XFreeEraser, RotationStylus, }; enum PointerType { UnknownPointer, Pen, Cursor, Eraser, }; %If (Qt_5_4_0 -) QTabletEvent(QEvent::Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID, Qt::MouseButton button, Qt::MouseButtons buttons); %End QTabletEvent(QEvent::Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID); virtual ~QTabletEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; qreal hiResGlobalX() const; qreal hiResGlobalY() const; QTabletEvent::TabletDevice device() const; QTabletEvent::PointerType pointerType() const; qint64 uniqueId() const; qreal pressure() const; int z() const; qreal tangentialPressure() const; qreal rotation() const; int xTilt() const; int yTilt() const; const QPointF &posF() const; const QPointF &globalPosF() const; %If (Qt_5_4_0 -) Qt::MouseButton button() const; %End %If (Qt_5_4_0 -) Qt::MouseButtons buttons() const; %End }; class QKeyEvent : QInputEvent { %TypeHeaderCode #include %End public: QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text = QString(), bool autorep = false, ushort count = 1); QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, const QString &text /DocValue="''"/ = QString(), bool autorep = false, ushort count = 1); virtual ~QKeyEvent(); int key() const; Qt::KeyboardModifiers modifiers() const; QString text() const; bool isAutoRepeat() const; int count() const /__len__/; bool matches(QKeySequence::StandardKey key) const; quint32 nativeModifiers() const; quint32 nativeScanCode() const; quint32 nativeVirtualKey() const; }; class QFocusEvent : QEvent { %TypeHeaderCode #include %End public: QFocusEvent(QEvent::Type type, Qt::FocusReason reason = Qt::OtherFocusReason); virtual ~QFocusEvent(); bool gotFocus() const; bool lostFocus() const; Qt::FocusReason reason() const; }; class QPaintEvent : QEvent { %TypeHeaderCode #include %End public: explicit QPaintEvent(const QRegion &paintRegion); explicit QPaintEvent(const QRect &paintRect); virtual ~QPaintEvent(); const QRect &rect() const; const QRegion ®ion() const; }; class QMoveEvent : QEvent { %TypeHeaderCode #include %End public: QMoveEvent(const QPoint &pos, const QPoint &oldPos); virtual ~QMoveEvent(); const QPoint &pos() const; const QPoint &oldPos() const; }; class QResizeEvent : QEvent { %TypeHeaderCode #include %End public: QResizeEvent(const QSize &size, const QSize &oldSize); virtual ~QResizeEvent(); const QSize &size() const; const QSize &oldSize() const; }; class QCloseEvent : QEvent { %TypeHeaderCode #include %End public: QCloseEvent(); virtual ~QCloseEvent(); }; class QIconDragEvent : QEvent { %TypeHeaderCode #include %End public: QIconDragEvent(); virtual ~QIconDragEvent(); }; class QShowEvent : QEvent { %TypeHeaderCode #include %End public: QShowEvent(); virtual ~QShowEvent(); }; class QHideEvent : QEvent { %TypeHeaderCode #include %End public: QHideEvent(); virtual ~QHideEvent(); }; class QContextMenuEvent : QInputEvent { %TypeHeaderCode #include %End public: enum Reason { Mouse, Keyboard, Other, }; QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers); QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos); QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos); virtual ~QContextMenuEvent(); int x() const; int y() const; int globalX() const; int globalY() const; const QPoint &pos() const; const QPoint &globalPos() const; QContextMenuEvent::Reason reason() const; }; class QInputMethodEvent : QEvent { %TypeHeaderCode #include %End public: enum AttributeType { TextFormat, Cursor, Language, Ruby, Selection, }; class Attribute { %TypeHeaderCode #include %End public: Attribute(QInputMethodEvent::AttributeType t, int s, int l, QVariant val); QInputMethodEvent::AttributeType type; int start; int length; QVariant value; }; QInputMethodEvent(); QInputMethodEvent(const QString &preeditText, const QList &attributes); QInputMethodEvent(const QInputMethodEvent &other); void setCommitString(const QString &commitString, int from = 0, int length = 0); const QList &attributes() const; const QString &preeditString() const; const QString &commitString() const; int replacementStart() const; int replacementLength() const; }; class QInputMethodQueryEvent : QEvent { %TypeHeaderCode #include %End public: explicit QInputMethodQueryEvent(Qt::InputMethodQueries queries); virtual ~QInputMethodQueryEvent(); Qt::InputMethodQueries queries() const; void setValue(Qt::InputMethodQuery query, const QVariant &value); QVariant value(Qt::InputMethodQuery query) const; }; class QDropEvent : QEvent { %TypeHeaderCode #include %End public: QDropEvent(const QPointF &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = QEvent::Drop); virtual ~QDropEvent(); QPoint pos() const; const QPointF &posF() const; Qt::MouseButtons mouseButtons() const; Qt::KeyboardModifiers keyboardModifiers() const; Qt::DropActions possibleActions() const; Qt::DropAction proposedAction() const; void acceptProposedAction(); Qt::DropAction dropAction() const; void setDropAction(Qt::DropAction action); QObject *source() const; const QMimeData *mimeData() const; }; class QDragMoveEvent : QDropEvent { %TypeHeaderCode #include %End public: QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = QEvent::DragMove); virtual ~QDragMoveEvent(); QRect answerRect() const; void accept(); void ignore(); void accept(const QRect &r); void ignore(const QRect &r); }; class QDragEnterEvent : QDragMoveEvent { %TypeHeaderCode #include %End public: QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); virtual ~QDragEnterEvent(); }; class QDragLeaveEvent : QEvent { %TypeHeaderCode #include %End public: QDragLeaveEvent(); virtual ~QDragLeaveEvent(); }; class QHelpEvent : QEvent { %TypeHeaderCode #include %End public: QHelpEvent(QEvent::Type type, const QPoint &pos, const QPoint &globalPos); virtual ~QHelpEvent(); int x() const; int y() const; int globalX() const; int globalY() const; const QPoint &pos() const; const QPoint &globalPos() const; }; class QStatusTipEvent : QEvent { %TypeHeaderCode #include %End public: explicit QStatusTipEvent(const QString &tip); virtual ~QStatusTipEvent(); QString tip() const; }; class QWhatsThisClickedEvent : QEvent { %TypeHeaderCode #include %End public: explicit QWhatsThisClickedEvent(const QString &href); virtual ~QWhatsThisClickedEvent(); QString href() const; }; class QActionEvent : QEvent { %TypeHeaderCode #include %End public: QActionEvent(int type, QAction *action, QAction *before = 0); virtual ~QActionEvent(); QAction *action() const; QAction *before() const; }; class QFileOpenEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QFileOpenEvent(); QString file() const; QUrl url() const; bool openFile(QFile &file, QFlags flags) const; }; class QShortcutEvent : QEvent { %TypeHeaderCode #include %End public: QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); virtual ~QShortcutEvent(); bool isAmbiguous() const; const QKeySequence &key() const; int shortcutId() const; }; class QWindowStateChangeEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QWindowStateChangeEvent(); Qt::WindowStates oldState() const; }; class QTouchEvent : QInputEvent { %TypeHeaderCode #include %End public: class TouchPoint /NoDefaultCtors/ { %TypeHeaderCode #include %End public: int id() const; Qt::TouchPointState state() const; QPointF pos() const; QPointF startPos() const; QPointF lastPos() const; QPointF scenePos() const; QPointF startScenePos() const; QPointF lastScenePos() const; QPointF screenPos() const; QPointF startScreenPos() const; QPointF lastScreenPos() const; QPointF normalizedPos() const; QPointF startNormalizedPos() const; QPointF lastNormalizedPos() const; QRectF rect() const; QRectF sceneRect() const; QRectF screenRect() const; qreal pressure() const; enum InfoFlag { Pen, }; typedef QFlags InfoFlags; QVector2D velocity() const; QFlags flags() const; QVector rawScreenPositions() const; }; QTouchEvent(QEvent::Type eventType, QTouchDevice *device = 0, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::TouchPointStates touchPointStates = 0, const QList &touchPoints = QList()); virtual ~QTouchEvent(); QObject *target() const; Qt::TouchPointStates touchPointStates() const; const QList &touchPoints() const; QWindow *window() const; QTouchDevice *device() const; void setDevice(QTouchDevice *adevice); }; QFlags operator|(QTouchEvent::TouchPoint::InfoFlag f1, QFlags f2); QFlags operator|(QTouchEvent::TouchPoint::InfoFlag f1, QTouchEvent::TouchPoint::InfoFlag f2); class QExposeEvent : QEvent { %TypeHeaderCode #include %End public: explicit QExposeEvent(const QRegion &rgn); virtual ~QExposeEvent(); const QRegion ®ion() const; }; class QScrollPrepareEvent : QEvent { %TypeHeaderCode #include %End public: explicit QScrollPrepareEvent(const QPointF &startPos); virtual ~QScrollPrepareEvent(); QPointF startPos() const; QSizeF viewportSize() const; QRectF contentPosRange() const; QPointF contentPos() const; void setViewportSize(const QSizeF &size); void setContentPosRange(const QRectF &rect); void setContentPos(const QPointF &pos); }; class QScrollEvent : QEvent { %TypeHeaderCode #include %End public: enum ScrollState { ScrollStarted, ScrollUpdated, ScrollFinished, }; QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, QScrollEvent::ScrollState scrollState); virtual ~QScrollEvent(); QPointF contentPos() const; QPointF overshootDistance() const; QScrollEvent::ScrollState scrollState() const; }; bool operator==(QKeyEvent *e, QKeySequence::StandardKey key); bool operator==(QKeySequence::StandardKey key, QKeyEvent *e); class QEnterEvent : QEvent { %TypeHeaderCode #include %End public: QEnterEvent(const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos); virtual ~QEnterEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; const QPointF &localPos() const; const QPointF &windowPos() const; const QPointF &screenPos() const; }; class QAction /External/; %If (Qt_5_2_0 -) class QNativeGestureEvent : QInputEvent { %TypeHeaderCode #include %End public: QNativeGestureEvent(Qt::NativeGestureType type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal value, ulong sequenceId, quint64 intArgument); Qt::NativeGestureType gestureType() const; qreal value() const; const QPoint pos() const; const QPoint globalPos() const; const QPointF &localPos() const; const QPointF &windowPos() const; const QPointF &screenPos() const; }; %End %If (Qt_5_5_0 -) class QPlatformSurfaceEvent : QEvent { %TypeHeaderCode #include %End public: enum SurfaceEventType { SurfaceCreated, SurfaceAboutToBeDestroyed, }; explicit QPlatformSurfaceEvent(QPlatformSurfaceEvent::SurfaceEventType surfaceEventType); virtual ~QPlatformSurfaceEvent(); QPlatformSurfaceEvent::SurfaceEventType surfaceEventType() const; }; %End PyQt-gpl-5.5.1/sip/QtGui/qfont.sip0000644000076500000240000001337012613140040016741 0ustar philstaff00000000000000// qfont.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFont { %TypeHeaderCode #include %End public: enum StyleHint { Helvetica, SansSerif, Times, Serif, Courier, TypeWriter, OldEnglish, Decorative, System, AnyStyle, Cursive, Monospace, Fantasy, }; enum StyleStrategy { PreferDefault, PreferBitmap, PreferDevice, PreferOutline, ForceOutline, PreferMatch, PreferQuality, PreferAntialias, NoAntialias, %If (Qt_5_4_0 -) NoSubpixelAntialias, %End OpenGLCompatible, NoFontMerging, ForceIntegerMetrics, }; enum Weight { %If (Qt_5_5_0 -) Thin, %End %If (Qt_5_5_0 -) ExtraLight, %End Light, Normal, %If (Qt_5_5_0 -) Medium, %End DemiBold, Bold, %If (Qt_5_5_0 -) ExtraBold, %End Black, }; enum Style { StyleNormal, StyleItalic, StyleOblique, }; enum Stretch { UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, Unstretched, SemiExpanded, Expanded, ExtraExpanded, UltraExpanded, }; QFont(); QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false); QFont(const QFont &, QPaintDevice *pd); QFont(const QFont &); QFont(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QFont(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QFont(); QString family() const; void setFamily(const QString &); int pointSize() const; void setPointSize(int); qreal pointSizeF() const; void setPointSizeF(qreal); int pixelSize() const; void setPixelSize(int); int weight() const; void setWeight(int); void setStyle(QFont::Style style); QFont::Style style() const; bool underline() const; void setUnderline(bool); bool overline() const; void setOverline(bool); bool strikeOut() const; void setStrikeOut(bool); bool fixedPitch() const; void setFixedPitch(bool); bool kerning() const; void setKerning(bool); QFont::StyleHint styleHint() const; QFont::StyleStrategy styleStrategy() const; void setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault); void setStyleStrategy(QFont::StyleStrategy s); int stretch() const; void setStretch(int); bool rawMode() const; void setRawMode(bool); bool exactMatch() const; bool operator==(const QFont &) const; bool operator!=(const QFont &) const; bool operator<(const QFont &) const; bool isCopyOf(const QFont &) const; void setRawName(const QString &); QString rawName() const; QString key() const; QString toString() const; bool fromString(const QString &); static QString substitute(const QString &); static QStringList substitutes(const QString &); static QStringList substitutions(); static void insertSubstitution(const QString &, const QString &); static void insertSubstitutions(const QString &, const QStringList &); static void removeSubstitutions(const QString &); static void initialize(); static void cleanup(); static void cacheStatistics(); QString defaultFamily() const; QString lastResortFamily() const; QString lastResortFont() const; QFont resolve(const QFont &) const; bool bold() const; void setBold(bool enable); bool italic() const; void setItalic(bool b); enum Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize, }; enum SpacingType { PercentageSpacing, AbsoluteSpacing, }; qreal letterSpacing() const; QFont::SpacingType letterSpacingType() const; void setLetterSpacing(QFont::SpacingType type, qreal spacing); qreal wordSpacing() const; void setWordSpacing(qreal spacing); void setCapitalization(QFont::Capitalization); QFont::Capitalization capitalization() const; enum HintingPreference { PreferDefaultHinting, PreferNoHinting, PreferVerticalHinting, PreferFullHinting, }; QString styleName() const; void setStyleName(const QString &styleName); void setHintingPreference(QFont::HintingPreference hintingPreference); QFont::HintingPreference hintingPreference() const; void swap(QFont &other); %If (Qt_5_3_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QDataStream &operator<<(QDataStream &, const QFont & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QFont & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qfontdatabase.sip0000644000076500000240000000731512613140040020430 0ustar philstaff00000000000000// qfontdatabase.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontDatabase { %TypeHeaderCode #include %End public: enum WritingSystem { Any, Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Syriac, Thaana, Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Sinhala, Thai, Lao, Tibetan, Myanmar, Georgian, Khmer, SimplifiedChinese, TraditionalChinese, Japanese, Korean, Vietnamese, Other, Symbol, Ogham, Runic, Nko, }; static QList standardSizes(); QFontDatabase(); QList writingSystems() const; QList writingSystems(const QString &family) const; QStringList families(QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any) const; QStringList styles(const QString &family) const; QList pointSizes(const QString &family, const QString &style /DocValue="''"/ = QString()); QList smoothSizes(const QString &family, const QString &style); QString styleString(const QFont &font); QString styleString(const QFontInfo &fontInfo); QFont font(const QString &family, const QString &style, int pointSize) const; bool isBitmapScalable(const QString &family, const QString &style /DocValue="''"/ = QString()) const; bool isSmoothlyScalable(const QString &family, const QString &style /DocValue="''"/ = QString()) const; bool isScalable(const QString &family, const QString &style /DocValue="''"/ = QString()) const; bool isFixedPitch(const QString &family, const QString &style /DocValue="''"/ = QString()) const; bool italic(const QString &family, const QString &style) const; bool bold(const QString &family, const QString &style) const; int weight(const QString &family, const QString &style) const; static QString writingSystemName(QFontDatabase::WritingSystem writingSystem); static QString writingSystemSample(QFontDatabase::WritingSystem writingSystem); static int addApplicationFont(const QString &fileName); static int addApplicationFontFromData(const QByteArray &fontData); static QStringList applicationFontFamilies(int id); static bool removeApplicationFont(int id); static bool removeAllApplicationFonts(); static bool supportsThreadedFontRendering(); %If (Qt_5_2_0 -) enum SystemFont { GeneralFont, FixedFont, TitleFont, SmallestReadableFont, }; %End %If (Qt_5_2_0 -) static QFont systemFont(QFontDatabase::SystemFont type); %End %If (Qt_5_5_0 -) bool isPrivateFamily(const QString &family) const; %End }; PyQt-gpl-5.5.1/sip/QtGui/qfontinfo.sip0000644000076500000240000000274312613140040017617 0ustar philstaff00000000000000// qfontinfo.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontInfo { %TypeHeaderCode #include %End public: QFontInfo(const QFont &); QFontInfo(const QFontInfo &); ~QFontInfo(); QString family() const; int pixelSize() const; int pointSize() const; qreal pointSizeF() const; bool italic() const; QFont::Style style() const; int weight() const; bool bold() const; bool fixedPitch() const; QFont::StyleHint styleHint() const; bool rawMode() const; bool exactMatch() const; QString styleName() const; void swap(QFontInfo &other); }; PyQt-gpl-5.5.1/sip/QtGui/qfontmetrics.sip0000644000076500000240000001342212613140040020326 0ustar philstaff00000000000000// qfontmetrics.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontMetrics { %TypeHeaderCode #include %End public: explicit QFontMetrics(const QFont &); QFontMetrics(const QFont &, QPaintDevice *pd); QFontMetrics(const QFontMetrics &); ~QFontMetrics(); int ascent() const; int descent() const; int height() const; int leading() const; int lineSpacing() const; int minLeftBearing() const; int minRightBearing() const; int maxWidth() const; int xHeight() const; bool inFont(QChar) const; int leftBearing(QChar) const; int rightBearing(QChar) const; int width(QChar) const /PyName=widthChar/; int width(const QString &text, int length = -1) const; QRect boundingRect(QChar) const /PyName=boundingRectChar/; QRect boundingRect(const QString &text) const; QRect boundingRect(const QRect &rect, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,DocType="list-of-int"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a4); sipRes = new QRect(sipCpp->boundingRect(*a0, a1, *a2, a3, tabarray)); if (!tabarray) delete[] tabarray; %End QRect boundingRect(int x, int y, int width, int height, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,DocType="list-of-int"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a7); sipRes = new QRect(sipCpp->boundingRect(a0, a1, a2, a3, a4, *a5, a6, tabarray)); if (!tabarray) delete[] tabarray; %End QSize size(int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,DocType="list-of-int"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a3); sipRes = new QSize(sipCpp->size(a0, *a1, a2, tabarray)); if (!tabarray) delete[] tabarray; %End int underlinePos() const; int overlinePos() const; int strikeOutPos() const; int lineWidth() const; int averageCharWidth() const; QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const; bool operator==(const QFontMetrics &other) const; bool operator!=(const QFontMetrics &other) const; QRect tightBoundingRect(const QString &text) const; bool inFontUcs4(uint character) const; void swap(QFontMetrics &other); }; class QFontMetricsF { %TypeHeaderCode #include %End public: explicit QFontMetricsF(const QFont &); QFontMetricsF(const QFont &, QPaintDevice *pd); QFontMetricsF(const QFontMetrics &); QFontMetricsF(const QFontMetricsF &); ~QFontMetricsF(); qreal ascent() const; qreal descent() const; qreal height() const; qreal leading() const; qreal lineSpacing() const; qreal minLeftBearing() const; qreal minRightBearing() const; qreal maxWidth() const; qreal xHeight() const; bool inFont(QChar) const; qreal leftBearing(QChar) const; qreal rightBearing(QChar) const; qreal width(QChar) const /PyName=widthChar/; qreal width(const QString &string) const; QRectF boundingRect(QChar) const /PyName=boundingRectChar/; QRectF boundingRect(const QString &string) const; QRectF boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,DocType="list-of-int"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a4); sipRes = new QRectF(sipCpp->boundingRect(*a0, a1, *a2, a3, tabarray)); if (!tabarray) delete[] tabarray; %End QSizeF size(int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,DocType="list-of-int"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a3); sipRes = new QSizeF(sipCpp->size(a0, *a1, a2, tabarray)); if (!tabarray) delete[] tabarray; %End qreal underlinePos() const; qreal overlinePos() const; qreal strikeOutPos() const; qreal lineWidth() const; qreal averageCharWidth() const; QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const; bool operator==(const QFontMetricsF &other) const; bool operator!=(const QFontMetricsF &other) const; QRectF tightBoundingRect(const QString &text) const; bool inFontUcs4(uint character) const; void swap(QFontMetricsF &other); }; %ModuleHeaderCode // Used by QFontMetrics and QFontMetricsF. int *qtgui_tabarray(PyObject *l); %End %ModuleCode // Convert an optional Python list to a 0 terminated array of integers on the // heap. int *qtgui_tabarray(PyObject *l) { if (!l || l == Py_None) return 0; int *arr = new int[PyList_GET_SIZE(l) + 1]; SIP_SSIZE_T i; for (i = 0; i < PyList_GET_SIZE(l); ++i) arr[i] = SIPLong_AsLong(PyList_GET_ITEM(l, i)); arr[i] = 0; return arr; } %End PyQt-gpl-5.5.1/sip/QtGui/qgenericmatrix.sip0000644000076500000240000007524212613140040020642 0ustar philstaff00000000000000// qgenericmatrix.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // The implementation of QMatrix4x3. class QMatrix4x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[12]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11]); %End public: QMatrix4x3(); QMatrix4x3(const QMatrix4x3 &other); explicit QMatrix4x3(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[12]; if ((sipError = qtgui_matrixDataFromSequence(a0, 12, values)) == sipErrorNone) sipCpp = new QMatrix4x3(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[12]; PYQT_FLOAT data[12]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 12; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix4x3(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix4x3("); for (i = 0; i < 12; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 12; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(12, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[12]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(12, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix3x4 transposed() const; QMatrix4x3 &operator+=(const QMatrix4x3 &); QMatrix4x3 &operator-=(const QMatrix4x3 &); %If (Qt_5_0_0 -) QMatrix4x3 &operator*=(float); QMatrix4x3 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix4x3 &operator*=(qreal); QMatrix4x3 &operator/=(qreal); %End bool operator==(const QMatrix4x3 &) const; bool operator!=(const QMatrix4x3 &) const; }; // The implementation of QMatrix4x2. class QMatrix4x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[8]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7]); %End public: QMatrix4x2(); QMatrix4x2(const QMatrix4x2 &other); explicit QMatrix4x2(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[8]; if ((sipError = qtgui_matrixDataFromSequence(a0, 8, values)) == sipErrorNone) sipCpp = new QMatrix4x2(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[8]; PYQT_FLOAT data[8]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 8; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix4x2(" "%R, %R, " "%R, %R, " "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix4x2("); for (i = 0; i < 8; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 8; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(8, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[8]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(8, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix2x4 transposed() const; QMatrix4x2 &operator+=(const QMatrix4x2 &); QMatrix4x2 &operator-=(const QMatrix4x2 &); %If (Qt_5_0_0 -) QMatrix4x2 &operator*=(float); QMatrix4x2 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix4x2 &operator*=(qreal); QMatrix4x2 &operator/=(qreal); %End bool operator==(const QMatrix4x2 &) const; bool operator!=(const QMatrix4x2 &) const; }; // The implementation of QMatrix3x4. class QMatrix3x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[12]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11]); %End public: QMatrix3x4(); QMatrix3x4(const QMatrix3x4 &other); explicit QMatrix3x4(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[12]; if ((sipError = qtgui_matrixDataFromSequence(a0, 12, values)) == sipErrorNone) sipCpp = new QMatrix3x4(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[12]; PYQT_FLOAT data[12]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 12; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix3x4(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix3x4("); for (i = 0; i < 12; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 12; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(12, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[12]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(12, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(qreal value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix4x3 transposed() const; QMatrix3x4 &operator+=(const QMatrix3x4 &); QMatrix3x4 &operator-=(const QMatrix3x4 &); %If (Qt_5_0_0 -) QMatrix3x4 &operator*=(float); QMatrix3x4 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix3x4 &operator*=(qreal); QMatrix3x4 &operator/=(qreal); %End bool operator==(const QMatrix3x4 &) const; bool operator!=(const QMatrix3x4 &) const; }; // The implementation of QMatrix3x3. class QMatrix3x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[9]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"ddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8]); %End public: QMatrix3x3(); QMatrix3x3(const QMatrix3x3 &other); explicit QMatrix3x3(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[9]; if ((sipError = qtgui_matrixDataFromSequence(a0, 9, values)) == sipErrorNone) sipCpp = new QMatrix3x3(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[9]; PYQT_FLOAT data[9]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 9; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix3x3(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix3x3("); for (i = 0; i < 9; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 9; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(9, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[9]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(9, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix3x3 transposed() const; QMatrix3x3 &operator+=(const QMatrix3x3 &); QMatrix3x3 &operator-=(const QMatrix3x3 &); %If (Qt_5_0_0 -) QMatrix3x3 &operator*=(float); QMatrix3x3 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix3x3 &operator*=(qreal); QMatrix3x3 &operator/=(qreal); %End bool operator==(const QMatrix3x3 &) const; bool operator!=(const QMatrix3x3 &) const; }; // The implementation of QMatrix3x2. class QMatrix3x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[6]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5]); %End public: QMatrix3x2(); QMatrix3x2(const QMatrix3x2 &other); explicit QMatrix3x2(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[6]; if ((sipError = qtgui_matrixDataFromSequence(a0, 6, values)) == sipErrorNone) sipCpp = new QMatrix3x2(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[6]; PYQT_FLOAT data[6]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 6; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix3x2(" "%R, %R, " "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3], m[4], m[5]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix3x2("); for (i = 0; i < 6; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 6; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(6, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[6]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(6, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix2x3 transposed() const; QMatrix3x2 &operator+=(const QMatrix3x2 &); QMatrix3x2 &operator-=(const QMatrix3x2 &); %If (Qt_5_0_0 -) QMatrix3x2 &operator*=(float); QMatrix3x2 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix3x2 &operator*=(qreal); QMatrix3x2 &operator/=(qreal); %End bool operator==(const QMatrix3x2 &) const; bool operator!=(const QMatrix3x2 &) const; }; // The implementation of QMatrix2x4. class QMatrix2x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[8]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7]); %End public: QMatrix2x4(); QMatrix2x4(const QMatrix2x4 &other); explicit QMatrix2x4(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[8]; if ((sipError = qtgui_matrixDataFromSequence(a0, 8, values)) == sipErrorNone) sipCpp = new QMatrix2x4(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[8]; PYQT_FLOAT data[8]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 8; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix2x4(" "%R, %R, %R, %R, " "%R, %R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix2x4("); for (i = 0; i < 8; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 8; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(8, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[8]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(8, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix4x2 transposed() const; QMatrix2x4 &operator+=(const QMatrix2x4 &); QMatrix2x4 &operator-=(const QMatrix2x4 &); %If (Qt_5_0_0 -) QMatrix2x4 &operator*=(float); QMatrix2x4 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix2x4 &operator*=(qreal); QMatrix2x4 &operator/=(qreal); %End bool operator==(const QMatrix2x4 &) const; bool operator!=(const QMatrix2x4 &) const; }; // The implementation of QMatrix2x3. class QMatrix2x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[6]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5]); %End public: QMatrix2x3(); QMatrix2x3(const QMatrix2x3 &other); explicit QMatrix2x3(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[6]; if ((sipError = qtgui_matrixDataFromSequence(a0, 6, values)) == sipErrorNone) sipCpp = new QMatrix2x3(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[6]; PYQT_FLOAT data[6]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 6; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix2x3(" "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix2x3("); for (i = 0; i < 6; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 6; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(6, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[6]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(6, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix3x2 transposed() const; QMatrix2x3 &operator+=(const QMatrix2x3 &); QMatrix2x3 &operator-=(const QMatrix2x3 &); %If (Qt_5_0_0 -) QMatrix2x3 &operator*=(float); QMatrix2x3 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix2x3 &operator*=(qreal); QMatrix2x3 &operator/=(qreal); %End bool operator==(const QMatrix2x3 &) const; bool operator!=(const QMatrix2x3 &) const; }; // The implementation of QMatrix2x2. class QMatrix2x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[4]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3]); %End public: QMatrix2x2(); QMatrix2x2(const QMatrix2x2 &other); explicit QMatrix2x2(SIP_PYOBJECT values /DocType="sequence-of-float"/); %MethodCode PYQT_FLOAT values[4]; if ((sipError = qtgui_matrixDataFromSequence(a0, 4, values)) == sipErrorNone) sipCpp = new QMatrix2x2(values); %End SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[4]; PYQT_FLOAT data[4]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 4; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix2x2(" "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix2x2("); for (i = 0; i < 4; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 4; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(4, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode PYQT_FLOAT values[4]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(4, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix2x2 transposed() const; QMatrix2x2 &operator+=(const QMatrix2x2 &); QMatrix2x2 &operator-=(const QMatrix2x2 &); %If (Qt_5_0_0 -) QMatrix2x2 &operator*=(float); QMatrix2x2 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix2x2 &operator*=(qreal); QMatrix2x2 &operator/=(qreal); %End bool operator==(const QMatrix2x2 &) const; bool operator!=(const QMatrix2x2 &) const; }; PyQt-gpl-5.5.1/sip/QtGui/qglyphrun.sip0000644000076500000240000000441412613140040017642 0ustar philstaff00000000000000// qglyphrun.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_RawFont) class QGlyphRun { %TypeHeaderCode #include %End public: QGlyphRun(); QGlyphRun(const QGlyphRun &other); ~QGlyphRun(); QRawFont rawFont() const; void setRawFont(const QRawFont &rawFont); QVector glyphIndexes() const; void setGlyphIndexes(const QVector &glyphIndexes); QVector positions() const; void setPositions(const QVector &positions); void clear(); bool operator==(const QGlyphRun &other) const; bool operator!=(const QGlyphRun &other) const; void setOverline(bool overline); bool overline() const; void setUnderline(bool underline); bool underline() const; void setStrikeOut(bool strikeOut); bool strikeOut() const; enum GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature, }; typedef QFlags GlyphRunFlags; void setRightToLeft(bool on); bool isRightToLeft() const; void setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true); void setFlags(QFlags flags); QFlags flags() const; void setBoundingRect(const QRectF &boundingRect); QRectF boundingRect() const; bool isEmpty() const; void swap(QGlyphRun &other); }; %End PyQt-gpl-5.5.1/sip/QtGui/qguiapplication.sip0000644000076500000240000002343512613140040021006 0ustar philstaff00000000000000// qguiapplication.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGuiApplication : QCoreApplication { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_Desktop_OpenGL) {sipName_QOpenGLTimeMonitor, &sipType_QOpenGLTimeMonitor, -1, 1}, #else {0, 0, -1, 1}, #endif {sipName_QSyntaxHighlighter, &sipType_QSyntaxHighlighter, -1, 2}, {sipName_QWindow, &sipType_QWindow, 25, 3}, {sipName_QPdfWriter, &sipType_QPdfWriter, -1, 4}, {sipName_QMovie, &sipType_QMovie, -1, 5}, #if defined(SIP_FEATURE_PyQt_SessionManager) {sipName_QSessionManager, &sipType_QSessionManager, -1, 6}, #else {0, 0, -1, 6}, #endif {sipName_QAbstractTextDocumentLayout, &sipType_QAbstractTextDocumentLayout, -1, 7}, {sipName_QScreen, &sipType_QScreen, -1, 8}, {sipName_QTextObject, &sipType_QTextObject, 28, 9}, {sipName_QStandardItemModel, &sipType_QStandardItemModel, -1, 10}, {sipName_QDrag, &sipType_QDrag, -1, 11}, #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLContextGroup, &sipType_QOpenGLContextGroup, -1, 12}, #else {0, 0, -1, 12}, #endif {sipName_QValidator, &sipType_QValidator, 32, 13}, {sipName_QTextDocument, &sipType_QTextDocument, -1, 14}, #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLVertexArrayObject, &sipType_QOpenGLVertexArrayObject, -1, 15}, #else {0, 0, -1, 15}, #endif #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLDebugLogger, &sipType_QOpenGLDebugLogger, -1, 16}, #else {0, 0, -1, 16}, #endif {sipName_QGuiApplication, &sipType_QGuiApplication, -1, 17}, #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_Desktop_OpenGL) {sipName_QOpenGLTimerQuery, &sipType_QOpenGLTimerQuery, -1, 18}, #else {0, 0, -1, 18}, #endif #if QT_VERSION >= 0x050100 {sipName_QOffscreenSurface, &sipType_QOffscreenSurface, -1, 19}, #else {0, 0, -1, 19}, #endif #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLShaderProgram, &sipType_QOpenGLShaderProgram, -1, 20}, #else {0, 0, -1, 20}, #endif {sipName_QStyleHints, &sipType_QStyleHints, -1, 21}, {sipName_QClipboard, &sipType_QClipboard, -1, 22}, #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLShader, &sipType_QOpenGLShader, -1, 23}, #else {0, 0, -1, 23}, #endif #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLContext, &sipType_QOpenGLContext, -1, 24}, #else {0, 0, -1, 24}, #endif {sipName_QInputMethod, &sipType_QInputMethod, -1, -1}, #if QT_VERSION >= 0x050400 {sipName_QPaintDeviceWindow, &sipType_QPaintDeviceWindow, 26, -1}, #else {0, 0, 26, -1}, #endif #if QT_VERSION >= 0x050400 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLWindow, &sipType_QOpenGLWindow, -1, 27}, #else {0, 0, -1, 27}, #endif #if QT_VERSION >= 0x050400 {sipName_QRasterWindow, &sipType_QRasterWindow, -1, -1}, #else {0, 0, -1, -1}, #endif {sipName_QTextBlockGroup, &sipType_QTextBlockGroup, 30, 29}, {sipName_QTextFrame, &sipType_QTextFrame, 31, -1}, {sipName_QTextList, &sipType_QTextList, -1, -1}, {sipName_QTextTable, &sipType_QTextTable, -1, -1}, #if QT_VERSION >= 0x050100 {sipName_QRegularExpressionValidator, &sipType_QRegularExpressionValidator, -1, 33}, #else {0, 0, -1, 33}, #endif {sipName_QIntValidator, &sipType_QIntValidator, -1, 34}, {sipName_QDoubleValidator, &sipType_QDoubleValidator, -1, 35}, {sipName_QRegExpValidator, &sipType_QRegExpValidator, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QGuiApplication(SIP_PYLIST argv /DocType="list-of-str"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt5_qtgui_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQGuiApplication(nargc, argv, QCoreApplication::ApplicationFlags); Py_END_ALLOW_THREADS // Now modify the original list. pyqt5_qtgui_update_argv_list(a0, argc, argv); } %End virtual ~QGuiApplication() /ReleaseGIL/; static QWindowList allWindows(); static QWindowList topLevelWindows(); static QWindow *topLevelAt(const QPoint &pos); static QString platformName(); static QWindow *focusWindow(); static QObject *focusObject(); static QScreen *primaryScreen(); static QList screens(); static QCursor *overrideCursor(); static void setOverrideCursor(const QCursor &); static void changeOverrideCursor(const QCursor &); static void restoreOverrideCursor(); static QFont font(); static void setFont(const QFont &); static QClipboard *clipboard(); static QPalette palette(); static void setPalette(const QPalette &pal); static Qt::KeyboardModifiers keyboardModifiers(); static Qt::KeyboardModifiers queryKeyboardModifiers(); static Qt::MouseButtons mouseButtons(); static void setLayoutDirection(Qt::LayoutDirection direction); static Qt::LayoutDirection layoutDirection(); static bool isRightToLeft(); static bool isLeftToRight(); static void setDesktopSettingsAware(bool on); static bool desktopSettingsAware(); static void setQuitOnLastWindowClosed(bool quit); static bool quitOnLastWindowClosed(); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End virtual bool notify(QObject *, QEvent *); signals: void fontDatabaseChanged(); void screenAdded(QScreen *screen); void lastWindowClosed(); void focusObjectChanged(QObject *focusObject); %If (PyQt_SessionManager) void commitDataRequest(QSessionManager &sessionManager); %End %If (PyQt_SessionManager) void saveStateRequest(QSessionManager &sessionManager); %End void focusWindowChanged(QWindow *focusWindow); %If (Qt_5_2_0 -) void applicationStateChanged(Qt::ApplicationState state); %End public: static void setApplicationDisplayName(const QString &name); static QString applicationDisplayName(); static QWindow *modalWindow(); qreal devicePixelRatio() const; %If (PyQt_SessionManager) bool isSessionRestored() const; %End %If (PyQt_SessionManager) QString sessionId() const; %End %If (PyQt_SessionManager) QString sessionKey() const; %End %If (PyQt_SessionManager) bool isSavingSession() const; %End %If (Qt_5_2_0 -) static Qt::ApplicationState applicationState(); %End %If (Qt_5_2_0 -) static void sync(); %End %If (Qt_5_3_0 -) static void setWindowIcon(const QIcon &icon); %End %If (Qt_5_3_0 -) static QIcon windowIcon(); %End protected: virtual bool event(QEvent *); signals: %If (Qt_5_4_0 -) void screenRemoved(QScreen *screen); %End %If (Qt_5_4_0 -) void layoutDirectionChanged(Qt::LayoutDirection direction); %End %If (Qt_5_4_0 -) void paletteChanged(const QPalette &pal); %End private: QGuiApplication(const QGuiApplication &); }; %ModuleHeaderCode // Imports from QtCore. typedef char **(*pyqt5_qtgui_from_argv_list_t)(PyObject *, int &); extern pyqt5_qtgui_from_argv_list_t pyqt5_qtgui_from_argv_list; typedef void (*pyqt5_qtgui_update_argv_list_t)(PyObject *, int, char **); extern pyqt5_qtgui_update_argv_list_t pyqt5_qtgui_update_argv_list; %End %ModuleCode // Imports from QtCore. pyqt5_qtgui_from_argv_list_t pyqt5_qtgui_from_argv_list; pyqt5_qtgui_update_argv_list_t pyqt5_qtgui_update_argv_list; %End %InitialisationCode // Export our own helpers. sipExportSymbol("qtgui_wrap_ancestors", (void *)qtgui_wrap_ancestors); %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtgui_from_argv_list = (pyqt5_qtgui_from_argv_list_t)sipImportSymbol("pyqt5_from_argv_list"); pyqt5_qtgui_update_argv_list = (pyqt5_qtgui_update_argv_list_t)sipImportSymbol("pyqt5_update_argv_list"); %End PyQt-gpl-5.5.1/sip/QtGui/qicon.sip0000644000076500000240000000713712613140040016727 0ustar philstaff00000000000000// qicon.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIcon /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Mode { Normal, Disabled, Active, Selected, }; enum State { On, Off, }; QIcon(); QIcon(const QPixmap &pixmap); QIcon(const QIcon &other); explicit QIcon(const QString &fileName); explicit QIcon(QIconEngine *engine /Transfer/); QIcon(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QIcon(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QIcon(); QPixmap pixmap(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(int w, int h, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(int extent, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %If (Qt_5_1_0 -) QPixmap pixmap(QWindow *window, const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %End QSize actualSize(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %If (Qt_5_1_0 -) QSize actualSize(QWindow *window, const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %End QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; void paint(QPainter *painter, const QRect &rect, Qt::Alignment alignment = Qt::AlignCenter, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; void paint(QPainter *painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; bool isNull() const; bool isDetached() const; void addPixmap(const QPixmap &pixmap, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); void addFile(const QString &fileName, const QSize &size = QSize(), QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); qint64 cacheKey() const; static QIcon fromTheme(const QString &name, const QIcon &fallback = QIcon()); static bool hasThemeIcon(const QString &name); static QStringList themeSearchPaths(); static void setThemeSearchPaths(const QStringList &searchpath); static QString themeName(); static void setThemeName(const QString &path); QString name() const; void swap(QIcon &other); }; QDataStream &operator<<(QDataStream &, const QIcon & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QIcon & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qiconengine.sip0000644000076500000240000000414112613140040020105 0ustar philstaff00000000000000// qiconengine.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIconEngine /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QIconEngine(); virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0; virtual QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); virtual void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state); virtual QString key() const; virtual QIconEngine *clone() const = 0 /Factory/; virtual bool read(QDataStream &in); virtual bool write(QDataStream &out) const; enum IconEngineHook { AvailableSizesHook, IconNameHook, }; struct AvailableSizesArgument { %TypeHeaderCode #include %End QIcon::Mode mode; QIcon::State state; QList sizes; }; virtual QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; virtual QString iconName() const; }; PyQt-gpl-5.5.1/sip/QtGui/qimage.sip0000644000076500000240000002165212613140040017057 0ustar philstaff00000000000000// qimage.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImage : QPaintDevice { %TypeHeaderCode #include %End public: enum InvertMode { InvertRgb, InvertRgba, }; enum Format { Format_Invalid, Format_Mono, Format_MonoLSB, Format_Indexed8, Format_RGB32, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB16, Format_ARGB8565_Premultiplied, Format_RGB666, Format_ARGB6666_Premultiplied, Format_RGB555, Format_ARGB8555_Premultiplied, Format_RGB888, Format_RGB444, Format_ARGB4444_Premultiplied, %If (Qt_5_2_0 -) Format_RGBX8888, %End %If (Qt_5_2_0 -) Format_RGBA8888, %End %If (Qt_5_2_0 -) Format_RGBA8888_Premultiplied, %End %If (Qt_5_4_0 -) Format_BGR30, %End %If (Qt_5_4_0 -) Format_A2BGR30_Premultiplied, %End %If (Qt_5_4_0 -) Format_RGB30, %End %If (Qt_5_4_0 -) Format_A2RGB30_Premultiplied, %End %If (Qt_5_5_0 -) Format_Alpha8, %End %If (Qt_5_5_0 -) Format_Grayscale8, %End }; QImage(); QImage(const QSize &size, QImage::Format format); QImage(int width, int height, QImage::Format format); QImage(const uchar *data /KeepReference/, int width, int height, QImage::Format format); QImage(void *data, int width, int height, QImage::Format format) [(uchar *data, int width, int height, QImage::Format format)]; QImage(const uchar *data /KeepReference/, int width, int height, int bytesPerLine, QImage::Format format); QImage(void *data, int width, int height, int bytesPerLine, QImage::Format format) [(uchar *data, int width, int height, int bytesPerLine, QImage::Format format)]; explicit QImage(SIP_PYLIST xpm /DocType="list-of-str"/) [(const char **xpm)]; %MethodCode // The Python interface is a list of strings that make up the image. const char **str = QtGui_ListToArray(a0); if (str) { sipCpp = new sipQImage(str); QtGui_DeleteArray(str); } else sipIsErr = 1; %End QImage(const QString &fileName, const char *format = 0) /ReleaseGIL/; QImage(const QImage &); QImage(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQImage(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QImage(); bool isNull() const; virtual int devType() const; bool operator==(const QImage &) const; bool operator!=(const QImage &) const; void detach(); bool isDetached() const; QImage copy(const QRect &rect = QRect()) const; QImage copy(int x, int y, int w, int h) const; QImage::Format format() const; QImage convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const; QImage convertToFormat(QImage::Format format, const QVector &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const; int width() const; int height() const; QSize size() const; QRect rect() const; int depth() const; QRgb color(int i) const; void setColor(int i, QRgb c); bool allGray() const; bool isGrayscale() const; void *bits() [uchar * ()]; const void *constBits() const [const uchar * ()]; void *scanLine(int) [uchar * (int)]; const void *constScanLine(int) const [const uchar * (int)]; int bytesPerLine() const; bool valid(const QPoint &pt) const; bool valid(int x, int y) const; int pixelIndex(const QPoint &pt) const; int pixelIndex(int x, int y) const; QRgb pixel(const QPoint &pt) const; QRgb pixel(int x, int y) const; void setPixel(const QPoint &pt, uint index_or_rgb); void setPixel(int x, int y, uint index_or_rgb); QVector colorTable() const; void setColorTable(const QVector colors); void fill(Qt::GlobalColor color /Constrained/); void fill(const QColor &color); void fill(uint pixel); bool hasAlphaChannel() const; QImage createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const; QImage createHeuristicMask(bool clipTight = true) const; QImage scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QImage scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QImage scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage mirrored(bool horizontal = false, bool vertical = true) const; QImage rgbSwapped() const; void invertPixels(QImage::InvertMode mode = QImage::InvertRgb); bool load(QIODevice *device, const char *format) /ReleaseGIL/; bool load(const QString &fileName, const char *format = 0) /ReleaseGIL/; bool loadFromData(const uchar *data /Array/, int len /ArraySize/, const char *format = 0); bool loadFromData(const QByteArray &data, const char *format = 0); bool save(const QString &fileName, const char *format = 0, int quality = -1) const /ReleaseGIL/; bool save(QIODevice *device, const char *format = 0, int quality = -1) const /ReleaseGIL/; static QImage fromData(const uchar *data /Array/, int size /ArraySize/, const char *format = 0); static QImage fromData(const QByteArray &data, const char *format = 0); virtual QPaintEngine *paintEngine() const; int dotsPerMeterX() const; int dotsPerMeterY() const; void setDotsPerMeterX(int); void setDotsPerMeterY(int); QPoint offset() const; void setOffset(const QPoint &); QStringList textKeys() const; QString text(const QString &key /DocValue="''"/ = QString()) const; void setText(const QString &key, const QString &value); protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; %If (Qt_5_5_0 -) QImage smoothScaled(int w, int h) const; %End public: QImage createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const; QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const; static QTransform trueMatrix(const QTransform &, int w, int h); qint64 cacheKey() const; int colorCount() const; void setColorCount(int); int byteCount() const; int bitPlaneCount() const; void swap(QImage &other); qreal devicePixelRatio() const; void setDevicePixelRatio(qreal scaleFactor); %If (Qt_5_4_0 -) QPixelFormat pixelFormat() const; %End %If (Qt_5_4_0 -) static QPixelFormat toPixelFormat(QImage::Format format); %End %If (Qt_5_4_0 -) static QImage::Format toImageFormat(QPixelFormat format); %End }; QDataStream &operator<<(QDataStream &, const QImage & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QImage & /Constrained/) /ReleaseGIL/; %ModuleHeaderCode const char **QtGui_ListToArray(PyObject *lst); void QtGui_DeleteArray(const char **arr); %End %ModuleCode // Convert a list of strings to an array of ASCII strings on the heap. Used by // QImage and QPixmap. const char **QtGui_ListToArray(PyObject *lst) { SIP_SSIZE_T nstr = PyList_Size(lst); const char **arr = new const char *[nstr + 1]; for (SIP_SSIZE_T i = 0; i < nstr; ++i) { PyObject *ascii_obj = PyList_GetItem(lst, i); const char *ascii = sipString_AsASCIIString(&ascii_obj); if (!ascii) { while (i-- > 0) delete[] arr[i]; delete[] arr; return 0; } // Copy the string. arr[i] = qstrdup(ascii); Py_DECREF(ascii_obj); } // The sentinal. arr[nstr] = 0; return arr; } // Return a string array created by QtGui_ListToArray() to the heap. void QtGui_DeleteArray(const char **arr) { for (SIP_SSIZE_T i = 0; arr[i]; ++i) delete[] arr[i]; delete[] arr; } %End PyQt-gpl-5.5.1/sip/QtGui/qimageiohandler.sip0000644000076500000240000000554712613140040020752 0ustar philstaff00000000000000// qimageiohandler.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageIOHandler { %TypeHeaderCode #include %End public: enum ImageOption { Size, ClipRect, Description, ScaledClipRect, ScaledSize, CompressionRatio, Gamma, Quality, Name, SubType, IncrementalReading, Endianness, Animation, BackgroundColor, %If (Qt_5_4_0 -) SupportedSubTypes, %End %If (Qt_5_5_0 -) OptimizedWrite, %End %If (Qt_5_5_0 -) ProgressiveScanWrite, %End %If (Qt_5_5_0 -) ImageTransformation, %End %If (Qt_5_5_0 -) TransformedByDefault, %End }; QImageIOHandler(); virtual ~QImageIOHandler(); void setDevice(QIODevice *device); QIODevice *device() const; void setFormat(const QByteArray &format); QByteArray format() const; virtual bool canRead() const = 0; virtual bool read(QImage *image) = 0; virtual bool write(const QImage &image); virtual QVariant option(QImageIOHandler::ImageOption option) const; virtual void setOption(QImageIOHandler::ImageOption option, const QVariant &value); virtual bool supportsOption(QImageIOHandler::ImageOption option) const; virtual bool jumpToNextImage(); virtual bool jumpToImage(int imageNumber); virtual int loopCount() const; virtual int imageCount() const; virtual int nextImageDelay() const; virtual int currentImageNumber() const; virtual QRect currentImageRect() const; %If (Qt_5_5_0 -) enum Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, TransformationMirrorAndRotate90, TransformationFlipAndRotate90, TransformationRotate270, }; %End %If (Qt_5_5_0 -) typedef QFlags Transformations; %End private: QImageIOHandler(const QImageIOHandler &); }; PyQt-gpl-5.5.1/sip/QtGui/qimagereader.sip0000644000076500000240000000657612613140040020252 0ustar philstaff00000000000000// qimagereader.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageReader { %TypeHeaderCode #include %End public: enum ImageReaderError { UnknownError, FileNotFoundError, DeviceError, UnsupportedFormatError, InvalidDataError, }; QImageReader(); QImageReader(QIODevice *device, const QByteArray &format = QByteArray()); QImageReader(const QString &fileName, const QByteArray &format = QByteArray()); ~QImageReader(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; QSize size() const; void setClipRect(const QRect &rect); QRect clipRect() const; void setScaledSize(const QSize &size); QSize scaledSize() const; void setScaledClipRect(const QRect &rect); QRect scaledClipRect() const; bool canRead() const; QImage read() /ReleaseGIL/; bool read(QImage *image) /ReleaseGIL/; bool jumpToNextImage(); bool jumpToImage(int imageNumber); int loopCount() const; int imageCount() const; int nextImageDelay() const; int currentImageNumber() const; QRect currentImageRect() const; QImageReader::ImageReaderError error() const; QString errorString() const; static QByteArray imageFormat(const QString &fileName); static QByteArray imageFormat(QIODevice *device); static QList supportedImageFormats(); QStringList textKeys() const; QString text(const QString &key) const; void setBackgroundColor(const QColor &color); QColor backgroundColor() const; bool supportsAnimation() const; void setQuality(int quality); int quality() const; bool supportsOption(QImageIOHandler::ImageOption option) const; void setAutoDetectImageFormat(bool enabled); bool autoDetectImageFormat() const; QImage::Format imageFormat() const; void setDecideFormatFromContent(bool ignored); bool decideFormatFromContent() const; %If (Qt_5_1_0 -) static QList supportedMimeTypes(); %End %If (Qt_5_4_0 -) QByteArray subType() const; %End %If (Qt_5_4_0 -) QList supportedSubTypes() const; %End %If (Qt_5_5_0 -) QFlags transformation() const; %End %If (Qt_5_5_0 -) void setAutoTransform(bool enabled); %End %If (Qt_5_5_0 -) bool autoTransform() const; %End private: QImageReader(const QImageReader &); }; PyQt-gpl-5.5.1/sip/QtGui/qimagewriter.sip0000644000076500000240000000544012613140040020311 0ustar philstaff00000000000000// qimagewriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageWriter { %TypeHeaderCode #include %End public: enum ImageWriterError { UnknownError, DeviceError, UnsupportedFormatError, }; QImageWriter(); QImageWriter(QIODevice *device, const QByteArray &format); QImageWriter(const QString &fileName, const QByteArray &format = QByteArray()); ~QImageWriter(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; void setQuality(int quality); int quality() const; void setGamma(float gamma); float gamma() const; bool canWrite() const; bool write(const QImage &image) /ReleaseGIL/; QImageWriter::ImageWriterError error() const; QString errorString() const; static QList supportedImageFormats(); void setText(const QString &key, const QString &text); bool supportsOption(QImageIOHandler::ImageOption option) const; void setCompression(int compression); int compression() const; %If (Qt_5_1_0 -) static QList supportedMimeTypes(); %End %If (Qt_5_4_0 -) void setSubType(const QByteArray &type); %End %If (Qt_5_4_0 -) QByteArray subType() const; %End %If (Qt_5_4_0 -) QList supportedSubTypes() const; %End %If (Qt_5_5_0 -) void setOptimizedWrite(bool optimize); %End %If (Qt_5_5_0 -) bool optimizedWrite() const; %End %If (Qt_5_5_0 -) void setProgressiveScanWrite(bool progressive); %End %If (Qt_5_5_0 -) bool progressiveScanWrite() const; %End %If (Qt_5_5_0 -) QFlags transformation() const; %End %If (Qt_5_5_0 -) void setTransformation(QFlags orientation); %End private: QImageWriter(const QImageWriter &); }; PyQt-gpl-5.5.1/sip/QtGui/qinputmethod.sip0000644000076500000240000000421312613140040020327 0ustar philstaff00000000000000// qinputmethod.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputMethod : QObject { %TypeHeaderCode #include %End public: QTransform inputItemTransform() const; void setInputItemTransform(const QTransform &transform); QRectF cursorRectangle() const; QRectF keyboardRectangle() const; enum Action { Click, ContextMenu, }; bool isVisible() const; void setVisible(bool visible); bool isAnimating() const; QLocale locale() const; Qt::LayoutDirection inputDirection() const; %If (Qt_5_1_0 -) QRectF inputItemRectangle() const; %End %If (Qt_5_1_0 -) void setInputItemRectangle(const QRectF &rect); %End %If (Qt_5_3_0 -) static QVariant queryFocusObject(Qt::InputMethodQuery query, QVariant argument); %End public slots: void show(); void hide(); void update(Qt::InputMethodQueries queries); void reset(); void commit(); void invokeAction(QInputMethod::Action a, int cursorPosition); signals: void cursorRectangleChanged(); void keyboardRectangleChanged(); void visibleChanged(); void animatingChanged(); void localeChanged(); void inputDirectionChanged(Qt::LayoutDirection newDirection); private: QInputMethod(); virtual ~QInputMethod(); }; PyQt-gpl-5.5.1/sip/QtGui/qkeysequence.sip0000644000076500000240000001466512613140040020324 0ustar philstaff00000000000000// qkeysequence.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QKeySequence { %TypeHeaderCode #include %End %ConvertToTypeCode // Allow a StandardKey, QString or an integer whenever a QKeySequence is // expected. if (sipIsErr == NULL) { if (sipCanConvertToType(sipPy, sipType_QKeySequence, SIP_NO_CONVERTORS)) return 1; if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QKeySequence_StandardKey))) return 1; if (sipCanConvertToType(sipPy, sipType_QString, 0)) return 1; PyErr_Clear(); SIPLong_AsLong(sipPy); return !PyErr_Occurred(); } if (sipCanConvertToType(sipPy, sipType_QKeySequence, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QKeySequence, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QKeySequence_StandardKey))) { *sipCppPtr = new QKeySequence((QKeySequence::StandardKey)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } if (sipCanConvertToType(sipPy, sipType_QString, 0)) { int state; QString *qs = reinterpret_cast(sipConvertToType(sipPy, sipType_QString, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(qs, sipType_QString, state); return 0; } *sipCppPtr = new QKeySequence(*qs); sipReleaseType(qs, sipType_QString, state); return sipGetState(sipTransferObj); } int key = SIPLong_AsLong(sipPy); *sipCppPtr = new QKeySequence(key); return sipGetState(sipTransferObj); %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->operator[](0), sipCpp->operator[](1), sipCpp->operator[](2), sipCpp->operator[](3)); %End public: enum SequenceFormat { NativeText, PortableText, }; enum SequenceMatch { NoMatch, PartialMatch, ExactMatch, }; enum StandardKey { UnknownKey, HelpContents, WhatsThis, Open, Close, Save, New, Delete, Cut, Copy, Paste, Undo, Redo, Back, Forward, Refresh, ZoomIn, ZoomOut, Print, AddTab, NextChild, PreviousChild, Find, FindNext, FindPrevious, Replace, SelectAll, Bold, Italic, Underline, MoveToNextChar, MoveToPreviousChar, MoveToNextWord, MoveToPreviousWord, MoveToNextLine, MoveToPreviousLine, MoveToNextPage, MoveToPreviousPage, MoveToStartOfLine, MoveToEndOfLine, MoveToStartOfBlock, MoveToEndOfBlock, MoveToStartOfDocument, MoveToEndOfDocument, SelectNextChar, SelectPreviousChar, SelectNextWord, SelectPreviousWord, SelectNextLine, SelectPreviousLine, SelectNextPage, SelectPreviousPage, SelectStartOfLine, SelectEndOfLine, SelectStartOfBlock, SelectEndOfBlock, SelectStartOfDocument, SelectEndOfDocument, DeleteStartOfWord, DeleteEndOfWord, DeleteEndOfLine, InsertParagraphSeparator, InsertLineSeparator, SaveAs, Preferences, Quit, FullScreen, %If (Qt_5_1_0 -) Deselect, %End %If (Qt_5_2_0 -) DeleteCompleteLine, %End %If (Qt_5_5_0 -) Backspace, %End }; QKeySequence(); QKeySequence(const QKeySequence &ks); QKeySequence(const QString &key, QKeySequence::SequenceFormat format = QKeySequence::NativeText); QKeySequence(int k1, int key2 = 0, int key3 = 0, int key4 = 0); QKeySequence(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QKeySequence(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QKeySequence(); int count() const /__len__/; bool isEmpty() const; QKeySequence::SequenceMatch matches(const QKeySequence &seq) const; static QKeySequence mnemonic(const QString &text); int operator[](int i) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((uint)idx); %End bool operator==(const QKeySequence &other) const; bool operator!=(const QKeySequence &other) const; bool operator<(const QKeySequence &ks) const; bool operator>(const QKeySequence &other) const; bool operator<=(const QKeySequence &other) const; bool operator>=(const QKeySequence &other) const; bool isDetached() const; void swap(QKeySequence &other); QString toString(QKeySequence::SequenceFormat format = QKeySequence::PortableText) const; static QKeySequence fromString(const QString &str, QKeySequence::SequenceFormat format = QKeySequence::PortableText); static QList keyBindings(QKeySequence::StandardKey key); %If (Qt_5_1_0 -) static QList listFromString(const QString &str, QKeySequence::SequenceFormat format = QKeySequence::PortableText); %End %If (Qt_5_1_0 -) static QString listToString(const QList &list, QKeySequence::SequenceFormat format = QKeySequence::PortableText); %End }; QDataStream &operator<<(QDataStream &in, const QKeySequence &ks /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &out, QKeySequence &ks /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qmatrix4x4.sip0000644000076500000240000002464212613140040017643 0ustar philstaff00000000000000// qmatrix4x4.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QMatrix4x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[16]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11], (double)data[12], (double)data[13], (double)data[14], (double)data[15]); %End public: QMatrix4x4(); explicit QMatrix4x4(SIP_PYOBJECT values /DocType="sequence-of-float"/) [(const float *values)]; %MethodCode float values[16]; if ((sipError = qtgui_matrixDataFromSequence(a0, 16, values)) == sipErrorNone) sipCpp = new QMatrix4x4(values); %End QMatrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44); QMatrix4x4(const QTransform &transform); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode bool bad = false; int i; PyObject *m[16]; PYQT_FLOAT data[16]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 16; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix4x4(" "%R, %R, %R, %R, " "%R, %R, %R, %R, " "%R, %R, %R, %R, " "%R, %R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix4x4("); for (i = 0; i < 16; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 16; ++i) Py_XDECREF(m[i]); %End double determinant() const; QMatrix4x4 inverted(bool *invertible = 0) const; QMatrix4x4 transposed() const; QMatrix3x3 normalMatrix() const; void scale(const QVector3D &vector); void scale(float x, float y); void scale(float x, float y, float z); void scale(float factor); void translate(const QVector3D &vector); void translate(float x, float y); void translate(float x, float y, float z); void rotate(float angle, const QVector3D &vector); void rotate(float angle, float x, float y, float z = 0.0f); void rotate(const QQuaternion &quaternion); void ortho(const QRect &rect); void ortho(const QRectF &rect); void ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane); void frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane); void perspective(float angle, float aspect, float nearPlane, float farPlane); void lookAt(const QVector3D &eye, const QVector3D ¢er, const QVector3D &up); SIP_PYLIST copyDataTo() const /DocType="list-of-float"/; %MethodCode float values[16]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(16, values, &sipRes); %End QTransform toTransform() const; QTransform toTransform(float distanceToPlane) const; QRect mapRect(const QRect &rect) const; QRectF mapRect(const QRectF &rect) const; SIP_PYLIST data() /DocType="list-of-float"/; %MethodCode sipError = qtgui_matrixDataAsList(16, sipCpp->constData(), &sipRes); %End void optimize(); SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End QVector4D column(int index) const; void setColumn(int index, const QVector4D &value); QVector4D row(int index) const; void setRow(int index, const QVector4D &value); bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix4x4 &operator+=(const QMatrix4x4 &other); QMatrix4x4 &operator-=(const QMatrix4x4 &other); QMatrix4x4 &operator*=(const QMatrix4x4 &other) /__imatmul__/; QMatrix4x4 &operator*=(float factor); QMatrix4x4 &operator/=(float divisor); bool operator==(const QMatrix4x4 &other) const; bool operator!=(const QMatrix4x4 &other) const; QPoint map(const QPoint &point) const; QPointF map(const QPointF &point) const; QVector3D map(const QVector3D &point) const; QVector3D mapVector(const QVector3D &vector) const; QVector4D map(const QVector4D &point) const; %If (Qt_5_4_0 -) void viewport(float left, float bottom, float width, float height, float nearPlane = 0.0f, float farPlane = 1.0e+0f); %End %If (Qt_5_4_0 -) void viewport(const QRectF &rect); %End %If (Qt_5_5_0 -) bool isAffine() const; %End }; QMatrix4x4 operator/(const QMatrix4x4 &matrix, float divisor); QMatrix4x4 operator+(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QMatrix4x4 operator-(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QMatrix4x4 operator*(const QMatrix4x4 &m1, const QMatrix4x4 &m2) /__matmul__/; QVector3D operator*(const QVector3D &vector, const QMatrix4x4 &matrix); QVector3D operator*(const QMatrix4x4 &matrix, const QVector3D &vector); QVector4D operator*(const QVector4D &vector, const QMatrix4x4 &matrix); QVector4D operator*(const QMatrix4x4 &matrix, const QVector4D &vector); QPoint operator*(const QPoint &point, const QMatrix4x4 &matrix); QPointF operator*(const QPointF &point, const QMatrix4x4 &matrix); QPoint operator*(const QMatrix4x4 &matrix, const QPoint &point); QPointF operator*(const QMatrix4x4 &matrix, const QPointF &point); QMatrix4x4 operator-(const QMatrix4x4 &matrix); QMatrix4x4 operator*(float factor, const QMatrix4x4 &matrix); QMatrix4x4 operator*(const QMatrix4x4 &matrix, float factor); bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QDataStream &operator<<(QDataStream &, const QMatrix4x4 & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix4x4 & /Constrained/) /ReleaseGIL/; %ModuleHeaderCode // Helpers for the matrix classes. typedef float PYQT_FLOAT; sipErrorState qtgui_matrixParseIndex(PyObject *tup, int nr_rows, int nr_columns, int *row, int *column); sipErrorState qtgui_matrixDataFromSequence(PyObject *seq, int nr_values, PYQT_FLOAT *values); sipErrorState qtgui_matrixDataAsList(int nr_values, const PYQT_FLOAT *values, PyObject **list); %End %ModuleCode // Convert a Python object to a row and column. sipErrorState qtgui_matrixParseIndex(PyObject *tup, int nr_rows, int nr_columns, int *row, int *column) { sipErrorState es = sipErrorContinue; if (PyTuple_Check(tup) && PyArg_ParseTuple(tup, "ii", row, column)) if (*row >= 0 && *row < nr_rows && *column >= 0 && *column < nr_columns) es = sipErrorNone; if (es == sipErrorContinue) PyErr_Format(PyExc_IndexError, "an index must be a row in the range 0 to %d and a column in the range 0 to %d", nr_rows - 1, nr_columns - 1); return es; } // Convert a Python object to an array of qreals. sipErrorState qtgui_matrixDataFromSequence(PyObject *seq, int nr_values, PYQT_FLOAT *values) { sipErrorState es; if (PySequence_Size(seq) == nr_values) { es = sipErrorNone; for (int i = 0; i < nr_values; ++i) { PyObject *value = PySequence_GetItem(seq, i); if (!value) { es = sipErrorFail; break; } PyErr_Clear(); double d = PyFloat_AsDouble(value); if (PyErr_Occurred()) { Py_DECREF(value); es = sipErrorContinue; break; } Py_DECREF(value); *values++ = d; } } else { es = sipErrorContinue; } if (es == sipErrorContinue) PyErr_Format(PyExc_TypeError, "a sequence of %d floats is expected", nr_values); return es; } // Convert an array of qreals to a Python list. sipErrorState qtgui_matrixDataAsList(int nr_values, const PYQT_FLOAT *values, PyObject **list) { PyObject *l = PyList_New(nr_values); if (!l) return sipErrorFail; for (int i = 0; i < nr_values; ++i) { PyObject *value = PyFloat_FromDouble(*values++); if (!value) { Py_DECREF(l); return sipErrorFail; } PyList_SET_ITEM(l, i, value); } *list = l; return sipErrorNone; } %End PyQt-gpl-5.5.1/sip/QtGui/qmovie.sip0000644000076500000240000000535312613140040017114 0ustar philstaff00000000000000// qmovie.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMovie : QObject { %TypeHeaderCode #include %End public: enum MovieState { NotRunning, Paused, Running, }; enum CacheMode { CacheNone, CacheAll, }; explicit QMovie(QObject *parent /TransferThis/ = 0); QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent /TransferThis/ = 0); QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent /TransferThis/ = 0); virtual ~QMovie(); static QList supportedFormats(); void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; void setFormat(const QByteArray &format); QByteArray format() const; void setBackgroundColor(const QColor &color); QColor backgroundColor() const; QMovie::MovieState state() const; QRect frameRect() const; QImage currentImage() const; QPixmap currentPixmap() const; bool isValid() const; bool jumpToFrame(int frameNumber); int loopCount() const; int frameCount() const; int nextFrameDelay() const; int currentFrameNumber() const; void setSpeed(int percentSpeed); int speed() const; QSize scaledSize(); void setScaledSize(const QSize &size); QMovie::CacheMode cacheMode() const; void setCacheMode(QMovie::CacheMode mode); signals: void started(); void resized(const QSize &size); void updated(const QRect &rect); void stateChanged(QMovie::MovieState state); void error(QImageReader::ImageReaderError error); void finished(); void frameChanged(int frameNumber); public slots: void start(); bool jumpToNextFrame(); void setPaused(bool paused); void stop(); private: QMovie(const QMovie &); }; PyQt-gpl-5.5.1/sip/QtGui/qoffscreensurface.sip0000644000076500000240000000315212613140040021313 0ustar philstaff00000000000000// qoffscreensurface.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOffscreenSurface : QObject, QSurface { %TypeHeaderCode #include %End public: explicit QOffscreenSurface(QScreen *screen = 0); virtual ~QOffscreenSurface(); virtual QSurface::SurfaceType surfaceType() const; void create(); void destroy(); bool isValid() const; void setFormat(const QSurfaceFormat &format); virtual QSurfaceFormat format() const; QSurfaceFormat requestedFormat() const; virtual QSize size() const; QScreen *screen() const; void setScreen(QScreen *screen); signals: void screenChanged(QScreen *screen); private: QOffscreenSurface(const QOffscreenSurface &); }; %End PyQt-gpl-5.5.1/sip/QtGui/qopenglbuffer.sip0000644000076500000240000000542612613140040020454 0ustar philstaff00000000000000// qopenglbuffer.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLBuffer { %TypeHeaderCode #include %End public: enum Type { VertexBuffer, IndexBuffer, PixelPackBuffer, PixelUnpackBuffer, }; QOpenGLBuffer(); explicit QOpenGLBuffer(QOpenGLBuffer::Type type); QOpenGLBuffer(const QOpenGLBuffer &other); ~QOpenGLBuffer(); enum UsagePattern { StreamDraw, StreamRead, StreamCopy, StaticDraw, StaticRead, StaticCopy, DynamicDraw, DynamicRead, DynamicCopy, }; enum Access { ReadOnly, WriteOnly, ReadWrite, }; QOpenGLBuffer::Type type() const; QOpenGLBuffer::UsagePattern usagePattern() const; void setUsagePattern(QOpenGLBuffer::UsagePattern value); bool create(); bool isCreated() const; void destroy(); bool bind(); void release(); static void release(QOpenGLBuffer::Type type); GLuint bufferId() const; int size() const /__len__/; bool read(int offset, void *data, int count); void write(int offset, const void *data, int count); void allocate(const void *data, int count); void allocate(int count); void *map(QOpenGLBuffer::Access access); bool unmap(); %If (Qt_5_4_0 -) enum RangeAccessFlag { RangeRead, RangeWrite, RangeInvalidate, RangeInvalidateBuffer, RangeFlushExplicit, RangeUnsynchronized, }; %End %If (Qt_5_4_0 -) typedef QFlags RangeAccessFlags; %End %If (Qt_5_4_0 -) void *mapRange(int offset, int count, QFlags access); %End }; %End %If (Qt_5_4_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLBuffer::RangeAccessFlag f1, QFlags f2); %End %End PyQt-gpl-5.5.1/sip/QtGui/qopenglcontext.sip0000644000076500000240000000747512613140040020675 0ustar philstaff00000000000000// qopenglcontext.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLContextGroup : QObject { %TypeHeaderCode #include %End public: virtual ~QOpenGLContextGroup(); QList shares() const; static QOpenGLContextGroup *currentContextGroup(); private: QOpenGLContextGroup(); }; %End %If (PyQt_OpenGL) class QOpenGLContext : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLContext(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLContext(); void setFormat(const QSurfaceFormat &format); void setShareContext(QOpenGLContext *shareContext); void setScreen(QScreen *screen); bool create(); bool isValid() const; QSurfaceFormat format() const; QOpenGLContext *shareContext() const; QOpenGLContextGroup *shareGroup() const; QScreen *screen() const; GLuint defaultFramebufferObject() const; bool makeCurrent(QSurface *surface); void doneCurrent(); void swapBuffers(QSurface *surface); QSurface *surface() const; static QOpenGLContext *currentContext(); static bool areSharing(QOpenGLContext *first, QOpenGLContext *second); QSet extensions() const; bool hasExtension(const QByteArray &extension) const; signals: void aboutToBeDestroyed(); public: %If (Qt_5_1_0 -) SIP_PYOBJECT versionFunctions(const QOpenGLVersionProfile *versionProfile = 0) const; %MethodCode sipRes = qpyopengl_version_functions(sipCpp, sipSelf, a0); %End %End %If (Qt_5_3_0 -) static void *openGLModuleHandle(); %End %If (Qt_5_3_0 -) enum OpenGLModuleType { LibGL, LibGLES, }; %End %If (Qt_5_3_0 -) static QOpenGLContext::OpenGLModuleType openGLModuleType(); %End %If (Qt_5_3_0 -) bool isOpenGLES() const; %End %If (Qt_5_4_0 -) void setNativeHandle(const QVariant &handle); %End %If (Qt_5_4_0 -) QVariant nativeHandle() const; %End %If (Qt_5_5_0 -) static bool supportsThreadedOpenGL(); %End %If (Qt_5_5_0 -) static QOpenGLContext *globalShareContext(); %End }; %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLVersionProfile { %TypeHeaderCode #include %End public: QOpenGLVersionProfile(); explicit QOpenGLVersionProfile(const QSurfaceFormat &format); QOpenGLVersionProfile(const QOpenGLVersionProfile &other); ~QOpenGLVersionProfile(); QPair version() const; void setVersion(int majorVersion, int minorVersion); QSurfaceFormat::OpenGLContextProfile profile() const; void setProfile(QSurfaceFormat::OpenGLContextProfile profile); bool hasProfiles() const; bool isLegacyVersion() const; bool isValid() const; }; %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) bool operator==(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) bool operator!=(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs); %End %End PyQt-gpl-5.5.1/sip/QtGui/qopengldebug.sip0000644000076500000240000001243112613140040020263 0ustar philstaff00000000000000// qopengldebug.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLDebugMessage { %TypeHeaderCode #include %End public: enum Source { InvalidSource, APISource, WindowSystemSource, ShaderCompilerSource, ThirdPartySource, ApplicationSource, OtherSource, AnySource, }; typedef QFlags Sources; enum Type { InvalidType, ErrorType, DeprecatedBehaviorType, UndefinedBehaviorType, PortabilityType, PerformanceType, OtherType, MarkerType, GroupPushType, GroupPopType, AnyType, }; typedef QFlags Types; enum Severity { InvalidSeverity, HighSeverity, MediumSeverity, LowSeverity, NotificationSeverity, AnySeverity, }; typedef QFlags Severities; QOpenGLDebugMessage(); QOpenGLDebugMessage(const QOpenGLDebugMessage &debugMessage); ~QOpenGLDebugMessage(); void swap(QOpenGLDebugMessage &debugMessage); QOpenGLDebugMessage::Source source() const; QOpenGLDebugMessage::Type type() const; QOpenGLDebugMessage::Severity severity() const; GLuint id() const; QString message() const; static QOpenGLDebugMessage createApplicationMessage(const QString &text, GLuint id = 0, QOpenGLDebugMessage::Severity severity = QOpenGLDebugMessage::NotificationSeverity, QOpenGLDebugMessage::Type type = QOpenGLDebugMessage::OtherType); static QOpenGLDebugMessage createThirdPartyMessage(const QString &text, GLuint id = 0, QOpenGLDebugMessage::Severity severity = QOpenGLDebugMessage::NotificationSeverity, QOpenGLDebugMessage::Type type = QOpenGLDebugMessage::OtherType); bool operator==(const QOpenGLDebugMessage &debugMessage) const; bool operator!=(const QOpenGLDebugMessage &debugMessage) const; }; %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLDebugMessage::Source f1, QFlags f2); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLDebugMessage::Type f1, QFlags f2); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLDebugMessage::Severity f1, QFlags f2); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLDebugLogger : QObject { %TypeHeaderCode #include %End public: enum LoggingMode { AsynchronousLogging, SynchronousLogging, }; explicit QOpenGLDebugLogger(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLDebugLogger(); bool initialize(); bool isLogging() const; QOpenGLDebugLogger::LoggingMode loggingMode() const; qint64 maximumMessageLength() const; void pushGroup(const QString &name, GLuint id = 0, QOpenGLDebugMessage::Source source = QOpenGLDebugMessage::ApplicationSource); void popGroup(); void enableMessages(QFlags sources = QOpenGLDebugMessage::AnySource, QFlags types = QOpenGLDebugMessage::AnyType, QFlags severities = QOpenGLDebugMessage::AnySeverity); void enableMessages(const QVector &ids, QFlags sources = QOpenGLDebugMessage::AnySource, QFlags types = QOpenGLDebugMessage::AnyType); void disableMessages(QFlags sources = QOpenGLDebugMessage::AnySource, QFlags types = QOpenGLDebugMessage::AnyType, QFlags severities = QOpenGLDebugMessage::AnySeverity); void disableMessages(const QVector &ids, QFlags sources = QOpenGLDebugMessage::AnySource, QFlags types = QOpenGLDebugMessage::AnyType); QList loggedMessages() const; public slots: void logMessage(const QOpenGLDebugMessage &debugMessage); void startLogging(QOpenGLDebugLogger::LoggingMode loggingMode = QOpenGLDebugLogger::AsynchronousLogging); void stopLogging(); signals: void messageLogged(const QOpenGLDebugMessage &debugMessage); private: QOpenGLDebugLogger(const QOpenGLDebugLogger &); }; %End %End PyQt-gpl-5.5.1/sip/QtGui/qopenglframebufferobject.sip0000644000076500000240000001003212613140040022643 0ustar philstaff00000000000000// qopenglframebufferobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLFramebufferObject { %TypeHeaderCode #include %End %TypeCode // The defaults are different for desktop OpenGL and OpenGL/ES so pretend the // latter is the former. #if defined(QT_OPENGL_ES) #undef GL_RGBA8 #define GL_RGBA8 GL_RGBA #endif %End public: enum Attachment { NoAttachment, CombinedDepthStencil, Depth, }; QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D); QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D); QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internal_format = GL_RGBA8); QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internal_format = GL_RGBA8); QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format); QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format); virtual ~QOpenGLFramebufferObject(); QOpenGLFramebufferObjectFormat format() const; bool isValid() const; bool isBound() const; bool bind(); bool release(); int width() const; int height() const; GLuint texture() const; QSize size() const; QImage toImage() const; %If (Qt_5_4_0 -) QImage toImage(bool flipped) const; %End QOpenGLFramebufferObject::Attachment attachment() const; void setAttachment(QOpenGLFramebufferObject::Attachment attachment); GLuint handle() const; static bool bindDefault(); static bool hasOpenGLFramebufferObjects(); static bool hasOpenGLFramebufferBlit(); static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST); static void blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST); %If (Qt_5_3_0 -) GLuint takeTexture(); %End private: QOpenGLFramebufferObject(const QOpenGLFramebufferObject &); }; %End %If (PyQt_OpenGL) class QOpenGLFramebufferObjectFormat { %TypeHeaderCode #include %End public: QOpenGLFramebufferObjectFormat(); QOpenGLFramebufferObjectFormat(const QOpenGLFramebufferObjectFormat &other); ~QOpenGLFramebufferObjectFormat(); void setSamples(int samples); int samples() const; void setMipmap(bool enabled); bool mipmap() const; void setAttachment(QOpenGLFramebufferObject::Attachment attachment); QOpenGLFramebufferObject::Attachment attachment() const; void setTextureTarget(GLenum target); GLenum textureTarget() const; void setInternalTextureFormat(GLenum internalTextureFormat); GLenum internalTextureFormat() const; bool operator==(const QOpenGLFramebufferObjectFormat &other) const; bool operator!=(const QOpenGLFramebufferObjectFormat &other) const; }; %End PyQt-gpl-5.5.1/sip/QtGui/qopenglpaintdevice.sip0000644000076500000240000000352712613140040021476 0ustar philstaff00000000000000// qopenglpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLPaintDevice : QPaintDevice { %TypeHeaderCode #include %End public: QOpenGLPaintDevice(); explicit QOpenGLPaintDevice(const QSize &size); QOpenGLPaintDevice(int width, int height); virtual ~QOpenGLPaintDevice(); virtual QPaintEngine *paintEngine() const; QOpenGLContext *context() const; QSize size() const; void setSize(const QSize &size); qreal dotsPerMeterX() const; qreal dotsPerMeterY() const; void setDotsPerMeterX(qreal); void setDotsPerMeterY(qreal); void setPaintFlipped(bool flipped); bool paintFlipped() const; virtual void ensureActiveTarget(); %If (Qt_5_1_0 -) void setDevicePixelRatio(qreal devicePixelRatio); %End protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: %If (- Qt_5_1_0) QOpenGLPaintDevice(const QOpenGLPaintDevice &); %End }; %End PyQt-gpl-5.5.1/sip/QtGui/qopenglpixeltransferoptions.sip0000644000076500000240000000354712613140040023507 0ustar philstaff00000000000000// qopenglpixeltransferoptions.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_OpenGL) class QOpenGLPixelTransferOptions { %TypeHeaderCode #include %End public: QOpenGLPixelTransferOptions(); QOpenGLPixelTransferOptions(const QOpenGLPixelTransferOptions &); ~QOpenGLPixelTransferOptions(); void swap(QOpenGLPixelTransferOptions &other); void setAlignment(int alignment); int alignment() const; void setSkipImages(int skipImages); int skipImages() const; void setSkipRows(int skipRows); int skipRows() const; void setSkipPixels(int skipPixels); int skipPixels() const; void setImageHeight(int imageHeight); int imageHeight() const; void setRowLength(int rowLength); int rowLength() const; void setLeastSignificantByteFirst(bool lsbFirst); bool isLeastSignificantBitFirst() const; void setSwapBytesEnabled(bool swapBytes); bool isSwapBytesEnabled() const; }; %End %End PyQt-gpl-5.5.1/sip/QtGui/qopenglshaderprogram.sip0000644000076500000240000003542212613140040022040 0ustar philstaff00000000000000// qopenglshaderprogram.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLShader : QObject { %TypeHeaderCode #include %End public: enum ShaderTypeBit { Vertex, Fragment, %If (Qt_5_1_0 -) Geometry, %End %If (Qt_5_1_0 -) TessellationControl, %End %If (Qt_5_1_0 -) TessellationEvaluation, %End %If (Qt_5_1_0 -) Compute, %End }; typedef QFlags ShaderType; QOpenGLShader(QFlags type, QObject *parent /TransferThis/ = 0); virtual ~QOpenGLShader(); QFlags shaderType() const; bool compileSourceCode(const QByteArray &source); bool compileSourceCode(const QString &source); bool compileSourceFile(const QString &fileName); QByteArray sourceCode() const; bool isCompiled() const; QString log() const; GLuint shaderId() const; static bool hasOpenGLShaders(QFlags type, QOpenGLContext *context = 0); private: QOpenGLShader(const QOpenGLShader &); }; %End %If (PyQt_OpenGL) QFlags operator|(QOpenGLShader::ShaderTypeBit f1, QFlags f2); %End %If (PyQt_OpenGL) class QOpenGLShaderProgram : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLShaderProgram(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLShaderProgram(); bool addShader(QOpenGLShader *shader); void removeShader(QOpenGLShader *shader); QList shaders() const; bool addShaderFromSourceCode(QFlags type, const QByteArray &source); bool addShaderFromSourceCode(QFlags type, const QString &source); bool addShaderFromSourceFile(QFlags type, const QString &fileName); void removeAllShaders(); virtual bool link(); bool isLinked() const; QString log() const; bool bind(); void release(); GLuint programId() const; void bindAttributeLocation(const QByteArray &name, int location); void bindAttributeLocation(const QString &name, int location); int attributeLocation(const QByteArray &name) const; int attributeLocation(const QString &name) const; void setAttributeValue(int location, GLfloat value); void setAttributeValue(int location, GLfloat x, GLfloat y); void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z); void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setAttributeValue(int location, const QVector2D &value); void setAttributeValue(int location, const QVector3D &value); void setAttributeValue(int location, const QVector4D &value); void setAttributeValue(int location, const QColor &value); void setAttributeValue(const char *name, GLfloat value); void setAttributeValue(const char *name, GLfloat x, GLfloat y); void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z); void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setAttributeValue(const char *name, const QVector2D &value); void setAttributeValue(const char *name, const QVector3D &value); void setAttributeValue(const char *name, const QVector4D &value); void setAttributeValue(const char *name, const QColor &value); void setAttributeArray(int location, SIP_PYOBJECT values /DocType="sequence"/); %MethodCode const GLfloat *values; int tsize; values = qpyopengl_attribute_array(a1, sipSelf, SIPLong_FromLong(a0), &tsize, &sipError); if (values) sipCpp->setAttributeArray(a0, values, tsize); %End void setAttributeArray(const char *name, SIP_PYOBJECT values /DocType="sequence"/); %MethodCode const GLfloat *values; int tsize; values = qpyopengl_attribute_array(a1, sipSelf, SIPBytes_FromString(a0), &tsize, &sipError); if (values) sipCpp->setAttributeArray(a0, values, tsize); %End void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0); void setAttributeBuffer(const char *name, GLenum type, int offset, int tupleSize, int stride = 0); void enableAttributeArray(int location); void enableAttributeArray(const char *name); void disableAttributeArray(int location); void disableAttributeArray(const char *name); int uniformLocation(const QByteArray &name) const; int uniformLocation(const QString &name) const; void setUniformValue(int location, GLint value /Constrained/); void setUniformValue(int location, GLfloat value /Constrained/); void setUniformValue(int location, GLfloat x, GLfloat y); void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z); void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setUniformValue(int location, const QVector2D &value); void setUniformValue(int location, const QVector3D &value); void setUniformValue(int location, const QVector4D &value); void setUniformValue(int location, const QColor &color); void setUniformValue(int location, const QPoint &point); void setUniformValue(int location, const QPointF &point); void setUniformValue(int location, const QSize &size); void setUniformValue(int location, const QSizeF &size); void setUniformValue(int location, const QMatrix2x2 &value); void setUniformValue(int location, const QMatrix2x3 &value); void setUniformValue(int location, const QMatrix2x4 &value); void setUniformValue(int location, const QMatrix3x2 &value); void setUniformValue(int location, const QMatrix3x3 &value); void setUniformValue(int location, const QMatrix3x4 &value); void setUniformValue(int location, const QMatrix4x2 &value); void setUniformValue(int location, const QMatrix4x3 &value); void setUniformValue(int location, const QMatrix4x4 &value); void setUniformValue(int location, const QTransform &value); void setUniformValue(const char *name, GLint value /Constrained/); void setUniformValue(const char *name, GLfloat value /Constrained/); void setUniformValue(const char *name, GLfloat x, GLfloat y); void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z); void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setUniformValue(const char *name, const QVector2D &value); void setUniformValue(const char *name, const QVector3D &value); void setUniformValue(const char *name, const QVector4D &value); void setUniformValue(const char *name, const QColor &color); void setUniformValue(const char *name, const QPoint &point); void setUniformValue(const char *name, const QPointF &point); void setUniformValue(const char *name, const QSize &size); void setUniformValue(const char *name, const QSizeF &size); void setUniformValue(const char *name, const QMatrix2x2 &value); void setUniformValue(const char *name, const QMatrix2x3 &value); void setUniformValue(const char *name, const QMatrix2x4 &value); void setUniformValue(const char *name, const QMatrix3x2 &value); void setUniformValue(const char *name, const QMatrix3x3 &value); void setUniformValue(const char *name, const QMatrix3x4 &value); void setUniformValue(const char *name, const QMatrix4x2 &value); void setUniformValue(const char *name, const QMatrix4x3 &value); void setUniformValue(const char *name, const QMatrix4x4 &value); void setUniformValue(const char *name, const QTransform &value); void setUniformValueArray(int location, SIP_PYOBJECT values /DocType="sequence"/); %MethodCode const void *values; const sipTypeDef *array_type; int array_len, tsize; values = qpyopengl_uniform_value_array(a1, sipSelf, SIPLong_FromLong(a0), &array_type, &array_len, &tsize, &sipError); if (values) { if (array_type == sipType_QVector2D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector3D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector4D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len, tsize); } %End void setUniformValueArray(const char *name, SIP_PYOBJECT values /DocType="sequence"/); %MethodCode const void *values; const sipTypeDef *array_type; int array_len, tsize; values = qpyopengl_uniform_value_array(a1, sipSelf, SIPBytes_FromString(a0), &array_type, &array_len, &tsize, &sipError); if (values) { if (array_type == sipType_QVector2D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector3D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector4D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len, tsize); } %End static bool hasOpenGLShaderPrograms(QOpenGLContext *context = 0); %If (Qt_5_1_0 -) int maxGeometryOutputVertices() const; %End %If (Qt_5_1_0 -) void setPatchVertexCount(int count); %End %If (Qt_5_1_0 -) int patchVertexCount() const; %End %If (Qt_5_1_0 -) void setDefaultOuterTessellationLevels(const QVector &levels); %End %If (Qt_5_1_0 -) QVector defaultOuterTessellationLevels() const; %End %If (Qt_5_1_0 -) void setDefaultInnerTessellationLevels(const QVector &levels); %End %If (Qt_5_1_0 -) QVector defaultInnerTessellationLevels() const; %End %If (Qt_5_3_0 -) bool create(); %End private: QOpenGLShaderProgram(const QOpenGLShaderProgram &); }; %End %ModuleHeaderCode #include "qpyopengl_api.h" %End %InitialisationCode #if defined(SIP_FEATURE_PyQt_OpenGL) qpyopengl_init(); #endif %End PyQt-gpl-5.5.1/sip/QtGui/qopengltexture.sip0000644000076500000240000003520512613140040020701 0ustar philstaff00000000000000// qopengltexture.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_OpenGL) class QOpenGLTexture { %TypeHeaderCode #include %End public: enum Target { Target1D, Target1DArray, Target2D, Target2DArray, Target3D, TargetCubeMap, TargetCubeMapArray, Target2DMultisample, Target2DMultisampleArray, TargetRectangle, TargetBuffer, }; enum BindingTarget { BindingTarget1D, BindingTarget1DArray, BindingTarget2D, BindingTarget2DArray, BindingTarget3D, BindingTargetCubeMap, BindingTargetCubeMapArray, BindingTarget2DMultisample, BindingTarget2DMultisampleArray, BindingTargetRectangle, BindingTargetBuffer, }; enum MipMapGeneration { GenerateMipMaps, DontGenerateMipMaps, }; enum TextureUnitReset { ResetTextureUnit, DontResetTextureUnit, }; explicit QOpenGLTexture(QOpenGLTexture::Target target); QOpenGLTexture(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = QOpenGLTexture::GenerateMipMaps); ~QOpenGLTexture(); bool create(); void destroy(); bool isCreated() const; GLuint textureId() const; void bind(); void bind(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); void release(); void release(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); bool isBound() const; bool isBound(uint unit); static GLuint boundTextureId(QOpenGLTexture::BindingTarget target); static GLuint boundTextureId(uint unit, QOpenGLTexture::BindingTarget target); enum TextureFormat { NoFormat, R8_UNorm, RG8_UNorm, RGB8_UNorm, RGBA8_UNorm, R16_UNorm, RG16_UNorm, RGB16_UNorm, RGBA16_UNorm, R8_SNorm, RG8_SNorm, RGB8_SNorm, RGBA8_SNorm, R16_SNorm, RG16_SNorm, RGB16_SNorm, RGBA16_SNorm, R8U, RG8U, RGB8U, RGBA8U, R16U, RG16U, RGB16U, RGBA16U, R32U, RG32U, RGB32U, RGBA32U, R8I, RG8I, RGB8I, RGBA8I, R16I, RG16I, RGB16I, RGBA16I, R32I, RG32I, RGB32I, RGBA32I, R16F, RG16F, RGB16F, RGBA16F, R32F, RG32F, RGB32F, RGBA32F, RGB9E5, RG11B10F, RG3B2, R5G6B5, RGB5A1, RGBA4, RGB10A2, D16, D24, D24S8, D32, D32F, D32FS8X24, RGB_DXT1, RGBA_DXT1, RGBA_DXT3, RGBA_DXT5, R_ATI1N_UNorm, R_ATI1N_SNorm, RG_ATI2N_UNorm, RG_ATI2N_SNorm, RGB_BP_UNSIGNED_FLOAT, RGB_BP_SIGNED_FLOAT, RGB_BP_UNorm, SRGB8, SRGB8_Alpha8, SRGB_DXT1, SRGB_Alpha_DXT1, SRGB_Alpha_DXT3, SRGB_Alpha_DXT5, SRGB_BP_UNorm, DepthFormat, AlphaFormat, RGBFormat, RGBAFormat, LuminanceFormat, LuminanceAlphaFormat, %If (Qt_5_4_0 -) S8, %End %If (Qt_5_5_0 -) R11_EAC_UNorm, %End %If (Qt_5_5_0 -) R11_EAC_SNorm, %End %If (Qt_5_5_0 -) RG11_EAC_UNorm, %End %If (Qt_5_5_0 -) RG11_EAC_SNorm, %End %If (Qt_5_5_0 -) RGB8_ETC2, %End %If (Qt_5_5_0 -) SRGB8_ETC2, %End %If (Qt_5_5_0 -) RGB8_PunchThrough_Alpha1_ETC2, %End %If (Qt_5_5_0 -) SRGB8_PunchThrough_Alpha1_ETC2, %End %If (Qt_5_5_0 -) RGBA8_ETC2_EAC, %End %If (Qt_5_5_0 -) SRGB8_Alpha8_ETC2_EAC, %End }; void setFormat(QOpenGLTexture::TextureFormat format); QOpenGLTexture::TextureFormat format() const; void setSize(int width, int height = 1, int depth = 1); int width() const; int height() const; int depth() const; void setMipLevels(int levels); int mipLevels() const; int maximumMipLevels() const; void setLayers(int layers); int layers() const; int faces() const; void allocateStorage(); %If (Qt_5_5_0 -) void allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType); %End bool isStorageAllocated() const; QOpenGLTexture *createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, int minimumMipmapLevel, int maximumMipmapLevel, int minimumLayer, int maximumLayer) const /Factory/; bool isTextureView() const; enum CubeMapFace { CubeMapPositiveX, CubeMapNegativeX, CubeMapPositiveY, CubeMapNegativeY, CubeMapPositiveZ, CubeMapNegativeZ, }; enum PixelFormat { NoSourceFormat, Red, RG, RGB, BGR, RGBA, BGRA, Red_Integer, RG_Integer, RGB_Integer, BGR_Integer, RGBA_Integer, BGRA_Integer, Depth, DepthStencil, Alpha, Luminance, LuminanceAlpha, %If (Qt_5_4_0 -) Stencil, %End }; enum PixelType { NoPixelType, Int8, UInt8, Int16, UInt16, Int32, UInt32, Float16, Float16OES, Float32, UInt32_RGB9_E5, UInt32_RG11B10F, UInt8_RG3B2, UInt8_RG3B2_Rev, UInt16_RGB5A1, UInt16_RGB5A1_Rev, UInt16_R5G6B5, UInt16_R5G6B5_Rev, UInt16_RGBA4, UInt16_RGBA4_Rev, UInt32_RGB10A2, UInt32_RGB10A2_Rev, %If (Qt_5_4_0 -) UInt32_RGBA8, %End %If (Qt_5_4_0 -) UInt32_RGBA8_Rev, %End %If (Qt_5_4_0 -) UInt32_D24S8, %End %If (Qt_5_4_0 -) Float32_D32_UInt32_S8_X24, %End }; %If (Qt_5_3_0 -) void setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End %If (Qt_5_3_0 -) void setData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End %If (Qt_5_3_0 -) void setData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End %If (Qt_5_3_0 -) void setData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End void setData(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = QOpenGLTexture::GenerateMipMaps); %If (Qt_5_3_0 -) void setCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End %If (Qt_5_3_0 -) void setCompressedData(int mipLevel, int layer, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setCompressedData(int mipLevel, int layer, int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End %If (Qt_5_3_0 -) void setCompressedData(int mipLevel, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setCompressedData(int mipLevel, int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End %If (Qt_5_3_0 -) void setCompressedData(int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) %If (Qt_5_4_1 -) void setCompressedData(int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %End enum Feature { ImmutableStorage, ImmutableMultisampleStorage, TextureRectangle, TextureArrays, Texture3D, TextureMultisample, TextureBuffer, TextureCubeMapArrays, Swizzle, StencilTexturing, AnisotropicFiltering, NPOTTextures, NPOTTextureRepeat, %If (Qt_5_3_0 -) Texture1D, %End %If (Qt_5_5_0 -) TextureComparisonOperators, %End %If (Qt_5_5_0 -) TextureMipMapLevel, %End }; typedef QFlags Features; static bool hasFeature(QOpenGLTexture::Feature feature); void setMipBaseLevel(int baseLevel); int mipBaseLevel() const; void setMipMaxLevel(int maxLevel); int mipMaxLevel() const; void setMipLevelRange(int baseLevel, int maxLevel); QPair mipLevelRange() const; void setAutoMipMapGenerationEnabled(bool enabled); bool isAutoMipMapGenerationEnabled() const; void generateMipMaps(); void generateMipMaps(int baseLevel, bool resetBaseLevel = true); enum SwizzleComponent { SwizzleRed, SwizzleGreen, SwizzleBlue, SwizzleAlpha, }; enum SwizzleValue { RedValue, GreenValue, BlueValue, AlphaValue, ZeroValue, OneValue, }; void setSwizzleMask(QOpenGLTexture::SwizzleComponent component, QOpenGLTexture::SwizzleValue value); void setSwizzleMask(QOpenGLTexture::SwizzleValue r, QOpenGLTexture::SwizzleValue g, QOpenGLTexture::SwizzleValue b, QOpenGLTexture::SwizzleValue a); QOpenGLTexture::SwizzleValue swizzleMask(QOpenGLTexture::SwizzleComponent component) const; enum DepthStencilMode { DepthMode, StencilMode, }; void setDepthStencilMode(QOpenGLTexture::DepthStencilMode mode); QOpenGLTexture::DepthStencilMode depthStencilMode() const; enum Filter { Nearest, Linear, NearestMipMapNearest, NearestMipMapLinear, LinearMipMapNearest, LinearMipMapLinear, }; void setMinificationFilter(QOpenGLTexture::Filter filter); QOpenGLTexture::Filter minificationFilter() const; void setMagnificationFilter(QOpenGLTexture::Filter filter); QOpenGLTexture::Filter magnificationFilter() const; void setMinMagFilters(QOpenGLTexture::Filter minificationFilter, QOpenGLTexture::Filter magnificationFilter); QPair minMagFilters() const; void setMaximumAnisotropy(float anisotropy); float maximumAnisotropy() const; enum WrapMode { Repeat, MirroredRepeat, ClampToEdge, ClampToBorder, }; enum CoordinateDirection { DirectionS, DirectionT, DirectionR, }; void setWrapMode(QOpenGLTexture::WrapMode mode); void setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode); QOpenGLTexture::WrapMode wrapMode(QOpenGLTexture::CoordinateDirection direction) const; void setBorderColor(QColor color); QColor borderColor() const; void setMinimumLevelOfDetail(float value); float minimumLevelOfDetail() const; void setMaximumLevelOfDetail(float value); float maximumLevelOfDetail() const; void setLevelOfDetailRange(float min, float max); QPair levelOfDetailRange() const; void setLevelofDetailBias(float bias); float levelofDetailBias() const; %If (Qt_5_4_0 -) QOpenGLTexture::Target target() const; %End %If (Qt_5_4_0 -) void setSamples(int samples); %End %If (Qt_5_4_0 -) int samples() const; %End %If (Qt_5_4_0 -) void setFixedSamplePositions(bool fixed); %End %If (Qt_5_4_0 -) bool isFixedSamplePositions() const; %End %If (Qt_5_5_0 -) enum ComparisonFunction { CompareLessEqual, CompareGreaterEqual, CompareLess, CompareGreater, CompareEqual, CommpareNotEqual, CompareAlways, CompareNever, }; %End %If (Qt_5_5_0 -) void setComparisonFunction(QOpenGLTexture::ComparisonFunction function); %End %If (Qt_5_5_0 -) QOpenGLTexture::ComparisonFunction comparisonFunction() const; %End %If (Qt_5_5_0 -) enum ComparisonMode { CompareRefToTexture, CompareNone, }; %End %If (Qt_5_5_0 -) void setComparisonMode(QOpenGLTexture::ComparisonMode mode); %End %If (Qt_5_5_0 -) QOpenGLTexture::ComparisonMode comparisonMode() const; %End private: QOpenGLTexture(const QOpenGLTexture &); }; %End %End %If (Qt_5_2_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLTexture::Feature f1, QFlags f2); %End %End PyQt-gpl-5.5.1/sip/QtGui/qopengltimerquery.sip0000644000076500000240000000433012613140040021402 0ustar philstaff00000000000000// qopengltimerquery.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_Desktop_OpenGL) class QOpenGLTimerQuery : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLTimerQuery(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLTimerQuery(); bool create(); void destroy(); bool isCreated() const; GLuint objectId() const; void begin(); void end(); GLuint64 waitForTimestamp() const /ReleaseGIL/; void recordTimestamp(); bool isResultAvailable() const; GLuint64 waitForResult() const /ReleaseGIL/; private: QOpenGLTimerQuery(const QOpenGLTimerQuery &); }; %End %End %If (Qt_5_1_0 -) %If (PyQt_Desktop_OpenGL) class QOpenGLTimeMonitor : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLTimeMonitor(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLTimeMonitor(); void setSampleCount(int sampleCount); int sampleCount() const; bool create(); void destroy(); bool isCreated() const; QVector objectIds() const; int recordSample(); bool isResultAvailable() const; QVector waitForSamples() const /ReleaseGIL/; QVector waitForIntervals() const /ReleaseGIL/; void reset(); private: QOpenGLTimeMonitor(const QOpenGLTimeMonitor &); }; %End %End PyQt-gpl-5.5.1/sip/QtGui/qopenglversionfunctions.sip0000644000076500000240000000226612613140040022620 0ustar philstaff00000000000000// qopenglversionfunctions.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QAbstractOpenGLFunctions /NoDefaultCtors,Supertype=sip.wrapper/ { %TypeHeaderCode #include %End QAbstractOpenGLFunctions(const QAbstractOpenGLFunctions &); }; %End %End PyQt-gpl-5.5.1/sip/QtGui/qopenglvertexarrayobject.sip0000644000076500000240000000375312613140040022747 0ustar philstaff00000000000000// qopenglvertexarrayobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLVertexArrayObject : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLVertexArrayObject(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLVertexArrayObject(); bool create(); void destroy(); bool isCreated() const; GLuint objectId() const; void bind(); void release(); class Binder { %TypeHeaderCode #include %End public: Binder(QOpenGLVertexArrayObject *v); ~Binder(); void release(); void rebind(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->release(); %End private: Binder(const QOpenGLVertexArrayObject::Binder &); }; private: QOpenGLVertexArrayObject(const QOpenGLVertexArrayObject &); }; %End %End PyQt-gpl-5.5.1/sip/QtGui/qopenglwindow.sip0000644000076500000240000000443712613140040020513 0ustar philstaff00000000000000// qopenglwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) %If (PyQt_OpenGL) class QOpenGLWindow : QPaintDeviceWindow { %TypeHeaderCode #include %End public: enum UpdateBehavior { NoPartialUpdate, PartialUpdateBlit, PartialUpdateBlend, }; QOpenGLWindow(QOpenGLWindow::UpdateBehavior updateBehavior = QOpenGLWindow::NoPartialUpdate, QWindow *parent /TransferThis/ = 0); %If (Qt_5_5_0 -) QOpenGLWindow(QOpenGLContext *shareContext, QOpenGLWindow::UpdateBehavior updateBehavior = QOpenGLWindow::NoPartialUpdate, QWindow *parent /TransferThis/ = 0); %End %If (Qt_5_5_0 -) virtual ~QOpenGLWindow(); %End QOpenGLWindow::UpdateBehavior updateBehavior() const; bool isValid() const; void makeCurrent(); void doneCurrent(); QOpenGLContext *context() const; GLuint defaultFramebufferObject() const; QImage grabFramebuffer(); %If (Qt_5_5_0 -) QOpenGLContext *shareContext() const; %End signals: void frameSwapped(); protected: virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void paintUnderGL(); virtual void paintOverGL(); virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: QOpenGLWindow(const QOpenGLWindow &); }; %End %End PyQt-gpl-5.5.1/sip/QtGui/qpagedpaintdevice.sip0000644000076500000240000001452012613140040021265 0ustar philstaff00000000000000// qpagedpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPagedPaintDevice : QPaintDevice { %TypeHeaderCode #include %End public: QPagedPaintDevice(); virtual ~QPagedPaintDevice(); virtual bool newPage() = 0; enum PageSize { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, %If (Qt_5_3_0 -) A10, %End %If (Qt_5_3_0 -) A3Extra, %End %If (Qt_5_3_0 -) A4Extra, %End %If (Qt_5_3_0 -) A4Plus, %End %If (Qt_5_3_0 -) A4Small, %End %If (Qt_5_3_0 -) A5Extra, %End %If (Qt_5_3_0 -) B5Extra, %End %If (Qt_5_3_0 -) JisB0, %End %If (Qt_5_3_0 -) JisB1, %End %If (Qt_5_3_0 -) JisB2, %End %If (Qt_5_3_0 -) JisB3, %End %If (Qt_5_3_0 -) JisB4, %End %If (Qt_5_3_0 -) JisB5, %End %If (Qt_5_3_0 -) JisB6, %End %If (Qt_5_3_0 -) JisB7, %End %If (Qt_5_3_0 -) JisB8, %End %If (Qt_5_3_0 -) JisB9, %End %If (Qt_5_3_0 -) JisB10, %End %If (Qt_5_3_0 -) AnsiC, %End %If (Qt_5_3_0 -) AnsiD, %End %If (Qt_5_3_0 -) AnsiE, %End %If (Qt_5_3_0 -) LegalExtra, %End %If (Qt_5_3_0 -) LetterExtra, %End %If (Qt_5_3_0 -) LetterPlus, %End %If (Qt_5_3_0 -) LetterSmall, %End %If (Qt_5_3_0 -) TabloidExtra, %End %If (Qt_5_3_0 -) ArchA, %End %If (Qt_5_3_0 -) ArchB, %End %If (Qt_5_3_0 -) ArchC, %End %If (Qt_5_3_0 -) ArchD, %End %If (Qt_5_3_0 -) ArchE, %End %If (Qt_5_3_0 -) Imperial7x9, %End %If (Qt_5_3_0 -) Imperial8x10, %End %If (Qt_5_3_0 -) Imperial9x11, %End %If (Qt_5_3_0 -) Imperial9x12, %End %If (Qt_5_3_0 -) Imperial10x11, %End %If (Qt_5_3_0 -) Imperial10x13, %End %If (Qt_5_3_0 -) Imperial10x14, %End %If (Qt_5_3_0 -) Imperial12x11, %End %If (Qt_5_3_0 -) Imperial15x11, %End %If (Qt_5_3_0 -) ExecutiveStandard, %End %If (Qt_5_3_0 -) Note, %End %If (Qt_5_3_0 -) Quarto, %End %If (Qt_5_3_0 -) Statement, %End %If (Qt_5_3_0 -) SuperA, %End %If (Qt_5_3_0 -) SuperB, %End %If (Qt_5_3_0 -) Postcard, %End %If (Qt_5_3_0 -) DoublePostcard, %End %If (Qt_5_3_0 -) Prc16K, %End %If (Qt_5_3_0 -) Prc32K, %End %If (Qt_5_3_0 -) Prc32KBig, %End %If (Qt_5_3_0 -) FanFoldUS, %End %If (Qt_5_3_0 -) FanFoldGerman, %End %If (Qt_5_3_0 -) FanFoldGermanLegal, %End %If (Qt_5_3_0 -) EnvelopeB4, %End %If (Qt_5_3_0 -) EnvelopeB5, %End %If (Qt_5_3_0 -) EnvelopeB6, %End %If (Qt_5_3_0 -) EnvelopeC0, %End %If (Qt_5_3_0 -) EnvelopeC1, %End %If (Qt_5_3_0 -) EnvelopeC2, %End %If (Qt_5_3_0 -) EnvelopeC3, %End %If (Qt_5_3_0 -) EnvelopeC4, %End %If (Qt_5_3_0 -) EnvelopeC6, %End %If (Qt_5_3_0 -) EnvelopeC65, %End %If (Qt_5_3_0 -) EnvelopeC7, %End %If (Qt_5_3_0 -) Envelope9, %End %If (Qt_5_3_0 -) Envelope11, %End %If (Qt_5_3_0 -) Envelope12, %End %If (Qt_5_3_0 -) Envelope14, %End %If (Qt_5_3_0 -) EnvelopeMonarch, %End %If (Qt_5_3_0 -) EnvelopePersonal, %End %If (Qt_5_3_0 -) EnvelopeChou3, %End %If (Qt_5_3_0 -) EnvelopeChou4, %End %If (Qt_5_3_0 -) EnvelopeInvite, %End %If (Qt_5_3_0 -) EnvelopeItalian, %End %If (Qt_5_3_0 -) EnvelopeKaku2, %End %If (Qt_5_3_0 -) EnvelopeKaku3, %End %If (Qt_5_3_0 -) EnvelopePrc1, %End %If (Qt_5_3_0 -) EnvelopePrc2, %End %If (Qt_5_3_0 -) EnvelopePrc3, %End %If (Qt_5_3_0 -) EnvelopePrc4, %End %If (Qt_5_3_0 -) EnvelopePrc5, %End %If (Qt_5_3_0 -) EnvelopePrc6, %End %If (Qt_5_3_0 -) EnvelopePrc7, %End %If (Qt_5_3_0 -) EnvelopePrc8, %End %If (Qt_5_3_0 -) EnvelopePrc9, %End %If (Qt_5_3_0 -) EnvelopePrc10, %End %If (Qt_5_3_0 -) EnvelopeYou4, %End %If (Qt_5_3_0 -) NPaperSize, %End %If (Qt_5_3_0 -) AnsiA, %End %If (Qt_5_3_0 -) AnsiB, %End %If (Qt_5_3_0 -) EnvelopeC5, %End %If (Qt_5_3_0 -) EnvelopeDL, %End %If (Qt_5_3_0 -) Envelope10, %End %If (Qt_5_3_0 -) LastPageSize, %End }; virtual void setPageSize(QPagedPaintDevice::PageSize size); QPagedPaintDevice::PageSize pageSize() const; virtual void setPageSizeMM(const QSizeF &size); QSizeF pageSizeMM() const; struct Margins { %TypeHeaderCode #include %End qreal left; qreal right; qreal top; qreal bottom; }; virtual void setMargins(const QPagedPaintDevice::Margins &margins); QPagedPaintDevice::Margins margins() const; %If (Qt_5_3_0 -) bool setPageLayout(const QPageLayout &pageLayout); %End %If (Qt_5_3_0 -) bool setPageSize(const QPageSize &pageSize); %End %If (Qt_5_3_0 -) bool setPageOrientation(QPageLayout::Orientation orientation); %End %If (Qt_5_3_0 -) bool setPageMargins(const QMarginsF &margins); %End %If (Qt_5_3_0 -) bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units); %End %If (Qt_5_3_0 -) QPageLayout pageLayout() const; %End }; PyQt-gpl-5.5.1/sip/QtGui/qpagelayout.sip0000644000076500000240000000614512613140040020147 0ustar philstaff00000000000000// qpagelayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QPageLayout { %TypeHeaderCode #include %End public: enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, }; enum Orientation { Portrait, Landscape, }; enum Mode { StandardMode, FullPageMode, }; QPageLayout(); QPageLayout(const QPageSize &pageSize, QPageLayout::Orientation orientation, const QMarginsF &margins, QPageLayout::Unit units = QPageLayout::Point, const QMarginsF &minMargins = QMarginsF(0.0, 0.0, 0.0, 0.0)); QPageLayout(const QPageLayout &other); ~QPageLayout(); void swap(QPageLayout &other); bool isEquivalentTo(const QPageLayout &other) const; bool isValid() const; void setMode(QPageLayout::Mode mode); QPageLayout::Mode mode() const; void setPageSize(const QPageSize &pageSize, const QMarginsF &minMargins = QMarginsF(0.0, 0.0, 0.0, 0.0)); QPageSize pageSize() const; void setOrientation(QPageLayout::Orientation orientation); QPageLayout::Orientation orientation() const; void setUnits(QPageLayout::Unit units); QPageLayout::Unit units() const; bool setMargins(const QMarginsF &margins); bool setLeftMargin(qreal leftMargin); bool setRightMargin(qreal rightMargin); bool setTopMargin(qreal topMargin); bool setBottomMargin(qreal bottomMargin); QMarginsF margins() const; QMarginsF margins(QPageLayout::Unit units) const; QMargins marginsPoints() const; QMargins marginsPixels(int resolution) const; void setMinimumMargins(const QMarginsF &minMargins); QMarginsF minimumMargins() const; QMarginsF maximumMargins() const; QRectF fullRect() const; QRectF fullRect(QPageLayout::Unit units) const; QRect fullRectPoints() const; QRect fullRectPixels(int resolution) const; QRectF paintRect() const; QRectF paintRect(QPageLayout::Unit units) const; QRect paintRectPoints() const; QRect paintRectPixels(int resolution) const; }; %End %If (Qt_5_3_0 -) bool operator==(const QPageLayout &lhs, const QPageLayout &rhs); %End %If (Qt_5_3_0 -) bool operator!=(const QPageLayout &lhs, const QPageLayout &rhs); %End PyQt-gpl-5.5.1/sip/QtGui/qpagesize.sip0000644000076500000240000001272612613140040017606 0ustar philstaff00000000000000// qpagesize.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QPageSize { %TypeHeaderCode #include %End public: enum PageSizeId { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, A10, A3Extra, A4Extra, A4Plus, A4Small, A5Extra, B5Extra, JisB0, JisB1, JisB2, JisB3, JisB4, JisB5, JisB6, JisB7, JisB8, JisB9, JisB10, AnsiC, AnsiD, AnsiE, LegalExtra, LetterExtra, LetterPlus, LetterSmall, TabloidExtra, ArchA, ArchB, ArchC, ArchD, ArchE, Imperial7x9, Imperial8x10, Imperial9x11, Imperial9x12, Imperial10x11, Imperial10x13, Imperial10x14, Imperial12x11, Imperial15x11, ExecutiveStandard, Note, Quarto, Statement, SuperA, SuperB, Postcard, DoublePostcard, Prc16K, Prc32K, Prc32KBig, FanFoldUS, FanFoldGerman, FanFoldGermanLegal, EnvelopeB4, EnvelopeB5, EnvelopeB6, EnvelopeC0, EnvelopeC1, EnvelopeC2, EnvelopeC3, EnvelopeC4, EnvelopeC6, EnvelopeC65, EnvelopeC7, Envelope9, Envelope11, Envelope12, Envelope14, EnvelopeMonarch, EnvelopePersonal, EnvelopeChou3, EnvelopeChou4, EnvelopeInvite, EnvelopeItalian, EnvelopeKaku2, EnvelopeKaku3, EnvelopePrc1, EnvelopePrc2, EnvelopePrc3, EnvelopePrc4, EnvelopePrc5, EnvelopePrc6, EnvelopePrc7, EnvelopePrc8, EnvelopePrc9, EnvelopePrc10, EnvelopeYou4, NPageSize, NPaperSize, AnsiA, AnsiB, EnvelopeC5, EnvelopeDL, Envelope10, LastPageSize, }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, }; enum SizeMatchPolicy { FuzzyMatch, FuzzyOrientationMatch, ExactMatch, }; QPageSize(); explicit QPageSize(QPageSize::PageSizeId pageSizeId); QPageSize(const QSize &pointSize, const QString &name = QString(), QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); QPageSize(const QSizeF &size, QPageSize::Unit units, const QString &name = QString(), QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); QPageSize(const QPageSize &other); ~QPageSize(); void swap(QPageSize &other); bool isEquivalentTo(const QPageSize &other) const; bool isValid() const; QString key() const; QString name() const; QPageSize::PageSizeId id() const; int windowsId() const; QSizeF definitionSize() const; QPageSize::Unit definitionUnits() const; QSizeF size(QPageSize::Unit units) const; QSize sizePoints() const; QSize sizePixels(int resolution) const; QRectF rect(QPageSize::Unit units) const; QRect rectPoints() const; QRect rectPixels(int resolution) const; static QString key(QPageSize::PageSizeId pageSizeId); static QString name(QPageSize::PageSizeId pageSizeId); static QPageSize::PageSizeId id(const QSize &pointSize, QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); static QPageSize::PageSizeId id(const QSizeF &size, QPageSize::Unit units, QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); static QPageSize::PageSizeId id(int windowsId); static int windowsId(QPageSize::PageSizeId pageSizeId); static QSizeF definitionSize(QPageSize::PageSizeId pageSizeId); static QPageSize::Unit definitionUnits(QPageSize::PageSizeId pageSizeId); static QSizeF size(QPageSize::PageSizeId pageSizeId, QPageSize::Unit units); static QSize sizePoints(QPageSize::PageSizeId pageSizeId); static QSize sizePixels(QPageSize::PageSizeId pageSizeId, int resolution); }; %End %If (Qt_5_3_0 -) bool operator==(const QPageSize &lhs, const QPageSize &rhs); %End %If (Qt_5_3_0 -) bool operator!=(const QPageSize &lhs, const QPageSize &rhs); %End PyQt-gpl-5.5.1/sip/QtGui/qpaintdevice.sip0000644000076500000240000000357012613140040020267 0ustar philstaff00000000000000// qpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPaintDevice { %TypeHeaderCode #include %End public: enum PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, PdmDepth, PdmDpiX, PdmDpiY, PdmPhysicalDpiX, PdmPhysicalDpiY, %If (Qt_5_1_0 -) PdmDevicePixelRatio, %End }; virtual ~QPaintDevice(); virtual QPaintEngine *paintEngine() const = 0; int width() const; int height() const; int widthMM() const; int heightMM() const; int logicalDpiX() const; int logicalDpiY() const; int physicalDpiX() const; int physicalDpiY() const; int depth() const; bool paintingActive() const; int colorCount() const; %If (Qt_5_1_0 -) int devicePixelRatio() const; %End protected: QPaintDevice(); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: QPaintDevice(const QPaintDevice &); }; PyQt-gpl-5.5.1/sip/QtGui/qpaintdevicewindow.sip0000644000076500000240000000273512613140040021521 0ustar philstaff00000000000000// qpaintdevicewindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QPaintDeviceWindow : QWindow, QPaintDevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void update(const QRect &rect); void update(const QRegion ®ion); public slots: void update(); protected: virtual void paintEvent(QPaintEvent *event); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; virtual void exposeEvent(QExposeEvent *); virtual bool event(QEvent *event); private: QPaintDeviceWindow(const QPaintDeviceWindow &); }; %End PyQt-gpl-5.5.1/sip/QtGui/qpaintengine.sip0000644000076500000240000001341112613140040020270 0ustar philstaff00000000000000// qpaintengine.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextItem { %TypeHeaderCode #include %End public: enum RenderFlag { RightToLeft, Overline, Underline, StrikeOut, }; typedef QFlags RenderFlags; qreal descent() const; qreal ascent() const; qreal width() const; QFlags renderFlags() const; QString text() const; QFont font() const; }; QFlags operator|(QTextItem::RenderFlag f1, QFlags f2); class QPaintEngine { %TypeHeaderCode #include %End public: enum PaintEngineFeature { PrimitiveTransform, PatternTransform, PixmapTransform, PatternBrush, LinearGradientFill, RadialGradientFill, ConicalGradientFill, AlphaBlend, PorterDuff, PainterPaths, Antialiasing, BrushStroke, ConstantOpacity, MaskedBrush, PaintOutsidePaintEvent, PerspectiveTransform, BlendModes, ObjectBoundingModeGradients, RasterOpModes, AllFeatures, }; typedef QFlags PaintEngineFeatures; enum DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, DirtyBackgroundMode, DirtyTransform, DirtyClipRegion, DirtyClipPath, DirtyHints, DirtyCompositionMode, DirtyClipEnabled, DirtyOpacity, AllDirty, }; typedef QFlags DirtyFlags; enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode, }; explicit QPaintEngine(QFlags features = 0); virtual ~QPaintEngine(); bool isActive() const; void setActive(bool newState); virtual bool begin(QPaintDevice *pdev) = 0; virtual bool end() = 0; virtual void updateState(const QPaintEngineState &state /NoCopy/) = 0; virtual void drawRects(const QRect *rects /Array/, int rectCount /ArraySize/); virtual void drawRects(const QRectF *rects /Array/, int rectCount /ArraySize/); virtual void drawLines(const QLine *lines /Array/, int lineCount /ArraySize/); virtual void drawLines(const QLineF *lines /Array/, int lineCount /ArraySize/); virtual void drawEllipse(const QRectF &r); virtual void drawEllipse(const QRect &r); virtual void drawPath(const QPainterPath &path); virtual void drawPoints(const QPointF *points /Array/, int pointCount /ArraySize/); virtual void drawPoints(const QPoint *points /Array/, int pointCount /ArraySize/); virtual void drawPolygon(const QPointF *points /Array/, int pointCount /ArraySize/, QPaintEngine::PolygonDrawMode mode); virtual void drawPolygon(const QPoint *points /Array/, int pointCount /ArraySize/, QPaintEngine::PolygonDrawMode mode); virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0; virtual void drawTextItem(const QPointF &p, const QTextItem &textItem /NoCopy/); virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void setPaintDevice(QPaintDevice *device); QPaintDevice *paintDevice() const; enum Type { X11, Windows, QuickDraw, CoreGraphics, MacPrinter, QWindowSystem, PostScript, OpenGL, Picture, SVG, Raster, Direct3D, Pdf, OpenVG, OpenGL2, PaintBuffer, Blitter, %If (Qt_5_3_0 -) Direct2D, %End User, MaxUser, }; virtual QPaintEngine::Type type() const = 0; bool hasFeature(QFlags feature) const; QPainter *painter() const; private: QPaintEngine(const QPaintEngine &); }; QFlags operator|(QPaintEngine::PaintEngineFeature f1, QFlags f2); class QPaintEngineState { %TypeHeaderCode #include %End public: QFlags state() const; QPen pen() const; QBrush brush() const; QPointF brushOrigin() const; QBrush backgroundBrush() const; Qt::BGMode backgroundMode() const; QFont font() const; qreal opacity() const; Qt::ClipOperation clipOperation() const; QRegion clipRegion() const; QPainterPath clipPath() const; bool isClipEnabled() const; QFlags renderHints() const; QPainter::CompositionMode compositionMode() const; QPainter *painter() const; QTransform transform() const; bool brushNeedsResolving() const; bool penNeedsResolving() const; }; PyQt-gpl-5.5.1/sip/QtGui/qpainter.sip0000644000076500000240000004775712613140040017455 0ustar philstaff00000000000000// qpainter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPainter { %TypeHeaderCode #include %End %TypeCode // Return an array on the heap of class instances extracted from a set of // Python arguments. template static TYPE *qtgui_inst_array(const TYPE *first, PyObject *t, sipTypeDef *td) { TYPE *arr = new TYPE[1 + PyTuple_GET_SIZE(t)]; arr[0] = *first; for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(t); ++i) { int iserr = 0, state; TYPE *itm; itm = reinterpret_cast(sipForceConvertToType(PyTuple_GET_ITEM(t, i), td, 0, SIP_NOT_NONE, &state, &iserr)); if (iserr) { sipReleaseType(itm, td, state); PyErr_Format(PyExc_TypeError, "each argument must be an instance of %s", sipTypeAsPyTypeObject(td)->tp_name); delete[] arr; return 0; } arr[1 + i] = *itm; sipReleaseType(itm, td, state); } return arr; } %End public: enum RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform, HighQualityAntialiasing, NonCosmeticDefaultPen, Qt4CompatiblePainting, }; typedef QFlags RenderHints; QPainter(); explicit QPainter(QPaintDevice *); ~QPainter(); SIP_PYOBJECT __enter__(); %MethodCode // Check a device was passed. if (sipCpp->isActive()) { // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); } else { PyErr_SetString(PyExc_ValueError, "QPainter must be created with a device"); sipRes = 0; } %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->end(); %End QPaintDevice *device() const; bool begin(QPaintDevice *); bool end(); bool isActive() const; enum CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, CompositionMode_SourceIn, CompositionMode_DestinationIn, CompositionMode_SourceOut, CompositionMode_DestinationOut, CompositionMode_SourceAtop, CompositionMode_DestinationAtop, CompositionMode_Xor, CompositionMode_Plus, CompositionMode_Multiply, CompositionMode_Screen, CompositionMode_Overlay, CompositionMode_Darken, CompositionMode_Lighten, CompositionMode_ColorDodge, CompositionMode_ColorBurn, CompositionMode_HardLight, CompositionMode_SoftLight, CompositionMode_Difference, CompositionMode_Exclusion, RasterOp_SourceOrDestination, RasterOp_SourceAndDestination, RasterOp_SourceXorDestination, RasterOp_NotSourceAndNotDestination, RasterOp_NotSourceOrNotDestination, RasterOp_NotSourceXorDestination, RasterOp_NotSource, RasterOp_NotSourceAndDestination, RasterOp_SourceAndNotDestination, RasterOp_NotSourceOrDestination, RasterOp_SourceOrNotDestination, RasterOp_ClearDestination, RasterOp_SetDestination, RasterOp_NotDestination, }; void setCompositionMode(QPainter::CompositionMode mode); QPainter::CompositionMode compositionMode() const; const QFont &font() const; void setFont(const QFont &f); QFontMetrics fontMetrics() const; QFontInfo fontInfo() const; void setPen(const QColor &color); void setPen(const QPen &pen); void setPen(Qt::PenStyle style); const QPen &pen() const; void setBrush(const QBrush &brush); void setBrush(Qt::BrushStyle style); const QBrush &brush() const; void setBackgroundMode(Qt::BGMode mode); Qt::BGMode backgroundMode() const; QPoint brushOrigin() const; void setBrushOrigin(const QPointF &); void setBackground(const QBrush &bg); const QBrush &background() const; QRegion clipRegion() const; QPainterPath clipPath() const; void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipping(bool enable); bool hasClipping() const; void save(); void restore(); void scale(qreal sx, qreal sy); void shear(qreal sh, qreal sv); void rotate(qreal a); void translate(const QPointF &offset); QRect window() const; void setWindow(const QRect &window); QRect viewport() const; void setViewport(const QRect &viewport); void setViewTransformEnabled(bool enable); bool viewTransformEnabled() const; void strokePath(const QPainterPath &path, const QPen &pen); void fillPath(const QPainterPath &path, const QBrush &brush); void drawPath(const QPainterPath &path); void drawPoints(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPoints(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawPoints(const QPolygonF &points); void drawPoints(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPoints(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawPoints(const QPolygon &points); void drawLines(const QLineF *line, ...); %MethodCode QLineF *lines = qtgui_inst_array(a0, a1, sipType_QLineF); if (lines) { sipCpp->drawLines(lines, 1 + PyTuple_GET_SIZE(a1)); delete[] lines; } else sipIsErr = 1; %End void drawLines(const QVector &lines); void drawLines(const QPointF *pointPair, ...); %MethodCode QPointF *pairs = qtgui_inst_array(a0, a1, sipType_QPointF); if (pairs) { sipCpp->drawLines(pairs, (1 + PyTuple_GET_SIZE(a1)) / 2); delete[] pairs; } else sipIsErr = 1; %End void drawLines(const QVector &pointPairs); void drawLines(const QLine *line, ...); %MethodCode QLine *lines = qtgui_inst_array(a0, a1, sipType_QLine); if (lines) { sipCpp->drawLines(lines, 1 + PyTuple_GET_SIZE(a1)); delete[] lines; } else sipIsErr = 1; %End void drawLines(const QVector &lines); void drawLines(const QPoint *pointPair, ...); %MethodCode QPoint *pairs = qtgui_inst_array(a0, a1, sipType_QPoint); if (pairs) { sipCpp->drawLines(pairs, (1 + PyTuple_GET_SIZE(a1)) / 2); delete[] pairs; } else sipIsErr = 1; %End void drawLines(const QVector &pointPairs); void drawRects(const QRectF *rect, ...); %MethodCode QRectF *rects = qtgui_inst_array(a0, a1, sipType_QRectF); if (rects) { sipCpp->drawRects(rects, 1 + PyTuple_GET_SIZE(a1)); delete[] rects; } else sipIsErr = 1; %End void drawRects(const QVector &rects); void drawRects(const QRect *rect, ...); %MethodCode QRect *rects = qtgui_inst_array(a0, a1, sipType_QRect); if (rects) { sipCpp->drawRects(rects, 1 + PyTuple_GET_SIZE(a1)); delete[] rects; } else sipIsErr = 1; %End void drawRects(const QVector &rects); void drawEllipse(const QRectF &r); void drawEllipse(const QRect &r); void drawPolyline(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPolyline(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolyline(const QPolygonF &polyline); void drawPolyline(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPolyline(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolyline(const QPolygon &polyline); void drawPolygon(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPolygon(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill); void drawPolygon(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPolygon(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill); void drawConvexPolygon(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawConvexPolygon(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawConvexPolygon(const QPolygonF &poly); void drawConvexPolygon(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawConvexPolygon(points, 1 + PyTuple_GET_SIZE(a1)); delete[] points; } else sipIsErr = 1; %End void drawConvexPolygon(const QPolygon &poly); void drawArc(const QRectF &rect, int a, int alen); void drawPie(const QRectF &rect, int a, int alen); void drawChord(const QRectF &rect, int a, int alen); void drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &pos = QPointF()); void drawPicture(const QPointF &p, const QPicture &picture); void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect); void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void drawText(const QPointF &p, const QString &s); void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect /Out/ = 0); void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect /Out/ = 0); void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()); QRectF boundingRect(const QRectF &rect, int flags, const QString &text); QRect boundingRect(const QRect &rect, int flags, const QString &text); QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()); void fillRect(const QRectF &, const QBrush &); void fillRect(const QRect &, const QBrush &); void eraseRect(const QRectF &); void setRenderHint(QPainter::RenderHint hint, bool on = true); QFlags renderHints() const; void setRenderHints(QFlags hints, bool on = true); QPaintEngine *paintEngine() const; void drawLine(const QLineF &l); void drawLine(const QLine &line); void drawLine(int x1, int y1, int x2, int y2); void drawLine(const QPoint &p1, const QPoint &p2); void drawLine(const QPointF &p1, const QPointF &p2); void drawRect(const QRectF &rect); void drawRect(int x, int y, int w, int h); void drawRect(const QRect &r); void drawPoint(const QPointF &p); void drawPoint(int x, int y); void drawPoint(const QPoint &p); void drawEllipse(int x, int y, int w, int h); void drawArc(const QRect &r, int a, int alen); void drawArc(int x, int y, int w, int h, int a, int alen); void drawPie(const QRect &rect, int a, int alen); void drawPie(int x, int y, int w, int h, int a, int alen); void drawChord(const QRect &rect, int a, int alen); void drawChord(int x, int y, int w, int h, int a, int alen); void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip); void eraseRect(const QRect &rect); void eraseRect(int x, int y, int w, int h); void fillRect(int x, int y, int w, int h, const QBrush &b); void setBrushOrigin(int x, int y); void setBrushOrigin(const QPoint &p); void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &pos = QPoint()); void drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0); void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect); void drawPixmap(const QPointF &p, const QPixmap &pm); void drawPixmap(const QPoint &p, const QPixmap &pm); void drawPixmap(const QRect &r, const QPixmap &pm); void drawPixmap(int x, int y, const QPixmap &pm); void drawPixmap(int x, int y, int w, int h, const QPixmap &pm); void drawPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy, int sw, int sh); void drawPixmap(int x, int y, const QPixmap &pm, int sx, int sy, int sw, int sh); void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr); void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr); void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QPointF &p, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QPoint &p, const QImage &image, const QRect &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QRectF &r, const QImage &image); void drawImage(const QRect &r, const QImage &image); void drawImage(const QPointF &p, const QImage &image); void drawImage(const QPoint &p, const QImage &image); void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawText(const QPoint &p, const QString &s); void drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect /Out/ = 0); void drawText(int x, int y, const QString &s); QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text); qreal opacity() const; void setOpacity(qreal opacity); void translate(qreal dx, qreal dy); void translate(const QPoint &offset); void setViewport(int x, int y, int w, int h); void setWindow(int x, int y, int w, int h); bool worldMatrixEnabled() const; void setWorldMatrixEnabled(bool enabled); void drawPicture(int x, int y, const QPicture &p); void drawPicture(const QPoint &pt, const QPicture &p); void setTransform(const QTransform &transform, bool combine = false); const QTransform &transform() const; const QTransform &deviceTransform() const; void resetTransform(); void setWorldTransform(const QTransform &matrix, bool combine = false); const QTransform &worldTransform() const; QTransform combinedTransform() const; bool testRenderHint(QPainter::RenderHint hint) const; void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawEllipse(const QPointF ¢er, qreal rx, qreal ry); void drawEllipse(const QPoint ¢er, int rx, int ry); void fillRect(const QRectF &, const QColor &color); void fillRect(const QRect &, const QColor &color); void fillRect(int x, int y, int w, int h, const QColor &b); void fillRect(int x, int y, int w, int h, Qt::GlobalColor c); void fillRect(const QRect &r, Qt::GlobalColor c); void fillRect(const QRectF &r, Qt::GlobalColor c); void fillRect(int x, int y, int w, int h, Qt::BrushStyle style); void fillRect(const QRect &r, Qt::BrushStyle style); void fillRect(const QRectF &r, Qt::BrushStyle style); void beginNativePainting(); void endNativePainting(); class PixmapFragment { %TypeHeaderCode #include %End public: qreal x; qreal y; qreal sourceLeft; qreal sourceTop; qreal width; qreal height; qreal scaleX; qreal scaleY; qreal rotation; qreal opacity; static QPainter::PixmapFragment create(const QPointF &pos, const QRectF &sourceRect, qreal scaleX = 1, qreal scaleY = 1, qreal rotation = 0, qreal opacity = 1) /Factory/; }; enum PixmapFragmentHint { OpaqueHint, }; typedef QFlags PixmapFragmentHints; void drawPixmapFragments(SIP_PYLIST fragments /DocType="list-of-QPainter.PixmapFragment"/, const QPixmap &pixmap, QFlags hints = 0); %MethodCode // Allocate temporary storage for the C++ conversions. SIP_SSIZE_T numFragments = PyList_GET_SIZE(a0); QPainter::PixmapFragment *fragments = new QPainter::PixmapFragment[numFragments]; // Convert the fragments. for (SIP_SSIZE_T i = 0; i < numFragments; ++i) { void *cpp = sipForceConvertToType(PyList_GET_ITEM(a0, i), sipType_QPainter_PixmapFragment, NULL, SIP_NO_CONVERTORS, NULL, &sipIsErr); fragments[i] = *reinterpret_cast(cpp); } if (!sipIsErr) { Py_BEGIN_ALLOW_THREADS sipCpp->drawPixmapFragments(fragments, numFragments, *a1, *a2); Py_END_ALLOW_THREADS } delete[] fragments; %End void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText); void drawStaticText(const QPoint &p, const QStaticText &staticText); void drawStaticText(int x, int y, const QStaticText &staticText); QRectF clipBoundingRect() const; %If (PyQt_RawFont) void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun); %End private: QPainter(const QPainter &); }; QFlags operator|(QPainter::RenderHint f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtGui/qpainterpath.sip0000644000076500000240000001447712613140040020323 0ustar philstaff00000000000000// qpainterpath.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPainterPath { %TypeHeaderCode #include %End public: enum ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement, }; class Element { %TypeHeaderCode #include %End public: qreal x; qreal y; QPainterPath::ElementType type; bool isMoveTo() const; bool isLineTo() const; bool isCurveTo() const; bool operator==(const QPainterPath::Element &e) const; bool operator!=(const QPainterPath::Element &e) const; operator QPointF() const; }; QPainterPath(); explicit QPainterPath(const QPointF &startPoint); QPainterPath(const QPainterPath &other); ~QPainterPath(); void closeSubpath(); void moveTo(const QPointF &p); void lineTo(const QPointF &p); void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength); void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt); void quadTo(const QPointF &ctrlPt, const QPointF &endPt); QPointF currentPosition() const; void addRect(const QRectF &rect); void addEllipse(const QRectF &rect); void addPolygon(const QPolygonF &polygon); void addText(const QPointF &point, const QFont &f, const QString &text); void addPath(const QPainterPath &path); void addRegion(const QRegion ®ion); void connectPath(const QPainterPath &path); bool contains(const QPointF &pt) const; bool contains(const QRectF &rect) const; bool intersects(const QRectF &rect) const; QRectF boundingRect() const; QRectF controlPointRect() const; Qt::FillRule fillRule() const; void setFillRule(Qt::FillRule fillRule); QPainterPath toReversed() const; bool operator==(const QPainterPath &other) const; bool operator!=(const QPainterPath &other) const; void moveTo(qreal x, qreal y); void arcMoveTo(const QRectF &rect, qreal angle); void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle); void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght); void lineTo(qreal x, qreal y); void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, qreal endPtx, qreal endPty); void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty); void addEllipse(qreal x, qreal y, qreal w, qreal h); void addRect(qreal x, qreal y, qreal w, qreal h); void addText(qreal x, qreal y, const QFont &f, const QString &text); bool isEmpty() const; int elementCount() const; QPainterPath::Element elementAt(int i) const; void setElementPositionAt(int i, qreal x, qreal y); QList toSubpathPolygons(const QTransform &matrix) const; QList toFillPolygons(const QTransform &matrix) const; QPolygonF toFillPolygon(const QTransform &matrix) const; qreal length() const; qreal percentAtLength(qreal t) const; QPointF pointAtPercent(qreal t) const; qreal angleAtPercent(qreal t) const; qreal slopeAtPercent(qreal t) const; bool intersects(const QPainterPath &p) const; bool contains(const QPainterPath &p) const; QPainterPath united(const QPainterPath &r) const; QPainterPath intersected(const QPainterPath &r) const; QPainterPath subtracted(const QPainterPath &r) const; void addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void addEllipse(const QPointF ¢er, qreal rx, qreal ry); QPainterPath simplified() const; QPainterPath operator&(const QPainterPath &other) const; QPainterPath operator|(const QPainterPath &other) const; QPainterPath operator+(const QPainterPath &other) const; QPainterPath operator-(const QPainterPath &other) const; QPainterPath &operator&=(const QPainterPath &other); QPainterPath &operator|=(const QPainterPath &other); QPainterPath &operator+=(const QPainterPath &other); QPainterPath &operator-=(const QPainterPath &other); void translate(qreal dx, qreal dy); QPainterPath translated(qreal dx, qreal dy) const; void translate(const QPointF &offset); QPainterPath translated(const QPointF &offset) const; void swap(QPainterPath &other); }; QDataStream &operator<<(QDataStream &, const QPainterPath & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPainterPath & /Constrained/) /ReleaseGIL/; class QPainterPathStroker { %TypeHeaderCode #include %End public: QPainterPathStroker(); %If (Qt_5_3_0 -) explicit QPainterPathStroker(const QPen &pen); %End ~QPainterPathStroker(); void setWidth(qreal width); qreal width() const; void setCapStyle(Qt::PenCapStyle style); Qt::PenCapStyle capStyle() const; void setJoinStyle(Qt::PenJoinStyle style); Qt::PenJoinStyle joinStyle() const; void setMiterLimit(qreal length); qreal miterLimit() const; void setCurveThreshold(qreal threshold); qreal curveThreshold() const; void setDashPattern(Qt::PenStyle); void setDashPattern(const QVector &dashPattern); QVector dashPattern() const; QPainterPath createStroke(const QPainterPath &path) const; void setDashOffset(qreal offset); qreal dashOffset() const; private: QPainterPathStroker(const QPainterPathStroker &); }; PyQt-gpl-5.5.1/sip/QtGui/qpalette.sip0000644000076500000240000001067212613140040017433 0ustar philstaff00000000000000// qpalette.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPalette { %TypeHeaderCode #include %End public: QPalette(); QPalette(const QColor &button); QPalette(Qt::GlobalColor button); QPalette(const QColor &button, const QColor &background); QPalette(const QBrush &foreground, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &background); QPalette(const QPalette &palette); QPalette(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPalette(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QPalette(); enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal, }; enum ColorRole { WindowText, Foreground, Button, Light, Midlight, Dark, Mid, Text, BrightText, ButtonText, Base, Window, Background, Shadow, Highlight, HighlightedText, Link, LinkVisited, AlternateBase, ToolTipBase, ToolTipText, NColorRoles, NoRole, }; QPalette::ColorGroup currentColorGroup() const; void setCurrentColorGroup(QPalette::ColorGroup cg); const QColor &color(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; const QBrush &brush(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; void setBrush(QPalette::ColorGroup cg, QPalette::ColorRole cr, const QBrush &brush); void setColorGroup(QPalette::ColorGroup cr, const QBrush &foreground, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &background); bool isEqual(QPalette::ColorGroup cr1, QPalette::ColorGroup cr2) const; const QColor &color(QPalette::ColorRole cr) const; const QBrush &brush(QPalette::ColorRole cr) const; const QBrush &windowText() const; const QBrush &button() const; const QBrush &light() const; const QBrush &dark() const; const QBrush &mid() const; const QBrush &text() const; const QBrush &base() const; const QBrush &alternateBase() const; const QBrush &window() const; const QBrush &midlight() const; const QBrush &brightText() const; const QBrush &buttonText() const; const QBrush &shadow() const; const QBrush &highlight() const; const QBrush &highlightedText() const; const QBrush &link() const; const QBrush &linkVisited() const; const QBrush &toolTipBase() const; const QBrush &toolTipText() const; bool operator==(const QPalette &p) const; bool operator!=(const QPalette &p) const; bool isCopyOf(const QPalette &p) const; QPalette resolve(const QPalette &) const; uint resolve() const; void resolve(uint mask); void setColor(QPalette::ColorGroup acg, QPalette::ColorRole acr, const QColor &acolor); void setColor(QPalette::ColorRole acr, const QColor &acolor); void setBrush(QPalette::ColorRole acr, const QBrush &abrush); bool isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; qint64 cacheKey() const; void swap(QPalette &other); }; QDataStream &operator<<(QDataStream &s, const QPalette &p /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &ds, QPalette &p /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qpdfwriter.sip0000644000076500000240000000343212613140040017777 0ustar philstaff00000000000000// qpdfwriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfWriter : QObject, QPagedPaintDevice { %TypeHeaderCode #include %End public: explicit QPdfWriter(const QString &filename); explicit QPdfWriter(QIODevice *device); virtual ~QPdfWriter(); QString title() const; void setTitle(const QString &title); QString creator() const; void setCreator(const QString &creator); virtual bool newPage(); virtual void setPageSize(QPagedPaintDevice::PageSize size); virtual void setPageSizeMM(const QSizeF &size); virtual void setMargins(const QPagedPaintDevice::Margins &m); protected: virtual QPaintEngine *paintEngine() const; virtual int metric(QPaintDevice::PaintDeviceMetric id) const; public: %If (Qt_5_3_0 -) void setResolution(int resolution); %End %If (Qt_5_3_0 -) int resolution() const; %End private: QPdfWriter(const QPdfWriter &); }; PyQt-gpl-5.5.1/sip/QtGui/qpen.sip0000644000076500000240000000650512613140040016557 0ustar philstaff00000000000000// qpen.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPen { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QColor to be used whenever a QPen is expected. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QPen, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QColor, 0)); if (sipCanConvertToType(sipPy, sipType_QPen, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QPen, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; QColor *c = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(c, sipType_QColor, state); return 0; } *sipCppPtr = new QPen(*c); sipReleaseType(c, sipType_QColor, state); return sipGetState(sipTransferObj); %End public: QPen(); QPen(Qt::PenStyle); QPen(const QColor &color); QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin); QPen(const QPen &pen); QPen(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPen(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QPen(); Qt::PenStyle style() const; void setStyle(Qt::PenStyle); qreal widthF() const; void setWidthF(qreal width); int width() const; void setWidth(int width); QColor color() const; void setColor(const QColor &color); QBrush brush() const; void setBrush(const QBrush &brush); bool isSolid() const; Qt::PenCapStyle capStyle() const; void setCapStyle(Qt::PenCapStyle pcs); Qt::PenJoinStyle joinStyle() const; void setJoinStyle(Qt::PenJoinStyle pcs); QVector dashPattern() const; void setDashPattern(const QVector &pattern); qreal miterLimit() const; void setMiterLimit(qreal limit); bool operator==(const QPen &p) const; bool operator!=(const QPen &p) const; qreal dashOffset() const; void setDashOffset(qreal doffset); bool isCosmetic() const; void setCosmetic(bool cosmetic); void swap(QPen &other); }; QDataStream &operator<<(QDataStream &, const QPen & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPen & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qpicture.sip0000644000076500000240000001271412613140040017447 0ustar philstaff00000000000000// qpicture.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPicture : QPaintDevice { %TypeHeaderCode #include %End public: explicit QPicture(int formatVersion = -1); QPicture(const QPicture &); virtual ~QPicture(); bool isNull() const; virtual int devType() const; uint size() const; const char *data() const /Encoding="None"/; virtual void setData(const char *data /Array/, uint size /ArraySize/); bool play(QPainter *p); bool load(QIODevice *dev, const char *format = 0) /ReleaseGIL/; bool load(const QString &fileName, const char *format = 0) /ReleaseGIL/; bool save(QIODevice *dev, const char *format = 0) /ReleaseGIL/; bool save(const QString &fileName, const char *format = 0) /ReleaseGIL/; QRect boundingRect() const; void setBoundingRect(const QRect &r); void detach(); bool isDetached() const; virtual QPaintEngine *paintEngine() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric m) const; public: void swap(QPicture &other); }; class QPictureIO { %TypeHeaderCode #include %End %TypeCode // This defines the mapping between picture formats and the corresponding // Python i/o handler callables. struct qtgui_pio { const char *format; // The format. PyObject *read; // The read handler. PyObject *write; // The write handler. qtgui_pio *next; // The next in the list. }; // The head of the list. static qtgui_pio *qtgui_pio_head = 0; // Find the entry for the given picture. static const qtgui_pio *qtgui_pio_find(QPictureIO *pio) { for (const qtgui_pio *p = qtgui_pio_head; p; p = p->next) if (qstrcmp(pio->format(), p->format) == 0) return p; return 0; } // This is the C++ read handler. static void qtgui_pio_read(QPictureIO *pio) { const qtgui_pio *p = qtgui_pio_find(pio); if (p && p->read) { Py_XDECREF(sipCallMethod(0, p->read, "D", pio, sipType_QPictureIO, NULL)); } } // This is the C++ write handler. static void qtgui_pio_write(QPictureIO *pio) { const qtgui_pio *p = qtgui_pio_find(pio); if (p && p->write) { Py_XDECREF(sipCallMethod(0, p->write, "D", pio, sipType_QPictureIO, NULL)); } } %End public: QPictureIO(); QPictureIO(QIODevice *ioDevice, const char *format); QPictureIO(const QString &fileName, const char *format); ~QPictureIO(); const QPicture &picture() const; int status() const; const char *format() const; QIODevice *ioDevice() const; QString fileName() const; int quality() const; QString description() const; const char *parameters() const; float gamma() const; void setPicture(const QPicture &); void setStatus(int); void setFormat(const char *); void setIODevice(QIODevice *); void setFileName(const QString &); void setQuality(int); void setDescription(const QString &); void setParameters(const char *); void setGamma(float); bool read() /ReleaseGIL/; bool write() /ReleaseGIL/; static QByteArray pictureFormat(const QString &fileName); static QByteArray pictureFormat(QIODevice *); static QList inputFormats(); static QList outputFormats(); static void defineIOHandler(const char *format, const char *header, const char *flags, SIP_PYCALLABLE read_picture /AllowNone/, SIP_PYCALLABLE write_picture /AllowNone/); %MethodCode // Convert None to NULL. if (a3 == Py_None) a3 = 0; if (a4 == Py_None) a4 = 0; // See if we already know about the format. qtgui_pio *p; for (p = qtgui_pio_head; p; p = p->next) if (qstrcmp(a0, p->format) == 0) break; if (!p) { // Handle the new format. p = new qtgui_pio; p->format = qstrdup(a0); p->read = 0; p->write = 0; p->next = qtgui_pio_head; qtgui_pio_head = p; } // Replace the old callables with the new ones. Py_XDECREF(p->read); p->read = a3; Py_XINCREF(p->read); Py_XDECREF(p->write); p->write = a4; Py_XINCREF(p->write); // Install the generic handlers. QPictureIO::defineIOHandler(a0, a1, a2, qtgui_pio_read, qtgui_pio_write); %End private: QPictureIO(const QPictureIO &); }; QDataStream &operator<<(QDataStream &in, const QPicture &p /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QPicture &p /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qpixelformat.sip0000644000076500000240000001323112613140040020321 0ustar philstaff00000000000000// qpixelformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) %ModuleCode #include %End %End %If (Qt_5_4_0 -) class QPixelFormat { %TypeHeaderCode #include %End public: enum ColorModel { RGB, BGR, Indexed, Grayscale, CMYK, HSL, HSV, YUV, %If (Qt_5_5_0 -) Alpha, %End }; enum AlphaUsage { UsesAlpha, IgnoresAlpha, }; enum AlphaPosition { AtBeginning, AtEnd, }; enum AlphaPremultiplied { NotPremultiplied, Premultiplied, }; enum TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint, }; enum YUVLayout { YUV444, YUV422, YUV411, YUV420P, YUV420SP, YV12, UYVY, YUYV, NV12, NV21, IMC1, IMC2, IMC3, IMC4, Y8, Y16, }; enum ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian, }; QPixelFormat(); QPixelFormat(QPixelFormat::ColorModel mdl, uchar firstSize /PyInt/, uchar secondSize /PyInt/, uchar thirdSize /PyInt/, uchar fourthSize /PyInt/, uchar fifthSize /PyInt/, uchar alfa /PyInt/, QPixelFormat::AlphaUsage usage, QPixelFormat::AlphaPosition position, QPixelFormat::AlphaPremultiplied premult, QPixelFormat::TypeInterpretation typeInterp, QPixelFormat::ByteOrder byteOrder = QPixelFormat::CurrentSystemEndian, uchar subEnum /PyInt/ = 0); QPixelFormat::ColorModel colorModel() const; uchar channelCount() const /PyInt/; uchar redSize() const /PyInt/; uchar greenSize() const /PyInt/; uchar blueSize() const /PyInt/; uchar cyanSize() const /PyInt/; uchar magentaSize() const /PyInt/; uchar yellowSize() const /PyInt/; uchar blackSize() const /PyInt/; uchar hueSize() const /PyInt/; uchar saturationSize() const /PyInt/; uchar lightnessSize() const /PyInt/; uchar brightnessSize() const /PyInt/; uchar alphaSize() const /PyInt/; uchar bitsPerPixel() const /PyInt/; QPixelFormat::AlphaUsage alphaUsage() const; QPixelFormat::AlphaPosition alphaPosition() const; QPixelFormat::AlphaPremultiplied premultiplied() const; QPixelFormat::TypeInterpretation typeInterpretation() const; QPixelFormat::ByteOrder byteOrder() const; QPixelFormat::YUVLayout yuvLayout() const; uchar subEnum() const /PyInt/; }; %End %If (Qt_5_4_0 -) bool operator==(QPixelFormat fmt1, QPixelFormat fmt2); %End %If (Qt_5_4_0 -) bool operator!=(QPixelFormat fmt1, QPixelFormat fmt2); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatRgba(uchar red /PyInt/, uchar green /PyInt/, uchar blue /PyInt/, uchar alfa /PyInt/, QPixelFormat::AlphaUsage usage, QPixelFormat::AlphaPosition position, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatGrayscale(uchar channelSize /PyInt/, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatCmyk(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatHsl(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatHsv(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout layout, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedByte, QPixelFormat::ByteOrder byteOrder = QPixelFormat::LittleEndian); %End %If (Qt_5_5_0 -) QPixelFormat qPixelFormatAlpha(uchar channelSize /PyInt/, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End PyQt-gpl-5.5.1/sip/QtGui/qpixmap.sip0000644000076500000240000001134012613140040017264 0ustar philstaff00000000000000// qpixmap.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPixmap : QPaintDevice { %TypeHeaderCode #include %End public: QPixmap(); QPixmap(int w, int h); explicit QPixmap(const QSize &); QPixmap(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); QPixmap(SIP_PYLIST xpm /DocType="list-of-str"/) [(const char **xpm)]; %MethodCode // The Python interface is a list of strings that make up the image. const char **str = QtGui_ListToArray(a0); if (str) { sipCpp = new sipQPixmap(str); QtGui_DeleteArray(str); } else sipIsErr = 1; %End QPixmap(const QPixmap &); QPixmap(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQPixmap(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QPixmap(); bool isNull() const; virtual int devType() const; int width() const; int height() const; QSize size() const; QRect rect() const; int depth() const; static int defaultDepth(); void fill(const QColor &color = Qt::white); QBitmap mask() const; void setMask(const QBitmap &); bool hasAlpha() const; bool hasAlphaChannel() const; QBitmap createHeuristicMask(bool clipTight = true) const; QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const; QPixmap scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QPixmap scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QPixmap scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const; QPixmap scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage toImage() const; static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); static QPixmap fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor); bool convertFromImage(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor); bool load(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool loadFromData(const uchar *buf /Array/, uint len /ArraySize/, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool loadFromData(const QByteArray &buf, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool save(const QString &fileName, const char *format = 0, int quality = -1) const; bool save(QIODevice *device, const char *format = 0, int quality = -1) const; QPixmap copy(const QRect &rect = QRect()) const; void detach(); bool isQBitmap() const; virtual QPaintEngine *paintEngine() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric) const; public: QPixmap copy(int ax, int ay, int awidth, int aheight) const; QPixmap transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const; static QTransform trueMatrix(const QTransform &m, int w, int h); qint64 cacheKey() const; void scroll(int dx, int dy, const QRect &rect, QRegion *exposed /Out/ = 0); void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed /Out/ = 0); void swap(QPixmap &other); qreal devicePixelRatio() const; void setDevicePixelRatio(qreal scaleFactor); }; QDataStream &operator<<(QDataStream &, const QPixmap & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPixmap & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qpixmapcache.sip0000644000076500000240000000414712613140040020257 0ustar philstaff00000000000000// qpixmapcache.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPixmapCache { %TypeHeaderCode #include %End public: class Key { %TypeHeaderCode #include %End public: Key(); Key(const QPixmapCache::Key &other); ~Key(); bool operator==(const QPixmapCache::Key &key) const; bool operator!=(const QPixmapCache::Key &key) const; }; static int cacheLimit(); static void clear(); static QPixmap find(const QString &key); %MethodCode sipRes = new QPixmap; if (!QPixmapCache::find(*a0, sipRes)) { delete sipRes; sipRes = 0; } %End static QPixmap find(const QPixmapCache::Key &key); %MethodCode sipRes = new QPixmap; if (!QPixmapCache::find(*a0, sipRes)) { delete sipRes; sipRes = 0; } %End static bool insert(const QString &key, const QPixmap &); static QPixmapCache::Key insert(const QPixmap &pixmap); static void remove(const QString &key); static void remove(const QPixmapCache::Key &key); static bool replace(const QPixmapCache::Key &key, const QPixmap &pixmap); static void setCacheLimit(int); }; PyQt-gpl-5.5.1/sip/QtGui/qpolygon.sip0000644000076500000240000003253312613140040017464 0ustar philstaff00000000000000// qpolygon.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPolygon { %TypeHeaderCode #include %End %TypeCode // Set the points of a polygon from a Python list. static bool setPointsFromList(QPolygon *poly, PyObject *l) { int *coords = new int[PyList_GET_SIZE(l)]; for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(l); ++i) { coords[i] = SIPLong_AsLong(PyList_GET_ITEM(l, i)); if (PyErr_Occurred() != NULL) { delete[] coords; return false; } } poly->setPoints(PyList_GET_SIZE(l) >> 1, coords); delete[] coords; return true; } %End %PickleCode PyObject *pl = PyList_New(sipCpp->count() * 2); for (int p = 0, i = 0; i < sipCpp->count(); ++i, p += 2) { int x, y; sipCpp->point(i, &x, &y); PyList_SET_ITEM(pl, p, SIPLong_FromLong(x)); PyList_SET_ITEM(pl, p + 1, SIPLong_FromLong(y)); } sipRes = Py_BuildValue((char *)"(N)", pl); %End public: QPolygon(); ~QPolygon(); QPolygon(const QPolygon &a); QPolygon(const QVector &v); QPolygon(const QRect &rectangle, bool closed = false); explicit QPolygon(int asize); QPolygon(SIP_PYLIST points /DocType="list-of-int"/) /NoDerived/; %MethodCode sipCpp = new QPolygon(); if (!setPointsFromList(sipCpp, a0)) { delete sipCpp; sipCpp = 0; sipIsErr = 1; } %End QPolygon(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPolygon(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End void translate(int dx, int dy); QRect boundingRect() const; QPoint point(int index) const; void setPoints(SIP_PYLIST points /DocType="list-of-int"/); %MethodCode if (!setPointsFromList(sipCpp, a0)) sipIsErr = 1; %End void setPoints(int firstx, int firsty, ...); %MethodCode // Accept at least one pair of integer coordinates. int nPoints = 1 + ((PyTuple_GET_SIZE(a2) + 1) >> 1); int *points = new int[nPoints * 2]; points[0] = a0; points[1] = a1; for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(a2); ++i) points[2 + i] = SIPLong_AsLong(PyTuple_GET_ITEM(a2, i)); sipCpp->setPoints(nPoints, points); delete[] points; %End void putPoints(int index, int firstx, int firsty, ...); %MethodCode // Accept at least one pair of integer coordinates. int nPoints = 1 + ((PyTuple_GET_SIZE(a3) + 1) >> 1); int *points = new int[nPoints * 2]; points[0] = a1; points[1] = a2; for (SIP_SSIZE_T i = 0; i < PyTuple_GET_SIZE(a3); ++i) points[2 + i] = SIPLong_AsLong(PyTuple_GET_ITEM(a3, i)); sipCpp->putPoints(a0, nPoints, points); delete[] points; %End void putPoints(int index, int nPoints, const QPolygon &fromPolygon, int from = 0); void setPoint(int index, const QPoint &pt); void setPoint(int index, int x, int y); void translate(const QPoint &offset); bool containsPoint(const QPoint &pt, Qt::FillRule fillRule) const; QPolygon united(const QPolygon &r) const; QPolygon intersected(const QPolygon &r) const; QPolygon subtracted(const QPolygon &r) const; QPolygon translated(int dx, int dy) const; QPolygon translated(const QPoint &offset) const; // Methods inherited from QVector and Python special methods. // Keep in sync with QPolygonF and QXmlStreamAttributes. void append(const QPoint &value); const QPoint &at(int i) const; void clear(); bool contains(const QPoint &value) const; int count(const QPoint &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QPoint &value, int size = -1); QPoint &first(); int indexOf(const QPoint &value, int from = 0) const; void insert(int i, const QPoint &value); bool isEmpty() const; QPoint &last(); int lastIndexOf(const QPoint &value, int from = -1) const; // Note the Qt return type is QVector. QPolygon mid(int pos, int length = -1) const; void prepend(const QPoint &value); void remove(int i); void remove(int i, int count); void replace(int i, const QPoint &value); int size() const; QPoint value(int i) const; QPoint value(int i, const QPoint &defaultValue) const; bool operator!=(const QPolygon &other) const; // Note the Qt return type is QVector. QPolygon operator+(const QPolygon &other) const; QPolygon &operator+=(const QPolygon &other); QPolygon &operator+=(const QPoint &value); bool operator==(const QPolygon &other) const; SIP_PYOBJECT operator<<(const QPoint &value); %MethodCode *a0 << *a1; sipRes = sipArg0; Py_INCREF(sipRes); %End QPoint &operator[](int i); %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QPoint(sipCpp->operator[]((int)idx)); %End // Some additional Python special methods. void __setitem__(int i, const QPoint &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QPolygon &list); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QVector::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } %End QPolygon &operator[](SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QPolygon(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QPoint &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End void swap(QPolygon &other); }; class QPolygonF { %TypeHeaderCode #include %End public: QPolygonF(); ~QPolygonF(); QPolygonF(const QPolygonF &a); QPolygonF(const QVector &v); QPolygonF(const QRectF &r); QPolygonF(const QPolygon &a); explicit QPolygonF(int asize); void translate(const QPointF &offset); QPolygon toPolygon() const; bool isClosed() const; QRectF boundingRect() const; void translate(qreal dx, qreal dy); bool containsPoint(const QPointF &pt, Qt::FillRule fillRule) const; QPolygonF united(const QPolygonF &r) const; QPolygonF intersected(const QPolygonF &r) const; QPolygonF subtracted(const QPolygonF &r) const; QPolygonF translated(const QPointF &offset) const; QPolygonF translated(qreal dx, qreal dy) const; // Methods inherited from QVector and Python special methods. // Keep in sync with QPolygon and QXmlStreamAttributes. void append(const QPointF &value); const QPointF &at(int i) const; void clear(); bool contains(const QPointF &value) const; int count(const QPointF &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QPointF &value, int size = -1); QPointF &first(); int indexOf(const QPointF &value, int from = 0) const; void insert(int i, const QPointF &value); bool isEmpty() const; QPointF &last(); int lastIndexOf(const QPointF &value, int from = -1) const; // Note the Qt return type is QVector. QPolygonF mid(int pos, int length = -1) const; void prepend(const QPointF &value); void remove(int i); void remove(int i, int count); void replace(int i, const QPointF &value); int size() const; QPointF value(int i) const; QPointF value(int i, const QPointF &defaultValue) const; bool operator!=(const QPolygonF &other) const; // Note the Qt return type is QVector. QPolygonF operator+(const QPolygonF &other) const; QPolygonF &operator+=(const QPolygonF &other); QPolygonF &operator+=(const QPointF &value); bool operator==(const QPolygonF &other) const; SIP_PYOBJECT operator<<(const QPointF &value); %MethodCode *a0 << *a1; sipRes = sipArg0; Py_INCREF(sipRes); %End QPointF &operator[](int i); %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QPointF(sipCpp->operator[]((int)idx)); %End // Some additional Python special methods. void __setitem__(int i, const QPointF &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QPolygonF &list); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QVector::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } %End QPolygonF &operator[](SIP_PYSLICE slice); %MethodCode SIP_SSIZE_T len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QPolygonF(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QPointF &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End void swap(QPolygonF &other); }; QDataStream &operator<<(QDataStream &stream, const QPolygonF &array /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &stream, QPolygonF &array /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &stream, QPolygon &polygon /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qpygui_qlist.sip0000644000076500000240000000526012613140040020343 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtGui module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /DocType="list-of-QFontDatabase.WritingSystem"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QFontDatabase_WritingSystem); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); SIP_SSIZE_T len = PySequence_Size(sipPy); if (len < 0) return 0; QList *ql = new QList; for (SIP_SSIZE_T i = 0; i < len; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); if (!itm) { delete ql; *sipIsErr = 1; return 0; } if (!sipCanConvertToEnum(itm, sipType_QFontDatabase_WritingSystem)) { PyErr_Format(PyExc_TypeError, "element " SIP_SSIZE_T_FORMAT " has type '%s' but 'QFontDatabase.WritingSystem' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; *sipIsErr = 1; return 0; } ql->append( static_cast( SIPLong_AsLong(itm))); Py_DECREF(itm); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtGui/qpygui_qpair.sip0000644000076500000240000001216112613140040020321 0ustar philstaff00000000000000// This is the SIP interface definition for the QPair based mapped types // specific to the QtGui module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_OpenGL) %MappedType QPair /DocType="tuple-of-QOpenGLTexture.Filter-QOpenGLTexture.Filter"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return sipBuildResult(NULL, "(FF)", sipCpp->first, sipType_QOpenGLTexture_Filter, sipCpp->second, sipType_QOpenGLTexture_Filter); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); SIP_SSIZE_T len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has " SIP_SSIZE_T_FORMAT " elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_ITEM(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } if (!sipCanConvertToEnum(firstobj, sipType_QOpenGLTexture_Filter)) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'QOpenGLTexture.Filter' is expected", Py_TYPE(firstobj)->tp_name); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_ITEM(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } if (!sipCanConvertToEnum(secondobj, sipType_QOpenGLTexture_Filter)) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'QOpenGLTexture.Filter' is expected", Py_TYPE(secondobj)->tp_name); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair( static_cast(SIPLong_AsLong(firstobj)), static_cast(SIPLong_AsLong(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %End %End %If (Qt_5_2_0 -) %MappedType QPair /DocType="tuple-of-float-float"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ff)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); SIP_SSIZE_T len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has " SIP_SSIZE_T_FORMAT " elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_ITEM(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } PyErr_Clear(); double first = PyFloat_AsDouble(firstobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'float' is expected", Py_TYPE(firstobj)->tp_name); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_ITEM(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } PyErr_Clear(); double second = PyFloat_AsDouble(secondobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'float' is expected", Py_TYPE(secondobj)->tp_name); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair(first, second);; Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %End PyQt-gpl-5.5.1/sip/QtGui/qpygui_qvector.sip0000644000076500000240000002032612613140040020672 0ustar philstaff00000000000000// This is the SIP interface definition for the QVector based mapped types // specific to the QtGui module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QVector /DocType="list-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %MappedType QVector /DocType="list-of-float"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %If (PyQt_qreal_double) %MappedType QVector /DocType="list-of-float"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End %If (PyQt_Desktop_OpenGL) %MappedType QVector /DocType="list-of-int"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLongLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned PY_LONG_LONG val = PyLong_AsUnsignedLongLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'int' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End PyQt-gpl-5.5.1/sip/QtGui/qquaternion.sip0000644000076500000240000001376212613140040020165 0ustar philstaff00000000000000// qquaternion.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QQuaternion { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", (double)sipCpp->scalar(), (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z()); %End public: QQuaternion(); QQuaternion(float aScalar, float xpos, float ypos, float zpos); QQuaternion(float aScalar, const QVector3D &aVector); explicit QQuaternion(const QVector4D &aVector); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *scalar = PyFloat_FromDouble(sipCpp->scalar()); PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); if (scalar && x && y && z) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QQuaternion(%R, %R, %R, %R)", scalar, x, y, z); #else sipRes = PyString_FromString("PyQt5.QtGui.QQuaternion("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(scalar)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(z)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(scalar); Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); %End float length() const; float lengthSquared() const; QQuaternion normalized() const; void normalize(); QVector3D rotatedVector(const QVector3D &vector) const; static QQuaternion fromAxisAndAngle(const QVector3D &axis, float angle); static QQuaternion fromAxisAndAngle(float x, float y, float z, float angle); static QQuaternion slerp(const QQuaternion &q1, const QQuaternion &q2, float t); static QQuaternion nlerp(const QQuaternion &q1, const QQuaternion &q2, float t); bool isNull() const; bool isIdentity() const; float x() const; float y() const; float z() const; float scalar() const; void setX(float aX); void setY(float aY); void setZ(float aZ); void setScalar(float aScalar); QQuaternion conjugate() const; QQuaternion &operator+=(const QQuaternion &quaternion); QQuaternion &operator-=(const QQuaternion &quaternion); QQuaternion &operator*=(float factor); QQuaternion &operator*=(const QQuaternion &quaternion); QQuaternion &operator/=(float divisor); void setVector(const QVector3D &aVector); QVector3D vector() const; void setVector(float aX, float aY, float aZ); QVector4D toVector4D() const; %If (Qt_5_5_0 -) void getAxisAndAngle(QVector3D *axis /Out/, float *angle) const; %End %If (Qt_5_5_0 -) void getEulerAngles(float *pitch, float *yaw, float *roll) const; %End %If (Qt_5_5_0 -) static QQuaternion fromEulerAngles(float pitch, float yaw, float roll); %End %If (Qt_5_5_0 -) QMatrix3x3 toRotationMatrix() const; %End %If (Qt_5_5_0 -) static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3); %End %If (Qt_5_5_0 -) void getAxes(QVector3D *xAxis /Out/, QVector3D *yAxis /Out/, QVector3D *zAxis /Out/) const; %End %If (Qt_5_5_0 -) static QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis); %End %If (Qt_5_5_0 -) static QQuaternion fromDirection(const QVector3D &direction, const QVector3D &up); %End %If (Qt_5_5_0 -) static QQuaternion rotationTo(const QVector3D &from, const QVector3D &to); %End %If (Qt_5_5_0 -) static float dotProduct(const QQuaternion &q1, const QQuaternion &q2); %End %If (Qt_5_5_0 -) QQuaternion inverted() const; %End %If (Qt_5_5_0 -) QQuaternion conjugated() const; %End %If (Qt_5_5_0 -) QVector3D toEulerAngles() const; %End %If (Qt_5_5_0 -) static QQuaternion fromEulerAngles(const QVector3D &eulerAngles); %End }; const QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2); bool operator==(const QQuaternion &q1, const QQuaternion &q2); bool operator!=(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator*(float factor, const QQuaternion &quaternion); const QQuaternion operator*(const QQuaternion &quaternion, float factor); const QQuaternion operator-(const QQuaternion &quaternion); const QQuaternion operator/(const QQuaternion &quaternion, float divisor); bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2); QDataStream &operator<<(QDataStream &, const QQuaternion & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QQuaternion & /Constrained/) /ReleaseGIL/; %If (Qt_5_5_0 -) QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec); %End PyQt-gpl-5.5.1/sip/QtGui/qrasterwindow.sip0000644000076500000240000000237412613140040020525 0ustar philstaff00000000000000// qrasterwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QRasterWindow : QPaintDeviceWindow { %TypeHeaderCode #include %End public: explicit QRasterWindow(QWindow *parent /TransferThis/ = 0); protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: QRasterWindow(const QRasterWindow &); }; %End PyQt-gpl-5.5.1/sip/QtGui/qrawfont.sip0000644000076500000240000000713612613140040017456 0ustar philstaff00000000000000// qrawfont.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_RawFont) class QRawFont { %TypeHeaderCode #include %End public: enum AntialiasingType { PixelAntialiasing, SubPixelAntialiasing, }; QRawFont(); QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); QRawFont(const QRawFont &other); ~QRawFont(); bool isValid() const; bool operator==(const QRawFont &other) const; bool operator!=(const QRawFont &other) const; QString familyName() const; QString styleName() const; QFont::Style style() const; int weight() const; QVector glyphIndexesForString(const QString &text) const; QVector advancesForGlyphIndexes(const QVector &glyphIndexes) const; %If (Qt_5_1_0 -) QVector advancesForGlyphIndexes(const QVector &glyphIndexes, QFlags layoutFlags) const; %End QImage alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = QRawFont::SubPixelAntialiasing, const QTransform &transform = QTransform()) const; QPainterPath pathForGlyph(quint32 glyphIndex) const; void setPixelSize(qreal pixelSize); qreal pixelSize() const; QFont::HintingPreference hintingPreference() const; qreal ascent() const; qreal descent() const; qreal leading() const; qreal xHeight() const; qreal averageCharWidth() const; qreal maxCharWidth() const; qreal unitsPerEm() const; void loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference) /ReleaseGIL/; void loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) /ReleaseGIL/; bool supportsCharacter(uint ucs4) const; bool supportsCharacter(QChar character) const; QList supportedWritingSystems() const; QByteArray fontTable(const char *tagName) const; static QRawFont fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any); QRectF boundingRect(quint32 glyphIndex) const; qreal lineThickness() const; qreal underlinePosition() const; void swap(QRawFont &other); %If (Qt_5_1_0 -) enum LayoutFlag { SeparateAdvances, KernedAdvances, UseDesignMetrics, }; %End %If (Qt_5_1_0 -) typedef QFlags LayoutFlags; %End }; %End %If (Qt_5_1_0 -) QFlags operator|(QRawFont::LayoutFlag f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtGui/qregion.sip0000644000076500000240000001030312613140040017247 0ustar philstaff00000000000000// qregion.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegion { %TypeHeaderCode #include %End public: enum RegionType { Rectangle, Ellipse, }; QRegion(); QRegion(int x, int y, int w, int h, QRegion::RegionType type = QRegion::Rectangle); QRegion(const QRect &r, QRegion::RegionType type = QRegion::Rectangle); QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill); QRegion(const QBitmap &bitmap); QRegion(const QRegion ®ion); QRegion(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QRegion(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QRegion(); bool isEmpty() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isEmpty(); %End bool contains(const QPoint &p) const; int __contains__(const QPoint &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRect &r) const; int __contains__(const QRect &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End void translate(int dx, int dy); void translate(const QPoint &p); QRegion translated(int dx, int dy) const; QRegion translated(const QPoint &p) const; QRegion united(const QRegion &r) const; QRegion united(const QRect &r) const; QRect boundingRect() const; QVector rects() const; %If (Qt_5_4_0 -) QRegion operator|(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator|(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator+(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator+(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator+(const QRect &r) const; %End %If (- Qt_5_4_0) const QRegion operator+(const QRect &r) const; %End %If (Qt_5_4_0 -) QRegion operator&(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator&(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator&(const QRect &r) const; %End %If (- Qt_5_4_0) const QRegion operator&(const QRect &r) const; %End %If (Qt_5_4_0 -) QRegion operator-(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator-(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator^(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator^(const QRegion &r) const; %End QRegion &operator|=(const QRegion &r); QRegion &operator+=(const QRegion &r); QRegion &operator+=(const QRect &r); QRegion &operator&=(const QRegion &r); QRegion &operator&=(const QRect &r); QRegion &operator-=(const QRegion &r); QRegion &operator^=(const QRegion &r); bool operator==(const QRegion &r) const; bool operator!=(const QRegion &r) const; QRegion intersected(const QRegion &r) const; QRegion intersected(const QRect &r) const; QRegion subtracted(const QRegion &r) const; QRegion xored(const QRegion &r) const; bool intersects(const QRegion &r) const; bool intersects(const QRect &r) const; int rectCount() const; void swap(QRegion &other); bool isNull() const; }; QDataStream &operator<<(QDataStream &, const QRegion & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRegion & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qrgb.sip0000644000076500000240000000247312613140040016547 0ustar philstaff00000000000000// qrgb.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End typedef unsigned int QRgb; int qRed(QRgb rgb); int qGreen(QRgb rgb); int qBlue(QRgb rgb); int qAlpha(QRgb rgb); QRgb qRgb(int r, int g, int b); QRgb qRgba(int r, int g, int b, int a); int qGray(int r, int g, int b); int qGray(QRgb rgb); bool qIsGray(QRgb rgb); %If (Qt_5_3_0 -) QRgb qPremultiply(QRgb x); %End %If (Qt_5_3_0 -) QRgb qUnpremultiply(QRgb p); %End PyQt-gpl-5.5.1/sip/QtGui/qscreen.sip0000644000076500000240000000611312613140040017247 0ustar philstaff00000000000000// qscreen.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScreen : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: %If (Qt_5_4_0 -) virtual ~QScreen(); %End QString name() const; int depth() const; QSize size() const; QRect geometry() const; QSizeF physicalSize() const; qreal physicalDotsPerInchX() const; qreal physicalDotsPerInchY() const; qreal physicalDotsPerInch() const; qreal logicalDotsPerInchX() const; qreal logicalDotsPerInchY() const; qreal logicalDotsPerInch() const; QSize availableSize() const; QRect availableGeometry() const; QList virtualSiblings() const; QSize virtualSize() const; QRect virtualGeometry() const; QSize availableVirtualSize() const; QRect availableVirtualGeometry() const; %If (Qt_5_2_0 -) Qt::ScreenOrientation nativeOrientation() const; %End Qt::ScreenOrientation primaryOrientation() const; Qt::ScreenOrientation orientation() const; Qt::ScreenOrientations orientationUpdateMask() const; void setOrientationUpdateMask(Qt::ScreenOrientations mask); int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const; QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const; QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const; bool isPortrait(Qt::ScreenOrientation orientation) const; bool isLandscape(Qt::ScreenOrientation orientation) const; QPixmap grabWindow(WId window, int x = 0, int y = 0, int width = -1, int height = -1); qreal refreshRate() const; qreal devicePixelRatio() const; signals: void geometryChanged(const QRect &geometry); void physicalDotsPerInchChanged(qreal dpi); void logicalDotsPerInchChanged(qreal dpi); void primaryOrientationChanged(Qt::ScreenOrientation orientation); void orientationChanged(Qt::ScreenOrientation orientation); void refreshRateChanged(qreal refreshRate); void physicalSizeChanged(const QSizeF &size); void virtualGeometryChanged(const QRect &rect); %If (Qt_5_4_0 -) void availableGeometryChanged(const QRect &geometry); %End private: QScreen(const QScreen &); }; PyQt-gpl-5.5.1/sip/QtGui/qsessionmanager.sip0000644000076500000240000000370612613140040021013 0ustar philstaff00000000000000// qsessionmanager.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SessionManager) class QSessionManager : QObject { %TypeHeaderCode #include %End QSessionManager(QGuiApplication *app /TransferThis/, QString &id, QString &key); virtual ~QSessionManager(); public: QString sessionId() const; QString sessionKey() const; bool allowsInteraction(); bool allowsErrorInteraction(); void release(); void cancel(); enum RestartHint { RestartIfRunning, RestartAnyway, RestartImmediately, RestartNever, }; void setRestartHint(QSessionManager::RestartHint); QSessionManager::RestartHint restartHint() const; void setRestartCommand(const QStringList &); QStringList restartCommand() const; void setDiscardCommand(const QStringList &); QStringList discardCommand() const; void setManagerProperty(const QString &name, const QString &value); void setManagerProperty(const QString &name, const QStringList &value); bool isPhase2() const; void requestPhase2(); }; %End PyQt-gpl-5.5.1/sip/QtGui/qstandarditemmodel.sip0000644000076500000240000002251512613140040021474 0ustar philstaff00000000000000// qstandarditemmodel.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStandardItemModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QStandardItemModel(QObject *parent /TransferThis/ = 0); QStandardItemModel(int rows, int columns, QObject *parent /TransferThis/ = 0); virtual ~QStandardItemModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual Qt::ItemFlags flags(const QModelIndex &index) const; void clear(); virtual Qt::DropActions supportedDropActions() const; virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); QStandardItem *itemFromIndex(const QModelIndex &index) const; QModelIndex indexFromItem(const QStandardItem *item) const; QStandardItem *item(int row, int column = 0) const; void setItem(int row, int column, QStandardItem *item /Transfer/); void setItem(int arow, QStandardItem *aitem /Transfer/); QStandardItem *invisibleRootItem() const /Transfer/; QStandardItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QStandardItem *item /Transfer/); QStandardItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QStandardItem *item /Transfer/); void setHorizontalHeaderLabels(const QStringList &labels); void setVerticalHeaderLabels(const QStringList &labels); void setRowCount(int rows); void setColumnCount(int columns); void appendRow(const QList &items /Transfer/); void appendColumn(const QList &items /Transfer/); void insertRow(int row, const QList &items /Transfer/); void insertColumn(int column, const QList &items /Transfer/); QStandardItem *takeItem(int row, int column = 0) /TransferBack/; QList takeRow(int row) /TransferBack/; QList takeColumn(int column) /TransferBack/; QStandardItem *takeHorizontalHeaderItem(int column) /TransferBack/; QStandardItem *takeVerticalHeaderItem(int row) /TransferBack/; const QStandardItem *itemPrototype() const; void setItemPrototype(const QStandardItem *item /Transfer/); QList findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const; int sortRole() const; void setSortRole(int role); void appendRow(QStandardItem *aitem /Transfer/); void insertRow(int arow, QStandardItem *aitem /Transfer/); bool insertRow(int row, const QModelIndex &parent = QModelIndex()); bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; signals: void itemChanged(QStandardItem *item); private: QStandardItemModel(const QStandardItemModel &); }; class QStandardItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QStandardItem(); explicit QStandardItem(const QString &text); QStandardItem(const QIcon &icon, const QString &text); QStandardItem(int rows, int columns = 1); virtual ~QStandardItem(); virtual QVariant data(int role = Qt::UserRole+1) const; virtual void setData(const QVariant &value, int role = Qt::UserRole+1); QString text() const; QIcon icon() const; QString toolTip() const; QString statusTip() const; QString whatsThis() const; QSize sizeHint() const; QFont font() const; Qt::Alignment textAlignment() const; QBrush background() const; QBrush foreground() const; Qt::CheckState checkState() const; QString accessibleText() const; QString accessibleDescription() const; Qt::ItemFlags flags() const; void setFlags(Qt::ItemFlags flags); bool isEnabled() const; void setEnabled(bool enabled); bool isEditable() const; void setEditable(bool editable); bool isSelectable() const; void setSelectable(bool selectable); bool isCheckable() const; void setCheckable(bool checkable); bool isTristate() const; void setTristate(bool tristate); bool isDragEnabled() const; void setDragEnabled(bool dragEnabled); bool isDropEnabled() const; void setDropEnabled(bool dropEnabled); QStandardItem *parent() const; int row() const; int column() const; QModelIndex index() const; QStandardItemModel *model() const; int rowCount() const; void setRowCount(int rows); int columnCount() const; void setColumnCount(int columns); bool hasChildren() const; QStandardItem *child(int row, int column = 0) const; void setChild(int row, int column, QStandardItem *item /Transfer/); void setChild(int arow, QStandardItem *aitem /Transfer/); void insertRow(int row, const QList &items /Transfer/); void insertRow(int arow, QStandardItem *aitem /Transfer/); void insertRows(int row, int count); void insertColumn(int column, const QList &items /Transfer/); void insertColumns(int column, int count); void removeRow(int row); void removeColumn(int column); void removeRows(int row, int count); void removeColumns(int column, int count); QStandardItem *takeChild(int row, int column = 0) /TransferBack/; QList takeRow(int row) /TransferBack/; QList takeColumn(int column) /TransferBack/; void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStandardItem *clone() const /Factory/; enum ItemType { Type, UserType, }; virtual int type() const; virtual void read(QDataStream &in); virtual void write(QDataStream &out) const; virtual bool operator<(const QStandardItem &other /NoCopy/) const; void setText(const QString &atext); void setIcon(const QIcon &aicon); void setToolTip(const QString &atoolTip); void setStatusTip(const QString &astatusTip); void setWhatsThis(const QString &awhatsThis); void setSizeHint(const QSize &asizeHint); void setFont(const QFont &afont); void setTextAlignment(Qt::Alignment atextAlignment); void setBackground(const QBrush &abrush); void setForeground(const QBrush &abrush); void setCheckState(Qt::CheckState acheckState); void setAccessibleText(const QString &aaccessibleText); void setAccessibleDescription(const QString &aaccessibleDescription); void appendRow(const QList &aitems /Transfer/); void appendRow(QStandardItem *aitem /Transfer/); void appendColumn(const QList &aitems /Transfer/); void insertRows(int row, const QList &items /Transfer/); void appendRows(const QList &aitems /Transfer/); protected: QStandardItem(const QStandardItem &other); void emitDataChanged(); }; QDataStream &operator>>(QDataStream &in, QStandardItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &out, const QStandardItem &item /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qstatictext.sip0000644000076500000240000000361212613140040020165 0ustar philstaff00000000000000// qstatictext.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStaticText { %TypeHeaderCode #include %End public: enum PerformanceHint { ModerateCaching, AggressiveCaching, }; QStaticText(); QStaticText(const QString &text); QStaticText(const QStaticText &other); ~QStaticText(); void setText(const QString &text); QString text() const; void setTextFormat(Qt::TextFormat textFormat); Qt::TextFormat textFormat() const; void setTextWidth(qreal textWidth); qreal textWidth() const; void setTextOption(const QTextOption &textOption); QTextOption textOption() const; QSizeF size() const; void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont()); void setPerformanceHint(QStaticText::PerformanceHint performanceHint); QStaticText::PerformanceHint performanceHint() const; bool operator==(const QStaticText &) const; bool operator!=(const QStaticText &) const; void swap(QStaticText &other); }; PyQt-gpl-5.5.1/sip/QtGui/qstylehints.sip0000644000076500000240000000424212613140040020177 0ustar philstaff00000000000000// qstylehints.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleHints : QObject { %TypeHeaderCode #include %End public: int mouseDoubleClickInterval() const; int startDragDistance() const; int startDragTime() const; int startDragVelocity() const; int keyboardInputInterval() const; int keyboardAutoRepeatRate() const; int cursorFlashTime() const; bool showIsFullScreen() const; int passwordMaskDelay() const; qreal fontSmoothingGamma() const; bool useRtlExtensions() const; %If (Qt_5_1_0 -) QChar passwordMaskCharacter() const; %End %If (Qt_5_2_0 -) bool setFocusOnTouchRelease() const; %End %If (Qt_5_3_0 -) int mousePressAndHoldInterval() const; %End %If (Qt_5_5_0 -) Qt::TabFocusBehavior tabFocusBehavior() const; %End %If (Qt_5_5_0 -) bool singleClickActivation() const; %End signals: %If (Qt_5_5_0 -) void cursorFlashTimeChanged(int cursorFlashTime); %End %If (Qt_5_5_0 -) void keyboardInputIntervalChanged(int keyboardInputInterval); %End %If (Qt_5_5_0 -) void mouseDoubleClickIntervalChanged(int mouseDoubleClickInterval); %End %If (Qt_5_5_0 -) void startDragDistanceChanged(int startDragDistance); %End %If (Qt_5_5_0 -) void startDragTimeChanged(int startDragTime); %End private: QStyleHints(); }; PyQt-gpl-5.5.1/sip/QtGui/qsurface.sip0000644000076500000240000000306112613140040017417 0ustar philstaff00000000000000// qsurface.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSurface /Abstract/ { %TypeHeaderCode #include %End public: enum SurfaceClass { Window, %If (Qt_5_1_0 -) Offscreen, %End }; enum SurfaceType { RasterSurface, OpenGLSurface, %If (Qt_5_3_0 -) RasterGLSurface, %End }; virtual ~QSurface(); QSurface::SurfaceClass surfaceClass() const; virtual QSurfaceFormat format() const = 0; virtual QSurface::SurfaceType surfaceType() const = 0; virtual QSize size() const = 0; %If (Qt_5_3_0 -) bool supportsOpenGL() const; %End protected: explicit QSurface(QSurface::SurfaceClass type); }; PyQt-gpl-5.5.1/sip/QtGui/qsurfaceformat.sip0000644000076500000240000000764112613140040020640 0ustar philstaff00000000000000// qsurfaceformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSurfaceFormat { %TypeHeaderCode #include %End public: enum FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, %If (Qt_5_5_0 -) ResetNotification, %End }; typedef QFlags FormatOptions; enum SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer, }; enum RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG, }; enum OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile, }; QSurfaceFormat(); QSurfaceFormat(QFlags options); QSurfaceFormat(const QSurfaceFormat &other); ~QSurfaceFormat(); void setDepthBufferSize(int size); int depthBufferSize() const; void setStencilBufferSize(int size); int stencilBufferSize() const; void setRedBufferSize(int size); int redBufferSize() const; void setGreenBufferSize(int size); int greenBufferSize() const; void setBlueBufferSize(int size); int blueBufferSize() const; void setAlphaBufferSize(int size); int alphaBufferSize() const; void setSamples(int numSamples); int samples() const; void setSwapBehavior(QSurfaceFormat::SwapBehavior behavior); QSurfaceFormat::SwapBehavior swapBehavior() const; bool hasAlpha() const; void setProfile(QSurfaceFormat::OpenGLContextProfile profile); QSurfaceFormat::OpenGLContextProfile profile() const; void setRenderableType(QSurfaceFormat::RenderableType type); QSurfaceFormat::RenderableType renderableType() const; void setMajorVersion(int majorVersion); int majorVersion() const; void setMinorVersion(int minorVersion); int minorVersion() const; void setStereo(bool enable); void setOption(QFlags opt); bool testOption(QFlags opt) const; bool stereo() const; %If (Qt_5_1_0 -) QPair version() const; %End %If (Qt_5_1_0 -) void setVersion(int major, int minor); %End %If (Qt_5_3_0 -) void setOptions(QFlags options); %End %If (Qt_5_3_0 -) void setOption(QSurfaceFormat::FormatOption option, bool on = true); %End %If (Qt_5_3_0 -) bool testOption(QSurfaceFormat::FormatOption option) const; %End %If (Qt_5_3_0 -) QFlags options() const; %End %If (Qt_5_3_0 -) int swapInterval() const; %End %If (Qt_5_3_0 -) void setSwapInterval(int interval); %End %If (Qt_5_4_0 -) static void setDefaultFormat(const QSurfaceFormat &format); %End %If (Qt_5_4_0 -) static QSurfaceFormat defaultFormat(); %End }; bool operator==(const QSurfaceFormat &, const QSurfaceFormat &); bool operator!=(const QSurfaceFormat &, const QSurfaceFormat &); QFlags operator|(QSurfaceFormat::FormatOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtGui/qsyntaxhighlighter.sip0000644000076500000240000000566012613140040021543 0ustar philstaff00000000000000// qsyntaxhighlighter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSyntaxHighlighter : QObject { %TypeHeaderCode #include %End public: explicit QSyntaxHighlighter(QTextDocument *parent /TransferThis/); explicit QSyntaxHighlighter(QObject *parent /TransferThis/); virtual ~QSyntaxHighlighter(); void setDocument(QTextDocument *doc /KeepReference/); QTextDocument *document() const; public slots: void rehighlight(); void rehighlightBlock(const QTextBlock &block); protected: virtual void highlightBlock(const QString &text) = 0; void setFormat(int start, int count, const QTextCharFormat &format); void setFormat(int start, int count, const QColor &color); void setFormat(int start, int count, const QFont &font); QTextCharFormat format(int pos) const; int previousBlockState() const; int currentBlockState() const; void setCurrentBlockState(int newState); void setCurrentBlockUserData(QTextBlockUserData *data /GetWrapper/); %MethodCode // Ownership of the user data is with the document not the syntax highlighter. typedef PyObject *(*helper_func)(QObject *, const sipTypeDef *); static helper_func helper = 0; if (!helper) helper = (helper_func)sipImportSymbol("qtgui_wrap_ancestors"); QTextDocument *td = sipCpp->document(); if (td) { PyObject *py_td = (helper ? helper(td, sipType_QTextDocument) : 0); if (!py_td) { sipIsErr = 1; } else { sipTransferTo(a0Wrapper, py_td); Py_DECREF(py_td); } } #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->setCurrentBlockUserData(a0); #else sipCpp->sipProtect_setCurrentBlockUserData(a0); #endif %End QTextBlockUserData *currentBlockUserData() const; QTextBlock currentBlock() const; private: QSyntaxHighlighter(const QSyntaxHighlighter &); }; PyQt-gpl-5.5.1/sip/QtGui/qtextcursor.sip0000644000076500000240000001240412613140040020212 0ustar philstaff00000000000000// qtextcursor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextCursor { %TypeHeaderCode #include %End public: QTextCursor(); explicit QTextCursor(QTextDocument *document); explicit QTextCursor(QTextFrame *frame); explicit QTextCursor(const QTextBlock &block); QTextCursor(const QTextCursor &cursor); ~QTextCursor(); bool isNull() const; enum MoveMode { MoveAnchor, KeepAnchor, }; void setPosition(int pos, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); int position() const; int anchor() const; void insertText(const QString &text); void insertText(const QString &text, const QTextCharFormat &format); enum MoveOperation { NoMove, Start, Up, StartOfLine, StartOfBlock, StartOfWord, PreviousBlock, PreviousCharacter, PreviousWord, Left, WordLeft, End, Down, EndOfLine, EndOfWord, EndOfBlock, NextBlock, NextCharacter, NextWord, Right, WordRight, NextCell, PreviousCell, NextRow, PreviousRow, }; bool movePosition(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor, int n = 1); void deleteChar(); void deletePreviousChar(); enum SelectionType { WordUnderCursor, LineUnderCursor, BlockUnderCursor, Document, }; void select(QTextCursor::SelectionType selection); bool hasSelection() const; bool hasComplexSelection() const; void removeSelectedText(); void clearSelection(); int selectionStart() const; int selectionEnd() const; QString selectedText() const; QTextDocumentFragment selection() const; void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const; QTextBlock block() const; QTextCharFormat charFormat() const; void setCharFormat(const QTextCharFormat &format); void mergeCharFormat(const QTextCharFormat &modifier); QTextBlockFormat blockFormat() const; void setBlockFormat(const QTextBlockFormat &format); void mergeBlockFormat(const QTextBlockFormat &modifier); QTextCharFormat blockCharFormat() const; void setBlockCharFormat(const QTextCharFormat &format); void mergeBlockCharFormat(const QTextCharFormat &modifier); bool atBlockStart() const; bool atBlockEnd() const; bool atStart() const; bool atEnd() const; void insertBlock(); void insertBlock(const QTextBlockFormat &format); void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat); QTextList *insertList(const QTextListFormat &format); QTextList *insertList(QTextListFormat::Style style); QTextList *createList(const QTextListFormat &format); QTextList *createList(QTextListFormat::Style style); QTextList *currentList() const; QTextTable *insertTable(int rows, int cols, const QTextTableFormat &format); QTextTable *insertTable(int rows, int cols); QTextTable *currentTable() const; QTextFrame *insertFrame(const QTextFrameFormat &format); QTextFrame *currentFrame() const; void insertFragment(const QTextDocumentFragment &fragment); void insertHtml(const QString &html); void insertImage(const QTextImageFormat &format); void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment); void insertImage(const QString &name); void insertImage(const QImage &image, const QString &name /DocValue="''"/ = QString()); void beginEditBlock(); void joinPreviousEditBlock(); void endEditBlock(); int blockNumber() const; int columnNumber() const; bool operator!=(const QTextCursor &rhs) const; bool operator<(const QTextCursor &rhs) const; bool operator<=(const QTextCursor &rhs) const; bool operator==(const QTextCursor &rhs) const; bool operator>=(const QTextCursor &rhs) const; bool operator>(const QTextCursor &rhs) const; bool isCopyOf(const QTextCursor &other) const; bool visualNavigation() const; void setVisualNavigation(bool b); QTextDocument *document() const; int positionInBlock() const; void setVerticalMovementX(int x); int verticalMovementX() const; void setKeepPositionOnInsert(bool b); bool keepPositionOnInsert() const; void swap(QTextCursor &other); }; PyQt-gpl-5.5.1/sip/QtGui/qtextdocument.sip0000644000076500000240000001477312613140040020526 0ustar philstaff00000000000000// qtextdocument.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace Qt { %TypeHeaderCode #include %End bool mightBeRichText(const QString &); QString convertFromPlainText(const QString &plain, Qt::WhiteSpaceMode mode = Qt::WhiteSpacePre); }; class QTextDocument : QObject { %TypeHeaderCode #include %End public: explicit QTextDocument(QObject *parent /TransferThis/ = 0); QTextDocument(const QString &text, QObject *parent /TransferThis/ = 0); virtual ~QTextDocument(); QTextDocument *clone(QObject *parent /TransferThis/ = 0) const /Factory/; bool isEmpty() const; virtual void clear(); void setUndoRedoEnabled(bool enable); bool isUndoRedoEnabled() const; bool isUndoAvailable() const; bool isRedoAvailable() const; void setDocumentLayout(QAbstractTextDocumentLayout *layout /Transfer/); QAbstractTextDocumentLayout *documentLayout() const; enum MetaInformation { DocumentTitle, DocumentUrl, }; void setMetaInformation(QTextDocument::MetaInformation info, const QString &); QString metaInformation(QTextDocument::MetaInformation info) const; QString toHtml(const QByteArray &encoding = QByteArray()) const; void setHtml(const QString &html); QString toPlainText() const; void setPlainText(const QString &text); enum FindFlag { FindBackward, FindCaseSensitively, FindWholeWords, }; typedef QFlags FindFlags; QTextCursor find(const QString &subString, int position = 0, QFlags options = 0) const; QTextCursor find(const QRegExp &expr, int position = 0, QFlags options = 0) const; %If (Qt_5_5_0 -) QTextCursor find(const QRegularExpression &expr, int position = 0, QFlags options = 0) const; %End QTextCursor find(const QString &subString, const QTextCursor &cursor, QFlags options = 0) const; QTextCursor find(const QRegExp &expr, const QTextCursor &cursor, QFlags options = 0) const; %If (Qt_5_5_0 -) QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, QFlags options = 0) const; %End QTextFrame *rootFrame() const; QTextObject *object(int objectIndex) const; QTextObject *objectForFormat(const QTextFormat &) const; QTextBlock findBlock(int pos) const; QTextBlock begin() const; QTextBlock end() const; void setPageSize(const QSizeF &size); QSizeF pageSize() const; void setDefaultFont(const QFont &font); QFont defaultFont() const; int pageCount() const; bool isModified() const; %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End %End enum ResourceType { HtmlResource, ImageResource, StyleSheetResource, UserResource, }; QVariant resource(int type, const QUrl &name) const; void addResource(int type, const QUrl &name, const QVariant &resource); QVector allFormats() const; void markContentsDirty(int from, int length); void setUseDesignMetrics(bool b); bool useDesignMetrics() const; signals: void blockCountChanged(int newBlockCount); void contentsChange(int from, int charsRemoves, int charsAdded); void contentsChanged(); void cursorPositionChanged(const QTextCursor &cursor); void modificationChanged(bool m); void redoAvailable(bool); void undoAvailable(bool); public slots: void undo(); void redo(); void setModified(bool on = true); protected: virtual QTextObject *createObject(const QTextFormat &f) /Factory/; virtual QVariant loadResource(int type, const QUrl &name); public: void drawContents(QPainter *p, const QRectF &rect = QRectF()); void setTextWidth(qreal width); qreal textWidth() const; qreal idealWidth() const; void adjustSize(); QSizeF size() const; int blockCount() const; void setDefaultStyleSheet(const QString &sheet); QString defaultStyleSheet() const; void undo(QTextCursor *cursor); void redo(QTextCursor *cursor); int maximumBlockCount() const; void setMaximumBlockCount(int maximum); QTextOption defaultTextOption() const; void setDefaultTextOption(const QTextOption &option); int revision() const; QTextBlock findBlockByNumber(int blockNumber) const; QTextBlock findBlockByLineNumber(int blockNumber) const; QTextBlock firstBlock() const; QTextBlock lastBlock() const; qreal indentWidth() const; void setIndentWidth(qreal width); signals: void undoCommandAdded(); void documentLayoutChanged(); public: QChar characterAt(int pos) const; qreal documentMargin() const; void setDocumentMargin(qreal margin); int lineCount() const; int characterCount() const; int availableUndoSteps() const; int availableRedoSteps() const; enum Stacks { UndoStack, RedoStack, UndoAndRedoStacks, }; void clearUndoRedoStacks(QTextDocument::Stacks stacks = QTextDocument::UndoAndRedoStacks); Qt::CursorMoveStyle defaultCursorMoveStyle() const; void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style); %If (Qt_5_3_0 -) QUrl baseUrl() const; %End %If (Qt_5_3_0 -) void setBaseUrl(const QUrl &url); %End signals: %If (Qt_5_3_0 -) void baseUrlChanged(const QUrl &url); %End private: QTextDocument(const QTextDocument &); }; QFlags operator|(QTextDocument::FindFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtGui/qtextdocumentfragment.sip0000644000076500000240000000321312613140040022235 0ustar philstaff00000000000000// qtextdocumentfragment.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextDocumentFragment { %TypeHeaderCode #include %End public: QTextDocumentFragment(); explicit QTextDocumentFragment(const QTextDocument *document); explicit QTextDocumentFragment(const QTextCursor &range); QTextDocumentFragment(const QTextDocumentFragment &rhs); ~QTextDocumentFragment(); bool isEmpty() const; QString toPlainText() const; QString toHtml(const QByteArray &encoding = QByteArray()) const; static QTextDocumentFragment fromPlainText(const QString &plainText); static QTextDocumentFragment fromHtml(const QString &html); static QTextDocumentFragment fromHtml(const QString &html, const QTextDocument *resourceProvider); }; PyQt-gpl-5.5.1/sip/QtGui/qtextdocumentwriter.sip0000644000076500000240000000340712613140040021753 0ustar philstaff00000000000000// qtextdocumentwriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextDocumentWriter { %TypeHeaderCode #include %End public: QTextDocumentWriter(); QTextDocumentWriter(QIODevice *device, const QByteArray &format); QTextDocumentWriter(const QString &fileName, const QByteArray &format = QByteArray()); ~QTextDocumentWriter(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; bool write(const QTextDocument *document); bool write(const QTextDocumentFragment &fragment); void setCodec(QTextCodec *codec /KeepReference/); QTextCodec *codec() const; static QList supportedDocumentFormats(); private: QTextDocumentWriter(const QTextDocumentWriter &); }; PyQt-gpl-5.5.1/sip/QtGui/qtextformat.sip0000644000076500000240000003660312613140040020174 0ustar philstaff00000000000000// qtextformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextLength { %TypeHeaderCode #include %End public: enum Type { VariableLength, FixedLength, PercentageLength, }; QTextLength(); QTextLength::Type type() const; QTextLength(QTextLength::Type atype, qreal avalue); qreal value(qreal maximumLength) const; qreal rawValue() const; bool operator==(const QTextLength &other) const; bool operator!=(const QTextLength &other) const; QTextLength(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QTextLength(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End }; QDataStream &operator<<(QDataStream &, const QTextLength & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTextLength & /Constrained/) /ReleaseGIL/; class QTextFormat { %TypeHeaderCode #include %End public: enum FormatType { InvalidFormat, BlockFormat, CharFormat, ListFormat, TableFormat, FrameFormat, UserFormat, }; enum ObjectTypes { NoObject, ImageObject, TableObject, TableCellObject, UserObject, }; enum PageBreakFlag { PageBreak_Auto, PageBreak_AlwaysBefore, PageBreak_AlwaysAfter, }; typedef QFlags PageBreakFlags; enum Property { ObjectIndex, CssFloat, LayoutDirection, OutlinePen, BackgroundBrush, ForegroundBrush, BlockAlignment, BlockTopMargin, BlockBottomMargin, BlockLeftMargin, BlockRightMargin, TextIndent, BlockIndent, BlockNonBreakableLines, BlockTrailingHorizontalRulerWidth, FontFamily, FontPointSize, FontSizeAdjustment, FontSizeIncrement, FontWeight, FontItalic, FontUnderline, FontOverline, FontStrikeOut, FontFixedPitch, FontPixelSize, TextUnderlineColor, TextVerticalAlignment, TextOutline, IsAnchor, AnchorHref, AnchorName, ObjectType, ListStyle, ListIndent, FrameBorder, FrameMargin, FramePadding, FrameWidth, FrameHeight, TableColumns, TableColumnWidthConstraints, TableCellSpacing, TableCellPadding, TableCellRowSpan, TableCellColumnSpan, ImageName, ImageWidth, ImageHeight, TextUnderlineStyle, TableHeaderRowCount, FullWidthSelection, PageBreakPolicy, TextToolTip, FrameTopMargin, FrameBottomMargin, FrameLeftMargin, FrameRightMargin, FrameBorderBrush, FrameBorderStyle, BackgroundImageUrl, TabPositions, FirstFontProperty, FontCapitalization, FontLetterSpacing, FontWordSpacing, LastFontProperty, TableCellTopPadding, TableCellBottomPadding, TableCellLeftPadding, TableCellRightPadding, FontStyleHint, FontStyleStrategy, FontKerning, LineHeight, LineHeightType, FontHintingPreference, ListNumberPrefix, ListNumberSuffix, FontStretch, FontLetterSpacingType, UserProperty, }; QTextFormat(); explicit QTextFormat(int type); QTextFormat(const QTextFormat &rhs); QTextFormat(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QTextFormat(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QTextFormat(); void merge(const QTextFormat &other); bool isValid() const; int type() const; int objectIndex() const; void setObjectIndex(int object); QVariant property(int propertyId) const; void setProperty(int propertyId, const QVariant &value); void clearProperty(int propertyId); bool hasProperty(int propertyId) const; bool boolProperty(int propertyId) const; int intProperty(int propertyId) const; qreal doubleProperty(int propertyId) const; QString stringProperty(int propertyId) const; QColor colorProperty(int propertyId) const; QPen penProperty(int propertyId) const; QBrush brushProperty(int propertyId) const; QTextLength lengthProperty(int propertyId) const; QVector lengthVectorProperty(int propertyId) const; void setProperty(int propertyId, const QVector &lengths); QMap properties() const; int objectType() const; bool isCharFormat() const; bool isBlockFormat() const; bool isListFormat() const; bool isFrameFormat() const; bool isImageFormat() const; bool isTableFormat() const; QTextBlockFormat toBlockFormat() const; QTextCharFormat toCharFormat() const; QTextListFormat toListFormat() const; QTextTableFormat toTableFormat() const; QTextFrameFormat toFrameFormat() const; QTextImageFormat toImageFormat() const; bool operator==(const QTextFormat &rhs) const; bool operator!=(const QTextFormat &rhs) const; void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void setBackground(const QBrush &brush); QBrush background() const; void clearBackground(); void setForeground(const QBrush &brush); QBrush foreground() const; void clearForeground(); void setObjectType(int atype); int propertyCount() const; bool isTableCellFormat() const; QTextTableCellFormat toTableCellFormat() const; void swap(QTextFormat &other); %If (Qt_5_3_0 -) bool isEmpty() const; %End }; QDataStream &operator<<(QDataStream &, const QTextFormat & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTextFormat & /Constrained/) /ReleaseGIL/; class QTextCharFormat : QTextFormat { %TypeHeaderCode #include %End public: enum VerticalAlignment { AlignNormal, AlignSuperScript, AlignSubScript, AlignMiddle, AlignTop, AlignBottom, AlignBaseline, }; QTextCharFormat(); bool isValid() const; void setFont(const QFont &font); QFont font() const; void setFontFamily(const QString &family); QString fontFamily() const; void setFontPointSize(qreal size); qreal fontPointSize() const; void setFontWeight(int weight); int fontWeight() const; void setFontItalic(bool italic); bool fontItalic() const; void setFontUnderline(bool underline); bool fontUnderline() const; void setFontOverline(bool overline); bool fontOverline() const; void setFontStrikeOut(bool strikeOut); bool fontStrikeOut() const; void setUnderlineColor(const QColor &color); QColor underlineColor() const; void setFontFixedPitch(bool fixedPitch); bool fontFixedPitch() const; void setVerticalAlignment(QTextCharFormat::VerticalAlignment alignment); QTextCharFormat::VerticalAlignment verticalAlignment() const; void setAnchor(bool anchor); bool isAnchor() const; void setAnchorHref(const QString &value); QString anchorHref() const; int tableCellRowSpan() const; int tableCellColumnSpan() const; void setTableCellRowSpan(int atableCellRowSpan); void setTableCellColumnSpan(int atableCellColumnSpan); void setTextOutline(const QPen &pen); QPen textOutline() const; enum UnderlineStyle { NoUnderline, SingleUnderline, DashUnderline, DotLine, DashDotLine, DashDotDotLine, WaveUnderline, SpellCheckUnderline, }; void setUnderlineStyle(QTextCharFormat::UnderlineStyle style); QTextCharFormat::UnderlineStyle underlineStyle() const; void setToolTip(const QString &tip); QString toolTip() const; void setAnchorNames(const QStringList &names); QStringList anchorNames() const; void setFontCapitalization(QFont::Capitalization capitalization); QFont::Capitalization fontCapitalization() const; void setFontLetterSpacing(qreal spacing); qreal fontLetterSpacing() const; void setFontWordSpacing(qreal spacing); qreal fontWordSpacing() const; void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault); void setFontStyleStrategy(QFont::StyleStrategy strategy); QFont::StyleHint fontStyleHint() const; QFont::StyleStrategy fontStyleStrategy() const; void setFontKerning(bool enable); bool fontKerning() const; void setFontHintingPreference(QFont::HintingPreference hintingPreference); QFont::HintingPreference fontHintingPreference() const; int fontStretch() const; void setFontStretch(int factor); void setFontLetterSpacingType(QFont::SpacingType letterSpacingType); QFont::SpacingType fontLetterSpacingType() const; %If (Qt_5_3_0 -) enum FontPropertiesInheritanceBehavior { FontPropertiesSpecifiedOnly, FontPropertiesAll, }; %End %If (Qt_5_3_0 -) void setFont(const QFont &font, QTextCharFormat::FontPropertiesInheritanceBehavior behavior); %End }; class QTextBlockFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextBlockFormat(); bool isValid() const; Qt::Alignment alignment() const; void setTopMargin(qreal margin); qreal topMargin() const; void setBottomMargin(qreal margin); qreal bottomMargin() const; void setLeftMargin(qreal margin); qreal leftMargin() const; void setRightMargin(qreal margin); qreal rightMargin() const; void setTextIndent(qreal margin); qreal textIndent() const; int indent() const; void setNonBreakableLines(bool b); bool nonBreakableLines() const; void setAlignment(Qt::Alignment aalignment); void setIndent(int aindent); void setPageBreakPolicy(QFlags flags); QFlags pageBreakPolicy() const; void setTabPositions(const QList &tabs); QList tabPositions() const; enum LineHeightTypes { SingleHeight, ProportionalHeight, FixedHeight, MinimumHeight, LineDistanceHeight, }; void setLineHeight(qreal height, int heightType); qreal lineHeight(qreal scriptLineHeight, qreal scaling) const [qreal (qreal scriptLineHeight, qreal scaling = 1.0e+0)]; qreal lineHeight() const; int lineHeightType() const; }; class QTextListFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextListFormat(); bool isValid() const; enum Style { ListDisc, ListCircle, ListSquare, ListDecimal, ListLowerAlpha, ListUpperAlpha, ListLowerRoman, ListUpperRoman, }; QTextListFormat::Style style() const; int indent() const; void setStyle(QTextListFormat::Style astyle); void setIndent(int aindent); QString numberPrefix() const; QString numberSuffix() const; void setNumberPrefix(const QString &np); void setNumberSuffix(const QString &ns); }; class QTextImageFormat : QTextCharFormat { %TypeHeaderCode #include %End public: QTextImageFormat(); bool isValid() const; QString name() const; qreal width() const; qreal height() const; void setName(const QString &aname); void setWidth(qreal awidth); void setHeight(qreal aheight); }; class QTextFrameFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextFrameFormat(); bool isValid() const; enum Position { InFlow, FloatLeft, FloatRight, }; void setPosition(QTextFrameFormat::Position f); QTextFrameFormat::Position position() const; qreal border() const; qreal margin() const; qreal padding() const; void setWidth(const QTextLength &length); QTextLength width() const; QTextLength height() const; void setBorder(qreal aborder); void setMargin(qreal amargin); void setPadding(qreal apadding); void setWidth(qreal awidth); void setHeight(qreal aheight); void setHeight(const QTextLength &aheight); void setPageBreakPolicy(QFlags flags); QFlags pageBreakPolicy() const; enum BorderStyle { BorderStyle_None, BorderStyle_Dotted, BorderStyle_Dashed, BorderStyle_Solid, BorderStyle_Double, BorderStyle_DotDash, BorderStyle_DotDotDash, BorderStyle_Groove, BorderStyle_Ridge, BorderStyle_Inset, BorderStyle_Outset, }; void setBorderBrush(const QBrush &brush); QBrush borderBrush() const; void setBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle borderStyle() const; qreal topMargin() const; qreal bottomMargin() const; qreal leftMargin() const; qreal rightMargin() const; void setTopMargin(qreal amargin); void setBottomMargin(qreal amargin); void setLeftMargin(qreal amargin); void setRightMargin(qreal amargin); }; class QTextTableFormat : QTextFrameFormat { %TypeHeaderCode #include %End public: QTextTableFormat(); bool isValid() const; int columns() const; void setColumnWidthConstraints(const QVector &constraints); QVector columnWidthConstraints() const; void clearColumnWidthConstraints(); qreal cellSpacing() const; void setCellSpacing(qreal spacing); qreal cellPadding() const; Qt::Alignment alignment() const; void setColumns(int acolumns); void setCellPadding(qreal apadding); void setAlignment(Qt::Alignment aalignment); void setHeaderRowCount(int count); int headerRowCount() const; }; QFlags operator|(QTextFormat::PageBreakFlag f1, QFlags f2); class QTextTableCellFormat : QTextCharFormat { %TypeHeaderCode #include %End public: QTextTableCellFormat(); bool isValid() const; void setTopPadding(qreal padding); qreal topPadding() const; void setBottomPadding(qreal padding); qreal bottomPadding() const; void setLeftPadding(qreal padding); qreal leftPadding() const; void setRightPadding(qreal padding); qreal rightPadding() const; void setPadding(qreal padding); }; PyQt-gpl-5.5.1/sip/QtGui/qtextlayout.sip0000644000076500000240000001221512613140040020212 0ustar philstaff00000000000000// qtextlayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextInlineObject { %TypeHeaderCode #include %End public: bool isValid() const; QRectF rect() const; qreal width() const; qreal ascent() const; qreal descent() const; qreal height() const; Qt::LayoutDirection textDirection() const; void setWidth(qreal w); void setAscent(qreal a); void setDescent(qreal d); int textPosition() const; int formatIndex() const; QTextFormat format() const; }; class QTextLayout { %TypeHeaderCode #include %End public: QTextLayout(); QTextLayout(const QString &text); QTextLayout(const QString &text, const QFont &font, QPaintDevice *paintDevice = 0); QTextLayout(const QTextBlock &b); ~QTextLayout(); void setFont(const QFont &f); QFont font() const; void setText(const QString &string); QString text() const; void setTextOption(const QTextOption &option); const QTextOption &textOption() const; void setPreeditArea(int position, const QString &text); int preeditAreaPosition() const; QString preeditAreaText() const; struct FormatRange { %TypeHeaderCode #include %End int start; int length; QTextCharFormat format; }; void setAdditionalFormats(const QList &overrides); QList additionalFormats() const; void clearAdditionalFormats(); void setCacheEnabled(bool enable); bool cacheEnabled() const; void beginLayout(); void endLayout(); QTextLine createLine(); int lineCount() const; QTextLine lineAt(int i) const; QTextLine lineForTextPosition(int pos) const; enum CursorMode { SkipCharacters, SkipWords, }; bool isValidCursorPosition(int pos) const; int nextCursorPosition(int oldPos, QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const; int previousCursorPosition(int oldPos, QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const; void draw(QPainter *p, const QPointF &pos, const QVector &selections /DocValue="list-of-QTextLayout.FormatRange"/ = QVector(), const QRectF &clip = QRectF()) const; void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition) const; void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition, int width) const; QPointF position() const; void setPosition(const QPointF &p); QRectF boundingRect() const; qreal minimumWidth() const; qreal maximumWidth() const; void clearLayout(); void setCursorMoveStyle(Qt::CursorMoveStyle style); Qt::CursorMoveStyle cursorMoveStyle() const; int leftCursorPosition(int oldPos) const; int rightCursorPosition(int oldPos) const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End private: QTextLayout(const QTextLayout &); }; class QTextLine { %TypeHeaderCode #include %End public: QTextLine(); bool isValid() const; QRectF rect() const; qreal x() const; qreal y() const; qreal width() const; qreal ascent() const; qreal descent() const; qreal height() const; qreal naturalTextWidth() const; QRectF naturalTextRect() const; enum Edge { Leading, Trailing, }; enum CursorPosition { CursorBetweenCharacters, CursorOnCharacter, }; qreal cursorToX(int *cursorPos /In,Out/, QTextLine::Edge edge = QTextLine::Leading) const; int xToCursor(qreal x, QTextLine::CursorPosition edge = QTextLine::CursorBetweenCharacters) const; void setLineWidth(qreal width); void setNumColumns(int columns); void setNumColumns(int columns, qreal alignmentWidth); void setPosition(const QPointF &pos); int textStart() const; int textLength() const; int lineNumber() const; void draw(QPainter *painter, const QPointF &position, const QTextLayout::FormatRange *selection = 0) const; QPointF position() const; qreal leading() const; void setLeadingIncluded(bool included); bool leadingIncluded() const; qreal horizontalAdvance() const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End }; PyQt-gpl-5.5.1/sip/QtGui/qtextlist.sip0000644000076500000240000000274212613140040017654 0ustar philstaff00000000000000// qtextlist.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextList : QTextBlockGroup { %TypeHeaderCode #include %End public: explicit QTextList(QTextDocument *doc); virtual ~QTextList(); int count() const /__len__/; QTextBlock item(int i) const; int itemNumber(const QTextBlock &) const; QString itemText(const QTextBlock &) const; void removeItem(int i); void remove(const QTextBlock &); void add(const QTextBlock &block); QTextListFormat format() const; void setFormat(const QTextListFormat &aformat); private: QTextList(const QTextList &); }; PyQt-gpl-5.5.1/sip/QtGui/qtextobject.sip0000644000076500000240000001742712613140040020155 0ustar philstaff00000000000000// qtextobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextObject : QObject { %TypeHeaderCode #include %End protected: explicit QTextObject(QTextDocument *doc); virtual ~QTextObject(); void setFormat(const QTextFormat &format); public: QTextFormat format() const; int formatIndex() const; QTextDocument *document() const; int objectIndex() const; private: QTextObject(const QTextObject &); }; class QTextBlockGroup : QTextObject { %TypeHeaderCode #include %End protected: explicit QTextBlockGroup(QTextDocument *doc); virtual ~QTextBlockGroup(); virtual void blockInserted(const QTextBlock &block); virtual void blockRemoved(const QTextBlock &block); virtual void blockFormatChanged(const QTextBlock &block); QList blockList() const; private: QTextBlockGroup(const QTextBlockGroup &); }; class QTextFrame : QTextObject { %TypeHeaderCode #include %End public: explicit QTextFrame(QTextDocument *doc); virtual ~QTextFrame(); QTextFrameFormat frameFormat() const; QTextCursor firstCursorPosition() const; QTextCursor lastCursorPosition() const; int firstPosition() const; int lastPosition() const; QList childFrames() const; QTextFrame *parentFrame() const; class iterator { %TypeHeaderCode #include %End public: iterator(); iterator(const QTextFrame::iterator &o); QTextFrame *parentFrame() const; QTextFrame *currentFrame() const; QTextBlock currentBlock() const; bool atEnd() const; bool operator==(const QTextFrame::iterator &o) const; bool operator!=(const QTextFrame::iterator &o) const; QTextFrame::iterator &operator+=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)++; else if (a0 < 0) while (a0++) (*sipCpp)--; %End QTextFrame::iterator &operator-=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)--; else if (a0 < 0) while (a0++) (*sipCpp)++; %End }; typedef QTextFrame::iterator Iterator; QTextFrame::iterator begin() const; QTextFrame::iterator end() const; private: QTextFrame(const QTextFrame &); public: void setFrameFormat(const QTextFrameFormat &aformat); }; class QTextBlock /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QTextBlock(); QTextBlock(const QTextBlock &o); bool isValid() const; bool operator==(const QTextBlock &o) const; bool operator!=(const QTextBlock &o) const; bool operator<(const QTextBlock &o) const; int position() const; int length() const; bool contains(int position) const; QTextLayout *layout() const; QTextBlockFormat blockFormat() const; int blockFormatIndex() const; QTextCharFormat charFormat() const; int charFormatIndex() const; QString text() const; const QTextDocument *document() const; QTextList *textList() const; class iterator { %TypeHeaderCode #include %End public: iterator(); iterator(const QTextBlock::iterator &o); QTextFragment fragment() const; bool atEnd() const; bool operator==(const QTextBlock::iterator &o) const; bool operator!=(const QTextBlock::iterator &o) const; QTextBlock::iterator &operator+=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)++; else if (a0 < 0) while (a0++) (*sipCpp)--; %End QTextBlock::iterator &operator-=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)--; else if (a0 < 0) while (a0++) (*sipCpp)++; %End }; typedef QTextBlock::iterator Iterator; QTextBlock::iterator begin() const; QTextBlock::iterator end() const; QTextBlock next() const; QTextBlock previous() const; QTextBlockUserData *userData() const; void setUserData(QTextBlockUserData *data /GetWrapper/); %MethodCode // Ownership of the user data is with the document not the text block. const QTextDocument *td = sipCpp->document(); if (td) { PyObject *py_td = qtgui_wrap_ancestors(const_cast(td), sipType_QTextDocument); if (!py_td) { sipIsErr = 1; } else { sipTransferTo(a0Wrapper, py_td); Py_DECREF(py_td); } } sipCpp->setUserData(a0); %End int userState() const; void setUserState(int state); void clearLayout(); int revision() const; void setRevision(int rev); bool isVisible() const; void setVisible(bool visible); int blockNumber() const; int firstLineNumber() const; void setLineCount(int count); int lineCount() const; Qt::LayoutDirection textDirection() const; %If (Qt_5_3_0 -) QVector textFormats() const; %End }; class QTextFragment { %TypeHeaderCode #include %End public: QTextFragment(); QTextFragment(const QTextFragment &o); bool isValid() const; bool operator==(const QTextFragment &o) const; bool operator!=(const QTextFragment &o) const; bool operator<(const QTextFragment &o) const; int position() const; int length() const; bool contains(int position) const; QTextCharFormat charFormat() const; int charFormatIndex() const; QString text() const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End }; class QTextBlockUserData /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QTextBlockUserData(); }; %ModuleHeaderCode PyObject *qtgui_wrap_ancestors(QObject *obj, const sipTypeDef *td); %End %ModuleCode // Wrap a QObject and ensure that it's ancestors are all wrapped with the // correct ownerships. static PyObject *qtgui_wrap_ancestors_worker(QObject *obj) { if (!obj) { Py_INCREF(Py_None); return Py_None; } PyObject *py_parent = qtgui_wrap_ancestors_worker(obj->parent()); if (!py_parent) return 0; PyObject *py_obj = sipConvertFromType(obj, sipType_QObject, (py_parent != Py_None ? py_parent : 0)); Py_DECREF(py_parent); return py_obj; } PyObject *qtgui_wrap_ancestors(QObject *obj, const sipTypeDef *td) { PyObject *py_parent = qtgui_wrap_ancestors_worker(obj->parent()); if (!py_parent) return 0; PyObject *py_obj = sipConvertFromType(obj, td, (py_parent != Py_None ? py_parent : 0)); Py_DECREF(py_parent); return py_obj; } %End PyQt-gpl-5.5.1/sip/QtGui/qtextoption.sip0000644000076500000240000000540412613140040020207 0ustar philstaff00000000000000// qtextoption.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextOption { %TypeHeaderCode #include %End public: QTextOption(); QTextOption(Qt::Alignment alignment); ~QTextOption(); QTextOption(const QTextOption &o); Qt::Alignment alignment() const; void setTextDirection(Qt::LayoutDirection aDirection); Qt::LayoutDirection textDirection() const; enum WrapMode { NoWrap, WordWrap, ManualWrap, WrapAnywhere, WrapAtWordBoundaryOrAnywhere, }; void setWrapMode(QTextOption::WrapMode wrap); QTextOption::WrapMode wrapMode() const; enum Flag { IncludeTrailingSpaces, ShowTabsAndSpaces, ShowLineAndParagraphSeparators, AddSpaceForLineAndParagraphSeparators, SuppressColors, }; typedef QFlags Flags; QFlags flags() const; qreal tabStop() const; void setTabArray(const QList &tabStops); QList tabArray() const; void setUseDesignMetrics(bool b); bool useDesignMetrics() const; void setAlignment(Qt::Alignment aalignment); void setFlags(QFlags aflags); void setTabStop(qreal atabStop); enum TabType { LeftTab, RightTab, CenterTab, DelimiterTab, }; struct Tab { %TypeHeaderCode #include %End Tab(); Tab(qreal pos, QTextOption::TabType tabType, QChar delim = QChar()); bool operator==(const QTextOption::Tab &other) const; bool operator!=(const QTextOption::Tab &other) const; qreal position; QTextOption::TabType type; QChar delimiter; }; void setTabs(const QList &tabStops); QList tabs() const; }; QFlags operator|(QTextOption::Flag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtGui/qtexttable.sip0000644000076500000240000000506712613140040017773 0ustar philstaff00000000000000// qtexttable.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextTableCell { %TypeHeaderCode #include %End public: QTextTableCell(); ~QTextTableCell(); QTextTableCell(const QTextTableCell &o); QTextCharFormat format() const; void setFormat(const QTextCharFormat &format); int row() const; int column() const; int rowSpan() const; int columnSpan() const; bool isValid() const; QTextCursor firstCursorPosition() const; QTextCursor lastCursorPosition() const; int tableCellFormatIndex() const; bool operator==(const QTextTableCell &other) const; bool operator!=(const QTextTableCell &other) const; }; class QTextTable : QTextFrame { %TypeHeaderCode #include %End public: explicit QTextTable(QTextDocument *doc); virtual ~QTextTable(); void resize(int rows, int cols); void insertRows(int pos, int num); void insertColumns(int pos, int num); void removeRows(int pos, int num); void removeColumns(int pos, int num); void mergeCells(int row, int col, int numRows, int numCols); void mergeCells(const QTextCursor &cursor); void splitCell(int row, int col, int numRows, int numCols); int rows() const; int columns() const; QTextTableCell cellAt(int row, int col) const; QTextTableCell cellAt(int position) const; QTextTableCell cellAt(const QTextCursor &c) const; QTextCursor rowStart(const QTextCursor &c) const; QTextCursor rowEnd(const QTextCursor &c) const; QTextTableFormat format() const; void setFormat(const QTextTableFormat &aformat); void appendRows(int count); void appendColumns(int count); private: QTextTable(const QTextTable &); }; PyQt-gpl-5.5.1/sip/QtGui/QtGuimod.sip0000644000076500000240000001025012613140040017335 0ustar philstaff00000000000000// QtGuimod.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtGui, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include opengl_types.sip %Include qabstracttextdocumentlayout.sip %Include qbackingstore.sip %Include qbitmap.sip %Include qcolor.sip %Include qbrush.sip %Include qclipboard.sip %Include qcursor.sip %Include qdesktopservices.sip %Include qdrag.sip %Include qevent.sip %Include qfont.sip %Include qfontdatabase.sip %Include qfontinfo.sip %Include qfontmetrics.sip %Include qgenericmatrix.sip %Include qglyphrun.sip %Include qguiapplication.sip %Include qicon.sip %Include qiconengine.sip %Include qimage.sip %Include qimageiohandler.sip %Include qimagereader.sip %Include qimagewriter.sip %Include qinputmethod.sip %Include qkeysequence.sip %Include qmatrix4x4.sip %Include qmovie.sip %Include qoffscreensurface.sip %Include qopenglbuffer.sip %Include qopenglcontext.sip %Include qopengldebug.sip %Include qopenglframebufferobject.sip %Include qopenglpaintdevice.sip %Include qopenglpixeltransferoptions.sip %Include qopenglshaderprogram.sip %Include qopengltexture.sip %Include qopengltimerquery.sip %Include qopenglversionfunctions.sip %Include qopenglvertexarrayobject.sip %Include qopenglwindow.sip %Include qpagedpaintdevice.sip %Include qpagelayout.sip %Include qpagesize.sip %Include qpainter.sip %Include qpaintdevice.sip %Include qpaintdevicewindow.sip %Include qpaintengine.sip %Include qpainterpath.sip %Include qpalette.sip %Include qpdfwriter.sip %Include qpen.sip %Include qpicture.sip %Include qpixelformat.sip %Include qpixmap.sip %Include qpixmapcache.sip %Include qpolygon.sip %Include qquaternion.sip %Include qrasterwindow.sip %Include qrawfont.sip %Include qregion.sip %Include qrgb.sip %Include qscreen.sip %Include qsessionmanager.sip %Include qstandarditemmodel.sip %Include qstatictext.sip %Include qstylehints.sip %Include qsurface.sip %Include qsurfaceformat.sip %Include qsyntaxhighlighter.sip %Include qtextcursor.sip %Include qtextdocument.sip %Include qtextdocumentfragment.sip %Include qtextdocumentwriter.sip %Include qtextformat.sip %Include qtextlayout.sip %Include qtextlist.sip %Include qtextobject.sip %Include qtextoption.sip %Include qtexttable.sip %Include qtouchdevice.sip %Include qtransform.sip %Include qvalidator.sip %Include qvector2d.sip %Include qvector3d.sip %Include qvector4d.sip %Include qwindow.sip %Include qwindowdefs.sip %Include opengl_types.sip %Include qpygui_qlist.sip %Include qpygui_qpair.sip %Include qpygui_qvector.sip PyQt-gpl-5.5.1/sip/QtGui/qtouchdevice.sip0000644000076500000240000000371212613140040020274 0ustar philstaff00000000000000// qtouchdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTouchDevice { %TypeHeaderCode #include %End public: enum DeviceType { TouchScreen, TouchPad, }; enum CapabilityFlag { Position, Area, Pressure, Velocity, RawPositions, NormalizedPosition, %If (Qt_5_5_0 -) MouseEmulation, %End }; typedef QFlags Capabilities; QTouchDevice(); ~QTouchDevice(); static QList devices(); QString name() const; QTouchDevice::DeviceType type() const; QFlags capabilities() const; void setName(const QString &name); void setType(QTouchDevice::DeviceType devType); void setCapabilities(QFlags caps); %If (Qt_5_2_0 -) int maximumTouchPoints() const; %End %If (Qt_5_2_0 -) void setMaximumTouchPoints(int max); %End }; QFlags operator|(QTouchDevice::CapabilityFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtGui/qtransform.sip0000644000076500000240000001147212613140040020007 0ustar philstaff00000000000000// qtransform.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QTransform { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ddddddddd", sipCpp->m11(), sipCpp->m12(), sipCpp->m13(), sipCpp->m21(), sipCpp->m22(), sipCpp->m23(), sipCpp->m31(), sipCpp->m32(), sipCpp->m33()); %End public: enum TransformationType { TxNone, TxTranslate, TxScale, TxRotate, TxShear, TxProject, }; QTransform(); QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33 = 1.0e+0); QTransform(qreal h11, qreal h12, qreal h13, qreal h21, qreal h22, qreal h23); QTransform::TransformationType type() const; void setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33); QTransform inverted(bool *invertible = 0) const; QTransform adjoint() const; QTransform transposed() const; QTransform &translate(qreal dx, qreal dy); QTransform &scale(qreal sx, qreal sy); QTransform &shear(qreal sh, qreal sv); QTransform &rotate(qreal angle, Qt::Axis axis = Qt::ZAxis); QTransform &rotateRadians(qreal angle, Qt::Axis axis = Qt::ZAxis); static bool squareToQuad(const QPolygonF &square, QTransform &result); static bool quadToSquare(const QPolygonF &quad, QTransform &result); static bool quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &result); bool operator==(const QTransform &) const; bool operator!=(const QTransform &) const; QTransform &operator*=(const QTransform &) /__imatmul__/; QTransform operator*(const QTransform &o) const /__matmul__/; void reset(); void map(int x /Constrained/, int y /Constrained/, int *tx, int *ty) const; void map(qreal x, qreal y, qreal *tx, qreal *ty) const; QPoint map(const QPoint &p) const; QPointF map(const QPointF &p) const; QLine map(const QLine &l) const; QLineF map(const QLineF &l) const; QPolygonF map(const QPolygonF &a) const; QPolygon map(const QPolygon &a) const; QRegion map(const QRegion &r) const; QPainterPath map(const QPainterPath &p) const; QPolygon mapToPolygon(const QRect &r) const; QRect mapRect(const QRect &) const; QRectF mapRect(const QRectF &) const; bool isAffine() const; bool isIdentity() const; bool isInvertible() const; bool isScaling() const; bool isRotating() const; bool isTranslating() const; qreal determinant() const; qreal m11() const; qreal m12() const; qreal m13() const; qreal m21() const; qreal m22() const; qreal m23() const; qreal m31() const; qreal m32() const; qreal m33() const; qreal dx() const; qreal dy() const; static QTransform fromTranslate(qreal dx, qreal dy); static QTransform fromScale(qreal dx, qreal dy); QTransform &operator*=(qreal num); QTransform &operator/=(qreal div); QTransform &operator+=(qreal num); QTransform &operator-=(qreal num); }; QDataStream &operator<<(QDataStream &, const QTransform & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTransform & /Constrained/) /ReleaseGIL/; QPoint operator*(const QPoint &p, const QTransform &m); QPointF operator*(const QPointF &p, const QTransform &m); QLineF operator*(const QLineF &l, const QTransform &m); QLine operator*(const QLine &l, const QTransform &m); QPolygon operator*(const QPolygon &a, const QTransform &m); QPolygonF operator*(const QPolygonF &a, const QTransform &m); QRegion operator*(const QRegion &r, const QTransform &m); QPainterPath operator*(const QPainterPath &p, const QTransform &m); QTransform operator*(const QTransform &a, qreal n); QTransform operator/(const QTransform &a, qreal n); QTransform operator+(const QTransform &a, qreal n); QTransform operator-(const QTransform &a, qreal n); bool qFuzzyCompare(const QTransform &t1, const QTransform &t2); PyQt-gpl-5.5.1/sip/QtGui/qvalidator.sip0000644000076500000240000000774512613140040017771 0ustar philstaff00000000000000// qvalidator.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QValidator : QObject { %TypeHeaderCode #include %End public: explicit QValidator(QObject *parent /TransferThis/ = 0); virtual ~QValidator(); enum State { Invalid, Intermediate, Acceptable, }; virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const = 0; virtual void fixup(QString & /In,Out/) const; void setLocale(const QLocale &locale); QLocale locale() const; signals: void changed(); private: QValidator(const QValidator &); }; class QIntValidator : QValidator { %TypeHeaderCode #include %End public: explicit QIntValidator(QObject *parent /TransferThis/ = 0); QIntValidator(int bottom, int top, QObject *parent /TransferThis/ = 0); virtual ~QIntValidator(); virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; void setBottom(int); void setTop(int); virtual void setRange(int bottom, int top); int bottom() const; int top() const; private: QIntValidator(const QIntValidator &); }; class QDoubleValidator : QValidator { %TypeHeaderCode #include %End public: explicit QDoubleValidator(QObject *parent /TransferThis/ = 0); QDoubleValidator(double bottom, double top, int decimals, QObject *parent /TransferThis/ = 0); virtual ~QDoubleValidator(); virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const; virtual void setRange(double minimum, double maximum, int decimals = 0); void setBottom(double); void setTop(double); void setDecimals(int); double bottom() const; double top() const; int decimals() const; enum Notation { StandardNotation, ScientificNotation, }; void setNotation(QDoubleValidator::Notation); QDoubleValidator::Notation notation() const; private: QDoubleValidator(const QDoubleValidator &); }; class QRegExpValidator : QValidator { %TypeHeaderCode #include %End public: explicit QRegExpValidator(QObject *parent /TransferThis/ = 0); QRegExpValidator(const QRegExp &rx, QObject *parent /TransferThis/ = 0); virtual ~QRegExpValidator(); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; void setRegExp(const QRegExp &rx); const QRegExp ®Exp() const; private: QRegExpValidator(const QRegExpValidator &); }; %If (Qt_5_1_0 -) class QRegularExpressionValidator : QValidator { %TypeHeaderCode #include %End public: explicit QRegularExpressionValidator(QObject *parent /TransferThis/ = 0); QRegularExpressionValidator(const QRegularExpression &re, QObject *parent /TransferThis/ = 0); virtual ~QRegularExpressionValidator(); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; QRegularExpression regularExpression() const; void setRegularExpression(const QRegularExpression &re); private: QRegularExpressionValidator(const QRegularExpressionValidator &); }; %End PyQt-gpl-5.5.1/sip/QtGui/qvector2d.sip0000644000076500000240000000773312613140040017531 0ustar philstaff00000000000000// qvector2d.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector2D { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dd", (double)sipCpp->x(), (double)sipCpp->y()); %End public: QVector2D(); QVector2D(float xpos, float ypos); explicit QVector2D(const QPoint &point); explicit QVector2D(const QPointF &point); explicit QVector2D(const QVector3D &vector); explicit QVector2D(const QVector4D &vector); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); if (x && y) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QVector2D(%R, %R)", x, y); #else sipRes = PyString_FromString("PyQt5.QtGui.QVector2D("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); %End float length() const; float lengthSquared() const; QVector2D normalized() const; void normalize(); static float dotProduct(const QVector2D &v1, const QVector2D &v2); QVector3D toVector3D() const; QVector4D toVector4D() const; bool isNull() const; float x() const; float y() const; void setX(float aX); void setY(float aY); QVector2D &operator+=(const QVector2D &vector); QVector2D &operator-=(const QVector2D &vector); QVector2D &operator*=(float factor); QVector2D &operator*=(const QVector2D &vector); QVector2D &operator/=(float divisor); %If (Qt_5_5_0 -) QVector2D &operator/=(const QVector2D &vector); %End QPoint toPoint() const; QPointF toPointF() const; %If (Qt_5_1_0 -) float distanceToPoint(const QVector2D &point) const; %End %If (Qt_5_1_0 -) float distanceToLine(const QVector2D &point, const QVector2D &direction) const; %End %If (Qt_5_2_0 -) float operator[](int i) const; %End }; bool operator==(const QVector2D &v1, const QVector2D &v2); bool operator!=(const QVector2D &v1, const QVector2D &v2); const QVector2D operator+(const QVector2D &v1, const QVector2D &v2); const QVector2D operator-(const QVector2D &v1, const QVector2D &v2); const QVector2D operator*(float factor, const QVector2D &vector); const QVector2D operator*(const QVector2D &vector, float factor); const QVector2D operator*(const QVector2D &v1, const QVector2D &v2); const QVector2D operator-(const QVector2D &vector); const QVector2D operator/(const QVector2D &vector, float divisor); %If (Qt_5_5_0 -) const QVector2D operator/(const QVector2D &vector, const QVector2D &divisor); %End bool qFuzzyCompare(const QVector2D &v1, const QVector2D &v2); QDataStream &operator<<(QDataStream &, const QVector2D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector2D & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qvector3d.sip0000644000076500000240000001177112613140040017527 0ustar philstaff00000000000000// qvector3d.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector3D { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ddd", (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z()); %End public: QVector3D(); QVector3D(float xpos, float ypos, float zpos); explicit QVector3D(const QPoint &point); explicit QVector3D(const QPointF &point); QVector3D(const QVector2D &vector); QVector3D(const QVector2D &vector, float zpos); explicit QVector3D(const QVector4D &vector); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); if (x && y && z) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QVector3D(%R, %R, %R)", x, y, z); #else sipRes = PyString_FromString("PyQt5.QtGui.QVector3D("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(z)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); %End float length() const; float lengthSquared() const; QVector3D normalized() const; void normalize(); static float dotProduct(const QVector3D &v1, const QVector3D &v2); static QVector3D crossProduct(const QVector3D &v1, const QVector3D &v2); static QVector3D normal(const QVector3D &v1, const QVector3D &v2); static QVector3D normal(const QVector3D &v1, const QVector3D &v2, const QVector3D &v3); float distanceToPlane(const QVector3D &plane, const QVector3D &normal) const; float distanceToPlane(const QVector3D &plane1, const QVector3D &plane2, const QVector3D &plane3) const; float distanceToLine(const QVector3D &point, const QVector3D &direction) const; QVector2D toVector2D() const; QVector4D toVector4D() const; bool isNull() const; float x() const; float y() const; float z() const; void setX(float aX); void setY(float aY); void setZ(float aZ); QVector3D &operator+=(const QVector3D &vector); QVector3D &operator-=(const QVector3D &vector); QVector3D &operator*=(float factor); QVector3D &operator*=(const QVector3D &vector); QVector3D &operator/=(float divisor); %If (Qt_5_5_0 -) QVector3D &operator/=(const QVector3D &vector); %End QPoint toPoint() const; QPointF toPointF() const; %If (Qt_5_1_0 -) float distanceToPoint(const QVector3D &point) const; %End %If (Qt_5_2_0 -) float operator[](int i) const; %End %If (Qt_5_5_0 -) QVector3D project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; %End %If (Qt_5_5_0 -) QVector3D unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; %End }; bool operator==(const QVector3D &v1, const QVector3D &v2); bool operator!=(const QVector3D &v1, const QVector3D &v2); const QVector3D operator+(const QVector3D &v1, const QVector3D &v2); const QVector3D operator-(const QVector3D &v1, const QVector3D &v2); const QVector3D operator*(float factor, const QVector3D &vector); const QVector3D operator*(const QVector3D &vector, float factor); const QVector3D operator*(const QVector3D &v1, const QVector3D &v2); const QVector3D operator-(const QVector3D &vector); const QVector3D operator/(const QVector3D &vector, float divisor); %If (Qt_5_5_0 -) const QVector3D operator/(const QVector3D &vector, const QVector3D &divisor); %End bool qFuzzyCompare(const QVector3D &v1, const QVector3D &v2); QDataStream &operator<<(QDataStream &, const QVector3D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector3D & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qvector4d.sip0000644000076500000240000001112212613140040017516 0ustar philstaff00000000000000// qvector4d.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector4D { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z(), (double)sipCpp->w()); %End public: QVector4D(); QVector4D(float xpos, float ypos, float zpos, float wpos); explicit QVector4D(const QPoint &point); explicit QVector4D(const QPointF &point); QVector4D(const QVector2D &vector); QVector4D(const QVector2D &vector, float zpos, float wpos); QVector4D(const QVector3D &vector); QVector4D(const QVector3D &vector, float wpos); SIP_PYOBJECT __repr__() const /DocType="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); PyObject *w = PyFloat_FromDouble(sipCpp->w()); if (x && y && z && w) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QVector4D(%R, %R, %R, %R)", x, y, z, w); #else sipRes = PyString_FromString("PyQt5.QtGui.QVector4D("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(z)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(w)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); Py_XDECREF(w); %End float length() const; float lengthSquared() const; QVector4D normalized() const; void normalize(); static float dotProduct(const QVector4D &v1, const QVector4D &v2); QVector2D toVector2D() const; QVector2D toVector2DAffine() const; QVector3D toVector3D() const; QVector3D toVector3DAffine() const; bool isNull() const; float x() const; float y() const; float z() const; float w() const; void setX(float aX); void setY(float aY); void setZ(float aZ); void setW(float aW); QVector4D &operator+=(const QVector4D &vector); QVector4D &operator-=(const QVector4D &vector); QVector4D &operator*=(float factor); QVector4D &operator*=(const QVector4D &vector); QVector4D &operator/=(float divisor); %If (Qt_5_5_0 -) QVector4D &operator/=(const QVector4D &vector); %End QPoint toPoint() const; QPointF toPointF() const; %If (Qt_5_2_0 -) float operator[](int i) const; %End }; bool operator==(const QVector4D &v1, const QVector4D &v2); bool operator!=(const QVector4D &v1, const QVector4D &v2); const QVector4D operator+(const QVector4D &v1, const QVector4D &v2); const QVector4D operator-(const QVector4D &v1, const QVector4D &v2); const QVector4D operator*(float factor, const QVector4D &vector); const QVector4D operator*(const QVector4D &vector, float factor); const QVector4D operator*(const QVector4D &v1, const QVector4D &v2); const QVector4D operator-(const QVector4D &vector); const QVector4D operator/(const QVector4D &vector, float divisor); %If (Qt_5_5_0 -) const QVector4D operator/(const QVector4D &vector, const QVector4D &divisor); %End bool qFuzzyCompare(const QVector4D &v1, const QVector4D &v2); QDataStream &operator<<(QDataStream &, const QVector4D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector4D & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtGui/qwindow.sip0000644000076500000240000001550612613140040017305 0ustar philstaff00000000000000// qwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWindow : QObject, QSurface { %TypeHeaderCode #include %End public: explicit QWindow(QScreen *screen = 0); explicit QWindow(QWindow *parent /TransferThis/); virtual ~QWindow(); void setSurfaceType(QSurface::SurfaceType surfaceType); virtual QSurface::SurfaceType surfaceType() const; bool isVisible() const; void create(); WId winId() const; QWindow *parent() const; void setParent(QWindow *parent /Transfer/); bool isTopLevel() const; bool isModal() const; Qt::WindowModality modality() const; void setModality(Qt::WindowModality modality); void setFormat(const QSurfaceFormat &format); virtual QSurfaceFormat format() const; QSurfaceFormat requestedFormat() const; void setFlags(Qt::WindowFlags flags); Qt::WindowFlags flags() const; Qt::WindowType type() const; QString title() const; void setOpacity(qreal level); public slots: void requestActivate(); public: bool isActive() const; void reportContentOrientationChange(Qt::ScreenOrientation orientation); Qt::ScreenOrientation contentOrientation() const; qreal devicePixelRatio() const; Qt::WindowState windowState() const; void setWindowState(Qt::WindowState state); void setTransientParent(QWindow *parent); QWindow *transientParent() const; enum AncestorMode { ExcludeTransients, IncludeTransients, }; bool isAncestorOf(const QWindow *child, QWindow::AncestorMode mode = QWindow::IncludeTransients) const; bool isExposed() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; QSize minimumSize() const; QSize maximumSize() const; QSize baseSize() const; QSize sizeIncrement() const; void setMinimumSize(const QSize &size); void setMaximumSize(const QSize &size); void setBaseSize(const QSize &size); void setSizeIncrement(const QSize &size); void setGeometry(int posx, int posy, int w, int h); void setGeometry(const QRect &rect); QRect geometry() const; QMargins frameMargins() const; QRect frameGeometry() const; QPoint framePosition() const; void setFramePosition(const QPoint &point); int width() const; int height() const; int x() const; int y() const; virtual QSize size() const; QPoint position() const; void setPosition(const QPoint &pt); void setPosition(int posx, int posy); void resize(const QSize &newSize); void resize(int w, int h); void setFilePath(const QString &filePath); QString filePath() const; void setIcon(const QIcon &icon); QIcon icon() const; void destroy(); bool setKeyboardGrabEnabled(bool grab); bool setMouseGrabEnabled(bool grab); QScreen *screen() const; void setScreen(QScreen *screen); virtual QObject *focusObject() const; QPoint mapToGlobal(const QPoint &pos) const; QPoint mapFromGlobal(const QPoint &pos) const; QCursor cursor() const; void setCursor(const QCursor &); void unsetCursor(); public slots: void setVisible(bool visible); void show() /ReleaseGIL/; void hide(); void showMinimized() /ReleaseGIL/; void showMaximized() /ReleaseGIL/; void showFullScreen() /ReleaseGIL/; void showNormal() /ReleaseGIL/; bool close(); void raise() /PyName=raise_/; void lower(); void setTitle(const QString &); void setX(int arg); void setY(int arg); void setWidth(int arg); void setHeight(int arg); void setMinimumWidth(int w); void setMinimumHeight(int h); void setMaximumWidth(int w); void setMaximumHeight(int h); %If (Qt_5_1_0 -) void alert(int msec); %End %If (Qt_5_5_0 -) void requestUpdate(); %End signals: void screenChanged(QScreen *screen); void modalityChanged(Qt::WindowModality modality); void windowStateChanged(Qt::WindowState windowState); void xChanged(int arg); void yChanged(int arg); void widthChanged(int arg); void heightChanged(int arg); void minimumWidthChanged(int arg); void minimumHeightChanged(int arg); void maximumWidthChanged(int arg); void maximumHeightChanged(int arg); void visibleChanged(bool arg); void contentOrientationChanged(Qt::ScreenOrientation orientation); void focusObjectChanged(QObject *object); %If (Qt_5_3_0 -) void windowTitleChanged(const QString &title); %End protected: virtual void exposeEvent(QExposeEvent *); virtual void resizeEvent(QResizeEvent *); virtual void moveEvent(QMoveEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void touchEvent(QTouchEvent *); virtual void tabletEvent(QTabletEvent *); public: %If (Qt_5_1_0 -) enum Visibility { Hidden, AutomaticVisibility, Windowed, Minimized, Maximized, FullScreen, }; %End %If (Qt_5_1_0 -) QWindow::Visibility visibility() const; %End %If (Qt_5_1_0 -) void setVisibility(QWindow::Visibility v); %End %If (Qt_5_1_0 -) qreal opacity() const; %End %If (Qt_5_1_0 -) void setMask(const QRegion ®ion); %End %If (Qt_5_1_0 -) QRegion mask() const; %End %If (Qt_5_1_0 -) static QWindow *fromWinId(WId id); %End signals: %If (Qt_5_1_0 -) void visibilityChanged(QWindow::Visibility visibility); %End %If (Qt_5_1_0 -) void activeChanged(); %End %If (Qt_5_1_0 -) void opacityChanged(qreal opacity); %End private: QWindow(const QWindow &); }; PyQt-gpl-5.5.1/sip/QtGui/qwindowdefs.sip0000644000076500000240000000176012613140040020144 0ustar philstaff00000000000000// qwindowdefs.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QWindowList; typedef quintptr WId; PyQt-gpl-5.5.1/sip/QtHelp/0000755000076500000240000000000012613140040015235 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtHelp/qhelpcontentwidget.sip0000644000076500000240000000445412613140040021671 0ustar philstaff00000000000000// qhelpcontentwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpContentItem /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QHelpContentItem(); QHelpContentItem *child(int row) const; int childCount() const; QString title() const; QUrl url() const; int row() const; QHelpContentItem *parent() const; int childPosition(QHelpContentItem *child) const; }; class QHelpContentModel : QAbstractItemModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QHelpContentModel(); void createContents(const QString &customFilterName); QHelpContentItem *contentItemAt(const QModelIndex &index) const; virtual QVariant data(const QModelIndex &index, int role) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; bool isCreatingContents() const; signals: void contentsCreationStarted(); void contentsCreated(); }; class QHelpContentWidget : QTreeView { %TypeHeaderCode #include %End public: QModelIndex indexOf(const QUrl &link); signals: void linkActivated(const QUrl &link); private: QHelpContentWidget(); }; PyQt-gpl-5.5.1/sip/QtHelp/qhelpengine.sip0000644000076500000240000000252112613140040020251 0ustar philstaff00000000000000// qhelpengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpEngine : QHelpEngineCore { %TypeHeaderCode #include %End public: QHelpEngine(const QString &collectionFile, QObject *parent /TransferThis/ = 0); virtual ~QHelpEngine(); QHelpContentModel *contentModel() const; QHelpIndexModel *indexModel() const; QHelpContentWidget *contentWidget(); QHelpIndexWidget *indexWidget(); QHelpSearchEngine *searchEngine(); }; PyQt-gpl-5.5.1/sip/QtHelp/qhelpenginecore.sip0000644000076500000240000001012412613140040021120 0ustar philstaff00000000000000// qhelpenginecore.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpEngineCore : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QHelpIndexModel, &sipType_QHelpIndexModel, -1, 1}, {sipName_QHelpSearchEngine, &sipType_QHelpSearchEngine, -1, 2}, {sipName_QHelpContentWidget, &sipType_QHelpContentWidget, -1, 3}, {sipName_QHelpEngineCore, &sipType_QHelpEngineCore, 8, 4}, {sipName_QHelpIndexWidget, &sipType_QHelpIndexWidget, -1, 5}, {sipName_QHelpContentModel, &sipType_QHelpContentModel, -1, 6}, {sipName_QHelpSearchQueryWidget, &sipType_QHelpSearchQueryWidget, -1, 7}, {sipName_QHelpSearchResultWidget, &sipType_QHelpSearchResultWidget, -1, -1}, {sipName_QHelpEngine, &sipType_QHelpEngine, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QHelpEngineCore(const QString &collectionFile, QObject *parent /TransferThis/ = 0); virtual ~QHelpEngineCore(); bool setupData(); QString collectionFile() const; void setCollectionFile(const QString &fileName); bool copyCollectionFile(const QString &fileName); static QString namespaceName(const QString &documentationFileName); bool registerDocumentation(const QString &documentationFileName); bool unregisterDocumentation(const QString &namespaceName); QString documentationFileName(const QString &namespaceName); QStringList customFilters() const; bool removeCustomFilter(const QString &filterName); bool addCustomFilter(const QString &filterName, const QStringList &attributes); QStringList filterAttributes() const; QStringList filterAttributes(const QString &filterName) const; QString currentFilter() const; void setCurrentFilter(const QString &filterName); QStringList registeredDocumentations() const; QList filterAttributeSets(const QString &namespaceName) const; QList files(const QString namespaceName, const QStringList &filterAttributes, const QString &extensionFilter /DocValue="''"/ = QString()); QUrl findFile(const QUrl &url) const; QByteArray fileData(const QUrl &url) const; QMap linksForIdentifier(const QString &id) const; bool removeCustomValue(const QString &key); QVariant customValue(const QString &key, const QVariant &defaultValue /DocValue="None"/ = QVariant()) const; bool setCustomValue(const QString &key, const QVariant &value); static QVariant metaData(const QString &documentationFileName, const QString &name); QString error() const; bool autoSaveFilter() const; void setAutoSaveFilter(bool save); signals: void setupStarted(); void setupFinished(); void currentFilterChanged(const QString &newFilter); void warning(const QString &msg); %If (Qt_5_4_0 -) void readersAboutToBeInvalidated(); %End }; PyQt-gpl-5.5.1/sip/QtHelp/qhelpindexwidget.sip0000644000076500000240000000353012613140040021320 0ustar philstaff00000000000000// qhelpindexwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpIndexModel : QStringListModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void createIndex(const QString &customFilterName); QModelIndex filter(const QString &filter, const QString &wildcard /DocValue="''"/ = QString()); QMap linksForKeyword(const QString &keyword) const; bool isCreatingIndex() const; signals: void indexCreationStarted(); void indexCreated(); private: virtual ~QHelpIndexModel(); }; class QHelpIndexWidget : QListView { %TypeHeaderCode #include %End signals: void linkActivated(const QUrl &link, const QString &keyword); void linksActivated(const QMap &links, const QString &keyword); public slots: void filterIndices(const QString &filter, const QString &wildcard /DocValue="''"/ = QString()); void activateCurrentItem(); private: QHelpIndexWidget(); }; PyQt-gpl-5.5.1/sip/QtHelp/qhelpsearchengine.sip0000644000076500000240000000375212613140040021446 0ustar philstaff00000000000000// qhelpsearchengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchQuery { %TypeHeaderCode #include %End public: enum FieldName { DEFAULT, FUZZY, WITHOUT, PHRASE, ALL, ATLEAST, }; QHelpSearchQuery(); QHelpSearchQuery(QHelpSearchQuery::FieldName field, const QStringList &wordList); }; class QHelpSearchEngine : QObject { %TypeHeaderCode #include %End public: QHelpSearchEngine(QHelpEngineCore *helpEngine, QObject *parent /TransferThis/ = 0); virtual ~QHelpSearchEngine(); QList query() const; QHelpSearchQueryWidget *queryWidget(); QHelpSearchResultWidget *resultWidget(); int hitCount() const; QList> hits(int start, int end) const; public slots: void reindexDocumentation(); void cancelIndexing(); void search(const QList &queryList); void cancelSearching(); signals: void indexingStarted(); void indexingFinished(); void searchingStarted(); void searchingFinished(int hits); }; PyQt-gpl-5.5.1/sip/QtHelp/qhelpsearchquerywidget.sip0000644000076500000240000000310512613140040022542 0ustar philstaff00000000000000// qhelpsearchquerywidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchQueryWidget : QWidget { %TypeHeaderCode #include %End public: QHelpSearchQueryWidget(QWidget *parent /TransferThis/ = 0); virtual ~QHelpSearchQueryWidget(); QList query() const; void setQuery(const QList &queryList); void expandExtendedSearch(); void collapseExtendedSearch(); signals: void search(); private: virtual void focusInEvent(QFocusEvent *focusEvent); virtual void changeEvent(QEvent *event); public: %If (Qt_5_3_0 -) bool isCompactMode() const; %End %If (Qt_5_3_0 -) void setCompactMode(bool on); %End }; PyQt-gpl-5.5.1/sip/QtHelp/qhelpsearchresultwidget.sip0000644000076500000240000000230612613140040022715 0ustar philstaff00000000000000// qhelpsearchresultwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchResultWidget : QWidget /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QHelpSearchResultWidget(); QUrl linkAt(const QPoint &point); signals: void requestShowLink(const QUrl &url); }; PyQt-gpl-5.5.1/sip/QtHelp/QtHelpmod.sip0000644000076500000240000000416412613140040017654 0ustar philstaff00000000000000// QtHelpmod.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtHelp, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qhelpcontentwidget.sip %Include qhelpengine.sip %Include qhelpenginecore.sip %Include qhelpindexwidget.sip %Include qhelpsearchengine.sip %Include qhelpsearchquerywidget.sip %Include qhelpsearchresultwidget.sip PyQt-gpl-5.5.1/sip/QtLocation/0000755000076500000240000000000012613140040016115 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtLocation/qgeocodereply.sip0000644000076500000240000000427212613140040021501 0ustar philstaff00000000000000// qgeocodereply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoCodeReply : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, EngineNotSetError, CommunicationError, ParseError, UnsupportedOptionError, CombinationError, UnknownError, }; QGeoCodeReply(QGeoCodeReply::Error error, const QString &errorString, QObject *parent /TransferThis/ = 0); virtual ~QGeoCodeReply(); bool isFinished() const; QGeoCodeReply::Error error() const; QString errorString() const; QGeoShape viewport() const; QList locations() const; int limit() const; int offset() const; virtual void abort(); signals: void finished(); void error(QGeoCodeReply::Error error, const QString &errorString = QString()); protected: QGeoCodeReply(QObject *parent /TransferThis/ = 0); void setError(QGeoCodeReply::Error error, const QString &errorString); void setFinished(bool finished); void setViewport(const QGeoShape &viewport); void addLocation(const QGeoLocation &location); void setLocations(const QList &locations); void setLimit(int limit); void setOffset(int offset); private: QGeoCodeReply(const QGeoCodeReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeocodingmanager.sip0000644000076500000240000000344112613140040022306 0ustar philstaff00000000000000// qgeocodingmanager.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoCodingManager : QObject { %TypeHeaderCode #include %End public: virtual ~QGeoCodingManager(); QString managerName() const; int managerVersion() const; QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds = QGeoShape()) /Factory/; QGeoCodeReply *geocode(const QString &searchString, int limit = -1, int offset = 0, const QGeoShape &bounds = QGeoShape()) /Factory/; QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds = QGeoShape()) /Factory/; void setLocale(const QLocale &locale); QLocale locale() const; signals: void finished(QGeoCodeReply *reply); void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString()); private: QGeoCodingManager(const QGeoCodingManager &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeocodingmanagerengine.sip0000644000076500000240000000360512613140040023476 0ustar philstaff00000000000000// qgeocodingmanagerengine.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoCodingManagerEngine : QObject { %TypeHeaderCode #include %End public: QGeoCodingManagerEngine(const QVariantMap ¶meters, QObject *parent /TransferThis/ = 0); virtual ~QGeoCodingManagerEngine(); QString managerName() const; int managerVersion() const; virtual QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds) /Factory/; virtual QGeoCodeReply *geocode(const QString &address, int limit, int offset, const QGeoShape &bounds) /Factory/; virtual QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds) /Factory/; void setLocale(const QLocale &locale); QLocale locale() const; signals: void finished(QGeoCodeReply *reply); void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString()); private: QGeoCodingManagerEngine(const QGeoCodingManagerEngine &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeomaneuver.sip0000644000076500000240000000427212613140040021335 0ustar philstaff00000000000000// qgeomaneuver.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoManeuver { %TypeHeaderCode #include %End public: enum InstructionDirection { NoDirection, DirectionForward, DirectionBearRight, DirectionLightRight, DirectionRight, DirectionHardRight, DirectionUTurnRight, DirectionUTurnLeft, DirectionHardLeft, DirectionLeft, DirectionLightLeft, DirectionBearLeft, }; QGeoManeuver(); QGeoManeuver(const QGeoManeuver &other); ~QGeoManeuver(); bool operator==(const QGeoManeuver &other) const; bool operator!=(const QGeoManeuver &other) const; bool isValid() const; void setPosition(const QGeoCoordinate &position); QGeoCoordinate position() const; void setInstructionText(const QString &instructionText); QString instructionText() const; void setDirection(QGeoManeuver::InstructionDirection direction); QGeoManeuver::InstructionDirection direction() const; void setTimeToNextInstruction(int secs); int timeToNextInstruction() const; void setDistanceToNextInstruction(qreal distance); qreal distanceToNextInstruction() const; void setWaypoint(const QGeoCoordinate &coordinate); QGeoCoordinate waypoint() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeoroute.sip0000644000076500000240000000360012613140040020643 0ustar philstaff00000000000000// qgeoroute.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRoute { %TypeHeaderCode #include %End public: QGeoRoute(); QGeoRoute(const QGeoRoute &other); ~QGeoRoute(); bool operator==(const QGeoRoute &other) const; bool operator!=(const QGeoRoute &other) const; void setRouteId(const QString &id); QString routeId() const; void setRequest(const QGeoRouteRequest &request); QGeoRouteRequest request() const; void setBounds(const QGeoRectangle &bounds); QGeoRectangle bounds() const; void setFirstRouteSegment(const QGeoRouteSegment &routeSegment); QGeoRouteSegment firstRouteSegment() const; void setTravelTime(int secs); int travelTime() const; void setDistance(qreal distance); qreal distance() const; void setTravelMode(QGeoRouteRequest::TravelMode mode); QGeoRouteRequest::TravelMode travelMode() const; void setPath(const QList &path); QList path() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeoroutereply.sip0000644000076500000240000000404612613140040021724 0ustar philstaff00000000000000// qgeoroutereply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRouteReply : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, EngineNotSetError, CommunicationError, ParseError, UnsupportedOptionError, UnknownError, }; QGeoRouteReply(QGeoRouteReply::Error error, const QString &errorString, QObject *parent /TransferThis/ = 0); virtual ~QGeoRouteReply(); bool isFinished() const; QGeoRouteReply::Error error() const; QString errorString() const; QGeoRouteRequest request() const; QList routes() const; virtual void abort(); signals: void finished(); void error(QGeoRouteReply::Error error, const QString &errorString = QString()); protected: QGeoRouteReply(const QGeoRouteRequest &request, QObject *parent /TransferThis/ = 0); void setError(QGeoRouteReply::Error error, const QString &errorString); void setFinished(bool finished); void setRoutes(const QList &routes); void addRoutes(const QList &routes); private: QGeoRouteReply(const QGeoRouteReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeorouterequest.sip0000644000076500000240000001134712613140040022263 0ustar philstaff00000000000000// qgeorouterequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRouteRequest { %TypeHeaderCode #include %End public: enum TravelMode { CarTravel, PedestrianTravel, BicycleTravel, PublicTransitTravel, TruckTravel, }; typedef QFlags TravelModes; enum FeatureType { NoFeature, TollFeature, HighwayFeature, PublicTransitFeature, FerryFeature, TunnelFeature, DirtRoadFeature, ParksFeature, MotorPoolLaneFeature, }; typedef QFlags FeatureTypes; enum FeatureWeight { NeutralFeatureWeight, PreferFeatureWeight, RequireFeatureWeight, AvoidFeatureWeight, DisallowFeatureWeight, }; typedef QFlags FeatureWeights; enum RouteOptimization { ShortestRoute, FastestRoute, MostEconomicRoute, MostScenicRoute, }; typedef QFlags RouteOptimizations; enum SegmentDetail { NoSegmentData, BasicSegmentData, }; typedef QFlags SegmentDetails; enum ManeuverDetail { NoManeuvers, BasicManeuvers, }; typedef QFlags ManeuverDetails; explicit QGeoRouteRequest(const QList &waypoints = QList()); QGeoRouteRequest(const QGeoCoordinate &origin, const QGeoCoordinate &destination); QGeoRouteRequest(const QGeoRouteRequest &other); ~QGeoRouteRequest(); bool operator==(const QGeoRouteRequest &other) const; bool operator!=(const QGeoRouteRequest &other) const; void setWaypoints(const QList &waypoints); QList waypoints() const; void setExcludeAreas(const QList &areas); QList excludeAreas() const; void setNumberAlternativeRoutes(int alternatives); int numberAlternativeRoutes() const; void setTravelModes(QFlags travelModes); QFlags travelModes() const; void setFeatureWeight(QGeoRouteRequest::FeatureType featureType, QGeoRouteRequest::FeatureWeight featureWeight); QGeoRouteRequest::FeatureWeight featureWeight(QGeoRouteRequest::FeatureType featureType) const; QList featureTypes() const; void setRouteOptimization(QFlags optimization); QFlags routeOptimization() const; void setSegmentDetail(QGeoRouteRequest::SegmentDetail segmentDetail); QGeoRouteRequest::SegmentDetail segmentDetail() const; void setManeuverDetail(QGeoRouteRequest::ManeuverDetail maneuverDetail); QGeoRouteRequest::ManeuverDetail maneuverDetail() const; }; %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::TravelMode f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::FeatureType f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::FeatureWeight f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::RouteOptimization f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::SegmentDetail f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::ManeuverDetail f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtLocation/qgeoroutesegment.sip0000644000076500000240000000331212613140040022226 0ustar philstaff00000000000000// qgeoroutesegment.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRouteSegment { %TypeHeaderCode #include %End public: QGeoRouteSegment(); QGeoRouteSegment(const QGeoRouteSegment &other); ~QGeoRouteSegment(); bool operator==(const QGeoRouteSegment &other) const; bool operator!=(const QGeoRouteSegment &other) const; bool isValid() const; void setNextRouteSegment(const QGeoRouteSegment &routeSegment); QGeoRouteSegment nextRouteSegment() const; void setTravelTime(int secs); int travelTime() const; void setDistance(qreal distance); qreal distance() const; void setPath(const QList &path); QList path() const; void setManeuver(const QGeoManeuver &maneuver); QGeoManeuver maneuver() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeoroutingmanager.sip0000644000076500000240000000430212613140040022527 0ustar philstaff00000000000000// qgeoroutingmanager.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRoutingManager : QObject { %TypeHeaderCode #include %End public: virtual ~QGeoRoutingManager(); QString managerName() const; int managerVersion() const; QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request) /Factory/; QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) /TransferThis/; QFlags supportedTravelModes() const; QFlags supportedFeatureTypes() const; QFlags supportedFeatureWeights() const; QFlags supportedRouteOptimizations() const; QFlags supportedSegmentDetails() const; QFlags supportedManeuverDetails() const; void setLocale(const QLocale &locale); QLocale locale() const; void setMeasurementSystem(QLocale::MeasurementSystem system); QLocale::MeasurementSystem measurementSystem() const; signals: void finished(QGeoRouteReply *reply); void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()); private: QGeoRoutingManager(const QGeoRoutingManager &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeoroutingmanagerengine.sip0000644000076500000240000000561312613140040023723 0ustar philstaff00000000000000// qgeoroutingmanagerengine.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRoutingManagerEngine : QObject { %TypeHeaderCode #include %End public: QGeoRoutingManagerEngine(const QVariantMap ¶meters, QObject *parent /TransferThis/ = 0); virtual ~QGeoRoutingManagerEngine(); QString managerName() const; int managerVersion() const; virtual QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request) = 0 /Factory/; virtual QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) /Factory/; QFlags supportedTravelModes() const; QFlags supportedFeatureTypes() const; QFlags supportedFeatureWeights() const; QFlags supportedRouteOptimizations() const; QFlags supportedSegmentDetails() const; QFlags supportedManeuverDetails() const; void setLocale(const QLocale &locale); QLocale locale() const; void setMeasurementSystem(QLocale::MeasurementSystem system); QLocale::MeasurementSystem measurementSystem() const; signals: void finished(QGeoRouteReply *reply); void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()); protected: void setSupportedTravelModes(QFlags travelModes); void setSupportedFeatureTypes(QFlags featureTypes); void setSupportedFeatureWeights(QFlags featureWeights); void setSupportedRouteOptimizations(QFlags optimizations); void setSupportedSegmentDetails(QFlags segmentDetails); void setSupportedManeuverDetails(QFlags maneuverDetails); private: QGeoRoutingManagerEngine(const QGeoRoutingManagerEngine &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qgeoserviceprovider.sip0000644000076500000240000001336712613140040022733 0ustar philstaff00000000000000// qgeoserviceprovider.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoServiceProvider : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGeoCodingManager, &sipType_QGeoCodingManager, -1, 1}, {sipName_QGeoRoutingManagerEngine, &sipType_QGeoRoutingManagerEngine, -1, 2}, {sipName_QGeoCodeReply, &sipType_QGeoCodeReply, -1, 3}, {sipName_QPlaceReply, &sipType_QPlaceReply, 10, 4}, {sipName_QPlaceManagerEngine, &sipType_QPlaceManagerEngine, -1, 5}, {sipName_QGeoRoutingManager, &sipType_QGeoRoutingManager, -1, 6}, {sipName_QGeoCodingManagerEngine, &sipType_QGeoCodingManagerEngine, -1, 7}, {sipName_QGeoServiceProvider, &sipType_QGeoServiceProvider, -1, 8}, {sipName_QGeoRouteReply, &sipType_QGeoRouteReply, -1, 9}, {sipName_QPlaceManager, &sipType_QPlaceManager, -1, -1}, {sipName_QPlaceSearchSuggestionReply, &sipType_QPlaceSearchSuggestionReply, -1, 11}, {sipName_QPlaceMatchReply, &sipType_QPlaceMatchReply, -1, 12}, {sipName_QPlaceDetailsReply, &sipType_QPlaceDetailsReply, -1, 13}, {sipName_QPlaceContentReply, &sipType_QPlaceContentReply, -1, 14}, {sipName_QPlaceSearchReply, &sipType_QPlaceSearchReply, -1, 15}, {sipName_QPlaceIdReply, &sipType_QPlaceIdReply, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, NotSupportedError, UnknownParameterError, MissingRequiredParameterError, ConnectionError, }; enum RoutingFeature { NoRoutingFeatures, OnlineRoutingFeature, OfflineRoutingFeature, LocalizedRoutingFeature, RouteUpdatesFeature, AlternativeRoutesFeature, ExcludeAreasRoutingFeature, AnyRoutingFeatures, }; enum GeocodingFeature { NoGeocodingFeatures, OnlineGeocodingFeature, OfflineGeocodingFeature, ReverseGeocodingFeature, LocalizedGeocodingFeature, AnyGeocodingFeatures, }; enum MappingFeature { NoMappingFeatures, OnlineMappingFeature, OfflineMappingFeature, LocalizedMappingFeature, AnyMappingFeatures, }; enum PlacesFeature { NoPlacesFeatures, OnlinePlacesFeature, OfflinePlacesFeature, SavePlaceFeature, RemovePlaceFeature, SaveCategoryFeature, RemoveCategoryFeature, PlaceRecommendationsFeature, SearchSuggestionsFeature, LocalizedPlacesFeature, NotificationsFeature, PlaceMatchingFeature, AnyPlacesFeatures, }; typedef QFlags RoutingFeatures; typedef QFlags GeocodingFeatures; typedef QFlags MappingFeatures; typedef QFlags PlacesFeatures; static QStringList availableServiceProviders(); QGeoServiceProvider(const QString &providerName, const QVariantMap ¶meters = QMap(), bool allowExperimental = false); virtual ~QGeoServiceProvider(); QFlags routingFeatures() const; QFlags geocodingFeatures() const; QFlags mappingFeatures() const; QFlags placesFeatures() const; QGeoCodingManager *geocodingManager() const; QGeoRoutingManager *routingManager() const; QPlaceManager *placeManager() const; QGeoServiceProvider::Error error() const; QString errorString() const; void setParameters(const QVariantMap ¶meters); void setLocale(const QLocale &locale); void setAllowExperimental(bool allow); }; %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::RoutingFeature f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::GeocodingFeature f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::MappingFeature f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::PlacesFeature f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtLocation/qlocation.sip0000644000076500000240000000253412613140040020627 0ustar philstaff00000000000000// qlocation.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) namespace QLocation { %TypeHeaderCode #include %End enum Visibility { UnspecifiedVisibility, DeviceVisibility, PrivateVisibility, PublicVisibility, }; typedef QFlags VisibilityScope; }; %End %If (Qt_5_5_0 -) QFlags operator|(QLocation::Visibility f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtLocation/qplace.sip0000644000076500000240000000632612613140040020106 0ustar philstaff00000000000000// qplace.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlace { %TypeHeaderCode #include %End public: QPlace(); QPlace(const QPlace &other); ~QPlace(); bool operator==(const QPlace &other) const; bool operator!=(const QPlace &other) const; QList categories() const; void setCategory(const QPlaceCategory &category); void setCategories(const QList &categories); QGeoLocation location() const; void setLocation(const QGeoLocation &location); QPlaceRatings ratings() const; void setRatings(const QPlaceRatings &ratings); QPlaceSupplier supplier() const; void setSupplier(const QPlaceSupplier &supplier); QString attribution() const; void setAttribution(const QString &attribution); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); QMap content(QPlaceContent::Type type) const; void setContent(QPlaceContent::Type type, const QMap &content); void insertContent(QPlaceContent::Type type, const QMap &content); int totalContentCount(QPlaceContent::Type type) const; void setTotalContentCount(QPlaceContent::Type type, int total); QString name() const; void setName(const QString &name); QString placeId() const; void setPlaceId(const QString &identifier); QString primaryPhone() const; QString primaryFax() const; QString primaryEmail() const; QUrl primaryWebsite() const; bool detailsFetched() const; void setDetailsFetched(bool fetched); QStringList extendedAttributeTypes() const; QPlaceAttribute extendedAttribute(const QString &attributeType) const; void setExtendedAttribute(const QString &attributeType, const QPlaceAttribute &attribute); void removeExtendedAttribute(const QString &attributeType); QStringList contactTypes() const; QList contactDetails(const QString &contactType) const; void setContactDetails(const QString &contactType, QList details); void appendContactDetail(const QString &contactType, const QPlaceContactDetail &detail); void removeContactDetails(const QString &contactType); QLocation::Visibility visibility() const; void setVisibility(QLocation::Visibility visibility); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceattribute.sip0000644000076500000240000000302312613140040022021 0ustar philstaff00000000000000// qplaceattribute.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceAttribute { %TypeHeaderCode #include %End public: static const QString OpeningHours; static const QString Payment; static const QString Provider; QPlaceAttribute(); QPlaceAttribute(const QPlaceAttribute &other); virtual ~QPlaceAttribute(); bool operator==(const QPlaceAttribute &other) const; bool operator!=(const QPlaceAttribute &other) const; QString label() const; void setLabel(const QString &label); QString text() const; void setText(const QString &text); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacecategory.sip0000644000076500000240000000313412613140040021636 0ustar philstaff00000000000000// qplacecategory.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceCategory { %TypeHeaderCode #include %End public: QPlaceCategory(); QPlaceCategory(const QPlaceCategory &other); virtual ~QPlaceCategory(); bool operator==(const QPlaceCategory &other) const; bool operator!=(const QPlaceCategory &other) const; QString categoryId() const; void setCategoryId(const QString &identifier); QString name() const; void setName(const QString &name); QLocation::Visibility visibility() const; void setVisibility(QLocation::Visibility visibility); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacecontactdetail.sip0000644000076500000240000000310612613140040022636 0ustar philstaff00000000000000// qplacecontactdetail.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContactDetail { %TypeHeaderCode #include %End public: static const QString Phone; static const QString Email; static const QString Website; static const QString Fax; QPlaceContactDetail(); QPlaceContactDetail(const QPlaceContactDetail &other); virtual ~QPlaceContactDetail(); bool operator==(const QPlaceContactDetail &other) const; bool operator!=(const QPlaceContactDetail &other) const; QString label() const; void setLabel(const QString &label); QString value() const; void setValue(const QString &value); void clear(); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacecontent.sip0000644000076500000240000000326012613140040021473 0ustar philstaff00000000000000// qplacecontent.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContent { %TypeHeaderCode #include %End typedef QMap Collection; public: enum Type { NoType, ImageType, ReviewType, EditorialType, }; QPlaceContent(); QPlaceContent(const QPlaceContent &other); virtual ~QPlaceContent(); bool operator==(const QPlaceContent &other) const; bool operator!=(const QPlaceContent &other) const; QPlaceContent::Type type() const; QPlaceSupplier supplier() const; void setSupplier(const QPlaceSupplier &supplier); QPlaceUser user() const; void setUser(const QPlaceUser &user); QString attribution() const; void setAttribution(const QString &attribution); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacecontentreply.sip0000644000076500000240000000343612613140040022554 0ustar philstaff00000000000000// qplacecontentreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContentReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceContentReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceContentReply(); virtual QPlaceReply::Type type() const; QMap content() const; int totalCount() const; QPlaceContentRequest request() const; QPlaceContentRequest previousPageRequest() const; QPlaceContentRequest nextPageRequest() const; protected: void setContent(const QMap &content); void setTotalCount(int total); void setRequest(const QPlaceContentRequest &request); void setPreviousPageRequest(const QPlaceContentRequest &previous); void setNextPageRequest(const QPlaceContentRequest &next); private: QPlaceContentReply(const QPlaceContentReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacecontentrequest.sip0000644000076500000240000000317312613140040023107 0ustar philstaff00000000000000// qplacecontentrequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContentRequest { %TypeHeaderCode #include %End public: QPlaceContentRequest(); QPlaceContentRequest(const QPlaceContentRequest &other); ~QPlaceContentRequest(); bool operator==(const QPlaceContentRequest &other) const; bool operator!=(const QPlaceContentRequest &other) const; QPlaceContent::Type contentType() const; void setContentType(QPlaceContent::Type type); QString placeId() const; void setPlaceId(const QString &identifier); QVariant contentContext() const; void setContentContext(const QVariant &context); int limit() const; void setLimit(int limit); void clear(); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacedetailsreply.sip0000644000076500000240000000254312613140040022525 0ustar philstaff00000000000000// qplacedetailsreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceDetailsReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceDetailsReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceDetailsReply(); virtual QPlaceReply::Type type() const; QPlace place() const; protected: void setPlace(const QPlace &place); private: QPlaceDetailsReply(const QPlaceDetailsReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceeditorial.sip0000644000076500000240000000256112613140040022000 0ustar philstaff00000000000000// qplaceeditorial.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceEditorial : QPlaceContent { %TypeHeaderCode #include %End public: QPlaceEditorial(); QPlaceEditorial(const QPlaceContent &other); virtual ~QPlaceEditorial(); QString text() const; void setText(const QString &text); QString title() const; void setTitle(const QString &data); QString language() const; void setLanguage(const QString &data); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceicon.sip0000644000076500000240000000275612613140040020762 0ustar philstaff00000000000000// qplaceicon.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceIcon { %TypeHeaderCode #include %End public: static const QString SingleUrl; QPlaceIcon(); QPlaceIcon(const QPlaceIcon &other); ~QPlaceIcon(); bool operator==(const QPlaceIcon &other) const; bool operator!=(const QPlaceIcon &other) const; QUrl url(const QSize &size = QSize()) const; QPlaceManager *manager() const; void setManager(QPlaceManager *manager); QVariantMap parameters() const; void setParameters(const QVariantMap ¶meters); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceidreply.sip0000644000076500000240000000302712613140040021472 0ustar philstaff00000000000000// qplaceidreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceIdReply : QPlaceReply { %TypeHeaderCode #include %End public: enum OperationType { SavePlace, SaveCategory, RemovePlace, RemoveCategory, }; QPlaceIdReply(QPlaceIdReply::OperationType operationType, QObject *parent /TransferThis/ = 0); virtual ~QPlaceIdReply(); virtual QPlaceReply::Type type() const; QPlaceIdReply::OperationType operationType() const; QString id() const; protected: void setId(const QString &identifier); private: QPlaceIdReply(const QPlaceIdReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceimage.sip0000644000076500000240000000253212613140040021104 0ustar philstaff00000000000000// qplaceimage.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceImage : QPlaceContent { %TypeHeaderCode #include %End public: QPlaceImage(); QPlaceImage(const QPlaceContent &other); virtual ~QPlaceImage(); QUrl url() const; void setUrl(const QUrl &url); QString imageId() const; void setImageId(const QString &identifier); QString mimeType() const; void setMimeType(const QString &data); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacemanager.sip0000644000076500000240000000560412613140040021437 0ustar philstaff00000000000000// qplacemanager.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceManager : QObject { %TypeHeaderCode #include %End public: virtual ~QPlaceManager(); QString managerName() const; int managerVersion() const; QPlaceDetailsReply *getPlaceDetails(const QString &placeId) const; QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request) const; QPlaceSearchReply *search(const QPlaceSearchRequest &query) const; QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &request) const; QPlaceIdReply *savePlace(const QPlace &place); QPlaceIdReply *removePlace(const QString &placeId); QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId = QString()); QPlaceIdReply *removeCategory(const QString &categoryId); QPlaceReply *initializeCategories(); QString parentCategoryId(const QString &categoryId) const; QStringList childCategoryIds(const QString &parentId = QString()) const; QPlaceCategory category(const QString &categoryId) const; QList childCategories(const QString &parentId = QString()) const; QList locales() const; void setLocale(const QLocale &locale); void setLocales(const QList &locale); QPlace compatiblePlace(const QPlace &place); QPlaceMatchReply *matchingPlaces(const QPlaceMatchRequest &request) const; signals: void finished(QPlaceReply *reply); void error(QPlaceReply *, QPlaceReply::Error error, const QString &errorString = QString()); void placeAdded(const QString &placeId); void placeUpdated(const QString &placeId); void placeRemoved(const QString &placeId); void categoryAdded(const QPlaceCategory &category, const QString &parentId); void categoryUpdated(const QPlaceCategory &category, const QString &parentId); void categoryRemoved(const QString &categoryId, const QString &parentId); void dataChanged(); private: QPlaceManager(const QPlaceManager &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacemanagerengine.sip0000644000076500000240000000631112613140040022621 0ustar philstaff00000000000000// qplacemanagerengine.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceManagerEngine : QObject { %TypeHeaderCode #include %End public: QPlaceManagerEngine(const QVariantMap ¶meters, QObject *parent /TransferThis/ = 0); virtual ~QPlaceManagerEngine(); QString managerName() const; int managerVersion() const; virtual QPlaceDetailsReply *getPlaceDetails(const QString &placeId); virtual QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request); virtual QPlaceSearchReply *search(const QPlaceSearchRequest &request); virtual QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &request); virtual QPlaceIdReply *savePlace(const QPlace &place); virtual QPlaceIdReply *removePlace(const QString &placeId); virtual QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId); virtual QPlaceIdReply *removeCategory(const QString &categoryId); virtual QPlaceReply *initializeCategories(); virtual QString parentCategoryId(const QString &categoryId) const; virtual QStringList childCategoryIds(const QString &categoryId) const; virtual QPlaceCategory category(const QString &categoryId) const; virtual QList childCategories(const QString &parentId) const; virtual QList locales() const; virtual void setLocales(const QList &locales); virtual QUrl constructIconUrl(const QPlaceIcon &icon, const QSize &size) const; virtual QPlace compatiblePlace(const QPlace &original) const; virtual QPlaceMatchReply *matchingPlaces(const QPlaceMatchRequest &request); signals: void finished(QPlaceReply *reply); void error(QPlaceReply *, QPlaceReply::Error error, const QString &errorString = QString()); void placeAdded(const QString &placeId); void placeUpdated(const QString &placeId); void placeRemoved(const QString &placeId); void categoryAdded(const QPlaceCategory &category, const QString &parentCategoryId); void categoryUpdated(const QPlaceCategory &category, const QString &parentCategoryId); void categoryRemoved(const QString &categoryId, const QString &parentCategoryId); void dataChanged(); protected: QPlaceManager *manager() const; private: QPlaceManagerEngine(const QPlaceManagerEngine &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacematchreply.sip0000644000076500000240000000270712613140040022176 0ustar philstaff00000000000000// qplacematchreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceMatchReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceMatchReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceMatchReply(); virtual QPlaceReply::Type type() const; QList places() const; QPlaceMatchRequest request() const; protected: void setPlaces(const QList &results); void setRequest(const QPlaceMatchRequest &request); private: QPlaceMatchReply(const QPlaceMatchReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacematchrequest.sip0000644000076500000240000000310112613140040022520 0ustar philstaff00000000000000// qplacematchrequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceMatchRequest { %TypeHeaderCode #include %End public: static const QString AlternativeId; QPlaceMatchRequest(); QPlaceMatchRequest(const QPlaceMatchRequest &other); ~QPlaceMatchRequest(); bool operator==(const QPlaceMatchRequest &other) const; bool operator!=(const QPlaceMatchRequest &other) const; QList places() const; void setPlaces(const QList places); void setResults(const QList &results); QVariantMap parameters() const; void setParameters(const QVariantMap ¶meters); void clear(); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceproposedsearchresult.sip0000644000076500000240000000253612613140040024306 0ustar philstaff00000000000000// qplaceproposedsearchresult.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceProposedSearchResult : QPlaceSearchResult { %TypeHeaderCode #include %End public: QPlaceProposedSearchResult(); QPlaceProposedSearchResult(const QPlaceSearchResult &other); virtual ~QPlaceProposedSearchResult(); QPlaceSearchRequest searchRequest() const; void setSearchRequest(const QPlaceSearchRequest &request); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceratings.sip0000644000076500000240000000266712613140040021502 0ustar philstaff00000000000000// qplaceratings.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceRatings { %TypeHeaderCode #include %End public: QPlaceRatings(); QPlaceRatings(const QPlaceRatings &other); ~QPlaceRatings(); bool operator==(const QPlaceRatings &other) const; bool operator!=(const QPlaceRatings &other) const; qreal average() const; void setAverage(qreal average); int count() const; void setCount(int count); qreal maximum() const; void setMaximum(qreal max); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacereply.sip0000644000076500000240000000404212613140040021153 0ustar philstaff00000000000000// qplacereply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceReply : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, PlaceDoesNotExistError, CategoryDoesNotExistError, CommunicationError, ParseError, PermissionsError, UnsupportedError, BadArgumentError, CancelError, UnknownError, }; enum Type { Reply, DetailsReply, SearchReply, SearchSuggestionReply, ContentReply, IdReply, MatchReply, }; explicit QPlaceReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceReply(); bool isFinished() const; virtual QPlaceReply::Type type() const; QString errorString() const; QPlaceReply::Error error() const; public slots: virtual void abort(); signals: void finished(); void error(QPlaceReply::Error error, const QString &errorString = QString()); protected: void setFinished(bool finished); void setError(QPlaceReply::Error error, const QString &errorString); private: QPlaceReply(const QPlaceReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceresult.sip0000644000076500000240000000254512613140040021344 0ustar philstaff00000000000000// qplaceresult.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceResult : QPlaceSearchResult { %TypeHeaderCode #include %End public: QPlaceResult(); QPlaceResult(const QPlaceSearchResult &other); virtual ~QPlaceResult(); qreal distance() const; void setDistance(qreal distance); QPlace place() const; void setPlace(const QPlace &place); bool isSponsored() const; void setSponsored(bool sponsored); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacereview.sip0000644000076500000240000000306312613140040021323 0ustar philstaff00000000000000// qplacereview.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceReview : QPlaceContent { %TypeHeaderCode #include %End public: QPlaceReview(); QPlaceReview(const QPlaceContent &other); virtual ~QPlaceReview(); QDateTime dateTime() const; void setDateTime(const QDateTime &dt); QString text() const; void setText(const QString &text); QString language() const; void setLanguage(const QString &data); qreal rating() const; void setRating(qreal data); QString reviewId() const; void setReviewId(const QString &identifier); QString title() const; void setTitle(const QString &data); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacesearchreply.sip0000644000076500000240000000332412613140040022343 0ustar philstaff00000000000000// qplacesearchreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceSearchReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceSearchReply(); virtual QPlaceReply::Type type() const; QList results() const; QPlaceSearchRequest request() const; QPlaceSearchRequest previousPageRequest() const; QPlaceSearchRequest nextPageRequest() const; protected: void setResults(const QList &results); void setRequest(const QPlaceSearchRequest &request); void setPreviousPageRequest(const QPlaceSearchRequest &previous); void setNextPageRequest(const QPlaceSearchRequest &next); private: QPlaceSearchReply(const QPlaceSearchReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacesearchrequest.sip0000644000076500000240000000434112613140040022700 0ustar philstaff00000000000000// qplacesearchrequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchRequest { %TypeHeaderCode #include %End public: enum RelevanceHint { UnspecifiedHint, DistanceHint, LexicalPlaceNameHint, }; QPlaceSearchRequest(); QPlaceSearchRequest(const QPlaceSearchRequest &other); ~QPlaceSearchRequest(); bool operator==(const QPlaceSearchRequest &other) const; bool operator!=(const QPlaceSearchRequest &other) const; QString searchTerm() const; void setSearchTerm(const QString &term); QList categories() const; void setCategory(const QPlaceCategory &category); void setCategories(const QList &categories); QGeoShape searchArea() const; void setSearchArea(const QGeoShape &area); QString recommendationId() const; void setRecommendationId(const QString &recommendationId); QVariant searchContext() const; void setSearchContext(const QVariant &context); QLocation::VisibilityScope visibilityScope() const; void setVisibilityScope(QLocation::VisibilityScope visibilityScopes); QPlaceSearchRequest::RelevanceHint relevanceHint() const; void setRelevanceHint(QPlaceSearchRequest::RelevanceHint hint); int limit() const; void setLimit(int limit); void clear(); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacesearchresult.sip0000644000076500000240000000313612613140040022527 0ustar philstaff00000000000000// qplacesearchresult.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchResult { %TypeHeaderCode #include %End public: QPlaceSearchResult(); QPlaceSearchResult(const QPlaceSearchResult &other); virtual ~QPlaceSearchResult(); bool operator==(const QPlaceSearchResult &other) const; bool operator!=(const QPlaceSearchResult &other) const; enum SearchResultType { UnknownSearchResult, PlaceResult, ProposedSearchResult, }; QPlaceSearchResult::SearchResultType type() const; QString title() const; void setTitle(const QString &title); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacesearchsuggestionreply.sip0000644000076500000240000000267612613140040024464 0ustar philstaff00000000000000// qplacesearchsuggestionreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchSuggestionReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceSearchSuggestionReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceSearchSuggestionReply(); QStringList suggestions() const; virtual QPlaceReply::Type type() const; protected: void setSuggestions(const QStringList &suggestions); private: QPlaceSearchSuggestionReply(const QPlaceSearchSuggestionReply &); }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplacesupplier.sip0000644000076500000240000000304512613140040021665 0ustar philstaff00000000000000// qplacesupplier.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSupplier { %TypeHeaderCode #include %End public: QPlaceSupplier(); QPlaceSupplier(const QPlaceSupplier &other); ~QPlaceSupplier(); bool operator==(const QPlaceSupplier &other) const; bool operator!=(const QPlaceSupplier &other) const; QString name() const; void setName(const QString &data); QString supplierId() const; void setSupplierId(const QString &identifier); QUrl url() const; void setUrl(const QUrl &data); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtLocation/qplaceuser.sip0000644000076500000240000000253712613140040021005 0ustar philstaff00000000000000// qplaceuser.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceUser { %TypeHeaderCode #include %End public: QPlaceUser(); QPlaceUser(const QPlaceUser &other); ~QPlaceUser(); bool operator==(const QPlaceUser &other) const; bool operator!=(const QPlaceUser &other) const; QString userId() const; void setUserId(const QString &identifier); QString name() const; void setName(const QString &name); }; %End PyQt-gpl-5.5.1/sip/QtLocation/QtLocationmod.sip0000644000076500000240000000602212613140040021407 0ustar philstaff00000000000000// QtLocationmod.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtLocation, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtPositioning/QtPositioningmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgeocodereply.sip %Include qgeocodingmanager.sip %Include qgeocodingmanagerengine.sip %Include qgeomaneuver.sip %Include qgeoroute.sip %Include qgeoroutereply.sip %Include qgeorouterequest.sip %Include qgeoroutesegment.sip %Include qgeoroutingmanager.sip %Include qgeoroutingmanagerengine.sip %Include qgeoserviceprovider.sip %Include qlocation.sip %Include qplace.sip %Include qplaceattribute.sip %Include qplacecategory.sip %Include qplacecontactdetail.sip %Include qplacecontent.sip %Include qplacecontentreply.sip %Include qplacecontentrequest.sip %Include qplacedetailsreply.sip %Include qplaceeditorial.sip %Include qplaceicon.sip %Include qplaceidreply.sip %Include qplaceimage.sip %Include qplacemanager.sip %Include qplacemanagerengine.sip %Include qplacematchreply.sip %Include qplacematchrequest.sip %Include qplaceproposedsearchresult.sip %Include qplaceratings.sip %Include qplacereply.sip %Include qplaceresult.sip %Include qplacereview.sip %Include qplacesearchreply.sip %Include qplacesearchrequest.sip %Include qplacesearchresult.sip %Include qplacesearchsuggestionreply.sip %Include qplacesupplier.sip %Include qplaceuser.sip PyQt-gpl-5.5.1/sip/QtMacExtras/0000755000076500000240000000000012613140040016234 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtMacExtras/qmacpasteboardmime.sip0000644000076500000240000000350412613140040022611 0ustar philstaff00000000000000// This is the SIP interface definition for QMacPasteboardMime. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QMacPasteboardMime { %TypeHeaderCode #include %End public: enum QMacPasteboardMimeType { MIME_DND, MIME_CLIP, MIME_QT_CONVERTOR, MIME_QT3_CONVERTOR, MIME_ALL, }; explicit QMacPasteboardMime(char t /PyInt/); virtual ~QMacPasteboardMime(); virtual QString convertorName() = 0; virtual bool canConvert(const QString &mime, QString flav) = 0; virtual QString mimeFor(QString flav) = 0; virtual QString flavorFor(const QString &mime) = 0; virtual QVariant convertToMime(const QString &mime, QList data, QString flav) = 0; virtual QList convertFromMime(const QString &mime, QVariant data, QString flav) = 0; virtual int count(QMimeData *mimeData); }; %ModuleHeaderCode #include %End void qRegisterDraggedTypes(const QStringList &types); %End PyQt-gpl-5.5.1/sip/QtMacExtras/qmactoolbar.sip0000644000076500000240000000366612613140040021270 0ustar philstaff00000000000000// This is the SIP interface definition for QMacToolBar. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class NSToolbar; class QMacToolBar : QObject { %TypeHeaderCode #include %End public: explicit QMacToolBar(QObject *parent /TransferThis/ = 0); QMacToolBar(const QString &identifier, QObject *parent /TransferThis/ = 0); ~QMacToolBar(); QMacToolBarItem *addItem(const QIcon &icon, const QString &text); QMacToolBarItem *addAllowedItem(const QIcon &icon, const QString &text); void addSeparator(); void setItems(QList &items); QList items(); void setAllowedItems(QList &allowedItems); QList allowedItems(); void attachToWindow(QWindow *window); void detachFromWindow(); NSToolbar *nativeToolbar() const; private: QMacToolBar(const QMacToolBar &); %ConvertToSubClassCode if (sipCpp->inherits(sipName_QMacToolBar)) sipType = sipType_QMacToolBar; else if (sipCpp->inherits(sipName_QMacToolBarItem)) sipType = sipType_QMacToolBarItem; else sipType = 0; %End }; %End PyQt-gpl-5.5.1/sip/QtMacExtras/qmactoolbaritem.sip0000644000076500000240000000317712613140040022144 0ustar philstaff00000000000000// This is the SIP interface definition for QMacToolBarItem. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class NSToolbarItem; class QMacToolBarItem : QObject { %TypeHeaderCode #include %End public: enum StandardItem { NoStandardItem, Space, FlexibleSpace }; QMacToolBarItem(QObject *parent /TransferThis/ = 0); virtual ~QMacToolBarItem(); bool selectable() const; void setSelectable(bool selectable); StandardItem standardItem() const; void setStandardItem(StandardItem standardItem); QString text() const; void setText(const QString &text); QIcon icon() const; void setIcon(const QIcon &icon); NSToolbarItem *nativeToolBarItem() const; signals: void activated(); private: QMacToolBarItem(const QMacToolBarItem &); }; %End PyQt-gpl-5.5.1/sip/QtMacExtras/QtMacExtrasmod.sip0000644000076500000240000000367212613140040021655 0ustar philstaff00000000000000// This is the SIP interface definition for the QtMacExtras module of PyQt v5. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtMacExtras, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qmacpasteboardmime.sip %Include qmactoolbar.sip %Include qmactoolbaritem.sip PyQt-gpl-5.5.1/sip/QtMultimedia/0000755000076500000240000000000012613140040016437 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtMultimedia/qabstractvideobuffer.sip0000644000076500000240000000464412613140040023371 0ustar philstaff00000000000000// qabstractvideobuffer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractVideoBuffer { %TypeHeaderCode #include %End public: enum HandleType { NoHandle, GLTextureHandle, XvShmImageHandle, CoreImageHandle, QPixmapHandle, %If (Qt_5_4_0 -) EGLImageHandle, %End UserHandle, }; enum MapMode { NotMapped, ReadOnly, WriteOnly, ReadWrite, }; QAbstractVideoBuffer(QAbstractVideoBuffer::HandleType type); virtual ~QAbstractVideoBuffer(); QAbstractVideoBuffer::HandleType handleType() const; virtual QAbstractVideoBuffer::MapMode mapMode() const = 0; virtual SIP_PYOBJECT map(QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine) = 0 /DocType="sip.voidptr"/ [uchar * (QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine)]; %MethodCode uchar *mem; Py_BEGIN_ALLOW_THREADS mem = sipCpp->map(a0, &a1, &a2); Py_END_ALLOW_THREADS if (mem) { if (a0 & QAbstractVideoBuffer::WriteOnly) sipRes = sipConvertFromVoidPtrAndSize(mem, a1); else sipRes = sipConvertFromConstVoidPtrAndSize(mem, a1); } else { sipRes = Py_None; Py_INCREF(sipRes); } %End virtual void unmap() = 0; virtual QVariant handle() const; virtual void release(); private: QAbstractVideoBuffer(const QAbstractVideoBuffer &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qabstractvideofilter.sip0000644000076500000240000000370512613140040023402 0ustar philstaff00000000000000// qabstractvideofilter.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QVideoFilterRunnable { %TypeHeaderCode #include %End public: enum RunFlag { LastInChain, }; typedef QFlags RunFlags; virtual ~QVideoFilterRunnable() /ReleaseGIL/; virtual QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, QFlags flags) = 0 /ReleaseGIL/; }; %End %If (Qt_5_5_0 -) QFlags operator|(QVideoFilterRunnable::RunFlag f1, QFlags f2); %End %If (Qt_5_5_0 -) class QAbstractVideoFilter : QObject { %TypeHeaderCode #include %End public: explicit QAbstractVideoFilter(QObject *parent /TransferThis/ = 0); virtual ~QAbstractVideoFilter(); bool isActive() const; virtual QVideoFilterRunnable *createFilterRunnable() = 0 /ReleaseGIL/; signals: void activeChanged(); private: QAbstractVideoFilter(const QAbstractVideoFilter &); }; %End PyQt-gpl-5.5.1/sip/QtMultimedia/qabstractvideosurface.sip0000644000076500000240000001037212613140040023543 0ustar philstaff00000000000000// qabstractvideosurface.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractVideoSurface : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSound, &sipType_QSound, -1, 1}, {sipName_QCameraImageProcessing, &sipType_QCameraImageProcessing, -1, 2}, {sipName_QVideoProbe, &sipType_QVideoProbe, -1, 3}, {sipName_QCameraExposure, &sipType_QCameraExposure, -1, 4}, {sipName_QAudioInput, &sipType_QAudioInput, -1, 5}, #if QT_VERSION >= 0x050500 {sipName_QAbstractVideoFilter, &sipType_QAbstractVideoFilter, -1, 6}, #else {0, 0, -1, 6}, #endif {sipName_QMediaObject, &sipType_QMediaObject, 18, 7}, {sipName_QMediaRecorder, &sipType_QMediaRecorder, 22, 8}, {sipName_QSoundEffect, &sipType_QSoundEffect, -1, 9}, {sipName_QCameraImageCapture, &sipType_QCameraImageCapture, -1, 10}, {sipName_QAbstractVideoSurface, &sipType_QAbstractVideoSurface, -1, 11}, {sipName_QAudioOutput, &sipType_QAudioOutput, -1, 12}, {sipName_QCameraFocus, &sipType_QCameraFocus, -1, 13}, {sipName_QMediaService, &sipType_QMediaService, -1, 14}, {sipName_QRadioData, &sipType_QRadioData, -1, 15}, {sipName_QMediaControl, &sipType_QMediaControl, -1, 16}, {sipName_QMediaPlaylist, &sipType_QMediaPlaylist, -1, 17}, {sipName_QAudioProbe, &sipType_QAudioProbe, -1, -1}, {sipName_QRadioTuner, &sipType_QRadioTuner, -1, 19}, {sipName_QCamera, &sipType_QCamera, -1, 20}, {sipName_QMediaPlayer, &sipType_QMediaPlayer, -1, 21}, {sipName_QAudioDecoder, &sipType_QAudioDecoder, -1, -1}, {sipName_QAudioRecorder, &sipType_QAudioRecorder, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, UnsupportedFormatError, IncorrectFormatError, StoppedError, ResourceError, }; explicit QAbstractVideoSurface(QObject *parent /TransferThis/ = 0); virtual ~QAbstractVideoSurface(); virtual QList supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const = 0; virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const; virtual QVideoSurfaceFormat nearestFormat(const QVideoSurfaceFormat &format) const; QVideoSurfaceFormat surfaceFormat() const; virtual bool start(const QVideoSurfaceFormat &format); virtual void stop(); bool isActive() const; virtual bool present(const QVideoFrame &frame) = 0; QAbstractVideoSurface::Error error() const; signals: void activeChanged(bool active); void surfaceFormatChanged(const QVideoSurfaceFormat &format); void supportedFormatsChanged(); protected: void setError(QAbstractVideoSurface::Error error); public: QSize nativeResolution() const; protected: void setNativeResolution(const QSize &resolution); signals: void nativeResolutionChanged(const QSize &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudio.sip0000644000076500000240000000245312613140040020442 0ustar philstaff00000000000000// qaudio.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QAudio { %TypeHeaderCode #include %End enum Error { NoError, OpenError, IOError, UnderrunError, FatalError, }; enum State { ActiveState, SuspendedState, StoppedState, IdleState, }; enum Mode { AudioInput, AudioOutput, }; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudiobuffer.sip0000644000076500000240000000302312613140040021626 0ustar philstaff00000000000000// qaudiobuffer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioBuffer { %TypeHeaderCode #include %End public: QAudioBuffer(); QAudioBuffer(const QByteArray &data, const QAudioFormat &format, qint64 startTime = -1); QAudioBuffer(int numFrames, const QAudioFormat &format, qint64 startTime = -1); QAudioBuffer(const QAudioBuffer &other); ~QAudioBuffer(); bool isValid() const; QAudioFormat format() const; int frameCount() const; int sampleCount() const; int byteCount() const; qint64 duration() const; qint64 startTime() const; const void *constData() const; void *data(); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudiodecoder.sip0000644000076500000240000000472312613140040021772 0ustar philstaff00000000000000// qaudiodecoder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioDecoder : QMediaObject { %TypeHeaderCode #include %End public: enum State { StoppedState, DecodingState, }; enum Error { NoError, ResourceError, FormatError, AccessDeniedError, ServiceMissingError, }; QAudioDecoder(QObject *parent /TransferThis/ = 0); virtual ~QAudioDecoder(); static QMultimedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList &codecs = QStringList()); QAudioDecoder::State state() const; QString sourceFilename() const; void setSourceFilename(const QString &fileName); QIODevice *sourceDevice() const; void setSourceDevice(QIODevice *device); QAudioFormat audioFormat() const; void setAudioFormat(const QAudioFormat &format); QAudioDecoder::Error error() const; QString errorString() const; QAudioBuffer read() const; bool bufferAvailable() const; qint64 position() const; qint64 duration() const; public slots: void start(); void stop(); signals: void bufferAvailableChanged(bool); void bufferReady(); void finished(); void stateChanged(QAudioDecoder::State newState); void formatChanged(const QAudioFormat &format); void error(QAudioDecoder::Error error); void sourceChanged(); void positionChanged(qint64 position); void durationChanged(qint64 duration); public: virtual bool bind(QObject *); virtual void unbind(QObject *); private: QAudioDecoder(const QAudioDecoder &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudiodeviceinfo.sip0000644000076500000240000000366412613140040022503 0ustar philstaff00000000000000// qaudiodeviceinfo.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioDeviceInfo { %TypeHeaderCode #include %End public: QAudioDeviceInfo(); QAudioDeviceInfo(const QAudioDeviceInfo &other); ~QAudioDeviceInfo(); bool isNull() const; QString deviceName() const; bool isFormatSupported(const QAudioFormat &format) const; QAudioFormat preferredFormat() const; QAudioFormat nearestFormat(const QAudioFormat &format) const; QStringList supportedCodecs() const; QList supportedSampleSizes() const; QList supportedByteOrders() const; QList supportedSampleTypes() const; static QAudioDeviceInfo defaultInputDevice(); static QAudioDeviceInfo defaultOutputDevice(); static QList availableDevices(QAudio::Mode mode); QList supportedSampleRates() const; QList supportedChannelCounts() const; bool operator==(const QAudioDeviceInfo &other) const; bool operator!=(const QAudioDeviceInfo &other) const; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudioformat.sip0000644000076500000240000000433412613140040021653 0ustar philstaff00000000000000// qaudioformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioFormat { %TypeHeaderCode #include %End public: enum SampleType { Unknown, SignedInt, UnSignedInt, Float, }; enum Endian { BigEndian, LittleEndian, }; QAudioFormat(); QAudioFormat(const QAudioFormat &other); ~QAudioFormat(); bool operator==(const QAudioFormat &other) const; bool operator!=(const QAudioFormat &other) const; bool isValid() const; void setSampleSize(int sampleSize); int sampleSize() const; void setCodec(const QString &codec); QString codec() const; void setByteOrder(QAudioFormat::Endian byteOrder); QAudioFormat::Endian byteOrder() const; void setSampleType(QAudioFormat::SampleType sampleType); QAudioFormat::SampleType sampleType() const; void setSampleRate(int sampleRate); int sampleRate() const; void setChannelCount(int channelCount); int channelCount() const; qint32 bytesForDuration(qint64 duration) const; qint64 durationForBytes(qint32 byteCount) const; qint32 bytesForFrames(qint32 frameCount) const; qint32 framesForBytes(qint32 byteCount) const; qint32 framesForDuration(qint64 duration) const; qint64 durationForFrames(qint32 frameCount) const; int bytesPerFrame() const; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudioinput.sip0000644000076500000240000000370212613140040021520 0ustar philstaff00000000000000// qaudioinput.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioInput : QObject { %TypeHeaderCode #include %End public: QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); virtual ~QAudioInput(); QAudioFormat format() const; void start(QIODevice *device); QIODevice *start(); void stop(); void reset(); void suspend(); void resume(); void setBufferSize(int bytes); int bufferSize() const; int bytesReady() const; int periodSize() const; void setNotifyInterval(int milliSeconds); int notifyInterval() const; qint64 processedUSecs() const; qint64 elapsedUSecs() const; QAudio::Error error() const; QAudio::State state() const; signals: void stateChanged(QAudio::State); void notify(); public: void setVolume(qreal volume); qreal volume() const; private: QAudioInput(const QAudioInput &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudiooutput.sip0000644000076500000240000000401712613140040021721 0ustar philstaff00000000000000// qaudiooutput.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioOutput : QObject { %TypeHeaderCode #include %End public: QAudioOutput(const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); QAudioOutput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); virtual ~QAudioOutput(); QAudioFormat format() const; void start(QIODevice *device); QIODevice *start(); void stop(); void reset(); void suspend(); void resume(); void setBufferSize(int bytes); int bufferSize() const; int bytesFree() const; int periodSize() const; void setNotifyInterval(int milliSeconds); int notifyInterval() const; qint64 processedUSecs() const; qint64 elapsedUSecs() const; QAudio::Error error() const; QAudio::State state() const; signals: void stateChanged(QAudio::State); void notify(); public: void setVolume(qreal); qreal volume() const; QString category() const; void setCategory(const QString &category); private: QAudioOutput(const QAudioOutput &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudioprobe.sip0000644000076500000240000000247012613140040021471 0ustar philstaff00000000000000// qaudioprobe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioProbe : QObject { %TypeHeaderCode #include %End public: explicit QAudioProbe(QObject *parent /TransferThis/ = 0); virtual ~QAudioProbe(); bool setSource(QMediaObject *source); bool setSource(QMediaRecorder *source); bool isActive() const; signals: void audioBufferProbed(const QAudioBuffer &audioBuffer); void flush(); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qaudiorecorder.sip0000644000076500000240000000277212613140040022174 0ustar philstaff00000000000000// qaudiorecorder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioRecorder : QMediaRecorder { %TypeHeaderCode #include %End public: QAudioRecorder(QObject *parent /TransferThis/ = 0); virtual ~QAudioRecorder(); QStringList audioInputs() const; QString defaultAudioInput() const; QString audioInputDescription(const QString &name) const; QString audioInput() const; public slots: void setAudioInput(const QString &name); signals: void audioInputChanged(const QString &name); void availableAudioInputsChanged(); private: QAudioRecorder(const QAudioRecorder &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qcamera.sip0000644000076500000240000001302612613140040020567 0ustar philstaff00000000000000// qcamera.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCamera : QMediaObject { %TypeHeaderCode #include %End public: enum Status { UnavailableStatus, UnloadedStatus, LoadingStatus, UnloadingStatus, LoadedStatus, StandbyStatus, StartingStatus, StoppingStatus, ActiveStatus, }; enum State { UnloadedState, LoadedState, ActiveState, }; enum CaptureMode { CaptureViewfinder, CaptureStillImage, CaptureVideo, }; typedef QFlags CaptureModes; enum Error { NoError, CameraError, InvalidRequestError, ServiceMissingError, NotSupportedFeatureError, }; enum LockStatus { Unlocked, Searching, Locked, }; enum LockChangeReason { UserRequest, LockAcquired, LockFailed, LockLost, LockTemporaryLost, }; enum LockType { NoLock, LockExposure, LockWhiteBalance, LockFocus, }; typedef QFlags LockTypes; %If (Qt_5_3_0 -) enum Position { UnspecifiedPosition, BackFace, FrontFace, }; %End QCamera(QObject *parent /TransferThis/ = 0); QCamera(const QByteArray &device, QObject *parent /TransferThis/ = 0); %If (Qt_5_3_0 -) QCamera(const QCameraInfo &cameraInfo, QObject *parent /TransferThis/ = 0); %End %If (Qt_5_3_0 -) QCamera(QCamera::Position position, QObject *parent /TransferThis/ = 0); %End virtual ~QCamera(); static QList availableDevices(); static QString deviceDescription(const QByteArray &device); virtual QMultimedia::AvailabilityStatus availability() const; QCamera::State state() const; QCamera::Status status() const; QFlags captureMode() const; bool isCaptureModeSupported(QFlags mode) const; QCameraExposure *exposure() const; QCameraFocus *focus() const; QCameraImageProcessing *imageProcessing() const; void setViewfinder(QVideoWidget *viewfinder); void setViewfinder(QGraphicsVideoItem *viewfinder); void setViewfinder(QAbstractVideoSurface *surface); QCamera::Error error() const; QString errorString() const; QFlags supportedLocks() const; QFlags requestedLocks() const; QCamera::LockStatus lockStatus() const; QCamera::LockStatus lockStatus(QCamera::LockType lock) const; public slots: void setCaptureMode(QFlags mode); void load(); void unload(); void start(); void stop(); void searchAndLock(); void unlock(); void searchAndLock(QFlags locks); void unlock(QFlags locks); signals: void stateChanged(QCamera::State); void captureModeChanged(QFlags); void statusChanged(QCamera::Status); void locked(); void lockFailed(); void lockStatusChanged(QCamera::LockStatus, QCamera::LockChangeReason); void lockStatusChanged(QCamera::LockType, QCamera::LockStatus, QCamera::LockChangeReason); void error(QCamera::Error); public: %If (Qt_5_5_0 -) struct FrameRateRange { %TypeHeaderCode #include %End FrameRateRange(qreal minimum, qreal maximum); FrameRateRange(); qreal minimumFrameRate; qreal maximumFrameRate; }; %End %If (Qt_5_5_0 -) QCameraViewfinderSettings viewfinderSettings() const; %End %If (Qt_5_5_0 -) void setViewfinderSettings(const QCameraViewfinderSettings &settings); %End %If (Qt_5_5_0 -) QList supportedViewfinderSettings(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End %If (Qt_5_5_0 -) QList supportedViewfinderResolutions(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End %If (Qt_5_5_0 -) QList supportedViewfinderFrameRateRanges(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End %If (Qt_5_5_0 -) QList supportedViewfinderPixelFormats(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End private: QCamera(const QCamera &); }; QFlags operator|(QCamera::LockType f1, QFlags f2); %If (Qt_5_5_0 -) bool operator==(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2); %End %If (Qt_5_5_0 -) bool operator!=(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2); %End PyQt-gpl-5.5.1/sip/QtMultimedia/qcameraexposure.sip0000644000076500000240000001035712613140040022366 0ustar philstaff00000000000000// qcameraexposure.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraExposure : QObject { %TypeHeaderCode #include %End public: enum FlashMode { FlashAuto, FlashOff, FlashOn, FlashRedEyeReduction, FlashFill, FlashTorch, FlashVideoLight, FlashSlowSyncFrontCurtain, FlashSlowSyncRearCurtain, FlashManual, }; typedef QFlags FlashModes; enum ExposureMode { ExposureAuto, ExposureManual, ExposurePortrait, ExposureNight, ExposureBacklight, ExposureSpotlight, ExposureSports, ExposureSnow, ExposureBeach, ExposureLargeAperture, ExposureSmallAperture, %If (Qt_5_5_0 -) ExposureAction, %End %If (Qt_5_5_0 -) ExposureLandscape, %End %If (Qt_5_5_0 -) ExposureNightPortrait, %End %If (Qt_5_5_0 -) ExposureTheatre, %End %If (Qt_5_5_0 -) ExposureSunset, %End %If (Qt_5_5_0 -) ExposureSteadyPhoto, %End %If (Qt_5_5_0 -) ExposureFireworks, %End %If (Qt_5_5_0 -) ExposureParty, %End %If (Qt_5_5_0 -) ExposureCandlelight, %End %If (Qt_5_5_0 -) ExposureBarcode, %End ExposureModeVendor, }; enum MeteringMode { MeteringMatrix, MeteringAverage, MeteringSpot, }; bool isAvailable() const; QFlags flashMode() const; bool isFlashModeSupported(QFlags mode) const; bool isFlashReady() const; QCameraExposure::ExposureMode exposureMode() const; bool isExposureModeSupported(QCameraExposure::ExposureMode mode) const; qreal exposureCompensation() const; QCameraExposure::MeteringMode meteringMode() const; bool isMeteringModeSupported(QCameraExposure::MeteringMode mode) const; QPointF spotMeteringPoint() const; void setSpotMeteringPoint(const QPointF &point); int isoSensitivity() const; qreal aperture() const; qreal shutterSpeed() const; int requestedIsoSensitivity() const; qreal requestedAperture() const; qreal requestedShutterSpeed() const; QList supportedIsoSensitivities(bool *continuous = 0) const; QList supportedApertures(bool *continuous = 0) const; QList supportedShutterSpeeds(bool *continuous = 0) const; public slots: void setFlashMode(QFlags mode); void setExposureMode(QCameraExposure::ExposureMode mode); void setMeteringMode(QCameraExposure::MeteringMode mode); void setExposureCompensation(qreal ev); void setManualIsoSensitivity(int iso); void setAutoIsoSensitivity(); void setManualAperture(qreal aperture); void setAutoAperture(); void setManualShutterSpeed(qreal seconds); void setAutoShutterSpeed(); signals: void flashReady(bool); void apertureChanged(qreal); void apertureRangeChanged(); void shutterSpeedChanged(qreal); void shutterSpeedRangeChanged(); void isoSensitivityChanged(int); void exposureCompensationChanged(qreal); private: explicit QCameraExposure(QCamera *parent /TransferThis/ = 0); virtual ~QCameraExposure(); QCameraExposure(const QCameraExposure &); }; QFlags operator|(QCameraExposure::FlashMode f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtMultimedia/qcamerafocus.sip0000644000076500000240000000606412613140040021633 0ustar philstaff00000000000000// qcamerafocus.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraFocusZone { %TypeHeaderCode #include %End public: enum FocusZoneStatus { Invalid, Unused, Selected, Focused, }; QCameraFocusZone(const QCameraFocusZone &other); bool operator==(const QCameraFocusZone &other) const; bool operator!=(const QCameraFocusZone &other) const; ~QCameraFocusZone(); bool isValid() const; QRectF area() const; QCameraFocusZone::FocusZoneStatus status() const; }; typedef QList QCameraFocusZoneList; class QCameraFocus : QObject { %TypeHeaderCode #include %End public: enum FocusMode { ManualFocus, HyperfocalFocus, InfinityFocus, AutoFocus, ContinuousFocus, MacroFocus, }; typedef QFlags FocusModes; enum FocusPointMode { FocusPointAuto, FocusPointCenter, FocusPointFaceDetection, FocusPointCustom, }; bool isAvailable() const; QFlags focusMode() const; void setFocusMode(QFlags mode); bool isFocusModeSupported(QFlags mode) const; QCameraFocus::FocusPointMode focusPointMode() const; void setFocusPointMode(QCameraFocus::FocusPointMode mode); bool isFocusPointModeSupported(QCameraFocus::FocusPointMode) const; QPointF customFocusPoint() const; void setCustomFocusPoint(const QPointF &point); QCameraFocusZoneList focusZones() const; qreal maximumOpticalZoom() const; qreal maximumDigitalZoom() const; qreal opticalZoom() const; qreal digitalZoom() const; void zoomTo(qreal opticalZoom, qreal digitalZoom); signals: void opticalZoomChanged(qreal); void digitalZoomChanged(qreal); void focusZonesChanged(); void maximumOpticalZoomChanged(qreal); void maximumDigitalZoomChanged(qreal); private: QCameraFocus(QCamera *camera); virtual ~QCameraFocus(); QCameraFocus(const QCameraFocus &); }; QFlags operator|(QCameraFocus::FocusMode f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtMultimedia/qcameraimagecapture.sip0000644000076500000240000000707512613140040023165 0ustar philstaff00000000000000// qcameraimagecapture.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraImageCapture : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum Error { NoError, NotReadyError, ResourceError, OutOfSpaceError, NotSupportedFeatureError, FormatError, }; enum DriveMode { SingleImageCapture, }; enum CaptureDestination { CaptureToFile, CaptureToBuffer, }; typedef QFlags CaptureDestinations; QCameraImageCapture(QMediaObject *mediaObject, QObject *parent /TransferThis/ = 0); virtual ~QCameraImageCapture(); bool isAvailable() const; QMultimedia::AvailabilityStatus availability() const; virtual QMediaObject *mediaObject() const; QCameraImageCapture::Error error() const; QString errorString() const; bool isReadyForCapture() const; QStringList supportedImageCodecs() const; QString imageCodecDescription(const QString &codecName) const; QList supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(), bool *continuous = 0) const; QImageEncoderSettings encodingSettings() const; void setEncodingSettings(const QImageEncoderSettings &settings); QList supportedBufferFormats() const; QVideoFrame::PixelFormat bufferFormat() const; void setBufferFormat(const QVideoFrame::PixelFormat format); bool isCaptureDestinationSupported(QFlags destination) const; QFlags captureDestination() const; void setCaptureDestination(QFlags destination); public slots: int capture(const QString &file = QString()) /ReleaseGIL/; void cancelCapture(); signals: void error(int id, QCameraImageCapture::Error error, const QString &errorString); void readyForCaptureChanged(bool); void bufferFormatChanged(QVideoFrame::PixelFormat); void captureDestinationChanged(QFlags); void imageExposed(int id); void imageCaptured(int id, const QImage &preview); void imageMetadataAvailable(int id, const QString &key, const QVariant &value); void imageAvailable(int id, const QVideoFrame &image); void imageSaved(int id, const QString &fileName); protected: virtual bool setMediaObject(QMediaObject *); private: QCameraImageCapture(const QCameraImageCapture &); }; QFlags operator|(QCameraImageCapture::CaptureDestination f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtMultimedia/qcameraimageprocessing.sip0000644000076500000240000000541612613140040023673 0ustar philstaff00000000000000// qcameraimageprocessing.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraImageProcessing : QObject { %TypeHeaderCode #include %End public: enum WhiteBalanceMode { WhiteBalanceAuto, WhiteBalanceManual, WhiteBalanceSunlight, WhiteBalanceCloudy, WhiteBalanceShade, WhiteBalanceTungsten, WhiteBalanceFluorescent, WhiteBalanceFlash, WhiteBalanceSunset, WhiteBalanceVendor, }; bool isAvailable() const; QCameraImageProcessing::WhiteBalanceMode whiteBalanceMode() const; void setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceMode mode); bool isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode mode) const; qreal manualWhiteBalance() const; void setManualWhiteBalance(qreal colorTemperature); qreal contrast() const; void setContrast(qreal value); qreal saturation() const; void setSaturation(qreal value); qreal sharpeningLevel() const; void setSharpeningLevel(qreal value); qreal denoisingLevel() const; void setDenoisingLevel(qreal value); private: QCameraImageProcessing(QCamera *camera); virtual ~QCameraImageProcessing(); QCameraImageProcessing(const QCameraImageProcessing &); public: %If (Qt_5_5_0 -) enum ColorFilter { ColorFilterNone, ColorFilterGrayscale, ColorFilterNegative, ColorFilterSolarize, ColorFilterSepia, ColorFilterPosterize, ColorFilterWhiteboard, ColorFilterBlackboard, ColorFilterAqua, ColorFilterVendor, }; %End %If (Qt_5_5_0 -) QCameraImageProcessing::ColorFilter colorFilter() const; %End %If (Qt_5_5_0 -) void setColorFilter(QCameraImageProcessing::ColorFilter filter); %End %If (Qt_5_5_0 -) bool isColorFilterSupported(QCameraImageProcessing::ColorFilter filter) const; %End }; PyQt-gpl-5.5.1/sip/QtMultimedia/qcamerainfo.sip0000644000076500000240000000315712613140040021447 0ustar philstaff00000000000000// qcamerainfo.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QCameraInfo { %TypeHeaderCode #include %End public: explicit QCameraInfo(const QByteArray &name = QByteArray()); explicit QCameraInfo(const QCamera &camera); QCameraInfo(const QCameraInfo &other); ~QCameraInfo(); bool isNull() const; QString deviceName() const; QString description() const; QCamera::Position position() const; int orientation() const; static QCameraInfo defaultCamera(); static QList availableCameras(QCamera::Position position = QCamera::UnspecifiedPosition); bool operator==(const QCameraInfo &other) const; bool operator!=(const QCameraInfo &other) const; }; %End PyQt-gpl-5.5.1/sip/QtMultimedia/qcameraviewfindersettings.sip0000644000076500000240000000402412613140040024431 0ustar philstaff00000000000000// qcameraviewfindersettings.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QCameraViewfinderSettings { %TypeHeaderCode #include %End public: QCameraViewfinderSettings(); QCameraViewfinderSettings(const QCameraViewfinderSettings &other); ~QCameraViewfinderSettings(); void swap(QCameraViewfinderSettings &other); bool isNull() const; QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); qreal minimumFrameRate() const; void setMinimumFrameRate(qreal rate); qreal maximumFrameRate() const; void setMaximumFrameRate(qreal rate); QVideoFrame::PixelFormat pixelFormat() const; void setPixelFormat(QVideoFrame::PixelFormat format); QSize pixelAspectRatio() const; void setPixelAspectRatio(const QSize &ratio); void setPixelAspectRatio(int horizontal, int vertical); }; %End %If (Qt_5_5_0 -) bool operator==(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs); %End %If (Qt_5_5_0 -) bool operator!=(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs); %End PyQt-gpl-5.5.1/sip/QtMultimedia/qmediabindableinterface.sip0000644000076500000240000000232012613140040023753 0ustar philstaff00000000000000// qmediabindableinterface.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaBindableInterface { %TypeHeaderCode #include %End public: virtual ~QMediaBindableInterface(); virtual QMediaObject *mediaObject() const = 0; protected: virtual bool setMediaObject(QMediaObject *object) = 0; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediacontent.sip0000644000076500000240000000334112613140040022010 0ustar philstaff00000000000000// qmediacontent.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaContent { %TypeHeaderCode #include %End public: QMediaContent(); QMediaContent(const QUrl &contentUrl); QMediaContent(const QNetworkRequest &contentRequest); QMediaContent(const QMediaResource &contentResource); QMediaContent(const QMediaResourceList &resources); QMediaContent(const QMediaContent &other); QMediaContent(QMediaPlaylist *playlist, const QUrl &contentUrl = QUrl()); ~QMediaContent(); bool operator==(const QMediaContent &other) const; bool operator!=(const QMediaContent &other) const; bool isNull() const; QUrl canonicalUrl() const; QNetworkRequest canonicalRequest() const; QMediaResource canonicalResource() const; QMediaResourceList resources() const; QMediaPlaylist *playlist() const; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediacontrol.sip0000644000076500000240000000217312613140040022020 0ustar philstaff00000000000000// qmediacontrol.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaControl : QObject { %TypeHeaderCode #include %End public: virtual ~QMediaControl(); protected: QMediaControl(QObject *parent /TransferThis/ = 0); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediaencodersettings.sip0000644000076500000240000000772012613140040023543 0ustar philstaff00000000000000// qmediaencodersettings.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioEncoderSettings { %TypeHeaderCode #include %End public: QAudioEncoderSettings(); QAudioEncoderSettings(const QAudioEncoderSettings &other); ~QAudioEncoderSettings(); bool operator==(const QAudioEncoderSettings &other) const; bool operator!=(const QAudioEncoderSettings &other) const; bool isNull() const; QMultimedia::EncodingMode encodingMode() const; void setEncodingMode(QMultimedia::EncodingMode); QString codec() const; void setCodec(const QString &codec); int bitRate() const; void setBitRate(int bitrate); int channelCount() const; void setChannelCount(int channels); int sampleRate() const; void setSampleRate(int rate); QMultimedia::EncodingQuality quality() const; void setQuality(QMultimedia::EncodingQuality quality); QVariant encodingOption(const QString &option) const; QVariantMap encodingOptions() const; void setEncodingOption(const QString &option, const QVariant &value); void setEncodingOptions(const QVariantMap &options); }; class QVideoEncoderSettings { %TypeHeaderCode #include %End public: QVideoEncoderSettings(); QVideoEncoderSettings(const QVideoEncoderSettings &other); ~QVideoEncoderSettings(); bool operator==(const QVideoEncoderSettings &other) const; bool operator!=(const QVideoEncoderSettings &other) const; bool isNull() const; QMultimedia::EncodingMode encodingMode() const; void setEncodingMode(QMultimedia::EncodingMode); QString codec() const; void setCodec(const QString &); QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); qreal frameRate() const; void setFrameRate(qreal rate); int bitRate() const; void setBitRate(int bitrate); QMultimedia::EncodingQuality quality() const; void setQuality(QMultimedia::EncodingQuality quality); QVariant encodingOption(const QString &option) const; QVariantMap encodingOptions() const; void setEncodingOption(const QString &option, const QVariant &value); void setEncodingOptions(const QVariantMap &options); }; class QImageEncoderSettings { %TypeHeaderCode #include %End public: QImageEncoderSettings(); QImageEncoderSettings(const QImageEncoderSettings &other); ~QImageEncoderSettings(); bool operator==(const QImageEncoderSettings &other) const; bool operator!=(const QImageEncoderSettings &other) const; bool isNull() const; QString codec() const; void setCodec(const QString &); QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); QMultimedia::EncodingQuality quality() const; void setQuality(QMultimedia::EncodingQuality quality); QVariant encodingOption(const QString &option) const; QVariantMap encodingOptions() const; void setEncodingOption(const QString &option, const QVariant &value); void setEncodingOptions(const QVariantMap &options); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediametadata.sip0000644000076500000240000000744112613140040022123 0ustar philstaff00000000000000// qmediametadata.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QMediaMetaData { %TypeHeaderCode #include %End const QString Title; const QString SubTitle; const QString Author; const QString Comment; const QString Description; const QString Category; const QString Genre; const QString Year; const QString Date; const QString UserRating; const QString Keywords; const QString Language; const QString Publisher; const QString Copyright; const QString ParentalRating; const QString RatingOrganization; const QString Size; const QString MediaType; const QString Duration; const QString AudioBitRate; const QString AudioCodec; const QString AverageLevel; const QString ChannelCount; const QString PeakValue; const QString SampleRate; const QString AlbumTitle; const QString AlbumArtist; const QString ContributingArtist; const QString Composer; const QString Conductor; const QString Lyrics; const QString Mood; const QString TrackNumber; const QString TrackCount; const QString CoverArtUrlSmall; const QString CoverArtUrlLarge; const QString Resolution; const QString PixelAspectRatio; const QString VideoFrameRate; const QString VideoBitRate; const QString VideoCodec; const QString PosterUrl; const QString ChapterNumber; const QString Director; const QString LeadPerformer; const QString Writer; const QString CameraManufacturer; const QString CameraModel; const QString Event; const QString Subject; const QString Orientation; const QString ExposureTime; const QString FNumber; const QString ExposureProgram; const QString ISOSpeedRatings; const QString ExposureBiasValue; const QString DateTimeOriginal; const QString DateTimeDigitized; const QString SubjectDistance; const QString MeteringMode; const QString LightSource; const QString Flash; const QString FocalLength; const QString ExposureMode; const QString WhiteBalance; const QString DigitalZoomRatio; const QString FocalLengthIn35mmFilm; const QString SceneCaptureType; const QString GainControl; const QString Contrast; const QString Saturation; const QString Sharpness; const QString DeviceSettingDescription; const QString GPSLatitude; const QString GPSLongitude; const QString GPSAltitude; const QString GPSTimeStamp; const QString GPSSatellites; const QString GPSStatus; const QString GPSDOP; const QString GPSSpeed; const QString GPSTrack; const QString GPSTrackRef; const QString GPSImgDirection; const QString GPSImgDirectionRef; const QString GPSMapDatum; const QString GPSProcessingMethod; const QString GPSAreaInformation; const QString PosterImage; const QString CoverArtImage; const QString ThumbnailImage; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediaobject.sip0000644000076500000240000000367112613140040021612 0ustar philstaff00000000000000// qmediaobject.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaObject : QObject { %TypeHeaderCode #include %End public: virtual ~QMediaObject(); virtual bool isAvailable() const; virtual QMultimedia::AvailabilityStatus availability() const; virtual QMediaService *service() const; int notifyInterval() const; void setNotifyInterval(int milliSeconds); virtual bool bind(QObject *); virtual void unbind(QObject *); bool isMetaDataAvailable() const; QVariant metaData(const QString &key) const; QStringList availableMetaData() const; signals: void notifyIntervalChanged(int milliSeconds); void metaDataAvailableChanged(bool available); void metaDataChanged(); void metaDataChanged(const QString &key, const QVariant &value); void availabilityChanged(QMultimedia::AvailabilityStatus availability); protected: QMediaObject(QObject *parent /TransferThis/, QMediaService *service); void addPropertyWatch(const QByteArray &name); void removePropertyWatch(const QByteArray &name); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediaplayer.sip0000644000076500000240000001025312613140040021632 0ustar philstaff00000000000000// qmediaplayer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsVideoItem /External/; class QVideoWidget /External/; class QMediaPlayer : QMediaObject { %TypeHeaderCode #include %End public: enum State { StoppedState, PlayingState, PausedState, }; enum MediaStatus { UnknownMediaStatus, NoMedia, LoadingMedia, LoadedMedia, StalledMedia, BufferingMedia, BufferedMedia, EndOfMedia, InvalidMedia, }; enum Flag { LowLatency, StreamPlayback, VideoSurface, }; typedef QFlags Flags; enum Error { NoError, ResourceError, FormatError, NetworkError, AccessDeniedError, ServiceMissingError, }; QMediaPlayer(QObject *parent /TransferThis/ = 0, QFlags flags = 0); virtual ~QMediaPlayer(); static QMultimedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList &codecs = QStringList(), QFlags flags = 0); static QStringList supportedMimeTypes(QFlags flags = 0); void setVideoOutput(QVideoWidget *); void setVideoOutput(QGraphicsVideoItem *); void setVideoOutput(QAbstractVideoSurface *surface); QMediaContent media() const; const QIODevice *mediaStream() const; QMediaPlaylist *playlist() const; QMediaContent currentMedia() const; QMediaPlayer::State state() const; QMediaPlayer::MediaStatus mediaStatus() const; qint64 duration() const; qint64 position() const; int volume() const; bool isMuted() const; bool isAudioAvailable() const; bool isVideoAvailable() const; int bufferStatus() const; bool isSeekable() const; qreal playbackRate() const; QMediaPlayer::Error error() const; QString errorString() const; QNetworkConfiguration currentNetworkConfiguration() const; virtual QMultimedia::AvailabilityStatus availability() const; public slots: void play(); void pause(); void stop(); void setPosition(qint64 position); void setVolume(int volume); void setMuted(bool muted); void setPlaybackRate(qreal rate); void setMedia(const QMediaContent &media, QIODevice *stream = 0); void setPlaylist(QMediaPlaylist *playlist); void setNetworkConfigurations(const QList &configurations); signals: void mediaChanged(const QMediaContent &media); void currentMediaChanged(const QMediaContent &media); void stateChanged(QMediaPlayer::State newState); void mediaStatusChanged(QMediaPlayer::MediaStatus status); void durationChanged(qint64 duration); void positionChanged(qint64 position); void volumeChanged(int volume); void mutedChanged(bool muted); void audioAvailableChanged(bool available); void videoAvailableChanged(bool videoAvailable); void bufferStatusChanged(int percentFilled); void seekableChanged(bool seekable); void playbackRateChanged(qreal rate); void error(QMediaPlayer::Error error); void networkConfigurationChanged(const QNetworkConfiguration &configuration); public: virtual bool bind(QObject *); virtual void unbind(QObject *); private: QMediaPlayer(const QMediaPlayer &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediaplaylist.sip0000644000076500000240000000632612613140040022205 0ustar philstaff00000000000000// qmediaplaylist.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaPlaylist : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum PlaybackMode { CurrentItemOnce, CurrentItemInLoop, Sequential, Loop, Random, }; enum Error { NoError, FormatError, FormatNotSupportedError, NetworkError, AccessDeniedError, }; QMediaPlaylist(QObject *parent /TransferThis/ = 0); virtual ~QMediaPlaylist(); virtual QMediaObject *mediaObject() const; QMediaPlaylist::PlaybackMode playbackMode() const; void setPlaybackMode(QMediaPlaylist::PlaybackMode mode); int currentIndex() const; QMediaContent currentMedia() const; int nextIndex(int steps = 1) const; int previousIndex(int steps = 1) const; QMediaContent media(int index) const; int mediaCount() const; bool isEmpty() const; bool isReadOnly() const; bool addMedia(const QMediaContent &content); bool addMedia(const QList &items); bool insertMedia(int index, const QMediaContent &content); bool insertMedia(int index, const QList &items); bool removeMedia(int pos); bool removeMedia(int start, int end); bool clear(); void load(const QNetworkRequest &request, const char *format = 0) /ReleaseGIL/; void load(const QUrl &location, const char *format = 0) /ReleaseGIL/; void load(QIODevice *device, const char *format = 0) /ReleaseGIL/; bool save(const QUrl &location, const char *format = 0) /ReleaseGIL/; bool save(QIODevice *device, const char *format) /ReleaseGIL/; QMediaPlaylist::Error error() const; QString errorString() const; public slots: void shuffle(); void next(); void previous(); void setCurrentIndex(int index); signals: void currentIndexChanged(int index); void playbackModeChanged(QMediaPlaylist::PlaybackMode mode); void currentMediaChanged(const QMediaContent &); void mediaAboutToBeInserted(int start, int end); void mediaInserted(int start, int end); void mediaAboutToBeRemoved(int start, int end); void mediaRemoved(int start, int end); void mediaChanged(int start, int end); void loaded(); void loadFailed(); protected: virtual bool setMediaObject(QMediaObject *object); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediarecorder.sip0000644000076500000240000001047212613140040022146 0ustar philstaff00000000000000// qmediarecorder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaRecorder : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum State { StoppedState, RecordingState, PausedState, }; enum Status { UnavailableStatus, UnloadedStatus, LoadingStatus, LoadedStatus, StartingStatus, RecordingStatus, PausedStatus, FinalizingStatus, }; enum Error { NoError, ResourceError, FormatError, OutOfSpaceError, }; QMediaRecorder(QMediaObject *mediaObject, QObject *parent /TransferThis/ = 0); virtual ~QMediaRecorder(); virtual QMediaObject *mediaObject() const; bool isAvailable() const; QMultimedia::AvailabilityStatus availability() const; QUrl outputLocation() const; bool setOutputLocation(const QUrl &location); QUrl actualLocation() const; QMediaRecorder::State state() const; QMediaRecorder::Status status() const; QMediaRecorder::Error error() const; QString errorString() const; qint64 duration() const; bool isMuted() const; qreal volume() const; QStringList supportedContainers() const; QString containerDescription(const QString &format) const; QStringList supportedAudioCodecs() const; QString audioCodecDescription(const QString &codecName) const; QList supportedAudioSampleRates(const QAudioEncoderSettings &settings = QAudioEncoderSettings(), bool *continuous = 0) const; QStringList supportedVideoCodecs() const; QString videoCodecDescription(const QString &codecName) const; QList supportedResolutions(const QVideoEncoderSettings &settings = QVideoEncoderSettings(), bool *continuous = 0) const; QList supportedFrameRates(const QVideoEncoderSettings &settings = QVideoEncoderSettings(), bool *continuous = 0) const; QAudioEncoderSettings audioSettings() const; QVideoEncoderSettings videoSettings() const; QString containerFormat() const; void setAudioSettings(const QAudioEncoderSettings &audioSettings); void setVideoSettings(const QVideoEncoderSettings &videoSettings); void setContainerFormat(const QString &container); void setEncodingSettings(const QAudioEncoderSettings &audio, const QVideoEncoderSettings &video = QVideoEncoderSettings(), const QString &container = QString()); bool isMetaDataAvailable() const; bool isMetaDataWritable() const; QVariant metaData(const QString &key) const; void setMetaData(const QString &key, const QVariant &value); QStringList availableMetaData() const; public slots: void record(); void pause(); void stop(); void setMuted(bool muted); void setVolume(qreal volume); signals: void stateChanged(QMediaRecorder::State state); void statusChanged(QMediaRecorder::Status status); void durationChanged(qint64 duration); void mutedChanged(bool muted); void volumeChanged(qreal volume); void actualLocationChanged(const QUrl &location); void error(QMediaRecorder::Error error); void metaDataAvailableChanged(bool available); void metaDataWritableChanged(bool writable); void metaDataChanged(const QString &key, const QVariant &value); void availabilityChanged(QMultimedia::AvailabilityStatus availability); protected: virtual bool setMediaObject(QMediaObject *object); private: QMediaRecorder(const QMediaRecorder &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediaresource.sip0000644000076500000240000000434312613140040022170 0ustar philstaff00000000000000// qmediaresource.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaResource { %TypeHeaderCode #include %End public: QMediaResource(); QMediaResource(const QUrl &url, const QString &mimeType = QString()); QMediaResource(const QNetworkRequest &request, const QString &mimeType = QString()); QMediaResource(const QMediaResource &other); ~QMediaResource(); bool isNull() const; bool operator==(const QMediaResource &other) const; bool operator!=(const QMediaResource &other) const; QUrl url() const; QNetworkRequest request() const; QString mimeType() const; QString language() const; void setLanguage(const QString &language); QString audioCodec() const; void setAudioCodec(const QString &codec); QString videoCodec() const; void setVideoCodec(const QString &codec); qint64 dataSize() const; void setDataSize(const qint64 size); int audioBitRate() const; void setAudioBitRate(int rate); int sampleRate() const; void setSampleRate(int frequency); int channelCount() const; void setChannelCount(int channels); int videoBitRate() const; void setVideoBitRate(int rate); QSize resolution() const; void setResolution(const QSize &resolution); void setResolution(int width, int height); }; typedef QList QMediaResourceList; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediaservice.sip0000644000076500000240000000236512613140040022003 0ustar philstaff00000000000000// qmediaservice.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaService : QObject { %TypeHeaderCode #include %End public: virtual ~QMediaService(); virtual QMediaControl *requestControl(const char *name) = 0; virtual void releaseControl(QMediaControl *control) = 0; protected: QMediaService(QObject *parent /TransferThis/); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qmediatimerange.sip0000644000076500000240000000551112613140040022312 0ustar philstaff00000000000000// qmediatimerange.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaTimeInterval { %TypeHeaderCode #include %End public: QMediaTimeInterval(); QMediaTimeInterval(qint64 start, qint64 end); QMediaTimeInterval(const QMediaTimeInterval &); qint64 start() const; qint64 end() const; bool contains(qint64 time) const; bool isNormal() const; QMediaTimeInterval normalized() const; QMediaTimeInterval translated(qint64 offset) const; }; bool operator==(const QMediaTimeInterval &, const QMediaTimeInterval &); bool operator!=(const QMediaTimeInterval &, const QMediaTimeInterval &); class QMediaTimeRange { %TypeHeaderCode #include %End public: QMediaTimeRange(); QMediaTimeRange(qint64 start, qint64 end); QMediaTimeRange(const QMediaTimeInterval &); QMediaTimeRange(const QMediaTimeRange &range); ~QMediaTimeRange(); qint64 earliestTime() const; qint64 latestTime() const; QList intervals() const; bool isEmpty() const; bool isContinuous() const; bool contains(qint64 time) const; void addInterval(qint64 start, qint64 end); void addInterval(const QMediaTimeInterval &interval); void addTimeRange(const QMediaTimeRange &); void removeInterval(qint64 start, qint64 end); void removeInterval(const QMediaTimeInterval &interval); void removeTimeRange(const QMediaTimeRange &); QMediaTimeRange &operator+=(const QMediaTimeRange &); QMediaTimeRange &operator+=(const QMediaTimeInterval &); QMediaTimeRange &operator-=(const QMediaTimeRange &); QMediaTimeRange &operator-=(const QMediaTimeInterval &); void clear(); }; bool operator==(const QMediaTimeRange &, const QMediaTimeRange &); bool operator!=(const QMediaTimeRange &, const QMediaTimeRange &); QMediaTimeRange operator+(const QMediaTimeRange &, const QMediaTimeRange &); QMediaTimeRange operator-(const QMediaTimeRange &, const QMediaTimeRange &); PyQt-gpl-5.5.1/sip/QtMultimedia/qmultimedia.sip0000644000076500000240000000310012613140040021461 0ustar philstaff00000000000000// qmultimedia.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QMultimedia { %TypeHeaderCode #include %End enum SupportEstimate { NotSupported, MaybeSupported, ProbablySupported, PreferredService, }; enum EncodingQuality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality, }; enum EncodingMode { ConstantQualityEncoding, ConstantBitRateEncoding, AverageBitRateEncoding, TwoPassEncoding, }; enum AvailabilityStatus { Available, ServiceMissing, Busy, ResourceError, }; }; PyQt-gpl-5.5.1/sip/QtMultimedia/qpymultimedia_qlist.sip0000644000076500000240000001515112613140040023257 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtMultimedia module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /DocType="list-of-QVideoFrame.PixelFormat"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QVideoFrame_PixelFormat); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_QVideoFrame_PixelFormat)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QVideoFrame.PixelFormat' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /DocType="list-of-QAudioFormat.Endian"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QAudioFormat_Endian); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_QAudioFormat_Endian)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QAudioFormat.Endian' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /DocType="list-of-QAudioFormat.SampleType"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QAudioFormat_SampleType); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_QAudioFormat_SampleType)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QAudioFormat.SampleType' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtMultimedia/qradiodata.sip0000644000076500000240000000621512613140040021271 0ustar philstaff00000000000000// qradiodata.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioData : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum Error { NoError, ResourceError, OpenError, OutOfRangeError, }; enum ProgramType { Undefined, News, CurrentAffairs, Information, Sport, Education, Drama, Culture, Science, Varied, PopMusic, RockMusic, EasyListening, LightClassical, SeriousClassical, OtherMusic, Weather, Finance, ChildrensProgrammes, SocialAffairs, Religion, PhoneIn, Travel, Leisure, JazzMusic, CountryMusic, NationalMusic, OldiesMusic, FolkMusic, Documentary, AlarmTest, Alarm, Talk, ClassicRock, AdultHits, SoftRock, Top40, Soft, Nostalgia, Classical, RhythmAndBlues, SoftRhythmAndBlues, Language, ReligiousMusic, ReligiousTalk, Personality, Public, College, }; QRadioData(QMediaObject *mediaObject, QObject *parent /TransferThis/ = 0); virtual ~QRadioData(); virtual QMediaObject *mediaObject() const; QMultimedia::AvailabilityStatus availability() const; QString stationId() const; QRadioData::ProgramType programType() const; QString programTypeName() const; QString stationName() const; QString radioText() const; bool isAlternativeFrequenciesEnabled() const; QRadioData::Error error() const; QString errorString() const; public slots: void setAlternativeFrequenciesEnabled(bool enabled); signals: void stationIdChanged(QString stationId); void programTypeChanged(QRadioData::ProgramType programType); void programTypeNameChanged(QString programTypeName); void stationNameChanged(QString stationName); void radioTextChanged(QString radioText); void alternativeFrequenciesEnabledChanged(bool enabled); void error(QRadioData::Error error); protected: virtual bool setMediaObject(QMediaObject *); private: QRadioData(const QRadioData &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qradiotuner.sip0000644000076500000240000000622212613140040021513 0ustar philstaff00000000000000// qradiotuner.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioTuner : QMediaObject { %TypeHeaderCode #include %End public: enum State { ActiveState, StoppedState, }; enum Band { AM, FM, SW, LW, FM2, }; enum Error { NoError, ResourceError, OpenError, OutOfRangeError, }; enum StereoMode { ForceStereo, ForceMono, Auto, }; enum SearchMode { SearchFast, SearchGetStationId, }; QRadioTuner(QObject *parent /TransferThis/ = 0); virtual ~QRadioTuner(); virtual QMultimedia::AvailabilityStatus availability() const; QRadioTuner::State state() const; QRadioTuner::Band band() const; bool isBandSupported(QRadioTuner::Band b) const; int frequency() const; int frequencyStep(QRadioTuner::Band band) const; QPair frequencyRange(QRadioTuner::Band band) const; bool isStereo() const; void setStereoMode(QRadioTuner::StereoMode mode); QRadioTuner::StereoMode stereoMode() const; int signalStrength() const; int volume() const; bool isMuted() const; bool isSearching() const; bool isAntennaConnected() const; QRadioTuner::Error error() const; QString errorString() const; QRadioData *radioData() const; public slots: void searchForward(); void searchBackward(); void searchAllStations(QRadioTuner::SearchMode searchMode = QRadioTuner::SearchFast); void cancelSearch(); void setBand(QRadioTuner::Band band); void setFrequency(int frequency); void setVolume(int volume); void setMuted(bool muted); void start(); void stop(); signals: void stateChanged(QRadioTuner::State state); void bandChanged(QRadioTuner::Band band); void frequencyChanged(int frequency); void stereoStatusChanged(bool stereo); void searchingChanged(bool searching); void signalStrengthChanged(int signalStrength); void volumeChanged(int volume); void mutedChanged(bool muted); void stationFound(int frequency, QString stationId); void antennaConnectedChanged(bool connectionStatus); void error(QRadioTuner::Error error); private: QRadioTuner(const QRadioTuner &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qsound.sip0000644000076500000240000000257512613140040020476 0ustar philstaff00000000000000// qsound.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSound : QObject { %TypeHeaderCode #include %End public: enum Loop { Infinite, }; QSound(const QString &filename, QObject *parent /TransferThis/ = 0); virtual ~QSound(); static void play(const QString &filename); int loops() const; int loopsRemaining() const; void setLoops(int); QString fileName() const; bool isFinished() const; public slots: void play(); void stop(); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qsoundeffect.sip0000644000076500000240000000411612613140040021644 0ustar philstaff00000000000000// qsoundeffect.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSoundEffect : QObject { %TypeHeaderCode #include %End public: enum Loop { Infinite, }; enum Status { Null, Loading, Ready, Error, }; explicit QSoundEffect(QObject *parent /TransferThis/ = 0); virtual ~QSoundEffect(); static QStringList supportedMimeTypes(); QUrl source() const; void setSource(const QUrl &url); int loopCount() const; int loopsRemaining() const; void setLoopCount(int loopCount); qreal volume() const; void setVolume(qreal volume); bool isMuted() const; void setMuted(bool muted); bool isLoaded() const; bool isPlaying() const; QSoundEffect::Status status() const; QString category() const; void setCategory(const QString &category); signals: void sourceChanged(); void loopCountChanged(); void loopsRemainingChanged(); void volumeChanged(); void mutedChanged(); void loadedChanged(); void playingChanged(); void statusChanged(); void categoryChanged(); public slots: void play(); void stop(); private: QSoundEffect(const QSoundEffect &); }; PyQt-gpl-5.5.1/sip/QtMultimedia/QtMultimediamod.sip0000644000076500000240000000602112613140040022252 0ustar philstaff00000000000000// QtMultimediamod.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtMultimedia, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractvideobuffer.sip %Include qabstractvideofilter.sip %Include qabstractvideosurface.sip %Include qaudio.sip %Include qaudiobuffer.sip %Include qaudiodecoder.sip %Include qaudiodeviceinfo.sip %Include qaudioformat.sip %Include qaudioinput.sip %Include qaudiooutput.sip %Include qaudioprobe.sip %Include qaudiorecorder.sip %Include qcamera.sip %Include qcameraexposure.sip %Include qcamerafocus.sip %Include qcameraimagecapture.sip %Include qcameraimageprocessing.sip %Include qcamerainfo.sip %Include qcameraviewfindersettings.sip %Include qmediabindableinterface.sip %Include qmediacontent.sip %Include qmediacontrol.sip %Include qmediaencodersettings.sip %Include qmediametadata.sip %Include qmediaobject.sip %Include qmediaplayer.sip %Include qmediaplaylist.sip %Include qmediarecorder.sip %Include qmediaresource.sip %Include qmediaservice.sip %Include qmediatimerange.sip %Include qmultimedia.sip %Include qradiodata.sip %Include qradiotuner.sip %Include qsound.sip %Include qsoundeffect.sip %Include qvideoframe.sip %Include qvideoprobe.sip %Include qvideosurfaceformat.sip %Include qpymultimedia_qlist.sip PyQt-gpl-5.5.1/sip/QtMultimedia/qvideoframe.sip0000644000076500000240000001003612613140040021456 0ustar philstaff00000000000000// qvideoframe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoFrame { %TypeHeaderCode #include %End public: enum FieldType { ProgressiveFrame, TopField, BottomField, InterlacedFrame, }; enum PixelFormat { Format_Invalid, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB32, Format_RGB24, Format_RGB565, Format_RGB555, Format_ARGB8565_Premultiplied, Format_BGRA32, Format_BGRA32_Premultiplied, Format_BGR32, Format_BGR24, Format_BGR565, Format_BGR555, Format_BGRA5658_Premultiplied, Format_AYUV444, Format_AYUV444_Premultiplied, Format_YUV444, Format_YUV420P, Format_YV12, Format_UYVY, Format_YUYV, Format_NV12, Format_NV21, Format_IMC1, Format_IMC2, Format_IMC3, Format_IMC4, Format_Y8, Format_Y16, Format_Jpeg, Format_CameraRaw, Format_AdobeDng, Format_User, }; QVideoFrame(); QVideoFrame(QAbstractVideoBuffer *buffer, const QSize &size, QVideoFrame::PixelFormat format); QVideoFrame(int bytes, const QSize &size, int bytesPerLine, QVideoFrame::PixelFormat format); QVideoFrame(const QImage &image); QVideoFrame(const QVideoFrame &other); ~QVideoFrame(); bool isValid() const; QVideoFrame::PixelFormat pixelFormat() const; QAbstractVideoBuffer::HandleType handleType() const; QSize size() const; int width() const; int height() const; QVideoFrame::FieldType fieldType() const; void setFieldType(QVideoFrame::FieldType); bool isMapped() const; bool isReadable() const; bool isWritable() const; QAbstractVideoBuffer::MapMode mapMode() const; bool map(QAbstractVideoBuffer::MapMode mode); void unmap(); int bytesPerLine() const; %If (Qt_5_4_0 -) int bytesPerLine(int plane) const; %End SIP_PYOBJECT bits() /DocType="sip.voidptr"/; %MethodCode uchar *mem; Py_BEGIN_ALLOW_THREADS mem = sipCpp->bits(); Py_END_ALLOW_THREADS if (mem) { sipRes = sipConvertFromVoidPtrAndSize(mem, sipCpp->mappedBytes()); } else { sipRes = Py_None; Py_INCREF(sipRes); } %End %If (Qt_5_4_0 -) void *bits(int plane) [uchar * (int plane)]; %End int mappedBytes() const; QVariant handle() const; qint64 startTime() const; void setStartTime(qint64 time); qint64 endTime() const; void setEndTime(qint64 time); static QVideoFrame::PixelFormat pixelFormatFromImageFormat(QImage::Format format); static QImage::Format imageFormatFromPixelFormat(QVideoFrame::PixelFormat format); QVariantMap availableMetaData() const; QVariant metaData(const QString &key) const; void setMetaData(const QString &key, const QVariant &value); %If (Qt_5_4_0 -) int planeCount() const; %End %If (Qt_5_5_0 -) bool operator==(const QVideoFrame &other) const; %End %If (Qt_5_5_0 -) bool operator!=(const QVideoFrame &other) const; %End }; PyQt-gpl-5.5.1/sip/QtMultimedia/qvideoprobe.sip0000644000076500000240000000246512613140040021502 0ustar philstaff00000000000000// qvideoprobe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoProbe : QObject { %TypeHeaderCode #include %End public: explicit QVideoProbe(QObject *parent /TransferThis/ = 0); virtual ~QVideoProbe(); bool setSource(QMediaObject *source); bool setSource(QMediaRecorder *source); bool isActive() const; signals: void videoFrameProbed(const QVideoFrame &videoFrame); void flush(); }; PyQt-gpl-5.5.1/sip/QtMultimedia/qvideosurfaceformat.sip0000644000076500000240000000526412613140040023234 0ustar philstaff00000000000000// qvideosurfaceformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoSurfaceFormat { %TypeHeaderCode #include %End public: enum Direction { TopToBottom, BottomToTop, }; enum YCbCrColorSpace { YCbCr_Undefined, YCbCr_BT601, YCbCr_BT709, YCbCr_xvYCC601, YCbCr_xvYCC709, YCbCr_JPEG, }; QVideoSurfaceFormat(); QVideoSurfaceFormat(const QSize &size, QVideoFrame::PixelFormat format, QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle); QVideoSurfaceFormat(const QVideoSurfaceFormat &format); ~QVideoSurfaceFormat(); bool operator==(const QVideoSurfaceFormat &format) const; bool operator!=(const QVideoSurfaceFormat &format) const; bool isValid() const; QVideoFrame::PixelFormat pixelFormat() const; QAbstractVideoBuffer::HandleType handleType() const; QSize frameSize() const; void setFrameSize(const QSize &size); void setFrameSize(int width, int height); int frameWidth() const; int frameHeight() const; QRect viewport() const; void setViewport(const QRect &viewport); QVideoSurfaceFormat::Direction scanLineDirection() const; void setScanLineDirection(QVideoSurfaceFormat::Direction direction); qreal frameRate() const; void setFrameRate(qreal rate); QSize pixelAspectRatio() const; void setPixelAspectRatio(const QSize &ratio); void setPixelAspectRatio(int width, int height); QVideoSurfaceFormat::YCbCrColorSpace yCbCrColorSpace() const; void setYCbCrColorSpace(QVideoSurfaceFormat::YCbCrColorSpace colorSpace); QSize sizeHint() const; QList propertyNames() const; QVariant property(const char *name) const; void setProperty(const char *name, const QVariant &value); }; PyQt-gpl-5.5.1/sip/QtMultimediaWidgets/0000755000076500000240000000000012613140040017766 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtMultimediaWidgets/qcameraviewfinder.sip0000644000076500000240000000247512613140040024207 0ustar philstaff00000000000000// qcameraviewfinder.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraViewfinder : QVideoWidget { %TypeHeaderCode #include %End public: QCameraViewfinder(QWidget *parent /TransferThis/ = 0); virtual ~QCameraViewfinder(); virtual QMediaObject *mediaObject() const; protected: virtual bool setMediaObject(QMediaObject *object); private: QCameraViewfinder(const QCameraViewfinder &); }; PyQt-gpl-5.5.1/sip/QtMultimediaWidgets/qgraphicsvideoitem.sip0000644000076500000240000000464312613140040024401 0ustar philstaff00000000000000// qgraphicsvideoitem.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsVideoItem : QGraphicsObject, QMediaBindableInterface { %TypeHeaderCode #include %End %ConvertToSubClassCode // QGraphicsVideoItem doesn't reimplement type() so we hope nothing collides // with the default. if (sipCpp->type() == QGraphicsItem::UserType) { // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsVideoItem; } else { sipType = 0; } %End public: QGraphicsVideoItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsVideoItem(); virtual QMediaObject *mediaObject() const; Qt::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Qt::AspectRatioMode mode); QPointF offset() const; void setOffset(const QPointF &offset); QSizeF size() const; void setSize(const QSizeF &size); QSizeF nativeSize() const; virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); signals: void nativeSizeChanged(const QSizeF &size); protected: virtual void timerEvent(QTimerEvent *event); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool setMediaObject(QMediaObject *object); }; %ModuleHeaderCode // This is needed by the %ConvertToSubClassCode. #include %End PyQt-gpl-5.5.1/sip/QtMultimediaWidgets/QtMultimediaWidgetsmod.sip0000644000076500000240000000404612613140040025135 0ustar philstaff00000000000000// QtMultimediaWidgetsmod.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtMultimediaWidgets, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtMultimedia/QtMultimediamod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qcameraviewfinder.sip %Include qgraphicsvideoitem.sip %Include qvideowidget.sip PyQt-gpl-5.5.1/sip/QtMultimediaWidgets/qvideowidget.sip0000644000076500000240000000551412613140040023203 0ustar philstaff00000000000000// qvideowidget.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoWidget : QWidget, QMediaBindableInterface { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGraphicsVideoItem, &sipType_QGraphicsVideoItem, -1, 1}, {sipName_QVideoWidget, &sipType_QVideoWidget, 2, -1}, {sipName_QCameraViewfinder, &sipType_QCameraViewfinder, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QVideoWidget(QWidget *parent /TransferThis/ = 0); virtual ~QVideoWidget(); virtual QMediaObject *mediaObject() const; Qt::AspectRatioMode aspectRatioMode() const; int brightness() const; int contrast() const; int hue() const; int saturation() const; virtual QSize sizeHint() const; public slots: void setFullScreen(bool fullScreen); void setAspectRatioMode(Qt::AspectRatioMode mode); void setBrightness(int brightness); void setContrast(int contrast); void setHue(int hue); void setSaturation(int saturation); signals: void fullScreenChanged(bool fullScreen); void brightnessChanged(int brightness); void contrastChanged(int contrast); void hueChanged(int hue); void saturationChanged(int saturation); protected: virtual bool event(QEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void moveEvent(QMoveEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool setMediaObject(QMediaObject *object); }; PyQt-gpl-5.5.1/sip/QtNetwork/0000755000076500000240000000000012613140040015776 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtNetwork/qabstractnetworkcache.sip0000644000076500000240000000561112613140040023100 0ustar philstaff00000000000000// qabstractnetworkcache.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCacheMetaData { %TypeHeaderCode #include %End typedef QList> RawHeaderList; typedef QHash AttributesMap; public: QNetworkCacheMetaData(); QNetworkCacheMetaData(const QNetworkCacheMetaData &other); ~QNetworkCacheMetaData(); bool operator==(const QNetworkCacheMetaData &other) const; bool operator!=(const QNetworkCacheMetaData &other) const; bool isValid() const; QUrl url() const; void setUrl(const QUrl &url); RawHeaderList rawHeaders() const; void setRawHeaders(const RawHeaderList &headers); QDateTime lastModified() const; void setLastModified(const QDateTime &dateTime); QDateTime expirationDate() const; void setExpirationDate(const QDateTime &dateTime); bool saveToDisk() const; void setSaveToDisk(bool allow); AttributesMap attributes() const; void setAttributes(const AttributesMap &attributes); void swap(QNetworkCacheMetaData &other); }; QDataStream &operator<<(QDataStream &, const QNetworkCacheMetaData & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QNetworkCacheMetaData & /Constrained/) /ReleaseGIL/; class QAbstractNetworkCache : QObject { %TypeHeaderCode #include %End public: virtual ~QAbstractNetworkCache(); virtual QNetworkCacheMetaData metaData(const QUrl &url) = 0; virtual void updateMetaData(const QNetworkCacheMetaData &metaData) = 0; virtual QIODevice *data(const QUrl &url) = 0 /Factory/; virtual bool remove(const QUrl &url) = 0; virtual qint64 cacheSize() const = 0; virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData) = 0; virtual void insert(QIODevice *device) = 0; public slots: virtual void clear() = 0; protected: explicit QAbstractNetworkCache(QObject *parent /TransferThis/ = 0); private: QAbstractNetworkCache(const QAbstractNetworkCache &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qabstractsocket.sip0000644000076500000240000002410412613140040021711 0ustar philstaff00000000000000// qabstractsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSocket : QIODevice { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QNetworkReply, &sipType_QNetworkReply, -1, 1}, {sipName_QHttpMultiPart, &sipType_QHttpMultiPart, -1, 2}, {sipName_QAbstractNetworkCache, &sipType_QAbstractNetworkCache, 12, 3}, {sipName_QNetworkConfigurationManager, &sipType_QNetworkConfigurationManager, -1, 4}, {sipName_QNetworkCookieJar, &sipType_QNetworkCookieJar, -1, 5}, {sipName_QAbstractSocket, &sipType_QAbstractSocket, 13, 6}, {sipName_QLocalSocket, &sipType_QLocalSocket, -1, 7}, {sipName_QDnsLookup, &sipType_QDnsLookup, -1, 8}, {sipName_QNetworkSession, &sipType_QNetworkSession, -1, 9}, {sipName_QTcpServer, &sipType_QTcpServer, -1, 10}, {sipName_QNetworkAccessManager, &sipType_QNetworkAccessManager, -1, 11}, {sipName_QLocalServer, &sipType_QLocalServer, -1, -1}, {sipName_QNetworkDiskCache, &sipType_QNetworkDiskCache, -1, -1}, {sipName_QUdpSocket, &sipType_QUdpSocket, -1, 14}, {sipName_QTcpSocket, &sipType_QTcpSocket, 15, -1}, #if defined(SIP_FEATURE_PyQt_SSL) {sipName_QSslSocket, &sipType_QSslSocket, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum SocketType { TcpSocket, UdpSocket, UnknownSocketType, }; enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol, }; enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, SocketTimeoutError, DatagramTooLargeError, NetworkError, AddressInUseError, SocketAddressNotAvailableError, UnsupportedSocketOperationError, UnfinishedSocketOperationError, ProxyAuthenticationRequiredError, SslHandshakeFailedError, ProxyConnectionRefusedError, ProxyConnectionClosedError, ProxyConnectionTimeoutError, ProxyNotFoundError, ProxyProtocolError, OperationError, SslInternalError, SslInvalidUserDataError, TemporaryError, UnknownSocketError, }; enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, ListeningState, ClosingState, }; QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent /TransferThis/); virtual ~QAbstractSocket(); virtual void connectToHost(const QString &hostName, quint16 port, QFlags mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual void connectToHost(const QHostAddress &address, quint16 port, QFlags mode = QIODevice::ReadWrite) /ReleaseGIL/; virtual void disconnectFromHost() /ReleaseGIL/; bool isValid() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; quint16 localPort() const; QHostAddress localAddress() const; quint16 peerPort() const; QHostAddress peerAddress() const; QString peerName() const; qint64 readBufferSize() const; virtual void setReadBufferSize(qint64 size); void abort(); virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QFlags mode = QIODevice::ReadWrite); virtual qintptr socketDescriptor() const; QAbstractSocket::SocketType socketType() const; QAbstractSocket::SocketState state() const; QAbstractSocket::SocketError error() const; virtual void close(); virtual bool isSequential() const; virtual bool atEnd() const; bool flush() /ReleaseGIL/; virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; signals: void hostFound(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState); void error(QAbstractSocket::SocketError); void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QAbstractSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QAbstractSocket::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; void setSocketState(QAbstractSocket::SocketState state); void setSocketError(QAbstractSocket::SocketError socketError); void setLocalPort(quint16 port); void setLocalAddress(const QHostAddress &address); void setPeerPort(quint16 port); void setPeerAddress(const QHostAddress &address); void setPeerName(const QString &name); public: enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, %If (Qt_5_3_0 -) SendBufferSizeSocketOption, %End %If (Qt_5_3_0 -) ReceiveBufferSizeSocketOption, %End }; virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); virtual QVariant socketOption(QAbstractSocket::SocketOption option); enum BindFlag { DefaultForPlatform, ShareAddress, DontShareAddress, ReuseAddressHint, }; typedef QFlags BindMode; enum PauseMode { PauseNever, PauseOnSslErrors, }; typedef QFlags PauseModes; virtual void resume() /ReleaseGIL/; QFlags pauseMode() const; void setPauseMode(QFlags pauseMode); bool bind(const QHostAddress &address, quint16 port = 0, QFlags mode = QAbstractSocket::DefaultForPlatform); bool bind(quint16 port = 0, QFlags mode = QAbstractSocket::DefaultForPlatform); private: QAbstractSocket(const QAbstractSocket &); }; QFlags operator|(QAbstractSocket::BindFlag f1, QFlags f2); QFlags operator|(QAbstractSocket::PauseMode f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtNetwork/qauthenticator.sip0000644000076500000240000000306012613140040021545 0ustar philstaff00000000000000// qauthenticator.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAuthenticator { %TypeHeaderCode #include %End public: QAuthenticator(); QAuthenticator(const QAuthenticator &other); ~QAuthenticator(); bool operator==(const QAuthenticator &other) const; bool operator!=(const QAuthenticator &other) const; QString user() const; void setUser(const QString &user); QString password() const; void setPassword(const QString &password); QString realm() const; bool isNull() const; QVariant option(const QString &opt) const; QVariantHash options() const; void setOption(const QString &opt, const QVariant &value); }; PyQt-gpl-5.5.1/sip/QtNetwork/qdnslookup.sip0000644000076500000240000001076212613140040020720 0ustar philstaff00000000000000// qdnslookup.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDnsDomainNameRecord { %TypeHeaderCode #include %End public: QDnsDomainNameRecord(); QDnsDomainNameRecord(const QDnsDomainNameRecord &other); ~QDnsDomainNameRecord(); void swap(QDnsDomainNameRecord &other); QString name() const; quint32 timeToLive() const; QString value() const; }; class QDnsHostAddressRecord { %TypeHeaderCode #include %End public: QDnsHostAddressRecord(); QDnsHostAddressRecord(const QDnsHostAddressRecord &other); ~QDnsHostAddressRecord(); void swap(QDnsHostAddressRecord &other); QString name() const; quint32 timeToLive() const; QHostAddress value() const; }; class QDnsMailExchangeRecord { %TypeHeaderCode #include %End public: QDnsMailExchangeRecord(); QDnsMailExchangeRecord(const QDnsMailExchangeRecord &other); ~QDnsMailExchangeRecord(); void swap(QDnsMailExchangeRecord &other); QString exchange() const; QString name() const; quint16 preference() const; quint32 timeToLive() const; }; class QDnsServiceRecord { %TypeHeaderCode #include %End public: QDnsServiceRecord(); QDnsServiceRecord(const QDnsServiceRecord &other); ~QDnsServiceRecord(); void swap(QDnsServiceRecord &other); QString name() const; quint16 port() const; quint16 priority() const; QString target() const; quint32 timeToLive() const; quint16 weight() const; }; class QDnsTextRecord { %TypeHeaderCode #include %End public: QDnsTextRecord(); QDnsTextRecord(const QDnsTextRecord &other); ~QDnsTextRecord(); void swap(QDnsTextRecord &other); QString name() const; quint32 timeToLive() const; QList values() const; }; class QDnsLookup : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, ServerFailureError, ServerRefusedError, NotFoundError, }; enum Type { A, AAAA, ANY, CNAME, MX, NS, PTR, SRV, TXT, }; explicit QDnsLookup(QObject *parent /TransferThis/ = 0); QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent /TransferThis/ = 0); %If (Qt_5_5_0 -) QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent /TransferThis/ = 0); %End virtual ~QDnsLookup(); QDnsLookup::Error error() const; QString errorString() const; bool isFinished() const; QString name() const; void setName(const QString &name); QDnsLookup::Type type() const; void setType(QDnsLookup::Type); QList canonicalNameRecords() const; QList hostAddressRecords() const; QList mailExchangeRecords() const; QList nameServerRecords() const; QList pointerRecords() const; QList serviceRecords() const; QList textRecords() const; public slots: void abort() /ReleaseGIL/; void lookup() /ReleaseGIL/; signals: void finished(); void nameChanged(const QString &name); void typeChanged(QDnsLookup::Type type); public: %If (Qt_5_3_0 -) QHostAddress nameserver() const; %End %If (Qt_5_3_0 -) void setNameserver(const QHostAddress &nameserver); %End signals: %If (Qt_5_3_0 -) void nameserverChanged(const QHostAddress &nameserver); %End }; PyQt-gpl-5.5.1/sip/QtNetwork/qhostaddress.sip0000644000076500000240000001077312613140040021227 0ustar philstaff00000000000000// qhostaddress.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHostAddress { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QHostAddress::SpecialAddress to be used whenever a QHostAddress is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QHostAddress_SpecialAddress)) || sipCanConvertToType(sipPy, sipType_QHostAddress, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QHostAddress_SpecialAddress))) { *sipCppPtr = new QHostAddress((QHostAddress::SpecialAddress)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QHostAddress, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: enum SpecialAddress { Null, Broadcast, LocalHost, LocalHostIPv6, AnyIPv4, AnyIPv6, Any, }; QHostAddress(); QHostAddress(QHostAddress::SpecialAddress address /Constrained/); explicit QHostAddress(quint32 ip4Addr); explicit QHostAddress(const QString &address); explicit QHostAddress(const Q_IPV6ADDR &ip6Addr); QHostAddress(const QHostAddress ©); ~QHostAddress(); void setAddress(quint32 ip4Addr); bool setAddress(const QString &address); void setAddress(const Q_IPV6ADDR &ip6Addr); QAbstractSocket::NetworkLayerProtocol protocol() const; quint32 toIPv4Address() const; Q_IPV6ADDR toIPv6Address() const; QString toString() const; QString scopeId() const; void setScopeId(const QString &id); bool operator==(const QHostAddress &address) const; bool operator==(QHostAddress::SpecialAddress address) const; bool operator!=(const QHostAddress &address) const; bool operator!=(QHostAddress::SpecialAddress address) const; bool isNull() const; void clear(); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool isInSubnet(const QHostAddress &subnet, int netmask) const; bool isInSubnet(const QPair &subnet) const; bool isLoopback() const; static QPair parseSubnet(const QString &subnet); }; bool operator==(QHostAddress::SpecialAddress address1, const QHostAddress &address2); QDataStream &operator<<(QDataStream &, const QHostAddress &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QHostAddress &) /ReleaseGIL/; // Q_IPV6ADDR is implemented as a Python 16-tuple of ints. %MappedType Q_IPV6ADDR /DocType="16-tuple-of-int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the tuple. PyObject *t; if ((t = PyTuple_New(16)) == NULL) return NULL; // Set the tuple elements. for (int i = 0; i < 16; ++i) { PyObject *pobj; if ((pobj = SIPLong_FromLong((*sipCpp)[i])) == NULL) { Py_DECREF(t); return NULL; } PyTuple_SET_ITEM(t, i, pobj); } return t; %End %ConvertToTypeCode // Check the type if that is all that is required. if (sipIsErr == NULL) return (PySequence_Check(sipPy) && PySequence_Size(sipPy) == 16); Q_IPV6ADDR *qa = new Q_IPV6ADDR; for (SIP_SSIZE_T i = 0; i < 16; ++i) { PyObject *itm = PySequence_ITEM(sipPy, i); if (!itm) { delete qa; *sipIsErr = 1; return 0; } (*qa)[i] = SIPLong_AsLong(itm); Py_DECREF(itm); } *sipCppPtr = qa; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtNetwork/qhostinfo.sip0000644000076500000240000000552412613140040020533 0ustar philstaff00000000000000// qhostinfo.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHostInfo { %TypeHeaderCode #include %End public: enum HostInfoError { NoError, HostNotFound, UnknownError, }; explicit QHostInfo(int id = -1); QHostInfo(const QHostInfo &d); ~QHostInfo(); QString hostName() const; void setHostName(const QString &name); QList addresses() const; void setAddresses(const QList &addresses); QHostInfo::HostInfoError error() const; void setError(QHostInfo::HostInfoError error); QString errorString() const; void setErrorString(const QString &errorString); void setLookupId(int id); int lookupId() const; static int lookupHost(const QString &name, SIP_PYOBJECT slot /DocType="callable-or-signal"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtnetwork_get_connection_parts(a1, 0, "(QHostInfo)", true, &receiver, slot_signature)) == sipErrorNone) { QHostInfo::lookupHost(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End static void abortHostLookup(int lookupId); static QHostInfo fromName(const QString &name); static QString localHostName(); static QString localDomainName(); }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtnetwork_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtnetwork_get_connection_parts_t pyqt5_qtnetwork_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtnetwork_get_connection_parts_t pyqt5_qtnetwork_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtnetwork_get_connection_parts = (pyqt5_qtnetwork_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); %End PyQt-gpl-5.5.1/sip/QtNetwork/qhttpmultipart.sip0000644000076500000240000000414712613140040021623 0ustar philstaff00000000000000// qhttpmultipart.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHttpPart { %TypeHeaderCode #include %End public: QHttpPart(); QHttpPart(const QHttpPart &other); ~QHttpPart(); bool operator==(const QHttpPart &other) const; bool operator!=(const QHttpPart &other) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue); void setBody(const QByteArray &body); void setBodyDevice(QIODevice *device); void swap(QHttpPart &other); }; class QHttpMultiPart : QObject { %TypeHeaderCode #include %End public: enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType, }; explicit QHttpMultiPart(QObject *parent /TransferThis/ = 0); QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent /TransferThis/ = 0); virtual ~QHttpMultiPart(); void append(const QHttpPart &httpPart); void setContentType(QHttpMultiPart::ContentType contentType); QByteArray boundary() const; void setBoundary(const QByteArray &boundary); private: QHttpMultiPart(const QHttpMultiPart &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qlocalserver.sip0000644000076500000240000000450112613140040021215 0ustar philstaff00000000000000// qlocalserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocalServer : QObject { %TypeHeaderCode #include %End public: explicit QLocalServer(QObject *parent /TransferThis/ = 0); virtual ~QLocalServer(); void close(); QString errorString() const; virtual bool hasPendingConnections() const; bool isListening() const; bool listen(const QString &name); bool listen(qintptr socketDescriptor); int maxPendingConnections() const; virtual QLocalSocket *nextPendingConnection(); QString serverName() const; QString fullServerName() const; QAbstractSocket::SocketError serverError() const; void setMaxPendingConnections(int numConnections); bool waitForNewConnection(int msecs = 0, bool *timedOut = 0) /ReleaseGIL/; static bool removeServer(const QString &name); signals: void newConnection(); protected: virtual void incomingConnection(quintptr socketDescriptor); public: enum SocketOption { UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, }; typedef QFlags SocketOptions; void setSocketOptions(QFlags options); QFlags socketOptions() const; private: QLocalServer(const QLocalServer &); }; QFlags operator|(QLocalServer::SocketOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtNetwork/qlocalsocket.sip0000644000076500000240000001063012613140040021177 0ustar philstaff00000000000000// qlocalsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocalSocket : QIODevice { %TypeHeaderCode #include %End public: enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, SocketTimeoutError, DatagramTooLargeError, ConnectionError, UnsupportedSocketOperationError, OperationError, UnknownSocketError, }; enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState, }; QLocalSocket(QObject *parent /TransferThis/ = 0); virtual ~QLocalSocket(); void connectToServer(const QString &name, QFlags mode = QIODevice::ReadWrite) /ReleaseGIL/; %If (Qt_5_1_0 -) void connectToServer(QFlags mode = QIODevice::ReadWrite); %End void disconnectFromServer() /ReleaseGIL/; %If (Qt_5_1_0 -) virtual bool open(QFlags mode = QIODevice::ReadWrite); %End QString serverName() const; %If (Qt_5_1_0 -) void setServerName(const QString &name); %End QString fullServerName() const; void abort(); virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual void close(); QLocalSocket::LocalSocketError error() const; bool flush(); bool isValid() const; qint64 readBufferSize() const; void setReadBufferSize(qint64 size); bool setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState state = QLocalSocket::ConnectedState, QFlags mode = QIODevice::ReadWrite); qintptr socketDescriptor() const; QLocalSocket::LocalSocketState state() const; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForConnected(int msecs = 30000) /ReleaseGIL/; bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; signals: void connected(); void disconnected(); void error(QLocalSocket::LocalSocketError socketError); void stateChanged(QLocalSocket::LocalSocketState socketState); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *, qint64)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QLocalSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char * /Array/, qint64 /ArraySize/) /ReleaseGIL/; private: QLocalSocket(const QLocalSocket &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkaccessmanager.sip0000644000076500000240000001033612613140040023105 0ustar philstaff00000000000000// qnetworkaccessmanager.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkAccessManager : QObject { %TypeHeaderCode #include %End public: enum Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation, }; explicit QNetworkAccessManager(QObject *parent /TransferThis/ = 0); virtual ~QNetworkAccessManager(); QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &proxy); QNetworkCookieJar *cookieJar() const; void setCookieJar(QNetworkCookieJar *cookieJar /Transfer/); QNetworkReply *head(const QNetworkRequest &request); QNetworkReply *get(const QNetworkRequest &request); QNetworkReply *post(const QNetworkRequest &request, QIODevice *data); QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data); QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart); QNetworkReply *put(const QNetworkRequest &request, QIODevice *data); QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data); QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart); signals: void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator); void finished(QNetworkReply *reply); %If (Qt_5_1_0 -) %If (PyQt_SSL) void encrypted(QNetworkReply *reply); %End %End %If (PyQt_SSL) void sslErrors(QNetworkReply *reply, const QList &errors); %End void networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible); %If (Qt_5_5_0 -) %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator); %End %End protected: virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *device = 0) /AbortOnException,DisallowNone,ReleaseGIL/; public: QNetworkProxyFactory *proxyFactory() const; void setProxyFactory(QNetworkProxyFactory *factory /Transfer/); QAbstractNetworkCache *cache() const; void setCache(QAbstractNetworkCache *cache /Transfer/); QNetworkReply *deleteResource(const QNetworkRequest &request); enum NetworkAccessibility { UnknownAccessibility, NotAccessible, Accessible, }; QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = 0); void setConfiguration(const QNetworkConfiguration &config); QNetworkConfiguration configuration() const; QNetworkConfiguration activeConfiguration() const; void setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible); QNetworkAccessManager::NetworkAccessibility networkAccessible() const; void clearAccessCache(); %If (Qt_5_2_0 -) QStringList supportedSchemes() const; %End %If (Qt_5_2_0 -) %If (PyQt_SSL) void connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()); %End %End %If (Qt_5_2_0 -) void connectToHost(const QString &hostName, quint16 port = 80); %End protected slots: %If (Qt_5_2_0 -) QStringList supportedSchemesImplementation() const; %End }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkconfigmanager.sip0000644000076500000240000000503112613140040023105 0ustar philstaff00000000000000// qnetworkconfigmanager.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkConfigurationManager : QObject { %TypeHeaderCode #include %End public: enum Capability { CanStartAndStopInterfaces, DirectConnectionRouting, SystemSessionSupport, ApplicationLevelRoaming, ForcedRoaming, DataStatistics, NetworkSessionRequired, }; typedef QFlags Capabilities; explicit QNetworkConfigurationManager(QObject *parent /TransferThis/ = 0); virtual ~QNetworkConfigurationManager(); QFlags capabilities() const; QNetworkConfiguration defaultConfiguration() const; QList allConfigurations(QFlags flags = 0) const; QNetworkConfiguration configurationFromIdentifier(const QString &identifier) const; void updateConfigurations(); bool isOnline() const; signals: void configurationAdded(const QNetworkConfiguration &config); void configurationRemoved(const QNetworkConfiguration &config); void configurationChanged(const QNetworkConfiguration &config); void onlineStateChanged(bool isOnline); void updateCompleted(); private: QNetworkConfigurationManager(const QNetworkConfigurationManager &); }; QFlags operator|(QNetworkConfigurationManager::Capability f1, QFlags f2); QFlags operator|(QNetworkConfigurationManager::Capability f1, QNetworkConfigurationManager::Capability f2); PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkconfiguration.sip0000644000076500000240000000516312613140040023162 0ustar philstaff00000000000000// qnetworkconfiguration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkConfiguration { %TypeHeaderCode #include %End public: QNetworkConfiguration(); QNetworkConfiguration(const QNetworkConfiguration &other); ~QNetworkConfiguration(); bool operator==(const QNetworkConfiguration &cp) const; bool operator!=(const QNetworkConfiguration &cp) const; enum Type { InternetAccessPoint, ServiceNetwork, UserChoice, Invalid, }; enum Purpose { UnknownPurpose, PublicPurpose, PrivatePurpose, ServiceSpecificPurpose, }; enum StateFlag { Undefined, Defined, Discovered, Active, }; typedef QFlags StateFlags; enum BearerType { BearerUnknown, BearerEthernet, BearerWLAN, Bearer2G, BearerCDMA2000, BearerWCDMA, BearerHSPA, BearerBluetooth, BearerWiMAX, %If (Qt_5_2_0 -) BearerEVDO, %End %If (Qt_5_2_0 -) BearerLTE, %End %If (Qt_5_2_0 -) Bearer3G, %End %If (Qt_5_2_0 -) Bearer4G, %End }; QFlags state() const; QNetworkConfiguration::Type type() const; QNetworkConfiguration::Purpose purpose() const; QNetworkConfiguration::BearerType bearerType() const; QString bearerTypeName() const; %If (Qt_5_2_0 -) QNetworkConfiguration::BearerType bearerTypeFamily() const; %End QString identifier() const; bool isRoamingAvailable() const; QList children() const; QString name() const; bool isValid() const; void swap(QNetworkConfiguration &other); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkcookie.sip0000644000076500000240000000426612613140040021567 0ustar philstaff00000000000000// qnetworkcookie.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCookie { %TypeHeaderCode #include %End public: enum RawForm { NameAndValueOnly, Full, }; QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray()); QNetworkCookie(const QNetworkCookie &other); ~QNetworkCookie(); bool isSecure() const; void setSecure(bool enable); bool isSessionCookie() const; QDateTime expirationDate() const; void setExpirationDate(const QDateTime &date); QString domain() const; void setDomain(const QString &domain); QString path() const; void setPath(const QString &path); QByteArray name() const; void setName(const QByteArray &cookieName); QByteArray value() const; void setValue(const QByteArray &value); QByteArray toRawForm(QNetworkCookie::RawForm form = QNetworkCookie::Full) const; static QList parseCookies(const QByteArray &cookieString); bool operator==(const QNetworkCookie &other) const; bool operator!=(const QNetworkCookie &other) const; bool isHttpOnly() const; void setHttpOnly(bool enable); void swap(QNetworkCookie &other); bool hasSameIdentifier(const QNetworkCookie &other) const; void normalize(const QUrl &url); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkcookiejar.sip0000644000076500000240000000336312613140040022261 0ustar philstaff00000000000000// qnetworkcookiejar.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCookieJar : QObject { %TypeHeaderCode #include %End public: explicit QNetworkCookieJar(QObject *parent /TransferThis/ = 0); virtual ~QNetworkCookieJar(); virtual QList cookiesForUrl(const QUrl &url) const; virtual bool setCookiesFromUrl(const QList &cookieList, const QUrl &url); virtual bool insertCookie(const QNetworkCookie &cookie); virtual bool updateCookie(const QNetworkCookie &cookie); virtual bool deleteCookie(const QNetworkCookie &cookie); protected: void setAllCookies(const QList &cookieList); QList allCookies() const; virtual bool validateCookie(const QNetworkCookie &cookie, const QUrl &url) const; private: QNetworkCookieJar(const QNetworkCookieJar &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkdiskcache.sip0000644000076500000240000000362512613140040022232 0ustar philstaff00000000000000// qnetworkdiskcache.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkDiskCache : QAbstractNetworkCache { %TypeHeaderCode #include %End public: explicit QNetworkDiskCache(QObject *parent /TransferThis/ = 0); virtual ~QNetworkDiskCache(); QString cacheDirectory() const; void setCacheDirectory(const QString &cacheDir); qint64 maximumCacheSize() const; void setMaximumCacheSize(qint64 size); virtual qint64 cacheSize() const; virtual QNetworkCacheMetaData metaData(const QUrl &url); virtual void updateMetaData(const QNetworkCacheMetaData &metaData); virtual QIODevice *data(const QUrl &url) /Factory/; virtual bool remove(const QUrl &url); virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData); virtual void insert(QIODevice *device); QNetworkCacheMetaData fileMetaData(const QString &fileName) const; public slots: virtual void clear(); protected: virtual qint64 expire(); private: QNetworkDiskCache(const QNetworkDiskCache &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkinterface.sip0000644000076500000240000000530212613140040022246 0ustar philstaff00000000000000// qnetworkinterface.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkAddressEntry { %TypeHeaderCode #include %End public: QNetworkAddressEntry(); QNetworkAddressEntry(const QNetworkAddressEntry &other); ~QNetworkAddressEntry(); QHostAddress ip() const; void setIp(const QHostAddress &newIp); QHostAddress netmask() const; void setNetmask(const QHostAddress &newNetmask); QHostAddress broadcast() const; void setBroadcast(const QHostAddress &newBroadcast); bool operator==(const QNetworkAddressEntry &other) const; bool operator!=(const QNetworkAddressEntry &other) const; int prefixLength() const; void setPrefixLength(int length); void swap(QNetworkAddressEntry &other); }; class QNetworkInterface { %TypeHeaderCode #include %End public: enum InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast, }; typedef QFlags InterfaceFlags; QNetworkInterface(); QNetworkInterface(const QNetworkInterface &other); ~QNetworkInterface(); bool isValid() const; QString name() const; QFlags flags() const; QString hardwareAddress() const; QList addressEntries() const; static QNetworkInterface interfaceFromName(const QString &name); static QNetworkInterface interfaceFromIndex(int index); static QList allInterfaces(); static QList allAddresses(); int index() const; QString humanReadableName() const; void swap(QNetworkInterface &other); }; QFlags operator|(QNetworkInterface::InterfaceFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkproxy.sip0000644000076500000240000001316512613140040021475 0ustar philstaff00000000000000// qnetworkproxy.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkProxy { %TypeHeaderCode #include %End public: enum ProxyType { DefaultProxy, Socks5Proxy, NoProxy, HttpProxy, HttpCachingProxy, FtpCachingProxy, }; QNetworkProxy(); QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName /DocValue="''"/ = QString(), quint16 port = 0, const QString &user /DocValue="''"/ = QString(), const QString &password /DocValue="''"/ = QString()); QNetworkProxy(const QNetworkProxy &other); ~QNetworkProxy(); void setType(QNetworkProxy::ProxyType type); QNetworkProxy::ProxyType type() const; void setUser(const QString &userName); QString user() const; void setPassword(const QString &password); QString password() const; void setHostName(const QString &hostName); QString hostName() const; void setPort(quint16 port); quint16 port() const; static void setApplicationProxy(const QNetworkProxy &proxy); static QNetworkProxy applicationProxy(); bool isCachingProxy() const; bool isTransparentProxy() const; bool operator==(const QNetworkProxy &other) const; bool operator!=(const QNetworkProxy &other) const; enum Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, }; typedef QFlags Capabilities; void setCapabilities(QFlags capab); QFlags capabilities() const; void swap(QNetworkProxy &other); QVariant header(QNetworkRequest::KnownHeaders header) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; void setRawHeader(const QByteArray &headerName, const QByteArray &value); }; class QNetworkProxyQuery { %TypeHeaderCode #include %End public: enum QueryType { TcpSocket, UdpSocket, TcpServer, UrlRequest, }; QNetworkProxyQuery(); QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::UrlRequest); QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag /DocValue="''"/ = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpSocket); QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag /DocValue="''"/ = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpServer); QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = QNetworkProxyQuery::UrlRequest); QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QString &hostname, int port, const QString &protocolTag /DocValue="''"/ = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpSocket); QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, quint16 bindPort, const QString &protocolTag /DocValue="''"/ = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpServer); QNetworkProxyQuery(const QNetworkProxyQuery &other); ~QNetworkProxyQuery(); bool operator==(const QNetworkProxyQuery &other) const; bool operator!=(const QNetworkProxyQuery &other) const; QNetworkProxyQuery::QueryType queryType() const; void setQueryType(QNetworkProxyQuery::QueryType type); int peerPort() const; void setPeerPort(int port); QString peerHostName() const; void setPeerHostName(const QString &hostname); int localPort() const; void setLocalPort(int port); QString protocolTag() const; void setProtocolTag(const QString &protocolTag); QUrl url() const; void setUrl(const QUrl &url); QNetworkConfiguration networkConfiguration() const; void setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration); void swap(QNetworkProxyQuery &other); }; class QNetworkProxyFactory /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QNetworkProxyFactory(); virtual ~QNetworkProxyFactory(); virtual QList queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0; static void setApplicationProxyFactory(QNetworkProxyFactory *factory /Transfer/); static QList proxyForQuery(const QNetworkProxyQuery &query); static QList systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery()); static void setUseSystemConfiguration(bool enable); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkreply.sip0000644000076500000240000001136012613140040021442 0ustar philstaff00000000000000// qnetworkreply.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkReply : QIODevice { %TypeHeaderCode #include %End public: enum NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, OperationCanceledError, SslHandshakeFailedError, UnknownNetworkError, ProxyConnectionRefusedError, ProxyConnectionClosedError, ProxyNotFoundError, ProxyTimeoutError, ProxyAuthenticationRequiredError, UnknownProxyError, ContentAccessDenied, ContentOperationNotPermittedError, ContentNotFoundError, AuthenticationRequiredError, UnknownContentError, ProtocolUnknownError, ProtocolInvalidOperationError, ProtocolFailure, ContentReSendError, TemporaryNetworkFailureError, NetworkSessionFailedError, BackgroundRequestNotAllowedError, %If (Qt_5_3_0 -) ContentConflictError, %End %If (Qt_5_3_0 -) ContentGoneError, %End %If (Qt_5_3_0 -) InternalServerError, %End %If (Qt_5_3_0 -) OperationNotImplementedError, %End %If (Qt_5_3_0 -) ServiceUnavailableError, %End %If (Qt_5_3_0 -) UnknownServerError, %End }; virtual ~QNetworkReply(); virtual void abort() = 0; virtual void close(); virtual bool isSequential() const; qint64 readBufferSize() const; virtual void setReadBufferSize(qint64 size); QNetworkAccessManager *manager() const; QNetworkAccessManager::Operation operation() const; QNetworkRequest request() const; QNetworkReply::NetworkError error() const; QUrl url() const; QVariant header(QNetworkRequest::KnownHeaders header) const; bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; QVariant attribute(QNetworkRequest::Attribute code) const; %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &configuration); %End public slots: virtual void ignoreSslErrors(); signals: void metaDataChanged(); void finished(); %If (Qt_5_1_0 -) %If (PyQt_SSL) void encrypted(); %End %End void error(QNetworkReply::NetworkError); %If (PyQt_SSL) void sslErrors(const QList &errors); %End void uploadProgress(qint64 bytesSent, qint64 bytesTotal); void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); %If (Qt_5_5_0 -) %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End %End protected: explicit QNetworkReply(QObject *parent /TransferThis/ = 0); virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; void setOperation(QNetworkAccessManager::Operation operation); void setRequest(const QNetworkRequest &request); void setError(QNetworkReply::NetworkError errorCode, const QString &errorString); void setUrl(const QUrl &url); void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &value); void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); void setFinished(bool finished); public: bool isFinished() const; bool isRunning() const; %If (PyQt_SSL) void ignoreSslErrors(const QList &errors); %End const QList> &rawHeaderPairs() const; protected: %If (PyQt_SSL) virtual void sslConfigurationImplementation(QSslConfiguration &) const; %End %If (PyQt_SSL) virtual void setSslConfigurationImplementation(const QSslConfiguration &); %End %If (PyQt_SSL) virtual void ignoreSslErrorsImplementation(const QList &); %End }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworkrequest.sip0000644000076500000240000000715512613140040022006 0ustar philstaff00000000000000// qnetworkrequest.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkRequest { %TypeHeaderCode #include %End public: enum KnownHeaders { ContentTypeHeader, ContentLengthHeader, LocationHeader, LastModifiedHeader, CookieHeader, SetCookieHeader, ContentDispositionHeader, UserAgentHeader, ServerHeader, }; enum Attribute { HttpStatusCodeAttribute, HttpReasonPhraseAttribute, RedirectionTargetAttribute, ConnectionEncryptedAttribute, CacheLoadControlAttribute, CacheSaveControlAttribute, SourceIsFromCacheAttribute, DoNotBufferUploadDataAttribute, HttpPipeliningAllowedAttribute, HttpPipeliningWasUsedAttribute, CustomVerbAttribute, CookieLoadControlAttribute, AuthenticationReuseAttribute, CookieSaveControlAttribute, BackgroundRequestAttribute, %If (Qt_5_3_0 -) SpdyAllowedAttribute, %End %If (Qt_5_3_0 -) SpdyWasUsedAttribute, %End %If (Qt_5_5_0 -) EmitAllUploadProgressSignalsAttribute, %End User, UserMax, }; enum CacheLoadControl { AlwaysNetwork, PreferNetwork, PreferCache, AlwaysCache, }; enum LoadControl { Automatic, Manual, }; enum Priority { HighPriority, NormalPriority, LowPriority, }; explicit QNetworkRequest(const QUrl &url = QUrl()); QNetworkRequest(const QNetworkRequest &other); ~QNetworkRequest(); QUrl url() const; void setUrl(const QUrl &url); QVariant header(QNetworkRequest::KnownHeaders header) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; void setRawHeader(const QByteArray &headerName, const QByteArray &value); QVariant attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue /DocValue="None"/ = QVariant()) const; void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &configuration); %End bool operator==(const QNetworkRequest &other) const; bool operator!=(const QNetworkRequest &other) const; void setOriginatingObject(QObject *object /KeepReference/); QObject *originatingObject() const; QNetworkRequest::Priority priority() const; void setPriority(QNetworkRequest::Priority priority); void swap(QNetworkRequest &other); }; PyQt-gpl-5.5.1/sip/QtNetwork/qnetworksession.sip0000644000076500000240000000563012613140040021775 0ustar philstaff00000000000000// qnetworksession.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkSession : QObject { %TypeHeaderCode #include %End public: enum State { Invalid, NotAvailable, Connecting, Connected, Closing, Disconnected, Roaming, }; enum SessionError { UnknownSessionError, SessionAbortedError, RoamingError, OperationNotSupportedError, InvalidConfigurationError, }; QNetworkSession(const QNetworkConfiguration &connConfig, QObject *parent /TransferThis/ = 0); virtual ~QNetworkSession(); bool isOpen() const; QNetworkConfiguration configuration() const; QNetworkInterface interface() const; QNetworkSession::State state() const; QNetworkSession::SessionError error() const; QString errorString() const; QVariant sessionProperty(const QString &key) const; void setSessionProperty(const QString &key, const QVariant &value); quint64 bytesWritten() const; quint64 bytesReceived() const; quint64 activeTime() const; bool waitForOpened(int msecs = 30000) /ReleaseGIL/; public slots: void open(); void close(); void stop(); void migrate(); void ignore(); void accept(); void reject(); signals: void stateChanged(QNetworkSession::State); void opened(); void closed(); void error(QNetworkSession::SessionError); void preferredConfigurationChanged(const QNetworkConfiguration &config, bool isSeamless); void newConfigurationActivated(); protected: virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); public: enum UsagePolicy { NoPolicy, NoBackgroundTrafficPolicy, }; typedef QFlags UsagePolicies; QFlags usagePolicies() const; signals: void usagePoliciesChanged(QFlags); private: QNetworkSession(const QNetworkSession &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qpynetwork_qhash.sip0000644000076500000240000000654512613140040022134 0ustar philstaff00000000000000// This is the SIP interface definition for the QHash based mapped types // specific to the QtNetwork module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QHash /DocType="dict-of-QNetworkRequest.Attribute-object"/ { %TypeHeaderCode #include #include #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = sipConvertFromEnum(it.key(), sipType_QNetworkRequest_Attribute); if (!kobj) { Py_DECREF(d); return 0; } QVariant *v = new QVariant(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType_QVariant, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; SIP_SSIZE_T pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { if (!sipCanConvertToEnum(kobj, sipType_QNetworkRequest_Attribute)) { PyErr_Format(PyExc_TypeError, "a key has type '%s' but 'QNetworkRequest.Attribute' is expected", Py_TYPE(kobj)->tp_name); delete qh; *sipIsErr = 1; return 0; } int vstate; QVariant *v = reinterpret_cast( sipForceConvertToType(vobj, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { // Any error must be internal, so leave the exception as it is. delete qh; return 0; } qh->insert( static_cast(SIPLong_AsLong(kobj)), *v); sipReleaseType(v, sipType_QVariant, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtNetwork/qpynetwork_qmap.sip0000644000076500000240000000741612613140040021764 0ustar philstaff00000000000000// This is the SIP interface definition for the QMap and QMultiMap based mapped // types specific to the QtNetwork module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) %MappedType QMultiMap /DocType="dict-of-QSsl.AlternativeNameEntryType-list-of-str"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Get the enum objects that are the dictionary keys. static PyObject *email_entry = 0; static PyObject *dns_entry = 0; if (!email_entry) { email_entry = PyObject_GetAttrString( (PyObject *)sipTypeAsPyTypeObject(sipType_QSsl), "EmailEntry"); if (!email_entry) return 0; } if (!dns_entry) { dns_entry = PyObject_GetAttrString( (PyObject *)sipTypeAsPyTypeObject(sipType_QSsl), "DnsEntry"); if (!dns_entry) return 0; } // Create the dictionary. PyObject *d = PyDict_New(); if (!d) return 0; QList vl; // Handle the Qssl::EmailEntry key. vl = sipCpp->values(QSsl::EmailEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, email_entry, vlobj); Py_DECREF(email_entry); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SET_ITEM(vlobj, i, vobj); } } // Handle the Qssl::DnsEntry key. vl = sipCpp->values(QSsl::DnsEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, dns_entry, vlobj); Py_DECREF(dns_entry); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SET_ITEM(vlobj, i, vobj); } } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); PyErr_SetString(PyExc_NotImplementedError, "converting to QMultiMap is unsupported"); return 0; %End }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qssl.sip0000644000076500000240000000426112613140040017500 0ustar philstaff00000000000000// qssl.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) namespace QSsl { %TypeHeaderCode #include %End enum KeyType { PrivateKey, PublicKey, }; enum EncodingFormat { Pem, Der, }; enum KeyAlgorithm { Opaque, Rsa, Dsa, %If (Qt_5_5_0 -) Ec, %End }; enum AlternativeNameEntryType { EmailEntry, DnsEntry, }; enum SslProtocol { UnknownProtocol, SslV3, SslV2, TlsV1_0, %If (Qt_5_5_0 -) TlsV1_0OrLater, %End TlsV1_1, %If (Qt_5_5_0 -) TlsV1_1OrLater, %End TlsV1_2, %If (Qt_5_5_0 -) TlsV1_2OrLater, %End AnyProtocol, TlsV1SslV3, SecureProtocols, }; enum SslOption { SslOptionDisableEmptyFragments, SslOptionDisableSessionTickets, SslOptionDisableCompression, SslOptionDisableServerNameIndication, SslOptionDisableLegacyRenegotiation, %If (Qt_5_2_0 -) SslOptionDisableSessionSharing, %End %If (Qt_5_2_0 -) SslOptionDisableSessionPersistence, %End }; typedef QFlags SslOptions; }; %End %If (PyQt_SSL) QFlags operator|(QSsl::SslOption f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslcertificate.sip0000644000076500000240000000700012613140040021675 0ustar philstaff00000000000000// qsslcertificate.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCertificate { %TypeHeaderCode #include %End public: enum SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, CountryName, StateOrProvinceName, DistinguishedNameQualifier, SerialNumber, EmailAddress, }; QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem) /ReleaseGIL/; QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate(const QSslCertificate &other); ~QSslCertificate(); bool operator==(const QSslCertificate &other) const; bool operator!=(const QSslCertificate &other) const; bool isNull() const; void clear(); QByteArray version() const; QByteArray serialNumber() const; QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const; QStringList issuerInfo(QSslCertificate::SubjectInfo info) const; QStringList issuerInfo(const QByteArray &attribute) const; QStringList subjectInfo(QSslCertificate::SubjectInfo info) const; QStringList subjectInfo(const QByteArray &attribute) const; QMultiMap subjectAlternativeNames() const; QDateTime effectiveDate() const; QDateTime expiryDate() const; QSslKey publicKey() const; QByteArray toPem() const; QByteArray toDer() const; static QList fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); static QList fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem); static QList fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem); Qt::HANDLE handle() const; void swap(QSslCertificate &other); bool isBlacklisted() const; QList subjectInfoAttributes() const; QList issuerInfoAttributes() const; QList extensions() const; QString toText() const; static QList verify(QList certificateChain, const QString &hostName = QString()); %If (Qt_5_4_0 -) bool isSelfSigned() const; %End %If (Qt_5_4_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End %If (Qt_5_4_0 -) static bool importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList *caCertificates = 0, const QByteArray &passPhrase = QByteArray()) /ReleaseGIL/; %End }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslcertificateextension.sip0000644000076500000240000000260412613140040023637 0ustar philstaff00000000000000// qsslcertificateextension.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCertificateExtension { %TypeHeaderCode #include %End public: QSslCertificateExtension(); QSslCertificateExtension(const QSslCertificateExtension &other); ~QSslCertificateExtension(); void swap(QSslCertificateExtension &other); QString oid() const; QString name() const; QVariant value() const; bool isCritical() const; bool isSupported() const; }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslcipher.sip0000644000076500000240000000324612613140040020675 0ustar philstaff00000000000000// qsslcipher.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCipher { %TypeHeaderCode #include %End public: QSslCipher(); %If (Qt_5_3_0 -) explicit QSslCipher(const QString &name); %End QSslCipher(const QString &name, QSsl::SslProtocol protocol); QSslCipher(const QSslCipher &other); ~QSslCipher(); bool operator==(const QSslCipher &other) const; bool operator!=(const QSslCipher &other) const; bool isNull() const; QString name() const; int supportedBits() const; int usedBits() const; QString keyExchangeMethod() const; QString authenticationMethod() const; QString encryptionMethod() const; QString protocolString() const; QSsl::SslProtocol protocol() const; void swap(QSslCipher &other); }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslconfiguration.sip0000644000076500000240000001017512613140040022271 0ustar philstaff00000000000000// qsslconfiguration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslConfiguration { %TypeHeaderCode #include %End public: QSslConfiguration(); QSslConfiguration(const QSslConfiguration &other); ~QSslConfiguration(); bool isNull() const; QSsl::SslProtocol protocol() const; void setProtocol(QSsl::SslProtocol protocol); QSslSocket::PeerVerifyMode peerVerifyMode() const; void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); int peerVerifyDepth() const; void setPeerVerifyDepth(int depth); QSslCertificate localCertificate() const; void setLocalCertificate(const QSslCertificate &certificate); QSslCertificate peerCertificate() const; QList peerCertificateChain() const; QSslCipher sessionCipher() const; QSslKey privateKey() const; void setPrivateKey(const QSslKey &key); QList ciphers() const; void setCiphers(const QList &ciphers); QList caCertificates() const; void setCaCertificates(const QList &certificates); static QSslConfiguration defaultConfiguration(); static void setDefaultConfiguration(const QSslConfiguration &configuration); bool operator==(const QSslConfiguration &other) const; bool operator!=(const QSslConfiguration &other) const; void setSslOption(QSsl::SslOption option, bool on); bool testSslOption(QSsl::SslOption option) const; void swap(QSslConfiguration &other); %If (Qt_5_1_0 -) QList localCertificateChain() const; %End %If (Qt_5_1_0 -) void setLocalCertificateChain(const QList &localChain); %End %If (Qt_5_2_0 -) QByteArray sessionTicket() const; %End %If (Qt_5_2_0 -) void setSessionTicket(const QByteArray &sessionTicket); %End %If (Qt_5_2_0 -) int sessionTicketLifeTimeHint() const; %End %If (Qt_5_3_0 -) enum NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported, }; %End %If (Qt_5_3_0 -) void setAllowedNextProtocols(QList protocols); %End %If (Qt_5_3_0 -) QList allowedNextProtocols() const; %End %If (Qt_5_3_0 -) QByteArray nextNegotiatedProtocol() const; %End %If (Qt_5_3_0 -) QSslConfiguration::NextProtocolNegotiationStatus nextProtocolNegotiationStatus() const; %End %If (Qt_5_3_0 -) static char * const NextProtocolSpdy3_0 /Encoding="None",NoSetter/ { %GetCode sipPy = SIPBytes_FromString(QSslConfiguration::NextProtocolSpdy3_0); %End }; %End %If (Qt_5_3_0 -) static char * const NextProtocolHttp1_1 /Encoding="None",NoSetter/ { %GetCode sipPy = SIPBytes_FromString(QSslConfiguration::NextProtocolHttp1_1); %End }; %End %If (Qt_5_4_0 -) QSsl::SslProtocol sessionProtocol() const; %End %If (Qt_5_5_0 -) static QList supportedCiphers(); %End %If (Qt_5_5_0 -) static QList systemCaCertificates(); %End %If (Qt_5_5_0 -) QVector ellipticCurves() const; %End %If (Qt_5_5_0 -) void setEllipticCurves(const QVector &curves); %End %If (Qt_5_5_0 -) static QVector supportedEllipticCurves(); %End }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslellipticcurve.sip0000644000076500000240000000316712613140040022277 0ustar philstaff00000000000000// qsslellipticcurve.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) %If (PyQt_SSL) class QSslEllipticCurve { %TypeHeaderCode #include %End public: QSslEllipticCurve(); static QSslEllipticCurve fromShortName(const QString &name); static QSslEllipticCurve fromLongName(const QString &name); QString shortName() const; QString longName() const; bool isValid() const; bool isTlsNamedCurve() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator==(QSslEllipticCurve lhs, QSslEllipticCurve rhs); %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator!=(QSslEllipticCurve lhs, QSslEllipticCurve rhs); %End %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslerror.sip0000644000076500000240000000461712613140040020557 0ustar philstaff00000000000000// qsslerror.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslError { %TypeHeaderCode #include %End public: enum SslError { UnspecifiedError, NoError, UnableToGetIssuerCertificate, UnableToDecryptCertificateSignature, UnableToDecodeIssuerPublicKey, CertificateSignatureFailed, CertificateNotYetValid, CertificateExpired, InvalidNotBeforeField, InvalidNotAfterField, SelfSignedCertificate, SelfSignedCertificateInChain, UnableToGetLocalIssuerCertificate, UnableToVerifyFirstCertificate, CertificateRevoked, InvalidCaCertificate, PathLengthExceeded, InvalidPurpose, CertificateUntrusted, CertificateRejected, SubjectIssuerMismatch, AuthorityIssuerSerialNumberMismatch, NoPeerCertificate, HostNameMismatch, NoSslSupport, CertificateBlacklisted, }; QSslError(); QSslError(QSslError::SslError error); QSslError(QSslError::SslError error, const QSslCertificate &certificate); QSslError(const QSslError &other); ~QSslError(); QSslError::SslError error() const; QString errorString() const; QSslCertificate certificate() const; bool operator==(const QSslError &other) const; bool operator!=(const QSslError &other) const; void swap(QSslError &other); %If (Qt_5_4_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslkey.sip0000644000076500000240000000372712613140040020217 0ustar philstaff00000000000000// qsslkey.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslKey { %TypeHeaderCode #include %End public: QSslKey(); QSslKey(const QByteArray &encoded, QSsl::KeyAlgorithm algorithm, QSsl::EncodingFormat encoding = QSsl::Pem, QSsl::KeyType type = QSsl::PrivateKey, const QByteArray &passPhrase = QByteArray()); QSslKey(QIODevice *device, QSsl::KeyAlgorithm algorithm, QSsl::EncodingFormat encoding = QSsl::Pem, QSsl::KeyType type = QSsl::PrivateKey, const QByteArray &passPhrase = QByteArray()); QSslKey(Qt::HANDLE handle, QSsl::KeyType type = QSsl::PrivateKey); QSslKey(const QSslKey &other); ~QSslKey(); bool isNull() const; void clear(); int length() const; QSsl::KeyType type() const; QSsl::KeyAlgorithm algorithm() const; QByteArray toPem(const QByteArray &passPhrase = QByteArray()) const; QByteArray toDer(const QByteArray &passPhrase = QByteArray()) const; Qt::HANDLE handle() const; bool operator==(const QSslKey &key) const; bool operator!=(const QSslKey &key) const; void swap(QSslKey &other); }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslpresharedkeyauthenticator.sip0000644000076500000240000000361712613140040024706 0ustar philstaff00000000000000// qsslpresharedkeyauthenticator.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) %If (PyQt_SSL) class QSslPreSharedKeyAuthenticator { %TypeHeaderCode #include %End public: QSslPreSharedKeyAuthenticator(); QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator); ~QSslPreSharedKeyAuthenticator(); void swap(QSslPreSharedKeyAuthenticator &authenticator); QByteArray identityHint() const; void setIdentity(const QByteArray &identity); QByteArray identity() const; int maximumIdentityLength() const; void setPreSharedKey(const QByteArray &preSharedKey); QByteArray preSharedKey() const; int maximumPreSharedKeyLength() const; }; %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); %End %End PyQt-gpl-5.5.1/sip/QtNetwork/qsslsocket.sip0000644000076500000240000001745012613140040020715 0ustar philstaff00000000000000// qsslsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslSocket : QTcpSocket { %TypeHeaderCode #include %End public: enum SslMode { UnencryptedMode, SslClientMode, SslServerMode, }; explicit QSslSocket(QObject *parent /TransferThis/ = 0); virtual ~QSslSocket(); void connectToHostEncrypted(const QString &hostName, quint16 port, QFlags mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; void connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, QFlags mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QFlags mode = QIODevice::ReadWrite); QSslSocket::SslMode mode() const; bool isEncrypted() const; QSsl::SslProtocol protocol() const; void setProtocol(QSsl::SslProtocol protocol); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual void close(); virtual bool atEnd() const; bool flush(); void abort(); void setLocalCertificate(const QSslCertificate &certificate); void setLocalCertificate(const QString &path, QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate localCertificate() const; QSslCertificate peerCertificate() const; QList peerCertificateChain() const; QSslCipher sessionCipher() const; void setPrivateKey(const QSslKey &key); void setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, QSsl::EncodingFormat format = QSsl::Pem, const QByteArray &passPhrase = QByteArray()); QSslKey privateKey() const; QList ciphers() const; void setCiphers(const QList &ciphers); void setCiphers(const QString &ciphers); static void setDefaultCiphers(const QList &ciphers); static QList defaultCiphers(); static QList supportedCiphers(); bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); void addCaCertificate(const QSslCertificate &certificate); void addCaCertificates(const QList &certificates); void setCaCertificates(const QList &certificates); QList caCertificates() const; static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); static void addDefaultCaCertificate(const QSslCertificate &certificate); static void addDefaultCaCertificates(const QList &certificates); static void setDefaultCaCertificates(const QList &certificates); static QList defaultCaCertificates(); static QList systemCaCertificates(); virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; bool waitForEncrypted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; QList sslErrors() const; static bool supportsSsl(); public slots: void startClientEncryption(); void startServerEncryption(); void ignoreSslErrors(); signals: void encrypted(); void sslErrors(const QList &errors); void modeChanged(QSslSocket::SslMode newMode); %If (Qt_5_5_0 -) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSslSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; public: enum PeerVerifyMode { VerifyNone, QueryPeer, VerifyPeer, AutoVerifyPeer, }; QSslSocket::PeerVerifyMode peerVerifyMode() const; void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); int peerVerifyDepth() const; void setPeerVerifyDepth(int depth); virtual void setReadBufferSize(qint64 size); qint64 encryptedBytesAvailable() const; qint64 encryptedBytesToWrite() const; QSslConfiguration sslConfiguration() const; void setSslConfiguration(const QSslConfiguration &config); signals: void peerVerifyError(const QSslError &error); void encryptedBytesWritten(qint64 totalBytes); public: virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); virtual QVariant socketOption(QAbstractSocket::SocketOption option); void ignoreSslErrors(const QList &errors); QString peerVerifyName() const; void setPeerVerifyName(const QString &hostName); virtual void resume() /ReleaseGIL/; virtual void connectToHost(const QString &hostName, quint16 port, QFlags mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual void disconnectFromHost() /ReleaseGIL/; static long sslLibraryVersionNumber(); static QString sslLibraryVersionString(); %If (Qt_5_1_0 -) void setLocalCertificateChain(const QList &localChain); %End %If (Qt_5_1_0 -) QList localCertificateChain() const; %End %If (Qt_5_4_0 -) QSsl::SslProtocol sessionProtocol() const; %End %If (Qt_5_4_0 -) static long sslLibraryBuildVersionNumber(); %End %If (Qt_5_4_0 -) static QString sslLibraryBuildVersionString(); %End private: QSslSocket(const QSslSocket &); }; %End PyQt-gpl-5.5.1/sip/QtNetwork/qtcpserver.sip0000644000076500000240000000421112613140040020707 0ustar philstaff00000000000000// qtcpserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTcpServer : QObject { %TypeHeaderCode #include %End public: explicit QTcpServer(QObject *parent /TransferThis/ = 0); virtual ~QTcpServer(); bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); void close(); bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; quint16 serverPort() const; QHostAddress serverAddress() const; qintptr socketDescriptor() const; bool setSocketDescriptor(qintptr socketDescriptor); bool waitForNewConnection(int msecs = 0, bool *timedOut = 0) /ReleaseGIL/; virtual bool hasPendingConnections() const; virtual QTcpSocket *nextPendingConnection(); QAbstractSocket::SocketError serverError() const; QString errorString() const; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; void pauseAccepting(); void resumeAccepting(); protected: virtual void incomingConnection(qintptr handle); void addPendingConnection(QTcpSocket *socket); signals: void newConnection(); void acceptError(QAbstractSocket::SocketError socketError); private: QTcpServer(const QTcpServer &); }; PyQt-gpl-5.5.1/sip/QtNetwork/qtcpsocket.sip0000644000076500000240000000223412613140040020674 0ustar philstaff00000000000000// qtcpsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTcpSocket : QAbstractSocket { %TypeHeaderCode #include %End public: explicit QTcpSocket(QObject *parent /TransferThis/ = 0); virtual ~QTcpSocket(); private: QTcpSocket(const QTcpSocket &); }; PyQt-gpl-5.5.1/sip/QtNetwork/QtNetworkmod.sip0000644000076500000240000000550712613140040021160 0ustar philstaff00000000000000// QtNetworkmod.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtNetwork, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractnetworkcache.sip %Include qabstractsocket.sip %Include qauthenticator.sip %Include qdnslookup.sip %Include qhostaddress.sip %Include qhostinfo.sip %Include qhttpmultipart.sip %Include qlocalserver.sip %Include qlocalsocket.sip %Include qnetworkaccessmanager.sip %Include qnetworkconfigmanager.sip %Include qnetworkconfiguration.sip %Include qnetworkcookie.sip %Include qnetworkcookiejar.sip %Include qnetworkdiskcache.sip %Include qnetworkinterface.sip %Include qnetworkproxy.sip %Include qnetworkreply.sip %Include qnetworkrequest.sip %Include qnetworksession.sip %Include qssl.sip %Include qsslcertificate.sip %Include qsslcertificateextension.sip %Include qsslcipher.sip %Include qsslconfiguration.sip %Include qsslellipticcurve.sip %Include qsslerror.sip %Include qsslkey.sip %Include qsslpresharedkeyauthenticator.sip %Include qsslsocket.sip %Include qtcpserver.sip %Include qtcpsocket.sip %Include qudpsocket.sip %Include qpynetwork_qhash.sip %Include qpynetwork_qmap.sip PyQt-gpl-5.5.1/sip/QtNetwork/qudpsocket.sip0000644000076500000240000000547712613140040020712 0ustar philstaff00000000000000// qudpsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUdpSocket : QAbstractSocket { %TypeHeaderCode #include %End public: explicit QUdpSocket(QObject *parent /TransferThis/ = 0); virtual ~QUdpSocket(); bool hasPendingDatagrams() const; qint64 pendingDatagramSize() const; SIP_PYOBJECT readDatagram(qint64 maxlen, QHostAddress *host /Out/ = 0, quint16 *port = 0) /DocType="Py_v3:bytes;str",ReleaseGIL/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readDatagram(s, a0, a1, &a2); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End qint64 writeDatagram(const char *data /Array/, qint64 len /ArraySize/, const QHostAddress &host, quint16 port) /ReleaseGIL/; qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port) /ReleaseGIL/; bool joinMulticastGroup(const QHostAddress &groupAddress); bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); bool leaveMulticastGroup(const QHostAddress &groupAddress); bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); QNetworkInterface multicastInterface() const; void setMulticastInterface(const QNetworkInterface &iface); private: QUdpSocket(const QUdpSocket &); }; PyQt-gpl-5.5.1/sip/QtNfc/0000755000076500000240000000000012613140040015053 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtNfc/qndeffilter.sip0000644000076500000240000000325512613140040020100 0ustar philstaff00000000000000// qndeffilter.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefFilter { %TypeHeaderCode #include %End public: QNdefFilter(); QNdefFilter(const QNdefFilter &other); ~QNdefFilter(); void clear(); void setOrderMatch(bool on); bool orderMatch() const; struct Record { %TypeHeaderCode #include %End QNdefRecord::TypeNameFormat typeNameFormat; QByteArray type; unsigned int minimum; unsigned int maximum; }; void appendRecord(QNdefRecord::TypeNameFormat typeNameFormat, const QByteArray &type, unsigned int min = 1, unsigned int max = 1); void appendRecord(const QNdefFilter::Record &record); int recordCount() const /__len__/; QNdefFilter::Record recordAt(int i) const; }; %End PyQt-gpl-5.5.1/sip/QtNfc/qndefmessage.sip0000644000076500000240000000424312613140040020235 0ustar philstaff00000000000000// qndefmessage.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefMessage { %TypeHeaderCode #include %End public: QNdefMessage(); explicit QNdefMessage(const QNdefRecord &record); QNdefMessage(const QNdefMessage &message); QNdefMessage(const QList &records); bool operator==(const QNdefMessage &other) const; QByteArray toByteArray() const; int __len__() const; %MethodCode sipRes = sipCpp->count(); %End QNdefRecord __getitem__(int i) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QNdefRecord(sipCpp->at((int)idx)); %End void __setitem__(int i, const QNdefRecord &value); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __delitem__(int i); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End static QNdefMessage fromByteArray(const QByteArray &message); }; %End PyQt-gpl-5.5.1/sip/QtNfc/qndefnfcsmartposterrecord.sip0000644000076500000240000000642112613140040023062 0ustar philstaff00000000000000// qndefnfcsmartposterrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefNfcIconRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcIconRecord(); QNdefNfcIconRecord(const QNdefRecord &other); void setData(const QByteArray &data); QByteArray data() const; }; %End %If (Qt_5_5_0 -) class QNdefNfcSmartPosterRecord : QNdefRecord { %TypeHeaderCode #include %End public: enum Action { UnspecifiedAction, DoAction, SaveAction, EditAction, }; QNdefNfcSmartPosterRecord(); QNdefNfcSmartPosterRecord(const QNdefNfcSmartPosterRecord &other); QNdefNfcSmartPosterRecord(const QNdefRecord &other); ~QNdefNfcSmartPosterRecord(); void setPayload(const QByteArray &payload); bool hasTitle(const QString &locale = QString()) const; bool hasAction() const; bool hasIcon(const QByteArray &mimetype = QByteArray()) const; bool hasSize() const; bool hasTypeInfo() const; int titleCount() const; QString title(const QString &locale = QString()) const; QNdefNfcTextRecord titleRecord(const int index) const; QList titleRecords() const; bool addTitle(const QNdefNfcTextRecord &text); bool addTitle(const QString &text, const QString &locale, QNdefNfcTextRecord::Encoding encoding); bool removeTitle(const QNdefNfcTextRecord &text); bool removeTitle(const QString &locale); void setTitles(const QList &titles); QUrl uri() const; QNdefNfcUriRecord uriRecord() const; void setUri(const QNdefNfcUriRecord &url); void setUri(const QUrl &url); QNdefNfcSmartPosterRecord::Action action() const; void setAction(QNdefNfcSmartPosterRecord::Action act); int iconCount() const; QByteArray icon(const QByteArray &mimetype = QByteArray()) const; QNdefNfcIconRecord iconRecord(const int index) const; QList iconRecords() const; void addIcon(const QNdefNfcIconRecord &icon); void addIcon(const QByteArray &type, const QByteArray &data); bool removeIcon(const QNdefNfcIconRecord &icon); bool removeIcon(const QByteArray &type); void setIcons(const QList &icons); quint32 size() const; void setSize(quint32 size); QByteArray typeInfo() const; void setTypeInfo(const QByteArray &type); }; %End PyQt-gpl-5.5.1/sip/QtNfc/qndefnfctextrecord.sip0000644000076500000240000000267712613140040021474 0ustar philstaff00000000000000// qndefnfctextrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefNfcTextRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcTextRecord(); QNdefNfcTextRecord(const QNdefRecord &other); QString locale() const; void setLocale(const QString &locale); QString text() const; void setText(const QString text); enum Encoding { Utf8, Utf16, }; QNdefNfcTextRecord::Encoding encoding() const; void setEncoding(QNdefNfcTextRecord::Encoding encoding); }; %End PyQt-gpl-5.5.1/sip/QtNfc/qndefnfcurirecord.sip0000644000076500000240000000227512613140040021301 0ustar philstaff00000000000000// qndefnfcurirecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefNfcUriRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcUriRecord(); QNdefNfcUriRecord(const QNdefRecord &other); QUrl uri() const; void setUri(const QUrl &uri); }; %End PyQt-gpl-5.5.1/sip/QtNfc/qndefrecord.sip0000644000076500000240000000472112613140040020070 0ustar philstaff00000000000000// qndefrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefRecord { %TypeHeaderCode #include %End %ConvertToSubClassCode QByteArray ndef_type = sipCpp->type(); switch (sipCpp->typeNameFormat()) { case QNdefRecord::NfcRtd: if (ndef_type == "Sp") sipType = sipType_QNdefNfcSmartPosterRecord; else if (ndef_type == "T") sipType = sipType_QNdefNfcTextRecord; else if (ndef_type == "U") sipType = sipType_QNdefNfcUriRecord; else sipType = 0; break; case QNdefRecord::Mime: if (ndef_type == "") sipType = sipType_QNdefNfcIconRecord; else sipType = 0; break; default: sipType = 0; } %End public: enum TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown, }; QNdefRecord(); QNdefRecord(const QNdefRecord &other); ~QNdefRecord(); void setTypeNameFormat(QNdefRecord::TypeNameFormat typeNameFormat); QNdefRecord::TypeNameFormat typeNameFormat() const; void setType(const QByteArray &type); QByteArray type() const; void setId(const QByteArray &id); QByteArray id() const; void setPayload(const QByteArray &payload); QByteArray payload() const; bool isEmpty() const; bool operator==(const QNdefRecord &other) const; bool operator!=(const QNdefRecord &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End PyQt-gpl-5.5.1/sip/QtNfc/qnearfieldmanager.sip0000644000076500000240000001135412613140040021241 0ustar philstaff00000000000000// qnearfieldmanager.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldManager : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QNearFieldManager, &sipType_QNearFieldManager, -1, 1}, {sipName_QNearFieldTarget, &sipType_QNearFieldTarget, -1, 2}, {sipName_QNearFieldShareManager, &sipType_QNearFieldShareManager, -1, 3}, {sipName_QQmlNdefRecord, &sipType_QQmlNdefRecord, -1, 4}, {sipName_QNearFieldShareTarget, &sipType_QNearFieldShareTarget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum TargetAccessMode { NoTargetAccess, NdefReadTargetAccess, NdefWriteTargetAccess, TagTypeSpecificTargetAccess, }; typedef QFlags TargetAccessModes; explicit QNearFieldManager(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldManager(); bool isAvailable() const; void setTargetAccessModes(QFlags accessModes); QFlags targetAccessModes() const; bool startTargetDetection(); void stopTargetDetection(); int registerNdefMessageHandler(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtnfc_get_pyqtslot_parts(a0, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->registerNdefMessageHandler(receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End int registerNdefMessageHandler(QNdefRecord::TypeNameFormat typeNameFormat, const QByteArray &type, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtnfc_get_pyqtslot_parts(a2, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->registerNdefMessageHandler(a0, *a1, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End int registerNdefMessageHandler(const QNdefFilter &filter, SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtnfc_get_pyqtslot_parts(a1, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->registerNdefMessageHandler(*a0, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End bool unregisterNdefMessageHandler(int handlerId); signals: void targetDetected(QNearFieldTarget *target); void targetLost(QNearFieldTarget *target); }; %End %If (Qt_5_5_0 -) QFlags operator|(QNearFieldManager::TargetAccessMode f1, QFlags f2); %End %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtnfc_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qtnfc_get_pyqtslot_parts_t pyqt5_qtnfc_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtnfc_get_pyqtslot_parts_t pyqt5_qtnfc_get_pyqtslot_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtnfc_get_pyqtslot_parts = (pyqt5_qtnfc_get_pyqtslot_parts_t)sipImportSymbol("pyqt5_get_pyqtslot_parts"); %End PyQt-gpl-5.5.1/sip/QtNfc/qnearfieldsharemanager.sip0000644000076500000240000000450412613140040022263 0ustar philstaff00000000000000// qnearfieldsharemanager.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldShareManager : QObject { %TypeHeaderCode #include %End public: explicit QNearFieldShareManager(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldShareManager(); enum ShareError { NoError, UnknownError, InvalidShareContentError, ShareCanceledError, ShareInterruptedError, ShareRejectedError, UnsupportedShareModeError, ShareAlreadyInProgressError, SharePermissionDeniedError, }; enum ShareMode { NoShare, NdefShare, FileShare, }; typedef QFlags ShareModes; static QFlags supportedShareModes(); void setShareModes(QFlags modes); QFlags shareModes() const; QNearFieldShareManager::ShareError shareError() const; signals: void targetDetected(QNearFieldShareTarget *shareTarget); void shareModesChanged(QFlags modes); void error(QNearFieldShareManager::ShareError error); private: QNearFieldShareManager(const QNearFieldShareManager &); }; %End %If (Qt_5_5_0 -) QFlags operator|(QNearFieldShareManager::ShareMode f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtNfc/qnearfieldsharetarget.sip0000644000076500000240000000303312613140040022133 0ustar philstaff00000000000000// qnearfieldsharetarget.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldShareTarget : QObject { %TypeHeaderCode #include %End public: virtual ~QNearFieldShareTarget(); QFlags shareModes() const; bool share(const QNdefMessage &message); bool share(const QList &files); void cancel(); bool isShareInProgress() const; QNearFieldShareManager::ShareError shareError() const; signals: void error(QNearFieldShareManager::ShareError error); void shareFinished(); private: QNearFieldShareTarget(const QNearFieldShareTarget &); }; %End PyQt-gpl-5.5.1/sip/QtNfc/qnearfieldtarget.sip0000644000076500000240000000720312613140040021113 0ustar philstaff00000000000000// qnearfieldtarget.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldTarget : QObject { %TypeHeaderCode #include %End public: enum Type { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, MifareTag, }; enum AccessMethod { UnknownAccess, NdefAccess, TagTypeSpecificAccess, LlcpAccess, }; typedef QFlags AccessMethods; enum Error { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, NoResponseError, ChecksumMismatchError, InvalidParametersError, NdefReadError, NdefWriteError, }; class RequestId { %TypeHeaderCode #include %End public: RequestId(); RequestId(const QNearFieldTarget::RequestId &other); ~RequestId(); bool isValid() const; int refCount() const; bool operator<(const QNearFieldTarget::RequestId &other) const; bool operator==(const QNearFieldTarget::RequestId &other) const; bool operator!=(const QNearFieldTarget::RequestId &other) const; }; explicit QNearFieldTarget(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldTarget(); virtual QByteArray uid() const = 0; virtual QUrl url() const; virtual QNearFieldTarget::Type type() const = 0; virtual QFlags accessMethods() const = 0; bool isProcessingCommand() const; virtual bool hasNdefMessage(); virtual QNearFieldTarget::RequestId readNdefMessages(); virtual QNearFieldTarget::RequestId writeNdefMessages(const QList &messages); virtual QNearFieldTarget::RequestId sendCommand(const QByteArray &command); virtual QNearFieldTarget::RequestId sendCommands(const QList &commands); virtual bool waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000) /ReleaseGIL/; QVariant requestResponse(const QNearFieldTarget::RequestId &id); void setResponseForRequest(const QNearFieldTarget::RequestId &id, const QVariant &response, bool emitRequestCompleted = true); protected: virtual bool handleResponse(const QNearFieldTarget::RequestId &id, const QByteArray &response); signals: void disconnected(); void ndefMessageRead(const QNdefMessage &message); void ndefMessagesWritten(); void requestCompleted(const QNearFieldTarget::RequestId &id); void error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id); }; %End %If (Qt_5_5_0 -) QFlags operator|(QNearFieldTarget::AccessMethod f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtNfc/qqmlndefrecord.sip0000644000076500000240000000327112613140040020601 0ustar philstaff00000000000000// qqmlndefrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QQmlNdefRecord : QObject { %TypeHeaderCode #include %End public: enum TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown, }; explicit QQmlNdefRecord(QObject *parent /TransferThis/ = 0); QQmlNdefRecord(const QNdefRecord &record, QObject *parent /TransferThis/ = 0); QString type() const; void setType(const QString &t); void setTypeNameFormat(QQmlNdefRecord::TypeNameFormat typeNameFormat); QQmlNdefRecord::TypeNameFormat typeNameFormat() const; QNdefRecord record() const; void setRecord(const QNdefRecord &record); signals: void typeChanged(); void typeNameFormatChanged(); void recordChanged(); }; %End PyQt-gpl-5.5.1/sip/QtNfc/QtNfcmod.sip0000644000076500000240000000425112613140040017305 0ustar philstaff00000000000000// QtNfcmod.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtNfc, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qndeffilter.sip %Include qndefmessage.sip %Include qndefnfcsmartposterrecord.sip %Include qndefnfctextrecord.sip %Include qndefnfcurirecord.sip %Include qndefrecord.sip %Include qnearfieldmanager.sip %Include qnearfieldsharemanager.sip %Include qnearfieldsharetarget.sip %Include qnearfieldtarget.sip %Include qqmlndefrecord.sip PyQt-gpl-5.5.1/sip/QtOpenGL/0000755000076500000240000000000012613140040015471 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtOpenGL/qgl.sip0000644000076500000240000002476612613140040017010 0ustar philstaff00000000000000// qgl.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) namespace QGL { %TypeHeaderCode #include %End enum FormatOption { DoubleBuffer, DepthBuffer, Rgba, AlphaChannel, AccumBuffer, StencilBuffer, StereoBuffers, DirectRendering, HasOverlay, SampleBuffers, SingleBuffer, NoDepthBuffer, ColorIndex, NoAlphaChannel, NoAccumBuffer, NoStencilBuffer, NoStereoBuffers, IndirectRendering, NoOverlay, NoSampleBuffers, DeprecatedFunctions, NoDeprecatedFunctions, }; typedef QFlags FormatOptions; }; %End %If (PyQt_OpenGL) QFlags operator|(QGL::FormatOption f1, QFlags f2); %End %If (PyQt_OpenGL) class QGLFormat { %TypeHeaderCode #include %End public: enum OpenGLVersionFlag { OpenGL_Version_None, OpenGL_Version_1_1, OpenGL_Version_1_2, OpenGL_Version_1_3, OpenGL_Version_1_4, OpenGL_Version_1_5, OpenGL_Version_2_0, OpenGL_Version_2_1, OpenGL_Version_3_0, OpenGL_Version_3_1, OpenGL_Version_3_2, OpenGL_Version_3_3, OpenGL_Version_4_0, OpenGL_Version_4_1, OpenGL_Version_4_2, OpenGL_Version_4_3, OpenGL_ES_Common_Version_1_0, OpenGL_ES_CommonLite_Version_1_0, OpenGL_ES_Common_Version_1_1, OpenGL_ES_CommonLite_Version_1_1, OpenGL_ES_Version_2_0, }; typedef QFlags OpenGLVersionFlags; QGLFormat(); QGLFormat(QGL::FormatOptions options, int plane = 0); QGLFormat(const QGLFormat &other); ~QGLFormat(); void setDepthBufferSize(int size); int depthBufferSize() const; void setAccumBufferSize(int size); int accumBufferSize() const; void setAlphaBufferSize(int size); int alphaBufferSize() const; void setStencilBufferSize(int size); int stencilBufferSize() const; void setSampleBuffers(bool enable); void setSamples(int numSamples); int samples() const; void setDoubleBuffer(bool enable); void setDepth(bool enable); void setRgba(bool enable); void setAlpha(bool enable); void setAccum(bool enable); void setStencil(bool enable); void setStereo(bool enable); void setDirectRendering(bool enable); void setOverlay(bool enable); int plane() const; void setPlane(int plane); void setOption(QGL::FormatOptions opt); bool testOption(QGL::FormatOptions opt) const; static QGLFormat defaultFormat(); static void setDefaultFormat(const QGLFormat &f); static QGLFormat defaultOverlayFormat(); static void setDefaultOverlayFormat(const QGLFormat &f); static bool hasOpenGL(); static bool hasOpenGLOverlays(); bool doubleBuffer() const; bool depth() const; bool rgba() const; bool alpha() const; bool accum() const; bool stencil() const; bool stereo() const; bool directRendering() const; bool hasOverlay() const; bool sampleBuffers() const; void setRedBufferSize(int size); int redBufferSize() const; void setGreenBufferSize(int size); int greenBufferSize() const; void setBlueBufferSize(int size); int blueBufferSize() const; void setSwapInterval(int interval); int swapInterval() const; static QFlags openGLVersionFlags(); void setVersion(int major, int minor); int majorVersion() const; int minorVersion() const; enum OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile, }; void setProfile(QGLFormat::OpenGLContextProfile profile); QGLFormat::OpenGLContextProfile profile() const; }; %End %If (PyQt_OpenGL) bool operator==(const QGLFormat &, const QGLFormat &); %End %If (PyQt_OpenGL) bool operator!=(const QGLFormat &, const QGLFormat &); %End %If (PyQt_OpenGL) class QGLContext /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QGLContext(const QGLFormat &format); virtual ~QGLContext(); virtual bool create(const QGLContext *shareContext = 0); bool isValid() const; bool isSharing() const; void reset(); QGLFormat format() const; QGLFormat requestedFormat() const; void setFormat(const QGLFormat &format); virtual void makeCurrent(); virtual void doneCurrent(); virtual void swapBuffers() const; GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); GLuint bindTexture(const QString &fileName); void deleteTexture(GLuint tx_id); static void setTextureCacheLimit(int size); static int textureCacheLimit(); QFunctionPointer getProcAddress(const QString &proc) const; QPaintDevice *device() const; QColor overlayTransparentColor() const; static const QGLContext *currentContext(); protected: virtual bool chooseContext(const QGLContext *shareContext = 0); bool deviceIsPixmap() const; bool windowCreated() const; void setWindowCreated(bool on); bool initialized() const; void setInitialized(bool on); public: static bool areSharing(const QGLContext *context1, const QGLContext *context2); enum BindOption { NoBindOption, InvertedYBindOption, MipmapBindOption, PremultipliedAlphaBindOption, LinearFilteringBindOption, DefaultBindOption, }; typedef QFlags BindOptions; GLuint bindTexture(const QImage &image, GLenum target, GLint format, QFlags options); GLuint bindTexture(const QPixmap &pixmap, GLenum target, GLint format, QFlags options); void moveToThread(QThread *thread); private: QGLContext(const QGLContext &); }; %End %If (PyQt_OpenGL) class QGLWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGLWidget, &sipType_QGLWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QGLWidget(QWidget *parent /TransferThis/ = 0, const QGLWidget *shareWidget = 0, Qt::WindowFlags flags = 0); QGLWidget(QGLContext *context /Transfer/, QWidget *parent /TransferThis/ = 0, const QGLWidget *shareWidget = 0, Qt::WindowFlags flags = 0); QGLWidget(const QGLFormat &format, QWidget *parent /TransferThis/ = 0, const QGLWidget *shareWidget = 0, Qt::WindowFlags flags = 0); virtual ~QGLWidget(); void qglColor(const QColor &c) const; void qglClearColor(const QColor &c) const; bool isValid() const; bool isSharing() const; void makeCurrent(); void doneCurrent(); bool doubleBuffer() const; void swapBuffers(); QGLFormat format() const; QGLContext *context() const; void setContext(QGLContext *context /Transfer/, const QGLContext *shareContext = 0, bool deleteOldContext = true); QPixmap renderPixmap(int width = 0, int height = 0, bool useContext = false); QImage grabFrameBuffer(bool withAlpha = false); void makeOverlayCurrent(); const QGLContext *overlayContext() const; static QImage convertToGLFormat(const QImage &img); void renderText(int x, int y, const QString &str, const QFont &font = QFont()); void renderText(double x, double y, double z, const QString &str, const QFont &font = QFont()); virtual QPaintEngine *paintEngine() const; GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); GLuint bindTexture(const QString &fileName); void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); void deleteTexture(GLuint tx_id); public slots: virtual void updateGL(); virtual void updateOverlayGL(); protected: virtual bool event(QEvent *); virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void initializeOverlayGL(); virtual void resizeOverlayGL(int w, int h); virtual void paintOverlayGL(); void setAutoBufferSwap(bool on); bool autoBufferSwap() const; virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); virtual void glInit(); virtual void glDraw(); public: GLuint bindTexture(const QImage &image, GLenum target, GLint format, QFlags options); GLuint bindTexture(const QPixmap &pixmap, GLenum target, GLint format, QFlags options); private: QGLWidget(const QGLWidget &); }; %End %If (PyQt_OpenGL) QFlags operator|(QGLFormat::OpenGLVersionFlag f1, QFlags f2); %End %If (PyQt_OpenGL) QFlags operator|(QGLContext::BindOption f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtOpenGL/QtOpenGLmod.sip0000644000076500000240000000365712613140040020352 0ustar philstaff00000000000000// QtOpenGLmod.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtOpenGL, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgl.sip PyQt-gpl-5.5.1/sip/QtPositioning/0000755000076500000240000000000012613140040016647 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtPositioning/qgeoaddress.sip0000644000076500000240000000370112613140040021666 0ustar philstaff00000000000000// qgeoaddress.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoAddress { %TypeHeaderCode #include %End public: QGeoAddress(); QGeoAddress(const QGeoAddress &other); ~QGeoAddress(); bool operator==(const QGeoAddress &other) const; bool operator!=(const QGeoAddress &other) const; QString text() const; void setText(const QString &text); QString country() const; void setCountry(const QString &country); QString countryCode() const; void setCountryCode(const QString &countryCode); QString state() const; void setState(const QString &state); QString county() const; void setCounty(const QString &county); QString city() const; void setCity(const QString &city); QString district() const; void setDistrict(const QString &district); QString postalCode() const; void setPostalCode(const QString &postalCode); QString street() const; void setStreet(const QString &street); bool isEmpty() const; void clear(); bool isTextGenerated() const; }; %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeoareamonitorinfo.sip0000644000076500000240000000377712613140040023452 0ustar philstaff00000000000000// qgeoareamonitorinfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoAreaMonitorInfo { %TypeHeaderCode #include %End public: explicit QGeoAreaMonitorInfo(const QString &name /DocValue="''"/ = QString()); QGeoAreaMonitorInfo(const QGeoAreaMonitorInfo &other); ~QGeoAreaMonitorInfo(); bool operator==(const QGeoAreaMonitorInfo &other) const; bool operator!=(const QGeoAreaMonitorInfo &other) const; QString name() const; void setName(const QString &name); QString identifier() const; bool isValid() const; QGeoShape area() const; void setArea(const QGeoShape &newShape); QDateTime expiration() const; void setExpiration(const QDateTime &expiry); bool isPersistent() const; void setPersistent(bool isPersistent); QVariantMap notificationParameters() const; void setNotificationParameters(const QVariantMap ¶meters); }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo & /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo & /Constrained/); %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeoareamonitorsource.sip0000644000076500000240000000552212613140040024005 0ustar philstaff00000000000000// qgeoareamonitorsource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoAreaMonitorSource : QObject { %TypeHeaderCode #include %End public: enum Error { AccessError, InsufficientPositionInfo, UnknownSourceError, NoError, }; enum AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature, }; typedef QFlags AreaMonitorFeatures; explicit QGeoAreaMonitorSource(QObject *parent /TransferThis/); virtual ~QGeoAreaMonitorSource(); static QGeoAreaMonitorSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoAreaMonitorSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); virtual void setPositionInfoSource(QGeoPositionInfoSource *source /Transfer/); virtual QGeoPositionInfoSource *positionInfoSource() const; QString sourceName() const; virtual QGeoAreaMonitorSource::Error error() const = 0; virtual QFlags supportedAreaMonitorFeatures() const = 0; virtual bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; virtual bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; virtual bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0; virtual QList activeMonitors() const = 0; virtual QList activeMonitors(const QGeoShape &lookupArea) const = 0; signals: void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); void monitorExpired(const QGeoAreaMonitorInfo &monitor); void error(QGeoAreaMonitorSource::Error error); private: QGeoAreaMonitorSource(const QGeoAreaMonitorSource &); }; %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeocircle.sip0000644000076500000240000000325412613140040021505 0ustar philstaff00000000000000// qgeocircle.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoCircle : QGeoShape { %TypeHeaderCode #include %End public: QGeoCircle(); QGeoCircle(const QGeoCoordinate ¢er, qreal radius = -1.0e+0); QGeoCircle(const QGeoCircle &other); QGeoCircle(const QGeoShape &other); ~QGeoCircle(); bool operator==(const QGeoCircle &other) const; bool operator!=(const QGeoCircle &other) const; void setCenter(const QGeoCoordinate ¢er); QGeoCoordinate center() const; void setRadius(qreal radius); qreal radius() const; void translate(double degreesLatitude, double degreesLongitude); QGeoCircle translated(double degreesLatitude, double degreesLongitude) const; %If (Qt_5_5_0 -) QString toString() const; %End }; %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeocoordinate.sip0000644000076500000240000000502612613140040022372 0ustar philstaff00000000000000// qgeocoordinate.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoCoordinate { %TypeHeaderCode #include %End public: enum CoordinateType { InvalidCoordinate, Coordinate2D, Coordinate3D, }; enum CoordinateFormat { Degrees, DegreesWithHemisphere, DegreesMinutes, DegreesMinutesWithHemisphere, DegreesMinutesSeconds, DegreesMinutesSecondsWithHemisphere, }; QGeoCoordinate(); QGeoCoordinate(double latitude, double longitude); QGeoCoordinate(double latitude, double longitude, double altitude); QGeoCoordinate(const QGeoCoordinate &other); ~QGeoCoordinate(); bool operator==(const QGeoCoordinate &other) const; bool operator!=(const QGeoCoordinate &other) const; bool isValid() const; QGeoCoordinate::CoordinateType type() const; void setLatitude(double latitude); double latitude() const; void setLongitude(double longitude); double longitude() const; void setAltitude(double altitude); double altitude() const; qreal distanceTo(const QGeoCoordinate &other) const; qreal azimuthTo(const QGeoCoordinate &other) const; QGeoCoordinate atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const; QString toString(QGeoCoordinate::CoordinateFormat format = QGeoCoordinate::DegreesMinutesSecondsWithHemisphere) const; }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate /Constrained/); %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeolocation.sip0000644000076500000240000000301512613140040022047 0ustar philstaff00000000000000// qgeolocation.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoLocation { %TypeHeaderCode #include %End public: QGeoLocation(); QGeoLocation(const QGeoLocation &other); ~QGeoLocation(); bool operator==(const QGeoLocation &other) const; bool operator!=(const QGeoLocation &other) const; QGeoAddress address() const; void setAddress(const QGeoAddress &address); QGeoCoordinate coordinate() const; void setCoordinate(const QGeoCoordinate &position); QGeoRectangle boundingBox() const; void setBoundingBox(const QGeoRectangle &box); bool isEmpty() const; }; %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeopositioninfo.sip0000644000076500000240000000431512613140040022763 0ustar philstaff00000000000000// qgeopositioninfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoPositionInfo { %TypeHeaderCode #include %End public: enum Attribute { Direction, GroundSpeed, VerticalSpeed, MagneticVariation, HorizontalAccuracy, VerticalAccuracy, }; QGeoPositionInfo(); QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime); QGeoPositionInfo(const QGeoPositionInfo &other); ~QGeoPositionInfo(); bool operator==(const QGeoPositionInfo &other) const; bool operator!=(const QGeoPositionInfo &other) const; bool isValid() const; void setTimestamp(const QDateTime ×tamp); QDateTime timestamp() const; void setCoordinate(const QGeoCoordinate &coordinate); QGeoCoordinate coordinate() const; void setAttribute(QGeoPositionInfo::Attribute attribute, qreal value); qreal attribute(QGeoPositionInfo::Attribute attribute) const; void removeAttribute(QGeoPositionInfo::Attribute attribute); bool hasAttribute(QGeoPositionInfo::Attribute attribute) const; }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info /Constrained/); %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeopositioninfosource.sip0000644000076500000240000000735112613140040024207 0ustar philstaff00000000000000// qgeopositioninfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoPositionInfoSource : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGeoPositionInfoSource, &sipType_QGeoPositionInfoSource, 3, 1}, {sipName_QGeoSatelliteInfoSource, &sipType_QGeoSatelliteInfoSource, -1, 2}, {sipName_QGeoAreaMonitorSource, &sipType_QGeoAreaMonitorSource, -1, -1}, {sipName_QNmeaPositionInfoSource, &sipType_QNmeaPositionInfoSource, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { AccessError, ClosedError, UnknownSourceError, NoError, }; enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods, }; typedef QFlags PositioningMethods; explicit QGeoPositionInfoSource(QObject *parent /TransferThis/); virtual ~QGeoPositionInfoSource(); virtual void setUpdateInterval(int msec); int updateInterval() const; virtual void setPreferredPositioningMethods(QFlags methods); QFlags preferredPositioningMethods() const; virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0; virtual QFlags supportedPositioningMethods() const = 0; virtual int minimumUpdateInterval() const = 0; QString sourceName() const; static QGeoPositionInfoSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); virtual QGeoPositionInfoSource::Error error() const = 0; public slots: virtual void startUpdates() = 0; virtual void stopUpdates() = 0; virtual void requestUpdate(int timeout = 0) = 0; signals: void positionUpdated(const QGeoPositionInfo &update); void updateTimeout(); void error(QGeoPositionInfoSource::Error); private: QGeoPositionInfoSource(const QGeoPositionInfoSource &); }; %End %If (Qt_5_2_0 -) QFlags operator|(QGeoPositionInfoSource::PositioningMethod f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeorectangle.sip0000644000076500000240000000520412613140040022205 0ustar philstaff00000000000000// qgeorectangle.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoRectangle : QGeoShape { %TypeHeaderCode #include %End public: QGeoRectangle(); QGeoRectangle(const QGeoCoordinate ¢er, double degreesWidth, double degreesHeight); QGeoRectangle(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight); %If (Qt_5_3_0 -) QGeoRectangle(const QList &coordinates); %End QGeoRectangle(const QGeoRectangle &other); QGeoRectangle(const QGeoShape &other); ~QGeoRectangle(); bool operator==(const QGeoRectangle &other) const; bool operator!=(const QGeoRectangle &other) const; void setTopLeft(const QGeoCoordinate &topLeft); QGeoCoordinate topLeft() const; void setTopRight(const QGeoCoordinate &topRight); QGeoCoordinate topRight() const; void setBottomLeft(const QGeoCoordinate &bottomLeft); QGeoCoordinate bottomLeft() const; void setBottomRight(const QGeoCoordinate &bottomRight); QGeoCoordinate bottomRight() const; void setCenter(const QGeoCoordinate ¢er); QGeoCoordinate center() const; void setWidth(double degreesWidth); double width() const; void setHeight(double degreesHeight); double height() const; bool contains(const QGeoRectangle &rectangle) const; bool intersects(const QGeoRectangle &rectangle) const; void translate(double degreesLatitude, double degreesLongitude); QGeoRectangle translated(double degreesLatitude, double degreesLongitude) const; QGeoRectangle united(const QGeoRectangle &rectangle) const; QGeoRectangle &operator|=(const QGeoRectangle &rectangle); QGeoRectangle operator|(const QGeoRectangle &rectangle) const; %If (Qt_5_5_0 -) QString toString() const; %End }; %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeosatelliteinfo.sip0000644000076500000240000000431512613140040023105 0ustar philstaff00000000000000// qgeosatelliteinfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoSatelliteInfo { %TypeHeaderCode #include %End public: enum Attribute { Elevation, Azimuth, }; enum SatelliteSystem { Undefined, GPS, GLONASS, }; QGeoSatelliteInfo(); QGeoSatelliteInfo(const QGeoSatelliteInfo &other); ~QGeoSatelliteInfo(); bool operator==(const QGeoSatelliteInfo &other) const; bool operator!=(const QGeoSatelliteInfo &other) const; void setSatelliteSystem(QGeoSatelliteInfo::SatelliteSystem system); QGeoSatelliteInfo::SatelliteSystem satelliteSystem() const; void setSatelliteIdentifier(int satId); int satelliteIdentifier() const; void setSignalStrength(int signalStrength); int signalStrength() const; void setAttribute(QGeoSatelliteInfo::Attribute attribute, qreal value); qreal attribute(QGeoSatelliteInfo::Attribute attribute) const; void removeAttribute(QGeoSatelliteInfo::Attribute attribute); bool hasAttribute(QGeoSatelliteInfo::Attribute attribute) const; }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info /Constrained/); %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeosatelliteinfosource.sip0000644000076500000240000000433412613140040024327 0ustar philstaff00000000000000// qgeosatelliteinfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoSatelliteInfoSource : QObject { %TypeHeaderCode #include %End public: enum Error { AccessError, ClosedError, NoError, UnknownSourceError, }; explicit QGeoSatelliteInfoSource(QObject *parent /TransferThis/); virtual ~QGeoSatelliteInfoSource(); static QGeoSatelliteInfoSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoSatelliteInfoSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); QString sourceName() const; virtual void setUpdateInterval(int msec); int updateInterval() const; virtual int minimumUpdateInterval() const = 0; virtual QGeoSatelliteInfoSource::Error error() const = 0; public slots: virtual void startUpdates() = 0; virtual void stopUpdates() = 0; virtual void requestUpdate(int timeout = 0) = 0; signals: void satellitesInViewUpdated(const QList &satellites); void satellitesInUseUpdated(const QList &satellites); void requestTimeout(); void error(QGeoSatelliteInfoSource::Error); private: QGeoSatelliteInfoSource(const QGeoSatelliteInfoSource &); }; %End PyQt-gpl-5.5.1/sip/QtPositioning/qgeoshape.sip0000644000076500000240000000415712613140040021347 0ustar philstaff00000000000000// qgeoshape.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoShape { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QGeoShape::CircleType: sipType = sipType_QGeoCircle; break; case QGeoShape::RectangleType: sipType = sipType_QGeoRectangle; break; default: sipType = 0; } %End public: QGeoShape(); QGeoShape(const QGeoShape &other); ~QGeoShape(); enum ShapeType { UnknownType, RectangleType, CircleType, }; QGeoShape::ShapeType type() const; bool isValid() const; bool isEmpty() const; bool contains(const QGeoCoordinate &coordinate) const; bool operator==(const QGeoShape &other) const; bool operator!=(const QGeoShape &other) const; %If (Qt_5_3_0 -) void extendShape(const QGeoCoordinate &coordinate); %End %If (Qt_5_5_0 -) QGeoCoordinate center() const; %End %If (Qt_5_5_0 -) QString toString() const; %End }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoShape &shape /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoShape &shape /Constrained/); %End PyQt-gpl-5.5.1/sip/QtPositioning/qnmeapositioninfosource.sip0000644000076500000240000000443012613140040024350 0ustar philstaff00000000000000// qnmeapositioninfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QNmeaPositionInfoSource : QGeoPositionInfoSource { %TypeHeaderCode #include %End public: enum UpdateMode { RealTimeMode, SimulationMode, }; QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent /TransferThis/ = 0); virtual ~QNmeaPositionInfoSource(); QNmeaPositionInfoSource::UpdateMode updateMode() const; void setDevice(QIODevice *source); QIODevice *device() const; virtual void setUpdateInterval(int msec); virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const; virtual QFlags supportedPositioningMethods() const; virtual int minimumUpdateInterval() const; virtual QGeoPositionInfoSource::Error error() const; public slots: virtual void startUpdates(); virtual void stopUpdates(); virtual void requestUpdate(int timeout = 0); protected: virtual bool parsePosInfoFromNmeaData(const char *data /Encoding="None"/, int size, QGeoPositionInfo *posInfo, bool *hasFix); public: %If (Qt_5_3_0 -) void setUserEquivalentRangeError(double uere); %End %If (Qt_5_3_0 -) double userEquivalentRangeError() const; %End private: QNmeaPositionInfoSource(const QNmeaPositionInfoSource &); }; %End PyQt-gpl-5.5.1/sip/QtPositioning/QtPositioningmod.sip0000644000076500000240000000432212613140040022674 0ustar philstaff00000000000000// QtPositioningmod.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtPositioning, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qgeoaddress.sip %Include qgeoareamonitorinfo.sip %Include qgeoareamonitorsource.sip %Include qgeocircle.sip %Include qgeocoordinate.sip %Include qgeolocation.sip %Include qgeopositioninfo.sip %Include qgeopositioninfosource.sip %Include qgeorectangle.sip %Include qgeosatelliteinfo.sip %Include qgeosatelliteinfosource.sip %Include qgeoshape.sip %Include qnmeapositioninfosource.sip PyQt-gpl-5.5.1/sip/QtPrintSupport/0000755000076500000240000000000012613140040017036 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtPrintSupport/qabstractprintdialog.sip0000644000076500000240000001117312613140040023777 0ustar philstaff00000000000000// qabstractprintdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QAbstractPrintDialog : QDialog { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if defined(SIP_FEATURE_PyQt_PrintDialog) {sipName_QPageSetupDialog, &sipType_QPageSetupDialog, -1, 1}, #else {0, 0, -1, 1}, #endif #if defined(SIP_FEATURE_PyQt_PrintPreviewWidget) {sipName_QPrintPreviewWidget, &sipType_QPrintPreviewWidget, -1, 2}, #else {0, 0, -1, 2}, #endif #if defined(SIP_FEATURE_PyQt_PrintPreviewDialog) {sipName_QPrintPreviewDialog, &sipType_QPrintPreviewDialog, -1, 3}, #else {0, 0, -1, 3}, #endif #if defined(SIP_FEATURE_PyQt_Printer) {sipName_QAbstractPrintDialog, &sipType_QAbstractPrintDialog, 4, -1}, #else {0, 0, 4, -1}, #endif #if defined(SIP_FEATURE_PyQt_PrintDialog) {sipName_QPrintDialog, &sipType_QPrintDialog, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum PrintRange { AllPages, Selection, PageRange, CurrentPage, }; %If (Py_v3) enum PrintDialogOption { None /PyName=None_/, PrintToFile, PrintSelection, PrintPageRange, PrintCollateCopies, PrintShowPageSize, PrintCurrentPage, }; %End %If (!Py_v3) // Backward compatible PrintDialogOption for Python v2. // Note that we have to duplicate the whole enum because MetaSIP doesn't // support handwritten code in enum definitions. enum PrintDialogOption { None, None /PyName=None_/, PrintToFile, PrintSelection, PrintPageRange, PrintCollateCopies, PrintShowPageSize, PrintCurrentPage }; %End typedef QFlags PrintDialogOptions; %If (PyQt_PrintDialog) QAbstractPrintDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); virtual ~QAbstractPrintDialog(); virtual int exec() = 0 /PyName=exec_,ReleaseGIL/; %If (Py_v3) virtual int exec() = 0 /ReleaseGIL/; %End void setPrintRange(QAbstractPrintDialog::PrintRange range); QAbstractPrintDialog::PrintRange printRange() const; void setMinMax(int min, int max); int minPage() const; int maxPage() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; QPrinter *printer() const; void setOptionTabs(const QList &tabs); private: QAbstractPrintDialog(const QAbstractPrintDialog &); public: %End // PyQt_PrintDialog }; %End %If (PyQt_Printer) QFlags operator|(QAbstractPrintDialog::PrintDialogOption f1, QFlags f2); %End %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtprintsupport_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtprintsupport_get_connection_parts_t pyqt5_qtprintsupport_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtprintsupport_get_connection_parts_t pyqt5_qtprintsupport_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtprintsupport_get_connection_parts = (pyqt5_qtprintsupport_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qpagesetupdialog.sip0000644000076500000240000000630312613140040023113 0ustar philstaff00000000000000// qpagesetupdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QPageSetupDialog : QDialog { %TypeHeaderCode #include %End public: QPageSetupDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); explicit QPageSetupDialog(QWidget *parent /TransferThis/ = 0); virtual ~QPageSetupDialog(); virtual void setVisible(bool visible); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPageSetupDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPageSetupDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void done(int result); QPrinter *printer(); }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qprintdialog.sip0000644000076500000240000000711312613140040022252 0ustar philstaff00000000000000// qprintdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QPrintDialog : QAbstractPrintDialog { %TypeHeaderCode #include %End public: QPrintDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); explicit QPrintDialog(QWidget *parent /TransferThis/ = 0); virtual ~QPrintDialog(); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPrintDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %If (Py_v3) virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPrintDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %End %If (WS_X11) virtual void accept(); %End virtual void done(int result); void setOption(QAbstractPrintDialog::PrintDialogOption option, bool on = true); bool testOption(QAbstractPrintDialog::PrintDialogOption option) const; void setOptions(QFlags options); QFlags options() const; virtual void setVisible(bool visible); virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End signals: void accepted(); void accepted(QPrinter *printer); }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qprintengine.sip0000644000076500000240000000455712613140040022271 0ustar philstaff00000000000000// qprintengine.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrintEngine { %TypeHeaderCode #include %End public: virtual ~QPrintEngine(); enum PrintEnginePropertyKey { PPK_CollateCopies, PPK_ColorMode, PPK_Creator, PPK_DocumentName, PPK_FullPage, PPK_NumberOfCopies, PPK_Orientation, PPK_OutputFileName, PPK_PageOrder, PPK_PageRect, PPK_PageSize, PPK_PaperRect, PPK_PaperSource, PPK_PrinterName, PPK_PrinterProgram, PPK_Resolution, PPK_SelectionOption, PPK_SupportedResolutions, PPK_WindowsPageSize, PPK_FontEmbedding, PPK_Duplex, PPK_PaperSources, PPK_CustomPaperSize, PPK_PageMargins, PPK_PaperSize, PPK_CopyCount, PPK_SupportsMultipleCopies, %If (Qt_5_1_0 -) PPK_PaperName, %End %If (Qt_5_3_0 -) PPK_QPageSize, %End %If (Qt_5_3_0 -) PPK_QPageMargins, %End %If (Qt_5_3_0 -) PPK_QPageLayout, %End PPK_CustomBase, }; virtual void setProperty(QPrintEngine::PrintEnginePropertyKey key, const QVariant &value) = 0; virtual QVariant property(QPrintEngine::PrintEnginePropertyKey key) const = 0; virtual bool newPage() = 0; virtual bool abort() = 0; virtual int metric(QPaintDevice::PaintDeviceMetric) const = 0; virtual QPrinter::PrinterState printerState() const = 0; }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qprinter.sip0000644000076500000240000001277412613140040021432 0ustar philstaff00000000000000// qprinter.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrinter : QPagedPaintDevice { %TypeHeaderCode #include %End public: enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution, }; explicit QPrinter(QPrinter::PrinterMode mode = QPrinter::ScreenResolution); QPrinter(const QPrinterInfo &printer, QPrinter::PrinterMode mode = QPrinter::ScreenResolution); virtual ~QPrinter(); enum Orientation { Portrait, Landscape, }; typedef QPagedPaintDevice::PageSize PaperSize; enum PageOrder { FirstPageFirst, LastPageFirst, }; enum ColorMode { GrayScale, Color, }; enum PaperSource { OnlyOne, Lower, Middle, Manual, Envelope, EnvelopeManual, Auto, Tractor, SmallFormat, LargeFormat, LargeCapacity, Cassette, FormSource, MaxPageSource, %If (Qt_5_3_0 -) Upper, %End %If (Qt_5_3_0 -) CustomSource, %End %If (Qt_5_3_0 -) LastPaperSource, %End }; enum PrinterState { Idle, Active, Aborted, Error, }; enum OutputFormat { NativeFormat, PdfFormat, }; enum PrintRange { AllPages, Selection, PageRange, CurrentPage, }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, DevicePixel, }; enum DuplexMode { DuplexNone, DuplexAuto, DuplexLongSide, DuplexShortSide, }; void setOutputFormat(QPrinter::OutputFormat format); QPrinter::OutputFormat outputFormat() const; void setPrinterName(const QString &); QString printerName() const; bool isValid() const; void setOutputFileName(const QString &); QString outputFileName() const; void setPrintProgram(const QString &); QString printProgram() const; void setDocName(const QString &); QString docName() const; void setCreator(const QString &); QString creator() const; void setOrientation(QPrinter::Orientation); QPrinter::Orientation orientation() const; virtual void setPageSizeMM(const QSizeF &size); void setPaperSize(QPagedPaintDevice::PageSize); QPagedPaintDevice::PageSize paperSize() const; void setPaperSize(const QSizeF &paperSize, QPrinter::Unit unit); QSizeF paperSize(QPrinter::Unit unit) const; void setPageOrder(QPrinter::PageOrder); QPrinter::PageOrder pageOrder() const; void setResolution(int); int resolution() const; void setColorMode(QPrinter::ColorMode); QPrinter::ColorMode colorMode() const; void setCollateCopies(bool collate); bool collateCopies() const; void setFullPage(bool); bool fullPage() const; void setCopyCount(int); int copyCount() const; bool supportsMultipleCopies() const; void setPaperSource(QPrinter::PaperSource); QPrinter::PaperSource paperSource() const; void setDuplex(QPrinter::DuplexMode duplex); QPrinter::DuplexMode duplex() const; QList supportedResolutions() const; void setFontEmbeddingEnabled(bool enable); bool fontEmbeddingEnabled() const; void setDoubleSidedPrinting(bool enable); bool doubleSidedPrinting() const; QRect paperRect() const; QRect pageRect() const; QRectF paperRect(QPrinter::Unit) const; QRectF pageRect(QPrinter::Unit) const; %If (WS_X11 || WS_MACX) QString printerSelectionOption() const; %End %If (WS_X11 || WS_MACX) void setPrinterSelectionOption(const QString &); %End virtual bool newPage(); bool abort(); QPrinter::PrinterState printerState() const; virtual QPaintEngine *paintEngine() const; QPrintEngine *printEngine() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; void setPrintRange(QPrinter::PrintRange range); QPrinter::PrintRange printRange() const; virtual void setMargins(const QPagedPaintDevice::Margins &m); void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, QPrinter::Unit unit); void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, QPrinter::Unit unit) const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric) const; void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine); public: %If (Qt_5_1_0 -) void setPaperName(const QString &paperName); %End %If (Qt_5_1_0 -) QString paperName() const; %End private: QPrinter(const QPrinter &); }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qprinterinfo.sip0000644000076500000240000000471112613140040022276 0ustar philstaff00000000000000// qprinterinfo.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrinterInfo { %TypeHeaderCode #include %End public: QPrinterInfo(); QPrinterInfo(const QPrinterInfo &src); explicit QPrinterInfo(const QPrinter &printer); ~QPrinterInfo(); QString printerName() const; bool isNull() const; bool isDefault() const; QList supportedPaperSizes() const; %If (Qt_5_1_0 -) QList> supportedSizesWithNames() const; %End static QList availablePrinters(); static QPrinterInfo defaultPrinter(); QString description() const; QString location() const; QString makeAndModel() const; static QPrinterInfo printerInfo(const QString &printerName); %If (Qt_5_3_0 -) bool isRemote() const; %End %If (Qt_5_3_0 -) QPrinter::PrinterState state() const; %End %If (Qt_5_3_0 -) QList supportedPageSizes() const; %End %If (Qt_5_3_0 -) QPageSize defaultPageSize() const; %End %If (Qt_5_3_0 -) bool supportsCustomPageSizes() const; %End %If (Qt_5_3_0 -) QPageSize minimumPhysicalPageSize() const; %End %If (Qt_5_3_0 -) QPageSize maximumPhysicalPageSize() const; %End %If (Qt_5_3_0 -) QList supportedResolutions() const; %End %If (Qt_5_3_0 -) static QStringList availablePrinterNames(); %End %If (Qt_5_3_0 -) static QString defaultPrinterName(); %End %If (Qt_5_4_0 -) QPrinter::DuplexMode defaultDuplexMode() const; %End %If (Qt_5_4_0 -) QList supportedDuplexModes() const; %End }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qprintpreviewdialog.sip0000644000076500000240000000371412613140040023657 0ustar philstaff00000000000000// qprintpreviewdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintPreviewDialog) class QPrintPreviewDialog : QDialog { %TypeHeaderCode #include %End public: QPrintPreviewDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QPrintPreviewDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QPrintPreviewDialog(); virtual void setVisible(bool visible); virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End QPrinter *printer(); virtual void done(int result); signals: void paintRequested(QPrinter *printer); }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qprintpreviewwidget.sip0000644000076500000240000000501312613140040023675 0ustar philstaff00000000000000// qprintpreviewwidget.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintPreviewWidget) class QPrintPreviewWidget : QWidget { %TypeHeaderCode #include %End public: enum ViewMode { SinglePageView, FacingPagesView, AllPagesView, }; enum ZoomMode { CustomZoom, FitToWidth, FitInView, }; QPrintPreviewWidget(QPrinter *printer, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QPrintPreviewWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QPrintPreviewWidget(); qreal zoomFactor() const; QPrinter::Orientation orientation() const; QPrintPreviewWidget::ViewMode viewMode() const; QPrintPreviewWidget::ZoomMode zoomMode() const; int currentPage() const; public slots: virtual void setVisible(bool visible); void print() /PyName=print_/; %If (Py_v3) void print(); %End void zoomIn(qreal factor = 1.1); void zoomOut(qreal factor = 1.1); void setZoomFactor(qreal zoomFactor); void setOrientation(QPrinter::Orientation orientation); void setViewMode(QPrintPreviewWidget::ViewMode viewMode); void setZoomMode(QPrintPreviewWidget::ZoomMode zoomMode); void setCurrentPage(int pageNumber); void fitToWidth(); void fitInView(); void setLandscapeOrientation(); void setPortraitOrientation(); void setSinglePageViewMode(); void setFacingPagesViewMode(); void setAllPagesViewMode(); void updatePreview(); signals: void paintRequested(QPrinter *printer); void previewChanged(); public: int pageCount() const; }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/qpyprintsupport_qlist.sip0000644000076500000240000001144212613140040024314 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtPrintSupport module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /DocType="list-of-QPagedPaintDevice.PageSize"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QPagedPaintDevice_PageSize); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_QPagedPaintDevice_PageSize)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QPagedPaintDevice.PageSize' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append( static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %If (Qt_5_4_0 -) %MappedType QList /DocType="list-of-QPrinter.DuplexMode"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QPrinter_DuplexMode); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_QPrinter_DuplexMode)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QPrinter.DuplexMode' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append( static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End PyQt-gpl-5.5.1/sip/QtPrintSupport/QtPrintSupportmod.sip0000644000076500000240000000423612613140040023256 0ustar philstaff00000000000000// QtPrintSupportmod.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtPrintSupport, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractprintdialog.sip %Include qpagesetupdialog.sip %Include qprintdialog.sip %Include qprintengine.sip %Include qprinter.sip %Include qprinterinfo.sip %Include qprintpreviewdialog.sip %Include qprintpreviewwidget.sip %Include qpyprintsupport_qlist.sip PyQt-gpl-5.5.1/sip/QtQml/0000755000076500000240000000000012613140040015076 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtQml/qjsengine.sip0000644000076500000240000000572512613140040017607 0ustar philstaff00000000000000// qjsengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QJSEngine : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QQmlExpression, &sipType_QQmlExpression, -1, 1}, #if QT_VERSION >= 0x050200 {sipName_QQmlFileSelector, &sipType_QQmlFileSelector, -1, 2}, #else {0, 0, -1, 2}, #endif {sipName_QQmlContext, &sipType_QQmlContext, -1, 3}, {sipName_QQmlPropertyMap, &sipType_QQmlPropertyMap, -1, 4}, {sipName_QQmlComponent, &sipType_QQmlComponent, -1, 5}, {sipName_QQmlExtensionPlugin, &sipType_QQmlExtensionPlugin, -1, 6}, {sipName_QJSEngine, &sipType_QJSEngine, 7, -1}, {sipName_QQmlEngine, &sipType_QQmlEngine, 8, -1}, #if QT_VERSION >= 0x050100 {sipName_QQmlApplicationEngine, &sipType_QQmlApplicationEngine, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QJSEngine(); explicit QJSEngine(QObject *parent /TransferThis/); virtual ~QJSEngine(); QJSValue globalObject() const; QJSValue evaluate(const QString &program, const QString &fileName = QString(), int lineNumber = 1) /ReleaseGIL/; QJSValue newObject(); QJSValue newArray(uint length = 0); QJSValue newQObject(QObject *object /Transfer/); void collectGarbage(); %If (Qt_5_4_0 -) void installTranslatorFunctions(const QJSValue &object = QJSValue(QJSValue::UndefinedValue)); %End private: QJSEngine(const QJSEngine &); }; %If (Qt_5_5_0 -) QJSEngine *qjsEngine(const QObject *); %End %ModuleHeaderCode #include "qpyqml_api.h" %End %PostInitialisationCode qpyqml_post_init(sipModuleDict); %End PyQt-gpl-5.5.1/sip/QtQml/qjsvalue.sip0000644000076500000240000000542112613140040017447 0ustar philstaff00000000000000// qjsvalue.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QJSValueList; class QJSValue { %TypeHeaderCode #include %End %ConvertToTypeCode if (!sipIsErr) return qpyqml_canConvertTo_QJSValue(sipPy); return qpyqml_convertTo_QJSValue(sipPy, sipTransferObj, sipCppPtr, sipIsErr); %End public: enum SpecialValue { NullValue, UndefinedValue, }; QJSValue(QJSValue::SpecialValue value /Constrained/ = QJSValue::UndefinedValue); QJSValue(const QJSValue &other); ~QJSValue(); bool isBool() const; bool isNumber() const; bool isNull() const; bool isString() const; bool isUndefined() const; bool isVariant() const; bool isQObject() const; bool isObject() const; bool isDate() const; bool isRegExp() const; bool isArray() const; bool isError() const; QString toString() const; double toNumber() const; qint32 toInt() const; quint32 toUInt() const; bool toBool() const; QVariant toVariant() const; QObject *toQObject() const; QDateTime toDateTime() const; bool equals(const QJSValue &other) const; bool strictlyEquals(const QJSValue &other) const; QJSValue prototype() const; void setPrototype(const QJSValue &prototype); QJSValue property(const QString &name) const; void setProperty(const QString &name, const QJSValue &value); bool hasProperty(const QString &name) const; bool hasOwnProperty(const QString &name) const; QJSValue property(quint32 arrayIndex) const; void setProperty(quint32 arrayIndex, const QJSValue &value); bool deleteProperty(const QString &name); bool isCallable() const; QJSValue call(const QJSValueList &args = QList()); QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &args = QList()); QJSValue callAsConstructor(const QJSValueList &args = QList()); }; PyQt-gpl-5.5.1/sip/QtQml/qjsvalueiterator.sip0000644000076500000240000000236312613140040021223 0ustar philstaff00000000000000// qjsvalueiterator.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QJSValueIterator { %TypeHeaderCode #include %End public: QJSValueIterator(const QJSValue &value); ~QJSValueIterator(); bool hasNext() const; bool next(); QString name() const; QJSValue value() const; private: QJSValueIterator(const QJSValueIterator &); }; PyQt-gpl-5.5.1/sip/QtQml/qmlattachedpropertiesobject.sip0000644000076500000240000000275312613140040023415 0ustar philstaff00000000000000// This is the SIP specification of the qmlAttachedPropertiesObject() function. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleHeaderCode #include %End QObject *qmlAttachedPropertiesObject(SIP_PYTYPE, QObject *object, bool create = true); %MethodCode QObject *proxy = qpyqml_find_proxy_for(a1); if (!proxy) { sipError = sipErrorFail; } else { static QHash cache; int idx = cache.value((PyTypeObject *)a0, -1); const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject((PyTypeObject *)a0); sipRes = qmlAttachedPropertiesObject(&idx, proxy, mo, a2); cache.insert((PyTypeObject *)a0, idx); } %End PyQt-gpl-5.5.1/sip/QtQml/qmlregistertype.sip0000644000076500000240000000661612613140040021064 0ustar philstaff00000000000000// This is the SIP specification of the qmlRegisterType() function. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleHeaderCode #include %End %ModuleCode // Imports from QtCore. pyqt5_qtqml_get_qmetaobject_t pyqt5_qtqml_get_qmetaobject; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtqml_get_qmetaobject = (pyqt5_qtqml_get_qmetaobject_t)sipImportSymbol( "pyqt5_get_qmetaobject"); %End int qmlRegisterRevision(SIP_PYTYPE, int revision, const char *uri, int major, int minor, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a2, a3, a4, 0, a1, (PyTypeObject *)a5)) < 0) sipError = sipErrorFail; %End %If (Qt_5_2_0 -) int qmlRegisterSingletonType(const QUrl &url, const char *uri, int major, int minor, const char *qmlName); %End int qmlRegisterSingletonType(SIP_PYTYPE, const char *uri, int major, int minor, const char *typeName, SIP_PYCALLABLE factory); %MethodCode if ((sipRes = qpyqml_register_singleton_type((PyTypeObject *)a0, a1, a2, a3, a4, a5)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(const QUrl &url, const char *uri, int major, int minor, const char *qmlName); int qmlRegisterType(SIP_PYTYPE, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_type((PyTypeObject *)a0, (PyTypeObject *)a1)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(SIP_PYTYPE, const char *uri, int major, int minor, const char *qmlName, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a1, a2, a3, a4, -1, (PyTypeObject *)a5)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(SIP_PYTYPE, int revision, const char *uri, int major, int minor, const char *qmlName, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a2, a3, a4, a5, a1, (PyTypeObject *)a6)) < 0) sipError = sipErrorFail; %End int qmlRegisterUncreatableType(SIP_PYTYPE, const char *uri, int major, int minor, const char *qmlName, const QString &reason); %MethodCode if ((sipRes = qpyqml_register_uncreatable_type((PyTypeObject *)a0, a1, a2, a3, a4, *a5, -1)) < 0) sipError = sipErrorFail; %End int qmlRegisterUncreatableType(SIP_PYTYPE, int revision, const char *uri, int major, int minor, const char *qmlName, const QString &reason); %MethodCode if ((sipRes = qpyqml_register_uncreatable_type((PyTypeObject *)a0, a2, a3, a4, a5, *a6, a1)) < 0) sipError = sipErrorFail; %End PyQt-gpl-5.5.1/sip/QtQml/qpyqmllistproperty.sip0000644000076500000240000000257712613140040021652 0ustar philstaff00000000000000// This is the SIP specification of the QQmlListProperty mapped type. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QQmlListProperty /DocType="QQmlListProperty"/ { %TypeHeaderCode #include "qpyqmllistpropertywrapper.h" %End %ConvertFromTypeCode return qpyqml_QQmlListPropertyWrapper_New(sipCpp, 0); %End %ConvertToTypeCode if (sipIsErr == NULL) return PyObject_IsInstance(sipPy, (PyObject *)&qpyqml_QQmlListPropertyWrapper_Type); *sipCppPtr = ((qpyqml_QQmlListPropertyWrapper *)sipPy)->qml_list_property; // It isn't a temporary copy. return 0; %End }; PyQt-gpl-5.5.1/sip/QtQml/qqmlabstracturlinterceptor.sip0000644000076500000240000000254212613140040023316 0ustar philstaff00000000000000// qqmlabstracturlinterceptor.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QQmlAbstractUrlInterceptor { %TypeHeaderCode #include %End public: enum DataType { QmlFile, JavaScriptFile, QmldirFile, UrlString, }; QQmlAbstractUrlInterceptor(); virtual ~QQmlAbstractUrlInterceptor(); virtual QUrl intercept(const QUrl &path, QQmlAbstractUrlInterceptor::DataType type) = 0; }; %End PyQt-gpl-5.5.1/sip/QtQml/qqmlapplicationengine.sip0000644000076500000240000000330112613140040022174 0ustar philstaff00000000000000// qqmlapplicationengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QQmlApplicationEngine : QQmlEngine { %TypeHeaderCode #include %End public: QQmlApplicationEngine(QObject *parent /TransferThis/ = 0); QQmlApplicationEngine(const QUrl &url, QObject *parent /TransferThis/ = 0); QQmlApplicationEngine(const QString &filePath, QObject *parent /TransferThis/ = 0); virtual ~QQmlApplicationEngine(); QList rootObjects(); public slots: void load(const QUrl &url) /ReleaseGIL/; void load(const QString &filePath) /ReleaseGIL/; void loadData(const QByteArray &data, const QUrl &url = QUrl()) /ReleaseGIL/; signals: void objectCreated(QObject *object, const QUrl &url); private: QQmlApplicationEngine(const QQmlApplicationEngine &); }; %End PyQt-gpl-5.5.1/sip/QtQml/qqmlcomponent.sip0000644000076500000240000000520612613140040020513 0ustar philstaff00000000000000// qqmlcomponent.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlComponent : QObject { %TypeHeaderCode #include %End public: enum CompilationMode { PreferSynchronous, Asynchronous, }; QQmlComponent(QQmlEngine *, QObject *parent /TransferThis/ = 0); QQmlComponent(QQmlEngine *, const QString &fileName, QObject *parent /TransferThis/ = 0); QQmlComponent(QQmlEngine *, const QString &fileName, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0); QQmlComponent(QQmlEngine *, const QUrl &url, QObject *parent /TransferThis/ = 0); QQmlComponent(QQmlEngine *, const QUrl &url, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0); QQmlComponent(QObject *parent /TransferThis/ = 0); virtual ~QQmlComponent(); enum Status { Null, Ready, Loading, Error, }; QQmlComponent::Status status() const; bool isNull() const; bool isReady() const; bool isError() const; bool isLoading() const; QList errors() const; qreal progress() const; QUrl url() const; virtual QObject *create(QQmlContext *context = 0) /TransferBack/; virtual QObject *beginCreate(QQmlContext *) /TransferBack/; virtual void completeCreate(); void create(QQmlIncubator &, QQmlContext *context = 0, QQmlContext *forContext = 0); QQmlContext *creationContext() const; public slots: void loadUrl(const QUrl &url) /ReleaseGIL/; void loadUrl(const QUrl &url, QQmlComponent::CompilationMode mode) /ReleaseGIL/; void setData(const QByteArray &, const QUrl &baseUrl); signals: void statusChanged(QQmlComponent::Status); void progressChanged(qreal); private: QQmlComponent(const QQmlComponent &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmlcontext.sip0000644000076500000240000000333212613140040020173 0ustar philstaff00000000000000// qqmlcontext.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlContext : QObject { %TypeHeaderCode #include %End public: QQmlContext(QQmlEngine *engine, QObject *parent /TransferThis/ = 0); QQmlContext(QQmlContext *parentContext, QObject *parent /TransferThis/ = 0); virtual ~QQmlContext(); bool isValid() const; QQmlEngine *engine() const; QQmlContext *parentContext() const; QObject *contextObject() const; void setContextObject(QObject *); QVariant contextProperty(const QString &) const; void setContextProperty(const QString &, QObject *); void setContextProperty(const QString &, const QVariant &); QString nameForObject(QObject *) const; QUrl resolvedUrl(const QUrl &); void setBaseUrl(const QUrl &); QUrl baseUrl() const; private: QQmlContext(const QQmlContext &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmlengine.sip0000644000076500000240000001156412613140040017762 0ustar philstaff00000000000000// qqmlengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlImageProviderBase /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ImageType { Image, Pixmap, Texture, }; enum Flag { ForceAsynchronousImageLoading, }; typedef QFlags Flags; virtual ~QQmlImageProviderBase(); virtual QQmlImageProviderBase::ImageType imageType() const = 0; virtual QFlags flags() const = 0; private: QQmlImageProviderBase(); }; QFlags operator|(QQmlImageProviderBase::Flag f1, QFlags f2); class QQmlEngine : QJSEngine { %TypeHeaderCode #include %End public: QQmlEngine(QObject *parent /TransferThis/ = 0); virtual ~QQmlEngine(); QQmlContext *rootContext() const; void clearComponentCache(); void trimComponentCache(); QStringList importPathList() const; void setImportPathList(const QStringList &paths); void addImportPath(const QString &dir); QStringList pluginPathList() const; void setPluginPathList(const QStringList &paths); void addPluginPath(const QString &dir); bool addNamedBundle(const QString &name, const QString &fileName); bool importPlugin(const QString &filePath, const QString &uri, QList *errors /GetWrapper/); %MethodCode int orig_size = (a2 ? a2->size() : 0); sipRes = sipCpp->importPlugin(*a0, *a1, a2); if (a2) { for (int i = a2->size(); i > orig_size; --i) { QQmlError *new_error = new QQmlError(a2->at(i - orig_size - 1)); PyObject *new_error_obj = sipConvertFromNewType(new_error, sipType_QQmlError, 0); if (!new_error_obj) { delete new_error; sipError = sipErrorFail; break; } if (PyList_Insert(a2Wrapper, 0, new_error_obj) < 0) { Py_DECREF(new_error_obj); sipError = sipErrorFail; break; } Py_DECREF(new_error_obj); } } %End void setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory * /KeepReference/); QQmlNetworkAccessManagerFactory *networkAccessManagerFactory() const; QNetworkAccessManager *networkAccessManager() const; void addImageProvider(const QString &id, QQmlImageProviderBase * /Transfer/); QQmlImageProviderBase *imageProvider(const QString &id) const; void removeImageProvider(const QString &id); void setIncubationController(QQmlIncubationController * /KeepReference/); QQmlIncubationController *incubationController() const; void setOfflineStoragePath(const QString &dir); QString offlineStoragePath() const; QUrl baseUrl() const; void setBaseUrl(const QUrl &); bool outputWarningsToStandardError() const; void setOutputWarningsToStandardError(bool); static QQmlContext *contextForObject(const QObject *); static void setContextForObject(QObject *, QQmlContext *); enum ObjectOwnership { CppOwnership, JavaScriptOwnership, }; static void setObjectOwnership(QObject * /GetWrapper/, QQmlEngine::ObjectOwnership); %MethodCode QQmlEngine::ObjectOwnership old = QQmlEngine::objectOwnership(a0); QQmlEngine::setObjectOwnership(a0, a1); if (old != a1 && !a0->parent()) { if (old == QQmlEngine::CppOwnership) sipTransferTo(a0Wrapper, Py_None); else sipTransferBack(a0Wrapper); } %End static QQmlEngine::ObjectOwnership objectOwnership(QObject *); protected: virtual bool event(QEvent *); signals: void quit(); void warnings(const QList &warnings); private: QQmlEngine(const QQmlEngine &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmlerror.sip0000644000076500000240000000270012613140040017636 0ustar philstaff00000000000000// qqmlerror.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlError { %TypeHeaderCode #include %End public: QQmlError(); QQmlError(const QQmlError &); ~QQmlError(); bool isValid() const; QUrl url() const; void setUrl(const QUrl &); QString description() const; void setDescription(const QString &); int line() const; void setLine(int); int column() const; void setColumn(int); QString toString() const; %If (Qt_5_2_0 -) QObject *object() const; %End %If (Qt_5_2_0 -) void setObject(QObject *); %End }; PyQt-gpl-5.5.1/sip/QtQml/qqmlexpression.sip0000644000076500000240000000367312613140040020716 0ustar philstaff00000000000000// qqmlexpression.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlExpression : QObject { %TypeHeaderCode #include %End public: QQmlExpression(); QQmlExpression(QQmlContext *, QObject *, const QString &, QObject *parent /TransferThis/ = 0); QQmlExpression(const QQmlScriptString &, QQmlContext *context = 0, QObject *scope = 0, QObject *parent /TransferThis/ = 0); virtual ~QQmlExpression(); QQmlEngine *engine() const; QQmlContext *context() const; QString expression() const; void setExpression(const QString &); bool notifyOnValueChanged() const; void setNotifyOnValueChanged(bool); QString sourceFile() const; int lineNumber() const; int columnNumber() const; void setSourceLocation(const QString &fileName, int line, int column = 0); QObject *scopeObject() const; bool hasError() const; void clearError(); QQmlError error() const; QVariant evaluate(bool *valueIsUndefined = 0) /ReleaseGIL/; signals: void valueChanged(); private: QQmlExpression(const QQmlExpression &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmlextensionplugin.sip0000644000076500000240000000257412613140040021751 0ustar philstaff00000000000000// qqmlextensionplugin.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlExtensionPlugin : QObject { %TypeHeaderCode #include %End public: explicit QQmlExtensionPlugin(QObject *parent /TransferThis/ = 0); virtual ~QQmlExtensionPlugin(); virtual void registerTypes(const char *uri) = 0; virtual void initializeEngine(QQmlEngine *engine, const char *uri); %If (Qt_5_1_0 -) QUrl baseUrl() const; %End private: QQmlExtensionPlugin(const QQmlExtensionPlugin &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmlfileselector.sip0000644000076500000240000000272212613140040021171 0ustar philstaff00000000000000// qqmlfileselector.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QQmlFileSelector : QObject { %TypeHeaderCode #include %End public: QQmlFileSelector(QQmlEngine *engine, QObject *parent /TransferThis/ = 0); virtual ~QQmlFileSelector(); void setSelector(QFileSelector *selector); %If (Qt_5_4_0 -) void setExtraSelectors(const QStringList &strings); %End %If (- Qt_5_4_0) void setExtraSelectors(QStringList &strings); %End static QQmlFileSelector *get(QQmlEngine *); private: QQmlFileSelector(const QQmlFileSelector &); }; %End PyQt-gpl-5.5.1/sip/QtQml/qqmlincubator.sip0000644000076500000240000000432712613140040020502 0ustar philstaff00000000000000// qqmlincubator.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlIncubator { %TypeHeaderCode #include %End public: enum IncubationMode { Asynchronous, AsynchronousIfNested, Synchronous, }; enum Status { Null, Ready, Loading, Error, }; QQmlIncubator(QQmlIncubator::IncubationMode mode = QQmlIncubator::Asynchronous); virtual ~QQmlIncubator(); void clear(); void forceCompletion(); bool isNull() const; bool isReady() const; bool isError() const; bool isLoading() const; QList errors() const; QQmlIncubator::IncubationMode incubationMode() const; QQmlIncubator::Status status() const; QObject *object() const /Factory/; protected: virtual void statusChanged(QQmlIncubator::Status); virtual void setInitialState(QObject *); private: QQmlIncubator(const QQmlIncubator &); }; class QQmlIncubationController { %TypeHeaderCode #include %End public: QQmlIncubationController(); virtual ~QQmlIncubationController(); QQmlEngine *engine() const; int incubatingObjectCount() const; void incubateFor(int msecs) /ReleaseGIL/; protected: virtual void incubatingObjectCountChanged(int); private: QQmlIncubationController(const QQmlIncubationController &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmllist.sip0000644000076500000240000000306312613140040017463 0ustar philstaff00000000000000// qqmllist.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlListReference { %TypeHeaderCode #include %End public: QQmlListReference(); QQmlListReference(QObject *, const char *property, QQmlEngine *engine = 0); QQmlListReference(const QQmlListReference &); ~QQmlListReference(); bool isValid() const; QObject *object() const; const QMetaObject *listElementType() const; bool canAppend() const; bool canAt() const; bool canClear() const; bool canCount() const; bool isManipulable() const; bool isReadable() const; bool append(QObject *) const; QObject *at(int) const; bool clear() const; int count() const; }; PyQt-gpl-5.5.1/sip/QtQml/qqmlnetworkaccessmanagerfactory.sip0000644000076500000240000000227112613140040024306 0ustar philstaff00000000000000// qqmlnetworkaccessmanagerfactory.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlNetworkAccessManagerFactory { %TypeHeaderCode #include %End public: virtual ~QQmlNetworkAccessManagerFactory(); virtual QNetworkAccessManager *create(QObject *parent) = 0 /Factory/; }; PyQt-gpl-5.5.1/sip/QtQml/qqmlparserstatus.sip0000644000076500000240000000232312613140040021246 0ustar philstaff00000000000000// qqmlparserstatus.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlParserStatus /Mixin,PyQtInterface="org.qt-project.Qt.QQmlParserStatus"/ { %TypeHeaderCode #include %End public: QQmlParserStatus(); virtual ~QQmlParserStatus(); virtual void classBegin() = 0; virtual void componentComplete() = 0; }; PyQt-gpl-5.5.1/sip/QtQml/qqmlproperty.sip0000644000076500000240000000746312613140040020404 0ustar philstaff00000000000000// qqmlproperty.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlProperty { %TypeHeaderCode #include %End public: enum PropertyTypeCategory { InvalidCategory, List, Object, Normal, }; enum Type { Invalid, Property, SignalProperty, }; QQmlProperty(); QQmlProperty(QObject *); QQmlProperty(QObject *, QQmlContext *); QQmlProperty(QObject *, QQmlEngine *); QQmlProperty(QObject *, const QString &); QQmlProperty(QObject *, const QString &, QQmlContext *); QQmlProperty(QObject *, const QString &, QQmlEngine *); QQmlProperty(const QQmlProperty &); ~QQmlProperty(); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool operator==(const QQmlProperty &) const; QQmlProperty::Type type() const; bool isValid() const; bool isProperty() const; bool isSignalProperty() const; int propertyType() const; QQmlProperty::PropertyTypeCategory propertyTypeCategory() const; const char *propertyTypeName() const; QString name() const; QVariant read() const; static QVariant read(const QObject *, const QString &); static QVariant read(const QObject *, const QString &, QQmlContext *); static QVariant read(const QObject *, const QString &, QQmlEngine *); bool write(const QVariant &) const; static bool write(QObject *, const QString &, const QVariant &); static bool write(QObject *, const QString &, const QVariant &, QQmlContext *); static bool write(QObject *, const QString &, const QVariant &, QQmlEngine *); bool reset() const; bool hasNotifySignal() const; bool needsNotifySignal() const; bool connectNotifySignal(SIP_PYOBJECT slot /DocType="slot"/) const; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtqml_get_pyqtslot_parts(a0, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connectNotifySignal(receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End bool connectNotifySignal(QObject *dest, int method) const; bool isWritable() const; bool isDesignable() const; bool isResettable() const; QObject *object() const; int index() const; QMetaProperty property() const; QMetaMethod method() const; }; typedef QList QQmlProperties; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtqml_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qtqml_get_pyqtslot_parts_t pyqt5_qtqml_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtqml_get_pyqtslot_parts_t pyqt5_qtqml_get_pyqtslot_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtqml_get_pyqtslot_parts = (pyqt5_qtqml_get_pyqtslot_parts_t)sipImportSymbol("pyqt5_get_pyqtslot_parts"); %End PyQt-gpl-5.5.1/sip/QtQml/qqmlpropertymap.sip0000644000076500000240000000326512613140040021076 0ustar philstaff00000000000000// qqmlpropertymap.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlPropertyMap : QObject { %TypeHeaderCode #include %End public: explicit QQmlPropertyMap(QObject *parent /TransferThis/ = 0); virtual ~QQmlPropertyMap(); QVariant value(const QString &key) const; void insert(const QString &key, const QVariant &value); void clear(const QString &key); QStringList keys() const; int count() const; int size() const /__len__/; bool isEmpty() const; bool contains(const QString &key) const; QVariant operator[](const QString &key) const; signals: void valueChanged(const QString &key, const QVariant &value); protected: virtual QVariant updateValue(const QString &key, const QVariant &input); private: QQmlPropertyMap(const QQmlPropertyMap &); }; PyQt-gpl-5.5.1/sip/QtQml/qqmlpropertyvaluesource.sip0000644000076500000240000000234612613140040022655 0ustar philstaff00000000000000// qqmlpropertyvaluesource.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlPropertyValueSource /Mixin,PyQtInterface="org.qt-project.Qt.QQmlPropertyValueSource"/ { %TypeHeaderCode #include %End public: QQmlPropertyValueSource(); virtual ~QQmlPropertyValueSource(); virtual void setTarget(const QQmlProperty &) = 0; }; PyQt-gpl-5.5.1/sip/QtQml/qqmlscriptstring.sip0000644000076500000240000000273512613140040021250 0ustar philstaff00000000000000// qqmlscriptstring.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlScriptString { %TypeHeaderCode #include %End public: QQmlScriptString(); QQmlScriptString(const QQmlScriptString &); ~QQmlScriptString(); bool isEmpty() const; bool isUndefinedLiteral() const; bool isNullLiteral() const; QString stringLiteral() const; qreal numberLiteral(bool *ok) const; bool booleanLiteral(bool *ok) const; %If (Qt_5_4_0 -) bool operator==(const QQmlScriptString &) const; %End %If (Qt_5_4_0 -) bool operator!=(const QQmlScriptString &) const; %End }; PyQt-gpl-5.5.1/sip/QtQml/QtQmlmod.sip0000644000076500000240000000505212613140040017353 0ustar philstaff00000000000000// QtQmlmod.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtQml, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qjsengine.sip %Include qjsvalue.sip %Include qjsvalueiterator.sip %Include qqmlabstracturlinterceptor.sip %Include qqmlapplicationengine.sip %Include qqmlcomponent.sip %Include qqmlcontext.sip %Include qqmlengine.sip %Include qqmlerror.sip %Include qqmlexpression.sip %Include qqmlextensionplugin.sip %Include qqmlfileselector.sip %Include qqmlincubator.sip %Include qqmllist.sip %Include qqmlnetworkaccessmanagerfactory.sip %Include qqmlparserstatus.sip %Include qqmlproperty.sip %Include qqmlpropertymap.sip %Include qqmlpropertyvaluesource.sip %Include qqmlscriptstring.sip %Include qmlattachedpropertiesobject.sip %Include qmlregistertype.sip %Include qpyqmllistproperty.sip PyQt-gpl-5.5.1/sip/QtQuick/0000755000076500000240000000000012613140040015421 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtQuick/qquickframebufferobject.sip0000644000076500000240000000440112613140040023026 0ustar philstaff00000000000000// qquickframebufferobject.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QQuickFramebufferObject : QQuickItem /ExportDerived/ { %TypeHeaderCode #include %End public: class Renderer /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End protected: Renderer(); virtual ~Renderer(); virtual void render() = 0; virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size); virtual void synchronize(QQuickFramebufferObject *); QOpenGLFramebufferObject *framebufferObject() const; void update(); void invalidateFramebufferObject(); }; QQuickFramebufferObject(QQuickItem *parent /TransferThis/ = 0); bool textureFollowsItemSize() const; void setTextureFollowsItemSize(bool follows); virtual QQuickFramebufferObject::Renderer *createRenderer() const = 0 /Factory/; protected: virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); signals: void textureFollowsItemSizeChanged(bool); public: %If (Qt_5_4_0 -) virtual bool isTextureProvider() const; %End %If (Qt_5_4_0 -) virtual QSGTextureProvider *textureProvider() const; %End %If (Qt_5_4_0 -) virtual void releaseResources(); %End }; %End PyQt-gpl-5.5.1/sip/QtQuick/qquickimageprovider.sip0000644000076500000240000000400412613140040022207 0ustar philstaff00000000000000// qquickimageprovider.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickTextureFactory : QObject { %TypeHeaderCode #include %End public: QQuickTextureFactory(); virtual ~QQuickTextureFactory(); virtual QSGTexture *createTexture(QQuickWindow *window) const = 0 /Factory/; virtual QSize textureSize() const = 0; virtual int textureByteCount() const = 0; virtual QImage image() const; }; class QQuickImageProvider : QQmlImageProviderBase { %TypeHeaderCode #include %End public: QQuickImageProvider(QQmlImageProviderBase::ImageType type, QFlags flags = 0); virtual ~QQuickImageProvider(); virtual QQmlImageProviderBase::ImageType imageType() const; virtual QFlags flags() const; virtual QImage requestImage(const QString &id, QSize *size /Out/, const QSize &requestedSize); virtual QPixmap requestPixmap(const QString &id, QSize *size /Out/, const QSize &requestedSize); virtual QQuickTextureFactory *requestTexture(const QString &id, QSize *size /Out/, const QSize &requestedSize) /Factory/; }; PyQt-gpl-5.5.1/sip/QtQuick/qquickitem.sip0000644000076500000240000002136612613140040020322 0ustar philstaff00000000000000// qquickitem.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickItem : QObject, QQmlParserStatus /ExportDerived/ { %TypeHeaderCode #include %End public: enum Flag { ItemClipsChildrenToShape, ItemAcceptsInputMethod, ItemIsFocusScope, ItemHasContents, ItemAcceptsDrops, }; typedef QFlags Flags; enum ItemChange { ItemChildAddedChange, ItemChildRemovedChange, ItemSceneChange, ItemVisibleHasChanged, ItemParentHasChanged, ItemOpacityHasChanged, ItemActiveFocusHasChanged, ItemRotationHasChanged, %If (Qt_5_3_0 -) ItemAntialiasingHasChanged, %End }; struct ItemChangeData { %TypeHeaderCode #include %End ItemChangeData(QQuickItem *v); ItemChangeData(QQuickWindow *v); ItemChangeData(qreal v /Constrained/); ItemChangeData(bool v /Constrained/); QQuickItem *item; QQuickWindow *window; qreal realValue; bool boolValue; }; enum TransformOrigin { TopLeft, Top, TopRight, Left, Center, Right, BottomLeft, Bottom, BottomRight, }; QQuickItem(QQuickItem *parent /TransferThis/ = 0); virtual ~QQuickItem(); QQuickWindow *window() const; QQuickItem *parentItem() const; void setParentItem(QQuickItem *parent); void stackBefore(const QQuickItem *); void stackAfter(const QQuickItem *); QRectF childrenRect(); QList childItems() const; bool clip() const; void setClip(bool); QString state() const; void setState(const QString &); qreal baselineOffset() const; void setBaselineOffset(qreal); qreal x() const; qreal y() const; void setX(qreal); void setY(qreal); qreal width() const; void setWidth(qreal); void resetWidth(); void setImplicitWidth(qreal); qreal implicitWidth() const; qreal height() const; void setHeight(qreal); void resetHeight(); void setImplicitHeight(qreal); qreal implicitHeight() const; QQuickItem::TransformOrigin transformOrigin() const; void setTransformOrigin(QQuickItem::TransformOrigin); qreal z() const; void setZ(qreal); qreal rotation() const; void setRotation(qreal); qreal scale() const; void setScale(qreal); qreal opacity() const; void setOpacity(qreal); bool isVisible() const; void setVisible(bool); bool isEnabled() const; void setEnabled(bool); bool smooth() const; void setSmooth(bool); bool antialiasing() const; void setAntialiasing(bool); QFlags flags() const; void setFlag(QQuickItem::Flag flag, bool enabled = true); void setFlags(QFlags flags); bool hasActiveFocus() const; bool hasFocus() const; void setFocus(bool); bool isFocusScope() const; QQuickItem *scopedFocusItem() const; Qt::MouseButtons acceptedMouseButtons() const; void setAcceptedMouseButtons(Qt::MouseButtons buttons); bool acceptHoverEvents() const; void setAcceptHoverEvents(bool enabled); QCursor cursor() const; void setCursor(const QCursor &cursor); void unsetCursor(); void grabMouse(); void ungrabMouse(); bool keepMouseGrab() const; void setKeepMouseGrab(bool); bool filtersChildMouseEvents() const; void setFiltersChildMouseEvents(bool filter); void grabTouchPoints(const QVector &ids); void ungrabTouchPoints(); bool keepTouchGrab() const; void setKeepTouchGrab(bool); virtual bool contains(const QPointF &point) const; QPointF mapToItem(const QQuickItem *item, const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; QRectF mapRectToItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QPointF mapFromItem(const QQuickItem *item, const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; QRectF mapRectFromItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; void polish(); void forceActiveFocus(); QQuickItem *childAt(qreal x, qreal y) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; struct UpdatePaintNodeData { %TypeHeaderCode #include %End QSGTransformNode *transformNode; private: UpdatePaintNodeData(); }; virtual bool isTextureProvider() const; virtual QSGTextureProvider *textureProvider() const; public slots: void update() /ReleaseGIL/; protected: virtual bool event(QEvent *); bool isComponentComplete() const; virtual void itemChange(QQuickItem::ItemChange, const QQuickItem::ItemChangeData &); void updateInputMethod(Qt::InputMethodQueries queries = Qt::ImQueryInput); bool widthValid() const; bool heightValid() const; virtual void classBegin(); virtual void componentComplete(); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void inputMethodEvent(QInputMethodEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); virtual void touchUngrabEvent(); virtual void wheelEvent(QWheelEvent *event); virtual void touchEvent(QTouchEvent *event); virtual void hoverEnterEvent(QHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); virtual void hoverLeaveEvent(QHoverEvent *event); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual bool childMouseEventFilter(QQuickItem *, QEvent *); virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); %VirtualCatcherCode PyObject *res; res = sipCallMethod(&sipIsErr, sipMethod, "DD", a0, sipType_QSGNode, NULL, a1, sipType_QQuickItem_UpdatePaintNodeData, NULL); if (res) { sipParseResult(&sipIsErr, sipMethod, res, "H0", sipType_QSGNode, &sipRes); if (!sipIsErr && sipRes && (sipRes->flags() & QSGNode::OwnedByParent)) sipTransferTo(res, (PyObject *)sipPySelf); Py_DECREF(res); } %End virtual void releaseResources(); virtual void updatePolish(); public: %If (Qt_5_1_0 -) bool activeFocusOnTab() const; %End %If (Qt_5_1_0 -) void setActiveFocusOnTab(bool); %End %If (Qt_5_1_0 -) void setFocus(bool focus, Qt::FocusReason reason); %End %If (Qt_5_1_0 -) void forceActiveFocus(Qt::FocusReason reason); %End %If (Qt_5_1_0 -) QQuickItem *nextItemInFocusChain(bool forward = true); %End signals: %If (Qt_5_1_0 -) void windowChanged(QQuickWindow *window); %End public: %If (Qt_5_3_0 -) void resetAntialiasing(); %End %If (Qt_5_4_0 -) QQuickItemGrabResult *grabToImage(const QSize &targetSize = QSize()) /Factory/; %MethodCode QSharedPointer *grab; Py_BEGIN_ALLOW_THREADS // This will leak but there seems to be no way to detach the object. grab = new QSharedPointer(sipCpp->grabToImage(*a0)); Py_END_ALLOW_THREADS sipRes = grab->data(); %End %End private: QQuickItem(const QQuickItem &); }; QFlags operator|(QQuickItem::Flag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtQuick/qquickitemgrabresult.sip0000644000076500000240000000244312613140040022410 0ustar philstaff00000000000000// qquickitemgrabresult.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QQuickItemGrabResult : QObject { %TypeHeaderCode #include %End public: QImage image() const; QUrl url() const; bool saveToFile(const QString &fileName); protected: virtual bool event(QEvent *); signals: void ready(); private: QQuickItemGrabResult(QObject *parent = 0); }; %End PyQt-gpl-5.5.1/sip/QtQuick/qquickpainteditem.sip0000644000076500000240000000572112613140040021664 0ustar philstaff00000000000000// qquickpainteditem.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickPaintedItem : QQuickItem /ExportDerived/ { %TypeHeaderCode #include %End public: QQuickPaintedItem(QQuickItem *parent /TransferThis/ = 0); virtual ~QQuickPaintedItem(); enum RenderTarget { Image, FramebufferObject, InvertedYFramebufferObject, }; enum PerformanceHint { FastFBOResizing, }; typedef QFlags PerformanceHints; void update(const QRect &rect = QRect()); bool opaquePainting() const; void setOpaquePainting(bool opaque); bool antialiasing() const; void setAntialiasing(bool enable); bool mipmap() const; void setMipmap(bool enable); QFlags performanceHints() const; void setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true); void setPerformanceHints(QFlags hints); QRectF contentsBoundingRect() const; QSize contentsSize() const; void setContentsSize(const QSize &); void resetContentsSize(); qreal contentsScale() const; void setContentsScale(qreal); QColor fillColor() const; void setFillColor(const QColor &); QQuickPaintedItem::RenderTarget renderTarget() const; void setRenderTarget(QQuickPaintedItem::RenderTarget target); virtual void paint(QPainter *painter) = 0; signals: void fillColorChanged(); void contentsSizeChanged(); void contentsScaleChanged(); void renderTargetChanged(); protected: virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); public: %If (Qt_5_4_0 -) virtual bool isTextureProvider() const; %End %If (Qt_5_4_0 -) virtual QSGTextureProvider *textureProvider() const; %End protected: %If (Qt_5_4_0 -) virtual void releaseResources(); %End private: QQuickPaintedItem(const QQuickPaintedItem &); }; QFlags operator|(QQuickPaintedItem::PerformanceHint f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtQuick/qquickrendercontrol.sip0000644000076500000240000000306212613140040022235 0ustar philstaff00000000000000// qquickrendercontrol.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QQuickRenderControl : QObject { %TypeHeaderCode #include %End public: QQuickRenderControl(QObject *parent /TransferThis/ = 0); virtual ~QQuickRenderControl(); void initialize(QOpenGLContext *gl); void invalidate(); void polishItems(); void render(); bool sync(); QImage grab(); static QWindow *renderWindowFor(QQuickWindow *win, QPoint *offset = 0); virtual QWindow *renderWindow(QPoint *offset); %If (Qt_5_5_0 -) void prepareThread(QThread *targetThread); %End signals: void renderRequested(); void sceneChanged(); }; %End PyQt-gpl-5.5.1/sip/QtQuick/qquicktextdocument.sip0000644000076500000240000000233612613140040022103 0ustar philstaff00000000000000// qquicktextdocument.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QQuickTextDocument : QObject { %TypeHeaderCode #include %End public: QQuickTextDocument(QQuickItem *parent /TransferThis/); QTextDocument *textDocument() const; private: QQuickTextDocument(const QQuickTextDocument &); }; %End PyQt-gpl-5.5.1/sip/QtQuick/qquickview.sip0000644000076500000240000000440212613140040020326 0ustar philstaff00000000000000// qquickview.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickView : QQuickWindow { %TypeHeaderCode #include %End public: explicit QQuickView(QWindow *parent /TransferThis/ = 0); QQuickView(QQmlEngine *engine, QWindow *parent /TransferThis/); QQuickView(const QUrl &source, QWindow *parent /TransferThis/ = 0); virtual ~QQuickView() /ReleaseGIL/; QUrl source() const; QQmlEngine *engine() const; QQmlContext *rootContext() const; QQuickItem *rootObject() const; enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView, }; QQuickView::ResizeMode resizeMode() const; void setResizeMode(QQuickView::ResizeMode); enum Status { Null, Ready, Loading, Error, }; QQuickView::Status status() const; QList errors() const; QSize initialSize() const; public slots: void setSource(const QUrl &) /ReleaseGIL/; signals: void statusChanged(QQuickView::Status); protected: virtual void resizeEvent(QResizeEvent *); virtual void timerEvent(QTimerEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); private: QQuickView(const QQuickView &); }; PyQt-gpl-5.5.1/sip/QtQuick/qquickwindow.sip0000644000076500000240000001540712613140040020672 0ustar philstaff00000000000000// qquickwindow.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickWindow : QWindow { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSGTextureProvider, &sipType_QSGTextureProvider, -1, 1}, {sipName_QSGTexture, &sipType_QSGTexture, 10, 2}, #if QT_VERSION >= 0x050400 {sipName_QQuickRenderControl, &sipType_QQuickRenderControl, -1, 3}, #else {0, 0, -1, 3}, #endif {sipName_QQuickItem, &sipType_QQuickItem, 11, 4}, {sipName_QQuickTextureFactory, &sipType_QQuickTextureFactory, -1, 5}, #if QT_VERSION >= 0x050400 {sipName_QSGAbstractRenderer, &sipType_QSGAbstractRenderer, -1, 6}, #else {0, 0, -1, 6}, #endif #if QT_VERSION >= 0x050400 {sipName_QQuickItemGrabResult, &sipType_QQuickItemGrabResult, -1, 7}, #else {0, 0, -1, 7}, #endif #if QT_VERSION >= 0x050400 {sipName_QSGEngine, &sipType_QSGEngine, -1, 8}, #else {0, 0, -1, 8}, #endif {sipName_QQuickWindow, &sipType_QQuickWindow, 13, 9}, #if QT_VERSION >= 0x050100 {sipName_QQuickTextDocument, &sipType_QQuickTextDocument, -1, -1}, #else {0, 0, -1, -1}, #endif {sipName_QSGDynamicTexture, &sipType_QSGDynamicTexture, -1, -1}, #if QT_VERSION >= 0x050200 {sipName_QQuickFramebufferObject, &sipType_QQuickFramebufferObject, -1, 12}, #else {0, 0, -1, 12}, #endif {sipName_QQuickPaintedItem, &sipType_QQuickPaintedItem, -1, -1}, {sipName_QQuickView, &sipType_QQuickView, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum CreateTextureOption { TextureHasAlphaChannel, TextureHasMipmaps, TextureOwnsGLTexture, %If (Qt_5_2_0 -) TextureCanUseAtlas, %End }; typedef QFlags CreateTextureOptions; QQuickWindow(QWindow *parent /TransferThis/ = 0); virtual ~QQuickWindow() /ReleaseGIL/; QQuickItem *contentItem() const; QQuickItem *activeFocusItem() const; virtual QObject *focusObject() const; QQuickItem *mouseGrabberItem() const; bool sendEvent(QQuickItem *, QEvent *); QImage grabWindow() /ReleaseGIL/; void setRenderTarget(QOpenGLFramebufferObject *fbo); QOpenGLFramebufferObject *renderTarget() const; void setRenderTarget(uint fboId, const QSize &size); uint renderTargetId() const; QSize renderTargetSize() const; QQmlIncubationController *incubationController() const; QSGTexture *createTextureFromImage(const QImage &image) const /Factory/; %If (Qt_5_2_0 -) QSGTexture *createTextureFromImage(const QImage &image, QFlags options) const /Factory/; %End QSGTexture *createTextureFromId(uint id, const QSize &size, QFlags options = (QQuickWindow::CreateTextureOption)0u) const /Factory/; void setClearBeforeRendering(bool enabled); bool clearBeforeRendering() const; void setColor(const QColor &color); QColor color() const; void setPersistentOpenGLContext(bool persistent); bool isPersistentOpenGLContext() const; void setPersistentSceneGraph(bool persistent); bool isPersistentSceneGraph() const; QOpenGLContext *openglContext() const; signals: void frameSwapped(); void sceneGraphInitialized(); void sceneGraphInvalidated(); void beforeSynchronizing(); void beforeRendering(); void afterRendering(); void colorChanged(const QColor &); public slots: void update(); void releaseResources(); protected: virtual void exposeEvent(QExposeEvent *); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); public: %If (Qt_5_1_0 -) static bool hasDefaultAlphaBuffer(); %End %If (Qt_5_1_0 -) static void setDefaultAlphaBuffer(bool useAlpha); %End signals: %If (Qt_5_1_0 -) void activeFocusItemChanged(); %End public: %If (Qt_5_2_0 -) void resetOpenGLState(); %End %If (Qt_5_3_0 -) enum SceneGraphError { ContextNotAvailable, }; %End signals: %If (Qt_5_3_0 -) void openglContextCreated(QOpenGLContext *context); %End %If (Qt_5_3_0 -) void afterSynchronizing(); %End %If (Qt_5_3_0 -) void afterAnimating(); %End %If (Qt_5_3_0 -) void sceneGraphAboutToStop(); %End %If (Qt_5_3_0 -) void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); %End public: %If (Qt_5_4_0 -) enum RenderStage { BeforeSynchronizingStage, AfterSynchronizingStage, BeforeRenderingStage, AfterRenderingStage, AfterSwapStage, }; %End %If (Qt_5_4_0 -) void scheduleRenderJob(QRunnable *job /Transfer/, QQuickWindow::RenderStage schedule) /ReleaseGIL/; %End %If (Qt_5_4_0 -) qreal effectiveDevicePixelRatio() const; %End %If (Qt_5_5_0 -) bool isSceneGraphInitialized() const; %End private: QQuickWindow(const QQuickWindow &); }; %ModuleHeaderCode #include "qpyquick_api.h" %End %PostInitialisationCode qpyquick_post_init(); %End PyQt-gpl-5.5.1/sip/QtQuick/qsgabstractrenderer.sip0000644000076500000240000000417712613140040022214 0ustar philstaff00000000000000// qsgabstractrenderer.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QSGAbstractRenderer : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum ClearModeBit { ClearColorBuffer, ClearDepthBuffer, ClearStencilBuffer, }; typedef QFlags ClearMode; virtual ~QSGAbstractRenderer(); void setDeviceRect(const QRect &rect); void setDeviceRect(const QSize &size); QRect deviceRect() const; void setViewportRect(const QRect &rect); void setViewportRect(const QSize &size); QRect viewportRect() const; void setProjectionMatrixToRect(const QRectF &rect); void setProjectionMatrix(const QMatrix4x4 &matrix); QMatrix4x4 projectionMatrix() const; void setClearColor(const QColor &color); QColor clearColor() const; void setClearMode(QFlags mode); QFlags clearMode() const; virtual void renderScene(GLuint fboId = 0) = 0; signals: void sceneGraphChanged(); }; %End %If (Qt_5_4_0 -) QFlags operator|(QSGAbstractRenderer::ClearModeBit f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtQuick/qsgengine.sip0000644000076500000240000000337212613140040020123 0ustar philstaff00000000000000// qsgengine.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QSGEngine : QObject { %TypeHeaderCode #include %End public: enum CreateTextureOption { TextureHasAlphaChannel, TextureOwnsGLTexture, TextureCanUseAtlas, }; typedef QFlags CreateTextureOptions; QSGEngine(QObject *parent /TransferThis/ = 0); virtual ~QSGEngine(); void initialize(QOpenGLContext *context); void invalidate(); QSGAbstractRenderer *createRenderer() const; QSGTexture *createTextureFromImage(const QImage &image, QFlags options = (QSGEngine::CreateTextureOption)0u) const /Factory/; QSGTexture *createTextureFromId(uint id, const QSize &size, QFlags options = (QSGEngine::CreateTextureOption)0u) const /Factory/; }; %End PyQt-gpl-5.5.1/sip/QtQuick/qsgflatcolormaterial.sip0000644000076500000240000000246612613140040022365 0ustar philstaff00000000000000// qsgflatcolormaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGFlatColorMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGFlatColorMaterial(); virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; void setColor(const QColor &color); const QColor &color() const; virtual int compare(const QSGMaterial *other) const; }; PyQt-gpl-5.5.1/sip/QtQuick/qsggeometry.sip0000644000076500000240000002567212613140040020520 0ustar philstaff00000000000000// qsggeometry.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGGeometry /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: // Convenient primitives and drawing modes. enum /NoScope/ { GL_BYTE, %If (PyQt_Desktop_OpenGL) GL_DOUBLE, %End GL_FLOAT, GL_INT }; enum /NoScope/ { GL_POINTS, GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN }; struct Attribute { %TypeHeaderCode #include %End int position; int tupleSize; int type; uint isVertexCoordinate; static QSGGeometry::Attribute create(int pos, int tupleSize, int primitiveType, bool isPosition = false) /Factory/; }; struct AttributeSet /NoDefaultCtors/ { %TypeHeaderCode #include #include %End AttributeSet(SIP_PYOBJECT attributes /DocType="sequence-of-QSGGeometry.Attribute"/, int stride = 0); %MethodCode PyObject *iter = PyObject_GetIter(a0); if (!iter #if PY_MAJOR_VERSION < 3 || PyString_Check(a0) #endif || PyUnicode_Check(a0)) { Py_XDECREF(iter); PyErr_SetString(PyExc_TypeError, "iterable object expected"); sipError = sipErrorContinue; } else { QVector attrs; int stride = 0; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) sipError = sipErrorFail; break; } int state, is_err = 0; QSGGeometry::Attribute *attr; attr = reinterpret_cast( sipForceConvertToType(itm, sipType_QSGGeometry_Attribute, 0, SIP_NOT_NONE, &state, &is_err)); if (is_err) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QSGGeometry.Attribute' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); sipError = sipErrorFail; break; } // Calculate the stride if there no explicit one. if (a1 <= 0) { int size; switch (attr->type) { case GL_BYTE: size = sizeof (qint8); break; #if defined(SIPFeature_PyQt_Desktop_OpenGL) #if GL_DOUBLE != GL_FLOAT case GL_DOUBLE: size = sizeof (double); break; #endif #endif case GL_FLOAT: size = sizeof (float); break; case GL_INT: size = sizeof (qint32); break; default: size = 0; } if (!size) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has an unsupported primitive type", i); sipReleaseType(attr, sipType_QSGGeometry_Attribute, state); Py_DECREF(itm); sipError = sipErrorFail; break; } stride += attr->tupleSize * size; } attrs.append(*attr); sipReleaseType(attr, sipType_QSGGeometry_Attribute, state); Py_DECREF(itm); } Py_DECREF(iter); if (sipError == sipErrorNone) { if (attrs.isEmpty()) { PyErr_SetString(PyExc_TypeError, "no attributes defined"); sipError = sipErrorFail; } else { PyObject *bytes = SIPBytes_FromStringAndSize( reinterpret_cast(attrs.data()), sizeof (QSGGeometry::Attribute) * attrs.size()); if (!bytes) { sipError = sipErrorFail; } else { sipCpp = new QSGGeometry::AttributeSet; sipCpp->count = attrs.size(); sipCpp->stride = (a1 > 0 ? a1 : stride); sipCpp->attributes = reinterpret_cast( SIPBytes_AS_STRING(bytes)); sipSelf->user = bytes; } } } } %End int count; int stride; const QSGGeometry::Attribute *attributes /DocType="read-only-array-of-QSGGeometry.Attribute"/ { %GetCode sipPy = sipConvertToTypedArray((void *)sipCpp->attributes, sipType_QSGGeometry_Attribute, "iiiI", sizeof (QSGGeometry::Attribute), sipCpp->count, SIP_READ_ONLY); %End %SetCode sipErr = 1; PyErr_SetString(PyExc_ValueError, "array is read-only"); %End }; }; struct Point2D { %TypeHeaderCode #include %End float x; float y; void set(float nx, float ny); }; struct TexturedPoint2D { %TypeHeaderCode #include %End float x; float y; float tx; float ty; void set(float nx, float ny, float ntx, float nty); }; struct ColoredPoint2D { %TypeHeaderCode #include %End float x; float y; unsigned char r /PyInt/; unsigned char g /PyInt/; unsigned char b /PyInt/; unsigned char a /PyInt/; void set(float nx, float ny, uchar nr /PyInt/, uchar ng /PyInt/, uchar nb /PyInt/, uchar na /PyInt/); }; static const QSGGeometry::AttributeSet &defaultAttributes_Point2D() /NoCopy/; static const QSGGeometry::AttributeSet &defaultAttributes_TexturedPoint2D() /NoCopy/; static const QSGGeometry::AttributeSet &defaultAttributes_ColoredPoint2D() /NoCopy/; enum DataPattern { AlwaysUploadPattern, StreamPattern, DynamicPattern, StaticPattern, }; QSGGeometry(const QSGGeometry::AttributeSet &attribs /KeepReference/, int vertexCount, int indexCount = 0, int indexType = GL_UNSIGNED_SHORT); virtual ~QSGGeometry(); void setDrawingMode(GLenum mode); GLenum drawingMode() const; void allocate(int vertexCount, int indexCount = 0); int vertexCount() const; void *vertexData(); int indexType() const; int indexCount() const; void *indexData(); int attributeCount() const; SIP_PYOBJECT attributes() const /DocType="read-only-array-of-QSGGeometry.Attribute"/; %MethodCode sipRes = sipConvertToTypedArray((void *)sipCpp->attributes(), sipType_QSGGeometry_Attribute, "iiiI", sizeof (QSGGeometry::Attribute), sipCpp->attributeCount(), SIP_READ_ONLY); %End int sizeOfVertex() const; static void updateRectGeometry(QSGGeometry *g, const QRectF &rect); static void updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &sourceRect); void setIndexDataPattern(QSGGeometry::DataPattern p); QSGGeometry::DataPattern indexDataPattern() const; void setVertexDataPattern(QSGGeometry::DataPattern p); QSGGeometry::DataPattern vertexDataPattern() const; void markIndexDataDirty(); void markVertexDataDirty(); float lineWidth() const; void setLineWidth(float w); SIP_PYOBJECT indexDataAsUInt() /DocType="array-of-unsigned-int"/; %MethodCode sipRes = sipConvertToArray(sipCpp->indexDataAsUInt(), "I", sipCpp->indexCount(), 0); %End SIP_PYOBJECT indexDataAsUShort() /DocType="array-of-unsigned-short"/; %MethodCode sipRes = sipConvertToArray(sipCpp->indexDataAsUShort(), "H", sipCpp->indexCount(), 0); %End SIP_PYOBJECT vertexDataAsPoint2D() /DocType="array-of-QSGGeometry.Point2D"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsPoint2D(), sipType_QSGGeometry_Point2D, "ff", sizeof (QSGGeometry::Point2D), sipCpp->vertexCount(), 0); %End SIP_PYOBJECT vertexDataAsTexturedPoint2D() /DocType="array-of-QSGGeometry.TexturedPoint2D"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsTexturedPoint2D(), sipType_QSGGeometry_TexturedPoint2D, "ffff", sizeof (QSGGeometry::TexturedPoint2D), sipCpp->vertexCount(), 0); %End SIP_PYOBJECT vertexDataAsColoredPoint2D() /DocType="array-of-QSGGeometry.ColoredPoint2D"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsColoredPoint2D(), sipType_QSGGeometry_ColoredPoint2D, "ffbbbb", sizeof (QSGGeometry::ColoredPoint2D), sipCpp->vertexCount(), 0); %End int sizeOfIndex() const; }; PyQt-gpl-5.5.1/sip/QtQuick/qsgmaterial.sip0000644000076500000240000001570712613140040020461 0ustar philstaff00000000000000// qsgmaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGMaterialShader /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: class RenderState { %TypeHeaderCode #include %End public: enum DirtyState { DirtyMatrix, DirtyOpacity, }; typedef QFlags DirtyStates; QFlags dirtyStates() const; bool isMatrixDirty() const; bool isOpacityDirty() const; float opacity() const; QMatrix4x4 combinedMatrix() const; QMatrix4x4 modelViewMatrix() const; QRect viewportRect() const; QRect deviceRect() const; float determinant() const; QOpenGLContext *context() const; %If (Qt_5_1_0 -) QMatrix4x4 projectionMatrix() const; %End %If (Qt_5_1_0 -) float devicePixelRatio() const; %End }; QSGMaterialShader(); virtual ~QSGMaterialShader(); virtual void activate(); virtual void deactivate(); virtual void updateState(const QSGMaterialShader::RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); virtual SIP_PYOBJECT attributeNames() const = 0 /DocType="list-of-str"/ [const char * const * ()]; %MethodCode const char * const *names = sipCpp->attributeNames(); SIP_SSIZE_T nr_names = 0; if (names) while (names[nr_names]) ++nr_names; sipRes = PyList_New(nr_names); if (!sipRes) sipIsErr = 1; else for (SIP_SSIZE_T i = 0; i < nr_names; ++i) { const char *name = names[i]; PyObject *el; #if PY_MAJOR_VERSION >= 3 el = PyUnicode_DecodeASCII(name, strlen(name), 0); #else el = PyString_FromString(name); #endif if (!el) { Py_DECREF(sipRes); sipIsErr = 1; break; } PyList_SET_ITEM(sipRes, i, el); } %End %VirtualCatcherCode PyObject *names = sipCallMethod(&sipIsErr, sipMethod, ""); if (names) { sipRes = qtquick_anc_get_attr_names(sipPySelf, sipMethod, names); if (!sipRes) sipIsErr = 1; Py_DECREF(names); } %End QOpenGLShaderProgram *program(); protected: virtual void compile(); virtual void initialize(); %If (Qt_5_2_0 -) virtual const char *vertexShader() const; %End %If (- Qt_5_2_0) virtual const char *vertexShader() const = 0; %End %If (Qt_5_2_0 -) virtual const char *fragmentShader() const; %End %If (- Qt_5_2_0) virtual const char *fragmentShader() const = 0; %End %If (Qt_5_2_0 -) void setShaderSourceFile(QFlags type, const QString &sourceFile); %End %If (Qt_5_2_0 -) void setShaderSourceFiles(QFlags type, const QStringList &sourceFiles); %End private: QSGMaterialShader(const QSGMaterialShader &); }; struct QSGMaterialType { %TypeHeaderCode #include %End }; class QSGMaterial /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Flag { Blending, RequiresDeterminant, RequiresFullMatrixExceptTranslate, RequiresFullMatrix, %If (Qt_5_2_0 -) CustomCompileStep, %End }; typedef QFlags Flags; QSGMaterial(); virtual ~QSGMaterial(); virtual QSGMaterialType *type() const = 0; virtual QSGMaterialShader *createShader() const = 0 /Factory/; virtual int compare(const QSGMaterial *other) const; QFlags flags() const; void setFlag(QFlags flags, bool enabled = true); private: QSGMaterial(const QSGMaterial &); }; QFlags operator|(QSGMaterial::Flag f1, QFlags f2); QFlags operator|(QSGMaterialShader::RenderState::DirtyState f1, QFlags f2); %ModuleCode // Release any attribute names to the heap. static void qtquick_anc_release(char **attr_names) { if (attr_names) { for (int i = 0; attr_names[i]; ++i) delete[] attr_names[i]; delete[] attr_names; } } // The destructor for the attribute names PyCapsule. static void qtquick_anc_destructor(PyObject *cap) { qtquick_anc_release( reinterpret_cast(PyCapsule_GetPointer(cap, NULL))); } // Get the attribute names or 0 if there was an error. static char **qtquick_anc_get_attr_names(sipSimpleWrapper *pySelf, PyObject *method, PyObject *attr_names_obj) { // Dispose of any existing names. Py_XDECREF(pySelf->user); pySelf->user = NULL; // Convert the new names. if (!PyList_Check(attr_names_obj)) { sipBadCatcherResult(method); return 0; } char **names = new char *[PyList_GET_SIZE(attr_names_obj) + 1]; for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(attr_names_obj); ++i) { char *name; PyObject *el = PyList_GET_ITEM(attr_names_obj, i); #if PY_MAJOR_VERSION >= 3 PyObject *name_obj = PyUnicode_AsASCIIString(el); name = (name_obj ? PyBytes_AS_STRING(name_obj) : 0); #else name = PyString_AsString(el); #endif if (!name) { names[i] = 0; qtquick_anc_release(names); sipBadCatcherResult(method); return 0; } char *name_copy = new char[strlen(name) + 1]; strcpy(name_copy, name); names[i] = name_copy; #if PY_MAJOR_VERSION >= 3 Py_DECREF(name_obj); #endif } names[PyList_GET_SIZE(attr_names_obj)] = 0; pySelf->user = PyCapsule_New(names, NULL, qtquick_anc_destructor); if (!pySelf->user) { qtquick_anc_release(names); return 0; } return names; } %End PyQt-gpl-5.5.1/sip/QtQuick/qsgnode.sip0000644000076500000240000002154012613140040017600 0ustar philstaff00000000000000// qsgnode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGNode /NoDefaultCtors,Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %TypeCode static sipErrorState qsgnode_handle_flags(QSGNode *node, PyObject *self, QSGNode::Flags old_flags) { QSGNode::Flags new_flags = node->flags(); if (node->parent()) { if ((old_flags & QSGNode::OwnedByParent) != (new_flags & QSGNode::OwnedByParent)) { if (old_flags & QSGNode::OwnedByParent) { sipTransferBack(self); } else { PyObject *parent = sipConvertFromType(node->parent(), sipType_QSGNode, 0); if (!parent) return sipErrorFail; sipTransferTo(self, parent); Py_DECREF(parent); } } } QSGNode::NodeType ntype = node->type(); if (ntype == QSGNode::BasicNodeType || ntype == QSGNode::GeometryNodeType || ntype == QSGNode::ClipNodeType) { QSGBasicGeometryNode *bg_node = (QSGBasicGeometryNode *)node; if (bg_node->geometry()) { if ((old_flags & QSGNode::OwnsGeometry) != (new_flags & QSGNode::OwnsGeometry)) { PyObject *geom = sipConvertFromType(bg_node->geometry(), sipType_QSGGeometry, 0); if (!geom) return sipErrorFail; if (old_flags & QSGNode::OwnsGeometry) sipTransferBack(geom); else sipTransferTo(geom, self); Py_DECREF(geom); } } } if (ntype == QSGNode::GeometryNodeType) { QSGGeometryNode *g_node = (QSGGeometryNode *)node; if (g_node->material()) { if ((old_flags & QSGNode::OwnsMaterial) != (new_flags & QSGNode::OwnsMaterial)) { PyObject *mat = sipConvertFromType(g_node->material(), sipType_QSGMaterial, 0); if (!mat) return sipErrorFail; if (old_flags & QSGNode::OwnsMaterial) sipTransferBack(mat); else sipTransferTo(mat, self); Py_DECREF(mat); } } if (g_node->opaqueMaterial()) { if ((old_flags & QSGNode::OwnsOpaqueMaterial) != (new_flags & QSGNode::OwnsOpaqueMaterial)) { PyObject *omat = sipConvertFromType(g_node->opaqueMaterial(), sipType_QSGMaterial, 0); if (!omat) return sipErrorFail; if (old_flags & QSGNode::OwnsOpaqueMaterial) sipTransferBack(omat); else sipTransferTo(omat, self); Py_DECREF(omat); } } } return sipErrorNone; } %End %ConvertToSubClassCode switch (sipCpp->type()) { case QSGNode::BasicNodeType: sipType = sipType_QSGBasicGeometryNode; break; case QSGNode::GeometryNodeType: sipType = sipType_QSGGeometryNode; break; case QSGNode::TransformNodeType: sipType = sipType_QSGClipNode; break; case QSGNode::ClipNodeType: sipType = sipType_QSGTransformNode; break; case QSGNode::OpacityNodeType: sipType = sipType_QSGOpacityNode; break; default: sipType = 0; } %End public: enum NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, }; enum Flag { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, }; typedef QFlags Flags; enum DirtyStateBit { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, DirtyMaterial, DirtyOpacity, }; typedef QFlags DirtyState; QSGNode(); virtual ~QSGNode(); QSGNode *parent() const; void removeChildNode(QSGNode *node); void removeAllChildNodes(); void prependChildNode(QSGNode *node /GetWrapper/); %MethodCode sipCpp->prependChildNode(a0); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void appendChildNode(QSGNode *node /GetWrapper/); %MethodCode sipCpp->appendChildNode(a0); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void insertChildNodeBefore(QSGNode *node /GetWrapper/, QSGNode *before); %MethodCode sipCpp->insertChildNodeBefore(a0, a1); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void insertChildNodeAfter(QSGNode *node /GetWrapper/, QSGNode *after); %MethodCode sipCpp->insertChildNodeAfter(a0, a1); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End int childCount() const /__len__/; QSGNode *childAtIndex(int i) const; QSGNode *firstChild() const; QSGNode *lastChild() const; QSGNode *nextSibling() const; QSGNode *previousSibling() const; QSGNode::NodeType type() const; void markDirty(QFlags bits); virtual bool isSubtreeBlocked() const; QFlags flags() const; void setFlag(QSGNode::Flag, bool enabled = true); %MethodCode QSGNode::Flags old_flags = sipCpp->flags(); sipCpp->setFlag(a0, a1); sipError = qsgnode_handle_flags(sipCpp, sipSelf, old_flags); %End void setFlags(QFlags, bool enabled = true); %MethodCode QSGNode::Flags old_flags = sipCpp->flags(); sipCpp->setFlags(*a0, a1); sipError = qsgnode_handle_flags(sipCpp, sipSelf, old_flags); %End virtual void preprocess(); }; class QSGBasicGeometryNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGBasicGeometryNode(); void setGeometry(QSGGeometry *geometry /GetWrapper/); %MethodCode sipCpp->setGeometry(a0); if (sipCpp->flags() & QSGNode::OwnsGeometry) sipTransferTo(a0Wrapper, sipSelf); %End QSGGeometry *geometry(); }; class QSGGeometryNode : QSGBasicGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGGeometryNode(); virtual ~QSGGeometryNode(); void setMaterial(QSGMaterial *material /GetWrapper/); %MethodCode sipCpp->setMaterial(a0); if (sipCpp->flags() & QSGNode::OwnsMaterial) sipTransferTo(a0Wrapper, sipSelf); %End QSGMaterial *material() const; void setOpaqueMaterial(QSGMaterial *material /GetWrapper/); %MethodCode sipCpp->setOpaqueMaterial(a0); if (sipCpp->flags() & QSGNode::OwnsOpaqueMaterial) sipTransferTo(a0Wrapper, sipSelf); %End QSGMaterial *opaqueMaterial() const; }; class QSGClipNode : QSGBasicGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGClipNode(); virtual ~QSGClipNode(); void setIsRectangular(bool rectHint); bool isRectangular() const; void setClipRect(const QRectF &); QRectF clipRect() const; }; class QSGTransformNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGTransformNode(); virtual ~QSGTransformNode(); void setMatrix(const QMatrix4x4 &matrix); const QMatrix4x4 &matrix() const; }; class QSGOpacityNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGOpacityNode(); virtual ~QSGOpacityNode(); void setOpacity(qreal opacity); qreal opacity() const; }; QFlags operator|(QSGNode::DirtyStateBit f1, QFlags f2); QFlags operator|(QSGNode::Flag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtQuick/qsgsimplerectnode.sip0000644000076500000240000000251212613140040021666 0ustar philstaff00000000000000// qsgsimplerectnode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGSimpleRectNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGSimpleRectNode(const QRectF &rect, const QColor &color); QSGSimpleRectNode(); void setRect(const QRectF &rect); void setRect(qreal x, qreal y, qreal w, qreal h); QRectF rect() const; void setColor(const QColor &color); QColor color() const; }; PyQt-gpl-5.5.1/sip/QtQuick/qsgsimpletexturenode.sip0000644000076500000240000000475112613140040022440 0ustar philstaff00000000000000// qsgsimpletexturenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGSimpleTextureNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGSimpleTextureNode(); %If (Qt_5_4_0 -) virtual ~QSGSimpleTextureNode(); %End void setRect(const QRectF &rect); void setRect(qreal x, qreal y, qreal w, qreal h); QRectF rect() const; void setTexture(QSGTexture *texture); QSGTexture *texture() const; void setFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering filtering() const; %If (Qt_5_2_0 -) enum TextureCoordinatesTransformFlag { NoTransform, MirrorHorizontally, MirrorVertically, }; %End %If (Qt_5_2_0 -) typedef QFlags TextureCoordinatesTransformMode; %End %If (Qt_5_2_0 -) void setTextureCoordinatesTransform(QFlags mode); %End %If (Qt_5_2_0 -) QFlags textureCoordinatesTransform() const; %End %If (Qt_5_4_0 -) void setOwnsTexture(bool owns); %End %If (Qt_5_4_0 -) bool ownsTexture() const; %End %If (Qt_5_5_0 -) void setSourceRect(const QRectF &r); %End %If (Qt_5_5_0 -) void setSourceRect(qreal x, qreal y, qreal w, qreal h); %End %If (Qt_5_5_0 -) QRectF sourceRect() const; %End }; %If (Qt_5_2_0 -) QFlags operator|(QSGSimpleTextureNode::TextureCoordinatesTransformFlag f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtQuick/qsgtexture.sip0000644000076500000240000000431612613140040020355 0ustar philstaff00000000000000// qsgtexture.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGTexture : QObject { %TypeHeaderCode #include %End public: QSGTexture(); virtual ~QSGTexture(); enum WrapMode { Repeat, ClampToEdge, }; enum Filtering { None, Nearest, Linear, }; virtual int textureId() const = 0; virtual QSize textureSize() const = 0; virtual bool hasAlphaChannel() const = 0; virtual bool hasMipmaps() const = 0; virtual QRectF normalizedTextureSubRect() const; virtual bool isAtlasTexture() const; virtual QSGTexture *removedFromAtlas() const; virtual void bind() = 0; void updateBindOptions(bool force = false); void setMipmapFiltering(QSGTexture::Filtering filter); QSGTexture::Filtering mipmapFiltering() const; void setFiltering(QSGTexture::Filtering filter); QSGTexture::Filtering filtering() const; void setHorizontalWrapMode(QSGTexture::WrapMode hwrap); QSGTexture::WrapMode horizontalWrapMode() const; void setVerticalWrapMode(QSGTexture::WrapMode vwrap); QSGTexture::WrapMode verticalWrapMode() const; QRectF convertToNormalizedSourceRect(const QRectF &rect) const; }; class QSGDynamicTexture : QSGTexture { %TypeHeaderCode #include %End public: virtual bool updateTexture() = 0; }; PyQt-gpl-5.5.1/sip/QtQuick/qsgtexturematerial.sip0000644000076500000240000000372012613140040022072 0ustar philstaff00000000000000// qsgtexturematerial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGOpaqueTextureMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGOpaqueTextureMaterial(); virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; virtual int compare(const QSGMaterial *other) const; void setTexture(QSGTexture *texture); QSGTexture *texture() const; void setMipmapFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering mipmapFiltering() const; void setFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering filtering() const; void setHorizontalWrapMode(QSGTexture::WrapMode mode); QSGTexture::WrapMode horizontalWrapMode() const; void setVerticalWrapMode(QSGTexture::WrapMode mode); QSGTexture::WrapMode verticalWrapMode() const; }; class QSGTextureMaterial : QSGOpaqueTextureMaterial { %TypeHeaderCode #include %End public: virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; }; PyQt-gpl-5.5.1/sip/QtQuick/qsgtextureprovider.sip0000644000076500000240000000220012613140040022116 0ustar philstaff00000000000000// qsgtextureprovider.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGTextureProvider : QObject { %TypeHeaderCode #include %End public: virtual QSGTexture *texture() const = 0 /Factory/; signals: void textureChanged(); }; PyQt-gpl-5.5.1/sip/QtQuick/qsgvertexcolormaterial.sip0000644000076500000240000000240112613140040022741 0ustar philstaff00000000000000// qsgvertexcolormaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGVertexColorMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGVertexColorMaterial(); virtual int compare(const QSGMaterial *other) const; protected: virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; }; PyQt-gpl-5.5.1/sip/QtQuick/QtQuickmod.sip0000644000076500000240000000500312613140040020215 0ustar philstaff00000000000000// QtQuickmod.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtQuick, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qquickframebufferobject.sip %Include qquickimageprovider.sip %Include qquickitem.sip %Include qquickitemgrabresult.sip %Include qquickpainteditem.sip %Include qquickrendercontrol.sip %Include qquicktextdocument.sip %Include qquickview.sip %Include qquickwindow.sip %Include qsgabstractrenderer.sip %Include qsgengine.sip %Include qsgflatcolormaterial.sip %Include qsggeometry.sip %Include qsgmaterial.sip %Include qsgnode.sip %Include qsgsimplerectnode.sip %Include qsgsimpletexturenode.sip %Include qsgtexture.sip %Include qsgtexturematerial.sip %Include qsgtextureprovider.sip %Include qsgvertexcolormaterial.sip PyQt-gpl-5.5.1/sip/QtQuickWidgets/0000755000076500000240000000000012613140040016750 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtQuickWidgets/qquickwidget.sip0000644000076500000240000000664712613140040022203 0ustar philstaff00000000000000// qquickwidget.sip generated by MetaSIP // // This file is part of the QtQuickWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QQuickWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = (sipCpp->inherits(sipName_QQuickWidget) ? sipType_QQuickWidget : 0); %End public: explicit QQuickWidget(QWidget *parent /TransferThis/ = 0); QQuickWidget(QQmlEngine *engine, QWidget *parent /TransferThis/); QQuickWidget(const QUrl &source, QWidget *parent /TransferThis/ = 0); virtual ~QQuickWidget(); QUrl source() const; QQmlEngine *engine() const; QQmlContext *rootContext() const; QQuickItem *rootObject() const; enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView, }; QQuickWidget::ResizeMode resizeMode() const; void setResizeMode(QQuickWidget::ResizeMode); enum Status { Null, Ready, Loading, Error, }; QQuickWidget::Status status() const; QList errors() const; virtual QSize sizeHint() const; QSize initialSize() const; void setFormat(const QSurfaceFormat &format); QSurfaceFormat format() const; public slots: void setSource(const QUrl &); signals: void statusChanged(QQuickWidget::Status); void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); protected: virtual void resizeEvent(QResizeEvent *); virtual void timerEvent(QTimerEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void wheelEvent(QWheelEvent *); virtual bool event(QEvent *); %If (Qt_5_3_1 -) virtual void focusInEvent(QFocusEvent *event); %End %If (Qt_5_3_1 -) virtual void focusOutEvent(QFocusEvent *event); %End %If (Qt_5_5_0 -) virtual void dragEnterEvent(QDragEnterEvent *); %End %If (Qt_5_5_0 -) virtual void dragMoveEvent(QDragMoveEvent *); %End %If (Qt_5_5_0 -) virtual void dragLeaveEvent(QDragLeaveEvent *); %End %If (Qt_5_5_0 -) virtual void dropEvent(QDropEvent *); %End public: %If (Qt_5_4_0 -) QImage grabFramebuffer() const; %End %If (Qt_5_4_0 -) void setClearColor(const QColor &color); %End %If (Qt_5_5_0 -) QQuickWindow *quickWindow() const; %End private: QQuickWidget(const QQuickWidget &); }; %End PyQt-gpl-5.5.1/sip/QtQuickWidgets/QtQuickWidgetsmod.sip0000644000076500000240000000400412613140040023073 0ustar philstaff00000000000000// QtQuickWidgetsmod.sip generated by MetaSIP // // This file is part of the QtQuickWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtQuickWidgets, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Import QtQuick/QtQuickmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qquickwidget.sip PyQt-gpl-5.5.1/sip/QtSensors/0000755000076500000240000000000012613140040016001 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtSensors/qaccelerometer.sip0000644000076500000240000000403012613140040021506 0ustar philstaff00000000000000// qaccelerometer.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAccelerometerReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); }; %End %If (Qt_5_1_0 -) class QAccelerometerFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAccelerometerReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAccelerometer : QSensor { %TypeHeaderCode #include %End public: explicit QAccelerometer(QObject *parent /TransferThis/ = 0); virtual ~QAccelerometer(); enum AccelerationMode { Combined, Gravity, User, }; QAccelerometer::AccelerationMode accelerationMode() const; void setAccelerationMode(QAccelerometer::AccelerationMode accelerationMode); QAccelerometerReading *reading() const; signals: void accelerationModeChanged(QAccelerometer::AccelerationMode accelerationMode); private: QAccelerometer(const QAccelerometer &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qaltimeter.sip0000644000076500000240000000312612613140040020667 0ustar philstaff00000000000000// qaltimeter.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAltimeterReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal altitude() const; void setAltitude(qreal altitude); }; %End %If (Qt_5_1_0 -) class QAltimeterFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAltimeterReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAltimeter : QSensor { %TypeHeaderCode #include %End public: explicit QAltimeter(QObject *parent /TransferThis/ = 0); virtual ~QAltimeter(); QAltimeterReading *reading() const; private: QAltimeter(const QAltimeter &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qambientlightsensor.sip0000644000076500000240000000356212613140040022606 0ustar philstaff00000000000000// qambientlightsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAmbientLightReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum LightLevel { Undefined, Dark, Twilight, Light, Bright, Sunny, }; QAmbientLightReading::LightLevel lightLevel() const; void setLightLevel(QAmbientLightReading::LightLevel lightLevel); }; %End %If (Qt_5_1_0 -) class QAmbientLightFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAmbientLightReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAmbientLightSensor : QSensor { %TypeHeaderCode #include %End public: explicit QAmbientLightSensor(QObject *parent /TransferThis/ = 0); virtual ~QAmbientLightSensor(); QAmbientLightReading *reading() const; private: QAmbientLightSensor(const QAmbientLightSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qambienttemperaturesensor.sip0000644000076500000240000000341212613140040024026 0ustar philstaff00000000000000// qambienttemperaturesensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAmbientTemperatureReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal temperature() const; void setTemperature(qreal temperature); }; %End %If (Qt_5_1_0 -) class QAmbientTemperatureFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAmbientTemperatureReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAmbientTemperatureSensor : QSensor { %TypeHeaderCode #include %End public: explicit QAmbientTemperatureSensor(QObject *parent /TransferThis/ = 0); virtual ~QAmbientTemperatureSensor(); QAmbientTemperatureReading *reading() const; private: QAmbientTemperatureSensor(const QAmbientTemperatureSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qcompass.sip0000644000076500000240000000322312613140040020344 0ustar philstaff00000000000000// qcompass.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QCompassReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal azimuth() const; void setAzimuth(qreal azimuth); qreal calibrationLevel() const; void setCalibrationLevel(qreal calibrationLevel); }; %End %If (Qt_5_1_0 -) class QCompassFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QCompassReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QCompass : QSensor { %TypeHeaderCode #include %End public: explicit QCompass(QObject *parent /TransferThis/ = 0); virtual ~QCompass(); QCompassReading *reading() const; private: QCompass(const QCompass &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qdistancesensor.sip0000644000076500000240000000317712613140040021733 0ustar philstaff00000000000000// qdistancesensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QDistanceReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal distance() const; void setDistance(qreal distance); }; %End %If (Qt_5_4_0 -) class QDistanceFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QDistanceReading *reading) = 0; }; %End %If (Qt_5_4_0 -) class QDistanceSensor : QSensor { %TypeHeaderCode #include %End public: explicit QDistanceSensor(QObject *parent /TransferThis/ = 0); virtual ~QDistanceSensor(); QDistanceReading *reading() const; private: QDistanceSensor(const QDistanceSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qgyroscope.sip0000644000076500000240000000323312613140040020712 0ustar philstaff00000000000000// qgyroscope.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QGyroscopeReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); }; %End %If (Qt_5_1_0 -) class QGyroscopeFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QGyroscopeReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QGyroscope : QSensor { %TypeHeaderCode #include %End public: explicit QGyroscope(QObject *parent /TransferThis/ = 0); virtual ~QGyroscope(); QGyroscopeReading *reading() const; private: QGyroscope(const QGyroscope &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qholstersensor.sip0000644000076500000240000000316312613140040021614 0ustar philstaff00000000000000// qholstersensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QHolsterReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool holstered() const; void setHolstered(bool holstered); }; %End %If (Qt_5_1_0 -) class QHolsterFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QHolsterReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QHolsterSensor : QSensor { %TypeHeaderCode #include %End public: explicit QHolsterSensor(QObject *parent /TransferThis/ = 0); virtual ~QHolsterSensor(); QHolsterReading *reading() const; private: QHolsterSensor(const QHolsterSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qirproximitysensor.sip0000644000076500000240000000325712613140040022537 0ustar philstaff00000000000000// qirproximitysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QIRProximityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal reflectance() const; void setReflectance(qreal reflectance); }; %End %If (Qt_5_1_0 -) class QIRProximityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QIRProximityReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QIRProximitySensor : QSensor { %TypeHeaderCode #include %End public: explicit QIRProximitySensor(QObject *parent /TransferThis/ = 0); virtual ~QIRProximitySensor(); QIRProximityReading *reading() const; private: QIRProximitySensor(const QIRProximitySensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qlightsensor.sip0000644000076500000240000000331612613140040021243 0ustar philstaff00000000000000// qlightsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QLightReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal lux() const; void setLux(qreal lux); }; %End %If (Qt_5_1_0 -) class QLightFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QLightReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QLightSensor : QSensor { %TypeHeaderCode #include %End public: explicit QLightSensor(QObject *parent /TransferThis/ = 0); virtual ~QLightSensor(); QLightReading *reading() const; qreal fieldOfView() const; void setFieldOfView(qreal fieldOfView); signals: void fieldOfViewChanged(qreal fieldOfView); private: QLightSensor(const QLightSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qmagnetometer.sip0000644000076500000240000000366212613140040021375 0ustar philstaff00000000000000// qmagnetometer.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QMagnetometerReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); qreal calibrationLevel() const; void setCalibrationLevel(qreal calibrationLevel); }; %End %If (Qt_5_1_0 -) class QMagnetometerFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QMagnetometerReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QMagnetometer : QSensor { %TypeHeaderCode #include %End public: explicit QMagnetometer(QObject *parent /TransferThis/ = 0); virtual ~QMagnetometer(); QMagnetometerReading *reading() const; bool returnGeoValues() const; void setReturnGeoValues(bool returnGeoValues); signals: void returnGeoValuesChanged(bool returnGeoValues); private: QMagnetometer(const QMagnetometer &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qorientationsensor.sip0000644000076500000240000000357612613140040022477 0ustar philstaff00000000000000// qorientationsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOrientationReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Orientation { Undefined, TopUp, TopDown, LeftUp, RightUp, FaceUp, FaceDown, }; QOrientationReading::Orientation orientation() const; void setOrientation(QOrientationReading::Orientation orientation); }; %End %If (Qt_5_1_0 -) class QOrientationFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QOrientationReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QOrientationSensor : QSensor { %TypeHeaderCode #include %End public: explicit QOrientationSensor(QObject *parent /TransferThis/ = 0); virtual ~QOrientationSensor(); QOrientationReading *reading() const; private: QOrientationSensor(const QOrientationSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qpressuresensor.sip0000644000076500000240000000336612613140040022011 0ustar philstaff00000000000000// qpressuresensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QPressureReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal pressure() const; void setPressure(qreal pressure); %If (Qt_5_2_0 -) qreal temperature() const; %End %If (Qt_5_2_0 -) void setTemperature(qreal temperature); %End }; %End %If (Qt_5_1_0 -) class QPressureFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QPressureReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QPressureSensor : QSensor { %TypeHeaderCode #include %End public: explicit QPressureSensor(QObject *parent /TransferThis/ = 0); virtual ~QPressureSensor(); QPressureReading *reading() const; private: QPressureSensor(const QPressureSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qproximitysensor.sip0000644000076500000240000000320112613140040022171 0ustar philstaff00000000000000// qproximitysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QProximityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool close() const; void setClose(bool close); }; %End %If (Qt_5_1_0 -) class QProximityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QProximityReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QProximitySensor : QSensor { %TypeHeaderCode #include %End public: explicit QProximitySensor(QObject *parent /TransferThis/ = 0); virtual ~QProximitySensor(); QProximityReading *reading() const; private: QProximitySensor(const QProximitySensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qrotationsensor.sip0000644000076500000240000000341512613140040021773 0ustar philstaff00000000000000// qrotationsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QRotationReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; qreal y() const; qreal z() const; void setFromEuler(qreal x, qreal y, qreal z); }; %End %If (Qt_5_1_0 -) class QRotationFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QRotationReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QRotationSensor : QSensor { %TypeHeaderCode #include %End public: explicit QRotationSensor(QObject *parent /TransferThis/ = 0); virtual ~QRotationSensor(); QRotationReading *reading() const; bool hasZ() const; void setHasZ(bool hasZ); signals: void hasZChanged(bool hasZ); private: QRotationSensor(const QRotationSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qsensor.sip0000644000076500000240000001734512613140040020222 0ustar philstaff00000000000000// qsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) typedef quint64 qtimestamp; %End %If (Qt_5_1_0 -) typedef QList> qrangelist; %End %If (Qt_5_1_0 -) struct qoutputrange { %TypeHeaderCode #include %End qreal minimum; qreal maximum; qreal accuracy; }; %End %If (Qt_5_1_0 -) typedef QList qoutputrangelist; %End %If (Qt_5_1_0 -) class QSensorReading : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSensorReading(); quint64 timestamp() const; void setTimestamp(quint64 timestamp); int valueCount() const; QVariant value(int index) const; private: QSensorReading(const QSensorReading &); }; %End %If (Qt_5_1_0 -) class QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QSensorReading *reading) = 0; protected: QSensorFilter(); virtual ~QSensorFilter(); }; %End %If (Qt_5_1_0 -) class QSensor : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSensorReading, &sipType_QSensorReading, 2, 1}, {sipName_QSensor, &sipType_QSensor, 19, -1}, {sipName_QTiltReading, &sipType_QTiltReading, -1, 3}, {sipName_QTapReading, &sipType_QTapReading, -1, 4}, {sipName_QProximityReading, &sipType_QProximityReading, -1, 5}, {sipName_QHolsterReading, &sipType_QHolsterReading, -1, 6}, #if QT_VERSION >= 0x050400 {sipName_QDistanceReading, &sipType_QDistanceReading, -1, 7}, #else {0, 0, -1, 7}, #endif {sipName_QAmbientLightReading, &sipType_QAmbientLightReading, -1, 8}, {sipName_QPressureReading, &sipType_QPressureReading, -1, 9}, {sipName_QAmbientTemperatureReading, &sipType_QAmbientTemperatureReading, -1, 10}, {sipName_QMagnetometerReading, &sipType_QMagnetometerReading, -1, 11}, {sipName_QOrientationReading, &sipType_QOrientationReading, -1, 12}, {sipName_QGyroscopeReading, &sipType_QGyroscopeReading, -1, 13}, {sipName_QAltimeterReading, &sipType_QAltimeterReading, -1, 14}, {sipName_QIRProximityReading, &sipType_QIRProximityReading, -1, 15}, {sipName_QLightReading, &sipType_QLightReading, -1, 16}, {sipName_QRotationReading, &sipType_QRotationReading, -1, 17}, {sipName_QCompassReading, &sipType_QCompassReading, -1, 18}, {sipName_QAccelerometerReading, &sipType_QAccelerometerReading, -1, -1}, {sipName_QGyroscope, &sipType_QGyroscope, -1, 20}, {sipName_QIRProximitySensor, &sipType_QIRProximitySensor, -1, 21}, {sipName_QAccelerometer, &sipType_QAccelerometer, -1, 22}, {sipName_QProximitySensor, &sipType_QProximitySensor, -1, 23}, {sipName_QTiltSensor, &sipType_QTiltSensor, -1, 24}, {sipName_QHolsterSensor, &sipType_QHolsterSensor, -1, 25}, {sipName_QAmbientLightSensor, &sipType_QAmbientLightSensor, -1, 26}, {sipName_QOrientationSensor, &sipType_QOrientationSensor, -1, 27}, {sipName_QTapSensor, &sipType_QTapSensor, -1, 28}, {sipName_QAmbientTemperatureSensor, &sipType_QAmbientTemperatureSensor, -1, 29}, {sipName_QMagnetometer, &sipType_QMagnetometer, -1, 30}, {sipName_QPressureSensor, &sipType_QPressureSensor, -1, 31}, #if QT_VERSION >= 0x050400 {sipName_QDistanceSensor, &sipType_QDistanceSensor, -1, 32}, #else {0, 0, -1, 32}, #endif {sipName_QRotationSensor, &sipType_QRotationSensor, -1, 33}, {sipName_QCompass, &sipType_QCompass, -1, 34}, {sipName_QAltimeter, &sipType_QAltimeter, -1, 35}, {sipName_QLightSensor, &sipType_QLightSensor, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Feature { Buffering, AlwaysOn, GeoValues, FieldOfView, AccelerationMode, SkipDuplicates, AxesOrientation, %If (Qt_5_2_0 -) PressureSensorTemperature, %End }; enum AxesOrientationMode { FixedOrientation, AutomaticOrientation, UserOrientation, }; QSensor(const QByteArray &type, QObject *parent /TransferThis/ = 0); virtual ~QSensor(); QByteArray identifier() const; void setIdentifier(const QByteArray &identifier); QByteArray type() const; bool connectToBackend(); bool isConnectedToBackend() const; bool isBusy() const; void setActive(bool active); bool isActive() const; bool isAlwaysOn() const; void setAlwaysOn(bool alwaysOn); bool skipDuplicates() const; void setSkipDuplicates(bool skipDuplicates); qrangelist availableDataRates() const; int dataRate() const; void setDataRate(int rate); qoutputrangelist outputRanges() const; int outputRange() const; void setOutputRange(int index); QString description() const; int error() const; void addFilter(QSensorFilter *filter); void removeFilter(QSensorFilter *filter); QList filters() const; QSensorReading *reading() const; static QList sensorTypes(); static QList sensorsForType(const QByteArray &type); static QByteArray defaultSensorForType(const QByteArray &type); bool isFeatureSupported(QSensor::Feature feature) const; QSensor::AxesOrientationMode axesOrientationMode() const; void setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode); int currentOrientation() const; void setCurrentOrientation(int currentOrientation); int userOrientation() const; void setUserOrientation(int userOrientation); int maxBufferSize() const; void setMaxBufferSize(int maxBufferSize); int efficientBufferSize() const; void setEfficientBufferSize(int efficientBufferSize); int bufferSize() const; void setBufferSize(int bufferSize); public slots: bool start(); void stop(); signals: void busyChanged(); void activeChanged(); void readingChanged(); void sensorError(int error); void availableSensorsChanged(); void alwaysOnChanged(); void dataRateChanged(); void skipDuplicatesChanged(bool skipDuplicates); void axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode); void currentOrientationChanged(int currentOrientation); void userOrientationChanged(int userOrientation); void maxBufferSizeChanged(int maxBufferSize); void efficientBufferSizeChanged(int efficientBufferSize); void bufferSizeChanged(int bufferSize); private: QSensor(const QSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qtapsensor.sip0000644000076500000240000000411512613140040020716 0ustar philstaff00000000000000// qtapsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QTapReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum TapDirection { Undefined, X, Y, Z, X_Pos, Y_Pos, Z_Pos, X_Neg, Y_Neg, Z_Neg, X_Both, Y_Both, Z_Both, }; QTapReading::TapDirection tapDirection() const; void setTapDirection(QTapReading::TapDirection tapDirection); bool isDoubleTap() const; void setDoubleTap(bool doubleTap); }; %End %If (Qt_5_1_0 -) class QTapFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QTapReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QTapSensor : QSensor { %TypeHeaderCode #include %End public: explicit QTapSensor(QObject *parent /TransferThis/ = 0); virtual ~QTapSensor(); QTapReading *reading() const; bool returnDoubleTapEvents() const; void setReturnDoubleTapEvents(bool returnDoubleTapEvents); signals: void returnDoubleTapEventsChanged(bool returnDoubleTapEvents); private: QTapSensor(const QTapSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/qtiltsensor.sip0000644000076500000240000000323112613140040021104 0ustar philstaff00000000000000// qtiltsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QTiltReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal yRotation() const; void setYRotation(qreal y); qreal xRotation() const; void setXRotation(qreal x); }; %End %If (Qt_5_1_0 -) class QTiltFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QTiltReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QTiltSensor : QSensor { %TypeHeaderCode #include %End public: explicit QTiltSensor(QObject *parent /TransferThis/ = 0); virtual ~QTiltSensor(); QTiltReading *reading() const; void calibrate(); private: QTiltSensor(const QTiltSensor &); }; %End PyQt-gpl-5.5.1/sip/QtSensors/QtSensorsmod.sip0000644000076500000240000000453112613140040021162 0ustar philstaff00000000000000// QtSensorsmod.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSensors, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qaccelerometer.sip %Include qaltimeter.sip %Include qambientlightsensor.sip %Include qambienttemperaturesensor.sip %Include qcompass.sip %Include qdistancesensor.sip %Include qgyroscope.sip %Include qholstersensor.sip %Include qirproximitysensor.sip %Include qlightsensor.sip %Include qmagnetometer.sip %Include qorientationsensor.sip %Include qpressuresensor.sip %Include qproximitysensor.sip %Include qsensor.sip %Include qtapsensor.sip %Include qtiltsensor.sip %Include qrotationsensor.sip PyQt-gpl-5.5.1/sip/QtSerialPort/0000755000076500000240000000000012613140040016431 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtSerialPort/qserialport.sip0000644000076500000240000002175412613140040021524 0ustar philstaff00000000000000// qserialport.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QSerialPort : QIODevice { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSerialPort, &sipType_QSerialPort, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Direction { Input, Output, AllDirections, }; typedef QFlags Directions; enum BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, Baud38400, Baud57600, Baud115200, UnknownBaud, }; enum DataBits { Data5, Data6, Data7, Data8, UnknownDataBits, }; enum Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity, UnknownParity, }; enum StopBits { OneStop, OneAndHalfStop, TwoStop, UnknownStopBits, }; enum FlowControl { NoFlowControl, HardwareControl, SoftwareControl, UnknownFlowControl, }; enum PinoutSignal { NoSignal, TransmittedDataSignal, ReceivedDataSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, RequestToSendSignal, ClearToSendSignal, SecondaryTransmittedDataSignal, SecondaryReceivedDataSignal, }; typedef QFlags PinoutSignals; enum DataErrorPolicy { SkipPolicy, PassZeroPolicy, IgnorePolicy, StopReceivingPolicy, UnknownPolicy, }; enum SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, ParityError, FramingError, BreakConditionError, WriteError, ReadError, ResourceError, UnsupportedOperationError, %If (Qt_5_2_0 -) TimeoutError, %End %If (Qt_5_2_0 -) NotOpenError, %End UnknownError, }; explicit QSerialPort(QObject *parent /TransferThis/ = 0); QSerialPort(const QString &name, QObject *parent /TransferThis/ = 0); QSerialPort(const QSerialPortInfo &info, QObject *parent /TransferThis/ = 0); virtual ~QSerialPort(); void setPortName(const QString &name); QString portName() const; void setPort(const QSerialPortInfo &info); virtual bool open(QFlags mode); virtual void close() /ReleaseGIL/; void setSettingsRestoredOnClose(bool restore); bool settingsRestoredOnClose() const; bool setBaudRate(qint32 baudRate, QFlags dir = QSerialPort::AllDirections); qint32 baudRate(QFlags dir = QSerialPort::AllDirections) const; bool setDataBits(QSerialPort::DataBits dataBits); QSerialPort::DataBits dataBits() const; bool setParity(QSerialPort::Parity parity); QSerialPort::Parity parity() const; bool setStopBits(QSerialPort::StopBits stopBits); QSerialPort::StopBits stopBits() const; bool setFlowControl(QSerialPort::FlowControl flow); QSerialPort::FlowControl flowControl() const; bool setDataTerminalReady(bool set); bool isDataTerminalReady(); bool setRequestToSend(bool set); bool isRequestToSend(); QFlags pinoutSignals(); bool flush() /ReleaseGIL/; bool clear(QFlags dir = QSerialPort::AllDirections); virtual bool atEnd() const; bool setDataErrorPolicy(QSerialPort::DataErrorPolicy policy = QSerialPort::IgnorePolicy); QSerialPort::DataErrorPolicy dataErrorPolicy() const; QSerialPort::SerialPortError error() const; void clearError(); qint64 readBufferSize() const; void setReadBufferSize(qint64 size); virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual bool waitForReadyRead(int msecs) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs) /ReleaseGIL/; bool sendBreak(int duration = 0) /ReleaseGIL/; bool setBreakEnabled(bool enabled = true); signals: void baudRateChanged(qint32 baudRate, QFlags dir); void dataBitsChanged(QSerialPort::DataBits dataBits); void parityChanged(QSerialPort::Parity parity); void stopBitsChanged(QSerialPort::StopBits stopBits); void flowControlChanged(QSerialPort::FlowControl flow); void dataErrorPolicyChanged(QSerialPort::DataErrorPolicy policy); void dataTerminalReadyChanged(bool set); void requestToSendChanged(bool set); void error(QSerialPort::SerialPortError serialPortError); void settingsRestoredOnCloseChanged(bool restore); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSerialPort::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /DocType="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSerialPort::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 maxSize /ArraySize/) /ReleaseGIL/; public: %If (Qt_5_2_0 -) %If (WS_X11 || WS_MACX) int handle() const; %End %End %If (Qt_5_2_0 -) %If (WS_WIN) void *handle() const; %End %End %If (Qt_5_5_0 -) bool isBreakEnabled() const; %End signals: %If (Qt_5_5_0 -) void breakEnabledChanged(bool set); %End private: QSerialPort(const QSerialPort &); }; %End %If (Qt_5_1_0 -) QFlags operator|(QSerialPort::Direction f1, QFlags f2); %End %If (Qt_5_1_0 -) QFlags operator|(QSerialPort::PinoutSignal f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtSerialPort/qserialportinfo.sip0000644000076500000240000000344312613140040022373 0ustar philstaff00000000000000// qserialportinfo.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QSerialPortInfo { %TypeHeaderCode #include %End public: QSerialPortInfo(); explicit QSerialPortInfo(const QSerialPort &port); explicit QSerialPortInfo(const QString &name); QSerialPortInfo(const QSerialPortInfo &other); ~QSerialPortInfo(); void swap(QSerialPortInfo &other); QString portName() const; QString systemLocation() const; QString description() const; QString manufacturer() const; quint16 vendorIdentifier() const; quint16 productIdentifier() const; bool hasVendorIdentifier() const; bool hasProductIdentifier() const; bool isBusy() const; bool isValid() const; static QList standardBaudRates(); static QList availablePorts(); bool isNull() const; %If (Qt_5_3_0 -) QString serialNumber() const; %End }; %End PyQt-gpl-5.5.1/sip/QtSerialPort/QtSerialPortmod.sip0000644000076500000240000000364212613140040022244 0ustar philstaff00000000000000// QtSerialPortmod.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSerialPort, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qserialport.sip %Include qserialportinfo.sip PyQt-gpl-5.5.1/sip/QtSql/0000755000076500000240000000000012613140040015104 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtSql/qsql.sip0000644000076500000240000000305212613140040016601 0ustar philstaff00000000000000// qsql.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QSql { %TypeHeaderCode #include %End enum Location { BeforeFirstRow, AfterLastRow, }; enum ParamTypeFlag { In, Out, InOut, Binary, }; typedef QFlags ParamType; enum TableType { Tables, SystemTables, Views, AllTables, }; enum NumericalPrecisionPolicy { LowPrecisionInt32, LowPrecisionInt64, LowPrecisionDouble, HighPrecision, }; }; QFlags operator|(QSql::ParamTypeFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtSql/qsqldatabase.sip0000644000076500000240000000732712613140040020277 0ustar philstaff00000000000000// qsqldatabase.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlDriverCreatorBase /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QSqlDriverCreatorBase(); virtual QSqlDriver *createObject() const = 0 /Factory/; }; class QSqlDatabase { %TypeHeaderCode #include %End public: QSqlDatabase(); QSqlDatabase(const QSqlDatabase &other); ~QSqlDatabase(); bool open() /ReleaseGIL/; bool open(const QString &user, const QString &password) /ReleaseGIL/; void close(); bool isOpen() const; bool isOpenError() const; QStringList tables(QSql::TableType type = QSql::Tables) const; QSqlIndex primaryIndex(const QString &tablename) const; QSqlRecord record(const QString &tablename) const; QSqlQuery exec(const QString &query /DocValue="''"/ = QString()) const /PyName=exec_,ReleaseGIL/; %If (Py_v3) QSqlQuery exec(const QString &query /DocValue="''"/ = QString()) const /ReleaseGIL/; %End QSqlError lastError() const; bool isValid() const; bool transaction() /ReleaseGIL/; bool commit() /ReleaseGIL/; bool rollback() /ReleaseGIL/; void setDatabaseName(const QString &name); void setUserName(const QString &name); void setPassword(const QString &password); void setHostName(const QString &host); void setPort(int p); void setConnectOptions(const QString &options /DocValue="''"/ = QString()); QString databaseName() const; QString userName() const; QString password() const; QString hostName() const; QString driverName() const; int port() const; QString connectOptions() const; QString connectionName() const; QSqlDriver *driver() const; static QSqlDatabase addDatabase(const QString &type, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QSqlDatabase addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName); static QSqlDatabase database(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection), bool open = true); static void removeDatabase(const QString &connectionName); static bool contains(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QStringList drivers(); static QStringList connectionNames(); static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator /Transfer/); static bool isDriverAvailable(const QString &name); protected: explicit QSqlDatabase(const QString &type); explicit QSqlDatabase(QSqlDriver *driver); public: void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; }; PyQt-gpl-5.5.1/sip/QtSql/qsqldriver.sip0000644000076500000240000001177612613140040020031 0ustar philstaff00000000000000// qsqldriver.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlDriver : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSqlQueryModel, &sipType_QSqlQueryModel, 3, 1}, {sipName_QSqlRelationalDelegate, &sipType_QSqlRelationalDelegate, -1, 2}, {sipName_QSqlDriver, &sipType_QSqlDriver, -1, -1}, {sipName_QSqlTableModel, &sipType_QSqlTableModel, 4, -1}, {sipName_QSqlRelationalTableModel, &sipType_QSqlRelationalTableModel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries, NamedPlaceholders, PositionalPlaceholders, LastInsertId, BatchOperations, SimpleLocking, LowPrecisionNumbers, EventNotifications, FinishQuery, MultipleResultSets, }; enum StatementType { WhereStatement, SelectStatement, UpdateStatement, InsertStatement, DeleteStatement, }; enum IdentifierType { FieldName, TableName, }; explicit QSqlDriver(QObject *parent /TransferThis/ = 0); virtual ~QSqlDriver(); virtual bool isOpen() const; bool isOpenError() const; virtual bool beginTransaction() /ReleaseGIL/; virtual bool commitTransaction() /ReleaseGIL/; virtual bool rollbackTransaction() /ReleaseGIL/; virtual QStringList tables(QSql::TableType tableType) const; virtual QSqlIndex primaryIndex(const QString &tableName) const; virtual QSqlRecord record(const QString &tableName) const; virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const; virtual QString escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) const; virtual QString sqlStatement(QSqlDriver::StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const; QSqlError lastError() const; virtual QVariant handle() const; virtual bool hasFeature(QSqlDriver::DriverFeature f) const = 0; virtual void close() = 0; virtual QSqlResult *createResult() const = 0 /Factory/; virtual bool open(const QString &db, const QString &user /DocValue="''"/ = QString(), const QString &password /DocValue="''"/ = QString(), const QString &host /DocValue="''"/ = QString(), int port = -1, const QString &options /DocValue="''"/ = QString()) = 0 /ReleaseGIL/; protected: virtual void setOpen(bool o); virtual void setOpenError(bool e); virtual void setLastError(const QSqlError &e); public: virtual bool subscribeToNotification(const QString &name); virtual bool unsubscribeFromNotification(const QString &name); virtual QStringList subscribedToNotifications() const; enum NotificationSource { UnknownSource, SelfSource, OtherSource, }; signals: void notification(const QString &name); void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload); public: virtual bool isIdentifierEscaped(const QString &identifier, QSqlDriver::IdentifierType type) const; virtual QString stripDelimiters(const QString &identifier, QSqlDriver::IdentifierType type) const; void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; %If (Qt_5_4_0 -) enum DbmsType { UnknownDbms, MSSqlServer, MySqlServer, PostgreSQL, Oracle, Sybase, SQLite, Interbase, DB2, }; %End %If (Qt_5_4_0 -) QSqlDriver::DbmsType dbmsType() const; %End private: QSqlDriver(const QSqlDriver &); }; PyQt-gpl-5.5.1/sip/QtSql/qsqlerror.sip0000644000076500000240000000443312613140040017657 0ustar philstaff00000000000000// qsqlerror.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlError { %TypeHeaderCode #include %End public: enum ErrorType { NoError, ConnectionError, StatementError, TransactionError, UnknownError, }; %If (Qt_5_3_0 -) QSqlError(const QString &driverText /DocValue="''"/ = QString(), const QString &databaseText /DocValue="''"/ = QString(), QSqlError::ErrorType type = QSqlError::NoError, const QString &errorCode = QString()); %End %If (Qt_5_3_0 -) QSqlError(const QString &driverText, const QString &databaseText, QSqlError::ErrorType type, int number); %End %If (- Qt_5_3_0) QSqlError(const QString &driverText /DocValue="''"/ = QString(), const QString &databaseText /DocValue="''"/ = QString(), QSqlError::ErrorType type = QSqlError::NoError, int number = -1); %End QSqlError(const QSqlError &other); ~QSqlError(); QString driverText() const; void setDriverText(const QString &driverText); QString databaseText() const; void setDatabaseText(const QString &databaseText); QSqlError::ErrorType type() const; void setType(QSqlError::ErrorType type); int number() const; void setNumber(int number); QString text() const; bool isValid() const; bool operator==(const QSqlError &other) const; bool operator!=(const QSqlError &other) const; %If (Qt_5_3_0 -) QString nativeErrorCode() const; %End }; PyQt-gpl-5.5.1/sip/QtSql/qsqlfield.sip0000644000076500000240000000433712613140040017614 0ustar philstaff00000000000000// qsqlfield.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlField { %TypeHeaderCode #include %End public: enum RequiredStatus { Unknown, Optional, Required, }; QSqlField(const QString &fieldName /DocValue="''"/ = QString(), QVariant::Type type = QVariant::Invalid); QSqlField(const QSqlField &other); bool operator==(const QSqlField &other) const; bool operator!=(const QSqlField &other) const; ~QSqlField(); void setValue(const QVariant &value); QVariant value() const; void setName(const QString &name); QString name() const; bool isNull() const; void setReadOnly(bool readOnly); bool isReadOnly() const; void clear(); QVariant::Type type() const; bool isAutoValue() const; void setType(QVariant::Type type); void setRequiredStatus(QSqlField::RequiredStatus status); void setRequired(bool required); void setLength(int fieldLength); void setPrecision(int precision); void setDefaultValue(const QVariant &value); void setSqlType(int type); void setGenerated(bool gen); void setAutoValue(bool autoVal); QSqlField::RequiredStatus requiredStatus() const; int length() const; int precision() const; QVariant defaultValue() const; int typeID() const; bool isGenerated() const; bool isValid() const; }; PyQt-gpl-5.5.1/sip/QtSql/qsqlindex.sip0000644000076500000240000000277112613140040017640 0ustar philstaff00000000000000// qsqlindex.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlIndex : QSqlRecord { %TypeHeaderCode #include %End public: QSqlIndex(const QString &cursorName /DocValue="''"/ = QString(), const QString &name /DocValue="''"/ = QString()); QSqlIndex(const QSqlIndex &other); ~QSqlIndex(); void setCursorName(const QString &cursorName); QString cursorName() const; void setName(const QString &name); QString name() const; void append(const QSqlField &field); void append(const QSqlField &field, bool desc); bool isDescending(int i) const; void setDescending(int i, bool desc); }; PyQt-gpl-5.5.1/sip/QtSql/qsqlquery.sip0000644000076500000240000000610312613140040017667 0ustar philstaff00000000000000// qsqlquery.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlQuery { %TypeHeaderCode #include %End public: enum BatchExecutionMode { ValuesAsRows, ValuesAsColumns, }; explicit QSqlQuery(QSqlResult *r); QSqlQuery(const QString &query /DocValue="''"/ = QString(), QSqlDatabase db = QSqlDatabase()) /ReleaseGIL/; explicit QSqlQuery(QSqlDatabase db); QSqlQuery(const QSqlQuery &other); ~QSqlQuery(); bool isValid() const; bool isActive() const; bool isNull(int field) const; %If (Qt_5_3_0 -) bool isNull(const QString &name) const; %End int at() const; QString lastQuery() const; int numRowsAffected() const; QSqlError lastError() const; bool isSelect() const; int size() const; const QSqlDriver *driver() const; const QSqlResult *result() const; bool isForwardOnly() const; QSqlRecord record() const; void setForwardOnly(bool forward); bool exec(const QString &query) /PyName=exec_,ReleaseGIL/; %If (Py_v3) bool exec(const QString &query) /ReleaseGIL/; %End QVariant value(int i) const; QVariant value(const QString &name) const; bool seek(int index, bool relative = false) /ReleaseGIL/; bool next() /ReleaseGIL/; bool previous() /ReleaseGIL/; bool first() /ReleaseGIL/; bool last() /ReleaseGIL/; void clear() /ReleaseGIL/; bool exec() /PyName=exec_,ReleaseGIL/; bool execBatch(QSqlQuery::BatchExecutionMode mode = QSqlQuery::ValuesAsRows); bool prepare(const QString &query) /ReleaseGIL/; void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType type = QSql::In); void bindValue(int pos, const QVariant &val, QSql::ParamType type = QSql::In); void addBindValue(const QVariant &val, QSql::ParamType type = QSql::In); QVariant boundValue(const QString &placeholder) const; QVariant boundValue(int pos) const; QMap boundValues() const; QString executedQuery() const; QVariant lastInsertId() const; void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; void finish(); bool nextResult(); }; PyQt-gpl-5.5.1/sip/QtSql/qsqlquerymodel.sip0000644000076500000240000000547712613140040020725 0ustar philstaff00000000000000// qsqlquerymodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlQueryModel : QAbstractTableModel { %TypeHeaderCode #include %End public: explicit QSqlQueryModel(QObject *parent /TransferThis/ = 0); virtual ~QSqlQueryModel(); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; QSqlRecord record(int row) const; QSqlRecord record() const; virtual QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); void setQuery(const QSqlQuery &query); void setQuery(const QString &query, const QSqlDatabase &db = QSqlDatabase()); QSqlQuery query() const; virtual void clear(); QSqlError lastError() const; virtual void fetchMore(const QModelIndex &parent = QModelIndex()); virtual bool canFetchMore(const QModelIndex &parent = QModelIndex()) const; protected: virtual void queryChange(); virtual QModelIndex indexInQuery(const QModelIndex &item) const; void setLastError(const QSqlError &error); void beginResetModel(); void endResetModel(); void beginInsertRows(const QModelIndex &parent, int first, int last); void endInsertRows(); void beginRemoveRows(const QModelIndex &parent, int first, int last); void endRemoveRows(); void beginInsertColumns(const QModelIndex &parent, int first, int last); void endInsertColumns(); void beginRemoveColumns(const QModelIndex &parent, int first, int last); void endRemoveColumns(); }; PyQt-gpl-5.5.1/sip/QtSql/qsqlrecord.sip0000644000076500000240000000435212613140040020004 0ustar philstaff00000000000000// qsqlrecord.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRecord { %TypeHeaderCode #include %End public: QSqlRecord(); QSqlRecord(const QSqlRecord &other); ~QSqlRecord(); bool operator==(const QSqlRecord &other) const; bool operator!=(const QSqlRecord &other) const; QVariant value(int i) const; QVariant value(const QString &name) const; void setValue(int i, const QVariant &val); void setValue(const QString &name, const QVariant &val); void setNull(int i); void setNull(const QString &name); bool isNull(int i) const; bool isNull(const QString &name) const; int indexOf(const QString &name) const; QString fieldName(int i) const; QSqlField field(int i) const; QSqlField field(const QString &name) const; bool isGenerated(int i) const; bool isGenerated(const QString &name) const; void setGenerated(const QString &name, bool generated); void setGenerated(int i, bool generated); void append(const QSqlField &field); void replace(int pos, const QSqlField &field); void insert(int pos, const QSqlField &field); void remove(int pos); bool isEmpty() const; bool contains(const QString &name) const; void clear(); void clearValues(); int count() const /__len__/; %If (Qt_5_1_0 -) QSqlRecord keyValues(const QSqlRecord &keyFields) const; %End }; PyQt-gpl-5.5.1/sip/QtSql/qsqlrelationaldelegate.sip0000644000076500000240000000267112613140040022355 0ustar philstaff00000000000000// qsqlrelationaldelegate.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRelationalDelegate : QItemDelegate { %TypeHeaderCode #include %End public: explicit QSqlRelationalDelegate(QObject *parent /TransferThis/ = 0); virtual ~QSqlRelationalDelegate(); virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; }; PyQt-gpl-5.5.1/sip/QtSql/qsqlrelationaltablemodel.sip0000644000076500000240000000475712613140040022722 0ustar philstaff00000000000000// qsqlrelationaltablemodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRelation { %TypeHeaderCode #include %End public: QSqlRelation(); QSqlRelation(const QString &aTableName, const QString &indexCol, const QString &displayCol); QString tableName() const; QString indexColumn() const; QString displayColumn() const; bool isValid() const; }; class QSqlRelationalTableModel : QSqlTableModel { %TypeHeaderCode #include %End public: QSqlRelationalTableModel(QObject *parent /TransferThis/ = 0, QSqlDatabase db = QSqlDatabase()); virtual ~QSqlRelationalTableModel(); virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual void clear(); virtual bool select(); virtual void setTable(const QString &tableName); virtual void setRelation(int column, const QSqlRelation &relation); QSqlRelation relation(int column) const; virtual QSqlTableModel *relationModel(int column) const; virtual void revertRow(int row); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); protected: virtual QString selectStatement() const; virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual QString orderByClause() const; virtual bool insertRowIntoTable(const QSqlRecord &values); public: enum JoinMode { InnerJoin, LeftJoin, }; void setJoinMode(QSqlRelationalTableModel::JoinMode joinMode); }; PyQt-gpl-5.5.1/sip/QtSql/qsqlresult.sip0000644000076500000240000000624712613140040020051 0ustar philstaff00000000000000// qsqlresult.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlResult /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QSqlResult(); virtual QVariant handle() const; protected: enum BindingSyntax { PositionalBinding, NamedBinding, }; explicit QSqlResult(const QSqlDriver *db); int at() const; QString lastQuery() const; QSqlError lastError() const; bool isValid() const; bool isActive() const; bool isSelect() const; bool isForwardOnly() const; const QSqlDriver *driver() const; virtual void setAt(int at); virtual void setActive(bool a); virtual void setLastError(const QSqlError &e); virtual void setQuery(const QString &query); virtual void setSelect(bool s); virtual void setForwardOnly(bool forward); virtual bool exec() /PyName=exec_,ReleaseGIL/; %If (Py_v3) virtual bool exec() /ReleaseGIL/; %End virtual bool prepare(const QString &query) /ReleaseGIL/; virtual bool savePrepare(const QString &sqlquery); virtual void bindValue(int pos, const QVariant &val, QSql::ParamType type); virtual void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType type); void addBindValue(const QVariant &val, QSql::ParamType type); QVariant boundValue(const QString &placeholder) const; QVariant boundValue(int pos) const; QSql::ParamType bindValueType(const QString &placeholder) const; QSql::ParamType bindValueType(int pos) const; int boundValueCount() const; QVector &boundValues() const; QString executedQuery() const; QString boundValueName(int pos) const; void clear(); bool hasOutValues() const; QSqlResult::BindingSyntax bindingSyntax() const; virtual QVariant data(int i) = 0; virtual bool isNull(int i) = 0; virtual bool reset(const QString &sqlquery) = 0; virtual bool fetch(int i) = 0 /ReleaseGIL/; virtual bool fetchNext() /ReleaseGIL/; virtual bool fetchPrevious() /ReleaseGIL/; virtual bool fetchFirst() = 0 /ReleaseGIL/; virtual bool fetchLast() = 0 /ReleaseGIL/; virtual int size() = 0; virtual int numRowsAffected() = 0; virtual QSqlRecord record() const; virtual QVariant lastInsertId() const; private: QSqlResult(const QSqlResult &); }; PyQt-gpl-5.5.1/sip/QtSql/qsqltablemodel.sip0000644000076500000240000000722612613140040020641 0ustar philstaff00000000000000// qsqltablemodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlTableModel : QSqlQueryModel { %TypeHeaderCode #include %End public: enum EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit, }; QSqlTableModel(QObject *parent /TransferThis/ = 0, QSqlDatabase db = QSqlDatabase()); virtual ~QSqlTableModel(); virtual bool select(); virtual void setTable(const QString &tableName); QString tableName() const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; bool isDirty(const QModelIndex &index) const; bool isDirty() const; virtual void clear(); virtual void setEditStrategy(QSqlTableModel::EditStrategy strategy); QSqlTableModel::EditStrategy editStrategy() const; QSqlIndex primaryKey() const; QSqlDatabase database() const; int fieldIndex(const QString &fieldName) const; virtual void sort(int column, Qt::SortOrder order); virtual void setSort(int column, Qt::SortOrder order); QString filter() const; virtual void setFilter(const QString &filter); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); bool insertRecord(int row, const QSqlRecord &record); bool setRecord(int row, const QSqlRecord &record); virtual void revertRow(int row); public slots: virtual bool submit(); virtual void revert(); bool submitAll(); void revertAll(); signals: void primeInsert(int row, QSqlRecord &record); void beforeInsert(QSqlRecord &record); void beforeUpdate(int row, QSqlRecord &record); void beforeDelete(int row); protected: virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual bool insertRowIntoTable(const QSqlRecord &values); virtual bool deleteRowFromTable(int row); virtual QString orderByClause() const; virtual QString selectStatement() const; void setPrimaryKey(const QSqlIndex &key); void setQuery(const QSqlQuery &query); virtual QModelIndex indexInQuery(const QModelIndex &item) const; public: virtual bool selectRow(int row); QSqlRecord record() const; QSqlRecord record(int row) const; protected: %If (Qt_5_1_0 -) QSqlRecord primaryValues(int row) const; %End }; PyQt-gpl-5.5.1/sip/QtSql/QtSqlmod.sip0000644000076500000240000000431412613140040017367 0ustar philstaff00000000000000// QtSqlmod.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSql, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qsql.sip %Include qsqldatabase.sip %Include qsqldriver.sip %Include qsqlerror.sip %Include qsqlfield.sip %Include qsqlindex.sip %Include qsqlquery.sip %Include qsqlquerymodel.sip %Include qsqlrecord.sip %Include qsqlrelationaldelegate.sip %Include qsqlrelationaltablemodel.sip %Include qsqlresult.sip %Include qsqltablemodel.sip PyQt-gpl-5.5.1/sip/QtSvg/0000755000076500000240000000000012613140040015104 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtSvg/qgraphicssvgitem.sip0000644000076500000240000000405512613140040021205 0ustar philstaff00000000000000// qgraphicssvgitem.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsSvgItem : QGraphicsObject { %TypeHeaderCode #include %End %ConvertToSubClassCode if (sipCpp->type() == 13) { // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsSvgItem; } else sipType = 0; %End public: QGraphicsSvgItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent /TransferThis/ = 0); void setSharedRenderer(QSvgRenderer *renderer /KeepReference/); QSvgRenderer *renderer() const; void setElementId(const QString &id); QString elementId() const; void setMaximumCacheSize(const QSize &size); QSize maximumCacheSize() const; virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual int type() const; private: QGraphicsSvgItem(const QGraphicsSvgItem &); }; %ModuleHeaderCode // This is needed by the %ConvertToSubClassCode. #include %End PyQt-gpl-5.5.1/sip/QtSvg/qsvggenerator.sip0000644000076500000240000000343312613140040020513 0ustar philstaff00000000000000// qsvggenerator.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgGenerator : QPaintDevice { %TypeHeaderCode #include %End public: QSvgGenerator(); virtual ~QSvgGenerator(); QSize size() const; void setSize(const QSize &size); QString fileName() const; void setFileName(const QString &fileName); QIODevice *outputDevice() const; void setOutputDevice(QIODevice *outputDevice); int resolution() const; void setResolution(int resolution); QString title() const; void setTitle(const QString &title); QString description() const; void setDescription(const QString &description); QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewBox); void setViewBox(const QRectF &viewBox); protected: virtual QPaintEngine *paintEngine() const; virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; }; PyQt-gpl-5.5.1/sip/QtSvg/qsvgrenderer.sip0000644000076500000240000000550012613140040020330 0ustar philstaff00000000000000// qsvgrenderer.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgRenderer : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSvgRenderer, &sipType_QSvgRenderer, -1, 1}, {sipName_QSvgWidget, &sipType_QSvgWidget, -1, 2}, {sipName_QGraphicsSvgItem, &sipType_QGraphicsSvgItem, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QSvgRenderer(QObject *parent /TransferThis/ = 0); QSvgRenderer(const QString &filename, QObject *parent /TransferThis/ = 0); QSvgRenderer(const QByteArray &contents, QObject *parent /TransferThis/ = 0); QSvgRenderer(QXmlStreamReader *contents, QObject *parent /TransferThis/ = 0); virtual ~QSvgRenderer(); bool isValid() const; QSize defaultSize() const; bool elementExists(const QString &id) const; QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewbox); void setViewBox(const QRectF &viewbox); bool animated() const; QRectF boundsOnElement(const QString &id) const; int framesPerSecond() const; void setFramesPerSecond(int num); int currentFrame() const; void setCurrentFrame(int); int animationDuration() const; public slots: bool load(const QString &filename); bool load(const QByteArray &contents); bool load(QXmlStreamReader *contents); void render(QPainter *p); void render(QPainter *p, const QRectF &bounds); void render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()); signals: void repaintNeeded(); }; PyQt-gpl-5.5.1/sip/QtSvg/qsvgwidget.sip0000644000076500000240000000266312613140040020014 0ustar philstaff00000000000000// qsvgwidget.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgWidget : QWidget { %TypeHeaderCode #include %End public: QSvgWidget(QWidget *parent /TransferThis/ = 0); QSvgWidget(const QString &file, QWidget *parent /TransferThis/ = 0); virtual ~QSvgWidget(); QSvgRenderer *renderer() const; virtual QSize sizeHint() const; public slots: void load(const QString &file); void load(const QByteArray &contents); protected: virtual void paintEvent(QPaintEvent *event); private: QSvgWidget(const QSvgWidget &); }; PyQt-gpl-5.5.1/sip/QtSvg/QtSvgmod.sip0000644000076500000240000000400012613140040017357 0ustar philstaff00000000000000// QtSvgmod.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSvg, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgraphicssvgitem.sip %Include qsvggenerator.sip %Include qsvgrenderer.sip %Include qsvgwidget.sip PyQt-gpl-5.5.1/sip/QtTest/0000755000076500000240000000000012613140040015264 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtTest/qsignalspy.sip0000644000076500000240000000601512613140040020175 0ustar philstaff00000000000000// qsignalspy.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSignalSpy : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = (sipCpp->inherits("QSignalSpy") ? sipType_QSignalSpy : 0); %End public: QSignalSpy(SIP_PYOBJECT signal /DocType="signal"/) [(const QObject *obj, const char *aSignal)]; %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt5_qttest_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) sipCpp = new sipQSignalSpy(sender, signal_signature.constData()); else if (sipError == sipErrorContinue) sipError = sipBadCallableArg(0, a0); %End bool isValid() const; QByteArray signal() const; bool wait(int timeout = 5000) /ReleaseGIL/; int __len__() const; %MethodCode sipRes = sipCpp->count(); %End QList __getitem__(int i) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QList(sipCpp->at((int)idx)); %End void __setitem__(int i, const QList &value); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qttest_get_pyqtsignal_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qttest_get_pyqtsignal_parts_t pyqt5_qttest_get_pyqtsignal_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qttest_get_pyqtsignal_parts_t pyqt5_qttest_get_pyqtsignal_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qttest_get_pyqtsignal_parts = (pyqt5_qttest_get_pyqtsignal_parts_t)sipImportSymbol("pyqt5_get_pyqtsignal_parts"); %End PyQt-gpl-5.5.1/sip/QtTest/qtestcase.sip0000644000076500000240000000203412613140040017774 0ustar philstaff00000000000000// qtestcase.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End void qSleep(int ms) /ReleaseGIL/; }; PyQt-gpl-5.5.1/sip/QtTest/qtestkeyboard.sip0000644000076500000240000000610512613140040020664 0ustar philstaff00000000000000// qtestkeyboard.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End enum KeyAction { Press, Release, Click, }; void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); }; PyQt-gpl-5.5.1/sip/QtTest/qtestmouse.sip0000644000076500000240000000527012613140040020216 0ustar philstaff00000000000000// qtestmouse.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove, }; void mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1); void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseEvent(QTest::MouseAction action, QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1); void waitForEvents() /ReleaseGIL/; void mouseEvent(QTest::MouseAction action, QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1); void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1); }; PyQt-gpl-5.5.1/sip/QtTest/qtestsystem.sip0000644000076500000240000000314012613140040020404 0ustar philstaff00000000000000// qtestsystem.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End void qWait(int ms) /ReleaseGIL/; %If (Qt_5_1_0 -) bool qWaitForWindowActive(QWindow *window, int timeout = 5000) /ReleaseGIL/; %End %If (- Qt_5_1_0) bool qWaitForWindowActive(QWindow *window, int timeout = 1000) /ReleaseGIL/; %End %If (Qt_5_1_0 -) bool qWaitForWindowExposed(QWindow *window, int timeout = 5000) /ReleaseGIL/; %End %If (- Qt_5_1_0) bool qWaitForWindowExposed(QWindow *window, int timeout = 1000) /ReleaseGIL/; %End bool qWaitForWindowActive(QWidget *widget, int timeout = 1000) /ReleaseGIL/; bool qWaitForWindowExposed(QWidget *widget, int timeout = 1000) /ReleaseGIL/; }; PyQt-gpl-5.5.1/sip/QtTest/qtesttouch.sip0000644000076500000240000000534312613140040020211 0ustar philstaff00000000000000// qtesttouch.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End class QTouchEventSequence { %TypeHeaderCode #include %End public: ~QTouchEventSequence(); QTest::QTouchEventSequence &press(int touchId, const QPoint &pt, QWindow *window = 0); QTest::QTouchEventSequence &move(int touchId, const QPoint &pt, QWindow *window = 0); QTest::QTouchEventSequence &release(int touchId, const QPoint &pt, QWindow *window = 0); QTest::QTouchEventSequence &stationary(int touchId); QTest::QTouchEventSequence &press(int touchId, const QPoint &pt, QWidget *widget) [QTest::QTouchEventSequence & (int touchId, const QPoint &pt, QWidget *widget = 0)]; QTest::QTouchEventSequence &move(int touchId, const QPoint &pt, QWidget *widget) [QTest::QTouchEventSequence & (int touchId, const QPoint &pt, QWidget *widget = 0)]; QTest::QTouchEventSequence &release(int touchId, const QPoint &pt, QWidget *widget) [QTest::QTouchEventSequence & (int touchId, const QPoint &pt, QWidget *widget = 0)]; void commit(bool processEvents = true) /ReleaseGIL/; private: QTouchEventSequence(QWidget *widget, QTouchDevice *aDevice, bool autoCommit); QTouchEventSequence(QWindow *window, QTouchDevice *aDevice, bool autoCommit); }; QTest::QTouchEventSequence touchEvent(QWidget *widget, QTouchDevice *device); %MethodCode // Disable auto-committing so that we can copy the instance around. sipRes = new QTest::QTouchEventSequence(QTest::touchEvent(a0, a1, false)); %End QTest::QTouchEventSequence touchEvent(QWindow *window, QTouchDevice *device); %MethodCode // Disable auto-committing so that we can copy the instance around. sipRes = new QTest::QTouchEventSequence(QTest::touchEvent(a0, a1, false)); %End }; PyQt-gpl-5.5.1/sip/QtTest/QtTestmod.sip0000644000076500000240000000402012613140040017721 0ustar philstaff00000000000000// QtTestmod.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtTest, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qsignalspy.sip %Include qtestcase.sip %Include qtestkeyboard.sip %Include qtestmouse.sip %Include qtestsystem.sip %Include qtesttouch.sip PyQt-gpl-5.5.1/sip/QtWebChannel/0000755000076500000240000000000012613140040016353 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWebChannel/QtWebChannelmod.sip0000644000076500000240000000365712613140040022116 0ustar philstaff00000000000000// QtWebChannelmod.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebChannel, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwebchannel.sip %Include qwebchannelabstracttransport.sip PyQt-gpl-5.5.1/sip/QtWebChannel/qwebchannel.sip0000644000076500000240000000442512613140040021364 0ustar philstaff00000000000000// qwebchannel.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebChannel : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebChannelAbstractTransport, &sipType_QWebChannelAbstractTransport, -1, 1}, {sipName_QWebChannel, &sipType_QWebChannel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebChannel(QObject *parent /TransferThis/ = 0); virtual ~QWebChannel(); void registerObjects(const QHash &objects); QHash registeredObjects() const; void registerObject(const QString &id, QObject *object); void deregisterObject(QObject *object); bool blockUpdates() const; void setBlockUpdates(bool block); signals: void blockUpdatesChanged(bool block); public slots: void connectTo(QWebChannelAbstractTransport *transport); void disconnectFrom(QWebChannelAbstractTransport *transport); private: QWebChannel(const QWebChannel &); }; %End PyQt-gpl-5.5.1/sip/QtWebChannel/qwebchannelabstracttransport.sip0000644000076500000240000000262112613140040025061 0ustar philstaff00000000000000// qwebchannelabstracttransport.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebChannelAbstractTransport : QObject { %TypeHeaderCode #include %End public: explicit QWebChannelAbstractTransport(QObject *parent /TransferThis/ = 0); virtual ~QWebChannelAbstractTransport(); public slots: virtual void sendMessage(const QJsonObject &message) = 0; signals: void messageReceived(const QJsonObject &message, QWebChannelAbstractTransport *transport); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/0000755000076500000240000000000012613140040017537 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/QtWebEngineWidgetsmod.sip0000644000076500000240000000442512613140040024460 0ustar philstaff00000000000000// QtWebEngineWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebEngineWidgets, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Import QtWebChannel/QtWebChannelmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwebenginecertificateerror.sip %Include qwebenginehistory.sip %Include qwebenginepage.sip %Include qwebenginesettings.sip %Include qwebengineview.sip %Include qwebenginedownloaditem.sip %Include qwebengineprofile.sip %Include qwebenginescript.sip %Include qwebenginescriptcollection.sip PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginecertificateerror.sip0000644000076500000240000000347612613140040025667 0ustar philstaff00000000000000// qwebenginecertificateerror.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineCertificateError /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Error { SslPinnedKeyNotInCertificateChain, CertificateCommonNameInvalid, CertificateDateInvalid, CertificateAuthorityInvalid, CertificateContainsErrors, CertificateNoRevocationMechanism, CertificateUnableToCheckRevocation, CertificateRevoked, CertificateInvalid, CertificateWeakSignatureAlgorithm, CertificateNonUniqueName, CertificateWeakKey, CertificateNameConstraintViolation, }; QWebEngineCertificateError::Error error() const; QUrl url() const; bool isOverridable() const; QString errorDescription() const; private: QWebEngineCertificateError(const QWebEngineCertificateError &); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginedownloaditem.sip0000644000076500000240000000351312613140040025011 0ustar philstaff00000000000000// qwebenginedownloaditem.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineDownloadItem : QObject { %TypeHeaderCode #include %End public: virtual ~QWebEngineDownloadItem(); enum DownloadState { DownloadRequested, DownloadInProgress, DownloadCompleted, DownloadCancelled, DownloadInterrupted, }; quint32 id() const; QWebEngineDownloadItem::DownloadState state() const; qint64 totalBytes() const; qint64 receivedBytes() const; QUrl url() const; QString path() const; void setPath(QString path); bool isFinished() const; public slots: void accept(); void cancel(); signals: void finished(); void stateChanged(QWebEngineDownloadItem::DownloadState state); void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); private: QWebEngineDownloadItem(const QWebEngineDownloadItem &); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginehistory.sip0000644000076500000240000000452312613140040024026 0ustar philstaff00000000000000// qwebenginehistory.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineHistoryItem { %TypeHeaderCode #include %End public: QWebEngineHistoryItem(const QWebEngineHistoryItem &other); ~QWebEngineHistoryItem(); QUrl originalUrl() const; QUrl url() const; QString title() const; QDateTime lastVisited() const; QUrl iconUrl() const; bool isValid() const; }; %End %If (Qt_5_4_0 -) class QWebEngineHistory /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void clear(); QList items() const; QList backItems(int maxItems) const; QList forwardItems(int maxItems) const; bool canGoBack() const; bool canGoForward() const; void back(); void forward(); void goToItem(const QWebEngineHistoryItem &item); QWebEngineHistoryItem backItem() const; QWebEngineHistoryItem currentItem() const; QWebEngineHistoryItem forwardItem() const; QWebEngineHistoryItem itemAt(int i) const; int currentItemIndex() const; int count() const /__len__/; private: ~QWebEngineHistory(); QWebEngineHistory(const QWebEngineHistory &); }; %End %If (Qt_5_4_0 -) QDataStream &operator<<(QDataStream &, const QWebEngineHistory & /Constrained/) /ReleaseGIL/; %End %If (Qt_5_4_0 -) QDataStream &operator>>(QDataStream &, QWebEngineHistory & /Constrained/) /ReleaseGIL/; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginepage.sip0000644000076500000240000002060012613140040023233 0ustar philstaff00000000000000// qwebenginepage.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEnginePage : QObject { %TypeHeaderCode #include %End public: enum WebAction { NoWebAction, Back, Forward, Stop, Reload, Cut, Copy, Paste, Undo, Redo, SelectAll, ReloadAndBypassCache, PasteAndMatchStyle, }; enum FindFlag { FindBackward, FindCaseSensitively, }; typedef QFlags FindFlags; enum WebWindowType { WebBrowserWindow, WebBrowserTab, WebDialog, }; enum PermissionPolicy { PermissionUnknown, PermissionGrantedByUser, PermissionDeniedByUser, }; enum Feature { Geolocation, MediaAudioCapture, MediaVideoCapture, MediaAudioVideoCapture, }; enum FileSelectionMode { FileSelectOpen, FileSelectOpenMultiple, }; enum JavaScriptConsoleMessageLevel { InfoMessageLevel, WarningMessageLevel, ErrorMessageLevel, }; explicit QWebEnginePage(QObject *parent /TransferThis/ = 0); %If (Qt_5_5_0 -) QWebEnginePage(QWebEngineProfile *profile, QObject *parent /TransferThis/ = 0); %End virtual ~QWebEnginePage(); QWebEngineHistory *history() const; void setView(QWidget *view); QWidget *view() const; bool hasSelection() const; QString selectedText() const; QAction *action(QWebEnginePage::WebAction action) const; virtual void triggerAction(QWebEnginePage::WebAction action, bool checked = false); virtual bool event(QEvent *); void findText(const QString &subString, QFlags options = 0, SIP_PYCALLABLE resultCallback /AllowNone/ = 0); %MethodCode // Make sure any callable doesn't get garbage collected. Py_XINCREF(a2); Py_BEGIN_ALLOW_THREADS sipCpp->findText(*a0, *a1, [a2](bool arg) { if (a2) { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallFunctionObjArgs(a2, (arg ? Py_True : Py_False), NULL); Py_DECREF(a2); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS } }); Py_END_ALLOW_THREADS %End QMenu *createStandardContextMenu() /Factory/; void setFeaturePermission(const QUrl &securityOrigin, QWebEnginePage::Feature feature, QWebEnginePage::PermissionPolicy policy); void load(const QUrl &url); void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); void toHtml(SIP_PYCALLABLE resultCallback) const; %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->toHtml([a0](const QString &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a0, "N", new QString(arg), sipType_QString, NULL); Py_DECREF(a0); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End void toPlainText(SIP_PYCALLABLE resultCallback) const; %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->toPlainText([a0](const QString &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a0, "N", new QString(arg), sipType_QString, NULL); Py_DECREF(a0); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End QString title() const; void setUrl(const QUrl &url); QUrl url() const; QUrl requestedUrl() const; QUrl iconUrl() const; qreal zoomFactor() const; void setZoomFactor(qreal factor); void runJavaScript(const QString &scriptSource); void runJavaScript(const QString &scriptSource, SIP_PYCALLABLE resultCallback); %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a1); Py_BEGIN_ALLOW_THREADS sipCpp->runJavaScript(*a0, [a1](const QVariant &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a1, "N", new QVariant(arg), sipType_QVariant, NULL); Py_DECREF(a1); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End QWebEngineSettings *settings() const; signals: void loadStarted(); void loadProgress(int progress); void loadFinished(bool ok); void linkHovered(const QString &url); void selectionChanged(); void geometryChangeRequested(const QRect &geom); void windowCloseRequested(); void featurePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature); void featurePermissionRequestCanceled(const QUrl &securityOrigin, QWebEnginePage::Feature feature); void authenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator); void proxyAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator, const QString &proxyHost); void titleChanged(const QString &title); void urlChanged(const QUrl &url); void iconUrlChanged(const QUrl &url); protected: virtual QWebEnginePage *createWindow(QWebEnginePage::WebWindowType type); virtual QStringList chooseFiles(QWebEnginePage::FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes); virtual void javaScriptAlert(const QUrl &securityOrigin, const QString &msg); virtual bool javaScriptConfirm(const QUrl &securityOrigin, const QString &msg); virtual bool javaScriptPrompt(const QUrl &securityOrigin, const QString &msg, const QString &defaultValue, QString *result); virtual void javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID); virtual bool certificateError(const QWebEngineCertificateError &certificateError /NoCopy/); public: %If (Qt_5_5_0 -) enum NavigationType { NavigationTypeLinkClicked, NavigationTypeTyped, NavigationTypeFormSubmitted, NavigationTypeBackForward, NavigationTypeReload, NavigationTypeOther, }; %End %If (Qt_5_5_0 -) QWebEngineProfile *profile() const; %End %If (Qt_5_5_0 -) QWebEngineScriptCollection &scripts(); %End %If (Qt_5_5_0 -) QWebChannel *webChannel() const; %End %If (Qt_5_5_0 -) void setWebChannel(QWebChannel *); %End protected: %If (Qt_5_5_0 -) virtual bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame); %End }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebengineprofile.sip0000644000076500000240000000476512613140040023775 0ustar philstaff00000000000000// qwebengineprofile.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineProfile : QObject { %TypeHeaderCode #include %End public: explicit QWebEngineProfile(QObject *parent /TransferThis/ = 0); QWebEngineProfile(const QString &name, QObject *parent /TransferThis/ = 0); virtual ~QWebEngineProfile(); enum HttpCacheType { MemoryHttpCache, DiskHttpCache, }; enum PersistentCookiesPolicy { NoPersistentCookies, AllowPersistentCookies, ForcePersistentCookies, }; QString storageName() const; bool isOffTheRecord() const; QString persistentStoragePath() const; void setPersistentStoragePath(const QString &path); QString cachePath() const; void setCachePath(const QString &path); QString httpUserAgent() const; void setHttpUserAgent(const QString &userAgent); QWebEngineProfile::HttpCacheType httpCacheType() const; void setHttpCacheType(QWebEngineProfile::HttpCacheType); QWebEngineProfile::PersistentCookiesPolicy persistentCookiesPolicy() const; void setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy); int httpCacheMaximumSize() const; void setHttpCacheMaximumSize(int maxSize); void clearAllVisitedLinks(); void clearVisitedLinks(const QList &urls); bool visitedLinksContainsUrl(const QUrl &url) const; QWebEngineSettings *settings() const; QWebEngineScriptCollection *scripts() const; static QWebEngineProfile *defaultProfile(); signals: void downloadRequested(QWebEngineDownloadItem *download); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginescript.sip0000644000076500000240000000364412613140040023634 0ustar philstaff00000000000000// qwebenginescript.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineScript { %TypeHeaderCode #include %End public: enum InjectionPoint { Deferred, DocumentReady, DocumentCreation, }; enum ScriptWorldId { MainWorld, ApplicationWorld, UserWorld, }; QWebEngineScript(); QWebEngineScript(const QWebEngineScript &other); ~QWebEngineScript(); bool isNull() const; QString name() const; void setName(const QString &); QString sourceCode() const; void setSourceCode(const QString &); QWebEngineScript::InjectionPoint injectionPoint() const; void setInjectionPoint(QWebEngineScript::InjectionPoint); quint32 worldId() const; void setWorldId(quint32); bool runsOnSubFrames() const; void setRunsOnSubFrames(bool on); bool operator==(const QWebEngineScript &other) const; bool operator!=(const QWebEngineScript &other) const; void swap(QWebEngineScript &other); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginescriptcollection.sip0000644000076500000240000000320312613140040025677 0ustar philstaff00000000000000// qwebenginescriptcollection.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineScriptCollection { %TypeHeaderCode #include %End public: ~QWebEngineScriptCollection(); bool isEmpty() const; int count() const /__len__/; bool contains(const QWebEngineScript &value) const; QWebEngineScript findScript(const QString &name) const; QList findScripts(const QString &name) const; void insert(const QWebEngineScript &); void insert(const QList &list); bool remove(const QWebEngineScript &); void clear(); QList toList() const; private: QWebEngineScriptCollection(const QWebEngineScriptCollection &); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebenginesettings.sip0000644000076500000240000000530712613140040024166 0ustar philstaff00000000000000// qwebenginesettings.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineSettings { %TypeHeaderCode #include %End public: enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont, }; enum WebAttribute { AutoLoadImages, JavascriptEnabled, JavascriptCanOpenWindows, JavascriptCanAccessClipboard, LinksIncludedInFocusChain, LocalStorageEnabled, LocalContentCanAccessRemoteUrls, XSSAuditingEnabled, SpatialNavigationEnabled, LocalContentCanAccessFileUrls, HyperlinkAuditingEnabled, ScrollAnimatorEnabled, ErrorPageEnabled, }; enum FontSize { MinimumFontSize, MinimumLogicalFontSize, DefaultFontSize, DefaultFixedFontSize, }; %If (Qt_5_5_0 -) static QWebEngineSettings *defaultSettings(); %End static QWebEngineSettings *globalSettings(); void setFontFamily(QWebEngineSettings::FontFamily which, const QString &family); QString fontFamily(QWebEngineSettings::FontFamily which) const; void resetFontFamily(QWebEngineSettings::FontFamily which); void setFontSize(QWebEngineSettings::FontSize type, int size); int fontSize(QWebEngineSettings::FontSize type) const; void resetFontSize(QWebEngineSettings::FontSize type); void setAttribute(QWebEngineSettings::WebAttribute attr, bool on); bool testAttribute(QWebEngineSettings::WebAttribute attr) const; void resetAttribute(QWebEngineSettings::WebAttribute attr); void setDefaultTextEncoding(const QString &encoding); QString defaultTextEncoding() const; private: QWebEngineSettings(const QWebEngineSettings &); ~QWebEngineSettings(); }; %End PyQt-gpl-5.5.1/sip/QtWebEngineWidgets/qwebengineview.sip0000644000076500000240000001217712613140040023303 0ustar philstaff00000000000000// qwebengineview.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineView : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if QT_VERSION >= 0x050500 {sipName_QWebEngineProfile, &sipType_QWebEngineProfile, -1, 1}, #else {0, 0, -1, 1}, #endif {sipName_QWebEnginePage, &sipType_QWebEnginePage, -1, 2}, {sipName_QWebEngineView, &sipType_QWebEngineView, -1, 3}, #if QT_VERSION >= 0x050500 {sipName_QWebEngineDownloadItem, &sipType_QWebEngineDownloadItem, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebEngineView(QWidget *parent /TransferThis/ = 0); virtual ~QWebEngineView(); QWebEnginePage *page() const; void setPage(QWebEnginePage *page); void load(const QUrl &url); void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); QWebEngineHistory *history() const; QString title() const; void setUrl(const QUrl &url); QUrl url() const; QUrl iconUrl() const; bool hasSelection() const; QString selectedText() const; QAction *pageAction(QWebEnginePage::WebAction action) const; void triggerPageAction(QWebEnginePage::WebAction action, bool checked = false); qreal zoomFactor() const; void setZoomFactor(qreal factor); void findText(const QString &subString, QFlags options = 0, SIP_PYCALLABLE resultCallback /AllowNone/ = 0); %MethodCode // Make sure any callable doesn't get garbage collected. Py_XINCREF(a2); Py_BEGIN_ALLOW_THREADS sipCpp->findText(*a0, *a1, [a2](bool arg) { if (a2) { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallFunctionObjArgs(a2, (arg ? Py_True : Py_False), NULL); Py_DECREF(a2); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS } }); Py_END_ALLOW_THREADS %End virtual QSize sizeHint() const; QWebEngineSettings *settings() const; public slots: void stop(); void back(); void forward(); void reload(); signals: void loadStarted(); void loadProgress(int progress); void loadFinished(bool); void titleChanged(const QString &title); void selectionChanged(); void urlChanged(const QUrl &); void iconUrlChanged(const QUrl &); protected: virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type); virtual void contextMenuEvent(QContextMenuEvent *); virtual bool event(QEvent *); }; %End %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt5_qtwebenginewidgets_err_print_t)(); extern pyqt5_qtwebenginewidgets_err_print_t pyqt5_qtwebenginewidgets_err_print; %End %ModuleCode // Imports from QtCore. pyqt5_qtwebenginewidgets_err_print_t pyqt5_qtwebenginewidgets_err_print; // Needed by the %PreInitialisationCode. #include %End %PreInitialisationCode // QtWebEngineWidgets uses Q_COREAPP_STARTUP_FUNCTION so, in order to make sure // things work (particularly on Windows) when we dynamically load the code, we // check things have been done in the right order. if (QCoreApplication::instance()) { PyErr_SetString(PyExc_ImportError, "QtWebEngineWidgets must be imported before a QCoreApplication instance is created"); SIP_MODULE_RETURN(NULL); } %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtwebenginewidgets_err_print = (pyqt5_qtwebenginewidgets_err_print_t)sipImportSymbol("pyqt5_err_print"); %End PyQt-gpl-5.5.1/sip/QtWebKit/0000755000076500000240000000000012613140040015532 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWebKit/QtWebKitmod.sip0000644000076500000240000000420012613140040020435 0ustar philstaff00000000000000// QtWebKitmod.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebKit, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwebdatabase.sip %Include qwebelement.sip %Include qwebkitglobal.sip %Include qwebhistory.sip %Include qwebhistoryinterface.sip %Include qwebpluginfactory.sip %Include qwebsecurityorigin.sip %Include qwebsettings.sip PyQt-gpl-5.5.1/sip/QtWebKit/qwebdatabase.sip0000644000076500000240000000254312613140040020676 0ustar philstaff00000000000000// qwebdatabase.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebDatabase { %TypeHeaderCode #include %End public: QWebDatabase(const QWebDatabase &other); ~QWebDatabase(); QString name() const; QString displayName() const; qint64 expectedSize() const; qint64 size() const; QString fileName() const; QWebSecurityOrigin origin() const; static void removeDatabase(const QWebDatabase &db); static void removeAllDatabases(); }; PyQt-gpl-5.5.1/sip/QtWebKit/qwebelement.sip0000644000076500000240000001213112613140040020555 0ustar philstaff00000000000000// qwebelement.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebFrame /External/; class QWebElement { %TypeHeaderCode #include %End public: QWebElement(); QWebElement(const QWebElement &); ~QWebElement(); bool operator==(const QWebElement &o) const; bool operator!=(const QWebElement &o) const; bool isNull() const; QWebElementCollection findAll(const QString &selectorQuery) const; QWebElement findFirst(const QString &selectorQuery) const; void setPlainText(const QString &text); QString toPlainText() const; void setOuterXml(const QString &markup); QString toOuterXml() const; void setInnerXml(const QString &markup); QString toInnerXml() const; void setAttribute(const QString &name, const QString &value); void setAttributeNS(const QString &namespaceUri, const QString &name, const QString &value); QString attribute(const QString &name, const QString &defaultValue = QString()) const; QString attributeNS(const QString &namespaceUri, const QString &name, const QString &defaultValue = QString()) const; bool hasAttribute(const QString &name) const; bool hasAttributeNS(const QString &namespaceUri, const QString &name) const; void removeAttribute(const QString &name); void removeAttributeNS(const QString &namespaceUri, const QString &name); bool hasAttributes() const; QStringList attributeNames(const QString &namespaceUri = QString()) const; QStringList classes() const; bool hasClass(const QString &name) const; void addClass(const QString &name); void removeClass(const QString &name); void toggleClass(const QString &name); bool hasFocus() const; void setFocus(); QRect geometry() const; QString tagName() const; QString prefix() const; QString localName() const; QString namespaceUri() const; QWebElement parent() const; QWebElement firstChild() const; QWebElement lastChild() const; QWebElement nextSibling() const; QWebElement previousSibling() const; QWebElement document() const; QWebFrame *webFrame() const; void appendInside(const QString &markup); void appendInside(const QWebElement &element); void prependInside(const QString &markup); void prependInside(const QWebElement &element); void appendOutside(const QString &markup); void appendOutside(const QWebElement &element); void prependOutside(const QString &markup); void prependOutside(const QWebElement &element); void encloseContentsWith(const QWebElement &element); void encloseContentsWith(const QString &markup); void encloseWith(const QString &markup); void encloseWith(const QWebElement &element); void replace(const QString &markup); void replace(const QWebElement &element); QWebElement clone() const; QWebElement &takeFromDocument(); void removeFromDocument(); void removeAllChildren(); QVariant evaluateJavaScript(const QString &scriptSource); enum StyleResolveStrategy { InlineStyle, CascadedStyle, ComputedStyle, }; QString styleProperty(const QString &name, QWebElement::StyleResolveStrategy strategy) const; void setStyleProperty(const QString &name, const QString &value); void render(QPainter *painter); void render(QPainter *painter, const QRect &clip); }; class QWebElementCollection { %TypeHeaderCode #include %End public: QWebElementCollection(); QWebElementCollection(const QWebElement &contextElement, const QString &query); QWebElementCollection(const QWebElementCollection &); ~QWebElementCollection(); QWebElementCollection operator+(const QWebElementCollection &other) const; QWebElementCollection &operator+=(const QWebElementCollection &other); void append(const QWebElementCollection &collection); int count() const /__len__/; QWebElement at(int i) const; QWebElement operator[](int i) const; %MethodCode SIP_SSIZE_T idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QWebElement(sipCpp->operator[]((int)idx)); %End QWebElement first() const; QWebElement last() const; QList toList() const; }; PyQt-gpl-5.5.1/sip/QtWebKit/qwebhistory.sip0000644000076500000240000000442412613140040020633 0ustar philstaff00000000000000// qwebhistory.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebHistoryItem { %TypeHeaderCode #include %End public: QWebHistoryItem(const QWebHistoryItem &other); ~QWebHistoryItem(); QUrl originalUrl() const; QUrl url() const; QString title() const; QDateTime lastVisited() const; QIcon icon() const; QVariant userData() const; void setUserData(const QVariant &userData); bool isValid() const; }; class QWebHistory { %TypeHeaderCode #include %End public: void clear(); QList items() const; QList backItems(int maxItems) const; QList forwardItems(int maxItems) const; bool canGoBack() const; bool canGoForward() const; void back(); void forward(); void goToItem(const QWebHistoryItem &item); QWebHistoryItem backItem() const; QWebHistoryItem currentItem() const; QWebHistoryItem forwardItem() const; QWebHistoryItem itemAt(int i) const; int count() const /__len__/; private: QWebHistory(); QWebHistory(const QWebHistory &); ~QWebHistory(); public: int currentItemIndex() const; int maximumItemCount() const; void setMaximumItemCount(int count); }; QDataStream &operator<<(QDataStream &, const QWebHistory & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QWebHistory & /Constrained/) /ReleaseGIL/; PyQt-gpl-5.5.1/sip/QtWebKit/qwebhistoryinterface.sip0000644000076500000240000000263212613140040022513 0ustar philstaff00000000000000// qwebhistoryinterface.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebHistoryInterface : QObject { %TypeHeaderCode #include %End public: QWebHistoryInterface(QObject *parent /TransferThis/ = 0); virtual ~QWebHistoryInterface(); static void setDefaultInterface(QWebHistoryInterface *defaultInterface /KeepReference/); static QWebHistoryInterface *defaultInterface(); virtual bool historyContains(const QString &url) const = 0; virtual void addHistoryEntry(const QString &url) = 0; }; PyQt-gpl-5.5.1/sip/QtWebKit/qwebkitglobal.sip0000644000076500000240000000206712613140040021103 0ustar philstaff00000000000000// qwebkitglobal.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End QString qWebKitVersion(); int qWebKitMajorVersion(); int qWebKitMinorVersion(); PyQt-gpl-5.5.1/sip/QtWebKit/qwebpluginfactory.sip0000644000076500000240000000572112613140040022021 0ustar philstaff00000000000000// qwebpluginfactory.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebPluginFactory : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebHistoryInterface, &sipType_QWebHistoryInterface, -1, 1}, {sipName_QWebPluginFactory, &sipType_QWebPluginFactory, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: struct MimeType { %TypeHeaderCode #include %End QString name; QString description; QStringList fileExtensions; bool operator==(const QWebPluginFactory::MimeType &other) const; bool operator!=(const QWebPluginFactory::MimeType &other) const; }; struct Plugin { %TypeHeaderCode #include %End QString name; QString description; QList mimeTypes; }; explicit QWebPluginFactory(QObject *parent /TransferThis/ = 0); virtual ~QWebPluginFactory(); virtual QList plugins() const = 0; virtual void refreshPlugins(); virtual QObject *create(const QString &mimeType, const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues) const = 0 /Factory/; enum Extension { }; class ExtensionOption { %TypeHeaderCode #include %End }; class ExtensionReturn { %TypeHeaderCode #include %End }; virtual bool extension(QWebPluginFactory::Extension extension, const QWebPluginFactory::ExtensionOption *option = 0, QWebPluginFactory::ExtensionReturn *output = 0); virtual bool supportsExtension(QWebPluginFactory::Extension extension) const; }; PyQt-gpl-5.5.1/sip/QtWebKit/qwebsecurityorigin.sip0000644000076500000240000000410412613140040022204 0ustar philstaff00000000000000// qwebsecurityorigin.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebSecurityOrigin { %TypeHeaderCode #include %End public: %If (Qt_5_2_0 -) explicit QWebSecurityOrigin(const QUrl &url); %End QWebSecurityOrigin(const QWebSecurityOrigin &other); ~QWebSecurityOrigin(); static QList allOrigins(); QString scheme() const; QString host() const; int port() const; qint64 databaseUsage() const; qint64 databaseQuota() const; void setDatabaseQuota(qint64 quota); QList databases() const; static void addLocalScheme(const QString &scheme); static void removeLocalScheme(const QString &scheme); static QStringList localSchemes(); void setApplicationCacheQuota(qint64 quota); %If (Qt_5_2_0 -) enum SubdomainSetting { AllowSubdomains, DisallowSubdomains, }; %End %If (Qt_5_2_0 -) void addAccessWhitelistEntry(const QString &scheme, const QString &host, QWebSecurityOrigin::SubdomainSetting subdomainSetting); %End %If (Qt_5_2_0 -) void removeAccessWhitelistEntry(const QString &scheme, const QString &host, QWebSecurityOrigin::SubdomainSetting subdomainSetting); %End }; PyQt-gpl-5.5.1/sip/QtWebKit/qwebsettings.sip0000644000076500000240000001224212613140040020767 0ustar philstaff00000000000000// qwebsettings.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebSettings { %TypeHeaderCode #include %End public: enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont, }; enum WebAttribute { AutoLoadImages, JavascriptEnabled, JavaEnabled, PluginsEnabled, PrivateBrowsingEnabled, JavascriptCanOpenWindows, JavascriptCanCloseWindows, JavascriptCanAccessClipboard, DeveloperExtrasEnabled, LinksIncludedInFocusChain, ZoomTextOnly, PrintElementBackgrounds, OfflineStorageDatabaseEnabled, OfflineWebApplicationCacheEnabled, LocalStorageDatabaseEnabled, LocalStorageEnabled, LocalContentCanAccessRemoteUrls, DnsPrefetchEnabled, XSSAuditingEnabled, AcceleratedCompositingEnabled, SpatialNavigationEnabled, LocalContentCanAccessFileUrls, TiledBackingStoreEnabled, FrameFlatteningEnabled, SiteSpecificQuirksEnabled, WebGLEnabled, HyperlinkAuditingEnabled, CSSRegionsEnabled, CSSGridLayoutEnabled, ScrollAnimatorEnabled, CaretBrowsingEnabled, NotificationsEnabled, %If (Qt_5_2_0 -) WebAudioEnabled, %End %If (Qt_5_4_0 -) Accelerated2dCanvasEnabled, %End }; enum WebGraphic { MissingImageGraphic, MissingPluginGraphic, DefaultFrameIconGraphic, TextAreaSizeGripCornerGraphic, InputSpeechButtonGraphic, SearchCancelButtonGraphic, SearchCancelButtonPressedGraphic, }; enum FontSize { MinimumFontSize, MinimumLogicalFontSize, DefaultFontSize, DefaultFixedFontSize, }; static QWebSettings *globalSettings(); void setFontFamily(QWebSettings::FontFamily which, const QString &family); QString fontFamily(QWebSettings::FontFamily which) const; void resetFontFamily(QWebSettings::FontFamily which); void setFontSize(QWebSettings::FontSize type, int size); int fontSize(QWebSettings::FontSize type) const; void resetFontSize(QWebSettings::FontSize type); void setAttribute(QWebSettings::WebAttribute attr, bool on); bool testAttribute(QWebSettings::WebAttribute attr) const; void resetAttribute(QWebSettings::WebAttribute attr); void setUserStyleSheetUrl(const QUrl &location); QUrl userStyleSheetUrl() const; static void setIconDatabasePath(const QString &location); static QString iconDatabasePath(); static void clearIconDatabase(); static QIcon iconForUrl(const QUrl &url); static void setWebGraphic(QWebSettings::WebGraphic type, const QPixmap &graphic); static QPixmap webGraphic(QWebSettings::WebGraphic type); static void setMaximumPagesInCache(int pages); static int maximumPagesInCache(); static void setObjectCacheCapacities(int cacheMinDeadCapacity, int cacheMaxDead, int totalCapacity); private: QWebSettings(); QWebSettings(const QWebSettings &); ~QWebSettings(); public: static void setOfflineStoragePath(const QString &path); static QString offlineStoragePath(); static void setOfflineStorageDefaultQuota(qint64 maximumSize); static qint64 offlineStorageDefaultQuota(); void setDefaultTextEncoding(const QString &encoding); QString defaultTextEncoding() const; static void setOfflineWebApplicationCachePath(const QString &path); static QString offlineWebApplicationCachePath(); static void setOfflineWebApplicationCacheQuota(qint64 maximumSize); static qint64 offlineWebApplicationCacheQuota(); void setLocalStoragePath(const QString &path); QString localStoragePath() const; static void clearMemoryCaches(); static void enablePersistentStorage(const QString &path = QString()); enum ThirdPartyCookiePolicy { AlwaysAllowThirdPartyCookies, AlwaysBlockThirdPartyCookies, AllowThirdPartyWithExistingCookies, }; void setThirdPartyCookiePolicy(QWebSettings::ThirdPartyCookiePolicy); QWebSettings::ThirdPartyCookiePolicy thirdPartyCookiePolicy() const; %If (Qt_5_1_0 -) void setCSSMediaType(const QString &); %End %If (Qt_5_1_0 -) QString cssMediaType() const; %End }; PyQt-gpl-5.5.1/sip/QtWebKitWidgets/0000755000076500000240000000000012613140040017061 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWebKitWidgets/qgraphicswebview.sip0000644000076500000240000001173712613140040023161 0ustar philstaff00000000000000// qgraphicswebview.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsWebView : QGraphicsWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = 0; // For some reason Qt doesn't allocate a new type for this so we have to test // the numeric and QObject types. if (sipCpp->type() == 11) { QGraphicsWidget *gw = static_cast(sipCpp); if (gw->inherits("QGraphicsWebView")) { *sipCppRet = static_cast(gw); sipType = sipType_QGraphicsWebView; } } %End public: explicit QGraphicsWebView(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsWebView(); QWebPage *page() const; void setPage(QWebPage * /KeepReference/); QUrl url() const; void setUrl(const QUrl &); QString title() const; QIcon icon() const; qreal zoomFactor() const; void setZoomFactor(qreal); bool isModified() const; void load(const QUrl &url) /ReleaseGIL/; void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()) /ReleaseGIL/; void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); QWebHistory *history() const; QWebSettings *settings() const; QAction *pageAction(QWebPage::WebAction action) const; void triggerPageAction(QWebPage::WebAction action, bool checked = false); bool findText(const QString &subString, QFlags options = 0); virtual void setGeometry(const QRectF &rect); virtual void updateGeometry(); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool event(QEvent *); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; public slots: void stop(); void back(); void forward(); void reload(); signals: void loadStarted(); void loadFinished(bool); void loadProgress(int progress); void urlChanged(const QUrl &); void titleChanged(const QString &); void iconChanged(); void statusBarMessage(const QString &message); void linkClicked(const QUrl &); protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent *); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *); virtual void wheelEvent(QGraphicsSceneWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *); virtual void dropEvent(QGraphicsSceneDragDropEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void inputMethodEvent(QInputMethodEvent *); virtual bool focusNextPrevChild(bool next); virtual bool sceneEvent(QEvent *); public: bool resizesToContents() const; void setResizesToContents(bool enabled); bool isTiledBackingStoreFrozen() const; void setTiledBackingStoreFrozen(bool frozen); QFlags renderHints() const; void setRenderHints(QFlags hints); void setRenderHint(QPainter::RenderHint hint, bool enabled = true); }; %ModuleHeaderCode // This is needed by the %ConvertSubClassCode. #include // This is needed for Qt v5.0.0. #if defined(B0) #undef B0 #endif %End PyQt-gpl-5.5.1/sip/QtWebKitWidgets/QtWebKitWidgetsmod.sip0000644000076500000240000000414212613140040023320 0ustar philstaff00000000000000// QtWebKitWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebKitWidgets, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtPrintSupport/QtPrintSupportmod.sip %Import QtWebKit/QtWebKitmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgraphicswebview.sip %Include qwebframe.sip %Include qwebinspector.sip %Include qwebpage.sip %Include qwebview.sip PyQt-gpl-5.5.1/sip/QtWebKitWidgets/qwebframe.sip0000644000076500000240000001210012613140040021541 0ustar philstaff00000000000000// qwebframe.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebHitTestResult { %TypeHeaderCode #include %End public: QWebHitTestResult(); QWebHitTestResult(const QWebHitTestResult &other); ~QWebHitTestResult(); bool isNull() const; QPoint pos() const; QString title() const; QString linkText() const; QUrl linkUrl() const; QUrl linkTitle() const; QWebFrame *linkTargetFrame() const; QString alternateText() const; QUrl imageUrl() const; QPixmap pixmap() const; bool isContentEditable() const; bool isContentSelected() const; QWebFrame *frame() const; QRect boundingRect() const; QWebElement enclosingBlockElement() const; QWebElement linkElement() const; QWebElement element() const; %If (Qt_5_2_0 -) QUrl mediaUrl() const; %End %If (Qt_5_5_0 -) QString linkTitleString() const; %End }; class QWebFrame : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End virtual ~QWebFrame(); public: QWebPage *page() const; void load(const QUrl &url); void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()); void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType /DocValue="''"/ = QString(), const QUrl &baseUrl = QUrl()); enum ValueOwnership { QtOwnership, ScriptOwnership, AutoOwnership, }; void addToJavaScriptWindowObject(const QString &name, QObject *object, QWebFrame::ValueOwnership ownership = QWebFrame::QtOwnership); QString toHtml() const; QString toPlainText() const; QString title() const; void setUrl(const QUrl &url); QUrl url() const; QIcon icon() const; QString frameName() const; QWebFrame *parentFrame() const; QList childFrames() const; Qt::ScrollBarPolicy scrollBarPolicy(Qt::Orientation orientation) const; void setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy); void setScrollBarValue(Qt::Orientation orientation, int value); int scrollBarValue(Qt::Orientation orientation) const; int scrollBarMinimum(Qt::Orientation orientation) const; int scrollBarMaximum(Qt::Orientation orientation) const; QPoint pos() const; QRect geometry() const; QSize contentsSize() const; QWebHitTestResult hitTestContent(const QPoint &pos) const; virtual bool event(QEvent *); public slots: QVariant evaluateJavaScript(const QString &scriptSource); %If (PyQt_Printer) void print(QPrinter *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPrinter *printer) const; %End %End signals: void javaScriptWindowObjectCleared(); void titleChanged(const QString &title); void urlChanged(const QUrl &url); void initialLayoutCompleted(); void iconChanged(); public: QMultiMap metaData() const; void scroll(int, int); QPoint scrollPosition() const; void setScrollPosition(const QPoint &pos); qreal zoomFactor() const; void setZoomFactor(qreal factor); QWebSecurityOrigin securityOrigin() const; QUrl requestedUrl() const; QUrl baseUrl() const; QRect scrollBarGeometry(Qt::Orientation orientation) const; enum RenderLayer { ContentsLayer, ScrollBarLayer, PanIconLayer, AllLayers, }; typedef QFlags RenderLayers; void render(QPainter *, const QRegion &clip = QRegion()); void render(QPainter *, QFlags layer, const QRegion &clip = QRegion()); bool hasFocus() const; void setFocus(); QWebElement documentElement() const; QWebElementCollection findAllElements(const QString &selectorQuery) const; QWebElement findFirstElement(const QString &selectorQuery) const; signals: void contentsSizeChanged(const QSize &size); void loadStarted(); void loadFinished(bool ok); void pageChanged(); public: void scrollToAnchor(const QString &anchor); }; QFlags operator|(QWebFrame::RenderLayer f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWebKitWidgets/qwebinspector.sip0000644000076500000240000000272412613140040022470 0ustar philstaff00000000000000// qwebinspector.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebInspector : QWidget { %TypeHeaderCode #include %End public: QWebInspector(QWidget *parent /TransferThis/ = 0); virtual ~QWebInspector(); void setPage(QWebPage *page /KeepReference/); QWebPage *page() const; virtual QSize sizeHint() const; virtual bool event(QEvent *); protected: virtual void resizeEvent(QResizeEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void closeEvent(QCloseEvent *event); }; PyQt-gpl-5.5.1/sip/QtWebKitWidgets/qwebpage.sip0000644000076500000240000003034312613140040021374 0ustar philstaff00000000000000// qwebpage.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebPage : QObject { %TypeHeaderCode #include %End public: enum NavigationType { NavigationTypeLinkClicked, NavigationTypeFormSubmitted, NavigationTypeBackOrForward, NavigationTypeReload, NavigationTypeFormResubmitted, NavigationTypeOther, }; enum WebAction { NoWebAction, OpenLink, OpenLinkInNewWindow, OpenFrameInNewWindow, DownloadLinkToDisk, CopyLinkToClipboard, OpenImageInNewWindow, DownloadImageToDisk, CopyImageToClipboard, Back, Forward, Stop, Reload, Cut, Copy, Paste, Undo, Redo, MoveToNextChar, MoveToPreviousChar, MoveToNextWord, MoveToPreviousWord, MoveToNextLine, MoveToPreviousLine, MoveToStartOfLine, MoveToEndOfLine, MoveToStartOfBlock, MoveToEndOfBlock, MoveToStartOfDocument, MoveToEndOfDocument, SelectNextChar, SelectPreviousChar, SelectNextWord, SelectPreviousWord, SelectNextLine, SelectPreviousLine, SelectStartOfLine, SelectEndOfLine, SelectStartOfBlock, SelectEndOfBlock, SelectStartOfDocument, SelectEndOfDocument, DeleteStartOfWord, DeleteEndOfWord, SetTextDirectionDefault, SetTextDirectionLeftToRight, SetTextDirectionRightToLeft, ToggleBold, ToggleItalic, ToggleUnderline, InspectElement, InsertParagraphSeparator, InsertLineSeparator, SelectAll, ReloadAndBypassCache, PasteAndMatchStyle, RemoveFormat, ToggleStrikethrough, ToggleSubscript, ToggleSuperscript, InsertUnorderedList, InsertOrderedList, Indent, Outdent, AlignCenter, AlignJustified, AlignLeft, AlignRight, StopScheduledPageRefresh, CopyImageUrlToClipboard, OpenLinkInThisWindow, %If (Qt_5_2_0 -) DownloadMediaToDisk, %End %If (Qt_5_2_0 -) CopyMediaUrlToClipboard, %End %If (Qt_5_2_0 -) ToggleMediaControls, %End %If (Qt_5_2_0 -) ToggleMediaLoop, %End %If (Qt_5_2_0 -) ToggleMediaPlayPause, %End %If (Qt_5_2_0 -) ToggleMediaMute, %End %If (Qt_5_2_0 -) ToggleVideoFullscreen, %End }; enum FindFlag { FindBackward, FindCaseSensitively, FindWrapsAroundDocument, HighlightAllOccurrences, %If (Qt_5_2_0 -) FindAtWordBeginningsOnly, %End %If (Qt_5_2_0 -) TreatMedialCapitalAsWordBeginning, %End %If (Qt_5_2_0 -) FindBeginsInSelection, %End }; typedef QFlags FindFlags; enum LinkDelegationPolicy { DontDelegateLinks, DelegateExternalLinks, DelegateAllLinks, }; enum WebWindowType { WebBrowserWindow, WebModalDialog, }; explicit QWebPage(QObject *parent /TransferThis/ = 0); virtual ~QWebPage(); QWebFrame *mainFrame() const; QWebFrame *currentFrame() const; QWebHistory *history() const; QWebSettings *settings() const; void setView(QWidget *view /KeepReference/); QWidget *view() const; bool isModified() const; QUndoStack *undoStack() const; void setNetworkAccessManager(QNetworkAccessManager *manager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; void setPluginFactory(QWebPluginFactory *factory /KeepReference/); QWebPluginFactory *pluginFactory() const; quint64 totalBytes() const; quint64 bytesReceived() const; QString selectedText() const; QAction *action(QWebPage::WebAction action) const; virtual void triggerAction(QWebPage::WebAction action, bool checked = false); QSize viewportSize() const; void setViewportSize(const QSize &size) const; virtual bool event(QEvent *); bool focusNextPrevChild(bool next); QVariant inputMethodQuery(Qt::InputMethodQuery property) const; bool findText(const QString &subString, QFlags options = 0); void setForwardUnsupportedContent(bool forward); bool forwardUnsupportedContent() const; void setLinkDelegationPolicy(QWebPage::LinkDelegationPolicy policy); QWebPage::LinkDelegationPolicy linkDelegationPolicy() const; void setPalette(const QPalette &palette); QPalette palette() const; bool swallowContextMenuEvent(QContextMenuEvent *event); void updatePositionDependentActions(const QPoint &pos); enum Extension { ChooseMultipleFilesExtension, ErrorPageExtension, }; class ExtensionOption { %TypeHeaderCode #include %End }; class ExtensionReturn { %TypeHeaderCode #include %End }; virtual bool extension(QWebPage::Extension extension, const QWebPage::ExtensionOption *option = 0, QWebPage::ExtensionReturn *output = 0); %VirtualCatcherCode const sipTypeDef *option_type = sipType_QWebPage_ExtensionOption; const sipTypeDef *return_type = sipType_QWebPage_ExtensionReturn; if (a0 == QWebPage::ChooseMultipleFilesExtension) { option_type = sipType_QWebPage_ChooseMultipleFilesExtensionOption; return_type = sipType_QWebPage_ChooseMultipleFilesExtensionReturn; } else if (a0 == QWebPage::ErrorPageExtension) { option_type = sipType_QWebPage_ErrorPageExtensionOption; return_type = sipType_QWebPage_ErrorPageExtensionReturn; } PyObject *res_obj = sipCallMethod(&sipIsErr, sipMethod, "FDD", a0, sipType_QWebPage_Extension, a1, option_type, NULL, a2, return_type, NULL); if (res_obj) { sipParseResult(&sipIsErr, sipMethod, res_obj, "b", &sipRes); Py_DECREF(res_obj); } else { sipIsErr = 1; } %End virtual bool supportsExtension(QWebPage::Extension extension) const; signals: void loadFinished(bool ok); void loadProgress(int progress); void loadStarted(); void linkHovered(const QString &link, const QString &title, const QString &textContent); void statusBarMessage(const QString &text); void selectionChanged(); void frameCreated(QWebFrame *frame); void geometryChangeRequested(const QRect &geom); void repaintRequested(const QRect &dirtyRect); void scrollRequested(int dx, int dy, const QRect &scrollViewRect); void windowCloseRequested(); void printRequested(QWebFrame *frame); void linkClicked(const QUrl &url); void toolBarVisibilityChangeRequested(bool visible); void statusBarVisibilityChangeRequested(bool visible); void menuBarVisibilityChangeRequested(bool visible); void unsupportedContent(QNetworkReply *reply); void downloadRequested(const QNetworkRequest &request); void microFocusChanged(); protected: virtual QWebPage *createWindow(QWebPage::WebWindowType type); virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type); virtual QString chooseFile(QWebFrame *originatingFrame, const QString &oldFile); virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString &msg); virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString &msg); virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString &msg, const QString &defaultValue, QString *result /Out/); virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID); virtual QString userAgentForUrl(const QUrl &url) const; public: void setContentEditable(bool editable); bool isContentEditable() const; QMenu *createStandardContextMenu() /Factory/; class ChooseMultipleFilesExtensionOption : QWebPage::ExtensionOption { %TypeHeaderCode #include %End public: QWebFrame *parentFrame; QStringList suggestedFileNames; }; class ChooseMultipleFilesExtensionReturn : QWebPage::ExtensionReturn { %TypeHeaderCode #include %End public: QStringList fileNames; }; signals: void contentsChanged(); void databaseQuotaExceeded(QWebFrame *frame, QString databaseName); void saveFrameStateRequested(QWebFrame *frame, QWebHistoryItem *item); void restoreFrameStateRequested(QWebFrame *frame); public: QWebFrame *frameAt(const QPoint &pos) const; QSize preferredContentsSize() const; void setPreferredContentsSize(const QSize &size) const; enum ErrorDomain { QtNetwork, Http, WebKit, }; class ErrorPageExtensionOption : QWebPage::ExtensionOption { %TypeHeaderCode #include %End public: QUrl url; QWebFrame *frame; QWebPage::ErrorDomain domain; int error; QString errorString; }; class ErrorPageExtensionReturn : QWebPage::ExtensionReturn { %TypeHeaderCode #include %End public: ErrorPageExtensionReturn(); QString contentType; QString encoding; QUrl baseUrl; QByteArray content; }; virtual bool shouldInterruptJavaScript(); enum PermissionPolicy { PermissionUnknown, PermissionGrantedByUser, PermissionDeniedByUser, }; enum Feature { Notifications, Geolocation, }; class ViewportAttributes { %TypeHeaderCode #include %End public: ViewportAttributes(); ViewportAttributes(const QWebPage::ViewportAttributes &other); ~ViewportAttributes(); qreal initialScaleFactor() const; qreal minimumScaleFactor() const; qreal maximumScaleFactor() const; qreal devicePixelRatio() const; bool isUserScalable() const; bool isValid() const; QSizeF size() const; }; bool hasSelection() const; QString selectedHtml() const; QWebPage::ViewportAttributes viewportAttributesForSize(const QSize &availableSize) const; void setActualVisibleContentRect(const QRect &rect) const; void setFeaturePermission(QWebFrame *frame, QWebPage::Feature feature, QWebPage::PermissionPolicy policy); QStringList supportedContentTypes() const; bool supportsContentType(const QString &mimeType) const; signals: void applicationCacheQuotaExceeded(QWebSecurityOrigin *origin, quint64 defaultOriginQuota, quint64 totalSpaceNeeded); void viewportChangeRequested(); void featurePermissionRequested(QWebFrame *frame, QWebPage::Feature feature); void featurePermissionRequestCanceled(QWebFrame *frame, QWebPage::Feature feature); public: %If (Qt_5_2_0 -) enum VisibilityState { VisibilityStateVisible, VisibilityStateHidden, VisibilityStatePrerender, VisibilityStateUnloaded, }; %End %If (Qt_5_2_0 -) QWebPage::VisibilityState visibilityState() const; %End %If (Qt_5_2_0 -) void setVisibilityState(QWebPage::VisibilityState); %End }; QFlags operator|(QWebPage::FindFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWebKitWidgets/qwebview.sip0000644000076500000240000001145112613140040021431 0ustar philstaff00000000000000// qwebview.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebView : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebInspector, &sipType_QWebInspector, -1, 1}, {sipName_QWebPage, &sipType_QWebPage, -1, 2}, {sipName_QWebFrame, &sipType_QWebFrame, -1, 3}, {sipName_QGraphicsWebView, &sipType_QGraphicsWebView, -1, 4}, {sipName_QWebView, &sipType_QWebView, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebView(QWidget *parent /TransferThis/ = 0); virtual ~QWebView(); QWebPage *page() const; void setPage(QWebPage *page /KeepReference/); void load(const QUrl &url) /ReleaseGIL/; void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()) /ReleaseGIL/; void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType /DocValue="''"/ = QString(), const QUrl &baseUrl = QUrl()); QWebHistory *history() const; QWebSettings *settings() const; QString title() const; void setUrl(const QUrl &url); QUrl url() const; QIcon icon() const; QString selectedText() const; QAction *pageAction(QWebPage::WebAction action) const; void triggerPageAction(QWebPage::WebAction action, bool checked = false); bool isModified() const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; virtual QSize sizeHint() const; bool findText(const QString &subString, QFlags options = 0); virtual bool event(QEvent *); public slots: void stop(); void back(); void forward(); void reload(); %If (PyQt_Printer) void print(QPrinter *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPrinter *printer) const; %End %End signals: void loadStarted(); void loadProgress(int progress); void loadFinished(bool); void titleChanged(const QString &title); void statusBarMessage(const QString &text); void linkClicked(const QUrl &url); void selectionChanged(); void iconChanged(); void urlChanged(const QUrl &url); protected: virtual QWebView *createWindow(QWebPage::WebWindowType type); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *ev); virtual void changeEvent(QEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void wheelEvent(QWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dropEvent(QDropEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void inputMethodEvent(QInputMethodEvent *); virtual bool focusNextPrevChild(bool next); public: qreal zoomFactor() const; void setZoomFactor(qreal factor); QFlags renderHints() const; void setRenderHints(QFlags hints); void setRenderHint(QPainter::RenderHint hint, bool enabled = true); bool hasSelection() const; QString selectedHtml() const; }; PyQt-gpl-5.5.1/sip/QtWebSockets/0000755000076500000240000000000012613140040016416 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWebSockets/qmaskgenerator.sip0000644000076500000240000000241412613140040022157 0ustar philstaff00000000000000// qmaskgenerator.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QMaskGenerator : QObject { %TypeHeaderCode #include %End public: explicit QMaskGenerator(QObject *parent /TransferThis/ = 0); virtual ~QMaskGenerator(); virtual bool seed() = 0; virtual quint32 nextMask() = 0; private: QMaskGenerator(const QMaskGenerator &); }; %End PyQt-gpl-5.5.1/sip/QtWebSockets/QtWebSocketsmod.sip0000644000076500000240000000405212613140040022212 0ustar philstaff00000000000000// QtWebSocketsmod.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebSockets, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qmaskgenerator.sip %Include qwebsocket.sip %Include qwebsocketcorsauthenticator.sip %Include qwebsocketprotocol.sip %Include qwebsocketserver.sip PyQt-gpl-5.5.1/sip/QtWebSockets/qwebsocket.sip0000644000076500000240000001056412613140040021310 0ustar philstaff00000000000000// qwebsocket.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QWebSocket : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebSocket, &sipType_QWebSocket, -1, 1}, {sipName_QWebSocketServer, &sipType_QWebSocketServer, -1, 2}, {sipName_QMaskGenerator, &sipType_QMaskGenerator, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QWebSocket(const QString &origin /DocValue="''"/ = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::Version13, QObject *parent /TransferThis/ = 0); virtual ~QWebSocket(); void abort(); QAbstractSocket::SocketError error() const; QString errorString() const; bool flush() /ReleaseGIL/; bool isValid() const; QHostAddress localAddress() const; quint16 localPort() const; QFlags pauseMode() const; QHostAddress peerAddress() const; QString peerName() const; quint16 peerPort() const; QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &networkProxy); void setMaskGenerator(const QMaskGenerator *maskGenerator /KeepReference/); const QMaskGenerator *maskGenerator() const; qint64 readBufferSize() const; void setReadBufferSize(qint64 size); void resume() /ReleaseGIL/; void setPauseMode(QFlags pauseMode); QAbstractSocket::SocketState state() const; QWebSocketProtocol::Version version() const; QString resourceName() const; QUrl requestUrl() const; QString origin() const; QWebSocketProtocol::CloseCode closeCode() const; QString closeReason() const; qint64 sendTextMessage(const QString &message) /ReleaseGIL/; qint64 sendBinaryMessage(const QByteArray &data) /ReleaseGIL/; %If (PyQt_SSL) void ignoreSslErrors(const QList &errors); %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &sslConfiguration); %End %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End public slots: void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString()) /ReleaseGIL/; void open(const QUrl &url) /ReleaseGIL/; void ping(const QByteArray &payload = QByteArray()) /ReleaseGIL/; %If (PyQt_SSL) void ignoreSslErrors(); %End signals: void aboutToClose(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState state); void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *pAuthenticator); void readChannelFinished(); void textFrameReceived(const QString &frame, bool isLastFrame); void binaryFrameReceived(const QByteArray &frame, bool isLastFrame); void textMessageReceived(const QString &message); void binaryMessageReceived(const QByteArray &message); void error(QAbstractSocket::SocketError error); void pong(quint64 elapsedTime, const QByteArray &payload); void bytesWritten(qint64 bytes); %If (PyQt_SSL) void sslErrors(const QList &errors); %End private: QWebSocket(const QWebSocket &); }; %End PyQt-gpl-5.5.1/sip/QtWebSockets/qwebsocketcorsauthenticator.sip0000644000076500000240000000262712613140040024773 0ustar philstaff00000000000000// qwebsocketcorsauthenticator.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QWebSocketCorsAuthenticator { %TypeHeaderCode #include %End public: explicit QWebSocketCorsAuthenticator(const QString &origin); explicit QWebSocketCorsAuthenticator(const QWebSocketCorsAuthenticator &other); ~QWebSocketCorsAuthenticator(); void swap(QWebSocketCorsAuthenticator &other); QString origin() const; void setAllowed(bool allowed); bool allowed() const; }; %End PyQt-gpl-5.5.1/sip/QtWebSockets/qwebsocketprotocol.sip0000644000076500000240000000331512613140040023066 0ustar philstaff00000000000000// qwebsocketprotocol.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) namespace QWebSocketProtocol { %TypeHeaderCode #include %End enum Version { VersionUnknown, Version0, Version4, Version5, Version6, Version7, Version8, Version13, VersionLatest, }; enum CloseCode { CloseCodeNormal, CloseCodeGoingAway, CloseCodeProtocolError, CloseCodeDatatypeNotSupported, CloseCodeReserved1004, CloseCodeMissingStatusCode, CloseCodeAbnormalDisconnection, CloseCodeWrongDatatype, CloseCodePolicyViolated, CloseCodeTooMuchData, CloseCodeMissingExtension, CloseCodeBadOperation, CloseCodeTlsHandshakeFailed, }; }; %End PyQt-gpl-5.5.1/sip/QtWebSockets/qwebsocketserver.sip0000644000076500000240000000554412613140040022541 0ustar philstaff00000000000000// qwebsocketserver.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QWebSocketServer : QObject { %TypeHeaderCode #include %End public: enum SslMode { %If (PyQt_SSL) SecureMode, %End NonSecureMode, }; QWebSocketServer(const QString &serverName, QWebSocketServer::SslMode secureMode, QObject *parent /TransferThis/ = 0); virtual ~QWebSocketServer(); bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); void close(); bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; quint16 serverPort() const; QHostAddress serverAddress() const; QWebSocketServer::SslMode secureMode() const; bool setSocketDescriptor(int socketDescriptor); int socketDescriptor() const; bool hasPendingConnections() const; virtual QWebSocket *nextPendingConnection() /Factory/; QWebSocketProtocol::CloseCode error() const; QString errorString() const; void pauseAccepting(); void resumeAccepting(); void setServerName(const QString &serverName); QString serverName() const; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &sslConfiguration); %End %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End QList supportedVersions() const; %If (Qt_5_4_0 -) QUrl serverUrl() const; %End signals: void acceptError(QAbstractSocket::SocketError socketError); void serverError(QWebSocketProtocol::CloseCode closeCode); void originAuthenticationRequired(QWebSocketCorsAuthenticator *pAuthenticator); void newConnection(); %If (PyQt_SSL) void peerVerifyError(const QSslError &error); %End %If (PyQt_SSL) void sslErrors(const QList &errors); %End void closed(); private: QWebSocketServer(const QWebSocketServer &); }; %End PyQt-gpl-5.5.1/sip/QtWidgets/0000755000076500000240000000000012613140040015753 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWidgets/qabstractbutton.sip0000644000076500000240000000527312613140040021717 0ustar philstaff00000000000000// qabstractbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractButton : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractButton(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractButton(); void setAutoRepeatDelay(int); int autoRepeatDelay() const; void setAutoRepeatInterval(int); int autoRepeatInterval() const; void setText(const QString &text); QString text() const; void setIcon(const QIcon &icon); QIcon icon() const; QSize iconSize() const; void setShortcut(const QKeySequence &key); QKeySequence shortcut() const; void setCheckable(bool); bool isCheckable() const; bool isChecked() const; void setDown(bool); bool isDown() const; void setAutoRepeat(bool); bool autoRepeat() const; void setAutoExclusive(bool); bool autoExclusive() const; QButtonGroup *group() const; public slots: void setIconSize(const QSize &size); void animateClick(int msecs = 100); void click(); void toggle(); void setChecked(bool); signals: void pressed(); void released(); void clicked(bool checked = false); void toggled(bool checked); protected: virtual void paintEvent(QPaintEvent *e) = 0; virtual bool hitButton(const QPoint &pos) const; virtual void checkStateSet(); virtual void nextCheckState(); virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void changeEvent(QEvent *e); virtual void timerEvent(QTimerEvent *e); }; PyQt-gpl-5.5.1/sip/QtWidgets/qabstractitemdelegate.sip0000644000076500000240000000520112613140040023024 0ustar philstaff00000000000000// qabstractitemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemDelegate : QObject { %TypeHeaderCode #include %End public: enum EndEditHint { NoHint, EditNextItem, EditPreviousItem, SubmitModelCache, RevertModelCache, }; explicit QAbstractItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QAbstractItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const = 0; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const = 0; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual void destroyEditor(QWidget *editor, const QModelIndex &index) const; virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); virtual bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index); signals: void commitData(QWidget *editor); void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint = QAbstractItemDelegate::NoHint); void sizeHintChanged(const QModelIndex &); private: QAbstractItemDelegate(const QAbstractItemDelegate &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qabstractitemview.sip0000644000076500000240000002422512613140040022233 0ustar philstaff00000000000000// qabstractitemview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemView : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum DragDropMode { NoDragDrop, DragOnly, DropOnly, DragDrop, InternalMove, }; enum EditTrigger { NoEditTriggers, CurrentChanged, DoubleClicked, SelectedClicked, EditKeyPressed, AnyKeyPressed, AllEditTriggers, }; typedef QFlags EditTriggers; enum ScrollHint { EnsureVisible, PositionAtTop, PositionAtBottom, PositionAtCenter, }; enum ScrollMode { ScrollPerItem, ScrollPerPixel, }; enum SelectionBehavior { SelectItems, SelectRows, SelectColumns, }; enum SelectionMode { NoSelection, SingleSelection, MultiSelection, ExtendedSelection, ContiguousSelection, }; explicit QAbstractItemView(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractItemView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); QAbstractItemModel *model() const; virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QItemSelectionModel *selectionModel() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setSelectionMode(QAbstractItemView::SelectionMode mode); QAbstractItemView::SelectionMode selectionMode() const; void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior); QAbstractItemView::SelectionBehavior selectionBehavior() const; QModelIndex currentIndex() const; QModelIndex rootIndex() const; void setEditTriggers(QFlags triggers); QFlags editTriggers() const; void setAutoScroll(bool enable); bool hasAutoScroll() const; void setTabKeyNavigation(bool enable); bool tabKeyNavigation() const; void setDropIndicatorShown(bool enable); bool showDropIndicator() const; void setDragEnabled(bool enable); bool dragEnabled() const; void setAlternatingRowColors(bool enable); bool alternatingRowColors() const; void setIconSize(const QSize &size); QSize iconSize() const; void setTextElideMode(Qt::TextElideMode mode); Qt::TextElideMode textElideMode() const; virtual void keyboardSearch(const QString &search); virtual QRect visualRect(const QModelIndex &index) const = 0; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible) = 0; virtual QModelIndex indexAt(const QPoint &p) const = 0; QSize sizeHintForIndex(const QModelIndex &index) const; virtual int sizeHintForRow(int row) const; virtual int sizeHintForColumn(int column) const; void openPersistentEditor(const QModelIndex &index); void closePersistentEditor(const QModelIndex &index); void setIndexWidget(const QModelIndex &index, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->indexWidget(*a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setIndexWidget(*a0, a1); Py_END_ALLOW_THREADS %End QWidget *indexWidget(const QModelIndex &index) const; public slots: virtual void reset(); virtual void setRootIndex(const QModelIndex &index); virtual void selectAll(); void edit(const QModelIndex &index); void clearSelection(); void setCurrentIndex(const QModelIndex &index); void scrollToTop(); void scrollToBottom(); void update(); void update(const QModelIndex &index); protected slots: virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles /DocValue="[]"/ = QVector()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); virtual void updateEditorData(); virtual void updateEditorGeometries(); virtual void updateGeometries(); virtual void verticalScrollbarAction(int action); virtual void horizontalScrollbarAction(int action); virtual void verticalScrollbarValueChanged(int value); virtual void horizontalScrollbarValueChanged(int value); virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); virtual void commitData(QWidget *editor); virtual void editorDestroyed(QObject *editor); signals: void pressed(const QModelIndex &index); void clicked(const QModelIndex &index); void doubleClicked(const QModelIndex &index); void activated(const QModelIndex &index); void entered(const QModelIndex &index); void viewportEntered(); %If (Qt_5_5_0 -) void iconSizeChanged(const QSize &size); %End protected: enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight, MoveHome, MoveEnd, MovePageUp, MovePageDown, MoveNext, MovePrevious, }; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) = 0; virtual int horizontalOffset() const = 0; virtual int verticalOffset() const = 0; virtual bool isIndexHidden(const QModelIndex &index) const = 0; virtual void setSelection(const QRect &rect, QFlags command) = 0; virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0; virtual QModelIndexList selectedIndexes() const; virtual bool edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event); virtual QFlags selectionCommand(const QModelIndex &index, const QEvent *event = 0) const; virtual void startDrag(Qt::DropActions supportedActions); virtual QStyleOptionViewItem viewOptions() const; enum State { NoState, DraggingState, DragSelectingState, EditingState, ExpandingState, CollapsingState, AnimatingState, }; QAbstractItemView::State state() const; void setState(QAbstractItemView::State state); void scheduleDelayedItemsLayout(); void executeDelayedItemsLayout(); void scrollDirtyRegion(int dx, int dy); void setDirtyRegion(const QRegion ®ion); QPoint dirtyRegionOffset() const; virtual bool event(QEvent *event); virtual bool viewportEvent(QEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void timerEvent(QTimerEvent *e); enum DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport, }; QAbstractItemView::DropIndicatorPosition dropIndicatorPosition() const; public: void setVerticalScrollMode(QAbstractItemView::ScrollMode mode); QAbstractItemView::ScrollMode verticalScrollMode() const; void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode); QAbstractItemView::ScrollMode horizontalScrollMode() const; void setDragDropOverwriteMode(bool overwrite); bool dragDropOverwriteMode() const; void setDragDropMode(QAbstractItemView::DragDropMode behavior); QAbstractItemView::DragDropMode dragDropMode() const; void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegateForRow(int row) const; void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegateForColumn(int column) const; QAbstractItemDelegate *itemDelegate(const QModelIndex &index) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; void setAutoScrollMargin(int margin); int autoScrollMargin() const; protected: virtual bool focusNextPrevChild(bool next); virtual void inputMethodEvent(QInputMethodEvent *event); %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: void setDefaultDropAction(Qt::DropAction dropAction); Qt::DropAction defaultDropAction() const; private: QAbstractItemView(const QAbstractItemView &); }; QFlags operator|(QAbstractItemView::EditTrigger f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qabstractscrollarea.sip0000644000076500000240000000706112613140040022530 0ustar philstaff00000000000000// qabstractscrollarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractScrollArea : QFrame { %TypeHeaderCode #include %End public: explicit QAbstractScrollArea(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractScrollArea(); Qt::ScrollBarPolicy verticalScrollBarPolicy() const; void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy); QScrollBar *verticalScrollBar() const /Transfer/; Qt::ScrollBarPolicy horizontalScrollBarPolicy() const; void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy); QScrollBar *horizontalScrollBar() const /Transfer/; QWidget *viewport() const /Transfer/; QSize maximumViewportSize() const; virtual QSize minimumSizeHint() const; virtual QSize sizeHint() const; protected: void setViewportMargins(int left, int top, int right, int bottom); void setViewportMargins(const QMargins &margins); %If (Qt_5_5_0 -) QMargins viewportMargins() const; %End %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End virtual bool event(QEvent *); virtual bool viewportEvent(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void keyPressEvent(QKeyEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual void scrollContentsBy(int dx, int dy); public: void setVerticalScrollBar(QScrollBar *scrollbar /Transfer/); void setHorizontalScrollBar(QScrollBar *scrollbar /Transfer/); QWidget *cornerWidget() const; void setCornerWidget(QWidget *widget /Transfer/); void addScrollBarWidget(QWidget *widget /Transfer/, Qt::Alignment alignment); QWidgetList scrollBarWidgets(Qt::Alignment alignment) /Transfer/; void setViewport(QWidget *widget /Transfer/); virtual void setupViewport(QWidget *viewport); %If (Qt_5_2_0 -) enum SizeAdjustPolicy { AdjustIgnored, AdjustToContentsOnFirstShow, AdjustToContents, }; %End %If (Qt_5_2_0 -) QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const; %End %If (Qt_5_2_0 -) void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy); %End private: QAbstractScrollArea(const QAbstractScrollArea &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qabstractslider.sip0000644000076500000240000000577112613140040021671 0ustar philstaff00000000000000// qabstractslider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSlider : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractSlider(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractSlider(); Qt::Orientation orientation() const; void setMinimum(int); int minimum() const; void setMaximum(int); int maximum() const; void setRange(int min, int max); void setSingleStep(int); int singleStep() const; void setPageStep(int); int pageStep() const; void setTracking(bool enable); bool hasTracking() const; void setSliderDown(bool); bool isSliderDown() const; void setSliderPosition(int); int sliderPosition() const; void setInvertedAppearance(bool); bool invertedAppearance() const; void setInvertedControls(bool); bool invertedControls() const; enum SliderAction { SliderNoAction, SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd, SliderPageStepSub, SliderToMinimum, SliderToMaximum, SliderMove, }; int value() const; void triggerAction(QAbstractSlider::SliderAction action); public slots: void setValue(int); void setOrientation(Qt::Orientation); signals: void valueChanged(int value); void sliderPressed(); void sliderMoved(int position); void sliderReleased(); void rangeChanged(int min, int max); void actionTriggered(int action); protected: void setRepeatAction(QAbstractSlider::SliderAction action, int thresholdTime = 500, int repeatTime = 50); QAbstractSlider::SliderAction repeatAction() const; enum SliderChange { SliderRangeChange, SliderOrientationChange, SliderStepsChange, SliderValueChange, }; virtual void sliderChange(QAbstractSlider::SliderChange change); virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *ev); virtual void timerEvent(QTimerEvent *); virtual void wheelEvent(QWheelEvent *e); virtual void changeEvent(QEvent *e); private: QAbstractSlider(const QAbstractSlider &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qabstractspinbox.sip0000644000076500000240000001007712613140040022064 0ustar philstaff00000000000000// qabstractspinbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSpinBox : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractSpinBox(); enum StepEnabledFlag { StepNone, StepUpEnabled, StepDownEnabled, }; typedef QFlags StepEnabled; enum ButtonSymbols { UpDownArrows, PlusMinus, NoButtons, }; QAbstractSpinBox::ButtonSymbols buttonSymbols() const; void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs); QString text() const; QString specialValueText() const; void setSpecialValueText(const QString &s); bool wrapping() const; void setWrapping(bool w); void setReadOnly(bool r); bool isReadOnly() const; void setAlignment(Qt::Alignment flag); Qt::Alignment alignment() const; void setFrame(bool); bool hasFrame() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void interpretText(); virtual bool event(QEvent *event); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; virtual void stepBy(int steps); public slots: void stepUp(); void stepDown(); void selectAll(); virtual void clear(); signals: void editingFinished(); protected: virtual void resizeEvent(QResizeEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void changeEvent(QEvent *e); virtual void closeEvent(QCloseEvent *e); virtual void hideEvent(QHideEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void showEvent(QShowEvent *e); QLineEdit *lineEdit() const; void setLineEdit(QLineEdit *e /Transfer/); virtual QFlags stepEnabled() const; void initStyleOption(QStyleOptionSpinBox *option) const; public: enum CorrectionMode { CorrectToPreviousValue, CorrectToNearestValue, }; void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm); QAbstractSpinBox::CorrectionMode correctionMode() const; bool hasAcceptableInput() const; void setAccelerated(bool on); bool isAccelerated() const; void setKeyboardTracking(bool kt); bool keyboardTracking() const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; %If (Qt_5_3_0 -) void setGroupSeparatorShown(bool shown); %End %If (Qt_5_3_0 -) bool isGroupSeparatorShown() const; %End private: QAbstractSpinBox(const QAbstractSpinBox &); }; QFlags operator|(QAbstractSpinBox::StepEnabledFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qaction.sip0000644000076500000240000000740712613140040020136 0ustar philstaff00000000000000// qaction.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAction : QObject { %TypeHeaderCode #include %End public: explicit QAction(QObject *parent /TransferThis/); QAction(const QString &text, QObject *parent /TransferThis/); QAction(const QIcon &icon, const QString &text, QObject *parent /TransferThis/); virtual ~QAction(); void setActionGroup(QActionGroup *group /KeepReference/); QActionGroup *actionGroup() const; void setIcon(const QIcon &icon); QIcon icon() const; void setText(const QString &text); QString text() const; void setIconText(const QString &text); QString iconText() const; void setToolTip(const QString &tip); QString toolTip() const; void setStatusTip(const QString &statusTip); QString statusTip() const; void setWhatsThis(const QString &what); QString whatsThis() const; QMenu *menu() const; void setMenu(QMenu *menu /KeepReference/); void setSeparator(bool b); bool isSeparator() const; void setShortcut(const QKeySequence &shortcut); QKeySequence shortcut() const; void setShortcutContext(Qt::ShortcutContext context); Qt::ShortcutContext shortcutContext() const; void setFont(const QFont &font); QFont font() const; void setCheckable(bool); bool isCheckable() const; QVariant data() const; void setData(const QVariant &var); bool isChecked() const; bool isEnabled() const; bool isVisible() const; enum ActionEvent { Trigger, Hover, }; void activate(QAction::ActionEvent event); bool showStatusText(QWidget *widget = 0); QWidget *parentWidget() const; protected: virtual bool event(QEvent *); public slots: void trigger(); void hover(); void setChecked(bool); void toggle(); void setEnabled(bool); void setDisabled(bool b); void setVisible(bool); signals: void changed(); void triggered(bool checked = false); void hovered(); void toggled(bool); public: enum MenuRole { NoRole, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, AboutRole, PreferencesRole, QuitRole, }; void setShortcuts(const QList &shortcuts); void setShortcuts(QKeySequence::StandardKey); QList shortcuts() const; void setAutoRepeat(bool); bool autoRepeat() const; void setMenuRole(QAction::MenuRole menuRole); QAction::MenuRole menuRole() const; QList associatedWidgets() const; QList associatedGraphicsWidgets() const; void setIconVisibleInMenu(bool visible); bool isIconVisibleInMenu() const; enum Priority { LowPriority, NormalPriority, HighPriority, }; void setPriority(QAction::Priority priority); QAction::Priority priority() const; private: QAction(const QAction &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qactiongroup.sip0000644000076500000240000000334712613140040021212 0ustar philstaff00000000000000// qactiongroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QActionGroup : QObject { %TypeHeaderCode #include %End public: explicit QActionGroup(QObject *parent /TransferThis/); virtual ~QActionGroup(); QAction *addAction(QAction *a /Transfer/); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; void removeAction(QAction *a /TransferBack/); QList actions() const; QAction *checkedAction() const; bool isExclusive() const; bool isEnabled() const; bool isVisible() const; public slots: void setEnabled(bool); void setDisabled(bool b); void setVisible(bool); void setExclusive(bool); signals: void triggered(QAction *); void hovered(QAction *); private: QActionGroup(const QActionGroup &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qapplication.sip0000644000076500000240000003665212613140040021170 0ustar philstaff00000000000000// qapplication.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QApplication *qApp QApplication *qApp { %AccessCode // Qt implements this has a #define to a function call so we have to handle // it like this. return qApp; %End }; typedef QList QWidgetList; class QApplication : QGuiApplication { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QKeyEventTransition, &sipType_QKeyEventTransition, -1, 1}, {sipName_QUndoStack, &sipType_QUndoStack, -1, 2}, {sipName_QAbstractItemDelegate, &sipType_QAbstractItemDelegate, 26, 3}, {sipName_QGraphicsTransform, &sipType_QGraphicsTransform, 28, 4}, {sipName_QCompleter, &sipType_QCompleter, -1, 5}, {sipName_QActionGroup, &sipType_QActionGroup, -1, 6}, {sipName_QShortcut, &sipType_QShortcut, -1, 7}, {sipName_QButtonGroup, &sipType_QButtonGroup, -1, 8}, {sipName_QPlainTextDocumentLayout, &sipType_QPlainTextDocumentLayout, -1, 9}, {sipName_QGraphicsAnchor, &sipType_QGraphicsAnchor, -1, 10}, {sipName_QFileSystemModel, &sipType_QFileSystemModel, -1, 11}, {sipName_QGesture, &sipType_QGesture, 30, 12}, {sipName_QApplication, &sipType_QApplication, -1, 13}, {sipName_QLayout, &sipType_QLayout, 35, 14}, {sipName_QDirModel, &sipType_QDirModel, -1, 15}, {sipName_QDataWidgetMapper, &sipType_QDataWidgetMapper, -1, 16}, {sipName_QGraphicsObject, &sipType_QGraphicsObject, 41, 17}, {sipName_QScroller, &sipType_QScroller, -1, 18}, {sipName_QGraphicsScene, &sipType_QGraphicsScene, -1, 19}, {sipName_QUndoGroup, &sipType_QUndoGroup, -1, 20}, {sipName_QMouseEventTransition, &sipType_QMouseEventTransition, -1, 21}, {sipName_QGraphicsEffect, &sipType_QGraphicsEffect, 44, 22}, {sipName_QWidget, &sipType_QWidget, 48, 23}, {sipName_QStyle, &sipType_QStyle, 122, 24}, {sipName_QAction, &sipType_QAction, 124, 25}, {sipName_QSystemTrayIcon, &sipType_QSystemTrayIcon, -1, -1}, {sipName_QStyledItemDelegate, &sipType_QStyledItemDelegate, -1, 27}, {sipName_QItemDelegate, &sipType_QItemDelegate, -1, -1}, {sipName_QGraphicsRotation, &sipType_QGraphicsRotation, -1, 29}, {sipName_QGraphicsScale, &sipType_QGraphicsScale, -1, -1}, {sipName_QSwipeGesture, &sipType_QSwipeGesture, -1, 31}, {sipName_QTapGesture, &sipType_QTapGesture, -1, 32}, {sipName_QPanGesture, &sipType_QPanGesture, -1, 33}, {sipName_QPinchGesture, &sipType_QPinchGesture, -1, 34}, {sipName_QTapAndHoldGesture, &sipType_QTapAndHoldGesture, -1, -1}, {sipName_QStackedLayout, &sipType_QStackedLayout, -1, 36}, {sipName_QFormLayout, &sipType_QFormLayout, -1, 37}, {sipName_QBoxLayout, &sipType_QBoxLayout, 39, 38}, {sipName_QGridLayout, &sipType_QGridLayout, -1, -1}, {sipName_QVBoxLayout, &sipType_QVBoxLayout, -1, 40}, {sipName_QHBoxLayout, &sipType_QHBoxLayout, -1, -1}, {sipName_QGraphicsWidget, &sipType_QGraphicsWidget, 43, 42}, {sipName_QGraphicsTextItem, &sipType_QGraphicsTextItem, -1, -1}, {sipName_QGraphicsProxyWidget, &sipType_QGraphicsProxyWidget, -1, -1}, {sipName_QGraphicsBlurEffect, &sipType_QGraphicsBlurEffect, -1, 45}, {sipName_QGraphicsColorizeEffect, &sipType_QGraphicsColorizeEffect, -1, 46}, {sipName_QGraphicsDropShadowEffect, &sipType_QGraphicsDropShadowEffect, -1, 47}, {sipName_QGraphicsOpacityEffect, &sipType_QGraphicsOpacityEffect, -1, -1}, {sipName_QDockWidget, &sipType_QDockWidget, -1, 49}, {sipName_QProgressBar, &sipType_QProgressBar, -1, 50}, #if QT_VERSION >= 0x050400 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLWidget, &sipType_QOpenGLWidget, -1, 51}, #else {0, 0, -1, 51}, #endif {sipName_QAbstractButton, &sipType_QAbstractButton, 78, 52}, {sipName_QSplashScreen, &sipType_QSplashScreen, -1, 53}, {sipName_QMenuBar, &sipType_QMenuBar, -1, 54}, {sipName_QStatusBar, &sipType_QStatusBar, -1, 55}, {sipName_QMenu, &sipType_QMenu, -1, 56}, {sipName_QMdiSubWindow, &sipType_QMdiSubWindow, -1, 57}, {sipName_QTabWidget, &sipType_QTabWidget, -1, 58}, #if defined(Q_OS_MAC) && defined(SIP_FEATURE_PyQt_MacCocoaViewContainer) {sipName_QMacCocoaViewContainer, &sipType_QMacCocoaViewContainer, -1, 59}, #else {0, 0, -1, 59}, #endif {sipName_QLineEdit, &sipType_QLineEdit, -1, 60}, {sipName_QFrame, &sipType_QFrame, 83, 61}, {sipName_QComboBox, &sipType_QComboBox, 105, 62}, {sipName_QRubberBand, &sipType_QRubberBand, -1, 63}, {sipName_QAbstractSpinBox, &sipType_QAbstractSpinBox, 106, 64}, {sipName_QDialog, &sipType_QDialog, 111, 65}, #if QT_VERSION >= 0x050200 {sipName_QKeySequenceEdit, &sipType_QKeySequenceEdit, -1, 66}, #else {0, 0, -1, 66}, #endif {sipName_QAbstractSlider, &sipType_QAbstractSlider, 119, 67}, {sipName_QWizardPage, &sipType_QWizardPage, -1, 68}, {sipName_QDesktopWidget, &sipType_QDesktopWidget, -1, 69}, {sipName_QDialogButtonBox, &sipType_QDialogButtonBox, -1, 70}, {sipName_QToolBar, &sipType_QToolBar, -1, 71}, {sipName_QSizeGrip, &sipType_QSizeGrip, -1, 72}, {sipName_QSplitterHandle, &sipType_QSplitterHandle, -1, 73}, {sipName_QTabBar, &sipType_QTabBar, -1, 74}, {sipName_QGroupBox, &sipType_QGroupBox, -1, 75}, {sipName_QMainWindow, &sipType_QMainWindow, -1, 76}, {sipName_QCalendarWidget, &sipType_QCalendarWidget, -1, 77}, {sipName_QFocusFrame, &sipType_QFocusFrame, -1, -1}, {sipName_QCheckBox, &sipType_QCheckBox, -1, 79}, {sipName_QRadioButton, &sipType_QRadioButton, -1, 80}, {sipName_QPushButton, &sipType_QPushButton, 82, 81}, {sipName_QToolButton, &sipType_QToolButton, -1, -1}, {sipName_QCommandLinkButton, &sipType_QCommandLinkButton, -1, -1}, {sipName_QAbstractScrollArea, &sipType_QAbstractScrollArea, 89, 84}, {sipName_QToolBox, &sipType_QToolBox, -1, 85}, {sipName_QSplitter, &sipType_QSplitter, -1, 86}, {sipName_QStackedWidget, &sipType_QStackedWidget, -1, 87}, {sipName_QLabel, &sipType_QLabel, -1, 88}, {sipName_QLCDNumber, &sipType_QLCDNumber, -1, -1}, {sipName_QScrollArea, &sipType_QScrollArea, -1, 90}, {sipName_QPlainTextEdit, &sipType_QPlainTextEdit, -1, 91}, {sipName_QGraphicsView, &sipType_QGraphicsView, -1, 92}, {sipName_QAbstractItemView, &sipType_QAbstractItemView, 95, 93}, {sipName_QTextEdit, &sipType_QTextEdit, 104, 94}, {sipName_QMdiArea, &sipType_QMdiArea, -1, -1}, {sipName_QHeaderView, &sipType_QHeaderView, -1, 96}, {sipName_QTableView, &sipType_QTableView, 100, 97}, {sipName_QListView, &sipType_QListView, 101, 98}, {sipName_QTreeView, &sipType_QTreeView, 103, 99}, {sipName_QColumnView, &sipType_QColumnView, -1, -1}, {sipName_QTableWidget, &sipType_QTableWidget, -1, -1}, {sipName_QListWidget, &sipType_QListWidget, -1, 102}, {sipName_QUndoView, &sipType_QUndoView, -1, -1}, {sipName_QTreeWidget, &sipType_QTreeWidget, -1, -1}, {sipName_QTextBrowser, &sipType_QTextBrowser, -1, -1}, {sipName_QFontComboBox, &sipType_QFontComboBox, -1, -1}, {sipName_QDateTimeEdit, &sipType_QDateTimeEdit, 109, 107}, {sipName_QSpinBox, &sipType_QSpinBox, -1, 108}, {sipName_QDoubleSpinBox, &sipType_QDoubleSpinBox, -1, -1}, {sipName_QDateEdit, &sipType_QDateEdit, -1, 110}, {sipName_QTimeEdit, &sipType_QTimeEdit, -1, -1}, {sipName_QFontDialog, &sipType_QFontDialog, -1, 112}, {sipName_QErrorMessage, &sipType_QErrorMessage, -1, 113}, {sipName_QMessageBox, &sipType_QMessageBox, -1, 114}, {sipName_QProgressDialog, &sipType_QProgressDialog, -1, 115}, {sipName_QColorDialog, &sipType_QColorDialog, -1, 116}, {sipName_QFileDialog, &sipType_QFileDialog, -1, 117}, {sipName_QInputDialog, &sipType_QInputDialog, -1, 118}, {sipName_QWizard, &sipType_QWizard, -1, -1}, {sipName_QDial, &sipType_QDial, -1, 120}, {sipName_QScrollBar, &sipType_QScrollBar, -1, 121}, {sipName_QSlider, &sipType_QSlider, -1, -1}, {sipName_QCommonStyle, &sipType_QCommonStyle, 123, -1}, {sipName_QProxyStyle, &sipType_QProxyStyle, -1, -1}, {sipName_QWidgetAction, &sipType_QWidgetAction, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QApplication(SIP_PYLIST argv /DocType="list-of-str"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt5_qtwidgets_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQApplication(nargc, argv, QCoreApplication::ApplicationFlags); Py_END_ALLOW_THREADS // Now modify the original list. pyqt5_qtwidgets_update_argv_list(a0, argc, argv); } %End virtual ~QApplication() /ReleaseGIL/; %MethodCode // Make sure all top level widgets are not owned by Python and so won't be // destroyed by the garbage collector after QApplication is destroyed. QWidgetList tlw = QApplication::topLevelWidgets(); for (int i = 0; i < tlw.count(); ++i) { PyObject *sw = sipGetPyObject(tlw.at(i), sipType_QWidget); if (sw) sipTransferTo(sw, 0); } %End static QStyle *style(); static void setStyle(QStyle * /Transfer/); static QStyle *setStyle(const QString &); enum ColorSpec { NormalColor, CustomColor, ManyColor, }; static int colorSpec(); static void setColorSpec(int); static QPalette palette(); static QPalette palette(const QWidget *); static QPalette palette(const char *className); static void setPalette(const QPalette &, const char *className = 0); static QFont font(); static QFont font(const QWidget *); static QFont font(const char *className); static void setFont(const QFont &, const char *className = 0); static QFontMetrics fontMetrics(); static void setWindowIcon(const QIcon &icon); static QIcon windowIcon(); static QWidgetList allWidgets(); static QWidgetList topLevelWidgets(); static QDesktopWidget *desktop(); static QWidget *activePopupWidget(); static QWidget *activeModalWidget(); static QWidget *focusWidget(); static QWidget *activeWindow(); static void setActiveWindow(QWidget *act); static QWidget *widgetAt(const QPoint &p); static QWidget *widgetAt(int x, int y); static QWidget *topLevelAt(const QPoint &p); static QWidget *topLevelAt(int x, int y); static void beep(); static void alert(QWidget *widget, int msecs = 0) /ReleaseGIL/; static void setCursorFlashTime(int); static int cursorFlashTime(); static void setDoubleClickInterval(int); static int doubleClickInterval(); static void setKeyboardInputInterval(int); static int keyboardInputInterval(); static void setWheelScrollLines(int); static int wheelScrollLines(); static void setGlobalStrut(const QSize &); static QSize globalStrut(); static void setStartDragTime(int ms); static int startDragTime(); static void setStartDragDistance(int l); static int startDragDistance(); static bool isEffectEnabled(Qt::UIEffect); static void setEffectEnabled(Qt::UIEffect, bool enabled = true); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End virtual bool notify(QObject *, QEvent *) /ReleaseGIL/; bool autoSipEnabled() const; QString styleSheet() const; signals: void focusChanged(QWidget *old, QWidget *now); public slots: static void aboutQt(); static void closeAllWindows(); void setAutoSipEnabled(const bool enabled); void setStyleSheet(const QString &sheet); protected: virtual bool event(QEvent *); private: QApplication(const QApplication &); }; %ModuleHeaderCode // Imports from QtCore. typedef char **(*pyqt5_qtwidgets_from_argv_list_t)(PyObject *, int &); extern pyqt5_qtwidgets_from_argv_list_t pyqt5_qtwidgets_from_argv_list; typedef sipErrorState (*pyqt5_qtwidgets_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtwidgets_get_connection_parts_t pyqt5_qtwidgets_get_connection_parts; typedef sipErrorState (*pyqt5_qtwidgets_get_pyqtsignal_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qtwidgets_get_pyqtsignal_parts_t pyqt5_qtwidgets_get_pyqtsignal_parts; typedef void (*pyqt5_qtwidgets_update_argv_list_t)(PyObject *, int, char **); extern pyqt5_qtwidgets_update_argv_list_t pyqt5_qtwidgets_update_argv_list; // This is needed for Qt v5.0.0. #if defined(B0) #undef B0 #endif %End %ModuleCode // Imports from QtCore. pyqt5_qtwidgets_from_argv_list_t pyqt5_qtwidgets_from_argv_list; pyqt5_qtwidgets_get_connection_parts_t pyqt5_qtwidgets_get_connection_parts; pyqt5_qtwidgets_get_pyqtsignal_parts_t pyqt5_qtwidgets_get_pyqtsignal_parts; pyqt5_qtwidgets_update_argv_list_t pyqt5_qtwidgets_update_argv_list; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtwidgets_from_argv_list = (pyqt5_qtwidgets_from_argv_list_t)sipImportSymbol("pyqt5_from_argv_list"); pyqt5_qtwidgets_get_connection_parts = (pyqt5_qtwidgets_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); pyqt5_qtwidgets_get_pyqtsignal_parts = (pyqt5_qtwidgets_get_pyqtsignal_parts_t)sipImportSymbol("pyqt5_get_pyqtsignal_parts"); pyqt5_qtwidgets_update_argv_list = (pyqt5_qtwidgets_update_argv_list_t)sipImportSymbol("pyqt5_update_argv_list"); %End PyQt-gpl-5.5.1/sip/QtWidgets/qboxlayout.sip0000644000076500000240000001144112613140040020700 0ustar philstaff00000000000000// qboxlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBoxLayout : QLayout { %TypeHeaderCode #include %End public: enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop, Down, Up, }; QBoxLayout(QBoxLayout::Direction direction, QWidget *parent /TransferThis/ = 0); virtual ~QBoxLayout(); QBoxLayout::Direction direction() const; void setDirection(QBoxLayout::Direction); void addSpacing(int size); void addStretch(int stretch = 0); void addWidget(QWidget * /GetWrapper/, int stretch = 0, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, *a2); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addLayout(QLayout *layout /Transfer/, int stretch = 0); void addStrut(int); virtual void addItem(QLayoutItem * /Transfer/); void insertSpacing(int index, int size); void insertStretch(int index, int stretch = 0); void insertWidget(int index, QWidget *widget /GetWrapper/, int stretch = 0, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->insertWidget(a0, a1, a2, *a3); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a1Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows insertWidget(QWidget()). sipTransferTo(a1Wrapper, sipSelf); } %End void insertLayout(int index, QLayout *layout /Transfer/, int stretch = 0); bool setStretchFactor(QWidget *w, int stretch); bool setStretchFactor(QLayout *l, int stretch); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual Qt::Orientations expandingDirections() const; virtual void invalidate(); virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual int count() const; virtual void setGeometry(const QRect &); int spacing() const; void setSpacing(int spacing); void addSpacerItem(QSpacerItem *spacerItem /Transfer/); void insertSpacerItem(int index, QSpacerItem *spacerItem /Transfer/); void setStretch(int index, int stretch); int stretch(int index) const; void insertItem(int index, QLayoutItem * /TransferThis/); private: QBoxLayout(const QBoxLayout &); }; class QHBoxLayout : QBoxLayout { %TypeHeaderCode #include %End public: QHBoxLayout(); explicit QHBoxLayout(QWidget *parent /TransferThis/); virtual ~QHBoxLayout(); private: QHBoxLayout(const QHBoxLayout &); }; class QVBoxLayout : QBoxLayout { %TypeHeaderCode #include %End public: QVBoxLayout(); explicit QVBoxLayout(QWidget *parent /TransferThis/); virtual ~QVBoxLayout(); private: QVBoxLayout(const QVBoxLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qbuttongroup.sip0000644000076500000240000000363012613140040021243 0ustar philstaff00000000000000// qbuttongroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QButtonGroup : QObject { %TypeHeaderCode #include %End public: explicit QButtonGroup(QObject *parent /TransferThis/ = 0); virtual ~QButtonGroup(); void setExclusive(bool); bool exclusive() const; void addButton(QAbstractButton *, int id = -1); void removeButton(QAbstractButton *); QList buttons() const; QAbstractButton *button(int id) const; QAbstractButton *checkedButton() const; void setId(QAbstractButton *button, int id); int id(QAbstractButton *button) const; int checkedId() const; signals: void buttonClicked(QAbstractButton *); void buttonClicked(int); void buttonPressed(QAbstractButton *); void buttonPressed(int); void buttonReleased(QAbstractButton *); void buttonReleased(int); %If (Qt_5_2_0 -) void buttonToggled(QAbstractButton *, bool); %End %If (Qt_5_2_0 -) void buttonToggled(int, bool); %End private: QButtonGroup(const QButtonGroup &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcalendarwidget.sip0000644000076500000240000000777412613140040021645 0ustar philstaff00000000000000// qcalendarwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCalendarWidget : QWidget { %TypeHeaderCode #include %End public: enum HorizontalHeaderFormat { NoHorizontalHeader, SingleLetterDayNames, ShortDayNames, LongDayNames, }; enum VerticalHeaderFormat { NoVerticalHeader, ISOWeekNumbers, }; enum SelectionMode { NoSelection, SingleSelection, }; explicit QCalendarWidget(QWidget *parent /TransferThis/ = 0); virtual ~QCalendarWidget(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QDate selectedDate() const; int yearShown() const; int monthShown() const; QDate minimumDate() const; void setMinimumDate(const QDate &date); QDate maximumDate() const; void setMaximumDate(const QDate &date); Qt::DayOfWeek firstDayOfWeek() const; void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek); bool isGridVisible() const; void setGridVisible(bool show); QCalendarWidget::SelectionMode selectionMode() const; void setSelectionMode(QCalendarWidget::SelectionMode mode); QCalendarWidget::HorizontalHeaderFormat horizontalHeaderFormat() const; void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format); QCalendarWidget::VerticalHeaderFormat verticalHeaderFormat() const; void setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format); QTextCharFormat headerTextFormat() const; void setHeaderTextFormat(const QTextCharFormat &format); QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const; void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format); QMap dateTextFormat() const; QTextCharFormat dateTextFormat(const QDate &date) const; void setDateTextFormat(const QDate &date, const QTextCharFormat &color); protected: void updateCell(const QDate &date); void updateCells(); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *watched, QEvent *event); virtual void mousePressEvent(QMouseEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const; public slots: void setCurrentPage(int year, int month); void setDateRange(const QDate &min, const QDate &max); void setSelectedDate(const QDate &date); void showNextMonth(); void showNextYear(); void showPreviousMonth(); void showPreviousYear(); void showSelectedDate(); void showToday(); signals: void activated(const QDate &date); void clicked(const QDate &date); void currentPageChanged(int year, int month); void selectionChanged(); public: bool isNavigationBarVisible() const; bool isDateEditEnabled() const; void setDateEditEnabled(bool enable); int dateEditAcceptDelay() const; void setDateEditAcceptDelay(int delay); public slots: void setNavigationBarVisible(bool visible); private: QCalendarWidget(const QCalendarWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcheckbox.sip0000644000076500000240000000345312613140040020444 0ustar philstaff00000000000000// qcheckbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCheckBox : QAbstractButton { %TypeHeaderCode #include %End public: explicit QCheckBox(QWidget *parent /TransferThis/ = 0); QCheckBox(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QCheckBox(); virtual QSize sizeHint() const; void setTristate(bool on = true); bool isTristate() const; Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); virtual QSize minimumSizeHint() const; signals: void stateChanged(int); protected: virtual bool hitButton(const QPoint &pos) const; virtual void checkStateSet(); virtual void nextCheckState(); virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); void initStyleOption(QStyleOptionButton *option) const; private: QCheckBox(const QCheckBox &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcolordialog.sip0000644000076500000240000000607012613140040021152 0ustar philstaff00000000000000// qcolordialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColorDialog : QDialog { %TypeHeaderCode #include %End public: enum ColorDialogOption { ShowAlphaChannel, NoButtons, DontUseNativeDialog, }; typedef QFlags ColorDialogOptions; explicit QColorDialog(QWidget *parent /TransferThis/ = 0); QColorDialog(const QColor &initial, QWidget *parent /TransferThis/ = 0); virtual ~QColorDialog(); static QColor getColor(const QColor &initial = Qt::white, QWidget *parent = 0, const QString &title = QString(), QFlags options = 0) /ReleaseGIL/; static int customCount(); static QColor customColor(int index); static void setCustomColor(int index, QColor color); static QColor standardColor(int index); static void setStandardColor(int index, QColor color); signals: void colorSelected(const QColor &color); void currentColorChanged(const QColor &color); protected: virtual void changeEvent(QEvent *e); virtual void done(int result); private: QColorDialog(const QColorDialog &); public: void setCurrentColor(const QColor &color); QColor currentColor() const; QColor selectedColor() const; void setOption(QColorDialog::ColorDialogOption option, bool on = true); bool testOption(QColorDialog::ColorDialogOption option) const; void setOptions(QFlags options); QFlags options() const; virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); }; QFlags operator|(QColorDialog::ColorDialogOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qcolumnview.sip0000644000076500000240000000555712613140040021055 0ustar philstaff00000000000000// qcolumnview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColumnView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QColumnView(QWidget *parent /TransferThis/ = 0); virtual ~QColumnView(); QList columnWidths() const; QWidget *previewWidget() const; bool resizeGripsVisible() const; void setColumnWidths(const QList &list); void setPreviewWidget(QWidget *widget /Transfer/); void setResizeGripsVisible(bool visible); virtual QModelIndex indexAt(const QPoint &point) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QSize sizeHint() const; virtual QRect visualRect(const QModelIndex &index) const; virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void selectAll(); signals: void updatePreviewWidget(const QModelIndex &index); protected: virtual QAbstractItemView *createColumn(const QModelIndex &rootIndex); void initializeColumn(QAbstractItemView *column) const; virtual bool isIndexHidden(const QModelIndex &index) const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual void resizeEvent(QResizeEvent *event); virtual void setSelection(const QRect &rect, QFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void scrollContentsBy(int dx, int dy); virtual void rowsInserted(const QModelIndex &parent, int start, int end); protected slots: virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); private: QColumnView(const QColumnView &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcombobox.sip0000644000076500000240000001344712613140040020472 0ustar philstaff00000000000000// qcombobox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QComboBox : QWidget { %TypeHeaderCode #include %End public: explicit QComboBox(QWidget *parent /TransferThis/ = 0); virtual ~QComboBox(); int maxVisibleItems() const; void setMaxVisibleItems(int maxItems); int count() const /__len__/; void setMaxCount(int max); int maxCount() const; bool duplicatesEnabled() const; void setDuplicatesEnabled(bool enable); void setFrame(bool); bool hasFrame() const; int findText(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; enum InsertPolicy { NoInsert, InsertAtTop, InsertAtCurrent, InsertAtBottom, InsertAfterCurrent, InsertBeforeCurrent, InsertAlphabetically, }; QComboBox::InsertPolicy insertPolicy() const; void setInsertPolicy(QComboBox::InsertPolicy policy); enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon, }; QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const; void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy); int minimumContentsLength() const; void setMinimumContentsLength(int characters); QSize iconSize() const; void setIconSize(const QSize &size); bool isEditable() const; void setEditable(bool editable); void setLineEdit(QLineEdit *edit /Transfer/); QLineEdit *lineEdit() const; void setValidator(const QValidator *v /KeepReference/); const QValidator *validator() const; QAbstractItemDelegate *itemDelegate() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemModel *model() const; void setModel(QAbstractItemModel *model /KeepReference/); QModelIndex rootModelIndex() const; void setRootModelIndex(const QModelIndex &index); int modelColumn() const; void setModelColumn(int visibleColumn); int currentIndex() const; void setCurrentIndex(int index); QString currentText() const; QString itemText(int index) const; QIcon itemIcon(int index) const; QVariant itemData(int index, int role = Qt::UserRole) const; void addItems(const QStringList &texts); void addItem(const QString &text, const QVariant &userData /DocValue="None"/ = QVariant()); void addItem(const QIcon &icon, const QString &text, const QVariant &userData /DocValue="None"/ = QVariant()); void insertItem(int index, const QString &text, const QVariant &userData /DocValue="None"/ = QVariant()); void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData /DocValue="None"/ = QVariant()); void insertItems(int index, const QStringList &texts); void removeItem(int index); void setItemText(int index, const QString &text); void setItemIcon(int index, const QIcon &icon); void setItemData(int index, const QVariant &value, int role = Qt::UserRole); QAbstractItemView *view() const; void setView(QAbstractItemView *itemView /Transfer/); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; virtual void showPopup(); virtual void hidePopup(); virtual bool event(QEvent *event); void setCompleter(QCompleter *c /KeepReference/); QCompleter *completer() const; void insertSeparator(int index); public slots: void clear(); void clearEditText(); void setEditText(const QString &text); void setCurrentText(const QString &text); signals: void editTextChanged(const QString &); void activated(int index); void activated(const QString &); void currentIndexChanged(int index); void currentIndexChanged(const QString &); void currentTextChanged(const QString &); void highlighted(int index); void highlighted(const QString &); protected: void initStyleOption(QStyleOptionComboBox *option) const; virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void changeEvent(QEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void showEvent(QShowEvent *e); virtual void hideEvent(QHideEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; %If (Qt_5_2_0 -) QVariant currentData(int role = Qt::UserRole) const; %End private: QComboBox(const QComboBox &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcommandlinkbutton.sip0000644000076500000240000000327112613140040022404 0ustar philstaff00000000000000// qcommandlinkbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommandLinkButton : QPushButton { %TypeHeaderCode #include %End public: explicit QCommandLinkButton(QWidget *parent /TransferThis/ = 0); QCommandLinkButton(const QString &text, QWidget *parent /TransferThis/ = 0); QCommandLinkButton(const QString &text, const QString &description, QWidget *parent /TransferThis/ = 0); virtual ~QCommandLinkButton(); QString description() const; void setDescription(const QString &description); protected: virtual QSize sizeHint() const; virtual int heightForWidth(int) const; virtual QSize minimumSizeHint() const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QCommandLinkButton(const QCommandLinkButton &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcommonstyle.sip0000644000076500000240000000616712613140040021234 0ustar philstaff00000000000000// qcommonstyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommonStyle : QStyle { %TypeHeaderCode #include %End public: QCommonStyle(); virtual ~QCommonStyle(); virtual void polish(QWidget *widget); virtual void unpolish(QWidget *widget); virtual void polish(QApplication *app); virtual void unpolish(QApplication *application); virtual void polish(QPalette & /In,Out/); virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const; virtual QRect subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const; virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget = 0) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget = 0) const; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget = 0) const; virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = 0) const; virtual int pixelMetric(QStyle::PixelMetric m, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int styleHint(QStyle::StyleHint sh, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const; virtual QPixmap standardPixmap(QStyle::StandardPixmap sp, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; private: QCommonStyle(const QCommonStyle &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qcompleter.sip0000644000076500000240000000643712613140040020655 0ustar philstaff00000000000000// qcompleter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCompleter : QObject { %TypeHeaderCode #include %End public: enum CompletionMode { PopupCompletion, UnfilteredPopupCompletion, InlineCompletion, }; enum ModelSorting { UnsortedModel, CaseSensitivelySortedModel, CaseInsensitivelySortedModel, }; QCompleter(QObject *parent /TransferThis/ = 0); QCompleter(QAbstractItemModel *model, QObject *parent /TransferThis/ = 0); QCompleter(const QStringList &list, QObject *parent /TransferThis/ = 0); virtual ~QCompleter(); void setWidget(QWidget *widget /Transfer/); QWidget *widget() const; void setModel(QAbstractItemModel *c /KeepReference/); QAbstractItemModel *model() const; void setCompletionMode(QCompleter::CompletionMode mode); QCompleter::CompletionMode completionMode() const; QAbstractItemView *popup() const; void setPopup(QAbstractItemView *popup /Transfer/); void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity); Qt::CaseSensitivity caseSensitivity() const; void setModelSorting(QCompleter::ModelSorting sorting); QCompleter::ModelSorting modelSorting() const; void setCompletionColumn(int column); int completionColumn() const; void setCompletionRole(int role); int completionRole() const; int completionCount() const; bool setCurrentRow(int row); int currentRow() const; QModelIndex currentIndex() const; QString currentCompletion() const; QAbstractItemModel *completionModel() const; QString completionPrefix() const; virtual QString pathFromIndex(const QModelIndex &index) const; virtual QStringList splitPath(const QString &path) const; bool wrapAround() const; public slots: void complete(const QRect &rect = QRect()); void setCompletionPrefix(const QString &prefix); void setWrapAround(bool wrap); protected: virtual bool eventFilter(QObject *o, QEvent *e); virtual bool event(QEvent *); signals: void activated(const QString &text); void activated(const QModelIndex &index); void highlighted(const QString &text); void highlighted(const QModelIndex &index); public: int maxVisibleItems() const; void setMaxVisibleItems(int maxItems); %If (Qt_5_2_0 -) void setFilterMode(Qt::MatchFlags filterMode); %End %If (Qt_5_2_0 -) Qt::MatchFlags filterMode() const; %End }; PyQt-gpl-5.5.1/sip/QtWidgets/qdatawidgetmapper.sip0000644000076500000240000000470112613140040022175 0ustar philstaff00000000000000// qdatawidgetmapper.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDataWidgetMapper : QObject { %TypeHeaderCode #include %End public: enum SubmitPolicy { AutoSubmit, ManualSubmit, }; explicit QDataWidgetMapper(QObject *parent /TransferThis/ = 0); virtual ~QDataWidgetMapper(); void setModel(QAbstractItemModel *model /KeepReference/); QAbstractItemModel *model() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setRootIndex(const QModelIndex &index); QModelIndex rootIndex() const; void setOrientation(Qt::Orientation aOrientation); Qt::Orientation orientation() const; void setSubmitPolicy(QDataWidgetMapper::SubmitPolicy policy); QDataWidgetMapper::SubmitPolicy submitPolicy() const; void addMapping(QWidget *widget, int section); void addMapping(QWidget *widget, int section, const QByteArray &propertyName); void removeMapping(QWidget *widget); QByteArray mappedPropertyName(QWidget *widget) const; int mappedSection(QWidget *widget) const; QWidget *mappedWidgetAt(int section) const; void clearMapping(); int currentIndex() const; public slots: void revert(); virtual void setCurrentIndex(int index); void setCurrentModelIndex(const QModelIndex &index); bool submit(); void toFirst(); void toLast(); void toNext(); void toPrevious(); signals: void currentIndexChanged(int index); private: QDataWidgetMapper(const QDataWidgetMapper &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qdatetimeedit.sip0000644000076500000240000001216312613140040021316 0ustar philstaff00000000000000// qdatetimeedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDateTimeEdit : QAbstractSpinBox { %TypeHeaderCode #include %End public: enum Section { NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, HourSection, DaySection, MonthSection, YearSection, TimeSections_Mask, DateSections_Mask, }; typedef QFlags Sections; explicit QDateTimeEdit(QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QDateTime &datetime, QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QDate &date, QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QTime &time, QWidget *parent /TransferThis/ = 0); virtual ~QDateTimeEdit(); QDateTime dateTime() const; QDate date() const; QTime time() const; QDate minimumDate() const; void setMinimumDate(const QDate &min); void clearMinimumDate(); QDate maximumDate() const; void setMaximumDate(const QDate &max); void clearMaximumDate(); void setDateRange(const QDate &min, const QDate &max); QTime minimumTime() const; void setMinimumTime(const QTime &min); void clearMinimumTime(); QTime maximumTime() const; void setMaximumTime(const QTime &max); void clearMaximumTime(); void setTimeRange(const QTime &min, const QTime &max); QFlags displayedSections() const; QDateTimeEdit::Section currentSection() const; void setCurrentSection(QDateTimeEdit::Section section); QString sectionText(QDateTimeEdit::Section s) const; QString displayFormat() const; void setDisplayFormat(const QString &format); bool calendarPopup() const; void setCalendarPopup(bool enable); void setSelectedSection(QDateTimeEdit::Section section); virtual QSize sizeHint() const; virtual void clear(); virtual void stepBy(int steps); virtual bool event(QEvent *e); QDateTimeEdit::Section sectionAt(int index) const; int currentSectionIndex() const; void setCurrentSectionIndex(int index); int sectionCount() const; signals: void dateTimeChanged(const QDateTime &date); void timeChanged(const QTime &date); void dateChanged(const QDate &date); public slots: void setDateTime(const QDateTime &dateTime); void setDate(const QDate &date); void setTime(const QTime &time); protected: void initStyleOption(QStyleOptionSpinBox *option) const; virtual void keyPressEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual bool focusNextPrevChild(bool next); virtual void mousePressEvent(QMouseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; virtual QDateTime dateTimeFromText(const QString &text) const; virtual QString textFromDateTime(const QDateTime &dt) const; virtual QFlags stepEnabled() const; public: QDateTime minimumDateTime() const; void clearMinimumDateTime(); void setMinimumDateTime(const QDateTime &dt); QDateTime maximumDateTime() const; void clearMaximumDateTime(); void setMaximumDateTime(const QDateTime &dt); void setDateTimeRange(const QDateTime &min, const QDateTime &max); QCalendarWidget *calendarWidget() const; void setCalendarWidget(QCalendarWidget *calendarWidget /Transfer/); Qt::TimeSpec timeSpec() const; void setTimeSpec(Qt::TimeSpec spec); private: QDateTimeEdit(const QDateTimeEdit &); }; class QTimeEdit : QDateTimeEdit { %TypeHeaderCode #include %End public: explicit QTimeEdit(QWidget *parent /TransferThis/ = 0); QTimeEdit(const QTime &time, QWidget *parent /TransferThis/ = 0); virtual ~QTimeEdit(); }; class QDateEdit : QDateTimeEdit { %TypeHeaderCode #include %End public: explicit QDateEdit(QWidget *parent /TransferThis/ = 0); QDateEdit(const QDate &date, QWidget *parent /TransferThis/ = 0); virtual ~QDateEdit(); }; QFlags operator|(QDateTimeEdit::Section f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qdesktopwidget.sip0000644000076500000240000000356112613140040021533 0ustar philstaff00000000000000// qdesktopwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesktopWidget : QWidget { %TypeHeaderCode #include %End public: QDesktopWidget(); virtual ~QDesktopWidget(); bool isVirtualDesktop() const; int primaryScreen() const; int screenNumber(const QWidget *widget = 0) const; int screenNumber(const QPoint &) const; QWidget *screen(int screen = -1); int screenCount() const; const QRect screenGeometry(int screen = -1) const; const QRect screenGeometry(const QWidget *widget) const; const QRect screenGeometry(const QPoint &point) const; const QRect availableGeometry(int screen = -1) const; const QRect availableGeometry(const QWidget *widget) const; const QRect availableGeometry(const QPoint &point) const; signals: void resized(int); void workAreaResized(int); void screenCountChanged(int); protected: virtual void resizeEvent(QResizeEvent *e); private: QDesktopWidget(const QDesktopWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qdial.sip0000644000076500000240000000354612613140040017572 0ustar philstaff00000000000000// qdial.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDial : QAbstractSlider { %TypeHeaderCode #include %End public: explicit QDial(QWidget *parent /TransferThis/ = 0); virtual ~QDial(); bool wrapping() const; int notchSize() const; void setNotchTarget(double target); qreal notchTarget() const; bool notchesVisible() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; public slots: void setNotchesVisible(bool visible); void setWrapping(bool on); protected: void initStyleOption(QStyleOptionSlider *option) const; virtual bool event(QEvent *e); virtual void resizeEvent(QResizeEvent *re); virtual void paintEvent(QPaintEvent *pe); virtual void mousePressEvent(QMouseEvent *me); virtual void mouseReleaseEvent(QMouseEvent *me); virtual void mouseMoveEvent(QMouseEvent *me); virtual void sliderChange(QAbstractSlider::SliderChange change); private: QDial(const QDial &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qdialog.sip0000644000076500000240000000652212613140040020115 0ustar philstaff00000000000000// qdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDialog : QWidget { %TypeHeaderCode #include %End public: QDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QDialog(); enum DialogCode { Rejected, Accepted, }; int result() const; virtual void setVisible(bool visible); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setSizeGripEnabled(bool); bool isSizeGripEnabled() const; void setModal(bool modal); void setResult(int r); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %If (Py_v3) virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %End public slots: virtual void done(int); virtual void accept(); virtual void reject(); virtual void open(); signals: void accepted(); void finished(int result); void rejected(); protected: virtual void keyPressEvent(QKeyEvent *); virtual void closeEvent(QCloseEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual bool eventFilter(QObject *, QEvent *); private: QDialog(const QDialog &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qdialogbuttonbox.sip0000644000076500000240000000732512613140040022064 0ustar philstaff00000000000000// qdialogbuttonbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDialogButtonBox : QWidget { %TypeHeaderCode #include %End public: enum ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout, }; enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, HelpRole, YesRole, NoRole, ResetRole, ApplyRole, }; enum StandardButton { NoButton, Ok, Save, SaveAll, Open, Yes, YesToAll, No, NoToAll, Abort, Retry, Ignore, Close, Cancel, Discard, Help, Apply, Reset, RestoreDefaults, }; typedef QFlags StandardButtons; QDialogButtonBox(QWidget *parent /TransferThis/ = 0); QDialogButtonBox(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); %If (Qt_5_2_0 -) QDialogButtonBox(QFlags buttons, QWidget *parent /TransferThis/ = 0); %End %If (Qt_5_2_0 -) QDialogButtonBox(QFlags buttons, Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); %End %If (- Qt_5_2_0) QDialogButtonBox(QFlags buttons, Qt::Orientation orientation = Qt::Horizontal, QWidget *parent /TransferThis/ = 0); %End virtual ~QDialogButtonBox(); void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void addButton(QAbstractButton *button /Transfer/, QDialogButtonBox::ButtonRole role); QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role) /Transfer/; QPushButton *addButton(QDialogButtonBox::StandardButton button) /Transfer/; void removeButton(QAbstractButton *button /TransferBack/); void clear(); QList buttons() const; QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button) const; void setStandardButtons(QFlags buttons); QFlags standardButtons() const; QDialogButtonBox::StandardButton standardButton(QAbstractButton *button) const; QPushButton *button(QDialogButtonBox::StandardButton which) const; void setCenterButtons(bool center); bool centerButtons() const; signals: void accepted(); void clicked(QAbstractButton *button); void helpRequested(); void rejected(); protected: virtual void changeEvent(QEvent *event); virtual bool event(QEvent *event); private: QDialogButtonBox(const QDialogButtonBox &); }; QFlags operator|(QDialogButtonBox::StandardButton f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qdirmodel.sip0000644000076500000240000000723512613140040020457 0ustar philstaff00000000000000// qdirmodel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDirModel : QAbstractItemModel { %TypeHeaderCode #include %End public: enum Roles { FileIconRole, FilePathRole, FileNameRole, }; QDirModel(const QStringList &nameFilters, QFlags filters, QFlags sort, QObject *parent /TransferThis/ = 0); explicit QDirModel(QObject *parent /TransferThis/ = 0); virtual ~QDirModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; void setIconProvider(QFileIconProvider *provider /KeepReference/); QFileIconProvider *iconProvider() const; void setNameFilters(const QStringList &filters); QStringList nameFilters() const; void setFilter(QFlags filters); QFlags filter() const; void setSorting(QFlags sort); QFlags sorting() const; void setResolveSymlinks(bool enable); bool resolveSymlinks() const; void setReadOnly(bool enable); bool isReadOnly() const; void setLazyChildCount(bool enable); bool lazyChildCount() const; void refresh(const QModelIndex &parent = QModelIndex()); QModelIndex index(const QString &path, int column = 0) const; bool isDir(const QModelIndex &index) const; QModelIndex mkdir(const QModelIndex &parent, const QString &name); bool rmdir(const QModelIndex &index); bool remove(const QModelIndex &index); QString filePath(const QModelIndex &index) const; QString fileName(const QModelIndex &index) const; QIcon fileIcon(const QModelIndex &index) const; QFileInfo fileInfo(const QModelIndex &index) const; private: QDirModel(const QDirModel &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qdockwidget.sip0000644000076500000240000000542712613140040021005 0ustar philstaff00000000000000// qdockwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDockWidget : QWidget { %TypeHeaderCode #include %End public: QDockWidget(const QString &title, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QDockWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QDockWidget(); QWidget *widget() const; void setWidget(QWidget *widget /Transfer/); enum DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, AllDockWidgetFeatures, NoDockWidgetFeatures, }; typedef QFlags DockWidgetFeatures; void setFeatures(QFlags features); QFlags features() const; void setFloating(bool floating); bool isFloating() const; void setAllowedAreas(Qt::DockWidgetAreas areas); Qt::DockWidgetAreas allowedAreas() const; bool isAreaAllowed(Qt::DockWidgetArea area) const; QAction *toggleViewAction() const /Transfer/; void setTitleBarWidget(QWidget *widget /Transfer/); QWidget *titleBarWidget() const; signals: void featuresChanged(QFlags features); void topLevelChanged(bool topLevel); void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas); void dockLocationChanged(Qt::DockWidgetArea area); void visibilityChanged(bool visible); protected: void initStyleOption(QStyleOptionDockWidget *option) const; virtual void changeEvent(QEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); private: QDockWidget(const QDockWidget &); }; QFlags operator|(QDockWidget::DockWidgetFeature f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qdrawutil.sip0000644000076500000240000000525212613140040020510 0ustar philstaff00000000000000// qdrawutil.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2, const QPalette &pal, bool sunken = true, int lineWidth = 1, int midLineWidth = 0); void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2, const QPalette &pal, bool sunken = true, int lineWidth = 1, int midLineWidth = 0); void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = 0); void qDrawShadeRect(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = 0); void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, int lineWidth = 1, const QBrush *fill = 0); void qDrawShadePanel(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, int lineWidth = 1, const QBrush *fill = 0); void qDrawWinButton(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinButton(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinPanel(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &, int lineWidth = 1, const QBrush *fill = 0); void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &, int lineWidth = 1, const QBrush *fill = 0); void qDrawBorderPixmap(QPainter *painter, const QRect &target, const QMargins &margins, const QPixmap &pixmap); PyQt-gpl-5.5.1/sip/QtWidgets/qerrormessage.sip0000644000076500000240000000264112613140040021352 0ustar philstaff00000000000000// qerrormessage.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QErrorMessage : QDialog { %TypeHeaderCode #include %End public: explicit QErrorMessage(QWidget *parent /TransferThis/ = 0); virtual ~QErrorMessage(); static QErrorMessage *qtHandler(); public slots: void showMessage(const QString &message); void showMessage(const QString &message, const QString &type); protected: virtual void changeEvent(QEvent *e); virtual void done(int); private: QErrorMessage(const QErrorMessage &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qfiledialog.sip0000644000076500000240000003104512613140040020753 0ustar philstaff00000000000000// qfiledialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileDialog : QDialog { %TypeHeaderCode #include %End public: enum ViewMode { Detail, List, }; enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly, }; enum AcceptMode { AcceptOpen, AcceptSave, }; enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, }; enum Option { ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseSheet, DontUseNativeDialog, ReadOnly, HideNameFilterDetails, %If (Qt_5_2_0 -) DontUseCustomDirectoryIcons, %End }; typedef QFlags Options; QFileDialog(QWidget *parent /TransferThis/, Qt::WindowFlags f); QFileDialog(QWidget *parent /TransferThis/ = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString()); virtual ~QFileDialog(); void setDirectory(const QString &directory); void setDirectory(const QDir &adirectory); QDir directory() const; void selectFile(const QString &filename); QStringList selectedFiles() const; void setViewMode(QFileDialog::ViewMode mode); QFileDialog::ViewMode viewMode() const; void setFileMode(QFileDialog::FileMode mode); QFileDialog::FileMode fileMode() const; void setAcceptMode(QFileDialog::AcceptMode mode); QFileDialog::AcceptMode acceptMode() const; void setDefaultSuffix(const QString &suffix); QString defaultSuffix() const; void setHistory(const QStringList &paths); QStringList history() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setIconProvider(QFileIconProvider *provider /KeepReference/); QFileIconProvider *iconProvider() const; void setLabelText(QFileDialog::DialogLabel label, const QString &text); QString labelText(QFileDialog::DialogLabel label) const; signals: void currentChanged(const QString &path); void directoryEntered(const QString &directory); void filesSelected(const QStringList &files); void filterSelected(const QString &filter); void fileSelected(const QString &file); public: static QString getExistingDirectory(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), QFlags options = QFileDialog::ShowDirsOnly) /ReleaseGIL/; static SIP_PYTUPLE getOpenFileName(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString(), const QString &initialFilter /DocValue="''"/ = QString(), Options options = 0) /DocType="(str, str)", ReleaseGIL/; %MethodCode QString *name; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS name = new QString(QFileDialog::getOpenFileName(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (name_obj && filter_obj) sipRes = PyTuple_Pack(2, name_obj, filter_obj); Py_XDECREF(name_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getOpenFileNames(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString(), const QString &initialFilter /DocValue="''"/ = QString(), Options options = 0) /DocType="(list-of-str, str)", ReleaseGIL/; %MethodCode QStringList *names; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS names = new QStringList(QFileDialog::getOpenFileNames(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *names_obj = sipConvertFromNewType(names, sipType_QStringList, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (names_obj && filter_obj) sipRes = PyTuple_Pack(2, names_obj, filter_obj); Py_XDECREF(names_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getSaveFileName(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString(), const QString &initialFilter /DocValue="''"/ = QString(), Options options = 0) /DocType="(str, str)", ReleaseGIL/; %MethodCode QString *name; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS name = new QString(QFileDialog::getSaveFileName(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (name_obj && filter_obj) sipRes = PyTuple_Pack(2, name_obj, filter_obj); Py_XDECREF(name_obj); Py_XDECREF(filter_obj); %End protected: virtual void done(int result); virtual void accept(); virtual void changeEvent(QEvent *e); public: void setSidebarUrls(const QList &urls); QList sidebarUrls() const; QByteArray saveState() const; bool restoreState(const QByteArray &state); void setProxyModel(QAbstractProxyModel *model /Transfer/); QAbstractProxyModel *proxyModel() const; void setNameFilter(const QString &filter); void setNameFilters(const QStringList &filters); QStringList nameFilters() const; void selectNameFilter(const QString &filter); QString selectedNameFilter() const; QFlags filter() const; void setFilter(QFlags filters); void setOption(QFileDialog::Option option, bool on = true); bool testOption(QFileDialog::Option option) const; void setOptions(QFlags options); QFlags options() const; virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); %If (Qt_5_2_0 -) void setDirectoryUrl(const QUrl &directory); %End %If (Qt_5_2_0 -) QUrl directoryUrl() const; %End %If (Qt_5_2_0 -) void selectUrl(const QUrl &url); %End %If (Qt_5_2_0 -) QList selectedUrls() const; %End %If (Qt_5_2_0 -) void setMimeTypeFilters(const QStringList &filters); %End %If (Qt_5_2_0 -) QStringList mimeTypeFilters() const; %End %If (Qt_5_2_0 -) void selectMimeTypeFilter(const QString &filter); %End signals: %If (Qt_5_2_0 -) void urlSelected(const QUrl &url); %End %If (Qt_5_2_0 -) void urlsSelected(const QList &urls); %End %If (Qt_5_2_0 -) void currentUrlChanged(const QUrl &url); %End %If (Qt_5_2_0 -) void directoryUrlEntered(const QUrl &directory); %End public: %If (Qt_5_2_0 -) static QUrl getExistingDirectoryUrl(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QUrl &directory = QUrl(), QFlags options = QFileDialog::ShowDirsOnly, const QStringList &supportedSchemes /DocValue="[]"/ = QStringList()) /ReleaseGIL/; %End %If (Qt_5_2_0 -) static SIP_PYTUPLE getOpenFileUrl(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString(), const QString &initialFilter /DocValue="''"/ = QString(), Options options = 0, const QStringList &supportedSchemes /DocValue="[]"/ = QStringList()) /DocType="(QUrl, str)", ReleaseGIL/; %MethodCode QUrl *url; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url = new QUrl(QFileDialog::getOpenFileUrl(a0, *a1, *a2, *a3, filter, *a5, *a6)); Py_END_ALLOW_THREADS PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_obj && filter_obj) sipRes = PyTuple_Pack(2, url_obj, filter_obj); Py_XDECREF(url_obj); Py_XDECREF(filter_obj); %End %End %If (Qt_5_2_0 -) static SIP_PYTUPLE getOpenFileUrls(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString(), const QString &initialFilter /DocValue="''"/ = QString(), Options options = 0, const QStringList &supportedSchemes /DocValue="[]"/ = QStringList()) /DocType="(list-of-QUrl, str)", ReleaseGIL/; %MethodCode QList url_list; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url_list = QFileDialog::getOpenFileUrls(a0, *a1, *a2, *a3, filter, *a5, *a6); Py_END_ALLOW_THREADS PyObject *url_list_obj = PyList_New(url_list.size()); if (url_list_obj) { for (int i = 0; i < url_list.size(); ++i) { QUrl *url = new QUrl(url_list.at(i)); PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); if (!url_obj) { delete url; Py_DECREF(url_list_obj); url_list_obj = 0; break; } PyList_SET_ITEM(url_list_obj, i, url_obj); } } PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_list_obj && filter_obj) sipRes = PyTuple_Pack(2, url_list_obj, filter_obj); Py_XDECREF(url_list_obj); Py_XDECREF(filter_obj); %End %End %If (Qt_5_2_0 -) static SIP_PYTUPLE getSaveFileUrl(QWidget *parent = 0, const QString &caption /DocValue="''"/ = QString(), const QString &directory /DocValue="''"/ = QString(), const QString &filter /DocValue="''"/ = QString(), const QString &initialFilter /DocValue="''"/ = QString(), Options options = 0, const QStringList &supportedSchemes /DocValue="[]"/ = QStringList()) /DocType="(QUrl, str)", ReleaseGIL/; %MethodCode QUrl *url; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url = new QUrl(QFileDialog::getSaveFileUrl(a0, *a1, *a2, *a3, filter, *a5, *a6)); Py_END_ALLOW_THREADS PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_obj && filter_obj) sipRes = PyTuple_Pack(2, url_obj, filter_obj); Py_XDECREF(url_obj); Py_XDECREF(filter_obj); %End %End private: QFileDialog(const QFileDialog &); }; QFlags operator|(QFileDialog::Option f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qfileiconprovider.sip0000644000076500000240000000364212613140040022221 0ustar philstaff00000000000000// qfileiconprovider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileIconProvider { %TypeHeaderCode #include %End public: QFileIconProvider(); virtual ~QFileIconProvider(); enum IconType { Computer, Desktop, Trashcan, Network, Drive, Folder, File, }; virtual QIcon icon(QFileIconProvider::IconType type) const; virtual QIcon icon(const QFileInfo &info) const; virtual QString type(const QFileInfo &info) const; %If (Qt_5_2_0 -) enum Option { DontUseCustomDirectoryIcons, }; %End %If (Qt_5_2_0 -) typedef QFlags Options; %End %If (Qt_5_2_0 -) void setOptions(QFlags options); %End %If (Qt_5_2_0 -) QFlags options() const; %End private: QFileIconProvider(const QFileIconProvider &); }; %If (Qt_5_2_0 -) QFlags operator|(QFileIconProvider::Option f1, QFlags f2); %End PyQt-gpl-5.5.1/sip/QtWidgets/qfilesystemmodel.sip0000644000076500000240000001032712613140040022061 0ustar philstaff00000000000000// qfilesystemmodel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSystemModel : QAbstractItemModel { %TypeHeaderCode #include %End public: enum Roles { FileIconRole, FilePathRole, FileNameRole, FilePermissions, }; explicit QFileSystemModel(QObject *parent /TransferThis/ = 0); virtual ~QFileSystemModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex index(const QString &path, int column = 0) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual bool canFetchMore(const QModelIndex &parent) const; virtual void fetchMore(const QModelIndex &parent); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant myComputer(int role = Qt::DisplayRole) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; QModelIndex setRootPath(const QString &path); QString rootPath() const; QDir rootDirectory() const; void setIconProvider(QFileIconProvider *provider /KeepReference/); QFileIconProvider *iconProvider() const; void setFilter(QFlags filters); QFlags filter() const; void setResolveSymlinks(bool enable); bool resolveSymlinks() const; void setReadOnly(bool enable); bool isReadOnly() const; void setNameFilterDisables(bool enable); bool nameFilterDisables() const; void setNameFilters(const QStringList &filters); QStringList nameFilters() const; QString filePath(const QModelIndex &index) const; bool isDir(const QModelIndex &index) const; qint64 size(const QModelIndex &index) const; QString type(const QModelIndex &index) const; QDateTime lastModified(const QModelIndex &index) const; QModelIndex mkdir(const QModelIndex &parent, const QString &name); QFlags permissions(const QModelIndex &index) const; bool rmdir(const QModelIndex &index); QString fileName(const QModelIndex &aindex) const; QIcon fileIcon(const QModelIndex &aindex) const; QFileInfo fileInfo(const QModelIndex &aindex) const; bool remove(const QModelIndex &index); signals: void fileRenamed(const QString &path, const QString &oldName, const QString &newName); void rootPathChanged(const QString &newPath); void directoryLoaded(const QString &path); protected: virtual bool event(QEvent *event); virtual void timerEvent(QTimerEvent *event); private: QFileSystemModel(const QFileSystemModel &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qfocusframe.sip0000644000076500000240000000263012613140040021004 0ustar philstaff00000000000000// qfocusframe.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFocusFrame : QWidget { %TypeHeaderCode #include %End public: QFocusFrame(QWidget *parent /TransferThis/ = 0); virtual ~QFocusFrame(); void setWidget(QWidget *widget); QWidget *widget() const; protected: void initStyleOption(QStyleOption *option) const; virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QFocusFrame(const QFocusFrame &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qfontcombobox.sip0000644000076500000240000000370212613140040021352 0ustar philstaff00000000000000// qfontcombobox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontComboBox : QComboBox { %TypeHeaderCode #include %End public: enum FontFilter { AllFonts, ScalableFonts, NonScalableFonts, MonospacedFonts, ProportionalFonts, }; QFlags fontFilters() const; explicit QFontComboBox(QWidget *parent /TransferThis/ = 0); virtual ~QFontComboBox(); void setWritingSystem(QFontDatabase::WritingSystem); QFontDatabase::WritingSystem writingSystem() const; typedef QFlags FontFilters; void setFontFilters(QFlags filters); QFont currentFont() const; virtual QSize sizeHint() const; public slots: void setCurrentFont(const QFont &f); signals: void currentFontChanged(const QFont &f); protected: virtual bool event(QEvent *e); private: QFontComboBox(const QFontComboBox &); }; QFlags operator|(QFontComboBox::FontFilter f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qfontdialog.sip0000644000076500000240000000611212613140040020777 0ustar philstaff00000000000000// qfontdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontDialog : QDialog { %TypeHeaderCode #include %End public: enum FontDialogOption { NoButtons, DontUseNativeDialog, %If (Qt_5_2_0 -) ScalableFonts, %End %If (Qt_5_2_0 -) NonScalableFonts, %End %If (Qt_5_2_0 -) MonospacedFonts, %End %If (Qt_5_2_0 -) ProportionalFonts, %End }; typedef QFlags FontDialogOptions; explicit QFontDialog(QWidget *parent /TransferThis/ = 0); QFontDialog(const QFont &initial, QWidget *parent /TransferThis/ = 0); virtual ~QFontDialog(); static QFont getFont(bool *ok, const QFont &initial, QWidget *parent = 0, const QString &caption = QString(), QFlags options = 0) /ReleaseGIL/; static QFont getFont(bool *ok, QWidget *parent = 0) /ReleaseGIL/; protected: virtual void changeEvent(QEvent *e); virtual void done(int result); virtual bool eventFilter(QObject *object, QEvent *event); private: QFontDialog(const QFontDialog &); public: void setCurrentFont(const QFont &font); QFont currentFont() const; QFont selectedFont() const; void setOption(QFontDialog::FontDialogOption option, bool on = true); bool testOption(QFontDialog::FontDialogOption option) const; void setOptions(QFlags options); QFlags options() const; virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); signals: void currentFontChanged(const QFont &font); void fontSelected(const QFont &font); }; QFlags operator|(QFontDialog::FontDialogOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qformlayout.sip0000644000076500000240000001006012613140040021047 0ustar philstaff00000000000000// qformlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFormLayout : QLayout { %TypeHeaderCode #include %End public: enum FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow, }; enum RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows, }; enum ItemRole { LabelRole, FieldRole, SpanningRole, }; explicit QFormLayout(QWidget *parent /TransferThis/ = 0); virtual ~QFormLayout(); void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy); QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const; void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy); QFormLayout::RowWrapPolicy rowWrapPolicy() const; void setLabelAlignment(Qt::Alignment alignment); Qt::Alignment labelAlignment() const; void setFormAlignment(Qt::Alignment alignment); Qt::Alignment formAlignment() const; void setHorizontalSpacing(int spacing); int horizontalSpacing() const; void setVerticalSpacing(int spacing); int verticalSpacing() const; int spacing() const; void setSpacing(int); void addRow(QWidget *label /Transfer/, QWidget *field /Transfer/); void addRow(QWidget *label /Transfer/, QLayout *field /Transfer/); void addRow(const QString &labelText, QWidget *field /Transfer/); void addRow(const QString &labelText, QLayout *field /Transfer/); void addRow(QWidget *widget /Transfer/); void addRow(QLayout *layout /Transfer/); void insertRow(int row, QWidget *label /Transfer/, QWidget *field /Transfer/); void insertRow(int row, QWidget *label /Transfer/, QLayout *field /Transfer/); void insertRow(int row, const QString &labelText, QWidget *field /Transfer/); void insertRow(int row, const QString &labelText, QLayout *field /Transfer/); void insertRow(int row, QWidget *widget /Transfer/); void insertRow(int row, QLayout *layout /Transfer/); void setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item /Transfer/); void setWidget(int row, QFormLayout::ItemRole role, QWidget *widget /Transfer/); void setLayout(int row, QFormLayout::ItemRole role, QLayout *layout /Transfer/); QLayoutItem *itemAt(int row, QFormLayout::ItemRole role) const; void getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; void getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; void getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; QWidget *labelForField(QWidget *field) const; QWidget *labelForField(QLayout *field) const; virtual void addItem(QLayoutItem *item /Transfer/); virtual QLayoutItem *itemAt(int index) const; virtual QLayoutItem *takeAt(int index) /TransferBack/; virtual void setGeometry(const QRect &rect); virtual QSize minimumSize() const; virtual QSize sizeHint() const; virtual void invalidate(); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int width) const; virtual Qt::Orientations expandingDirections() const; virtual int count() const; int rowCount() const; }; PyQt-gpl-5.5.1/sip/QtWidgets/qframe.sip0000644000076500000240000000416212613140040017746 0ustar philstaff00000000000000// qframe.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFrame : QWidget { %TypeHeaderCode #include %End public: enum Shadow { Plain, Raised, Sunken, }; enum Shape { NoFrame, Box, Panel, WinPanel, HLine, VLine, StyledPanel, }; enum StyleMask { Shadow_Mask, Shape_Mask, }; QFrame(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QFrame(); int frameStyle() const; void setFrameStyle(int); int frameWidth() const; virtual QSize sizeHint() const; QFrame::Shape frameShape() const; void setFrameShape(QFrame::Shape); QFrame::Shadow frameShadow() const; void setFrameShadow(QFrame::Shadow); int lineWidth() const; void setLineWidth(int); int midLineWidth() const; void setMidLineWidth(int); QRect frameRect() const; void setFrameRect(const QRect &); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); void drawFrame(QPainter *); %If (Qt_5_5_0 -) void initStyleOption(QStyleOptionFrame *option) const; %End private: QFrame(const QFrame &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgesture.sip0000644000076500000240000001234312613140040020332 0ustar philstaff00000000000000// qgesture.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGesture : QObject { %TypeHeaderCode #include %End public: explicit QGesture(QObject *parent /TransferThis/ = 0); virtual ~QGesture(); Qt::GestureType gestureType() const; Qt::GestureState state() const; QPointF hotSpot() const; void setHotSpot(const QPointF &value); bool hasHotSpot() const; void unsetHotSpot(); enum GestureCancelPolicy { CancelNone, CancelAllInContext, }; void setGestureCancelPolicy(QGesture::GestureCancelPolicy policy); QGesture::GestureCancelPolicy gestureCancelPolicy() const; }; class QPanGesture : QGesture { %TypeHeaderCode #include %End public: explicit QPanGesture(QObject *parent /TransferThis/ = 0); virtual ~QPanGesture(); QPointF lastOffset() const; QPointF offset() const; QPointF delta() const; qreal acceleration() const; void setLastOffset(const QPointF &value); void setOffset(const QPointF &value); void setAcceleration(qreal value); }; class QPinchGesture : QGesture { %TypeHeaderCode #include %End public: enum ChangeFlag { ScaleFactorChanged, RotationAngleChanged, CenterPointChanged, }; typedef QFlags ChangeFlags; explicit QPinchGesture(QObject *parent /TransferThis/ = 0); virtual ~QPinchGesture(); QFlags totalChangeFlags() const; void setTotalChangeFlags(QFlags value); QFlags changeFlags() const; void setChangeFlags(QFlags value); QPointF startCenterPoint() const; QPointF lastCenterPoint() const; QPointF centerPoint() const; void setStartCenterPoint(const QPointF &value); void setLastCenterPoint(const QPointF &value); void setCenterPoint(const QPointF &value); qreal totalScaleFactor() const; qreal lastScaleFactor() const; qreal scaleFactor() const; void setTotalScaleFactor(qreal value); void setLastScaleFactor(qreal value); void setScaleFactor(qreal value); qreal totalRotationAngle() const; qreal lastRotationAngle() const; qreal rotationAngle() const; void setTotalRotationAngle(qreal value); void setLastRotationAngle(qreal value); void setRotationAngle(qreal value); }; class QSwipeGesture : QGesture { %TypeHeaderCode #include %End public: enum SwipeDirection { NoDirection, Left, Right, Up, Down, }; explicit QSwipeGesture(QObject *parent /TransferThis/ = 0); virtual ~QSwipeGesture(); QSwipeGesture::SwipeDirection horizontalDirection() const; QSwipeGesture::SwipeDirection verticalDirection() const; qreal swipeAngle() const; void setSwipeAngle(qreal value); }; class QTapGesture : QGesture { %TypeHeaderCode #include %End public: explicit QTapGesture(QObject *parent /TransferThis/ = 0); virtual ~QTapGesture(); QPointF position() const; void setPosition(const QPointF &pos); }; class QTapAndHoldGesture : QGesture { %TypeHeaderCode #include %End public: explicit QTapAndHoldGesture(QObject *parent /TransferThis/ = 0); virtual ~QTapAndHoldGesture(); QPointF position() const; void setPosition(const QPointF &pos); static void setTimeout(int msecs); static int timeout(); }; class QGestureEvent : QEvent { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = ((sipCpp->type() == QEvent::Gesture) ? sipType_QGestureEvent : 0); %End public: explicit QGestureEvent(const QList &gestures); virtual ~QGestureEvent(); QList gestures() const; QGesture *gesture(Qt::GestureType type) const; QList activeGestures() const; QList canceledGestures() const; void setAccepted(bool accepted); bool isAccepted() const; void accept(); void ignore(); void setAccepted(QGesture *, bool); void accept(QGesture *); void ignore(QGesture *); bool isAccepted(QGesture *) const; void setAccepted(Qt::GestureType, bool); void accept(Qt::GestureType); void ignore(Qt::GestureType); bool isAccepted(Qt::GestureType) const; QWidget *widget() const; QPointF mapToGraphicsScene(const QPointF &gesturePoint) const; }; PyQt-gpl-5.5.1/sip/QtWidgets/qgesturerecognizer.sip0000644000076500000240000000350112613140040022416 0ustar philstaff00000000000000// qgesturerecognizer.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGestureRecognizer /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint, }; typedef QFlags Result; QGestureRecognizer(); virtual ~QGestureRecognizer(); virtual QGesture *create(QObject *target) /Factory/; virtual QFlags recognize(QGesture *state, QObject *watched, QEvent *event) = 0; virtual void reset(QGesture *state); static Qt::GestureType registerRecognizer(QGestureRecognizer *recognizer /Transfer/); static void unregisterRecognizer(Qt::GestureType type); }; QFlags operator|(QGestureRecognizer::ResultFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicsanchorlayout.sip0000644000076500000240000000536612613140040023114 0ustar philstaff00000000000000// qgraphicsanchorlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsAnchor : QObject { %TypeHeaderCode #include %End public: virtual ~QGraphicsAnchor(); void setSpacing(qreal spacing); void unsetSpacing(); qreal spacing() const; void setSizePolicy(QSizePolicy::Policy policy); QSizePolicy::Policy sizePolicy() const; private: QGraphicsAnchor(QGraphicsAnchorLayout *parent); }; class QGraphicsAnchorLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsAnchorLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsAnchorLayout(); QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem /Transfer/, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem /Transfer/, Qt::AnchorPoint secondEdge); QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge); void addCornerAnchors(QGraphicsLayoutItem *firstItem /Transfer/, Qt::Corner firstCorner, QGraphicsLayoutItem *secondItem /Transfer/, Qt::Corner secondCorner); void addAnchors(QGraphicsLayoutItem *firstItem /Transfer/, QGraphicsLayoutItem *secondItem /Transfer/, Qt::Orientations orientations = Qt::Horizontal|Qt::Vertical); void setHorizontalSpacing(qreal spacing); void setVerticalSpacing(qreal spacing); void setSpacing(qreal spacing); qreal horizontalSpacing() const; qreal verticalSpacing() const; virtual void removeAt(int index); virtual void setGeometry(const QRectF &rect); virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void invalidate(); protected: virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; private: QGraphicsAnchorLayout(const QGraphicsAnchorLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicseffect.sip0000644000076500000240000001271012613140040021627 0ustar philstaff00000000000000// qgraphicseffect.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsEffect : QObject { %TypeHeaderCode #include %End public: enum ChangeFlag { SourceAttached, SourceDetached, SourceBoundingRectChanged, SourceInvalidated, }; typedef QFlags ChangeFlags; enum PixmapPadMode { NoPad, PadToTransparentBorder, PadToEffectiveBoundingRect, }; QGraphicsEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsEffect(); virtual QRectF boundingRectFor(const QRectF &sourceRect) const; QRectF boundingRect() const; bool isEnabled() const; public slots: void setEnabled(bool enable); void update(); signals: void enabledChanged(bool enabled); protected: virtual void draw(QPainter *painter) = 0; virtual void sourceChanged(QFlags flags); void updateBoundingRect(); bool sourceIsPixmap() const; QRectF sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const; void drawSource(QPainter *painter); QPixmap sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset /Out/ = 0, QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect) const; private: QGraphicsEffect(const QGraphicsEffect &); }; QFlags operator|(QGraphicsEffect::ChangeFlag f1, QFlags f2); class QGraphicsColorizeEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsColorizeEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsColorizeEffect(); QColor color() const; qreal strength() const; public slots: void setColor(const QColor &c); void setStrength(qreal strength); signals: void colorChanged(const QColor &color); void strengthChanged(qreal strength); protected: virtual void draw(QPainter *painter); private: QGraphicsColorizeEffect(const QGraphicsColorizeEffect &); }; class QGraphicsBlurEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: enum BlurHint { PerformanceHint, QualityHint, AnimationHint, }; typedef QFlags BlurHints; QGraphicsBlurEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsBlurEffect(); virtual QRectF boundingRectFor(const QRectF &rect) const; qreal blurRadius() const; QFlags blurHints() const; public slots: void setBlurRadius(qreal blurRadius); void setBlurHints(QFlags hints); signals: void blurRadiusChanged(qreal blurRadius); void blurHintsChanged(QFlags hints); protected: virtual void draw(QPainter *painter); private: QGraphicsBlurEffect(const QGraphicsBlurEffect &); }; QFlags operator|(QGraphicsBlurEffect::BlurHint f1, QFlags f2); class QGraphicsDropShadowEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsDropShadowEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsDropShadowEffect(); virtual QRectF boundingRectFor(const QRectF &rect) const; QPointF offset() const; qreal xOffset() const; qreal yOffset() const; qreal blurRadius() const; QColor color() const; public slots: void setOffset(const QPointF &ofs); void setOffset(qreal dx, qreal dy); void setOffset(qreal d); void setXOffset(qreal dx); void setYOffset(qreal dy); void setBlurRadius(qreal blurRadius); void setColor(const QColor &color); signals: void offsetChanged(const QPointF &offset); void blurRadiusChanged(qreal blurRadius); void colorChanged(const QColor &color); protected: virtual void draw(QPainter *painter); private: QGraphicsDropShadowEffect(const QGraphicsDropShadowEffect &); }; class QGraphicsOpacityEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsOpacityEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsOpacityEffect(); qreal opacity() const; QBrush opacityMask() const; public slots: void setOpacity(qreal opacity); void setOpacityMask(const QBrush &mask); signals: void opacityChanged(qreal opacity); void opacityMaskChanged(const QBrush &mask); protected: virtual void draw(QPainter *painter); private: QGraphicsOpacityEffect(const QGraphicsOpacityEffect &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicsgridlayout.sip0000644000076500000240000001023212613140040022553 0ustar philstaff00000000000000// qgraphicsgridlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsGridLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsGridLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsGridLayout(); void addItem(QGraphicsLayoutItem *item /Transfer/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0); void addItem(QGraphicsLayoutItem *aitem /TransferThis/, int arow, int acolumn, Qt::Alignment alignment = 0); void setHorizontalSpacing(qreal spacing); qreal horizontalSpacing() const; void setVerticalSpacing(qreal spacing); qreal verticalSpacing() const; void setSpacing(qreal spacing); void setRowSpacing(int row, qreal spacing); qreal rowSpacing(int row) const; void setColumnSpacing(int column, qreal spacing); qreal columnSpacing(int column) const; void setRowStretchFactor(int row, int stretch); int rowStretchFactor(int row) const; void setColumnStretchFactor(int column, int stretch); int columnStretchFactor(int column) const; void setRowMinimumHeight(int row, qreal height); qreal rowMinimumHeight(int row) const; void setRowPreferredHeight(int row, qreal height); qreal rowPreferredHeight(int row) const; void setRowMaximumHeight(int row, qreal height); qreal rowMaximumHeight(int row) const; void setRowFixedHeight(int row, qreal height); void setColumnMinimumWidth(int column, qreal width); qreal columnMinimumWidth(int column) const; void setColumnPreferredWidth(int column, qreal width); qreal columnPreferredWidth(int column) const; void setColumnMaximumWidth(int column, qreal width); qreal columnMaximumWidth(int column) const; void setColumnFixedWidth(int column, qreal width); void setRowAlignment(int row, Qt::Alignment alignment); Qt::Alignment rowAlignment(int row) const; void setColumnAlignment(int column, Qt::Alignment alignment); Qt::Alignment columnAlignment(int column) const; void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); Qt::Alignment alignment(QGraphicsLayoutItem *item) const; int rowCount() const; int columnCount() const; QGraphicsLayoutItem *itemAt(int row, int column) const; virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void removeAt(int index); %MethodCode // The ownership of any existing item must be passed back to Python. QGraphicsLayoutItem *itm; if (a0 < sipCpp->count()) itm = sipCpp->itemAt(a0); else itm = 0; Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QGraphicsGridLayout::removeAt(a0) : sipCpp->removeAt(a0); Py_END_ALLOW_THREADS if (itm) { PyObject *itmo = sipGetPyObject(itm, sipType_QGraphicsLayoutItem); if (itmo) sipTransferBack(itmo); } %End virtual void invalidate(); virtual void setGeometry(const QRectF &rect); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; void removeItem(QGraphicsLayoutItem *item /TransferBack/); private: QGraphicsGridLayout(const QGraphicsGridLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicsitem.sip0000644000076500000240000006614212613140040021341 0ustar philstaff00000000000000// qgraphicsitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case 2: sipType = sipType_QGraphicsPathItem; break; case 3: sipType = sipType_QGraphicsRectItem; break; case 4: sipType = sipType_QGraphicsEllipseItem; break; case 5: sipType = sipType_QGraphicsPolygonItem; break; case 6: sipType = sipType_QGraphicsLineItem; break; case 7: sipType = sipType_QGraphicsPixmapItem; break; case 8: // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsTextItem; break; case 9: sipType = sipType_QGraphicsSimpleTextItem; break; case 10: sipType = sipType_QGraphicsItemGroup; break; case 11: // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsWidget; break; case 12: // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsProxyWidget; break; default: sipType = 0; } %End public: enum CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache, }; enum GraphicsItemChange { ItemPositionChange, ItemMatrixChange, ItemVisibleChange, ItemEnabledChange, ItemSelectedChange, ItemParentChange, ItemChildAddedChange, ItemChildRemovedChange, ItemTransformChange, ItemPositionHasChanged, ItemTransformHasChanged, ItemSceneChange, ItemVisibleHasChanged, ItemEnabledHasChanged, ItemSelectedHasChanged, ItemParentHasChanged, ItemSceneHasChanged, ItemCursorChange, ItemCursorHasChanged, ItemToolTipChange, ItemToolTipHasChanged, ItemFlagsChange, ItemFlagsHaveChanged, ItemZValueChange, ItemZValueHasChanged, ItemOpacityChange, ItemOpacityHasChanged, ItemScenePositionHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange, ItemTransformOriginPointHasChanged, }; enum GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, ItemIgnoresTransformations, ItemIgnoresParentOpacity, ItemDoesntPropagateOpacityToChildren, ItemStacksBehindParent, ItemUsesExtendedStyleOption, ItemHasNoContents, ItemSendsGeometryChanges, ItemAcceptsInputMethod, ItemNegativeZStacksBehindParent, ItemIsPanel, ItemSendsScenePositionChanges, %If (Qt_5_4_0 -) ItemContainsChildrenInShape, %End }; typedef QFlags GraphicsItemFlags; static const int Type; static const int UserType; explicit QGraphicsItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsItem(); QGraphicsScene *scene() const; QGraphicsItem *parentItem() const; QGraphicsItem *topLevelItem() const; void setParentItem(QGraphicsItem *parent /TransferThis/); QGraphicsItemGroup *group() const; void setGroup(QGraphicsItemGroup *group /KeepReference/); QFlags flags() const; void setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true); void setFlags(QFlags flags); QString toolTip() const; void setToolTip(const QString &toolTip); QCursor cursor() const; void setCursor(const QCursor &cursor); bool hasCursor() const; void unsetCursor(); bool isVisible() const; void setVisible(bool visible); void hide(); void show(); bool isEnabled() const; void setEnabled(bool enabled); bool isSelected() const; void setSelected(bool selected); bool acceptDrops() const; void setAcceptDrops(bool on); Qt::MouseButtons acceptedMouseButtons() const; void setAcceptedMouseButtons(Qt::MouseButtons buttons); bool hasFocus() const; void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); void clearFocus(); QPointF pos() const; qreal x() const; qreal y() const; QPointF scenePos() const; void setPos(const QPointF &pos); void moveBy(qreal dx, qreal dy); void ensureVisible(const QRectF &rect = QRectF(), int xMargin = 50, int yMargin = 50); virtual void advance(int phase); qreal zValue() const; void setZValue(qreal z); virtual QRectF boundingRect() const = 0; QRectF childrenBoundingRect() const; QRectF sceneBoundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; virtual bool collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) = 0; void update(const QRectF &rect = QRectF()); QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const; QPointF mapToParent(const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const; QPolygonF mapToParent(const QRectF &rect) const; QPolygonF mapToScene(const QRectF &rect) const; QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const; QPolygonF mapToParent(const QPolygonF &polygon) const; QPolygonF mapToScene(const QPolygonF &polygon) const; QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const; QPainterPath mapToParent(const QPainterPath &path) const; QPainterPath mapToScene(const QPainterPath &path) const; QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const; QPointF mapFromParent(const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const; QPolygonF mapFromParent(const QRectF &rect) const; QPolygonF mapFromScene(const QRectF &rect) const; QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const; QPolygonF mapFromParent(const QPolygonF &polygon) const; QPolygonF mapFromScene(const QPolygonF &polygon) const; QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const; QPainterPath mapFromParent(const QPainterPath &path) const; QPainterPath mapFromScene(const QPainterPath &path) const; bool isAncestorOf(const QGraphicsItem *child) const; QVariant data(int key) const; void setData(int key, const QVariant &value); virtual int type() const; void installSceneEventFilter(QGraphicsItem *filterItem); void removeSceneEventFilter(QGraphicsItem *filterItem); protected: virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); void prepareGeometryChange(); virtual bool sceneEvent(QEvent *event); virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); public: void setPos(qreal ax, qreal ay); void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xMargin = 50, int yMargin = 50); void update(qreal ax, qreal ay, qreal width, qreal height); QPointF mapToItem(const QGraphicsItem *item, qreal ax, qreal ay) const; QPointF mapToParent(qreal ax, qreal ay) const; QPointF mapToScene(qreal ax, qreal ay) const; QPointF mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay) const; QPointF mapFromParent(qreal ax, qreal ay) const; QPointF mapFromScene(qreal ax, qreal ay) const; QTransform transform() const; QTransform sceneTransform() const; QTransform deviceTransform(const QTransform &viewportTransform) const; void setTransform(const QTransform &matrix, bool combine = false); void resetTransform(); bool isObscured(const QRectF &rect = QRectF()) const; bool isObscured(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToParent(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToScene(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromParent(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const; QGraphicsWidget *parentWidget() const; QGraphicsWidget *topLevelWidget() const; QGraphicsWidget *window() const; QList childItems() const; bool isWidget() const; bool isWindow() const; QGraphicsItem::CacheMode cacheMode() const; void setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize()); bool isVisibleTo(const QGraphicsItem *parent) const; bool acceptHoverEvents() const; void setAcceptHoverEvents(bool enabled); void grabMouse(); void ungrabMouse(); void grabKeyboard(); void ungrabKeyboard(); QRegion boundingRegion(const QTransform &itemToDeviceTransform) const; qreal boundingRegionGranularity() const; void setBoundingRegionGranularity(qreal granularity); void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()); QGraphicsItem *commonAncestorItem(const QGraphicsItem *other) const; bool isUnderMouse() const; qreal opacity() const; qreal effectiveOpacity() const; void setOpacity(qreal opacity); QTransform itemTransform(const QGraphicsItem *other, bool *ok = 0) const; bool isClipped() const; QPainterPath clipPath() const; QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const; QRectF mapRectToParent(const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const; QRectF mapRectFromParent(const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; QRectF mapRectToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectToParent(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectToScene(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromParent(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromScene(qreal ax, qreal ay, qreal w, qreal h) const; enum PanelModality { NonModal, PanelModal, SceneModal, }; QGraphicsObject *parentObject() const; QGraphicsItem *panel() const; bool isPanel() const; QGraphicsObject *toGraphicsObject(); QGraphicsItem::PanelModality panelModality() const; void setPanelModality(QGraphicsItem::PanelModality panelModality); bool isBlockedByModalPanel(QGraphicsItem **blockingPanel /Out/ = 0) const; QGraphicsEffect *graphicsEffect() const; void setGraphicsEffect(QGraphicsEffect *effect /Transfer/); bool acceptTouchEvents() const; void setAcceptTouchEvents(bool enabled); bool filtersChildEvents() const; void setFiltersChildEvents(bool enabled); bool isActive() const; void setActive(bool active); QGraphicsItem *focusProxy() const; void setFocusProxy(QGraphicsItem *item /KeepReference/); QGraphicsItem *focusItem() const; void setX(qreal x); void setY(qreal y); void setRotation(qreal angle); qreal rotation() const; void setScale(qreal scale); qreal scale() const; QList transformations() const; void setTransformations(const QList &transformations /KeepReference/); QPointF transformOriginPoint() const; void setTransformOriginPoint(const QPointF &origin); void setTransformOriginPoint(qreal ax, qreal ay); void stackBefore(const QGraphicsItem *sibling); Qt::InputMethodHints inputMethodHints() const; void setInputMethodHints(Qt::InputMethodHints hints); protected: void updateMicroFocus(); private: QGraphicsItem(const QGraphicsItem &); }; QFlags operator|(QGraphicsItem::GraphicsItemFlag f1, QFlags f2); class QAbstractGraphicsShapeItem : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QAbstractGraphicsShapeItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QAbstractGraphicsShapeItem(); QPen pen() const; void setPen(const QPen &pen); QBrush brush() const; void setBrush(const QBrush &brush); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; private: QAbstractGraphicsShapeItem(const QAbstractGraphicsShapeItem &); }; class QGraphicsPathItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsPathItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPathItem(); QPainterPath path() const; void setPath(const QPainterPath &path); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsPathItem(const QGraphicsPathItem &); }; class QGraphicsRectItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsRectItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsRectItem(const QRectF &rect, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsRectItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsRectItem(); QRectF rect() const; void setRect(const QRectF &rect); void setRect(qreal ax, qreal ay, qreal w, qreal h); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsRectItem(const QGraphicsRectItem &); }; class QGraphicsEllipseItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsEllipseItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsEllipseItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsEllipseItem(); QRectF rect() const; void setRect(const QRectF &rect); void setRect(qreal ax, qreal ay, qreal w, qreal h); int startAngle() const; void setStartAngle(int angle); int spanAngle() const; void setSpanAngle(int angle); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsEllipseItem(const QGraphicsEllipseItem &); }; class QGraphicsPolygonItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsPolygonItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPolygonItem(const QPolygonF &polygon, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPolygonItem(); QPolygonF polygon() const; void setPolygon(const QPolygonF &polygon); Qt::FillRule fillRule() const; void setFillRule(Qt::FillRule rule); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsPolygonItem(const QGraphicsPolygonItem &); }; class QGraphicsLineItem : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsLineItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsLineItem(); QPen pen() const; void setPen(const QPen &pen); QLineF line() const; void setLine(const QLineF &line); void setLine(qreal x1, qreal y1, qreal x2, qreal y2); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsLineItem(const QGraphicsLineItem &); }; class QGraphicsPixmapItem : QGraphicsItem { %TypeHeaderCode #include %End public: enum ShapeMode { MaskShape, BoundingRectShape, HeuristicMaskShape, }; explicit QGraphicsPixmapItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPixmapItem(); QPixmap pixmap() const; void setPixmap(const QPixmap &pixmap); Qt::TransformationMode transformationMode() const; void setTransformationMode(Qt::TransformationMode mode); QPointF offset() const; void setOffset(const QPointF &offset); void setOffset(qreal ax, qreal ay); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; QGraphicsPixmapItem::ShapeMode shapeMode() const; void setShapeMode(QGraphicsPixmapItem::ShapeMode mode); private: QGraphicsPixmapItem(const QGraphicsPixmapItem &); }; class QGraphicsSimpleTextItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsSimpleTextItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsSimpleTextItem(const QString &text, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsSimpleTextItem(); void setText(const QString &text); QString text() const; void setFont(const QFont &font); QFont font() const; virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsSimpleTextItem(const QGraphicsSimpleTextItem &); }; class QGraphicsItemGroup : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsItemGroup(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsItemGroup(); void addToGroup(QGraphicsItem *item /Transfer/); void removeFromGroup(QGraphicsItem *item /GetWrapper/); %MethodCode sipCpp->removeFromGroup(a0); // The item will be passed to the group's parent if there is one. If not, // transfer ownership back to Python. if (sipCpp->parentItem()) sipTransferTo(a0Wrapper, sipGetPyObject(sipCpp->parentItem(), sipType_QGraphicsItem)); else sipTransferBack(a0Wrapper); %End virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsItemGroup(const QGraphicsItemGroup &); }; class QGraphicsObject : QObject, QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsObject(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsObject(); void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags(0)); void ungrabGesture(Qt::GestureType type); signals: void parentChanged(); void opacityChanged(); void visibleChanged(); void enabledChanged(); void xChanged(); void yChanged(); void zChanged(); void rotationChanged(); void scaleChanged(); protected slots: void updateMicroFocus(); protected: virtual bool event(QEvent *ev); }; class QGraphicsTextItem : QGraphicsObject { %TypeHeaderCode #include %End public: explicit QGraphicsTextItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsTextItem(const QString &text, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsTextItem(); QString toHtml() const; void setHtml(const QString &html); QString toPlainText() const; void setPlainText(const QString &text); QFont font() const; void setFont(const QFont &font); void setDefaultTextColor(const QColor &c); QColor defaultTextColor() const; virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; void setTextWidth(qreal width); qreal textWidth() const; void adjustSize(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setTabChangesFocus(bool b); bool tabChangesFocus() const; void setOpenExternalLinks(bool open); bool openExternalLinks() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; signals: void linkActivated(const QString &); void linkHovered(const QString &); protected: virtual bool sceneEvent(QEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; private: QGraphicsTextItem(const QGraphicsTextItem &); }; %ModuleCode // These are needed by the %ConvertToSubClassCode. #include #include %End PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicslayout.sip0000644000076500000240000000337212613140040021714 0ustar philstaff00000000000000// qgraphicslayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLayout : QGraphicsLayoutItem { %TypeHeaderCode #include %End public: QGraphicsLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsLayout(); void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void activate(); bool isActivated() const; virtual void invalidate(); virtual void widgetEvent(QEvent *e); virtual int count() const = 0 /__len__/; virtual QGraphicsLayoutItem *itemAt(int i) const = 0; virtual void removeAt(int index) = 0; virtual void updateGeometry(); protected: void addChildLayoutItem(QGraphicsLayoutItem *layoutItem /Transfer/); private: QGraphicsLayout(const QGraphicsLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicslayoutitem.sip0000644000076500000240000000602012613140040022564 0ustar philstaff00000000000000// qgraphicslayoutitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLayoutItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QGraphicsLayoutItem(QGraphicsLayoutItem *parent /TransferThis/ = 0, bool isLayout = false); virtual ~QGraphicsLayoutItem(); void setSizePolicy(const QSizePolicy &policy); void setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType); QSizePolicy sizePolicy() const; void setMinimumSize(const QSizeF &size); QSizeF minimumSize() const; void setMinimumWidth(qreal width); void setMinimumHeight(qreal height); void setPreferredSize(const QSizeF &size); QSizeF preferredSize() const; void setPreferredWidth(qreal width); void setPreferredHeight(qreal height); void setMaximumSize(const QSizeF &size); QSizeF maximumSize() const; void setMaximumWidth(qreal width); void setMaximumHeight(qreal height); virtual void setGeometry(const QRectF &rect); QRectF geometry() const; virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; QRectF contentsRect() const; QSizeF effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void updateGeometry(); QGraphicsLayoutItem *parentLayoutItem() const; void setParentLayoutItem(QGraphicsLayoutItem *parent /TransferThis/); bool isLayout() const; void setMinimumSize(qreal aw, qreal ah); void setPreferredSize(qreal aw, qreal ah); void setMaximumSize(qreal aw, qreal ah); qreal minimumWidth() const; qreal minimumHeight() const; qreal preferredWidth() const; qreal preferredHeight() const; qreal maximumWidth() const; qreal maximumHeight() const; QGraphicsItem *graphicsItem() const; bool ownedByLayout() const; protected: virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0; void setGraphicsItem(QGraphicsItem *item); void setOwnedByLayout(bool ownedByLayout); private: QGraphicsLayoutItem(const QGraphicsLayoutItem &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicslinearlayout.sip0000644000076500000240000000622212613140040023104 0ustar philstaff00000000000000// qgraphicslinearlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLinearLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsLinearLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsLinearLayout(); void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void addItem(QGraphicsLayoutItem *item /Transfer/); void addStretch(int stretch = 1); void insertItem(int index, QGraphicsLayoutItem *item /Transfer/); void insertStretch(int index, int stretch = 1); void removeItem(QGraphicsLayoutItem *item /TransferBack/); virtual void removeAt(int index); %MethodCode // The ownership of any existing item must be passed back to Python. QGraphicsLayoutItem *itm; if (a0 < sipCpp->count()) itm = sipCpp->itemAt(a0); else itm = 0; Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QGraphicsLinearLayout::removeAt(a0) : sipCpp->removeAt(a0); Py_END_ALLOW_THREADS // The Qt documentation isn't quite correct as ownership isn't always passed // back to the caller. if (itm && !itm->parentLayoutItem()) { PyObject *itmo = sipGetPyObject(itm, sipType_QGraphicsLayoutItem); if (itmo) sipTransferBack(itmo); } %End void setSpacing(qreal spacing); qreal spacing() const; void setItemSpacing(int index, qreal spacing); qreal itemSpacing(int index) const; void setStretchFactor(QGraphicsLayoutItem *item, int stretch); int stretchFactor(QGraphicsLayoutItem *item) const; void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); Qt::Alignment alignment(QGraphicsLayoutItem *item) const; virtual void setGeometry(const QRectF &rect); virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void invalidate(); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; private: QGraphicsLinearLayout(const QGraphicsLinearLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicsproxywidget.sip0000644000076500000240000000760212613140040022764 0ustar philstaff00000000000000// qgraphicsproxywidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsProxyWidget : QGraphicsWidget { %TypeHeaderCode #include %End public: QGraphicsProxyWidget(QGraphicsItem *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QGraphicsProxyWidget(); void setWidget(QWidget *widget /Transfer/); %MethodCode // The ownership of any existing widget must be passed back to Python. QWidget *w = sipCpp->widget(); Py_BEGIN_ALLOW_THREADS sipCpp->setWidget(a0); Py_END_ALLOW_THREADS if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferBack(wo); } %End QWidget *widget() const; QRectF subWidgetRect(const QWidget *widget) const; virtual void setGeometry(const QRectF &rect); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual int type() const; QGraphicsProxyWidget *createProxyForChildWidget(QWidget *child) /Factory/; protected: virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *object, QEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void grabMouseEvent(QEvent *event); virtual void ungrabMouseEvent(QEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void resizeEvent(QGraphicsSceneResizeEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); QGraphicsProxyWidget *newProxyWidget(const QWidget *) /Factory/; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; virtual void inputMethodEvent(QInputMethodEvent *event); private: QGraphicsProxyWidget(const QGraphicsProxyWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicsscene.sip0000644000076500000240000002153612613140040021476 0ustar philstaff00000000000000// qgraphicsscene.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsScene : QObject { %TypeHeaderCode #include %End public: enum ItemIndexMethod { BspTreeIndex, NoIndex, }; QGraphicsScene(QObject *parent /TransferThis/ = 0); QGraphicsScene(const QRectF &sceneRect, QObject *parent /TransferThis/ = 0); QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent /TransferThis/ = 0); virtual ~QGraphicsScene(); QRectF sceneRect() const; qreal width() const; qreal height() const; void setSceneRect(const QRectF &rect); void setSceneRect(qreal x, qreal y, qreal w, qreal h); void render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode mode = Qt::KeepAspectRatio); QGraphicsScene::ItemIndexMethod itemIndexMethod() const; void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method); QRectF itemsBoundingRect() const; QList items(Qt::SortOrder order = Qt::DescendingOrder) const; QList items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; QList collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList selectedItems() const; void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform); void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); void clearSelection(); QGraphicsItemGroup *createItemGroup(const QList &items /Transfer/); void destroyItemGroup(QGraphicsItemGroup *group /Transfer/); void addItem(QGraphicsItem *item /Transfer/); QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen()); QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen()); QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap); QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont()); QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont()); void removeItem(QGraphicsItem *item /TransferBack/); QGraphicsItem *focusItem() const; void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason); bool hasFocus() const; void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); void clearFocus(); QGraphicsItem *mouseGrabberItem() const; QBrush backgroundBrush() const; void setBackgroundBrush(const QBrush &brush); QBrush foregroundBrush() const; void setForegroundBrush(const QBrush &brush); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; QList views() const; public slots: void advance(); void update(const QRectF &rect = QRectF()); void invalidate(const QRectF &rect = QRectF(), QFlags layers = QGraphicsScene::AllLayers); void clear(); signals: void changed(const QList ®ion); void sceneRectChanged(const QRectF &rect); void selectionChanged(); protected: virtual bool event(QEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void helpEvent(QGraphicsSceneHelpEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void drawBackground(QPainter *painter, const QRectF &rect); virtual void drawForeground(QPainter *painter, const QRectF &rect); public: enum SceneLayer { ItemLayer, BackgroundLayer, ForegroundLayer, AllLayers, }; typedef QFlags SceneLayers; int bspTreeDepth() const; void setBspTreeDepth(int depth); QPainterPath selectionArea() const; void update(qreal x, qreal y, qreal w, qreal h); QGraphicsProxyWidget *addWidget(QWidget *widget /Transfer/, Qt::WindowFlags flags = 0); QStyle *style() const; void setStyle(QStyle *style /Transfer/); QFont font() const; void setFont(const QFont &font); QPalette palette() const; void setPalette(const QPalette &palette); QGraphicsWidget *activeWindow() const; void setActiveWindow(QGraphicsWidget *widget); protected: virtual bool eventFilter(QObject *watched, QEvent *event); bool focusNextPrevChild(bool next); public: void setStickyFocus(bool enabled); bool stickyFocus() const; QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const; QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const; bool isActive() const; QGraphicsItem *activePanel() const; void setActivePanel(QGraphicsItem *item); bool sendEvent(QGraphicsItem *item, QEvent *event); void invalidate(qreal x, qreal y, qreal w, qreal h, QFlags layers = QGraphicsScene::AllLayers); %If (Qt_5_4_0 -) qreal minimumRenderSize() const; %End %If (Qt_5_4_0 -) void setMinimumRenderSize(qreal minSize); %End signals: %If (Qt_5_1_0 -) void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason); %End public: %If (Qt_5_5_0 -) void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); %End private: QGraphicsScene(const QGraphicsScene &); }; QFlags operator|(QGraphicsScene::SceneLayer f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicssceneevent.sip0000644000076500000240000001471412613140040022540 0ustar philstaff00000000000000// qgraphicssceneevent.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsSceneEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::GraphicsSceneContextMenu: sipType = sipType_QGraphicsSceneContextMenuEvent; break; case QEvent::GraphicsSceneDragEnter: case QEvent::GraphicsSceneDragLeave: case QEvent::GraphicsSceneDragMove: case QEvent::GraphicsSceneDrop: sipType = sipType_QGraphicsSceneDragDropEvent; break; case QEvent::GraphicsSceneHelp: sipType = sipType_QGraphicsSceneHelpEvent; break; case QEvent::GraphicsSceneHoverEnter: case QEvent::GraphicsSceneHoverLeave: case QEvent::GraphicsSceneHoverMove: sipType = sipType_QGraphicsSceneHoverEvent; break; case QEvent::GraphicsSceneMouseDoubleClick: case QEvent::GraphicsSceneMouseMove: case QEvent::GraphicsSceneMousePress: case QEvent::GraphicsSceneMouseRelease: sipType = sipType_QGraphicsSceneMouseEvent; break; case QEvent::GraphicsSceneWheel: sipType = sipType_QGraphicsSceneWheelEvent; break; case QEvent::GraphicsSceneMove: sipType = sipType_QGraphicsSceneMoveEvent; break; case QEvent::GraphicsSceneResize: sipType = sipType_QGraphicsSceneResizeEvent; break; default: sipType = 0; } %End public: virtual ~QGraphicsSceneEvent(); QWidget *widget() const; private: QGraphicsSceneEvent(const QGraphicsSceneEvent &); }; class QGraphicsSceneMouseEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneMouseEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; QPointF buttonDownPos(Qt::MouseButton button) const; QPointF buttonDownScenePos(Qt::MouseButton button) const; QPoint buttonDownScreenPos(Qt::MouseButton button) const; QPointF lastPos() const; QPointF lastScenePos() const; QPoint lastScreenPos() const; Qt::MouseButtons buttons() const; Qt::MouseButton button() const; Qt::KeyboardModifiers modifiers() const; %If (Qt_5_4_0 -) Qt::MouseEventSource source() const; %End %If (Qt_5_4_0 -) Qt::MouseEventFlags flags() const; %End private: QGraphicsSceneMouseEvent(const QGraphicsSceneMouseEvent &); }; class QGraphicsSceneWheelEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneWheelEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; int delta() const; Qt::Orientation orientation() const; private: QGraphicsSceneWheelEvent(const QGraphicsSceneWheelEvent &); }; class QGraphicsSceneContextMenuEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Reason { Mouse, Keyboard, Other, }; virtual ~QGraphicsSceneContextMenuEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::KeyboardModifiers modifiers() const; QGraphicsSceneContextMenuEvent::Reason reason() const; private: QGraphicsSceneContextMenuEvent(const QGraphicsSceneContextMenuEvent &); }; class QGraphicsSceneHoverEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneHoverEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; QPointF lastPos() const; QPointF lastScenePos() const; QPoint lastScreenPos() const; Qt::KeyboardModifiers modifiers() const; private: QGraphicsSceneHoverEvent(const QGraphicsSceneHoverEvent &); }; class QGraphicsSceneHelpEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneHelpEvent(); QPointF scenePos() const; QPoint screenPos() const; private: QGraphicsSceneHelpEvent(const QGraphicsSceneHelpEvent &); }; class QGraphicsSceneDragDropEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneDragDropEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; Qt::DropActions possibleActions() const; Qt::DropAction proposedAction() const; void acceptProposedAction(); Qt::DropAction dropAction() const; void setDropAction(Qt::DropAction action); QWidget *source() const; const QMimeData *mimeData() const; private: QGraphicsSceneDragDropEvent(const QGraphicsSceneDragDropEvent &); }; class QGraphicsSceneResizeEvent : QGraphicsSceneEvent { %TypeHeaderCode #include %End public: QGraphicsSceneResizeEvent(); virtual ~QGraphicsSceneResizeEvent(); QSizeF oldSize() const; QSizeF newSize() const; private: QGraphicsSceneResizeEvent(const QGraphicsSceneResizeEvent &); }; class QGraphicsSceneMoveEvent : QGraphicsSceneEvent { %TypeHeaderCode #include %End public: QGraphicsSceneMoveEvent(); virtual ~QGraphicsSceneMoveEvent(); QPointF oldPos() const; QPointF newPos() const; private: QGraphicsSceneMoveEvent(const QGraphicsSceneMoveEvent &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicstransform.sip0000644000076500000240000000461112613140040022407 0ustar philstaff00000000000000// qgraphicstransform.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsTransform : QObject { %TypeHeaderCode #include %End public: QGraphicsTransform(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsTransform(); virtual void applyTo(QMatrix4x4 *matrix) const = 0; protected slots: void update(); }; class QGraphicsScale : QGraphicsTransform { %TypeHeaderCode #include %End public: QGraphicsScale(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsScale(); QVector3D origin() const; void setOrigin(const QVector3D &point); qreal xScale() const; void setXScale(qreal); qreal yScale() const; void setYScale(qreal); qreal zScale() const; void setZScale(qreal); virtual void applyTo(QMatrix4x4 *matrix) const; signals: void originChanged(); void scaleChanged(); void xScaleChanged(); void yScaleChanged(); void zScaleChanged(); }; class QGraphicsRotation : QGraphicsTransform { %TypeHeaderCode #include %End public: QGraphicsRotation(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsRotation(); QVector3D origin() const; void setOrigin(const QVector3D &point); qreal angle() const; void setAngle(qreal); QVector3D axis() const; void setAxis(const QVector3D &axis); void setAxis(Qt::Axis axis); virtual void applyTo(QMatrix4x4 *matrix) const; signals: void originChanged(); void angleChanged(); void axisChanged(); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicsview.sip0000644000076500000240000002051212613140040021344 0ustar philstaff00000000000000// qgraphicsview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsView : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum CacheModeFlag { CacheNone, CacheBackground, }; typedef QFlags CacheMode; enum DragMode { NoDrag, ScrollHandDrag, RubberBandDrag, }; enum ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse, }; QGraphicsView(QWidget *parent /TransferThis/ = 0); QGraphicsView(QGraphicsScene *scene /KeepReference/, QWidget *parent /TransferThis/ = 0); virtual ~QGraphicsView(); virtual QSize sizeHint() const; QFlags renderHints() const; void setRenderHint(QPainter::RenderHint hint, bool on = true); void setRenderHints(QFlags hints); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); QGraphicsView::ViewportAnchor transformationAnchor() const; void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor); QGraphicsView::ViewportAnchor resizeAnchor() const; void setResizeAnchor(QGraphicsView::ViewportAnchor anchor); QGraphicsView::DragMode dragMode() const; void setDragMode(QGraphicsView::DragMode mode); QFlags cacheMode() const; void setCacheMode(QFlags mode); void resetCachedContent(); bool isInteractive() const; void setInteractive(bool allowed); QGraphicsScene *scene() const; void setScene(QGraphicsScene *scene /KeepReference/); QRectF sceneRect() const; void setSceneRect(const QRectF &rect); void rotate(qreal angle); void scale(qreal sx, qreal sy); void shear(qreal sh, qreal sv); void translate(qreal dx, qreal dy); void centerOn(const QPointF &pos); void centerOn(const QGraphicsItem *item); void ensureVisible(const QRectF &rect, int xMargin = 50, int yMargin = 50); void ensureVisible(const QGraphicsItem *item, int xMargin = 50, int yMargin = 50); void fitInView(const QRectF &rect, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); void fitInView(const QGraphicsItem *item, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); void render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode mode = Qt::KeepAspectRatio); QList items() const; QList items(const QPoint &pos) const; QList items(int ax, int ay) const; QList items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QGraphicsItem *itemAt(const QPoint &pos) const; QPointF mapToScene(const QPoint &point) const; QPolygonF mapToScene(const QRect &rect) const; QPolygonF mapToScene(const QPolygon &polygon) const; QPainterPath mapToScene(const QPainterPath &path) const; QPoint mapFromScene(const QPointF &point) const; QPolygon mapFromScene(const QRectF &rect) const; QPolygon mapFromScene(const QPolygonF &polygon) const; QPainterPath mapFromScene(const QPainterPath &path) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; QBrush backgroundBrush() const; void setBackgroundBrush(const QBrush &brush); QBrush foregroundBrush() const; void setForegroundBrush(const QBrush &brush); public slots: void invalidateScene(const QRectF &rect = QRectF(), QFlags layers = QGraphicsScene::AllLayers); void updateScene(const QList &rects); void updateSceneRect(const QRectF &rect); protected slots: virtual void setupViewport(QWidget *widget); protected: virtual bool event(QEvent *event); virtual bool viewportEvent(QEvent *event); virtual void contextMenuEvent(QContextMenuEvent *event); virtual void dragEnterEvent(QDragEnterEvent *event); virtual void dragLeaveEvent(QDragLeaveEvent *event); virtual void dragMoveEvent(QDragMoveEvent *event); virtual void dropEvent(QDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void wheelEvent(QWheelEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void scrollContentsBy(int dx, int dy); virtual void showEvent(QShowEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void drawBackground(QPainter *painter, const QRectF &rect); virtual void drawForeground(QPainter *painter, const QRectF &rect); public: void setSceneRect(qreal ax, qreal ay, qreal aw, qreal ah); void centerOn(qreal ax, qreal ay); void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xMargin = 50, int yMargin = 50); void fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); QGraphicsItem *itemAt(int ax, int ay) const; QPointF mapToScene(int ax, int ay) const; QPolygonF mapToScene(int ax, int ay, int w, int h) const; QPoint mapFromScene(qreal ax, qreal ay) const; QPolygon mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const; enum ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate, }; enum OptimizationFlag { DontClipPainter, DontSavePainterState, DontAdjustForAntialiasing, }; typedef QFlags OptimizationFlags; QGraphicsView::ViewportUpdateMode viewportUpdateMode() const; void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode); QFlags optimizationFlags() const; void setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true); void setOptimizationFlags(QFlags flags); Qt::ItemSelectionMode rubberBandSelectionMode() const; void setRubberBandSelectionMode(Qt::ItemSelectionMode mode); QTransform transform() const; QTransform viewportTransform() const; void setTransform(const QTransform &matrix, bool combine = false); void resetTransform(); bool isTransformed() const; %If (Qt_5_1_0 -) QRect rubberBandRect() const; %End signals: %If (Qt_5_1_0 -) void rubberBandChanged(QRect viewportRect, QPointF fromScenePoint, QPointF toScenePoint); %End private: QGraphicsView(const QGraphicsView &); }; QFlags operator|(QGraphicsView::CacheModeFlag f1, QFlags f2); QFlags operator|(QGraphicsView::OptimizationFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qgraphicswidget.sip0000644000076500000240000001240712613140040021661 0ustar philstaff00000000000000// qgraphicswidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsWidget : QGraphicsObject, QGraphicsLayoutItem { %TypeHeaderCode #include %End public: QGraphicsWidget(QGraphicsItem *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QGraphicsWidget(); QGraphicsLayout *layout() const; void setLayout(QGraphicsLayout *layout /Transfer/); void adjustSize(); Qt::LayoutDirection layoutDirection() const; void setLayoutDirection(Qt::LayoutDirection direction); void unsetLayoutDirection(); QStyle *style() const; void setStyle(QStyle *style /KeepReference/); QFont font() const; void setFont(const QFont &font); QPalette palette() const; void setPalette(const QPalette &palette); void resize(const QSizeF &size); void resize(qreal w, qreal h); QSizeF size() const; virtual void setGeometry(const QRectF &rect); QRectF rect() const; void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom); void getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void unsetWindowFrameMargins(); QRectF windowFrameGeometry() const; QRectF windowFrameRect() const; Qt::WindowFlags windowFlags() const; Qt::WindowType windowType() const; void setWindowFlags(Qt::WindowFlags wFlags); bool isActiveWindow() const; void setWindowTitle(const QString &title); QString windowTitle() const; Qt::FocusPolicy focusPolicy() const; void setFocusPolicy(Qt::FocusPolicy policy); static void setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second); QGraphicsWidget *focusWidget() const; int grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut); void releaseShortcut(int id); void setShortcutEnabled(int id, bool enabled = true); void setShortcutAutoRepeat(int id, bool enabled = true); void addAction(QAction *action); void addActions(QList actions); void insertAction(QAction *before, QAction *action); void insertActions(QAction *before, QList actions); void removeAction(QAction *action); QList actions() const; void setAttribute(Qt::WidgetAttribute attribute, bool on = true); bool testAttribute(Qt::WidgetAttribute attribute) const; virtual int type() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; void setGeometry(qreal ax, qreal ay, qreal aw, qreal ah); public slots: bool close(); protected: virtual void initStyleOption(QStyleOption *option) const; virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void updateGeometry(); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool sceneEvent(QEvent *event); virtual bool windowFrameEvent(QEvent *e); virtual Qt::WindowFrameSection windowFrameSectionAt(const QPointF &pos) const; virtual bool event(QEvent *event); virtual void changeEvent(QEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual void focusOutEvent(QFocusEvent *event); virtual void hideEvent(QHideEvent *event); virtual void moveEvent(QGraphicsSceneMoveEvent *event); virtual void polishEvent(); virtual void resizeEvent(QGraphicsSceneResizeEvent *event); virtual void showEvent(QShowEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void grabMouseEvent(QEvent *event); virtual void ungrabMouseEvent(QEvent *event); virtual void grabKeyboardEvent(QEvent *event); virtual void ungrabKeyboardEvent(QEvent *event); public: bool autoFillBackground() const; void setAutoFillBackground(bool enabled); signals: void geometryChanged(); private: QGraphicsWidget(const QGraphicsWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgridlayout.sip0000644000076500000240000001261212613140040021036 0ustar philstaff00000000000000// qgridlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGridLayout : QLayout { %TypeHeaderCode #include %End public: explicit QGridLayout(QWidget *parent /TransferThis/); QGridLayout(); virtual ~QGridLayout(); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; void setRowStretch(int row, int stretch); void setColumnStretch(int column, int stretch); int rowStretch(int row) const; int columnStretch(int column) const; void setRowMinimumHeight(int row, int minSize); void setColumnMinimumWidth(int column, int minSize); int rowMinimumHeight(int row) const; int columnMinimumWidth(int column) const; int columnCount() const; int rowCount() const; QRect cellRect(int row, int column) const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual Qt::Orientations expandingDirections() const; virtual void invalidate(); void addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addWidget(QWidget * /GetWrapper/, int row, int column, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, a2, *a3); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addWidget(QWidget * /GetWrapper/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, a2, a3, a4, *a5); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addLayout(QLayout * /Transfer/, int row, int column, Qt::Alignment alignment = 0); void addLayout(QLayout * /Transfer/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0); void setOriginCorner(Qt::Corner); Qt::Corner originCorner() const; virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual int count() const; virtual void setGeometry(const QRect &); void addItem(QLayoutItem *item /Transfer/, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0); void setDefaultPositioning(int n, Qt::Orientation orient); void getItemPosition(int idx, int *row, int *column, int *rowSpan, int *columnSpan) const; void setHorizontalSpacing(int spacing); int horizontalSpacing() const; void setVerticalSpacing(int spacing); int verticalSpacing() const; void setSpacing(int spacing); int spacing() const; QLayoutItem *itemAtPosition(int row, int column) const; protected: virtual void addItem(QLayoutItem * /Transfer/); private: QGridLayout(const QGridLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qgroupbox.sip0000644000076500000240000000415612613140040020524 0ustar philstaff00000000000000// qgroupbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGroupBox : QWidget { %TypeHeaderCode #include %End public: explicit QGroupBox(QWidget *parent /TransferThis/ = 0); QGroupBox(const QString &title, QWidget *parent /TransferThis/ = 0); virtual ~QGroupBox(); QString title() const; void setTitle(const QString &); Qt::Alignment alignment() const; void setAlignment(int); virtual QSize minimumSizeHint() const; bool isFlat() const; void setFlat(bool b); bool isCheckable() const; void setCheckable(bool b); bool isChecked() const; public slots: void setChecked(bool b); signals: void clicked(bool checked = false); void toggled(bool); protected: void initStyleOption(QStyleOptionGroupBox *option) const; virtual bool event(QEvent *); virtual void childEvent(QChildEvent *); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *); virtual void focusInEvent(QFocusEvent *); virtual void changeEvent(QEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); private: QGroupBox(const QGroupBox &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qheaderview.sip0000644000076500000240000001544712613140040021007 0ustar philstaff00000000000000// qheaderview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHeaderView : QAbstractItemView { %TypeHeaderCode #include %End public: enum ResizeMode { Interactive, Fixed, Stretch, ResizeToContents, Custom, }; QHeaderView(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QHeaderView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); Qt::Orientation orientation() const; int offset() const; int length() const; virtual QSize sizeHint() const; int sectionSizeHint(int logicalIndex) const; int visualIndexAt(int position) const; int logicalIndexAt(int position) const; int sectionSize(int logicalIndex) const; int sectionPosition(int logicalIndex) const; int sectionViewportPosition(int logicalIndex) const; void moveSection(int from, int to); void resizeSection(int logicalIndex, int size); bool isSectionHidden(int logicalIndex) const; void setSectionHidden(int logicalIndex, bool hide); int count() const /__len__/; int visualIndex(int logicalIndex) const; int logicalIndex(int visualIndex) const; void setHighlightSections(bool highlight); bool highlightSections() const; int stretchSectionCount() const; void setSortIndicatorShown(bool show); bool isSortIndicatorShown() const; void setSortIndicator(int logicalIndex, Qt::SortOrder order); int sortIndicatorSection() const; Qt::SortOrder sortIndicatorOrder() const; bool stretchLastSection() const; void setStretchLastSection(bool stretch); bool sectionsMoved() const; public slots: void setOffset(int offset); void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast); void setOffsetToSectionPosition(int visualIndex); signals: void geometriesChanged(); void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex); void sectionResized(int logicalIndex, int oldSize, int newSize); void sectionPressed(int logicalIndex); void sectionClicked(int logicalIndex); void sectionDoubleClicked(int logicalIndex); void sectionCountChanged(int oldCount, int newCount); void sectionHandleDoubleClicked(int logicalIndex); protected slots: void updateSection(int logicalIndex); void resizeSections(); void sectionsInserted(const QModelIndex &parent, int logicalFirst, int logicalLast); void sectionsAboutToBeRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast); protected: void initialize(); void initializeSections(); void initializeSections(int start, int end); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &old); virtual bool event(QEvent *e); virtual bool viewportEvent(QEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const; virtual QSize sectionSizeFromContents(int logicalIndex) const; virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void updateGeometries(); virtual void scrollContentsBy(int dx, int dy); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles /DocValue="[]"/ = QVector()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint); virtual QModelIndex indexAt(const QPoint &p) const; virtual bool isIndexHidden(const QModelIndex &index) const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction, Qt::KeyboardModifiers); virtual void setSelection(const QRect &, QFlags); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; public: int logicalIndexAt(int ax, int ay) const; int logicalIndexAt(const QPoint &apos) const; void hideSection(int alogicalIndex); void showSection(int alogicalIndex); void resizeSections(QHeaderView::ResizeMode mode); int hiddenSectionCount() const; int defaultSectionSize() const; void setDefaultSectionSize(int size); Qt::Alignment defaultAlignment() const; void setDefaultAlignment(Qt::Alignment alignment); bool sectionsHidden() const; void swapSections(int first, int second); bool cascadingSectionResizes() const; void setCascadingSectionResizes(bool enable); int minimumSectionSize() const; void setMinimumSectionSize(int size); QByteArray saveState() const; bool restoreState(const QByteArray &state); virtual void reset(); public slots: void setOffsetToLastSection(); signals: void sectionEntered(int logicalIndex); void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order); protected: void initStyleOption(QStyleOptionHeader *option) const; public: void setSectionsMovable(bool movable); bool sectionsMovable() const; void setSectionsClickable(bool clickable); bool sectionsClickable() const; QHeaderView::ResizeMode sectionResizeMode(int logicalIndex) const; void setSectionResizeMode(int logicalIndex, QHeaderView::ResizeMode mode); void setSectionResizeMode(QHeaderView::ResizeMode mode); %If (Qt_5_2_0 -) virtual void setVisible(bool v); %End %If (Qt_5_2_0 -) void setResizeContentsPrecision(int precision); %End %If (Qt_5_2_0 -) int resizeContentsPrecision() const; %End %If (Qt_5_2_0 -) int maximumSectionSize() const; %End %If (Qt_5_2_0 -) void setMaximumSectionSize(int size); %End %If (Qt_5_5_0 -) void resetDefaultSectionSize(); %End private: QHeaderView(const QHeaderView &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qinputdialog.sip0000644000076500000240000001237612613140040021201 0ustar philstaff00000000000000// qinputdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputDialog : QDialog { %TypeHeaderCode #include %End public: enum InputDialogOption { NoButtons, UseListViewForComboBoxItems, %If (Qt_5_2_0 -) UsePlainTextEditForTextInput, %End }; typedef QFlags InputDialogOptions; enum InputMode { TextInput, IntInput, DoubleInput, }; static QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode echo = QLineEdit::Normal, const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone); static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0); static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = 0) /ReleaseGIL/; static QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = 0, Qt::WindowFlags flags = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone); %If (Qt_5_2_0 -) static QString getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text /DocValue="''"/ = QString(), bool *ok = 0, Qt::WindowFlags flags = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone); %End QInputDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); private: QInputDialog(const QInputDialog &); public: virtual ~QInputDialog(); void setInputMode(QInputDialog::InputMode mode); QInputDialog::InputMode inputMode() const; void setLabelText(const QString &text); QString labelText() const; void setOption(QInputDialog::InputDialogOption option, bool on = true); bool testOption(QInputDialog::InputDialogOption option) const; void setOptions(QFlags options); QFlags options() const; void setTextValue(const QString &text); QString textValue() const; void setTextEchoMode(QLineEdit::EchoMode mode); QLineEdit::EchoMode textEchoMode() const; void setComboBoxEditable(bool editable); bool isComboBoxEditable() const; void setComboBoxItems(const QStringList &items); QStringList comboBoxItems() const; void setIntValue(int value); int intValue() const; void setIntMinimum(int min); int intMinimum() const; void setIntMaximum(int max); int intMaximum() const; void setIntRange(int min, int max); void setIntStep(int step); int intStep() const; void setDoubleValue(double value); double doubleValue() const; void setDoubleMinimum(double min); double doubleMinimum() const; void setDoubleMaximum(double max); double doubleMaximum() const; void setDoubleRange(double min, double max); void setDoubleDecimals(int decimals); int doubleDecimals() const; void setOkButtonText(const QString &text); QString okButtonText() const; void setCancelButtonText(const QString &text); QString cancelButtonText() const; virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual QSize minimumSizeHint() const; virtual QSize sizeHint() const; virtual void setVisible(bool visible); virtual void done(int result); signals: void textValueChanged(const QString &text); void textValueSelected(const QString &text); void intValueChanged(int value); void intValueSelected(int value); void doubleValueChanged(double value); void doubleValueSelected(double value); }; QFlags operator|(QInputDialog::InputDialogOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qitemdelegate.sip0000644000076500000240000000564712613140040021316 0ustar philstaff00000000000000// qitemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemDelegate : QAbstractItemDelegate { %TypeHeaderCode #include %End public: explicit QItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; QItemEditorFactory *itemEditorFactory() const; void setItemEditorFactory(QItemEditorFactory *factory /KeepReference/); bool hasClipping() const; void setClipping(bool clip); protected: void drawBackground(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; virtual void drawCheck(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, Qt::CheckState state) const; virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, const QPixmap &pixmap) const; virtual void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, const QString &text) const; virtual void drawFocus(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect) const; virtual bool eventFilter(QObject *object, QEvent *event); virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); private: QItemDelegate(const QItemDelegate &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qitemeditorfactory.sip0000644000076500000240000000341012613140040022404 0ustar philstaff00000000000000// qitemeditorfactory.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemEditorCreatorBase /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QItemEditorCreatorBase(); virtual QWidget *createWidget(QWidget *parent /TransferThis/) const = 0 /Factory/; virtual QByteArray valuePropertyName() const = 0; }; class QItemEditorFactory /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QItemEditorFactory(); virtual ~QItemEditorFactory(); virtual QWidget *createEditor(int userType, QWidget *parent /TransferThis/) const; virtual QByteArray valuePropertyName(int userType) const; void registerEditor(int userType, QItemEditorCreatorBase *creator /Transfer/); static const QItemEditorFactory *defaultFactory(); static void setDefaultFactory(QItemEditorFactory *factory /Transfer/); }; PyQt-gpl-5.5.1/sip/QtWidgets/qkeyeventtransition.sip0000644000076500000240000000312712613140040022621 0ustar philstaff00000000000000// qkeyeventtransition.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QKeyEventTransition : QEventTransition { %TypeHeaderCode #include %End public: QKeyEventTransition(QState *sourceState /TransferThis/ = 0); QKeyEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, int key, QState *sourceState /TransferThis/ = 0); virtual ~QKeyEventTransition(); int key() const; void setKey(int key); Qt::KeyboardModifiers modifierMask() const; void setModifierMask(Qt::KeyboardModifiers modifiers); protected: virtual void onTransition(QEvent *event); virtual bool eventTest(QEvent *event); private: QKeyEventTransition(const QKeyEventTransition &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qkeysequenceedit.sip0000644000076500000240000000331412613140040022041 0ustar philstaff00000000000000// qkeysequenceedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QKeySequenceEdit : QWidget { %TypeHeaderCode #include %End public: explicit QKeySequenceEdit(QWidget *parent /TransferThis/ = 0); QKeySequenceEdit(const QKeySequence &keySequence, QWidget *parent /TransferThis/ = 0); virtual ~QKeySequenceEdit(); QKeySequence keySequence() const; public slots: void setKeySequence(const QKeySequence &keySequence); void clear(); signals: void editingFinished(); void keySequenceChanged(const QKeySequence &keySequence); protected: virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void timerEvent(QTimerEvent *); private: QKeySequenceEdit(const QKeySequenceEdit &); }; %End PyQt-gpl-5.5.1/sip/QtWidgets/qlabel.sip0000644000076500000240000000616712613140040017742 0ustar philstaff00000000000000// qlabel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLabel : QFrame { %TypeHeaderCode #include %End public: QLabel(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QLabel(const QString &text, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QLabel(); QString text() const; const QPixmap *pixmap() const; const QPicture *picture() const; QMovie *movie() const; Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment); void setWordWrap(bool on); bool wordWrap() const; int indent() const; void setIndent(int); int margin() const; void setMargin(int); bool hasScaledContents() const; void setScaledContents(bool); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setBuddy(QWidget * /KeepReference/); QWidget *buddy() const; virtual int heightForWidth(int) const; bool openExternalLinks() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setOpenExternalLinks(bool open); public slots: void clear(); void setMovie(QMovie *movie /KeepReference/); void setNum(double /Constrained/); void setNum(int); void setPicture(const QPicture &); void setPixmap(const QPixmap &); void setText(const QString &); signals: void linkActivated(const QString &link); void linkHovered(const QString &link); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void contextMenuEvent(QContextMenuEvent *ev); virtual void focusInEvent(QFocusEvent *ev); virtual void focusOutEvent(QFocusEvent *ev); virtual bool focusNextPrevChild(bool next); public: void setSelection(int, int); bool hasSelectedText() const; QString selectedText() const; int selectionStart() const; private: QLabel(const QLabel &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qlayout.sip0000644000076500000240000001331612613140040020172 0ustar philstaff00000000000000// qlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLayout : QObject, QLayoutItem { %TypeHeaderCode #include %End public: enum SizeConstraint { SetDefaultConstraint, SetNoConstraint, SetMinimumSize, SetFixedSize, SetMaximumSize, SetMinAndMaxSize, }; QLayout(QWidget *parent /TransferThis/); QLayout(); virtual ~QLayout(); int spacing() const; void setSpacing(int); bool setAlignment(QWidget *w, Qt::Alignment alignment); bool setAlignment(QLayout *l, Qt::Alignment alignment); void setAlignment(Qt::Alignment alignment); void setSizeConstraint(QLayout::SizeConstraint); QLayout::SizeConstraint sizeConstraint() const; void setMenuBar(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setMenuBar(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (a0 && parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows setMenuBar(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End QWidget *menuBar() const; QWidget *parentWidget() const; virtual void invalidate(); virtual QRect geometry() const; bool activate(); void update(); void addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End virtual void addItem(QLayoutItem * /Transfer/) = 0; void removeWidget(QWidget *w); void removeItem(QLayoutItem * /TransferBack/); virtual Qt::Orientations expandingDirections() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual void setGeometry(const QRect &); virtual QLayoutItem *itemAt(int index) const = 0; virtual QLayoutItem *takeAt(int index) = 0 /TransferBack/; virtual int indexOf(QWidget *) const; virtual int count() const = 0 /__len__/; virtual bool isEmpty() const; int totalHeightForWidth(int w) const; QSize totalMinimumSize() const; QSize totalMaximumSize() const; QSize totalSizeHint() const; virtual QLayout *layout(); void setEnabled(bool); bool isEnabled() const; static QSize closestAcceptableSize(const QWidget *w, const QSize &s); protected: void widgetEvent(QEvent *); virtual void childEvent(QChildEvent *e); void addChildLayout(QLayout *l /Transfer/); void addChildWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->addChildWidget(a0); #else sipCpp->sipProtect_addChildWidget(a0); #endif Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows // addChildWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End QRect alignmentRect(const QRect &) const; public: void setContentsMargins(int left, int top, int right, int bottom); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QRect contentsRect() const; void setContentsMargins(const QMargins &margins); QMargins contentsMargins() const; virtual QFlags controlTypes() const; %If (Qt_5_2_0 -) QLayoutItem *replaceWidget(QWidget *from, QWidget *to /Transfer/, Qt::FindChildOptions options = Qt::FindChildrenRecursively) /TransferBack/; %End private: QLayout(const QLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qlayoutitem.sip0000644000076500000240000000711512613140040021051 0ustar philstaff00000000000000// qlayoutitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLayoutItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode if (sipCpp->widget()) { sipType = sipType_QWidgetItem; } else if (sipCpp->spacerItem()) { sipType = sipType_QSpacerItem; } else { // Cause a restart looking for a QLayout. *sipCppRet = sipCpp->layout(); sipType = sipType_QLayout; } %End public: explicit QLayoutItem(Qt::Alignment alignment = 0); virtual ~QLayoutItem(); virtual QSize sizeHint() const = 0; virtual QSize minimumSize() const = 0; virtual QSize maximumSize() const = 0; virtual Qt::Orientations expandingDirections() const = 0; virtual void setGeometry(const QRect &) = 0; virtual QRect geometry() const = 0; virtual bool isEmpty() const = 0; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual void invalidate(); virtual QWidget *widget(); virtual QLayout *layout(); virtual QSpacerItem *spacerItem(); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment a); virtual QFlags controlTypes() const; }; class QSpacerItem : QLayoutItem { %TypeHeaderCode #include %End public: QSpacerItem(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); virtual ~QSpacerItem(); void changeSize(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual Qt::Orientations expandingDirections() const; virtual bool isEmpty() const; virtual void setGeometry(const QRect &); virtual QRect geometry() const; virtual QSpacerItem *spacerItem(); %If (Qt_5_5_0 -) QSizePolicy sizePolicy() const; %End }; class QWidgetItem : QLayoutItem { %TypeHeaderCode #include %End public: explicit QWidgetItem(QWidget *w); virtual ~QWidgetItem(); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual Qt::Orientations expandingDirections() const; virtual bool isEmpty() const; virtual void setGeometry(const QRect &); virtual QRect geometry() const; virtual QWidget *widget(); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual QFlags controlTypes() const; private: QWidgetItem(const QWidgetItem &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qlcdnumber.sip0000644000076500000240000000457012613140040020632 0ustar philstaff00000000000000// qlcdnumber.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLCDNumber : QFrame { %TypeHeaderCode #include %End public: explicit QLCDNumber(QWidget *parent /TransferThis/ = 0); QLCDNumber(uint numDigits, QWidget *parent /TransferThis/ = 0); virtual ~QLCDNumber(); enum Mode { Hex, Dec, Oct, Bin, }; enum SegmentStyle { Outline, Filled, Flat, }; bool smallDecimalPoint() const; int digitCount() const; void setDigitCount(int nDigits); void setNumDigits(int nDigits); %MethodCode // This is implemented for Qt v5 so that .ui files created with Designer for Qt v4 will continue to work. sipCpp->setDigitCount(a0); %End bool checkOverflow(double num /Constrained/) const; bool checkOverflow(int num) const; QLCDNumber::Mode mode() const; void setMode(QLCDNumber::Mode); QLCDNumber::SegmentStyle segmentStyle() const; void setSegmentStyle(QLCDNumber::SegmentStyle); double value() const; int intValue() const; virtual QSize sizeHint() const; void display(const QString &str); void display(double num /Constrained/); void display(int num); void setHexMode(); void setDecMode(); void setOctMode(); void setBinMode(); void setSmallDecimalPoint(bool); signals: void overflow(); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QLCDNumber(const QLCDNumber &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qlineedit.sip0000644000076500000240000001211612613140040020447 0ustar philstaff00000000000000// qlineedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLineEdit : QWidget { %TypeHeaderCode #include %End public: explicit QLineEdit(QWidget *parent /TransferThis/ = 0); QLineEdit(const QString &contents, QWidget *parent /TransferThis/ = 0); virtual ~QLineEdit(); QString text() const; QString displayText() const; int maxLength() const; void setMaxLength(int); void setFrame(bool); bool hasFrame() const; enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit, }; QLineEdit::EchoMode echoMode() const; void setEchoMode(QLineEdit::EchoMode); bool isReadOnly() const; void setReadOnly(bool); void setValidator(const QValidator * /KeepReference/); const QValidator *validator() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; int cursorPosition() const; void setCursorPosition(int); int cursorPositionAt(const QPoint &pos); void setAlignment(Qt::Alignment flag); Qt::Alignment alignment() const; void cursorForward(bool mark, int steps = 1); void cursorBackward(bool mark, int steps = 1); void cursorWordForward(bool mark); void cursorWordBackward(bool mark); void backspace(); void del() /PyName=del_/; void home(bool mark); void end(bool mark); bool isModified() const; void setModified(bool); void setSelection(int, int); bool hasSelectedText() const; QString selectedText() const; int selectionStart() const; bool isUndoAvailable() const; bool isRedoAvailable() const; void setDragEnabled(bool b); bool dragEnabled() const; QString inputMask() const; void setInputMask(const QString &inputMask); bool hasAcceptableInput() const; void setText(const QString &); void clear(); void selectAll(); void undo(); void redo(); void cut(); void copy() const; void paste(); void deselect(); void insert(const QString &); QMenu *createStandardContextMenu() /Factory/; signals: void textChanged(const QString &); void textEdited(const QString &); void cursorPositionChanged(int, int); void returnPressed(); void editingFinished(); void selectionChanged(); protected: void initStyleOption(QStyleOptionFrame *option) const; virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void paintEvent(QPaintEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *); virtual void changeEvent(QEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void inputMethodEvent(QInputMethodEvent *); QRect cursorRect() const; public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; virtual bool event(QEvent *); void setCompleter(QCompleter *completer /KeepReference/); QCompleter *completer() const; void setTextMargins(int left, int top, int right, int bottom); void getTextMargins(int *left, int *top, int *right, int *bottom) const; void setTextMargins(const QMargins &margins); QMargins textMargins() const; QString placeholderText() const; void setPlaceholderText(const QString &); void setCursorMoveStyle(Qt::CursorMoveStyle style); Qt::CursorMoveStyle cursorMoveStyle() const; %If (Qt_5_2_0 -) enum ActionPosition { LeadingPosition, TrailingPosition, }; %End %If (Qt_5_2_0 -) void setClearButtonEnabled(bool enable); %End %If (Qt_5_2_0 -) bool isClearButtonEnabled() const; %End %If (Qt_5_2_0 -) void addAction(QAction *action); %End %If (Qt_5_2_0 -) void addAction(QAction *action, QLineEdit::ActionPosition position); %End %If (Qt_5_2_0 -) QAction *addAction(const QIcon &icon, QLineEdit::ActionPosition position) /Transfer/; %End private: QLineEdit(const QLineEdit &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qlistview.sip0000644000076500000240000001143012613140040020516 0ustar philstaff00000000000000// qlistview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QListView : QAbstractItemView { %TypeHeaderCode #include %End public: enum Movement { Static, Free, Snap, }; enum Flow { LeftToRight, TopToBottom, }; enum ResizeMode { Fixed, Adjust, }; enum LayoutMode { SinglePass, Batched, }; enum ViewMode { ListMode, IconMode, }; explicit QListView(QWidget *parent /TransferThis/ = 0); virtual ~QListView(); void setMovement(QListView::Movement movement); QListView::Movement movement() const; void setFlow(QListView::Flow flow); QListView::Flow flow() const; void setWrapping(bool enable); bool isWrapping() const; void setResizeMode(QListView::ResizeMode mode); QListView::ResizeMode resizeMode() const; void setLayoutMode(QListView::LayoutMode mode); QListView::LayoutMode layoutMode() const; void setSpacing(int space); int spacing() const; void setGridSize(const QSize &size); QSize gridSize() const; void setViewMode(QListView::ViewMode mode); QListView::ViewMode viewMode() const; void clearPropertyFlags(); bool isRowHidden(int row) const; void setRowHidden(int row, bool hide); void setModelColumn(int column); int modelColumn() const; void setUniformItemSizes(bool enable); bool uniformItemSizes() const; virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; virtual void reset(); virtual void setRootIndex(const QModelIndex &index); signals: void indexesMoved(const QModelIndexList &indexes); protected: virtual void scrollContentsBy(int dx, int dy); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles /DocValue="[]"/ = QVector()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual bool event(QEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void startDrag(Qt::DropActions supportedActions); virtual QStyleOptionViewItem viewOptions() const; virtual void paintEvent(QPaintEvent *e); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); QRect rectForIndex(const QModelIndex &index) const; void setPositionForIndex(const QPoint &position, const QModelIndex &index); virtual void setSelection(const QRect &rect, QFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void updateGeometries(); virtual bool isIndexHidden(const QModelIndex &index) const; %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: void setBatchSize(int batchSize); int batchSize() const; void setWordWrap(bool on); bool wordWrap() const; void setSelectionRectVisible(bool show); bool isSelectionRectVisible() const; protected: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); private: QListView(const QListView &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qlistwidget.sip0000644000076500000240000001572712613140040021044 0ustar philstaff00000000000000// qlistwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QListWidgetItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType { Type, UserType, }; QListWidgetItem(QListWidget *parent /TransferThis/ = 0, int type = Type); QListWidgetItem(const QString &text, QListWidget *parent /TransferThis/ = 0, int type = Type); QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent /TransferThis/ = 0, int type = Type); QListWidgetItem(const QListWidgetItem &other); virtual ~QListWidgetItem(); virtual QListWidgetItem *clone() const /Factory/; QListWidget *listWidget() const; Qt::ItemFlags flags() const; QString text() const; QIcon icon() const; QString statusTip() const; QString toolTip() const; QString whatsThis() const; QFont font() const; int textAlignment() const; void setTextAlignment(int alignment); Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); QSize sizeHint() const; void setSizeHint(const QSize &size); virtual QVariant data(int role) const; virtual void setData(int role, const QVariant &value); virtual bool operator<(const QListWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(const QString &atext); void setIcon(const QIcon &aicon); void setStatusTip(const QString &astatusTip); void setToolTip(const QString &atoolTip); void setWhatsThis(const QString &awhatsThis); void setFont(const QFont &afont); QBrush background() const; void setBackground(const QBrush &brush); QBrush foreground() const; void setForeground(const QBrush &brush); void setSelected(bool aselect); bool isSelected() const; void setHidden(bool ahide); bool isHidden() const; private: QListWidgetItem &operator=(const QListWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QListWidgetItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QListWidgetItem &item /Constrained/) /ReleaseGIL/; class QListWidget : QListView { %TypeHeaderCode #include %End public: explicit QListWidget(QWidget *parent /TransferThis/ = 0); virtual ~QListWidget(); QListWidgetItem *item(int row) const; int row(const QListWidgetItem *item) const; void insertItem(int row, QListWidgetItem *item /Transfer/); void insertItem(int row, const QString &label); void insertItems(int row, const QStringList &labels); void addItem(QListWidgetItem *aitem /Transfer/); void addItem(const QString &label); void addItems(const QStringList &labels); QListWidgetItem *takeItem(int row) /TransferBack/; int count() const /__len__/; QListWidgetItem *currentItem() const; void setCurrentItem(QListWidgetItem *item); void setCurrentItem(QListWidgetItem *item, QFlags command); int currentRow() const; void setCurrentRow(int row); void setCurrentRow(int row, QFlags command); QListWidgetItem *itemAt(const QPoint &p) const; QListWidgetItem *itemAt(int ax, int ay) const; QWidget *itemWidget(QListWidgetItem *item) const; void setItemWidget(QListWidgetItem *item, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setItemWidget(a0, a1); Py_END_ALLOW_THREADS %End QRect visualItemRect(const QListWidgetItem *item) const; void sortItems(Qt::SortOrder order = Qt::AscendingOrder); void editItem(QListWidgetItem *item); void openPersistentEditor(QListWidgetItem *item); void closePersistentEditor(QListWidgetItem *item); QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags) const; public slots: void clear(); void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); signals: void itemPressed(QListWidgetItem *item); void itemClicked(QListWidgetItem *item); void itemDoubleClicked(QListWidgetItem *item); void itemActivated(QListWidgetItem *item); void itemEntered(QListWidgetItem *item); void itemChanged(QListWidgetItem *item); void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous); void currentTextChanged(const QString ¤tText); void currentRowChanged(int currentRow); void itemSelectionChanged(); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList items) const /TransferBack/; virtual bool dropMimeData(int index, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; QList items(const QMimeData *data) const; QModelIndex indexFromItem(QListWidgetItem *item) const; QListWidgetItem *itemFromIndex(const QModelIndex &index) const; virtual bool event(QEvent *e); public: void setSortingEnabled(bool enable); bool isSortingEnabled() const; virtual void dropEvent(QDropEvent *event); void removeItemWidget(QListWidgetItem *aItem); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeItemWidget(a0); Py_END_ALLOW_THREADS %End private: virtual void setModel(QAbstractItemModel *model /KeepReference/); QListWidget(const QListWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qmaccocoaviewcontainer.sip0000644000076500000240000000263412613140040023221 0ustar philstaff00000000000000// This is the SIP interface definition for the QMacCocoaViewContainer. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_MACX) %If (PyQt_MacCocoaViewContainer) class QMacCocoaViewContainer : QWidget /FileExtension=".mm"/ { %TypeHeaderCode #include %End public: QMacCocoaViewContainer(void *cocoaViewToWrap, QWidget *parent /TransferThis/ = 0) [(NSView *, QWidget *)]; virtual ~QMacCocoaViewContainer(); void setCocoaView(void *cocoaViewToWrap) [void (NSView *)]; void *cocoaView() const [NSView * ()]; private: QMacCocoaViewContainer(const QMacCocoaViewContainer &); }; %End %End PyQt-gpl-5.5.1/sip/QtWidgets/qmainwindow.sip0000644000076500000240000001112112613140040021021 0ustar philstaff00000000000000// qmainwindow.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMainWindow : QWidget { %TypeHeaderCode #include %End public: QMainWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QMainWindow(); QSize iconSize() const; void setIconSize(const QSize &iconSize); Qt::ToolButtonStyle toolButtonStyle() const; void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); QMenuBar *menuBar() const /Transfer/; void setMenuBar(QMenuBar *menubar /Transfer/); QStatusBar *statusBar() const /Transfer/; void setStatusBar(QStatusBar *statusbar /Transfer/); QWidget *centralWidget() const; void setCentralWidget(QWidget *widget /Transfer/); void setCorner(Qt::Corner corner, Qt::DockWidgetArea area); Qt::DockWidgetArea corner(Qt::Corner corner) const; void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea); void insertToolBarBreak(QToolBar *before); void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar /Transfer/); void addToolBar(QToolBar *toolbar /Transfer/); QToolBar *addToolBar(const QString &title) /Transfer/; void insertToolBar(QToolBar *before, QToolBar *toolbar /Transfer/); void removeToolBar(QToolBar *toolbar); Qt::ToolBarArea toolBarArea(QToolBar *toolbar) const; void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget /Transfer/); void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget /Transfer/, Qt::Orientation orientation); void splitDockWidget(QDockWidget *after, QDockWidget *dockwidget /Transfer/, Qt::Orientation orientation); void removeDockWidget(QDockWidget *dockwidget /TransferBack/); Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const; QByteArray saveState(int version = 0) const; bool restoreState(const QByteArray &state, int version = 0); virtual QMenu *createPopupMenu(); public slots: void setAnimated(bool enabled); void setDockNestingEnabled(bool enabled); signals: void iconSizeChanged(const QSize &iconSize); void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); protected: virtual void contextMenuEvent(QContextMenuEvent *event); virtual bool event(QEvent *event); public: bool isAnimated() const; bool isDockNestingEnabled() const; bool isSeparator(const QPoint &pos) const; QWidget *menuWidget() const; void setMenuWidget(QWidget *menubar /Transfer/); void tabifyDockWidget(QDockWidget *first, QDockWidget *second); enum DockOption { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, }; typedef QFlags DockOptions; void setDockOptions(QFlags options); QFlags dockOptions() const; void removeToolBarBreak(QToolBar *before); bool toolBarBreak(QToolBar *toolbar) const; %If (Qt_5_2_0 -) void setUnifiedTitleAndToolBarOnMac(bool set); %End %If (Qt_5_2_0 -) bool unifiedTitleAndToolBarOnMac() const; %End bool restoreDockWidget(QDockWidget *dockwidget); bool documentMode() const; void setDocumentMode(bool enabled); QTabWidget::TabShape tabShape() const; void setTabShape(QTabWidget::TabShape tabShape); QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const; void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition); QList tabifiedDockWidgets(QDockWidget *dockwidget) const; %If (Qt_5_2_0 -) QWidget *takeCentralWidget() /TransferBack/; %End private: QMainWindow(const QMainWindow &); }; QFlags operator|(QMainWindow::DockOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qmdiarea.sip0000644000076500000240000001027212613140040020255 0ustar philstaff00000000000000// qmdiarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMdiArea : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum AreaOption { DontMaximizeSubWindowOnActivation, }; typedef QFlags AreaOptions; enum ViewMode { SubWindowView, TabbedView, }; enum WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder, }; QMdiArea(QWidget *parent /TransferThis/ = 0); virtual ~QMdiArea(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QMdiSubWindow *activeSubWindow() const; QMdiSubWindow *addSubWindow(QWidget *widget /Transfer/, Qt::WindowFlags flags = 0); QList subWindowList(QMdiArea::WindowOrder order = QMdiArea::CreationOrder) const; QMdiSubWindow *currentSubWindow() const; void removeSubWindow(QWidget *widget /GetWrapper/); %MethodCode // We need to implement /TransferBack/ on the argument, but it might be the // QMdiSubWindow that wraps the widget we are really after. QMdiSubWindow *swin = qobject_cast(a0); if (swin) { QWidget *w = swin->widget(); a0Wrapper = (w ? sipGetPyObject(w, sipType_QWidget) : 0); } else a0Wrapper = 0; Py_BEGIN_ALLOW_THREADS sipCpp->removeSubWindow(a0); Py_END_ALLOW_THREADS if (a0Wrapper) sipTransferBack(a0Wrapper); %End QBrush background() const; void setBackground(const QBrush &background); void setOption(QMdiArea::AreaOption option, bool on = true); bool testOption(QMdiArea::AreaOption opton) const; signals: void subWindowActivated(QMdiSubWindow *); public slots: void setActiveSubWindow(QMdiSubWindow *window); void tileSubWindows(); void cascadeSubWindows(); void closeActiveSubWindow(); void closeAllSubWindows(); void activateNextSubWindow(); void activatePreviousSubWindow(); protected: virtual void setupViewport(QWidget *viewport); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *object, QEvent *event); virtual void paintEvent(QPaintEvent *paintEvent); virtual void childEvent(QChildEvent *childEvent); virtual void resizeEvent(QResizeEvent *resizeEvent); virtual void timerEvent(QTimerEvent *timerEvent); virtual void showEvent(QShowEvent *showEvent); virtual bool viewportEvent(QEvent *event); virtual void scrollContentsBy(int dx, int dy); public: QMdiArea::WindowOrder activationOrder() const; void setActivationOrder(QMdiArea::WindowOrder order); void setViewMode(QMdiArea::ViewMode mode); QMdiArea::ViewMode viewMode() const; void setTabShape(QTabWidget::TabShape shape); QTabWidget::TabShape tabShape() const; void setTabPosition(QTabWidget::TabPosition position); QTabWidget::TabPosition tabPosition() const; bool documentMode() const; void setDocumentMode(bool enabled); void setTabsClosable(bool closable); bool tabsClosable() const; void setTabsMovable(bool movable); bool tabsMovable() const; private: QMdiArea(const QMdiArea &); }; QFlags operator|(QMdiArea::AreaOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qmdisubwindow.sip0000644000076500000240000001015312613140040021364 0ustar philstaff00000000000000// qmdisubwindow.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMdiSubWindow : QWidget { %TypeHeaderCode #include %End public: enum SubWindowOption { RubberBandResize, RubberBandMove, }; typedef QFlags SubWindowOptions; QMdiSubWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QMdiSubWindow(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setWidget(QWidget *widget /Transfer/); %MethodCode // We have to implement /TransferBack/ on any existing widget. QWidget *w = sipCpp->widget(); Py_BEGIN_ALLOW_THREADS sipCpp->setWidget(a0); Py_END_ALLOW_THREADS if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferBack(wo); } %End QWidget *widget() const; bool isShaded() const; void setOption(QMdiSubWindow::SubWindowOption option, bool on = true); bool testOption(QMdiSubWindow::SubWindowOption) const; void setKeyboardSingleStep(int step); int keyboardSingleStep() const; void setKeyboardPageStep(int step); int keyboardPageStep() const; void setSystemMenu(QMenu *systemMenu /Transfer/); %MethodCode // We have to break the parent association on any existing menu. QMenu *w = sipCpp->systemMenu(); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QMenu); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setSystemMenu(a0); Py_END_ALLOW_THREADS %End QMenu *systemMenu() const; QMdiArea *mdiArea() const; signals: void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); void aboutToActivate(); public slots: void showSystemMenu(); void showShaded(); protected: virtual bool eventFilter(QObject *object, QEvent *event); virtual bool event(QEvent *event); virtual void showEvent(QShowEvent *showEvent); virtual void hideEvent(QHideEvent *hideEvent); virtual void changeEvent(QEvent *changeEvent); virtual void closeEvent(QCloseEvent *closeEvent); virtual void leaveEvent(QEvent *leaveEvent); virtual void resizeEvent(QResizeEvent *resizeEvent); virtual void timerEvent(QTimerEvent *timerEvent); virtual void moveEvent(QMoveEvent *moveEvent); virtual void paintEvent(QPaintEvent *paintEvent); virtual void mousePressEvent(QMouseEvent *mouseEvent); virtual void mouseDoubleClickEvent(QMouseEvent *mouseEvent); virtual void mouseReleaseEvent(QMouseEvent *mouseEvent); virtual void mouseMoveEvent(QMouseEvent *mouseEvent); virtual void keyPressEvent(QKeyEvent *keyEvent); virtual void contextMenuEvent(QContextMenuEvent *contextMenuEvent); virtual void focusInEvent(QFocusEvent *focusInEvent); virtual void focusOutEvent(QFocusEvent *focusOutEvent); virtual void childEvent(QChildEvent *childEvent); private: QMdiSubWindow(const QMdiSubWindow &); }; QFlags operator|(QMdiSubWindow::SubWindowOption f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qmenu.sip0000644000076500000240000001336312613140040017623 0ustar philstaff00000000000000// qmenu.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenu : QWidget { %TypeHeaderCode #include %End public: explicit QMenu(QWidget *parent /TransferThis/ = 0); QMenu(const QString &title, QWidget *parent /TransferThis/ = 0); virtual ~QMenu(); void addAction(QAction *action); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; QAction *addAction(const QString &text, SIP_PYOBJECT slot /DocType="slot"/, const QKeySequence &shortcut = 0) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData(), *a2); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /DocType="slot"/, const QKeySequence &shortcut = 0) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData(), *a3); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title) /Transfer/; QMenu *addMenu(const QIcon &icon, const QString &title) /Transfer/; QAction *addSeparator() /Transfer/; QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before) /Transfer/; void clear(); void setTearOffEnabled(bool); bool isTearOffEnabled() const; bool isTearOffMenuVisible() const; void hideTearOffMenu(); void setDefaultAction(QAction * /KeepReference/); QAction *defaultAction() const; void setActiveAction(QAction *act); QAction *activeAction() const; void popup(const QPoint &p, QAction *action = 0); QAction *exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) QAction *exec() /ReleaseGIL/; %End QAction *exec(const QPoint &p, QAction *action = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) QAction *exec(const QPoint &pos, QAction *action = 0) /ReleaseGIL/; %End static QAction *exec(QList actions, const QPoint &pos, QAction *at = 0, QWidget *parent = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static QAction *exec(QList actions, const QPoint &pos, QAction *at = 0, QWidget *parent = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End virtual QSize sizeHint() const; QRect actionGeometry(QAction *) const; QAction *actionAt(const QPoint &) const; QAction *menuAction() const; QString title() const; void setTitle(const QString &title); QIcon icon() const; void setIcon(const QIcon &icon); void setNoReplayFor(QWidget *widget); signals: void aboutToHide(); void aboutToShow(); void hovered(QAction *action); void triggered(QAction *action); protected: int columnCount() const; void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void hideEvent(QHideEvent *); virtual void paintEvent(QPaintEvent *); virtual void actionEvent(QActionEvent *); virtual void timerEvent(QTimerEvent *); virtual bool event(QEvent *); virtual bool focusNextPrevChild(bool next); public: bool isEmpty() const; bool separatorsCollapsible() const; void setSeparatorsCollapsible(bool collapse); %If (Qt_5_1_0 -) QAction *addSection(const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) QAction *addSection(const QIcon &icon, const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) QAction *insertSection(QAction *before, const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) QAction *insertSection(QAction *before, const QIcon &icon, const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) bool toolTipsVisible() const; %End %If (Qt_5_1_0 -) void setToolTipsVisible(bool visible); %End private: QMenu(const QMenu &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qmenubar.sip0000644000076500000240000000676112613140040020314 0ustar philstaff00000000000000// qmenubar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenuBar : QWidget { %TypeHeaderCode #include %End public: explicit QMenuBar(QWidget *parent /TransferThis/ = 0); virtual ~QMenuBar(); void addAction(QAction *action); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QString &text, SIP_PYOBJECT slot /DocType="slot"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title) /Transfer/; QMenu *addMenu(const QIcon &icon, const QString &title) /Transfer/; QAction *addSeparator() /Transfer/; QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before) /Transfer/; void clear(); QAction *activeAction() const; void setActiveAction(QAction *action); void setDefaultUp(bool); bool isDefaultUp() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; virtual int heightForWidth(int) const; QRect actionGeometry(QAction *) const; QAction *actionAt(const QPoint &) const; void setCornerWidget(QWidget *widget /Transfer/, Qt::Corner corner = Qt::TopRightCorner); QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; virtual void setVisible(bool visible); signals: void triggered(QAction *action); void hovered(QAction *action); protected: void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void leaveEvent(QEvent *); virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); virtual void actionEvent(QActionEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void focusInEvent(QFocusEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *); virtual void timerEvent(QTimerEvent *); public: bool isNativeMenuBar() const; void setNativeMenuBar(bool nativeMenuBar); private: QMenuBar(const QMenuBar &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qmessagebox.sip0000644000076500000240000001466212613140040021017 0ustar philstaff00000000000000// qmessagebox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMessageBox : QDialog { %TypeHeaderCode #include %End public: enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, HelpRole, YesRole, NoRole, ResetRole, ApplyRole, }; enum Icon { NoIcon, Information, Warning, Critical, Question, }; enum StandardButton { NoButton, Ok, Save, SaveAll, Open, Yes, YesToAll, No, NoToAll, Abort, Retry, Ignore, Close, Cancel, Discard, Help, Apply, Reset, RestoreDefaults, FirstButton, LastButton, YesAll, NoAll, Default, Escape, FlagMask, ButtonMask, }; typedef QFlags StandardButtons; typedef QMessageBox::StandardButton Button; explicit QMessageBox(QWidget *parent /TransferThis/ = 0); QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::NoButton, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::Dialog|Qt::MSWindowsFixedSizeDialogHint); virtual ~QMessageBox(); QString text() const; void setText(const QString &); QMessageBox::Icon icon() const; void setIcon(QMessageBox::Icon); QPixmap iconPixmap() const; void setIconPixmap(const QPixmap &); Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat); static QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QFlags buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QFlags buttons = QFlags(QFlag(81920)), QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QFlags buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QFlags buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static void about(QWidget *parent, const QString &caption, const QString &text) /ReleaseGIL/; static void aboutQt(QWidget *parent, const QString &title /DocValue="''"/ = QString()) /ReleaseGIL/; static QPixmap standardIcon(QMessageBox::Icon icon); protected: virtual bool event(QEvent *e); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void closeEvent(QCloseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void changeEvent(QEvent *); public: void addButton(QAbstractButton *button /Transfer/, QMessageBox::ButtonRole role); QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role) /Transfer/; QPushButton *addButton(QMessageBox::StandardButton button) /Transfer/; void removeButton(QAbstractButton *button /TransferBack/); void setStandardButtons(QFlags buttons); QFlags standardButtons() const; QMessageBox::StandardButton standardButton(QAbstractButton *button) const; QAbstractButton *button(QMessageBox::StandardButton which) const; QPushButton *defaultButton() const; void setDefaultButton(QPushButton *button /KeepReference/); void setDefaultButton(QMessageBox::StandardButton button); QAbstractButton *escapeButton() const; void setEscapeButton(QAbstractButton *button /KeepReference/); void setEscapeButton(QMessageBox::StandardButton button); QAbstractButton *clickedButton() const; QString informativeText() const; void setInformativeText(const QString &text); QString detailedText() const; void setDetailedText(const QString &text); void setWindowTitle(const QString &title); void setWindowModality(Qt::WindowModality windowModality); virtual void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End QList buttons() const; QMessageBox::ButtonRole buttonRole(QAbstractButton *button) const; signals: void buttonClicked(QAbstractButton *button); public: %If (Qt_5_1_0 -) void setTextInteractionFlags(Qt::TextInteractionFlags flags); %End %If (Qt_5_1_0 -) Qt::TextInteractionFlags textInteractionFlags() const; %End %If (Qt_5_2_0 -) void setCheckBox(QCheckBox *cb); %End %If (Qt_5_2_0 -) QCheckBox *checkBox() const; %End private: QMessageBox(const QMessageBox &); }; QFlags operator|(QMessageBox::StandardButton f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qmouseeventtransition.sip0000644000076500000240000000336012613140040023160 0ustar philstaff00000000000000// qmouseeventtransition.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMouseEventTransition : QEventTransition { %TypeHeaderCode #include %End public: QMouseEventTransition(QState *sourceState /TransferThis/ = 0); QMouseEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, Qt::MouseButton button, QState *sourceState /TransferThis/ = 0); virtual ~QMouseEventTransition(); Qt::MouseButton button() const; void setButton(Qt::MouseButton button); Qt::KeyboardModifiers modifierMask() const; void setModifierMask(Qt::KeyboardModifiers modifiers); QPainterPath hitTestPath() const; void setHitTestPath(const QPainterPath &path); protected: virtual void onTransition(QEvent *event); virtual bool eventTest(QEvent *event); private: QMouseEventTransition(const QMouseEventTransition &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qopenglwidget.sip0000644000076500000240000000436112613140040021345 0ustar philstaff00000000000000// qopenglwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) %If (PyQt_OpenGL) class QOpenGLWidget : QWidget { %TypeHeaderCode #include %End public: QOpenGLWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QOpenGLWidget(); void setFormat(const QSurfaceFormat &format); QSurfaceFormat format() const; bool isValid() const; void makeCurrent(); void doneCurrent(); QOpenGLContext *context() const; GLuint defaultFramebufferObject() const; QImage grabFramebuffer(); signals: void aboutToCompose(); void frameSwapped(); void aboutToResize(); void resized(); protected: virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void paintEvent(QPaintEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual bool event(QEvent *e); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; virtual QPaintEngine *paintEngine() const; public: %If (Qt_5_5_0 -) enum UpdateBehavior { NoPartialUpdate, PartialUpdate, }; %End %If (Qt_5_5_0 -) void setUpdateBehavior(QOpenGLWidget::UpdateBehavior updateBehavior); %End %If (Qt_5_5_0 -) QOpenGLWidget::UpdateBehavior updateBehavior() const; %End private: QOpenGLWidget(const QOpenGLWidget &); }; %End %End PyQt-gpl-5.5.1/sip/QtWidgets/qplaintextedit.sip0000644000076500000240000001652012613140040021533 0ustar philstaff00000000000000// qplaintextedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPlainTextEdit : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum LineWrapMode { NoWrap, WidgetWidth, }; explicit QPlainTextEdit(QWidget *parent /TransferThis/ = 0); QPlainTextEdit(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QPlainTextEdit(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; bool isReadOnly() const; void setReadOnly(bool ro); void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void mergeCurrentCharFormat(const QTextCharFormat &modifier); void setCurrentCharFormat(const QTextCharFormat &format); QTextCharFormat currentCharFormat() const; bool tabChangesFocus() const; void setTabChangesFocus(bool b); void setDocumentTitle(const QString &title); QString documentTitle() const; bool isUndoRedoEnabled() const; void setUndoRedoEnabled(bool enable); void setMaximumBlockCount(int maximum); int maximumBlockCount() const; QPlainTextEdit::LineWrapMode lineWrapMode() const; void setLineWrapMode(QPlainTextEdit::LineWrapMode mode); QTextOption::WrapMode wordWrapMode() const; void setWordWrapMode(QTextOption::WrapMode policy); void setBackgroundVisible(bool visible); bool backgroundVisible() const; void setCenterOnScroll(bool enabled); bool centerOnScroll() const; bool find(const QString &exp, QFlags options = 0); QString toPlainText() const; void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); QMenu *createStandardContextMenu() /Factory/; %If (Qt_5_5_0 -) QMenu *createStandardContextMenu(const QPoint &position) /Factory/; %End QTextCursor cursorForPosition(const QPoint &pos) const; QRect cursorRect(const QTextCursor &cursor) const; QRect cursorRect() const; bool overwriteMode() const; void setOverwriteMode(bool overwrite); int tabStopWidth() const; void setTabStopWidth(int width); int cursorWidth() const; void setCursorWidth(int width); void setExtraSelections(const QList &selections); QList extraSelections() const; void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); bool canPaste() const; %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End %End int blockCount() const; public slots: void setPlainText(const QString &text); void cut(); void copy(); void paste(); void undo(); void redo(); void clear(); void selectAll(); void insertPlainText(const QString &text); void appendPlainText(const QString &text); void appendHtml(const QString &html); void centerCursor(); signals: void textChanged(); void undoAvailable(bool b); void redoAvailable(bool b); void copyAvailable(bool b); void selectionChanged(); void cursorPositionChanged(); void updateRequest(const QRect &rect, int dy); void blockCountChanged(int newBlockCount); void modificationChanged(bool); protected: virtual bool event(QEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual bool focusNextPrevChild(bool next); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void showEvent(QShowEvent *); virtual void changeEvent(QEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; protected: virtual QMimeData *createMimeDataFromSelection() const /Factory/; virtual bool canInsertFromMimeData(const QMimeData *source) const; virtual void insertFromMimeData(const QMimeData *source); virtual void scrollContentsBy(int dx, int dy); QTextBlock firstVisibleBlock() const; QPointF contentOffset() const; QRectF blockBoundingRect(const QTextBlock &block) const; QRectF blockBoundingGeometry(const QTextBlock &block) const; QAbstractTextDocumentLayout::PaintContext getPaintContext() const; public: QString anchorAt(const QPoint &pos) const; public slots: %If (Qt_5_1_0 -) void zoomIn(int range = 1); %End %If (Qt_5_1_0 -) void zoomOut(int range = 1); %End public: %If (Qt_5_3_0 -) void setPlaceholderText(const QString &placeholderText); %End %If (Qt_5_3_0 -) QString placeholderText() const; %End %If (Qt_5_3_0 -) bool find(const QRegExp &exp, QFlags options = 0); %End %If (Qt_5_3_0 -) QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; %End private: QPlainTextEdit(const QPlainTextEdit &); }; class QPlainTextDocumentLayout : QAbstractTextDocumentLayout { %TypeHeaderCode #include %End public: QPlainTextDocumentLayout(QTextDocument *document); virtual ~QPlainTextDocumentLayout(); virtual void draw(QPainter *, const QAbstractTextDocumentLayout::PaintContext &); virtual int hitTest(const QPointF &, Qt::HitTestAccuracy) const; virtual int pageCount() const; virtual QSizeF documentSize() const; virtual QRectF frameBoundingRect(QTextFrame *) const; virtual QRectF blockBoundingRect(const QTextBlock &block) const; void ensureBlockLayout(const QTextBlock &block) const; void setCursorWidth(int width); int cursorWidth() const; void requestUpdate(); protected: virtual void documentChanged(int from, int, int charsAdded); }; PyQt-gpl-5.5.1/sip/QtWidgets/qprogressbar.sip0000644000076500000240000000436212613140040021207 0ustar philstaff00000000000000// qprogressbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProgressBar : QWidget { %TypeHeaderCode #include %End public: enum Direction { TopToBottom, BottomToTop, }; explicit QProgressBar(QWidget *parent /TransferThis/ = 0); virtual ~QProgressBar(); int minimum() const; int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QString text() const; void setTextVisible(bool visible); bool isTextVisible() const; Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; Qt::Orientation orientation() const; void setInvertedAppearance(bool invert); void setTextDirection(QProgressBar::Direction textDirection); void setFormat(const QString &format); QString format() const; %If (Qt_5_1_0 -) void resetFormat(); %End public slots: void reset(); void setMinimum(int minimum); void setMaximum(int maximum); void setValue(int value); void setOrientation(Qt::Orientation); signals: void valueChanged(int value); protected: void initStyleOption(QStyleOptionProgressBar *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QProgressBar(const QProgressBar &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qprogressdialog.sip0000644000076500000240000000555112613140040021703 0ustar philstaff00000000000000// qprogressdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProgressDialog : QDialog { %TypeHeaderCode #include %End public: QProgressDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QProgressDialog(); void setLabel(QLabel *label /Transfer/); void setCancelButton(QPushButton *button /Transfer/); void setBar(QProgressBar *bar /Transfer/); bool wasCanceled() const; int minimum() const; int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QSize sizeHint() const; QString labelText() const; int minimumDuration() const; void setAutoReset(bool b); bool autoReset() const; void setAutoClose(bool b); bool autoClose() const; public slots: void cancel(); void reset(); void setMaximum(int maximum); void setMinimum(int minimum); void setValue(int progress); void setLabelText(const QString &); void setCancelButtonText(const QString &); void setMinimumDuration(int ms); signals: void canceled(); protected: virtual void resizeEvent(QResizeEvent *); virtual void closeEvent(QCloseEvent *); virtual void changeEvent(QEvent *); virtual void showEvent(QShowEvent *e); void forceShow(); public: void open(); void open(SIP_PYOBJECT slot /DocType="slot"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End private: QProgressDialog(const QProgressDialog &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qproxystyle.sip0000644000076500000240000000763312613140040021124 0ustar philstaff00000000000000// qproxystyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProxyStyle : QCommonStyle { %TypeHeaderCode #include %End public: QProxyStyle(QStyle *style /Transfer/ = 0); QProxyStyle(const QString &key); virtual ~QProxyStyle(); QStyle *baseStyle() const; void setBaseStyle(QStyle *style /Transfer/); virtual void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; virtual QSize sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const; virtual QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const; virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = 0) const; virtual int styleHint(QStyle::StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const; virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QPixmap standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = 0) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const; virtual QPalette standardPalette() const; virtual void polish(QWidget *widget); virtual void polish(QPalette &pal /In,Out/); virtual void polish(QApplication *app); virtual void unpolish(QWidget *widget); virtual void unpolish(QApplication *app); protected: virtual bool event(QEvent *e); private: QProxyStyle(const QProxyStyle &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qpushbutton.sip0000644000076500000240000000405712613140040021072 0ustar philstaff00000000000000// qpushbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPushButton : QAbstractButton { %TypeHeaderCode #include %End public: explicit QPushButton(QWidget *parent /TransferThis/ = 0); QPushButton(const QString &text, QWidget *parent /TransferThis/ = 0); QPushButton(const QIcon &icon, const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QPushButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; bool autoDefault() const; void setAutoDefault(bool); bool isDefault() const; void setDefault(bool); void setMenu(QMenu *menu /KeepReference/); QMenu *menu() const; void setFlat(bool); bool isFlat() const; public slots: void showMenu(); protected: void initStyleOption(QStyleOptionButton *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); // Protected platform specific methods. %If (WS_MACX) bool hitButton(const QPoint &pos) const; %End private: QPushButton(const QPushButton &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qpywidgets_qlist.sip0000644000076500000240000000547212613140040022114 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtWidgets module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /DocType="list-of-QWizard.WizardButton"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QWizard_WizardButton); if (!eobj) { Py_DECREF(l); return 0; } PyList_SET_ITEM(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (SIP_SSIZE_T i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } if (!sipCanConvertToEnum(itm, sipType_QWizard_WizardButton)) { PyErr_Format(PyExc_TypeError, "index " SIP_SSIZE_T_FORMAT " has type '%s' but 'QWizard.WizardButton' is expected", i, Py_TYPE(itm)->tp_name); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(SIPLong_AsLong(itm))); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt-gpl-5.5.1/sip/QtWidgets/qradiobutton.sip0000644000076500000240000000307512613140040021210 0ustar philstaff00000000000000// qradiobutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioButton : QAbstractButton { %TypeHeaderCode #include %End public: explicit QRadioButton(QWidget *parent /TransferThis/ = 0); QRadioButton(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QRadioButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; protected: void initStyleOption(QStyleOptionButton *button) const; virtual bool hitButton(const QPoint &) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); private: QRadioButton(const QRadioButton &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qrubberband.sip0000644000076500000240000000337212613140040020764 0ustar philstaff00000000000000// qrubberband.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRubberBand : QWidget { %TypeHeaderCode #include %End public: enum Shape { Line, Rectangle, }; QRubberBand(QRubberBand::Shape, QWidget *parent /TransferThis/ = 0); virtual ~QRubberBand(); QRubberBand::Shape shape() const; void setGeometry(const QRect &r); void setGeometry(int ax, int ay, int aw, int ah); void move(const QPoint &p); void move(int ax, int ay); void resize(int w, int h); void resize(const QSize &s); protected: void initStyleOption(QStyleOptionRubberBand *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void moveEvent(QMoveEvent *); }; PyQt-gpl-5.5.1/sip/QtWidgets/qscrollarea.sip0000644000076500000240000000365512613140040021011 0ustar philstaff00000000000000// qscrollarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollArea : QAbstractScrollArea { %TypeHeaderCode #include %End public: explicit QScrollArea(QWidget *parent /TransferThis/ = 0); virtual ~QScrollArea(); QWidget *widget() const; void setWidget(QWidget *w /Transfer/); QWidget *takeWidget() /TransferBack/; bool widgetResizable() const; void setWidgetResizable(bool resizable); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment); virtual QSize sizeHint() const; virtual bool focusNextPrevChild(bool next); void ensureVisible(int x, int y, int xMargin = 50, int yMargin = 50); void ensureWidgetVisible(QWidget *childWidget, int xMargin = 50, int yMargin = 50); protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void scrollContentsBy(int dx, int dy); %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End private: QScrollArea(const QScrollArea &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qscrollbar.sip0000644000076500000240000000342312613140040020636 0ustar philstaff00000000000000// qscrollbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollBar : QAbstractSlider { %TypeHeaderCode #include %End public: explicit QScrollBar(QWidget *parent /TransferThis/ = 0); QScrollBar(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QScrollBar(); virtual QSize sizeHint() const; virtual bool event(QEvent *event); protected: void initStyleOption(QStyleOptionSlider *option) const; virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void hideEvent(QHideEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void wheelEvent(QWheelEvent *); virtual void sliderChange(QAbstractSlider::SliderChange change); private: QScrollBar(const QScrollBar &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qscroller.sip0000644000076500000240000000556112613140040020505 0ustar philstaff00000000000000// qscroller.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScroller : QObject { %TypeHeaderCode #include %End public: enum State { Inactive, Pressed, Dragging, Scrolling, }; enum ScrollerGestureType { TouchGesture, LeftMouseButtonGesture, RightMouseButtonGesture, MiddleMouseButtonGesture, }; enum Input { InputPress, InputMove, InputRelease, }; static bool hasScroller(QObject *target); static QScroller *scroller(QObject *target); static Qt::GestureType grabGesture(QObject *target, QScroller::ScrollerGestureType scrollGestureType = QScroller::TouchGesture); static Qt::GestureType grabbedGesture(QObject *target); static void ungrabGesture(QObject *target); static QList activeScrollers(); QObject *target() const; QScroller::State state() const; bool handleInput(QScroller::Input input, const QPointF &position, qint64 timestamp = 0); void stop(); QPointF velocity() const; QPointF finalPosition() const; QPointF pixelPerMeter() const; QScrollerProperties scrollerProperties() const; void setSnapPositionsX(const QList &positions); void setSnapPositionsX(qreal first, qreal interval); void setSnapPositionsY(const QList &positions); void setSnapPositionsY(qreal first, qreal interval); public slots: void setScrollerProperties(const QScrollerProperties &prop); void scrollTo(const QPointF &pos); void scrollTo(const QPointF &pos, int scrollTime); void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin); void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime); void resendPrepareEvent(); signals: void stateChanged(QScroller::State newstate); void scrollerPropertiesChanged(const QScrollerProperties &); private: QScroller(QObject *target); virtual ~QScroller(); QScroller(const QScroller &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qscrollerproperties.sip0000644000076500000240000000466512613140040022626 0ustar philstaff00000000000000// qscrollerproperties.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollerProperties { %TypeHeaderCode #include %End public: QScrollerProperties(); QScrollerProperties(const QScrollerProperties &sp); virtual ~QScrollerProperties(); bool operator==(const QScrollerProperties &sp) const; bool operator!=(const QScrollerProperties &sp) const; static void setDefaultScrollerProperties(const QScrollerProperties &sp); static void unsetDefaultScrollerProperties(); enum OvershootPolicy { OvershootWhenScrollable, OvershootAlwaysOff, OvershootAlwaysOn, }; enum FrameRates { Standard, Fps60, Fps30, Fps20, }; enum ScrollMetric { MousePressEventDelay, DragStartDistance, DragVelocitySmoothingFactor, AxisLockThreshold, ScrollingCurve, DecelerationFactor, MinimumVelocity, MaximumVelocity, MaximumClickThroughVelocity, AcceleratingFlickMaximumTime, AcceleratingFlickSpeedupFactor, SnapPositionRatio, SnapTime, OvershootDragResistanceFactor, OvershootDragDistanceFactor, OvershootScrollDistanceFactor, OvershootScrollTime, HorizontalOvershootPolicy, VerticalOvershootPolicy, FrameRate, ScrollMetricCount, }; QVariant scrollMetric(QScrollerProperties::ScrollMetric metric) const; void setScrollMetric(QScrollerProperties::ScrollMetric metric, const QVariant &value); }; PyQt-gpl-5.5.1/sip/QtWidgets/qshortcut.sip0000644000076500000240000000667712613140040020544 0ustar philstaff00000000000000// qshortcut.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QShortcut : QObject { %TypeHeaderCode #include %End public: explicit QShortcut(QWidget *parent /TransferThis/); QShortcut(const QKeySequence &key, QWidget *parent /TransferThis/, SIP_PYOBJECT member /DocType="slot"/ = 0, SIP_PYOBJECT ambiguousMember /DocType="slot"/ = 0, Qt::ShortcutContext context = Qt::WindowShortcut) [(const QKeySequence &key, QWidget *parent, const char *member = 0, const char *ambiguousMember = 0, Qt::ShortcutContext context = Qt::WindowShortcut)]; %MethodCode // Construct the shortcut without any connections. Py_BEGIN_ALLOW_THREADS sipCpp = new sipQShortcut(*a0, a1, 0, 0, a4); Py_END_ALLOW_THREADS if (a2) { QObject *rx2; QByteArray member2; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &rx2, member2)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activated()), rx2, member2.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(2, a2); } } if (a3) { QObject *rx3; QByteArray member3; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a3, sipCpp, "()", false, &rx3, member3)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activatedAmbiguously()), rx3, member3.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(3, a3); } } %End virtual ~QShortcut(); void setKey(const QKeySequence &key); QKeySequence key() const; void setEnabled(bool enable); bool isEnabled() const; void setContext(Qt::ShortcutContext context); Qt::ShortcutContext context() const; void setWhatsThis(const QString &text); QString whatsThis() const; int id() const; QWidget *parentWidget() const; void setAutoRepeat(bool on); bool autoRepeat() const; signals: void activated(); void activatedAmbiguously(); protected: virtual bool event(QEvent *e); }; PyQt-gpl-5.5.1/sip/QtWidgets/qsizegrip.sip0000644000076500000240000000322412613140040020506 0ustar philstaff00000000000000// qsizegrip.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSizeGrip : QWidget { %TypeHeaderCode #include %End public: explicit QSizeGrip(QWidget *parent /TransferThis/); virtual ~QSizeGrip(); virtual QSize sizeHint() const; virtual void setVisible(bool); protected: virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *mouseEvent); virtual void mouseMoveEvent(QMouseEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *); virtual void moveEvent(QMoveEvent *moveEvent); virtual void showEvent(QShowEvent *showEvent); virtual void hideEvent(QHideEvent *hideEvent); private: QSizeGrip(const QSizeGrip &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qsizepolicy.sip0000644000076500000240000000632712613140040021053 0ustar philstaff00000000000000// qsizepolicy.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSizePolicy { %TypeHeaderCode #include %End public: enum PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag, }; enum Policy { Fixed, Minimum, Maximum, Preferred, MinimumExpanding, Expanding, Ignored, }; QSizePolicy(); QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = QSizePolicy::DefaultType); QSizePolicy(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QSizePolicy(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End QSizePolicy::Policy horizontalPolicy() const; QSizePolicy::Policy verticalPolicy() const; void setHorizontalPolicy(QSizePolicy::Policy d); void setVerticalPolicy(QSizePolicy::Policy d); Qt::Orientations expandingDirections() const; void setHeightForWidth(bool b); bool hasHeightForWidth() const; bool operator==(const QSizePolicy &s) const; bool operator!=(const QSizePolicy &s) const; int horizontalStretch() const; int verticalStretch() const; void setHorizontalStretch(int stretchFactor); void setVerticalStretch(int stretchFactor); void transpose(); enum ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, GroupBox, Label, Line, LineEdit, PushButton, RadioButton, Slider, SpinBox, TabWidget, ToolButton, }; typedef QFlags ControlTypes; QSizePolicy::ControlType controlType() const; void setControlType(QSizePolicy::ControlType type); void setWidthForHeight(bool b); bool hasWidthForHeight() const; %If (Qt_5_2_0 -) bool retainSizeWhenHidden() const; %End %If (Qt_5_2_0 -) void setRetainSizeWhenHidden(bool retainSize); %End }; QDataStream &operator<<(QDataStream &, const QSizePolicy & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSizePolicy & /Constrained/) /ReleaseGIL/; QFlags operator|(QSizePolicy::ControlType f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qslider.sip0000644000076500000240000000364112613140040020137 0ustar philstaff00000000000000// qslider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSlider : QAbstractSlider { %TypeHeaderCode #include %End public: enum TickPosition { NoTicks, TicksAbove, TicksLeft, TicksBelow, TicksRight, TicksBothSides, }; explicit QSlider(QWidget *parent /TransferThis/ = 0); QSlider(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QSlider(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setTickPosition(QSlider::TickPosition position); QSlider::TickPosition tickPosition() const; void setTickInterval(int ti); int tickInterval() const; virtual bool event(QEvent *event); protected: void initStyleOption(QStyleOptionSlider *option) const; virtual void paintEvent(QPaintEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); private: QSlider(const QSlider &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qspinbox.sip0000644000076500000240000000622212613140040020335 0ustar philstaff00000000000000// qspinbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSpinBox : QAbstractSpinBox { %TypeHeaderCode #include %End public: explicit QSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QSpinBox(); int value() const; QString prefix() const; void setPrefix(const QString &p); QString suffix() const; void setSuffix(const QString &s); QString cleanText() const; int singleStep() const; void setSingleStep(int val); int minimum() const; void setMinimum(int min); int maximum() const; void setMaximum(int max); void setRange(int min, int max); protected: virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual int valueFromText(const QString &text) const; virtual QString textFromValue(int v) const; virtual void fixup(QString &str /In,Out/) const; virtual bool event(QEvent *e); public slots: void setValue(int val); signals: void valueChanged(int); void valueChanged(const QString &); public: %If (Qt_5_2_0 -) int displayIntegerBase() const; %End %If (Qt_5_2_0 -) void setDisplayIntegerBase(int base); %End private: QSpinBox(const QSpinBox &); }; class QDoubleSpinBox : QAbstractSpinBox { %TypeHeaderCode #include %End public: explicit QDoubleSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QDoubleSpinBox(); double value() const; QString prefix() const; void setPrefix(const QString &p); QString suffix() const; void setSuffix(const QString &s); QString cleanText() const; double singleStep() const; void setSingleStep(double val); double minimum() const; void setMinimum(double min); double maximum() const; void setMaximum(double max); void setRange(double min, double max); int decimals() const; void setDecimals(int prec); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual double valueFromText(const QString &text) const; virtual QString textFromValue(double v) const; virtual void fixup(QString &str /In,Out/) const; public slots: void setValue(double val); signals: void valueChanged(double); void valueChanged(const QString &); private: QDoubleSpinBox(const QDoubleSpinBox &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qsplashscreen.sip0000644000076500000240000000347712613140040021356 0ustar philstaff00000000000000// qsplashscreen.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSplashScreen : QWidget { %TypeHeaderCode #include %End public: QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flags = 0); QSplashScreen(QWidget *parent /TransferThis/, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flags = 0); virtual ~QSplashScreen(); void setPixmap(const QPixmap &pixmap); const QPixmap pixmap() const; void finish(QWidget *w); void repaint(); %If (Qt_5_2_0 -) QString message() const; %End public slots: void showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black); void clearMessage(); signals: void messageChanged(const QString &message); protected: virtual void drawContents(QPainter *painter); virtual bool event(QEvent *e); virtual void mousePressEvent(QMouseEvent *); private: QSplashScreen(const QSplashScreen &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qsplitter.sip0000644000076500000240000000656712613140040020535 0ustar philstaff00000000000000// qsplitter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSplitter : QFrame { %TypeHeaderCode #include %End public: explicit QSplitter(QWidget *parent /TransferThis/ = 0); QSplitter(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QSplitter(); void addWidget(QWidget *widget /Transfer/); void insertWidget(int index, QWidget *widget /Transfer/); void setOrientation(Qt::Orientation); Qt::Orientation orientation() const; void setChildrenCollapsible(bool); bool childrenCollapsible() const; void setCollapsible(int index, bool); bool isCollapsible(int index) const; void setOpaqueResize(bool opaque = true); bool opaqueResize() const; void refresh(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QList sizes() const; void setSizes(const QList &list); QByteArray saveState() const; bool restoreState(const QByteArray &state); int handleWidth() const; void setHandleWidth(int); int indexOf(QWidget *w) const; QWidget *widget(int index) const; int count() const /__len__/; void getRange(int index, int *, int *) const; QSplitterHandle *handle(int index) const /Transfer/; void setStretchFactor(int index, int stretch); signals: void splitterMoved(int pos, int index); protected: virtual QSplitterHandle *createHandle() /Transfer/; virtual void childEvent(QChildEvent *); virtual bool event(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void changeEvent(QEvent *); void moveSplitter(int pos, int index); void setRubberBand(int position); int closestLegalPosition(int, int); private: QSplitter(const QSplitter &); }; class QSplitterHandle : QWidget { %TypeHeaderCode #include %End public: QSplitterHandle(Qt::Orientation o, QSplitter *parent /TransferThis/); virtual ~QSplitterHandle(); void setOrientation(Qt::Orientation o); Qt::Orientation orientation() const; bool opaqueResize() const; QSplitter *splitter() const; virtual QSize sizeHint() const; protected: virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual bool event(QEvent *); void moveSplitter(int p); int closestLegalPosition(int p); virtual void resizeEvent(QResizeEvent *); private: QSplitterHandle(const QSplitterHandle &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qstackedlayout.sip0000644000076500000240000000723012613140040021527 0ustar philstaff00000000000000// qstackedlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStackedLayout : QLayout { %TypeHeaderCode #include %End public: enum StackingMode { StackOne, StackAll, }; QStackedLayout(); explicit QStackedLayout(QWidget *parent /TransferThis/); explicit QStackedLayout(QLayout *parentLayout /TransferThis/); virtual ~QStackedLayout(); int addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End int insertWidget(int index, QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->insertWidget(a0, a1); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a1Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows insertWidget(QWidget()). sipTransferTo(a1Wrapper, sipSelf); } %End QWidget *currentWidget() const; int currentIndex() const; QWidget *widget(int) const; virtual QWidget *widget(); virtual int count() const; virtual void addItem(QLayoutItem *item /Transfer/); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual void setGeometry(const QRect &rect); signals: void widgetRemoved(int index); void currentChanged(int index); public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *w); public: QStackedLayout::StackingMode stackingMode() const; void setStackingMode(QStackedLayout::StackingMode stackingMode); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int width) const; private: QStackedLayout(const QStackedLayout &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qstackedwidget.sip0000644000076500000240000000325612613140040021501 0ustar philstaff00000000000000// qstackedwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStackedWidget : QFrame { %TypeHeaderCode #include %End public: explicit QStackedWidget(QWidget *parent /TransferThis/ = 0); virtual ~QStackedWidget(); int addWidget(QWidget *w /Transfer/); int insertWidget(int index, QWidget *w /Transfer/); void removeWidget(QWidget *w); QWidget *currentWidget() const; int currentIndex() const; int indexOf(QWidget *) const; QWidget *widget(int) const; int count() const /__len__/; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *w); signals: void currentChanged(int); void widgetRemoved(int index); protected: virtual bool event(QEvent *e); private: QStackedWidget(const QStackedWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qstatusbar.sip0000644000076500000240000000372212613140040020665 0ustar philstaff00000000000000// qstatusbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStatusBar : QWidget { %TypeHeaderCode #include %End public: explicit QStatusBar(QWidget *parent /TransferThis/ = 0); virtual ~QStatusBar(); void addWidget(QWidget *widget /Transfer/, int stretch = 0); void addPermanentWidget(QWidget *widget /Transfer/, int stretch = 0); void removeWidget(QWidget *widget); void setSizeGripEnabled(bool); bool isSizeGripEnabled() const; QString currentMessage() const; int insertWidget(int index, QWidget *widget /Transfer/, int stretch = 0); int insertPermanentWidget(int index, QWidget *widget /Transfer/, int stretch = 0); public slots: void showMessage(const QString &message, int msecs = 0); void clearMessage(); signals: void messageChanged(const QString &text); protected: virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); void reformat(); void hideOrShow(); virtual bool event(QEvent *); virtual void showEvent(QShowEvent *); private: QStatusBar(const QStatusBar &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qstyle.sip0000644000076500000240000005331612613140040020021 0ustar philstaff00000000000000// qstyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyle : QObject { %TypeHeaderCode #include %End public: QStyle(); virtual ~QStyle(); virtual void polish(QWidget *); virtual void unpolish(QWidget *); virtual void polish(QApplication *); virtual void unpolish(QApplication *); virtual void polish(QPalette & /In,Out/); virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual void drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; virtual QPalette standardPalette() const; enum StateFlag { State_None, State_Enabled, State_Raised, State_Sunken, State_Off, State_NoChange, State_On, State_DownArrow, State_Horizontal, State_HasFocus, State_Top, State_Bottom, State_FocusAtBorder, State_AutoRaise, State_MouseOver, State_UpArrow, State_Selected, State_Active, State_Open, State_Children, State_Item, State_Sibling, State_Editing, State_KeyboardFocusChange, State_ReadOnly, State_Window, State_Small, State_Mini, }; typedef QFlags State; enum PrimitiveElement { PE_Frame, PE_FrameDefaultButton, PE_FrameDockWidget, PE_FrameFocusRect, PE_FrameGroupBox, PE_FrameLineEdit, PE_FrameMenu, PE_FrameStatusBar, PE_FrameTabWidget, PE_FrameWindow, PE_FrameButtonBevel, PE_FrameButtonTool, PE_FrameTabBarBase, PE_PanelButtonCommand, PE_PanelButtonBevel, PE_PanelButtonTool, PE_PanelMenuBar, PE_PanelToolBar, PE_PanelLineEdit, PE_IndicatorArrowDown, PE_IndicatorArrowLeft, PE_IndicatorArrowRight, PE_IndicatorArrowUp, PE_IndicatorBranch, PE_IndicatorButtonDropDown, PE_IndicatorViewItemCheck, PE_IndicatorCheckBox, PE_IndicatorDockWidgetResizeHandle, PE_IndicatorHeaderArrow, PE_IndicatorMenuCheckMark, PE_IndicatorProgressChunk, PE_IndicatorRadioButton, PE_IndicatorSpinDown, PE_IndicatorSpinMinus, PE_IndicatorSpinPlus, PE_IndicatorSpinUp, PE_IndicatorToolBarHandle, PE_IndicatorToolBarSeparator, PE_PanelTipLabel, PE_IndicatorTabTear, PE_PanelScrollAreaCorner, PE_Widget, PE_IndicatorColumnViewArrow, PE_FrameStatusBarItem, PE_IndicatorItemViewItemCheck, PE_IndicatorItemViewItemDrop, PE_PanelItemViewItem, PE_PanelItemViewRow, PE_PanelStatusBar, PE_IndicatorTabClose, PE_PanelMenu, PE_CustomBase, }; virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const = 0; enum ControlElement { CE_PushButton, CE_PushButtonBevel, CE_PushButtonLabel, CE_CheckBox, CE_CheckBoxLabel, CE_RadioButton, CE_RadioButtonLabel, CE_TabBarTab, CE_TabBarTabShape, CE_TabBarTabLabel, CE_ProgressBar, CE_ProgressBarGroove, CE_ProgressBarContents, CE_ProgressBarLabel, CE_MenuItem, CE_MenuScroller, CE_MenuVMargin, CE_MenuHMargin, CE_MenuTearoff, CE_MenuEmptyArea, CE_MenuBarItem, CE_MenuBarEmptyArea, CE_ToolButtonLabel, CE_Header, CE_HeaderSection, CE_HeaderLabel, CE_ToolBoxTab, CE_SizeGrip, CE_Splitter, CE_RubberBand, CE_DockWidgetTitle, CE_ScrollBarAddLine, CE_ScrollBarSubLine, CE_ScrollBarAddPage, CE_ScrollBarSubPage, CE_ScrollBarSlider, CE_ScrollBarFirst, CE_ScrollBarLast, CE_FocusFrame, CE_ComboBoxLabel, CE_ToolBar, CE_ToolBoxTabShape, CE_ToolBoxTabLabel, CE_HeaderEmptyArea, CE_ColumnViewGrip, CE_ItemViewItem, CE_ShapedFrame, CE_CustomBase, }; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const = 0; enum SubElement { SE_PushButtonContents, SE_PushButtonFocusRect, SE_CheckBoxIndicator, SE_CheckBoxContents, SE_CheckBoxFocusRect, SE_CheckBoxClickRect, SE_RadioButtonIndicator, SE_RadioButtonContents, SE_RadioButtonFocusRect, SE_RadioButtonClickRect, SE_ComboBoxFocusRect, SE_SliderFocusRect, SE_ProgressBarGroove, SE_ProgressBarContents, SE_ProgressBarLabel, SE_ToolBoxTabContents, SE_HeaderLabel, SE_HeaderArrow, SE_TabWidgetTabBar, SE_TabWidgetTabPane, SE_TabWidgetTabContents, SE_TabWidgetLeftCorner, SE_TabWidgetRightCorner, SE_ViewItemCheckIndicator, SE_TabBarTearIndicator, SE_TreeViewDisclosureItem, SE_LineEditContents, SE_FrameContents, SE_DockWidgetCloseButton, SE_DockWidgetFloatButton, SE_DockWidgetTitleBarText, SE_DockWidgetIcon, SE_CheckBoxLayoutItem, SE_ComboBoxLayoutItem, SE_DateTimeEditLayoutItem, SE_DialogButtonBoxLayoutItem, SE_LabelLayoutItem, SE_ProgressBarLayoutItem, SE_PushButtonLayoutItem, SE_RadioButtonLayoutItem, SE_SliderLayoutItem, SE_SpinBoxLayoutItem, SE_ToolButtonLayoutItem, SE_FrameLayoutItem, SE_GroupBoxLayoutItem, SE_TabWidgetLayoutItem, SE_ItemViewItemCheckIndicator, SE_ItemViewItemDecoration, SE_ItemViewItemText, SE_ItemViewItemFocusRect, SE_TabBarTabLeftButton, SE_TabBarTabRightButton, SE_TabBarTabText, SE_ShapedFrameContents, SE_ToolBarHandle, SE_CustomBase, }; virtual QRect subElementRect(QStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget = 0) const = 0; enum ComplexControl { CC_SpinBox, CC_ComboBox, CC_ScrollBar, CC_Slider, CC_ToolButton, CC_TitleBar, CC_Dial, CC_GroupBox, CC_MdiControls, CC_CustomBase, }; enum SubControl { SC_None, SC_ScrollBarAddLine, SC_ScrollBarSubLine, SC_ScrollBarAddPage, SC_ScrollBarSubPage, SC_ScrollBarFirst, SC_ScrollBarLast, SC_ScrollBarSlider, SC_ScrollBarGroove, SC_SpinBoxUp, SC_SpinBoxDown, SC_SpinBoxFrame, SC_SpinBoxEditField, SC_ComboBoxFrame, SC_ComboBoxEditField, SC_ComboBoxArrow, SC_ComboBoxListBoxPopup, SC_SliderGroove, SC_SliderHandle, SC_SliderTickmarks, SC_ToolButton, SC_ToolButtonMenu, SC_TitleBarSysMenu, SC_TitleBarMinButton, SC_TitleBarMaxButton, SC_TitleBarCloseButton, SC_TitleBarNormalButton, SC_TitleBarShadeButton, SC_TitleBarUnshadeButton, SC_TitleBarContextHelpButton, SC_TitleBarLabel, SC_DialGroove, SC_DialHandle, SC_DialTickmarks, SC_GroupBoxCheckBox, SC_GroupBoxLabel, SC_GroupBoxContents, SC_GroupBoxFrame, SC_MdiMinButton, SC_MdiNormalButton, SC_MdiCloseButton, SC_CustomBase, SC_All, }; typedef QFlags SubControls; virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget = 0) const = 0; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget = 0) const = 0; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget = 0) const = 0; enum PixelMetric { PM_ButtonMargin, PM_ButtonDefaultIndicator, PM_MenuButtonIndicator, PM_ButtonShiftHorizontal, PM_ButtonShiftVertical, PM_DefaultFrameWidth, PM_SpinBoxFrameWidth, PM_ComboBoxFrameWidth, PM_MaximumDragDistance, PM_ScrollBarExtent, PM_ScrollBarSliderMin, PM_SliderThickness, PM_SliderControlThickness, PM_SliderLength, PM_SliderTickmarkOffset, PM_SliderSpaceAvailable, PM_DockWidgetSeparatorExtent, PM_DockWidgetHandleExtent, PM_DockWidgetFrameWidth, PM_TabBarTabOverlap, PM_TabBarTabHSpace, PM_TabBarTabVSpace, PM_TabBarBaseHeight, PM_TabBarBaseOverlap, PM_ProgressBarChunkWidth, PM_SplitterWidth, PM_TitleBarHeight, PM_MenuScrollerHeight, PM_MenuHMargin, PM_MenuVMargin, PM_MenuPanelWidth, PM_MenuTearoffHeight, PM_MenuDesktopFrameWidth, PM_MenuBarPanelWidth, PM_MenuBarItemSpacing, PM_MenuBarVMargin, PM_MenuBarHMargin, PM_IndicatorWidth, PM_IndicatorHeight, PM_ExclusiveIndicatorWidth, PM_ExclusiveIndicatorHeight, PM_DialogButtonsSeparator, PM_DialogButtonsButtonWidth, PM_DialogButtonsButtonHeight, PM_MdiSubWindowFrameWidth, PM_MDIFrameWidth, PM_MdiSubWindowMinimizedWidth, PM_MDIMinimizedWidth, PM_HeaderMargin, PM_HeaderMarkSize, PM_HeaderGripMargin, PM_TabBarTabShiftHorizontal, PM_TabBarTabShiftVertical, PM_TabBarScrollButtonWidth, PM_ToolBarFrameWidth, PM_ToolBarHandleExtent, PM_ToolBarItemSpacing, PM_ToolBarItemMargin, PM_ToolBarSeparatorExtent, PM_ToolBarExtensionExtent, PM_SpinBoxSliderHeight, PM_DefaultTopLevelMargin, PM_DefaultChildMargin, PM_DefaultLayoutSpacing, PM_ToolBarIconSize, PM_ListViewIconSize, PM_IconViewIconSize, PM_SmallIconSize, PM_LargeIconSize, PM_FocusFrameVMargin, PM_FocusFrameHMargin, PM_ToolTipLabelFrameWidth, PM_CheckBoxLabelSpacing, PM_TabBarIconSize, PM_SizeGripSize, PM_DockWidgetTitleMargin, PM_MessageBoxIconSize, PM_ButtonIconSize, PM_DockWidgetTitleBarButtonMargin, PM_RadioButtonLabelSpacing, PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin, PM_LayoutBottomMargin, PM_LayoutHorizontalSpacing, PM_LayoutVerticalSpacing, PM_TabBar_ScrollButtonOverlap, PM_TextCursorWidth, PM_TabCloseIndicatorWidth, PM_TabCloseIndicatorHeight, PM_ScrollView_ScrollBarSpacing, PM_SubMenuOverlap, PM_ScrollView_ScrollBarOverlap, %If (Qt_5_4_0 -) PM_TreeViewIndentation, %End %If (Qt_5_5_0 -) PM_HeaderDefaultSectionSizeHorizontal, %End %If (Qt_5_5_0 -) PM_HeaderDefaultSectionSizeVertical, %End PM_CustomBase, }; virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; enum ContentsType { CT_PushButton, CT_CheckBox, CT_RadioButton, CT_ToolButton, CT_ComboBox, CT_Splitter, CT_ProgressBar, CT_MenuItem, CT_MenuBarItem, CT_MenuBar, CT_Menu, CT_TabBarTab, CT_Slider, CT_ScrollBar, CT_LineEdit, CT_SpinBox, CT_SizeGrip, CT_TabWidget, CT_DialogButtons, CT_HeaderSection, CT_GroupBox, CT_MdiControls, CT_ItemViewItem, CT_CustomBase, }; virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = 0) const = 0; enum StyleHint { SH_EtchDisabledText, SH_DitherDisabledText, SH_ScrollBar_MiddleClickAbsolutePosition, SH_ScrollBar_ScrollWhenPointerLeavesControl, SH_TabBar_SelectMouseType, SH_TabBar_Alignment, SH_Header_ArrowAlignment, SH_Slider_SnapToValue, SH_Slider_SloppyKeyEvents, SH_ProgressDialog_CenterCancelButton, SH_ProgressDialog_TextLabelAlignment, SH_PrintDialog_RightAlignButtons, SH_MainWindow_SpaceBelowMenuBar, SH_FontDialog_SelectAssociatedText, SH_Menu_AllowActiveAndDisabled, SH_Menu_SpaceActivatesItem, SH_Menu_SubMenuPopupDelay, SH_ScrollView_FrameOnlyAroundContents, SH_MenuBar_AltKeyNavigation, SH_ComboBox_ListMouseTracking, SH_Menu_MouseTracking, SH_MenuBar_MouseTracking, SH_ItemView_ChangeHighlightOnFocus, SH_Widget_ShareActivation, SH_Workspace_FillSpaceOnMaximize, SH_ComboBox_Popup, SH_TitleBar_NoBorder, SH_ScrollBar_StopMouseOverSlider, SH_BlinkCursorWhenTextSelected, SH_RichText_FullWidthSelection, SH_Menu_Scrollable, SH_GroupBox_TextLabelVerticalAlignment, SH_GroupBox_TextLabelColor, SH_Menu_SloppySubMenus, SH_Table_GridLineColor, SH_LineEdit_PasswordCharacter, SH_DialogButtons_DefaultButton, SH_ToolBox_SelectedPageTitleBold, SH_TabBar_PreferNoArrows, SH_ScrollBar_LeftClickAbsolutePosition, SH_UnderlineShortcut, SH_SpinBox_AnimateButton, SH_SpinBox_KeyPressAutoRepeatRate, SH_SpinBox_ClickAutoRepeatRate, SH_Menu_FillScreenWithScroll, SH_ToolTipLabel_Opacity, SH_DrawMenuBarSeparator, SH_TitleBar_ModifyNotification, SH_Button_FocusPolicy, SH_MessageBox_UseBorderForButtonSpacing, SH_TitleBar_AutoRaise, SH_ToolButton_PopupDelay, SH_FocusFrame_Mask, SH_RubberBand_Mask, SH_WindowFrame_Mask, SH_SpinControls_DisableOnBounds, SH_Dial_BackgroundRole, SH_ComboBox_LayoutDirection, SH_ItemView_EllipsisLocation, SH_ItemView_ShowDecorationSelected, SH_ItemView_ActivateItemOnSingleClick, SH_ScrollBar_ContextMenu, SH_ScrollBar_RollBetweenButtons, SH_Slider_StopMouseOverSlider, SH_Slider_AbsoluteSetButtons, SH_Slider_PageSetButtons, SH_Menu_KeyboardSearch, SH_TabBar_ElideMode, SH_DialogButtonLayout, SH_ComboBox_PopupFrameStyle, SH_MessageBox_TextInteractionFlags, SH_DialogButtonBox_ButtonsHaveIcons, SH_SpellCheckUnderlineStyle, SH_MessageBox_CenterButtons, SH_Menu_SelectionWrap, SH_ItemView_MovementWithoutUpdatingSelection, SH_ToolTip_Mask, SH_FocusFrame_AboveWidget, SH_TextControl_FocusIndicatorTextCharFormat, SH_WizardStyle, SH_ItemView_ArrowKeysNavigateIntoChildren, SH_Menu_Mask, SH_Menu_FlashTriggeredItem, SH_Menu_FadeOutOnHide, SH_SpinBox_ClickAutoRepeatThreshold, SH_ItemView_PaintAlternatingRowColorsForEmptyArea, SH_FormLayoutWrapPolicy, SH_TabWidget_DefaultTabPosition, SH_ToolBar_Movable, SH_FormLayoutFieldGrowthPolicy, SH_FormLayoutFormAlignment, SH_FormLayoutLabelAlignment, SH_ItemView_DrawDelegateFrame, SH_TabBar_CloseButtonPosition, SH_DockWidget_ButtonsHaveFrame, SH_ToolButtonStyle, SH_RequestSoftwareInputPanel, SH_ListViewExpand_SelectMouseType, SH_ScrollBar_Transient, %If (Qt_5_1_0 -) SH_Menu_SupportsSections, %End %If (Qt_5_2_0 -) SH_ToolTip_WakeUpDelay, %End %If (Qt_5_2_0 -) SH_ToolTip_FallAsleepDelay, %End %If (Qt_5_2_0 -) SH_Widget_Animate, %End %If (Qt_5_2_0 -) SH_Splitter_OpaqueResize, %End %If (Qt_5_4_0 -) SH_LineEdit_PasswordMaskDelay, %End %If (Qt_5_4_0 -) SH_TabBar_ChangeCurrentDelay, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuUniDirection, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuUniDirectionFailCount, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuSloppySelectOtherActions, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuSloppyCloseTimeout, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuResetWhenReenteringParent, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuDontStartSloppyOnLeave, %End SH_CustomBase, }; virtual int styleHint(QStyle::StyleHint stylehint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const = 0; enum StandardPixmap { SP_TitleBarMenuButton, SP_TitleBarMinButton, SP_TitleBarMaxButton, SP_TitleBarCloseButton, SP_TitleBarNormalButton, SP_TitleBarShadeButton, SP_TitleBarUnshadeButton, SP_TitleBarContextHelpButton, SP_DockWidgetCloseButton, SP_MessageBoxInformation, SP_MessageBoxWarning, SP_MessageBoxCritical, SP_MessageBoxQuestion, SP_DesktopIcon, SP_TrashIcon, SP_ComputerIcon, SP_DriveFDIcon, SP_DriveHDIcon, SP_DriveCDIcon, SP_DriveDVDIcon, SP_DriveNetIcon, SP_DirOpenIcon, SP_DirClosedIcon, SP_DirLinkIcon, SP_FileIcon, SP_FileLinkIcon, SP_ToolBarHorizontalExtensionButton, SP_ToolBarVerticalExtensionButton, SP_FileDialogStart, SP_FileDialogEnd, SP_FileDialogToParent, SP_FileDialogNewFolder, SP_FileDialogDetailedView, SP_FileDialogInfoView, SP_FileDialogContentsView, SP_FileDialogListView, SP_FileDialogBack, SP_DirIcon, SP_DialogOkButton, SP_DialogCancelButton, SP_DialogHelpButton, SP_DialogOpenButton, SP_DialogSaveButton, SP_DialogCloseButton, SP_DialogApplyButton, SP_DialogResetButton, SP_DialogDiscardButton, SP_DialogYesButton, SP_DialogNoButton, SP_ArrowUp, SP_ArrowDown, SP_ArrowLeft, SP_ArrowRight, SP_ArrowBack, SP_ArrowForward, SP_DirHomeIcon, SP_CommandLink, SP_VistaShield, SP_BrowserReload, SP_BrowserStop, SP_MediaPlay, SP_MediaStop, SP_MediaPause, SP_MediaSkipForward, SP_MediaSkipBackward, SP_MediaSeekForward, SP_MediaSeekBackward, SP_MediaVolume, SP_MediaVolumeMuted, SP_DirLinkOpenIcon, %If (Qt_5_2_0 -) SP_LineEditClearButton, %End SP_CustomBase, }; virtual QPixmap standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const = 0; static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect); static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos); static int sliderPositionFromValue(int min, int max, int logicalValue, int span, bool upsideDown = false); static int sliderValueFromPosition(int min, int max, int position, int span, bool upsideDown = false); static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment); static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle); virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; int combinedLayoutSpacing(QFlags controls1, QFlags controls2, Qt::Orientation orientation, QStyleOption *option = 0, QWidget *widget = 0) const; enum RequestSoftwareInputPanel { RSIP_OnMouseClickAndAlreadyFocused, RSIP_OnMouseClick, }; const QStyle *proxy() const; private: QStyle(const QStyle &); }; QFlags operator|(QStyle::StateFlag f1, QFlags f2); QFlags operator|(QStyle::SubControl f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qstyleditemdelegate.sip0000644000076500000240000000467212613140040022540 0ustar philstaff00000000000000// qstyleditemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyledItemDelegate : QAbstractItemDelegate { %TypeHeaderCode #include %End public: explicit QStyledItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QStyledItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; QItemEditorFactory *itemEditorFactory() const; void setItemEditorFactory(QItemEditorFactory *factory /KeepReference/); virtual QString displayText(const QVariant &value, const QLocale &locale) const; protected: virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const; virtual bool eventFilter(QObject *object, QEvent *event); virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); private: QStyledItemDelegate(const QStyledItemDelegate &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qstylefactory.sip0000644000076500000240000000214212613140040021400 0ustar philstaff00000000000000// qstylefactory.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleFactory { %TypeHeaderCode #include %End public: static QStringList keys(); static QStyle *create(const QString &) /Factory/; }; PyQt-gpl-5.5.1/sip/QtWidgets/qstyleoption.sip0000644000076500000240000004765512613140040021263 0ustar philstaff00000000000000// qstyleoption.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleOption { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type) { case QStyleOption::SO_Button: sipType = sipType_QStyleOptionButton; break; case QStyleOption::SO_ComboBox: sipType = sipType_QStyleOptionComboBox; break; case QStyleOption::SO_DockWidget: sipType = sipType_QStyleOptionDockWidget; break; case QStyleOption::SO_FocusRect: sipType = sipType_QStyleOptionFocusRect; break; case QStyleOption::SO_Frame: sipType = sipType_QStyleOptionFrame; break; case QStyleOption::SO_GraphicsItem: sipType = sipType_QStyleOptionGraphicsItem; break; case QStyleOption::SO_GroupBox: sipType = sipType_QStyleOptionGroupBox; break; case QStyleOption::SO_Header: sipType = sipType_QStyleOptionHeader; break; case QStyleOption::SO_MenuItem: sipType = sipType_QStyleOptionMenuItem; break; case QStyleOption::SO_ProgressBar: sipType = sipType_QStyleOptionProgressBar; break; case QStyleOption::SO_RubberBand: sipType = sipType_QStyleOptionRubberBand; break; case QStyleOption::SO_SizeGrip: sipType = sipType_QStyleOptionSizeGrip; break; case QStyleOption::SO_Slider: sipType = sipType_QStyleOptionSlider; break; case QStyleOption::SO_SpinBox: sipType = sipType_QStyleOptionSpinBox; break; case QStyleOption::SO_Tab: sipType = sipType_QStyleOptionTab; break; case QStyleOption::SO_TabBarBase: sipType = sipType_QStyleOptionTabBarBase; break; case QStyleOption::SO_TabWidgetFrame: sipType = sipType_QStyleOptionTabWidgetFrame; break; case QStyleOption::SO_TitleBar: sipType = sipType_QStyleOptionTitleBar; break; case QStyleOption::SO_ToolBar: sipType = sipType_QStyleOptionToolBar; break; case QStyleOption::SO_ToolBox: sipType = sipType_QStyleOptionToolBox; break; case QStyleOption::SO_ToolButton: sipType = sipType_QStyleOptionToolButton; break; case QStyleOption::SO_ViewItem: sipType = sipType_QStyleOptionViewItem; break; default: if ((sipCpp->type & QStyleOption::SO_ComplexCustomBase) == QStyleOption::SO_ComplexCustomBase) sipType = sipType_QStyleOptionComplex; else sipType = 0; } %End public: enum OptionType { SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem, SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame, SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_Complex, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox, SO_TitleBar, SO_GroupBox, SO_ComplexCustomBase, SO_GraphicsItem, SO_SizeGrip, SO_CustomBase, }; enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int version; int type; QFlags state; Qt::LayoutDirection direction; QRect rect; QFontMetrics fontMetrics; QPalette palette; QObject *styleObject; QStyleOption(int version = QStyleOption::Version, int type = SO_Default); QStyleOption(const QStyleOption &other); ~QStyleOption(); void initFrom(const QWidget *w); }; class QStyleOptionFocusRect : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QColor backgroundColor; QStyleOptionFocusRect(); QStyleOptionFocusRect(const QStyleOptionFocusRect &other); }; class QStyleOptionFrame : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum FrameFeature { None, Flat, Rounded, }; typedef QFlags FrameFeatures; QFlags features; QFrame::Shape frameShape; int lineWidth; int midLineWidth; QStyleOptionFrame(); QStyleOptionFrame(const QStyleOptionFrame &other); }; QFlags operator|(QStyleOptionFrame::FrameFeature f1, QFlags f2); class QStyleOptionTabWidgetFrame : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int lineWidth; int midLineWidth; QTabBar::Shape shape; QSize tabBarSize; QSize rightCornerWidgetSize; QSize leftCornerWidgetSize; QRect tabBarRect; QRect selectedTabRect; QStyleOptionTabWidgetFrame(); QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other); }; class QStyleOptionTabBarBase : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QTabBar::Shape shape; QRect tabBarRect; QRect selectedTabRect; bool documentMode; QStyleOptionTabBarBase(); QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other); }; class QStyleOptionHeader : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum SectionPosition { Beginning, Middle, End, OnlyOneSection, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, NextAndPreviousAreSelected, }; enum SortIndicator { None, SortUp, SortDown, }; int section; QString text; Qt::Alignment textAlignment; QIcon icon; Qt::Alignment iconAlignment; QStyleOptionHeader::SectionPosition position; QStyleOptionHeader::SelectedPosition selectedPosition; QStyleOptionHeader::SortIndicator sortIndicator; Qt::Orientation orientation; QStyleOptionHeader(); QStyleOptionHeader(const QStyleOptionHeader &other); }; class QStyleOptionButton : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ButtonFeature { None, Flat, HasMenu, DefaultButton, AutoDefaultButton, CommandLinkButton, }; typedef QFlags ButtonFeatures; QFlags features; QString text; QIcon icon; QSize iconSize; QStyleOptionButton(); QStyleOptionButton(const QStyleOptionButton &other); }; QFlags operator|(QStyleOptionButton::ButtonFeature f1, QFlags f2); class QStyleOptionTab : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum TabPosition { Beginning, Middle, End, OnlyOneTab, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, }; enum CornerWidget { NoCornerWidgets, LeftCornerWidget, RightCornerWidget, }; typedef QFlags CornerWidgets; QTabBar::Shape shape; QString text; QIcon icon; int row; QStyleOptionTab::TabPosition position; QStyleOptionTab::SelectedPosition selectedPosition; QFlags cornerWidgets; QSize iconSize; bool documentMode; QSize leftButtonSize; QSize rightButtonSize; enum TabFeature { None, HasFrame, }; typedef QFlags TabFeatures; QFlags features; QStyleOptionTab(); QStyleOptionTab(const QStyleOptionTab &other); }; QFlags operator|(QStyleOptionTab::CornerWidget f1, QFlags f2); class QStyleOptionProgressBar : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int minimum; int maximum; int progress; QString text; Qt::Alignment textAlignment; bool textVisible; Qt::Orientation orientation; bool invertedAppearance; bool bottomToTop; QStyleOptionProgressBar(); QStyleOptionProgressBar(const QStyleOptionProgressBar &other); }; class QStyleOptionMenuItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin, EmptyArea, }; enum CheckType { NotCheckable, Exclusive, NonExclusive, }; QStyleOptionMenuItem::MenuItemType menuItemType; QStyleOptionMenuItem::CheckType checkType; bool checked; bool menuHasCheckableItems; QRect menuRect; QString text; QIcon icon; int maxIconWidth; int tabWidth; QFont font; QStyleOptionMenuItem(); QStyleOptionMenuItem(const QStyleOptionMenuItem &other); }; class QStyleOptionDockWidget : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString title; bool closable; bool movable; bool floatable; bool verticalTitleBar; QStyleOptionDockWidget(); QStyleOptionDockWidget(const QStyleOptionDockWidget &other); }; class QStyleOptionViewItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum Position { Left, Right, Top, Bottom, }; Qt::Alignment displayAlignment; Qt::Alignment decorationAlignment; Qt::TextElideMode textElideMode; QStyleOptionViewItem::Position decorationPosition; QSize decorationSize; QFont font; bool showDecorationSelected; enum ViewItemFeature { None, WrapText, Alternate, HasCheckIndicator, HasDisplay, HasDecoration, }; typedef QFlags ViewItemFeatures; QFlags features; QLocale locale; const QWidget *widget; enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne, }; QModelIndex index; Qt::CheckState checkState; QIcon icon; QString text; QStyleOptionViewItem::ViewItemPosition viewItemPosition; QBrush backgroundBrush; QStyleOptionViewItem(); QStyleOptionViewItem(const QStyleOptionViewItem &other); }; QFlags operator|(QStyleOptionViewItem::ViewItemFeature f1, QFlags f2); class QStyleOptionToolBox : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString text; QIcon icon; enum TabPosition { Beginning, Middle, End, OnlyOneTab, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, }; QStyleOptionToolBox::TabPosition position; QStyleOptionToolBox::SelectedPosition selectedPosition; QStyleOptionToolBox(); QStyleOptionToolBox(const QStyleOptionToolBox &other); }; class QStyleOptionRubberBand : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QRubberBand::Shape shape; bool opaque; QStyleOptionRubberBand(); QStyleOptionRubberBand(const QStyleOptionRubberBand &other); }; class QStyleOptionComplex : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QFlags subControls; QFlags activeSubControls; QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex); QStyleOptionComplex(const QStyleOptionComplex &other); }; class QStyleOptionSlider : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; Qt::Orientation orientation; int minimum; int maximum; QSlider::TickPosition tickPosition; int tickInterval; bool upsideDown; int sliderPosition; int sliderValue; int singleStep; int pageStep; qreal notchTarget; bool dialWrapping; QStyleOptionSlider(); QStyleOptionSlider(const QStyleOptionSlider &other); }; class QStyleOptionSpinBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QAbstractSpinBox::ButtonSymbols buttonSymbols; QFlags stepEnabled; bool frame; QStyleOptionSpinBox(); QStyleOptionSpinBox(const QStyleOptionSpinBox &other); }; class QStyleOptionToolButton : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ToolButtonFeature { None, Arrow, Menu, PopupDelay, MenuButtonPopup, HasMenu, }; typedef QFlags ToolButtonFeatures; QFlags features; QIcon icon; QSize iconSize; QString text; Qt::ArrowType arrowType; Qt::ToolButtonStyle toolButtonStyle; QPoint pos; QFont font; QStyleOptionToolButton(); QStyleOptionToolButton(const QStyleOptionToolButton &other); }; QFlags operator|(QStyleOptionToolButton::ToolButtonFeature f1, QFlags f2); class QStyleOptionComboBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; bool editable; QRect popupRect; bool frame; QString currentText; QIcon currentIcon; QSize iconSize; QStyleOptionComboBox(); QStyleOptionComboBox(const QStyleOptionComboBox &other); }; class QStyleOptionTitleBar : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString text; QIcon icon; int titleBarState; Qt::WindowFlags titleBarFlags; QStyleOptionTitleBar(); QStyleOptionTitleBar(const QStyleOptionTitleBar &other); }; class QStyleHintReturn { %TypeHeaderCode #include %End public: enum HintReturnType { SH_Default, SH_Mask, SH_Variant, }; enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default); ~QStyleHintReturn(); int version; int type; }; class QStyleHintReturnMask : QStyleHintReturn { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturnMask(); ~QStyleHintReturnMask(); QRegion region; }; class QStyleOptionToolBar : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ToolBarPosition { Beginning, Middle, End, OnlyOne, }; enum ToolBarFeature { None, Movable, }; typedef QFlags ToolBarFeatures; QStyleOptionToolBar::ToolBarPosition positionOfLine; QStyleOptionToolBar::ToolBarPosition positionWithinLine; Qt::ToolBarArea toolBarArea; QFlags features; int lineWidth; int midLineWidth; QStyleOptionToolBar(); QStyleOptionToolBar(const QStyleOptionToolBar &other); }; QFlags operator|(QStyleOptionToolBar::ToolBarFeature f1, QFlags f2); class QStyleOptionGroupBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QFlags features; QString text; Qt::Alignment textAlignment; QColor textColor; int lineWidth; int midLineWidth; QStyleOptionGroupBox(); QStyleOptionGroupBox(const QStyleOptionGroupBox &other); }; class QStyleOptionSizeGrip : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; Qt::Corner corner; QStyleOptionSizeGrip(); QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other); }; class QStyleOptionGraphicsItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QRectF exposedRect; static qreal levelOfDetailFromTransform(const QTransform &worldTransform); QStyleOptionGraphicsItem(); QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other); }; class QStyleHintReturnVariant : QStyleHintReturn { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturnVariant(); ~QStyleHintReturnVariant(); QVariant variant; }; PyQt-gpl-5.5.1/sip/QtWidgets/qstylepainter.sip0000644000076500000240000000337012613140040021377 0ustar philstaff00000000000000// qstylepainter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStylePainter : QPainter { %TypeHeaderCode #include %End public: QStylePainter(); explicit QStylePainter(QWidget *w); QStylePainter(QPaintDevice *pd, QWidget *w); bool begin(QWidget *w); bool begin(QPaintDevice *pd, QWidget *w); QStyle *style() const; void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt); void drawControl(QStyle::ControlElement ce, const QStyleOption &opt); void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt); void drawItemText(const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole); void drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap); private: QStylePainter(const QStylePainter &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qsystemtrayicon.sip0000644000076500000240000000430712613140040021752 0ustar philstaff00000000000000// qsystemtrayicon.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSystemTrayIcon : QObject { %TypeHeaderCode #include %End public: enum ActivationReason { Unknown, Context, DoubleClick, Trigger, MiddleClick, }; enum MessageIcon { NoIcon, Information, Warning, Critical, }; QSystemTrayIcon(QObject *parent /TransferThis/ = 0); QSystemTrayIcon(const QIcon &icon, QObject *parent /TransferThis/ = 0); virtual ~QSystemTrayIcon(); void setContextMenu(QMenu *menu /KeepReference/); QMenu *contextMenu() const; QRect geometry() const; QIcon icon() const; void setIcon(const QIcon &icon); QString toolTip() const; void setToolTip(const QString &tip); static bool isSystemTrayAvailable(); static bool supportsMessages(); void showMessage(const QString &title, const QString &msg, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int msecs = 10000); bool isVisible() const; public slots: void hide(); void setVisible(bool visible); void show(); signals: void activated(QSystemTrayIcon::ActivationReason reason); void messageClicked(); protected: virtual bool event(QEvent *event); private: QSystemTrayIcon(const QSystemTrayIcon &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtabbar.sip0000644000076500000240000001177112613140040020113 0ustar philstaff00000000000000// qtabbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTabBar : QWidget { %TypeHeaderCode #include %End public: explicit QTabBar(QWidget *parent /TransferThis/ = 0); virtual ~QTabBar(); enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast, TriangularNorth, TriangularSouth, TriangularWest, TriangularEast, }; QTabBar::Shape shape() const; void setShape(QTabBar::Shape shape); int addTab(const QString &text); int addTab(const QIcon &icon, const QString &text); int insertTab(int index, const QString &text); int insertTab(int index, const QIcon &icon, const QString &text); void removeTab(int index); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &text); QColor tabTextColor(int index) const; void setTabTextColor(int index, const QColor &color); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; void setTabData(int index, const QVariant &data); QVariant tabData(int index) const; int tabAt(const QPoint &pos) const; QRect tabRect(int index) const; int currentIndex() const; int count() const /__len__/; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setDrawBase(bool drawTheBase); bool drawBase() const; QSize iconSize() const; void setIconSize(const QSize &size); Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode); void setUsesScrollButtons(bool useButtons); bool usesScrollButtons() const; public slots: void setCurrentIndex(int index); signals: void currentChanged(int index); protected: void initStyleOption(QStyleOptionTab *option, int tabIndex) const; virtual QSize tabSizeHint(int index) const; virtual void tabInserted(int index); virtual void tabRemoved(int index); virtual void tabLayoutChange(); virtual bool event(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void changeEvent(QEvent *); public: enum ButtonPosition { LeftSide, RightSide, }; enum SelectionBehavior { SelectLeftTab, SelectRightTab, SelectPreviousTab, }; void moveTab(int from, int to); bool tabsClosable() const; void setTabsClosable(bool closable); void setTabButton(int index, QTabBar::ButtonPosition position, QWidget *widget /Transfer/); QWidget *tabButton(int index, QTabBar::ButtonPosition position) const; QTabBar::SelectionBehavior selectionBehaviorOnRemove() const; void setSelectionBehaviorOnRemove(QTabBar::SelectionBehavior behavior); bool expanding() const; void setExpanding(bool enabled); bool isMovable() const; void setMovable(bool movable); bool documentMode() const; void setDocumentMode(bool set); signals: void tabCloseRequested(int index); void tabMoved(int from, int to); protected: virtual void hideEvent(QHideEvent *); virtual void wheelEvent(QWheelEvent *event); virtual QSize minimumTabSizeHint(int index) const; signals: %If (Qt_5_2_0 -) void tabBarClicked(int index); %End %If (Qt_5_2_0 -) void tabBarDoubleClicked(int index); %End public: %If (Qt_5_4_0 -) bool autoHide() const; %End %If (Qt_5_4_0 -) void setAutoHide(bool hide); %End %If (Qt_5_4_0 -) bool changeCurrentOnDrag() const; %End %If (Qt_5_4_0 -) void setChangeCurrentOnDrag(bool change); %End protected: %If (Qt_5_4_0 -) virtual void timerEvent(QTimerEvent *event); %End private: QTabBar(const QTabBar &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtableview.sip0000644000076500000240000001143512613140040020637 0ustar philstaff00000000000000// qtableview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTableView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QTableView(QWidget *parent /TransferThis/ = 0); virtual ~QTableView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QHeaderView *horizontalHeader() const; QHeaderView *verticalHeader() const; void setHorizontalHeader(QHeaderView *header /Transfer/); void setVerticalHeader(QHeaderView *header /Transfer/); int rowViewportPosition(int row) const; void setRowHeight(int row, int height); int rowHeight(int row) const; int rowAt(int y) const; int columnViewportPosition(int column) const; void setColumnWidth(int column, int width); int columnWidth(int column) const; int columnAt(int x) const; bool isRowHidden(int row) const; void setRowHidden(int row, bool hide); bool isColumnHidden(int column) const; void setColumnHidden(int column, bool hide); bool showGrid() const; void setShowGrid(bool show); Qt::PenStyle gridStyle() const; void setGridStyle(Qt::PenStyle style); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; public slots: void selectRow(int row); void selectColumn(int column); void hideRow(int row); void hideColumn(int column); void showRow(int row); void showColumn(int column); void resizeRowToContents(int row); void resizeRowsToContents(); void resizeColumnToContents(int column); void resizeColumnsToContents(); protected slots: void rowMoved(int row, int oldIndex, int newIndex); void columnMoved(int column, int oldIndex, int newIndex); void rowResized(int row, int oldHeight, int newHeight); void columnResized(int column, int oldWidth, int newWidth); void rowCountChanged(int oldCount, int newCount); void columnCountChanged(int oldCount, int newCount); protected: virtual void scrollContentsBy(int dx, int dy); virtual QStyleOptionViewItem viewOptions() const; virtual void paintEvent(QPaintEvent *e); virtual void timerEvent(QTimerEvent *event); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual void setSelection(const QRect &rect, QFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void updateGeometries(); virtual int sizeHintForRow(int row) const; virtual int sizeHintForColumn(int column) const; virtual void verticalScrollbarAction(int action); virtual void horizontalScrollbarAction(int action); virtual bool isIndexHidden(const QModelIndex &index) const; %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: void setSortingEnabled(bool enable); bool isSortingEnabled() const; void setSpan(int row, int column, int rowSpan, int columnSpan); int rowSpan(int row, int column) const; int columnSpan(int row, int column) const; void sortByColumn(int column, Qt::SortOrder order); void setWordWrap(bool on); bool wordWrap() const; void setCornerButtonEnabled(bool enable); bool isCornerButtonEnabled() const; void clearSpans(); protected: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); private: QTableView(const QTableView &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtablewidget.sip0000644000076500000240000002134212613140040021146 0ustar philstaff00000000000000// qtablewidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTableWidgetSelectionRange { %TypeHeaderCode #include %End public: QTableWidgetSelectionRange(); QTableWidgetSelectionRange(int top, int left, int bottom, int right); QTableWidgetSelectionRange(const QTableWidgetSelectionRange &other); ~QTableWidgetSelectionRange(); int topRow() const; int bottomRow() const; int leftColumn() const; int rightColumn() const; int rowCount() const; int columnCount() const; }; class QTableWidgetItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType { Type, UserType, }; explicit QTableWidgetItem(int type = Type); QTableWidgetItem(const QString &text, int type = Type); QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type); QTableWidgetItem(const QTableWidgetItem &other); virtual ~QTableWidgetItem(); virtual QTableWidgetItem *clone() const /Factory/; QTableWidget *tableWidget() const; Qt::ItemFlags flags() const; QString text() const; QIcon icon() const; QString statusTip() const; QString toolTip() const; QString whatsThis() const; QFont font() const; int textAlignment() const; void setTextAlignment(int alignment); Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); virtual QVariant data(int role) const; virtual void setData(int role, const QVariant &value); virtual bool operator<(const QTableWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(const QString &atext); void setIcon(const QIcon &aicon); void setStatusTip(const QString &astatusTip); void setToolTip(const QString &atoolTip); void setWhatsThis(const QString &awhatsThis); void setFont(const QFont &afont); QSize sizeHint() const; void setSizeHint(const QSize &size); QBrush background() const; void setBackground(const QBrush &brush); QBrush foreground() const; void setForeground(const QBrush &brush); int row() const; int column() const; void setSelected(bool aselect); bool isSelected() const; private: QTableWidgetItem &operator=(const QTableWidgetItem &); }; QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item /Constrained/) /ReleaseGIL/; class QTableWidget : QTableView { %TypeHeaderCode #include %End public: explicit QTableWidget(QWidget *parent /TransferThis/ = 0); QTableWidget(int rows, int columns, QWidget *parent /TransferThis/ = 0); virtual ~QTableWidget(); void setRowCount(int rows); int rowCount() const; void setColumnCount(int columns); int columnCount() const; int row(const QTableWidgetItem *item) const; int column(const QTableWidgetItem *item) const; QTableWidgetItem *item(int row, int column) const; void setItem(int row, int column, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeItem(int row, int column) /TransferBack/; QTableWidgetItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeVerticalHeaderItem(int row) /TransferBack/; QTableWidgetItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeHorizontalHeaderItem(int column) /TransferBack/; void setVerticalHeaderLabels(const QStringList &labels); void setHorizontalHeaderLabels(const QStringList &labels); int currentRow() const; int currentColumn() const; QTableWidgetItem *currentItem() const; void setCurrentItem(QTableWidgetItem *item); void setCurrentItem(QTableWidgetItem *item, QFlags command); void setCurrentCell(int row, int column); void setCurrentCell(int row, int column, QFlags command); void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder); void setSortingEnabled(bool enable); bool isSortingEnabled() const; void editItem(QTableWidgetItem *item); void openPersistentEditor(QTableWidgetItem *item); void closePersistentEditor(QTableWidgetItem *item); QWidget *cellWidget(int row, int column) const; void setCellWidget(int row, int column, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->cellWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setCellWidget(a0, a1, a2); Py_END_ALLOW_THREADS %End void removeCellWidget(int arow, int acolumn); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->cellWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeCellWidget(a0, a1); Py_END_ALLOW_THREADS %End void setRangeSelected(const QTableWidgetSelectionRange &range, bool select); QList selectedRanges() const; QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags) const; int visualRow(int logicalRow) const; int visualColumn(int logicalColumn) const; QTableWidgetItem *itemAt(const QPoint &p) const; QTableWidgetItem *itemAt(int ax, int ay) const; QRect visualItemRect(const QTableWidgetItem *item) const; const QTableWidgetItem *itemPrototype() const; void setItemPrototype(const QTableWidgetItem *item /Transfer/); public slots: void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); void insertRow(int row); void insertColumn(int column); void removeRow(int row); void removeColumn(int column); void clear(); void clearContents(); signals: void itemPressed(QTableWidgetItem *item); void itemClicked(QTableWidgetItem *item); void itemDoubleClicked(QTableWidgetItem *item); void itemActivated(QTableWidgetItem *item); void itemEntered(QTableWidgetItem *item); void itemChanged(QTableWidgetItem *item); void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous); void itemSelectionChanged(); void cellPressed(int row, int column); void cellClicked(int row, int column); void cellDoubleClicked(int row, int column); void cellActivated(int row, int column); void cellEntered(int row, int column); void cellChanged(int row, int column); void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList items) const /TransferBack/; virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; QList items(const QMimeData *data) const; QModelIndex indexFromItem(QTableWidgetItem *item) const; QTableWidgetItem *itemFromIndex(const QModelIndex &index) const; virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); private: virtual void setModel(QAbstractItemModel *model /KeepReference/); QTableWidget(const QTableWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtabwidget.sip0000644000076500000240000001025712613140040020630 0ustar philstaff00000000000000// qtabwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTabWidget : QWidget { %TypeHeaderCode #include %End public: explicit QTabWidget(QWidget *parent /TransferThis/ = 0); virtual ~QTabWidget(); void clear(); int addTab(QWidget *widget /Transfer/, const QString &); int addTab(QWidget *widget /Transfer/, const QIcon &icon, const QString &label); int insertTab(int index, QWidget *widget /Transfer/, const QString &); int insertTab(int index, QWidget *widget /Transfer/, const QIcon &icon, const QString &label); void removeTab(int index); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; int currentIndex() const; QWidget *currentWidget() const; QWidget *widget(int index) const; int indexOf(QWidget *widget) const; int count() const /__len__/; enum TabPosition { North, South, West, East, }; QTabWidget::TabPosition tabPosition() const; void setTabPosition(QTabWidget::TabPosition); enum TabShape { Rounded, Triangular, }; QTabWidget::TabShape tabShape() const; void setTabShape(QTabWidget::TabShape s); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setCornerWidget(QWidget *widget /Transfer/, Qt::Corner corner = Qt::TopRightCorner); QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); signals: void currentChanged(int index); protected: void initStyleOption(QStyleOptionTabWidgetFrame *option) const; virtual void tabInserted(int index); virtual void tabRemoved(int index); virtual bool event(QEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void paintEvent(QPaintEvent *); void setTabBar(QTabBar * /Transfer/); public: QTabBar *tabBar() const; protected: virtual void changeEvent(QEvent *); public: Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode); QSize iconSize() const; void setIconSize(const QSize &size); bool usesScrollButtons() const; void setUsesScrollButtons(bool useButtons); bool tabsClosable() const; void setTabsClosable(bool closeable); bool isMovable() const; void setMovable(bool movable); bool documentMode() const; void setDocumentMode(bool set); signals: void tabCloseRequested(int index); public: virtual int heightForWidth(int width) const; virtual bool hasHeightForWidth() const; signals: %If (Qt_5_2_0 -) void tabBarClicked(int index); %End %If (Qt_5_2_0 -) void tabBarDoubleClicked(int index); %End public: %If (Qt_5_4_0 -) bool tabBarAutoHide() const; %End %If (Qt_5_4_0 -) void setTabBarAutoHide(bool enabled); %End private: QTabWidget(const QTabWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtextbrowser.sip0000644000076500000240000000502612613140040021244 0ustar philstaff00000000000000// qtextbrowser.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextBrowser : QTextEdit { %TypeHeaderCode #include %End public: explicit QTextBrowser(QWidget *parent /TransferThis/ = 0); virtual ~QTextBrowser(); QUrl source() const; QStringList searchPaths() const; void setSearchPaths(const QStringList &paths); virtual QVariant loadResource(int type, const QUrl &name); public slots: virtual void setSource(const QUrl &name); virtual void backward(); virtual void forward(); virtual void home(); virtual void reload(); signals: void backwardAvailable(bool); void forwardAvailable(bool); void sourceChanged(const QUrl &); void highlighted(const QUrl &); void highlighted(const QString &); void anchorClicked(const QUrl &); protected: virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void focusOutEvent(QFocusEvent *ev); virtual bool focusNextPrevChild(bool next); virtual void paintEvent(QPaintEvent *e); public: bool isBackwardAvailable() const; bool isForwardAvailable() const; void clearHistory(); bool openExternalLinks() const; void setOpenExternalLinks(bool open); bool openLinks() const; void setOpenLinks(bool open); QString historyTitle(int) const; QUrl historyUrl(int) const; int backwardHistoryCount() const; int forwardHistoryCount() const; signals: void historyChanged(); private: QTextBrowser(const QTextBrowser &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtextedit.sip0000644000076500000240000001655012613140040020512 0ustar philstaff00000000000000// qtextedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextEdit : QAbstractScrollArea { %TypeHeaderCode #include %End public: struct ExtraSelection { %TypeHeaderCode #include %End QTextCursor cursor; QTextCharFormat format; }; enum LineWrapMode { NoWrap, WidgetWidth, FixedPixelWidth, FixedColumnWidth, }; enum AutoFormattingFlag { AutoNone, AutoBulletList, AutoAll, }; typedef QFlags AutoFormatting; explicit QTextEdit(QWidget *parent /TransferThis/ = 0); QTextEdit(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QTextEdit(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; bool isReadOnly() const; void setReadOnly(bool ro); qreal fontPointSize() const; QString fontFamily() const; int fontWeight() const; bool fontUnderline() const; bool fontItalic() const; QColor textColor() const; QFont currentFont() const; Qt::Alignment alignment() const; void mergeCurrentCharFormat(const QTextCharFormat &modifier); void setCurrentCharFormat(const QTextCharFormat &format); QTextCharFormat currentCharFormat() const; QFlags autoFormatting() const; void setAutoFormatting(QFlags features); bool tabChangesFocus() const; void setTabChangesFocus(bool b); void setDocumentTitle(const QString &title); QString documentTitle() const; bool isUndoRedoEnabled() const; void setUndoRedoEnabled(bool enable); QTextEdit::LineWrapMode lineWrapMode() const; void setLineWrapMode(QTextEdit::LineWrapMode mode); int lineWrapColumnOrWidth() const; void setLineWrapColumnOrWidth(int w); QTextOption::WrapMode wordWrapMode() const; void setWordWrapMode(QTextOption::WrapMode policy); bool find(const QString &exp, QFlags options = 0); QString toPlainText() const; QString toHtml() const; void append(const QString &text); void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); QMenu *createStandardContextMenu() /Factory/; QMenu *createStandardContextMenu(const QPoint &position) /Factory/; QTextCursor cursorForPosition(const QPoint &pos) const; QRect cursorRect(const QTextCursor &cursor) const; QRect cursorRect() const; QString anchorAt(const QPoint &pos) const; bool overwriteMode() const; void setOverwriteMode(bool overwrite); int tabStopWidth() const; void setTabStopWidth(int width); bool acceptRichText() const; void setAcceptRichText(bool accept); void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setCursorWidth(int width); int cursorWidth() const; void setExtraSelections(const QList &selections); QList extraSelections() const; bool canPaste() const; void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End %End public slots: void setFontPointSize(qreal s); void setFontFamily(const QString &fontFamily); void setFontWeight(int w); void setFontUnderline(bool b); void setFontItalic(bool b); void setText(const QString &text); void setTextColor(const QColor &c); void setCurrentFont(const QFont &f); void setAlignment(Qt::Alignment a); void setPlainText(const QString &text); void setHtml(const QString &text); void cut(); void copy(); void paste(); void clear(); void selectAll(); void insertPlainText(const QString &text); void insertHtml(const QString &text); void scrollToAnchor(const QString &name); void redo(); void undo(); void zoomIn(int range = 1); void zoomOut(int range = 1); signals: void textChanged(); void undoAvailable(bool b); void redoAvailable(bool b); void currentCharFormatChanged(const QTextCharFormat &format); void copyAvailable(bool b); void selectionChanged(); void cursorPositionChanged(); protected: virtual bool event(QEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual bool focusNextPrevChild(bool next); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void showEvent(QShowEvent *); virtual void changeEvent(QEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual QMimeData *createMimeDataFromSelection() const /Factory/; virtual bool canInsertFromMimeData(const QMimeData *source) const; virtual void insertFromMimeData(const QMimeData *source); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; protected: virtual void scrollContentsBy(int dx, int dy); public: QColor textBackgroundColor() const; public slots: void setTextBackgroundColor(const QColor &c); public: %If (Qt_5_2_0 -) void setPlaceholderText(const QString &placeholderText); %End %If (Qt_5_2_0 -) QString placeholderText() const; %End %If (Qt_5_3_0 -) bool find(const QRegExp &exp, QFlags options = 0); %End %If (Qt_5_3_0 -) QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; %End private: QTextEdit(const QTextEdit &); }; QFlags operator|(QTextEdit::AutoFormattingFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qtoolbar.sip0000644000076500000240000001024512613140040020315 0ustar philstaff00000000000000// qtoolbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolBar : QWidget { %TypeHeaderCode #include %End public: QToolBar(const QString &title, QWidget *parent /TransferThis/ = 0); explicit QToolBar(QWidget *parent /TransferThis/ = 0); virtual ~QToolBar(); void setMovable(bool movable); bool isMovable() const; void setAllowedAreas(Qt::ToolBarAreas areas); Qt::ToolBarAreas allowedAreas() const; bool isAreaAllowed(Qt::ToolBarArea area) const; void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void clear(); void addAction(QAction *action); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; QAction *addAction(const QString &text, SIP_PYOBJECT slot /DocType="slot"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /DocType="slot"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QAction *addSeparator() /Transfer/; QAction *insertSeparator(QAction *before) /Transfer/; QAction *addWidget(QWidget *widget /Transfer/) /Transfer/; QAction *insertWidget(QAction *before, QWidget *widget /Transfer/) /Transfer/; QRect actionGeometry(QAction *action) const; QAction *actionAt(const QPoint &p) const; QAction *actionAt(int ax, int ay) const; QAction *toggleViewAction() const; QSize iconSize() const; Qt::ToolButtonStyle toolButtonStyle() const; QWidget *widgetForAction(QAction *action) const; public slots: void setIconSize(const QSize &iconSize); void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); signals: void actionTriggered(QAction *action); void movableChanged(bool movable); void allowedAreasChanged(Qt::ToolBarAreas allowedAreas); void orientationChanged(Qt::Orientation orientation); void iconSizeChanged(const QSize &iconSize); void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); void topLevelChanged(bool topLevel); void visibilityChanged(bool visible); protected: void initStyleOption(QStyleOptionToolBar *option) const; virtual void actionEvent(QActionEvent *event); virtual void changeEvent(QEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); public: bool isFloatable() const; void setFloatable(bool floatable); bool isFloating() const; private: QToolBar(const QToolBar &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtoolbox.sip0000644000076500000240000000461112613140040020341 0ustar philstaff00000000000000// qtoolbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolBox : QFrame { %TypeHeaderCode #include %End public: QToolBox(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QToolBox(); int addItem(QWidget *item /Transfer/, const QString &text); int addItem(QWidget *item /Transfer/, const QIcon &iconSet, const QString &text); int insertItem(int index, QWidget *item /Transfer/, const QString &text); int insertItem(int index, QWidget *widget /Transfer/, const QIcon &icon, const QString &text); void removeItem(int index); void setItemEnabled(int index, bool enabled); bool isItemEnabled(int index) const; void setItemText(int index, const QString &text); QString itemText(int index) const; void setItemIcon(int index, const QIcon &icon); QIcon itemIcon(int index) const; void setItemToolTip(int index, const QString &toolTip); QString itemToolTip(int index) const; int currentIndex() const; QWidget *currentWidget() const; QWidget *widget(int index) const; int indexOf(QWidget *widget) const; int count() const /__len__/; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); signals: void currentChanged(int index); protected: virtual void itemInserted(int index); virtual void itemRemoved(int index); virtual bool event(QEvent *e); virtual void showEvent(QShowEvent *e); virtual void changeEvent(QEvent *); private: QToolBox(const QToolBox &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtoolbutton.sip0000644000076500000240000000474712613140040021076 0ustar philstaff00000000000000// qtoolbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolButton : QAbstractButton { %TypeHeaderCode #include %End public: enum ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup, }; explicit QToolButton(QWidget *parent /TransferThis/ = 0); virtual ~QToolButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; Qt::ToolButtonStyle toolButtonStyle() const; Qt::ArrowType arrowType() const; void setArrowType(Qt::ArrowType type); void setMenu(QMenu *menu /KeepReference/); QMenu *menu() const; void setPopupMode(QToolButton::ToolButtonPopupMode mode); QToolButton::ToolButtonPopupMode popupMode() const; QAction *defaultAction() const; void setAutoRaise(bool enable); bool autoRaise() const; public slots: void showMenu(); void setToolButtonStyle(Qt::ToolButtonStyle style); void setDefaultAction(QAction * /KeepReference/); signals: void triggered(QAction *); protected: void initStyleOption(QStyleOptionToolButton *option) const; virtual bool event(QEvent *e); virtual void mousePressEvent(QMouseEvent *); virtual void paintEvent(QPaintEvent *); virtual void actionEvent(QActionEvent *); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void timerEvent(QTimerEvent *); virtual void changeEvent(QEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void nextCheckState(); virtual bool hitButton(const QPoint &pos) const; private: QToolButton(const QToolButton &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtooltip.sip0000644000076500000240000000306212613140040020344 0ustar philstaff00000000000000// qtooltip.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolTip { %TypeHeaderCode #include %End QToolTip(); public: static void showText(const QPoint &pos, const QString &text, QWidget *widget = 0); static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect); %If (Qt_5_2_0 -) static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecShowTime); %End static QPalette palette(); static void hideText(); static void setPalette(const QPalette &); static QFont font(); static void setFont(const QFont &); static bool isVisible(); static QString text(); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtreeview.sip0000644000076500000240000001454712613140040020516 0ustar philstaff00000000000000// qtreeview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QTreeView(QWidget *parent /TransferThis/ = 0); virtual ~QTreeView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QHeaderView *header() const; void setHeader(QHeaderView *header /Transfer/); int indentation() const; void setIndentation(int i); bool rootIsDecorated() const; void setRootIsDecorated(bool show); bool uniformRowHeights() const; void setUniformRowHeights(bool uniform); bool itemsExpandable() const; void setItemsExpandable(bool enable); int columnViewportPosition(int column) const; int columnWidth(int column) const; int columnAt(int x) const; bool isColumnHidden(int column) const; void setColumnHidden(int column, bool hide); bool isRowHidden(int row, const QModelIndex &parent) const; void setRowHidden(int row, const QModelIndex &parent, bool hide); bool isExpanded(const QModelIndex &index) const; void setExpanded(const QModelIndex &index, bool expand); virtual void keyboardSearch(const QString &search); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; QModelIndex indexAbove(const QModelIndex &index) const; QModelIndex indexBelow(const QModelIndex &index) const; virtual void reset(); signals: void expanded(const QModelIndex &index); void collapsed(const QModelIndex &index); public: virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles /DocValue="[]"/ = QVector()); public slots: void hideColumn(int column); void showColumn(int column); void expand(const QModelIndex &index); void expandAll(); void collapse(const QModelIndex &index); void collapseAll(); void resizeColumnToContents(int column); virtual void selectAll(); protected slots: void columnResized(int column, int oldSize, int newSize); void columnCountChanged(int oldCount, int newCount); void columnMoved(); void reexpand(); void rowsRemoved(const QModelIndex &parent, int first, int last); protected: virtual void scrollContentsBy(int dx, int dy); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void setSelection(const QRect &rect, QFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void paintEvent(QPaintEvent *e); virtual void timerEvent(QTimerEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void drawRow(QPainter *painter, const QStyleOptionViewItem &options /NoCopy/, const QModelIndex &index) const; virtual void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const; void drawTree(QPainter *painter, const QRegion ®ion) const; virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void keyPressEvent(QKeyEvent *event); virtual void updateGeometries(); virtual int sizeHintForColumn(int column) const; int indexRowSizeHint(const QModelIndex &index) const; virtual void horizontalScrollbarAction(int action); virtual bool isIndexHidden(const QModelIndex &index) const; public: void setColumnWidth(int column, int width); void setSortingEnabled(bool enable); bool isSortingEnabled() const; void setAnimated(bool enable); bool isAnimated() const; void setAllColumnsShowFocus(bool enable); bool allColumnsShowFocus() const; void sortByColumn(int column, Qt::SortOrder order); int autoExpandDelay() const; void setAutoExpandDelay(int delay); bool isFirstColumnSpanned(int row, const QModelIndex &parent) const; void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span); void setWordWrap(bool on); bool wordWrap() const; public slots: void expandToDepth(int depth); protected: virtual void dragMoveEvent(QDragMoveEvent *event); virtual bool viewportEvent(QEvent *event); int rowHeight(const QModelIndex &index) const; virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); public: bool expandsOnDoubleClick() const; void setExpandsOnDoubleClick(bool enable); bool isHeaderHidden() const; void setHeaderHidden(bool hide); %If (Qt_5_2_0 -) void setTreePosition(int logicalIndex); %End %If (Qt_5_2_0 -) int treePosition() const; %End protected: %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: %If (Qt_5_4_0 -) void resetIndentation(); %End private: QTreeView(const QTreeView &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtreewidget.sip0000644000076500000240000002370412613140040021022 0ustar philstaff00000000000000// qtreewidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeWidgetItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType { Type, UserType, }; explicit QTreeWidgetItem(int type = Type); QTreeWidgetItem(const QStringList &strings, int type = Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, int type = Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, const QStringList &strings, int type = Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, QTreeWidgetItem *preceding, int type = Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, int type = Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, const QStringList &strings, int type = Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, QTreeWidgetItem *preceding, int type = Type); QTreeWidgetItem(const QTreeWidgetItem &other); virtual ~QTreeWidgetItem(); virtual QTreeWidgetItem *clone() const /Factory/; QTreeWidget *treeWidget() const; Qt::ItemFlags flags() const; QString text(int column) const; QIcon icon(int column) const; QString statusTip(int column) const; QString toolTip(int column) const; QString whatsThis(int column) const; QFont font(int column) const; int textAlignment(int column) const; void setTextAlignment(int column, int alignment); Qt::CheckState checkState(int column) const; void setCheckState(int column, Qt::CheckState state); virtual QVariant data(int column, int role) const; virtual void setData(int column, int role, const QVariant &value); virtual bool operator<(const QTreeWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; QTreeWidgetItem *parent() const; QTreeWidgetItem *child(int index) const; int childCount() const; int columnCount() const; void addChild(QTreeWidgetItem *child /Transfer/); void insertChild(int index, QTreeWidgetItem *child /Transfer/); QTreeWidgetItem *takeChild(int index) /TransferBack/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(int column, const QString &atext); void setIcon(int column, const QIcon &aicon); void setStatusTip(int column, const QString &astatusTip); void setToolTip(int column, const QString &atoolTip); void setWhatsThis(int column, const QString &awhatsThis); void setFont(int column, const QFont &afont); int indexOfChild(QTreeWidgetItem *achild) const; QSize sizeHint(int column) const; void setSizeHint(int column, const QSize &size); void addChildren(const QList &children /Transfer/); void insertChildren(int index, const QList &children /Transfer/); QList takeChildren() /TransferBack/; QBrush background(int column) const; void setBackground(int column, const QBrush &brush); QBrush foreground(int column) const; void setForeground(int column, const QBrush &brush); void sortChildren(int column, Qt::SortOrder order); void setSelected(bool aselect); bool isSelected() const; void setHidden(bool ahide); bool isHidden() const; void setExpanded(bool aexpand); bool isExpanded() const; enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless, }; void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy); QTreeWidgetItem::ChildIndicatorPolicy childIndicatorPolicy() const; void removeChild(QTreeWidgetItem *child /TransferBack/); void setFirstColumnSpanned(bool aspan); bool isFirstColumnSpanned() const; void setDisabled(bool disabled); bool isDisabled() const; protected: void emitDataChanged(); private: QTreeWidgetItem &operator=(const QTreeWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item /Constrained/) /ReleaseGIL/; class QTreeWidget : QTreeView { %TypeHeaderCode #include %End public: explicit QTreeWidget(QWidget *parent /TransferThis/ = 0); virtual ~QTreeWidget(); int columnCount() const; void setColumnCount(int columns); QTreeWidgetItem *topLevelItem(int index) const; int topLevelItemCount() const; void insertTopLevelItem(int index, QTreeWidgetItem *item /Transfer/); void addTopLevelItem(QTreeWidgetItem *item /Transfer/); QTreeWidgetItem *takeTopLevelItem(int index) /TransferBack/; int indexOfTopLevelItem(QTreeWidgetItem *item) const; void insertTopLevelItems(int index, const QList &items /Transfer/); void addTopLevelItems(const QList &items /Transfer/); QTreeWidgetItem *headerItem() const; void setHeaderItem(QTreeWidgetItem *item /Transfer/); void setHeaderLabels(const QStringList &labels); QTreeWidgetItem *currentItem() const; int currentColumn() const; void setCurrentItem(QTreeWidgetItem *item); void setCurrentItem(QTreeWidgetItem *item, int column); void setCurrentItem(QTreeWidgetItem *item, int column, QFlags command); QTreeWidgetItem *itemAt(const QPoint &p) const; QTreeWidgetItem *itemAt(int ax, int ay) const; QRect visualItemRect(const QTreeWidgetItem *item) const; int sortColumn() const; void sortItems(int column, Qt::SortOrder order); void editItem(QTreeWidgetItem *item, int column = 0); void openPersistentEditor(QTreeWidgetItem *item, int column = 0); void closePersistentEditor(QTreeWidgetItem *item, int column = 0); QWidget *itemWidget(QTreeWidgetItem *item, int column) const; void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. Note that I'm // not sure this is really necessary as it should get tidied up when Qt // destroys any current widget, except (possibly) when the widget wasn't // created from PyQt. See also removeItemWidget(), QListWidget and // QTableWidget. QWidget *w = sipCpp->itemWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setItemWidget(a0, a1, a2); Py_END_ALLOW_THREADS %End QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const; public slots: void scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); void expandItem(const QTreeWidgetItem *item); void collapseItem(const QTreeWidgetItem *item); void clear(); signals: void itemPressed(QTreeWidgetItem *item, int column); void itemClicked(QTreeWidgetItem *item, int column); void itemDoubleClicked(QTreeWidgetItem *item, int column); void itemActivated(QTreeWidgetItem *item, int column); void itemEntered(QTreeWidgetItem *item, int column); void itemChanged(QTreeWidgetItem *item, int column); void itemExpanded(QTreeWidgetItem *item); void itemCollapsed(QTreeWidgetItem *item); void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void itemSelectionChanged(); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList items) const /TransferBack/; virtual bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; QModelIndex indexFromItem(QTreeWidgetItem *item, int column = 0) const; QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const; virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); public: QTreeWidgetItem *invisibleRootItem() const /Transfer/; void setHeaderLabel(const QString &alabel); bool isFirstItemColumnSpanned(const QTreeWidgetItem *item) const; void setFirstItemColumnSpanned(const QTreeWidgetItem *item, bool span); QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const; QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const; void removeItemWidget(QTreeWidgetItem *item, int column); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeItemWidget(a0, a1); Py_END_ALLOW_THREADS %End virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); private: virtual void setModel(QAbstractItemModel *model /KeepReference/); QTreeWidget(const QTreeWidget &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qtreewidgetitemiterator.sip0000644000076500000240000000436512613140040023455 0ustar philstaff00000000000000// qtreewidgetitemiterator.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeWidgetItemIterator { %TypeHeaderCode #include %End public: enum IteratorFlag { All, Hidden, NotHidden, Selected, Unselected, Selectable, NotSelectable, DragEnabled, DragDisabled, DropEnabled, DropDisabled, HasChildren, NoChildren, Checked, NotChecked, Enabled, Disabled, Editable, NotEditable, UserFlag, }; typedef QFlags IteratorFlags; QTreeWidgetItemIterator(const QTreeWidgetItemIterator &it); QTreeWidgetItemIterator(QTreeWidget *widget, QFlags flags = All); QTreeWidgetItemIterator(QTreeWidgetItem *item, QFlags flags = All); ~QTreeWidgetItemIterator(); QTreeWidgetItem *value() const; %MethodCode // SIP doesn't support operator* so this is a thin wrapper around it. sipRes = sipCpp->operator*(); %End QTreeWidgetItemIterator &operator+=(int n); QTreeWidgetItemIterator &operator-=(int n); }; QFlags operator|(QTreeWidgetItemIterator::IteratorFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/QtWidgetsmod.sip0000644000076500000240000001210112613140040021076 0ustar philstaff00000000000000// QtWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWidgets, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractbutton.sip %Include qabstractitemdelegate.sip %Include qabstractitemview.sip %Include qabstractscrollarea.sip %Include qabstractslider.sip %Include qabstractspinbox.sip %Include qaction.sip %Include qactiongroup.sip %Include qapplication.sip %Include qboxlayout.sip %Include qbuttongroup.sip %Include qcalendarwidget.sip %Include qcheckbox.sip %Include qcolordialog.sip %Include qcolumnview.sip %Include qcombobox.sip %Include qcommandlinkbutton.sip %Include qcommonstyle.sip %Include qcompleter.sip %Include qdatawidgetmapper.sip %Include qdatetimeedit.sip %Include qdesktopwidget.sip %Include qdial.sip %Include qdialog.sip %Include qdialogbuttonbox.sip %Include qdirmodel.sip %Include qdockwidget.sip %Include qdrawutil.sip %Include qerrormessage.sip %Include qfiledialog.sip %Include qfileiconprovider.sip %Include qfilesystemmodel.sip %Include qfocusframe.sip %Include qfontcombobox.sip %Include qfontdialog.sip %Include qformlayout.sip %Include qframe.sip %Include qgesture.sip %Include qgesturerecognizer.sip %Include qgraphicsanchorlayout.sip %Include qgraphicseffect.sip %Include qgraphicsgridlayout.sip %Include qgraphicsitem.sip %Include qgraphicslayout.sip %Include qgraphicslayoutitem.sip %Include qgraphicslinearlayout.sip %Include qgraphicsproxywidget.sip %Include qgraphicsscene.sip %Include qgraphicssceneevent.sip %Include qgraphicstransform.sip %Include qgraphicsview.sip %Include qgraphicswidget.sip %Include qgridlayout.sip %Include qgroupbox.sip %Include qheaderview.sip %Include qinputdialog.sip %Include qitemdelegate.sip %Include qitemeditorfactory.sip %Include qkeyeventtransition.sip %Include qkeysequenceedit.sip %Include qlabel.sip %Include qlayout.sip %Include qlayoutitem.sip %Include qlcdnumber.sip %Include qlineedit.sip %Include qlistview.sip %Include qlistwidget.sip %Include qmainwindow.sip %Include qmdiarea.sip %Include qmdisubwindow.sip %Include qmenu.sip %Include qmenubar.sip %Include qmessagebox.sip %Include qmouseeventtransition.sip %Include qopenglwidget.sip %Include qplaintextedit.sip %Include qprogressbar.sip %Include qprogressdialog.sip %Include qproxystyle.sip %Include qpushbutton.sip %Include qradiobutton.sip %Include qrubberband.sip %Include qscrollarea.sip %Include qscrollbar.sip %Include qscroller.sip %Include qscrollerproperties.sip %Include qshortcut.sip %Include qsizegrip.sip %Include qsizepolicy.sip %Include qslider.sip %Include qspinbox.sip %Include qsplashscreen.sip %Include qsplitter.sip %Include qstackedlayout.sip %Include qstackedwidget.sip %Include qstatusbar.sip %Include qstyle.sip %Include qstyleditemdelegate.sip %Include qstylefactory.sip %Include qstyleoption.sip %Include qstylepainter.sip %Include qsystemtrayicon.sip %Include qtabbar.sip %Include qtableview.sip %Include qtablewidget.sip %Include qtabwidget.sip %Include qtextbrowser.sip %Include qtextedit.sip %Include qtoolbar.sip %Include qtoolbox.sip %Include qtoolbutton.sip %Include qtooltip.sip %Include qtreeview.sip %Include qtreewidget.sip %Include qtreewidgetitemiterator.sip %Include qundogroup.sip %Include qundostack.sip %Include qundoview.sip %Include qwhatsthis.sip %Include qwidget.sip %Include qwidgetaction.sip %Include qwizard.sip %Include qmaccocoaviewcontainer.sip %Include qpywidgets_qlist.sip PyQt-gpl-5.5.1/sip/QtWidgets/qundogroup.sip0000644000076500000240000000411312613140040020672 0ustar philstaff00000000000000// qundogroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoGroup : QObject { %TypeHeaderCode #include %End public: explicit QUndoGroup(QObject *parent /TransferThis/ = 0); virtual ~QUndoGroup(); void addStack(QUndoStack *stack); void removeStack(QUndoStack *stack); QList stacks() const; QUndoStack *activeStack() const; QAction *createRedoAction(QObject *parent /TransferThis/, const QString &prefix /DocValue="''"/ = QString()) const /Factory/; QAction *createUndoAction(QObject *parent /TransferThis/, const QString &prefix /DocValue="''"/ = QString()) const /Factory/; bool canUndo() const; bool canRedo() const; QString undoText() const; QString redoText() const; bool isClean() const; public slots: void redo(); void setActiveStack(QUndoStack *stack); void undo(); signals: void activeStackChanged(QUndoStack *stack); void canRedoChanged(bool canRedo); void canUndoChanged(bool canUndo); void cleanChanged(bool clean); void indexChanged(int idx); void redoTextChanged(const QString &redoText); void undoTextChanged(const QString &undoText); private: QUndoGroup(const QUndoGroup &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qundostack.sip0000644000076500000240000000565712613140040020661 0ustar philstaff00000000000000// qundostack.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoCommand /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QUndoCommand(QUndoCommand *parent /TransferThis/ = 0); QUndoCommand(const QString &text, QUndoCommand *parent /TransferThis/ = 0); virtual ~QUndoCommand(); virtual int id() const; virtual bool mergeWith(const QUndoCommand *other); virtual void redo(); void setText(const QString &text); QString text() const; virtual void undo(); int childCount() const; const QUndoCommand *child(int index) const; QString actionText() const; private: QUndoCommand(const QUndoCommand &); }; class QUndoStack : QObject { %TypeHeaderCode #include %End public: explicit QUndoStack(QObject *parent /TransferThis/ = 0); virtual ~QUndoStack(); void clear(); void push(QUndoCommand *cmd /Transfer/); bool canUndo() const; bool canRedo() const; QString undoText() const; QString redoText() const; int count() const /__len__/; int index() const; QString text(int idx) const; QAction *createUndoAction(QObject *parent /TransferThis/, const QString &prefix /DocValue="''"/ = QString()) const /Factory/; QAction *createRedoAction(QObject *parent /TransferThis/, const QString &prefix /DocValue="''"/ = QString()) const /Factory/; bool isActive() const; bool isClean() const; int cleanIndex() const; void beginMacro(const QString &text); void endMacro(); public slots: void redo(); void setActive(bool active = true); void setClean(); void setIndex(int idx); void undo(); signals: void canRedoChanged(bool canRedo); void canUndoChanged(bool canUndo); void cleanChanged(bool clean); void indexChanged(int idx); void redoTextChanged(const QString &redoText); void undoTextChanged(const QString &undoText); public: void setUndoLimit(int limit); int undoLimit() const; const QUndoCommand *command(int index) const; private: QUndoStack(const QUndoStack &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qundoview.sip0000644000076500000240000000307512613140040020516 0ustar philstaff00000000000000// qundoview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoView : QListView { %TypeHeaderCode #include %End public: explicit QUndoView(QWidget *parent /TransferThis/ = 0); QUndoView(QUndoStack *stack, QWidget *parent /TransferThis/ = 0); QUndoView(QUndoGroup *group, QWidget *parent /TransferThis/ = 0); virtual ~QUndoView(); QUndoStack *stack() const; QUndoGroup *group() const; void setEmptyLabel(const QString &label); QString emptyLabel() const; void setCleanIcon(const QIcon &icon); QIcon cleanIcon() const; public slots: void setStack(QUndoStack *stack /KeepReference/); void setGroup(QUndoGroup *group /KeepReference/); }; PyQt-gpl-5.5.1/sip/QtWidgets/qwhatsthis.sip0000644000076500000240000000251112613140040020666 0ustar philstaff00000000000000// qwhatsthis.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWhatsThis { %TypeHeaderCode #include %End QWhatsThis(); public: static void enterWhatsThisMode(); static bool inWhatsThisMode(); static void leaveWhatsThisMode(); static void showText(const QPoint &pos, const QString &text, QWidget *widget = 0); static void hideText(); static QAction *createAction(QObject *parent /TransferThis/ = 0) /Factory/; }; PyQt-gpl-5.5.1/sip/QtWidgets/qwidget.sip0000644000076500000240000003536212613140040020145 0ustar philstaff00000000000000// qwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. const int QWIDGETSIZE_MAX; class QWidget : QObject, QPaintDevice { %TypeHeaderCode #include %End %TypeCode // Transfer the ownership of a single widget to a parent. static void qtgui_TransferWidget(QWidget *w, PyObject *py_parent) { PyObject *py_w = sipGetPyObject(w, sipType_QWidget); if (py_w) sipTransferTo(py_w, py_parent); } // Transfer ownership of all widgets in a layout to their new parent. static void qtwidgets_TransferLayoutWidgets(QLayout *lay, PyObject *pw) { int n = lay->count(); for (int i = 0; i < n; ++i) { QLayoutItem *item = lay->itemAt(i); QWidget *w = item->widget(); if (w) { qtgui_TransferWidget(w, pw); } else { QLayout *l = item->layout(); if (l) qtwidgets_TransferLayoutWidgets(l, pw); } } QWidget *mb = lay->menuBar(); if (mb) qtgui_TransferWidget(mb, pw); } %End public: QWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QWidget(); virtual int devType() const; QStyle *style() const; void setStyle(QStyle * /KeepReference/); bool isEnabledTo(const QWidget *) const; public slots: void setEnabled(bool); void setDisabled(bool); void setWindowModified(bool); public: QRect frameGeometry() const; QRect normalGeometry() const; int x() const; int y() const; QPoint pos() const; QSize frameSize() const; QRect childrenRect() const; QRegion childrenRegion() const; QSize minimumSize() const; QSize maximumSize() const; void setMinimumSize(int minw, int minh); void setMaximumSize(int maxw, int maxh); void setMinimumWidth(int minw); void setMinimumHeight(int minh); void setMaximumWidth(int maxw); void setMaximumHeight(int maxh); QSize sizeIncrement() const; void setSizeIncrement(int w, int h); QSize baseSize() const; void setBaseSize(int basew, int baseh); void setFixedSize(const QSize &); void setFixedSize(int w, int h); void setFixedWidth(int w); void setFixedHeight(int h); QPoint mapToGlobal(const QPoint &) const; QPoint mapFromGlobal(const QPoint &) const; QPoint mapToParent(const QPoint &) const; QPoint mapFromParent(const QPoint &) const; QPoint mapTo(const QWidget *, const QPoint &) const; QPoint mapFrom(const QWidget *, const QPoint &) const; QWidget *window() const; const QPalette &palette() const; void setPalette(const QPalette &); void setBackgroundRole(QPalette::ColorRole); QPalette::ColorRole backgroundRole() const; void setForegroundRole(QPalette::ColorRole); QPalette::ColorRole foregroundRole() const; void setFont(const QFont &); QCursor cursor() const; void setCursor(const QCursor &); void unsetCursor(); void setMask(const QBitmap &); void setMask(const QRegion &); QRegion mask() const; void clearMask(); void setWindowTitle(const QString &); QString windowTitle() const; void setWindowIcon(const QIcon &icon); QIcon windowIcon() const; void setWindowIconText(const QString &); QString windowIconText() const; void setWindowRole(const QString &); QString windowRole() const; void setWindowOpacity(qreal level); qreal windowOpacity() const; bool isWindowModified() const; void setToolTip(const QString &); QString toolTip() const; void setStatusTip(const QString &); QString statusTip() const; void setWhatsThis(const QString &); QString whatsThis() const; %If (PyQt_Accessibility) QString accessibleName() const; %End %If (PyQt_Accessibility) void setAccessibleName(const QString &name); %End %If (PyQt_Accessibility) QString accessibleDescription() const; %End %If (PyQt_Accessibility) void setAccessibleDescription(const QString &description); %End void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void unsetLayoutDirection(); bool isRightToLeft() const; bool isLeftToRight() const; public slots: void setFocus(); public: bool isActiveWindow() const; void activateWindow(); void clearFocus(); void setFocus(Qt::FocusReason reason); Qt::FocusPolicy focusPolicy() const; void setFocusPolicy(Qt::FocusPolicy policy); bool hasFocus() const; static void setTabOrder(QWidget *, QWidget *); void setFocusProxy(QWidget * /KeepReference/); QWidget *focusProxy() const; Qt::ContextMenuPolicy contextMenuPolicy() const; void setContextMenuPolicy(Qt::ContextMenuPolicy policy); void grabMouse(); void grabMouse(const QCursor &); void releaseMouse(); void grabKeyboard(); void releaseKeyboard(); int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut); void releaseShortcut(int id); void setShortcutEnabled(int id, bool enabled = true); static QWidget *mouseGrabber(); static QWidget *keyboardGrabber(); void setUpdatesEnabled(bool enable); public slots: void update(); void repaint(); public: void update(const QRect &); void update(const QRegion &); void repaint(int x, int y, int w, int h); void repaint(const QRect &); void repaint(const QRegion &); public slots: virtual void setVisible(bool visible); void setHidden(bool hidden); void show(); void hide(); void showMinimized(); void showMaximized(); void showFullScreen(); void showNormal(); bool close(); void raise() /PyName=raise_/; void lower(); public: void stackUnder(QWidget *); void move(const QPoint &); void resize(const QSize &); void setGeometry(const QRect &); void adjustSize(); bool isVisibleTo(const QWidget *) const; bool isMinimized() const; bool isMaximized() const; bool isFullScreen() const; Qt::WindowStates windowState() const; void setWindowState(Qt::WindowStates state); void overrideWindowState(Qt::WindowStates state); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QSizePolicy sizePolicy() const; void setSizePolicy(QSizePolicy); virtual int heightForWidth(int) const; QRegion visibleRegion() const; void setContentsMargins(int left, int top, int right, int bottom); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QRect contentsRect() const; QLayout *layout() const; void setLayout(QLayout * /Transfer/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setLayout(a0); Py_END_ALLOW_THREADS // Internally Qt has reparented all of the widgets in the layout, so we need // to update the ownership hierachy. qtwidgets_TransferLayoutWidgets(a0, sipSelf); %End void updateGeometry(); void setParent(QWidget *parent /TransferThis/); void setParent(QWidget *parent /TransferThis/, Qt::WindowFlags f); void scroll(int dx, int dy); void scroll(int dx, int dy, const QRect &); QWidget *focusWidget() const; QWidget *nextInFocusChain() const; bool acceptDrops() const; void setAcceptDrops(bool on); void addAction(QAction *action); void addActions(QList actions); void insertAction(QAction *before, QAction *action); void insertActions(QAction *before, QList actions); void removeAction(QAction *action); QList actions() const; void setWindowFlags(Qt::WindowFlags type); void overrideWindowFlags(Qt::WindowFlags type); static QWidget *find(WId); QWidget *childAt(const QPoint &p) const; void setAttribute(Qt::WidgetAttribute attribute, bool on = true); virtual QPaintEngine *paintEngine() const; void ensurePolished() const; bool isAncestorOf(const QWidget *child) const; signals: void customContextMenuRequested(const QPoint &pos); protected: virtual bool event(QEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void paintEvent(QPaintEvent *); virtual void moveEvent(QMoveEvent *); virtual void resizeEvent(QResizeEvent *); virtual void closeEvent(QCloseEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void tabletEvent(QTabletEvent *); virtual void actionEvent(QActionEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void changeEvent(QEvent *); virtual int metric(QPaintDevice::PaintDeviceMetric) const; virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; protected: void updateMicroFocus(); void create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true); void destroy(bool destroyWindow = true, bool destroySubWindows = true); virtual bool focusNextPrevChild(bool next); bool focusNextChild(); bool focusPreviousChild(); public: QWidget *childAt(int ax, int ay) const; Qt::WindowType windowType() const; Qt::WindowFlags windowFlags() const; WId winId() const; bool isWindow() const; bool isEnabled() const; bool isModal() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; void setMinimumSize(const QSize &s); void setMaximumSize(const QSize &s); void setSizeIncrement(const QSize &s); void setBaseSize(const QSize &s); const QFont &font() const; QFontMetrics fontMetrics() const; QFontInfo fontInfo() const; void setMouseTracking(bool enable); bool hasMouseTracking() const; bool underMouse() const; bool updatesEnabled() const; void update(int ax, int ay, int aw, int ah); bool isVisible() const; bool isHidden() const; void move(int ax, int ay); void resize(int w, int h); void setGeometry(int ax, int ay, int aw, int ah); QRect rect() const; const QRect &geometry() const; QSize size() const; int width() const; int height() const; QWidget *parentWidget() const; void setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver); bool testAttribute(Qt::WidgetAttribute attribute) const; Qt::WindowModality windowModality() const; void setWindowModality(Qt::WindowModality windowModality); bool autoFillBackground() const; void setAutoFillBackground(bool enabled); void setStyleSheet(const QString &styleSheet); QString styleSheet() const; void setShortcutAutoRepeat(int id, bool enabled = true); QByteArray saveGeometry() const; bool restoreGeometry(const QByteArray &geometry); enum RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask, }; typedef QFlags RenderFlags; void render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QFlags flags = QWidget::DrawWindowBackground|QWidget::DrawChildren); void render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QFlags flags = QWidget::DrawWindowBackground|QWidget::DrawChildren); void setLocale(const QLocale &locale); QLocale locale() const; void unsetLocale(); WId effectiveWinId() const; QWidget *nativeParentWidget() const; void setWindowFilePath(const QString &filePath); QString windowFilePath() const; QGraphicsProxyWidget *graphicsProxyWidget() const; QGraphicsEffect *graphicsEffect() const; void setGraphicsEffect(QGraphicsEffect *effect /Transfer/); void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags(0)); void ungrabGesture(Qt::GestureType type); void setContentsMargins(const QMargins &margins); QMargins contentsMargins() const; QWidget *previousInFocusChain() const; Qt::InputMethodHints inputMethodHints() const; void setInputMethodHints(Qt::InputMethodHints hints); virtual bool hasHeightForWidth() const; QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1))); %If (Qt_5_1_0 -) static SIP_PYOBJECT createWindowContainer(QWindow *window /GetWrapper/, QWidget *parent /GetWrapper/ = 0, Qt::WindowFlags flags = 0) /DocType="QWidget",Factory/; %MethodCode // Ownersip issues are complicated so we handle them explicitly. QWidget *w = QWidget::createWindowContainer(a0, a1, *a2); sipRes = sipConvertFromNewType(w, sipType_QWidget, a1Wrapper); if (sipRes) sipTransferTo(a0Wrapper, sipRes); %End %End QWindow *windowHandle() const; protected: virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result); virtual QPainter *sharedPainter() const; virtual void initPainter(QPainter *painter) const; public: %If (Qt_5_2_0 -) void setToolTipDuration(int msec); %End %If (Qt_5_2_0 -) int toolTipDuration() const; %End signals: %If (Qt_5_2_0 -) void windowTitleChanged(const QString &title); %End %If (Qt_5_2_0 -) void windowIconChanged(const QIcon &icon); %End %If (Qt_5_2_0 -) void windowIconTextChanged(const QString &iconText); %End private: QWidget(const QWidget &); }; QFlags operator|(QWidget::RenderFlag f1, QFlags f2); PyQt-gpl-5.5.1/sip/QtWidgets/qwidgetaction.sip0000644000076500000240000000321612613140040021334 0ustar philstaff00000000000000// qwidgetaction.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWidgetAction : QAction { %TypeHeaderCode #include %End public: explicit QWidgetAction(QObject *parent /TransferThis/); virtual ~QWidgetAction(); void setDefaultWidget(QWidget *w /Transfer/); QWidget *defaultWidget() const; QWidget *requestWidget(QWidget *parent /TransferThis/) /Factory/; void releaseWidget(QWidget *widget /TransferBack/); protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual QWidget *createWidget(QWidget *parent /TransferThis/) /Factory/; virtual void deleteWidget(QWidget *widget /Transfer/); QList createdWidgets() const; private: QWidgetAction(const QWidgetAction &); }; PyQt-gpl-5.5.1/sip/QtWidgets/qwizard.sip0000644000076500000240000001731512613140040020160 0ustar philstaff00000000000000// qwizard.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWizard : QDialog { %TypeHeaderCode #include %End public: enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, HelpButton, CustomButton1, CustomButton2, CustomButton3, Stretch, }; enum WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap, }; enum WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle, }; enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, NoBackButtonOnLastPage, DisabledBackButtonOnLastPage, HaveNextButtonOnLastPage, HaveFinishButtonOnEarlyPages, NoCancelButton, CancelButtonOnLeft, HaveHelpButton, HelpButtonOnRight, HaveCustomButton1, HaveCustomButton2, HaveCustomButton3, %If (Qt_5_3_0 -) NoCancelButtonOnLastPage, %End }; typedef QFlags WizardOptions; QWizard(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QWizard(); int addPage(QWizardPage *page /Transfer/); void setPage(int id, QWizardPage *page /Transfer/); QWizardPage *page(int id) const; bool hasVisitedPage(int id) const; QList visitedPages() const; void setStartId(int id); int startId() const; QWizardPage *currentPage() const; int currentId() const; virtual bool validateCurrentPage(); virtual int nextId() const; void setField(const QString &name, const QVariant &value); QVariant field(const QString &name) const; void setWizardStyle(QWizard::WizardStyle style); QWizard::WizardStyle wizardStyle() const; void setOption(QWizard::WizardOption option, bool on = true); bool testOption(QWizard::WizardOption option) const; void setOptions(QFlags options); QFlags options() const; void setButtonText(QWizard::WizardButton which, const QString &text); QString buttonText(QWizard::WizardButton which) const; void setButtonLayout(const QList &layout); void setButton(QWizard::WizardButton which, QAbstractButton *button /Transfer/); QAbstractButton *button(QWizard::WizardButton which) const /Transfer/; void setTitleFormat(Qt::TextFormat format); Qt::TextFormat titleFormat() const; void setSubTitleFormat(Qt::TextFormat format); Qt::TextFormat subTitleFormat() const; void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(QWizard::WizardPixmap which) const; void setDefaultProperty(const char *className, const char *property, const char *changedSignal); virtual void setVisible(bool visible); virtual QSize sizeHint() const; signals: void currentIdChanged(int id); void helpRequested(); void customButtonClicked(int which); public slots: void back(); void next(); void restart(); protected: virtual bool event(QEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void done(int result); virtual void initializePage(int id); virtual void cleanupPage(int id); public: void removePage(int id); QList pageIds() const; void setSideWidget(QWidget *widget /Transfer/); QWidget *sideWidget() const; signals: void pageAdded(int id); void pageRemoved(int id); private: QWizard(const QWizard &); }; QFlags operator|(QWizard::WizardOption f1, QFlags f2); class QWizardPage : QWidget { %TypeHeaderCode #include %End public: explicit QWizardPage(QWidget *parent /TransferThis/ = 0); virtual ~QWizardPage(); void setTitle(const QString &title); QString title() const; void setSubTitle(const QString &subTitle); QString subTitle() const; void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(QWizard::WizardPixmap which) const; void setFinalPage(bool finalPage); bool isFinalPage() const; void setCommitPage(bool commitPage); bool isCommitPage() const; void setButtonText(QWizard::WizardButton which, const QString &text); QString buttonText(QWizard::WizardButton which) const; virtual void initializePage(); virtual void cleanupPage(); virtual bool validatePage(); virtual bool isComplete() const; virtual int nextId() const; signals: void completeChanged(); protected: void setField(const QString &name, const QVariant &value); QVariant field(const QString &name) const; public: void registerField(const QString &name, QWidget *widget, const char *property = 0, SIP_PYOBJECT changedSignal /DocType="signal"/ = 0); %MethodCode QObject *receiver; QByteArray signal_signature; const char *signal; if (a3 && a3 != Py_None) { if ((sipError = pyqt5_qtwidgets_get_pyqtsignal_parts(a3, &receiver, signal_signature)) == sipErrorNone) { if (receiver != a1) { PyErr_SetString(PyExc_ValueError, "the signal must be bound to the same QWidget instance"); sipError = sipErrorFail; } else { signal = signal_signature.constData(); } } else { // We don't set sipError to sipErrorContinue because we don't want to // go on to the next (ie. the real) registerField() overload. That is // there only so that SIP generates the required public wrapper method // that we need to call below. We don't want the user to call it. sipBadCallableArg(3, a3); sipError = sipErrorFail; } } else { signal = 0; } if (sipError == sipErrorNone) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->registerField(*a0, a1, a2, signal); #else // We should really change SIP to implement /NoDerived/ for protected // methods rather than do this (possibly unsafe) cast. static_cast(sipCpp)->sipProtect_registerField(*a0, a1, a2, signal); #endif Py_END_ALLOW_THREADS } %End protected: void registerField(const QString &name, QWidget *widget, const char *property = 0, const char *changedSignal = 0); QWizard *wizard() const; private: QWizardPage(const QWizardPage &); }; PyQt-gpl-5.5.1/sip/QtWinExtras/0000755000076500000240000000000012613140040016271 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtWinExtras/QtWinExtrasmod.sip0000644000076500000240000000411312613140040021736 0ustar philstaff00000000000000// This is the SIP interface definition for the QtWinExtras module of PyQt v5. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWinExtras, keyword_arguments="Optional") %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwinfunctions.sip %Include qwinjumplist.sip %Include qwinjumplistcategory.sip %Include qwinjumplistitem.sip %Include qwintaskbarbutton.sip %Include qwintaskbarprogress.sip %Include qwinthumbnailtoolbar.sip %Include qwinthumbnailtoolbutton.sip PyQt-gpl-5.5.1/sip/QtWinExtras/qwinfunctions.sip0000644000076500000240000001031612613140040021716 0ustar philstaff00000000000000// This is the SIP interface definition for QtWin. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) typedef struct HBITMAP__ *HBITMAP; typedef struct HDC__ *HDC; typedef struct HICON__ *HICON; typedef long HRESULT; typedef struct HRGN__ *HRGN; namespace QtWin { %TypeHeaderCode #include %End enum HBitmapFormat { HBitmapNoAlpha, HBitmapPremultipliedAlpha, HBitmapAlpha }; enum WindowFlip3DPolicy { FlipDefault, FlipExcludeBelow, FlipExcludeAbove }; HBITMAP createMask(const QBitmap &bitmap); HBITMAP toHBITMAP(const QPixmap &p, QtWin::HBitmapFormat format = QtWin::HBitmapNoAlpha); QPixmap fromHBITMAP(HBITMAP bitmap, QtWin::HBitmapFormat format = QtWin::HBitmapNoAlpha); HICON toHICON(const QPixmap &p); QImage imageFromHBITMAP(HDC hdc, HBITMAP bitmap, int width, int height); QPixmap fromHICON(HICON icon); HRGN toHRGN(const QRegion ®ion); QRegion fromHRGN(HRGN hrgn); QString stringFromHresult(HRESULT hresult); QString errorStringFromHresult(HRESULT hresult); QColor colorizationColor(bool *opaqueBlend = 0); QColor realColorizationColor(); void setWindowExcludedFromPeek(QWindow *window, bool exclude); bool isWindowExcludedFromPeek(QWindow *window); void setWindowDisallowPeek(QWindow *window, bool disallow); bool isWindowPeekDisallowed(QWindow *window); void setWindowFlip3DPolicy(QWindow *window, QtWin::WindowFlip3DPolicy policy); QtWin::WindowFlip3DPolicy windowFlip3DPolicy(QWindow *); void extendFrameIntoClientArea(QWindow *window, int left, int top, int right, int bottom); void extendFrameIntoClientArea(QWindow *window, const QMargins &margins); void resetExtendedFrame(QWindow *window); void enableBlurBehindWindow(QWindow *window, const QRegion ®ion); void enableBlurBehindWindow(QWindow *window); void disableBlurBehindWindow(QWindow *window); bool isCompositionEnabled(); void setCompositionEnabled(bool enabled); bool isCompositionOpaque(); void setCurrentProcessExplicitAppUserModelID(const QString &id); void markFullscreenWindow(QWindow *, bool fullscreen = true); void taskbarActivateTab(QWindow *); void taskbarActivateTabAlt(QWindow *); void taskbarAddTab(QWindow *); void taskbarDeleteTab(QWindow *); void setWindowExcludedFromPeek(QWidget *window, bool exclude); bool isWindowExcludedFromPeek(QWidget *window); void setWindowDisallowPeek(QWidget *window, bool disallow); bool isWindowPeekDisallowed(QWidget *window); void setWindowFlip3DPolicy(QWidget *window, QtWin::WindowFlip3DPolicy policy); QtWin::WindowFlip3DPolicy windowFlip3DPolicy(QWidget *window); void extendFrameIntoClientArea(QWidget *window, const QMargins &margins); void extendFrameIntoClientArea(QWidget *window, int left, int top, int right, int bottom); void resetExtendedFrame(QWidget *window); void enableBlurBehindWindow(QWidget *window, const QRegion ®ion); void enableBlurBehindWindow(QWidget *window); void disableBlurBehindWindow(QWidget *window); void markFullscreenWindow(QWidget *window, bool fullscreen = true); void taskbarActivateTab(QWidget *window); void taskbarActivateTabAlt(QWidget *window); void taskbarAddTab(QWidget *window); void taskbarDeleteTab(QWidget *window); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwinjumplist.sip0000644000076500000240000000455012613140040021560 0ustar philstaff00000000000000// This is the SIP interface definition for QWinJumpList. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinJumpList : public QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWinThumbnailToolBar, &sipType_QWinThumbnailToolBar, -1, 1}, {sipName_QWinJumpList, &sipType_QWinJumpList, -1, 2}, {sipName_QWinTaskbarButton, &sipType_QWinTaskbarButton, -1, 3}, {sipName_QWinThumbnailToolButton, &sipType_QWinThumbnailToolButton, -1, 4}, {sipName_QWinTaskbarProgress, &sipType_QWinTaskbarProgress, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWinJumpList(QObject *parent /TransferThis/ = 0); ~QWinJumpList(); QString identifier() const; void setIdentifier(const QString &identifier); QWinJumpListCategory *recent() const; QWinJumpListCategory *frequent() const; QWinJumpListCategory *tasks() const; QList categories() const; void addCategory(QWinJumpListCategory *category /Transfer/); QWinJumpListCategory *addCategory(const QString &title, const QList items /Transfer/ = QList()); public slots: void clear(); private: QWinJumpList(const QWinJumpList &); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwinjumplistcategory.sip0000644000076500000240000000402212613140040023310 0ustar philstaff00000000000000// This is the SIP interface definition for QWinJumpListCategory. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinJumpListCategory /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Type { Custom, Recent, Frequent, Tasks }; explicit QWinJumpListCategory(const QString &title = QString()); ~QWinJumpListCategory(); Type type() const; bool isVisible() const; void setVisible(bool visible); QString title() const; void setTitle(const QString &title); int count() const; bool isEmpty() const; QList items() const; void addItem(QWinJumpListItem *item /Transfer/); QWinJumpListItem *addDestination(const QString &filePath); QWinJumpListItem *addLink(const QString &title, const QString &executablePath, const QStringList &arguments = QStringList()); QWinJumpListItem *addLink(const QIcon &icon, const QString &title, const QString &executablePath, const QStringList &arguments = QStringList()); QWinJumpListItem *addSeparator(); void clear(); private: QWinJumpListCategory(const QWinJumpListCategory &); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwinjumplistitem.sip0000644000076500000240000000337112613140040022437 0ustar philstaff00000000000000// This is the SIP interface definition for QWinJumpListItem. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinJumpListItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Type { Destination, Link, Separator }; explicit QWinJumpListItem(Type type); ~QWinJumpListItem(); void setType(Type type); Type type() const; void setFilePath(const QString &filePath); QString filePath() const; void setWorkingDirectory(const QString &workingDirectory); QString workingDirectory() const; void setIcon(const QIcon &icon); QIcon icon() const; void setTitle(const QString &title); QString title() const; void setDescription(const QString &description); QString description() const; void setArguments(const QStringList &arguments); QStringList arguments() const; private: QWinJumpListItem(const QWinJumpListItem &); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwintaskbarbutton.sip0000644000076500000240000000306712613140040022576 0ustar philstaff00000000000000// This is the SIP interface definition for QWinTaskbarButton. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinTaskbarButton : public QObject { %TypeHeaderCode #include %End public: explicit QWinTaskbarButton(QObject *parent /TransferThis/ = 0); ~QWinTaskbarButton(); void setWindow(QWindow *window); QWindow *window() const; QIcon overlayIcon() const; QString overlayAccessibleDescription() const; QWinTaskbarProgress *progress() const; bool eventFilter(QObject *, QEvent *); public slots: void setOverlayIcon(const QIcon &icon); void setOverlayAccessibleDescription(const QString &description); void clearOverlayIcon(); private: QWinTaskbarButton(const QWinTaskbarButton &); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwintaskbarprogress.sip0000644000076500000240000000350312613140040023122 0ustar philstaff00000000000000// This is the SIP interface definition for QWinTaskbarProgress. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinTaskbarProgress : public QObject { %TypeHeaderCode #include %End public: explicit QWinTaskbarProgress(QObject *parent /TransferThis/= 0); ~QWinTaskbarProgress(); int value() const; int minimum() const; int maximum() const; bool isVisible() const; bool isPaused() const; bool isStopped() const; public slots: void setValue(int value); void setMinimum(int minimum); void setMaximum(int maximum); void setRange(int minimum, int maximum); void reset(); void show(); void hide(); void setVisible(bool visible); void pause(); void resume(); void setPaused(bool paused); void stop(); signals: void valueChanged(int value); void minimumChanged(int minimum); void maximumChanged(int maximum); void visibilityChanged(bool visible); private: QWinTaskbarProgress(const QWinTaskbarProgress &); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwinthumbnailtoolbar.sip0000644000076500000240000000377412613140040023266 0ustar philstaff00000000000000// This is the SIP interface definition for QWinThumbnailToolBar. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinThumbnailToolBar : public QObject { %TypeHeaderCode #include %End public: explicit QWinThumbnailToolBar(QObject *parent /TransferThis/ = 0); ~QWinThumbnailToolBar(); void setWindow(QWindow *window); QWindow *window() const; void addButton(QWinThumbnailToolButton *button); void removeButton(QWinThumbnailToolButton *button); void setButtons(const QList &buttons); QList buttons() const; int count() const; %If (Qt_5_4_0 -) bool iconicPixmapNotificationsEnabled() const; void setIconicPixmapNotificationsEnabled(bool enabled); QPixmap iconicThumbnailPixmap() const; QPixmap iconicLivePreviewPixmap() const; %End public slots: void clear(); %If (Qt_5_4_0 -) void setIconicThumbnailPixmap(const QPixmap &); void setIconicLivePreviewPixmap(const QPixmap &); %End signals: %If (Qt_5_4_0 -) void iconicThumbnailPixmapRequested(); void iconicLivePreviewPixmapRequested(); %End private: QWinThumbnailToolBar(const QWinThumbnailToolBar &); }; %End PyQt-gpl-5.5.1/sip/QtWinExtras/qwinthumbnailtoolbutton.sip0000644000076500000240000000334612613140040024030 0ustar philstaff00000000000000// This is the SIP interface definition for QWinThumbnailToolButton. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinThumbnailToolButton : public QObject { %TypeHeaderCode #include %End public: explicit QWinThumbnailToolButton(QObject *parent /TransferThis/ = 0); ~QWinThumbnailToolButton(); void setToolTip(const QString &toolTip); QString toolTip() const; void setIcon(const QIcon &icon); QIcon icon() const; void setEnabled(bool enabled); bool isEnabled() const; void setInteractive(bool interactive); bool isInteractive() const; void setVisible(bool visible); bool isVisible() const; void setDismissOnClick(bool dismiss); bool dismissOnClick() const; void setFlat(bool flat); bool isFlat() const; public slots: void click(); signals: void clicked(); private: QWinThumbnailToolButton(const QWinThumbnailToolButton &); }; %End PyQt-gpl-5.5.1/sip/QtX11Extras/0000755000076500000240000000000012613140040016105 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtX11Extras/QtX11Extrasmod.sip0000644000076500000240000000354312613140040021374 0ustar philstaff00000000000000// This is the SIP interface definition for the QtX11Extras module of PyQt v5. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtX11Extras, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qx11info_x11.sip PyQt-gpl-5.5.1/sip/QtX11Extras/qx11info_x11.sip0000644000076500000240000000327712613140040020772 0ustar philstaff00000000000000// This is the SIP interface definition for QX11Info. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class Display; class xcb_connection_t; class QX11Info { %TypeHeaderCode #include %End public: %If (Qt_5_2_0 -) static bool isPlatformX11(); %End static int appDpiX(int screen = -1); static int appDpiY(int screen = -1); static unsigned long appRootWindow(int screen = -1); static int appScreen(); static unsigned long appTime(); static unsigned long appUserTime(); static void setAppTime(unsigned long time); static void setAppUserTime(unsigned long time); %If (Qt_5_2_0 -) static unsigned long getTimestamp(); %End %If (Qt_5_4_0 -) static QByteArray nextStartupId(); static void setNextStartupId(const QByteArray &id); %End static Display *display(); static xcb_connection_t *connection(); private: QX11Info(); }; %End PyQt-gpl-5.5.1/sip/QtXml/0000755000076500000240000000000012613140040015105 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtXml/qdom.sip0000644000076500000240000003405312613140040016567 0ustar philstaff00000000000000// qdom.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDomImplementation { %TypeHeaderCode #include %End public: QDomImplementation(); QDomImplementation(const QDomImplementation &); ~QDomImplementation(); bool operator==(const QDomImplementation &) const; bool operator!=(const QDomImplementation &) const; bool hasFeature(const QString &feature, const QString &version) const; QDomDocumentType createDocumentType(const QString &qName, const QString &publicId, const QString &systemId); QDomDocument createDocument(const QString &nsURI, const QString &qName, const QDomDocumentType &doctype); enum InvalidDataPolicy { AcceptInvalidChars, DropInvalidChars, ReturnNullNode, }; static QDomImplementation::InvalidDataPolicy invalidDataPolicy(); static void setInvalidDataPolicy(QDomImplementation::InvalidDataPolicy policy); bool isNull(); }; class QDomNode { %TypeHeaderCode #include %End public: enum NodeType { ElementNode, AttributeNode, TextNode, CDATASectionNode, EntityReferenceNode, EntityNode, ProcessingInstructionNode, CommentNode, DocumentNode, DocumentTypeNode, DocumentFragmentNode, NotationNode, BaseNode, CharacterDataNode, }; enum EncodingPolicy { EncodingFromDocument, EncodingFromTextStream, }; QDomNode(); QDomNode(const QDomNode &); ~QDomNode(); bool operator==(const QDomNode &) const; bool operator!=(const QDomNode &) const; QDomNode insertBefore(const QDomNode &newChild, const QDomNode &refChild); QDomNode insertAfter(const QDomNode &newChild, const QDomNode &refChild); QDomNode replaceChild(const QDomNode &newChild, const QDomNode &oldChild); QDomNode removeChild(const QDomNode &oldChild); QDomNode appendChild(const QDomNode &newChild); bool hasChildNodes() const; QDomNode cloneNode(bool deep = true) const; void normalize(); bool isSupported(const QString &feature, const QString &version) const; QString nodeName() const; QDomNode::NodeType nodeType() const; QDomNode parentNode() const; QDomNodeList childNodes() const; QDomNode firstChild() const; QDomNode lastChild() const; QDomNode previousSibling() const; QDomNode nextSibling() const; QDomNamedNodeMap attributes() const; QDomDocument ownerDocument() const; QString namespaceURI() const; QString localName() const; bool hasAttributes() const; QString nodeValue() const; void setNodeValue(const QString &); QString prefix() const; void setPrefix(const QString &pre); bool isAttr() const; bool isCDATASection() const; bool isDocumentFragment() const; bool isDocument() const; bool isDocumentType() const; bool isElement() const; bool isEntityReference() const; bool isText() const; bool isEntity() const; bool isNotation() const; bool isProcessingInstruction() const; bool isCharacterData() const; bool isComment() const; QDomNode namedItem(const QString &name) const; bool isNull() const; void clear(); QDomAttr toAttr() const; QDomCDATASection toCDATASection() const; QDomDocumentFragment toDocumentFragment() const; QDomDocument toDocument() const; QDomDocumentType toDocumentType() const; QDomElement toElement() const; QDomEntityReference toEntityReference() const; QDomText toText() const; QDomEntity toEntity() const; QDomNotation toNotation() const; QDomProcessingInstruction toProcessingInstruction() const; QDomCharacterData toCharacterData() const; QDomComment toComment() const; void save(QTextStream &, int, QDomNode::EncodingPolicy = QDomNode::EncodingFromDocument) const /ReleaseGIL/; QDomElement firstChildElement(const QString &tagName /DocValue="Py_v3:''"/ = QString()) const; QDomElement lastChildElement(const QString &tagName /DocValue="Py_v3:''"/ = QString()) const; QDomElement previousSiblingElement(const QString &tagName /DocValue="Py_v3:''"/ = QString()) const; QDomElement nextSiblingElement(const QString &taName /DocValue="Py_v3:''"/ = QString()) const; int lineNumber() const; int columnNumber() const; }; class QDomNodeList { %TypeHeaderCode #include %End public: QDomNodeList(); QDomNodeList(const QDomNodeList &); ~QDomNodeList(); bool operator==(const QDomNodeList &) const; bool operator!=(const QDomNodeList &) const; QDomNode item(int index) const; QDomNode at(int index) const; int length() const; int count() const /__len__/; int size() const; bool isEmpty() const; }; class QDomDocumentType : QDomNode { %TypeHeaderCode #include %End public: QDomDocumentType(); QDomDocumentType(const QDomDocumentType &x); QString name() const; QDomNamedNodeMap entities() const; QDomNamedNodeMap notations() const; QString publicId() const; QString systemId() const; QString internalSubset() const; QDomNode::NodeType nodeType() const; }; class QDomDocument : QDomNode { %TypeHeaderCode #include %End public: QDomDocument(); explicit QDomDocument(const QString &name); explicit QDomDocument(const QDomDocumentType &doctype); QDomDocument(const QDomDocument &x); ~QDomDocument(); QDomElement createElement(const QString &tagName); QDomDocumentFragment createDocumentFragment(); QDomText createTextNode(const QString &data); QDomComment createComment(const QString &data); QDomCDATASection createCDATASection(const QString &data); QDomProcessingInstruction createProcessingInstruction(const QString &target, const QString &data); QDomAttr createAttribute(const QString &name); QDomEntityReference createEntityReference(const QString &name); QDomNodeList elementsByTagName(const QString &tagname) const; QDomNode importNode(const QDomNode &importedNode, bool deep); QDomElement createElementNS(const QString &nsURI, const QString &qName); QDomAttr createAttributeNS(const QString &nsURI, const QString &qName); QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName); QDomElement elementById(const QString &elementId); QDomDocumentType doctype() const; QDomImplementation implementation() const; QDomElement documentElement() const; QDomNode::NodeType nodeType() const; bool setContent(const QByteArray &text, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(const QString &text, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(QIODevice *dev, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; bool setContent(const QByteArray &text, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(const QString &text, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(QIODevice *dev, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; QString toString(int indent = 1) const; QByteArray toByteArray(int indent = 1) const; }; class QDomNamedNodeMap { %TypeHeaderCode #include %End public: QDomNamedNodeMap(); QDomNamedNodeMap(const QDomNamedNodeMap &); ~QDomNamedNodeMap(); bool operator==(const QDomNamedNodeMap &) const; bool operator!=(const QDomNamedNodeMap &) const; QDomNode namedItem(const QString &name) const; QDomNode setNamedItem(const QDomNode &newNode); QDomNode removeNamedItem(const QString &name); QDomNode item(int index) const; QDomNode namedItemNS(const QString &nsURI, const QString &localName) const; QDomNode setNamedItemNS(const QDomNode &newNode); QDomNode removeNamedItemNS(const QString &nsURI, const QString &localName); int length() const; int count() const /__len__/; int size() const; bool isEmpty() const; bool contains(const QString &name) const; }; class QDomDocumentFragment : QDomNode { %TypeHeaderCode #include %End public: QDomDocumentFragment(); QDomDocumentFragment(const QDomDocumentFragment &x); QDomNode::NodeType nodeType() const; }; class QDomCharacterData : QDomNode { %TypeHeaderCode #include %End public: QDomCharacterData(); QDomCharacterData(const QDomCharacterData &x); QString substringData(unsigned long offset, unsigned long count); void appendData(const QString &arg); void insertData(unsigned long offset, const QString &arg); void deleteData(unsigned long offset, unsigned long count); void replaceData(unsigned long offset, unsigned long count, const QString &arg); int length() const; QString data() const; void setData(const QString &); QDomNode::NodeType nodeType() const; }; class QDomAttr : QDomNode { %TypeHeaderCode #include %End public: QDomAttr(); QDomAttr(const QDomAttr &x); QString name() const; bool specified() const; QDomElement ownerElement() const; QString value() const; void setValue(const QString &); QDomNode::NodeType nodeType() const; }; class QDomElement : QDomNode { %TypeHeaderCode #include %End public: QDomElement(); QDomElement(const QDomElement &x); QString attribute(const QString &name, const QString &defaultValue /DocValue="Py_v3:''"/ = QString()) const; void setAttribute(const QString &name, const QString &value); void setAttribute(const QString &name, qlonglong value); void setAttribute(const QString &name, qulonglong value); void setAttribute(const QString &name, double value /Constrained/); void setAttribute(const QString &name, int value); void removeAttribute(const QString &name); QDomAttr attributeNode(const QString &name); QDomAttr setAttributeNode(const QDomAttr &newAttr); QDomAttr removeAttributeNode(const QDomAttr &oldAttr); QDomNodeList elementsByTagName(const QString &tagname) const; bool hasAttribute(const QString &name) const; QString attributeNS(const QString nsURI, const QString &localName, const QString &defaultValue /DocValue="Py_v3:''"/ = QString()) const; void setAttributeNS(const QString nsURI, const QString &qName, const QString &value); void setAttributeNS(const QString nsURI, const QString &qName, qlonglong value); void setAttributeNS(const QString nsURI, const QString &qName, qulonglong value); void setAttributeNS(const QString nsURI, const QString &qName, double value /Constrained/); void setAttributeNS(const QString nsURI, const QString &qName, int value); void removeAttributeNS(const QString &nsURI, const QString &localName); QDomAttr attributeNodeNS(const QString &nsURI, const QString &localName); QDomAttr setAttributeNodeNS(const QDomAttr &newAttr); QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName) const; bool hasAttributeNS(const QString &nsURI, const QString &localName) const; QString tagName() const; void setTagName(const QString &name); QDomNamedNodeMap attributes() const; QDomNode::NodeType nodeType() const; QString text() const; }; class QDomText : QDomCharacterData { %TypeHeaderCode #include %End public: QDomText(); QDomText(const QDomText &x); QDomText splitText(int offset); QDomNode::NodeType nodeType() const; }; class QDomComment : QDomCharacterData { %TypeHeaderCode #include %End public: QDomComment(); QDomComment(const QDomComment &x); QDomNode::NodeType nodeType() const; }; class QDomCDATASection : QDomText { %TypeHeaderCode #include %End public: QDomCDATASection(); QDomCDATASection(const QDomCDATASection &x); QDomNode::NodeType nodeType() const; }; class QDomNotation : QDomNode { %TypeHeaderCode #include %End public: QDomNotation(); QDomNotation(const QDomNotation &x); QString publicId() const; QString systemId() const; QDomNode::NodeType nodeType() const; }; class QDomEntity : QDomNode { %TypeHeaderCode #include %End public: QDomEntity(); QDomEntity(const QDomEntity &x); QString publicId() const; QString systemId() const; QString notationName() const; QDomNode::NodeType nodeType() const; }; class QDomEntityReference : QDomNode { %TypeHeaderCode #include %End public: QDomEntityReference(); QDomEntityReference(const QDomEntityReference &x); QDomNode::NodeType nodeType() const; }; class QDomProcessingInstruction : QDomNode { %TypeHeaderCode #include %End public: QDomProcessingInstruction(); QDomProcessingInstruction(const QDomProcessingInstruction &x); QString target() const; QString data() const; void setData(const QString &d); QDomNode::NodeType nodeType() const; }; QTextStream &operator<<(QTextStream &, const QDomNode & /Constrained/); PyQt-gpl-5.5.1/sip/QtXml/QtXmlmod.sip0000644000076500000240000000357312613140040017377 0ustar philstaff00000000000000// QtXmlmod.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtXml, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qxml.sip %Include qdom.sip PyQt-gpl-5.5.1/sip/QtXml/qxml.sip0000644000076500000240000002742512613140040016615 0ustar philstaff00000000000000// qxml.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlNamespaceSupport { %TypeHeaderCode #include %End public: QXmlNamespaceSupport(); ~QXmlNamespaceSupport(); void setPrefix(const QString &, const QString &); QString prefix(const QString &) const; QString uri(const QString &) const; void splitName(const QString &, QString &, QString &) const; void processName(const QString &, bool, QString &, QString &) const; QStringList prefixes() const; QStringList prefixes(const QString &) const; void pushContext(); void popContext(); void reset(); private: QXmlNamespaceSupport(const QXmlNamespaceSupport &); }; class QXmlAttributes { %TypeHeaderCode #include %End public: QXmlAttributes(); virtual ~QXmlAttributes(); int index(const QString &qName) const; int index(const QString &uri, const QString &localPart) const; int length() const; QString localName(int index) const; QString qName(int index) const; QString uri(int index) const; QString type(int index) const; QString type(const QString &qName) const; QString type(const QString &uri, const QString &localName) const; QString value(int index) const; QString value(const QString &qName) const; QString value(const QString &uri, const QString &localName) const; void clear(); void append(const QString &qName, const QString &uri, const QString &localPart, const QString &value); int count() const /__len__/; }; class QXmlInputSource { %TypeHeaderCode #include %End public: QXmlInputSource(); explicit QXmlInputSource(QIODevice *dev); virtual ~QXmlInputSource(); virtual void setData(const QString &dat); virtual void setData(const QByteArray &dat); virtual void fetchData(); virtual QString data() const; virtual QChar next(); virtual void reset(); static const ushort EndOfData; static const ushort EndOfDocument; protected: virtual QString fromRawData(const QByteArray &data, bool beginning = false); }; class QXmlParseException { %TypeHeaderCode #include %End public: QXmlParseException(const QString &name /DocValue="Py_v3:''"/ = QString(), int column = -1, int line = -1, const QString &publicId /DocValue="Py_v3:''"/ = QString(), const QString &systemId /DocValue="Py_v3:''"/ = QString()); QXmlParseException(const QXmlParseException &other); ~QXmlParseException(); int columnNumber() const; int lineNumber() const; QString publicId() const; QString systemId() const; QString message() const; private: QXmlParseException &operator=(const QXmlParseException &); }; class QXmlReader { %TypeHeaderCode #include %End public: virtual ~QXmlReader(); virtual bool feature(const QString &name, bool *ok = 0) const = 0; virtual void setFeature(const QString &name, bool value) = 0; virtual bool hasFeature(const QString &name) const = 0; virtual void *property(const QString &name, bool *ok = 0) const = 0; virtual void setProperty(const QString &name, void *value) = 0; virtual bool hasProperty(const QString &name) const = 0; virtual void setEntityResolver(QXmlEntityResolver *handler /KeepReference/) = 0; virtual QXmlEntityResolver *entityResolver() const = 0; virtual void setDTDHandler(QXmlDTDHandler *handler /KeepReference/) = 0; virtual QXmlDTDHandler *DTDHandler() const = 0; virtual void setContentHandler(QXmlContentHandler *handler /KeepReference/) = 0; virtual QXmlContentHandler *contentHandler() const = 0; virtual void setErrorHandler(QXmlErrorHandler *handler /KeepReference/) = 0; virtual QXmlErrorHandler *errorHandler() const = 0; virtual void setLexicalHandler(QXmlLexicalHandler *handler /KeepReference/) = 0; virtual QXmlLexicalHandler *lexicalHandler() const = 0; virtual void setDeclHandler(QXmlDeclHandler *handler /KeepReference/) = 0; virtual QXmlDeclHandler *declHandler() const = 0; virtual bool parse(const QXmlInputSource &input) = 0; virtual bool parse(const QXmlInputSource *input) = 0; }; class QXmlSimpleReader : QXmlReader { %TypeHeaderCode #include %End public: QXmlSimpleReader(); virtual ~QXmlSimpleReader(); virtual bool feature(const QString &name, bool *ok = 0) const; virtual void setFeature(const QString &name, bool value); virtual bool hasFeature(const QString &name) const; virtual void *property(const QString &name, bool *ok = 0) const; virtual void setProperty(const QString &name, void *value); virtual bool hasProperty(const QString &name) const; virtual void setEntityResolver(QXmlEntityResolver *handler /KeepReference/); virtual QXmlEntityResolver *entityResolver() const; virtual void setDTDHandler(QXmlDTDHandler *handler); virtual QXmlDTDHandler *DTDHandler() const; virtual void setContentHandler(QXmlContentHandler *handler /KeepReference/); virtual QXmlContentHandler *contentHandler() const; virtual void setErrorHandler(QXmlErrorHandler *handler /KeepReference/); virtual QXmlErrorHandler *errorHandler() const; virtual void setLexicalHandler(QXmlLexicalHandler *handler /KeepReference/); virtual QXmlLexicalHandler *lexicalHandler() const; virtual void setDeclHandler(QXmlDeclHandler *handler /KeepReference/); virtual QXmlDeclHandler *declHandler() const; virtual bool parse(const QXmlInputSource *input); virtual bool parse(const QXmlInputSource *input, bool incremental); virtual bool parseContinue(); private: QXmlSimpleReader(const QXmlSimpleReader &); }; class QXmlLocator { %TypeHeaderCode #include %End public: QXmlLocator(); virtual ~QXmlLocator(); virtual int columnNumber() const = 0; virtual int lineNumber() const = 0; }; class QXmlContentHandler { %TypeHeaderCode #include %End public: virtual ~QXmlContentHandler(); virtual void setDocumentLocator(QXmlLocator *locator /KeepReference/) = 0; virtual bool startDocument() = 0; virtual bool endDocument() = 0; virtual bool startPrefixMapping(const QString &prefix, const QString &uri) = 0; virtual bool endPrefixMapping(const QString &prefix) = 0; virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) = 0; virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName) = 0; virtual bool characters(const QString &ch) = 0; virtual bool ignorableWhitespace(const QString &ch) = 0; virtual bool processingInstruction(const QString &target, const QString &data) = 0; virtual bool skippedEntity(const QString &name) = 0; virtual QString errorString() const = 0; }; class QXmlErrorHandler { %TypeHeaderCode #include %End public: virtual ~QXmlErrorHandler(); virtual bool warning(const QXmlParseException &exception) = 0; virtual bool error(const QXmlParseException &exception) = 0; virtual bool fatalError(const QXmlParseException &exception) = 0; virtual QString errorString() const = 0; }; class QXmlDTDHandler { %TypeHeaderCode #include %End public: virtual ~QXmlDTDHandler(); virtual bool notationDecl(const QString &name, const QString &publicId, const QString &systemId) = 0; virtual bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString ¬ationName) = 0; virtual QString errorString() const = 0; }; class QXmlEntityResolver { %TypeHeaderCode #include %End public: virtual ~QXmlEntityResolver(); virtual bool resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret) = 0; virtual QString errorString() const = 0; }; class QXmlLexicalHandler { %TypeHeaderCode #include %End public: virtual ~QXmlLexicalHandler(); virtual bool startDTD(const QString &name, const QString &publicId, const QString &systemId) = 0; virtual bool endDTD() = 0; virtual bool startEntity(const QString &name) = 0; virtual bool endEntity(const QString &name) = 0; virtual bool startCDATA() = 0; virtual bool endCDATA() = 0; virtual bool comment(const QString &ch) = 0; virtual QString errorString() const = 0; }; class QXmlDeclHandler { %TypeHeaderCode #include %End public: virtual ~QXmlDeclHandler(); virtual bool attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value) = 0; virtual bool internalEntityDecl(const QString &name, const QString &value) = 0; virtual bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) = 0; virtual QString errorString() const = 0; }; class QXmlDefaultHandler : QXmlContentHandler, QXmlErrorHandler, QXmlDTDHandler, QXmlEntityResolver, QXmlLexicalHandler, QXmlDeclHandler { %TypeHeaderCode #include %End public: QXmlDefaultHandler(); virtual ~QXmlDefaultHandler(); virtual void setDocumentLocator(QXmlLocator *locator /KeepReference/); virtual bool startDocument(); virtual bool endDocument(); virtual bool startPrefixMapping(const QString &prefix, const QString &uri); virtual bool endPrefixMapping(const QString &prefix); virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts); virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName); virtual bool characters(const QString &ch); virtual bool ignorableWhitespace(const QString &ch); virtual bool processingInstruction(const QString &target, const QString &data); virtual bool skippedEntity(const QString &name); virtual bool warning(const QXmlParseException &exception); virtual bool error(const QXmlParseException &exception); virtual bool fatalError(const QXmlParseException &exception); virtual bool notationDecl(const QString &name, const QString &publicId, const QString &systemId); virtual bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString ¬ationName); virtual bool resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret); virtual bool startDTD(const QString &name, const QString &publicId, const QString &systemId); virtual bool endDTD(); virtual bool startEntity(const QString &name); virtual bool endEntity(const QString &name); virtual bool startCDATA(); virtual bool endCDATA(); virtual bool comment(const QString &ch); virtual bool attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value); virtual bool internalEntityDecl(const QString &name, const QString &value); virtual bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId); virtual QString errorString() const; private: QXmlDefaultHandler(const QXmlDefaultHandler &); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/0000755000076500000240000000000012613140040016626 5ustar philstaff00000000000000PyQt-gpl-5.5.1/sip/QtXmlPatterns/qabstractmessagehandler.sip0000644000076500000240000000423312613140040024234 0ustar philstaff00000000000000// qabstractmessagehandler.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractMessageHandler : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractUriResolver, &sipType_QAbstractUriResolver, -1, 1}, {sipName_QAbstractMessageHandler, &sipType_QAbstractMessageHandler, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QAbstractMessageHandler(QObject *parent /TransferThis/ = 0); virtual ~QAbstractMessageHandler(); void message(QtMsgType type, const QString &description, const QUrl &identifier = QUrl(), const QSourceLocation &sourceLocation = QSourceLocation()); protected: virtual void handleMessage(QtMsgType type, const QString &description, const QUrl &identifier, const QSourceLocation &sourceLocation) = 0; private: QAbstractMessageHandler(const QAbstractMessageHandler &); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qabstracturiresolver.sip0000644000076500000240000000244412613140040023635 0ustar philstaff00000000000000// qabstracturiresolver.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractUriResolver : QObject { %TypeHeaderCode #include %End public: QAbstractUriResolver(QObject *parent /TransferThis/ = 0); virtual ~QAbstractUriResolver(); virtual QUrl resolve(const QUrl &relative, const QUrl &baseURI) const = 0; private: QAbstractUriResolver(const QAbstractUriResolver &); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qabstractxmlnodemodel.sip0000644000076500000240000001017612613140040023744 0ustar philstaff00000000000000// qabstractxmlnodemodel.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlNodeModelIndex { %TypeHeaderCode #include %End public: QXmlNodeModelIndex(); QXmlNodeModelIndex(const QXmlNodeModelIndex &other); bool operator==(const QXmlNodeModelIndex &other) const; bool operator!=(const QXmlNodeModelIndex &other) const; enum NodeKind { Attribute, Comment, Document, Element, Namespace, ProcessingInstruction, Text, }; enum DocumentOrder { Precedes, Is, Follows, }; qint64 data() const; SIP_PYOBJECT internalPointer() const; %MethodCode sipRes = reinterpret_cast(sipCpp->internalPointer()); if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End const QAbstractXmlNodeModel *model() const; qint64 additionalData() const; bool isNull() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; class QAbstractXmlNodeModel { %TypeHeaderCode #include %End public: enum SimpleAxis { Parent, FirstChild, PreviousSibling, NextSibling, }; QAbstractXmlNodeModel(); virtual ~QAbstractXmlNodeModel(); virtual QUrl baseUri(const QXmlNodeModelIndex &ni) const = 0; virtual QUrl documentUri(const QXmlNodeModelIndex &ni) const = 0; virtual QXmlNodeModelIndex::NodeKind kind(const QXmlNodeModelIndex &ni) const = 0; virtual QXmlNodeModelIndex::DocumentOrder compareOrder(const QXmlNodeModelIndex &ni1, const QXmlNodeModelIndex &ni2) const = 0; virtual QXmlNodeModelIndex root(const QXmlNodeModelIndex &n) const = 0; virtual QXmlName name(const QXmlNodeModelIndex &ni) const = 0; virtual QString stringValue(const QXmlNodeModelIndex &n) const = 0; virtual QVariant typedValue(const QXmlNodeModelIndex &n) const = 0; virtual QVector namespaceBindings(const QXmlNodeModelIndex &n) const = 0; virtual QXmlNodeModelIndex elementById(const QXmlName &NCName) const = 0; virtual QVector nodesByIdref(const QXmlName &NCName) const = 0; QSourceLocation sourceLocation(const QXmlNodeModelIndex &index) const; protected: virtual QXmlNodeModelIndex nextFromSimpleAxis(QAbstractXmlNodeModel::SimpleAxis axis, const QXmlNodeModelIndex &origin) const = 0; virtual QVector attributes(const QXmlNodeModelIndex &element) const = 0; QXmlNodeModelIndex createIndex(qint64 data) const; QXmlNodeModelIndex createIndex(qint64 data, qint64 additionalData) const; QXmlNodeModelIndex createIndex(SIP_PYOBJECT pointer, qint64 additionalData = 0) const [QXmlNodeModelIndex (void *pointer, qint64 additionalData = 0)]; private: QAbstractXmlNodeModel(const QAbstractXmlNodeModel &); }; class QXmlItem { %TypeHeaderCode #include %End public: QXmlItem(); QXmlItem(const QXmlItem &other); QXmlItem(const QXmlNodeModelIndex &node); QXmlItem(const QVariant &atomicValue); ~QXmlItem(); bool isNull() const; bool isNode() const; bool isAtomicValue() const; QVariant toAtomicValue() const; QXmlNodeModelIndex toNodeModelIndex() const; }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qabstractxmlreceiver.sip0000644000076500000240000000345212613140040023601 0ustar philstaff00000000000000// qabstractxmlreceiver.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractXmlReceiver { %TypeHeaderCode #include %End public: QAbstractXmlReceiver(); virtual ~QAbstractXmlReceiver(); virtual void startElement(const QXmlName &name) = 0; virtual void endElement() = 0; virtual void attribute(const QXmlName &name, const QStringRef &value) = 0; virtual void comment(const QString &value) = 0; virtual void characters(const QStringRef &value) = 0; virtual void startDocument() = 0; virtual void endDocument() = 0; virtual void processingInstruction(const QXmlName &target, const QString &value) = 0; virtual void atomicValue(const QVariant &value) = 0; virtual void namespaceBinding(const QXmlName &name) = 0; virtual void startOfSequence() = 0; virtual void endOfSequence() = 0; private: QAbstractXmlReceiver(const QAbstractXmlReceiver &); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qsimplexmlnodemodel.sip0000644000076500000240000000305512613140040023430 0ustar philstaff00000000000000// qsimplexmlnodemodel.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSimpleXmlNodeModel : QAbstractXmlNodeModel { %TypeHeaderCode #include %End public: QSimpleXmlNodeModel(const QXmlNamePool &namePool); virtual ~QSimpleXmlNodeModel(); virtual QUrl baseUri(const QXmlNodeModelIndex &node) const; QXmlNamePool &namePool() const; virtual QVector namespaceBindings(const QXmlNodeModelIndex &) const; virtual QString stringValue(const QXmlNodeModelIndex &node) const; virtual QXmlNodeModelIndex elementById(const QXmlName &id) const; virtual QVector nodesByIdref(const QXmlName &idref) const; }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qsourcelocation.sip0000644000076500000240000000311412613140040022554 0ustar philstaff00000000000000// qsourcelocation.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSourceLocation { %TypeHeaderCode #include %End public: QSourceLocation(); QSourceLocation(const QSourceLocation &other); QSourceLocation(const QUrl &u, int line = -1, int column = -1); ~QSourceLocation(); bool operator==(const QSourceLocation &other) const; bool operator!=(const QSourceLocation &other) const; qint64 column() const; void setColumn(qint64 newColumn); qint64 line() const; void setLine(qint64 newLine); QUrl uri() const; void setUri(const QUrl &newUri); bool isNull() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/QtXmlPatternsmod.sip0000644000076500000240000000446012613140040022635 0ustar philstaff00000000000000// QtXmlPatternsmod.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtXmlPatterns, keyword_arguments="Optional") %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2015 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractmessagehandler.sip %Include qabstracturiresolver.sip %Include qabstractxmlnodemodel.sip %Include qabstractxmlreceiver.sip %Include qsimplexmlnodemodel.sip %Include qsourcelocation.sip %Include qxmlformatter.sip %Include qxmlname.sip %Include qxmlnamepool.sip %Include qxmlquery.sip %Include qxmlresultitems.sip %Include qxmlschema.sip %Include qxmlschemavalidator.sip %Include qxmlserializer.sip PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlformatter.sip0000644000076500000240000000330712613140040022253 0ustar philstaff00000000000000// qxmlformatter.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlFormatter : QXmlSerializer { %TypeHeaderCode #include %End public: QXmlFormatter(const QXmlQuery &query, QIODevice *outputDevice); virtual void characters(const QStringRef &value); virtual void comment(const QString &value); virtual void startElement(const QXmlName &name); virtual void endElement(); virtual void attribute(const QXmlName &name, const QStringRef &value); virtual void processingInstruction(const QXmlName &name, const QString &value); virtual void atomicValue(const QVariant &value); virtual void startDocument(); virtual void endDocument(); virtual void startOfSequence(); virtual void endOfSequence(); int indentationDepth() const; void setIndentationDepth(int depth); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlname.sip0000644000076500000240000000337112613140040021171 0ustar philstaff00000000000000// qxmlname.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlName { %TypeHeaderCode #include %End public: QXmlName(); QXmlName(QXmlNamePool &namePool, const QString &localName, const QString &namespaceUri /DocValue="''"/ = QString(), const QString &prefix /DocValue="''"/ = QString()); QString namespaceUri(const QXmlNamePool &query) const; QString prefix(const QXmlNamePool &query) const; QString localName(const QXmlNamePool &query) const; QString toClarkName(const QXmlNamePool &query) const; bool operator==(const QXmlName &other) const; bool operator!=(const QXmlName &other) const; bool isNull() const; static bool isNCName(const QString &candidate); static QXmlName fromClarkName(const QString &clarkName, const QXmlNamePool &namePool); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlnamepool.sip0000644000076500000240000000214412613140040022060 0ustar philstaff00000000000000// qxmlnamepool.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlNamePool { %TypeHeaderCode #include %End public: QXmlNamePool(); QXmlNamePool(const QXmlNamePool &other); ~QXmlNamePool(); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlquery.sip0000644000076500000240000000767312613140040021427 0ustar philstaff00000000000000// qxmlquery.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlQuery { %TypeHeaderCode #include %End %TypeCode // Needed by the evaluateToStringList() %MethodCode. #include %End public: enum QueryLanguage { XQuery10, XSLT20, }; QXmlQuery(); QXmlQuery(const QXmlQuery &other); QXmlQuery(const QXmlNamePool &np); QXmlQuery(QXmlQuery::QueryLanguage queryLanguage, const QXmlNamePool &pool = QXmlNamePool()); ~QXmlQuery(); void setMessageHandler(QAbstractMessageHandler *messageHandler /KeepReference/); QAbstractMessageHandler *messageHandler() const; void setQuery(const QString &sourceCode, const QUrl &documentUri = QUrl()); void setQuery(QIODevice *sourceCode, const QUrl &documentUri = QUrl()); void setQuery(const QUrl &queryURI, const QUrl &baseUri = QUrl()); QXmlNamePool namePool() const; void bindVariable(const QXmlName &name, const QXmlItem &value); void bindVariable(const QXmlName &name, QIODevice *); void bindVariable(const QXmlName &name, const QXmlQuery &query); void bindVariable(const QString &localName, const QXmlItem &value); void bindVariable(const QString &localName, QIODevice *); void bindVariable(const QString &localName, const QXmlQuery &query); bool isValid() const; void evaluateTo(QXmlResultItems *result) const; bool evaluateTo(QAbstractXmlReceiver *callback) const; SIP_PYOBJECT evaluateToStringList() const /DocType="list-of-str"/; %MethodCode bool ok; QStringList *result = new QStringList; Py_BEGIN_ALLOW_THREADS ok = sipCpp->evaluateTo(result); Py_END_ALLOW_THREADS if (ok) { sipRes = sipConvertFromNewType(result, sipType_QStringList, NULL); } else { delete result; sipRes = Py_None; Py_INCREF(Py_None); } %End bool evaluateTo(QIODevice *target) const; SIP_PYOBJECT evaluateToString() const /DocType="str"/; %MethodCode bool ok; QString *result = new QString; Py_BEGIN_ALLOW_THREADS ok = sipCpp->evaluateTo(result); Py_END_ALLOW_THREADS if (ok) { sipRes = sipConvertFromNewType(result, sipType_QString, NULL); } else { delete result; sipRes = Py_None; Py_INCREF(Py_None); } %End void setUriResolver(const QAbstractUriResolver *resolver /KeepReference/); const QAbstractUriResolver *uriResolver() const; void setFocus(const QXmlItem &item); bool setFocus(const QUrl &documentURI); bool setFocus(QIODevice *document); bool setFocus(const QString &focus); void setInitialTemplateName(const QXmlName &name); void setInitialTemplateName(const QString &name); QXmlName initialTemplateName() const; void setNetworkAccessManager(QNetworkAccessManager *newManager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; QXmlQuery::QueryLanguage queryLanguage() const; }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlresultitems.sip0000644000076500000240000000232412613140040022626 0ustar philstaff00000000000000// qxmlresultitems.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlResultItems { %TypeHeaderCode #include %End public: QXmlResultItems(); virtual ~QXmlResultItems(); bool hasError() const; QXmlItem next(); QXmlItem current() const; private: QXmlResultItems(const QXmlResultItems &); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlschema.sip0000644000076500000240000000352612613140040021513 0ustar philstaff00000000000000// qxmlschema.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlSchema { %TypeHeaderCode #include %End public: QXmlSchema(); QXmlSchema(const QXmlSchema &other); private: QXmlSchema &operator=(const QXmlSchema &); public: ~QXmlSchema(); bool load(const QUrl &source) /ReleaseGIL/; bool load(QIODevice *source, const QUrl &documentUri = QUrl()) /ReleaseGIL/; bool load(const QByteArray &data, const QUrl &documentUri = QUrl()); bool isValid() const; QXmlNamePool namePool() const; QUrl documentUri() const; void setMessageHandler(QAbstractMessageHandler *handler /KeepReference/); QAbstractMessageHandler *messageHandler() const; void setUriResolver(const QAbstractUriResolver *resolver /KeepReference/); const QAbstractUriResolver *uriResolver() const; void setNetworkAccessManager(QNetworkAccessManager *networkmanager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlschemavalidator.sip0000644000076500000240000000457212613140040023423 0ustar philstaff00000000000000// qxmlschemavalidator.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlSchemaValidator { %TypeHeaderCode #include %End public: QXmlSchemaValidator(); QXmlSchemaValidator(const QXmlSchema &schema); ~QXmlSchemaValidator(); void setSchema(const QXmlSchema &schema); bool validate(const QUrl &source) const /ReleaseGIL/; bool validate(QIODevice *source, const QUrl &documentUri = QUrl()) const /ReleaseGIL/; bool validate(const QByteArray &data, const QUrl &documentUri = QUrl()) const; QXmlNamePool namePool() const; QXmlSchema schema() const; %MethodCode // For reasons we don't quite understand QXmlSchema's copy ctor has to be // private as far as sip is concerned - otherwise we get compiler errors. // However that means that sip generates the wrong code here, because it // doesn't realise it can take a copy of the result. Py_BEGIN_ALLOW_THREADS sipRes = new QXmlSchema(sipCpp->schema()); Py_END_ALLOW_THREADS %End void setMessageHandler(QAbstractMessageHandler *handler /KeepReference/); QAbstractMessageHandler *messageHandler() const; void setUriResolver(const QAbstractUriResolver *resolver /KeepReference/); const QAbstractUriResolver *uriResolver() const; void setNetworkAccessManager(QNetworkAccessManager *networkmanager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; private: QXmlSchemaValidator(const QXmlSchemaValidator &); }; PyQt-gpl-5.5.1/sip/QtXmlPatterns/qxmlserializer.sip0000644000076500000240000000350312613140040022417 0ustar philstaff00000000000000// qxmlserializer.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2015 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlSerializer : QAbstractXmlReceiver { %TypeHeaderCode #include %End public: QXmlSerializer(const QXmlQuery &query, QIODevice *outputDevice); virtual void namespaceBinding(const QXmlName &nb); virtual void characters(const QStringRef &value); virtual void comment(const QString &value); virtual void startElement(const QXmlName &name); virtual void endElement(); virtual void attribute(const QXmlName &name, const QStringRef &value); virtual void processingInstruction(const QXmlName &name, const QString &value); virtual void atomicValue(const QVariant &value); virtual void startDocument(); virtual void endDocument(); virtual void startOfSequence(); virtual void endOfSequence(); QIODevice *outputDevice() const; void setCodec(const QTextCodec *codec /KeepReference/); const QTextCodec *codec() const; }; PyQt-gpl-5.5.1/StrSlash.nsh0000644000076500000240000000142712613140030015525 0ustar philstaff00000000000000!ifndef _StrSlash_nsh !define _StrSlash_nsh ; Push $filenamestring (e.g. 'c:\this\and\that\filename.htm') ; Push "\" ; Call StrSlash ; Pop $R0 ; ;Now $R0 contains 'c:/this/and/that/filename.htm' Function StrSlash Exch $R3 ; $R3 = needle ("\" or "/") Exch Exch $R1 ; $R1 = String to replacement in (haystack) Push $R2 ; Replaced haystack Push $R4 ; $R4 = not $R3 ("/" or "\") Push $R6 Push $R7 ; Scratch reg StrCpy $R2 "" StrLen $R6 $R1 StrCpy $R4 "\" StrCmp $R3 "/" loop StrCpy $R4 "/" loop: StrCpy $R7 $R1 1 StrCpy $R1 $R1 $R6 1 StrCmp $R7 $R3 found StrCpy $R2 "$R2$R7" StrCmp $R1 "" done loop found: StrCpy $R2 "$R2$R4" StrCmp $R1 "" done loop done: StrCpy $R3 $R2 Pop $R7 Pop $R6 Pop $R4 Pop $R2 Pop $R1 Exch $R3 FunctionEnd !endif